<?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>28173</bug_id>
          
          <creation_ts>2009-08-11 02:44:56 -0700</creation_ts>
          <short_desc>[GTK] Remove keyring optional features</short_desc>
          <delta_ts>2009-08-12 11:38:46 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Xan Lopez">xan.lopez</reporter>
          <assigned_to name="Xan Lopez">xan.lopez</assigned_to>
          <cc>jmalonzo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>138930</commentid>
    <comment_count>0</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2009-08-11 02:44:56 -0700</bug_when>
    <thetext>Per bug #26242, providing optional keyring support in webkitgtk+ itself can be quite problematic for distributors and application developers, and would force us to ship a runtime introspection system to see the features the library you are using has enabled.

For that reason I propose to move the keyring support to libsoup instead, which already has a system like that, and where applications will be able to trivially choose to enable it or not. The only downside of this is that we&apos;ll need to figure out a way to store auth data from forms in keyring from applications/libsoup, since webkit won&apos;t be able to depend on it directly. I think that will be doable though, since other ports are already doing it.

Attached is a first patch to use the extra auth support available in the &apos;keyring&apos; branch in libsoup git. If this is approved we&apos;ll commit both this patch and that branch to master at the same time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>138931</commentid>
    <comment_count>1</comment_count>
      <attachid>34546</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2009-08-11 02:51:21 -0700</bug_when>
    <thetext>Created attachment 34546
removekeyring.patch

Remove optional keyring support from WebKit, move it to libsoup.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>138932</commentid>
    <comment_count>2</comment_count>
      <attachid>34547</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2009-08-11 03:04:47 -0700</bug_when>
    <thetext>Created attachment 34547
removekeyringv2.patch

Only save the auth data if the authentication succeeded. This was fixed recently, do not regress :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>138938</commentid>
    <comment_count>3</comment_count>
      <attachid>34547</attachid>
    <who name="Jan Alonzo">jmalonzo</who>
    <bug_when>2009-08-11 05:17:39 -0700</bug_when>
    <thetext>Comment on attachment 34547
removekeyringv2.patch

&gt; -#if USE(GNOMEKEYRING)
&gt;      GtkWidget* checkButton;
&gt; -#endif

Is there a reason why you removed the conditional but not the block inside it? There are a few instances of this in your patch and would be nice to know why they&apos;re not removed.
&gt;      char *username;
&gt;      char *password;
&gt;  } WebKitAuthData;
&gt; @@ -103,54 +98,38 @@ static void free_authData(WebKitAuthData* authData)
&gt;      g_slice_free(WebKitAuthData, authData);
&gt;  }
&gt;  
&gt;  static void save_password_callback(SoupMessage* msg, WebKitAuthData* authData)
&gt;  {
&gt;      /* Check only for Success status codes (2xx) */
&gt; -    if (msg-&gt;status_code &gt;= 200 &amp;&amp; msg-&gt;status_code &lt; 300) {
&gt; -        SoupURI* uri = soup_message_get_uri(authData-&gt;msg);
&gt; -        gnome_keyring_set_network_password(NULL,
&gt; -                                           authData-&gt;username,
&gt; -                                           soup_auth_get_realm(authData-&gt;auth),
&gt; -                                           uri-&gt;host,
&gt; -                                           NULL,
&gt; -                                           uri-&gt;scheme,
&gt; -                                           soup_auth_get_scheme_name(authData-&gt;auth),
&gt; -                                           uri-&gt;port,
&gt; -                                           authData-&gt;password,
&gt; -                                           (GnomeKeyringOperationGetIntCallback)set_password_callback,
&gt; -                                           NULL,
&gt; -                                           NULL);
&gt; -    }
&gt; +    if (msg-&gt;status_code &gt;= 200 &amp;&amp; msg-&gt;status_code &lt; 300)
&gt; +        soup_auth_save_password(authData-&gt;auth, authData-&gt;username, authData-&gt;password);
&gt; +

Do we need to check the status code here still?


&gt;  static void response_callback(GtkDialog* dialog, gint response_id, WebKitAuthData* authData)
&gt;  {
&gt; +    gboolean freeAuthData = TRUE;
&gt; +
&gt;      switch(response_id) {
&gt;      case GTK_RESPONSE_OK:
&gt;          authData-&gt;username = g_strdup(gtk_entry_get_text(GTK_ENTRY(authData-&gt;loginEntry)));
&gt;          authData-&gt;password = g_strdup(gtk_entry_get_text(GTK_ENTRY(authData-&gt;passwordEntry)));
&gt; +
&gt;          soup_auth_authenticate(authData-&gt;auth, authData-&gt;username, authData-&gt;password);
&gt;  
&gt; -#if USE(GNOMEKEYRING)
&gt; -        if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(authData-&gt;checkButton)))
&gt; +        if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(authData-&gt;checkButton))) {
&gt;              g_signal_connect(authData-&gt;msg, &quot;got-headers&quot;, G_CALLBACK(save_password_callback), authData);
&gt; -#endif
&gt; +            freeAuthData = FALSE;
&gt; +        }
&gt; +
&gt;      default:
&gt;          break;
&gt;      }

I don&apos;t think we need the switch here. I think we can just refactor this into a conditional so we can ditch &quot;freeAuthData&quot;.

&gt; @@ -197,10 +176,8 @@ static void show_auth_dialog(WebKitAuthData* authData, const char* login, const
&gt;      GtkWidget* messageLabel;
&gt;      char* message;
&gt;      SoupURI* uri;
&gt; -#if USE(GNOMEKEYRING)
&gt;      GtkWidget* rememberBox;
&gt;      GtkWidget* checkButton;
&gt; -#endif

We seem to be introducing features that were not in non-gnomekeyring builds (I think this is the source of my confusion). What are these for btw?

&gt;  
&gt;      /* From GTK+ gtkmountoperation.c, modified and simplified. LGPL 2 license */
&gt;  
&gt; @@ -279,7 +256,6 @@ static void show_auth_dialog(WebKitAuthData* authData, const char* login, const
&gt;  
&gt;      gtk_entry_set_visibility(GTK_ENTRY(authData-&gt;passwordEntry), FALSE);
&gt;  
&gt; -#if USE(GNOMEKEYRING)
&gt;      rememberBox = gtk_vbox_new (FALSE, 6);
&gt;      gtk_box_pack_start (GTK_BOX (vbox), rememberBox,
&gt;                          FALSE, FALSE, 0);
&gt; @@ -290,36 +266,18 @@ static void show_auth_dialog(WebKitAuthData* authData, const char* login, const
&gt;      gtk_label_set_line_wrap(GTK_LABEL(gtk_bin_get_child(GTK_BIN(checkButton))), TRUE);
&gt;      gtk_box_pack_start (GTK_BOX (rememberBox), checkButton, FALSE, FALSE, 0);
&gt;      authData-&gt;checkButton = checkButton;
&gt; -#endif

Ditto with introducing features in default non-gnomekeyring builds.

&gt;  static void session_authenticate(SoupSession* session, SoupMessage* msg, SoupAuth* auth, gboolean retrying, gpointer user_data)
&gt;  {
&gt;      SoupURI* uri;
&gt;      WebKitAuthData* authData;
&gt;      SoupSessionFeature* manager = (SoupSessionFeature*)user_data;
&gt; +    GSList *users;

The asterisk should be in GSList&apos;s side.

&gt; +    login = password = NULL;
&gt; +
&gt; +    users = soup_auth_get_saved_users(auth);

This returns one entry only as we don&apos;t seem to have a loop below?

&gt; +    if (users) {
&gt; +        login = users-&gt;data;
&gt; +        password = soup_auth_get_saved_password(auth, login);
&gt; +        soup_auth_free_saved_users(auth, users);
&gt; +    }

No big issue with the patch. Just some concerns about introducing new features in default non-gnomekeyring builds, etc.. I&apos;m going to say r- for now as patch needs revision.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>138939</commentid>
    <comment_count>4</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2009-08-11 05:25:07 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; &gt; +    if (msg-&gt;status_code &gt;= 200 &amp;&amp; msg-&gt;status_code &lt; 300)
&gt; &gt; +        soup_auth_save_password(authData-&gt;auth, authData-&gt;username, authData-&gt;password);
&gt; &gt; +
&gt; 
&gt; Do we need to check the status code here still?

I think so. Why wouldn&apos;t we don&apos;t need to?

&gt; 
&gt; 
&gt; &gt;  static void response_callback(GtkDialog* dialog, gint response_id, WebKitAuthData* authData)
&gt; &gt;  {
&gt; &gt; +    gboolean freeAuthData = TRUE;
&gt; &gt; +
&gt; &gt;      switch(response_id) {
&gt; &gt;      case GTK_RESPONSE_OK:
&gt; &gt;          authData-&gt;username = g_strdup(gtk_entry_get_text(GTK_ENTRY(authData-&gt;loginEntry)));
&gt; &gt;          authData-&gt;password = g_strdup(gtk_entry_get_text(GTK_ENTRY(authData-&gt;passwordEntry)));
&gt; &gt; +
&gt; &gt;          soup_auth_authenticate(authData-&gt;auth, authData-&gt;username, authData-&gt;password);
&gt; &gt;  
&gt; &gt; -#if USE(GNOMEKEYRING)
&gt; &gt; -        if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(authData-&gt;checkButton)))
&gt; &gt; +        if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(authData-&gt;checkButton))) {
&gt; &gt;              g_signal_connect(authData-&gt;msg, &quot;got-headers&quot;, G_CALLBACK(save_password_callback), authData);
&gt; &gt; -#endif
&gt; &gt; +            freeAuthData = FALSE;
&gt; &gt; +        }
&gt; &gt; +
&gt; &gt;      default:
&gt; &gt;          break;
&gt; &gt;      }
&gt; 
&gt; I don&apos;t think we need the switch here. I think we can just refactor this into a
&gt; conditional so we can ditch &quot;freeAuthData&quot;.

Well, I can free the authdata unconditionally if the answer is not OK, I guess it&apos;s an improvement.

&gt; &gt;  static void session_authenticate(SoupSession* session, SoupMessage* msg, SoupAuth* auth, gboolean retrying, gpointer user_data)
&gt; &gt;  {
&gt; &gt;      SoupURI* uri;
&gt; &gt;      WebKitAuthData* authData;
&gt; &gt;      SoupSessionFeature* manager = (SoupSessionFeature*)user_data;
&gt; &gt; +    GSList *users;
&gt; 
&gt; The asterisk should be in GSList&apos;s side.

Right.

&gt; 
&gt; &gt; +    login = password = NULL;
&gt; &gt; +
&gt; &gt; +    users = soup_auth_get_saved_users(auth);
&gt; 
&gt; This returns one entry only as we don&apos;t seem to have a loop below?

We only support one login/password per domain, that hasn&apos;t changed.

&gt; 
&gt; &gt; +    if (users) {
&gt; &gt; +        login = users-&gt;data;
&gt; &gt; +        password = soup_auth_get_saved_password(auth, login);
&gt; &gt; +        soup_auth_free_saved_users(auth, users);
&gt; &gt; +    }
&gt; 
&gt; No big issue with the patch. Just some concerns about introducing new features
&gt; in default non-gnomekeyring builds, etc.. I&apos;m going to say r- for now as patch
&gt; needs revision.

We need to add support in libsoup to figure out if it actually has support to store authentication data permanently, so that we can decide at runtime if we want to show the checkboxes. The best we can do now is to always show them, but they won&apos;t do anything if libsoup can&apos;t save the data. I&apos;ll fix this in a follow-up patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>139274</commentid>
    <comment_count>5</comment_count>
      <attachid>34643</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2009-08-12 00:44:42 -0700</bug_when>
    <thetext>Created attachment 34643
removekeyringv3.patch

Updated patch.

- Fixes style issues.
- Updates the check of the HTTP status code per danw&apos;s suggestion.
- Only shows the &apos;save passwords&apos; option if the session has a password manager feature.
- I couldn&apos;t figure out a way of refactor response_callback to not have a boolean freeAuthData without either duplicating code or adding a goto... suggestions welcome.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>139302</commentid>
    <comment_count>6</comment_count>
      <attachid>34643</attachid>
    <who name="Jan Alonzo">jmalonzo</who>
    <bug_when>2009-08-12 05:31:10 -0700</bug_when>
    <thetext>Comment on attachment 34643
removekeyringv3.patch

&gt; +static gboolean session_can_save_passwords(SoupSession* session)
&gt; +{
&gt; +    return soup_session_get_feature(session, SOUP_TYPE_PASSWORD_MANAGER) != NULL;
&gt; +}
&gt; +

Is the function necessary? It&apos;s only being used once.

&gt;  static void show_auth_dialog(WebKitAuthData* authData, const char* login, const char* password)
&gt;  {
&gt;      GtkWidget* toplevel;
&gt; @@ -197,10 +179,8 @@ static void show_auth_dialog(WebKitAuthData* authData, const char* login, const
&gt;      GtkWidget* messageLabel;
&gt;      char* message;
&gt;      SoupURI* uri;
&gt; -#if USE(GNOMEKEYRING)
&gt;      GtkWidget* rememberBox;
&gt;      GtkWidget* checkButton;
&gt; -#endif
&gt;  
&gt; -#if USE(GNOMEKEYRING)
&gt; -    rememberBox = gtk_vbox_new (FALSE, 6);
&gt; -    gtk_box_pack_start (GTK_BOX (vbox), rememberBox,
&gt; -                        FALSE, FALSE, 0);
&gt; +    rememberBox = gtk_vbox_new(FALSE, 6);
&gt; +    gtk_box_pack_start(GTK_BOX(vbox), rememberBox,
&gt; +                       FALSE, FALSE, 0);

Uhmm can&apos;t we pack the rememberBox along with the checkButton only if we can save passwords?

&gt;  
&gt; -    checkButton = gtk_check_button_new_with_mnemonic(_(&quot;_Remember password&quot;));
&gt; -    if (login &amp;&amp; password)
&gt; -        gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkButton), TRUE);
&gt; -    gtk_label_set_line_wrap(GTK_LABEL(gtk_bin_get_child(GTK_BIN(checkButton))), TRUE);
&gt; -    gtk_box_pack_start (GTK_BOX (rememberBox), checkButton, FALSE, FALSE, 0);
&gt; -    authData-&gt;checkButton = checkButton;
&gt; -#endif
&gt; +    if (session_can_save_passwords(authData-&gt;session)) {
&gt; +        checkButton = gtk_check_button_new_with_mnemonic(_(&quot;_Remember password&quot;));
&gt; +        if (login &amp;&amp; password)
&gt; +            gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkButton), TRUE);
&gt; +        gtk_label_set_line_wrap(GTK_LABEL(gtk_bin_get_child(GTK_BIN(checkButton))), TRUE);
&gt; +        gtk_box_pack_start(GTK_BOX(rememberBox), checkButton, FALSE, FALSE, 0);
&gt; +        authData-&gt;checkButton = checkButton;
&gt; +    }

Patch is fine otherwise. r=me but please don&apos;t commit this yet. We need to get (1) libsoup updated, and (2) bot support for latest libsoup. 

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>139304</commentid>
    <comment_count>7</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2009-08-12 05:45:34 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 34643 [details])
&gt; &gt; +static gboolean session_can_save_passwords(SoupSession* session)
&gt; &gt; +{
&gt; &gt; +    return soup_session_get_feature(session, SOUP_TYPE_PASSWORD_MANAGER) != NULL;
&gt; &gt; +}
&gt; &gt; +
&gt; 
&gt; Is the function necessary? It&apos;s only being used once.

I think it makes the code more readable, putting the expression directly is a bit obscure.

