<?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>28257</bug_id>
          
          <creation_ts>2009-08-13 06:02:14 -0700</creation_ts>
          <short_desc>[Gtk] Doesn&apos;t support gtk-key-themes</short_desc>
          <delta_ts>2010-05-17 08:05:22 -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>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Nic Ferrier">nferrier</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>a.renevier</cc>
    
    <cc>christian</cc>
    
    <cc>email.tehk</cc>
    
    <cc>eric225125</cc>
    
    <cc>jmalonzo</cc>
    
    <cc>mrobinson</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>139822</commentid>
    <comment_count>0</comment_count>
    <who name="Nic Ferrier">nferrier</who>
    <bug_when>2009-08-13 06:02:14 -0700</bug_when>
    <thetext>using a few different webkitgtk browsers (midori, python webkitgtk) I&apos;ve tried using the Emacs gtk-key-theme (set in ~/.gtkrc-2.0).

It doesn&apos;t work, tho it does work in gtk/gecko browsers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>167050</commentid>
    <comment_count>1</comment_count>
    <who name="">eric225125</who>
    <bug_when>2009-11-28 14:14:59 -0800</bug_when>
    <thetext>I can confirm this bug.  Emacs bindings won&apos;t work with text fields in midori or uzbl, but work everywhere else.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>173854</commentid>
    <comment_count>2</comment_count>
      <attachid>45304</attachid>
    <who name="Randal Barlow">email.tehk</who>
    <bug_when>2009-12-20 19:17:04 -0800</bug_when>
    <thetext>Created attachment 45304
This patch binds the emacs text control shortcuts usually provided by the emacs gtk-key-theme, overriding the default shortcuts. A temporary solution for those of us who require these shortcuts now

The right way for this to be done is by checking the &quot;gtk-key-theme-name&quot; property on the screen&apos;s GtkSettings and choosing the associated KeyDownEnty for that gtk-key-theme in WebKit/gtk/WebCoreSupport/EditorClientGtk.cpp

For now this patch will change the default text control keys to be something close to what is found in the Emacs gtk-key-theme. I guess it is for those of us who&apos;s fingers/minds are too mangled to change now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>174050</commentid>
    <comment_count>3</comment_count>
      <attachid>45343</attachid>
    <who name="Randal Barlow">email.tehk</who>
    <bug_when>2009-12-21 12:58:44 -0800</bug_when>
    <thetext>Created attachment 45343
This patch that gets the default screen&apos;s GtkSettings and checks the &quot;gtk-key-theme&quot; property and applies one of two(Emacs, and the standard) themes

I suspect the correct solution will end up being something like this, but I am not familiar enough with any other key themes to make a entry for theme</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>174117</commentid>
    <comment_count>4</comment_count>
      <attachid>45343</attachid>
    <who name="Randal Barlow">email.tehk</who>
    <bug_when>2009-12-21 15:13:01 -0800</bug_when>
    <thetext>Comment on attachment 45343
This patch that gets the default screen&apos;s GtkSettings and checks the &quot;gtk-key-theme&quot; property and applies one of two(Emacs, and the standard) themes

