<?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>16947</bug_id>
          
          <creation_ts>2008-01-20 02:53:27 -0800</creation_ts>
          <short_desc>[GTK] Missing HTTP Auth challenge</short_desc>
          <delta_ts>2009-03-31 06:52:47 -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>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://trac.webkit.org</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>17115</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Luca Bruno">lethalman88</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>christian</cc>
    
    <cc>cosimoc</cc>
    
    <cc>danw</cc>
    
    <cc>elle.uca</cc>
    
    <cc>gustavo</cc>
    
    <cc>jchaffraix</cc>
    
    <cc>jmalonzo</cc>
    
    <cc>mh+webkit</cc>
    
    <cc>mrowe</cc>
    
    <cc>szab100</cc>
    
    <cc>tkomulai+webkit</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>xfdbse</cc>
    
    <cc>zuh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>67780</commentid>
    <comment_count>0</comment_count>
    <who name="Luca Bruno">lethalman88</who>
    <bug_when>2008-01-20 02:53:27 -0800</bug_when>
    <thetext>Hello,
the GTK+ port is currently missing the HTTP Auth implementation, take for example the webkit trac itself requiring it for logging in.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>67840</commentid>
    <comment_count>1</comment_count>
    <who name="Luca Bruno">lethalman88</who>
    <bug_when>2008-01-21 04:50:33 -0800</bug_when>
    <thetext>I researched a bit trough the win and mac port but i&apos;m not able to realize how they work.
This is what i do:
- Check for 401 response
- Call ResourceHandle::client()-&gt;didReceiveAuthenticationChallenge(AuthenticationChallenge())
- FrameLoaderClient::dispatchReceiveAuthenticationChallenge gets called
- A dialog is opened for username and password input

Once this is done i&apos;m stuck. Now i&apos;ve to do a new request for opening the page again with the given credentials but how do i specify credentials to the ResourceHandle? Or maybe this is a bad approach? I&apos;m not able to realize how other ports do it, they somehow reach to specify credentials to their ResourceHandle and also whether to continue loading without credentials.
Any hints?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>67876</commentid>
    <comment_count>2</comment_count>
      <attachid>18585</attachid>
    <who name="Luca Bruno">lethalman88</who>
    <bug_when>2008-01-21 13:53:03 -0800</bug_when>
    <thetext>Created attachment 18585
proof

This is still a PoC, but working pretty well. No problems in the cURL side as i can see (Wow!) and everything seems much linear. What&apos;s missing:
- Other AUTH schemes
- Accessors in the WebKitAuthenticationChallenge
- Get the right informations from the server</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>70889</commentid>
    <comment_count>3</comment_count>
      <attachid>19161</attachid>
    <who name="Luca Bruno">lethalman88</who>
    <bug_when>2008-02-16 15:29:01 -0800</bug_when>
    <thetext>Created attachment 19161
basic authentication

The patch should be complete now to handle basic authentication.
Now it&apos;s asynchronous and the dialog code is more clean than before.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>70890</commentid>
    <comment_count>4</comment_count>
      <attachid>19162</attachid>
    <who name="Luca Bruno">lethalman88</who>
    <bug_when>2008-02-16 15:38:30 -0800</bug_when>
    <thetext>Created attachment 19162
basic authentication

Fixed showing widgets as suggested by kalikiana, and set password visibility.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>71108</commentid>
    <comment_count>5</comment_count>
      <attachid>19162</attachid>
    <who name="Alp Toker">alp</who>
    <bug_when>2008-02-18 19:24:10 -0800</bug_when>
    <thetext>Comment on attachment 19162
basic authentication

This is conceptually fine. There are a few style issues and bugs to be resolved before getting it in:

&gt;Index: ChangeLog
&gt;===================================================================
&gt;--- ChangeLog	(revision 30341)
&gt;+++ ChangeLog	(working copy)
&gt;@@ -1,3 +1,12 @@
&gt;+2008-02-16  Luca Bruno  &lt;lethalman88@gmail.com&gt;
&gt;+
&gt;+        Reviewed by NOBODY (OOPS!).
&gt;+
&gt;+        http://bugs.webkit.org/show_bug.cgi?id=16947
&gt;+        Bug 16947: [GTK] Missing HTTP Auth challenge
&gt;+
&gt;+        * GNUmakefile.am: add webkitauthenticationchallenge.cpp and webkitauthenticationchallenge.h
&gt;+
&gt; 2008-02-15  Alp Toker  &lt;alp@atoker.com&gt;
&gt; 
&gt;         Reviewed by Holger.
&gt;Index: GNUmakefile.am
&gt;===================================================================
&gt;--- GNUmakefile.am	(revision 30340)
&gt;+++ GNUmakefile.am	(working copy)
&gt;@@ -249,6 +249,7 @@ webkitgtk_cppflags += \
&gt; 
&gt; webkitgtk_h_api += \
&gt; 	WebKit/gtk/webkit/webkit.h \
&gt;+	WebKit/gtk/webkit/webkitauthenticationchallenge.h \
&gt; 	WebKit/gtk/webkit/webkitdefines.h \
&gt; 	WebKit/gtk/webkit/webkitnetworkrequest.h \
&gt; 	WebKit/gtk/webkit/webkitwebbackforwardlist.h \
&gt;@@ -272,6 +273,7 @@ webkitgtk_headers += \
&gt; 	WebKit/gtk/WebCoreSupport/PasteboardHelperGtk.h
&gt; 
&gt; webkitgtk_sources += \
&gt;+	WebKit/gtk/webkit/webkitauthenticationchallenge.cpp \
&gt; 	WebKit/gtk/webkit/webkitnetworkrequest.cpp \
&gt; 	WebKit/gtk/webkit/webkitprivate.cpp \
&gt; 	WebKit/gtk/webkit/webkitwebbackforwardlist.cpp \
&gt;Index: WebCore/ChangeLog
&gt;===================================================================
&gt;--- WebCore/ChangeLog	(revision 30341)
&gt;+++ WebCore/ChangeLog	(working copy)
&gt;@@ -1,3 +1,25 @@
&gt;+2008-02-16  Luca Bruno  &lt;lethalman88@gmail.com&gt;
&gt;+
&gt;+        Reviewed by NOBODY (OOPS!).
&gt;+
&gt;+        WARNING: NO TEST CASES ADDED OR CHANGED
&gt;+
&gt;+        http://bugs.webkit.org/show_bug.cgi?id=16947
&gt;+        Bug 16947: [GTK] Missing HTTP Auth challenge
&gt;+
&gt;+        * WebCore.pro: add webkitauthenticationchallenge.cpp and webkitauthenticationchallenge.h
&gt;+        * platform/network/ResourceHandle.h:
&gt;+        * platform/network/ResourceHandleInternal.h:
&gt;+        (WebCore::ResourceHandleInternal::ResourceHandleInternal):
&gt;+        * platform/network/curl/ResourceHandleCurl.cpp:
&gt;+        (WebCore::ResourceHandle::didReceiveAuthenticationChallenge): added, called by cURL backend
&gt;+        (WebCore::ResourceHandle::receivedCredential): added
&gt;+        (WebCore::ResourceHandle::receivedRequestToContinueWithoutCredential): added
&gt;+        (WebCore::ResourceHandle::receivedCancellation): added
&gt;+        * platform/network/curl/ResourceHandleManager.cpp:
&gt;+        (WebCore::headerCallback): check for authentication
&gt;+        (WebCore::ResourceHandleManager::startJob): use the authentication
&gt;+
&gt; 2008-02-16  Kevin Ollivier  &lt;kevino@theolliviers.com&gt;
&gt; 
&gt;         wx build fix.
&gt;Index: WebCore/WebCore.pro
&gt;===================================================================
&gt;--- WebCore/WebCore.pro	(revision 30340)
&gt;+++ WebCore/WebCore.pro	(working copy)
&gt;@@ -993,6 +993,7 @@ gtk-port {
&gt;         ../WebCore/platform/gtk/ClipboardGtk.h \
&gt;         ../WebCore/platform/gtk/PasteboardHelper.h \
&gt;         ../WebKit/gtk/webkit/webkit.h \
&gt;+        ../WebKit/gtk/webkit/webkitauthenticationchallenge.h \
&gt;         ../WebKit/gtk/webkit/webkitdefines.h \
&gt;         ../WebKit/gtk/webkit/webkitnetworkrequest.h \
&gt;         ../WebKit/gtk/webkit/webkitprivate.h \
&gt;@@ -1074,6 +1075,7 @@ gtk-port {
&gt;         platform/image-decoders/bmp/BMPImageDecoder.cpp \
&gt;         platform/image-decoders/ico/ICOImageDecoder.cpp \
&gt;         platform/image-decoders/xbm/XBMImageDecoder.cpp \
&gt;+        ../WebKit/gtk/webkit/webkitauthenticationchallenge.cpp \
&gt;         ../WebKit/gtk/webkit/webkitnetworkrequest.cpp \
&gt;         ../WebKit/gtk/webkit/webkitprivate.cpp \
&gt;         ../WebKit/gtk/webkit/webkitwebbackforwardlist.cpp \
&gt;Index: WebCore/platform/network/ResourceHandle.h
&gt;===================================================================
&gt;--- WebCore/platform/network/ResourceHandle.h	(revision 30340)
&gt;+++ WebCore/platform/network/ResourceHandle.h	(working copy)
&gt;@@ -116,6 +116,12 @@ public:
&gt;     static void setHostAllowsAnyHTTPSCertificate(const String&amp;);
&gt;     static void setClientCertificate(const String&amp; host, CFDataRef);
&gt; #endif
&gt;+#if PLATFORM(GTK)
&gt;+    void didReceiveAuthenticationChallenge(const AuthenticationChallenge&amp;);
&gt;+    void receivedCredential(const AuthenticationChallenge&amp;, const Credential&amp;);
&gt;+    void receivedRequestToContinueWithoutCredential(const AuthenticationChallenge&amp;);
&gt;+    void receivedCancellation(const AuthenticationChallenge&amp;);
&gt;+#endif

^ Don&apos;t copy this block, just add GTK to the existing block eg.

#if PLATFORM(MAC) || USE(CFNETWORK) || PLATFORM(GTK)



&gt;     PassRefPtr&lt;SharedBuffer&gt; bufferedData();
&gt;     static bool supportsBufferedData();
&gt;     
&gt;Index: WebCore/platform/network/ResourceHandleInternal.h
&gt;===================================================================
&gt;--- WebCore/platform/network/ResourceHandleInternal.h	(revision 30340)
&gt;+++ WebCore/platform/network/ResourceHandleInternal.h	(working copy)
&gt;@@ -101,6 +101,8 @@ namespace WebCore {
&gt;             , m_file(0)
&gt;             , m_formDataElementIndex(0)
&gt;             , m_formDataElementDataOffset(0)
&gt;+            , m_webChallenge()
&gt;+            , m_continueWithoutCredential(false)
&gt; #endif
&gt; #if PLATFORM(QT)
&gt;             , m_job(0)
&gt;@@ -159,6 +161,9 @@ namespace WebCore {
&gt;         size_t m_formDataElementIndex;
&gt;         size_t m_formDataElementDataOffset;
&gt;         Vector&lt;char&gt; m_postBytes;
&gt;+
&gt;+        AuthenticationChallenge m_webChallenge;
&gt;+        bool m_continueWithoutCredential;
&gt; #endif
&gt; #if PLATFORM(QT)
&gt; #if QT_VERSION &lt; 0x040400
&gt;Index: WebCore/platform/network/curl/ResourceHandleCurl.cpp
&gt;===================================================================
&gt;--- WebCore/platform/network/curl/ResourceHandleCurl.cpp	(revision 30340)
&gt;+++ WebCore/platform/network/curl/ResourceHandleCurl.cpp	(working copy)
&gt;@@ -95,4 +95,69 @@ void ResourceHandle::loadResourceSynchro
&gt;     notImplemented();
&gt; }
&gt; 
&gt;+void ResourceHandle::didReceiveAuthenticationChallenge(const AuthenticationChallenge&amp; challenge)
&gt;+{
&gt;+    /* FIXME: add support for FTP, HTTPS, and FTPS authentication,
&gt;+     * get the right port, server and authentication scheme
&gt;+     */
&gt;+    ResourceHandleInternal* d = getInternal();
&gt;+    if (d-&gt;m_continueWithoutCredential)
&gt;+        return;
&gt;+    cancel();
&gt;+
&gt;+    ProtectionSpace protectionSpace;
&gt;+    unsigned previousFailureCount = 0;
&gt;+    if (challenge.isNull()) {
&gt;+        protectionSpace = ProtectionSpace(d-&gt;m_response.httpHeaderField(&quot;Host&quot;),
&gt;+                                          80,
&gt;+                                          ProtectionSpaceServerHTTP,
&gt;+                                          d-&gt;m_response.httpHeaderField(&quot;Realm&quot;),
&gt;+                                          ProtectionSpaceAuthenticationSchemeDefault);
&gt;+    } else {
&gt;+        protectionSpace = d-&gt;m_webChallenge.protectionSpace();
&gt;+        previousFailureCount = d-&gt;m_webChallenge.previousFailureCount()+1;
&gt;+    }
&gt;+    
&gt;+    d-&gt;m_webChallenge = AuthenticationChallenge(protectionSpace,
&gt;+                                                challenge.proposedCredential(),
&gt;+                                                previousFailureCount,
&gt;+                                                d-&gt;m_response,
&gt;+                                                challenge.error());
&gt;+
&gt;+    if (d-&gt;client())
&gt;+        d-&gt;client()-&gt;didReceiveAuthenticationChallenge(this, d-&gt;m_webChallenge);
&gt;+}
&gt;+
&gt;+void ResourceHandle::receivedCredential(const AuthenticationChallenge&amp; challenge, const Credential&amp; credential)
&gt;+{
&gt;+    ASSERT(!challenge.isNull());   
&gt;+    ResourceHandleInternal* d = getInternal();
&gt;+    if (challenge != d-&gt;m_webChallenge)
&gt;+        return;
&gt;+
&gt;+    d-&gt;m_webChallenge = AuthenticationChallenge(challenge.protectionSpace(),
&gt;+                                                credential,
&gt;+                                                challenge.previousFailureCount(),
&gt;+                                                challenge.failureResponse(),
&gt;+                                                challenge.error());
&gt;+
&gt;+    ResourceHandleManager::sharedInstance()-&gt;add(this);
&gt;+}
&gt;+
&gt;+void ResourceHandle::receivedRequestToContinueWithoutCredential(const AuthenticationChallenge&amp; challenge)
&gt;+{
&gt;+    ASSERT(!challenge.isNull());   
&gt;+    ResourceHandleInternal* d = getInternal();
&gt;+    if (challenge != d-&gt;m_webChallenge)
&gt;+        return;
&gt;+
&gt;+    d-&gt;m_continueWithoutCredential = true;
&gt;+    ResourceHandleManager::sharedInstance()-&gt;add(this);
&gt;+}
&gt;+
&gt;+void ResourceHandle::receivedCancellation(const AuthenticationChallenge&amp; challenge)
&gt;+{
&gt;+    notImplemented();
&gt;+}
&gt;+
&gt; } // namespace WebCore
&gt;Index: WebCore/platform/network/curl/ResourceHandleManager.cpp
&gt;===================================================================
&gt;--- WebCore/platform/network/curl/ResourceHandleManager.cpp	(revision 30340)
&gt;+++ WebCore/platform/network/curl/ResourceHandleManager.cpp	(working copy)
&gt;@@ -168,6 +168,10 @@ static size_t headerCallback(char* ptr, 
&gt;         d-&gt;m_response.setTextEncodingName(extractCharsetFromMediaType(d-&gt;m_response.httpHeaderField(&quot;Content-Type&quot;)));
&gt;         d-&gt;m_response.setSuggestedFilename(filenameFromHTTPContentDisposition(d-&gt;m_response.httpHeaderField(&quot;Content-Disposition&quot;)));
&gt; 
&gt;+        // HTTP authentication
&gt;+        if (httpCode == 401 &amp;&amp; d-&gt;m_response.isHTTP())
&gt;+            job-&gt;didReceiveAuthenticationChallenge(d-&gt;m_webChallenge);
&gt;+
&gt;         // HTTP redirection
&gt;         if (httpCode &gt;= 300 &amp;&amp; httpCode &lt; 400) {
&gt;             String location = d-&gt;m_response.httpHeaderField(&quot;location&quot;);
&gt;@@ -546,6 +550,9 @@ void ResourceHandleManager::startJob(Res
&gt;     }
&gt; 
&gt;     d-&gt;m_handle = curl_easy_init();
&gt;+    // HTTP Authentication cancels the job so be sure the new job is not cancelled
&gt;+    d-&gt;m_cancelled = false;  
&gt;+
&gt; #ifndef NDEBUG
&gt;     if (getenv(&quot;DEBUG_CURL&quot;))
&gt;         curl_easy_setopt(d-&gt;m_handle, CURLOPT_VERBOSE, 1);
&gt;@@ -575,6 +582,23 @@ void ResourceHandleManager::startJob(Res
&gt;         curl_easy_setopt(d-&gt;m_handle, CURLOPT_COOKIEJAR, m_cookieJarFileName);
&gt;     }
&gt; 
&gt;+    if (!d-&gt;m_webChallenge.isNull() &amp;&amp; !d-&gt;m_continueWithoutCredential) {
&gt;+        long curlAuth;
&gt;+        switch(d-&gt;m_webChallenge.protectionSpace().authenticationScheme()) {          
&gt;+        case ProtectionSpaceAuthenticationSchemeHTTPBasic:
&gt;+        case ProtectionSpaceAuthenticationSchemeDefault:
&gt;+        default:
&gt;+            curlAuth = CURLAUTH_BASIC;
&gt;+            break;
&gt;+        }
&gt;+
&gt;+        Credential credential = d-&gt;m_webChallenge.proposedCredential();
&gt;+        String userpwd = credential.user() + &quot;:&quot; + credential.password();
&gt;+        
&gt;+        curl_easy_setopt(d-&gt;m_handle, CURLOPT_HTTPAUTH, curlAuth);
&gt;+        curl_easy_setopt(d-&gt;m_handle, CURLOPT_USERPWD, strdup(userpwd.utf8().data()));
&gt;+    }
&gt;+
&gt;     struct curl_slist* headers = 0;
&gt;     if (job-&gt;request().httpHeaderFields().size() &gt; 0) {
&gt;         HTTPHeaderMap customHeaders = job-&gt;request().httpHeaderFields();
&gt;Index: WebKit/gtk/ChangeLog
&gt;===================================================================
&gt;--- WebKit/gtk/ChangeLog	(revision 30341)
&gt;+++ WebKit/gtk/ChangeLog	(working copy)
&gt;@@ -1,3 +1,19 @@
&gt;+2008-02-16  Luca Bruno  &lt;lethalman88@gmail.com&gt;
&gt;+
&gt;+        Reviewed by NOBODY (OOPS!).
&gt;+
&gt;+        http://bugs.webkit.org/show_bug.cgi?id=16947
&gt;+        Bug 16947: [GTK] Missing HTTP Auth challenge
&gt;+
&gt;+        * WebCoreSupport/FrameLoaderClientGtk.cpp:
&gt;+        (WebKit::FrameLoaderClient::dispatchDidReceiveAuthenticationChallenge): implemented
&gt;+        * webkit/webkitdefines.h:
&gt;+        * webkit/webkitprivate.h:
&gt;+        * webkit/webkitwebview.cpp: add authentication-requested signal and create auth dialog
&gt;+        * webkit/webkitwebview.h:
&gt;+        * webkit/webkitauthenticationchallenge.cpp: added
&gt;+        * webkit/webkitauthenticationchallenge.h: added
&gt;+
&gt; 2008-02-15  Alp Toker  &lt;alp@atoker.com&gt;
&gt; 
&gt;         Fix the GTK+ build following breakage introduced in r30243.
&gt;Index: WebKit/gtk/WebCoreSupport/FrameLoaderClientGtk.cpp
&gt;===================================================================
&gt;--- WebKit/gtk/WebCoreSupport/FrameLoaderClientGtk.cpp	(revision 30340)
&gt;+++ WebKit/gtk/WebCoreSupport/FrameLoaderClientGtk.cpp	(working copy)
&gt;@@ -30,6 +30,7 @@
&gt; #include &quot;HTMLFrameOwnerElement.h&quot;
&gt; #include &quot;HTMLNames.h&quot;
&gt; #include &quot;Language.h&quot;
&gt;+#include &quot;MainResourceLoader.h&quot;
&gt; #include &quot;MIMETypeRegistry.h&quot;
&gt; #include &quot;NotImplemented.h&quot;
&gt; #include &quot;PlatformString.h&quot;
&gt;@@ -39,6 +40,7 @@
&gt; #include &quot;kjs_binding.h&quot;
&gt; #include &quot;kjs_proxy.h&quot;
&gt; #include &quot;kjs_window.h&quot;
&gt;+#include &quot;webkitauthenticationchallenge.h&quot;
&gt; #include &quot;webkitwebview.h&quot;
&gt; #include &quot;webkitwebframe.h&quot;
&gt; #include &quot;webkitprivate.h&quot;
&gt;@@ -165,9 +167,24 @@ void FrameLoaderClient::committedLoad(Do
&gt;     fl-&gt;addData(data, length);
&gt; }
&gt; 
&gt;-void FrameLoaderClient::dispatchDidReceiveAuthenticationChallenge(DocumentLoader*, unsigned long  identifier, const AuthenticationChallenge&amp;)
&gt;+void FrameLoaderClient::dispatchDidReceiveAuthenticationChallenge(DocumentLoader* documentLoader, unsigned long identifier, const AuthenticationChallenge&amp; webChallenge)
&gt; {
&gt;-    notImplemented();
&gt;+    ResourceHandle* handle = documentLoader-&gt;mainResourceLoader()-&gt;handle();
&gt;+    ASSERT(handle);
&gt;+    if (!handle)
&gt;+        return;
&gt;+    
&gt;+    WebKitAuthenticationChallenge* challenge = webkit_authentication_challenge_new();
&gt;+    WebKitAuthenticationChallengePrivate* challengePrivate = WEBKIT_AUTHENTICATION_CHALLENGE_GET_PRIVATE(challenge);
&gt;+    *challengePrivate-&gt;webChallenge = webChallenge;
&gt;+    challengePrivate-&gt;webHandle = handle;
&gt;+    
&gt;+    Credential credential = webChallenge.proposedCredential();
&gt;+    webkit_authentication_challenge_set_user(challenge, credential.user().utf8().data());
&gt;+    webkit_authentication_challenge_set_password(challenge, credential.password().utf8().data());
&gt;+    
&gt;+    WebKitWebView* webView = getViewFromFrame(m_frame);
&gt;+    g_signal_emit_by_name(webView, &quot;authentication-requested&quot;, m_frame, challenge, NULL);
&gt; }
&gt; 
&gt; void FrameLoaderClient::dispatchDidCancelAuthenticationChallenge(DocumentLoader*, unsigned long  identifier, const AuthenticationChallenge&amp;)
&gt;Index: WebKit/gtk/webkit/webkitauthenticationchallenge.cpp
&gt;===================================================================
&gt;--- WebKit/gtk/webkit/webkitauthenticationchallenge.cpp	(revision 0)
&gt;+++ WebKit/gtk/webkit/webkitauthenticationchallenge.cpp	(revision 0)
&gt;@@ -0,0 +1,138 @@
&gt;+/*
&gt;+ * Copyright (C) 2008 Luca Bruno
&gt;+ *
&gt;+ * This library is free software; you can redistribute it and/or
&gt;+ * modify it under the terms of the GNU Library General Public
&gt;+ * License as published by the Free Software Foundation; either
&gt;+ * version 2 of the License, or (at your option) any later version.
&gt;+ *
&gt;+ * This library is distributed in the hope that it will be useful,
&gt;+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
&gt;+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
&gt;+ * Library General Public License for more details.
&gt;+ *
&gt;+ * You should have received a copy of the GNU Library General Public License
&gt;+ * along with this library; see the file COPYING.LIB.  If not, write to
&gt;+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
&gt;+ * Boston, MA 02110-1301, USA.
&gt;+ */
&gt;+
&gt;+#include &quot;config.h&quot;
&gt;+
&gt;+#include &quot;webkitauthenticationchallenge.h&quot;
&gt;+#include &quot;webkitprivate.h&quot;
&gt;+
&gt;+#include &quot;Credential.h&quot;
&gt;+#include &quot;ResourceHandle.h&quot;
&gt;+
&gt;+using namespace WebKit;
&gt;+using namespace WebCore;
&gt;+
&gt;+extern &quot;C&quot; {
&gt;+
&gt;+G_DEFINE_TYPE(WebKitAuthenticationChallenge, webkit_authentication_challenge, G_TYPE_OBJECT);
&gt;+
&gt;+static void webkit_authentication_challenge_finalize(GObject* object)
&gt;+{
&gt;+    WebKitAuthenticationChallengePrivate* challengePrivate = WEBKIT_AUTHENTICATION_CHALLENGE_GET_PRIVATE(object);
&gt;+
&gt;+    delete challengePrivate-&gt;webChallenge;
&gt;+    g_free(challengePrivate-&gt;user);
&gt;+    g_free(challengePrivate-&gt;password);
&gt;+
&gt;+    G_OBJECT_CLASS(webkit_authentication_challenge_parent_class)-&gt;finalize(object);
&gt;+}
&gt;+
&gt;+static void webkit_authentication_challenge_class_init(WebKitAuthenticationChallengeClass* challengeClass)
&gt;+{
&gt;+    g_type_class_add_private(challengeClass, sizeof(WebKitAuthenticationChallengePrivate));
&gt;+
&gt;+    G_OBJECT_CLASS(challengeClass)-&gt;finalize = webkit_authentication_challenge_finalize;
&gt;+}
&gt;+
&gt;+static void webkit_authentication_challenge_init(WebKitAuthenticationChallenge* challenge)

^ A better name (by our conventions so far) for this would be WebKitWebAuthChallenge. You&apos;ll need to change the filenames etc. to match this.



&gt;+{
&gt;+    WebKitAuthenticationChallengePrivate* challengePrivate = WEBKIT_AUTHENTICATION_CHALLENGE_GET_PRIVATE(challenge);
&gt;+
&gt;+    challengePrivate-&gt;webChallenge = new AuthenticationChallenge();
&gt;+    challengePrivate-&gt;webHandle = NULL;
&gt;+    challengePrivate-&gt;user = NULL;
&gt;+    challengePrivate-&gt;password = NULL;
&gt;+}
&gt;+
&gt;+WebKitAuthenticationChallenge* webkit_authentication_challenge_new()
&gt;+{
&gt;+    WebKitAuthenticationChallenge* challenge = WEBKIT_AUTHENTICATION_CHALLENGE(g_object_new(WEBKIT_TYPE_AUTHENTICATION_CHALLENGE, NULL));
&gt;+
&gt;+    return challenge;
&gt;+}
&gt;+
&gt;+void webkit_authentication_challenge_set_user(WebKitAuthenticationChallenge* challenge, const gchar* user)
&gt;+{
&gt;+    g_return_if_fail(WEBKIT_IS_AUTHENTICATION_CHALLENGE(challenge));
&gt;+    g_return_if_fail(user);
&gt;+    
&gt;+    WebKitAuthenticationChallengePrivate* challengePrivate = WEBKIT_AUTHENTICATION_CHALLENGE_GET_PRIVATE(challenge);
&gt;+
&gt;+    g_free(challengePrivate-&gt;user);
&gt;+    challengePrivate-&gt;user = g_strdup(user);
&gt;+}
&gt;+
&gt;+const gchar* webkit_authentication_challenge_get_user(WebKitAuthenticationChallenge* challenge)
&gt;+{
&gt;+    g_return_val_if_fail(WEBKIT_IS_AUTHENTICATION_CHALLENGE(challenge), NULL);
&gt;+
&gt;+    WebKitAuthenticationChallengePrivate* challengePrivate = WEBKIT_AUTHENTICATION_CHALLENGE_GET_PRIVATE(challenge);
&gt;+
&gt;+    return challengePrivate-&gt;user;
&gt;+}
&gt;+
&gt;+void webkit_authentication_challenge_set_password(WebKitAuthenticationChallenge* challenge, const gchar* password)
&gt;+{
&gt;+    g_return_if_fail(WEBKIT_IS_AUTHENTICATION_CHALLENGE(challenge));
&gt;+    g_return_if_fail(password);
&gt;+    
&gt;+    WebKitAuthenticationChallengePrivate* challengePrivate = WEBKIT_AUTHENTICATION_CHALLENGE_GET_PRIVATE(challenge);
&gt;+
&gt;+    g_free(challengePrivate-&gt;password);
&gt;+    challengePrivate-&gt;password = g_strdup(password);
&gt;+}
&gt;+
&gt;+const gchar* webkit_authentication_challenge_get_password(WebKitAuthenticationChallenge* challenge)
&gt;+{
&gt;+    g_return_val_if_fail(WEBKIT_IS_AUTHENTICATION_CHALLENGE(challenge), NULL);
&gt;+
&gt;+    WebKitAuthenticationChallengePrivate* challengePrivate = WEBKIT_AUTHENTICATION_CHALLENGE_GET_PRIVATE(challenge);

^ We changed coding style when you were gone :-) We now use a direct struct reference to -&gt;priv. You&apos;ll need to take a look at the other classes to see how it&apos;s done and update this patch.


&gt;+
&gt;+    return challengePrivate-&gt;password;
&gt;+}
&gt;+
&gt;+void webkit_authentication_challenge_use_credential(WebKitAuthenticationChallenge* challenge)
&gt;+{
&gt;+    g_return_if_fail(WEBKIT_IS_AUTHENTICATION_CHALLENGE(challenge));
&gt;+
&gt;+    WebKitAuthenticationChallengePrivate* challengePrivate = WEBKIT_AUTHENTICATION_CHALLENGE_GET_PRIVATE(challenge);
&gt;+    Credential credential = Credential(challengePrivate-&gt;user,
&gt;+                                       challengePrivate-&gt;password,
&gt;+                                       CredentialPersistenceForSession);

^ Careful, you need to use String::fromUTF8() here and for every other string conversion in this patch. I filed Bug #17432 to get this harmful implicit conversion removed, but till then you need to be vigilant.



&gt;+    challengePrivate-&gt;webHandle-&gt;receivedCredential(*challengePrivate-&gt;webChallenge, credential);
&gt;+}
&gt;+
&gt;+void webkit_authentication_challenge_continue_without_credential(WebKitAuthenticationChallenge* challenge)
&gt;+{
&gt;+    g_return_if_fail(WEBKIT_IS_AUTHENTICATION_CHALLENGE(challenge));
&gt;+
&gt;+    WebKitAuthenticationChallengePrivate* challengePrivate = WEBKIT_AUTHENTICATION_CHALLENGE_GET_PRIVATE(challenge);
&gt;+    challengePrivate-&gt;webHandle-&gt;receivedRequestToContinueWithoutCredential(*challengePrivate-&gt;webChallenge);
&gt;+}
&gt;+
&gt;+void webkit_authentication_challenge_cancel(WebKitAuthenticationChallenge* challenge)
&gt;+{
&gt;+    g_return_if_fail(WEBKIT_IS_AUTHENTICATION_CHALLENGE(challenge));
&gt;+
&gt;+    WebKitAuthenticationChallengePrivate* challengePrivate = WEBKIT_AUTHENTICATION_CHALLENGE_GET_PRIVATE(challenge);
&gt;+
&gt;+    challengePrivate-&gt;webHandle-&gt;receivedCancellation(*challengePrivate-&gt;webChallenge);
&gt;+}
&gt;+
&gt;+}
&gt;Index: WebKit/gtk/webkit/webkitauthenticationchallenge.h
&gt;===================================================================
&gt;--- WebKit/gtk/webkit/webkitauthenticationchallenge.h	(revision 0)
&gt;+++ WebKit/gtk/webkit/webkitauthenticationchallenge.h	(revision 0)
&gt;@@ -0,0 +1,73 @@
&gt;+/*
&gt;+ * Copyright (C) 2008 Luca Bruno
&gt;+ *
&gt;+ * This library is free software; you can redistribute it and/or
&gt;+ * modify it under the terms of the GNU Library General Public
&gt;+ * License as published by the Free Software Foundation; either
&gt;+ * version 2 of the License, or (at your option) any later version.
&gt;+ *
&gt;+ * This library is distributed in the hope that it will be useful,
&gt;+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
&gt;+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
&gt;+ * Library General Public License for more details.
&gt;+ *
&gt;+ * You should have received a copy of the GNU Library General Public License
&gt;+ * along with this library; see the file COPYING.LIB.  If not, write to
&gt;+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
&gt;+ * Boston, MA 02110-1301, USA.
&gt;+ */
&gt;+
&gt;+#ifndef WEBKIT_AUTHENTICATION_CHALLENGE_H
&gt;+#define WEBKIT_AUTHENTICATION_CHALLENGE_H
&gt;+
&gt;+#include &lt;glib-object.h&gt;
&gt;+
&gt;+#include &quot;webkitdefines.h&quot;
&gt;+
&gt;+G_BEGIN_DECLS
&gt;+
&gt;+#define WEBKIT_TYPE_AUTHENTICATION_CHALLENGE            (webkit_authentication_challenge_get_type())
&gt;+#define WEBKIT_AUTHENTICATION_CHALLENGE(obj)             (G_TYPE_CHECK_INSTANCE_CAST((obj), WEBKIT_TYPE_AUTHENTICATION_CHALLENGE, WebKitAuthenticationChallenge))
&gt;+#define WEBKIT_AUTHENTICATION_CHALLENGE_CLASS(klass)     (G_TYPE_CHECK_CLASS_CAST((klass),  WEBKIT_TYPE_AUTHENTICATION_CHALLENGE, WebKitAuthenticationChallengeClass))
&gt;+#define WEBKIT_IS_AUTHENTICATION_CHALLENGE(obj)         (G_TYPE_CHECK_INSTANCE_TYPE((obj), WEBKIT_TYPE_AUTHENTICATION_CHALLENGE))
&gt;+#define WEBKIT_IS_AUTHENTICATION_CHALLENGE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass),  WEBKIT_TYPE_AUTHENTICATION_CHALLENGE))
&gt;+#define WEBKIT_AUTHENTICATION_CHALLENGE_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS((obj),  WEBKIT_TYPE_AUTHENTICATION_CHALLENGE, WebKitAuthenticationChallengeClass))
&gt;+
&gt;+struct _WebKitAuthenticationChallenge {
&gt;+    GObject parent;
&gt;+};
&gt;+
&gt;+struct _WebKitAuthenticationChallengeClass {
&gt;+    GObjectClass parent;
&gt;+};
&gt;+
&gt;+WEBKIT_API GType
&gt;+webkit_authentication_challenge_get_type (void);
&gt;+
&gt;+WEBKIT_API WebKitAuthenticationChallenge*
&gt;+webkit_authentication_challenge_new ();
&gt;+
&gt;+WEBKIT_API void
&gt;+webkit_authentication_challenge_set_user (WebKitAuthenticationChallenge* challenge, const gchar* user);
&gt;+
&gt;+WEBKIT_API const gchar*
&gt;+webkit_authentication_challenge_get_user (WebKitAuthenticationChallenge* challenge);
&gt;+
&gt;+WEBKIT_API void
&gt;+webkit_authentication_challenge_set_password (WebKitAuthenticationChallenge* challenge, const gchar* password);
&gt;+
&gt;+WEBKIT_API const gchar*
&gt;+webkit_authentication_challenge_get_password (WebKitAuthenticationChallenge* challenge);
&gt;+
&gt;+WEBKIT_API void
&gt;+webkit_authentication_challenge_use_credential (WebKitAuthenticationChallenge* challenge);
&gt;+
&gt;+WEBKIT_API void
&gt;+webkit_authentication_challenge_continue_without_credential (WebKitAuthenticationChallenge* challenge);
&gt;+
&gt;+WEBKIT_API void
&gt;+webkit_authentication_challenge_cancel (WebKitAuthenticationChallenge* challenge);
&gt;+
&gt;+G_END_DECLS
&gt;+
&gt;+#endif
&gt;Index: WebKit/gtk/webkit/webkitdefines.h
&gt;===================================================================
&gt;--- WebKit/gtk/webkit/webkitdefines.h	(revision 30340)
&gt;+++ WebKit/gtk/webkit/webkitdefines.h	(working copy)
&gt;@@ -40,6 +40,9 @@
&gt; 
&gt; G_BEGIN_DECLS
&gt; 
&gt;+typedef struct _WebKitAuthenticationChallenge WebKitAuthenticationChallenge;
&gt;+typedef struct _WebKitAuthenticationChallengeClass WebKitAuthenticationChallengeClass;
&gt;+
&gt; typedef struct _WebKitNetworkRequest WebKitNetworkRequest;
&gt; typedef struct _WebKitNetworkRequestClass WebKitNetworkRequestClass;
&gt; 
&gt;Index: WebKit/gtk/webkit/webkitprivate.h
&gt;===================================================================
&gt;--- WebKit/gtk/webkit/webkitprivate.h	(revision 30340)
&gt;+++ WebKit/gtk/webkit/webkitprivate.h	(working copy)
&gt;@@ -26,6 +26,7 @@
&gt;  * They are using WebCore which musn&apos;t be exposed to the outer world.
&gt;  */
&gt; 
&gt;+#include &lt;webkit/webkitauthenticationchallenge.h&gt;
&gt; #include &lt;webkit/webkitdefines.h&gt;
&gt; #include &lt;webkit/webkitwebview.h&gt;
&gt; #include &lt;webkit/webkitwebframe.h&gt;
&gt;@@ -33,6 +34,7 @@
&gt; #include &lt;webkit/webkitnetworkrequest.h&gt;
&gt; #include &lt;webkit/webkitwebbackforwardlist.h&gt;
&gt; 
&gt;+#include &quot;AuthenticationChallenge.h&quot;
&gt; #include &quot;BackForwardList.h&quot;
&gt; #include &quot;HistoryItem.h&quot;
&gt; #include &quot;Settings.h&quot;
&gt;@@ -103,6 +105,15 @@ extern &quot;C&quot; {
&gt;     struct _WebKitNetworkRequestPrivate {
&gt;         gchar* uri;
&gt;     };
&gt;+ 
&gt;+    #define WEBKIT_AUTHENTICATION_CHALLENGE_GET_PRIVATE(obj)    (G_TYPE_INSTANCE_GET_PRIVATE((obj), WEBKIT_TYPE_AUTHENTICATION_CHALLENGE, WebKitAuthenticationChallengePrivate))
&gt;+    typedef struct _WebKitAuthenticationChallengePrivate WebKitAuthenticationChallengePrivate;
&gt;+    struct _WebKitAuthenticationChallengePrivate {
&gt;+        WebCore::AuthenticationChallenge* webChallenge;
&gt;+        WebCore::ResourceHandle* webHandle;
&gt;+        gchar* user;
&gt;+        gchar* password;
&gt;+    };
&gt; 
&gt;     WebKitWebFrame*
&gt;     webkit_web_frame_init_with_web_view(WebKitWebView*, WebCore::HTMLFrameOwnerElement*);
&gt;Index: WebKit/gtk/webkit/webkitwebview.cpp
&gt;===================================================================
&gt;--- WebKit/gtk/webkit/webkitwebview.cpp	(revision 30340)
&gt;+++ WebKit/gtk/webkit/webkitwebview.cpp	(working copy)
&gt;@@ -85,6 +85,7 @@ enum {
&gt;     COPY_CLIPBOARD,
&gt;     PASTE_CLIPBOARD,
&gt;     CUT_CLIPBOARD,
&gt;+    AUTHENTICATION_REQUESTED,
&gt;     LAST_SIGNAL
&gt; };
&gt; 
&gt;@@ -379,7 +380,7 @@ static gboolean webkit_web_view_focus_in
&gt;     GtkWidget* toplevel = gtk_widget_get_toplevel(widget);
&gt;     if (GTK_WIDGET_TOPLEVEL(toplevel) &amp;&amp; gtk_window_has_toplevel_focus(GTK_WINDOW(toplevel))) {
&gt;         WebKitWebView* webView = WEBKIT_WEB_VIEW(widget);
&gt;-
&gt;+        
&gt;         Frame* frame = core(webView)-&gt;mainFrame();
&gt;         core(webView)-&gt;focusController()-&gt;setActive(frame);
&gt;     }
&gt;@@ -605,6 +606,82 @@ static void webkit_web_view_real_paste_c
&gt;     frame-&gt;editor()-&gt;command(&quot;Paste&quot;).execute();
&gt; }
&gt; 
&gt;+typedef struct
&gt;+{
&gt;+    GtkWidget* user_entry;
&gt;+    GtkWidget* password_entry;
&gt;+    WebKitAuthenticationChallenge* challenge;
&gt;+} AuthenticationDialogData;
&gt;+
&gt;+static void webkit_web_view_authentication_dialog_response_cb(GtkWidget* dialog, gint response, gpointer user_data)
&gt;+{
&gt;+    AuthenticationDialogData* data = reinterpret_cast&lt;AuthenticationDialogData*&gt;(user_data);
&gt;+
&gt;+    switch (response) {
&gt;+    case GTK_RESPONSE_NONE:
&gt;+    case GTK_RESPONSE_DELETE_EVENT:
&gt;+    case GTK_RESPONSE_REJECT:
&gt;+        webkit_authentication_challenge_continue_without_credential(data-&gt;challenge);
&gt;+        break;
&gt;+    case GTK_RESPONSE_ACCEPT:
&gt;+        webkit_authentication_challenge_set_user(data-&gt;challenge,
&gt;+                                                 gtk_entry_get_text(GTK_ENTRY(data-&gt;user_entry)));
&gt;+        webkit_authentication_challenge_set_password(data-&gt;challenge,
&gt;+                                                     gtk_entry_get_text(GTK_ENTRY(data-&gt;password_entry)));
&gt;+        webkit_authentication_challenge_use_credential(data-&gt;challenge);
&gt;+        break;
&gt;+    default:
&gt;+        g_assert_not_reached ();
&gt;+        break;
&gt;+    }
&gt;+
&gt;+    gtk_widget_destroy(dialog);
&gt;+    g_object_unref(data-&gt;challenge);
&gt;+}
&gt;+
&gt;+static void webkit_web_view_real_authentication_requested(WebKitWebView* webView, WebKitWebFrame* webFrame,
&gt;+                                                          WebKitAuthenticationChallenge* challenge)
&gt;+{
&gt;+    GtkWidget* window;
&gt;+    GtkWidget* dialog;
&gt;+    GtkWidget* table;
&gt;+    GtkWidget* label;
&gt;+    AuthenticationDialogData* data;
&gt;+
&gt;+    window = gtk_widget_get_toplevel(GTK_WIDGET(webView));
&gt;+    gchar* title = g_strconcat(&quot;Authentication - &quot;, webkit_web_frame_get_uri(webFrame), NULL);
&gt;+    dialog = gtk_dialog_new_with_buttons(title, GTK_WIDGET_TOPLEVEL(window) ? GTK_WINDOW(window) : 0,
&gt;+                                         (GtkDialogFlags)(GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT),
&gt;+                                         GTK_STOCK_OK, GTK_RESPONSE_ACCEPT,
&gt;+                                         GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT,
&gt;+                                         NULL);
&gt;+    g_free(title);
&gt;+    gtk_dialog_set_default_response(GTK_DIALOG(dialog), GTK_RESPONSE_REJECT);
&gt;+
&gt;+    data = g_new(AuthenticationDialogData, 1);
&gt;+    data-&gt;user_entry = gtk_entry_new();
&gt;+    data-&gt;password_entry = gtk_entry_new();
&gt;+    gtk_entry_set_visibility(GTK_ENTRY(data-&gt;password_entry), FALSE);
&gt;+    data-&gt;challenge = challenge;
&gt;+    g_signal_connect(dialog, &quot;response&quot;, G_CALLBACK(webkit_web_view_authentication_dialog_response_cb), data);
&gt;+
&gt;+    table = gtk_table_new(2, 2, FALSE);
&gt;+    gtk_table_set_col_spacings(GTK_TABLE(table), 3);
&gt;+    gtk_table_set_row_spacings(GTK_TABLE(table), 3);
&gt;+
&gt;+    label = gtk_label_new(&quot;Username:&quot;);
&gt;+    gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 0, 1);
&gt;+    gtk_table_attach_defaults(GTK_TABLE(table), data-&gt;user_entry, 1, 2, 0, 1);
&gt;+
&gt;+    label = gtk_label_new(&quot;Password:&quot;);
&gt;+    gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 1, 2);
&gt;+    gtk_table_attach_defaults(GTK_TABLE(table), data-&gt;password_entry, 1, 2, 1, 2);
&gt;+
&gt;+    gtk_container_add(GTK_CONTAINER(GTK_DIALOG(dialog)-&gt;vbox), table);
&gt;+    gtk_widget_show_all(table);
&gt;+    gtk_widget_show(dialog);
&gt;+}
&gt;+
&gt; static void webkit_web_view_finalize(GObject* object)
&gt; {
&gt;     WebKitWebView* webView = WEBKIT_WEB_VIEW(object);
&gt;@@ -971,6 +1048,25 @@ static void webkit_web_view_class_init(W
&gt;             g_cclosure_marshal_VOID__VOID,
&gt;             G_TYPE_NONE, 0);
&gt; 
&gt;+    /**
&gt;+     * WebKitWebView::authentication-requested:
&gt;+     * @web_view: the object which received the signal
&gt;+     *
&gt;+     * The ::authentication-requested signal is emitted when an authentication is
&gt;+     * requested from the server to access a resource.
&gt;+     *
&gt;+     * The default behavior for this signal is creating an input dialog to get a suitable credential.
&gt;+     */
&gt;+    webkit_web_view_signals[AUTHENTICATION_REQUESTED] = g_signal_new(&quot;authentication-requested&quot;,
&gt;+            G_TYPE_FROM_CLASS(webViewClass),
&gt;+            (GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION),
&gt;+            G_STRUCT_OFFSET(WebKitWebViewClass, authentication_requested),
&gt;+            NULL, NULL,
&gt;+            webkit_marshal_VOID__OBJECT_OBJECT,
&gt;+            G_TYPE_NONE, 2,
&gt;+            WEBKIT_TYPE_WEB_FRAME,
&gt;+            WEBKIT_TYPE_AUTHENTICATION_CHALLENGE);
&gt;+
&gt;     /*
&gt;      * implementations of virtual methods
&gt;      */
&gt;@@ -986,6 +1082,7 @@ static void webkit_web_view_class_init(W
&gt;     webViewClass-&gt;cut_clipboard = webkit_web_view_real_cut_clipboard;
&gt;     webViewClass-&gt;copy_clipboard = webkit_web_view_real_copy_clipboard;
&gt;     webViewClass-&gt;paste_clipboard = webkit_web_view_real_paste_clipboard;
&gt;+    webViewClass-&gt;authentication_requested = webkit_web_view_real_authentication_requested;
&gt; 
&gt;     GObjectClass* objectClass = G_OBJECT_CLASS(webViewClass);
&gt;     objectClass-&gt;finalize = webkit_web_view_finalize;
&gt;Index: WebKit/gtk/webkit/webkitwebview.h
&gt;===================================================================
&gt;--- WebKit/gtk/webkit/webkitwebview.h	(revision 30340)
&gt;+++ WebKit/gtk/webkit/webkitwebview.h	(working copy)
&gt;@@ -83,6 +83,7 @@ struct _WebKitWebViewClass {
&gt;     void (*cut_clipboard) (WebKitWebView* web_view);
&gt;     void (*copy_clipboard) (WebKitWebView* web_view);
&gt;     void (*paste_clipboard) (WebKitWebView* web_view);
&gt;+    void (*authentication_requested) (WebKitWebView* web_view, WebKitWebFrame* web_frame, WebKitAuthenticationChallenge* authentication_challenge);
&gt; 
&gt;     /*
&gt;      * internal




I think apart from these issues the patch is good to go. Looking forward to seeing the revised patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>71152</commentid>
    <comment_count>6</comment_count>
      <attachid>19213</attachid>
    <who name="Luca Bruno">lethalman88</who>
    <bug_when>2008-02-19 12:21:56 -0800</bug_when>
    <thetext>Created attachment 19213
fix style issues

Fixed style issues hopefully well according to your suggestions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>71493</commentid>
    <comment_count>7</comment_count>
    <who name="Jan Alonzo">jmalonzo</who>
    <bug_when>2008-02-22 04:10:52 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; Created an attachment (id=19213) [edit]
&gt; fix style issues
&gt; 
&gt; Fixed style issues hopefully well according to your suggestions.
&gt; 

Hi Luca

Is it possible to have some API documentation before this gets committed?

cheers</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>71495</commentid>
    <comment_count>8</comment_count>
    <who name="Luca Bruno">lethalman88</who>
    <bug_when>2008-02-22 06:03:38 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; Hi Luca
&gt; 
&gt; Is it possible to have some API documentation before this gets committed?
&gt; 
&gt; cheers

Ops, of course ;) i&apos;ll also add some gobject properties. 

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>71499</commentid>
    <comment_count>9</comment_count>
      <attachid>19279</attachid>
    <who name="Luca Bruno">lethalman88</who>
    <bug_when>2008-02-22 06:53:43 -0800</bug_when>
    <thetext>Created attachment 19279
add comments

I commented the API, more comments needed?
Also added gobject properties for user and password.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>71624</commentid>
    <comment_count>10</comment_count>
      <attachid>19305</attachid>
    <who name="Luca Bruno">lethalman88</who>
    <bug_when>2008-02-23 12:41:04 -0800</bug_when>
    <thetext>Created attachment 19305
fail on response fired

When the response has been fired the application shouldn&apos;t be able to fire it again for networking matters. So i added a priv-&gt;response_fired variable to be checked. With this latest change this patch should hopefully be complete.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>71699</commentid>
    <comment_count>11</comment_count>
    <who name="Jan Alonzo">jmalonzo</who>
    <bug_when>2008-02-24 00:29:55 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; Created an attachment (id=19305) [edit]
&gt; fail on response fired
&gt; 
&gt; When the response has been fired the application shouldn&apos;t be able to fire it
&gt; again for networking matters. So i added a priv-&gt;response_fired variable to be
&gt; checked. With this latest change this patch should hopefully be complete.

Hi Lethalman

Some issues:

1. There are still instances where the dialog pops up at least twice (e.g, trying to log to my router pops up the dialog twice).

2. the table container shouldn&apos;t expand when the window resizes. Ditto with the username/password labels.

3. The OK/Cancel button should be Cancel/Ok for consistency with gtk/gnome apps.

4. The dialog window title says &quot;Authentication - http://www.google.com&quot; even though the domain i&apos;m logging to is not google&apos;s? Maybe a different bug but fyi.

5. Also, should we add a title header with more info about the site we&apos;re logging into (like FF for example)?

That&apos;s all. Good work so far!

Cheers
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>71703</commentid>
    <comment_count>12</comment_count>
    <who name="Luca Bruno">lethalman88</who>
    <bug_when>2008-02-24 00:40:40 -0800</bug_when>
    <thetext>&gt; 1. There are still instances where the dialog pops up at least twice (e.g,
&gt; trying to log to my router pops up the dialog twice).

Is it an HTTP Basic Auth? Can you give me more informations?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>71766</commentid>
    <comment_count>13</comment_count>
      <attachid>19324</attachid>
    <who name="Luca Bruno">lethalman88</who>
    <bug_when>2008-02-24 12:25:59 -0800</bug_when>
    <thetext>Created attachment 19324
keep the source handle

A slightly better patch which keeps track of the source handle directly in the AuthenticationChallenge.

The problem with the authentication that&apos;s requested twice is the lack of a cache for the credentials.
What we need is to specify the credential for each web resource.
But the credential is specified by the application. Should we keep the credential for each host or this is an end-application job?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>73602</commentid>
    <comment_count>14</comment_count>
      <attachid>19735</attachid>
    <who name="Tommi Komulainen">tkomulai+webkit</who>
    <bug_when>2008-03-13 11:25:31 -0700</bug_when>
    <thetext>Created attachment 19735
CURL: Basic Authentication support

The previous patch didn&apos;t apply to trunk so I updated it to what I think matches the current state. Quickly testing it seems to work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>73605</commentid>
    <comment_count>15</comment_count>
      <attachid>19737</attachid>
    <who name="Tommi Komulainen">tkomulai+webkit</who>
    <bug_when>2008-03-13 11:30:05 -0700</bug_when>
    <thetext>Created attachment 19737
Soup: HTTP authentication

This is pretty much a direct copy of the CURL implementation, posting the patch in hopes someone finds it useful.

I&apos;m not happy with the way SoupAuth* object is being stored. IMO it should be kept along with AuthenticationChallenge, but I ended up getting one g_object_unref() too many when trying to keep a ref&apos;d pointer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>79430</commentid>
    <comment_count>16</comment_count>
    <who name="Luca Ferretti">elle.uca</who>
    <bug_when>2008-05-02 06:40:49 -0700</bug_when>
    <thetext>There are other GNOME/GTK+ HIG &quot;violations&quot;

&gt;+    gtk_dialog_set_default_response(GTK_DIALOG(dialog), GTK_RESPONSE_REJECT);

Some missing calls:
  gtk_dialog_set_has_separator(GTK_DIALOG(dialog), FALSE);
  gtk_container_set_border_width (GTK_CONTAINER (dialog), 5);
  gtk_box_set_spacing (GTK_BOX (GTK_DIALOG (dialog)-&gt;vbox), 2);

those (plus the other _set_border_width below) are needed to ensure 12 pixels spacing between inner widgets and dialog border and between the button area

&gt;+    table = gtk_table_new(2, 2, FALSE);
&gt;+    gtk_table_set_col_spacings(GTK_TABLE(table), 3);
&gt;+    gtk_table_set_row_spacings(GTK_TABLE(table), 3);

col_spacings should be 12 pixels, row_spacings should be 6 pixels.

Plus add
  gtk_container_set_border_width (GTK_CONTAINER(table), 5);

&gt;+    label = gtk_label_new(&quot;Username:&quot;);
&lt;snip&gt;
&gt;+    label = gtk_label_new(&quot;Password:&quot;);

missing accelerators (&quot;_Username:&quot; and &quot;_Password:&quot;) and missing l10n/i18n
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98139</commentid>
    <comment_count>17</comment_count>
    <who name="Szabolcs Frühwald">szab100</who>
    <bug_when>2008-11-10 02:36:40 -0800</bug_when>
    <thetext>Hi all,


 first of all, thank you for your work. We need this function working asap, but this patch is really outdated. Sources under WebCore/* are really changed in current trunk. I just ask you Luca or anybody else to update this patch to make it working with current trunk.

It would be nice if this time the patch would get reviewed and committed!!

Thanks, i hope you guys can resurrect this FIX!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>106245</commentid>
    <comment_count>18</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2009-01-19 08:38:56 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; Created an attachment (id=19737) [review]
&gt; Soup: HTTP authentication
&gt; 
&gt; This is pretty much a direct copy of the CURL implementation, posting the patch
&gt; in hopes someone finds it useful.
&gt; 
&gt; I&apos;m not happy with the way SoupAuth* object is being stored. IMO it should be
&gt; kept along with AuthenticationChallenge, but I ended up getting one
&gt; g_object_unref() too many when trying to keep a ref&apos;d pointer.
&gt; 

It seems to me like you forgot to add the AuthenticationChallengeSoup.cpp file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>106252</commentid>
    <comment_count>19</comment_count>
    <who name="Christian Dywan">christian</who>
    <bug_when>2009-01-19 10:09:01 -0800</bug_when>
    <thetext>Do we actually need this feature in this form anymore now that the plan is to expose libSoup?

Maybe it would actually be more useful at this point to put a dialogue and login storage in a libSoupGtk package or something similar. That way any HTTP client based on Gtk could use the same interface.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>109451</commentid>
    <comment_count>20</comment_count>
      <attachid>27591</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2009-02-12 03:55:42 -0800</bug_when>
    <thetext>Created attachment 27591
keyring.patch

Since we are going to only support soup in the GTK+ backend, this patchs adds HTTP auth the simple way: connect to the &apos;authenticate&apos; signal in the session, and use gnome keyring for the credentials storage. It&apos;s optionally enabled with --enable-gnomekeyring for those who don&apos;t want to use it for some reason.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>109453</commentid>
    <comment_count>21</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2009-02-12 04:13:40 -0800</bug_when>
    <thetext>Forgot to say, you *need* gnome-keyring trunk, because was a bug that prevented from using it with any C++ compiler. So we should depend on 2.26 when it&apos;s out...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>109561</commentid>
    <comment_count>22</comment_count>
      <attachid>19737</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2009-02-12 14:35:19 -0800</bug_when>
    <thetext>Comment on attachment 19737
Soup: HTTP authentication

obsoleted by xan&apos;s patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>109563</commentid>
    <comment_count>23</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2009-02-12 14:39:47 -0800</bug_when>
    <thetext>(In reply to comment #20)
&gt; Created an attachment (id=27591) [review]
&gt; keyring.patch
&gt; 
&gt; Since we are going to only support soup in the GTK+ backend, this patchs adds
&gt; HTTP auth the simple way: connect to the &apos;authenticate&apos; signal in the session,
&gt; and use gnome keyring for the credentials storage. It&apos;s optionally enabled with
&gt; --enable-gnomekeyring for those who don&apos;t want to use it for some reason.
&gt; 

So that we can remember the things I pointed out: we probably want to take advantage of Frame being passed to ResourceHandle::start and store the frame, or even the WebKitWebView in ResourceHandleInternal, so that we can get the toplevel for the dialog. Qt seems to deal with this in a similar way. Notice that we will have a frameless jobs when Download lands. I wonder if we should provide some kind of API to WebKitDownload, to specify the parent window, for that case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>109851</commentid>
    <comment_count>24</comment_count>
      <attachid>27698</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2009-02-16 06:57:54 -0800</bug_when>
    <thetext>Created attachment 27698
authdialog.patch

Create a WebKitSoupAuthDialog soup session feature with the UI and, optionally, keyring storage of credentiales. If keyring is not enabled the feature is still usable, but obviously nothing will be remembered across sessions. Also, as this is a feature, it will be possible to completely disable it by users when the get_session patch lands.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>109854</commentid>
    <comment_count>25</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2009-02-16 09:06:20 -0800</bug_when>
    <thetext>I&apos;m playing with the patch here, and I like it. Some nitpicks:

&gt;  8 files changed, 391 insertions(+), 2 deletions(-)
&gt;  create mode 100644 WebCore/platform/network/soup/webkit-soup-auth-dialog.c
&gt;  create mode 100644 WebCore/platform/network/soup/webkit-soup-auth-dialog.h

I believe you will want to rename these so that they match WebCore&apos;s naming convention.

&gt; +    gtk_window_set_default_size(GTK_WINDOW(dialog), 100, 50);
&gt; +    gtk_dialog_set_default_response(GTK_DIALOG(dialog), GTK_RESPONSE_ACCEPT);
&gt; +                                         

This last line, and some more in this file have unwanted trailing whitespaces. Since I know you&apos;re an Emacs user and enjoys learning new tricks I&apos;m gonna say set show-trailing-whitespace to t and/or M-x delete-trailing-whitespace =)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>109856</commentid>
    <comment_count>26</comment_count>
    <who name="Dan Winship">danw</who>
    <bug_when>2009-02-16 09:25:32 -0800</bug_when>
    <thetext>&gt; +static void session_authenticate(SoupSession* session, SoupMessage* msg, SoupAuth* auth, gboolean retrying)

you&apos;re missing &quot;, gpointer user_data&quot; at the end</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>109873</commentid>
    <comment_count>27</comment_count>
      <attachid>27704</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2009-02-16 11:57:01 -0800</bug_when>
    <thetext>Created attachment 27704
add parent window information to the auth dialog

I believe we could do something like this to pass the parent window to the dialog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>109880</commentid>
    <comment_count>28</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2009-02-16 13:24:04 -0800</bug_when>
    <thetext>(In reply to comment #25)
&gt; I&apos;m playing with the patch here, and I like it. Some nitpicks:
&gt; 
&gt; &gt;  8 files changed, 391 insertions(+), 2 deletions(-)
&gt; &gt;  create mode 100644 WebCore/platform/network/soup/webkit-soup-auth-dialog.c
&gt; &gt;  create mode 100644 WebCore/platform/network/soup/webkit-soup-auth-dialog.h
&gt; 
&gt; I believe you will want to rename these so that they match WebCore&apos;s naming
&gt; convention.

Well, I&apos;ve done this on purpose, because they are pure C files (and hence .c and not .cpp), but I don&apos;t really care either way.

&gt; 
&gt; &gt; +    gtk_window_set_default_size(GTK_WINDOW(dialog), 100, 50);
&gt; &gt; +    gtk_dialog_set_default_response(GTK_DIALOG(dialog), GTK_RESPONSE_ACCEPT);
&gt; &gt; +                                         
&gt; 
&gt; This last line, and some more in this file have unwanted trailing whitespaces.
&gt; Since I know you&apos;re an Emacs user and enjoys learning new tricks I&apos;m gonna say
&gt; set show-trailing-whitespace to t and/or M-x delete-trailing-whitespace =)
&gt; 

Ah, didn&apos;t know about the former, good one. Should also configure git to refuse to commit with trailing white-space, that way you can&apos;t miss it :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>109881</commentid>
    <comment_count>29</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2009-02-16 13:32:18 -0800</bug_when>
    <thetext>(In reply to comment #26)
&gt; &gt; +static void session_authenticate(SoupSession* session, SoupMessage* msg, SoupAuth* auth, gboolean retrying)
&gt; 
&gt; you&apos;re missing &quot;, gpointer user_data&quot; at the end
&gt; 

Yes, although leaving the user_data parameter out when it&apos;s unused is kind of common I think (because of G_CALLBACK probably).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>109882</commentid>
    <comment_count>30</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2009-02-16 13:35:15 -0800</bug_when>
    <thetext>(In reply to comment #27)
&gt; Created an attachment (id=27704) [review]
&gt; add parent window information to the auth dialog
&gt; 
&gt; I believe we could do something like this to pass the parent window to the
&gt; dialog.
&gt; 

I wonder if we should just go the extra mile and provide a way for the feature to ask for the current toplevel each time &apos;authenticate&apos; is fired. That way we can keep it pure C and completely independent from WebKit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>109897</commentid>
    <comment_count>31</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2009-02-16 15:33:29 -0800</bug_when>
    <thetext>(In reply to comment #30)
&gt; I wonder if we should just go the extra mile and provide a way for the feature
&gt; to ask for the current toplevel each time &apos;authenticate&apos; is fired. That way we
&gt; can keep it pure C and completely independent from WebKit.

I don&apos;t know how that would be done, but I would rather keep this simple. The current code plus that change can already be easily be copied to be used elsewhere with minimal change. And we don&apos;t really need to make simple things like this too generic, IMO.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>109923</commentid>
    <comment_count>32</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2009-02-16 22:32:40 -0800</bug_when>
    <thetext>(In reply to comment #31)
&gt; (In reply to comment #30)
&gt; &gt; I wonder if we should just go the extra mile and provide a way for the feature
&gt; &gt; to ask for the current toplevel each time &apos;authenticate&apos; is fired. That way we
&gt; &gt; can keep it pure C and completely independent from WebKit.
&gt; 
&gt; I don&apos;t know how that would be done, but I would rather keep this simple. The
&gt; current code plus that change can already be easily be copied to be used
&gt; elsewhere with minimal change. And we don&apos;t really need to make simple things
&gt; like this too generic, IMO.
&gt; 

We just need a signal to connect from ResourceHandleSoup.cpp so we can pass the current toplevel each time it&apos;s needed. I don&apos;t think it&apos;s much more complex and it keeps the code modular. I wouldn&apos;t care too much in principle, but once we have gone this far I think it&apos;s silly to break the copy&amp;paste-ability at the lat minute.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>109940</commentid>
    <comment_count>33</comment_count>
      <attachid>27721</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2009-02-17 02:06:11 -0800</bug_when>
    <thetext>Created attachment 27721
marshal.patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>109941</commentid>
    <comment_count>34</comment_count>
      <attachid>27722</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2009-02-17 02:06:31 -0800</bug_when>
    <thetext>Created attachment 27722
keyring.patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>109942</commentid>
    <comment_count>35</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2009-02-17 02:10:31 -0800</bug_when>
    <thetext>Ok, I&apos;ve added a signal &apos;current-toplevel&apos; so that the auth feature can ask webkit about that without messing it with internal details about WebCore/WebKit. That keeps it plain C and completely reusable.

One problem is that I needed to add a marshaller from WebCore, and the current system of generating them grepping through the source files in WebKit/gtk/ wasn&apos;t enough anymore. Instead of adding many more sources to grep (would slow down compiles a lot) or hack up some smart system to just go through the actually changed files (would slow down compiles somewhat, and needs to be implemented) I&apos;ve just reverted to the standard behavior of maintaining a manual list of marshallers to generate. Adding one is a really rare situation, and it takes 5 seconds at best, so I think adding extra-compile time for this is the wrong kind of optimization.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>109959</commentid>
    <comment_count>36</comment_count>
      <attachid>27704</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2009-02-17 05:14:16 -0800</bug_when>
    <thetext>Comment on attachment 27704
add parent window information to the auth dialog

Xan&apos;s patch now feature this functionality in a more modularized way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>109968</commentid>
    <comment_count>37</comment_count>
      <attachid>27730</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2009-02-17 08:40:29 -0800</bug_when>
    <thetext>Created attachment 27730
keyring.patch

Take UI code from GTK+ gtkmountoperation.c, follows the HIG better and the way the layout is structured is more sane.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>109970</commentid>
    <comment_count>38</comment_count>
      <attachid>27731</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2009-02-17 08:45:33 -0800</bug_when>
    <thetext>Created attachment 27731
keyring.patch

Set both entries as activating the default action.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>109972</commentid>
    <comment_count>39</comment_count>
    <who name="Christian Dywan">christian</who>
    <bug_when>2009-02-17 09:49:49 -0800</bug_when>
    <thetext>(In reply to comment #38)
&gt; Created an attachment (id=27731) [review]
&gt; keyring.patch
&gt; 
&gt; Set both entries as activating the default action.

The construction of the dialogue looks a little complicated after the &quot;HIG improvements&quot;, but I trust it&apos;s worth it. Anyway I like the patch, very nice.

And I&apos;m fine with going back to a standard marshallers file, automating that was a goodie anyway and build performance is much more important.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>111178</commentid>
    <comment_count>40</comment_count>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2009-02-26 07:37:46 -0800</bug_when>
    <thetext>Removing curl keyword, curl is not for gtk+.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>111182</commentid>
    <comment_count>41</comment_count>
      <attachid>27721</attachid>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2009-02-26 07:50:24 -0800</bug_when>
    <thetext>Comment on attachment 27721
marshal.patch

okay, looks like the file is complete...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>111184</commentid>
    <comment_count>42</comment_count>
      <attachid>27731</attachid>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2009-02-26 07:58:44 -0800</bug_when>
    <thetext>Comment on attachment 27731
keyring.patch


&gt; +        Frame* m_frame;

To use RefPtr or not to use it. Can the Frame be removed during a request? This might be a source of a crash, but we can go for wait and see.

&gt;  
&gt; +    // Used to set the authentication dialog toplevel; may be NULL
&gt; +    d-&gt;m_frame = frame;
&gt; +

maybe move the comment to the header file?


*skipped widget foo*</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>111215</commentid>
    <comment_count>43</comment_count>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2009-02-26 10:22:50 -0800</bug_when>
    <thetext>Oh, and there are some minor style issues in the auth dialog, the &apos;*&apos; is placed next to the variable and not to the type. this can be fixed afterwards though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>111240</commentid>
    <comment_count>44</comment_count>
      <attachid>28025</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2009-02-26 11:24:52 -0800</bug_when>
    <thetext>Created attachment 28025
keyringv2.patch

Update SoupAuthDialog to pass the current SoupMessage as a parameter in the current-toplevel signal, so we can take the toplevel from the ResourceHandle we set on each message in startHttp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>111244</commentid>
    <comment_count>45</comment_count>
      <attachid>28027</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2009-02-26 11:29:26 -0800</bug_when>
    <thetext>Created attachment 28027
keyringv3.patch

Fix some style issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>111257</commentid>
    <comment_count>46</comment_count>
      <attachid>28027</attachid>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2009-02-26 11:52:39 -0800</bug_when>
    <thetext>Comment on attachment 28027
keyringv3.patch


&gt; +    GtkWidget* toplevel;
&gt; +    GtkWidget *widget;
&gt; +    GtkDialog *dialog;
&gt; +    GtkWindow *window;
&gt; +    GtkWidget *entryContainer;
&gt; +    GtkWidget *hbox, *mainVBox, *vbox, *icon;
&gt; +    GtkWidget *table;
&gt; +    GtkWidget *messageLabel;
&gt; +    char* message;
&gt; +    SoupURI* uri;
&gt; +#if USE(GNOMEKEYRING)
&gt; +    GtkWidget* rememberBox;
&gt; +    GtkWidget* checkButton;
&gt; +#endif
&gt;

minor inconsistency... pick one, stay with it here :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>111313</commentid>
    <comment_count>47</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2009-02-26 14:48:56 -0800</bug_when>
    <thetext>Landed last patch as r41270.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>115997</commentid>
    <comment_count>48</comment_count>
    <who name="Paanky">maharana.pankaj</who>
    <bug_when>2009-03-31 06:52:47 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; Created an attachment (id=19735) [review]
&gt; CURL: Basic Authentication support
&gt; 
&gt; The previous patch didn&apos;t apply to trunk so I updated it to what I think
&gt; matches the current state. Quickly testing it seems to work.
&gt; 

I applied the patch to r40777, with CURL. But it did not work for me. I am giving the correct username and password. But intended page is not loading. Luca, Can you please guide me? Authorization fails. I am using the latest version of CURL.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>18585</attachid>
            <date>2008-01-21 13:53:03 -0800</date>
            <delta_ts>2008-02-16 15:29:01 -0800</delta_ts>
            <desc>proof</desc>
            <filename>auth.patch</filename>
            <type>text/plain</type>
            <size>25525</size>
            <attacher name="Luca Bruno">lethalman88</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRHdGsuY3BwCShyZXZpc2lvbiAyOTY3NikKKysrIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxNSArMzAsMTgg
QEAKICNpbmNsdWRlICJIVE1MRnJhbWVPd25lckVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFt
ZXMuaCIKICNpbmNsdWRlICJMYW5ndWFnZS5oIgorI2luY2x1ZGUgIk1haW5SZXNvdXJjZUxvYWRl
ci5oIgogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1l
bnRlZC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSAiUmVzb3VyY2VI
YW5kbGUuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJDU3RyaW5n
LmgiCiAjaW5jbHVkZSAiUHJvZ3Jlc3NUcmFja2VyLmgiCiAjaW5jbHVkZSAia2pzX2JpbmRpbmcu
aCIKICNpbmNsdWRlICJranNfcHJveHkuaCIKICNpbmNsdWRlICJranNfd2luZG93LmgiCisjaW5j
bHVkZSAid2Via2l0YXV0aGVudGljYXRpb25jaGFsbGVuZ2UuaCIKICNpbmNsdWRlICJ3ZWJraXR3
ZWJ2aWV3LmgiCiAjaW5jbHVkZSAid2Via2l0d2ViZnJhbWUuaCIKICNpbmNsdWRlICJ3ZWJraXRw
cml2YXRlLmgiCkBAIC0xNjUsOSArMTY4LDQyIEBACiAgICAgZmwtPmFkZERhdGEoZGF0YSwgbGVu
Z3RoKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZWNlaXZlQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nICBpZGVu
dGlmaWVyLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpCit2b2lkIEZyYW1lTG9hZGVy
Q2xpZW50OjpkaXNwYXRjaERpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShEb2N1bWVu
dExvYWRlciogZG9jdW1lbnRMb2FkZXIsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3Qg
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIHdlYkNoYWxsZW5nZSkKIHsKLSAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgIFJlc291cmNlSGFuZGxlKiBoYW5kbGUgPSBkb2N1bWVudExvYWRlci0+bWFp
blJlc291cmNlTG9hZGVyKCktPmhhbmRsZSgpOworICAgIEFTU0VSVChoYW5kbGUpOworICAgIGlm
ICghaGFuZGxlKQorICAgICAgICByZXR1cm47CisKKyAgICBXZWJLaXRBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSogY2hhbGxlbmdlID0gd2Via2l0X2F1dGhlbnRpY2F0aW9uX2NoYWxsZW5nZV9uZXco
KTsKKyAgICBDcmVkZW50aWFsIGNyZWRlbnRpYWwgPSB3ZWJDaGFsbGVuZ2UucHJvcG9zZWRDcmVk
ZW50aWFsKCk7CisgICAgd2Via2l0X2F1dGhlbnRpY2F0aW9uX2NoYWxsZW5nZV9zZXRfdXNlcihj
aGFsbGVuZ2UsIGNyZWRlbnRpYWwudXNlcigpLnV0ZjgoKS5kYXRhKCkpOworICAgIHdlYmtpdF9h
dXRoZW50aWNhdGlvbl9jaGFsbGVuZ2Vfc2V0X3Bhc3N3b3JkKGNoYWxsZW5nZSwgY3JlZGVudGlh
bC5wYXNzd29yZCgpLnV0ZjgoKS5kYXRhKCkpOworCisgICAgV2ViS2l0V2ViVmlldyogd2ViVmll
dyA9IGdldFZpZXdGcm9tRnJhbWUobV9mcmFtZSk7CisgICAgV2ViS2l0QXV0aGVudGljYXRpb25S
ZXNwb25zZSByZXNwb25zZTsKKyAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUod2ViVmlldywgImF1
dGhlbnRpY2F0aW9uLXJlcXVlc3RlZCIsIG1fZnJhbWUsIGNoYWxsZW5nZSwgJnJlc3BvbnNlKTsK
KworICAgIGNyZWRlbnRpYWwgPSBDcmVkZW50aWFsKHdlYmtpdF9hdXRoZW50aWNhdGlvbl9jaGFs
bGVuZ2VfZ2V0X3VzZXIoY2hhbGxlbmdlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3
ZWJraXRfYXV0aGVudGljYXRpb25fY2hhbGxlbmdlX2dldF9wYXNzd29yZChjaGFsbGVuZ2UpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIENyZWRlbnRpYWxQZXJzaXN0ZW5jZUZvclNlc3Np
b24pOworCisgICAgZ19vYmplY3RfdW5yZWYoY2hhbGxlbmdlKTsKKworICAgIHN3aXRjaCAocmVz
cG9uc2UpIHsKKyAgICBjYXNlIFdFQktJVF9BVVRIRU5USUNBVElPTl9SRVNQT05TRV9BQ0NFUFQ6
CisgICAgICAgIGhhbmRsZS0+cmVjZWl2ZWRDcmVkZW50aWFsKHdlYkNoYWxsZW5nZSwgY3JlZGVu
dGlhbCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV0VCS0lUX0FVVEhFTlRJQ0FUSU9OX1JF
U1BPTlNFX0NPTlRJTlVFX1dJVEhPVVRfQ1JFREVOVElBTDoKKyAgICAgICAgaGFuZGxlLT5yZWNl
aXZlZFJlcXVlc3RUb0NvbnRpbnVlV2l0aG91dENyZWRlbnRpYWwod2ViQ2hhbGxlbmdlKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBXRUJLSVRfQVVUSEVOVElDQVRJT05fUkVTUE9OU0VfQ0FO
Q0VMOgorICAgICAgICBoYW5kbGUtPnJlY2VpdmVkQ2FuY2VsbGF0aW9uKHdlYkNoYWxsZW5nZSk7
CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIGdfYXNzZXJ0X25vdF9yZWFj
aGVkICgpOworICAgICAgICBicmVhazsKKyAgICB9CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXJDbGll
bnQ6OmRpc3BhdGNoRGlkQ2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoRG9jdW1lbnRMb2Fk
ZXIqLCB1bnNpZ25lZCBsb25nICBpZGVudGlmaWVyLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSYpCkluZGV4OiBXZWJLaXQvZ3RrL1dlYlZpZXcvd2Via2l0d2Vidmlldy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0L2d0ay9XZWJWaWV3L3dlYmtpdHdlYnZpZXcuY3BwCShyZXZpc2lvbiAy
OTY3NikKKysrIFdlYktpdC9ndGsvV2ViVmlldy93ZWJraXR3ZWJ2aWV3LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNzcsNiArNzcsNyBAQAogICAgIENPUFlfQ0xJUEJPQVJELAogICAgIFBBU1RFX0NM
SVBCT0FSRCwKICAgICBDVVRfQ0xJUEJPQVJELAorICAgIEFVVEhFTlRJQ0FUSU9OX1JFUVVFU1RF
RCwKICAgICBMQVNUX1NJR05BTAogfTsKIApAQCAtNDMxLDYgKzQzMiw2MyBAQAogICAgIHJldHVy
biBXRUJLSVRfTkFWSUdBVElPTl9SRVNQT05TRV9BQ0NFUFQ7CiB9CiAKK3N0YXRpYyBXZWJLaXRB
dXRoZW50aWNhdGlvblJlc3BvbnNlIHdlYmtpdF93ZWJfdmlld19yZWFsX2F1dGhlbnRpY2F0aW9u
X3JlcXVlc3RlZChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRXZWJGcmFtZSogZnJhbWUs
IFdlYktpdEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKiBjaGFsbGVuZ2UpCit7CisgICAgR3RrV2lk
Z2V0KiB3aW5kb3c7CisgICAgR3RrV2lkZ2V0KiBkaWFsb2c7CisgICAgR3RrV2lkZ2V0KiB1c2Vy
X2VudHJ5OworICAgIEd0a1dpZGdldCogcGFzc3dvcmRfZW50cnk7CisgICAgR3RrV2lkZ2V0KiB0
YWJsZTsKKyAgICBnYm9vbGVhbiBkaWRDb25maXJtID0gRkFMU0U7CisKKyAgICB3aW5kb3cgPSBn
dGtfd2lkZ2V0X2dldF90b3BsZXZlbChHVEtfV0lER0VUKHdlYlZpZXcpKTsKKyAgICBkaWFsb2cg
PSBndGtfbWVzc2FnZV9kaWFsb2dfbmV3KEdUS19XSURHRVRfVE9QTEVWRUwod2luZG93KSA/IEdU
S19XSU5ET1cod2luZG93KSA6IDAsIEdUS19ESUFMT0dfREVTVFJPWV9XSVRIX1BBUkVOVCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdUS19NRVNTQUdFX0VSUk9SLCBHVEtf
QlVUVE9OU19PS19DQU5DRUwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
UmVhbG0iKTsKKyAgICBnY2hhciogdGl0bGUgPSBnX3N0cmNvbmNhdCgiQXV0aGVudGljYXRpb24g
LSAiLCB3ZWJraXRfd2ViX2ZyYW1lX2dldF91cmkoZnJhbWUpLCBOVUxMKTsKKyAgICBndGtfd2lu
ZG93X3NldF90aXRsZShHVEtfV0lORE9XKGRpYWxvZyksIHRpdGxlKTsKKyAgICBnX2ZyZWUodGl0
bGUpOworCisgICAgdGFibGUgPSBndGtfdGFibGVfbmV3KDIsIDIsIEZBTFNFKTsKKyAgICBndGtf
dGFibGVfc2V0X3Jvd19zcGFjaW5ncyhHVEtfVEFCTEUodGFibGUpLCAzKTsKKyAgICBndGtfdGFi
bGVfc2V0X2NvbF9zcGFjaW5ncyhHVEtfVEFCTEUodGFibGUpLCAzKTsKKworICAgIGd0a190YWJs
ZV9hdHRhY2hfZGVmYXVsdHMoR1RLX1RBQkxFKHRhYmxlKSwgZ3RrX2xhYmVsX25ldygiVXNlcm5h
bWU6IiksIDAsIDEsIDAsIDEpOworICAgIHVzZXJfZW50cnkgPSBndGtfZW50cnlfbmV3KCk7Cisg
ICAgZ3RrX2VudHJ5X3NldF90ZXh0KEdUS19FTlRSWSh1c2VyX2VudHJ5KSwgd2Via2l0X2F1dGhl
bnRpY2F0aW9uX2NoYWxsZW5nZV9nZXRfdXNlcihjaGFsbGVuZ2UpKTsKKyAgICBndGtfZW50cnlf
c2V0X2FjdGl2YXRlc19kZWZhdWx0KEdUS19FTlRSWSh1c2VyX2VudHJ5KSwgVFJVRSk7CisgICAg
Z3RrX3RhYmxlX2F0dGFjaF9kZWZhdWx0cyhHVEtfVEFCTEUodGFibGUpLCB1c2VyX2VudHJ5LCAx
LCAyLCAwLCAxKTsKKworICAgIGd0a190YWJsZV9hdHRhY2hfZGVmYXVsdHMoR1RLX1RBQkxFKHRh
YmxlKSwgZ3RrX2xhYmVsX25ldygiUGFzc3dvcmQ6IiksIDAsIDEsIDEsIDIpOworICAgIHBhc3N3
b3JkX2VudHJ5ID0gZ3RrX2VudHJ5X25ldygpOworICAgIGd0a19lbnRyeV9zZXRfdGV4dChHVEtf
RU5UUlkocGFzc3dvcmRfZW50cnkpLCB3ZWJraXRfYXV0aGVudGljYXRpb25fY2hhbGxlbmdlX2dl
dF9wYXNzd29yZChjaGFsbGVuZ2UpKTsKKyAgICBndGtfdGFibGVfYXR0YWNoX2RlZmF1bHRzKEdU
S19UQUJMRSh0YWJsZSksIHBhc3N3b3JkX2VudHJ5LCAxLCAyLCAxLCAyKTsKKworICAgIGd0a19j
b250YWluZXJfYWRkKEdUS19DT05UQUlORVIoR1RLX0RJQUxPRyhkaWFsb2cpLT52Ym94KSwgdGFi
bGUpOworICAgIGd0a193aWRnZXRfc2hvd19hbGwodGFibGUpOworCisgICAgZ3RrX2RpYWxvZ19z
ZXRfZGVmYXVsdF9yZXNwb25zZShHVEtfRElBTE9HKGRpYWxvZyksIEdUS19SRVNQT05TRV9PSyk7
CisgICAgZ2ludCByZXNwb25zZSA9IGd0a19kaWFsb2dfcnVuKEdUS19ESUFMT0coZGlhbG9nKSk7
CisKKyAgICBzd2l0Y2ggKHJlc3BvbnNlKSB7CisgICAgY2FzZSBHVEtfUkVTUE9OU0VfT0s6Cisg
ICAgICAgIGRpZENvbmZpcm0gPSBUUlVFOworICAgICAgICB3ZWJraXRfYXV0aGVudGljYXRpb25f
Y2hhbGxlbmdlX3NldF91c2VyKGNoYWxsZW5nZSwgZ3RrX2VudHJ5X2dldF90ZXh0KEdUS19FTlRS
WSh1c2VyX2VudHJ5KSkpOworICAgICAgICB3ZWJraXRfYXV0aGVudGljYXRpb25fY2hhbGxlbmdl
X3NldF9wYXNzd29yZChjaGFsbGVuZ2UsIGd0a19lbnRyeV9nZXRfdGV4dChHVEtfRU5UUlkocGFz
c3dvcmRfZW50cnkpKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgR1RLX1JFU1BPTlNFX0NB
TkNFTDoKKyAgICAgICAgZGlkQ29uZmlybSA9IEZBTFNFOworICAgICAgICBicmVhazsKKworICAg
IH0KKyAgICBndGtfd2lkZ2V0X2Rlc3Ryb3koR1RLX1dJREdFVChkaWFsb2cpKTsKKworICAgIGlm
IChkaWRDb25maXJtKQorICAgICAgICByZXR1cm4gV0VCS0lUX0FVVEhFTlRJQ0FUSU9OX1JFU1BP
TlNFX0FDQ0VQVDsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiBXRUJLSVRfQVVUSEVOVElDQVRJ
T05fUkVTUE9OU0VfQ09OVElOVUVfV0lUSE9VVF9DUkVERU5USUFMOworfQorCiBzdGF0aWMgdm9p
ZCB3ZWJraXRfd2ViX3ZpZXdfcmVhbF93aW5kb3dfb2JqZWN0X2NsZWFyZWQoV2ViS2l0V2ViVmll
dyosIFdlYktpdFdlYkZyYW1lKiwgSlNHbG9iYWxDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0
UmVmIHdpbmRvd19vYmplY3QpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKQEAgLTkxMCw2ICs5
NjgsMjUgQEAKICAgICAgICAgICAgIGdfY2Nsb3N1cmVfbWFyc2hhbF9WT0lEX19WT0lELAogICAg
ICAgICAgICAgR19UWVBFX05PTkUsIDApOwogCisgICAgLyoqCisgICAgICogV2ViS2l0V2ViVmll
dzo6YXV0aGVudGljYXRpb24tcmVxdWVzdGVkOgorICAgICAqIEB3ZWJfdmlldzogdGhlIG9iamVj
dCB3aGljaCByZWNlaXZlZCB0aGUgc2lnbmFsCisgICAgICoKKyAgICAgKiBUaGUgOjphdXRoZW50
aWNhdGlvbi1yZXF1ZXN0ZWQgc2lnbmFsIGlzIGEgZW1pdHRlZCB3aGVuIGFuIGF1dGhlbnRpY2F0
aW9uIGlzCisgICAgICogcmVxdWVzdGVkIGZyb20gdGhlIHNlcnZlciB0byBhY2Nlc3MgYSByZXNv
dXJjZS4KKyAgICAgKgorICAgICAqIFRoZSBkZWZhdWx0IGJlaGF2aW9yIGZvciB0aGlzIHNpZ25h
bCBpcyBjcmVhdGluZyBhbiBpbnB1dCBkaWFsb2cgdG8gZ2V0IGEgc3VpdGFibGUgY3JlZGVudGlh
bC4KKyAgICAgKi8KKyAgICB3ZWJraXRfd2ViX3ZpZXdfc2lnbmFsc1tQQVNURV9DTElQQk9BUkRd
ID0gZ19zaWduYWxfbmV3KCJhdXRoZW50aWNhdGlvbi1yZXF1ZXN0ZWQiLAorICAgICAgICAgICAg
R19UWVBFX0ZST01fQ0xBU1Mod2ViVmlld0NsYXNzKSwKKyAgICAgICAgICAgIChHU2lnbmFsRmxh
Z3MpKEdfU0lHTkFMX1JVTl9MQVNUIHwgR19TSUdOQUxfQUNUSU9OKSwKKyAgICAgICAgICAgIEdf
U1RSVUNUX09GRlNFVChXZWJLaXRXZWJWaWV3Q2xhc3MsIGF1dGhlbnRpY2F0aW9uX3JlcXVlc3Rl
ZCksCisgICAgICAgICAgICBOVUxMLCBOVUxMLAorICAgICAgICAgICAgd2Via2l0X21hcnNoYWxf
SU5UX19PQkpFQ1RfT0JKRUNULAorICAgICAgICAgICAgR19UWVBFX0lOVCwgMiwKKyAgICAgICAg
ICAgIFdFQktJVF9UWVBFX1dFQl9GUkFNRSwKKyAgICAgICAgICAgIFdFQktJVF9UWVBFX0FVVEhF
TlRJQ0FUSU9OX0NIQUxMRU5HRSk7CisKICAgICAvKgogICAgICAqIGltcGxlbWVudGF0aW9ucyBv
ZiB2aXJ0dWFsIG1ldGhvZHMKICAgICAgKi8KQEAgLTkyNSw2ICsxMDAyLDcgQEAKICAgICB3ZWJW
aWV3Q2xhc3MtPmN1dF9jbGlwYm9hcmQgPSB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9jdXRfY2xpcGJv
YXJkOwogICAgIHdlYlZpZXdDbGFzcy0+Y29weV9jbGlwYm9hcmQgPSB3ZWJraXRfd2ViX3ZpZXdf
cmVhbF9jb3B5X2NsaXBib2FyZDsKICAgICB3ZWJWaWV3Q2xhc3MtPnBhc3RlX2NsaXBib2FyZCA9
IHdlYmtpdF93ZWJfdmlld19yZWFsX3Bhc3RlX2NsaXBib2FyZDsKKyAgICB3ZWJWaWV3Q2xhc3Mt
PmF1dGhlbnRpY2F0aW9uX3JlcXVlc3RlZCA9IHdlYmtpdF93ZWJfdmlld19yZWFsX2F1dGhlbnRp
Y2F0aW9uX3JlcXVlc3RlZDsKIAogICAgIEdPYmplY3RDbGFzcyogb2JqZWN0Q2xhc3MgPSBHX09C
SkVDVF9DTEFTUyh3ZWJWaWV3Q2xhc3MpOwogICAgIG9iamVjdENsYXNzLT5maW5hbGl6ZSA9IHdl
YmtpdF93ZWJfdmlld19maW5hbGl6ZTsKSW5kZXg6IFdlYktpdC9ndGsvV2ViVmlldy93ZWJraXR3
ZWJ2aWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2d0ay9XZWJWaWV3L3dlYmtpdHdlYnZpZXcu
aAkocmV2aXNpb24gMjk2NzYpCisrKyBXZWJLaXQvZ3RrL1dlYlZpZXcvd2Via2l0d2Vidmlldy5o
CSh3b3JraW5nIGNvcHkpCkBAIC00Nyw2ICs0NywxMiBAQAogICAgIFdFQktJVF9XRUJfVklFV19U
QVJHRVRfSU5GT19URVhUID0gLSAyCiB9IFdlYktpdFdlYlZpZXdUYXJnZXRJbmZvOwogCit0eXBl
ZGVmIGVudW0geworICAgIFdFQktJVF9BVVRIRU5USUNBVElPTl9SRVNQT05TRV9BQ0NFUFQsCisg
ICAgV0VCS0lUX0FVVEhFTlRJQ0FUSU9OX1JFU1BPTlNFX0NPTlRJTlVFX1dJVEhPVVRfQ1JFREVO
VElBTCwKKyAgICBXRUJLSVRfQVVUSEVOVElDQVRJT05fUkVTUE9OU0VfQ0FOQ0VMCit9IFdlYktp
dEF1dGhlbnRpY2F0aW9uUmVzcG9uc2U7CisKIHN0cnVjdCBfV2ViS2l0V2ViVmlldyB7CiAgICAg
R3RrQ29udGFpbmVyIHBhcmVudDsKIH07CkBAIC03Nyw2ICs4Myw3IEBACiAgICAgdm9pZCAoKmN1
dF9jbGlwYm9hcmQpIChXZWJLaXRXZWJWaWV3KiB3ZWJfdmlldyk7CiAgICAgdm9pZCAoKmNvcHlf
Y2xpcGJvYXJkKSAoV2ViS2l0V2ViVmlldyogd2ViX3ZpZXcpOwogICAgIHZvaWQgKCpwYXN0ZV9j
bGlwYm9hcmQpIChXZWJLaXRXZWJWaWV3KiB3ZWJfdmlldyk7CisgICAgV2ViS2l0QXV0aGVudGlj
YXRpb25SZXNwb25zZSAoKmF1dGhlbnRpY2F0aW9uX3JlcXVlc3RlZCkgKFdlYktpdFdlYlZpZXcq
IHdlYl92aWV3LCBXZWJLaXRXZWJGcmFtZSogZnJhbWUsIFdlYktpdEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKiBjaGFsbGVuZ2UpOwogCiAgICAgLyoKICAgICAgKiBpbnRlcm5hbApJbmRleDogV2Vi
S2l0L2d0ay9XZWJWaWV3L3dlYmtpdHByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3Rr
L1dlYlZpZXcvd2Via2l0cHJpdmF0ZS5oCShyZXZpc2lvbiAyOTY3NikKKysrIFdlYktpdC9ndGsv
V2ViVmlldy93ZWJraXRwcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDkgQEAK
ICNpbmNsdWRlICJ3ZWJraXR3ZWJ2aWV3LmgiCiAjaW5jbHVkZSAid2Via2l0d2ViZnJhbWUuaCIK
ICNpbmNsdWRlICJ3ZWJraXRuZXR3b3JrcmVxdWVzdC5oIgorI2luY2x1ZGUgIndlYmtpdGF1dGhl
bnRpY2F0aW9uY2hhbGxlbmdlLmgiCiAKKyNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUg
IkZyYW1lLmgiCkBAIC05Miw2ICs5NCwxMyBAQAogICAgIHN0cnVjdCBfV2ViS2l0TmV0d29ya1Jl
cXVlc3RQcml2YXRlIHsKICAgICAgICAgZ2NoYXIqIHVyaTsKICAgICB9OworICAgIAorICAgICNk
ZWZpbmUgV0VCS0lUX0FVVEhFTlRJQ0FUSU9OX0NIQUxMRU5HRV9HRVRfUFJJVkFURShvYmopICAg
IChHX1RZUEVfSU5TVEFOQ0VfR0VUX1BSSVZBVEUoKG9iaiksIFdFQktJVF9UWVBFX0FVVEhFTlRJ
Q0FUSU9OX0NIQUxMRU5HRSwgV2ViS2l0QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcml2YXRlKSkK
KyAgICB0eXBlZGVmIHN0cnVjdCBfV2ViS2l0QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcml2YXRl
IFdlYktpdEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJpdmF0ZTsKKyAgICBzdHJ1Y3QgX1dlYktp
dEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJpdmF0ZSB7CisgICAgICAgIGdjaGFyKiB1c2VyOwor
ICAgICAgICBnY2hhciogcGFzc3dvcmQ7CisgICAgfTsKIAogICAgIFdlYktpdFdlYkZyYW1lKiB3
ZWJraXRfd2ViX2ZyYW1lX2luaXRfd2l0aF93ZWJfdmlldyhXZWJLaXRXZWJWaWV3KiwgV2ViQ29y
ZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50Kik7CiAKSW5kZXg6IFdlYktpdC9ndGsvV2ViVmlldy93
ZWJraXRhdXRoZW50aWNhdGlvbmNoYWxsZW5nZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2d0
ay9XZWJWaWV3L3dlYmtpdGF1dGhlbnRpY2F0aW9uY2hhbGxlbmdlLmNwcAkocmV2aXNpb24gMCkK
KysrIFdlYktpdC9ndGsvV2ViVmlldy93ZWJraXRhdXRoZW50aWNhdGlvbmNoYWxsZW5nZS5jcHAJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTA0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4
IEx1Y2EgQnJ1bm8KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgor
ICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAq
IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBu
b3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBV
U0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAid2Via2l0YXV0aGVu
dGljYXRpb25jaGFsbGVuZ2UuaCIKKyNpbmNsdWRlICJ3ZWJraXRwcml2YXRlLmgiCisKK3VzaW5n
IG5hbWVzcGFjZSBXZWJLaXQ7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworZXh0ZXJuICJD
IiB7CisKK0dfREVGSU5FX1RZUEUoV2ViS2l0QXV0aGVudGljYXRpb25DaGFsbGVuZ2UsIHdlYmtp
dF9hdXRoZW50aWNhdGlvbl9jaGFsbGVuZ2UsIEdfVFlQRV9PQkpFQ1QpOworCitzdGF0aWMgdm9p
ZCB3ZWJraXRfYXV0aGVudGljYXRpb25fY2hhbGxlbmdlX2ZpbmFsaXplKEdPYmplY3QqIG9iamVj
dCkKK3sKKyAgICBXZWJLaXRBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByaXZhdGUqIGNoYWxsZW5n
ZVByaXZhdGUgPSBXRUJLSVRfQVVUSEVOVElDQVRJT05fQ0hBTExFTkdFX0dFVF9QUklWQVRFKG9i
amVjdCk7CisKKyAgICBnX2ZyZWUoY2hhbGxlbmdlUHJpdmF0ZS0+dXNlcik7CisgICAgZ19mcmVl
KGNoYWxsZW5nZVByaXZhdGUtPnBhc3N3b3JkKTsKKworICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtp
dF9hdXRoZW50aWNhdGlvbl9jaGFsbGVuZ2VfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUob2JqZWN0
KTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0X2F1dGhlbnRpY2F0aW9uX2NoYWxsZW5nZV9jbGFz
c19pbml0KFdlYktpdEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ2xhc3MqIGNoYWxsZW5nZUNsYXNz
KQoreworICAgIGdfdHlwZV9jbGFzc19hZGRfcHJpdmF0ZShjaGFsbGVuZ2VDbGFzcywgc2l6ZW9m
KFdlYktpdEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJpdmF0ZSkpOworCisgICAgR19PQkpFQ1Rf
Q0xBU1MoY2hhbGxlbmdlQ2xhc3MpLT5maW5hbGl6ZSA9IHdlYmtpdF9hdXRoZW50aWNhdGlvbl9j
aGFsbGVuZ2VfZmluYWxpemU7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF9hdXRoZW50aWNhdGlv
bl9jaGFsbGVuZ2VfaW5pdChXZWJLaXRBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSogY2hhbGxlbmdl
KQoreworICAgIFdlYktpdEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJpdmF0ZSogY2hhbGxlbmdl
UHJpdmF0ZSA9IFdFQktJVF9BVVRIRU5USUNBVElPTl9DSEFMTEVOR0VfR0VUX1BSSVZBVEUoY2hh
bGxlbmdlKTsKKworICAgIGNoYWxsZW5nZVByaXZhdGUtPnVzZXIgPSBOVUxMOworICAgIGNoYWxs
ZW5nZVByaXZhdGUtPnBhc3N3b3JkID0gTlVMTDsKK30KKworV2ViS2l0QXV0aGVudGljYXRpb25D
aGFsbGVuZ2UqIHdlYmtpdF9hdXRoZW50aWNhdGlvbl9jaGFsbGVuZ2VfbmV3KCkKK3sKKyAgICBX
ZWJLaXRBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSogY2hhbGxlbmdlID0gV0VCS0lUX0FVVEhFTlRJ
Q0FUSU9OX0NIQUxMRU5HRShnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfQVVUSEVOVElDQVRJT05f
Q0hBTExFTkdFLCBOVUxMKSk7CisKKyAgICByZXR1cm4gY2hhbGxlbmdlOworfQorCit2b2lkIHdl
YmtpdF9hdXRoZW50aWNhdGlvbl9jaGFsbGVuZ2Vfc2V0X3VzZXIoV2ViS2l0QXV0aGVudGljYXRp
b25DaGFsbGVuZ2UqIGNoYWxsZW5nZSwgY29uc3QgZ2NoYXIqIHVzZXIpCit7CisgICAgZ19yZXR1
cm5faWZfZmFpbChXRUJLSVRfSVNfQVVUSEVOVElDQVRJT05fQ0hBTExFTkdFKGNoYWxsZW5nZSkp
OworICAgIGdfcmV0dXJuX2lmX2ZhaWwodXNlcik7CisgICAgCisgICAgV2ViS2l0QXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VQcml2YXRlKiBjaGFsbGVuZ2VQcml2YXRlID0gV0VCS0lUX0FVVEhFTlRJ
Q0FUSU9OX0NIQUxMRU5HRV9HRVRfUFJJVkFURShjaGFsbGVuZ2UpOworCisgICAgZ19mcmVlKGNo
YWxsZW5nZVByaXZhdGUtPnVzZXIpOworICAgIGNoYWxsZW5nZVByaXZhdGUtPnVzZXIgPSBnX3N0
cmR1cCh1c2VyKTsKK30KKworY29uc3QgZ2NoYXIqIHdlYmtpdF9hdXRoZW50aWNhdGlvbl9jaGFs
bGVuZ2VfZ2V0X3VzZXIoV2ViS2l0QXV0aGVudGljYXRpb25DaGFsbGVuZ2UqIGNoYWxsZW5nZSkK
K3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfQVVUSEVOVElDQVRJT05fQ0hB
TExFTkdFKGNoYWxsZW5nZSksIE5VTEwpOworCisgICAgV2ViS2l0QXV0aGVudGljYXRpb25DaGFs
bGVuZ2VQcml2YXRlKiBjaGFsbGVuZ2VQcml2YXRlID0gV0VCS0lUX0FVVEhFTlRJQ0FUSU9OX0NI
QUxMRU5HRV9HRVRfUFJJVkFURShjaGFsbGVuZ2UpOworCisgICAgcmV0dXJuIGNoYWxsZW5nZVBy
aXZhdGUtPnVzZXI7Cit9CisKK3ZvaWQgd2Via2l0X2F1dGhlbnRpY2F0aW9uX2NoYWxsZW5nZV9z
ZXRfcGFzc3dvcmQoV2ViS2l0QXV0aGVudGljYXRpb25DaGFsbGVuZ2UqIGNoYWxsZW5nZSwgY29u
c3QgZ2NoYXIqIHBhc3N3b3JkKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX0FV
VEhFTlRJQ0FUSU9OX0NIQUxMRU5HRShjaGFsbGVuZ2UpKTsKKyAgICBnX3JldHVybl9pZl9mYWls
KHBhc3N3b3JkKTsKKyAgICAKKyAgICBXZWJLaXRBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByaXZh
dGUqIGNoYWxsZW5nZVByaXZhdGUgPSBXRUJLSVRfQVVUSEVOVElDQVRJT05fQ0hBTExFTkdFX0dF
VF9QUklWQVRFKGNoYWxsZW5nZSk7CisKKyAgICBnX2ZyZWUoY2hhbGxlbmdlUHJpdmF0ZS0+cGFz
c3dvcmQpOworICAgIGNoYWxsZW5nZVByaXZhdGUtPnBhc3N3b3JkID0gZ19zdHJkdXAocGFzc3dv
cmQpOworfQorCitjb25zdCBnY2hhciogd2Via2l0X2F1dGhlbnRpY2F0aW9uX2NoYWxsZW5nZV9n
ZXRfcGFzc3dvcmQoV2ViS2l0QXV0aGVudGljYXRpb25DaGFsbGVuZ2UqIGNoYWxsZW5nZSkKK3sK
KyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfQVVUSEVOVElDQVRJT05fQ0hBTExF
TkdFKGNoYWxsZW5nZSksIE5VTEwpOworCisgICAgV2ViS2l0QXV0aGVudGljYXRpb25DaGFsbGVu
Z2VQcml2YXRlKiBjaGFsbGVuZ2VQcml2YXRlID0gV0VCS0lUX0FVVEhFTlRJQ0FUSU9OX0NIQUxM
RU5HRV9HRVRfUFJJVkFURShjaGFsbGVuZ2UpOworCisgICAgcmV0dXJuIGNoYWxsZW5nZVByaXZh
dGUtPnBhc3N3b3JkOworfQorCit9CkluZGV4OiBXZWJLaXQvZ3RrL1dlYlZpZXcvd2Via2l0ZGVm
aW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvV2ViVmlldy93ZWJraXRkZWZpbmVzLmgJ
KHJldmlzaW9uIDI5Njc2KQorKysgV2ViS2l0L2d0ay9XZWJWaWV3L3dlYmtpdGRlZmluZXMuaAko
d29ya2luZyBjb3B5KQpAQCAtNDksNiArNDksOSBAQAogdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdE5l
dHdvcmtSZXF1ZXN0IFdlYktpdE5ldHdvcmtSZXF1ZXN0OwogdHlwZWRlZiBzdHJ1Y3QgX1dlYktp
dE5ldHdvcmtSZXF1ZXN0Q2xhc3MgV2ViS2l0TmV0d29ya1JlcXVlc3RDbGFzczsKIAordHlwZWRl
ZiBzdHJ1Y3QgX1dlYktpdEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIFdlYktpdEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlOwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlQ2xhc3MgV2ViS2l0QXV0aGVudGljYXRpb25DaGFsbGVuZ2VDbGFzczsKKwogR19FTkRfREVD
TFMKIAogI2VuZGlmCkluZGV4OiBXZWJLaXQvZ3RrL1dlYlZpZXcvd2Via2l0YXV0aGVudGljYXRp
b25jaGFsbGVuZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL1dlYlZpZXcvd2Via2l0YXV0
aGVudGljYXRpb25jaGFsbGVuZ2UuaAkocmV2aXNpb24gMCkKKysrIFdlYktpdC9ndGsvV2ViVmll
dy93ZWJraXRhdXRoZW50aWNhdGlvbmNoYWxsZW5nZS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEx1Y2EgQnJ1bm8KKyAqCisgKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICog
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBXRUJL
SVRfQVVUSEVOVElDQVRJT05fQ0hBTExFTkdFX0gKKyNkZWZpbmUgV0VCS0lUX0FVVEhFTlRJQ0FU
SU9OX0NIQUxMRU5HRV9ICisKKyNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgorCisjaW5jbHVkZSAi
d2Via2l0ZGVmaW5lcy5oIgorCitHX0JFR0lOX0RFQ0xTCisKKyNkZWZpbmUgV0VCS0lUX1RZUEVf
QVVUSEVOVElDQVRJT05fQ0hBTExFTkdFICAgICAgICAgICAgKHdlYmtpdF9hdXRoZW50aWNhdGlv
bl9jaGFsbGVuZ2VfZ2V0X3R5cGUoKSkKKyNkZWZpbmUgV0VCS0lUX0FVVEhFTlRJQ0FUSU9OX0NI
QUxMRU5HRShvYmopICAgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgob2Jq
KSwgV0VCS0lUX1RZUEVfQVVUSEVOVElDQVRJT05fQ0hBTExFTkdFLCBXZWJLaXRBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSkpCisjZGVmaW5lIFdFQktJVF9BVVRIRU5USUNBVElPTl9DSEFMTEVOR0Vf
Q0xBU1Moa2xhc3MpICAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNzKSwgIFdFQktJ
VF9UWVBFX0FVVEhFTlRJQ0FUSU9OX0NIQUxMRU5HRSwgV2ViS2l0QXV0aGVudGljYXRpb25DaGFs
bGVuZ2VDbGFzcykpCisjZGVmaW5lIFdFQktJVF9JU19BVVRIRU5USUNBVElPTl9DSEFMTEVOR0Uo
b2JqKSAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2JqKSwgV0VCS0lUX1RZ
UEVfQVVUSEVOVElDQVRJT05fQ0hBTExFTkdFKSkKKyNkZWZpbmUgV0VCS0lUX0lTX0FVVEhFTlRJ
Q0FUSU9OX0NIQUxMRU5HRV9DTEFTUyhrbGFzcykgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChr
bGFzcyksICBXRUJLSVRfVFlQRV9BVVRIRU5USUNBVElPTl9DSEFMTEVOR0UpKQorI2RlZmluZSBX
RUJLSVRfQVVUSEVOVElDQVRJT05fQ0hBTExFTkdFX0dFVF9DTEFTUyhvYmopICAoR19UWVBFX0lO
U1RBTkNFX0dFVF9DTEFTUygob2JqKSwgIFdFQktJVF9UWVBFX0FVVEhFTlRJQ0FUSU9OX0NIQUxM
RU5HRSwgV2ViS2l0QXV0aGVudGljYXRpb25DaGFsbGVuZ2VDbGFzcykpCisKK3N0cnVjdCBfV2Vi
S2l0QXV0aGVudGljYXRpb25DaGFsbGVuZ2UgeworICAgIEdPYmplY3QgcGFyZW50OworfTsKKwor
c3RydWN0IF9XZWJLaXRBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUNsYXNzIHsKKyAgICBHT2JqZWN0
Q2xhc3MgcGFyZW50OworfTsKKworV0VCS0lUX0FQSSBHVHlwZQord2Via2l0X2F1dGhlbnRpY2F0
aW9uX2NoYWxsZW5nZV9nZXRfdHlwZSAodm9pZCk7CisKK1dFQktJVF9BUEkgV2ViS2l0QXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UqCit3ZWJraXRfYXV0aGVudGljYXRpb25fY2hhbGxlbmdlX25ldyAo
KTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfYXV0aGVudGljYXRpb25fY2hhbGxlbmdlX3Nl
dF91c2VyIChXZWJLaXRBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSogY2hhbGxlbmdlLCBjb25zdCBn
Y2hhciogdXNlcik7CisKK1dFQktJVF9BUEkgY29uc3QgZ2NoYXIqCit3ZWJraXRfYXV0aGVudGlj
YXRpb25fY2hhbGxlbmdlX2dldF91c2VyIChXZWJLaXRBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSog
Y2hhbGxlbmdlKTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfYXV0aGVudGljYXRpb25fY2hh
bGxlbmdlX3NldF9wYXNzd29yZCAoV2ViS2l0QXV0aGVudGljYXRpb25DaGFsbGVuZ2UqIGNoYWxs
ZW5nZSwgY29uc3QgZ2NoYXIqIHBhc3N3b3JkKTsKKworV0VCS0lUX0FQSSBjb25zdCBnY2hhcioK
K3dlYmtpdF9hdXRoZW50aWNhdGlvbl9jaGFsbGVuZ2VfZ2V0X3Bhc3N3b3JkIChXZWJLaXRBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSogY2hhbGxlbmdlKTsKKworR19FTkRfREVDTFMKKworI2VuZGlm
CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUlu
dGVybmFsLmgJKHJldmlzaW9uIDI5Njc2KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlSGFuZGxlSW50ZXJuYWwuaAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDYgKzEwMSw4IEBA
CiAgICAgICAgICAgICAsIG1fZmlsZSgwKQogICAgICAgICAgICAgLCBtX2Zvcm1EYXRhRWxlbWVu
dEluZGV4KDApCiAgICAgICAgICAgICAsIG1fZm9ybURhdGFFbGVtZW50RGF0YU9mZnNldCgwKQor
ICAgICAgICAgICAgLCBtX3dlYkNoYWxsZW5nZSgpCisgICAgICAgICAgICAsIG1fY29udGludWVX
aXRob3V0Q3JlZGVudGlhbChmYWxzZSkKICNlbmRpZgogI2lmIFBMQVRGT1JNKFFUKQogICAgICAg
ICAgICAgLCBtX2pvYigwKQpAQCAtMTU5LDYgKzE2MSw5IEBACiAgICAgICAgIHNpemVfdCBtX2Zv
cm1EYXRhRWxlbWVudEluZGV4OwogICAgICAgICBzaXplX3QgbV9mb3JtRGF0YUVsZW1lbnREYXRh
T2Zmc2V0OwogICAgICAgICBWZWN0b3I8Y2hhcj4gbV9wb3N0Qnl0ZXM7CisKKyAgICAgICAgQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UgbV93ZWJDaGFsbGVuZ2U7CisgICAgICAgIGJvb2wgbV9jb250
aW51ZVdpdGhvdXRDcmVkZW50aWFsOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oUVQpCiAjaWYgUVRf
VkVSU0lPTiA8IDB4MDQwNDAwCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VIYW5kbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VIYW5kbGUuaAkocmV2aXNpb24gMjk2NzYpCisrKyBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
UmVzb3VyY2VIYW5kbGUuaAkod29ya2luZyBjb3B5KQpAQCAtOTcsNiArOTcsMTIgQEAKICAgICAK
ICAgICB+UmVzb3VyY2VIYW5kbGUoKTsKIAorI2lmIFBMQVRGT1JNKEdUSykKKyAgICB2b2lkIGRp
ZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSYpOworICAgIHZvaWQgcmVjZWl2ZWRDcmVkZW50aWFsKGNvbnN0IEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlJiwgY29uc3QgQ3JlZGVudGlhbCYpOworICAgIHZvaWQgcmVjZWl2ZWRSZXF1ZXN0
VG9Db250aW51ZVdpdGhvdXRDcmVkZW50aWFsKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
Jik7CisgICAgdm9pZCByZWNlaXZlZENhbmNlbGxhdGlvbihjb25zdCBBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSYpOworI2VuZGlmCiAjaWYgUExBVEZPUk0oTUFDKSB8fCBVU0UoQ0ZORVRXT1JLKQog
ICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlJik7CiAgICAgdm9pZCByZWNlaXZlZENyZWRlbnRpYWwoY29uc3QgQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UmLCBjb25zdCBDcmVkZW50aWFsJik7CkluZGV4OiBXZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZU1hbmFnZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlTWFuYWdl
ci5jcHAJKHJldmlzaW9uIDI5Njc2KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
UmVzb3VyY2VIYW5kbGVNYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBA
QAogI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5Lmgi
CiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJSZXNvdXJjZUxvYWRlci5o
IgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVJ
bnRlcm5hbC5oIgogI2luY2x1ZGUgIkhUVFBQYXJzZXJzLmgiCkBAIC0xNjIsNiArMTYzLDE3IEBA
CiAgICAgICAgIGQtPm1fcmVzcG9uc2Uuc2V0VGV4dEVuY29kaW5nTmFtZShleHRyYWN0Q2hhcnNl
dEZyb21NZWRpYVR5cGUoZC0+bV9yZXNwb25zZS5odHRwSGVhZGVyRmllbGQoIkNvbnRlbnQtVHlw
ZSIpKSk7CiAgICAgICAgIGQtPm1fcmVzcG9uc2Uuc2V0U3VnZ2VzdGVkRmlsZW5hbWUoZmlsZW5h
bWVGcm9tSFRUUENvbnRlbnREaXNwb3NpdGlvbihkLT5tX3Jlc3BvbnNlLmh0dHBIZWFkZXJGaWVs
ZCgiQ29udGVudC1EaXNwb3NpdGlvbiIpKSk7CiAKKyAgICAgICAgLy8gSFRUUCBhdXRoZW50aWNh
dGlvbgorICAgICAgICBpZiAoaHR0cENvZGUgPT0gNDAxICYmIGQtPm1fcmVzcG9uc2UuaXNIVFRQ
KCkpIHsKKyAgICAgICAgICAgIGpvYi0+ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KGQtPm1fd2ViQ2hhbGxlbmdlKTsKKworICAgICAgICAgICAgaWYgKCFkLT5tX2NvbnRpbnVlV2l0
aG91dENyZWRlbnRpYWwpIHsKKyAgICAgICAgICAgICAgICBqb2ItPmNhbmNlbCgpOworICAgICAg
ICAgICAgICAgIFJlc291cmNlSGFuZGxlTWFuYWdlcjo6c2hhcmVkSW5zdGFuY2UoKS0+YWRkKGpv
Yik7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRvdGFsU2l6ZTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorCiAgICAgICAgIC8vIEhUVFAgcmVkaXJlY3Rpb24KICAgICAgICAgaWYgKGh0dHBD
b2RlID49IDMwMCAmJiBodHRwQ29kZSA8IDQwMCkgewogICAgICAgICAgICAgU3RyaW5nIGxvY2F0
aW9uID0gZC0+bV9yZXNwb25zZS5odHRwSGVhZGVyRmllbGQoImxvY2F0aW9uIik7CkBAIC01Mjgs
NiArNTQwLDggQEAKICAgICB9CiAKICAgICBkLT5tX2hhbmRsZSA9IGN1cmxfZWFzeV9pbml0KCk7
CisgICAgLy8gSFRUUCBBdXRoZW50aWNhdGlvbiBjYW5jZWxzIHRoZSBqb2Igc28gYmUgc3VyZSB0
aGUgbmV3IGpvYiBpcyBub3QgY2FuY2VsbGVkCisgICAgZC0+bV9jYW5jZWxsZWQgPSBmYWxzZTsK
ICNpZm5kZWYgTkRFQlVHCiAgICAgaWYgKGdldGVudigiREVCVUdfQ1VSTCIpKQogICAgICAgICBj
dXJsX2Vhc3lfc2V0b3B0KGQtPm1faGFuZGxlLCBDVVJMT1BUX1ZFUkJPU0UsIDEpOwpAQCAtNTQx
LDcgKzU1NSw2IEBACiAgICAgY3VybF9lYXN5X3NldG9wdChkLT5tX2hhbmRsZSwgQ1VSTE9QVF9B
VVRPUkVGRVJFUiwgMSk7CiAgICAgY3VybF9lYXN5X3NldG9wdChkLT5tX2hhbmRsZSwgQ1VSTE9Q
VF9GT0xMT1dMT0NBVElPTiwgMSk7CiAgICAgY3VybF9lYXN5X3NldG9wdChkLT5tX2hhbmRsZSwg
Q1VSTE9QVF9NQVhSRURJUlMsIDEwKTsKLSAgICBjdXJsX2Vhc3lfc2V0b3B0KGQtPm1faGFuZGxl
LCBDVVJMT1BUX0hUVFBBVVRILCBDVVJMQVVUSF9BTlkpOwogICAgIGN1cmxfZWFzeV9zZXRvcHQo
ZC0+bV9oYW5kbGUsIENVUkxPUFRfU0hBUkUsIG1fY3VybFNoYXJlSGFuZGxlKTsKICAgICBjdXJs
X2Vhc3lfc2V0b3B0KGQtPm1faGFuZGxlLCBDVVJMT1BUX0ROU19DQUNIRV9USU1FT1VULCA2MCAq
IDUpOyAvLyA1IG1pbnV0ZXMKICAgICAvLyBlbmFibGUgZ3ppcCBhbmQgZGVmbGF0ZSB0aHJvdWdo
IEFjY2VwdC1FbmNvZGluZzoKQEAgLTU1Nyw2ICs1NzAsMjMgQEAKICAgICAgICAgY3VybF9lYXN5
X3NldG9wdChkLT5tX2hhbmRsZSwgQ1VSTE9QVF9DT09LSUVKQVIsIG1fY29va2llSmFyRmlsZU5h
bWUpOwogICAgIH0KIAorICAgIGlmICghZC0+bV93ZWJDaGFsbGVuZ2UuaXNOdWxsKCkpIHsKKyAg
ICAgICAgbG9uZyBjdXJsQXV0aDsKKyAgICAgICAgc3dpdGNoKGQtPm1fd2ViQ2hhbGxlbmdlLnBy
b3RlY3Rpb25TcGFjZSgpLmF1dGhlbnRpY2F0aW9uU2NoZW1lKCkpIHsgICAgICAgICAgCisgICAg
ICAgIGNhc2UgUHJvdGVjdGlvblNwYWNlQXV0aGVudGljYXRpb25TY2hlbWVIVFRQQmFzaWM6Cisg
ICAgICAgIGNhc2UgUHJvdGVjdGlvblNwYWNlQXV0aGVudGljYXRpb25TY2hlbWVEZWZhdWx0Ogor
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgY3VybEF1dGggPSBDVVJMQVVUSF9CQVNJQzsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgQ3JlZGVudGlhbCBjcmVk
ZW50aWFsID0gZC0+bV93ZWJDaGFsbGVuZ2UucHJvcG9zZWRDcmVkZW50aWFsKCk7CisgICAgICAg
IFN0cmluZyB1c2VycHdkID0gY3JlZGVudGlhbC51c2VyKCkgKyAiOiIgKyBjcmVkZW50aWFsLnBh
c3N3b3JkKCk7CisKKyAgICAgICAgY3VybF9lYXN5X3NldG9wdChkLT5tX2hhbmRsZSwgQ1VSTE9Q
VF9IVFRQQVVUSCwgY3VybEF1dGgpOworICAgICAgICBjdXJsX2Vhc3lfc2V0b3B0KGQtPm1faGFu
ZGxlLCBDVVJMT1BUX1VTRVJQV0QsIHN0cmR1cCh1c2VycHdkLnV0ZjgoKS5kYXRhKCkpKTsKKyAg
ICB9CisKICAgICBzdHJ1Y3QgY3VybF9zbGlzdCogaGVhZGVycyA9IDA7CiAgICAgaWYgKGpvYi0+
cmVxdWVzdCgpLmh0dHBIZWFkZXJGaWVsZHMoKS5zaXplKCkgPiAwKSB7CiAgICAgICAgIEhUVFBI
ZWFkZXJNYXAgY3VzdG9tSGVhZGVycyA9IGpvYi0+cmVxdWVzdCgpLmh0dHBIZWFkZXJGaWVsZHMo
KTsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3Vy
bC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3Vy
Y2VIYW5kbGVDdXJsLmNwcAkocmV2aXNpb24gMjk2NzYpCisrKyBXZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NSw0
ICs5NSw2MyBAQAogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKK3ZvaWQgUmVzb3VyY2VIYW5k
bGU6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSYgY2hhbGxlbmdlKQoreworICAgIC8qIEZJWE1FOiBhZGQgc3VwcG9ydCBmb3Ig
RlRQLCBIVFRQUywgYW5kIEZUUFMgYXV0aGVudGljYXRpb24sCisgICAgICogZ2V0IHRoZSByaWdo
dCBwb3J0LCBzZXJ2ZXIgYW5kIGF1dGhlbnRpY2F0aW9uIHNjaGVtZQorICAgICAqLworICAgIFJl
c291cmNlSGFuZGxlSW50ZXJuYWwqIGQgPSBnZXRJbnRlcm5hbCgpOworICAgIFByb3RlY3Rpb25T
cGFjZSBwcm90ZWN0aW9uU3BhY2U7CisgICAgdW5zaWduZWQgcHJldmlvdXNGYWlsdXJlQ291bnQg
PSAwOworICAgIGlmIChjaGFsbGVuZ2UuaXNOdWxsKCkpIHsKKyAgICAgICAgcHJvdGVjdGlvblNw
YWNlID0gUHJvdGVjdGlvblNwYWNlKGQtPm1fcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkKCJIb3N0
IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4MCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb3RlY3Rpb25TcGFjZVNlcnZl
ckhUVFAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLT5tX3Jl
c3BvbnNlLmh0dHBIZWFkZXJGaWVsZCgiUmVhbG0iKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFByb3RlY3Rpb25TcGFjZUF1dGhlbnRpY2F0aW9uU2NoZW1lRGVm
YXVsdCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcHJvdGVjdGlvblNwYWNlID0gZC0+bV93ZWJD
aGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlKCk7CisgICAgICAgIHByZXZpb3VzRmFpbHVyZUNvdW50
ID0gZC0+bV93ZWJDaGFsbGVuZ2UucHJldmlvdXNGYWlsdXJlQ291bnQoKSsxOworICAgIH0KKyAg
ICAKKyAgICBkLT5tX3dlYkNoYWxsZW5nZSA9IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHByb3Rl
Y3Rpb25TcGFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNoYWxsZW5nZS5wcm9wb3NlZENyZWRlbnRpYWwoKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXZpb3VzRmFpbHVyZUNvdW50LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC0+bV9yZXNwb25zZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYWxsZW5n
ZS5lcnJvcigpKTsKKworICAgIGlmIChkLT5jbGllbnQoKSkKKyAgICAgICAgZC0+Y2xpZW50KCkt
PmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh0aGlzLCBkLT5tX3dlYkNoYWxsZW5n
ZSk7Cit9CisKK3ZvaWQgUmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkQ3JlZGVudGlhbChjb25zdCBB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlLCBjb25zdCBDcmVkZW50aWFsJiBjcmVk
ZW50aWFsKQoreworICAgIEFTU0VSVCghY2hhbGxlbmdlLmlzTnVsbCgpKTsgICAKKyAgICBSZXNv
dXJjZUhhbmRsZUludGVybmFsKiBkID0gZ2V0SW50ZXJuYWwoKTsKKyAgICBpZiAoY2hhbGxlbmdl
ICE9IGQtPm1fd2ViQ2hhbGxlbmdlKQorICAgICAgICByZXR1cm47CisKKyAgICBkLT5tX3dlYkNo
YWxsZW5nZSA9IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNoYWxsZW5nZS5wcm90ZWN0aW9uU3Bh
Y2UoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNy
ZWRlbnRpYWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjaGFsbGVuZ2UucHJldmlvdXNGYWlsdXJlQ291bnQoKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYWxsZW5nZS5mYWlsdXJlUmVzcG9uc2UoKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYWxsZW5n
ZS5lcnJvcigpKTsKK30KKwordm9pZCBSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRSZXF1ZXN0VG9D
b250aW51ZVdpdGhvdXRDcmVkZW50aWFsKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBj
aGFsbGVuZ2UpCit7CisgICAgQVNTRVJUKCFjaGFsbGVuZ2UuaXNOdWxsKCkpOyAgIAorICAgIFJl
c291cmNlSGFuZGxlSW50ZXJuYWwqIGQgPSBnZXRJbnRlcm5hbCgpOworICAgIGlmIChjaGFsbGVu
Z2UgIT0gZC0+bV93ZWJDaGFsbGVuZ2UpCisgICAgICAgIHJldHVybjsKKworICAgIGQtPm1fY29u
dGludWVXaXRob3V0Q3JlZGVudGlhbCA9IHRydWU7CisgICAgZC0+bV93ZWJDaGFsbGVuZ2UubnVs
bGlmeSgpOworfQorCit2b2lkIFJlc291cmNlSGFuZGxlOjpyZWNlaXZlZENhbmNlbGxhdGlvbihj
b25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlKQoreworICAgIG5vdEltcGxl
bWVudGVkKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvV2Vi
Q29yZS5wcm8KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnBybwkocmV2aXNpb24gMjk2
NzYpCisrKyBXZWJDb3JlL1dlYkNvcmUucHJvCSh3b3JraW5nIGNvcHkpCkBAIC05ODgsNiArOTg4
LDcgQEAKICAgICAgICAgLi4vV2ViS2l0L2d0ay9XZWJWaWV3L3dlYmtpdC5oIFwKICAgICAgICAg
Li4vV2ViS2l0L2d0ay9XZWJWaWV3L3dlYmtpdGRlZmluZXMuaCBcCiAgICAgICAgIC4uL1dlYktp
dC9ndGsvV2ViVmlldy93ZWJraXRuZXR3b3JrcmVxdWVzdC5oIFwKKyAgICAgICAgLi4vV2ViS2l0
L2d0ay9XZWJWaWV3L3dlYmtpdGF1dGhlbnRpY2F0aW9uY2hhbGxlbmdlLmggXAogICAgICAgICAu
Li9XZWJLaXQvZ3RrL1dlYlZpZXcvd2Via2l0cHJpdmF0ZS5oIFwKICAgICAgICAgLi4vV2ViS2l0
L2d0ay9XZWJWaWV3L3dlYmtpdHNldHRpbmdzLmggXAogICAgICAgICAuLi9XZWJLaXQvZ3RrL1dl
YlZpZXcvd2Via2l0d2ViZnJhbWUuaCBcCkBAIC0xMDY1LDYgKzEwNjYsNyBAQAogICAgICAgICBw
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcCBcCiAgICAgICAg
IHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3hibS9YQk1JbWFnZURlY29kZXIuY3BwIFwKICAgICAg
ICAgLi4vV2ViS2l0L2d0ay9XZWJWaWV3L3dlYmtpdG5ldHdvcmtyZXF1ZXN0LmNwcCBcCisgICAg
ICAgIC4uL1dlYktpdC9ndGsvV2ViVmlldy93ZWJraXRhdXRoZW50aWNhdGlvbmNoYWxsZW5nZS5j
cHAgXAogICAgICAgICAuLi9XZWJLaXQvZ3RrL1dlYlZpZXcvd2Via2l0cHJpdmF0ZS5jcHAgXAog
ICAgICAgICAuLi9XZWJLaXQvZ3RrL1dlYlZpZXcvd2Via2l0c2V0dGluZ3MuY3BwIFwKICAgICAg
ICAgLi4vV2ViS2l0L2d0ay9XZWJWaWV3L3dlYmtpdHdlYmZyYW1lLmNwcCBcCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>19161</attachid>
            <date>2008-02-16 15:29:01 -0800</date>
            <delta_ts>2008-02-16 15:38:30 -0800</delta_ts>
            <desc>basic authentication</desc>
            <filename>auth.patch</filename>
            <type>text/plain</type>
            <size>31118</size>
            <attacher name="Luca Bruno">lethalman88</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDMwMzQx
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMDgtMDIt
MTYgIEx1Y2EgQnJ1bm8gIDxsZXRoYWxtYW44OEBnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTY5NDcKKyAgICAgICAgQnVnIDE2OTQ3OiBbR1RLXSBNaXNzaW5nIEhU
VFAgQXV0aCBjaGFsbGVuZ2UKKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOiBhZGQgd2Via2l0
YXV0aGVudGljYXRpb25jaGFsbGVuZ2UuY3BwIGFuZCB3ZWJraXRhdXRoZW50aWNhdGlvbmNoYWxs
ZW5nZS5oCisKIDIwMDgtMDItMTUgIEFscCBUb2tlciAgPGFscEBhdG9rZXIuY29tPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IEhvbGdlci4KSW5kZXg6IEdOVW1ha2VmaWxlLmFtCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIEdOVW1ha2VmaWxlLmFtCShyZXZpc2lvbiAzMDM0MCkKKysrIEdOVW1ha2VmaWxlLmFtCSh3
b3JraW5nIGNvcHkpCkBAIC0yNDksNiArMjQ5LDcgQEAgd2Via2l0Z3RrX2NwcGZsYWdzICs9IFwK
IAogd2Via2l0Z3RrX2hfYXBpICs9IFwKIAlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXQuaCBcCisJ
V2ViS2l0L2d0ay93ZWJraXQvd2Via2l0YXV0aGVudGljYXRpb25jaGFsbGVuZ2UuaCBcCiAJV2Vi
S2l0L2d0ay93ZWJraXQvd2Via2l0ZGVmaW5lcy5oIFwKIAlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJr
aXRuZXR3b3JrcmVxdWVzdC5oIFwKIAlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJiYWNrZm9y
d2FyZGxpc3QuaCBcCkBAIC0yNzIsNiArMjczLDcgQEAgd2Via2l0Z3RrX2hlYWRlcnMgKz0gXAog
CVdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvUGFzdGVib2FyZEhlbHBlckd0ay5oCiAKIHdlYmtp
dGd0a19zb3VyY2VzICs9IFwKKwlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRhdXRoZW50aWNhdGlv
bmNoYWxsZW5nZS5jcHAgXAogCVdlYktpdC9ndGsvd2Via2l0L3dlYmtpdG5ldHdvcmtyZXF1ZXN0
LmNwcCBcCiAJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5jcHAgXAogCVdlYktpdC9n
dGsvd2Via2l0L3dlYmtpdHdlYmJhY2tmb3J3YXJkbGlzdC5jcHAgXApJbmRleDogV2ViQ29yZS9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDMwMzQx
KQorKysgV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNSBAQAor
MjAwOC0wMi0xNiAgTHVjYSBCcnVubyAgPGxldGhhbG1hbjg4QGdtYWlsLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXQVJOSU5HOiBOTyBURVNU
IENBU0VTIEFEREVEIE9SIENIQU5HRUQKKworICAgICAgICBodHRwOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNjk0NworICAgICAgICBCdWcgMTY5NDc6IFtHVEtdIE1pc3Npbmcg
SFRUUCBBdXRoIGNoYWxsZW5nZQorCisgICAgICAgICogV2ViQ29yZS5wcm86IGFkZCB3ZWJraXRh
dXRoZW50aWNhdGlvbmNoYWxsZW5nZS5jcHAgYW5kIHdlYmtpdGF1dGhlbnRpY2F0aW9uY2hhbGxl
bmdlLmgKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmg6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmg6CisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUludGVybmFsOjpSZXNvdXJjZUhhbmRsZUludGVybmFs
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpkaWRSZWNlaXZlQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UpOiBhZGRlZCwgY2FsbGVkIGJ5IGNVUkwgYmFja2VuZAorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkQ3JlZGVudGlhbCk6IGFkZGVkCisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRSZXF1ZXN0VG9Db250aW51ZVdp
dGhvdXRDcmVkZW50aWFsKTogYWRkZWQKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxl
OjpyZWNlaXZlZENhbmNlbGxhdGlvbik6IGFkZGVkCisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9jdXJsL1Jlc291cmNlSGFuZGxlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpoZWFk
ZXJDYWxsYmFjayk6IGNoZWNrIGZvciBhdXRoZW50aWNhdGlvbgorICAgICAgICAoV2ViQ29yZTo6
UmVzb3VyY2VIYW5kbGVNYW5hZ2VyOjpzdGFydEpvYik6IHVzZSB0aGUgYXV0aGVudGljYXRpb24K
KwogMjAwOC0wMi0xNiAgS2V2aW4gT2xsaXZpZXIgIDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNvbT4K
IAogICAgICAgICB3eCBidWlsZCBmaXguCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUucHJvCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5wcm8JKHJldmlzaW9uIDMwMzQwKQorKysgV2ViQ29y
ZS9XZWJDb3JlLnBybwkod29ya2luZyBjb3B5KQpAQCAtOTkzLDYgKzk5Myw3IEBAIGd0ay1wb3J0
IHsKICAgICAgICAgLi4vV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ2xpcGJvYXJkR3RrLmggXAogICAg
ICAgICAuLi9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkSGVscGVyLmggXAogICAgICAg
ICAuLi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXQuaCBcCisgICAgICAgIC4uL1dlYktpdC9ndGsv
d2Via2l0L3dlYmtpdGF1dGhlbnRpY2F0aW9uY2hhbGxlbmdlLmggXAogICAgICAgICAuLi9XZWJL
aXQvZ3RrL3dlYmtpdC93ZWJraXRkZWZpbmVzLmggXAogICAgICAgICAuLi9XZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXRuZXR3b3JrcmVxdWVzdC5oIFwKICAgICAgICAgLi4vV2ViS2l0L2d0ay93ZWJr
aXQvd2Via2l0cHJpdmF0ZS5oIFwKQEAgLTEwNzQsNiArMTA3NSw3IEBAIGd0ay1wb3J0IHsKICAg
ICAgICAgcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAgXAog
ICAgICAgICBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcCBc
CiAgICAgICAgIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3hibS9YQk1JbWFnZURlY29kZXIuY3Bw
IFwKKyAgICAgICAgLi4vV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0YXV0aGVudGljYXRpb25jaGFs
bGVuZ2UuY3BwIFwKICAgICAgICAgLi4vV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0bmV0d29ya3Jl
cXVlc3QuY3BwIFwKICAgICAgICAgLi4vV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5j
cHAgXAogICAgICAgICAuLi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJiYWNrZm9yd2FyZGxp
c3QuY3BwIFwKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5o
CShyZXZpc2lvbiAzMDM0MCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhh
bmRsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTYsNiArMTE2LDEyIEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgdm9pZCBzZXRIb3N0QWxsb3dzQW55SFRUUFNDZXJ0aWZpY2F0ZShjb25zdCBTdHJpbmcm
KTsKICAgICBzdGF0aWMgdm9pZCBzZXRDbGllbnRDZXJ0aWZpY2F0ZShjb25zdCBTdHJpbmcmIGhv
c3QsIENGRGF0YVJlZik7CiAjZW5kaWYKKyNpZiBQTEFURk9STShHVEspCisgICAgdm9pZCBkaWRS
ZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UmKTsKKyAgICB2b2lkIHJlY2VpdmVkQ3JlZGVudGlhbChjb25zdCBBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSYsIGNvbnN0IENyZWRlbnRpYWwmKTsKKyAgICB2b2lkIHJlY2VpdmVkUmVxdWVzdFRv
Q29udGludWVXaXRob3V0Q3JlZGVudGlhbChjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYp
OworICAgIHZvaWQgcmVjZWl2ZWRDYW5jZWxsYXRpb24oY29uc3QgQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UmKTsKKyNlbmRpZgogICAgIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXJlZERh
dGEoKTsKICAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0J1ZmZlcmVkRGF0YSgpOwogICAgIApJbmRl
eDogV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5h
bC5oCShyZXZpc2lvbiAzMDM0MCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZUhhbmRsZUludGVybmFsLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMSw2ICsxMDEsOCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICAsIG1fZmlsZSgwKQogICAgICAgICAgICAgLCBt
X2Zvcm1EYXRhRWxlbWVudEluZGV4KDApCiAgICAgICAgICAgICAsIG1fZm9ybURhdGFFbGVtZW50
RGF0YU9mZnNldCgwKQorICAgICAgICAgICAgLCBtX3dlYkNoYWxsZW5nZSgpCisgICAgICAgICAg
ICAsIG1fY29udGludWVXaXRob3V0Q3JlZGVudGlhbChmYWxzZSkKICNlbmRpZgogI2lmIFBMQVRG
T1JNKFFUKQogICAgICAgICAgICAgLCBtX2pvYigwKQpAQCAtMTU5LDYgKzE2MSw5IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgc2l6ZV90IG1fZm9ybURhdGFFbGVtZW50SW5kZXg7CiAg
ICAgICAgIHNpemVfdCBtX2Zvcm1EYXRhRWxlbWVudERhdGFPZmZzZXQ7CiAgICAgICAgIFZlY3Rv
cjxjaGFyPiBtX3Bvc3RCeXRlczsKKworICAgICAgICBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSBt
X3dlYkNoYWxsZW5nZTsKKyAgICAgICAgYm9vbCBtX2NvbnRpbnVlV2l0aG91dENyZWRlbnRpYWw7
CiAjZW5kaWYKICNpZiBQTEFURk9STShRVCkKICNpZiBRVF9WRVJTSU9OIDwgMHgwNDA0MDAKSW5k
ZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5k
bGVDdXJsLmNwcAkocmV2aXNpb24gMzAzNDApCisrKyBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NSw0ICs5NSw2
OSBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpsb2FkUmVzb3VyY2VTeW5jaHJvCiAgICAgbm90SW1w
bGVtZW50ZWQoKTsKIH0KIAordm9pZCBSZXNvdXJjZUhhbmRsZTo6ZGlkUmVjZWl2ZUF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2Up
Cit7CisgICAgLyogRklYTUU6IGFkZCBzdXBwb3J0IGZvciBGVFAsIEhUVFBTLCBhbmQgRlRQUyBh
dXRoZW50aWNhdGlvbiwKKyAgICAgKiBnZXQgdGhlIHJpZ2h0IHBvcnQsIHNlcnZlciBhbmQgYXV0
aGVudGljYXRpb24gc2NoZW1lCisgICAgICovCisgICAgUmVzb3VyY2VIYW5kbGVJbnRlcm5hbCog
ZCA9IGdldEludGVybmFsKCk7CisgICAgaWYgKGQtPm1fY29udGludWVXaXRob3V0Q3JlZGVudGlh
bCkKKyAgICAgICAgcmV0dXJuOworICAgIGNhbmNlbCgpOworCisgICAgUHJvdGVjdGlvblNwYWNl
IHByb3RlY3Rpb25TcGFjZTsKKyAgICB1bnNpZ25lZCBwcmV2aW91c0ZhaWx1cmVDb3VudCA9IDA7
CisgICAgaWYgKGNoYWxsZW5nZS5pc051bGwoKSkgeworICAgICAgICBwcm90ZWN0aW9uU3BhY2Ug
PSBQcm90ZWN0aW9uU3BhY2UoZC0+bV9yZXNwb25zZS5odHRwSGVhZGVyRmllbGQoIkhvc3QiKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDgwLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvdGVjdGlvblNwYWNlU2VydmVySFRU
UCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQtPm1fcmVzcG9u
c2UuaHR0cEhlYWRlckZpZWxkKCJSZWFsbSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgUHJvdGVjdGlvblNwYWNlQXV0aGVudGljYXRpb25TY2hlbWVEZWZhdWx0
KTsKKyAgICB9IGVsc2UgeworICAgICAgICBwcm90ZWN0aW9uU3BhY2UgPSBkLT5tX3dlYkNoYWxs
ZW5nZS5wcm90ZWN0aW9uU3BhY2UoKTsKKyAgICAgICAgcHJldmlvdXNGYWlsdXJlQ291bnQgPSBk
LT5tX3dlYkNoYWxsZW5nZS5wcmV2aW91c0ZhaWx1cmVDb3VudCgpKzE7CisgICAgfQorICAgIAor
ICAgIGQtPm1fd2ViQ2hhbGxlbmdlID0gQXV0aGVudGljYXRpb25DaGFsbGVuZ2UocHJvdGVjdGlv
blNwYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y2hhbGxlbmdlLnByb3Bvc2VkQ3JlZGVudGlhbCgpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNGYWlsdXJlQ291bnQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLT5tX3Jlc3BvbnNlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhbGxlbmdlLmVy
cm9yKCkpOworCisgICAgaWYgKGQtPmNsaWVudCgpKQorICAgICAgICBkLT5jbGllbnQoKS0+ZGlk
UmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHRoaXMsIGQtPm1fd2ViQ2hhbGxlbmdlKTsK
K30KKwordm9pZCBSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRDcmVkZW50aWFsKGNvbnN0IEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UsIGNvbnN0IENyZWRlbnRpYWwmIGNyZWRlbnRp
YWwpCit7CisgICAgQVNTRVJUKCFjaGFsbGVuZ2UuaXNOdWxsKCkpOyAgIAorICAgIFJlc291cmNl
SGFuZGxlSW50ZXJuYWwqIGQgPSBnZXRJbnRlcm5hbCgpOworICAgIGlmIChjaGFsbGVuZ2UgIT0g
ZC0+bV93ZWJDaGFsbGVuZ2UpCisgICAgICAgIHJldHVybjsKKworICAgIGQtPm1fd2ViQ2hhbGxl
bmdlID0gQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZSgp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlZGVu
dGlhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNo
YWxsZW5nZS5wcmV2aW91c0ZhaWx1cmVDb3VudCgpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY2hhbGxlbmdlLmZhaWx1cmVSZXNwb25zZSgpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhbGxlbmdlLmVy
cm9yKCkpOworCisgICAgUmVzb3VyY2VIYW5kbGVNYW5hZ2VyOjpzaGFyZWRJbnN0YW5jZSgpLT5h
ZGQodGhpcyk7Cit9CisKK3ZvaWQgUmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkUmVxdWVzdFRvQ29u
dGludWVXaXRob3V0Q3JlZGVudGlhbChjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hh
bGxlbmdlKQoreworICAgIEFTU0VSVCghY2hhbGxlbmdlLmlzTnVsbCgpKTsgICAKKyAgICBSZXNv
dXJjZUhhbmRsZUludGVybmFsKiBkID0gZ2V0SW50ZXJuYWwoKTsKKyAgICBpZiAoY2hhbGxlbmdl
ICE9IGQtPm1fd2ViQ2hhbGxlbmdlKQorICAgICAgICByZXR1cm47CisKKyAgICBkLT5tX2NvbnRp
bnVlV2l0aG91dENyZWRlbnRpYWwgPSB0cnVlOworICAgIFJlc291cmNlSGFuZGxlTWFuYWdlcjo6
c2hhcmVkSW5zdGFuY2UoKS0+YWRkKHRoaXMpOworfQorCit2b2lkIFJlc291cmNlSGFuZGxlOjpy
ZWNlaXZlZENhbmNlbGxhdGlvbihjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxl
bmdlKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlTWFu
YWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVz
b3VyY2VIYW5kbGVNYW5hZ2VyLmNwcAkocmV2aXNpb24gMzAzNDApCisrKyBXZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZU1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNjgsNiArMTY4LDEwIEBAIHN0YXRpYyBzaXplX3QgaGVhZGVyQ2FsbGJhY2soY2hhciog
cHRyLCAKICAgICAgICAgZC0+bV9yZXNwb25zZS5zZXRUZXh0RW5jb2RpbmdOYW1lKGV4dHJhY3RD
aGFyc2V0RnJvbU1lZGlhVHlwZShkLT5tX3Jlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZCgiQ29udGVu
dC1UeXBlIikpKTsKICAgICAgICAgZC0+bV9yZXNwb25zZS5zZXRTdWdnZXN0ZWRGaWxlbmFtZShm
aWxlbmFtZUZyb21IVFRQQ29udGVudERpc3Bvc2l0aW9uKGQtPm1fcmVzcG9uc2UuaHR0cEhlYWRl
ckZpZWxkKCJDb250ZW50LURpc3Bvc2l0aW9uIikpKTsKIAorICAgICAgICAvLyBIVFRQIGF1dGhl
bnRpY2F0aW9uCisgICAgICAgIGlmIChodHRwQ29kZSA9PSA0MDEgJiYgZC0+bV9yZXNwb25zZS5p
c0hUVFAoKSkKKyAgICAgICAgICAgIGpvYi0+ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlKGQtPm1fd2ViQ2hhbGxlbmdlKTsKKwogICAgICAgICAvLyBIVFRQIHJlZGlyZWN0aW9uCiAg
ICAgICAgIGlmIChodHRwQ29kZSA+PSAzMDAgJiYgaHR0cENvZGUgPCA0MDApIHsKICAgICAgICAg
ICAgIFN0cmluZyBsb2NhdGlvbiA9IGQtPm1fcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkKCJsb2Nh
dGlvbiIpOwpAQCAtNTQ2LDYgKzU1MCw5IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGVNYW5hZ2VyOjpz
dGFydEpvYihSZXMKICAgICB9CiAKICAgICBkLT5tX2hhbmRsZSA9IGN1cmxfZWFzeV9pbml0KCk7
CisgICAgLy8gSFRUUCBBdXRoZW50aWNhdGlvbiBjYW5jZWxzIHRoZSBqb2Igc28gYmUgc3VyZSB0
aGUgbmV3IGpvYiBpcyBub3QgY2FuY2VsbGVkCisgICAgZC0+bV9jYW5jZWxsZWQgPSBmYWxzZTsg
IAorCiAjaWZuZGVmIE5ERUJVRwogICAgIGlmIChnZXRlbnYoIkRFQlVHX0NVUkwiKSkKICAgICAg
ICAgY3VybF9lYXN5X3NldG9wdChkLT5tX2hhbmRsZSwgQ1VSTE9QVF9WRVJCT1NFLCAxKTsKQEAg
LTU3NSw2ICs1ODIsMjMgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZU1hbmFnZXI6OnN0YXJ0Sm9iKFJl
cwogICAgICAgICBjdXJsX2Vhc3lfc2V0b3B0KGQtPm1faGFuZGxlLCBDVVJMT1BUX0NPT0tJRUpB
UiwgbV9jb29raWVKYXJGaWxlTmFtZSk7CiAgICAgfQogCisgICAgaWYgKCFkLT5tX3dlYkNoYWxs
ZW5nZS5pc051bGwoKSAmJiAhZC0+bV9jb250aW51ZVdpdGhvdXRDcmVkZW50aWFsKSB7CisgICAg
ICAgIGxvbmcgY3VybEF1dGg7CisgICAgICAgIHN3aXRjaChkLT5tX3dlYkNoYWxsZW5nZS5wcm90
ZWN0aW9uU3BhY2UoKS5hdXRoZW50aWNhdGlvblNjaGVtZSgpKSB7ICAgICAgICAgIAorICAgICAg
ICBjYXNlIFByb3RlY3Rpb25TcGFjZUF1dGhlbnRpY2F0aW9uU2NoZW1lSFRUUEJhc2ljOgorICAg
ICAgICBjYXNlIFByb3RlY3Rpb25TcGFjZUF1dGhlbnRpY2F0aW9uU2NoZW1lRGVmYXVsdDoKKyAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGN1cmxBdXRoID0gQ1VSTEFVVEhfQkFTSUM7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIENyZWRlbnRpYWwgY3JlZGVu
dGlhbCA9IGQtPm1fd2ViQ2hhbGxlbmdlLnByb3Bvc2VkQ3JlZGVudGlhbCgpOworICAgICAgICBT
dHJpbmcgdXNlcnB3ZCA9IGNyZWRlbnRpYWwudXNlcigpICsgIjoiICsgY3JlZGVudGlhbC5wYXNz
d29yZCgpOworICAgICAgICAKKyAgICAgICAgY3VybF9lYXN5X3NldG9wdChkLT5tX2hhbmRsZSwg
Q1VSTE9QVF9IVFRQQVVUSCwgY3VybEF1dGgpOworICAgICAgICBjdXJsX2Vhc3lfc2V0b3B0KGQt
Pm1faGFuZGxlLCBDVVJMT1BUX1VTRVJQV0QsIHN0cmR1cCh1c2VycHdkLnV0ZjgoKS5kYXRhKCkp
KTsKKyAgICB9CisKICAgICBzdHJ1Y3QgY3VybF9zbGlzdCogaGVhZGVycyA9IDA7CiAgICAgaWYg
KGpvYi0+cmVxdWVzdCgpLmh0dHBIZWFkZXJGaWVsZHMoKS5zaXplKCkgPiAwKSB7CiAgICAgICAg
IEhUVFBIZWFkZXJNYXAgY3VzdG9tSGVhZGVycyA9IGpvYi0+cmVxdWVzdCgpLmh0dHBIZWFkZXJG
aWVsZHMoKTsKSW5kZXg6IFdlYktpdC9ndGsvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dC9ndGsvQ2hhbmdlTG9nCShyZXZpc2lvbiAzMDM0MSkKKysrIFdlYktpdC9ndGsvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMDgtMDItMTYgIEx1Y2EgQnJ1bm8g
IDxsZXRoYWxtYW44OEBnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTY5NDcKKyAgICAgICAgQnVnIDE2OTQ3OiBbR1RLXSBNaXNzaW5nIEhUVFAgQXV0aCBjaGFsbGVu
Z2UKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVjZWl2ZUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKTogaW1wbGVtZW50ZWQKKyAgICAgICAgKiB3ZWJraXQvd2Vi
a2l0ZGVmaW5lcy5oOgorICAgICAgICAqIHdlYmtpdC93ZWJraXRwcml2YXRlLmg6CisgICAgICAg
ICogd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwOiBhZGQgYXV0aGVudGljYXRpb24tcmVxdWVzdGVk
IHNpZ25hbCBhbmQgY3JlYXRlIGF1dGggZGlhbG9nCisgICAgICAgICogd2Via2l0L3dlYmtpdHdl
YnZpZXcuaDoKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0YXV0aGVudGljYXRpb25jaGFsbGVuZ2Uu
Y3BwOiBhZGRlZAorICAgICAgICAqIHdlYmtpdC93ZWJraXRhdXRoZW50aWNhdGlvbmNoYWxsZW5n
ZS5oOiBhZGRlZAorCiAyMDA4LTAyLTE1ICBBbHAgVG9rZXIgIDxhbHBAYXRva2VyLmNvbT4KIAog
ICAgICAgICBGaXggdGhlIEdUSysgYnVpbGQgZm9sbG93aW5nIGJyZWFrYWdlIGludHJvZHVjZWQg
aW4gcjMwMjQzLgpJbmRleDogV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudEd0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFt
ZUxvYWRlckNsaWVudEd0ay5jcHAJKHJldmlzaW9uIDMwMzQwKQorKysgV2ViS2l0L2d0ay9XZWJD
b3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMw
LDYgKzMwLDcgQEAKICNpbmNsdWRlICJIVE1MRnJhbWVPd25lckVsZW1lbnQuaCIKICNpbmNsdWRl
ICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJMYW5ndWFnZS5oIgorI2luY2x1ZGUgIk1haW5SZXNv
dXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKICNpbmNsdWRlICJO
b3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCkBAIC0zOSw2ICs0
MCw3IEBACiAjaW5jbHVkZSAia2pzX2JpbmRpbmcuaCIKICNpbmNsdWRlICJranNfcHJveHkuaCIK
ICNpbmNsdWRlICJranNfd2luZG93LmgiCisjaW5jbHVkZSAid2Via2l0YXV0aGVudGljYXRpb25j
aGFsbGVuZ2UuaCIKICNpbmNsdWRlICJ3ZWJraXR3ZWJ2aWV3LmgiCiAjaW5jbHVkZSAid2Via2l0
d2ViZnJhbWUuaCIKICNpbmNsdWRlICJ3ZWJraXRwcml2YXRlLmgiCkBAIC0xNjUsOSArMTY3LDI0
IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmNvbW1pdHRlZExvYWQoRG8KICAgICBmbC0+YWRk
RGF0YShkYXRhLCBsZW5ndGgpOwogfQogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRj
aERpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShEb2N1bWVudExvYWRlciosIHVuc2ln
bmVkIGxvbmcgIGlkZW50aWZpZXIsIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikKK3Zv
aWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciwgdW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgd2ViQ2hhbGxlbmdlKQogewot
ICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSA9IGRvY3Vt
ZW50TG9hZGVyLT5tYWluUmVzb3VyY2VMb2FkZXIoKS0+aGFuZGxlKCk7CisgICAgQVNTRVJUKGhh
bmRsZSk7CisgICAgaWYgKCFoYW5kbGUpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBXZWJL
aXRBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSogY2hhbGxlbmdlID0gd2Via2l0X2F1dGhlbnRpY2F0
aW9uX2NoYWxsZW5nZV9uZXcoKTsKKyAgICBXZWJLaXRBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVBy
aXZhdGUqIGNoYWxsZW5nZVByaXZhdGUgPSBXRUJLSVRfQVVUSEVOVElDQVRJT05fQ0hBTExFTkdF
X0dFVF9QUklWQVRFKGNoYWxsZW5nZSk7CisgICAgKmNoYWxsZW5nZVByaXZhdGUtPndlYkNoYWxs
ZW5nZSA9IHdlYkNoYWxsZW5nZTsKKyAgICBjaGFsbGVuZ2VQcml2YXRlLT53ZWJIYW5kbGUgPSBo
YW5kbGU7CisgICAgCisgICAgQ3JlZGVudGlhbCBjcmVkZW50aWFsID0gd2ViQ2hhbGxlbmdlLnBy
b3Bvc2VkQ3JlZGVudGlhbCgpOworICAgIHdlYmtpdF9hdXRoZW50aWNhdGlvbl9jaGFsbGVuZ2Vf
c2V0X3VzZXIoY2hhbGxlbmdlLCBjcmVkZW50aWFsLnVzZXIoKS51dGY4KCkuZGF0YSgpKTsKKyAg
ICB3ZWJraXRfYXV0aGVudGljYXRpb25fY2hhbGxlbmdlX3NldF9wYXNzd29yZChjaGFsbGVuZ2Us
IGNyZWRlbnRpYWwucGFzc3dvcmQoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAKKyAgICBXZWJLaXRX
ZWJWaWV3KiB3ZWJWaWV3ID0gZ2V0Vmlld0Zyb21GcmFtZShtX2ZyYW1lKTsKKyAgICBnX3NpZ25h
bF9lbWl0X2J5X25hbWUod2ViVmlldywgImF1dGhlbnRpY2F0aW9uLXJlcXVlc3RlZCIsIG1fZnJh
bWUsIGNoYWxsZW5nZSwgTlVMTCk7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3Bh
dGNoRGlkQ2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoRG9jdW1lbnRMb2FkZXIqLCB1bnNp
Z25lZCBsb25nICBpZGVudGlmaWVyLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpCklu
ZGV4OiBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRhdXRoZW50aWNhdGlvbmNoYWxsZW5nZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0YXV0aGVudGljYXRpb25jaGFs
bGVuZ2UuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0YXV0aGVu
dGljYXRpb25jaGFsbGVuZ2UuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEzOCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAwOCBMdWNhIEJydW5vCisgKgorICogVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAq
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisg
KiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisg
KiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKwor
I2luY2x1ZGUgIndlYmtpdGF1dGhlbnRpY2F0aW9uY2hhbGxlbmdlLmgiCisjaW5jbHVkZSAid2Vi
a2l0cHJpdmF0ZS5oIgorCisjaW5jbHVkZSAiQ3JlZGVudGlhbC5oIgorI2luY2x1ZGUgIlJlc291
cmNlSGFuZGxlLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Cit1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKKworZXh0ZXJuICJDIiB7CisKK0dfREVGSU5FX1RZUEUoV2ViS2l0QXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UsIHdlYmtpdF9hdXRoZW50aWNhdGlvbl9jaGFsbGVuZ2UsIEdfVFlQRV9P
QkpFQ1QpOworCitzdGF0aWMgdm9pZCB3ZWJraXRfYXV0aGVudGljYXRpb25fY2hhbGxlbmdlX2Zp
bmFsaXplKEdPYmplY3QqIG9iamVjdCkKK3sKKyAgICBXZWJLaXRBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZVByaXZhdGUqIGNoYWxsZW5nZVByaXZhdGUgPSBXRUJLSVRfQVVUSEVOVElDQVRJT05fQ0hB
TExFTkdFX0dFVF9QUklWQVRFKG9iamVjdCk7CisKKyAgICBkZWxldGUgY2hhbGxlbmdlUHJpdmF0
ZS0+d2ViQ2hhbGxlbmdlOworICAgIGdfZnJlZShjaGFsbGVuZ2VQcml2YXRlLT51c2VyKTsKKyAg
ICBnX2ZyZWUoY2hhbGxlbmdlUHJpdmF0ZS0+cGFzc3dvcmQpOworCisgICAgR19PQkpFQ1RfQ0xB
U1Mod2Via2l0X2F1dGhlbnRpY2F0aW9uX2NoYWxsZW5nZV9wYXJlbnRfY2xhc3MpLT5maW5hbGl6
ZShvYmplY3QpOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfYXV0aGVudGljYXRpb25fY2hhbGxl
bmdlX2NsYXNzX2luaXQoV2ViS2l0QXV0aGVudGljYXRpb25DaGFsbGVuZ2VDbGFzcyogY2hhbGxl
bmdlQ2xhc3MpCit7CisgICAgZ190eXBlX2NsYXNzX2FkZF9wcml2YXRlKGNoYWxsZW5nZUNsYXNz
LCBzaXplb2YoV2ViS2l0QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcml2YXRlKSk7CisKKyAgICBH
X09CSkVDVF9DTEFTUyhjaGFsbGVuZ2VDbGFzcyktPmZpbmFsaXplID0gd2Via2l0X2F1dGhlbnRp
Y2F0aW9uX2NoYWxsZW5nZV9maW5hbGl6ZTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0X2F1dGhl
bnRpY2F0aW9uX2NoYWxsZW5nZV9pbml0KFdlYktpdEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKiBj
aGFsbGVuZ2UpCit7CisgICAgV2ViS2l0QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcml2YXRlKiBj
aGFsbGVuZ2VQcml2YXRlID0gV0VCS0lUX0FVVEhFTlRJQ0FUSU9OX0NIQUxMRU5HRV9HRVRfUFJJ
VkFURShjaGFsbGVuZ2UpOworCisgICAgY2hhbGxlbmdlUHJpdmF0ZS0+d2ViQ2hhbGxlbmdlID0g
bmV3IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCk7CisgICAgY2hhbGxlbmdlUHJpdmF0ZS0+d2Vi
SGFuZGxlID0gTlVMTDsKKyAgICBjaGFsbGVuZ2VQcml2YXRlLT51c2VyID0gTlVMTDsKKyAgICBj
aGFsbGVuZ2VQcml2YXRlLT5wYXNzd29yZCA9IE5VTEw7Cit9CisKK1dlYktpdEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlKiB3ZWJraXRfYXV0aGVudGljYXRpb25fY2hhbGxlbmdlX25ldygpCit7Cisg
ICAgV2ViS2l0QXV0aGVudGljYXRpb25DaGFsbGVuZ2UqIGNoYWxsZW5nZSA9IFdFQktJVF9BVVRI
RU5USUNBVElPTl9DSEFMTEVOR0UoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX0FVVEhFTlRJQ0FU
SU9OX0NIQUxMRU5HRSwgTlVMTCkpOworCisgICAgcmV0dXJuIGNoYWxsZW5nZTsKK30KKwordm9p
ZCB3ZWJraXRfYXV0aGVudGljYXRpb25fY2hhbGxlbmdlX3NldF91c2VyKFdlYktpdEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKiBjaGFsbGVuZ2UsIGNvbnN0IGdjaGFyKiB1c2VyKQoreworICAgIGdf
cmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX0FVVEhFTlRJQ0FUSU9OX0NIQUxMRU5HRShjaGFsbGVu
Z2UpKTsKKyAgICBnX3JldHVybl9pZl9mYWlsKHVzZXIpOworICAgIAorICAgIFdlYktpdEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlUHJpdmF0ZSogY2hhbGxlbmdlUHJpdmF0ZSA9IFdFQktJVF9BVVRI
RU5USUNBVElPTl9DSEFMTEVOR0VfR0VUX1BSSVZBVEUoY2hhbGxlbmdlKTsKKworICAgIGdfZnJl
ZShjaGFsbGVuZ2VQcml2YXRlLT51c2VyKTsKKyAgICBjaGFsbGVuZ2VQcml2YXRlLT51c2VyID0g
Z19zdHJkdXAodXNlcik7Cit9CisKK2NvbnN0IGdjaGFyKiB3ZWJraXRfYXV0aGVudGljYXRpb25f
Y2hhbGxlbmdlX2dldF91c2VyKFdlYktpdEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKiBjaGFsbGVu
Z2UpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX0FVVEhFTlRJQ0FUSU9O
X0NIQUxMRU5HRShjaGFsbGVuZ2UpLCBOVUxMKTsKKworICAgIFdlYktpdEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlUHJpdmF0ZSogY2hhbGxlbmdlUHJpdmF0ZSA9IFdFQktJVF9BVVRIRU5USUNBVElP
Tl9DSEFMTEVOR0VfR0VUX1BSSVZBVEUoY2hhbGxlbmdlKTsKKworICAgIHJldHVybiBjaGFsbGVu
Z2VQcml2YXRlLT51c2VyOworfQorCit2b2lkIHdlYmtpdF9hdXRoZW50aWNhdGlvbl9jaGFsbGVu
Z2Vfc2V0X3Bhc3N3b3JkKFdlYktpdEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKiBjaGFsbGVuZ2Us
IGNvbnN0IGdjaGFyKiBwYXNzd29yZCkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9J
U19BVVRIRU5USUNBVElPTl9DSEFMTEVOR0UoY2hhbGxlbmdlKSk7CisgICAgZ19yZXR1cm5faWZf
ZmFpbChwYXNzd29yZCk7CisgICAgCisgICAgV2ViS2l0QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQ
cml2YXRlKiBjaGFsbGVuZ2VQcml2YXRlID0gV0VCS0lUX0FVVEhFTlRJQ0FUSU9OX0NIQUxMRU5H
RV9HRVRfUFJJVkFURShjaGFsbGVuZ2UpOworCisgICAgZ19mcmVlKGNoYWxsZW5nZVByaXZhdGUt
PnBhc3N3b3JkKTsKKyAgICBjaGFsbGVuZ2VQcml2YXRlLT5wYXNzd29yZCA9IGdfc3RyZHVwKHBh
c3N3b3JkKTsKK30KKworY29uc3QgZ2NoYXIqIHdlYmtpdF9hdXRoZW50aWNhdGlvbl9jaGFsbGVu
Z2VfZ2V0X3Bhc3N3b3JkKFdlYktpdEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKiBjaGFsbGVuZ2Up
Cit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX0FVVEhFTlRJQ0FUSU9OX0NI
QUxMRU5HRShjaGFsbGVuZ2UpLCBOVUxMKTsKKworICAgIFdlYktpdEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlUHJpdmF0ZSogY2hhbGxlbmdlUHJpdmF0ZSA9IFdFQktJVF9BVVRIRU5USUNBVElPTl9D
SEFMTEVOR0VfR0VUX1BSSVZBVEUoY2hhbGxlbmdlKTsKKworICAgIHJldHVybiBjaGFsbGVuZ2VQ
cml2YXRlLT5wYXNzd29yZDsKK30KKwordm9pZCB3ZWJraXRfYXV0aGVudGljYXRpb25fY2hhbGxl
bmdlX3VzZV9jcmVkZW50aWFsKFdlYktpdEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKiBjaGFsbGVu
Z2UpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfQVVUSEVOVElDQVRJT05fQ0hB
TExFTkdFKGNoYWxsZW5nZSkpOworCisgICAgV2ViS2l0QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQ
cml2YXRlKiBjaGFsbGVuZ2VQcml2YXRlID0gV0VCS0lUX0FVVEhFTlRJQ0FUSU9OX0NIQUxMRU5H
RV9HRVRfUFJJVkFURShjaGFsbGVuZ2UpOworICAgIENyZWRlbnRpYWwgY3JlZGVudGlhbCA9IENy
ZWRlbnRpYWwoY2hhbGxlbmdlUHJpdmF0ZS0+dXNlciwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNoYWxsZW5nZVByaXZhdGUtPnBhc3N3b3JkLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQ3JlZGVudGlhbFBlcnNpc3RlbmNlRm9yU2Vzc2lv
bik7CisgICAgY2hhbGxlbmdlUHJpdmF0ZS0+d2ViSGFuZGxlLT5yZWNlaXZlZENyZWRlbnRpYWwo
KmNoYWxsZW5nZVByaXZhdGUtPndlYkNoYWxsZW5nZSwgY3JlZGVudGlhbCk7Cit9CisKK3ZvaWQg
d2Via2l0X2F1dGhlbnRpY2F0aW9uX2NoYWxsZW5nZV9jb250aW51ZV93aXRob3V0X2NyZWRlbnRp
YWwoV2ViS2l0QXV0aGVudGljYXRpb25DaGFsbGVuZ2UqIGNoYWxsZW5nZSkKK3sKKyAgICBnX3Jl
dHVybl9pZl9mYWlsKFdFQktJVF9JU19BVVRIRU5USUNBVElPTl9DSEFMTEVOR0UoY2hhbGxlbmdl
KSk7CisKKyAgICBXZWJLaXRBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByaXZhdGUqIGNoYWxsZW5n
ZVByaXZhdGUgPSBXRUJLSVRfQVVUSEVOVElDQVRJT05fQ0hBTExFTkdFX0dFVF9QUklWQVRFKGNo
YWxsZW5nZSk7CisgICAgY2hhbGxlbmdlUHJpdmF0ZS0+d2ViSGFuZGxlLT5yZWNlaXZlZFJlcXVl
c3RUb0NvbnRpbnVlV2l0aG91dENyZWRlbnRpYWwoKmNoYWxsZW5nZVByaXZhdGUtPndlYkNoYWxs
ZW5nZSk7Cit9CisKK3ZvaWQgd2Via2l0X2F1dGhlbnRpY2F0aW9uX2NoYWxsZW5nZV9jYW5jZWwo
V2ViS2l0QXV0aGVudGljYXRpb25DaGFsbGVuZ2UqIGNoYWxsZW5nZSkKK3sKKyAgICBnX3JldHVy
bl9pZl9mYWlsKFdFQktJVF9JU19BVVRIRU5USUNBVElPTl9DSEFMTEVOR0UoY2hhbGxlbmdlKSk7
CisKKyAgICBXZWJLaXRBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByaXZhdGUqIGNoYWxsZW5nZVBy
aXZhdGUgPSBXRUJLSVRfQVVUSEVOVElDQVRJT05fQ0hBTExFTkdFX0dFVF9QUklWQVRFKGNoYWxs
ZW5nZSk7CisKKyAgICBjaGFsbGVuZ2VQcml2YXRlLT53ZWJIYW5kbGUtPnJlY2VpdmVkQ2FuY2Vs
bGF0aW9uKCpjaGFsbGVuZ2VQcml2YXRlLT53ZWJDaGFsbGVuZ2UpOworfQorCit9CkluZGV4OiBX
ZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRhdXRoZW50aWNhdGlvbmNoYWxsZW5nZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdGF1dGhlbnRpY2F0aW9uY2hhbGxlbmdlLmgJ
KHJldmlzaW9uIDApCisrKyBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRhdXRoZW50aWNhdGlvbmNo
YWxsZW5nZS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDczIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDA4IEx1Y2EgQnJ1bm8KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5M
SUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjEx
MC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBXRUJLSVRfQVVUSEVOVElDQVRJT05fQ0hBTExF
TkdFX0gKKyNkZWZpbmUgV0VCS0lUX0FVVEhFTlRJQ0FUSU9OX0NIQUxMRU5HRV9ICisKKyNpbmNs
dWRlIDxnbGliLW9iamVjdC5oPgorCisjaW5jbHVkZSAid2Via2l0ZGVmaW5lcy5oIgorCitHX0JF
R0lOX0RFQ0xTCisKKyNkZWZpbmUgV0VCS0lUX1RZUEVfQVVUSEVOVElDQVRJT05fQ0hBTExFTkdF
ICAgICAgICAgICAgKHdlYmtpdF9hdXRoZW50aWNhdGlvbl9jaGFsbGVuZ2VfZ2V0X3R5cGUoKSkK
KyNkZWZpbmUgV0VCS0lUX0FVVEhFTlRJQ0FUSU9OX0NIQUxMRU5HRShvYmopICAgICAgICAgICAg
IChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgob2JqKSwgV0VCS0lUX1RZUEVfQVVUSEVOVElD
QVRJT05fQ0hBTExFTkdFLCBXZWJLaXRBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkpCisjZGVmaW5l
IFdFQktJVF9BVVRIRU5USUNBVElPTl9DSEFMTEVOR0VfQ0xBU1Moa2xhc3MpICAgICAoR19UWVBF
X0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNzKSwgIFdFQktJVF9UWVBFX0FVVEhFTlRJQ0FUSU9OX0NI
QUxMRU5HRSwgV2ViS2l0QXV0aGVudGljYXRpb25DaGFsbGVuZ2VDbGFzcykpCisjZGVmaW5lIFdF
QktJVF9JU19BVVRIRU5USUNBVElPTl9DSEFMTEVOR0Uob2JqKSAgICAgICAgIChHX1RZUEVfQ0hF
Q0tfSU5TVEFOQ0VfVFlQRSgob2JqKSwgV0VCS0lUX1RZUEVfQVVUSEVOVElDQVRJT05fQ0hBTExF
TkdFKSkKKyNkZWZpbmUgV0VCS0lUX0lTX0FVVEhFTlRJQ0FUSU9OX0NIQUxMRU5HRV9DTEFTUyhr
bGFzcykgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyksICBXRUJLSVRfVFlQRV9BVVRI
RU5USUNBVElPTl9DSEFMTEVOR0UpKQorI2RlZmluZSBXRUJLSVRfQVVUSEVOVElDQVRJT05fQ0hB
TExFTkdFX0dFVF9DTEFTUyhvYmopICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygob2JqKSwg
IFdFQktJVF9UWVBFX0FVVEhFTlRJQ0FUSU9OX0NIQUxMRU5HRSwgV2ViS2l0QXV0aGVudGljYXRp
b25DaGFsbGVuZ2VDbGFzcykpCisKK3N0cnVjdCBfV2ViS2l0QXV0aGVudGljYXRpb25DaGFsbGVu
Z2UgeworICAgIEdPYmplY3QgcGFyZW50OworfTsKKworc3RydWN0IF9XZWJLaXRBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZUNsYXNzIHsKKyAgICBHT2JqZWN0Q2xhc3MgcGFyZW50OworfTsKKworV0VC
S0lUX0FQSSBHVHlwZQord2Via2l0X2F1dGhlbnRpY2F0aW9uX2NoYWxsZW5nZV9nZXRfdHlwZSAo
dm9pZCk7CisKK1dFQktJVF9BUEkgV2ViS2l0QXV0aGVudGljYXRpb25DaGFsbGVuZ2UqCit3ZWJr
aXRfYXV0aGVudGljYXRpb25fY2hhbGxlbmdlX25ldyAoKTsKKworV0VCS0lUX0FQSSB2b2lkCit3
ZWJraXRfYXV0aGVudGljYXRpb25fY2hhbGxlbmdlX3NldF91c2VyIChXZWJLaXRBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSogY2hhbGxlbmdlLCBjb25zdCBnY2hhciogdXNlcik7CisKK1dFQktJVF9B
UEkgY29uc3QgZ2NoYXIqCit3ZWJraXRfYXV0aGVudGljYXRpb25fY2hhbGxlbmdlX2dldF91c2Vy
IChXZWJLaXRBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSogY2hhbGxlbmdlKTsKKworV0VCS0lUX0FQ
SSB2b2lkCit3ZWJraXRfYXV0aGVudGljYXRpb25fY2hhbGxlbmdlX3NldF9wYXNzd29yZCAoV2Vi
S2l0QXV0aGVudGljYXRpb25DaGFsbGVuZ2UqIGNoYWxsZW5nZSwgY29uc3QgZ2NoYXIqIHBhc3N3
b3JkKTsKKworV0VCS0lUX0FQSSBjb25zdCBnY2hhcioKK3dlYmtpdF9hdXRoZW50aWNhdGlvbl9j
aGFsbGVuZ2VfZ2V0X3Bhc3N3b3JkIChXZWJLaXRBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSogY2hh
bGxlbmdlKTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfYXV0aGVudGljYXRpb25fY2hhbGxl
bmdlX3VzZV9jcmVkZW50aWFsIChXZWJLaXRBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSogY2hhbGxl
bmdlKTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfYXV0aGVudGljYXRpb25fY2hhbGxlbmdl
X2NvbnRpbnVlX3dpdGhvdXRfY3JlZGVudGlhbCAoV2ViS2l0QXV0aGVudGljYXRpb25DaGFsbGVu
Z2UqIGNoYWxsZW5nZSk7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X2F1dGhlbnRpY2F0aW9u
X2NoYWxsZW5nZV9jYW5jZWwgKFdlYktpdEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKiBjaGFsbGVu
Z2UpOworCitHX0VORF9ERUNMUworCisjZW5kaWYKSW5kZXg6IFdlYktpdC9ndGsvd2Via2l0L3dl
YmtpdGRlZmluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRkZWZp
bmVzLmgJKHJldmlzaW9uIDMwMzQwKQorKysgV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0ZGVmaW5l
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw5IEBACiAKIEdfQkVHSU5fREVDTFMKIAor
dHlwZWRlZiBzdHJ1Y3QgX1dlYktpdEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIFdlYktpdEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlOwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlQ2xhc3MgV2ViS2l0QXV0aGVudGljYXRpb25DaGFsbGVuZ2VDbGFzczsKKwogdHlw
ZWRlZiBzdHJ1Y3QgX1dlYktpdE5ldHdvcmtSZXF1ZXN0IFdlYktpdE5ldHdvcmtSZXF1ZXN0Owog
dHlwZWRlZiBzdHJ1Y3QgX1dlYktpdE5ldHdvcmtSZXF1ZXN0Q2xhc3MgV2ViS2l0TmV0d29ya1Jl
cXVlc3RDbGFzczsKIApJbmRleDogV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHByaXZhdGUuaAkocmV2aXNpb24g
MzAzNDApCisrKyBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2YXRlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI2LDYgKzI2LDcgQEAKICAqIFRoZXkgYXJlIHVzaW5nIFdlYkNvcmUgd2hpY2ggbXVz
bid0IGJlIGV4cG9zZWQgdG8gdGhlIG91dGVyIHdvcmxkLgogICovCiAKKyNpbmNsdWRlIDx3ZWJr
aXQvd2Via2l0YXV0aGVudGljYXRpb25jaGFsbGVuZ2UuaD4KICNpbmNsdWRlIDx3ZWJraXQvd2Vi
a2l0ZGVmaW5lcy5oPgogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJ2aWV3Lmg+CiAjaW5jbHVk
ZSA8d2Via2l0L3dlYmtpdHdlYmZyYW1lLmg+CkBAIC0zMyw2ICszNCw3IEBACiAjaW5jbHVkZSA8
d2Via2l0L3dlYmtpdG5ldHdvcmtyZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8d2Via2l0L3dlYmtpdHdl
YmJhY2tmb3J3YXJkbGlzdC5oPgogCisjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uu
aCIKICNpbmNsdWRlICJCYWNrRm9yd2FyZExpc3QuaCIKICNpbmNsdWRlICJIaXN0b3J5SXRlbS5o
IgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCkBAIC0xMDMsNiArMTA1LDE1IEBAIGV4dGVybiAiQyIg
ewogICAgIHN0cnVjdCBfV2ViS2l0TmV0d29ya1JlcXVlc3RQcml2YXRlIHsKICAgICAgICAgZ2No
YXIqIHVyaTsKICAgICB9OworIAorICAgICNkZWZpbmUgV0VCS0lUX0FVVEhFTlRJQ0FUSU9OX0NI
QUxMRU5HRV9HRVRfUFJJVkFURShvYmopICAgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX1BSSVZBVEUo
KG9iaiksIFdFQktJVF9UWVBFX0FVVEhFTlRJQ0FUSU9OX0NIQUxMRU5HRSwgV2ViS2l0QXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VQcml2YXRlKSkKKyAgICB0eXBlZGVmIHN0cnVjdCBfV2ViS2l0QXV0
aGVudGljYXRpb25DaGFsbGVuZ2VQcml2YXRlIFdlYktpdEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
UHJpdmF0ZTsKKyAgICBzdHJ1Y3QgX1dlYktpdEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJpdmF0
ZSB7CisgICAgICAgIFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKiB3ZWJDaGFsbGVu
Z2U7CisgICAgICAgIFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiB3ZWJIYW5kbGU7CisgICAgICAg
IGdjaGFyKiB1c2VyOworICAgICAgICBnY2hhciogcGFzc3dvcmQ7CisgICAgfTsKIAogICAgIFdl
YktpdFdlYkZyYW1lKgogICAgIHdlYmtpdF93ZWJfZnJhbWVfaW5pdF93aXRoX3dlYl92aWV3KFdl
YktpdFdlYlZpZXcqLCBXZWJDb3JlOjpIVE1MRnJhbWVPd25lckVsZW1lbnQqKTsKSW5kZXg6IFdl
YktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9n
dGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCShyZXZpc2lvbiAzMDM0MCkKKysrIFdlYktpdC9n
dGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NSw2ICs4NSw3
IEBAIGVudW0gewogICAgIENPUFlfQ0xJUEJPQVJELAogICAgIFBBU1RFX0NMSVBCT0FSRCwKICAg
ICBDVVRfQ0xJUEJPQVJELAorICAgIEFVVEhFTlRJQ0FUSU9OX1JFUVVFU1RFRCwKICAgICBMQVNU
X1NJR05BTAogfTsKIApAQCAtMzc5LDcgKzM4MCw3IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRf
d2ViX3ZpZXdfZm9jdXNfaW4KICAgICBHdGtXaWRnZXQqIHRvcGxldmVsID0gZ3RrX3dpZGdldF9n
ZXRfdG9wbGV2ZWwod2lkZ2V0KTsKICAgICBpZiAoR1RLX1dJREdFVF9UT1BMRVZFTCh0b3BsZXZl
bCkgJiYgZ3RrX3dpbmRvd19oYXNfdG9wbGV2ZWxfZm9jdXMoR1RLX1dJTkRPVyh0b3BsZXZlbCkp
KSB7CiAgICAgICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcod2lk
Z2V0KTsKLQorICAgICAgICAKICAgICAgICAgRnJhbWUqIGZyYW1lID0gY29yZSh3ZWJWaWV3KS0+
bWFpbkZyYW1lKCk7CiAgICAgICAgIGNvcmUod2ViVmlldyktPmZvY3VzQ29udHJvbGxlcigpLT5z
ZXRBY3RpdmUoZnJhbWUpOwogICAgIH0KQEAgLTYwNSw2ICs2MDYsODAgQEAgc3RhdGljIHZvaWQg
d2Via2l0X3dlYl92aWV3X3JlYWxfcGFzdGVfYwogICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFu
ZCgiUGFzdGUiKS5leGVjdXRlKCk7CiB9CiAKK3R5cGVkZWYgc3RydWN0Cit7CisgICAgR3RrV2lk
Z2V0KiB1c2VyX2VudHJ5OworICAgIEd0a1dpZGdldCogcGFzc3dvcmRfZW50cnk7CisgICAgV2Vi
S2l0QXV0aGVudGljYXRpb25DaGFsbGVuZ2UqIGNoYWxsZW5nZTsKK30gQXV0aGVudGljYXRpb25E
aWFsb2dEYXRhOworCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfYXV0aGVudGljYXRpb25f
ZGlhbG9nX3Jlc3BvbnNlX2NiKEd0a1dpZGdldCogZGlhbG9nLCBnaW50IHJlc3BvbnNlLCBncG9p
bnRlciB1c2VyX2RhdGEpCit7CisgICAgQXV0aGVudGljYXRpb25EaWFsb2dEYXRhKiBkYXRhID0g
cmVpbnRlcnByZXRfY2FzdDxBdXRoZW50aWNhdGlvbkRpYWxvZ0RhdGEqPih1c2VyX2RhdGEpOwor
CisgICAgc3dpdGNoIChyZXNwb25zZSkgeworICAgIGNhc2UgR1RLX1JFU1BPTlNFX05PTkU6Cisg
ICAgY2FzZSBHVEtfUkVTUE9OU0VfREVMRVRFX0VWRU5UOgorICAgIGNhc2UgR1RLX1JFU1BPTlNF
X1JFSkVDVDoKKyAgICAgICAgd2Via2l0X2F1dGhlbnRpY2F0aW9uX2NoYWxsZW5nZV9jb250aW51
ZV93aXRob3V0X2NyZWRlbnRpYWwoZGF0YS0+Y2hhbGxlbmdlKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBHVEtfUkVTUE9OU0VfQUNDRVBUOgorICAgICAgICB3ZWJraXRfYXV0aGVudGljYXRp
b25fY2hhbGxlbmdlX3NldF91c2VyKGRhdGEtPmNoYWxsZW5nZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndGtfZW50cnlfZ2V0X3RleHQoR1RLX0VO
VFJZKGRhdGEtPnVzZXJfZW50cnkpKSk7CisgICAgICAgIHdlYmtpdF9hdXRoZW50aWNhdGlvbl9j
aGFsbGVuZ2Vfc2V0X3Bhc3N3b3JkKGRhdGEtPmNoYWxsZW5nZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3RrX2VudHJ5X2dldF90ZXh0KEdU
S19FTlRSWShkYXRhLT5wYXNzd29yZF9lbnRyeSkpKTsKKyAgICAgICAgd2Via2l0X2F1dGhlbnRp
Y2F0aW9uX2NoYWxsZW5nZV91c2VfY3JlZGVudGlhbChkYXRhLT5jaGFsbGVuZ2UpOworICAgICAg
ICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBnX2Fzc2VydF9ub3RfcmVhY2hlZCAoKTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgZ3RrX3dpZGdldF9kZXN0cm95KGRpYWxvZyk7
CisgICAgZ19vYmplY3RfdW5yZWYoZGF0YS0+Y2hhbGxlbmdlKTsKK30KKworc3RhdGljIHZvaWQg
d2Via2l0X3dlYl92aWV3X3JlYWxfYXV0aGVudGljYXRpb25fcmVxdWVzdGVkKFdlYktpdFdlYlZp
ZXcqIHdlYlZpZXcsIFdlYktpdFdlYkZyYW1lKiB3ZWJGcmFtZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSogY2hhbGxlbmdlKQoreworICAgIEd0a1dpZGdldCogd2luZG93OworICAg
IEd0a1dpZGdldCogZGlhbG9nOworICAgIEd0a1dpZGdldCogdGFibGU7CisgICAgR3RrV2lkZ2V0
KiBsYWJlbDsKKyAgICBBdXRoZW50aWNhdGlvbkRpYWxvZ0RhdGEqIGRhdGE7CisKKyAgICB3aW5k
b3cgPSBndGtfd2lkZ2V0X2dldF90b3BsZXZlbChHVEtfV0lER0VUKHdlYlZpZXcpKTsKKyAgICBn
Y2hhciogdGl0bGUgPSBnX3N0cmNvbmNhdCgiQXV0aGVudGljYXRpb24gLSAiLCB3ZWJraXRfd2Vi
X2ZyYW1lX2dldF91cmkod2ViRnJhbWUpLCBOVUxMKTsKKyAgICBkaWFsb2cgPSBndGtfZGlhbG9n
X25ld193aXRoX2J1dHRvbnModGl0bGUsIEdUS19XSURHRVRfVE9QTEVWRUwod2luZG93KSA/IEdU
S19XSU5ET1cod2luZG93KSA6IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChHdGtEaWFsb2dGbGFncykoR1RLX0RJQUxPR19NT0RBTCB8IEdUS19ESUFMT0dfREVT
VFJPWV9XSVRIX1BBUkVOVCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdUS19TVE9DS19PSywgR1RLX1JFU1BPTlNFX0FDQ0VQVCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR1RLX1NUT0NLX0NBTkNFTCwgR1RLX1JFU1BPTlNFX1JF
SkVDVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7Cisg
ICAgZ19mcmVlKHRpdGxlKTsKKyAgICBndGtfZGlhbG9nX3NldF9kZWZhdWx0X3Jlc3BvbnNlKEdU
S19ESUFMT0coZGlhbG9nKSwgR1RLX1JFU1BPTlNFX1JFSkVDVCk7CisKKyAgICBkYXRhID0gZ19u
ZXcoQXV0aGVudGljYXRpb25EaWFsb2dEYXRhLCAxKTsKKyAgICBkYXRhLT51c2VyX2VudHJ5ID0g
Z3RrX2VudHJ5X25ldygpOworICAgIGRhdGEtPnBhc3N3b3JkX2VudHJ5ID0gZ3RrX2VudHJ5X25l
dygpOworICAgIGRhdGEtPmNoYWxsZW5nZSA9IGNoYWxsZW5nZTsKKyAgICBnX3NpZ25hbF9jb25u
ZWN0KGRpYWxvZywgInJlc3BvbnNlIiwgR19DQUxMQkFDSyh3ZWJraXRfd2ViX3ZpZXdfYXV0aGVu
dGljYXRpb25fZGlhbG9nX3Jlc3BvbnNlX2NiKSwgZGF0YSk7CisKKyAgICB0YWJsZSA9IGd0a190
YWJsZV9uZXcoMiwgMiwgRkFMU0UpOworICAgIGd0a190YWJsZV9zZXRfY29sX3NwYWNpbmdzKEdU
S19UQUJMRSh0YWJsZSksIDMpOworICAgIGd0a190YWJsZV9zZXRfcm93X3NwYWNpbmdzKEdUS19U
QUJMRSh0YWJsZSksIDMpOworCisgICAgbGFiZWwgPSBndGtfbGFiZWxfbmV3KCJVc2VybmFtZToi
KTsKKyAgICBndGtfdGFibGVfYXR0YWNoX2RlZmF1bHRzKEdUS19UQUJMRSh0YWJsZSksIGxhYmVs
LCAwLCAxLCAwLCAxKTsKKyAgICBndGtfdGFibGVfYXR0YWNoX2RlZmF1bHRzKEdUS19UQUJMRSh0
YWJsZSksIGRhdGEtPnVzZXJfZW50cnksIDEsIDIsIDAsIDEpOworCisgICAgbGFiZWwgPSBndGtf
bGFiZWxfbmV3KCJQYXNzd29yZDoiKTsKKyAgICBndGtfdGFibGVfYXR0YWNoX2RlZmF1bHRzKEdU
S19UQUJMRSh0YWJsZSksIGxhYmVsLCAwLCAxLCAxLCAyKTsKKyAgICBndGtfdGFibGVfYXR0YWNo
X2RlZmF1bHRzKEdUS19UQUJMRSh0YWJsZSksIGRhdGEtPnBhc3N3b3JkX2VudHJ5LCAxLCAyLCAx
LCAyKTsKKworICAgIGd0a19jb250YWluZXJfYWRkKEdUS19DT05UQUlORVIoR1RLX0RJQUxPRyhk
aWFsb2cpLT52Ym94KSwgdGFibGUpOworICAgIGd0a193aWRnZXRfc2hvd19hbGwoZGlhbG9nKTsK
K30KKwogc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2ZpbmFsaXplKEdPYmplY3QqIG9iamVj
dCkKIHsKICAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gV0VCS0lUX1dFQl9WSUVXKG9iamVj
dCk7CkBAIC05NzEsNiArMTA0NiwyNSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfY2xh
c3NfaW5pdChXCiAgICAgICAgICAgICBnX2NjbG9zdXJlX21hcnNoYWxfVk9JRF9fVk9JRCwKICAg
ICAgICAgICAgIEdfVFlQRV9OT05FLCAwKTsKIAorICAgIC8qKgorICAgICAqIFdlYktpdFdlYlZp
ZXc6OmF1dGhlbnRpY2F0aW9uLXJlcXVlc3RlZDoKKyAgICAgKiBAd2ViX3ZpZXc6IHRoZSBvYmpl
Y3Qgd2hpY2ggcmVjZWl2ZWQgdGhlIHNpZ25hbAorICAgICAqCisgICAgICogVGhlIDo6YXV0aGVu
dGljYXRpb24tcmVxdWVzdGVkIHNpZ25hbCBpcyBlbWl0dGVkIHdoZW4gYW4gYXV0aGVudGljYXRp
b24gaXMKKyAgICAgKiByZXF1ZXN0ZWQgZnJvbSB0aGUgc2VydmVyIHRvIGFjY2VzcyBhIHJlc291
cmNlLgorICAgICAqCisgICAgICogVGhlIGRlZmF1bHQgYmVoYXZpb3IgZm9yIHRoaXMgc2lnbmFs
IGlzIGNyZWF0aW5nIGFuIGlucHV0IGRpYWxvZyB0byBnZXQgYSBzdWl0YWJsZSBjcmVkZW50aWFs
LgorICAgICAqLworICAgIHdlYmtpdF93ZWJfdmlld19zaWduYWxzW0FVVEhFTlRJQ0FUSU9OX1JF
UVVFU1RFRF0gPSBnX3NpZ25hbF9uZXcoImF1dGhlbnRpY2F0aW9uLXJlcXVlc3RlZCIsCisgICAg
ICAgICAgICBHX1RZUEVfRlJPTV9DTEFTUyh3ZWJWaWV3Q2xhc3MpLAorICAgICAgICAgICAgKEdT
aWduYWxGbGFncykoR19TSUdOQUxfUlVOX0xBU1QgfCBHX1NJR05BTF9BQ1RJT04pLAorICAgICAg
ICAgICAgR19TVFJVQ1RfT0ZGU0VUKFdlYktpdFdlYlZpZXdDbGFzcywgYXV0aGVudGljYXRpb25f
cmVxdWVzdGVkKSwKKyAgICAgICAgICAgIE5VTEwsIE5VTEwsCisgICAgICAgICAgICB3ZWJraXRf
bWFyc2hhbF9WT0lEX19PQkpFQ1RfT0JKRUNULAorICAgICAgICAgICAgR19UWVBFX05PTkUsIDIs
CisgICAgICAgICAgICBXRUJLSVRfVFlQRV9XRUJfRlJBTUUsCisgICAgICAgICAgICBXRUJLSVRf
VFlQRV9BVVRIRU5USUNBVElPTl9DSEFMTEVOR0UpOworCiAgICAgLyoKICAgICAgKiBpbXBsZW1l
bnRhdGlvbnMgb2YgdmlydHVhbCBtZXRob2RzCiAgICAgICovCkBAIC05ODYsNiArMTA4MCw3IEBA
IHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KFcKICAgICB3ZWJWaWV3Q2xh
c3MtPmN1dF9jbGlwYm9hcmQgPSB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9jdXRfY2xpcGJvYXJkOwog
ICAgIHdlYlZpZXdDbGFzcy0+Y29weV9jbGlwYm9hcmQgPSB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9j
b3B5X2NsaXBib2FyZDsKICAgICB3ZWJWaWV3Q2xhc3MtPnBhc3RlX2NsaXBib2FyZCA9IHdlYmtp
dF93ZWJfdmlld19yZWFsX3Bhc3RlX2NsaXBib2FyZDsKKyAgICB3ZWJWaWV3Q2xhc3MtPmF1dGhl
bnRpY2F0aW9uX3JlcXVlc3RlZCA9IHdlYmtpdF93ZWJfdmlld19yZWFsX2F1dGhlbnRpY2F0aW9u
X3JlcXVlc3RlZDsKIAogICAgIEdPYmplY3RDbGFzcyogb2JqZWN0Q2xhc3MgPSBHX09CSkVDVF9D
TEFTUyh3ZWJWaWV3Q2xhc3MpOwogICAgIG9iamVjdENsYXNzLT5maW5hbGl6ZSA9IHdlYmtpdF93
ZWJfdmlld19maW5hbGl6ZTsKSW5kZXg6IFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmgJKHJldmlz
aW9uIDMwMzQwKQorKysgV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5oCSh3b3JraW5n
IGNvcHkpCkBAIC04Myw2ICs4Myw3IEBAIHN0cnVjdCBfV2ViS2l0V2ViVmlld0NsYXNzIHsKICAg
ICB2b2lkICgqY3V0X2NsaXBib2FyZCkgKFdlYktpdFdlYlZpZXcqIHdlYl92aWV3KTsKICAgICB2
b2lkICgqY29weV9jbGlwYm9hcmQpIChXZWJLaXRXZWJWaWV3KiB3ZWJfdmlldyk7CiAgICAgdm9p
ZCAoKnBhc3RlX2NsaXBib2FyZCkgKFdlYktpdFdlYlZpZXcqIHdlYl92aWV3KTsKKyAgICB2b2lk
ICgqYXV0aGVudGljYXRpb25fcmVxdWVzdGVkKSAoV2ViS2l0V2ViVmlldyogd2ViX3ZpZXcsIFdl
YktpdFdlYkZyYW1lKiB3ZWJfZnJhbWUsIFdlYktpdEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKiBh
dXRoZW50aWNhdGlvbl9jaGFsbGVuZ2UpOwogCiAgICAgLyoKICAgICAgKiBpbnRlcm5hbAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>19162</attachid>
            <date>2008-02-16 15:38:30 -0800</date>
            <delta_ts>2008-02-19 12:21:56 -0800</delta_ts>
            <desc>basic authentication</desc>
            <filename>auth.patch</filename>
            <type>text/plain</type>
            <size>31218</size>
            <attacher name="Luca Bruno">lethalman88</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDMwMzQx
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMDgtMDIt
MTYgIEx1Y2EgQnJ1bm8gIDxsZXRoYWxtYW44OEBnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTY5NDcKKyAgICAgICAgQnVnIDE2OTQ3OiBbR1RLXSBNaXNzaW5nIEhU
VFAgQXV0aCBjaGFsbGVuZ2UKKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOiBhZGQgd2Via2l0
YXV0aGVudGljYXRpb25jaGFsbGVuZ2UuY3BwIGFuZCB3ZWJraXRhdXRoZW50aWNhdGlvbmNoYWxs
ZW5nZS5oCisKIDIwMDgtMDItMTUgIEFscCBUb2tlciAgPGFscEBhdG9rZXIuY29tPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IEhvbGdlci4KSW5kZXg6IEdOVW1ha2VmaWxlLmFtCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIEdOVW1ha2VmaWxlLmFtCShyZXZpc2lvbiAzMDM0MCkKKysrIEdOVW1ha2VmaWxlLmFtCSh3
b3JraW5nIGNvcHkpCkBAIC0yNDksNiArMjQ5LDcgQEAgd2Via2l0Z3RrX2NwcGZsYWdzICs9IFwK
IAogd2Via2l0Z3RrX2hfYXBpICs9IFwKIAlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXQuaCBcCisJ
V2ViS2l0L2d0ay93ZWJraXQvd2Via2l0YXV0aGVudGljYXRpb25jaGFsbGVuZ2UuaCBcCiAJV2Vi
S2l0L2d0ay93ZWJraXQvd2Via2l0ZGVmaW5lcy5oIFwKIAlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJr
aXRuZXR3b3JrcmVxdWVzdC5oIFwKIAlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJiYWNrZm9y
d2FyZGxpc3QuaCBcCkBAIC0yNzIsNiArMjczLDcgQEAgd2Via2l0Z3RrX2hlYWRlcnMgKz0gXAog
CVdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvUGFzdGVib2FyZEhlbHBlckd0ay5oCiAKIHdlYmtp
dGd0a19zb3VyY2VzICs9IFwKKwlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRhdXRoZW50aWNhdGlv
bmNoYWxsZW5nZS5jcHAgXAogCVdlYktpdC9ndGsvd2Via2l0L3dlYmtpdG5ldHdvcmtyZXF1ZXN0
LmNwcCBcCiAJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5jcHAgXAogCVdlYktpdC9n
dGsvd2Via2l0L3dlYmtpdHdlYmJhY2tmb3J3YXJkbGlzdC5jcHAgXApJbmRleDogV2ViQ29yZS9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDMwMzQx
KQorKysgV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNSBAQAor
MjAwOC0wMi0xNiAgTHVjYSBCcnVubyAgPGxldGhhbG1hbjg4QGdtYWlsLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXQVJOSU5HOiBOTyBURVNU
IENBU0VTIEFEREVEIE9SIENIQU5HRUQKKworICAgICAgICBodHRwOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNjk0NworICAgICAgICBCdWcgMTY5NDc6IFtHVEtdIE1pc3Npbmcg
SFRUUCBBdXRoIGNoYWxsZW5nZQorCisgICAgICAgICogV2ViQ29yZS5wcm86IGFkZCB3ZWJraXRh
dXRoZW50aWNhdGlvbmNoYWxsZW5nZS5jcHAgYW5kIHdlYmtpdGF1dGhlbnRpY2F0aW9uY2hhbGxl
bmdlLmgKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmg6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmg6CisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUludGVybmFsOjpSZXNvdXJjZUhhbmRsZUludGVybmFs
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpkaWRSZWNlaXZlQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UpOiBhZGRlZCwgY2FsbGVkIGJ5IGNVUkwgYmFja2VuZAorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkQ3JlZGVudGlhbCk6IGFkZGVkCisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRSZXF1ZXN0VG9Db250aW51ZVdp
dGhvdXRDcmVkZW50aWFsKTogYWRkZWQKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxl
OjpyZWNlaXZlZENhbmNlbGxhdGlvbik6IGFkZGVkCisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9jdXJsL1Jlc291cmNlSGFuZGxlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpoZWFk
ZXJDYWxsYmFjayk6IGNoZWNrIGZvciBhdXRoZW50aWNhdGlvbgorICAgICAgICAoV2ViQ29yZTo6
UmVzb3VyY2VIYW5kbGVNYW5hZ2VyOjpzdGFydEpvYik6IHVzZSB0aGUgYXV0aGVudGljYXRpb24K
KwogMjAwOC0wMi0xNiAgS2V2aW4gT2xsaXZpZXIgIDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNvbT4K
IAogICAgICAgICB3eCBidWlsZCBmaXguCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUucHJvCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5wcm8JKHJldmlzaW9uIDMwMzQwKQorKysgV2ViQ29y
ZS9XZWJDb3JlLnBybwkod29ya2luZyBjb3B5KQpAQCAtOTkzLDYgKzk5Myw3IEBAIGd0ay1wb3J0
IHsKICAgICAgICAgLi4vV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ2xpcGJvYXJkR3RrLmggXAogICAg
ICAgICAuLi9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkSGVscGVyLmggXAogICAgICAg
ICAuLi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXQuaCBcCisgICAgICAgIC4uL1dlYktpdC9ndGsv
d2Via2l0L3dlYmtpdGF1dGhlbnRpY2F0aW9uY2hhbGxlbmdlLmggXAogICAgICAgICAuLi9XZWJL
aXQvZ3RrL3dlYmtpdC93ZWJraXRkZWZpbmVzLmggXAogICAgICAgICAuLi9XZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXRuZXR3b3JrcmVxdWVzdC5oIFwKICAgICAgICAgLi4vV2ViS2l0L2d0ay93ZWJr
aXQvd2Via2l0cHJpdmF0ZS5oIFwKQEAgLTEwNzQsNiArMTA3NSw3IEBAIGd0ay1wb3J0IHsKICAg
ICAgICAgcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAgXAog
ICAgICAgICBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcCBc
CiAgICAgICAgIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3hibS9YQk1JbWFnZURlY29kZXIuY3Bw
IFwKKyAgICAgICAgLi4vV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0YXV0aGVudGljYXRpb25jaGFs
bGVuZ2UuY3BwIFwKICAgICAgICAgLi4vV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0bmV0d29ya3Jl
cXVlc3QuY3BwIFwKICAgICAgICAgLi4vV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5j
cHAgXAogICAgICAgICAuLi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJiYWNrZm9yd2FyZGxp
c3QuY3BwIFwKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5o
CShyZXZpc2lvbiAzMDM0MCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhh
bmRsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTYsNiArMTE2LDEyIEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgdm9pZCBzZXRIb3N0QWxsb3dzQW55SFRUUFNDZXJ0aWZpY2F0ZShjb25zdCBTdHJpbmcm
KTsKICAgICBzdGF0aWMgdm9pZCBzZXRDbGllbnRDZXJ0aWZpY2F0ZShjb25zdCBTdHJpbmcmIGhv
c3QsIENGRGF0YVJlZik7CiAjZW5kaWYKKyNpZiBQTEFURk9STShHVEspCisgICAgdm9pZCBkaWRS
ZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UmKTsKKyAgICB2b2lkIHJlY2VpdmVkQ3JlZGVudGlhbChjb25zdCBBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSYsIGNvbnN0IENyZWRlbnRpYWwmKTsKKyAgICB2b2lkIHJlY2VpdmVkUmVxdWVzdFRv
Q29udGludWVXaXRob3V0Q3JlZGVudGlhbChjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYp
OworICAgIHZvaWQgcmVjZWl2ZWRDYW5jZWxsYXRpb24oY29uc3QgQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UmKTsKKyNlbmRpZgogICAgIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXJlZERh
dGEoKTsKICAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0J1ZmZlcmVkRGF0YSgpOwogICAgIApJbmRl
eDogV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5h
bC5oCShyZXZpc2lvbiAzMDM0MCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZUhhbmRsZUludGVybmFsLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMSw2ICsxMDEsOCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICAsIG1fZmlsZSgwKQogICAgICAgICAgICAgLCBt
X2Zvcm1EYXRhRWxlbWVudEluZGV4KDApCiAgICAgICAgICAgICAsIG1fZm9ybURhdGFFbGVtZW50
RGF0YU9mZnNldCgwKQorICAgICAgICAgICAgLCBtX3dlYkNoYWxsZW5nZSgpCisgICAgICAgICAg
ICAsIG1fY29udGludWVXaXRob3V0Q3JlZGVudGlhbChmYWxzZSkKICNlbmRpZgogI2lmIFBMQVRG
T1JNKFFUKQogICAgICAgICAgICAgLCBtX2pvYigwKQpAQCAtMTU5LDYgKzE2MSw5IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgc2l6ZV90IG1fZm9ybURhdGFFbGVtZW50SW5kZXg7CiAg
ICAgICAgIHNpemVfdCBtX2Zvcm1EYXRhRWxlbWVudERhdGFPZmZzZXQ7CiAgICAgICAgIFZlY3Rv
cjxjaGFyPiBtX3Bvc3RCeXRlczsKKworICAgICAgICBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSBt
X3dlYkNoYWxsZW5nZTsKKyAgICAgICAgYm9vbCBtX2NvbnRpbnVlV2l0aG91dENyZWRlbnRpYWw7
CiAjZW5kaWYKICNpZiBQTEFURk9STShRVCkKICNpZiBRVF9WRVJTSU9OIDwgMHgwNDA0MDAKSW5k
ZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5k
bGVDdXJsLmNwcAkocmV2aXNpb24gMzAzNDApCisrKyBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NSw0ICs5NSw2
OSBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpsb2FkUmVzb3VyY2VTeW5jaHJvCiAgICAgbm90SW1w
bGVtZW50ZWQoKTsKIH0KIAordm9pZCBSZXNvdXJjZUhhbmRsZTo6ZGlkUmVjZWl2ZUF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2Up
Cit7CisgICAgLyogRklYTUU6IGFkZCBzdXBwb3J0IGZvciBGVFAsIEhUVFBTLCBhbmQgRlRQUyBh
dXRoZW50aWNhdGlvbiwKKyAgICAgKiBnZXQgdGhlIHJpZ2h0IHBvcnQsIHNlcnZlciBhbmQgYXV0
aGVudGljYXRpb24gc2NoZW1lCisgICAgICovCisgICAgUmVzb3VyY2VIYW5kbGVJbnRlcm5hbCog
ZCA9IGdldEludGVybmFsKCk7CisgICAgaWYgKGQtPm1fY29udGludWVXaXRob3V0Q3JlZGVudGlh
bCkKKyAgICAgICAgcmV0dXJuOworICAgIGNhbmNlbCgpOworCisgICAgUHJvdGVjdGlvblNwYWNl
IHByb3RlY3Rpb25TcGFjZTsKKyAgICB1bnNpZ25lZCBwcmV2aW91c0ZhaWx1cmVDb3VudCA9IDA7
CisgICAgaWYgKGNoYWxsZW5nZS5pc051bGwoKSkgeworICAgICAgICBwcm90ZWN0aW9uU3BhY2Ug
PSBQcm90ZWN0aW9uU3BhY2UoZC0+bV9yZXNwb25zZS5odHRwSGVhZGVyRmllbGQoIkhvc3QiKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDgwLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvdGVjdGlvblNwYWNlU2VydmVySFRU
UCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQtPm1fcmVzcG9u
c2UuaHR0cEhlYWRlckZpZWxkKCJSZWFsbSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgUHJvdGVjdGlvblNwYWNlQXV0aGVudGljYXRpb25TY2hlbWVEZWZhdWx0
KTsKKyAgICB9IGVsc2UgeworICAgICAgICBwcm90ZWN0aW9uU3BhY2UgPSBkLT5tX3dlYkNoYWxs
ZW5nZS5wcm90ZWN0aW9uU3BhY2UoKTsKKyAgICAgICAgcHJldmlvdXNGYWlsdXJlQ291bnQgPSBk
LT5tX3dlYkNoYWxsZW5nZS5wcmV2aW91c0ZhaWx1cmVDb3VudCgpKzE7CisgICAgfQorICAgIAor
ICAgIGQtPm1fd2ViQ2hhbGxlbmdlID0gQXV0aGVudGljYXRpb25DaGFsbGVuZ2UocHJvdGVjdGlv
blNwYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y2hhbGxlbmdlLnByb3Bvc2VkQ3JlZGVudGlhbCgpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNGYWlsdXJlQ291bnQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLT5tX3Jlc3BvbnNlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhbGxlbmdlLmVy
cm9yKCkpOworCisgICAgaWYgKGQtPmNsaWVudCgpKQorICAgICAgICBkLT5jbGllbnQoKS0+ZGlk
UmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHRoaXMsIGQtPm1fd2ViQ2hhbGxlbmdlKTsK
K30KKwordm9pZCBSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRDcmVkZW50aWFsKGNvbnN0IEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UsIGNvbnN0IENyZWRlbnRpYWwmIGNyZWRlbnRp
YWwpCit7CisgICAgQVNTRVJUKCFjaGFsbGVuZ2UuaXNOdWxsKCkpOyAgIAorICAgIFJlc291cmNl
SGFuZGxlSW50ZXJuYWwqIGQgPSBnZXRJbnRlcm5hbCgpOworICAgIGlmIChjaGFsbGVuZ2UgIT0g
ZC0+bV93ZWJDaGFsbGVuZ2UpCisgICAgICAgIHJldHVybjsKKworICAgIGQtPm1fd2ViQ2hhbGxl
bmdlID0gQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZSgp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlZGVu
dGlhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNo
YWxsZW5nZS5wcmV2aW91c0ZhaWx1cmVDb3VudCgpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY2hhbGxlbmdlLmZhaWx1cmVSZXNwb25zZSgpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhbGxlbmdlLmVy
cm9yKCkpOworCisgICAgUmVzb3VyY2VIYW5kbGVNYW5hZ2VyOjpzaGFyZWRJbnN0YW5jZSgpLT5h
ZGQodGhpcyk7Cit9CisKK3ZvaWQgUmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkUmVxdWVzdFRvQ29u
dGludWVXaXRob3V0Q3JlZGVudGlhbChjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hh
bGxlbmdlKQoreworICAgIEFTU0VSVCghY2hhbGxlbmdlLmlzTnVsbCgpKTsgICAKKyAgICBSZXNv
dXJjZUhhbmRsZUludGVybmFsKiBkID0gZ2V0SW50ZXJuYWwoKTsKKyAgICBpZiAoY2hhbGxlbmdl
ICE9IGQtPm1fd2ViQ2hhbGxlbmdlKQorICAgICAgICByZXR1cm47CisKKyAgICBkLT5tX2NvbnRp
bnVlV2l0aG91dENyZWRlbnRpYWwgPSB0cnVlOworICAgIFJlc291cmNlSGFuZGxlTWFuYWdlcjo6
c2hhcmVkSW5zdGFuY2UoKS0+YWRkKHRoaXMpOworfQorCit2b2lkIFJlc291cmNlSGFuZGxlOjpy
ZWNlaXZlZENhbmNlbGxhdGlvbihjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxl
bmdlKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlTWFu
YWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVz
b3VyY2VIYW5kbGVNYW5hZ2VyLmNwcAkocmV2aXNpb24gMzAzNDApCisrKyBXZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZU1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNjgsNiArMTY4LDEwIEBAIHN0YXRpYyBzaXplX3QgaGVhZGVyQ2FsbGJhY2soY2hhciog
cHRyLCAKICAgICAgICAgZC0+bV9yZXNwb25zZS5zZXRUZXh0RW5jb2RpbmdOYW1lKGV4dHJhY3RD
aGFyc2V0RnJvbU1lZGlhVHlwZShkLT5tX3Jlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZCgiQ29udGVu
dC1UeXBlIikpKTsKICAgICAgICAgZC0+bV9yZXNwb25zZS5zZXRTdWdnZXN0ZWRGaWxlbmFtZShm
aWxlbmFtZUZyb21IVFRQQ29udGVudERpc3Bvc2l0aW9uKGQtPm1fcmVzcG9uc2UuaHR0cEhlYWRl
ckZpZWxkKCJDb250ZW50LURpc3Bvc2l0aW9uIikpKTsKIAorICAgICAgICAvLyBIVFRQIGF1dGhl
bnRpY2F0aW9uCisgICAgICAgIGlmIChodHRwQ29kZSA9PSA0MDEgJiYgZC0+bV9yZXNwb25zZS5p
c0hUVFAoKSkKKyAgICAgICAgICAgIGpvYi0+ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlKGQtPm1fd2ViQ2hhbGxlbmdlKTsKKwogICAgICAgICAvLyBIVFRQIHJlZGlyZWN0aW9uCiAg
ICAgICAgIGlmIChodHRwQ29kZSA+PSAzMDAgJiYgaHR0cENvZGUgPCA0MDApIHsKICAgICAgICAg
ICAgIFN0cmluZyBsb2NhdGlvbiA9IGQtPm1fcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkKCJsb2Nh
dGlvbiIpOwpAQCAtNTQ2LDYgKzU1MCw5IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGVNYW5hZ2VyOjpz
dGFydEpvYihSZXMKICAgICB9CiAKICAgICBkLT5tX2hhbmRsZSA9IGN1cmxfZWFzeV9pbml0KCk7
CisgICAgLy8gSFRUUCBBdXRoZW50aWNhdGlvbiBjYW5jZWxzIHRoZSBqb2Igc28gYmUgc3VyZSB0
aGUgbmV3IGpvYiBpcyBub3QgY2FuY2VsbGVkCisgICAgZC0+bV9jYW5jZWxsZWQgPSBmYWxzZTsg
IAorCiAjaWZuZGVmIE5ERUJVRwogICAgIGlmIChnZXRlbnYoIkRFQlVHX0NVUkwiKSkKICAgICAg
ICAgY3VybF9lYXN5X3NldG9wdChkLT5tX2hhbmRsZSwgQ1VSTE9QVF9WRVJCT1NFLCAxKTsKQEAg
LTU3NSw2ICs1ODIsMjMgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZU1hbmFnZXI6OnN0YXJ0Sm9iKFJl
cwogICAgICAgICBjdXJsX2Vhc3lfc2V0b3B0KGQtPm1faGFuZGxlLCBDVVJMT1BUX0NPT0tJRUpB
UiwgbV9jb29raWVKYXJGaWxlTmFtZSk7CiAgICAgfQogCisgICAgaWYgKCFkLT5tX3dlYkNoYWxs
ZW5nZS5pc051bGwoKSAmJiAhZC0+bV9jb250aW51ZVdpdGhvdXRDcmVkZW50aWFsKSB7CisgICAg
ICAgIGxvbmcgY3VybEF1dGg7CisgICAgICAgIHN3aXRjaChkLT5tX3dlYkNoYWxsZW5nZS5wcm90
ZWN0aW9uU3BhY2UoKS5hdXRoZW50aWNhdGlvblNjaGVtZSgpKSB7ICAgICAgICAgIAorICAgICAg
ICBjYXNlIFByb3RlY3Rpb25TcGFjZUF1dGhlbnRpY2F0aW9uU2NoZW1lSFRUUEJhc2ljOgorICAg
ICAgICBjYXNlIFByb3RlY3Rpb25TcGFjZUF1dGhlbnRpY2F0aW9uU2NoZW1lRGVmYXVsdDoKKyAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGN1cmxBdXRoID0gQ1VSTEFVVEhfQkFTSUM7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIENyZWRlbnRpYWwgY3JlZGVu
dGlhbCA9IGQtPm1fd2ViQ2hhbGxlbmdlLnByb3Bvc2VkQ3JlZGVudGlhbCgpOworICAgICAgICBT
dHJpbmcgdXNlcnB3ZCA9IGNyZWRlbnRpYWwudXNlcigpICsgIjoiICsgY3JlZGVudGlhbC5wYXNz
d29yZCgpOworICAgICAgICAKKyAgICAgICAgY3VybF9lYXN5X3NldG9wdChkLT5tX2hhbmRsZSwg
Q1VSTE9QVF9IVFRQQVVUSCwgY3VybEF1dGgpOworICAgICAgICBjdXJsX2Vhc3lfc2V0b3B0KGQt
Pm1faGFuZGxlLCBDVVJMT1BUX1VTRVJQV0QsIHN0cmR1cCh1c2VycHdkLnV0ZjgoKS5kYXRhKCkp
KTsKKyAgICB9CisKICAgICBzdHJ1Y3QgY3VybF9zbGlzdCogaGVhZGVycyA9IDA7CiAgICAgaWYg
KGpvYi0+cmVxdWVzdCgpLmh0dHBIZWFkZXJGaWVsZHMoKS5zaXplKCkgPiAwKSB7CiAgICAgICAg
IEhUVFBIZWFkZXJNYXAgY3VzdG9tSGVhZGVycyA9IGpvYi0+cmVxdWVzdCgpLmh0dHBIZWFkZXJG
aWVsZHMoKTsKSW5kZXg6IFdlYktpdC9ndGsvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dC9ndGsvQ2hhbmdlTG9nCShyZXZpc2lvbiAzMDM0MSkKKysrIFdlYktpdC9ndGsvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMDgtMDItMTYgIEx1Y2EgQnJ1bm8g
IDxsZXRoYWxtYW44OEBnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTY5NDcKKyAgICAgICAgQnVnIDE2OTQ3OiBbR1RLXSBNaXNzaW5nIEhUVFAgQXV0aCBjaGFsbGVu
Z2UKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVjZWl2ZUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKTogaW1wbGVtZW50ZWQKKyAgICAgICAgKiB3ZWJraXQvd2Vi
a2l0ZGVmaW5lcy5oOgorICAgICAgICAqIHdlYmtpdC93ZWJraXRwcml2YXRlLmg6CisgICAgICAg
ICogd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwOiBhZGQgYXV0aGVudGljYXRpb24tcmVxdWVzdGVk
IHNpZ25hbCBhbmQgY3JlYXRlIGF1dGggZGlhbG9nCisgICAgICAgICogd2Via2l0L3dlYmtpdHdl
YnZpZXcuaDoKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0YXV0aGVudGljYXRpb25jaGFsbGVuZ2Uu
Y3BwOiBhZGRlZAorICAgICAgICAqIHdlYmtpdC93ZWJraXRhdXRoZW50aWNhdGlvbmNoYWxsZW5n
ZS5oOiBhZGRlZAorCiAyMDA4LTAyLTE1ICBBbHAgVG9rZXIgIDxhbHBAYXRva2VyLmNvbT4KIAog
ICAgICAgICBGaXggdGhlIEdUSysgYnVpbGQgZm9sbG93aW5nIGJyZWFrYWdlIGludHJvZHVjZWQg
aW4gcjMwMjQzLgpJbmRleDogV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudEd0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFt
ZUxvYWRlckNsaWVudEd0ay5jcHAJKHJldmlzaW9uIDMwMzQwKQorKysgV2ViS2l0L2d0ay9XZWJD
b3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMw
LDYgKzMwLDcgQEAKICNpbmNsdWRlICJIVE1MRnJhbWVPd25lckVsZW1lbnQuaCIKICNpbmNsdWRl
ICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJMYW5ndWFnZS5oIgorI2luY2x1ZGUgIk1haW5SZXNv
dXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKICNpbmNsdWRlICJO
b3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCkBAIC0zOSw2ICs0
MCw3IEBACiAjaW5jbHVkZSAia2pzX2JpbmRpbmcuaCIKICNpbmNsdWRlICJranNfcHJveHkuaCIK
ICNpbmNsdWRlICJranNfd2luZG93LmgiCisjaW5jbHVkZSAid2Via2l0YXV0aGVudGljYXRpb25j
aGFsbGVuZ2UuaCIKICNpbmNsdWRlICJ3ZWJraXR3ZWJ2aWV3LmgiCiAjaW5jbHVkZSAid2Via2l0
d2ViZnJhbWUuaCIKICNpbmNsdWRlICJ3ZWJraXRwcml2YXRlLmgiCkBAIC0xNjUsOSArMTY3LDI0
IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmNvbW1pdHRlZExvYWQoRG8KICAgICBmbC0+YWRk
RGF0YShkYXRhLCBsZW5ndGgpOwogfQogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRj
aERpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShEb2N1bWVudExvYWRlciosIHVuc2ln
bmVkIGxvbmcgIGlkZW50aWZpZXIsIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikKK3Zv
aWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciwgdW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgd2ViQ2hhbGxlbmdlKQogewot
ICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSA9IGRvY3Vt
ZW50TG9hZGVyLT5tYWluUmVzb3VyY2VMb2FkZXIoKS0+aGFuZGxlKCk7CisgICAgQVNTRVJUKGhh
bmRsZSk7CisgICAgaWYgKCFoYW5kbGUpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBXZWJL
aXRBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSogY2hhbGxlbmdlID0gd2Via2l0X2F1dGhlbnRpY2F0
aW9uX2NoYWxsZW5nZV9uZXcoKTsKKyAgICBXZWJLaXRBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVBy
aXZhdGUqIGNoYWxsZW5nZVByaXZhdGUgPSBXRUJLSVRfQVVUSEVOVElDQVRJT05fQ0hBTExFTkdF
X0dFVF9QUklWQVRFKGNoYWxsZW5nZSk7CisgICAgKmNoYWxsZW5nZVByaXZhdGUtPndlYkNoYWxs
ZW5nZSA9IHdlYkNoYWxsZW5nZTsKKyAgICBjaGFsbGVuZ2VQcml2YXRlLT53ZWJIYW5kbGUgPSBo
YW5kbGU7CisgICAgCisgICAgQ3JlZGVudGlhbCBjcmVkZW50aWFsID0gd2ViQ2hhbGxlbmdlLnBy
b3Bvc2VkQ3JlZGVudGlhbCgpOworICAgIHdlYmtpdF9hdXRoZW50aWNhdGlvbl9jaGFsbGVuZ2Vf
c2V0X3VzZXIoY2hhbGxlbmdlLCBjcmVkZW50aWFsLnVzZXIoKS51dGY4KCkuZGF0YSgpKTsKKyAg
ICB3ZWJraXRfYXV0aGVudGljYXRpb25fY2hhbGxlbmdlX3NldF9wYXNzd29yZChjaGFsbGVuZ2Us
IGNyZWRlbnRpYWwucGFzc3dvcmQoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAKKyAgICBXZWJLaXRX
ZWJWaWV3KiB3ZWJWaWV3ID0gZ2V0Vmlld0Zyb21GcmFtZShtX2ZyYW1lKTsKKyAgICBnX3NpZ25h
bF9lbWl0X2J5X25hbWUod2ViVmlldywgImF1dGhlbnRpY2F0aW9uLXJlcXVlc3RlZCIsIG1fZnJh
bWUsIGNoYWxsZW5nZSwgTlVMTCk7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3Bh
dGNoRGlkQ2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoRG9jdW1lbnRMb2FkZXIqLCB1bnNp
Z25lZCBsb25nICBpZGVudGlmaWVyLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpCklu
ZGV4OiBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRhdXRoZW50aWNhdGlvbmNoYWxsZW5nZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0YXV0aGVudGljYXRpb25jaGFs
bGVuZ2UuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0YXV0aGVu
dGljYXRpb25jaGFsbGVuZ2UuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEzOCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAwOCBMdWNhIEJydW5vCisgKgorICogVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAq
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisg
KiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisg
KiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKwor
I2luY2x1ZGUgIndlYmtpdGF1dGhlbnRpY2F0aW9uY2hhbGxlbmdlLmgiCisjaW5jbHVkZSAid2Vi
a2l0cHJpdmF0ZS5oIgorCisjaW5jbHVkZSAiQ3JlZGVudGlhbC5oIgorI2luY2x1ZGUgIlJlc291
cmNlSGFuZGxlLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Cit1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKKworZXh0ZXJuICJDIiB7CisKK0dfREVGSU5FX1RZUEUoV2ViS2l0QXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UsIHdlYmtpdF9hdXRoZW50aWNhdGlvbl9jaGFsbGVuZ2UsIEdfVFlQRV9P
QkpFQ1QpOworCitzdGF0aWMgdm9pZCB3ZWJraXRfYXV0aGVudGljYXRpb25fY2hhbGxlbmdlX2Zp
bmFsaXplKEdPYmplY3QqIG9iamVjdCkKK3sKKyAgICBXZWJLaXRBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZVByaXZhdGUqIGNoYWxsZW5nZVByaXZhdGUgPSBXRUJLSVRfQVVUSEVOVElDQVRJT05fQ0hB
TExFTkdFX0dFVF9QUklWQVRFKG9iamVjdCk7CisKKyAgICBkZWxldGUgY2hhbGxlbmdlUHJpdmF0
ZS0+d2ViQ2hhbGxlbmdlOworICAgIGdfZnJlZShjaGFsbGVuZ2VQcml2YXRlLT51c2VyKTsKKyAg
ICBnX2ZyZWUoY2hhbGxlbmdlUHJpdmF0ZS0+cGFzc3dvcmQpOworCisgICAgR19PQkpFQ1RfQ0xB
U1Mod2Via2l0X2F1dGhlbnRpY2F0aW9uX2NoYWxsZW5nZV9wYXJlbnRfY2xhc3MpLT5maW5hbGl6
ZShvYmplY3QpOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfYXV0aGVudGljYXRpb25fY2hhbGxl
bmdlX2NsYXNzX2luaXQoV2ViS2l0QXV0aGVudGljYXRpb25DaGFsbGVuZ2VDbGFzcyogY2hhbGxl
bmdlQ2xhc3MpCit7CisgICAgZ190eXBlX2NsYXNzX2FkZF9wcml2YXRlKGNoYWxsZW5nZUNsYXNz
LCBzaXplb2YoV2ViS2l0QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcml2YXRlKSk7CisKKyAgICBH
X09CSkVDVF9DTEFTUyhjaGFsbGVuZ2VDbGFzcyktPmZpbmFsaXplID0gd2Via2l0X2F1dGhlbnRp
Y2F0aW9uX2NoYWxsZW5nZV9maW5hbGl6ZTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0X2F1dGhl
bnRpY2F0aW9uX2NoYWxsZW5nZV9pbml0KFdlYktpdEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKiBj
aGFsbGVuZ2UpCit7CisgICAgV2ViS2l0QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcml2YXRlKiBj
aGFsbGVuZ2VQcml2YXRlID0gV0VCS0lUX0FVVEhFTlRJQ0FUSU9OX0NIQUxMRU5HRV9HRVRfUFJJ
VkFURShjaGFsbGVuZ2UpOworCisgICAgY2hhbGxlbmdlUHJpdmF0ZS0+d2ViQ2hhbGxlbmdlID0g
bmV3IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCk7CisgICAgY2hhbGxlbmdlUHJpdmF0ZS0+d2Vi
SGFuZGxlID0gTlVMTDsKKyAgICBjaGFsbGVuZ2VQcml2YXRlLT51c2VyID0gTlVMTDsKKyAgICBj
aGFsbGVuZ2VQcml2YXRlLT5wYXNzd29yZCA9IE5VTEw7Cit9CisKK1dlYktpdEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlKiB3ZWJraXRfYXV0aGVudGljYXRpb25fY2hhbGxlbmdlX25ldygpCit7Cisg
ICAgV2ViS2l0QXV0aGVudGljYXRpb25DaGFsbGVuZ2UqIGNoYWxsZW5nZSA9IFdFQktJVF9BVVRI
RU5USUNBVElPTl9DSEFMTEVOR0UoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX0FVVEhFTlRJQ0FU
SU9OX0NIQUxMRU5HRSwgTlVMTCkpOworCisgICAgcmV0dXJuIGNoYWxsZW5nZTsKK30KKwordm9p
ZCB3ZWJraXRfYXV0aGVudGljYXRpb25fY2hhbGxlbmdlX3NldF91c2VyKFdlYktpdEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKiBjaGFsbGVuZ2UsIGNvbnN0IGdjaGFyKiB1c2VyKQoreworICAgIGdf
cmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX0FVVEhFTlRJQ0FUSU9OX0NIQUxMRU5HRShjaGFsbGVu
Z2UpKTsKKyAgICBnX3JldHVybl9pZl9mYWlsKHVzZXIpOworICAgIAorICAgIFdlYktpdEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlUHJpdmF0ZSogY2hhbGxlbmdlUHJpdmF0ZSA9IFdFQktJVF9BVVRI
RU5USUNBVElPTl9DSEFMTEVOR0VfR0VUX1BSSVZBVEUoY2hhbGxlbmdlKTsKKworICAgIGdfZnJl
ZShjaGFsbGVuZ2VQcml2YXRlLT51c2VyKTsKKyAgICBjaGFsbGVuZ2VQcml2YXRlLT51c2VyID0g
Z19zdHJkdXAodXNlcik7Cit9CisKK2NvbnN0IGdjaGFyKiB3ZWJraXRfYXV0aGVudGljYXRpb25f
Y2hhbGxlbmdlX2dldF91c2VyKFdlYktpdEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKiBjaGFsbGVu
Z2UpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX0FVVEhFTlRJQ0FUSU9O
X0NIQUxMRU5HRShjaGFsbGVuZ2UpLCBOVUxMKTsKKworICAgIFdlYktpdEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlUHJpdmF0ZSogY2hhbGxlbmdlUHJpdmF0ZSA9IFdFQktJVF9BVVRIRU5USUNBVElP
Tl9DSEFMTEVOR0VfR0VUX1BSSVZBVEUoY2hhbGxlbmdlKTsKKworICAgIHJldHVybiBjaGFsbGVu
Z2VQcml2YXRlLT51c2VyOworfQorCit2b2lkIHdlYmtpdF9hdXRoZW50aWNhdGlvbl9jaGFsbGVu
Z2Vfc2V0X3Bhc3N3b3JkKFdlYktpdEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKiBjaGFsbGVuZ2Us
IGNvbnN0IGdjaGFyKiBwYXNzd29yZCkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9J
U19BVVRIRU5USUNBVElPTl9DSEFMTEVOR0UoY2hhbGxlbmdlKSk7CisgICAgZ19yZXR1cm5faWZf
ZmFpbChwYXNzd29yZCk7CisgICAgCisgICAgV2ViS2l0QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQ
cml2YXRlKiBjaGFsbGVuZ2VQcml2YXRlID0gV0VCS0lUX0FVVEhFTlRJQ0FUSU9OX0NIQUxMRU5H
RV9HRVRfUFJJVkFURShjaGFsbGVuZ2UpOworCisgICAgZ19mcmVlKGNoYWxsZW5nZVByaXZhdGUt
PnBhc3N3b3JkKTsKKyAgICBjaGFsbGVuZ2VQcml2YXRlLT5wYXNzd29yZCA9IGdfc3RyZHVwKHBh
c3N3b3JkKTsKK30KKworY29uc3QgZ2NoYXIqIHdlYmtpdF9hdXRoZW50aWNhdGlvbl9jaGFsbGVu
Z2VfZ2V0X3Bhc3N3b3JkKFdlYktpdEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKiBjaGFsbGVuZ2Up
Cit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX0FVVEhFTlRJQ0FUSU9OX0NI
QUxMRU5HRShjaGFsbGVuZ2UpLCBOVUxMKTsKKworICAgIFdlYktpdEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlUHJpdmF0ZSogY2hhbGxlbmdlUHJpdmF0ZSA9IFdFQktJVF9BVVRIRU5USUNBVElPTl9D
SEFMTEVOR0VfR0VUX1BSSVZBVEUoY2hhbGxlbmdlKTsKKworICAgIHJldHVybiBjaGFsbGVuZ2VQ
cml2YXRlLT5wYXNzd29yZDsKK30KKwordm9pZCB3ZWJraXRfYXV0aGVudGljYXRpb25fY2hhbGxl
bmdlX3VzZV9jcmVkZW50aWFsKFdlYktpdEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKiBjaGFsbGVu
Z2UpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfQVVUSEVOVElDQVRJT05fQ0hB
TExFTkdFKGNoYWxsZW5nZSkpOworCisgICAgV2ViS2l0QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQ
cml2YXRlKiBjaGFsbGVuZ2VQcml2YXRlID0gV0VCS0lUX0FVVEhFTlRJQ0FUSU9OX0NIQUxMRU5H
RV9HRVRfUFJJVkFURShjaGFsbGVuZ2UpOworICAgIENyZWRlbnRpYWwgY3JlZGVudGlhbCA9IENy
ZWRlbnRpYWwoY2hhbGxlbmdlUHJpdmF0ZS0+dXNlciwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNoYWxsZW5nZVByaXZhdGUtPnBhc3N3b3JkLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQ3JlZGVudGlhbFBlcnNpc3RlbmNlRm9yU2Vzc2lv
bik7CisgICAgY2hhbGxlbmdlUHJpdmF0ZS0+d2ViSGFuZGxlLT5yZWNlaXZlZENyZWRlbnRpYWwo
KmNoYWxsZW5nZVByaXZhdGUtPndlYkNoYWxsZW5nZSwgY3JlZGVudGlhbCk7Cit9CisKK3ZvaWQg
d2Via2l0X2F1dGhlbnRpY2F0aW9uX2NoYWxsZW5nZV9jb250aW51ZV93aXRob3V0X2NyZWRlbnRp
YWwoV2ViS2l0QXV0aGVudGljYXRpb25DaGFsbGVuZ2UqIGNoYWxsZW5nZSkKK3sKKyAgICBnX3Jl
dHVybl9pZl9mYWlsKFdFQktJVF9JU19BVVRIRU5USUNBVElPTl9DSEFMTEVOR0UoY2hhbGxlbmdl
KSk7CisKKyAgICBXZWJLaXRBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByaXZhdGUqIGNoYWxsZW5n
ZVByaXZhdGUgPSBXRUJLSVRfQVVUSEVOVElDQVRJT05fQ0hBTExFTkdFX0dFVF9QUklWQVRFKGNo
YWxsZW5nZSk7CisgICAgY2hhbGxlbmdlUHJpdmF0ZS0+d2ViSGFuZGxlLT5yZWNlaXZlZFJlcXVl
c3RUb0NvbnRpbnVlV2l0aG91dENyZWRlbnRpYWwoKmNoYWxsZW5nZVByaXZhdGUtPndlYkNoYWxs
ZW5nZSk7Cit9CisKK3ZvaWQgd2Via2l0X2F1dGhlbnRpY2F0aW9uX2NoYWxsZW5nZV9jYW5jZWwo
V2ViS2l0QXV0aGVudGljYXRpb25DaGFsbGVuZ2UqIGNoYWxsZW5nZSkKK3sKKyAgICBnX3JldHVy
bl9pZl9mYWlsKFdFQktJVF9JU19BVVRIRU5USUNBVElPTl9DSEFMTEVOR0UoY2hhbGxlbmdlKSk7
CisKKyAgICBXZWJLaXRBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByaXZhdGUqIGNoYWxsZW5nZVBy
aXZhdGUgPSBXRUJLSVRfQVVUSEVOVElDQVRJT05fQ0hBTExFTkdFX0dFVF9QUklWQVRFKGNoYWxs
ZW5nZSk7CisKKyAgICBjaGFsbGVuZ2VQcml2YXRlLT53ZWJIYW5kbGUtPnJlY2VpdmVkQ2FuY2Vs
bGF0aW9uKCpjaGFsbGVuZ2VQcml2YXRlLT53ZWJDaGFsbGVuZ2UpOworfQorCit9CkluZGV4OiBX
ZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRhdXRoZW50aWNhdGlvbmNoYWxsZW5nZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdGF1dGhlbnRpY2F0aW9uY2hhbGxlbmdlLmgJ
KHJldmlzaW9uIDApCisrKyBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRhdXRoZW50aWNhdGlvbmNo
YWxsZW5nZS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDczIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDA4IEx1Y2EgQnJ1bm8KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5M
SUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjEx
MC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBXRUJLSVRfQVVUSEVOVElDQVRJT05fQ0hBTExF
TkdFX0gKKyNkZWZpbmUgV0VCS0lUX0FVVEhFTlRJQ0FUSU9OX0NIQUxMRU5HRV9ICisKKyNpbmNs
dWRlIDxnbGliLW9iamVjdC5oPgorCisjaW5jbHVkZSAid2Via2l0ZGVmaW5lcy5oIgorCitHX0JF
R0lOX0RFQ0xTCisKKyNkZWZpbmUgV0VCS0lUX1RZUEVfQVVUSEVOVElDQVRJT05fQ0hBTExFTkdF
ICAgICAgICAgICAgKHdlYmtpdF9hdXRoZW50aWNhdGlvbl9jaGFsbGVuZ2VfZ2V0X3R5cGUoKSkK
KyNkZWZpbmUgV0VCS0lUX0FVVEhFTlRJQ0FUSU9OX0NIQUxMRU5HRShvYmopICAgICAgICAgICAg
IChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgob2JqKSwgV0VCS0lUX1RZUEVfQVVUSEVOVElD
QVRJT05fQ0hBTExFTkdFLCBXZWJLaXRBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkpCisjZGVmaW5l
IFdFQktJVF9BVVRIRU5USUNBVElPTl9DSEFMTEVOR0VfQ0xBU1Moa2xhc3MpICAgICAoR19UWVBF
X0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNzKSwgIFdFQktJVF9UWVBFX0FVVEhFTlRJQ0FUSU9OX0NI
QUxMRU5HRSwgV2ViS2l0QXV0aGVudGljYXRpb25DaGFsbGVuZ2VDbGFzcykpCisjZGVmaW5lIFdF
QktJVF9JU19BVVRIRU5USUNBVElPTl9DSEFMTEVOR0Uob2JqKSAgICAgICAgIChHX1RZUEVfQ0hF
Q0tfSU5TVEFOQ0VfVFlQRSgob2JqKSwgV0VCS0lUX1RZUEVfQVVUSEVOVElDQVRJT05fQ0hBTExF
TkdFKSkKKyNkZWZpbmUgV0VCS0lUX0lTX0FVVEhFTlRJQ0FUSU9OX0NIQUxMRU5HRV9DTEFTUyhr
bGFzcykgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyksICBXRUJLSVRfVFlQRV9BVVRI
RU5USUNBVElPTl9DSEFMTEVOR0UpKQorI2RlZmluZSBXRUJLSVRfQVVUSEVOVElDQVRJT05fQ0hB
TExFTkdFX0dFVF9DTEFTUyhvYmopICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygob2JqKSwg
IFdFQktJVF9UWVBFX0FVVEhFTlRJQ0FUSU9OX0NIQUxMRU5HRSwgV2ViS2l0QXV0aGVudGljYXRp
b25DaGFsbGVuZ2VDbGFzcykpCisKK3N0cnVjdCBfV2ViS2l0QXV0aGVudGljYXRpb25DaGFsbGVu
Z2UgeworICAgIEdPYmplY3QgcGFyZW50OworfTsKKworc3RydWN0IF9XZWJLaXRBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZUNsYXNzIHsKKyAgICBHT2JqZWN0Q2xhc3MgcGFyZW50OworfTsKKworV0VC
S0lUX0FQSSBHVHlwZQord2Via2l0X2F1dGhlbnRpY2F0aW9uX2NoYWxsZW5nZV9nZXRfdHlwZSAo
dm9pZCk7CisKK1dFQktJVF9BUEkgV2ViS2l0QXV0aGVudGljYXRpb25DaGFsbGVuZ2UqCit3ZWJr
aXRfYXV0aGVudGljYXRpb25fY2hhbGxlbmdlX25ldyAoKTsKKworV0VCS0lUX0FQSSB2b2lkCit3
ZWJraXRfYXV0aGVudGljYXRpb25fY2hhbGxlbmdlX3NldF91c2VyIChXZWJLaXRBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSogY2hhbGxlbmdlLCBjb25zdCBnY2hhciogdXNlcik7CisKK1dFQktJVF9B
UEkgY29uc3QgZ2NoYXIqCit3ZWJraXRfYXV0aGVudGljYXRpb25fY2hhbGxlbmdlX2dldF91c2Vy
IChXZWJLaXRBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSogY2hhbGxlbmdlKTsKKworV0VCS0lUX0FQ
SSB2b2lkCit3ZWJraXRfYXV0aGVudGljYXRpb25fY2hhbGxlbmdlX3NldF9wYXNzd29yZCAoV2Vi
S2l0QXV0aGVudGljYXRpb25DaGFsbGVuZ2UqIGNoYWxsZW5nZSwgY29uc3QgZ2NoYXIqIHBhc3N3
b3JkKTsKKworV0VCS0lUX0FQSSBjb25zdCBnY2hhcioKK3dlYmtpdF9hdXRoZW50aWNhdGlvbl9j
aGFsbGVuZ2VfZ2V0X3Bhc3N3b3JkIChXZWJLaXRBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSogY2hh
bGxlbmdlKTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfYXV0aGVudGljYXRpb25fY2hhbGxl
bmdlX3VzZV9jcmVkZW50aWFsIChXZWJLaXRBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSogY2hhbGxl
bmdlKTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfYXV0aGVudGljYXRpb25fY2hhbGxlbmdl
X2NvbnRpbnVlX3dpdGhvdXRfY3JlZGVudGlhbCAoV2ViS2l0QXV0aGVudGljYXRpb25DaGFsbGVu
Z2UqIGNoYWxsZW5nZSk7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X2F1dGhlbnRpY2F0aW9u
X2NoYWxsZW5nZV9jYW5jZWwgKFdlYktpdEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKiBjaGFsbGVu
Z2UpOworCitHX0VORF9ERUNMUworCisjZW5kaWYKSW5kZXg6IFdlYktpdC9ndGsvd2Via2l0L3dl
YmtpdGRlZmluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRkZWZp
bmVzLmgJKHJldmlzaW9uIDMwMzQwKQorKysgV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0ZGVmaW5l
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw5IEBACiAKIEdfQkVHSU5fREVDTFMKIAor
dHlwZWRlZiBzdHJ1Y3QgX1dlYktpdEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIFdlYktpdEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlOwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlQ2xhc3MgV2ViS2l0QXV0aGVudGljYXRpb25DaGFsbGVuZ2VDbGFzczsKKwogdHlw
ZWRlZiBzdHJ1Y3QgX1dlYktpdE5ldHdvcmtSZXF1ZXN0IFdlYktpdE5ldHdvcmtSZXF1ZXN0Owog
dHlwZWRlZiBzdHJ1Y3QgX1dlYktpdE5ldHdvcmtSZXF1ZXN0Q2xhc3MgV2ViS2l0TmV0d29ya1Jl
cXVlc3RDbGFzczsKIApJbmRleDogV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHByaXZhdGUuaAkocmV2aXNpb24g
MzAzNDApCisrKyBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2YXRlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI2LDYgKzI2LDcgQEAKICAqIFRoZXkgYXJlIHVzaW5nIFdlYkNvcmUgd2hpY2ggbXVz
bid0IGJlIGV4cG9zZWQgdG8gdGhlIG91dGVyIHdvcmxkLgogICovCiAKKyNpbmNsdWRlIDx3ZWJr
aXQvd2Via2l0YXV0aGVudGljYXRpb25jaGFsbGVuZ2UuaD4KICNpbmNsdWRlIDx3ZWJraXQvd2Vi
a2l0ZGVmaW5lcy5oPgogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJ2aWV3Lmg+CiAjaW5jbHVk
ZSA8d2Via2l0L3dlYmtpdHdlYmZyYW1lLmg+CkBAIC0zMyw2ICszNCw3IEBACiAjaW5jbHVkZSA8
d2Via2l0L3dlYmtpdG5ldHdvcmtyZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8d2Via2l0L3dlYmtpdHdl
YmJhY2tmb3J3YXJkbGlzdC5oPgogCisjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uu
aCIKICNpbmNsdWRlICJCYWNrRm9yd2FyZExpc3QuaCIKICNpbmNsdWRlICJIaXN0b3J5SXRlbS5o
IgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCkBAIC0xMDMsNiArMTA1LDE1IEBAIGV4dGVybiAiQyIg
ewogICAgIHN0cnVjdCBfV2ViS2l0TmV0d29ya1JlcXVlc3RQcml2YXRlIHsKICAgICAgICAgZ2No
YXIqIHVyaTsKICAgICB9OworIAorICAgICNkZWZpbmUgV0VCS0lUX0FVVEhFTlRJQ0FUSU9OX0NI
QUxMRU5HRV9HRVRfUFJJVkFURShvYmopICAgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX1BSSVZBVEUo
KG9iaiksIFdFQktJVF9UWVBFX0FVVEhFTlRJQ0FUSU9OX0NIQUxMRU5HRSwgV2ViS2l0QXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VQcml2YXRlKSkKKyAgICB0eXBlZGVmIHN0cnVjdCBfV2ViS2l0QXV0
aGVudGljYXRpb25DaGFsbGVuZ2VQcml2YXRlIFdlYktpdEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
UHJpdmF0ZTsKKyAgICBzdHJ1Y3QgX1dlYktpdEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJpdmF0
ZSB7CisgICAgICAgIFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKiB3ZWJDaGFsbGVu
Z2U7CisgICAgICAgIFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiB3ZWJIYW5kbGU7CisgICAgICAg
IGdjaGFyKiB1c2VyOworICAgICAgICBnY2hhciogcGFzc3dvcmQ7CisgICAgfTsKIAogICAgIFdl
YktpdFdlYkZyYW1lKgogICAgIHdlYmtpdF93ZWJfZnJhbWVfaW5pdF93aXRoX3dlYl92aWV3KFdl
YktpdFdlYlZpZXcqLCBXZWJDb3JlOjpIVE1MRnJhbWVPd25lckVsZW1lbnQqKTsKSW5kZXg6IFdl
YktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9n
dGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCShyZXZpc2lvbiAzMDM0MCkKKysrIFdlYktpdC9n
dGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NSw2ICs4NSw3
IEBAIGVudW0gewogICAgIENPUFlfQ0xJUEJPQVJELAogICAgIFBBU1RFX0NMSVBCT0FSRCwKICAg
ICBDVVRfQ0xJUEJPQVJELAorICAgIEFVVEhFTlRJQ0FUSU9OX1JFUVVFU1RFRCwKICAgICBMQVNU
X1NJR05BTAogfTsKIApAQCAtMzc5LDcgKzM4MCw3IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRf
d2ViX3ZpZXdfZm9jdXNfaW4KICAgICBHdGtXaWRnZXQqIHRvcGxldmVsID0gZ3RrX3dpZGdldF9n
ZXRfdG9wbGV2ZWwod2lkZ2V0KTsKICAgICBpZiAoR1RLX1dJREdFVF9UT1BMRVZFTCh0b3BsZXZl
bCkgJiYgZ3RrX3dpbmRvd19oYXNfdG9wbGV2ZWxfZm9jdXMoR1RLX1dJTkRPVyh0b3BsZXZlbCkp
KSB7CiAgICAgICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcod2lk
Z2V0KTsKLQorICAgICAgICAKICAgICAgICAgRnJhbWUqIGZyYW1lID0gY29yZSh3ZWJWaWV3KS0+
bWFpbkZyYW1lKCk7CiAgICAgICAgIGNvcmUod2ViVmlldyktPmZvY3VzQ29udHJvbGxlcigpLT5z
ZXRBY3RpdmUoZnJhbWUpOwogICAgIH0KQEAgLTYwNSw2ICs2MDYsODIgQEAgc3RhdGljIHZvaWQg
d2Via2l0X3dlYl92aWV3X3JlYWxfcGFzdGVfYwogICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFu
ZCgiUGFzdGUiKS5leGVjdXRlKCk7CiB9CiAKK3R5cGVkZWYgc3RydWN0Cit7CisgICAgR3RrV2lk
Z2V0KiB1c2VyX2VudHJ5OworICAgIEd0a1dpZGdldCogcGFzc3dvcmRfZW50cnk7CisgICAgV2Vi
S2l0QXV0aGVudGljYXRpb25DaGFsbGVuZ2UqIGNoYWxsZW5nZTsKK30gQXV0aGVudGljYXRpb25E
aWFsb2dEYXRhOworCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfYXV0aGVudGljYXRpb25f
ZGlhbG9nX3Jlc3BvbnNlX2NiKEd0a1dpZGdldCogZGlhbG9nLCBnaW50IHJlc3BvbnNlLCBncG9p
bnRlciB1c2VyX2RhdGEpCit7CisgICAgQXV0aGVudGljYXRpb25EaWFsb2dEYXRhKiBkYXRhID0g
cmVpbnRlcnByZXRfY2FzdDxBdXRoZW50aWNhdGlvbkRpYWxvZ0RhdGEqPih1c2VyX2RhdGEpOwor
CisgICAgc3dpdGNoIChyZXNwb25zZSkgeworICAgIGNhc2UgR1RLX1JFU1BPTlNFX05PTkU6Cisg
ICAgY2FzZSBHVEtfUkVTUE9OU0VfREVMRVRFX0VWRU5UOgorICAgIGNhc2UgR1RLX1JFU1BPTlNF
X1JFSkVDVDoKKyAgICAgICAgd2Via2l0X2F1dGhlbnRpY2F0aW9uX2NoYWxsZW5nZV9jb250aW51
ZV93aXRob3V0X2NyZWRlbnRpYWwoZGF0YS0+Y2hhbGxlbmdlKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBHVEtfUkVTUE9OU0VfQUNDRVBUOgorICAgICAgICB3ZWJraXRfYXV0aGVudGljYXRp
b25fY2hhbGxlbmdlX3NldF91c2VyKGRhdGEtPmNoYWxsZW5nZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndGtfZW50cnlfZ2V0X3RleHQoR1RLX0VO
VFJZKGRhdGEtPnVzZXJfZW50cnkpKSk7CisgICAgICAgIHdlYmtpdF9hdXRoZW50aWNhdGlvbl9j
aGFsbGVuZ2Vfc2V0X3Bhc3N3b3JkKGRhdGEtPmNoYWxsZW5nZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3RrX2VudHJ5X2dldF90ZXh0KEdU
S19FTlRSWShkYXRhLT5wYXNzd29yZF9lbnRyeSkpKTsKKyAgICAgICAgd2Via2l0X2F1dGhlbnRp
Y2F0aW9uX2NoYWxsZW5nZV91c2VfY3JlZGVudGlhbChkYXRhLT5jaGFsbGVuZ2UpOworICAgICAg
ICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBnX2Fzc2VydF9ub3RfcmVhY2hlZCAoKTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgZ3RrX3dpZGdldF9kZXN0cm95KGRpYWxvZyk7
CisgICAgZ19vYmplY3RfdW5yZWYoZGF0YS0+Y2hhbGxlbmdlKTsKK30KKworc3RhdGljIHZvaWQg
d2Via2l0X3dlYl92aWV3X3JlYWxfYXV0aGVudGljYXRpb25fcmVxdWVzdGVkKFdlYktpdFdlYlZp
ZXcqIHdlYlZpZXcsIFdlYktpdFdlYkZyYW1lKiB3ZWJGcmFtZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSogY2hhbGxlbmdlKQoreworICAgIEd0a1dpZGdldCogd2luZG93OworICAg
IEd0a1dpZGdldCogZGlhbG9nOworICAgIEd0a1dpZGdldCogdGFibGU7CisgICAgR3RrV2lkZ2V0
KiBsYWJlbDsKKyAgICBBdXRoZW50aWNhdGlvbkRpYWxvZ0RhdGEqIGRhdGE7CisKKyAgICB3aW5k
b3cgPSBndGtfd2lkZ2V0X2dldF90b3BsZXZlbChHVEtfV0lER0VUKHdlYlZpZXcpKTsKKyAgICBn
Y2hhciogdGl0bGUgPSBnX3N0cmNvbmNhdCgiQXV0aGVudGljYXRpb24gLSAiLCB3ZWJraXRfd2Vi
X2ZyYW1lX2dldF91cmkod2ViRnJhbWUpLCBOVUxMKTsKKyAgICBkaWFsb2cgPSBndGtfZGlhbG9n
X25ld193aXRoX2J1dHRvbnModGl0bGUsIEdUS19XSURHRVRfVE9QTEVWRUwod2luZG93KSA/IEdU
S19XSU5ET1cod2luZG93KSA6IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChHdGtEaWFsb2dGbGFncykoR1RLX0RJQUxPR19NT0RBTCB8IEdUS19ESUFMT0dfREVT
VFJPWV9XSVRIX1BBUkVOVCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdUS19TVE9DS19PSywgR1RLX1JFU1BPTlNFX0FDQ0VQVCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR1RLX1NUT0NLX0NBTkNFTCwgR1RLX1JFU1BPTlNFX1JF
SkVDVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7Cisg
ICAgZ19mcmVlKHRpdGxlKTsKKyAgICBndGtfZGlhbG9nX3NldF9kZWZhdWx0X3Jlc3BvbnNlKEdU
S19ESUFMT0coZGlhbG9nKSwgR1RLX1JFU1BPTlNFX1JFSkVDVCk7CisKKyAgICBkYXRhID0gZ19u
ZXcoQXV0aGVudGljYXRpb25EaWFsb2dEYXRhLCAxKTsKKyAgICBkYXRhLT51c2VyX2VudHJ5ID0g
Z3RrX2VudHJ5X25ldygpOworICAgIGRhdGEtPnBhc3N3b3JkX2VudHJ5ID0gZ3RrX2VudHJ5X25l
dygpOworICAgIGd0a19lbnRyeV9zZXRfdmlzaWJpbGl0eShHVEtfRU5UUlkoZGF0YS0+cGFzc3dv
cmRfZW50cnkpLCBGQUxTRSk7CisgICAgZGF0YS0+Y2hhbGxlbmdlID0gY2hhbGxlbmdlOworICAg
IGdfc2lnbmFsX2Nvbm5lY3QoZGlhbG9nLCAicmVzcG9uc2UiLCBHX0NBTExCQUNLKHdlYmtpdF93
ZWJfdmlld19hdXRoZW50aWNhdGlvbl9kaWFsb2dfcmVzcG9uc2VfY2IpLCBkYXRhKTsKKworICAg
IHRhYmxlID0gZ3RrX3RhYmxlX25ldygyLCAyLCBGQUxTRSk7CisgICAgZ3RrX3RhYmxlX3NldF9j
b2xfc3BhY2luZ3MoR1RLX1RBQkxFKHRhYmxlKSwgMyk7CisgICAgZ3RrX3RhYmxlX3NldF9yb3df
c3BhY2luZ3MoR1RLX1RBQkxFKHRhYmxlKSwgMyk7CisKKyAgICBsYWJlbCA9IGd0a19sYWJlbF9u
ZXcoIlVzZXJuYW1lOiIpOworICAgIGd0a190YWJsZV9hdHRhY2hfZGVmYXVsdHMoR1RLX1RBQkxF
KHRhYmxlKSwgbGFiZWwsIDAsIDEsIDAsIDEpOworICAgIGd0a190YWJsZV9hdHRhY2hfZGVmYXVs
dHMoR1RLX1RBQkxFKHRhYmxlKSwgZGF0YS0+dXNlcl9lbnRyeSwgMSwgMiwgMCwgMSk7CisKKyAg
ICBsYWJlbCA9IGd0a19sYWJlbF9uZXcoIlBhc3N3b3JkOiIpOworICAgIGd0a190YWJsZV9hdHRh
Y2hfZGVmYXVsdHMoR1RLX1RBQkxFKHRhYmxlKSwgbGFiZWwsIDAsIDEsIDEsIDIpOworICAgIGd0
a190YWJsZV9hdHRhY2hfZGVmYXVsdHMoR1RLX1RBQkxFKHRhYmxlKSwgZGF0YS0+cGFzc3dvcmRf
ZW50cnksIDEsIDIsIDEsIDIpOworCisgICAgZ3RrX2NvbnRhaW5lcl9hZGQoR1RLX0NPTlRBSU5F
UihHVEtfRElBTE9HKGRpYWxvZyktPnZib3gpLCB0YWJsZSk7CisgICAgZ3RrX3dpZGdldF9zaG93
X2FsbCh0YWJsZSk7CisgICAgZ3RrX3dpZGdldF9zaG93KGRpYWxvZyk7Cit9CisKIHN0YXRpYyB2
b2lkIHdlYmtpdF93ZWJfdmlld19maW5hbGl6ZShHT2JqZWN0KiBvYmplY3QpCiB7CiAgICAgV2Vi
S2l0V2ViVmlldyogd2ViVmlldyA9IFdFQktJVF9XRUJfVklFVyhvYmplY3QpOwpAQCAtOTcxLDYg
KzEwNDgsMjUgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2NsYXNzX2luaXQoVwogICAg
ICAgICAgICAgZ19jY2xvc3VyZV9tYXJzaGFsX1ZPSURfX1ZPSUQsCiAgICAgICAgICAgICBHX1RZ
UEVfTk9ORSwgMCk7CiAKKyAgICAvKioKKyAgICAgKiBXZWJLaXRXZWJWaWV3OjphdXRoZW50aWNh
dGlvbi1yZXF1ZXN0ZWQ6CisgICAgICogQHdlYl92aWV3OiB0aGUgb2JqZWN0IHdoaWNoIHJlY2Vp
dmVkIHRoZSBzaWduYWwKKyAgICAgKgorICAgICAqIFRoZSA6OmF1dGhlbnRpY2F0aW9uLXJlcXVl
c3RlZCBzaWduYWwgaXMgZW1pdHRlZCB3aGVuIGFuIGF1dGhlbnRpY2F0aW9uIGlzCisgICAgICog
cmVxdWVzdGVkIGZyb20gdGhlIHNlcnZlciB0byBhY2Nlc3MgYSByZXNvdXJjZS4KKyAgICAgKgor
ICAgICAqIFRoZSBkZWZhdWx0IGJlaGF2aW9yIGZvciB0aGlzIHNpZ25hbCBpcyBjcmVhdGluZyBh
biBpbnB1dCBkaWFsb2cgdG8gZ2V0IGEgc3VpdGFibGUgY3JlZGVudGlhbC4KKyAgICAgKi8KKyAg
ICB3ZWJraXRfd2ViX3ZpZXdfc2lnbmFsc1tBVVRIRU5USUNBVElPTl9SRVFVRVNURURdID0gZ19z
aWduYWxfbmV3KCJhdXRoZW50aWNhdGlvbi1yZXF1ZXN0ZWQiLAorICAgICAgICAgICAgR19UWVBF
X0ZST01fQ0xBU1Mod2ViVmlld0NsYXNzKSwKKyAgICAgICAgICAgIChHU2lnbmFsRmxhZ3MpKEdf
U0lHTkFMX1JVTl9MQVNUIHwgR19TSUdOQUxfQUNUSU9OKSwKKyAgICAgICAgICAgIEdfU1RSVUNU
X09GRlNFVChXZWJLaXRXZWJWaWV3Q2xhc3MsIGF1dGhlbnRpY2F0aW9uX3JlcXVlc3RlZCksCisg
ICAgICAgICAgICBOVUxMLCBOVUxMLAorICAgICAgICAgICAgd2Via2l0X21hcnNoYWxfVk9JRF9f
T0JKRUNUX09CSkVDVCwKKyAgICAgICAgICAgIEdfVFlQRV9OT05FLCAyLAorICAgICAgICAgICAg
V0VCS0lUX1RZUEVfV0VCX0ZSQU1FLAorICAgICAgICAgICAgV0VCS0lUX1RZUEVfQVVUSEVOVElD
QVRJT05fQ0hBTExFTkdFKTsKKwogICAgIC8qCiAgICAgICogaW1wbGVtZW50YXRpb25zIG9mIHZp
cnR1YWwgbWV0aG9kcwogICAgICAqLwpAQCAtOTg2LDYgKzEwODIsNyBAQCBzdGF0aWMgdm9pZCB3
ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5pdChXCiAgICAgd2ViVmlld0NsYXNzLT5jdXRfY2xpcGJv
YXJkID0gd2Via2l0X3dlYl92aWV3X3JlYWxfY3V0X2NsaXBib2FyZDsKICAgICB3ZWJWaWV3Q2xh
c3MtPmNvcHlfY2xpcGJvYXJkID0gd2Via2l0X3dlYl92aWV3X3JlYWxfY29weV9jbGlwYm9hcmQ7
CiAgICAgd2ViVmlld0NsYXNzLT5wYXN0ZV9jbGlwYm9hcmQgPSB3ZWJraXRfd2ViX3ZpZXdfcmVh
bF9wYXN0ZV9jbGlwYm9hcmQ7CisgICAgd2ViVmlld0NsYXNzLT5hdXRoZW50aWNhdGlvbl9yZXF1
ZXN0ZWQgPSB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9hdXRoZW50aWNhdGlvbl9yZXF1ZXN0ZWQ7CiAK
ICAgICBHT2JqZWN0Q2xhc3MqIG9iamVjdENsYXNzID0gR19PQkpFQ1RfQ0xBU1Mod2ViVmlld0Ns
YXNzKTsKICAgICBvYmplY3RDbGFzcy0+ZmluYWxpemUgPSB3ZWJraXRfd2ViX3ZpZXdfZmluYWxp
emU7CkluZGV4OiBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5oCShyZXZpc2lvbiAzMDM0MCkKKysr
IFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAtODMs
NiArODMsNyBAQCBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdDbGFzcyB7CiAgICAgdm9pZCAoKmN1dF9j
bGlwYm9hcmQpIChXZWJLaXRXZWJWaWV3KiB3ZWJfdmlldyk7CiAgICAgdm9pZCAoKmNvcHlfY2xp
cGJvYXJkKSAoV2ViS2l0V2ViVmlldyogd2ViX3ZpZXcpOwogICAgIHZvaWQgKCpwYXN0ZV9jbGlw
Ym9hcmQpIChXZWJLaXRXZWJWaWV3KiB3ZWJfdmlldyk7CisgICAgdm9pZCAoKmF1dGhlbnRpY2F0
aW9uX3JlcXVlc3RlZCkgKFdlYktpdFdlYlZpZXcqIHdlYl92aWV3LCBXZWJLaXRXZWJGcmFtZSog
d2ViX2ZyYW1lLCBXZWJLaXRBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSogYXV0aGVudGljYXRpb25f
Y2hhbGxlbmdlKTsKIAogICAgIC8qCiAgICAgICogaW50ZXJuYWwK
</data>
<flag name="review"
          id="8369"
          type_id="1"
          status="-"
          setter="alp"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>19213</attachid>
            <date>2008-02-19 12:21:56 -0800</date>
            <delta_ts>2008-02-22 06:53:43 -0800</delta_ts>
            <desc>fix style issues</desc>
            <filename>auth.patch</filename>
            <type>text/plain</type>
            <size>29970</size>
            <attacher name="Luca Bruno">lethalman88</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDMwMzQx
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMDgtMDIt
MTYgIEx1Y2EgQnJ1bm8gIDxsZXRoYWxtYW44OEBnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTY5NDcKKyAgICAgICAgQnVnIDE2OTQ3OiBbR1RLXSBNaXNzaW5nIEhU
VFAgQXV0aCBjaGFsbGVuZ2UKKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOiBhZGQgd2Via2l0
d2ViYXV0aGNoYWxsZW5nZS5jcHAgYW5kIHdlYmtpdHdlYmF1dGhjaGFsbGVuZ2UuaAorCiAyMDA4
LTAyLTE1ICBBbHAgVG9rZXIgIDxhbHBAYXRva2VyLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBIb2xnZXIuCkluZGV4OiBHTlVtYWtlZmlsZS5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBHTlVtYWtlZmls
ZS5hbQkocmV2aXNpb24gMzAzNDApCisrKyBHTlVtYWtlZmlsZS5hbQkod29ya2luZyBjb3B5KQpA
QCAtMjUxLDYgKzI1MSw3IEBAIHdlYmtpdGd0a19oX2FwaSArPSBcCiAJV2ViS2l0L2d0ay93ZWJr
aXQvd2Via2l0LmggXAogCVdlYktpdC9ndGsvd2Via2l0L3dlYmtpdGRlZmluZXMuaCBcCiAJV2Vi
S2l0L2d0ay93ZWJraXQvd2Via2l0bmV0d29ya3JlcXVlc3QuaCBcCisJV2ViS2l0L2d0ay93ZWJr
aXQvd2Via2l0d2ViYXV0aGNoYWxsZW5nZS5oIFwKIAlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3
ZWJiYWNrZm9yd2FyZGxpc3QuaCBcCiAJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViZnJhbWUu
aCBcCiAJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViaGlzdG9yeWl0ZW0uaCBcCkBAIC0yNzQs
NiArMjc1LDcgQEAgd2Via2l0Z3RrX2hlYWRlcnMgKz0gXAogd2Via2l0Z3RrX3NvdXJjZXMgKz0g
XAogCVdlYktpdC9ndGsvd2Via2l0L3dlYmtpdG5ldHdvcmtyZXF1ZXN0LmNwcCBcCiAJV2ViS2l0
L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5jcHAgXAorCVdlYktpdC9ndGsvd2Via2l0L3dlYmtp
dHdlYmF1dGhjaGFsbGVuZ2UuY3BwIFwKIAlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJiYWNr
Zm9yd2FyZGxpc3QuY3BwIFwKIAlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJmcmFtZS5jcHAg
XAogCVdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmhpc3RvcnlpdGVtLmNwcCBcCkluZGV4OiBX
ZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNp
b24gMzAzNDEpCisrKyBXZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDI1IEBACisyMDA4LTAyLTE2ICBMdWNhIEJydW5vICA8bGV0aGFsbWFuODhAZ21haWwuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdBUk5JTkc6
IE5PIFRFU1QgQ0FTRVMgQURERUQgT1IgQ0hBTkdFRAorCisgICAgICAgIGh0dHA6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTQ3CisgICAgICAgIEJ1ZyAxNjk0NzogW0dUS10g
TWlzc2luZyBIVFRQIEF1dGggY2hhbGxlbmdlCisKKyAgICAgICAgKiBXZWJDb3JlLnBybzogYWRk
IHdlYmtpdHdlYmF1dGhjaGFsbGVuZ2UuY3BwIGFuZCB3ZWJraXR3ZWJhdXRoY2hhbGxlbmdlLmgK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmg6CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmg6CisgICAgICAgIChXZWJD
b3JlOjpSZXNvdXJjZUhhbmRsZUludGVybmFsOjpSZXNvdXJjZUhhbmRsZUludGVybmFsKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UpOiBhZGRlZCwgY2FsbGVkIGJ5IGNVUkwgYmFja2VuZAorICAgICAgICAoV2ViQ29y
ZTo6UmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkQ3JlZGVudGlhbCk6IGFkZGVkCisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRSZXF1ZXN0VG9Db250aW51ZVdpdGhvdXRD
cmVkZW50aWFsKTogYWRkZWQKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpyZWNl
aXZlZENhbmNlbGxhdGlvbik6IGFkZGVkCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJs
L1Jlc291cmNlSGFuZGxlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpoZWFkZXJDYWxs
YmFjayk6IGNoZWNrIGZvciBhdXRoZW50aWNhdGlvbgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VIYW5kbGVNYW5hZ2VyOjpzdGFydEpvYik6IHVzZSB0aGUgYXV0aGVudGljYXRpb24KKwogMjAw
OC0wMi0xNiAgS2V2aW4gT2xsaXZpZXIgIDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNvbT4KIAogICAg
ICAgICB3eCBidWlsZCBmaXguCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUucHJvCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvV2ViQ29yZS5wcm8JKHJldmlzaW9uIDMwMzQwKQorKysgV2ViQ29yZS9XZWJD
b3JlLnBybwkod29ya2luZyBjb3B5KQpAQCAtOTk2LDYgKzk5Niw3IEBAIGd0ay1wb3J0IHsKICAg
ICAgICAgLi4vV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0ZGVmaW5lcy5oIFwKICAgICAgICAgLi4v
V2ViS2l0L2d0ay93ZWJraXQvd2Via2l0bmV0d29ya3JlcXVlc3QuaCBcCiAgICAgICAgIC4uL1dl
YktpdC9ndGsvd2Via2l0L3dlYmtpdHByaXZhdGUuaCBcCisgICAgICAgIC4uL1dlYktpdC9ndGsv
d2Via2l0L3dlYmtpdHdlYmF1dGhjaGFsbGVuZ2UuaCBcCiAgICAgICAgIC4uL1dlYktpdC9ndGsv
d2Via2l0L3dlYmtpdHdlYmJhY2tmb3J3YXJkbGlzdC5oIFwKICAgICAgICAgLi4vV2ViS2l0L2d0
ay93ZWJraXQvd2Via2l0d2ViZnJhbWUuaCBcCiAgICAgICAgIC4uL1dlYktpdC9ndGsvd2Via2l0
L3dlYmtpdHdlYmhpc3RvcnlpdGVtLmggXApAQCAtMTA3Niw2ICsxMDc3LDcgQEAgZ3RrLXBvcnQg
ewogICAgICAgICBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy94Ym0vWEJNSW1hZ2VEZWNvZGVyLmNw
cCBcCiAgICAgICAgIC4uL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdG5ldHdvcmtyZXF1ZXN0LmNw
cCBcCiAgICAgICAgIC4uL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHByaXZhdGUuY3BwIFwKKyAg
ICAgICAgLi4vV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViYXV0aGNoYWxsZW5nZS5jcHAgXAog
ICAgICAgICAuLi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJiYWNrZm9yd2FyZGxpc3QuY3Bw
IFwKICAgICAgICAgLi4vV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViZnJhbWUuY3BwIFwKICAg
ICAgICAgLi4vV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViaGlzdG9yeWl0ZW0uY3BwIFwKSW5k
ZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCShyZXZpc2lvbiAz
MDM0MCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC05Nyw3ICs5Nyw3IEBAIHB1YmxpYzoKICAgICAKICAgICB+UmVzb3VyY2VI
YW5kbGUoKTsKIAotI2lmIFBMQVRGT1JNKE1BQykgfHwgVVNFKENGTkVUV09SSykKKyNpZiBQTEFU
Rk9STShNQUMpIHx8IFVTRShDRk5FVFdPUkspIHx8IFVTRShDVVJMKQogICAgIHZvaWQgZGlkUmVj
ZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
Jik7CiAgICAgdm9pZCByZWNlaXZlZENyZWRlbnRpYWwoY29uc3QgQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UmLCBjb25zdCBDcmVkZW50aWFsJik7CiAgICAgdm9pZCByZWNlaXZlZFJlcXVlc3RUb0Nv
bnRpbnVlV2l0aG91dENyZWRlbnRpYWwoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKTsK
SW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50
ZXJuYWwuaAkocmV2aXNpb24gMzAzNDApCisrKyBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VIYW5kbGVJbnRlcm5hbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsNiArMTAxLDggQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgLCBtX2ZpbGUoMCkKICAgICAgICAgICAg
ICwgbV9mb3JtRGF0YUVsZW1lbnRJbmRleCgwKQogICAgICAgICAgICAgLCBtX2Zvcm1EYXRhRWxl
bWVudERhdGFPZmZzZXQoMCkKKyAgICAgICAgICAgICwgbV93ZWJDaGFsbGVuZ2UoKQorICAgICAg
ICAgICAgLCBtX2NvbnRpbnVlV2l0aG91dENyZWRlbnRpYWwoZmFsc2UpCiAjZW5kaWYKICNpZiBQ
TEFURk9STShRVCkKICAgICAgICAgICAgICwgbV9qb2IoMCkKQEAgLTE1OSw2ICsxNjEsOSBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHNpemVfdCBtX2Zvcm1EYXRhRWxlbWVudEluZGV4
OwogICAgICAgICBzaXplX3QgbV9mb3JtRGF0YUVsZW1lbnREYXRhT2Zmc2V0OwogICAgICAgICBW
ZWN0b3I8Y2hhcj4gbV9wb3N0Qnl0ZXM7CisKKyAgICAgICAgQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UgbV93ZWJDaGFsbGVuZ2U7CisgICAgICAgIGJvb2wgbV9jb250aW51ZVdpdGhvdXRDcmVkZW50
aWFsOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oUVQpCiAjaWYgUVRfVkVSU0lPTiA8IDB4MDQwNDAw
CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNl
SGFuZGxlQ3VybC5jcHAJKHJldmlzaW9uIDMwMzQwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTUsNCAr
OTUsNjkgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6bG9hZFJlc291cmNlU3luY2hybwogICAgIG5v
dEltcGxlbWVudGVkKCk7CiB9CiAKK3ZvaWQgUmVzb3VyY2VIYW5kbGU6OmRpZFJlY2VpdmVBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxl
bmdlKQoreworICAgIC8qIEZJWE1FOiBhZGQgc3VwcG9ydCBmb3IgRlRQLCBIVFRQUywgYW5kIEZU
UFMgYXV0aGVudGljYXRpb24sCisgICAgICogZ2V0IHRoZSByaWdodCBwb3J0LCBzZXJ2ZXIgYW5k
IGF1dGhlbnRpY2F0aW9uIHNjaGVtZQorICAgICAqLworICAgIFJlc291cmNlSGFuZGxlSW50ZXJu
YWwqIGQgPSBnZXRJbnRlcm5hbCgpOworICAgIGlmIChkLT5tX2NvbnRpbnVlV2l0aG91dENyZWRl
bnRpYWwpCisgICAgICAgIHJldHVybjsKKyAgICBjYW5jZWwoKTsKKworICAgIFByb3RlY3Rpb25T
cGFjZSBwcm90ZWN0aW9uU3BhY2U7CisgICAgdW5zaWduZWQgcHJldmlvdXNGYWlsdXJlQ291bnQg
PSAwOworICAgIGlmIChjaGFsbGVuZ2UuaXNOdWxsKCkpIHsKKyAgICAgICAgcHJvdGVjdGlvblNw
YWNlID0gUHJvdGVjdGlvblNwYWNlKGQtPm1fcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkKCJIb3N0
IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4MCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb3RlY3Rpb25TcGFjZVNlcnZl
ckhUVFAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLT5tX3Jl
c3BvbnNlLmh0dHBIZWFkZXJGaWVsZCgiUmVhbG0iKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFByb3RlY3Rpb25TcGFjZUF1dGhlbnRpY2F0aW9uU2NoZW1lRGVm
YXVsdCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcHJvdGVjdGlvblNwYWNlID0gZC0+bV93ZWJD
aGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlKCk7CisgICAgICAgIHByZXZpb3VzRmFpbHVyZUNvdW50
ID0gZC0+bV93ZWJDaGFsbGVuZ2UucHJldmlvdXNGYWlsdXJlQ291bnQoKSsxOworICAgIH0KKyAg
ICAKKyAgICBkLT5tX3dlYkNoYWxsZW5nZSA9IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHByb3Rl
Y3Rpb25TcGFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNoYWxsZW5nZS5wcm9wb3NlZENyZWRlbnRpYWwoKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXZpb3VzRmFpbHVyZUNvdW50LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC0+bV9yZXNwb25zZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYWxsZW5n
ZS5lcnJvcigpKTsKKworICAgIGlmIChkLT5jbGllbnQoKSkKKyAgICAgICAgZC0+Y2xpZW50KCkt
PmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh0aGlzLCBkLT5tX3dlYkNoYWxsZW5n
ZSk7Cit9CisKK3ZvaWQgUmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkQ3JlZGVudGlhbChjb25zdCBB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlLCBjb25zdCBDcmVkZW50aWFsJiBjcmVk
ZW50aWFsKQoreworICAgIEFTU0VSVCghY2hhbGxlbmdlLmlzTnVsbCgpKTsgICAKKyAgICBSZXNv
dXJjZUhhbmRsZUludGVybmFsKiBkID0gZ2V0SW50ZXJuYWwoKTsKKyAgICBpZiAoY2hhbGxlbmdl
ICE9IGQtPm1fd2ViQ2hhbGxlbmdlKQorICAgICAgICByZXR1cm47CisKKyAgICBkLT5tX3dlYkNo
YWxsZW5nZSA9IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNoYWxsZW5nZS5wcm90ZWN0aW9uU3Bh
Y2UoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNy
ZWRlbnRpYWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjaGFsbGVuZ2UucHJldmlvdXNGYWlsdXJlQ291bnQoKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYWxsZW5nZS5mYWlsdXJlUmVzcG9uc2UoKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYWxsZW5n
ZS5lcnJvcigpKTsKKworICAgIFJlc291cmNlSGFuZGxlTWFuYWdlcjo6c2hhcmVkSW5zdGFuY2Uo
KS0+YWRkKHRoaXMpOworfQorCit2b2lkIFJlc291cmNlSGFuZGxlOjpyZWNlaXZlZFJlcXVlc3RU
b0NvbnRpbnVlV2l0aG91dENyZWRlbnRpYWwoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2Um
IGNoYWxsZW5nZSkKK3sKKyAgICBBU1NFUlQoIWNoYWxsZW5nZS5pc051bGwoKSk7ICAgCisgICAg
UmVzb3VyY2VIYW5kbGVJbnRlcm5hbCogZCA9IGdldEludGVybmFsKCk7CisgICAgaWYgKGNoYWxs
ZW5nZSAhPSBkLT5tX3dlYkNoYWxsZW5nZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZC0+bV9j
b250aW51ZVdpdGhvdXRDcmVkZW50aWFsID0gdHJ1ZTsKKyAgICBSZXNvdXJjZUhhbmRsZU1hbmFn
ZXI6OnNoYXJlZEluc3RhbmNlKCktPmFkZCh0aGlzKTsKK30KKwordm9pZCBSZXNvdXJjZUhhbmRs
ZTo6cmVjZWl2ZWRDYW5jZWxsYXRpb24oY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNo
YWxsZW5nZSkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRs
ZU1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L1Jlc291cmNlSGFuZGxlTWFuYWdlci5jcHAJKHJldmlzaW9uIDMwMzQwKQorKysgV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVNYW5hZ2VyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTY4LDYgKzE2OCwxMCBAQCBzdGF0aWMgc2l6ZV90IGhlYWRlckNhbGxiYWNrKGNo
YXIqIHB0ciwgCiAgICAgICAgIGQtPm1fcmVzcG9uc2Uuc2V0VGV4dEVuY29kaW5nTmFtZShleHRy
YWN0Q2hhcnNldEZyb21NZWRpYVR5cGUoZC0+bV9yZXNwb25zZS5odHRwSGVhZGVyRmllbGQoIkNv
bnRlbnQtVHlwZSIpKSk7CiAgICAgICAgIGQtPm1fcmVzcG9uc2Uuc2V0U3VnZ2VzdGVkRmlsZW5h
bWUoZmlsZW5hbWVGcm9tSFRUUENvbnRlbnREaXNwb3NpdGlvbihkLT5tX3Jlc3BvbnNlLmh0dHBI
ZWFkZXJGaWVsZCgiQ29udGVudC1EaXNwb3NpdGlvbiIpKSk7CiAKKyAgICAgICAgLy8gSFRUUCBh
dXRoZW50aWNhdGlvbgorICAgICAgICBpZiAoaHR0cENvZGUgPT0gNDAxICYmIGQtPm1fcmVzcG9u
c2UuaXNIVFRQKCkpCisgICAgICAgICAgICBqb2ItPmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZShkLT5tX3dlYkNoYWxsZW5nZSk7CisKICAgICAgICAgLy8gSFRUUCByZWRpcmVjdGlv
bgogICAgICAgICBpZiAoaHR0cENvZGUgPj0gMzAwICYmIGh0dHBDb2RlIDwgNDAwKSB7CiAgICAg
ICAgICAgICBTdHJpbmcgbG9jYXRpb24gPSBkLT5tX3Jlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZCgi
bG9jYXRpb24iKTsKQEAgLTU0Niw2ICs1NTAsOSBAQCB2b2lkIFJlc291cmNlSGFuZGxlTWFuYWdl
cjo6c3RhcnRKb2IoUmVzCiAgICAgfQogCiAgICAgZC0+bV9oYW5kbGUgPSBjdXJsX2Vhc3lfaW5p
dCgpOworICAgIC8vIEhUVFAgQXV0aGVudGljYXRpb24gY2FuY2VscyB0aGUgam9iIHNvIGJlIHN1
cmUgdGhlIG5ldyBqb2IgaXMgbm90IGNhbmNlbGxlZAorICAgIGQtPm1fY2FuY2VsbGVkID0gZmFs
c2U7ICAKKwogI2lmbmRlZiBOREVCVUcKICAgICBpZiAoZ2V0ZW52KCJERUJVR19DVVJMIikpCiAg
ICAgICAgIGN1cmxfZWFzeV9zZXRvcHQoZC0+bV9oYW5kbGUsIENVUkxPUFRfVkVSQk9TRSwgMSk7
CkBAIC01NzUsNiArNTgyLDIzIEBAIHZvaWQgUmVzb3VyY2VIYW5kbGVNYW5hZ2VyOjpzdGFydEpv
YihSZXMKICAgICAgICAgY3VybF9lYXN5X3NldG9wdChkLT5tX2hhbmRsZSwgQ1VSTE9QVF9DT09L
SUVKQVIsIG1fY29va2llSmFyRmlsZU5hbWUpOwogICAgIH0KIAorICAgIGlmICghZC0+bV93ZWJD
aGFsbGVuZ2UuaXNOdWxsKCkgJiYgIWQtPm1fY29udGludWVXaXRob3V0Q3JlZGVudGlhbCkgewor
ICAgICAgICBsb25nIGN1cmxBdXRoOworICAgICAgICBzd2l0Y2goZC0+bV93ZWJDaGFsbGVuZ2Uu
cHJvdGVjdGlvblNwYWNlKCkuYXV0aGVudGljYXRpb25TY2hlbWUoKSkgeyAgICAgICAgICAKKyAg
ICAgICAgY2FzZSBQcm90ZWN0aW9uU3BhY2VBdXRoZW50aWNhdGlvblNjaGVtZUhUVFBCYXNpYzoK
KyAgICAgICAgY2FzZSBQcm90ZWN0aW9uU3BhY2VBdXRoZW50aWNhdGlvblNjaGVtZURlZmF1bHQ6
CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBjdXJsQXV0aCA9IENVUkxBVVRIX0JBU0lD
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBDcmVkZW50aWFsIGNy
ZWRlbnRpYWwgPSBkLT5tX3dlYkNoYWxsZW5nZS5wcm9wb3NlZENyZWRlbnRpYWwoKTsKKyAgICAg
ICAgU3RyaW5nIHVzZXJwd2QgPSBjcmVkZW50aWFsLnVzZXIoKSArICI6IiArIGNyZWRlbnRpYWwu
cGFzc3dvcmQoKTsKKyAgICAgICAgCisgICAgICAgIGN1cmxfZWFzeV9zZXRvcHQoZC0+bV9oYW5k
bGUsIENVUkxPUFRfSFRUUEFVVEgsIGN1cmxBdXRoKTsKKyAgICAgICAgY3VybF9lYXN5X3NldG9w
dChkLT5tX2hhbmRsZSwgQ1VSTE9QVF9VU0VSUFdELCBzdHJkdXAodXNlcnB3ZC51dGY4KCkuZGF0
YSgpKSk7CisgICAgfQorCiAgICAgc3RydWN0IGN1cmxfc2xpc3QqIGhlYWRlcnMgPSAwOwogICAg
IGlmIChqb2ItPnJlcXVlc3QoKS5odHRwSGVhZGVyRmllbGRzKCkuc2l6ZSgpID4gMCkgewogICAg
ICAgICBIVFRQSGVhZGVyTWFwIGN1c3RvbUhlYWRlcnMgPSBqb2ItPnJlcXVlc3QoKS5odHRwSGVh
ZGVyRmllbGRzKCk7CkluZGV4OiBXZWJLaXQvZ3RrL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQvZ3RrL0NoYW5nZUxvZwkocmV2aXNpb24gMzAzNDEpCisrKyBXZWJLaXQvZ3RrL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDA4LTAyLTE2ICBMdWNhIEJy
dW5vICA8bGV0aGFsbWFuODhAZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2OTQ3CisgICAgICAgIEJ1ZyAxNjk0NzogW0dUS10gTWlzc2luZyBIVFRQIEF1dGggY2hh
bGxlbmdlCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlY2Vp
dmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6IGltcGxlbWVudGVkCisgICAgICAgICogd2Via2l0
L3dlYmtpdGRlZmluZXMuaDoKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0cHJpdmF0ZS5oOgorICAg
ICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcDogYWRkIGF1dGhlbnRpY2F0aW9uLXJlcXVl
c3RlZCBzaWduYWwgYW5kIGNyZWF0ZSBhdXRoIGRpYWxvZworICAgICAgICAqIHdlYmtpdC93ZWJr
aXR3ZWJ2aWV3Lmg6CisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYmF1dGhjaGFsbGVuZ2UuY3Bw
OiBhZGRlZAorICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJhdXRoY2hhbGxlbmdlLmg6IGFkZGVk
CisKIDIwMDgtMDItMTUgIEFscCBUb2tlciAgPGFscEBhdG9rZXIuY29tPgogCiAgICAgICAgIEZp
eCB0aGUgR1RLKyBidWlsZCBmb2xsb3dpbmcgYnJlYWthZ2UgaW50cm9kdWNlZCBpbiByMzAyNDMu
CkluZGV4OiBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50R3RrLmNwcAkocmV2aXNpb24gMzAzNDApCisrKyBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0
L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBA
QAogI2luY2x1ZGUgIkhUTUxGcmFtZU93bmVyRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1l
cy5oIgogI2luY2x1ZGUgIkxhbmd1YWdlLmgiCisjaW5jbHVkZSAiTWFpblJlc291cmNlTG9hZGVy
LmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVu
dGVkLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKQEAgLTM5LDYgKzQwLDcgQEAKICNp
bmNsdWRlICJranNfYmluZGluZy5oIgogI2luY2x1ZGUgImtqc19wcm94eS5oIgogI2luY2x1ZGUg
Imtqc193aW5kb3cuaCIKKyNpbmNsdWRlICJ3ZWJraXR3ZWJhdXRoY2hhbGxlbmdlLmgiCiAjaW5j
bHVkZSAid2Via2l0d2Vidmlldy5oIgogI2luY2x1ZGUgIndlYmtpdHdlYmZyYW1lLmgiCiAjaW5j
bHVkZSAid2Via2l0cHJpdmF0ZS5oIgpAQCAtMTY1LDkgKzE2NywyNCBAQCB2b2lkIEZyYW1lTG9h
ZGVyQ2xpZW50Ojpjb21taXR0ZWRMb2FkKERvCiAgICAgZmwtPmFkZERhdGEoZGF0YSwgbGVuZ3Ro
KTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZWNlaXZlQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nICBpZGVudGlm
aWVyLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpCit2b2lkIEZyYW1lTG9hZGVyQ2xp
ZW50OjpkaXNwYXRjaERpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShEb2N1bWVudExv
YWRlciogZG9jdW1lbnRMb2FkZXIsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UmIHdlYkNoYWxsZW5nZSkKIHsKLSAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIFJlc291cmNlSGFuZGxlKiBoYW5kbGUgPSBkb2N1bWVudExvYWRlci0+bWFpblJl
c291cmNlTG9hZGVyKCktPmhhbmRsZSgpOworICAgIEFTU0VSVChoYW5kbGUpOworICAgIGlmICgh
aGFuZGxlKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgV2ViS2l0V2ViQXV0aENoYWxsZW5n
ZSogY2hhbGxlbmdlID0gd2Via2l0X3dlYl9hdXRoX2NoYWxsZW5nZV9uZXcoKTsKKyAgICBXZWJL
aXRXZWJBdXRoQ2hhbGxlbmdlUHJpdmF0ZSogY2hhbGxlbmdlUHJpdmF0ZSA9IFdFQktJVF9XRUJf
QVVUSF9DSEFMTEVOR0VfR0VUX1BSSVZBVEUoY2hhbGxlbmdlKTsKKyAgICAqY2hhbGxlbmdlUHJp
dmF0ZS0+d2ViQ2hhbGxlbmdlID0gd2ViQ2hhbGxlbmdlOworICAgIGNoYWxsZW5nZVByaXZhdGUt
PndlYkhhbmRsZSA9IGhhbmRsZTsKKyAgICAKKyAgICBDcmVkZW50aWFsIGNyZWRlbnRpYWwgPSB3
ZWJDaGFsbGVuZ2UucHJvcG9zZWRDcmVkZW50aWFsKCk7CisgICAgd2Via2l0X3dlYl9hdXRoX2No
YWxsZW5nZV9zZXRfdXNlcihjaGFsbGVuZ2UsIGNyZWRlbnRpYWwudXNlcigpLnV0ZjgoKS5kYXRh
KCkpOworICAgIHdlYmtpdF93ZWJfYXV0aF9jaGFsbGVuZ2Vfc2V0X3Bhc3N3b3JkKGNoYWxsZW5n
ZSwgY3JlZGVudGlhbC5wYXNzd29yZCgpLnV0ZjgoKS5kYXRhKCkpOworICAgIAorICAgIFdlYktp
dFdlYlZpZXcqIHdlYlZpZXcgPSBnZXRWaWV3RnJvbUZyYW1lKG1fZnJhbWUpOworICAgIGdfc2ln
bmFsX2VtaXRfYnlfbmFtZSh3ZWJWaWV3LCAiYXV0aGVudGljYXRpb24tcmVxdWVzdGVkIiwgbV9m
cmFtZSwgY2hhbGxlbmdlLCBOVUxMKTsKIH0KIAogdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlz
cGF0Y2hEaWRDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShEb2N1bWVudExvYWRlciosIHVu
c2lnbmVkIGxvbmcgIGlkZW50aWZpZXIsIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikK
SW5kZXg6IFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdGRlZmluZXMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRkZWZpbmVzLmgJKHJldmlzaW9uIDMwMzQwKQorKysgV2Vi
S2l0L2d0ay93ZWJraXQvd2Via2l0ZGVmaW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw2ICs0
Niw5IEBAIHR5cGVkZWYgc3RydWN0IF9XZWJLaXROZXR3b3JrUmVxdWVzdENsYXMKIHR5cGVkZWYg
c3RydWN0IF9XZWJLaXRXZWJCYWNrRm9yd2FyZExpc3QgV2ViS2l0V2ViQmFja0ZvcndhcmRMaXN0
OwogdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYkJhY2tGb3J3YXJkTGlzdENsYXNzIFdlYktpdFdl
YkJhY2tGb3J3YXJkTGlzdENsYXNzOwogCit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViQXV0aENo
YWxsZW5nZSBXZWJLaXRXZWJBdXRoQ2hhbGxlbmdlOwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdl
YkF1dGhDaGFsbGVuZ2VDbGFzcyBXZWJLaXRXZWJBdXRoQ2hhbGxlbmdlQ2xhc3M7CisKIHR5cGVk
ZWYgc3RydWN0IF9XZWJLaXRXZWJIaXN0b3J5SXRlbSBXZWJLaXRXZWJIaXN0b3J5SXRlbTsKIHR5
cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJIaXN0b3J5SXRlbUNsYXNzIFdlYktpdFdlYkhpc3RvcnlJ
dGVtQ2xhc3M7CiAKSW5kZXg6IFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHByaXZhdGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2YXRlLmgJKHJldmlzaW9uIDMw
MzQwKQorKysgV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yNywxMiArMjcsMTQgQEAKICAqLwogCiAjaW5jbHVkZSA8d2Via2l0L3dlYmtpdGRlZmlu
ZXMuaD4KKyNpbmNsdWRlIDx3ZWJraXQvd2Via2l0d2ViYXV0aGNoYWxsZW5nZS5oPgogI2luY2x1
ZGUgPHdlYmtpdC93ZWJraXR3ZWJ2aWV3Lmg+CiAjaW5jbHVkZSA8d2Via2l0L3dlYmtpdHdlYmZy
YW1lLmg+CiAjaW5jbHVkZSA8d2Via2l0L3dlYmtpdHdlYnNldHRpbmdzLmg+CiAjaW5jbHVkZSA8
d2Via2l0L3dlYmtpdG5ldHdvcmtyZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8d2Via2l0L3dlYmtpdHdl
YmJhY2tmb3J3YXJkbGlzdC5oPgogCisjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uu
aCIKICNpbmNsdWRlICJCYWNrRm9yd2FyZExpc3QuaCIKICNpbmNsdWRlICJIaXN0b3J5SXRlbS5o
IgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCkBAIC0xMDMsNiArMTA1LDE1IEBAIGV4dGVybiAiQyIg
ewogICAgIHN0cnVjdCBfV2ViS2l0TmV0d29ya1JlcXVlc3RQcml2YXRlIHsKICAgICAgICAgZ2No
YXIqIHVyaTsKICAgICB9OworIAorICAgICNkZWZpbmUgV0VCS0lUX1dFQl9BVVRIX0NIQUxMRU5H
RV9HRVRfUFJJVkFURShvYmopICAgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX1BSSVZBVEUoKG9iaiks
IFdFQktJVF9UWVBFX1dFQl9BVVRIX0NIQUxMRU5HRSwgV2ViS2l0V2ViQXV0aENoYWxsZW5nZVBy
aXZhdGUpKQorICAgIHR5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJBdXRoQ2hhbGxlbmdlUHJpdmF0
ZSBXZWJLaXRXZWJBdXRoQ2hhbGxlbmdlUHJpdmF0ZTsKKyAgICBzdHJ1Y3QgX1dlYktpdFdlYkF1
dGhDaGFsbGVuZ2VQcml2YXRlIHsKKyAgICAgICAgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFs
bGVuZ2UqIHdlYkNoYWxsZW5nZTsKKyAgICAgICAgV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqIHdl
YkhhbmRsZTsKKyAgICAgICAgZ2NoYXIqIHVzZXI7CisgICAgICAgIGdjaGFyKiBwYXNzd29yZDsK
KyAgICB9OwogCiAgICAgV2ViS2l0V2ViRnJhbWUqCiAgICAgd2Via2l0X3dlYl9mcmFtZV9pbml0
X3dpdGhfd2ViX3ZpZXcoV2ViS2l0V2ViVmlldyosIFdlYkNvcmU6OkhUTUxGcmFtZU93bmVyRWxl
bWVudCopOwpJbmRleDogV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViYXV0aGNoYWxsZW5nZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViYXV0aGNoYWxsZW5n
ZS5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJhdXRoY2hh
bGxlbmdlLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNDEgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMDggTHVjYSBCcnVubworICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJ3
ZWJraXRwcml2YXRlLmgiCisjaW5jbHVkZSAid2Via2l0d2ViYXV0aGNoYWxsZW5nZS5oIgorCisj
aW5jbHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCIKKyNpbmNsdWRlICJDcmVkZW50aWFs
LmgiCisjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYktp
dDsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitleHRlcm4gIkMiIHsKKworR19ERUZJTkVf
VFlQRShXZWJLaXRXZWJBdXRoQ2hhbGxlbmdlLCB3ZWJraXRfd2ViX2F1dGhfY2hhbGxlbmdlLCBH
X1RZUEVfT0JKRUNUKTsKKworc3RhdGljIHZvaWQgd2Via2l0X3dlYl9hdXRoX2NoYWxsZW5nZV9m
aW5hbGl6ZShHT2JqZWN0KiBvYmplY3QpCit7CisgICAgV2ViS2l0V2ViQXV0aENoYWxsZW5nZSog
Y2hhbGxlbmdlID0gV0VCS0lUX1dFQl9BVVRIX0NIQUxMRU5HRShvYmplY3QpOworICAgIFdlYktp
dFdlYkF1dGhDaGFsbGVuZ2VQcml2YXRlKiBwcml2ID0gY2hhbGxlbmdlLT5wcml2OworCisgICAg
ZGVsZXRlIHByaXYtPndlYkNoYWxsZW5nZTsKKyAgICBnX2ZyZWUocHJpdi0+dXNlcik7CisgICAg
Z19mcmVlKHByaXYtPnBhc3N3b3JkKTsKKworICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF93ZWJf
YXV0aF9jaGFsbGVuZ2VfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUob2JqZWN0KTsKK30KKworc3Rh
dGljIHZvaWQgd2Via2l0X3dlYl9hdXRoX2NoYWxsZW5nZV9jbGFzc19pbml0KFdlYktpdFdlYkF1
dGhDaGFsbGVuZ2VDbGFzcyogY2hhbGxlbmdlQ2xhc3MpCit7CisgICAgZ190eXBlX2NsYXNzX2Fk
ZF9wcml2YXRlKGNoYWxsZW5nZUNsYXNzLCBzaXplb2YoV2ViS2l0V2ViQXV0aENoYWxsZW5nZVBy
aXZhdGUpKTsKKworICAgIEdfT0JKRUNUX0NMQVNTKGNoYWxsZW5nZUNsYXNzKS0+ZmluYWxpemUg
PSB3ZWJraXRfd2ViX2F1dGhfY2hhbGxlbmdlX2ZpbmFsaXplOworfQorCitzdGF0aWMgdm9pZCB3
ZWJraXRfd2ViX2F1dGhfY2hhbGxlbmdlX2luaXQoV2ViS2l0V2ViQXV0aENoYWxsZW5nZSogY2hh
bGxlbmdlKQoreworICAgIFdlYktpdFdlYkF1dGhDaGFsbGVuZ2VQcml2YXRlKiBwcml2ID0gV0VC
S0lUX1dFQl9BVVRIX0NIQUxMRU5HRV9HRVRfUFJJVkFURShjaGFsbGVuZ2UpOworICAgIGNoYWxs
ZW5nZS0+cHJpdiA9IHByaXY7CisKKyAgICBwcml2LT53ZWJDaGFsbGVuZ2UgPSBuZXcgQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UoKTsKKyAgICBwcml2LT53ZWJIYW5kbGUgPSBOVUxMOworICAgIHBy
aXYtPnVzZXIgPSBOVUxMOworICAgIHByaXYtPnBhc3N3b3JkID0gTlVMTDsKK30KKworV2ViS2l0
V2ViQXV0aENoYWxsZW5nZSogd2Via2l0X3dlYl9hdXRoX2NoYWxsZW5nZV9uZXcoKQoreworICAg
IFdlYktpdFdlYkF1dGhDaGFsbGVuZ2UqIGNoYWxsZW5nZSA9IFdFQktJVF9XRUJfQVVUSF9DSEFM
TEVOR0UoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9BVVRIX0NIQUxMRU5HRSwgTlVMTCkp
OworCisgICAgcmV0dXJuIGNoYWxsZW5nZTsKK30KKwordm9pZCB3ZWJraXRfd2ViX2F1dGhfY2hh
bGxlbmdlX3NldF91c2VyKFdlYktpdFdlYkF1dGhDaGFsbGVuZ2UqIGNoYWxsZW5nZSwgY29uc3Qg
Z2NoYXIqIHVzZXIpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX0FVVEhf
Q0hBTExFTkdFKGNoYWxsZW5nZSkpOworICAgIGdfcmV0dXJuX2lmX2ZhaWwodXNlcik7CisKKyAg
ICBXZWJLaXRXZWJBdXRoQ2hhbGxlbmdlUHJpdmF0ZSogcHJpdiA9IGNoYWxsZW5nZS0+cHJpdjsK
KworICAgIGdfZnJlZShwcml2LT51c2VyKTsKKyAgICBwcml2LT51c2VyID0gZ19zdHJkdXAodXNl
cik7Cit9CisKK2NvbnN0IGdjaGFyKiB3ZWJraXRfd2ViX2F1dGhfY2hhbGxlbmdlX2dldF91c2Vy
KFdlYktpdFdlYkF1dGhDaGFsbGVuZ2UqIGNoYWxsZW5nZSkKK3sKKyAgICBnX3JldHVybl92YWxf
aWZfZmFpbChXRUJLSVRfSVNfV0VCX0FVVEhfQ0hBTExFTkdFKGNoYWxsZW5nZSksIE5VTEwpOwor
CisgICAgV2ViS2l0V2ViQXV0aENoYWxsZW5nZVByaXZhdGUqIHByaXYgPSBjaGFsbGVuZ2UtPnBy
aXY7CisKKyAgICByZXR1cm4gcHJpdi0+dXNlcjsKK30KKwordm9pZCB3ZWJraXRfd2ViX2F1dGhf
Y2hhbGxlbmdlX3NldF9wYXNzd29yZChXZWJLaXRXZWJBdXRoQ2hhbGxlbmdlKiBjaGFsbGVuZ2Us
IGNvbnN0IGdjaGFyKiBwYXNzd29yZCkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9J
U19XRUJfQVVUSF9DSEFMTEVOR0UoY2hhbGxlbmdlKSk7CisgICAgZ19yZXR1cm5faWZfZmFpbChw
YXNzd29yZCk7CisKKyAgICBXZWJLaXRXZWJBdXRoQ2hhbGxlbmdlUHJpdmF0ZSogcHJpdiA9IGNo
YWxsZW5nZS0+cHJpdjsKKworICAgIGdfZnJlZShwcml2LT5wYXNzd29yZCk7CisgICAgcHJpdi0+
cGFzc3dvcmQgPSBnX3N0cmR1cChwYXNzd29yZCk7Cit9CisKK2NvbnN0IGdjaGFyKiB3ZWJraXRf
d2ViX2F1dGhfY2hhbGxlbmdlX2dldF9wYXNzd29yZChXZWJLaXRXZWJBdXRoQ2hhbGxlbmdlKiBj
aGFsbGVuZ2UpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9BVVRI
X0NIQUxMRU5HRShjaGFsbGVuZ2UpLCBOVUxMKTsKKworICAgIFdlYktpdFdlYkF1dGhDaGFsbGVu
Z2VQcml2YXRlKiBwcml2ID0gY2hhbGxlbmdlLT5wcml2OworCisgICAgcmV0dXJuIHByaXYtPnBh
c3N3b3JkOworfQorCit2b2lkIHdlYmtpdF93ZWJfYXV0aF9jaGFsbGVuZ2VfdXNlX2NyZWRlbnRp
YWwoV2ViS2l0V2ViQXV0aENoYWxsZW5nZSogY2hhbGxlbmdlKQoreworICAgIGdfcmV0dXJuX2lm
X2ZhaWwoV0VCS0lUX0lTX1dFQl9BVVRIX0NIQUxMRU5HRShjaGFsbGVuZ2UpKTsKKworICAgIFdl
YktpdFdlYkF1dGhDaGFsbGVuZ2VQcml2YXRlKiBwcml2ID0gY2hhbGxlbmdlLT5wcml2OworCisg
ICAgQ3JlZGVudGlhbCBjcmVkZW50aWFsID0gQ3JlZGVudGlhbChTdHJpbmc6OmZyb21VVEY4KHBy
aXYtPnVzZXIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5n
Ojpmcm9tVVRGOChwcml2LT5wYXNzd29yZCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBDcmVkZW50aWFsUGVyc2lzdGVuY2VGb3JTZXNzaW9uKTsKKyAgICBwcml2LT53
ZWJIYW5kbGUtPnJlY2VpdmVkQ3JlZGVudGlhbCgqcHJpdi0+d2ViQ2hhbGxlbmdlLCBjcmVkZW50
aWFsKTsKK30KKwordm9pZCB3ZWJraXRfd2ViX2F1dGhfY2hhbGxlbmdlX2NvbnRpbnVlX3dpdGhv
dXRfY3JlZGVudGlhbChXZWJLaXRXZWJBdXRoQ2hhbGxlbmdlKiBjaGFsbGVuZ2UpCit7CisgICAg
Z19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX0FVVEhfQ0hBTExFTkdFKGNoYWxsZW5nZSkp
OworCisgICAgV2ViS2l0V2ViQXV0aENoYWxsZW5nZVByaXZhdGUqIHByaXYgPSBjaGFsbGVuZ2Ut
PnByaXY7CisgICAgcHJpdi0+d2ViSGFuZGxlLT5yZWNlaXZlZFJlcXVlc3RUb0NvbnRpbnVlV2l0
aG91dENyZWRlbnRpYWwoKnByaXYtPndlYkNoYWxsZW5nZSk7Cit9CisKK3ZvaWQgd2Via2l0X3dl
Yl9hdXRoX2NoYWxsZW5nZV9jYW5jZWwoV2ViS2l0V2ViQXV0aENoYWxsZW5nZSogY2hhbGxlbmdl
KQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9BVVRIX0NIQUxMRU5HRShj
aGFsbGVuZ2UpKTsKKworICAgIFdlYktpdFdlYkF1dGhDaGFsbGVuZ2VQcml2YXRlKiBwcml2ID0g
Y2hhbGxlbmdlLT5wcml2OworICAgIHByaXYtPndlYkhhbmRsZS0+cmVjZWl2ZWRDYW5jZWxsYXRp
b24oKnByaXYtPndlYkNoYWxsZW5nZSk7Cit9CisKK30KSW5kZXg6IFdlYktpdC9ndGsvd2Via2l0
L3dlYmtpdHdlYmF1dGhjaGFsbGVuZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXR3ZWJhdXRoY2hhbGxlbmdlLmgJKHJldmlzaW9uIDApCisrKyBXZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXR3ZWJhdXRoY2hhbGxlbmdlLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzcg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggTHVjYSBCcnVubworICoKKyAqIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAq
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
CisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNl
ZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
CisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIFdFQktJVF9X
RUJfQVVUSF9DSEFMTEVOR0VfSAorI2RlZmluZSBXRUJLSVRfV0VCX0FVVEhfQ0hBTExFTkdFX0gK
KworI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CisKKyNpbmNsdWRlICJ3ZWJraXRkZWZpbmVzLmgi
CisKK0dfQkVHSU5fREVDTFMKKworI2RlZmluZSBXRUJLSVRfVFlQRV9XRUJfQVVUSF9DSEFMTEVO
R0UgICAgICAgICAgICAod2Via2l0X3dlYl9hdXRoX2NoYWxsZW5nZV9nZXRfdHlwZSgpKQorI2Rl
ZmluZSBXRUJLSVRfV0VCX0FVVEhfQ0hBTExFTkdFKG9iaikgICAgICAgICAgICAgKEdfVFlQRV9D
SEVDS19JTlNUQU5DRV9DQVNUKChvYmopLCBXRUJLSVRfVFlQRV9XRUJfQVVUSF9DSEFMTEVOR0Us
IFdlYktpdFdlYkF1dGhDaGFsbGVuZ2UpKQorI2RlZmluZSBXRUJLSVRfV0VCX0FVVEhfQ0hBTExF
TkdFX0NMQVNTKGtsYXNzKSAgICAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUKChrbGFzcyksICBX
RUJLSVRfVFlQRV9XRUJfQVVUSF9DSEFMTEVOR0UsIFdlYktpdFdlYkF1dGhDaGFsbGVuZ2VDbGFz
cykpCisjZGVmaW5lIFdFQktJVF9JU19XRUJfQVVUSF9DSEFMTEVOR0Uob2JqKSAgICAgICAgIChH
X1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2JqKSwgV0VCS0lUX1RZUEVfV0VCX0FVVEhfQ0hB
TExFTkdFKSkKKyNkZWZpbmUgV0VCS0lUX0lTX1dFQl9BVVRIX0NIQUxMRU5HRV9DTEFTUyhrbGFz
cykgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyksICBXRUJLSVRfVFlQRV9XRUJfQVVU
SF9DSEFMTEVOR0UpKQorI2RlZmluZSBXRUJLSVRfV0VCX0FVVEhfQ0hBTExFTkdFX0dFVF9DTEFT
UyhvYmopICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygob2JqKSwgIFdFQktJVF9UWVBFX1dF
Ql9BVVRIX0NIQUxMRU5HRSwgV2ViS2l0V2ViQXV0aENoYWxsZW5nZUNsYXNzKSkKKwordHlwZWRl
ZiBzdHJ1Y3QgX1dlYktpdFdlYkF1dGhDaGFsbGVuZ2VQcml2YXRlIFdlYktpdFdlYkF1dGhDaGFs
bGVuZ2VQcml2YXRlOworCitzdHJ1Y3QgX1dlYktpdFdlYkF1dGhDaGFsbGVuZ2UgeworICAgIEdP
YmplY3QgcGFyZW50OworCisgICAgV2ViS2l0V2ViQXV0aENoYWxsZW5nZVByaXZhdGUqIHByaXY7
Cit9OworCitzdHJ1Y3QgX1dlYktpdFdlYkF1dGhDaGFsbGVuZ2VDbGFzcyB7CisgICAgR09iamVj
dENsYXNzIHBhcmVudDsKK307CisKK1dFQktJVF9BUEkgR1R5cGUKK3dlYmtpdF93ZWJfYXV0aF9j
aGFsbGVuZ2VfZ2V0X3R5cGUgKHZvaWQpOworCitXRUJLSVRfQVBJIFdlYktpdFdlYkF1dGhDaGFs
bGVuZ2UqCit3ZWJraXRfd2ViX2F1dGhfY2hhbGxlbmdlX25ldyAoKTsKKworV0VCS0lUX0FQSSB2
b2lkCit3ZWJraXRfd2ViX2F1dGhfY2hhbGxlbmdlX3NldF91c2VyIChXZWJLaXRXZWJBdXRoQ2hh
bGxlbmdlKiBjaGFsbGVuZ2UsIGNvbnN0IGdjaGFyKiB1c2VyKTsKKworV0VCS0lUX0FQSSBjb25z
dCBnY2hhcioKK3dlYmtpdF93ZWJfYXV0aF9jaGFsbGVuZ2VfZ2V0X3VzZXIgKFdlYktpdFdlYkF1
dGhDaGFsbGVuZ2UqIGNoYWxsZW5nZSk7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3dlYl9h
dXRoX2NoYWxsZW5nZV9zZXRfcGFzc3dvcmQgKFdlYktpdFdlYkF1dGhDaGFsbGVuZ2UqIGNoYWxs
ZW5nZSwgY29uc3QgZ2NoYXIqIHBhc3N3b3JkKTsKKworV0VCS0lUX0FQSSBjb25zdCBnY2hhcioK
K3dlYmtpdF93ZWJfYXV0aF9jaGFsbGVuZ2VfZ2V0X3Bhc3N3b3JkIChXZWJLaXRXZWJBdXRoQ2hh
bGxlbmdlKiBjaGFsbGVuZ2UpOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF93ZWJfYXV0aF9j
aGFsbGVuZ2VfdXNlX2NyZWRlbnRpYWwgKFdlYktpdFdlYkF1dGhDaGFsbGVuZ2UqIGNoYWxsZW5n
ZSk7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3dlYl9hdXRoX2NoYWxsZW5nZV9jb250aW51
ZV93aXRob3V0X2NyZWRlbnRpYWwgKFdlYktpdFdlYkF1dGhDaGFsbGVuZ2UqIGNoYWxsZW5nZSk7
CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3dlYl9hdXRoX2NoYWxsZW5nZV9jYW5jZWwgKFdl
YktpdFdlYkF1dGhDaGFsbGVuZ2UqIGNoYWxsZW5nZSk7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRp
ZgpJbmRleDogV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAJKHJldmlzaW9uIDMwMzQwKQor
KysgV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTg1LDYgKzg1LDcgQEAgZW51bSB7CiAgICAgQ09QWV9DTElQQk9BUkQsCiAgICAgUEFTVEVfQ0xJ
UEJPQVJELAogICAgIENVVF9DTElQQk9BUkQsCisgICAgQVVUSEVOVElDQVRJT05fUkVRVUVTVEVE
LAogICAgIExBU1RfU0lHTkFMCiB9OwogCkBAIC0zNzksNyArMzgwLDcgQEAgc3RhdGljIGdib29s
ZWFuIHdlYmtpdF93ZWJfdmlld19mb2N1c19pbgogICAgIEd0a1dpZGdldCogdG9wbGV2ZWwgPSBn
dGtfd2lkZ2V0X2dldF90b3BsZXZlbCh3aWRnZXQpOwogICAgIGlmIChHVEtfV0lER0VUX1RPUExF
VkVMKHRvcGxldmVsKSAmJiBndGtfd2luZG93X2hhc190b3BsZXZlbF9mb2N1cyhHVEtfV0lORE9X
KHRvcGxldmVsKSkpIHsKICAgICAgICAgV2ViS2l0V2ViVmlldyogd2ViVmlldyA9IFdFQktJVF9X
RUJfVklFVyh3aWRnZXQpOwotCisgICAgICAgIAogICAgICAgICBGcmFtZSogZnJhbWUgPSBjb3Jl
KHdlYlZpZXcpLT5tYWluRnJhbWUoKTsKICAgICAgICAgY29yZSh3ZWJWaWV3KS0+Zm9jdXNDb250
cm9sbGVyKCktPnNldEFjdGl2ZShmcmFtZSk7CiAgICAgfQpAQCAtNjA1LDYgKzYwNiw4MiBAQCBz
dGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9wYXN0ZV9jCiAgICAgZnJhbWUtPmVkaXRv
cigpLT5jb21tYW5kKCJQYXN0ZSIpLmV4ZWN1dGUoKTsKIH0KIAordHlwZWRlZiBzdHJ1Y3QKK3sK
KyAgICBHdGtXaWRnZXQqIHVzZXJfZW50cnk7CisgICAgR3RrV2lkZ2V0KiBwYXNzd29yZF9lbnRy
eTsKKyAgICBXZWJLaXRXZWJBdXRoQ2hhbGxlbmdlKiBjaGFsbGVuZ2U7Cit9IEF1dGhEaWFsb2dE
YXRhOworCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfd2ViX2F1dGhfZGlhbG9nX3Jlc3Bv
bnNlX2NiKEd0a1dpZGdldCogZGlhbG9nLCBnaW50IHJlc3BvbnNlLCBncG9pbnRlciB1c2VyX2Rh
dGEpCit7CisgICAgQXV0aERpYWxvZ0RhdGEqIGRhdGEgPSByZWludGVycHJldF9jYXN0PEF1dGhE
aWFsb2dEYXRhKj4odXNlcl9kYXRhKTsKKworICAgIHN3aXRjaCAocmVzcG9uc2UpIHsKKyAgICBj
YXNlIEdUS19SRVNQT05TRV9OT05FOgorICAgIGNhc2UgR1RLX1JFU1BPTlNFX0RFTEVURV9FVkVO
VDoKKyAgICBjYXNlIEdUS19SRVNQT05TRV9SRUpFQ1Q6CisgICAgICAgIHdlYmtpdF93ZWJfYXV0
aF9jaGFsbGVuZ2VfY29udGludWVfd2l0aG91dF9jcmVkZW50aWFsKGRhdGEtPmNoYWxsZW5nZSk7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgR1RLX1JFU1BPTlNFX0FDQ0VQVDoKKyAgICAgICAg
d2Via2l0X3dlYl9hdXRoX2NoYWxsZW5nZV9zZXRfdXNlcihkYXRhLT5jaGFsbGVuZ2UsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3RrX2VudHJ5X2dl
dF90ZXh0KEdUS19FTlRSWShkYXRhLT51c2VyX2VudHJ5KSkpOworICAgICAgICB3ZWJraXRfd2Vi
X2F1dGhfY2hhbGxlbmdlX3NldF9wYXNzd29yZChkYXRhLT5jaGFsbGVuZ2UsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd0a19lbnRyeV9nZXRf
dGV4dChHVEtfRU5UUlkoZGF0YS0+cGFzc3dvcmRfZW50cnkpKSk7CisgICAgICAgIHdlYmtpdF93
ZWJfYXV0aF9jaGFsbGVuZ2VfdXNlX2NyZWRlbnRpYWwoZGF0YS0+Y2hhbGxlbmdlKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgZ19hc3NlcnRfbm90X3JlYWNoZWQgKCk7
CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGd0a193aWRnZXRfZGVzdHJveShkaWFsb2cp
OworICAgIGdfb2JqZWN0X3VucmVmKGRhdGEtPmNoYWxsZW5nZSk7Cit9CisKK3N0YXRpYyB2b2lk
IHdlYmtpdF93ZWJfdmlld19yZWFsX2F1dGhlbnRpY2F0aW9uX3JlcXVlc3RlZChXZWJLaXRXZWJW
aWV3KiB3ZWJWaWV3LCBXZWJLaXRXZWJGcmFtZSogd2ViRnJhbWUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0V2ViQXV0aENo
YWxsZW5nZSogY2hhbGxlbmdlKQoreworICAgIEd0a1dpZGdldCogd2luZG93OworICAgIEd0a1dp
ZGdldCogZGlhbG9nOworICAgIEd0a1dpZGdldCogdGFibGU7CisgICAgR3RrV2lkZ2V0KiBsYWJl
bDsKKyAgICBBdXRoRGlhbG9nRGF0YSogZGF0YTsKKworICAgIHdpbmRvdyA9IGd0a193aWRnZXRf
Z2V0X3RvcGxldmVsKEdUS19XSURHRVQod2ViVmlldykpOworICAgIGdjaGFyKiB0aXRsZSA9IGdf
c3RyY29uY2F0KCJBdXRoZW50aWNhdGlvbiAtICIsIHdlYmtpdF93ZWJfZnJhbWVfZ2V0X3VyaSh3
ZWJGcmFtZSksIE5VTEwpOworICAgIGRpYWxvZyA9IGd0a19kaWFsb2dfbmV3X3dpdGhfYnV0dG9u
cyh0aXRsZSwgR1RLX1dJREdFVF9UT1BMRVZFTCh3aW5kb3cpID8gR1RLX1dJTkRPVyh3aW5kb3cp
IDogMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEd0a0RpYWxv
Z0ZsYWdzKShHVEtfRElBTE9HX01PREFMIHwgR1RLX0RJQUxPR19ERVNUUk9ZX1dJVEhfUEFSRU5U
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1RLX1NUT0NLX09L
LCBHVEtfUkVTUE9OU0VfQUNDRVBULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHVEtfU1RPQ0tfQ0FOQ0VMLCBHVEtfUkVTUE9OU0VfUkVKRUNULAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKyAgICBnX2ZyZWUodGl0bGUp
OworICAgIGd0a19kaWFsb2dfc2V0X2RlZmF1bHRfcmVzcG9uc2UoR1RLX0RJQUxPRyhkaWFsb2cp
LCBHVEtfUkVTUE9OU0VfUkVKRUNUKTsKKworICAgIGRhdGEgPSBnX25ldyhBdXRoRGlhbG9nRGF0
YSwgMSk7CisgICAgZGF0YS0+dXNlcl9lbnRyeSA9IGd0a19lbnRyeV9uZXcoKTsKKyAgICBkYXRh
LT5wYXNzd29yZF9lbnRyeSA9IGd0a19lbnRyeV9uZXcoKTsKKyAgICBndGtfZW50cnlfc2V0X3Zp
c2liaWxpdHkoR1RLX0VOVFJZKGRhdGEtPnBhc3N3b3JkX2VudHJ5KSwgRkFMU0UpOworICAgIGRh
dGEtPmNoYWxsZW5nZSA9IGNoYWxsZW5nZTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KGRpYWxvZywg
InJlc3BvbnNlIiwgR19DQUxMQkFDSyh3ZWJraXRfd2ViX3ZpZXdfd2ViX2F1dGhfZGlhbG9nX3Jl
c3BvbnNlX2NiKSwgZGF0YSk7CisKKyAgICB0YWJsZSA9IGd0a190YWJsZV9uZXcoMiwgMiwgRkFM
U0UpOworICAgIGd0a190YWJsZV9zZXRfY29sX3NwYWNpbmdzKEdUS19UQUJMRSh0YWJsZSksIDMp
OworICAgIGd0a190YWJsZV9zZXRfcm93X3NwYWNpbmdzKEdUS19UQUJMRSh0YWJsZSksIDMpOwor
CisgICAgbGFiZWwgPSBndGtfbGFiZWxfbmV3KCJVc2VybmFtZToiKTsKKyAgICBndGtfdGFibGVf
YXR0YWNoX2RlZmF1bHRzKEdUS19UQUJMRSh0YWJsZSksIGxhYmVsLCAwLCAxLCAwLCAxKTsKKyAg
ICBndGtfdGFibGVfYXR0YWNoX2RlZmF1bHRzKEdUS19UQUJMRSh0YWJsZSksIGRhdGEtPnVzZXJf
ZW50cnksIDEsIDIsIDAsIDEpOworCisgICAgbGFiZWwgPSBndGtfbGFiZWxfbmV3KCJQYXNzd29y
ZDoiKTsKKyAgICBndGtfdGFibGVfYXR0YWNoX2RlZmF1bHRzKEdUS19UQUJMRSh0YWJsZSksIGxh
YmVsLCAwLCAxLCAxLCAyKTsKKyAgICBndGtfdGFibGVfYXR0YWNoX2RlZmF1bHRzKEdUS19UQUJM
RSh0YWJsZSksIGRhdGEtPnBhc3N3b3JkX2VudHJ5LCAxLCAyLCAxLCAyKTsKKworICAgIGd0a19j
b250YWluZXJfYWRkKEdUS19DT05UQUlORVIoR1RLX0RJQUxPRyhkaWFsb2cpLT52Ym94KSwgdGFi
bGUpOworICAgIGd0a193aWRnZXRfc2hvd19hbGwodGFibGUpOworICAgIGd0a193aWRnZXRfc2hv
dyhkaWFsb2cpOworfQorCiBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfZmluYWxpemUoR09i
amVjdCogb2JqZWN0KQogewogICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSBXRUJLSVRfV0VC
X1ZJRVcob2JqZWN0KTsKQEAgLTk3MSw2ICsxMDQ4LDI1IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93
ZWJfdmlld19jbGFzc19pbml0KFcKICAgICAgICAgICAgIGdfY2Nsb3N1cmVfbWFyc2hhbF9WT0lE
X19WT0lELAogICAgICAgICAgICAgR19UWVBFX05PTkUsIDApOwogCisgICAgLyoqCisgICAgICog
V2ViS2l0V2ViVmlldzo6YXV0aGVudGljYXRpb24tcmVxdWVzdGVkOgorICAgICAqIEB3ZWJfdmll
dzogdGhlIG9iamVjdCB3aGljaCByZWNlaXZlZCB0aGUgc2lnbmFsCisgICAgICoKKyAgICAgKiBU
aGUgOjphdXRoZW50aWNhdGlvbi1yZXF1ZXN0ZWQgc2lnbmFsIGlzIGVtaXR0ZWQgd2hlbiBhbiBh
dXRoZW50aWNhdGlvbiBpcworICAgICAqIHJlcXVlc3RlZCBmcm9tIHRoZSBzZXJ2ZXIgdG8gYWNj
ZXNzIGEgcmVzb3VyY2UuCisgICAgICoKKyAgICAgKiBUaGUgZGVmYXVsdCBiZWhhdmlvciBmb3Ig
dGhpcyBzaWduYWwgaXMgY3JlYXRpbmcgYW4gaW5wdXQgZGlhbG9nIHRvIGdldCBhIHN1aXRhYmxl
IGNyZWRlbnRpYWwuCisgICAgICovCisgICAgd2Via2l0X3dlYl92aWV3X3NpZ25hbHNbQVVUSEVO
VElDQVRJT05fUkVRVUVTVEVEXSA9IGdfc2lnbmFsX25ldygiYXV0aGVudGljYXRpb24tcmVxdWVz
dGVkIiwKKyAgICAgICAgICAgIEdfVFlQRV9GUk9NX0NMQVNTKHdlYlZpZXdDbGFzcyksCisgICAg
ICAgICAgICAoR1NpZ25hbEZsYWdzKShHX1NJR05BTF9SVU5fTEFTVCB8IEdfU0lHTkFMX0FDVElP
TiksCisgICAgICAgICAgICBHX1NUUlVDVF9PRkZTRVQoV2ViS2l0V2ViVmlld0NsYXNzLCBhdXRo
ZW50aWNhdGlvbl9yZXF1ZXN0ZWQpLAorICAgICAgICAgICAgTlVMTCwgTlVMTCwKKyAgICAgICAg
ICAgIHdlYmtpdF9tYXJzaGFsX1ZPSURfX09CSkVDVF9PQkpFQ1QsCisgICAgICAgICAgICBHX1RZ
UEVfTk9ORSwgMiwKKyAgICAgICAgICAgIFdFQktJVF9UWVBFX1dFQl9GUkFNRSwKKyAgICAgICAg
ICAgIFdFQktJVF9UWVBFX1dFQl9BVVRIX0NIQUxMRU5HRSk7CisKICAgICAvKgogICAgICAqIGlt
cGxlbWVudGF0aW9ucyBvZiB2aXJ0dWFsIG1ldGhvZHMKICAgICAgKi8KQEAgLTk4Niw2ICsxMDgy
LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2NsYXNzX2luaXQoVwogICAgIHdlYlZp
ZXdDbGFzcy0+Y3V0X2NsaXBib2FyZCA9IHdlYmtpdF93ZWJfdmlld19yZWFsX2N1dF9jbGlwYm9h
cmQ7CiAgICAgd2ViVmlld0NsYXNzLT5jb3B5X2NsaXBib2FyZCA9IHdlYmtpdF93ZWJfdmlld19y
ZWFsX2NvcHlfY2xpcGJvYXJkOwogICAgIHdlYlZpZXdDbGFzcy0+cGFzdGVfY2xpcGJvYXJkID0g
d2Via2l0X3dlYl92aWV3X3JlYWxfcGFzdGVfY2xpcGJvYXJkOworICAgIHdlYlZpZXdDbGFzcy0+
YXV0aGVudGljYXRpb25fcmVxdWVzdGVkID0gd2Via2l0X3dlYl92aWV3X3JlYWxfYXV0aGVudGlj
YXRpb25fcmVxdWVzdGVkOwogCiAgICAgR09iamVjdENsYXNzKiBvYmplY3RDbGFzcyA9IEdfT0JK
RUNUX0NMQVNTKHdlYlZpZXdDbGFzcyk7CiAgICAgb2JqZWN0Q2xhc3MtPmZpbmFsaXplID0gd2Vi
a2l0X3dlYl92aWV3X2ZpbmFsaXplOwpJbmRleDogV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vi
dmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuaAko
cmV2aXNpb24gMzAzNDApCisrKyBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmgJKHdv
cmtpbmcgY29weSkKQEAgLTgzLDYgKzgzLDcgQEAgc3RydWN0IF9XZWJLaXRXZWJWaWV3Q2xhc3Mg
ewogICAgIHZvaWQgKCpjdXRfY2xpcGJvYXJkKSAoV2ViS2l0V2ViVmlldyogd2ViX3ZpZXcpOwog
ICAgIHZvaWQgKCpjb3B5X2NsaXBib2FyZCkgKFdlYktpdFdlYlZpZXcqIHdlYl92aWV3KTsKICAg
ICB2b2lkICgqcGFzdGVfY2xpcGJvYXJkKSAoV2ViS2l0V2ViVmlldyogd2ViX3ZpZXcpOworICAg
IHZvaWQgKCphdXRoZW50aWNhdGlvbl9yZXF1ZXN0ZWQpIChXZWJLaXRXZWJWaWV3KiB3ZWJfdmll
dywgV2ViS2l0V2ViRnJhbWUqIHdlYl9mcmFtZSwgV2ViS2l0V2ViQXV0aENoYWxsZW5nZSogd2Vi
X2F1dGhfY2hhbGxlbmdlKTsKIAogICAgIC8qCiAgICAgICogaW50ZXJuYWwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>19279</attachid>
            <date>2008-02-22 06:53:43 -0800</date>
            <delta_ts>2008-02-23 12:41:04 -0800</delta_ts>
            <desc>add comments</desc>
            <filename>auth.patch</filename>
            <type>text/plain</type>
            <size>30631</size>
            <attacher name="Luca Bruno">lethalman88</attacher>
            
              <data encoding="base64">SW5kZXg6IEdOVW1ha2VmaWxlLmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEdOVW1ha2VmaWxlLmFtCShyZXZp
c2lvbiAzMDQ3NSkKKysrIEdOVW1ha2VmaWxlLmFtCSh3b3JraW5nIGNvcHkpCkBAIC0yNTEsNiAr
MjUxLDcgQEAgd2Via2l0Z3RrX2hfYXBpICs9IFwKIAlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXQu
aCBcCiAJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0ZGVmaW5lcy5oIFwKIAlXZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXRuZXR3b3JrcmVxdWVzdC5oIFwKKwlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3
ZWJhdXRoY2hhbGxlbmdlLmggXAogCVdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmJhY2tmb3J3
YXJkbGlzdC5oIFwKIAlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJmcmFtZS5oIFwKIAlXZWJL
aXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJoaXN0b3J5aXRlbS5oIFwKQEAgLTI3NCw2ICsyNzUsNyBA
QCB3ZWJraXRndGtfaGVhZGVycyArPSBcCiB3ZWJraXRndGtfc291cmNlcyArPSBcCiAJV2ViS2l0
L2d0ay93ZWJraXQvd2Via2l0bmV0d29ya3JlcXVlc3QuY3BwIFwKIAlXZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXRwcml2YXRlLmNwcCBcCisJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViYXV0aGNo
YWxsZW5nZS5jcHAgXAogCVdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmJhY2tmb3J3YXJkbGlz
dC5jcHAgXAogCVdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmZyYW1lLmNwcCBcCiAJV2ViS2l0
L2d0ay93ZWJraXQvd2Via2l0d2ViaGlzdG9yeWl0ZW0uY3BwIFwKSW5kZXg6IFdlYkNvcmUvV2Vi
Q29yZS5wcm8KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnBybwkocmV2aXNpb24gMzA0
NzUpCisrKyBXZWJDb3JlL1dlYkNvcmUucHJvCSh3b3JraW5nIGNvcHkpCkBAIC05OTUsNiArOTk1
LDcgQEAgZ3RrLXBvcnQgewogICAgICAgICAuLi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRkZWZp
bmVzLmggXAogICAgICAgICAuLi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRuZXR3b3JrcmVxdWVz
dC5oIFwKICAgICAgICAgLi4vV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5oIFwKKyAg
ICAgICAgLi4vV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViYXV0aGNoYWxsZW5nZS5oIFwKICAg
ICAgICAgLi4vV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViYmFja2ZvcndhcmRsaXN0LmggXAog
ICAgICAgICAuLi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJmcmFtZS5oIFwKICAgICAgICAg
Li4vV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViaGlzdG9yeWl0ZW0uaCBcCkBAIC0xMDc1LDYg
KzEwNzYsNyBAQCBndGstcG9ydCB7CiAgICAgICAgIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3hi
bS9YQk1JbWFnZURlY29kZXIuY3BwIFwKICAgICAgICAgLi4vV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0bmV0d29ya3JlcXVlc3QuY3BwIFwKICAgICAgICAgLi4vV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0cHJpdmF0ZS5jcHAgXAorICAgICAgICAuLi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJh
dXRoY2hhbGxlbmdlLmNwcCBcCiAgICAgICAgIC4uL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdl
YmJhY2tmb3J3YXJkbGlzdC5jcHAgXAogICAgICAgICAuLi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJr
aXR3ZWJmcmFtZS5jcHAgXAogICAgICAgICAuLi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJo
aXN0b3J5aXRlbS5jcHAgXApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
SGFuZGxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
SGFuZGxlLmgJKHJldmlzaW9uIDMwNDc1KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlSGFuZGxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTk3LDcgKzk3LDcgQEAgcHVibGljOgog
ICAgIAogICAgIH5SZXNvdXJjZUhhbmRsZSgpOwogCi0jaWYgUExBVEZPUk0oTUFDKSB8fCBVU0Uo
Q0ZORVRXT1JLKQorI2lmIFBMQVRGT1JNKE1BQykgfHwgVVNFKENGTkVUV09SSykgfHwgVVNFKENV
UkwpCiAgICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3QgQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UmKTsKICAgICB2b2lkIHJlY2VpdmVkQ3JlZGVudGlhbChjb25z
dCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIGNvbnN0IENyZWRlbnRpYWwmKTsKICAgICB2b2lk
IHJlY2VpdmVkUmVxdWVzdFRvQ29udGludWVXaXRob3V0Q3JlZGVudGlhbChjb25zdCBBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSYpOwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlSGFuZGxlSW50ZXJuYWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oCShyZXZpc2lvbiAzMDQ3NSkKKysrIFdlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEwMSw2ICsxMDEsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICAsIG1f
ZmlsZSgwKQogICAgICAgICAgICAgLCBtX2Zvcm1EYXRhRWxlbWVudEluZGV4KDApCiAgICAgICAg
ICAgICAsIG1fZm9ybURhdGFFbGVtZW50RGF0YU9mZnNldCgwKQorICAgICAgICAgICAgLCBtX3dl
YkNoYWxsZW5nZSgpCisgICAgICAgICAgICAsIG1fY29udGludWVXaXRob3V0Q3JlZGVudGlhbChm
YWxzZSkKICNlbmRpZgogI2lmIFBMQVRGT1JNKFFUKQogICAgICAgICAgICAgLCBtX2pvYigwKQpA
QCAtMTU5LDYgKzE2MSw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgc2l6ZV90IG1f
Zm9ybURhdGFFbGVtZW50SW5kZXg7CiAgICAgICAgIHNpemVfdCBtX2Zvcm1EYXRhRWxlbWVudERh
dGFPZmZzZXQ7CiAgICAgICAgIFZlY3RvcjxjaGFyPiBtX3Bvc3RCeXRlczsKKworICAgICAgICBB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSBtX3dlYkNoYWxsZW5nZTsKKyAgICAgICAgYm9vbCBtX2Nv
bnRpbnVlV2l0aG91dENyZWRlbnRpYWw7CiAjZW5kaWYKICNpZiBQTEFURk9STShRVCkKICNpZiBR
VF9WRVJTSU9OIDwgMHgwNDA0MDAKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L1Jlc291cmNlSGFuZGxlQ3VybC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcAkocmV2aXNpb24gMzA0NzUpCisrKyBX
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC05NSw0ICs5NSw2OSBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpsb2FkUmVz
b3VyY2VTeW5jaHJvCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAordm9pZCBSZXNvdXJjZUhh
bmRsZTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UpCit7CisgICAgLyogRklYTUU6IGFkZCBzdXBwb3J0IGZv
ciBGVFAsIEhUVFBTLCBhbmQgRlRQUyBhdXRoZW50aWNhdGlvbiwKKyAgICAgKiBnZXQgdGhlIHJp
Z2h0IHBvcnQsIHNlcnZlciBhbmQgYXV0aGVudGljYXRpb24gc2NoZW1lCisgICAgICovCisgICAg
UmVzb3VyY2VIYW5kbGVJbnRlcm5hbCogZCA9IGdldEludGVybmFsKCk7CisgICAgaWYgKGQtPm1f
Y29udGludWVXaXRob3V0Q3JlZGVudGlhbCkKKyAgICAgICAgcmV0dXJuOworICAgIGNhbmNlbCgp
OworCisgICAgUHJvdGVjdGlvblNwYWNlIHByb3RlY3Rpb25TcGFjZTsKKyAgICB1bnNpZ25lZCBw
cmV2aW91c0ZhaWx1cmVDb3VudCA9IDA7CisgICAgaWYgKGNoYWxsZW5nZS5pc051bGwoKSkgewor
ICAgICAgICBwcm90ZWN0aW9uU3BhY2UgPSBQcm90ZWN0aW9uU3BhY2UoZC0+bV9yZXNwb25zZS5o
dHRwSGVhZGVyRmllbGQoIkhvc3QiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
UHJvdGVjdGlvblNwYWNlU2VydmVySFRUUCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGQtPm1fcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkKCJSZWFsbSIpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvdGVjdGlvblNwYWNlQXV0
aGVudGljYXRpb25TY2hlbWVEZWZhdWx0KTsKKyAgICB9IGVsc2UgeworICAgICAgICBwcm90ZWN0
aW9uU3BhY2UgPSBkLT5tX3dlYkNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UoKTsKKyAgICAgICAg
cHJldmlvdXNGYWlsdXJlQ291bnQgPSBkLT5tX3dlYkNoYWxsZW5nZS5wcmV2aW91c0ZhaWx1cmVD
b3VudCgpKzE7CisgICAgfQorICAgIAorICAgIGQtPm1fd2ViQ2hhbGxlbmdlID0gQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UocHJvdGVjdGlvblNwYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY2hhbGxlbmdlLnByb3Bvc2VkQ3JlZGVudGlhbCgpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNG
YWlsdXJlQ291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBkLT5tX3Jlc3BvbnNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY2hhbGxlbmdlLmVycm9yKCkpOworCisgICAgaWYgKGQtPmNsaWVudCgpKQor
ICAgICAgICBkLT5jbGllbnQoKS0+ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHRo
aXMsIGQtPm1fd2ViQ2hhbGxlbmdlKTsKK30KKwordm9pZCBSZXNvdXJjZUhhbmRsZTo6cmVjZWl2
ZWRDcmVkZW50aWFsKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UsIGNv
bnN0IENyZWRlbnRpYWwmIGNyZWRlbnRpYWwpCit7CisgICAgQVNTRVJUKCFjaGFsbGVuZ2UuaXNO
dWxsKCkpOyAgIAorICAgIFJlc291cmNlSGFuZGxlSW50ZXJuYWwqIGQgPSBnZXRJbnRlcm5hbCgp
OworICAgIGlmIChjaGFsbGVuZ2UgIT0gZC0+bV93ZWJDaGFsbGVuZ2UpCisgICAgICAgIHJldHVy
bjsKKworICAgIGQtPm1fd2ViQ2hhbGxlbmdlID0gQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY2hh
bGxlbmdlLnByb3RlY3Rpb25TcGFjZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY3JlZGVudGlhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNoYWxsZW5nZS5wcmV2aW91c0ZhaWx1cmVDb3VudCgpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhbGxlbmdl
LmZhaWx1cmVSZXNwb25zZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY2hhbGxlbmdlLmVycm9yKCkpOworCisgICAgUmVzb3VyY2VIYW5kbGVNYW5h
Z2VyOjpzaGFyZWRJbnN0YW5jZSgpLT5hZGQodGhpcyk7Cit9CisKK3ZvaWQgUmVzb3VyY2VIYW5k
bGU6OnJlY2VpdmVkUmVxdWVzdFRvQ29udGludWVXaXRob3V0Q3JlZGVudGlhbChjb25zdCBBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlKQoreworICAgIEFTU0VSVCghY2hhbGxlbmdl
LmlzTnVsbCgpKTsgICAKKyAgICBSZXNvdXJjZUhhbmRsZUludGVybmFsKiBkID0gZ2V0SW50ZXJu
YWwoKTsKKyAgICBpZiAoY2hhbGxlbmdlICE9IGQtPm1fd2ViQ2hhbGxlbmdlKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBkLT5tX2NvbnRpbnVlV2l0aG91dENyZWRlbnRpYWwgPSB0cnVlOworICAg
IFJlc291cmNlSGFuZGxlTWFuYWdlcjo6c2hhcmVkSW5zdGFuY2UoKS0+YWRkKHRoaXMpOworfQor
Cit2b2lkIFJlc291cmNlSGFuZGxlOjpyZWNlaXZlZENhbmNlbGxhdGlvbihjb25zdCBBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL1Jlc291cmNlSGFuZGxlTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVNYW5hZ2VyLmNwcAkocmV2aXNpb24g
MzA0NzUpCisrKyBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZU1h
bmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzAsNiArMTcwLDEwIEBAIHN0YXRpYyBzaXpl
X3QgaGVhZGVyQ2FsbGJhY2soY2hhciogcHRyLCAKICAgICAgICAgZC0+bV9yZXNwb25zZS5zZXRU
ZXh0RW5jb2RpbmdOYW1lKGV4dHJhY3RDaGFyc2V0RnJvbU1lZGlhVHlwZShkLT5tX3Jlc3BvbnNl
Lmh0dHBIZWFkZXJGaWVsZCgiQ29udGVudC1UeXBlIikpKTsKICAgICAgICAgZC0+bV9yZXNwb25z
ZS5zZXRTdWdnZXN0ZWRGaWxlbmFtZShmaWxlbmFtZUZyb21IVFRQQ29udGVudERpc3Bvc2l0aW9u
KGQtPm1fcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkKCJDb250ZW50LURpc3Bvc2l0aW9uIikpKTsK
IAorICAgICAgICAvLyBIVFRQIGF1dGhlbnRpY2F0aW9uCisgICAgICAgIGlmIChodHRwQ29kZSA9
PSA0MDEgJiYgZC0+bV9yZXNwb25zZS5pc0hUVFAoKSkKKyAgICAgICAgICAgIGpvYi0+ZGlkUmVj
ZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGQtPm1fd2ViQ2hhbGxlbmdlKTsKKwogICAgICAg
ICAvLyBIVFRQIHJlZGlyZWN0aW9uCiAgICAgICAgIGlmIChodHRwQ29kZSA+PSAzMDAgJiYgaHR0
cENvZGUgPCA0MDApIHsKICAgICAgICAgICAgIFN0cmluZyBsb2NhdGlvbiA9IGQtPm1fcmVzcG9u
c2UuaHR0cEhlYWRlckZpZWxkKCJsb2NhdGlvbiIpOwpAQCAtNTU3LDYgKzU2MSw5IEBAIHZvaWQg
UmVzb3VyY2VIYW5kbGVNYW5hZ2VyOjpzdGFydEpvYihSZXMKICAgICB9CiAKICAgICBkLT5tX2hh
bmRsZSA9IGN1cmxfZWFzeV9pbml0KCk7CisgICAgLy8gSFRUUCBBdXRoZW50aWNhdGlvbiBjYW5j
ZWxzIHRoZSBqb2Igc28gYmUgc3VyZSB0aGUgbmV3IGpvYiBpcyBub3QgY2FuY2VsbGVkCisgICAg
ZC0+bV9jYW5jZWxsZWQgPSBmYWxzZTsgIAorCiAjaWZuZGVmIE5ERUJVRwogICAgIGlmIChnZXRl
bnYoIkRFQlVHX0NVUkwiKSkKICAgICAgICAgY3VybF9lYXN5X3NldG9wdChkLT5tX2hhbmRsZSwg
Q1VSTE9QVF9WRVJCT1NFLCAxKTsKQEAgLTU5MCw2ICs1OTcsMjMgQEAgdm9pZCBSZXNvdXJjZUhh
bmRsZU1hbmFnZXI6OnN0YXJ0Sm9iKFJlcwogICAgICAgICBjdXJsX2Vhc3lfc2V0b3B0KGQtPm1f
aGFuZGxlLCBDVVJMT1BUX0NPT0tJRUpBUiwgbV9jb29raWVKYXJGaWxlTmFtZSk7CiAgICAgfQog
CisgICAgaWYgKCFkLT5tX3dlYkNoYWxsZW5nZS5pc051bGwoKSAmJiAhZC0+bV9jb250aW51ZVdp
dGhvdXRDcmVkZW50aWFsKSB7CisgICAgICAgIGxvbmcgY3VybEF1dGg7CisgICAgICAgIHN3aXRj
aChkLT5tX3dlYkNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UoKS5hdXRoZW50aWNhdGlvblNjaGVt
ZSgpKSB7ICAgICAgICAgIAorICAgICAgICBjYXNlIFByb3RlY3Rpb25TcGFjZUF1dGhlbnRpY2F0
aW9uU2NoZW1lSFRUUEJhc2ljOgorICAgICAgICBjYXNlIFByb3RlY3Rpb25TcGFjZUF1dGhlbnRp
Y2F0aW9uU2NoZW1lRGVmYXVsdDoKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGN1cmxB
dXRoID0gQ1VSTEFVVEhfQkFTSUM7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisg
ICAgICAgIENyZWRlbnRpYWwgY3JlZGVudGlhbCA9IGQtPm1fd2ViQ2hhbGxlbmdlLnByb3Bvc2Vk
Q3JlZGVudGlhbCgpOworICAgICAgICBTdHJpbmcgdXNlcnB3ZCA9IGNyZWRlbnRpYWwudXNlcigp
ICsgIjoiICsgY3JlZGVudGlhbC5wYXNzd29yZCgpOworICAgICAgICAKKyAgICAgICAgY3VybF9l
YXN5X3NldG9wdChkLT5tX2hhbmRsZSwgQ1VSTE9QVF9IVFRQQVVUSCwgY3VybEF1dGgpOworICAg
ICAgICBjdXJsX2Vhc3lfc2V0b3B0KGQtPm1faGFuZGxlLCBDVVJMT1BUX1VTRVJQV0QsIHN0cmR1
cCh1c2VycHdkLnV0ZjgoKS5kYXRhKCkpKTsKKyAgICB9CisKICAgICBzdHJ1Y3QgY3VybF9zbGlz
dCogaGVhZGVycyA9IDA7CiAgICAgaWYgKGpvYi0+cmVxdWVzdCgpLmh0dHBIZWFkZXJGaWVsZHMo
KS5zaXplKCkgPiAwKSB7CiAgICAgICAgIEhUVFBIZWFkZXJNYXAgY3VzdG9tSGVhZGVycyA9IGpv
Yi0+cmVxdWVzdCgpLmh0dHBIZWFkZXJGaWVsZHMoKTsKSW5kZXg6IFdlYktpdC9ndGsvV2ViQ29y
ZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9n
dGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCShyZXZpc2lvbiAzMDQ3
NSkKKysrIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiSFRNTEZyYW1lT3du
ZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiTGFuZ3VhZ2Uu
aCIKKyNpbmNsdWRlICJNYWluUmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJNSU1FVHlwZVJl
Z2lzdHJ5LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJQbGF0Zm9y
bVN0cmluZy5oIgpAQCAtMzksNiArNDAsNyBAQAogI2luY2x1ZGUgImtqc19iaW5kaW5nLmgiCiAj
aW5jbHVkZSAia2pzX3Byb3h5LmgiCiAjaW5jbHVkZSAia2pzX3dpbmRvdy5oIgorI2luY2x1ZGUg
IndlYmtpdHdlYmF1dGhjaGFsbGVuZ2UuaCIKICNpbmNsdWRlICJ3ZWJraXR3ZWJ2aWV3LmgiCiAj
aW5jbHVkZSAid2Via2l0d2ViZnJhbWUuaCIKICNpbmNsdWRlICJ3ZWJraXRwcml2YXRlLmgiCkBA
IC0xNjUsOSArMTY3LDI0IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmNvbW1pdHRlZExvYWQo
RG8KICAgICBmbC0+YWRkRGF0YShkYXRhLCBsZW5ndGgpOwogfQogCi12b2lkIEZyYW1lTG9hZGVy
Q2xpZW50OjpkaXNwYXRjaERpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShEb2N1bWVu
dExvYWRlciosIHVuc2lnbmVkIGxvbmcgIGlkZW50aWZpZXIsIGNvbnN0IEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlJikKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVjZWl2ZUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciwgdW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgd2Vi
Q2hhbGxlbmdlKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgUmVzb3VyY2VIYW5kbGUq
IGhhbmRsZSA9IGRvY3VtZW50TG9hZGVyLT5tYWluUmVzb3VyY2VMb2FkZXIoKS0+aGFuZGxlKCk7
CisgICAgQVNTRVJUKGhhbmRsZSk7CisgICAgaWYgKCFoYW5kbGUpCisgICAgICAgIHJldHVybjsK
KyAgICAKKyAgICBXZWJLaXRXZWJBdXRoQ2hhbGxlbmdlKiBjaGFsbGVuZ2UgPSB3ZWJraXRfd2Vi
X2F1dGhfY2hhbGxlbmdlX25ldygpOworICAgIFdlYktpdFdlYkF1dGhDaGFsbGVuZ2VQcml2YXRl
KiBjaGFsbGVuZ2VQcml2YXRlID0gV0VCS0lUX1dFQl9BVVRIX0NIQUxMRU5HRV9HRVRfUFJJVkFU
RShjaGFsbGVuZ2UpOworICAgICpjaGFsbGVuZ2VQcml2YXRlLT53ZWJDaGFsbGVuZ2UgPSB3ZWJD
aGFsbGVuZ2U7CisgICAgY2hhbGxlbmdlUHJpdmF0ZS0+d2ViSGFuZGxlID0gaGFuZGxlOworICAg
IAorICAgIENyZWRlbnRpYWwgY3JlZGVudGlhbCA9IHdlYkNoYWxsZW5nZS5wcm9wb3NlZENyZWRl
bnRpYWwoKTsKKyAgICB3ZWJraXRfd2ViX2F1dGhfY2hhbGxlbmdlX3NldF91c2VyKGNoYWxsZW5n
ZSwgY3JlZGVudGlhbC51c2VyKCkudXRmOCgpLmRhdGEoKSk7CisgICAgd2Via2l0X3dlYl9hdXRo
X2NoYWxsZW5nZV9zZXRfcGFzc3dvcmQoY2hhbGxlbmdlLCBjcmVkZW50aWFsLnBhc3N3b3JkKCku
dXRmOCgpLmRhdGEoKSk7CisgICAgCisgICAgV2ViS2l0V2ViVmlldyogd2ViVmlldyA9IGdldFZp
ZXdGcm9tRnJhbWUobV9mcmFtZSk7CisgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKHdlYlZpZXcs
ICJhdXRoZW50aWNhdGlvbi1yZXF1ZXN0ZWQiLCBtX2ZyYW1lLCBjaGFsbGVuZ2UsIE5VTEwpOwog
fQogCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENhbmNlbEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyAgaWRlbnRpZmllciwg
Y29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKQpJbmRleDogV2ViS2l0L2d0ay93ZWJraXQv
d2Via2l0ZGVmaW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdGRl
ZmluZXMuaAkocmV2aXNpb24gMzA0NzUpCisrKyBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRkZWZp
bmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDYgKzQ2LDkgQEAgdHlwZWRlZiBzdHJ1Y3QgX1dl
YktpdE5ldHdvcmtSZXF1ZXN0Q2xhcwogdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYkJhY2tGb3J3
YXJkTGlzdCBXZWJLaXRXZWJCYWNrRm9yd2FyZExpc3Q7CiB0eXBlZGVmIHN0cnVjdCBfV2ViS2l0
V2ViQmFja0ZvcndhcmRMaXN0Q2xhc3MgV2ViS2l0V2ViQmFja0ZvcndhcmRMaXN0Q2xhc3M7CiAK
K3R5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJBdXRoQ2hhbGxlbmdlIFdlYktpdFdlYkF1dGhDaGFs
bGVuZ2U7Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViQXV0aENoYWxsZW5nZUNsYXNzIFdlYktp
dFdlYkF1dGhDaGFsbGVuZ2VDbGFzczsKKwogdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYkhpc3Rv
cnlJdGVtIFdlYktpdFdlYkhpc3RvcnlJdGVtOwogdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYkhp
c3RvcnlJdGVtQ2xhc3MgV2ViS2l0V2ViSGlzdG9yeUl0ZW1DbGFzczsKIApJbmRleDogV2ViS2l0
L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvd2Vi
a2l0L3dlYmtpdHByaXZhdGUuaAkocmV2aXNpb24gMzA0NzUpCisrKyBXZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXRwcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDEyICsyNywxNCBAQAogICov
CiAKICNpbmNsdWRlIDx3ZWJraXQvd2Via2l0ZGVmaW5lcy5oPgorI2luY2x1ZGUgPHdlYmtpdC93
ZWJraXR3ZWJhdXRoY2hhbGxlbmdlLmg+CiAjaW5jbHVkZSA8d2Via2l0L3dlYmtpdHdlYnZpZXcu
aD4KICNpbmNsdWRlIDx3ZWJraXQvd2Via2l0d2ViZnJhbWUuaD4KICNpbmNsdWRlIDx3ZWJraXQv
d2Via2l0d2Vic2V0dGluZ3MuaD4KICNpbmNsdWRlIDx3ZWJraXQvd2Via2l0bmV0d29ya3JlcXVl
c3QuaD4KICNpbmNsdWRlIDx3ZWJraXQvd2Via2l0d2ViYmFja2ZvcndhcmRsaXN0Lmg+CiAKKyNp
bmNsdWRlICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIgogI2luY2x1ZGUgIkJhY2tGb3J3YXJk
TGlzdC5oIgogI2luY2x1ZGUgIkhpc3RvcnlJdGVtLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIK
QEAgLTEwNSw2ICsxMDcsMTUgQEAgZXh0ZXJuICJDIiB7CiAgICAgc3RydWN0IF9XZWJLaXROZXR3
b3JrUmVxdWVzdFByaXZhdGUgewogICAgICAgICBnY2hhciogdXJpOwogICAgIH07CisgCisgICAg
I2RlZmluZSBXRUJLSVRfV0VCX0FVVEhfQ0hBTExFTkdFX0dFVF9QUklWQVRFKG9iaikgICAgKEdf
VFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURSgob2JqKSwgV0VCS0lUX1RZUEVfV0VCX0FVVEhfQ0hB
TExFTkdFLCBXZWJLaXRXZWJBdXRoQ2hhbGxlbmdlUHJpdmF0ZSkpCisgICAgdHlwZWRlZiBzdHJ1
Y3QgX1dlYktpdFdlYkF1dGhDaGFsbGVuZ2VQcml2YXRlIFdlYktpdFdlYkF1dGhDaGFsbGVuZ2VQ
cml2YXRlOworICAgIHN0cnVjdCBfV2ViS2l0V2ViQXV0aENoYWxsZW5nZVByaXZhdGUgeworICAg
ICAgICBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSogd2ViQ2hhbGxlbmdlOworICAg
ICAgICBXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSogd2ViSGFuZGxlOworICAgICAgICBnY2hhciog
dXNlcjsKKyAgICAgICAgZ2NoYXIqIHBhc3N3b3JkOworICAgIH07CiAKICAgICBXZWJLaXRXZWJG
cmFtZSoKICAgICB3ZWJraXRfd2ViX2ZyYW1lX2luaXRfd2l0aF93ZWJfdmlldyhXZWJLaXRXZWJW
aWV3KiwgV2ViQ29yZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50Kik7CkluZGV4OiBXZWJLaXQvZ3Rr
L3dlYmtpdC93ZWJraXR3ZWJhdXRoY2hhbGxlbmdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQv
Z3RrL3dlYmtpdC93ZWJraXR3ZWJhdXRoY2hhbGxlbmdlLmNwcAkocmV2aXNpb24gMCkKKysrIFdl
YktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmF1dGhjaGFsbGVuZ2UuY3BwCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDI1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBMdWNhIEJydW5vCisg
KgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICog
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwor
ICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIndlYmtpdHByaXZhdGUuaCIKKyNpbmNsdWRl
ICJ3ZWJraXR3ZWJhdXRoY2hhbGxlbmdlLmgiCisKKyNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZS5oIgorI2luY2x1ZGUgIkNyZWRlbnRpYWwuaCIKKyNpbmNsdWRlICJSZXNvdXJjZUhh
bmRsZS5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwordXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CisKK2V4dGVybiAiQyIgeworCitlbnVtIHsKKyAgICBQUk9QXzAsCisKKyAgICBQUk9QX1VT
RVIsCisgICAgUFJPUF9QQVNTV09SRCwKK307CisKK0dfREVGSU5FX1RZUEUoV2ViS2l0V2ViQXV0
aENoYWxsZW5nZSwgd2Via2l0X3dlYl9hdXRoX2NoYWxsZW5nZSwgR19UWVBFX09CSkVDVCk7CisK
K3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfYXV0aF9jaGFsbGVuZ2VfZ2V0X3Byb3BlcnR5KEdPYmpl
Y3QqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcHNw
ZWMpCit7CisgICAgV2ViS2l0V2ViQXV0aENoYWxsZW5nZSogY2hhbGxlbmdlID0gV0VCS0lUX1dF
Ql9BVVRIX0NIQUxMRU5HRShvYmplY3QpOworCisgICAgc3dpdGNoKHByb3BfaWQpIHsKKyAgICBj
YXNlIFBST1BfVVNFUjoKKyAgICAgICAgZ192YWx1ZV9zZXRfc3RyaW5nKHZhbHVlLCB3ZWJraXRf
d2ViX2F1dGhfY2hhbGxlbmdlX2dldF91c2VyKGNoYWxsZW5nZSkpOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIFBST1BfUEFTU1dPUkQ6CisgICAgICAgIGdfdmFsdWVfc2V0X3N0cmluZyh2YWx1
ZSwgd2Via2l0X3dlYl9hdXRoX2NoYWxsZW5nZV9nZXRfcGFzc3dvcmQoY2hhbGxlbmdlKSk7Cisg
ICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJ
RF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BfaWQsIHBzcGVjKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX2F1dGhfY2hhbGxlbmdlX3NldF9wcm9w
ZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BfaWQsIGNvbnN0IEdWYWx1ZSogdmFsdWUs
IEdQYXJhbVNwZWMgKnBzcGVjKQoreworICAgIFdlYktpdFdlYkF1dGhDaGFsbGVuZ2UqIGNoYWxs
ZW5nZSA9IFdFQktJVF9XRUJfQVVUSF9DSEFMTEVOR0Uob2JqZWN0KTsKKworICAgIHN3aXRjaChw
cm9wX2lkKSB7CisgICAgY2FzZSBQUk9QX1VTRVI6CisgICAgICAgIHdlYmtpdF93ZWJfYXV0aF9j
aGFsbGVuZ2Vfc2V0X3VzZXIoY2hhbGxlbmdlLCBnX3ZhbHVlX2dldF9zdHJpbmcodmFsdWUpKTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX1BBU1NXT1JEOgorICAgICAgICB3ZWJraXRf
d2ViX2F1dGhfY2hhbGxlbmdlX3NldF9wYXNzd29yZChjaGFsbGVuZ2UsIGdfdmFsdWVfZ2V0X3N0
cmluZyh2YWx1ZSkpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBHX09C
SkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wX2lkLCBwc3BlYyk7Cisg
ICAgfQorfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX2F1dGhfY2hhbGxlbmdlX2ZpbmFsaXpl
KEdPYmplY3QqIG9iamVjdCkKK3sKKyAgICBXZWJLaXRXZWJBdXRoQ2hhbGxlbmdlKiBjaGFsbGVu
Z2UgPSBXRUJLSVRfV0VCX0FVVEhfQ0hBTExFTkdFKG9iamVjdCk7CisgICAgV2ViS2l0V2ViQXV0
aENoYWxsZW5nZVByaXZhdGUqIHByaXYgPSBjaGFsbGVuZ2UtPnByaXY7CisKKyAgICBkZWxldGUg
cHJpdi0+d2ViQ2hhbGxlbmdlOworICAgIGdfZnJlZShwcml2LT51c2VyKTsKKyAgICBnX2ZyZWUo
cHJpdi0+cGFzc3dvcmQpOworCisgICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0X3dlYl9hdXRoX2No
YWxsZW5nZV9wYXJlbnRfY2xhc3MpLT5maW5hbGl6ZShvYmplY3QpOworfQorCitzdGF0aWMgdm9p
ZCB3ZWJraXRfd2ViX2F1dGhfY2hhbGxlbmdlX2NsYXNzX2luaXQoV2ViS2l0V2ViQXV0aENoYWxs
ZW5nZUNsYXNzKiBjaGFsbGVuZ2VDbGFzcykKK3sKKyAgICBnX3R5cGVfY2xhc3NfYWRkX3ByaXZh
dGUoY2hhbGxlbmdlQ2xhc3MsIHNpemVvZihXZWJLaXRXZWJBdXRoQ2hhbGxlbmdlUHJpdmF0ZSkp
OworCisgICAgR09iamVjdENsYXNzKiBvYmplY3RDbGFzcyA9IEdfT0JKRUNUX0NMQVNTKGNoYWxs
ZW5nZUNsYXNzKTsKKyAgICBvYmplY3RDbGFzcy0+ZmluYWxpemUgPSB3ZWJraXRfd2ViX2F1dGhf
Y2hhbGxlbmdlX2ZpbmFsaXplOworICAgIG9iamVjdENsYXNzLT5nZXRfcHJvcGVydHkgPSB3ZWJr
aXRfd2ViX2F1dGhfY2hhbGxlbmdlX2dldF9wcm9wZXJ0eTsKKyAgICBvYmplY3RDbGFzcy0+c2V0
X3Byb3BlcnR5ID0gd2Via2l0X3dlYl9hdXRoX2NoYWxsZW5nZV9zZXRfcHJvcGVydHk7Cit9CisK
K3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfYXV0aF9jaGFsbGVuZ2VfaW5pdChXZWJLaXRXZWJBdXRo
Q2hhbGxlbmdlKiBjaGFsbGVuZ2UpCit7CisgICAgV2ViS2l0V2ViQXV0aENoYWxsZW5nZVByaXZh
dGUqIHByaXYgPSBXRUJLSVRfV0VCX0FVVEhfQ0hBTExFTkdFX0dFVF9QUklWQVRFKGNoYWxsZW5n
ZSk7CisgICAgY2hhbGxlbmdlLT5wcml2ID0gcHJpdjsKKworICAgIHByaXYtPndlYkNoYWxsZW5n
ZSA9IG5ldyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpOworICAgIHByaXYtPndlYkhhbmRsZSA9
IE5VTEw7CisgICAgcHJpdi0+dXNlciA9IE5VTEw7CisgICAgcHJpdi0+cGFzc3dvcmQgPSBOVUxM
OworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfYXV0aF9jaGFsbGVuZ2VfbmV3OgorICoKKyAqIFRo
aXMgZnVuY3Rpb24gcmV0dXJucyBhIG5ldyBXZWJLaXRXZWJBdXRoQ2hhbGxlbmdlIG9iamVjdC4K
KyAqIFRoZSBwdXJwb3NlIG9mIHRoaXMgY2xhc3MgaXMgdG8gcmVzcG9uc2UgdG8gYXV0aGVudGlj
YXRpb24gcmVxdWVzdGVkIHRvIGFjY2VzcyBwcm90ZWN0ZWQgd2ViIHJlc291cmNlcy4KKyAqCisg
KiBVc3VhbGx5IHRoZSBhcHBsaWNhdGlvbiBkb2Vzbid0IG5lZWQgdG8gY3JlYXRlIHRoaXMgb2Jq
ZWN0LgorICoKKyAqIFJldHVybiB2YWx1ZTogdGhlICNXZWJLaXRXZWJBdXRoQ2hhbGxlbmdlCisg
KiovCitXZWJLaXRXZWJBdXRoQ2hhbGxlbmdlKiB3ZWJraXRfd2ViX2F1dGhfY2hhbGxlbmdlX25l
dygpCit7CisgICAgV2ViS2l0V2ViQXV0aENoYWxsZW5nZSogY2hhbGxlbmdlID0gV0VCS0lUX1dF
Ql9BVVRIX0NIQUxMRU5HRShnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX0FVVEhfQ0hBTExF
TkdFLCBOVUxMKSk7CisKKyAgICByZXR1cm4gY2hhbGxlbmdlOworfQorCisvKioKKyAqIHdlYmtp
dF93ZWJfYXV0aF9jaGFsbGVuZ2Vfc2V0X3VzZXI6CisgKiBAY2hhbGxlbmdlOiBhICNXZWJLaXRX
ZWJBdXRoQ2hhbGxlbmdlCisgKiBAdXNlcjogYSBzdHJpbmcgd2l0aCB0aGUgdXNlcm5hbWUKKyAq
CisgKiBTZXQgdGhlIHVzZXJuYW1lIGZvciB0aGUgYXV0aGVudGljYXRpb24gQGNoYWxsZW5nZS4K
KyAqLwordm9pZCB3ZWJraXRfd2ViX2F1dGhfY2hhbGxlbmdlX3NldF91c2VyKFdlYktpdFdlYkF1
dGhDaGFsbGVuZ2UqIGNoYWxsZW5nZSwgY29uc3QgZ2NoYXIqIHVzZXIpCit7CisgICAgZ19yZXR1
cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX0FVVEhfQ0hBTExFTkdFKGNoYWxsZW5nZSkpOworICAg
IGdfcmV0dXJuX2lmX2ZhaWwodXNlcik7CisKKyAgICBXZWJLaXRXZWJBdXRoQ2hhbGxlbmdlUHJp
dmF0ZSogcHJpdiA9IGNoYWxsZW5nZS0+cHJpdjsKKworICAgIGdfZnJlZShwcml2LT51c2VyKTsK
KyAgICBwcml2LT51c2VyID0gZ19zdHJkdXAodXNlcik7Cit9CisKKy8qKgorICogd2Via2l0X3dl
Yl9hdXRoX2NoYWxsZW5nZV9nZXRfdXNlcgorICogQGNoYWxsZW5nZTogYSAjV2ViS2l0V2ViQXV0
aENoYWxsZW5nZQorICoKKyAqIFJldHVybnMgdGhlIGN1cnJlbnQgdXNlcm5hbWUgdXNlZCBieSB0
aGUgYXV0aGVudGljYXRpb24gQGNoYWxsZW5nZS4KKyAqCisgKiBSZXR1cm4gdmFsdWU6IHRoZSB1
c2VybmFtZQorICovCitjb25zdCBnY2hhciogd2Via2l0X3dlYl9hdXRoX2NoYWxsZW5nZV9nZXRf
dXNlcihXZWJLaXRXZWJBdXRoQ2hhbGxlbmdlKiBjaGFsbGVuZ2UpCit7CisgICAgZ19yZXR1cm5f
dmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9BVVRIX0NIQUxMRU5HRShjaGFsbGVuZ2UpLCBOVUxM
KTsKKworICAgIFdlYktpdFdlYkF1dGhDaGFsbGVuZ2VQcml2YXRlKiBwcml2ID0gY2hhbGxlbmdl
LT5wcml2OworCisgICAgcmV0dXJuIHByaXYtPnVzZXI7Cit9CisKKy8qKgorICogd2Via2l0X3dl
Yl9hdXRoX2NoYWxsZW5nZV9zZXRfcGFzc3dvcmQ6CisgKiBAY2hhbGxlbmdlOiBhICNXZWJLaXRX
ZWJBdXRoQ2hhbGxlbmdlCisgKiBAcGFzc3dvcmQ6IGEgc3RyaW5nIHdpdGggdGhlIHBhc3N3b3Jk
CisgKgorICogU2V0IHRoZSBwYXNzd29yZCBmb3IgdGhlIGF1dGhlbnRpY2F0aW9uIEBjaGFsbGVu
Z2UuCisgKi8KK3ZvaWQgd2Via2l0X3dlYl9hdXRoX2NoYWxsZW5nZV9zZXRfcGFzc3dvcmQoV2Vi
S2l0V2ViQXV0aENoYWxsZW5nZSogY2hhbGxlbmdlLCBjb25zdCBnY2hhciogcGFzc3dvcmQpCit7
CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX0FVVEhfQ0hBTExFTkdFKGNoYWxs
ZW5nZSkpOworICAgIGdfcmV0dXJuX2lmX2ZhaWwocGFzc3dvcmQpOworCisgICAgV2ViS2l0V2Vi
QXV0aENoYWxsZW5nZVByaXZhdGUqIHByaXYgPSBjaGFsbGVuZ2UtPnByaXY7CisKKyAgICBnX2Zy
ZWUocHJpdi0+cGFzc3dvcmQpOworICAgIHByaXYtPnBhc3N3b3JkID0gZ19zdHJkdXAocGFzc3dv
cmQpOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfYXV0aF9jaGFsbGVuZ2VfZ2V0X3Bhc3N3b3Jk
CisgKiBAY2hhbGxlbmdlOiBhICNXZWJLaXRXZWJBdXRoQ2hhbGxlbmdlCisgKgorICogUmV0dXJu
cyB0aGUgY3VycmVudCBwYXNzd29yZCB1c2VkIGJ5IHRoZSBhdXRoZW50aWNhdGlvbiBAY2hhbGxl
bmdlLgorICoKKyAqIFJldHVybiB2YWx1ZTogdGhlIHBhc3N3b3JkCisgKi8KK2NvbnN0IGdjaGFy
KiB3ZWJraXRfd2ViX2F1dGhfY2hhbGxlbmdlX2dldF9wYXNzd29yZChXZWJLaXRXZWJBdXRoQ2hh
bGxlbmdlKiBjaGFsbGVuZ2UpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lT
X1dFQl9BVVRIX0NIQUxMRU5HRShjaGFsbGVuZ2UpLCBOVUxMKTsKKworICAgIFdlYktpdFdlYkF1
dGhDaGFsbGVuZ2VQcml2YXRlKiBwcml2ID0gY2hhbGxlbmdlLT5wcml2OworCisgICAgcmV0dXJu
IHByaXYtPnBhc3N3b3JkOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfYXV0aF9jaGFsbGVuZ2Vf
dXNlX2NyZWRlbnRpYWwKKyAqIEBjaGFsbGVuZ2U6IGEgI1dlYktpdFdlYkF1dGhDaGFsbGVuZ2UK
KyAqCisgKiBSZXNwb25zZSB0aGUgY3JlZGVudGlhbCBvZiBAY2hhbGxlbmdlIHRvIGJlIHVzZWQg
Zm9yIHRoZSByZXF1ZXN0ZWQgYXV0aGVudGljYXRpb24uCisgKgorICogQWZ0ZXIgdGhpcyByZXNw
b25zZSwgdGhlIEBjaGFsbGVuZ2UgY2FuJ3QgYmUgdXNlZCBmb3IgYW55IGZ1cnRoZXIgcmVzcG9u
c2VzIG9uIHRoZQorICogc2FtZSBhdXRoZW50aWNhdGlvbiByZXF1ZXN0LgorICovCit2b2lkIHdl
YmtpdF93ZWJfYXV0aF9jaGFsbGVuZ2VfdXNlX2NyZWRlbnRpYWwoV2ViS2l0V2ViQXV0aENoYWxs
ZW5nZSogY2hhbGxlbmdlKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9B
VVRIX0NIQUxMRU5HRShjaGFsbGVuZ2UpKTsKKworICAgIFdlYktpdFdlYkF1dGhDaGFsbGVuZ2VQ
cml2YXRlKiBwcml2ID0gY2hhbGxlbmdlLT5wcml2OworCisgICAgQ3JlZGVudGlhbCBjcmVkZW50
aWFsID0gQ3JlZGVudGlhbChTdHJpbmc6OmZyb21VVEY4KHByaXYtPnVzZXIpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nOjpmcm9tVVRGOChwcml2LT5wYXNz
d29yZCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDcmVkZW50aWFs
UGVyc2lzdGVuY2VGb3JTZXNzaW9uKTsKKyAgICBwcml2LT53ZWJIYW5kbGUtPnJlY2VpdmVkQ3Jl
ZGVudGlhbCgqcHJpdi0+d2ViQ2hhbGxlbmdlLCBjcmVkZW50aWFsKTsKK30KKworLyoqCisgKiB3
ZWJraXRfd2ViX2F1dGhfY2hhbGxlbmdlX2NvbnRpbnVlX3dpdGhvdXRfY3JlZGVudGlhbAorICog
QGNoYWxsZW5nZTogYSAjV2ViS2l0V2ViQXV0aENoYWxsZW5nZQorICoKKyAqIFJlc3BvbnNlIHRv
IGNvbnRpbnVlIGxvYWRpbmcgdGhlIHJlcXVlc3RlZCByZXNvdXJjZSB3aXRob3V0IGFueSBjcmVk
ZW50aWFsLgorICoKKyAqIEFmdGVyIHRoaXMgcmVzcG9uc2UsIHRoZSBAY2hhbGxlbmdlIGNhbid0
IGJlIHVzZWQgZm9yIGFueSBmdXJ0aGVyIHJlc3BvbnNlcyBvbiB0aGUKKyAqIHNhbWUgYXV0aGVu
dGljYXRpb24gcmVxdWVzdC4KKyAqLwordm9pZCB3ZWJraXRfd2ViX2F1dGhfY2hhbGxlbmdlX2Nv
bnRpbnVlX3dpdGhvdXRfY3JlZGVudGlhbChXZWJLaXRXZWJBdXRoQ2hhbGxlbmdlKiBjaGFsbGVu
Z2UpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX0FVVEhfQ0hBTExFTkdF
KGNoYWxsZW5nZSkpOworCisgICAgV2ViS2l0V2ViQXV0aENoYWxsZW5nZVByaXZhdGUqIHByaXYg
PSBjaGFsbGVuZ2UtPnByaXY7CisgICAgcHJpdi0+d2ViSGFuZGxlLT5yZWNlaXZlZFJlcXVlc3RU
b0NvbnRpbnVlV2l0aG91dENyZWRlbnRpYWwoKnByaXYtPndlYkNoYWxsZW5nZSk7Cit9CisKKy8q
KgorICogd2Via2l0X3dlYl9hdXRoX2NoYWxsZW5nZV9jYW5jZWwKKyAqIEBjaGFsbGVuZ2U6IGEg
I1dlYktpdFdlYkF1dGhDaGFsbGVuZ2UKKyAqCisgKiBSZXNwb25zZSB0byBjYW5jZWwgdGhlIGN1
cnJlbnQgYXV0aGVudGljYXRpb24gQGNoYWxsZW5nZSBmb3IgdGhlIHJlcXVlc3RlZCByZXNvdXJj
ZS4KKyAqCisgKiBBZnRlciB0aGlzIHJlc3BvbnNlLCB0aGUgQGNoYWxsZW5nZSBjYW4ndCBiZSB1
c2VkIGZvciBhbnkgZnVydGhlciByZXNwb25zZXMgb24gdGhlCisgKiBzYW1lIGF1dGhlbnRpY2F0
aW9uIHJlcXVlc3QuCisgKi8KK3ZvaWQgd2Via2l0X3dlYl9hdXRoX2NoYWxsZW5nZV9jYW5jZWwo
V2ViS2l0V2ViQXV0aENoYWxsZW5nZSogY2hhbGxlbmdlKQoreworICAgIGdfcmV0dXJuX2lmX2Zh
aWwoV0VCS0lUX0lTX1dFQl9BVVRIX0NIQUxMRU5HRShjaGFsbGVuZ2UpKTsKKworICAgIFdlYktp
dFdlYkF1dGhDaGFsbGVuZ2VQcml2YXRlKiBwcml2ID0gY2hhbGxlbmdlLT5wcml2OworICAgIHBy
aXYtPndlYkhhbmRsZS0+cmVjZWl2ZWRDYW5jZWxsYXRpb24oKnByaXYtPndlYkNoYWxsZW5nZSk7
Cit9CisKK30KSW5kZXg6IFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmF1dGhjaGFsbGVuZ2Uu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJhdXRoY2hhbGxlbmdl
LmgJKHJldmlzaW9uIDApCisrKyBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJhdXRoY2hhbGxl
bmdlLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDggTHVjYSBCcnVubworICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
KyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4g
IElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEz
MDEsIFVTQS4KKyAqLworCisjaWZuZGVmIFdFQktJVF9XRUJfQVVUSF9DSEFMTEVOR0VfSAorI2Rl
ZmluZSBXRUJLSVRfV0VCX0FVVEhfQ0hBTExFTkdFX0gKKworI2luY2x1ZGUgPGdsaWItb2JqZWN0
Lmg+CisKKyNpbmNsdWRlICJ3ZWJraXRkZWZpbmVzLmgiCisKK0dfQkVHSU5fREVDTFMKKworI2Rl
ZmluZSBXRUJLSVRfVFlQRV9XRUJfQVVUSF9DSEFMTEVOR0UgICAgICAgICAgICAod2Via2l0X3dl
Yl9hdXRoX2NoYWxsZW5nZV9nZXRfdHlwZSgpKQorI2RlZmluZSBXRUJLSVRfV0VCX0FVVEhfQ0hB
TExFTkdFKG9iaikgICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmop
LCBXRUJLSVRfVFlQRV9XRUJfQVVUSF9DSEFMTEVOR0UsIFdlYktpdFdlYkF1dGhDaGFsbGVuZ2Up
KQorI2RlZmluZSBXRUJLSVRfV0VCX0FVVEhfQ0hBTExFTkdFX0NMQVNTKGtsYXNzKSAgICAgKEdf
VFlQRV9DSEVDS19DTEFTU19DQVNUKChrbGFzcyksICBXRUJLSVRfVFlQRV9XRUJfQVVUSF9DSEFM
TEVOR0UsIFdlYktpdFdlYkF1dGhDaGFsbGVuZ2VDbGFzcykpCisjZGVmaW5lIFdFQktJVF9JU19X
RUJfQVVUSF9DSEFMTEVOR0Uob2JqKSAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQ
RSgob2JqKSwgV0VCS0lUX1RZUEVfV0VCX0FVVEhfQ0hBTExFTkdFKSkKKyNkZWZpbmUgV0VCS0lU
X0lTX1dFQl9BVVRIX0NIQUxMRU5HRV9DTEFTUyhrbGFzcykgKEdfVFlQRV9DSEVDS19DTEFTU19U
WVBFKChrbGFzcyksICBXRUJLSVRfVFlQRV9XRUJfQVVUSF9DSEFMTEVOR0UpKQorI2RlZmluZSBX
RUJLSVRfV0VCX0FVVEhfQ0hBTExFTkdFX0dFVF9DTEFTUyhvYmopICAoR19UWVBFX0lOU1RBTkNF
X0dFVF9DTEFTUygob2JqKSwgIFdFQktJVF9UWVBFX1dFQl9BVVRIX0NIQUxMRU5HRSwgV2ViS2l0
V2ViQXV0aENoYWxsZW5nZUNsYXNzKSkKKwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYkF1dGhD
aGFsbGVuZ2VQcml2YXRlIFdlYktpdFdlYkF1dGhDaGFsbGVuZ2VQcml2YXRlOworCitzdHJ1Y3Qg
X1dlYktpdFdlYkF1dGhDaGFsbGVuZ2UgeworICAgIEdPYmplY3QgcGFyZW50OworCisgICAgV2Vi
S2l0V2ViQXV0aENoYWxsZW5nZVByaXZhdGUqIHByaXY7Cit9OworCitzdHJ1Y3QgX1dlYktpdFdl
YkF1dGhDaGFsbGVuZ2VDbGFzcyB7CisgICAgR09iamVjdENsYXNzIHBhcmVudDsKK307CisKK1dF
QktJVF9BUEkgR1R5cGUKK3dlYmtpdF93ZWJfYXV0aF9jaGFsbGVuZ2VfZ2V0X3R5cGUgKHZvaWQp
OworCitXRUJLSVRfQVBJIFdlYktpdFdlYkF1dGhDaGFsbGVuZ2UqCit3ZWJraXRfd2ViX2F1dGhf
Y2hhbGxlbmdlX25ldyAoKTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfd2ViX2F1dGhfY2hh
bGxlbmdlX3NldF91c2VyIChXZWJLaXRXZWJBdXRoQ2hhbGxlbmdlKiBjaGFsbGVuZ2UsIGNvbnN0
IGdjaGFyKiB1c2VyKTsKKworV0VCS0lUX0FQSSBjb25zdCBnY2hhcioKK3dlYmtpdF93ZWJfYXV0
aF9jaGFsbGVuZ2VfZ2V0X3VzZXIgKFdlYktpdFdlYkF1dGhDaGFsbGVuZ2UqIGNoYWxsZW5nZSk7
CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3dlYl9hdXRoX2NoYWxsZW5nZV9zZXRfcGFzc3dv
cmQgKFdlYktpdFdlYkF1dGhDaGFsbGVuZ2UqIGNoYWxsZW5nZSwgY29uc3QgZ2NoYXIqIHBhc3N3
b3JkKTsKKworV0VCS0lUX0FQSSBjb25zdCBnY2hhcioKK3dlYmtpdF93ZWJfYXV0aF9jaGFsbGVu
Z2VfZ2V0X3Bhc3N3b3JkIChXZWJLaXRXZWJBdXRoQ2hhbGxlbmdlKiBjaGFsbGVuZ2UpOworCitX
RUJLSVRfQVBJIHZvaWQKK3dlYmtpdF93ZWJfYXV0aF9jaGFsbGVuZ2VfdXNlX2NyZWRlbnRpYWwg
KFdlYktpdFdlYkF1dGhDaGFsbGVuZ2UqIGNoYWxsZW5nZSk7CisKK1dFQktJVF9BUEkgdm9pZAor
d2Via2l0X3dlYl9hdXRoX2NoYWxsZW5nZV9jb250aW51ZV93aXRob3V0X2NyZWRlbnRpYWwgKFdl
YktpdFdlYkF1dGhDaGFsbGVuZ2UqIGNoYWxsZW5nZSk7CisKK1dFQktJVF9BUEkgdm9pZAord2Vi
a2l0X3dlYl9hdXRoX2NoYWxsZW5nZV9jYW5jZWwgKFdlYktpdFdlYkF1dGhDaGFsbGVuZ2UqIGNo
YWxsZW5nZSk7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZgpJbmRleDogV2ViS2l0L2d0ay93ZWJr
aXQvd2Via2l0d2Vidmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0d2Vidmlldy5jcHAJKHJldmlzaW9uIDMwNDc1KQorKysgV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0d2Vidmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg1LDYgKzg1LDcgQEAgZW51bSB7CiAg
ICAgQ09QWV9DTElQQk9BUkQsCiAgICAgUEFTVEVfQ0xJUEJPQVJELAogICAgIENVVF9DTElQQk9B
UkQsCisgICAgQVVUSEVOVElDQVRJT05fUkVRVUVTVEVELAogICAgIExBU1RfU0lHTkFMCiB9Owog
CkBAIC0zOTUsNyArMzk2LDcgQEAgc3RhdGljIGdib29sZWFuIHdlYmtpdF93ZWJfdmlld19mb2N1
c19pbgogICAgIEd0a1dpZGdldCogdG9wbGV2ZWwgPSBndGtfd2lkZ2V0X2dldF90b3BsZXZlbCh3
aWRnZXQpOwogICAgIGlmIChHVEtfV0lER0VUX1RPUExFVkVMKHRvcGxldmVsKSAmJiBndGtfd2lu
ZG93X2hhc190b3BsZXZlbF9mb2N1cyhHVEtfV0lORE9XKHRvcGxldmVsKSkpIHsKICAgICAgICAg
V2ViS2l0V2ViVmlldyogd2ViVmlldyA9IFdFQktJVF9XRUJfVklFVyh3aWRnZXQpOwotCisgICAg
ICAgIAogICAgICAgICBGcmFtZSogZnJhbWUgPSBjb3JlKHdlYlZpZXcpLT5tYWluRnJhbWUoKTsK
ICAgICAgICAgY29yZSh3ZWJWaWV3KS0+Zm9jdXNDb250cm9sbGVyKCktPnNldEFjdGl2ZShmcmFt
ZSk7CiAgICAgfQpAQCAtNjIxLDYgKzYyMiw4MiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3Zp
ZXdfcmVhbF9wYXN0ZV9jCiAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJQYXN0ZSIpLmV4
ZWN1dGUoKTsKIH0KIAordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgICBHdGtXaWRnZXQqIHVzZXJfZW50
cnk7CisgICAgR3RrV2lkZ2V0KiBwYXNzd29yZF9lbnRyeTsKKyAgICBXZWJLaXRXZWJBdXRoQ2hh
bGxlbmdlKiBjaGFsbGVuZ2U7Cit9IEF1dGhEaWFsb2dEYXRhOworCitzdGF0aWMgdm9pZCB3ZWJr
aXRfd2ViX3ZpZXdfd2ViX2F1dGhfZGlhbG9nX3Jlc3BvbnNlX2NiKEd0a1dpZGdldCogZGlhbG9n
LCBnaW50IHJlc3BvbnNlLCBncG9pbnRlciB1c2VyX2RhdGEpCit7CisgICAgQXV0aERpYWxvZ0Rh
dGEqIGRhdGEgPSByZWludGVycHJldF9jYXN0PEF1dGhEaWFsb2dEYXRhKj4odXNlcl9kYXRhKTsK
KworICAgIHN3aXRjaCAocmVzcG9uc2UpIHsKKyAgICBjYXNlIEdUS19SRVNQT05TRV9OT05FOgor
ICAgIGNhc2UgR1RLX1JFU1BPTlNFX0RFTEVURV9FVkVOVDoKKyAgICBjYXNlIEdUS19SRVNQT05T
RV9SRUpFQ1Q6CisgICAgICAgIHdlYmtpdF93ZWJfYXV0aF9jaGFsbGVuZ2VfY29udGludWVfd2l0
aG91dF9jcmVkZW50aWFsKGRhdGEtPmNoYWxsZW5nZSk7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgR1RLX1JFU1BPTlNFX0FDQ0VQVDoKKyAgICAgICAgd2Via2l0X3dlYl9hdXRoX2NoYWxsZW5n
ZV9zZXRfdXNlcihkYXRhLT5jaGFsbGVuZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZ3RrX2VudHJ5X2dldF90ZXh0KEdUS19FTlRSWShkYXRhLT51
c2VyX2VudHJ5KSkpOworICAgICAgICB3ZWJraXRfd2ViX2F1dGhfY2hhbGxlbmdlX3NldF9wYXNz
d29yZChkYXRhLT5jaGFsbGVuZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGd0a19lbnRyeV9nZXRfdGV4dChHVEtfRU5UUlkoZGF0YS0+cGFz
c3dvcmRfZW50cnkpKSk7CisgICAgICAgIHdlYmtpdF93ZWJfYXV0aF9jaGFsbGVuZ2VfdXNlX2Ny
ZWRlbnRpYWwoZGF0YS0+Y2hhbGxlbmdlKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoK
KyAgICAgICAgZ19hc3NlcnRfbm90X3JlYWNoZWQgKCk7CisgICAgICAgIGJyZWFrOworICAgIH0K
KworICAgIGd0a193aWRnZXRfZGVzdHJveShkaWFsb2cpOworICAgIGdfb2JqZWN0X3VucmVmKGRh
dGEtPmNoYWxsZW5nZSk7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19yZWFsX2F1
dGhlbnRpY2F0aW9uX3JlcXVlc3RlZChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRXZWJG
cmFtZSogd2ViRnJhbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgV2ViS2l0V2ViQXV0aENoYWxsZW5nZSogY2hhbGxlbmdlKQorewor
ICAgIEd0a1dpZGdldCogd2luZG93OworICAgIEd0a1dpZGdldCogZGlhbG9nOworICAgIEd0a1dp
ZGdldCogdGFibGU7CisgICAgR3RrV2lkZ2V0KiBsYWJlbDsKKyAgICBBdXRoRGlhbG9nRGF0YSog
ZGF0YTsKKworICAgIHdpbmRvdyA9IGd0a193aWRnZXRfZ2V0X3RvcGxldmVsKEdUS19XSURHRVQo
d2ViVmlldykpOworICAgIGdjaGFyKiB0aXRsZSA9IGdfc3RyY29uY2F0KCJBdXRoZW50aWNhdGlv
biAtICIsIHdlYmtpdF93ZWJfZnJhbWVfZ2V0X3VyaSh3ZWJGcmFtZSksIE5VTEwpOworICAgIGRp
YWxvZyA9IGd0a19kaWFsb2dfbmV3X3dpdGhfYnV0dG9ucyh0aXRsZSwgR1RLX1dJREdFVF9UT1BM
RVZFTCh3aW5kb3cpID8gR1RLX1dJTkRPVyh3aW5kb3cpIDogMCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKEd0a0RpYWxvZ0ZsYWdzKShHVEtfRElBTE9HX01PREFM
IHwgR1RLX0RJQUxPR19ERVNUUk9ZX1dJVEhfUEFSRU5UKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR1RLX1NUT0NLX09LLCBHVEtfUkVTUE9OU0VfQUNDRVBULAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVEtfU1RPQ0tfQ0FOQ0VM
LCBHVEtfUkVTUE9OU0VfUkVKRUNULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBOVUxMKTsKKyAgICBnX2ZyZWUodGl0bGUpOworICAgIGd0a19kaWFsb2dfc2V0X2Rl
ZmF1bHRfcmVzcG9uc2UoR1RLX0RJQUxPRyhkaWFsb2cpLCBHVEtfUkVTUE9OU0VfUkVKRUNUKTsK
KworICAgIGRhdGEgPSBnX25ldyhBdXRoRGlhbG9nRGF0YSwgMSk7CisgICAgZGF0YS0+dXNlcl9l
bnRyeSA9IGd0a19lbnRyeV9uZXcoKTsKKyAgICBkYXRhLT5wYXNzd29yZF9lbnRyeSA9IGd0a19l
bnRyeV9uZXcoKTsKKyAgICBndGtfZW50cnlfc2V0X3Zpc2liaWxpdHkoR1RLX0VOVFJZKGRhdGEt
PnBhc3N3b3JkX2VudHJ5KSwgRkFMU0UpOworICAgIGRhdGEtPmNoYWxsZW5nZSA9IGNoYWxsZW5n
ZTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KGRpYWxvZywgInJlc3BvbnNlIiwgR19DQUxMQkFDSyh3
ZWJraXRfd2ViX3ZpZXdfd2ViX2F1dGhfZGlhbG9nX3Jlc3BvbnNlX2NiKSwgZGF0YSk7CisKKyAg
ICB0YWJsZSA9IGd0a190YWJsZV9uZXcoMiwgMiwgRkFMU0UpOworICAgIGd0a190YWJsZV9zZXRf
Y29sX3NwYWNpbmdzKEdUS19UQUJMRSh0YWJsZSksIDMpOworICAgIGd0a190YWJsZV9zZXRfcm93
X3NwYWNpbmdzKEdUS19UQUJMRSh0YWJsZSksIDMpOworCisgICAgbGFiZWwgPSBndGtfbGFiZWxf
bmV3KCJVc2VybmFtZToiKTsKKyAgICBndGtfdGFibGVfYXR0YWNoX2RlZmF1bHRzKEdUS19UQUJM
RSh0YWJsZSksIGxhYmVsLCAwLCAxLCAwLCAxKTsKKyAgICBndGtfdGFibGVfYXR0YWNoX2RlZmF1
bHRzKEdUS19UQUJMRSh0YWJsZSksIGRhdGEtPnVzZXJfZW50cnksIDEsIDIsIDAsIDEpOworCisg
ICAgbGFiZWwgPSBndGtfbGFiZWxfbmV3KCJQYXNzd29yZDoiKTsKKyAgICBndGtfdGFibGVfYXR0
YWNoX2RlZmF1bHRzKEdUS19UQUJMRSh0YWJsZSksIGxhYmVsLCAwLCAxLCAxLCAyKTsKKyAgICBn
dGtfdGFibGVfYXR0YWNoX2RlZmF1bHRzKEdUS19UQUJMRSh0YWJsZSksIGRhdGEtPnBhc3N3b3Jk
X2VudHJ5LCAxLCAyLCAxLCAyKTsKKworICAgIGd0a19jb250YWluZXJfYWRkKEdUS19DT05UQUlO
RVIoR1RLX0RJQUxPRyhkaWFsb2cpLT52Ym94KSwgdGFibGUpOworICAgIGd0a193aWRnZXRfc2hv
d19hbGwodGFibGUpOworICAgIGd0a193aWRnZXRfc2hvdyhkaWFsb2cpOworfQorCiBzdGF0aWMg
dm9pZCB3ZWJraXRfd2ViX3ZpZXdfZmluYWxpemUoR09iamVjdCogb2JqZWN0KQogewogICAgIFdl
YktpdFdlYlZpZXcqIHdlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcob2JqZWN0KTsKQEAgLTk4Nyw2
ICsxMDY0LDI1IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KFcKICAg
ICAgICAgICAgIGdfY2Nsb3N1cmVfbWFyc2hhbF9WT0lEX19WT0lELAogICAgICAgICAgICAgR19U
WVBFX05PTkUsIDApOwogCisgICAgLyoqCisgICAgICogV2ViS2l0V2ViVmlldzo6YXV0aGVudGlj
YXRpb24tcmVxdWVzdGVkOgorICAgICAqIEB3ZWJfdmlldzogdGhlIG9iamVjdCB3aGljaCByZWNl
aXZlZCB0aGUgc2lnbmFsCisgICAgICoKKyAgICAgKiBUaGUgOjphdXRoZW50aWNhdGlvbi1yZXF1
ZXN0ZWQgc2lnbmFsIGlzIGVtaXR0ZWQgd2hlbiBhbiBhdXRoZW50aWNhdGlvbiBpcworICAgICAq
IHJlcXVlc3RlZCBmcm9tIHRoZSBzZXJ2ZXIgdG8gYWNjZXNzIGEgcmVzb3VyY2UuCisgICAgICoK
KyAgICAgKiBUaGUgZGVmYXVsdCBiZWhhdmlvciBmb3IgdGhpcyBzaWduYWwgaXMgY3JlYXRpbmcg
YW4gaW5wdXQgZGlhbG9nIHRvIGdldCBhIHN1aXRhYmxlIGNyZWRlbnRpYWwuCisgICAgICovCisg
ICAgd2Via2l0X3dlYl92aWV3X3NpZ25hbHNbQVVUSEVOVElDQVRJT05fUkVRVUVTVEVEXSA9IGdf
c2lnbmFsX25ldygiYXV0aGVudGljYXRpb24tcmVxdWVzdGVkIiwKKyAgICAgICAgICAgIEdfVFlQ
RV9GUk9NX0NMQVNTKHdlYlZpZXdDbGFzcyksCisgICAgICAgICAgICAoR1NpZ25hbEZsYWdzKShH
X1NJR05BTF9SVU5fTEFTVCB8IEdfU0lHTkFMX0FDVElPTiksCisgICAgICAgICAgICBHX1NUUlVD
VF9PRkZTRVQoV2ViS2l0V2ViVmlld0NsYXNzLCBhdXRoZW50aWNhdGlvbl9yZXF1ZXN0ZWQpLAor
ICAgICAgICAgICAgTlVMTCwgTlVMTCwKKyAgICAgICAgICAgIHdlYmtpdF9tYXJzaGFsX1ZPSURf
X09CSkVDVF9PQkpFQ1QsCisgICAgICAgICAgICBHX1RZUEVfTk9ORSwgMiwKKyAgICAgICAgICAg
IFdFQktJVF9UWVBFX1dFQl9GUkFNRSwKKyAgICAgICAgICAgIFdFQktJVF9UWVBFX1dFQl9BVVRI
X0NIQUxMRU5HRSk7CisKICAgICAvKgogICAgICAqIGltcGxlbWVudGF0aW9ucyBvZiB2aXJ0dWFs
IG1ldGhvZHMKICAgICAgKi8KQEAgLTEwMDIsNiArMTA5OCw3IEBAIHN0YXRpYyB2b2lkIHdlYmtp
dF93ZWJfdmlld19jbGFzc19pbml0KFcKICAgICB3ZWJWaWV3Q2xhc3MtPmN1dF9jbGlwYm9hcmQg
PSB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9jdXRfY2xpcGJvYXJkOwogICAgIHdlYlZpZXdDbGFzcy0+
Y29weV9jbGlwYm9hcmQgPSB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9jb3B5X2NsaXBib2FyZDsKICAg
ICB3ZWJWaWV3Q2xhc3MtPnBhc3RlX2NsaXBib2FyZCA9IHdlYmtpdF93ZWJfdmlld19yZWFsX3Bh
c3RlX2NsaXBib2FyZDsKKyAgICB3ZWJWaWV3Q2xhc3MtPmF1dGhlbnRpY2F0aW9uX3JlcXVlc3Rl
ZCA9IHdlYmtpdF93ZWJfdmlld19yZWFsX2F1dGhlbnRpY2F0aW9uX3JlcXVlc3RlZDsKIAogICAg
IEdPYmplY3RDbGFzcyogb2JqZWN0Q2xhc3MgPSBHX09CSkVDVF9DTEFTUyh3ZWJWaWV3Q2xhc3Mp
OwogICAgIG9iamVjdENsYXNzLT5maW5hbGl6ZSA9IHdlYmtpdF93ZWJfdmlld19maW5hbGl6ZTsK
SW5kZXg6IFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmgJKHJldmlzaW9uIDMwNDc1KQorKysgV2Vi
S2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5oCSh3b3JraW5nIGNvcHkpCkBAIC04NCw2ICs4
NCw3IEBAIHN0cnVjdCBfV2ViS2l0V2ViVmlld0NsYXNzIHsKICAgICB2b2lkICgqY3V0X2NsaXBi
b2FyZCkgKFdlYktpdFdlYlZpZXcqIHdlYl92aWV3KTsKICAgICB2b2lkICgqY29weV9jbGlwYm9h
cmQpIChXZWJLaXRXZWJWaWV3KiB3ZWJfdmlldyk7CiAgICAgdm9pZCAoKnBhc3RlX2NsaXBib2Fy
ZCkgKFdlYktpdFdlYlZpZXcqIHdlYl92aWV3KTsKKyAgICB2b2lkICgqYXV0aGVudGljYXRpb25f
cmVxdWVzdGVkKSAoV2ViS2l0V2ViVmlldyogd2ViX3ZpZXcsIFdlYktpdFdlYkZyYW1lKiB3ZWJf
ZnJhbWUsIFdlYktpdFdlYkF1dGhDaGFsbGVuZ2UqIHdlYl9hdXRoX2NoYWxsZW5nZSk7CiAKICAg
ICAvKgogICAgICAqIGludGVybmFsCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>19305</attachid>
            <date>2008-02-23 12:41:04 -0800</date>
            <delta_ts>2008-02-24 12:25:59 -0800</delta_ts>
            <desc>fail on response fired</desc>
            <filename>auth.patch</filename>
            <type>text/plain</type>
            <size>30946</size>
            <attacher name="Luca Bruno">lethalman88</attacher>
            
              <data encoding="base64">SW5kZXg6IEdOVW1ha2VmaWxlLmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEdOVW1ha2VmaWxlLmFtCShyZXZp
c2lvbiAzMDQ3NSkKKysrIEdOVW1ha2VmaWxlLmFtCSh3b3JraW5nIGNvcHkpCkBAIC0yNTEsNiAr
MjUxLDcgQEAgd2Via2l0Z3RrX2hfYXBpICs9IFwKIAlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXQu
aCBcCiAJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0ZGVmaW5lcy5oIFwKIAlXZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXRuZXR3b3JrcmVxdWVzdC5oIFwKKwlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3
ZWJhdXRoY2hhbGxlbmdlLmggXAogCVdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmJhY2tmb3J3
YXJkbGlzdC5oIFwKIAlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJmcmFtZS5oIFwKIAlXZWJL
aXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJoaXN0b3J5aXRlbS5oIFwKQEAgLTI3NCw2ICsyNzUsNyBA
QCB3ZWJraXRndGtfaGVhZGVycyArPSBcCiB3ZWJraXRndGtfc291cmNlcyArPSBcCiAJV2ViS2l0
L2d0ay93ZWJraXQvd2Via2l0bmV0d29ya3JlcXVlc3QuY3BwIFwKIAlXZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXRwcml2YXRlLmNwcCBcCisJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViYXV0aGNo
YWxsZW5nZS5jcHAgXAogCVdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmJhY2tmb3J3YXJkbGlz
dC5jcHAgXAogCVdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmZyYW1lLmNwcCBcCiAJV2ViS2l0
L2d0ay93ZWJraXQvd2Via2l0d2ViaGlzdG9yeWl0ZW0uY3BwIFwKSW5kZXg6IFdlYkNvcmUvV2Vi
Q29yZS5wcm8KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnBybwkocmV2aXNpb24gMzA0
NzUpCisrKyBXZWJDb3JlL1dlYkNvcmUucHJvCSh3b3JraW5nIGNvcHkpCkBAIC05OTUsNiArOTk1
LDcgQEAgZ3RrLXBvcnQgewogICAgICAgICAuLi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRkZWZp
bmVzLmggXAogICAgICAgICAuLi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRuZXR3b3JrcmVxdWVz
dC5oIFwKICAgICAgICAgLi4vV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5oIFwKKyAg
ICAgICAgLi4vV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViYXV0aGNoYWxsZW5nZS5oIFwKICAg
ICAgICAgLi4vV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViYmFja2ZvcndhcmRsaXN0LmggXAog
ICAgICAgICAuLi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJmcmFtZS5oIFwKICAgICAgICAg
Li4vV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViaGlzdG9yeWl0ZW0uaCBcCkBAIC0xMDc1LDYg
KzEwNzYsNyBAQCBndGstcG9ydCB7CiAgICAgICAgIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3hi
bS9YQk1JbWFnZURlY29kZXIuY3BwIFwKICAgICAgICAgLi4vV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0bmV0d29ya3JlcXVlc3QuY3BwIFwKICAgICAgICAgLi4vV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0cHJpdmF0ZS5jcHAgXAorICAgICAgICAuLi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJh
dXRoY2hhbGxlbmdlLmNwcCBcCiAgICAgICAgIC4uL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdl
YmJhY2tmb3J3YXJkbGlzdC5jcHAgXAogICAgICAgICAuLi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJr
aXR3ZWJmcmFtZS5jcHAgXAogICAgICAgICAuLi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJo
aXN0b3J5aXRlbS5jcHAgXApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
SGFuZGxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
SGFuZGxlLmgJKHJldmlzaW9uIDMwNDc1KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlSGFuZGxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTk3LDcgKzk3LDcgQEAgcHVibGljOgog
ICAgIAogICAgIH5SZXNvdXJjZUhhbmRsZSgpOwogCi0jaWYgUExBVEZPUk0oTUFDKSB8fCBVU0Uo
Q0ZORVRXT1JLKQorI2lmIFBMQVRGT1JNKE1BQykgfHwgVVNFKENGTkVUV09SSykgfHwgVVNFKENV
UkwpCiAgICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3QgQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UmKTsKICAgICB2b2lkIHJlY2VpdmVkQ3JlZGVudGlhbChjb25z
dCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIGNvbnN0IENyZWRlbnRpYWwmKTsKICAgICB2b2lk
IHJlY2VpdmVkUmVxdWVzdFRvQ29udGludWVXaXRob3V0Q3JlZGVudGlhbChjb25zdCBBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSYpOwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlSGFuZGxlSW50ZXJuYWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oCShyZXZpc2lvbiAzMDQ3NSkKKysrIFdlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEwMSw2ICsxMDEsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICAsIG1f
ZmlsZSgwKQogICAgICAgICAgICAgLCBtX2Zvcm1EYXRhRWxlbWVudEluZGV4KDApCiAgICAgICAg
ICAgICAsIG1fZm9ybURhdGFFbGVtZW50RGF0YU9mZnNldCgwKQorICAgICAgICAgICAgLCBtX3dl
YkNoYWxsZW5nZSgpCisgICAgICAgICAgICAsIG1fY29udGludWVXaXRob3V0Q3JlZGVudGlhbChm
YWxzZSkKICNlbmRpZgogI2lmIFBMQVRGT1JNKFFUKQogICAgICAgICAgICAgLCBtX2pvYigwKQpA
QCAtMTU5LDYgKzE2MSw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgc2l6ZV90IG1f
Zm9ybURhdGFFbGVtZW50SW5kZXg7CiAgICAgICAgIHNpemVfdCBtX2Zvcm1EYXRhRWxlbWVudERh
dGFPZmZzZXQ7CiAgICAgICAgIFZlY3RvcjxjaGFyPiBtX3Bvc3RCeXRlczsKKworICAgICAgICBB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSBtX3dlYkNoYWxsZW5nZTsKKyAgICAgICAgYm9vbCBtX2Nv
bnRpbnVlV2l0aG91dENyZWRlbnRpYWw7CiAjZW5kaWYKICNpZiBQTEFURk9STShRVCkKICNpZiBR
VF9WRVJTSU9OIDwgMHgwNDA0MDAKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L1Jlc291cmNlSGFuZGxlQ3VybC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcAkocmV2aXNpb24gMzA0NzUpCisrKyBX
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC05NSw0ICs5NSw2OSBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpsb2FkUmVz
b3VyY2VTeW5jaHJvCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAordm9pZCBSZXNvdXJjZUhh
bmRsZTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UpCit7CisgICAgLyogRklYTUU6IGFkZCBzdXBwb3J0IGZv
ciBGVFAsIEhUVFBTLCBhbmQgRlRQUyBhdXRoZW50aWNhdGlvbiwKKyAgICAgKiBnZXQgdGhlIHJp
Z2h0IHBvcnQsIHNlcnZlciBhbmQgYXV0aGVudGljYXRpb24gc2NoZW1lCisgICAgICovCisgICAg
UmVzb3VyY2VIYW5kbGVJbnRlcm5hbCogZCA9IGdldEludGVybmFsKCk7CisgICAgaWYgKGQtPm1f
Y29udGludWVXaXRob3V0Q3JlZGVudGlhbCkKKyAgICAgICAgcmV0dXJuOworICAgIGNhbmNlbCgp
OworCisgICAgUHJvdGVjdGlvblNwYWNlIHByb3RlY3Rpb25TcGFjZTsKKyAgICB1bnNpZ25lZCBw
cmV2aW91c0ZhaWx1cmVDb3VudCA9IDA7CisgICAgaWYgKGNoYWxsZW5nZS5pc051bGwoKSkgewor
ICAgICAgICBwcm90ZWN0aW9uU3BhY2UgPSBQcm90ZWN0aW9uU3BhY2UoZC0+bV9yZXNwb25zZS5o
dHRwSGVhZGVyRmllbGQoIkhvc3QiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
UHJvdGVjdGlvblNwYWNlU2VydmVySFRUUCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGQtPm1fcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkKCJSZWFsbSIpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvdGVjdGlvblNwYWNlQXV0
aGVudGljYXRpb25TY2hlbWVEZWZhdWx0KTsKKyAgICB9IGVsc2UgeworICAgICAgICBwcm90ZWN0
aW9uU3BhY2UgPSBkLT5tX3dlYkNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UoKTsKKyAgICAgICAg
cHJldmlvdXNGYWlsdXJlQ291bnQgPSBkLT5tX3dlYkNoYWxsZW5nZS5wcmV2aW91c0ZhaWx1cmVD
b3VudCgpKzE7CisgICAgfQorICAgIAorICAgIGQtPm1fd2ViQ2hhbGxlbmdlID0gQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UocHJvdGVjdGlvblNwYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY2hhbGxlbmdlLnByb3Bvc2VkQ3JlZGVudGlhbCgpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNG
YWlsdXJlQ291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBkLT5tX3Jlc3BvbnNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY2hhbGxlbmdlLmVycm9yKCkpOworCisgICAgaWYgKGQtPmNsaWVudCgpKQor
ICAgICAgICBkLT5jbGllbnQoKS0+ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHRo
aXMsIGQtPm1fd2ViQ2hhbGxlbmdlKTsKK30KKwordm9pZCBSZXNvdXJjZUhhbmRsZTo6cmVjZWl2
ZWRDcmVkZW50aWFsKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UsIGNv
bnN0IENyZWRlbnRpYWwmIGNyZWRlbnRpYWwpCit7CisgICAgQVNTRVJUKCFjaGFsbGVuZ2UuaXNO
dWxsKCkpOyAgIAorICAgIFJlc291cmNlSGFuZGxlSW50ZXJuYWwqIGQgPSBnZXRJbnRlcm5hbCgp
OworICAgIGlmIChjaGFsbGVuZ2UgIT0gZC0+bV93ZWJDaGFsbGVuZ2UpCisgICAgICAgIHJldHVy
bjsKKworICAgIGQtPm1fd2ViQ2hhbGxlbmdlID0gQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY2hh
bGxlbmdlLnByb3RlY3Rpb25TcGFjZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY3JlZGVudGlhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNoYWxsZW5nZS5wcmV2aW91c0ZhaWx1cmVDb3VudCgpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhbGxlbmdl
LmZhaWx1cmVSZXNwb25zZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY2hhbGxlbmdlLmVycm9yKCkpOworCisgICAgUmVzb3VyY2VIYW5kbGVNYW5h
Z2VyOjpzaGFyZWRJbnN0YW5jZSgpLT5hZGQodGhpcyk7Cit9CisKK3ZvaWQgUmVzb3VyY2VIYW5k
bGU6OnJlY2VpdmVkUmVxdWVzdFRvQ29udGludWVXaXRob3V0Q3JlZGVudGlhbChjb25zdCBBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlKQoreworICAgIEFTU0VSVCghY2hhbGxlbmdl
LmlzTnVsbCgpKTsgICAKKyAgICBSZXNvdXJjZUhhbmRsZUludGVybmFsKiBkID0gZ2V0SW50ZXJu
YWwoKTsKKyAgICBpZiAoY2hhbGxlbmdlICE9IGQtPm1fd2ViQ2hhbGxlbmdlKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBkLT5tX2NvbnRpbnVlV2l0aG91dENyZWRlbnRpYWwgPSB0cnVlOworICAg
IFJlc291cmNlSGFuZGxlTWFuYWdlcjo6c2hhcmVkSW5zdGFuY2UoKS0+YWRkKHRoaXMpOworfQor
Cit2b2lkIFJlc291cmNlSGFuZGxlOjpyZWNlaXZlZENhbmNlbGxhdGlvbihjb25zdCBBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL1Jlc291cmNlSGFuZGxlTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVNYW5hZ2VyLmNwcAkocmV2aXNpb24g
MzA0NzUpCisrKyBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZU1h
bmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzAsNiArMTcwLDEwIEBAIHN0YXRpYyBzaXpl
X3QgaGVhZGVyQ2FsbGJhY2soY2hhciogcHRyLCAKICAgICAgICAgZC0+bV9yZXNwb25zZS5zZXRU
ZXh0RW5jb2RpbmdOYW1lKGV4dHJhY3RDaGFyc2V0RnJvbU1lZGlhVHlwZShkLT5tX3Jlc3BvbnNl
Lmh0dHBIZWFkZXJGaWVsZCgiQ29udGVudC1UeXBlIikpKTsKICAgICAgICAgZC0+bV9yZXNwb25z
ZS5zZXRTdWdnZXN0ZWRGaWxlbmFtZShmaWxlbmFtZUZyb21IVFRQQ29udGVudERpc3Bvc2l0aW9u
KGQtPm1fcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkKCJDb250ZW50LURpc3Bvc2l0aW9uIikpKTsK
IAorICAgICAgICAvLyBIVFRQIGF1dGhlbnRpY2F0aW9uCisgICAgICAgIGlmIChodHRwQ29kZSA9
PSA0MDEgJiYgZC0+bV9yZXNwb25zZS5pc0hUVFAoKSkKKyAgICAgICAgICAgIGpvYi0+ZGlkUmVj
ZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGQtPm1fd2ViQ2hhbGxlbmdlKTsKKwogICAgICAg
ICAvLyBIVFRQIHJlZGlyZWN0aW9uCiAgICAgICAgIGlmIChodHRwQ29kZSA+PSAzMDAgJiYgaHR0
cENvZGUgPCA0MDApIHsKICAgICAgICAgICAgIFN0cmluZyBsb2NhdGlvbiA9IGQtPm1fcmVzcG9u
c2UuaHR0cEhlYWRlckZpZWxkKCJsb2NhdGlvbiIpOwpAQCAtNTU3LDYgKzU2MSw5IEBAIHZvaWQg
UmVzb3VyY2VIYW5kbGVNYW5hZ2VyOjpzdGFydEpvYihSZXMKICAgICB9CiAKICAgICBkLT5tX2hh
bmRsZSA9IGN1cmxfZWFzeV9pbml0KCk7CisgICAgLy8gSFRUUCBBdXRoZW50aWNhdGlvbiBjYW5j
ZWxzIHRoZSBqb2Igc28gYmUgc3VyZSB0aGUgbmV3IGpvYiBpcyBub3QgY2FuY2VsbGVkCisgICAg
ZC0+bV9jYW5jZWxsZWQgPSBmYWxzZTsgIAorCiAjaWZuZGVmIE5ERUJVRwogICAgIGlmIChnZXRl
bnYoIkRFQlVHX0NVUkwiKSkKICAgICAgICAgY3VybF9lYXN5X3NldG9wdChkLT5tX2hhbmRsZSwg
Q1VSTE9QVF9WRVJCT1NFLCAxKTsKQEAgLTU5MCw2ICs1OTcsMjMgQEAgdm9pZCBSZXNvdXJjZUhh
bmRsZU1hbmFnZXI6OnN0YXJ0Sm9iKFJlcwogICAgICAgICBjdXJsX2Vhc3lfc2V0b3B0KGQtPm1f
aGFuZGxlLCBDVVJMT1BUX0NPT0tJRUpBUiwgbV9jb29raWVKYXJGaWxlTmFtZSk7CiAgICAgfQog
CisgICAgaWYgKCFkLT5tX3dlYkNoYWxsZW5nZS5pc051bGwoKSAmJiAhZC0+bV9jb250aW51ZVdp
dGhvdXRDcmVkZW50aWFsKSB7CisgICAgICAgIGxvbmcgY3VybEF1dGg7CisgICAgICAgIHN3aXRj
aChkLT5tX3dlYkNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UoKS5hdXRoZW50aWNhdGlvblNjaGVt
ZSgpKSB7ICAgICAgICAgIAorICAgICAgICBjYXNlIFByb3RlY3Rpb25TcGFjZUF1dGhlbnRpY2F0
aW9uU2NoZW1lSFRUUEJhc2ljOgorICAgICAgICBjYXNlIFByb3RlY3Rpb25TcGFjZUF1dGhlbnRp
Y2F0aW9uU2NoZW1lRGVmYXVsdDoKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGN1cmxB
dXRoID0gQ1VSTEFVVEhfQkFTSUM7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisg
ICAgICAgIENyZWRlbnRpYWwgY3JlZGVudGlhbCA9IGQtPm1fd2ViQ2hhbGxlbmdlLnByb3Bvc2Vk
Q3JlZGVudGlhbCgpOworICAgICAgICBTdHJpbmcgdXNlcnB3ZCA9IGNyZWRlbnRpYWwudXNlcigp
ICsgIjoiICsgY3JlZGVudGlhbC5wYXNzd29yZCgpOworICAgICAgICAKKyAgICAgICAgY3VybF9l
YXN5X3NldG9wdChkLT5tX2hhbmRsZSwgQ1VSTE9QVF9IVFRQQVVUSCwgY3VybEF1dGgpOworICAg
ICAgICBjdXJsX2Vhc3lfc2V0b3B0KGQtPm1faGFuZGxlLCBDVVJMT1BUX1VTRVJQV0QsIHN0cmR1
cCh1c2VycHdkLnV0ZjgoKS5kYXRhKCkpKTsKKyAgICB9CisKICAgICBzdHJ1Y3QgY3VybF9zbGlz
dCogaGVhZGVycyA9IDA7CiAgICAgaWYgKGpvYi0+cmVxdWVzdCgpLmh0dHBIZWFkZXJGaWVsZHMo
KS5zaXplKCkgPiAwKSB7CiAgICAgICAgIEhUVFBIZWFkZXJNYXAgY3VzdG9tSGVhZGVycyA9IGpv
Yi0+cmVxdWVzdCgpLmh0dHBIZWFkZXJGaWVsZHMoKTsKSW5kZXg6IFdlYktpdC9ndGsvV2ViQ29y
ZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9n
dGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCShyZXZpc2lvbiAzMDQ3
NSkKKysrIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiSFRNTEZyYW1lT3du
ZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiTGFuZ3VhZ2Uu
aCIKKyNpbmNsdWRlICJNYWluUmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJNSU1FVHlwZVJl
Z2lzdHJ5LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJQbGF0Zm9y
bVN0cmluZy5oIgpAQCAtMzksNiArNDAsNyBAQAogI2luY2x1ZGUgImtqc19iaW5kaW5nLmgiCiAj
aW5jbHVkZSAia2pzX3Byb3h5LmgiCiAjaW5jbHVkZSAia2pzX3dpbmRvdy5oIgorI2luY2x1ZGUg
IndlYmtpdHdlYmF1dGhjaGFsbGVuZ2UuaCIKICNpbmNsdWRlICJ3ZWJraXR3ZWJ2aWV3LmgiCiAj
aW5jbHVkZSAid2Via2l0d2ViZnJhbWUuaCIKICNpbmNsdWRlICJ3ZWJraXRwcml2YXRlLmgiCkBA
IC0xNjUsOSArMTY3LDI0IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmNvbW1pdHRlZExvYWQo
RG8KICAgICBmbC0+YWRkRGF0YShkYXRhLCBsZW5ndGgpOwogfQogCi12b2lkIEZyYW1lTG9hZGVy
Q2xpZW50OjpkaXNwYXRjaERpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShEb2N1bWVu
dExvYWRlciosIHVuc2lnbmVkIGxvbmcgIGlkZW50aWZpZXIsIGNvbnN0IEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlJikKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVjZWl2ZUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciwgdW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgd2Vi
Q2hhbGxlbmdlKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgUmVzb3VyY2VIYW5kbGUq
IGhhbmRsZSA9IGRvY3VtZW50TG9hZGVyLT5tYWluUmVzb3VyY2VMb2FkZXIoKS0+aGFuZGxlKCk7
CisgICAgQVNTRVJUKGhhbmRsZSk7CisgICAgaWYgKCFoYW5kbGUpCisgICAgICAgIHJldHVybjsK
KyAgICAKKyAgICBXZWJLaXRXZWJBdXRoQ2hhbGxlbmdlKiBjaGFsbGVuZ2UgPSB3ZWJraXRfd2Vi
X2F1dGhfY2hhbGxlbmdlX25ldygpOworICAgIFdlYktpdFdlYkF1dGhDaGFsbGVuZ2VQcml2YXRl
KiBjaGFsbGVuZ2VQcml2YXRlID0gV0VCS0lUX1dFQl9BVVRIX0NIQUxMRU5HRV9HRVRfUFJJVkFU
RShjaGFsbGVuZ2UpOworICAgICpjaGFsbGVuZ2VQcml2YXRlLT53ZWJDaGFsbGVuZ2UgPSB3ZWJD
aGFsbGVuZ2U7CisgICAgY2hhbGxlbmdlUHJpdmF0ZS0+d2ViSGFuZGxlID0gaGFuZGxlOworICAg
IAorICAgIENyZWRlbnRpYWwgY3JlZGVudGlhbCA9IHdlYkNoYWxsZW5nZS5wcm9wb3NlZENyZWRl
bnRpYWwoKTsKKyAgICB3ZWJraXRfd2ViX2F1dGhfY2hhbGxlbmdlX3NldF91c2VyKGNoYWxsZW5n
ZSwgY3JlZGVudGlhbC51c2VyKCkudXRmOCgpLmRhdGEoKSk7CisgICAgd2Via2l0X3dlYl9hdXRo
X2NoYWxsZW5nZV9zZXRfcGFzc3dvcmQoY2hhbGxlbmdlLCBjcmVkZW50aWFsLnBhc3N3b3JkKCku
dXRmOCgpLmRhdGEoKSk7CisgICAgCisgICAgV2ViS2l0V2ViVmlldyogd2ViVmlldyA9IGdldFZp
ZXdGcm9tRnJhbWUobV9mcmFtZSk7CisgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKHdlYlZpZXcs
ICJhdXRoZW50aWNhdGlvbi1yZXF1ZXN0ZWQiLCBtX2ZyYW1lLCBjaGFsbGVuZ2UsIE5VTEwpOwog
fQogCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENhbmNlbEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyAgaWRlbnRpZmllciwg
Y29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKQpJbmRleDogV2ViS2l0L2d0ay93ZWJraXQv
d2Via2l0ZGVmaW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdGRl
ZmluZXMuaAkocmV2aXNpb24gMzA0NzUpCisrKyBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRkZWZp
bmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDYgKzQ2LDkgQEAgdHlwZWRlZiBzdHJ1Y3QgX1dl
YktpdE5ldHdvcmtSZXF1ZXN0Q2xhcwogdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYkJhY2tGb3J3
YXJkTGlzdCBXZWJLaXRXZWJCYWNrRm9yd2FyZExpc3Q7CiB0eXBlZGVmIHN0cnVjdCBfV2ViS2l0
V2ViQmFja0ZvcndhcmRMaXN0Q2xhc3MgV2ViS2l0V2ViQmFja0ZvcndhcmRMaXN0Q2xhc3M7CiAK
K3R5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJBdXRoQ2hhbGxlbmdlIFdlYktpdFdlYkF1dGhDaGFs
bGVuZ2U7Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViQXV0aENoYWxsZW5nZUNsYXNzIFdlYktp
dFdlYkF1dGhDaGFsbGVuZ2VDbGFzczsKKwogdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYkhpc3Rv
cnlJdGVtIFdlYktpdFdlYkhpc3RvcnlJdGVtOwogdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYkhp
c3RvcnlJdGVtQ2xhc3MgV2ViS2l0V2ViSGlzdG9yeUl0ZW1DbGFzczsKIApJbmRleDogV2ViS2l0
L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvd2Vi
a2l0L3dlYmtpdHByaXZhdGUuaAkocmV2aXNpb24gMzA0NzUpCisrKyBXZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXRwcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDEyICsyNywxNCBAQAogICov
CiAKICNpbmNsdWRlIDx3ZWJraXQvd2Via2l0ZGVmaW5lcy5oPgorI2luY2x1ZGUgPHdlYmtpdC93
ZWJraXR3ZWJhdXRoY2hhbGxlbmdlLmg+CiAjaW5jbHVkZSA8d2Via2l0L3dlYmtpdHdlYnZpZXcu
aD4KICNpbmNsdWRlIDx3ZWJraXQvd2Via2l0d2ViZnJhbWUuaD4KICNpbmNsdWRlIDx3ZWJraXQv
d2Via2l0d2Vic2V0dGluZ3MuaD4KICNpbmNsdWRlIDx3ZWJraXQvd2Via2l0bmV0d29ya3JlcXVl
c3QuaD4KICNpbmNsdWRlIDx3ZWJraXQvd2Via2l0d2ViYmFja2ZvcndhcmRsaXN0Lmg+CiAKKyNp
bmNsdWRlICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIgogI2luY2x1ZGUgIkJhY2tGb3J3YXJk
TGlzdC5oIgogI2luY2x1ZGUgIkhpc3RvcnlJdGVtLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIK
QEAgLTEwNSw2ICsxMDcsMTcgQEAgZXh0ZXJuICJDIiB7CiAgICAgc3RydWN0IF9XZWJLaXROZXR3
b3JrUmVxdWVzdFByaXZhdGUgewogICAgICAgICBnY2hhciogdXJpOwogICAgIH07CisgCisgICAg
I2RlZmluZSBXRUJLSVRfV0VCX0FVVEhfQ0hBTExFTkdFX0dFVF9QUklWQVRFKG9iaikgICAgKEdf
VFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURSgob2JqKSwgV0VCS0lUX1RZUEVfV0VCX0FVVEhfQ0hB
TExFTkdFLCBXZWJLaXRXZWJBdXRoQ2hhbGxlbmdlUHJpdmF0ZSkpCisgICAgdHlwZWRlZiBzdHJ1
Y3QgX1dlYktpdFdlYkF1dGhDaGFsbGVuZ2VQcml2YXRlIFdlYktpdFdlYkF1dGhDaGFsbGVuZ2VQ
cml2YXRlOworICAgIHN0cnVjdCBfV2ViS2l0V2ViQXV0aENoYWxsZW5nZVByaXZhdGUgeworICAg
ICAgICBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSogd2ViQ2hhbGxlbmdlOworICAg
ICAgICBXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSogd2ViSGFuZGxlOworICAgICAgICBnY2hhciog
dXNlcjsKKyAgICAgICAgZ2NoYXIqIHBhc3N3b3JkOworCisgICAgICAgIGdib29sZWFuIHJlc3Bv
bnNlX2ZpcmVkOworICAgIH07CiAKICAgICBXZWJLaXRXZWJGcmFtZSoKICAgICB3ZWJraXRfd2Vi
X2ZyYW1lX2luaXRfd2l0aF93ZWJfdmlldyhXZWJLaXRXZWJWaWV3KiwgV2ViQ29yZTo6SFRNTEZy
YW1lT3duZXJFbGVtZW50Kik7CkluZGV4OiBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJhdXRo
Y2hhbGxlbmdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJh
dXRoY2hhbGxlbmdlLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYktpdC9ndGsvd2Via2l0L3dlYmtp
dHdlYmF1dGhjaGFsbGVuZ2UuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI2MCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAwOCBMdWNhIEJydW5vCisgKgorICogVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAq
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisg
KiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisg
KiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKwor
I2luY2x1ZGUgIndlYmtpdHByaXZhdGUuaCIKKyNpbmNsdWRlICJ3ZWJraXR3ZWJhdXRoY2hhbGxl
bmdlLmgiCisKKyNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIgorI2luY2x1ZGUg
IkNyZWRlbnRpYWwuaCIKKyNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgorCit1c2luZyBuYW1l
c3BhY2UgV2ViS2l0OwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK2V4dGVybiAiQyIgewor
CitlbnVtIHsKKyAgICBQUk9QXzAsCisKKyAgICBQUk9QX1VTRVIsCisgICAgUFJPUF9QQVNTV09S
RCwKK307CisKK0dfREVGSU5FX1RZUEUoV2ViS2l0V2ViQXV0aENoYWxsZW5nZSwgd2Via2l0X3dl
Yl9hdXRoX2NoYWxsZW5nZSwgR19UWVBFX09CSkVDVCk7CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93
ZWJfYXV0aF9jaGFsbGVuZ2VfZ2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJv
cF9pZCwgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcHNwZWMpCit7CisgICAgV2ViS2l0V2Vi
QXV0aENoYWxsZW5nZSogY2hhbGxlbmdlID0gV0VCS0lUX1dFQl9BVVRIX0NIQUxMRU5HRShvYmpl
Y3QpOworCisgICAgc3dpdGNoKHByb3BfaWQpIHsKKyAgICBjYXNlIFBST1BfVVNFUjoKKyAgICAg
ICAgZ192YWx1ZV9zZXRfc3RyaW5nKHZhbHVlLCB3ZWJraXRfd2ViX2F1dGhfY2hhbGxlbmdlX2dl
dF91c2VyKGNoYWxsZW5nZSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfUEFTU1dP
UkQ6CisgICAgICAgIGdfdmFsdWVfc2V0X3N0cmluZyh2YWx1ZSwgd2Via2l0X3dlYl9hdXRoX2No
YWxsZW5nZV9nZXRfcGFzc3dvcmQoY2hhbGxlbmdlKSk7CisgICAgICAgIGJyZWFrOworICAgIGRl
ZmF1bHQ6CisgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3Qs
IHByb3BfaWQsIHBzcGVjKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCitzdGF0aWMgdm9p
ZCB3ZWJraXRfd2ViX2F1dGhfY2hhbGxlbmdlX3NldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3Qs
IGd1aW50IHByb3BfaWQsIGNvbnN0IEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMgKnBzcGVjKQor
eworICAgIFdlYktpdFdlYkF1dGhDaGFsbGVuZ2UqIGNoYWxsZW5nZSA9IFdFQktJVF9XRUJfQVVU
SF9DSEFMTEVOR0Uob2JqZWN0KTsKKworICAgIHN3aXRjaChwcm9wX2lkKSB7CisgICAgY2FzZSBQ
Uk9QX1VTRVI6CisgICAgICAgIHdlYmtpdF93ZWJfYXV0aF9jaGFsbGVuZ2Vfc2V0X3VzZXIoY2hh
bGxlbmdlLCBnX3ZhbHVlX2dldF9zdHJpbmcodmFsdWUpKTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBQUk9QX1BBU1NXT1JEOgorICAgICAgICB3ZWJraXRfd2ViX2F1dGhfY2hhbGxlbmdlX3Nl
dF9wYXNzd29yZChjaGFsbGVuZ2UsIGdfdmFsdWVfZ2V0X3N0cmluZyh2YWx1ZSkpOworICAgICAg
ICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJP
UEVSVFlfSUQob2JqZWN0LCBwcm9wX2lkLCBwc3BlYyk7CisgICAgfQorfQorCitzdGF0aWMgdm9p
ZCB3ZWJraXRfd2ViX2F1dGhfY2hhbGxlbmdlX2ZpbmFsaXplKEdPYmplY3QqIG9iamVjdCkKK3sK
KyAgICBXZWJLaXRXZWJBdXRoQ2hhbGxlbmdlKiBjaGFsbGVuZ2UgPSBXRUJLSVRfV0VCX0FVVEhf
Q0hBTExFTkdFKG9iamVjdCk7CisgICAgV2ViS2l0V2ViQXV0aENoYWxsZW5nZVByaXZhdGUqIHBy
aXYgPSBjaGFsbGVuZ2UtPnByaXY7CisKKyAgICBkZWxldGUgcHJpdi0+d2ViQ2hhbGxlbmdlOwor
ICAgIGdfZnJlZShwcml2LT51c2VyKTsKKyAgICBnX2ZyZWUocHJpdi0+cGFzc3dvcmQpOworCisg
ICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0X3dlYl9hdXRoX2NoYWxsZW5nZV9wYXJlbnRfY2xhc3Mp
LT5maW5hbGl6ZShvYmplY3QpOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX2F1dGhfY2hh
bGxlbmdlX2NsYXNzX2luaXQoV2ViS2l0V2ViQXV0aENoYWxsZW5nZUNsYXNzKiBjaGFsbGVuZ2VD
bGFzcykKK3sKKyAgICBnX3R5cGVfY2xhc3NfYWRkX3ByaXZhdGUoY2hhbGxlbmdlQ2xhc3MsIHNp
emVvZihXZWJLaXRXZWJBdXRoQ2hhbGxlbmdlUHJpdmF0ZSkpOworCisgICAgR09iamVjdENsYXNz
KiBvYmplY3RDbGFzcyA9IEdfT0JKRUNUX0NMQVNTKGNoYWxsZW5nZUNsYXNzKTsKKyAgICBvYmpl
Y3RDbGFzcy0+ZmluYWxpemUgPSB3ZWJraXRfd2ViX2F1dGhfY2hhbGxlbmdlX2ZpbmFsaXplOwor
ICAgIG9iamVjdENsYXNzLT5nZXRfcHJvcGVydHkgPSB3ZWJraXRfd2ViX2F1dGhfY2hhbGxlbmdl
X2dldF9wcm9wZXJ0eTsKKyAgICBvYmplY3RDbGFzcy0+c2V0X3Byb3BlcnR5ID0gd2Via2l0X3dl
Yl9hdXRoX2NoYWxsZW5nZV9zZXRfcHJvcGVydHk7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93
ZWJfYXV0aF9jaGFsbGVuZ2VfaW5pdChXZWJLaXRXZWJBdXRoQ2hhbGxlbmdlKiBjaGFsbGVuZ2Up
Cit7CisgICAgV2ViS2l0V2ViQXV0aENoYWxsZW5nZVByaXZhdGUqIHByaXYgPSBXRUJLSVRfV0VC
X0FVVEhfQ0hBTExFTkdFX0dFVF9QUklWQVRFKGNoYWxsZW5nZSk7CisgICAgY2hhbGxlbmdlLT5w
cml2ID0gcHJpdjsKKworICAgIHByaXYtPndlYkNoYWxsZW5nZSA9IG5ldyBBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSgpOworICAgIHByaXYtPndlYkhhbmRsZSA9IE5VTEw7CisgICAgcHJpdi0+dXNl
ciA9IE5VTEw7CisgICAgcHJpdi0+cGFzc3dvcmQgPSBOVUxMOworICAgIHByaXYtPnJlc3BvbnNl
X2ZpcmVkID0gRkFMU0U7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl9hdXRoX2NoYWxsZW5nZV9u
ZXc6CisgKgorICogVGhpcyBmdW5jdGlvbiByZXR1cm5zIGEgbmV3IFdlYktpdFdlYkF1dGhDaGFs
bGVuZ2Ugb2JqZWN0LgorICogVGhlIHB1cnBvc2Ugb2YgdGhpcyBjbGFzcyBpcyB0byByZXNwb25z
ZSB0byBhdXRoZW50aWNhdGlvbiByZXF1ZXN0ZWQgdG8gYWNjZXNzIHByb3RlY3RlZCB3ZWIgcmVz
b3VyY2VzLgorICoKKyAqIFVzdWFsbHkgdGhlIGFwcGxpY2F0aW9uIGRvZXNuJ3QgbmVlZCB0byBj
cmVhdGUgdGhpcyBvYmplY3QuCisgKgorICogUmV0dXJuIHZhbHVlOiB0aGUgI1dlYktpdFdlYkF1
dGhDaGFsbGVuZ2UKKyAqKi8KK1dlYktpdFdlYkF1dGhDaGFsbGVuZ2UqIHdlYmtpdF93ZWJfYXV0
aF9jaGFsbGVuZ2VfbmV3KCkKK3sKKyAgICBXZWJLaXRXZWJBdXRoQ2hhbGxlbmdlKiBjaGFsbGVu
Z2UgPSBXRUJLSVRfV0VCX0FVVEhfQ0hBTExFTkdFKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9X
RUJfQVVUSF9DSEFMTEVOR0UsIE5VTEwpKTsKKworICAgIHJldHVybiBjaGFsbGVuZ2U7Cit9CisK
Ky8qKgorICogd2Via2l0X3dlYl9hdXRoX2NoYWxsZW5nZV9zZXRfdXNlcjoKKyAqIEBjaGFsbGVu
Z2U6IGEgI1dlYktpdFdlYkF1dGhDaGFsbGVuZ2UKKyAqIEB1c2VyOiBhIHN0cmluZyB3aXRoIHRo
ZSB1c2VybmFtZQorICoKKyAqIFNldCB0aGUgdXNlcm5hbWUgZm9yIHRoZSBhdXRoZW50aWNhdGlv
biBAY2hhbGxlbmdlLgorICovCit2b2lkIHdlYmtpdF93ZWJfYXV0aF9jaGFsbGVuZ2Vfc2V0X3Vz
ZXIoV2ViS2l0V2ViQXV0aENoYWxsZW5nZSogY2hhbGxlbmdlLCBjb25zdCBnY2hhciogdXNlcikK
K3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfQVVUSF9DSEFMTEVOR0UoY2hh
bGxlbmdlKSk7CisgICAgZ19yZXR1cm5faWZfZmFpbCh1c2VyKTsKKworICAgIFdlYktpdFdlYkF1
dGhDaGFsbGVuZ2VQcml2YXRlKiBwcml2ID0gY2hhbGxlbmdlLT5wcml2OworCisgICAgZ19mcmVl
KHByaXYtPnVzZXIpOworICAgIHByaXYtPnVzZXIgPSBnX3N0cmR1cCh1c2VyKTsKK30KKworLyoq
CisgKiB3ZWJraXRfd2ViX2F1dGhfY2hhbGxlbmdlX2dldF91c2VyCisgKiBAY2hhbGxlbmdlOiBh
ICNXZWJLaXRXZWJBdXRoQ2hhbGxlbmdlCisgKgorICogUmV0dXJucyB0aGUgY3VycmVudCB1c2Vy
bmFtZSB1c2VkIGJ5IHRoZSBhdXRoZW50aWNhdGlvbiBAY2hhbGxlbmdlLgorICoKKyAqIFJldHVy
biB2YWx1ZTogdGhlIHVzZXJuYW1lCisgKi8KK2NvbnN0IGdjaGFyKiB3ZWJraXRfd2ViX2F1dGhf
Y2hhbGxlbmdlX2dldF91c2VyKFdlYktpdFdlYkF1dGhDaGFsbGVuZ2UqIGNoYWxsZW5nZSkKK3sK
KyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX0FVVEhfQ0hBTExFTkdFKGNo
YWxsZW5nZSksIE5VTEwpOworCisgICAgV2ViS2l0V2ViQXV0aENoYWxsZW5nZVByaXZhdGUqIHBy
aXYgPSBjaGFsbGVuZ2UtPnByaXY7CisKKyAgICByZXR1cm4gcHJpdi0+dXNlcjsKK30KKworLyoq
CisgKiB3ZWJraXRfd2ViX2F1dGhfY2hhbGxlbmdlX3NldF9wYXNzd29yZDoKKyAqIEBjaGFsbGVu
Z2U6IGEgI1dlYktpdFdlYkF1dGhDaGFsbGVuZ2UKKyAqIEBwYXNzd29yZDogYSBzdHJpbmcgd2l0
aCB0aGUgcGFzc3dvcmQKKyAqCisgKiBTZXQgdGhlIHBhc3N3b3JkIGZvciB0aGUgYXV0aGVudGlj
YXRpb24gQGNoYWxsZW5nZS4KKyAqLwordm9pZCB3ZWJraXRfd2ViX2F1dGhfY2hhbGxlbmdlX3Nl
dF9wYXNzd29yZChXZWJLaXRXZWJBdXRoQ2hhbGxlbmdlKiBjaGFsbGVuZ2UsIGNvbnN0IGdjaGFy
KiBwYXNzd29yZCkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfQVVUSF9D
SEFMTEVOR0UoY2hhbGxlbmdlKSk7CisgICAgZ19yZXR1cm5faWZfZmFpbChwYXNzd29yZCk7CisK
KyAgICBXZWJLaXRXZWJBdXRoQ2hhbGxlbmdlUHJpdmF0ZSogcHJpdiA9IGNoYWxsZW5nZS0+cHJp
djsKKworICAgIGdfZnJlZShwcml2LT5wYXNzd29yZCk7CisgICAgcHJpdi0+cGFzc3dvcmQgPSBn
X3N0cmR1cChwYXNzd29yZCk7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl9hdXRoX2NoYWxsZW5n
ZV9nZXRfcGFzc3dvcmQKKyAqIEBjaGFsbGVuZ2U6IGEgI1dlYktpdFdlYkF1dGhDaGFsbGVuZ2UK
KyAqCisgKiBSZXR1cm5zIHRoZSBjdXJyZW50IHBhc3N3b3JkIHVzZWQgYnkgdGhlIGF1dGhlbnRp
Y2F0aW9uIEBjaGFsbGVuZ2UuCisgKgorICogUmV0dXJuIHZhbHVlOiB0aGUgcGFzc3dvcmQKKyAq
LworY29uc3QgZ2NoYXIqIHdlYmtpdF93ZWJfYXV0aF9jaGFsbGVuZ2VfZ2V0X3Bhc3N3b3JkKFdl
YktpdFdlYkF1dGhDaGFsbGVuZ2UqIGNoYWxsZW5nZSkKK3sKKyAgICBnX3JldHVybl92YWxfaWZf
ZmFpbChXRUJLSVRfSVNfV0VCX0FVVEhfQ0hBTExFTkdFKGNoYWxsZW5nZSksIE5VTEwpOworCisg
ICAgV2ViS2l0V2ViQXV0aENoYWxsZW5nZVByaXZhdGUqIHByaXYgPSBjaGFsbGVuZ2UtPnByaXY7
CisKKyAgICByZXR1cm4gcHJpdi0+cGFzc3dvcmQ7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl9h
dXRoX2NoYWxsZW5nZV91c2VfY3JlZGVudGlhbAorICogQGNoYWxsZW5nZTogYSAjV2ViS2l0V2Vi
QXV0aENoYWxsZW5nZQorICoKKyAqIFJlc3BvbnNlIHRoZSBjcmVkZW50aWFsIG9mIEBjaGFsbGVu
Z2UgdG8gYmUgdXNlZCBmb3IgdGhlIHJlcXVlc3RlZCBhdXRoZW50aWNhdGlvbi4KKyAqCisgKiBB
ZnRlciB0aGlzIHJlc3BvbnNlLCB0aGUgQGNoYWxsZW5nZSBjYW4ndCBiZSB1c2VkIGZvciBhbnkg
ZnVydGhlciByZXNwb25zZXMgb24gdGhlCisgKiBzYW1lIGF1dGhlbnRpY2F0aW9uIHJlcXVlc3Qu
CisgKi8KK3ZvaWQgd2Via2l0X3dlYl9hdXRoX2NoYWxsZW5nZV91c2VfY3JlZGVudGlhbChXZWJL
aXRXZWJBdXRoQ2hhbGxlbmdlKiBjaGFsbGVuZ2UpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChX
RUJLSVRfSVNfV0VCX0FVVEhfQ0hBTExFTkdFKGNoYWxsZW5nZSkpOworCisgICAgV2ViS2l0V2Vi
QXV0aENoYWxsZW5nZVByaXZhdGUqIHByaXYgPSBjaGFsbGVuZ2UtPnByaXY7CisgICAgZ19yZXR1
cm5faWZfZmFpbCghcHJpdi0+cmVzcG9uc2VfZmlyZWQpOworCisgICAgQ3JlZGVudGlhbCBjcmVk
ZW50aWFsID0gQ3JlZGVudGlhbChTdHJpbmc6OmZyb21VVEY4KHByaXYtPnVzZXIpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nOjpmcm9tVVRGOChwcml2LT5w
YXNzd29yZCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDcmVkZW50
aWFsUGVyc2lzdGVuY2VGb3JTZXNzaW9uKTsKKyAgICBwcml2LT53ZWJIYW5kbGUtPnJlY2VpdmVk
Q3JlZGVudGlhbCgqcHJpdi0+d2ViQ2hhbGxlbmdlLCBjcmVkZW50aWFsKTsKKyAgICBwcml2LT5y
ZXNwb25zZV9maXJlZCA9IFRSVUU7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl9hdXRoX2NoYWxs
ZW5nZV9jb250aW51ZV93aXRob3V0X2NyZWRlbnRpYWwKKyAqIEBjaGFsbGVuZ2U6IGEgI1dlYktp
dFdlYkF1dGhDaGFsbGVuZ2UKKyAqCisgKiBSZXNwb25zZSB0byBjb250aW51ZSBsb2FkaW5nIHRo
ZSByZXF1ZXN0ZWQgcmVzb3VyY2Ugd2l0aG91dCBhbnkgY3JlZGVudGlhbC4KKyAqCisgKiBBZnRl
ciB0aGlzIHJlc3BvbnNlLCB0aGUgQGNoYWxsZW5nZSBjYW4ndCBiZSB1c2VkIGZvciBhbnkgZnVy
dGhlciByZXNwb25zZXMgb24gdGhlCisgKiBzYW1lIGF1dGhlbnRpY2F0aW9uIHJlcXVlc3QuCisg
Ki8KK3ZvaWQgd2Via2l0X3dlYl9hdXRoX2NoYWxsZW5nZV9jb250aW51ZV93aXRob3V0X2NyZWRl
bnRpYWwoV2ViS2l0V2ViQXV0aENoYWxsZW5nZSogY2hhbGxlbmdlKQoreworICAgIGdfcmV0dXJu
X2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9BVVRIX0NIQUxMRU5HRShjaGFsbGVuZ2UpKTsKKworICAg
IFdlYktpdFdlYkF1dGhDaGFsbGVuZ2VQcml2YXRlKiBwcml2ID0gY2hhbGxlbmdlLT5wcml2Owor
ICAgIGdfcmV0dXJuX2lmX2ZhaWwoIXByaXYtPnJlc3BvbnNlX2ZpcmVkKTsKKworICAgIHByaXYt
PndlYkhhbmRsZS0+cmVjZWl2ZWRSZXF1ZXN0VG9Db250aW51ZVdpdGhvdXRDcmVkZW50aWFsKCpw
cml2LT53ZWJDaGFsbGVuZ2UpOworICAgIHByaXYtPnJlc3BvbnNlX2ZpcmVkID0gVFJVRTsKK30K
KworLyoqCisgKiB3ZWJraXRfd2ViX2F1dGhfY2hhbGxlbmdlX2NhbmNlbAorICogQGNoYWxsZW5n
ZTogYSAjV2ViS2l0V2ViQXV0aENoYWxsZW5nZQorICoKKyAqIFJlc3BvbnNlIHRvIGNhbmNlbCB0
aGUgY3VycmVudCBhdXRoZW50aWNhdGlvbiBAY2hhbGxlbmdlIGZvciB0aGUgcmVxdWVzdGVkIHJl
c291cmNlLgorICoKKyAqIEFmdGVyIHRoaXMgcmVzcG9uc2UsIHRoZSBAY2hhbGxlbmdlIGNhbid0
IGJlIHVzZWQgZm9yIGFueSBmdXJ0aGVyIHJlc3BvbnNlcyBvbiB0aGUKKyAqIHNhbWUgYXV0aGVu
dGljYXRpb24gcmVxdWVzdC4KKyAqLwordm9pZCB3ZWJraXRfd2ViX2F1dGhfY2hhbGxlbmdlX2Nh
bmNlbChXZWJLaXRXZWJBdXRoQ2hhbGxlbmdlKiBjaGFsbGVuZ2UpCit7CisgICAgZ19yZXR1cm5f
aWZfZmFpbChXRUJLSVRfSVNfV0VCX0FVVEhfQ0hBTExFTkdFKGNoYWxsZW5nZSkpOworCisgICAg
V2ViS2l0V2ViQXV0aENoYWxsZW5nZVByaXZhdGUqIHByaXYgPSBjaGFsbGVuZ2UtPnByaXY7Cisg
ICAgZ19yZXR1cm5faWZfZmFpbCghcHJpdi0+cmVzcG9uc2VfZmlyZWQpOworCisgICAgcHJpdi0+
d2ViSGFuZGxlLT5yZWNlaXZlZENhbmNlbGxhdGlvbigqcHJpdi0+d2ViQ2hhbGxlbmdlKTsKKyAg
ICBwcml2LT5yZXNwb25zZV9maXJlZCA9IFRSVUU7Cit9CisKK30KSW5kZXg6IFdlYktpdC9ndGsv
d2Via2l0L3dlYmtpdHdlYmF1dGhjaGFsbGVuZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3Rr
L3dlYmtpdC93ZWJraXR3ZWJhdXRoY2hhbGxlbmdlLmgJKHJldmlzaW9uIDApCisrKyBXZWJLaXQv
Z3RrL3dlYmtpdC93ZWJraXR3ZWJhdXRoY2hhbGxlbmdlLmgJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggTHVjYSBCcnVubworICoKKyAqIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisg
KiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIFdF
QktJVF9XRUJfQVVUSF9DSEFMTEVOR0VfSAorI2RlZmluZSBXRUJLSVRfV0VCX0FVVEhfQ0hBTExF
TkdFX0gKKworI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CisKKyNpbmNsdWRlICJ3ZWJraXRkZWZp
bmVzLmgiCisKK0dfQkVHSU5fREVDTFMKKworI2RlZmluZSBXRUJLSVRfVFlQRV9XRUJfQVVUSF9D
SEFMTEVOR0UgICAgICAgICAgICAod2Via2l0X3dlYl9hdXRoX2NoYWxsZW5nZV9nZXRfdHlwZSgp
KQorI2RlZmluZSBXRUJLSVRfV0VCX0FVVEhfQ0hBTExFTkdFKG9iaikgICAgICAgICAgICAgKEdf
VFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmopLCBXRUJLSVRfVFlQRV9XRUJfQVVUSF9DSEFM
TEVOR0UsIFdlYktpdFdlYkF1dGhDaGFsbGVuZ2UpKQorI2RlZmluZSBXRUJLSVRfV0VCX0FVVEhf
Q0hBTExFTkdFX0NMQVNTKGtsYXNzKSAgICAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUKChrbGFz
cyksICBXRUJLSVRfVFlQRV9XRUJfQVVUSF9DSEFMTEVOR0UsIFdlYktpdFdlYkF1dGhDaGFsbGVu
Z2VDbGFzcykpCisjZGVmaW5lIFdFQktJVF9JU19XRUJfQVVUSF9DSEFMTEVOR0Uob2JqKSAgICAg
ICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2JqKSwgV0VCS0lUX1RZUEVfV0VCX0FV
VEhfQ0hBTExFTkdFKSkKKyNkZWZpbmUgV0VCS0lUX0lTX1dFQl9BVVRIX0NIQUxMRU5HRV9DTEFT
UyhrbGFzcykgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyksICBXRUJLSVRfVFlQRV9X
RUJfQVVUSF9DSEFMTEVOR0UpKQorI2RlZmluZSBXRUJLSVRfV0VCX0FVVEhfQ0hBTExFTkdFX0dF
VF9DTEFTUyhvYmopICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygob2JqKSwgIFdFQktJVF9U
WVBFX1dFQl9BVVRIX0NIQUxMRU5HRSwgV2ViS2l0V2ViQXV0aENoYWxsZW5nZUNsYXNzKSkKKwor
dHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYkF1dGhDaGFsbGVuZ2VQcml2YXRlIFdlYktpdFdlYkF1
dGhDaGFsbGVuZ2VQcml2YXRlOworCitzdHJ1Y3QgX1dlYktpdFdlYkF1dGhDaGFsbGVuZ2Ugewor
ICAgIEdPYmplY3QgcGFyZW50OworCisgICAgV2ViS2l0V2ViQXV0aENoYWxsZW5nZVByaXZhdGUq
IHByaXY7Cit9OworCitzdHJ1Y3QgX1dlYktpdFdlYkF1dGhDaGFsbGVuZ2VDbGFzcyB7CisgICAg
R09iamVjdENsYXNzIHBhcmVudDsKK307CisKK1dFQktJVF9BUEkgR1R5cGUKK3dlYmtpdF93ZWJf
YXV0aF9jaGFsbGVuZ2VfZ2V0X3R5cGUgKHZvaWQpOworCitXRUJLSVRfQVBJIFdlYktpdFdlYkF1
dGhDaGFsbGVuZ2UqCit3ZWJraXRfd2ViX2F1dGhfY2hhbGxlbmdlX25ldyAoKTsKKworV0VCS0lU
X0FQSSB2b2lkCit3ZWJraXRfd2ViX2F1dGhfY2hhbGxlbmdlX3NldF91c2VyIChXZWJLaXRXZWJB
dXRoQ2hhbGxlbmdlKiBjaGFsbGVuZ2UsIGNvbnN0IGdjaGFyKiB1c2VyKTsKKworV0VCS0lUX0FQ
SSBjb25zdCBnY2hhcioKK3dlYmtpdF93ZWJfYXV0aF9jaGFsbGVuZ2VfZ2V0X3VzZXIgKFdlYktp
dFdlYkF1dGhDaGFsbGVuZ2UqIGNoYWxsZW5nZSk7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0
X3dlYl9hdXRoX2NoYWxsZW5nZV9zZXRfcGFzc3dvcmQgKFdlYktpdFdlYkF1dGhDaGFsbGVuZ2Uq
IGNoYWxsZW5nZSwgY29uc3QgZ2NoYXIqIHBhc3N3b3JkKTsKKworV0VCS0lUX0FQSSBjb25zdCBn
Y2hhcioKK3dlYmtpdF93ZWJfYXV0aF9jaGFsbGVuZ2VfZ2V0X3Bhc3N3b3JkIChXZWJLaXRXZWJB
dXRoQ2hhbGxlbmdlKiBjaGFsbGVuZ2UpOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF93ZWJf
YXV0aF9jaGFsbGVuZ2VfdXNlX2NyZWRlbnRpYWwgKFdlYktpdFdlYkF1dGhDaGFsbGVuZ2UqIGNo
YWxsZW5nZSk7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3dlYl9hdXRoX2NoYWxsZW5nZV9j
b250aW51ZV93aXRob3V0X2NyZWRlbnRpYWwgKFdlYktpdFdlYkF1dGhDaGFsbGVuZ2UqIGNoYWxs
ZW5nZSk7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3dlYl9hdXRoX2NoYWxsZW5nZV9jYW5j
ZWwgKFdlYktpdFdlYkF1dGhDaGFsbGVuZ2UqIGNoYWxsZW5nZSk7CisKK0dfRU5EX0RFQ0xTCisK
KyNlbmRpZgpJbmRleDogV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAJKHJldmlzaW9uIDMw
NDc1KQorKysgV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTg1LDYgKzg1LDcgQEAgZW51bSB7CiAgICAgQ09QWV9DTElQQk9BUkQsCiAgICAgUEFT
VEVfQ0xJUEJPQVJELAogICAgIENVVF9DTElQQk9BUkQsCisgICAgQVVUSEVOVElDQVRJT05fUkVR
VUVTVEVELAogICAgIExBU1RfU0lHTkFMCiB9OwogCkBAIC0zOTUsNyArMzk2LDcgQEAgc3RhdGlj
IGdib29sZWFuIHdlYmtpdF93ZWJfdmlld19mb2N1c19pbgogICAgIEd0a1dpZGdldCogdG9wbGV2
ZWwgPSBndGtfd2lkZ2V0X2dldF90b3BsZXZlbCh3aWRnZXQpOwogICAgIGlmIChHVEtfV0lER0VU
X1RPUExFVkVMKHRvcGxldmVsKSAmJiBndGtfd2luZG93X2hhc190b3BsZXZlbF9mb2N1cyhHVEtf
V0lORE9XKHRvcGxldmVsKSkpIHsKICAgICAgICAgV2ViS2l0V2ViVmlldyogd2ViVmlldyA9IFdF
QktJVF9XRUJfVklFVyh3aWRnZXQpOwotCisgICAgICAgIAogICAgICAgICBGcmFtZSogZnJhbWUg
PSBjb3JlKHdlYlZpZXcpLT5tYWluRnJhbWUoKTsKICAgICAgICAgY29yZSh3ZWJWaWV3KS0+Zm9j
dXNDb250cm9sbGVyKCktPnNldEFjdGl2ZShmcmFtZSk7CiAgICAgfQpAQCAtNjIxLDYgKzYyMiw4
MiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9wYXN0ZV9jCiAgICAgZnJhbWUt
PmVkaXRvcigpLT5jb21tYW5kKCJQYXN0ZSIpLmV4ZWN1dGUoKTsKIH0KIAordHlwZWRlZiBzdHJ1
Y3QKK3sKKyAgICBHdGtXaWRnZXQqIHVzZXJfZW50cnk7CisgICAgR3RrV2lkZ2V0KiBwYXNzd29y
ZF9lbnRyeTsKKyAgICBXZWJLaXRXZWJBdXRoQ2hhbGxlbmdlKiBjaGFsbGVuZ2U7Cit9IEF1dGhE
aWFsb2dEYXRhOworCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfd2ViX2F1dGhfZGlhbG9n
X3Jlc3BvbnNlX2NiKEd0a1dpZGdldCogZGlhbG9nLCBnaW50IHJlc3BvbnNlLCBncG9pbnRlciB1
c2VyX2RhdGEpCit7CisgICAgQXV0aERpYWxvZ0RhdGEqIGRhdGEgPSByZWludGVycHJldF9jYXN0
PEF1dGhEaWFsb2dEYXRhKj4odXNlcl9kYXRhKTsKKworICAgIHN3aXRjaCAocmVzcG9uc2UpIHsK
KyAgICBjYXNlIEdUS19SRVNQT05TRV9OT05FOgorICAgIGNhc2UgR1RLX1JFU1BPTlNFX0RFTEVU
RV9FVkVOVDoKKyAgICBjYXNlIEdUS19SRVNQT05TRV9SRUpFQ1Q6CisgICAgICAgIHdlYmtpdF93
ZWJfYXV0aF9jaGFsbGVuZ2VfY29udGludWVfd2l0aG91dF9jcmVkZW50aWFsKGRhdGEtPmNoYWxs
ZW5nZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgR1RLX1JFU1BPTlNFX0FDQ0VQVDoKKyAg
ICAgICAgd2Via2l0X3dlYl9hdXRoX2NoYWxsZW5nZV9zZXRfdXNlcihkYXRhLT5jaGFsbGVuZ2Us
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3RrX2Vu
dHJ5X2dldF90ZXh0KEdUS19FTlRSWShkYXRhLT51c2VyX2VudHJ5KSkpOworICAgICAgICB3ZWJr
aXRfd2ViX2F1dGhfY2hhbGxlbmdlX3NldF9wYXNzd29yZChkYXRhLT5jaGFsbGVuZ2UsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd0a19lbnRy
eV9nZXRfdGV4dChHVEtfRU5UUlkoZGF0YS0+cGFzc3dvcmRfZW50cnkpKSk7CisgICAgICAgIHdl
YmtpdF93ZWJfYXV0aF9jaGFsbGVuZ2VfdXNlX2NyZWRlbnRpYWwoZGF0YS0+Y2hhbGxlbmdlKTsK
KyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgZ19hc3NlcnRfbm90X3JlYWNo
ZWQgKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGd0a193aWRnZXRfZGVzdHJveShk
aWFsb2cpOworICAgIGdfb2JqZWN0X3VucmVmKGRhdGEtPmNoYWxsZW5nZSk7Cit9CisKK3N0YXRp
YyB2b2lkIHdlYmtpdF93ZWJfdmlld19yZWFsX2F1dGhlbnRpY2F0aW9uX3JlcXVlc3RlZChXZWJL
aXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRXZWJGcmFtZSogd2ViRnJhbWUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0V2Vi
QXV0aENoYWxsZW5nZSogY2hhbGxlbmdlKQoreworICAgIEd0a1dpZGdldCogd2luZG93OworICAg
IEd0a1dpZGdldCogZGlhbG9nOworICAgIEd0a1dpZGdldCogdGFibGU7CisgICAgR3RrV2lkZ2V0
KiBsYWJlbDsKKyAgICBBdXRoRGlhbG9nRGF0YSogZGF0YTsKKworICAgIHdpbmRvdyA9IGd0a193
aWRnZXRfZ2V0X3RvcGxldmVsKEdUS19XSURHRVQod2ViVmlldykpOworICAgIGdjaGFyKiB0aXRs
ZSA9IGdfc3RyY29uY2F0KCJBdXRoZW50aWNhdGlvbiAtICIsIHdlYmtpdF93ZWJfZnJhbWVfZ2V0
X3VyaSh3ZWJGcmFtZSksIE5VTEwpOworICAgIGRpYWxvZyA9IGd0a19kaWFsb2dfbmV3X3dpdGhf
YnV0dG9ucyh0aXRsZSwgR1RLX1dJREdFVF9UT1BMRVZFTCh3aW5kb3cpID8gR1RLX1dJTkRPVyh3
aW5kb3cpIDogMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEd0
a0RpYWxvZ0ZsYWdzKShHVEtfRElBTE9HX01PREFMIHwgR1RLX0RJQUxPR19ERVNUUk9ZX1dJVEhf
UEFSRU5UKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1RLX1NU
T0NLX09LLCBHVEtfUkVTUE9OU0VfQUNDRVBULAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHVEtfU1RPQ0tfQ0FOQ0VMLCBHVEtfUkVTUE9OU0VfUkVKRUNULAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKyAgICBnX2ZyZWUo
dGl0bGUpOworICAgIGd0a19kaWFsb2dfc2V0X2RlZmF1bHRfcmVzcG9uc2UoR1RLX0RJQUxPRyhk
aWFsb2cpLCBHVEtfUkVTUE9OU0VfUkVKRUNUKTsKKworICAgIGRhdGEgPSBnX25ldyhBdXRoRGlh
bG9nRGF0YSwgMSk7CisgICAgZGF0YS0+dXNlcl9lbnRyeSA9IGd0a19lbnRyeV9uZXcoKTsKKyAg
ICBkYXRhLT5wYXNzd29yZF9lbnRyeSA9IGd0a19lbnRyeV9uZXcoKTsKKyAgICBndGtfZW50cnlf
c2V0X3Zpc2liaWxpdHkoR1RLX0VOVFJZKGRhdGEtPnBhc3N3b3JkX2VudHJ5KSwgRkFMU0UpOwor
ICAgIGRhdGEtPmNoYWxsZW5nZSA9IGNoYWxsZW5nZTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KGRp
YWxvZywgInJlc3BvbnNlIiwgR19DQUxMQkFDSyh3ZWJraXRfd2ViX3ZpZXdfd2ViX2F1dGhfZGlh
bG9nX3Jlc3BvbnNlX2NiKSwgZGF0YSk7CisKKyAgICB0YWJsZSA9IGd0a190YWJsZV9uZXcoMiwg
MiwgRkFMU0UpOworICAgIGd0a190YWJsZV9zZXRfY29sX3NwYWNpbmdzKEdUS19UQUJMRSh0YWJs
ZSksIDMpOworICAgIGd0a190YWJsZV9zZXRfcm93X3NwYWNpbmdzKEdUS19UQUJMRSh0YWJsZSks
IDMpOworCisgICAgbGFiZWwgPSBndGtfbGFiZWxfbmV3KCJVc2VybmFtZToiKTsKKyAgICBndGtf
dGFibGVfYXR0YWNoX2RlZmF1bHRzKEdUS19UQUJMRSh0YWJsZSksIGxhYmVsLCAwLCAxLCAwLCAx
KTsKKyAgICBndGtfdGFibGVfYXR0YWNoX2RlZmF1bHRzKEdUS19UQUJMRSh0YWJsZSksIGRhdGEt
PnVzZXJfZW50cnksIDEsIDIsIDAsIDEpOworCisgICAgbGFiZWwgPSBndGtfbGFiZWxfbmV3KCJQ
YXNzd29yZDoiKTsKKyAgICBndGtfdGFibGVfYXR0YWNoX2RlZmF1bHRzKEdUS19UQUJMRSh0YWJs
ZSksIGxhYmVsLCAwLCAxLCAxLCAyKTsKKyAgICBndGtfdGFibGVfYXR0YWNoX2RlZmF1bHRzKEdU
S19UQUJMRSh0YWJsZSksIGRhdGEtPnBhc3N3b3JkX2VudHJ5LCAxLCAyLCAxLCAyKTsKKworICAg
IGd0a19jb250YWluZXJfYWRkKEdUS19DT05UQUlORVIoR1RLX0RJQUxPRyhkaWFsb2cpLT52Ym94
KSwgdGFibGUpOworICAgIGd0a193aWRnZXRfc2hvd19hbGwodGFibGUpOworICAgIGd0a193aWRn
ZXRfc2hvdyhkaWFsb2cpOworfQorCiBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfZmluYWxp
emUoR09iamVjdCogb2JqZWN0KQogewogICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSBXRUJL
SVRfV0VCX1ZJRVcob2JqZWN0KTsKQEAgLTk4Nyw2ICsxMDY0LDI1IEBAIHN0YXRpYyB2b2lkIHdl
YmtpdF93ZWJfdmlld19jbGFzc19pbml0KFcKICAgICAgICAgICAgIGdfY2Nsb3N1cmVfbWFyc2hh
bF9WT0lEX19WT0lELAogICAgICAgICAgICAgR19UWVBFX05PTkUsIDApOwogCisgICAgLyoqCisg
ICAgICogV2ViS2l0V2ViVmlldzo6YXV0aGVudGljYXRpb24tcmVxdWVzdGVkOgorICAgICAqIEB3
ZWJfdmlldzogdGhlIG9iamVjdCB3aGljaCByZWNlaXZlZCB0aGUgc2lnbmFsCisgICAgICoKKyAg
ICAgKiBUaGUgOjphdXRoZW50aWNhdGlvbi1yZXF1ZXN0ZWQgc2lnbmFsIGlzIGVtaXR0ZWQgd2hl
biBhbiBhdXRoZW50aWNhdGlvbiBpcworICAgICAqIHJlcXVlc3RlZCBmcm9tIHRoZSBzZXJ2ZXIg
dG8gYWNjZXNzIGEgcmVzb3VyY2UuCisgICAgICoKKyAgICAgKiBUaGUgZGVmYXVsdCBiZWhhdmlv
ciBmb3IgdGhpcyBzaWduYWwgaXMgY3JlYXRpbmcgYW4gaW5wdXQgZGlhbG9nIHRvIGdldCBhIHN1
aXRhYmxlIGNyZWRlbnRpYWwuCisgICAgICovCisgICAgd2Via2l0X3dlYl92aWV3X3NpZ25hbHNb
QVVUSEVOVElDQVRJT05fUkVRVUVTVEVEXSA9IGdfc2lnbmFsX25ldygiYXV0aGVudGljYXRpb24t
cmVxdWVzdGVkIiwKKyAgICAgICAgICAgIEdfVFlQRV9GUk9NX0NMQVNTKHdlYlZpZXdDbGFzcyks
CisgICAgICAgICAgICAoR1NpZ25hbEZsYWdzKShHX1NJR05BTF9SVU5fTEFTVCB8IEdfU0lHTkFM
X0FDVElPTiksCisgICAgICAgICAgICBHX1NUUlVDVF9PRkZTRVQoV2ViS2l0V2ViVmlld0NsYXNz
LCBhdXRoZW50aWNhdGlvbl9yZXF1ZXN0ZWQpLAorICAgICAgICAgICAgTlVMTCwgTlVMTCwKKyAg
ICAgICAgICAgIHdlYmtpdF9tYXJzaGFsX1ZPSURfX09CSkVDVF9PQkpFQ1QsCisgICAgICAgICAg
ICBHX1RZUEVfTk9ORSwgMiwKKyAgICAgICAgICAgIFdFQktJVF9UWVBFX1dFQl9GUkFNRSwKKyAg
ICAgICAgICAgIFdFQktJVF9UWVBFX1dFQl9BVVRIX0NIQUxMRU5HRSk7CisKICAgICAvKgogICAg
ICAqIGltcGxlbWVudGF0aW9ucyBvZiB2aXJ0dWFsIG1ldGhvZHMKICAgICAgKi8KQEAgLTEwMDIs
NiArMTA5OCw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KFcKICAg
ICB3ZWJWaWV3Q2xhc3MtPmN1dF9jbGlwYm9hcmQgPSB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9jdXRf
Y2xpcGJvYXJkOwogICAgIHdlYlZpZXdDbGFzcy0+Y29weV9jbGlwYm9hcmQgPSB3ZWJraXRfd2Vi
X3ZpZXdfcmVhbF9jb3B5X2NsaXBib2FyZDsKICAgICB3ZWJWaWV3Q2xhc3MtPnBhc3RlX2NsaXBi
b2FyZCA9IHdlYmtpdF93ZWJfdmlld19yZWFsX3Bhc3RlX2NsaXBib2FyZDsKKyAgICB3ZWJWaWV3
Q2xhc3MtPmF1dGhlbnRpY2F0aW9uX3JlcXVlc3RlZCA9IHdlYmtpdF93ZWJfdmlld19yZWFsX2F1
dGhlbnRpY2F0aW9uX3JlcXVlc3RlZDsKIAogICAgIEdPYmplY3RDbGFzcyogb2JqZWN0Q2xhc3Mg
PSBHX09CSkVDVF9DTEFTUyh3ZWJWaWV3Q2xhc3MpOwogICAgIG9iamVjdENsYXNzLT5maW5hbGl6
ZSA9IHdlYmtpdF93ZWJfdmlld19maW5hbGl6ZTsKSW5kZXg6IFdlYktpdC9ndGsvd2Via2l0L3dl
YmtpdHdlYnZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2
aWV3LmgJKHJldmlzaW9uIDMwNDc1KQorKysgV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmll
dy5oCSh3b3JraW5nIGNvcHkpCkBAIC04NCw2ICs4NCw3IEBAIHN0cnVjdCBfV2ViS2l0V2ViVmll
d0NsYXNzIHsKICAgICB2b2lkICgqY3V0X2NsaXBib2FyZCkgKFdlYktpdFdlYlZpZXcqIHdlYl92
aWV3KTsKICAgICB2b2lkICgqY29weV9jbGlwYm9hcmQpIChXZWJLaXRXZWJWaWV3KiB3ZWJfdmll
dyk7CiAgICAgdm9pZCAoKnBhc3RlX2NsaXBib2FyZCkgKFdlYktpdFdlYlZpZXcqIHdlYl92aWV3
KTsKKyAgICB2b2lkICgqYXV0aGVudGljYXRpb25fcmVxdWVzdGVkKSAoV2ViS2l0V2ViVmlldyog
d2ViX3ZpZXcsIFdlYktpdFdlYkZyYW1lKiB3ZWJfZnJhbWUsIFdlYktpdFdlYkF1dGhDaGFsbGVu
Z2UqIHdlYl9hdXRoX2NoYWxsZW5nZSk7CiAKICAgICAvKgogICAgICAqIGludGVybmFsCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>19324</attachid>
            <date>2008-02-24 12:25:59 -0800</date>
            <delta_ts>2008-04-02 05:52:26 -0700</delta_ts>
            <desc>keep the source handle</desc>
            <filename>auth.patch</filename>
            <type>text/plain</type>
            <size>35979</size>
            <attacher name="Luca Bruno">lethalman88</attacher>
            
              <data encoding="base64">SW5kZXg6IEdOVW1ha2VmaWxlLmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEdOVW1ha2VmaWxlLmFtCShyZXZp
c2lvbiAzMDU0OSkKKysrIEdOVW1ha2VmaWxlLmFtCSh3b3JraW5nIGNvcHkpCkBAIC0yNjQsNiAr
MjY0LDcgQEAgd2Via2l0Z3RrX2hfYXBpICs9IFwKIAlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXQu
aCBcCiAJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0ZGVmaW5lcy5oIFwKIAlXZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXRuZXR3b3JrcmVxdWVzdC5oIFwKKwlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3
ZWJhdXRoY2hhbGxlbmdlLmggXAogCVdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmJhY2tmb3J3
YXJkbGlzdC5oIFwKIAlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJmcmFtZS5oIFwKIAlXZWJL
aXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJoaXN0b3J5aXRlbS5oIFwKQEAgLTI4Nyw2ICsyODgsNyBA
QCB3ZWJraXRndGtfaGVhZGVycyArPSBcCiB3ZWJraXRndGtfc291cmNlcyArPSBcCiAJV2ViS2l0
L2d0ay93ZWJraXQvd2Via2l0bmV0d29ya3JlcXVlc3QuY3BwIFwKIAlXZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXRwcml2YXRlLmNwcCBcCisJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViYXV0aGNo
YWxsZW5nZS5jcHAgXAogCVdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmJhY2tmb3J3YXJkbGlz
dC5jcHAgXAogCVdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmZyYW1lLmNwcCBcCiAJV2ViS2l0
L2d0ay93ZWJraXQvd2Via2l0d2ViaGlzdG9yeWl0ZW0uY3BwIFwKSW5kZXg6IFdlYkNvcmUvR05V
bWFrZWZpbGUuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQkocmV2aXNp
b24gMzA1NDkpCisrKyBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCSh3b3JraW5nIGNvcHkpCkBAIC05
OTYsNiArOTk2LDcgQEAgd2ViY29yZV9jcHBmbGFncyArPSBcCiAJLUkkKHNyY2RpcikvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwKIAogd2ViY29yZV9zb3VyY2VzICs9IFwKKwlXZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZUN1cmwuY3BwIFwK
IAlXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwIFwK
IAlXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZU1hbmFnZXIuY3Bw
CiAKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5wcm8KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJD
b3JlLnBybwkocmV2aXNpb24gMzA1NDkpCisrKyBXZWJDb3JlL1dlYkNvcmUucHJvCSh3b3JraW5n
IGNvcHkpCkBAIC05OTgsNiArOTk4LDcgQEAgZ3RrLXBvcnQgewogICAgICAgICAuLi9XZWJLaXQv
Z3RrL3dlYmtpdC93ZWJraXRkZWZpbmVzLmggXAogICAgICAgICAuLi9XZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXRuZXR3b3JrcmVxdWVzdC5oIFwKICAgICAgICAgLi4vV2ViS2l0L2d0ay93ZWJraXQv
d2Via2l0cHJpdmF0ZS5oIFwKKyAgICAgICAgLi4vV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vi
YXV0aGNoYWxsZW5nZS5oIFwKICAgICAgICAgLi4vV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vi
YmFja2ZvcndhcmRsaXN0LmggXAogICAgICAgICAuLi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3
ZWJmcmFtZS5oIFwKICAgICAgICAgLi4vV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViaGlzdG9y
eWl0ZW0uaCBcCkBAIC0xMDYwLDYgKzEwNjEsNyBAQCBndGstcG9ydCB7CiAgICAgICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2d0ay9JbWFnZUd0ay5jcHAgXAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9ndGsvSW50UG9pbnRHdGsuY3BwIFwKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0lu
dFJlY3RHdGsuY3BwIFwKKyAgICAgICAgcGxhdGZvcm0vbmV0d29yay9jdXJsL0F1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlQ3VybC5jcHAgXAogICAgICAgICBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVz
b3VyY2VIYW5kbGVDdXJsLmNwcCBcCiAgICAgICAgIHBsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNv
dXJjZUhhbmRsZU1hbmFnZXIuY3BwIFwKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
QWZmaW5lVHJhbnNmb3JtQ2Fpcm8uY3BwIFwKQEAgLTEwNzgsNiArMTA4MCw3IEBAIGd0ay1wb3J0
IHsKICAgICAgICAgcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMveGJtL1hCTUltYWdlRGVjb2Rlci5j
cHAgXAogICAgICAgICAuLi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRuZXR3b3JrcmVxdWVzdC5j
cHAgXAogICAgICAgICAuLi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2YXRlLmNwcCBcCisg
ICAgICAgIC4uL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmF1dGhjaGFsbGVuZ2UuY3BwIFwK
ICAgICAgICAgLi4vV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViYmFja2ZvcndhcmRsaXN0LmNw
cCBcCiAgICAgICAgIC4uL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmZyYW1lLmNwcCBcCiAg
ICAgICAgIC4uL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmhpc3RvcnlpdGVtLmNwcCBcCklu
ZGV4OiBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9BdXRoZW50aWNhdGlvbkNo
YWxsZW5nZS5jcHAJKHJldmlzaW9uIDMwNTQ5KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAwLDYgKzEw
MCw5IEBAIGJvb2wgb3BlcmF0b3I9PShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWwKIAogICAgIGlm
IChhLmNmVVJMQXV0aENoYWxsZW5nZVJlZigpICE9IGIuY2ZVUkxBdXRoQ2hhbGxlbmdlUmVmKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKKyNlbGlmIFVTRShDVVJMKQorICAgIGlmIChhLnNvdXJj
ZUhhbmRsZSgpICE9IGIuc291cmNlSGFuZGxlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKICNl
bmRpZgogCiAgICAgaWYgKGEucHJvdGVjdGlvblNwYWNlKCkgIT0gYi5wcm90ZWN0aW9uU3BhY2Uo
KSkKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9BdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9BdXRoZW50aWNhdGlv
bkNoYWxsZW5nZS5oCShyZXZpc2lvbiAzMDU0OSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02MSw2ICs2MSw4
IEBAIHB1YmxpYzoKICAgICBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShOU1VSTEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlICopOwogI2VsaWYgVVNFKENGTkVUV09SSykKICAgICBBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZShDRlVSTEF1dGhDaGFsbGVuZ2VSZWYsIFJlc291cmNlSGFuZGxlKiBzb3VyY2VI
YW5kbGUpOworI2VsaWYgVVNFKENVUkwpCisgICAgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29u
c3QgUHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW9uU3BhY2UsIGNvbnN0IENyZWRlbnRpYWwmIHBy
b3Bvc2VkQ3JlZGVudGlhbCwgdW5zaWduZWQgcHJldmlvdXNGYWlsdXJlQ291bnQsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVz
b3VyY2VIYW5kbGUqIHNvdXJjZUhhbmRsZSk7CiAjZW5kaWYKIAogICAgIHVuc2lnbmVkIHByZXZp
b3VzRmFpbHVyZUNvdW50KCkgY29uc3Q7CkBAIC03OCw3ICs4MCwxMCBAQCBwdWJsaWM6CiAjZWxp
ZiBVU0UoQ0ZORVRXT1JLKQogICAgIFJlc291cmNlSGFuZGxlKiBzb3VyY2VIYW5kbGUoKSBjb25z
dCB7IHJldHVybiBtX3NvdXJjZUhhbmRsZS5nZXQoKTsgfQogICAgIENGVVJMQXV0aENoYWxsZW5n
ZVJlZiBjZlVSTEF1dGhDaGFsbGVuZ2VSZWYoKSBjb25zdCB7IHJldHVybiBtX2NmQ2hhbGxlbmdl
LmdldCgpOyB9CisjZWxpZiBVU0UoQ1VSTCkKKyAgICBSZXNvdXJjZUhhbmRsZSogc291cmNlSGFu
ZGxlKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VIYW5kbGU7IH0KICNlbmRpZgorCiBwcml2YXRl
OgogICAgIGJvb2wgbV9pc051bGw7CiAgICAgUHJvdGVjdGlvblNwYWNlIG1fcHJvdGVjdGlvblNw
YWNlOwpAQCAtOTMsNiArOTgsOCBAQCBwcml2YXRlOgogI2VsaWYgVVNFKENGTkVUV09SSykKICAg
ICBSZWZQdHI8UmVzb3VyY2VIYW5kbGU+IG1fc291cmNlSGFuZGxlOwogICAgIFJldGFpblB0cjxD
RlVSTEF1dGhDaGFsbGVuZ2VSZWY+IG1fY2ZDaGFsbGVuZ2U7CisjZWxpZiBVU0UoQ1VSTCkKKyAg
ICBSZXNvdXJjZUhhbmRsZSogbV9zb3VyY2VIYW5kbGU7CiAjZW5kaWYKIAogfTsKSW5kZXg6IFdl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCShyZXZpc2lvbiAzMDU0OSkK
KysrIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC05Nyw3ICs5Nyw3IEBAIHB1YmxpYzoKICAgICAKICAgICB+UmVzb3VyY2VIYW5kbGUo
KTsKIAotI2lmIFBMQVRGT1JNKE1BQykgfHwgVVNFKENGTkVUV09SSykKKyNpZiBQTEFURk9STShN
QUMpIHx8IFVTRShDRk5FVFdPUkspIHx8IFVTRShDVVJMKQogICAgIHZvaWQgZGlkUmVjZWl2ZUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7CiAg
ICAgdm9pZCByZWNlaXZlZENyZWRlbnRpYWwoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2Um
LCBjb25zdCBDcmVkZW50aWFsJik7CiAgICAgdm9pZCByZWNlaXZlZFJlcXVlc3RUb0NvbnRpbnVl
V2l0aG91dENyZWRlbnRpYWwoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKTsKSW5kZXg6
IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwu
aAkocmV2aXNpb24gMzA1NDkpCisrKyBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VI
YW5kbGVJbnRlcm5hbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsNiArMTAxLDggQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICAgICAgLCBtX2ZpbGUoMCkKICAgICAgICAgICAgICwgbV9m
b3JtRGF0YUVsZW1lbnRJbmRleCgwKQogICAgICAgICAgICAgLCBtX2Zvcm1EYXRhRWxlbWVudERh
dGFPZmZzZXQoMCkKKyAgICAgICAgICAgICwgbV93ZWJDaGFsbGVuZ2UoKQorICAgICAgICAgICAg
LCBtX2NvbnRpbnVlV2l0aG91dENyZWRlbnRpYWwoZmFsc2UpCiAjZW5kaWYKICNpZiBQTEFURk9S
TShRVCkKICAgICAgICAgICAgICwgbV9qb2IoMCkKQEAgLTE1OSw2ICsxNjEsOSBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIHNpemVfdCBtX2Zvcm1EYXRhRWxlbWVudEluZGV4OwogICAg
ICAgICBzaXplX3QgbV9mb3JtRGF0YUVsZW1lbnREYXRhT2Zmc2V0OwogICAgICAgICBWZWN0b3I8
Y2hhcj4gbV9wb3N0Qnl0ZXM7CisKKyAgICAgICAgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgbV93
ZWJDaGFsbGVuZ2U7CisgICAgICAgIGJvb2wgbV9jb250aW51ZVdpdGhvdXRDcmVkZW50aWFsOwog
I2VuZGlmCiAjaWYgUExBVEZPUk0oUVQpCiAjaWYgUVRfVkVSU0lPTiA8IDB4MDQwNDAwCkluZGV4
OiBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZUN1
cmwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0F1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlQ3VybC5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZUN1cmwuY3BwCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEx1Y2EgQnJ1
bm8gPGxldGhhbG1hbjg4QGdtYWlsLmNvbT4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OkF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgcHJvdGVjdGlvblNw
YWNlLCBjb25zdCBDcmVkZW50aWFsJiBwcm9wb3NlZENyZWRlbnRpYWwsIAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHByZXZpb3VzRmFp
bHVyZUNvdW50LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgUmVzb3Vy
Y2VFcnJvciYgZXJyb3IsIFJlc291cmNlSGFuZGxlKiBzb3VyY2VIYW5kbGUpCisgICAgOiBtX2lz
TnVsbChmYWxzZSkKKyAgICAsIG1fcHJvdGVjdGlvblNwYWNlKHByb3RlY3Rpb25TcGFjZSkKKyAg
ICAsIG1fcHJvcG9zZWRDcmVkZW50aWFsKHByb3Bvc2VkQ3JlZGVudGlhbCkKKyAgICAsIG1fcHJl
dmlvdXNGYWlsdXJlQ291bnQocHJldmlvdXNGYWlsdXJlQ291bnQpCisgICAgLCBtX2ZhaWx1cmVS
ZXNwb25zZShyZXNwb25zZSkKKyAgICAsIG1fZXJyb3IoZXJyb3IpCisgICAgLCBtX3NvdXJjZUhh
bmRsZShzb3VyY2VIYW5kbGUpCit7Cit9CisKK30KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcAkocmV2aXNpb24gMzA1
NDkpCisrKyBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NSw0ICs5NSw3MSBAQCB2b2lkIFJlc291cmNlSGFuZGxl
Ojpsb2FkUmVzb3VyY2VTeW5jaHJvCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAordm9pZCBS
ZXNvdXJjZUhhbmRsZTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UpCit7CisgICAgLyogRklYTUU6IGFkZCBz
dXBwb3J0IGZvciBGVFAsIEhUVFBTLCBhbmQgRlRQUyBhdXRoZW50aWNhdGlvbiwKKyAgICAgKiBn
ZXQgdGhlIHJpZ2h0IHBvcnQsIHNlcnZlciBhbmQgYXV0aGVudGljYXRpb24gc2NoZW1lCisgICAg
ICovCisgICAgUmVzb3VyY2VIYW5kbGVJbnRlcm5hbCogZCA9IGdldEludGVybmFsKCk7CisgICAg
aWYgKGQtPm1fY29udGludWVXaXRob3V0Q3JlZGVudGlhbCkKKyAgICAgICAgcmV0dXJuOworICAg
IGNhbmNlbCgpOworCisgICAgUHJvdGVjdGlvblNwYWNlIHByb3RlY3Rpb25TcGFjZTsKKyAgICB1
bnNpZ25lZCBwcmV2aW91c0ZhaWx1cmVDb3VudCA9IDA7CisgICAgaWYgKGNoYWxsZW5nZS5pc051
bGwoKSkgeworICAgICAgICBwcm90ZWN0aW9uU3BhY2UgPSBQcm90ZWN0aW9uU3BhY2UoZC0+bV9y
ZXNwb25zZS5odHRwSGVhZGVyRmllbGQoIkhvc3QiKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUHJvdGVjdGlvblNwYWNlU2VydmVySFRUUCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGQtPm1fcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkKCJSZWFs
bSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvdGVjdGlv
blNwYWNlQXV0aGVudGljYXRpb25TY2hlbWVEZWZhdWx0KTsKKyAgICB9IGVsc2UgeworICAgICAg
ICBwcm90ZWN0aW9uU3BhY2UgPSBkLT5tX3dlYkNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UoKTsK
KyAgICAgICAgcHJldmlvdXNGYWlsdXJlQ291bnQgPSBkLT5tX3dlYkNoYWxsZW5nZS5wcmV2aW91
c0ZhaWx1cmVDb3VudCgpKzE7CisgICAgfQorICAgIAorICAgIGQtPm1fd2ViQ2hhbGxlbmdlID0g
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UocHJvdGVjdGlvblNwYWNlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhbGxlbmdlLnByb3Bvc2VkQ3JlZGVu
dGlhbCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cHJldmlvdXNGYWlsdXJlQ291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkLT5tX3Jlc3BvbnNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY2hhbGxlbmdlLmVycm9yKCksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzKTsKKworICAgIGlmIChkLT5jbGll
bnQoKSkKKyAgICAgICAgZC0+Y2xpZW50KCktPmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSh0aGlzLCBkLT5tX3dlYkNoYWxsZW5nZSk7Cit9CisKK3ZvaWQgUmVzb3VyY2VIYW5kbGU6
OnJlY2VpdmVkQ3JlZGVudGlhbChjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxl
bmdlLCBjb25zdCBDcmVkZW50aWFsJiBjcmVkZW50aWFsKQoreworICAgIEFTU0VSVCghY2hhbGxl
bmdlLmlzTnVsbCgpKTsgICAKKyAgICBSZXNvdXJjZUhhbmRsZUludGVybmFsKiBkID0gZ2V0SW50
ZXJuYWwoKTsKKyAgICBpZiAoY2hhbGxlbmdlICE9IGQtPm1fd2ViQ2hhbGxlbmdlKQorICAgICAg
ICByZXR1cm47CisKKyAgICBkLT5tX3dlYkNoYWxsZW5nZSA9IEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlKGNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UoKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWRlbnRpYWwsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFsbGVuZ2UucHJldmlvdXNGYWlsdXJlQ291
bnQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNo
YWxsZW5nZS5mYWlsdXJlUmVzcG9uc2UoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNoYWxsZW5nZS5lcnJvcigpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyk7CisKKyAgICBSZXNvdXJjZUhhbmRs
ZU1hbmFnZXI6OnNoYXJlZEluc3RhbmNlKCktPmFkZCh0aGlzKTsKK30KKwordm9pZCBSZXNvdXJj
ZUhhbmRsZTo6cmVjZWl2ZWRSZXF1ZXN0VG9Db250aW51ZVdpdGhvdXRDcmVkZW50aWFsKGNvbnN0
IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UpCit7CisgICAgQVNTRVJUKCFjaGFs
bGVuZ2UuaXNOdWxsKCkpOyAgIAorICAgIFJlc291cmNlSGFuZGxlSW50ZXJuYWwqIGQgPSBnZXRJ
bnRlcm5hbCgpOworICAgIGlmIChjaGFsbGVuZ2UgIT0gZC0+bV93ZWJDaGFsbGVuZ2UpCisgICAg
ICAgIHJldHVybjsKKworICAgIGQtPm1fY29udGludWVXaXRob3V0Q3JlZGVudGlhbCA9IHRydWU7
CisgICAgUmVzb3VyY2VIYW5kbGVNYW5hZ2VyOjpzaGFyZWRJbnN0YW5jZSgpLT5hZGQodGhpcyk7
Cit9CisKK3ZvaWQgUmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkQ2FuY2VsbGF0aW9uKGNvbnN0IEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UpCit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZU1hbmFnZXIuY3BwCShyZXZp
c2lvbiAzMDU0OSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFu
ZGxlTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3MCw2ICsxNzAsMTAgQEAgc3RhdGlj
IHNpemVfdCBoZWFkZXJDYWxsYmFjayhjaGFyKiBwdHIsIAogICAgICAgICBkLT5tX3Jlc3BvbnNl
LnNldFRleHRFbmNvZGluZ05hbWUoZXh0cmFjdENoYXJzZXRGcm9tTWVkaWFUeXBlKGQtPm1fcmVz
cG9uc2UuaHR0cEhlYWRlckZpZWxkKCJDb250ZW50LVR5cGUiKSkpOwogICAgICAgICBkLT5tX3Jl
c3BvbnNlLnNldFN1Z2dlc3RlZEZpbGVuYW1lKGZpbGVuYW1lRnJvbUhUVFBDb250ZW50RGlzcG9z
aXRpb24oZC0+bV9yZXNwb25zZS5odHRwSGVhZGVyRmllbGQoIkNvbnRlbnQtRGlzcG9zaXRpb24i
KSkpOwogCisgICAgICAgIC8vIEhUVFAgYXV0aGVudGljYXRpb24KKyAgICAgICAgaWYgKGh0dHBD
b2RlID09IDQwMSAmJiBkLT5tX3Jlc3BvbnNlLmlzSFRUUCgpKQorICAgICAgICAgICAgam9iLT5k
aWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoZC0+bV93ZWJDaGFsbGVuZ2UpOworCiAg
ICAgICAgIC8vIEhUVFAgcmVkaXJlY3Rpb24KICAgICAgICAgaWYgKGh0dHBDb2RlID49IDMwMCAm
JiBodHRwQ29kZSA8IDQwMCkgewogICAgICAgICAgICAgU3RyaW5nIGxvY2F0aW9uID0gZC0+bV9y
ZXNwb25zZS5odHRwSGVhZGVyRmllbGQoImxvY2F0aW9uIik7CkBAIC01NTcsNiArNTYxLDkgQEAg
dm9pZCBSZXNvdXJjZUhhbmRsZU1hbmFnZXI6OnN0YXJ0Sm9iKFJlcwogICAgIH0KIAogICAgIGQt
Pm1faGFuZGxlID0gY3VybF9lYXN5X2luaXQoKTsKKyAgICAvLyBIVFRQIEF1dGhlbnRpY2F0aW9u
IGNhbmNlbHMgdGhlIGpvYiBzbyBiZSBzdXJlIHRoZSBuZXcgam9iIGlzIG5vdCBjYW5jZWxsZWQK
KyAgICBkLT5tX2NhbmNlbGxlZCA9IGZhbHNlOyAgCisKICNpZm5kZWYgTkRFQlVHCiAgICAgaWYg
KGdldGVudigiREVCVUdfQ1VSTCIpKQogICAgICAgICBjdXJsX2Vhc3lfc2V0b3B0KGQtPm1faGFu
ZGxlLCBDVVJMT1BUX1ZFUkJPU0UsIDEpOwpAQCAtNTkwLDYgKzU5NywyMyBAQCB2b2lkIFJlc291
cmNlSGFuZGxlTWFuYWdlcjo6c3RhcnRKb2IoUmVzCiAgICAgICAgIGN1cmxfZWFzeV9zZXRvcHQo
ZC0+bV9oYW5kbGUsIENVUkxPUFRfQ09PS0lFSkFSLCBtX2Nvb2tpZUphckZpbGVOYW1lKTsKICAg
ICB9CiAKKyAgICBpZiAoIWQtPm1fd2ViQ2hhbGxlbmdlLmlzTnVsbCgpICYmICFkLT5tX2NvbnRp
bnVlV2l0aG91dENyZWRlbnRpYWwpIHsKKyAgICAgICAgbG9uZyBjdXJsQXV0aDsKKyAgICAgICAg
c3dpdGNoKGQtPm1fd2ViQ2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZSgpLmF1dGhlbnRpY2F0aW9u
U2NoZW1lKCkpIHsgICAgICAgICAgCisgICAgICAgIGNhc2UgUHJvdGVjdGlvblNwYWNlQXV0aGVu
dGljYXRpb25TY2hlbWVIVFRQQmFzaWM6CisgICAgICAgIGNhc2UgUHJvdGVjdGlvblNwYWNlQXV0
aGVudGljYXRpb25TY2hlbWVEZWZhdWx0OgorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
Y3VybEF1dGggPSBDVVJMQVVUSF9CQVNJQzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CisKKyAgICAgICAgQ3JlZGVudGlhbCBjcmVkZW50aWFsID0gZC0+bV93ZWJDaGFsbGVuZ2UucHJv
cG9zZWRDcmVkZW50aWFsKCk7CisgICAgICAgIFN0cmluZyB1c2VycHdkID0gY3JlZGVudGlhbC51
c2VyKCkgKyAiOiIgKyBjcmVkZW50aWFsLnBhc3N3b3JkKCk7CisgICAgICAgIAorICAgICAgICBj
dXJsX2Vhc3lfc2V0b3B0KGQtPm1faGFuZGxlLCBDVVJMT1BUX0hUVFBBVVRILCBjdXJsQXV0aCk7
CisgICAgICAgIGN1cmxfZWFzeV9zZXRvcHQoZC0+bV9oYW5kbGUsIENVUkxPUFRfVVNFUlBXRCwg
c3RyZHVwKHVzZXJwd2QudXRmOCgpLmRhdGEoKSkpOworICAgIH0KKwogICAgIHN0cnVjdCBjdXJs
X3NsaXN0KiBoZWFkZXJzID0gMDsKICAgICBpZiAoam9iLT5yZXF1ZXN0KCkuaHR0cEhlYWRlckZp
ZWxkcygpLnNpemUoKSA+IDApIHsKICAgICAgICAgSFRUUEhlYWRlck1hcCBjdXN0b21IZWFkZXJz
ID0gam9iLT5yZXF1ZXN0KCkuaHR0cEhlYWRlckZpZWxkcygpOwpJbmRleDogV2ViS2l0L2d0ay9X
ZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAJKHJldmlzaW9u
IDMwNTQ5KQorKysgV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0
ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJIVE1MRnJh
bWVPd25lckVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJMYW5n
dWFnZS5oIgorI2luY2x1ZGUgIk1haW5SZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIk1JTUVU
eXBlUmVnaXN0cnkuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlBs
YXRmb3JtU3RyaW5nLmgiCkBAIC0zOSw2ICs0MCw3IEBACiAjaW5jbHVkZSAia2pzX2JpbmRpbmcu
aCIKICNpbmNsdWRlICJranNfcHJveHkuaCIKICNpbmNsdWRlICJranNfd2luZG93LmgiCisjaW5j
bHVkZSAid2Via2l0d2ViYXV0aGNoYWxsZW5nZS5oIgogI2luY2x1ZGUgIndlYmtpdHdlYnZpZXcu
aCIKICNpbmNsdWRlICJ3ZWJraXR3ZWJmcmFtZS5oIgogI2luY2x1ZGUgIndlYmtpdHByaXZhdGUu
aCIKQEAgLTE2NSw5ICsxNjcsMTggQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6Y29tbWl0dGVk
TG9hZChEbwogICAgIGZsLT5hZGREYXRhKGRhdGEsIGxlbmd0aCk7CiB9CiAKLXZvaWQgRnJhbWVM
b2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKERv
Y3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyAgaWRlbnRpZmllciwgY29uc3QgQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UmKQordm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZWNl
aXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoRG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50TG9hZGVy
LCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
JiB3ZWJDaGFsbGVuZ2UpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBXZWJLaXRXZWJB
dXRoQ2hhbGxlbmdlKiBjaGFsbGVuZ2UgPSB3ZWJraXRfd2ViX2F1dGhfY2hhbGxlbmdlX25ldygp
OworICAgIFdlYktpdFdlYkF1dGhDaGFsbGVuZ2VQcml2YXRlKiBwcml2ID0gY2hhbGxlbmdlLT5w
cml2OworICAgICpwcml2LT53ZWJDaGFsbGVuZ2UgPSB3ZWJDaGFsbGVuZ2U7CisKKyAgICBDcmVk
ZW50aWFsIGNyZWRlbnRpYWwgPSB3ZWJDaGFsbGVuZ2UucHJvcG9zZWRDcmVkZW50aWFsKCk7Cisg
ICAgd2Via2l0X3dlYl9hdXRoX2NoYWxsZW5nZV9zZXRfdXNlcihjaGFsbGVuZ2UsIGNyZWRlbnRp
YWwudXNlcigpLnV0ZjgoKS5kYXRhKCkpOworICAgIHdlYmtpdF93ZWJfYXV0aF9jaGFsbGVuZ2Vf
c2V0X3Bhc3N3b3JkKGNoYWxsZW5nZSwgY3JlZGVudGlhbC5wYXNzd29yZCgpLnV0ZjgoKS5kYXRh
KCkpOworICAgIAorICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSBnZXRWaWV3RnJvbUZyYW1l
KG1fZnJhbWUpOworICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZSh3ZWJWaWV3LCAiYXV0aGVudGlj
YXRpb24tcmVxdWVzdGVkIiwgbV9mcmFtZSwgY2hhbGxlbmdlLCBOVUxMKTsKIH0KIAogdm9pZCBG
cmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZShEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgIGlkZW50aWZpZXIsIGNvbnN0IEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlJikKSW5kZXg6IFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdGRlZmlu
ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRkZWZpbmVzLmgJKHJl
dmlzaW9uIDMwNTQ5KQorKysgV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0ZGVmaW5lcy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00Niw2ICs0Niw5IEBAIHR5cGVkZWYgc3RydWN0IF9XZWJLaXROZXR3b3Jr
UmVxdWVzdENsYXMKIHR5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJCYWNrRm9yd2FyZExpc3QgV2Vi
S2l0V2ViQmFja0ZvcndhcmRMaXN0OwogdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYkJhY2tGb3J3
YXJkTGlzdENsYXNzIFdlYktpdFdlYkJhY2tGb3J3YXJkTGlzdENsYXNzOwogCit0eXBlZGVmIHN0
cnVjdCBfV2ViS2l0V2ViQXV0aENoYWxsZW5nZSBXZWJLaXRXZWJBdXRoQ2hhbGxlbmdlOwordHlw
ZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYkF1dGhDaGFsbGVuZ2VDbGFzcyBXZWJLaXRXZWJBdXRoQ2hh
bGxlbmdlQ2xhc3M7CisKIHR5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJIaXN0b3J5SXRlbSBXZWJL
aXRXZWJIaXN0b3J5SXRlbTsKIHR5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJIaXN0b3J5SXRlbUNs
YXNzIFdlYktpdFdlYkhpc3RvcnlJdGVtQ2xhc3M7CiAKSW5kZXg6IFdlYktpdC9ndGsvd2Via2l0
L3dlYmtpdHByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRw
cml2YXRlLmgJKHJldmlzaW9uIDMwNTQ5KQorKysgV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0cHJp
dmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNywxMiArMjcsMTQgQEAKICAqLwogCiAjaW5jbHVk
ZSA8d2Via2l0L3dlYmtpdGRlZmluZXMuaD4KKyNpbmNsdWRlIDx3ZWJraXQvd2Via2l0d2ViYXV0
aGNoYWxsZW5nZS5oPgogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJ2aWV3Lmg+CiAjaW5jbHVk
ZSA8d2Via2l0L3dlYmtpdHdlYmZyYW1lLmg+CiAjaW5jbHVkZSA8d2Via2l0L3dlYmtpdHdlYnNl
dHRpbmdzLmg+CiAjaW5jbHVkZSA8d2Via2l0L3dlYmtpdG5ldHdvcmtyZXF1ZXN0Lmg+CiAjaW5j
bHVkZSA8d2Via2l0L3dlYmtpdHdlYmJhY2tmb3J3YXJkbGlzdC5oPgogCisjaW5jbHVkZSAiQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UuaCIKICNpbmNsdWRlICJCYWNrRm9yd2FyZExpc3QuaCIKICNp
bmNsdWRlICJIaXN0b3J5SXRlbS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCkBAIC0xMDUsNiAr
MTA3LDE2IEBAIGV4dGVybiAiQyIgewogICAgIHN0cnVjdCBfV2ViS2l0TmV0d29ya1JlcXVlc3RQ
cml2YXRlIHsKICAgICAgICAgZ2NoYXIqIHVyaTsKICAgICB9OworIAorICAgICNkZWZpbmUgV0VC
S0lUX1dFQl9BVVRIX0NIQUxMRU5HRV9HRVRfUFJJVkFURShvYmopICAgIChHX1RZUEVfSU5TVEFO
Q0VfR0VUX1BSSVZBVEUoKG9iaiksIFdFQktJVF9UWVBFX1dFQl9BVVRIX0NIQUxMRU5HRSwgV2Vi
S2l0V2ViQXV0aENoYWxsZW5nZVByaXZhdGUpKQorICAgIHR5cGVkZWYgc3RydWN0IF9XZWJLaXRX
ZWJBdXRoQ2hhbGxlbmdlUHJpdmF0ZSBXZWJLaXRXZWJBdXRoQ2hhbGxlbmdlUHJpdmF0ZTsKKyAg
ICBzdHJ1Y3QgX1dlYktpdFdlYkF1dGhDaGFsbGVuZ2VQcml2YXRlIHsKKyAgICAgICAgV2ViQ29y
ZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UqIHdlYkNoYWxsZW5nZTsKKyAgICAgICAgZ2NoYXIq
IHVzZXI7CisgICAgICAgIGdjaGFyKiBwYXNzd29yZDsKKworICAgICAgICBnYm9vbGVhbiByZXNw
b25zZV9maXJlZDsKKyAgICB9OwogCiAgICAgV2ViS2l0V2ViRnJhbWUqCiAgICAgd2Via2l0X3dl
Yl9mcmFtZV9pbml0X3dpdGhfd2ViX3ZpZXcoV2ViS2l0V2ViVmlldyosIFdlYkNvcmU6OkhUTUxG
cmFtZU93bmVyRWxlbWVudCopOwpJbmRleDogV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViYXV0
aGNoYWxsZW5nZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vi
YXV0aGNoYWxsZW5nZS5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJr
aXR3ZWJhdXRoY2hhbGxlbmdlLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyNTkgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDggTHVjYSBCcnVubworICoKKyAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisg
KiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQor
ICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgor
ICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUg
ZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisK
KyNpbmNsdWRlICJ3ZWJraXRwcml2YXRlLmgiCisjaW5jbHVkZSAid2Via2l0d2ViYXV0aGNoYWxs
ZW5nZS5oIgorCisjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCIKKyNpbmNsdWRl
ICJDcmVkZW50aWFsLmgiCisjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKKwordXNpbmcgbmFt
ZXNwYWNlIFdlYktpdDsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitleHRlcm4gIkMiIHsK
KworZW51bSB7CisgICAgUFJPUF8wLAorCisgICAgUFJPUF9VU0VSLAorICAgIFBST1BfUEFTU1dP
UkQsCit9OworCitHX0RFRklORV9UWVBFKFdlYktpdFdlYkF1dGhDaGFsbGVuZ2UsIHdlYmtpdF93
ZWJfYXV0aF9jaGFsbGVuZ2UsIEdfVFlQRV9PQkpFQ1QpOworCitzdGF0aWMgdm9pZCB3ZWJraXRf
d2ViX2F1dGhfY2hhbGxlbmdlX2dldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHBy
b3BfaWQsIEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBzcGVjKQoreworICAgIFdlYktpdFdl
YkF1dGhDaGFsbGVuZ2UqIGNoYWxsZW5nZSA9IFdFQktJVF9XRUJfQVVUSF9DSEFMTEVOR0Uob2Jq
ZWN0KTsKKworICAgIHN3aXRjaChwcm9wX2lkKSB7CisgICAgY2FzZSBQUk9QX1VTRVI6CisgICAg
ICAgIGdfdmFsdWVfc2V0X3N0cmluZyh2YWx1ZSwgd2Via2l0X3dlYl9hdXRoX2NoYWxsZW5nZV9n
ZXRfdXNlcihjaGFsbGVuZ2UpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX1BBU1NX
T1JEOgorICAgICAgICBnX3ZhbHVlX3NldF9zdHJpbmcodmFsdWUsIHdlYmtpdF93ZWJfYXV0aF9j
aGFsbGVuZ2VfZ2V0X3Bhc3N3b3JkKGNoYWxsZW5nZSkpOworICAgICAgICBicmVhazsKKyAgICBk
ZWZhdWx0OgorICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0
LCBwcm9wX2lkLCBwc3BlYyk7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKworc3RhdGljIHZv
aWQgd2Via2l0X3dlYl9hdXRoX2NoYWxsZW5nZV9zZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0
LCBndWludCBwcm9wX2lkLCBjb25zdCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjICpwc3BlYykK
K3sKKyAgICBXZWJLaXRXZWJBdXRoQ2hhbGxlbmdlKiBjaGFsbGVuZ2UgPSBXRUJLSVRfV0VCX0FV
VEhfQ0hBTExFTkdFKG9iamVjdCk7CisKKyAgICBzd2l0Y2gocHJvcF9pZCkgeworICAgIGNhc2Ug
UFJPUF9VU0VSOgorICAgICAgICB3ZWJraXRfd2ViX2F1dGhfY2hhbGxlbmdlX3NldF91c2VyKGNo
YWxsZW5nZSwgZ192YWx1ZV9nZXRfc3RyaW5nKHZhbHVlKSk7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgUFJPUF9QQVNTV09SRDoKKyAgICAgICAgd2Via2l0X3dlYl9hdXRoX2NoYWxsZW5nZV9z
ZXRfcGFzc3dvcmQoY2hhbGxlbmdlLCBnX3ZhbHVlX2dldF9zdHJpbmcodmFsdWUpKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BS
T1BFUlRZX0lEKG9iamVjdCwgcHJvcF9pZCwgcHNwZWMpOworICAgIH0KK30KKworc3RhdGljIHZv
aWQgd2Via2l0X3dlYl9hdXRoX2NoYWxsZW5nZV9maW5hbGl6ZShHT2JqZWN0KiBvYmplY3QpCit7
CisgICAgV2ViS2l0V2ViQXV0aENoYWxsZW5nZSogY2hhbGxlbmdlID0gV0VCS0lUX1dFQl9BVVRI
X0NIQUxMRU5HRShvYmplY3QpOworICAgIFdlYktpdFdlYkF1dGhDaGFsbGVuZ2VQcml2YXRlKiBw
cml2ID0gY2hhbGxlbmdlLT5wcml2OworCisgICAgZGVsZXRlIHByaXYtPndlYkNoYWxsZW5nZTsK
KyAgICBnX2ZyZWUocHJpdi0+dXNlcik7CisgICAgZ19mcmVlKHByaXYtPnBhc3N3b3JkKTsKKwor
ICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF93ZWJfYXV0aF9jaGFsbGVuZ2VfcGFyZW50X2NsYXNz
KS0+ZmluYWxpemUob2JqZWN0KTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0X3dlYl9hdXRoX2No
YWxsZW5nZV9jbGFzc19pbml0KFdlYktpdFdlYkF1dGhDaGFsbGVuZ2VDbGFzcyogY2hhbGxlbmdl
Q2xhc3MpCit7CisgICAgZ190eXBlX2NsYXNzX2FkZF9wcml2YXRlKGNoYWxsZW5nZUNsYXNzLCBz
aXplb2YoV2ViS2l0V2ViQXV0aENoYWxsZW5nZVByaXZhdGUpKTsKKworICAgIEdPYmplY3RDbGFz
cyogb2JqZWN0Q2xhc3MgPSBHX09CSkVDVF9DTEFTUyhjaGFsbGVuZ2VDbGFzcyk7CisgICAgb2Jq
ZWN0Q2xhc3MtPmZpbmFsaXplID0gd2Via2l0X3dlYl9hdXRoX2NoYWxsZW5nZV9maW5hbGl6ZTsK
KyAgICBvYmplY3RDbGFzcy0+Z2V0X3Byb3BlcnR5ID0gd2Via2l0X3dlYl9hdXRoX2NoYWxsZW5n
ZV9nZXRfcHJvcGVydHk7CisgICAgb2JqZWN0Q2xhc3MtPnNldF9wcm9wZXJ0eSA9IHdlYmtpdF93
ZWJfYXV0aF9jaGFsbGVuZ2Vfc2V0X3Byb3BlcnR5OworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRf
d2ViX2F1dGhfY2hhbGxlbmdlX2luaXQoV2ViS2l0V2ViQXV0aENoYWxsZW5nZSogY2hhbGxlbmdl
KQoreworICAgIFdlYktpdFdlYkF1dGhDaGFsbGVuZ2VQcml2YXRlKiBwcml2ID0gV0VCS0lUX1dF
Ql9BVVRIX0NIQUxMRU5HRV9HRVRfUFJJVkFURShjaGFsbGVuZ2UpOworICAgIGNoYWxsZW5nZS0+
cHJpdiA9IHByaXY7CisKKyAgICBwcml2LT53ZWJDaGFsbGVuZ2UgPSBuZXcgQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UoKTsKKyAgICBwcml2LT51c2VyID0gTlVMTDsKKyAgICBwcml2LT5wYXNzd29y
ZCA9IE5VTEw7CisgICAgcHJpdi0+cmVzcG9uc2VfZmlyZWQgPSBGQUxTRTsKK30KKworLyoqCisg
KiB3ZWJraXRfd2ViX2F1dGhfY2hhbGxlbmdlX25ldzoKKyAqCisgKiBUaGlzIGZ1bmN0aW9uIHJl
dHVybnMgYSBuZXcgV2ViS2l0V2ViQXV0aENoYWxsZW5nZSBvYmplY3QuCisgKiBUaGUgcHVycG9z
ZSBvZiB0aGlzIGNsYXNzIGlzIHRvIHJlc3BvbnNlIHRvIGF1dGhlbnRpY2F0aW9uIHJlcXVlc3Rl
ZCB0byBhY2Nlc3MgcHJvdGVjdGVkIHdlYiByZXNvdXJjZXMuCisgKgorICogVXN1YWxseSB0aGUg
YXBwbGljYXRpb24gZG9lc24ndCBuZWVkIHRvIGNyZWF0ZSB0aGlzIG9iamVjdC4KKyAqCisgKiBS
ZXR1cm4gdmFsdWU6IHRoZSAjV2ViS2l0V2ViQXV0aENoYWxsZW5nZQorICoqLworV2ViS2l0V2Vi
QXV0aENoYWxsZW5nZSogd2Via2l0X3dlYl9hdXRoX2NoYWxsZW5nZV9uZXcoKQoreworICAgIFdl
YktpdFdlYkF1dGhDaGFsbGVuZ2UqIGNoYWxsZW5nZSA9IFdFQktJVF9XRUJfQVVUSF9DSEFMTEVO
R0UoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9BVVRIX0NIQUxMRU5HRSwgTlVMTCkpOwor
CisgICAgcmV0dXJuIGNoYWxsZW5nZTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX2F1dGhfY2hh
bGxlbmdlX3NldF91c2VyOgorICogQGNoYWxsZW5nZTogYSAjV2ViS2l0V2ViQXV0aENoYWxsZW5n
ZQorICogQHVzZXI6IGEgc3RyaW5nIHdpdGggdGhlIHVzZXJuYW1lCisgKgorICogU2V0IHRoZSB1
c2VybmFtZSBmb3IgdGhlIGF1dGhlbnRpY2F0aW9uIEBjaGFsbGVuZ2UuCisgKi8KK3ZvaWQgd2Vi
a2l0X3dlYl9hdXRoX2NoYWxsZW5nZV9zZXRfdXNlcihXZWJLaXRXZWJBdXRoQ2hhbGxlbmdlKiBj
aGFsbGVuZ2UsIGNvbnN0IGdjaGFyKiB1c2VyKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VC
S0lUX0lTX1dFQl9BVVRIX0NIQUxMRU5HRShjaGFsbGVuZ2UpKTsKKyAgICBnX3JldHVybl9pZl9m
YWlsKHVzZXIpOworCisgICAgV2ViS2l0V2ViQXV0aENoYWxsZW5nZVByaXZhdGUqIHByaXYgPSBj
aGFsbGVuZ2UtPnByaXY7CisKKyAgICBnX2ZyZWUocHJpdi0+dXNlcik7CisgICAgcHJpdi0+dXNl
ciA9IGdfc3RyZHVwKHVzZXIpOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfYXV0aF9jaGFsbGVu
Z2VfZ2V0X3VzZXIKKyAqIEBjaGFsbGVuZ2U6IGEgI1dlYktpdFdlYkF1dGhDaGFsbGVuZ2UKKyAq
CisgKiBSZXR1cm5zIHRoZSBjdXJyZW50IHVzZXJuYW1lIHVzZWQgYnkgdGhlIGF1dGhlbnRpY2F0
aW9uIEBjaGFsbGVuZ2UuCisgKgorICogUmV0dXJuIHZhbHVlOiB0aGUgdXNlcm5hbWUKKyAqLwor
Y29uc3QgZ2NoYXIqIHdlYmtpdF93ZWJfYXV0aF9jaGFsbGVuZ2VfZ2V0X3VzZXIoV2ViS2l0V2Vi
QXV0aENoYWxsZW5nZSogY2hhbGxlbmdlKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdF
QktJVF9JU19XRUJfQVVUSF9DSEFMTEVOR0UoY2hhbGxlbmdlKSwgTlVMTCk7CisKKyAgICBXZWJL
aXRXZWJBdXRoQ2hhbGxlbmdlUHJpdmF0ZSogcHJpdiA9IGNoYWxsZW5nZS0+cHJpdjsKKworICAg
IHJldHVybiBwcml2LT51c2VyOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfYXV0aF9jaGFsbGVu
Z2Vfc2V0X3Bhc3N3b3JkOgorICogQGNoYWxsZW5nZTogYSAjV2ViS2l0V2ViQXV0aENoYWxsZW5n
ZQorICogQHBhc3N3b3JkOiBhIHN0cmluZyB3aXRoIHRoZSBwYXNzd29yZAorICoKKyAqIFNldCB0
aGUgcGFzc3dvcmQgZm9yIHRoZSBhdXRoZW50aWNhdGlvbiBAY2hhbGxlbmdlLgorICovCit2b2lk
IHdlYmtpdF93ZWJfYXV0aF9jaGFsbGVuZ2Vfc2V0X3Bhc3N3b3JkKFdlYktpdFdlYkF1dGhDaGFs
bGVuZ2UqIGNoYWxsZW5nZSwgY29uc3QgZ2NoYXIqIHBhc3N3b3JkKQoreworICAgIGdfcmV0dXJu
X2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9BVVRIX0NIQUxMRU5HRShjaGFsbGVuZ2UpKTsKKyAgICBn
X3JldHVybl9pZl9mYWlsKHBhc3N3b3JkKTsKKworICAgIFdlYktpdFdlYkF1dGhDaGFsbGVuZ2VQ
cml2YXRlKiBwcml2ID0gY2hhbGxlbmdlLT5wcml2OworCisgICAgZ19mcmVlKHByaXYtPnBhc3N3
b3JkKTsKKyAgICBwcml2LT5wYXNzd29yZCA9IGdfc3RyZHVwKHBhc3N3b3JkKTsKK30KKworLyoq
CisgKiB3ZWJraXRfd2ViX2F1dGhfY2hhbGxlbmdlX2dldF9wYXNzd29yZAorICogQGNoYWxsZW5n
ZTogYSAjV2ViS2l0V2ViQXV0aENoYWxsZW5nZQorICoKKyAqIFJldHVybnMgdGhlIGN1cnJlbnQg
cGFzc3dvcmQgdXNlZCBieSB0aGUgYXV0aGVudGljYXRpb24gQGNoYWxsZW5nZS4KKyAqCisgKiBS
ZXR1cm4gdmFsdWU6IHRoZSBwYXNzd29yZAorICovCitjb25zdCBnY2hhciogd2Via2l0X3dlYl9h
dXRoX2NoYWxsZW5nZV9nZXRfcGFzc3dvcmQoV2ViS2l0V2ViQXV0aENoYWxsZW5nZSogY2hhbGxl
bmdlKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfQVVUSF9DSEFM
TEVOR0UoY2hhbGxlbmdlKSwgTlVMTCk7CisKKyAgICBXZWJLaXRXZWJBdXRoQ2hhbGxlbmdlUHJp
dmF0ZSogcHJpdiA9IGNoYWxsZW5nZS0+cHJpdjsKKworICAgIHJldHVybiBwcml2LT5wYXNzd29y
ZDsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX2F1dGhfY2hhbGxlbmdlX3VzZV9jcmVkZW50aWFs
CisgKiBAY2hhbGxlbmdlOiBhICNXZWJLaXRXZWJBdXRoQ2hhbGxlbmdlCisgKgorICogUmVzcG9u
c2UgdGhlIGNyZWRlbnRpYWwgb2YgQGNoYWxsZW5nZSB0byBiZSB1c2VkIGZvciB0aGUgcmVxdWVz
dGVkIGF1dGhlbnRpY2F0aW9uLgorICoKKyAqIEFmdGVyIHRoaXMgcmVzcG9uc2UsIHRoZSBAY2hh
bGxlbmdlIGNhbid0IGJlIHVzZWQgZm9yIGFueSBmdXJ0aGVyIHJlc3BvbnNlcyBvbiB0aGUKKyAq
IHNhbWUgYXV0aGVudGljYXRpb24gcmVxdWVzdC4KKyAqLwordm9pZCB3ZWJraXRfd2ViX2F1dGhf
Y2hhbGxlbmdlX3VzZV9jcmVkZW50aWFsKFdlYktpdFdlYkF1dGhDaGFsbGVuZ2UqIGNoYWxsZW5n
ZSkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfQVVUSF9DSEFMTEVOR0Uo
Y2hhbGxlbmdlKSk7CisKKyAgICBXZWJLaXRXZWJBdXRoQ2hhbGxlbmdlUHJpdmF0ZSogcHJpdiA9
IGNoYWxsZW5nZS0+cHJpdjsKKyAgICBnX3JldHVybl9pZl9mYWlsKCFwcml2LT5yZXNwb25zZV9m
aXJlZCk7CisKKyAgICBDcmVkZW50aWFsIGNyZWRlbnRpYWwgPSBDcmVkZW50aWFsKFN0cmluZzo6
ZnJvbVVURjgocHJpdi0+dXNlciksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBTdHJpbmc6OmZyb21VVEY4KHByaXYtPnBhc3N3b3JkKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIENyZWRlbnRpYWxQZXJzaXN0ZW5jZUZvclNlc3Npb24pOwor
ICAgIHByaXYtPndlYkNoYWxsZW5nZS0+c291cmNlSGFuZGxlKCktPnJlY2VpdmVkQ3JlZGVudGlh
bCgqcHJpdi0+d2ViQ2hhbGxlbmdlLCBjcmVkZW50aWFsKTsKKyAgICBwcml2LT5yZXNwb25zZV9m
aXJlZCA9IFRSVUU7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl9hdXRoX2NoYWxsZW5nZV9jb250
aW51ZV93aXRob3V0X2NyZWRlbnRpYWwKKyAqIEBjaGFsbGVuZ2U6IGEgI1dlYktpdFdlYkF1dGhD
aGFsbGVuZ2UKKyAqCisgKiBSZXNwb25zZSB0byBjb250aW51ZSBsb2FkaW5nIHRoZSByZXF1ZXN0
ZWQgcmVzb3VyY2Ugd2l0aG91dCBhbnkgY3JlZGVudGlhbC4KKyAqCisgKiBBZnRlciB0aGlzIHJl
c3BvbnNlLCB0aGUgQGNoYWxsZW5nZSBjYW4ndCBiZSB1c2VkIGZvciBhbnkgZnVydGhlciByZXNw
b25zZXMgb24gdGhlCisgKiBzYW1lIGF1dGhlbnRpY2F0aW9uIHJlcXVlc3QuCisgKi8KK3ZvaWQg
d2Via2l0X3dlYl9hdXRoX2NoYWxsZW5nZV9jb250aW51ZV93aXRob3V0X2NyZWRlbnRpYWwoV2Vi
S2l0V2ViQXV0aENoYWxsZW5nZSogY2hhbGxlbmdlKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwo
V0VCS0lUX0lTX1dFQl9BVVRIX0NIQUxMRU5HRShjaGFsbGVuZ2UpKTsKKworICAgIFdlYktpdFdl
YkF1dGhDaGFsbGVuZ2VQcml2YXRlKiBwcml2ID0gY2hhbGxlbmdlLT5wcml2OworICAgIGdfcmV0
dXJuX2lmX2ZhaWwoIXByaXYtPnJlc3BvbnNlX2ZpcmVkKTsKKworICAgIHByaXYtPndlYkNoYWxs
ZW5nZS0+c291cmNlSGFuZGxlKCktPnJlY2VpdmVkUmVxdWVzdFRvQ29udGludWVXaXRob3V0Q3Jl
ZGVudGlhbCgqcHJpdi0+d2ViQ2hhbGxlbmdlKTsKKyAgICBwcml2LT5yZXNwb25zZV9maXJlZCA9
IFRSVUU7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl9hdXRoX2NoYWxsZW5nZV9jYW5jZWwKKyAq
IEBjaGFsbGVuZ2U6IGEgI1dlYktpdFdlYkF1dGhDaGFsbGVuZ2UKKyAqCisgKiBSZXNwb25zZSB0
byBjYW5jZWwgdGhlIGN1cnJlbnQgYXV0aGVudGljYXRpb24gQGNoYWxsZW5nZSBmb3IgdGhlIHJl
cXVlc3RlZCByZXNvdXJjZS4KKyAqCisgKiBBZnRlciB0aGlzIHJlc3BvbnNlLCB0aGUgQGNoYWxs
ZW5nZSBjYW4ndCBiZSB1c2VkIGZvciBhbnkgZnVydGhlciByZXNwb25zZXMgb24gdGhlCisgKiBz
YW1lIGF1dGhlbnRpY2F0aW9uIHJlcXVlc3QuCisgKi8KK3ZvaWQgd2Via2l0X3dlYl9hdXRoX2No
YWxsZW5nZV9jYW5jZWwoV2ViS2l0V2ViQXV0aENoYWxsZW5nZSogY2hhbGxlbmdlKQoreworICAg
IGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9BVVRIX0NIQUxMRU5HRShjaGFsbGVuZ2Up
KTsKKworICAgIFdlYktpdFdlYkF1dGhDaGFsbGVuZ2VQcml2YXRlKiBwcml2ID0gY2hhbGxlbmdl
LT5wcml2OworICAgIGdfcmV0dXJuX2lmX2ZhaWwoIXByaXYtPnJlc3BvbnNlX2ZpcmVkKTsKKwor
ICAgIHByaXYtPndlYkNoYWxsZW5nZS0+c291cmNlSGFuZGxlKCktPnJlY2VpdmVkQ2FuY2VsbGF0
aW9uKCpwcml2LT53ZWJDaGFsbGVuZ2UpOworICAgIHByaXYtPnJlc3BvbnNlX2ZpcmVkID0gVFJV
RTsKK30KKworfQpJbmRleDogV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViYXV0aGNoYWxsZW5n
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmF1dGhjaGFsbGVu
Z2UuaAkocmV2aXNpb24gMCkKKysrIFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmF1dGhjaGFs
bGVuZ2UuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAwOCBMdWNhIEJydW5vCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAt
MTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgV0VCS0lUX1dFQl9BVVRIX0NIQUxMRU5HRV9ICisj
ZGVmaW5lIFdFQktJVF9XRUJfQVVUSF9DSEFMTEVOR0VfSAorCisjaW5jbHVkZSA8Z2xpYi1vYmpl
Y3QuaD4KKworI2luY2x1ZGUgIndlYmtpdGRlZmluZXMuaCIKKworR19CRUdJTl9ERUNMUworCisj
ZGVmaW5lIFdFQktJVF9UWVBFX1dFQl9BVVRIX0NIQUxMRU5HRSAgICAgICAgICAgICh3ZWJraXRf
d2ViX2F1dGhfY2hhbGxlbmdlX2dldF90eXBlKCkpCisjZGVmaW5lIFdFQktJVF9XRUJfQVVUSF9D
SEFMTEVOR0Uob2JqKSAgICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9i
aiksIFdFQktJVF9UWVBFX1dFQl9BVVRIX0NIQUxMRU5HRSwgV2ViS2l0V2ViQXV0aENoYWxsZW5n
ZSkpCisjZGVmaW5lIFdFQktJVF9XRUJfQVVUSF9DSEFMTEVOR0VfQ0xBU1Moa2xhc3MpICAgICAo
R19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNzKSwgIFdFQktJVF9UWVBFX1dFQl9BVVRIX0NI
QUxMRU5HRSwgV2ViS2l0V2ViQXV0aENoYWxsZW5nZUNsYXNzKSkKKyNkZWZpbmUgV0VCS0lUX0lT
X1dFQl9BVVRIX0NIQUxMRU5HRShvYmopICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9U
WVBFKChvYmopLCBXRUJLSVRfVFlQRV9XRUJfQVVUSF9DSEFMTEVOR0UpKQorI2RlZmluZSBXRUJL
SVRfSVNfV0VCX0FVVEhfQ0hBTExFTkdFX0NMQVNTKGtsYXNzKSAoR19UWVBFX0NIRUNLX0NMQVNT
X1RZUEUoKGtsYXNzKSwgIFdFQktJVF9UWVBFX1dFQl9BVVRIX0NIQUxMRU5HRSkpCisjZGVmaW5l
IFdFQktJVF9XRUJfQVVUSF9DSEFMTEVOR0VfR0VUX0NMQVNTKG9iaikgIChHX1RZUEVfSU5TVEFO
Q0VfR0VUX0NMQVNTKChvYmopLCAgV0VCS0lUX1RZUEVfV0VCX0FVVEhfQ0hBTExFTkdFLCBXZWJL
aXRXZWJBdXRoQ2hhbGxlbmdlQ2xhc3MpKQorCit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViQXV0
aENoYWxsZW5nZVByaXZhdGUgV2ViS2l0V2ViQXV0aENoYWxsZW5nZVByaXZhdGU7CisKK3N0cnVj
dCBfV2ViS2l0V2ViQXV0aENoYWxsZW5nZSB7CisgICAgR09iamVjdCBwYXJlbnQ7CisKKyAgICBX
ZWJLaXRXZWJBdXRoQ2hhbGxlbmdlUHJpdmF0ZSogcHJpdjsKK307CisKK3N0cnVjdCBfV2ViS2l0
V2ViQXV0aENoYWxsZW5nZUNsYXNzIHsKKyAgICBHT2JqZWN0Q2xhc3MgcGFyZW50OworfTsKKwor
V0VCS0lUX0FQSSBHVHlwZQord2Via2l0X3dlYl9hdXRoX2NoYWxsZW5nZV9nZXRfdHlwZSAodm9p
ZCk7CisKK1dFQktJVF9BUEkgV2ViS2l0V2ViQXV0aENoYWxsZW5nZSoKK3dlYmtpdF93ZWJfYXV0
aF9jaGFsbGVuZ2VfbmV3ICgpOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF93ZWJfYXV0aF9j
aGFsbGVuZ2Vfc2V0X3VzZXIgKFdlYktpdFdlYkF1dGhDaGFsbGVuZ2UqIGNoYWxsZW5nZSwgY29u
c3QgZ2NoYXIqIHVzZXIpOworCitXRUJLSVRfQVBJIGNvbnN0IGdjaGFyKgord2Via2l0X3dlYl9h
dXRoX2NoYWxsZW5nZV9nZXRfdXNlciAoV2ViS2l0V2ViQXV0aENoYWxsZW5nZSogY2hhbGxlbmdl
KTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfd2ViX2F1dGhfY2hhbGxlbmdlX3NldF9wYXNz
d29yZCAoV2ViS2l0V2ViQXV0aENoYWxsZW5nZSogY2hhbGxlbmdlLCBjb25zdCBnY2hhciogcGFz
c3dvcmQpOworCitXRUJLSVRfQVBJIGNvbnN0IGdjaGFyKgord2Via2l0X3dlYl9hdXRoX2NoYWxs
ZW5nZV9nZXRfcGFzc3dvcmQgKFdlYktpdFdlYkF1dGhDaGFsbGVuZ2UqIGNoYWxsZW5nZSk7CisK
K1dFQktJVF9BUEkgdm9pZAord2Via2l0X3dlYl9hdXRoX2NoYWxsZW5nZV91c2VfY3JlZGVudGlh
bCAoV2ViS2l0V2ViQXV0aENoYWxsZW5nZSogY2hhbGxlbmdlKTsKKworV0VCS0lUX0FQSSB2b2lk
Cit3ZWJraXRfd2ViX2F1dGhfY2hhbGxlbmdlX2NvbnRpbnVlX3dpdGhvdXRfY3JlZGVudGlhbCAo
V2ViS2l0V2ViQXV0aENoYWxsZW5nZSogY2hhbGxlbmdlKTsKKworV0VCS0lUX0FQSSB2b2lkCit3
ZWJraXRfd2ViX2F1dGhfY2hhbGxlbmdlX2NhbmNlbCAoV2ViS2l0V2ViQXV0aENoYWxsZW5nZSog
Y2hhbGxlbmdlKTsKKworR19FTkRfREVDTFMKKworI2VuZGlmCkluZGV4OiBXZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL3dlYmtpdC93
ZWJraXR3ZWJ2aWV3LmNwcAkocmV2aXNpb24gMzA1NDkpCisrKyBXZWJLaXQvZ3RrL3dlYmtpdC93
ZWJraXR3ZWJ2aWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODUsNiArODUsNyBAQCBlbnVtIHsK
ICAgICBDT1BZX0NMSVBCT0FSRCwKICAgICBQQVNURV9DTElQQk9BUkQsCiAgICAgQ1VUX0NMSVBC
T0FSRCwKKyAgICBBVVRIRU5USUNBVElPTl9SRVFVRVNURUQsCiAgICAgTEFTVF9TSUdOQUwKIH07
CiAKQEAgLTM5NSw3ICszOTYsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X2Zv
Y3VzX2luCiAgICAgR3RrV2lkZ2V0KiB0b3BsZXZlbCA9IGd0a193aWRnZXRfZ2V0X3RvcGxldmVs
KHdpZGdldCk7CiAgICAgaWYgKEdUS19XSURHRVRfVE9QTEVWRUwodG9wbGV2ZWwpICYmIGd0a193
aW5kb3dfaGFzX3RvcGxldmVsX2ZvY3VzKEdUS19XSU5ET1codG9wbGV2ZWwpKSkgewogICAgICAg
ICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gV0VCS0lUX1dFQl9WSUVXKHdpZGdldCk7Ci0KKyAg
ICAgICAgCiAgICAgICAgIEZyYW1lKiBmcmFtZSA9IGNvcmUod2ViVmlldyktPm1haW5GcmFtZSgp
OwogICAgICAgICBjb3JlKHdlYlZpZXcpLT5mb2N1c0NvbnRyb2xsZXIoKS0+c2V0QWN0aXZlKGZy
YW1lKTsKICAgICB9CkBAIC02MjEsNiArNjIyLDgyIEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJf
dmlld19yZWFsX3Bhc3RlX2MKICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIlBhc3RlIiku
ZXhlY3V0ZSgpOwogfQogCit0eXBlZGVmIHN0cnVjdAoreworICAgIEd0a1dpZGdldCogdXNlcl9l
bnRyeTsKKyAgICBHdGtXaWRnZXQqIHBhc3N3b3JkX2VudHJ5OworICAgIFdlYktpdFdlYkF1dGhD
aGFsbGVuZ2UqIGNoYWxsZW5nZTsKK30gQXV0aERpYWxvZ0RhdGE7CisKK3N0YXRpYyB2b2lkIHdl
YmtpdF93ZWJfdmlld193ZWJfYXV0aF9kaWFsb2dfcmVzcG9uc2VfY2IoR3RrV2lkZ2V0KiBkaWFs
b2csIGdpbnQgcmVzcG9uc2UsIGdwb2ludGVyIHVzZXJfZGF0YSkKK3sKKyAgICBBdXRoRGlhbG9n
RGF0YSogZGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8QXV0aERpYWxvZ0RhdGEqPih1c2VyX2RhdGEp
OworCisgICAgc3dpdGNoIChyZXNwb25zZSkgeworICAgIGNhc2UgR1RLX1JFU1BPTlNFX05PTkU6
CisgICAgY2FzZSBHVEtfUkVTUE9OU0VfREVMRVRFX0VWRU5UOgorICAgIGNhc2UgR1RLX1JFU1BP
TlNFX1JFSkVDVDoKKyAgICAgICAgd2Via2l0X3dlYl9hdXRoX2NoYWxsZW5nZV9jb250aW51ZV93
aXRob3V0X2NyZWRlbnRpYWwoZGF0YS0+Y2hhbGxlbmdlKTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBHVEtfUkVTUE9OU0VfQUNDRVBUOgorICAgICAgICB3ZWJraXRfd2ViX2F1dGhfY2hhbGxl
bmdlX3NldF91c2VyKGRhdGEtPmNoYWxsZW5nZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBndGtfZW50cnlfZ2V0X3RleHQoR1RLX0VOVFJZKGRhdGEtPnVzZXJf
ZW50cnkpKSk7CisgICAgICAgIHdlYmtpdF93ZWJfYXV0aF9jaGFsbGVuZ2Vfc2V0X3Bhc3N3b3Jk
KGRhdGEtPmNoYWxsZW5nZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZ3RrX2VudHJ5X2dldF90ZXh0KEdUS19FTlRSWShkYXRhLT5wYXNzd29yZF9lbnRy
eSkpKTsKKyAgICAgICAgd2Via2l0X3dlYl9hdXRoX2NoYWxsZW5nZV91c2VfY3JlZGVudGlhbChk
YXRhLT5jaGFsbGVuZ2UpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBn
X2Fzc2VydF9ub3RfcmVhY2hlZCAoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgZ3Rr
X3dpZGdldF9kZXN0cm95KGRpYWxvZyk7CisgICAgZ19vYmplY3RfdW5yZWYoZGF0YS0+Y2hhbGxl
bmdlKTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X3JlYWxfYXV0aGVudGljYXRp
b25fcmVxdWVzdGVkKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdFdlYkZyYW1lKiB3ZWJG
cmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBXZWJLaXRXZWJBdXRoQ2hhbGxlbmdlKiBjaGFsbGVuZ2UpCit7CisgICAgR3RrV2lk
Z2V0KiB3aW5kb3c7CisgICAgR3RrV2lkZ2V0KiBkaWFsb2c7CisgICAgR3RrV2lkZ2V0KiB0YWJs
ZTsKKyAgICBHdGtXaWRnZXQqIGxhYmVsOworICAgIEF1dGhEaWFsb2dEYXRhKiBkYXRhOworCisg
ICAgd2luZG93ID0gZ3RrX3dpZGdldF9nZXRfdG9wbGV2ZWwoR1RLX1dJREdFVCh3ZWJWaWV3KSk7
CisgICAgZ2NoYXIqIHRpdGxlID0gZ19zdHJjb25jYXQoIkF1dGhlbnRpY2F0aW9uIC0gIiwgd2Vi
a2l0X3dlYl9mcmFtZV9nZXRfdXJpKHdlYkZyYW1lKSwgTlVMTCk7CisgICAgZGlhbG9nID0gZ3Rr
X2RpYWxvZ19uZXdfd2l0aF9idXR0b25zKHRpdGxlLCBHVEtfV0lER0VUX1RPUExFVkVMKHdpbmRv
dykgPyBHVEtfV0lORE9XKHdpbmRvdykgOiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAoR3RrRGlhbG9nRmxhZ3MpKEdUS19ESUFMT0dfTU9EQUwgfCBHVEtfRElB
TE9HX0RFU1RST1lfV0lUSF9QQVJFTlQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHVEtfU1RPQ0tfT0ssIEdUS19SRVNQT05TRV9BQ0NFUFQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdUS19TVE9DS19DQU5DRUwsIEdUS19SRVNQ
T05TRV9SRUpFQ1QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5V
TEwpOworICAgIGdfZnJlZSh0aXRsZSk7CisgICAgZ3RrX2RpYWxvZ19zZXRfZGVmYXVsdF9yZXNw
b25zZShHVEtfRElBTE9HKGRpYWxvZyksIEdUS19SRVNQT05TRV9SRUpFQ1QpOworCisgICAgZGF0
YSA9IGdfbmV3KEF1dGhEaWFsb2dEYXRhLCAxKTsKKyAgICBkYXRhLT51c2VyX2VudHJ5ID0gZ3Rr
X2VudHJ5X25ldygpOworICAgIGRhdGEtPnBhc3N3b3JkX2VudHJ5ID0gZ3RrX2VudHJ5X25ldygp
OworICAgIGd0a19lbnRyeV9zZXRfdmlzaWJpbGl0eShHVEtfRU5UUlkoZGF0YS0+cGFzc3dvcmRf
ZW50cnkpLCBGQUxTRSk7CisgICAgZGF0YS0+Y2hhbGxlbmdlID0gY2hhbGxlbmdlOworICAgIGdf
c2lnbmFsX2Nvbm5lY3QoZGlhbG9nLCAicmVzcG9uc2UiLCBHX0NBTExCQUNLKHdlYmtpdF93ZWJf
dmlld193ZWJfYXV0aF9kaWFsb2dfcmVzcG9uc2VfY2IpLCBkYXRhKTsKKworICAgIHRhYmxlID0g
Z3RrX3RhYmxlX25ldygyLCAyLCBGQUxTRSk7CisgICAgZ3RrX3RhYmxlX3NldF9jb2xfc3BhY2lu
Z3MoR1RLX1RBQkxFKHRhYmxlKSwgMyk7CisgICAgZ3RrX3RhYmxlX3NldF9yb3dfc3BhY2luZ3Mo
R1RLX1RBQkxFKHRhYmxlKSwgMyk7CisKKyAgICBsYWJlbCA9IGd0a19sYWJlbF9uZXcoIlVzZXJu
YW1lOiIpOworICAgIGd0a190YWJsZV9hdHRhY2hfZGVmYXVsdHMoR1RLX1RBQkxFKHRhYmxlKSwg
bGFiZWwsIDAsIDEsIDAsIDEpOworICAgIGd0a190YWJsZV9hdHRhY2hfZGVmYXVsdHMoR1RLX1RB
QkxFKHRhYmxlKSwgZGF0YS0+dXNlcl9lbnRyeSwgMSwgMiwgMCwgMSk7CisKKyAgICBsYWJlbCA9
IGd0a19sYWJlbF9uZXcoIlBhc3N3b3JkOiIpOworICAgIGd0a190YWJsZV9hdHRhY2hfZGVmYXVs
dHMoR1RLX1RBQkxFKHRhYmxlKSwgbGFiZWwsIDAsIDEsIDEsIDIpOworICAgIGd0a190YWJsZV9h
dHRhY2hfZGVmYXVsdHMoR1RLX1RBQkxFKHRhYmxlKSwgZGF0YS0+cGFzc3dvcmRfZW50cnksIDEs
IDIsIDEsIDIpOworCisgICAgZ3RrX2NvbnRhaW5lcl9hZGQoR1RLX0NPTlRBSU5FUihHVEtfRElB
TE9HKGRpYWxvZyktPnZib3gpLCB0YWJsZSk7CisgICAgZ3RrX3dpZGdldF9zaG93X2FsbCh0YWJs
ZSk7CisgICAgZ3RrX3dpZGdldF9zaG93KGRpYWxvZyk7Cit9CisKIHN0YXRpYyB2b2lkIHdlYmtp
dF93ZWJfdmlld19maW5hbGl6ZShHT2JqZWN0KiBvYmplY3QpCiB7CiAgICAgV2ViS2l0V2ViVmll
dyogd2ViVmlldyA9IFdFQktJVF9XRUJfVklFVyhvYmplY3QpOwpAQCAtOTg3LDYgKzEwNjQsMjUg
QEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2NsYXNzX2luaXQoVwogICAgICAgICAgICAg
Z19jY2xvc3VyZV9tYXJzaGFsX1ZPSURfX1ZPSUQsCiAgICAgICAgICAgICBHX1RZUEVfTk9ORSwg
MCk7CiAKKyAgICAvKioKKyAgICAgKiBXZWJLaXRXZWJWaWV3OjphdXRoZW50aWNhdGlvbi1yZXF1
ZXN0ZWQ6CisgICAgICogQHdlYl92aWV3OiB0aGUgb2JqZWN0IHdoaWNoIHJlY2VpdmVkIHRoZSBz
aWduYWwKKyAgICAgKgorICAgICAqIFRoZSA6OmF1dGhlbnRpY2F0aW9uLXJlcXVlc3RlZCBzaWdu
YWwgaXMgZW1pdHRlZCB3aGVuIGFuIGF1dGhlbnRpY2F0aW9uIGlzCisgICAgICogcmVxdWVzdGVk
IGZyb20gdGhlIHNlcnZlciB0byBhY2Nlc3MgYSByZXNvdXJjZS4KKyAgICAgKgorICAgICAqIFRo
ZSBkZWZhdWx0IGJlaGF2aW9yIGZvciB0aGlzIHNpZ25hbCBpcyBjcmVhdGluZyBhbiBpbnB1dCBk
aWFsb2cgdG8gZ2V0IGEgc3VpdGFibGUgY3JlZGVudGlhbC4KKyAgICAgKi8KKyAgICB3ZWJraXRf
d2ViX3ZpZXdfc2lnbmFsc1tBVVRIRU5USUNBVElPTl9SRVFVRVNURURdID0gZ19zaWduYWxfbmV3
KCJhdXRoZW50aWNhdGlvbi1yZXF1ZXN0ZWQiLAorICAgICAgICAgICAgR19UWVBFX0ZST01fQ0xB
U1Mod2ViVmlld0NsYXNzKSwKKyAgICAgICAgICAgIChHU2lnbmFsRmxhZ3MpKEdfU0lHTkFMX1JV
Tl9MQVNUIHwgR19TSUdOQUxfQUNUSU9OKSwKKyAgICAgICAgICAgIEdfU1RSVUNUX09GRlNFVChX
ZWJLaXRXZWJWaWV3Q2xhc3MsIGF1dGhlbnRpY2F0aW9uX3JlcXVlc3RlZCksCisgICAgICAgICAg
ICBOVUxMLCBOVUxMLAorICAgICAgICAgICAgd2Via2l0X21hcnNoYWxfVk9JRF9fT0JKRUNUX09C
SkVDVCwKKyAgICAgICAgICAgIEdfVFlQRV9OT05FLCAyLAorICAgICAgICAgICAgV0VCS0lUX1RZ
UEVfV0VCX0ZSQU1FLAorICAgICAgICAgICAgV0VCS0lUX1RZUEVfV0VCX0FVVEhfQ0hBTExFTkdF
KTsKKwogICAgIC8qCiAgICAgICogaW1wbGVtZW50YXRpb25zIG9mIHZpcnR1YWwgbWV0aG9kcwog
ICAgICAqLwpAQCAtMTAwMiw2ICsxMDk4LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3
X2NsYXNzX2luaXQoVwogICAgIHdlYlZpZXdDbGFzcy0+Y3V0X2NsaXBib2FyZCA9IHdlYmtpdF93
ZWJfdmlld19yZWFsX2N1dF9jbGlwYm9hcmQ7CiAgICAgd2ViVmlld0NsYXNzLT5jb3B5X2NsaXBi
b2FyZCA9IHdlYmtpdF93ZWJfdmlld19yZWFsX2NvcHlfY2xpcGJvYXJkOwogICAgIHdlYlZpZXdD
bGFzcy0+cGFzdGVfY2xpcGJvYXJkID0gd2Via2l0X3dlYl92aWV3X3JlYWxfcGFzdGVfY2xpcGJv
YXJkOworICAgIHdlYlZpZXdDbGFzcy0+YXV0aGVudGljYXRpb25fcmVxdWVzdGVkID0gd2Via2l0
X3dlYl92aWV3X3JlYWxfYXV0aGVudGljYXRpb25fcmVxdWVzdGVkOwogCiAgICAgR09iamVjdENs
YXNzKiBvYmplY3RDbGFzcyA9IEdfT0JKRUNUX0NMQVNTKHdlYlZpZXdDbGFzcyk7CiAgICAgb2Jq
ZWN0Q2xhc3MtPmZpbmFsaXplID0gd2Via2l0X3dlYl92aWV3X2ZpbmFsaXplOwpJbmRleDogV2Vi
S2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsv
d2Via2l0L3dlYmtpdHdlYnZpZXcuaAkocmV2aXNpb24gMzA1NDkpCisrKyBXZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXR3ZWJ2aWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTg0LDYgKzg0LDcgQEAgc3Ry
dWN0IF9XZWJLaXRXZWJWaWV3Q2xhc3MgewogICAgIHZvaWQgKCpjdXRfY2xpcGJvYXJkKSAoV2Vi
S2l0V2ViVmlldyogd2ViX3ZpZXcpOwogICAgIHZvaWQgKCpjb3B5X2NsaXBib2FyZCkgKFdlYktp
dFdlYlZpZXcqIHdlYl92aWV3KTsKICAgICB2b2lkICgqcGFzdGVfY2xpcGJvYXJkKSAoV2ViS2l0
V2ViVmlldyogd2ViX3ZpZXcpOworICAgIHZvaWQgKCphdXRoZW50aWNhdGlvbl9yZXF1ZXN0ZWQp
IChXZWJLaXRXZWJWaWV3KiB3ZWJfdmlldywgV2ViS2l0V2ViRnJhbWUqIHdlYl9mcmFtZSwgV2Vi
S2l0V2ViQXV0aENoYWxsZW5nZSogd2ViX2F1dGhfY2hhbGxlbmdlKTsKIAogICAgIC8qCiAgICAg
ICogaW50ZXJuYWwK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>19735</attachid>
            <date>2008-03-13 11:25:31 -0700</date>
            <delta_ts>2008-03-13 11:25:31 -0700</delta_ts>
            <desc>CURL: Basic Authentication support</desc>
            <filename>0001-CURL-Basic-Authentication-support.patch</filename>
            <type>text/plain</type>
            <size>36639</size>
            <attacher name="Tommi Komulainen">tkomulai+webkit</attacher>
            
              <data encoding="base64">RnJvbSBlMjU0NzA1ZDljZDQ0ZGM0NGJjYzU1Mzc2MWNkMGRmM2U1NjU3NmQ2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWNhIEJydW5vIDxsZXRoYWxtYW44OEBnbWFpbC5jb20+CkRh
dGU6IFdlZCwgMTIgTWFyIDIwMDggMjA6MTE6MTMgKzAxMDAKU3ViamVjdDogW1BBVENIXSBDVVJM
OiBCYXNpYyBBdXRoZW50aWNhdGlvbiBzdXBwb3J0CgpVcGRhdGVkIHBhdGNoIGZvciBjaGFuZ2Vz
IGluIHRydW5rCi0tLQogR05VbWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfCAgICAyICsKIFdlYkNvcmUvR05VbWFrZWZpbGUuYW0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHwgICAgMSArCiBXZWJDb3JlL1dlYkNvcmUucHJvICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8ICAgIDMgKwogV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlSGFuZGxlLmggICAgICAgICAgfCAgICAyICstCiBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
UmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oICB8ICAgIDUgKwogLi4uL25ldHdvcmsvY3VybC9BdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZS5oICAgICAgICAgfCAgIDE4ICsrCiAuLi4vbmV0d29yay9jdXJs
L0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ3VybC5jcHAgICB8ICAgNDAgKysrCiAuLi4vcGxhdGZv
cm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAgICB8ICAgNjcgKysrKysKIC4u
Li9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVNYW5hZ2VyLmNwcCAgICAgICAgIHwgICAyNCAr
KwogV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAgfCAg
IDE1ICstCiBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRkZWZpbmVzLmggICAgICAgICAgICAgICAg
ICB8ICAgIDMgKwogV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5oICAgICAgICAgICAg
ICAgICAgfCAgIDEyICsKIFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmF1dGhjaGFsbGVuZ2Uu
Y3BwICAgICAgIHwgIDI1OSArKysrKysrKysrKysrKysrKysrKwogV2ViS2l0L2d0ay93ZWJraXQv
d2Via2l0d2ViYXV0aGNoYWxsZW5nZS5oICAgICAgICAgfCAgIDc3ICsrKysrKwogV2ViS2l0L2d0
ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAgICAgICAgICAgICAgICAgfCAgIDk5ICsrKysrKysr
LQogV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5oICAgICAgICAgICAgICAgICAgfCAg
ICAxICsKIDE2IGZpbGVzIGNoYW5nZWQsIDYyNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygt
KQogY3JlYXRlIG1vZGUgMTAwNjQ0IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0F1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlQ3VybC5jcHAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBXZWJLaXQvZ3Rr
L3dlYmtpdC93ZWJraXR3ZWJhdXRoY2hhbGxlbmdlLmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFdl
YktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmF1dGhjaGFsbGVuZ2UuaAoKZGlmZiAtLWdpdCBhL0dO
VW1ha2VmaWxlLmFtIGIvR05VbWFrZWZpbGUuYW0KaW5kZXggZDI3ODM3YS4uM2Q0NTA2MyAxMDA2
NDQKLS0tIGEvR05VbWFrZWZpbGUuYW0KKysrIGIvR05VbWFrZWZpbGUuYW0KQEAgLTI4Myw2ICsy
ODMsNyBAQCB3ZWJraXRndGtfaF9hcGkgKz0gXAogCVdlYktpdC9ndGsvd2Via2l0L3dlYmtpdC5o
IFwKIAlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRkZWZpbmVzLmggXAogCVdlYktpdC9ndGsvd2Vi
a2l0L3dlYmtpdG5ldHdvcmtyZXF1ZXN0LmggXAorCVdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdl
YmF1dGhjaGFsbGVuZ2UuaCBcCiAJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViYmFja2Zvcndh
cmRsaXN0LmggXAogCVdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmZyYW1lLmggXAogCVdlYktp
dC9ndGsvd2Via2l0L3dlYmtpdHdlYmhpc3RvcnlpdGVtLmggXApAQCAtMzA2LDYgKzMwNyw3IEBA
IHdlYmtpdGd0a19oZWFkZXJzICs9IFwKIHdlYmtpdGd0a19zb3VyY2VzICs9IFwKIAlXZWJLaXQv
Z3RrL3dlYmtpdC93ZWJraXRuZXR3b3JrcmVxdWVzdC5jcHAgXAogCVdlYktpdC9ndGsvd2Via2l0
L3dlYmtpdHByaXZhdGUuY3BwIFwKKwlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJhdXRoY2hh
bGxlbmdlLmNwcCBcCiAJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViYmFja2ZvcndhcmRsaXN0
LmNwcCBcCiAJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViZnJhbWUuY3BwIFwKIAlXZWJLaXQv
Z3RrL3dlYmtpdC93ZWJraXR3ZWJoaXN0b3J5aXRlbS5jcHAgXApkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5hbSBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggMDFiNTA2MS4u
NGM0MTQ2OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmFtCkBAIC0xMDMzLDYgKzEwMzMsNyBAQCB3ZWJjb3JlX2NwcGZsYWdzICs9
IFwKIAktSSQoc3JjZGlyKS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybAogCiB3ZWJjb3Jl
X3NvdXJjZXMgKz0gXAorCVdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0F1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlQ3VybC5jcHAgXAogCVdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jl
c291cmNlSGFuZGxlQ3VybC5jcHAgXAogCVdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jl
c291cmNlSGFuZGxlTWFuYWdlci5jcHAKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnBy
byBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggMzUzNjhmZC4uZWQ3ZjZiMiAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC0xMDMy
LDYgKzEwMzIsNyBAQCBndGstcG9ydCB7CiAgICAgICAgIC4uL1dlYktpdC9ndGsvd2Via2l0L3dl
YmtpdGRlZmluZXMuaCBcCiAgICAgICAgIC4uL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdG5ldHdv
cmtyZXF1ZXN0LmggXAogICAgICAgICAuLi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2YXRl
LmggXAorICAgICAgICAuLi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJhdXRoY2hhbGxlbmdl
LmggXAogICAgICAgICAuLi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJiYWNrZm9yd2FyZGxp
c3QuaCBcCiAgICAgICAgIC4uL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmZyYW1lLmggXAog
ICAgICAgICAuLi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJoaXN0b3J5aXRlbS5oIFwKQEAg
LTEwOTQsNiArMTA5NSw3IEBAIGd0ay1wb3J0IHsKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3RrL0ltYWdlR3RrLmNwcCBcCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2d0ay9JbnRQb2lu
dEd0ay5jcHAgXAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9ndGsvSW50UmVjdEd0ay5jcHAg
XAorICAgICAgICBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQXV0aGVudGljYXRpb25DaGFsbGVuZ2VD
dXJsLmNwcCBcCiAgICAgICAgIHBsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1
cmwuY3BwIFwKICAgICAgICAgcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlTWFu
YWdlci5jcHAgXAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9BZmZpbmVUcmFuc2Zv
cm1DYWlyby5jcHAgXApAQCAtMTExMiw2ICsxMTE0LDcgQEAgZ3RrLXBvcnQgewogICAgICAgICBw
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy94Ym0vWEJNSW1hZ2VEZWNvZGVyLmNwcCBcCiAgICAgICAg
IC4uL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdG5ldHdvcmtyZXF1ZXN0LmNwcCBcCiAgICAgICAg
IC4uL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHByaXZhdGUuY3BwIFwKKyAgICAgICAgLi4vV2Vi
S2l0L2d0ay93ZWJraXQvd2Via2l0d2ViYXV0aGNoYWxsZW5nZS5oIFwKICAgICAgICAgLi4vV2Vi
S2l0L2d0ay93ZWJraXQvd2Via2l0d2ViYmFja2ZvcndhcmRsaXN0LmNwcCBcCiAgICAgICAgIC4u
L1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmZyYW1lLmNwcCBcCiAgICAgICAgIC4uL1dlYktp
dC9ndGsvd2Via2l0L3dlYmtpdHdlYmhpc3RvcnlpdGVtLmNwcCBcCmRpZmYgLS1naXQgYS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaCBiL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCmluZGV4IGMwY2YxNWEuLjYwMTJkMGEgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCisrKyBiL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCkBAIC05OCw3ICs5OCw3IEBAIHB1
YmxpYzoKICAgICAKICAgICB+UmVzb3VyY2VIYW5kbGUoKTsKIAotI2lmIFBMQVRGT1JNKE1BQykg
fHwgVVNFKENGTkVUV09SSykKKyNpZiBQTEFURk9STShNQUMpIHx8IFVTRShDRk5FVFdPUkspIHx8
IFVTRShDVVJMKQogICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNv
bnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7CiAgICAgdm9pZCByZWNlaXZlZENyZWRlbnRp
YWwoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmLCBjb25zdCBDcmVkZW50aWFsJik7CiAg
ICAgdm9pZCByZWNlaXZlZFJlcXVlc3RUb0NvbnRpbnVlV2l0aG91dENyZWRlbnRpYWwoY29uc3Qg
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmggYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oCmluZGV4IGNiYmEzYzQuLmM5YjljMDEgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmgK
KysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaApA
QCAtMTA1LDYgKzEwNSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgICwgbV9m
aWxlKDApCiAgICAgICAgICAgICAsIG1fZm9ybURhdGFFbGVtZW50SW5kZXgoMCkKICAgICAgICAg
ICAgICwgbV9mb3JtRGF0YUVsZW1lbnREYXRhT2Zmc2V0KDApCisgICAgICAgICAgICAsIG1fd2Vi
Q2hhbGxlbmdlKCkKKyAgICAgICAgICAgICwgbV9jb250aW51ZVdpdGhvdXRDcmVkZW50aWFsKGZh
bHNlKQogI2VuZGlmCiAjaWYgVVNFKFNPVVApCiAgICAgICAgICAgICAsIG1fbXNnKDApCkBAIC0x
NjgsNiArMTcwLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBzaXplX3QgbV9mb3Jt
RGF0YUVsZW1lbnRJbmRleDsKICAgICAgICAgc2l6ZV90IG1fZm9ybURhdGFFbGVtZW50RGF0YU9m
ZnNldDsKICAgICAgICAgVmVjdG9yPGNoYXI+IG1fcG9zdEJ5dGVzOworCisgICAgICAgIEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlIG1fd2ViQ2hhbGxlbmdlOworICAgICAgICBib29sIG1fY29udGlu
dWVXaXRob3V0Q3JlZGVudGlhbDsKICNlbmRpZgogI2lmIFVTRShTT1VQKQogICAgICAgICBTb3Vw
TWVzc2FnZSogbV9tc2c7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaAppbmRleCA3NTNhYzZmLi5lODRhNjk1IDEwMDY0
NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9BdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZS5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0F1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlLmgKQEAgLTI2LDkgKzI2LDEzIEBACiAjZGVmaW5lIEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlX2gKIAogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZS5oIgorI2lu
Y2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFJlc291cmNlSGFuZGxlOworCiBjbGFzcyBBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSA6IHB1YmxpYyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2Ugewog
cHVibGljOgogICAgIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCkKQEAgLTM5LDYgKzQzLDIwIEBA
IHB1YmxpYzoKICAgICAgICAgOiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2UocHJvdGVjdGlv
blNwYWNlLCBwcm9wb3NlZENyZWRlbnRpYWwsIHByZXZpb3VzRmFpbHVyZUNvdW50LCByZXNwb25z
ZSwgZXJyb3IpCiAgICAgewogICAgIH0KKworICAgIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNv
bnN0IFByb3RlY3Rpb25TcGFjZSYgcHJvdGVjdGlvblNwYWNlLCBjb25zdCBDcmVkZW50aWFsJiBw
cm9wb3NlZENyZWRlbnRpYWwsIHVuc2lnbmVkIHByZXZpb3VzRmFpbHVyZUNvdW50LCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJl
c291cmNlSGFuZGxlKiBzb3VyY2VIYW5kbGUpCisgICAgICAgIDogQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VCYXNlKHByb3RlY3Rpb25TcGFjZSwgcHJvcG9zZWRDcmVkZW50aWFsLCBwcmV2aW91c0Zh
aWx1cmVDb3VudCwgcmVzcG9uc2UsIGVycm9yKQorICAgICwgbV9zb3VyY2VIYW5kbGUoc291cmNl
SGFuZGxlKQorICAgIHsKKyAgICB9CisKKyAgICBSZXNvdXJjZUhhbmRsZSogc291cmNlSGFuZGxl
KCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VIYW5kbGUuZ2V0KCk7IH0KKworcHJpdmF0ZToKKyAg
ICBmcmllbmQgY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlOworICAgIHN0YXRpYyBi
b29sIHBsYXRmb3JtQ29tcGFyZShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYSwgY29u
c3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGIpOworCisgICAgUmVmUHRyPFJlc291cmNlSGFu
ZGxlPiBtX3NvdXJjZUhhbmRsZTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ3VybC5jcHAgYi9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZUN1cmwuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU5YjNhNGYKLS0tIC9kZXYvbnVsbAor
KysgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9BdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZUN1cmwuY3BwCkBAIC0wLDAgKzEsNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggTHVj
YSBCcnVubyA8bGV0aGFsbWFuODhAZ21haWwuY29tPgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBV
VEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVU
RVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitib29sIEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlOjpwbGF0Zm9ybUNvbXBhcmUoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGEs
IGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBiKQoreworICAgIGlmIChhLnNvdXJjZUhh
bmRsZSgpICE9IGIuc291cmNlSGFuZGxlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IHJldHVybiB0cnVlOworfQorCit9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcAppbmRleCA1MmY4ZGM1Li5hNDc0Nzc4IDEwMDY0
NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwu
Y3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3Vy
bC5jcHAKQEAgLTk1LDQgKzk1LDcxIEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmxvYWRSZXNvdXJj
ZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3VyY2VFCiAgICAgbm90
SW1wbGVtZW50ZWQoKTsKIH0KIAordm9pZCBSZXNvdXJjZUhhbmRsZTo6ZGlkUmVjZWl2ZUF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVu
Z2UpCit7CisgICAgLyogRklYTUU6IGFkZCBzdXBwb3J0IGZvciBGVFAsIEhUVFBTLCBhbmQgRlRQ
UyBhdXRoZW50aWNhdGlvbiwKKyAgICAgKiBnZXQgdGhlIHJpZ2h0IHBvcnQsIHNlcnZlciBhbmQg
YXV0aGVudGljYXRpb24gc2NoZW1lCisgICAgICovCisgICAgUmVzb3VyY2VIYW5kbGVJbnRlcm5h
bCogZCA9IGdldEludGVybmFsKCk7CisgICAgaWYgKGQtPm1fY29udGludWVXaXRob3V0Q3JlZGVu
dGlhbCkKKyAgICAgICAgcmV0dXJuOworICAgIGNhbmNlbCgpOworCisgICAgUHJvdGVjdGlvblNw
YWNlIHByb3RlY3Rpb25TcGFjZTsKKyAgICB1bnNpZ25lZCBwcmV2aW91c0ZhaWx1cmVDb3VudCA9
IDA7CisgICAgaWYgKGNoYWxsZW5nZS5pc051bGwoKSkgeworICAgICAgICBwcm90ZWN0aW9uU3Bh
Y2UgPSBQcm90ZWN0aW9uU3BhY2UoZC0+bV9yZXNwb25zZS5odHRwSGVhZGVyRmllbGQoIkhvc3Qi
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDgwLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvdGVjdGlvblNwYWNlU2VydmVy
SFRUUCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQtPm1fcmVz
cG9uc2UuaHR0cEhlYWRlckZpZWxkKCJSZWFsbSIpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgUHJvdGVjdGlvblNwYWNlQXV0aGVudGljYXRpb25TY2hlbWVEZWZh
dWx0KTsKKyAgICB9IGVsc2UgeworICAgICAgICBwcm90ZWN0aW9uU3BhY2UgPSBkLT5tX3dlYkNo
YWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UoKTsKKyAgICAgICAgcHJldmlvdXNGYWlsdXJlQ291bnQg
PSBkLT5tX3dlYkNoYWxsZW5nZS5wcmV2aW91c0ZhaWx1cmVDb3VudCgpKzE7CisgICAgfQorICAg
IAorICAgIGQtPm1fd2ViQ2hhbGxlbmdlID0gQXV0aGVudGljYXRpb25DaGFsbGVuZ2UocHJvdGVj
dGlvblNwYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY2hhbGxlbmdlLnByb3Bvc2VkQ3JlZGVudGlhbCgpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNGYWlsdXJlQ291bnQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLT5tX3Jlc3BvbnNlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhbGxlbmdl
LmVycm9yKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0aGlzKTsKKworICAgIGlmIChkLT5jbGllbnQoKSkKKyAgICAgICAgZC0+Y2xpZW50KCktPmRp
ZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh0aGlzLCBkLT5tX3dlYkNoYWxsZW5nZSk7
Cit9CisKK3ZvaWQgUmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkQ3JlZGVudGlhbChjb25zdCBBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlLCBjb25zdCBDcmVkZW50aWFsJiBjcmVkZW50
aWFsKQoreworICAgIEFTU0VSVCghY2hhbGxlbmdlLmlzTnVsbCgpKTsgICAKKyAgICBSZXNvdXJj
ZUhhbmRsZUludGVybmFsKiBkID0gZ2V0SW50ZXJuYWwoKTsKKyAgICBpZiAoY2hhbGxlbmdlICE9
IGQtPm1fd2ViQ2hhbGxlbmdlKQorICAgICAgICByZXR1cm47CisKKyAgICBkLT5tX3dlYkNoYWxs
ZW5nZSA9IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2Uo
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWRl
bnRpYWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
aGFsbGVuZ2UucHJldmlvdXNGYWlsdXJlQ291bnQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNoYWxsZW5nZS5mYWlsdXJlUmVzcG9uc2UoKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYWxsZW5nZS5l
cnJvcigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dGhpcyk7CisKKyAgICBSZXNvdXJjZUhhbmRsZU1hbmFnZXI6OnNoYXJlZEluc3RhbmNlKCktPmFk
ZCh0aGlzKTsKK30KKwordm9pZCBSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRSZXF1ZXN0VG9Db250
aW51ZVdpdGhvdXRDcmVkZW50aWFsKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFs
bGVuZ2UpCit7CisgICAgQVNTRVJUKCFjaGFsbGVuZ2UuaXNOdWxsKCkpOyAgIAorICAgIFJlc291
cmNlSGFuZGxlSW50ZXJuYWwqIGQgPSBnZXRJbnRlcm5hbCgpOworICAgIGlmIChjaGFsbGVuZ2Ug
IT0gZC0+bV93ZWJDaGFsbGVuZ2UpCisgICAgICAgIHJldHVybjsKKworICAgIGQtPm1fY29udGlu
dWVXaXRob3V0Q3JlZGVudGlhbCA9IHRydWU7CisgICAgUmVzb3VyY2VIYW5kbGVNYW5hZ2VyOjpz
aGFyZWRJbnN0YW5jZSgpLT5hZGQodGhpcyk7Cit9CisKK3ZvaWQgUmVzb3VyY2VIYW5kbGU6OnJl
Y2VpdmVkQ2FuY2VsbGF0aW9uKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVu
Z2UpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5k
bGVNYW5hZ2VyLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFu
ZGxlTWFuYWdlci5jcHAKaW5kZXggYjhmYTY5Ni4uYzI5MzdlYSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVNYW5hZ2VyLmNwcAorKysgYi9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZU1hbmFnZXIuY3BwCkBA
IC0xNzAsNiArMTcwLDEwIEBAIHN0YXRpYyBzaXplX3QgaGVhZGVyQ2FsbGJhY2soY2hhciogcHRy
LCBzaXplX3Qgc2l6ZSwgc2l6ZV90IG5tZW1iLCB2b2lkKiBkYXRhKQogICAgICAgICBkLT5tX3Jl
c3BvbnNlLnNldFRleHRFbmNvZGluZ05hbWUoZXh0cmFjdENoYXJzZXRGcm9tTWVkaWFUeXBlKGQt
Pm1fcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkKCJDb250ZW50LVR5cGUiKSkpOwogICAgICAgICBk
LT5tX3Jlc3BvbnNlLnNldFN1Z2dlc3RlZEZpbGVuYW1lKGZpbGVuYW1lRnJvbUhUVFBDb250ZW50
RGlzcG9zaXRpb24oZC0+bV9yZXNwb25zZS5odHRwSGVhZGVyRmllbGQoIkNvbnRlbnQtRGlzcG9z
aXRpb24iKSkpOwogCisgICAgICAgIC8vIEhUVFAgYXV0aGVudGljYXRpb24KKyAgICAgICAgaWYg
KGh0dHBDb2RlID09IDQwMSAmJiBkLT5tX3Jlc3BvbnNlLmlzSFRUUCgpKQorICAgICAgICAgICAg
am9iLT5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoZC0+bV93ZWJDaGFsbGVuZ2Up
OworCiAgICAgICAgIC8vIEhUVFAgcmVkaXJlY3Rpb24KICAgICAgICAgaWYgKGh0dHBDb2RlID49
IDMwMCAmJiBodHRwQ29kZSA8IDQwMCkgewogICAgICAgICAgICAgU3RyaW5nIGxvY2F0aW9uID0g
ZC0+bV9yZXNwb25zZS5odHRwSGVhZGVyRmllbGQoImxvY2F0aW9uIik7CkBAIC01NTcsNiArNTYx
LDkgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZU1hbmFnZXI6OnN0YXJ0Sm9iKFJlc291cmNlSGFuZGxl
KiBqb2IpCiAgICAgfQogCiAgICAgZC0+bV9oYW5kbGUgPSBjdXJsX2Vhc3lfaW5pdCgpOworICAg
IC8vIEhUVFAgQXV0aGVudGljYXRpb24gY2FuY2VscyB0aGUgam9iIHNvIGJlIHN1cmUgdGhlIG5l
dyBqb2IgaXMgbm90IGNhbmNlbGxlZAorICAgIGQtPm1fY2FuY2VsbGVkID0gZmFsc2U7ICAKKwog
I2lmbmRlZiBOREVCVUcKICAgICBpZiAoZ2V0ZW52KCJERUJVR19DVVJMIikpCiAgICAgICAgIGN1
cmxfZWFzeV9zZXRvcHQoZC0+bV9oYW5kbGUsIENVUkxPUFRfVkVSQk9TRSwgMSk7CkBAIC01OTAs
NiArNTk3LDIzIEBAIHZvaWQgUmVzb3VyY2VIYW5kbGVNYW5hZ2VyOjpzdGFydEpvYihSZXNvdXJj
ZUhhbmRsZSogam9iKQogICAgICAgICBjdXJsX2Vhc3lfc2V0b3B0KGQtPm1faGFuZGxlLCBDVVJM
T1BUX0NPT0tJRUpBUiwgbV9jb29raWVKYXJGaWxlTmFtZSk7CiAgICAgfQogCisgICAgaWYgKCFk
LT5tX3dlYkNoYWxsZW5nZS5pc051bGwoKSAmJiAhZC0+bV9jb250aW51ZVdpdGhvdXRDcmVkZW50
aWFsKSB7CisgICAgICAgIGxvbmcgY3VybEF1dGg7CisgICAgICAgIHN3aXRjaChkLT5tX3dlYkNo
YWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UoKS5hdXRoZW50aWNhdGlvblNjaGVtZSgpKSB7ICAgICAg
ICAgIAorICAgICAgICBjYXNlIFByb3RlY3Rpb25TcGFjZUF1dGhlbnRpY2F0aW9uU2NoZW1lSFRU
UEJhc2ljOgorICAgICAgICBjYXNlIFByb3RlY3Rpb25TcGFjZUF1dGhlbnRpY2F0aW9uU2NoZW1l
RGVmYXVsdDoKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGN1cmxBdXRoID0gQ1VSTEFV
VEhfQkFTSUM7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIENyZWRl
bnRpYWwgY3JlZGVudGlhbCA9IGQtPm1fd2ViQ2hhbGxlbmdlLnByb3Bvc2VkQ3JlZGVudGlhbCgp
OworICAgICAgICBTdHJpbmcgdXNlcnB3ZCA9IGNyZWRlbnRpYWwudXNlcigpICsgIjoiICsgY3Jl
ZGVudGlhbC5wYXNzd29yZCgpOworICAgICAgICAKKyAgICAgICAgY3VybF9lYXN5X3NldG9wdChk
LT5tX2hhbmRsZSwgQ1VSTE9QVF9IVFRQQVVUSCwgY3VybEF1dGgpOworICAgICAgICBjdXJsX2Vh
c3lfc2V0b3B0KGQtPm1faGFuZGxlLCBDVVJMT1BUX1VTRVJQV0QsIHN0cmR1cCh1c2VycHdkLnV0
ZjgoKS5kYXRhKCkpKTsKKyAgICB9CisKICAgICBzdHJ1Y3QgY3VybF9zbGlzdCogaGVhZGVycyA9
IDA7CiAgICAgaWYgKGpvYi0+cmVxdWVzdCgpLmh0dHBIZWFkZXJGaWVsZHMoKS5zaXplKCkgPiAw
KSB7CiAgICAgICAgIEhUVFBIZWFkZXJNYXAgY3VzdG9tSGVhZGVycyA9IGpvYi0+cmVxdWVzdCgp
Lmh0dHBIZWFkZXJGaWVsZHMoKTsKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudEd0ay5jcHAKaW5kZXggMTYxYzc1NC4uY2EwYmUzNCAxMDA2NDQKLS0t
IGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAKKysr
IGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAKQEAg
LTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJKU0RPTVdp
bmRvdy5oIgogI2luY2x1ZGUgIkxhbmd1YWdlLmgiCisjaW5jbHVkZSAiTWFpblJlc291cmNlTG9h
ZGVyLmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIk5vdEltcGxl
bWVudGVkLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKQEAgLTM5LDYgKzQwLDcgQEAK
ICNpbmNsdWRlICJQcm9ncmVzc1RyYWNrZXIuaCIKICNpbmNsdWRlICJranNfYmluZGluZy5oIgog
I2luY2x1ZGUgImtqc19wcm94eS5oIgorI2luY2x1ZGUgIndlYmtpdHdlYmF1dGhjaGFsbGVuZ2Uu
aCIKICNpbmNsdWRlICJ3ZWJraXR3ZWJ2aWV3LmgiCiAjaW5jbHVkZSAid2Via2l0d2ViZnJhbWUu
aCIKICNpbmNsdWRlICJ3ZWJraXRwcml2YXRlLmgiCkBAIC0xNjUsOSArMTY3LDE4IEBAIHZvaWQg
RnJhbWVMb2FkZXJDbGllbnQ6OmNvbW1pdHRlZExvYWQoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwg
Y29uc3QgY2hhciogZGF0YSwKICAgICBmbC0+YWRkRGF0YShkYXRhLCBsZW5ndGgpOwogfQogCi12
b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZShEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgIGlkZW50aWZpZXIsIGNvbnN0
IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3Bh
dGNoRGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKERvY3VtZW50TG9hZGVyKiBkb2N1
bWVudExvYWRlciwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSYgd2ViQ2hhbGxlbmdlKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAg
V2ViS2l0V2ViQXV0aENoYWxsZW5nZSogY2hhbGxlbmdlID0gd2Via2l0X3dlYl9hdXRoX2NoYWxs
ZW5nZV9uZXcoKTsKKyAgICBXZWJLaXRXZWJBdXRoQ2hhbGxlbmdlUHJpdmF0ZSogcHJpdiA9IGNo
YWxsZW5nZS0+cHJpdjsKKyAgICAqcHJpdi0+d2ViQ2hhbGxlbmdlID0gd2ViQ2hhbGxlbmdlOwor
CisgICAgQ3JlZGVudGlhbCBjcmVkZW50aWFsID0gd2ViQ2hhbGxlbmdlLnByb3Bvc2VkQ3JlZGVu
dGlhbCgpOworICAgIHdlYmtpdF93ZWJfYXV0aF9jaGFsbGVuZ2Vfc2V0X3VzZXIoY2hhbGxlbmdl
LCBjcmVkZW50aWFsLnVzZXIoKS51dGY4KCkuZGF0YSgpKTsKKyAgICB3ZWJraXRfd2ViX2F1dGhf
Y2hhbGxlbmdlX3NldF9wYXNzd29yZChjaGFsbGVuZ2UsIGNyZWRlbnRpYWwucGFzc3dvcmQoKS51
dGY4KCkuZGF0YSgpKTsKKyAgICAKKyAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gZ2V0Vmll
d0Zyb21GcmFtZShtX2ZyYW1lKTsKKyAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUod2ViVmlldywg
ImF1dGhlbnRpY2F0aW9uLXJlcXVlc3RlZCIsIG1fZnJhbWUsIGNoYWxsZW5nZSwgTlVMTCk7CiB9
CiAKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ2FuY2VsQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nICBpZGVudGlmaWVyLCBj
b25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXRkZWZpbmVzLmggYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRkZWZpbmVzLmgK
aW5kZXggMzg2YzNlMS4uMjk0MGI4MyAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0ZGVmaW5lcy5oCisrKyBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdGRlZmluZXMuaApAQCAt
NDYsNiArNDYsOSBAQCB0eXBlZGVmIHN0cnVjdCBfV2ViS2l0TmV0d29ya1JlcXVlc3RDbGFzcyBX
ZWJLaXROZXR3b3JrUmVxdWVzdENsYXNzOwogdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYkJhY2tG
b3J3YXJkTGlzdCBXZWJLaXRXZWJCYWNrRm9yd2FyZExpc3Q7CiB0eXBlZGVmIHN0cnVjdCBfV2Vi
S2l0V2ViQmFja0ZvcndhcmRMaXN0Q2xhc3MgV2ViS2l0V2ViQmFja0ZvcndhcmRMaXN0Q2xhc3M7
CiAKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJBdXRoQ2hhbGxlbmdlIFdlYktpdFdlYkF1dGhD
aGFsbGVuZ2U7Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViQXV0aENoYWxsZW5nZUNsYXNzIFdl
YktpdFdlYkF1dGhDaGFsbGVuZ2VDbGFzczsKKwogdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYkhp
c3RvcnlJdGVtIFdlYktpdFdlYkhpc3RvcnlJdGVtOwogdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdl
Ykhpc3RvcnlJdGVtQ2xhc3MgV2ViS2l0V2ViSGlzdG9yeUl0ZW1DbGFzczsKIApkaWZmIC0tZ2l0
IGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5oIGIvV2ViS2l0L2d0ay93ZWJraXQv
d2Via2l0cHJpdmF0ZS5oCmluZGV4IDVjNzU5MjguLmVjZWMxNWEgMTAwNjQ0Ci0tLSBhL1dlYktp
dC9ndGsvd2Via2l0L3dlYmtpdHByaXZhdGUuaAorKysgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJr
aXRwcml2YXRlLmgKQEAgLTI3LDEyICsyNywxNCBAQAogICovCiAKICNpbmNsdWRlIDx3ZWJraXQv
d2Via2l0ZGVmaW5lcy5oPgorI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJhdXRoY2hhbGxlbmdl
Lmg+CiAjaW5jbHVkZSA8d2Via2l0L3dlYmtpdHdlYnZpZXcuaD4KICNpbmNsdWRlIDx3ZWJraXQv
d2Via2l0d2ViZnJhbWUuaD4KICNpbmNsdWRlIDx3ZWJraXQvd2Via2l0d2Vic2V0dGluZ3MuaD4K
ICNpbmNsdWRlIDx3ZWJraXQvd2Via2l0bmV0d29ya3JlcXVlc3QuaD4KICNpbmNsdWRlIDx3ZWJr
aXQvd2Via2l0d2ViYmFja2ZvcndhcmRsaXN0Lmg+CiAKKyNpbmNsdWRlICJBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZS5oIgogI2luY2x1ZGUgIkJhY2tGb3J3YXJkTGlzdC5oIgogI2luY2x1ZGUgIkhp
c3RvcnlJdGVtLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKQEAgLTEwNSw2ICsxMDcsMTYgQEAg
ZXh0ZXJuICJDIiB7CiAgICAgc3RydWN0IF9XZWJLaXROZXR3b3JrUmVxdWVzdFByaXZhdGUgewog
ICAgICAgICBnY2hhciogdXJpOwogICAgIH07CisgCisgICAgI2RlZmluZSBXRUJLSVRfV0VCX0FV
VEhfQ0hBTExFTkdFX0dFVF9QUklWQVRFKG9iaikgICAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJ
VkFURSgob2JqKSwgV0VCS0lUX1RZUEVfV0VCX0FVVEhfQ0hBTExFTkdFLCBXZWJLaXRXZWJBdXRo
Q2hhbGxlbmdlUHJpdmF0ZSkpCisgICAgdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYkF1dGhDaGFs
bGVuZ2VQcml2YXRlIFdlYktpdFdlYkF1dGhDaGFsbGVuZ2VQcml2YXRlOworICAgIHN0cnVjdCBf
V2ViS2l0V2ViQXV0aENoYWxsZW5nZVByaXZhdGUgeworICAgICAgICBXZWJDb3JlOjpBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSogd2ViQ2hhbGxlbmdlOworICAgICAgICBnY2hhciogdXNlcjsKKyAg
ICAgICAgZ2NoYXIqIHBhc3N3b3JkOworCisgICAgICAgIGdib29sZWFuIHJlc3BvbnNlX2ZpcmVk
OworICAgIH07CiAKICAgICBXZWJLaXRXZWJGcmFtZSoKICAgICB3ZWJraXRfd2ViX2ZyYW1lX2lu
aXRfd2l0aF93ZWJfdmlldyhXZWJLaXRXZWJWaWV3KiwgV2ViQ29yZTo6SFRNTEZyYW1lT3duZXJF
bGVtZW50Kik7CmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJhdXRoY2hh
bGxlbmdlLmNwcCBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmF1dGhjaGFsbGVuZ2UuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIwMmJiYjkKLS0tIC9kZXYvbnVs
bAorKysgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJhdXRoY2hhbGxlbmdlLmNwcApAQCAt
MCwwICsxLDI1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBMdWNhIEJydW5vCisgKgor
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMg
bGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICog
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIndlYmtpdHByaXZhdGUuaCIKKyNpbmNsdWRlICJ3
ZWJraXR3ZWJhdXRoY2hhbGxlbmdlLmgiCisKKyNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZS5oIgorI2luY2x1ZGUgIkNyZWRlbnRpYWwuaCIKKyNpbmNsdWRlICJSZXNvdXJjZUhhbmRs
ZS5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CisKK2V4dGVybiAiQyIgeworCitlbnVtIHsKKyAgICBQUk9QXzAsCisKKyAgICBQUk9QX1VTRVIs
CisgICAgUFJPUF9QQVNTV09SRCwKK307CisKK0dfREVGSU5FX1RZUEUoV2ViS2l0V2ViQXV0aENo
YWxsZW5nZSwgd2Via2l0X3dlYl9hdXRoX2NoYWxsZW5nZSwgR19UWVBFX09CSkVDVCk7CisKK3N0
YXRpYyB2b2lkIHdlYmtpdF93ZWJfYXV0aF9jaGFsbGVuZ2VfZ2V0X3Byb3BlcnR5KEdPYmplY3Qq
IG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcHNwZWMp
Cit7CisgICAgV2ViS2l0V2ViQXV0aENoYWxsZW5nZSogY2hhbGxlbmdlID0gV0VCS0lUX1dFQl9B
VVRIX0NIQUxMRU5HRShvYmplY3QpOworCisgICAgc3dpdGNoKHByb3BfaWQpIHsKKyAgICBjYXNl
IFBST1BfVVNFUjoKKyAgICAgICAgZ192YWx1ZV9zZXRfc3RyaW5nKHZhbHVlLCB3ZWJraXRfd2Vi
X2F1dGhfY2hhbGxlbmdlX2dldF91c2VyKGNoYWxsZW5nZSkpOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIFBST1BfUEFTU1dPUkQ6CisgICAgICAgIGdfdmFsdWVfc2V0X3N0cmluZyh2YWx1ZSwg
d2Via2l0X3dlYl9hdXRoX2NoYWxsZW5nZV9nZXRfcGFzc3dvcmQoY2hhbGxlbmdlKSk7CisgICAg
ICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9Q
Uk9QRVJUWV9JRChvYmplY3QsIHByb3BfaWQsIHBzcGVjKTsKKyAgICAgICAgYnJlYWs7CisgICAg
fQorfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX2F1dGhfY2hhbGxlbmdlX3NldF9wcm9wZXJ0
eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BfaWQsIGNvbnN0IEdWYWx1ZSogdmFsdWUsIEdQ
YXJhbVNwZWMgKnBzcGVjKQoreworICAgIFdlYktpdFdlYkF1dGhDaGFsbGVuZ2UqIGNoYWxsZW5n
ZSA9IFdFQktJVF9XRUJfQVVUSF9DSEFMTEVOR0Uob2JqZWN0KTsKKworICAgIHN3aXRjaChwcm9w
X2lkKSB7CisgICAgY2FzZSBQUk9QX1VTRVI6CisgICAgICAgIHdlYmtpdF93ZWJfYXV0aF9jaGFs
bGVuZ2Vfc2V0X3VzZXIoY2hhbGxlbmdlLCBnX3ZhbHVlX2dldF9zdHJpbmcodmFsdWUpKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX1BBU1NXT1JEOgorICAgICAgICB3ZWJraXRfd2Vi
X2F1dGhfY2hhbGxlbmdlX3NldF9wYXNzd29yZChjaGFsbGVuZ2UsIGdfdmFsdWVfZ2V0X3N0cmlu
Zyh2YWx1ZSkpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBHX09CSkVD
VF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wX2lkLCBwc3BlYyk7CisgICAg
fQorfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX2F1dGhfY2hhbGxlbmdlX2ZpbmFsaXplKEdP
YmplY3QqIG9iamVjdCkKK3sKKyAgICBXZWJLaXRXZWJBdXRoQ2hhbGxlbmdlKiBjaGFsbGVuZ2Ug
PSBXRUJLSVRfV0VCX0FVVEhfQ0hBTExFTkdFKG9iamVjdCk7CisgICAgV2ViS2l0V2ViQXV0aENo
YWxsZW5nZVByaXZhdGUqIHByaXYgPSBjaGFsbGVuZ2UtPnByaXY7CisKKyAgICBkZWxldGUgcHJp
di0+d2ViQ2hhbGxlbmdlOworICAgIGdfZnJlZShwcml2LT51c2VyKTsKKyAgICBnX2ZyZWUocHJp
di0+cGFzc3dvcmQpOworCisgICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0X3dlYl9hdXRoX2NoYWxs
ZW5nZV9wYXJlbnRfY2xhc3MpLT5maW5hbGl6ZShvYmplY3QpOworfQorCitzdGF0aWMgdm9pZCB3
ZWJraXRfd2ViX2F1dGhfY2hhbGxlbmdlX2NsYXNzX2luaXQoV2ViS2l0V2ViQXV0aENoYWxsZW5n
ZUNsYXNzKiBjaGFsbGVuZ2VDbGFzcykKK3sKKyAgICBnX3R5cGVfY2xhc3NfYWRkX3ByaXZhdGUo
Y2hhbGxlbmdlQ2xhc3MsIHNpemVvZihXZWJLaXRXZWJBdXRoQ2hhbGxlbmdlUHJpdmF0ZSkpOwor
CisgICAgR09iamVjdENsYXNzKiBvYmplY3RDbGFzcyA9IEdfT0JKRUNUX0NMQVNTKGNoYWxsZW5n
ZUNsYXNzKTsKKyAgICBvYmplY3RDbGFzcy0+ZmluYWxpemUgPSB3ZWJraXRfd2ViX2F1dGhfY2hh
bGxlbmdlX2ZpbmFsaXplOworICAgIG9iamVjdENsYXNzLT5nZXRfcHJvcGVydHkgPSB3ZWJraXRf
d2ViX2F1dGhfY2hhbGxlbmdlX2dldF9wcm9wZXJ0eTsKKyAgICBvYmplY3RDbGFzcy0+c2V0X3By
b3BlcnR5ID0gd2Via2l0X3dlYl9hdXRoX2NoYWxsZW5nZV9zZXRfcHJvcGVydHk7Cit9CisKK3N0
YXRpYyB2b2lkIHdlYmtpdF93ZWJfYXV0aF9jaGFsbGVuZ2VfaW5pdChXZWJLaXRXZWJBdXRoQ2hh
bGxlbmdlKiBjaGFsbGVuZ2UpCit7CisgICAgV2ViS2l0V2ViQXV0aENoYWxsZW5nZVByaXZhdGUq
IHByaXYgPSBXRUJLSVRfV0VCX0FVVEhfQ0hBTExFTkdFX0dFVF9QUklWQVRFKGNoYWxsZW5nZSk7
CisgICAgY2hhbGxlbmdlLT5wcml2ID0gcHJpdjsKKworICAgIHByaXYtPndlYkNoYWxsZW5nZSA9
IG5ldyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpOworICAgIHByaXYtPnVzZXIgPSBOVUxMOwor
ICAgIHByaXYtPnBhc3N3b3JkID0gTlVMTDsKKyAgICBwcml2LT5yZXNwb25zZV9maXJlZCA9IEZB
TFNFOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfYXV0aF9jaGFsbGVuZ2VfbmV3OgorICoKKyAq
IFRoaXMgZnVuY3Rpb24gcmV0dXJucyBhIG5ldyBXZWJLaXRXZWJBdXRoQ2hhbGxlbmdlIG9iamVj
dC4KKyAqIFRoZSBwdXJwb3NlIG9mIHRoaXMgY2xhc3MgaXMgdG8gcmVzcG9uc2UgdG8gYXV0aGVu
dGljYXRpb24gcmVxdWVzdGVkIHRvIGFjY2VzcyBwcm90ZWN0ZWQgd2ViIHJlc291cmNlcy4KKyAq
CisgKiBVc3VhbGx5IHRoZSBhcHBsaWNhdGlvbiBkb2Vzbid0IG5lZWQgdG8gY3JlYXRlIHRoaXMg
b2JqZWN0LgorICoKKyAqIFJldHVybiB2YWx1ZTogdGhlICNXZWJLaXRXZWJBdXRoQ2hhbGxlbmdl
CisgKiovCitXZWJLaXRXZWJBdXRoQ2hhbGxlbmdlKiB3ZWJraXRfd2ViX2F1dGhfY2hhbGxlbmdl
X25ldygpCit7CisgICAgV2ViS2l0V2ViQXV0aENoYWxsZW5nZSogY2hhbGxlbmdlID0gV0VCS0lU
X1dFQl9BVVRIX0NIQUxMRU5HRShnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX0FVVEhfQ0hB
TExFTkdFLCBOVUxMKSk7CisKKyAgICByZXR1cm4gY2hhbGxlbmdlOworfQorCisvKioKKyAqIHdl
YmtpdF93ZWJfYXV0aF9jaGFsbGVuZ2Vfc2V0X3VzZXI6CisgKiBAY2hhbGxlbmdlOiBhICNXZWJL
aXRXZWJBdXRoQ2hhbGxlbmdlCisgKiBAdXNlcjogYSBzdHJpbmcgd2l0aCB0aGUgdXNlcm5hbWUK
KyAqCisgKiBTZXQgdGhlIHVzZXJuYW1lIGZvciB0aGUgYXV0aGVudGljYXRpb24gQGNoYWxsZW5n
ZS4KKyAqLwordm9pZCB3ZWJraXRfd2ViX2F1dGhfY2hhbGxlbmdlX3NldF91c2VyKFdlYktpdFdl
YkF1dGhDaGFsbGVuZ2UqIGNoYWxsZW5nZSwgY29uc3QgZ2NoYXIqIHVzZXIpCit7CisgICAgZ19y
ZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX0FVVEhfQ0hBTExFTkdFKGNoYWxsZW5nZSkpOwor
ICAgIGdfcmV0dXJuX2lmX2ZhaWwodXNlcik7CisKKyAgICBXZWJLaXRXZWJBdXRoQ2hhbGxlbmdl
UHJpdmF0ZSogcHJpdiA9IGNoYWxsZW5nZS0+cHJpdjsKKworICAgIGdfZnJlZShwcml2LT51c2Vy
KTsKKyAgICBwcml2LT51c2VyID0gZ19zdHJkdXAodXNlcik7Cit9CisKKy8qKgorICogd2Via2l0
X3dlYl9hdXRoX2NoYWxsZW5nZV9nZXRfdXNlcgorICogQGNoYWxsZW5nZTogYSAjV2ViS2l0V2Vi
QXV0aENoYWxsZW5nZQorICoKKyAqIFJldHVybnMgdGhlIGN1cnJlbnQgdXNlcm5hbWUgdXNlZCBi
eSB0aGUgYXV0aGVudGljYXRpb24gQGNoYWxsZW5nZS4KKyAqCisgKiBSZXR1cm4gdmFsdWU6IHRo
ZSB1c2VybmFtZQorICovCitjb25zdCBnY2hhciogd2Via2l0X3dlYl9hdXRoX2NoYWxsZW5nZV9n
ZXRfdXNlcihXZWJLaXRXZWJBdXRoQ2hhbGxlbmdlKiBjaGFsbGVuZ2UpCit7CisgICAgZ19yZXR1
cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9BVVRIX0NIQUxMRU5HRShjaGFsbGVuZ2UpLCBO
VUxMKTsKKworICAgIFdlYktpdFdlYkF1dGhDaGFsbGVuZ2VQcml2YXRlKiBwcml2ID0gY2hhbGxl
bmdlLT5wcml2OworCisgICAgcmV0dXJuIHByaXYtPnVzZXI7Cit9CisKKy8qKgorICogd2Via2l0
X3dlYl9hdXRoX2NoYWxsZW5nZV9zZXRfcGFzc3dvcmQ6CisgKiBAY2hhbGxlbmdlOiBhICNXZWJL
aXRXZWJBdXRoQ2hhbGxlbmdlCisgKiBAcGFzc3dvcmQ6IGEgc3RyaW5nIHdpdGggdGhlIHBhc3N3
b3JkCisgKgorICogU2V0IHRoZSBwYXNzd29yZCBmb3IgdGhlIGF1dGhlbnRpY2F0aW9uIEBjaGFs
bGVuZ2UuCisgKi8KK3ZvaWQgd2Via2l0X3dlYl9hdXRoX2NoYWxsZW5nZV9zZXRfcGFzc3dvcmQo
V2ViS2l0V2ViQXV0aENoYWxsZW5nZSogY2hhbGxlbmdlLCBjb25zdCBnY2hhciogcGFzc3dvcmQp
Cit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX0FVVEhfQ0hBTExFTkdFKGNo
YWxsZW5nZSkpOworICAgIGdfcmV0dXJuX2lmX2ZhaWwocGFzc3dvcmQpOworCisgICAgV2ViS2l0
V2ViQXV0aENoYWxsZW5nZVByaXZhdGUqIHByaXYgPSBjaGFsbGVuZ2UtPnByaXY7CisKKyAgICBn
X2ZyZWUocHJpdi0+cGFzc3dvcmQpOworICAgIHByaXYtPnBhc3N3b3JkID0gZ19zdHJkdXAocGFz
c3dvcmQpOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfYXV0aF9jaGFsbGVuZ2VfZ2V0X3Bhc3N3
b3JkCisgKiBAY2hhbGxlbmdlOiBhICNXZWJLaXRXZWJBdXRoQ2hhbGxlbmdlCisgKgorICogUmV0
dXJucyB0aGUgY3VycmVudCBwYXNzd29yZCB1c2VkIGJ5IHRoZSBhdXRoZW50aWNhdGlvbiBAY2hh
bGxlbmdlLgorICoKKyAqIFJldHVybiB2YWx1ZTogdGhlIHBhc3N3b3JkCisgKi8KK2NvbnN0IGdj
aGFyKiB3ZWJraXRfd2ViX2F1dGhfY2hhbGxlbmdlX2dldF9wYXNzd29yZChXZWJLaXRXZWJBdXRo
Q2hhbGxlbmdlKiBjaGFsbGVuZ2UpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lU
X0lTX1dFQl9BVVRIX0NIQUxMRU5HRShjaGFsbGVuZ2UpLCBOVUxMKTsKKworICAgIFdlYktpdFdl
YkF1dGhDaGFsbGVuZ2VQcml2YXRlKiBwcml2ID0gY2hhbGxlbmdlLT5wcml2OworCisgICAgcmV0
dXJuIHByaXYtPnBhc3N3b3JkOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfYXV0aF9jaGFsbGVu
Z2VfdXNlX2NyZWRlbnRpYWwKKyAqIEBjaGFsbGVuZ2U6IGEgI1dlYktpdFdlYkF1dGhDaGFsbGVu
Z2UKKyAqCisgKiBSZXNwb25zZSB0aGUgY3JlZGVudGlhbCBvZiBAY2hhbGxlbmdlIHRvIGJlIHVz
ZWQgZm9yIHRoZSByZXF1ZXN0ZWQgYXV0aGVudGljYXRpb24uCisgKgorICogQWZ0ZXIgdGhpcyBy
ZXNwb25zZSwgdGhlIEBjaGFsbGVuZ2UgY2FuJ3QgYmUgdXNlZCBmb3IgYW55IGZ1cnRoZXIgcmVz
cG9uc2VzIG9uIHRoZQorICogc2FtZSBhdXRoZW50aWNhdGlvbiByZXF1ZXN0LgorICovCit2b2lk
IHdlYmtpdF93ZWJfYXV0aF9jaGFsbGVuZ2VfdXNlX2NyZWRlbnRpYWwoV2ViS2l0V2ViQXV0aENo
YWxsZW5nZSogY2hhbGxlbmdlKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dF
Ql9BVVRIX0NIQUxMRU5HRShjaGFsbGVuZ2UpKTsKKworICAgIFdlYktpdFdlYkF1dGhDaGFsbGVu
Z2VQcml2YXRlKiBwcml2ID0gY2hhbGxlbmdlLT5wcml2OworICAgIGdfcmV0dXJuX2lmX2ZhaWwo
IXByaXYtPnJlc3BvbnNlX2ZpcmVkKTsKKworICAgIENyZWRlbnRpYWwgY3JlZGVudGlhbCA9IENy
ZWRlbnRpYWwoU3RyaW5nOjpmcm9tVVRGOChwcml2LT51c2VyKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFN0cmluZzo6ZnJvbVVURjgocHJpdi0+cGFzc3dvcmQpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ3JlZGVudGlhbFBlcnNpc3Rl
bmNlRm9yU2Vzc2lvbik7CisgICAgcHJpdi0+d2ViQ2hhbGxlbmdlLT5zb3VyY2VIYW5kbGUoKS0+
cmVjZWl2ZWRDcmVkZW50aWFsKCpwcml2LT53ZWJDaGFsbGVuZ2UsIGNyZWRlbnRpYWwpOworICAg
IHByaXYtPnJlc3BvbnNlX2ZpcmVkID0gVFJVRTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX2F1
dGhfY2hhbGxlbmdlX2NvbnRpbnVlX3dpdGhvdXRfY3JlZGVudGlhbAorICogQGNoYWxsZW5nZTog
YSAjV2ViS2l0V2ViQXV0aENoYWxsZW5nZQorICoKKyAqIFJlc3BvbnNlIHRvIGNvbnRpbnVlIGxv
YWRpbmcgdGhlIHJlcXVlc3RlZCByZXNvdXJjZSB3aXRob3V0IGFueSBjcmVkZW50aWFsLgorICoK
KyAqIEFmdGVyIHRoaXMgcmVzcG9uc2UsIHRoZSBAY2hhbGxlbmdlIGNhbid0IGJlIHVzZWQgZm9y
IGFueSBmdXJ0aGVyIHJlc3BvbnNlcyBvbiB0aGUKKyAqIHNhbWUgYXV0aGVudGljYXRpb24gcmVx
dWVzdC4KKyAqLwordm9pZCB3ZWJraXRfd2ViX2F1dGhfY2hhbGxlbmdlX2NvbnRpbnVlX3dpdGhv
dXRfY3JlZGVudGlhbChXZWJLaXRXZWJBdXRoQ2hhbGxlbmdlKiBjaGFsbGVuZ2UpCit7CisgICAg
Z19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX0FVVEhfQ0hBTExFTkdFKGNoYWxsZW5nZSkp
OworCisgICAgV2ViS2l0V2ViQXV0aENoYWxsZW5nZVByaXZhdGUqIHByaXYgPSBjaGFsbGVuZ2Ut
PnByaXY7CisgICAgZ19yZXR1cm5faWZfZmFpbCghcHJpdi0+cmVzcG9uc2VfZmlyZWQpOworCisg
ICAgcHJpdi0+d2ViQ2hhbGxlbmdlLT5zb3VyY2VIYW5kbGUoKS0+cmVjZWl2ZWRSZXF1ZXN0VG9D
b250aW51ZVdpdGhvdXRDcmVkZW50aWFsKCpwcml2LT53ZWJDaGFsbGVuZ2UpOworICAgIHByaXYt
PnJlc3BvbnNlX2ZpcmVkID0gVFJVRTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX2F1dGhfY2hh
bGxlbmdlX2NhbmNlbAorICogQGNoYWxsZW5nZTogYSAjV2ViS2l0V2ViQXV0aENoYWxsZW5nZQor
ICoKKyAqIFJlc3BvbnNlIHRvIGNhbmNlbCB0aGUgY3VycmVudCBhdXRoZW50aWNhdGlvbiBAY2hh
bGxlbmdlIGZvciB0aGUgcmVxdWVzdGVkIHJlc291cmNlLgorICoKKyAqIEFmdGVyIHRoaXMgcmVz
cG9uc2UsIHRoZSBAY2hhbGxlbmdlIGNhbid0IGJlIHVzZWQgZm9yIGFueSBmdXJ0aGVyIHJlc3Bv
bnNlcyBvbiB0aGUKKyAqIHNhbWUgYXV0aGVudGljYXRpb24gcmVxdWVzdC4KKyAqLwordm9pZCB3
ZWJraXRfd2ViX2F1dGhfY2hhbGxlbmdlX2NhbmNlbChXZWJLaXRXZWJBdXRoQ2hhbGxlbmdlKiBj
aGFsbGVuZ2UpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX0FVVEhfQ0hB
TExFTkdFKGNoYWxsZW5nZSkpOworCisgICAgV2ViS2l0V2ViQXV0aENoYWxsZW5nZVByaXZhdGUq
IHByaXYgPSBjaGFsbGVuZ2UtPnByaXY7CisgICAgZ19yZXR1cm5faWZfZmFpbCghcHJpdi0+cmVz
cG9uc2VfZmlyZWQpOworCisgICAgcHJpdi0+d2ViQ2hhbGxlbmdlLT5zb3VyY2VIYW5kbGUoKS0+
cmVjZWl2ZWRDYW5jZWxsYXRpb24oKnByaXYtPndlYkNoYWxsZW5nZSk7CisgICAgcHJpdi0+cmVz
cG9uc2VfZmlyZWQgPSBUUlVFOworfQorCit9CmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXR3ZWJhdXRoY2hhbGxlbmdlLmggYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJh
dXRoY2hhbGxlbmdlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTA3NWYz
YwotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmF1dGhjaGFs
bGVuZ2UuaApAQCAtMCwwICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEx1Y2Eg
QnJ1bm8KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25n
IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdy
aXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisg
Ki8KKworI2lmbmRlZiBXRUJLSVRfV0VCX0FVVEhfQ0hBTExFTkdFX0gKKyNkZWZpbmUgV0VCS0lU
X1dFQl9BVVRIX0NIQUxMRU5HRV9ICisKKyNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgorCisjaW5j
bHVkZSAid2Via2l0ZGVmaW5lcy5oIgorCitHX0JFR0lOX0RFQ0xTCisKKyNkZWZpbmUgV0VCS0lU
X1RZUEVfV0VCX0FVVEhfQ0hBTExFTkdFICAgICAgICAgICAgKHdlYmtpdF93ZWJfYXV0aF9jaGFs
bGVuZ2VfZ2V0X3R5cGUoKSkKKyNkZWZpbmUgV0VCS0lUX1dFQl9BVVRIX0NIQUxMRU5HRShvYmop
ICAgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgob2JqKSwgV0VCS0lUX1RZ
UEVfV0VCX0FVVEhfQ0hBTExFTkdFLCBXZWJLaXRXZWJBdXRoQ2hhbGxlbmdlKSkKKyNkZWZpbmUg
V0VCS0lUX1dFQl9BVVRIX0NIQUxMRU5HRV9DTEFTUyhrbGFzcykgICAgIChHX1RZUEVfQ0hFQ0tf
Q0xBU1NfQ0FTVCgoa2xhc3MpLCAgV0VCS0lUX1RZUEVfV0VCX0FVVEhfQ0hBTExFTkdFLCBXZWJL
aXRXZWJBdXRoQ2hhbGxlbmdlQ2xhc3MpKQorI2RlZmluZSBXRUJLSVRfSVNfV0VCX0FVVEhfQ0hB
TExFTkdFKG9iaikgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9iaiksIFdF
QktJVF9UWVBFX1dFQl9BVVRIX0NIQUxMRU5HRSkpCisjZGVmaW5lIFdFQktJVF9JU19XRUJfQVVU
SF9DSEFMTEVOR0VfQ0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3Mp
LCAgV0VCS0lUX1RZUEVfV0VCX0FVVEhfQ0hBTExFTkdFKSkKKyNkZWZpbmUgV0VCS0lUX1dFQl9B
VVRIX0NIQUxMRU5HRV9HRVRfQ0xBU1Mob2JqKSAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1Mo
KG9iaiksICBXRUJLSVRfVFlQRV9XRUJfQVVUSF9DSEFMTEVOR0UsIFdlYktpdFdlYkF1dGhDaGFs
bGVuZ2VDbGFzcykpCisKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJBdXRoQ2hhbGxlbmdlUHJp
dmF0ZSBXZWJLaXRXZWJBdXRoQ2hhbGxlbmdlUHJpdmF0ZTsKKworc3RydWN0IF9XZWJLaXRXZWJB
dXRoQ2hhbGxlbmdlIHsKKyAgICBHT2JqZWN0IHBhcmVudDsKKworICAgIFdlYktpdFdlYkF1dGhD
aGFsbGVuZ2VQcml2YXRlKiBwcml2OworfTsKKworc3RydWN0IF9XZWJLaXRXZWJBdXRoQ2hhbGxl
bmdlQ2xhc3MgeworICAgIEdPYmplY3RDbGFzcyBwYXJlbnQ7Cit9OworCitXRUJLSVRfQVBJIEdU
eXBlCit3ZWJraXRfd2ViX2F1dGhfY2hhbGxlbmdlX2dldF90eXBlICh2b2lkKTsKKworV0VCS0lU
X0FQSSBXZWJLaXRXZWJBdXRoQ2hhbGxlbmdlKgord2Via2l0X3dlYl9hdXRoX2NoYWxsZW5nZV9u
ZXcgKCk7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3dlYl9hdXRoX2NoYWxsZW5nZV9zZXRf
dXNlciAoV2ViS2l0V2ViQXV0aENoYWxsZW5nZSogY2hhbGxlbmdlLCBjb25zdCBnY2hhciogdXNl
cik7CisKK1dFQktJVF9BUEkgY29uc3QgZ2NoYXIqCit3ZWJraXRfd2ViX2F1dGhfY2hhbGxlbmdl
X2dldF91c2VyIChXZWJLaXRXZWJBdXRoQ2hhbGxlbmdlKiBjaGFsbGVuZ2UpOworCitXRUJLSVRf
QVBJIHZvaWQKK3dlYmtpdF93ZWJfYXV0aF9jaGFsbGVuZ2Vfc2V0X3Bhc3N3b3JkIChXZWJLaXRX
ZWJBdXRoQ2hhbGxlbmdlKiBjaGFsbGVuZ2UsIGNvbnN0IGdjaGFyKiBwYXNzd29yZCk7CisKK1dF
QktJVF9BUEkgY29uc3QgZ2NoYXIqCit3ZWJraXRfd2ViX2F1dGhfY2hhbGxlbmdlX2dldF9wYXNz
d29yZCAoV2ViS2l0V2ViQXV0aENoYWxsZW5nZSogY2hhbGxlbmdlKTsKKworV0VCS0lUX0FQSSB2
b2lkCit3ZWJraXRfd2ViX2F1dGhfY2hhbGxlbmdlX3VzZV9jcmVkZW50aWFsIChXZWJLaXRXZWJB
dXRoQ2hhbGxlbmdlKiBjaGFsbGVuZ2UpOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF93ZWJf
YXV0aF9jaGFsbGVuZ2VfY29udGludWVfd2l0aG91dF9jcmVkZW50aWFsIChXZWJLaXRXZWJBdXRo
Q2hhbGxlbmdlKiBjaGFsbGVuZ2UpOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF93ZWJfYXV0
aF9jaGFsbGVuZ2VfY2FuY2VsIChXZWJLaXRXZWJBdXRoQ2hhbGxlbmdlKiBjaGFsbGVuZ2UpOwor
CitHX0VORF9ERUNMUworCisjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvd2Via2l0L3dl
YmtpdHdlYnZpZXcuY3BwIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKaW5k
ZXggMGY3MGZhMi4uYTBmZDE5ZiAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0
d2Vidmlldy5jcHAKKysrIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKQEAg
LTg1LDYgKzg1LDcgQEAgZW51bSB7CiAgICAgQ09QWV9DTElQQk9BUkQsCiAgICAgUEFTVEVfQ0xJ
UEJPQVJELAogICAgIENVVF9DTElQQk9BUkQsCisgICAgQVVUSEVOVElDQVRJT05fUkVRVUVTVEVE
LAogICAgIExBU1RfU0lHTkFMCiB9OwogCkBAIC0zOTUsNyArMzk2LDcgQEAgc3RhdGljIGdib29s
ZWFuIHdlYmtpdF93ZWJfdmlld19mb2N1c19pbl9ldmVudChHdGtXaWRnZXQqIHdpZGdldCwgR2Rr
RXZlbnRGb2N1cyoKICAgICBHdGtXaWRnZXQqIHRvcGxldmVsID0gZ3RrX3dpZGdldF9nZXRfdG9w
bGV2ZWwod2lkZ2V0KTsKICAgICBpZiAoR1RLX1dJREdFVF9UT1BMRVZFTCh0b3BsZXZlbCkgJiYg
Z3RrX3dpbmRvd19oYXNfdG9wbGV2ZWxfZm9jdXMoR1RLX1dJTkRPVyh0b3BsZXZlbCkpKSB7CiAg
ICAgICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcod2lkZ2V0KTsK
LQorICAgICAgICAKICAgICAgICAgRnJhbWUqIGZyYW1lID0gY29yZSh3ZWJWaWV3KS0+bWFpbkZy
YW1lKCk7CiAgICAgICAgIGNvcmUod2ViVmlldyktPmZvY3VzQ29udHJvbGxlcigpLT5zZXRBY3Rp
dmUoZnJhbWUpOwogICAgIH0KQEAgLTYyMSw2ICs2MjIsODIgQEAgc3RhdGljIHZvaWQgd2Via2l0
X3dlYl92aWV3X3JlYWxfcGFzdGVfY2xpcGJvYXJkKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiAg
ICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJQYXN0ZSIpLmV4ZWN1dGUoKTsKIH0KIAordHlw
ZWRlZiBzdHJ1Y3QKK3sKKyAgICBHdGtXaWRnZXQqIHVzZXJfZW50cnk7CisgICAgR3RrV2lkZ2V0
KiBwYXNzd29yZF9lbnRyeTsKKyAgICBXZWJLaXRXZWJBdXRoQ2hhbGxlbmdlKiBjaGFsbGVuZ2U7
Cit9IEF1dGhEaWFsb2dEYXRhOworCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfd2ViX2F1
dGhfZGlhbG9nX3Jlc3BvbnNlX2NiKEd0a1dpZGdldCogZGlhbG9nLCBnaW50IHJlc3BvbnNlLCBn
cG9pbnRlciB1c2VyX2RhdGEpCit7CisgICAgQXV0aERpYWxvZ0RhdGEqIGRhdGEgPSByZWludGVy
cHJldF9jYXN0PEF1dGhEaWFsb2dEYXRhKj4odXNlcl9kYXRhKTsKKworICAgIHN3aXRjaCAocmVz
cG9uc2UpIHsKKyAgICBjYXNlIEdUS19SRVNQT05TRV9OT05FOgorICAgIGNhc2UgR1RLX1JFU1BP
TlNFX0RFTEVURV9FVkVOVDoKKyAgICBjYXNlIEdUS19SRVNQT05TRV9SRUpFQ1Q6CisgICAgICAg
IHdlYmtpdF93ZWJfYXV0aF9jaGFsbGVuZ2VfY29udGludWVfd2l0aG91dF9jcmVkZW50aWFsKGRh
dGEtPmNoYWxsZW5nZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgR1RLX1JFU1BPTlNFX0FD
Q0VQVDoKKyAgICAgICAgd2Via2l0X3dlYl9hdXRoX2NoYWxsZW5nZV9zZXRfdXNlcihkYXRhLT5j
aGFsbGVuZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3Rr
X2VudHJ5X2dldF90ZXh0KEdUS19FTlRSWShkYXRhLT51c2VyX2VudHJ5KSkpOworICAgICAgICB3
ZWJraXRfd2ViX2F1dGhfY2hhbGxlbmdlX3NldF9wYXNzd29yZChkYXRhLT5jaGFsbGVuZ2UsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd0a19lbnRyeV9n
ZXRfdGV4dChHVEtfRU5UUlkoZGF0YS0+cGFzc3dvcmRfZW50cnkpKSk7CisgICAgICAgIHdlYmtp
dF93ZWJfYXV0aF9jaGFsbGVuZ2VfdXNlX2NyZWRlbnRpYWwoZGF0YS0+Y2hhbGxlbmdlKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgZ19hc3NlcnRfbm90X3JlYWNoZWQg
KCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGd0a193aWRnZXRfZGVzdHJveShkaWFs
b2cpOworICAgIGdfb2JqZWN0X3VucmVmKGRhdGEtPmNoYWxsZW5nZSk7Cit9CisKK3N0YXRpYyB2
b2lkIHdlYmtpdF93ZWJfdmlld19yZWFsX2F1dGhlbnRpY2F0aW9uX3JlcXVlc3RlZChXZWJLaXRX
ZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRXZWJGcmFtZSogd2ViRnJhbWUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0V2ViQXV0
aENoYWxsZW5nZSogY2hhbGxlbmdlKQoreworICAgIEd0a1dpZGdldCogd2luZG93OworICAgIEd0
a1dpZGdldCogZGlhbG9nOworICAgIEd0a1dpZGdldCogdGFibGU7CisgICAgR3RrV2lkZ2V0KiBs
YWJlbDsKKyAgICBBdXRoRGlhbG9nRGF0YSogZGF0YTsKKworICAgIHdpbmRvdyA9IGd0a193aWRn
ZXRfZ2V0X3RvcGxldmVsKEdUS19XSURHRVQod2ViVmlldykpOworICAgIGdjaGFyKiB0aXRsZSA9
IGdfc3RyY29uY2F0KCJBdXRoZW50aWNhdGlvbiAtICIsIHdlYmtpdF93ZWJfZnJhbWVfZ2V0X3Vy
aSh3ZWJGcmFtZSksIE5VTEwpOworICAgIGRpYWxvZyA9IGd0a19kaWFsb2dfbmV3X3dpdGhfYnV0
dG9ucyh0aXRsZSwgR1RLX1dJREdFVF9UT1BMRVZFTCh3aW5kb3cpID8gR1RLX1dJTkRPVyh3aW5k
b3cpIDogMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEd0a0Rp
YWxvZ0ZsYWdzKShHVEtfRElBTE9HX01PREFMIHwgR1RLX0RJQUxPR19ERVNUUk9ZX1dJVEhfUEFS
RU5UKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1RLX1NUT0NL
X09LLCBHVEtfUkVTUE9OU0VfQUNDRVBULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHVEtfU1RPQ0tfQ0FOQ0VMLCBHVEtfUkVTUE9OU0VfUkVKRUNULAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKyAgICBnX2ZyZWUodGl0
bGUpOworICAgIGd0a19kaWFsb2dfc2V0X2RlZmF1bHRfcmVzcG9uc2UoR1RLX0RJQUxPRyhkaWFs
b2cpLCBHVEtfUkVTUE9OU0VfUkVKRUNUKTsKKworICAgIGRhdGEgPSBnX25ldyhBdXRoRGlhbG9n
RGF0YSwgMSk7CisgICAgZGF0YS0+dXNlcl9lbnRyeSA9IGd0a19lbnRyeV9uZXcoKTsKKyAgICBk
YXRhLT5wYXNzd29yZF9lbnRyeSA9IGd0a19lbnRyeV9uZXcoKTsKKyAgICBndGtfZW50cnlfc2V0
X3Zpc2liaWxpdHkoR1RLX0VOVFJZKGRhdGEtPnBhc3N3b3JkX2VudHJ5KSwgRkFMU0UpOworICAg
IGRhdGEtPmNoYWxsZW5nZSA9IGNoYWxsZW5nZTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KGRpYWxv
ZywgInJlc3BvbnNlIiwgR19DQUxMQkFDSyh3ZWJraXRfd2ViX3ZpZXdfd2ViX2F1dGhfZGlhbG9n
X3Jlc3BvbnNlX2NiKSwgZGF0YSk7CisKKyAgICB0YWJsZSA9IGd0a190YWJsZV9uZXcoMiwgMiwg
RkFMU0UpOworICAgIGd0a190YWJsZV9zZXRfY29sX3NwYWNpbmdzKEdUS19UQUJMRSh0YWJsZSks
IDMpOworICAgIGd0a190YWJsZV9zZXRfcm93X3NwYWNpbmdzKEdUS19UQUJMRSh0YWJsZSksIDMp
OworCisgICAgbGFiZWwgPSBndGtfbGFiZWxfbmV3KCJVc2VybmFtZToiKTsKKyAgICBndGtfdGFi
bGVfYXR0YWNoX2RlZmF1bHRzKEdUS19UQUJMRSh0YWJsZSksIGxhYmVsLCAwLCAxLCAwLCAxKTsK
KyAgICBndGtfdGFibGVfYXR0YWNoX2RlZmF1bHRzKEdUS19UQUJMRSh0YWJsZSksIGRhdGEtPnVz
ZXJfZW50cnksIDEsIDIsIDAsIDEpOworCisgICAgbGFiZWwgPSBndGtfbGFiZWxfbmV3KCJQYXNz
d29yZDoiKTsKKyAgICBndGtfdGFibGVfYXR0YWNoX2RlZmF1bHRzKEdUS19UQUJMRSh0YWJsZSks
IGxhYmVsLCAwLCAxLCAxLCAyKTsKKyAgICBndGtfdGFibGVfYXR0YWNoX2RlZmF1bHRzKEdUS19U
QUJMRSh0YWJsZSksIGRhdGEtPnBhc3N3b3JkX2VudHJ5LCAxLCAyLCAxLCAyKTsKKworICAgIGd0
a19jb250YWluZXJfYWRkKEdUS19DT05UQUlORVIoR1RLX0RJQUxPRyhkaWFsb2cpLT52Ym94KSwg
dGFibGUpOworICAgIGd0a193aWRnZXRfc2hvd19hbGwodGFibGUpOworICAgIGd0a193aWRnZXRf
c2hvdyhkaWFsb2cpOworfQorCiBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfZmluYWxpemUo
R09iamVjdCogb2JqZWN0KQogewogICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSBXRUJLSVRf
V0VCX1ZJRVcob2JqZWN0KTsKQEAgLTk4Nyw2ICsxMDY0LDI1IEBAIHN0YXRpYyB2b2lkIHdlYmtp
dF93ZWJfdmlld19jbGFzc19pbml0KFdlYktpdFdlYlZpZXdDbGFzcyogd2ViVmlld0NsYXNzKQog
ICAgICAgICAgICAgZ19jY2xvc3VyZV9tYXJzaGFsX1ZPSURfX1ZPSUQsCiAgICAgICAgICAgICBH
X1RZUEVfTk9ORSwgMCk7CiAKKyAgICAvKioKKyAgICAgKiBXZWJLaXRXZWJWaWV3OjphdXRoZW50
aWNhdGlvbi1yZXF1ZXN0ZWQ6CisgICAgICogQHdlYl92aWV3OiB0aGUgb2JqZWN0IHdoaWNoIHJl
Y2VpdmVkIHRoZSBzaWduYWwKKyAgICAgKgorICAgICAqIFRoZSA6OmF1dGhlbnRpY2F0aW9uLXJl
cXVlc3RlZCBzaWduYWwgaXMgZW1pdHRlZCB3aGVuIGFuIGF1dGhlbnRpY2F0aW9uIGlzCisgICAg
ICogcmVxdWVzdGVkIGZyb20gdGhlIHNlcnZlciB0byBhY2Nlc3MgYSByZXNvdXJjZS4KKyAgICAg
KgorICAgICAqIFRoZSBkZWZhdWx0IGJlaGF2aW9yIGZvciB0aGlzIHNpZ25hbCBpcyBjcmVhdGlu
ZyBhbiBpbnB1dCBkaWFsb2cgdG8gZ2V0IGEgc3VpdGFibGUgY3JlZGVudGlhbC4KKyAgICAgKi8K
KyAgICB3ZWJraXRfd2ViX3ZpZXdfc2lnbmFsc1tBVVRIRU5USUNBVElPTl9SRVFVRVNURURdID0g
Z19zaWduYWxfbmV3KCJhdXRoZW50aWNhdGlvbi1yZXF1ZXN0ZWQiLAorICAgICAgICAgICAgR19U
WVBFX0ZST01fQ0xBU1Mod2ViVmlld0NsYXNzKSwKKyAgICAgICAgICAgIChHU2lnbmFsRmxhZ3Mp
KEdfU0lHTkFMX1JVTl9MQVNUIHwgR19TSUdOQUxfQUNUSU9OKSwKKyAgICAgICAgICAgIEdfU1RS
VUNUX09GRlNFVChXZWJLaXRXZWJWaWV3Q2xhc3MsIGF1dGhlbnRpY2F0aW9uX3JlcXVlc3RlZCks
CisgICAgICAgICAgICBOVUxMLCBOVUxMLAorICAgICAgICAgICAgd2Via2l0X21hcnNoYWxfVk9J
RF9fT0JKRUNUX09CSkVDVCwKKyAgICAgICAgICAgIEdfVFlQRV9OT05FLCAyLAorICAgICAgICAg
ICAgV0VCS0lUX1RZUEVfV0VCX0ZSQU1FLAorICAgICAgICAgICAgV0VCS0lUX1RZUEVfV0VCX0FV
VEhfQ0hBTExFTkdFKTsKKwogICAgIC8qCiAgICAgICogaW1wbGVtZW50YXRpb25zIG9mIHZpcnR1
YWwgbWV0aG9kcwogICAgICAqLwpAQCAtMTAwMiw2ICsxMDk4LDcgQEAgc3RhdGljIHZvaWQgd2Vi
a2l0X3dlYl92aWV3X2NsYXNzX2luaXQoV2ViS2l0V2ViVmlld0NsYXNzKiB3ZWJWaWV3Q2xhc3Mp
CiAgICAgd2ViVmlld0NsYXNzLT5jdXRfY2xpcGJvYXJkID0gd2Via2l0X3dlYl92aWV3X3JlYWxf
Y3V0X2NsaXBib2FyZDsKICAgICB3ZWJWaWV3Q2xhc3MtPmNvcHlfY2xpcGJvYXJkID0gd2Via2l0
X3dlYl92aWV3X3JlYWxfY29weV9jbGlwYm9hcmQ7CiAgICAgd2ViVmlld0NsYXNzLT5wYXN0ZV9j
bGlwYm9hcmQgPSB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9wYXN0ZV9jbGlwYm9hcmQ7CisgICAgd2Vi
Vmlld0NsYXNzLT5hdXRoZW50aWNhdGlvbl9yZXF1ZXN0ZWQgPSB3ZWJraXRfd2ViX3ZpZXdfcmVh
bF9hdXRoZW50aWNhdGlvbl9yZXF1ZXN0ZWQ7CiAKICAgICBHT2JqZWN0Q2xhc3MqIG9iamVjdENs
YXNzID0gR19PQkpFQ1RfQ0xBU1Mod2ViVmlld0NsYXNzKTsKICAgICBvYmplY3RDbGFzcy0+Zmlu
YWxpemUgPSB3ZWJraXRfd2ViX3ZpZXdfZmluYWxpemU7CmRpZmYgLS1naXQgYS9XZWJLaXQvZ3Rr
L3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmggYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3
LmgKaW5kZXggMGM1YTY3NS4uOWEwZmI5OCAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay93ZWJraXQv
d2Via2l0d2Vidmlldy5oCisrKyBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuaApA
QCAtODQsNiArODQsNyBAQCBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdDbGFzcyB7CiAgICAgdm9pZCAo
KmN1dF9jbGlwYm9hcmQpIChXZWJLaXRXZWJWaWV3KiB3ZWJfdmlldyk7CiAgICAgdm9pZCAoKmNv
cHlfY2xpcGJvYXJkKSAoV2ViS2l0V2ViVmlldyogd2ViX3ZpZXcpOwogICAgIHZvaWQgKCpwYXN0
ZV9jbGlwYm9hcmQpIChXZWJLaXRXZWJWaWV3KiB3ZWJfdmlldyk7CisgICAgdm9pZCAoKmF1dGhl
bnRpY2F0aW9uX3JlcXVlc3RlZCkgKFdlYktpdFdlYlZpZXcqIHdlYl92aWV3LCBXZWJLaXRXZWJG
cmFtZSogd2ViX2ZyYW1lLCBXZWJLaXRXZWJBdXRoQ2hhbGxlbmdlKiB3ZWJfYXV0aF9jaGFsbGVu
Z2UpOwogCiAgICAgLyoKICAgICAgKiBpbnRlcm5hbAotLSAKMS41LjQuMwoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>19737</attachid>
            <date>2008-03-13 11:30:05 -0700</date>
            <delta_ts>2009-02-12 14:35:19 -0800</delta_ts>
            <desc>Soup: HTTP authentication</desc>
            <filename>0002-Soup-HTTP-authentication.patch</filename>
            <type>text/plain</type>
            <size>9102</size>
            <attacher name="Tommi Komulainen">tkomulai+webkit</attacher>
            
              <data encoding="base64">RnJvbSBjYTIxNzI4YzM0MzlkMmQ2NTg1ODcwZDAxZGQyMGQ0ZGE3MDlhY2E5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBUb21taSBLb211bGFpbmVuIDx0b21taS5rb211bGFpbmVuQGlr
aS5maT4KRGF0ZTogVGh1LCAxMyBNYXIgMjAwOCAwMDoyMzowNSArMDEwMApTdWJqZWN0OiBbUEFU
Q0hdIFNvdXA6IEhUVFAgYXV0aGVudGljYXRpb24KCi0tLQogV2ViQ29yZS9HTlVtYWtlZmlsZS5h
bSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAxICsKIFdlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9SZXNvdXJjZUhhbmRsZS5oICAgICAgICAgIHwgICAgMiArLQogV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaCAgfCAgICA3ICsrCiAuLi4vbmV0
d29yay9zb3VwL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmggICAgICAgICB8ICAgMTggKysrKwog
Li4uL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwICAgfCAgIDk5
ICsrKysrKysrKysrKysrKysrKysrCiA1IGZpbGVzIGNoYW5nZWQsIDEyNiBpbnNlcnRpb25zKCsp
LCAxIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9X
ZWJDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IDRjNDE0NjguLjEyYzI3NWIgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAt
MTA0NSw2ICsxMDQ1LDcgQEAgd2ViY29yZV9jcHBmbGFncyArPSBcCiAJLUkkKHNyY2RpcikvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAKIAogd2ViY29yZV9zb3VyY2VzICs9IFwKKwlXZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNvdXAuY3Bw
IFwKIAlXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3Bw
CiBlbmRpZgogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VI
YW5kbGUuaCBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCmluZGV4
IDYwMTJkMGEuLjlhYTI1M2IgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZUhhbmRsZS5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhh
bmRsZS5oCkBAIC05OCw3ICs5OCw3IEBAIHB1YmxpYzoKICAgICAKICAgICB+UmVzb3VyY2VIYW5k
bGUoKTsKIAotI2lmIFBMQVRGT1JNKE1BQykgfHwgVVNFKENGTkVUV09SSykgfHwgVVNFKENVUkwp
CisjaWYgUExBVEZPUk0oTUFDKSB8fCBVU0UoQ0ZORVRXT1JLKSB8fCBVU0UoQ1VSTCkgfHwgVVNF
KFNPVVApCiAgICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3Qg
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKTsKICAgICB2b2lkIHJlY2VpdmVkQ3JlZGVudGlhbChj
b25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIGNvbnN0IENyZWRlbnRpYWwmKTsKICAgICB2
b2lkIHJlY2VpdmVkUmVxdWVzdFRvQ29udGludWVXaXRob3V0Q3JlZGVudGlhbChjb25zdCBBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSYpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaCBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZUhhbmRsZUludGVybmFsLmgKaW5kZXggYzliOWMwMS4uZDNmMTZiOCAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaAorKysg
Yi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oCkBAIC0x
MTAsNiArMTEwLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2VuZGlmCiAjaWYgVVNFKFNPVVAp
CiAgICAgICAgICAgICAsIG1fbXNnKDApCisgICAgICAgICAgICAsIG1fc291cEF1dGgoKQorICAg
ICAgICAgICAgLCBtX3dlYkNoYWxsZW5nZSgpCisgICAgICAgICAgICAsIG1fY29udGludWVXaXRo
b3V0Q3JlZGVudGlhbChmYWxzZSkKICNlbmRpZgogI2lmIFBMQVRGT1JNKFFUKQogICAgICAgICAg
ICAgLCBtX2pvYigwKQpAQCAtMTc4LDYgKzE4MSwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIFNvdXBNZXNzYWdlKiBtX21zZzsKICAgICAgICAgU291cFNlc3Npb24qIHNlc3Npb247
CiAgICAgICAgIFJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKKworICAgICAgICBTb3VwQXV0
aCogbV9zb3VwQXV0aDsKKyAgICAgICAgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgbV93ZWJDaGFs
bGVuZ2U7CisgICAgICAgIGJvb2wgbV9jb250aW51ZVdpdGhvdXRDcmVkZW50aWFsOwogI2VuZGlm
CiAjaWYgUExBVEZPUk0oUVQpCiAjaWYgUVRfVkVSU0lPTiA8IDB4MDQwNDAwCmRpZmYgLS1naXQg
YS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5o
IGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uu
aAppbmRleCA1MTc3ZjFlLi45MjFmZmI3IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oCisrKyBiL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9zb3VwL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgKQEAgLTI2LDkgKzI2LDEz
IEBACiAjZGVmaW5lIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlX2gKIAogI2luY2x1ZGUgIkF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlQmFzZS5oIgorI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCisj
aW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFJl
c291cmNlSGFuZGxlOworCiBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSA6IHB1YmxpYyBB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2UgewogcHVibGljOgogICAgIEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlKCkKQEAgLTM5LDYgKzQzLDIwIEBAIHB1YmxpYzoKICAgICAgICAgOiBBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZUJhc2UocHJvdGVjdGlvblNwYWNlLCBwcm9wb3NlZENyZWRlbnRpYWws
IHByZXZpb3VzRmFpbHVyZUNvdW50LCByZXNwb25zZSwgZXJyb3IpCiAgICAgewogICAgIH0KKwor
ICAgIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgcHJvdGVj
dGlvblNwYWNlLCBjb25zdCBDcmVkZW50aWFsJiBwcm9wb3NlZENyZWRlbnRpYWwsIHVuc2lnbmVk
IHByZXZpb3VzRmFpbHVyZUNvdW50LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwg
Y29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlSGFuZGxlKiBzb3VyY2VIYW5kbGUp
CisgICAgICAgIDogQXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlKHByb3RlY3Rpb25TcGFjZSwg
cHJvcG9zZWRDcmVkZW50aWFsLCBwcmV2aW91c0ZhaWx1cmVDb3VudCwgcmVzcG9uc2UsIGVycm9y
KQorICAgICAgICAsIG1fc291cmNlSGFuZGxlKHNvdXJjZUhhbmRsZSkKKyAgICB7CisgICAgfQor
CisgICAgUmVzb3VyY2VIYW5kbGUqIHNvdXJjZUhhbmRsZSgpIGNvbnN0IHsgcmV0dXJuIG1fc291
cmNlSGFuZGxlLmdldCgpOyB9CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlQmFzZTsKKyAgICBzdGF0aWMgYm9vbCBwbGF0Zm9ybUNvbXBhcmUoY29u
c3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGEsIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlJiBiKTsKKworICAgIFJlZlB0cjxSZXNvdXJjZUhhbmRsZT4gbV9zb3VyY2VIYW5kbGU7CiB9
OwogCiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJj
ZUhhbmRsZVNvdXAuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VI
YW5kbGVTb3VwLmNwcAppbmRleCAyNzc2YWRiLi41ZTYyMDVkIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwCisrKyBiL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAKQEAgLTQzLDEx
ICs0MywyOSBAQCBzdGF0aWMgU291cFNlc3Npb24qIHNlc3Npb24gPSAwOwogUmVzb3VyY2VIYW5k
bGVJbnRlcm5hbDo6flJlc291cmNlSGFuZGxlSW50ZXJuYWwoKQogewogICAgIGlmIChtX21zZykg
eworICAgICAgICBnX29iamVjdF9zZXRfZGF0YShHX09CSkVDVChtX21zZyksICJXZWJDb3JlLVJl
c291cmNlSGFuZGxlciIsIDApOwogICAgICAgICBnX29iamVjdF91bnJlZihtX21zZyk7CiAgICAg
ICAgIG1fbXNnID0gMDsKICAgICB9CiB9CiAKK3N0YXRpYyB2b2lkIG9uU291cEF1dGhlbnRpY2F0
ZShTb3VwU2Vzc2lvbiogc2Vzc2lvbiwgU291cE1lc3NhZ2UqIG1lc3NhZ2UsIFNvdXBBdXRoKiBh
dXRoLCBnYm9vbGVhbiByZXRyeWluZykKK3sKKyAgUmVzb3VyY2VIYW5kbGUqIGhhbmRsZTsKKwor
ICBoYW5kbGUgPSBzdGF0aWNfY2FzdDxSZXNvdXJjZUhhbmRsZSo+KGdfb2JqZWN0X2dldF9kYXRh
KEdfT0JKRUNUKG1lc3NhZ2UpLCAiV2ViQ29yZS1SZXNvdXJjZUhhbmRsZXIiKSk7CisgIGlmICgh
aGFuZGxlKQorICAgIHJldHVybjsKKworICBSZXNvdXJjZUhhbmRsZUludGVybmFsKiBkID0gaGFu
ZGxlLT5nZXRJbnRlcm5hbCgpOworICBBU1NFUlQoZC0+bV9tc2cgPT0gbWVzc2FnZSk7CisKKyAg
QVNTRVJUKCFkLT5tX3NvdXBBdXRoIHx8IGQtPm1fc291cEF1dGggPT0gYXV0aCk7CisKKyAgZC0+
bV9zb3VwQXV0aCA9IGF1dGg7CisgIGhhbmRsZS0+ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKGQtPm1fd2ViQ2hhbGxlbmdlKTsKK30KKwogUmVzb3VyY2VIYW5kbGU6On5SZXNvdXJj
ZUhhbmRsZSgpCiB7CiB9CkBAIC0xNjksNyArMTg3LDEwIEBAIGJvb2wgUmVzb3VyY2VIYW5kbGU6
OnN0YXJ0KEZyYW1lKiBmcmFtZSkKICAgICB9CiAKICAgICBpZiAoIXNlc3Npb24pCisgICAgICB7
CiAgICAgICAgIHNlc3Npb24gPSBzb3VwX3Nlc3Npb25fYXN5bmNfbmV3KCk7CisgICAgICAgIGdf
c2lnbmFsX2Nvbm5lY3QgKHNlc3Npb24sICJhdXRoZW50aWNhdGUiLCBHX0NBTExCQUNLIChvblNv
dXBBdXRoZW50aWNhdGUpLCBOVUxMKTsKKyAgICAgIH0KIAogICAgIFNvdXBNZXNzYWdlKiBtc2c7
CiAgICAgY29uc3QgY2hhciogbWV0aG9kID0gMDsKQEAgLTE4Niw2ICsyMDcsNyBAQCBib29sIFJl
c291cmNlSGFuZGxlOjpzdGFydChGcmFtZSogZnJhbWUpCiAgICAgICAgIGdfZGVidWcgKCJVbmtu
b3duIG1ldGhvZCEiKTsKIAogICAgIG1zZyA9IHNvdXBfbWVzc2FnZV9uZXcobWV0aG9kPyBtZXRo
b2QgOiBTT1VQX01FVEhPRF9HRVQsIHVybFN0cmluZy51dGY4KCkuZGF0YSgpKTsKKyAgICBnX29i
amVjdF9zZXRfZGF0YShHX09CSkVDVChtc2cpLCAiV2ViQ29yZS1SZXNvdXJjZUhhbmRsZXIiLCB0
aGlzKTsKIAogICAgIEhUVFBIZWFkZXJNYXAgY3VzdG9tSGVhZGVycyA9IGQtPm1fcmVxdWVzdC5o
dHRwSGVhZGVyRmllbGRzKCk7CiAgICAgaWYgKCFjdXN0b21IZWFkZXJzLmlzRW1wdHkoKSkgewpA
QCAtMjU5LDQgKzI4MSw4MSBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpsb2FkUmVzb3VyY2VTeW5j
aHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNlRQogICAgIG5vdEltcGxl
bWVudGVkKCk7CiB9CiAKK3ZvaWQgUmVzb3VyY2VIYW5kbGU6OmRpZFJlY2VpdmVBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlKQor
eworICAgIC8qIEZJWE1FOiBhZGQgc3VwcG9ydCBmb3IgRlRQLCBIVFRQUywgYW5kIEZUUFMgYXV0
aGVudGljYXRpb24sCisgICAgICogZ2V0IHRoZSByaWdodCBwb3J0LCBzZXJ2ZXIgYW5kIGF1dGhl
bnRpY2F0aW9uIHNjaGVtZQorICAgICAqLworICAgIFJlc291cmNlSGFuZGxlSW50ZXJuYWwqIGQg
PSBnZXRJbnRlcm5hbCgpOworICAgIGlmIChkLT5tX2NvbnRpbnVlV2l0aG91dENyZWRlbnRpYWwp
CisgICAgICAgIHJldHVybjsKKworICAgIHNvdXBfc2Vzc2lvbl9wYXVzZV9tZXNzYWdlKHNlc3Np
b24sIGQtPm1fbXNnKTsKKworICAgIGZwcmludGYoc3RkZXJyLCAiZGlkUmVjZWl2ZUF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlOiBob3N0PSVzIHJlYWxtPSVzXG4iLAorICAgICAgICAgICAgc291cF9h
dXRoX2dldF9ob3N0KGQtPm1fc291cEF1dGgpLCBzb3VwX2F1dGhfZ2V0X3JlYWxtKGQtPm1fc291
cEF1dGgpKTsKKworICAgIFByb3RlY3Rpb25TcGFjZSBwcm90ZWN0aW9uU3BhY2U7CisgICAgdW5z
aWduZWQgcHJldmlvdXNGYWlsdXJlQ291bnQgPSAwOworICAgIGlmIChjaGFsbGVuZ2UuaXNOdWxs
KCkpIHsKKyAgICAgICAgcHJvdGVjdGlvblNwYWNlID0gUHJvdGVjdGlvblNwYWNlKFN0cmluZzo6
ZnJvbVVURjgoc291cF9hdXRoX2dldF9ob3N0KGQtPm1fc291cEF1dGgpKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDgwLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgUHJvdGVjdGlvblNwYWNlU2VydmVySFRUUCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZzo6ZnJvbVVURjgoc291cF9h
dXRoX2dldF9yZWFsbShkLT5tX3NvdXBBdXRoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBQcm90ZWN0aW9uU3BhY2VBdXRoZW50aWNhdGlvblNjaGVtZURlZmF1
bHQpOworICAgIH0gZWxzZSB7CisgICAgICAgIHByb3RlY3Rpb25TcGFjZSA9IGQtPm1fd2ViQ2hh
bGxlbmdlLnByb3RlY3Rpb25TcGFjZSgpOworICAgICAgICBwcmV2aW91c0ZhaWx1cmVDb3VudCA9
IGQtPm1fd2ViQ2hhbGxlbmdlLnByZXZpb3VzRmFpbHVyZUNvdW50KCkrMTsKKyAgICAgICAgZnBy
aW50ZihzdGRlcnIsICIgIGhvc3Q9JXMgcmVhbG09JXNcbiIsCisgICAgICAgICAgICAgICAgcHJv
dGVjdGlvblNwYWNlLmhvc3QoKS51dGY4KCkuZGF0YSgpLAorICAgICAgICAgICAgICAgIHByb3Rl
Y3Rpb25TcGFjZS5yZWFsbSgpLnV0ZjgoKS5kYXRhKCkpOworICAgIH0KKyAgICAKKyAgICBkLT5t
X3dlYkNoYWxsZW5nZSA9IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHByb3RlY3Rpb25TcGFjZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYWxsZW5n
ZS5wcm9wb3NlZENyZWRlbnRpYWwoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHByZXZpb3VzRmFpbHVyZUNvdW50LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC0+bV9yZXNwb25zZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYWxsZW5nZS5lcnJvcigpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyk7CisK
KyAgICBpZiAoZC0+Y2xpZW50KCkpCisgICAgICAgIGQtPmNsaWVudCgpLT5kaWRSZWNlaXZlQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UodGhpcywgZC0+bV93ZWJDaGFsbGVuZ2UpOworfQorCit2b2lk
IFJlc291cmNlSGFuZGxlOjpyZWNlaXZlZENyZWRlbnRpYWwoY29uc3QgQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UmIGNoYWxsZW5nZSwgY29uc3QgQ3JlZGVudGlhbCYgY3JlZGVudGlhbCkKK3sKKyAg
ICBBU1NFUlQoIWNoYWxsZW5nZS5pc051bGwoKSk7ICAgCisgICAgUmVzb3VyY2VIYW5kbGVJbnRl
cm5hbCogZCA9IGdldEludGVybmFsKCk7CisgICAgaWYgKGNoYWxsZW5nZSAhPSBkLT5tX3dlYkNo
YWxsZW5nZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgc291cF9hdXRoX2F1dGhlbnRpY2F0ZShk
LT5tX3NvdXBBdXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlZGVudGlhbC51c2Vy
KCkudXRmOCgpLmRhdGEoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWRlbnRpYWwu
cGFzc3dvcmQoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBkLT5tX3dlYkNoYWxsZW5nZSA9IEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlKGNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UoKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWRlbnRpYWwsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFsbGVuZ2UucHJl
dmlvdXNGYWlsdXJlQ291bnQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNoYWxsZW5nZS5mYWlsdXJlUmVzcG9uc2UoKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYWxsZW5nZS5lcnJvcigpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyk7CisgICAg
c291cF9zZXNzaW9uX3VucGF1c2VfbWVzc2FnZShkLT5zZXNzaW9uLCBkLT5tX21zZyk7Cit9CisK
K3ZvaWQgUmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkUmVxdWVzdFRvQ29udGludWVXaXRob3V0Q3Jl
ZGVudGlhbChjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlKQoreworICAg
IEFTU0VSVCghY2hhbGxlbmdlLmlzTnVsbCgpKTsgICAKKyAgICBSZXNvdXJjZUhhbmRsZUludGVy
bmFsKiBkID0gZ2V0SW50ZXJuYWwoKTsKKyAgICBpZiAoY2hhbGxlbmdlICE9IGQtPm1fd2ViQ2hh
bGxlbmdlKQorICAgICAgICByZXR1cm47CisKKyAgICBkLT5tX2NvbnRpbnVlV2l0aG91dENyZWRl
bnRpYWwgPSB0cnVlOworICAgIHNvdXBfc2Vzc2lvbl91bnBhdXNlX21lc3NhZ2UoZC0+c2Vzc2lv
biwgZC0+bV9tc2cpOworfQorCit2b2lkIFJlc291cmNlSGFuZGxlOjpyZWNlaXZlZENhbmNlbGxh
dGlvbihjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7Cit9CisKKwogfQotLSAKMS41LjQuMwoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>27591</attachid>
            <date>2009-02-12 03:55:42 -0800</date>
            <delta_ts>2009-02-16 06:57:54 -0800</delta_ts>
            <desc>keyring.patch</desc>
            <filename>keyring.patch</filename>
            <type>text/plain</type>
            <size>15251</size>
            <attacher name="Xan Lopez">xan.lopez</attacher>
            
              <data encoding="base64">RnJvbSAzMWNiYTVlMGM4NzQzNzYzNjYzZWYzYTMyZjQyMjE5MTliY2U2MjE4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBYYW4gTG9wZXogPHhhbkBnbm9tZS5vcmc+CkRhdGU6IFRodSwg
MTIgRmViIDIwMDkgMTM6NTA6MTggKzAyMDAKU3ViamVjdDogW1BBVENIXSAyMDA5LTAyLTEyICBY
YW4gTG9wZXogIDx4YW5AZ25vbWUub3JnPgoKICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KCiAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2
OTQ3CiAgICAgICAgW0dUS10gTWlzc2luZyBIVFRQIEF1dGggY2hhbGxlbmdlCgogICAgICAgIEFk
ZCBIVFRQIGF1dGggc3RvcmFnZSB3aXRoIGdub21lLWtleXJpbmcgYW5kIGF1dGhlbnRpY2F0aW9u
IGRpYWxvZy4KCiAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwOgogICAgICAgIChXZWJDb3JlOjpmcmVl
X2F1dGhEYXRhKToKICAgICAgICAoV2ViQ29yZTo6c2V0X3Bhc3N3b3JkX2NhbGxiYWNrKToKICAg
ICAgICAoV2ViQ29yZTo6cmVzcG9uc2VfY2FsbGJhY2spOgogICAgICAgIChXZWJDb3JlOjpmaW5k
X3Bhc3N3b3JkX2NhbGxiYWNrKToKICAgICAgICAoV2ViQ29yZTo6c2Vzc2lvbl9hdXRoZW50aWNh
dGUpOgogICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6c3RhcnRIdHRwKToKLS0tCiBD
aGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTIg
KysKIEdOVW1ha2VmaWxlLmFtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg
ICAgMiArCiBXZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8ICAgMTggKysKIFdlYkNvcmUvR05VbWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwgICAgNSArCiAuLi4vcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxl
U291cC5jcHAgICB8ICAxOTYgKysrKysrKysrKysrKysrKysrKy0KIGNvbmZpZ3VyZS5hYyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxOSArKwogNiBmaWxlcyBjaGFu
Z2VkLCAyNTEgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9DaGFu
Z2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggZmFkNTYxNi4uMTU3NTA4ZSAxMDA2NDQKLS0tIGEvQ2hh
bmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDA5LTAyLTEyICBYYW4g
TG9wZXogIDx4YW5AZ25vbWUub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
Njk0NworICAgICAgICBbR1RLXSBNaXNzaW5nIEhUVFAgQXV0aCBjaGFsbGVuZ2UKKworICAgICAg
ICBBZGQgZ25vbWUta2V5cmluZyBiaXRzIHRvIHRoZSBidWlsZCBzeXN0ZW0uCisKKyAgICAgICAg
KiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBjb25maWd1cmUuYWM6CisKIDIwMDktMDItMDkg
IENhbHZpbiBXYWx0b24gIDxjYWx2aW4ud2FsdG9uQGdtYWlsLmNvbT4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBIb2xnZXIgRnJleXRoZXIuCmRpZmYgLS1naXQgYS9HTlVtYWtlZmlsZS5hbSBiL0dO
VW1ha2VmaWxlLmFtCmluZGV4IGM3NGUxZmEuLmNkM2ZlY2EgMTAwNjQ0Ci0tLSBhL0dOVW1ha2Vm
aWxlLmFtCisrKyBiL0dOVW1ha2VmaWxlLmFtCkBAIC0xNjgsNiArMTY4LDcgQEAgbGliV2ViQ29y
ZV9sYV9DRkxBR1MgPSBcCiAJLWZuby1zdHJpY3QtYWxpYXNpbmcgXAogCSQoZ2xvYmFsX2NmbGFn
cykgXAogCSQoR0xJQl9DRkxBR1MpIFwKKwkkKEdOT01FS0VZUklOR19DRkxBR1MpIFwKIAkkKFVO
SUNPREVfQ0ZMQUdTKSBcCiAJJChMSUJYTUxfQ0ZMQUdTKSBcCiAJJChDQUlST19DRkxBR1MpIFwK
QEAgLTE5Niw2ICsxOTcsNyBAQCBsaWJXZWJDb3JlX2xhX0xJQkFERCA9IFwKIAlsaWJXZWJDb3Jl
SlMubGEgXAogCSQod2ViY29yZV9saWJhZGQpIFwKIAkkKEdMSUJfTElCUykgXAorCSQoR05PTUVL
RVlSSU5HX0xJQlMpIFwKIAkkKExJQlhNTF9MSUJTKSBcCiAJJChDQUlST19MSUJTKSBcCiAJJChQ
QU5HT19MSUJTKSBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hh
bmdlTG9nCmluZGV4IDZkNTZhZGEuLjNlNjEwMjAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdl
TG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMDktMDItMTIg
IFhhbiBMb3BleiAgPHhhbkBnbm9tZS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2OTQ3CisgICAgICAgIFtHVEtdIE1pc3NpbmcgSFRUUCBBdXRoIGNoYWxsZW5nZQorCisg
ICAgICAgIEFkZCBIVFRQIGF1dGggc3RvcmFnZSB3aXRoIGdub21lLWtleXJpbmcgYW5kIGF1dGhl
bnRpY2F0aW9uIGRpYWxvZy4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6ZnJlZV9hdXRoRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRfcGFzc3dvcmRf
Y2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6cmVzcG9uc2VfY2FsbGJhY2spOgorICAgICAg
ICAoV2ViQ29yZTo6ZmluZF9wYXNzd29yZF9jYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpz
ZXNzaW9uX2F1dGhlbnRpY2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6
c3RhcnRIdHRwKToKKwogMjAwOS0wMi0xMiAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgQnVpbGQgZml4LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5hbSBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggYWQyMmIxNy4uYTEzMzk1MyAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmFtCkBAIC0xODEzLDYgKzE4MTMsMTEgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAogZW5k
aWYgIyBFTkQgVVNFX0NVUkwKIAoraWYgVVNFX0dOT01FS0VZUklORword2ViY29yZV9jcHBmbGFn
cyArPSBcCisJLURXVEZfVVNFX0dOT01FS0VZUklORz0xCitlbmRpZiAjIEVORCBVU0VfR05PTUVL
RVlSSU5HCisKIGlmIFVTRV9TT1VQCiB3ZWJjb3JlX2NwcGZsYWdzICs9IFwKIAktRFdURl9VU0Vf
U09VUD0xIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291
cmNlSGFuZGxlU291cC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJj
ZUhhbmRsZVNvdXAuY3BwCmluZGV4IGRhOTY4NzMuLmUyOTkyZTggMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAKKysrIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcApAQCAtMyw2
ICszLDcgQEAKICAqIENvcHlyaWdodCAoQykgMjAwOCBYYW4gTG9wZXogPHhhbkBnbm9tZS5vcmc+
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggQ29sbGFib3JhIEx0ZC4KICAqIENvcHlyaWdodCAoQykg
MjAwOSBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlcgorICogQ29weXJpZ2h0IChDKSAyMDA5IEln
YWxpYSBTLkwuLCBBdXRob3I6IFhhbiBMb3BleiA8eGxvcGV6QGlnYWxpYS5jb20+IAogICoKICAq
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCkBAIC00MCw2ICs0MSwxMCBAQAogI2luY2x1ZGUgPGdpby9naW8uaD4KICNp
bmNsdWRlIDxsaWJzb3VwL3NvdXAuaD4KICNpbmNsdWRlIDxsaWJzb3VwL3NvdXAtbWVzc2FnZS5o
PgorI2lmIFVTRShHTk9NRUtFWVJJTkcpCisjaW5jbHVkZSA8Z25vbWUta2V5cmluZy5oPgorI2lu
Y2x1ZGUgPGd0ay9ndGsuaD4KKyNlbmRpZgogCiAjaWYgUExBVEZPUk0oR1RLKQogICAgICNpZiBH
TElCX0NIRUNLX1ZFUlNJT04oMiwxMiwwKQpAQCAtMjgyLDYgKzI4NywxOTIgQEAgYm9vbCBSZXNv
dXJjZUhhbmRsZTo6c3RhcnREYXRhKFN0cmluZyB1cmxTdHJpbmcpCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKKyNpZiBVU0UoR05PTUVLRVlSSU5HKQordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdEF1dGhE
YXRhIHsKKyAgICBTb3VwTWVzc2FnZSogbXNnOworICAgIFNvdXBBdXRoKiBhdXRoOworICAgIFNv
dXBTZXNzaW9uKiBzZXNzaW9uOworICAgIEd0a1dpZGdldCogbG9naW5FbnRyeTsKKyAgICBHdGtX
aWRnZXQqIHBhc3N3b3JkRW50cnk7CisgICAgR3RrV2lkZ2V0KiBjaGVja0J1dHRvbjsKK30gV2Vi
S2l0QXV0aERhdGE7CisKK3N0YXRpYyB2b2lkIGZyZWVfYXV0aERhdGEoV2ViS2l0QXV0aERhdGEq
IGF1dGhEYXRhKQoreworICAgIGdfb2JqZWN0X3VucmVmKGF1dGhEYXRhLT5tc2cpOworICAgIGdf
c2xpY2VfZnJlZShXZWJLaXRBdXRoRGF0YSwgYXV0aERhdGEpOworfQorCitzdGF0aWMgdm9pZCBz
ZXRfcGFzc3dvcmRfY2FsbGJhY2soR25vbWVLZXlyaW5nUmVzdWx0IHJlc3VsdCwgZ3VpbnQzMiB2
YWwsIGdwb2ludGVyIHVzZXJfZGF0YSkKK3sKKyAgICAvKiBEdW1teSBjYWxsYmFjaywgZ25vbWVf
a2V5cmluZ19zZXRfbmV0d29ya19wYXNzd29yZCBkb2VzIG5vdCBhY2NlcHQgYSBOVUxMIG9uZSAq
LworfQorCitzdGF0aWMgdm9pZCByZXNwb25zZV9jYWxsYmFjayhHdGtEaWFsb2cqIGRpYWxvZywg
Z2ludCByZXNwb25zZV9pZCwgV2ViS2l0QXV0aERhdGEqIGF1dGhEYXRhKQoreworICAgIGNvbnN0
IGNoYXIqIGxvZ2luOworICAgIGNvbnN0IGNoYXIqIHBhc3N3b3JkOworICAgIGdib29sZWFuIHN0
b3JlUGFzc3dvcmQ7CisgICAgU291cFVSSSogdXJpOworCisgICAgc3dpdGNoKHJlc3BvbnNlX2lk
KSB7CisgICAgY2FzZSBHVEtfUkVTUE9OU0VfQUNDRVBUOgorICAgICAgICBsb2dpbiA9IGd0a19l
bnRyeV9nZXRfdGV4dChHVEtfRU5UUlkoYXV0aERhdGEtPmxvZ2luRW50cnkpKTsKKyAgICAgICAg
cGFzc3dvcmQgPSBndGtfZW50cnlfZ2V0X3RleHQoR1RLX0VOVFJZKGF1dGhEYXRhLT5wYXNzd29y
ZEVudHJ5KSk7CisgICAgICAgIHN0b3JlUGFzc3dvcmQgPSBndGtfdG9nZ2xlX2J1dHRvbl9nZXRf
YWN0aXZlKEdUS19UT0dHTEVfQlVUVE9OKGF1dGhEYXRhLT5jaGVja0J1dHRvbikpOworCisgICAg
ICAgIHNvdXBfYXV0aF9hdXRoZW50aWNhdGUoYXV0aERhdGEtPmF1dGgsIGxvZ2luLCBwYXNzd29y
ZCk7CisgICAgICAgIAorICAgICAgICBpZiAoc3RvcmVQYXNzd29yZCkgeworICAgICAgICAgICAg
dXJpID0gc291cF9tZXNzYWdlX2dldF91cmkoYXV0aERhdGEtPm1zZyk7CisgICAgICAgICAgICBn
bm9tZV9rZXlyaW5nX3NldF9uZXR3b3JrX3Bhc3N3b3JkKE5VTEwsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2luLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VwX2F1dGhfZ2V0X3JlYWxtKGF1dGhEYXRh
LT5hdXRoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dXJpLT5ob3N0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
cmktPnNjaGVtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc291cF9hdXRoX2dldF9zY2hlbWVfbmFtZShhdXRoRGF0YS0+YXV0aCksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVyaS0+cG9ydCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzc3dvcmQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8
R25vbWVLZXlyaW5nT3BlcmF0aW9uR2V0SW50Q2FsbGJhY2s+KHNldF9wYXNzd29yZF9jYWxsYmFj
ayksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEws
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOwor
ICAgICAgICB9CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgc291
cF9zZXNzaW9uX3VucGF1c2VfbWVzc2FnZShhdXRoRGF0YS0+c2Vzc2lvbiwgYXV0aERhdGEtPm1z
Zyk7CisgICAgZnJlZV9hdXRoRGF0YShhdXRoRGF0YSk7CisgICAgZ3RrX3dpZGdldF9kZXN0cm95
KEdUS19XSURHRVQoZGlhbG9nKSk7Cit9CisKK3N0YXRpYyB2b2lkIGZpbmRfcGFzc3dvcmRfY2Fs
bGJhY2soR25vbWVLZXlyaW5nUmVzdWx0IHJlc3VsdCwgR0xpc3QqIGxpc3QsIFdlYktpdEF1dGhE
YXRhKiBhdXRoRGF0YSkKK3sKKyAgICBHTGlzdCogcDsKKyAgICBjb25zdCBjaGFyKiBsb2dpbiA9
IE5VTEw7CisgICAgY29uc3QgY2hhciogcGFzc3dvcmQgPSBOVUxMOworCisgICAgZm9yIChwID0g
bGlzdDsgcDsgcCA9IHAtPm5leHQpIHsKKyAgICAgICAgLyogRklYTUU6IHN1cHBvcnQgbXVsdGlw
bGUgbG9naW5zL3Bhc3N3b3JkcyA/ICovCisgICAgICAgIEdub21lS2V5cmluZ05ldHdvcmtQYXNz
d29yZERhdGEqIGRhdGEgPSBzdGF0aWNfY2FzdDxHbm9tZUtleXJpbmdOZXR3b3JrUGFzc3dvcmRE
YXRhKj4ocC0+ZGF0YSk7CisgICAgICAgIGxvZ2luID0gZGF0YS0+dXNlcjsKKyAgICAgICAgcGFz
c3dvcmQgPSBkYXRhLT5wYXNzd29yZDsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgLyog
TWltaWMgdGhlIFVJIGZyb20gR2Vja28sIEVtYmVkUHJvbXB0ZXIuY3BwLCBMR1BMIGxpY2Vuc2Ug
Ki8KKyAgICBHdGtXaWRnZXQqIGRpYWxvZzsKKyAgICBkaWFsb2cgPSBndGtfZGlhbG9nX25ld193
aXRoX2J1dHRvbnMoIiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IE5VTEwsIC8vIEZJWE1FOiBob3cgdG8gZ2V0IHRoZSBjdXJyZW50IHRvcGxldmVsIGZyb20gaGVy
ZT8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1RLX0RJQUxPR19E
RVNUUk9ZX1dJVEhfUEFSRU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHVEtfU1RPQ0tfQ0FOQ0VMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHVEtfUkVTUE9OU0VfUkVKRUNULAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHVEtfU1RPQ0tfT0ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdUS19SRVNQT05TRV9BQ0NFUFQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIE5VTEwpOworICAgIGd0a193aW5kb3dfc2V0X2RlZmF1bHRfc2l6
ZShHVEtfV0lORE9XKGRpYWxvZyksIDEwMCwgNTApOworICAgIGd0a19kaWFsb2dfc2V0X2RlZmF1
bHRfcmVzcG9uc2UoR1RLX0RJQUxPRyhkaWFsb2cpLCBHVEtfUkVTUE9OU0VfQUNDRVBUKTsKKwor
ICAgIC8qIE1haW4gaGJveCBmb3IgaWNvbiBhbmQgY29udHJvbHMgKi8KKyAgICBHdGtXaWRnZXQq
IG1haW5IQm94ID0gZ3RrX2hib3hfbmV3KEZBTFNFLCAxMik7CisgICAgZ3RrX2NvbnRhaW5lcl9z
ZXRfYm9yZGVyX3dpZHRoKEdUS19DT05UQUlORVIoZGlhbG9nKSwgNik7CisgICAgZ3RrX2RpYWxv
Z19zZXRfaGFzX3NlcGFyYXRvcihHVEtfRElBTE9HKGRpYWxvZyksIEZBTFNFKTsKKworICAgIEd0
a1dpZGdldCogY29udGVudEFyZWEgPSBndGtfZGlhbG9nX2dldF9jb250ZW50X2FyZWEoR1RLX0RJ
QUxPRyhkaWFsb2cpKTsKKyAgICBndGtfYm94X3NldF9zcGFjaW5nKEdUS19CT1goY29udGVudEFy
ZWEpLCAxMik7CisgICAgZ3RrX2NvbnRhaW5lcl9zZXRfYm9yZGVyX3dpZHRoKEdUS19DT05UQUlO
RVIobWFpbkhCb3gpLCAxMik7CisKKyAgICAvKiBWQm94IGZvciBsYWJlbHMgYW5kIG90aGVyIGNv
bnRyb2xzICovCisgICAgR3RrV2lkZ2V0KiBjb250ZW50c1ZCb3ggPSBndGtfdmJveF9uZXcoRkFM
U0UsIDEyKTsKKyAgICBHdGtXaWRnZXQqIGljb24gPSBndGtfaW1hZ2VfbmV3X2Zyb21fc3RvY2so
R1RLX1NUT0NLX0RJQUxPR19BVVRIRU5USUNBVElPTiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR1RLX0lDT05fU0laRV9ESUFMT0cpOworICAgIGd0a19t
aXNjX3NldF9hbGlnbm1lbnQoR1RLX01JU0MoaWNvbiksIDAuNSwgMC4wKTsKKyAgICBndGtfYm94
X3BhY2tfc3RhcnQoR1RLX0JPWChtYWluSEJveCksIGljb24sIEZBTFNFLCBGQUxTRSwgMCk7CisK
KyAgICAvKiBQYWNrIHRoZSBtZXNzYWdlIGxhYmVsIGludG8gdGhlIFZCb3ggKi8KKyAgICBTb3Vw
VVJJKiB1cmkgPSBzb3VwX21lc3NhZ2VfZ2V0X3VyaShhdXRoRGF0YS0+bXNnKTsKKyAgICBjaGFy
KiBtZXNzYWdlID0gZ19zdHJkdXBfcHJpbnRmKCJBIHVzZXJuYW1lIGFuZCBwYXNzd29yZCBhcmUg
YmVpbmcgcmVxdWVzdGVkIGJ5ICVzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVyaS0+aG9zdCk7CisgICAgR3RrV2lkZ2V0KiBsYWJlbCA9IGd0a19sYWJlbF9uZXcobWVz
c2FnZSk7CisgICAgZ19mcmVlKG1lc3NhZ2UpOworICAgIGd0a19sYWJlbF9zZXRfbGluZV93cmFw
KEdUS19MQUJFTChsYWJlbCksIFRSVUUpOworICAgIGd0a19sYWJlbF9zZXRfc2VsZWN0YWJsZShH
VEtfTEFCRUwobGFiZWwpLCBUUlVFKTsKKyAgICBndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWChj
b250ZW50c1ZCb3gpLCBsYWJlbCwgRkFMU0UsIEZBTFNFLCAwKTsKKworICAgIC8qIExvZ2luL1Bh
c3N3b3JkIGVudHJpZXMgKi8KKyAgICBHdGtXaWRnZXQqIHVzZXJQYXNzSEJveCA9IGd0a19oYm94
X25ldyhGQUxTRSwgMTIpOworICAgIEd0a1dpZGdldCogdXNlclBhc3NMYWJlbHMgPSBndGtfdmJv
eF9uZXcoVFJVRSwgNik7CisgICAgR3RrV2lkZ2V0KiB1c2VyUGFzc0ZpZWxkcyA9IGd0a192Ym94
X25ldyhUUlVFLCA2KTsKKworICAgIEd0a1dpZGdldCogdXNlckxhYmVsID0gZ3RrX2xhYmVsX25l
dygiVXNlciBOYW1lOiIpOworICAgIGd0a19ib3hfcGFja19zdGFydChHVEtfQk9YKHVzZXJQYXNz
TGFiZWxzKSwgdXNlckxhYmVsLCBGQUxTRSwgMCwgMCk7CisgICAgR3RrV2lkZ2V0KiBsb2dpbkVu
dHJ5ID0gZ3RrX2VudHJ5X25ldygpOworICAgIGlmIChsb2dpbikKKyAgICAgICAgZ3RrX2VudHJ5
X3NldF90ZXh0KEdUS19FTlRSWShsb2dpbkVudHJ5KSwgbG9naW4pOworICAgIGd0a19lbnRyeV9z
ZXRfYWN0aXZhdGVzX2RlZmF1bHQoR1RLX0VOVFJZKGxvZ2luRW50cnkpLCBUUlVFKTsKKyAgICBn
dGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWCh1c2VyUGFzc0ZpZWxkcyksIGxvZ2luRW50cnksIEZB
TFNFLCAwLCAwKTsKKworICAgIEd0a1dpZGdldCogcGFzc3dvcmRMYWJlbCA9IGd0a19sYWJlbF9u
ZXcoIlBhc3N3b3JkOiIpOworICAgIGd0a19ib3hfcGFja19zdGFydChHVEtfQk9YKHVzZXJQYXNz
TGFiZWxzKSwgcGFzc3dvcmRMYWJlbCwgRkFMU0UsIDAsIDApOworICAgIEd0a1dpZGdldCogcGFz
c3dvcmRFbnRyeSA9IGd0a19lbnRyeV9uZXcoKTsKKyAgICBpZiAocGFzc3dvcmQpCisgICAgICAg
IGd0a19lbnRyeV9zZXRfdGV4dChHVEtfRU5UUlkocGFzc3dvcmRFbnRyeSksIHBhc3N3b3JkKTsK
KyAgICBndGtfZW50cnlfc2V0X3Zpc2liaWxpdHkoR1RLX0VOVFJZKHBhc3N3b3JkRW50cnkpLCBG
QUxTRSk7CisgICAgZ3RrX2VudHJ5X3NldF9hY3RpdmF0ZXNfZGVmYXVsdChHVEtfRU5UUlkocGFz
c3dvcmRFbnRyeSksIFRSVUUpOworICAgIGd0a19ib3hfcGFja19zdGFydChHVEtfQk9YKHVzZXJQ
YXNzRmllbGRzKSwgcGFzc3dvcmRFbnRyeSwgRkFMU0UsIDAsIDApOworCisgICAgZ3RrX2JveF9w
YWNrX3N0YXJ0KEdUS19CT1godXNlclBhc3NIQm94KSwgdXNlclBhc3NMYWJlbHMsIEZBTFNFLCAw
LCAwKTsKKyAgICBndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWCh1c2VyUGFzc0hCb3gpLCB1c2Vy
UGFzc0ZpZWxkcywgRkFMU0UsIDAsIDApOworICAgIGd0a19ib3hfcGFja19zdGFydChHVEtfQk9Y
KGNvbnRlbnRzVkJveCksIHVzZXJQYXNzSEJveCwgRkFMU0UsIDAsIDApOworCisgICAgLyogQ2hl
Y2tidXR0b24gKi8KKyAgICBHdGtXaWRnZXQqIGNoZWNrQnV0dG9uID0gZ3RrX2NoZWNrX2J1dHRv
bl9uZXdfd2l0aF9sYWJlbCgiUmVtZW1iZXIgcGFzc3dvcmQiKTsKKyAgICBpZiAobG9naW4gJiYg
cGFzc3dvcmQpCisgICAgICAgIGd0a190b2dnbGVfYnV0dG9uX3NldF9hY3RpdmUoR1RLX1RPR0dM
RV9CVVRUT04oY2hlY2tCdXR0b24pLCBUUlVFKTsKKyAgICBndGtfbGFiZWxfc2V0X2xpbmVfd3Jh
cChHVEtfTEFCRUwoZ3RrX2Jpbl9nZXRfY2hpbGQoR1RLX0JJTihjaGVja0J1dHRvbikpKSwgVFJV
RSk7CisgICAgZ3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1goY29udGVudHNWQm94KSwgY2hlY2tC
dXR0b24sIEZBTFNFLCAwLCAwKTsKKworICAgIC8qIFBhY2sgYW5kIGdvICovCisgICAgZ3RrX2Jv
eF9wYWNrX3N0YXJ0KEdUS19CT1gobWFpbkhCb3gpLCBjb250ZW50c1ZCb3gsIEZBTFNFLCAwLCAw
KTsKKyAgICBndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWChjb250ZW50QXJlYSksIG1haW5IQm94
LCBGQUxTRSwgMCwgMCk7CisKKyAgICBhdXRoRGF0YS0+bG9naW5FbnRyeSA9IGxvZ2luRW50cnk7
CisgICAgYXV0aERhdGEtPnBhc3N3b3JkRW50cnkgPSBwYXNzd29yZEVudHJ5OworICAgIGF1dGhE
YXRhLT5jaGVja0J1dHRvbiA9IGNoZWNrQnV0dG9uOworCisgICAgZ19zaWduYWxfY29ubmVjdChk
aWFsb2csICJyZXNwb25zZSIsIEdfQ0FMTEJBQ0socmVzcG9uc2VfY2FsbGJhY2spLCBhdXRoRGF0
YSk7CisgICAgZ3RrX3dpZGdldF9zaG93X2FsbChkaWFsb2cpOworfQorCitzdGF0aWMgdm9pZCBz
ZXNzaW9uX2F1dGhlbnRpY2F0ZShTb3VwU2Vzc2lvbiogc2Vzc2lvbiwgU291cE1lc3NhZ2UqIG1z
ZywgU291cEF1dGgqIGF1dGgsIGdib29sZWFuIHJldHJ5aW5nKQoreworICAgIFNvdXBVUkkqIHVy
aTsKKyAgICBXZWJLaXRBdXRoRGF0YSogYXV0aERhdGE7CisKKyAgICBzb3VwX3Nlc3Npb25fcGF1
c2VfbWVzc2FnZShzZXNzaW9uLCBtc2cpOworICAgIC8qIFdlIG5lZWQgdG8gbWFrZSBzdXJlIHRo
ZSBtZXNzYWdlIHN0aWNrcyBhcm91bmQgd2hlbiBwYXVzaW5nIGl0ICovCisgICAgZ19vYmplY3Rf
cmVmKG1zZyk7CisKKyAgICB1cmkgPSBzb3VwX21lc3NhZ2VfZ2V0X3VyaShtc2cpOworICAgIGF1
dGhEYXRhID0gZ19zbGljZV9uZXcoV2ViS2l0QXV0aERhdGEpOworICAgIGF1dGhEYXRhLT5tc2cg
PSBtc2c7CisgICAgYXV0aERhdGEtPmF1dGggPSBhdXRoOworICAgIGF1dGhEYXRhLT5zZXNzaW9u
ID0gc2Vzc2lvbjsKKworICAgIGdub21lX2tleXJpbmdfZmluZF9uZXR3b3JrX3Bhc3N3b3JkKE5V
TEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cF9hdXRoX2dl
dF9yZWFsbShhdXRoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
cmktPmhvc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmktPnNjaGVtZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VwX2F1dGhfZ2V0X3NjaGVt
ZV9uYW1lKGF1dGgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVy
aS0+cG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWludGVy
cHJldF9jYXN0PEdub21lS2V5cmluZ09wZXJhdGlvbkdldExpc3RDYWxsYmFjaz4oZmluZF9wYXNz
d29yZF9jYWxsYmFjayksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YXV0aERhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7
Cit9CisjZW5kaWYKKwogYm9vbCBSZXNvdXJjZUhhbmRsZTo6c3RhcnRIdHRwKFN0cmluZyB1cmxT
dHJpbmcpCiB7CiAgICAgaWYgKCFzZXNzaW9uKSB7CkBAIC0yOTcsMTIgKzQ4OCwxNSBAQCBib29s
IFJlc291cmNlSGFuZGxlOjpzdGFydEh0dHAoU3RyaW5nIHVybFN0cmluZykKICAgICAgICAgICAg
IHNvdXBfbG9nZ2VyX2F0dGFjaChsb2dnZXIsIHNlc3Npb24pOwogICAgICAgICAgICAgZ19vYmpl
Y3RfdW5yZWYobG9nZ2VyKTsKICAgICAgICAgfQorCisjaWYgVVNFKEdOT01FS0VZUklORykKKyAg
ICAgICAgZ19zaWduYWxfY29ubmVjdChzZXNzaW9uLCAiYXV0aGVudGljYXRlIiwgR19DQUxMQkFD
SyhzZXNzaW9uX2F1dGhlbnRpY2F0ZSksIHRoaXMpOworI2VuZGlmCiAgICAgfQogCiAgICAgU291
cE1lc3NhZ2UqIG1zZzsKICAgICBtc2cgPSBzb3VwX21lc3NhZ2VfbmV3KHJlcXVlc3QoKS5odHRw
TWV0aG9kKCkudXRmOCgpLmRhdGEoKSwgdXJsU3RyaW5nLnV0ZjgoKS5kYXRhKCkpOwogICAgIGdf
c2lnbmFsX2Nvbm5lY3QobXNnLCAicmVzdGFydGVkIiwgR19DQUxMQkFDSyhyZXN0YXJ0ZWRDYWxs
YmFjayksIHRoaXMpOwotCiAgICAgZ19zaWduYWxfY29ubmVjdChtc2csICJnb3QtaGVhZGVycyIs
IEdfQ0FMTEJBQ0soZ290SGVhZGVyc0NhbGxiYWNrKSwgdGhpcyk7CiAgICAgZ19zaWduYWxfY29u
bmVjdChtc2csICJnb3QtY2h1bmsiLCBHX0NBTExCQUNLKGdvdENodW5rQ2FsbGJhY2spLCB0aGlz
KTsKIApkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCmluZGV4IGM3ZWQ5
ODguLmE1MWU1NGIgMTAwNjQ0Ci0tLSBhL2NvbmZpZ3VyZS5hYworKysgYi9jb25maWd1cmUuYWMK
QEAgLTM1MCw2ICszNTAsMTQgQEAgQUNfQVJHX0VOQUJMRShnZW9sb2NhdGlvbiwKICAgICAgICAg
ICAgICAgW10sW2VuYWJsZV9nZW9sb2NhdGlvbj0ibm8iXSkKIEFDX01TR19SRVNVTFQoWyRlbmFi
bGVfZ2VvbG9jYXRpb25dKQogCisjIGNoZWNrIHdoZXRoZXIgdG8gZW5hYmxlIGdub21la2V5cmlu
ZyBzdXBwb3J0CitBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgdG8gZW5hYmxlIGdub21la2V5cmlu
ZyBzdXBwb3J0XSkKK0FDX0FSR19FTkFCTEUoZ25vbWVrZXlyaW5nLAorICAgICAgICAgICAgICBB
Q19IRUxQX1NUUklORyhbLS1lbmFibGUtZ25vbWVrZXlyaW5nXSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgW2VuYWJsZSBzdXBwb3J0IGZvciBnbm9tZWtleXJpbmcgW2RlZmF1bHQ9bm9d
XSksCisgICAgICAgICAgICAgIFtdLFtlbmFibGVfZ25vbWVrZXlyaW5nPSJubyJdKQorQUNfTVNH
X1JFU1VMVChbJGVuYWJsZV9nbm9tZWtleXJpbmddKQorCiAjIGNoZWNrIHdoZXRoZXIgdG8gZW5h
YmxlIFNWRyBzdXBwb3J0CiBBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgdG8gZW5hYmxlIFNWRyBz
dXBwb3J0XSkKIEFDX0FSR19FTkFCTEUoc3ZnLApAQCAtNTMyLDYgKzU0MCwxMyBAQCBpZiB0ZXN0
ICIkd2l0aF9odHRwX2JhY2tlbmQiID0gInNvdXAiOyB0aGVuCiAgICBBQ19TVUJTVChbTElCU09V
UF9MSUJTXSkKIGZpCiAKK2lmIHRlc3QgIiRlbmFibGVfZ25vbWVrZXlyaW5nIiA9ICJ5ZXMiOyB0
aGVuCisgICBQS0dfQ0hFQ0tfTU9EVUxFUyhbR05PTUVLRVlSSU5HXSwKKyAgICAgICAgICAgICAg
ICAgICAgIFtnbm9tZS1rZXlyaW5nLTFdKQorICAgQUNfU1VCU1QoW0dOT01FS0VZUklOR19DRkxB
R1NdKQorICAgQUNfU1VCU1QoW0dOT01FS0VZUklOR19MSUJTXSkKK2ZpCisKICMgY2hlY2sgaWYg
RnJlZVR5cGUvRm9udENvbmZpZyBhcmUgYXZhaWxhYmxlCiBpZiB0ZXN0ICIkd2l0aF9mb250X2Jh
Y2tlbmQiID0gImZyZWV0eXBlIjsgdGhlbgogICAgaWYgdGVzdCAiJHdpdGhfdGFyZ2V0IiA9ICJk
aXJlY3RmYiI7IHRoZW4KQEAgLTYxOCw2ICs2MzMsOSBAQCBBTV9DT05ESVRJT05BTChbVVNFX1NP
VVBdLCBbdGVzdCAiJHdpdGhfaHR0cF9iYWNrZW5kIiA9ICJzb3VwIl0pCiBBTV9DT05ESVRJT05B
TChbVVNFX0ZSRUVUWVBFXSwgW3Rlc3QgIiR3aXRoX2ZvbnRfYmFja2VuZCIgPSAiZnJlZXR5cGUi
XSkKIEFNX0NPTkRJVElPTkFMKFtVU0VfUEFOR09dLCBbdGVzdCAiJHdpdGhfZm9udF9iYWNrZW5k
IiA9ICJwYW5nbyJdKQogCisjIEF1dGggYmFja2VuZCBjb25kaXRpb25hbHMKK0FNX0NPTkRJVElP
TkFMKFtVU0VfR05PTUVLRVlSSU5HXSwgW3Rlc3QgIiRlbmFibGVfZ25vbWVrZXlyaW5nIiA9ICJ5
ZXMiXSkKKwogIyBXZWJLaXQgZmVhdHVyZSBjb25kaXRpb25hbHMKIEFNX0NPTkRJVElPTkFMKFtF
TkFCTEVfREVCVUddLFt0ZXN0ICIkZW5hYmxlX2RlYnVnIiA9ICJ5ZXMiXSkKIEFNX0NPTkRJVElP
TkFMKFtFTkFCTEVfREFTSEJPQVJEX1NVUFBPUlRdLFt0ZXN0ICIkZW5hYmxlX2Rhc2hib2FyZF9z
dXBwb3J0IiA9ICJ5ZXMiXSkKQEAgLTY4Myw2ICs3MDEsNyBAQCBGZWF0dXJlczoKICBXTUwgc3Vw
cG9ydCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICRlbmFi
bGVfd21sCiAgV2ViIFdvcmtlcnMgc3VwcG9ydCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgOiAkZW5hYmxlX3dlYl93b3JrZXJzCiAgR2VvbG9jYXRpb24gc3VwcG9ydCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAkZW5hYmxlX2dlb2xvY2F0aW9uCisg
R05PTUUgS2V5cmluZyBzdXBwb3J0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
OiAkZW5hYmxlX2dub21la2V5cmluZwogR1RLKyBjb25maWd1cmF0aW9uOgogIEdESyB0YXJnZXQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJHdpdGhfdGFy
Z2V0CiAgSGlsZG9uIFVJIGV4dGVuc2lvbnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgOiAkd2l0aF9oaWxkb24KLS0gCjEuNi4xCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>27698</attachid>
            <date>2009-02-16 06:57:54 -0800</date>
            <delta_ts>2009-02-17 02:06:11 -0800</delta_ts>
            <desc>authdialog.patch</desc>
            <filename>authdialog.patch</filename>
            <type>text/plain</type>
            <size>21160</size>
            <attacher name="Xan Lopez">xan.lopez</attacher>
            
              <data encoding="base64">RnJvbSAxYTE0MDI1MzQwYmEwYTMzYWQ5M2RmZmFkNDNhZDdhY2VmMDJkZTMwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBYYW4gTG9wZXogPHhhbkBnbm9tZS5vcmc+CkRhdGU6IE1vbiwg
MTYgRmViIDIwMDkgMTY6NTI6MTAgKzAyMDAKU3ViamVjdDogW1BBVENIXSAyMDA5LTAyLTE2ICBY
YW4gTG9wZXogIDx4YW5AZ25vbWUub3JnPgoKICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KCiAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2
OTQ3CiAgICAgICAgW0dUS10gTWlzc2luZyBIVFRQIEF1dGggY2hhbGxlbmdlCgogICAgICAgIEFk
ZCBIVFRQIGF1dGhlbnRpY2F0aW9uIGRpYWxvZyB3aXRoIG9wdGlvbmFsIEdOT01FIEtleXJpbmcK
ICAgICAgICBzdG9yYWdlLgoKICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgogICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHA6CiAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlSGFuZGxlOjpzdGFydEh0dHApOgogICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9zb3VwL3dlYmtpdC1zb3VwLWF1dGgtZGlhbG9nLmM6IEFkZGVkLgogICAgICAgICh3ZWJraXRf
c291cF9hdXRoX2RpYWxvZ19jbGFzc19pbml0KToKICAgICAgICAod2Via2l0X3NvdXBfYXV0aF9k
aWFsb2dfaW5pdCk6CiAgICAgICAgKHdlYmtpdF9zb3VwX2F1dGhfZGlhbG9nX3Nlc3Npb25fZmVh
dHVyZV9pbml0KToKICAgICAgICAoZnJlZV9hdXRoRGF0YSk6CiAgICAgICAgKHNldF9wYXNzd29y
ZF9jYWxsYmFjayk6CiAgICAgICAgKHJlc3BvbnNlX2NhbGxiYWNrKToKICAgICAgICAoc2hvd19h
dXRoX2RpYWxvZyk6CiAgICAgICAgKGZpbmRfcGFzc3dvcmRfY2FsbGJhY2spOgogICAgICAgIChz
ZXNzaW9uX2F1dGhlbnRpY2F0ZSk6CiAgICAgICAgKGF0dGFjaCk6CiAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvd2Via2l0LXNvdXAtYXV0aC1kaWFsb2cuaDogQWRkZWQuCi0tLQogQ2hh
bmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEyICsK
IEdOVW1ha2VmaWxlLmFtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAg
NCArLQogV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fCAgIDI2ICsrCiBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8ICAgIDkgKy0KIC4uLi9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVT
b3VwLmNwcCAgIHwgICAgNSArCiAuLi4vbmV0d29yay9zb3VwL3dlYmtpdC1zb3VwLWF1dGgtZGlh
bG9nLmMgICAgICAgICB8ICAyNzIgKysrKysrKysrKysrKysrKysrKysKIC4uLi9uZXR3b3JrL3Nv
dXAvd2Via2l0LXNvdXAtYXV0aC1kaWFsb2cuaCAgICAgICAgIHwgICA0NiArKysrCiBjb25maWd1
cmUuYWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTkgKysKIDgg
ZmlsZXMgY2hhbmdlZCwgMzkxIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiBjcmVhdGUg
bW9kZSAxMDA2NDQgV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvd2Via2l0LXNvdXAtYXV0
aC1kaWFsb2cuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9z
b3VwL3dlYmtpdC1zb3VwLWF1dGgtZGlhbG9nLmgKCmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9D
aGFuZ2VMb2cKaW5kZXggYjFlNWRiOC4uOWE5YTY0YyAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisr
KyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDA5LTAyLTE2ICBYYW4gTG9wZXogIDx4
YW5AZ25vbWUub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk0NworICAg
ICAgICBbR1RLXSBNaXNzaW5nIEhUVFAgQXV0aCBjaGFsbGVuZ2UKKworICAgICAgICBBZGQgZ25v
bWUta2V5cmluZyBiaXRzIHRvIHRoZSBidWlsZCBzeXN0ZW0uCisKKyAgICAgICAgKiBHTlVtYWtl
ZmlsZS5hbToKKyAgICAgICAgKiBjb25maWd1cmUuYWM6CisKIDIwMDktMDItMTIgIEd1c3Rhdm8g
Tm9yb25oYSBTaWx2YSAgPGduc0Bnbm9tZS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJp
YyBTZWlkZWwuCmRpZmYgLS1naXQgYS9HTlVtYWtlZmlsZS5hbSBiL0dOVW1ha2VmaWxlLmFtCmlu
ZGV4IGM3NGUxZmEuLmRkOWI3MmYgMTAwNjQ0Ci0tLSBhL0dOVW1ha2VmaWxlLmFtCisrKyBiL0dO
VW1ha2VmaWxlLmFtCkBAIC0xODIsNyArMTgyLDggQEAgbGliV2ViQ29yZV9sYV9DRkxBR1MgPSBc
CiAJJChMSUJYU0xUX0NGTEFHUykgXAogCSQoQ09WRVJBR0VfQ0ZMQUdTKSBcCiAJJChISUxET05f
Q0ZMQUdTKSBcCi0JJChHRU9DTFVFX0NGTEFHUykKKwkkKEdFT0NMVUVfQ0ZMQUdTKSBcCisJJChH
Tk9NRUtFWVJJTkdfQ0ZMQUdTKQogCiBsaWJXZWJDb3JlX2xhX0NQUEZMQUdTID0gXAogCSQoZ2xv
YmFsX2NwcGZsYWdzKSBcCkBAIC0yMTIsNiArMjEzLDcgQEAgbGliV2ViQ29yZV9sYV9MSUJBREQg
PSBcCiAJJChKUEVHX0xJQlMpIFwKIAkkKFBOR19MSUJTKSBcCiAJJChHRU9DTFVFX0xJQlMpIFwK
KwkkKEdOT01FS0VZUklOR19MSUJTKSBcCiAJLWxwdGhyZWFkCiAKICMgV2ViS2l0CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDY0OGU5YjMu
LjkwMjNiNjUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMDktMDItMTYgIFhhbiBMb3BleiAgPHhhbkBnbm9t
ZS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTQ3CisgICAgICAgIFtH
VEtdIE1pc3NpbmcgSFRUUCBBdXRoIGNoYWxsZW5nZQorCisgICAgICAgIEFkZCBIVFRQIGF1dGhl
bnRpY2F0aW9uIGRpYWxvZyB3aXRoIG9wdGlvbmFsIEdOT01FIEtleXJpbmcKKyAgICAgICAgc3Rv
cmFnZS4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VIYW5kbGU6OnN0YXJ0SHR0cCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3Vw
L3dlYmtpdC1zb3VwLWF1dGgtZGlhbG9nLmM6IEFkZGVkLgorICAgICAgICAod2Via2l0X3NvdXBf
YXV0aF9kaWFsb2dfY2xhc3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRfc291cF9hdXRoX2RpYWxv
Z19pbml0KToKKyAgICAgICAgKHdlYmtpdF9zb3VwX2F1dGhfZGlhbG9nX3Nlc3Npb25fZmVhdHVy
ZV9pbml0KToKKyAgICAgICAgKGZyZWVfYXV0aERhdGEpOgorICAgICAgICAoc2V0X3Bhc3N3b3Jk
X2NhbGxiYWNrKToKKyAgICAgICAgKHJlc3BvbnNlX2NhbGxiYWNrKToKKyAgICAgICAgKHNob3df
YXV0aF9kaWFsb2cpOgorICAgICAgICAoZmluZF9wYXNzd29yZF9jYWxsYmFjayk6CisgICAgICAg
IChzZXNzaW9uX2F1dGhlbnRpY2F0ZSk6CisgICAgICAgIChhdHRhY2gpOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvc291cC93ZWJraXQtc291cC1hdXRoLWRpYWxvZy5oOiBBZGRlZC4KKwog
MjAwOS0wMi0xNSAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAgICAg
IE1vdmUgZHVwbGljYXRlIGNhcmV0V2lkdGggY29uc3RhbnRzIHRvIFJlbmRlck9iamVjdC5oCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5h
bQppbmRleCBlODFjMTU4Li4zZDY5NjdjIDEwMDY0NAotLS0gYS9XZWJDb3JlL0dOVW1ha2VmaWxl
LmFtCisrKyBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTE4MzAsNyArMTgzMCwxNCBAQCB3
ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291
cmNlRXJyb3IuaCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5k
bGVTb3VwLmNwcCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1
ZXN0LmggXAotCVdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVzcG9uc2Uu
aAorCVdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVzcG9uc2UuaCBcCisJ
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvd2Via2l0LXNvdXAtYXV0aC1kaWFsb2cuYyBc
CisJV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvd2Via2l0LXNvdXAtYXV0aC1kaWFsb2cu
aAorZW5kaWYKKworaWYgVVNFX0dOT01FS0VZUklORword2ViY29yZV9jcHBmbGFncyArPSBcCisJ
LURXVEZfVVNFX0dOT01FS0VZUklORz0xCiBlbmRpZgogCiAjIC0tLQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcCBiL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAKaW5kZXggOWFi
N2I4YS4uNTE3NzQ0ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAv
UmVzb3VyY2VIYW5kbGVTb3VwLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiUmVz
b3VyY2VIYW5kbGVJbnRlcm5hbC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKICNp
bmNsdWRlICJUZXh0RW5jb2RpbmcuaCIKKyNpbmNsdWRlICJ3ZWJraXQtc291cC1hdXRoLWRpYWxv
Zy5oIgogCiAjaW5jbHVkZSA8ZXJybm8uaD4KICNpbmNsdWRlIDxmY250bC5oPgpAQCAtMzEwLDYg
KzMxMSwxMCBAQCBib29sIFJlc291cmNlSGFuZGxlOjpzdGFydEh0dHAoU3RyaW5nIHVybFN0cmlu
ZykKIAogICAgICAgICBzb3VwX3Nlc3Npb25fYWRkX2ZlYXR1cmUoc2Vzc2lvbiwgU09VUF9TRVNT
SU9OX0ZFQVRVUkUoZ2V0Q29va2llSmFyKCkpKTsKIAorICAgICAgICBTb3VwU2Vzc2lvbkZlYXR1
cmUqIGF1dGhEaWFsb2cgPSBzdGF0aWNfY2FzdDxTb3VwU2Vzc2lvbkZlYXR1cmUqPihnX29iamVj
dF9uZXcoV0VCS0lUX1RZUEVfU09VUF9BVVRIX0RJQUxPRywgTlVMTCkpOworICAgICAgICBzb3Vw
X3Nlc3Npb25fYWRkX2ZlYXR1cmUoc2Vzc2lvbiwgYXV0aERpYWxvZyk7CisgICAgICAgIGdfb2Jq
ZWN0X3VucmVmKGF1dGhEaWFsb2cpOworCiAgICAgICAgIGNvbnN0IGNoYXIqIHNvdXBfZGVidWcg
PSBnX2dldGVudigiV0VCS0lUX1NPVVBfTE9HR0lORyIpOwogICAgICAgICBpZiAoc291cF9kZWJ1
ZykgewogICAgICAgICAgICAgaW50IHNvdXBfZGVidWdfbGV2ZWwgPSBhdG9pKHNvdXBfZGVidWcp
OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvd2Via2l0LXNvdXAt
YXV0aC1kaWFsb2cuYyBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL3dlYmtpdC1zb3Vw
LWF1dGgtZGlhbG9nLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTUwMGI2
NAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL3dlYmtp
dC1zb3VwLWF1dGgtZGlhbG9nLmMKQEAgLTAsMCArMSwyNzIgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDkgSWdhbGlhIFMuTC4sIEF1dGhvcjogWGFuIExvcGV6IDx4bG9wZXpAaWdhbGlhLmNv
bT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu
c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBs
aWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws
CisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3
YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdp
dGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRl
IHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSA8Z3RrL2d0ay5oPgorI2luY2x1ZGUg
PGxpYnNvdXAvc291cC5oPgorI2lmIFVTRShHTk9NRUtFWVJJTkcpCisjaW5jbHVkZSA8Z25vbWUt
a2V5cmluZy5oPgorI2VuZGlmCisKKyNpbmNsdWRlICJ3ZWJraXQtc291cC1hdXRoLWRpYWxvZy5o
IgorCitzdGF0aWMgdm9pZCB3ZWJraXRfc291cF9hdXRoX2RpYWxvZ19zZXNzaW9uX2ZlYXR1cmVf
aW5pdChTb3VwU2Vzc2lvbkZlYXR1cmVJbnRlcmZhY2UqIGZlYXR1cmVfaW50ZXJmYWNlLCBncG9p
bnRlciBpbnRlcmZhY2VfZGF0YSk7CitzdGF0aWMgdm9pZCBhdHRhY2goU291cFNlc3Npb25GZWF0
dXJlICptYW5hZ2VyLCBTb3VwU2Vzc2lvbiAqc2Vzc2lvbik7CitzdGF0aWMgdm9pZCBkZXRhY2go
U291cFNlc3Npb25GZWF0dXJlICptYW5hZ2VyLCBTb3VwU2Vzc2lvbiAqc2Vzc2lvbik7CisKK0df
REVGSU5FX1RZUEVfV0lUSF9DT0RFKFdlYktpdFNvdXBBdXRoRGlhbG9nLCB3ZWJraXRfc291cF9h
dXRoX2RpYWxvZywgR19UWVBFX09CSkVDVCwKKyAgICAgICAgICAgICAgICAgICAgICAgIEdfSU1Q
TEVNRU5UX0lOVEVSRkFDRShTT1VQX1RZUEVfU0VTU0lPTl9GRUFUVVJFLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdlYmtpdF9zb3VwX2F1dGhfZGlhbG9n
X3Nlc3Npb25fZmVhdHVyZV9pbml0KSkKKworc3RhdGljIHZvaWQgd2Via2l0X3NvdXBfYXV0aF9k
aWFsb2dfY2xhc3NfaW5pdChXZWJLaXRTb3VwQXV0aERpYWxvZ0NsYXNzICprbGFzcykKK3sKK30K
Kworc3RhdGljIHZvaWQgd2Via2l0X3NvdXBfYXV0aF9kaWFsb2dfaW5pdChXZWJLaXRTb3VwQXV0
aERpYWxvZyogaW5zdGFuY2UpCit7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF9zb3VwX2F1dGhf
ZGlhbG9nX3Nlc3Npb25fZmVhdHVyZV9pbml0KFNvdXBTZXNzaW9uRmVhdHVyZUludGVyZmFjZSAq
ZmVhdHVyZV9pbnRlcmZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBncG9pbnRlciBpbnRlcmZhY2VfZGF0YSkKK3sKKyAgICBmZWF0
dXJlX2ludGVyZmFjZS0+YXR0YWNoID0gYXR0YWNoOworICAgIGZlYXR1cmVfaW50ZXJmYWNlLT5k
ZXRhY2ggPSBkZXRhY2g7Cit9CisKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRBdXRoRGF0YSB7Cisg
ICAgU291cE1lc3NhZ2UqIG1zZzsKKyAgICBTb3VwQXV0aCogYXV0aDsKKyAgICBTb3VwU2Vzc2lv
biogc2Vzc2lvbjsKKyAgICBHdGtXaWRnZXQqIGxvZ2luRW50cnk7CisgICAgR3RrV2lkZ2V0KiBw
YXNzd29yZEVudHJ5OworI2lmIFVTRShHTk9NRUtFWVJJTkcpCisgICAgR3RrV2lkZ2V0KiBjaGVj
a0J1dHRvbjsKKyNlbmRpZgorfSBXZWJLaXRBdXRoRGF0YTsKKworc3RhdGljIHZvaWQgZnJlZV9h
dXRoRGF0YShXZWJLaXRBdXRoRGF0YSogYXV0aERhdGEpCit7CisgICAgZ19vYmplY3RfdW5yZWYo
YXV0aERhdGEtPm1zZyk7CisgICAgZ19zbGljZV9mcmVlKFdlYktpdEF1dGhEYXRhLCBhdXRoRGF0
YSk7Cit9CisKKyNpZiBVU0UoR05PTUVLRVlSSU5HKQorc3RhdGljIHZvaWQgc2V0X3Bhc3N3b3Jk
X2NhbGxiYWNrKEdub21lS2V5cmluZ1Jlc3VsdCByZXN1bHQsIGd1aW50MzIgdmFsLCBncG9pbnRl
ciB1c2VyX2RhdGEpCit7CisgICAgLyogRHVtbXkgY2FsbGJhY2ssIGdub21lX2tleXJpbmdfc2V0
X25ldHdvcmtfcGFzc3dvcmQgZG9lcyBub3QgYWNjZXB0IGEgTlVMTCBvbmUgKi8KK30KKyNlbmRp
ZgorCitzdGF0aWMgdm9pZCByZXNwb25zZV9jYWxsYmFjayhHdGtEaWFsb2cqIGRpYWxvZywgZ2lu
dCByZXNwb25zZV9pZCwgV2ViS2l0QXV0aERhdGEqIGF1dGhEYXRhKQoreworICAgIGNvbnN0IGNo
YXIqIGxvZ2luOworICAgIGNvbnN0IGNoYXIqIHBhc3N3b3JkOworI2lmIFVTRShHTk9NRUtFWVJJ
TkcpCisgICAgU291cFVSSSogdXJpOworICAgIGdib29sZWFuIHN0b3JlUGFzc3dvcmQ7CisjZW5k
aWYKKworICAgIHN3aXRjaChyZXNwb25zZV9pZCkgeworICAgIGNhc2UgR1RLX1JFU1BPTlNFX0FD
Q0VQVDoKKyAgICAgICAgbG9naW4gPSBndGtfZW50cnlfZ2V0X3RleHQoR1RLX0VOVFJZKGF1dGhE
YXRhLT5sb2dpbkVudHJ5KSk7CisgICAgICAgIHBhc3N3b3JkID0gZ3RrX2VudHJ5X2dldF90ZXh0
KEdUS19FTlRSWShhdXRoRGF0YS0+cGFzc3dvcmRFbnRyeSkpOworICAgICAgICBzb3VwX2F1dGhf
YXV0aGVudGljYXRlKGF1dGhEYXRhLT5hdXRoLCBsb2dpbiwgcGFzc3dvcmQpOworCisjaWYgVVNF
KEdOT01FS0VZUklORykKKyAgICAgICAgc3RvcmVQYXNzd29yZCA9IGd0a190b2dnbGVfYnV0dG9u
X2dldF9hY3RpdmUoR1RLX1RPR0dMRV9CVVRUT04oYXV0aERhdGEtPmNoZWNrQnV0dG9uKSk7Cisg
ICAgICAgIGlmIChzdG9yZVBhc3N3b3JkKSB7CisgICAgICAgICAgICB1cmkgPSBzb3VwX21lc3Nh
Z2VfZ2V0X3VyaShhdXRoRGF0YS0+bXNnKTsKKyAgICAgICAgICAgIGdub21lX2tleXJpbmdfc2V0
X25ldHdvcmtfcGFzc3dvcmQoTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbG9naW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNvdXBfYXV0aF9nZXRfcmVhbG0oYXV0aERhdGEtPmF1dGgpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmktPmhvc3QsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVyaS0+c2NoZW1lLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VwX2F1dGhfZ2V0
X3NjaGVtZV9uYW1lKGF1dGhEYXRhLT5hdXRoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdXJpLT5wb3J0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwYXNzd29yZCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKEdub21lS2V5cmluZ09wZXJhdGlvbkdldEludENhbGxi
YWNrKXNldF9wYXNzd29yZF9jYWxsYmFjaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgTlVMTCk7CisgICAgICAgIH0KKyNlbmRpZgorICAgIGRlZmF1bHQ6Cisg
ICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHNvdXBfc2Vzc2lvbl91bnBhdXNlX21lc3NhZ2Uo
YXV0aERhdGEtPnNlc3Npb24sIGF1dGhEYXRhLT5tc2cpOworICAgIGZyZWVfYXV0aERhdGEoYXV0
aERhdGEpOworICAgIGd0a193aWRnZXRfZGVzdHJveShHVEtfV0lER0VUKGRpYWxvZykpOworfQor
CitzdGF0aWMgdm9pZCBzaG93X2F1dGhfZGlhbG9nKFdlYktpdEF1dGhEYXRhKiBhdXRoRGF0YSwg
Y29uc3QgY2hhciogbG9naW4sIGNvbnN0IGNoYXIqIHBhc3N3b3JkKQoreworICAgIC8qIE1pbWlj
IHRoZSBVSSBmcm9tIEdlY2tvLCBFbWJlZFByb21wdGVyLmNwcCwgTEdQTCBsaWNlbnNlICovCisg
ICAgR3RrV2lkZ2V0KiBkaWFsb2c7CisgICAgZGlhbG9nID0gZ3RrX2RpYWxvZ19uZXdfd2l0aF9i
dXR0b25zKCIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxM
LCAvLyBGSVhNRTogaG93IHRvIGdldCB0aGUgY3VycmVudCB0b3BsZXZlbCBmcm9tIGhlcmU/Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdUS19ESUFMT0dfREVTVFJP
WV9XSVRIX1BBUkVOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R1RLX1NUT0NLX0NBTkNFTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR1RLX1JFU1BPTlNFX1JFSkVDVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR1RLX1NUT0NLX09LLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHVEtfUkVTUE9OU0VfQUNDRVBULAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBOVUxMKTsKKyAgICBndGtfd2luZG93X3NldF9kZWZhdWx0X3NpemUoR1RL
X1dJTkRPVyhkaWFsb2cpLCAxMDAsIDUwKTsKKyAgICBndGtfZGlhbG9nX3NldF9kZWZhdWx0X3Jl
c3BvbnNlKEdUS19ESUFMT0coZGlhbG9nKSwgR1RLX1JFU1BPTlNFX0FDQ0VQVCk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgIC8qIE1haW4gaGJveCBmb3Ig
aWNvbiBhbmQgY29udHJvbHMgKi8KKyAgICBHdGtXaWRnZXQqIG1haW5IQm94ID0gZ3RrX2hib3hf
bmV3KEZBTFNFLCAxMik7CisgICAgZ3RrX2NvbnRhaW5lcl9zZXRfYm9yZGVyX3dpZHRoKEdUS19D
T05UQUlORVIoZGlhbG9nKSwgNik7CisgICAgZ3RrX2RpYWxvZ19zZXRfaGFzX3NlcGFyYXRvcihH
VEtfRElBTE9HKGRpYWxvZyksIEZBTFNFKTsKKyAgICAKKyAgICBHdGtXaWRnZXQqIGNvbnRlbnRB
cmVhID0gZ3RrX2RpYWxvZ19nZXRfY29udGVudF9hcmVhKEdUS19ESUFMT0coZGlhbG9nKSk7Cisg
ICAgZ3RrX2JveF9zZXRfc3BhY2luZyhHVEtfQk9YKGNvbnRlbnRBcmVhKSwgMTIpOworICAgIGd0
a19jb250YWluZXJfc2V0X2JvcmRlcl93aWR0aChHVEtfQ09OVEFJTkVSKG1haW5IQm94KSwgMTIp
OworICAgIC8qIFZCb3ggZm9yIGxhYmVscyBhbmQgb3RoZXIgY29udHJvbHMgKi8KKyAgICBHdGtX
aWRnZXQqIGNvbnRlbnRzVkJveCA9IGd0a192Ym94X25ldyhGQUxTRSwgMTIpOworICAgIEd0a1dp
ZGdldCogaWNvbiA9IGd0a19pbWFnZV9uZXdfZnJvbV9zdG9jayhHVEtfU1RPQ0tfRElBTE9HX0FV
VEhFTlRJQ0FUSU9OLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHVEtfSUNPTl9TSVpFX0RJQUxPRyk7CisgICAgZ3RrX21pc2Nfc2V0X2FsaWdubWVudChH
VEtfTUlTQyhpY29uKSwgMC41LCAwLjApOworICAgIGd0a19ib3hfcGFja19zdGFydChHVEtfQk9Y
KG1haW5IQm94KSwgaWNvbiwgRkFMU0UsIEZBTFNFLCAwKTsKKworICAgIC8qIFBhY2sgdGhlIG1l
c3NhZ2UgbGFiZWwgaW50byB0aGUgVkJveCAqLworICAgIFNvdXBVUkkqIHVyaSA9IHNvdXBfbWVz
c2FnZV9nZXRfdXJpKGF1dGhEYXRhLT5tc2cpOworICAgIGNoYXIqIG1lc3NhZ2UgPSBnX3N0cmR1
cF9wcmludGYoIkEgdXNlcm5hbWUgYW5kIHBhc3N3b3JkIGFyZSBiZWluZyByZXF1ZXN0ZWQgYnkg
JXMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJpLT5ob3N0KTsKKyAg
ICBHdGtXaWRnZXQqIGxhYmVsID0gZ3RrX2xhYmVsX25ldyhtZXNzYWdlKTsKKyAgICBnX2ZyZWUo
bWVzc2FnZSk7CisgICAgZ3RrX2xhYmVsX3NldF9saW5lX3dyYXAoR1RLX0xBQkVMKGxhYmVsKSwg
VFJVRSk7CisgICAgZ3RrX2xhYmVsX3NldF9zZWxlY3RhYmxlKEdUS19MQUJFTChsYWJlbCksIFRS
VUUpOworICAgIGd0a19ib3hfcGFja19zdGFydChHVEtfQk9YKGNvbnRlbnRzVkJveCksIGxhYmVs
LCBGQUxTRSwgRkFMU0UsIDApOworCisgICAgLyogTG9naW4vUGFzc3dvcmQgZW50cmllcyAqLwor
ICAgIEd0a1dpZGdldCogdXNlclBhc3NIQm94ID0gZ3RrX2hib3hfbmV3KEZBTFNFLCAxMik7Cisg
ICAgR3RrV2lkZ2V0KiB1c2VyUGFzc0xhYmVscyA9IGd0a192Ym94X25ldyhUUlVFLCA2KTsKKyAg
ICBHdGtXaWRnZXQqIHVzZXJQYXNzRmllbGRzID0gZ3RrX3Zib3hfbmV3KFRSVUUsIDYpOworCisg
ICAgR3RrV2lkZ2V0KiB1c2VyTGFiZWwgPSBndGtfbGFiZWxfbmV3KCJVc2VyIE5hbWU6Iik7Cisg
ICAgZ3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1godXNlclBhc3NMYWJlbHMpLCB1c2VyTGFiZWws
IEZBTFNFLCAwLCAwKTsKKyAgICBHdGtXaWRnZXQqIGxvZ2luRW50cnkgPSBndGtfZW50cnlfbmV3
KCk7CisgICAgaWYgKGxvZ2luKQorICAgICAgICBndGtfZW50cnlfc2V0X3RleHQoR1RLX0VOVFJZ
KGxvZ2luRW50cnkpLCBsb2dpbik7CisgICAgZ3RrX2VudHJ5X3NldF9hY3RpdmF0ZXNfZGVmYXVs
dChHVEtfRU5UUlkobG9naW5FbnRyeSksIFRSVUUpOworICAgIGd0a19ib3hfcGFja19zdGFydChH
VEtfQk9YKHVzZXJQYXNzRmllbGRzKSwgbG9naW5FbnRyeSwgRkFMU0UsIDAsIDApOworCisgICAg
R3RrV2lkZ2V0KiBwYXNzd29yZExhYmVsID0gZ3RrX2xhYmVsX25ldygiUGFzc3dvcmQ6Iik7Cisg
ICAgZ3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1godXNlclBhc3NMYWJlbHMpLCBwYXNzd29yZExh
YmVsLCBGQUxTRSwgMCwgMCk7CisgICAgR3RrV2lkZ2V0KiBwYXNzd29yZEVudHJ5ID0gZ3RrX2Vu
dHJ5X25ldygpOworICAgIGlmIChwYXNzd29yZCkKKyAgICAgICAgZ3RrX2VudHJ5X3NldF90ZXh0
KEdUS19FTlRSWShwYXNzd29yZEVudHJ5KSwgcGFzc3dvcmQpOworICAgIGd0a19lbnRyeV9zZXRf
dmlzaWJpbGl0eShHVEtfRU5UUlkocGFzc3dvcmRFbnRyeSksIEZBTFNFKTsKKyAgICBndGtfZW50
cnlfc2V0X2FjdGl2YXRlc19kZWZhdWx0KEdUS19FTlRSWShwYXNzd29yZEVudHJ5KSwgVFJVRSk7
CisgICAgZ3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1godXNlclBhc3NGaWVsZHMpLCBwYXNzd29y
ZEVudHJ5LCBGQUxTRSwgMCwgMCk7CisKKyAgICBndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWCh1
c2VyUGFzc0hCb3gpLCB1c2VyUGFzc0xhYmVscywgRkFMU0UsIDAsIDApOworICAgIGd0a19ib3hf
cGFja19zdGFydChHVEtfQk9YKHVzZXJQYXNzSEJveCksIHVzZXJQYXNzRmllbGRzLCBGQUxTRSwg
MCwgMCk7CisgICAgZ3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1goY29udGVudHNWQm94KSwgdXNl
clBhc3NIQm94LCBGQUxTRSwgMCwgMCk7CisKKyNpZiBVU0UoR05PTUVLRVlSSU5HKQorICAgIC8q
IENoZWNrYnV0dG9uICovCisgICAgR3RrV2lkZ2V0KiBjaGVja0J1dHRvbiA9IGd0a19jaGVja19i
dXR0b25fbmV3X3dpdGhfbGFiZWwoIlJlbWVtYmVyIHBhc3N3b3JkIik7CisgICAgaWYgKGxvZ2lu
ICYmIHBhc3N3b3JkKQorICAgICAgICBndGtfdG9nZ2xlX2J1dHRvbl9zZXRfYWN0aXZlKEdUS19U
T0dHTEVfQlVUVE9OKGNoZWNrQnV0dG9uKSwgVFJVRSk7CisgICAgZ3RrX2xhYmVsX3NldF9saW5l
X3dyYXAoR1RLX0xBQkVMKGd0a19iaW5fZ2V0X2NoaWxkKEdUS19CSU4oY2hlY2tCdXR0b24pKSks
IFRSVUUpOworICAgIGd0a19ib3hfcGFja19zdGFydChHVEtfQk9YKGNvbnRlbnRzVkJveCksIGNo
ZWNrQnV0dG9uLCBGQUxTRSwgMCwgMCk7CisjZW5kaWYKKworICAgIC8qIFBhY2sgYW5kIGdvICov
CisgICAgZ3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1gobWFpbkhCb3gpLCBjb250ZW50c1ZCb3gs
IEZBTFNFLCAwLCAwKTsKKyAgICBndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWChjb250ZW50QXJl
YSksIG1haW5IQm94LCBGQUxTRSwgMCwgMCk7CisKKyAgICBhdXRoRGF0YS0+bG9naW5FbnRyeSA9
IGxvZ2luRW50cnk7CisgICAgYXV0aERhdGEtPnBhc3N3b3JkRW50cnkgPSBwYXNzd29yZEVudHJ5
OworI2lmIFVTRShHTk9NRUtFWVJJTkcpCisgICAgYXV0aERhdGEtPmNoZWNrQnV0dG9uID0gY2hl
Y2tCdXR0b247CisjZW5kaWYKKworICAgIGdfc2lnbmFsX2Nvbm5lY3QoZGlhbG9nLCAicmVzcG9u
c2UiLCBHX0NBTExCQUNLKHJlc3BvbnNlX2NhbGxiYWNrKSwgYXV0aERhdGEpOworICAgIGd0a193
aWRnZXRfc2hvd19hbGwoZGlhbG9nKTsKK30KKworI2lmIFVTRShHTk9NRUtFWVJJTkcpCitzdGF0
aWMgdm9pZCBmaW5kX3Bhc3N3b3JkX2NhbGxiYWNrKEdub21lS2V5cmluZ1Jlc3VsdCByZXN1bHQs
IEdMaXN0KiBsaXN0LCBXZWJLaXRBdXRoRGF0YSogYXV0aERhdGEpCit7CisgICAgR0xpc3QqIHA7
CisgICAgY29uc3QgY2hhciogbG9naW4gPSBOVUxMOworICAgIGNvbnN0IGNoYXIqIHBhc3N3b3Jk
ID0gTlVMTDsKKworICAgIGZvciAocCA9IGxpc3Q7IHA7IHAgPSBwLT5uZXh0KSB7CisgICAgICAg
IC8qIEZJWE1FOiBzdXBwb3J0IG11bHRpcGxlIGxvZ2lucy9wYXNzd29yZHMgPyAqLworICAgICAg
ICBHbm9tZUtleXJpbmdOZXR3b3JrUGFzc3dvcmREYXRhKiBkYXRhID0gKEdub21lS2V5cmluZ05l
dHdvcmtQYXNzd29yZERhdGEqKXAtPmRhdGE7CisgICAgICAgIGxvZ2luID0gZGF0YS0+dXNlcjsK
KyAgICAgICAgcGFzc3dvcmQgPSBkYXRhLT5wYXNzd29yZDsKKyAgICAgICAgYnJlYWs7CisgICAg
fQorCisgICAgc2hvd19hdXRoX2RpYWxvZyhhdXRoRGF0YSwgbG9naW4sIHBhc3N3b3JkKTsKK30K
KyNlbmRpZgorCitzdGF0aWMgdm9pZCBzZXNzaW9uX2F1dGhlbnRpY2F0ZShTb3VwU2Vzc2lvbiog
c2Vzc2lvbiwgU291cE1lc3NhZ2UqIG1zZywgU291cEF1dGgqIGF1dGgsIGdib29sZWFuIHJldHJ5
aW5nKQoreworICAgIFNvdXBVUkkqIHVyaTsKKyAgICBXZWJLaXRBdXRoRGF0YSogYXV0aERhdGE7
CisKKyAgICBzb3VwX3Nlc3Npb25fcGF1c2VfbWVzc2FnZShzZXNzaW9uLCBtc2cpOworICAgIC8q
IFdlIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBtZXNzYWdlIHN0aWNrcyBhcm91bmQgd2hlbiBwYXVz
aW5nIGl0ICovCisgICAgZ19vYmplY3RfcmVmKG1zZyk7CisgICAgICAgIAorICAgIHVyaSA9IHNv
dXBfbWVzc2FnZV9nZXRfdXJpKG1zZyk7CisgICAgYXV0aERhdGEgPSBnX3NsaWNlX25ldyhXZWJL
aXRBdXRoRGF0YSk7CisgICAgYXV0aERhdGEtPm1zZyA9IG1zZzsKKyAgICBhdXRoRGF0YS0+YXV0
aCA9IGF1dGg7CisgICAgYXV0aERhdGEtPnNlc3Npb24gPSBzZXNzaW9uOworCisgICAgLyogCisg
ICAgICogSWYgd2UgaGF2ZSBnbm9tZS1rZXlyaW5nIGxldCdzIHRyeSB0byBmaW5kIHRoZSBwYXNz
d29yZCBmaXJzdCBpbiB0aGUgcmluZy4KKyAgICAgKiBPdGhlcndpc2UganVzdCBzaG93IHRoZSBk
aWFsb2cgc3RyYWlnaHQgYXdheQorICAgICAqLworI2lmIFVTRShHTk9NRUtFWVJJTkcpCisgICAg
Z25vbWVfa2V5cmluZ19maW5kX25ldHdvcmtfcGFzc3dvcmQoTlVMTCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VwX2F1dGhfZ2V0X3JlYWxtKGF1dGgpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVyaS0+aG9zdCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVyaS0+c2NoZW1lLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNvdXBfYXV0aF9nZXRfc2NoZW1lX25hbWUoYXV0aCksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJpLT5wb3J0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChHbm9tZUtleXJpbmdPcGVyYXRpb25HZXRM
aXN0Q2FsbGJhY2spZmluZF9wYXNzd29yZF9jYWxsYmFjaywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBhdXRoRGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBOVUxMKTsKKyNlbHNlCisgICAgc2hvd19hdXRoX2RpYWxvZyhhdXRoRGF0
YSwgTlVMTCwgTlVMTCk7CisjZW5kaWYKK30KKworc3RhdGljIHZvaWQgYXR0YWNoKFNvdXBTZXNz
aW9uRmVhdHVyZSAqbWFuYWdlciwgU291cFNlc3Npb24gKnNlc3Npb24pCit7CisgICAgZ19zaWdu
YWxfY29ubmVjdChzZXNzaW9uLCAiYXV0aGVudGljYXRlIiwgR19DQUxMQkFDSyhzZXNzaW9uX2F1
dGhlbnRpY2F0ZSksIE5VTEwpOworfQorCitzdGF0aWMgdm9pZCBkZXRhY2goU291cFNlc3Npb25G
ZWF0dXJlICptYW5hZ2VyLCBTb3VwU2Vzc2lvbiAqc2Vzc2lvbikKK3sKKyAgICBnX3NpZ25hbF9o
YW5kbGVyc19kaXNjb25uZWN0X2J5X2Z1bmMoc2Vzc2lvbiwgc2Vzc2lvbl9hdXRoZW50aWNhdGUs
IE5VTEwpOworfQorCisKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3Vw
L3dlYmtpdC1zb3VwLWF1dGgtZGlhbG9nLmggYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC93ZWJraXQtc291cC1hdXRoLWRpYWxvZy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjMyNjMwZTQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvc291cC93ZWJraXQtc291cC1hdXRoLWRpYWxvZy5oCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDkgSWdhbGlhIFMuTC4sIEF1dGhvcjogWGFuIExvcGV6IDx4bG9w
ZXpAaWdhbGlhLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisg
KgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
KyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJ
ZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAx
LCBVU0EuCisgKi8KKworI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CisKKyNpZm5kZWYgV0VCS0lU
X1NPVVBfQVVUSF9ESUFMT0dfSAorI2RlZmluZSBXRUJLSVRfU09VUF9BVVRIX0RJQUxPR19IIDEK
KworR19CRUdJTl9ERUNMUworCisjZGVmaW5lIFdFQktJVF9UWVBFX1NPVVBfQVVUSF9ESUFMT0cg
ICAgICAgICAgICAod2Via2l0X3NvdXBfYXV0aF9kaWFsb2dfZ2V0X3R5cGUgKCkpCisjZGVmaW5l
IFdFQktJVF9TT1VQX0FVVEhfRElBTE9HKG9iamVjdCkgICAgICAgICAoR19UWVBFX0NIRUNLX0lO
U1RBTkNFX0NBU1QgKChvYmplY3QpLCBXRUJLSVRfVFlQRV9TT1VQX0FVVEhfRElBTE9HLCBXZWJL
aXRTb3VwQXV0aERpYWxvZykpCisjZGVmaW5lIFdFQktJVF9TT1VQX0FVVEhfRElBTE9HX0NMQVNT
KGtsYXNzKSAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QgKChrbGFzcyksIFdFQktJVF9UWVBF
X1NPVVBfQVVUSF9ESUFMT0csIFdlYktpdFNvdXBBdXRoRGlhbG9nKSkKKyNkZWZpbmUgV0VCS0lU
X0lTX1NPVVBfQVVUSF9ESUFMT0cob2JqZWN0KSAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0Vf
VFlQRSAoKG9iamVjdCksIFdFQktJVF9UWVBFX1NPVVBfQVVUSF9ESUFMT0cpKQorI2RlZmluZSBX
RUJLSVRfSVNfU09VUF9BVVRIX0RJQUxPR19DTEFTUyhrbGFzcykgKEdfVFlQRV9DSEVDS19DTEFT
U19UWVBFICgoa2xhc3MpLCBXRUJLSVRfVFlQRV9TT1VQX0FVVEhfRElBTE9HKSkKKyNkZWZpbmUg
V0VCS0lUX1NPVVBfQVVUSF9ESUFMT0dfR0VUX0NMQVNTKG9iaikgIChHX1RZUEVfSU5TVEFOQ0Vf
R0VUX0NMQVNTICgob2JqKSwgV0VCS0lUX1RZUEVfU09VUF9BVVRIX0RJQUxPRywgV2ViS2l0U291
cEF1dGhEaWFsb2cpKQorCit0eXBlZGVmIHN0cnVjdCB7CisgICAgICAgIEdPYmplY3QgcGFyZW50
X2luc3RhbmNlOworfSBXZWJLaXRTb3VwQXV0aERpYWxvZzsKKwordHlwZWRlZiBzdHJ1Y3Qgewor
ICAgICAgICBHT2JqZWN0Q2xhc3MgcGFyZW50X2NsYXNzOworfSBXZWJLaXRTb3VwQXV0aERpYWxv
Z0NsYXNzOworCitHVHlwZSB3ZWJraXRfc291cF9hdXRoX2RpYWxvZ19nZXRfdHlwZSAodm9pZCk7
CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZiAvKiBXRUJLSVRfU09VUF9BVVRIX0RJQUxPR19IICov
CmRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKaW5kZXggNGU1Zjk4My4u
NjBjMGMyYSAxMDA2NDQKLS0tIGEvY29uZmlndXJlLmFjCisrKyBiL2NvbmZpZ3VyZS5hYwpAQCAt
MzUwLDYgKzM1MCwxNCBAQCBBQ19BUkdfRU5BQkxFKGdlb2xvY2F0aW9uLAogICAgICAgICAgICAg
ICBbXSxbZW5hYmxlX2dlb2xvY2F0aW9uPSJubyJdKQogQUNfTVNHX1JFU1VMVChbJGVuYWJsZV9n
ZW9sb2NhdGlvbl0pCiAKKyMgY2hlY2sgd2hldGhlciB0byBlbmFibGUgZ25vbWVrZXlyaW5nIHN1
cHBvcnQKK0FDX01TR19DSEVDS0lORyhbd2hldGhlciB0byBlbmFibGUgZ25vbWVrZXlyaW5nIHN1
cHBvcnRdKQorQUNfQVJHX0VOQUJMRShnbm9tZWtleXJpbmcsCisgICAgICAgICAgICAgIEFDX0hF
TFBfU1RSSU5HKFstLWVuYWJsZS1nbm9tZWtleXJpbmddLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBbZW5hYmxlIHN1cHBvcnQgZm9yIGdub21la2V5cmluZyBbZGVmYXVsdD1ub11dKSwK
KyAgICAgICAgICAgICAgW10sW2VuYWJsZV9nbm9tZWtleXJpbmc9Im5vIl0pCitBQ19NU0dfUkVT
VUxUKFskZW5hYmxlX2dub21la2V5cmluZ10pCisKICMgY2hlY2sgd2hldGhlciB0byBlbmFibGUg
U1ZHIHN1cHBvcnQKIEFDX01TR19DSEVDS0lORyhbd2hldGhlciB0byBlbmFibGUgU1ZHIHN1cHBv
cnRdKQogQUNfQVJHX0VOQUJMRShzdmcsCkBAIC01MzIsNiArNTQwLDEzIEBAIGlmIHRlc3QgIiR3
aXRoX2h0dHBfYmFja2VuZCIgPSAic291cCI7IHRoZW4KICAgIEFDX1NVQlNUKFtMSUJTT1VQX0xJ
QlNdKQogZmkKIAoraWYgdGVzdCAiJGVuYWJsZV9nbm9tZWtleXJpbmciID0gInllcyI7IHRoZW4K
KyAgIFBLR19DSEVDS19NT0RVTEVTKFtHTk9NRUtFWVJJTkddLAorICAgICAgICAgICAgICAgICAg
ICAgW2dub21lLWtleXJpbmctMV0pCisgICBBQ19TVUJTVChbR05PTUVLRVlSSU5HX0NGTEFHU10p
CisgICBBQ19TVUJTVChbR05PTUVLRVlSSU5HX0xJQlNdKQorZmkKKwogIyBjaGVjayBpZiBGcmVl
VHlwZS9Gb250Q29uZmlnIGFyZSBhdmFpbGFibGUKIGlmIHRlc3QgIiR3aXRoX2ZvbnRfYmFja2Vu
ZCIgPSAiZnJlZXR5cGUiOyB0aGVuCiAgICBpZiB0ZXN0ICIkd2l0aF90YXJnZXQiID0gImRpcmVj
dGZiIjsgdGhlbgpAQCAtNjE0LDYgKzYyOSw5IEBAIEFNX0NPTkRJVElPTkFMKFtUQVJHRVRfRElS
RUNURkJdLCBbdGVzdCAiJHdpdGhfdGFyZ2V0IiA9ICJkaXJlY3RmYiJdKQogQU1fQ09ORElUSU9O
QUwoW1VTRV9DVVJMXSwgW3Rlc3QgIiR3aXRoX2h0dHBfYmFja2VuZCIgPSAiY3VybCJdKQogQU1f
Q09ORElUSU9OQUwoW1VTRV9TT1VQXSwgW3Rlc3QgIiR3aXRoX2h0dHBfYmFja2VuZCIgPSAic291
cCJdKQogCisjIEF1dGggYmFja2VuZCBjb25kaXRpb25hbHMKK0FNX0NPTkRJVElPTkFMKFtVU0Vf
R05PTUVLRVlSSU5HXSwgW3Rlc3QgIiRlbmFibGVfZ25vbWVrZXlyaW5nIiA9ICJ5ZXMiXSkKKwog
IyBGb250IGJhY2tlbmQgY29uZGl0aW9uYWxzCiBBTV9DT05ESVRJT05BTChbVVNFX0ZSRUVUWVBF
XSwgW3Rlc3QgIiR3aXRoX2ZvbnRfYmFja2VuZCIgPSAiZnJlZXR5cGUiXSkKIEFNX0NPTkRJVElP
TkFMKFtVU0VfUEFOR09dLCBbdGVzdCAiJHdpdGhfZm9udF9iYWNrZW5kIiA9ICJwYW5nbyJdKQpA
QCAtNjgzLDYgKzcwMSw3IEBAIEZlYXR1cmVzOgogIFdNTCBzdXBwb3J0ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJGVuYWJsZV93bWwKICBXZWIgV29ya2Vy
cyBzdXBwb3J0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICRlbmFibGVf
d2ViX3dvcmtlcnMKICBHZW9sb2NhdGlvbiBzdXBwb3J0ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA6ICRlbmFibGVfZ2VvbG9jYXRpb24KKyBHTk9NRSBLZXlyaW5nIHN1cHBv
cnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICRlbmFibGVfZ25vbWVrZXly
aW5nCiBHVEsrIGNvbmZpZ3VyYXRpb246CiAgR0RLIHRhcmdldCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAkd2l0aF90YXJnZXQKICBIaWxkb24gVUkgZXh0
ZW5zaW9ucyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICR3aXRoX2hpbGRv
bgotLSAKMS42LjEKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>27704</attachid>
            <date>2009-02-16 11:57:01 -0800</date>
            <delta_ts>2009-02-17 05:14:16 -0800</delta_ts>
            <desc>add parent window information to the auth dialog</desc>
            <filename>0001-my-changes-to-the-patch-by-Xan.patch</filename>
            <type>text/plain</type>
            <size>27450</size>
            <attacher name="Gustavo Noronha (kov)">gustavo</attacher>
            
              <data encoding="base64">RnJvbSA4M2JhMzc3YzhjZWVlYjFiODhiMzYwZjAwYjE1YTg5NWEwZmNmZmY4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgPGtvdkBrb3YuZXRpLmJy
PgpEYXRlOiBNb24sIDE2IEZlYiAyMDA5IDE2OjU0OjMxIC0wMzAwClN1YmplY3Q6IFtQQVRDSF0g
bXkgY2hhbmdlcyB0byB0aGUgcGF0Y2ggYnkgWGFuCgotLS0KIFdlYkNvcmUvR05VbWFrZWZpbGUu
YW0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMiArLQogV2ViQ29yZS9wYWdlL0No
cm9tZUNsaWVudC5oICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAyICsKIFdlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmggIHwgICAgMyArCiAuLi4vcGxh
dGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAgICB8ICAgIDYgKwogLi4u
L25ldHdvcmsvc291cC93ZWJraXQtc291cC1hdXRoLWRpYWxvZy5jICAgICAgICAgfCAgMjcyIC0t
LS0tLS0tLS0tLS0tLS0tLQogLi4uL25ldHdvcmsvc291cC93ZWJraXQtc291cC1hdXRoLWRpYWxv
Zy5jcHAgICAgICAgfCAgMjg4ICsrKysrKysrKysrKysrKysrKysrCiA2IGZpbGVzIGNoYW5nZWQs
IDMwMCBpbnNlcnRpb25zKCspLCAyNzMgZGVsZXRpb25zKC0pCiBkZWxldGUgbW9kZSAxMDA2NDQg
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvd2Via2l0LXNvdXAtYXV0aC1kaWFsb2cuYwog
Y3JlYXRlIG1vZGUgMTAwNjQ0IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL3dlYmtpdC1z
b3VwLWF1dGgtZGlhbG9nLmNwcAoKZGlmZiAtLWdpdCBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0g
Yi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IDNkNjk2N2MuLjc3OGJjNzAgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpA
QCAtMTgzMSw3ICsxODMxLDcgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwIFwKIAlXZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3QuaCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXNwb25zZS5oIFwKLQlXZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvc291cC93ZWJraXQtc291cC1hdXRoLWRpYWxvZy5jIFwKKwlXZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC93ZWJraXQtc291cC1hdXRoLWRpYWxvZy5jcHAgXAogCVdlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9zb3VwL3dlYmtpdC1zb3VwLWF1dGgtZGlhbG9nLmgKIGVuZGlmCiAKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaCBiL1dlYkNvcmUvcGFnZS9DaHJvbWVD
bGllbnQuaAppbmRleCBhYTliMzI5Li44N2Q4OGViIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2Uv
Q2hyb21lQ2xpZW50LmgKKysrIGIvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCkBAIC0yOSw2
ICsyOSw4IEBACiAKICNpZiBQTEFURk9STShNQUMpCiAjaW5jbHVkZSAiV2ViQ29yZUtleWJvYXJk
VUlNb2RlLmgiCisjZWxpZiBQTEFURk9STShHVEspCisjaW5jbHVkZSA8Z3RrL2d0ay5oPgogI2Vu
ZGlmCiAKICNpZm5kZWYgX19PQkpDX18KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmggYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
UmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oCmluZGV4IDY2YWE0YzEuLjRlNDQxN2MgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmgKKysr
IGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaApAQCAt
NDcsNiArNDcsNyBAQAogCiAjaWYgVVNFKFNPVVApCiAjaW5jbHVkZSA8bGlic291cC9zb3VwLmg+
CitjbGFzcyBGcmFtZTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oUVQpCkBAIC0xMTcsNiArMTE4
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgLCBtX2J1ZnNpemUoMCkKICAg
ICAgICAgICAgICwgbV90b3RhbCgwKQogICAgICAgICAgICAgLCBtX2lkbGVIYW5kbGVyKDApCisg
ICAgICAgICAgICAsIG1fZnJhbWUoMCkKICNlbmRpZgogI2lmIFBMQVRGT1JNKFFUKQogICAgICAg
ICAgICAgLCBtX2pvYigwKQpAQCAtMTg3LDYgKzE4OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgY2hhciogbV9idWZmZXI7CiAgICAgICAgIGdzaXplIG1fYnVmc2l6ZSwgbV90b3Rh
bDsKICAgICAgICAgZ3VpbnQgbV9pZGxlSGFuZGxlcjsKKyAgICAgICAgRnJhbWUqIG1fZnJhbWU7
CiAjZW5kaWYKICNpZiBQTEFURk9STShRVCkKICNpZiBRVF9WRVJTSU9OIDwgMHgwNDA0MDAKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291
cC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAu
Y3BwCmluZGV4IDUxNzc0NGQuLjc3NmQxZjEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcApAQCAtMjAzLDYgKzIwMyw3IEBA
IHN0YXRpYyB2b2lkIGZpbmlzaGVkQ2FsbGJhY2soU291cFNlc3Npb24gKnNlc3Npb24sIFNvdXBN
ZXNzYWdlKiBtc2csIGdwb2ludGVyIGRhCiAgICAgaWYgKGQtPm1fY2FuY2VsbGVkKQogICAgICAg
ICByZXR1cm47CiAKKyAgICBnX29iamVjdF9zZXRfZGF0YShHX09CSkVDVChtc2cpLCAid2Via2l0
LXJlc291cmNlIiwgMCk7CiAgICAgaWYgKFNPVVBfU1RBVFVTX0lTX1RSQU5TUE9SVF9FUlJPUiht
c2ctPnN0YXR1c19jb2RlKSkgewogICAgICAgICBjaGFyKiB1cmkgPSBzb3VwX3VyaV90b19zdHJp
bmcoc291cF9tZXNzYWdlX2dldF91cmkobXNnKSwgRkFMU0UpOwogICAgICAgICBSZXNvdXJjZUVy
cm9yIGVycm9yKCJ3ZWJraXQtbmV0d29yay1lcnJvciIsIEVSUk9SX1RSQU5TUE9SVCwgdXJpLCBT
dHJpbmc6OmZyb21VVEY4KG1zZy0+cmVhc29uX3BocmFzZSkpOwpAQCAtMzMxLDYgKzMzMiw3IEBA
IGJvb2wgUmVzb3VyY2VIYW5kbGU6OnN0YXJ0SHR0cChTdHJpbmcgdXJsU3RyaW5nKQogCiAgICAg
Z19zaWduYWxfY29ubmVjdChtc2csICJnb3QtaGVhZGVycyIsIEdfQ0FMTEJBQ0soZ290SGVhZGVy
c0NhbGxiYWNrKSwgdGhpcyk7CiAgICAgZ19zaWduYWxfY29ubmVjdChtc2csICJnb3QtY2h1bmsi
LCBHX0NBTExCQUNLKGdvdENodW5rQ2FsbGJhY2spLCB0aGlzKTsKKyAgICBnX29iamVjdF9zZXRf
ZGF0YShHX09CSkVDVChtc2cpLCAid2Via2l0LXJlc291cmNlIiwgdGhpcyk7CiAKICAgICBIVFRQ
SGVhZGVyTWFwIGN1c3RvbUhlYWRlcnMgPSBkLT5tX3JlcXVlc3QuaHR0cEhlYWRlckZpZWxkcygp
OwogICAgIGlmICghY3VzdG9tSGVhZGVycy5pc0VtcHR5KCkpIHsKQEAgLTQyNyw2ICs0MjksOSBA
QCBib29sIFJlc291cmNlSGFuZGxlOjpzdGFydChGcmFtZSogZnJhbWUpCiAgICAgU3RyaW5nIHVy
bFN0cmluZyA9IHVybC5zdHJpbmcoKTsKICAgICBTdHJpbmcgcHJvdG9jb2wgPSB1cmwucHJvdG9j
b2woKTsKIAorICAgIC8vIHVzZWQgdG8gc2V0IGF1dGggZGlhbG9nIHBhcmVudDsgbWF5IGJlIE5V
TEwKKyAgICBkLT5tX2ZyYW1lID0gZnJhbWU7CisKICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2Uo
cHJvdG9jb2wsICJkYXRhIikpCiAgICAgICAgIHJldHVybiBzdGFydERhdGEodXJsU3RyaW5nKTsK
ICAgICBlbHNlIGlmICgoZXF1YWxJZ25vcmluZ0Nhc2UocHJvdG9jb2wsICJodHRwIikgfHwgZXF1
YWxJZ25vcmluZ0Nhc2UocHJvdG9jb2wsICJodHRwcyIpKSAmJiBTT1VQX1VSSV9WQUxJRF9GT1Jf
SFRUUChzb3VwX3VyaV9uZXcodXJsU3RyaW5nLnV0ZjgoKS5kYXRhKCkpKSkKQEAgLTQ0OSw2ICs0
NTQsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpjYW5jZWwoKQogICAgIGQtPm1fY2FuY2VsbGVk
ID0gdHJ1ZTsKICAgICBpZiAoZC0+bV9tc2cpIHsKICAgICAgICAgc291cF9zZXNzaW9uX2NhbmNl
bF9tZXNzYWdlKHNlc3Npb24sIGQtPm1fbXNnLCBTT1VQX1NUQVRVU19DQU5DRUxMRUQpOworICAg
ICAgICBnX29iamVjdF9zZXRfZGF0YShHX09CSkVDVChkLT5tX21zZyksICJ3ZWJraXQtcmVzb3Vy
Y2UiLCAwKTsKICAgICAgICAgLy8gRm9yIHJlLWVudHJhbmN5IHRyb3VibGVzIHdlIGNhbGwgZGlk
RmluaXNoTG9hZGluZyB3aGVuIHRoZSBtZXNzYWdlIGhhc24ndCBiZWVuIGhhbmRsZWQgeWV0Lgog
ICAgICAgICBpZiAoY2xpZW50KCkpCiAgICAgICAgICAgICBjbGllbnQoKS0+ZGlkRmluaXNoTG9h
ZGluZyh0aGlzKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL3dl
YmtpdC1zb3VwLWF1dGgtZGlhbG9nLmMgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC93
ZWJraXQtc291cC1hdXRoLWRpYWxvZy5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBl
NTAwYjY0Li4wMDAwMDAwCi0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL3dlYmtp
dC1zb3VwLWF1dGgtZGlhbG9nLmMKKysrIC9kZXYvbnVsbApAQCAtMSwyNzIgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAwOSBJZ2FsaWEgUy5MLiwgQXV0aG9yOiBYYW4gTG9wZXogPHhs
b3BlekBpZ2FsaWEuY29tPgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
LSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4g
IElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEz
MDEsIFVTQS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpbmNsdWRlIDxndGsvZ3Rr
Lmg+Ci0jaW5jbHVkZSA8bGlic291cC9zb3VwLmg+Ci0jaWYgVVNFKEdOT01FS0VZUklORykKLSNp
bmNsdWRlIDxnbm9tZS1rZXlyaW5nLmg+Ci0jZW5kaWYKLQotI2luY2x1ZGUgIndlYmtpdC1zb3Vw
LWF1dGgtZGlhbG9nLmgiCi0KLXN0YXRpYyB2b2lkIHdlYmtpdF9zb3VwX2F1dGhfZGlhbG9nX3Nl
c3Npb25fZmVhdHVyZV9pbml0KFNvdXBTZXNzaW9uRmVhdHVyZUludGVyZmFjZSogZmVhdHVyZV9p
bnRlcmZhY2UsIGdwb2ludGVyIGludGVyZmFjZV9kYXRhKTsKLXN0YXRpYyB2b2lkIGF0dGFjaChT
b3VwU2Vzc2lvbkZlYXR1cmUgKm1hbmFnZXIsIFNvdXBTZXNzaW9uICpzZXNzaW9uKTsKLXN0YXRp
YyB2b2lkIGRldGFjaChTb3VwU2Vzc2lvbkZlYXR1cmUgKm1hbmFnZXIsIFNvdXBTZXNzaW9uICpz
ZXNzaW9uKTsKLQotR19ERUZJTkVfVFlQRV9XSVRIX0NPREUoV2ViS2l0U291cEF1dGhEaWFsb2cs
IHdlYmtpdF9zb3VwX2F1dGhfZGlhbG9nLCBHX1RZUEVfT0JKRUNULAotICAgICAgICAgICAgICAg
ICAgICAgICAgR19JTVBMRU1FTlRfSU5URVJGQUNFKFNPVVBfVFlQRV9TRVNTSU9OX0ZFQVRVUkUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2Via2l0X3Nv
dXBfYXV0aF9kaWFsb2dfc2Vzc2lvbl9mZWF0dXJlX2luaXQpKQotCi1zdGF0aWMgdm9pZCB3ZWJr
aXRfc291cF9hdXRoX2RpYWxvZ19jbGFzc19pbml0KFdlYktpdFNvdXBBdXRoRGlhbG9nQ2xhc3Mg
KmtsYXNzKQotewotfQotCi1zdGF0aWMgdm9pZCB3ZWJraXRfc291cF9hdXRoX2RpYWxvZ19pbml0
KFdlYktpdFNvdXBBdXRoRGlhbG9nKiBpbnN0YW5jZSkKLXsKLX0KLQotc3RhdGljIHZvaWQgd2Vi
a2l0X3NvdXBfYXV0aF9kaWFsb2dfc2Vzc2lvbl9mZWF0dXJlX2luaXQoU291cFNlc3Npb25GZWF0
dXJlSW50ZXJmYWNlICpmZWF0dXJlX2ludGVyZmFjZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwb2ludGVyIGludGVyZmFjZV9kYXRh
KQotewotICAgIGZlYXR1cmVfaW50ZXJmYWNlLT5hdHRhY2ggPSBhdHRhY2g7Ci0gICAgZmVhdHVy
ZV9pbnRlcmZhY2UtPmRldGFjaCA9IGRldGFjaDsKLX0KLQotdHlwZWRlZiBzdHJ1Y3QgX1dlYktp
dEF1dGhEYXRhIHsKLSAgICBTb3VwTWVzc2FnZSogbXNnOwotICAgIFNvdXBBdXRoKiBhdXRoOwot
ICAgIFNvdXBTZXNzaW9uKiBzZXNzaW9uOwotICAgIEd0a1dpZGdldCogbG9naW5FbnRyeTsKLSAg
ICBHdGtXaWRnZXQqIHBhc3N3b3JkRW50cnk7Ci0jaWYgVVNFKEdOT01FS0VZUklORykKLSAgICBH
dGtXaWRnZXQqIGNoZWNrQnV0dG9uOwotI2VuZGlmCi19IFdlYktpdEF1dGhEYXRhOwotCi1zdGF0
aWMgdm9pZCBmcmVlX2F1dGhEYXRhKFdlYktpdEF1dGhEYXRhKiBhdXRoRGF0YSkKLXsKLSAgICBn
X29iamVjdF91bnJlZihhdXRoRGF0YS0+bXNnKTsKLSAgICBnX3NsaWNlX2ZyZWUoV2ViS2l0QXV0
aERhdGEsIGF1dGhEYXRhKTsKLX0KLQotI2lmIFVTRShHTk9NRUtFWVJJTkcpCi1zdGF0aWMgdm9p
ZCBzZXRfcGFzc3dvcmRfY2FsbGJhY2soR25vbWVLZXlyaW5nUmVzdWx0IHJlc3VsdCwgZ3VpbnQz
MiB2YWwsIGdwb2ludGVyIHVzZXJfZGF0YSkKLXsKLSAgICAvKiBEdW1teSBjYWxsYmFjaywgZ25v
bWVfa2V5cmluZ19zZXRfbmV0d29ya19wYXNzd29yZCBkb2VzIG5vdCBhY2NlcHQgYSBOVUxMIG9u
ZSAqLwotfQotI2VuZGlmCi0KLXN0YXRpYyB2b2lkIHJlc3BvbnNlX2NhbGxiYWNrKEd0a0RpYWxv
ZyogZGlhbG9nLCBnaW50IHJlc3BvbnNlX2lkLCBXZWJLaXRBdXRoRGF0YSogYXV0aERhdGEpCi17
Ci0gICAgY29uc3QgY2hhciogbG9naW47Ci0gICAgY29uc3QgY2hhciogcGFzc3dvcmQ7Ci0jaWYg
VVNFKEdOT01FS0VZUklORykKLSAgICBTb3VwVVJJKiB1cmk7Ci0gICAgZ2Jvb2xlYW4gc3RvcmVQ
YXNzd29yZDsKLSNlbmRpZgotCi0gICAgc3dpdGNoKHJlc3BvbnNlX2lkKSB7Ci0gICAgY2FzZSBH
VEtfUkVTUE9OU0VfQUNDRVBUOgotICAgICAgICBsb2dpbiA9IGd0a19lbnRyeV9nZXRfdGV4dChH
VEtfRU5UUlkoYXV0aERhdGEtPmxvZ2luRW50cnkpKTsKLSAgICAgICAgcGFzc3dvcmQgPSBndGtf
ZW50cnlfZ2V0X3RleHQoR1RLX0VOVFJZKGF1dGhEYXRhLT5wYXNzd29yZEVudHJ5KSk7Ci0gICAg
ICAgIHNvdXBfYXV0aF9hdXRoZW50aWNhdGUoYXV0aERhdGEtPmF1dGgsIGxvZ2luLCBwYXNzd29y
ZCk7Ci0KLSNpZiBVU0UoR05PTUVLRVlSSU5HKQotICAgICAgICBzdG9yZVBhc3N3b3JkID0gZ3Rr
X3RvZ2dsZV9idXR0b25fZ2V0X2FjdGl2ZShHVEtfVE9HR0xFX0JVVFRPTihhdXRoRGF0YS0+Y2hl
Y2tCdXR0b24pKTsKLSAgICAgICAgaWYgKHN0b3JlUGFzc3dvcmQpIHsKLSAgICAgICAgICAgIHVy
aSA9IHNvdXBfbWVzc2FnZV9nZXRfdXJpKGF1dGhEYXRhLT5tc2cpOwotICAgICAgICAgICAgZ25v
bWVfa2V5cmluZ19zZXRfbmV0d29ya19wYXNzd29yZChOVUxMLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dpbiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cF9hdXRoX2dldF9yZWFsbShhdXRoRGF0YS0+
YXV0aCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVy
aS0+aG9zdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
TlVMTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJp
LT5zY2hlbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNvdXBfYXV0aF9nZXRfc2NoZW1lX25hbWUoYXV0aERhdGEtPmF1dGgpLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmktPnBvcnQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3N3b3JkLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoR25vbWVLZXlyaW5nT3BlcmF0
aW9uR2V0SW50Q2FsbGJhY2spc2V0X3Bhc3N3b3JkX2NhbGxiYWNrLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKLSAgICAgICAgfQotI2VuZGlmCi0g
ICAgZGVmYXVsdDoKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgc291cF9zZXNzaW9uX3Vu
cGF1c2VfbWVzc2FnZShhdXRoRGF0YS0+c2Vzc2lvbiwgYXV0aERhdGEtPm1zZyk7Ci0gICAgZnJl
ZV9hdXRoRGF0YShhdXRoRGF0YSk7Ci0gICAgZ3RrX3dpZGdldF9kZXN0cm95KEdUS19XSURHRVQo
ZGlhbG9nKSk7Ci19Ci0KLXN0YXRpYyB2b2lkIHNob3dfYXV0aF9kaWFsb2coV2ViS2l0QXV0aERh
dGEqIGF1dGhEYXRhLCBjb25zdCBjaGFyKiBsb2dpbiwgY29uc3QgY2hhciogcGFzc3dvcmQpCi17
Ci0gICAgLyogTWltaWMgdGhlIFVJIGZyb20gR2Vja28sIEVtYmVkUHJvbXB0ZXIuY3BwLCBMR1BM
IGxpY2Vuc2UgKi8KLSAgICBHdGtXaWRnZXQqIGRpYWxvZzsKLSAgICBkaWFsb2cgPSBndGtfZGlh
bG9nX25ld193aXRoX2J1dHRvbnMoIiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIE5VTEwsIC8vIEZJWE1FOiBob3cgdG8gZ2V0IHRoZSBjdXJyZW50IHRvcGxldmVs
IGZyb20gaGVyZT8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1RL
X0RJQUxPR19ERVNUUk9ZX1dJVEhfUEFSRU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHVEtfU1RPQ0tfQ0FOQ0VMLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHVEtfUkVTUE9OU0VfUkVKRUNULAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHVEtfU1RPQ0tfT0ssCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdUS19SRVNQT05TRV9BQ0NFUFQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOwotICAgIGd0a193aW5kb3dfc2V0X2Rl
ZmF1bHRfc2l6ZShHVEtfV0lORE9XKGRpYWxvZyksIDEwMCwgNTApOwotICAgIGd0a19kaWFsb2df
c2V0X2RlZmF1bHRfcmVzcG9uc2UoR1RLX0RJQUxPRyhkaWFsb2cpLCBHVEtfUkVTUE9OU0VfQUND
RVBUKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgLyog
TWFpbiBoYm94IGZvciBpY29uIGFuZCBjb250cm9scyAqLwotICAgIEd0a1dpZGdldCogbWFpbkhC
b3ggPSBndGtfaGJveF9uZXcoRkFMU0UsIDEyKTsKLSAgICBndGtfY29udGFpbmVyX3NldF9ib3Jk
ZXJfd2lkdGgoR1RLX0NPTlRBSU5FUihkaWFsb2cpLCA2KTsKLSAgICBndGtfZGlhbG9nX3NldF9o
YXNfc2VwYXJhdG9yKEdUS19ESUFMT0coZGlhbG9nKSwgRkFMU0UpOwotICAgIAotICAgIEd0a1dp
ZGdldCogY29udGVudEFyZWEgPSBndGtfZGlhbG9nX2dldF9jb250ZW50X2FyZWEoR1RLX0RJQUxP
RyhkaWFsb2cpKTsKLSAgICBndGtfYm94X3NldF9zcGFjaW5nKEdUS19CT1goY29udGVudEFyZWEp
LCAxMik7Ci0gICAgZ3RrX2NvbnRhaW5lcl9zZXRfYm9yZGVyX3dpZHRoKEdUS19DT05UQUlORVIo
bWFpbkhCb3gpLCAxMik7Ci0gICAgLyogVkJveCBmb3IgbGFiZWxzIGFuZCBvdGhlciBjb250cm9s
cyAqLwotICAgIEd0a1dpZGdldCogY29udGVudHNWQm94ID0gZ3RrX3Zib3hfbmV3KEZBTFNFLCAx
Mik7Ci0gICAgR3RrV2lkZ2V0KiBpY29uID0gZ3RrX2ltYWdlX25ld19mcm9tX3N0b2NrKEdUS19T
VE9DS19ESUFMT0dfQVVUSEVOVElDQVRJT04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdUS19JQ09OX1NJWkVfRElBTE9HKTsKLSAgICBndGtfbWlzY19z
ZXRfYWxpZ25tZW50KEdUS19NSVNDKGljb24pLCAwLjUsIDAuMCk7Ci0gICAgZ3RrX2JveF9wYWNr
X3N0YXJ0KEdUS19CT1gobWFpbkhCb3gpLCBpY29uLCBGQUxTRSwgRkFMU0UsIDApOwotCi0gICAg
LyogUGFjayB0aGUgbWVzc2FnZSBsYWJlbCBpbnRvIHRoZSBWQm94ICovCi0gICAgU291cFVSSSog
dXJpID0gc291cF9tZXNzYWdlX2dldF91cmkoYXV0aERhdGEtPm1zZyk7Ci0gICAgY2hhciogbWVz
c2FnZSA9IGdfc3RyZHVwX3ByaW50ZigiQSB1c2VybmFtZSBhbmQgcGFzc3dvcmQgYXJlIGJlaW5n
IHJlcXVlc3RlZCBieSAlcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
cmktPmhvc3QpOwotICAgIEd0a1dpZGdldCogbGFiZWwgPSBndGtfbGFiZWxfbmV3KG1lc3NhZ2Up
OwotICAgIGdfZnJlZShtZXNzYWdlKTsKLSAgICBndGtfbGFiZWxfc2V0X2xpbmVfd3JhcChHVEtf
TEFCRUwobGFiZWwpLCBUUlVFKTsKLSAgICBndGtfbGFiZWxfc2V0X3NlbGVjdGFibGUoR1RLX0xB
QkVMKGxhYmVsKSwgVFJVRSk7Ci0gICAgZ3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1goY29udGVu
dHNWQm94KSwgbGFiZWwsIEZBTFNFLCBGQUxTRSwgMCk7Ci0KLSAgICAvKiBMb2dpbi9QYXNzd29y
ZCBlbnRyaWVzICovCi0gICAgR3RrV2lkZ2V0KiB1c2VyUGFzc0hCb3ggPSBndGtfaGJveF9uZXco
RkFMU0UsIDEyKTsKLSAgICBHdGtXaWRnZXQqIHVzZXJQYXNzTGFiZWxzID0gZ3RrX3Zib3hfbmV3
KFRSVUUsIDYpOwotICAgIEd0a1dpZGdldCogdXNlclBhc3NGaWVsZHMgPSBndGtfdmJveF9uZXco
VFJVRSwgNik7Ci0KLSAgICBHdGtXaWRnZXQqIHVzZXJMYWJlbCA9IGd0a19sYWJlbF9uZXcoIlVz
ZXIgTmFtZToiKTsKLSAgICBndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWCh1c2VyUGFzc0xhYmVs
cyksIHVzZXJMYWJlbCwgRkFMU0UsIDAsIDApOwotICAgIEd0a1dpZGdldCogbG9naW5FbnRyeSA9
IGd0a19lbnRyeV9uZXcoKTsKLSAgICBpZiAobG9naW4pCi0gICAgICAgIGd0a19lbnRyeV9zZXRf
dGV4dChHVEtfRU5UUlkobG9naW5FbnRyeSksIGxvZ2luKTsKLSAgICBndGtfZW50cnlfc2V0X2Fj
dGl2YXRlc19kZWZhdWx0KEdUS19FTlRSWShsb2dpbkVudHJ5KSwgVFJVRSk7Ci0gICAgZ3RrX2Jv
eF9wYWNrX3N0YXJ0KEdUS19CT1godXNlclBhc3NGaWVsZHMpLCBsb2dpbkVudHJ5LCBGQUxTRSwg
MCwgMCk7Ci0KLSAgICBHdGtXaWRnZXQqIHBhc3N3b3JkTGFiZWwgPSBndGtfbGFiZWxfbmV3KCJQ
YXNzd29yZDoiKTsKLSAgICBndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWCh1c2VyUGFzc0xhYmVs
cyksIHBhc3N3b3JkTGFiZWwsIEZBTFNFLCAwLCAwKTsKLSAgICBHdGtXaWRnZXQqIHBhc3N3b3Jk
RW50cnkgPSBndGtfZW50cnlfbmV3KCk7Ci0gICAgaWYgKHBhc3N3b3JkKQotICAgICAgICBndGtf
ZW50cnlfc2V0X3RleHQoR1RLX0VOVFJZKHBhc3N3b3JkRW50cnkpLCBwYXNzd29yZCk7Ci0gICAg
Z3RrX2VudHJ5X3NldF92aXNpYmlsaXR5KEdUS19FTlRSWShwYXNzd29yZEVudHJ5KSwgRkFMU0Up
OwotICAgIGd0a19lbnRyeV9zZXRfYWN0aXZhdGVzX2RlZmF1bHQoR1RLX0VOVFJZKHBhc3N3b3Jk
RW50cnkpLCBUUlVFKTsKLSAgICBndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWCh1c2VyUGFzc0Zp
ZWxkcyksIHBhc3N3b3JkRW50cnksIEZBTFNFLCAwLCAwKTsKLQotICAgIGd0a19ib3hfcGFja19z
dGFydChHVEtfQk9YKHVzZXJQYXNzSEJveCksIHVzZXJQYXNzTGFiZWxzLCBGQUxTRSwgMCwgMCk7
Ci0gICAgZ3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1godXNlclBhc3NIQm94KSwgdXNlclBhc3NG
aWVsZHMsIEZBTFNFLCAwLCAwKTsKLSAgICBndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWChjb250
ZW50c1ZCb3gpLCB1c2VyUGFzc0hCb3gsIEZBTFNFLCAwLCAwKTsKLQotI2lmIFVTRShHTk9NRUtF
WVJJTkcpCi0gICAgLyogQ2hlY2tidXR0b24gKi8KLSAgICBHdGtXaWRnZXQqIGNoZWNrQnV0dG9u
ID0gZ3RrX2NoZWNrX2J1dHRvbl9uZXdfd2l0aF9sYWJlbCgiUmVtZW1iZXIgcGFzc3dvcmQiKTsK
LSAgICBpZiAobG9naW4gJiYgcGFzc3dvcmQpCi0gICAgICAgIGd0a190b2dnbGVfYnV0dG9uX3Nl
dF9hY3RpdmUoR1RLX1RPR0dMRV9CVVRUT04oY2hlY2tCdXR0b24pLCBUUlVFKTsKLSAgICBndGtf
bGFiZWxfc2V0X2xpbmVfd3JhcChHVEtfTEFCRUwoZ3RrX2Jpbl9nZXRfY2hpbGQoR1RLX0JJTihj
aGVja0J1dHRvbikpKSwgVFJVRSk7Ci0gICAgZ3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1goY29u
dGVudHNWQm94KSwgY2hlY2tCdXR0b24sIEZBTFNFLCAwLCAwKTsKLSNlbmRpZgotCi0gICAgLyog
UGFjayBhbmQgZ28gKi8KLSAgICBndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWChtYWluSEJveCks
IGNvbnRlbnRzVkJveCwgRkFMU0UsIDAsIDApOwotICAgIGd0a19ib3hfcGFja19zdGFydChHVEtf
Qk9YKGNvbnRlbnRBcmVhKSwgbWFpbkhCb3gsIEZBTFNFLCAwLCAwKTsKLQotICAgIGF1dGhEYXRh
LT5sb2dpbkVudHJ5ID0gbG9naW5FbnRyeTsKLSAgICBhdXRoRGF0YS0+cGFzc3dvcmRFbnRyeSA9
IHBhc3N3b3JkRW50cnk7Ci0jaWYgVVNFKEdOT01FS0VZUklORykKLSAgICBhdXRoRGF0YS0+Y2hl
Y2tCdXR0b24gPSBjaGVja0J1dHRvbjsKLSNlbmRpZgotCi0gICAgZ19zaWduYWxfY29ubmVjdChk
aWFsb2csICJyZXNwb25zZSIsIEdfQ0FMTEJBQ0socmVzcG9uc2VfY2FsbGJhY2spLCBhdXRoRGF0
YSk7Ci0gICAgZ3RrX3dpZGdldF9zaG93X2FsbChkaWFsb2cpOwotfQotCi0jaWYgVVNFKEdOT01F
S0VZUklORykKLXN0YXRpYyB2b2lkIGZpbmRfcGFzc3dvcmRfY2FsbGJhY2soR25vbWVLZXlyaW5n
UmVzdWx0IHJlc3VsdCwgR0xpc3QqIGxpc3QsIFdlYktpdEF1dGhEYXRhKiBhdXRoRGF0YSkKLXsK
LSAgICBHTGlzdCogcDsKLSAgICBjb25zdCBjaGFyKiBsb2dpbiA9IE5VTEw7Ci0gICAgY29uc3Qg
Y2hhciogcGFzc3dvcmQgPSBOVUxMOwotCi0gICAgZm9yIChwID0gbGlzdDsgcDsgcCA9IHAtPm5l
eHQpIHsKLSAgICAgICAgLyogRklYTUU6IHN1cHBvcnQgbXVsdGlwbGUgbG9naW5zL3Bhc3N3b3Jk
cyA/ICovCi0gICAgICAgIEdub21lS2V5cmluZ05ldHdvcmtQYXNzd29yZERhdGEqIGRhdGEgPSAo
R25vbWVLZXlyaW5nTmV0d29ya1Bhc3N3b3JkRGF0YSopcC0+ZGF0YTsKLSAgICAgICAgbG9naW4g
PSBkYXRhLT51c2VyOwotICAgICAgICBwYXNzd29yZCA9IGRhdGEtPnBhc3N3b3JkOwotICAgICAg
ICBicmVhazsKLSAgICB9Ci0KLSAgICBzaG93X2F1dGhfZGlhbG9nKGF1dGhEYXRhLCBsb2dpbiwg
cGFzc3dvcmQpOwotfQotI2VuZGlmCi0KLXN0YXRpYyB2b2lkIHNlc3Npb25fYXV0aGVudGljYXRl
KFNvdXBTZXNzaW9uKiBzZXNzaW9uLCBTb3VwTWVzc2FnZSogbXNnLCBTb3VwQXV0aCogYXV0aCwg
Z2Jvb2xlYW4gcmV0cnlpbmcpCi17Ci0gICAgU291cFVSSSogdXJpOwotICAgIFdlYktpdEF1dGhE
YXRhKiBhdXRoRGF0YTsKLQotICAgIHNvdXBfc2Vzc2lvbl9wYXVzZV9tZXNzYWdlKHNlc3Npb24s
IG1zZyk7Ci0gICAgLyogV2UgbmVlZCB0byBtYWtlIHN1cmUgdGhlIG1lc3NhZ2Ugc3RpY2tzIGFy
b3VuZCB3aGVuIHBhdXNpbmcgaXQgKi8KLSAgICBnX29iamVjdF9yZWYobXNnKTsKLSAgICAgICAg
Ci0gICAgdXJpID0gc291cF9tZXNzYWdlX2dldF91cmkobXNnKTsKLSAgICBhdXRoRGF0YSA9IGdf
c2xpY2VfbmV3KFdlYktpdEF1dGhEYXRhKTsKLSAgICBhdXRoRGF0YS0+bXNnID0gbXNnOwotICAg
IGF1dGhEYXRhLT5hdXRoID0gYXV0aDsKLSAgICBhdXRoRGF0YS0+c2Vzc2lvbiA9IHNlc3Npb247
Ci0KLSAgICAvKiAKLSAgICAgKiBJZiB3ZSBoYXZlIGdub21lLWtleXJpbmcgbGV0J3MgdHJ5IHRv
IGZpbmQgdGhlIHBhc3N3b3JkIGZpcnN0IGluIHRoZSByaW5nLgotICAgICAqIE90aGVyd2lzZSBq
dXN0IHNob3cgdGhlIGRpYWxvZyBzdHJhaWdodCBhd2F5Ci0gICAgICovCi0jaWYgVVNFKEdOT01F
S0VZUklORykKLSAgICBnbm9tZV9rZXlyaW5nX2ZpbmRfbmV0d29ya19wYXNzd29yZChOVUxMLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXBfYXV0aF9nZXRfcmVh
bG0oYXV0aCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJpLT5o
b3N0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJpLT5zY2hlbWUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cF9hdXRoX2dldF9zY2hlbWVfbmFt
ZShhdXRoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmktPnBv
cnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEdub21lS2V5cmlu
Z09wZXJhdGlvbkdldExpc3RDYWxsYmFjaylmaW5kX3Bhc3N3b3JkX2NhbGxiYWNrLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dGhEYXRhLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOwotI2Vsc2UKLSAgICBzaG93X2F1dGhf
ZGlhbG9nKGF1dGhEYXRhLCBOVUxMLCBOVUxMKTsKLSNlbmRpZgotfQotCi1zdGF0aWMgdm9pZCBh
dHRhY2goU291cFNlc3Npb25GZWF0dXJlICptYW5hZ2VyLCBTb3VwU2Vzc2lvbiAqc2Vzc2lvbikK
LXsKLSAgICBnX3NpZ25hbF9jb25uZWN0KHNlc3Npb24sICJhdXRoZW50aWNhdGUiLCBHX0NBTExC
QUNLKHNlc3Npb25fYXV0aGVudGljYXRlKSwgTlVMTCk7Ci19Ci0KLXN0YXRpYyB2b2lkIGRldGFj
aChTb3VwU2Vzc2lvbkZlYXR1cmUgKm1hbmFnZXIsIFNvdXBTZXNzaW9uICpzZXNzaW9uKQotewot
ICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVuYyhzZXNzaW9uLCBzZXNzaW9u
X2F1dGhlbnRpY2F0ZSwgTlVMTCk7Ci19Ci0KLQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvd2Via2l0LXNvdXAtYXV0aC1kaWFsb2cuY3BwIGIvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvd2Via2l0LXNvdXAtYXV0aC1kaWFsb2cuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY4ODI2YzcKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC93ZWJraXQtc291cC1hdXRoLWRpYWxvZy5jcHAKQEAg
LTAsMCArMSwyODggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgSWdhbGlhIFMuTC4sIEF1
dGhvcjogWGFuIExvcGV6IDx4bG9wZXpAaWdhbGlhLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwor
ICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK
KyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoK
KyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhl
IGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICog
Qm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
CisjaW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRl
ICJQYWdlLmgiCisjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKKyNpbmNsdWRlICJSZXNvdXJj
ZUhhbmRsZUludGVybmFsLmgiCisKKyNpbmNsdWRlIDxndGsvZ3RrLmg+CisjaW5jbHVkZSA8bGli
c291cC9zb3VwLmg+CisjaWYgVVNFKEdOT01FS0VZUklORykKKyNpbmNsdWRlIDxnbm9tZS1rZXly
aW5nLmg+CisjZW5kaWYKKworI2luY2x1ZGUgIndlYmtpdC1zb3VwLWF1dGgtZGlhbG9nLmgiCisK
K3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitzdGF0aWMgdm9pZCB3ZWJraXRfc291cF9hdXRo
X2RpYWxvZ19zZXNzaW9uX2ZlYXR1cmVfaW5pdChTb3VwU2Vzc2lvbkZlYXR1cmVJbnRlcmZhY2Uq
IGZlYXR1cmVfaW50ZXJmYWNlLCBncG9pbnRlciBpbnRlcmZhY2VfZGF0YSk7CitzdGF0aWMgdm9p
ZCBhdHRhY2goU291cFNlc3Npb25GZWF0dXJlICptYW5hZ2VyLCBTb3VwU2Vzc2lvbiAqc2Vzc2lv
bik7CitzdGF0aWMgdm9pZCBkZXRhY2goU291cFNlc3Npb25GZWF0dXJlICptYW5hZ2VyLCBTb3Vw
U2Vzc2lvbiAqc2Vzc2lvbik7CisKK0dfREVGSU5FX1RZUEVfV0lUSF9DT0RFKFdlYktpdFNvdXBB
dXRoRGlhbG9nLCB3ZWJraXRfc291cF9hdXRoX2RpYWxvZywgR19UWVBFX09CSkVDVCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIEdfSU1QTEVNRU5UX0lOVEVSRkFDRShTT1VQX1RZUEVfU0VTU0lP
Tl9GRUFUVVJFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHdlYmtpdF9zb3VwX2F1dGhfZGlhbG9nX3Nlc3Npb25fZmVhdHVyZV9pbml0KSkKKworc3RhdGlj
IHZvaWQgd2Via2l0X3NvdXBfYXV0aF9kaWFsb2dfY2xhc3NfaW5pdChXZWJLaXRTb3VwQXV0aERp
YWxvZ0NsYXNzICprbGFzcykKK3sKK30KKworc3RhdGljIHZvaWQgd2Via2l0X3NvdXBfYXV0aF9k
aWFsb2dfaW5pdChXZWJLaXRTb3VwQXV0aERpYWxvZyogaW5zdGFuY2UpCit7Cit9CisKK3N0YXRp
YyB2b2lkIHdlYmtpdF9zb3VwX2F1dGhfZGlhbG9nX3Nlc3Npb25fZmVhdHVyZV9pbml0KFNvdXBT
ZXNzaW9uRmVhdHVyZUludGVyZmFjZSAqZmVhdHVyZV9pbnRlcmZhY2UsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncG9pbnRlciBpbnRl
cmZhY2VfZGF0YSkKK3sKKyAgICBmZWF0dXJlX2ludGVyZmFjZS0+YXR0YWNoID0gYXR0YWNoOwor
ICAgIGZlYXR1cmVfaW50ZXJmYWNlLT5kZXRhY2ggPSBkZXRhY2g7Cit9CisKK3R5cGVkZWYgc3Ry
dWN0IF9XZWJLaXRBdXRoRGF0YSB7CisgICAgU291cE1lc3NhZ2UqIG1zZzsKKyAgICBTb3VwQXV0
aCogYXV0aDsKKyAgICBTb3VwU2Vzc2lvbiogc2Vzc2lvbjsKKyAgICBHdGtXaWRnZXQqIGxvZ2lu
RW50cnk7CisgICAgR3RrV2lkZ2V0KiBwYXNzd29yZEVudHJ5OworI2lmIFVTRShHTk9NRUtFWVJJ
TkcpCisgICAgR3RrV2lkZ2V0KiBjaGVja0J1dHRvbjsKKyNlbmRpZgorICAgIEd0a1dpZGdldCog
dG9wTGV2ZWw7Cit9IFdlYktpdEF1dGhEYXRhOworCitzdGF0aWMgdm9pZCBmcmVlX2F1dGhEYXRh
KFdlYktpdEF1dGhEYXRhKiBhdXRoRGF0YSkKK3sKKyAgICBnX29iamVjdF91bnJlZihhdXRoRGF0
YS0+bXNnKTsKKyAgICBnX3NsaWNlX2ZyZWUoV2ViS2l0QXV0aERhdGEsIGF1dGhEYXRhKTsKK30K
KworI2lmIFVTRShHTk9NRUtFWVJJTkcpCitzdGF0aWMgdm9pZCBzZXRfcGFzc3dvcmRfY2FsbGJh
Y2soR25vbWVLZXlyaW5nUmVzdWx0IHJlc3VsdCwgZ3VpbnQzMiB2YWwsIGdwb2ludGVyIHVzZXJf
ZGF0YSkKK3sKKyAgICAvKiBEdW1teSBjYWxsYmFjaywgZ25vbWVfa2V5cmluZ19zZXRfbmV0d29y
a19wYXNzd29yZCBkb2VzIG5vdCBhY2NlcHQgYSBOVUxMIG9uZSAqLworfQorI2VuZGlmCisKK3N0
YXRpYyB2b2lkIHJlc3BvbnNlX2NhbGxiYWNrKEd0a0RpYWxvZyogZGlhbG9nLCBnaW50IHJlc3Bv
bnNlX2lkLCBXZWJLaXRBdXRoRGF0YSogYXV0aERhdGEpCit7CisgICAgY29uc3QgY2hhciogbG9n
aW47CisgICAgY29uc3QgY2hhciogcGFzc3dvcmQ7CisjaWYgVVNFKEdOT01FS0VZUklORykKKyAg
ICBTb3VwVVJJKiB1cmk7CisgICAgZ2Jvb2xlYW4gc3RvcmVQYXNzd29yZDsKKyNlbmRpZgorCisg
ICAgc3dpdGNoKHJlc3BvbnNlX2lkKSB7CisgICAgY2FzZSBHVEtfUkVTUE9OU0VfQUNDRVBUOgor
ICAgICAgICBsb2dpbiA9IGd0a19lbnRyeV9nZXRfdGV4dChHVEtfRU5UUlkoYXV0aERhdGEtPmxv
Z2luRW50cnkpKTsKKyAgICAgICAgcGFzc3dvcmQgPSBndGtfZW50cnlfZ2V0X3RleHQoR1RLX0VO
VFJZKGF1dGhEYXRhLT5wYXNzd29yZEVudHJ5KSk7CisgICAgICAgIHNvdXBfYXV0aF9hdXRoZW50
aWNhdGUoYXV0aERhdGEtPmF1dGgsIGxvZ2luLCBwYXNzd29yZCk7CisKKyNpZiBVU0UoR05PTUVL
RVlSSU5HKQorICAgICAgICBzdG9yZVBhc3N3b3JkID0gZ3RrX3RvZ2dsZV9idXR0b25fZ2V0X2Fj
dGl2ZShHVEtfVE9HR0xFX0JVVFRPTihhdXRoRGF0YS0+Y2hlY2tCdXR0b24pKTsKKyAgICAgICAg
aWYgKHN0b3JlUGFzc3dvcmQpIHsKKyAgICAgICAgICAgIHVyaSA9IHNvdXBfbWVzc2FnZV9nZXRf
dXJpKGF1dGhEYXRhLT5tc2cpOworICAgICAgICAgICAgZ25vbWVfa2V5cmluZ19zZXRfbmV0d29y
a19wYXNzd29yZChOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBsb2dpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc291cF9hdXRoX2dldF9yZWFsbShhdXRoRGF0YS0+YXV0aCksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVyaS0+aG9zdCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJpLT5zY2hlbWUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXBfYXV0aF9nZXRfc2NoZW1l
X25hbWUoYXV0aERhdGEtPmF1dGgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB1cmktPnBvcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHBhc3N3b3JkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAoR25vbWVLZXlyaW5nT3BlcmF0aW9uR2V0SW50Q2FsbGJhY2spc2V0
X3Bhc3N3b3JkX2NhbGxiYWNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBOVUxMKTsKKyAgICAgICAgfQorI2VuZGlmCisgICAgZGVmYXVsdDoKKyAgICAgICAg
YnJlYWs7CisgICAgfQorCisgICAgc291cF9zZXNzaW9uX3VucGF1c2VfbWVzc2FnZShhdXRoRGF0
YS0+c2Vzc2lvbiwgYXV0aERhdGEtPm1zZyk7CisgICAgZnJlZV9hdXRoRGF0YShhdXRoRGF0YSk7
CisgICAgZ3RrX3dpZGdldF9kZXN0cm95KEdUS19XSURHRVQoZGlhbG9nKSk7Cit9CisKK3N0YXRp
YyB2b2lkIHNob3dfYXV0aF9kaWFsb2coV2ViS2l0QXV0aERhdGEqIGF1dGhEYXRhLCBjb25zdCBj
aGFyKiBsb2dpbiwgY29uc3QgY2hhciogcGFzc3dvcmQpCit7CisgICAgLyogTWltaWMgdGhlIFVJ
IGZyb20gR2Vja28sIEVtYmVkUHJvbXB0ZXIuY3BwLCBMR1BMIGxpY2Vuc2UgKi8KKyAgICBHdGtX
aWRnZXQqIGRpYWxvZzsKKyAgICBkaWFsb2cgPSBndGtfZGlhbG9nX25ld193aXRoX2J1dHRvbnMo
IiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdUS19XSU5ET1co
YXV0aERhdGEtPnRvcExldmVsKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR1RLX0RJQUxPR19ERVNUUk9ZX1dJVEhfUEFSRU5ULAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHVEtfU1RPQ0tfQ0FOQ0VMLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHVEtfUkVTUE9OU0VfUkVKRUNULAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVEtfU1RPQ0tfT0ssCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdUS19SRVNQT05TRV9BQ0NFUFQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworICAgIGd0a193aW5k
b3dfc2V0X2RlZmF1bHRfc2l6ZShHVEtfV0lORE9XKGRpYWxvZyksIDEwMCwgNTApOworICAgIGd0
a19kaWFsb2dfc2V0X2RlZmF1bHRfcmVzcG9uc2UoR1RLX0RJQUxPRyhkaWFsb2cpLCBHVEtfUkVT
UE9OU0VfQUNDRVBUKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
CisgICAgLyogTWFpbiBoYm94IGZvciBpY29uIGFuZCBjb250cm9scyAqLworICAgIEd0a1dpZGdl
dCogbWFpbkhCb3ggPSBndGtfaGJveF9uZXcoRkFMU0UsIDEyKTsKKyAgICBndGtfY29udGFpbmVy
X3NldF9ib3JkZXJfd2lkdGgoR1RLX0NPTlRBSU5FUihkaWFsb2cpLCA2KTsKKyAgICBndGtfZGlh
bG9nX3NldF9oYXNfc2VwYXJhdG9yKEdUS19ESUFMT0coZGlhbG9nKSwgRkFMU0UpOworICAgIAor
ICAgIEd0a1dpZGdldCogY29udGVudEFyZWEgPSBndGtfZGlhbG9nX2dldF9jb250ZW50X2FyZWEo
R1RLX0RJQUxPRyhkaWFsb2cpKTsKKyAgICBndGtfYm94X3NldF9zcGFjaW5nKEdUS19CT1goY29u
dGVudEFyZWEpLCAxMik7CisgICAgZ3RrX2NvbnRhaW5lcl9zZXRfYm9yZGVyX3dpZHRoKEdUS19D
T05UQUlORVIobWFpbkhCb3gpLCAxMik7CisgICAgLyogVkJveCBmb3IgbGFiZWxzIGFuZCBvdGhl
ciBjb250cm9scyAqLworICAgIEd0a1dpZGdldCogY29udGVudHNWQm94ID0gZ3RrX3Zib3hfbmV3
KEZBTFNFLCAxMik7CisgICAgR3RrV2lkZ2V0KiBpY29uID0gZ3RrX2ltYWdlX25ld19mcm9tX3N0
b2NrKEdUS19TVE9DS19ESUFMT0dfQVVUSEVOVElDQVRJT04sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdUS19JQ09OX1NJWkVfRElBTE9HKTsKKyAgICBn
dGtfbWlzY19zZXRfYWxpZ25tZW50KEdUS19NSVNDKGljb24pLCAwLjUsIDAuMCk7CisgICAgZ3Rr
X2JveF9wYWNrX3N0YXJ0KEdUS19CT1gobWFpbkhCb3gpLCBpY29uLCBGQUxTRSwgRkFMU0UsIDAp
OworCisgICAgLyogUGFjayB0aGUgbWVzc2FnZSBsYWJlbCBpbnRvIHRoZSBWQm94ICovCisgICAg
U291cFVSSSogdXJpID0gc291cF9tZXNzYWdlX2dldF91cmkoYXV0aERhdGEtPm1zZyk7CisgICAg
Y2hhciogbWVzc2FnZSA9IGdfc3RyZHVwX3ByaW50ZigiQSB1c2VybmFtZSBhbmQgcGFzc3dvcmQg
YXJlIGJlaW5nIHJlcXVlc3RlZCBieSAlcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1cmktPmhvc3QpOworICAgIEd0a1dpZGdldCogbGFiZWwgPSBndGtfbGFiZWxfbmV3
KG1lc3NhZ2UpOworICAgIGdfZnJlZShtZXNzYWdlKTsKKyAgICBndGtfbGFiZWxfc2V0X2xpbmVf
d3JhcChHVEtfTEFCRUwobGFiZWwpLCBUUlVFKTsKKyAgICBndGtfbGFiZWxfc2V0X3NlbGVjdGFi
bGUoR1RLX0xBQkVMKGxhYmVsKSwgVFJVRSk7CisgICAgZ3RrX2JveF9wYWNrX3N0YXJ0KEdUS19C
T1goY29udGVudHNWQm94KSwgbGFiZWwsIEZBTFNFLCBGQUxTRSwgMCk7CisKKyAgICAvKiBMb2dp
bi9QYXNzd29yZCBlbnRyaWVzICovCisgICAgR3RrV2lkZ2V0KiB1c2VyUGFzc0hCb3ggPSBndGtf
aGJveF9uZXcoRkFMU0UsIDEyKTsKKyAgICBHdGtXaWRnZXQqIHVzZXJQYXNzTGFiZWxzID0gZ3Rr
X3Zib3hfbmV3KFRSVUUsIDYpOworICAgIEd0a1dpZGdldCogdXNlclBhc3NGaWVsZHMgPSBndGtf
dmJveF9uZXcoVFJVRSwgNik7CisKKyAgICBHdGtXaWRnZXQqIHVzZXJMYWJlbCA9IGd0a19sYWJl
bF9uZXcoIlVzZXIgTmFtZToiKTsKKyAgICBndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWCh1c2Vy
UGFzc0xhYmVscyksIHVzZXJMYWJlbCwgRkFMU0UsIDAsIDApOworICAgIEd0a1dpZGdldCogbG9n
aW5FbnRyeSA9IGd0a19lbnRyeV9uZXcoKTsKKyAgICBpZiAobG9naW4pCisgICAgICAgIGd0a19l
bnRyeV9zZXRfdGV4dChHVEtfRU5UUlkobG9naW5FbnRyeSksIGxvZ2luKTsKKyAgICBndGtfZW50
cnlfc2V0X2FjdGl2YXRlc19kZWZhdWx0KEdUS19FTlRSWShsb2dpbkVudHJ5KSwgVFJVRSk7Cisg
ICAgZ3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1godXNlclBhc3NGaWVsZHMpLCBsb2dpbkVudHJ5
LCBGQUxTRSwgMCwgMCk7CisKKyAgICBHdGtXaWRnZXQqIHBhc3N3b3JkTGFiZWwgPSBndGtfbGFi
ZWxfbmV3KCJQYXNzd29yZDoiKTsKKyAgICBndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWCh1c2Vy
UGFzc0xhYmVscyksIHBhc3N3b3JkTGFiZWwsIEZBTFNFLCAwLCAwKTsKKyAgICBHdGtXaWRnZXQq
IHBhc3N3b3JkRW50cnkgPSBndGtfZW50cnlfbmV3KCk7CisgICAgaWYgKHBhc3N3b3JkKQorICAg
ICAgICBndGtfZW50cnlfc2V0X3RleHQoR1RLX0VOVFJZKHBhc3N3b3JkRW50cnkpLCBwYXNzd29y
ZCk7CisgICAgZ3RrX2VudHJ5X3NldF92aXNpYmlsaXR5KEdUS19FTlRSWShwYXNzd29yZEVudHJ5
KSwgRkFMU0UpOworICAgIGd0a19lbnRyeV9zZXRfYWN0aXZhdGVzX2RlZmF1bHQoR1RLX0VOVFJZ
KHBhc3N3b3JkRW50cnkpLCBUUlVFKTsKKyAgICBndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWCh1
c2VyUGFzc0ZpZWxkcyksIHBhc3N3b3JkRW50cnksIEZBTFNFLCAwLCAwKTsKKworICAgIGd0a19i
b3hfcGFja19zdGFydChHVEtfQk9YKHVzZXJQYXNzSEJveCksIHVzZXJQYXNzTGFiZWxzLCBGQUxT
RSwgMCwgMCk7CisgICAgZ3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1godXNlclBhc3NIQm94KSwg
dXNlclBhc3NGaWVsZHMsIEZBTFNFLCAwLCAwKTsKKyAgICBndGtfYm94X3BhY2tfc3RhcnQoR1RL
X0JPWChjb250ZW50c1ZCb3gpLCB1c2VyUGFzc0hCb3gsIEZBTFNFLCAwLCAwKTsKKworI2lmIFVT
RShHTk9NRUtFWVJJTkcpCisgICAgLyogQ2hlY2tidXR0b24gKi8KKyAgICBHdGtXaWRnZXQqIGNo
ZWNrQnV0dG9uID0gZ3RrX2NoZWNrX2J1dHRvbl9uZXdfd2l0aF9sYWJlbCgiUmVtZW1iZXIgcGFz
c3dvcmQiKTsKKyAgICBpZiAobG9naW4gJiYgcGFzc3dvcmQpCisgICAgICAgIGd0a190b2dnbGVf
YnV0dG9uX3NldF9hY3RpdmUoR1RLX1RPR0dMRV9CVVRUT04oY2hlY2tCdXR0b24pLCBUUlVFKTsK
KyAgICBndGtfbGFiZWxfc2V0X2xpbmVfd3JhcChHVEtfTEFCRUwoZ3RrX2Jpbl9nZXRfY2hpbGQo
R1RLX0JJTihjaGVja0J1dHRvbikpKSwgVFJVRSk7CisgICAgZ3RrX2JveF9wYWNrX3N0YXJ0KEdU
S19CT1goY29udGVudHNWQm94KSwgY2hlY2tCdXR0b24sIEZBTFNFLCAwLCAwKTsKKyNlbmRpZgor
CisgICAgLyogUGFjayBhbmQgZ28gKi8KKyAgICBndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWCht
YWluSEJveCksIGNvbnRlbnRzVkJveCwgRkFMU0UsIDAsIDApOworICAgIGd0a19ib3hfcGFja19z
dGFydChHVEtfQk9YKGNvbnRlbnRBcmVhKSwgbWFpbkhCb3gsIEZBTFNFLCAwLCAwKTsKKworICAg
IGF1dGhEYXRhLT5sb2dpbkVudHJ5ID0gbG9naW5FbnRyeTsKKyAgICBhdXRoRGF0YS0+cGFzc3dv
cmRFbnRyeSA9IHBhc3N3b3JkRW50cnk7CisjaWYgVVNFKEdOT01FS0VZUklORykKKyAgICBhdXRo
RGF0YS0+Y2hlY2tCdXR0b24gPSBjaGVja0J1dHRvbjsKKyNlbmRpZgorCisgICAgZ19zaWduYWxf
Y29ubmVjdChkaWFsb2csICJyZXNwb25zZSIsIEdfQ0FMTEJBQ0socmVzcG9uc2VfY2FsbGJhY2sp
LCBhdXRoRGF0YSk7CisgICAgZ3RrX3dpZGdldF9zaG93X2FsbChkaWFsb2cpOworfQorCisjaWYg
VVNFKEdOT01FS0VZUklORykKK3N0YXRpYyB2b2lkIGZpbmRfcGFzc3dvcmRfY2FsbGJhY2soR25v
bWVLZXlyaW5nUmVzdWx0IHJlc3VsdCwgR0xpc3QqIGxpc3QsIFdlYktpdEF1dGhEYXRhKiBhdXRo
RGF0YSkKK3sKKyAgICBHTGlzdCogcDsKKyAgICBjb25zdCBjaGFyKiBsb2dpbiA9IE5VTEw7Cisg
ICAgY29uc3QgY2hhciogcGFzc3dvcmQgPSBOVUxMOworCisgICAgZm9yIChwID0gbGlzdDsgcDsg
cCA9IHAtPm5leHQpIHsKKyAgICAgICAgLyogRklYTUU6IHN1cHBvcnQgbXVsdGlwbGUgbG9naW5z
L3Bhc3N3b3JkcyA/ICovCisgICAgICAgIEdub21lS2V5cmluZ05ldHdvcmtQYXNzd29yZERhdGEq
IGRhdGEgPSAoR25vbWVLZXlyaW5nTmV0d29ya1Bhc3N3b3JkRGF0YSopcC0+ZGF0YTsKKyAgICAg
ICAgbG9naW4gPSBkYXRhLT51c2VyOworICAgICAgICBwYXNzd29yZCA9IGRhdGEtPnBhc3N3b3Jk
OworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBzaG93X2F1dGhfZGlhbG9nKGF1dGhEYXRh
LCBsb2dpbiwgcGFzc3dvcmQpOworfQorI2VuZGlmCisKK3N0YXRpYyB2b2lkIHNlc3Npb25fYXV0
aGVudGljYXRlKFNvdXBTZXNzaW9uKiBzZXNzaW9uLCBTb3VwTWVzc2FnZSogbXNnLCBTb3VwQXV0
aCogYXV0aCwgZ2Jvb2xlYW4gcmV0cnlpbmcpCit7CisgICAgU291cFVSSSogdXJpOworICAgIFdl
YktpdEF1dGhEYXRhKiBhdXRoRGF0YTsKKworICAgIHNvdXBfc2Vzc2lvbl9wYXVzZV9tZXNzYWdl
KHNlc3Npb24sIG1zZyk7CisgICAgLyogV2UgbmVlZCB0byBtYWtlIHN1cmUgdGhlIG1lc3NhZ2Ug
c3RpY2tzIGFyb3VuZCB3aGVuIHBhdXNpbmcgaXQgKi8KKyAgICBnX29iamVjdF9yZWYobXNnKTsK
KyAgICAgICAgCisgICAgdXJpID0gc291cF9tZXNzYWdlX2dldF91cmkobXNnKTsKKyAgICBhdXRo
RGF0YSA9IGdfc2xpY2VfbmV3KFdlYktpdEF1dGhEYXRhKTsKKyAgICBhdXRoRGF0YS0+bXNnID0g
bXNnOworICAgIGF1dGhEYXRhLT5hdXRoID0gYXV0aDsKKyAgICBhdXRoRGF0YS0+c2Vzc2lvbiA9
IHNlc3Npb247CisgICAgYXV0aERhdGEtPnRvcExldmVsID0gTlVMTDsKKworICAgIFJlc291cmNl
SGFuZGxlKiBoYW5kbGUgPSBzdGF0aWNfY2FzdDxSZXNvdXJjZUhhbmRsZSo+KGdfb2JqZWN0X2dl
dF9kYXRhKEdfT0JKRUNUKG1zZyksICJ3ZWJraXQtcmVzb3VyY2UiKSk7CisgICAgaWYgKGhhbmRs
ZSAmJiBoYW5kbGUtPmdldEludGVybmFsKCktPm1fZnJhbWUpIHsKKyAgICAgICAgR3RrV2lkZ2V0
KiB3aW5kb3cgPSBndGtfd2lkZ2V0X2dldF90b3BsZXZlbChoYW5kbGUtPmdldEludGVybmFsKCkt
Pm1fZnJhbWUtPnBhZ2UoKS0+Y2hyb21lKCktPnBsYXRmb3JtV2luZG93KCkpOworCisgICAgICAg
IGlmIChHVEtfV0lER0VUX1RPUExFVkVMKHdpbmRvdykpCisgICAgICAgICAgICBhdXRoRGF0YS0+
dG9wTGV2ZWwgPSB3aW5kb3c7CisgICAgfQorCisgICAgLyogCisgICAgICogSWYgd2UgaGF2ZSBn
bm9tZS1rZXlyaW5nIGxldCdzIHRyeSB0byBmaW5kIHRoZSBwYXNzd29yZCBmaXJzdCBpbiB0aGUg
cmluZy4KKyAgICAgKiBPdGhlcndpc2UganVzdCBzaG93IHRoZSBkaWFsb2cgc3RyYWlnaHQgYXdh
eQorICAgICAqLworI2lmIFVTRShHTk9NRUtFWVJJTkcpCisgICAgZ25vbWVfa2V5cmluZ19maW5k
X25ldHdvcmtfcGFzc3dvcmQoTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzb3VwX2F1dGhfZ2V0X3JlYWxtKGF1dGgpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVyaS0+aG9zdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVyaS0+c2NoZW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNvdXBfYXV0aF9nZXRfc2NoZW1lX25hbWUoYXV0aCksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdXJpLT5wb3J0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIChHbm9tZUtleXJpbmdPcGVyYXRpb25HZXRMaXN0Q2FsbGJhY2spZmluZF9w
YXNzd29yZF9jYWxsYmFjaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBhdXRoRGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxM
KTsKKyNlbHNlCisgICAgc2hvd19hdXRoX2RpYWxvZyhhdXRoRGF0YSwgTlVMTCwgTlVMTCk7Cisj
ZW5kaWYKK30KKworc3RhdGljIHZvaWQgYXR0YWNoKFNvdXBTZXNzaW9uRmVhdHVyZSAqbWFuYWdl
ciwgU291cFNlc3Npb24gKnNlc3Npb24pCit7CisgICAgZ19zaWduYWxfY29ubmVjdChzZXNzaW9u
LCAiYXV0aGVudGljYXRlIiwgR19DQUxMQkFDSyhzZXNzaW9uX2F1dGhlbnRpY2F0ZSksIE5VTEwp
OworfQorCitzdGF0aWMgdm9pZCBkZXRhY2goU291cFNlc3Npb25GZWF0dXJlICptYW5hZ2VyLCBT
b3VwU2Vzc2lvbiAqc2Vzc2lvbikKK3sKKyAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0
X2J5X2Z1bmMoc2Vzc2lvbiwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oc2Vzc2lvbl9hdXRoZW50
aWNhdGUpLCBOVUxMKTsKK30KLS0gCjEuNi4yLnJjMAoK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>27721</attachid>
            <date>2009-02-17 02:06:11 -0800</date>
            <delta_ts>2009-02-26 07:50:24 -0800</delta_ts>
            <desc>marshal.patch</desc>
            <filename>marshal.patch</filename>
            <type>text/plain</type>
            <size>3761</size>
            <attacher name="Xan Lopez">xan.lopez</attacher>
            
              <data encoding="base64">RnJvbSAzYmIxNzhkM2QxOThmNDhiNWJjYTljODZlZGQ3M2UwNTFiMzU0YzE3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBYYW4gTG9wZXogPHhhbkBnbm9tZS5vcmc+CkRhdGU6IFR1ZSwg
MTcgRmViIDIwMDkgMTE6NDk6NDcgKzAyMDAKU3ViamVjdDogW1BBVENIIDEvMl0gMjAwOS0wMi0x
NyAgWGFuIExvcGV6ICA8eGFuQGdub21lLm9yZz4KCiAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCgogICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjk0NwogICAgICAgIFtHVEtdIE1pc3NpbmcgSFRUUCBBdXRoIGNoYWxsZW5nZQoKICAgICAg
ICBUYWtlIG1hcnNoYWxlcnMgdG8gYmUgYnVpbHQgZnJvbSBhIG1hbnVhbGx5IG1haW50YWluZWQg
bGlzdAogICAgICAgIGluc3RlYWQgb2YgZ3JlcHBpbmcgdGhlIHNvdXJjZXMuCgogICAgICAgIEl0
J3MgbXVjaCBmYXN0ZXIsIGVzcGVjaWFsbHkgc28gbm93IHRoYXQgd2Ugd2FudCB0byBhZGQgbWFy
c2hhbGVycwogICAgICAgIGZyb20gV2ViQ29yZSB0b28uIEEgc3lzdGVtIHRvIG9ubHkgdGFrZSBp
bnRvIGFjY291bnQgdGhlIG1vZGlmaWVkCiAgICAgICAgZmlsZXMgd2hlbiBnZW5lcmF0aW5nIHRo
ZSBtYXJzaGFsZXJzIGZyb20gc291cmNlcyBjb3VsZCBiZSBoYWNrZWQsCiAgICAgICAgYnV0IEkg
dGhpbmsgaXQncyBvdmVya2lsbCBjb25zaWRlcmluZyBob3cgcmFyZWx5IGEgbmV3IG1hcnNoYWxl
cgogICAgICAgIGlzIGFkZGVkLgoKICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgotLS0KIENoYW5n
ZUxvZyAgICAgICAgICAgICAgICAgICAgIHwgICAxOCArKysrKysrKysrKysrKysrKysKIEdOVW1h
a2VmaWxlLmFtICAgICAgICAgICAgICAgIHwgICAxMyArLS0tLS0tLS0tLS0tCiBXZWJLaXQvZ3Rr
L0NoYW5nZUxvZyAgICAgICAgICB8ICAgMTEgKysrKysrKysrKysKIFdlYktpdC9ndGsvd2Via2l0
bWFyc2hhbC5saXN0IHwgICAxNSArKysrKysrKysrKysrKysKIDQgZmlsZXMgY2hhbmdlZCwgNDUg
aW5zZXJ0aW9ucygrKSwgMTIgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgV2ViS2l0
L2d0ay93ZWJraXRtYXJzaGFsLmxpc3QKCmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VM
b2cKaW5kZXggYjFlNWRiOC4uOTc1M2QwZSAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0No
YW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDA5LTAyLTE3ICBYYW4gTG9wZXogIDx4YW5AZ25v
bWUub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk0NworICAgICAgICBb
R1RLXSBNaXNzaW5nIEhUVFAgQXV0aCBjaGFsbGVuZ2UKKworICAgICAgICBUYWtlIG1hcnNoYWxs
ZXJzIHRvIGJlIGJ1aWx0IGZyb20gYSBtYW51YWxseSBtYWludGFpbmVkIGxpc3QKKyAgICAgICAg
aW5zdGVhZCBvZiBncmVwcGluZyB0aGUgc291cmNlcy4KKworICAgICAgICBJdCdzIG11Y2ggZmFz
dGVyLCBlc3BlY2lhbGx5IHNvIG5vdyB0aGF0IHdlIHdhbnQgdG8gYWRkCisgICAgICAgIG1hcnNo
YWxsZXJzIGZyb20gV2ViQ29yZSB0b28uIEEgc3lzdGVtIHRvIG9ubHkgdGFrZSBpbnRvIGFjY291
bnQKKyAgICAgICAgdGhlIG1vZGlmaWVkIGZpbGVzIHdoZW4gZ2VuZXJhdGluZyB0aGUgbWFyc2hh
bGxlcnMgZnJvbSBzb3VyY2VzCisgICAgICAgIGNvdWxkIGJlIGhhY2tlZCwgYnV0IEkgdGhpbmsg
aXQncyBvdmVya2lsbCBjb25zaWRlcmluZyBob3cgcmFyZWx5CisgICAgICAgIGEgbmV3IG1hcnNo
YWxsZXIgaXMgYWRkZWQuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKwogMjAwOS0wMi0x
MiAgR3VzdGF2byBOb3JvbmhhIFNpbHZhICA8Z25zQGdub21lLm9yZz4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBFcmljIFNlaWRlbC4KZGlmZiAtLWdpdCBhL0dOVW1ha2VmaWxlLmFtIGIvR05VbWFr
ZWZpbGUuYW0KaW5kZXggYzc0ZTFmYS4uYzdiN2I2NCAxMDA2NDQKLS0tIGEvR05VbWFrZWZpbGUu
YW0KKysrIGIvR05VbWFrZWZpbGUuYW0KQEAgLTM3MywxOCArMzczLDcgQEAgc3RhbXBfZmlsZXMg
Oj0gXAogCXN0YW1wLXdlYmtpdGVudW10eXBlcy5oCiAKIFdFQktJVF9NQVJTSEFMID0gJChHRU5T
T1VSQ0VTKS93ZWJraXRtYXJzaGFsCi1XRUJLSVRfTUFSU0hBTF9MSVNUID0gJChXRUJLSVRfTUFS
U0hBTCkubGlzdAotCi0kKFdFQktJVF9NQVJTSEFMX0xJU1QpOiAkKHdlYmtpdGd0a19zb3VyY2Vz
KSBHTlVtYWtlZmlsZS5hbQotCSggY2QgJCh0b3Bfc3JjZGlyKSAmJiBcCi0Jc2VkIC1uIC1lICdz
Ly4qd2Via2l0X21hcnNoYWxfXChbWzp1cHBlcjpdWzpkaWdpdDpdXSpfX1tbOnVwcGVyOl1bOmRp
Z2l0Ol1fXSpcKS4qL1wxL3AnIFwKLQkkKHdlYmtpdGd0a19zb3VyY2VzKSApIFwKLQl8IHNlZCAt
ZSAncy9fXy86LycgLWUgJ3kvXy8sLycgfCBzb3J0IC11ID4gJEAudG1wCi0JaWYgY21wIC1zICRA
LnRtcCAkQDsgdGhlbiBcCi0JCXJtICRALnRtcDsgXAotCWVsc2UgXAotCQltdiAkQC50bXAgJEA7
IFwKLQlmaQorV0VCS0lUX01BUlNIQUxfTElTVCA9ICQodG9wX3NyY2RpcikvV2ViS2l0L2d0ay93
ZWJraXRtYXJzaGFsLmxpc3QKIAogJChXRUJLSVRfTUFSU0hBTCkuY3BwOiBzdGFtcC13ZWJraXRt
YXJzaGFsLmNwcAogCUB0cnVlCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1dl
YktpdC9ndGsvQ2hhbmdlTG9nCmluZGV4IDJlYzk1Y2IuLmQyNjZjNmIgMTAwNjQ0Ci0tLSBhL1dl
YktpdC9ndGsvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTQgQEAKKzIwMDktMDItMTcgIFhhbiBMb3BleiAgPHhhbkBnbm9tZS5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTQ3CisgICAgICAgIFtHVEtdIE1pc3NpbmcgSFRUUCBB
dXRoIGNoYWxsZW5nZQorCisgICAgICAgIEFkZCBuZXcgbWFyc2hhbGVycyBsaXN0LgorCisgICAg
ICAgICogd2Via2l0bWFyc2hhbC5saXN0OiBBZGRlZC4KKwogMjAwOS0wMi0xMiAgQ2hyaXN0aWFu
IER5d2FuICA8Y2hyaXN0aWFuQHR3b3RvYXN0cy5kZT4KIAogICAgICAgICBSZXZpZXdlZCBieSBI
b2xnZXIgRnJleXRoZXIuCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3dlYmtpdG1hcnNoYWwubGlz
dCBiL1dlYktpdC9ndGsvd2Via2l0bWFyc2hhbC5saXN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjg1OTJiNDUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvZ3RrL3dlYmtp
dG1hcnNoYWwubGlzdApAQCAtMCwwICsxLDE1IEBACitCT09MRUFOOk9CSkVDVCxPQkpFQ1QsT0JK
RUNULE9CSkVDVAorQk9PTEVBTjpPQkpFQ1QsT0JKRUNULFNUUklORyxPQkpFQ1QKK0JPT0xFQU46
T0JKRUNULFNUUklORworQk9PTEVBTjpPQkpFQ1QsU1RSSU5HLEJPT0xFQU4KK0JPT0xFQU46T0JK
RUNULFNUUklORyxTVFJJTkcsU1RSSU5HCitCT09MRUFOOlNUUklORyxJTlQsU1RSSU5HCitCT09M
RUFOOlZPSUQKK0VOVU06T0JKRUNULE9CSkVDVAorT0JKRUNUOk9CSkVDVAorT0JKRUNUOlZPSUQK
K1ZPSUQ6T0JKRUNULE9CSkVDVAorVk9JRDpPQkpFQ1QsUE9JTlRFUixQT0lOVEVSCitWT0lEOk9C
SkVDVCxTVFJJTkcKK1ZPSUQ6U1RSSU5HCitWT0lEOlNUUklORyxTVFJJTkcKLS0gCjEuNi4xCgo=
</data>
<flag name="review"
          id="13468"
          type_id="1"
          status="+"
          setter="zecke"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>27722</attachid>
            <date>2009-02-17 02:06:31 -0800</date>
            <delta_ts>2009-02-17 08:40:29 -0800</delta_ts>
            <desc>keyring.patch</desc>
            <filename>keyring.patch</filename>
            <type>text/plain</type>
            <size>25169</size>
            <attacher name="Xan Lopez">xan.lopez</attacher>
            
              <data encoding="base64">RnJvbSAyMGMxNTJmZDI3YjBkZTg5YzdjMzg0NmQ2ZDVjMzhkYmUyOGRhNTJhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBYYW4gTG9wZXogPHhhbkBnbm9tZS5vcmc+CkRhdGU6IFR1ZSwg
MTcgRmViIDIwMDkgMTI6MDI6MjQgKzAyMDAKU3ViamVjdDogW1BBVENIIDIvMl0gMjAwOS0wMi0x
NyAgWGFuIExvcGV6ICA8eGFuQGdub21lLm9yZz4KCiAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCgogICAgICAgIFdBUk5JTkc6IE5PIFRFU1QgQ0FTRVMgQURERUQgT1IgQ0hBTkdF
RAoKICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5NDcK
ICAgICAgICBbR1RLXSBNaXNzaW5nIEhUVFAgQXV0aCBjaGFsbGVuZ2UKCiAgICAgICAgQWRkIEhU
VFAgYXV0aGVudGljYXRpb24gZGlhbG9nIHdpdGggb3B0aW9uYWwgR05PTUUgS2V5cmluZwogICAg
ICAgIHN0b3JhZ2UuCgogICAgICAgICogR05VbWFrZWZpbGUuYW06CiAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaDoKICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VIYW5kbGVJbnRlcm5hbDo6UmVzb3VyY2VIYW5kbGVJbnRlcm5hbCk6CiAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcDoKICAgICAgICAoV2Vi
Q29yZTo6Y3VycmVudFRvcGxldmVsQ2FsbGJhY2spOgogICAgICAgIChXZWJDb3JlOjpSZXNvdXJj
ZUhhbmRsZTo6c3RhcnRIdHRwKToKICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnN0
YXJ0KToKICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC93ZWJraXQtc291cC1hdXRoLWRp
YWxvZy5jOiBBZGRlZC4KICAgICAgICAod2Via2l0X3NvdXBfYXV0aF9kaWFsb2dfY2xhc3NfaW5p
dCk6CiAgICAgICAgKHdlYmtpdF9zb3VwX2F1dGhfZGlhbG9nX2luaXQpOgogICAgICAgICh3ZWJr
aXRfc291cF9hdXRoX2RpYWxvZ19zZXNzaW9uX2ZlYXR1cmVfaW5pdCk6CiAgICAgICAgKGZyZWVf
YXV0aERhdGEpOgogICAgICAgIChzZXRfcGFzc3dvcmRfY2FsbGJhY2spOgogICAgICAgIChyZXNw
b25zZV9jYWxsYmFjayk6CiAgICAgICAgKHNob3dfYXV0aF9kaWFsb2cpOgogICAgICAgIChmaW5k
X3Bhc3N3b3JkX2NhbGxiYWNrKToKICAgICAgICAoc2Vzc2lvbl9hdXRoZW50aWNhdGUpOgogICAg
ICAgIChhdHRhY2gpOgogICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL3dlYmtpdC1zb3Vw
LWF1dGgtZGlhbG9nLmg6IEFkZGVkLgotLS0KIENoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHwgICAxMyArCiBHTlVtYWtlZmlsZS5hbSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDQgKy0KIFdlYkNvcmUvQ2hhbmdlTG9nICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAzMiArKwogV2ViQ29yZS9HTlVtYWtl
ZmlsZS5hbSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICA5ICstCiBXZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oICB8ICAgIDMgKwogLi4uL3Bs
YXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwICAgfCAgIDMwICsrCiAu
Li4vbmV0d29yay9zb3VwL3dlYmtpdC1zb3VwLWF1dGgtZGlhbG9nLmMgICAgICAgICB8ICAyOTgg
KysrKysrKysrKysrKysrKysrKysKIC4uLi9uZXR3b3JrL3NvdXAvd2Via2l0LXNvdXAtYXV0aC1k
aWFsb2cuaCAgICAgICAgIHwgICA0OCArKysrCiBjb25maWd1cmUuYWMgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTkgKysKIDkgZmlsZXMgY2hhbmdlZCwgNDU0IGlu
c2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvd2Via2l0LXNvdXAtYXV0aC1kaWFsb2cuYwogY3JlYXRlIG1v
ZGUgMTAwNjQ0IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL3dlYmtpdC1zb3VwLWF1dGgt
ZGlhbG9nLmgKCmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggOTc1M2Qw
ZS4uZjE5Nzg2NCAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtNSw2
ICs1LDE5IEBACiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjk0NwogICAgICAgICBbR1RLXSBNaXNzaW5nIEhUVFAgQXV0aCBjaGFsbGVuZ2UKIAorICAg
ICAgICBBZGQgSFRUUCBhdXRoZW50aWNhdGlvbiBkaWFsb2cgd2l0aCBvcHRpb25hbCBHTk9NRSBL
ZXlyaW5nCisgICAgICAgIHN0b3JhZ2UuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAg
ICAgICAgKiBjb25maWd1cmUuYWM6CisKKzIwMDktMDItMTYgIFhhbiBMb3BleiAgPHhhbkBnbm9t
ZS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTQ3CisgICAgICAgIFtH
VEtdIE1pc3NpbmcgSFRUUCBBdXRoIGNoYWxsZW5nZQorCiAgICAgICAgIFRha2UgbWFyc2hhbGxl
cnMgdG8gYmUgYnVpbHQgZnJvbSBhIG1hbnVhbGx5IG1haW50YWluZWQgbGlzdAogICAgICAgICBp
bnN0ZWFkIG9mIGdyZXBwaW5nIHRoZSBzb3VyY2VzLgogCmRpZmYgLS1naXQgYS9HTlVtYWtlZmls
ZS5hbSBiL0dOVW1ha2VmaWxlLmFtCmluZGV4IGM3YjdiNjQuLmI0MmE3MTYgMTAwNjQ0Ci0tLSBh
L0dOVW1ha2VmaWxlLmFtCisrKyBiL0dOVW1ha2VmaWxlLmFtCkBAIC0xODIsNyArMTgyLDggQEAg
bGliV2ViQ29yZV9sYV9DRkxBR1MgPSBcCiAJJChMSUJYU0xUX0NGTEFHUykgXAogCSQoQ09WRVJB
R0VfQ0ZMQUdTKSBcCiAJJChISUxET05fQ0ZMQUdTKSBcCi0JJChHRU9DTFVFX0NGTEFHUykKKwkk
KEdFT0NMVUVfQ0ZMQUdTKSBcCisJJChHTk9NRUtFWVJJTkdfQ0ZMQUdTKQogCiBsaWJXZWJDb3Jl
X2xhX0NQUEZMQUdTID0gXAogCSQoZ2xvYmFsX2NwcGZsYWdzKSBcCkBAIC0yMTIsNiArMjEzLDcg
QEAgbGliV2ViQ29yZV9sYV9MSUJBREQgPSBcCiAJJChKUEVHX0xJQlMpIFwKIAkkKFBOR19MSUJT
KSBcCiAJJChHRU9DTFVFX0xJQlMpIFwKKwkkKEdOT01FS0VZUklOR19MSUJTKSBcCiAJLWxwdGhy
ZWFkCiAKICMgV2ViS2l0CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUv
Q2hhbmdlTG9nCmluZGV4IGVmZmQwY2YuLjk5YjI0ZWUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hh
bmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMDktMDIt
MTcgIFhhbiBMb3BleiAgPHhhbkBnbm9tZS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgV0FSTklORzogTk8gVEVTVCBDQVNFUyBBRERFRCBPUiBD
SEFOR0VECisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE2OTQ3CisgICAgICAgIFtHVEtdIE1pc3NpbmcgSFRUUCBBdXRoIGNoYWxsZW5nZQorCisgICAg
ICAgIEFkZCBIVFRQIGF1dGhlbnRpY2F0aW9uIGRpYWxvZyB3aXRoIG9wdGlvbmFsIEdOT01FIEtl
eXJpbmcKKyAgICAgICAgc3RvcmFnZS4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oOgorICAgICAg
ICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVJbnRlcm5hbDo6UmVzb3VyY2VIYW5kbGVJbnRlcm5h
bCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpjdXJyZW50VG9wbGV2ZWxDYWxsYmFjayk6CisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6c3RhcnRIdHRwKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlSGFuZGxlOjpzdGFydCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3Vw
L3dlYmtpdC1zb3VwLWF1dGgtZGlhbG9nLmM6IEFkZGVkLgorICAgICAgICAod2Via2l0X3NvdXBf
YXV0aF9kaWFsb2dfY2xhc3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRfc291cF9hdXRoX2RpYWxv
Z19pbml0KToKKyAgICAgICAgKHdlYmtpdF9zb3VwX2F1dGhfZGlhbG9nX3Nlc3Npb25fZmVhdHVy
ZV9pbml0KToKKyAgICAgICAgKGZyZWVfYXV0aERhdGEpOgorICAgICAgICAoc2V0X3Bhc3N3b3Jk
X2NhbGxiYWNrKToKKyAgICAgICAgKHJlc3BvbnNlX2NhbGxiYWNrKToKKyAgICAgICAgKHNob3df
YXV0aF9kaWFsb2cpOgorICAgICAgICAoZmluZF9wYXNzd29yZF9jYWxsYmFjayk6CisgICAgICAg
IChzZXNzaW9uX2F1dGhlbnRpY2F0ZSk6CisgICAgICAgIChhdHRhY2gpOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvc291cC93ZWJraXQtc291cC1hdXRoLWRpYWxvZy5oOiBBZGRlZC4KKwog
MjAwOS0wMi0xNiAgQmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgU2FtIFdlaW5pZy4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0g
Yi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IGU4MWMxNTguLjNkNjk2N2MgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpA
QCAtMTgzMCw3ICsxODMwLDE0IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJvci5oIFwKIAlXZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwIFwKIAlXZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3QuaCBcCi0JV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvUmVzb3VyY2VSZXNwb25zZS5oCisJV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAv
UmVzb3VyY2VSZXNwb25zZS5oIFwKKwlXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC93ZWJr
aXQtc291cC1hdXRoLWRpYWxvZy5jIFwKKwlXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC93
ZWJraXQtc291cC1hdXRoLWRpYWxvZy5oCitlbmRpZgorCitpZiBVU0VfR05PTUVLRVlSSU5HCit3
ZWJjb3JlX2NwcGZsYWdzICs9IFwKKwktRFdURl9VU0VfR05PTUVLRVlSSU5HPTEKIGVuZGlmCiAK
ICMgLS0tCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5k
bGVJbnRlcm5hbC5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50
ZXJuYWwuaAppbmRleCA2NmFhNGMxLi40ZTQ0MTdjIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oCisrKyBiL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmgKQEAgLTQ3LDYgKzQ3LDcgQEAKIAog
I2lmIFVTRShTT1VQKQogI2luY2x1ZGUgPGxpYnNvdXAvc291cC5oPgorY2xhc3MgRnJhbWU7CiAj
ZW5kaWYKIAogI2lmIFBMQVRGT1JNKFFUKQpAQCAtMTE3LDYgKzExOCw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgICAgICwgbV9idWZzaXplKDApCiAgICAgICAgICAgICAsIG1fdG90
YWwoMCkKICAgICAgICAgICAgICwgbV9pZGxlSGFuZGxlcigwKQorICAgICAgICAgICAgLCBtX2Zy
YW1lKDApCiAjZW5kaWYKICNpZiBQTEFURk9STShRVCkKICAgICAgICAgICAgICwgbV9qb2IoMCkK
QEAgLTE4Nyw2ICsxODksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGNoYXIqIG1f
YnVmZmVyOwogICAgICAgICBnc2l6ZSBtX2J1ZnNpemUsIG1fdG90YWw7CiAgICAgICAgIGd1aW50
IG1faWRsZUhhbmRsZXI7CisgICAgICAgIEZyYW1lKiBtX2ZyYW1lOwogI2VuZGlmCiAjaWYgUExB
VEZPUk0oUVQpCiAjaWYgUVRfVkVSU0lPTiA8IDB4MDQwNDAwCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwIGIvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcAppbmRleCA5YWI3Yjhh
Li4zYzdiZjlkIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNv
dXJjZUhhbmRsZVNvdXAuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jl
c291cmNlSGFuZGxlU291cC5jcHAKQEAgLTI2LDIxICsyNiwyNSBAQAogCiAjaW5jbHVkZSAiQmFz
ZTY0LmgiCiAjaW5jbHVkZSAiQ29va2llSmFyU291cC5oIgorI2luY2x1ZGUgIkNocm9tZUNsaWVu
dC5oIgogI2luY2x1ZGUgIkNTdHJpbmcuaCIKICNpbmNsdWRlICJEb2NMb2FkZXIuaCIKICNpbmNs
dWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkhUVFBQYXJzZXJzLmgiCiAjaW5jbHVkZSAiTUlNRVR5
cGVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSAiUGFn
ZS5oIgogI2luY2x1ZGUgIlJlc291cmNlRXJyb3IuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRs
ZUNsaWVudC5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlSW50ZXJuYWwuaCIKICNpbmNsdWRl
ICJSZXNvdXJjZVJlc3BvbnNlLmgiCiAjaW5jbHVkZSAiVGV4dEVuY29kaW5nLmgiCisjaW5jbHVk
ZSAid2Via2l0LXNvdXAtYXV0aC1kaWFsb2cuaCIKIAogI2luY2x1ZGUgPGVycm5vLmg+CiAjaW5j
bHVkZSA8ZmNudGwuaD4KICNpbmNsdWRlIDxnaW8vZ2lvLmg+CisjaW5jbHVkZSA8Z3RrL2d0ay5o
PgogI2luY2x1ZGUgPGxpYnNvdXAvc291cC5oPgogI2luY2x1ZGUgPGxpYnNvdXAvc291cC1tZXNz
YWdlLmg+CiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CkBAIC0zMDMsNiArMzA3LDI0IEBAIGJvb2wg
UmVzb3VyY2VIYW5kbGU6OnN0YXJ0RGF0YShTdHJpbmcgdXJsU3RyaW5nKQogICAgIHJldHVybiB0
cnVlOwogfQogCitzdGF0aWMgR3RrV2lkZ2V0KiBjdXJyZW50VG9wbGV2ZWxDYWxsYmFjayhXZWJL
aXRTb3VwQXV0aERpYWxvZyogZmVhdHVyZSwgZ3BvaW50ZXIgdXNlckRhdGEpCit7CisgICAgUmVz
b3VyY2VIYW5kbGUqIGhhbmRsZSA9IHN0YXRpY19jYXN0PFJlc291cmNlSGFuZGxlKj4odXNlckRh
dGEpOworICAgIGlmICghaGFuZGxlKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIFJlc291
cmNlSGFuZGxlSW50ZXJuYWwqIGQgPSBoYW5kbGUtPmdldEludGVybmFsKCk7CisgICAgaWYgKCFk
KQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIEd0a1dpZGdldCogdG9wbGV2ZWwgPSAgZC0+
bV9mcmFtZS0+cGFnZSgpLT5jaHJvbWUoKS0+cGxhdGZvcm1XaW5kb3coKTsKKworICAgIGlmIChH
VEtfV0lER0VUX1RPUExFVkVMKHRvcGxldmVsKSkKKyAgICAgICAgcmV0dXJuIHRvcGxldmVsOwor
ICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIE5VTEw7Cit9CisKIGJvb2wgUmVzb3VyY2VIYW5kbGU6
OnN0YXJ0SHR0cChTdHJpbmcgdXJsU3RyaW5nKQogewogICAgIGlmICghc2Vzc2lvbikgewpAQCAt
MzEwLDYgKzMzMiwxMSBAQCBib29sIFJlc291cmNlSGFuZGxlOjpzdGFydEh0dHAoU3RyaW5nIHVy
bFN0cmluZykKIAogICAgICAgICBzb3VwX3Nlc3Npb25fYWRkX2ZlYXR1cmUoc2Vzc2lvbiwgU09V
UF9TRVNTSU9OX0ZFQVRVUkUoZ2V0Q29va2llSmFyKCkpKTsKIAorICAgICAgICBTb3VwU2Vzc2lv
bkZlYXR1cmUqIGF1dGhEaWFsb2cgPSBzdGF0aWNfY2FzdDxTb3VwU2Vzc2lvbkZlYXR1cmUqPihn
X29iamVjdF9uZXcoV0VCS0lUX1RZUEVfU09VUF9BVVRIX0RJQUxPRywgTlVMTCkpOworICAgICAg
ICBnX3NpZ25hbF9jb25uZWN0KGF1dGhEaWFsb2csICJjdXJyZW50LXRvcGxldmVsIiwgR19DQUxM
QkFDSyhjdXJyZW50VG9wbGV2ZWxDYWxsYmFjayksIHRoaXMpOworICAgICAgICBzb3VwX3Nlc3Np
b25fYWRkX2ZlYXR1cmUoc2Vzc2lvbiwgYXV0aERpYWxvZyk7CisgICAgICAgIGdfb2JqZWN0X3Vu
cmVmKGF1dGhEaWFsb2cpOworCiAgICAgICAgIGNvbnN0IGNoYXIqIHNvdXBfZGVidWcgPSBnX2dl
dGVudigiV0VCS0lUX1NPVVBfTE9HR0lORyIpOwogICAgICAgICBpZiAoc291cF9kZWJ1Zykgewog
ICAgICAgICAgICAgaW50IHNvdXBfZGVidWdfbGV2ZWwgPSBhdG9pKHNvdXBfZGVidWcpOwpAQCAt
NDIyLDYgKzQ0OSw5IEBAIGJvb2wgUmVzb3VyY2VIYW5kbGU6OnN0YXJ0KEZyYW1lKiBmcmFtZSkK
ICAgICBTdHJpbmcgdXJsU3RyaW5nID0gdXJsLnN0cmluZygpOwogICAgIFN0cmluZyBwcm90b2Nv
bCA9IHVybC5wcm90b2NvbCgpOwogCisgICAgLy8gVXNlZCB0byBzZXQgdGhlIGF1dGhlbnRpY2F0
aW9uIGRpYWxvZyB0b3BsZXZlbDsgbWF5IGJlIE5VTEwKKyAgICBkLT5tX2ZyYW1lID0gZnJhbWU7
CisKICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UocHJvdG9jb2wsICJkYXRhIikpCiAgICAgICAg
IHJldHVybiBzdGFydERhdGEodXJsU3RyaW5nKTsKICAgICBlbHNlIGlmICgoZXF1YWxJZ25vcmlu
Z0Nhc2UocHJvdG9jb2wsICJodHRwIikgfHwgZXF1YWxJZ25vcmluZ0Nhc2UocHJvdG9jb2wsICJo
dHRwcyIpKSAmJiBTT1VQX1VSSV9WQUxJRF9GT1JfSFRUUChzb3VwX3VyaV9uZXcodXJsU3RyaW5n
LnV0ZjgoKS5kYXRhKCkpKSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9z
b3VwL3dlYmtpdC1zb3VwLWF1dGgtZGlhbG9nLmMgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
c291cC93ZWJraXQtc291cC1hdXRoLWRpYWxvZy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjg4NTJhMWIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC93ZWJraXQtc291cC1hdXRoLWRpYWxvZy5jCkBAIC0wLDAgKzEsMjk4IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDA5IElnYWxpYSBTLkwuLCBBdXRob3I6IFhhbiBMb3BleiA8
eGxvcGV6QGlnYWxpYS5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAt
MTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgPGd0ay9n
dGsuaD4KKyNpbmNsdWRlIDxsaWJzb3VwL3NvdXAuaD4KKyNpZiBVU0UoR05PTUVLRVlSSU5HKQor
I2luY2x1ZGUgPGdub21lLWtleXJpbmcuaD4KKyNlbmRpZgorCisjaW5jbHVkZSAid2Via2l0bWFy
c2hhbC5oIgorI2luY2x1ZGUgIndlYmtpdC1zb3VwLWF1dGgtZGlhbG9nLmgiCisKK3N0YXRpYyB2
b2lkIHdlYmtpdF9zb3VwX2F1dGhfZGlhbG9nX3Nlc3Npb25fZmVhdHVyZV9pbml0KFNvdXBTZXNz
aW9uRmVhdHVyZUludGVyZmFjZSogZmVhdHVyZV9pbnRlcmZhY2UsIGdwb2ludGVyIGludGVyZmFj
ZV9kYXRhKTsKK3N0YXRpYyB2b2lkIGF0dGFjaChTb3VwU2Vzc2lvbkZlYXR1cmUgKm1hbmFnZXIs
IFNvdXBTZXNzaW9uICpzZXNzaW9uKTsKK3N0YXRpYyB2b2lkIGRldGFjaChTb3VwU2Vzc2lvbkZl
YXR1cmUgKm1hbmFnZXIsIFNvdXBTZXNzaW9uICpzZXNzaW9uKTsKKworZW51bSB7CisgICAgQ1VS
UkVOVF9UT1BMRVZFTCwKKyAgICBMQVNUX1NJR05BTAorfTsKKworc3RhdGljIGd1aW50IHNpZ25h
bHNbTEFTVF9TSUdOQUxdID0geyAwIH07CisKK0dfREVGSU5FX1RZUEVfV0lUSF9DT0RFKFdlYktp
dFNvdXBBdXRoRGlhbG9nLCB3ZWJraXRfc291cF9hdXRoX2RpYWxvZywgR19UWVBFX09CSkVDVCwK
KyAgICAgICAgICAgICAgICAgICAgICAgIEdfSU1QTEVNRU5UX0lOVEVSRkFDRShTT1VQX1RZUEVf
U0VTU0lPTl9GRUFUVVJFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHdlYmtpdF9zb3VwX2F1dGhfZGlhbG9nX3Nlc3Npb25fZmVhdHVyZV9pbml0KSkKKwor
c3RhdGljIHZvaWQgd2Via2l0X3NvdXBfYXV0aF9kaWFsb2dfY2xhc3NfaW5pdChXZWJLaXRTb3Vw
QXV0aERpYWxvZ0NsYXNzICprbGFzcykKK3sKKyAgICBHT2JqZWN0Q2xhc3MqIG9iamVjdF9jbGFz
cyA9IEdfT0JKRUNUX0NMQVNTKGtsYXNzKTsKKworICAgIHNpZ25hbHNbQ1VSUkVOVF9UT1BMRVZF
TF0gPQorICAgICAgZ19zaWduYWxfbmV3KCJjdXJyZW50LXRvcGxldmVsIiwKKyAgICAgICAgICAg
ICAgICAgICBHX09CSkVDVF9DTEFTU19UWVBFKG9iamVjdF9jbGFzcyksCisgICAgICAgICAgICAg
ICAgICAgR19TSUdOQUxfUlVOX0xBU1QsCisgICAgICAgICAgICAgICAgICAgR19TVFJVQ1RfT0ZG
U0VUKFdlYktpdFNvdXBBdXRoRGlhbG9nQ2xhc3MsIGN1cnJlbnRfdG9wbGV2ZWwpLAorICAgICAg
ICAgICAgICAgICAgIE5VTEwsIE5VTEwsCisgICAgICAgICAgICAgICAgICAgd2Via2l0X21hcnNo
YWxfT0JKRUNUX19WT0lELAorICAgICAgICAgICAgICAgICAgIEdUS19UWVBFX1dJREdFVCwgMCk7
Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF9zb3VwX2F1dGhfZGlhbG9nX2luaXQoV2ViS2l0U291
cEF1dGhEaWFsb2cqIGluc3RhbmNlKQoreworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfc291cF9h
dXRoX2RpYWxvZ19zZXNzaW9uX2ZlYXR1cmVfaW5pdChTb3VwU2Vzc2lvbkZlYXR1cmVJbnRlcmZh
Y2UgKmZlYXR1cmVfaW50ZXJmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZ3BvaW50ZXIgaW50ZXJmYWNlX2RhdGEpCit7CisgICAg
ZmVhdHVyZV9pbnRlcmZhY2UtPmF0dGFjaCA9IGF0dGFjaDsKKyAgICBmZWF0dXJlX2ludGVyZmFj
ZS0+ZGV0YWNoID0gZGV0YWNoOworfQorCit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0QXV0aERhdGEg
eworICAgIFNvdXBNZXNzYWdlKiBtc2c7CisgICAgU291cEF1dGgqIGF1dGg7CisgICAgU291cFNl
c3Npb24qIHNlc3Npb247CisgICAgU291cFNlc3Npb25GZWF0dXJlKiBtYW5hZ2VyOworICAgIEd0
a1dpZGdldCogbG9naW5FbnRyeTsKKyAgICBHdGtXaWRnZXQqIHBhc3N3b3JkRW50cnk7CisjaWYg
VVNFKEdOT01FS0VZUklORykKKyAgICBHdGtXaWRnZXQqIGNoZWNrQnV0dG9uOworI2VuZGlmCit9
IFdlYktpdEF1dGhEYXRhOworCitzdGF0aWMgdm9pZCBmcmVlX2F1dGhEYXRhKFdlYktpdEF1dGhE
YXRhKiBhdXRoRGF0YSkKK3sKKyAgICBnX29iamVjdF91bnJlZihhdXRoRGF0YS0+bXNnKTsKKyAg
ICBnX3NsaWNlX2ZyZWUoV2ViS2l0QXV0aERhdGEsIGF1dGhEYXRhKTsKK30KKworI2lmIFVTRShH
Tk9NRUtFWVJJTkcpCitzdGF0aWMgdm9pZCBzZXRfcGFzc3dvcmRfY2FsbGJhY2soR25vbWVLZXly
aW5nUmVzdWx0IHJlc3VsdCwgZ3VpbnQzMiB2YWwsIGdwb2ludGVyIHVzZXJfZGF0YSkKK3sKKyAg
ICAvKiBEdW1teSBjYWxsYmFjaywgZ25vbWVfa2V5cmluZ19zZXRfbmV0d29ya19wYXNzd29yZCBk
b2VzIG5vdCBhY2NlcHQgYSBOVUxMIG9uZSAqLworfQorI2VuZGlmCisKK3N0YXRpYyB2b2lkIHJl
c3BvbnNlX2NhbGxiYWNrKEd0a0RpYWxvZyogZGlhbG9nLCBnaW50IHJlc3BvbnNlX2lkLCBXZWJL
aXRBdXRoRGF0YSogYXV0aERhdGEpCit7CisgICAgY29uc3QgY2hhciogbG9naW47CisgICAgY29u
c3QgY2hhciogcGFzc3dvcmQ7CisjaWYgVVNFKEdOT01FS0VZUklORykKKyAgICBTb3VwVVJJKiB1
cmk7CisgICAgZ2Jvb2xlYW4gc3RvcmVQYXNzd29yZDsKKyNlbmRpZgorCisgICAgc3dpdGNoKHJl
c3BvbnNlX2lkKSB7CisgICAgY2FzZSBHVEtfUkVTUE9OU0VfQUNDRVBUOgorICAgICAgICBsb2dp
biA9IGd0a19lbnRyeV9nZXRfdGV4dChHVEtfRU5UUlkoYXV0aERhdGEtPmxvZ2luRW50cnkpKTsK
KyAgICAgICAgcGFzc3dvcmQgPSBndGtfZW50cnlfZ2V0X3RleHQoR1RLX0VOVFJZKGF1dGhEYXRh
LT5wYXNzd29yZEVudHJ5KSk7CisgICAgICAgIHNvdXBfYXV0aF9hdXRoZW50aWNhdGUoYXV0aERh
dGEtPmF1dGgsIGxvZ2luLCBwYXNzd29yZCk7CisKKyNpZiBVU0UoR05PTUVLRVlSSU5HKQorICAg
ICAgICBzdG9yZVBhc3N3b3JkID0gZ3RrX3RvZ2dsZV9idXR0b25fZ2V0X2FjdGl2ZShHVEtfVE9H
R0xFX0JVVFRPTihhdXRoRGF0YS0+Y2hlY2tCdXR0b24pKTsKKyAgICAgICAgaWYgKHN0b3JlUGFz
c3dvcmQpIHsKKyAgICAgICAgICAgIHVyaSA9IHNvdXBfbWVzc2FnZV9nZXRfdXJpKGF1dGhEYXRh
LT5tc2cpOworICAgICAgICAgICAgZ25vbWVfa2V5cmluZ19zZXRfbmV0d29ya19wYXNzd29yZChO
VUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dp
biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cF9h
dXRoX2dldF9yZWFsbShhdXRoRGF0YS0+YXV0aCksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVyaS0+aG9zdCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdXJpLT5zY2hlbWUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXBfYXV0aF9nZXRfc2NoZW1lX25hbWUoYXV0aERh
dGEtPmF1dGgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1cmktPnBvcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHBhc3N3b3JkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAoR25vbWVLZXlyaW5nT3BlcmF0aW9uR2V0SW50Q2FsbGJhY2spc2V0X3Bhc3N3b3JkX2Nh
bGxiYWNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBO
VUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxM
KTsKKyAgICAgICAgfQorI2VuZGlmCisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAg
fQorCisgICAgc291cF9zZXNzaW9uX3VucGF1c2VfbWVzc2FnZShhdXRoRGF0YS0+c2Vzc2lvbiwg
YXV0aERhdGEtPm1zZyk7CisgICAgZnJlZV9hdXRoRGF0YShhdXRoRGF0YSk7CisgICAgZ3RrX3dp
ZGdldF9kZXN0cm95KEdUS19XSURHRVQoZGlhbG9nKSk7Cit9CisKK3N0YXRpYyB2b2lkIHNob3df
YXV0aF9kaWFsb2coV2ViS2l0QXV0aERhdGEqIGF1dGhEYXRhLCBjb25zdCBjaGFyKiBsb2dpbiwg
Y29uc3QgY2hhciogcGFzc3dvcmQpCit7CisgICAgR3RrV2lkZ2V0KiB0b3BsZXZlbCA9IE5VTEw7
CisKKyAgICAvKiBHZXQgdGhlIGN1cnJlbnQgdG9wbGV2ZWwgKi8KKyAgICBnX3NpZ25hbF9lbWl0
KGF1dGhEYXRhLT5tYW5hZ2VyLCBzaWduYWxzW0NVUlJFTlRfVE9QTEVWRUxdLCAwLCAmdG9wbGV2
ZWwpOworCisgICAgLyogTWltaWMgdGhlIFVJIGZyb20gR2Vja28sIEVtYmVkUHJvbXB0ZXIuY3Bw
LCBMR1BMIGxpY2Vuc2UgKi8KKyAgICBHdGtXaWRnZXQqIGRpYWxvZzsKKyAgICBkaWFsb2cgPSBn
dGtfZGlhbG9nX25ld193aXRoX2J1dHRvbnMoIiIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRvcGxldmVsID8gR1RLX1dJTkRPVyh0b3BsZXZlbCkgOiBOVUxMLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVEtfRElBTE9HX0RFU1RS
T1lfV0lUSF9QQVJFTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdUS19TVE9DS19DQU5DRUwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdUS19SRVNQT05TRV9SRUpFQ1QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdUS19TVE9DS19PSywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR1RLX1JFU1BPTlNFX0FDQ0VQVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgTlVMTCk7CisgICAgZ3RrX3dpbmRvd19zZXRfZGVmYXVsdF9zaXplKEdU
S19XSU5ET1coZGlhbG9nKSwgMTAwLCA1MCk7CisgICAgZ3RrX2RpYWxvZ19zZXRfZGVmYXVsdF9y
ZXNwb25zZShHVEtfRElBTE9HKGRpYWxvZyksIEdUS19SRVNQT05TRV9BQ0NFUFQpOworCisgICAg
LyogTWFpbiBoYm94IGZvciBpY29uIGFuZCBjb250cm9scyAqLworICAgIEd0a1dpZGdldCogbWFp
bkhCb3ggPSBndGtfaGJveF9uZXcoRkFMU0UsIDEyKTsKKyAgICBndGtfY29udGFpbmVyX3NldF9i
b3JkZXJfd2lkdGgoR1RLX0NPTlRBSU5FUihkaWFsb2cpLCA2KTsKKyAgICBndGtfZGlhbG9nX3Nl
dF9oYXNfc2VwYXJhdG9yKEdUS19ESUFMT0coZGlhbG9nKSwgRkFMU0UpOworCisgICAgR3RrV2lk
Z2V0KiBjb250ZW50QXJlYSA9IGd0a19kaWFsb2dfZ2V0X2NvbnRlbnRfYXJlYShHVEtfRElBTE9H
KGRpYWxvZykpOworICAgIGd0a19ib3hfc2V0X3NwYWNpbmcoR1RLX0JPWChjb250ZW50QXJlYSks
IDEyKTsKKyAgICBndGtfY29udGFpbmVyX3NldF9ib3JkZXJfd2lkdGgoR1RLX0NPTlRBSU5FUiht
YWluSEJveCksIDEyKTsKKyAgICAvKiBWQm94IGZvciBsYWJlbHMgYW5kIG90aGVyIGNvbnRyb2xz
ICovCisgICAgR3RrV2lkZ2V0KiBjb250ZW50c1ZCb3ggPSBndGtfdmJveF9uZXcoRkFMU0UsIDEy
KTsKKyAgICBHdGtXaWRnZXQqIGljb24gPSBndGtfaW1hZ2VfbmV3X2Zyb21fc3RvY2soR1RLX1NU
T0NLX0RJQUxPR19BVVRIRU5USUNBVElPTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR1RLX0lDT05fU0laRV9ESUFMT0cpOworICAgIGd0a19taXNjX3Nl
dF9hbGlnbm1lbnQoR1RLX01JU0MoaWNvbiksIDAuNSwgMC4wKTsKKyAgICBndGtfYm94X3BhY2tf
c3RhcnQoR1RLX0JPWChtYWluSEJveCksIGljb24sIEZBTFNFLCBGQUxTRSwgMCk7CisKKyAgICAv
KiBQYWNrIHRoZSBtZXNzYWdlIGxhYmVsIGludG8gdGhlIFZCb3ggKi8KKyAgICBTb3VwVVJJKiB1
cmkgPSBzb3VwX21lc3NhZ2VfZ2V0X3VyaShhdXRoRGF0YS0+bXNnKTsKKyAgICBjaGFyKiBtZXNz
YWdlID0gZ19zdHJkdXBfcHJpbnRmKCJBIHVzZXJuYW1lIGFuZCBwYXNzd29yZCBhcmUgYmVpbmcg
cmVxdWVzdGVkIGJ5ICVzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVy
aS0+aG9zdCk7CisgICAgR3RrV2lkZ2V0KiBsYWJlbCA9IGd0a19sYWJlbF9uZXcobWVzc2FnZSk7
CisgICAgZ19mcmVlKG1lc3NhZ2UpOworICAgIGd0a19sYWJlbF9zZXRfbGluZV93cmFwKEdUS19M
QUJFTChsYWJlbCksIFRSVUUpOworICAgIGd0a19sYWJlbF9zZXRfc2VsZWN0YWJsZShHVEtfTEFC
RUwobGFiZWwpLCBUUlVFKTsKKyAgICBndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWChjb250ZW50
c1ZCb3gpLCBsYWJlbCwgRkFMU0UsIEZBTFNFLCAwKTsKKworICAgIC8qIExvZ2luL1Bhc3N3b3Jk
IGVudHJpZXMgKi8KKyAgICBHdGtXaWRnZXQqIHVzZXJQYXNzSEJveCA9IGd0a19oYm94X25ldyhG
QUxTRSwgMTIpOworICAgIEd0a1dpZGdldCogdXNlclBhc3NMYWJlbHMgPSBndGtfdmJveF9uZXco
VFJVRSwgNik7CisgICAgR3RrV2lkZ2V0KiB1c2VyUGFzc0ZpZWxkcyA9IGd0a192Ym94X25ldyhU
UlVFLCA2KTsKKworICAgIEd0a1dpZGdldCogdXNlckxhYmVsID0gZ3RrX2xhYmVsX25ldygiVXNl
ciBOYW1lOiIpOworICAgIGd0a19ib3hfcGFja19zdGFydChHVEtfQk9YKHVzZXJQYXNzTGFiZWxz
KSwgdXNlckxhYmVsLCBGQUxTRSwgMCwgMCk7CisgICAgR3RrV2lkZ2V0KiBsb2dpbkVudHJ5ID0g
Z3RrX2VudHJ5X25ldygpOworICAgIGlmIChsb2dpbikKKyAgICAgICAgZ3RrX2VudHJ5X3NldF90
ZXh0KEdUS19FTlRSWShsb2dpbkVudHJ5KSwgbG9naW4pOworICAgIGd0a19lbnRyeV9zZXRfYWN0
aXZhdGVzX2RlZmF1bHQoR1RLX0VOVFJZKGxvZ2luRW50cnkpLCBUUlVFKTsKKyAgICBndGtfYm94
X3BhY2tfc3RhcnQoR1RLX0JPWCh1c2VyUGFzc0ZpZWxkcyksIGxvZ2luRW50cnksIEZBTFNFLCAw
LCAwKTsKKworICAgIEd0a1dpZGdldCogcGFzc3dvcmRMYWJlbCA9IGd0a19sYWJlbF9uZXcoIlBh
c3N3b3JkOiIpOworICAgIGd0a19ib3hfcGFja19zdGFydChHVEtfQk9YKHVzZXJQYXNzTGFiZWxz
KSwgcGFzc3dvcmRMYWJlbCwgRkFMU0UsIDAsIDApOworICAgIEd0a1dpZGdldCogcGFzc3dvcmRF
bnRyeSA9IGd0a19lbnRyeV9uZXcoKTsKKyAgICBpZiAocGFzc3dvcmQpCisgICAgICAgIGd0a19l
bnRyeV9zZXRfdGV4dChHVEtfRU5UUlkocGFzc3dvcmRFbnRyeSksIHBhc3N3b3JkKTsKKyAgICBn
dGtfZW50cnlfc2V0X3Zpc2liaWxpdHkoR1RLX0VOVFJZKHBhc3N3b3JkRW50cnkpLCBGQUxTRSk7
CisgICAgZ3RrX2VudHJ5X3NldF9hY3RpdmF0ZXNfZGVmYXVsdChHVEtfRU5UUlkocGFzc3dvcmRF
bnRyeSksIFRSVUUpOworICAgIGd0a19ib3hfcGFja19zdGFydChHVEtfQk9YKHVzZXJQYXNzRmll
bGRzKSwgcGFzc3dvcmRFbnRyeSwgRkFMU0UsIDAsIDApOworCisgICAgZ3RrX2JveF9wYWNrX3N0
YXJ0KEdUS19CT1godXNlclBhc3NIQm94KSwgdXNlclBhc3NMYWJlbHMsIEZBTFNFLCAwLCAwKTsK
KyAgICBndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWCh1c2VyUGFzc0hCb3gpLCB1c2VyUGFzc0Zp
ZWxkcywgRkFMU0UsIDAsIDApOworICAgIGd0a19ib3hfcGFja19zdGFydChHVEtfQk9YKGNvbnRl
bnRzVkJveCksIHVzZXJQYXNzSEJveCwgRkFMU0UsIDAsIDApOworCisjaWYgVVNFKEdOT01FS0VZ
UklORykKKyAgICAvKiBDaGVja2J1dHRvbiAqLworICAgIEd0a1dpZGdldCogY2hlY2tCdXR0b24g
PSBndGtfY2hlY2tfYnV0dG9uX25ld193aXRoX2xhYmVsKCJSZW1lbWJlciBwYXNzd29yZCIpOwor
ICAgIGlmIChsb2dpbiAmJiBwYXNzd29yZCkKKyAgICAgICAgZ3RrX3RvZ2dsZV9idXR0b25fc2V0
X2FjdGl2ZShHVEtfVE9HR0xFX0JVVFRPTihjaGVja0J1dHRvbiksIFRSVUUpOworICAgIGd0a19s
YWJlbF9zZXRfbGluZV93cmFwKEdUS19MQUJFTChndGtfYmluX2dldF9jaGlsZChHVEtfQklOKGNo
ZWNrQnV0dG9uKSkpLCBUUlVFKTsKKyAgICBndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWChjb250
ZW50c1ZCb3gpLCBjaGVja0J1dHRvbiwgRkFMU0UsIDAsIDApOworI2VuZGlmCisKKyAgICAvKiBQ
YWNrIGFuZCBnbyAqLworICAgIGd0a19ib3hfcGFja19zdGFydChHVEtfQk9YKG1haW5IQm94KSwg
Y29udGVudHNWQm94LCBGQUxTRSwgMCwgMCk7CisgICAgZ3RrX2JveF9wYWNrX3N0YXJ0KEdUS19C
T1goY29udGVudEFyZWEpLCBtYWluSEJveCwgRkFMU0UsIDAsIDApOworCisgICAgYXV0aERhdGEt
PmxvZ2luRW50cnkgPSBsb2dpbkVudHJ5OworICAgIGF1dGhEYXRhLT5wYXNzd29yZEVudHJ5ID0g
cGFzc3dvcmRFbnRyeTsKKyNpZiBVU0UoR05PTUVLRVlSSU5HKQorICAgIGF1dGhEYXRhLT5jaGVj
a0J1dHRvbiA9IGNoZWNrQnV0dG9uOworI2VuZGlmCisKKyAgICBnX3NpZ25hbF9jb25uZWN0KGRp
YWxvZywgInJlc3BvbnNlIiwgR19DQUxMQkFDSyhyZXNwb25zZV9jYWxsYmFjayksIGF1dGhEYXRh
KTsKKyAgICBndGtfd2lkZ2V0X3Nob3dfYWxsKGRpYWxvZyk7Cit9CisKKyNpZiBVU0UoR05PTUVL
RVlSSU5HKQorc3RhdGljIHZvaWQgZmluZF9wYXNzd29yZF9jYWxsYmFjayhHbm9tZUtleXJpbmdS
ZXN1bHQgcmVzdWx0LCBHTGlzdCogbGlzdCwgV2ViS2l0QXV0aERhdGEqIGF1dGhEYXRhKQorewor
ICAgIEdMaXN0KiBwOworICAgIGNvbnN0IGNoYXIqIGxvZ2luID0gTlVMTDsKKyAgICBjb25zdCBj
aGFyKiBwYXNzd29yZCA9IE5VTEw7CisKKyAgICBmb3IgKHAgPSBsaXN0OyBwOyBwID0gcC0+bmV4
dCkgeworICAgICAgICAvKiBGSVhNRTogc3VwcG9ydCBtdWx0aXBsZSBsb2dpbnMvcGFzc3dvcmRz
ID8gKi8KKyAgICAgICAgR25vbWVLZXlyaW5nTmV0d29ya1Bhc3N3b3JkRGF0YSogZGF0YSA9IChH
bm9tZUtleXJpbmdOZXR3b3JrUGFzc3dvcmREYXRhKilwLT5kYXRhOworICAgICAgICBsb2dpbiA9
IGRhdGEtPnVzZXI7CisgICAgICAgIHBhc3N3b3JkID0gZGF0YS0+cGFzc3dvcmQ7CisgICAgICAg
IGJyZWFrOworICAgIH0KKworICAgIHNob3dfYXV0aF9kaWFsb2coYXV0aERhdGEsIGxvZ2luLCBw
YXNzd29yZCk7Cit9CisjZW5kaWYKKworc3RhdGljIHZvaWQgc2Vzc2lvbl9hdXRoZW50aWNhdGUo
U291cFNlc3Npb24qIHNlc3Npb24sIFNvdXBNZXNzYWdlKiBtc2csIFNvdXBBdXRoKiBhdXRoLCBn
Ym9vbGVhbiByZXRyeWluZywgZ3BvaW50ZXIgdXNlcl9kYXRhKQoreworICAgIFNvdXBVUkkqIHVy
aTsKKyAgICBXZWJLaXRBdXRoRGF0YSogYXV0aERhdGE7CisgICAgU291cFNlc3Npb25GZWF0dXJl
KiBtYW5hZ2VyID0gKFNvdXBTZXNzaW9uRmVhdHVyZSopdXNlcl9kYXRhOworCisgICAgc291cF9z
ZXNzaW9uX3BhdXNlX21lc3NhZ2Uoc2Vzc2lvbiwgbXNnKTsKKyAgICAvKiBXZSBuZWVkIHRvIG1h
a2Ugc3VyZSB0aGUgbWVzc2FnZSBzdGlja3MgYXJvdW5kIHdoZW4gcGF1c2luZyBpdCAqLworICAg
IGdfb2JqZWN0X3JlZihtc2cpOworCisgICAgdXJpID0gc291cF9tZXNzYWdlX2dldF91cmkobXNn
KTsKKyAgICBhdXRoRGF0YSA9IGdfc2xpY2VfbmV3KFdlYktpdEF1dGhEYXRhKTsKKyAgICBhdXRo
RGF0YS0+bXNnID0gbXNnOworICAgIGF1dGhEYXRhLT5hdXRoID0gYXV0aDsKKyAgICBhdXRoRGF0
YS0+c2Vzc2lvbiA9IHNlc3Npb247CisgICAgYXV0aERhdGEtPm1hbmFnZXIgPSBtYW5hZ2VyOwor
CisgICAgLyoKKyAgICAgKiBJZiB3ZSBoYXZlIGdub21lLWtleXJpbmcgbGV0J3MgdHJ5IHRvIGZp
bmQgdGhlIHBhc3N3b3JkIGZpcnN0IGluIHRoZSByaW5nLgorICAgICAqIE90aGVyd2lzZSBqdXN0
IHNob3cgdGhlIGRpYWxvZyBzdHJhaWdodCBhd2F5CisgICAgICovCisjaWYgVVNFKEdOT01FS0VZ
UklORykKKyAgICBnbm9tZV9rZXlyaW5nX2ZpbmRfbmV0d29ya19wYXNzd29yZChOVUxMLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXBfYXV0aF9nZXRfcmVhbG0o
YXV0aCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJpLT5ob3N0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJpLT5zY2hlbWUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cF9hdXRoX2dldF9zY2hlbWVfbmFtZShh
dXRoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmktPnBvcnQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEdub21lS2V5cmluZ09w
ZXJhdGlvbkdldExpc3RDYWxsYmFjaylmaW5kX3Bhc3N3b3JkX2NhbGxiYWNrLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dGhEYXRhLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworI2Vsc2UKKyAgICBzaG93X2F1dGhfZGlh
bG9nKGF1dGhEYXRhLCBOVUxMLCBOVUxMKTsKKyNlbmRpZgorfQorCitzdGF0aWMgdm9pZCBhdHRh
Y2goU291cFNlc3Npb25GZWF0dXJlICptYW5hZ2VyLCBTb3VwU2Vzc2lvbiAqc2Vzc2lvbikKK3sK
KyAgICBnX3NpZ25hbF9jb25uZWN0KHNlc3Npb24sICJhdXRoZW50aWNhdGUiLCBHX0NBTExCQUNL
KHNlc3Npb25fYXV0aGVudGljYXRlKSwgbWFuYWdlcik7Cit9CisKK3N0YXRpYyB2b2lkIGRldGFj
aChTb3VwU2Vzc2lvbkZlYXR1cmUgKm1hbmFnZXIsIFNvdXBTZXNzaW9uICpzZXNzaW9uKQorewor
ICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVuYyhzZXNzaW9uLCBzZXNzaW9u
X2F1dGhlbnRpY2F0ZSwgbWFuYWdlcik7Cit9CisKKwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvd2Via2l0LXNvdXAtYXV0aC1kaWFsb2cuaCBiL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9zb3VwL3dlYmtpdC1zb3VwLWF1dGgtZGlhbG9nLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjQ3YjkyOAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL3dlYmtpdC1zb3VwLWF1dGgtZGlhbG9nLmgKQEAgLTAs
MCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBJZ2FsaWEgUy5MLiwgQXV0aG9y
OiBYYW4gTG9wZXogPHhsb3BlekBpZ2FsaWEuY29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICog
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICog
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0
b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSA8Z3RrL2d0ay5oPgorCisj
aWZuZGVmIFdFQktJVF9TT1VQX0FVVEhfRElBTE9HX0gKKyNkZWZpbmUgV0VCS0lUX1NPVVBfQVVU
SF9ESUFMT0dfSCAxCisKK0dfQkVHSU5fREVDTFMKKworI2RlZmluZSBXRUJLSVRfVFlQRV9TT1VQ
X0FVVEhfRElBTE9HICAgICAgICAgICAgKHdlYmtpdF9zb3VwX2F1dGhfZGlhbG9nX2dldF90eXBl
ICgpKQorI2RlZmluZSBXRUJLSVRfU09VUF9BVVRIX0RJQUxPRyhvYmplY3QpICAgICAgICAgKEdf
VFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUICgob2JqZWN0KSwgV0VCS0lUX1RZUEVfU09VUF9BVVRI
X0RJQUxPRywgV2ViS2l0U291cEF1dGhEaWFsb2cpKQorI2RlZmluZSBXRUJLSVRfU09VUF9BVVRI
X0RJQUxPR19DTEFTUyhrbGFzcykgICAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUICgoa2xhc3Mp
LCBXRUJLSVRfVFlQRV9TT1VQX0FVVEhfRElBTE9HLCBXZWJLaXRTb3VwQXV0aERpYWxvZykpCisj
ZGVmaW5lIFdFQktJVF9JU19TT1VQX0FVVEhfRElBTE9HKG9iamVjdCkgICAgICAoR19UWVBFX0NI
RUNLX0lOU1RBTkNFX1RZUEUgKChvYmplY3QpLCBXRUJLSVRfVFlQRV9TT1VQX0FVVEhfRElBTE9H
KSkKKyNkZWZpbmUgV0VCS0lUX0lTX1NPVVBfQVVUSF9ESUFMT0dfQ0xBU1Moa2xhc3MpIChHX1RZ
UEVfQ0hFQ0tfQ0xBU1NfVFlQRSAoKGtsYXNzKSwgV0VCS0lUX1RZUEVfU09VUF9BVVRIX0RJQUxP
RykpCisjZGVmaW5lIFdFQktJVF9TT1VQX0FVVEhfRElBTE9HX0dFVF9DTEFTUyhvYmopICAoR19U
WVBFX0lOU1RBTkNFX0dFVF9DTEFTUyAoKG9iaiksIFdFQktJVF9UWVBFX1NPVVBfQVVUSF9ESUFM
T0csIFdlYktpdFNvdXBBdXRoRGlhbG9nKSkKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIEdPYmpl
Y3QgcGFyZW50X2luc3RhbmNlOworfSBXZWJLaXRTb3VwQXV0aERpYWxvZzsKKwordHlwZWRlZiBz
dHJ1Y3QgeworICAgIEdPYmplY3RDbGFzcyBwYXJlbnRfY2xhc3M7CisKKyAgICBHdGtXaWRnZXQq
ICgqY3VycmVudF90b3BsZXZlbCkgKFdlYktpdFNvdXBBdXRoRGlhbG9nKiBmZWF0dXJlKTsKK30g
V2ViS2l0U291cEF1dGhEaWFsb2dDbGFzczsKKworR1R5cGUgd2Via2l0X3NvdXBfYXV0aF9kaWFs
b2dfZ2V0X3R5cGUgKHZvaWQpOworCitHX0VORF9ERUNMUworCisjZW5kaWYgLyogV0VCS0lUX1NP
VVBfQVVUSF9ESUFMT0dfSCAqLwpkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJl
LmFjCmluZGV4IDRlNWY5ODMuLjYwYzBjMmEgMTAwNjQ0Ci0tLSBhL2NvbmZpZ3VyZS5hYworKysg
Yi9jb25maWd1cmUuYWMKQEAgLTM1MCw2ICszNTAsMTQgQEAgQUNfQVJHX0VOQUJMRShnZW9sb2Nh
dGlvbiwKICAgICAgICAgICAgICAgW10sW2VuYWJsZV9nZW9sb2NhdGlvbj0ibm8iXSkKIEFDX01T
R19SRVNVTFQoWyRlbmFibGVfZ2VvbG9jYXRpb25dKQogCisjIGNoZWNrIHdoZXRoZXIgdG8gZW5h
YmxlIGdub21la2V5cmluZyBzdXBwb3J0CitBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgdG8gZW5h
YmxlIGdub21la2V5cmluZyBzdXBwb3J0XSkKK0FDX0FSR19FTkFCTEUoZ25vbWVrZXlyaW5nLAor
ICAgICAgICAgICAgICBBQ19IRUxQX1NUUklORyhbLS1lbmFibGUtZ25vbWVrZXlyaW5nXSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgW2VuYWJsZSBzdXBwb3J0IGZvciBnbm9tZWtleXJp
bmcgW2RlZmF1bHQ9bm9dXSksCisgICAgICAgICAgICAgIFtdLFtlbmFibGVfZ25vbWVrZXlyaW5n
PSJubyJdKQorQUNfTVNHX1JFU1VMVChbJGVuYWJsZV9nbm9tZWtleXJpbmddKQorCiAjIGNoZWNr
IHdoZXRoZXIgdG8gZW5hYmxlIFNWRyBzdXBwb3J0CiBBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIg
dG8gZW5hYmxlIFNWRyBzdXBwb3J0XSkKIEFDX0FSR19FTkFCTEUoc3ZnLApAQCAtNTMyLDYgKzU0
MCwxMyBAQCBpZiB0ZXN0ICIkd2l0aF9odHRwX2JhY2tlbmQiID0gInNvdXAiOyB0aGVuCiAgICBB
Q19TVUJTVChbTElCU09VUF9MSUJTXSkKIGZpCiAKK2lmIHRlc3QgIiRlbmFibGVfZ25vbWVrZXly
aW5nIiA9ICJ5ZXMiOyB0aGVuCisgICBQS0dfQ0hFQ0tfTU9EVUxFUyhbR05PTUVLRVlSSU5HXSwK
KyAgICAgICAgICAgICAgICAgICAgIFtnbm9tZS1rZXlyaW5nLTFdKQorICAgQUNfU1VCU1QoW0dO
T01FS0VZUklOR19DRkxBR1NdKQorICAgQUNfU1VCU1QoW0dOT01FS0VZUklOR19MSUJTXSkKK2Zp
CisKICMgY2hlY2sgaWYgRnJlZVR5cGUvRm9udENvbmZpZyBhcmUgYXZhaWxhYmxlCiBpZiB0ZXN0
ICIkd2l0aF9mb250X2JhY2tlbmQiID0gImZyZWV0eXBlIjsgdGhlbgogICAgaWYgdGVzdCAiJHdp
dGhfdGFyZ2V0IiA9ICJkaXJlY3RmYiI7IHRoZW4KQEAgLTYxNCw2ICs2MjksOSBAQCBBTV9DT05E
SVRJT05BTChbVEFSR0VUX0RJUkVDVEZCXSwgW3Rlc3QgIiR3aXRoX3RhcmdldCIgPSAiZGlyZWN0
ZmIiXSkKIEFNX0NPTkRJVElPTkFMKFtVU0VfQ1VSTF0sIFt0ZXN0ICIkd2l0aF9odHRwX2JhY2tl
bmQiID0gImN1cmwiXSkKIEFNX0NPTkRJVElPTkFMKFtVU0VfU09VUF0sIFt0ZXN0ICIkd2l0aF9o
dHRwX2JhY2tlbmQiID0gInNvdXAiXSkKIAorIyBBdXRoIGJhY2tlbmQgY29uZGl0aW9uYWxzCitB
TV9DT05ESVRJT05BTChbVVNFX0dOT01FS0VZUklOR10sIFt0ZXN0ICIkZW5hYmxlX2dub21la2V5
cmluZyIgPSAieWVzIl0pCisKICMgRm9udCBiYWNrZW5kIGNvbmRpdGlvbmFscwogQU1fQ09ORElU
SU9OQUwoW1VTRV9GUkVFVFlQRV0sIFt0ZXN0ICIkd2l0aF9mb250X2JhY2tlbmQiID0gImZyZWV0
eXBlIl0pCiBBTV9DT05ESVRJT05BTChbVVNFX1BBTkdPXSwgW3Rlc3QgIiR3aXRoX2ZvbnRfYmFj
a2VuZCIgPSAicGFuZ28iXSkKQEAgLTY4Myw2ICs3MDEsNyBAQCBGZWF0dXJlczoKICBXTUwgc3Vw
cG9ydCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICRlbmFi
bGVfd21sCiAgV2ViIFdvcmtlcnMgc3VwcG9ydCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgOiAkZW5hYmxlX3dlYl93b3JrZXJzCiAgR2VvbG9jYXRpb24gc3VwcG9ydCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAkZW5hYmxlX2dlb2xvY2F0aW9uCisg
R05PTUUgS2V5cmluZyBzdXBwb3J0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
OiAkZW5hYmxlX2dub21la2V5cmluZwogR1RLKyBjb25maWd1cmF0aW9uOgogIEdESyB0YXJnZXQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJHdpdGhfdGFy
Z2V0CiAgSGlsZG9uIFVJIGV4dGVuc2lvbnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgOiAkd2l0aF9oaWxkb24KLS0gCjEuNi4xCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>27730</attachid>
            <date>2009-02-17 08:40:29 -0800</date>
            <delta_ts>2009-02-17 08:45:33 -0800</delta_ts>
            <desc>keyring.patch</desc>
            <filename>keyring.patch</filename>
            <type>text/plain</type>
            <size>25926</size>
            <attacher name="Xan Lopez">xan.lopez</attacher>
            
              <data encoding="base64">RnJvbSA0MGE4Y2RkNjg2ZmM5Y2QzMTUxNmY4YTcwMGZlNWU5ZTBjYzcwOTlhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBYYW4gTG9wZXogPHhhbkBnbm9tZS5vcmc+CkRhdGU6IFR1ZSwg
MTcgRmViIDIwMDkgMTI6MDI6MjQgKzAyMDAKU3ViamVjdDogW1BBVENIXSAyMDA5LTAyLTE3ICBY
YW4gTG9wZXogIDx4YW5AZ25vbWUub3JnPgoKICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KCiAgICAgICAgV0FSTklORzogTk8gVEVTVCBDQVNFUyBBRERFRCBPUiBDSEFOR0VECgog
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk0NwogICAg
ICAgIFtHVEtdIE1pc3NpbmcgSFRUUCBBdXRoIGNoYWxsZW5nZQoKICAgICAgICBBZGQgSFRUUCBh
dXRoZW50aWNhdGlvbiBkaWFsb2cgd2l0aCBvcHRpb25hbCBHTk9NRSBLZXlyaW5nCiAgICAgICAg
c3RvcmFnZS4KCiAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oOgogICAgICAgIChXZWJDb3JlOjpSZXNvdXJj
ZUhhbmRsZUludGVybmFsOjpSZXNvdXJjZUhhbmRsZUludGVybmFsKToKICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwOgogICAgICAgIChXZWJDb3Jl
OjpjdXJyZW50VG9wbGV2ZWxDYWxsYmFjayk6CiAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFu
ZGxlOjpzdGFydEh0dHApOgogICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6c3RhcnQp
OgogICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL3dlYmtpdC1zb3VwLWF1dGgtZGlhbG9n
LmM6IEFkZGVkLgogICAgICAgICh3ZWJraXRfc291cF9hdXRoX2RpYWxvZ19jbGFzc19pbml0KToK
ICAgICAgICAod2Via2l0X3NvdXBfYXV0aF9kaWFsb2dfaW5pdCk6CiAgICAgICAgKHdlYmtpdF9z
b3VwX2F1dGhfZGlhbG9nX3Nlc3Npb25fZmVhdHVyZV9pbml0KToKICAgICAgICAoZnJlZV9hdXRo
RGF0YSk6CiAgICAgICAgKHNldF9wYXNzd29yZF9jYWxsYmFjayk6CiAgICAgICAgKHJlc3BvbnNl
X2NhbGxiYWNrKToKICAgICAgICAoc2hvd19hdXRoX2RpYWxvZyk6CiAgICAgICAgKGZpbmRfcGFz
c3dvcmRfY2FsbGJhY2spOgogICAgICAgIChzZXNzaW9uX2F1dGhlbnRpY2F0ZSk6CiAgICAgICAg
KGF0dGFjaCk6CiAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvd2Via2l0LXNvdXAtYXV0
aC1kaWFsb2cuaDogQWRkZWQuCi0tLQogQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfCAgIDEzICsKIEdOVW1ha2VmaWxlLmFtICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHwgICAgNCArLQogV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDMyICsrCiBXZWJDb3JlL0dOVW1ha2VmaWxl
LmFtICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDkgKy0KIFdlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmggIHwgICAgMyArCiAuLi4vcGxhdGZv
cm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAgICB8ICAgMzQgKysKIC4uLi9u
ZXR3b3JrL3NvdXAvd2Via2l0LXNvdXAtYXV0aC1kaWFsb2cuYyAgICAgICAgIHwgIDM0NCArKysr
KysrKysrKysrKysrKysrKwogLi4uL25ldHdvcmsvc291cC93ZWJraXQtc291cC1hdXRoLWRpYWxv
Zy5oICAgICAgICAgfCAgIDQ4ICsrKwogY29uZmlndXJlLmFjICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfCAgIDE5ICsKIDkgZmlsZXMgY2hhbmdlZCwgNTA0IGluc2VydGlv
bnMoKyksIDIgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvd2Via2l0LXNvdXAtYXV0aC1kaWFsb2cuYwogY3JlYXRlIG1vZGUgMTAw
NjQ0IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL3dlYmtpdC1zb3VwLWF1dGgtZGlhbG9n
LmgKCmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggOTc1M2QwZS4uZjE5
Nzg2NCAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtNSw2ICs1LDE5
IEBACiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk0
NwogICAgICAgICBbR1RLXSBNaXNzaW5nIEhUVFAgQXV0aCBjaGFsbGVuZ2UKIAorICAgICAgICBB
ZGQgSFRUUCBhdXRoZW50aWNhdGlvbiBkaWFsb2cgd2l0aCBvcHRpb25hbCBHTk9NRSBLZXlyaW5n
CisgICAgICAgIHN0b3JhZ2UuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAg
KiBjb25maWd1cmUuYWM6CisKKzIwMDktMDItMTYgIFhhbiBMb3BleiAgPHhhbkBnbm9tZS5vcmc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTQ3CisgICAgICAgIFtHVEtdIE1p
c3NpbmcgSFRUUCBBdXRoIGNoYWxsZW5nZQorCiAgICAgICAgIFRha2UgbWFyc2hhbGxlcnMgdG8g
YmUgYnVpbHQgZnJvbSBhIG1hbnVhbGx5IG1haW50YWluZWQgbGlzdAogICAgICAgICBpbnN0ZWFk
IG9mIGdyZXBwaW5nIHRoZSBzb3VyY2VzLgogCmRpZmYgLS1naXQgYS9HTlVtYWtlZmlsZS5hbSBi
L0dOVW1ha2VmaWxlLmFtCmluZGV4IGM3YjdiNjQuLmI0MmE3MTYgMTAwNjQ0Ci0tLSBhL0dOVW1h
a2VmaWxlLmFtCisrKyBiL0dOVW1ha2VmaWxlLmFtCkBAIC0xODIsNyArMTgyLDggQEAgbGliV2Vi
Q29yZV9sYV9DRkxBR1MgPSBcCiAJJChMSUJYU0xUX0NGTEFHUykgXAogCSQoQ09WRVJBR0VfQ0ZM
QUdTKSBcCiAJJChISUxET05fQ0ZMQUdTKSBcCi0JJChHRU9DTFVFX0NGTEFHUykKKwkkKEdFT0NM
VUVfQ0ZMQUdTKSBcCisJJChHTk9NRUtFWVJJTkdfQ0ZMQUdTKQogCiBsaWJXZWJDb3JlX2xhX0NQ
UEZMQUdTID0gXAogCSQoZ2xvYmFsX2NwcGZsYWdzKSBcCkBAIC0yMTIsNiArMjEzLDcgQEAgbGli
V2ViQ29yZV9sYV9MSUJBREQgPSBcCiAJJChKUEVHX0xJQlMpIFwKIAkkKFBOR19MSUJTKSBcCiAJ
JChHRU9DTFVFX0xJQlMpIFwKKwkkKEdOT01FS0VZUklOR19MSUJTKSBcCiAJLWxwdGhyZWFkCiAK
ICMgV2ViS2l0CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IGVmZmQwY2YuLjk5YjI0ZWUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMDktMDItMTcgIFhh
biBMb3BleiAgPHhhbkBnbm9tZS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgV0FSTklORzogTk8gVEVTVCBDQVNFUyBBRERFRCBPUiBDSEFOR0VE
CisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTQ3
CisgICAgICAgIFtHVEtdIE1pc3NpbmcgSFRUUCBBdXRoIGNoYWxsZW5nZQorCisgICAgICAgIEFk
ZCBIVFRQIGF1dGhlbnRpY2F0aW9uIGRpYWxvZyB3aXRoIG9wdGlvbmFsIEdOT01FIEtleXJpbmcK
KyAgICAgICAgc3RvcmFnZS4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oOgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VIYW5kbGVJbnRlcm5hbDo6UmVzb3VyY2VIYW5kbGVJbnRlcm5hbCk6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpjdXJyZW50VG9wbGV2ZWxDYWxsYmFjayk6CisgICAgICAgIChXZWJD
b3JlOjpSZXNvdXJjZUhhbmRsZTo6c3RhcnRIdHRwKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlSGFuZGxlOjpzdGFydCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL3dlYmtp
dC1zb3VwLWF1dGgtZGlhbG9nLmM6IEFkZGVkLgorICAgICAgICAod2Via2l0X3NvdXBfYXV0aF9k
aWFsb2dfY2xhc3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRfc291cF9hdXRoX2RpYWxvZ19pbml0
KToKKyAgICAgICAgKHdlYmtpdF9zb3VwX2F1dGhfZGlhbG9nX3Nlc3Npb25fZmVhdHVyZV9pbml0
KToKKyAgICAgICAgKGZyZWVfYXV0aERhdGEpOgorICAgICAgICAoc2V0X3Bhc3N3b3JkX2NhbGxi
YWNrKToKKyAgICAgICAgKHJlc3BvbnNlX2NhbGxiYWNrKToKKyAgICAgICAgKHNob3dfYXV0aF9k
aWFsb2cpOgorICAgICAgICAoZmluZF9wYXNzd29yZF9jYWxsYmFjayk6CisgICAgICAgIChzZXNz
aW9uX2F1dGhlbnRpY2F0ZSk6CisgICAgICAgIChhdHRhY2gpOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvc291cC93ZWJraXQtc291cC1hdXRoLWRpYWxvZy5oOiBBZGRlZC4KKwogMjAwOS0w
Mi0xNiAgQmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgU2FtIFdlaW5pZy4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9XZWJD
b3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IGU4MWMxNTguLjNkNjk2N2MgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtMTgz
MCw3ICsxODMwLDE0IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJvci5oIFwKIAlXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
c291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwIFwKIAlXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
c291cC9SZXNvdXJjZVJlcXVlc3QuaCBcCi0JV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAv
UmVzb3VyY2VSZXNwb25zZS5oCisJV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3Vy
Y2VSZXNwb25zZS5oIFwKKwlXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC93ZWJraXQtc291
cC1hdXRoLWRpYWxvZy5jIFwKKwlXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC93ZWJraXQt
c291cC1hdXRoLWRpYWxvZy5oCitlbmRpZgorCitpZiBVU0VfR05PTUVLRVlSSU5HCit3ZWJjb3Jl
X2NwcGZsYWdzICs9IFwKKwktRFdURl9VU0VfR05PTUVLRVlSSU5HPTEKIGVuZGlmCiAKICMgLS0t
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRl
cm5hbC5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwu
aAppbmRleCA2NmFhNGMxLi40ZTQ0MTdjIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmgKQEAgLTQ3LDYgKzQ3LDcgQEAKIAogI2lmIFVT
RShTT1VQKQogI2luY2x1ZGUgPGxpYnNvdXAvc291cC5oPgorY2xhc3MgRnJhbWU7CiAjZW5kaWYK
IAogI2lmIFBMQVRGT1JNKFFUKQpAQCAtMTE3LDYgKzExOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgICAgICwgbV9idWZzaXplKDApCiAgICAgICAgICAgICAsIG1fdG90YWwoMCkK
ICAgICAgICAgICAgICwgbV9pZGxlSGFuZGxlcigwKQorICAgICAgICAgICAgLCBtX2ZyYW1lKDAp
CiAjZW5kaWYKICNpZiBQTEFURk9STShRVCkKICAgICAgICAgICAgICwgbV9qb2IoMCkKQEAgLTE4
Nyw2ICsxODksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGNoYXIqIG1fYnVmZmVy
OwogICAgICAgICBnc2l6ZSBtX2J1ZnNpemUsIG1fdG90YWw7CiAgICAgICAgIGd1aW50IG1faWRs
ZUhhbmRsZXI7CisgICAgICAgIEZyYW1lKiBtX2ZyYW1lOwogI2VuZGlmCiAjaWYgUExBVEZPUk0o
UVQpCiAjaWYgUVRfVkVSU0lPTiA8IDB4MDQwNDAwCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwIGIvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcAppbmRleCA5YWI3YjhhLi5hNDRj
MWUxIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhh
bmRsZVNvdXAuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNl
SGFuZGxlU291cC5jcHAKQEAgLTI2LDIxICsyNiwyNSBAQAogCiAjaW5jbHVkZSAiQmFzZTY0Lmgi
CiAjaW5jbHVkZSAiQ29va2llSmFyU291cC5oIgorI2luY2x1ZGUgIkNocm9tZUNsaWVudC5oIgog
I2luY2x1ZGUgIkNTdHJpbmcuaCIKICNpbmNsdWRlICJEb2NMb2FkZXIuaCIKICNpbmNsdWRlICJG
cmFtZS5oIgogI2luY2x1ZGUgIkhUVFBQYXJzZXJzLmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdp
c3RyeS5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSAiUGFnZS5oIgog
I2luY2x1ZGUgIlJlc291cmNlRXJyb3IuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZUNsaWVu
dC5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlSW50ZXJuYWwuaCIKICNpbmNsdWRlICJSZXNv
dXJjZVJlc3BvbnNlLmgiCiAjaW5jbHVkZSAiVGV4dEVuY29kaW5nLmgiCisjaW5jbHVkZSAid2Vi
a2l0LXNvdXAtYXV0aC1kaWFsb2cuaCIKIAogI2luY2x1ZGUgPGVycm5vLmg+CiAjaW5jbHVkZSA8
ZmNudGwuaD4KICNpbmNsdWRlIDxnaW8vZ2lvLmg+CisjaW5jbHVkZSA8Z3RrL2d0ay5oPgogI2lu
Y2x1ZGUgPGxpYnNvdXAvc291cC5oPgogI2luY2x1ZGUgPGxpYnNvdXAvc291cC1tZXNzYWdlLmg+
CiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CkBAIC0zMDMsNiArMzA3LDI4IEBAIGJvb2wgUmVzb3Vy
Y2VIYW5kbGU6OnN0YXJ0RGF0YShTdHJpbmcgdXJsU3RyaW5nKQogICAgIHJldHVybiB0cnVlOwog
fQogCitzdGF0aWMgR3RrV2lkZ2V0KiBjdXJyZW50VG9wbGV2ZWxDYWxsYmFjayhXZWJLaXRTb3Vw
QXV0aERpYWxvZyogZmVhdHVyZSwgZ3BvaW50ZXIgdXNlckRhdGEpCit7CisgICAgUmVzb3VyY2VI
YW5kbGUqIGhhbmRsZSA9IHN0YXRpY19jYXN0PFJlc291cmNlSGFuZGxlKj4odXNlckRhdGEpOwor
ICAgIGlmICghaGFuZGxlKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIFJlc291cmNlSGFu
ZGxlSW50ZXJuYWwqIGQgPSBoYW5kbGUtPmdldEludGVybmFsKCk7CisgICAgaWYgKCFkKQorICAg
ICAgICByZXR1cm4gTlVMTDsKKworICAgIEZyYW1lKiBmcmFtZSA9IGQtPm1fZnJhbWU7CisgICAg
aWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBHdGtXaWRnZXQqIHRvcGxl
dmVsID0gIGZyYW1lLT5wYWdlKCktPmNocm9tZSgpLT5wbGF0Zm9ybVdpbmRvdygpOworCisgICAg
aWYgKEdUS19XSURHRVRfVE9QTEVWRUwodG9wbGV2ZWwpKQorICAgICAgICByZXR1cm4gdG9wbGV2
ZWw7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gTlVMTDsKK30KKwogYm9vbCBSZXNvdXJjZUhh
bmRsZTo6c3RhcnRIdHRwKFN0cmluZyB1cmxTdHJpbmcpCiB7CiAgICAgaWYgKCFzZXNzaW9uKSB7
CkBAIC0zMTAsNiArMzM2LDExIEBAIGJvb2wgUmVzb3VyY2VIYW5kbGU6OnN0YXJ0SHR0cChTdHJp
bmcgdXJsU3RyaW5nKQogCiAgICAgICAgIHNvdXBfc2Vzc2lvbl9hZGRfZmVhdHVyZShzZXNzaW9u
LCBTT1VQX1NFU1NJT05fRkVBVFVSRShnZXRDb29raWVKYXIoKSkpOwogCisgICAgICAgIFNvdXBT
ZXNzaW9uRmVhdHVyZSogYXV0aERpYWxvZyA9IHN0YXRpY19jYXN0PFNvdXBTZXNzaW9uRmVhdHVy
ZSo+KGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9TT1VQX0FVVEhfRElBTE9HLCBOVUxMKSk7Cisg
ICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QoYXV0aERpYWxvZywgImN1cnJlbnQtdG9wbGV2ZWwiLCBH
X0NBTExCQUNLKGN1cnJlbnRUb3BsZXZlbENhbGxiYWNrKSwgdGhpcyk7CisgICAgICAgIHNvdXBf
c2Vzc2lvbl9hZGRfZmVhdHVyZShzZXNzaW9uLCBhdXRoRGlhbG9nKTsKKyAgICAgICAgZ19vYmpl
Y3RfdW5yZWYoYXV0aERpYWxvZyk7CisKICAgICAgICAgY29uc3QgY2hhciogc291cF9kZWJ1ZyA9
IGdfZ2V0ZW52KCJXRUJLSVRfU09VUF9MT0dHSU5HIik7CiAgICAgICAgIGlmIChzb3VwX2RlYnVn
KSB7CiAgICAgICAgICAgICBpbnQgc291cF9kZWJ1Z19sZXZlbCA9IGF0b2koc291cF9kZWJ1Zyk7
CkBAIC00MjIsNiArNDUzLDkgQEAgYm9vbCBSZXNvdXJjZUhhbmRsZTo6c3RhcnQoRnJhbWUqIGZy
YW1lKQogICAgIFN0cmluZyB1cmxTdHJpbmcgPSB1cmwuc3RyaW5nKCk7CiAgICAgU3RyaW5nIHBy
b3RvY29sID0gdXJsLnByb3RvY29sKCk7CiAKKyAgICAvLyBVc2VkIHRvIHNldCB0aGUgYXV0aGVu
dGljYXRpb24gZGlhbG9nIHRvcGxldmVsOyBtYXkgYmUgTlVMTAorICAgIGQtPm1fZnJhbWUgPSBm
cmFtZTsKKwogICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShwcm90b2NvbCwgImRhdGEiKSkKICAg
ICAgICAgcmV0dXJuIHN0YXJ0RGF0YSh1cmxTdHJpbmcpOwogICAgIGVsc2UgaWYgKChlcXVhbEln
bm9yaW5nQ2FzZShwcm90b2NvbCwgImh0dHAiKSB8fCBlcXVhbElnbm9yaW5nQ2FzZShwcm90b2Nv
bCwgImh0dHBzIikpICYmIFNPVVBfVVJJX1ZBTElEX0ZPUl9IVFRQKHNvdXBfdXJpX25ldyh1cmxT
dHJpbmcudXRmOCgpLmRhdGEoKSkpKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL3NvdXAvd2Via2l0LXNvdXAtYXV0aC1kaWFsb2cuYyBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9zb3VwL3dlYmtpdC1zb3VwLWF1dGgtZGlhbG9nLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uODk5OGY2ZAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9zb3VwL3dlYmtpdC1zb3VwLWF1dGgtZGlhbG9nLmMKQEAgLTAsMCArMSwzNDQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgSWdhbGlhIFMuTC4sIEF1dGhvcjogWGFuIExv
cGV6IDx4bG9wZXpAaWdhbGlhLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBh
cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2
ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo
YXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv
dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91
bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlO
Ry5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAw
MjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSA8
Z3RrL2d0ay5oPgorI2luY2x1ZGUgPGxpYnNvdXAvc291cC5oPgorI2lmIFVTRShHTk9NRUtFWVJJ
TkcpCisjaW5jbHVkZSA8Z25vbWUta2V5cmluZy5oPgorI2VuZGlmCisKKyNpbmNsdWRlICJ3ZWJr
aXRtYXJzaGFsLmgiCisjaW5jbHVkZSAid2Via2l0LXNvdXAtYXV0aC1kaWFsb2cuaCIKKworc3Rh
dGljIHZvaWQgd2Via2l0X3NvdXBfYXV0aF9kaWFsb2dfc2Vzc2lvbl9mZWF0dXJlX2luaXQoU291
cFNlc3Npb25GZWF0dXJlSW50ZXJmYWNlKiBmZWF0dXJlX2ludGVyZmFjZSwgZ3BvaW50ZXIgaW50
ZXJmYWNlX2RhdGEpOworc3RhdGljIHZvaWQgYXR0YWNoKFNvdXBTZXNzaW9uRmVhdHVyZSAqbWFu
YWdlciwgU291cFNlc3Npb24gKnNlc3Npb24pOworc3RhdGljIHZvaWQgZGV0YWNoKFNvdXBTZXNz
aW9uRmVhdHVyZSAqbWFuYWdlciwgU291cFNlc3Npb24gKnNlc3Npb24pOworCitlbnVtIHsKKyAg
ICBDVVJSRU5UX1RPUExFVkVMLAorICAgIExBU1RfU0lHTkFMCit9OworCitzdGF0aWMgZ3VpbnQg
c2lnbmFsc1tMQVNUX1NJR05BTF0gPSB7IDAgfTsKKworR19ERUZJTkVfVFlQRV9XSVRIX0NPREUo
V2ViS2l0U291cEF1dGhEaWFsb2csIHdlYmtpdF9zb3VwX2F1dGhfZGlhbG9nLCBHX1RZUEVfT0JK
RUNULAorICAgICAgICAgICAgICAgICAgICAgICAgR19JTVBMRU1FTlRfSU5URVJGQUNFKFNPVVBf
VFlQRV9TRVNTSU9OX0ZFQVRVUkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgd2Via2l0X3NvdXBfYXV0aF9kaWFsb2dfc2Vzc2lvbl9mZWF0dXJlX2luaXQp
KQorCitzdGF0aWMgdm9pZCB3ZWJraXRfc291cF9hdXRoX2RpYWxvZ19jbGFzc19pbml0KFdlYktp
dFNvdXBBdXRoRGlhbG9nQ2xhc3MgKmtsYXNzKQoreworICAgIEdPYmplY3RDbGFzcyogb2JqZWN0
X2NsYXNzID0gR19PQkpFQ1RfQ0xBU1Moa2xhc3MpOworCisgICAgc2lnbmFsc1tDVVJSRU5UX1RP
UExFVkVMXSA9CisgICAgICBnX3NpZ25hbF9uZXcoImN1cnJlbnQtdG9wbGV2ZWwiLAorICAgICAg
ICAgICAgICAgICAgIEdfT0JKRUNUX0NMQVNTX1RZUEUob2JqZWN0X2NsYXNzKSwKKyAgICAgICAg
ICAgICAgICAgICBHX1NJR05BTF9SVU5fTEFTVCwKKyAgICAgICAgICAgICAgICAgICBHX1NUUlVD
VF9PRkZTRVQoV2ViS2l0U291cEF1dGhEaWFsb2dDbGFzcywgY3VycmVudF90b3BsZXZlbCksCisg
ICAgICAgICAgICAgICAgICAgTlVMTCwgTlVMTCwKKyAgICAgICAgICAgICAgICAgICB3ZWJraXRf
bWFyc2hhbF9PQkpFQ1RfX1ZPSUQsCisgICAgICAgICAgICAgICAgICAgR1RLX1RZUEVfV0lER0VU
LCAwKTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0X3NvdXBfYXV0aF9kaWFsb2dfaW5pdChXZWJL
aXRTb3VwQXV0aERpYWxvZyogaW5zdGFuY2UpCit7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF9z
b3VwX2F1dGhfZGlhbG9nX3Nlc3Npb25fZmVhdHVyZV9pbml0KFNvdXBTZXNzaW9uRmVhdHVyZUlu
dGVyZmFjZSAqZmVhdHVyZV9pbnRlcmZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncG9pbnRlciBpbnRlcmZhY2VfZGF0YSkKK3sK
KyAgICBmZWF0dXJlX2ludGVyZmFjZS0+YXR0YWNoID0gYXR0YWNoOworICAgIGZlYXR1cmVfaW50
ZXJmYWNlLT5kZXRhY2ggPSBkZXRhY2g7Cit9CisKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRBdXRo
RGF0YSB7CisgICAgU291cE1lc3NhZ2UqIG1zZzsKKyAgICBTb3VwQXV0aCogYXV0aDsKKyAgICBT
b3VwU2Vzc2lvbiogc2Vzc2lvbjsKKyAgICBTb3VwU2Vzc2lvbkZlYXR1cmUqIG1hbmFnZXI7Cisg
ICAgR3RrV2lkZ2V0KiBsb2dpbkVudHJ5OworICAgIEd0a1dpZGdldCogcGFzc3dvcmRFbnRyeTsK
KyNpZiBVU0UoR05PTUVLRVlSSU5HKQorICAgIEd0a1dpZGdldCogY2hlY2tCdXR0b247CisjZW5k
aWYKK30gV2ViS2l0QXV0aERhdGE7CisKK3N0YXRpYyB2b2lkIGZyZWVfYXV0aERhdGEoV2ViS2l0
QXV0aERhdGEqIGF1dGhEYXRhKQoreworICAgIGdfb2JqZWN0X3VucmVmKGF1dGhEYXRhLT5tc2cp
OworICAgIGdfc2xpY2VfZnJlZShXZWJLaXRBdXRoRGF0YSwgYXV0aERhdGEpOworfQorCisjaWYg
VVNFKEdOT01FS0VZUklORykKK3N0YXRpYyB2b2lkIHNldF9wYXNzd29yZF9jYWxsYmFjayhHbm9t
ZUtleXJpbmdSZXN1bHQgcmVzdWx0LCBndWludDMyIHZhbCwgZ3BvaW50ZXIgdXNlcl9kYXRhKQor
eworICAgIC8qIER1bW15IGNhbGxiYWNrLCBnbm9tZV9rZXlyaW5nX3NldF9uZXR3b3JrX3Bhc3N3
b3JkIGRvZXMgbm90IGFjY2VwdCBhIE5VTEwgb25lICovCit9CisjZW5kaWYKKworc3RhdGljIHZv
aWQgcmVzcG9uc2VfY2FsbGJhY2soR3RrRGlhbG9nKiBkaWFsb2csIGdpbnQgcmVzcG9uc2VfaWQs
IFdlYktpdEF1dGhEYXRhKiBhdXRoRGF0YSkKK3sKKyAgICBjb25zdCBjaGFyKiBsb2dpbjsKKyAg
ICBjb25zdCBjaGFyKiBwYXNzd29yZDsKKyNpZiBVU0UoR05PTUVLRVlSSU5HKQorICAgIFNvdXBV
UkkqIHVyaTsKKyAgICBnYm9vbGVhbiBzdG9yZVBhc3N3b3JkOworI2VuZGlmCisKKyAgICBzd2l0
Y2gocmVzcG9uc2VfaWQpIHsKKyAgICBjYXNlIEdUS19SRVNQT05TRV9PSzoKKyAgICAgICAgbG9n
aW4gPSBndGtfZW50cnlfZ2V0X3RleHQoR1RLX0VOVFJZKGF1dGhEYXRhLT5sb2dpbkVudHJ5KSk7
CisgICAgICAgIHBhc3N3b3JkID0gZ3RrX2VudHJ5X2dldF90ZXh0KEdUS19FTlRSWShhdXRoRGF0
YS0+cGFzc3dvcmRFbnRyeSkpOworICAgICAgICBzb3VwX2F1dGhfYXV0aGVudGljYXRlKGF1dGhE
YXRhLT5hdXRoLCBsb2dpbiwgcGFzc3dvcmQpOworCisjaWYgVVNFKEdOT01FS0VZUklORykKKyAg
ICAgICAgc3RvcmVQYXNzd29yZCA9IGd0a190b2dnbGVfYnV0dG9uX2dldF9hY3RpdmUoR1RLX1RP
R0dMRV9CVVRUT04oYXV0aERhdGEtPmNoZWNrQnV0dG9uKSk7CisgICAgICAgIGlmIChzdG9yZVBh
c3N3b3JkKSB7CisgICAgICAgICAgICB1cmkgPSBzb3VwX21lc3NhZ2VfZ2V0X3VyaShhdXRoRGF0
YS0+bXNnKTsKKyAgICAgICAgICAgIGdub21lX2tleXJpbmdfc2V0X25ldHdvcmtfcGFzc3dvcmQo
TlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9n
aW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXBf
YXV0aF9nZXRfcmVhbG0oYXV0aERhdGEtPmF1dGgpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1cmktPmhvc3QsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVyaS0+c2NoZW1lLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VwX2F1dGhfZ2V0X3NjaGVtZV9uYW1lKGF1dGhE
YXRhLT5hdXRoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdXJpLT5wb3J0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwYXNzd29yZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKEdub21lS2V5cmluZ09wZXJhdGlvbkdldEludENhbGxiYWNrKXNldF9wYXNzd29yZF9j
YWxsYmFjaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
TlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVM
TCk7CisgICAgICAgIH0KKyNlbmRpZgorICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAg
IH0KKworICAgIHNvdXBfc2Vzc2lvbl91bnBhdXNlX21lc3NhZ2UoYXV0aERhdGEtPnNlc3Npb24s
IGF1dGhEYXRhLT5tc2cpOworICAgIGZyZWVfYXV0aERhdGEoYXV0aERhdGEpOworICAgIGd0a193
aWRnZXRfZGVzdHJveShHVEtfV0lER0VUKGRpYWxvZykpOworfQorCitzdGF0aWMgR3RrV2lkZ2V0
ICoKK3RhYmxlX2FkZF9lbnRyeSAoR3RrV2lkZ2V0ICAqdGFibGUsCisgICAgICAgICAgICAgICAg
IGludCAgICAgICAgIHJvdywKKyAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbGFiZWxfdGV4
dCwKKyAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdmFsdWUsCisgICAgICAgICAgICAgICAg
IGdwb2ludGVyICAgIHVzZXJfZGF0YSkKK3sKKyAgICBHdGtXaWRnZXQgKmVudHJ5OworICAgIEd0
a1dpZGdldCAqbGFiZWw7CisKKyAgICBsYWJlbCA9IGd0a19sYWJlbF9uZXcobGFiZWxfdGV4dCk7
CisgICAgZ3RrX21pc2Nfc2V0X2FsaWdubWVudChHVEtfTUlTQyhsYWJlbCksIDAuMCwgMC41KTsK
KworICAgIGVudHJ5ID0gZ3RrX2VudHJ5X25ldygpOworCisgICAgaWYgKHZhbHVlKQorICAgICAg
ICBndGtfZW50cnlfc2V0X3RleHQoR1RLX0VOVFJZKGVudHJ5KSwgdmFsdWUpOworCisgICAgZ3Rr
X3RhYmxlX2F0dGFjaChHVEtfVEFCTEUodGFibGUpLCBsYWJlbCwKKyAgICAgICAgICAgICAgICAg
ICAgIDAsIDEsIHJvdywgcm93ICsgMSwKKyAgICAgICAgICAgICAgICAgICAgIEdUS19GSUxMLCBH
VEtfRVhQQU5EIHwgR1RLX0ZJTEwsIDAsIDApOworICAgIGd0a190YWJsZV9hdHRhY2hfZGVmYXVs
dHMoR1RLX1RBQkxFKHRhYmxlKSwgZW50cnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAxLCAyLCByb3csIHJvdyArIDEpOworCisgICAgcmV0dXJuIGVudHJ5OworfQorCitzdGF0aWMg
dm9pZCBzaG93X2F1dGhfZGlhbG9nKFdlYktpdEF1dGhEYXRhKiBhdXRoRGF0YSwgY29uc3QgY2hh
ciogbG9naW4sIGNvbnN0IGNoYXIqIHBhc3N3b3JkKQoreworICAgIEd0a1dpZGdldCogdG9wbGV2
ZWw7CisgICAgR3RrV2lkZ2V0ICp3aWRnZXQ7CisgICAgR3RrRGlhbG9nICpkaWFsb2c7CisgICAg
R3RrV2luZG93ICp3aW5kb3c7CisgICAgR3RrV2lkZ2V0ICplbnRyeUNvbnRhaW5lcjsKKyAgICBH
dGtXaWRnZXQgKmhib3gsICptYWluVkJveCwgKnZib3gsICppY29uOworICAgIEd0a1dpZGdldCAq
dGFibGU7CisgICAgR3RrV2lkZ2V0ICptZXNzYWdlTGFiZWw7CisgICAgY2hhciogbWVzc2FnZTsK
KyAgICBTb3VwVVJJKiB1cmk7CisjaWYgVVNFKEdOT01FS0VZUklORykKKyAgICBHdGtXaWRnZXQq
IHJlbWVtYmVyX2JveDsKKyAgICBHdGtXaWRnZXQqIGNoZWNrX2J1dHRvbjsKKyNlbmRpZgorCisg
ICAgLyogRnJvbSBHVEsrIGd0a21vdW50b3BlcmF0aW9uLmMsIG1vZGlmaWVkIGFuZCBzaW1wbGlm
aWVkLiBMR1BMIDIgbGljZW5zZSAqLworCisgICAgd2lkZ2V0ID0gZ3RrX2RpYWxvZ19uZXcoKTsK
KyAgICB3aW5kb3cgPSBHVEtfV0lORE9XKHdpZGdldCk7CisgICAgZGlhbG9nID0gR1RLX0RJQUxP
Ryh3aWRnZXQpOworCisgICAgZ3RrX2RpYWxvZ19hZGRfYnV0dG9ucyhkaWFsb2csCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHVEtfU1RPQ0tfQ0FOQ0VMLCBHVEtfUkVTUE9OU0VfQ0FOQ0VM
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgR1RLX1NUT0NLX09LLCBHVEtfUkVTUE9OU0Vf
T0ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKworICAgIC8qIFNldCB0aGUg
ZGlhbG9nIHVwIHdpdGggSElHIHByb3BlcnRpZXMgKi8KKyAgICBndGtfZGlhbG9nX3NldF9oYXNf
c2VwYXJhdG9yKGRpYWxvZywgRkFMU0UpOworICAgIGd0a19jb250YWluZXJfc2V0X2JvcmRlcl93
aWR0aChHVEtfQ09OVEFJTkVSIChkaWFsb2cpLCA1KTsKKyAgICBndGtfYm94X3NldF9zcGFjaW5n
KEdUS19CT1goZGlhbG9nLT52Ym94KSwgMik7IC8qIDIgKiA1ICsgMiA9IDEyICovCisgICAgZ3Rr
X2NvbnRhaW5lcl9zZXRfYm9yZGVyX3dpZHRoKEdUS19DT05UQUlORVIgKGRpYWxvZy0+YWN0aW9u
X2FyZWEpLCA1KTsKKyAgICBndGtfYm94X3NldF9zcGFjaW5nKEdUS19CT1goZGlhbG9nLT5hY3Rp
b25fYXJlYSksIDYpOworCisgICAgZ3RrX3dpbmRvd19zZXRfcmVzaXphYmxlKHdpbmRvdywgRkFM
U0UpOworICAgIGd0a193aW5kb3dfc2V0X3RpdGxlKHdpbmRvdywgIiIpOworICAgIGd0a193aW5k
b3dfc2V0X2ljb25fbmFtZSh3aW5kb3csIEdUS19TVE9DS19ESUFMT0dfQVVUSEVOVElDQVRJT04p
OworCisgICAgZ3RrX2RpYWxvZ19zZXRfZGVmYXVsdF9yZXNwb25zZShkaWFsb2csIEdUS19SRVNQ
T05TRV9PSyk7CisKKyAgICAvKiBHZXQgdGhlIGN1cnJlbnQgdG9wbGV2ZWwgKi8KKyAgICBnX3Np
Z25hbF9lbWl0KGF1dGhEYXRhLT5tYW5hZ2VyLCBzaWduYWxzW0NVUlJFTlRfVE9QTEVWRUxdLCAw
LCAmdG9wbGV2ZWwpOworCisgICAgaWYgKHRvcGxldmVsKQorICAgICAgICBndGtfd2luZG93X3Nl
dF90cmFuc2llbnRfZm9yKHdpbmRvdywgdG9wbGV2ZWwpOworCisgICAgLyogQnVpbGQgY29udGVu
dHMgKi8KKyAgICBoYm94ID0gZ3RrX2hib3hfbmV3KEZBTFNFLCAxMik7CisgICAgZ3RrX2NvbnRh
aW5lcl9zZXRfYm9yZGVyX3dpZHRoKEdUS19DT05UQUlORVIoaGJveCksIDUpOworICAgIGd0a19i
b3hfcGFja19zdGFydChHVEtfQk9YKGRpYWxvZy0+dmJveCksIGhib3gsIFRSVUUsIFRSVUUsIDAp
OworCisgICAgaWNvbiA9IGd0a19pbWFnZV9uZXdfZnJvbV9zdG9jayhHVEtfU1RPQ0tfRElBTE9H
X0FVVEhFTlRJQ0FUSU9OLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1RL
X0lDT05fU0laRV9ESUFMT0cpOworCisgICAgZ3RrX21pc2Nfc2V0X2FsaWdubWVudChHVEtfTUlT
QyhpY29uKSwgMC41LCAwLjApOworICAgIGd0a19ib3hfcGFja19zdGFydChHVEtfQk9YKGhib3gp
LCBpY29uLCBGQUxTRSwgRkFMU0UsIDApOworCisgICAgbWFpblZCb3ggPSBndGtfdmJveF9uZXco
RkFMU0UsIDE4KTsKKyAgICBndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWChoYm94KSwgbWFpblZC
b3gsIFRSVUUsIFRSVUUsIDApOworCisgICAgdXJpID0gc291cF9tZXNzYWdlX2dldF91cmkoYXV0
aERhdGEtPm1zZyk7CisgICAgbWVzc2FnZSA9IGdfc3RyZHVwX3ByaW50ZigiQSB1c2VybmFtZSBh
bmQgcGFzc3dvcmQgYXJlIGJlaW5nIHJlcXVlc3RlZCBieSB0aGUgc2l0ZSAlcyIsIHVyaS0+aG9z
dCk7CisgICAgbWVzc2FnZUxhYmVsID0gZ3RrX2xhYmVsX25ldyhtZXNzYWdlKTsKKyAgICBnX2Zy
ZWUobWVzc2FnZSk7CisgICAgZ3RrX21pc2Nfc2V0X2FsaWdubWVudChHVEtfTUlTQyhtZXNzYWdl
TGFiZWwpLCAwLjAsIDAuNSk7CisgICAgZ3RrX2xhYmVsX3NldF9saW5lX3dyYXAoR1RLX0xBQkVM
KG1lc3NhZ2VMYWJlbCksIFRSVUUpOworICAgIGd0a19ib3hfcGFja19zdGFydChHVEtfQk9YKG1h
aW5WQm94KSwgR1RLX1dJREdFVChtZXNzYWdlTGFiZWwpLAorICAgICAgICAgICAgICAgICAgICAg
ICBGQUxTRSwgRkFMU0UsIDApOworCisgICAgdmJveCA9IGd0a192Ym94X25ldyhGQUxTRSwgNik7
CisgICAgZ3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1ggKG1haW5WQm94KSwgdmJveCwgRkFMU0Us
IEZBTFNFLCAwKTsKKworICAgIC8qIFRoZSB0YWJsZSB0aGF0IGhvbGRzIHRoZSBlbnRyaWVzICov
CisgICAgZW50cnlDb250YWluZXIgPSBndGtfYWxpZ25tZW50X25ldygwLjAsIDAuMCwgMS4wLCAx
LjApOworCisgICAgZ3RrX2FsaWdubWVudF9zZXRfcGFkZGluZyhHVEtfQUxJR05NRU5UKGVudHJ5
Q29udGFpbmVyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIDAsIDApOwor
CisgICAgZ3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1godmJveCksIGVudHJ5Q29udGFpbmVyLAor
ICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSwgRkFMU0UsIDApOworCisgICAgdGFibGUgPSBn
dGtfdGFibGVfbmV3KDIsIDIsIEZBTFNFKTsKKyAgICBndGtfdGFibGVfc2V0X2NvbF9zcGFjaW5n
cyhHVEtfVEFCTEUgKHRhYmxlKSwgMTIpOworICAgIGd0a190YWJsZV9zZXRfcm93X3NwYWNpbmdz
KEdUS19UQUJMRSAodGFibGUpLCA2KTsKKyAgICBndGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJ
TkVSKGVudHJ5Q29udGFpbmVyKSwgdGFibGUpOworCisgICAgYXV0aERhdGEtPmxvZ2luRW50cnkg
PSB0YWJsZV9hZGRfZW50cnkodGFibGUsIDAsICJVc2VybmFtZToiLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2luLCBOVUxMKTsKKyAgICBndGtfZW50cnlf
c2V0X2FjdGl2YXRlc19kZWZhdWx0KEdUS19FTlRSWShhdXRoRGF0YS0+bG9naW5FbnRyeSksIFRS
VUUpOworCisgICAgYXV0aERhdGEtPnBhc3N3b3JkRW50cnkgPSB0YWJsZV9hZGRfZW50cnkodGFi
bGUsIDEsICJQYXNzd29yZDoiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHBhc3N3b3JkLCBOVUxMKTsKKworICAgIGd0a19lbnRyeV9zZXRfdmlzaWJpbGl0
eShHVEtfRU5UUlkoYXV0aERhdGEtPnBhc3N3b3JkRW50cnkpLCBGQUxTRSk7CisKKyNpZiBVU0Uo
R05PTUVLRVlSSU5HKQorICAgIHJlbWVtYmVyX2JveCA9IGd0a192Ym94X25ldyAoRkFMU0UsIDYp
OworICAgIGd0a19ib3hfcGFja19zdGFydCAoR1RLX0JPWCAodmJveCksIHJlbWVtYmVyX2JveCwK
KyAgICAgICAgICAgICAgICAgICAgICAgIEZBTFNFLCBGQUxTRSwgMCk7CisKKyAgICBjaGVja19i
dXR0b24gPSBndGtfY2hlY2tfYnV0dG9uX25ld193aXRoX2xhYmVsKCJSZW1lbWJlciBwYXNzd29y
ZCIpOworICAgIGlmIChsb2dpbiAmJiBwYXNzd29yZCkKKyAgICAgICAgZ3RrX3RvZ2dsZV9idXR0
b25fc2V0X2FjdGl2ZShHVEtfVE9HR0xFX0JVVFRPTihjaGVja19idXR0b24pLCBUUlVFKTsKKyAg
ICBndGtfbGFiZWxfc2V0X2xpbmVfd3JhcChHVEtfTEFCRUwoZ3RrX2Jpbl9nZXRfY2hpbGQoR1RL
X0JJTihjaGVja19idXR0b24pKSksIFRSVUUpOworICAgIGd0a19ib3hfcGFja19zdGFydCAoR1RL
X0JPWCAocmVtZW1iZXJfYm94KSwgY2hlY2tfYnV0dG9uLCBGQUxTRSwgRkFMU0UsIDApOworICAg
IGF1dGhEYXRhLT5jaGVja0J1dHRvbiA9IGNoZWNrX2J1dHRvbjsKKyNlbmRpZgorCisgICAgZ19z
aWduYWxfY29ubmVjdChkaWFsb2csICJyZXNwb25zZSIsIEdfQ0FMTEJBQ0socmVzcG9uc2VfY2Fs
bGJhY2spLCBhdXRoRGF0YSk7CisgICAgZ3RrX3dpZGdldF9zaG93X2FsbCh3aWRnZXQpOworfQor
CisjaWYgVVNFKEdOT01FS0VZUklORykKK3N0YXRpYyB2b2lkIGZpbmRfcGFzc3dvcmRfY2FsbGJh
Y2soR25vbWVLZXlyaW5nUmVzdWx0IHJlc3VsdCwgR0xpc3QqIGxpc3QsIFdlYktpdEF1dGhEYXRh
KiBhdXRoRGF0YSkKK3sKKyAgICBHTGlzdCogcDsKKyAgICBjb25zdCBjaGFyKiBsb2dpbiA9IE5V
TEw7CisgICAgY29uc3QgY2hhciogcGFzc3dvcmQgPSBOVUxMOworCisgICAgZm9yIChwID0gbGlz
dDsgcDsgcCA9IHAtPm5leHQpIHsKKyAgICAgICAgLyogRklYTUU6IHN1cHBvcnQgbXVsdGlwbGUg
bG9naW5zL3Bhc3N3b3JkcyA/ICovCisgICAgICAgIEdub21lS2V5cmluZ05ldHdvcmtQYXNzd29y
ZERhdGEqIGRhdGEgPSAoR25vbWVLZXlyaW5nTmV0d29ya1Bhc3N3b3JkRGF0YSopcC0+ZGF0YTsK
KyAgICAgICAgbG9naW4gPSBkYXRhLT51c2VyOworICAgICAgICBwYXNzd29yZCA9IGRhdGEtPnBh
c3N3b3JkOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBzaG93X2F1dGhfZGlhbG9nKGF1
dGhEYXRhLCBsb2dpbiwgcGFzc3dvcmQpOworfQorI2VuZGlmCisKK3N0YXRpYyB2b2lkIHNlc3Np
b25fYXV0aGVudGljYXRlKFNvdXBTZXNzaW9uKiBzZXNzaW9uLCBTb3VwTWVzc2FnZSogbXNnLCBT
b3VwQXV0aCogYXV0aCwgZ2Jvb2xlYW4gcmV0cnlpbmcsIGdwb2ludGVyIHVzZXJfZGF0YSkKK3sK
KyAgICBTb3VwVVJJKiB1cmk7CisgICAgV2ViS2l0QXV0aERhdGEqIGF1dGhEYXRhOworICAgIFNv
dXBTZXNzaW9uRmVhdHVyZSogbWFuYWdlciA9IChTb3VwU2Vzc2lvbkZlYXR1cmUqKXVzZXJfZGF0
YTsKKworICAgIHNvdXBfc2Vzc2lvbl9wYXVzZV9tZXNzYWdlKHNlc3Npb24sIG1zZyk7CisgICAg
LyogV2UgbmVlZCB0byBtYWtlIHN1cmUgdGhlIG1lc3NhZ2Ugc3RpY2tzIGFyb3VuZCB3aGVuIHBh
dXNpbmcgaXQgKi8KKyAgICBnX29iamVjdF9yZWYobXNnKTsKKworICAgIHVyaSA9IHNvdXBfbWVz
c2FnZV9nZXRfdXJpKG1zZyk7CisgICAgYXV0aERhdGEgPSBnX3NsaWNlX25ldyhXZWJLaXRBdXRo
RGF0YSk7CisgICAgYXV0aERhdGEtPm1zZyA9IG1zZzsKKyAgICBhdXRoRGF0YS0+YXV0aCA9IGF1
dGg7CisgICAgYXV0aERhdGEtPnNlc3Npb24gPSBzZXNzaW9uOworICAgIGF1dGhEYXRhLT5tYW5h
Z2VyID0gbWFuYWdlcjsKKworICAgIC8qCisgICAgICogSWYgd2UgaGF2ZSBnbm9tZS1rZXlyaW5n
IGxldCdzIHRyeSB0byBmaW5kIHRoZSBwYXNzd29yZCBmaXJzdCBpbiB0aGUgcmluZy4KKyAgICAg
KiBPdGhlcndpc2UganVzdCBzaG93IHRoZSBkaWFsb2cgc3RyYWlnaHQgYXdheQorICAgICAqLwor
I2lmIFVTRShHTk9NRUtFWVJJTkcpCisgICAgZ25vbWVfa2V5cmluZ19maW5kX25ldHdvcmtfcGFz
c3dvcmQoTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3Vw
X2F1dGhfZ2V0X3JlYWxtKGF1dGgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHVyaS0+aG9zdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVyaS0+c2No
ZW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXBfYXV0aF9n
ZXRfc2NoZW1lX25hbWUoYXV0aCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdXJpLT5wb3J0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IChHbm9tZUtleXJpbmdPcGVyYXRpb25HZXRMaXN0Q2FsbGJhY2spZmluZF9wYXNzd29yZF9jYWxs
YmFjaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRoRGF0YSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKyNlbHNlCisg
ICAgc2hvd19hdXRoX2RpYWxvZyhhdXRoRGF0YSwgTlVMTCwgTlVMTCk7CisjZW5kaWYKK30KKwor
c3RhdGljIHZvaWQgYXR0YWNoKFNvdXBTZXNzaW9uRmVhdHVyZSAqbWFuYWdlciwgU291cFNlc3Np
b24gKnNlc3Npb24pCit7CisgICAgZ19zaWduYWxfY29ubmVjdChzZXNzaW9uLCAiYXV0aGVudGlj
YXRlIiwgR19DQUxMQkFDSyhzZXNzaW9uX2F1dGhlbnRpY2F0ZSksIG1hbmFnZXIpOworfQorCitz
dGF0aWMgdm9pZCBkZXRhY2goU291cFNlc3Npb25GZWF0dXJlICptYW5hZ2VyLCBTb3VwU2Vzc2lv
biAqc2Vzc2lvbikKK3sKKyAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2Z1bmMo
c2Vzc2lvbiwgc2Vzc2lvbl9hdXRoZW50aWNhdGUsIG1hbmFnZXIpOworfQorCisKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL3dlYmtpdC1zb3VwLWF1dGgtZGlhbG9n
LmggYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC93ZWJraXQtc291cC1hdXRoLWRpYWxv
Zy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI0N2I5MjgKLS0tIC9kZXYv
bnVsbAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC93ZWJraXQtc291cC1hdXRo
LWRpYWxvZy5oCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgSWdh
bGlhIFMuTC4sIEF1dGhvcjogWGFuIExvcGV6IDx4bG9wZXpAaWdhbGlhLmNvbT4KKyAqCisgKiBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor
ICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJy
YXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUg
PGd0ay9ndGsuaD4KKworI2lmbmRlZiBXRUJLSVRfU09VUF9BVVRIX0RJQUxPR19ICisjZGVmaW5l
IFdFQktJVF9TT1VQX0FVVEhfRElBTE9HX0ggMQorCitHX0JFR0lOX0RFQ0xTCisKKyNkZWZpbmUg
V0VCS0lUX1RZUEVfU09VUF9BVVRIX0RJQUxPRyAgICAgICAgICAgICh3ZWJraXRfc291cF9hdXRo
X2RpYWxvZ19nZXRfdHlwZSAoKSkKKyNkZWZpbmUgV0VCS0lUX1NPVVBfQVVUSF9ESUFMT0cob2Jq
ZWN0KSAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCAoKG9iamVjdCksIFdFQktJ
VF9UWVBFX1NPVVBfQVVUSF9ESUFMT0csIFdlYktpdFNvdXBBdXRoRGlhbG9nKSkKKyNkZWZpbmUg
V0VCS0lUX1NPVVBfQVVUSF9ESUFMT0dfQ0xBU1Moa2xhc3MpICAgIChHX1RZUEVfQ0hFQ0tfQ0xB
U1NfQ0FTVCAoKGtsYXNzKSwgV0VCS0lUX1RZUEVfU09VUF9BVVRIX0RJQUxPRywgV2ViS2l0U291
cEF1dGhEaWFsb2cpKQorI2RlZmluZSBXRUJLSVRfSVNfU09VUF9BVVRIX0RJQUxPRyhvYmplY3Qp
ICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFICgob2JqZWN0KSwgV0VCS0lUX1RZUEVf
U09VUF9BVVRIX0RJQUxPRykpCisjZGVmaW5lIFdFQktJVF9JU19TT1VQX0FVVEhfRElBTE9HX0NM
QVNTKGtsYXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUgKChrbGFzcyksIFdFQktJVF9UWVBF
X1NPVVBfQVVUSF9ESUFMT0cpKQorI2RlZmluZSBXRUJLSVRfU09VUF9BVVRIX0RJQUxPR19HRVRf
Q0xBU1Mob2JqKSAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MgKChvYmopLCBXRUJLSVRfVFlQ
RV9TT1VQX0FVVEhfRElBTE9HLCBXZWJLaXRTb3VwQXV0aERpYWxvZykpCisKK3R5cGVkZWYgc3Ry
dWN0IHsKKyAgICBHT2JqZWN0IHBhcmVudF9pbnN0YW5jZTsKK30gV2ViS2l0U291cEF1dGhEaWFs
b2c7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBHT2JqZWN0Q2xhc3MgcGFyZW50X2NsYXNzOwor
CisgICAgR3RrV2lkZ2V0KiAoKmN1cnJlbnRfdG9wbGV2ZWwpIChXZWJLaXRTb3VwQXV0aERpYWxv
ZyogZmVhdHVyZSk7Cit9IFdlYktpdFNvdXBBdXRoRGlhbG9nQ2xhc3M7CisKK0dUeXBlIHdlYmtp
dF9zb3VwX2F1dGhfZGlhbG9nX2dldF90eXBlICh2b2lkKTsKKworR19FTkRfREVDTFMKKworI2Vu
ZGlmIC8qIFdFQktJVF9TT1VQX0FVVEhfRElBTE9HX0ggKi8KZGlmZiAtLWdpdCBhL2NvbmZpZ3Vy
ZS5hYyBiL2NvbmZpZ3VyZS5hYwppbmRleCA0ZTVmOTgzLi42MGMwYzJhIDEwMDY0NAotLS0gYS9j
b25maWd1cmUuYWMKKysrIGIvY29uZmlndXJlLmFjCkBAIC0zNTAsNiArMzUwLDE0IEBAIEFDX0FS
R19FTkFCTEUoZ2VvbG9jYXRpb24sCiAgICAgICAgICAgICAgIFtdLFtlbmFibGVfZ2VvbG9jYXRp
b249Im5vIl0pCiBBQ19NU0dfUkVTVUxUKFskZW5hYmxlX2dlb2xvY2F0aW9uXSkKIAorIyBjaGVj
ayB3aGV0aGVyIHRvIGVuYWJsZSBnbm9tZWtleXJpbmcgc3VwcG9ydAorQUNfTVNHX0NIRUNLSU5H
KFt3aGV0aGVyIHRvIGVuYWJsZSBnbm9tZWtleXJpbmcgc3VwcG9ydF0pCitBQ19BUkdfRU5BQkxF
KGdub21la2V5cmluZywKKyAgICAgICAgICAgICAgQUNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLWdu
b21la2V5cmluZ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtlbmFibGUgc3VwcG9y
dCBmb3IgZ25vbWVrZXlyaW5nIFtkZWZhdWx0PW5vXV0pLAorICAgICAgICAgICAgICBbXSxbZW5h
YmxlX2dub21la2V5cmluZz0ibm8iXSkKK0FDX01TR19SRVNVTFQoWyRlbmFibGVfZ25vbWVrZXly
aW5nXSkKKwogIyBjaGVjayB3aGV0aGVyIHRvIGVuYWJsZSBTVkcgc3VwcG9ydAogQUNfTVNHX0NI
RUNLSU5HKFt3aGV0aGVyIHRvIGVuYWJsZSBTVkcgc3VwcG9ydF0pCiBBQ19BUkdfRU5BQkxFKHN2
ZywKQEAgLTUzMiw2ICs1NDAsMTMgQEAgaWYgdGVzdCAiJHdpdGhfaHR0cF9iYWNrZW5kIiA9ICJz
b3VwIjsgdGhlbgogICAgQUNfU1VCU1QoW0xJQlNPVVBfTElCU10pCiBmaQogCitpZiB0ZXN0ICIk
ZW5hYmxlX2dub21la2V5cmluZyIgPSAieWVzIjsgdGhlbgorICAgUEtHX0NIRUNLX01PRFVMRVMo
W0dOT01FS0VZUklOR10sCisgICAgICAgICAgICAgICAgICAgICBbZ25vbWUta2V5cmluZy0xXSkK
KyAgIEFDX1NVQlNUKFtHTk9NRUtFWVJJTkdfQ0ZMQUdTXSkKKyAgIEFDX1NVQlNUKFtHTk9NRUtF
WVJJTkdfTElCU10pCitmaQorCiAjIGNoZWNrIGlmIEZyZWVUeXBlL0ZvbnRDb25maWcgYXJlIGF2
YWlsYWJsZQogaWYgdGVzdCAiJHdpdGhfZm9udF9iYWNrZW5kIiA9ICJmcmVldHlwZSI7IHRoZW4K
ICAgIGlmIHRlc3QgIiR3aXRoX3RhcmdldCIgPSAiZGlyZWN0ZmIiOyB0aGVuCkBAIC02MTQsNiAr
NjI5LDkgQEAgQU1fQ09ORElUSU9OQUwoW1RBUkdFVF9ESVJFQ1RGQl0sIFt0ZXN0ICIkd2l0aF90
YXJnZXQiID0gImRpcmVjdGZiIl0pCiBBTV9DT05ESVRJT05BTChbVVNFX0NVUkxdLCBbdGVzdCAi
JHdpdGhfaHR0cF9iYWNrZW5kIiA9ICJjdXJsIl0pCiBBTV9DT05ESVRJT05BTChbVVNFX1NPVVBd
LCBbdGVzdCAiJHdpdGhfaHR0cF9iYWNrZW5kIiA9ICJzb3VwIl0pCiAKKyMgQXV0aCBiYWNrZW5k
IGNvbmRpdGlvbmFscworQU1fQ09ORElUSU9OQUwoW1VTRV9HTk9NRUtFWVJJTkddLCBbdGVzdCAi
JGVuYWJsZV9nbm9tZWtleXJpbmciID0gInllcyJdKQorCiAjIEZvbnQgYmFja2VuZCBjb25kaXRp
b25hbHMKIEFNX0NPTkRJVElPTkFMKFtVU0VfRlJFRVRZUEVdLCBbdGVzdCAiJHdpdGhfZm9udF9i
YWNrZW5kIiA9ICJmcmVldHlwZSJdKQogQU1fQ09ORElUSU9OQUwoW1VTRV9QQU5HT10sIFt0ZXN0
ICIkd2l0aF9mb250X2JhY2tlbmQiID0gInBhbmdvIl0pCkBAIC02ODMsNiArNzAxLDcgQEAgRmVh
dHVyZXM6CiAgV01MIHN1cHBvcnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgOiAkZW5hYmxlX3dtbAogIFdlYiBXb3JrZXJzIHN1cHBvcnQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDogJGVuYWJsZV93ZWJfd29ya2VycwogIEdlb2xvY2F0
aW9uIHN1cHBvcnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJGVuYWJs
ZV9nZW9sb2NhdGlvbgorIEdOT01FIEtleXJpbmcgc3VwcG9ydCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDogJGVuYWJsZV9nbm9tZWtleXJpbmcKIEdUSysgY29uZmlndXJhdGlv
bjoKICBHREsgdGFyZ2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA6ICR3aXRoX3RhcmdldAogIEhpbGRvbiBVSSBleHRlbnNpb25zICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDogJHdpdGhfaGlsZG9uCi0tIAoxLjYuMQoK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>27731</attachid>
            <date>2009-02-17 08:45:33 -0800</date>
            <delta_ts>2009-02-26 07:58:44 -0800</delta_ts>
            <desc>keyring.patch</desc>
            <filename>keyring.patch</filename>
            <type>text/plain</type>
            <size>25910</size>
            <attacher name="Xan Lopez">xan.lopez</attacher>
            
              <data encoding="base64">RnJvbSA5NTQ3M2MwYTMwN2UyOTRmM2U2ODE4M2NlZGI0ZDgwMGUxYWIzZjdiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBYYW4gTG9wZXogPHhhbkBnbm9tZS5vcmc+CkRhdGU6IFR1ZSwg
MTcgRmViIDIwMDkgMTI6MDI6MjQgKzAyMDAKU3ViamVjdDogW1BBVENIXSAyMDA5LTAyLTE3ICBY
YW4gTG9wZXogIDx4YW5AZ25vbWUub3JnPgoKICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KCiAgICAgICAgV0FSTklORzogTk8gVEVTVCBDQVNFUyBBRERFRCBPUiBDSEFOR0VECgog
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk0NwogICAg
ICAgIFtHVEtdIE1pc3NpbmcgSFRUUCBBdXRoIGNoYWxsZW5nZQoKICAgICAgICBBZGQgSFRUUCBh
dXRoZW50aWNhdGlvbiBkaWFsb2cgd2l0aCBvcHRpb25hbCBHTk9NRSBLZXlyaW5nCiAgICAgICAg
c3RvcmFnZS4KCiAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oOgogICAgICAgIChXZWJDb3JlOjpSZXNvdXJj
ZUhhbmRsZUludGVybmFsOjpSZXNvdXJjZUhhbmRsZUludGVybmFsKToKICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwOgogICAgICAgIChXZWJDb3Jl
OjpjdXJyZW50VG9wbGV2ZWxDYWxsYmFjayk6CiAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFu
ZGxlOjpzdGFydEh0dHApOgogICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6c3RhcnQp
OgogICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL3dlYmtpdC1zb3VwLWF1dGgtZGlhbG9n
LmM6IEFkZGVkLgogICAgICAgICh3ZWJraXRfc291cF9hdXRoX2RpYWxvZ19jbGFzc19pbml0KToK
ICAgICAgICAod2Via2l0X3NvdXBfYXV0aF9kaWFsb2dfaW5pdCk6CiAgICAgICAgKHdlYmtpdF9z
b3VwX2F1dGhfZGlhbG9nX3Nlc3Npb25fZmVhdHVyZV9pbml0KToKICAgICAgICAoZnJlZV9hdXRo
RGF0YSk6CiAgICAgICAgKHNldF9wYXNzd29yZF9jYWxsYmFjayk6CiAgICAgICAgKHJlc3BvbnNl
X2NhbGxiYWNrKToKICAgICAgICAoc2hvd19hdXRoX2RpYWxvZyk6CiAgICAgICAgKGZpbmRfcGFz
c3dvcmRfY2FsbGJhY2spOgogICAgICAgIChzZXNzaW9uX2F1dGhlbnRpY2F0ZSk6CiAgICAgICAg
KGF0dGFjaCk6CiAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvd2Via2l0LXNvdXAtYXV0
aC1kaWFsb2cuaDogQWRkZWQuCi0tLQogQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfCAgIDEzICsKIEdOVW1ha2VmaWxlLmFtICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHwgICAgNCArLQogV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDMyICsrCiBXZWJDb3JlL0dOVW1ha2VmaWxl
LmFtICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDkgKy0KIFdlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmggIHwgICAgMyArCiAuLi4vcGxhdGZv
cm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAgICB8ICAgMzQgKysKIC4uLi9u
ZXR3b3JrL3NvdXAvd2Via2l0LXNvdXAtYXV0aC1kaWFsb2cuYyAgICAgICAgIHwgIDM0MyArKysr
KysrKysrKysrKysrKysrKwogLi4uL25ldHdvcmsvc291cC93ZWJraXQtc291cC1hdXRoLWRpYWxv
Zy5oICAgICAgICAgfCAgIDQ4ICsrKwogY29uZmlndXJlLmFjICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfCAgIDE5ICsrCiA5IGZpbGVzIGNoYW5nZWQsIDUwMyBpbnNlcnRp
b25zKCspLCAyIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IFdlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9zb3VwL3dlYmtpdC1zb3VwLWF1dGgtZGlhbG9nLmMKIGNyZWF0ZSBtb2RlIDEw
MDY0NCBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC93ZWJraXQtc291cC1hdXRoLWRpYWxv
Zy5oCgpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IDk3NTNkMGUuLmYx
OTc4NjQgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTUsNiArNSwx
OSBAQAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5
NDcKICAgICAgICAgW0dUS10gTWlzc2luZyBIVFRQIEF1dGggY2hhbGxlbmdlCiAKKyAgICAgICAg
QWRkIEhUVFAgYXV0aGVudGljYXRpb24gZGlhbG9nIHdpdGggb3B0aW9uYWwgR05PTUUgS2V5cmlu
ZworICAgICAgICBzdG9yYWdlLgorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAg
ICogY29uZmlndXJlLmFjOgorCisyMDA5LTAyLTE2ICBYYW4gTG9wZXogIDx4YW5AZ25vbWUub3Jn
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk0NworICAgICAgICBbR1RLXSBN
aXNzaW5nIEhUVFAgQXV0aCBjaGFsbGVuZ2UKKwogICAgICAgICBUYWtlIG1hcnNoYWxsZXJzIHRv
IGJlIGJ1aWx0IGZyb20gYSBtYW51YWxseSBtYWludGFpbmVkIGxpc3QKICAgICAgICAgaW5zdGVh
ZCBvZiBncmVwcGluZyB0aGUgc291cmNlcy4KIApkaWZmIC0tZ2l0IGEvR05VbWFrZWZpbGUuYW0g
Yi9HTlVtYWtlZmlsZS5hbQppbmRleCBjN2I3YjY0Li5iNDJhNzE2IDEwMDY0NAotLS0gYS9HTlVt
YWtlZmlsZS5hbQorKysgYi9HTlVtYWtlZmlsZS5hbQpAQCAtMTgyLDcgKzE4Miw4IEBAIGxpYldl
YkNvcmVfbGFfQ0ZMQUdTID0gXAogCSQoTElCWFNMVF9DRkxBR1MpIFwKIAkkKENPVkVSQUdFX0NG
TEFHUykgXAogCSQoSElMRE9OX0NGTEFHUykgXAotCSQoR0VPQ0xVRV9DRkxBR1MpCisJJChHRU9D
TFVFX0NGTEFHUykgXAorCSQoR05PTUVLRVlSSU5HX0NGTEFHUykKIAogbGliV2ViQ29yZV9sYV9D
UFBGTEFHUyA9IFwKIAkkKGdsb2JhbF9jcHBmbGFncykgXApAQCAtMjEyLDYgKzIxMyw3IEBAIGxp
YldlYkNvcmVfbGFfTElCQUREID0gXAogCSQoSlBFR19MSUJTKSBcCiAJJChQTkdfTElCUykgXAog
CSQoR0VPQ0xVRV9MSUJTKSBcCisJJChHTk9NRUtFWVJJTkdfTElCUykgXAogCS1scHRocmVhZAog
CiAjIFdlYktpdApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5n
ZUxvZwppbmRleCBlZmZkMGNmLi45OWIyNGVlIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxv
ZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDA5LTAyLTE3ICBY
YW4gTG9wZXogIDx4YW5AZ25vbWUub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFdBUk5JTkc6IE5PIFRFU1QgQ0FTRVMgQURERUQgT1IgQ0hBTkdF
RAorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk0
NworICAgICAgICBbR1RLXSBNaXNzaW5nIEhUVFAgQXV0aCBjaGFsbGVuZ2UKKworICAgICAgICBB
ZGQgSFRUUCBhdXRoZW50aWNhdGlvbiBkaWFsb2cgd2l0aCBvcHRpb25hbCBHTk9NRSBLZXlyaW5n
CisgICAgICAgIHN0b3JhZ2UuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlSGFuZGxlSW50ZXJuYWw6OlJlc291cmNlSGFuZGxlSW50ZXJuYWwpOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Y3VycmVudFRvcGxldmVsQ2FsbGJhY2spOgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VIYW5kbGU6OnN0YXJ0SHR0cCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUhhbmRsZTo6c3RhcnQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC93ZWJr
aXQtc291cC1hdXRoLWRpYWxvZy5jOiBBZGRlZC4KKyAgICAgICAgKHdlYmtpdF9zb3VwX2F1dGhf
ZGlhbG9nX2NsYXNzX2luaXQpOgorICAgICAgICAod2Via2l0X3NvdXBfYXV0aF9kaWFsb2dfaW5p
dCk6CisgICAgICAgICh3ZWJraXRfc291cF9hdXRoX2RpYWxvZ19zZXNzaW9uX2ZlYXR1cmVfaW5p
dCk6CisgICAgICAgIChmcmVlX2F1dGhEYXRhKToKKyAgICAgICAgKHNldF9wYXNzd29yZF9jYWxs
YmFjayk6CisgICAgICAgIChyZXNwb25zZV9jYWxsYmFjayk6CisgICAgICAgIChzaG93X2F1dGhf
ZGlhbG9nKToKKyAgICAgICAgKGZpbmRfcGFzc3dvcmRfY2FsbGJhY2spOgorICAgICAgICAoc2Vz
c2lvbl9hdXRoZW50aWNhdGUpOgorICAgICAgICAoYXR0YWNoKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvd2Via2l0LXNvdXAtYXV0aC1kaWFsb2cuaDogQWRkZWQuCisKIDIwMDkt
MDItMTYgIEJldGggRGFraW4gIDxiZGFraW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IFNhbSBXZWluaWcuCmRpZmYgLS1naXQgYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5hbQppbmRleCBlODFjMTU4Li4zZDY5NjdjIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTE4
MzAsNyArMTgzMCwxNCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3IuaCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvUmVzb3VyY2VSZXF1ZXN0LmggXAotCVdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3Vw
L1Jlc291cmNlUmVzcG9uc2UuaAorCVdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291
cmNlUmVzcG9uc2UuaCBcCisJV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvd2Via2l0LXNv
dXAtYXV0aC1kaWFsb2cuYyBcCisJV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvd2Via2l0
LXNvdXAtYXV0aC1kaWFsb2cuaAorZW5kaWYKKworaWYgVVNFX0dOT01FS0VZUklORword2ViY29y
ZV9jcHBmbGFncyArPSBcCisJLURXVEZfVVNFX0dOT01FS0VZUklORz0xCiBlbmRpZgogCiAjIC0t
LQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50
ZXJuYWwuaCBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFs
LmgKaW5kZXggNjZhYTRjMS4uNGU0NDE3YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oCkBAIC00Nyw2ICs0Nyw3IEBACiAKICNpZiBV
U0UoU09VUCkKICNpbmNsdWRlIDxsaWJzb3VwL3NvdXAuaD4KK2NsYXNzIEZyYW1lOwogI2VuZGlm
CiAKICNpZiBQTEFURk9STShRVCkKQEAgLTExNyw2ICsxMTgsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgICAgICAsIG1fYnVmc2l6ZSgwKQogICAgICAgICAgICAgLCBtX3RvdGFsKDAp
CiAgICAgICAgICAgICAsIG1faWRsZUhhbmRsZXIoMCkKKyAgICAgICAgICAgICwgbV9mcmFtZSgw
KQogI2VuZGlmCiAjaWYgUExBVEZPUk0oUVQpCiAgICAgICAgICAgICAsIG1fam9iKDApCkBAIC0x
ODcsNiArMTg5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBjaGFyKiBtX2J1ZmZl
cjsKICAgICAgICAgZ3NpemUgbV9idWZzaXplLCBtX3RvdGFsOwogICAgICAgICBndWludCBtX2lk
bGVIYW5kbGVyOworICAgICAgICBGcmFtZSogbV9mcmFtZTsKICNlbmRpZgogI2lmIFBMQVRGT1JN
KFFUKQogI2lmIFFUX1ZFUlNJT04gPCAweDA0MDQwMApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcCBiL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAKaW5kZXggOWFiN2I4YS4uYTQ0
YzFlMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VI
YW5kbGVTb3VwLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJj
ZUhhbmRsZVNvdXAuY3BwCkBAIC0yNiwyMSArMjYsMjUgQEAKIAogI2luY2x1ZGUgIkJhc2U2NC5o
IgogI2luY2x1ZGUgIkNvb2tpZUphclNvdXAuaCIKKyNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIK
ICNpbmNsdWRlICJDU3RyaW5nLmgiCiAjaW5jbHVkZSAiRG9jTG9hZGVyLmgiCiAjaW5jbHVkZSAi
RnJhbWUuaCIKICNpbmNsdWRlICJIVFRQUGFyc2Vycy5oIgogI2luY2x1ZGUgIk1JTUVUeXBlUmVn
aXN0cnkuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIlBhZ2UuaCIK
ICNpbmNsdWRlICJSZXNvdXJjZUVycm9yLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVDbGll
bnQuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZUludGVybmFsLmgiCiAjaW5jbHVkZSAiUmVz
b3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgorI2luY2x1ZGUgIndl
YmtpdC1zb3VwLWF1dGgtZGlhbG9nLmgiCiAKICNpbmNsdWRlIDxlcnJuby5oPgogI2luY2x1ZGUg
PGZjbnRsLmg+CiAjaW5jbHVkZSA8Z2lvL2dpby5oPgorI2luY2x1ZGUgPGd0ay9ndGsuaD4KICNp
bmNsdWRlIDxsaWJzb3VwL3NvdXAuaD4KICNpbmNsdWRlIDxsaWJzb3VwL3NvdXAtbWVzc2FnZS5o
PgogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgpAQCAtMzAzLDYgKzMwNywyOCBAQCBib29sIFJlc291
cmNlSGFuZGxlOjpzdGFydERhdGEoU3RyaW5nIHVybFN0cmluZykKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAorc3RhdGljIEd0a1dpZGdldCogY3VycmVudFRvcGxldmVsQ2FsbGJhY2soV2ViS2l0U291
cEF1dGhEaWFsb2cqIGZlYXR1cmUsIGdwb2ludGVyIHVzZXJEYXRhKQoreworICAgIFJlc291cmNl
SGFuZGxlKiBoYW5kbGUgPSBzdGF0aWNfY2FzdDxSZXNvdXJjZUhhbmRsZSo+KHVzZXJEYXRhKTsK
KyAgICBpZiAoIWhhbmRsZSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBSZXNvdXJjZUhh
bmRsZUludGVybmFsKiBkID0gaGFuZGxlLT5nZXRJbnRlcm5hbCgpOworICAgIGlmICghZCkKKyAg
ICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBGcmFtZSogZnJhbWUgPSBkLT5tX2ZyYW1lOworICAg
IGlmICghZnJhbWUpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgR3RrV2lkZ2V0KiB0b3Bs
ZXZlbCA9ICBmcmFtZS0+cGFnZSgpLT5jaHJvbWUoKS0+cGxhdGZvcm1XaW5kb3coKTsKKworICAg
IGlmIChHVEtfV0lER0VUX1RPUExFVkVMKHRvcGxldmVsKSkKKyAgICAgICAgcmV0dXJuIHRvcGxl
dmVsOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIE5VTEw7Cit9CisKIGJvb2wgUmVzb3VyY2VI
YW5kbGU6OnN0YXJ0SHR0cChTdHJpbmcgdXJsU3RyaW5nKQogewogICAgIGlmICghc2Vzc2lvbikg
ewpAQCAtMzEwLDYgKzMzNiwxMSBAQCBib29sIFJlc291cmNlSGFuZGxlOjpzdGFydEh0dHAoU3Ry
aW5nIHVybFN0cmluZykKIAogICAgICAgICBzb3VwX3Nlc3Npb25fYWRkX2ZlYXR1cmUoc2Vzc2lv
biwgU09VUF9TRVNTSU9OX0ZFQVRVUkUoZ2V0Q29va2llSmFyKCkpKTsKIAorICAgICAgICBTb3Vw
U2Vzc2lvbkZlYXR1cmUqIGF1dGhEaWFsb2cgPSBzdGF0aWNfY2FzdDxTb3VwU2Vzc2lvbkZlYXR1
cmUqPihnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfU09VUF9BVVRIX0RJQUxPRywgTlVMTCkpOwor
ICAgICAgICBnX3NpZ25hbF9jb25uZWN0KGF1dGhEaWFsb2csICJjdXJyZW50LXRvcGxldmVsIiwg
R19DQUxMQkFDSyhjdXJyZW50VG9wbGV2ZWxDYWxsYmFjayksIHRoaXMpOworICAgICAgICBzb3Vw
X3Nlc3Npb25fYWRkX2ZlYXR1cmUoc2Vzc2lvbiwgYXV0aERpYWxvZyk7CisgICAgICAgIGdfb2Jq
ZWN0X3VucmVmKGF1dGhEaWFsb2cpOworCiAgICAgICAgIGNvbnN0IGNoYXIqIHNvdXBfZGVidWcg
PSBnX2dldGVudigiV0VCS0lUX1NPVVBfTE9HR0lORyIpOwogICAgICAgICBpZiAoc291cF9kZWJ1
ZykgewogICAgICAgICAgICAgaW50IHNvdXBfZGVidWdfbGV2ZWwgPSBhdG9pKHNvdXBfZGVidWcp
OwpAQCAtNDIyLDYgKzQ1Myw5IEBAIGJvb2wgUmVzb3VyY2VIYW5kbGU6OnN0YXJ0KEZyYW1lKiBm
cmFtZSkKICAgICBTdHJpbmcgdXJsU3RyaW5nID0gdXJsLnN0cmluZygpOwogICAgIFN0cmluZyBw
cm90b2NvbCA9IHVybC5wcm90b2NvbCgpOwogCisgICAgLy8gVXNlZCB0byBzZXQgdGhlIGF1dGhl
bnRpY2F0aW9uIGRpYWxvZyB0b3BsZXZlbDsgbWF5IGJlIE5VTEwKKyAgICBkLT5tX2ZyYW1lID0g
ZnJhbWU7CisKICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UocHJvdG9jb2wsICJkYXRhIikpCiAg
ICAgICAgIHJldHVybiBzdGFydERhdGEodXJsU3RyaW5nKTsKICAgICBlbHNlIGlmICgoZXF1YWxJ
Z25vcmluZ0Nhc2UocHJvdG9jb2wsICJodHRwIikgfHwgZXF1YWxJZ25vcmluZ0Nhc2UocHJvdG9j
b2wsICJodHRwcyIpKSAmJiBTT1VQX1VSSV9WQUxJRF9GT1JfSFRUUChzb3VwX3VyaV9uZXcodXJs
U3RyaW5nLnV0ZjgoKS5kYXRhKCkpKSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9zb3VwL3dlYmtpdC1zb3VwLWF1dGgtZGlhbG9nLmMgYi9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC93ZWJraXQtc291cC1hdXRoLWRpYWxvZy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjFiNmJkMGEKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvc291cC93ZWJraXQtc291cC1hdXRoLWRpYWxvZy5jCkBAIC0wLDAgKzEsMzQz
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IElnYWxpYSBTLkwuLCBBdXRob3I6IFhhbiBM
b3BleiA8eGxvcGV6QGlnYWxpYS5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICog
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJ
TkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEg
MDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUg
PGd0ay9ndGsuaD4KKyNpbmNsdWRlIDxsaWJzb3VwL3NvdXAuaD4KKyNpZiBVU0UoR05PTUVLRVlS
SU5HKQorI2luY2x1ZGUgPGdub21lLWtleXJpbmcuaD4KKyNlbmRpZgorCisjaW5jbHVkZSAid2Vi
a2l0bWFyc2hhbC5oIgorI2luY2x1ZGUgIndlYmtpdC1zb3VwLWF1dGgtZGlhbG9nLmgiCisKK3N0
YXRpYyB2b2lkIHdlYmtpdF9zb3VwX2F1dGhfZGlhbG9nX3Nlc3Npb25fZmVhdHVyZV9pbml0KFNv
dXBTZXNzaW9uRmVhdHVyZUludGVyZmFjZSogZmVhdHVyZV9pbnRlcmZhY2UsIGdwb2ludGVyIGlu
dGVyZmFjZV9kYXRhKTsKK3N0YXRpYyB2b2lkIGF0dGFjaChTb3VwU2Vzc2lvbkZlYXR1cmUgKm1h
bmFnZXIsIFNvdXBTZXNzaW9uICpzZXNzaW9uKTsKK3N0YXRpYyB2b2lkIGRldGFjaChTb3VwU2Vz
c2lvbkZlYXR1cmUgKm1hbmFnZXIsIFNvdXBTZXNzaW9uICpzZXNzaW9uKTsKKworZW51bSB7Cisg
ICAgQ1VSUkVOVF9UT1BMRVZFTCwKKyAgICBMQVNUX1NJR05BTAorfTsKKworc3RhdGljIGd1aW50
IHNpZ25hbHNbTEFTVF9TSUdOQUxdID0geyAwIH07CisKK0dfREVGSU5FX1RZUEVfV0lUSF9DT0RF
KFdlYktpdFNvdXBBdXRoRGlhbG9nLCB3ZWJraXRfc291cF9hdXRoX2RpYWxvZywgR19UWVBFX09C
SkVDVCwKKyAgICAgICAgICAgICAgICAgICAgICAgIEdfSU1QTEVNRU5UX0lOVEVSRkFDRShTT1VQ
X1RZUEVfU0VTU0lPTl9GRUFUVVJFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHdlYmtpdF9zb3VwX2F1dGhfZGlhbG9nX3Nlc3Npb25fZmVhdHVyZV9pbml0
KSkKKworc3RhdGljIHZvaWQgd2Via2l0X3NvdXBfYXV0aF9kaWFsb2dfY2xhc3NfaW5pdChXZWJL
aXRTb3VwQXV0aERpYWxvZ0NsYXNzICprbGFzcykKK3sKKyAgICBHT2JqZWN0Q2xhc3MqIG9iamVj
dF9jbGFzcyA9IEdfT0JKRUNUX0NMQVNTKGtsYXNzKTsKKworICAgIHNpZ25hbHNbQ1VSUkVOVF9U
T1BMRVZFTF0gPQorICAgICAgZ19zaWduYWxfbmV3KCJjdXJyZW50LXRvcGxldmVsIiwKKyAgICAg
ICAgICAgICAgICAgICBHX09CSkVDVF9DTEFTU19UWVBFKG9iamVjdF9jbGFzcyksCisgICAgICAg
ICAgICAgICAgICAgR19TSUdOQUxfUlVOX0xBU1QsCisgICAgICAgICAgICAgICAgICAgR19TVFJV
Q1RfT0ZGU0VUKFdlYktpdFNvdXBBdXRoRGlhbG9nQ2xhc3MsIGN1cnJlbnRfdG9wbGV2ZWwpLAor
ICAgICAgICAgICAgICAgICAgIE5VTEwsIE5VTEwsCisgICAgICAgICAgICAgICAgICAgd2Via2l0
X21hcnNoYWxfT0JKRUNUX19WT0lELAorICAgICAgICAgICAgICAgICAgIEdUS19UWVBFX1dJREdF
VCwgMCk7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF9zb3VwX2F1dGhfZGlhbG9nX2luaXQoV2Vi
S2l0U291cEF1dGhEaWFsb2cqIGluc3RhbmNlKQoreworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRf
c291cF9hdXRoX2RpYWxvZ19zZXNzaW9uX2ZlYXR1cmVfaW5pdChTb3VwU2Vzc2lvbkZlYXR1cmVJ
bnRlcmZhY2UgKmZlYXR1cmVfaW50ZXJmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3BvaW50ZXIgaW50ZXJmYWNlX2RhdGEpCit7
CisgICAgZmVhdHVyZV9pbnRlcmZhY2UtPmF0dGFjaCA9IGF0dGFjaDsKKyAgICBmZWF0dXJlX2lu
dGVyZmFjZS0+ZGV0YWNoID0gZGV0YWNoOworfQorCit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0QXV0
aERhdGEgeworICAgIFNvdXBNZXNzYWdlKiBtc2c7CisgICAgU291cEF1dGgqIGF1dGg7CisgICAg
U291cFNlc3Npb24qIHNlc3Npb247CisgICAgU291cFNlc3Npb25GZWF0dXJlKiBtYW5hZ2VyOwor
ICAgIEd0a1dpZGdldCogbG9naW5FbnRyeTsKKyAgICBHdGtXaWRnZXQqIHBhc3N3b3JkRW50cnk7
CisjaWYgVVNFKEdOT01FS0VZUklORykKKyAgICBHdGtXaWRnZXQqIGNoZWNrQnV0dG9uOworI2Vu
ZGlmCit9IFdlYktpdEF1dGhEYXRhOworCitzdGF0aWMgdm9pZCBmcmVlX2F1dGhEYXRhKFdlYktp
dEF1dGhEYXRhKiBhdXRoRGF0YSkKK3sKKyAgICBnX29iamVjdF91bnJlZihhdXRoRGF0YS0+bXNn
KTsKKyAgICBnX3NsaWNlX2ZyZWUoV2ViS2l0QXV0aERhdGEsIGF1dGhEYXRhKTsKK30KKworI2lm
IFVTRShHTk9NRUtFWVJJTkcpCitzdGF0aWMgdm9pZCBzZXRfcGFzc3dvcmRfY2FsbGJhY2soR25v
bWVLZXlyaW5nUmVzdWx0IHJlc3VsdCwgZ3VpbnQzMiB2YWwsIGdwb2ludGVyIHVzZXJfZGF0YSkK
K3sKKyAgICAvKiBEdW1teSBjYWxsYmFjaywgZ25vbWVfa2V5cmluZ19zZXRfbmV0d29ya19wYXNz
d29yZCBkb2VzIG5vdCBhY2NlcHQgYSBOVUxMIG9uZSAqLworfQorI2VuZGlmCisKK3N0YXRpYyB2
b2lkIHJlc3BvbnNlX2NhbGxiYWNrKEd0a0RpYWxvZyogZGlhbG9nLCBnaW50IHJlc3BvbnNlX2lk
LCBXZWJLaXRBdXRoRGF0YSogYXV0aERhdGEpCit7CisgICAgY29uc3QgY2hhciogbG9naW47Cisg
ICAgY29uc3QgY2hhciogcGFzc3dvcmQ7CisjaWYgVVNFKEdOT01FS0VZUklORykKKyAgICBTb3Vw
VVJJKiB1cmk7CisgICAgZ2Jvb2xlYW4gc3RvcmVQYXNzd29yZDsKKyNlbmRpZgorCisgICAgc3dp
dGNoKHJlc3BvbnNlX2lkKSB7CisgICAgY2FzZSBHVEtfUkVTUE9OU0VfT0s6CisgICAgICAgIGxv
Z2luID0gZ3RrX2VudHJ5X2dldF90ZXh0KEdUS19FTlRSWShhdXRoRGF0YS0+bG9naW5FbnRyeSkp
OworICAgICAgICBwYXNzd29yZCA9IGd0a19lbnRyeV9nZXRfdGV4dChHVEtfRU5UUlkoYXV0aERh
dGEtPnBhc3N3b3JkRW50cnkpKTsKKyAgICAgICAgc291cF9hdXRoX2F1dGhlbnRpY2F0ZShhdXRo
RGF0YS0+YXV0aCwgbG9naW4sIHBhc3N3b3JkKTsKKworI2lmIFVTRShHTk9NRUtFWVJJTkcpCisg
ICAgICAgIHN0b3JlUGFzc3dvcmQgPSBndGtfdG9nZ2xlX2J1dHRvbl9nZXRfYWN0aXZlKEdUS19U
T0dHTEVfQlVUVE9OKGF1dGhEYXRhLT5jaGVja0J1dHRvbikpOworICAgICAgICBpZiAoc3RvcmVQ
YXNzd29yZCkgeworICAgICAgICAgICAgdXJpID0gc291cF9tZXNzYWdlX2dldF91cmkoYXV0aERh
dGEtPm1zZyk7CisgICAgICAgICAgICBnbm9tZV9rZXlyaW5nX3NldF9uZXR3b3JrX3Bhc3N3b3Jk
KE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxv
Z2luLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3Vw
X2F1dGhfZ2V0X3JlYWxtKGF1dGhEYXRhLT5hdXRoKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdXJpLT5ob3N0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1cmktPnNjaGVtZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cF9hdXRoX2dldF9zY2hlbWVfbmFtZShhdXRo
RGF0YS0+YXV0aCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVyaS0+cG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcGFzc3dvcmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChHbm9tZUtleXJpbmdPcGVyYXRpb25HZXRJbnRDYWxsYmFjaylzZXRfcGFzc3dvcmRf
Y2FsbGJhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5V
TEwpOworICAgICAgICB9CisjZW5kaWYKKyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAg
ICB9CisKKyAgICBzb3VwX3Nlc3Npb25fdW5wYXVzZV9tZXNzYWdlKGF1dGhEYXRhLT5zZXNzaW9u
LCBhdXRoRGF0YS0+bXNnKTsKKyAgICBmcmVlX2F1dGhEYXRhKGF1dGhEYXRhKTsKKyAgICBndGtf
d2lkZ2V0X2Rlc3Ryb3koR1RLX1dJREdFVChkaWFsb2cpKTsKK30KKworc3RhdGljIEd0a1dpZGdl
dCAqCit0YWJsZV9hZGRfZW50cnkgKEd0a1dpZGdldCAgKnRhYmxlLAorICAgICAgICAgICAgICAg
ICBpbnQgICAgICAgICByb3csCisgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmxhYmVsX3Rl
eHQsCisgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnZhbHVlLAorICAgICAgICAgICAgICAg
ICBncG9pbnRlciAgICB1c2VyX2RhdGEpCit7CisgICAgR3RrV2lkZ2V0ICplbnRyeTsKKyAgICBH
dGtXaWRnZXQgKmxhYmVsOworCisgICAgbGFiZWwgPSBndGtfbGFiZWxfbmV3KGxhYmVsX3RleHQp
OworICAgIGd0a19taXNjX3NldF9hbGlnbm1lbnQoR1RLX01JU0MobGFiZWwpLCAwLjAsIDAuNSk7
CisKKyAgICBlbnRyeSA9IGd0a19lbnRyeV9uZXcoKTsKKyAgICBndGtfZW50cnlfc2V0X2FjdGl2
YXRlc19kZWZhdWx0KEdUS19FTlRSWShlbnRyeSksIFRSVUUpOworCisgICAgaWYgKHZhbHVlKQor
ICAgICAgICBndGtfZW50cnlfc2V0X3RleHQoR1RLX0VOVFJZKGVudHJ5KSwgdmFsdWUpOworCisg
ICAgZ3RrX3RhYmxlX2F0dGFjaChHVEtfVEFCTEUodGFibGUpLCBsYWJlbCwKKyAgICAgICAgICAg
ICAgICAgICAgIDAsIDEsIHJvdywgcm93ICsgMSwKKyAgICAgICAgICAgICAgICAgICAgIEdUS19G
SUxMLCBHVEtfRVhQQU5EIHwgR1RLX0ZJTEwsIDAsIDApOworICAgIGd0a190YWJsZV9hdHRhY2hf
ZGVmYXVsdHMoR1RLX1RBQkxFKHRhYmxlKSwgZW50cnksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAxLCAyLCByb3csIHJvdyArIDEpOworCisgICAgcmV0dXJuIGVudHJ5OworfQorCitz
dGF0aWMgdm9pZCBzaG93X2F1dGhfZGlhbG9nKFdlYktpdEF1dGhEYXRhKiBhdXRoRGF0YSwgY29u
c3QgY2hhciogbG9naW4sIGNvbnN0IGNoYXIqIHBhc3N3b3JkKQoreworICAgIEd0a1dpZGdldCog
dG9wbGV2ZWw7CisgICAgR3RrV2lkZ2V0ICp3aWRnZXQ7CisgICAgR3RrRGlhbG9nICpkaWFsb2c7
CisgICAgR3RrV2luZG93ICp3aW5kb3c7CisgICAgR3RrV2lkZ2V0ICplbnRyeUNvbnRhaW5lcjsK
KyAgICBHdGtXaWRnZXQgKmhib3gsICptYWluVkJveCwgKnZib3gsICppY29uOworICAgIEd0a1dp
ZGdldCAqdGFibGU7CisgICAgR3RrV2lkZ2V0ICptZXNzYWdlTGFiZWw7CisgICAgY2hhciogbWVz
c2FnZTsKKyAgICBTb3VwVVJJKiB1cmk7CisjaWYgVVNFKEdOT01FS0VZUklORykKKyAgICBHdGtX
aWRnZXQqIHJlbWVtYmVyX2JveDsKKyAgICBHdGtXaWRnZXQqIGNoZWNrX2J1dHRvbjsKKyNlbmRp
ZgorCisgICAgLyogRnJvbSBHVEsrIGd0a21vdW50b3BlcmF0aW9uLmMsIG1vZGlmaWVkIGFuZCBz
aW1wbGlmaWVkLiBMR1BMIDIgbGljZW5zZSAqLworCisgICAgd2lkZ2V0ID0gZ3RrX2RpYWxvZ19u
ZXcoKTsKKyAgICB3aW5kb3cgPSBHVEtfV0lORE9XKHdpZGdldCk7CisgICAgZGlhbG9nID0gR1RL
X0RJQUxPRyh3aWRnZXQpOworCisgICAgZ3RrX2RpYWxvZ19hZGRfYnV0dG9ucyhkaWFsb2csCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHVEtfU1RPQ0tfQ0FOQ0VMLCBHVEtfUkVTUE9OU0Vf
Q0FOQ0VMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgR1RLX1NUT0NLX09LLCBHVEtfUkVT
UE9OU0VfT0ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKworICAgIC8qIFNl
dCB0aGUgZGlhbG9nIHVwIHdpdGggSElHIHByb3BlcnRpZXMgKi8KKyAgICBndGtfZGlhbG9nX3Nl
dF9oYXNfc2VwYXJhdG9yKGRpYWxvZywgRkFMU0UpOworICAgIGd0a19jb250YWluZXJfc2V0X2Jv
cmRlcl93aWR0aChHVEtfQ09OVEFJTkVSIChkaWFsb2cpLCA1KTsKKyAgICBndGtfYm94X3NldF9z
cGFjaW5nKEdUS19CT1goZGlhbG9nLT52Ym94KSwgMik7IC8qIDIgKiA1ICsgMiA9IDEyICovCisg
ICAgZ3RrX2NvbnRhaW5lcl9zZXRfYm9yZGVyX3dpZHRoKEdUS19DT05UQUlORVIgKGRpYWxvZy0+
YWN0aW9uX2FyZWEpLCA1KTsKKyAgICBndGtfYm94X3NldF9zcGFjaW5nKEdUS19CT1goZGlhbG9n
LT5hY3Rpb25fYXJlYSksIDYpOworCisgICAgZ3RrX3dpbmRvd19zZXRfcmVzaXphYmxlKHdpbmRv
dywgRkFMU0UpOworICAgIGd0a193aW5kb3dfc2V0X3RpdGxlKHdpbmRvdywgIiIpOworICAgIGd0
a193aW5kb3dfc2V0X2ljb25fbmFtZSh3aW5kb3csIEdUS19TVE9DS19ESUFMT0dfQVVUSEVOVElD
QVRJT04pOworCisgICAgZ3RrX2RpYWxvZ19zZXRfZGVmYXVsdF9yZXNwb25zZShkaWFsb2csIEdU
S19SRVNQT05TRV9PSyk7CisKKyAgICAvKiBHZXQgdGhlIGN1cnJlbnQgdG9wbGV2ZWwgKi8KKyAg
ICBnX3NpZ25hbF9lbWl0KGF1dGhEYXRhLT5tYW5hZ2VyLCBzaWduYWxzW0NVUlJFTlRfVE9QTEVW
RUxdLCAwLCAmdG9wbGV2ZWwpOworCisgICAgaWYgKHRvcGxldmVsKQorICAgICAgICBndGtfd2lu
ZG93X3NldF90cmFuc2llbnRfZm9yKHdpbmRvdywgdG9wbGV2ZWwpOworCisgICAgLyogQnVpbGQg
Y29udGVudHMgKi8KKyAgICBoYm94ID0gZ3RrX2hib3hfbmV3KEZBTFNFLCAxMik7CisgICAgZ3Rr
X2NvbnRhaW5lcl9zZXRfYm9yZGVyX3dpZHRoKEdUS19DT05UQUlORVIoaGJveCksIDUpOworICAg
IGd0a19ib3hfcGFja19zdGFydChHVEtfQk9YKGRpYWxvZy0+dmJveCksIGhib3gsIFRSVUUsIFRS
VUUsIDApOworCisgICAgaWNvbiA9IGd0a19pbWFnZV9uZXdfZnJvbV9zdG9jayhHVEtfU1RPQ0tf
RElBTE9HX0FVVEhFTlRJQ0FUSU9OLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR1RLX0lDT05fU0laRV9ESUFMT0cpOworCisgICAgZ3RrX21pc2Nfc2V0X2FsaWdubWVudChH
VEtfTUlTQyhpY29uKSwgMC41LCAwLjApOworICAgIGd0a19ib3hfcGFja19zdGFydChHVEtfQk9Y
KGhib3gpLCBpY29uLCBGQUxTRSwgRkFMU0UsIDApOworCisgICAgbWFpblZCb3ggPSBndGtfdmJv
eF9uZXcoRkFMU0UsIDE4KTsKKyAgICBndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWChoYm94KSwg
bWFpblZCb3gsIFRSVUUsIFRSVUUsIDApOworCisgICAgdXJpID0gc291cF9tZXNzYWdlX2dldF91
cmkoYXV0aERhdGEtPm1zZyk7CisgICAgbWVzc2FnZSA9IGdfc3RyZHVwX3ByaW50ZigiQSB1c2Vy
bmFtZSBhbmQgcGFzc3dvcmQgYXJlIGJlaW5nIHJlcXVlc3RlZCBieSB0aGUgc2l0ZSAlcyIsIHVy
aS0+aG9zdCk7CisgICAgbWVzc2FnZUxhYmVsID0gZ3RrX2xhYmVsX25ldyhtZXNzYWdlKTsKKyAg
ICBnX2ZyZWUobWVzc2FnZSk7CisgICAgZ3RrX21pc2Nfc2V0X2FsaWdubWVudChHVEtfTUlTQyht
ZXNzYWdlTGFiZWwpLCAwLjAsIDAuNSk7CisgICAgZ3RrX2xhYmVsX3NldF9saW5lX3dyYXAoR1RL
X0xBQkVMKG1lc3NhZ2VMYWJlbCksIFRSVUUpOworICAgIGd0a19ib3hfcGFja19zdGFydChHVEtf
Qk9YKG1haW5WQm94KSwgR1RLX1dJREdFVChtZXNzYWdlTGFiZWwpLAorICAgICAgICAgICAgICAg
ICAgICAgICBGQUxTRSwgRkFMU0UsIDApOworCisgICAgdmJveCA9IGd0a192Ym94X25ldyhGQUxT
RSwgNik7CisgICAgZ3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1ggKG1haW5WQm94KSwgdmJveCwg
RkFMU0UsIEZBTFNFLCAwKTsKKworICAgIC8qIFRoZSB0YWJsZSB0aGF0IGhvbGRzIHRoZSBlbnRy
aWVzICovCisgICAgZW50cnlDb250YWluZXIgPSBndGtfYWxpZ25tZW50X25ldygwLjAsIDAuMCwg
MS4wLCAxLjApOworCisgICAgZ3RrX2FsaWdubWVudF9zZXRfcGFkZGluZyhHVEtfQUxJR05NRU5U
KGVudHJ5Q29udGFpbmVyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIDAs
IDApOworCisgICAgZ3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1godmJveCksIGVudHJ5Q29udGFp
bmVyLAorICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSwgRkFMU0UsIDApOworCisgICAgdGFi
bGUgPSBndGtfdGFibGVfbmV3KDIsIDIsIEZBTFNFKTsKKyAgICBndGtfdGFibGVfc2V0X2NvbF9z
cGFjaW5ncyhHVEtfVEFCTEUgKHRhYmxlKSwgMTIpOworICAgIGd0a190YWJsZV9zZXRfcm93X3Nw
YWNpbmdzKEdUS19UQUJMRSAodGFibGUpLCA2KTsKKyAgICBndGtfY29udGFpbmVyX2FkZChHVEtf
Q09OVEFJTkVSKGVudHJ5Q29udGFpbmVyKSwgdGFibGUpOworCisgICAgYXV0aERhdGEtPmxvZ2lu
RW50cnkgPSB0YWJsZV9hZGRfZW50cnkodGFibGUsIDAsICJVc2VybmFtZToiLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2luLCBOVUxMKTsKKyAgICBhdXRo
RGF0YS0+cGFzc3dvcmRFbnRyeSA9IHRhYmxlX2FkZF9lbnRyeSh0YWJsZSwgMSwgIlBhc3N3b3Jk
OiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzc3dv
cmQsIE5VTEwpOworCisgICAgZ3RrX2VudHJ5X3NldF92aXNpYmlsaXR5KEdUS19FTlRSWShhdXRo
RGF0YS0+cGFzc3dvcmRFbnRyeSksIEZBTFNFKTsKKworI2lmIFVTRShHTk9NRUtFWVJJTkcpCisg
ICAgcmVtZW1iZXJfYm94ID0gZ3RrX3Zib3hfbmV3IChGQUxTRSwgNik7CisgICAgZ3RrX2JveF9w
YWNrX3N0YXJ0IChHVEtfQk9YICh2Ym94KSwgcmVtZW1iZXJfYm94LAorICAgICAgICAgICAgICAg
ICAgICAgICAgRkFMU0UsIEZBTFNFLCAwKTsKKworICAgIGNoZWNrX2J1dHRvbiA9IGd0a19jaGVj
a19idXR0b25fbmV3X3dpdGhfbGFiZWwoIlJlbWVtYmVyIHBhc3N3b3JkIik7CisgICAgaWYgKGxv
Z2luICYmIHBhc3N3b3JkKQorICAgICAgICBndGtfdG9nZ2xlX2J1dHRvbl9zZXRfYWN0aXZlKEdU
S19UT0dHTEVfQlVUVE9OKGNoZWNrX2J1dHRvbiksIFRSVUUpOworICAgIGd0a19sYWJlbF9zZXRf
bGluZV93cmFwKEdUS19MQUJFTChndGtfYmluX2dldF9jaGlsZChHVEtfQklOKGNoZWNrX2J1dHRv
bikpKSwgVFJVRSk7CisgICAgZ3RrX2JveF9wYWNrX3N0YXJ0IChHVEtfQk9YIChyZW1lbWJlcl9i
b3gpLCBjaGVja19idXR0b24sIEZBTFNFLCBGQUxTRSwgMCk7CisgICAgYXV0aERhdGEtPmNoZWNr
QnV0dG9uID0gY2hlY2tfYnV0dG9uOworI2VuZGlmCisKKyAgICBnX3NpZ25hbF9jb25uZWN0KGRp
YWxvZywgInJlc3BvbnNlIiwgR19DQUxMQkFDSyhyZXNwb25zZV9jYWxsYmFjayksIGF1dGhEYXRh
KTsKKyAgICBndGtfd2lkZ2V0X3Nob3dfYWxsKHdpZGdldCk7Cit9CisKKyNpZiBVU0UoR05PTUVL
RVlSSU5HKQorc3RhdGljIHZvaWQgZmluZF9wYXNzd29yZF9jYWxsYmFjayhHbm9tZUtleXJpbmdS
ZXN1bHQgcmVzdWx0LCBHTGlzdCogbGlzdCwgV2ViS2l0QXV0aERhdGEqIGF1dGhEYXRhKQorewor
ICAgIEdMaXN0KiBwOworICAgIGNvbnN0IGNoYXIqIGxvZ2luID0gTlVMTDsKKyAgICBjb25zdCBj
aGFyKiBwYXNzd29yZCA9IE5VTEw7CisKKyAgICBmb3IgKHAgPSBsaXN0OyBwOyBwID0gcC0+bmV4
dCkgeworICAgICAgICAvKiBGSVhNRTogc3VwcG9ydCBtdWx0aXBsZSBsb2dpbnMvcGFzc3dvcmRz
ID8gKi8KKyAgICAgICAgR25vbWVLZXlyaW5nTmV0d29ya1Bhc3N3b3JkRGF0YSogZGF0YSA9IChH
bm9tZUtleXJpbmdOZXR3b3JrUGFzc3dvcmREYXRhKilwLT5kYXRhOworICAgICAgICBsb2dpbiA9
IGRhdGEtPnVzZXI7CisgICAgICAgIHBhc3N3b3JkID0gZGF0YS0+cGFzc3dvcmQ7CisgICAgICAg
IGJyZWFrOworICAgIH0KKworICAgIHNob3dfYXV0aF9kaWFsb2coYXV0aERhdGEsIGxvZ2luLCBw
YXNzd29yZCk7Cit9CisjZW5kaWYKKworc3RhdGljIHZvaWQgc2Vzc2lvbl9hdXRoZW50aWNhdGUo
U291cFNlc3Npb24qIHNlc3Npb24sIFNvdXBNZXNzYWdlKiBtc2csIFNvdXBBdXRoKiBhdXRoLCBn
Ym9vbGVhbiByZXRyeWluZywgZ3BvaW50ZXIgdXNlcl9kYXRhKQoreworICAgIFNvdXBVUkkqIHVy
aTsKKyAgICBXZWJLaXRBdXRoRGF0YSogYXV0aERhdGE7CisgICAgU291cFNlc3Npb25GZWF0dXJl
KiBtYW5hZ2VyID0gKFNvdXBTZXNzaW9uRmVhdHVyZSopdXNlcl9kYXRhOworCisgICAgc291cF9z
ZXNzaW9uX3BhdXNlX21lc3NhZ2Uoc2Vzc2lvbiwgbXNnKTsKKyAgICAvKiBXZSBuZWVkIHRvIG1h
a2Ugc3VyZSB0aGUgbWVzc2FnZSBzdGlja3MgYXJvdW5kIHdoZW4gcGF1c2luZyBpdCAqLworICAg
IGdfb2JqZWN0X3JlZihtc2cpOworCisgICAgdXJpID0gc291cF9tZXNzYWdlX2dldF91cmkobXNn
KTsKKyAgICBhdXRoRGF0YSA9IGdfc2xpY2VfbmV3KFdlYktpdEF1dGhEYXRhKTsKKyAgICBhdXRo
RGF0YS0+bXNnID0gbXNnOworICAgIGF1dGhEYXRhLT5hdXRoID0gYXV0aDsKKyAgICBhdXRoRGF0
YS0+c2Vzc2lvbiA9IHNlc3Npb247CisgICAgYXV0aERhdGEtPm1hbmFnZXIgPSBtYW5hZ2VyOwor
CisgICAgLyoKKyAgICAgKiBJZiB3ZSBoYXZlIGdub21lLWtleXJpbmcgbGV0J3MgdHJ5IHRvIGZp
bmQgdGhlIHBhc3N3b3JkIGZpcnN0IGluIHRoZSByaW5nLgorICAgICAqIE90aGVyd2lzZSBqdXN0
IHNob3cgdGhlIGRpYWxvZyBzdHJhaWdodCBhd2F5CisgICAgICovCisjaWYgVVNFKEdOT01FS0VZ
UklORykKKyAgICBnbm9tZV9rZXlyaW5nX2ZpbmRfbmV0d29ya19wYXNzd29yZChOVUxMLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXBfYXV0aF9nZXRfcmVhbG0o
YXV0aCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJpLT5ob3N0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJpLT5zY2hlbWUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cF9hdXRoX2dldF9zY2hlbWVfbmFtZShh
dXRoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmktPnBvcnQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEdub21lS2V5cmluZ09w
ZXJhdGlvbkdldExpc3RDYWxsYmFjaylmaW5kX3Bhc3N3b3JkX2NhbGxiYWNrLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dGhEYXRhLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworI2Vsc2UKKyAgICBzaG93X2F1dGhfZGlh
bG9nKGF1dGhEYXRhLCBOVUxMLCBOVUxMKTsKKyNlbmRpZgorfQorCitzdGF0aWMgdm9pZCBhdHRh
Y2goU291cFNlc3Npb25GZWF0dXJlICptYW5hZ2VyLCBTb3VwU2Vzc2lvbiAqc2Vzc2lvbikKK3sK
KyAgICBnX3NpZ25hbF9jb25uZWN0KHNlc3Npb24sICJhdXRoZW50aWNhdGUiLCBHX0NBTExCQUNL
KHNlc3Npb25fYXV0aGVudGljYXRlKSwgbWFuYWdlcik7Cit9CisKK3N0YXRpYyB2b2lkIGRldGFj
aChTb3VwU2Vzc2lvbkZlYXR1cmUgKm1hbmFnZXIsIFNvdXBTZXNzaW9uICpzZXNzaW9uKQorewor
ICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVuYyhzZXNzaW9uLCBzZXNzaW9u
X2F1dGhlbnRpY2F0ZSwgbWFuYWdlcik7Cit9CisKKwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvd2Via2l0LXNvdXAtYXV0aC1kaWFsb2cuaCBiL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9zb3VwL3dlYmtpdC1zb3VwLWF1dGgtZGlhbG9nLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjQ3YjkyOAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL3dlYmtpdC1zb3VwLWF1dGgtZGlhbG9nLmgKQEAgLTAs
MCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBJZ2FsaWEgUy5MLiwgQXV0aG9y
OiBYYW4gTG9wZXogPHhsb3BlekBpZ2FsaWEuY29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICog
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICog
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0
b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSA8Z3RrL2d0ay5oPgorCisj
aWZuZGVmIFdFQktJVF9TT1VQX0FVVEhfRElBTE9HX0gKKyNkZWZpbmUgV0VCS0lUX1NPVVBfQVVU
SF9ESUFMT0dfSCAxCisKK0dfQkVHSU5fREVDTFMKKworI2RlZmluZSBXRUJLSVRfVFlQRV9TT1VQ
X0FVVEhfRElBTE9HICAgICAgICAgICAgKHdlYmtpdF9zb3VwX2F1dGhfZGlhbG9nX2dldF90eXBl
ICgpKQorI2RlZmluZSBXRUJLSVRfU09VUF9BVVRIX0RJQUxPRyhvYmplY3QpICAgICAgICAgKEdf
VFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUICgob2JqZWN0KSwgV0VCS0lUX1RZUEVfU09VUF9BVVRI
X0RJQUxPRywgV2ViS2l0U291cEF1dGhEaWFsb2cpKQorI2RlZmluZSBXRUJLSVRfU09VUF9BVVRI
X0RJQUxPR19DTEFTUyhrbGFzcykgICAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUICgoa2xhc3Mp
LCBXRUJLSVRfVFlQRV9TT1VQX0FVVEhfRElBTE9HLCBXZWJLaXRTb3VwQXV0aERpYWxvZykpCisj
ZGVmaW5lIFdFQktJVF9JU19TT1VQX0FVVEhfRElBTE9HKG9iamVjdCkgICAgICAoR19UWVBFX0NI
RUNLX0lOU1RBTkNFX1RZUEUgKChvYmplY3QpLCBXRUJLSVRfVFlQRV9TT1VQX0FVVEhfRElBTE9H
KSkKKyNkZWZpbmUgV0VCS0lUX0lTX1NPVVBfQVVUSF9ESUFMT0dfQ0xBU1Moa2xhc3MpIChHX1RZ
UEVfQ0hFQ0tfQ0xBU1NfVFlQRSAoKGtsYXNzKSwgV0VCS0lUX1RZUEVfU09VUF9BVVRIX0RJQUxP
RykpCisjZGVmaW5lIFdFQktJVF9TT1VQX0FVVEhfRElBTE9HX0dFVF9DTEFTUyhvYmopICAoR19U
WVBFX0lOU1RBTkNFX0dFVF9DTEFTUyAoKG9iaiksIFdFQktJVF9UWVBFX1NPVVBfQVVUSF9ESUFM
T0csIFdlYktpdFNvdXBBdXRoRGlhbG9nKSkKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIEdPYmpl
Y3QgcGFyZW50X2luc3RhbmNlOworfSBXZWJLaXRTb3VwQXV0aERpYWxvZzsKKwordHlwZWRlZiBz
dHJ1Y3QgeworICAgIEdPYmplY3RDbGFzcyBwYXJlbnRfY2xhc3M7CisKKyAgICBHdGtXaWRnZXQq
ICgqY3VycmVudF90b3BsZXZlbCkgKFdlYktpdFNvdXBBdXRoRGlhbG9nKiBmZWF0dXJlKTsKK30g
V2ViS2l0U291cEF1dGhEaWFsb2dDbGFzczsKKworR1R5cGUgd2Via2l0X3NvdXBfYXV0aF9kaWFs
b2dfZ2V0X3R5cGUgKHZvaWQpOworCitHX0VORF9ERUNMUworCisjZW5kaWYgLyogV0VCS0lUX1NP
VVBfQVVUSF9ESUFMT0dfSCAqLwpkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJl
LmFjCmluZGV4IDRlNWY5ODMuLjYwYzBjMmEgMTAwNjQ0Ci0tLSBhL2NvbmZpZ3VyZS5hYworKysg
Yi9jb25maWd1cmUuYWMKQEAgLTM1MCw2ICszNTAsMTQgQEAgQUNfQVJHX0VOQUJMRShnZW9sb2Nh
dGlvbiwKICAgICAgICAgICAgICAgW10sW2VuYWJsZV9nZW9sb2NhdGlvbj0ibm8iXSkKIEFDX01T
R19SRVNVTFQoWyRlbmFibGVfZ2VvbG9jYXRpb25dKQogCisjIGNoZWNrIHdoZXRoZXIgdG8gZW5h
YmxlIGdub21la2V5cmluZyBzdXBwb3J0CitBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgdG8gZW5h
YmxlIGdub21la2V5cmluZyBzdXBwb3J0XSkKK0FDX0FSR19FTkFCTEUoZ25vbWVrZXlyaW5nLAor
ICAgICAgICAgICAgICBBQ19IRUxQX1NUUklORyhbLS1lbmFibGUtZ25vbWVrZXlyaW5nXSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgW2VuYWJsZSBzdXBwb3J0IGZvciBnbm9tZWtleXJp
bmcgW2RlZmF1bHQ9bm9dXSksCisgICAgICAgICAgICAgIFtdLFtlbmFibGVfZ25vbWVrZXlyaW5n
PSJubyJdKQorQUNfTVNHX1JFU1VMVChbJGVuYWJsZV9nbm9tZWtleXJpbmddKQorCiAjIGNoZWNr
IHdoZXRoZXIgdG8gZW5hYmxlIFNWRyBzdXBwb3J0CiBBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIg
dG8gZW5hYmxlIFNWRyBzdXBwb3J0XSkKIEFDX0FSR19FTkFCTEUoc3ZnLApAQCAtNTMyLDYgKzU0
MCwxMyBAQCBpZiB0ZXN0ICIkd2l0aF9odHRwX2JhY2tlbmQiID0gInNvdXAiOyB0aGVuCiAgICBB
Q19TVUJTVChbTElCU09VUF9MSUJTXSkKIGZpCiAKK2lmIHRlc3QgIiRlbmFibGVfZ25vbWVrZXly
aW5nIiA9ICJ5ZXMiOyB0aGVuCisgICBQS0dfQ0hFQ0tfTU9EVUxFUyhbR05PTUVLRVlSSU5HXSwK
KyAgICAgICAgICAgICAgICAgICAgIFtnbm9tZS1rZXlyaW5nLTFdKQorICAgQUNfU1VCU1QoW0dO
T01FS0VZUklOR19DRkxBR1NdKQorICAgQUNfU1VCU1QoW0dOT01FS0VZUklOR19MSUJTXSkKK2Zp
CisKICMgY2hlY2sgaWYgRnJlZVR5cGUvRm9udENvbmZpZyBhcmUgYXZhaWxhYmxlCiBpZiB0ZXN0
ICIkd2l0aF9mb250X2JhY2tlbmQiID0gImZyZWV0eXBlIjsgdGhlbgogICAgaWYgdGVzdCAiJHdp
dGhfdGFyZ2V0IiA9ICJkaXJlY3RmYiI7IHRoZW4KQEAgLTYxNCw2ICs2MjksOSBAQCBBTV9DT05E
SVRJT05BTChbVEFSR0VUX0RJUkVDVEZCXSwgW3Rlc3QgIiR3aXRoX3RhcmdldCIgPSAiZGlyZWN0
ZmIiXSkKIEFNX0NPTkRJVElPTkFMKFtVU0VfQ1VSTF0sIFt0ZXN0ICIkd2l0aF9odHRwX2JhY2tl
bmQiID0gImN1cmwiXSkKIEFNX0NPTkRJVElPTkFMKFtVU0VfU09VUF0sIFt0ZXN0ICIkd2l0aF9o
dHRwX2JhY2tlbmQiID0gInNvdXAiXSkKIAorIyBBdXRoIGJhY2tlbmQgY29uZGl0aW9uYWxzCitB
TV9DT05ESVRJT05BTChbVVNFX0dOT01FS0VZUklOR10sIFt0ZXN0ICIkZW5hYmxlX2dub21la2V5
cmluZyIgPSAieWVzIl0pCisKICMgRm9udCBiYWNrZW5kIGNvbmRpdGlvbmFscwogQU1fQ09ORElU
SU9OQUwoW1VTRV9GUkVFVFlQRV0sIFt0ZXN0ICIkd2l0aF9mb250X2JhY2tlbmQiID0gImZyZWV0
eXBlIl0pCiBBTV9DT05ESVRJT05BTChbVVNFX1BBTkdPXSwgW3Rlc3QgIiR3aXRoX2ZvbnRfYmFj
a2VuZCIgPSAicGFuZ28iXSkKQEAgLTY4Myw2ICs3MDEsNyBAQCBGZWF0dXJlczoKICBXTUwgc3Vw
cG9ydCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICRlbmFi
bGVfd21sCiAgV2ViIFdvcmtlcnMgc3VwcG9ydCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgOiAkZW5hYmxlX3dlYl93b3JrZXJzCiAgR2VvbG9jYXRpb24gc3VwcG9ydCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAkZW5hYmxlX2dlb2xvY2F0aW9uCisg
R05PTUUgS2V5cmluZyBzdXBwb3J0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
OiAkZW5hYmxlX2dub21la2V5cmluZwogR1RLKyBjb25maWd1cmF0aW9uOgogIEdESyB0YXJnZXQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJHdpdGhfdGFy
Z2V0CiAgSGlsZG9uIFVJIGV4dGVuc2lvbnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgOiAkd2l0aF9oaWxkb24KLS0gCjEuNi4xCgo=
</data>
<flag name="review"
          id="13474"
          type_id="1"
          status="+"
          setter="zecke"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>28025</attachid>
            <date>2009-02-26 11:24:52 -0800</date>
            <delta_ts>2009-02-26 11:29:26 -0800</delta_ts>
            <desc>keyringv2.patch</desc>
            <filename>keyringv2.patch</filename>
            <type>text/plain</type>
            <size>27329</size>
            <attacher name="Xan Lopez">xan.lopez</attacher>
            
              <data encoding="base64">RnJvbSA0OTM0NjExNWQ5MjI3NWQzMmY2ZTJjNWU0YTczMzc2OTczMDc4MTkzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBYYW4gTG9wZXogPHhhbkBnbm9tZS5vcmc+CkRhdGU6IFRodSwg
MjYgRmViIDIwMDkgMjE6MjA6NDQgKzAyMDAKU3ViamVjdDogW1BBVENIXSAvOgoKMjAwOS0wMi0y
NiAgWGFuIExvcGV6ICA8eGFuQGdub21lLm9yZz4KCiAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCgogICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjk0NwogICAgICAgIFtHVEtdIE1pc3NpbmcgSFRUUCBBdXRoIGNoYWxsZW5nZQoKICAgICAg
ICBBZGQgSFRUUCBhdXRoZW50aWNhdGlvbiBkaWFsb2cgd2l0aCBvcHRpb25hbCBHTk9NRSBLZXly
aW5nCiAgICAgICAgc3RvcmFnZS4KCiAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKICAgICAgICAq
IGNvbmZpZ3VyZS5hYzoKCldlYkNvcmU6CgoyMDA5LTAyLTI2ICBYYW4gTG9wZXogIDx4YW5AZ25v
bWUub3JnPgoKICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCiAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTQ3CiAgICAgICAgW0dUS10g
TWlzc2luZyBIVFRQIEF1dGggY2hhbGxlbmdlCgogICAgICAgIEFkZCBIVFRQIGF1dGhlbnRpY2F0
aW9uIGRpYWxvZyB3aXRoIG9wdGlvbmFsIEdOT01FIEtleXJpbmcKICAgICAgICBzdG9yYWdlLgoK
ICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgogICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZUhhbmRsZUludGVybmFsLmg6CiAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlSW50
ZXJuYWw6OlJlc291cmNlSGFuZGxlSW50ZXJuYWwpOgogICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHA6CiAgICAgICAgKFdlYkNvcmU6OmN1cnJlbnRU
b3BsZXZlbENhbGxiYWNrKToKICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnN0YXJ0
SHR0cCk6CiAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpzdGFydCk6CiAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvd2Via2l0LXNvdXAtYXV0aC1kaWFsb2cuYzogQWRkZWQu
CiAgICAgICAgKHdlYmtpdF9zb3VwX2F1dGhfZGlhbG9nX2NsYXNzX2luaXQpOgogICAgICAgICh3
ZWJraXRfc291cF9hdXRoX2RpYWxvZ19pbml0KToKICAgICAgICAod2Via2l0X3NvdXBfYXV0aF9k
aWFsb2dfc2Vzc2lvbl9mZWF0dXJlX2luaXQpOgogICAgICAgIChmcmVlX2F1dGhEYXRhKToKICAg
ICAgICAoc2V0X3Bhc3N3b3JkX2NhbGxiYWNrKToKICAgICAgICAocmVzcG9uc2VfY2FsbGJhY2sp
OgogICAgICAgIChzaG93X2F1dGhfZGlhbG9nKToKICAgICAgICAoZmluZF9wYXNzd29yZF9jYWxs
YmFjayk6CiAgICAgICAgKHNlc3Npb25fYXV0aGVudGljYXRlKToKICAgICAgICAoYXR0YWNoKToK
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC93ZWJraXQtc291cC1hdXRoLWRpYWxvZy5o
OiBBZGRlZC4KLS0tCiBDaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8ICAgMTMgKwogR05VbWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfCAgICA0ICstCiBXZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8ICAgMzIgKysKIFdlYkNvcmUvR05VbWFrZWZpbGUuYW0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHwgICAgOSArLQogV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaCAgfCAgICAzICsKIC4uLi9wbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcCAgIHwgICA0MCArKystCiAuLi4vbmV0d29yay9z
b3VwL3dlYmtpdC1zb3VwLWF1dGgtZGlhbG9nLmMgICAgICAgICB8ICAzNDQgKysrKysrKysrKysr
KysrKysrKysKIC4uLi9uZXR3b3JrL3NvdXAvd2Via2l0LXNvdXAtYXV0aC1kaWFsb2cuaCAgICAg
ICAgIHwgICA0OCArKysKIGNvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwgICAxOSArCiA5IGZpbGVzIGNoYW5nZWQsIDUwOSBpbnNlcnRpb25zKCspLCAz
IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL3dlYmtpdC1zb3VwLWF1dGgtZGlhbG9nLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBXZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC93ZWJraXQtc291cC1hdXRoLWRpYWxvZy5oCgpkaWZm
IC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IDVhMTc5MGQuLmRkMmRiNzkgMTAw
NjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTUsNiArNSwxOSBAQAogICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5NDcKICAgICAg
ICAgW0dUS10gTWlzc2luZyBIVFRQIEF1dGggY2hhbGxlbmdlCiAKKyAgICAgICAgQWRkIEhUVFAg
YXV0aGVudGljYXRpb24gZGlhbG9nIHdpdGggb3B0aW9uYWwgR05PTUUgS2V5cmluZworICAgICAg
ICBzdG9yYWdlLgorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogY29uZmln
dXJlLmFjOgorCisyMDA5LTAyLTI2ICBYYW4gTG9wZXogIDx4YW5AZ25vbWUub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk0NworICAgICAgICBbR1RLXSBNaXNzaW5nIEhU
VFAgQXV0aCBjaGFsbGVuZ2UKKwogICAgICAgICBUYWtlIG1hcnNoYWxsZXJzIHRvIGJlIGJ1aWx0
IGZyb20gYSBtYW51YWxseSBtYWludGFpbmVkIGxpc3QKICAgICAgICAgaW5zdGVhZCBvZiBncmVw
cGluZyB0aGUgc291cmNlcy4KIApkaWZmIC0tZ2l0IGEvR05VbWFrZWZpbGUuYW0gYi9HTlVtYWtl
ZmlsZS5hbQppbmRleCBlZmVkMmFhLi5kOTI1YzgyIDEwMDY0NAotLS0gYS9HTlVtYWtlZmlsZS5h
bQorKysgYi9HTlVtYWtlZmlsZS5hbQpAQCAtMTgxLDcgKzE4MSw4IEBAIGxpYldlYkNvcmVfbGFf
Q0ZMQUdTID0gXAogCSQoTElCWFNMVF9DRkxBR1MpIFwKIAkkKENPVkVSQUdFX0NGTEFHUykgXAog
CSQoSElMRE9OX0NGTEFHUykgXAotCSQoR0VPQ0xVRV9DRkxBR1MpCisJJChHRU9DTFVFX0NGTEFH
UykgXAorCSQoR05PTUVLRVlSSU5HX0NGTEFHUykKIAogbGliV2ViQ29yZV9sYV9DUFBGTEFHUyA9
IFwKIAkkKGdsb2JhbF9jcHBmbGFncykgXApAQCAtMjEwLDYgKzIxMSw3IEBAIGxpYldlYkNvcmVf
bGFfTElCQUREID0gXAogCSQoSlBFR19MSUJTKSBcCiAJJChQTkdfTElCUykgXAogCSQoR0VPQ0xV
RV9MSUJTKSBcCisJJChHTk9NRUtFWVJJTkdfTElCUykgXAogCS1scHRocmVhZAogCiAjIFdlYktp
dApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCA2ZjM4YzdlLi43Y2ViNjMxIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDA5LTAyLTI2ICBYYW4gTG9wZXog
IDx4YW5AZ25vbWUub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFdBUk5JTkc6IE5PIFRFU1QgQ0FTRVMgQURERUQgT1IgQ0hBTkdFRAorCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk0NworICAgICAg
ICBbR1RLXSBNaXNzaW5nIEhUVFAgQXV0aCBjaGFsbGVuZ2UKKworICAgICAgICBBZGQgSFRUUCBh
dXRoZW50aWNhdGlvbiBkaWFsb2cgd2l0aCBvcHRpb25hbCBHTk9NRSBLZXlyaW5nCisgICAgICAg
IHN0b3JhZ2UuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
c291cmNlSGFuZGxlSW50ZXJuYWw6OlJlc291cmNlSGFuZGxlSW50ZXJuYWwpOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Y3VycmVudFRvcGxldmVsQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VIYW5kbGU6OnN0YXJ0SHR0cCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRs
ZTo6c3RhcnQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC93ZWJraXQtc291cC1h
dXRoLWRpYWxvZy5jOiBBZGRlZC4KKyAgICAgICAgKHdlYmtpdF9zb3VwX2F1dGhfZGlhbG9nX2Ns
YXNzX2luaXQpOgorICAgICAgICAod2Via2l0X3NvdXBfYXV0aF9kaWFsb2dfaW5pdCk6CisgICAg
ICAgICh3ZWJraXRfc291cF9hdXRoX2RpYWxvZ19zZXNzaW9uX2ZlYXR1cmVfaW5pdCk6CisgICAg
ICAgIChmcmVlX2F1dGhEYXRhKToKKyAgICAgICAgKHNldF9wYXNzd29yZF9jYWxsYmFjayk6Cisg
ICAgICAgIChyZXNwb25zZV9jYWxsYmFjayk6CisgICAgICAgIChzaG93X2F1dGhfZGlhbG9nKToK
KyAgICAgICAgKGZpbmRfcGFzc3dvcmRfY2FsbGJhY2spOgorICAgICAgICAoc2Vzc2lvbl9hdXRo
ZW50aWNhdGUpOgorICAgICAgICAoYXR0YWNoKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvd2Via2l0LXNvdXAtYXV0aC1kaWFsb2cuaDogQWRkZWQuCisKIDIwMDktMDItMjYgIFNp
bW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgQnVpbGQgZml4
LCBubyByZXZpZXcuCmRpZmYgLS1naXQgYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5hbQppbmRleCBhZWNmMTBjLi45ZjgzNDhhIDEwMDY0NAotLS0gYS9XZWJD
b3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTE4MTcs
NyArMTgxNywxNCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9zb3VwL1Jlc291cmNlRXJyb3IuaCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3Nv
dXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3Nv
dXAvUmVzb3VyY2VSZXF1ZXN0LmggXAotCVdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jl
c291cmNlUmVzcG9uc2UuaAorCVdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNl
UmVzcG9uc2UuaCBcCisJV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvd2Via2l0LXNvdXAt
YXV0aC1kaWFsb2cuYyBcCisJV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvd2Via2l0LXNv
dXAtYXV0aC1kaWFsb2cuaAorCitpZiBVU0VfR05PTUVLRVlSSU5HCit3ZWJjb3JlX2NwcGZsYWdz
ICs9IFwKKwktRFdURl9VU0VfR05PTUVLRVlSSU5HPTEKK2VuZGlmCiAKICMgLS0tCiAjIEZyZWV0
eXBlIGZvbnQgYmFja2VuZApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlSGFuZGxlSW50ZXJuYWwuaCBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZUhhbmRsZUludGVybmFsLmgKaW5kZXggNjZhYTRjMS4uNGU0NDE3YyAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaAorKysgYi9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oCkBAIC00Nyw2ICs0
Nyw3IEBACiAKICNpZiBVU0UoU09VUCkKICNpbmNsdWRlIDxsaWJzb3VwL3NvdXAuaD4KK2NsYXNz
IEZyYW1lOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShRVCkKQEAgLTExNyw2ICsxMTgsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICAsIG1fYnVmc2l6ZSgwKQogICAgICAgICAg
ICAgLCBtX3RvdGFsKDApCiAgICAgICAgICAgICAsIG1faWRsZUhhbmRsZXIoMCkKKyAgICAgICAg
ICAgICwgbV9mcmFtZSgwKQogI2VuZGlmCiAjaWYgUExBVEZPUk0oUVQpCiAgICAgICAgICAgICAs
IG1fam9iKDApCkBAIC0xODcsNiArMTg5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICBjaGFyKiBtX2J1ZmZlcjsKICAgICAgICAgZ3NpemUgbV9idWZzaXplLCBtX3RvdGFsOwogICAg
ICAgICBndWludCBtX2lkbGVIYW5kbGVyOworICAgICAgICBGcmFtZSogbV9mcmFtZTsKICNlbmRp
ZgogI2lmIFBMQVRGT1JNKFFUKQogI2lmIFFUX1ZFUlNJT04gPCAweDA0MDQwMApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcCBi
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAKaW5k
ZXggZDE0ODcyOS4uYzE2ZDcyOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwCkBAIC0yOCwyMSArMjgsMjUgQEAKIAogI2lu
Y2x1ZGUgIkJhc2U2NC5oIgogI2luY2x1ZGUgIkNvb2tpZUphclNvdXAuaCIKKyNpbmNsdWRlICJD
aHJvbWVDbGllbnQuaCIKICNpbmNsdWRlICJDU3RyaW5nLmgiCiAjaW5jbHVkZSAiRG9jTG9hZGVy
LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJIVFRQUGFyc2Vycy5oIgogI2luY2x1
ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2lu
Y2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJSZXNvdXJjZUVycm9yLmgiCiAjaW5jbHVkZSAiUmVz
b3VyY2VIYW5kbGVDbGllbnQuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZUludGVybmFsLmgi
CiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUgIlRleHRFbmNvZGluZy5o
IgorI2luY2x1ZGUgIndlYmtpdC1zb3VwLWF1dGgtZGlhbG9nLmgiCiAKICNpbmNsdWRlIDxlcnJu
by5oPgogI2luY2x1ZGUgPGZjbnRsLmg+CiAjaW5jbHVkZSA8Z2lvL2dpby5oPgorI2luY2x1ZGUg
PGd0ay9ndGsuaD4KICNpbmNsdWRlIDxsaWJzb3VwL3NvdXAuaD4KICNpbmNsdWRlIDxsaWJzb3Vw
L3NvdXAtbWVzc2FnZS5oPgogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgpAQCAtMzcwLDYgKzM3NCwz
MSBAQCBzdGF0aWMgU291cFNlc3Npb24qIGNyZWF0ZVNvdXBTZXNzaW9uKCkKICAgICByZXR1cm4g
c291cF9zZXNzaW9uX2FzeW5jX25ldygpOwogfQogCitzdGF0aWMgR3RrV2lkZ2V0KiBjdXJyZW50
VG9wbGV2ZWxDYWxsYmFjayhXZWJLaXRTb3VwQXV0aERpYWxvZyogZmVhdHVyZSwgU291cE1lc3Nh
Z2UqIG1lc3NhZ2UsIGdwb2ludGVyIHVzZXJEYXRhKQoreworICAgIGdwb2ludGVyIG1lc3NhZ2VE
YXRhID0gZ19vYmplY3RfZ2V0X2RhdGEoR19PQkpFQ1QobWVzc2FnZSksICJyZXNvdXJjZUhhbmRs
ZSIpOworICAgIGlmICghbWVzc2FnZURhdGEpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAg
UmVzb3VyY2VIYW5kbGUqIGhhbmRsZSA9IHN0YXRpY19jYXN0PFJlc291cmNlSGFuZGxlKj4obWVz
c2FnZURhdGEpOworICAgIGlmICghaGFuZGxlKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAg
IFJlc291cmNlSGFuZGxlSW50ZXJuYWwqIGQgPSBoYW5kbGUtPmdldEludGVybmFsKCk7CisgICAg
aWYgKCFkKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIEZyYW1lKiBmcmFtZSA9IGQtPm1f
ZnJhbWU7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBHdGtX
aWRnZXQqIHRvcGxldmVsID0gIGd0a193aWRnZXRfZ2V0X3RvcGxldmVsKEdUS19XSURHRVQoZnJh
bWUtPnBhZ2UoKS0+Y2hyb21lKCktPnBsYXRmb3JtV2luZG93KCkpKTsKKyAgICBpZiAoR1RLX1dJ
REdFVF9UT1BMRVZFTCh0b3BsZXZlbCkpCisgICAgICAgIHJldHVybiB0b3BsZXZlbDsKKyAgICBl
bHNlCisgICAgICAgIHJldHVybiBOVUxMOworfQorCiBzdGF0aWMgdm9pZCBlbnN1cmVTZXNzaW9u
SXNJbml0aWFsaXplZChTb3VwU2Vzc2lvbiogc2Vzc2lvbikKIHsKICAgICBpZiAoZ19vYmplY3Rf
Z2V0X2RhdGEoR19PQkpFQ1Qoc2Vzc2lvbiksICJ3ZWJraXQtaW5pdCIpKQpAQCAtMzgxLDYgKzQx
MCwxMSBAQCBzdGF0aWMgdm9pZCBlbnN1cmVTZXNzaW9uSXNJbml0aWFsaXplZChTb3VwU2Vzc2lv
biogc2Vzc2lvbikKICAgICBlbHNlCiAgICAgICAgIHNldERlZmF1bHRDb29raWVKYXIoamFyKTsK
IAorICAgIFNvdXBTZXNzaW9uRmVhdHVyZSogYXV0aERpYWxvZyA9IHN0YXRpY19jYXN0PFNvdXBT
ZXNzaW9uRmVhdHVyZSo+KGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9TT1VQX0FVVEhfRElBTE9H
LCBOVUxMKSk7CisgICAgZ19zaWduYWxfY29ubmVjdChhdXRoRGlhbG9nLCAiY3VycmVudC10b3Bs
ZXZlbCIsIEdfQ0FMTEJBQ0soY3VycmVudFRvcGxldmVsQ2FsbGJhY2spLCBOVUxMKTsKKyAgICBz
b3VwX3Nlc3Npb25fYWRkX2ZlYXR1cmUoc2Vzc2lvbiwgYXV0aERpYWxvZyk7CisgICAgZ19vYmpl
Y3RfdW5yZWYoYXV0aERpYWxvZyk7CisKICAgICBjb25zdCBjaGFyKiB3ZWJraXRfZGVidWcgPSBn
X2dldGVudigiV0VCS0lUX0RFQlVHIik7IAogICAgIGlmICghc291cF9zZXNzaW9uX2dldF9mZWF0
dXJlKHNlc3Npb24sIFNPVVBfVFlQRV9MT0dHRVIpCiAgICAgICAgICYmIHdlYmtpdF9kZWJ1ZyAm
JiAhc3RyY21wKHdlYmtpdF9kZWJ1ZywgIm5ldHdvcmsiKSkgewpAQCAtNDAwLDEwICs0MzQsMTEg
QEAgYm9vbCBSZXNvdXJjZUhhbmRsZTo6c3RhcnRIdHRwKFN0cmluZyB1cmxTdHJpbmcpCiAgICAg
U291cE1lc3NhZ2UqIG1zZzsKICAgICBtc2cgPSBzb3VwX21lc3NhZ2VfbmV3KHJlcXVlc3QoKS5o
dHRwTWV0aG9kKCkudXRmOCgpLmRhdGEoKSwgdXJsU3RyaW5nLnV0ZjgoKS5kYXRhKCkpOwogICAg
IGdfc2lnbmFsX2Nvbm5lY3QobXNnLCAicmVzdGFydGVkIiwgR19DQUxMQkFDSyhyZXN0YXJ0ZWRD
YWxsYmFjayksIHRoaXMpOwotCiAgICAgZ19zaWduYWxfY29ubmVjdChtc2csICJnb3QtaGVhZGVy
cyIsIEdfQ0FMTEJBQ0soZ290SGVhZGVyc0NhbGxiYWNrKSwgdGhpcyk7CiAgICAgZ19zaWduYWxf
Y29ubmVjdChtc2csICJnb3QtY2h1bmsiLCBHX0NBTExCQUNLKGdvdENodW5rQ2FsbGJhY2spLCB0
aGlzKTsKIAorICAgIGdfb2JqZWN0X3NldF9kYXRhKEdfT0JKRUNUKG1zZyksICJyZXNvdXJjZUhh
bmRsZSIsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHRoaXMpKTsKKwogICAgIEhUVFBIZWFkZXJN
YXAgY3VzdG9tSGVhZGVycyA9IGQtPm1fcmVxdWVzdC5odHRwSGVhZGVyRmllbGRzKCk7CiAgICAg
aWYgKCFjdXN0b21IZWFkZXJzLmlzRW1wdHkoKSkgewogICAgICAgICBIVFRQSGVhZGVyTWFwOjpj
b25zdF9pdGVyYXRvciBlbmQgPSBjdXN0b21IZWFkZXJzLmVuZCgpOwpAQCAtNTE4LDYgKzU1Myw5
IEBAIGJvb2wgUmVzb3VyY2VIYW5kbGU6OnN0YXJ0KEZyYW1lKiBmcmFtZSkKICAgICBTdHJpbmcg
dXJsU3RyaW5nID0gdXJsLnN0cmluZygpOwogICAgIFN0cmluZyBwcm90b2NvbCA9IHVybC5wcm90
b2NvbCgpOwogCisgICAgLy8gVXNlZCB0byBzZXQgdGhlIGF1dGhlbnRpY2F0aW9uIGRpYWxvZyB0
b3BsZXZlbDsgbWF5IGJlIE5VTEwKKyAgICBkLT5tX2ZyYW1lID0gZnJhbWU7CisKICAgICBpZiAo
ZXF1YWxJZ25vcmluZ0Nhc2UocHJvdG9jb2wsICJkYXRhIikpCiAgICAgICAgIHJldHVybiBzdGFy
dERhdGEodXJsU3RyaW5nKTsKICAgICBlbHNlIGlmICgoZXF1YWxJZ25vcmluZ0Nhc2UocHJvdG9j
b2wsICJodHRwIikgfHwgZXF1YWxJZ25vcmluZ0Nhc2UocHJvdG9jb2wsICJodHRwcyIpKSAmJiBT
T1VQX1VSSV9WQUxJRF9GT1JfSFRUUChzb3VwX3VyaV9uZXcodXJsU3RyaW5nLnV0ZjgoKS5kYXRh
KCkpKSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL3dlYmtpdC1z
b3VwLWF1dGgtZGlhbG9nLmMgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC93ZWJraXQt
c291cC1hdXRoLWRpYWxvZy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg3
NTgyNWYKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC93
ZWJraXQtc291cC1hdXRoLWRpYWxvZy5jCkBAIC0wLDAgKzEsMzQ0IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDA5IElnYWxpYSBTLkwuLCBBdXRob3I6IFhhbiBMb3BleiA8eGxvcGV6QGlnYWxp
YS5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3
cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgPGd0ay9ndGsuaD4KKyNpbmNs
dWRlIDxsaWJzb3VwL3NvdXAuaD4KKyNpZiBVU0UoR05PTUVLRVlSSU5HKQorI2luY2x1ZGUgPGdu
b21lLWtleXJpbmcuaD4KKyNlbmRpZgorCisjaW5jbHVkZSAid2Via2l0bWFyc2hhbC5oIgorI2lu
Y2x1ZGUgIndlYmtpdC1zb3VwLWF1dGgtZGlhbG9nLmgiCisKK3N0YXRpYyB2b2lkIHdlYmtpdF9z
b3VwX2F1dGhfZGlhbG9nX3Nlc3Npb25fZmVhdHVyZV9pbml0KFNvdXBTZXNzaW9uRmVhdHVyZUlu
dGVyZmFjZSogZmVhdHVyZV9pbnRlcmZhY2UsIGdwb2ludGVyIGludGVyZmFjZV9kYXRhKTsKK3N0
YXRpYyB2b2lkIGF0dGFjaChTb3VwU2Vzc2lvbkZlYXR1cmUgKm1hbmFnZXIsIFNvdXBTZXNzaW9u
ICpzZXNzaW9uKTsKK3N0YXRpYyB2b2lkIGRldGFjaChTb3VwU2Vzc2lvbkZlYXR1cmUgKm1hbmFn
ZXIsIFNvdXBTZXNzaW9uICpzZXNzaW9uKTsKKworZW51bSB7CisgICAgQ1VSUkVOVF9UT1BMRVZF
TCwKKyAgICBMQVNUX1NJR05BTAorfTsKKworc3RhdGljIGd1aW50IHNpZ25hbHNbTEFTVF9TSUdO
QUxdID0geyAwIH07CisKK0dfREVGSU5FX1RZUEVfV0lUSF9DT0RFKFdlYktpdFNvdXBBdXRoRGlh
bG9nLCB3ZWJraXRfc291cF9hdXRoX2RpYWxvZywgR19UWVBFX09CSkVDVCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIEdfSU1QTEVNRU5UX0lOVEVSRkFDRShTT1VQX1RZUEVfU0VTU0lPTl9GRUFU
VVJFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdlYmtp
dF9zb3VwX2F1dGhfZGlhbG9nX3Nlc3Npb25fZmVhdHVyZV9pbml0KSkKKworc3RhdGljIHZvaWQg
d2Via2l0X3NvdXBfYXV0aF9kaWFsb2dfY2xhc3NfaW5pdChXZWJLaXRTb3VwQXV0aERpYWxvZ0Ns
YXNzICprbGFzcykKK3sKKyAgICBHT2JqZWN0Q2xhc3MqIG9iamVjdF9jbGFzcyA9IEdfT0JKRUNU
X0NMQVNTKGtsYXNzKTsKKworICAgIHNpZ25hbHNbQ1VSUkVOVF9UT1BMRVZFTF0gPQorICAgICAg
Z19zaWduYWxfbmV3KCJjdXJyZW50LXRvcGxldmVsIiwKKyAgICAgICAgICAgICAgICAgICBHX09C
SkVDVF9DTEFTU19UWVBFKG9iamVjdF9jbGFzcyksCisgICAgICAgICAgICAgICAgICAgR19TSUdO
QUxfUlVOX0xBU1QsCisgICAgICAgICAgICAgICAgICAgR19TVFJVQ1RfT0ZGU0VUKFdlYktpdFNv
dXBBdXRoRGlhbG9nQ2xhc3MsIGN1cnJlbnRfdG9wbGV2ZWwpLAorICAgICAgICAgICAgICAgICAg
IE5VTEwsIE5VTEwsCisgICAgICAgICAgICAgICAgICAgd2Via2l0X21hcnNoYWxfT0JKRUNUX19P
QkpFQ1QsCisgICAgICAgICAgICAgICAgICAgR1RLX1RZUEVfV0lER0VULCAxLAorICAgICAgICAg
ICAgICAgICAgIFNPVVBfVFlQRV9NRVNTQUdFKTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0X3Nv
dXBfYXV0aF9kaWFsb2dfaW5pdChXZWJLaXRTb3VwQXV0aERpYWxvZyogaW5zdGFuY2UpCit7Cit9
CisKK3N0YXRpYyB2b2lkIHdlYmtpdF9zb3VwX2F1dGhfZGlhbG9nX3Nlc3Npb25fZmVhdHVyZV9p
bml0KFNvdXBTZXNzaW9uRmVhdHVyZUludGVyZmFjZSAqZmVhdHVyZV9pbnRlcmZhY2UsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncG9p
bnRlciBpbnRlcmZhY2VfZGF0YSkKK3sKKyAgICBmZWF0dXJlX2ludGVyZmFjZS0+YXR0YWNoID0g
YXR0YWNoOworICAgIGZlYXR1cmVfaW50ZXJmYWNlLT5kZXRhY2ggPSBkZXRhY2g7Cit9CisKK3R5
cGVkZWYgc3RydWN0IF9XZWJLaXRBdXRoRGF0YSB7CisgICAgU291cE1lc3NhZ2UqIG1zZzsKKyAg
ICBTb3VwQXV0aCogYXV0aDsKKyAgICBTb3VwU2Vzc2lvbiogc2Vzc2lvbjsKKyAgICBTb3VwU2Vz
c2lvbkZlYXR1cmUqIG1hbmFnZXI7CisgICAgR3RrV2lkZ2V0KiBsb2dpbkVudHJ5OworICAgIEd0
a1dpZGdldCogcGFzc3dvcmRFbnRyeTsKKyNpZiBVU0UoR05PTUVLRVlSSU5HKQorICAgIEd0a1dp
ZGdldCogY2hlY2tCdXR0b247CisjZW5kaWYKK30gV2ViS2l0QXV0aERhdGE7CisKK3N0YXRpYyB2
b2lkIGZyZWVfYXV0aERhdGEoV2ViS2l0QXV0aERhdGEqIGF1dGhEYXRhKQoreworICAgIGdfb2Jq
ZWN0X3VucmVmKGF1dGhEYXRhLT5tc2cpOworICAgIGdfc2xpY2VfZnJlZShXZWJLaXRBdXRoRGF0
YSwgYXV0aERhdGEpOworfQorCisjaWYgVVNFKEdOT01FS0VZUklORykKK3N0YXRpYyB2b2lkIHNl
dF9wYXNzd29yZF9jYWxsYmFjayhHbm9tZUtleXJpbmdSZXN1bHQgcmVzdWx0LCBndWludDMyIHZh
bCwgZ3BvaW50ZXIgdXNlcl9kYXRhKQoreworICAgIC8qIER1bW15IGNhbGxiYWNrLCBnbm9tZV9r
ZXlyaW5nX3NldF9uZXR3b3JrX3Bhc3N3b3JkIGRvZXMgbm90IGFjY2VwdCBhIE5VTEwgb25lICov
Cit9CisjZW5kaWYKKworc3RhdGljIHZvaWQgcmVzcG9uc2VfY2FsbGJhY2soR3RrRGlhbG9nKiBk
aWFsb2csIGdpbnQgcmVzcG9uc2VfaWQsIFdlYktpdEF1dGhEYXRhKiBhdXRoRGF0YSkKK3sKKyAg
ICBjb25zdCBjaGFyKiBsb2dpbjsKKyAgICBjb25zdCBjaGFyKiBwYXNzd29yZDsKKyNpZiBVU0Uo
R05PTUVLRVlSSU5HKQorICAgIFNvdXBVUkkqIHVyaTsKKyAgICBnYm9vbGVhbiBzdG9yZVBhc3N3
b3JkOworI2VuZGlmCisKKyAgICBzd2l0Y2gocmVzcG9uc2VfaWQpIHsKKyAgICBjYXNlIEdUS19S
RVNQT05TRV9PSzoKKyAgICAgICAgbG9naW4gPSBndGtfZW50cnlfZ2V0X3RleHQoR1RLX0VOVFJZ
KGF1dGhEYXRhLT5sb2dpbkVudHJ5KSk7CisgICAgICAgIHBhc3N3b3JkID0gZ3RrX2VudHJ5X2dl
dF90ZXh0KEdUS19FTlRSWShhdXRoRGF0YS0+cGFzc3dvcmRFbnRyeSkpOworICAgICAgICBzb3Vw
X2F1dGhfYXV0aGVudGljYXRlKGF1dGhEYXRhLT5hdXRoLCBsb2dpbiwgcGFzc3dvcmQpOworCisj
aWYgVVNFKEdOT01FS0VZUklORykKKyAgICAgICAgc3RvcmVQYXNzd29yZCA9IGd0a190b2dnbGVf
YnV0dG9uX2dldF9hY3RpdmUoR1RLX1RPR0dMRV9CVVRUT04oYXV0aERhdGEtPmNoZWNrQnV0dG9u
KSk7CisgICAgICAgIGlmIChzdG9yZVBhc3N3b3JkKSB7CisgICAgICAgICAgICB1cmkgPSBzb3Vw
X21lc3NhZ2VfZ2V0X3VyaShhdXRoRGF0YS0+bXNnKTsKKyAgICAgICAgICAgIGdub21lX2tleXJp
bmdfc2V0X25ldHdvcmtfcGFzc3dvcmQoTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbG9naW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNvdXBfYXV0aF9nZXRfcmVhbG0oYXV0aERhdGEtPmF1dGgpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmktPmhvc3Qs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVyaS0+c2NoZW1l
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VwX2F1
dGhfZ2V0X3NjaGVtZV9uYW1lKGF1dGhEYXRhLT5hdXRoKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJpLT5wb3J0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzd29yZCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEdub21lS2V5cmluZ09wZXJhdGlvbkdldElu
dENhbGxiYWNrKXNldF9wYXNzd29yZF9jYWxsYmFjaywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CisgICAgICAgIH0KKyNlbmRpZgorICAgIGRlZmF1
bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHNvdXBfc2Vzc2lvbl91bnBhdXNlX21l
c3NhZ2UoYXV0aERhdGEtPnNlc3Npb24sIGF1dGhEYXRhLT5tc2cpOworICAgIGZyZWVfYXV0aERh
dGEoYXV0aERhdGEpOworICAgIGd0a193aWRnZXRfZGVzdHJveShHVEtfV0lER0VUKGRpYWxvZykp
OworfQorCitzdGF0aWMgR3RrV2lkZ2V0ICoKK3RhYmxlX2FkZF9lbnRyeSAoR3RrV2lkZ2V0ICAq
dGFibGUsCisgICAgICAgICAgICAgICAgIGludCAgICAgICAgIHJvdywKKyAgICAgICAgICAgICAg
ICAgY29uc3QgY2hhciAqbGFiZWxfdGV4dCwKKyAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAq
dmFsdWUsCisgICAgICAgICAgICAgICAgIGdwb2ludGVyICAgIHVzZXJfZGF0YSkKK3sKKyAgICBH
dGtXaWRnZXQgKmVudHJ5OworICAgIEd0a1dpZGdldCAqbGFiZWw7CisKKyAgICBsYWJlbCA9IGd0
a19sYWJlbF9uZXcobGFiZWxfdGV4dCk7CisgICAgZ3RrX21pc2Nfc2V0X2FsaWdubWVudChHVEtf
TUlTQyhsYWJlbCksIDAuMCwgMC41KTsKKworICAgIGVudHJ5ID0gZ3RrX2VudHJ5X25ldygpOwor
ICAgIGd0a19lbnRyeV9zZXRfYWN0aXZhdGVzX2RlZmF1bHQoR1RLX0VOVFJZKGVudHJ5KSwgVFJV
RSk7CisKKyAgICBpZiAodmFsdWUpCisgICAgICAgIGd0a19lbnRyeV9zZXRfdGV4dChHVEtfRU5U
UlkoZW50cnkpLCB2YWx1ZSk7CisKKyAgICBndGtfdGFibGVfYXR0YWNoKEdUS19UQUJMRSh0YWJs
ZSksIGxhYmVsLAorICAgICAgICAgICAgICAgICAgICAgMCwgMSwgcm93LCByb3cgKyAxLAorICAg
ICAgICAgICAgICAgICAgICAgR1RLX0ZJTEwsIEdUS19FWFBBTkQgfCBHVEtfRklMTCwgMCwgMCk7
CisgICAgZ3RrX3RhYmxlX2F0dGFjaF9kZWZhdWx0cyhHVEtfVEFCTEUodGFibGUpLCBlbnRyeSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEsIDIsIHJvdywgcm93ICsgMSk7CisKKyAg
ICByZXR1cm4gZW50cnk7Cit9CisKK3N0YXRpYyB2b2lkIHNob3dfYXV0aF9kaWFsb2coV2ViS2l0
QXV0aERhdGEqIGF1dGhEYXRhLCBjb25zdCBjaGFyKiBsb2dpbiwgY29uc3QgY2hhciogcGFzc3dv
cmQpCit7CisgICAgR3RrV2lkZ2V0KiB0b3BsZXZlbDsKKyAgICBHdGtXaWRnZXQgKndpZGdldDsK
KyAgICBHdGtEaWFsb2cgKmRpYWxvZzsKKyAgICBHdGtXaW5kb3cgKndpbmRvdzsKKyAgICBHdGtX
aWRnZXQgKmVudHJ5Q29udGFpbmVyOworICAgIEd0a1dpZGdldCAqaGJveCwgKm1haW5WQm94LCAq
dmJveCwgKmljb247CisgICAgR3RrV2lkZ2V0ICp0YWJsZTsKKyAgICBHdGtXaWRnZXQgKm1lc3Nh
Z2VMYWJlbDsKKyAgICBjaGFyKiBtZXNzYWdlOworICAgIFNvdXBVUkkqIHVyaTsKKyNpZiBVU0Uo
R05PTUVLRVlSSU5HKQorICAgIEd0a1dpZGdldCogcmVtZW1iZXJfYm94OworICAgIEd0a1dpZGdl
dCogY2hlY2tfYnV0dG9uOworI2VuZGlmCisKKyAgICAvKiBGcm9tIEdUSysgZ3RrbW91bnRvcGVy
YXRpb24uYywgbW9kaWZpZWQgYW5kIHNpbXBsaWZpZWQuIExHUEwgMiBsaWNlbnNlICovCisKKyAg
ICB3aWRnZXQgPSBndGtfZGlhbG9nX25ldygpOworICAgIHdpbmRvdyA9IEdUS19XSU5ET1cod2lk
Z2V0KTsKKyAgICBkaWFsb2cgPSBHVEtfRElBTE9HKHdpZGdldCk7CisKKyAgICBndGtfZGlhbG9n
X2FkZF9idXR0b25zKGRpYWxvZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdUS19TVE9D
S19DQU5DRUwsIEdUS19SRVNQT05TRV9DQU5DRUwsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHVEtfU1RPQ0tfT0ssIEdUS19SRVNQT05TRV9PSywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIE5VTEwpOworCisgICAgLyogU2V0IHRoZSBkaWFsb2cgdXAgd2l0aCBISUcgcHJvcGVydGll
cyAqLworICAgIGd0a19kaWFsb2dfc2V0X2hhc19zZXBhcmF0b3IoZGlhbG9nLCBGQUxTRSk7Cisg
ICAgZ3RrX2NvbnRhaW5lcl9zZXRfYm9yZGVyX3dpZHRoKEdUS19DT05UQUlORVIgKGRpYWxvZyks
IDUpOworICAgIGd0a19ib3hfc2V0X3NwYWNpbmcoR1RLX0JPWChkaWFsb2ctPnZib3gpLCAyKTsg
LyogMiAqIDUgKyAyID0gMTIgKi8KKyAgICBndGtfY29udGFpbmVyX3NldF9ib3JkZXJfd2lkdGgo
R1RLX0NPTlRBSU5FUiAoZGlhbG9nLT5hY3Rpb25fYXJlYSksIDUpOworICAgIGd0a19ib3hfc2V0
X3NwYWNpbmcoR1RLX0JPWChkaWFsb2ctPmFjdGlvbl9hcmVhKSwgNik7CisKKyAgICBndGtfd2lu
ZG93X3NldF9yZXNpemFibGUod2luZG93LCBGQUxTRSk7CisgICAgZ3RrX3dpbmRvd19zZXRfdGl0
bGUod2luZG93LCAiIik7CisgICAgZ3RrX3dpbmRvd19zZXRfaWNvbl9uYW1lKHdpbmRvdywgR1RL
X1NUT0NLX0RJQUxPR19BVVRIRU5USUNBVElPTik7CisKKyAgICBndGtfZGlhbG9nX3NldF9kZWZh
dWx0X3Jlc3BvbnNlKGRpYWxvZywgR1RLX1JFU1BPTlNFX09LKTsKKworICAgIC8qIEdldCB0aGUg
Y3VycmVudCB0b3BsZXZlbCAqLworICAgIGdfc2lnbmFsX2VtaXQoYXV0aERhdGEtPm1hbmFnZXIs
IHNpZ25hbHNbQ1VSUkVOVF9UT1BMRVZFTF0sIDAsIGF1dGhEYXRhLT5tc2csICZ0b3BsZXZlbCk7
CisKKyAgICBpZiAodG9wbGV2ZWwpCisgICAgICAgIGd0a193aW5kb3dfc2V0X3RyYW5zaWVudF9m
b3Iod2luZG93LCB0b3BsZXZlbCk7CisKKyAgICAvKiBCdWlsZCBjb250ZW50cyAqLworICAgIGhi
b3ggPSBndGtfaGJveF9uZXcoRkFMU0UsIDEyKTsKKyAgICBndGtfY29udGFpbmVyX3NldF9ib3Jk
ZXJfd2lkdGgoR1RLX0NPTlRBSU5FUihoYm94KSwgNSk7CisgICAgZ3RrX2JveF9wYWNrX3N0YXJ0
KEdUS19CT1goZGlhbG9nLT52Ym94KSwgaGJveCwgVFJVRSwgVFJVRSwgMCk7CisKKyAgICBpY29u
ID0gZ3RrX2ltYWdlX25ld19mcm9tX3N0b2NrKEdUS19TVE9DS19ESUFMT0dfQVVUSEVOVElDQVRJ
T04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVEtfSUNPTl9TSVpFX0RJ
QUxPRyk7CisKKyAgICBndGtfbWlzY19zZXRfYWxpZ25tZW50KEdUS19NSVNDKGljb24pLCAwLjUs
IDAuMCk7CisgICAgZ3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1goaGJveCksIGljb24sIEZBTFNF
LCBGQUxTRSwgMCk7CisKKyAgICBtYWluVkJveCA9IGd0a192Ym94X25ldyhGQUxTRSwgMTgpOwor
ICAgIGd0a19ib3hfcGFja19zdGFydChHVEtfQk9YKGhib3gpLCBtYWluVkJveCwgVFJVRSwgVFJV
RSwgMCk7CisKKyAgICB1cmkgPSBzb3VwX21lc3NhZ2VfZ2V0X3VyaShhdXRoRGF0YS0+bXNnKTsK
KyAgICBtZXNzYWdlID0gZ19zdHJkdXBfcHJpbnRmKCJBIHVzZXJuYW1lIGFuZCBwYXNzd29yZCBh
cmUgYmVpbmcgcmVxdWVzdGVkIGJ5IHRoZSBzaXRlICVzIiwgdXJpLT5ob3N0KTsKKyAgICBtZXNz
YWdlTGFiZWwgPSBndGtfbGFiZWxfbmV3KG1lc3NhZ2UpOworICAgIGdfZnJlZShtZXNzYWdlKTsK
KyAgICBndGtfbWlzY19zZXRfYWxpZ25tZW50KEdUS19NSVNDKG1lc3NhZ2VMYWJlbCksIDAuMCwg
MC41KTsKKyAgICBndGtfbGFiZWxfc2V0X2xpbmVfd3JhcChHVEtfTEFCRUwobWVzc2FnZUxhYmVs
KSwgVFJVRSk7CisgICAgZ3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1gobWFpblZCb3gpLCBHVEtf
V0lER0VUKG1lc3NhZ2VMYWJlbCksCisgICAgICAgICAgICAgICAgICAgICAgIEZBTFNFLCBGQUxT
RSwgMCk7CisKKyAgICB2Ym94ID0gZ3RrX3Zib3hfbmV3KEZBTFNFLCA2KTsKKyAgICBndGtfYm94
X3BhY2tfc3RhcnQoR1RLX0JPWCAobWFpblZCb3gpLCB2Ym94LCBGQUxTRSwgRkFMU0UsIDApOwor
CisgICAgLyogVGhlIHRhYmxlIHRoYXQgaG9sZHMgdGhlIGVudHJpZXMgKi8KKyAgICBlbnRyeUNv
bnRhaW5lciA9IGd0a19hbGlnbm1lbnRfbmV3KDAuMCwgMC4wLCAxLjAsIDEuMCk7CisKKyAgICBn
dGtfYWxpZ25tZW50X3NldF9wYWRkaW5nKEdUS19BTElHTk1FTlQoZW50cnlDb250YWluZXIpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCwgMCwgMCk7CisKKyAgICBndGtfYm94
X3BhY2tfc3RhcnQoR1RLX0JPWCh2Ym94KSwgZW50cnlDb250YWluZXIsCisgICAgICAgICAgICAg
ICAgICAgICAgIEZBTFNFLCBGQUxTRSwgMCk7CisKKyAgICB0YWJsZSA9IGd0a190YWJsZV9uZXco
MiwgMiwgRkFMU0UpOworICAgIGd0a190YWJsZV9zZXRfY29sX3NwYWNpbmdzKEdUS19UQUJMRSAo
dGFibGUpLCAxMik7CisgICAgZ3RrX3RhYmxlX3NldF9yb3dfc3BhY2luZ3MoR1RLX1RBQkxFICh0
YWJsZSksIDYpOworICAgIGd0a19jb250YWluZXJfYWRkKEdUS19DT05UQUlORVIoZW50cnlDb250
YWluZXIpLCB0YWJsZSk7CisKKyAgICBhdXRoRGF0YS0+bG9naW5FbnRyeSA9IHRhYmxlX2FkZF9l
bnRyeSh0YWJsZSwgMCwgIlVzZXJuYW1lOiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbG9naW4sIE5VTEwpOworICAgIGF1dGhEYXRhLT5wYXNzd29yZEVudHJ5
ID0gdGFibGVfYWRkX2VudHJ5KHRhYmxlLCAxLCAiUGFzc3dvcmQ6IiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzd29yZCwgTlVMTCk7CisKKyAgICBn
dGtfZW50cnlfc2V0X3Zpc2liaWxpdHkoR1RLX0VOVFJZKGF1dGhEYXRhLT5wYXNzd29yZEVudHJ5
KSwgRkFMU0UpOworCisjaWYgVVNFKEdOT01FS0VZUklORykKKyAgICByZW1lbWJlcl9ib3ggPSBn
dGtfdmJveF9uZXcgKEZBTFNFLCA2KTsKKyAgICBndGtfYm94X3BhY2tfc3RhcnQgKEdUS19CT1gg
KHZib3gpLCByZW1lbWJlcl9ib3gsCisgICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSwgRkFM
U0UsIDApOworCisgICAgY2hlY2tfYnV0dG9uID0gZ3RrX2NoZWNrX2J1dHRvbl9uZXdfd2l0aF9s
YWJlbCgiUmVtZW1iZXIgcGFzc3dvcmQiKTsKKyAgICBpZiAobG9naW4gJiYgcGFzc3dvcmQpCisg
ICAgICAgIGd0a190b2dnbGVfYnV0dG9uX3NldF9hY3RpdmUoR1RLX1RPR0dMRV9CVVRUT04oY2hl
Y2tfYnV0dG9uKSwgVFJVRSk7CisgICAgZ3RrX2xhYmVsX3NldF9saW5lX3dyYXAoR1RLX0xBQkVM
KGd0a19iaW5fZ2V0X2NoaWxkKEdUS19CSU4oY2hlY2tfYnV0dG9uKSkpLCBUUlVFKTsKKyAgICBn
dGtfYm94X3BhY2tfc3RhcnQgKEdUS19CT1ggKHJlbWVtYmVyX2JveCksIGNoZWNrX2J1dHRvbiwg
RkFMU0UsIEZBTFNFLCAwKTsKKyAgICBhdXRoRGF0YS0+Y2hlY2tCdXR0b24gPSBjaGVja19idXR0
b247CisjZW5kaWYKKworICAgIGdfc2lnbmFsX2Nvbm5lY3QoZGlhbG9nLCAicmVzcG9uc2UiLCBH
X0NBTExCQUNLKHJlc3BvbnNlX2NhbGxiYWNrKSwgYXV0aERhdGEpOworICAgIGd0a193aWRnZXRf
c2hvd19hbGwod2lkZ2V0KTsKK30KKworI2lmIFVTRShHTk9NRUtFWVJJTkcpCitzdGF0aWMgdm9p
ZCBmaW5kX3Bhc3N3b3JkX2NhbGxiYWNrKEdub21lS2V5cmluZ1Jlc3VsdCByZXN1bHQsIEdMaXN0
KiBsaXN0LCBXZWJLaXRBdXRoRGF0YSogYXV0aERhdGEpCit7CisgICAgR0xpc3QqIHA7CisgICAg
Y29uc3QgY2hhciogbG9naW4gPSBOVUxMOworICAgIGNvbnN0IGNoYXIqIHBhc3N3b3JkID0gTlVM
TDsKKworICAgIGZvciAocCA9IGxpc3Q7IHA7IHAgPSBwLT5uZXh0KSB7CisgICAgICAgIC8qIEZJ
WE1FOiBzdXBwb3J0IG11bHRpcGxlIGxvZ2lucy9wYXNzd29yZHMgPyAqLworICAgICAgICBHbm9t
ZUtleXJpbmdOZXR3b3JrUGFzc3dvcmREYXRhKiBkYXRhID0gKEdub21lS2V5cmluZ05ldHdvcmtQ
YXNzd29yZERhdGEqKXAtPmRhdGE7CisgICAgICAgIGxvZ2luID0gZGF0YS0+dXNlcjsKKyAgICAg
ICAgcGFzc3dvcmQgPSBkYXRhLT5wYXNzd29yZDsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisg
ICAgc2hvd19hdXRoX2RpYWxvZyhhdXRoRGF0YSwgbG9naW4sIHBhc3N3b3JkKTsKK30KKyNlbmRp
ZgorCitzdGF0aWMgdm9pZCBzZXNzaW9uX2F1dGhlbnRpY2F0ZShTb3VwU2Vzc2lvbiogc2Vzc2lv
biwgU291cE1lc3NhZ2UqIG1zZywgU291cEF1dGgqIGF1dGgsIGdib29sZWFuIHJldHJ5aW5nLCBn
cG9pbnRlciB1c2VyX2RhdGEpCit7CisgICAgU291cFVSSSogdXJpOworICAgIFdlYktpdEF1dGhE
YXRhKiBhdXRoRGF0YTsKKyAgICBTb3VwU2Vzc2lvbkZlYXR1cmUqIG1hbmFnZXIgPSAoU291cFNl
c3Npb25GZWF0dXJlKil1c2VyX2RhdGE7CisKKyAgICBzb3VwX3Nlc3Npb25fcGF1c2VfbWVzc2Fn
ZShzZXNzaW9uLCBtc2cpOworICAgIC8qIFdlIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBtZXNzYWdl
IHN0aWNrcyBhcm91bmQgd2hlbiBwYXVzaW5nIGl0ICovCisgICAgZ19vYmplY3RfcmVmKG1zZyk7
CisKKyAgICB1cmkgPSBzb3VwX21lc3NhZ2VfZ2V0X3VyaShtc2cpOworICAgIGF1dGhEYXRhID0g
Z19zbGljZV9uZXcoV2ViS2l0QXV0aERhdGEpOworICAgIGF1dGhEYXRhLT5tc2cgPSBtc2c7Cisg
ICAgYXV0aERhdGEtPmF1dGggPSBhdXRoOworICAgIGF1dGhEYXRhLT5zZXNzaW9uID0gc2Vzc2lv
bjsKKyAgICBhdXRoRGF0YS0+bWFuYWdlciA9IG1hbmFnZXI7CisKKyAgICAvKgorICAgICAqIElm
IHdlIGhhdmUgZ25vbWUta2V5cmluZyBsZXQncyB0cnkgdG8gZmluZCB0aGUgcGFzc3dvcmQgZmly
c3QgaW4gdGhlIHJpbmcuCisgICAgICogT3RoZXJ3aXNlIGp1c3Qgc2hvdyB0aGUgZGlhbG9nIHN0
cmFpZ2h0IGF3YXkKKyAgICAgKi8KKyNpZiBVU0UoR05PTUVLRVlSSU5HKQorICAgIGdub21lX2tl
eXJpbmdfZmluZF9uZXR3b3JrX3Bhc3N3b3JkKE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc291cF9hdXRoX2dldF9yZWFsbShhdXRoKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmktPmhvc3QsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB1cmktPnNjaGVtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzb3VwX2F1dGhfZ2V0X3NjaGVtZV9uYW1lKGF1dGgpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVyaS0+cG9ydCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAoR25vbWVLZXlyaW5nT3BlcmF0aW9uR2V0TGlzdENhbGxi
YWNrKWZpbmRfcGFzc3dvcmRfY2FsbGJhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYXV0aERhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgTlVMTCk7CisjZWxzZQorICAgIHNob3dfYXV0aF9kaWFsb2coYXV0aERhdGEsIE5VTEws
IE5VTEwpOworI2VuZGlmCit9CisKK3N0YXRpYyB2b2lkIGF0dGFjaChTb3VwU2Vzc2lvbkZlYXR1
cmUgKm1hbmFnZXIsIFNvdXBTZXNzaW9uICpzZXNzaW9uKQoreworICAgIGdfc2lnbmFsX2Nvbm5l
Y3Qoc2Vzc2lvbiwgImF1dGhlbnRpY2F0ZSIsIEdfQ0FMTEJBQ0soc2Vzc2lvbl9hdXRoZW50aWNh
dGUpLCBtYW5hZ2VyKTsKK30KKworc3RhdGljIHZvaWQgZGV0YWNoKFNvdXBTZXNzaW9uRmVhdHVy
ZSAqbWFuYWdlciwgU291cFNlc3Npb24gKnNlc3Npb24pCit7CisgICAgZ19zaWduYWxfaGFuZGxl
cnNfZGlzY29ubmVjdF9ieV9mdW5jKHNlc3Npb24sIHNlc3Npb25fYXV0aGVudGljYXRlLCBtYW5h
Z2VyKTsKK30KKworCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC93
ZWJraXQtc291cC1hdXRoLWRpYWxvZy5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAv
d2Via2l0LXNvdXAtYXV0aC1kaWFsb2cuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi45MGI2MzY3Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvd2Via2l0LXNvdXAtYXV0aC1kaWFsb2cuaApAQCAtMCwwICsxLDQ4IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDA5IElnYWxpYSBTLkwuLCBBdXRob3I6IFhhbiBMb3BleiA8eGxvcGV6
QGlnYWxpYS5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoK
KyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisg
KiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgorICovCisKKyNpbmNsdWRlIDxndGsvZ3RrLmg+CisKKyNpZm5kZWYgV0VCS0lUX1NPVVBf
QVVUSF9ESUFMT0dfSAorI2RlZmluZSBXRUJLSVRfU09VUF9BVVRIX0RJQUxPR19IIDEKKworR19C
RUdJTl9ERUNMUworCisjZGVmaW5lIFdFQktJVF9UWVBFX1NPVVBfQVVUSF9ESUFMT0cgICAgICAg
ICAgICAod2Via2l0X3NvdXBfYXV0aF9kaWFsb2dfZ2V0X3R5cGUgKCkpCisjZGVmaW5lIFdFQktJ
VF9TT1VQX0FVVEhfRElBTE9HKG9iamVjdCkgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNF
X0NBU1QgKChvYmplY3QpLCBXRUJLSVRfVFlQRV9TT1VQX0FVVEhfRElBTE9HLCBXZWJLaXRTb3Vw
QXV0aERpYWxvZykpCisjZGVmaW5lIFdFQktJVF9TT1VQX0FVVEhfRElBTE9HX0NMQVNTKGtsYXNz
KSAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QgKChrbGFzcyksIFdFQktJVF9UWVBFX1NPVVBf
QVVUSF9ESUFMT0csIFdlYktpdFNvdXBBdXRoRGlhbG9nKSkKKyNkZWZpbmUgV0VCS0lUX0lTX1NP
VVBfQVVUSF9ESUFMT0cob2JqZWN0KSAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSAo
KG9iamVjdCksIFdFQktJVF9UWVBFX1NPVVBfQVVUSF9ESUFMT0cpKQorI2RlZmluZSBXRUJLSVRf
SVNfU09VUF9BVVRIX0RJQUxPR19DTEFTUyhrbGFzcykgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBF
ICgoa2xhc3MpLCBXRUJLSVRfVFlQRV9TT1VQX0FVVEhfRElBTE9HKSkKKyNkZWZpbmUgV0VCS0lU
X1NPVVBfQVVUSF9ESUFMT0dfR0VUX0NMQVNTKG9iaikgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NM
QVNTICgob2JqKSwgV0VCS0lUX1RZUEVfU09VUF9BVVRIX0RJQUxPRywgV2ViS2l0U291cEF1dGhE
aWFsb2cpKQorCit0eXBlZGVmIHN0cnVjdCB7CisgICAgR09iamVjdCBwYXJlbnRfaW5zdGFuY2U7
Cit9IFdlYktpdFNvdXBBdXRoRGlhbG9nOworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgR09iamVj
dENsYXNzIHBhcmVudF9jbGFzczsKKworICAgIEd0a1dpZGdldCogKCpjdXJyZW50X3RvcGxldmVs
KSAoV2ViS2l0U291cEF1dGhEaWFsb2cqIGZlYXR1cmUsIFNvdXBNZXNzYWdlKiBtZXNzYWdlKTsK
K30gV2ViS2l0U291cEF1dGhEaWFsb2dDbGFzczsKKworR1R5cGUgd2Via2l0X3NvdXBfYXV0aF9k
aWFsb2dfZ2V0X3R5cGUgKHZvaWQpOworCitHX0VORF9ERUNMUworCisjZW5kaWYgLyogV0VCS0lU
X1NPVVBfQVVUSF9ESUFMT0dfSCAqLwpkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmln
dXJlLmFjCmluZGV4IDlhY2NhNDIuLjI5YzYwNjUgMTAwNjQ0Ci0tLSBhL2NvbmZpZ3VyZS5hYwor
KysgYi9jb25maWd1cmUuYWMKQEAgLTM0OCw2ICszNDgsMTQgQEAgQUNfQVJHX0VOQUJMRShnZW9s
b2NhdGlvbiwKICAgICAgICAgICAgICAgW10sW2VuYWJsZV9nZW9sb2NhdGlvbj0ibm8iXSkKIEFD
X01TR19SRVNVTFQoWyRlbmFibGVfZ2VvbG9jYXRpb25dKQogCisjIGNoZWNrIHdoZXRoZXIgdG8g
ZW5hYmxlIGdub21la2V5cmluZyBzdXBwb3J0CitBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgdG8g
ZW5hYmxlIGdub21la2V5cmluZyBzdXBwb3J0XSkKK0FDX0FSR19FTkFCTEUoZ25vbWVrZXlyaW5n
LAorICAgICAgICAgICAgICBBQ19IRUxQX1NUUklORyhbLS1lbmFibGUtZ25vbWVrZXlyaW5nXSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2VuYWJsZSBzdXBwb3J0IGZvciBnbm9tZWtl
eXJpbmcgW2RlZmF1bHQ9bm9dXSksCisgICAgICAgICAgICAgIFtdLFtlbmFibGVfZ25vbWVrZXly
aW5nPSJubyJdKQorQUNfTVNHX1JFU1VMVChbJGVuYWJsZV9nbm9tZWtleXJpbmddKQorCiAjIGNo
ZWNrIHdoZXRoZXIgdG8gZW5hYmxlIFNWRyBzdXBwb3J0CiBBQ19NU0dfQ0hFQ0tJTkcoW3doZXRo
ZXIgdG8gZW5hYmxlIFNWRyBzdXBwb3J0XSkKIEFDX0FSR19FTkFCTEUoc3ZnLApAQCAtNTE3LDYg
KzUyNSwxMyBAQCBQS0dfQ0hFQ0tfTU9EVUxFUyhbTElCU09VUF0sCiBBQ19TVUJTVChbTElCU09V
UF9DRkxBR1NdKQogQUNfU1VCU1QoW0xJQlNPVVBfTElCU10pCiAKK2lmIHRlc3QgIiRlbmFibGVf
Z25vbWVrZXlyaW5nIiA9ICJ5ZXMiOyB0aGVuCisgICBQS0dfQ0hFQ0tfTU9EVUxFUyhbR05PTUVL
RVlSSU5HXSwKKyAgICAgICAgICAgICAgICAgICAgIFtnbm9tZS1rZXlyaW5nLTFdKQorICAgQUNf
U1VCU1QoW0dOT01FS0VZUklOR19DRkxBR1NdKQorICAgQUNfU1VCU1QoW0dOT01FS0VZUklOR19M
SUJTXSkKK2ZpCisKICMgY2hlY2sgaWYgRnJlZVR5cGUvRm9udENvbmZpZyBhcmUgYXZhaWxhYmxl
CiBpZiB0ZXN0ICIkd2l0aF9mb250X2JhY2tlbmQiID0gImZyZWV0eXBlIjsgdGhlbgogICAgaWYg
dGVzdCAiJHdpdGhfdGFyZ2V0IiA9ICJkaXJlY3RmYiI7IHRoZW4KQEAgLTU5NCw2ICs2MDksOSBA
QCBBTV9DT05ESVRJT05BTChbVEFSR0VUX1dJTjMyXSwgW3Rlc3QgIiR3aXRoX3RhcmdldCIgPSAi
d2luMzIiXSkKIEFNX0NPTkRJVElPTkFMKFtUQVJHRVRfUVVBUlRaXSwgW3Rlc3QgIiR3aXRoX3Rh
cmdldCIgPSAicXVhcnR6Il0pCiBBTV9DT05ESVRJT05BTChbVEFSR0VUX0RJUkVDVEZCXSwgW3Rl
c3QgIiR3aXRoX3RhcmdldCIgPSAiZGlyZWN0ZmIiXSkKIAorIyBBdXRoIGJhY2tlbmQgY29uZGl0
aW9uYWxzCitBTV9DT05ESVRJT05BTChbVVNFX0dOT01FS0VZUklOR10sIFt0ZXN0ICIkZW5hYmxl
X2dub21la2V5cmluZyIgPSAieWVzIl0pCisKICMgRm9udCBiYWNrZW5kIGNvbmRpdGlvbmFscwog
QU1fQ09ORElUSU9OQUwoW1VTRV9GUkVFVFlQRV0sIFt0ZXN0ICIkd2l0aF9mb250X2JhY2tlbmQi
ID0gImZyZWV0eXBlIl0pCiBBTV9DT05ESVRJT05BTChbVVNFX1BBTkdPXSwgW3Rlc3QgIiR3aXRo
X2ZvbnRfYmFja2VuZCIgPSAicGFuZ28iXSkKQEAgLTY0OSw2ICs2NjcsNyBAQCBGZWF0dXJlczoK
ICBKSVQgY29tcGlsYXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA6ICRlbmFibGVfaml0CiAgRGFzaGJvYXJkIHN1cHBvcnQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgOiAkZW5hYmxlX2Rhc2hib2FyZF9zdXBwb3J0CiAgR2VvbG9jYXRp
b24gc3VwcG9ydCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAkZW5hYmxl
X2dlb2xvY2F0aW9uCisgR05PTUUgS2V5cmluZyBzdXBwb3J0ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgOiAkZW5hYmxlX2dub21la2V5cmluZwogIEhUTUw1IG9mZmxpbmUgd2Vi
IGFwcGxpY2F0aW9ucyBzdXBwb3J0ICAgICAgICAgICAgICAgICAgIDogJGVuYWJsZV9vZmZsaW5l
X3dlYl9hcHBsaWNhdGlvbnMKICBIVE1MNSBjaGFubmVsIG1lc3NhZ2luZyBzdXBwb3J0ICAgICAg
ICAgICAgICAgICAgICAgICAgICA6ICRlbmFibGVfY2hhbm5lbF9tZXNzYWdpbmcKICBIVE1MNSBj
bGllbnQtc2lkZSBzZXNzaW9uIGFuZCBwZXJzaXN0ZW50IHN0b3JhZ2Ugc3VwcG9ydCA6ICRlbmFi
bGVfZG9tX3N0b3JhZ2UKLS0gCjEuNi4xCgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>28027</attachid>
            <date>2009-02-26 11:29:26 -0800</date>
            <delta_ts>2009-02-26 11:52:39 -0800</delta_ts>
            <desc>keyringv3.patch</desc>
            <filename>keyringv3.patch</filename>
            <type>text/plain</type>
            <size>27318</size>
            <attacher name="Xan Lopez">xan.lopez</attacher>
            
              <data encoding="base64">RnJvbSBkMTIwODFhYzMwNTQxNDQ5NGU4NGUwNDc2NzkwNGQ0ZTVhZTNlMzU4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBYYW4gTG9wZXogPHhhbkBnbm9tZS5vcmc+CkRhdGU6IFRodSwg
MjYgRmViIDIwMDkgMjE6MjA6NDQgKzAyMDAKU3ViamVjdDogW1BBVENIXSAvOgoKMjAwOS0wMi0y
NiAgWGFuIExvcGV6ICA8eGFuQGdub21lLm9yZz4KCiAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCgogICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjk0NwogICAgICAgIFtHVEtdIE1pc3NpbmcgSFRUUCBBdXRoIGNoYWxsZW5nZQoKICAgICAg
ICBBZGQgSFRUUCBhdXRoZW50aWNhdGlvbiBkaWFsb2cgd2l0aCBvcHRpb25hbCBHTk9NRSBLZXly
aW5nCiAgICAgICAgc3RvcmFnZS4KCiAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKICAgICAgICAq
IGNvbmZpZ3VyZS5hYzoKCldlYkNvcmU6CgoyMDA5LTAyLTI2ICBYYW4gTG9wZXogIDx4YW5AZ25v
bWUub3JnPgoKICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCiAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTQ3CiAgICAgICAgW0dUS10g
TWlzc2luZyBIVFRQIEF1dGggY2hhbGxlbmdlCgogICAgICAgIEFkZCBIVFRQIGF1dGhlbnRpY2F0
aW9uIGRpYWxvZyB3aXRoIG9wdGlvbmFsIEdOT01FIEtleXJpbmcKICAgICAgICBzdG9yYWdlLgoK
ICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgogICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZUhhbmRsZUludGVybmFsLmg6CiAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlSW50
ZXJuYWw6OlJlc291cmNlSGFuZGxlSW50ZXJuYWwpOgogICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHA6CiAgICAgICAgKFdlYkNvcmU6OmN1cnJlbnRU
b3BsZXZlbENhbGxiYWNrKToKICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnN0YXJ0
SHR0cCk6CiAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpzdGFydCk6CiAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvd2Via2l0LXNvdXAtYXV0aC1kaWFsb2cuYzogQWRkZWQu
CiAgICAgICAgKHdlYmtpdF9zb3VwX2F1dGhfZGlhbG9nX2NsYXNzX2luaXQpOgogICAgICAgICh3
ZWJraXRfc291cF9hdXRoX2RpYWxvZ19pbml0KToKICAgICAgICAod2Via2l0X3NvdXBfYXV0aF9k
aWFsb2dfc2Vzc2lvbl9mZWF0dXJlX2luaXQpOgogICAgICAgIChmcmVlX2F1dGhEYXRhKToKICAg
ICAgICAoc2V0X3Bhc3N3b3JkX2NhbGxiYWNrKToKICAgICAgICAocmVzcG9uc2VfY2FsbGJhY2sp
OgogICAgICAgIChzaG93X2F1dGhfZGlhbG9nKToKICAgICAgICAoZmluZF9wYXNzd29yZF9jYWxs
YmFjayk6CiAgICAgICAgKHNlc3Npb25fYXV0aGVudGljYXRlKToKICAgICAgICAoYXR0YWNoKToK
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC93ZWJraXQtc291cC1hdXRoLWRpYWxvZy5o
OiBBZGRlZC4KLS0tCiBDaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8ICAgMTMgKwogR05VbWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfCAgICA0ICstCiBXZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8ICAgMzIgKysKIFdlYkNvcmUvR05VbWFrZWZpbGUuYW0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHwgICAgOSArLQogV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaCAgfCAgICAzICsKIC4uLi9wbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcCAgIHwgICA0MCArKystCiAuLi4vbmV0d29yay9z
b3VwL3dlYmtpdC1zb3VwLWF1dGgtZGlhbG9nLmMgICAgICAgICB8ICAzNDQgKysrKysrKysrKysr
KysrKysrKysKIC4uLi9uZXR3b3JrL3NvdXAvd2Via2l0LXNvdXAtYXV0aC1kaWFsb2cuaCAgICAg
ICAgIHwgICA0OCArKysKIGNvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwgICAxOSArCiA5IGZpbGVzIGNoYW5nZWQsIDUwOSBpbnNlcnRpb25zKCspLCAz
IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL3dlYmtpdC1zb3VwLWF1dGgtZGlhbG9nLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBXZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC93ZWJraXQtc291cC1hdXRoLWRpYWxvZy5oCgpkaWZm
IC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IDVhMTc5MGQuLmRkMmRiNzkgMTAw
NjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTUsNiArNSwxOSBAQAogICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5NDcKICAgICAg
ICAgW0dUS10gTWlzc2luZyBIVFRQIEF1dGggY2hhbGxlbmdlCiAKKyAgICAgICAgQWRkIEhUVFAg
YXV0aGVudGljYXRpb24gZGlhbG9nIHdpdGggb3B0aW9uYWwgR05PTUUgS2V5cmluZworICAgICAg
ICBzdG9yYWdlLgorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogY29uZmln
dXJlLmFjOgorCisyMDA5LTAyLTI2ICBYYW4gTG9wZXogIDx4YW5AZ25vbWUub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk0NworICAgICAgICBbR1RLXSBNaXNzaW5nIEhU
VFAgQXV0aCBjaGFsbGVuZ2UKKwogICAgICAgICBUYWtlIG1hcnNoYWxsZXJzIHRvIGJlIGJ1aWx0
IGZyb20gYSBtYW51YWxseSBtYWludGFpbmVkIGxpc3QKICAgICAgICAgaW5zdGVhZCBvZiBncmVw
cGluZyB0aGUgc291cmNlcy4KIApkaWZmIC0tZ2l0IGEvR05VbWFrZWZpbGUuYW0gYi9HTlVtYWtl
ZmlsZS5hbQppbmRleCBlZmVkMmFhLi5kOTI1YzgyIDEwMDY0NAotLS0gYS9HTlVtYWtlZmlsZS5h
bQorKysgYi9HTlVtYWtlZmlsZS5hbQpAQCAtMTgxLDcgKzE4MSw4IEBAIGxpYldlYkNvcmVfbGFf
Q0ZMQUdTID0gXAogCSQoTElCWFNMVF9DRkxBR1MpIFwKIAkkKENPVkVSQUdFX0NGTEFHUykgXAog
CSQoSElMRE9OX0NGTEFHUykgXAotCSQoR0VPQ0xVRV9DRkxBR1MpCisJJChHRU9DTFVFX0NGTEFH
UykgXAorCSQoR05PTUVLRVlSSU5HX0NGTEFHUykKIAogbGliV2ViQ29yZV9sYV9DUFBGTEFHUyA9
IFwKIAkkKGdsb2JhbF9jcHBmbGFncykgXApAQCAtMjEwLDYgKzIxMSw3IEBAIGxpYldlYkNvcmVf
bGFfTElCQUREID0gXAogCSQoSlBFR19MSUJTKSBcCiAJJChQTkdfTElCUykgXAogCSQoR0VPQ0xV
RV9MSUJTKSBcCisJJChHTk9NRUtFWVJJTkdfTElCUykgXAogCS1scHRocmVhZAogCiAjIFdlYktp
dApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCA2ZjM4YzdlLi43Y2ViNjMxIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDA5LTAyLTI2ICBYYW4gTG9wZXog
IDx4YW5AZ25vbWUub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFdBUk5JTkc6IE5PIFRFU1QgQ0FTRVMgQURERUQgT1IgQ0hBTkdFRAorCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk0NworICAgICAg
ICBbR1RLXSBNaXNzaW5nIEhUVFAgQXV0aCBjaGFsbGVuZ2UKKworICAgICAgICBBZGQgSFRUUCBh
dXRoZW50aWNhdGlvbiBkaWFsb2cgd2l0aCBvcHRpb25hbCBHTk9NRSBLZXlyaW5nCisgICAgICAg
IHN0b3JhZ2UuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
c291cmNlSGFuZGxlSW50ZXJuYWw6OlJlc291cmNlSGFuZGxlSW50ZXJuYWwpOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Y3VycmVudFRvcGxldmVsQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VIYW5kbGU6OnN0YXJ0SHR0cCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRs
ZTo6c3RhcnQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC93ZWJraXQtc291cC1h
dXRoLWRpYWxvZy5jOiBBZGRlZC4KKyAgICAgICAgKHdlYmtpdF9zb3VwX2F1dGhfZGlhbG9nX2Ns
YXNzX2luaXQpOgorICAgICAgICAod2Via2l0X3NvdXBfYXV0aF9kaWFsb2dfaW5pdCk6CisgICAg
ICAgICh3ZWJraXRfc291cF9hdXRoX2RpYWxvZ19zZXNzaW9uX2ZlYXR1cmVfaW5pdCk6CisgICAg
ICAgIChmcmVlX2F1dGhEYXRhKToKKyAgICAgICAgKHNldF9wYXNzd29yZF9jYWxsYmFjayk6Cisg
ICAgICAgIChyZXNwb25zZV9jYWxsYmFjayk6CisgICAgICAgIChzaG93X2F1dGhfZGlhbG9nKToK
KyAgICAgICAgKGZpbmRfcGFzc3dvcmRfY2FsbGJhY2spOgorICAgICAgICAoc2Vzc2lvbl9hdXRo
ZW50aWNhdGUpOgorICAgICAgICAoYXR0YWNoKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvd2Via2l0LXNvdXAtYXV0aC1kaWFsb2cuaDogQWRkZWQuCisKIDIwMDktMDItMjYgIFNp
bW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgQnVpbGQgZml4
LCBubyByZXZpZXcuCmRpZmYgLS1naXQgYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5hbQppbmRleCBhZWNmMTBjLi45ZjgzNDhhIDEwMDY0NAotLS0gYS9XZWJD
b3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTE4MTcs
NyArMTgxNywxNCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9zb3VwL1Jlc291cmNlRXJyb3IuaCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3Nv
dXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3Nv
dXAvUmVzb3VyY2VSZXF1ZXN0LmggXAotCVdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jl
c291cmNlUmVzcG9uc2UuaAorCVdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNl
UmVzcG9uc2UuaCBcCisJV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvd2Via2l0LXNvdXAt
YXV0aC1kaWFsb2cuYyBcCisJV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvd2Via2l0LXNv
dXAtYXV0aC1kaWFsb2cuaAorCitpZiBVU0VfR05PTUVLRVlSSU5HCit3ZWJjb3JlX2NwcGZsYWdz
ICs9IFwKKwktRFdURl9VU0VfR05PTUVLRVlSSU5HPTEKK2VuZGlmCiAKICMgLS0tCiAjIEZyZWV0
eXBlIGZvbnQgYmFja2VuZApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlSGFuZGxlSW50ZXJuYWwuaCBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZUhhbmRsZUludGVybmFsLmgKaW5kZXggNjZhYTRjMS4uNGU0NDE3YyAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaAorKysgYi9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oCkBAIC00Nyw2ICs0
Nyw3IEBACiAKICNpZiBVU0UoU09VUCkKICNpbmNsdWRlIDxsaWJzb3VwL3NvdXAuaD4KK2NsYXNz
IEZyYW1lOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShRVCkKQEAgLTExNyw2ICsxMTgsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICAsIG1fYnVmc2l6ZSgwKQogICAgICAgICAg
ICAgLCBtX3RvdGFsKDApCiAgICAgICAgICAgICAsIG1faWRsZUhhbmRsZXIoMCkKKyAgICAgICAg
ICAgICwgbV9mcmFtZSgwKQogI2VuZGlmCiAjaWYgUExBVEZPUk0oUVQpCiAgICAgICAgICAgICAs
IG1fam9iKDApCkBAIC0xODcsNiArMTg5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICBjaGFyKiBtX2J1ZmZlcjsKICAgICAgICAgZ3NpemUgbV9idWZzaXplLCBtX3RvdGFsOwogICAg
ICAgICBndWludCBtX2lkbGVIYW5kbGVyOworICAgICAgICBGcmFtZSogbV9mcmFtZTsKICNlbmRp
ZgogI2lmIFBMQVRGT1JNKFFUKQogI2lmIFFUX1ZFUlNJT04gPCAweDA0MDQwMApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcCBi
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAKaW5k
ZXggZDE0ODcyOS4uYzE2ZDcyOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwCkBAIC0yOCwyMSArMjgsMjUgQEAKIAogI2lu
Y2x1ZGUgIkJhc2U2NC5oIgogI2luY2x1ZGUgIkNvb2tpZUphclNvdXAuaCIKKyNpbmNsdWRlICJD
aHJvbWVDbGllbnQuaCIKICNpbmNsdWRlICJDU3RyaW5nLmgiCiAjaW5jbHVkZSAiRG9jTG9hZGVy
LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJIVFRQUGFyc2Vycy5oIgogI2luY2x1
ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2lu
Y2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJSZXNvdXJjZUVycm9yLmgiCiAjaW5jbHVkZSAiUmVz
b3VyY2VIYW5kbGVDbGllbnQuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZUludGVybmFsLmgi
CiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUgIlRleHRFbmNvZGluZy5o
IgorI2luY2x1ZGUgIndlYmtpdC1zb3VwLWF1dGgtZGlhbG9nLmgiCiAKICNpbmNsdWRlIDxlcnJu
by5oPgogI2luY2x1ZGUgPGZjbnRsLmg+CiAjaW5jbHVkZSA8Z2lvL2dpby5oPgorI2luY2x1ZGUg
PGd0ay9ndGsuaD4KICNpbmNsdWRlIDxsaWJzb3VwL3NvdXAuaD4KICNpbmNsdWRlIDxsaWJzb3Vw
L3NvdXAtbWVzc2FnZS5oPgogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgpAQCAtMzcwLDYgKzM3NCwz
MSBAQCBzdGF0aWMgU291cFNlc3Npb24qIGNyZWF0ZVNvdXBTZXNzaW9uKCkKICAgICByZXR1cm4g
c291cF9zZXNzaW9uX2FzeW5jX25ldygpOwogfQogCitzdGF0aWMgR3RrV2lkZ2V0KiBjdXJyZW50
VG9wbGV2ZWxDYWxsYmFjayhXZWJLaXRTb3VwQXV0aERpYWxvZyogZmVhdHVyZSwgU291cE1lc3Nh
Z2UqIG1lc3NhZ2UsIGdwb2ludGVyIHVzZXJEYXRhKQoreworICAgIGdwb2ludGVyIG1lc3NhZ2VE
YXRhID0gZ19vYmplY3RfZ2V0X2RhdGEoR19PQkpFQ1QobWVzc2FnZSksICJyZXNvdXJjZUhhbmRs
ZSIpOworICAgIGlmICghbWVzc2FnZURhdGEpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAg
UmVzb3VyY2VIYW5kbGUqIGhhbmRsZSA9IHN0YXRpY19jYXN0PFJlc291cmNlSGFuZGxlKj4obWVz
c2FnZURhdGEpOworICAgIGlmICghaGFuZGxlKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAg
IFJlc291cmNlSGFuZGxlSW50ZXJuYWwqIGQgPSBoYW5kbGUtPmdldEludGVybmFsKCk7CisgICAg
aWYgKCFkKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIEZyYW1lKiBmcmFtZSA9IGQtPm1f
ZnJhbWU7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBHdGtX
aWRnZXQqIHRvcGxldmVsID0gIGd0a193aWRnZXRfZ2V0X3RvcGxldmVsKEdUS19XSURHRVQoZnJh
bWUtPnBhZ2UoKS0+Y2hyb21lKCktPnBsYXRmb3JtV2luZG93KCkpKTsKKyAgICBpZiAoR1RLX1dJ
REdFVF9UT1BMRVZFTCh0b3BsZXZlbCkpCisgICAgICAgIHJldHVybiB0b3BsZXZlbDsKKyAgICBl
bHNlCisgICAgICAgIHJldHVybiBOVUxMOworfQorCiBzdGF0aWMgdm9pZCBlbnN1cmVTZXNzaW9u
SXNJbml0aWFsaXplZChTb3VwU2Vzc2lvbiogc2Vzc2lvbikKIHsKICAgICBpZiAoZ19vYmplY3Rf
Z2V0X2RhdGEoR19PQkpFQ1Qoc2Vzc2lvbiksICJ3ZWJraXQtaW5pdCIpKQpAQCAtMzgxLDYgKzQx
MCwxMSBAQCBzdGF0aWMgdm9pZCBlbnN1cmVTZXNzaW9uSXNJbml0aWFsaXplZChTb3VwU2Vzc2lv
biogc2Vzc2lvbikKICAgICBlbHNlCiAgICAgICAgIHNldERlZmF1bHRDb29raWVKYXIoamFyKTsK
IAorICAgIFNvdXBTZXNzaW9uRmVhdHVyZSogYXV0aERpYWxvZyA9IHN0YXRpY19jYXN0PFNvdXBT
ZXNzaW9uRmVhdHVyZSo+KGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9TT1VQX0FVVEhfRElBTE9H
LCBOVUxMKSk7CisgICAgZ19zaWduYWxfY29ubmVjdChhdXRoRGlhbG9nLCAiY3VycmVudC10b3Bs
ZXZlbCIsIEdfQ0FMTEJBQ0soY3VycmVudFRvcGxldmVsQ2FsbGJhY2spLCBOVUxMKTsKKyAgICBz
b3VwX3Nlc3Npb25fYWRkX2ZlYXR1cmUoc2Vzc2lvbiwgYXV0aERpYWxvZyk7CisgICAgZ19vYmpl
Y3RfdW5yZWYoYXV0aERpYWxvZyk7CisKICAgICBjb25zdCBjaGFyKiB3ZWJraXRfZGVidWcgPSBn
X2dldGVudigiV0VCS0lUX0RFQlVHIik7IAogICAgIGlmICghc291cF9zZXNzaW9uX2dldF9mZWF0
dXJlKHNlc3Npb24sIFNPVVBfVFlQRV9MT0dHRVIpCiAgICAgICAgICYmIHdlYmtpdF9kZWJ1ZyAm
JiAhc3RyY21wKHdlYmtpdF9kZWJ1ZywgIm5ldHdvcmsiKSkgewpAQCAtNDAwLDEwICs0MzQsMTEg
QEAgYm9vbCBSZXNvdXJjZUhhbmRsZTo6c3RhcnRIdHRwKFN0cmluZyB1cmxTdHJpbmcpCiAgICAg
U291cE1lc3NhZ2UqIG1zZzsKICAgICBtc2cgPSBzb3VwX21lc3NhZ2VfbmV3KHJlcXVlc3QoKS5o
dHRwTWV0aG9kKCkudXRmOCgpLmRhdGEoKSwgdXJsU3RyaW5nLnV0ZjgoKS5kYXRhKCkpOwogICAg
IGdfc2lnbmFsX2Nvbm5lY3QobXNnLCAicmVzdGFydGVkIiwgR19DQUxMQkFDSyhyZXN0YXJ0ZWRD
YWxsYmFjayksIHRoaXMpOwotCiAgICAgZ19zaWduYWxfY29ubmVjdChtc2csICJnb3QtaGVhZGVy
cyIsIEdfQ0FMTEJBQ0soZ290SGVhZGVyc0NhbGxiYWNrKSwgdGhpcyk7CiAgICAgZ19zaWduYWxf
Y29ubmVjdChtc2csICJnb3QtY2h1bmsiLCBHX0NBTExCQUNLKGdvdENodW5rQ2FsbGJhY2spLCB0
aGlzKTsKIAorICAgIGdfb2JqZWN0X3NldF9kYXRhKEdfT0JKRUNUKG1zZyksICJyZXNvdXJjZUhh
bmRsZSIsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHRoaXMpKTsKKwogICAgIEhUVFBIZWFkZXJN
YXAgY3VzdG9tSGVhZGVycyA9IGQtPm1fcmVxdWVzdC5odHRwSGVhZGVyRmllbGRzKCk7CiAgICAg
aWYgKCFjdXN0b21IZWFkZXJzLmlzRW1wdHkoKSkgewogICAgICAgICBIVFRQSGVhZGVyTWFwOjpj
b25zdF9pdGVyYXRvciBlbmQgPSBjdXN0b21IZWFkZXJzLmVuZCgpOwpAQCAtNTE4LDYgKzU1Myw5
IEBAIGJvb2wgUmVzb3VyY2VIYW5kbGU6OnN0YXJ0KEZyYW1lKiBmcmFtZSkKICAgICBTdHJpbmcg
dXJsU3RyaW5nID0gdXJsLnN0cmluZygpOwogICAgIFN0cmluZyBwcm90b2NvbCA9IHVybC5wcm90
b2NvbCgpOwogCisgICAgLy8gVXNlZCB0byBzZXQgdGhlIGF1dGhlbnRpY2F0aW9uIGRpYWxvZyB0
b3BsZXZlbDsgbWF5IGJlIE5VTEwKKyAgICBkLT5tX2ZyYW1lID0gZnJhbWU7CisKICAgICBpZiAo
ZXF1YWxJZ25vcmluZ0Nhc2UocHJvdG9jb2wsICJkYXRhIikpCiAgICAgICAgIHJldHVybiBzdGFy
dERhdGEodXJsU3RyaW5nKTsKICAgICBlbHNlIGlmICgoZXF1YWxJZ25vcmluZ0Nhc2UocHJvdG9j
b2wsICJodHRwIikgfHwgZXF1YWxJZ25vcmluZ0Nhc2UocHJvdG9jb2wsICJodHRwcyIpKSAmJiBT
T1VQX1VSSV9WQUxJRF9GT1JfSFRUUChzb3VwX3VyaV9uZXcodXJsU3RyaW5nLnV0ZjgoKS5kYXRh
KCkpKSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL3dlYmtpdC1z
b3VwLWF1dGgtZGlhbG9nLmMgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC93ZWJraXQt
c291cC1hdXRoLWRpYWxvZy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVm
ZDYyMmEKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC93
ZWJraXQtc291cC1hdXRoLWRpYWxvZy5jCkBAIC0wLDAgKzEsMzQ0IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDA5IElnYWxpYSBTLkwuLCBBdXRob3I6IFhhbiBMb3BleiA8eGxvcGV6QGlnYWxp
YS5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3
cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgPGd0ay9ndGsuaD4KKyNpbmNs
dWRlIDxsaWJzb3VwL3NvdXAuaD4KKyNpZiBVU0UoR05PTUVLRVlSSU5HKQorI2luY2x1ZGUgPGdu
b21lLWtleXJpbmcuaD4KKyNlbmRpZgorCisjaW5jbHVkZSAid2Via2l0bWFyc2hhbC5oIgorI2lu
Y2x1ZGUgIndlYmtpdC1zb3VwLWF1dGgtZGlhbG9nLmgiCisKK3N0YXRpYyB2b2lkIHdlYmtpdF9z
b3VwX2F1dGhfZGlhbG9nX3Nlc3Npb25fZmVhdHVyZV9pbml0KFNvdXBTZXNzaW9uRmVhdHVyZUlu
dGVyZmFjZSogZmVhdHVyZV9pbnRlcmZhY2UsIGdwb2ludGVyIGludGVyZmFjZV9kYXRhKTsKK3N0
YXRpYyB2b2lkIGF0dGFjaChTb3VwU2Vzc2lvbkZlYXR1cmUqIG1hbmFnZXIsIFNvdXBTZXNzaW9u
KiBzZXNzaW9uKTsKK3N0YXRpYyB2b2lkIGRldGFjaChTb3VwU2Vzc2lvbkZlYXR1cmUqIG1hbmFn
ZXIsIFNvdXBTZXNzaW9uKiBzZXNzaW9uKTsKKworZW51bSB7CisgICAgQ1VSUkVOVF9UT1BMRVZF
TCwKKyAgICBMQVNUX1NJR05BTAorfTsKKworc3RhdGljIGd1aW50IHNpZ25hbHNbTEFTVF9TSUdO
QUxdID0geyAwIH07CisKK0dfREVGSU5FX1RZUEVfV0lUSF9DT0RFKFdlYktpdFNvdXBBdXRoRGlh
bG9nLCB3ZWJraXRfc291cF9hdXRoX2RpYWxvZywgR19UWVBFX09CSkVDVCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIEdfSU1QTEVNRU5UX0lOVEVSRkFDRShTT1VQX1RZUEVfU0VTU0lPTl9GRUFU
VVJFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdlYmtp
dF9zb3VwX2F1dGhfZGlhbG9nX3Nlc3Npb25fZmVhdHVyZV9pbml0KSkKKworc3RhdGljIHZvaWQg
d2Via2l0X3NvdXBfYXV0aF9kaWFsb2dfY2xhc3NfaW5pdChXZWJLaXRTb3VwQXV0aERpYWxvZ0Ns
YXNzKiBrbGFzcykKK3sKKyAgICBHT2JqZWN0Q2xhc3MqIG9iamVjdF9jbGFzcyA9IEdfT0JKRUNU
X0NMQVNTKGtsYXNzKTsKKworICAgIHNpZ25hbHNbQ1VSUkVOVF9UT1BMRVZFTF0gPQorICAgICAg
Z19zaWduYWxfbmV3KCJjdXJyZW50LXRvcGxldmVsIiwKKyAgICAgICAgICAgICAgICAgICBHX09C
SkVDVF9DTEFTU19UWVBFKG9iamVjdF9jbGFzcyksCisgICAgICAgICAgICAgICAgICAgR19TSUdO
QUxfUlVOX0xBU1QsCisgICAgICAgICAgICAgICAgICAgR19TVFJVQ1RfT0ZGU0VUKFdlYktpdFNv
dXBBdXRoRGlhbG9nQ2xhc3MsIGN1cnJlbnRfdG9wbGV2ZWwpLAorICAgICAgICAgICAgICAgICAg
IE5VTEwsIE5VTEwsCisgICAgICAgICAgICAgICAgICAgd2Via2l0X21hcnNoYWxfT0JKRUNUX19P
QkpFQ1QsCisgICAgICAgICAgICAgICAgICAgR1RLX1RZUEVfV0lER0VULCAxLAorICAgICAgICAg
ICAgICAgICAgIFNPVVBfVFlQRV9NRVNTQUdFKTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0X3Nv
dXBfYXV0aF9kaWFsb2dfaW5pdChXZWJLaXRTb3VwQXV0aERpYWxvZyogaW5zdGFuY2UpCit7Cit9
CisKK3N0YXRpYyB2b2lkIHdlYmtpdF9zb3VwX2F1dGhfZGlhbG9nX3Nlc3Npb25fZmVhdHVyZV9p
bml0KFNvdXBTZXNzaW9uRmVhdHVyZUludGVyZmFjZSAqZmVhdHVyZV9pbnRlcmZhY2UsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncG9p
bnRlciBpbnRlcmZhY2VfZGF0YSkKK3sKKyAgICBmZWF0dXJlX2ludGVyZmFjZS0+YXR0YWNoID0g
YXR0YWNoOworICAgIGZlYXR1cmVfaW50ZXJmYWNlLT5kZXRhY2ggPSBkZXRhY2g7Cit9CisKK3R5
cGVkZWYgc3RydWN0IF9XZWJLaXRBdXRoRGF0YSB7CisgICAgU291cE1lc3NhZ2UqIG1zZzsKKyAg
ICBTb3VwQXV0aCogYXV0aDsKKyAgICBTb3VwU2Vzc2lvbiogc2Vzc2lvbjsKKyAgICBTb3VwU2Vz
c2lvbkZlYXR1cmUqIG1hbmFnZXI7CisgICAgR3RrV2lkZ2V0KiBsb2dpbkVudHJ5OworICAgIEd0
a1dpZGdldCogcGFzc3dvcmRFbnRyeTsKKyNpZiBVU0UoR05PTUVLRVlSSU5HKQorICAgIEd0a1dp
ZGdldCogY2hlY2tCdXR0b247CisjZW5kaWYKK30gV2ViS2l0QXV0aERhdGE7CisKK3N0YXRpYyB2
b2lkIGZyZWVfYXV0aERhdGEoV2ViS2l0QXV0aERhdGEqIGF1dGhEYXRhKQoreworICAgIGdfb2Jq
ZWN0X3VucmVmKGF1dGhEYXRhLT5tc2cpOworICAgIGdfc2xpY2VfZnJlZShXZWJLaXRBdXRoRGF0
YSwgYXV0aERhdGEpOworfQorCisjaWYgVVNFKEdOT01FS0VZUklORykKK3N0YXRpYyB2b2lkIHNl
dF9wYXNzd29yZF9jYWxsYmFjayhHbm9tZUtleXJpbmdSZXN1bHQgcmVzdWx0LCBndWludDMyIHZh
bCwgZ3BvaW50ZXIgdXNlcl9kYXRhKQoreworICAgIC8qIER1bW15IGNhbGxiYWNrLCBnbm9tZV9r
ZXlyaW5nX3NldF9uZXR3b3JrX3Bhc3N3b3JkIGRvZXMgbm90IGFjY2VwdCBhIE5VTEwgb25lICov
Cit9CisjZW5kaWYKKworc3RhdGljIHZvaWQgcmVzcG9uc2VfY2FsbGJhY2soR3RrRGlhbG9nKiBk
aWFsb2csIGdpbnQgcmVzcG9uc2VfaWQsIFdlYktpdEF1dGhEYXRhKiBhdXRoRGF0YSkKK3sKKyAg
ICBjb25zdCBjaGFyKiBsb2dpbjsKKyAgICBjb25zdCBjaGFyKiBwYXNzd29yZDsKKyNpZiBVU0Uo
R05PTUVLRVlSSU5HKQorICAgIFNvdXBVUkkqIHVyaTsKKyAgICBnYm9vbGVhbiBzdG9yZVBhc3N3
b3JkOworI2VuZGlmCisKKyAgICBzd2l0Y2gocmVzcG9uc2VfaWQpIHsKKyAgICBjYXNlIEdUS19S
RVNQT05TRV9PSzoKKyAgICAgICAgbG9naW4gPSBndGtfZW50cnlfZ2V0X3RleHQoR1RLX0VOVFJZ
KGF1dGhEYXRhLT5sb2dpbkVudHJ5KSk7CisgICAgICAgIHBhc3N3b3JkID0gZ3RrX2VudHJ5X2dl
dF90ZXh0KEdUS19FTlRSWShhdXRoRGF0YS0+cGFzc3dvcmRFbnRyeSkpOworICAgICAgICBzb3Vw
X2F1dGhfYXV0aGVudGljYXRlKGF1dGhEYXRhLT5hdXRoLCBsb2dpbiwgcGFzc3dvcmQpOworCisj
aWYgVVNFKEdOT01FS0VZUklORykKKyAgICAgICAgc3RvcmVQYXNzd29yZCA9IGd0a190b2dnbGVf
YnV0dG9uX2dldF9hY3RpdmUoR1RLX1RPR0dMRV9CVVRUT04oYXV0aERhdGEtPmNoZWNrQnV0dG9u
KSk7CisgICAgICAgIGlmIChzdG9yZVBhc3N3b3JkKSB7CisgICAgICAgICAgICB1cmkgPSBzb3Vw
X21lc3NhZ2VfZ2V0X3VyaShhdXRoRGF0YS0+bXNnKTsKKyAgICAgICAgICAgIGdub21lX2tleXJp
bmdfc2V0X25ldHdvcmtfcGFzc3dvcmQoTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbG9naW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNvdXBfYXV0aF9nZXRfcmVhbG0oYXV0aERhdGEtPmF1dGgpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmktPmhvc3Qs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVyaS0+c2NoZW1l
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VwX2F1
dGhfZ2V0X3NjaGVtZV9uYW1lKGF1dGhEYXRhLT5hdXRoKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJpLT5wb3J0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzd29yZCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEdub21lS2V5cmluZ09wZXJhdGlvbkdldElu
dENhbGxiYWNrKXNldF9wYXNzd29yZF9jYWxsYmFjaywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CisgICAgICAgIH0KKyNlbmRpZgorICAgIGRlZmF1
bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHNvdXBfc2Vzc2lvbl91bnBhdXNlX21l
c3NhZ2UoYXV0aERhdGEtPnNlc3Npb24sIGF1dGhEYXRhLT5tc2cpOworICAgIGZyZWVfYXV0aERh
dGEoYXV0aERhdGEpOworICAgIGd0a193aWRnZXRfZGVzdHJveShHVEtfV0lER0VUKGRpYWxvZykp
OworfQorCitzdGF0aWMgR3RrV2lkZ2V0ICoKK3RhYmxlX2FkZF9lbnRyeSAoR3RrV2lkZ2V0KiAg
dGFibGUsCisgICAgICAgICAgICAgICAgIGludCAgICAgICAgIHJvdywKKyAgICAgICAgICAgICAg
ICAgY29uc3QgY2hhciogbGFiZWxfdGV4dCwKKyAgICAgICAgICAgICAgICAgY29uc3QgY2hhciog
dmFsdWUsCisgICAgICAgICAgICAgICAgIGdwb2ludGVyICAgIHVzZXJfZGF0YSkKK3sKKyAgICBH
dGtXaWRnZXQqIGVudHJ5OworICAgIEd0a1dpZGdldCogbGFiZWw7CisKKyAgICBsYWJlbCA9IGd0
a19sYWJlbF9uZXcobGFiZWxfdGV4dCk7CisgICAgZ3RrX21pc2Nfc2V0X2FsaWdubWVudChHVEtf
TUlTQyhsYWJlbCksIDAuMCwgMC41KTsKKworICAgIGVudHJ5ID0gZ3RrX2VudHJ5X25ldygpOwor
ICAgIGd0a19lbnRyeV9zZXRfYWN0aXZhdGVzX2RlZmF1bHQoR1RLX0VOVFJZKGVudHJ5KSwgVFJV
RSk7CisKKyAgICBpZiAodmFsdWUpCisgICAgICAgIGd0a19lbnRyeV9zZXRfdGV4dChHVEtfRU5U
UlkoZW50cnkpLCB2YWx1ZSk7CisKKyAgICBndGtfdGFibGVfYXR0YWNoKEdUS19UQUJMRSh0YWJs
ZSksIGxhYmVsLAorICAgICAgICAgICAgICAgICAgICAgMCwgMSwgcm93LCByb3cgKyAxLAorICAg
ICAgICAgICAgICAgICAgICAgR1RLX0ZJTEwsIEdUS19FWFBBTkQgfCBHVEtfRklMTCwgMCwgMCk7
CisgICAgZ3RrX3RhYmxlX2F0dGFjaF9kZWZhdWx0cyhHVEtfVEFCTEUodGFibGUpLCBlbnRyeSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEsIDIsIHJvdywgcm93ICsgMSk7CisKKyAg
ICByZXR1cm4gZW50cnk7Cit9CisKK3N0YXRpYyB2b2lkIHNob3dfYXV0aF9kaWFsb2coV2ViS2l0
QXV0aERhdGEqIGF1dGhEYXRhLCBjb25zdCBjaGFyKiBsb2dpbiwgY29uc3QgY2hhciogcGFzc3dv
cmQpCit7CisgICAgR3RrV2lkZ2V0KiB0b3BsZXZlbDsKKyAgICBHdGtXaWRnZXQgKndpZGdldDsK
KyAgICBHdGtEaWFsb2cgKmRpYWxvZzsKKyAgICBHdGtXaW5kb3cgKndpbmRvdzsKKyAgICBHdGtX
aWRnZXQgKmVudHJ5Q29udGFpbmVyOworICAgIEd0a1dpZGdldCAqaGJveCwgKm1haW5WQm94LCAq
dmJveCwgKmljb247CisgICAgR3RrV2lkZ2V0ICp0YWJsZTsKKyAgICBHdGtXaWRnZXQgKm1lc3Nh
Z2VMYWJlbDsKKyAgICBjaGFyKiBtZXNzYWdlOworICAgIFNvdXBVUkkqIHVyaTsKKyNpZiBVU0Uo
R05PTUVLRVlSSU5HKQorICAgIEd0a1dpZGdldCogcmVtZW1iZXJCb3g7CisgICAgR3RrV2lkZ2V0
KiBjaGVja0J1dHRvbjsKKyNlbmRpZgorCisgICAgLyogRnJvbSBHVEsrIGd0a21vdW50b3BlcmF0
aW9uLmMsIG1vZGlmaWVkIGFuZCBzaW1wbGlmaWVkLiBMR1BMIDIgbGljZW5zZSAqLworCisgICAg
d2lkZ2V0ID0gZ3RrX2RpYWxvZ19uZXcoKTsKKyAgICB3aW5kb3cgPSBHVEtfV0lORE9XKHdpZGdl
dCk7CisgICAgZGlhbG9nID0gR1RLX0RJQUxPRyh3aWRnZXQpOworCisgICAgZ3RrX2RpYWxvZ19h
ZGRfYnV0dG9ucyhkaWFsb2csCisgICAgICAgICAgICAgICAgICAgICAgICAgICBHVEtfU1RPQ0tf
Q0FOQ0VMLCBHVEtfUkVTUE9OU0VfQ0FOQ0VMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
R1RLX1NUT0NLX09LLCBHVEtfUkVTUE9OU0VfT0ssCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICBOVUxMKTsKKworICAgIC8qIFNldCB0aGUgZGlhbG9nIHVwIHdpdGggSElHIHByb3BlcnRpZXMg
Ki8KKyAgICBndGtfZGlhbG9nX3NldF9oYXNfc2VwYXJhdG9yKGRpYWxvZywgRkFMU0UpOworICAg
IGd0a19jb250YWluZXJfc2V0X2JvcmRlcl93aWR0aChHVEtfQ09OVEFJTkVSIChkaWFsb2cpLCA1
KTsKKyAgICBndGtfYm94X3NldF9zcGFjaW5nKEdUS19CT1goZGlhbG9nLT52Ym94KSwgMik7IC8q
IDIgKiA1ICsgMiA9IDEyICovCisgICAgZ3RrX2NvbnRhaW5lcl9zZXRfYm9yZGVyX3dpZHRoKEdU
S19DT05UQUlORVIgKGRpYWxvZy0+YWN0aW9uX2FyZWEpLCA1KTsKKyAgICBndGtfYm94X3NldF9z
cGFjaW5nKEdUS19CT1goZGlhbG9nLT5hY3Rpb25fYXJlYSksIDYpOworCisgICAgZ3RrX3dpbmRv
d19zZXRfcmVzaXphYmxlKHdpbmRvdywgRkFMU0UpOworICAgIGd0a193aW5kb3dfc2V0X3RpdGxl
KHdpbmRvdywgIiIpOworICAgIGd0a193aW5kb3dfc2V0X2ljb25fbmFtZSh3aW5kb3csIEdUS19T
VE9DS19ESUFMT0dfQVVUSEVOVElDQVRJT04pOworCisgICAgZ3RrX2RpYWxvZ19zZXRfZGVmYXVs
dF9yZXNwb25zZShkaWFsb2csIEdUS19SRVNQT05TRV9PSyk7CisKKyAgICAvKiBHZXQgdGhlIGN1
cnJlbnQgdG9wbGV2ZWwgKi8KKyAgICBnX3NpZ25hbF9lbWl0KGF1dGhEYXRhLT5tYW5hZ2VyLCBz
aWduYWxzW0NVUlJFTlRfVE9QTEVWRUxdLCAwLCBhdXRoRGF0YS0+bXNnLCAmdG9wbGV2ZWwpOwor
CisgICAgaWYgKHRvcGxldmVsKQorICAgICAgICBndGtfd2luZG93X3NldF90cmFuc2llbnRfZm9y
KHdpbmRvdywgdG9wbGV2ZWwpOworCisgICAgLyogQnVpbGQgY29udGVudHMgKi8KKyAgICBoYm94
ID0gZ3RrX2hib3hfbmV3KEZBTFNFLCAxMik7CisgICAgZ3RrX2NvbnRhaW5lcl9zZXRfYm9yZGVy
X3dpZHRoKEdUS19DT05UQUlORVIoaGJveCksIDUpOworICAgIGd0a19ib3hfcGFja19zdGFydChH
VEtfQk9YKGRpYWxvZy0+dmJveCksIGhib3gsIFRSVUUsIFRSVUUsIDApOworCisgICAgaWNvbiA9
IGd0a19pbWFnZV9uZXdfZnJvbV9zdG9jayhHVEtfU1RPQ0tfRElBTE9HX0FVVEhFTlRJQ0FUSU9O
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1RLX0lDT05fU0laRV9ESUFM
T0cpOworCisgICAgZ3RrX21pc2Nfc2V0X2FsaWdubWVudChHVEtfTUlTQyhpY29uKSwgMC41LCAw
LjApOworICAgIGd0a19ib3hfcGFja19zdGFydChHVEtfQk9YKGhib3gpLCBpY29uLCBGQUxTRSwg
RkFMU0UsIDApOworCisgICAgbWFpblZCb3ggPSBndGtfdmJveF9uZXcoRkFMU0UsIDE4KTsKKyAg
ICBndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWChoYm94KSwgbWFpblZCb3gsIFRSVUUsIFRSVUUs
IDApOworCisgICAgdXJpID0gc291cF9tZXNzYWdlX2dldF91cmkoYXV0aERhdGEtPm1zZyk7Cisg
ICAgbWVzc2FnZSA9IGdfc3RyZHVwX3ByaW50ZigiQSB1c2VybmFtZSBhbmQgcGFzc3dvcmQgYXJl
IGJlaW5nIHJlcXVlc3RlZCBieSB0aGUgc2l0ZSAlcyIsIHVyaS0+aG9zdCk7CisgICAgbWVzc2Fn
ZUxhYmVsID0gZ3RrX2xhYmVsX25ldyhtZXNzYWdlKTsKKyAgICBnX2ZyZWUobWVzc2FnZSk7Cisg
ICAgZ3RrX21pc2Nfc2V0X2FsaWdubWVudChHVEtfTUlTQyhtZXNzYWdlTGFiZWwpLCAwLjAsIDAu
NSk7CisgICAgZ3RrX2xhYmVsX3NldF9saW5lX3dyYXAoR1RLX0xBQkVMKG1lc3NhZ2VMYWJlbCks
IFRSVUUpOworICAgIGd0a19ib3hfcGFja19zdGFydChHVEtfQk9YKG1haW5WQm94KSwgR1RLX1dJ
REdFVChtZXNzYWdlTGFiZWwpLAorICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSwgRkFMU0Us
IDApOworCisgICAgdmJveCA9IGd0a192Ym94X25ldyhGQUxTRSwgNik7CisgICAgZ3RrX2JveF9w
YWNrX3N0YXJ0KEdUS19CT1ggKG1haW5WQm94KSwgdmJveCwgRkFMU0UsIEZBTFNFLCAwKTsKKwor
ICAgIC8qIFRoZSB0YWJsZSB0aGF0IGhvbGRzIHRoZSBlbnRyaWVzICovCisgICAgZW50cnlDb250
YWluZXIgPSBndGtfYWxpZ25tZW50X25ldygwLjAsIDAuMCwgMS4wLCAxLjApOworCisgICAgZ3Rr
X2FsaWdubWVudF9zZXRfcGFkZGluZyhHVEtfQUxJR05NRU5UKGVudHJ5Q29udGFpbmVyKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIDAsIDApOworCisgICAgZ3RrX2JveF9w
YWNrX3N0YXJ0KEdUS19CT1godmJveCksIGVudHJ5Q29udGFpbmVyLAorICAgICAgICAgICAgICAg
ICAgICAgICBGQUxTRSwgRkFMU0UsIDApOworCisgICAgdGFibGUgPSBndGtfdGFibGVfbmV3KDIs
IDIsIEZBTFNFKTsKKyAgICBndGtfdGFibGVfc2V0X2NvbF9zcGFjaW5ncyhHVEtfVEFCTEUgKHRh
YmxlKSwgMTIpOworICAgIGd0a190YWJsZV9zZXRfcm93X3NwYWNpbmdzKEdUS19UQUJMRSAodGFi
bGUpLCA2KTsKKyAgICBndGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKGVudHJ5Q29udGFp
bmVyKSwgdGFibGUpOworCisgICAgYXV0aERhdGEtPmxvZ2luRW50cnkgPSB0YWJsZV9hZGRfZW50
cnkodGFibGUsIDAsICJVc2VybmFtZToiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGxvZ2luLCBOVUxMKTsKKyAgICBhdXRoRGF0YS0+cGFzc3dvcmRFbnRyeSA9
IHRhYmxlX2FkZF9lbnRyeSh0YWJsZSwgMSwgIlBhc3N3b3JkOiIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzc3dvcmQsIE5VTEwpOworCisgICAgZ3Rr
X2VudHJ5X3NldF92aXNpYmlsaXR5KEdUS19FTlRSWShhdXRoRGF0YS0+cGFzc3dvcmRFbnRyeSks
IEZBTFNFKTsKKworI2lmIFVTRShHTk9NRUtFWVJJTkcpCisgICAgcmVtZW1iZXJCb3ggPSBndGtf
dmJveF9uZXcgKEZBTFNFLCA2KTsKKyAgICBndGtfYm94X3BhY2tfc3RhcnQgKEdUS19CT1ggKHZi
b3gpLCByZW1lbWJlckJveCwKKyAgICAgICAgICAgICAgICAgICAgICAgIEZBTFNFLCBGQUxTRSwg
MCk7CisKKyAgICBjaGVja0J1dHRvbiA9IGd0a19jaGVja0J1dHRvbl9uZXdfd2l0aF9sYWJlbCgi
UmVtZW1iZXIgcGFzc3dvcmQiKTsKKyAgICBpZiAobG9naW4gJiYgcGFzc3dvcmQpCisgICAgICAg
IGd0a190b2dnbGVfYnV0dG9uX3NldF9hY3RpdmUoR1RLX1RPR0dMRV9CVVRUT04oY2hlY2tCdXR0
b24pLCBUUlVFKTsKKyAgICBndGtfbGFiZWxfc2V0X2xpbmVfd3JhcChHVEtfTEFCRUwoZ3RrX2Jp
bl9nZXRfY2hpbGQoR1RLX0JJTihjaGVja0J1dHRvbikpKSwgVFJVRSk7CisgICAgZ3RrX2JveF9w
YWNrX3N0YXJ0IChHVEtfQk9YIChyZW1lbWJlckJveCksIGNoZWNrQnV0dG9uLCBGQUxTRSwgRkFM
U0UsIDApOworICAgIGF1dGhEYXRhLT5jaGVja0J1dHRvbiA9IGNoZWNrQnV0dG9uOworI2VuZGlm
CisKKyAgICBnX3NpZ25hbF9jb25uZWN0KGRpYWxvZywgInJlc3BvbnNlIiwgR19DQUxMQkFDSyhy
ZXNwb25zZV9jYWxsYmFjayksIGF1dGhEYXRhKTsKKyAgICBndGtfd2lkZ2V0X3Nob3dfYWxsKHdp
ZGdldCk7Cit9CisKKyNpZiBVU0UoR05PTUVLRVlSSU5HKQorc3RhdGljIHZvaWQgZmluZF9wYXNz
d29yZF9jYWxsYmFjayhHbm9tZUtleXJpbmdSZXN1bHQgcmVzdWx0LCBHTGlzdCogbGlzdCwgV2Vi
S2l0QXV0aERhdGEqIGF1dGhEYXRhKQoreworICAgIEdMaXN0KiBwOworICAgIGNvbnN0IGNoYXIq
IGxvZ2luID0gTlVMTDsKKyAgICBjb25zdCBjaGFyKiBwYXNzd29yZCA9IE5VTEw7CisKKyAgICBm
b3IgKHAgPSBsaXN0OyBwOyBwID0gcC0+bmV4dCkgeworICAgICAgICAvKiBGSVhNRTogc3VwcG9y
dCBtdWx0aXBsZSBsb2dpbnMvcGFzc3dvcmRzID8gKi8KKyAgICAgICAgR25vbWVLZXlyaW5nTmV0
d29ya1Bhc3N3b3JkRGF0YSogZGF0YSA9IChHbm9tZUtleXJpbmdOZXR3b3JrUGFzc3dvcmREYXRh
KilwLT5kYXRhOworICAgICAgICBsb2dpbiA9IGRhdGEtPnVzZXI7CisgICAgICAgIHBhc3N3b3Jk
ID0gZGF0YS0+cGFzc3dvcmQ7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHNob3dfYXV0
aF9kaWFsb2coYXV0aERhdGEsIGxvZ2luLCBwYXNzd29yZCk7Cit9CisjZW5kaWYKKworc3RhdGlj
IHZvaWQgc2Vzc2lvbl9hdXRoZW50aWNhdGUoU291cFNlc3Npb24qIHNlc3Npb24sIFNvdXBNZXNz
YWdlKiBtc2csIFNvdXBBdXRoKiBhdXRoLCBnYm9vbGVhbiByZXRyeWluZywgZ3BvaW50ZXIgdXNl
cl9kYXRhKQoreworICAgIFNvdXBVUkkqIHVyaTsKKyAgICBXZWJLaXRBdXRoRGF0YSogYXV0aERh
dGE7CisgICAgU291cFNlc3Npb25GZWF0dXJlKiBtYW5hZ2VyID0gKFNvdXBTZXNzaW9uRmVhdHVy
ZSopdXNlcl9kYXRhOworCisgICAgc291cF9zZXNzaW9uX3BhdXNlX21lc3NhZ2Uoc2Vzc2lvbiwg
bXNnKTsKKyAgICAvKiBXZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgbWVzc2FnZSBzdGlja3MgYXJv
dW5kIHdoZW4gcGF1c2luZyBpdCAqLworICAgIGdfb2JqZWN0X3JlZihtc2cpOworCisgICAgdXJp
ID0gc291cF9tZXNzYWdlX2dldF91cmkobXNnKTsKKyAgICBhdXRoRGF0YSA9IGdfc2xpY2VfbmV3
KFdlYktpdEF1dGhEYXRhKTsKKyAgICBhdXRoRGF0YS0+bXNnID0gbXNnOworICAgIGF1dGhEYXRh
LT5hdXRoID0gYXV0aDsKKyAgICBhdXRoRGF0YS0+c2Vzc2lvbiA9IHNlc3Npb247CisgICAgYXV0
aERhdGEtPm1hbmFnZXIgPSBtYW5hZ2VyOworCisgICAgLyoKKyAgICAgKiBJZiB3ZSBoYXZlIGdu
b21lLWtleXJpbmcgbGV0J3MgdHJ5IHRvIGZpbmQgdGhlIHBhc3N3b3JkIGZpcnN0IGluIHRoZSBy
aW5nLgorICAgICAqIE90aGVyd2lzZSBqdXN0IHNob3cgdGhlIGRpYWxvZyBzdHJhaWdodCBhd2F5
CisgICAgICovCisjaWYgVVNFKEdOT01FS0VZUklORykKKyAgICBnbm9tZV9rZXlyaW5nX2ZpbmRf
bmV0d29ya19wYXNzd29yZChOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNvdXBfYXV0aF9nZXRfcmVhbG0oYXV0aCksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdXJpLT5ob3N0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdXJpLT5zY2hlbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c291cF9hdXRoX2dldF9zY2hlbWVfbmFtZShhdXRoKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1cmktPnBvcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKEdub21lS2V5cmluZ09wZXJhdGlvbkdldExpc3RDYWxsYmFjaylmaW5kX3Bh
c3N3b3JkX2NhbGxiYWNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGF1dGhEYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwp
OworI2Vsc2UKKyAgICBzaG93X2F1dGhfZGlhbG9nKGF1dGhEYXRhLCBOVUxMLCBOVUxMKTsKKyNl
bmRpZgorfQorCitzdGF0aWMgdm9pZCBhdHRhY2goU291cFNlc3Npb25GZWF0dXJlKiBtYW5hZ2Vy
LCBTb3VwU2Vzc2lvbiogc2Vzc2lvbikKK3sKKyAgICBnX3NpZ25hbF9jb25uZWN0KHNlc3Npb24s
ICJhdXRoZW50aWNhdGUiLCBHX0NBTExCQUNLKHNlc3Npb25fYXV0aGVudGljYXRlKSwgbWFuYWdl
cik7Cit9CisKK3N0YXRpYyB2b2lkIGRldGFjaChTb3VwU2Vzc2lvbkZlYXR1cmUqIG1hbmFnZXIs
IFNvdXBTZXNzaW9uKiBzZXNzaW9uKQoreworICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5l
Y3RfYnlfZnVuYyhzZXNzaW9uLCBzZXNzaW9uX2F1dGhlbnRpY2F0ZSwgbWFuYWdlcik7Cit9CisK
KwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvd2Via2l0LXNvdXAt
YXV0aC1kaWFsb2cuaCBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL3dlYmtpdC1zb3Vw
LWF1dGgtZGlhbG9nLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTBiNjM2
NwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL3dlYmtp
dC1zb3VwLWF1dGgtZGlhbG9nLmgKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAwOSBJZ2FsaWEgUy5MLiwgQXV0aG9yOiBYYW4gTG9wZXogPHhsb3BlekBpZ2FsaWEuY29t
PgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5z
ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxp
YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK
KyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w
eSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0
aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUg
dG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0
cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLwor
CisjaW5jbHVkZSA8Z3RrL2d0ay5oPgorCisjaWZuZGVmIFdFQktJVF9TT1VQX0FVVEhfRElBTE9H
X0gKKyNkZWZpbmUgV0VCS0lUX1NPVVBfQVVUSF9ESUFMT0dfSCAxCisKK0dfQkVHSU5fREVDTFMK
KworI2RlZmluZSBXRUJLSVRfVFlQRV9TT1VQX0FVVEhfRElBTE9HICAgICAgICAgICAgKHdlYmtp
dF9zb3VwX2F1dGhfZGlhbG9nX2dldF90eXBlICgpKQorI2RlZmluZSBXRUJLSVRfU09VUF9BVVRI
X0RJQUxPRyhvYmplY3QpICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUICgob2Jq
ZWN0KSwgV0VCS0lUX1RZUEVfU09VUF9BVVRIX0RJQUxPRywgV2ViS2l0U291cEF1dGhEaWFsb2cp
KQorI2RlZmluZSBXRUJLSVRfU09VUF9BVVRIX0RJQUxPR19DTEFTUyhrbGFzcykgICAgKEdfVFlQ
RV9DSEVDS19DTEFTU19DQVNUICgoa2xhc3MpLCBXRUJLSVRfVFlQRV9TT1VQX0FVVEhfRElBTE9H
LCBXZWJLaXRTb3VwQXV0aERpYWxvZykpCisjZGVmaW5lIFdFQktJVF9JU19TT1VQX0FVVEhfRElB
TE9HKG9iamVjdCkgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUgKChvYmplY3QpLCBX
RUJLSVRfVFlQRV9TT1VQX0FVVEhfRElBTE9HKSkKKyNkZWZpbmUgV0VCS0lUX0lTX1NPVVBfQVVU
SF9ESUFMT0dfQ0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSAoKGtsYXNzKSwg
V0VCS0lUX1RZUEVfU09VUF9BVVRIX0RJQUxPRykpCisjZGVmaW5lIFdFQktJVF9TT1VQX0FVVEhf
RElBTE9HX0dFVF9DTEFTUyhvYmopICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUyAoKG9iaiks
IFdFQktJVF9UWVBFX1NPVVBfQVVUSF9ESUFMT0csIFdlYktpdFNvdXBBdXRoRGlhbG9nKSkKKwor
dHlwZWRlZiBzdHJ1Y3QgeworICAgIEdPYmplY3QgcGFyZW50X2luc3RhbmNlOworfSBXZWJLaXRT
b3VwQXV0aERpYWxvZzsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIEdPYmplY3RDbGFzcyBwYXJl
bnRfY2xhc3M7CisKKyAgICBHdGtXaWRnZXQqICgqY3VycmVudF90b3BsZXZlbCkgKFdlYktpdFNv
dXBBdXRoRGlhbG9nKiBmZWF0dXJlLCBTb3VwTWVzc2FnZSogbWVzc2FnZSk7Cit9IFdlYktpdFNv
dXBBdXRoRGlhbG9nQ2xhc3M7CisKK0dUeXBlIHdlYmtpdF9zb3VwX2F1dGhfZGlhbG9nX2dldF90
eXBlICh2b2lkKTsKKworR19FTkRfREVDTFMKKworI2VuZGlmIC8qIFdFQktJVF9TT1VQX0FVVEhf
RElBTE9HX0ggKi8KZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwppbmRl
eCA5YWNjYTQyLi4yOWM2MDY1IDEwMDY0NAotLS0gYS9jb25maWd1cmUuYWMKKysrIGIvY29uZmln
dXJlLmFjCkBAIC0zNDgsNiArMzQ4LDE0IEBAIEFDX0FSR19FTkFCTEUoZ2VvbG9jYXRpb24sCiAg
ICAgICAgICAgICAgIFtdLFtlbmFibGVfZ2VvbG9jYXRpb249Im5vIl0pCiBBQ19NU0dfUkVTVUxU
KFskZW5hYmxlX2dlb2xvY2F0aW9uXSkKIAorIyBjaGVjayB3aGV0aGVyIHRvIGVuYWJsZSBnbm9t
ZWtleXJpbmcgc3VwcG9ydAorQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIHRvIGVuYWJsZSBnbm9t
ZWtleXJpbmcgc3VwcG9ydF0pCitBQ19BUkdfRU5BQkxFKGdub21la2V5cmluZywKKyAgICAgICAg
ICAgICAgQUNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLWdub21la2V5cmluZ10sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFtlbmFibGUgc3VwcG9ydCBmb3IgZ25vbWVrZXlyaW5nIFtkZWZh
dWx0PW5vXV0pLAorICAgICAgICAgICAgICBbXSxbZW5hYmxlX2dub21la2V5cmluZz0ibm8iXSkK
K0FDX01TR19SRVNVTFQoWyRlbmFibGVfZ25vbWVrZXlyaW5nXSkKKwogIyBjaGVjayB3aGV0aGVy
IHRvIGVuYWJsZSBTVkcgc3VwcG9ydAogQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIHRvIGVuYWJs
ZSBTVkcgc3VwcG9ydF0pCiBBQ19BUkdfRU5BQkxFKHN2ZywKQEAgLTUxNyw2ICs1MjUsMTMgQEAg
UEtHX0NIRUNLX01PRFVMRVMoW0xJQlNPVVBdLAogQUNfU1VCU1QoW0xJQlNPVVBfQ0ZMQUdTXSkK
IEFDX1NVQlNUKFtMSUJTT1VQX0xJQlNdKQogCitpZiB0ZXN0ICIkZW5hYmxlX2dub21la2V5cmlu
ZyIgPSAieWVzIjsgdGhlbgorICAgUEtHX0NIRUNLX01PRFVMRVMoW0dOT01FS0VZUklOR10sCisg
ICAgICAgICAgICAgICAgICAgICBbZ25vbWUta2V5cmluZy0xXSkKKyAgIEFDX1NVQlNUKFtHTk9N
RUtFWVJJTkdfQ0ZMQUdTXSkKKyAgIEFDX1NVQlNUKFtHTk9NRUtFWVJJTkdfTElCU10pCitmaQor
CiAjIGNoZWNrIGlmIEZyZWVUeXBlL0ZvbnRDb25maWcgYXJlIGF2YWlsYWJsZQogaWYgdGVzdCAi
JHdpdGhfZm9udF9iYWNrZW5kIiA9ICJmcmVldHlwZSI7IHRoZW4KICAgIGlmIHRlc3QgIiR3aXRo
X3RhcmdldCIgPSAiZGlyZWN0ZmIiOyB0aGVuCkBAIC01OTQsNiArNjA5LDkgQEAgQU1fQ09ORElU
SU9OQUwoW1RBUkdFVF9XSU4zMl0sIFt0ZXN0ICIkd2l0aF90YXJnZXQiID0gIndpbjMyIl0pCiBB
TV9DT05ESVRJT05BTChbVEFSR0VUX1FVQVJUWl0sIFt0ZXN0ICIkd2l0aF90YXJnZXQiID0gInF1
YXJ0eiJdKQogQU1fQ09ORElUSU9OQUwoW1RBUkdFVF9ESVJFQ1RGQl0sIFt0ZXN0ICIkd2l0aF90
YXJnZXQiID0gImRpcmVjdGZiIl0pCiAKKyMgQXV0aCBiYWNrZW5kIGNvbmRpdGlvbmFscworQU1f
Q09ORElUSU9OQUwoW1VTRV9HTk9NRUtFWVJJTkddLCBbdGVzdCAiJGVuYWJsZV9nbm9tZWtleXJp
bmciID0gInllcyJdKQorCiAjIEZvbnQgYmFja2VuZCBjb25kaXRpb25hbHMKIEFNX0NPTkRJVElP
TkFMKFtVU0VfRlJFRVRZUEVdLCBbdGVzdCAiJHdpdGhfZm9udF9iYWNrZW5kIiA9ICJmcmVldHlw
ZSJdKQogQU1fQ09ORElUSU9OQUwoW1VTRV9QQU5HT10sIFt0ZXN0ICIkd2l0aF9mb250X2JhY2tl
bmQiID0gInBhbmdvIl0pCkBAIC02NDksNiArNjY3LDcgQEAgRmVhdHVyZXM6CiAgSklUIGNvbXBp
bGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAkZW5hYmxl
X2ppdAogIERhc2hib2FyZCBzdXBwb3J0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDogJGVuYWJsZV9kYXNoYm9hcmRfc3VwcG9ydAogIEdlb2xvY2F0aW9uIHN1cHBvcnQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJGVuYWJsZV9nZW9sb2NhdGlv
bgorIEdOT01FIEtleXJpbmcgc3VwcG9ydCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDogJGVuYWJsZV9nbm9tZWtleXJpbmcKICBIVE1MNSBvZmZsaW5lIHdlYiBhcHBsaWNhdGlv
bnMgc3VwcG9ydCAgICAgICAgICAgICAgICAgICA6ICRlbmFibGVfb2ZmbGluZV93ZWJfYXBwbGlj
YXRpb25zCiAgSFRNTDUgY2hhbm5lbCBtZXNzYWdpbmcgc3VwcG9ydCAgICAgICAgICAgICAgICAg
ICAgICAgICAgOiAkZW5hYmxlX2NoYW5uZWxfbWVzc2FnaW5nCiAgSFRNTDUgY2xpZW50LXNpZGUg
c2Vzc2lvbiBhbmQgcGVyc2lzdGVudCBzdG9yYWdlIHN1cHBvcnQgOiAkZW5hYmxlX2RvbV9zdG9y
YWdlCi0tIAoxLjYuMQoK
</data>
<flag name="review"
          id="13662"
          type_id="1"
          status="+"
          setter="zecke"
    />
          </attachment>
      

    </bug>

</bugzilla>