&gt; 
&gt; &gt;  static void show_auth_dialog(WebKitAuthData* authData, const char* login, const char* password)
&gt; &gt;  {
&gt; &gt;      GtkWidget* toplevel;
&gt; &gt; @@ -197,10 +179,8 @@ static void show_auth_dialog(WebKitAuthData* authData, const char* login, const
&gt; &gt;      GtkWidget* messageLabel;
&gt; &gt;      char* message;
&gt; &gt;      SoupURI* uri;
&gt; &gt; -#if USE(GNOMEKEYRING)
&gt; &gt;      GtkWidget* rememberBox;
&gt; &gt;      GtkWidget* checkButton;
&gt; &gt; -#endif
&gt; &gt;  
&gt; &gt; -#if USE(GNOMEKEYRING)
&gt; &gt; -    rememberBox = gtk_vbox_new (FALSE, 6);
&gt; &gt; -    gtk_box_pack_start (GTK_BOX (vbox), rememberBox,
&gt; &gt; -                        FALSE, FALSE, 0);
&gt; &gt; +    rememberBox = gtk_vbox_new(FALSE, 6);
&gt; &gt; +    gtk_box_pack_start(GTK_BOX(vbox), rememberBox,
&gt; &gt; +                       FALSE, FALSE, 0);
&gt; 
&gt; Uhmm can&apos;t we pack the rememberBox along with the checkButton only if we can
&gt; save passwords?

Good point, I&apos;ll do that.

&gt; 
&gt; &gt;  
&gt; &gt; -    checkButton = gtk_check_button_new_with_mnemonic(_(&quot;_Remember password&quot;));
&gt; &gt; -    if (login &amp;&amp; password)
&gt; &gt; -        gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkButton), TRUE);
&gt; &gt; -    gtk_label_set_line_wrap(GTK_LABEL(gtk_bin_get_child(GTK_BIN(checkButton))), TRUE);
&gt; &gt; -    gtk_box_pack_start (GTK_BOX (rememberBox), checkButton, FALSE, FALSE, 0);
&gt; &gt; -    authData-&gt;checkButton = checkButton;
&gt; &gt; -#endif
&gt; &gt; +    if (session_can_save_passwords(authData-&gt;session)) {
&gt; &gt; +        checkButton = gtk_check_button_new_with_mnemonic(_(&quot;_Remember password&quot;));
&gt; &gt; +        if (login &amp;&amp; password)
&gt; &gt; +            gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkButton), TRUE);
&gt; &gt; +        gtk_label_set_line_wrap(GTK_LABEL(gtk_bin_get_child(GTK_BIN(checkButton))), TRUE);
&gt; &gt; +        gtk_box_pack_start(GTK_BOX(rememberBox), checkButton, FALSE, FALSE, 0);
&gt; &gt; +        authData-&gt;checkButton = checkButton;
&gt; &gt; +    }
&gt; 
&gt; Patch is fine otherwise. r=me but please don&apos;t commit this yet. We need to get
&gt; (1) libsoup updated, and (2) bot support for latest libsoup. 

Nod.

&gt; 
&gt; Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>139453</commentid>
    <comment_count>8</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2009-08-12 11:38:46 -0700</bug_when>
    <thetext>Landed as r47129, closing.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34546</attachid>
            <date>2009-08-11 02:51:21 -0700</date>
            <delta_ts>2009-08-11 03:04:47 -0700</delta_ts>
            <desc>removekeyring.patch</desc>
            <filename>removekeyring.patch</filename>
            <type>text/plain</type>
            <size>12486</size>
            <attacher name="Xan Lopez">xan.lopez</attacher>
            
              <data encoding="base64">RnJvbSA4NjgzMzYzYWM0ZTk0NzBkZmM1Y2JhN2Y2ZWEwMDFhNmZjYjE0ZTU0IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBYYW4gTG9wZXogPHhsb3BlekBpZ2FsaWEuY29tPgpEYXRlOiBU