&gt;diff -rupN original/WebKit/gtk/WebCoreSupport/EditorClientGtk.cpp new/WebKit/gtk/WebCoreSupport/EditorClientGtk.cpp
&gt;--- original/WebKit/gtk/WebCoreSupport/EditorClientGtk.cpp	2009-11-12 16:40:58.000000000 -0500
&gt;+++ new/WebKit/gtk/WebCoreSupport/EditorClientGtk.cpp	2009-12-21 15:00:49.818888011 -0500
&gt;@@ -31,6 +31,7 @@
&gt; #include &quot;FocusController.h&quot;
&gt; #include &quot;Frame.h&quot;
&gt; #include &lt;glib.h&gt;
&gt;+#include &lt;gtk/gtk.h&gt;
&gt; #include &quot;KeyboardCodes.h&quot;
&gt; #include &quot;KeyboardEvent.h&quot;
&gt; #include &quot;NotImplemented.h&quot;
&gt;@@ -371,7 +372,10 @@ struct KeyPressEntry {
&gt;     const char* name;
&gt; };
&gt; 
&gt;-static const KeyDownEntry keyDownEntries[] = {
&gt;+/*
&gt;+Standard gtk-key-theme
&gt;+*/
&gt;+static const KeyDownEntry stdkeyDownEntries[] = {
&gt;     { VK_LEFT,   0,                  &quot;MoveLeft&quot;                                    },
&gt;     { VK_LEFT,   ShiftKey,           &quot;MoveLeftAndModifySelection&quot;                  },
&gt;     { VK_LEFT,   CtrlKey,            &quot;MoveWordLeft&quot;                                },
&gt;@@ -417,6 +421,64 @@ static const KeyDownEntry keyDownEntries
&gt;     { VK_RETURN, AltKey | ShiftKey,  &quot;InsertNewline&quot;                               },
&gt; };
&gt; 
&gt;+/*
&gt;+Emacs gtk-key-theme
&gt;+*/
&gt;+static const KeyDownEntry emacskeyDownEntries[] = {
&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;                                    },
&gt;+    { VK_DOWN,   ShiftKey,           &quot;MoveDownAndModifySelection&quot;                  },
&gt;+    { VK_NEXT,   ShiftKey,           &quot;MovePageDownAndModifySelection&quot;              },
&gt;+    { VK_PRIOR,  0,                  &quot;MovePageUp&quot;                                  },
&gt;+    { VK_NEXT,   0,                  &quot;MovePageDown&quot;                                },
&gt;+    { VK_HOME,   0,                  &quot;MoveToBeginningOfLine&quot;                       },
&gt;+    { VK_HOME,   ShiftKey,           &quot;MoveToBeginningOfLineAndModifySelection&quot;     },
&gt;+    { VK_HOME,   CtrlKey,            &quot;MoveToBeginningOfDocument&quot;                   },
&gt;+    { VK_HOME,   CtrlKey | ShiftKey, &quot;MoveToBeginningOfDocumentAndModifySelection&quot; },
&gt;+
&gt;+    { VK_END,    0,                  &quot;MoveToEndOfLine&quot;                             },
&gt;+    { VK_END,    ShiftKey,           &quot;MoveToEndOfLineAndModifySelection&quot;           },
&gt;+    { VK_END,    CtrlKey,            &quot;MoveToEndOfDocument&quot;                         },
&gt;+    { VK_END,    CtrlKey | ShiftKey, &quot;MoveToEndOfDocumentAndModifySelection&quot;       },
&gt;+
&gt;+    { VK_BACK,   0,                  &quot;DeleteBackward&quot;                              },
&gt;+    { VK_BACK,   ShiftKey,           &quot;DeleteBackward&quot;                              },
&gt;+    { VK_DELETE, 0,                  &quot;DeleteForward&quot;                               },
&gt;+    { VK_BACK,   CtrlKey,            &quot;DeleteWordBackward&quot;                          },
&gt;+    { VK_DELETE, CtrlKey,            &quot;DeleteWordForward&quot;                           },
&gt;+
&gt;+    { &apos;B&apos;,       CtrlKey,            &quot;ToggleBold&quot;                                  },
&gt;+    { &apos;I&apos;,       CtrlKey,            &quot;ToggleItalic&quot;                                },
&gt;+
&gt;+    { VK_ESCAPE, 0,                  &quot;Cancel&quot;                                      },
&gt;+    { VK_OEM_PERIOD, CtrlKey,        &quot;Cancel&quot;                                      },
&gt;+    { VK_TAB,    0,                  &quot;InsertTab&quot;                                   },
&gt;+    { VK_TAB,    ShiftKey,           &quot;InsertBacktab&quot;                               },
&gt;+    { VK_RETURN, 0,                  &quot;InsertNewline&quot;                               },
&gt;+    { VK_RETURN, CtrlKey,            &quot;InsertNewline&quot;                               },
&gt;+    { VK_RETURN, AltKey,             &quot;InsertNewline&quot;                               },
&gt;+    { VK_RETURN, AltKey | ShiftKey,  &quot;InsertNewline&quot;                               },
&gt;+    // Emacs key theme text control
&gt;+    { VK_K,      CtrlKey,            &quot;DeleteToEndOfLine&quot;                           },
&gt;+    { VK_F,      CtrlKey,            &quot;MoveForward&quot;                                 },
&gt;+    { VK_B,      CtrlKey,            &quot;MoveBackward&quot;                                },
&gt;+    { VK_W,      CtrlKey,            &quot;DeleteWordBackward&quot;                          },
&gt;+    { VK_D,      CtrlKey,            &quot;DeleteForward&quot;                               },
&gt;+    { VK_A,      CtrlKey,            &quot;MoveToBeginningOfLine&quot;                       },
&gt;+    { VK_E,      CtrlKey,            &quot;MoveToEndOfLine&quot;                             },
&gt;+};
&gt;+
&gt;+
&gt; static const KeyPressEntry keyPressEntries[] = {
&gt;     { &apos;\t&apos;,   0,                  &quot;InsertTab&quot;                                   },
&gt;     { &apos;\t&apos;,   ShiftKey,           &quot;InsertBacktab&quot;                               },
&gt;@@ -436,9 +498,22 @@ static const char* interpretEditorComman
&gt;     if (!keyDownCommandsMap) {
&gt;         keyDownCommandsMap = new HashMap&lt;int, const char*&gt;;
&gt;         keyPressCommandsMap = new HashMap&lt;int, const char*&gt;;
&gt;-
&gt;-        for (unsigned i = 0; i &lt; G_N_ELEMENTS(keyDownEntries); i++)
&gt;-            keyDownCommandsMap-&gt;set(keyDownEntries[i].modifiers &lt;&lt; 16 | keyDownEntries[i].virtualKey, keyDownEntries[i].name);
&gt;+        
&gt;+        // get the gtk key theme
&gt;+        GtkSettings* settings = gtk_settings_get_default();
&gt;+        gchar* key_theme_name;
&gt;+        g_object_get(settings, &quot;gtk-key-theme-name&quot;, &amp;key_theme_name, NULL);
&gt;+
&gt;+        if (strcmp(key_theme_name, &quot;Emacs&quot;) == 0)
&gt;+        {
&gt;+            for (unsigned i = 0; i &lt; G_N_ELEMENTS(emacskeyDownEntries); i++)
&gt;+                keyDownCommandsMap-&gt;set(emacskeyDownEntries[i].modifiers &lt;&lt; 16 | emacskeyDownEntries[i].virtualKey, emacskeyDownEntries[i].name);
&gt;+        }
&gt;+        else
&gt;+        {
&gt;+            for (unsigned i = 0; i &lt; G_N_ELEMENTS(stdkeyDownEntries); i++)
&gt;+                keyDownCommandsMap-&gt;set(stdkeyDownEntries[i].modifiers &lt;&lt; 16 | stdkeyDownEntries[i].virtualKey, stdkeyDownEntries[i].name);
&gt;+        }
&gt; 
&gt;         for (unsigned i = 0; i &lt; G_N_ELEMENTS(keyPressEntries); i++)
&gt;             keyPressCommandsMap-&gt;set(keyPressEntries[i].modifiers &lt;&lt; 16 | keyPressEntries[i].charCode, keyPressEntries[i].name);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>174118</commentid>
    <comment_count>5</comment_count>
      <attachid>45354</attachid>
    <who name="Randal Barlow">email.tehk</who>
    <bug_when>2009-12-21 15:23:09 -0800</bug_when>
    <thetext>Created attachment 45354
This patch like the last one gets the default screen&apos;s GtkSettings and checks the &quot;gtk-key-theme&quot; property and applies one of two(Emacs, and the standard) themes. Corrected a few bindings.

The last patch had Control-W incorrectly bound to DeleteWordForward not Backward

Sorry about my last comment, I incorrectly edited the bug thinking I could edit the attachment</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>197317</commentid>
    <comment_count>6</comment_count>
    <who name="arno.">a.renevier</who>
    <bug_when>2010-03-08 14:28:48 -0800</bug_when>
    <thetext>Hi,
I noticed a few missing bindings:

Ctrl-Shift-B MoveBackwardAndModifySelection
Alt-Shift-B MoveWordBackwardAndModifySelection
Alt-B   MoveWordBackward
Ctrl-Shift-F MoveForwardAndModifySelection
Alt-Shift-F MoveWordForwardAndModifySelection
Alt-F MoveWordForward
Ctrl-Shift-A  MoveWordBackwardAndModifySelection
Ctrl-Shift-E  MoveToEndOfLineAndModifySelection
Alt-D       DeleteWordForward
Ctrl-K  DeleteToEndOfParagraph

and also Ctrl-U: deletes full line. I didn&apos;t find a command for that.

Those bindings are also used in GtkTextView but not GtkEntry (ie: textareas in Gecko)
Ctrl-P: move to previous line
Ctrl-Shift-P: move to previous line and select
Ctrl-N: move to next line
Ctrl-Shift-N: move to next line and select


But I see one problem with that method: if users have customized default gtk emacs bindings, or if people use another binding scheme, it will not work. Is is possible to get the GtkBindingSet for a GtkEntry or GtkTextView element, and traverse all key bindings to ultimately, get a binding keyval and modifier, and also the name of the signal it will invoke with its arguments. Therefore, it&apos;s theorically possible to use bindings defined for real for GtkEntry instead of hardcoding default one. Do you think that&apos;s a good idea to do that ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>203638</commentid>
    <comment_count>7</comment_count>
    <who name="Christian Dywan">christian</who>
    <bug_when>2010-03-24 15:12:06 -0700</bug_when>
    <thetext>Hardcoding any key themes is definitely wrong. The very idea of key bindings in GTK+ is that people can  customize them, and they do. For example Vi-like bindings, which are not shipped with GTK+.
The correct way is to either implement bindings in the widget instead of doing our own thing, or read the bindings and fill WebCore&apos;s internal key definitions with that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>220875</commentid>
    <comment_count>8</comment_count>
      <attachid>55072</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-05-04 16:50:52 -0700</bug_when>
    <thetext>Created attachment 55072
Patch which defers to a native text widget

I&apos;ve added a patch which follows the same approach as Chromium and Gecko. Essentially a key events are send to a native widget and editing commands are intercepted and handled appropriately. The patch should read all GTK+ theme settings properly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>220876</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-05-04 16:54:34 -0700</bug_when>
    <thetext>Attachment 55072 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
WebKit/gtk/WebCoreSupport/EditorClientGtk.cpp:97:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
WebKit/gtk/WebCoreSupport/EditorClientGtk.cpp:98:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
WebKit/gtk/WebCoreSupport/EditorClientGtk.cpp:99:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
WebKit/gtk/WebCoreSupport/EditorClientGtk.cpp:100:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
WebKit/gtk/WebCoreSupport/EditorClientGtk.cpp:101:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
WebKit/gtk/WebCoreSupport/EditorClientGtk.cpp:102:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
WebKit/gtk/WebCoreSupport/EditorClientGtk.cpp:103:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
WebKit/gtk/WebCoreSupport/EditorClientGtk.cpp:104:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
WebKit/gtk/WebCoreSupport/EditorClientGtk.cpp:104:  One space before end of line comments  [whitespace/comments] [5]
WebKit/gtk/WebCoreSupport/EditorClientGtk.cpp:116:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
WebKit/gtk/WebCoreSupport/EditorClientGtk.cpp:124:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
WebKit/gtk/WebCoreSupport/EditorClientGtk.cpp:129:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
WebKit/gtk/WebCoreSupport/EditorClientGtk.cpp:163:  One space before end of line comments  [whitespace/comments] [5]
WebKit/gtk/WebCoreSupport/EditorClientGtk.h:46:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 14 in 3 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>220879</commentid>
    <comment_count>10</comment_count>
      <attachid>55073</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-05-04 17:00:36 -0700</bug_when>
    <thetext>Created attachment 55073
Previous patch + style fixes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>220883</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-05-04 17:07:02 -0700</bug_when>
    <thetext>Attachment 55073 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
WebKit/gtk/WebCoreSupport/EditorClientGtk.h:46:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 3 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>220886</commentid>
    <comment_count>12</comment_count>
      <attachid>55076</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-05-04 17:10:42 -0700</bug_when>
    <thetext>Created attachment 55076
Patch with style fix

Gah. Uploaded the incorrect version of the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>224003</commentid>
    <comment_count>13</comment_count>
      <attachid>55716</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-05-11 10:37:20 -0700</bug_when>
    <thetext>Created attachment 55716
Patch with fixes for copy and paste</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>224009</commentid>
    <comment_count>14</comment_count>
      <attachid>55716</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2010-05-11 10:44:51 -0700</bug_when>
    <thetext>Comment on attachment 55716
Patch with fixes for copy and paste

Looks good to me, it would be good to have some tests for it eventually though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>224014</commentid>
    <comment_count>15</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-05-11 10:54:15 -0700</bug_when>
    <thetext>Committed r59158: &lt;http://trac.webkit.org/changeset/59158&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>226767</commentid>
    <comment_count>16</comment_count>
      <attachid>55716</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-05-17 08:05:22 -0700</bug_when>
    <thetext>Comment on attachment 55716
Patch with fixes for copy and paste

Patch has been comitted. Clearing flags.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>45304</attachid>
            <date>2009-12-20 19:17:04 -0800</date>
            <delta_ts>2009-12-21 12:58:44 -0800</delta_ts>
            <desc>This patch binds the emacs text control shortcuts usually provided by the emacs gtk-key-theme, overriding the default shortcuts. A temporary solution for those of us who require these shortcuts now</desc>
            <filename>emacs-key-movement.patch</filename>
            <type>text/plain</type>
            <size>1241</size>
            <attacher name="Randal Barlow">email.tehk</attacher>
            
              <data encoding="base64">ZGlmZiAtcnVwTiBvcmlnaW5hbC9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVu
dEd0ay5jcHAgbmV3L1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmNw
cAotLS0gb3JpZ2luYWwvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsu
Y3BwCTIwMDktMTEtMTIgMTY6NDA6NTguMDAwMDAwMDAwIC0wNTAwCisrKyBuZXcvV2ViS2l0L2d0
ay9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuY3BwCTIwMDktMTItMjAgMjE6NTk6MTIu
OTAxMzQ3MTE1IC0wNTAwCkBAIC00MTUsNiArNDE1LDE0IEBAIHN0YXRpYyBjb25zdCBLZXlEb3du
RW50cnkga2V5RG93bkVudHJpZXMKICAgICB7IFZLX1JFVFVSTiwgQ3RybEtleSwgICAgICAgICAg
ICAiSW5zZXJ0TmV3bGluZSIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICB7
IFZLX1JFVFVSTiwgQWx0S2V5LCAgICAgICAgICAgICAiSW5zZXJ0TmV3bGluZSIgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfSwKICAgICB7IFZLX1JFVFVSTiwgQWx0S2V5IHwgU2hpZnRL
ZXksICAiSW5zZXJ0TmV3bGluZSIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAg
ICAvLyBFbWFjcyBrZXkgdGhlbWUgdGV4dCBjb250cm9sCisgICAgeyBWS19LLCAgICAgIEN0cmxL
ZXksICAgICAgICAgICAgIkRlbGV0ZVRvRW5kT2ZMaW5lIiAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH0sCisgICAgeyBWS19GLCAgICAgIEN0cmxLZXksICAgICAgICAgICAgIk1vdmVGb3J3YXJk
IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgeyBWS19CLCAgICAgIEN0
cmxLZXksICAgICAgICAgICAgIk1vdmVCYWNrd2FyZCIgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIH0sCisgICAgeyBWS19ELCAgICAgIEN0cmxLZXksICAgICAgICAgICAgIkRlbGV0ZUZv
cndhcmQiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgeyBWS19BLCAgICAg
IEN0cmxLZXksICAgICAgICAgICAgIk1vdmVUb0JlZ2lubmluZ09mTGluZSIgICAgICAgICAgICAg
ICAgICAgICAgIH0sCisgICAgeyBWS19FLCAgICAgIEN0cmxLZXksICAgICAgICAgICAgIk1vdmVU
b0VuZE9mTGluZSIgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisKIH07CiAKIHN0YXRp
YyBjb25zdCBLZXlQcmVzc0VudHJ5IGtleVByZXNzRW50cmllc1tdID0gewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>45343</attachid>
            <date>2009-12-21 12:58:44 -0800</date>
            <delta_ts>2009-12-21 15:23:09 -0800</delta_ts>
            <desc>This patch that gets the default screen&apos;s GtkSettings and checks the &quot;gtk-key-theme&quot; property and applies one of two(Emacs, and the standard) themes</desc>
            <filename>emacs-key-movement.patch</filename>
            <type>text/plain</type>
            <size>6856</size>
            <attacher name="Randal Barlow">email.tehk</attacher>
            
              <data encoding="base64">ZGlmZiAtcnVwTiBvcmlnaW5hbC9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVu
dEd0ay5jcHAgbmV3L1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmNw
cAotLS0gb3JpZ2luYWwvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsu
Y3BwCTIwMDktMTEtMTIgMTY6NDA6NTguMDAwMDAwMDAwIC0wNTAwCisrKyBuZXcvV2ViS2l0L2d0
ay9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuY3BwCTIwMDktMTItMjEgMTU6MDA6NDku
ODE4ODg4MDExIC0wNTAwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiRm9jdXNDb250cm9s
bGVyLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlIDxnbGliLmg+CisjaW5jbHVkZSA8
Z3RrL2d0ay5oPgogI2luY2x1ZGUgIktleWJvYXJkQ29kZXMuaCIKICNpbmNsdWRlICJLZXlib2Fy
ZEV2ZW50LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKQEAgLTM3MSw3ICszNzIsMTAg
QEAgc3RydWN0IEtleVByZXNzRW50cnkgewogICAgIGNvbnN0IGNoYXIqIG5hbWU7CiB9OwogCi1z
dGF0aWMgY29uc3QgS2V5RG93bkVudHJ5IGtleURvd25FbnRyaWVzW10gPSB7CisvKgorU3RhbmRh
cmQgZ3RrLWtleS10aGVtZQorKi8KK3N0YXRpYyBjb25zdCBLZXlEb3duRW50cnkgc3Rka2V5RG93
bkVudHJpZXNbXSA9IHsKICAgICB7IFZLX0xFRlQsICAgMCwgICAgICAgICAgICAgICAgICAiTW92
ZUxlZnQiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICB7IFZLX0xF
RlQsICAgU2hpZnRLZXksICAgICAgICAgICAiTW92ZUxlZnRBbmRNb2RpZnlTZWxlY3Rpb24iICAg
ICAgICAgICAgICAgICAgfSwKICAgICB7IFZLX0xFRlQsICAgQ3RybEtleSwgICAgICAgICAgICAi
TW92ZVdvcmRMZWZ0IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKQEAgLTQxNyw2
ICs0MjEsNjQgQEAgc3RhdGljIGNvbnN0IEtleURvd25FbnRyeSBrZXlEb3duRW50cmllcwogICAg
IHsgVktfUkVUVVJOLCBBbHRLZXkgfCBTaGlmdEtleSwgICJJbnNlcnROZXdsaW5lIiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9LAogfTsKIAorLyoKK0VtYWNzIGd0ay1rZXktdGhlbWUK
KyovCitzdGF0aWMgY29uc3QgS2V5RG93bkVudHJ5IGVtYWNza2V5RG93bkVudHJpZXNbXSA9IHsK
KyAgICB7IFZLX0xFRlQsICAgMCwgICAgICAgICAgICAgICAgICAiTW92ZUxlZnQiICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7IFZLX0xFRlQsICAgU2hpZnRLZXks
ICAgICAgICAgICAiTW92ZUxlZnRBbmRNb2RpZnlTZWxlY3Rpb24iICAgICAgICAgICAgICAgICAg
fSwKKyAgICB7IFZLX0xFRlQsICAgQ3RybEtleSwgICAgICAgICAgICAiTW92ZVdvcmRMZWZ0IiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7IFZLX0xFRlQsICAgQ3RybEtl
eSB8IFNoaWZ0S2V5LCAiTW92ZVdvcmRMZWZ0QW5kTW9kaWZ5U2VsZWN0aW9uIiAgICAgICAgICAg
ICAgfSwKKyAgICB7IFZLX1JJR0hULCAgMCwgICAgICAgICAgICAgICAgICAiTW92ZVJpZ2h0IiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7IFZLX1JJR0hULCAgU2hp
ZnRLZXksICAgICAgICAgICAiTW92ZVJpZ2h0QW5kTW9kaWZ5U2VsZWN0aW9uIiAgICAgICAgICAg
ICAgICAgfSwKKyAgICB7IFZLX1JJR0hULCAgQ3RybEtleSwgICAgICAgICAgICAiTW92ZVdvcmRS
aWdodCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7IFZLX1JJR0hULCAg
Q3RybEtleSB8IFNoaWZ0S2V5LCAiTW92ZVdvcmRSaWdodEFuZE1vZGlmeVNlbGVjdGlvbiIgICAg
ICAgICAgICAgfSwKKyAgICB7IFZLX1VQLCAgICAgMCwgICAgICAgICAgICAgICAgICAiTW92ZVVw
IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7IFZLX1VQLCAg
ICAgU2hpZnRLZXksICAgICAgICAgICAiTW92ZVVwQW5kTW9kaWZ5U2VsZWN0aW9uIiAgICAgICAg
ICAgICAgICAgICAgfSwKKyAgICB7IFZLX1BSSU9SLCAgU2hpZnRLZXksICAgICAgICAgICAiTW92
ZVBhZ2VVcEFuZE1vZGlmeVNlbGVjdGlvbiIgICAgICAgICAgICAgICAgfSwKKyAgICB7IFZLX0RP
V04sICAgMCwgICAgICAgICAgICAgICAgICAiTW92ZURvd24iICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfSwKKyAgICB7IFZLX0RPV04sICAgU2hpZnRLZXksICAgICAgICAgICAi
TW92ZURvd25BbmRNb2RpZnlTZWxlY3Rpb24iICAgICAgICAgICAgICAgICAgfSwKKyAgICB7IFZL
X05FWFQsICAgU2hpZnRLZXksICAgICAgICAgICAiTW92ZVBhZ2VEb3duQW5kTW9kaWZ5U2VsZWN0
aW9uIiAgICAgICAgICAgICAgfSwKKyAgICB7IFZLX1BSSU9SLCAgMCwgICAgICAgICAgICAgICAg
ICAiTW92ZVBhZ2VVcCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7
IFZLX05FWFQsICAgMCwgICAgICAgICAgICAgICAgICAiTW92ZVBhZ2VEb3duIiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7IFZLX0hPTUUsICAgMCwgICAgICAgICAgICAg
ICAgICAiTW92ZVRvQmVnaW5uaW5nT2ZMaW5lIiAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAg
ICB7IFZLX0hPTUUsICAgU2hpZnRLZXksICAgICAgICAgICAiTW92ZVRvQmVnaW5uaW5nT2ZMaW5l
QW5kTW9kaWZ5U2VsZWN0aW9uIiAgICAgfSwKKyAgICB7IFZLX0hPTUUsICAgQ3RybEtleSwgICAg
ICAgICAgICAiTW92ZVRvQmVnaW5uaW5nT2ZEb2N1bWVudCIgICAgICAgICAgICAgICAgICAgfSwK
KyAgICB7IFZLX0hPTUUsICAgQ3RybEtleSB8IFNoaWZ0S2V5LCAiTW92ZVRvQmVnaW5uaW5nT2ZE
b2N1bWVudEFuZE1vZGlmeVNlbGVjdGlvbiIgfSwKKworICAgIHsgVktfRU5ELCAgICAwLCAgICAg
ICAgICAgICAgICAgICJNb3ZlVG9FbmRPZkxpbmUiICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9LAorICAgIHsgVktfRU5ELCAgICBTaGlmdEtleSwgICAgICAgICAgICJNb3ZlVG9FbmRPZkxp
bmVBbmRNb2RpZnlTZWxlY3Rpb24iICAgICAgICAgICB9LAorICAgIHsgVktfRU5ELCAgICBDdHJs
S2V5LCAgICAgICAgICAgICJNb3ZlVG9FbmRPZkRvY3VtZW50IiAgICAgICAgICAgICAgICAgICAg
ICAgICB9LAorICAgIHsgVktfRU5ELCAgICBDdHJsS2V5IHwgU2hpZnRLZXksICJNb3ZlVG9FbmRP
ZkRvY3VtZW50QW5kTW9kaWZ5U2VsZWN0aW9uIiAgICAgICB9LAorCisgICAgeyBWS19CQUNLLCAg
IDAsICAgICAgICAgICAgICAgICAgIkRlbGV0ZUJhY2t3YXJkIiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0sCisgICAgeyBWS19CQUNLLCAgIFNoaWZ0S2V5LCAgICAgICAgICAgIkRlbGV0
ZUJhY2t3YXJkIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgeyBWS19ERUxF
VEUsIDAsICAgICAgICAgICAgICAgICAgIkRlbGV0ZUZvcndhcmQiICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0sCisgICAgeyBWS19CQUNLLCAgIEN0cmxLZXksICAgICAgICAgICAgIkRl
bGV0ZVdvcmRCYWNrd2FyZCIgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgeyBWS19E
RUxFVEUsIEN0cmxLZXksICAgICAgICAgICAgIkRlbGV0ZVdvcmRGb3J3YXJkIiAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0sCisKKyAgICB7ICdCJywgICAgICAgQ3RybEtleSwgICAgICAgICAg
ICAiVG9nZ2xlQm9sZCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7
ICdJJywgICAgICAgQ3RybEtleSwgICAgICAgICAgICAiVG9nZ2xlSXRhbGljIiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfSwKKworICAgIHsgVktfRVNDQVBFLCAwLCAgICAgICAgICAg
ICAgICAgICJDYW5jZWwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAor
ICAgIHsgVktfT0VNX1BFUklPRCwgQ3RybEtleSwgICAgICAgICJDYW5jZWwiICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgIHsgVktfVEFCLCAgICAwLCAgICAgICAg
ICAgICAgICAgICJJbnNlcnRUYWIiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
LAorICAgIHsgVktfVEFCLCAgICBTaGlmdEtleSwgICAgICAgICAgICJJbnNlcnRCYWNrdGFiIiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgIHsgVktfUkVUVVJOLCAwLCAgICAg
ICAgICAgICAgICAgICJJbnNlcnROZXdsaW5lIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9LAorICAgIHsgVktfUkVUVVJOLCBDdHJsS2V5LCAgICAgICAgICAgICJJbnNlcnROZXdsaW5l
IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgIHsgVktfUkVUVVJOLCBBbHRL
ZXksICAgICAgICAgICAgICJJbnNlcnROZXdsaW5lIiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9LAorICAgIHsgVktfUkVUVVJOLCBBbHRLZXkgfCBTaGlmdEtleSwgICJJbnNlcnROZXds
aW5lIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgIC8vIEVtYWNzIGtleSB0
aGVtZSB0ZXh0IGNvbnRyb2wKKyAgICB7IFZLX0ssICAgICAgQ3RybEtleSwgICAgICAgICAgICAi
RGVsZXRlVG9FbmRPZkxpbmUiICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7IFZL
X0YsICAgICAgQ3RybEtleSwgICAgICAgICAgICAiTW92ZUZvcndhcmQiICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfSwKKyAgICB7IFZLX0IsICAgICAgQ3RybEtleSwgICAgICAgICAg
ICAiTW92ZUJhY2t3YXJkIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7
IFZLX1csICAgICAgQ3RybEtleSwgICAgICAgICAgICAiRGVsZXRlV29yZEZvcndhcmQiICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7IFZLX0QsICAgICAgQ3RybEtleSwgICAgICAg
ICAgICAiRGVsZXRlRm9yd2FyZCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAg
ICB7IFZLX0EsICAgICAgQ3RybEtleSwgICAgICAgICAgICAiTW92ZVRvQmVnaW5uaW5nT2ZMaW5l
IiAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7IFZLX0UsICAgICAgQ3RybEtleSwgICAg
ICAgICAgICAiTW92ZVRvRW5kT2ZMaW5lIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwK
K307CisKKwogc3RhdGljIGNvbnN0IEtleVByZXNzRW50cnkga2V5UHJlc3NFbnRyaWVzW10gPSB7
CiAgICAgeyAnXHQnLCAgIDAsICAgICAgICAgICAgICAgICAgIkluc2VydFRhYiIgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgeyAnXHQnLCAgIFNoaWZ0S2V5LCAgICAg
ICAgICAgIkluc2VydEJhY2t0YWIiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCkBA
IC00MzYsOSArNDk4LDIyIEBAIHN0YXRpYyBjb25zdCBjaGFyKiBpbnRlcnByZXRFZGl0b3JDb21t
YW4KICAgICBpZiAoIWtleURvd25Db21tYW5kc01hcCkgewogICAgICAgICBrZXlEb3duQ29tbWFu
ZHNNYXAgPSBuZXcgSGFzaE1hcDxpbnQsIGNvbnN0IGNoYXIqPjsKICAgICAgICAga2V5UHJlc3ND
b21tYW5kc01hcCA9IG5ldyBIYXNoTWFwPGludCwgY29uc3QgY2hhcio+OwotCi0gICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBHX05fRUxFTUVOVFMoa2V5RG93bkVudHJpZXMpOyBpKysp
Ci0gICAgICAgICAgICBrZXlEb3duQ29tbWFuZHNNYXAtPnNldChrZXlEb3duRW50cmllc1tpXS5t
b2RpZmllcnMgPDwgMTYgfCBrZXlEb3duRW50cmllc1tpXS52aXJ0dWFsS2V5LCBrZXlEb3duRW50
cmllc1tpXS5uYW1lKTsKKyAgICAgICAgCisgICAgICAgIC8vIGdldCB0aGUgZ3RrIGtleSB0aGVt
ZQorICAgICAgICBHdGtTZXR0aW5ncyogc2V0dGluZ3MgPSBndGtfc2V0dGluZ3NfZ2V0X2RlZmF1
bHQoKTsKKyAgICAgICAgZ2NoYXIqIGtleV90aGVtZV9uYW1lOworICAgICAgICBnX29iamVjdF9n
ZXQoc2V0dGluZ3MsICJndGsta2V5LXRoZW1lLW5hbWUiLCAma2V5X3RoZW1lX25hbWUsIE5VTEwp
OworCisgICAgICAgIGlmIChzdHJjbXAoa2V5X3RoZW1lX25hbWUsICJFbWFjcyIpID09IDApCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBHX05fRUxFTUVO
VFMoZW1hY3NrZXlEb3duRW50cmllcyk7IGkrKykKKyAgICAgICAgICAgICAgICBrZXlEb3duQ29t
bWFuZHNNYXAtPnNldChlbWFjc2tleURvd25FbnRyaWVzW2ldLm1vZGlmaWVycyA8PCAxNiB8IGVt
YWNza2V5RG93bkVudHJpZXNbaV0udmlydHVhbEtleSwgZW1hY3NrZXlEb3duRW50cmllc1tpXS5u
YW1lKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBHX05fRUxFTUVOVFMoc3Rka2V5RG93bkVudHJpZXMpOyBp
KyspCisgICAgICAgICAgICAgICAga2V5RG93bkNvbW1hbmRzTWFwLT5zZXQoc3Rka2V5RG93bkVu
dHJpZXNbaV0ubW9kaWZpZXJzIDw8IDE2IHwgc3Rka2V5RG93bkVudHJpZXNbaV0udmlydHVhbEtl
eSwgc3Rka2V5RG93bkVudHJpZXNbaV0ubmFtZSk7CisgICAgICAgIH0KIAogICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgR19OX0VMRU1FTlRTKGtleVByZXNzRW50cmllcyk7IGkrKykK
ICAgICAgICAgICAgIGtleVByZXNzQ29tbWFuZHNNYXAtPnNldChrZXlQcmVzc0VudHJpZXNbaV0u
bW9kaWZpZXJzIDw8IDE2IHwga2V5UHJlc3NFbnRyaWVzW2ldLmNoYXJDb2RlLCBrZXlQcmVzc0Vu
dHJpZXNbaV0ubmFtZSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>45354</attachid>
            <date>2009-12-21 15:23:09 -0800</date>
            <delta_ts>2010-05-04 16:50:52 -0700</delta_ts>
            <desc>This patch like the last one gets the default screen&apos;s GtkSettings and checks the &quot;gtk-key-theme&quot; property and applies one of two(Emacs, and the standard) themes. Corrected a few bindings.</desc>
            <filename>emacs-key-movement.patch</filename>
            <type>text/plain</type>
            <size>6856</size>
            <attacher name="Randal Barlow">email.tehk</attacher>
            
              <data encoding="base64">ZGlmZiAtcnVwTiBvcmlnaW5hbC9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVu
dEd0ay5jcHAgbmV3L1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmNw
cAotLS0gb3JpZ2luYWwvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsu
Y3BwCTIwMDktMTEtMTIgMTY6NDA6NTguMDAwMDAwMDAwIC0wNTAwCisrKyBuZXcvV2ViS2l0L2d0
ay9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuY3BwCTIwMDktMTItMjEgMTU6MDA6NDku
ODE4ODg4MDExIC0wNTAwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiRm9jdXNDb250cm9s
bGVyLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlIDxnbGliLmg+CisjaW5jbHVkZSA8
Z3RrL2d0ay5oPgogI2luY2x1ZGUgIktleWJvYXJkQ29kZXMuaCIKICNpbmNsdWRlICJLZXlib2Fy
ZEV2ZW50LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKQEAgLTM3MSw3ICszNzIsMTAg
QEAgc3RydWN0IEtleVByZXNzRW50cnkgewogICAgIGNvbnN0IGNoYXIqIG5hbWU7CiB9OwogCi1z
dGF0aWMgY29uc3QgS2V5RG93bkVudHJ5IGtleURvd25FbnRyaWVzW10gPSB7CisvKgorU3RhbmRh
cmQgZ3RrLWtleS10aGVtZQorKi8KK3N0YXRpYyBjb25zdCBLZXlEb3duRW50cnkgc3Rka2V5RG93
bkVudHJpZXNbXSA9IHsKICAgICB7IFZLX0xFRlQsICAgMCwgICAgICAgICAgICAgICAgICAiTW92
ZUxlZnQiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICB7IFZLX0xF
RlQsICAgU2hpZnRLZXksICAgICAgICAgICAiTW92ZUxlZnRBbmRNb2RpZnlTZWxlY3Rpb24iICAg
ICAgICAgICAgICAgICAgfSwKICAgICB7IFZLX0xFRlQsICAgQ3RybEtleSwgICAgICAgICAgICAi
TW92ZVdvcmRMZWZ0IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKQEAgLTQxNyw2
ICs0MjEsNjQgQEAgc3RhdGljIGNvbnN0IEtleURvd25FbnRyeSBrZXlEb3duRW50cmllcwogICAg
IHsgVktfUkVUVVJOLCBBbHRLZXkgfCBTaGlmdEtleSwgICJJbnNlcnROZXdsaW5lIiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9LAogfTsKIAorLyoKK0VtYWNzIGd0ay1rZXktdGhlbWUK
KyovCitzdGF0aWMgY29uc3QgS2V5RG93bkVudHJ5IGVtYWNza2V5RG93bkVudHJpZXNbXSA9IHsK
KyAgICB7IFZLX0xFRlQsICAgMCwgICAgICAgICAgICAgICAgICAiTW92ZUxlZnQiICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7IFZLX0xFRlQsICAgU2hpZnRLZXks
ICAgICAgICAgICAiTW92ZUxlZnRBbmRNb2RpZnlTZWxlY3Rpb24iICAgICAgICAgICAgICAgICAg
fSwKKyAgICB7IFZLX0xFRlQsICAgQ3RybEtleSwgICAgICAgICAgICAiTW92ZVdvcmRMZWZ0IiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7IFZLX0xFRlQsICAgQ3RybEtl
eSB8IFNoaWZ0S2V5LCAiTW92ZVdvcmRMZWZ0QW5kTW9kaWZ5U2VsZWN0aW9uIiAgICAgICAgICAg
ICAgfSwKKyAgICB7IFZLX1JJR0hULCAgMCwgICAgICAgICAgICAgICAgICAiTW92ZVJpZ2h0IiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7IFZLX1JJR0hULCAgU2hp
ZnRLZXksICAgICAgICAgICAiTW92ZVJpZ2h0QW5kTW9kaWZ5U2VsZWN0aW9uIiAgICAgICAgICAg
ICAgICAgfSwKKyAgICB7IFZLX1JJR0hULCAgQ3RybEtleSwgICAgICAgICAgICAiTW92ZVdvcmRS
aWdodCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7IFZLX1JJR0hULCAg
Q3RybEtleSB8IFNoaWZ0S2V5LCAiTW92ZVdvcmRSaWdodEFuZE1vZGlmeVNlbGVjdGlvbiIgICAg
ICAgICAgICAgfSwKKyAgICB7IFZLX1VQLCAgICAgMCwgICAgICAgICAgICAgICAgICAiTW92ZVVw
IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7IFZLX1VQLCAg
ICAgU2hpZnRLZXksICAgICAgICAgICAiTW92ZVVwQW5kTW9kaWZ5U2VsZWN0aW9uIiAgICAgICAg
ICAgICAgICAgICAgfSwKKyAgICB7IFZLX1BSSU9SLCAgU2hpZnRLZXksICAgICAgICAgICAiTW92
ZVBhZ2VVcEFuZE1vZGlmeVNlbGVjdGlvbiIgICAgICAgICAgICAgICAgfSwKKyAgICB7IFZLX0RP
V04sICAgMCwgICAgICAgICAgICAgICAgICAiTW92ZURvd24iICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfSwKKyAgICB7IFZLX0RPV04sICAgU2hpZnRLZXksICAgICAgICAgICAi
TW92ZURvd25BbmRNb2RpZnlTZWxlY3Rpb24iICAgICAgICAgICAgICAgICAgfSwKKyAgICB7IFZL
X05FWFQsICAgU2hpZnRLZXksICAgICAgICAgICAiTW92ZVBhZ2VEb3duQW5kTW9kaWZ5U2VsZWN0
aW9uIiAgICAgICAgICAgICAgfSwKKyAgICB7IFZLX1BSSU9SLCAgMCwgICAgICAgICAgICAgICAg
ICAiTW92ZVBhZ2VVcCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7
IFZLX05FWFQsICAgMCwgICAgICAgICAgICAgICAgICAiTW92ZVBhZ2VEb3duIiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7IFZLX0hPTUUsICAgMCwgICAgICAgICAgICAg
ICAgICAiTW92ZVRvQmVnaW5uaW5nT2ZMaW5lIiAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAg
ICB7IFZLX0hPTUUsICAgU2hpZnRLZXksICAgICAgICAgICAiTW92ZVRvQmVnaW5uaW5nT2ZMaW5l
QW5kTW9kaWZ5U2VsZWN0aW9uIiAgICAgfSwKKyAgICB7IFZLX0hPTUUsICAgQ3RybEtleSwgICAg
ICAgICAgICAiTW92ZVRvQmVnaW5uaW5nT2ZEb2N1bWVudCIgICAgICAgICAgICAgICAgICAgfSwK
KyAgICB7IFZLX0hPTUUsICAgQ3RybEtleSB8IFNoaWZ0S2V5LCAiTW92ZVRvQmVnaW5uaW5nT2ZE
b2N1bWVudEFuZE1vZGlmeVNlbGVjdGlvbiIgfSwKKworICAgIHsgVktfRU5ELCAgICAwLCAgICAg
ICAgICAgICAgICAgICJNb3ZlVG9FbmRPZkxpbmUiICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9LAorICAgIHsgVktfRU5ELCAgICBTaGlmdEtleSwgICAgICAgICAgICJNb3ZlVG9FbmRPZkxp
bmVBbmRNb2RpZnlTZWxlY3Rpb24iICAgICAgICAgICB9LAorICAgIHsgVktfRU5ELCAgICBDdHJs
S2V5LCAgICAgICAgICAgICJNb3ZlVG9FbmRPZkRvY3VtZW50IiAgICAgICAgICAgICAgICAgICAg
ICAgICB9LAorICAgIHsgVktfRU5ELCAgICBDdHJsS2V5IHwgU2hpZnRLZXksICJNb3ZlVG9FbmRP
ZkRvY3VtZW50QW5kTW9kaWZ5U2VsZWN0aW9uIiAgICAgICB9LAorCisgICAgeyBWS19CQUNLLCAg
IDAsICAgICAgICAgICAgICAgICAgIkRlbGV0ZUJhY2t3YXJkIiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0sCisgICAgeyBWS19CQUNLLCAgIFNoaWZ0S2V5LCAgICAgICAgICAgIkRlbGV0
ZUJhY2t3YXJkIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgeyBWS19ERUxF
VEUsIDAsICAgICAgICAgICAgICAgICAgIkRlbGV0ZUZvcndhcmQiICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0sCisgICAgeyBWS19CQUNLLCAgIEN0cmxLZXksICAgICAgICAgICAgIkRl
bGV0ZVdvcmRCYWNrd2FyZCIgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgeyBWS19E
RUxFVEUsIEN0cmxLZXksICAgICAgICAgICAgIkRlbGV0ZVdvcmRGb3J3YXJkIiAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0sCisKKyAgICB7ICdCJywgICAgICAgQ3RybEtleSwgICAgICAgICAg
ICAiVG9nZ2xlQm9sZCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7
ICdJJywgICAgICAgQ3RybEtleSwgICAgICAgICAgICAiVG9nZ2xlSXRhbGljIiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfSwKKworICAgIHsgVktfRVNDQVBFLCAwLCAgICAgICAgICAg
ICAgICAgICJDYW5jZWwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAor
ICAgIHsgVktfT0VNX1BFUklPRCwgQ3RybEtleSwgICAgICAgICJDYW5jZWwiICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgIHsgVktfVEFCLCAgICAwLCAgICAgICAg
ICAgICAgICAgICJJbnNlcnRUYWIiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
LAorICAgIHsgVktfVEFCLCAgICBTaGlmdEtleSwgICAgICAgICAgICJJbnNlcnRCYWNrdGFiIiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgIHsgVktfUkVUVVJOLCAwLCAgICAg
ICAgICAgICAgICAgICJJbnNlcnROZXdsaW5lIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9LAorICAgIHsgVktfUkVUVVJOLCBDdHJsS2V5LCAgICAgICAgICAgICJJbnNlcnROZXdsaW5l
IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgIHsgVktfUkVUVVJOLCBBbHRL
ZXksICAgICAgICAgICAgICJJbnNlcnROZXdsaW5lIiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9LAorICAgIHsgVktfUkVUVVJOLCBBbHRLZXkgfCBTaGlmdEtleSwgICJJbnNlcnROZXds
aW5lIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgIC8vIEVtYWNzIGtleSB0
aGVtZSB0ZXh0IGNvbnRyb2wKKyAgICB7IFZLX0ssICAgICAgQ3RybEtleSwgICAgICAgICAgICAi
RGVsZXRlVG9FbmRPZkxpbmUiICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7IFZL
X0YsICAgICAgQ3RybEtleSwgICAgICAgICAgICAiTW92ZUZvcndhcmQiICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfSwKKyAgICB7IFZLX0IsICAgICAgQ3RybEtleSwgICAgICAgICAg
ICAiTW92ZUJhY2t3YXJkIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7
IFZLX1csICAgICAgQ3RybEtleSwgICAgICAgICAgICAiRGVsZXRlV29yZEJhY2t3YXJkIiAgICAg
ICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7IFZLX0QsICAgICAgQ3RybEtleSwgICAgICAg
ICAgICAiRGVsZXRlRm9yd2FyZCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAg
ICB7IFZLX0EsICAgICAgQ3RybEtleSwgICAgICAgICAgICAiTW92ZVRvQmVnaW5uaW5nT2ZMaW5l
IiAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7IFZLX0UsICAgICAgQ3RybEtleSwgICAg
ICAgICAgICAiTW92ZVRvRW5kT2ZMaW5lIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwK
K307CisKKwogc3RhdGljIGNvbnN0IEtleVByZXNzRW50cnkga2V5UHJlc3NFbnRyaWVzW10gPSB7
CiAgICAgeyAnXHQnLCAgIDAsICAgICAgICAgICAgICAgICAgIkluc2VydFRhYiIgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgeyAnXHQnLCAgIFNoaWZ0S2V5LCAgICAg
ICAgICAgIkluc2VydEJhY2t0YWIiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCkBA
IC00MzYsOSArNDk4LDIyIEBAIHN0YXRpYyBjb25zdCBjaGFyKiBpbnRlcnByZXRFZGl0b3JDb21t
YW4KICAgICBpZiAoIWtleURvd25Db21tYW5kc01hcCkgewogICAgICAgICBrZXlEb3duQ29tbWFu
ZHNNYXAgPSBuZXcgSGFzaE1hcDxpbnQsIGNvbnN0IGNoYXIqPjsKICAgICAgICAga2V5UHJlc3ND
b21tYW5kc01hcCA9IG5ldyBIYXNoTWFwPGludCwgY29uc3QgY2hhcio+OwotCi0gICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBHX05fRUxFTUVOVFMoa2V5RG93bkVudHJpZXMpOyBpKysp
Ci0gICAgICAgICAgICBrZXlEb3duQ29tbWFuZHNNYXAtPnNldChrZXlEb3duRW50cmllc1tpXS5t
b2RpZmllcnMgPDwgMTYgfCBrZXlEb3duRW50cmllc1tpXS52aXJ0dWFsS2V5LCBrZXlEb3duRW50
cmllc1tpXS5uYW1lKTsKKyAgICAgICAgCisgICAgICAgIC8vIGdldCB0aGUgZ3RrIGtleSB0aGVt
ZQorICAgICAgICBHdGtTZXR0aW5ncyogc2V0dGluZ3MgPSBndGtfc2V0dGluZ3NfZ2V0X2RlZmF1
bHQoKTsKKyAgICAgICAgZ2NoYXIqIGtleV90aGVtZV9uYW1lOworICAgICAgICBnX29iamVjdF9n
ZXQoc2V0dGluZ3MsICJndGsta2V5LXRoZW1lLW5hbWUiLCAma2V5X3RoZW1lX25hbWUsIE5VTEwp
OworCisgICAgICAgIGlmIChzdHJjbXAoa2V5X3RoZW1lX25hbWUsICJFbWFjcyIpID09IDApCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBHX05fRUxFTUVO
VFMoZW1hY3NrZXlEb3duRW50cmllcyk7IGkrKykKKyAgICAgICAgICAgICAgICBrZXlEb3duQ29t
bWFuZHNNYXAtPnNldChlbWFjc2tleURvd25FbnRyaWVzW2ldLm1vZGlmaWVycyA8PCAxNiB8IGVt
YWNza2V5RG93bkVudHJpZXNbaV0udmlydHVhbEtleSwgZW1hY3NrZXlEb3duRW50cmllc1tpXS5u
YW1lKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBHX05fRUxFTUVOVFMoc3Rka2V5RG93bkVudHJpZXMpOyBp
KyspCisgICAgICAgICAgICAgICAga2V5RG93bkNvbW1hbmRzTWFwLT5zZXQoc3Rka2V5RG93bkVu
dHJpZXNbaV0ubW9kaWZpZXJzIDw8IDE2IHwgc3Rka2V5RG93bkVudHJpZXNbaV0udmlydHVhbEtl
eSwgc3Rka2V5RG93bkVudHJpZXNbaV0ubmFtZSk7CisgICAgICAgIH0KIAogICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgR19OX0VMRU1FTlRTKGtleVByZXNzRW50cmllcyk7IGkrKykK
ICAgICAgICAgICAgIGtleVByZXNzQ29tbWFuZHNNYXAtPnNldChrZXlQcmVzc0VudHJpZXNbaV0u
bW9kaWZpZXJzIDw8IDE2IHwga2V5UHJlc3NFbnRyaWVzW2ldLmNoYXJDb2RlLCBrZXlQcmVzc0Vu
dHJpZXNbaV0ubmFtZSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>55072</attachid>
            <date>2010-05-04 16:50:52 -0700</date>
            <delta_ts>2010-05-04 17:00:36 -0700</delta_ts>
            <desc>Patch which defers to a native text widget</desc>
            <filename>0001-Gtk-Doesn-t-support-gtk-key-themes.patch</filename>
            <type>text/plain</type>
            <size>18505</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">RnJvbSA2N2JhMDZlZTJmYjIyMzAxZjg1MTVlNTE3MGEyZjA1MDRiMDJhOGMxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJ0aW4gUm9iaW5zb24gPG1yb2JpbnNvbkB3ZWJraXQub3Jn
PgpEYXRlOiBUdWUsIDQgTWF5IDIwMTAgMTU6NDg6NTcgLTA3MDAKU3ViamVjdDogW1BBVENIXSBb
R3RrXSBEb2Vzbid0IHN1cHBvcnQgZ3RrLWtleS10aGVtZXMKIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yODI1NwoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpB
ZGQgc3VwcG9ydCBmb3IgR1RLKyBrZXkgdGhlbWVzLgoKKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JD
bGllbnRHdGsuY3BwOgooV2ViS2l0OjpzZWxlY3RBbGwpOiBBZGRlZC4KKFdlYktpdDo6ZGVsZXRl
RnJvbUN1cnNvcik6IEFkZGVkLgooV2ViS2l0Ojptb3ZlQ3Vyc29yKTogQWRkZWQuCihXZWJLaXQ6
OkVkaXRvckNsaWVudDo6Z2VuZXJhdGVFZGl0b3JDb21tYW5kcyk6IEFkZGVkLgooV2ViS2l0OjpF
ZGl0b3JDbGllbnQ6OmV4ZWN1dGVQZW5kaW5nRWRpdG9yQ29tbWFuZHMpOiBBZGRlZC4KKFdlYktp
dDo6RWRpdG9yQ2xpZW50OjpoYW5kbGVLZXlib2FyZEV2ZW50KTogRGVyaXZlIGVkaXRvciBjb21t
YW5kcyBib3RoIGZyb20gaW50ZXJuYWwgdGV4dCB3aWRnZXQgYW5kIGEgbGlzdCBvZiBmYWxsYmFj
a3MuCihXZWJLaXQ6OkVkaXRvckNsaWVudDo6RWRpdG9yQ2xpZW50KTogQWRkIG1fbmF0aXZlV2lk
Z2V0IGluaXRpYWxpemVyLgoqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEd0ay5oOgooV2Vi
S2l0OjpFZGl0b3JDbGllbnQ6OmFkZFBlbmRpbmdFZGl0b3JDb21tYW5kKTogQWRkIG1fbmF0aXZl
V2lkZ2V0IG1lbWJlci4KLS0tCiBXZWJLaXQvZ3RrL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAg
ICAgICAgICAgfCAgIDIwICsrKwogV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGll
bnRHdGsuY3BwIHwgIDIxOCArKysrKysrKysrKysrKysrKystLS0tLS0tCiBXZWJLaXQvZ3RrL1dl
YkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEd0ay5oICAgfCAgIDEwICstCiAzIGZpbGVzIGNoYW5n
ZWQsIDE4OSBpbnNlcnRpb25zKCspLCA1OSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9XZWJL
aXQvZ3RrL0NoYW5nZUxvZyBiL1dlYktpdC9ndGsvQ2hhbmdlTG9nCmluZGV4IGE0MTcwZDIuLmNl
NDY5NTggMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9ndGsv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTAtMDUtMDQgIE1hcnRpbiBSb2JpbnNvbiAg
PG1yb2JpbnNvbkB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFtHdGtdIERvZXNuJ3Qgc3VwcG9ydCBndGsta2V5LXRoZW1lcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjgyNTcKKworICAg
ICAgICBBZGQgc3VwcG9ydCBmb3IgR1RLKyBrZXkgdGhlbWVzLgorCisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6c2VsZWN0QWxs
KTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OmRlbGV0ZUZyb21DdXJzb3IpOiBBZGRlZC4KKyAg
ICAgICAgKFdlYktpdDo6bW92ZUN1cnNvcik6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpFZGl0
b3JDbGllbnQ6OmdlbmVyYXRlRWRpdG9yQ29tbWFuZHMpOiBBZGRlZC4KKyAgICAgICAgKFdlYktp
dDo6RWRpdG9yQ2xpZW50OjpleGVjdXRlUGVuZGluZ0VkaXRvckNvbW1hbmRzKTogQWRkZWQuCisg
ICAgICAgIChXZWJLaXQ6OkVkaXRvckNsaWVudDo6aGFuZGxlS2V5Ym9hcmRFdmVudCk6IERlcml2
ZSBlZGl0b3IgY29tbWFuZHMgYm90aCBmcm9tIGludGVybmFsIHRleHQgd2lkZ2V0IGFuZCBhIGxp
c3Qgb2YgZmFsbGJhY2tzLgorICAgICAgICAoV2ViS2l0OjpFZGl0b3JDbGllbnQ6OkVkaXRvckNs
aWVudCk6IEFkZCBtX25hdGl2ZVdpZGdldCBpbml0aWFsaXplci4KKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuaDoKKyAgICAgICAgKFdlYktpdDo6RWRpdG9yQ2xpZW50
OjphZGRQZW5kaW5nRWRpdG9yQ29tbWFuZCk6IEFkZCBtX25hdGl2ZVdpZGdldCBtZW1iZXIuCisK
IDIwMTAtMDUtMDMgIEFiaGlzaGVrIEFyeWEgIDxpbmZlcm5vQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay9XZWJD
b3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuY3BwIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9y
dC9FZGl0b3JDbGllbnRHdGsuY3BwCmluZGV4IDUxMTcyYjQuLmJiNDQ4OWEgMTAwNjQ0Ci0tLSBh
L1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmNwcAorKysgYi9XZWJL
aXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEd0ay5jcHAKQEAgLTg3LDYgKzg3LDEw
MCBAQCBzdGF0aWMgdm9pZCBpbUNvbnRleHRQcmVlZGl0Q2hhbmdlZChHdGtJTUNvbnRleHQqIGNv
bnRleHQsIEVkaXRvckNsaWVudCogY2xpZW50KQogICAgIGZyYW1lLT5lZGl0b3IoKS0+c2V0Q29t
cG9zaXRpb24ocHJlZWRpdFN0cmluZywgdW5kZXJsaW5lcywgMCwgMCk7CiB9CiAKK3N0YXRpYyB2
b2lkIHNlbGVjdEFsbChHdGtXaWRnZXQqIHdpZGdldCwgZ2Jvb2xlYW4sIEVkaXRvckNsaWVudCog
Y2xpZW50KQoreworICAgIGdfc2lnbmFsX3N0b3BfZW1pc3Npb25fYnlfbmFtZSh3aWRnZXQsICJz
ZWxlY3RfYWxsIik7CisgICAgY2xpZW50LT5hZGRQZW5kaW5nRWRpdG9yQ29tbWFuZCgiU2VsZWN0
QWxsIik7Cit9CisKK3N0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBndGtEZWxldGVDb21tYW5kc1td
WzJdID0geworICB7ICJEZWxldGVCYWNrd2FyZCIsICAgICAgICAgICAgICAgIkRlbGV0ZUZvcndh
cmQiICAgICAgICAgICAgICAgICAgICAgICAgfSwgLy8gQ2hhcmFjdGVycworICB7ICJEZWxldGVX
b3JkQmFja3dhcmQiLCAgICAgICAgICAgIkRlbGV0ZVdvcmRGb3J3YXJkIiAgICAgICAgICAgICAg
ICAgICAgfSwgLy8gV29yZCBlbmRzCisgIHsgIkRlbGV0ZVdvcmRCYWNrd2FyZCIsICAgICAgICAg
ICAiRGVsZXRlV29yZEZvcndhcmQiICAgICAgICAgICAgICAgICAgICB9LCAvLyBXb3JkcworICB7
ICJEZWxldGVUb0JlZ2lubmluZ09mTGluZSIsICAgICAgIkRlbGV0ZVRvRW5kT2ZMaW5lIiAgICAg
ICAgICAgICAgICAgICAgfSwgLy8gTGluZXMKKyAgeyAiRGVsZXRlVG9CZWdpbm5pbmdPZkxpbmUi
LCAgICAgICJEZWxldGVUb0VuZE9mTGluZSIgICAgICAgICAgICAgICAgICAgIH0sIC8vIExpbmUg
ZW5kcworICB7ICJEZWxldGVUb0JlZ2lubmluZ09mUGFyYWdyYXBoIiwgIkRlbGV0ZVRvRW5kT2ZQ
YXJhZ3JhcGgiICAgICAgICAgICAgICAgfSwgLy8gUGFyYWdyYXBoIGVuZHMKKyAgeyAiRGVsZXRl
VG9CZWdpbm5pbmdPZlBhcmFncmFwaCIsICJEZWxldGVUb0VuZE9mUGFyYWdyYXBoIiAgICAgICAg
ICAgICAgIH0sIC8vIFBhcmFncmFwaHMKKyAgeyAwLCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gIC8vIFdoaXRlc3Bh
Y2UgKE0tXCBpbiBFbWFjcykKK307CisKK3N0YXRpYyB2b2lkIGRlbGV0ZUZyb21DdXJzb3IoR3Rr
V2lkZ2V0KiB3aWRnZXQsIEd0a0RlbGV0ZVR5cGUgZGVsZXRlVHlwZSwgZ2ludCBjb3VudCwgRWRp
dG9yQ2xpZW50KiBjbGllbnQpCit7CisgICAgZ19zaWduYWxfc3RvcF9lbWlzc2lvbl9ieV9uYW1l
KHdpZGdldCwgImRlbGV0ZV9mcm9tX2N1cnNvciIpOworICAgIGludCBkaXJlY3Rpb24gPSBjb3Vu
dCA+IDAgPyAxIDogMDsKKworICAgIC8vIEVuc3VyaW5nIHRoYXQgZGVsZXRlVHlwZSA8PSBHX05f
RUxFTUVOVFMgaGVyZSByZXN1bHRzIGluIGEgY29tcGlsZXIgd2FybmluZworICAgIC8vIHRoYXQg
dGhlIGNvbmRpdGlvbiBpcyBhbHdheXMgdHJ1ZS4KKworICAgIGlmIChkZWxldGVUeXBlID09IEdU
S19ERUxFVEVfV09SRFMpIHsKKyAgICAgICAgaWYgKGRpcmVjdGlvbiA9PSAwKSB7CisgICAgICAg
ICAgICBjbGllbnQtPmFkZFBlbmRpbmdFZGl0b3JDb21tYW5kKCJNb3ZlV29yZEZvcndhcmQiKTsK
KyAgICAgICAgICAgIGNsaWVudC0+YWRkUGVuZGluZ0VkaXRvckNvbW1hbmQoIk1vdmVXb3JkQmFj
a3dhcmQiKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGNsaWVudC0+YWRkUGVuZGlu
Z0VkaXRvckNvbW1hbmQoIk1vdmVXb3JkQmFja3dhcmQiKTsKKyAgICAgICAgICAgIGNsaWVudC0+
YWRkUGVuZGluZ0VkaXRvckNvbW1hbmQoIk1vdmVXb3JkRm9yd2FyZCIpOworICAgICAgICB9Cisg
ICAgfSBlbHNlIGlmIChkZWxldGVUeXBlID09IEdUS19ERUxFVEVfRElTUExBWV9MSU5FUykgewor
ICAgICAgICBpZiAoZGlyZWN0aW9uID09IDApCisgICAgICAgICAgICBjbGllbnQtPmFkZFBlbmRp
bmdFZGl0b3JDb21tYW5kKCJNb3ZlVG9CZWdpbm5pbmdPZkxpbmUiKTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgY2xpZW50LT5hZGRQZW5kaW5nRWRpdG9yQ29tbWFuZCgiTW92ZVRvRW5kT2ZM
aW5lIik7CisgICAgfSBlbHNlIGlmIChkZWxldGVUeXBlID09IEdUS19ERUxFVEVfUEFSQUdSQVBI
UykgeworICAgICAgICBpZiAoZGlyZWN0aW9uID09IDApCisgICAgICAgICAgICBjbGllbnQtPmFk
ZFBlbmRpbmdFZGl0b3JDb21tYW5kKCJNb3ZlVG9CZWdpbm5pbmdPZlBhcmFncmFwaCIpOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICBjbGllbnQtPmFkZFBlbmRpbmdFZGl0b3JDb21tYW5kKCJN
b3ZlVG9FbmRPZlBhcmFncmFwaCIpOworICAgIH0KKworICAgIGNvbnN0IGNoYXIqIHJhd0NvbW1h
bmQgPSBndGtEZWxldGVDb21tYW5kc1tkZWxldGVUeXBlXVtkaXJlY3Rpb25dOworICAgIGlmICgh
cmF3Q29tbWFuZCkKKyAgICAgIHJldHVybjsKKworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYWJz
KGNvdW50KTsgaSsrKQorICAgICAgICBjbGllbnQtPmFkZFBlbmRpbmdFZGl0b3JDb21tYW5kKHJh
d0NvbW1hbmQpOworfQorCitzdGF0aWMgY29uc3QgY2hhciogY29uc3QgZ3RrTW92ZUNvbW1hbmRz
W11bNF0gPSB7CisgICAgeyAiTW92ZUJhY2t3YXJkIiwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJNb3ZlRm9yd2FyZCIsCisgICAgICAiTW92ZUJhY2t3YXJkQW5kTW9kaWZ5U2Vs
ZWN0aW9uIiwgICAgICAgICAgICAgICAgICJNb3ZlRm9yd2FyZEFuZE1vZGlmeVNlbGVjdGlvbiIg
ICAgICAgICAgICAgfSwgLy8gRm9yd2FyZC9iYWNrd2FyZCBncmFwaGVtZQorICAgIHsgIk1vdmVC
YWNrd2FyZCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTW92ZUZvcndhcmQi
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
ICAgICAgICAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gIC8v
IEhvcml6b250YWwgcGFnZSBtb3ZlbWVudAorfTsKKworc3RhdGljIHZvaWQgbW92ZUN1cnNvcihH
dGtXaWRnZXQqIHdpZGdldCwgR3RrTW92ZW1lbnRTdGVwIHN0ZXAsIGdpbnQgY291bnQsIGdib29s
ZWFuIGV4dGVuZFNlbGVjdGlvbiwgRWRpdG9yQ2xpZW50KiBjbGllbnQpCit7CisgICAgZ19zaWdu
YWxfc3RvcF9lbWlzc2lvbl9ieV9uYW1lKHdpZGdldCwgIm1vdmVfY3Vyc29yIik7CisgICAgaW50
IGRpcmVjdGlvbiA9IGNvdW50ID4gMCA/IDEgOiAwOworICAgIGlmIChleHRlbmRTZWxlY3Rpb24p
CisgICAgICAgIGRpcmVjdGlvbiArPSAyOworCisgICAgaWYgKHN0YXRpY19jYXN0PHVuc2lnbmVk
PihzdGVwKSA+PSBHX05fRUxFTUVOVFMoZ3RrTW92ZUNvbW1hbmRzKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgY29uc3QgY2hhciogcmF3Q29tbWFuZCA9IGd0a01vdmVDb21tYW5kc1tzdGVwXVtk
aXJlY3Rpb25dOworICAgIGlmICghcmF3Q29tbWFuZCkKKyAgICAgICAgcmV0dXJuOworCisgICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCBhYnMoY291bnQpOyBpKyspCisgICAgICAgIGNsaWVudC0+YWRk
UGVuZGluZ0VkaXRvckNvbW1hbmQocmF3Q29tbWFuZCk7Cit9CisKIHZvaWQgRWRpdG9yQ2xpZW50
Ojp1cGRhdGVQZW5kaW5nQ29tcG9zaXRpb24oY29uc3QgZ2NoYXIqIG5ld0NvbXBvc2l0aW9uKQog
ewogICAgIC8vIFRoZSBJTUNvbnRleHQgbWF5IHNpZ25hbCBtb3JlIHRoYW4gb25lIGNvbXBsZXRl
ZCBjb21wb3NpdGlvbiBpbiBhIHJvdywKQEAgLTM4Miw0MSArNDc2LDEwIEBAIHN0cnVjdCBLZXlQ
cmVzc0VudHJ5IHsKIH07CiAKIHN0YXRpYyBjb25zdCBLZXlEb3duRW50cnkga2V5RG93bkVudHJp
ZXNbXSA9IHsKLSAgICB7IFZLX0xFRlQsICAgMCwgICAgICAgICAgICAgICAgICAiTW92ZUxlZnQi
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICB7IFZLX0xFRlQsICAg
U2hpZnRLZXksICAgICAgICAgICAiTW92ZUxlZnRBbmRNb2RpZnlTZWxlY3Rpb24iICAgICAgICAg
ICAgICAgICAgfSwKLSAgICB7IFZLX0xFRlQsICAgQ3RybEtleSwgICAgICAgICAgICAiTW92ZVdv
cmRMZWZ0IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICB7IFZLX0xFRlQs
ICAgQ3RybEtleSB8IFNoaWZ0S2V5LCAiTW92ZVdvcmRMZWZ0QW5kTW9kaWZ5U2VsZWN0aW9uIiAg
ICAgICAgICAgICAgfSwKLSAgICB7IFZLX1JJR0hULCAgMCwgICAgICAgICAgICAgICAgICAiTW92
ZVJpZ2h0IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICB7IFZLX1JJ
R0hULCAgU2hpZnRLZXksICAgICAgICAgICAiTW92ZVJpZ2h0QW5kTW9kaWZ5U2VsZWN0aW9uIiAg
ICAgICAgICAgICAgICAgfSwKLSAgICB7IFZLX1JJR0hULCAgQ3RybEtleSwgICAgICAgICAgICAi
TW92ZVdvcmRSaWdodCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICB7IFZL
X1JJR0hULCAgQ3RybEtleSB8IFNoaWZ0S2V5LCAiTW92ZVdvcmRSaWdodEFuZE1vZGlmeVNlbGVj
dGlvbiIgICAgICAgICAgICAgfSwKLSAgICB7IFZLX1VQLCAgICAgMCwgICAgICAgICAgICAgICAg
ICAiTW92ZVVwIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICB7
IFZLX1VQLCAgICAgU2hpZnRLZXksICAgICAgICAgICAiTW92ZVVwQW5kTW9kaWZ5U2VsZWN0aW9u
IiAgICAgICAgICAgICAgICAgICAgfSwKLSAgICB7IFZLX1BSSU9SLCAgU2hpZnRLZXksICAgICAg
ICAgICAiTW92ZVBhZ2VVcEFuZE1vZGlmeVNlbGVjdGlvbiIgICAgICAgICAgICAgICAgfSwKLSAg
ICB7IFZLX0RPV04sICAgMCwgICAgICAgICAgICAgICAgICAiTW92ZURvd24iICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICB7IFZLX0RPV04sICAgU2hpZnRLZXksICAg
ICAgICAgICAiTW92ZURvd25BbmRNb2RpZnlTZWxlY3Rpb24iICAgICAgICAgICAgICAgICAgfSwK
LSAgICB7IFZLX05FWFQsICAgU2hpZnRLZXksICAgICAgICAgICAiTW92ZVBhZ2VEb3duQW5kTW9k
aWZ5U2VsZWN0aW9uIiAgICAgICAgICAgICAgfSwKLSAgICB7IFZLX1BSSU9SLCAgMCwgICAgICAg
ICAgICAgICAgICAiTW92ZVBhZ2VVcCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fSwKLSAgICB7IFZLX05FWFQsICAgMCwgICAgICAgICAgICAgICAgICAiTW92ZVBhZ2VEb3duIiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICB7IFZLX0hPTUUsICAgMCwgICAg
ICAgICAgICAgICAgICAiTW92ZVRvQmVnaW5uaW5nT2ZMaW5lIiAgICAgICAgICAgICAgICAgICAg
ICAgfSwKLSAgICB7IFZLX0hPTUUsICAgU2hpZnRLZXksICAgICAgICAgICAiTW92ZVRvQmVnaW5u
aW5nT2ZMaW5lQW5kTW9kaWZ5U2VsZWN0aW9uIiAgICAgfSwKLSAgICB7IFZLX0hPTUUsICAgQ3Ry
bEtleSwgICAgICAgICAgICAiTW92ZVRvQmVnaW5uaW5nT2ZEb2N1bWVudCIgICAgICAgICAgICAg
ICAgICAgfSwKLSAgICB7IFZLX0hPTUUsICAgQ3RybEtleSB8IFNoaWZ0S2V5LCAiTW92ZVRvQmVn
aW5uaW5nT2ZEb2N1bWVudEFuZE1vZGlmeVNlbGVjdGlvbiIgfSwKLQotICAgIHsgVktfRU5ELCAg
ICAwLCAgICAgICAgICAgICAgICAgICJNb3ZlVG9FbmRPZkxpbmUiICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9LAotICAgIHsgVktfRU5ELCAgICBTaGlmdEtleSwgICAgICAgICAgICJNb3Zl
VG9FbmRPZkxpbmVBbmRNb2RpZnlTZWxlY3Rpb24iICAgICAgICAgICB9LAotICAgIHsgVktfRU5E
LCAgICBDdHJsS2V5LCAgICAgICAgICAgICJNb3ZlVG9FbmRPZkRvY3VtZW50IiAgICAgICAgICAg
ICAgICAgICAgICAgICB9LAotICAgIHsgVktfRU5ELCAgICBDdHJsS2V5IHwgU2hpZnRLZXksICJN
b3ZlVG9FbmRPZkRvY3VtZW50QW5kTW9kaWZ5U2VsZWN0aW9uIiAgICAgICB9LAotCiAgICAgeyBW
S19CQUNLLCAgIDAsICAgICAgICAgICAgICAgICAgIkRlbGV0ZUJhY2t3YXJkIiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIH0sCiAgICAgeyBWS19CQUNLLCAgIFNoaWZ0S2V5LCAgICAgICAg
ICAgIkRlbGV0ZUJhY2t3YXJkIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAg
eyBWS19ERUxFVEUsIDAsICAgICAgICAgICAgICAgICAgIkRlbGV0ZUZvcndhcmQiICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgeyBWS19CQUNLLCAgIEN0cmxLZXksICAgICAg
ICAgICAgIkRlbGV0ZVdvcmRCYWNrd2FyZCIgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0g
ICAgeyBWS19ERUxFVEUsIEN0cmxLZXksICAgICAgICAgICAgIkRlbGV0ZVdvcmRGb3J3YXJkIiAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0KICAgICB7ICdCJywgICAgICAgQ3RybEtleSwg
ICAgICAgICAgICAiVG9nZ2xlQm9sZCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fSwKICAgICB7ICdJJywgICAgICAgQ3RybEtleSwgICAgICAgICAgICAiVG9nZ2xlSXRhbGljIiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLQogICAgIHsgVktfRVNDQVBFLCAwLCAg
ICAgICAgICAgICAgICAgICJDYW5jZWwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9LAogICAgIHsgVktfT0VNX1BFUklPRCwgQ3RybEtleSwgICAgICAgICJDYW5jZWwiICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgIHsgVktfVEFCLCAgICAw
LCAgICAgICAgICAgICAgICAgICJJbnNlcnRUYWIiICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB9LApAQCAtNDM2LDM5ICs0OTksNzYgQEAgc3RhdGljIGNvbnN0IEtleVByZXNzRW50
cnkga2V5UHJlc3NFbnRyaWVzW10gPSB7CiAgICAgeyAnXHInLCAgIEFsdEtleSB8IFNoaWZ0S2V5
LCAgIkluc2VydE5ld2xpbmUiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiB9Owog
Ci1zdGF0aWMgY29uc3QgY2hhciogaW50ZXJwcmV0RWRpdG9yQ29tbWFuZEtleUV2ZW50KGNvbnN0
IEtleWJvYXJkRXZlbnQqIGV2dCkKK3ZvaWQgRWRpdG9yQ2xpZW50OjpnZW5lcmF0ZUVkaXRvckNv
bW1hbmRzKGNvbnN0IEtleWJvYXJkRXZlbnQqIGV2ZW50KQogewotICAgIEFTU0VSVChldnQtPnR5
cGUoKSA9PSBldmVudE5hbWVzKCkua2V5ZG93bkV2ZW50IHx8IGV2dC0+dHlwZSgpID09IGV2ZW50
TmFtZXMoKS5rZXlwcmVzc0V2ZW50KTsKKyAgICBBU1NFUlQoZXZlbnQtPnR5cGUoKSA9PSBldmVu
dE5hbWVzKCkua2V5ZG93bkV2ZW50IHx8IGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmtl
eXByZXNzRXZlbnQpOwogCi0gICAgc3RhdGljIEhhc2hNYXA8aW50LCBjb25zdCBjaGFyKj4qIGtl
eURvd25Db21tYW5kc01hcCA9IDA7Ci0gICAgc3RhdGljIEhhc2hNYXA8aW50LCBjb25zdCBjaGFy
Kj4qIGtleVByZXNzQ29tbWFuZHNNYXAgPSAwOworICAgIG1fcGVuZGluZ0VkaXRvckNvbW1hbmRz
LmNsZWFyKCk7CiAKLSAgICBpZiAoIWtleURvd25Db21tYW5kc01hcCkgewotICAgICAgICBrZXlE
b3duQ29tbWFuZHNNYXAgPSBuZXcgSGFzaE1hcDxpbnQsIGNvbnN0IGNoYXIqPjsKLSAgICAgICAg
a2V5UHJlc3NDb21tYW5kc01hcCA9IG5ldyBIYXNoTWFwPGludCwgY29uc3QgY2hhcio+OworICAg
IC8vIEZpcnN0IHRyeSB0byBpbnRlcnByZXQgdGhlIGNvbW1hbmQgYXMgYSBuYXRpdmUgR1RLKyBr
ZXkgYmluZGluZy4KKyAgICBndGtfYmluZGluZ3NfYWN0aXZhdGVfZXZlbnQoR1RLX09CSkVDVCht
X25hdGl2ZVdpZGdldC5nZXQoKSksIGV2ZW50LT5rZXlFdmVudCgpLT5nZGtFdmVudEtleSgpKTsK
KyAgICBpZiAobV9wZW5kaW5nRWRpdG9yQ29tbWFuZHMuc2l6ZSgpID4gMCkKKyAgICAgICAgcmV0
dXJuOworCisgICAgc3RhdGljIEhhc2hNYXA8aW50LCBjb25zdCBjaGFyKj4ga2V5RG93bkNvbW1h
bmRzTWFwOworICAgIHN0YXRpYyBIYXNoTWFwPGludCwgY29uc3QgY2hhcio+IGtleVByZXNzQ29t
bWFuZHNNYXA7CiAKKyAgICBpZiAoa2V5RG93bkNvbW1hbmRzTWFwLmlzRW1wdHkoKSkgewogICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgR19OX0VMRU1FTlRTKGtleURvd25FbnRyaWVz
KTsgaSsrKQotICAgICAgICAgICAga2V5RG93bkNvbW1hbmRzTWFwLT5zZXQoa2V5RG93bkVudHJp
ZXNbaV0ubW9kaWZpZXJzIDw8IDE2IHwga2V5RG93bkVudHJpZXNbaV0udmlydHVhbEtleSwga2V5
RG93bkVudHJpZXNbaV0ubmFtZSk7CisgICAgICAgICAgICBrZXlEb3duQ29tbWFuZHNNYXAuc2V0
KGtleURvd25FbnRyaWVzW2ldLm1vZGlmaWVycyA8PCAxNiB8IGtleURvd25FbnRyaWVzW2ldLnZp
cnR1YWxLZXksIGtleURvd25FbnRyaWVzW2ldLm5hbWUpOwogCiAgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBHX05fRUxFTUVOVFMoa2V5UHJlc3NFbnRyaWVzKTsgaSsrKQotICAgICAg
ICAgICAga2V5UHJlc3NDb21tYW5kc01hcC0+c2V0KGtleVByZXNzRW50cmllc1tpXS5tb2RpZmll
cnMgPDwgMTYgfCBrZXlQcmVzc0VudHJpZXNbaV0uY2hhckNvZGUsIGtleVByZXNzRW50cmllc1tp
XS5uYW1lKTsKKyAgICAgICAgICAgIGtleVByZXNzQ29tbWFuZHNNYXAuc2V0KGtleVByZXNzRW50
cmllc1tpXS5tb2RpZmllcnMgPDwgMTYgfCBrZXlQcmVzc0VudHJpZXNbaV0uY2hhckNvZGUsIGtl
eVByZXNzRW50cmllc1tpXS5uYW1lKTsKICAgICB9CiAKICAgICB1bnNpZ25lZCBtb2RpZmllcnMg
PSAwOwotICAgIGlmIChldnQtPnNoaWZ0S2V5KCkpCisgICAgaWYgKGV2ZW50LT5zaGlmdEtleSgp
KQogICAgICAgICBtb2RpZmllcnMgfD0gU2hpZnRLZXk7Ci0gICAgaWYgKGV2dC0+YWx0S2V5KCkp
CisgICAgaWYgKGV2ZW50LT5hbHRLZXkoKSkKICAgICAgICAgbW9kaWZpZXJzIHw9IEFsdEtleTsK
LSAgICBpZiAoZXZ0LT5jdHJsS2V5KCkpCisgICAgaWYgKGV2ZW50LT5jdHJsS2V5KCkpCiAgICAg
ICAgIG1vZGlmaWVycyB8PSBDdHJsS2V5OwogCi0gICAgaWYgKGV2dC0+dHlwZSgpID09IGV2ZW50
TmFtZXMoKS5rZXlkb3duRXZlbnQpIHsKLSAgICAgICAgaW50IG1hcEtleSA9IG1vZGlmaWVycyA8
PCAxNiB8IGV2dC0+a2V5Q29kZSgpOwotICAgICAgICByZXR1cm4gbWFwS2V5ID8ga2V5RG93bkNv
bW1hbmRzTWFwLT5nZXQobWFwS2V5KSA6IDA7CisKKyAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBl
dmVudE5hbWVzKCkua2V5ZG93bkV2ZW50KSB7CisgICAgICAgIGludCBtYXBLZXkgPSBtb2RpZmll
cnMgPDwgMTYgfCBldmVudC0+a2V5Q29kZSgpOworICAgICAgICBpZiAobWFwS2V5KQorICAgICAg
ICAgICAgbV9wZW5kaW5nRWRpdG9yQ29tbWFuZHMuYXBwZW5kKGtleURvd25Db21tYW5kc01hcC5n
ZXQobWFwS2V5KSk7CisgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpbnQgbWFwS2V5ID0g
bW9kaWZpZXJzIDw8IDE2IHwgZXZ0LT5jaGFyQ29kZSgpOwotICAgIHJldHVybiBtYXBLZXkgPyBr
ZXlQcmVzc0NvbW1hbmRzTWFwLT5nZXQobWFwS2V5KSA6IDA7CisgICAgaW50IG1hcEtleSA9IG1v
ZGlmaWVycyA8PCAxNiB8IGV2ZW50LT5jaGFyQ29kZSgpOworICAgIGlmIChtYXBLZXkpCisgICAg
ICAgIG1fcGVuZGluZ0VkaXRvckNvbW1hbmRzLmFwcGVuZChrZXlQcmVzc0NvbW1hbmRzTWFwLmdl
dChtYXBLZXkpKTsKK30KKworYm9vbCBFZGl0b3JDbGllbnQ6OmV4ZWN1dGVQZW5kaW5nRWRpdG9y
Q29tbWFuZHMoRnJhbWUqIGZyYW1lLCBib29sIGFsbG93VGV4dEluc2VydGlvbikKK3sKKyAgICBW
ZWN0b3I8RWRpdG9yOjpDb21tYW5kPiBjb21tYW5kczsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IG1fcGVuZGluZ0VkaXRvckNvbW1hbmRzLnNpemUoKTsgaSsrKSB7CisgICAgICAgIEVkaXRv
cjo6Q29tbWFuZCBjb21tYW5kID0gZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKG1fcGVuZGluZ0Vk
aXRvckNvbW1hbmRzLmF0KGkpKTsKKyAgICAgICAgaWYgKGNvbW1hbmQuaXNUZXh0SW5zZXJ0aW9u
KCkgJiYgIWFsbG93VGV4dEluc2VydGlvbikKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgICAgICBjb21tYW5kcy5hcHBlbmQoY29tbWFuZCk7CisgICAgfQorCisgICAgYm9vbCBzdWNj
ZXNzID0gdHJ1ZTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvbW1hbmRzLnNpemUoKTsg
aSsrKSB7CisgICAgICAgIGlmICghY29tbWFuZHMuYXQoaSkuZXhlY3V0ZSgpKSB7CisgICAgICAg
ICAgICBzdWNjZXNzID0gZmFsc2U7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAg
IH0KKworICAgIG1fcGVuZGluZ0VkaXRvckNvbW1hbmRzLmNsZWFyKCk7CisKKyAgICAvLyBJZiB3
ZSBzdWNjZXNzZnVsbHkgY29tcGxldGVkIGFsbCBlZGl0b3IgY29tbWFuZHMsIHRoZW4KKyAgICAv
LyB0aGlzIHNpZ25hbHMgYSBjYW5jZWxpbmcgb2YgdGhlIGNvbXBvc2l0aW9uLgorICAgIGlmIChz
dWNjZXNzKQorICAgICAgICBjbGVhclBlbmRpbmdDb21wb3NpdGlvbigpOworCisgICAgcmV0dXJu
IHN1Y2Nlc3M7CiB9CiAKIHZvaWQgRWRpdG9yQ2xpZW50OjpoYW5kbGVLZXlib2FyZEV2ZW50KEtl
eWJvYXJkRXZlbnQqIGV2ZW50KQpAQCAtNDg3LDIzICs1ODcsMjAgQEAgdm9pZCBFZGl0b3JDbGll
bnQ6OmhhbmRsZUtleWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVudCogZXZlbnQpCiAgICAgaWYgKCFm
cmFtZS0+ZWRpdG9yKCktPmNhbkVkaXQoKSAmJiAhKGZyYW1lLT5zZXR0aW5ncygpICYmIGZyYW1l
LT5zZXR0aW5ncygpLT5jYXJldEJyb3dzaW5nRW5hYmxlZCgpKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgY29uc3QgZ2NoYXIqIGVkaXRvckNvbW1hbmRTdHJpbmcgPSBpbnRlcnByZXRFZGl0b3JD
b21tYW5kS2V5RXZlbnQoZXZlbnQpOwotICAgIGlmIChlZGl0b3JDb21tYW5kU3RyaW5nKSB7Ci0g
ICAgICAgIEVkaXRvcjo6Q29tbWFuZCBjb21tYW5kID0gZnJhbWUtPmVkaXRvcigpLT5jb21tYW5k
KGVkaXRvckNvbW1hbmRTdHJpbmcpOworICAgIGdlbmVyYXRlRWRpdG9yQ29tbWFuZHMoZXZlbnQp
OworICAgIGlmIChtX3BlbmRpbmdFZGl0b3JDb21tYW5kcy5zaXplKCkgPiAwKSB7CiAKLSAgICAg
ICAgLy8gT24gZWRpdG9yIGNvbW1hbmRzIGZyb20ga2V5IGRvd24gZXZlbnRzLCB3ZSBvbmx5IHdh
bnQgdG8gbGV0IHRoZSBldmVudCBidWJibGUgdXAgdG8KLSAgICAgICAgLy8gdGhlIERPTSBpZiBp
dCBpbnNlcnRzIHRleHQuIElmIGl0IGRvZXNuJ3QgaW5zZXJ0IHRleHQgKGUuZy4gVGFiIHRoYXQg
Y2hhbmdlcyBmb2N1cykKLSAgICAgICAgLy8gd2UganVzdCB3YW50IFdlYktpdCB0byBoYW5kbGUg
aXQgaW1tZWRpYXRlbHkgd2l0aG91dCBhIERPTSBldmVudC4KKyAgICAgICAgLy8gRHVyaW5nIFJh
d0tleURvd24gZXZlbnRzIGlmIGFuIGVkaXRvciBjb21tYW5kIHdpbGwgaW5zZXJ0IHRleHQsIGRl
ZmVyCisgICAgICAgIC8vIHRoZSBpbnNlcnRpb24gdW50aWwgdGhlIGtleXByZXNzIGV2ZW50LiBX
ZSB3YW50IGtleWRvd24gdG8gYnViYmxlIHVwCisgICAgICAgIC8vIHRocm91Z2ggdGhlIERPTSBm
aXJzdC4KICAgICAgICAgaWYgKHBsYXRmb3JtRXZlbnQtPnR5cGUoKSA9PSBQbGF0Zm9ybUtleWJv
YXJkRXZlbnQ6OlJhd0tleURvd24pIHsKLSAgICAgICAgICAgIGlmICghY29tbWFuZC5pc1RleHRJ
bnNlcnRpb24oKSAmJiBjb21tYW5kLmV4ZWN1dGUoZXZlbnQpKQorICAgICAgICAgICAgaWYgKGV4
ZWN1dGVQZW5kaW5nRWRpdG9yQ29tbWFuZHMoZnJhbWUsIGZhbHNlKSkKICAgICAgICAgICAgICAg
ICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKIAotICAgICAgICAgICAgY2xlYXJQZW5kaW5n
Q29tcG9zaXRpb24oKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAg
IGlmIChjb21tYW5kLmV4ZWN1dGUoZXZlbnQpKSB7Ci0gICAgICAgICAgICBjbGVhclBlbmRpbmdD
b21wb3NpdGlvbigpOworICAgICAgICBpZiAoZXhlY3V0ZVBlbmRpbmdFZGl0b3JDb21tYW5kcyhm
cmFtZSwgdHJ1ZSkpIHsKICAgICAgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC01OTIsMTAgKzY4OSwxNSBAQCBFZGl0
b3JDbGllbnQ6OkVkaXRvckNsaWVudChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogICAgIDogbV9p
c0luUmVkbyhmYWxzZSkKICAgICAsIG1fd2ViVmlldyh3ZWJWaWV3KQogICAgICwgbV90cmVhdENv
bnRleHRDb21taXRBc0tleUV2ZW50KGZhbHNlKQorICAgICwgbV9uYXRpdmVXaWRnZXQoZ3RrX3Rl
eHRfdmlld19uZXcoKSkKIHsKICAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJpdiA9IG1fd2Vi
Vmlldy0+cHJpdjsKICAgICBnX3NpZ25hbF9jb25uZWN0KHByaXYtPmltQ29udGV4dCwgImNvbW1p
dCIsIEdfQ0FMTEJBQ0soaW1Db250ZXh0Q29tbWl0dGVkKSwgdGhpcyk7CiAgICAgZ19zaWduYWxf
Y29ubmVjdChwcml2LT5pbUNvbnRleHQsICJwcmVlZGl0LWNoYW5nZWQiLCBHX0NBTExCQUNLKGlt
Q29udGV4dFByZWVkaXRDaGFuZ2VkKSwgdGhpcyk7CisKKyAgICBnX3NpZ25hbF9jb25uZWN0KG1f
bmF0aXZlV2lkZ2V0LmdldCgpLCAic2VsZWN0X2FsbCIsIEdfQ0FMTEJBQ0soc2VsZWN0QWxsKSwg
dGhpcyk7CisgICAgZ19zaWduYWxfY29ubmVjdChtX25hdGl2ZVdpZGdldC5nZXQoKSwgIm1vdmVf
Y3Vyc29yIiwgR19DQUxMQkFDSyhtb3ZlQ3Vyc29yKSwgdGhpcyk7CisgICAgZ19zaWduYWxfY29u
bmVjdChtX25hdGl2ZVdpZGdldC5nZXQoKSwgImRlbGV0ZV9mcm9tX2N1cnNvciIsIEdfQ0FMTEJB
Q0soZGVsZXRlRnJvbUN1cnNvciksIHRoaXMpOwogfQogCiBFZGl0b3JDbGllbnQ6On5FZGl0b3JD
bGllbnQoKQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGll
bnRHdGsuaCBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmgKaW5k
ZXggODI1YzE0Ni4uYTAwZTFkNSAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9y
dC9FZGl0b3JDbGllbnRHdGsuaAorKysgYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0VkaXRv
ckNsaWVudEd0ay5oCkBAIC0zNiwxMiArMzYsMTUgQEAKICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4K
ICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIu
aD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CiAKIHR5cGVkZWYgc3RydWN0IF9X
ZWJLaXRXZWJWaWV3IFdlYktpdFdlYlZpZXc7Cit0eXBlZGVmIHN0cnVjdCBfR3RrV2lkZ2V0IEd0
a1dpZGdldDsKIHR5cGVkZWYgY2hhciBnY2hhcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewotICAg
IGNsYXNzIFBhZ2U7CisgICAgY2xhc3MgRnJhbWU7CisgICAgY2xhc3MgS2V5Ym9hcmRFdmVudDsK
IH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC02MCw3ICs2MywxMCBAQCBuYW1lc3BhY2UgV2Vi
S2l0IHsKICAgICAgICAgYm9vbCB0cmVhdENvbnRleHRDb21taXRBc0tleUV2ZW50KCkgeyByZXR1
cm4gbV90cmVhdENvbnRleHRDb21taXRBc0tleUV2ZW50OyB9CiAgICAgICAgIHZvaWQgY2xlYXJQ
ZW5kaW5nQ29tcG9zaXRpb24oKSB7IG1fcGVuZGluZ0NvbXBvc2l0aW9uLnNldCgwKTsgfQogICAg
ICAgICBib29sIGhhc1BlbmRpbmdDb21wb3NpdGlvbigpIHsgcmV0dXJuIG1fcGVuZGluZ0NvbXBv
c2l0aW9uOyB9CisgICAgICAgIHZvaWQgYWRkUGVuZGluZ0VkaXRvckNvbW1hbmQoY29uc3QgY2hh
ciogY29tbWFuZCkgeyBtX3BlbmRpbmdFZGl0b3JDb21tYW5kcy5hcHBlbmQoY29tbWFuZCk7IH0K
ICAgICAgICAgdm9pZCB1cGRhdGVQZW5kaW5nQ29tcG9zaXRpb24oY29uc3QgY2hhciopOworICAg
ICAgICB2b2lkIGdlbmVyYXRlRWRpdG9yQ29tbWFuZHMoY29uc3QgV2ViQ29yZTo6S2V5Ym9hcmRF
dmVudCopOworICAgICAgICBib29sIGV4ZWN1dGVQZW5kaW5nRWRpdG9yQ29tbWFuZHMoV2ViQ29y
ZTo6RnJhbWUqLCBib29sKTsKIAogICAgICAgICAvLyBmcm9tIEVkaXRvckNsaWVudAogICAgICAg
ICB2aXJ0dWFsIHZvaWQgcGFnZURlc3Ryb3llZCgpOwpAQCAtMTMwLDYgKzEzNiw4IEBAIG5hbWVz
cGFjZSBXZWJLaXQgewogICAgICAgICBXZWJLaXRXZWJWaWV3KiBtX3dlYlZpZXc7CiAgICAgICAg
IGJvb2wgbV90cmVhdENvbnRleHRDb21taXRBc0tleUV2ZW50OwogICAgICAgICBHT3duUHRyPGdj
aGFyPiBtX3BlbmRpbmdDb21wb3NpdGlvbjsKKyAgICAgICAgVmVjdG9yPGNvbnN0IGNoYXIqPiBt
X3BlbmRpbmdFZGl0b3JDb21tYW5kczsKKyAgICAgICAgR1JlZlB0cjxHdGtXaWRnZXQ+IG1fbmF0
aXZlV2lkZ2V0OwogICAgIH07CiB9CiAKLS0gCjEuNi4zLjMKCg==
</data>
<flag name="commit-queue"
          id="39177"
          type_id="3"
          status="-"
          setter="mrobinson"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>55073</attachid>
            <date>2010-05-04 17:00:36 -0700</date>
            <delta_ts>2010-05-04 17:10:42 -0700</delta_ts>
            <desc>Previous patch + style fixes</desc>
            <filename>0001-Gtk-Doesn-t-support-gtk-key-themes.patch</filename>
            <type>text/plain</type>
            <size>18507</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">RnJvbSBlNzdiYjEwNzJjN2ExOTBkZjE5MjViMDRhMDNhN2E3OGMyZWQxZjU4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJ0aW4gUm9iaW5zb24gPG1yb2JpbnNvbkB3ZWJraXQub3Jn
PgpEYXRlOiBUdWUsIDQgTWF5IDIwMTAgMTU6NDg6NTcgLTA3MDAKU3ViamVjdDogW1BBVENIXSBb
R3RrXSBEb2Vzbid0IHN1cHBvcnQgZ3RrLWtleS10aGVtZXMKIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yODI1NwoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpB
ZGQgc3VwcG9ydCBmb3IgR1RLKyBrZXkgdGhlbWVzLgoKKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JD
bGllbnRHdGsuY3BwOgooV2ViS2l0OjpzZWxlY3RBbGwpOiBBZGRlZC4KKFdlYktpdDo6ZGVsZXRl
RnJvbUN1cnNvcik6IEFkZGVkLgooV2ViS2l0Ojptb3ZlQ3Vyc29yKTogQWRkZWQuCihXZWJLaXQ6
OkVkaXRvckNsaWVudDo6Z2VuZXJhdGVFZGl0b3JDb21tYW5kcyk6IEFkZGVkLgooV2ViS2l0OjpF
ZGl0b3JDbGllbnQ6OmV4ZWN1dGVQZW5kaW5nRWRpdG9yQ29tbWFuZHMpOiBBZGRlZC4KKFdlYktp
dDo6RWRpdG9yQ2xpZW50OjpoYW5kbGVLZXlib2FyZEV2ZW50KTogRGVyaXZlIGVkaXRvciBjb21t
YW5kcyBib3RoIGZyb20gaW50ZXJuYWwgdGV4dCB3aWRnZXQgYW5kIGEgbGlzdCBvZiBmYWxsYmFj
a3MuCihXZWJLaXQ6OkVkaXRvckNsaWVudDo6RWRpdG9yQ2xpZW50KTogQWRkIG1fbmF0aXZlV2lk
Z2V0IGluaXRpYWxpemVyLgoqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEd0ay5oOgooV2Vi
S2l0OjpFZGl0b3JDbGllbnQ6OmFkZFBlbmRpbmdFZGl0b3JDb21tYW5kKTogQWRkIG1fbmF0aXZl
V2lkZ2V0IG1lbWJlci4KLS0tCiBXZWJLaXQvZ3RrL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAg
ICAgICAgICAgfCAgIDIwICsrKwogV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGll
bnRHdGsuY3BwIHwgIDIxOCArKysrKysrKysrKysrKysrKystLS0tLS0tCiBXZWJLaXQvZ3RrL1dl
YkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEd0ay5oICAgfCAgIDEwICstCiAzIGZpbGVzIGNoYW5n
ZWQsIDE4OSBpbnNlcnRpb25zKCspLCA1OSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9XZWJL
aXQvZ3RrL0NoYW5nZUxvZyBiL1dlYktpdC9ndGsvQ2hhbmdlTG9nCmluZGV4IGE0MTcwZDIuLmNl
NDY5NTggMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9ndGsv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTAtMDUtMDQgIE1hcnRpbiBSb2JpbnNvbiAg
PG1yb2JpbnNvbkB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFtHdGtdIERvZXNuJ3Qgc3VwcG9ydCBndGsta2V5LXRoZW1lcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjgyNTcKKworICAg
ICAgICBBZGQgc3VwcG9ydCBmb3IgR1RLKyBrZXkgdGhlbWVzLgorCisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6c2VsZWN0QWxs
KTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OmRlbGV0ZUZyb21DdXJzb3IpOiBBZGRlZC4KKyAg
ICAgICAgKFdlYktpdDo6bW92ZUN1cnNvcik6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpFZGl0
b3JDbGllbnQ6OmdlbmVyYXRlRWRpdG9yQ29tbWFuZHMpOiBBZGRlZC4KKyAgICAgICAgKFdlYktp
dDo6RWRpdG9yQ2xpZW50OjpleGVjdXRlUGVuZGluZ0VkaXRvckNvbW1hbmRzKTogQWRkZWQuCisg
ICAgICAgIChXZWJLaXQ6OkVkaXRvckNsaWVudDo6aGFuZGxlS2V5Ym9hcmRFdmVudCk6IERlcml2
ZSBlZGl0b3IgY29tbWFuZHMgYm90aCBmcm9tIGludGVybmFsIHRleHQgd2lkZ2V0IGFuZCBhIGxp
c3Qgb2YgZmFsbGJhY2tzLgorICAgICAgICAoV2ViS2l0OjpFZGl0b3JDbGllbnQ6OkVkaXRvckNs
aWVudCk6IEFkZCBtX25hdGl2ZVdpZGdldCBpbml0aWFsaXplci4KKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuaDoKKyAgICAgICAgKFdlYktpdDo6RWRpdG9yQ2xpZW50
OjphZGRQZW5kaW5nRWRpdG9yQ29tbWFuZCk6IEFkZCBtX25hdGl2ZVdpZGdldCBtZW1iZXIuCisK
IDIwMTAtMDUtMDMgIEFiaGlzaGVrIEFyeWEgIDxpbmZlcm5vQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay9XZWJD
b3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuY3BwIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9y
dC9FZGl0b3JDbGllbnRHdGsuY3BwCmluZGV4IDUxMTcyYjQuLjk3ZDNkOWMgMTAwNjQ0Ci0tLSBh
L1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmNwcAorKysgYi9XZWJL
aXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEd0ay5jcHAKQEAgLTg3LDYgKzg3LDEw
MCBAQCBzdGF0aWMgdm9pZCBpbUNvbnRleHRQcmVlZGl0Q2hhbmdlZChHdGtJTUNvbnRleHQqIGNv
bnRleHQsIEVkaXRvckNsaWVudCogY2xpZW50KQogICAgIGZyYW1lLT5lZGl0b3IoKS0+c2V0Q29t
cG9zaXRpb24ocHJlZWRpdFN0cmluZywgdW5kZXJsaW5lcywgMCwgMCk7CiB9CiAKK3N0YXRpYyB2
b2lkIHNlbGVjdEFsbChHdGtXaWRnZXQqIHdpZGdldCwgZ2Jvb2xlYW4sIEVkaXRvckNsaWVudCog
Y2xpZW50KQoreworICAgIGdfc2lnbmFsX3N0b3BfZW1pc3Npb25fYnlfbmFtZSh3aWRnZXQsICJz
ZWxlY3RfYWxsIik7CisgICAgY2xpZW50LT5hZGRQZW5kaW5nRWRpdG9yQ29tbWFuZCgiU2VsZWN0
QWxsIik7Cit9CisKK3N0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBndGtEZWxldGVDb21tYW5kc1td
WzJdID0geworICAgIHsgIkRlbGV0ZUJhY2t3YXJkIiwgICAgICAgICAgICAgICAiRGVsZXRlRm9y
d2FyZCIgICAgICAgICAgICAgICAgICAgICAgICB9LCAvLyBDaGFyYWN0ZXJzCisgICAgeyAiRGVs
ZXRlV29yZEJhY2t3YXJkIiwgICAgICAgICAgICJEZWxldGVXb3JkRm9yd2FyZCIgICAgICAgICAg
ICAgICAgICAgIH0sIC8vIFdvcmQgZW5kcworICAgIHsgIkRlbGV0ZVdvcmRCYWNrd2FyZCIsICAg
ICAgICAgICAiRGVsZXRlV29yZEZvcndhcmQiICAgICAgICAgICAgICAgICAgICB9LCAvLyBXb3Jk
cworICAgIHsgIkRlbGV0ZVRvQmVnaW5uaW5nT2ZMaW5lIiwgICAgICAiRGVsZXRlVG9FbmRPZkxp
bmUiICAgICAgICAgICAgICAgICAgICB9LCAvLyBMaW5lcworICAgIHsgIkRlbGV0ZVRvQmVnaW5u
aW5nT2ZMaW5lIiwgICAgICAiRGVsZXRlVG9FbmRPZkxpbmUiICAgICAgICAgICAgICAgICAgICB9
LCAvLyBMaW5lIGVuZHMKKyAgICB7ICJEZWxldGVUb0JlZ2lubmluZ09mUGFyYWdyYXBoIiwgIkRl
bGV0ZVRvRW5kT2ZQYXJhZ3JhcGgiICAgICAgICAgICAgICAgfSwgLy8gUGFyYWdyYXBoIGVuZHMK
KyAgICB7ICJEZWxldGVUb0JlZ2lubmluZ09mUGFyYWdyYXBoIiwgIkRlbGV0ZVRvRW5kT2ZQYXJh
Z3JhcGgiICAgICAgICAgICAgICAgfSwgLy8gUGFyYWdyYXBocworICAgIHsgMCwgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9IC8vIFdoaXRlc3BhY2UgKE0tXCBpbiBFbWFjcykKK307CisKK3N0YXRpYyB2b2lkIGRlbGV0
ZUZyb21DdXJzb3IoR3RrV2lkZ2V0KiB3aWRnZXQsIEd0a0RlbGV0ZVR5cGUgZGVsZXRlVHlwZSwg
Z2ludCBjb3VudCwgRWRpdG9yQ2xpZW50KiBjbGllbnQpCit7CisgICAgZ19zaWduYWxfc3RvcF9l
bWlzc2lvbl9ieV9uYW1lKHdpZGdldCwgImRlbGV0ZV9mcm9tX2N1cnNvciIpOworICAgIGludCBk
aXJlY3Rpb24gPSBjb3VudCA+IDAgPyAxIDogMDsKKworICAgIC8vIEVuc3VyaW5nIHRoYXQgZGVs
ZXRlVHlwZSA8PSBHX05fRUxFTUVOVFMgaGVyZSByZXN1bHRzIGluIGEgY29tcGlsZXIgd2Fybmlu
ZworICAgIC8vIHRoYXQgdGhlIGNvbmRpdGlvbiBpcyBhbHdheXMgdHJ1ZS4KKworICAgIGlmIChk
ZWxldGVUeXBlID09IEdUS19ERUxFVEVfV09SRFMpIHsKKyAgICAgICAgaWYgKCFkaXJlY3Rpb24p
IHsKKyAgICAgICAgICAgIGNsaWVudC0+YWRkUGVuZGluZ0VkaXRvckNvbW1hbmQoIk1vdmVXb3Jk
Rm9yd2FyZCIpOworICAgICAgICAgICAgY2xpZW50LT5hZGRQZW5kaW5nRWRpdG9yQ29tbWFuZCgi
TW92ZVdvcmRCYWNrd2FyZCIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgY2xpZW50
LT5hZGRQZW5kaW5nRWRpdG9yQ29tbWFuZCgiTW92ZVdvcmRCYWNrd2FyZCIpOworICAgICAgICAg
ICAgY2xpZW50LT5hZGRQZW5kaW5nRWRpdG9yQ29tbWFuZCgiTW92ZVdvcmRGb3J3YXJkIik7Cisg
ICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKGRlbGV0ZVR5cGUgPT0gR1RLX0RFTEVURV9ESVNQTEFZ
X0xJTkVTKSB7CisgICAgICAgIGlmICghZGlyZWN0aW9uKQorICAgICAgICAgICAgY2xpZW50LT5h
ZGRQZW5kaW5nRWRpdG9yQ29tbWFuZCgiTW92ZVRvQmVnaW5uaW5nT2ZMaW5lIik7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIGNsaWVudC0+YWRkUGVuZGluZ0VkaXRvckNvbW1hbmQoIk1vdmVU
b0VuZE9mTGluZSIpOworICAgIH0gZWxzZSBpZiAoZGVsZXRlVHlwZSA9PSBHVEtfREVMRVRFX1BB
UkFHUkFQSFMpIHsKKyAgICAgICAgaWYgKCFkaXJlY3Rpb24pCisgICAgICAgICAgICBjbGllbnQt
PmFkZFBlbmRpbmdFZGl0b3JDb21tYW5kKCJNb3ZlVG9CZWdpbm5pbmdPZlBhcmFncmFwaCIpOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICBjbGllbnQtPmFkZFBlbmRpbmdFZGl0b3JDb21tYW5k
KCJNb3ZlVG9FbmRPZlBhcmFncmFwaCIpOworICAgIH0KKworICAgIGNvbnN0IGNoYXIqIHJhd0Nv
bW1hbmQgPSBndGtEZWxldGVDb21tYW5kc1tkZWxldGVUeXBlXVtkaXJlY3Rpb25dOworICAgIGlm
ICghcmF3Q29tbWFuZCkKKyAgICAgIHJldHVybjsKKworICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
YWJzKGNvdW50KTsgaSsrKQorICAgICAgICBjbGllbnQtPmFkZFBlbmRpbmdFZGl0b3JDb21tYW5k
KHJhd0NvbW1hbmQpOworfQorCitzdGF0aWMgY29uc3QgY2hhciogY29uc3QgZ3RrTW92ZUNvbW1h
bmRzW11bNF0gPSB7CisgICAgeyAiTW92ZUJhY2t3YXJkIiwgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJNb3ZlRm9yd2FyZCIsCisgICAgICAiTW92ZUJhY2t3YXJkQW5kTW9kaWZ5
U2VsZWN0aW9uIiwgICAgICAgICAgICAgICAgICJNb3ZlRm9yd2FyZEFuZE1vZGlmeVNlbGVjdGlv
biIgICAgICAgICAgICAgfSwgLy8gRm9yd2FyZC9iYWNrd2FyZCBncmFwaGVtZQorICAgIHsgIk1v
dmVCYWNrd2FyZCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTW92ZUZvcndh
cmQiLAorICAgICAgIk1vdmVCYWNrd2FyZEFuZE1vZGlmeVNlbGVjdGlvbiIsICAgICAgICAgICAg
ICAgICAiTW92ZUZvcndhcmRBbmRNb2RpZnlTZWxlY3Rpb24iICAgICAgICAgICAgIH0sIC8vIExl
ZnQvcmlnaHQgZ3JhcGhlbWUKKyAgICB7ICJNb3ZlV29yZEJhY2t3YXJkIiwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIk1vdmVXb3JkRm9yd2FyZCIsCisgICAgICAiTW92ZVdvcmRCYWNr
d2FyZEFuZE1vZGlmeVNlbGVjdGlvbiIsICAgICAgICAgICAgICJNb3ZlV29yZEZvcndhcmRBbmRN
b2RpZnlTZWxlY3Rpb24iICAgICAgICAgfSwgLy8gRm9yd2FyZC9iYWNrd2FyZCB3b3JkCisgICAg
eyAiTW92ZVVwIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNb3Zl
RG93biIsCisgICAgICAiTW92ZVVwQW5kTW9kaWZ5U2VsZWN0aW9uIiwgICAgICAgICAgICAgICAg
ICAgICAgICJNb3ZlRG93bkFuZE1vZGlmeVNlbGVjdGlvbiIgICAgICAgICAgICAgICAgfSwgLy8g
VXAvZG93biBsaW5lCisgICAgeyAiTW92ZVRvQmVnaW5uaW5nT2ZMaW5lIiwgICAgICAgICAgICAg
ICAgICAgICAgICAgICJNb3ZlVG9FbmRPZkxpbmUiLAorICAgICAgIk1vdmVUb0JlZ2lubmluZ09m
TGluZUFuZE1vZGlmeVNlbGVjdGlvbiIsICAgICAgICAiTW92ZVRvRW5kT2ZMaW5lQW5kTW9kaWZ5
U2VsZWN0aW9uIiAgICAgICAgIH0sIC8vIFVwL2Rvd24gbGluZSBlbmRzCisgICAgeyAiTW92ZVBh
cmFncmFwaEZvcndhcmQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICJNb3ZlUGFyYWdyYXBo
QmFja3dhcmQiLAorICAgICAgIk1vdmVQYXJhZ3JhcGhGb3J3YXJkQW5kTW9kaWZ5U2VsZWN0aW9u
IiwgICAgICAgICAiTW92ZVBhcmFncmFwaEJhY2t3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uIiAgIH0s
IC8vIFVwL2Rvd24gcGFyYWdyYXBocworICAgIHsgIk1vdmVUb0JlZ2lubmluZ09mUGFyYWdyYXBo
IiwgICAgICAgICAgICAgICAgICAgICAiTW92ZVRvRW5kT2ZQYXJhZ3JhcGgiLAorICAgICAgIk1v
dmVUb0JlZ2lubmluZ09mUGFyYWdyYXBoQW5kTW9kaWZ5U2VsZWN0aW9uIiwgICAiTW92ZVRvRW5k
T2ZQYXJhZ3JhcGhBbmRNb2RpZnlTZWxlY3Rpb24iICAgIH0sIC8vIFVwL2Rvd24gcGFyYWdyYXBo
IGVuZHMuCisgICAgeyAiTW92ZVBhZ2VVcCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJNb3ZlUGFnZURvd24iLAorICAgICAgIk1vdmVQYWdlVXBBbmRNb2RpZnlTZWxlY3Rp
b24iLCAgICAgICAgICAgICAgICAgICAiTW92ZVBhZ2VEb3duQW5kTW9kaWZ5U2VsZWN0aW9uIiAg
ICAgICAgICAgIH0sIC8vIFVwL2Rvd24gcGFnZQorICAgIHsgIk1vdmVUb0JlZ2lubmluZ09mRG9j
dW1lbnQiLCAgICAgICAgICAgICAgICAgICAgICAiTW92ZVRvRW5kT2ZEb2N1bWVudCIsCisgICAg
ICAiTW92ZVRvQmVnaW5uaW5nT2ZEb2N1bWVudEFuZE1vZGlmeVNlbGVjdGlvbiIsICAgICJNb3Zl
VG9FbmRPZkRvY3VtZW50QW5kTW9kaWZ5U2VsZWN0aW9uIiAgICAgfSwgLy8gQmVnaW4vZW5kIG9m
IGJ1ZmZlcgorICAgIHsgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAwLAorICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0g
Ly8gSG9yaXpvbnRhbCBwYWdlIG1vdmVtZW50Cit9OworCitzdGF0aWMgdm9pZCBtb3ZlQ3Vyc29y
KEd0a1dpZGdldCogd2lkZ2V0LCBHdGtNb3ZlbWVudFN0ZXAgc3RlcCwgZ2ludCBjb3VudCwgZ2Jv
b2xlYW4gZXh0ZW5kU2VsZWN0aW9uLCBFZGl0b3JDbGllbnQqIGNsaWVudCkKK3sKKyAgICBnX3Np
Z25hbF9zdG9wX2VtaXNzaW9uX2J5X25hbWUod2lkZ2V0LCAibW92ZV9jdXJzb3IiKTsKKyAgICBp
bnQgZGlyZWN0aW9uID0gY291bnQgPiAwID8gMSA6IDA7CisgICAgaWYgKGV4dGVuZFNlbGVjdGlv
bikKKyAgICAgICAgZGlyZWN0aW9uICs9IDI7CisKKyAgICBpZiAoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KHN0ZXApID49IEdfTl9FTEVNRU5UUyhndGtNb3ZlQ29tbWFuZHMpKQorICAgICAgICByZXR1
cm47CisKKyAgICBjb25zdCBjaGFyKiByYXdDb21tYW5kID0gZ3RrTW92ZUNvbW1hbmRzW3N0ZXBd
W2RpcmVjdGlvbl07CisgICAgaWYgKCFyYXdDb21tYW5kKQorICAgICAgICByZXR1cm47CisKKyAg
ICBmb3IgKGludCBpID0gMDsgaSA8IGFicyhjb3VudCk7IGkrKykKKyAgICAgICAgY2xpZW50LT5h
ZGRQZW5kaW5nRWRpdG9yQ29tbWFuZChyYXdDb21tYW5kKTsKK30KKwogdm9pZCBFZGl0b3JDbGll
bnQ6OnVwZGF0ZVBlbmRpbmdDb21wb3NpdGlvbihjb25zdCBnY2hhciogbmV3Q29tcG9zaXRpb24p
CiB7CiAgICAgLy8gVGhlIElNQ29udGV4dCBtYXkgc2lnbmFsIG1vcmUgdGhhbiBvbmUgY29tcGxl
dGVkIGNvbXBvc2l0aW9uIGluIGEgcm93LApAQCAtMzgyLDQxICs0NzYsMTAgQEAgc3RydWN0IEtl
eVByZXNzRW50cnkgewogfTsKIAogc3RhdGljIGNvbnN0IEtleURvd25FbnRyeSBrZXlEb3duRW50
cmllc1tdID0gewotICAgIHsgVktfTEVGVCwgICAwLCAgICAgICAgICAgICAgICAgICJNb3ZlTGVm
dCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgIHsgVktfTEVGVCwg
ICBTaGlmdEtleSwgICAgICAgICAgICJNb3ZlTGVmdEFuZE1vZGlmeVNlbGVjdGlvbiIgICAgICAg
ICAgICAgICAgICB9LAotICAgIHsgVktfTEVGVCwgICBDdHJsS2V5LCAgICAgICAgICAgICJNb3Zl
V29yZExlZnQiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgIHsgVktfTEVG
VCwgICBDdHJsS2V5IHwgU2hpZnRLZXksICJNb3ZlV29yZExlZnRBbmRNb2RpZnlTZWxlY3Rpb24i
ICAgICAgICAgICAgICB9LAotICAgIHsgVktfUklHSFQsICAwLCAgICAgICAgICAgICAgICAgICJN
b3ZlUmlnaHQiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgIHsgVktf
UklHSFQsICBTaGlmdEtleSwgICAgICAgICAgICJNb3ZlUmlnaHRBbmRNb2RpZnlTZWxlY3Rpb24i
ICAgICAgICAgICAgICAgICB9LAotICAgIHsgVktfUklHSFQsICBDdHJsS2V5LCAgICAgICAgICAg
ICJNb3ZlV29yZFJpZ2h0IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgIHsg
VktfUklHSFQsICBDdHJsS2V5IHwgU2hpZnRLZXksICJNb3ZlV29yZFJpZ2h0QW5kTW9kaWZ5U2Vs
ZWN0aW9uIiAgICAgICAgICAgICB9LAotICAgIHsgVktfVVAsICAgICAwLCAgICAgICAgICAgICAg
ICAgICJNb3ZlVXAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAg
IHsgVktfVVAsICAgICBTaGlmdEtleSwgICAgICAgICAgICJNb3ZlVXBBbmRNb2RpZnlTZWxlY3Rp
b24iICAgICAgICAgICAgICAgICAgICB9LAotICAgIHsgVktfUFJJT1IsICBTaGlmdEtleSwgICAg
ICAgICAgICJNb3ZlUGFnZVVwQW5kTW9kaWZ5U2VsZWN0aW9uIiAgICAgICAgICAgICAgICB9LAot
ICAgIHsgVktfRE9XTiwgICAwLCAgICAgICAgICAgICAgICAgICJNb3ZlRG93biIgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgIHsgVktfRE9XTiwgICBTaGlmdEtleSwg
ICAgICAgICAgICJNb3ZlRG93bkFuZE1vZGlmeVNlbGVjdGlvbiIgICAgICAgICAgICAgICAgICB9
LAotICAgIHsgVktfTkVYVCwgICBTaGlmdEtleSwgICAgICAgICAgICJNb3ZlUGFnZURvd25BbmRN
b2RpZnlTZWxlY3Rpb24iICAgICAgICAgICAgICB9LAotICAgIHsgVktfUFJJT1IsICAwLCAgICAg
ICAgICAgICAgICAgICJNb3ZlUGFnZVVwIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9LAotICAgIHsgVktfTkVYVCwgICAwLCAgICAgICAgICAgICAgICAgICJNb3ZlUGFnZURvd24i
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgIHsgVktfSE9NRSwgICAwLCAg
ICAgICAgICAgICAgICAgICJNb3ZlVG9CZWdpbm5pbmdPZkxpbmUiICAgICAgICAgICAgICAgICAg
ICAgICB9LAotICAgIHsgVktfSE9NRSwgICBTaGlmdEtleSwgICAgICAgICAgICJNb3ZlVG9CZWdp
bm5pbmdPZkxpbmVBbmRNb2RpZnlTZWxlY3Rpb24iICAgICB9LAotICAgIHsgVktfSE9NRSwgICBD
dHJsS2V5LCAgICAgICAgICAgICJNb3ZlVG9CZWdpbm5pbmdPZkRvY3VtZW50IiAgICAgICAgICAg
ICAgICAgICB9LAotICAgIHsgVktfSE9NRSwgICBDdHJsS2V5IHwgU2hpZnRLZXksICJNb3ZlVG9C
ZWdpbm5pbmdPZkRvY3VtZW50QW5kTW9kaWZ5U2VsZWN0aW9uIiB9LAotCi0gICAgeyBWS19FTkQs
ICAgIDAsICAgICAgICAgICAgICAgICAgIk1vdmVUb0VuZE9mTGluZSIgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0sCi0gICAgeyBWS19FTkQsICAgIFNoaWZ0S2V5LCAgICAgICAgICAgIk1v
dmVUb0VuZE9mTGluZUFuZE1vZGlmeVNlbGVjdGlvbiIgICAgICAgICAgIH0sCi0gICAgeyBWS19F
TkQsICAgIEN0cmxLZXksICAgICAgICAgICAgIk1vdmVUb0VuZE9mRG9jdW1lbnQiICAgICAgICAg
ICAgICAgICAgICAgICAgIH0sCi0gICAgeyBWS19FTkQsICAgIEN0cmxLZXkgfCBTaGlmdEtleSwg
Ik1vdmVUb0VuZE9mRG9jdW1lbnRBbmRNb2RpZnlTZWxlY3Rpb24iICAgICAgIH0sCi0KICAgICB7
IFZLX0JBQ0ssICAgMCwgICAgICAgICAgICAgICAgICAiRGVsZXRlQmFja3dhcmQiICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfSwKICAgICB7IFZLX0JBQ0ssICAgU2hpZnRLZXksICAgICAg
ICAgICAiRGVsZXRlQmFja3dhcmQiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAg
ICB7IFZLX0RFTEVURSwgMCwgICAgICAgICAgICAgICAgICAiRGVsZXRlRm9yd2FyZCIgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICB7IFZLX0JBQ0ssICAgQ3RybEtleSwgICAg
ICAgICAgICAiRGVsZXRlV29yZEJhY2t3YXJkIiAgICAgICAgICAgICAgICAgICAgICAgICAgfSwK
LSAgICB7IFZLX0RFTEVURSwgQ3RybEtleSwgICAgICAgICAgICAiRGVsZXRlV29yZEZvcndhcmQi
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLQogICAgIHsgJ0InLCAgICAgICBDdHJsS2V5
LCAgICAgICAgICAgICJUb2dnbGVCb2xkIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9LAogICAgIHsgJ0knLCAgICAgICBDdHJsS2V5LCAgICAgICAgICAgICJUb2dnbGVJdGFsaWMi
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotCiAgICAgeyBWS19FU0NBUEUsIDAs
ICAgICAgICAgICAgICAgICAgIkNhbmNlbCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIH0sCiAgICAgeyBWS19PRU1fUEVSSU9ELCBDdHJsS2V5LCAgICAgICAgIkNhbmNlbCIg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgeyBWS19UQUIsICAg
IDAsICAgICAgICAgICAgICAgICAgIkluc2VydFRhYiIgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0sCkBAIC00MzYsMzkgKzQ5OSw3NiBAQCBzdGF0aWMgY29uc3QgS2V5UHJlc3NF
bnRyeSBrZXlQcmVzc0VudHJpZXNbXSA9IHsKICAgICB7ICdccicsICAgQWx0S2V5IHwgU2hpZnRL
ZXksICAiSW5zZXJ0TmV3bGluZSIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKIH07
CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBpbnRlcnByZXRFZGl0b3JDb21tYW5kS2V5RXZlbnQoY29u
c3QgS2V5Ym9hcmRFdmVudCogZXZ0KQordm9pZCBFZGl0b3JDbGllbnQ6OmdlbmVyYXRlRWRpdG9y
Q29tbWFuZHMoY29uc3QgS2V5Ym9hcmRFdmVudCogZXZlbnQpCiB7Ci0gICAgQVNTRVJUKGV2dC0+
dHlwZSgpID09IGV2ZW50TmFtZXMoKS5rZXlkb3duRXZlbnQgfHwgZXZ0LT50eXBlKCkgPT0gZXZl
bnROYW1lcygpLmtleXByZXNzRXZlbnQpOworICAgIEFTU0VSVChldmVudC0+dHlwZSgpID09IGV2
ZW50TmFtZXMoKS5rZXlkb3duRXZlbnQgfHwgZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCku
a2V5cHJlc3NFdmVudCk7CiAKLSAgICBzdGF0aWMgSGFzaE1hcDxpbnQsIGNvbnN0IGNoYXIqPiog
a2V5RG93bkNvbW1hbmRzTWFwID0gMDsKLSAgICBzdGF0aWMgSGFzaE1hcDxpbnQsIGNvbnN0IGNo
YXIqPioga2V5UHJlc3NDb21tYW5kc01hcCA9IDA7CisgICAgbV9wZW5kaW5nRWRpdG9yQ29tbWFu
ZHMuY2xlYXIoKTsKIAotICAgIGlmICgha2V5RG93bkNvbW1hbmRzTWFwKSB7Ci0gICAgICAgIGtl
eURvd25Db21tYW5kc01hcCA9IG5ldyBIYXNoTWFwPGludCwgY29uc3QgY2hhcio+OwotICAgICAg
ICBrZXlQcmVzc0NvbW1hbmRzTWFwID0gbmV3IEhhc2hNYXA8aW50LCBjb25zdCBjaGFyKj47Cisg
ICAgLy8gRmlyc3QgdHJ5IHRvIGludGVycHJldCB0aGUgY29tbWFuZCBhcyBhIG5hdGl2ZSBHVEsr
IGtleSBiaW5kaW5nLgorICAgIGd0a19iaW5kaW5nc19hY3RpdmF0ZV9ldmVudChHVEtfT0JKRUNU
KG1fbmF0aXZlV2lkZ2V0LmdldCgpKSwgZXZlbnQtPmtleUV2ZW50KCktPmdka0V2ZW50S2V5KCkp
OworICAgIGlmIChtX3BlbmRpbmdFZGl0b3JDb21tYW5kcy5zaXplKCkgPiAwKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBzdGF0aWMgSGFzaE1hcDxpbnQsIGNvbnN0IGNoYXIqPiBrZXlEb3duQ29t
bWFuZHNNYXA7CisgICAgc3RhdGljIEhhc2hNYXA8aW50LCBjb25zdCBjaGFyKj4ga2V5UHJlc3ND
b21tYW5kc01hcDsKIAorICAgIGlmIChrZXlEb3duQ29tbWFuZHNNYXAuaXNFbXB0eSgpKSB7CiAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBHX05fRUxFTUVOVFMoa2V5RG93bkVudHJp
ZXMpOyBpKyspCi0gICAgICAgICAgICBrZXlEb3duQ29tbWFuZHNNYXAtPnNldChrZXlEb3duRW50
cmllc1tpXS5tb2RpZmllcnMgPDwgMTYgfCBrZXlEb3duRW50cmllc1tpXS52aXJ0dWFsS2V5LCBr
ZXlEb3duRW50cmllc1tpXS5uYW1lKTsKKyAgICAgICAgICAgIGtleURvd25Db21tYW5kc01hcC5z
ZXQoa2V5RG93bkVudHJpZXNbaV0ubW9kaWZpZXJzIDw8IDE2IHwga2V5RG93bkVudHJpZXNbaV0u
dmlydHVhbEtleSwga2V5RG93bkVudHJpZXNbaV0ubmFtZSk7CiAKICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IEdfTl9FTEVNRU5UUyhrZXlQcmVzc0VudHJpZXMpOyBpKyspCi0gICAg
ICAgICAgICBrZXlQcmVzc0NvbW1hbmRzTWFwLT5zZXQoa2V5UHJlc3NFbnRyaWVzW2ldLm1vZGlm
aWVycyA8PCAxNiB8IGtleVByZXNzRW50cmllc1tpXS5jaGFyQ29kZSwga2V5UHJlc3NFbnRyaWVz
W2ldLm5hbWUpOworICAgICAgICAgICAga2V5UHJlc3NDb21tYW5kc01hcC5zZXQoa2V5UHJlc3NF
bnRyaWVzW2ldLm1vZGlmaWVycyA8PCAxNiB8IGtleVByZXNzRW50cmllc1tpXS5jaGFyQ29kZSwg
a2V5UHJlc3NFbnRyaWVzW2ldLm5hbWUpOwogICAgIH0KIAogICAgIHVuc2lnbmVkIG1vZGlmaWVy
cyA9IDA7Ci0gICAgaWYgKGV2dC0+c2hpZnRLZXkoKSkKKyAgICBpZiAoZXZlbnQtPnNoaWZ0S2V5
KCkpCiAgICAgICAgIG1vZGlmaWVycyB8PSBTaGlmdEtleTsKLSAgICBpZiAoZXZ0LT5hbHRLZXko
KSkKKyAgICBpZiAoZXZlbnQtPmFsdEtleSgpKQogICAgICAgICBtb2RpZmllcnMgfD0gQWx0S2V5
OwotICAgIGlmIChldnQtPmN0cmxLZXkoKSkKKyAgICBpZiAoZXZlbnQtPmN0cmxLZXkoKSkKICAg
ICAgICAgbW9kaWZpZXJzIHw9IEN0cmxLZXk7CiAKLSAgICBpZiAoZXZ0LT50eXBlKCkgPT0gZXZl
bnROYW1lcygpLmtleWRvd25FdmVudCkgewotICAgICAgICBpbnQgbWFwS2V5ID0gbW9kaWZpZXJz
IDw8IDE2IHwgZXZ0LT5rZXlDb2RlKCk7Ci0gICAgICAgIHJldHVybiBtYXBLZXkgPyBrZXlEb3du
Q29tbWFuZHNNYXAtPmdldChtYXBLZXkpIDogMDsKKworICAgIGlmIChldmVudC0+dHlwZSgpID09
IGV2ZW50TmFtZXMoKS5rZXlkb3duRXZlbnQpIHsKKyAgICAgICAgaW50IG1hcEtleSA9IG1vZGlm
aWVycyA8PCAxNiB8IGV2ZW50LT5rZXlDb2RlKCk7CisgICAgICAgIGlmIChtYXBLZXkpCisgICAg
ICAgICAgICBtX3BlbmRpbmdFZGl0b3JDb21tYW5kcy5hcHBlbmQoa2V5RG93bkNvbW1hbmRzTWFw
LmdldChtYXBLZXkpKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGludCBtYXBLZXkg
PSBtb2RpZmllcnMgPDwgMTYgfCBldnQtPmNoYXJDb2RlKCk7Ci0gICAgcmV0dXJuIG1hcEtleSA/
IGtleVByZXNzQ29tbWFuZHNNYXAtPmdldChtYXBLZXkpIDogMDsKKyAgICBpbnQgbWFwS2V5ID0g
bW9kaWZpZXJzIDw8IDE2IHwgZXZlbnQtPmNoYXJDb2RlKCk7CisgICAgaWYgKG1hcEtleSkKKyAg
ICAgICAgbV9wZW5kaW5nRWRpdG9yQ29tbWFuZHMuYXBwZW5kKGtleVByZXNzQ29tbWFuZHNNYXAu
Z2V0KG1hcEtleSkpOworfQorCitib29sIEVkaXRvckNsaWVudDo6ZXhlY3V0ZVBlbmRpbmdFZGl0
b3JDb21tYW5kcyhGcmFtZSogZnJhbWUsIGJvb2wgYWxsb3dUZXh0SW5zZXJ0aW9uKQoreworICAg
IFZlY3RvcjxFZGl0b3I6OkNvbW1hbmQ+IGNvbW1hbmRzOworICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbV9wZW5kaW5nRWRpdG9yQ29tbWFuZHMuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgRWRp
dG9yOjpDb21tYW5kIGNvbW1hbmQgPSBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQobV9wZW5kaW5n
RWRpdG9yQ29tbWFuZHMuYXQoaSkpOworICAgICAgICBpZiAoY29tbWFuZC5pc1RleHRJbnNlcnRp
b24oKSAmJiAhYWxsb3dUZXh0SW5zZXJ0aW9uKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgICAgIGNvbW1hbmRzLmFwcGVuZChjb21tYW5kKTsKKyAgICB9CisKKyAgICBib29sIHN1
Y2Nlc3MgPSB0cnVlOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY29tbWFuZHMuc2l6ZSgp
OyBpKyspIHsKKyAgICAgICAgaWYgKCFjb21tYW5kcy5hdChpKS5leGVjdXRlKCkpIHsKKyAgICAg
ICAgICAgIHN1Y2Nlc3MgPSBmYWxzZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9Cisg
ICAgfQorCisgICAgbV9wZW5kaW5nRWRpdG9yQ29tbWFuZHMuY2xlYXIoKTsKKworICAgIC8vIElm
IHdlIHN1Y2Nlc3NmdWxseSBjb21wbGV0ZWQgYWxsIGVkaXRvciBjb21tYW5kcywgdGhlbgorICAg
IC8vIHRoaXMgc2lnbmFscyBhIGNhbmNlbGluZyBvZiB0aGUgY29tcG9zaXRpb24uCisgICAgaWYg
KHN1Y2Nlc3MpCisgICAgICAgIGNsZWFyUGVuZGluZ0NvbXBvc2l0aW9uKCk7CisKKyAgICByZXR1
cm4gc3VjY2VzczsKIH0KIAogdm9pZCBFZGl0b3JDbGllbnQ6OmhhbmRsZUtleWJvYXJkRXZlbnQo
S2V5Ym9hcmRFdmVudCogZXZlbnQpCkBAIC00ODcsMjMgKzU4NywyMCBAQCB2b2lkIEVkaXRvckNs
aWVudDo6aGFuZGxlS2V5Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50KiBldmVudCkKICAgICBpZiAo
IWZyYW1lLT5lZGl0b3IoKS0+Y2FuRWRpdCgpICYmICEoZnJhbWUtPnNldHRpbmdzKCkgJiYgZnJh
bWUtPnNldHRpbmdzKCktPmNhcmV0QnJvd3NpbmdFbmFibGVkKCkpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBjb25zdCBnY2hhciogZWRpdG9yQ29tbWFuZFN0cmluZyA9IGludGVycHJldEVkaXRv
ckNvbW1hbmRLZXlFdmVudChldmVudCk7Ci0gICAgaWYgKGVkaXRvckNvbW1hbmRTdHJpbmcpIHsK
LSAgICAgICAgRWRpdG9yOjpDb21tYW5kIGNvbW1hbmQgPSBmcmFtZS0+ZWRpdG9yKCktPmNvbW1h
bmQoZWRpdG9yQ29tbWFuZFN0cmluZyk7CisgICAgZ2VuZXJhdGVFZGl0b3JDb21tYW5kcyhldmVu
dCk7CisgICAgaWYgKG1fcGVuZGluZ0VkaXRvckNvbW1hbmRzLnNpemUoKSA+IDApIHsKIAotICAg
ICAgICAvLyBPbiBlZGl0b3IgY29tbWFuZHMgZnJvbSBrZXkgZG93biBldmVudHMsIHdlIG9ubHkg
d2FudCB0byBsZXQgdGhlIGV2ZW50IGJ1YmJsZSB1cCB0bwotICAgICAgICAvLyB0aGUgRE9NIGlm
IGl0IGluc2VydHMgdGV4dC4gSWYgaXQgZG9lc24ndCBpbnNlcnQgdGV4dCAoZS5nLiBUYWIgdGhh
dCBjaGFuZ2VzIGZvY3VzKQotICAgICAgICAvLyB3ZSBqdXN0IHdhbnQgV2ViS2l0IHRvIGhhbmRs
ZSBpdCBpbW1lZGlhdGVseSB3aXRob3V0IGEgRE9NIGV2ZW50LgorICAgICAgICAvLyBEdXJpbmcg
UmF3S2V5RG93biBldmVudHMgaWYgYW4gZWRpdG9yIGNvbW1hbmQgd2lsbCBpbnNlcnQgdGV4dCwg
ZGVmZXIKKyAgICAgICAgLy8gdGhlIGluc2VydGlvbiB1bnRpbCB0aGUga2V5cHJlc3MgZXZlbnQu
IFdlIHdhbnQga2V5ZG93biB0byBidWJibGUgdXAKKyAgICAgICAgLy8gdGhyb3VnaCB0aGUgRE9N
IGZpcnN0LgogICAgICAgICBpZiAocGxhdGZvcm1FdmVudC0+dHlwZSgpID09IFBsYXRmb3JtS2V5
Ym9hcmRFdmVudDo6UmF3S2V5RG93bikgewotICAgICAgICAgICAgaWYgKCFjb21tYW5kLmlzVGV4
dEluc2VydGlvbigpICYmIGNvbW1hbmQuZXhlY3V0ZShldmVudCkpCisgICAgICAgICAgICBpZiAo
ZXhlY3V0ZVBlbmRpbmdFZGl0b3JDb21tYW5kcyhmcmFtZSwgZmFsc2UpKQogICAgICAgICAgICAg
ICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogCi0gICAgICAgICAgICBjbGVhclBlbmRp
bmdDb21wb3NpdGlvbigpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAg
ICAgaWYgKGNvbW1hbmQuZXhlY3V0ZShldmVudCkpIHsKLSAgICAgICAgICAgIGNsZWFyUGVuZGlu
Z0NvbXBvc2l0aW9uKCk7CisgICAgICAgIGlmIChleGVjdXRlUGVuZGluZ0VkaXRvckNvbW1hbmRz
KGZyYW1lLCB0cnVlKSkgewogICAgICAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTU5MiwxMCArNjg5LDE1IEBAIEVk
aXRvckNsaWVudDo6RWRpdG9yQ2xpZW50KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgOiBt
X2lzSW5SZWRvKGZhbHNlKQogICAgICwgbV93ZWJWaWV3KHdlYlZpZXcpCiAgICAgLCBtX3RyZWF0
Q29udGV4dENvbW1pdEFzS2V5RXZlbnQoZmFsc2UpCisgICAgLCBtX25hdGl2ZVdpZGdldChndGtf
dGV4dF92aWV3X25ldygpKQogewogICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiBwcml2ID0gbV93
ZWJWaWV3LT5wcml2OwogICAgIGdfc2lnbmFsX2Nvbm5lY3QocHJpdi0+aW1Db250ZXh0LCAiY29t
bWl0IiwgR19DQUxMQkFDSyhpbUNvbnRleHRDb21taXR0ZWQpLCB0aGlzKTsKICAgICBnX3NpZ25h
bF9jb25uZWN0KHByaXYtPmltQ29udGV4dCwgInByZWVkaXQtY2hhbmdlZCIsIEdfQ0FMTEJBQ0so
aW1Db250ZXh0UHJlZWRpdENoYW5nZWQpLCB0aGlzKTsKKworICAgIGdfc2lnbmFsX2Nvbm5lY3Qo
bV9uYXRpdmVXaWRnZXQuZ2V0KCksICJzZWxlY3RfYWxsIiwgR19DQUxMQkFDSyhzZWxlY3RBbGwp
LCB0aGlzKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KG1fbmF0aXZlV2lkZ2V0LmdldCgpLCAibW92
ZV9jdXJzb3IiLCBHX0NBTExCQUNLKG1vdmVDdXJzb3IpLCB0aGlzKTsKKyAgICBnX3NpZ25hbF9j
b25uZWN0KG1fbmF0aXZlV2lkZ2V0LmdldCgpLCAiZGVsZXRlX2Zyb21fY3Vyc29yIiwgR19DQUxM
QkFDSyhkZWxldGVGcm9tQ3Vyc29yKSwgdGhpcyk7CiB9CiAKIEVkaXRvckNsaWVudDo6fkVkaXRv
ckNsaWVudCgpCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNs
aWVudEd0ay5oIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuaApp
bmRleCA4MjVjMTQ2Li5hMDBlMWQ1IDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBw
b3J0L0VkaXRvckNsaWVudEd0ay5oCisrKyBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRp
dG9yQ2xpZW50R3RrLmgKQEAgLTM2LDEyICszNiwxNSBAQAogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5o
PgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0
ci5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KIAogdHlwZWRlZiBzdHJ1Y3Qg
X1dlYktpdFdlYlZpZXcgV2ViS2l0V2ViVmlldzsKK3R5cGVkZWYgc3RydWN0IF9HdGtXaWRnZXQg
R3RrV2lkZ2V0OwogdHlwZWRlZiBjaGFyIGdjaGFyOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0g
ICAgY2xhc3MgUGFnZTsKKyAgICBjbGFzcyBGcmFtZTsKKyAgICBjbGFzcyBLZXlib2FyZEV2ZW50
OwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTYwLDcgKzYzLDEwIEBAIG5hbWVzcGFjZSBX
ZWJLaXQgewogICAgICAgICBib29sIHRyZWF0Q29udGV4dENvbW1pdEFzS2V5RXZlbnQoKSB7IHJl
dHVybiBtX3RyZWF0Q29udGV4dENvbW1pdEFzS2V5RXZlbnQ7IH0KICAgICAgICAgdm9pZCBjbGVh
clBlbmRpbmdDb21wb3NpdGlvbigpIHsgbV9wZW5kaW5nQ29tcG9zaXRpb24uc2V0KDApOyB9CiAg
ICAgICAgIGJvb2wgaGFzUGVuZGluZ0NvbXBvc2l0aW9uKCkgeyByZXR1cm4gbV9wZW5kaW5nQ29t
cG9zaXRpb247IH0KKyAgICAgICAgdm9pZCBhZGRQZW5kaW5nRWRpdG9yQ29tbWFuZChjb25zdCBj
aGFyKiBjb21tYW5kKSB7IG1fcGVuZGluZ0VkaXRvckNvbW1hbmRzLmFwcGVuZChjb21tYW5kKTsg
fQogICAgICAgICB2b2lkIHVwZGF0ZVBlbmRpbmdDb21wb3NpdGlvbihjb25zdCBjaGFyKik7Cisg
ICAgICAgIHZvaWQgZ2VuZXJhdGVFZGl0b3JDb21tYW5kcyhjb25zdCBXZWJDb3JlOjpLZXlib2Fy
ZEV2ZW50Kik7CisgICAgICAgIGJvb2wgZXhlY3V0ZVBlbmRpbmdFZGl0b3JDb21tYW5kcyhXZWJD
b3JlOjpGcmFtZSosIGJvb2wpOwogCiAgICAgICAgIC8vIGZyb20gRWRpdG9yQ2xpZW50CiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBwYWdlRGVzdHJveWVkKCk7CkBAIC0xMzAsNiArMTM2LDggQEAgbmFt
ZXNwYWNlIFdlYktpdCB7CiAgICAgICAgIFdlYktpdFdlYlZpZXcqIG1fd2ViVmlldzsKICAgICAg
ICAgYm9vbCBtX3RyZWF0Q29udGV4dENvbW1pdEFzS2V5RXZlbnQ7CiAgICAgICAgIEdPd25QdHI8
Z2NoYXI+IG1fcGVuZGluZ0NvbXBvc2l0aW9uOworICAgICAgICBWZWN0b3I8Y29uc3QgY2hhcio+
IG1fcGVuZGluZ0VkaXRvckNvbW1hbmRzOworICAgICAgICBHUmVmUHRyPEd0a1dpZGdldD4gbV9u
YXRpdmVXaWRnZXQ7CiAgICAgfTsKIH0KIAotLSAKMS42LjMuMwoK
</data>
<flag name="commit-queue"
          id="39179"
          type_id="3"
          status="-"
          setter="mrobinson"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>55076</attachid>
            <date>2010-05-04 17:10:42 -0700</date>
            <delta_ts>2010-05-11 10:37:14 -0700</delta_ts>
            <desc>Patch with style fix</desc>
            <filename>0001-Gtk-Doesn-t-support-gtk-key-themes.patch</filename>
            <type>text/plain</type>
            <size>18499</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">RnJvbSBlOTZhY2ZkMTM0N2RhNmYzMzEwNTk3MTc5MWRjYTg0NzU2Yjk1MjAyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJ0aW4gUm9iaW5zb24gPG1yb2JpbnNvbkB3ZWJraXQub3Jn
PgpEYXRlOiBUdWUsIDQgTWF5IDIwMTAgMTU6NDg6NTcgLTA3MDAKU3ViamVjdDogW1BBVENIXSBb
R3RrXSBEb2Vzbid0IHN1cHBvcnQgZ3RrLWtleS10aGVtZXMKIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yODI1NwoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpB
ZGQgc3VwcG9ydCBmb3IgR1RLKyBrZXkgdGhlbWVzLgoKKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JD
bGllbnRHdGsuY3BwOgooV2ViS2l0OjpzZWxlY3RBbGwpOiBBZGRlZC4KKFdlYktpdDo6ZGVsZXRl
RnJvbUN1cnNvcik6IEFkZGVkLgooV2ViS2l0Ojptb3ZlQ3Vyc29yKTogQWRkZWQuCihXZWJLaXQ6
OkVkaXRvckNsaWVudDo6Z2VuZXJhdGVFZGl0b3JDb21tYW5kcyk6IEFkZGVkLgooV2ViS2l0OjpF
ZGl0b3JDbGllbnQ6OmV4ZWN1dGVQZW5kaW5nRWRpdG9yQ29tbWFuZHMpOiBBZGRlZC4KKFdlYktp
dDo6RWRpdG9yQ2xpZW50OjpoYW5kbGVLZXlib2FyZEV2ZW50KTogRGVyaXZlIGVkaXRvciBjb21t
YW5kcyBib3RoIGZyb20gaW50ZXJuYWwgdGV4dCB3aWRnZXQgYW5kIGEgbGlzdCBvZiBmYWxsYmFj
a3MuCihXZWJLaXQ6OkVkaXRvckNsaWVudDo6RWRpdG9yQ2xpZW50KTogQWRkIG1fbmF0aXZlV2lk
Z2V0IGluaXRpYWxpemVyLgoqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEd0ay5oOgooV2Vi
S2l0OjpFZGl0b3JDbGllbnQ6OmFkZFBlbmRpbmdFZGl0b3JDb21tYW5kKTogQWRkIG1fbmF0aXZl
V2lkZ2V0IG1lbWJlci4KLS0tCiBXZWJLaXQvZ3RrL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAg
ICAgICAgICAgfCAgIDIwICsrKwogV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGll
bnRHdGsuY3BwIHwgIDIxOCArKysrKysrKysrKysrKysrKystLS0tLS0tCiBXZWJLaXQvZ3RrL1dl
YkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEd0ay5oICAgfCAgIDEwICstCiAzIGZpbGVzIGNoYW5n
ZWQsIDE4OSBpbnNlcnRpb25zKCspLCA1OSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9XZWJL
aXQvZ3RrL0NoYW5nZUxvZyBiL1dlYktpdC9ndGsvQ2hhbmdlTG9nCmluZGV4IGE0MTcwZDIuLmNl
NDY5NTggMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9ndGsv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTAtMDUtMDQgIE1hcnRpbiBSb2JpbnNvbiAg
PG1yb2JpbnNvbkB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFtHdGtdIERvZXNuJ3Qgc3VwcG9ydCBndGsta2V5LXRoZW1lcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjgyNTcKKworICAg
ICAgICBBZGQgc3VwcG9ydCBmb3IgR1RLKyBrZXkgdGhlbWVzLgorCisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6c2VsZWN0QWxs
KTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OmRlbGV0ZUZyb21DdXJzb3IpOiBBZGRlZC4KKyAg
ICAgICAgKFdlYktpdDo6bW92ZUN1cnNvcik6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpFZGl0
b3JDbGllbnQ6OmdlbmVyYXRlRWRpdG9yQ29tbWFuZHMpOiBBZGRlZC4KKyAgICAgICAgKFdlYktp
dDo6RWRpdG9yQ2xpZW50OjpleGVjdXRlUGVuZGluZ0VkaXRvckNvbW1hbmRzKTogQWRkZWQuCisg
ICAgICAgIChXZWJLaXQ6OkVkaXRvckNsaWVudDo6aGFuZGxlS2V5Ym9hcmRFdmVudCk6IERlcml2
ZSBlZGl0b3IgY29tbWFuZHMgYm90aCBmcm9tIGludGVybmFsIHRleHQgd2lkZ2V0IGFuZCBhIGxp
c3Qgb2YgZmFsbGJhY2tzLgorICAgICAgICAoV2ViS2l0OjpFZGl0b3JDbGllbnQ6OkVkaXRvckNs
aWVudCk6IEFkZCBtX25hdGl2ZVdpZGdldCBpbml0aWFsaXplci4KKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuaDoKKyAgICAgICAgKFdlYktpdDo6RWRpdG9yQ2xpZW50
OjphZGRQZW5kaW5nRWRpdG9yQ29tbWFuZCk6IEFkZCBtX25hdGl2ZVdpZGdldCBtZW1iZXIuCisK
IDIwMTAtMDUtMDMgIEFiaGlzaGVrIEFyeWEgIDxpbmZlcm5vQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay9XZWJD
b3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuY3BwIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9y
dC9FZGl0b3JDbGllbnRHdGsuY3BwCmluZGV4IDUxMTcyYjQuLjk3ZDNkOWMgMTAwNjQ0Ci0tLSBh
L1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmNwcAorKysgYi9XZWJL
aXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEd0ay5jcHAKQEAgLTg3LDYgKzg3LDEw
MCBAQCBzdGF0aWMgdm9pZCBpbUNvbnRleHRQcmVlZGl0Q2hhbmdlZChHdGtJTUNvbnRleHQqIGNv
bnRleHQsIEVkaXRvckNsaWVudCogY2xpZW50KQogICAgIGZyYW1lLT5lZGl0b3IoKS0+c2V0Q29t
cG9zaXRpb24ocHJlZWRpdFN0cmluZywgdW5kZXJsaW5lcywgMCwgMCk7CiB9CiAKK3N0YXRpYyB2
b2lkIHNlbGVjdEFsbChHdGtXaWRnZXQqIHdpZGdldCwgZ2Jvb2xlYW4sIEVkaXRvckNsaWVudCog
Y2xpZW50KQoreworICAgIGdfc2lnbmFsX3N0b3BfZW1pc3Npb25fYnlfbmFtZSh3aWRnZXQsICJz
ZWxlY3RfYWxsIik7CisgICAgY2xpZW50LT5hZGRQZW5kaW5nRWRpdG9yQ29tbWFuZCgiU2VsZWN0
QWxsIik7Cit9CisKK3N0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBndGtEZWxldGVDb21tYW5kc1td
WzJdID0geworICAgIHsgIkRlbGV0ZUJhY2t3YXJkIiwgICAgICAgICAgICAgICAiRGVsZXRlRm9y
d2FyZCIgICAgICAgICAgICAgICAgICAgICAgICB9LCAvLyBDaGFyYWN0ZXJzCisgICAgeyAiRGVs
ZXRlV29yZEJhY2t3YXJkIiwgICAgICAgICAgICJEZWxldGVXb3JkRm9yd2FyZCIgICAgICAgICAg
ICAgICAgICAgIH0sIC8vIFdvcmQgZW5kcworICAgIHsgIkRlbGV0ZVdvcmRCYWNrd2FyZCIsICAg
ICAgICAgICAiRGVsZXRlV29yZEZvcndhcmQiICAgICAgICAgICAgICAgICAgICB9LCAvLyBXb3Jk
cworICAgIHsgIkRlbGV0ZVRvQmVnaW5uaW5nT2ZMaW5lIiwgICAgICAiRGVsZXRlVG9FbmRPZkxp
bmUiICAgICAgICAgICAgICAgICAgICB9LCAvLyBMaW5lcworICAgIHsgIkRlbGV0ZVRvQmVnaW5u
aW5nT2ZMaW5lIiwgICAgICAiRGVsZXRlVG9FbmRPZkxpbmUiICAgICAgICAgICAgICAgICAgICB9
LCAvLyBMaW5lIGVuZHMKKyAgICB7ICJEZWxldGVUb0JlZ2lubmluZ09mUGFyYWdyYXBoIiwgIkRl
bGV0ZVRvRW5kT2ZQYXJhZ3JhcGgiICAgICAgICAgICAgICAgfSwgLy8gUGFyYWdyYXBoIGVuZHMK
KyAgICB7ICJEZWxldGVUb0JlZ2lubmluZ09mUGFyYWdyYXBoIiwgIkRlbGV0ZVRvRW5kT2ZQYXJh
Z3JhcGgiICAgICAgICAgICAgICAgfSwgLy8gUGFyYWdyYXBocworICAgIHsgMCwgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9IC8vIFdoaXRlc3BhY2UgKE0tXCBpbiBFbWFjcykKK307CisKK3N0YXRpYyB2b2lkIGRlbGV0
ZUZyb21DdXJzb3IoR3RrV2lkZ2V0KiB3aWRnZXQsIEd0a0RlbGV0ZVR5cGUgZGVsZXRlVHlwZSwg
Z2ludCBjb3VudCwgRWRpdG9yQ2xpZW50KiBjbGllbnQpCit7CisgICAgZ19zaWduYWxfc3RvcF9l
bWlzc2lvbl9ieV9uYW1lKHdpZGdldCwgImRlbGV0ZV9mcm9tX2N1cnNvciIpOworICAgIGludCBk
aXJlY3Rpb24gPSBjb3VudCA+IDAgPyAxIDogMDsKKworICAgIC8vIEVuc3VyaW5nIHRoYXQgZGVs
ZXRlVHlwZSA8PSBHX05fRUxFTUVOVFMgaGVyZSByZXN1bHRzIGluIGEgY29tcGlsZXIgd2Fybmlu
ZworICAgIC8vIHRoYXQgdGhlIGNvbmRpdGlvbiBpcyBhbHdheXMgdHJ1ZS4KKworICAgIGlmIChk
ZWxldGVUeXBlID09IEdUS19ERUxFVEVfV09SRFMpIHsKKyAgICAgICAgaWYgKCFkaXJlY3Rpb24p
IHsKKyAgICAgICAgICAgIGNsaWVudC0+YWRkUGVuZGluZ0VkaXRvckNvbW1hbmQoIk1vdmVXb3Jk
Rm9yd2FyZCIpOworICAgICAgICAgICAgY2xpZW50LT5hZGRQZW5kaW5nRWRpdG9yQ29tbWFuZCgi
TW92ZVdvcmRCYWNrd2FyZCIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgY2xpZW50
LT5hZGRQZW5kaW5nRWRpdG9yQ29tbWFuZCgiTW92ZVdvcmRCYWNrd2FyZCIpOworICAgICAgICAg
ICAgY2xpZW50LT5hZGRQZW5kaW5nRWRpdG9yQ29tbWFuZCgiTW92ZVdvcmRGb3J3YXJkIik7Cisg
ICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKGRlbGV0ZVR5cGUgPT0gR1RLX0RFTEVURV9ESVNQTEFZ
X0xJTkVTKSB7CisgICAgICAgIGlmICghZGlyZWN0aW9uKQorICAgICAgICAgICAgY2xpZW50LT5h
ZGRQZW5kaW5nRWRpdG9yQ29tbWFuZCgiTW92ZVRvQmVnaW5uaW5nT2ZMaW5lIik7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIGNsaWVudC0+YWRkUGVuZGluZ0VkaXRvckNvbW1hbmQoIk1vdmVU
b0VuZE9mTGluZSIpOworICAgIH0gZWxzZSBpZiAoZGVsZXRlVHlwZSA9PSBHVEtfREVMRVRFX1BB
UkFHUkFQSFMpIHsKKyAgICAgICAgaWYgKCFkaXJlY3Rpb24pCisgICAgICAgICAgICBjbGllbnQt
PmFkZFBlbmRpbmdFZGl0b3JDb21tYW5kKCJNb3ZlVG9CZWdpbm5pbmdPZlBhcmFncmFwaCIpOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICBjbGllbnQtPmFkZFBlbmRpbmdFZGl0b3JDb21tYW5k
KCJNb3ZlVG9FbmRPZlBhcmFncmFwaCIpOworICAgIH0KKworICAgIGNvbnN0IGNoYXIqIHJhd0Nv
bW1hbmQgPSBndGtEZWxldGVDb21tYW5kc1tkZWxldGVUeXBlXVtkaXJlY3Rpb25dOworICAgIGlm
ICghcmF3Q29tbWFuZCkKKyAgICAgIHJldHVybjsKKworICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
YWJzKGNvdW50KTsgaSsrKQorICAgICAgICBjbGllbnQtPmFkZFBlbmRpbmdFZGl0b3JDb21tYW5k
KHJhd0NvbW1hbmQpOworfQorCitzdGF0aWMgY29uc3QgY2hhciogY29uc3QgZ3RrTW92ZUNvbW1h
bmRzW11bNF0gPSB7CisgICAgeyAiTW92ZUJhY2t3YXJkIiwgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJNb3ZlRm9yd2FyZCIsCisgICAgICAiTW92ZUJhY2t3YXJkQW5kTW9kaWZ5
U2VsZWN0aW9uIiwgICAgICAgICAgICAgICAgICJNb3ZlRm9yd2FyZEFuZE1vZGlmeVNlbGVjdGlv
biIgICAgICAgICAgICAgfSwgLy8gRm9yd2FyZC9iYWNrd2FyZCBncmFwaGVtZQorICAgIHsgIk1v
dmVCYWNrd2FyZCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTW92ZUZvcndh
cmQiLAorICAgICAgIk1vdmVCYWNrd2FyZEFuZE1vZGlmeVNlbGVjdGlvbiIsICAgICAgICAgICAg
ICAgICAiTW92ZUZvcndhcmRBbmRNb2RpZnlTZWxlY3Rpb24iICAgICAgICAgICAgIH0sIC8vIExl
ZnQvcmlnaHQgZ3JhcGhlbWUKKyAgICB7ICJNb3ZlV29yZEJhY2t3YXJkIiwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIk1vdmVXb3JkRm9yd2FyZCIsCisgICAgICAiTW92ZVdvcmRCYWNr
d2FyZEFuZE1vZGlmeVNlbGVjdGlvbiIsICAgICAgICAgICAgICJNb3ZlV29yZEZvcndhcmRBbmRN
b2RpZnlTZWxlY3Rpb24iICAgICAgICAgfSwgLy8gRm9yd2FyZC9iYWNrd2FyZCB3b3JkCisgICAg
eyAiTW92ZVVwIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNb3Zl
RG93biIsCisgICAgICAiTW92ZVVwQW5kTW9kaWZ5U2VsZWN0aW9uIiwgICAgICAgICAgICAgICAg
ICAgICAgICJNb3ZlRG93bkFuZE1vZGlmeVNlbGVjdGlvbiIgICAgICAgICAgICAgICAgfSwgLy8g
VXAvZG93biBsaW5lCisgICAgeyAiTW92ZVRvQmVnaW5uaW5nT2ZMaW5lIiwgICAgICAgICAgICAg
ICAgICAgICAgICAgICJNb3ZlVG9FbmRPZkxpbmUiLAorICAgICAgIk1vdmVUb0JlZ2lubmluZ09m
TGluZUFuZE1vZGlmeVNlbGVjdGlvbiIsICAgICAgICAiTW92ZVRvRW5kT2ZMaW5lQW5kTW9kaWZ5
U2VsZWN0aW9uIiAgICAgICAgIH0sIC8vIFVwL2Rvd24gbGluZSBlbmRzCisgICAgeyAiTW92ZVBh
cmFncmFwaEZvcndhcmQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICJNb3ZlUGFyYWdyYXBo
QmFja3dhcmQiLAorICAgICAgIk1vdmVQYXJhZ3JhcGhGb3J3YXJkQW5kTW9kaWZ5U2VsZWN0aW9u
IiwgICAgICAgICAiTW92ZVBhcmFncmFwaEJhY2t3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uIiAgIH0s
IC8vIFVwL2Rvd24gcGFyYWdyYXBocworICAgIHsgIk1vdmVUb0JlZ2lubmluZ09mUGFyYWdyYXBo
IiwgICAgICAgICAgICAgICAgICAgICAiTW92ZVRvRW5kT2ZQYXJhZ3JhcGgiLAorICAgICAgIk1v
dmVUb0JlZ2lubmluZ09mUGFyYWdyYXBoQW5kTW9kaWZ5U2VsZWN0aW9uIiwgICAiTW92ZVRvRW5k
T2ZQYXJhZ3JhcGhBbmRNb2RpZnlTZWxlY3Rpb24iICAgIH0sIC8vIFVwL2Rvd24gcGFyYWdyYXBo
IGVuZHMuCisgICAgeyAiTW92ZVBhZ2VVcCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJNb3ZlUGFnZURvd24iLAorICAgICAgIk1vdmVQYWdlVXBBbmRNb2RpZnlTZWxlY3Rp
b24iLCAgICAgICAgICAgICAgICAgICAiTW92ZVBhZ2VEb3duQW5kTW9kaWZ5U2VsZWN0aW9uIiAg
ICAgICAgICAgIH0sIC8vIFVwL2Rvd24gcGFnZQorICAgIHsgIk1vdmVUb0JlZ2lubmluZ09mRG9j
dW1lbnQiLCAgICAgICAgICAgICAgICAgICAgICAiTW92ZVRvRW5kT2ZEb2N1bWVudCIsCisgICAg
ICAiTW92ZVRvQmVnaW5uaW5nT2ZEb2N1bWVudEFuZE1vZGlmeVNlbGVjdGlvbiIsICAgICJNb3Zl
VG9FbmRPZkRvY3VtZW50QW5kTW9kaWZ5U2VsZWN0aW9uIiAgICAgfSwgLy8gQmVnaW4vZW5kIG9m
IGJ1ZmZlcgorICAgIHsgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAwLAorICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0g
Ly8gSG9yaXpvbnRhbCBwYWdlIG1vdmVtZW50Cit9OworCitzdGF0aWMgdm9pZCBtb3ZlQ3Vyc29y
KEd0a1dpZGdldCogd2lkZ2V0LCBHdGtNb3ZlbWVudFN0ZXAgc3RlcCwgZ2ludCBjb3VudCwgZ2Jv
b2xlYW4gZXh0ZW5kU2VsZWN0aW9uLCBFZGl0b3JDbGllbnQqIGNsaWVudCkKK3sKKyAgICBnX3Np
Z25hbF9zdG9wX2VtaXNzaW9uX2J5X25hbWUod2lkZ2V0LCAibW92ZV9jdXJzb3IiKTsKKyAgICBp
bnQgZGlyZWN0aW9uID0gY291bnQgPiAwID8gMSA6IDA7CisgICAgaWYgKGV4dGVuZFNlbGVjdGlv
bikKKyAgICAgICAgZGlyZWN0aW9uICs9IDI7CisKKyAgICBpZiAoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KHN0ZXApID49IEdfTl9FTEVNRU5UUyhndGtNb3ZlQ29tbWFuZHMpKQorICAgICAgICByZXR1
cm47CisKKyAgICBjb25zdCBjaGFyKiByYXdDb21tYW5kID0gZ3RrTW92ZUNvbW1hbmRzW3N0ZXBd
W2RpcmVjdGlvbl07CisgICAgaWYgKCFyYXdDb21tYW5kKQorICAgICAgICByZXR1cm47CisKKyAg
ICBmb3IgKGludCBpID0gMDsgaSA8IGFicyhjb3VudCk7IGkrKykKKyAgICAgICAgY2xpZW50LT5h
ZGRQZW5kaW5nRWRpdG9yQ29tbWFuZChyYXdDb21tYW5kKTsKK30KKwogdm9pZCBFZGl0b3JDbGll
bnQ6OnVwZGF0ZVBlbmRpbmdDb21wb3NpdGlvbihjb25zdCBnY2hhciogbmV3Q29tcG9zaXRpb24p
CiB7CiAgICAgLy8gVGhlIElNQ29udGV4dCBtYXkgc2lnbmFsIG1vcmUgdGhhbiBvbmUgY29tcGxl
dGVkIGNvbXBvc2l0aW9uIGluIGEgcm93LApAQCAtMzgyLDQxICs0NzYsMTAgQEAgc3RydWN0IEtl
eVByZXNzRW50cnkgewogfTsKIAogc3RhdGljIGNvbnN0IEtleURvd25FbnRyeSBrZXlEb3duRW50
cmllc1tdID0gewotICAgIHsgVktfTEVGVCwgICAwLCAgICAgICAgICAgICAgICAgICJNb3ZlTGVm
dCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgIHsgVktfTEVGVCwg
ICBTaGlmdEtleSwgICAgICAgICAgICJNb3ZlTGVmdEFuZE1vZGlmeVNlbGVjdGlvbiIgICAgICAg
ICAgICAgICAgICB9LAotICAgIHsgVktfTEVGVCwgICBDdHJsS2V5LCAgICAgICAgICAgICJNb3Zl
V29yZExlZnQiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgIHsgVktfTEVG
VCwgICBDdHJsS2V5IHwgU2hpZnRLZXksICJNb3ZlV29yZExlZnRBbmRNb2RpZnlTZWxlY3Rpb24i
ICAgICAgICAgICAgICB9LAotICAgIHsgVktfUklHSFQsICAwLCAgICAgICAgICAgICAgICAgICJN
b3ZlUmlnaHQiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgIHsgVktf
UklHSFQsICBTaGlmdEtleSwgICAgICAgICAgICJNb3ZlUmlnaHRBbmRNb2RpZnlTZWxlY3Rpb24i
ICAgICAgICAgICAgICAgICB9LAotICAgIHsgVktfUklHSFQsICBDdHJsS2V5LCAgICAgICAgICAg
ICJNb3ZlV29yZFJpZ2h0IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgIHsg
VktfUklHSFQsICBDdHJsS2V5IHwgU2hpZnRLZXksICJNb3ZlV29yZFJpZ2h0QW5kTW9kaWZ5U2Vs
ZWN0aW9uIiAgICAgICAgICAgICB9LAotICAgIHsgVktfVVAsICAgICAwLCAgICAgICAgICAgICAg
ICAgICJNb3ZlVXAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAg
IHsgVktfVVAsICAgICBTaGlmdEtleSwgICAgICAgICAgICJNb3ZlVXBBbmRNb2RpZnlTZWxlY3Rp
b24iICAgICAgICAgICAgICAgICAgICB9LAotICAgIHsgVktfUFJJT1IsICBTaGlmdEtleSwgICAg
ICAgICAgICJNb3ZlUGFnZVVwQW5kTW9kaWZ5U2VsZWN0aW9uIiAgICAgICAgICAgICAgICB9LAot
ICAgIHsgVktfRE9XTiwgICAwLCAgICAgICAgICAgICAgICAgICJNb3ZlRG93biIgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgIHsgVktfRE9XTiwgICBTaGlmdEtleSwg
ICAgICAgICAgICJNb3ZlRG93bkFuZE1vZGlmeVNlbGVjdGlvbiIgICAgICAgICAgICAgICAgICB9
LAotICAgIHsgVktfTkVYVCwgICBTaGlmdEtleSwgICAgICAgICAgICJNb3ZlUGFnZURvd25BbmRN
b2RpZnlTZWxlY3Rpb24iICAgICAgICAgICAgICB9LAotICAgIHsgVktfUFJJT1IsICAwLCAgICAg
ICAgICAgICAgICAgICJNb3ZlUGFnZVVwIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9LAotICAgIHsgVktfTkVYVCwgICAwLCAgICAgICAgICAgICAgICAgICJNb3ZlUGFnZURvd24i
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgIHsgVktfSE9NRSwgICAwLCAg
ICAgICAgICAgICAgICAgICJNb3ZlVG9CZWdpbm5pbmdPZkxpbmUiICAgICAgICAgICAgICAgICAg
ICAgICB9LAotICAgIHsgVktfSE9NRSwgICBTaGlmdEtleSwgICAgICAgICAgICJNb3ZlVG9CZWdp
bm5pbmdPZkxpbmVBbmRNb2RpZnlTZWxlY3Rpb24iICAgICB9LAotICAgIHsgVktfSE9NRSwgICBD
dHJsS2V5LCAgICAgICAgICAgICJNb3ZlVG9CZWdpbm5pbmdPZkRvY3VtZW50IiAgICAgICAgICAg
ICAgICAgICB9LAotICAgIHsgVktfSE9NRSwgICBDdHJsS2V5IHwgU2hpZnRLZXksICJNb3ZlVG9C
ZWdpbm5pbmdPZkRvY3VtZW50QW5kTW9kaWZ5U2VsZWN0aW9uIiB9LAotCi0gICAgeyBWS19FTkQs
ICAgIDAsICAgICAgICAgICAgICAgICAgIk1vdmVUb0VuZE9mTGluZSIgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0sCi0gICAgeyBWS19FTkQsICAgIFNoaWZ0S2V5LCAgICAgICAgICAgIk1v
dmVUb0VuZE9mTGluZUFuZE1vZGlmeVNlbGVjdGlvbiIgICAgICAgICAgIH0sCi0gICAgeyBWS19F
TkQsICAgIEN0cmxLZXksICAgICAgICAgICAgIk1vdmVUb0VuZE9mRG9jdW1lbnQiICAgICAgICAg
ICAgICAgICAgICAgICAgIH0sCi0gICAgeyBWS19FTkQsICAgIEN0cmxLZXkgfCBTaGlmdEtleSwg
Ik1vdmVUb0VuZE9mRG9jdW1lbnRBbmRNb2RpZnlTZWxlY3Rpb24iICAgICAgIH0sCi0KICAgICB7
IFZLX0JBQ0ssICAgMCwgICAgICAgICAgICAgICAgICAiRGVsZXRlQmFja3dhcmQiICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfSwKICAgICB7IFZLX0JBQ0ssICAgU2hpZnRLZXksICAgICAg
ICAgICAiRGVsZXRlQmFja3dhcmQiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAg
ICB7IFZLX0RFTEVURSwgMCwgICAgICAgICAgICAgICAgICAiRGVsZXRlRm9yd2FyZCIgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICB7IFZLX0JBQ0ssICAgQ3RybEtleSwgICAg
ICAgICAgICAiRGVsZXRlV29yZEJhY2t3YXJkIiAgICAgICAgICAgICAgICAgICAgICAgICAgfSwK
LSAgICB7IFZLX0RFTEVURSwgQ3RybEtleSwgICAgICAgICAgICAiRGVsZXRlV29yZEZvcndhcmQi
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLQogICAgIHsgJ0InLCAgICAgICBDdHJsS2V5
LCAgICAgICAgICAgICJUb2dnbGVCb2xkIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9LAogICAgIHsgJ0knLCAgICAgICBDdHJsS2V5LCAgICAgICAgICAgICJUb2dnbGVJdGFsaWMi
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotCiAgICAgeyBWS19FU0NBUEUsIDAs
ICAgICAgICAgICAgICAgICAgIkNhbmNlbCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIH0sCiAgICAgeyBWS19PRU1fUEVSSU9ELCBDdHJsS2V5LCAgICAgICAgIkNhbmNlbCIg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgeyBWS19UQUIsICAg
IDAsICAgICAgICAgICAgICAgICAgIkluc2VydFRhYiIgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0sCkBAIC00MzYsMzkgKzQ5OSw3NiBAQCBzdGF0aWMgY29uc3QgS2V5UHJlc3NF
bnRyeSBrZXlQcmVzc0VudHJpZXNbXSA9IHsKICAgICB7ICdccicsICAgQWx0S2V5IHwgU2hpZnRL
ZXksICAiSW5zZXJ0TmV3bGluZSIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKIH07
CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBpbnRlcnByZXRFZGl0b3JDb21tYW5kS2V5RXZlbnQoY29u
c3QgS2V5Ym9hcmRFdmVudCogZXZ0KQordm9pZCBFZGl0b3JDbGllbnQ6OmdlbmVyYXRlRWRpdG9y
Q29tbWFuZHMoY29uc3QgS2V5Ym9hcmRFdmVudCogZXZlbnQpCiB7Ci0gICAgQVNTRVJUKGV2dC0+
dHlwZSgpID09IGV2ZW50TmFtZXMoKS5rZXlkb3duRXZlbnQgfHwgZXZ0LT50eXBlKCkgPT0gZXZl
bnROYW1lcygpLmtleXByZXNzRXZlbnQpOworICAgIEFTU0VSVChldmVudC0+dHlwZSgpID09IGV2
ZW50TmFtZXMoKS5rZXlkb3duRXZlbnQgfHwgZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCku
a2V5cHJlc3NFdmVudCk7CiAKLSAgICBzdGF0aWMgSGFzaE1hcDxpbnQsIGNvbnN0IGNoYXIqPiog
a2V5RG93bkNvbW1hbmRzTWFwID0gMDsKLSAgICBzdGF0aWMgSGFzaE1hcDxpbnQsIGNvbnN0IGNo
YXIqPioga2V5UHJlc3NDb21tYW5kc01hcCA9IDA7CisgICAgbV9wZW5kaW5nRWRpdG9yQ29tbWFu
ZHMuY2xlYXIoKTsKIAotICAgIGlmICgha2V5RG93bkNvbW1hbmRzTWFwKSB7Ci0gICAgICAgIGtl
eURvd25Db21tYW5kc01hcCA9IG5ldyBIYXNoTWFwPGludCwgY29uc3QgY2hhcio+OwotICAgICAg
ICBrZXlQcmVzc0NvbW1hbmRzTWFwID0gbmV3IEhhc2hNYXA8aW50LCBjb25zdCBjaGFyKj47Cisg
ICAgLy8gRmlyc3QgdHJ5IHRvIGludGVycHJldCB0aGUgY29tbWFuZCBhcyBhIG5hdGl2ZSBHVEsr
IGtleSBiaW5kaW5nLgorICAgIGd0a19iaW5kaW5nc19hY3RpdmF0ZV9ldmVudChHVEtfT0JKRUNU
KG1fbmF0aXZlV2lkZ2V0LmdldCgpKSwgZXZlbnQtPmtleUV2ZW50KCktPmdka0V2ZW50S2V5KCkp
OworICAgIGlmIChtX3BlbmRpbmdFZGl0b3JDb21tYW5kcy5zaXplKCkgPiAwKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBzdGF0aWMgSGFzaE1hcDxpbnQsIGNvbnN0IGNoYXIqPiBrZXlEb3duQ29t
bWFuZHNNYXA7CisgICAgc3RhdGljIEhhc2hNYXA8aW50LCBjb25zdCBjaGFyKj4ga2V5UHJlc3ND
b21tYW5kc01hcDsKIAorICAgIGlmIChrZXlEb3duQ29tbWFuZHNNYXAuaXNFbXB0eSgpKSB7CiAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBHX05fRUxFTUVOVFMoa2V5RG93bkVudHJp
ZXMpOyBpKyspCi0gICAgICAgICAgICBrZXlEb3duQ29tbWFuZHNNYXAtPnNldChrZXlEb3duRW50
cmllc1tpXS5tb2RpZmllcnMgPDwgMTYgfCBrZXlEb3duRW50cmllc1tpXS52aXJ0dWFsS2V5LCBr
ZXlEb3duRW50cmllc1tpXS5uYW1lKTsKKyAgICAgICAgICAgIGtleURvd25Db21tYW5kc01hcC5z
ZXQoa2V5RG93bkVudHJpZXNbaV0ubW9kaWZpZXJzIDw8IDE2IHwga2V5RG93bkVudHJpZXNbaV0u
dmlydHVhbEtleSwga2V5RG93bkVudHJpZXNbaV0ubmFtZSk7CiAKICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IEdfTl9FTEVNRU5UUyhrZXlQcmVzc0VudHJpZXMpOyBpKyspCi0gICAg
ICAgICAgICBrZXlQcmVzc0NvbW1hbmRzTWFwLT5zZXQoa2V5UHJlc3NFbnRyaWVzW2ldLm1vZGlm
aWVycyA8PCAxNiB8IGtleVByZXNzRW50cmllc1tpXS5jaGFyQ29kZSwga2V5UHJlc3NFbnRyaWVz
W2ldLm5hbWUpOworICAgICAgICAgICAga2V5UHJlc3NDb21tYW5kc01hcC5zZXQoa2V5UHJlc3NF
bnRyaWVzW2ldLm1vZGlmaWVycyA8PCAxNiB8IGtleVByZXNzRW50cmllc1tpXS5jaGFyQ29kZSwg
a2V5UHJlc3NFbnRyaWVzW2ldLm5hbWUpOwogICAgIH0KIAogICAgIHVuc2lnbmVkIG1vZGlmaWVy
cyA9IDA7Ci0gICAgaWYgKGV2dC0+c2hpZnRLZXkoKSkKKyAgICBpZiAoZXZlbnQtPnNoaWZ0S2V5
KCkpCiAgICAgICAgIG1vZGlmaWVycyB8PSBTaGlmdEtleTsKLSAgICBpZiAoZXZ0LT5hbHRLZXko
KSkKKyAgICBpZiAoZXZlbnQtPmFsdEtleSgpKQogICAgICAgICBtb2RpZmllcnMgfD0gQWx0S2V5
OwotICAgIGlmIChldnQtPmN0cmxLZXkoKSkKKyAgICBpZiAoZXZlbnQtPmN0cmxLZXkoKSkKICAg
ICAgICAgbW9kaWZpZXJzIHw9IEN0cmxLZXk7CiAKLSAgICBpZiAoZXZ0LT50eXBlKCkgPT0gZXZl
bnROYW1lcygpLmtleWRvd25FdmVudCkgewotICAgICAgICBpbnQgbWFwS2V5ID0gbW9kaWZpZXJz
IDw8IDE2IHwgZXZ0LT5rZXlDb2RlKCk7Ci0gICAgICAgIHJldHVybiBtYXBLZXkgPyBrZXlEb3du
Q29tbWFuZHNNYXAtPmdldChtYXBLZXkpIDogMDsKKworICAgIGlmIChldmVudC0+dHlwZSgpID09
IGV2ZW50TmFtZXMoKS5rZXlkb3duRXZlbnQpIHsKKyAgICAgICAgaW50IG1hcEtleSA9IG1vZGlm
aWVycyA8PCAxNiB8IGV2ZW50LT5rZXlDb2RlKCk7CisgICAgICAgIGlmIChtYXBLZXkpCisgICAg
ICAgICAgICBtX3BlbmRpbmdFZGl0b3JDb21tYW5kcy5hcHBlbmQoa2V5RG93bkNvbW1hbmRzTWFw
LmdldChtYXBLZXkpKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGludCBtYXBLZXkg
PSBtb2RpZmllcnMgPDwgMTYgfCBldnQtPmNoYXJDb2RlKCk7Ci0gICAgcmV0dXJuIG1hcEtleSA/
IGtleVByZXNzQ29tbWFuZHNNYXAtPmdldChtYXBLZXkpIDogMDsKKyAgICBpbnQgbWFwS2V5ID0g
bW9kaWZpZXJzIDw8IDE2IHwgZXZlbnQtPmNoYXJDb2RlKCk7CisgICAgaWYgKG1hcEtleSkKKyAg
ICAgICAgbV9wZW5kaW5nRWRpdG9yQ29tbWFuZHMuYXBwZW5kKGtleVByZXNzQ29tbWFuZHNNYXAu
Z2V0KG1hcEtleSkpOworfQorCitib29sIEVkaXRvckNsaWVudDo6ZXhlY3V0ZVBlbmRpbmdFZGl0
b3JDb21tYW5kcyhGcmFtZSogZnJhbWUsIGJvb2wgYWxsb3dUZXh0SW5zZXJ0aW9uKQoreworICAg
IFZlY3RvcjxFZGl0b3I6OkNvbW1hbmQ+IGNvbW1hbmRzOworICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbV9wZW5kaW5nRWRpdG9yQ29tbWFuZHMuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgRWRp
dG9yOjpDb21tYW5kIGNvbW1hbmQgPSBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQobV9wZW5kaW5n
RWRpdG9yQ29tbWFuZHMuYXQoaSkpOworICAgICAgICBpZiAoY29tbWFuZC5pc1RleHRJbnNlcnRp
b24oKSAmJiAhYWxsb3dUZXh0SW5zZXJ0aW9uKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgICAgIGNvbW1hbmRzLmFwcGVuZChjb21tYW5kKTsKKyAgICB9CisKKyAgICBib29sIHN1
Y2Nlc3MgPSB0cnVlOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY29tbWFuZHMuc2l6ZSgp
OyBpKyspIHsKKyAgICAgICAgaWYgKCFjb21tYW5kcy5hdChpKS5leGVjdXRlKCkpIHsKKyAgICAg
ICAgICAgIHN1Y2Nlc3MgPSBmYWxzZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9Cisg
ICAgfQorCisgICAgbV9wZW5kaW5nRWRpdG9yQ29tbWFuZHMuY2xlYXIoKTsKKworICAgIC8vIElm
IHdlIHN1Y2Nlc3NmdWxseSBjb21wbGV0ZWQgYWxsIGVkaXRvciBjb21tYW5kcywgdGhlbgorICAg
IC8vIHRoaXMgc2lnbmFscyBhIGNhbmNlbGluZyBvZiB0aGUgY29tcG9zaXRpb24uCisgICAgaWYg
KHN1Y2Nlc3MpCisgICAgICAgIGNsZWFyUGVuZGluZ0NvbXBvc2l0aW9uKCk7CisKKyAgICByZXR1
cm4gc3VjY2VzczsKIH0KIAogdm9pZCBFZGl0b3JDbGllbnQ6OmhhbmRsZUtleWJvYXJkRXZlbnQo
S2V5Ym9hcmRFdmVudCogZXZlbnQpCkBAIC00ODcsMjMgKzU4NywyMCBAQCB2b2lkIEVkaXRvckNs
aWVudDo6aGFuZGxlS2V5Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50KiBldmVudCkKICAgICBpZiAo
IWZyYW1lLT5lZGl0b3IoKS0+Y2FuRWRpdCgpICYmICEoZnJhbWUtPnNldHRpbmdzKCkgJiYgZnJh
bWUtPnNldHRpbmdzKCktPmNhcmV0QnJvd3NpbmdFbmFibGVkKCkpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBjb25zdCBnY2hhciogZWRpdG9yQ29tbWFuZFN0cmluZyA9IGludGVycHJldEVkaXRv
ckNvbW1hbmRLZXlFdmVudChldmVudCk7Ci0gICAgaWYgKGVkaXRvckNvbW1hbmRTdHJpbmcpIHsK
LSAgICAgICAgRWRpdG9yOjpDb21tYW5kIGNvbW1hbmQgPSBmcmFtZS0+ZWRpdG9yKCktPmNvbW1h
bmQoZWRpdG9yQ29tbWFuZFN0cmluZyk7CisgICAgZ2VuZXJhdGVFZGl0b3JDb21tYW5kcyhldmVu
dCk7CisgICAgaWYgKG1fcGVuZGluZ0VkaXRvckNvbW1hbmRzLnNpemUoKSA+IDApIHsKIAotICAg
ICAgICAvLyBPbiBlZGl0b3IgY29tbWFuZHMgZnJvbSBrZXkgZG93biBldmVudHMsIHdlIG9ubHkg
d2FudCB0byBsZXQgdGhlIGV2ZW50IGJ1YmJsZSB1cCB0bwotICAgICAgICAvLyB0aGUgRE9NIGlm
IGl0IGluc2VydHMgdGV4dC4gSWYgaXQgZG9lc24ndCBpbnNlcnQgdGV4dCAoZS5nLiBUYWIgdGhh
dCBjaGFuZ2VzIGZvY3VzKQotICAgICAgICAvLyB3ZSBqdXN0IHdhbnQgV2ViS2l0IHRvIGhhbmRs
ZSBpdCBpbW1lZGlhdGVseSB3aXRob3V0IGEgRE9NIGV2ZW50LgorICAgICAgICAvLyBEdXJpbmcg
UmF3S2V5RG93biBldmVudHMgaWYgYW4gZWRpdG9yIGNvbW1hbmQgd2lsbCBpbnNlcnQgdGV4dCwg
ZGVmZXIKKyAgICAgICAgLy8gdGhlIGluc2VydGlvbiB1bnRpbCB0aGUga2V5cHJlc3MgZXZlbnQu
IFdlIHdhbnQga2V5ZG93biB0byBidWJibGUgdXAKKyAgICAgICAgLy8gdGhyb3VnaCB0aGUgRE9N
IGZpcnN0LgogICAgICAgICBpZiAocGxhdGZvcm1FdmVudC0+dHlwZSgpID09IFBsYXRmb3JtS2V5
Ym9hcmRFdmVudDo6UmF3S2V5RG93bikgewotICAgICAgICAgICAgaWYgKCFjb21tYW5kLmlzVGV4
dEluc2VydGlvbigpICYmIGNvbW1hbmQuZXhlY3V0ZShldmVudCkpCisgICAgICAgICAgICBpZiAo
ZXhlY3V0ZVBlbmRpbmdFZGl0b3JDb21tYW5kcyhmcmFtZSwgZmFsc2UpKQogICAgICAgICAgICAg
ICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogCi0gICAgICAgICAgICBjbGVhclBlbmRp
bmdDb21wb3NpdGlvbigpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAg
ICAgaWYgKGNvbW1hbmQuZXhlY3V0ZShldmVudCkpIHsKLSAgICAgICAgICAgIGNsZWFyUGVuZGlu
Z0NvbXBvc2l0aW9uKCk7CisgICAgICAgIGlmIChleGVjdXRlUGVuZGluZ0VkaXRvckNvbW1hbmRz
KGZyYW1lLCB0cnVlKSkgewogICAgICAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTU5MiwxMCArNjg5LDE1IEBAIEVk
aXRvckNsaWVudDo6RWRpdG9yQ2xpZW50KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgOiBt
X2lzSW5SZWRvKGZhbHNlKQogICAgICwgbV93ZWJWaWV3KHdlYlZpZXcpCiAgICAgLCBtX3RyZWF0
Q29udGV4dENvbW1pdEFzS2V5RXZlbnQoZmFsc2UpCisgICAgLCBtX25hdGl2ZVdpZGdldChndGtf
dGV4dF92aWV3X25ldygpKQogewogICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiBwcml2ID0gbV93
ZWJWaWV3LT5wcml2OwogICAgIGdfc2lnbmFsX2Nvbm5lY3QocHJpdi0+aW1Db250ZXh0LCAiY29t
bWl0IiwgR19DQUxMQkFDSyhpbUNvbnRleHRDb21taXR0ZWQpLCB0aGlzKTsKICAgICBnX3NpZ25h
bF9jb25uZWN0KHByaXYtPmltQ29udGV4dCwgInByZWVkaXQtY2hhbmdlZCIsIEdfQ0FMTEJBQ0so
aW1Db250ZXh0UHJlZWRpdENoYW5nZWQpLCB0aGlzKTsKKworICAgIGdfc2lnbmFsX2Nvbm5lY3Qo
bV9uYXRpdmVXaWRnZXQuZ2V0KCksICJzZWxlY3RfYWxsIiwgR19DQUxMQkFDSyhzZWxlY3RBbGwp
LCB0aGlzKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KG1fbmF0aXZlV2lkZ2V0LmdldCgpLCAibW92
ZV9jdXJzb3IiLCBHX0NBTExCQUNLKG1vdmVDdXJzb3IpLCB0aGlzKTsKKyAgICBnX3NpZ25hbF9j
b25uZWN0KG1fbmF0aXZlV2lkZ2V0LmdldCgpLCAiZGVsZXRlX2Zyb21fY3Vyc29yIiwgR19DQUxM
QkFDSyhkZWxldGVGcm9tQ3Vyc29yKSwgdGhpcyk7CiB9CiAKIEVkaXRvckNsaWVudDo6fkVkaXRv
ckNsaWVudCgpCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNs
aWVudEd0ay5oIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuaApp
bmRleCA4MjVjMTQ2Li4yZTVjMzU5IDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBw
b3J0L0VkaXRvckNsaWVudEd0ay5oCisrKyBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRp
dG9yQ2xpZW50R3RrLmgKQEAgLTM2LDEyICszNiwxNSBAQAogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5o
PgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0
ci5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KIAogdHlwZWRlZiBzdHJ1Y3Qg
X1dlYktpdFdlYlZpZXcgV2ViS2l0V2ViVmlldzsKK3R5cGVkZWYgc3RydWN0IF9HdGtXaWRnZXQg
R3RrV2lkZ2V0OwogdHlwZWRlZiBjaGFyIGdjaGFyOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0g
ICAgY2xhc3MgUGFnZTsKK2NsYXNzIEZyYW1lOworY2xhc3MgS2V5Ym9hcmRFdmVudDsKIH0KIAog
bmFtZXNwYWNlIFdlYktpdCB7CkBAIC02MCw3ICs2MywxMCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsK
ICAgICAgICAgYm9vbCB0cmVhdENvbnRleHRDb21taXRBc0tleUV2ZW50KCkgeyByZXR1cm4gbV90
cmVhdENvbnRleHRDb21taXRBc0tleUV2ZW50OyB9CiAgICAgICAgIHZvaWQgY2xlYXJQZW5kaW5n
Q29tcG9zaXRpb24oKSB7IG1fcGVuZGluZ0NvbXBvc2l0aW9uLnNldCgwKTsgfQogICAgICAgICBi
b29sIGhhc1BlbmRpbmdDb21wb3NpdGlvbigpIHsgcmV0dXJuIG1fcGVuZGluZ0NvbXBvc2l0aW9u
OyB9CisgICAgICAgIHZvaWQgYWRkUGVuZGluZ0VkaXRvckNvbW1hbmQoY29uc3QgY2hhciogY29t
bWFuZCkgeyBtX3BlbmRpbmdFZGl0b3JDb21tYW5kcy5hcHBlbmQoY29tbWFuZCk7IH0KICAgICAg
ICAgdm9pZCB1cGRhdGVQZW5kaW5nQ29tcG9zaXRpb24oY29uc3QgY2hhciopOworICAgICAgICB2
b2lkIGdlbmVyYXRlRWRpdG9yQ29tbWFuZHMoY29uc3QgV2ViQ29yZTo6S2V5Ym9hcmRFdmVudCop
OworICAgICAgICBib29sIGV4ZWN1dGVQZW5kaW5nRWRpdG9yQ29tbWFuZHMoV2ViQ29yZTo6RnJh
bWUqLCBib29sKTsKIAogICAgICAgICAvLyBmcm9tIEVkaXRvckNsaWVudAogICAgICAgICB2aXJ0
dWFsIHZvaWQgcGFnZURlc3Ryb3llZCgpOwpAQCAtMTMwLDYgKzEzNiw4IEBAIG5hbWVzcGFjZSBX
ZWJLaXQgewogICAgICAgICBXZWJLaXRXZWJWaWV3KiBtX3dlYlZpZXc7CiAgICAgICAgIGJvb2wg
bV90cmVhdENvbnRleHRDb21taXRBc0tleUV2ZW50OwogICAgICAgICBHT3duUHRyPGdjaGFyPiBt
X3BlbmRpbmdDb21wb3NpdGlvbjsKKyAgICAgICAgVmVjdG9yPGNvbnN0IGNoYXIqPiBtX3BlbmRp
bmdFZGl0b3JDb21tYW5kczsKKyAgICAgICAgR1JlZlB0cjxHdGtXaWRnZXQ+IG1fbmF0aXZlV2lk
Z2V0OwogICAgIH07CiB9CiAKLS0gCjEuNi4zLjMKCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>55716</attachid>
            <date>2010-05-11 10:37:20 -0700</date>
            <delta_ts>2010-05-17 08:05:22 -0700</delta_ts>
            <desc>Patch with fixes for copy and paste</desc>
            <filename>bug-28257-20100511103719.patch</filename>
            <type>text/plain</type>
            <size>19034</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvV2ViS2l0L2d0ay9DaGFuZ2VMb2cK
aW5kZXggMjRjNzAyM2RiZTIyOTI3YWY3ZDg1NzRkYzZiMDg5MDM4NWY1ZjFhNC4uMjJjZjEzYTZm
MzM2NTY5MWYzMDRlMGYwNmY3MDA2MjNkMDU0NTdmZCAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9D
aGFuZ2VMb2cKKysrIGIvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAx
MC0wNS0xMSAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0d0a10gRG9lc24ndCBz
dXBwb3J0IGd0ay1rZXktdGhlbWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yODI1NworCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBHVEsrIGtleSB0
aGVtZXMuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpiYWNrc3BhY2VDYWxsYmFjayk6IEFkZGVkLgorICAgICAgICAoV2Vi
S2l0OjpjdXRDbGlwYm9hcmRDYWxsYmFjayk6IEFkZGVkLgorICAgICAgICAoV2ViS2l0Ojpjb3B5
Q2xpcGJvYXJkQ2FsbGJhY2spOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6cGFzdGVDbGlwYm9h
cmRDYWxsYmFjayk6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpzZWxlY3RBbGxDYWxsYmFjayk6
IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpkZWxldGVGcm9tQ3Vyc29yQ2FsbGJhY2spOiBBZGRl
ZC4KKyAgICAgICAgKFdlYktpdDo6bW92ZUN1cnNvckNhbGxiYWNrKTogQWRkZWQuCisgICAgICAg
IChXZWJLaXQ6OkVkaXRvckNsaWVudDo6Z2VuZXJhdGVFZGl0b3JDb21tYW5kcyk6IEFkZGVkLgor
ICAgICAgICAoV2ViS2l0OjpFZGl0b3JDbGllbnQ6OmV4ZWN1dGVQZW5kaW5nRWRpdG9yQ29tbWFu
ZHMpOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6RWRpdG9yQ2xpZW50OjpoYW5kbGVLZXlib2Fy
ZEV2ZW50KTogRGVyaXZlIGVkaXRvciBjb21tYW5kcyBib3RoIGZyb20gaW50ZXJuYWwgdGV4dCB3
aWRnZXQgYW5kIGEgbGlzdCBvZiBmYWxsYmFja3MuCisgICAgICAgIChXZWJLaXQ6OkVkaXRvckNs
aWVudDo6RWRpdG9yQ2xpZW50KTogQWRkIG1fbmF0aXZlV2lkZ2V0IGluaXRpYWxpemVyLgorICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEd0ay5oOgorICAgICAgICAoV2ViS2l0
OjpFZGl0b3JDbGllbnQ6OmFkZFBlbmRpbmdFZGl0b3JDb21tYW5kKTogQWRkIG1fbmF0aXZlV2lk
Z2V0IG1lbWJlci4KKwogMjAxMC0wNS0wNiAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgWGFuIExvcGV6LgpkaWZmIC0tZ2l0IGEv
V2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuY3BwIGIvV2ViS2l0L2d0
ay9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuY3BwCmluZGV4IDUxMTcyYjRmYWYyMjQz
NmNkZTA4Yjk2NTAxZGY2YzYzZTMxZGQ5OWUuLmE1YzM2ZTgzM2E2OGE3NWE4OGJmMTQ3MjI5ZWIx
MjI1NTQ0ZTYyYzEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9y
Q2xpZW50R3RrLmNwcAorKysgYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVu
dEd0ay5jcHAKQEAgLTg3LDYgKzg3LDEyNCBAQCBzdGF0aWMgdm9pZCBpbUNvbnRleHRQcmVlZGl0
Q2hhbmdlZChHdGtJTUNvbnRleHQqIGNvbnRleHQsIEVkaXRvckNsaWVudCogY2xpZW50KQogICAg
IGZyYW1lLT5lZGl0b3IoKS0+c2V0Q29tcG9zaXRpb24ocHJlZWRpdFN0cmluZywgdW5kZXJsaW5l
cywgMCwgMCk7CiB9CiAKK3N0YXRpYyB2b2lkIGJhY2tzcGFjZUNhbGxiYWNrKEd0a1dpZGdldCog
d2lkZ2V0LCBFZGl0b3JDbGllbnQqIGNsaWVudCkKK3sKKyAgICBnX3NpZ25hbF9zdG9wX2VtaXNz
aW9uX2J5X25hbWUod2lkZ2V0LCAiYmFja3NwYWNlIik7CisgICAgY2xpZW50LT5hZGRQZW5kaW5n
RWRpdG9yQ29tbWFuZCgiRGVsZXRlQmFja3dhcmQiKTsKK30KKworc3RhdGljIHZvaWQgc2VsZWN0
QWxsQ2FsbGJhY2soR3RrV2lkZ2V0KiB3aWRnZXQsIGdib29sZWFuIHNlbGVjdCwgRWRpdG9yQ2xp
ZW50KiBjbGllbnQpCit7CisgICAgZ19zaWduYWxfc3RvcF9lbWlzc2lvbl9ieV9uYW1lKHdpZGdl
dCwgInNlbGVjdC1hbGwiKTsKKyAgICBjbGllbnQtPmFkZFBlbmRpbmdFZGl0b3JDb21tYW5kKHNl
bGVjdCA/ICJTZWxlY3RBbGwiIDogIlVuc2VsZWN0Iik7Cit9CisKK3N0YXRpYyB2b2lkIGN1dENs
aXBib2FyZENhbGxiYWNrKEd0a1dpZGdldCogd2lkZ2V0LCBFZGl0b3JDbGllbnQqIGNsaWVudCkK
K3sKKyAgICBnX3NpZ25hbF9zdG9wX2VtaXNzaW9uX2J5X25hbWUod2lkZ2V0LCAiY3V0LWNsaXBi
b2FyZCIpOworICAgIGNsaWVudC0+YWRkUGVuZGluZ0VkaXRvckNvbW1hbmQoIkN1dCIpOworfQor
CitzdGF0aWMgdm9pZCBjb3B5Q2xpcGJvYXJkQ2FsbGJhY2soR3RrV2lkZ2V0KiB3aWRnZXQsIEVk
aXRvckNsaWVudCogY2xpZW50KQoreworICAgIGdfc2lnbmFsX3N0b3BfZW1pc3Npb25fYnlfbmFt
ZSh3aWRnZXQsICJjb3B5LWNsaXBib2FyZCIpOworICAgIGNsaWVudC0+YWRkUGVuZGluZ0VkaXRv
ckNvbW1hbmQoIkNvcHkiKTsKK30KKworc3RhdGljIHZvaWQgcGFzdGVDbGlwYm9hcmRDYWxsYmFj
ayhHdGtXaWRnZXQqIHdpZGdldCwgRWRpdG9yQ2xpZW50KiBjbGllbnQpCit7CisgICAgZ19zaWdu
YWxfc3RvcF9lbWlzc2lvbl9ieV9uYW1lKHdpZGdldCwgInBhc3RlLWNsaXBib2FyZCIpOworICAg
IGNsaWVudC0+YWRkUGVuZGluZ0VkaXRvckNvbW1hbmQoIlBhc3RlIik7Cit9CisKK3N0YXRpYyBj
b25zdCBjaGFyKiBjb25zdCBndGtEZWxldGVDb21tYW5kc1tdWzJdID0geworICAgIHsgIkRlbGV0
ZUJhY2t3YXJkIiwgICAgICAgICAgICAgICAiRGVsZXRlRm9yd2FyZCIgICAgICAgICAgICAgICAg
ICAgICAgICB9LCAvLyBDaGFyYWN0ZXJzCisgICAgeyAiRGVsZXRlV29yZEJhY2t3YXJkIiwgICAg
ICAgICAgICJEZWxldGVXb3JkRm9yd2FyZCIgICAgICAgICAgICAgICAgICAgIH0sIC8vIFdvcmQg
ZW5kcworICAgIHsgIkRlbGV0ZVdvcmRCYWNrd2FyZCIsICAgICAgICAgICAiRGVsZXRlV29yZEZv
cndhcmQiICAgICAgICAgICAgICAgICAgICB9LCAvLyBXb3JkcworICAgIHsgIkRlbGV0ZVRvQmVn
aW5uaW5nT2ZMaW5lIiwgICAgICAiRGVsZXRlVG9FbmRPZkxpbmUiICAgICAgICAgICAgICAgICAg
ICB9LCAvLyBMaW5lcworICAgIHsgIkRlbGV0ZVRvQmVnaW5uaW5nT2ZMaW5lIiwgICAgICAiRGVs
ZXRlVG9FbmRPZkxpbmUiICAgICAgICAgICAgICAgICAgICB9LCAvLyBMaW5lIGVuZHMKKyAgICB7
ICJEZWxldGVUb0JlZ2lubmluZ09mUGFyYWdyYXBoIiwgIkRlbGV0ZVRvRW5kT2ZQYXJhZ3JhcGgi
ICAgICAgICAgICAgICAgfSwgLy8gUGFyYWdyYXBoIGVuZHMKKyAgICB7ICJEZWxldGVUb0JlZ2lu
bmluZ09mUGFyYWdyYXBoIiwgIkRlbGV0ZVRvRW5kT2ZQYXJhZ3JhcGgiICAgICAgICAgICAgICAg
fSwgLy8gUGFyYWdyYXBocworICAgIHsgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAw
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IC8vIFdoaXRlc3BhY2UgKE0t
XCBpbiBFbWFjcykKK307CisKK3N0YXRpYyB2b2lkIGRlbGV0ZUZyb21DdXJzb3JDYWxsYmFjayhH
dGtXaWRnZXQqIHdpZGdldCwgR3RrRGVsZXRlVHlwZSBkZWxldGVUeXBlLCBnaW50IGNvdW50LCBF
ZGl0b3JDbGllbnQqIGNsaWVudCkKK3sKKyAgICBnX3NpZ25hbF9zdG9wX2VtaXNzaW9uX2J5X25h
bWUod2lkZ2V0LCAiZGVsZXRlLWZyb20tY3Vyc29yIik7CisgICAgaW50IGRpcmVjdGlvbiA9IGNv
dW50ID4gMCA/IDEgOiAwOworCisgICAgLy8gRW5zdXJpbmcgdGhhdCBkZWxldGVUeXBlIDw9IEdf
Tl9FTEVNRU5UUyBoZXJlIHJlc3VsdHMgaW4gYSBjb21waWxlciB3YXJuaW5nCisgICAgLy8gdGhh
dCB0aGUgY29uZGl0aW9uIGlzIGFsd2F5cyB0cnVlLgorCisgICAgaWYgKGRlbGV0ZVR5cGUgPT0g
R1RLX0RFTEVURV9XT1JEUykgeworICAgICAgICBpZiAoIWRpcmVjdGlvbikgeworICAgICAgICAg
ICAgY2xpZW50LT5hZGRQZW5kaW5nRWRpdG9yQ29tbWFuZCgiTW92ZVdvcmRGb3J3YXJkIik7Cisg
ICAgICAgICAgICBjbGllbnQtPmFkZFBlbmRpbmdFZGl0b3JDb21tYW5kKCJNb3ZlV29yZEJhY2t3
YXJkIik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBjbGllbnQtPmFkZFBlbmRpbmdF
ZGl0b3JDb21tYW5kKCJNb3ZlV29yZEJhY2t3YXJkIik7CisgICAgICAgICAgICBjbGllbnQtPmFk
ZFBlbmRpbmdFZGl0b3JDb21tYW5kKCJNb3ZlV29yZEZvcndhcmQiKTsKKyAgICAgICAgfQorICAg
IH0gZWxzZSBpZiAoZGVsZXRlVHlwZSA9PSBHVEtfREVMRVRFX0RJU1BMQVlfTElORVMpIHsKKyAg
ICAgICAgaWYgKCFkaXJlY3Rpb24pCisgICAgICAgICAgICBjbGllbnQtPmFkZFBlbmRpbmdFZGl0
b3JDb21tYW5kKCJNb3ZlVG9CZWdpbm5pbmdPZkxpbmUiKTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgY2xpZW50LT5hZGRQZW5kaW5nRWRpdG9yQ29tbWFuZCgiTW92ZVRvRW5kT2ZMaW5lIik7
CisgICAgfSBlbHNlIGlmIChkZWxldGVUeXBlID09IEdUS19ERUxFVEVfUEFSQUdSQVBIUykgewor
ICAgICAgICBpZiAoIWRpcmVjdGlvbikKKyAgICAgICAgICAgIGNsaWVudC0+YWRkUGVuZGluZ0Vk
aXRvckNvbW1hbmQoIk1vdmVUb0JlZ2lubmluZ09mUGFyYWdyYXBoIik7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIGNsaWVudC0+YWRkUGVuZGluZ0VkaXRvckNvbW1hbmQoIk1vdmVUb0VuZE9m
UGFyYWdyYXBoIik7CisgICAgfQorCisgICAgY29uc3QgY2hhciogcmF3Q29tbWFuZCA9IGd0a0Rl
bGV0ZUNvbW1hbmRzW2RlbGV0ZVR5cGVdW2RpcmVjdGlvbl07CisgICAgaWYgKCFyYXdDb21tYW5k
KQorICAgICAgcmV0dXJuOworCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBhYnMoY291bnQpOyBp
KyspCisgICAgICAgIGNsaWVudC0+YWRkUGVuZGluZ0VkaXRvckNvbW1hbmQocmF3Q29tbWFuZCk7
Cit9CisKK3N0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBndGtNb3ZlQ29tbWFuZHNbXVs0XSA9IHsK
KyAgICB7ICJNb3ZlQmFja3dhcmQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ik1vdmVGb3J3YXJkIiwKKyAgICAgICJNb3ZlQmFja3dhcmRBbmRNb2RpZnlTZWxlY3Rpb24iLCAg
ICAgICAgICAgICAgICAgIk1vdmVGb3J3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uIiAgICAgICAgICAg
ICB9LCAvLyBGb3J3YXJkL2JhY2t3YXJkIGdyYXBoZW1lCisgICAgeyAiTW92ZUJhY2t3YXJkIiwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNb3ZlRm9yd2FyZCIsCisgICAgICAi
TW92ZUJhY2t3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uIiwgICAgICAgICAgICAgICAgICJNb3ZlRm9y
d2FyZEFuZE1vZGlmeVNlbGVjdGlvbiIgICAgICAgICAgICAgfSwgLy8gTGVmdC9yaWdodCBncmFw
aGVtZQorICAgIHsgIk1vdmVXb3JkQmFja3dhcmQiLCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiTW92ZVdvcmRGb3J3YXJkIiwKKyAgICAgICJNb3ZlV29yZEJhY2t3YXJkQW5kTW9kaWZ5
U2VsZWN0aW9uIiwgICAgICAgICAgICAgIk1vdmVXb3JkRm9yd2FyZEFuZE1vZGlmeVNlbGVjdGlv
biIgICAgICAgICB9LCAvLyBGb3J3YXJkL2JhY2t3YXJkIHdvcmQKKyAgICB7ICJNb3ZlVXAiLCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1vdmVEb3duIiwKKyAgICAg
ICJNb3ZlVXBBbmRNb2RpZnlTZWxlY3Rpb24iLCAgICAgICAgICAgICAgICAgICAgICAgIk1vdmVE
b3duQW5kTW9kaWZ5U2VsZWN0aW9uIiAgICAgICAgICAgICAgICB9LCAvLyBVcC9kb3duIGxpbmUK
KyAgICB7ICJNb3ZlVG9CZWdpbm5pbmdPZkxpbmUiLCAgICAgICAgICAgICAgICAgICAgICAgICAg
Ik1vdmVUb0VuZE9mTGluZSIsCisgICAgICAiTW92ZVRvQmVnaW5uaW5nT2ZMaW5lQW5kTW9kaWZ5
U2VsZWN0aW9uIiwgICAgICAgICJNb3ZlVG9FbmRPZkxpbmVBbmRNb2RpZnlTZWxlY3Rpb24iICAg
ICAgICAgfSwgLy8gVXAvZG93biBsaW5lIGVuZHMKKyAgICB7ICJNb3ZlUGFyYWdyYXBoRm9yd2Fy
ZCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1vdmVQYXJhZ3JhcGhCYWNrd2FyZCIsCisg
ICAgICAiTW92ZVBhcmFncmFwaEZvcndhcmRBbmRNb2RpZnlTZWxlY3Rpb24iLCAgICAgICAgICJN
b3ZlUGFyYWdyYXBoQmFja3dhcmRBbmRNb2RpZnlTZWxlY3Rpb24iICAgfSwgLy8gVXAvZG93biBw
YXJhZ3JhcGhzCisgICAgeyAiTW92ZVRvQmVnaW5uaW5nT2ZQYXJhZ3JhcGgiLCAgICAgICAgICAg
ICAgICAgICAgICJNb3ZlVG9FbmRPZlBhcmFncmFwaCIsCisgICAgICAiTW92ZVRvQmVnaW5uaW5n
T2ZQYXJhZ3JhcGhBbmRNb2RpZnlTZWxlY3Rpb24iLCAgICJNb3ZlVG9FbmRPZlBhcmFncmFwaEFu
ZE1vZGlmeVNlbGVjdGlvbiIgICAgfSwgLy8gVXAvZG93biBwYXJhZ3JhcGggZW5kcy4KKyAgICB7
ICJNb3ZlUGFnZVVwIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1vdmVQ
YWdlRG93biIsCisgICAgICAiTW92ZVBhZ2VVcEFuZE1vZGlmeVNlbGVjdGlvbiIsICAgICAgICAg
ICAgICAgICAgICJNb3ZlUGFnZURvd25BbmRNb2RpZnlTZWxlY3Rpb24iICAgICAgICAgICAgfSwg
Ly8gVXAvZG93biBwYWdlCisgICAgeyAiTW92ZVRvQmVnaW5uaW5nT2ZEb2N1bWVudCIsICAgICAg
ICAgICAgICAgICAgICAgICJNb3ZlVG9FbmRPZkRvY3VtZW50IiwKKyAgICAgICJNb3ZlVG9CZWdp
bm5pbmdPZkRvY3VtZW50QW5kTW9kaWZ5U2VsZWN0aW9uIiwgICAgIk1vdmVUb0VuZE9mRG9jdW1l
bnRBbmRNb2RpZnlTZWxlY3Rpb24iICAgICB9LCAvLyBCZWdpbi9lbmQgb2YgYnVmZmVyCisgICAg
eyAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsCisg
ICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAvLyBIb3Jpem9udGFs
IHBhZ2UgbW92ZW1lbnQKK307CisKK3N0YXRpYyB2b2lkIG1vdmVDdXJzb3JDYWxsYmFjayhHdGtX
aWRnZXQqIHdpZGdldCwgR3RrTW92ZW1lbnRTdGVwIHN0ZXAsIGdpbnQgY291bnQsIGdib29sZWFu
IGV4dGVuZFNlbGVjdGlvbiwgRWRpdG9yQ2xpZW50KiBjbGllbnQpCit7CisgICAgZ19zaWduYWxf
c3RvcF9lbWlzc2lvbl9ieV9uYW1lKHdpZGdldCwgIm1vdmUtY3Vyc29yIik7CisgICAgaW50IGRp
cmVjdGlvbiA9IGNvdW50ID4gMCA/IDEgOiAwOworICAgIGlmIChleHRlbmRTZWxlY3Rpb24pCisg
ICAgICAgIGRpcmVjdGlvbiArPSAyOworCisgICAgaWYgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihz
dGVwKSA+PSBHX05fRUxFTUVOVFMoZ3RrTW92ZUNvbW1hbmRzKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgY29uc3QgY2hhciogcmF3Q29tbWFuZCA9IGd0a01vdmVDb21tYW5kc1tzdGVwXVtkaXJl
Y3Rpb25dOworICAgIGlmICghcmF3Q29tbWFuZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgZm9y
IChpbnQgaSA9IDA7IGkgPCBhYnMoY291bnQpOyBpKyspCisgICAgICAgIGNsaWVudC0+YWRkUGVu
ZGluZ0VkaXRvckNvbW1hbmQocmF3Q29tbWFuZCk7Cit9CisKIHZvaWQgRWRpdG9yQ2xpZW50Ojp1
cGRhdGVQZW5kaW5nQ29tcG9zaXRpb24oY29uc3QgZ2NoYXIqIG5ld0NvbXBvc2l0aW9uKQogewog
ICAgIC8vIFRoZSBJTUNvbnRleHQgbWF5IHNpZ25hbCBtb3JlIHRoYW4gb25lIGNvbXBsZXRlZCBj
b21wb3NpdGlvbiBpbiBhIHJvdywKQEAgLTM4Miw0MSArNTAwLDggQEAgc3RydWN0IEtleVByZXNz
RW50cnkgewogfTsKIAogc3RhdGljIGNvbnN0IEtleURvd25FbnRyeSBrZXlEb3duRW50cmllc1td
ID0gewotICAgIHsgVktfTEVGVCwgICAwLCAgICAgICAgICAgICAgICAgICJNb3ZlTGVmdCIgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgIHsgVktfTEVGVCwgICBTaGlm
dEtleSwgICAgICAgICAgICJNb3ZlTGVmdEFuZE1vZGlmeVNlbGVjdGlvbiIgICAgICAgICAgICAg
ICAgICB9LAotICAgIHsgVktfTEVGVCwgICBDdHJsS2V5LCAgICAgICAgICAgICJNb3ZlV29yZExl
ZnQiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgIHsgVktfTEVGVCwgICBD
dHJsS2V5IHwgU2hpZnRLZXksICJNb3ZlV29yZExlZnRBbmRNb2RpZnlTZWxlY3Rpb24iICAgICAg
ICAgICAgICB9LAotICAgIHsgVktfUklHSFQsICAwLCAgICAgICAgICAgICAgICAgICJNb3ZlUmln
aHQiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgIHsgVktfUklHSFQs
ICBTaGlmdEtleSwgICAgICAgICAgICJNb3ZlUmlnaHRBbmRNb2RpZnlTZWxlY3Rpb24iICAgICAg
ICAgICAgICAgICB9LAotICAgIHsgVktfUklHSFQsICBDdHJsS2V5LCAgICAgICAgICAgICJNb3Zl
V29yZFJpZ2h0IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgIHsgVktfUklH
SFQsICBDdHJsS2V5IHwgU2hpZnRLZXksICJNb3ZlV29yZFJpZ2h0QW5kTW9kaWZ5U2VsZWN0aW9u
IiAgICAgICAgICAgICB9LAotICAgIHsgVktfVVAsICAgICAwLCAgICAgICAgICAgICAgICAgICJN
b3ZlVXAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgIHsgVktf
VVAsICAgICBTaGlmdEtleSwgICAgICAgICAgICJNb3ZlVXBBbmRNb2RpZnlTZWxlY3Rpb24iICAg
ICAgICAgICAgICAgICAgICB9LAotICAgIHsgVktfUFJJT1IsICBTaGlmdEtleSwgICAgICAgICAg
ICJNb3ZlUGFnZVVwQW5kTW9kaWZ5U2VsZWN0aW9uIiAgICAgICAgICAgICAgICB9LAotICAgIHsg
VktfRE9XTiwgICAwLCAgICAgICAgICAgICAgICAgICJNb3ZlRG93biIgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9LAotICAgIHsgVktfRE9XTiwgICBTaGlmdEtleSwgICAgICAg
ICAgICJNb3ZlRG93bkFuZE1vZGlmeVNlbGVjdGlvbiIgICAgICAgICAgICAgICAgICB9LAotICAg
IHsgVktfTkVYVCwgICBTaGlmdEtleSwgICAgICAgICAgICJNb3ZlUGFnZURvd25BbmRNb2RpZnlT
ZWxlY3Rpb24iICAgICAgICAgICAgICB9LAotICAgIHsgVktfUFJJT1IsICAwLCAgICAgICAgICAg
ICAgICAgICJNb3ZlUGFnZVVwIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAot
ICAgIHsgVktfTkVYVCwgICAwLCAgICAgICAgICAgICAgICAgICJNb3ZlUGFnZURvd24iICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgIHsgVktfSE9NRSwgICAwLCAgICAgICAg
ICAgICAgICAgICJNb3ZlVG9CZWdpbm5pbmdPZkxpbmUiICAgICAgICAgICAgICAgICAgICAgICB9
LAotICAgIHsgVktfSE9NRSwgICBTaGlmdEtleSwgICAgICAgICAgICJNb3ZlVG9CZWdpbm5pbmdP
ZkxpbmVBbmRNb2RpZnlTZWxlY3Rpb24iICAgICB9LAotICAgIHsgVktfSE9NRSwgICBDdHJsS2V5
LCAgICAgICAgICAgICJNb3ZlVG9CZWdpbm5pbmdPZkRvY3VtZW50IiAgICAgICAgICAgICAgICAg
ICB9LAotICAgIHsgVktfSE9NRSwgICBDdHJsS2V5IHwgU2hpZnRLZXksICJNb3ZlVG9CZWdpbm5p
bmdPZkRvY3VtZW50QW5kTW9kaWZ5U2VsZWN0aW9uIiB9LAotCi0gICAgeyBWS19FTkQsICAgIDAs
ICAgICAgICAgICAgICAgICAgIk1vdmVUb0VuZE9mTGluZSIgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIH0sCi0gICAgeyBWS19FTkQsICAgIFNoaWZ0S2V5LCAgICAgICAgICAgIk1vdmVUb0Vu
ZE9mTGluZUFuZE1vZGlmeVNlbGVjdGlvbiIgICAgICAgICAgIH0sCi0gICAgeyBWS19FTkQsICAg
IEN0cmxLZXksICAgICAgICAgICAgIk1vdmVUb0VuZE9mRG9jdW1lbnQiICAgICAgICAgICAgICAg
ICAgICAgICAgIH0sCi0gICAgeyBWS19FTkQsICAgIEN0cmxLZXkgfCBTaGlmdEtleSwgIk1vdmVU
b0VuZE9mRG9jdW1lbnRBbmRNb2RpZnlTZWxlY3Rpb24iICAgICAgIH0sCi0KLSAgICB7IFZLX0JB
Q0ssICAgMCwgICAgICAgICAgICAgICAgICAiRGVsZXRlQmFja3dhcmQiICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfSwKLSAgICB7IFZLX0JBQ0ssICAgU2hpZnRLZXksICAgICAgICAgICAi
RGVsZXRlQmFja3dhcmQiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICB7IFZL
X0RFTEVURSwgMCwgICAgICAgICAgICAgICAgICAiRGVsZXRlRm9yd2FyZCIgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfSwKLSAgICB7IFZLX0JBQ0ssICAgQ3RybEtleSwgICAgICAgICAg
ICAiRGVsZXRlV29yZEJhY2t3YXJkIiAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICB7
IFZLX0RFTEVURSwgQ3RybEtleSwgICAgICAgICAgICAiRGVsZXRlV29yZEZvcndhcmQiICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfSwKLQogICAgIHsgJ0InLCAgICAgICBDdHJsS2V5LCAgICAg
ICAgICAgICJUb2dnbGVCb2xkIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAog
ICAgIHsgJ0knLCAgICAgICBDdHJsS2V5LCAgICAgICAgICAgICJUb2dnbGVJdGFsaWMiICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotCiAgICAgeyBWS19FU0NBUEUsIDAsICAgICAg
ICAgICAgICAgICAgIkNhbmNlbCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0sCiAgICAgeyBWS19PRU1fUEVSSU9ELCBDdHJsS2V5LCAgICAgICAgIkNhbmNlbCIgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgeyBWS19UQUIsICAgIDAsICAg
ICAgICAgICAgICAgICAgIkluc2VydFRhYiIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH0sCkBAIC00MzYsMzkgKzUyMSw3NiBAQCBzdGF0aWMgY29uc3QgS2V5UHJlc3NFbnRyeSBr
ZXlQcmVzc0VudHJpZXNbXSA9IHsKICAgICB7ICdccicsICAgQWx0S2V5IHwgU2hpZnRLZXksICAi
SW5zZXJ0TmV3bGluZSIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKIH07CiAKLXN0
YXRpYyBjb25zdCBjaGFyKiBpbnRlcnByZXRFZGl0b3JDb21tYW5kS2V5RXZlbnQoY29uc3QgS2V5
Ym9hcmRFdmVudCogZXZ0KQordm9pZCBFZGl0b3JDbGllbnQ6OmdlbmVyYXRlRWRpdG9yQ29tbWFu
ZHMoY29uc3QgS2V5Ym9hcmRFdmVudCogZXZlbnQpCiB7Ci0gICAgQVNTRVJUKGV2dC0+dHlwZSgp
ID09IGV2ZW50TmFtZXMoKS5rZXlkb3duRXZlbnQgfHwgZXZ0LT50eXBlKCkgPT0gZXZlbnROYW1l
cygpLmtleXByZXNzRXZlbnQpOworICAgIEFTU0VSVChldmVudC0+dHlwZSgpID09IGV2ZW50TmFt
ZXMoKS5rZXlkb3duRXZlbnQgfHwgZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkua2V5cHJl
c3NFdmVudCk7CiAKLSAgICBzdGF0aWMgSGFzaE1hcDxpbnQsIGNvbnN0IGNoYXIqPioga2V5RG93
bkNvbW1hbmRzTWFwID0gMDsKLSAgICBzdGF0aWMgSGFzaE1hcDxpbnQsIGNvbnN0IGNoYXIqPiog
a2V5UHJlc3NDb21tYW5kc01hcCA9IDA7CisgICAgbV9wZW5kaW5nRWRpdG9yQ29tbWFuZHMuY2xl
YXIoKTsKKworICAgIC8vIEZpcnN0IHRyeSB0byBpbnRlcnByZXQgdGhlIGNvbW1hbmQgYXMgYSBu
YXRpdmUgR1RLKyBrZXkgYmluZGluZy4KKyAgICBndGtfYmluZGluZ3NfYWN0aXZhdGVfZXZlbnQo
R1RLX09CSkVDVChtX25hdGl2ZVdpZGdldC5nZXQoKSksIGV2ZW50LT5rZXlFdmVudCgpLT5nZGtF
dmVudEtleSgpKTsKKyAgICBpZiAobV9wZW5kaW5nRWRpdG9yQ29tbWFuZHMuc2l6ZSgpID4gMCkK
KyAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFrZXlEb3duQ29tbWFuZHNNYXApIHsKLSAgICAg
ICAga2V5RG93bkNvbW1hbmRzTWFwID0gbmV3IEhhc2hNYXA8aW50LCBjb25zdCBjaGFyKj47Ci0g
ICAgICAgIGtleVByZXNzQ29tbWFuZHNNYXAgPSBuZXcgSGFzaE1hcDxpbnQsIGNvbnN0IGNoYXIq
PjsKKyAgICBzdGF0aWMgSGFzaE1hcDxpbnQsIGNvbnN0IGNoYXIqPiBrZXlEb3duQ29tbWFuZHNN
YXA7CisgICAgc3RhdGljIEhhc2hNYXA8aW50LCBjb25zdCBjaGFyKj4ga2V5UHJlc3NDb21tYW5k
c01hcDsKIAorICAgIGlmIChrZXlEb3duQ29tbWFuZHNNYXAuaXNFbXB0eSgpKSB7CiAgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBHX05fRUxFTUVOVFMoa2V5RG93bkVudHJpZXMpOyBp
KyspCi0gICAgICAgICAgICBrZXlEb3duQ29tbWFuZHNNYXAtPnNldChrZXlEb3duRW50cmllc1tp
XS5tb2RpZmllcnMgPDwgMTYgfCBrZXlEb3duRW50cmllc1tpXS52aXJ0dWFsS2V5LCBrZXlEb3du
RW50cmllc1tpXS5uYW1lKTsKKyAgICAgICAgICAgIGtleURvd25Db21tYW5kc01hcC5zZXQoa2V5
RG93bkVudHJpZXNbaV0ubW9kaWZpZXJzIDw8IDE2IHwga2V5RG93bkVudHJpZXNbaV0udmlydHVh
bEtleSwga2V5RG93bkVudHJpZXNbaV0ubmFtZSk7CiAKICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IEdfTl9FTEVNRU5UUyhrZXlQcmVzc0VudHJpZXMpOyBpKyspCi0gICAgICAgICAg
ICBrZXlQcmVzc0NvbW1hbmRzTWFwLT5zZXQoa2V5UHJlc3NFbnRyaWVzW2ldLm1vZGlmaWVycyA8
PCAxNiB8IGtleVByZXNzRW50cmllc1tpXS5jaGFyQ29kZSwga2V5UHJlc3NFbnRyaWVzW2ldLm5h
bWUpOworICAgICAgICAgICAga2V5UHJlc3NDb21tYW5kc01hcC5zZXQoa2V5UHJlc3NFbnRyaWVz
W2ldLm1vZGlmaWVycyA8PCAxNiB8IGtleVByZXNzRW50cmllc1tpXS5jaGFyQ29kZSwga2V5UHJl
c3NFbnRyaWVzW2ldLm5hbWUpOwogICAgIH0KIAogICAgIHVuc2lnbmVkIG1vZGlmaWVycyA9IDA7
Ci0gICAgaWYgKGV2dC0+c2hpZnRLZXkoKSkKKyAgICBpZiAoZXZlbnQtPnNoaWZ0S2V5KCkpCiAg
ICAgICAgIG1vZGlmaWVycyB8PSBTaGlmdEtleTsKLSAgICBpZiAoZXZ0LT5hbHRLZXkoKSkKKyAg
ICBpZiAoZXZlbnQtPmFsdEtleSgpKQogICAgICAgICBtb2RpZmllcnMgfD0gQWx0S2V5OwotICAg
IGlmIChldnQtPmN0cmxLZXkoKSkKKyAgICBpZiAoZXZlbnQtPmN0cmxLZXkoKSkKICAgICAgICAg
bW9kaWZpZXJzIHw9IEN0cmxLZXk7CiAKLSAgICBpZiAoZXZ0LT50eXBlKCkgPT0gZXZlbnROYW1l
cygpLmtleWRvd25FdmVudCkgewotICAgICAgICBpbnQgbWFwS2V5ID0gbW9kaWZpZXJzIDw8IDE2
IHwgZXZ0LT5rZXlDb2RlKCk7Ci0gICAgICAgIHJldHVybiBtYXBLZXkgPyBrZXlEb3duQ29tbWFu
ZHNNYXAtPmdldChtYXBLZXkpIDogMDsKKworICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50
TmFtZXMoKS5rZXlkb3duRXZlbnQpIHsKKyAgICAgICAgaW50IG1hcEtleSA9IG1vZGlmaWVycyA8
PCAxNiB8IGV2ZW50LT5rZXlDb2RlKCk7CisgICAgICAgIGlmIChtYXBLZXkpCisgICAgICAgICAg
ICBtX3BlbmRpbmdFZGl0b3JDb21tYW5kcy5hcHBlbmQoa2V5RG93bkNvbW1hbmRzTWFwLmdldCht
YXBLZXkpKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGludCBtYXBLZXkgPSBtb2Rp
ZmllcnMgPDwgMTYgfCBldnQtPmNoYXJDb2RlKCk7Ci0gICAgcmV0dXJuIG1hcEtleSA/IGtleVBy
ZXNzQ29tbWFuZHNNYXAtPmdldChtYXBLZXkpIDogMDsKKyAgICBpbnQgbWFwS2V5ID0gbW9kaWZp
ZXJzIDw8IDE2IHwgZXZlbnQtPmNoYXJDb2RlKCk7CisgICAgaWYgKG1hcEtleSkKKyAgICAgICAg
bV9wZW5kaW5nRWRpdG9yQ29tbWFuZHMuYXBwZW5kKGtleVByZXNzQ29tbWFuZHNNYXAuZ2V0KG1h
cEtleSkpOworfQorCitib29sIEVkaXRvckNsaWVudDo6ZXhlY3V0ZVBlbmRpbmdFZGl0b3JDb21t
YW5kcyhGcmFtZSogZnJhbWUsIGJvb2wgYWxsb3dUZXh0SW5zZXJ0aW9uKQoreworICAgIFZlY3Rv
cjxFZGl0b3I6OkNvbW1hbmQ+IGNvbW1hbmRzOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bV9wZW5kaW5nRWRpdG9yQ29tbWFuZHMuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgRWRpdG9yOjpD
b21tYW5kIGNvbW1hbmQgPSBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQobV9wZW5kaW5nRWRpdG9y
Q29tbWFuZHMuYXQoaSkpOworICAgICAgICBpZiAoY29tbWFuZC5pc1RleHRJbnNlcnRpb24oKSAm
JiAhYWxsb3dUZXh0SW5zZXJ0aW9uKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
ICAgIGNvbW1hbmRzLmFwcGVuZChjb21tYW5kKTsKKyAgICB9CisKKyAgICBib29sIHN1Y2Nlc3Mg
PSB0cnVlOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY29tbWFuZHMuc2l6ZSgpOyBpKysp
IHsKKyAgICAgICAgaWYgKCFjb21tYW5kcy5hdChpKS5leGVjdXRlKCkpIHsKKyAgICAgICAgICAg
IHN1Y2Nlc3MgPSBmYWxzZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQor
CisgICAgbV9wZW5kaW5nRWRpdG9yQ29tbWFuZHMuY2xlYXIoKTsKKworICAgIC8vIElmIHdlIHN1
Y2Nlc3NmdWxseSBjb21wbGV0ZWQgYWxsIGVkaXRvciBjb21tYW5kcywgdGhlbgorICAgIC8vIHRo
aXMgc2lnbmFscyBhIGNhbmNlbGluZyBvZiB0aGUgY29tcG9zaXRpb24uCisgICAgaWYgKHN1Y2Nl
c3MpCisgICAgICAgIGNsZWFyUGVuZGluZ0NvbXBvc2l0aW9uKCk7CisKKyAgICByZXR1cm4gc3Vj
Y2VzczsKIH0KIAogdm9pZCBFZGl0b3JDbGllbnQ6OmhhbmRsZUtleWJvYXJkRXZlbnQoS2V5Ym9h
cmRFdmVudCogZXZlbnQpCkBAIC00ODcsMjMgKzYwOSwyMCBAQCB2b2lkIEVkaXRvckNsaWVudDo6
aGFuZGxlS2V5Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50KiBldmVudCkKICAgICBpZiAoIWZyYW1l
LT5lZGl0b3IoKS0+Y2FuRWRpdCgpICYmICEoZnJhbWUtPnNldHRpbmdzKCkgJiYgZnJhbWUtPnNl
dHRpbmdzKCktPmNhcmV0QnJvd3NpbmdFbmFibGVkKCkpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBjb25zdCBnY2hhciogZWRpdG9yQ29tbWFuZFN0cmluZyA9IGludGVycHJldEVkaXRvckNvbW1h
bmRLZXlFdmVudChldmVudCk7Ci0gICAgaWYgKGVkaXRvckNvbW1hbmRTdHJpbmcpIHsKLSAgICAg
ICAgRWRpdG9yOjpDb21tYW5kIGNvbW1hbmQgPSBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoZWRp
dG9yQ29tbWFuZFN0cmluZyk7CisgICAgZ2VuZXJhdGVFZGl0b3JDb21tYW5kcyhldmVudCk7Cisg
ICAgaWYgKG1fcGVuZGluZ0VkaXRvckNvbW1hbmRzLnNpemUoKSA+IDApIHsKIAotICAgICAgICAv
LyBPbiBlZGl0b3IgY29tbWFuZHMgZnJvbSBrZXkgZG93biBldmVudHMsIHdlIG9ubHkgd2FudCB0
byBsZXQgdGhlIGV2ZW50IGJ1YmJsZSB1cCB0bwotICAgICAgICAvLyB0aGUgRE9NIGlmIGl0IGlu
c2VydHMgdGV4dC4gSWYgaXQgZG9lc24ndCBpbnNlcnQgdGV4dCAoZS5nLiBUYWIgdGhhdCBjaGFu
Z2VzIGZvY3VzKQotICAgICAgICAvLyB3ZSBqdXN0IHdhbnQgV2ViS2l0IHRvIGhhbmRsZSBpdCBp
bW1lZGlhdGVseSB3aXRob3V0IGEgRE9NIGV2ZW50LgorICAgICAgICAvLyBEdXJpbmcgUmF3S2V5
RG93biBldmVudHMgaWYgYW4gZWRpdG9yIGNvbW1hbmQgd2lsbCBpbnNlcnQgdGV4dCwgZGVmZXIK
KyAgICAgICAgLy8gdGhlIGluc2VydGlvbiB1bnRpbCB0aGUga2V5cHJlc3MgZXZlbnQuIFdlIHdh
bnQga2V5ZG93biB0byBidWJibGUgdXAKKyAgICAgICAgLy8gdGhyb3VnaCB0aGUgRE9NIGZpcnN0
LgogICAgICAgICBpZiAocGxhdGZvcm1FdmVudC0+dHlwZSgpID09IFBsYXRmb3JtS2V5Ym9hcmRF
dmVudDo6UmF3S2V5RG93bikgewotICAgICAgICAgICAgaWYgKCFjb21tYW5kLmlzVGV4dEluc2Vy
dGlvbigpICYmIGNvbW1hbmQuZXhlY3V0ZShldmVudCkpCisgICAgICAgICAgICBpZiAoZXhlY3V0
ZVBlbmRpbmdFZGl0b3JDb21tYW5kcyhmcmFtZSwgZmFsc2UpKQogICAgICAgICAgICAgICAgIGV2
ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogCi0gICAgICAgICAgICBjbGVhclBlbmRpbmdDb21w
b3NpdGlvbigpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgaWYg
KGNvbW1hbmQuZXhlY3V0ZShldmVudCkpIHsKLSAgICAgICAgICAgIGNsZWFyUGVuZGluZ0NvbXBv
c2l0aW9uKCk7CisgICAgICAgIGlmIChleGVjdXRlUGVuZGluZ0VkaXRvckNvbW1hbmRzKGZyYW1l
LCB0cnVlKSkgewogICAgICAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTU5MiwxMCArNzExLDE5IEBAIEVkaXRvckNs
aWVudDo6RWRpdG9yQ2xpZW50KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgOiBtX2lzSW5S
ZWRvKGZhbHNlKQogICAgICwgbV93ZWJWaWV3KHdlYlZpZXcpCiAgICAgLCBtX3RyZWF0Q29udGV4
dENvbW1pdEFzS2V5RXZlbnQoZmFsc2UpCisgICAgLCBtX25hdGl2ZVdpZGdldChndGtfdGV4dF92
aWV3X25ldygpKQogewogICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiBwcml2ID0gbV93ZWJWaWV3
LT5wcml2OwogICAgIGdfc2lnbmFsX2Nvbm5lY3QocHJpdi0+aW1Db250ZXh0LCAiY29tbWl0Iiwg
R19DQUxMQkFDSyhpbUNvbnRleHRDb21taXR0ZWQpLCB0aGlzKTsKICAgICBnX3NpZ25hbF9jb25u
ZWN0KHByaXYtPmltQ29udGV4dCwgInByZWVkaXQtY2hhbmdlZCIsIEdfQ0FMTEJBQ0soaW1Db250
ZXh0UHJlZWRpdENoYW5nZWQpLCB0aGlzKTsKKworICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9uYXRp
dmVXaWRnZXQuZ2V0KCksICJiYWNrc3BhY2UiLCBHX0NBTExCQUNLKGJhY2tzcGFjZUNhbGxiYWNr
KSwgdGhpcyk7CisgICAgZ19zaWduYWxfY29ubmVjdChtX25hdGl2ZVdpZGdldC5nZXQoKSwgImN1
dC1jbGlwYm9hcmQiLCBHX0NBTExCQUNLKGN1dENsaXBib2FyZENhbGxiYWNrKSwgdGhpcyk7Cisg
ICAgZ19zaWduYWxfY29ubmVjdChtX25hdGl2ZVdpZGdldC5nZXQoKSwgImNvcHktY2xpcGJvYXJk
IiwgR19DQUxMQkFDSyhjb3B5Q2xpcGJvYXJkQ2FsbGJhY2spLCB0aGlzKTsKKyAgICBnX3NpZ25h
bF9jb25uZWN0KG1fbmF0aXZlV2lkZ2V0LmdldCgpLCAicGFzdGUtY2xpcGJvYXJkIiwgR19DQUxM
QkFDSyhwYXN0ZUNsaXBib2FyZENhbGxiYWNrKSwgdGhpcyk7CisgICAgZ19zaWduYWxfY29ubmVj
dChtX25hdGl2ZVdpZGdldC5nZXQoKSwgInNlbGVjdC1hbGwiLCBHX0NBTExCQUNLKHNlbGVjdEFs
bENhbGxiYWNrKSwgdGhpcyk7CisgICAgZ19zaWduYWxfY29ubmVjdChtX25hdGl2ZVdpZGdldC5n
ZXQoKSwgIm1vdmUtY3Vyc29yIiwgR19DQUxMQkFDSyhtb3ZlQ3Vyc29yQ2FsbGJhY2spLCB0aGlz
KTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KG1fbmF0aXZlV2lkZ2V0LmdldCgpLCAiZGVsZXRlLWZy
b20tY3Vyc29yIiwgR19DQUxMQkFDSyhkZWxldGVGcm9tQ3Vyc29yQ2FsbGJhY2spLCB0aGlzKTsK
IH0KIAogRWRpdG9yQ2xpZW50Ojp+RWRpdG9yQ2xpZW50KCkKZGlmZiAtLWdpdCBhL1dlYktpdC9n
dGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmggYi9XZWJLaXQvZ3RrL1dlYkNvcmVT
dXBwb3J0L0VkaXRvckNsaWVudEd0ay5oCmluZGV4IDgyNWMxNDZiZmJiYWYxYWFjYjAzNzFhMmRj
YWE5ZjQ2YjBlYWI2MDMuLjJlNWMzNTk2M2M5M2FkMjA0ZTI4NGY0MTg1MDM1MzZlZWVhNDg2MGEg
MTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmgK
KysrIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuaApAQCAtMzYs
MTIgKzM2LDE1IEBACiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL0Zvcndh
cmQuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL2dv
YmplY3QvR1JlZlB0ci5oPgogCiB0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViVmlldyBXZWJLaXRX
ZWJWaWV3OwordHlwZWRlZiBzdHJ1Y3QgX0d0a1dpZGdldCBHdGtXaWRnZXQ7CiB0eXBlZGVmIGNo
YXIgZ2NoYXI7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICBjbGFzcyBQYWdlOworY2xhc3Mg
RnJhbWU7CitjbGFzcyBLZXlib2FyZEV2ZW50OwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAg
LTYwLDcgKzYzLDEwIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogICAgICAgICBib29sIHRyZWF0Q29u
dGV4dENvbW1pdEFzS2V5RXZlbnQoKSB7IHJldHVybiBtX3RyZWF0Q29udGV4dENvbW1pdEFzS2V5
RXZlbnQ7IH0KICAgICAgICAgdm9pZCBjbGVhclBlbmRpbmdDb21wb3NpdGlvbigpIHsgbV9wZW5k
aW5nQ29tcG9zaXRpb24uc2V0KDApOyB9CiAgICAgICAgIGJvb2wgaGFzUGVuZGluZ0NvbXBvc2l0
aW9uKCkgeyByZXR1cm4gbV9wZW5kaW5nQ29tcG9zaXRpb247IH0KKyAgICAgICAgdm9pZCBhZGRQ
ZW5kaW5nRWRpdG9yQ29tbWFuZChjb25zdCBjaGFyKiBjb21tYW5kKSB7IG1fcGVuZGluZ0VkaXRv
ckNvbW1hbmRzLmFwcGVuZChjb21tYW5kKTsgfQogICAgICAgICB2b2lkIHVwZGF0ZVBlbmRpbmdD
b21wb3NpdGlvbihjb25zdCBjaGFyKik7CisgICAgICAgIHZvaWQgZ2VuZXJhdGVFZGl0b3JDb21t
YW5kcyhjb25zdCBXZWJDb3JlOjpLZXlib2FyZEV2ZW50Kik7CisgICAgICAgIGJvb2wgZXhlY3V0
ZVBlbmRpbmdFZGl0b3JDb21tYW5kcyhXZWJDb3JlOjpGcmFtZSosIGJvb2wpOwogCiAgICAgICAg
IC8vIGZyb20gRWRpdG9yQ2xpZW50CiAgICAgICAgIHZpcnR1YWwgdm9pZCBwYWdlRGVzdHJveWVk
KCk7CkBAIC0xMzAsNiArMTM2LDggQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAgICAgICAgIFdlYktp
dFdlYlZpZXcqIG1fd2ViVmlldzsKICAgICAgICAgYm9vbCBtX3RyZWF0Q29udGV4dENvbW1pdEFz
S2V5RXZlbnQ7CiAgICAgICAgIEdPd25QdHI8Z2NoYXI+IG1fcGVuZGluZ0NvbXBvc2l0aW9uOwor
ICAgICAgICBWZWN0b3I8Y29uc3QgY2hhcio+IG1fcGVuZGluZ0VkaXRvckNvbW1hbmRzOworICAg
ICAgICBHUmVmUHRyPEd0a1dpZGdldD4gbV9uYXRpdmVXaWRnZXQ7CiAgICAgfTsKIH0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>