<?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>54230</bug_id>
          
          <creation_ts>2011-02-10 11:46:24 -0800</creation_ts>
          <short_desc>[GTK] Implement WebPage class for WebKit2</short_desc>
          <delta_ts>2011-04-06 06:28:26 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>52805</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Alejandro G. Castro">alex</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>andersca</cc>
    
    <cc>buildbot</cc>
    
    <cc>eric</cc>
    
    <cc>sam</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>349237</commentid>
    <comment_count>0</comment_count>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2011-02-10 11:46:24 -0800</bug_when>
    <thetext>Add that class and compile it inside webkit2gtk.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>349249</commentid>
    <comment_count>1</comment_count>
      <attachid>82020</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2011-02-10 11:57:35 -0800</bug_when>
    <thetext>Created attachment 82020
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>349259</commentid>
    <comment_count>2</comment_count>
      <attachid>82020</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-02-10 12:17:59 -0800</bug_when>
    <thetext>Comment on attachment 82020
Proposed patch

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

&gt; Source/WebKit2/WebProcess/WebPage/gtk/WebPageGtk.cpp:83
&gt; +static const KeyDownEntry keyDownEntries[] = {
&gt; +    { VK_LEFT,   0,                  &quot;MoveLeft&quot;                                    },
&gt; +    { VK_LEFT,   ShiftKey,           &quot;MoveLeftAndModifySelection&quot;                  },
&gt; +    { VK_LEFT,   CtrlKey,            &quot;MoveWordLeft&quot;                                },
&gt; +    { VK_LEFT,   CtrlKey | ShiftKey, &quot;MoveWordLeftAndModifySelection&quot;              },
&gt; +    { VK_RIGHT,  0,                  &quot;MoveRight&quot;                                   },
&gt; +    { VK_RIGHT,  ShiftKey,           &quot;MoveRightAndModifySelection&quot;                 },
&gt; +    { VK_RIGHT,  CtrlKey,            &quot;MoveWordRight&quot;                               },
&gt; +    { VK_RIGHT,  CtrlKey | ShiftKey, &quot;MoveWordRightAndModifySelection&quot;             },
&gt; +    { VK_UP,     0,                  &quot;MoveUp&quot;                                      },
&gt; +    { VK_UP,     ShiftKey,           &quot;MoveUpAndModifySelection&quot;                    },
&gt; +    { VK_PRIOR,  ShiftKey,           &quot;MovePageUpAndModifySelection&quot;                },
&gt; +    { VK_DOWN,   0,                  &quot;MoveDown&quot;                                    },

I think I&apos;d rather see this done correctly up front than doing it quickly now and replacing it.  We probably need to plumb through to the UI process to do the mapping between key events and editor actions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>349283</commentid>
    <comment_count>3</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-02-10 12:39:34 -0800</bug_when>
    <thetext>Attachment 82020 did not build on win:
Build output: http://queues.webkit.org/results/7870424</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>349573</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-02-10 19:09:56 -0800</bug_when>
    <thetext>Attachment 82020 did not build on mac:
Build output: http://queues.webkit.org/results/7874518</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>349804</commentid>
    <comment_count>5</comment_count>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2011-02-11 09:20:21 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 82020 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=82020&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/WebPage/gtk/WebPageGtk.cpp:83
&gt; &gt; +static const KeyDownEntry keyDownEntries[] = {
&gt; &gt; +    { VK_LEFT,   0,                  &quot;MoveLeft&quot;                                    },
&gt; &gt; +    { VK_LEFT,   ShiftKey,           &quot;MoveLeftAndModifySelection&quot;                  },
&gt; &gt; +    { VK_LEFT,   CtrlKey,            &quot;MoveWordLeft&quot;                                },
&gt; &gt; +    { VK_LEFT,   CtrlKey | ShiftKey, &quot;MoveWordLeftAndModifySelection&quot;              },
&gt; &gt; +    { VK_RIGHT,  0,                  &quot;MoveRight&quot;                                   },
&gt; &gt; +    { VK_RIGHT,  ShiftKey,           &quot;MoveRightAndModifySelection&quot;                 },
&gt; &gt; +    { VK_RIGHT,  CtrlKey,            &quot;MoveWordRight&quot;                               },
&gt; &gt; +    { VK_RIGHT,  CtrlKey | ShiftKey, &quot;MoveWordRightAndModifySelection&quot;             },
&gt; &gt; +    { VK_UP,     0,                  &quot;MoveUp&quot;                                      },
&gt; &gt; +    { VK_UP,     ShiftKey,           &quot;MoveUpAndModifySelection&quot;                    },
&gt; &gt; +    { VK_PRIOR,  ShiftKey,           &quot;MovePageUpAndModifySelection&quot;                },
&gt; &gt; +    { VK_DOWN,   0,                  &quot;MoveDown&quot;                                    },
&gt; 
&gt; I think I&apos;d rather see this done correctly up front than doing it quickly now and replacing it.  We probably need to plumb through to the UI process to do the mapping between key events and editor actions.

Good point, I think just mac is currently doing it, probably is why they decided to do leave it.

I have to review also compilation and check why we needed includes that other ports do not need.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>363448</commentid>
    <comment_count>6</comment_count>
      <attachid>82020</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-03-07 11:43:22 -0800</bug_when>
    <thetext>Comment on attachment 82020
Proposed patch

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

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:32
&gt; +#include &quot;Cursor.h&quot;

Is this include necessary here?

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:37
&gt; +#include &quot;Font.h&quot;

Why is Font.h necessary here?

&gt; Source/WebKit2/WebProcess/WebPage/gtk/WebPageGtk.cpp:47
&gt; +    notImplemented();

I think you can remove this for now, since we don&apos;t actually have an platform initialization to do at the moment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>363469</commentid>
    <comment_count>7</comment_count>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2011-03-07 12:04:25 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 82020 [details])
&gt;
&gt; [...]
&gt;
&gt; &gt; Source/WebKit2/WebProcess/WebPage/gtk/WebPageGtk.cpp:47
&gt; &gt; +    notImplemented();
&gt; 
&gt; I think you can remove this for now, since we don&apos;t actually have an platform initialization to do at the moment.

Actually I&apos;m testing now the patch using a sendSync to get the commands list from the UI :), I was planning about adding the input method support in the same patch, hopefully tomorrow I can upload it here. So I think we can wait for that patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>363491</commentid>
    <comment_count>8</comment_count>
      <attachid>82020</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-03-07 12:23:27 -0800</bug_when>
    <thetext>Comment on attachment 82020
Proposed patch

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

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:40
&gt; +#include &quot;CachedResourceClient.h&quot;
&gt; +#include &quot;CachedResourceHandle.h&quot;
&gt; +#include &quot;Cursor.h&quot;
&gt;  #include &quot;DataReference.h&quot;
&gt;  #include &quot;DecoderAdapter.h&quot;
&gt;  #include &quot;DrawingArea.h&quot;
&gt; +#include &quot;FocusController.h&quot;
&gt; +#include &quot;Font.h&quot;
&gt;  #include &quot;InjectedBundle.h&quot;
&gt;  #include &quot;InjectedBundleBackForwardList.h&quot;
&gt;  #include &quot;MessageID.h&quot;

In fact, all of these changes seem unecessary. Please remove them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>363496</commentid>
    <comment_count>9</comment_count>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2011-03-07 12:27:29 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 82020 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=82020&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:40
&gt; &gt; +#include &quot;CachedResourceClient.h&quot;
&gt; &gt; +#include &quot;CachedResourceHandle.h&quot;
&gt; &gt; +#include &quot;Cursor.h&quot;
&gt; &gt;  #include &quot;DataReference.h&quot;
&gt; &gt;  #include &quot;DecoderAdapter.h&quot;
&gt; &gt;  #include &quot;DrawingArea.h&quot;
&gt; &gt; +#include &quot;FocusController.h&quot;
&gt; &gt; +#include &quot;Font.h&quot;
&gt; &gt;  #include &quot;InjectedBundle.h&quot;
&gt; &gt;  #include &quot;InjectedBundleBackForwardList.h&quot;
&gt; &gt;  #include &quot;MessageID.h&quot;
&gt; 
&gt; In fact, all of these changes seem unecessary. Please remove them.

Yeah, completely removed in the current version of the patch, it was a problem with X includes I fixed in other patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>364022</commentid>
    <comment_count>10</comment_count>
      <attachid>85059</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2011-03-08 10:29:49 -0800</bug_when>
    <thetext>Created attachment 85059
Proposed patch

Adding message to handle commands generation in the UI process.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>366748</commentid>
    <comment_count>11</comment_count>
      <attachid>85059</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-03-13 16:41:40 -0700</bug_when>
    <thetext>Comment on attachment 85059
Proposed patch

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

r- because of some really minor things but this looks good to me otherwise! I&apos;d really like to have an Apple person look over the IPC changes, since I&apos;m not particularly familiar with that code.

&gt; Source/WebKit2/UIProcess/WebPageProxy.messages.in:139
&gt; +    # Keyboard support messages

Might want to make this slightly more descriptive. &quot;Support for GTK+ platform keybindings&quot; or something like that.

&gt; Source/WebKit2/UIProcess/WebPageProxy.messages.in:140
&gt; +    GenerateEditorCommands() -&gt; (Vector&lt;WTF::String&gt; commandsList)

Likewise, this might be better named in a way to describe that it converts a keystroke into a editor commands.

&gt; Source/WebKit2/WebProcess/WebCoreSupport/gtk/WebEditorClientGtk.cpp:39
&gt; +    // First try to interpret the command in the UI and get the commands..

Extra period here.

&gt; Source/WebKit2/WebProcess/WebCoreSupport/gtk/WebEditorClientGtk.cpp:43
&gt; +    if (!WebProcess::shared().connection()-&gt;sendSync(Messages::WebPageProxy::GenerateEditorCommands(),
&gt; +                                                     Messages::WebPageProxy::GenerateEditorCommands::Reply(pendingEditorCommands),
&gt; +                                                     m_page-&gt;pageID(), CoreIPC::Connection::NoTimeout))
&gt; +        return;

I don&apos;t think this return or if statement are necessary.

&gt; Source/WebKit2/WebProcess/WebCoreSupport/gtk/WebEditorClientGtk.cpp:61
&gt; +            success = false;
&gt; +            break;

If you&apos;re going to break, you can probably just return false here and dispense with the success variable altogether.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>366920</commentid>
    <comment_count>12</comment_count>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2011-03-14 03:39:43 -0700</bug_when>
    <thetext>Yep, I would like Apple review of the modifications of the IPC, adding them to the CC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>370232</commentid>
    <comment_count>13</comment_count>
      <attachid>86284</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2011-03-20 13:30:25 -0700</bug_when>
    <thetext>Created attachment 86284
Proposed patch

Fixed all the issues, thanks for the review, I hope some Apple dev can check the IPC part of the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>370233</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-20 13:32:33 -0700</bug_when>
    <thetext>Attachment 86284 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit...&quot; exit_code: 1

Source/WebKit2/WebProcess/WebCoreSupport/gtk/WebEditorClientGtk.cpp:59:  One line control clauses should not use braces.  [whitespace/braces] [4]
Total errors found: 1 in 15 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>370997</commentid>
    <comment_count>15</comment_count>
      <attachid>86284</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2011-03-21 16:25:14 -0700</bug_when>
    <thetext>Comment on attachment 86284
Proposed patch

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

&gt; Source/WebKit2/UIProcess/gtk/WebView.cpp:300
&gt; +    m_pendingEditorCommands = &amp;commandsList;

Taking a pointer of a stack-based object like this is dangerous. What ensures that we don&apos;t end up with a dangling pointer here? Could we fix it in some other way?

&gt; Source/WebKit2/UIProcess/gtk/WebView.cpp:309
&gt; +    if (m_pendingEditorCommands-&gt;size() &gt; 0)
&gt; +        return;

This should be 

if (!m_pendingEditorCommands.isEmpty())

&gt; Source/WebKit2/UIProcess/gtk/WebView.cpp:312
&gt; +    static HashMap&lt;int, const char*&gt; keyDownCommandsMap;
&gt; +    static HashMap&lt;int, const char*&gt; keyPressCommandsMap;

These should use the DEFINE_STATIC_LOCAL to avoid exit-time destructors.

&gt; Source/WebKit2/WebProcess/WebCoreSupport/gtk/WebEditorClientGtk.cpp:78
&gt; +    if (pendingEditorCommands.size() &gt; 0) {

It&apos;s better to do 

if (!pendingEditorCommands.isEmpty()) {

&gt; Source/WebKit2/WebProcess/WebCoreSupport/gtk/WebEditorClientGtk.cpp:122
&gt; +        } else {
&gt; +            // Don&apos;t insert null or control characters as they can result in unexpected behaviour
&gt; +            if (event-&gt;charCode() &lt; &apos; &apos;)
&gt; +                return;
&gt; +
&gt; +            // Don&apos;t insert anything if a modifier is pressed
&gt; +            if (platformEvent-&gt;ctrlKey() || platformEvent-&gt;altKey())
&gt; +                return;
&gt; +
&gt; +            if (frame-&gt;editor()-&gt;insertText(platformEvent-&gt;text(), event))
&gt; +                event-&gt;setDefaultHandled();
&gt; +        }

This entire block has wrong indentation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>370999</commentid>
    <comment_count>16</comment_count>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2011-03-21 16:30:01 -0700</bug_when>
    <thetext>Thanks for the review :), I&apos;ll fix the issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>373466</commentid>
    <comment_count>17</comment_count>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2011-03-25 06:10:45 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; (From update of attachment 86284 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=86284&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/gtk/WebView.cpp:300
&gt; &gt; +    m_pendingEditorCommands = &amp;commandsList;
&gt; 
&gt; Taking a pointer of a stack-based object like this is dangerous. What ensures that we don&apos;t end up with a dangling pointer here? Could we fix it in some other way?
&gt; 

Yep, you are right, in this case it is used just to pass the pointer to some callbacks that are only called through this method and do not get this pointer, this way we avoid a copy just for getting the result from the callbacks. To make sure no one uses this for other cases I&apos;m adding a = 0, when the method finishes and asserting initially it does no have any value, and I&apos;m adding transient to the name of the attribute.

&gt; &gt; Source/WebKit2/UIProcess/gtk/WebView.cpp:312
&gt; &gt; +    static HashMap&lt;int, const char*&gt; keyDownCommandsMap;
&gt; &gt; +    static HashMap&lt;int, const char*&gt; keyPressCommandsMap;
&gt; 
&gt; These should use the DEFINE_STATIC_LOCAL to avoid exit-time destructors.
&gt; 

I added this to the StdLibExtras.h:

// WEBKIT_COMMA: Required when using macros like DEFINE_STATIC_LOCAL and you
// need to define a template with multiple arguments i.e.
// DEFINE_STATIC_LOCAL(HasMap&lt;type1 COMMA type2&gt;, ...)
#define WEBKIT_COMMA ,</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>373467</commentid>
    <comment_count>18</comment_count>
      <attachid>86926</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2011-03-25 06:11:15 -0700</bug_when>
    <thetext>Created attachment 86926
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>373541</commentid>
    <comment_count>19</comment_count>
      <attachid>86926</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-03-25 09:11:33 -0700</bug_when>
    <thetext>Comment on attachment 86926
Proposed patch

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

Looks good, but I think you should switch to making m_pendingEditorCommands an object and just use append(). See below.

&gt; Source/JavaScriptCore/wtf/StdLibExtras.h:48
&gt; +// WEBKIT_COMMA: Required when using macros like DEFINE_STATIC_LOCAL and you
&gt; +// need to define a template with multiple arguments i.e.
&gt; +// DEFINE_STATIC_LOCAL(HasMap&lt;type1 COMMA type2&gt;, ...)
&gt; +#define WEBKIT_COMMA ,

Hrm. I&apos;m unsure about this change. Let&apos;s hold off on this or address it in another bug.

&gt; Source/WebKit2/UIProcess/gtk/WebView.cpp:305
&gt; +void WebView::getEditorCommandsForKeyEvent(const NativeWebKeyboardEvent&amp; event, Vector&lt;WTF::String&gt;&amp; commandsList)

commandsList -&gt; commandList

&gt; Source/WebKit2/UIProcess/gtk/WebView.cpp:309
&gt; +    m_transientPendingEditorCommands = &amp;commandsList;

Instead of making this change, maybe it would be better to turn the m_pendingEditorCommands member into an object from a pointer and just do:
m_pendingEditorCommands.clear() here.

&gt; Source/WebKit2/UIProcess/gtk/WebView.cpp:314
&gt; +    gtk_bindings_activate_event(GTK_OBJECT(m_nativeWidget.get()), reinterpret_cast&lt;GdkEventKey*&gt;(const_cast&lt;GdkEvent*&gt;(event.nativeEvent())));
&gt; +#else
&gt; +    gtk_bindings_activate_event(G_OBJECT(m_nativeWidget.get()), reinterpret_cast&lt;GdkEventKey*&gt;(const_cast&lt;GdkEvent*&gt;(event.nativeEvent())));

Here you should use event.nativeEvent()-&gt;key to get the key event.

&gt; Source/WebKit2/UIProcess/gtk/WebView.cpp:321
&gt; +    if (m_transientPendingEditorCommands-&gt;isEmpty()) {
&gt; +        m_transientPendingEditorCommands = 0;
&gt; +        return;
&gt; +    }
&gt; +

Here you can just do commandsList.append(m_pendingEditorCommands);

&gt; Source/WebKit2/UIProcess/gtk/WebView.cpp:323
&gt; +    DEFINE_STATIC_LOCAL(HashMap&lt;int WEBKIT_COMMA const char*&gt;, keyDownCommandsMap, ());
&gt; +    DEFINE_STATIC_LOCAL(HashMap&lt;int WEBKIT_COMMA const char*&gt;, keyPressCommandsMap, ());

For now instead of using WEBKIT_COMMA, just make a typedef like this at the top of the file:

typedef HashMap&lt;int, const char*&gt; IntConstCharHashMap;

and use that here. I believe it should fix the issues with DEFINE_STATIC_LOCAL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>373652</commentid>
    <comment_count>20</comment_count>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2011-03-25 12:06:15 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; (From update of attachment 86926 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=86926&amp;action=review
&gt; 
&gt; Looks good, but I think you should switch to making m_pendingEditorCommands an object and just use append(). See below.

Yeah, you are right, I always fall in the nonsense preoptimization. I&apos;ll review the patch, thanks for the reviews :).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>373653</commentid>
    <comment_count>21</comment_count>
      <attachid>86969</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2011-03-25 12:06:38 -0700</bug_when>
    <thetext>Created attachment 86969
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>378143</commentid>
    <comment_count>22</comment_count>
      <attachid>86969</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-04-01 15:40:11 -0700</bug_when>
    <thetext>Comment on attachment 86969
Proposed patch

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

Looks good. Please ensure that you have all the necessary WebPage stubs before landing.

&gt; Source/WebKit2/ChangeLog:1
&gt; +2011-03-25  Amruth Raj  &lt;amruthraj@motorola.com&gt; and Ravi Phaneendra Kasibhatla  &lt;ravi.kasibhatla@motorola.com&gt; and Alejandro G. Castro  &lt;alex@igalia.com&gt;

Probably best to use First, Second, and here.

&gt; Source/WebKit2/UIProcess/WebPageProxy.h:-586
&gt; -    

I would restore this newline.

&gt; Source/WebKit2/UIProcess/gtk/WebView.h:68
&gt; +    // Keyboard events handling.

You can omit this coment.

&gt; Source/WebKit2/WebProcess/WebCoreSupport/gtk/WebEditorClientGtk.cpp:42
&gt; +                                                m_page-&gt;pageID(), CoreIPC::Connection::NoTimeout);

Does it make sense to require a timeout for this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379460</commentid>
    <comment_count>23</comment_count>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2011-04-05 05:21:52 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; &gt; Source/WebKit2/WebProcess/WebCoreSupport/gtk/WebEditorClientGtk.cpp:42
&gt; &gt; +                                                m_page-&gt;pageID(), CoreIPC::Connection::NoTimeout);
&gt; 
&gt; Does it make sense to require a timeout for this?

Did not give much thought about it, I would say this kind of calls should never fail because it is something that just depends on the program processes and not something from the network and the user is expecting a response ASAP.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379483</commentid>
    <comment_count>24</comment_count>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2011-04-05 05:55:10 -0700</bug_when>
    <thetext>Landed http://trac.webkit.org/changeset/82929</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379494</commentid>
    <comment_count>25</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-05 06:14:08 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/82929 might have broken Windows Release (Build) and Windows Debug (Build)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>82020</attachid>
            <date>2011-02-10 11:57:35 -0800</date>
            <delta_ts>2011-03-08 10:29:49 -0800</delta_ts>
            <desc>Proposed patch</desc>
            <filename>webpage.patch</filename>
            <type>text/plain</type>
            <size>14594</size>
            <attacher name="Alejandro G. Castro">alex</attacher>
            
              <data encoding="base64">Y29tbWl0IGJlNDRkMGNkZGJjMWI5YmYyYmVhMDVlNDJiZWZkYTllMWE1ODIzNmEKQXV0aG9yOiBB
bGVqYW5kcm8gRy4gQ2FzdHJvIDxhbGV4QGlnYWxpYS5jb20+CkRhdGU6ICAgRnJpIEphbiAyMSAx
MjoyNDowNSAyMDExICswMTAwCgogICAgMjAxMS0wMi0xMCAgQW1ydXRoIFJhaiAgPGFtcnV0aHJh
akBtb3Rvcm9sYS5jb20+IGFuZCBSYXZpIFBoYW5lZW5kcmEgS2FzaWJoYXRsYSAgPHJhdmkua2Fz
aWJoYXRsYUBtb3Rvcm9sYS5jb20+CiAgICAKICAgICAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCiAgICAKICAgICAgICAgICAgW0dUS10gSW1wbGVtZW50IFdlYlBhZ2UgY2xhc3Mg
Zm9yIFdlYktpdDIKICAgICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTU0MjMwCiAgICAKICAgICAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKICAgICAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6IEFkZCBoZWFkZXJzIHJlcXVpcmVk
IGZvcgogICAgICAgICAgICBjb21waWxhdGlvbi4KICAgICAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvZ3RrL1dlYlBhZ2VHdGsuY3BwOiBBZGRlZC4KICAgICAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZTo6cGxhdGZvcm1Jbml0aWFsaXplKToKICAgICAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
cGxhdGZvcm1QcmVmZXJlbmNlc0RpZENoYW5nZSk6CiAgICAgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6OmludGVycHJldEtleUV2ZW50KToKICAgICAgICAgICAgKFdlYktpdDo6c2Nyb2xsKToKICAg
ICAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cGVyZm9ybURlZmF1bHRCZWhhdmlvckZvcktleUV2
ZW50KToKICAgICAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cGxhdGZvcm1IYXNMb2NhbERhdGFG
b3JVUkwpOgogICAgICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpjYWNoZWRSZXNwb25zZU1JTUVU
eXBlRm9yVVJMKToKICAgICAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y2FuSGFuZGxlUmVxdWVz
dCk6CgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCmluZGV4IDMxYzE0M2EuLjFiYmY3NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwyMyBAQAorMjAxMS0wMi0xMCAgQW1ydXRoIFJhaiAgPGFtcnV0aHJhakBtb3Rvcm9sYS5jb20+
IGFuZCBSYXZpIFBoYW5lZW5kcmEgS2FzaWJoYXRsYSAgPHJhdmkua2FzaWJoYXRsYUBtb3Rvcm9s
YS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
W0dUS10gSW1wbGVtZW50IFdlYlBhZ2UgY2xhc3MgZm9yIFdlYktpdDIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU0MjMwCisKKyAgICAgICAgKiBHTlVt
YWtlZmlsZS5hbToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6IEFk
ZCBoZWFkZXJzIHJlcXVpcmVkIGZvcgorICAgICAgICBjb21waWxhdGlvbi4KKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlBhZ2VHdGsuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZTo6cGxhdGZvcm1Jbml0aWFsaXplKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZTo6cGxhdGZvcm1QcmVmZXJlbmNlc0RpZENoYW5nZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OmludGVycHJldEtleUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6c2Nyb2xsKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cGVyZm9ybURlZmF1bHRCZWhhdmlvckZvcktleUV2ZW50
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cGxhdGZvcm1IYXNMb2NhbERhdGFGb3JVUkwp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpjYWNoZWRSZXNwb25zZU1JTUVUeXBlRm9yVVJM
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y2FuSGFuZGxlUmVxdWVzdCk6CisKIDIwMTEt
MDItMTAgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBB
dHRlbXB0IHRvIGZpeCB0aGUgUXQgYnVpbGQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9H
TlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCmluZGV4IDU4YTM4
NzYuLmE3ODZkNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCisr
KyBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCkBAIC01NzcsNiArNTc3LDcgQEAgbGli
V2ViS2l0Ml9sYV9TT1VSQ0VTID0gXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9GaW5kQ29udHJvbGxlci5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9GaW5kQ29udHJvbGxlci5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Z3RrL1dlYkluc3BlY3Rvckd0ay5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9ndGsvV2ViUGFnZUd0ay5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9MYXllckJhY2tlZERyYXdpbmdBcmVhLmNwcCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0xheWVyQmFja2VkRHJhd2luZ0FyZWEuaCBcCiAJU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1BhZ2VPdmVybGF5LmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggZTI0MDZlZS4uNGFjZDRlMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMjcs
OSArMjcsMTQgQEAKICNpbmNsdWRlICJXZWJQYWdlLmgiCiAKICNpbmNsdWRlICJBcmd1bWVudHMu
aCIKKyNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUNsaWVudC5oIgorI2luY2x1ZGUgIkNhY2hlZFJl
c291cmNlSGFuZGxlLmgiCisjaW5jbHVkZSAiQ3Vyc29yLmgiCiAjaW5jbHVkZSAiRGF0YVJlZmVy
ZW5jZS5oIgogI2luY2x1ZGUgIkRlY29kZXJBZGFwdGVyLmgiCiAjaW5jbHVkZSAiRHJhd2luZ0Fy
ZWEuaCIKKyNpbmNsdWRlICJGb2N1c0NvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJGb250LmgiCiAj
aW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGUuaCIKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZUJhY2tG
b3J3YXJkTGlzdC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VJRC5oIgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQYWdlR3RrLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUGFnZUd0ay5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTA3MDg1ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUGFnZUd0ay5jcHAKQEAgLTAsMCAr
MSwyNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAyMDEwIE1vdG9yb2xhIE1vYmls
aXR5LCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIEln
YWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJQ
YWdlLmgiCisKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIldlYkV2ZW50
LmgiCisjaW5jbHVkZSAiV2luZG93c0tleWJvYXJkQ29kZXMuaCIKKyNpbmNsdWRlIDxXZWJDb3Jl
L0ZvY3VzQ29udHJvbGxlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL0tleWJvYXJkRXZlbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtS2V5Ym9hcmRFdmVudC5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvU2V0dGluZ3MuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCit2b2lkIFdlYlBhZ2U6OnBsYXRmb3JtSW5pdGlhbGl6ZSgpCit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBXZWJQYWdlOjpwbGF0Zm9ybVByZWZlcmVuY2VzRGlk
Q2hhbmdlKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmKQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7Cit9CisKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBDdHJsS2V5ID0gMSA8PCAwOworc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIEFsdEtleSA9IDEgPDwgMTsKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBT
aGlmdEtleSA9IDEgPDwgMjsKKworc3RydWN0IEtleURvd25FbnRyeSB7CisgICAgdW5zaWduZWQg
dmlydHVhbEtleTsKKyAgICB1bnNpZ25lZCBtb2RpZmllcnM7CisgICAgY29uc3QgY2hhciogbmFt
ZTsKK307CisKK3N0cnVjdCBLZXlQcmVzc0VudHJ5IHsKKyAgICB1bnNpZ25lZCBjaGFyQ29kZTsK
KyAgICB1bnNpZ25lZCBtb2RpZmllcnM7CisgICAgY29uc3QgY2hhciogbmFtZTsKK307CisKK3N0
YXRpYyBjb25zdCBLZXlEb3duRW50cnkga2V5RG93bkVudHJpZXNbXSA9IHsKKyAgICB7IFZLX0xF
RlQsICAgMCwgICAgICAgICAgICAgICAgICAiTW92ZUxlZnQiICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfSwKKyAgICB7IFZLX0xFRlQsICAgU2hpZnRLZXksICAgICAgICAgICAi
TW92ZUxlZnRBbmRNb2RpZnlTZWxlY3Rpb24iICAgICAgICAgICAgICAgICAgfSwKKyAgICB7IFZL
X0xFRlQsICAgQ3RybEtleSwgICAgICAgICAgICAiTW92ZVdvcmRMZWZ0IiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfSwKKyAgICB7IFZLX0xFRlQsICAgQ3RybEtleSB8IFNoaWZ0S2V5
LCAiTW92ZVdvcmRMZWZ0QW5kTW9kaWZ5U2VsZWN0aW9uIiAgICAgICAgICAgICAgfSwKKyAgICB7
IFZLX1JJR0hULCAgMCwgICAgICAgICAgICAgICAgICAiTW92ZVJpZ2h0IiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7IFZLX1JJR0hULCAgU2hpZnRLZXksICAgICAg
ICAgICAiTW92ZVJpZ2h0QW5kTW9kaWZ5U2VsZWN0aW9uIiAgICAgICAgICAgICAgICAgfSwKKyAg
ICB7IFZLX1JJR0hULCAgQ3RybEtleSwgICAgICAgICAgICAiTW92ZVdvcmRSaWdodCIgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7IFZLX1JJR0hULCAgQ3RybEtleSB8IFNo
aWZ0S2V5LCAiTW92ZVdvcmRSaWdodEFuZE1vZGlmeVNlbGVjdGlvbiIgICAgICAgICAgICAgfSwK
KyAgICB7IFZLX1VQLCAgICAgMCwgICAgICAgICAgICAgICAgICAiTW92ZVVwIiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7IFZLX1VQLCAgICAgU2hpZnRLZXks
ICAgICAgICAgICAiTW92ZVVwQW5kTW9kaWZ5U2VsZWN0aW9uIiAgICAgICAgICAgICAgICAgICAg
fSwKKyAgICB7IFZLX1BSSU9SLCAgU2hpZnRLZXksICAgICAgICAgICAiTW92ZVBhZ2VVcEFuZE1v
ZGlmeVNlbGVjdGlvbiIgICAgICAgICAgICAgICAgfSwKKyAgICB7IFZLX0RPV04sICAgMCwgICAg
ICAgICAgICAgICAgICAiTW92ZURvd24iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfSwKKyAgICB7IFZLX0RPV04sICAgU2hpZnRLZXksICAgICAgICAgICAiTW92ZURvd25BbmRN
b2RpZnlTZWxlY3Rpb24iICAgICAgICAgICAgICAgICAgfSwKKyAgICB7IFZLX05FWFQsICAgU2hp
ZnRLZXksICAgICAgICAgICAiTW92ZVBhZ2VEb3duQW5kTW9kaWZ5U2VsZWN0aW9uIiAgICAgICAg
ICAgICAgfSwKKyAgICB7IFZLX1BSSU9SLCAgMCwgICAgICAgICAgICAgICAgICAiTW92ZVBhZ2VV
cCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7IFZLX05FWFQsICAg
MCwgICAgICAgICAgICAgICAgICAiTW92ZVBhZ2VEb3duIiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfSwKKyAgICB7IFZLX0hPTUUsICAgMCwgICAgICAgICAgICAgICAgICAiTW92ZVRv
QmVnaW5uaW5nT2ZMaW5lIiAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7IFZLX0hPTUUs
ICAgU2hpZnRLZXksICAgICAgICAgICAiTW92ZVRvQmVnaW5uaW5nT2ZMaW5lQW5kTW9kaWZ5U2Vs
ZWN0aW9uIiAgICAgfSwKKyAgICB7IFZLX0hPTUUsICAgQ3RybEtleSwgICAgICAgICAgICAiTW92
ZVRvQmVnaW5uaW5nT2ZEb2N1bWVudCIgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7IFZLX0hP
TUUsICAgQ3RybEtleSB8IFNoaWZ0S2V5LCAiTW92ZVRvQmVnaW5uaW5nT2ZEb2N1bWVudEFuZE1v
ZGlmeVNlbGVjdGlvbiIgfSwKKworICAgIHsgVktfRU5ELCAgICAwLCAgICAgICAgICAgICAgICAg
ICJNb3ZlVG9FbmRPZkxpbmUiICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgIHsg
VktfRU5ELCAgICBTaGlmdEtleSwgICAgICAgICAgICJNb3ZlVG9FbmRPZkxpbmVBbmRNb2RpZnlT
ZWxlY3Rpb24iICAgICAgICAgICB9LAorICAgIHsgVktfRU5ELCAgICBDdHJsS2V5LCAgICAgICAg
ICAgICJNb3ZlVG9FbmRPZkRvY3VtZW50IiAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAg
IHsgVktfRU5ELCAgICBDdHJsS2V5IHwgU2hpZnRLZXksICJNb3ZlVG9FbmRPZkRvY3VtZW50QW5k
TW9kaWZ5U2VsZWN0aW9uIiAgICAgICB9LAorCisgICAgeyBWS19CQUNLLCAgIDAsICAgICAgICAg
ICAgICAgICAgIkRlbGV0ZUJhY2t3YXJkIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0s
CisgICAgeyBWS19CQUNLLCAgIFNoaWZ0S2V5LCAgICAgICAgICAgIkRlbGV0ZUJhY2t3YXJkIiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgeyBWS19ERUxFVEUsIDAsICAgICAg
ICAgICAgICAgICAgIkRlbGV0ZUZvcndhcmQiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0sCisgICAgeyBWS19CQUNLLCAgIEN0cmxLZXksICAgICAgICAgICAgIkRlbGV0ZVdvcmRCYWNr
d2FyZCIgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgeyBWS19ERUxFVEUsIEN0cmxL
ZXksICAgICAgICAgICAgIkRlbGV0ZVdvcmRGb3J3YXJkIiAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH0sCisKKyAgICB7ICdCJywgICAgICAgQ3RybEtleSwgICAgICAgICAgICAiVG9nZ2xlQm9s
ZCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7ICdJJywgICAgICAg
Q3RybEtleSwgICAgICAgICAgICAiVG9nZ2xlSXRhbGljIiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfSwKKworICAgIHsgVktfRVNDQVBFLCAwLCAgICAgICAgICAgICAgICAgICJDYW5j
ZWwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgIHsgVktfT0VN
X1BFUklPRCwgQ3RybEtleSwgICAgICAgICJDYW5jZWwiICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB9LAorICAgIHsgVktfVEFCLCAgICAwLCAgICAgICAgICAgICAgICAgICJJ
bnNlcnRUYWIiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgIHsgVktf
VEFCLCAgICBTaGlmdEtleSwgICAgICAgICAgICJJbnNlcnRCYWNrdGFiIiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9LAorICAgIHsgVktfUkVUVVJOLCAwLCAgICAgICAgICAgICAgICAg
ICJJbnNlcnROZXdsaW5lIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgIHsg
VktfUkVUVVJOLCBDdHJsS2V5LCAgICAgICAgICAgICJJbnNlcnROZXdsaW5lIiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9LAorICAgIHsgVktfUkVUVVJOLCBBbHRLZXksICAgICAgICAg
ICAgICJJbnNlcnROZXdsaW5lIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAg
IHsgVktfUkVUVVJOLCBTaGlmdEtleSwgICAgICAgICAgICJJbnNlcnROZXdsaW5lIiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgIHsgVktfUkVUVVJOLCBBbHRLZXkgfCBTaGlm
dEtleSwgICJJbnNlcnROZXdsaW5lIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAor
CisgICAgLy8gSXQncyBub3QgcXVpdGUgY2xlYXIgd2hldGhlciBjbGlwYm9hcmQgc2hvcnRjdXRz
IGFuZCBVbmRvL1JlZG8gc2hvdWxkIGJlIGhhbmRsZWQKKyAgICAvLyBpbiB0aGUgYXBwbGljYXRp
b24gb3IgaW4gV2ViS2l0LiBXZSBjaG9zZSBXZWJLaXQuCisgICAgeyAnQycsICAgICAgIEN0cmxL
ZXksICAgICAgICAgICAgIkNvcHkiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH0sCisgICAgeyAnVicsICAgICAgIEN0cmxLZXksICAgICAgICAgICAgIlBhc3RlIiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgeyAnWCcsICAgICAgIEN0
cmxLZXksICAgICAgICAgICAgIkN1dCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIH0sCisgICAgeyAnQScsICAgICAgIEN0cmxLZXksICAgICAgICAgICAgIlNlbGVjdEFs
bCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgeyBWS19JTlNFUlQs
IEN0cmxLZXksICAgICAgICAgICAgIkNvcHkiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0sCisgICAgeyBWS19ERUxFVEUsIFNoaWZ0S2V5LCAgICAgICAgICAgIkN1dCIg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgeyBWS19JTlNF
UlQsIFNoaWZ0S2V5LCAgICAgICAgICAgIlBhc3RlIiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0sCisgICAgeyAnWicsICAgICAgIEN0cmxLZXksICAgICAgICAgICAgIlVu
ZG8iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgeyAnWics
ICAgICAgIEN0cmxLZXkgfCBTaGlmdEtleSwgIlJlZG8iICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0sCit9OworCitzdGF0aWMgY29uc3QgS2V5UHJlc3NFbnRyeSBrZXlQ
cmVzc0VudHJpZXNbXSA9IHsKKyAgICB7ICdcdCcsICAgMCwgICAgICAgICAgICAgICAgICAiSW5z
ZXJ0VGFiIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7ICdcdCcs
ICAgU2hpZnRLZXksICAgICAgICAgICAiSW5zZXJ0QmFja3RhYiIgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfSwKKyAgICB7ICdccicsICAgMCwgICAgICAgICAgICAgICAgICAiSW5zZXJ0
TmV3bGluZSIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7ICdccicsICAg
Q3RybEtleSwgICAgICAgICAgICAiSW5zZXJ0TmV3bGluZSIgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfSwKKyAgICB7ICdccicsICAgQWx0S2V5LCAgICAgICAgICAgICAiSW5zZXJ0TmV3
bGluZSIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7ICdccicsICAgU2hp
ZnRLZXksICAgICAgICAgICAiSW5zZXJ0TmV3bGluZSIgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfSwKKyAgICB7ICdccicsICAgQWx0S2V5IHwgU2hpZnRLZXksICAiSW5zZXJ0TmV3bGlu
ZSIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKK307CisKK2NvbnN0IGNoYXIqIFdl
YlBhZ2U6OmludGVycHJldEtleUV2ZW50KGNvbnN0IEtleWJvYXJkRXZlbnQqIGV2dCkKK3sKKyAg
ICBBU1NFUlQoZXZ0LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmtleWRvd25FdmVudCB8fCBldnQt
PnR5cGUoKSA9PSBldmVudE5hbWVzKCkua2V5cHJlc3NFdmVudCk7CisKKyAgICBzdGF0aWMgSGFz
aE1hcDxpbnQsIGNvbnN0IGNoYXIqPioga2V5RG93bkNvbW1hbmRzTWFwID0gMDsKKyAgICBzdGF0
aWMgSGFzaE1hcDxpbnQsIGNvbnN0IGNoYXIqPioga2V5UHJlc3NDb21tYW5kc01hcCA9IDA7CisK
KyAgICBpZiAoIWtleURvd25Db21tYW5kc01hcCkgeworICAgICAgICBrZXlEb3duQ29tbWFuZHNN
YXAgPSBuZXcgSGFzaE1hcDxpbnQsIGNvbnN0IGNoYXIqPjsKKyAgICAgICAga2V5UHJlc3NDb21t
YW5kc01hcCA9IG5ldyBIYXNoTWFwPGludCwgY29uc3QgY2hhcio+OworCisgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCAoc2l6ZW9mKGtleURvd25FbnRyaWVzKSAvIHNpemVvZihrZXlE
b3duRW50cmllc1swXSkpOyBpKyspCisgICAgICAgICAgICBrZXlEb3duQ29tbWFuZHNNYXAtPnNl
dChrZXlEb3duRW50cmllc1tpXS5tb2RpZmllcnMgPDwgMTYgfCBrZXlEb3duRW50cmllc1tpXS52
aXJ0dWFsS2V5LCBrZXlEb3duRW50cmllc1tpXS5uYW1lKTsKKworICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgKHNpemVvZihrZXlQcmVzc0VudHJpZXMpIC8gc2l6ZW9mKGtleVByZXNz
RW50cmllc1swXSkpOyBpKyspCisgICAgICAgICAgICBrZXlQcmVzc0NvbW1hbmRzTWFwLT5zZXQo
a2V5UHJlc3NFbnRyaWVzW2ldLm1vZGlmaWVycyA8PCAxNiB8IGtleVByZXNzRW50cmllc1tpXS5j
aGFyQ29kZSwga2V5UHJlc3NFbnRyaWVzW2ldLm5hbWUpOworICAgIH0KKworICAgIHVuc2lnbmVk
IG1vZGlmaWVycyA9IDA7CisgICAgaWYgKGV2dC0+c2hpZnRLZXkoKSkKKyAgICAgICAgbW9kaWZp
ZXJzIHw9IFNoaWZ0S2V5OworICAgIGlmIChldnQtPmFsdEtleSgpKQorICAgICAgICBtb2RpZmll
cnMgfD0gQWx0S2V5OworICAgIGlmIChldnQtPmN0cmxLZXkoKSkKKyAgICAgICAgbW9kaWZpZXJz
IHw9IEN0cmxLZXk7CisKKyAgICBpZiAoZXZ0LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmtleWRv
d25FdmVudCkgeworICAgICAgICBpbnQgbWFwS2V5ID0gbW9kaWZpZXJzIDw8IDE2IHwgZXZ0LT5r
ZXlFdmVudCgpLT53aW5kb3dzVmlydHVhbEtleUNvZGUoKTsKKyAgICAgICAgcmV0dXJuIG1hcEtl
eSA/IGtleURvd25Db21tYW5kc01hcC0+Z2V0KG1hcEtleSkgOiAwOworICAgIH0KKworICAgIGlu
dCBtYXBLZXkgPSBtb2RpZmllcnMgPDwgMTYgfCBldnQtPmNoYXJDb2RlKCk7CisgICAgcmV0dXJu
IG1hcEtleSA/IGtleVByZXNzQ29tbWFuZHNNYXAtPmdldChtYXBLZXkpIDogMDsKK30KKworc3Rh
dGljIGlubGluZSB2b2lkIHNjcm9sbChQYWdlKiBwYWdlLCBTY3JvbGxEaXJlY3Rpb24gZGlyZWN0
aW9uLCBTY3JvbGxHcmFudWxhcml0eSBncmFudWxhcml0eSkKK3sKKyAgICBwYWdlLT5mb2N1c0Nv
bnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5zY3JvbGxS
ZWN1cnNpdmVseShkaXJlY3Rpb24sIGdyYW51bGFyaXR5KTsKK30KKworYm9vbCBXZWJQYWdlOjpw
ZXJmb3JtRGVmYXVsdEJlaGF2aW9yRm9yS2V5RXZlbnQoY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYg
a2V5Ym9hcmRFdmVudCkKK3sKKyAgICBpZiAoa2V5Ym9hcmRFdmVudC50eXBlKCkgIT0gV2ViRXZl
bnQ6OktleURvd24gJiYga2V5Ym9hcmRFdmVudC50eXBlKCkgIT0gV2ViRXZlbnQ6OlJhd0tleURv
d24pCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHN3aXRjaCAoa2V5Ym9hcmRFdmVudC53
aW5kb3dzVmlydHVhbEtleUNvZGUoKSkgeworICAgIGNhc2UgVktfQkFDSzoKKyAgICAgICAgaWYg
KGtleWJvYXJkRXZlbnQuc2hpZnRLZXkoKSkKKyAgICAgICAgICAgIG1fcGFnZS0+Z29Gb3J3YXJk
KCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fcGFnZS0+Z29CYWNrKCk7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgVktfU1BBQ0U6CisgICAgICAgIHNjcm9sbChtX3BhZ2UuZ2V0KCks
IGtleWJvYXJkRXZlbnQuc2hpZnRLZXkoKSA/IFNjcm9sbFVwIDogU2Nyb2xsRG93biwgU2Nyb2xs
QnlQYWdlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBWS19MRUZUOgorICAgICAgICBzY3Jv
bGwobV9wYWdlLmdldCgpLCBTY3JvbGxMZWZ0LCBTY3JvbGxCeUxpbmUpOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIFZLX1JJR0hUOgorICAgICAgICBzY3JvbGwobV9wYWdlLmdldCgpLCBTY3Jv
bGxSaWdodCwgU2Nyb2xsQnlMaW5lKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBWS19VUDoK
KyAgICAgICAgc2Nyb2xsKG1fcGFnZS5nZXQoKSwgU2Nyb2xsVXAsIFNjcm9sbEJ5TGluZSk7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgVktfRE9XTjoKKyAgICAgICAgc2Nyb2xsKG1fcGFnZS5n
ZXQoKSwgU2Nyb2xsRG93biwgU2Nyb2xsQnlMaW5lKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBWS19IT01FOgorICAgICAgICBzY3JvbGwobV9wYWdlLmdldCgpLCBTY3JvbGxVcCwgU2Nyb2xs
QnlEb2N1bWVudCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVktfRU5EOgorICAgICAgICBz
Y3JvbGwobV9wYWdlLmdldCgpLCBTY3JvbGxEb3duLCBTY3JvbGxCeURvY3VtZW50KTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBWS19QUklPUjoKKyAgICAgICAgc2Nyb2xsKG1fcGFnZS5nZXQo
KSwgU2Nyb2xsVXAsIFNjcm9sbEJ5UGFnZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVktf
TkVYVDoKKyAgICAgICAgc2Nyb2xsKG1fcGFnZS5nZXQoKSwgU2Nyb2xsRG93biwgU2Nyb2xsQnlQ
YWdlKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFdlYlBhZ2U6OnBsYXRmb3Jt
SGFzTG9jYWxEYXRhRm9yVVJMKGNvbnN0IFdlYkNvcmU6OktVUkwmKQoreworICAgIC8vIEZJWE1F
OiBJbXBsZW1lbnQKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30K
KworU3RyaW5nIFdlYlBhZ2U6OmNhY2hlZFJlc3BvbnNlTUlNRVR5cGVGb3JVUkwoY29uc3QgV2Vi
Q29yZTo6S1VSTCYpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudAorICAgIHJldHVybiBTdHJp
bmcoKTsKK30KKworYm9vbCBXZWJQYWdlOjpjYW5IYW5kbGVSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudAorICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>85059</attachid>
            <date>2011-03-08 10:29:49 -0800</date>
            <delta_ts>2011-03-20 13:30:25 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>webpage.patch</filename>
            <type>text/plain</type>
            <size>35026</size>
            <attacher name="Alejandro G. Castro">alex</attacher>
            
              <data encoding="base64">Y29tbWl0IDhhODQ0ZTMzNzkyMjdlMjZhZWMzYjhlN2YzOTQyODM1NjgxNmI1MjYKQXV0aG9yOiBB
bGVqYW5kcm8gRy4gQ2FzdHJvIDxhbGV4QGlnYWxpYS5jb20+CkRhdGU6ICAgRnJpIEphbiAyMSAx
MjoyNDowNSAyMDExICswMTAwCgogICAgMjAxMS0wMi0xMCAgQW1ydXRoIFJhaiAgPGFtcnV0aHJh
akBtb3Rvcm9sYS5jb20+IGFuZCBSYXZpIFBoYW5lZW5kcmEgS2FzaWJoYXRsYSAgPHJhdmkua2Fz
aWJoYXRsYUBtb3Rvcm9sYS5jb20+IGFuZCBBbGVqYW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2Fs
aWEuY29tPgogICAgCiAgICAgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgogICAg
CiAgICAgICAgICAgIFtHVEtdIEltcGxlbWVudCBXZWJQYWdlIGNsYXNzIGZvciBXZWJLaXQyCiAg
ICAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NDIzMAog
ICAgCiAgICAgICAgICAgIEFkZGVkIGZ1bmN0aW9ucyB0byBoYW5kbGUgdGhlIGdlbmVyYXRpb24g
b2YgY29tbWFuZHMgZnJvbSB0aGUKICAgICAgICAgICAga2V5Y29kZXMuCiAgICAKICAgICAgICAg
ICAgKiBHTlVtYWtlZmlsZS5hbToKICAgICAgICAgICAgKiBTY3JpcHRzL3dlYmtpdDIvbWVzc2Fn
ZXMucHk6CiAgICAgICAgICAgICogVUlQcm9jZXNzL1BhZ2VDbGllbnQuaDoKICAgICAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CiAgICAgICAgICAgICogVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5tZXNzYWdlcy5pbjoKICAgICAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL1dlYlBhZ2VQ
cm94eUd0ay5jcHA6CiAgICAgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2VuZXJhdGVF
ZGl0b3JDb21tYW5kcyk6CiAgICAgICAgICAgICogVUlQcm9jZXNzL2d0ay9XZWJWaWV3LmNwcDoK
ICAgICAgICAgICAgKFdlYktpdDo6YmFja3NwYWNlQ2FsbGJhY2spOgogICAgICAgICAgICAoV2Vi
S2l0OjpzZWxlY3RBbGxDYWxsYmFjayk6CiAgICAgICAgICAgIChXZWJLaXQ6OmN1dENsaXBib2Fy
ZENhbGxiYWNrKToKICAgICAgICAgICAgKFdlYktpdDo6Y29weUNsaXBib2FyZENhbGxiYWNrKToK
ICAgICAgICAgICAgKFdlYktpdDo6cGFzdGVDbGlwYm9hcmRDYWxsYmFjayk6CiAgICAgICAgICAg
IChXZWJLaXQ6OnRvZ2dsZU92ZXJ3cml0ZUNhbGxiYWNrKToKICAgICAgICAgICAgKFdlYktpdDo6
cG9wdXBNZW51Q2FsbGJhY2spOgogICAgICAgICAgICAoV2ViS2l0OjpzaG93SGVscENhbGxiYWNr
KToKICAgICAgICAgICAgKFdlYktpdDo6ZGVsZXRlRnJvbUN1cnNvckNhbGxiYWNrKToKICAgICAg
ICAgICAgKFdlYktpdDo6bW92ZUN1cnNvckNhbGxiYWNrKToKICAgICAgICAgICAgKFdlYktpdDo6
V2ViVmlldzo6V2ViVmlldyk6CiAgICAgICAgICAgIChXZWJLaXQ6OldlYlZpZXc6OmdlbmVyYXRl
RWRpdG9yQ29tbWFuZHMpOgogICAgICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvV2ViVmlldy5oOgog
ICAgICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjphZGRQZW5kaW5nRWRpdG9yQ29tbWFuZCk6CiAg
ICAgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3Bw
OgogICAgICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
Lmg6CiAgICAgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRWRpdG9y
Q2xpZW50R3RrLmNwcDogQWRkZWQuCiAgICAgICAgICAgIChXZWJLaXQ6OldlYkVkaXRvckNsaWVu
dDo6Z2VuZXJhdGVFZGl0b3JDb21tYW5kcyk6CiAgICAgICAgICAgIChXZWJLaXQ6OldlYkVkaXRv
ckNsaWVudDo6ZXhlY3V0ZVBlbmRpbmdFZGl0b3JDb21tYW5kcyk6CiAgICAgICAgICAgIChXZWJL
aXQ6OldlYkVkaXRvckNsaWVudDo6aGFuZGxlS2V5Ym9hcmRFdmVudCk6CiAgICAgICAgICAgIChX
ZWJLaXQ6OldlYkVkaXRvckNsaWVudDo6aGFuZGxlSW5wdXRNZXRob2RLZXlkb3duKToKICAgICAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CiAgICAgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKICAgICAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvZ3RrL1dlYlBhZ2VHdGsuY3BwOiBBZGRlZC4KICAgICAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZTo6cGxhdGZvcm1Jbml0aWFsaXplKToKICAgICAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cGxh
dGZvcm1QcmVmZXJlbmNlc0RpZENoYW5nZSk6CiAgICAgICAgICAgIChXZWJLaXQ6OnNjcm9sbCk6
CiAgICAgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBlcmZvcm1EZWZhdWx0QmVoYXZpb3JGb3JL
ZXlFdmVudCk6CiAgICAgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBsYXRmb3JtSGFzTG9jYWxE
YXRhRm9yVVJMKToKICAgICAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y2FjaGVkUmVzcG9uc2VN
SU1FVHlwZUZvclVSTCk6CiAgICAgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNhbkhhbmRsZVJl
cXVlc3QpOgoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwppbmRleCBjYTgwYTMxLi41NjI3YjllIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNTMgQEAKKzIwMTEtMDItMTAgIEFtcnV0aCBSYWogIDxhbXJ1dGhyYWpAbW90b3JvbGEu
Y29tPiBhbmQgUmF2aSBQaGFuZWVuZHJhIEthc2liaGF0bGEgIDxyYXZpLmthc2liaGF0bGFAbW90
b3JvbGEuY29tPiBhbmQgQWxlamFuZHJvIEcuIENhc3RybyAgPGFsZXhAaWdhbGlhLmNvbT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbR1RLXSBJbXBs
ZW1lbnQgV2ViUGFnZSBjbGFzcyBmb3IgV2ViS2l0MgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTQyMzAKKworICAgICAgICBBZGRlZCBmdW5jdGlvbnMg
dG8gaGFuZGxlIHRoZSBnZW5lcmF0aW9uIG9mIGNvbW1hbmRzIGZyb20gdGhlCisgICAgICAgIGtl
eWNvZGVzLgorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogU2NyaXB0cy93
ZWJraXQyL21lc3NhZ2VzLnB5OgorICAgICAgICAqIFVJUHJvY2Vzcy9QYWdlQ2xpZW50Lmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9XZWJQYWdl
UHJveHlHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdlbmVyYXRlRWRp
dG9yQ29tbWFuZHMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvV2ViVmlldy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OmJhY2tzcGFjZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYktpdDo6c2VsZWN0
QWxsQ2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0OjpjdXRDbGlwYm9hcmRDYWxsYmFjayk6Cisg
ICAgICAgIChXZWJLaXQ6OmNvcHlDbGlwYm9hcmRDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6
OnBhc3RlQ2xpcGJvYXJkQ2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0Ojp0b2dnbGVPdmVyd3Jp
dGVDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6OnBvcHVwTWVudUNhbGxiYWNrKToKKyAgICAg
ICAgKFdlYktpdDo6c2hvd0hlbHBDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6OmRlbGV0ZUZy
b21DdXJzb3JDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6Om1vdmVDdXJzb3JDYWxsYmFjayk6
CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXc6OldlYlZpZXcpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJWaWV3OjpnZW5lcmF0ZUVkaXRvckNvbW1hbmRzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3Rr
L1dlYlZpZXcuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6YWRkUGVuZGluZ0VkaXRvckNv
bW1hbmQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50LmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkVkaXRv
ckNsaWVudEd0ay5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6
OmdlbmVyYXRlRWRpdG9yQ29tbWFuZHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJFZGl0b3JDbGll
bnQ6OmV4ZWN1dGVQZW5kaW5nRWRpdG9yQ29tbWFuZHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJF
ZGl0b3JDbGllbnQ6OmhhbmRsZUtleWJvYXJkRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJF
ZGl0b3JDbGllbnQ6OmhhbmRsZUlucHV0TWV0aG9kS2V5ZG93bik6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQYWdlR3RrLmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBsYXRmb3JtSW5pdGlhbGl6ZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBsYXRmb3JtUHJlZmVyZW5jZXNEaWRDaGFuZ2Up
OgorICAgICAgICAoV2ViS2l0OjpzY3JvbGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpw
ZXJmb3JtRGVmYXVsdEJlaGF2aW9yRm9yS2V5RXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpwbGF0Zm9ybUhhc0xvY2FsRGF0YUZvclVSTCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6OmNhY2hlZFJlc3BvbnNlTUlNRVR5cGVGb3JVUkwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpjYW5IYW5kbGVSZXF1ZXN0KToKKwogMjAxMS0wMy0wOCAgTGFzemxvIEdvbWJvcyAgPGxh
c3psby4xLmdvbWJvc0Bub2tpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBS
b2hkZSBDaHJpc3RpYW5zZW4uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmls
ZS5hbSBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCmluZGV4IDU5N2QyOWEuLjViYzQx
NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCkBAIC01ODQsNiArNTg0LDcgQEAgbGliV2ViS2l0Ml9s
YV9TT1VSQ0VTID0gXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUmVzb3VyY2VDYWNoZS9X
ZWJSZXNvdXJjZUNhY2hlTWFuYWdlci5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Jl
c291cmNlQ2FjaGUvV2ViUmVzb3VyY2VDYWNoZU1hbmFnZXIuY3BwIFwKIAlTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJDb250ZXh0TWVudUNsaWVudEd0ay5j
cHAgXAorCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkVk
aXRvckNsaWVudEd0ay5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvZ3RrL1dlYkVycm9yc0d0ay5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaCBcCiAJU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViUG9wdXBNZW51R3RrLmNw
cCBcCkBAIC02MjQsNiArNjI1LDcgQEAgbGliV2ViS2l0Ml9sYV9TT1VSQ0VTID0gXAogCVNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5oIFwKIAlTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0NodW5rZWRVcGRhdGVEcmF3aW5nQXJlYUd0
ay5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViSW5zcGVj
dG9yR3RrLmNwcCBcCisJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQ
YWdlR3RrLmNwcCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1BhZ2VPdmVy
bGF5LmNwcCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1BhZ2VPdmVybGF5
LmggXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9UaWxlZERyYXdpbmdBcmVh
LmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TY3JpcHRzL3dlYmtpdDIvbWVzc2Fn
ZXMucHkgYi9Tb3VyY2UvV2ViS2l0Mi9TY3JpcHRzL3dlYmtpdDIvbWVzc2FnZXMucHkKaW5kZXgg
MWM2YWU5Ny4uMzcxY2M0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2NyaXB0cy93ZWJr
aXQyL21lc3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9XZWJLaXQyL1NjcmlwdHMvd2Via2l0Mi9tZXNz
YWdlcy5weQpAQCAtMjUwLDYgKzI1MCw3IEBAIGRlZiBtZXNzYWdlX3RvX3N0cnVjdF9kZWNsYXJh
dGlvbihtZXNzYWdlKToKIAogZGVmIHN0cnVjdF9vcl9jbGFzcyhuYW1lc3BhY2UsIHR5cGUpOgog
ICAgIHN0cnVjdHMgPSBmcm96ZW5zZXQoWworICAgICAgICAnV2ViQ29yZTo6R2VuZXJhdGVFZGl0
b3JDb21tYW5kcycsCiAgICAgICAgICdXZWJDb3JlOjpDb21wb3NpdGlvblVuZGVybGluZScsCiAg
ICAgICAgICdXZWJDb3JlOjpHcmFtbWFyRGV0YWlsJywKICAgICAgICAgJ1dlYkNvcmU6OktleXBy
ZXNzQ29tbWFuZCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNs
aWVudC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAppbmRleCA1OWUw
MmNhLi5kN2NhYTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKQEAgLTEw
NSw2ICsxMDUsOSBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oV0lOKQogICAgIHZpcnR1YWwgdm9p
ZCBjb21wb3NpdGlvblNlbGVjdGlvbkNoYW5nZWQoYm9vbCkgPSAwOwogI2VuZGlmCisjaWYgUExB
VEZPUk0oR1RLKQorICAgIHZpcnR1YWwgdm9pZCBnZW5lcmF0ZUVkaXRvckNvbW1hbmRzKGNvbnN0
IE5hdGl2ZVdlYktleWJvYXJkRXZlbnQmLCBWZWN0b3I8V1RGOjpTdHJpbmc+JikgPSAwOworI2Vu
ZGlmCiAgICAgdmlydHVhbCBXZWJDb3JlOjpGbG9hdFJlY3QgY29udmVydFRvRGV2aWNlU3BhY2Uo
Y29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JikgPSAwOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6Rmxv
YXRSZWN0IGNvbnZlcnRUb1VzZXJTcGFjZShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKSA9IDA7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCBjZTU2Y2VhLi5m
OTJkZGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC01Nzcs
NyArNTc3LDEwIEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHZvaWQgaW50ZXJw
cmV0S2V5RXZlbnQodWludDMyX3QgZXZlbnRUeXBlLCBWZWN0b3I8V2ViQ29yZTo6S2V5cHJlc3ND
b21tYW5kPiYsIHVpbnQzMl90IHNlbGVjdGlvblN0YXJ0LCB1aW50MzJfdCBzZWxlY3Rpb25FbmQs
IFZlY3RvcjxXZWJDb3JlOjpDb21wb3NpdGlvblVuZGVybGluZT4mIHVuZGVybGluZXMpOwogI2Vu
ZGlmCi0gICAgCisjaWYgUExBVEZPUk0oR1RLKQorICAgIHZvaWQgZ2VuZXJhdGVFZGl0b3JDb21t
YW5kcyhWZWN0b3I8V1RGOjpTdHJpbmc+Jik7CisjZW5kaWYKKwogICAgIC8vIEZpbmQuCiAgICAg
dm9pZCBkaWRDb3VudFN0cmluZ01hdGNoZXMoY29uc3QgU3RyaW5nJiwgdWludDMyX3QgbWF0Y2hD
b3VudCk7CiAgICAgdm9pZCBzZXRGaW5kSW5kaWNhdG9yKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVj
dCYgc2VsZWN0aW9uUmVjdEluV2luZG93Q29vcmRpbmF0ZXMsIGNvbnN0IFZlY3RvcjxXZWJDb3Jl
OjpGbG9hdFJlY3Q+JiB0ZXh0UmVjdHNJblNlbGVjdGlvblJlY3RDb29yZGluYXRlcywgY29uc3Qg
U2hhcmVkTWVtb3J5OjpIYW5kbGUmIGNvbnRlbnRJbWFnZUhhbmRsZSwgYm9vbCBmYWRlT3V0KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2Fn
ZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmlu
CmluZGV4IDg2OTJmMTQuLjgyYjMyZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtMTM0LDcgKzEzNCwxMiBAQCBtZXNzYWdl
cyAtPiBXZWJQYWdlUHJveHkgewogICAgICMgUmVtb3RlIGFjY2Vzc2liaWxpdHkgbWVzc2FnZXMK
ICAgICBSZWdpc3RlcldlYlByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW4oQ29yZUlQQzo6RGF0YVJl
ZmVyZW5jZSBkYXRhKQogI2VuZGlmCi0gICAgCisKKyNpZiBQTEFURk9STShHVEspCisgICAgIyBL
ZXlib2FyZCBzdXBwb3J0IG1lc3NhZ2VzCisgICAgR2VuZXJhdGVFZGl0b3JDb21tYW5kcygpIC0+
IChWZWN0b3I8V1RGOjpTdHJpbmc+IGNvbW1hbmRzTGlzdCkKKyNlbmRpZgorCiAgICAgIyBCYWNr
Rm9yd2FyZCBtZXNzYWdlcwogICAgIEJhY2tGb3J3YXJkQWRkSXRlbSh1aW50NjRfdCBpdGVtSUQp
CiAgICAgQmFja0ZvcndhcmRHb1RvSXRlbSh1aW50NjRfdCBpdGVtSUQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlBhZ2VQcm94eUd0ay5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlBhZ2VQcm94eUd0ay5jcHAKaW5kZXggODM4ZGU5Ny4u
NTkyNzczNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJQYWdl
UHJveHlHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViUGFnZVBy
b3h5R3RrLmNwcApAQCAtMjcsNiArMjcsOSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIldlYlBhZ2VQcm94eS5oIgogCisjaW5jbHVkZSAiTmF0aXZlV2ViS2V5Ym9hcmRFdmVudC5o
IgorI2luY2x1ZGUgIlBhZ2VDbGllbnQuaCIKKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIFN0cmlu
ZyBXZWJQYWdlUHJveHk6OnN0YW5kYXJkVXNlckFnZW50KGNvbnN0IFN0cmluZyYgYXBwbGljYXRp
b25OYW1lRm9yVXNlckFnZW50KQpAQCAtMzUsNCArMzgsOSBAQCBTdHJpbmcgV2ViUGFnZVByb3h5
OjpzdGFuZGFyZFVzZXJBZ2VudChjb25zdCBTdHJpbmcmIGFwcGxpY2F0aW9uTmFtZUZvclVzZXJB
Z2VudAogICAgIHJldHVybiAiTW96aWxsYS81LjAgKFgxMTsgTGludXggaTY4NikgQXBwbGVXZWJL
aXQvNTM0LjcgKEtIVE1MLCBsaWtlIEdlY2tvKSBWZXJzaW9uLzUuMCBTYWZhcmkvNTM0LjciOwog
fQogCit2b2lkIFdlYlBhZ2VQcm94eTo6Z2VuZXJhdGVFZGl0b3JDb21tYW5kcyhWZWN0b3I8V1RG
OjpTdHJpbmc+JiBjb21tYW5kc0xpc3QpCit7CisgICAgbV9wYWdlQ2xpZW50LT5nZW5lcmF0ZUVk
aXRvckNvbW1hbmRzKG1fa2V5RXZlbnRRdWV1ZS5maXJzdCgpLCBjb21tYW5kc0xpc3QpOworfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9ndGsvV2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlZp
ZXcuY3BwCmluZGV4IDUwNjM5MjIuLjE4NDUyMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9ndGsvV2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2d0ay9XZWJWaWV3LmNwcApAQCAtNTksOCArNTksMTg1IEBAIHZvaWQgV2ViVmlldzo6aGFuZGxl
Rm9jdXNPdXRFdmVudChHdGtXaWRnZXQqIHdpZGdldCkKICAgICBtX3BhZ2UtPnZpZXdTdGF0ZURp
ZENoYW5nZShXZWJQYWdlUHJveHk6OlZpZXdXaW5kb3dJc0FjdGl2ZSk7CiB9CiAKKworc3RhdGlj
IHZvaWQgYmFja3NwYWNlQ2FsbGJhY2soR3RrV2lkZ2V0KiB3aWRnZXQsIFdlYlZpZXcqIGNsaWVu
dCkKK3sKKyAgICBnX3NpZ25hbF9zdG9wX2VtaXNzaW9uX2J5X25hbWUod2lkZ2V0LCAiYmFja3Nw
YWNlIik7CisgICAgY2xpZW50LT5hZGRQZW5kaW5nRWRpdG9yQ29tbWFuZCgiRGVsZXRlQmFja3dh
cmQiKTsKK30KKworc3RhdGljIHZvaWQgc2VsZWN0QWxsQ2FsbGJhY2soR3RrV2lkZ2V0KiB3aWRn
ZXQsIGdib29sZWFuIHNlbGVjdCwgV2ViVmlldyogY2xpZW50KQoreworICAgIGdfc2lnbmFsX3N0
b3BfZW1pc3Npb25fYnlfbmFtZSh3aWRnZXQsICJzZWxlY3QtYWxsIik7CisgICAgY2xpZW50LT5h
ZGRQZW5kaW5nRWRpdG9yQ29tbWFuZChzZWxlY3QgPyAiU2VsZWN0QWxsIiA6ICJVbnNlbGVjdCIp
OworfQorCitzdGF0aWMgdm9pZCBjdXRDbGlwYm9hcmRDYWxsYmFjayhHdGtXaWRnZXQqIHdpZGdl
dCwgV2ViVmlldyogY2xpZW50KQoreworICAgIGdfc2lnbmFsX3N0b3BfZW1pc3Npb25fYnlfbmFt
ZSh3aWRnZXQsICJjdXQtY2xpcGJvYXJkIik7CisgICAgY2xpZW50LT5hZGRQZW5kaW5nRWRpdG9y
Q29tbWFuZCgiQ3V0Iik7Cit9CisKK3N0YXRpYyB2b2lkIGNvcHlDbGlwYm9hcmRDYWxsYmFjayhH
dGtXaWRnZXQqIHdpZGdldCwgV2ViVmlldyogY2xpZW50KQoreworICAgIGdfc2lnbmFsX3N0b3Bf
ZW1pc3Npb25fYnlfbmFtZSh3aWRnZXQsICJjb3B5LWNsaXBib2FyZCIpOworICAgIGNsaWVudC0+
YWRkUGVuZGluZ0VkaXRvckNvbW1hbmQoIkNvcHkiKTsKK30KKworc3RhdGljIHZvaWQgcGFzdGVD
bGlwYm9hcmRDYWxsYmFjayhHdGtXaWRnZXQqIHdpZGdldCwgV2ViVmlldyogY2xpZW50KQorewor
ICAgIGdfc2lnbmFsX3N0b3BfZW1pc3Npb25fYnlfbmFtZSh3aWRnZXQsICJwYXN0ZS1jbGlwYm9h
cmQiKTsKKyAgICBjbGllbnQtPmFkZFBlbmRpbmdFZGl0b3JDb21tYW5kKCJQYXN0ZSIpOworfQor
CitzdGF0aWMgdm9pZCB0b2dnbGVPdmVyd3JpdGVDYWxsYmFjayhHdGtXaWRnZXQqIHdpZGdldCwg
RWRpdG9yQ2xpZW50KikKK3sKKyAgICAvLyBXZSBkb24ndCBzdXBwb3J0IHRvZ2dsaW5nIHRoZSBv
dmVyd3JpdGUgbW9kZSwgYnV0IHRoZSBkZWZhdWx0IGNhbGxiYWNrIGV4cGVjdHMKKyAgICAvLyB0
aGUgR3RrVGV4dFZpZXcgdG8gaGF2ZSBhIGxheW91dCwgc28gd2UgaGFuZGxlIHRoaXMgc2lnbmFs
IGp1c3QgdG8gc3RvcCBpdC4KKyAgICBnX3NpZ25hbF9zdG9wX2VtaXNzaW9uX2J5X25hbWUod2lk
Z2V0LCAidG9nZ2xlLW92ZXJ3cml0ZSIpOworfQorCisvLyBHVEsrIHdpbGwgc3RpbGwgc2VuZCB0
aGVzZSBzaWduYWxzIHRvIHRoZSB3ZWIgdmlldy4gU28gd2UgY2FuIHNhZmVseSBzdG9wIHNpZ25h
bAorLy8gZW1pc3Npb24gd2l0aG91dCBicmVha2luZyBhY2Nlc3NpYmlsaXR5Lgorc3RhdGljIHZv
aWQgcG9wdXBNZW51Q2FsbGJhY2soR3RrV2lkZ2V0KiB3aWRnZXQsIEVkaXRvckNsaWVudCopCit7
CisgICAgZ19zaWduYWxfc3RvcF9lbWlzc2lvbl9ieV9uYW1lKHdpZGdldCwgInBvcHVwLW1lbnUi
KTsKK30KKworc3RhdGljIHZvaWQgc2hvd0hlbHBDYWxsYmFjayhHdGtXaWRnZXQqIHdpZGdldCwg
RWRpdG9yQ2xpZW50KikKK3sKKyAgICBnX3NpZ25hbF9zdG9wX2VtaXNzaW9uX2J5X25hbWUod2lk
Z2V0LCAic2hvdy1oZWxwIik7Cit9CisKK3N0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBndGtEZWxl
dGVDb21tYW5kc1tdWzJdID0geworICAgIHsgIkRlbGV0ZUJhY2t3YXJkIiwgICAgICAgICAgICAg
ICAiRGVsZXRlRm9yd2FyZCIgICAgICAgICAgICAgICAgICAgICAgICB9LCAvLyBDaGFyYWN0ZXJz
CisgICAgeyAiRGVsZXRlV29yZEJhY2t3YXJkIiwgICAgICAgICAgICJEZWxldGVXb3JkRm9yd2Fy
ZCIgICAgICAgICAgICAgICAgICAgIH0sIC8vIFdvcmQgZW5kcworICAgIHsgIkRlbGV0ZVdvcmRC
YWNrd2FyZCIsICAgICAgICAgICAiRGVsZXRlV29yZEZvcndhcmQiICAgICAgICAgICAgICAgICAg
ICB9LCAvLyBXb3JkcworICAgIHsgIkRlbGV0ZVRvQmVnaW5uaW5nT2ZMaW5lIiwgICAgICAiRGVs
ZXRlVG9FbmRPZkxpbmUiICAgICAgICAgICAgICAgICAgICB9LCAvLyBMaW5lcworICAgIHsgIkRl
bGV0ZVRvQmVnaW5uaW5nT2ZMaW5lIiwgICAgICAiRGVsZXRlVG9FbmRPZkxpbmUiICAgICAgICAg
ICAgICAgICAgICB9LCAvLyBMaW5lIGVuZHMKKyAgICB7ICJEZWxldGVUb0JlZ2lubmluZ09mUGFy
YWdyYXBoIiwgIkRlbGV0ZVRvRW5kT2ZQYXJhZ3JhcGgiICAgICAgICAgICAgICAgfSwgLy8gUGFy
YWdyYXBoIGVuZHMKKyAgICB7ICJEZWxldGVUb0JlZ2lubmluZ09mUGFyYWdyYXBoIiwgIkRlbGV0
ZVRvRW5kT2ZQYXJhZ3JhcGgiICAgICAgICAgICAgICAgfSwgLy8gUGFyYWdyYXBocworICAgIHsg
MCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB9IC8vIFdoaXRlc3BhY2UgKE0tXCBpbiBFbWFjcykKK307CisKK3N0YXRp
YyB2b2lkIGRlbGV0ZUZyb21DdXJzb3JDYWxsYmFjayhHdGtXaWRnZXQqIHdpZGdldCwgR3RrRGVs
ZXRlVHlwZSBkZWxldGVUeXBlLCBnaW50IGNvdW50LCBXZWJWaWV3KiBjbGllbnQpCit7CisgICAg
Z19zaWduYWxfc3RvcF9lbWlzc2lvbl9ieV9uYW1lKHdpZGdldCwgImRlbGV0ZS1mcm9tLWN1cnNv
ciIpOworICAgIGludCBkaXJlY3Rpb24gPSBjb3VudCA+IDAgPyAxIDogMDsKKworICAgIC8vIEVu
c3VyaW5nIHRoYXQgZGVsZXRlVHlwZSA8PSBHX05fRUxFTUVOVFMgaGVyZSByZXN1bHRzIGluIGEg
Y29tcGlsZXIgd2FybmluZworICAgIC8vIHRoYXQgdGhlIGNvbmRpdGlvbiBpcyBhbHdheXMgdHJ1
ZS4KKworICAgIGlmIChkZWxldGVUeXBlID09IEdUS19ERUxFVEVfV09SRFMpIHsKKyAgICAgICAg
aWYgKCFkaXJlY3Rpb24pIHsKKyAgICAgICAgICAgIGNsaWVudC0+YWRkUGVuZGluZ0VkaXRvckNv
bW1hbmQoIk1vdmVXb3JkRm9yd2FyZCIpOworICAgICAgICAgICAgY2xpZW50LT5hZGRQZW5kaW5n
RWRpdG9yQ29tbWFuZCgiTW92ZVdvcmRCYWNrd2FyZCIpOworICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgY2xpZW50LT5hZGRQZW5kaW5nRWRpdG9yQ29tbWFuZCgiTW92ZVdvcmRCYWNrd2Fy
ZCIpOworICAgICAgICAgICAgY2xpZW50LT5hZGRQZW5kaW5nRWRpdG9yQ29tbWFuZCgiTW92ZVdv
cmRGb3J3YXJkIik7CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKGRlbGV0ZVR5cGUgPT0gR1RL
X0RFTEVURV9ESVNQTEFZX0xJTkVTKSB7CisgICAgICAgIGlmICghZGlyZWN0aW9uKQorICAgICAg
ICAgICAgY2xpZW50LT5hZGRQZW5kaW5nRWRpdG9yQ29tbWFuZCgiTW92ZVRvQmVnaW5uaW5nT2ZM
aW5lIik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNsaWVudC0+YWRkUGVuZGluZ0VkaXRv
ckNvbW1hbmQoIk1vdmVUb0VuZE9mTGluZSIpOworICAgIH0gZWxzZSBpZiAoZGVsZXRlVHlwZSA9
PSBHVEtfREVMRVRFX1BBUkFHUkFQSFMpIHsKKyAgICAgICAgaWYgKCFkaXJlY3Rpb24pCisgICAg
ICAgICAgICBjbGllbnQtPmFkZFBlbmRpbmdFZGl0b3JDb21tYW5kKCJNb3ZlVG9CZWdpbm5pbmdP
ZlBhcmFncmFwaCIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjbGllbnQtPmFkZFBlbmRp
bmdFZGl0b3JDb21tYW5kKCJNb3ZlVG9FbmRPZlBhcmFncmFwaCIpOworICAgIH0KKworICAgIGNv
bnN0IGNoYXIqIHJhd0NvbW1hbmQgPSBndGtEZWxldGVDb21tYW5kc1tkZWxldGVUeXBlXVtkaXJl
Y3Rpb25dOworICAgIGlmICghcmF3Q29tbWFuZCkKKyAgICAgIHJldHVybjsKKworICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgYWJzKGNvdW50KTsgaSsrKQorICAgICAgICBjbGllbnQtPmFkZFBlbmRp
bmdFZGl0b3JDb21tYW5kKHJhd0NvbW1hbmQpOworfQorCitzdGF0aWMgY29uc3QgY2hhciogY29u
c3QgZ3RrTW92ZUNvbW1hbmRzW11bNF0gPSB7CisgICAgeyAiTW92ZUJhY2t3YXJkIiwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNb3ZlRm9yd2FyZCIsCisgICAgICAiTW92ZUJh
Y2t3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uIiwgICAgICAgICAgICAgICAgICJNb3ZlRm9yd2FyZEFu
ZE1vZGlmeVNlbGVjdGlvbiIgICAgICAgICAgICAgfSwgLy8gRm9yd2FyZC9iYWNrd2FyZCBncmFw
aGVtZQorICAgIHsgIk1vdmVMZWZ0IiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiTW92ZVJpZ2h0IiwKKyAgICAgICJNb3ZlQmFja3dhcmRBbmRNb2RpZnlTZWxlY3Rpb24i
LCAgICAgICAgICAgICAgICAgIk1vdmVGb3J3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uIiAgICAgICAg
ICAgICB9LCAvLyBMZWZ0L3JpZ2h0IGdyYXBoZW1lCisgICAgeyAiTW92ZVdvcmRCYWNrd2FyZCIs
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNb3ZlV29yZEZvcndhcmQiLAorICAgICAg
Ik1vdmVXb3JkQmFja3dhcmRBbmRNb2RpZnlTZWxlY3Rpb24iLCAgICAgICAgICAgICAiTW92ZVdv
cmRGb3J3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uIiAgICAgICAgIH0sIC8vIEZvcndhcmQvYmFja3dh
cmQgd29yZAorICAgIHsgIk1vdmVVcCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiTW92ZURvd24iLAorICAgICAgIk1vdmVVcEFuZE1vZGlmeVNlbGVjdGlvbiIsICAg
ICAgICAgICAgICAgICAgICAgICAiTW92ZURvd25BbmRNb2RpZnlTZWxlY3Rpb24iICAgICAgICAg
ICAgICAgIH0sIC8vIFVwL2Rvd24gbGluZQorICAgIHsgIk1vdmVUb0JlZ2lubmluZ09mTGluZSIs
ICAgICAgICAgICAgICAgICAgICAgICAgICAiTW92ZVRvRW5kT2ZMaW5lIiwKKyAgICAgICJNb3Zl
VG9CZWdpbm5pbmdPZkxpbmVBbmRNb2RpZnlTZWxlY3Rpb24iLCAgICAgICAgIk1vdmVUb0VuZE9m
TGluZUFuZE1vZGlmeVNlbGVjdGlvbiIgICAgICAgICB9LCAvLyBVcC9kb3duIGxpbmUgZW5kcwor
ICAgIHsgIk1vdmVQYXJhZ3JhcGhGb3J3YXJkIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAi
TW92ZVBhcmFncmFwaEJhY2t3YXJkIiwKKyAgICAgICJNb3ZlUGFyYWdyYXBoRm9yd2FyZEFuZE1v
ZGlmeVNlbGVjdGlvbiIsICAgICAgICAgIk1vdmVQYXJhZ3JhcGhCYWNrd2FyZEFuZE1vZGlmeVNl
bGVjdGlvbiIgICB9LCAvLyBVcC9kb3duIHBhcmFncmFwaHMKKyAgICB7ICJNb3ZlVG9CZWdpbm5p
bmdPZlBhcmFncmFwaCIsICAgICAgICAgICAgICAgICAgICAgIk1vdmVUb0VuZE9mUGFyYWdyYXBo
IiwKKyAgICAgICJNb3ZlVG9CZWdpbm5pbmdPZlBhcmFncmFwaEFuZE1vZGlmeVNlbGVjdGlvbiIs
ICAgIk1vdmVUb0VuZE9mUGFyYWdyYXBoQW5kTW9kaWZ5U2VsZWN0aW9uIiAgICB9LCAvLyBVcC9k
b3duIHBhcmFncmFwaCBlbmRzLgorICAgIHsgIk1vdmVQYWdlVXAiLCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiTW92ZVBhZ2VEb3duIiwKKyAgICAgICJNb3ZlUGFnZVVwQW5k
TW9kaWZ5U2VsZWN0aW9uIiwgICAgICAgICAgICAgICAgICAgIk1vdmVQYWdlRG93bkFuZE1vZGlm
eVNlbGVjdGlvbiIgICAgICAgICAgICB9LCAvLyBVcC9kb3duIHBhZ2UKKyAgICB7ICJNb3ZlVG9C
ZWdpbm5pbmdPZkRvY3VtZW50IiwgICAgICAgICAgICAgICAgICAgICAgIk1vdmVUb0VuZE9mRG9j
dW1lbnQiLAorICAgICAgIk1vdmVUb0JlZ2lubmluZ09mRG9jdW1lbnRBbmRNb2RpZnlTZWxlY3Rp
b24iLCAgICAiTW92ZVRvRW5kT2ZEb2N1bWVudEFuZE1vZGlmeVNlbGVjdGlvbiIgICAgIH0sIC8v
IEJlZ2luL2VuZCBvZiBidWZmZXIKKyAgICB7IDAsICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMCwKKyAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9IC8vIEhvcml6b250YWwgcGFnZSBtb3ZlbWVudAorfTsKKworc3RhdGljIHZv
aWQgbW92ZUN1cnNvckNhbGxiYWNrKEd0a1dpZGdldCogd2lkZ2V0LCBHdGtNb3ZlbWVudFN0ZXAg
c3RlcCwgZ2ludCBjb3VudCwgZ2Jvb2xlYW4gZXh0ZW5kU2VsZWN0aW9uLCBXZWJWaWV3KiBjbGll
bnQpCit7CisgICAgZ19zaWduYWxfc3RvcF9lbWlzc2lvbl9ieV9uYW1lKHdpZGdldCwgIm1vdmUt
Y3Vyc29yIik7CisgICAgaW50IGRpcmVjdGlvbiA9IGNvdW50ID4gMCA/IDEgOiAwOworICAgIGlm
IChleHRlbmRTZWxlY3Rpb24pCisgICAgICAgIGRpcmVjdGlvbiArPSAyOworCisgICAgaWYgKHN0
YXRpY19jYXN0PHVuc2lnbmVkPihzdGVwKSA+PSBHX05fRUxFTUVOVFMoZ3RrTW92ZUNvbW1hbmRz
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgY29uc3QgY2hhciogcmF3Q29tbWFuZCA9IGd0a01v
dmVDb21tYW5kc1tzdGVwXVtkaXJlY3Rpb25dOworICAgIGlmICghcmF3Q29tbWFuZCkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBhYnMoY291bnQpOyBpKyspCisg
ICAgICAgIGNsaWVudC0+YWRkUGVuZGluZ0VkaXRvckNvbW1hbmQocmF3Q29tbWFuZCk7Cit9CisK
K3N0YXRpYyBjb25zdCB1bnNpZ25lZCBDdHJsS2V5ID0gMSA8PCAwOworc3RhdGljIGNvbnN0IHVu
c2lnbmVkIEFsdEtleSA9IDEgPDwgMTsKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBTaGlmdEtleSA9
IDEgPDwgMjsKKworc3RydWN0IEtleURvd25FbnRyeSB7CisgICAgdW5zaWduZWQgdmlydHVhbEtl
eTsKKyAgICB1bnNpZ25lZCBtb2RpZmllcnM7CisgICAgY29uc3QgY2hhciogbmFtZTsKK307CisK
K3N0cnVjdCBLZXlQcmVzc0VudHJ5IHsKKyAgICB1bnNpZ25lZCBjaGFyQ29kZTsKKyAgICB1bnNp
Z25lZCBtb2RpZmllcnM7CisgICAgY29uc3QgY2hhciogbmFtZTsKK307CisKK3N0YXRpYyBjb25z
dCBLZXlEb3duRW50cnkga2V5RG93bkVudHJpZXNbXSA9IHsKKyAgICB7ICdCJywgICAgICAgQ3Ry
bEtleSwgICAgICAgICAgICAiVG9nZ2xlQm9sZCIgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfSwKKyAgICB7ICdJJywgICAgICAgQ3RybEtleSwgICAgICAgICAgICAiVG9nZ2xlSXRh
bGljIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7IFZLX0VTQ0FQRSwg
MCwgICAgICAgICAgICAgICAgICAiQ2FuY2VsIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfSwKKyAgICB7IFZLX09FTV9QRVJJT0QsIEN0cmxLZXksICAgICAgICAiQ2FuY2Vs
IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7IFZLX1RBQiwg
ICAgMCwgICAgICAgICAgICAgICAgICAiSW5zZXJ0VGFiIiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfSwKKyAgICB7IFZLX1RBQiwgICAgU2hpZnRLZXksICAgICAgICAgICAiSW5z
ZXJ0QmFja3RhYiIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7IFZLX1JF
VFVSTiwgMCwgICAgICAgICAgICAgICAgICAiSW5zZXJ0TmV3bGluZSIgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfSwKKyAgICB7IFZLX1JFVFVSTiwgQ3RybEtleSwgICAgICAgICAgICAi
SW5zZXJ0TmV3bGluZSIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7IFZL
X1JFVFVSTiwgQWx0S2V5LCAgICAgICAgICAgICAiSW5zZXJ0TmV3bGluZSIgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfSwKKyAgICB7IFZLX1JFVFVSTiwgQWx0S2V5IHwgU2hpZnRLZXks
ICAiSW5zZXJ0TmV3bGluZSIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKK307CisK
K3N0YXRpYyBjb25zdCBLZXlQcmVzc0VudHJ5IGtleVByZXNzRW50cmllc1tdID0geworICAgIHsg
J1x0JywgICAwLCAgICAgICAgICAgICAgICAgICJJbnNlcnRUYWIiICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9LAorICAgIHsgJ1x0JywgICBTaGlmdEtleSwgICAgICAgICAgICJJ
bnNlcnRCYWNrdGFiIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgIHsgJ1xy
JywgICAwLCAgICAgICAgICAgICAgICAgICJJbnNlcnROZXdsaW5lIiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB9LAorICAgIHsgJ1xyJywgICBDdHJsS2V5LCAgICAgICAgICAgICJJbnNl
cnROZXdsaW5lIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgIHsgJ1xyJywg
ICBBbHRLZXksICAgICAgICAgICAgICJJbnNlcnROZXdsaW5lIiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9LAorICAgIHsgJ1xyJywgICBBbHRLZXkgfCBTaGlmdEtleSwgICJJbnNlcnRO
ZXdsaW5lIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorfTsKKwogV2ViVmlldzo6
V2ViVmlldyhXZWJDb250ZXh0KiBjb250ZXh0LCBXZWJQYWdlR3JvdXAqIHBhZ2VHcm91cCkKICAg
ICA6IG1faXNQYWdlQWN0aXZlKHRydWUpCisgICAgLCBtX25hdGl2ZVdpZGdldChndGtfdGV4dF92
aWV3X25ldygpKQogewogICAgIG1fcGFnZSA9IGNvbnRleHQtPmNyZWF0ZVdlYlBhZ2UodGhpcywg
cGFnZUdyb3VwKTsKIApAQCAtNzEsNiArMjQ4LDE3IEBAIFdlYlZpZXc6OldlYlZpZXcoV2ViQ29u
dGV4dCogY29udGV4dCwgV2ViUGFnZUdyb3VwKiBwYWdlR3JvdXApCiAKICAgICBXZWJWaWV3V2lk
Z2V0KiB3ZWJWaWV3V2lkZ2V0ID0gV0VCX1ZJRVdfV0lER0VUKG1fdmlld1dpZGdldCk7CiAgICAg
d2ViVmlld1dpZGdldFNldFdlYlZpZXdJbnN0YW5jZSh3ZWJWaWV3V2lkZ2V0LCB0aGlzKTsKKwor
ICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9uYXRpdmVXaWRnZXQuZ2V0KCksICJiYWNrc3BhY2UiLCBH
X0NBTExCQUNLKGJhY2tzcGFjZUNhbGxiYWNrKSwgdGhpcyk7CisgICAgZ19zaWduYWxfY29ubmVj
dChtX25hdGl2ZVdpZGdldC5nZXQoKSwgImN1dC1jbGlwYm9hcmQiLCBHX0NBTExCQUNLKGN1dENs
aXBib2FyZENhbGxiYWNrKSwgdGhpcyk7CisgICAgZ19zaWduYWxfY29ubmVjdChtX25hdGl2ZVdp
ZGdldC5nZXQoKSwgImNvcHktY2xpcGJvYXJkIiwgR19DQUxMQkFDSyhjb3B5Q2xpcGJvYXJkQ2Fs
bGJhY2spLCB0aGlzKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KG1fbmF0aXZlV2lkZ2V0LmdldCgp
LCAicGFzdGUtY2xpcGJvYXJkIiwgR19DQUxMQkFDSyhwYXN0ZUNsaXBib2FyZENhbGxiYWNrKSwg
dGhpcyk7CisgICAgZ19zaWduYWxfY29ubmVjdChtX25hdGl2ZVdpZGdldC5nZXQoKSwgInNlbGVj
dC1hbGwiLCBHX0NBTExCQUNLKHNlbGVjdEFsbENhbGxiYWNrKSwgdGhpcyk7CisgICAgZ19zaWdu
YWxfY29ubmVjdChtX25hdGl2ZVdpZGdldC5nZXQoKSwgIm1vdmUtY3Vyc29yIiwgR19DQUxMQkFD
Syhtb3ZlQ3Vyc29yQ2FsbGJhY2spLCB0aGlzKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KG1fbmF0
aXZlV2lkZ2V0LmdldCgpLCAiZGVsZXRlLWZyb20tY3Vyc29yIiwgR19DQUxMQkFDSyhkZWxldGVG
cm9tQ3Vyc29yQ2FsbGJhY2spLCB0aGlzKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KG1fbmF0aXZl
V2lkZ2V0LmdldCgpLCAidG9nZ2xlLW92ZXJ3cml0ZSIsIEdfQ0FMTEJBQ0sodG9nZ2xlT3Zlcndy
aXRlQ2FsbGJhY2spLCB0aGlzKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KG1fbmF0aXZlV2lkZ2V0
LmdldCgpLCAicG9wdXAtbWVudSIsIEdfQ0FMTEJBQ0socG9wdXBNZW51Q2FsbGJhY2spLCB0aGlz
KTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KG1fbmF0aXZlV2lkZ2V0LmdldCgpLCAic2hvdy1oZWxw
IiwgR19DQUxMQkFDSyhzaG93SGVscENhbGxiYWNrKSwgdGhpcyk7CiB9CiAKIFdlYlZpZXc6On5X
ZWJWaWV3KCkKQEAgLTEwNyw2ICsyOTUsNDggQEAgdm9pZCBXZWJWaWV3OjpoYW5kbGVXaGVlbEV2
ZW50KEdka0V2ZW50U2Nyb2xsKiBldmVudCkKICAgICBtX3BhZ2UtPmhhbmRsZVdoZWVsRXZlbnQo
V2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJXaGVlbEV2ZW50KGV2ZW50KSk7CiB9CiAKK3ZvaWQg
V2ViVmlldzo6Z2VuZXJhdGVFZGl0b3JDb21tYW5kcyhjb25zdCBOYXRpdmVXZWJLZXlib2FyZEV2
ZW50JiBldmVudCwgVmVjdG9yPFdURjo6U3RyaW5nPiYgY29tbWFuZHNMaXN0KQoreworICAgIG1f
cGVuZGluZ0VkaXRvckNvbW1hbmRzID0gJmNvbW1hbmRzTGlzdDsKKworI2lmZGVmIEdUS19BUElf
VkVSU0lPTl8yCisgICAgZ3RrX2JpbmRpbmdzX2FjdGl2YXRlX2V2ZW50KEdUS19PQkpFQ1QobV9u
YXRpdmVXaWRnZXQuZ2V0KCkpLCByZWludGVycHJldF9jYXN0PEdka0V2ZW50S2V5Kj4oY29uc3Rf
Y2FzdDxHZGtFdmVudCo+KGV2ZW50Lm5hdGl2ZUV2ZW50KCkpKSk7CisjZWxzZQorICAgIGd0a19i
aW5kaW5nc19hY3RpdmF0ZV9ldmVudChHX09CSkVDVChtX25hdGl2ZVdpZGdldC5nZXQoKSksIHJl
aW50ZXJwcmV0X2Nhc3Q8R2RrRXZlbnRLZXkqPihjb25zdF9jYXN0PEdka0V2ZW50Kj4oZXZlbnQu
bmF0aXZlRXZlbnQoKSkpKTsKKyNlbmRpZgorCisgICAgaWYgKG1fcGVuZGluZ0VkaXRvckNvbW1h
bmRzLT5zaXplKCkgPiAwKQorICAgICAgICByZXR1cm47CisKKyAgICBzdGF0aWMgSGFzaE1hcDxp
bnQsIGNvbnN0IGNoYXIqPiBrZXlEb3duQ29tbWFuZHNNYXA7CisgICAgc3RhdGljIEhhc2hNYXA8
aW50LCBjb25zdCBjaGFyKj4ga2V5UHJlc3NDb21tYW5kc01hcDsKKworICAgIGlmIChrZXlEb3du
Q29tbWFuZHNNYXAuaXNFbXB0eSgpKSB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBHX05fRUxFTUVOVFMoa2V5RG93bkVudHJpZXMpOyBpKyspCisgICAgICAgICAgICBrZXlEb3du
Q29tbWFuZHNNYXAuc2V0KGtleURvd25FbnRyaWVzW2ldLm1vZGlmaWVycyA8PCAxNiB8IGtleURv
d25FbnRyaWVzW2ldLnZpcnR1YWxLZXksIGtleURvd25FbnRyaWVzW2ldLm5hbWUpOworCisgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBHX05fRUxFTUVOVFMoa2V5UHJlc3NFbnRyaWVz
KTsgaSsrKQorICAgICAgICAgICAga2V5UHJlc3NDb21tYW5kc01hcC5zZXQoa2V5UHJlc3NFbnRy
aWVzW2ldLm1vZGlmaWVycyA8PCAxNiB8IGtleVByZXNzRW50cmllc1tpXS5jaGFyQ29kZSwga2V5
UHJlc3NFbnRyaWVzW2ldLm5hbWUpOworICAgIH0KKworICAgIHVuc2lnbmVkIG1vZGlmaWVycyA9
IDA7CisgICAgaWYgKGV2ZW50LnNoaWZ0S2V5KCkpCisgICAgICAgIG1vZGlmaWVycyB8PSBTaGlm
dEtleTsKKyAgICBpZiAoZXZlbnQuYWx0S2V5KCkpCisgICAgICAgIG1vZGlmaWVycyB8PSBBbHRL
ZXk7CisgICAgaWYgKGV2ZW50LmNvbnRyb2xLZXkoKSkKKyAgICAgICAgbW9kaWZpZXJzIHw9IEN0
cmxLZXk7CisKKyAgICAvLyBGb3Iga2V5cHJlc3MgZXZlbnRzLCB3ZSB3YW50IGNoYXJDb2RlKCks
IGJ1dCBrZXlDb2RlKCkgZG9lcyB0aGF0LgorICAgIGludCBtYXBLZXkgPSBtb2RpZmllcnMgPDwg
MTYgfCBldmVudC5uYXRpdmVWaXJ0dWFsS2V5Q29kZSgpOworICAgIGlmIChtYXBLZXkpIHsKKyAg
ICAgICAgSGFzaE1hcDxpbnQsIGNvbnN0IGNoYXIqPiogY29tbWFuZE1hcCA9IGV2ZW50LnR5cGUo
KSA9PSBXZWJFdmVudDo6S2V5RG93biA/CisgICAgICAgICAgICAma2V5RG93bkNvbW1hbmRzTWFw
IDogJmtleVByZXNzQ29tbWFuZHNNYXA7CisgICAgICAgIGlmIChjb25zdCBjaGFyKiBjb21tYW5k
U3RyaW5nID0gY29tbWFuZE1hcC0+Z2V0KG1hcEtleSkpCisgICAgICAgICAgICBtX3BlbmRpbmdF
ZGl0b3JDb21tYW5kcy0+YXBwZW5kKGNvbW1hbmRTdHJpbmcpOworICAgIH0KK30KKwogYm9vbCBX
ZWJWaWV3Ojppc0FjdGl2ZSgpCiB7CiAgICAgcmV0dXJuIG1faXNQYWdlQWN0aXZlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJWaWV3LmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlZpZXcuaAppbmRleCAyNTZkYzA0Li43NTI5Y2Q1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlZpZXcuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlZpZXcuaApAQCAtMzAsNiArMzAsNyBAQAogCiAj
aW5jbHVkZSAiUGFnZUNsaWVudC5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgorI2luY2x1
ZGUgIldpbmRvd3NLZXlib2FyZENvZGVzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRTaXplLmg+
CiAjaW5jbHVkZSA8Z2RrL2dkay5oPgogI2luY2x1ZGUgPGdsaWIuaD4KQEAgLTY0LDYgKzY1LDkg
QEAgcHVibGljOgogICAgIHZvaWQgaGFuZGxlV2hlZWxFdmVudChHZGtFdmVudFNjcm9sbCopOwog
ICAgIHZvaWQgaGFuZGxlTW91c2VFdmVudChHZGtFdmVudCosIGludCk7CiAKKyAgICAvLyBLZXli
b2FyZCBldmVudHMgaGFuZGxpbmcuCisgICAgdm9pZCBhZGRQZW5kaW5nRWRpdG9yQ29tbWFuZChj
b25zdCBjaGFyKiBjb21tYW5kKSB7IG1fcGVuZGluZ0VkaXRvckNvbW1hbmRzLT5hcHBlbmQoV1RG
OjpTdHJpbmcoY29tbWFuZCkpOyB9CisKIHByaXZhdGU6CiAgICAgV2ViVmlldyhXZWJDb250ZXh0
KiwgV2ViUGFnZUdyb3VwKik7CiAKQEAgLTEwMCw2ICsxMDQsNyBAQCBwcml2YXRlOgogICAgIHZp
cnR1YWwgdm9pZCBzZXRGaW5kSW5kaWNhdG9yKFBhc3NSZWZQdHI8RmluZEluZGljYXRvcj4sIGJv
b2wgZmFkZU91dCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZVNjcm9sbGJhcnNGb3JNYWlu
RnJhbWUoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgZmxhc2hCYWNraW5nU3RvcmVVcGRhdGVz
KGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYgdXBkYXRlUmVjdHMpOworICAgIHZpcnR1
YWwgdm9pZCBnZW5lcmF0ZUVkaXRvckNvbW1hbmRzKGNvbnN0IE5hdGl2ZVdlYktleWJvYXJkRXZl
bnQmLCBWZWN0b3I8V1RGOjpTdHJpbmc+Jik7CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9T
SVRJTkcpCiAgICAgdmlydHVhbCB2b2lkIHBhZ2VEaWRFbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRp
bmcoKTsKQEAgLTExNSw2ICsxMjAsOCBAQCBwcml2YXRlOgogICAgIEd0a1dpZGdldCogbV92aWV3
V2lkZ2V0OwogICAgIGJvb2wgbV9pc1BhZ2VBY3RpdmU7CiAgICAgUmVmUHRyPFdlYlBhZ2VQcm94
eT4gbV9wYWdlOworICAgIFZlY3RvcjxXVEY6OlN0cmluZz4qIG1fcGVuZGluZ0VkaXRvckNvbW1h
bmRzOworICAgIEdSZWZQdHI8R3RrV2lkZ2V0PiBtX25hdGl2ZVdpZGdldDsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCmluZGV4IGI5NTQyODMuLjZh
NGYwYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKQEAgLTI4Myw3ICsyODMsNyBAQCB2b2lk
IFdlYkVkaXRvckNsaWVudDo6cmVkbygpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotI2lm
ICFQTEFURk9STShNQUMpCisjaWYgIVBMQVRGT1JNKEdUSykgJiYgIVBMQVRGT1JNKE1BQykKIHZv
aWQgV2ViRWRpdG9yQ2xpZW50OjpoYW5kbGVLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZlbnQqIGV2
ZW50KQogewogICAgIGlmIChtX3BhZ2UtPmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50KGV2ZW50
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5oCmluZGV4IGZhODQyNmEuLmNkMTdiNGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuaApAQCAtMTIzLDYgKzEyMywxMSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9p
ZCB0b2dnbGVBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb24oKTsKICNlbmRpZgogCisjaWYgUExB
VEZPUk0oR1RLKQorICAgIGJvb2wgZXhlY3V0ZVBlbmRpbmdFZGl0b3JDb21tYW5kcyhXZWJDb3Jl
OjpGcmFtZSosIFZlY3RvcjxXVEY6OlN0cmluZz4sIGJvb2wpOworICAgIHZvaWQgZ2VuZXJhdGVF
ZGl0b3JDb21tYW5kcyhjb25zdCBXZWJDb3JlOjpLZXlib2FyZEV2ZW50KiwgVmVjdG9yPFdURjo6
U3RyaW5nPiYpOworI2VuZGlmCisKICAgICBUZXh0Q2hlY2tlckNsaWVudCogdGV4dENoZWNrZXIo
KSB7IHJldHVybiB0aGlzOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgaWdub3JlV29yZEluU3BlbGxE
b2N1bWVudChjb25zdCBTdHJpbmcmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkVkaXRvckNsaWVudEd0ay5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJFZGl0b3JDbGllbnRHdGsu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY1ZDkwYzgKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9X
ZWJFZGl0b3JDbGllbnRHdGsuY3BwCkBAIC0wLDAgKzEsMTMzIEBACisvKgorICogIENvcHlyaWdo
dCAoQykgMjAxMSBJZ2FsaWEgUy5MLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiAg
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJz
aW9uIDIgb2YKKyAqICB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExl
c3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQ
dWJsaWMKKyAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRl
IHRvIHRoZSBGcmVlCisgKiAgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkVkaXRvckNsaWVudC5oIgorCisj
aW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUtleWJvYXJkRXZlbnQuaCIKKyNp
bmNsdWRlICJXZWJQYWdlLmgiCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKKyNp
bmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9LZXlib2FyZEV2ZW50Lmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgorCit1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50Ojpn
ZW5lcmF0ZUVkaXRvckNvbW1hbmRzKGNvbnN0IEtleWJvYXJkRXZlbnQqIGV2ZW50LCBWZWN0b3I8
V1RGOjpTdHJpbmc+JiBwZW5kaW5nRWRpdG9yQ29tbWFuZHMpCit7CisgICAgQVNTRVJUKGV2ZW50
LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmtleWRvd25FdmVudCB8fCBldmVudC0+dHlwZSgpID09
IGV2ZW50TmFtZXMoKS5rZXlwcmVzc0V2ZW50KTsKKworICAgIC8vIEZpcnN0IHRyeSB0byBpbnRl
cnByZXQgdGhlIGNvbW1hbmQgaW4gdGhlIFVJIGFuZCBnZXQgdGhlIGNvbW1hbmRzLi4KKyAgICBp
ZiAoIVdlYlByb2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6R2VuZXJhdGVFZGl0b3JDb21tYW5kcygpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpHZW5lcmF0ZUVkaXRvckNvbW1hbmRzOjpSZXBseShwZW5kaW5nRWRpdG9yQ29tbWFuZHMp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
X3BhZ2UtPnBhZ2VJRCgpLCBDb3JlSVBDOjpDb25uZWN0aW9uOjpOb1RpbWVvdXQpKQorICAgICAg
ICByZXR1cm47Cit9CisKK2Jvb2wgV2ViRWRpdG9yQ2xpZW50OjpleGVjdXRlUGVuZGluZ0VkaXRv
ckNvbW1hbmRzKEZyYW1lKiBmcmFtZSwgVmVjdG9yPFdURjo6U3RyaW5nPiBwZW5kaW5nRWRpdG9y
Q29tbWFuZHMsIGJvb2wgYWxsb3dUZXh0SW5zZXJ0aW9uKQoreworICAgIFZlY3RvcjxFZGl0b3I6
OkNvbW1hbmQ+IGNvbW1hbmRzOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcGVuZGluZ0Vk
aXRvckNvbW1hbmRzLnNpemUoKTsgaSsrKSB7CisgICAgICAgIEVkaXRvcjo6Q29tbWFuZCBjb21t
YW5kID0gZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKHBlbmRpbmdFZGl0b3JDb21tYW5kcy5hdChp
KS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgaWYgKGNvbW1hbmQuaXNUZXh0SW5zZXJ0aW9uKCkg
JiYgIWFsbG93VGV4dEluc2VydGlvbikKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
ICAgICBjb21tYW5kcy5hcHBlbmQoY29tbWFuZCk7CisgICAgfQorCisgICAgYm9vbCBzdWNjZXNz
ID0gdHJ1ZTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvbW1hbmRzLnNpemUoKTsgaSsr
KSB7CisgICAgICAgIGlmICghY29tbWFuZHMuYXQoaSkuZXhlY3V0ZSgpKSB7CisgICAgICAgICAg
ICBzdWNjZXNzID0gZmFsc2U7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0K
KworICAgIHJldHVybiBzdWNjZXNzOworfQorCit2b2lkIFdlYkVkaXRvckNsaWVudDo6aGFuZGxl
S2V5Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50KiBldmVudCkKK3sKKyAgICBOb2RlKiBub2RlID0g
ZXZlbnQtPnRhcmdldCgpLT50b05vZGUoKTsKKyAgICBBU1NFUlQobm9kZSk7CisgICAgRnJhbWUq
IGZyYW1lID0gbm9kZS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKTsKKyAgICBBU1NFUlQoZnJhbWUpOwor
CisgICAgY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50KiBwbGF0Zm9ybUV2ZW50ID0gZXZlbnQt
PmtleUV2ZW50KCk7CisgICAgaWYgKCFwbGF0Zm9ybUV2ZW50KQorICAgICAgICByZXR1cm47CisK
KyAgICBWZWN0b3I8V1RGOjpTdHJpbmc+IHBlbmRpbmdFZGl0b3JDb21tYW5kczsKKyAgICBnZW5l
cmF0ZUVkaXRvckNvbW1hbmRzKGV2ZW50LCBwZW5kaW5nRWRpdG9yQ29tbWFuZHMpOworICAgIGlm
IChwZW5kaW5nRWRpdG9yQ29tbWFuZHMuc2l6ZSgpID4gMCkgeworCisgICAgICAgIC8vIER1cmlu
ZyBSYXdLZXlEb3duIGV2ZW50cyBpZiBhbiBlZGl0b3IgY29tbWFuZCB3aWxsIGluc2VydCB0ZXh0
LCBkZWZlcgorICAgICAgICAvLyB0aGUgaW5zZXJ0aW9uIHVudGlsIHRoZSBrZXlwcmVzcyBldmVu
dC4gV2Ugd2FudCBrZXlkb3duIHRvIGJ1YmJsZSB1cAorICAgICAgICAvLyB0aHJvdWdoIHRoZSBE
T00gZmlyc3QuCisgICAgICAgIGlmIChwbGF0Zm9ybUV2ZW50LT50eXBlKCkgPT0gUGxhdGZvcm1L
ZXlib2FyZEV2ZW50OjpSYXdLZXlEb3duKSB7CisgICAgICAgICAgICBpZiAoZXhlY3V0ZVBlbmRp
bmdFZGl0b3JDb21tYW5kcyhmcmFtZSwgcGVuZGluZ0VkaXRvckNvbW1hbmRzLCBmYWxzZSkpCisg
ICAgICAgICAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CisKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIC8vIE9ubHkgYWxsb3cgdGV4dCBpbnNlcnRp
b24gY29tbWFuZHMgaWYgdGhlIGN1cnJlbnQgbm9kZSBpcyBlZGl0YWJsZS4KKyAgICAgICAgaWYg
KGV4ZWN1dGVQZW5kaW5nRWRpdG9yQ29tbWFuZHMoZnJhbWUsIHBlbmRpbmdFZGl0b3JDb21tYW5k
cywgZnJhbWUtPmVkaXRvcigpLT5jYW5FZGl0KCkpKSB7CisgICAgICAgICAgICBldmVudC0+c2V0
RGVmYXVsdEhhbmRsZWQoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0K
KworICAgIC8vIERvbid0IGFsbG93IHRleHQgaW5zZXJ0aW9uIGZvciBub2RlcyB0aGF0IGNhbm5v
dCBlZGl0LgorICAgIGlmICghZnJhbWUtPmVkaXRvcigpLT5jYW5FZGl0KCkpCisgICAgICAgIHJl
dHVybjsKKworICAgIC8vIFRoaXMgaXMganVzdCBhIG5vcm1hbCB0ZXh0IGluc2VydGlvbiwgc28g
d2FpdCB0byBleGVjdXRlIHRoZSBpbnNlcnRpb24KKyAgICAvLyB1bnRpbCBhIGtleXByZXNzIGV2
ZW50IGhhcHBlbnMuIFRoaXMgd2lsbCBlbnN1cmUgdGhhdCB0aGUgaW5zZXJ0aW9uIHdpbGwgbm90
CisgICAgLy8gYmUgcmVmbGVjdGVkIGluIHRoZSBjb250ZW50cyBvZiB0aGUgZmllbGQgdW50aWwg
dGhlIGtleXVwIERPTSBldmVudC4KKyAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVz
KCkua2V5cHJlc3NFdmVudCkgeworCisgICAgICAgIC8vIEZJWE1FOiBBZGQgSU0gc3VwcG9ydAor
ICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTU5NDYK
KyAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5pbnNlcnRUZXh0KHBsYXRmb3JtRXZlbnQtPnRleHQo
KSwgZXZlbnQpOworICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKKworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgLy8gRG9uJ3QgaW5zZXJ0IG51bGwgb3IgY29udHJvbCBj
aGFyYWN0ZXJzIGFzIHRoZXkgY2FuIHJlc3VsdCBpbiB1bmV4cGVjdGVkIGJlaGF2aW91cgorICAg
ICAgICAgICAgaWYgKGV2ZW50LT5jaGFyQ29kZSgpIDwgJyAnKQorICAgICAgICAgICAgICAgIHJl
dHVybjsKKworICAgICAgICAgICAgLy8gRG9uJ3QgaW5zZXJ0IGFueXRoaW5nIGlmIGEgbW9kaWZp
ZXIgaXMgcHJlc3NlZAorICAgICAgICAgICAgaWYgKHBsYXRmb3JtRXZlbnQtPmN0cmxLZXkoKSB8
fCBwbGF0Zm9ybUV2ZW50LT5hbHRLZXkoKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgICAgIGlmIChmcmFtZS0+ZWRpdG9yKCktPmluc2VydFRleHQocGxhdGZvcm1FdmVudC0+
dGV4dCgpLCBldmVudCkpCisgICAgICAgICAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVk
KCk7CisgICAgICAgIH0KKyAgICB9CisKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpoYW5kbGVJbnB1
dE1ldGhvZEtleWRvd24oS2V5Ym9hcmRFdmVudCopCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
K30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
CmluZGV4IGZmNTY3YmQuLmJmMWM1M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTEzODksNyArMTM4OSw3IEBAIFdlYkluc3BlY3Rvciog
V2ViUGFnZTo6aW5zcGVjdG9yKCkKIH0KICNlbmRpZgogCi0jaWYgIVBMQVRGT1JNKE1BQykKKyNp
ZiAhUExBVEZPUk0oR1RLKSAmJiAhUExBVEZPUk0oTUFDKQogYm9vbCBXZWJQYWdlOjpoYW5kbGVF
ZGl0aW5nS2V5Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50KiBldnQpCiB7CiAgICAgTm9kZSogbm9k
ZSA9IGV2dC0+dGFyZ2V0KCktPnRvTm9kZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggOGNlNjQwNS4uMWZlN2JjNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0xNDgsNyArMTQ4LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgbGF5b3V0SWZOZWVkZWQoKTsKIAogICAgIC8vIC0tIENhbGxlZCBmcm9t
IFdlYkNvcmUgY2xpZW50cy4KLSNpZiAhUExBVEZPUk0oTUFDKQorI2lmICFQTEFURk9STShHVEsp
ICYmICFQTEFURk9STShNQUMpCiAgICAgYm9vbCBoYW5kbGVFZGl0aW5nS2V5Ym9hcmRFdmVudChX
ZWJDb3JlOjpLZXlib2FyZEV2ZW50Kik7CiAjZW5kaWYKICAgICB2b2lkIHNob3coKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUGFnZUd0ay5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlBhZ2VHdGsuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhiZjllOWIKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlBhZ2VHdGsu
Y3BwCkBAIC0wLDAgKzEsMTI2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMjAxMCBN
b3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMSBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiV2ViUGFnZS5oIgorCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNs
dWRlICJXZWJFdmVudC5oIgorI2luY2x1ZGUgIldpbmRvd3NLZXlib2FyZENvZGVzLmgiCisjaW5j
bHVkZSA8V2ViQ29yZS9Gb2N1c0NvbnRyb2xsZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1l
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9LZXlib2FyZEV2ZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9QYWdlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybUtleWJvYXJkRXZlbnQuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL1NldHRpbmdzLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwor
CituYW1lc3BhY2UgV2ViS2l0IHsKKwordm9pZCBXZWJQYWdlOjpwbGF0Zm9ybUluaXRpYWxpemUo
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgV2ViUGFnZTo6cGxhdGZvcm1Q
cmVmZXJlbmNlc0RpZENoYW5nZShjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJikKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgc2Nyb2xsKFBhZ2UqIHBh
Z2UsIFNjcm9sbERpcmVjdGlvbiBkaXJlY3Rpb24sIFNjcm9sbEdyYW51bGFyaXR5IGdyYW51bGFy
aXR5KQoreworICAgIHBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUo
KS0+ZXZlbnRIYW5kbGVyKCktPnNjcm9sbFJlY3Vyc2l2ZWx5KGRpcmVjdGlvbiwgZ3JhbnVsYXJp
dHkpOworfQorCitib29sIFdlYlBhZ2U6OnBlcmZvcm1EZWZhdWx0QmVoYXZpb3JGb3JLZXlFdmVu
dChjb25zdCBXZWJLZXlib2FyZEV2ZW50JiBrZXlib2FyZEV2ZW50KQoreworICAgIGlmIChrZXli
b2FyZEV2ZW50LnR5cGUoKSAhPSBXZWJFdmVudDo6S2V5RG93biAmJiBrZXlib2FyZEV2ZW50LnR5
cGUoKSAhPSBXZWJFdmVudDo6UmF3S2V5RG93bikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgc3dpdGNoIChrZXlib2FyZEV2ZW50LndpbmRvd3NWaXJ0dWFsS2V5Q29kZSgpKSB7CisgICAg
Y2FzZSBWS19CQUNLOgorICAgICAgICBpZiAoa2V5Ym9hcmRFdmVudC5zaGlmdEtleSgpKQorICAg
ICAgICAgICAgbV9wYWdlLT5nb0ZvcndhcmQoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
bV9wYWdlLT5nb0JhY2soKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBWS19TUEFDRToKKyAg
ICAgICAgc2Nyb2xsKG1fcGFnZS5nZXQoKSwga2V5Ym9hcmRFdmVudC5zaGlmdEtleSgpID8gU2Ny
b2xsVXAgOiBTY3JvbGxEb3duLCBTY3JvbGxCeVBhZ2UpOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIFZLX0xFRlQ6CisgICAgICAgIHNjcm9sbChtX3BhZ2UuZ2V0KCksIFNjcm9sbExlZnQsIFNj
cm9sbEJ5TGluZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVktfUklHSFQ6CisgICAgICAg
IHNjcm9sbChtX3BhZ2UuZ2V0KCksIFNjcm9sbFJpZ2h0LCBTY3JvbGxCeUxpbmUpOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIFZLX1VQOgorICAgICAgICBzY3JvbGwobV9wYWdlLmdldCgpLCBT
Y3JvbGxVcCwgU2Nyb2xsQnlMaW5lKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBWS19ET1dO
OgorICAgICAgICBzY3JvbGwobV9wYWdlLmdldCgpLCBTY3JvbGxEb3duLCBTY3JvbGxCeUxpbmUp
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIFZLX0hPTUU6CisgICAgICAgIHNjcm9sbChtX3Bh
Z2UuZ2V0KCksIFNjcm9sbFVwLCBTY3JvbGxCeURvY3VtZW50KTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBWS19FTkQ6CisgICAgICAgIHNjcm9sbChtX3BhZ2UuZ2V0KCksIFNjcm9sbERvd24s
IFNjcm9sbEJ5RG9jdW1lbnQpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFZLX1BSSU9SOgor
ICAgICAgICBzY3JvbGwobV9wYWdlLmdldCgpLCBTY3JvbGxVcCwgU2Nyb2xsQnlQYWdlKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBWS19ORVhUOgorICAgICAgICBzY3JvbGwobV9wYWdlLmdl
dCgpLCBTY3JvbGxEb3duLCBTY3JvbGxCeVBhZ2UpOworICAgICAgICBicmVhazsKKyAgICBkZWZh
dWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9
CisKK2Jvb2wgV2ViUGFnZTo6cGxhdGZvcm1IYXNMb2NhbERhdGFGb3JVUkwoY29uc3QgV2ViQ29y
ZTo6S1VSTCYpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudAorICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitTdHJpbmcgV2ViUGFnZTo6Y2FjaGVkUmVzcG9u
c2VNSU1FVHlwZUZvclVSTChjb25zdCBXZWJDb3JlOjpLVVJMJikKK3sKKyAgICAvLyBGSVhNRTog
SW1wbGVtZW50CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitib29sIFdlYlBhZ2U6OmNhbkhh
bmRsZVJlcXVlc3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JikKK3sKKyAgICAvLyBG
SVhNRTogSW1wbGVtZW50CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cg==
</data>
<flag name="review"
          id="77131"
          type_id="1"
          status="-"
          setter="mrobinson"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>86284</attachid>
            <date>2011-03-20 13:30:25 -0700</date>
            <delta_ts>2011-03-25 06:11:15 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>webpage.patch</filename>
            <type>text/plain</type>
            <size>35139</size>
            <attacher name="Alejandro G. Castro">alex</attacher>
            
              <data encoding="base64">Y29tbWl0IGNiNmNiYTg4ZGQ1MGExMTljZDNiYTAyMDE0N2U0NGYzOGExYzIzOGIKQXV0aG9yOiBB
bGVqYW5kcm8gRy4gQ2FzdHJvIDxhbGV4QGlnYWxpYS5jb20+CkRhdGU6ICAgRnJpIEphbiAyMSAx
MjoyNDowNSAyMDExICswMTAwCgogICAgMjAxMS0wMi0xMCAgQW1ydXRoIFJhaiAgPGFtcnV0aHJh
akBtb3Rvcm9sYS5jb20+IGFuZCBSYXZpIFBoYW5lZW5kcmEgS2FzaWJoYXRsYSAgPHJhdmkua2Fz
aWJoYXRsYUBtb3Rvcm9sYS5jb20+IGFuZCBBbGVqYW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2Fs
aWEuY29tPgogICAgCiAgICAgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgogICAg
CiAgICAgICAgICAgIFtHVEtdIEltcGxlbWVudCBXZWJQYWdlIGNsYXNzIGZvciBXZWJLaXQyCiAg
ICAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NDIzMAog
ICAgCiAgICAgICAgICAgIEFkZGVkIGZ1bmN0aW9ucyB0byBoYW5kbGUgdGhlIGdlbmVyYXRpb24g
b2YgY29tbWFuZHMgZnJvbSB0aGUKICAgICAgICAgICAga2V5Y29kZXMuCiAgICAKICAgICAgICAg
ICAgKiBHTlVtYWtlZmlsZS5hbToKICAgICAgICAgICAgKiBTY3JpcHRzL3dlYmtpdDIvbWVzc2Fn
ZXMucHk6CiAgICAgICAgICAgICogVUlQcm9jZXNzL1BhZ2VDbGllbnQuaDoKICAgICAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CiAgICAgICAgICAgICogVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5tZXNzYWdlcy5pbjoKICAgICAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL1dlYlBhZ2VQ
cm94eUd0ay5jcHA6CiAgICAgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0RWRpdG9y
Q29tbWFuZHNGb3JLZXlFdmVudCk6CiAgICAgICAgICAgICogVUlQcm9jZXNzL2d0ay9XZWJWaWV3
LmNwcDoKICAgICAgICAgICAgKFdlYktpdDo6YmFja3NwYWNlQ2FsbGJhY2spOgogICAgICAgICAg
ICAoV2ViS2l0OjpzZWxlY3RBbGxDYWxsYmFjayk6CiAgICAgICAgICAgIChXZWJLaXQ6OmN1dENs
aXBib2FyZENhbGxiYWNrKToKICAgICAgICAgICAgKFdlYktpdDo6Y29weUNsaXBib2FyZENhbGxi
YWNrKToKICAgICAgICAgICAgKFdlYktpdDo6cGFzdGVDbGlwYm9hcmRDYWxsYmFjayk6CiAgICAg
ICAgICAgIChXZWJLaXQ6OnRvZ2dsZU92ZXJ3cml0ZUNhbGxiYWNrKToKICAgICAgICAgICAgKFdl
YktpdDo6cG9wdXBNZW51Q2FsbGJhY2spOgogICAgICAgICAgICAoV2ViS2l0OjpzaG93SGVscENh
bGxiYWNrKToKICAgICAgICAgICAgKFdlYktpdDo6ZGVsZXRlRnJvbUN1cnNvckNhbGxiYWNrKToK
ICAgICAgICAgICAgKFdlYktpdDo6bW92ZUN1cnNvckNhbGxiYWNrKToKICAgICAgICAgICAgKFdl
YktpdDo6V2ViVmlldzo6V2ViVmlldyk6CiAgICAgICAgICAgIChXZWJLaXQ6OldlYlZpZXc6Omdl
dEVkaXRvckNvbW1hbmRzRm9yS2V5RXZlbnQpOgogICAgICAgICAgICAqIFVJUHJvY2Vzcy9ndGsv
V2ViVmlldy5oOgogICAgICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjphZGRQZW5kaW5nRWRpdG9y
Q29tbWFuZCk6CiAgICAgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuY3BwOgogICAgICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RWRpdG9yQ2xpZW50Lmg6CiAgICAgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9n
dGsvV2ViRWRpdG9yQ2xpZW50R3RrLmNwcDogQWRkZWQuCiAgICAgICAgICAgIChXZWJLaXQ6Oldl
YkVkaXRvckNsaWVudDo6Z2V0RWRpdG9yQ29tbWFuZHNGb3JLZXlFdmVudCk6CiAgICAgICAgICAg
IChXZWJLaXQ6OldlYkVkaXRvckNsaWVudDo6ZXhlY3V0ZVBlbmRpbmdFZGl0b3JDb21tYW5kcyk6
CiAgICAgICAgICAgIChXZWJLaXQ6OldlYkVkaXRvckNsaWVudDo6aGFuZGxlS2V5Ym9hcmRFdmVu
dCk6CiAgICAgICAgICAgIChXZWJLaXQ6OldlYkVkaXRvckNsaWVudDo6aGFuZGxlSW5wdXRNZXRo
b2RLZXlkb3duKToKICAgICAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6
CiAgICAgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKICAgICAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlBhZ2VHdGsuY3BwOiBBZGRlZC4KICAgICAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6cGxhdGZvcm1Jbml0aWFsaXplKToKICAgICAgICAgICAgKFdl
YktpdDo6V2ViUGFnZTo6cGxhdGZvcm1QcmVmZXJlbmNlc0RpZENoYW5nZSk6CiAgICAgICAgICAg
IChXZWJLaXQ6OnNjcm9sbCk6CiAgICAgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBlcmZvcm1E
ZWZhdWx0QmVoYXZpb3JGb3JLZXlFdmVudCk6CiAgICAgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OnBsYXRmb3JtSGFzTG9jYWxEYXRhRm9yVVJMKToKICAgICAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZTo6Y2FjaGVkUmVzcG9uc2VNSU1FVHlwZUZvclVSTCk6CiAgICAgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OnBsYXRmb3JtQ2FuSGFuZGxlUmVxdWVzdCk6CgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDg1NDBlYzUu
LjYzMzcwYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MyBAQAorMjAxMS0wMi0xMCAgQW1ydXRo
IFJhaiAgPGFtcnV0aHJhakBtb3Rvcm9sYS5jb20+IGFuZCBSYXZpIFBoYW5lZW5kcmEgS2FzaWJo
YXRsYSAgPHJhdmkua2FzaWJoYXRsYUBtb3Rvcm9sYS5jb20+IGFuZCBBbGVqYW5kcm8gRy4gQ2Fz
dHJvICA8YWxleEBpZ2FsaWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFtHVEtdIEltcGxlbWVudCBXZWJQYWdlIGNsYXNzIGZvciBXZWJLaXQy
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NDIzMAor
CisgICAgICAgIEFkZGVkIGZ1bmN0aW9ucyB0byBoYW5kbGUgdGhlIGdlbmVyYXRpb24gb2YgY29t
bWFuZHMgZnJvbSB0aGUKKyAgICAgICAga2V5Y29kZXMuCisKKyAgICAgICAgKiBHTlVtYWtlZmls
ZS5hbToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdDIvbWVzc2FnZXMucHk6CisgICAgICAgICog
VUlQcm9jZXNzL1BhZ2VDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvZ3RrL1dlYlBhZ2VQcm94eUd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6Z2V0RWRpdG9yQ29tbWFuZHNGb3JLZXlFdmVudCk6CisgICAgICAgICog
VUlQcm9jZXNzL2d0ay9XZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6YmFja3NwYWNlQ2Fs
bGJhY2spOgorICAgICAgICAoV2ViS2l0OjpzZWxlY3RBbGxDYWxsYmFjayk6CisgICAgICAgIChX
ZWJLaXQ6OmN1dENsaXBib2FyZENhbGxiYWNrKToKKyAgICAgICAgKFdlYktpdDo6Y29weUNsaXBi
b2FyZENhbGxiYWNrKToKKyAgICAgICAgKFdlYktpdDo6cGFzdGVDbGlwYm9hcmRDYWxsYmFjayk6
CisgICAgICAgIChXZWJLaXQ6OnRvZ2dsZU92ZXJ3cml0ZUNhbGxiYWNrKToKKyAgICAgICAgKFdl
YktpdDo6cG9wdXBNZW51Q2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0OjpzaG93SGVscENhbGxi
YWNrKToKKyAgICAgICAgKFdlYktpdDo6ZGVsZXRlRnJvbUN1cnNvckNhbGxiYWNrKToKKyAgICAg
ICAgKFdlYktpdDo6bW92ZUN1cnNvckNhbGxiYWNrKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmll
dzo6V2ViVmlldyk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXc6OmdldEVkaXRvckNvbW1hbmRz
Rm9yS2V5RXZlbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvV2ViVmlldy5oOgorICAgICAg
ICAoV2ViS2l0OjpXZWJWaWV3OjphZGRQZW5kaW5nRWRpdG9yQ29tbWFuZCk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRWRpdG9yQ2xpZW50R3RrLmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkVkaXRvckNsaWVudDo6Z2V0RWRpdG9yQ29tbWFuZHNG
b3JLZXlFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYkVkaXRvckNsaWVudDo6ZXhlY3V0ZVBl
bmRpbmdFZGl0b3JDb21tYW5kcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkVkaXRvckNsaWVudDo6
aGFuZGxlS2V5Ym9hcmRFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYkVkaXRvckNsaWVudDo6
aGFuZGxlSW5wdXRNZXRob2RLZXlkb3duKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlBhZ2VHdGsuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cGxhdGZvcm1Jbml0aWFsaXplKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZTo6cGxhdGZvcm1QcmVmZXJlbmNlc0RpZENoYW5nZSk6CisgICAgICAgIChX
ZWJLaXQ6OnNjcm9sbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBlcmZvcm1EZWZhdWx0
QmVoYXZpb3JGb3JLZXlFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBsYXRmb3Jt
SGFzTG9jYWxEYXRhRm9yVVJMKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y2FjaGVkUmVz
cG9uc2VNSU1FVHlwZUZvclVSTCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBsYXRmb3Jt
Q2FuSGFuZGxlUmVxdWVzdCk6CisKIDIwMTEtMDMtMTkgIEFudG9uIEQnQXVyaWEgIDxhZGF1cmlh
QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbGV4ZXkgUHJvc2t1cnlha292Lgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvV2ViS2l0
Mi9HTlVtYWtlZmlsZS5hbQppbmRleCAyZGYwNDBiLi4wMjk4OTZjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmls
ZS5hbQpAQCAtNjAxLDYgKzYwMSw3IEBAIGxpYldlYktpdDJfbGFfU09VUkNFUyA9IFwKIAlTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Jlc291cmNlQ2FjaGUvV2ViUmVzb3VyY2VDYWNoZU1hbmFn
ZXIuaCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9SZXNvdXJjZUNhY2hlL1dlYlJlc291
cmNlQ2FjaGVNYW5hZ2VyLmNwcCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9ndGsvV2ViQ29udGV4dE1lbnVDbGllbnRHdGsuY3BwIFwKKwlTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJFZGl0b3JDbGllbnRHdGsuY3BwIFwK
IAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJFcnJvcnNH
dGsuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9X
ZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmggXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvZ3RrL1dlYlBvcHVwTWVudUd0ay5jcHAgXApAQCAtNjQxLDYgKzY0Miw3
IEBAIGxpYldlYktpdDJfbGFfU09VUkNFUyA9IFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuaCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL2d0ay9DaHVua2VkVXBkYXRlRHJhd2luZ0FyZWFHdGsuY3BwIFwKIAlTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYkluc3BlY3Rvckd0ay5jcHAgXAorCVNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUGFnZUd0ay5jcHAgXAogCVNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9QYWdlT3ZlcmxheS5jcHAgXAogCVNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9QYWdlT3ZlcmxheS5oIFwKIAlTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVGlsZWREcmF3aW5nQXJlYS5jcHAgXApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvU2NyaXB0cy93ZWJraXQyL21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktp
dDIvU2NyaXB0cy93ZWJraXQyL21lc3NhZ2VzLnB5CmluZGV4IDE1OWNhMzIuLjliYmM5NzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NjcmlwdHMvd2Via2l0Mi9tZXNzYWdlcy5weQorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9TY3JpcHRzL3dlYmtpdDIvbWVzc2FnZXMucHkKQEAgLTI1NCw2ICsy
NTQsNyBAQCBkZWYgbWVzc2FnZV90b19zdHJ1Y3RfZGVjbGFyYXRpb24obWVzc2FnZSk6CiAKIGRl
ZiBzdHJ1Y3Rfb3JfY2xhc3MobmFtZXNwYWNlLCB0eXBlKToKICAgICBzdHJ1Y3RzID0gZnJvemVu
c2V0KFsKKyAgICAgICAgJ1dlYkNvcmU6OkVkaXRvckNvbW1hbmRzRm9yS2V5RXZlbnQnLAogICAg
ICAgICAnV2ViQ29yZTo6Q29tcG9zaXRpb25VbmRlcmxpbmUnLAogICAgICAgICAnV2ViQ29yZTo6
R3JhbW1hckRldGFpbCcsCiAgICAgICAgICdXZWJDb3JlOjpLZXlwcmVzc0NvbW1hbmQnLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKaW5kZXggMTBiZDA3OC4uNjc2MTEyZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCkBAIC0xMDYsNiArMTA2LDkgQEAgcHVi
bGljOgogI2lmIFBMQVRGT1JNKFdJTikKICAgICB2aXJ0dWFsIHZvaWQgY29tcG9zaXRpb25TZWxl
Y3Rpb25DaGFuZ2VkKGJvb2wpID0gMDsKICNlbmRpZgorI2lmIFBMQVRGT1JNKEdUSykKKyAgICB2
aXJ0dWFsIHZvaWQgZ2V0RWRpdG9yQ29tbWFuZHNGb3JLZXlFdmVudChjb25zdCBOYXRpdmVXZWJL
ZXlib2FyZEV2ZW50JiwgVmVjdG9yPFdURjo6U3RyaW5nPiYpID0gMDsKKyNlbmRpZgogICAgIHZp
cnR1YWwgV2ViQ29yZTo6RmxvYXRSZWN0IGNvbnZlcnRUb0RldmljZVNwYWNlKGNvbnN0IFdlYkNv
cmU6OkZsb2F0UmVjdCYpID0gMDsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkZsb2F0UmVjdCBjb252
ZXJ0VG9Vc2VyU3BhY2UoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JikgPSAwOwogICAgIHZpcnR1
YWwgV2ViQ29yZTo6SW50UmVjdCB3aW5kb3dUb1NjcmVlbihjb25zdCBXZWJDb3JlOjpJbnRSZWN0
JikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDg1NDAw
ZjUuLjQ3YzcyYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAg
LTU3NSw3ICs1NzUsMTAgQEAgcHJpdmF0ZToKICNpZiBQTEFURk9STShNQUMpCiAgICAgdm9pZCBp
bnRlcnByZXRLZXlFdmVudCh1aW50MzJfdCBldmVudFR5cGUsIFZlY3RvcjxXZWJDb3JlOjpLZXlw
cmVzc0NvbW1hbmQ+JiwgdWludDMyX3Qgc2VsZWN0aW9uU3RhcnQsIHVpbnQzMl90IHNlbGVjdGlv
bkVuZCwgVmVjdG9yPFdlYkNvcmU6OkNvbXBvc2l0aW9uVW5kZXJsaW5lPiYgdW5kZXJsaW5lcyk7
CiAjZW5kaWYKLSAgICAKKyNpZiBQTEFURk9STShHVEspCisgICAgdm9pZCBnZXRFZGl0b3JDb21t
YW5kc0ZvcktleUV2ZW50KFZlY3RvcjxXVEY6OlN0cmluZz4mKTsKKyNlbmRpZgorCiAgICAgLy8g
RmluZC4KICAgICB2b2lkIGRpZENvdW50U3RyaW5nTWF0Y2hlcyhjb25zdCBTdHJpbmcmLCB1aW50
MzJfdCBtYXRjaENvdW50KTsKICAgICB2b2lkIHNldEZpbmRJbmRpY2F0b3IoY29uc3QgV2ViQ29y
ZTo6RmxvYXRSZWN0JiBzZWxlY3Rpb25SZWN0SW5XaW5kb3dDb29yZGluYXRlcywgY29uc3QgVmVj
dG9yPFdlYkNvcmU6OkZsb2F0UmVjdD4mIHRleHRSZWN0c0luU2VsZWN0aW9uUmVjdENvb3JkaW5h
dGVzLCBjb25zdCBTaGFyZWRNZW1vcnk6OkhhbmRsZSYgY29udGVudEltYWdlSGFuZGxlLCBib29s
IGZhZGVPdXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
bWVzc2FnZXMuaW4KaW5kZXggYzgxMmFlMS4uYTgxMDBiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0xMzYsNyArMTM2LDEy
IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgIyBSZW1vdGUgYWNjZXNzaWJpbGl0
eSBtZXNzYWdlcwogICAgIFJlZ2lzdGVyV2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbihDb3Jl
SVBDOjpEYXRhUmVmZXJlbmNlIGRhdGEpCiAjZW5kaWYKLSAgICAKKworI2lmIFBMQVRGT1JNKEdU
SykKKyAgICAjIFN1cHBvcnQgZm9yIEdUSysgcGxhdGZvcm0ga2V5YmluZGluZ3MKKyAgICBHZXRF
ZGl0b3JDb21tYW5kc0ZvcktleUV2ZW50KCkgLT4gKFZlY3RvcjxXVEY6OlN0cmluZz4gY29tbWFu
ZHNMaXN0KQorI2VuZGlmCisKICAgICAjIEJhY2tGb3J3YXJkIG1lc3NhZ2VzCiAgICAgQmFja0Zv
cndhcmRBZGRJdGVtKHVpbnQ2NF90IGl0ZW1JRCkKICAgICBCYWNrRm9yd2FyZEdvVG9JdGVtKHVp
bnQ2NF90IGl0ZW1JRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsv
V2ViUGFnZVByb3h5R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViUGFn
ZVByb3h5R3RrLmNwcAppbmRleCA4MzhkZTk3Li44YWQwOGFkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlBhZ2VQcm94eUd0ay5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2d0ay9XZWJQYWdlUHJveHlHdGsuY3BwCkBAIC0yNyw2ICsyNyw5IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCiAKKyNpbmNs
dWRlICJOYXRpdmVXZWJLZXlib2FyZEV2ZW50LmgiCisjaW5jbHVkZSAiUGFnZUNsaWVudC5oIgor
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogU3RyaW5nIFdlYlBhZ2VQcm94eTo6c3RhbmRhcmRVc2Vy
QWdlbnQoY29uc3QgU3RyaW5nJiBhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQpCkBAIC0zNSw0
ICszOCw5IEBAIFN0cmluZyBXZWJQYWdlUHJveHk6OnN0YW5kYXJkVXNlckFnZW50KGNvbnN0IFN0
cmluZyYgYXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50CiAgICAgcmV0dXJuICJNb3ppbGxhLzUu
MCAoWDExOyBMaW51eCBpNjg2KSBBcHBsZVdlYktpdC81MzQuNyAoS0hUTUwsIGxpa2UgR2Vja28p
IFZlcnNpb24vNS4wIFNhZmFyaS81MzQuNyI7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5OjpnZXRF
ZGl0b3JDb21tYW5kc0ZvcktleUV2ZW50KFZlY3RvcjxXVEY6OlN0cmluZz4mIGNvbW1hbmRzTGlz
dCkKK3sKKyAgICBtX3BhZ2VDbGllbnQtPmdldEVkaXRvckNvbW1hbmRzRm9yS2V5RXZlbnQobV9r
ZXlFdmVudFF1ZXVlLmZpcnN0KCksIGNvbW1hbmRzTGlzdCk7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJWaWV3
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViVmlldy5jcHAKaW5kZXggMmZm
NjdjZC4uODIzYzMwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9X
ZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlZpZXcuY3Bw
CkBAIC01OSw4ICs1OSwxODUgQEAgdm9pZCBXZWJWaWV3OjpoYW5kbGVGb2N1c091dEV2ZW50KEd0
a1dpZGdldCogd2lkZ2V0KQogICAgIG1fcGFnZS0+dmlld1N0YXRlRGlkQ2hhbmdlKFdlYlBhZ2VQ
cm94eTo6Vmlld1dpbmRvd0lzQWN0aXZlKTsKIH0KIAorCitzdGF0aWMgdm9pZCBiYWNrc3BhY2VD
YWxsYmFjayhHdGtXaWRnZXQqIHdpZGdldCwgV2ViVmlldyogY2xpZW50KQoreworICAgIGdfc2ln
bmFsX3N0b3BfZW1pc3Npb25fYnlfbmFtZSh3aWRnZXQsICJiYWNrc3BhY2UiKTsKKyAgICBjbGll
bnQtPmFkZFBlbmRpbmdFZGl0b3JDb21tYW5kKCJEZWxldGVCYWNrd2FyZCIpOworfQorCitzdGF0
aWMgdm9pZCBzZWxlY3RBbGxDYWxsYmFjayhHdGtXaWRnZXQqIHdpZGdldCwgZ2Jvb2xlYW4gc2Vs
ZWN0LCBXZWJWaWV3KiBjbGllbnQpCit7CisgICAgZ19zaWduYWxfc3RvcF9lbWlzc2lvbl9ieV9u
YW1lKHdpZGdldCwgInNlbGVjdC1hbGwiKTsKKyAgICBjbGllbnQtPmFkZFBlbmRpbmdFZGl0b3JD
b21tYW5kKHNlbGVjdCA/ICJTZWxlY3RBbGwiIDogIlVuc2VsZWN0Iik7Cit9CisKK3N0YXRpYyB2
b2lkIGN1dENsaXBib2FyZENhbGxiYWNrKEd0a1dpZGdldCogd2lkZ2V0LCBXZWJWaWV3KiBjbGll
bnQpCit7CisgICAgZ19zaWduYWxfc3RvcF9lbWlzc2lvbl9ieV9uYW1lKHdpZGdldCwgImN1dC1j
bGlwYm9hcmQiKTsKKyAgICBjbGllbnQtPmFkZFBlbmRpbmdFZGl0b3JDb21tYW5kKCJDdXQiKTsK
K30KKworc3RhdGljIHZvaWQgY29weUNsaXBib2FyZENhbGxiYWNrKEd0a1dpZGdldCogd2lkZ2V0
LCBXZWJWaWV3KiBjbGllbnQpCit7CisgICAgZ19zaWduYWxfc3RvcF9lbWlzc2lvbl9ieV9uYW1l
KHdpZGdldCwgImNvcHktY2xpcGJvYXJkIik7CisgICAgY2xpZW50LT5hZGRQZW5kaW5nRWRpdG9y
Q29tbWFuZCgiQ29weSIpOworfQorCitzdGF0aWMgdm9pZCBwYXN0ZUNsaXBib2FyZENhbGxiYWNr
KEd0a1dpZGdldCogd2lkZ2V0LCBXZWJWaWV3KiBjbGllbnQpCit7CisgICAgZ19zaWduYWxfc3Rv
cF9lbWlzc2lvbl9ieV9uYW1lKHdpZGdldCwgInBhc3RlLWNsaXBib2FyZCIpOworICAgIGNsaWVu
dC0+YWRkUGVuZGluZ0VkaXRvckNvbW1hbmQoIlBhc3RlIik7Cit9CisKK3N0YXRpYyB2b2lkIHRv
Z2dsZU92ZXJ3cml0ZUNhbGxiYWNrKEd0a1dpZGdldCogd2lkZ2V0LCBFZGl0b3JDbGllbnQqKQor
eworICAgIC8vIFdlIGRvbid0IHN1cHBvcnQgdG9nZ2xpbmcgdGhlIG92ZXJ3cml0ZSBtb2RlLCBi
dXQgdGhlIGRlZmF1bHQgY2FsbGJhY2sgZXhwZWN0cworICAgIC8vIHRoZSBHdGtUZXh0VmlldyB0
byBoYXZlIGEgbGF5b3V0LCBzbyB3ZSBoYW5kbGUgdGhpcyBzaWduYWwganVzdCB0byBzdG9wIGl0
LgorICAgIGdfc2lnbmFsX3N0b3BfZW1pc3Npb25fYnlfbmFtZSh3aWRnZXQsICJ0b2dnbGUtb3Zl
cndyaXRlIik7Cit9CisKKy8vIEdUSysgd2lsbCBzdGlsbCBzZW5kIHRoZXNlIHNpZ25hbHMgdG8g
dGhlIHdlYiB2aWV3LiBTbyB3ZSBjYW4gc2FmZWx5IHN0b3Agc2lnbmFsCisvLyBlbWlzc2lvbiB3
aXRob3V0IGJyZWFraW5nIGFjY2Vzc2liaWxpdHkuCitzdGF0aWMgdm9pZCBwb3B1cE1lbnVDYWxs
YmFjayhHdGtXaWRnZXQqIHdpZGdldCwgRWRpdG9yQ2xpZW50KikKK3sKKyAgICBnX3NpZ25hbF9z
dG9wX2VtaXNzaW9uX2J5X25hbWUod2lkZ2V0LCAicG9wdXAtbWVudSIpOworfQorCitzdGF0aWMg
dm9pZCBzaG93SGVscENhbGxiYWNrKEd0a1dpZGdldCogd2lkZ2V0LCBFZGl0b3JDbGllbnQqKQor
eworICAgIGdfc2lnbmFsX3N0b3BfZW1pc3Npb25fYnlfbmFtZSh3aWRnZXQsICJzaG93LWhlbHAi
KTsKK30KKworc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IGd0a0RlbGV0ZUNvbW1hbmRzW11bMl0g
PSB7CisgICAgeyAiRGVsZXRlQmFja3dhcmQiLCAgICAgICAgICAgICAgICJEZWxldGVGb3J3YXJk
IiAgICAgICAgICAgICAgICAgICAgICAgIH0sIC8vIENoYXJhY3RlcnMKKyAgICB7ICJEZWxldGVX
b3JkQmFja3dhcmQiLCAgICAgICAgICAgIkRlbGV0ZVdvcmRGb3J3YXJkIiAgICAgICAgICAgICAg
ICAgICAgfSwgLy8gV29yZCBlbmRzCisgICAgeyAiRGVsZXRlV29yZEJhY2t3YXJkIiwgICAgICAg
ICAgICJEZWxldGVXb3JkRm9yd2FyZCIgICAgICAgICAgICAgICAgICAgIH0sIC8vIFdvcmRzCisg
ICAgeyAiRGVsZXRlVG9CZWdpbm5pbmdPZkxpbmUiLCAgICAgICJEZWxldGVUb0VuZE9mTGluZSIg
ICAgICAgICAgICAgICAgICAgIH0sIC8vIExpbmVzCisgICAgeyAiRGVsZXRlVG9CZWdpbm5pbmdP
ZkxpbmUiLCAgICAgICJEZWxldGVUb0VuZE9mTGluZSIgICAgICAgICAgICAgICAgICAgIH0sIC8v
IExpbmUgZW5kcworICAgIHsgIkRlbGV0ZVRvQmVnaW5uaW5nT2ZQYXJhZ3JhcGgiLCAiRGVsZXRl
VG9FbmRPZlBhcmFncmFwaCIgICAgICAgICAgICAgICB9LCAvLyBQYXJhZ3JhcGggZW5kcworICAg
IHsgIkRlbGV0ZVRvQmVnaW5uaW5nT2ZQYXJhZ3JhcGgiLCAiRGVsZXRlVG9FbmRPZlBhcmFncmFw
aCIgICAgICAgICAgICAgICB9LCAvLyBQYXJhZ3JhcGhzCisgICAgeyAwLCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0g
Ly8gV2hpdGVzcGFjZSAoTS1cIGluIEVtYWNzKQorfTsKKworc3RhdGljIHZvaWQgZGVsZXRlRnJv
bUN1cnNvckNhbGxiYWNrKEd0a1dpZGdldCogd2lkZ2V0LCBHdGtEZWxldGVUeXBlIGRlbGV0ZVR5
cGUsIGdpbnQgY291bnQsIFdlYlZpZXcqIGNsaWVudCkKK3sKKyAgICBnX3NpZ25hbF9zdG9wX2Vt
aXNzaW9uX2J5X25hbWUod2lkZ2V0LCAiZGVsZXRlLWZyb20tY3Vyc29yIik7CisgICAgaW50IGRp
cmVjdGlvbiA9IGNvdW50ID4gMCA/IDEgOiAwOworCisgICAgLy8gRW5zdXJpbmcgdGhhdCBkZWxl
dGVUeXBlIDw9IEdfTl9FTEVNRU5UUyBoZXJlIHJlc3VsdHMgaW4gYSBjb21waWxlciB3YXJuaW5n
CisgICAgLy8gdGhhdCB0aGUgY29uZGl0aW9uIGlzIGFsd2F5cyB0cnVlLgorCisgICAgaWYgKGRl
bGV0ZVR5cGUgPT0gR1RLX0RFTEVURV9XT1JEUykgeworICAgICAgICBpZiAoIWRpcmVjdGlvbikg
eworICAgICAgICAgICAgY2xpZW50LT5hZGRQZW5kaW5nRWRpdG9yQ29tbWFuZCgiTW92ZVdvcmRG
b3J3YXJkIik7CisgICAgICAgICAgICBjbGllbnQtPmFkZFBlbmRpbmdFZGl0b3JDb21tYW5kKCJN
b3ZlV29yZEJhY2t3YXJkIik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBjbGllbnQt
PmFkZFBlbmRpbmdFZGl0b3JDb21tYW5kKCJNb3ZlV29yZEJhY2t3YXJkIik7CisgICAgICAgICAg
ICBjbGllbnQtPmFkZFBlbmRpbmdFZGl0b3JDb21tYW5kKCJNb3ZlV29yZEZvcndhcmQiKTsKKyAg
ICAgICAgfQorICAgIH0gZWxzZSBpZiAoZGVsZXRlVHlwZSA9PSBHVEtfREVMRVRFX0RJU1BMQVlf
TElORVMpIHsKKyAgICAgICAgaWYgKCFkaXJlY3Rpb24pCisgICAgICAgICAgICBjbGllbnQtPmFk
ZFBlbmRpbmdFZGl0b3JDb21tYW5kKCJNb3ZlVG9CZWdpbm5pbmdPZkxpbmUiKTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgY2xpZW50LT5hZGRQZW5kaW5nRWRpdG9yQ29tbWFuZCgiTW92ZVRv
RW5kT2ZMaW5lIik7CisgICAgfSBlbHNlIGlmIChkZWxldGVUeXBlID09IEdUS19ERUxFVEVfUEFS
QUdSQVBIUykgeworICAgICAgICBpZiAoIWRpcmVjdGlvbikKKyAgICAgICAgICAgIGNsaWVudC0+
YWRkUGVuZGluZ0VkaXRvckNvbW1hbmQoIk1vdmVUb0JlZ2lubmluZ09mUGFyYWdyYXBoIik7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNsaWVudC0+YWRkUGVuZGluZ0VkaXRvckNvbW1hbmQo
Ik1vdmVUb0VuZE9mUGFyYWdyYXBoIik7CisgICAgfQorCisgICAgY29uc3QgY2hhciogcmF3Q29t
bWFuZCA9IGd0a0RlbGV0ZUNvbW1hbmRzW2RlbGV0ZVR5cGVdW2RpcmVjdGlvbl07CisgICAgaWYg
KCFyYXdDb21tYW5kKQorICAgICAgcmV0dXJuOworCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBh
YnMoY291bnQpOyBpKyspCisgICAgICAgIGNsaWVudC0+YWRkUGVuZGluZ0VkaXRvckNvbW1hbmQo
cmF3Q29tbWFuZCk7Cit9CisKK3N0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBndGtNb3ZlQ29tbWFu
ZHNbXVs0XSA9IHsKKyAgICB7ICJNb3ZlQmFja3dhcmQiLCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIk1vdmVGb3J3YXJkIiwKKyAgICAgICJNb3ZlQmFja3dhcmRBbmRNb2RpZnlT
ZWxlY3Rpb24iLCAgICAgICAgICAgICAgICAgIk1vdmVGb3J3YXJkQW5kTW9kaWZ5U2VsZWN0aW9u
IiAgICAgICAgICAgICB9LCAvLyBGb3J3YXJkL2JhY2t3YXJkIGdyYXBoZW1lCisgICAgeyAiTW92
ZUxlZnQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNb3ZlUmlnaHQi
LAorICAgICAgIk1vdmVCYWNrd2FyZEFuZE1vZGlmeVNlbGVjdGlvbiIsICAgICAgICAgICAgICAg
ICAiTW92ZUZvcndhcmRBbmRNb2RpZnlTZWxlY3Rpb24iICAgICAgICAgICAgIH0sIC8vIExlZnQv
cmlnaHQgZ3JhcGhlbWUKKyAgICB7ICJNb3ZlV29yZEJhY2t3YXJkIiwgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIk1vdmVXb3JkRm9yd2FyZCIsCisgICAgICAiTW92ZVdvcmRCYWNrd2Fy
ZEFuZE1vZGlmeVNlbGVjdGlvbiIsICAgICAgICAgICAgICJNb3ZlV29yZEZvcndhcmRBbmRNb2Rp
ZnlTZWxlY3Rpb24iICAgICAgICAgfSwgLy8gRm9yd2FyZC9iYWNrd2FyZCB3b3JkCisgICAgeyAi
TW92ZVVwIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNb3ZlRG93
biIsCisgICAgICAiTW92ZVVwQW5kTW9kaWZ5U2VsZWN0aW9uIiwgICAgICAgICAgICAgICAgICAg
ICAgICJNb3ZlRG93bkFuZE1vZGlmeVNlbGVjdGlvbiIgICAgICAgICAgICAgICAgfSwgLy8gVXAv
ZG93biBsaW5lCisgICAgeyAiTW92ZVRvQmVnaW5uaW5nT2ZMaW5lIiwgICAgICAgICAgICAgICAg
ICAgICAgICAgICJNb3ZlVG9FbmRPZkxpbmUiLAorICAgICAgIk1vdmVUb0JlZ2lubmluZ09mTGlu
ZUFuZE1vZGlmeVNlbGVjdGlvbiIsICAgICAgICAiTW92ZVRvRW5kT2ZMaW5lQW5kTW9kaWZ5U2Vs
ZWN0aW9uIiAgICAgICAgIH0sIC8vIFVwL2Rvd24gbGluZSBlbmRzCisgICAgeyAiTW92ZVBhcmFn
cmFwaEZvcndhcmQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICJNb3ZlUGFyYWdyYXBoQmFj
a3dhcmQiLAorICAgICAgIk1vdmVQYXJhZ3JhcGhGb3J3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uIiwg
ICAgICAgICAiTW92ZVBhcmFncmFwaEJhY2t3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uIiAgIH0sIC8v
IFVwL2Rvd24gcGFyYWdyYXBocworICAgIHsgIk1vdmVUb0JlZ2lubmluZ09mUGFyYWdyYXBoIiwg
ICAgICAgICAgICAgICAgICAgICAiTW92ZVRvRW5kT2ZQYXJhZ3JhcGgiLAorICAgICAgIk1vdmVU
b0JlZ2lubmluZ09mUGFyYWdyYXBoQW5kTW9kaWZ5U2VsZWN0aW9uIiwgICAiTW92ZVRvRW5kT2ZQ
YXJhZ3JhcGhBbmRNb2RpZnlTZWxlY3Rpb24iICAgIH0sIC8vIFVwL2Rvd24gcGFyYWdyYXBoIGVu
ZHMuCisgICAgeyAiTW92ZVBhZ2VVcCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJNb3ZlUGFnZURvd24iLAorICAgICAgIk1vdmVQYWdlVXBBbmRNb2RpZnlTZWxlY3Rpb24i
LCAgICAgICAgICAgICAgICAgICAiTW92ZVBhZ2VEb3duQW5kTW9kaWZ5U2VsZWN0aW9uIiAgICAg
ICAgICAgIH0sIC8vIFVwL2Rvd24gcGFnZQorICAgIHsgIk1vdmVUb0JlZ2lubmluZ09mRG9jdW1l
bnQiLCAgICAgICAgICAgICAgICAgICAgICAiTW92ZVRvRW5kT2ZEb2N1bWVudCIsCisgICAgICAi
TW92ZVRvQmVnaW5uaW5nT2ZEb2N1bWVudEFuZE1vZGlmeVNlbGVjdGlvbiIsICAgICJNb3ZlVG9F
bmRPZkRvY3VtZW50QW5kTW9kaWZ5U2VsZWN0aW9uIiAgICAgfSwgLy8gQmVnaW4vZW5kIG9mIGJ1
ZmZlcgorICAgIHsgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAwLAorICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gLy8g
SG9yaXpvbnRhbCBwYWdlIG1vdmVtZW50Cit9OworCitzdGF0aWMgdm9pZCBtb3ZlQ3Vyc29yQ2Fs
bGJhY2soR3RrV2lkZ2V0KiB3aWRnZXQsIEd0a01vdmVtZW50U3RlcCBzdGVwLCBnaW50IGNvdW50
LCBnYm9vbGVhbiBleHRlbmRTZWxlY3Rpb24sIFdlYlZpZXcqIGNsaWVudCkKK3sKKyAgICBnX3Np
Z25hbF9zdG9wX2VtaXNzaW9uX2J5X25hbWUod2lkZ2V0LCAibW92ZS1jdXJzb3IiKTsKKyAgICBp
bnQgZGlyZWN0aW9uID0gY291bnQgPiAwID8gMSA6IDA7CisgICAgaWYgKGV4dGVuZFNlbGVjdGlv
bikKKyAgICAgICAgZGlyZWN0aW9uICs9IDI7CisKKyAgICBpZiAoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KHN0ZXApID49IEdfTl9FTEVNRU5UUyhndGtNb3ZlQ29tbWFuZHMpKQorICAgICAgICByZXR1
cm47CisKKyAgICBjb25zdCBjaGFyKiByYXdDb21tYW5kID0gZ3RrTW92ZUNvbW1hbmRzW3N0ZXBd
W2RpcmVjdGlvbl07CisgICAgaWYgKCFyYXdDb21tYW5kKQorICAgICAgICByZXR1cm47CisKKyAg
ICBmb3IgKGludCBpID0gMDsgaSA8IGFicyhjb3VudCk7IGkrKykKKyAgICAgICAgY2xpZW50LT5h
ZGRQZW5kaW5nRWRpdG9yQ29tbWFuZChyYXdDb21tYW5kKTsKK30KKworc3RhdGljIGNvbnN0IHVu
c2lnbmVkIEN0cmxLZXkgPSAxIDw8IDA7CitzdGF0aWMgY29uc3QgdW5zaWduZWQgQWx0S2V5ID0g
MSA8PCAxOworc3RhdGljIGNvbnN0IHVuc2lnbmVkIFNoaWZ0S2V5ID0gMSA8PCAyOworCitzdHJ1
Y3QgS2V5RG93bkVudHJ5IHsKKyAgICB1bnNpZ25lZCB2aXJ0dWFsS2V5OworICAgIHVuc2lnbmVk
IG1vZGlmaWVyczsKKyAgICBjb25zdCBjaGFyKiBuYW1lOworfTsKKworc3RydWN0IEtleVByZXNz
RW50cnkgeworICAgIHVuc2lnbmVkIGNoYXJDb2RlOworICAgIHVuc2lnbmVkIG1vZGlmaWVyczsK
KyAgICBjb25zdCBjaGFyKiBuYW1lOworfTsKKworc3RhdGljIGNvbnN0IEtleURvd25FbnRyeSBr
ZXlEb3duRW50cmllc1tdID0geworICAgIHsgJ0InLCAgICAgICBDdHJsS2V5LCAgICAgICAgICAg
ICJUb2dnbGVCb2xkIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgIHsg
J0knLCAgICAgICBDdHJsS2V5LCAgICAgICAgICAgICJUb2dnbGVJdGFsaWMiICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9LAorICAgIHsgVktfRVNDQVBFLCAwLCAgICAgICAgICAgICAg
ICAgICJDYW5jZWwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAg
IHsgVktfT0VNX1BFUklPRCwgQ3RybEtleSwgICAgICAgICJDYW5jZWwiICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgIHsgVktfVEFCLCAgICAwLCAgICAgICAgICAg
ICAgICAgICJJbnNlcnRUYWIiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAor
ICAgIHsgVktfVEFCLCAgICBTaGlmdEtleSwgICAgICAgICAgICJJbnNlcnRCYWNrdGFiIiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgIHsgVktfUkVUVVJOLCAwLCAgICAgICAg
ICAgICAgICAgICJJbnNlcnROZXdsaW5lIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
LAorICAgIHsgVktfUkVUVVJOLCBDdHJsS2V5LCAgICAgICAgICAgICJJbnNlcnROZXdsaW5lIiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgIHsgVktfUkVUVVJOLCBBbHRLZXks
ICAgICAgICAgICAgICJJbnNlcnROZXdsaW5lIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9LAorICAgIHsgVktfUkVUVVJOLCBBbHRLZXkgfCBTaGlmdEtleSwgICJJbnNlcnROZXdsaW5l
IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorfTsKKworc3RhdGljIGNvbnN0IEtl
eVByZXNzRW50cnkga2V5UHJlc3NFbnRyaWVzW10gPSB7CisgICAgeyAnXHQnLCAgIDAsICAgICAg
ICAgICAgICAgICAgIkluc2VydFRhYiIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0sCisgICAgeyAnXHQnLCAgIFNoaWZ0S2V5LCAgICAgICAgICAgIkluc2VydEJhY2t0YWIiICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgeyAnXHInLCAgIDAsICAgICAgICAg
ICAgICAgICAgIkluc2VydE5ld2xpbmUiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0s
CisgICAgeyAnXHInLCAgIEN0cmxLZXksICAgICAgICAgICAgIkluc2VydE5ld2xpbmUiICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgeyAnXHInLCAgIEFsdEtleSwgICAgICAg
ICAgICAgIkluc2VydE5ld2xpbmUiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisg
ICAgeyAnXHInLCAgIEFsdEtleSB8IFNoaWZ0S2V5LCAgIkluc2VydE5ld2xpbmUiICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIH0sCit9OworCiBXZWJWaWV3OjpXZWJWaWV3KFdlYkNvbnRl
eHQqIGNvbnRleHQsIFdlYlBhZ2VHcm91cCogcGFnZUdyb3VwKQogICAgIDogbV9pc1BhZ2VBY3Rp
dmUodHJ1ZSkKKyAgICAsIG1fbmF0aXZlV2lkZ2V0KGd0a190ZXh0X3ZpZXdfbmV3KCkpCiB7CiAg
ICAgbV9wYWdlID0gY29udGV4dC0+Y3JlYXRlV2ViUGFnZSh0aGlzLCBwYWdlR3JvdXApOwogCkBA
IC03MSw2ICsyNDgsMTcgQEAgV2ViVmlldzo6V2ViVmlldyhXZWJDb250ZXh0KiBjb250ZXh0LCBX
ZWJQYWdlR3JvdXAqIHBhZ2VHcm91cCkKIAogICAgIFdlYlZpZXdXaWRnZXQqIHdlYlZpZXdXaWRn
ZXQgPSBXRUJfVklFV19XSURHRVQobV92aWV3V2lkZ2V0KTsKICAgICB3ZWJWaWV3V2lkZ2V0U2V0
V2ViVmlld0luc3RhbmNlKHdlYlZpZXdXaWRnZXQsIHRoaXMpOworCisgICAgZ19zaWduYWxfY29u
bmVjdChtX25hdGl2ZVdpZGdldC5nZXQoKSwgImJhY2tzcGFjZSIsIEdfQ0FMTEJBQ0soYmFja3Nw
YWNlQ2FsbGJhY2spLCB0aGlzKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KG1fbmF0aXZlV2lkZ2V0
LmdldCgpLCAiY3V0LWNsaXBib2FyZCIsIEdfQ0FMTEJBQ0soY3V0Q2xpcGJvYXJkQ2FsbGJhY2sp
LCB0aGlzKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KG1fbmF0aXZlV2lkZ2V0LmdldCgpLCAiY29w
eS1jbGlwYm9hcmQiLCBHX0NBTExCQUNLKGNvcHlDbGlwYm9hcmRDYWxsYmFjayksIHRoaXMpOwor
ICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9uYXRpdmVXaWRnZXQuZ2V0KCksICJwYXN0ZS1jbGlwYm9h
cmQiLCBHX0NBTExCQUNLKHBhc3RlQ2xpcGJvYXJkQ2FsbGJhY2spLCB0aGlzKTsKKyAgICBnX3Np
Z25hbF9jb25uZWN0KG1fbmF0aXZlV2lkZ2V0LmdldCgpLCAic2VsZWN0LWFsbCIsIEdfQ0FMTEJB
Q0soc2VsZWN0QWxsQ2FsbGJhY2spLCB0aGlzKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KG1fbmF0
aXZlV2lkZ2V0LmdldCgpLCAibW92ZS1jdXJzb3IiLCBHX0NBTExCQUNLKG1vdmVDdXJzb3JDYWxs
YmFjayksIHRoaXMpOworICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9uYXRpdmVXaWRnZXQuZ2V0KCks
ICJkZWxldGUtZnJvbS1jdXJzb3IiLCBHX0NBTExCQUNLKGRlbGV0ZUZyb21DdXJzb3JDYWxsYmFj
ayksIHRoaXMpOworICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9uYXRpdmVXaWRnZXQuZ2V0KCksICJ0
b2dnbGUtb3ZlcndyaXRlIiwgR19DQUxMQkFDSyh0b2dnbGVPdmVyd3JpdGVDYWxsYmFjayksIHRo
aXMpOworICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9uYXRpdmVXaWRnZXQuZ2V0KCksICJwb3B1cC1t
ZW51IiwgR19DQUxMQkFDSyhwb3B1cE1lbnVDYWxsYmFjayksIHRoaXMpOworICAgIGdfc2lnbmFs
X2Nvbm5lY3QobV9uYXRpdmVXaWRnZXQuZ2V0KCksICJzaG93LWhlbHAiLCBHX0NBTExCQUNLKHNo
b3dIZWxwQ2FsbGJhY2spLCB0aGlzKTsKIH0KIAogV2ViVmlldzo6fldlYlZpZXcoKQpAQCAtMTA3
LDYgKzI5NSw0OCBAQCB2b2lkIFdlYlZpZXc6OmhhbmRsZVdoZWVsRXZlbnQoR2RrRXZlbnRTY3Jv
bGwqIGV2ZW50KQogICAgIG1fcGFnZS0+aGFuZGxlV2hlZWxFdmVudChXZWJFdmVudEZhY3Rvcnk6
OmNyZWF0ZVdlYldoZWVsRXZlbnQoZXZlbnQpKTsKIH0KIAordm9pZCBXZWJWaWV3OjpnZXRFZGl0
b3JDb21tYW5kc0ZvcktleUV2ZW50KGNvbnN0IE5hdGl2ZVdlYktleWJvYXJkRXZlbnQmIGV2ZW50
LCBWZWN0b3I8V1RGOjpTdHJpbmc+JiBjb21tYW5kc0xpc3QpCit7CisgICAgbV9wZW5kaW5nRWRp
dG9yQ29tbWFuZHMgPSAmY29tbWFuZHNMaXN0OworCisjaWZkZWYgR1RLX0FQSV9WRVJTSU9OXzIK
KyAgICBndGtfYmluZGluZ3NfYWN0aXZhdGVfZXZlbnQoR1RLX09CSkVDVChtX25hdGl2ZVdpZGdl
dC5nZXQoKSksIHJlaW50ZXJwcmV0X2Nhc3Q8R2RrRXZlbnRLZXkqPihjb25zdF9jYXN0PEdka0V2
ZW50Kj4oZXZlbnQubmF0aXZlRXZlbnQoKSkpKTsKKyNlbHNlCisgICAgZ3RrX2JpbmRpbmdzX2Fj
dGl2YXRlX2V2ZW50KEdfT0JKRUNUKG1fbmF0aXZlV2lkZ2V0LmdldCgpKSwgcmVpbnRlcnByZXRf
Y2FzdDxHZGtFdmVudEtleSo+KGNvbnN0X2Nhc3Q8R2RrRXZlbnQqPihldmVudC5uYXRpdmVFdmVu
dCgpKSkpOworI2VuZGlmCisKKyAgICBpZiAobV9wZW5kaW5nRWRpdG9yQ29tbWFuZHMtPnNpemUo
KSA+IDApCisgICAgICAgIHJldHVybjsKKworICAgIHN0YXRpYyBIYXNoTWFwPGludCwgY29uc3Qg
Y2hhcio+IGtleURvd25Db21tYW5kc01hcDsKKyAgICBzdGF0aWMgSGFzaE1hcDxpbnQsIGNvbnN0
IGNoYXIqPiBrZXlQcmVzc0NvbW1hbmRzTWFwOworCisgICAgaWYgKGtleURvd25Db21tYW5kc01h
cC5pc0VtcHR5KCkpIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEdfTl9FTEVN
RU5UUyhrZXlEb3duRW50cmllcyk7IGkrKykKKyAgICAgICAgICAgIGtleURvd25Db21tYW5kc01h
cC5zZXQoa2V5RG93bkVudHJpZXNbaV0ubW9kaWZpZXJzIDw8IDE2IHwga2V5RG93bkVudHJpZXNb
aV0udmlydHVhbEtleSwga2V5RG93bkVudHJpZXNbaV0ubmFtZSk7CisKKyAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IEdfTl9FTEVNRU5UUyhrZXlQcmVzc0VudHJpZXMpOyBpKyspCisg
ICAgICAgICAgICBrZXlQcmVzc0NvbW1hbmRzTWFwLnNldChrZXlQcmVzc0VudHJpZXNbaV0ubW9k
aWZpZXJzIDw8IDE2IHwga2V5UHJlc3NFbnRyaWVzW2ldLmNoYXJDb2RlLCBrZXlQcmVzc0VudHJp
ZXNbaV0ubmFtZSk7CisgICAgfQorCisgICAgdW5zaWduZWQgbW9kaWZpZXJzID0gMDsKKyAgICBp
ZiAoZXZlbnQuc2hpZnRLZXkoKSkKKyAgICAgICAgbW9kaWZpZXJzIHw9IFNoaWZ0S2V5OworICAg
IGlmIChldmVudC5hbHRLZXkoKSkKKyAgICAgICAgbW9kaWZpZXJzIHw9IEFsdEtleTsKKyAgICBp
ZiAoZXZlbnQuY29udHJvbEtleSgpKQorICAgICAgICBtb2RpZmllcnMgfD0gQ3RybEtleTsKKwor
ICAgIC8vIEZvciBrZXlwcmVzcyBldmVudHMsIHdlIHdhbnQgY2hhckNvZGUoKSwgYnV0IGtleUNv
ZGUoKSBkb2VzIHRoYXQuCisgICAgaW50IG1hcEtleSA9IG1vZGlmaWVycyA8PCAxNiB8IGV2ZW50
Lm5hdGl2ZVZpcnR1YWxLZXlDb2RlKCk7CisgICAgaWYgKG1hcEtleSkgeworICAgICAgICBIYXNo
TWFwPGludCwgY29uc3QgY2hhcio+KiBjb21tYW5kTWFwID0gZXZlbnQudHlwZSgpID09IFdlYkV2
ZW50OjpLZXlEb3duID8KKyAgICAgICAgICAgICZrZXlEb3duQ29tbWFuZHNNYXAgOiAma2V5UHJl
c3NDb21tYW5kc01hcDsKKyAgICAgICAgaWYgKGNvbnN0IGNoYXIqIGNvbW1hbmRTdHJpbmcgPSBj
b21tYW5kTWFwLT5nZXQobWFwS2V5KSkKKyAgICAgICAgICAgIG1fcGVuZGluZ0VkaXRvckNvbW1h
bmRzLT5hcHBlbmQoY29tbWFuZFN0cmluZyk7CisgICAgfQorfQorCiBib29sIFdlYlZpZXc6Omlz
QWN0aXZlKCkKIHsKICAgICByZXR1cm4gbV9pc1BhZ2VBY3RpdmU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9ndGsvV2ViVmlldy5oCmluZGV4IGMyMGFiNjAuLmFiZGQ3ZmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9ndGsvV2ViVmlldy5oCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJQ
YWdlQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCisjaW5jbHVkZSAiV2luZG93
c0tleWJvYXJkQ29kZXMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ludFNpemUuaD4KICNpbmNsdWRl
IDxnZGsvZ2RrLmg+CiAjaW5jbHVkZSA8Z2xpYi5oPgpAQCAtNjQsNiArNjUsOSBAQCBwdWJsaWM6
CiAgICAgdm9pZCBoYW5kbGVXaGVlbEV2ZW50KEdka0V2ZW50U2Nyb2xsKik7CiAgICAgdm9pZCBo
YW5kbGVNb3VzZUV2ZW50KEdka0V2ZW50KiwgaW50KTsKIAorICAgIC8vIEtleWJvYXJkIGV2ZW50
cyBoYW5kbGluZy4KKyAgICB2b2lkIGFkZFBlbmRpbmdFZGl0b3JDb21tYW5kKGNvbnN0IGNoYXIq
IGNvbW1hbmQpIHsgbV9wZW5kaW5nRWRpdG9yQ29tbWFuZHMtPmFwcGVuZChXVEY6OlN0cmluZyhj
b21tYW5kKSk7IH0KKwogcHJpdmF0ZToKICAgICBXZWJWaWV3KFdlYkNvbnRleHQqLCBXZWJQYWdl
R3JvdXAqKTsKIApAQCAtMTAyLDYgKzEwNiw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lk
IHNldEZpbmRJbmRpY2F0b3IoUGFzc1JlZlB0cjxGaW5kSW5kaWNhdG9yPiwgYm9vbCBmYWRlT3V0
KTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlU2Nyb2xsYmFyc0Zvck1haW5GcmFtZSgpIGNv
bnN0OwogICAgIHZpcnR1YWwgdm9pZCBmbGFzaEJhY2tpbmdTdG9yZVVwZGF0ZXMoY29uc3QgVmVj
dG9yPFdlYkNvcmU6OkludFJlY3Q+JiB1cGRhdGVSZWN0cyk7CisgICAgdmlydHVhbCB2b2lkIGdl
dEVkaXRvckNvbW1hbmRzRm9yS2V5RXZlbnQoY29uc3QgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudCYs
IFZlY3RvcjxXVEY6OlN0cmluZz4mKTsKIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElO
RykKICAgICB2aXJ0dWFsIHZvaWQgcGFnZURpZEVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZygp
OwpAQCAtMTE3LDYgKzEyMiw4IEBAIHByaXZhdGU6CiAgICAgR3RrV2lkZ2V0KiBtX3ZpZXdXaWRn
ZXQ7CiAgICAgYm9vbCBtX2lzUGFnZUFjdGl2ZTsKICAgICBSZWZQdHI8V2ViUGFnZVByb3h5PiBt
X3BhZ2U7CisgICAgVmVjdG9yPFdURjo6U3RyaW5nPiogbV9wZW5kaW5nRWRpdG9yQ29tbWFuZHM7
CisgICAgR1JlZlB0cjxHdGtXaWRnZXQ+IG1fbmF0aXZlV2lkZ2V0OwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKaW5kZXggYjk1NDI4My4uNmE0ZjBh
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcApAQCAtMjgzLDcgKzI4Myw3IEBAIHZvaWQgV2Vi
RWRpdG9yQ2xpZW50OjpyZWRvKCkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi0jaWYgIVBM
QVRGT1JNKE1BQykKKyNpZiAhUExBVEZPUk0oR1RLKSAmJiAhUExBVEZPUk0oTUFDKQogdm9pZCBX
ZWJFZGl0b3JDbGllbnQ6OmhhbmRsZUtleWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVudCogZXZlbnQp
CiB7CiAgICAgaWYgKG1fcGFnZS0+aGFuZGxlRWRpdGluZ0tleWJvYXJkRXZlbnQoZXZlbnQpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50LmgKaW5kZXggZmE4NDI2YS4uNWM5MzI1MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5oCkBAIC0xMjMsNiArMTIzLDExIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHRv
Z2dsZUF1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbigpOwogI2VuZGlmCiAKKyNpZiBQTEFURk9S
TShHVEspCisgICAgYm9vbCBleGVjdXRlUGVuZGluZ0VkaXRvckNvbW1hbmRzKFdlYkNvcmU6OkZy
YW1lKiwgVmVjdG9yPFdURjo6U3RyaW5nPiwgYm9vbCk7CisgICAgdm9pZCBnZXRFZGl0b3JDb21t
YW5kc0ZvcktleUV2ZW50KGNvbnN0IFdlYkNvcmU6OktleWJvYXJkRXZlbnQqLCBWZWN0b3I8V1RG
OjpTdHJpbmc+Jik7CisjZW5kaWYKKwogICAgIFRleHRDaGVja2VyQ2xpZW50KiB0ZXh0Q2hlY2tl
cigpIHsgcmV0dXJuIHRoaXM7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBpZ25vcmVXb3JkSW5TcGVs
bERvY3VtZW50KGNvbnN0IFN0cmluZyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRWRpdG9yQ2xpZW50R3RrLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkVkaXRvckNsaWVudEd0
ay5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGE4M2NmYQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3Rr
L1dlYkVkaXRvckNsaWVudEd0ay5jcHAKQEAgLTAsMCArMSwxMzAgQEAKKy8qCisgKiAgQ29weXJp
Z2h0IChDKSAyMDExIElnYWxpYSBTLkwuCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAq
ICBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZl
cnNpb24gMiBvZgorICogIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAg
TGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAg
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFs
IFB1YmxpYworICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3Jp
dGUgdG8gdGhlIEZyZWUKKyAqICBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViRWRpdG9yQ2xpZW50LmgiCisK
KyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIlBsYXRmb3JtS2V5Ym9hcmRFdmVudC5oIgor
I2luY2x1ZGUgIldlYlBhZ2UuaCIKKyNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgor
I2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0tleWJvYXJkRXZlbnQu
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CisKK3VzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKwordm9pZCBXZWJFZGl0b3JDbGllbnQ6
OmdldEVkaXRvckNvbW1hbmRzRm9yS2V5RXZlbnQoY29uc3QgS2V5Ym9hcmRFdmVudCogZXZlbnQs
IFZlY3RvcjxXVEY6OlN0cmluZz4mIHBlbmRpbmdFZGl0b3JDb21tYW5kcykKK3sKKyAgICBBU1NF
UlQoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkua2V5ZG93bkV2ZW50IHx8IGV2ZW50LT50
eXBlKCkgPT0gZXZlbnROYW1lcygpLmtleXByZXNzRXZlbnQpOworCisgICAgLy8gRmlyc3QgdHJ5
IHRvIGludGVycHJldCB0aGUgY29tbWFuZCBpbiB0aGUgVUkgYW5kIGdldCB0aGUgY29tbWFuZHMu
CisgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuY29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpHZXRFZGl0b3JDb21tYW5kc0ZvcktleUV2ZW50KCksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpHZXRFZGl0b3JDb21tYW5kc0ZvcktleUV2ZW50OjpSZXBseShwZW5kaW5nRWRpdG9y
Q29tbWFuZHMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbV9wYWdlLT5wYWdlSUQoKSwgQ29yZUlQQzo6Q29ubmVjdGlvbjo6Tm9UaW1lb3V0KTsKK30K
KworYm9vbCBXZWJFZGl0b3JDbGllbnQ6OmV4ZWN1dGVQZW5kaW5nRWRpdG9yQ29tbWFuZHMoRnJh
bWUqIGZyYW1lLCBWZWN0b3I8V1RGOjpTdHJpbmc+IHBlbmRpbmdFZGl0b3JDb21tYW5kcywgYm9v
bCBhbGxvd1RleHRJbnNlcnRpb24pCit7CisgICAgVmVjdG9yPEVkaXRvcjo6Q29tbWFuZD4gY29t
bWFuZHM7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwZW5kaW5nRWRpdG9yQ29tbWFuZHMu
c2l6ZSgpOyBpKyspIHsKKyAgICAgICAgRWRpdG9yOjpDb21tYW5kIGNvbW1hbmQgPSBmcmFtZS0+
ZWRpdG9yKCktPmNvbW1hbmQocGVuZGluZ0VkaXRvckNvbW1hbmRzLmF0KGkpLnV0ZjgoKS5kYXRh
KCkpOworICAgICAgICBpZiAoY29tbWFuZC5pc1RleHRJbnNlcnRpb24oKSAmJiAhYWxsb3dUZXh0
SW5zZXJ0aW9uKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGNvbW1hbmRz
LmFwcGVuZChjb21tYW5kKTsKKyAgICB9CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNv
bW1hbmRzLnNpemUoKTsgaSsrKSB7CisgICAgICAgIGlmICghY29tbWFuZHMuYXQoaSkuZXhlY3V0
ZSgpKSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBXZWJFZGl0b3JDbGllbnQ6OmhhbmRsZUtleWJvYXJk
RXZlbnQoS2V5Ym9hcmRFdmVudCogZXZlbnQpCit7CisgICAgTm9kZSogbm9kZSA9IGV2ZW50LT50
YXJnZXQoKS0+dG9Ob2RlKCk7CisgICAgQVNTRVJUKG5vZGUpOworICAgIEZyYW1lKiBmcmFtZSA9
IG5vZGUtPmRvY3VtZW50KCktPmZyYW1lKCk7CisgICAgQVNTRVJUKGZyYW1lKTsKKworICAgIGNv
bnN0IFBsYXRmb3JtS2V5Ym9hcmRFdmVudCogcGxhdGZvcm1FdmVudCA9IGV2ZW50LT5rZXlFdmVu
dCgpOworICAgIGlmICghcGxhdGZvcm1FdmVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgVmVj
dG9yPFdURjo6U3RyaW5nPiBwZW5kaW5nRWRpdG9yQ29tbWFuZHM7CisgICAgZ2V0RWRpdG9yQ29t
bWFuZHNGb3JLZXlFdmVudChldmVudCwgcGVuZGluZ0VkaXRvckNvbW1hbmRzKTsKKyAgICBpZiAo
cGVuZGluZ0VkaXRvckNvbW1hbmRzLnNpemUoKSA+IDApIHsKKworICAgICAgICAvLyBEdXJpbmcg
UmF3S2V5RG93biBldmVudHMgaWYgYW4gZWRpdG9yIGNvbW1hbmQgd2lsbCBpbnNlcnQgdGV4dCwg
ZGVmZXIKKyAgICAgICAgLy8gdGhlIGluc2VydGlvbiB1bnRpbCB0aGUga2V5cHJlc3MgZXZlbnQu
IFdlIHdhbnQga2V5ZG93biB0byBidWJibGUgdXAKKyAgICAgICAgLy8gdGhyb3VnaCB0aGUgRE9N
IGZpcnN0LgorICAgICAgICBpZiAocGxhdGZvcm1FdmVudC0+dHlwZSgpID09IFBsYXRmb3JtS2V5
Ym9hcmRFdmVudDo6UmF3S2V5RG93bikgeworICAgICAgICAgICAgaWYgKGV4ZWN1dGVQZW5kaW5n
RWRpdG9yQ29tbWFuZHMoZnJhbWUsIHBlbmRpbmdFZGl0b3JDb21tYW5kcywgZmFsc2UpKQorICAg
ICAgICAgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOworCisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKworICAgICAgICAvLyBPbmx5IGFsbG93IHRleHQgaW5zZXJ0aW9u
IGNvbW1hbmRzIGlmIHRoZSBjdXJyZW50IG5vZGUgaXMgZWRpdGFibGUuCisgICAgICAgIGlmIChl
eGVjdXRlUGVuZGluZ0VkaXRvckNvbW1hbmRzKGZyYW1lLCBwZW5kaW5nRWRpdG9yQ29tbWFuZHMs
IGZyYW1lLT5lZGl0b3IoKS0+Y2FuRWRpdCgpKSkgeworICAgICAgICAgICAgZXZlbnQtPnNldERl
ZmF1bHRIYW5kbGVkKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisK
KyAgICAvLyBEb24ndCBhbGxvdyB0ZXh0IGluc2VydGlvbiBmb3Igbm9kZXMgdGhhdCBjYW5ub3Qg
ZWRpdC4KKyAgICBpZiAoIWZyYW1lLT5lZGl0b3IoKS0+Y2FuRWRpdCgpKQorICAgICAgICByZXR1
cm47CisKKyAgICAvLyBUaGlzIGlzIGp1c3QgYSBub3JtYWwgdGV4dCBpbnNlcnRpb24sIHNvIHdh
aXQgdG8gZXhlY3V0ZSB0aGUgaW5zZXJ0aW9uCisgICAgLy8gdW50aWwgYSBrZXlwcmVzcyBldmVu
dCBoYXBwZW5zLiBUaGlzIHdpbGwgZW5zdXJlIHRoYXQgdGhlIGluc2VydGlvbiB3aWxsIG5vdAor
ICAgIC8vIGJlIHJlZmxlY3RlZCBpbiB0aGUgY29udGVudHMgb2YgdGhlIGZpZWxkIHVudGlsIHRo
ZSBrZXl1cCBET00gZXZlbnQuCisgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygp
LmtleXByZXNzRXZlbnQpIHsKKworICAgICAgICAvLyBGSVhNRTogQWRkIElNIHN1cHBvcnQKKyAg
ICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU1OTQ2Cisg
ICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+aW5zZXJ0VGV4dChwbGF0Zm9ybUV2ZW50LT50ZXh0KCks
IGV2ZW50KTsKKyAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CisKKyAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgIC8vIERvbid0IGluc2VydCBudWxsIG9yIGNvbnRyb2wgY2hh
cmFjdGVycyBhcyB0aGV5IGNhbiByZXN1bHQgaW4gdW5leHBlY3RlZCBiZWhhdmlvdXIKKyAgICAg
ICAgICAgIGlmIChldmVudC0+Y2hhckNvZGUoKSA8ICcgJykKKyAgICAgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgICAgIC8vIERvbid0IGluc2VydCBhbnl0aGluZyBpZiBhIG1vZGlmaWVy
IGlzIHByZXNzZWQKKyAgICAgICAgICAgIGlmIChwbGF0Zm9ybUV2ZW50LT5jdHJsS2V5KCkgfHwg
cGxhdGZvcm1FdmVudC0+YWx0S2V5KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgICAgICBpZiAoZnJhbWUtPmVkaXRvcigpLT5pbnNlcnRUZXh0KHBsYXRmb3JtRXZlbnQtPnRl
eHQoKSwgZXZlbnQpKQorICAgICAgICAgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgp
OworICAgICAgICB9CisgICAgfQorCit2b2lkIFdlYkVkaXRvckNsaWVudDo6aGFuZGxlSW5wdXRN
ZXRob2RLZXlkb3duKEtleWJvYXJkRXZlbnQqKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9
CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApp
bmRleCAwMzZmNmQxLi5lZjJiMTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0xNDIwLDcgKzE0MjAsNyBAQCBXZWJGdWxsU2NyZWVuTWFu
YWdlciogV2ViUGFnZTo6ZnVsbFNjcmVlbk1hbmFnZXIoKQogfQogI2VuZGlmCiAKLSNpZiAhUExB
VEZPUk0oTUFDKQorI2lmICFQTEFURk9STShHVEspICYmICFQTEFURk9STShNQUMpCiBib29sIFdl
YlBhZ2U6OmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZlbnQqIGV2dCkKIHsK
ICAgICBOb2RlKiBub2RlID0gZXZ0LT50YXJnZXQoKS0+dG9Ob2RlKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBhNTczZGUyLi4wNTZhNTU4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTE1NCw3
ICsxNTQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBsYXlvdXRJZk5lZWRlZCgpOwogCiAgICAgLy8g
LS0gQ2FsbGVkIGZyb20gV2ViQ29yZSBjbGllbnRzLgotI2lmICFQTEFURk9STShNQUMpCisjaWYg
IVBMQVRGT1JNKEdUSykgJiYgIVBMQVRGT1JNKE1BQykKICAgICBib29sIGhhbmRsZUVkaXRpbmdL
ZXlib2FyZEV2ZW50KFdlYkNvcmU6OktleWJvYXJkRXZlbnQqKTsKICNlbmRpZgogICAgIHZvaWQg
c2hvdygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0
ay9XZWJQYWdlR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsv
V2ViUGFnZUd0ay5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTdjOTk3
NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9n
dGsvV2ViUGFnZUd0ay5jcHAKQEAgLTAsMCArMSwxMjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogUG9ydGlvbnMgQ29weXJp
Z2h0IChjKSAyMDEwIE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDExIElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJQYWdlLmgiCisKKyNpbmNsdWRlICJOb3RJbXBsZW1l
bnRlZC5oIgorI2luY2x1ZGUgIldlYkV2ZW50LmgiCisjaW5jbHVkZSAiV2luZG93c0tleWJvYXJk
Q29kZXMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0ZvY3VzQ29udHJvbGxlci5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvRnJhbWUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0tleWJvYXJkRXZlbnQuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtS2V5Ym9h
cmRFdmVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2V0dGluZ3MuaD4KKwordXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit2b2lkIFdlYlBhZ2U6OnBsYXRm
b3JtSW5pdGlhbGl6ZSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBXZWJQ
YWdlOjpwbGF0Zm9ybVByZWZlcmVuY2VzRGlkQ2hhbmdlKGNvbnN0IFdlYlByZWZlcmVuY2VzU3Rv
cmUmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBz
Y3JvbGwoUGFnZSogcGFnZSwgU2Nyb2xsRGlyZWN0aW9uIGRpcmVjdGlvbiwgU2Nyb2xsR3JhbnVs
YXJpdHkgZ3JhbnVsYXJpdHkpCit7CisgICAgcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3Vz
ZWRPck1haW5GcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+c2Nyb2xsUmVjdXJzaXZlbHkoZGlyZWN0
aW9uLCBncmFudWxhcml0eSk7Cit9CisKK2Jvb2wgV2ViUGFnZTo6cGVyZm9ybURlZmF1bHRCZWhh
dmlvckZvcktleUV2ZW50KGNvbnN0IFdlYktleWJvYXJkRXZlbnQmIGtleWJvYXJkRXZlbnQpCit7
CisgICAgaWYgKGtleWJvYXJkRXZlbnQudHlwZSgpICE9IFdlYkV2ZW50OjpLZXlEb3duICYmIGtl
eWJvYXJkRXZlbnQudHlwZSgpICE9IFdlYkV2ZW50OjpSYXdLZXlEb3duKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBzd2l0Y2ggKGtleWJvYXJkRXZlbnQud2luZG93c1ZpcnR1YWxLZXlD
b2RlKCkpIHsKKyAgICBjYXNlIFZLX0JBQ0s6CisgICAgICAgIGlmIChrZXlib2FyZEV2ZW50LnNo
aWZ0S2V5KCkpCisgICAgICAgICAgICBtX3BhZ2UtPmdvRm9yd2FyZCgpOworICAgICAgICBlbHNl
CisgICAgICAgICAgICBtX3BhZ2UtPmdvQmFjaygpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IFZLX1NQQUNFOgorICAgICAgICBzY3JvbGwobV9wYWdlLmdldCgpLCBrZXlib2FyZEV2ZW50LnNo
aWZ0S2V5KCkgPyBTY3JvbGxVcCA6IFNjcm9sbERvd24sIFNjcm9sbEJ5UGFnZSk7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgVktfTEVGVDoKKyAgICAgICAgc2Nyb2xsKG1fcGFnZS5nZXQoKSwg
U2Nyb2xsTGVmdCwgU2Nyb2xsQnlMaW5lKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBWS19S
SUdIVDoKKyAgICAgICAgc2Nyb2xsKG1fcGFnZS5nZXQoKSwgU2Nyb2xsUmlnaHQsIFNjcm9sbEJ5
TGluZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVktfVVA6CisgICAgICAgIHNjcm9sbCht
X3BhZ2UuZ2V0KCksIFNjcm9sbFVwLCBTY3JvbGxCeUxpbmUpOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIFZLX0RPV046CisgICAgICAgIHNjcm9sbChtX3BhZ2UuZ2V0KCksIFNjcm9sbERvd24s
IFNjcm9sbEJ5TGluZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVktfSE9NRToKKyAgICAg
ICAgc2Nyb2xsKG1fcGFnZS5nZXQoKSwgU2Nyb2xsVXAsIFNjcm9sbEJ5RG9jdW1lbnQpOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIFZLX0VORDoKKyAgICAgICAgc2Nyb2xsKG1fcGFnZS5nZXQo
KSwgU2Nyb2xsRG93biwgU2Nyb2xsQnlEb2N1bWVudCk7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgVktfUFJJT1I6CisgICAgICAgIHNjcm9sbChtX3BhZ2UuZ2V0KCksIFNjcm9sbFVwLCBTY3Jv
bGxCeVBhZ2UpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFZLX05FWFQ6CisgICAgICAgIHNj
cm9sbChtX3BhZ2UuZ2V0KCksIFNjcm9sbERvd24sIFNjcm9sbEJ5UGFnZSk7CisgICAgICAgIGJy
ZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBXZWJQYWdlOjpwbGF0Zm9ybUhhc0xvY2FsRGF0YUZvclVS
TChjb25zdCBXZWJDb3JlOjpLVVJMJikKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK1N0cmluZyBXZWJQYWdl
OjpjYWNoZWRSZXNwb25zZU1JTUVUeXBlRm9yVVJMKGNvbnN0IFdlYkNvcmU6OktVUkwmKQorewor
ICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK2Jvb2wg
V2ViUGFnZTo6cGxhdGZvcm1DYW5IYW5kbGVSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudAorICAgIHJldHVybiB0cnVlOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>86926</attachid>
            <date>2011-03-25 06:11:15 -0700</date>
            <delta_ts>2011-03-25 12:06:38 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>webpage.patch</filename>
            <type>text/plain</type>
            <size>37359</size>
            <attacher name="Alejandro G. Castro">alex</attacher>
            
              <data encoding="base64">Y29tbWl0IGViOTVkYzNkYjQwYzFjM2NjY2ZkNjc0ZmMyOTE0MTk4NWMzMTIxMzUKQXV0aG9yOiBB
bGVqYW5kcm8gRy4gQ2FzdHJvIDxhbGV4QGlnYWxpYS5jb20+CkRhdGU6ICAgRnJpIEphbiAyMSAx
MjoyNDowNSAyMDExICswMTAwCgogICAgMjAxMS0wMy0yNSAgQWxlamFuZHJvIEcuIENhc3RybyAg
PGFsZXhAaWdhbGlhLmNvbT4KICAgIAogICAgICAgICAgICBbR1RLXSBJbXBsZW1lbnQgV2ViUGFn
ZSBjbGFzcyBmb3IgV2ViS2l0MgogICAgICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NTQyMzAKICAgIAogICAgICAgICAgICAqIHd0Zi9TdGRMaWJFeHRyYXMu
aDogQWRkZWQgV0VCS0lUX0NPTU1BLCByZXF1aXJlZCB3aGVuIHVzaW5nCiAgICAgICAgICAgIG1h
Y3JvcyBsaWtlIERFRklORV9TVEFUSUNfTE9DQUwgYW5kIHlvdSBuZWVkIHRvIGRlZmluZSBhIHRl
bXBsYXRlCiAgICAgICAgICAgIHdpdGggbXVsdGlwbGUgYXJndW1lbnRzLgogICAgCiAgICAyMDEx
LTAzLTI1ICBBbXJ1dGggUmFqICA8YW1ydXRocmFqQG1vdG9yb2xhLmNvbT4gYW5kIFJhdmkgUGhh
bmVlbmRyYSBLYXNpYmhhdGxhICA8cmF2aS5rYXNpYmhhdGxhQG1vdG9yb2xhLmNvbT4gYW5kIEFs
ZWphbmRybyBHLiBDYXN0cm8gIDxhbGV4QGlnYWxpYS5jb20+CiAgICAKICAgICAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCiAgICAKICAgICAgICAgICAgW0dUS10gSW1wbGVtZW50
IFdlYlBhZ2UgY2xhc3MgZm9yIFdlYktpdDIKICAgICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTU0MjMwCiAgICAKICAgICAgICAgICAgQWRkZWQgZnVuY3Rp
b25zIHRvIGhhbmRsZSB0aGUgZ2VuZXJhdGlvbiBvZiBjb21tYW5kcyBmcm9tIHRoZQogICAgICAg
ICAgICBrZXljb2Rlcy4KICAgIAogICAgICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgogICAgICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0Mi9tZXNzYWdlcy5weToKICAgICAgICAgICAgKiBVSVByb2Nl
c3MvUGFnZUNsaWVudC5oOgogICAgICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoK
ICAgICAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgogICAgICAg
ICAgICAqIFVJUHJvY2Vzcy9ndGsvV2ViUGFnZVByb3h5R3RrLmNwcDoKICAgICAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpnZXRFZGl0b3JDb21tYW5kc0ZvcktleUV2ZW50KToKICAgICAg
ICAgICAgKiBVSVByb2Nlc3MvZ3RrL1dlYlZpZXcuY3BwOgogICAgICAgICAgICAoV2ViS2l0OjpX
ZWJWaWV3OjphZGRQZW5kaW5nRWRpdG9yQ29tbWFuZCk6CiAgICAgICAgICAgIChXZWJLaXQ6OmJh
Y2tzcGFjZUNhbGxiYWNrKToKICAgICAgICAgICAgKFdlYktpdDo6c2VsZWN0QWxsQ2FsbGJhY2sp
OgogICAgICAgICAgICAoV2ViS2l0OjpjdXRDbGlwYm9hcmRDYWxsYmFjayk6CiAgICAgICAgICAg
IChXZWJLaXQ6OmNvcHlDbGlwYm9hcmRDYWxsYmFjayk6CiAgICAgICAgICAgIChXZWJLaXQ6OnBh
c3RlQ2xpcGJvYXJkQ2FsbGJhY2spOgogICAgICAgICAgICAoV2ViS2l0Ojp0b2dnbGVPdmVyd3Jp
dGVDYWxsYmFjayk6CiAgICAgICAgICAgIChXZWJLaXQ6OnBvcHVwTWVudUNhbGxiYWNrKToKICAg
ICAgICAgICAgKFdlYktpdDo6c2hvd0hlbHBDYWxsYmFjayk6CiAgICAgICAgICAgIChXZWJLaXQ6
OmRlbGV0ZUZyb21DdXJzb3JDYWxsYmFjayk6CiAgICAgICAgICAgIChXZWJLaXQ6Om1vdmVDdXJz
b3JDYWxsYmFjayk6CiAgICAgICAgICAgIChXZWJLaXQ6OldlYlZpZXc6OldlYlZpZXcpOgogICAg
ICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpnZXRFZGl0b3JDb21tYW5kc0ZvcktleUV2ZW50KToK
ICAgICAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL1dlYlZpZXcuaDoKICAgICAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHA6CiAgICAgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKICAgICAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJFZGl0b3JDbGllbnRHdGsuY3BwOiBB
ZGRlZC4KICAgICAgICAgICAgKFdlYktpdDo6V2ViRWRpdG9yQ2xpZW50OjpnZXRFZGl0b3JDb21t
YW5kc0ZvcktleUV2ZW50KToKICAgICAgICAgICAgKFdlYktpdDo6V2ViRWRpdG9yQ2xpZW50Ojpl
eGVjdXRlUGVuZGluZ0VkaXRvckNvbW1hbmRzKToKICAgICAgICAgICAgKFdlYktpdDo6V2ViRWRp
dG9yQ2xpZW50OjpoYW5kbGVLZXlib2FyZEV2ZW50KToKICAgICAgICAgICAgKFdlYktpdDo6V2Vi
RWRpdG9yQ2xpZW50OjpoYW5kbGVJbnB1dE1ldGhvZEtleWRvd24pOgogICAgICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKICAgICAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oOgogICAgICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2Vi
UGFnZUd0ay5jcHA6IEFkZGVkLgogICAgICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwbGF0Zm9y
bUluaXRpYWxpemUpOgogICAgICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwbGF0Zm9ybVByZWZl
cmVuY2VzRGlkQ2hhbmdlKToKICAgICAgICAgICAgKFdlYktpdDo6c2Nyb2xsKToKICAgICAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6cGVyZm9ybURlZmF1bHRCZWhhdmlvckZvcktleUV2ZW50KToK
ICAgICAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cGxhdGZvcm1IYXNMb2NhbERhdGFGb3JVUkwp
OgogICAgICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpjYWNoZWRSZXNwb25zZU1JTUVUeXBlRm9y
VVJMKToKICAgICAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cGxhdGZvcm1DYW5IYW5kbGVSZXF1
ZXN0KToKCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBmNTYyMTIwLi5iMTk2ZDljIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMS0wMy0yNSAgQWxlamFu
ZHJvIEcuIENhc3RybyAgPGFsZXhAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBJbXBsZW1l
bnQgV2ViUGFnZSBjbGFzcyBmb3IgV2ViS2l0MgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTQyMzAKKworICAgICAgICAqIHd0Zi9TdGRMaWJFeHRyYXMu
aDogQWRkZWQgV0VCS0lUX0NPTU1BLCByZXF1aXJlZCB3aGVuIHVzaW5nCisgICAgICAgIG1hY3Jv
cyBsaWtlIERFRklORV9TVEFUSUNfTE9DQUwgYW5kIHlvdSBuZWVkIHRvIGRlZmluZSBhIHRlbXBs
YXRlCisgICAgICAgIHdpdGggbXVsdGlwbGUgYXJndW1lbnRzLgorCiAyMDExLTAzLTI0ICBOaWtv
bGFzIFppbW1lcm1hbm4gIDxuemltbWVybWFubkByaW0uY29tPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IERhcmluIEFkbGVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9T
dGRMaWJFeHRyYXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvU3RkTGliRXh0cmFzLmgK
aW5kZXggMGRhY2I5MS4uYzVmNTZjMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3d0Zi9TdGRMaWJFeHRyYXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1N0ZExp
YkV4dHJhcy5oCkBAIC00Miw2ICs0MiwxMSBAQAogI2VuZGlmCiAjZW5kaWYKIAorLy8gV0VCS0lU
X0NPTU1BOiBSZXF1aXJlZCB3aGVuIHVzaW5nIG1hY3JvcyBsaWtlIERFRklORV9TVEFUSUNfTE9D
QUwgYW5kIHlvdQorLy8gbmVlZCB0byBkZWZpbmUgYSB0ZW1wbGF0ZSB3aXRoIG11bHRpcGxlIGFy
Z3VtZW50cyBpLmUuCisvLyBERUZJTkVfU1RBVElDX0xPQ0FMKEhhc01hcDx0eXBlMSBDT01NQSB0
eXBlMj4sIC4uLikKKyNkZWZpbmUgV0VCS0lUX0NPTU1BICwKKwogLy8gT0JKRUNUX09GRlNFVE9G
OiBMaWtlIHRoZSBDKysgb2Zmc2V0b2YgbWFjcm8sIGJ1dCB5b3UgY2FuIHVzZSBpdCB3aXRoIGNs
YXNzZXMuCiAvLyBUaGUgbWFnaWMgbnVtYmVyIDB4NDAwMCBpcyBpbnNpZ25pZmljYW50LiBXZSB1
c2UgaXQgdG8gYXZvaWQgdXNpbmcgTlVMTCwgc2luY2UKIC8vIE5VTEwgY2FuIGNhdXNlIGNvbXBp
bGVyIHByb2JsZW1zLCBlc3BlY2lhbGx5IGluIGNhc2VzIG9mIG11bHRpcGxlIGluaGVyaXRhbmNl
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCmluZGV4IDcxMGFjMzYuLjQ4ZDdlYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1
MyBAQAorMjAxMS0wMy0yNSAgQW1ydXRoIFJhaiAgPGFtcnV0aHJhakBtb3Rvcm9sYS5jb20+IGFu
ZCBSYXZpIFBoYW5lZW5kcmEgS2FzaWJoYXRsYSAgPHJhdmkua2FzaWJoYXRsYUBtb3Rvcm9sYS5j
b20+IGFuZCBBbGVqYW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2FsaWEuY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtHVEtdIEltcGxlbWVudCBX
ZWJQYWdlIGNsYXNzIGZvciBXZWJLaXQyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD01NDIzMAorCisgICAgICAgIEFkZGVkIGZ1bmN0aW9ucyB0byBoYW5k
bGUgdGhlIGdlbmVyYXRpb24gb2YgY29tbWFuZHMgZnJvbSB0aGUKKyAgICAgICAga2V5Y29kZXMu
CisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdDIv
bWVzc2FnZXMucHk6CisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VDbGllbnQuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL1dlYlBhZ2VQcm94eUd0
ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0RWRpdG9yQ29tbWFuZHNG
b3JLZXlFdmVudCk6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9XZWJWaWV3LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViVmlldzo6YWRkUGVuZGluZ0VkaXRvckNvbW1hbmQpOgorICAgICAgICAo
V2ViS2l0OjpiYWNrc3BhY2VDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6OnNlbGVjdEFsbENh
bGxiYWNrKToKKyAgICAgICAgKFdlYktpdDo6Y3V0Q2xpcGJvYXJkQ2FsbGJhY2spOgorICAgICAg
ICAoV2ViS2l0Ojpjb3B5Q2xpcGJvYXJkQ2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0OjpwYXN0
ZUNsaXBib2FyZENhbGxiYWNrKToKKyAgICAgICAgKFdlYktpdDo6dG9nZ2xlT3ZlcndyaXRlQ2Fs
bGJhY2spOgorICAgICAgICAoV2ViS2l0Ojpwb3B1cE1lbnVDYWxsYmFjayk6CisgICAgICAgIChX
ZWJLaXQ6OnNob3dIZWxwQ2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0OjpkZWxldGVGcm9tQ3Vy
c29yQ2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0Ojptb3ZlQ3Vyc29yQ2FsbGJhY2spOgorICAg
ICAgICAoV2ViS2l0OjpXZWJWaWV3OjpXZWJWaWV3KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmll
dzo6Z2V0RWRpdG9yQ29tbWFuZHNGb3JLZXlFdmVudCk6CisgICAgICAgICogVUlQcm9jZXNzL2d0
ay9XZWJWaWV3Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2Vi
RWRpdG9yQ2xpZW50R3RrLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkVkaXRvckNs
aWVudDo6Z2V0RWRpdG9yQ29tbWFuZHNGb3JLZXlFdmVudCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkVkaXRvckNsaWVudDo6ZXhlY3V0ZVBlbmRpbmdFZGl0b3JDb21tYW5kcyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkVkaXRvckNsaWVudDo6aGFuZGxlS2V5Ym9hcmRFdmVudCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkVkaXRvckNsaWVudDo6aGFuZGxlSW5wdXRNZXRob2RLZXlkb3duKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dl
YlBhZ2VHdGsuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cGxhdGZvcm1J
bml0aWFsaXplKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cGxhdGZvcm1QcmVmZXJlbmNl
c0RpZENoYW5nZSk6CisgICAgICAgIChXZWJLaXQ6OnNjcm9sbCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OnBlcmZvcm1EZWZhdWx0QmVoYXZpb3JGb3JLZXlFdmVudCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OnBsYXRmb3JtSGFzTG9jYWxEYXRhRm9yVVJMKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZTo6Y2FjaGVkUmVzcG9uc2VNSU1FVHlwZUZvclVSTCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OnBsYXRmb3JtQ2FuSGFuZGxlUmVxdWVzdCk6CisKIDIwMTEtMDMtMjUg
IEFsZWphbmRybyBHLiBDYXN0cm8gIDxhbGV4QGlnYWxpYS5jb20+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgTWFydGluIFJvYmluc29uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvR05VbWFr
ZWZpbGUuYW0gYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQppbmRleCA5Yjc5ZTVhLi4y
MDRmNmVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQorKysgYi9T
b3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQpAQCAtNjEwLDYgKzYxMCw3IEBAIGxpYldlYktp
dDJfbGFfU09VUkNFUyA9IFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Jlc291cmNlQ2Fj
aGUvV2ViUmVzb3VyY2VDYWNoZU1hbmFnZXIuaCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9SZXNvdXJjZUNhY2hlL1dlYlJlc291cmNlQ2FjaGVNYW5hZ2VyLmNwcCBcCiAJU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViQ29udGV4dE1lbnVDbGllbnRH
dGsuY3BwIFwKKwlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9X
ZWJFZGl0b3JDbGllbnRHdGsuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L2d0ay9XZWJFcnJvcnNHdGsuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmggXAogCVNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dlYlBvcHVwTWVudUd0
ay5jcHAgXApAQCAtNjUwLDYgKzY1MSw3IEBAIGxpYldlYktpdDJfbGFfU09VUkNFUyA9IFwKIAlT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuaCBcCiAJU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9DaHVua2VkVXBkYXRlRHJhd2luZ0Fy
ZWFHdGsuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYklu
c3BlY3Rvckd0ay5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsv
V2ViUGFnZUd0ay5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9QYWdl
T3ZlcmxheS5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9QYWdlT3Zl
cmxheS5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVGlsZWREcmF3aW5n
QXJlYS5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2NyaXB0cy93ZWJraXQyL21l
c3NhZ2VzLnB5IGIvU291cmNlL1dlYktpdDIvU2NyaXB0cy93ZWJraXQyL21lc3NhZ2VzLnB5Cmlu
ZGV4IDE1OWNhMzIuLjliYmM5NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NjcmlwdHMv
d2Via2l0Mi9tZXNzYWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TY3JpcHRzL3dlYmtpdDIv
bWVzc2FnZXMucHkKQEAgLTI1NCw2ICsyNTQsNyBAQCBkZWYgbWVzc2FnZV90b19zdHJ1Y3RfZGVj
bGFyYXRpb24obWVzc2FnZSk6CiAKIGRlZiBzdHJ1Y3Rfb3JfY2xhc3MobmFtZXNwYWNlLCB0eXBl
KToKICAgICBzdHJ1Y3RzID0gZnJvemVuc2V0KFsKKyAgICAgICAgJ1dlYkNvcmU6OkVkaXRvckNv
bW1hbmRzRm9yS2V5RXZlbnQnLAogICAgICAgICAnV2ViQ29yZTo6Q29tcG9zaXRpb25VbmRlcmxp
bmUnLAogICAgICAgICAnV2ViQ29yZTo6R3JhbW1hckRldGFpbCcsCiAgICAgICAgICdXZWJDb3Jl
OjpLZXlwcmVzc0NvbW1hbmQnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1BhZ2VDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKaW5k
ZXggODU1NzZmOS4uNjA0OGE0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1BhZ2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5o
CkBAIC0xMDYsNiArMTA2LDkgQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKFdJTikKICAgICB2aXJ0
dWFsIHZvaWQgY29tcG9zaXRpb25TZWxlY3Rpb25DaGFuZ2VkKGJvb2wpID0gMDsKICNlbmRpZgor
I2lmIFBMQVRGT1JNKEdUSykKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0RWRpdG9yQ29tbWFuZHNGb3JL
ZXlFdmVudChjb25zdCBOYXRpdmVXZWJLZXlib2FyZEV2ZW50JiwgVmVjdG9yPFdURjo6U3RyaW5n
PiYpID0gMDsKKyNlbmRpZgogICAgIHZpcnR1YWwgV2ViQ29yZTo6RmxvYXRSZWN0IGNvbnZlcnRU
b0RldmljZVNwYWNlKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpID0gMDsKICAgICB2aXJ0dWFs
IFdlYkNvcmU6OkZsb2F0UmVjdCBjb252ZXJ0VG9Vc2VyU3BhY2UoY29uc3QgV2ViQ29yZTo6Rmxv
YXRSZWN0JikgPSAwOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50UmVjdCB3aW5kb3dUb1NjcmVl
bihjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oCmluZGV4IGNiZjI5YjcuLmVlMGJkMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTU4Myw3ICs1ODMsMTAgQEAgcHJpdmF0ZToKICNpZiBQ
TEFURk9STShNQUMpCiAgICAgdm9pZCBpbnRlcnByZXRLZXlFdmVudCh1aW50MzJfdCBldmVudFR5
cGUsIFZlY3RvcjxXZWJDb3JlOjpLZXlwcmVzc0NvbW1hbmQ+JiwgdWludDMyX3Qgc2VsZWN0aW9u
U3RhcnQsIHVpbnQzMl90IHNlbGVjdGlvbkVuZCwgVmVjdG9yPFdlYkNvcmU6OkNvbXBvc2l0aW9u
VW5kZXJsaW5lPiYgdW5kZXJsaW5lcyk7CiAjZW5kaWYKLSAgICAKKyNpZiBQTEFURk9STShHVEsp
CisgICAgdm9pZCBnZXRFZGl0b3JDb21tYW5kc0ZvcktleUV2ZW50KFZlY3RvcjxXVEY6OlN0cmlu
Zz4mKTsKKyNlbmRpZgorCiAgICAgLy8gRmluZC4KICAgICB2b2lkIGRpZENvdW50U3RyaW5nTWF0
Y2hlcyhjb25zdCBTdHJpbmcmLCB1aW50MzJfdCBtYXRjaENvdW50KTsKICAgICB2b2lkIHNldEZp
bmRJbmRpY2F0b3IoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBzZWxlY3Rpb25SZWN0SW5XaW5k
b3dDb29yZGluYXRlcywgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkZsb2F0UmVjdD4mIHRleHRSZWN0
c0luU2VsZWN0aW9uUmVjdENvb3JkaW5hdGVzLCBjb25zdCBTaGFyZWRNZW1vcnk6OkhhbmRsZSYg
Y29udGVudEltYWdlSGFuZGxlLCBib29sIGZhZGVPdXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KaW5kZXggNTVhNmRjMi4uZmU3ZGJm
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNz
YWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3Nh
Z2VzLmluCkBAIC0xMzYsNyArMTM2LDEyIEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAg
ICAgIyBSZW1vdGUgYWNjZXNzaWJpbGl0eSBtZXNzYWdlcwogICAgIFJlZ2lzdGVyV2ViUHJvY2Vz
c0FjY2Vzc2liaWxpdHlUb2tlbihDb3JlSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGEpCiAjZW5kaWYK
LSAgICAKKworI2lmIFBMQVRGT1JNKEdUSykKKyAgICAjIFN1cHBvcnQgZm9yIEdUSysgcGxhdGZv
cm0ga2V5YmluZGluZ3MKKyAgICBHZXRFZGl0b3JDb21tYW5kc0ZvcktleUV2ZW50KCkgLT4gKFZl
Y3RvcjxXVEY6OlN0cmluZz4gY29tbWFuZHNMaXN0KQorI2VuZGlmCisKICAgICAjIEJhY2tGb3J3
YXJkIG1lc3NhZ2VzCiAgICAgQmFja0ZvcndhcmRBZGRJdGVtKHVpbnQ2NF90IGl0ZW1JRCkKICAg
ICBCYWNrRm9yd2FyZEdvVG9JdGVtKHVpbnQ2NF90IGl0ZW1JRCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViUGFnZVByb3h5R3RrLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9ndGsvV2ViUGFnZVByb3h5R3RrLmNwcAppbmRleCA4MzhkZTk3Li44YWQw
OGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlBhZ2VQcm94
eUd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJQYWdlUHJveHlH
dGsuY3BwCkBAIC0yNyw2ICsyNyw5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
V2ViUGFnZVByb3h5LmgiCiAKKyNpbmNsdWRlICJOYXRpdmVXZWJLZXlib2FyZEV2ZW50LmgiCisj
aW5jbHVkZSAiUGFnZUNsaWVudC5oIgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogU3RyaW5nIFdl
YlBhZ2VQcm94eTo6c3RhbmRhcmRVc2VyQWdlbnQoY29uc3QgU3RyaW5nJiBhcHBsaWNhdGlvbk5h
bWVGb3JVc2VyQWdlbnQpCkBAIC0zNSw0ICszOCw5IEBAIFN0cmluZyBXZWJQYWdlUHJveHk6OnN0
YW5kYXJkVXNlckFnZW50KGNvbnN0IFN0cmluZyYgYXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50
CiAgICAgcmV0dXJuICJNb3ppbGxhLzUuMCAoWDExOyBMaW51eCBpNjg2KSBBcHBsZVdlYktpdC81
MzQuNyAoS0hUTUwsIGxpa2UgR2Vja28pIFZlcnNpb24vNS4wIFNhZmFyaS81MzQuNyI7CiB9CiAK
K3ZvaWQgV2ViUGFnZVByb3h5OjpnZXRFZGl0b3JDb21tYW5kc0ZvcktleUV2ZW50KFZlY3RvcjxX
VEY6OlN0cmluZz4mIGNvbW1hbmRzTGlzdCkKK3sKKyAgICBtX3BhZ2VDbGllbnQtPmdldEVkaXRv
ckNvbW1hbmRzRm9yS2V5RXZlbnQobV9rZXlFdmVudFF1ZXVlLmZpcnN0KCksIGNvbW1hbmRzTGlz
dCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2d0ay9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9n
dGsvV2ViVmlldy5jcHAKaW5kZXggMmZmNjdjZC4uMTc4OWJiNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvZ3RrL1dlYlZpZXcuY3BwCkBAIC00Miw2ICs0MiwxMiBAQCB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK3ZvaWQgV2ViVmlldzo6YWRkUGVu
ZGluZ0VkaXRvckNvbW1hbmQoY29uc3QgY2hhciogY29tbWFuZCkKK3sKKyAgICBBU1NFUlQobV90
cmFuc2llbnRQZW5kaW5nRWRpdG9yQ29tbWFuZHMpOworCisgICAgbV90cmFuc2llbnRQZW5kaW5n
RWRpdG9yQ29tbWFuZHMtPmFwcGVuZChXVEY6OlN0cmluZyhjb21tYW5kKSk7Cit9CiAKIHZvaWQg
V2ViVmlldzo6aGFuZGxlRm9jdXNJbkV2ZW50KEd0a1dpZGdldCogd2lkZ2V0KQogewpAQCAtNTks
OCArNjUsMTg2IEBAIHZvaWQgV2ViVmlldzo6aGFuZGxlRm9jdXNPdXRFdmVudChHdGtXaWRnZXQq
IHdpZGdldCkKICAgICBtX3BhZ2UtPnZpZXdTdGF0ZURpZENoYW5nZShXZWJQYWdlUHJveHk6OlZp
ZXdXaW5kb3dJc0FjdGl2ZSk7CiB9CiAKKworc3RhdGljIHZvaWQgYmFja3NwYWNlQ2FsbGJhY2so
R3RrV2lkZ2V0KiB3aWRnZXQsIFdlYlZpZXcqIGNsaWVudCkKK3sKKyAgICBnX3NpZ25hbF9zdG9w
X2VtaXNzaW9uX2J5X25hbWUod2lkZ2V0LCAiYmFja3NwYWNlIik7CisgICAgY2xpZW50LT5hZGRQ
ZW5kaW5nRWRpdG9yQ29tbWFuZCgiRGVsZXRlQmFja3dhcmQiKTsKK30KKworc3RhdGljIHZvaWQg
c2VsZWN0QWxsQ2FsbGJhY2soR3RrV2lkZ2V0KiB3aWRnZXQsIGdib29sZWFuIHNlbGVjdCwgV2Vi
VmlldyogY2xpZW50KQoreworICAgIGdfc2lnbmFsX3N0b3BfZW1pc3Npb25fYnlfbmFtZSh3aWRn
ZXQsICJzZWxlY3QtYWxsIik7CisgICAgY2xpZW50LT5hZGRQZW5kaW5nRWRpdG9yQ29tbWFuZChz
ZWxlY3QgPyAiU2VsZWN0QWxsIiA6ICJVbnNlbGVjdCIpOworfQorCitzdGF0aWMgdm9pZCBjdXRD
bGlwYm9hcmRDYWxsYmFjayhHdGtXaWRnZXQqIHdpZGdldCwgV2ViVmlldyogY2xpZW50KQorewor
ICAgIGdfc2lnbmFsX3N0b3BfZW1pc3Npb25fYnlfbmFtZSh3aWRnZXQsICJjdXQtY2xpcGJvYXJk
Iik7CisgICAgY2xpZW50LT5hZGRQZW5kaW5nRWRpdG9yQ29tbWFuZCgiQ3V0Iik7Cit9CisKK3N0
YXRpYyB2b2lkIGNvcHlDbGlwYm9hcmRDYWxsYmFjayhHdGtXaWRnZXQqIHdpZGdldCwgV2ViVmll
dyogY2xpZW50KQoreworICAgIGdfc2lnbmFsX3N0b3BfZW1pc3Npb25fYnlfbmFtZSh3aWRnZXQs
ICJjb3B5LWNsaXBib2FyZCIpOworICAgIGNsaWVudC0+YWRkUGVuZGluZ0VkaXRvckNvbW1hbmQo
IkNvcHkiKTsKK30KKworc3RhdGljIHZvaWQgcGFzdGVDbGlwYm9hcmRDYWxsYmFjayhHdGtXaWRn
ZXQqIHdpZGdldCwgV2ViVmlldyogY2xpZW50KQoreworICAgIGdfc2lnbmFsX3N0b3BfZW1pc3Np
b25fYnlfbmFtZSh3aWRnZXQsICJwYXN0ZS1jbGlwYm9hcmQiKTsKKyAgICBjbGllbnQtPmFkZFBl
bmRpbmdFZGl0b3JDb21tYW5kKCJQYXN0ZSIpOworfQorCitzdGF0aWMgdm9pZCB0b2dnbGVPdmVy
d3JpdGVDYWxsYmFjayhHdGtXaWRnZXQqIHdpZGdldCwgRWRpdG9yQ2xpZW50KikKK3sKKyAgICAv
LyBXZSBkb24ndCBzdXBwb3J0IHRvZ2dsaW5nIHRoZSBvdmVyd3JpdGUgbW9kZSwgYnV0IHRoZSBk
ZWZhdWx0IGNhbGxiYWNrIGV4cGVjdHMKKyAgICAvLyB0aGUgR3RrVGV4dFZpZXcgdG8gaGF2ZSBh
IGxheW91dCwgc28gd2UgaGFuZGxlIHRoaXMgc2lnbmFsIGp1c3QgdG8gc3RvcCBpdC4KKyAgICBn
X3NpZ25hbF9zdG9wX2VtaXNzaW9uX2J5X25hbWUod2lkZ2V0LCAidG9nZ2xlLW92ZXJ3cml0ZSIp
OworfQorCisvLyBHVEsrIHdpbGwgc3RpbGwgc2VuZCB0aGVzZSBzaWduYWxzIHRvIHRoZSB3ZWIg
dmlldy4gU28gd2UgY2FuIHNhZmVseSBzdG9wIHNpZ25hbAorLy8gZW1pc3Npb24gd2l0aG91dCBi
cmVha2luZyBhY2Nlc3NpYmlsaXR5Lgorc3RhdGljIHZvaWQgcG9wdXBNZW51Q2FsbGJhY2soR3Rr
V2lkZ2V0KiB3aWRnZXQsIEVkaXRvckNsaWVudCopCit7CisgICAgZ19zaWduYWxfc3RvcF9lbWlz
c2lvbl9ieV9uYW1lKHdpZGdldCwgInBvcHVwLW1lbnUiKTsKK30KKworc3RhdGljIHZvaWQgc2hv
d0hlbHBDYWxsYmFjayhHdGtXaWRnZXQqIHdpZGdldCwgRWRpdG9yQ2xpZW50KikKK3sKKyAgICBn
X3NpZ25hbF9zdG9wX2VtaXNzaW9uX2J5X25hbWUod2lkZ2V0LCAic2hvdy1oZWxwIik7Cit9CisK
K3N0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBndGtEZWxldGVDb21tYW5kc1tdWzJdID0geworICAg
IHsgIkRlbGV0ZUJhY2t3YXJkIiwgICAgICAgICAgICAgICAiRGVsZXRlRm9yd2FyZCIgICAgICAg
ICAgICAgICAgICAgICAgICB9LCAvLyBDaGFyYWN0ZXJzCisgICAgeyAiRGVsZXRlV29yZEJhY2t3
YXJkIiwgICAgICAgICAgICJEZWxldGVXb3JkRm9yd2FyZCIgICAgICAgICAgICAgICAgICAgIH0s
IC8vIFdvcmQgZW5kcworICAgIHsgIkRlbGV0ZVdvcmRCYWNrd2FyZCIsICAgICAgICAgICAiRGVs
ZXRlV29yZEZvcndhcmQiICAgICAgICAgICAgICAgICAgICB9LCAvLyBXb3JkcworICAgIHsgIkRl
bGV0ZVRvQmVnaW5uaW5nT2ZMaW5lIiwgICAgICAiRGVsZXRlVG9FbmRPZkxpbmUiICAgICAgICAg
ICAgICAgICAgICB9LCAvLyBMaW5lcworICAgIHsgIkRlbGV0ZVRvQmVnaW5uaW5nT2ZMaW5lIiwg
ICAgICAiRGVsZXRlVG9FbmRPZkxpbmUiICAgICAgICAgICAgICAgICAgICB9LCAvLyBMaW5lIGVu
ZHMKKyAgICB7ICJEZWxldGVUb0JlZ2lubmluZ09mUGFyYWdyYXBoIiwgIkRlbGV0ZVRvRW5kT2ZQ
YXJhZ3JhcGgiICAgICAgICAgICAgICAgfSwgLy8gUGFyYWdyYXBoIGVuZHMKKyAgICB7ICJEZWxl
dGVUb0JlZ2lubmluZ09mUGFyYWdyYXBoIiwgIkRlbGV0ZVRvRW5kT2ZQYXJhZ3JhcGgiICAgICAg
ICAgICAgICAgfSwgLy8gUGFyYWdyYXBocworICAgIHsgMCwgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IC8vIFdoaXRl
c3BhY2UgKE0tXCBpbiBFbWFjcykKK307CisKK3N0YXRpYyB2b2lkIGRlbGV0ZUZyb21DdXJzb3JD
YWxsYmFjayhHdGtXaWRnZXQqIHdpZGdldCwgR3RrRGVsZXRlVHlwZSBkZWxldGVUeXBlLCBnaW50
IGNvdW50LCBXZWJWaWV3KiBjbGllbnQpCit7CisgICAgZ19zaWduYWxfc3RvcF9lbWlzc2lvbl9i
eV9uYW1lKHdpZGdldCwgImRlbGV0ZS1mcm9tLWN1cnNvciIpOworICAgIGludCBkaXJlY3Rpb24g
PSBjb3VudCA+IDAgPyAxIDogMDsKKworICAgIC8vIEVuc3VyaW5nIHRoYXQgZGVsZXRlVHlwZSA8
PSBHX05fRUxFTUVOVFMgaGVyZSByZXN1bHRzIGluIGEgY29tcGlsZXIgd2FybmluZworICAgIC8v
IHRoYXQgdGhlIGNvbmRpdGlvbiBpcyBhbHdheXMgdHJ1ZS4KKworICAgIGlmIChkZWxldGVUeXBl
ID09IEdUS19ERUxFVEVfV09SRFMpIHsKKyAgICAgICAgaWYgKCFkaXJlY3Rpb24pIHsKKyAgICAg
ICAgICAgIGNsaWVudC0+YWRkUGVuZGluZ0VkaXRvckNvbW1hbmQoIk1vdmVXb3JkRm9yd2FyZCIp
OworICAgICAgICAgICAgY2xpZW50LT5hZGRQZW5kaW5nRWRpdG9yQ29tbWFuZCgiTW92ZVdvcmRC
YWNrd2FyZCIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgY2xpZW50LT5hZGRQZW5k
aW5nRWRpdG9yQ29tbWFuZCgiTW92ZVdvcmRCYWNrd2FyZCIpOworICAgICAgICAgICAgY2xpZW50
LT5hZGRQZW5kaW5nRWRpdG9yQ29tbWFuZCgiTW92ZVdvcmRGb3J3YXJkIik7CisgICAgICAgIH0K
KyAgICB9IGVsc2UgaWYgKGRlbGV0ZVR5cGUgPT0gR1RLX0RFTEVURV9ESVNQTEFZX0xJTkVTKSB7
CisgICAgICAgIGlmICghZGlyZWN0aW9uKQorICAgICAgICAgICAgY2xpZW50LT5hZGRQZW5kaW5n
RWRpdG9yQ29tbWFuZCgiTW92ZVRvQmVnaW5uaW5nT2ZMaW5lIik7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIGNsaWVudC0+YWRkUGVuZGluZ0VkaXRvckNvbW1hbmQoIk1vdmVUb0VuZE9mTGlu
ZSIpOworICAgIH0gZWxzZSBpZiAoZGVsZXRlVHlwZSA9PSBHVEtfREVMRVRFX1BBUkFHUkFQSFMp
IHsKKyAgICAgICAgaWYgKCFkaXJlY3Rpb24pCisgICAgICAgICAgICBjbGllbnQtPmFkZFBlbmRp
bmdFZGl0b3JDb21tYW5kKCJNb3ZlVG9CZWdpbm5pbmdPZlBhcmFncmFwaCIpOworICAgICAgICBl
bHNlCisgICAgICAgICAgICBjbGllbnQtPmFkZFBlbmRpbmdFZGl0b3JDb21tYW5kKCJNb3ZlVG9F
bmRPZlBhcmFncmFwaCIpOworICAgIH0KKworICAgIGNvbnN0IGNoYXIqIHJhd0NvbW1hbmQgPSBn
dGtEZWxldGVDb21tYW5kc1tkZWxldGVUeXBlXVtkaXJlY3Rpb25dOworICAgIGlmICghcmF3Q29t
bWFuZCkKKyAgICAgIHJldHVybjsKKworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYWJzKGNvdW50
KTsgaSsrKQorICAgICAgICBjbGllbnQtPmFkZFBlbmRpbmdFZGl0b3JDb21tYW5kKHJhd0NvbW1h
bmQpOworfQorCitzdGF0aWMgY29uc3QgY2hhciogY29uc3QgZ3RrTW92ZUNvbW1hbmRzW11bNF0g
PSB7CisgICAgeyAiTW92ZUJhY2t3YXJkIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJNb3ZlRm9yd2FyZCIsCisgICAgICAiTW92ZUJhY2t3YXJkQW5kTW9kaWZ5U2VsZWN0aW9u
IiwgICAgICAgICAgICAgICAgICJNb3ZlRm9yd2FyZEFuZE1vZGlmeVNlbGVjdGlvbiIgICAgICAg
ICAgICAgfSwgLy8gRm9yd2FyZC9iYWNrd2FyZCBncmFwaGVtZQorICAgIHsgIk1vdmVMZWZ0Iiwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTW92ZVJpZ2h0IiwKKyAgICAg
ICJNb3ZlQmFja3dhcmRBbmRNb2RpZnlTZWxlY3Rpb24iLCAgICAgICAgICAgICAgICAgIk1vdmVG
b3J3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uIiAgICAgICAgICAgICB9LCAvLyBMZWZ0L3JpZ2h0IGdy
YXBoZW1lCisgICAgeyAiTW92ZVdvcmRCYWNrd2FyZCIsICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJNb3ZlV29yZEZvcndhcmQiLAorICAgICAgIk1vdmVXb3JkQmFja3dhcmRBbmRNb2Rp
ZnlTZWxlY3Rpb24iLCAgICAgICAgICAgICAiTW92ZVdvcmRGb3J3YXJkQW5kTW9kaWZ5U2VsZWN0
aW9uIiAgICAgICAgIH0sIC8vIEZvcndhcmQvYmFja3dhcmQgd29yZAorICAgIHsgIk1vdmVVcCIs
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTW92ZURvd24iLAorICAg
ICAgIk1vdmVVcEFuZE1vZGlmeVNlbGVjdGlvbiIsICAgICAgICAgICAgICAgICAgICAgICAiTW92
ZURvd25BbmRNb2RpZnlTZWxlY3Rpb24iICAgICAgICAgICAgICAgIH0sIC8vIFVwL2Rvd24gbGlu
ZQorICAgIHsgIk1vdmVUb0JlZ2lubmluZ09mTGluZSIsICAgICAgICAgICAgICAgICAgICAgICAg
ICAiTW92ZVRvRW5kT2ZMaW5lIiwKKyAgICAgICJNb3ZlVG9CZWdpbm5pbmdPZkxpbmVBbmRNb2Rp
ZnlTZWxlY3Rpb24iLCAgICAgICAgIk1vdmVUb0VuZE9mTGluZUFuZE1vZGlmeVNlbGVjdGlvbiIg
ICAgICAgICB9LCAvLyBVcC9kb3duIGxpbmUgZW5kcworICAgIHsgIk1vdmVQYXJhZ3JhcGhGb3J3
YXJkIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAiTW92ZVBhcmFncmFwaEJhY2t3YXJkIiwK
KyAgICAgICJNb3ZlUGFyYWdyYXBoRm9yd2FyZEFuZE1vZGlmeVNlbGVjdGlvbiIsICAgICAgICAg
Ik1vdmVQYXJhZ3JhcGhCYWNrd2FyZEFuZE1vZGlmeVNlbGVjdGlvbiIgICB9LCAvLyBVcC9kb3du
IHBhcmFncmFwaHMKKyAgICB7ICJNb3ZlVG9CZWdpbm5pbmdPZlBhcmFncmFwaCIsICAgICAgICAg
ICAgICAgICAgICAgIk1vdmVUb0VuZE9mUGFyYWdyYXBoIiwKKyAgICAgICJNb3ZlVG9CZWdpbm5p
bmdPZlBhcmFncmFwaEFuZE1vZGlmeVNlbGVjdGlvbiIsICAgIk1vdmVUb0VuZE9mUGFyYWdyYXBo
QW5kTW9kaWZ5U2VsZWN0aW9uIiAgICB9LCAvLyBVcC9kb3duIHBhcmFncmFwaCBlbmRzLgorICAg
IHsgIk1vdmVQYWdlVXAiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTW92
ZVBhZ2VEb3duIiwKKyAgICAgICJNb3ZlUGFnZVVwQW5kTW9kaWZ5U2VsZWN0aW9uIiwgICAgICAg
ICAgICAgICAgICAgIk1vdmVQYWdlRG93bkFuZE1vZGlmeVNlbGVjdGlvbiIgICAgICAgICAgICB9
LCAvLyBVcC9kb3duIHBhZ2UKKyAgICB7ICJNb3ZlVG9CZWdpbm5pbmdPZkRvY3VtZW50IiwgICAg
ICAgICAgICAgICAgICAgICAgIk1vdmVUb0VuZE9mRG9jdW1lbnQiLAorICAgICAgIk1vdmVUb0Jl
Z2lubmluZ09mRG9jdW1lbnRBbmRNb2RpZnlTZWxlY3Rpb24iLCAgICAiTW92ZVRvRW5kT2ZEb2N1
bWVudEFuZE1vZGlmeVNlbGVjdGlvbiIgICAgIH0sIC8vIEJlZ2luL2VuZCBvZiBidWZmZXIKKyAg
ICB7IDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwK
KyAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IC8vIEhvcml6b250
YWwgcGFnZSBtb3ZlbWVudAorfTsKKworc3RhdGljIHZvaWQgbW92ZUN1cnNvckNhbGxiYWNrKEd0
a1dpZGdldCogd2lkZ2V0LCBHdGtNb3ZlbWVudFN0ZXAgc3RlcCwgZ2ludCBjb3VudCwgZ2Jvb2xl
YW4gZXh0ZW5kU2VsZWN0aW9uLCBXZWJWaWV3KiBjbGllbnQpCit7CisgICAgZ19zaWduYWxfc3Rv
cF9lbWlzc2lvbl9ieV9uYW1lKHdpZGdldCwgIm1vdmUtY3Vyc29yIik7CisgICAgaW50IGRpcmVj
dGlvbiA9IGNvdW50ID4gMCA/IDEgOiAwOworICAgIGlmIChleHRlbmRTZWxlY3Rpb24pCisgICAg
ICAgIGRpcmVjdGlvbiArPSAyOworCisgICAgaWYgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdGVw
KSA+PSBHX05fRUxFTUVOVFMoZ3RrTW92ZUNvbW1hbmRzKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgY29uc3QgY2hhciogcmF3Q29tbWFuZCA9IGd0a01vdmVDb21tYW5kc1tzdGVwXVtkaXJlY3Rp
b25dOworICAgIGlmICghcmF3Q29tbWFuZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCBhYnMoY291bnQpOyBpKyspCisgICAgICAgIGNsaWVudC0+YWRkUGVuZGlu
Z0VkaXRvckNvbW1hbmQocmF3Q29tbWFuZCk7Cit9CisKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBD
dHJsS2V5ID0gMSA8PCAwOworc3RhdGljIGNvbnN0IHVuc2lnbmVkIEFsdEtleSA9IDEgPDwgMTsK
K3N0YXRpYyBjb25zdCB1bnNpZ25lZCBTaGlmdEtleSA9IDEgPDwgMjsKKworc3RydWN0IEtleURv
d25FbnRyeSB7CisgICAgdW5zaWduZWQgdmlydHVhbEtleTsKKyAgICB1bnNpZ25lZCBtb2RpZmll
cnM7CisgICAgY29uc3QgY2hhciogbmFtZTsKK307CisKK3N0cnVjdCBLZXlQcmVzc0VudHJ5IHsK
KyAgICB1bnNpZ25lZCBjaGFyQ29kZTsKKyAgICB1bnNpZ25lZCBtb2RpZmllcnM7CisgICAgY29u
c3QgY2hhciogbmFtZTsKK307CisKK3N0YXRpYyBjb25zdCBLZXlEb3duRW50cnkga2V5RG93bkVu
dHJpZXNbXSA9IHsKKyAgICB7ICdCJywgICAgICAgQ3RybEtleSwgICAgICAgICAgICAiVG9nZ2xl
Qm9sZCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7ICdJJywgICAg
ICAgQ3RybEtleSwgICAgICAgICAgICAiVG9nZ2xlSXRhbGljIiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfSwKKyAgICB7IFZLX0VTQ0FQRSwgMCwgICAgICAgICAgICAgICAgICAiQ2Fu
Y2VsIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7IFZLX09F
TV9QRVJJT0QsIEN0cmxLZXksICAgICAgICAiQ2FuY2VsIiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfSwKKyAgICB7IFZLX1RBQiwgICAgMCwgICAgICAgICAgICAgICAgICAi
SW5zZXJ0VGFiIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7IFZL
X1RBQiwgICAgU2hpZnRLZXksICAgICAgICAgICAiSW5zZXJ0QmFja3RhYiIgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfSwKKyAgICB7IFZLX1JFVFVSTiwgMCwgICAgICAgICAgICAgICAg
ICAiSW5zZXJ0TmV3bGluZSIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7
IFZLX1JFVFVSTiwgQ3RybEtleSwgICAgICAgICAgICAiSW5zZXJ0TmV3bGluZSIgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7IFZLX1JFVFVSTiwgQWx0S2V5LCAgICAgICAg
ICAgICAiSW5zZXJ0TmV3bGluZSIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAg
ICB7IFZLX1JFVFVSTiwgQWx0S2V5IHwgU2hpZnRLZXksICAiSW5zZXJ0TmV3bGluZSIgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfSwKK307CisKK3N0YXRpYyBjb25zdCBLZXlQcmVzc0Vu
dHJ5IGtleVByZXNzRW50cmllc1tdID0geworICAgIHsgJ1x0JywgICAwLCAgICAgICAgICAgICAg
ICAgICJJbnNlcnRUYWIiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAg
IHsgJ1x0JywgICBTaGlmdEtleSwgICAgICAgICAgICJJbnNlcnRCYWNrdGFiIiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9LAorICAgIHsgJ1xyJywgICAwLCAgICAgICAgICAgICAgICAg
ICJJbnNlcnROZXdsaW5lIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgIHsg
J1xyJywgICBDdHJsS2V5LCAgICAgICAgICAgICJJbnNlcnROZXdsaW5lIiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9LAorICAgIHsgJ1xyJywgICBBbHRLZXksICAgICAgICAgICAgICJJ
bnNlcnROZXdsaW5lIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgIHsgJ1xy
JywgICBBbHRLZXkgfCBTaGlmdEtleSwgICJJbnNlcnROZXdsaW5lIiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB9LAorfTsKKwogV2ViVmlldzo6V2ViVmlldyhXZWJDb250ZXh0KiBjb250
ZXh0LCBXZWJQYWdlR3JvdXAqIHBhZ2VHcm91cCkKICAgICA6IG1faXNQYWdlQWN0aXZlKHRydWUp
CisgICAgLCBtX3RyYW5zaWVudFBlbmRpbmdFZGl0b3JDb21tYW5kcygwKQorICAgICwgbV9uYXRp
dmVXaWRnZXQoZ3RrX3RleHRfdmlld19uZXcoKSkKIHsKICAgICBtX3BhZ2UgPSBjb250ZXh0LT5j
cmVhdGVXZWJQYWdlKHRoaXMsIHBhZ2VHcm91cCk7CiAKQEAgLTcxLDYgKzI1NSwxNyBAQCBXZWJW
aWV3OjpXZWJWaWV3KFdlYkNvbnRleHQqIGNvbnRleHQsIFdlYlBhZ2VHcm91cCogcGFnZUdyb3Vw
KQogCiAgICAgV2ViVmlld1dpZGdldCogd2ViVmlld1dpZGdldCA9IFdFQl9WSUVXX1dJREdFVCht
X3ZpZXdXaWRnZXQpOwogICAgIHdlYlZpZXdXaWRnZXRTZXRXZWJWaWV3SW5zdGFuY2Uod2ViVmll
d1dpZGdldCwgdGhpcyk7CisKKyAgICBnX3NpZ25hbF9jb25uZWN0KG1fbmF0aXZlV2lkZ2V0Lmdl
dCgpLCAiYmFja3NwYWNlIiwgR19DQUxMQkFDSyhiYWNrc3BhY2VDYWxsYmFjayksIHRoaXMpOwor
ICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9uYXRpdmVXaWRnZXQuZ2V0KCksICJjdXQtY2xpcGJvYXJk
IiwgR19DQUxMQkFDSyhjdXRDbGlwYm9hcmRDYWxsYmFjayksIHRoaXMpOworICAgIGdfc2lnbmFs
X2Nvbm5lY3QobV9uYXRpdmVXaWRnZXQuZ2V0KCksICJjb3B5LWNsaXBib2FyZCIsIEdfQ0FMTEJB
Q0soY29weUNsaXBib2FyZENhbGxiYWNrKSwgdGhpcyk7CisgICAgZ19zaWduYWxfY29ubmVjdCht
X25hdGl2ZVdpZGdldC5nZXQoKSwgInBhc3RlLWNsaXBib2FyZCIsIEdfQ0FMTEJBQ0socGFzdGVD
bGlwYm9hcmRDYWxsYmFjayksIHRoaXMpOworICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9uYXRpdmVX
aWRnZXQuZ2V0KCksICJzZWxlY3QtYWxsIiwgR19DQUxMQkFDSyhzZWxlY3RBbGxDYWxsYmFjayks
IHRoaXMpOworICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9uYXRpdmVXaWRnZXQuZ2V0KCksICJtb3Zl
LWN1cnNvciIsIEdfQ0FMTEJBQ0sobW92ZUN1cnNvckNhbGxiYWNrKSwgdGhpcyk7CisgICAgZ19z
aWduYWxfY29ubmVjdChtX25hdGl2ZVdpZGdldC5nZXQoKSwgImRlbGV0ZS1mcm9tLWN1cnNvciIs
IEdfQ0FMTEJBQ0soZGVsZXRlRnJvbUN1cnNvckNhbGxiYWNrKSwgdGhpcyk7CisgICAgZ19zaWdu
YWxfY29ubmVjdChtX25hdGl2ZVdpZGdldC5nZXQoKSwgInRvZ2dsZS1vdmVyd3JpdGUiLCBHX0NB
TExCQUNLKHRvZ2dsZU92ZXJ3cml0ZUNhbGxiYWNrKSwgdGhpcyk7CisgICAgZ19zaWduYWxfY29u
bmVjdChtX25hdGl2ZVdpZGdldC5nZXQoKSwgInBvcHVwLW1lbnUiLCBHX0NBTExCQUNLKHBvcHVw
TWVudUNhbGxiYWNrKSwgdGhpcyk7CisgICAgZ19zaWduYWxfY29ubmVjdChtX25hdGl2ZVdpZGdl
dC5nZXQoKSwgInNob3ctaGVscCIsIEdfQ0FMTEJBQ0soc2hvd0hlbHBDYWxsYmFjayksIHRoaXMp
OwogfQogCiBXZWJWaWV3Ojp+V2ViVmlldygpCkBAIC0xMDcsNiArMzAyLDU0IEBAIHZvaWQgV2Vi
Vmlldzo6aGFuZGxlV2hlZWxFdmVudChHZGtFdmVudFNjcm9sbCogZXZlbnQpCiAgICAgbV9wYWdl
LT5oYW5kbGVXaGVlbEV2ZW50KFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViV2hlZWxFdmVudChl
dmVudCkpOwogfQogCit2b2lkIFdlYlZpZXc6OmdldEVkaXRvckNvbW1hbmRzRm9yS2V5RXZlbnQo
Y29uc3QgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudCYgZXZlbnQsIFZlY3RvcjxXVEY6OlN0cmluZz4m
IGNvbW1hbmRzTGlzdCkKK3sKKyAgICBBU1NFUlQoIW1fdHJhbnNpZW50UGVuZGluZ0VkaXRvckNv
bW1hbmRzKTsKKworICAgIG1fdHJhbnNpZW50UGVuZGluZ0VkaXRvckNvbW1hbmRzID0gJmNvbW1h
bmRzTGlzdDsKKworI2lmZGVmIEdUS19BUElfVkVSU0lPTl8yCisgICAgZ3RrX2JpbmRpbmdzX2Fj
dGl2YXRlX2V2ZW50KEdUS19PQkpFQ1QobV9uYXRpdmVXaWRnZXQuZ2V0KCkpLCByZWludGVycHJl
dF9jYXN0PEdka0V2ZW50S2V5Kj4oY29uc3RfY2FzdDxHZGtFdmVudCo+KGV2ZW50Lm5hdGl2ZUV2
ZW50KCkpKSk7CisjZWxzZQorICAgIGd0a19iaW5kaW5nc19hY3RpdmF0ZV9ldmVudChHX09CSkVD
VChtX25hdGl2ZVdpZGdldC5nZXQoKSksIHJlaW50ZXJwcmV0X2Nhc3Q8R2RrRXZlbnRLZXkqPihj
b25zdF9jYXN0PEdka0V2ZW50Kj4oZXZlbnQubmF0aXZlRXZlbnQoKSkpKTsKKyNlbmRpZgorCisg
ICAgaWYgKG1fdHJhbnNpZW50UGVuZGluZ0VkaXRvckNvbW1hbmRzLT5pc0VtcHR5KCkpIHsKKyAg
ICAgICAgbV90cmFuc2llbnRQZW5kaW5nRWRpdG9yQ29tbWFuZHMgPSAwOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChIYXNoTWFwPGludCBXRUJLSVRf
Q09NTUEgY29uc3QgY2hhcio+LCBrZXlEb3duQ29tbWFuZHNNYXAsICgpKTsKKyAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKEhhc2hNYXA8aW50IFdFQktJVF9DT01NQSBjb25zdCBjaGFyKj4sIGtleVBy
ZXNzQ29tbWFuZHNNYXAsICgpKTsKKworICAgIGlmIChrZXlEb3duQ29tbWFuZHNNYXAuaXNFbXB0
eSgpKSB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBHX05fRUxFTUVOVFMoa2V5
RG93bkVudHJpZXMpOyBpKyspCisgICAgICAgICAgICBrZXlEb3duQ29tbWFuZHNNYXAuc2V0KGtl
eURvd25FbnRyaWVzW2ldLm1vZGlmaWVycyA8PCAxNiB8IGtleURvd25FbnRyaWVzW2ldLnZpcnR1
YWxLZXksIGtleURvd25FbnRyaWVzW2ldLm5hbWUpOworCisgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBHX05fRUxFTUVOVFMoa2V5UHJlc3NFbnRyaWVzKTsgaSsrKQorICAgICAgICAg
ICAga2V5UHJlc3NDb21tYW5kc01hcC5zZXQoa2V5UHJlc3NFbnRyaWVzW2ldLm1vZGlmaWVycyA8
PCAxNiB8IGtleVByZXNzRW50cmllc1tpXS5jaGFyQ29kZSwga2V5UHJlc3NFbnRyaWVzW2ldLm5h
bWUpOworICAgIH0KKworICAgIHVuc2lnbmVkIG1vZGlmaWVycyA9IDA7CisgICAgaWYgKGV2ZW50
LnNoaWZ0S2V5KCkpCisgICAgICAgIG1vZGlmaWVycyB8PSBTaGlmdEtleTsKKyAgICBpZiAoZXZl
bnQuYWx0S2V5KCkpCisgICAgICAgIG1vZGlmaWVycyB8PSBBbHRLZXk7CisgICAgaWYgKGV2ZW50
LmNvbnRyb2xLZXkoKSkKKyAgICAgICAgbW9kaWZpZXJzIHw9IEN0cmxLZXk7CisKKyAgICAvLyBG
b3Iga2V5cHJlc3MgZXZlbnRzLCB3ZSB3YW50IGNoYXJDb2RlKCksIGJ1dCBrZXlDb2RlKCkgZG9l
cyB0aGF0LgorICAgIGludCBtYXBLZXkgPSBtb2RpZmllcnMgPDwgMTYgfCBldmVudC5uYXRpdmVW
aXJ0dWFsS2V5Q29kZSgpOworICAgIGlmIChtYXBLZXkpIHsKKyAgICAgICAgSGFzaE1hcDxpbnQs
IGNvbnN0IGNoYXIqPiogY29tbWFuZE1hcCA9IGV2ZW50LnR5cGUoKSA9PSBXZWJFdmVudDo6S2V5
RG93biA/CisgICAgICAgICAgICAma2V5RG93bkNvbW1hbmRzTWFwIDogJmtleVByZXNzQ29tbWFu
ZHNNYXA7CisgICAgICAgIGlmIChjb25zdCBjaGFyKiBjb21tYW5kU3RyaW5nID0gY29tbWFuZE1h
cC0+Z2V0KG1hcEtleSkpCisgICAgICAgICAgICBtX3RyYW5zaWVudFBlbmRpbmdFZGl0b3JDb21t
YW5kcy0+YXBwZW5kKGNvbW1hbmRTdHJpbmcpOworICAgIH0KKworICAgIG1fdHJhbnNpZW50UGVu
ZGluZ0VkaXRvckNvbW1hbmRzID0gMDsKK30KKwogYm9vbCBXZWJWaWV3Ojppc0FjdGl2ZSgpCiB7
CiAgICAgcmV0dXJuIG1faXNQYWdlQWN0aXZlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2d0ay9XZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dl
YlZpZXcuaAppbmRleCBjMjBhYjYwLi4wNTc2NmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvZ3RrL1dlYlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Z3RrL1dlYlZpZXcuaApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiUGFnZUNsaWVudC5o
IgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgorI2luY2x1ZGUgIldpbmRvd3NLZXlib2FyZENv
ZGVzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRTaXplLmg+CiAjaW5jbHVkZSA8Z2RrL2dkay5o
PgogI2luY2x1ZGUgPGdsaWIuaD4KQEAgLTY0LDYgKzY1LDkgQEAgcHVibGljOgogICAgIHZvaWQg
aGFuZGxlV2hlZWxFdmVudChHZGtFdmVudFNjcm9sbCopOwogICAgIHZvaWQgaGFuZGxlTW91c2VF
dmVudChHZGtFdmVudCosIGludCk7CiAKKyAgICAvLyBLZXlib2FyZCBldmVudHMgaGFuZGxpbmcu
CisgICAgdm9pZCBhZGRQZW5kaW5nRWRpdG9yQ29tbWFuZChjb25zdCBjaGFyKiBjb21tYW5kKTsK
KwogcHJpdmF0ZToKICAgICBXZWJWaWV3KFdlYkNvbnRleHQqLCBXZWJQYWdlR3JvdXAqKTsKIApA
QCAtMTAyLDYgKzEwNiw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHNldEZpbmRJbmRp
Y2F0b3IoUGFzc1JlZlB0cjxGaW5kSW5kaWNhdG9yPiwgYm9vbCBmYWRlT3V0KTsKICAgICB2aXJ0
dWFsIHZvaWQgZGlkQ2hhbmdlU2Nyb2xsYmFyc0Zvck1haW5GcmFtZSgpIGNvbnN0OwogICAgIHZp
cnR1YWwgdm9pZCBmbGFzaEJhY2tpbmdTdG9yZVVwZGF0ZXMoY29uc3QgVmVjdG9yPFdlYkNvcmU6
OkludFJlY3Q+JiB1cGRhdGVSZWN0cyk7CisgICAgdmlydHVhbCB2b2lkIGdldEVkaXRvckNvbW1h
bmRzRm9yS2V5RXZlbnQoY29uc3QgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudCYsIFZlY3RvcjxXVEY6
OlN0cmluZz4mKTsKIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICB2aXJ0
dWFsIHZvaWQgcGFnZURpZEVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZygpOwpAQCAtMTE3LDYg
KzEyMiw4IEBAIHByaXZhdGU6CiAgICAgR3RrV2lkZ2V0KiBtX3ZpZXdXaWRnZXQ7CiAgICAgYm9v
bCBtX2lzUGFnZUFjdGl2ZTsKICAgICBSZWZQdHI8V2ViUGFnZVByb3h5PiBtX3BhZ2U7CisgICAg
VmVjdG9yPFdURjo6U3RyaW5nPiogbV90cmFuc2llbnRQZW5kaW5nRWRpdG9yQ29tbWFuZHM7Cisg
ICAgR1JlZlB0cjxHdGtXaWRnZXQ+IG1fbmF0aXZlV2lkZ2V0OwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKaW5kZXggYjk1NDI4My4uNmE0ZjBhZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcApAQCAtMjgzLDcgKzI4Myw3IEBAIHZvaWQgV2ViRWRp
dG9yQ2xpZW50OjpyZWRvKCkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi0jaWYgIVBMQVRG
T1JNKE1BQykKKyNpZiAhUExBVEZPUk0oR1RLKSAmJiAhUExBVEZPUk0oTUFDKQogdm9pZCBXZWJF
ZGl0b3JDbGllbnQ6OmhhbmRsZUtleWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVudCogZXZlbnQpCiB7
CiAgICAgaWYgKG1fcGFnZS0+aGFuZGxlRWRpdGluZ0tleWJvYXJkRXZlbnQoZXZlbnQpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RWRpdG9yQ2xpZW50LmgKaW5kZXggOTIwMGFmMC4uYWNiODVhNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVu
dC5oCkBAIC0xMjMsNiArMTIzLDExIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHRvZ2ds
ZUF1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbigpOwogI2VuZGlmCiAKKyNpZiBQTEFURk9STShH
VEspCisgICAgYm9vbCBleGVjdXRlUGVuZGluZ0VkaXRvckNvbW1hbmRzKFdlYkNvcmU6OkZyYW1l
KiwgVmVjdG9yPFdURjo6U3RyaW5nPiwgYm9vbCk7CisgICAgdm9pZCBnZXRFZGl0b3JDb21tYW5k
c0ZvcktleUV2ZW50KGNvbnN0IFdlYkNvcmU6OktleWJvYXJkRXZlbnQqLCBWZWN0b3I8V1RGOjpT
dHJpbmc+Jik7CisjZW5kaWYKKwogICAgIFRleHRDaGVja2VyQ2xpZW50KiB0ZXh0Q2hlY2tlcigp
IHsgcmV0dXJuIHRoaXM7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBpZ25vcmVXb3JkSW5TcGVsbERv
Y3VtZW50KGNvbnN0IFN0cmluZyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRWRpdG9yQ2xpZW50R3RrLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkVkaXRvckNsaWVudEd0ay5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzA1NTg5YgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dl
YkVkaXRvckNsaWVudEd0ay5jcHAKQEAgLTAsMCArMSwxMjkgQEAKKy8qCisgKiAgQ29weXJpZ2h0
IChDKSAyMDExIElnYWxpYSBTLkwuCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqICBh
cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNp
b24gMiBvZgorICogIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGVz
c2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1
YmxpYworICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUg
dG8gdGhlIEZyZWUKKyAqICBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLAorICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViRWRpdG9yQ2xpZW50LmgiCisKKyNp
bmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIlBsYXRmb3JtS2V5Ym9hcmRFdmVudC5oIgorI2lu
Y2x1ZGUgIldlYlBhZ2UuaCIKKyNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgorI2lu
Y2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0tleWJvYXJkRXZlbnQuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKwordm9pZCBXZWJFZGl0b3JDbGllbnQ6Omdl
dEVkaXRvckNvbW1hbmRzRm9yS2V5RXZlbnQoY29uc3QgS2V5Ym9hcmRFdmVudCogZXZlbnQsIFZl
Y3RvcjxXVEY6OlN0cmluZz4mIHBlbmRpbmdFZGl0b3JDb21tYW5kcykKK3sKKyAgICBBU1NFUlQo
ZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkua2V5ZG93bkV2ZW50IHx8IGV2ZW50LT50eXBl
KCkgPT0gZXZlbnROYW1lcygpLmtleXByZXNzRXZlbnQpOworCisgICAgLy8gRmlyc3QgdHJ5IHRv
IGludGVycHJldCB0aGUgY29tbWFuZCBpbiB0aGUgVUkgYW5kIGdldCB0aGUgY29tbWFuZHMuCisg
ICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuY29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpHZXRFZGl0b3JDb21tYW5kc0ZvcktleUV2ZW50KCksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpHZXRFZGl0b3JDb21tYW5kc0ZvcktleUV2ZW50OjpSZXBseShwZW5kaW5nRWRpdG9yQ29t
bWFuZHMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bV9wYWdlLT5wYWdlSUQoKSwgQ29yZUlQQzo6Q29ubmVjdGlvbjo6Tm9UaW1lb3V0KTsKK30KKwor
Ym9vbCBXZWJFZGl0b3JDbGllbnQ6OmV4ZWN1dGVQZW5kaW5nRWRpdG9yQ29tbWFuZHMoRnJhbWUq
IGZyYW1lLCBWZWN0b3I8V1RGOjpTdHJpbmc+IHBlbmRpbmdFZGl0b3JDb21tYW5kcywgYm9vbCBh
bGxvd1RleHRJbnNlcnRpb24pCit7CisgICAgVmVjdG9yPEVkaXRvcjo6Q29tbWFuZD4gY29tbWFu
ZHM7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwZW5kaW5nRWRpdG9yQ29tbWFuZHMuc2l6
ZSgpOyBpKyspIHsKKyAgICAgICAgRWRpdG9yOjpDb21tYW5kIGNvbW1hbmQgPSBmcmFtZS0+ZWRp
dG9yKCktPmNvbW1hbmQocGVuZGluZ0VkaXRvckNvbW1hbmRzLmF0KGkpLnV0ZjgoKS5kYXRhKCkp
OworICAgICAgICBpZiAoY29tbWFuZC5pc1RleHRJbnNlcnRpb24oKSAmJiAhYWxsb3dUZXh0SW5z
ZXJ0aW9uKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGNvbW1hbmRzLmFw
cGVuZChjb21tYW5kKTsKKyAgICB9CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvbW1h
bmRzLnNpemUoKTsgaSsrKSB7CisgICAgICAgIGlmICghY29tbWFuZHMuYXQoaSkuZXhlY3V0ZSgp
KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOwor
fQorCit2b2lkIFdlYkVkaXRvckNsaWVudDo6aGFuZGxlS2V5Ym9hcmRFdmVudChLZXlib2FyZEV2
ZW50KiBldmVudCkKK3sKKyAgICBOb2RlKiBub2RlID0gZXZlbnQtPnRhcmdldCgpLT50b05vZGUo
KTsKKyAgICBBU1NFUlQobm9kZSk7CisgICAgRnJhbWUqIGZyYW1lID0gbm9kZS0+ZG9jdW1lbnQo
KS0+ZnJhbWUoKTsKKyAgICBBU1NFUlQoZnJhbWUpOworCisgICAgY29uc3QgUGxhdGZvcm1LZXli
b2FyZEV2ZW50KiBwbGF0Zm9ybUV2ZW50ID0gZXZlbnQtPmtleUV2ZW50KCk7CisgICAgaWYgKCFw
bGF0Zm9ybUV2ZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBWZWN0b3I8V1RGOjpTdHJpbmc+
IHBlbmRpbmdFZGl0b3JDb21tYW5kczsKKyAgICBnZXRFZGl0b3JDb21tYW5kc0ZvcktleUV2ZW50
KGV2ZW50LCBwZW5kaW5nRWRpdG9yQ29tbWFuZHMpOworICAgIGlmICghcGVuZGluZ0VkaXRvckNv
bW1hbmRzLmlzRW1wdHkoKSkgeworCisgICAgICAgIC8vIER1cmluZyBSYXdLZXlEb3duIGV2ZW50
cyBpZiBhbiBlZGl0b3IgY29tbWFuZCB3aWxsIGluc2VydCB0ZXh0LCBkZWZlcgorICAgICAgICAv
LyB0aGUgaW5zZXJ0aW9uIHVudGlsIHRoZSBrZXlwcmVzcyBldmVudC4gV2Ugd2FudCBrZXlkb3du
IHRvIGJ1YmJsZSB1cAorICAgICAgICAvLyB0aHJvdWdoIHRoZSBET00gZmlyc3QuCisgICAgICAg
IGlmIChwbGF0Zm9ybUV2ZW50LT50eXBlKCkgPT0gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpSYXdL
ZXlEb3duKSB7CisgICAgICAgICAgICBpZiAoZXhlY3V0ZVBlbmRpbmdFZGl0b3JDb21tYW5kcyhm
cmFtZSwgcGVuZGluZ0VkaXRvckNvbW1hbmRzLCBmYWxzZSkpCisgICAgICAgICAgICAgICAgZXZl
bnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CisKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorCisgICAgICAgIC8vIE9ubHkgYWxsb3cgdGV4dCBpbnNlcnRpb24gY29tbWFuZHMgaWYgdGhl
IGN1cnJlbnQgbm9kZSBpcyBlZGl0YWJsZS4KKyAgICAgICAgaWYgKGV4ZWN1dGVQZW5kaW5nRWRp
dG9yQ29tbWFuZHMoZnJhbWUsIHBlbmRpbmdFZGl0b3JDb21tYW5kcywgZnJhbWUtPmVkaXRvcigp
LT5jYW5FZGl0KCkpKSB7CisgICAgICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIERvbid0IGFs
bG93IHRleHQgaW5zZXJ0aW9uIGZvciBub2RlcyB0aGF0IGNhbm5vdCBlZGl0LgorICAgIGlmICgh
ZnJhbWUtPmVkaXRvcigpLT5jYW5FZGl0KCkpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIFRo
aXMgaXMganVzdCBhIG5vcm1hbCB0ZXh0IGluc2VydGlvbiwgc28gd2FpdCB0byBleGVjdXRlIHRo
ZSBpbnNlcnRpb24KKyAgICAvLyB1bnRpbCBhIGtleXByZXNzIGV2ZW50IGhhcHBlbnMuIFRoaXMg
d2lsbCBlbnN1cmUgdGhhdCB0aGUgaW5zZXJ0aW9uIHdpbGwgbm90CisgICAgLy8gYmUgcmVmbGVj
dGVkIGluIHRoZSBjb250ZW50cyBvZiB0aGUgZmllbGQgdW50aWwgdGhlIGtleXVwIERPTSBldmVu
dC4KKyAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkua2V5cHJlc3NFdmVudCkg
eworCisgICAgICAgIC8vIEZJWE1FOiBBZGQgSU0gc3VwcG9ydAorICAgICAgICAvLyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTU5NDYKKyAgICAgICAgZnJhbWUtPmVk
aXRvcigpLT5pbnNlcnRUZXh0KHBsYXRmb3JtRXZlbnQtPnRleHQoKSwgZXZlbnQpOworICAgICAg
ICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKKworICAgIH0gZWxzZSB7CisgICAgICAgIC8v
IERvbid0IGluc2VydCBudWxsIG9yIGNvbnRyb2wgY2hhcmFjdGVycyBhcyB0aGV5IGNhbiByZXN1
bHQgaW4gdW5leHBlY3RlZCBiZWhhdmlvdXIKKyAgICAgICAgaWYgKGV2ZW50LT5jaGFyQ29kZSgp
IDwgJyAnKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIC8vIERvbid0IGluc2VydCBh
bnl0aGluZyBpZiBhIG1vZGlmaWVyIGlzIHByZXNzZWQKKyAgICAgICAgaWYgKHBsYXRmb3JtRXZl
bnQtPmN0cmxLZXkoKSB8fCBwbGF0Zm9ybUV2ZW50LT5hbHRLZXkoKSkKKyAgICAgICAgICAgIHJl
dHVybjsKKworICAgICAgICBpZiAoZnJhbWUtPmVkaXRvcigpLT5pbnNlcnRUZXh0KHBsYXRmb3Jt
RXZlbnQtPnRleHQoKSwgZXZlbnQpKQorICAgICAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5k
bGVkKCk7CisgICAgfQorfQorCit2b2lkIFdlYkVkaXRvckNsaWVudDo6aGFuZGxlSW5wdXRNZXRo
b2RLZXlkb3duKEtleWJvYXJkRXZlbnQqKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRl
eCA5MGZkZmE3Li44M2QyNjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCkBAIC0xNDQwLDcgKzE0NDAsNyBAQCBXZWJGdWxsU2NyZWVuTWFuYWdl
ciogV2ViUGFnZTo6ZnVsbFNjcmVlbk1hbmFnZXIoKQogfQogI2VuZGlmCiAKLSNpZiAhUExBVEZP
Uk0oTUFDKQorI2lmICFQTEFURk9STShHVEspICYmICFQTEFURk9STShNQUMpCiBib29sIFdlYlBh
Z2U6OmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZlbnQqIGV2dCkKIHsKICAg
ICBOb2RlKiBub2RlID0gZXZ0LT50YXJnZXQoKS0+dG9Ob2RlKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCA0ZWJjOGU2Li42NWY2OWUzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTE1OSw3ICsx
NTksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBsYXlvdXRJZk5lZWRlZCgpOwogCiAgICAgLy8gLS0g
Q2FsbGVkIGZyb20gV2ViQ29yZSBjbGllbnRzLgotI2lmICFQTEFURk9STShNQUMpCisjaWYgIVBM
QVRGT1JNKEdUSykgJiYgIVBMQVRGT1JNKE1BQykKICAgICBib29sIGhhbmRsZUVkaXRpbmdLZXli
b2FyZEV2ZW50KFdlYkNvcmU6OktleWJvYXJkRXZlbnQqKTsKICNlbmRpZgogICAgIHZvaWQgc2hv
dygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9X
ZWJQYWdlR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2Vi
UGFnZUd0ay5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTdjOTk3Nwot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsv
V2ViUGFnZUd0ay5jcHAKQEAgLTAsMCArMSwxMjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogUG9ydGlvbnMgQ29weXJpZ2h0
IChjKSAyMDEwIE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDExIElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJXZWJQYWdlLmgiCisKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRl
ZC5oIgorI2luY2x1ZGUgIldlYkV2ZW50LmgiCisjaW5jbHVkZSAiV2luZG93c0tleWJvYXJkQ29k
ZXMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0ZvY3VzQ29udHJvbGxlci5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvRnJhbWUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0tleWJvYXJkRXZlbnQuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL1BhZ2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtS2V5Ym9hcmRF
dmVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2V0dGluZ3MuaD4KKwordXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit2b2lkIFdlYlBhZ2U6OnBsYXRmb3Jt
SW5pdGlhbGl6ZSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBXZWJQYWdl
OjpwbGF0Zm9ybVByZWZlcmVuY2VzRGlkQ2hhbmdlKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUm
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBzY3Jv
bGwoUGFnZSogcGFnZSwgU2Nyb2xsRGlyZWN0aW9uIGRpcmVjdGlvbiwgU2Nyb2xsR3JhbnVsYXJp
dHkgZ3JhbnVsYXJpdHkpCit7CisgICAgcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRP
ck1haW5GcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+c2Nyb2xsUmVjdXJzaXZlbHkoZGlyZWN0aW9u
LCBncmFudWxhcml0eSk7Cit9CisKK2Jvb2wgV2ViUGFnZTo6cGVyZm9ybURlZmF1bHRCZWhhdmlv
ckZvcktleUV2ZW50KGNvbnN0IFdlYktleWJvYXJkRXZlbnQmIGtleWJvYXJkRXZlbnQpCit7Cisg
ICAgaWYgKGtleWJvYXJkRXZlbnQudHlwZSgpICE9IFdlYkV2ZW50OjpLZXlEb3duICYmIGtleWJv
YXJkRXZlbnQudHlwZSgpICE9IFdlYkV2ZW50OjpSYXdLZXlEb3duKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBzd2l0Y2ggKGtleWJvYXJkRXZlbnQud2luZG93c1ZpcnR1YWxLZXlDb2Rl
KCkpIHsKKyAgICBjYXNlIFZLX0JBQ0s6CisgICAgICAgIGlmIChrZXlib2FyZEV2ZW50LnNoaWZ0
S2V5KCkpCisgICAgICAgICAgICBtX3BhZ2UtPmdvRm9yd2FyZCgpOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBtX3BhZ2UtPmdvQmFjaygpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFZL
X1NQQUNFOgorICAgICAgICBzY3JvbGwobV9wYWdlLmdldCgpLCBrZXlib2FyZEV2ZW50LnNoaWZ0
S2V5KCkgPyBTY3JvbGxVcCA6IFNjcm9sbERvd24sIFNjcm9sbEJ5UGFnZSk7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgVktfTEVGVDoKKyAgICAgICAgc2Nyb2xsKG1fcGFnZS5nZXQoKSwgU2Ny
b2xsTGVmdCwgU2Nyb2xsQnlMaW5lKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBWS19SSUdI
VDoKKyAgICAgICAgc2Nyb2xsKG1fcGFnZS5nZXQoKSwgU2Nyb2xsUmlnaHQsIFNjcm9sbEJ5TGlu
ZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVktfVVA6CisgICAgICAgIHNjcm9sbChtX3Bh
Z2UuZ2V0KCksIFNjcm9sbFVwLCBTY3JvbGxCeUxpbmUpOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIFZLX0RPV046CisgICAgICAgIHNjcm9sbChtX3BhZ2UuZ2V0KCksIFNjcm9sbERvd24sIFNj
cm9sbEJ5TGluZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVktfSE9NRToKKyAgICAgICAg
c2Nyb2xsKG1fcGFnZS5nZXQoKSwgU2Nyb2xsVXAsIFNjcm9sbEJ5RG9jdW1lbnQpOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIFZLX0VORDoKKyAgICAgICAgc2Nyb2xsKG1fcGFnZS5nZXQoKSwg
U2Nyb2xsRG93biwgU2Nyb2xsQnlEb2N1bWVudCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
VktfUFJJT1I6CisgICAgICAgIHNjcm9sbChtX3BhZ2UuZ2V0KCksIFNjcm9sbFVwLCBTY3JvbGxC
eVBhZ2UpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFZLX05FWFQ6CisgICAgICAgIHNjcm9s
bChtX3BhZ2UuZ2V0KCksIFNjcm9sbERvd24sIFNjcm9sbEJ5UGFnZSk7CisgICAgICAgIGJyZWFr
OworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworYm9vbCBXZWJQYWdlOjpwbGF0Zm9ybUhhc0xvY2FsRGF0YUZvclVSTChj
b25zdCBXZWJDb3JlOjpLVVJMJikKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK1N0cmluZyBXZWJQYWdlOjpj
YWNoZWRSZXNwb25zZU1JTUVUeXBlRm9yVVJMKGNvbnN0IFdlYkNvcmU6OktVUkwmKQoreworICAg
IC8vIEZJWE1FOiBJbXBsZW1lbnQKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK2Jvb2wgV2Vi
UGFnZTo6cGxhdGZvcm1DYW5IYW5kbGVSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudAorICAgIHJldHVybiB0cnVlOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
</data>
<flag name="review"
          id="79293"
          type_id="1"
          status="-"
          setter="mrobinson"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>86969</attachid>
            <date>2011-03-25 12:06:38 -0700</date>
            <delta_ts>2011-04-01 15:40:11 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>webpage.patch</filename>
            <type>text/plain</type>
            <size>35441</size>
            <attacher name="Alejandro G. Castro">alex</attacher>
            
              <data encoding="base64">Y29tbWl0IDcxNTgzMzNhYmRkMjZmMmY5NjdkZTczMmYxMDhmMzc5MTZlZGMzZDcKQXV0aG9yOiBB
bGVqYW5kcm8gRy4gQ2FzdHJvIDxhbGV4QGlnYWxpYS5jb20+CkRhdGU6ICAgRnJpIEphbiAyMSAx
MjoyNDowNSAyMDExICswMTAwCgogICAgMjAxMS0wMy0yNSAgQW1ydXRoIFJhaiAgPGFtcnV0aHJh
akBtb3Rvcm9sYS5jb20+IGFuZCBSYXZpIFBoYW5lZW5kcmEgS2FzaWJoYXRsYSAgPHJhdmkua2Fz
aWJoYXRsYUBtb3Rvcm9sYS5jb20+IGFuZCBBbGVqYW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2Fs
aWEuY29tPgogICAgCiAgICAgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgogICAg
CiAgICAgICAgICAgIFtHVEtdIEltcGxlbWVudCBXZWJQYWdlIGNsYXNzIGZvciBXZWJLaXQyCiAg
ICAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NDIzMAog
ICAgCiAgICAgICAgICAgIEFkZGVkIGZ1bmN0aW9ucyB0byBoYW5kbGUgdGhlIGdlbmVyYXRpb24g
b2YgY29tbWFuZHMgZnJvbSB0aGUKICAgICAgICAgICAga2V5Y29kZXMuCiAgICAKICAgICAgICAg
ICAgKiBHTlVtYWtlZmlsZS5hbToKICAgICAgICAgICAgKiBTY3JpcHRzL3dlYmtpdDIvbWVzc2Fn
ZXMucHk6CiAgICAgICAgICAgICogVUlQcm9jZXNzL1BhZ2VDbGllbnQuaDoKICAgICAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CiAgICAgICAgICAgICogVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5tZXNzYWdlcy5pbjoKICAgICAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL1dlYlBhZ2VQ
cm94eUd0ay5jcHA6CiAgICAgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0RWRpdG9y
Q29tbWFuZHNGb3JLZXlFdmVudCk6CiAgICAgICAgICAgICogVUlQcm9jZXNzL2d0ay9XZWJWaWV3
LmNwcDoKICAgICAgICAgICAgKFdlYktpdDo6YmFja3NwYWNlQ2FsbGJhY2spOgogICAgICAgICAg
ICAoV2ViS2l0OjpzZWxlY3RBbGxDYWxsYmFjayk6CiAgICAgICAgICAgIChXZWJLaXQ6OmN1dENs
aXBib2FyZENhbGxiYWNrKToKICAgICAgICAgICAgKFdlYktpdDo6Y29weUNsaXBib2FyZENhbGxi
YWNrKToKICAgICAgICAgICAgKFdlYktpdDo6cGFzdGVDbGlwYm9hcmRDYWxsYmFjayk6CiAgICAg
ICAgICAgIChXZWJLaXQ6OnRvZ2dsZU92ZXJ3cml0ZUNhbGxiYWNrKToKICAgICAgICAgICAgKFdl
YktpdDo6cG9wdXBNZW51Q2FsbGJhY2spOgogICAgICAgICAgICAoV2ViS2l0OjpzaG93SGVscENh
bGxiYWNrKToKICAgICAgICAgICAgKFdlYktpdDo6ZGVsZXRlRnJvbUN1cnNvckNhbGxiYWNrKToK
ICAgICAgICAgICAgKFdlYktpdDo6bW92ZUN1cnNvckNhbGxiYWNrKToKICAgICAgICAgICAgKFdl
YktpdDo6V2ViVmlldzo6V2ViVmlldyk6CiAgICAgICAgICAgIChXZWJLaXQ6OldlYlZpZXc6Omdl
dEVkaXRvckNvbW1hbmRzRm9yS2V5RXZlbnQpOgogICAgICAgICAgICAqIFVJUHJvY2Vzcy9ndGsv
V2ViVmlldy5oOgogICAgICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjphZGRQZW5kaW5nRWRpdG9y
Q29tbWFuZCk6CiAgICAgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuY3BwOgogICAgICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RWRpdG9yQ2xpZW50Lmg6CiAgICAgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9n
dGsvV2ViRWRpdG9yQ2xpZW50R3RrLmNwcDogQWRkZWQuCiAgICAgICAgICAgIChXZWJLaXQ6Oldl
YkVkaXRvckNsaWVudDo6Z2V0RWRpdG9yQ29tbWFuZHNGb3JLZXlFdmVudCk6CiAgICAgICAgICAg
IChXZWJLaXQ6OldlYkVkaXRvckNsaWVudDo6ZXhlY3V0ZVBlbmRpbmdFZGl0b3JDb21tYW5kcyk6
CiAgICAgICAgICAgIChXZWJLaXQ6OldlYkVkaXRvckNsaWVudDo6aGFuZGxlS2V5Ym9hcmRFdmVu
dCk6CiAgICAgICAgICAgIChXZWJLaXQ6OldlYkVkaXRvckNsaWVudDo6aGFuZGxlSW5wdXRNZXRo
b2RLZXlkb3duKToKICAgICAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6
CiAgICAgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKICAgICAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlBhZ2VHdGsuY3BwOiBBZGRlZC4KICAgICAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6cGxhdGZvcm1Jbml0aWFsaXplKToKICAgICAgICAgICAgKFdl
YktpdDo6V2ViUGFnZTo6cGxhdGZvcm1QcmVmZXJlbmNlc0RpZENoYW5nZSk6CiAgICAgICAgICAg
IChXZWJLaXQ6OnNjcm9sbCk6CiAgICAgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBlcmZvcm1E
ZWZhdWx0QmVoYXZpb3JGb3JLZXlFdmVudCk6CiAgICAgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OnBsYXRmb3JtSGFzTG9jYWxEYXRhRm9yVVJMKToKICAgICAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZTo6Y2FjaGVkUmVzcG9uc2VNSU1FVHlwZUZvclVSTCk6CiAgICAgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OnBsYXRmb3JtQ2FuSGFuZGxlUmVxdWVzdCk6CgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDcxMGFjMzYu
LmM2NWZmNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MyBAQAorMjAxMS0wMy0yNSAgQW1ydXRo
IFJhaiAgPGFtcnV0aHJhakBtb3Rvcm9sYS5jb20+IGFuZCBSYXZpIFBoYW5lZW5kcmEgS2FzaWJo
YXRsYSAgPHJhdmkua2FzaWJoYXRsYUBtb3Rvcm9sYS5jb20+IGFuZCBBbGVqYW5kcm8gRy4gQ2Fz
dHJvICA8YWxleEBpZ2FsaWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFtHVEtdIEltcGxlbWVudCBXZWJQYWdlIGNsYXNzIGZvciBXZWJLaXQy
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NDIzMAor
CisgICAgICAgIEFkZGVkIGZ1bmN0aW9ucyB0byBoYW5kbGUgdGhlIGdlbmVyYXRpb24gb2YgY29t
bWFuZHMgZnJvbSB0aGUKKyAgICAgICAga2V5Y29kZXMuCisKKyAgICAgICAgKiBHTlVtYWtlZmls
ZS5hbToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdDIvbWVzc2FnZXMucHk6CisgICAgICAgICog
VUlQcm9jZXNzL1BhZ2VDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvZ3RrL1dlYlBhZ2VQcm94eUd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6Z2V0RWRpdG9yQ29tbWFuZHNGb3JLZXlFdmVudCk6CisgICAgICAgICog
VUlQcm9jZXNzL2d0ay9XZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6YmFja3NwYWNlQ2Fs
bGJhY2spOgorICAgICAgICAoV2ViS2l0OjpzZWxlY3RBbGxDYWxsYmFjayk6CisgICAgICAgIChX
ZWJLaXQ6OmN1dENsaXBib2FyZENhbGxiYWNrKToKKyAgICAgICAgKFdlYktpdDo6Y29weUNsaXBi
b2FyZENhbGxiYWNrKToKKyAgICAgICAgKFdlYktpdDo6cGFzdGVDbGlwYm9hcmRDYWxsYmFjayk6
CisgICAgICAgIChXZWJLaXQ6OnRvZ2dsZU92ZXJ3cml0ZUNhbGxiYWNrKToKKyAgICAgICAgKFdl
YktpdDo6cG9wdXBNZW51Q2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0OjpzaG93SGVscENhbGxi
YWNrKToKKyAgICAgICAgKFdlYktpdDo6ZGVsZXRlRnJvbUN1cnNvckNhbGxiYWNrKToKKyAgICAg
ICAgKFdlYktpdDo6bW92ZUN1cnNvckNhbGxiYWNrKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmll
dzo6V2ViVmlldyk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXc6OmdldEVkaXRvckNvbW1hbmRz
Rm9yS2V5RXZlbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvV2ViVmlldy5oOgorICAgICAg
ICAoV2ViS2l0OjpXZWJWaWV3OjphZGRQZW5kaW5nRWRpdG9yQ29tbWFuZCk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRWRpdG9yQ2xpZW50R3RrLmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkVkaXRvckNsaWVudDo6Z2V0RWRpdG9yQ29tbWFuZHNG
b3JLZXlFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYkVkaXRvckNsaWVudDo6ZXhlY3V0ZVBl
bmRpbmdFZGl0b3JDb21tYW5kcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkVkaXRvckNsaWVudDo6
aGFuZGxlS2V5Ym9hcmRFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYkVkaXRvckNsaWVudDo6
aGFuZGxlSW5wdXRNZXRob2RLZXlkb3duKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlBhZ2VHdGsuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cGxhdGZvcm1Jbml0aWFsaXplKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZTo6cGxhdGZvcm1QcmVmZXJlbmNlc0RpZENoYW5nZSk6CisgICAgICAgIChX
ZWJLaXQ6OnNjcm9sbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBlcmZvcm1EZWZhdWx0
QmVoYXZpb3JGb3JLZXlFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBsYXRmb3Jt
SGFzTG9jYWxEYXRhRm9yVVJMKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y2FjaGVkUmVz
cG9uc2VNSU1FVHlwZUZvclVSTCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBsYXRmb3Jt
Q2FuSGFuZGxlUmVxdWVzdCk6CisKIDIwMTEtMDMtMjUgIEFsZWphbmRybyBHLiBDYXN0cm8gIDxh
bGV4QGlnYWxpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWFydGluIFJvYmluc29uLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvV2ViS2l0
Mi9HTlVtYWtlZmlsZS5hbQppbmRleCA5Yjc5ZTVhLi4yMDRmNmVjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmls
ZS5hbQpAQCAtNjEwLDYgKzYxMCw3IEBAIGxpYldlYktpdDJfbGFfU09VUkNFUyA9IFwKIAlTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Jlc291cmNlQ2FjaGUvV2ViUmVzb3VyY2VDYWNoZU1hbmFn
ZXIuaCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9SZXNvdXJjZUNhY2hlL1dlYlJlc291
cmNlQ2FjaGVNYW5hZ2VyLmNwcCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9ndGsvV2ViQ29udGV4dE1lbnVDbGllbnRHdGsuY3BwIFwKKwlTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJFZGl0b3JDbGllbnRHdGsuY3BwIFwK
IAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJFcnJvcnNH
dGsuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9X
ZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmggXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvZ3RrL1dlYlBvcHVwTWVudUd0ay5jcHAgXApAQCAtNjUwLDYgKzY1MSw3
IEBAIGxpYldlYktpdDJfbGFfU09VUkNFUyA9IFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuaCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL2d0ay9DaHVua2VkVXBkYXRlRHJhd2luZ0FyZWFHdGsuY3BwIFwKIAlTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYkluc3BlY3Rvckd0ay5jcHAgXAorCVNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUGFnZUd0ay5jcHAgXAogCVNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9QYWdlT3ZlcmxheS5jcHAgXAogCVNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9QYWdlT3ZlcmxheS5oIFwKIAlTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVGlsZWREcmF3aW5nQXJlYS5jcHAgXApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvU2NyaXB0cy93ZWJraXQyL21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktp
dDIvU2NyaXB0cy93ZWJraXQyL21lc3NhZ2VzLnB5CmluZGV4IDE1OWNhMzIuLjliYmM5NzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NjcmlwdHMvd2Via2l0Mi9tZXNzYWdlcy5weQorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9TY3JpcHRzL3dlYmtpdDIvbWVzc2FnZXMucHkKQEAgLTI1NCw2ICsy
NTQsNyBAQCBkZWYgbWVzc2FnZV90b19zdHJ1Y3RfZGVjbGFyYXRpb24obWVzc2FnZSk6CiAKIGRl
ZiBzdHJ1Y3Rfb3JfY2xhc3MobmFtZXNwYWNlLCB0eXBlKToKICAgICBzdHJ1Y3RzID0gZnJvemVu
c2V0KFsKKyAgICAgICAgJ1dlYkNvcmU6OkVkaXRvckNvbW1hbmRzRm9yS2V5RXZlbnQnLAogICAg
ICAgICAnV2ViQ29yZTo6Q29tcG9zaXRpb25VbmRlcmxpbmUnLAogICAgICAgICAnV2ViQ29yZTo6
R3JhbW1hckRldGFpbCcsCiAgICAgICAgICdXZWJDb3JlOjpLZXlwcmVzc0NvbW1hbmQnLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKaW5kZXggODU1NzZmOS4uNjA0OGE0YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCkBAIC0xMDYsNiArMTA2LDkgQEAgcHVi
bGljOgogI2lmIFBMQVRGT1JNKFdJTikKICAgICB2aXJ0dWFsIHZvaWQgY29tcG9zaXRpb25TZWxl
Y3Rpb25DaGFuZ2VkKGJvb2wpID0gMDsKICNlbmRpZgorI2lmIFBMQVRGT1JNKEdUSykKKyAgICB2
aXJ0dWFsIHZvaWQgZ2V0RWRpdG9yQ29tbWFuZHNGb3JLZXlFdmVudChjb25zdCBOYXRpdmVXZWJL
ZXlib2FyZEV2ZW50JiwgVmVjdG9yPFdURjo6U3RyaW5nPiYpID0gMDsKKyNlbmRpZgogICAgIHZp
cnR1YWwgV2ViQ29yZTo6RmxvYXRSZWN0IGNvbnZlcnRUb0RldmljZVNwYWNlKGNvbnN0IFdlYkNv
cmU6OkZsb2F0UmVjdCYpID0gMDsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkZsb2F0UmVjdCBjb252
ZXJ0VG9Vc2VyU3BhY2UoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JikgPSAwOwogICAgIHZpcnR1
YWwgV2ViQ29yZTo6SW50UmVjdCB3aW5kb3dUb1NjcmVlbihjb25zdCBXZWJDb3JlOjpJbnRSZWN0
JikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGNiZjI5
YjcuLmVlMGJkMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAg
LTU4Myw3ICs1ODMsMTAgQEAgcHJpdmF0ZToKICNpZiBQTEFURk9STShNQUMpCiAgICAgdm9pZCBp
bnRlcnByZXRLZXlFdmVudCh1aW50MzJfdCBldmVudFR5cGUsIFZlY3RvcjxXZWJDb3JlOjpLZXlw
cmVzc0NvbW1hbmQ+JiwgdWludDMyX3Qgc2VsZWN0aW9uU3RhcnQsIHVpbnQzMl90IHNlbGVjdGlv
bkVuZCwgVmVjdG9yPFdlYkNvcmU6OkNvbXBvc2l0aW9uVW5kZXJsaW5lPiYgdW5kZXJsaW5lcyk7
CiAjZW5kaWYKLSAgICAKKyNpZiBQTEFURk9STShHVEspCisgICAgdm9pZCBnZXRFZGl0b3JDb21t
YW5kc0ZvcktleUV2ZW50KFZlY3RvcjxXVEY6OlN0cmluZz4mKTsKKyNlbmRpZgorCiAgICAgLy8g
RmluZC4KICAgICB2b2lkIGRpZENvdW50U3RyaW5nTWF0Y2hlcyhjb25zdCBTdHJpbmcmLCB1aW50
MzJfdCBtYXRjaENvdW50KTsKICAgICB2b2lkIHNldEZpbmRJbmRpY2F0b3IoY29uc3QgV2ViQ29y
ZTo6RmxvYXRSZWN0JiBzZWxlY3Rpb25SZWN0SW5XaW5kb3dDb29yZGluYXRlcywgY29uc3QgVmVj
dG9yPFdlYkNvcmU6OkZsb2F0UmVjdD4mIHRleHRSZWN0c0luU2VsZWN0aW9uUmVjdENvb3JkaW5h
dGVzLCBjb25zdCBTaGFyZWRNZW1vcnk6OkhhbmRsZSYgY29udGVudEltYWdlSGFuZGxlLCBib29s
IGZhZGVPdXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
bWVzc2FnZXMuaW4KaW5kZXggNTVhNmRjMi4uZmU3ZGJmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0xMzYsNyArMTM2LDEy
IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgIyBSZW1vdGUgYWNjZXNzaWJpbGl0
eSBtZXNzYWdlcwogICAgIFJlZ2lzdGVyV2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbihDb3Jl
SVBDOjpEYXRhUmVmZXJlbmNlIGRhdGEpCiAjZW5kaWYKLSAgICAKKworI2lmIFBMQVRGT1JNKEdU
SykKKyAgICAjIFN1cHBvcnQgZm9yIEdUSysgcGxhdGZvcm0ga2V5YmluZGluZ3MKKyAgICBHZXRF
ZGl0b3JDb21tYW5kc0ZvcktleUV2ZW50KCkgLT4gKFZlY3RvcjxXVEY6OlN0cmluZz4gY29tbWFu
ZHNMaXN0KQorI2VuZGlmCisKICAgICAjIEJhY2tGb3J3YXJkIG1lc3NhZ2VzCiAgICAgQmFja0Zv
cndhcmRBZGRJdGVtKHVpbnQ2NF90IGl0ZW1JRCkKICAgICBCYWNrRm9yd2FyZEdvVG9JdGVtKHVp
bnQ2NF90IGl0ZW1JRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsv
V2ViUGFnZVByb3h5R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViUGFn
ZVByb3h5R3RrLmNwcAppbmRleCA4MzhkZTk3Li44YWQwOGFkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlBhZ2VQcm94eUd0ay5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2d0ay9XZWJQYWdlUHJveHlHdGsuY3BwCkBAIC0yNyw2ICsyNyw5IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCiAKKyNpbmNs
dWRlICJOYXRpdmVXZWJLZXlib2FyZEV2ZW50LmgiCisjaW5jbHVkZSAiUGFnZUNsaWVudC5oIgor
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogU3RyaW5nIFdlYlBhZ2VQcm94eTo6c3RhbmRhcmRVc2Vy
QWdlbnQoY29uc3QgU3RyaW5nJiBhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQpCkBAIC0zNSw0
ICszOCw5IEBAIFN0cmluZyBXZWJQYWdlUHJveHk6OnN0YW5kYXJkVXNlckFnZW50KGNvbnN0IFN0
cmluZyYgYXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50CiAgICAgcmV0dXJuICJNb3ppbGxhLzUu
MCAoWDExOyBMaW51eCBpNjg2KSBBcHBsZVdlYktpdC81MzQuNyAoS0hUTUwsIGxpa2UgR2Vja28p
IFZlcnNpb24vNS4wIFNhZmFyaS81MzQuNyI7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5OjpnZXRF
ZGl0b3JDb21tYW5kc0ZvcktleUV2ZW50KFZlY3RvcjxXVEY6OlN0cmluZz4mIGNvbW1hbmRzTGlz
dCkKK3sKKyAgICBtX3BhZ2VDbGllbnQtPmdldEVkaXRvckNvbW1hbmRzRm9yS2V5RXZlbnQobV9r
ZXlFdmVudFF1ZXVlLmZpcnN0KCksIGNvbW1hbmRzTGlzdCk7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJWaWV3
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViVmlldy5jcHAKaW5kZXggMmZm
NjdjZC4uYzNiNTczNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9X
ZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlZpZXcuY3Bw
CkBAIC0zOCwxMSArMzgsMTIgQEAKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAordHlwZWRlZiBIYXNoTWFwPGludCwgY29uc3QgY2hh
cio+IEludENvbnN0Q2hhckhhc2hNYXA7CisKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIAotCiB2b2lkIFdlYlZpZXc6OmhhbmRsZUZvY3VzSW5FdmVudChH
dGtXaWRnZXQqIHdpZGdldCkKIHsKICAgICBpZiAoIShtX2lzUGFnZUFjdGl2ZSkpIHsKQEAgLTU5
LDggKzYwLDE4NSBAQCB2b2lkIFdlYlZpZXc6OmhhbmRsZUZvY3VzT3V0RXZlbnQoR3RrV2lkZ2V0
KiB3aWRnZXQpCiAgICAgbV9wYWdlLT52aWV3U3RhdGVEaWRDaGFuZ2UoV2ViUGFnZVByb3h5OjpW
aWV3V2luZG93SXNBY3RpdmUpOwogfQogCisKK3N0YXRpYyB2b2lkIGJhY2tzcGFjZUNhbGxiYWNr
KEd0a1dpZGdldCogd2lkZ2V0LCBXZWJWaWV3KiBjbGllbnQpCit7CisgICAgZ19zaWduYWxfc3Rv
cF9lbWlzc2lvbl9ieV9uYW1lKHdpZGdldCwgImJhY2tzcGFjZSIpOworICAgIGNsaWVudC0+YWRk
UGVuZGluZ0VkaXRvckNvbW1hbmQoIkRlbGV0ZUJhY2t3YXJkIik7Cit9CisKK3N0YXRpYyB2b2lk
IHNlbGVjdEFsbENhbGxiYWNrKEd0a1dpZGdldCogd2lkZ2V0LCBnYm9vbGVhbiBzZWxlY3QsIFdl
YlZpZXcqIGNsaWVudCkKK3sKKyAgICBnX3NpZ25hbF9zdG9wX2VtaXNzaW9uX2J5X25hbWUod2lk
Z2V0LCAic2VsZWN0LWFsbCIpOworICAgIGNsaWVudC0+YWRkUGVuZGluZ0VkaXRvckNvbW1hbmQo
c2VsZWN0ID8gIlNlbGVjdEFsbCIgOiAiVW5zZWxlY3QiKTsKK30KKworc3RhdGljIHZvaWQgY3V0
Q2xpcGJvYXJkQ2FsbGJhY2soR3RrV2lkZ2V0KiB3aWRnZXQsIFdlYlZpZXcqIGNsaWVudCkKK3sK
KyAgICBnX3NpZ25hbF9zdG9wX2VtaXNzaW9uX2J5X25hbWUod2lkZ2V0LCAiY3V0LWNsaXBib2Fy
ZCIpOworICAgIGNsaWVudC0+YWRkUGVuZGluZ0VkaXRvckNvbW1hbmQoIkN1dCIpOworfQorCitz
dGF0aWMgdm9pZCBjb3B5Q2xpcGJvYXJkQ2FsbGJhY2soR3RrV2lkZ2V0KiB3aWRnZXQsIFdlYlZp
ZXcqIGNsaWVudCkKK3sKKyAgICBnX3NpZ25hbF9zdG9wX2VtaXNzaW9uX2J5X25hbWUod2lkZ2V0
LCAiY29weS1jbGlwYm9hcmQiKTsKKyAgICBjbGllbnQtPmFkZFBlbmRpbmdFZGl0b3JDb21tYW5k
KCJDb3B5Iik7Cit9CisKK3N0YXRpYyB2b2lkIHBhc3RlQ2xpcGJvYXJkQ2FsbGJhY2soR3RrV2lk
Z2V0KiB3aWRnZXQsIFdlYlZpZXcqIGNsaWVudCkKK3sKKyAgICBnX3NpZ25hbF9zdG9wX2VtaXNz
aW9uX2J5X25hbWUod2lkZ2V0LCAicGFzdGUtY2xpcGJvYXJkIik7CisgICAgY2xpZW50LT5hZGRQ
ZW5kaW5nRWRpdG9yQ29tbWFuZCgiUGFzdGUiKTsKK30KKworc3RhdGljIHZvaWQgdG9nZ2xlT3Zl
cndyaXRlQ2FsbGJhY2soR3RrV2lkZ2V0KiB3aWRnZXQsIEVkaXRvckNsaWVudCopCit7CisgICAg
Ly8gV2UgZG9uJ3Qgc3VwcG9ydCB0b2dnbGluZyB0aGUgb3ZlcndyaXRlIG1vZGUsIGJ1dCB0aGUg
ZGVmYXVsdCBjYWxsYmFjayBleHBlY3RzCisgICAgLy8gdGhlIEd0a1RleHRWaWV3IHRvIGhhdmUg
YSBsYXlvdXQsIHNvIHdlIGhhbmRsZSB0aGlzIHNpZ25hbCBqdXN0IHRvIHN0b3AgaXQuCisgICAg
Z19zaWduYWxfc3RvcF9lbWlzc2lvbl9ieV9uYW1lKHdpZGdldCwgInRvZ2dsZS1vdmVyd3JpdGUi
KTsKK30KKworLy8gR1RLKyB3aWxsIHN0aWxsIHNlbmQgdGhlc2Ugc2lnbmFscyB0byB0aGUgd2Vi
IHZpZXcuIFNvIHdlIGNhbiBzYWZlbHkgc3RvcCBzaWduYWwKKy8vIGVtaXNzaW9uIHdpdGhvdXQg
YnJlYWtpbmcgYWNjZXNzaWJpbGl0eS4KK3N0YXRpYyB2b2lkIHBvcHVwTWVudUNhbGxiYWNrKEd0
a1dpZGdldCogd2lkZ2V0LCBFZGl0b3JDbGllbnQqKQoreworICAgIGdfc2lnbmFsX3N0b3BfZW1p
c3Npb25fYnlfbmFtZSh3aWRnZXQsICJwb3B1cC1tZW51Iik7Cit9CisKK3N0YXRpYyB2b2lkIHNo
b3dIZWxwQ2FsbGJhY2soR3RrV2lkZ2V0KiB3aWRnZXQsIEVkaXRvckNsaWVudCopCit7CisgICAg
Z19zaWduYWxfc3RvcF9lbWlzc2lvbl9ieV9uYW1lKHdpZGdldCwgInNob3ctaGVscCIpOworfQor
CitzdGF0aWMgY29uc3QgY2hhciogY29uc3QgZ3RrRGVsZXRlQ29tbWFuZHNbXVsyXSA9IHsKKyAg
ICB7ICJEZWxldGVCYWNrd2FyZCIsICAgICAgICAgICAgICAgIkRlbGV0ZUZvcndhcmQiICAgICAg
ICAgICAgICAgICAgICAgICAgfSwgLy8gQ2hhcmFjdGVycworICAgIHsgIkRlbGV0ZVdvcmRCYWNr
d2FyZCIsICAgICAgICAgICAiRGVsZXRlV29yZEZvcndhcmQiICAgICAgICAgICAgICAgICAgICB9
LCAvLyBXb3JkIGVuZHMKKyAgICB7ICJEZWxldGVXb3JkQmFja3dhcmQiLCAgICAgICAgICAgIkRl
bGV0ZVdvcmRGb3J3YXJkIiAgICAgICAgICAgICAgICAgICAgfSwgLy8gV29yZHMKKyAgICB7ICJE
ZWxldGVUb0JlZ2lubmluZ09mTGluZSIsICAgICAgIkRlbGV0ZVRvRW5kT2ZMaW5lIiAgICAgICAg
ICAgICAgICAgICAgfSwgLy8gTGluZXMKKyAgICB7ICJEZWxldGVUb0JlZ2lubmluZ09mTGluZSIs
ICAgICAgIkRlbGV0ZVRvRW5kT2ZMaW5lIiAgICAgICAgICAgICAgICAgICAgfSwgLy8gTGluZSBl
bmRzCisgICAgeyAiRGVsZXRlVG9CZWdpbm5pbmdPZlBhcmFncmFwaCIsICJEZWxldGVUb0VuZE9m
UGFyYWdyYXBoIiAgICAgICAgICAgICAgIH0sIC8vIFBhcmFncmFwaCBlbmRzCisgICAgeyAiRGVs
ZXRlVG9CZWdpbm5pbmdPZlBhcmFncmFwaCIsICJEZWxldGVUb0VuZE9mUGFyYWdyYXBoIiAgICAg
ICAgICAgICAgIH0sIC8vIFBhcmFncmFwaHMKKyAgICB7IDAsICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAvLyBXaGl0
ZXNwYWNlIChNLVwgaW4gRW1hY3MpCit9OworCitzdGF0aWMgdm9pZCBkZWxldGVGcm9tQ3Vyc29y
Q2FsbGJhY2soR3RrV2lkZ2V0KiB3aWRnZXQsIEd0a0RlbGV0ZVR5cGUgZGVsZXRlVHlwZSwgZ2lu
dCBjb3VudCwgV2ViVmlldyogY2xpZW50KQoreworICAgIGdfc2lnbmFsX3N0b3BfZW1pc3Npb25f
YnlfbmFtZSh3aWRnZXQsICJkZWxldGUtZnJvbS1jdXJzb3IiKTsKKyAgICBpbnQgZGlyZWN0aW9u
ID0gY291bnQgPiAwID8gMSA6IDA7CisKKyAgICAvLyBFbnN1cmluZyB0aGF0IGRlbGV0ZVR5cGUg
PD0gR19OX0VMRU1FTlRTIGhlcmUgcmVzdWx0cyBpbiBhIGNvbXBpbGVyIHdhcm5pbmcKKyAgICAv
LyB0aGF0IHRoZSBjb25kaXRpb24gaXMgYWx3YXlzIHRydWUuCisKKyAgICBpZiAoZGVsZXRlVHlw
ZSA9PSBHVEtfREVMRVRFX1dPUkRTKSB7CisgICAgICAgIGlmICghZGlyZWN0aW9uKSB7CisgICAg
ICAgICAgICBjbGllbnQtPmFkZFBlbmRpbmdFZGl0b3JDb21tYW5kKCJNb3ZlV29yZEZvcndhcmQi
KTsKKyAgICAgICAgICAgIGNsaWVudC0+YWRkUGVuZGluZ0VkaXRvckNvbW1hbmQoIk1vdmVXb3Jk
QmFja3dhcmQiKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGNsaWVudC0+YWRkUGVu
ZGluZ0VkaXRvckNvbW1hbmQoIk1vdmVXb3JkQmFja3dhcmQiKTsKKyAgICAgICAgICAgIGNsaWVu
dC0+YWRkUGVuZGluZ0VkaXRvckNvbW1hbmQoIk1vdmVXb3JkRm9yd2FyZCIpOworICAgICAgICB9
CisgICAgfSBlbHNlIGlmIChkZWxldGVUeXBlID09IEdUS19ERUxFVEVfRElTUExBWV9MSU5FUykg
eworICAgICAgICBpZiAoIWRpcmVjdGlvbikKKyAgICAgICAgICAgIGNsaWVudC0+YWRkUGVuZGlu
Z0VkaXRvckNvbW1hbmQoIk1vdmVUb0JlZ2lubmluZ09mTGluZSIpOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBjbGllbnQtPmFkZFBlbmRpbmdFZGl0b3JDb21tYW5kKCJNb3ZlVG9FbmRPZkxp
bmUiKTsKKyAgICB9IGVsc2UgaWYgKGRlbGV0ZVR5cGUgPT0gR1RLX0RFTEVURV9QQVJBR1JBUEhT
KSB7CisgICAgICAgIGlmICghZGlyZWN0aW9uKQorICAgICAgICAgICAgY2xpZW50LT5hZGRQZW5k
aW5nRWRpdG9yQ29tbWFuZCgiTW92ZVRvQmVnaW5uaW5nT2ZQYXJhZ3JhcGgiKTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgY2xpZW50LT5hZGRQZW5kaW5nRWRpdG9yQ29tbWFuZCgiTW92ZVRv
RW5kT2ZQYXJhZ3JhcGgiKTsKKyAgICB9CisKKyAgICBjb25zdCBjaGFyKiByYXdDb21tYW5kID0g
Z3RrRGVsZXRlQ29tbWFuZHNbZGVsZXRlVHlwZV1bZGlyZWN0aW9uXTsKKyAgICBpZiAoIXJhd0Nv
bW1hbmQpCisgICAgICByZXR1cm47CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGFicyhjb3Vu
dCk7IGkrKykKKyAgICAgICAgY2xpZW50LT5hZGRQZW5kaW5nRWRpdG9yQ29tbWFuZChyYXdDb21t
YW5kKTsKK30KKworc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IGd0a01vdmVDb21tYW5kc1tdWzRd
ID0geworICAgIHsgIk1vdmVCYWNrd2FyZCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiTW92ZUZvcndhcmQiLAorICAgICAgIk1vdmVCYWNrd2FyZEFuZE1vZGlmeVNlbGVjdGlv
biIsICAgICAgICAgICAgICAgICAiTW92ZUZvcndhcmRBbmRNb2RpZnlTZWxlY3Rpb24iICAgICAg
ICAgICAgIH0sIC8vIEZvcndhcmQvYmFja3dhcmQgZ3JhcGhlbWUKKyAgICB7ICJNb3ZlTGVmdCIs
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1vdmVSaWdodCIsCisgICAg
ICAiTW92ZUJhY2t3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uIiwgICAgICAgICAgICAgICAgICJNb3Zl
Rm9yd2FyZEFuZE1vZGlmeVNlbGVjdGlvbiIgICAgICAgICAgICAgfSwgLy8gTGVmdC9yaWdodCBn
cmFwaGVtZQorICAgIHsgIk1vdmVXb3JkQmFja3dhcmQiLCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiTW92ZVdvcmRGb3J3YXJkIiwKKyAgICAgICJNb3ZlV29yZEJhY2t3YXJkQW5kTW9k
aWZ5U2VsZWN0aW9uIiwgICAgICAgICAgICAgIk1vdmVXb3JkRm9yd2FyZEFuZE1vZGlmeVNlbGVj
dGlvbiIgICAgICAgICB9LCAvLyBGb3J3YXJkL2JhY2t3YXJkIHdvcmQKKyAgICB7ICJNb3ZlVXAi
LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1vdmVEb3duIiwKKyAg
ICAgICJNb3ZlVXBBbmRNb2RpZnlTZWxlY3Rpb24iLCAgICAgICAgICAgICAgICAgICAgICAgIk1v
dmVEb3duQW5kTW9kaWZ5U2VsZWN0aW9uIiAgICAgICAgICAgICAgICB9LCAvLyBVcC9kb3duIGxp
bmUKKyAgICB7ICJNb3ZlVG9CZWdpbm5pbmdPZkxpbmUiLCAgICAgICAgICAgICAgICAgICAgICAg
ICAgIk1vdmVUb0VuZE9mTGluZSIsCisgICAgICAiTW92ZVRvQmVnaW5uaW5nT2ZMaW5lQW5kTW9k
aWZ5U2VsZWN0aW9uIiwgICAgICAgICJNb3ZlVG9FbmRPZkxpbmVBbmRNb2RpZnlTZWxlY3Rpb24i
ICAgICAgICAgfSwgLy8gVXAvZG93biBsaW5lIGVuZHMKKyAgICB7ICJNb3ZlUGFyYWdyYXBoRm9y
d2FyZCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1vdmVQYXJhZ3JhcGhCYWNrd2FyZCIs
CisgICAgICAiTW92ZVBhcmFncmFwaEZvcndhcmRBbmRNb2RpZnlTZWxlY3Rpb24iLCAgICAgICAg
ICJNb3ZlUGFyYWdyYXBoQmFja3dhcmRBbmRNb2RpZnlTZWxlY3Rpb24iICAgfSwgLy8gVXAvZG93
biBwYXJhZ3JhcGhzCisgICAgeyAiTW92ZVRvQmVnaW5uaW5nT2ZQYXJhZ3JhcGgiLCAgICAgICAg
ICAgICAgICAgICAgICJNb3ZlVG9FbmRPZlBhcmFncmFwaCIsCisgICAgICAiTW92ZVRvQmVnaW5u
aW5nT2ZQYXJhZ3JhcGhBbmRNb2RpZnlTZWxlY3Rpb24iLCAgICJNb3ZlVG9FbmRPZlBhcmFncmFw
aEFuZE1vZGlmeVNlbGVjdGlvbiIgICAgfSwgLy8gVXAvZG93biBwYXJhZ3JhcGggZW5kcy4KKyAg
ICB7ICJNb3ZlUGFnZVVwIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1v
dmVQYWdlRG93biIsCisgICAgICAiTW92ZVBhZ2VVcEFuZE1vZGlmeVNlbGVjdGlvbiIsICAgICAg
ICAgICAgICAgICAgICJNb3ZlUGFnZURvd25BbmRNb2RpZnlTZWxlY3Rpb24iICAgICAgICAgICAg
fSwgLy8gVXAvZG93biBwYWdlCisgICAgeyAiTW92ZVRvQmVnaW5uaW5nT2ZEb2N1bWVudCIsICAg
ICAgICAgICAgICAgICAgICAgICJNb3ZlVG9FbmRPZkRvY3VtZW50IiwKKyAgICAgICJNb3ZlVG9C
ZWdpbm5pbmdPZkRvY3VtZW50QW5kTW9kaWZ5U2VsZWN0aW9uIiwgICAgIk1vdmVUb0VuZE9mRG9j
dW1lbnRBbmRNb2RpZnlTZWxlY3Rpb24iICAgICB9LCAvLyBCZWdpbi9lbmQgb2YgYnVmZmVyCisg
ICAgeyAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAs
CisgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAvLyBIb3Jpem9u
dGFsIHBhZ2UgbW92ZW1lbnQKK307CisKK3N0YXRpYyB2b2lkIG1vdmVDdXJzb3JDYWxsYmFjayhH
dGtXaWRnZXQqIHdpZGdldCwgR3RrTW92ZW1lbnRTdGVwIHN0ZXAsIGdpbnQgY291bnQsIGdib29s
ZWFuIGV4dGVuZFNlbGVjdGlvbiwgV2ViVmlldyogY2xpZW50KQoreworICAgIGdfc2lnbmFsX3N0
b3BfZW1pc3Npb25fYnlfbmFtZSh3aWRnZXQsICJtb3ZlLWN1cnNvciIpOworICAgIGludCBkaXJl
Y3Rpb24gPSBjb3VudCA+IDAgPyAxIDogMDsKKyAgICBpZiAoZXh0ZW5kU2VsZWN0aW9uKQorICAg
ICAgICBkaXJlY3Rpb24gKz0gMjsKKworICAgIGlmIChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3Rl
cCkgPj0gR19OX0VMRU1FTlRTKGd0a01vdmVDb21tYW5kcykpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGNvbnN0IGNoYXIqIHJhd0NvbW1hbmQgPSBndGtNb3ZlQ29tbWFuZHNbc3RlcF1bZGlyZWN0
aW9uXTsKKyAgICBpZiAoIXJhd0NvbW1hbmQpCisgICAgICAgIHJldHVybjsKKworICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgYWJzKGNvdW50KTsgaSsrKQorICAgICAgICBjbGllbnQtPmFkZFBlbmRp
bmdFZGl0b3JDb21tYW5kKHJhd0NvbW1hbmQpOworfQorCitzdGF0aWMgY29uc3QgdW5zaWduZWQg
Q3RybEtleSA9IDEgPDwgMDsKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBBbHRLZXkgPSAxIDw8IDE7
CitzdGF0aWMgY29uc3QgdW5zaWduZWQgU2hpZnRLZXkgPSAxIDw8IDI7CisKK3N0cnVjdCBLZXlE
b3duRW50cnkgeworICAgIHVuc2lnbmVkIHZpcnR1YWxLZXk7CisgICAgdW5zaWduZWQgbW9kaWZp
ZXJzOworICAgIGNvbnN0IGNoYXIqIG5hbWU7Cit9OworCitzdHJ1Y3QgS2V5UHJlc3NFbnRyeSB7
CisgICAgdW5zaWduZWQgY2hhckNvZGU7CisgICAgdW5zaWduZWQgbW9kaWZpZXJzOworICAgIGNv
bnN0IGNoYXIqIG5hbWU7Cit9OworCitzdGF0aWMgY29uc3QgS2V5RG93bkVudHJ5IGtleURvd25F
bnRyaWVzW10gPSB7CisgICAgeyAnQicsICAgICAgIEN0cmxLZXksICAgICAgICAgICAgIlRvZ2ds
ZUJvbGQiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgeyAnSScsICAg
ICAgIEN0cmxLZXksICAgICAgICAgICAgIlRvZ2dsZUl0YWxpYyIgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0sCisgICAgeyBWS19FU0NBUEUsIDAsICAgICAgICAgICAgICAgICAgIkNh
bmNlbCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgeyBWS19P
RU1fUEVSSU9ELCBDdHJsS2V5LCAgICAgICAgIkNhbmNlbCIgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0sCisgICAgeyBWS19UQUIsICAgIDAsICAgICAgICAgICAgICAgICAg
Ikluc2VydFRhYiIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgeyBW
S19UQUIsICAgIFNoaWZ0S2V5LCAgICAgICAgICAgIkluc2VydEJhY2t0YWIiICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIH0sCisgICAgeyBWS19SRVRVUk4sIDAsICAgICAgICAgICAgICAg
ICAgIkluc2VydE5ld2xpbmUiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAg
eyBWS19SRVRVUk4sIEN0cmxLZXksICAgICAgICAgICAgIkluc2VydE5ld2xpbmUiICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgeyBWS19SRVRVUk4sIEFsdEtleSwgICAgICAg
ICAgICAgIkluc2VydE5ld2xpbmUiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisg
ICAgeyBWS19SRVRVUk4sIEFsdEtleSB8IFNoaWZ0S2V5LCAgIkluc2VydE5ld2xpbmUiICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0sCit9OworCitzdGF0aWMgY29uc3QgS2V5UHJlc3NF
bnRyeSBrZXlQcmVzc0VudHJpZXNbXSA9IHsKKyAgICB7ICdcdCcsICAgMCwgICAgICAgICAgICAg
ICAgICAiSW5zZXJ0VGFiIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAg
ICB7ICdcdCcsICAgU2hpZnRLZXksICAgICAgICAgICAiSW5zZXJ0QmFja3RhYiIgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7ICdccicsICAgMCwgICAgICAgICAgICAgICAg
ICAiSW5zZXJ0TmV3bGluZSIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7
ICdccicsICAgQ3RybEtleSwgICAgICAgICAgICAiSW5zZXJ0TmV3bGluZSIgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfSwKKyAgICB7ICdccicsICAgQWx0S2V5LCAgICAgICAgICAgICAi
SW5zZXJ0TmV3bGluZSIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7ICdc
cicsICAgQWx0S2V5IHwgU2hpZnRLZXksICAiSW5zZXJ0TmV3bGluZSIgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfSwKK307CisKIFdlYlZpZXc6OldlYlZpZXcoV2ViQ29udGV4dCogY29u
dGV4dCwgV2ViUGFnZUdyb3VwKiBwYWdlR3JvdXApCiAgICAgOiBtX2lzUGFnZUFjdGl2ZSh0cnVl
KQorICAgICwgbV9uYXRpdmVXaWRnZXQoZ3RrX3RleHRfdmlld19uZXcoKSkKIHsKICAgICBtX3Bh
Z2UgPSBjb250ZXh0LT5jcmVhdGVXZWJQYWdlKHRoaXMsIHBhZ2VHcm91cCk7CiAKQEAgLTcxLDYg
KzI0OSwxNyBAQCBXZWJWaWV3OjpXZWJWaWV3KFdlYkNvbnRleHQqIGNvbnRleHQsIFdlYlBhZ2VH
cm91cCogcGFnZUdyb3VwKQogCiAgICAgV2ViVmlld1dpZGdldCogd2ViVmlld1dpZGdldCA9IFdF
Ql9WSUVXX1dJREdFVChtX3ZpZXdXaWRnZXQpOwogICAgIHdlYlZpZXdXaWRnZXRTZXRXZWJWaWV3
SW5zdGFuY2Uod2ViVmlld1dpZGdldCwgdGhpcyk7CisKKyAgICBnX3NpZ25hbF9jb25uZWN0KG1f
bmF0aXZlV2lkZ2V0LmdldCgpLCAiYmFja3NwYWNlIiwgR19DQUxMQkFDSyhiYWNrc3BhY2VDYWxs
YmFjayksIHRoaXMpOworICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9uYXRpdmVXaWRnZXQuZ2V0KCks
ICJjdXQtY2xpcGJvYXJkIiwgR19DQUxMQkFDSyhjdXRDbGlwYm9hcmRDYWxsYmFjayksIHRoaXMp
OworICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9uYXRpdmVXaWRnZXQuZ2V0KCksICJjb3B5LWNsaXBi
b2FyZCIsIEdfQ0FMTEJBQ0soY29weUNsaXBib2FyZENhbGxiYWNrKSwgdGhpcyk7CisgICAgZ19z
aWduYWxfY29ubmVjdChtX25hdGl2ZVdpZGdldC5nZXQoKSwgInBhc3RlLWNsaXBib2FyZCIsIEdf
Q0FMTEJBQ0socGFzdGVDbGlwYm9hcmRDYWxsYmFjayksIHRoaXMpOworICAgIGdfc2lnbmFsX2Nv
bm5lY3QobV9uYXRpdmVXaWRnZXQuZ2V0KCksICJzZWxlY3QtYWxsIiwgR19DQUxMQkFDSyhzZWxl
Y3RBbGxDYWxsYmFjayksIHRoaXMpOworICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9uYXRpdmVXaWRn
ZXQuZ2V0KCksICJtb3ZlLWN1cnNvciIsIEdfQ0FMTEJBQ0sobW92ZUN1cnNvckNhbGxiYWNrKSwg
dGhpcyk7CisgICAgZ19zaWduYWxfY29ubmVjdChtX25hdGl2ZVdpZGdldC5nZXQoKSwgImRlbGV0
ZS1mcm9tLWN1cnNvciIsIEdfQ0FMTEJBQ0soZGVsZXRlRnJvbUN1cnNvckNhbGxiYWNrKSwgdGhp
cyk7CisgICAgZ19zaWduYWxfY29ubmVjdChtX25hdGl2ZVdpZGdldC5nZXQoKSwgInRvZ2dsZS1v
dmVyd3JpdGUiLCBHX0NBTExCQUNLKHRvZ2dsZU92ZXJ3cml0ZUNhbGxiYWNrKSwgdGhpcyk7Cisg
ICAgZ19zaWduYWxfY29ubmVjdChtX25hdGl2ZVdpZGdldC5nZXQoKSwgInBvcHVwLW1lbnUiLCBH
X0NBTExCQUNLKHBvcHVwTWVudUNhbGxiYWNrKSwgdGhpcyk7CisgICAgZ19zaWduYWxfY29ubmVj
dChtX25hdGl2ZVdpZGdldC5nZXQoKSwgInNob3ctaGVscCIsIEdfQ0FMTEJBQ0soc2hvd0hlbHBD
YWxsYmFjayksIHRoaXMpOwogfQogCiBXZWJWaWV3Ojp+V2ViVmlldygpCkBAIC0xMDcsNiArMjk2
LDUyIEBAIHZvaWQgV2ViVmlldzo6aGFuZGxlV2hlZWxFdmVudChHZGtFdmVudFNjcm9sbCogZXZl
bnQpCiAgICAgbV9wYWdlLT5oYW5kbGVXaGVlbEV2ZW50KFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRl
V2ViV2hlZWxFdmVudChldmVudCkpOwogfQogCit2b2lkIFdlYlZpZXc6OmdldEVkaXRvckNvbW1h
bmRzRm9yS2V5RXZlbnQoY29uc3QgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudCYgZXZlbnQsIFZlY3Rv
cjxXVEY6OlN0cmluZz4mIGNvbW1hbmRMaXN0KQoreworICAgIG1fcGVuZGluZ0VkaXRvckNvbW1h
bmRzLmNsZWFyKCk7CisKKyNpZmRlZiBHVEtfQVBJX1ZFUlNJT05fMgorICAgIGd0a19iaW5kaW5n
c19hY3RpdmF0ZV9ldmVudChHVEtfT0JKRUNUKG1fbmF0aXZlV2lkZ2V0LmdldCgpKSwgY29uc3Rf
Y2FzdDxHZGtFdmVudEtleSo+KCZldmVudC5uYXRpdmVFdmVudCgpLT5rZXkpKTsKKyNlbHNlCisg
ICAgZ3RrX2JpbmRpbmdzX2FjdGl2YXRlX2V2ZW50KEdfT0JKRUNUKG1fbmF0aXZlV2lkZ2V0Lmdl
dCgpKSwgY29uc3RfY2FzdDxHZGtFdmVudEtleSo+KCZldmVudC5uYXRpdmVFdmVudCgpLT5rZXkp
KTsKKyNlbmRpZgorCisgICAgaWYgKG1fcGVuZGluZ0VkaXRvckNvbW1hbmRzLmlzRW1wdHkoKSkg
eworICAgICAgICBjb21tYW5kTGlzdC5hcHBlbmQobV9wZW5kaW5nRWRpdG9yQ29tbWFuZHMpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChJbnRDb25z
dENoYXJIYXNoTWFwLCBrZXlEb3duQ29tbWFuZHNNYXAsICgpKTsKKyAgICBERUZJTkVfU1RBVElD
X0xPQ0FMKEludENvbnN0Q2hhckhhc2hNYXAsIGtleVByZXNzQ29tbWFuZHNNYXAsICgpKTsKKwor
ICAgIGlmIChrZXlEb3duQ29tbWFuZHNNYXAuaXNFbXB0eSgpKSB7CisgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBHX05fRUxFTUVOVFMoa2V5RG93bkVudHJpZXMpOyBpKyspCisgICAg
ICAgICAgICBrZXlEb3duQ29tbWFuZHNNYXAuc2V0KGtleURvd25FbnRyaWVzW2ldLm1vZGlmaWVy
cyA8PCAxNiB8IGtleURvd25FbnRyaWVzW2ldLnZpcnR1YWxLZXksIGtleURvd25FbnRyaWVzW2ld
Lm5hbWUpOworCisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBHX05fRUxFTUVOVFMo
a2V5UHJlc3NFbnRyaWVzKTsgaSsrKQorICAgICAgICAgICAga2V5UHJlc3NDb21tYW5kc01hcC5z
ZXQoa2V5UHJlc3NFbnRyaWVzW2ldLm1vZGlmaWVycyA8PCAxNiB8IGtleVByZXNzRW50cmllc1tp
XS5jaGFyQ29kZSwga2V5UHJlc3NFbnRyaWVzW2ldLm5hbWUpOworICAgIH0KKworICAgIHVuc2ln
bmVkIG1vZGlmaWVycyA9IDA7CisgICAgaWYgKGV2ZW50LnNoaWZ0S2V5KCkpCisgICAgICAgIG1v
ZGlmaWVycyB8PSBTaGlmdEtleTsKKyAgICBpZiAoZXZlbnQuYWx0S2V5KCkpCisgICAgICAgIG1v
ZGlmaWVycyB8PSBBbHRLZXk7CisgICAgaWYgKGV2ZW50LmNvbnRyb2xLZXkoKSkKKyAgICAgICAg
bW9kaWZpZXJzIHw9IEN0cmxLZXk7CisKKyAgICAvLyBGb3Iga2V5cHJlc3MgZXZlbnRzLCB3ZSB3
YW50IGNoYXJDb2RlKCksIGJ1dCBrZXlDb2RlKCkgZG9lcyB0aGF0LgorICAgIGludCBtYXBLZXkg
PSBtb2RpZmllcnMgPDwgMTYgfCBldmVudC5uYXRpdmVWaXJ0dWFsS2V5Q29kZSgpOworICAgIGlm
IChtYXBLZXkpIHsKKyAgICAgICAgSGFzaE1hcDxpbnQsIGNvbnN0IGNoYXIqPiogY29tbWFuZE1h
cCA9IGV2ZW50LnR5cGUoKSA9PSBXZWJFdmVudDo6S2V5RG93biA/CisgICAgICAgICAgICAma2V5
RG93bkNvbW1hbmRzTWFwIDogJmtleVByZXNzQ29tbWFuZHNNYXA7CisgICAgICAgIGlmIChjb25z
dCBjaGFyKiBjb21tYW5kU3RyaW5nID0gY29tbWFuZE1hcC0+Z2V0KG1hcEtleSkpCisgICAgICAg
ICAgICBtX3BlbmRpbmdFZGl0b3JDb21tYW5kcy5hcHBlbmQoY29tbWFuZFN0cmluZyk7CisgICAg
fQorCisgICAgY29tbWFuZExpc3QuYXBwZW5kKG1fcGVuZGluZ0VkaXRvckNvbW1hbmRzKTsKK30K
KwogYm9vbCBXZWJWaWV3Ojppc0FjdGl2ZSgpCiB7CiAgICAgcmV0dXJuIG1faXNQYWdlQWN0aXZl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJWaWV3LmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlZpZXcuaAppbmRleCBjMjBhYjYwLi5hZTVk
NTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlZpZXcuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlZpZXcuaApAQCAtMzAsNiArMzAs
NyBAQAogCiAjaW5jbHVkZSAiUGFnZUNsaWVudC5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5o
IgorI2luY2x1ZGUgIldpbmRvd3NLZXlib2FyZENvZGVzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9J
bnRTaXplLmg+CiAjaW5jbHVkZSA8Z2RrL2dkay5oPgogI2luY2x1ZGUgPGdsaWIuaD4KQEAgLTY0
LDYgKzY1LDkgQEAgcHVibGljOgogICAgIHZvaWQgaGFuZGxlV2hlZWxFdmVudChHZGtFdmVudFNj
cm9sbCopOwogICAgIHZvaWQgaGFuZGxlTW91c2VFdmVudChHZGtFdmVudCosIGludCk7CiAKKyAg
ICAvLyBLZXlib2FyZCBldmVudHMgaGFuZGxpbmcuCisgICAgdm9pZCBhZGRQZW5kaW5nRWRpdG9y
Q29tbWFuZChjb25zdCBjaGFyKiBjb21tYW5kKSB7IG1fcGVuZGluZ0VkaXRvckNvbW1hbmRzLmFw
cGVuZChXVEY6OlN0cmluZyhjb21tYW5kKSk7IH0KKwogcHJpdmF0ZToKICAgICBXZWJWaWV3KFdl
YkNvbnRleHQqLCBXZWJQYWdlR3JvdXAqKTsKIApAQCAtMTAyLDYgKzEwNiw3IEBAIHByaXZhdGU6
CiAgICAgdmlydHVhbCB2b2lkIHNldEZpbmRJbmRpY2F0b3IoUGFzc1JlZlB0cjxGaW5kSW5kaWNh
dG9yPiwgYm9vbCBmYWRlT3V0KTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlU2Nyb2xsYmFy
c0Zvck1haW5GcmFtZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBmbGFzaEJhY2tpbmdTdG9y
ZVVwZGF0ZXMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+JiB1cGRhdGVSZWN0cyk7Cisg
ICAgdmlydHVhbCB2b2lkIGdldEVkaXRvckNvbW1hbmRzRm9yS2V5RXZlbnQoY29uc3QgTmF0aXZl
V2ViS2V5Ym9hcmRFdmVudCYsIFZlY3RvcjxXVEY6OlN0cmluZz4mKTsKIAogI2lmIFVTRShBQ0NF
TEVSQVRFRF9DT01QT1NJVElORykKICAgICB2aXJ0dWFsIHZvaWQgcGFnZURpZEVudGVyQWNjZWxl
cmF0ZWRDb21wb3NpdGluZygpOwpAQCAtMTE3LDYgKzEyMiw4IEBAIHByaXZhdGU6CiAgICAgR3Rr
V2lkZ2V0KiBtX3ZpZXdXaWRnZXQ7CiAgICAgYm9vbCBtX2lzUGFnZUFjdGl2ZTsKICAgICBSZWZQ
dHI8V2ViUGFnZVByb3h5PiBtX3BhZ2U7CisgICAgVmVjdG9yPFdURjo6U3RyaW5nPiBtX3BlbmRp
bmdFZGl0b3JDb21tYW5kczsKKyAgICBHUmVmUHRyPEd0a1dpZGdldD4gbV9uYXRpdmVXaWRnZXQ7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAppbmRl
eCBiOTU0MjgzLi42YTRmMGFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCkBAIC0yODMsNyAr
MjgzLDcgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnJlZG8oKQogICAgIG5vdEltcGxlbWVudGVk
KCk7CiB9CiAKLSNpZiAhUExBVEZPUk0oTUFDKQorI2lmICFQTEFURk9STShHVEspICYmICFQTEFU
Rk9STShNQUMpCiB2b2lkIFdlYkVkaXRvckNsaWVudDo6aGFuZGxlS2V5Ym9hcmRFdmVudChLZXli
b2FyZEV2ZW50KiBldmVudCkKIHsKICAgICBpZiAobV9wYWdlLT5oYW5kbGVFZGl0aW5nS2V5Ym9h
cmRFdmVudChldmVudCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAppbmRleCA5MjAwYWYwLi5hY2I4NWE3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAgLTEyMyw2ICsxMjMsMTEgQEAgcHJpdmF0ZToKICAg
ICB2aXJ0dWFsIHZvaWQgdG9nZ2xlQXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uKCk7CiAjZW5k
aWYKIAorI2lmIFBMQVRGT1JNKEdUSykKKyAgICBib29sIGV4ZWN1dGVQZW5kaW5nRWRpdG9yQ29t
bWFuZHMoV2ViQ29yZTo6RnJhbWUqLCBWZWN0b3I8V1RGOjpTdHJpbmc+LCBib29sKTsKKyAgICB2
b2lkIGdldEVkaXRvckNvbW1hbmRzRm9yS2V5RXZlbnQoY29uc3QgV2ViQ29yZTo6S2V5Ym9hcmRF
dmVudCosIFZlY3RvcjxXVEY6OlN0cmluZz4mKTsKKyNlbmRpZgorCiAgICAgVGV4dENoZWNrZXJD
bGllbnQqIHRleHRDaGVja2VyKCkgeyByZXR1cm4gdGhpczsgfQogCiAgICAgdmlydHVhbCB2b2lk
IGlnbm9yZVdvcmRJblNwZWxsRG9jdW1lbnQoY29uc3QgU3RyaW5nJik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJFZGl0b3JDbGll
bnRHdGsuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsv
V2ViRWRpdG9yQ2xpZW50R3RrLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li5jMDU1ODliCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9ndGsvV2ViRWRpdG9yQ2xpZW50R3RrLmNwcApAQCAtMCwwICsxLDEyOSBA
QAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMuTC4KKyAqCisgKiAgVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgor
ICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZQorICogIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCisgKiAgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisg
KiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQorICogIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiAgQm9zdG9uLCBNQSAw
MjExMC0xMzAxIFVTQQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJF
ZGl0b3JDbGllbnQuaCIKKworI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1L
ZXlib2FyZEV2ZW50LmgiCisjaW5jbHVkZSAiV2ViUGFnZS5oIgorI2luY2x1ZGUgIldlYlBhZ2VQ
cm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgPFdlYkNv
cmUvS2V5Ym9hcmRFdmVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4K
KwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit2b2lk
IFdlYkVkaXRvckNsaWVudDo6Z2V0RWRpdG9yQ29tbWFuZHNGb3JLZXlFdmVudChjb25zdCBLZXli
b2FyZEV2ZW50KiBldmVudCwgVmVjdG9yPFdURjo6U3RyaW5nPiYgcGVuZGluZ0VkaXRvckNvbW1h
bmRzKQoreworICAgIEFTU0VSVChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5rZXlkb3du
RXZlbnQgfHwgZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkua2V5cHJlc3NFdmVudCk7CisK
KyAgICAvLyBGaXJzdCB0cnkgdG8gaW50ZXJwcmV0IHRoZSBjb21tYW5kIGluIHRoZSBVSSBhbmQg
Z2V0IHRoZSBjb21tYW5kcy4KKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5jb25uZWN0aW9uKCkt
PnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkdldEVkaXRvckNvbW1hbmRzRm9yS2V5
RXZlbnQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkdldEVkaXRvckNvbW1hbmRzRm9yS2V5RXZlbnQ6OlJl
cGx5KHBlbmRpbmdFZGl0b3JDb21tYW5kcyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtX3BhZ2UtPnBhZ2VJRCgpLCBDb3JlSVBDOjpDb25uZWN0aW9u
OjpOb1RpbWVvdXQpOworfQorCitib29sIFdlYkVkaXRvckNsaWVudDo6ZXhlY3V0ZVBlbmRpbmdF
ZGl0b3JDb21tYW5kcyhGcmFtZSogZnJhbWUsIFZlY3RvcjxXVEY6OlN0cmluZz4gcGVuZGluZ0Vk
aXRvckNvbW1hbmRzLCBib29sIGFsbG93VGV4dEluc2VydGlvbikKK3sKKyAgICBWZWN0b3I8RWRp
dG9yOjpDb21tYW5kPiBjb21tYW5kczsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBlbmRp
bmdFZGl0b3JDb21tYW5kcy5zaXplKCk7IGkrKykgeworICAgICAgICBFZGl0b3I6OkNvbW1hbmQg
Y29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZChwZW5kaW5nRWRpdG9yQ29tbWFuZHMu
YXQoaSkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIGlmIChjb21tYW5kLmlzVGV4dEluc2VydGlv
bigpICYmICFhbGxvd1RleHRJbnNlcnRpb24pCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICAgICAgY29tbWFuZHMuYXBwZW5kKGNvbW1hbmQpOworICAgIH0KKworICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgY29tbWFuZHMuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgaWYgKCFjb21t
YW5kcy5hdChpKS5leGVjdXRlKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpoYW5kbGVLZXli
b2FyZEV2ZW50KEtleWJvYXJkRXZlbnQqIGV2ZW50KQoreworICAgIE5vZGUqIG5vZGUgPSBldmVu
dC0+dGFyZ2V0KCktPnRvTm9kZSgpOworICAgIEFTU0VSVChub2RlKTsKKyAgICBGcmFtZSogZnJh
bWUgPSBub2RlLT5kb2N1bWVudCgpLT5mcmFtZSgpOworICAgIEFTU0VSVChmcmFtZSk7CisKKyAg
ICBjb25zdCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQqIHBsYXRmb3JtRXZlbnQgPSBldmVudC0+a2V5
RXZlbnQoKTsKKyAgICBpZiAoIXBsYXRmb3JtRXZlbnQpCisgICAgICAgIHJldHVybjsKKworICAg
IFZlY3RvcjxXVEY6OlN0cmluZz4gcGVuZGluZ0VkaXRvckNvbW1hbmRzOworICAgIGdldEVkaXRv
ckNvbW1hbmRzRm9yS2V5RXZlbnQoZXZlbnQsIHBlbmRpbmdFZGl0b3JDb21tYW5kcyk7CisgICAg
aWYgKCFwZW5kaW5nRWRpdG9yQ29tbWFuZHMuaXNFbXB0eSgpKSB7CisKKyAgICAgICAgLy8gRHVy
aW5nIFJhd0tleURvd24gZXZlbnRzIGlmIGFuIGVkaXRvciBjb21tYW5kIHdpbGwgaW5zZXJ0IHRl
eHQsIGRlZmVyCisgICAgICAgIC8vIHRoZSBpbnNlcnRpb24gdW50aWwgdGhlIGtleXByZXNzIGV2
ZW50LiBXZSB3YW50IGtleWRvd24gdG8gYnViYmxlIHVwCisgICAgICAgIC8vIHRocm91Z2ggdGhl
IERPTSBmaXJzdC4KKyAgICAgICAgaWYgKHBsYXRmb3JtRXZlbnQtPnR5cGUoKSA9PSBQbGF0Zm9y
bUtleWJvYXJkRXZlbnQ6OlJhd0tleURvd24pIHsKKyAgICAgICAgICAgIGlmIChleGVjdXRlUGVu
ZGluZ0VkaXRvckNvbW1hbmRzKGZyYW1lLCBwZW5kaW5nRWRpdG9yQ29tbWFuZHMsIGZhbHNlKSkK
KyAgICAgICAgICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKKworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgLy8gT25seSBhbGxvdyB0ZXh0IGluc2Vy
dGlvbiBjb21tYW5kcyBpZiB0aGUgY3VycmVudCBub2RlIGlzIGVkaXRhYmxlLgorICAgICAgICBp
ZiAoZXhlY3V0ZVBlbmRpbmdFZGl0b3JDb21tYW5kcyhmcmFtZSwgcGVuZGluZ0VkaXRvckNvbW1h
bmRzLCBmcmFtZS0+ZWRpdG9yKCktPmNhbkVkaXQoKSkpIHsKKyAgICAgICAgICAgIGV2ZW50LT5z
ZXREZWZhdWx0SGFuZGxlZCgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAg
fQorCisgICAgLy8gRG9uJ3QgYWxsb3cgdGV4dCBpbnNlcnRpb24gZm9yIG5vZGVzIHRoYXQgY2Fu
bm90IGVkaXQuCisgICAgaWYgKCFmcmFtZS0+ZWRpdG9yKCktPmNhbkVkaXQoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgLy8gVGhpcyBpcyBqdXN0IGEgbm9ybWFsIHRleHQgaW5zZXJ0aW9uLCBz
byB3YWl0IHRvIGV4ZWN1dGUgdGhlIGluc2VydGlvbgorICAgIC8vIHVudGlsIGEga2V5cHJlc3Mg
ZXZlbnQgaGFwcGVucy4gVGhpcyB3aWxsIGVuc3VyZSB0aGF0IHRoZSBpbnNlcnRpb24gd2lsbCBu
b3QKKyAgICAvLyBiZSByZWZsZWN0ZWQgaW4gdGhlIGNvbnRlbnRzIG9mIHRoZSBmaWVsZCB1bnRp
bCB0aGUga2V5dXAgRE9NIGV2ZW50LgorICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFt
ZXMoKS5rZXlwcmVzc0V2ZW50KSB7CisKKyAgICAgICAgLy8gRklYTUU6IEFkZCBJTSBzdXBwb3J0
CisgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NTk0
NgorICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmluc2VydFRleHQocGxhdGZvcm1FdmVudC0+dGV4
dCgpLCBldmVudCk7CisgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOworCisgICAg
fSBlbHNlIHsKKyAgICAgICAgLy8gRG9uJ3QgaW5zZXJ0IG51bGwgb3IgY29udHJvbCBjaGFyYWN0
ZXJzIGFzIHRoZXkgY2FuIHJlc3VsdCBpbiB1bmV4cGVjdGVkIGJlaGF2aW91cgorICAgICAgICBp
ZiAoZXZlbnQtPmNoYXJDb2RlKCkgPCAnICcpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAg
ICAgLy8gRG9uJ3QgaW5zZXJ0IGFueXRoaW5nIGlmIGEgbW9kaWZpZXIgaXMgcHJlc3NlZAorICAg
ICAgICBpZiAocGxhdGZvcm1FdmVudC0+Y3RybEtleSgpIHx8IHBsYXRmb3JtRXZlbnQtPmFsdEtl
eSgpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmIChmcmFtZS0+ZWRpdG9yKCkt
Pmluc2VydFRleHQocGxhdGZvcm1FdmVudC0+dGV4dCgpLCBldmVudCkpCisgICAgICAgICAgICBl
dmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKKyAgICB9Cit9CisKK3ZvaWQgV2ViRWRpdG9yQ2xp
ZW50OjpoYW5kbGVJbnB1dE1ldGhvZEtleWRvd24oS2V5Ym9hcmRFdmVudCopCit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCmluZGV4IDkwZmRmYTcuLjgzZDI2N2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTE0NDAsNyArMTQ0MCw3IEBA
IFdlYkZ1bGxTY3JlZW5NYW5hZ2VyKiBXZWJQYWdlOjpmdWxsU2NyZWVuTWFuYWdlcigpCiB9CiAj
ZW5kaWYKIAotI2lmICFQTEFURk9STShNQUMpCisjaWYgIVBMQVRGT1JNKEdUSykgJiYgIVBMQVRG
T1JNKE1BQykKIGJvb2wgV2ViUGFnZTo6aGFuZGxlRWRpdGluZ0tleWJvYXJkRXZlbnQoS2V5Ym9h
cmRFdmVudCogZXZ0KQogewogICAgIE5vZGUqIG5vZGUgPSBldnQtPnRhcmdldCgpLT50b05vZGUo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDRl
YmM4ZTYuLjY1ZjY5ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaApAQCAtMTU5LDcgKzE1OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGxheW91dElmTmVl
ZGVkKCk7CiAKICAgICAvLyAtLSBDYWxsZWQgZnJvbSBXZWJDb3JlIGNsaWVudHMuCi0jaWYgIVBM
QVRGT1JNKE1BQykKKyNpZiAhUExBVEZPUk0oR1RLKSAmJiAhUExBVEZPUk0oTUFDKQogICAgIGJv
b2wgaGFuZGxlRWRpdGluZ0tleWJvYXJkRXZlbnQoV2ViQ29yZTo6S2V5Ym9hcmRFdmVudCopOwog
I2VuZGlmCiAgICAgdm9pZCBzaG93KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlBhZ2VHdGsuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL2d0ay9XZWJQYWdlR3RrLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi41N2M5OTc3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQYWdlR3RrLmNwcApAQCAtMCwwICsxLDEyNSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDIwMTAgTW90b3JvbGEgTW9iaWxpdHksIEluYy4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMuTC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlBhZ2UuaCIKKworI2lu
Y2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSAiV2ViRXZlbnQuaCIKKyNpbmNsdWRl
ICJXaW5kb3dzS2V5Ym9hcmRDb2Rlcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvRm9jdXNDb250cm9s
bGVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvS2V5
Ym9hcmRFdmVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvUGxhdGZvcm1LZXlib2FyZEV2ZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TZXR0aW5ncy5o
PgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3Zv
aWQgV2ViUGFnZTo6cGxhdGZvcm1Jbml0aWFsaXplKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworfQorCit2b2lkIFdlYlBhZ2U6OnBsYXRmb3JtUHJlZmVyZW5jZXNEaWRDaGFuZ2UoY29uc3Qg
V2ViUHJlZmVyZW5jZXNTdG9yZSYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworc3Rh
dGljIGlubGluZSB2b2lkIHNjcm9sbChQYWdlKiBwYWdlLCBTY3JvbGxEaXJlY3Rpb24gZGlyZWN0
aW9uLCBTY3JvbGxHcmFudWxhcml0eSBncmFudWxhcml0eSkKK3sKKyAgICBwYWdlLT5mb2N1c0Nv
bnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5zY3JvbGxS
ZWN1cnNpdmVseShkaXJlY3Rpb24sIGdyYW51bGFyaXR5KTsKK30KKworYm9vbCBXZWJQYWdlOjpw
ZXJmb3JtRGVmYXVsdEJlaGF2aW9yRm9yS2V5RXZlbnQoY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYg
a2V5Ym9hcmRFdmVudCkKK3sKKyAgICBpZiAoa2V5Ym9hcmRFdmVudC50eXBlKCkgIT0gV2ViRXZl
bnQ6OktleURvd24gJiYga2V5Ym9hcmRFdmVudC50eXBlKCkgIT0gV2ViRXZlbnQ6OlJhd0tleURv
d24pCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHN3aXRjaCAoa2V5Ym9hcmRFdmVudC53
aW5kb3dzVmlydHVhbEtleUNvZGUoKSkgeworICAgIGNhc2UgVktfQkFDSzoKKyAgICAgICAgaWYg
KGtleWJvYXJkRXZlbnQuc2hpZnRLZXkoKSkKKyAgICAgICAgICAgIG1fcGFnZS0+Z29Gb3J3YXJk
KCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fcGFnZS0+Z29CYWNrKCk7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgVktfU1BBQ0U6CisgICAgICAgIHNjcm9sbChtX3BhZ2UuZ2V0KCks
IGtleWJvYXJkRXZlbnQuc2hpZnRLZXkoKSA/IFNjcm9sbFVwIDogU2Nyb2xsRG93biwgU2Nyb2xs
QnlQYWdlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBWS19MRUZUOgorICAgICAgICBzY3Jv
bGwobV9wYWdlLmdldCgpLCBTY3JvbGxMZWZ0LCBTY3JvbGxCeUxpbmUpOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIFZLX1JJR0hUOgorICAgICAgICBzY3JvbGwobV9wYWdlLmdldCgpLCBTY3Jv
bGxSaWdodCwgU2Nyb2xsQnlMaW5lKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBWS19VUDoK
KyAgICAgICAgc2Nyb2xsKG1fcGFnZS5nZXQoKSwgU2Nyb2xsVXAsIFNjcm9sbEJ5TGluZSk7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgVktfRE9XTjoKKyAgICAgICAgc2Nyb2xsKG1fcGFnZS5n
ZXQoKSwgU2Nyb2xsRG93biwgU2Nyb2xsQnlMaW5lKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBWS19IT01FOgorICAgICAgICBzY3JvbGwobV9wYWdlLmdldCgpLCBTY3JvbGxVcCwgU2Nyb2xs
QnlEb2N1bWVudCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVktfRU5EOgorICAgICAgICBz
Y3JvbGwobV9wYWdlLmdldCgpLCBTY3JvbGxEb3duLCBTY3JvbGxCeURvY3VtZW50KTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBWS19QUklPUjoKKyAgICAgICAgc2Nyb2xsKG1fcGFnZS5nZXQo
KSwgU2Nyb2xsVXAsIFNjcm9sbEJ5UGFnZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVktf
TkVYVDoKKyAgICAgICAgc2Nyb2xsKG1fcGFnZS5nZXQoKSwgU2Nyb2xsRG93biwgU2Nyb2xsQnlQ
YWdlKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFdlYlBhZ2U6OnBsYXRmb3Jt
SGFzTG9jYWxEYXRhRm9yVVJMKGNvbnN0IFdlYkNvcmU6OktVUkwmKQoreworICAgIC8vIEZJWE1F
OiBJbXBsZW1lbnQKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30K
KworU3RyaW5nIFdlYlBhZ2U6OmNhY2hlZFJlc3BvbnNlTUlNRVR5cGVGb3JVUkwoY29uc3QgV2Vi
Q29yZTo6S1VSTCYpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudAorICAgIHJldHVybiBTdHJp
bmcoKTsKK30KKworYm9vbCBXZWJQYWdlOjpwbGF0Zm9ybUNhbkhhbmRsZVJlcXVlc3QoY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JikKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAo=
</data>
<flag name="review"
          id="79346"
          type_id="1"
          status="+"
          setter="mrobinson"
    />
          </attachment>
      

    </bug>

</bugzilla>