dWUsIDExIEF1ZyAyMDA5IDEyOjQ4OjU3ICswMzAwClN1YmplY3Q6IFtQQVRDSF0gMjAwOS0wOC0x
MSAgWGFuIExvcGV6ICA8eGxvcGV6QGlnYWxpYS5jb20+CgogICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgoKICAgICAgICBbR1RLXSBSZW1vdmUga2V5cmluZyBvcHRpb25hbCBmZWF0
dXJlcwogICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yODE3
MwoKICAgICAgICBSZW1vdmUga2V5cmluZyBzdXBwb3J0LgoKICAgICAgICAqIEdOVW1ha2VmaWxl
LmFtOgogICAgICAgICogY29uZmlndXJlLmFjOgoKV2ViS2l0L2d0azoKCjIwMDktMDgtMTEgIFhh
biBMb3BleiAgPHhsb3BlekBpZ2FsaWEuY29tPgoKICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KCiAgICAgICAgW0dUS10gUmVtb3ZlIGtleXJpbmcgb3B0aW9uYWwgZmVhdHVyZXMK
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjgxNzMKCiAg
ICAgICAgUmVtb3ZlIGtleXJpbmcgc3VwcG9ydCBmcm9tIG91ciBjb2RlIGFuZCByZWx5IG9uIGxp
YnNvdXAgdG8gc3RvcmUKICAgICAgICB0aGUgYXV0aGVudGljYXRpb24gZGF0YSBpZiB0aGUgdXNl
ciByZXF1ZXN0cyB0aGF0IHN1cHBvcnQgaW4gdGhlaXIKICAgICAgICBhcHBsaWNhdGlvbi9saWJy
YXJ5LgoKICAgICAgICAqIHdlYmtpdC93ZWJraXRzb3VwYXV0aGRpYWxvZy5jOgogICAgICAgIChy
ZXNwb25zZV9jYWxsYmFjayk6CiAgICAgICAgKHNob3dfYXV0aF9kaWFsb2cpOgogICAgICAgIChz
ZXNzaW9uX2F1dGhlbnRpY2F0ZSk6Ci0tLQogQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8ICAgMTIgKysrKwogR05VbWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgICAg
ICAgICAgICB8ICAgIDcgLS0KIFdlYktpdC9ndGsvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAg
ICAgfCAgIDE2ICsrKysrCiBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRzb3VwYXV0aGRpYWxvZy5j
IHwgICA5NCArKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIGNvbmZpZ3VyZS5hYyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIwIC0tLS0tLQogNSBmaWxlcyBjaGFuZ2VkLCA0
MyBpbnNlcnRpb25zKCspLCAxMDYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9n
IGIvQ2hhbmdlTG9nCmluZGV4IDVlYmQ1ZWUuLmY5MGYyZjYgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxv
ZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAwOS0wOC0xMSAgWGFuIExvcGV6
ICA8eGxvcGV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgW0dUS10gUmVtb3ZlIGtleXJpbmcgb3B0aW9uYWwgZmVhdHVyZXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI4MTczCisKKyAg
ICAgICAgUmVtb3ZlIGtleXJpbmcgc3VwcG9ydC4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFt
OgorICAgICAgICAqIGNvbmZpZ3VyZS5hYzoKKwogMjAwOS0wOC0wNSAgSmFuIE1pY2hhZWwgQWxv
bnpvICA8am1hbG9uem9Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBYYW4gTG9w
ZXouCmRpZmYgLS1naXQgYS9HTlVtYWtlZmlsZS5hbSBiL0dOVW1ha2VmaWxlLmFtCmluZGV4IDQ2
ZWFmOGQuLjUwYTI2YzIgMTAwNjQ0Ci0tLSBhL0dOVW1ha2VmaWxlLmFtCisrKyBiL0dOVW1ha2Vm
aWxlLmFtCkBAIC04Nyw3ICs4Nyw2IEBAIGNvcmVraXRfY2ZsYWdzICs9IFwKIAkkKEdBSUxfQ0ZM
QUdTKSBcCiAJJChHRU9DTFVFX0NGTEFHUykgXAogCSQoR0xJQl9DRkxBR1MpIFwKLQkkKEdOT01F
S0VZUklOR19DRkxBR1MpIFwKIAkkKEdTVFJFQU1FUl9DRkxBR1MpIFwKIAkkKEdUS19DRkxBR1Mp
IFwKIAkkKEhJTERPTl9DRkxBR1MpIFwKQEAgLTI0Nyw3ICsyNDYsNiBAQCBsaWJ3ZWJraXRfMV8w
X2xhX0xJQkFERCA9IFwKIAkkKEdBSUxfTElCUykgXAogCSQoR0VPQ0xVRV9MSUJTKSBcCiAJJChH
TElCX0xJQlMpIFwKLQkkKEdOT01FS0VZUklOR19MSUJTKSBcCiAJJChHU1RSRUFNRVJfTElCUykg
XAogCSQoR1RLX0xJQlMpIFwKIAkkKEhJTERPTl9MSUJTKSBcCkBAIC0zODAsMTEgKzM3OCw2IEBA
IHdlYmtpdGd0a19jcHBmbGFncyArPSBcCiAJLUkkKHNyY2RpcikvV2ViS2l0L2d0ay93ZWJraXQg
XAogCS1JJCh0b3BfYnVpbGRkaXIpL1dlYktpdC9ndGsvd2Via2l0CiAKLWlmIFVTRV9HTk9NRUtF
WVJJTkcKLXdlYmtpdGd0a19jcHBmbGFncyArPSBcCi0JLURXVEZfVVNFX0dOT01FS0VZUklORz0x
Ci1lbmRpZgotCiB3ZWJraXRndGtfY2xlYW5maWxlcyArPSBcCiAJJCh0b3BfYnVpbGRkaXIpL1dl
YktpdC9ndGsvZG9jcy92ZXJzaW9uLnhtbCBcCiAJJCh0b3BfYnVpbGRkaXIpL1dlYktpdC9ndGsv
ZG9jcy9HTlVtYWtlZmlsZSBcCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1dl
YktpdC9ndGsvQ2hhbmdlTG9nCmluZGV4IDRkNDk4NjEuLjg3ZTkwZjkgMTAwNjQ0Ci0tLSBhL1dl
YktpdC9ndGsvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTkgQEAKKzIwMDktMDgtMTEgIFhhbiBMb3BleiAgPHhsb3BlekBpZ2FsaWEuY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtHVEtdIFJlbW92ZSBr
ZXlyaW5nIG9wdGlvbmFsIGZlYXR1cmVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yODE3MworCisgICAgICAgIFJlbW92ZSBrZXlyaW5nIHN1cHBvcnQg
ZnJvbSBvdXIgY29kZSBhbmQgcmVseSBvbiBsaWJzb3VwIHRvIHN0b3JlCisgICAgICAgIHRoZSBh
dXRoZW50aWNhdGlvbiBkYXRhIGlmIHRoZSB1c2VyIHJlcXVlc3RzIHRoYXQgc3VwcG9ydCBpbiB0
aGVpcgorICAgICAgICBhcHBsaWNhdGlvbi9saWJyYXJ5LgorCisgICAgICAgICogd2Via2l0L3dl
YmtpdHNvdXBhdXRoZGlhbG9nLmM6CisgICAgICAgIChyZXNwb25zZV9jYWxsYmFjayk6CisgICAg
ICAgIChzaG93X2F1dGhfZGlhbG9nKToKKyAgICAgICAgKHNlc3Npb25fYXV0aGVudGljYXRlKToK
KwogMjAwOS0wOC0xMCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgR1RLIGJ1aWxkIGZpeC4KZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHNv
dXBhdXRoZGlhbG9nLmMgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRzb3VwYXV0aGRpYWxvZy5j
CmluZGV4IDliYzE4OGUuLjQyOTM1NmIgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvd2Via2l0L3dl
YmtpdHNvdXBhdXRoZGlhbG9nLmMKKysrIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0c291cGF1
dGhkaWFsb2cuYwpAQCAtMjIsOSArMjIsNiBAQAogI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+
CiAjaW5jbHVkZSA8Z3RrL2d0ay5oPgogI2luY2x1ZGUgPGxpYnNvdXAvc291cC5oPgotI2lmIFVT
RShHTk9NRUtFWVJJTkcpCi0jaW5jbHVkZSA8Z25vbWUta2V5cmluZy5oPgotI2VuZGlmCiAKICNp
bmNsdWRlICJ3ZWJraXRtYXJzaGFsLmgiCiAjaW5jbHVkZSAid2Via2l0c291cGF1dGhkaWFsb2cu
aCIKQEAgLTg4LDkgKzg1LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdEF1dGhEYXRhIHsKICAg
ICBTb3VwU2Vzc2lvbkZlYXR1cmUqIG1hbmFnZXI7CiAgICAgR3RrV2lkZ2V0KiBsb2dpbkVudHJ5
OwogICAgIEd0a1dpZGdldCogcGFzc3dvcmRFbnRyeTsKLSNpZiBVU0UoR05PTUVLRVlSSU5HKQog
ICAgIEd0a1dpZGdldCogY2hlY2tCdXR0b247Ci0jZW5kaWYKICAgICBjaGFyICp1c2VybmFtZTsK
ICAgICBjaGFyICpwYXNzd29yZDsKIH0gV2ViS2l0QXV0aERhdGE7CkBAIC0xMDMsNTQgKzk4LDI0
IEBAIHN0YXRpYyB2b2lkIGZyZWVfYXV0aERhdGEoV2ViS2l0QXV0aERhdGEqIGF1dGhEYXRhKQog
ICAgIGdfc2xpY2VfZnJlZShXZWJLaXRBdXRoRGF0YSwgYXV0aERhdGEpOwogfQogCi0jaWYgVVNF
KEdOT01FS0VZUklORykKLXN0YXRpYyB2b2lkIHNldF9wYXNzd29yZF9jYWxsYmFjayhHbm9tZUtl
eXJpbmdSZXN1bHQgcmVzdWx0LCBndWludDMyIHZhbCwgZ3BvaW50ZXIgdXNlcl9kYXRhKQotewot
ICAgIC8qIER1bW15IGNhbGxiYWNrLCBnbm9tZV9rZXlyaW5nX3NldF9uZXR3b3JrX3Bhc3N3b3Jk
IGRvZXMgbm90IGFjY2VwdCBhIE5VTEwgb25lICovCi19Ci0KLXN0YXRpYyB2b2lkIHNhdmVfcGFz
c3dvcmRfY2FsbGJhY2soU291cE1lc3NhZ2UqIG1zZywgV2ViS2l0QXV0aERhdGEqIGF1dGhEYXRh
KQotewotICAgIC8qIENoZWNrIG9ubHkgZm9yIFN1Y2Nlc3Mgc3RhdHVzIGNvZGVzICgyeHgpICov
Ci0gICAgaWYgKG1zZy0+c3RhdHVzX2NvZGUgPj0gMjAwICYmIG1zZy0+c3RhdHVzX2NvZGUgPCAz
MDApIHsKLSAgICAgICAgU291cFVSSSogdXJpID0gc291cF9tZXNzYWdlX2dldF91cmkoYXV0aERh
dGEtPm1zZyk7Ci0gICAgICAgIGdub21lX2tleXJpbmdfc2V0X25ldHdvcmtfcGFzc3dvcmQoTlVM
TCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRoRGF0YS0+
dXNlcm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291
cF9hdXRoX2dldF9yZWFsbShhdXRoRGF0YS0+YXV0aCksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdXJpLT5ob3N0LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIE5VTEwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdXJpLT5zY2hlbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc291cF9hdXRoX2dldF9zY2hlbWVfbmFtZShhdXRoRGF0YS0+YXV0aCksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJpLT5wb3J0LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dGhEYXRhLT5wYXNzd29y
ZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoR25vbWVLZXly
aW5nT3BlcmF0aW9uR2V0SW50Q2FsbGJhY2spc2V0X3Bhc3N3b3JkX2NhbGxiYWNrLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7Ci0gICAgfQotICAgIGZyZWVfYXV0
aERhdGEoYXV0aERhdGEpOwotfQotI2VuZGlmCi0KIHN0YXRpYyB2b2lkIHJlc3BvbnNlX2NhbGxi
YWNrKEd0a0RpYWxvZyogZGlhbG9nLCBnaW50IHJlc3BvbnNlX2lkLCBXZWJLaXRBdXRoRGF0YSog
YXV0aERhdGEpCiB7CiAgICAgc3dpdGNoKHJlc3BvbnNlX2lkKSB7CiAgICAgY2FzZSBHVEtfUkVT
UE9OU0VfT0s6CiAgICAgICAgIGF1dGhEYXRhLT51c2VybmFtZSA9IGdfc3RyZHVwKGd0a19lbnRy
eV9nZXRfdGV4dChHVEtfRU5UUlkoYXV0aERhdGEtPmxvZ2luRW50cnkpKSk7CiAgICAgICAgIGF1
dGhEYXRhLT5wYXNzd29yZCA9IGdfc3RyZHVwKGd0a19lbnRyeV9nZXRfdGV4dChHVEtfRU5UUlko
YXV0aERhdGEtPnBhc3N3b3JkRW50cnkpKSk7CisKICAgICAgICAgc291cF9hdXRoX2F1dGhlbnRp
Y2F0ZShhdXRoRGF0YS0+YXV0aCwgYXV0aERhdGEtPnVzZXJuYW1lLCBhdXRoRGF0YS0+cGFzc3dv
cmQpOwogCi0jaWYgVVNFKEdOT01FS0VZUklORykKICAgICAgICAgaWYgKGd0a190b2dnbGVfYnV0
dG9uX2dldF9hY3RpdmUoR1RLX1RPR0dMRV9CVVRUT04oYXV0aERhdGEtPmNoZWNrQnV0dG9uKSkp
Ci0gICAgICAgICAgICBnX3NpZ25hbF9jb25uZWN0KGF1dGhEYXRhLT5tc2csICJnb3QtaGVhZGVy
cyIsIEdfQ0FMTEJBQ0soc2F2ZV9wYXNzd29yZF9jYWxsYmFjayksIGF1dGhEYXRhKTsKLSNlbmRp
ZgorICAgICAgICAgIHNvdXBfYXV0aF9zYXZlX3Bhc3N3b3JkKGF1dGhEYXRhLT5hdXRoLCBhdXRo
RGF0YS0+dXNlcm5hbWUsIGF1dGhEYXRhLT5wYXNzd29yZCk7CisKICAgICBkZWZhdWx0OgogICAg
ICAgICBicmVhazsKICAgICB9CiAKICAgICBzb3VwX3Nlc3Npb25fdW5wYXVzZV9tZXNzYWdlKGF1
dGhEYXRhLT5zZXNzaW9uLCBhdXRoRGF0YS0+bXNnKTsKLSNpZiAhVVNFKEdOT01FS0VZUklORykK
ICAgICBmcmVlX2F1dGhEYXRhKGF1dGhEYXRhKTsKLSNlbmRpZgogICAgIGd0a193aWRnZXRfZGVz
dHJveShHVEtfV0lER0VUKGRpYWxvZykpOwogfQogCkBAIC0xOTcsMTAgKzE2Miw4IEBAIHN0YXRp
YyB2b2lkIHNob3dfYXV0aF9kaWFsb2coV2ViS2l0QXV0aERhdGEqIGF1dGhEYXRhLCBjb25zdCBj
aGFyKiBsb2dpbiwgY29uc3QKICAgICBHdGtXaWRnZXQqIG1lc3NhZ2VMYWJlbDsKICAgICBjaGFy
KiBtZXNzYWdlOwogICAgIFNvdXBVUkkqIHVyaTsKLSNpZiBVU0UoR05PTUVLRVlSSU5HKQogICAg
IEd0a1dpZGdldCogcmVtZW1iZXJCb3g7CiAgICAgR3RrV2lkZ2V0KiBjaGVja0J1dHRvbjsKLSNl
bmRpZgogCiAgICAgLyogRnJvbSBHVEsrIGd0a21vdW50b3BlcmF0aW9uLmMsIG1vZGlmaWVkIGFu
ZCBzaW1wbGlmaWVkLiBMR1BMIDIgbGljZW5zZSAqLwogCkBAIC0yNzksNyArMjQyLDYgQEAgc3Rh
dGljIHZvaWQgc2hvd19hdXRoX2RpYWxvZyhXZWJLaXRBdXRoRGF0YSogYXV0aERhdGEsIGNvbnN0
IGNoYXIqIGxvZ2luLCBjb25zdAogCiAgICAgZ3RrX2VudHJ5X3NldF92aXNpYmlsaXR5KEdUS19F
TlRSWShhdXRoRGF0YS0+cGFzc3dvcmRFbnRyeSksIEZBTFNFKTsKIAotI2lmIFVTRShHTk9NRUtF
WVJJTkcpCiAgICAgcmVtZW1iZXJCb3ggPSBndGtfdmJveF9uZXcgKEZBTFNFLCA2KTsKICAgICBn
dGtfYm94X3BhY2tfc3RhcnQgKEdUS19CT1ggKHZib3gpLCByZW1lbWJlckJveCwKICAgICAgICAg
ICAgICAgICAgICAgICAgIEZBTFNFLCBGQUxTRSwgMCk7CkBAIC0yOTAsMzYgKzI1MiwxOCBAQCBz
dGF0aWMgdm9pZCBzaG93X2F1dGhfZGlhbG9nKFdlYktpdEF1dGhEYXRhKiBhdXRoRGF0YSwgY29u
c3QgY2hhciogbG9naW4sIGNvbnN0CiAgICAgZ3RrX2xhYmVsX3NldF9saW5lX3dyYXAoR1RLX0xB
QkVMKGd0a19iaW5fZ2V0X2NoaWxkKEdUS19CSU4oY2hlY2tCdXR0b24pKSksIFRSVUUpOwogICAg
IGd0a19ib3hfcGFja19zdGFydCAoR1RLX0JPWCAocmVtZW1iZXJCb3gpLCBjaGVja0J1dHRvbiwg
RkFMU0UsIEZBTFNFLCAwKTsKICAgICBhdXRoRGF0YS0+Y2hlY2tCdXR0b24gPSBjaGVja0J1dHRv
bjsKLSNlbmRpZgogCiAgICAgZ19zaWduYWxfY29ubmVjdChkaWFsb2csICJyZXNwb25zZSIsIEdf
Q0FMTEJBQ0socmVzcG9uc2VfY2FsbGJhY2spLCBhdXRoRGF0YSk7CiAgICAgZ3RrX3dpZGdldF9z
aG93X2FsbCh3aWRnZXQpOwogfQogCi0jaWYgVVNFKEdOT01FS0VZUklORykKLXN0YXRpYyB2b2lk
IGZpbmRfcGFzc3dvcmRfY2FsbGJhY2soR25vbWVLZXlyaW5nUmVzdWx0IHJlc3VsdCwgR0xpc3Qq
IGxpc3QsIFdlYktpdEF1dGhEYXRhKiBhdXRoRGF0YSkKLXsKLSAgICBHTGlzdCogcDsKLSAgICBj
b25zdCBjaGFyKiBsb2dpbiA9IE5VTEw7Ci0gICAgY29uc3QgY2hhciogcGFzc3dvcmQgPSBOVUxM
OwotCi0gICAgZm9yIChwID0gbGlzdDsgcDsgcCA9IHAtPm5leHQpIHsKLSAgICAgICAgLyogRklY
TUU6IHN1cHBvcnQgbXVsdGlwbGUgbG9naW5zL3Bhc3N3b3JkcyA/ICovCi0gICAgICAgIEdub21l
S2V5cmluZ05ldHdvcmtQYXNzd29yZERhdGEqIGRhdGEgPSAoR25vbWVLZXlyaW5nTmV0d29ya1Bh
c3N3b3JkRGF0YSopcC0+ZGF0YTsKLSAgICAgICAgbG9naW4gPSBkYXRhLT51c2VyOwotICAgICAg
ICBwYXNzd29yZCA9IGRhdGEtPnBhc3N3b3JkOwotICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAg
ICBzaG93X2F1dGhfZGlhbG9nKGF1dGhEYXRhLCBsb2dpbiwgcGFzc3dvcmQpOwotfQotI2VuZGlm
Ci0KIHN0YXRpYyB2b2lkIHNlc3Npb25fYXV0aGVudGljYXRlKFNvdXBTZXNzaW9uKiBzZXNzaW9u
LCBTb3VwTWVzc2FnZSogbXNnLCBTb3VwQXV0aCogYXV0aCwgZ2Jvb2xlYW4gcmV0cnlpbmcsIGdw
b2ludGVyIHVzZXJfZGF0YSkKIHsKICAgICBTb3VwVVJJKiB1cmk7CiAgICAgV2ViS2l0QXV0aERh
dGEqIGF1dGhEYXRhOwogICAgIFNvdXBTZXNzaW9uRmVhdHVyZSogbWFuYWdlciA9IChTb3VwU2Vz
c2lvbkZlYXR1cmUqKXVzZXJfZGF0YTsKKyAgICBHU0xpc3QgKnVzZXJzOworICAgIGNvbnN0IGNo
YXIgKmxvZ2luLCAqcGFzc3dvcmQ7CiAKICAgICBzb3VwX3Nlc3Npb25fcGF1c2VfbWVzc2FnZShz
ZXNzaW9uLCBtc2cpOwogICAgIC8qIFdlIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBtZXNzYWdlIHN0
aWNrcyBhcm91bmQgd2hlbiBwYXVzaW5nIGl0ICovCkBAIC0zMzIsMjQgKzI3NiwxNiBAQCBzdGF0
aWMgdm9pZCBzZXNzaW9uX2F1dGhlbnRpY2F0ZShTb3VwU2Vzc2lvbiogc2Vzc2lvbiwgU291cE1l
c3NhZ2UqIG1zZywgU291cEF1dAogICAgIGF1dGhEYXRhLT5zZXNzaW9uID0gc2Vzc2lvbjsKICAg
ICBhdXRoRGF0YS0+bWFuYWdlciA9IG1hbmFnZXI7CiAKLSAgICAvKgotICAgICAqIElmIHdlIGhh
dmUgZ25vbWUta2V5cmluZyBsZXQncyB0cnkgdG8gZmluZCB0aGUgcGFzc3dvcmQgZmlyc3QgaW4g
dGhlIHJpbmcuCi0gICAgICogT3RoZXJ3aXNlIGp1c3Qgc2hvdyB0aGUgZGlhbG9nIHN0cmFpZ2h0
IGF3YXkKLSAgICAgKi8KLSNpZiBVU0UoR05PTUVLRVlSSU5HKQotICAgIGdub21lX2tleXJpbmdf
ZmluZF9uZXR3b3JrX3Bhc3N3b3JkKE5VTEwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc291cF9hdXRoX2dldF9yZWFsbShhdXRoKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1cmktPmhvc3QsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgTlVMTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1cmktPnNjaGVtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzb3VwX2F1dGhfZ2V0X3NjaGVtZV9uYW1lKGF1dGgpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVyaS0+cG9ydCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAoR25vbWVLZXlyaW5nT3BlcmF0aW9uR2V0TGlzdENhbGxiYWNrKWZp
bmRfcGFzc3dvcmRfY2FsbGJhY2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYXV0aERhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
TlVMTCk7Ci0jZWxzZQotICAgIHNob3dfYXV0aF9kaWFsb2coYXV0aERhdGEsIE5VTEwsIE5VTEwp
OwotI2VuZGlmCisgICAgbG9naW4gPSBwYXNzd29yZCA9IE5VTEw7CisKKyAgICB1c2VycyA9IHNv
dXBfYXV0aF9nZXRfc2F2ZWRfdXNlcnMoYXV0aCk7CisgICAgaWYgKHVzZXJzKSB7CisgICAgICBs
b2dpbiA9IHVzZXJzLT5kYXRhOworICAgICAgcGFzc3dvcmQgPSBzb3VwX2F1dGhfZ2V0X3NhdmVk
X3Bhc3N3b3JkKGF1dGgsIGxvZ2luKTsKKyAgICAgIHNvdXBfYXV0aF9mcmVlX3NhdmVkX3VzZXJz
KGF1dGgsIHVzZXJzKTsKKyAgICB9CisKKyAgICBzaG93X2F1dGhfZGlhbG9nKGF1dGhEYXRhLCBs
b2dpbiwgcGFzc3dvcmQpOwogfQogCiBzdGF0aWMgdm9pZCBhdHRhY2goU291cFNlc3Npb25GZWF0
dXJlKiBtYW5hZ2VyLCBTb3VwU2Vzc2lvbiogc2Vzc2lvbikKZGlmZiAtLWdpdCBhL2NvbmZpZ3Vy
ZS5hYyBiL2NvbmZpZ3VyZS5hYwppbmRleCBmYTZhZjAyLi40M2Y0NWUyIDEwMDY0NAotLS0gYS9j
b25maWd1cmUuYWMKKysrIGIvY29uZmlndXJlLmFjCkBAIC0yMDQsNyArMjA0LDYgQEAgR1RLX1JF
UVVJUkVEX1ZFUlNJT049Mi4xMAogTElCWFNMVF9SRVFVSVJFRF9WRVJTSU9OPTEuMS43CiBTUUxJ
VEVfUkVRVUlSRURfVkVSU0lPTj0zLjAKIEdTVFJFQU1FUl9SRVFVSVJFRF9WRVJTSU9OPTAuMTAK
LUdOT01FX0tFWVJJTkdfUkVRVUlSRURfVkVSU0lPTj0yLjI2LjAKIEVOQ0hBTlRfUkVRVUlSRURf
VkVSU0lPTj0wLjIyCiBHQUlMX1JFUVVJUkVEX1ZFUlNJT049MS44CiAKQEAgLTM5NiwxNCArMzk1
LDYgQEAgQUNfQVJHX0VOQUJMRShnZW9sb2NhdGlvbiwKICAgICAgICAgICAgICAgW10sW2VuYWJs
ZV9nZW9sb2NhdGlvbj0ibm8iXSkKIEFDX01TR19SRVNVTFQoWyRlbmFibGVfZ2VvbG9jYXRpb25d
KQogCi0jIGNoZWNrIHdoZXRoZXIgdG8gZW5hYmxlIGdub21la2V5cmluZyBzdXBwb3J0Ci1BQ19N
U0dfQ0hFQ0tJTkcoW3doZXRoZXIgdG8gZW5hYmxlIGdub21la2V5cmluZyBzdXBwb3J0XSkKLUFD
X0FSR19FTkFCTEUoZ25vbWVrZXlyaW5nLAotICAgICAgICAgICAgICBBQ19IRUxQX1NUUklORyhb
LS1lbmFibGUtZ25vbWVrZXlyaW5nXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Vu
YWJsZSBzdXBwb3J0IGZvciBnbm9tZWtleXJpbmcgW2RlZmF1bHQ9bm9dXSksCi0gICAgICAgICAg
ICAgIFtdLFtlbmFibGVfZ25vbWVrZXlyaW5nPSJubyJdKQotQUNfTVNHX1JFU1VMVChbJGVuYWJs
ZV9nbm9tZWtleXJpbmddKQotCiAjIGNoZWNrIHdoZXRoZXIgdG8gZW5hYmxlIFNWRyBzdXBwb3J0
CiBBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgdG8gZW5hYmxlIFNWRyBzdXBwb3J0XSkKIEFDX0FS
R19FTkFCTEUoc3ZnLApAQCAtNTk2LDEzICs1ODcsNiBAQCBQS0dfQ0hFQ0tfTU9EVUxFUyhbTElC
U09VUF0sCiBBQ19TVUJTVChbTElCU09VUF9DRkxBR1NdKQogQUNfU1VCU1QoW0xJQlNPVVBfTElC
U10pCiAKLWlmIHRlc3QgIiRlbmFibGVfZ25vbWVrZXlyaW5nIiA9ICJ5ZXMiOyB0aGVuCi0gICBQ
S0dfQ0hFQ0tfTU9EVUxFUyhbR05PTUVLRVlSSU5HXSwKLSAgICAgICAgICAgICAgICAgICAgIFtn
bm9tZS1rZXlyaW5nLTEgPj0gJEdOT01FX0tFWVJJTkdfUkVRVUlSRURfVkVSU0lPTl0pCi0gICBB
Q19TVUJTVChbR05PTUVLRVlSSU5HX0NGTEFHU10pCi0gICBBQ19TVUJTVChbR05PTUVLRVlSSU5H
X0xJQlNdKQotZmkKLQogIyBjaGVjayBpZiBGcmVlVHlwZS9Gb250Q29uZmlnIGFyZSBhdmFpbGFi
bGUKIGlmIHRlc3QgIiR3aXRoX2ZvbnRfYmFja2VuZCIgPSAiZnJlZXR5cGUiOyB0aGVuCiAgICBp
ZiB0ZXN0ICIkd2l0aF90YXJnZXQiID0gImRpcmVjdGZiIjsgdGhlbgpAQCAtNjg2LDkgKzY3MCw2
IEBAIEFNX0NPTkRJVElPTkFMKFtUQVJHRVRfRElSRUNURkJdLCBbdGVzdCAiJHdpdGhfdGFyZ2V0
IiA9ICJkaXJlY3RmYiJdKQogQU1fQ09ORElUSU9OQUwoW1VTRV9JQ1VfVU5JQ09ERV0sIFt0ZXN0
ICIkd2l0aF91bmljb2RlX2JhY2tlbmQiID0gImljdSJdKQogQU1fQ09ORElUSU9OQUwoW1VTRV9H
TElCX1VOSUNPREVdLCBbdGVzdCAiJHdpdGhfdW5pY29kZV9iYWNrZW5kIiA9ICJnbGliIl0pCiAK
LSMgQXV0aCBiYWNrZW5kIGNvbmRpdGlvbmFscwotQU1fQ09ORElUSU9OQUwoW1VTRV9HTk9NRUtF
WVJJTkddLCBbdGVzdCAiJGVuYWJsZV9nbm9tZWtleXJpbmciID0gInllcyJdKQotCiAjIEZvbnQg
YmFja2VuZCBjb25kaXRpb25hbHMKIEFNX0NPTkRJVElPTkFMKFtVU0VfRlJFRVRZUEVdLCBbdGVz
dCAiJHdpdGhfZm9udF9iYWNrZW5kIiA9ICJmcmVldHlwZSJdKQogQU1fQ09ORElUSU9OQUwoW1VT
RV9QQU5HT10sIFt0ZXN0ICIkd2l0aF9mb250X2JhY2tlbmQiID0gInBhbmdvIl0pCkBAIC03NTEs
NyArNzMyLDYgQEAgRmVhdHVyZXM6CiAgRGFzaGJvYXJkIHN1cHBvcnQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgOiAkZW5hYmxlX2Rhc2hib2FyZF9zdXBwb3J0CiAgRmls
dGVycyBzdXBwb3J0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAk
ZW5hYmxlX2ZpbHRlcnMKICBHZW9sb2NhdGlvbiBzdXBwb3J0ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA6ICRlbmFibGVfZ2VvbG9jYXRpb24KLSBHTk9NRSBLZXlyaW5nIHN1
cHBvcnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICRlbmFibGVfZ25vbWVr
ZXlyaW5nCiAgSmF2YVNjcmlwdCBkZWJ1Z2dlci9wcm9maWxlciBzdXBwb3J0ICAgICAgICAgICAg
ICAgICAgICAgOiAkZW5hYmxlX2phdmFzY3JpcHRfZGVidWdnZXIKICBIVE1MNSBvZmZsaW5lIHdl
YiBhcHBsaWNhdGlvbnMgc3VwcG9ydCAgICAgICAgICAgICAgICAgICA6ICRlbmFibGVfb2ZmbGlu
ZV93ZWJfYXBwbGljYXRpb25zCiAgSFRNTDUgY2hhbm5lbCBtZXNzYWdpbmcgc3VwcG9ydCAgICAg
ICAgICAgICAgICAgICAgICAgICAgOiAkZW5hYmxlX2NoYW5uZWxfbWVzc2FnaW5nCi0tIAoxLjYu
NAoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34547</attachid>
            <date>2009-08-11 03:04:47 -0700</date>
            <delta_ts>2009-08-12 00:44:42 -0700</delta_ts>
            <desc>removekeyringv2.patch</desc>
            <filename>removekeyringv2.patch</filename>
            <type>text/plain</type>
            <size>12778</size>
            <attacher name="Xan Lopez">xan.lopez</attacher>
            
              <data encoding="base64">RnJvbSA1Y2FlMTYxYWM0MDhlMTE4ZDJmNDgxMTkwNTAyNGYzMDQzNTRkOWJmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBYYW4gTG9wZXogPHhsb3BlekBpZ2FsaWEuY29tPgpEYXRlOiBU
dWUsIDExIEF1ZyAyMDA5IDEyOjQ4OjU3ICswMzAwClN1YmplY3Q6IFtQQVRDSF0gMjAwOS0wOC0x
MSAgWGFuIExvcGV6ICA8eGxvcGV6QGlnYWxpYS5jb20+CgogICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgoKICAgICAgICBbR1RLXSBSZW1vdmUga2V5cmluZyBvcHRpb25hbCBmZWF0
dXJlcwogICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yODE3
MwoKICAgICAgICBSZW1vdmUga2V5cmluZyBzdXBwb3J0LgoKICAgICAgICAqIEdOVW1ha2VmaWxl
LmFtOgogICAgICAgICogY29uZmlndXJlLmFjOgoKV2ViS2l0L2d0azoKCjIwMDktMDgtMTEgIFhh
biBMb3BleiAgPHhsb3BlekBpZ2FsaWEuY29tPgoKICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KCiAgICAgICAgW0dUS10gUmVtb3ZlIGtleXJpbmcgb3B0aW9uYWwgZmVhdHVyZXMK
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjgxNzMKCiAg
ICAgICAgUmVtb3ZlIGtleXJpbmcgc3VwcG9ydCBmcm9tIG91ciBjb2RlIGFuZCByZWx5IG9uIGxp
YnNvdXAgdG8gc3RvcmUKICAgICAgICB0aGUgYXV0aGVudGljYXRpb24gZGF0YSBpZiB0aGUgdXNl
ciByZXF1ZXN0cyB0aGF0IHN1cHBvcnQgaW4gdGhlaXIKICAgICAgICBhcHBsaWNhdGlvbi9saWJy
YXJ5LgoKICAgICAgICAqIHdlYmtpdC93ZWJraXRzb3VwYXV0aGRpYWxvZy5jOgogICAgICAgIChy
ZXNwb25zZV9jYWxsYmFjayk6CiAgICAgICAgKHNob3dfYXV0aF9kaWFsb2cpOgogICAgICAgIChz
ZXNzaW9uX2F1dGhlbnRpY2F0ZSk6Ci0tLQogQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8ICAgMTIgKysrKwogR05VbWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgICAg
ICAgICAgICB8ICAgIDcgLS0KIFdlYktpdC9ndGsvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAg
ICAgfCAgIDE2ICsrKysrCiBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRzb3VwYXV0aGRpYWxvZy5j
IHwgICA5OCArKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogY29uZmlndXJlLmFjICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB8ICAgMjAgLS0tLS0tCiA1IGZpbGVzIGNoYW5nZWQsIDUy
IGluc2VydGlvbnMoKyksIDEwMSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cg
Yi9DaGFuZ2VMb2cKaW5kZXggNWViZDVlZS4uZjkwZjJmNiAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9n
CisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDA5LTA4LTExICBYYW4gTG9wZXog
IDx4bG9wZXpAaWdhbGlhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBbR1RLXSBSZW1vdmUga2V5cmluZyBvcHRpb25hbCBmZWF0dXJlcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjgxNzMKKworICAg
ICAgICBSZW1vdmUga2V5cmluZyBzdXBwb3J0LgorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06
CisgICAgICAgICogY29uZmlndXJlLmFjOgorCiAyMDA5LTA4LTA1ICBKYW4gTWljaGFlbCBBbG9u
em8gIDxqbWFsb256b0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFhhbiBMb3Bl
ei4KZGlmZiAtLWdpdCBhL0dOVW1ha2VmaWxlLmFtIGIvR05VbWFrZWZpbGUuYW0KaW5kZXggNDZl
YWY4ZC4uNTBhMjZjMiAxMDA2NDQKLS0tIGEvR05VbWFrZWZpbGUuYW0KKysrIGIvR05VbWFrZWZp
bGUuYW0KQEAgLTg3LDcgKzg3LDYgQEAgY29yZWtpdF9jZmxhZ3MgKz0gXAogCSQoR0FJTF9DRkxB
R1MpIFwKIAkkKEdFT0NMVUVfQ0ZMQUdTKSBcCiAJJChHTElCX0NGTEFHUykgXAotCSQoR05PTUVL
RVlSSU5HX0NGTEFHUykgXAogCSQoR1NUUkVBTUVSX0NGTEFHUykgXAogCSQoR1RLX0NGTEFHUykg
XAogCSQoSElMRE9OX0NGTEFHUykgXApAQCAtMjQ3LDcgKzI0Niw2IEBAIGxpYndlYmtpdF8xXzBf
bGFfTElCQUREID0gXAogCSQoR0FJTF9MSUJTKSBcCiAJJChHRU9DTFVFX0xJQlMpIFwKIAkkKEdM
SUJfTElCUykgXAotCSQoR05PTUVLRVlSSU5HX0xJQlMpIFwKIAkkKEdTVFJFQU1FUl9MSUJTKSBc
CiAJJChHVEtfTElCUykgXAogCSQoSElMRE9OX0xJQlMpIFwKQEAgLTM4MCwxMSArMzc4LDYgQEAg
d2Via2l0Z3RrX2NwcGZsYWdzICs9IFwKIAktSSQoc3JjZGlyKS9XZWJLaXQvZ3RrL3dlYmtpdCBc
CiAJLUkkKHRvcF9idWlsZGRpcikvV2ViS2l0L2d0ay93ZWJraXQKIAotaWYgVVNFX0dOT01FS0VZ
UklORwotd2Via2l0Z3RrX2NwcGZsYWdzICs9IFwKLQktRFdURl9VU0VfR05PTUVLRVlSSU5HPTEK
LWVuZGlmCi0KIHdlYmtpdGd0a19jbGVhbmZpbGVzICs9IFwKIAkkKHRvcF9idWlsZGRpcikvV2Vi
S2l0L2d0ay9kb2NzL3ZlcnNpb24ueG1sIFwKIAkkKHRvcF9idWlsZGRpcikvV2ViS2l0L2d0ay9k
b2NzL0dOVW1ha2VmaWxlIFwKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvV2Vi
S2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggNGQ0OTg2MS4uODdlOTBmOSAxMDA2NDQKLS0tIGEvV2Vi
S2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
OSBAQAorMjAwOS0wOC0xMSAgWGFuIExvcGV6ICA8eGxvcGV6QGlnYWxpYS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0dUS10gUmVtb3ZlIGtl
eXJpbmcgb3B0aW9uYWwgZmVhdHVyZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTI4MTczCisKKyAgICAgICAgUmVtb3ZlIGtleXJpbmcgc3VwcG9ydCBm
cm9tIG91ciBjb2RlIGFuZCByZWx5IG9uIGxpYnNvdXAgdG8gc3RvcmUKKyAgICAgICAgdGhlIGF1
dGhlbnRpY2F0aW9uIGRhdGEgaWYgdGhlIHVzZXIgcmVxdWVzdHMgdGhhdCBzdXBwb3J0IGluIHRo
ZWlyCisgICAgICAgIGFwcGxpY2F0aW9uL2xpYnJhcnkuCisKKyAgICAgICAgKiB3ZWJraXQvd2Vi
a2l0c291cGF1dGhkaWFsb2cuYzoKKyAgICAgICAgKHJlc3BvbnNlX2NhbGxiYWNrKToKKyAgICAg
ICAgKHNob3dfYXV0aF9kaWFsb2cpOgorICAgICAgICAoc2Vzc2lvbl9hdXRoZW50aWNhdGUpOgor
CiAyMDA5LTA4LTEwICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAg
ICBHVEsgYnVpbGQgZml4LgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0c291
cGF1dGhkaWFsb2cuYyBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHNvdXBhdXRoZGlhbG9nLmMK
aW5kZXggOWJjMTg4ZS4uNjM2M2MxOSAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0c291cGF1dGhkaWFsb2cuYworKysgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRzb3VwYXV0
aGRpYWxvZy5jCkBAIC0yMiw5ICsyMiw2IEBACiAjaW5jbHVkZSA8Z2xpYi9naTE4bi1saWIuaD4K
ICNpbmNsdWRlIDxndGsvZ3RrLmg+CiAjaW5jbHVkZSA8bGlic291cC9zb3VwLmg+Ci0jaWYgVVNF
KEdOT01FS0VZUklORykKLSNpbmNsdWRlIDxnbm9tZS1rZXlyaW5nLmg+Ci0jZW5kaWYKIAogI2lu
Y2x1ZGUgIndlYmtpdG1hcnNoYWwuaCIKICNpbmNsdWRlICJ3ZWJraXRzb3VwYXV0aGRpYWxvZy5o
IgpAQCAtODgsOSArODUsNyBAQCB0eXBlZGVmIHN0cnVjdCBfV2ViS2l0QXV0aERhdGEgewogICAg
IFNvdXBTZXNzaW9uRmVhdHVyZSogbWFuYWdlcjsKICAgICBHdGtXaWRnZXQqIGxvZ2luRW50cnk7
CiAgICAgR3RrV2lkZ2V0KiBwYXNzd29yZEVudHJ5OwotI2lmIFVTRShHTk9NRUtFWVJJTkcpCiAg
ICAgR3RrV2lkZ2V0KiBjaGVja0J1dHRvbjsKLSNlbmRpZgogICAgIGNoYXIgKnVzZXJuYW1lOwog
ICAgIGNoYXIgKnBhc3N3b3JkOwogfSBXZWJLaXRBdXRoRGF0YTsKQEAgLTEwMyw1NCArOTgsMzgg
QEAgc3RhdGljIHZvaWQgZnJlZV9hdXRoRGF0YShXZWJLaXRBdXRoRGF0YSogYXV0aERhdGEpCiAg
ICAgZ19zbGljZV9mcmVlKFdlYktpdEF1dGhEYXRhLCBhdXRoRGF0YSk7CiB9CiAKLSNpZiBVU0Uo
R05PTUVLRVlSSU5HKQotc3RhdGljIHZvaWQgc2V0X3Bhc3N3b3JkX2NhbGxiYWNrKEdub21lS2V5
cmluZ1Jlc3VsdCByZXN1bHQsIGd1aW50MzIgdmFsLCBncG9pbnRlciB1c2VyX2RhdGEpCi17Ci0g
ICAgLyogRHVtbXkgY2FsbGJhY2ssIGdub21lX2tleXJpbmdfc2V0X25ldHdvcmtfcGFzc3dvcmQg
ZG9lcyBub3QgYWNjZXB0IGEgTlVMTCBvbmUgKi8KLX0KLQogc3RhdGljIHZvaWQgc2F2ZV9wYXNz
d29yZF9jYWxsYmFjayhTb3VwTWVzc2FnZSogbXNnLCBXZWJLaXRBdXRoRGF0YSogYXV0aERhdGEp
CiB7CiAgICAgLyogQ2hlY2sgb25seSBmb3IgU3VjY2VzcyBzdGF0dXMgY29kZXMgKDJ4eCkgKi8K
LSAgICBpZiAobXNnLT5zdGF0dXNfY29kZSA+PSAyMDAgJiYgbXNnLT5zdGF0dXNfY29kZSA8IDMw
MCkgewotICAgICAgICBTb3VwVVJJKiB1cmkgPSBzb3VwX21lc3NhZ2VfZ2V0X3VyaShhdXRoRGF0
YS0+bXNnKTsKLSAgICAgICAgZ25vbWVfa2V5cmluZ19zZXRfbmV0d29ya19wYXNzd29yZChOVUxM
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dGhEYXRhLT51
c2VybmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3Vw
X2F1dGhfZ2V0X3JlYWxtKGF1dGhEYXRhLT5hdXRoKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1cmktPmhvc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgTlVMTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1cmktPnNjaGVtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzb3VwX2F1dGhfZ2V0X3NjaGVtZV9uYW1lKGF1dGhEYXRhLT5hdXRoKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmktPnBvcnQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0aERhdGEtPnBhc3N3b3Jk
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChHbm9tZUtleXJp
bmdPcGVyYXRpb25HZXRJbnRDYWxsYmFjaylzZXRfcGFzc3dvcmRfY2FsbGJhY2ssCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKLSAgICB9CisgICAgaWYgKG1zZy0+
c3RhdHVzX2NvZGUgPj0gMjAwICYmIG1zZy0+c3RhdHVzX2NvZGUgPCAzMDApCisgICAgICAgIHNv
dXBfYXV0aF9zYXZlX3Bhc3N3b3JkKGF1dGhEYXRhLT5hdXRoLCBhdXRoRGF0YS0+dXNlcm5hbWUs
IGF1dGhEYXRhLT5wYXNzd29yZCk7CisKICAgICBmcmVlX2F1dGhEYXRhKGF1dGhEYXRhKTsKIH0K
LSNlbmRpZgogCiBzdGF0aWMgdm9pZCByZXNwb25zZV9jYWxsYmFjayhHdGtEaWFsb2cqIGRpYWxv
ZywgZ2ludCByZXNwb25zZV9pZCwgV2ViS2l0QXV0aERhdGEqIGF1dGhEYXRhKQogeworICAgIGdi
b29sZWFuIGZyZWVBdXRoRGF0YSA9IFRSVUU7CisKICAgICBzd2l0Y2gocmVzcG9uc2VfaWQpIHsK
ICAgICBjYXNlIEdUS19SRVNQT05TRV9PSzoKICAgICAgICAgYXV0aERhdGEtPnVzZXJuYW1lID0g
Z19zdHJkdXAoZ3RrX2VudHJ5X2dldF90ZXh0KEdUS19FTlRSWShhdXRoRGF0YS0+bG9naW5FbnRy
eSkpKTsKICAgICAgICAgYXV0aERhdGEtPnBhc3N3b3JkID0gZ19zdHJkdXAoZ3RrX2VudHJ5X2dl
dF90ZXh0KEdUS19FTlRSWShhdXRoRGF0YS0+cGFzc3dvcmRFbnRyeSkpKTsKKwogICAgICAgICBz
b3VwX2F1dGhfYXV0aGVudGljYXRlKGF1dGhEYXRhLT5hdXRoLCBhdXRoRGF0YS0+dXNlcm5hbWUs
IGF1dGhEYXRhLT5wYXNzd29yZCk7CiAKLSNpZiBVU0UoR05PTUVLRVlSSU5HKQotICAgICAgICBp
ZiAoZ3RrX3RvZ2dsZV9idXR0b25fZ2V0X2FjdGl2ZShHVEtfVE9HR0xFX0JVVFRPTihhdXRoRGF0
YS0+Y2hlY2tCdXR0b24pKSkKKyAgICAgICAgaWYgKGd0a190b2dnbGVfYnV0dG9uX2dldF9hY3Rp
dmUoR1RLX1RPR0dMRV9CVVRUT04oYXV0aERhdGEtPmNoZWNrQnV0dG9uKSkpIHsKICAgICAgICAg
ICAgIGdfc2lnbmFsX2Nvbm5lY3QoYXV0aERhdGEtPm1zZywgImdvdC1oZWFkZXJzIiwgR19DQUxM
QkFDSyhzYXZlX3Bhc3N3b3JkX2NhbGxiYWNrKSwgYXV0aERhdGEpOwotI2VuZGlmCisgICAgICAg
ICAgICBmcmVlQXV0aERhdGEgPSBGQUxTRTsKKyAgICAgICAgfQorCiAgICAgZGVmYXVsdDoKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgc291cF9zZXNzaW9uX3VucGF1c2VfbWVzc2FnZShh
dXRoRGF0YS0+c2Vzc2lvbiwgYXV0aERhdGEtPm1zZyk7Ci0jaWYgIVVTRShHTk9NRUtFWVJJTkcp
Ci0gICAgZnJlZV9hdXRoRGF0YShhdXRoRGF0YSk7Ci0jZW5kaWYKKyAgICBpZiAoZnJlZUF1dGhE
YXRhKQorICAgICAgICBmcmVlX2F1dGhEYXRhKGF1dGhEYXRhKTsKICAgICBndGtfd2lkZ2V0X2Rl
c3Ryb3koR1RLX1dJREdFVChkaWFsb2cpKTsKIH0KIApAQCAtMTk3LDEwICsxNzYsOCBAQCBzdGF0
aWMgdm9pZCBzaG93X2F1dGhfZGlhbG9nKFdlYktpdEF1dGhEYXRhKiBhdXRoRGF0YSwgY29uc3Qg
Y2hhciogbG9naW4sIGNvbnN0CiAgICAgR3RrV2lkZ2V0KiBtZXNzYWdlTGFiZWw7CiAgICAgY2hh
ciogbWVzc2FnZTsKICAgICBTb3VwVVJJKiB1cmk7Ci0jaWYgVVNFKEdOT01FS0VZUklORykKICAg
ICBHdGtXaWRnZXQqIHJlbWVtYmVyQm94OwogICAgIEd0a1dpZGdldCogY2hlY2tCdXR0b247Ci0j
ZW5kaWYKIAogICAgIC8qIEZyb20gR1RLKyBndGttb3VudG9wZXJhdGlvbi5jLCBtb2RpZmllZCBh
bmQgc2ltcGxpZmllZC4gTEdQTCAyIGxpY2Vuc2UgKi8KIApAQCAtMjc5LDcgKzI1Niw2IEBAIHN0
YXRpYyB2b2lkIHNob3dfYXV0aF9kaWFsb2coV2ViS2l0QXV0aERhdGEqIGF1dGhEYXRhLCBjb25z
dCBjaGFyKiBsb2dpbiwgY29uc3QKIAogICAgIGd0a19lbnRyeV9zZXRfdmlzaWJpbGl0eShHVEtf
RU5UUlkoYXV0aERhdGEtPnBhc3N3b3JkRW50cnkpLCBGQUxTRSk7CiAKLSNpZiBVU0UoR05PTUVL
RVlSSU5HKQogICAgIHJlbWVtYmVyQm94ID0gZ3RrX3Zib3hfbmV3IChGQUxTRSwgNik7CiAgICAg
Z3RrX2JveF9wYWNrX3N0YXJ0IChHVEtfQk9YICh2Ym94KSwgcmVtZW1iZXJCb3gsCiAgICAgICAg
ICAgICAgICAgICAgICAgICBGQUxTRSwgRkFMU0UsIDApOwpAQCAtMjkwLDM2ICsyNjYsMTggQEAg
c3RhdGljIHZvaWQgc2hvd19hdXRoX2RpYWxvZyhXZWJLaXRBdXRoRGF0YSogYXV0aERhdGEsIGNv
bnN0IGNoYXIqIGxvZ2luLCBjb25zdAogICAgIGd0a19sYWJlbF9zZXRfbGluZV93cmFwKEdUS19M
QUJFTChndGtfYmluX2dldF9jaGlsZChHVEtfQklOKGNoZWNrQnV0dG9uKSkpLCBUUlVFKTsKICAg
ICBndGtfYm94X3BhY2tfc3RhcnQgKEdUS19CT1ggKHJlbWVtYmVyQm94KSwgY2hlY2tCdXR0b24s
IEZBTFNFLCBGQUxTRSwgMCk7CiAgICAgYXV0aERhdGEtPmNoZWNrQnV0dG9uID0gY2hlY2tCdXR0
b247Ci0jZW5kaWYKIAogICAgIGdfc2lnbmFsX2Nvbm5lY3QoZGlhbG9nLCAicmVzcG9uc2UiLCBH
X0NBTExCQUNLKHJlc3BvbnNlX2NhbGxiYWNrKSwgYXV0aERhdGEpOwogICAgIGd0a193aWRnZXRf
c2hvd19hbGwod2lkZ2V0KTsKIH0KIAotI2lmIFVTRShHTk9NRUtFWVJJTkcpCi1zdGF0aWMgdm9p
ZCBmaW5kX3Bhc3N3b3JkX2NhbGxiYWNrKEdub21lS2V5cmluZ1Jlc3VsdCByZXN1bHQsIEdMaXN0
KiBsaXN0LCBXZWJLaXRBdXRoRGF0YSogYXV0aERhdGEpCi17Ci0gICAgR0xpc3QqIHA7Ci0gICAg
Y29uc3QgY2hhciogbG9naW4gPSBOVUxMOwotICAgIGNvbnN0IGNoYXIqIHBhc3N3b3JkID0gTlVM
TDsKLQotICAgIGZvciAocCA9IGxpc3Q7IHA7IHAgPSBwLT5uZXh0KSB7Ci0gICAgICAgIC8qIEZJ
WE1FOiBzdXBwb3J0IG11bHRpcGxlIGxvZ2lucy9wYXNzd29yZHMgPyAqLwotICAgICAgICBHbm9t
ZUtleXJpbmdOZXR3b3JrUGFzc3dvcmREYXRhKiBkYXRhID0gKEdub21lS2V5cmluZ05ldHdvcmtQ
YXNzd29yZERhdGEqKXAtPmRhdGE7Ci0gICAgICAgIGxvZ2luID0gZGF0YS0+dXNlcjsKLSAgICAg
ICAgcGFzc3dvcmQgPSBkYXRhLT5wYXNzd29yZDsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0g
ICAgc2hvd19hdXRoX2RpYWxvZyhhdXRoRGF0YSwgbG9naW4sIHBhc3N3b3JkKTsKLX0KLSNlbmRp
ZgotCiBzdGF0aWMgdm9pZCBzZXNzaW9uX2F1dGhlbnRpY2F0ZShTb3VwU2Vzc2lvbiogc2Vzc2lv
biwgU291cE1lc3NhZ2UqIG1zZywgU291cEF1dGgqIGF1dGgsIGdib29sZWFuIHJldHJ5aW5nLCBn
cG9pbnRlciB1c2VyX2RhdGEpCiB7CiAgICAgU291cFVSSSogdXJpOwogICAgIFdlYktpdEF1dGhE
YXRhKiBhdXRoRGF0YTsKICAgICBTb3VwU2Vzc2lvbkZlYXR1cmUqIG1hbmFnZXIgPSAoU291cFNl
c3Npb25GZWF0dXJlKil1c2VyX2RhdGE7CisgICAgR1NMaXN0ICp1c2VyczsKKyAgICBjb25zdCBj
aGFyICpsb2dpbiwgKnBhc3N3b3JkOwogCiAgICAgc291cF9zZXNzaW9uX3BhdXNlX21lc3NhZ2Uo
c2Vzc2lvbiwgbXNnKTsKICAgICAvKiBXZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgbWVzc2FnZSBz
dGlja3MgYXJvdW5kIHdoZW4gcGF1c2luZyBpdCAqLwpAQCAtMzMyLDI0ICsyOTAsMTYgQEAgc3Rh
dGljIHZvaWQgc2Vzc2lvbl9hdXRoZW50aWNhdGUoU291cFNlc3Npb24qIHNlc3Npb24sIFNvdXBN
ZXNzYWdlKiBtc2csIFNvdXBBdXQKICAgICBhdXRoRGF0YS0+c2Vzc2lvbiA9IHNlc3Npb247CiAg
ICAgYXV0aERhdGEtPm1hbmFnZXIgPSBtYW5hZ2VyOwogCi0gICAgLyoKLSAgICAgKiBJZiB3ZSBo
YXZlIGdub21lLWtleXJpbmcgbGV0J3MgdHJ5IHRvIGZpbmQgdGhlIHBhc3N3b3JkIGZpcnN0IGlu
IHRoZSByaW5nLgotICAgICAqIE90aGVyd2lzZSBqdXN0IHNob3cgdGhlIGRpYWxvZyBzdHJhaWdo
dCBhd2F5Ci0gICAgICovCi0jaWYgVVNFKEdOT01FS0VZUklORykKLSAgICBnbm9tZV9rZXlyaW5n
X2ZpbmRfbmV0d29ya19wYXNzd29yZChOVUxMLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNvdXBfYXV0aF9nZXRfcmVhbG0oYXV0aCksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdXJpLT5ob3N0LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIE5VTEwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdXJpLT5zY2hlbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc291cF9hdXRoX2dldF9zY2hlbWVfbmFtZShhdXRoKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1cmktPnBvcnQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKEdub21lS2V5cmluZ09wZXJhdGlvbkdldExpc3RDYWxsYmFjaylm
aW5kX3Bhc3N3b3JkX2NhbGxiYWNrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGF1dGhEYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IE5VTEwpOwotI2Vsc2UKLSAgICBzaG93X2F1dGhfZGlhbG9nKGF1dGhEYXRhLCBOVUxMLCBOVUxM
KTsKLSNlbmRpZgorICAgIGxvZ2luID0gcGFzc3dvcmQgPSBOVUxMOworCisgICAgdXNlcnMgPSBz
b3VwX2F1dGhfZ2V0X3NhdmVkX3VzZXJzKGF1dGgpOworICAgIGlmICh1c2VycykgeworICAgICAg
ICBsb2dpbiA9IHVzZXJzLT5kYXRhOworICAgICAgICBwYXNzd29yZCA9IHNvdXBfYXV0aF9nZXRf
c2F2ZWRfcGFzc3dvcmQoYXV0aCwgbG9naW4pOworICAgICAgICBzb3VwX2F1dGhfZnJlZV9zYXZl
ZF91c2VycyhhdXRoLCB1c2Vycyk7CisgICAgfQorCisgICAgc2hvd19hdXRoX2RpYWxvZyhhdXRo
RGF0YSwgbG9naW4sIHBhc3N3b3JkKTsKIH0KIAogc3RhdGljIHZvaWQgYXR0YWNoKFNvdXBTZXNz
aW9uRmVhdHVyZSogbWFuYWdlciwgU291cFNlc3Npb24qIHNlc3Npb24pCmRpZmYgLS1naXQgYS9j
b25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKaW5kZXggZmE2YWYwMi4uNDNmNDVlMiAxMDA2NDQK
LS0tIGEvY29uZmlndXJlLmFjCisrKyBiL2NvbmZpZ3VyZS5hYwpAQCAtMjA0LDcgKzIwNCw2IEBA
IEdUS19SRVFVSVJFRF9WRVJTSU9OPTIuMTAKIExJQlhTTFRfUkVRVUlSRURfVkVSU0lPTj0xLjEu
NwogU1FMSVRFX1JFUVVJUkVEX1ZFUlNJT049My4wCiBHU1RSRUFNRVJfUkVRVUlSRURfVkVSU0lP
Tj0wLjEwCi1HTk9NRV9LRVlSSU5HX1JFUVVJUkVEX1ZFUlNJT049Mi4yNi4wCiBFTkNIQU5UX1JF
UVVJUkVEX1ZFUlNJT049MC4yMgogR0FJTF9SRVFVSVJFRF9WRVJTSU9OPTEuOAogCkBAIC0zOTYs
MTQgKzM5NSw2IEBAIEFDX0FSR19FTkFCTEUoZ2VvbG9jYXRpb24sCiAgICAgICAgICAgICAgIFtd
LFtlbmFibGVfZ2VvbG9jYXRpb249Im5vIl0pCiBBQ19NU0dfUkVTVUxUKFskZW5hYmxlX2dlb2xv
Y2F0aW9uXSkKIAotIyBjaGVjayB3aGV0aGVyIHRvIGVuYWJsZSBnbm9tZWtleXJpbmcgc3VwcG9y
dAotQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIHRvIGVuYWJsZSBnbm9tZWtleXJpbmcgc3VwcG9y
dF0pCi1BQ19BUkdfRU5BQkxFKGdub21la2V5cmluZywKLSAgICAgICAgICAgICAgQUNfSEVMUF9T
VFJJTkcoWy0tZW5hYmxlLWdub21la2V5cmluZ10sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFtlbmFibGUgc3VwcG9ydCBmb3IgZ25vbWVrZXlyaW5nIFtkZWZhdWx0PW5vXV0pLAotICAg
ICAgICAgICAgICBbXSxbZW5hYmxlX2dub21la2V5cmluZz0ibm8iXSkKLUFDX01TR19SRVNVTFQo
WyRlbmFibGVfZ25vbWVrZXlyaW5nXSkKLQogIyBjaGVjayB3aGV0aGVyIHRvIGVuYWJsZSBTVkcg
c3VwcG9ydAogQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIHRvIGVuYWJsZSBTVkcgc3VwcG9ydF0p
CiBBQ19BUkdfRU5BQkxFKHN2ZywKQEAgLTU5NiwxMyArNTg3LDYgQEAgUEtHX0NIRUNLX01PRFVM
RVMoW0xJQlNPVVBdLAogQUNfU1VCU1QoW0xJQlNPVVBfQ0ZMQUdTXSkKIEFDX1NVQlNUKFtMSUJT
T1VQX0xJQlNdKQogCi1pZiB0ZXN0ICIkZW5hYmxlX2dub21la2V5cmluZyIgPSAieWVzIjsgdGhl
bgotICAgUEtHX0NIRUNLX01PRFVMRVMoW0dOT01FS0VZUklOR10sCi0gICAgICAgICAgICAgICAg
ICAgICBbZ25vbWUta2V5cmluZy0xID49ICRHTk9NRV9LRVlSSU5HX1JFUVVJUkVEX1ZFUlNJT05d
KQotICAgQUNfU1VCU1QoW0dOT01FS0VZUklOR19DRkxBR1NdKQotICAgQUNfU1VCU1QoW0dOT01F
S0VZUklOR19MSUJTXSkKLWZpCi0KICMgY2hlY2sgaWYgRnJlZVR5cGUvRm9udENvbmZpZyBhcmUg
YXZhaWxhYmxlCiBpZiB0ZXN0ICIkd2l0aF9mb250X2JhY2tlbmQiID0gImZyZWV0eXBlIjsgdGhl
bgogICAgaWYgdGVzdCAiJHdpdGhfdGFyZ2V0IiA9ICJkaXJlY3RmYiI7IHRoZW4KQEAgLTY4Niw5
ICs2NzAsNiBAQCBBTV9DT05ESVRJT05BTChbVEFSR0VUX0RJUkVDVEZCXSwgW3Rlc3QgIiR3aXRo
X3RhcmdldCIgPSAiZGlyZWN0ZmIiXSkKIEFNX0NPTkRJVElPTkFMKFtVU0VfSUNVX1VOSUNPREVd
LCBbdGVzdCAiJHdpdGhfdW5pY29kZV9iYWNrZW5kIiA9ICJpY3UiXSkKIEFNX0NPTkRJVElPTkFM
KFtVU0VfR0xJQl9VTklDT0RFXSwgW3Rlc3QgIiR3aXRoX3VuaWNvZGVfYmFja2VuZCIgPSAiZ2xp
YiJdKQogCi0jIEF1dGggYmFja2VuZCBjb25kaXRpb25hbHMKLUFNX0NPTkRJVElPTkFMKFtVU0Vf
R05PTUVLRVlSSU5HXSwgW3Rlc3QgIiRlbmFibGVfZ25vbWVrZXlyaW5nIiA9ICJ5ZXMiXSkKLQog
IyBGb250IGJhY2tlbmQgY29uZGl0aW9uYWxzCiBBTV9DT05ESVRJT05BTChbVVNFX0ZSRUVUWVBF
XSwgW3Rlc3QgIiR3aXRoX2ZvbnRfYmFja2VuZCIgPSAiZnJlZXR5cGUiXSkKIEFNX0NPTkRJVElP
TkFMKFtVU0VfUEFOR09dLCBbdGVzdCAiJHdpdGhfZm9udF9iYWNrZW5kIiA9ICJwYW5nbyJdKQpA
QCAtNzUxLDcgKzczMiw2IEBAIEZlYXR1cmVzOgogIERhc2hib2FyZCBzdXBwb3J0ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJGVuYWJsZV9kYXNoYm9hcmRfc3VwcG9y
dAogIEZpbHRlcnMgc3VwcG9ydCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDogJGVuYWJsZV9maWx0ZXJzCiAgR2VvbG9jYXRpb24gc3VwcG9ydCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgOiAkZW5hYmxlX2dlb2xvY2F0aW9uCi0gR05PTUUgS2V5
cmluZyBzdXBwb3J0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAkZW5hYmxl
X2dub21la2V5cmluZwogIEphdmFTY3JpcHQgZGVidWdnZXIvcHJvZmlsZXIgc3VwcG9ydCAgICAg
ICAgICAgICAgICAgICAgIDogJGVuYWJsZV9qYXZhc2NyaXB0X2RlYnVnZ2VyCiAgSFRNTDUgb2Zm
bGluZSB3ZWIgYXBwbGljYXRpb25zIHN1cHBvcnQgICAgICAgICAgICAgICAgICAgOiAkZW5hYmxl
X29mZmxpbmVfd2ViX2FwcGxpY2F0aW9ucwogIEhUTUw1IGNoYW5uZWwgbWVzc2FnaW5nIHN1cHBv
cnQgICAgICAgICAgICAgICAgICAgICAgICAgIDogJGVuYWJsZV9jaGFubmVsX21lc3NhZ2luZwot
LSAKMS42LjQKCg==
</data>
<flag name="review"
          id="18700"
          type_id="1"
          status="-"
          setter="jmalonzo"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34643</attachid>
            <date>2009-08-12 00:44:42 -0700</date>
            <delta_ts>2009-08-12 05:31:09 -0700</delta_ts>
            <desc>removekeyringv3.patch</desc>
            <filename>removekeyringv3.patch</filename>
            <type>text/plain</type>
            <size>16178</size>
            <attacher name="Xan Lopez">xan.lopez</attacher>
            
              <data encoding="base64">RnJvbSBmZjFlNjI3NzdiODg0MDAxNTdjZmFkMDNhMjI0MDI4M2JjMTdkNzVhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBYYW4gTG9wZXogPHhsb3BlekBpZ2FsaWEuY29tPgpEYXRlOiBU
dWUsIDExIEF1ZyAyMDA5IDEyOjQ4OjU3ICswMzAwClN1YmplY3Q6IFtQQVRDSF0gMjAwOS0wOC0x
MSAgWGFuIExvcGV6ICA8eGxvcGV6QGlnYWxpYS5jb20+CgogICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgoKICAgICAgICBbR1RLXSBSZW1vdmUga2V5cmluZyBvcHRpb25hbCBmZWF0
dXJlcwogICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yODE3
MwoKICAgICAgICBSZW1vdmUga2V5cmluZyBzdXBwb3J0LgoKICAgICAgICAqIEdOVW1ha2VmaWxl
LmFtOgogICAgICAgICogY29uZmlndXJlLmFjOgoKV2ViS2l0L2d0azoKCjIwMDktMDgtMTEgIFhh
biBMb3BleiAgPHhsb3BlekBpZ2FsaWEuY29tPgoKICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KCiAgICAgICAgW0dUS10gUmVtb3ZlIGtleXJpbmcgb3B0aW9uYWwgZmVhdHVyZXMK
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjgxNzMKCiAg
ICAgICAgUmVtb3ZlIGtleXJpbmcgc3VwcG9ydCBmcm9tIG91ciBjb2RlIGFuZCByZWx5IG9uIGxp
YnNvdXAgdG8gc3RvcmUKICAgICAgICB0aGUgYXV0aGVudGljYXRpb24gZGF0YSBpZiB0aGUgdXNl
ciByZXF1ZXN0cyB0aGF0IHN1cHBvcnQgaW4gdGhlaXIKICAgICAgICBhcHBsaWNhdGlvbi9saWJy
YXJ5LgoKICAgICAgICAqIHdlYmtpdC93ZWJraXRzb3VwYXV0aGRpYWxvZy5jOgogICAgICAgIChy
ZXNwb25zZV9jYWxsYmFjayk6CiAgICAgICAgKHNob3dfYXV0aF9kaWFsb2cpOgogICAgICAgIChz
ZXNzaW9uX2F1dGhlbnRpY2F0ZSk6Ci0tLQogQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8ICAgMTIgKysrCiBHTlVtYWtlZmlsZS5hbSAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwgICAgNyAtLQogV2ViS2l0L2d0ay9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAg
ICB8ICAgMTYgKysrCiBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRzb3VwYXV0aGRpYWxvZy5jIHwg
IDE1MyArKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0KIGNvbmZpZ3VyZS5hYyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfCAgIDIwIC0tLS0KIDUgZmlsZXMgY2hhbmdlZCwgODIgaW5z
ZXJ0aW9ucygrKSwgMTI2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0No
YW5nZUxvZwppbmRleCAwZTQ5Y2Y1Li5lOTJjOTFhIDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysr
IGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMDktMDgtMTEgIFhhbiBMb3BleiAgPHhs
b3BlekBpZ2FsaWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFtHVEtdIFJlbW92ZSBrZXlyaW5nIG9wdGlvbmFsIGZlYXR1cmVzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yODE3MworCisgICAgICAg
IFJlbW92ZSBrZXlyaW5nIHN1cHBvcnQuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAg
ICAgICAgKiBjb25maWd1cmUuYWM6CisKIDIwMDktMDgtMTEgIERyZXcgV2lsc29uICA8YXR3aWxz
b25AZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKEJ1aWxkIGJyZWFr
KS4KZGlmZiAtLWdpdCBhL0dOVW1ha2VmaWxlLmFtIGIvR05VbWFrZWZpbGUuYW0KaW5kZXggZWZh
YzMxOS4uYjYzMjA1ZiAxMDA2NDQKLS0tIGEvR05VbWFrZWZpbGUuYW0KKysrIGIvR05VbWFrZWZp
bGUuYW0KQEAgLTg3LDcgKzg3LDYgQEAgY29yZWtpdF9jZmxhZ3MgKz0gXAogCSQoR0FJTF9DRkxB
R1MpIFwKIAkkKEdFT0NMVUVfQ0ZMQUdTKSBcCiAJJChHTElCX0NGTEFHUykgXAotCSQoR05PTUVL
RVlSSU5HX0NGTEFHUykgXAogCSQoR1NUUkVBTUVSX0NGTEFHUykgXAogCSQoR1RLX0NGTEFHUykg
XAogCSQoSElMRE9OX0NGTEFHUykgXApAQCAtMjQ3LDcgKzI0Niw2IEBAIGxpYndlYmtpdF8xXzBf
bGFfTElCQUREID0gXAogCSQoR0FJTF9MSUJTKSBcCiAJJChHRU9DTFVFX0xJQlMpIFwKIAkkKEdM
SUJfTElCUykgXAotCSQoR05PTUVLRVlSSU5HX0xJQlMpIFwKIAkkKEdTVFJFQU1FUl9MSUJTKSBc
CiAJJChHVEtfTElCUykgXAogCSQoSElMRE9OX0xJQlMpIFwKQEAgLTM4MCwxMSArMzc4LDYgQEAg
d2Via2l0Z3RrX2NwcGZsYWdzICs9IFwKIAktSSQoc3JjZGlyKS9XZWJLaXQvZ3RrL3dlYmtpdCBc
CiAJLUkkKHRvcF9idWlsZGRpcikvV2ViS2l0L2d0ay93ZWJraXQKIAotaWYgVVNFX0dOT01FS0VZ
UklORwotd2Via2l0Z3RrX2NwcGZsYWdzICs9IFwKLQktRFdURl9VU0VfR05PTUVLRVlSSU5HPTEK
LWVuZGlmCi0KIHdlYmtpdGd0a19jbGVhbmZpbGVzICs9IFwKIAkkKHRvcF9idWlsZGRpcikvV2Vi
S2l0L2d0ay9kb2NzL3ZlcnNpb24ueG1sIFwKIAkkKHRvcF9idWlsZGRpcikvV2ViS2l0L2d0ay9k
b2NzL0dOVW1ha2VmaWxlIFwKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvV2Vi
S2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggMGE2MWJlOS4uNjVkMzJhZSAxMDA2NDQKLS0tIGEvV2Vi
S2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
OSBAQAorMjAwOS0wOC0xMSAgWGFuIExvcGV6ICA8eGxvcGV6QGlnYWxpYS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0dUS10gUmVtb3ZlIGtl
eXJpbmcgb3B0aW9uYWwgZmVhdHVyZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTI4MTczCisKKyAgICAgICAgUmVtb3ZlIGtleXJpbmcgc3VwcG9ydCBm
cm9tIG91ciBjb2RlIGFuZCByZWx5IG9uIGxpYnNvdXAgdG8gc3RvcmUKKyAgICAgICAgdGhlIGF1
dGhlbnRpY2F0aW9uIGRhdGEgaWYgdGhlIHVzZXIgcmVxdWVzdHMgdGhhdCBzdXBwb3J0IGluIHRo
ZWlyCisgICAgICAgIGFwcGxpY2F0aW9uL2xpYnJhcnkuCisKKyAgICAgICAgKiB3ZWJraXQvd2Vi
a2l0c291cGF1dGhkaWFsb2cuYzoKKyAgICAgICAgKHJlc3BvbnNlX2NhbGxiYWNrKToKKyAgICAg
ICAgKHNob3dfYXV0aF9kaWFsb2cpOgorICAgICAgICAoc2Vzc2lvbl9hdXRoZW50aWNhdGUpOgor
CiAyMDA5LTA4LTExICBCZW5qYW1pbiBPdHRlICA8b3R0ZUBnbm9tZS5vcmc+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgWGFuIExvcGV6LgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0c291cGF1dGhkaWFsb2cuYyBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHNvdXBhdXRoZGlh
bG9nLmMKaW5kZXggOWJjMTg4ZS4uZDEyNmFmNSAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay93ZWJr
aXQvd2Via2l0c291cGF1dGhkaWFsb2cuYworKysgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRz
b3VwYXV0aGRpYWxvZy5jCkBAIC0yMiw5ICsyMiw2IEBACiAjaW5jbHVkZSA8Z2xpYi9naTE4bi1s
aWIuaD4KICNpbmNsdWRlIDxndGsvZ3RrLmg+CiAjaW5jbHVkZSA8bGlic291cC9zb3VwLmg+Ci0j
aWYgVVNFKEdOT01FS0VZUklORykKLSNpbmNsdWRlIDxnbm9tZS1rZXlyaW5nLmg+Ci0jZW5kaWYK
IAogI2luY2x1ZGUgIndlYmtpdG1hcnNoYWwuaCIKICNpbmNsdWRlICJ3ZWJraXRzb3VwYXV0aGRp
YWxvZy5oIgpAQCAtODgsOSArODUsNyBAQCB0eXBlZGVmIHN0cnVjdCBfV2ViS2l0QXV0aERhdGEg
ewogICAgIFNvdXBTZXNzaW9uRmVhdHVyZSogbWFuYWdlcjsKICAgICBHdGtXaWRnZXQqIGxvZ2lu
RW50cnk7CiAgICAgR3RrV2lkZ2V0KiBwYXNzd29yZEVudHJ5OwotI2lmIFVTRShHTk9NRUtFWVJJ
TkcpCiAgICAgR3RrV2lkZ2V0KiBjaGVja0J1dHRvbjsKLSNlbmRpZgogICAgIGNoYXIgKnVzZXJu
YW1lOwogICAgIGNoYXIgKnBhc3N3b3JkOwogfSBXZWJLaXRBdXRoRGF0YTsKQEAgLTEwMyw2MyAr
OTgsNDUgQEAgc3RhdGljIHZvaWQgZnJlZV9hdXRoRGF0YShXZWJLaXRBdXRoRGF0YSogYXV0aERh
dGEpCiAgICAgZ19zbGljZV9mcmVlKFdlYktpdEF1dGhEYXRhLCBhdXRoRGF0YSk7CiB9CiAKLSNp
ZiBVU0UoR05PTUVLRVlSSU5HKQotc3RhdGljIHZvaWQgc2V0X3Bhc3N3b3JkX2NhbGxiYWNrKEdu
b21lS2V5cmluZ1Jlc3VsdCByZXN1bHQsIGd1aW50MzIgdmFsLCBncG9pbnRlciB1c2VyX2RhdGEp
Ci17Ci0gICAgLyogRHVtbXkgY2FsbGJhY2ssIGdub21lX2tleXJpbmdfc2V0X25ldHdvcmtfcGFz
c3dvcmQgZG9lcyBub3QgYWNjZXB0IGEgTlVMTCBvbmUgKi8KLX0KLQogc3RhdGljIHZvaWQgc2F2
ZV9wYXNzd29yZF9jYWxsYmFjayhTb3VwTWVzc2FnZSogbXNnLCBXZWJLaXRBdXRoRGF0YSogYXV0
aERhdGEpCiB7Ci0gICAgLyogQ2hlY2sgb25seSBmb3IgU3VjY2VzcyBzdGF0dXMgY29kZXMgKDJ4
eCkgKi8KLSAgICBpZiAobXNnLT5zdGF0dXNfY29kZSA+PSAyMDAgJiYgbXNnLT5zdGF0dXNfY29k
ZSA8IDMwMCkgewotICAgICAgICBTb3VwVVJJKiB1cmkgPSBzb3VwX21lc3NhZ2VfZ2V0X3VyaShh
dXRoRGF0YS0+bXNnKTsKLSAgICAgICAgZ25vbWVfa2V5cmluZ19zZXRfbmV0d29ya19wYXNzd29y
ZChOVUxMLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dGhE
YXRhLT51c2VybmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzb3VwX2F1dGhfZ2V0X3JlYWxtKGF1dGhEYXRhLT5hdXRoKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1cmktPmhvc3QsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1cmktPnNjaGVtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzb3VwX2F1dGhfZ2V0X3NjaGVtZV9uYW1lKGF1dGhEYXRhLT5hdXRo
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmktPnBvcnQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0aERhdGEtPnBh
c3N3b3JkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChHbm9t
ZUtleXJpbmdPcGVyYXRpb25HZXRJbnRDYWxsYmFjaylzZXRfcGFzc3dvcmRfY2FsbGJhY2ssCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKLSAgICB9CisgICAgLyog
QW55dGhpbmcgYnV0IDQwMSBhbmQgNXh4IG1lYW5zIHRoZSBwYXNzd29yZCB3YXMgYWNjZXB0ZWQg
Ki8KKyAgICBpZiAobXNnLT5zdGF0dXNfY29kZSAhPSA0MDEgJiYgbXNnLT5zdGF0dXNfY29kZSA8
IDUwMCkKKyAgICAgICAgc291cF9hdXRoX3NhdmVfcGFzc3dvcmQoYXV0aERhdGEtPmF1dGgsIGF1
dGhEYXRhLT51c2VybmFtZSwgYXV0aERhdGEtPnBhc3N3b3JkKTsKKwogICAgIGZyZWVfYXV0aERh
dGEoYXV0aERhdGEpOwogfQotI2VuZGlmCiAKIHN0YXRpYyB2b2lkIHJlc3BvbnNlX2NhbGxiYWNr
KEd0a0RpYWxvZyogZGlhbG9nLCBnaW50IHJlc3BvbnNlX2lkLCBXZWJLaXRBdXRoRGF0YSogYXV0
aERhdGEpCiB7Ci0gICAgc3dpdGNoKHJlc3BvbnNlX2lkKSB7Ci0gICAgY2FzZSBHVEtfUkVTUE9O
U0VfT0s6CisgICAgZ2Jvb2xlYW4gZnJlZUF1dGhEYXRhID0gVFJVRTsKKworICAgIGlmIChyZXNw
b25zZV9pZCA9PSBHVEtfUkVTUE9OU0VfT0spIHsKICAgICAgICAgYXV0aERhdGEtPnVzZXJuYW1l
ID0gZ19zdHJkdXAoZ3RrX2VudHJ5X2dldF90ZXh0KEdUS19FTlRSWShhdXRoRGF0YS0+bG9naW5F
bnRyeSkpKTsKICAgICAgICAgYXV0aERhdGEtPnBhc3N3b3JkID0gZ19zdHJkdXAoZ3RrX2VudHJ5
X2dldF90ZXh0KEdUS19FTlRSWShhdXRoRGF0YS0+cGFzc3dvcmRFbnRyeSkpKTsKKwogICAgICAg
ICBzb3VwX2F1dGhfYXV0aGVudGljYXRlKGF1dGhEYXRhLT5hdXRoLCBhdXRoRGF0YS0+dXNlcm5h
bWUsIGF1dGhEYXRhLT5wYXNzd29yZCk7CiAKLSNpZiBVU0UoR05PTUVLRVlSSU5HKQotICAgICAg
ICBpZiAoZ3RrX3RvZ2dsZV9idXR0b25fZ2V0X2FjdGl2ZShHVEtfVE9HR0xFX0JVVFRPTihhdXRo
RGF0YS0+Y2hlY2tCdXR0b24pKSkKKyAgICAgICAgaWYgKGF1dGhEYXRhLT5jaGVja0J1dHRvbiAm
JgorICAgICAgICAgICAgZ3RrX3RvZ2dsZV9idXR0b25fZ2V0X2FjdGl2ZShHVEtfVE9HR0xFX0JV
VFRPTihhdXRoRGF0YS0+Y2hlY2tCdXR0b24pKSkgewogICAgICAgICAgICAgZ19zaWduYWxfY29u
bmVjdChhdXRoRGF0YS0+bXNnLCAiZ290LWhlYWRlcnMiLCBHX0NBTExCQUNLKHNhdmVfcGFzc3dv
cmRfY2FsbGJhY2spLCBhdXRoRGF0YSk7Ci0jZW5kaWYKLSAgICBkZWZhdWx0OgotICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIGZyZWVBdXRoRGF0YSA9IEZBTFNFOworICAgICAgICB9CiAgICAg
fQogCisgICAgaWYgKGZyZWVBdXRoRGF0YSkKKyAgICAgICAgZnJlZV9hdXRoRGF0YShhdXRoRGF0
YSk7CisKICAgICBzb3VwX3Nlc3Npb25fdW5wYXVzZV9tZXNzYWdlKGF1dGhEYXRhLT5zZXNzaW9u
LCBhdXRoRGF0YS0+bXNnKTsKLSNpZiAhVVNFKEdOT01FS0VZUklORykKLSAgICBmcmVlX2F1dGhE
YXRhKGF1dGhEYXRhKTsKLSNlbmRpZgogICAgIGd0a193aWRnZXRfZGVzdHJveShHVEtfV0lER0VU
KGRpYWxvZykpOwogfQogCiBzdGF0aWMgR3RrV2lkZ2V0ICoKLXRhYmxlX2FkZF9lbnRyeSAoR3Rr
V2lkZ2V0KiAgdGFibGUsCi0gICAgICAgICAgICAgICAgIGludCAgICAgICAgIHJvdywKLSAgICAg
ICAgICAgICAgICAgY29uc3QgY2hhciogbGFiZWxfdGV4dCwKLSAgICAgICAgICAgICAgICAgY29u
c3QgY2hhciogdmFsdWUsCi0gICAgICAgICAgICAgICAgIGdwb2ludGVyICAgIHVzZXJfZGF0YSkK
K3RhYmxlX2FkZF9lbnRyeShHdGtXaWRnZXQqICB0YWJsZSwKKyAgICAgICAgICAgICAgICBpbnQg
ICAgICAgICByb3csCisgICAgICAgICAgICAgICAgY29uc3QgY2hhciogbGFiZWxfdGV4dCwKKyAg
ICAgICAgICAgICAgICBjb25zdCBjaGFyKiB2YWx1ZSwKKyAgICAgICAgICAgICAgICBncG9pbnRl
ciAgICB1c2VyX2RhdGEpCiB7CiAgICAgR3RrV2lkZ2V0KiBlbnRyeTsKICAgICBHdGtXaWRnZXQq
IGxhYmVsOwpAQCAtMTgyLDYgKzE1OSwxMSBAQCB0YWJsZV9hZGRfZW50cnkgKEd0a1dpZGdldCog
IHRhYmxlLAogICAgIHJldHVybiBlbnRyeTsKIH0KIAorc3RhdGljIGdib29sZWFuIHNlc3Npb25f
Y2FuX3NhdmVfcGFzc3dvcmRzKFNvdXBTZXNzaW9uKiBzZXNzaW9uKQoreworICAgIHJldHVybiBz
b3VwX3Nlc3Npb25fZ2V0X2ZlYXR1cmUoc2Vzc2lvbiwgU09VUF9UWVBFX1BBU1NXT1JEX01BTkFH
RVIpICE9IE5VTEw7Cit9CisKIHN0YXRpYyB2b2lkIHNob3dfYXV0aF9kaWFsb2coV2ViS2l0QXV0
aERhdGEqIGF1dGhEYXRhLCBjb25zdCBjaGFyKiBsb2dpbiwgY29uc3QgY2hhciogcGFzc3dvcmQp
CiB7CiAgICAgR3RrV2lkZ2V0KiB0b3BsZXZlbDsKQEAgLTE5NywxMCArMTc5LDggQEAgc3RhdGlj
IHZvaWQgc2hvd19hdXRoX2RpYWxvZyhXZWJLaXRBdXRoRGF0YSogYXV0aERhdGEsIGNvbnN0IGNo
YXIqIGxvZ2luLCBjb25zdAogICAgIEd0a1dpZGdldCogbWVzc2FnZUxhYmVsOwogICAgIGNoYXIq
IG1lc3NhZ2U7CiAgICAgU291cFVSSSogdXJpOwotI2lmIFVTRShHTk9NRUtFWVJJTkcpCiAgICAg
R3RrV2lkZ2V0KiByZW1lbWJlckJveDsKICAgICBHdGtXaWRnZXQqIGNoZWNrQnV0dG9uOwotI2Vu
ZGlmCiAKICAgICAvKiBGcm9tIEdUSysgZ3RrbW91bnRvcGVyYXRpb24uYywgbW9kaWZpZWQgYW5k
IHNpbXBsaWZpZWQuIExHUEwgMiBsaWNlbnNlICovCiAKQEAgLTIxNSw5ICsxOTUsOSBAQCBzdGF0
aWMgdm9pZCBzaG93X2F1dGhfZGlhbG9nKFdlYktpdEF1dGhEYXRhKiBhdXRoRGF0YSwgY29uc3Qg
Y2hhciogbG9naW4sIGNvbnN0CiAKICAgICAvKiBTZXQgdGhlIGRpYWxvZyB1cCB3aXRoIEhJRyBw
cm9wZXJ0aWVzICovCiAgICAgZ3RrX2RpYWxvZ19zZXRfaGFzX3NlcGFyYXRvcihkaWFsb2csIEZB
TFNFKTsKLSAgICBndGtfY29udGFpbmVyX3NldF9ib3JkZXJfd2lkdGgoR1RLX0NPTlRBSU5FUiAo
ZGlhbG9nKSwgNSk7CisgICAgZ3RrX2NvbnRhaW5lcl9zZXRfYm9yZGVyX3dpZHRoKEdUS19DT05U
QUlORVIoZGlhbG9nKSwgNSk7CiAgICAgZ3RrX2JveF9zZXRfc3BhY2luZyhHVEtfQk9YKGRpYWxv
Zy0+dmJveCksIDIpOyAvKiAyICogNSArIDIgPSAxMiAqLwotICAgIGd0a19jb250YWluZXJfc2V0
X2JvcmRlcl93aWR0aChHVEtfQ09OVEFJTkVSIChkaWFsb2ctPmFjdGlvbl9hcmVhKSwgNSk7Cisg
ICAgZ3RrX2NvbnRhaW5lcl9zZXRfYm9yZGVyX3dpZHRoKEdUS19DT05UQUlORVIoZGlhbG9nLT5h
Y3Rpb25fYXJlYSksIDUpOwogICAgIGd0a19ib3hfc2V0X3NwYWNpbmcoR1RLX0JPWChkaWFsb2ct
PmFjdGlvbl9hcmVhKSwgNik7CiAKICAgICBndGtfd2luZG93X3NldF9yZXNpemFibGUod2luZG93
LCBGQUxTRSk7CkBAIC0yNTYsNyArMjM2LDcgQEAgc3RhdGljIHZvaWQgc2hvd19hdXRoX2RpYWxv
ZyhXZWJLaXRBdXRoRGF0YSogYXV0aERhdGEsIGNvbnN0IGNoYXIqIGxvZ2luLCBjb25zdAogICAg
ICAgICAgICAgICAgICAgICAgICBGQUxTRSwgRkFMU0UsIDApOwogCiAgICAgdmJveCA9IGd0a192
Ym94X25ldyhGQUxTRSwgNik7Ci0gICAgZ3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1ggKG1haW5W
Qm94KSwgdmJveCwgRkFMU0UsIEZBTFNFLCAwKTsKKyAgICBndGtfYm94X3BhY2tfc3RhcnQoR1RL
X0JPWChtYWluVkJveCksIHZib3gsIEZBTFNFLCBGQUxTRSwgMCk7CiAKICAgICAvKiBUaGUgdGFi
bGUgdGhhdCBob2xkcyB0aGUgZW50cmllcyAqLwogICAgIGVudHJ5Q29udGFpbmVyID0gZ3RrX2Fs
aWdubWVudF9uZXcoMC4wLCAwLjAsIDEuMCwgMS4wKTsKQEAgLTI2OCw4ICsyNDgsOCBAQCBzdGF0
aWMgdm9pZCBzaG93X2F1dGhfZGlhbG9nKFdlYktpdEF1dGhEYXRhKiBhdXRoRGF0YSwgY29uc3Qg
Y2hhciogbG9naW4sIGNvbnN0CiAgICAgICAgICAgICAgICAgICAgICAgIEZBTFNFLCBGQUxTRSwg
MCk7CiAKICAgICB0YWJsZSA9IGd0a190YWJsZV9uZXcoMiwgMiwgRkFMU0UpOwotICAgIGd0a190
YWJsZV9zZXRfY29sX3NwYWNpbmdzKEdUS19UQUJMRSAodGFibGUpLCAxMik7Ci0gICAgZ3RrX3Rh
YmxlX3NldF9yb3dfc3BhY2luZ3MoR1RLX1RBQkxFICh0YWJsZSksIDYpOworICAgIGd0a190YWJs
ZV9zZXRfY29sX3NwYWNpbmdzKEdUS19UQUJMRSh0YWJsZSksIDEyKTsKKyAgICBndGtfdGFibGVf
c2V0X3Jvd19zcGFjaW5ncyhHVEtfVEFCTEUodGFibGUpLCA2KTsKICAgICBndGtfY29udGFpbmVy
X2FkZChHVEtfQ09OVEFJTkVSKGVudHJ5Q29udGFpbmVyKSwgdGFibGUpOwogCiAgICAgYXV0aERh
dGEtPmxvZ2luRW50cnkgPSB0YWJsZV9hZGRfZW50cnkodGFibGUsIDAsIF8oIlVzZXJuYW1lOiIp
LApAQCAtMjc5LDc3ICsyNTksNTIgQEAgc3RhdGljIHZvaWQgc2hvd19hdXRoX2RpYWxvZyhXZWJL
aXRBdXRoRGF0YSogYXV0aERhdGEsIGNvbnN0IGNoYXIqIGxvZ2luLCBjb25zdAogCiAgICAgZ3Rr
X2VudHJ5X3NldF92aXNpYmlsaXR5KEdUS19FTlRSWShhdXRoRGF0YS0+cGFzc3dvcmRFbnRyeSks
IEZBTFNFKTsKIAotI2lmIFVTRShHTk9NRUtFWVJJTkcpCi0gICAgcmVtZW1iZXJCb3ggPSBndGtf
dmJveF9uZXcgKEZBTFNFLCA2KTsKLSAgICBndGtfYm94X3BhY2tfc3RhcnQgKEdUS19CT1ggKHZi
b3gpLCByZW1lbWJlckJveCwKLSAgICAgICAgICAgICAgICAgICAgICAgIEZBTFNFLCBGQUxTRSwg
MCk7CisgICAgcmVtZW1iZXJCb3ggPSBndGtfdmJveF9uZXcoRkFMU0UsIDYpOworICAgIGd0a19i
b3hfcGFja19zdGFydChHVEtfQk9YKHZib3gpLCByZW1lbWJlckJveCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgRkFMU0UsIEZBTFNFLCAwKTsKIAotICAgIGNoZWNrQnV0dG9uID0gZ3RrX2NoZWNr
X2J1dHRvbl9uZXdfd2l0aF9tbmVtb25pYyhfKCJfUmVtZW1iZXIgcGFzc3dvcmQiKSk7Ci0gICAg
aWYgKGxvZ2luICYmIHBhc3N3b3JkKQotICAgICAgICBndGtfdG9nZ2xlX2J1dHRvbl9zZXRfYWN0
aXZlKEdUS19UT0dHTEVfQlVUVE9OKGNoZWNrQnV0dG9uKSwgVFJVRSk7Ci0gICAgZ3RrX2xhYmVs
X3NldF9saW5lX3dyYXAoR1RLX0xBQkVMKGd0a19iaW5fZ2V0X2NoaWxkKEdUS19CSU4oY2hlY2tC
dXR0b24pKSksIFRSVUUpOwotICAgIGd0a19ib3hfcGFja19zdGFydCAoR1RLX0JPWCAocmVtZW1i
ZXJCb3gpLCBjaGVja0J1dHRvbiwgRkFMU0UsIEZBTFNFLCAwKTsKLSAgICBhdXRoRGF0YS0+Y2hl
Y2tCdXR0b24gPSBjaGVja0J1dHRvbjsKLSNlbmRpZgorICAgIGlmIChzZXNzaW9uX2Nhbl9zYXZl
X3Bhc3N3b3JkcyhhdXRoRGF0YS0+c2Vzc2lvbikpIHsKKyAgICAgICAgY2hlY2tCdXR0b24gPSBn
dGtfY2hlY2tfYnV0dG9uX25ld193aXRoX21uZW1vbmljKF8oIl9SZW1lbWJlciBwYXNzd29yZCIp
KTsKKyAgICAgICAgaWYgKGxvZ2luICYmIHBhc3N3b3JkKQorICAgICAgICAgICAgZ3RrX3RvZ2ds
ZV9idXR0b25fc2V0X2FjdGl2ZShHVEtfVE9HR0xFX0JVVFRPTihjaGVja0J1dHRvbiksIFRSVUUp
OworICAgICAgICBndGtfbGFiZWxfc2V0X2xpbmVfd3JhcChHVEtfTEFCRUwoZ3RrX2Jpbl9nZXRf
Y2hpbGQoR1RLX0JJTihjaGVja0J1dHRvbikpKSwgVFJVRSk7CisgICAgICAgIGd0a19ib3hfcGFj
a19zdGFydChHVEtfQk9YKHJlbWVtYmVyQm94KSwgY2hlY2tCdXR0b24sIEZBTFNFLCBGQUxTRSwg
MCk7CisgICAgICAgIGF1dGhEYXRhLT5jaGVja0J1dHRvbiA9IGNoZWNrQnV0dG9uOworICAgIH0K
IAogICAgIGdfc2lnbmFsX2Nvbm5lY3QoZGlhbG9nLCAicmVzcG9uc2UiLCBHX0NBTExCQUNLKHJl
c3BvbnNlX2NhbGxiYWNrKSwgYXV0aERhdGEpOwogICAgIGd0a193aWRnZXRfc2hvd19hbGwod2lk
Z2V0KTsKIH0KIAotI2lmIFVTRShHTk9NRUtFWVJJTkcpCi1zdGF0aWMgdm9pZCBmaW5kX3Bhc3N3
b3JkX2NhbGxiYWNrKEdub21lS2V5cmluZ1Jlc3VsdCByZXN1bHQsIEdMaXN0KiBsaXN0LCBXZWJL
aXRBdXRoRGF0YSogYXV0aERhdGEpCi17Ci0gICAgR0xpc3QqIHA7Ci0gICAgY29uc3QgY2hhciog
bG9naW4gPSBOVUxMOwotICAgIGNvbnN0IGNoYXIqIHBhc3N3b3JkID0gTlVMTDsKLQotICAgIGZv
ciAocCA9IGxpc3Q7IHA7IHAgPSBwLT5uZXh0KSB7Ci0gICAgICAgIC8qIEZJWE1FOiBzdXBwb3J0
IG11bHRpcGxlIGxvZ2lucy9wYXNzd29yZHMgPyAqLwotICAgICAgICBHbm9tZUtleXJpbmdOZXR3
b3JrUGFzc3dvcmREYXRhKiBkYXRhID0gKEdub21lS2V5cmluZ05ldHdvcmtQYXNzd29yZERhdGEq
KXAtPmRhdGE7Ci0gICAgICAgIGxvZ2luID0gZGF0YS0+dXNlcjsKLSAgICAgICAgcGFzc3dvcmQg
PSBkYXRhLT5wYXNzd29yZDsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgc2hvd19hdXRo
X2RpYWxvZyhhdXRoRGF0YSwgbG9naW4sIHBhc3N3b3JkKTsKLX0KLSNlbmRpZgotCiBzdGF0aWMg
dm9pZCBzZXNzaW9uX2F1dGhlbnRpY2F0ZShTb3VwU2Vzc2lvbiogc2Vzc2lvbiwgU291cE1lc3Nh
Z2UqIG1zZywgU291cEF1dGgqIGF1dGgsIGdib29sZWFuIHJldHJ5aW5nLCBncG9pbnRlciB1c2Vy
X2RhdGEpCiB7CiAgICAgU291cFVSSSogdXJpOwogICAgIFdlYktpdEF1dGhEYXRhKiBhdXRoRGF0
YTsKICAgICBTb3VwU2Vzc2lvbkZlYXR1cmUqIG1hbmFnZXIgPSAoU291cFNlc3Npb25GZWF0dXJl
Kil1c2VyX2RhdGE7CisgICAgR1NMaXN0KiB1c2VyczsKKyAgICBjb25zdCBjaGFyICpsb2dpbiwg
KnBhc3N3b3JkOwogCiAgICAgc291cF9zZXNzaW9uX3BhdXNlX21lc3NhZ2Uoc2Vzc2lvbiwgbXNn
KTsKICAgICAvKiBXZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgbWVzc2FnZSBzdGlja3MgYXJvdW5k
IHdoZW4gcGF1c2luZyBpdCAqLwogICAgIGdfb2JqZWN0X3JlZihtc2cpOwogCiAgICAgdXJpID0g
c291cF9tZXNzYWdlX2dldF91cmkobXNnKTsKLSAgICBhdXRoRGF0YSA9IGdfc2xpY2VfbmV3KFdl
YktpdEF1dGhEYXRhKTsKKyAgICBhdXRoRGF0YSA9IGdfc2xpY2VfbmV3MChXZWJLaXRBdXRoRGF0
YSk7CiAgICAgYXV0aERhdGEtPm1zZyA9IG1zZzsKICAgICBhdXRoRGF0YS0+YXV0aCA9IGF1dGg7
CiAgICAgYXV0aERhdGEtPnNlc3Npb24gPSBzZXNzaW9uOwogICAgIGF1dGhEYXRhLT5tYW5hZ2Vy
ID0gbWFuYWdlcjsKIAotICAgIC8qCi0gICAgICogSWYgd2UgaGF2ZSBnbm9tZS1rZXlyaW5nIGxl
dCdzIHRyeSB0byBmaW5kIHRoZSBwYXNzd29yZCBmaXJzdCBpbiB0aGUgcmluZy4KLSAgICAgKiBP
dGhlcndpc2UganVzdCBzaG93IHRoZSBkaWFsb2cgc3RyYWlnaHQgYXdheQotICAgICAqLwotI2lm
IFVTRShHTk9NRUtFWVJJTkcpCi0gICAgZ25vbWVfa2V5cmluZ19maW5kX25ldHdvcmtfcGFzc3dv
cmQoTlVMTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VwX2F1
dGhfZ2V0X3JlYWxtKGF1dGgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVyaS0+aG9zdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBO
VUxMLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVyaS0+c2NoZW1l
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXBfYXV0aF9nZXRf
c2NoZW1lX25hbWUoYXV0aCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdXJpLT5wb3J0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChH
bm9tZUtleXJpbmdPcGVyYXRpb25HZXRMaXN0Q2FsbGJhY2spZmluZF9wYXNzd29yZF9jYWxsYmFj
aywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRoRGF0YSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKLSNlbHNlCi0gICAg
c2hvd19hdXRoX2RpYWxvZyhhdXRoRGF0YSwgTlVMTCwgTlVMTCk7Ci0jZW5kaWYKKyAgICBsb2dp
biA9IHBhc3N3b3JkID0gTlVMTDsKKworICAgIHVzZXJzID0gc291cF9hdXRoX2dldF9zYXZlZF91
c2VycyhhdXRoKTsKKyAgICBpZiAodXNlcnMpIHsKKyAgICAgICAgbG9naW4gPSB1c2Vycy0+ZGF0
YTsKKyAgICAgICAgcGFzc3dvcmQgPSBzb3VwX2F1dGhfZ2V0X3NhdmVkX3Bhc3N3b3JkKGF1dGgs
IGxvZ2luKTsKKyAgICAgICAgc291cF9hdXRoX2ZyZWVfc2F2ZWRfdXNlcnMoYXV0aCwgdXNlcnMp
OworICAgIH0KKworICAgIHNob3dfYXV0aF9kaWFsb2coYXV0aERhdGEsIGxvZ2luLCBwYXNzd29y
ZCk7CiB9CiAKIHN0YXRpYyB2b2lkIGF0dGFjaChTb3VwU2Vzc2lvbkZlYXR1cmUqIG1hbmFnZXIs
IFNvdXBTZXNzaW9uKiBzZXNzaW9uKQpkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmln
dXJlLmFjCmluZGV4IDFjM2VmZmMuLmFhODUzZDUgMTAwNjQ0Ci0tLSBhL2NvbmZpZ3VyZS5hYwor
KysgYi9jb25maWd1cmUuYWMKQEAgLTIwNCw3ICsyMDQsNiBAQCBHVEtfUkVRVUlSRURfVkVSU0lP
Tj0yLjEwCiBMSUJYU0xUX1JFUVVJUkVEX1ZFUlNJT049MS4xLjcKIFNRTElURV9SRVFVSVJFRF9W
RVJTSU9OPTMuMAogR1NUUkVBTUVSX1JFUVVJUkVEX1ZFUlNJT049MC4xMAotR05PTUVfS0VZUklO
R19SRVFVSVJFRF9WRVJTSU9OPTIuMjYuMAogRU5DSEFOVF9SRVFVSVJFRF9WRVJTSU9OPTAuMjIK
IEdBSUxfUkVRVUlSRURfVkVSU0lPTj0xLjgKIApAQCAtMzk2LDE0ICszOTUsNiBAQCBBQ19BUkdf
RU5BQkxFKGdlb2xvY2F0aW9uLAogICAgICAgICAgICAgICBbXSxbZW5hYmxlX2dlb2xvY2F0aW9u
PSJubyJdKQogQUNfTVNHX1JFU1VMVChbJGVuYWJsZV9nZW9sb2NhdGlvbl0pCiAKLSMgY2hlY2sg
d2hldGhlciB0byBlbmFibGUgZ25vbWVrZXlyaW5nIHN1cHBvcnQKLUFDX01TR19DSEVDS0lORyhb
d2hldGhlciB0byBlbmFibGUgZ25vbWVrZXlyaW5nIHN1cHBvcnRdKQotQUNfQVJHX0VOQUJMRShn
bm9tZWtleXJpbmcsCi0gICAgICAgICAgICAgIEFDX0hFTFBfU1RSSU5HKFstLWVuYWJsZS1nbm9t
ZWtleXJpbmddLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZW5hYmxlIHN1cHBvcnQg
Zm9yIGdub21la2V5cmluZyBbZGVmYXVsdD1ub11dKSwKLSAgICAgICAgICAgICAgW10sW2VuYWJs
ZV9nbm9tZWtleXJpbmc9Im5vIl0pCi1BQ19NU0dfUkVTVUxUKFskZW5hYmxlX2dub21la2V5cmlu
Z10pCi0KICMgY2hlY2sgd2hldGhlciB0byBlbmFibGUgU1ZHIHN1cHBvcnQKIEFDX01TR19DSEVD
S0lORyhbd2hldGhlciB0byBlbmFibGUgU1ZHIHN1cHBvcnRdKQogQUNfQVJHX0VOQUJMRShzdmcs
CkBAIC01OTYsMTMgKzU4Nyw2IEBAIFBLR19DSEVDS19NT0RVTEVTKFtMSUJTT1VQXSwKIEFDX1NV
QlNUKFtMSUJTT1VQX0NGTEFHU10pCiBBQ19TVUJTVChbTElCU09VUF9MSUJTXSkKIAotaWYgdGVz
dCAiJGVuYWJsZV9nbm9tZWtleXJpbmciID0gInllcyI7IHRoZW4KLSAgIFBLR19DSEVDS19NT0RV
TEVTKFtHTk9NRUtFWVJJTkddLAotICAgICAgICAgICAgICAgICAgICAgW2dub21lLWtleXJpbmct
MSA+PSAkR05PTUVfS0VZUklOR19SRVFVSVJFRF9WRVJTSU9OXSkKLSAgIEFDX1NVQlNUKFtHTk9N
RUtFWVJJTkdfQ0ZMQUdTXSkKLSAgIEFDX1NVQlNUKFtHTk9NRUtFWVJJTkdfTElCU10pCi1maQot
CiAjIGNoZWNrIGlmIEZyZWVUeXBlL0ZvbnRDb25maWcgYXJlIGF2YWlsYWJsZQogaWYgdGVzdCAi
JHdpdGhfZm9udF9iYWNrZW5kIiA9ICJmcmVldHlwZSI7IHRoZW4KICAgIGlmIHRlc3QgIiR3aXRo
X3RhcmdldCIgPSAiZGlyZWN0ZmIiOyB0aGVuCkBAIC02ODYsOSArNjcwLDYgQEAgQU1fQ09ORElU
SU9OQUwoW1RBUkdFVF9ESVJFQ1RGQl0sIFt0ZXN0ICIkd2l0aF90YXJnZXQiID0gImRpcmVjdGZi
Il0pCiBBTV9DT05ESVRJT05BTChbVVNFX0lDVV9VTklDT0RFXSwgW3Rlc3QgIiR3aXRoX3VuaWNv
ZGVfYmFja2VuZCIgPSAiaWN1Il0pCiBBTV9DT05ESVRJT05BTChbVVNFX0dMSUJfVU5JQ09ERV0s
IFt0ZXN0ICIkd2l0aF91bmljb2RlX2JhY2tlbmQiID0gImdsaWIiXSkKIAotIyBBdXRoIGJhY2tl
bmQgY29uZGl0aW9uYWxzCi1BTV9DT05ESVRJT05BTChbVVNFX0dOT01FS0VZUklOR10sIFt0ZXN0
ICIkZW5hYmxlX2dub21la2V5cmluZyIgPSAieWVzIl0pCi0KICMgRm9udCBiYWNrZW5kIGNvbmRp
dGlvbmFscwogQU1fQ09ORElUSU9OQUwoW1VTRV9GUkVFVFlQRV0sIFt0ZXN0ICIkd2l0aF9mb250
X2JhY2tlbmQiID0gImZyZWV0eXBlIl0pCiBBTV9DT05ESVRJT05BTChbVVNFX1BBTkdPXSwgW3Rl
c3QgIiR3aXRoX2ZvbnRfYmFja2VuZCIgPSAicGFuZ28iXSkKQEAgLTc1Miw3ICs3MzMsNiBAQCBG
ZWF0dXJlczoKICBEYXNoYm9hcmQgc3VwcG9ydCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA6ICRlbmFibGVfZGFzaGJvYXJkX3N1cHBvcnQKICBGaWx0ZXJzIHN1cHBvcnQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICRlbmFibGVfZmlsdGVy
cwogIEdlb2xvY2F0aW9uIHN1cHBvcnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDogJGVuYWJsZV9nZW9sb2NhdGlvbgotIEdOT01FIEtleXJpbmcgc3VwcG9ydCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJGVuYWJsZV9nbm9tZWtleXJpbmcKICBKYXZh
U2NyaXB0IGRlYnVnZ2VyL3Byb2ZpbGVyIHN1cHBvcnQgICAgICAgICAgICAgICAgICAgICA6ICRl
bmFibGVfamF2YXNjcmlwdF9kZWJ1Z2dlcgogIEhUTUw1IG9mZmxpbmUgd2ViIGFwcGxpY2F0aW9u
cyBzdXBwb3J0ICAgICAgICAgICAgICAgICAgIDogJGVuYWJsZV9vZmZsaW5lX3dlYl9hcHBsaWNh
dGlvbnMKICBIVE1MNSBjaGFubmVsIG1lc3NhZ2luZyBzdXBwb3J0ICAgICAgICAgICAgICAgICAg
ICAgICAgICA6ICRlbmFibGVfY2hhbm5lbF9tZXNzYWdpbmcKLS0gCjEuNi40Cgo=
</data>
<flag name="review"
          id="18793"
          type_id="1"
          status="+"
          setter="jmalonzo"
    />
    <flag name="commit-queue"
          id="18808"
          type_id="3"
          status="-"
          setter="jmalonzo"
    />
          </attachment>
      

    </bug>

</bugzilla>