<?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>18344</bug_id>
          
          <creation_ts>2008-04-07 09:30:09 -0700</creation_ts>
          <short_desc>[GTK] Error reporting</short_desc>
          <delta_ts>2009-05-05 12:00:50 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk, Soup</keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Luca Bruno">lethalman88</reporter>
          <assigned_to name="Jan Alonzo">jmalonzo</assigned_to>
          <cc>diegoe</cc>
    
    <cc>gustavo</cc>
    
    <cc>jmalonzo</cc>
    
    <cc>pochu27</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>76509</commentid>
    <comment_count>0</comment_count>
    <who name="Luca Bruno">lethalman88</who>
    <bug_when>2008-04-07 09:30:09 -0700</bug_when>
    <thetext>The discussion has been started already in http://bugs.webkit.org/show_bug.cgi?id=18297.
How to handle errors? GError? Creating a new object?

A patch in that bug used both for network errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>111347</commentid>
    <comment_count>1</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2009-02-26 16:26:48 -0800</bug_when>
    <thetext>I think GError is the way to go. Most errors in webkit are async, so we will want to have signals emitted to notify the client about them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>115925</commentid>
    <comment_count>2</comment_count>
      <attachid>29094</attachid>
    <who name="Diego Escalante Urrelo">diegoe</who>
    <bug_when>2009-03-30 16:18:55 -0700</bug_when>
    <thetext>Created attachment 29094
Cleaned up patch from Luca Bruno in bug #18297</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>115963</commentid>
    <comment_count>3</comment_count>
    <who name="Alexander Butenko">a.butenka</who>
    <bug_when>2009-03-30 19:08:42 -0700</bug_when>
    <thetext>probably instead of message box it will be way better just to emit event for a browser. In this case browser can draw nice error page in webview. Message boxes is always annoying. 

Plus i think it will be nice to include handing of network errors like &apos;Permission denied&apos;, &apos;Not found&apos;, &apos;Forbidden&apos; etc. </thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>116386</commentid>
    <comment_count>4</comment_count>
      <attachid>29216</attachid>
    <who name="Diego Escalante Urrelo">diegoe</who>
    <bug_when>2009-04-02 19:51:56 -0700</bug_when>
    <thetext>Created attachment 29216
Updated patch to include new files.

Forgot to add new files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>116567</commentid>
    <comment_count>5</comment_count>
    <who name="Jan Alonzo">jmalonzo</who>
    <bug_when>2009-04-05 00:15:16 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Created an attachment (id=29216) [review]
&gt; Updated patch to include new files.
&gt; 
&gt; Forgot to add new files.
&gt; 

Diegoe, is this for review? If so can you please change the review flag to &apos;?&apos; ?

Thanks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>116795</commentid>
    <comment_count>6</comment_count>
    <who name="Jan Alonzo">jmalonzo</who>
    <bug_when>2009-04-07 14:22:05 -0700</bug_when>
    <thetext>*** Bug 24255 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>116824</commentid>
    <comment_count>7</comment_count>
    <who name="Diego Escalante Urrelo">diegoe</who>
    <bug_when>2009-04-07 17:04:03 -0700</bug_when>
    <thetext>No, not for review, just attached the result of trying to apply the older patch. Uploaded so others can check it out if curious. But I plan to do something with this soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>117334</commentid>
    <comment_count>8</comment_count>
      <attachid>29436</attachid>
    <who name="Jan Alonzo">jmalonzo</who>
    <bug_when>2009-04-13 13:46:21 -0700</bug_when>
    <thetext>Created attachment 29436
[1/3] Add API to load content for unreachable URL

This patch adds a &quot;load-error&quot; signal to the WebView to signify that an error occurred while loading. It also adds a WebFrame API to load an alternate content for unreachable URLs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>117335</commentid>
    <comment_count>9</comment_count>
      <attachid>29437</attachid>
    <who name="Jan Alonzo">jmalonzo</who>
    <bug_when>2009-04-13 13:49:41 -0700</bug_when>
    <thetext>Created attachment 29437
[2/3] Add default page for error reporting

This patch adds a default error page to be installed in $(datadir)/webkit-1.0/resources/error.html. This will be the default page that will be loaded if load-error is not handled.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>117337</commentid>
    <comment_count>10</comment_count>
      <attachid>29438</attachid>
    <who name="Jan Alonzo">jmalonzo</who>
    <bug_when>2009-04-13 13:53:21 -0700</bug_when>
    <thetext>Created attachment 29438
[3/3] implement resource error-using methods

Implement resource error-reporting methods. This patch also adds the error domain/codes that WebKitGtk will be reporting in WebKitError.h (Please see comment why it&apos;s sitting in WebCore/platform rather than in WebKit)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>117352</commentid>
    <comment_count>11</comment_count>
      <attachid>29436</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2009-04-13 14:46:19 -0700</bug_when>
    <thetext>Comment on attachment 29436
[1/3] Add API to load content for unreachable URL

&gt;  #include &lt;JavaScriptCore/APICast.h&gt;
&gt; +#include &lt;glib.h&gt;
&gt; +#include &lt;glib/gprintf.h&gt;

gprintf.h is added here, and removed later in patch error-gerror, is it needed here?


&gt; -void FrameLoaderClient::dispatchDidFailLoad(const ResourceError&amp;)
&gt; +void FrameLoaderClient::dispatchDidFailLoad(const ResourceError&amp; error)
&gt;  {
&gt; -    g_signal_emit_by_name(m_frame, &quot;load-done&quot;, false);

Perhaps we should do like elsewhere, and still emit this signal. Though it is not even documented, there may be users. It may be a good oportunity to document it and make it deprecated, at the same time.

&gt; +static void webkit_web_frame_load_data(WebKitWebFrame* frame, const gchar* content, const gchar* mimeType, const gchar* encoding, const gchar* baseURL, const gchar* unreachableURL)
&gt; +{
&gt; +    Frame* coreFrame = core(frame);
&gt; +    ASSERT(coreFrame);
&gt; +
&gt; +    KURL baseurl;
&gt; +
&gt; +    if (!baseURL)
&gt; +        baseurl = blankURL();

This doesn&apos;t make sense to me. What if baseURL is there? Shouldn&apos;t you use it, then? Perhaps you are missing an else clause here, or initializing baseurl with baseURL, upon declaration?

&gt; +    RefPtr&lt;SharedBuffer&gt; sharedBuffer = SharedBuffer::create(content, g_utf8_strlen(content, -1));
&gt; +    SubstituteData substituteData(sharedBuffer.release(),
&gt; +                                  mimeType ? String::fromUTF8(mimeType) : String::fromUTF8(&quot;text/html&quot;),
&gt; +                                  encoding ? String::fromUTF8(encoding) : String::fromUTF8(&quot;UTF-8&quot;),
&gt; +                                  baseurl,
&gt; +                                  KURL(KURL(), String::fromUTF8(unreachableURL)));
&gt; +
&gt; +    coreFrame-&gt;loader()-&gt;load(request, substituteData, false);

So, does WebCore treat normal and &apos;alternate&apos; loads differently, somehow? Is the fact that unreachableURL is NULL enough?

I like the patch, looks pretty good to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>117355</commentid>
    <comment_count>12</comment_count>
      <attachid>29437</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2009-04-13 14:59:09 -0700</bug_when>
    <thetext>Comment on attachment 29437
[2/3] Add default page for error reporting

&gt; +dist_resources_DATA = \
&gt; +	$(shell ls $(srcdir)/WebKit/gtk/resources/*.{html,css})

This seems to be modified in the next patch to have only *.html, I think it would be best to have this changed squashed into this patch.

&gt; +    GFile* errorFile = g_file_new_for_uri(&quot;file://&quot;DATA_DIR&quot;/webkit-1.0/resources/error.html&quot;);

Good stuff. In the future we can use the locale to fetch a translated patch, if it exists, but I think we should not add unnecessary complexity to the initial implementation.

&gt; +    gboolean loaded = g_file_load_contents(errorFile, NULL, &amp;fileContent, NULL, NULL, NULL);

I think those NULL&apos;s should be 0&apos;s?

&gt; +    webkit_web_frame_load_alternate_string(m_frame, content.utf8().data(), NULL, error.failingURL().utf8().data());

Same here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>117357</commentid>
    <comment_count>13</comment_count>
      <attachid>29438</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2009-04-13 15:09:00 -0700</bug_when>
    <thetext>Comment on attachment 29438
[3/3] implement resource error-using methods

&gt; +enum WebKitNetworkError {
&gt; +    WebKitNetworkErrorTransport                         = 300,
&gt; +    WebKitNetworkErrorUnknownProtocol                   = 301,
&gt; +    WebKitNetworkErrorCancelled                         = 302,
&gt; +    WebKitNetworkErrorFileDoesNotExist                  = 303,
&gt; +    WebKitNetworkErrorFileCannotBeOpened                = 304,
&gt; +    WebKitNetworkErrorHTTPMethodUnknown                 = 305,
&gt; +};

I am missing a way of finding out what exactly was the problem: how would the client application be able to tell if the problem was caused by a DNS failure, for instance?

&gt; +
&gt; +// Sync&apos;d with WebKit/mac/Misc/WebKitErrors.h
&gt; +enum WebKitPolicyError {
&gt; +    WebKitPolicyErrorCannotShowMIMEType                 = 100,
&gt; +    WebKitPolicyErrorCannotShowURL                      = 101,
&gt; +    WebKitPolicyErrorFrameLoadInterruptedByPolicyChange = 102,
&gt; +    WebKitPolicyErrorCannotUseRestrictedPort            = 103,
&gt; +};
&gt; +
&gt; +enum WebKitPluginError {
&gt; +    WebKitPluginErrorCannotFindPlugin                   = 200,
&gt; +    WebKitPluginErrorCannotLoadPlugin                   = 201,
&gt; +    WebKitPluginErrorJavaUnavailable                    = 202,
&gt; +    WebKitPluginErrorConnectionCancelled                = 203,
&gt; +    WebKitPluginErrorWillHandleLoad                     = 204,
&gt; +};

Also, I am a bit uneasy with handling cancelling and plugin will handle load as errors, but it may make sense. From reading the code it seems to me that in those cases, shouldFallback will return false and disallow an error page loading?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118069</commentid>
    <comment_count>14</comment_count>
    <who name="Jan Alonzo">jmalonzo</who>
    <bug_when>2009-04-19 04:54:32 -0700</bug_when>
    <thetext>Clearing review flag.. The patches need updating.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118689</commentid>
    <comment_count>15</comment_count>
      <attachid>29751</attachid>
    <who name="Jan Alonzo">jmalonzo</who>
    <bug_when>2009-04-24 12:03:49 -0700</bug_when>
    <thetext>Created attachment 29751
[1/3] Add API to load content for unreachable URL - v2

Updated patch based on kov&apos;s feedback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118690</commentid>
    <comment_count>16</comment_count>
      <attachid>29752</attachid>
    <who name="Jan Alonzo">jmalonzo</who>
    <bug_when>2009-04-24 12:09:51 -0700</bug_when>
    <thetext>Created attachment 29752
[2/3] Add default page for error reporting - v2

Updated based on kov&apos;s feedback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118692</commentid>
    <comment_count>17</comment_count>
      <attachid>29753</attachid>
    <who name="Jan Alonzo">jmalonzo</who>
    <bug_when>2009-04-24 12:15:10 -0700</bug_when>
    <thetext>Created attachment 29753
[3/3] implement resource error-using methods - v2

Updated reporting of ResourceErrors to use Soup and GIO errors rather than custom WebKitErrors (as the previous patch does).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118709</commentid>
    <comment_count>18</comment_count>
      <attachid>29751</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2009-04-24 13:08:47 -0700</bug_when>
    <thetext>Comment on attachment 29751
[1/3] Add API to load content for unreachable URL - v2

Mmm, how come this diff is not using -p? Harder to read the patch that way.

&gt; Index: WebKit/WebKit/gtk/WebCoreSupport/FrameLoaderClientGtk.cpp
&gt; ===================================================================
&gt; --- WebKit.orig/WebKit/gtk/WebCoreSupport/FrameLoaderClientGtk.cpp	2009-04-24 20:49:12.000000000 +1000
&gt; +++ WebKit/WebKit/gtk/WebCoreSupport/FrameLoaderClientGtk.cpp	2009-04-24 20:50:33.000000000 +1000
&gt; @@ -57,6 +57,7 @@
&gt;  #include &quot;webkitprivate.h&quot;
&gt;  
&gt;  #include &lt;JavaScriptCore/APICast.h&gt;
&gt; +#include &lt;glib.h&gt;
&gt;  #include &lt;stdio.h&gt;
&gt;  #if PLATFORM(UNIX)
&gt;  #include &lt;sys/utsname.h&gt;
&gt; @@ -260,8 +261,11 @@
&gt;  
&gt;      // We can get a stopLoad() from dispose when the object is being
&gt;      // destroyed, don&apos;t emit the signal in that case.
&gt; -    if (!privateData-&gt;disposing)
&gt; -        g_signal_emit_by_name(webView, &quot;load-finished&quot;, m_frame);
&gt; +    if (privateData-&gt;disposing)
&gt; +        return;
&gt; +
&gt; +    gboolean handled;
&gt; +    g_signal_emit_by_name(webView, &quot;load-finished&quot;, m_frame, NULL, NULL, &amp;handled);
&gt;  }

Mmm, I guess you meant to emit load-error here or...? But does that make sense? /me confused

&gt; -void FrameLoaderClient::dispatchDidFailProvisionalLoad(const ResourceError&amp;)
&gt; +void FrameLoaderClient::dispatchDidFailProvisionalLoad(const ResourceError&amp; error)
&gt;  {
&gt; +    dispatchDidFailLoad(error);
&gt; +
&gt; +    // FIXME: this is here for compatibility&apos;s sake.
&gt;      g_signal_emit_by_name(m_frame, &quot;load-done&quot;, false);
&gt;  }
&gt;  

Perhaps you can add &quot;Remove when the signal is removed&quot; or something, to be absolutely clear.

&gt; +static void webkit_web_frame_load_data(WebKitWebFrame* frame, const gchar* content, const gchar* mimeType, const gchar* encoding, const gchar* baseURL, const gchar* unreachableURL)
&gt; +{
&gt; +    Frame* coreFrame = core(frame);
&gt; +    ASSERT(coreFrame);
&gt; +
&gt; +    KURL baseurl = (baseURL) ? KURL(KURL(), String::fromUTF8(baseURL)) : blankURL();

baseKURL perhaps? URL has to be capitalized properly. And the parenthesis around baseURL are not needed.

&gt; +
&gt; +    // FIXME: convert baseurl and unreachableURL to an absolute url

Can you briefly explain me why is this important (since you seem to pass the actual data directly) and how do you intend to do it, or how does it work without it now?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118711</commentid>
    <comment_count>19</comment_count>
      <attachid>29752</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2009-04-24 13:16:12 -0700</bug_when>
    <thetext>Comment on attachment 29752
[2/3] Add default page for error reporting - v2

&gt; -                                           NULL, error.failingURL().utf8().data());
&gt; +    String content;
&gt; +    gchar* fileContent = 0;
&gt; +    GFile* errorFile = g_file_new_for_uri(&quot;file://&quot;DATA_DIR&quot;/webkit-1.0/resources/error.html&quot;);

Do not hardcode &quot;file://&quot;, use g_filename_to_uri.

&gt; +
&gt; +    if (!errorFile)
&gt; +        content = String::format(&quot;&lt;html&gt;&lt;body&gt;%s&lt;/body&gt;&lt;/html&gt;&quot;, webError-&gt;message);
&gt; +    else {
&gt; +        gboolean loaded = g_file_load_contents(errorFile, NULL, &amp;fileContent, 0, 0, 0);

Either NULL or 0, but not both :) We decided to use NULL in WebKit/gtk/, so let&apos;s use that.

&gt; +        if (!loaded)
&gt; +            content = String::format(&quot;&lt;html&gt;&lt;body&gt;%s&lt;/body&gt;&lt;/html&gt;&quot;, webError-&gt;message);
&gt; +        else
&gt; +            content = String::format(fileContent, error.failingURL().utf8().data(), webError-&gt;message);
&gt; +    }
&gt; +
&gt; +    webkit_web_frame_load_alternate_string(m_frame, content.utf8().data(), 0, error.failingURL().utf8().data());

Same

&gt; +
&gt; +    if (fileContent)
&gt; +        g_free(fileContent);

g_free is NULL-safe.

&gt; +
&gt; +    if (errorFile)
&gt; +        g_object_unref(errorFile);
&gt; +
&gt;      g_error_free(webError);
&gt;  

&gt; +#errorTitleText {
&gt; + font-family: sans-serif;
&gt; + font-size: 120%;
&gt; + font-weight: bold;
&gt; +}
&gt; +
&gt; +#errorMessageText {
&gt; + font: 80% Verdana, sans-serif;
&gt; +}

I think we should just use the font the user has set...

&gt; +
&gt; +&lt;/style&gt;
&gt; +&lt;script type=&quot;text/javascript&quot;&gt;
&gt; +
&gt; +function tryagain()
&gt; +{
&gt; + location.reload();
&gt; +}
&gt; +&lt;/script&gt;
&gt; +&lt;/head&gt;
&gt; +&lt;body&gt;
&gt; +&lt;div id=&quot;errorContainer&quot;&gt;
&gt; +
&gt; +&lt;div id=&quot;errorTitle&quot;&gt;
&gt; + &lt;p id=&quot;errorTitleText&quot;&gt;Unable to load page&lt;/p&gt;
&gt; +&lt;/div&gt;
&gt; +&lt;div id=&quot;errorMessage&quot;&gt;
&gt; + &lt;p&gt;Problem occurred while loading the URL %s&lt;/p&gt;
&gt; + &lt;p id=&quot;errorMessageText&quot;&gt;%s&lt;/a&gt;
&gt; +&lt;/p&gt;
&gt; +&lt;/div&gt;

We need to be able to translate the error page, but maybe that can go in another patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118714</commentid>
    <comment_count>20</comment_count>
      <attachid>29753</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2009-04-24 13:25:22 -0700</bug_when>
    <thetext>Comment on attachment 29753
[3/3] implement resource error-using methods - v2

&gt; Index: WebKit/WebCore/GNUmakefile.am
&gt; ===================================================================
&gt; --- WebKit.orig/WebCore/GNUmakefile.am	2009-04-24 20:49:10.000000000 +1000
&gt; +++ WebKit/WebCore/GNUmakefile.am	2009-04-25 04:26:07.000000000 +1000
&gt; @@ -1755,6 +1755,10 @@
&gt;  	WebCore/plugins/gtk/xembed.h
&gt;  endif
&gt;  
&gt; +webcoregtk_cppflags += \
&gt; +	-DWTF_USE_SOUP=1 \
&gt; +	-I$(srcdir)/WebCore/platform/network/soup
&gt; +
&gt;  webcoregtk_sources += \
&gt;  	WebCore/page/gtk/AXObjectCacheAtk.cpp \
&gt;  	WebCore/page/gtk/AccessibilityObjectAtk.cpp \
&gt; @@ -1840,13 +1844,7 @@
&gt;  	WebCore/platform/image-decoders/png/PNGImageDecoder.h \
&gt;  	WebCore/platform/image-decoders/xbm/XBMImageDecoder.cpp \
&gt;  	WebCore/platform/image-decoders/xbm/XBMImageDecoder.h \
&gt; -	WebCore/platform/text/gtk/TextBreakIteratorInternalICUGtk.cpp
&gt; -
&gt; -webcore_cppflags += \
&gt; -	-DWTF_USE_SOUP=1 \
&gt; -	-I$(srcdir)/WebCore/platform/network/soup
&gt; -
&gt; -webcore_sources += \
&gt; +	WebCore/platform/text/gtk/TextBreakIteratorInternalICUGtk.cpp \
&gt;  	WebCore/platform/network/soup/AuthenticationChallenge.h \
&gt;  	WebCore/platform/network/soup/CookieJarSoup.cpp \
&gt;  	WebCore/platform/network/soup/CookieJarSoup.h \
&gt; @@ -1856,6 +1854,7 @@
&gt;  	WebCore/platform/network/soup/ResourceRequest.h \
&gt;  	WebCore/platform/network/soup/ResourceResponse.h
&gt;  
&gt; +
&gt;  if USE_GNOMEKEYRING
&gt;  webcore_cppflags += \
&gt;  	-DWTF_USE_GNOMEKEYRING=1

Stuff for another patch?


&gt; -    gboolean handled = false;
&gt; -    g_signal_emit_by_name(webView, &quot;load-error&quot;, m_frame, error.failingURL().utf8().data(), webError, &amp;handled);
&gt; +    gboolean isHandled = false;
&gt; +    g_signal_emit_by_name(webView, &quot;load-error&quot;, m_frame, error.failingURL().utf8().data(), webError, &amp;isHandled);
&gt;  
&gt; -    if (handled) {
&gt; +    if (isHandled) {
&gt;          g_error_free(webError);
&gt;          return;

Also a different patch.

Awesome stuff!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118733</commentid>
    <comment_count>21</comment_count>
    <who name="Jan Alonzo">jmalonzo</who>
    <bug_when>2009-04-24 14:28:48 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; &gt;  
&gt; &gt;      // We can get a stopLoad() from dispose when the object is being
&gt; &gt;      // destroyed, don&apos;t emit the signal in that case.
&gt; &gt; -    if (!privateData-&gt;disposing)
&gt; &gt; -        g_signal_emit_by_name(webView, &quot;load-finished&quot;, m_frame);
&gt; &gt; +    if (privateData-&gt;disposing)
&gt; &gt; +        return;
&gt; &gt; +
&gt; &gt; +    gboolean handled;
&gt; &gt; +    g_signal_emit_by_name(webView, &quot;load-finished&quot;, m_frame, NULL, NULL, &amp;handled);
&gt; &gt;  }
&gt; 
&gt; Mmm, I guess you meant to emit load-error here or...? But does that make sense?
&gt; /me confused

I&apos;m just fixing what is there for these patch sets. It&apos;s been using load-finished since so why should I change? If it doesn&apos;t seem right then I guess that&apos;s a different patch for a different bug.

&gt; 
&gt; &gt; -void FrameLoaderClient::dispatchDidFailProvisionalLoad(const ResourceError&amp;)
&gt; &gt; +void FrameLoaderClient::dispatchDidFailProvisionalLoad(const ResourceError&amp; error)
&gt; &gt;  {
&gt; &gt; +    dispatchDidFailLoad(error);
&gt; &gt; +
&gt; &gt; +    // FIXME: this is here for compatibility&apos;s sake.
&gt; &gt;      g_signal_emit_by_name(m_frame, &quot;load-done&quot;, false);
&gt; &gt;  }
&gt; &gt;  
&gt; 
&gt; Perhaps you can add &quot;Remove when the signal is removed&quot; or something, to be
&gt; absolutely clear.

Ok.

&gt; &gt; +static void webkit_web_frame_load_data(WebKitWebFrame* frame, const gchar* content, const gchar* mimeType, const gchar* encoding, const gchar* baseURL, const gchar* unreachableURL)
&gt; &gt; +{
&gt; &gt; +    Frame* coreFrame = core(frame);
&gt; &gt; +    ASSERT(coreFrame);
&gt; &gt; +
&gt; &gt; +    KURL baseurl = (baseURL) ? KURL(KURL(), String::fromUTF8(baseURL)) : blankURL();
&gt; 
&gt; baseKURL perhaps? URL has to be capitalized properly. And the parenthesis
&gt; around baseURL are not needed.

Ok. I&apos;ll make it baseKURL.

&gt; 
&gt; &gt; +
&gt; &gt; +    // FIXME: convert baseurl and unreachableURL to an absolute url
&gt; 
&gt; Can you briefly explain me why is this important (since you seem to pass the
&gt; actual data directly) and how do you intend to do it, or how does it work
&gt; without it now?

I don&apos;t understand. Why it&apos;s important to pass an absolute URL or why is this method important?
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118735</commentid>
    <comment_count>22</comment_count>
    <who name="Jan Alonzo">jmalonzo</who>
    <bug_when>2009-04-24 14:32:07 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; (From update of attachment 29752 [review])
&gt; &gt; -                                           NULL, error.failingURL().utf8().data());
&gt; &gt; +    String content;
&gt; &gt; +    gchar* fileContent = 0;
&gt; &gt; +    GFile* errorFile = g_file_new_for_uri(&quot;file://&quot;DATA_DIR&quot;/webkit-1.0/resources/error.html&quot;);
&gt; 
&gt; Do not hardcode &quot;file://&quot;, use g_filename_to_uri.

OK.

&gt; 
&gt; &gt; +
&gt; &gt; +    if (!errorFile)
&gt; &gt; +        content = String::format(&quot;&lt;html&gt;&lt;body&gt;%s&lt;/body&gt;&lt;/html&gt;&quot;, webError-&gt;message);
&gt; &gt; +    else {
&gt; &gt; +        gboolean loaded = g_file_load_contents(errorFile, NULL, &amp;fileContent, 0, 0, 0);
&gt; 
&gt; Either NULL or 0, but not both :) We decided to use NULL in WebKit/gtk/, so
&gt; let&apos;s use that.

Gustavo suggested to use 0 :( I&apos;ll change it back.

&gt; 
&gt; &gt; +        if (!loaded)
&gt; &gt; +            content = String::format(&quot;&lt;html&gt;&lt;body&gt;%s&lt;/body&gt;&lt;/html&gt;&quot;, webError-&gt;message);
&gt; &gt; +        else
&gt; &gt; +            content = String::format(fileContent, error.failingURL().utf8().data(), webError-&gt;message);
&gt; &gt; +    }
&gt; &gt; +
&gt; &gt; +    webkit_web_frame_load_alternate_string(m_frame, content.utf8().data(), 0, error.failingURL().utf8().data());
&gt; 
&gt; Same
&gt; 
&gt; &gt; +
&gt; &gt; +    if (fileContent)
&gt; &gt; +        g_free(fileContent);
&gt; 
&gt; g_free is NULL-safe.

Right.

&gt; 
&gt; &gt; +
&gt; &gt; +    if (errorFile)
&gt; &gt; +        g_object_unref(errorFile);
&gt; &gt; +
&gt; &gt;      g_error_free(webError);
&gt; &gt;  
&gt; 
&gt; &gt; +#errorTitleText {
&gt; &gt; + font-family: sans-serif;
&gt; &gt; + font-size: 120%;
&gt; &gt; + font-weight: bold;
&gt; &gt; +}
&gt; &gt; +
&gt; &gt; +#errorMessageText {
&gt; &gt; + font: 80% Verdana, sans-serif;
&gt; &gt; +}
&gt; 
&gt; I think we should just use the font the user has set...

Hmmm... ok.


</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118756</commentid>
    <comment_count>23</comment_count>
      <attachid>29769</attachid>
    <who name="Jan Alonzo">jmalonzo</who>
    <bug_when>2009-04-24 15:49:19 -0700</bug_when>
    <thetext>Created attachment 29769
[1/3] Add API to load content for unreachable URL - v3

Updated per xan&apos;s feedback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118757</commentid>
    <comment_count>24</comment_count>
      <attachid>29770</attachid>
    <who name="Jan Alonzo">jmalonzo</who>
    <bug_when>2009-04-24 15:51:46 -0700</bug_when>
    <thetext>Created attachment 29770
[2/3] Add default page for error reporting - v3

Updated per xan&apos;s feedback</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118759</commentid>
    <comment_count>25</comment_count>
      <attachid>29771</attachid>
    <who name="Jan Alonzo">jmalonzo</who>
    <bug_when>2009-04-24 15:53:19 -0700</bug_when>
    <thetext>Created attachment 29771
[3/3] implement resource error-using methods - v2

Updated per kov&apos;s and xan&apos;s feedback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118793</commentid>
    <comment_count>26</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2009-04-24 18:37:12 -0700</bug_when>
    <thetext>The patches look good to me. I&apos;ll let Xan r+, though, after he sees the updates.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118804</commentid>
    <comment_count>27</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2009-04-24 23:49:30 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; (In reply to comment #18)
&gt; &gt; &gt;  
&gt; &gt; &gt;      // We can get a stopLoad() from dispose when the object is being
&gt; &gt; &gt;      // destroyed, don&apos;t emit the signal in that case.
&gt; &gt; &gt; -    if (!privateData-&gt;disposing)
&gt; &gt; &gt; -        g_signal_emit_by_name(webView, &quot;load-finished&quot;, m_frame);
&gt; &gt; &gt; +    if (privateData-&gt;disposing)
&gt; &gt; &gt; +        return;
&gt; &gt; &gt; +
&gt; &gt; &gt; +    gboolean handled;
&gt; &gt; &gt; +    g_signal_emit_by_name(webView, &quot;load-finished&quot;, m_frame, NULL, NULL, &amp;handled);
&gt; &gt; &gt;  }
&gt; &gt; 
&gt; &gt; Mmm, I guess you meant to emit load-error here or...? But does that make sense?
&gt; &gt; /me confused
&gt; 
&gt; I&apos;m just fixing what is there for these patch sets. It&apos;s been using
&gt; load-finished since so why should I change? If it doesn&apos;t seem right then I
&gt; guess that&apos;s a different patch for a different bug.
&gt; 

OK, then I don&apos;t see what are you fixing, since the signature you are changing the signal to is wrong. &apos;load-finished&apos; only has one parameter and no return value.

&gt; &gt; &gt; +    // FIXME: convert baseurl and unreachableURL to an absolute url
&gt; &gt; 
&gt; &gt; Can you briefly explain me why is this important (since you seem to pass the
&gt; &gt; actual data directly) and how do you intend to do it, or how does it work
&gt; &gt; without it now?
&gt; 
&gt; I don&apos;t understand. Why it&apos;s important to pass an absolute URL or why is this
&gt; method important?
&gt; 

The former.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118805</commentid>
    <comment_count>28</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2009-04-24 23:52:34 -0700</bug_when>
    <thetext>&gt; &gt; &gt; +    if (!errorFile)
&gt; &gt; &gt; +        content = String::format(&quot;&lt;html&gt;&lt;body&gt;%s&lt;/body&gt;&lt;/html&gt;&quot;, webError-&gt;message);
&gt; &gt; &gt; +    else {
&gt; &gt; &gt; +        gboolean loaded = g_file_load_contents(errorFile, NULL, &amp;fileContent, 0, 0, 0);
&gt; &gt; 
&gt; &gt; Either NULL or 0, but not both :) We decided to use NULL in WebKit/gtk/, so
&gt; &gt; let&apos;s use that.
&gt; 
&gt; Gustavo suggested to use 0 :( I&apos;ll change it back.

Well, we had decided to use NULL instead of 0 in all the files in WebKit/gtk/, since they are more likely to be touched by GTK+ people in general. We can change this back, but in any case what&apos;s wrong is to mix both NULL and 0 in the same patch. You seem to have changed everything to 0 now in the last patch... I&apos;d prefer to use NULL, since that&apos;s what we have as a rule now.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118806</commentid>
    <comment_count>29</comment_count>
      <attachid>29771</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2009-04-24 23:53:36 -0700</bug_when>
    <thetext>Comment on attachment 29771
[3/3] implement resource error-using methods - v2

Looks good to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118810</commentid>
    <comment_count>30</comment_count>
    <who name="Jan Alonzo">jmalonzo</who>
    <bug_when>2009-04-25 00:27:13 -0700</bug_when>
    <thetext>(In reply to comment #28)
&gt; &gt; &gt; &gt; +    if (!errorFile)
&gt; &gt; &gt; &gt; +        content = String::format(&quot;&lt;html&gt;&lt;body&gt;%s&lt;/body&gt;&lt;/html&gt;&quot;, webError-&gt;message);
&gt; &gt; &gt; &gt; +    else {
&gt; &gt; &gt; &gt; +        gboolean loaded = g_file_load_contents(errorFile, NULL, &amp;fileContent, 0, 0, 0);
&gt; &gt; &gt; 
&gt; &gt; &gt; Either NULL or 0, but not both :) We decided to use NULL in WebKit/gtk/, so
&gt; &gt; &gt; let&apos;s use that.
&gt; &gt; 
&gt; &gt; Gustavo suggested to use 0 :( I&apos;ll change it back.
&gt; 
&gt; Well, we had decided to use NULL instead of 0 in all the files in WebKit/gtk/,
&gt; since they are more likely to be touched by GTK+ people in general. We can
&gt; change this back, but in any case what&apos;s wrong is to mix both NULL and 0 in the
&gt; same patch. You seem to have changed everything to 0 now in the last patch...
&gt; I&apos;d prefer to use NULL, since that&apos;s what we have as a rule now.

I thought we only use NULL in gtk/webkit? But in gtk/WebCoreSupport, I think we still use 0?

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118811</commentid>
    <comment_count>31</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2009-04-25 00:29:56 -0700</bug_when>
    <thetext>(In reply to comment #30)
&gt; I thought we only use NULL in gtk/webkit? But in gtk/WebCoreSupport, I think we
&gt; still use 0?
&gt; 

There&apos;s quite a bit more of NULL than 0 in gtk/WebCoreSupport, and as far as I can remember the rule was meant for all the code inside gtk/.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118813</commentid>
    <comment_count>32</comment_count>
      <attachid>29783</attachid>
    <who name="Jan Alonzo">jmalonzo</who>
    <bug_when>2009-04-25 00:57:32 -0700</bug_when>
    <thetext>Created attachment 29783
[1/3] Add API to load content for unreachable URL - v4

updated load-finished signal emission and added a note in the documentation of _load_alternate_string that we&apos;re expecting an absolute URL in base_url.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118814</commentid>
    <comment_count>33</comment_count>
      <attachid>29783</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2009-04-25 01:13:03 -0700</bug_when>
    <thetext>Comment on attachment 29783
[1/3] Add API to load content for unreachable URL - v4

&gt; +    webkit_web_view_signals[LOAD_ERROR] = g_signal_new(&quot;load-error&quot;,
&gt; +            G_TYPE_FROM_CLASS(webViewClass),
&gt; +            (GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION),

I&apos;m sorry I&apos;m realizing now, and this is wrong elsewhere, but I don&apos;t think it makes sense that this signal is G_SIGNAL_ACTION.

r=me if you remove that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118815</commentid>
    <comment_count>34</comment_count>
      <attachid>29771</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2009-04-25 01:18:59 -0700</bug_when>
    <thetext>Comment on attachment 29771
[3/3] implement resource error-using methods - v2

r=me, but let&apos;s fix the 0/NULL mess ASAP.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118816</commentid>
    <comment_count>35</comment_count>
      <attachid>29770</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2009-04-25 01:20:30 -0700</bug_when>
    <thetext>Comment on attachment 29770
[2/3] Add default page for error reporting - v3

Er, I meant to review this one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118817</commentid>
    <comment_count>36</comment_count>
      <attachid>29783</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2009-04-25 01:21:10 -0700</bug_when>
    <thetext>Comment on attachment 29783
[1/3] Add API to load content for unreachable URL - v4

r=me losing the G_SIGNAL_ACTION.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118824</commentid>
    <comment_count>37</comment_count>
    <who name="Jan Alonzo">jmalonzo</who>
    <bug_when>2009-04-25 02:20:52 -0700</bug_when>
    <thetext>(In reply to comment #36)
&gt; (From update of attachment 29783 [review])
&gt; r=me losing the G_SIGNAL_ACTION.
&gt; 

Landed in r42864, r42865 and r42866 respectively. Thanks!
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>119704</commentid>
    <comment_count>38</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2009-05-02 14:55:37 -0700</bug_when>
    <thetext>(In reply to comment #37)
&gt; Landed in r42864, r42865 and r42866 respectively. Thanks!
&gt; 

r42866 causes regressions, noticed in failures of these tests:
dom/xhtml/level3/core/entitygetinputencoding03.xhtml
dom/xhtml/level3/core/entitygetinputencoding04.xhtml
dom/xhtml/level3/core/entitygetxmlencoding02.xhtml
dom/xhtml/level3/core/entitygetxmlencoding03.xhtml
dom/xhtml/level3/core/entitygetxmlencoding04.xhtml
dom/xhtml/level3/core/entitygetxmlversion03.xhtml
dom/xhtml/level3/core/entitygetxmlversion04.xhtml
dom/xhtml/level3/core/nodegetbaseuri16.xhtml
dom/xhtml/level3/core/nodegetbaseuri19.xhtml
dom/xhtml/level3/core/nodegetbaseuri20.xhtml

They all time out. The problem was tracked down to changes in ResourceHandleSoup.cpp[1] - when facing an invalid URL, ResourceHandle::scheduleFailure is now called. This results in calling ResourceHandle::fireFailure, but ResourceHandle::client() is an empty client (a simple ResourceClient, nothing more specific), therefor call to ResourceHandle::client()-&gt;cannotShowUrl(this) does nothing (helpful).

There might be some other regressions, but they went on unnoticed.

The fix might be to go back to using an idle function, but the current approach (using scheduleFailure) is much better if we can get it to work.

[1]: http://trac.webkit.org/changeset/42866#file3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>119705</commentid>
    <comment_count>39</comment_count>
    <who name="Jan Alonzo">jmalonzo</who>
    <bug_when>2009-05-02 15:09:11 -0700</bug_when>
    <thetext>(In reply to comment #38)
&gt; (In reply to comment #37)
&gt; &gt; Landed in r42864, r42865 and r42866 respectively. Thanks!
&gt; &gt; 
&gt; 
&gt; r42866 causes regressions, noticed in failures of these tests:
&gt; dom/xhtml/level3/core/entitygetinputencoding03.xhtml
&gt; dom/xhtml/level3/core/entitygetinputencoding04.xhtml
&gt; dom/xhtml/level3/core/entitygetxmlencoding02.xhtml
&gt; dom/xhtml/level3/core/entitygetxmlencoding03.xhtml
&gt; dom/xhtml/level3/core/entitygetxmlencoding04.xhtml
&gt; dom/xhtml/level3/core/entitygetxmlversion03.xhtml
&gt; dom/xhtml/level3/core/entitygetxmlversion04.xhtml
&gt; dom/xhtml/level3/core/nodegetbaseuri16.xhtml
&gt; dom/xhtml/level3/core/nodegetbaseuri19.xhtml
&gt; dom/xhtml/level3/core/nodegetbaseuri20.xhtml
&gt; 
&gt; They all time out. The problem was tracked down to changes in
&gt; ResourceHandleSoup.cpp[1] - when facing an invalid URL,
&gt; ResourceHandle::scheduleFailure is now called. This results in calling
&gt; ResourceHandle::fireFailure, but ResourceHandle::client() is an empty client (a
&gt; simple ResourceClient, nothing more specific), therefor call to
&gt; ResourceHandle::client()-&gt;cannotShowUrl(this) does nothing (helpful).
&gt; 
&gt; There might be some other regressions, but they went on unnoticed.
&gt; 
&gt; The fix might be to go back to using an idle function, but the current approach
&gt; (using scheduleFailure) is much better if we can get it to work.
&gt; 
&gt; [1]: http://trac.webkit.org/changeset/42866#file3
&gt; 

Which URL in these tests are timing out and why are these tests in Skipped? We need to figure out why it&apos;s timing out or rollback the change altogether (it&apos;s not as easy as changing it to scheduleFailure()).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>119709</commentid>
    <comment_count>40</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2009-05-02 15:43:21 -0700</bug_when>
    <thetext>(In reply to comment #39)
&gt; Which URL in these tests are timing out and why are these tests in Skipped?
&gt;

They all seem to be timing out when loading &apos;external_foobr.ent&apos;.
When grepping, it can be seen that this URL is being used in every file at line 4:
&lt;!ENTITY ent2 SYSTEM &apos;external_foobr.ent&apos;&gt; [1]

[1] http://trac.webkit.org/browser/trunk/LayoutTests/dom/xhtml/level3/core/entitygetinputencoding04.xhtml#L4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>120004</commentid>
    <comment_count>41</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2009-05-05 12:00:50 -0700</bug_when>
    <thetext>FWIW, the tests were disabled because the bot was down, and it was requested that when it was brought up, that we drew a new base line to start from. What do you guys think of openning another bug report to handle the regression?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>29094</attachid>
            <date>2009-03-30 16:18:55 -0700</date>
            <delta_ts>2009-04-02 19:51:56 -0700</delta_ts>
            <desc>Cleaned up patch from Luca Bruno in bug #18297</desc>
            <filename>0001-Handle-errors-when-loading-websites.patch</filename>
            <type>text/plain</type>
            <size>8659</size>
            <attacher name="Diego Escalante Urrelo">diegoe</attacher>
            
              <data encoding="base64">RnJvbSBkODkwMzNlMWVkNzM5MWQ3ZGE3ODJjYTFhMDM3YTE2OTU0NTQzNTYwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBEaWVnbyBFc2NhbGFudGUgVXJyZWxvIDxkaWVnb2VAZ25vbWUu
b3JnPgpEYXRlOiBNb24sIDMwIE1hciAyMDA5IDE4OjE4OjA1IC0wNTAwClN1YmplY3Q6IFtQQVRD
SF0gSGFuZGxlIGVycm9ycyB3aGVuIGxvYWRpbmcgd2Vic2l0ZXMKClBhdGNoIGJ5IEx1Y2EgQnJ1
bm8sIHJlZnJlc2hlZC4KLS0tCiBHTlVtYWtlZmlsZS5hbSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8ICAgIDQgKy0KIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRHdGsuY3BwIHwgICAxMCArKystCiBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXQu
aCAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDEgKwogV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0d2Vidmlldy5jcHAgICAgICAgICAgICAgICAgfCAgIDUyICsrKysrKysrKysrKysrKysrKysr
CiBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmggICAgICAgICAgICAgICAgICB8ICAg
IDQgKysKIDUgZmlsZXMgY2hhbmdlZCwgNjggaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkK
CmRpZmYgLS1naXQgYS9HTlVtYWtlZmlsZS5hbSBiL0dOVW1ha2VmaWxlLmFtCmluZGV4IDEzY2Y1
ZWUuLjkxZTNiYmEgMTAwNjQ0Ci0tLSBhL0dOVW1ha2VmaWxlLmFtCisrKyBiL0dOVW1ha2VmaWxl
LmFtCkBAIC0zMDcsNiArMzA3LDcgQEAgd2Via2l0Z3RrX2hfYXBpICs9IFwKIAlXZWJLaXQvZ3Rr
L3dlYmtpdC93ZWJraXQuaCBcCiAJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0ZGVmaW5lcy5oIFwK
IAlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRkb3dubG9hZC5oIFwKKwlXZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXRlcnJvcnMuaCBcCiAJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0bmV0d29ya3JlcXVl
c3QuaCBcCiAJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0c291cGF1dGhkaWFsb2cuaCBcCiAJV2Vi
S2l0L2d0ay93ZWJraXQvd2Via2l0dmVyc2lvbi5oIFwKQEAgLTM0MSw2ICszNDIsOCBAQCB3ZWJr
aXRndGtfc291cmNlcyArPSBcCiAJV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JD
bGllbnRHdGsuaCBcCiAJV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9QYXN0ZWJvYXJkSGVscGVy
R3RrLmNwcCBcCiAJV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9QYXN0ZWJvYXJkSGVscGVyR3Rr
LmggXAorCVdlYktpdC9ndGsvd2Via2l0L3dlYmtpdGRvd25sb2FkLmNwcCBcCisJV2ViS2l0L2d0
ay93ZWJraXQvd2Via2l0ZXJyb3JzLmNwcCBcCiAJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0bmV0
d29ya3JlcXVlc3QuY3BwIFwKIAlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2YXRlLmNwcCBc
CiAJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5oIFwKQEAgLTM1Myw3ICszNTYsNiBA
QCB3ZWJraXRndGtfc291cmNlcyArPSBcCiAJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VibmF2
aWdhdGlvbmFjdGlvbi5jcHAgXAogCVdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnBvbGljeWRl
Y2lzaW9uLmNwcCBcCiAJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vic2V0dGluZ3MuY3BwIFwK
LQlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRkb3dubG9hZC5jcHAgXAogCVdlYktpdC9ndGsvd2Vi
a2l0L3dlYmtpdHdlYnZpZXcuY3BwIFwKIAlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ3aW5k
b3dmZWF0dXJlcy5jcHAKIApkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudEd0ay5jcHAgYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50R3RrLmNwcAppbmRleCA5N2MzZWIyLi4yYjMxZjY0IDEwMDY0NAotLS0gYS9X
ZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAorKysgYi9X
ZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcApAQCAtNDks
NiArNDksNyBAQAogI2luY2x1ZGUgIlByb2dyZXNzVHJhY2tlci5oIgogI2luY2x1ZGUgIkpTRE9N
QmluZGluZy5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJ3ZWJr
aXRlcnJvcnMuaCIKICNpbmNsdWRlICJ3ZWJraXR3ZWJ2aWV3LmgiCiAjaW5jbHVkZSAid2Via2l0
bmV0d29ya3JlcXVlc3QuaCIKICNpbmNsdWRlICJ3ZWJraXR3ZWJmcmFtZS5oIgpAQCAtNzk5LDkg
KzgwMCwxNCBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZpbmlzaExvYWRp
bmcoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nCiAgICAgbm90SW1wbGVtZW50ZWQoKTsK
IH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGYWlsTG9hZGluZyhEb2N1
bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VFcnJv
ciYpCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZhaWxMb2FkaW5nKERvY3Vt
ZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9y
JmVycm9yKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgV2ViS2l0V2ViVmlldyogd2Vi
VmlldyA9IGdldFZpZXdGcm9tRnJhbWUobV9mcmFtZSk7CisgICAgR0Vycm9yKiBnRXJyb3IgPSBn
X2Vycm9yX25ldyhnX3F1YXJrX2Zyb21fc3RyaW5nKGVycm9yLmRvbWFpbigpLnV0ZjgoKS5kYXRh
KCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IuZXJyb3JDb2RlKCks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvci5sb2NhbGl6ZWREZXNjcmlw
dGlvbigpLnV0ZjgoKS5kYXRhKCkpOworICAgIGdib29sZWFuIHJldHZhbDsKKyAgICBnX3NpZ25h
bF9lbWl0X2J5X25hbWUod2ViVmlldywgImxvYWQtZmFpbGVkIiwgbV9mcmFtZSwgZXJyb3IuZmFp
bGluZ1VSTCgpLnV0ZjgoKS5kYXRhKCksIGdFcnJvciwgJnJldHZhbCk7CiB9CiAKIGJvb2wgRnJh
bWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKERv
Y3VtZW50TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYsIGludCBsZW5ndGgpCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXQu
aCBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdC5oCmluZGV4IGMyMjE2NWUuLmZlNWU5NDQgMTAw
NjQ0Ci0tLSBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdC5oCisrKyBiL1dlYktpdC9ndGsvd2Vi
a2l0L3dlYmtpdC5oCkBAIC0yNCw2ICsyNCw3IEBACiAjaW5jbHVkZSA8d2Via2l0L3dlYmtpdHZl
cnNpb24uaD4KICNpbmNsdWRlIDx3ZWJraXQvd2Via2l0ZGVmaW5lcy5oPgogI2luY2x1ZGUgPHdl
YmtpdC93ZWJraXRkb3dubG9hZC5oPgorI2luY2x1ZGUgPHdlYmtpdC93ZWJraXRlcnJvcnMuaD4K
ICNpbmNsdWRlIDx3ZWJraXQvd2Via2l0bmV0d29ya3JlcXVlc3QuaD4KICNpbmNsdWRlIDx3ZWJr
aXQvd2Via2l0c291cGF1dGhkaWFsb2cuaD4KICNpbmNsdWRlIDx3ZWJraXQvd2Via2l0d2ViZnJh
bWUuaD4KZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwIGIv
V2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKaW5kZXggN2YzNzk1ZS4uNTUwYzA0
NiAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKKysrIGIv
V2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKIAogI2luY2x1ZGUgIndlYmtpdGRvd25sb2FkLmgiCisjaW5jbHVk
ZSAid2Via2l0ZXJyb3JzLmgiCiAjaW5jbHVkZSAid2Via2l0d2Vidmlldy5oIgogI2luY2x1ZGUg
IndlYmtpdGVudW10eXBlcy5oIgogI2luY2x1ZGUgIndlYmtpdG1hcnNoYWwuaCIKQEAgLTEyMiw2
ICsxMjMsNyBAQCBlbnVtIHsKICAgICBMT0FEX0NPTU1JVFRFRCwKICAgICBMT0FEX1BST0dSRVNT
X0NIQU5HRUQsCiAgICAgTE9BRF9GSU5JU0hFRCwKKyAgICBMT0FEX0ZBSUxFRCwKICAgICBUSVRM
RV9DSEFOR0VELAogICAgIEhPVkVSSU5HX09WRVJfTElOSywKICAgICBQT1BVTEFURV9QT1BVUCwK
QEAgLTg1Niw2ICs4NTgsMzEgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X3JlYWxfcGFz
dGVfY2xpcGJvYXJkKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgZnJhbWUtPmVkaXRvcigp
LT5jb21tYW5kKCJQYXN0ZSIpLmV4ZWN1dGUoKTsKIH0KIAorc3RhdGljIGdib29sZWFuIHdlYmtp
dF93ZWJfdmlld19yZWFsX2xvYWRfZmFpbGVkKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktp
dFdlYkZyYW1lKiBmcmFtZSwgY29uc3QgZ2NoYXIqIHVyaSwgR0Vycm9yICplcnJvcikKK3sKKyAg
ICBHdGtXaWRnZXQqIHdpbmRvdyA9IGd0a193aWRnZXRfZ2V0X3RvcGxldmVsKEdUS19XSURHRVQo
d2ViVmlldykpOworICAgIEd0a1dpZGdldCogZGlhbG9nID0gZ3RrX21lc3NhZ2VfZGlhbG9nX25l
dyhHVEtfV0lER0VUX1RPUExFVkVMKHdpbmRvdykgPyBHVEtfV0lORE9XKHdpbmRvdykgOiAwLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVEtfRElBTE9H
X0RFU1RST1lfV0lUSF9QQVJFTlQsIEdUS19NRVNTQUdFX0VSUk9SLCBHVEtfQlVUVE9OU19PSywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkVycm9yIGNv
ZGU6ICVkLlxuVVJJOiAlcy5cblxuJXMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBlcnJvci0+Y29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdXJpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBlcnJvci0+bWVzc2FnZSk7CisgICAgY29uc3QgZ2NoYXIqIGRvbWFp
bjsKKyAgICBpZiAoZXJyb3ItPmRvbWFpbiA9PSBXRUJLSVRfTkVUV09SS19FUlJPUikKKyAgICAg
ICAgZG9tYWluID0gIk5ldHdvcmsiOworICAgIGVsc2UKKyAgICAgICAgZG9tYWluID0gIlVua25v
d24iOworICAgIGdjaGFyKiB0aXRsZSA9IGdfc3RyY29uY2F0KCJFcnJvciAtICIsIGRvbWFpbiwg
TlVMTCk7CisgICAgZ3RrX3dpbmRvd19zZXRfdGl0bGUoR1RLX1dJTkRPVyhkaWFsb2cpLCB0aXRs
ZSk7CisgICAgZ19mcmVlKHRpdGxlKTsKKworICAgIGd0a19kaWFsb2dfc2V0X2RlZmF1bHRfcmVz
cG9uc2UoR1RLX0RJQUxPRyhkaWFsb2cpLCBHVEtfUkVTUE9OU0VfT0spOworICAgIGdfc2lnbmFs
X2Nvbm5lY3QoR19PQkpFQ1QoZGlhbG9nKSwgInJlc3BvbnNlIiwgR19DQUxMQkFDSyhndGtfd2lk
Z2V0X2Rlc3Ryb3kpLCBOVUxMKTsKKyAgICBndGtfd2lkZ2V0X3Nob3coR1RLX1dJREdFVChkaWFs
b2cpKTsKKworICAgIHJldHVybiBUUlVFOworfQorCiBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3Zp
ZXdfZGlzcG9zZShHT2JqZWN0KiBvYmplY3QpCiB7CiAgICAgV2ViS2l0V2ViVmlldyogd2ViVmll
dyA9IFdFQktJVF9XRUJfVklFVyhvYmplY3QpOwpAQCAtMTI3MCw2ICsxMjk3LDMwIEBAIHN0YXRp
YyB2b2lkIHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KFdlYktpdFdlYlZpZXdDbGFzcyogd2Vi
Vmlld0NsYXNzKQogICAgICAgICAgICAgV0VCS0lUX1RZUEVfV0VCX0ZSQU1FKTsKIAogICAgIC8q
KgorICAgICAqIFdlYktpdFdlYlZpZXc6OmxvYWQtZmFpbGVkOgorICAgICAqIEB3ZWJfdmlldzog
dGhlIG9iamVjdCB3aGljaCByZWNlaXZlZCB0aGUgc2lnbmFsCisgICAgICogQGZyYW1lOiB0aGUg
cmVsZXZhbnQgZnJhbWUKKyAgICAgKiBAdXJpOiB0aGUgcmVzb3VyY2UgVVJJCisgICAgICogQGVy
cm9yOiB0aGUgcmVzb3VyY2UgZXJyb3IKKyAgICAgKiBAcmV0dXJuOiBUUlVFIGlmIHRoZSBlcnJv
ciBoYXMgYmVlbiBoYW5kbGVkIGFuZCB0byBzdG9wIG90aGVyIGhhbmRsZXJzIGZyb20gYmVpbmcg
aW52b2tlZCBmb3IgdGhlIGV2ZW50LiBGQUxTRSB0byBwcm9wYWdhdGUgdGhlIGV2ZW50IGZ1cnRo
ZXIuCisgICAgICoKKyAgICAgKiBUaGUgOjpsb2FkLWZhaWxlZCBzaWduYWwgaXMgZW1pdHRlZCB3
aGVuZXZlciBhbiBlcnJvciBvY2N1cnMgd2hpbGUgbG9hZGluZyBhIHJlc291cmNlLgorICAgICAq
CisgICAgICogRGVmYXVsdCBoYW5kbGVyIHdpbGwgZGlzcGxheSBhbiBlcnJvciBtZXNzYWdlIGRp
YWxvZy4KKyAgICAgKi8KKyAgICB3ZWJraXRfd2ViX3ZpZXdfc2lnbmFsc1tMT0FEX0ZBSUxFRF0g
PSBnX3NpZ25hbF9uZXcoImxvYWQtZmFpbGVkIiwKKyAgICAgICAgICAgIEdfVFlQRV9GUk9NX0NM
QVNTKHdlYlZpZXdDbGFzcyksCisgICAgICAgICAgICAoR1NpZ25hbEZsYWdzKShHX1NJR05BTF9S
VU5fTEFTVCB8IEdfU0lHTkFMX0FDVElPTiksCisgICAgICAgICAgICBHX1NUUlVDVF9PRkZTRVQo
V2ViS2l0V2ViVmlld0NsYXNzLCBsb2FkX2ZhaWxlZCksCisgICAgICAgICAgICBnX3NpZ25hbF9h
Y2N1bXVsYXRvcl90cnVlX2hhbmRsZWQsCisgICAgICAgICAgICBOVUxMLAorICAgICAgICAgICAg
d2Via2l0X21hcnNoYWxfQk9PTEVBTl9fT0JKRUNUX1NUUklOR19QT0lOVEVSLAorICAgICAgICAg
ICAgR19UWVBFX0JPT0xFQU4sIDMsCisgICAgICAgICAgICBXRUJLSVRfVFlQRV9XRUJfRlJBTUUs
CisgICAgICAgICAgICBHX1RZUEVfU1RSSU5HLAorICAgICAgICAgICAgR19UWVBFX1BPSU5URVIp
OworCisgICAgLyoqCiAgICAgICogV2ViS2l0V2ViVmlldzo6dGl0bGUtY2hhbmdlZDoKICAgICAg
KiBAd2ViX3ZpZXc6IHRoZSBvYmplY3Qgb24gd2hpY2ggdGhlIHNpZ25hbCBpcyBlbWl0dGVkCiAg
ICAgICogQGZyYW1lOiB0aGUgbWFpbiBmcmFtZQpAQCAtMTU0Miw2ICsxNTkzLDcgQEAgc3RhdGlj
IHZvaWQgd2Via2l0X3dlYl92aWV3X2NsYXNzX2luaXQoV2ViS2l0V2ViVmlld0NsYXNzKiB3ZWJW
aWV3Q2xhc3MpCiAgICAgd2ViVmlld0NsYXNzLT5jdXRfY2xpcGJvYXJkID0gd2Via2l0X3dlYl92
aWV3X3JlYWxfY3V0X2NsaXBib2FyZDsKICAgICB3ZWJWaWV3Q2xhc3MtPmNvcHlfY2xpcGJvYXJk
ID0gd2Via2l0X3dlYl92aWV3X3JlYWxfY29weV9jbGlwYm9hcmQ7CiAgICAgd2ViVmlld0NsYXNz
LT5wYXN0ZV9jbGlwYm9hcmQgPSB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9wYXN0ZV9jbGlwYm9hcmQ7
CisgICAgd2ViVmlld0NsYXNzLT5sb2FkX2ZhaWxlZCA9IHdlYmtpdF93ZWJfdmlld19yZWFsX2xv
YWRfZmFpbGVkOwogICAgIHdlYlZpZXdDbGFzcy0+bW92ZV9jdXJzb3IgPSB3ZWJraXRfd2ViX3Zp
ZXdfcmVhbF9tb3ZlX2N1cnNvcjsKIAogICAgIEdPYmplY3RDbGFzcyogb2JqZWN0Q2xhc3MgPSBH
X09CSkVDVF9DTEFTUyh3ZWJWaWV3Q2xhc3MpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay93ZWJr
aXQvd2Via2l0d2Vidmlldy5oIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5oCmlu
ZGV4IDYxMTU0NGQuLjM4NTQzMmIgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtp
dHdlYnZpZXcuaAorKysgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmgKQEAgLTEw
Myw2ICsxMDMsMTAgQEAgc3RydWN0IF9XZWJLaXRXZWJWaWV3Q2xhc3MgewogICAgIHZvaWQgICAg
ICAgICAgICAgICAgICAgICAgICgqIGN1dF9jbGlwYm9hcmQpICAgICAgICAgIChXZWJLaXRXZWJW
aWV3ICAgICAgICAqd2ViX3ZpZXcpOwogICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICgq
IGNvcHlfY2xpcGJvYXJkKSAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAqd2ViX3ZpZXcp
OwogICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICgqIHBhc3RlX2NsaXBib2FyZCkgICAg
ICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAqd2ViX3ZpZXcpOworICAgIGdib29sZWFuICAgICAg
ICAgICAgICAgICAgICgqbG9hZF9mYWlsZWQpICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAg
ICAgICAqd2ViX3ZpZXcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFdlYktpdFdlYkZyYW1lICAgICAgICpmcmFtZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Z2NoYXIgICAgICAgICAgKnVyaSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0Vycm9yICAgICAgICAgICAgICAgKmVycm9yKTsKICAg
ICBnYm9vbGVhbiAgICAgICAgICAgICAgICAgICAoKiBtb3ZlX2N1cnNvcikgICAgICAgICAgICAo
V2ViS2l0V2ViVmlldyAgICAgICAgKndlYl92aWV3LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHdGtNb3ZlbWVudFN0ZXAgICAgICAg
c3RlcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZ2ludCAgICAgICAgICAgICAgICAgIGNvdW50KTsKLS0gCjEuNi4wLjQKCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>29216</attachid>
            <date>2009-04-02 19:51:56 -0700</date>
            <delta_ts>2009-04-02 19:51:56 -0700</delta_ts>
            <desc>Updated patch to include new files.</desc>
            <filename>0001-Handle-errors-when-loading-websites.patch</filename>
            <type>text/plain</type>
            <size>11607</size>
            <attacher name="Diego Escalante Urrelo">diegoe</attacher>
            
              <data encoding="base64">RnJvbSA3M2M1ZjIxMzU1ZWY2NGE0NDNmMGI5ZWEzZGIwOTcyZGM5ZTZjMjk5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBEaWVnbyBFc2NhbGFudGUgVXJyZWxvIDxkaWVnb2VAZ25vbWUu
b3JnPgpEYXRlOiBNb24sIDMwIE1hciAyMDA5IDE4OjE4OjA1IC0wNTAwClN1YmplY3Q6IFtQQVRD
SF0gSGFuZGxlIGVycm9ycyB3aGVuIGxvYWRpbmcgd2Vic2l0ZXMKClBhdGNoIGJ5IEx1Y2EgQnJ1
bm8sIHJlZnJlc2hlZC4KLS0tCiBHTlVtYWtlZmlsZS5hbSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8ICAgIDQgKy0KIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRHdGsuY3BwIHwgICAxMCArKystCiBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXQu
aCAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDEgKwogV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0ZXJyb3JzLmNwcCAgICAgICAgICAgICAgICAgfCAgIDMxICsrKysrKysrKysrKwogV2ViS2l0
L2d0ay93ZWJraXQvd2Via2l0ZXJyb3JzLmggICAgICAgICAgICAgICAgICAgfCAgIDQyICsrKysr
KysrKysrKysrKysKIFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwICAgICAgICAg
ICAgICAgIHwgICA1MiArKysrKysrKysrKysrKysrKysrKwogV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0d2Vidmlldy5oICAgICAgICAgICAgICAgICAgfCAgICA0ICsrCiA3IGZpbGVzIGNoYW5nZWQs
IDE0MSBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IFdl
YktpdC9ndGsvd2Via2l0L3dlYmtpdGVycm9ycy5jcHAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBXZWJL
aXQvZ3RrL3dlYmtpdC93ZWJraXRlcnJvcnMuaAoKZGlmZiAtLWdpdCBhL0dOVW1ha2VmaWxlLmFt
IGIvR05VbWFrZWZpbGUuYW0KaW5kZXggMTNjZjVlZS4uOTFlM2JiYSAxMDA2NDQKLS0tIGEvR05V
bWFrZWZpbGUuYW0KKysrIGIvR05VbWFrZWZpbGUuYW0KQEAgLTMwNyw2ICszMDcsNyBAQCB3ZWJr
aXRndGtfaF9hcGkgKz0gXAogCVdlYktpdC9ndGsvd2Via2l0L3dlYmtpdC5oIFwKIAlXZWJLaXQv
Z3RrL3dlYmtpdC93ZWJraXRkZWZpbmVzLmggXAogCVdlYktpdC9ndGsvd2Via2l0L3dlYmtpdGRv
d25sb2FkLmggXAorCVdlYktpdC9ndGsvd2Via2l0L3dlYmtpdGVycm9ycy5oIFwKIAlXZWJLaXQv
Z3RrL3dlYmtpdC93ZWJraXRuZXR3b3JrcmVxdWVzdC5oIFwKIAlXZWJLaXQvZ3RrL3dlYmtpdC93
ZWJraXRzb3VwYXV0aGRpYWxvZy5oIFwKIAlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR2ZXJzaW9u
LmggXApAQCAtMzQxLDYgKzM0Miw4IEBAIHdlYmtpdGd0a19zb3VyY2VzICs9IFwKIAlXZWJLaXQv
Z3RrL1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEd0ay5oIFwKIAlXZWJLaXQvZ3RrL1dl
YkNvcmVTdXBwb3J0L1Bhc3RlYm9hcmRIZWxwZXJHdGsuY3BwIFwKIAlXZWJLaXQvZ3RrL1dlYkNv
cmVTdXBwb3J0L1Bhc3RlYm9hcmRIZWxwZXJHdGsuaCBcCisJV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0ZG93bmxvYWQuY3BwIFwKKwlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRlcnJvcnMuY3BwIFwK
IAlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRuZXR3b3JrcmVxdWVzdC5jcHAgXAogCVdlYktpdC9n
dGsvd2Via2l0L3dlYmtpdHByaXZhdGUuY3BwIFwKIAlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRw
cml2YXRlLmggXApAQCAtMzUzLDcgKzM1Niw2IEBAIHdlYmtpdGd0a19zb3VyY2VzICs9IFwKIAlX
ZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJuYXZpZ2F0aW9uYWN0aW9uLmNwcCBcCiAJV2ViS2l0
L2d0ay93ZWJraXQvd2Via2l0d2VicG9saWN5ZGVjaXNpb24uY3BwIFwKIAlXZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXR3ZWJzZXR0aW5ncy5jcHAgXAotCVdlYktpdC9ndGsvd2Via2l0L3dlYmtpdGRv
d25sb2FkLmNwcCBcCiAJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAgXAogCVdl
YktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYndpbmRvd2ZlYXR1cmVzLmNwcAogCmRpZmYgLS1naXQg
YS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcCBiL1dl
YktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCmluZGV4IDk3
YzNlYjIuLjJiMzFmNjQgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRHdGsuY3BwCisrKyBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRHdGsuY3BwCkBAIC00OSw2ICs0OSw3IEBACiAjaW5jbHVkZSAiUHJvZ3Jl
c3NUcmFja2VyLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAiU2NyaXB0
Q29udHJvbGxlci5oIgorI2luY2x1ZGUgIndlYmtpdGVycm9ycy5oIgogI2luY2x1ZGUgIndlYmtp
dHdlYnZpZXcuaCIKICNpbmNsdWRlICJ3ZWJraXRuZXR3b3JrcmVxdWVzdC5oIgogI2luY2x1ZGUg
IndlYmtpdHdlYmZyYW1lLmgiCkBAIC03OTksOSArODAwLDE0IEBAIHZvaWQgRnJhbWVMb2FkZXJD
bGllbnQ6OmRpc3BhdGNoRGlkRmluaXNoTG9hZGluZyhEb2N1bWVudExvYWRlciosIHVuc2lnbmVk
IGxvbmcKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaERpZEZhaWxMb2FkaW5nKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBp
ZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJikKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6
OmRpc3BhdGNoRGlkRmFpbExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImZXJyb3IpCiB7Ci0gICAgbm90SW1wbGVtZW50
ZWQoKTsKKyAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gZ2V0Vmlld0Zyb21GcmFtZShtX2Zy
YW1lKTsKKyAgICBHRXJyb3IqIGdFcnJvciA9IGdfZXJyb3JfbmV3KGdfcXVhcmtfZnJvbV9zdHJp
bmcoZXJyb3IuZG9tYWluKCkudXRmOCgpLmRhdGEoKSksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBlcnJvci5lcnJvckNvZGUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKCkudXRmOCgpLmRhdGEoKSk7CisgICAg
Z2Jvb2xlYW4gcmV0dmFsOworICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZSh3ZWJWaWV3LCAibG9h
ZC1mYWlsZWQiLCBtX2ZyYW1lLCBlcnJvci5mYWlsaW5nVVJMKCkudXRmOCgpLmRhdGEoKSwgZ0Vy
cm9yLCAmcmV0dmFsKTsKIH0KIAogYm9vbCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRM
b2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUoRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgaW50IGxlbmd0aCkKZGlmZiAtLWdp
dCBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdC5oIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0
LmgKaW5kZXggYzIyMTY1ZS4uZmU1ZTk0NCAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay93ZWJraXQv
d2Via2l0LmgKKysrIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0LmgKQEAgLTI0LDYgKzI0LDcg
QEAKICNpbmNsdWRlIDx3ZWJraXQvd2Via2l0dmVyc2lvbi5oPgogI2luY2x1ZGUgPHdlYmtpdC93
ZWJraXRkZWZpbmVzLmg+CiAjaW5jbHVkZSA8d2Via2l0L3dlYmtpdGRvd25sb2FkLmg+CisjaW5j
bHVkZSA8d2Via2l0L3dlYmtpdGVycm9ycy5oPgogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXRuZXR3
b3JrcmVxdWVzdC5oPgogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXRzb3VwYXV0aGRpYWxvZy5oPgog
I2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJmcmFtZS5oPgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0
ay93ZWJraXQvd2Via2l0ZXJyb3JzLmNwcCBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdGVycm9y
cy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2RhNWRmZQotLS0gL2Rl
di9udWxsCisrKyBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdGVycm9ycy5jcHAKQEAgLTAsMCAr
MSwzMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBMdWNhIEJydW5vIDxsZXRoYWxtYW44
OEBnbWFpbC5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoK
KyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisg
KiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIndlYmtpdGVycm9y
cy5oIgorCitleHRlcm4gIkMiIHsKKworR1F1YXJrIHdlYmtpdF9uZXR3b3JrX2Vycm9yX3F1YXJr
ICh2b2lkKQoreworICAgIHJldHVybiBnX3F1YXJrX2Zyb21fc3RhdGljX3N0cmluZygid2Via2l0
LW5ldHdvcmstZXJyb3ItcXVhcmsiKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0ZXJyb3JzLmggYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRlcnJvcnMuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNjk0MjY1Ci0tLSAvZGV2L251bGwK
KysrIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0ZXJyb3JzLmgKQEAgLTAsMCArMSw0MiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBMdWNhIEJydW5vIDxsZXRoYWxtYW44OEBnbWFpbC5j
b20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0
ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICov
CisKKyNpZm5kZWYgV0VCS0lUX0VSUk9SU19ICisjZGVmaW5lIFdFQktJVF9FUlJPUlNfSAorCisj
aW5jbHVkZSA8Z2xpYi5oPgorCisjaW5jbHVkZSA8d2Via2l0L3dlYmtpdGRlZmluZXMuaD4KKwor
R19CRUdJTl9ERUNMUworCisjZGVmaW5lIFdFQktJVF9ORVRXT1JLX0VSUk9SIHdlYmtpdF9uZXR3
b3JrX2Vycm9yX3F1YXJrICgpCisKK2VudW0KK3sKKyAgICBXRUJLSVRfTkVUV09SS19FUlJPUl9U
UkFOU1BPUlQsCisgICAgV0VCS0lUX05FVFdPUktfRVJST1JfVU5LTk9XTl9QUk9UT0NPTAorfTsK
KworV0VCS0lUX0FQSSBHUXVhcmsKK3dlYmtpdF9uZXR3b3JrX2Vycm9yX3F1YXJrICh2b2lkKTsK
KworR19FTkRfREVDTFMKKworI2VuZGlmIC8qIFdFQktJVF9FUlJPUlNfSCAqLwpkaWZmIC0tZ2l0
IGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAgYi9XZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXR3ZWJ2aWV3LmNwcAppbmRleCA3ZjM3OTVlLi41NTBjMDQ2IDEwMDY0NAotLS0gYS9X
ZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAorKysgYi9XZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXR3ZWJ2aWV3LmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogCiAjaW5jbHVkZSAid2Via2l0ZG93bmxvYWQuaCIKKyNpbmNsdWRlICJ3ZWJraXRlcnJvcnMu
aCIKICNpbmNsdWRlICJ3ZWJraXR3ZWJ2aWV3LmgiCiAjaW5jbHVkZSAid2Via2l0ZW51bXR5cGVz
LmgiCiAjaW5jbHVkZSAid2Via2l0bWFyc2hhbC5oIgpAQCAtMTIyLDYgKzEyMyw3IEBAIGVudW0g
ewogICAgIExPQURfQ09NTUlUVEVELAogICAgIExPQURfUFJPR1JFU1NfQ0hBTkdFRCwKICAgICBM
T0FEX0ZJTklTSEVELAorICAgIExPQURfRkFJTEVELAogICAgIFRJVExFX0NIQU5HRUQsCiAgICAg
SE9WRVJJTkdfT1ZFUl9MSU5LLAogICAgIFBPUFVMQVRFX1BPUFVQLApAQCAtODU2LDYgKzg1OCwz
MSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9wYXN0ZV9jbGlwYm9hcmQoV2Vi
S2l0V2ViVmlldyogd2ViVmlldykKICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIlBhc3Rl
IikuZXhlY3V0ZSgpOwogfQogCitzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X3JlYWxf
bG9hZF9mYWlsZWQoV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0V2ViRnJhbWUqIGZyYW1l
LCBjb25zdCBnY2hhciogdXJpLCBHRXJyb3IgKmVycm9yKQoreworICAgIEd0a1dpZGdldCogd2lu
ZG93ID0gZ3RrX3dpZGdldF9nZXRfdG9wbGV2ZWwoR1RLX1dJREdFVCh3ZWJWaWV3KSk7CisgICAg
R3RrV2lkZ2V0KiBkaWFsb2cgPSBndGtfbWVzc2FnZV9kaWFsb2dfbmV3KEdUS19XSURHRVRfVE9Q
TEVWRUwod2luZG93KSA/IEdUS19XSU5ET1cod2luZG93KSA6IDAsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdUS19ESUFMT0dfREVTVFJPWV9XSVRIX1BB
UkVOVCwgR1RLX01FU1NBR0VfRVJST1IsIEdUS19CVVRUT05TX09LLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRXJyb3IgY29kZTogJWQuXG5VUkk6ICVz
LlxuXG4lcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGVycm9yLT5jb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1cmksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGVycm9yLT5tZXNzYWdlKTsKKyAgICBjb25zdCBnY2hhciogZG9tYWluOworICAgIGlmIChlcnJv
ci0+ZG9tYWluID09IFdFQktJVF9ORVRXT1JLX0VSUk9SKQorICAgICAgICBkb21haW4gPSAiTmV0
d29yayI7CisgICAgZWxzZQorICAgICAgICBkb21haW4gPSAiVW5rbm93biI7CisgICAgZ2NoYXIq
IHRpdGxlID0gZ19zdHJjb25jYXQoIkVycm9yIC0gIiwgZG9tYWluLCBOVUxMKTsKKyAgICBndGtf
d2luZG93X3NldF90aXRsZShHVEtfV0lORE9XKGRpYWxvZyksIHRpdGxlKTsKKyAgICBnX2ZyZWUo
dGl0bGUpOworCisgICAgZ3RrX2RpYWxvZ19zZXRfZGVmYXVsdF9yZXNwb25zZShHVEtfRElBTE9H
KGRpYWxvZyksIEdUS19SRVNQT05TRV9PSyk7CisgICAgZ19zaWduYWxfY29ubmVjdChHX09CSkVD
VChkaWFsb2cpLCAicmVzcG9uc2UiLCBHX0NBTExCQUNLKGd0a193aWRnZXRfZGVzdHJveSksIE5V
TEwpOworICAgIGd0a193aWRnZXRfc2hvdyhHVEtfV0lER0VUKGRpYWxvZykpOworCisgICAgcmV0
dXJuIFRSVUU7Cit9CisKIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19kaXNwb3NlKEdPYmpl
Y3QqIG9iamVjdCkKIHsKICAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gV0VCS0lUX1dFQl9W
SUVXKG9iamVjdCk7CkBAIC0xMjcwLDYgKzEyOTcsMzAgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dl
Yl92aWV3X2NsYXNzX2luaXQoV2ViS2l0V2ViVmlld0NsYXNzKiB3ZWJWaWV3Q2xhc3MpCiAgICAg
ICAgICAgICBXRUJLSVRfVFlQRV9XRUJfRlJBTUUpOwogCiAgICAgLyoqCisgICAgICogV2ViS2l0
V2ViVmlldzo6bG9hZC1mYWlsZWQ6CisgICAgICogQHdlYl92aWV3OiB0aGUgb2JqZWN0IHdoaWNo
IHJlY2VpdmVkIHRoZSBzaWduYWwKKyAgICAgKiBAZnJhbWU6IHRoZSByZWxldmFudCBmcmFtZQor
ICAgICAqIEB1cmk6IHRoZSByZXNvdXJjZSBVUkkKKyAgICAgKiBAZXJyb3I6IHRoZSByZXNvdXJj
ZSBlcnJvcgorICAgICAqIEByZXR1cm46IFRSVUUgaWYgdGhlIGVycm9yIGhhcyBiZWVuIGhhbmRs
ZWQgYW5kIHRvIHN0b3Agb3RoZXIgaGFuZGxlcnMgZnJvbSBiZWluZyBpbnZva2VkIGZvciB0aGUg
ZXZlbnQuIEZBTFNFIHRvIHByb3BhZ2F0ZSB0aGUgZXZlbnQgZnVydGhlci4KKyAgICAgKgorICAg
ICAqIFRoZSA6OmxvYWQtZmFpbGVkIHNpZ25hbCBpcyBlbWl0dGVkIHdoZW5ldmVyIGFuIGVycm9y
IG9jY3VycyB3aGlsZSBsb2FkaW5nIGEgcmVzb3VyY2UuCisgICAgICoKKyAgICAgKiBEZWZhdWx0
IGhhbmRsZXIgd2lsbCBkaXNwbGF5IGFuIGVycm9yIG1lc3NhZ2UgZGlhbG9nLgorICAgICAqLwor
ICAgIHdlYmtpdF93ZWJfdmlld19zaWduYWxzW0xPQURfRkFJTEVEXSA9IGdfc2lnbmFsX25ldygi
bG9hZC1mYWlsZWQiLAorICAgICAgICAgICAgR19UWVBFX0ZST01fQ0xBU1Mod2ViVmlld0NsYXNz
KSwKKyAgICAgICAgICAgIChHU2lnbmFsRmxhZ3MpKEdfU0lHTkFMX1JVTl9MQVNUIHwgR19TSUdO
QUxfQUNUSU9OKSwKKyAgICAgICAgICAgIEdfU1RSVUNUX09GRlNFVChXZWJLaXRXZWJWaWV3Q2xh
c3MsIGxvYWRfZmFpbGVkKSwKKyAgICAgICAgICAgIGdfc2lnbmFsX2FjY3VtdWxhdG9yX3RydWVf
aGFuZGxlZCwKKyAgICAgICAgICAgIE5VTEwsCisgICAgICAgICAgICB3ZWJraXRfbWFyc2hhbF9C
T09MRUFOX19PQkpFQ1RfU1RSSU5HX1BPSU5URVIsCisgICAgICAgICAgICBHX1RZUEVfQk9PTEVB
TiwgMywKKyAgICAgICAgICAgIFdFQktJVF9UWVBFX1dFQl9GUkFNRSwKKyAgICAgICAgICAgIEdf
VFlQRV9TVFJJTkcsCisgICAgICAgICAgICBHX1RZUEVfUE9JTlRFUik7CisKKyAgICAvKioKICAg
ICAgKiBXZWJLaXRXZWJWaWV3Ojp0aXRsZS1jaGFuZ2VkOgogICAgICAqIEB3ZWJfdmlldzogdGhl
IG9iamVjdCBvbiB3aGljaCB0aGUgc2lnbmFsIGlzIGVtaXR0ZWQKICAgICAgKiBAZnJhbWU6IHRo
ZSBtYWluIGZyYW1lCkBAIC0xNTQyLDYgKzE1OTMsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2Vi
X3ZpZXdfY2xhc3NfaW5pdChXZWJLaXRXZWJWaWV3Q2xhc3MqIHdlYlZpZXdDbGFzcykKICAgICB3
ZWJWaWV3Q2xhc3MtPmN1dF9jbGlwYm9hcmQgPSB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9jdXRfY2xp
cGJvYXJkOwogICAgIHdlYlZpZXdDbGFzcy0+Y29weV9jbGlwYm9hcmQgPSB3ZWJraXRfd2ViX3Zp
ZXdfcmVhbF9jb3B5X2NsaXBib2FyZDsKICAgICB3ZWJWaWV3Q2xhc3MtPnBhc3RlX2NsaXBib2Fy
ZCA9IHdlYmtpdF93ZWJfdmlld19yZWFsX3Bhc3RlX2NsaXBib2FyZDsKKyAgICB3ZWJWaWV3Q2xh
c3MtPmxvYWRfZmFpbGVkID0gd2Via2l0X3dlYl92aWV3X3JlYWxfbG9hZF9mYWlsZWQ7CiAgICAg
d2ViVmlld0NsYXNzLT5tb3ZlX2N1cnNvciA9IHdlYmtpdF93ZWJfdmlld19yZWFsX21vdmVfY3Vy
c29yOwogCiAgICAgR09iamVjdENsYXNzKiBvYmplY3RDbGFzcyA9IEdfT0JKRUNUX0NMQVNTKHdl
YlZpZXdDbGFzcyk7CmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3
LmggYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmgKaW5kZXggNjExNTQ0ZC4uMzg1
NDMyYiAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5oCisrKyBi
L1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuaApAQCAtMTAzLDYgKzEwMywxMCBAQCBz
dHJ1Y3QgX1dlYktpdFdlYlZpZXdDbGFzcyB7CiAgICAgdm9pZCAgICAgICAgICAgICAgICAgICAg
ICAgKCogY3V0X2NsaXBib2FyZCkgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICp3ZWJf
dmlldyk7CiAgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgKCogY29weV9jbGlwYm9hcmQp
ICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICp3ZWJfdmlldyk7CiAgICAgdm9pZCAgICAg
ICAgICAgICAgICAgICAgICAgKCogcGFzdGVfY2xpcGJvYXJkKSAgICAgICAgKFdlYktpdFdlYlZp
ZXcgICAgICAgICp3ZWJfdmlldyk7CisgICAgZ2Jvb2xlYW4gICAgICAgICAgICAgICAgICAgKCps
b2FkX2ZhaWxlZCkgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICp3ZWJfdmlldywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgV2ViS2l0V2ViRnJhbWUgICAgICAgKmZyYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAgICAgICAgICAq
dXJpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHRXJyb3IgICAgICAgICAgICAgICAqZXJyb3IpOwogICAgIGdib29sZWFuICAgICAg
ICAgICAgICAgICAgICgqIG1vdmVfY3Vyc29yKSAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAg
ICAgICAqd2ViX3ZpZXcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEd0a01vdmVtZW50U3RlcCAgICAgICBzdGVwLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnaW50ICAg
ICAgICAgICAgICAgICAgY291bnQpOwotLSAKMS42LjAuNAoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>29436</attachid>
            <date>2009-04-13 13:46:21 -0700</date>
            <delta_ts>2009-04-24 12:03:49 -0700</delta_ts>
            <desc>[1/3] Add API to load content for unreachable URL</desc>
            <filename>error-frameapi</filename>
            <type>text/plain</type>
            <size>9564</size>
            <attacher name="Jan Alonzo">jmalonzo</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
R3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQub3JpZy9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAkyMDA5LTA0LTEyIDEyOjEzOjA3LjAwMDAwMDAw
MCArMTAwMAorKysgV2ViS2l0L1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRHdGsuY3BwCTIwMDktMDQtMTQgMDU6NTI6MzcuMDAwMDAwMDAwICsxMDAwCkBAIC01Nyw2
ICs1Nyw4IEBACiAjaW5jbHVkZSAid2Via2l0cHJpdmF0ZS5oIgogCiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvQVBJQ2FzdC5oPgorI2luY2x1ZGUgPGdsaWIuaD4KKyNpbmNsdWRlIDxnbGliL2dw
cmludGYuaD4KICNpbmNsdWRlIDxzdGRpby5oPgogI2lmIFBMQVRGT1JNKFVOSVgpCiAjaW5jbHVk
ZSA8c3lzL3V0c25hbWUuaD4KQEAgLTI1Myw4ICsyNTUsMTEgQEAKIAogICAgIC8vIFdlIGNhbiBn
ZXQgYSBzdG9wTG9hZCgpIGZyb20gZGlzcG9zZSB3aGVuIHRoZSBvYmplY3QgaXMgYmVpbmcKICAg
ICAvLyBkZXN0cm95ZWQsIGRvbid0IGVtaXQgdGhlIHNpZ25hbCBpbiB0aGF0IGNhc2UuCi0gICAg
aWYgKCFwcml2YXRlRGF0YS0+ZGlzcG9zaW5nKQotICAgICAgICBnX3NpZ25hbF9lbWl0X2J5X25h
bWUod2ViVmlldywgImxvYWQtZmluaXNoZWQiLCBtX2ZyYW1lKTsKKyAgICBpZiAocHJpdmF0ZURh
dGEtPmRpc3Bvc2luZykKKyAgICAgICAgcmV0dXJuOworCisgICAgZ2Jvb2xlYW4gaGFuZGxlZDsK
KyAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUod2ViVmlldywgImxvYWQtZmluaXNoZWQiLCBtX2Zy
YW1lLCBOVUxMLCBOVUxMLCAmaGFuZGxlZCk7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6
OmZyYW1lTG9hZGVyRGVzdHJveWVkKCkKQEAgLTc5OSw5ICs4MDQsOSBAQAogICAgIG5vdEltcGxl
bWVudGVkKCk7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmFpbExv
YWRpbmcoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJl
c291cmNlRXJyb3ImKQordm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGYWlsTG9h
ZGluZyhEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVz
b3VyY2VFcnJvciYgZXJyb3IpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBkaXNwYXRj
aERpZEZhaWxMb2FkKGVycm9yKTsKIH0KIAogYm9vbCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0
Y2hEaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUoRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgaW50IGxlbmd0aCkKQEAg
LTgxMCwxNCArODE1LDMwIEBACiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIEZyYW1lTG9h
ZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQoY29uc3QgUmVzb3VyY2VF
cnJvciYpCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZhaWxQcm92aXNpb25h
bExvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7Ci0gICAgZ19zaWduYWxfZW1pdF9i
eV9uYW1lKG1fZnJhbWUsICJsb2FkLWRvbmUiLCBmYWxzZSk7CisgICAgZGlzcGF0Y2hEaWRGYWls
TG9hZChlcnJvcik7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmFp
bExvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYpCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNw
YXRjaERpZEZhaWxMb2FkKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogewotICAgIGdfc2ln
bmFsX2VtaXRfYnlfbmFtZShtX2ZyYW1lLCAibG9hZC1kb25lIiwgZmFsc2UpOworICAgIFdlYktp
dFdlYlZpZXcqIHdlYlZpZXcgPSBnZXRWaWV3RnJvbUZyYW1lKG1fZnJhbWUpOworICAgIEdFcnJv
ciogd2ViRXJyb3IgPSBnX2Vycm9yX25ld19saXRlcmFsKGdfcXVhcmtfZnJvbV9zdHJpbmcoZXJy
b3IuZG9tYWluKCkudXRmOCgpLmRhdGEoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZXJyb3IuZXJyb3JDb2RlKCksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24oKS51dGY4KCku
ZGF0YSgpKTsKKyAgICBnYm9vbGVhbiBoYW5kbGVkID0gZmFsc2U7CisgICAgZ19zaWduYWxfZW1p
dF9ieV9uYW1lKHdlYlZpZXcsICJsb2FkLWVycm9yIiwgbV9mcmFtZSwgZXJyb3IuZmFpbGluZ1VS
TCgpLnV0ZjgoKS5kYXRhKCksIHdlYkVycm9yLCAmaGFuZGxlZCk7CisKKyAgICBpZiAoaGFuZGxl
ZCkgeworICAgICAgICBnX2Vycm9yX2ZyZWUod2ViRXJyb3IpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgU3RyaW5nIGNvbnRlbnQgPSBTdHJpbmc6OmZvcm1hdCgiPGh0bWw+PGhlYWQ+
PHRpdGxlPiVkPC90aXRsZT48L2hlYWQ+PGJvZHk+JXM8L2JvZHk+PC9odG1sPiIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvci5lcnJvckNvZGUoKSwgd2ViRXJyb3It
Pm1lc3NhZ2UpOworICAgIHdlYmtpdF93ZWJfZnJhbWVfbG9hZF9hbHRlcm5hdGVfc3RyaW5nKG1f
ZnJhbWUsIGNvbnRlbnQudXRmOCgpLmRhdGEoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBOVUxMLCBlcnJvci5mYWlsaW5nVVJMKCkudXRmOCgpLmRhdGEoKSk7
CisgICAgZ19lcnJvcl9mcmVlKHdlYkVycm9yKTsKIH0KIAogdm9pZCBGcmFtZUxvYWRlckNsaWVu
dDo6ZG93bmxvYWQoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JikKSW5kZXg6IFdlYktpdC9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJmcmFtZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0Lm9yaWcvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViZnJhbWUu
Y3BwCTIwMDktMDQtMTIgMTI6MTM6MDcuMDAwMDAwMDAwICsxMDAwCisrKyBXZWJLaXQvV2ViS2l0
L2d0ay93ZWJraXQvd2Via2l0d2ViZnJhbWUuY3BwCTIwMDktMDQtMTQgMDU6NTE6NTcuMDAwMDAw
MDAwICsxMDAwCkBAIC0zOTcsNiArMzk3LDI5IEBACiAgICAgY29yZUZyYW1lLT5sb2FkZXIoKS0+
bG9hZChSZXNvdXJjZVJlcXVlc3QoS1VSTChLVVJMKCksIFN0cmluZzo6ZnJvbVVURjgodXJpKSkp
LCBmYWxzZSk7CiB9CiAKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfZnJhbWVfbG9hZF9kYXRhKFdl
YktpdFdlYkZyYW1lKiBmcmFtZSwgY29uc3QgZ2NoYXIqIGNvbnRlbnQsIGNvbnN0IGdjaGFyKiBt
aW1lVHlwZSwgY29uc3QgZ2NoYXIqIGVuY29kaW5nLCBjb25zdCBnY2hhciogYmFzZVVSTCwgY29u
c3QgZ2NoYXIqIHVucmVhY2hhYmxlVVJMKQoreworICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3Jl
KGZyYW1lKTsKKyAgICBBU1NFUlQoY29yZUZyYW1lKTsKKworICAgIEtVUkwgYmFzZXVybDsKKwor
ICAgIGlmICghYmFzZVVSTCkKKyAgICAgICAgYmFzZXVybCA9IGJsYW5rVVJMKCk7CisKKyAgICAv
LyBGSVhNRTogY29udmVydCBiYXNldXJsIGFuZCB1bnJlYWNoYWJsZVVSTCB0byBhbiBhYnNvbHV0
ZSB1cmwKKyAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChiYXNldXJsKTsKKworICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNvbnRl
bnQsIGdfdXRmOF9zdHJsZW4oY29udGVudCwgLTEpKTsKKyAgICBTdWJzdGl0dXRlRGF0YSBzdWJz
dGl0dXRlRGF0YShzaGFyZWRCdWZmZXIucmVsZWFzZSgpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1pbWVUeXBlID8gU3RyaW5nOjpmcm9tVVRGOChtaW1lVHlwZSkgOiBTdHJp
bmc6OmZyb21VVEY4KCJ0ZXh0L2h0bWwiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBlbmNvZGluZyA/IFN0cmluZzo6ZnJvbVVURjgoZW5jb2RpbmcpIDogU3RyaW5nOjpmcm9t
VVRGOCgiVVRGLTgiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNldXJs
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEtVUkwoS1VSTCgpLCBTdHJpbmc6
OmZyb21VVEY4KHVucmVhY2hhYmxlVVJMKSkpOworCisgICAgY29yZUZyYW1lLT5sb2FkZXIoKS0+
bG9hZChyZXF1ZXN0LCBzdWJzdGl0dXRlRGF0YSwgZmFsc2UpOworfQorCiAvKioKICAqIHdlYmtp
dF93ZWJfZnJhbWVfbG9hZF9zdHJpbmc6CiAgKiBAZnJhbWU6IGEgI1dlYktpdFdlYkZyYW1lCkBA
IC00MTksMTUgKzQ0MiwyNiBAQAogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9G
UkFNRShmcmFtZSkpOwogICAgIGdfcmV0dXJuX2lmX2ZhaWwoY29udGVudCk7CiAKLSAgICBGcmFt
ZSogY29yZUZyYW1lID0gY29yZShmcmFtZSk7Ci0gICAgaWYgKCFjb3JlRnJhbWUpCi0gICAgICAg
IHJldHVybjsKKyAgICB3ZWJraXRfd2ViX2ZyYW1lX2xvYWRfZGF0YShmcmFtZSwgY29udGVudCwg
Y29udGVudE1pbWVUeXBlLCBjb250ZW50RW5jb2RpbmcsIGJhc2VVcmksIE5VTEwpOworfQogCi0g
ICAgS1VSTCB1cmwoS1VSTCgpLCBiYXNlVXJpID8gU3RyaW5nOjpmcm9tVVRGOChiYXNlVXJpKSA6
ICIiKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShjb250ZW50LCBzdHJsZW4oY29udGVudCkpOwotICAgIFN1YnN0aXR1dGVEYXRh
IHN1YnN0aXR1dGVEYXRhKHNoYXJlZEJ1ZmZlci5yZWxlYXNlKCksIGNvbnRlbnRNaW1lVHlwZSA/
IFN0cmluZyhjb250ZW50TWltZVR5cGUpIDogInRleHQvaHRtbCIsIGNvbnRlbnRFbmNvZGluZyA/
IFN0cmluZyhjb250ZW50RW5jb2RpbmcpIDogIlVURi04IiwgYmxhbmtVUkwoKSwgdXJsKTsKKy8q
KgorICogd2Via2l0X3dlYl9mcmFtZV9sb2FkX2FsdGVybmF0ZV9zdHJpbmc6CisgKiBAZnJhbWU6
IGEgI1dlYktpdFdlYkZyYW1lCisgKiBAY29udGVudDogdGhlIGFsdGVybmF0ZSBjb250ZW50IHRv
IGRpc3BsYXkgYXMgdGhlIG1haW4gcGFnZSBvZiB0aGUgQGZyYW1lCisgKiBAYmFzZV91cmw6IHRo
ZSBiYXNlIFVSSSBmb3IgcmVsYXRpdmUgbG9jYXRpb25zCisgKiBAdW5yZWFjaGFibGVfdXJsOiB0
aGUgVVJMIGZvciB0aGUgYWx0ZXJuYXRlIHBhZ2UgY29udGVudAorICoKKyAqIFJlcXVlc3QgbG9h
ZGluZyBvZiBhbiBhbHRlcm5hdGUgY29udGVudCBmb3IgYSBVUkwgdGhhdCBpcyB1bnJlYWNoYWJs
ZQorICoKKyAqIFNpbmNlOiAxLjEuNgorICovCit2b2lkIHdlYmtpdF93ZWJfZnJhbWVfbG9hZF9h
bHRlcm5hdGVfc3RyaW5nKFdlYktpdFdlYkZyYW1lKiBmcmFtZSwgY29uc3QgZ2NoYXIqIGNvbnRl
bnQsIGNvbnN0IGdjaGFyKiBiYXNlVVJMLCBjb25zdCBnY2hhciogdW5yZWFjaGFibGVVUkwpCit7
CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX0ZSQU1FKGZyYW1lKSk7CisgICAg
Z19yZXR1cm5faWZfZmFpbChjb250ZW50KTsKIAotICAgIGNvcmVGcmFtZS0+bG9hZGVyKCktPmxv
YWQoUmVzb3VyY2VSZXF1ZXN0KHVybCksIHN1YnN0aXR1dGVEYXRhLCBmYWxzZSk7CisgICAgd2Vi
a2l0X3dlYl9mcmFtZV9sb2FkX2RhdGEoZnJhbWUsIGNvbnRlbnQsIE5VTEwsIE5VTEwsIGJhc2VV
UkwsIHVucmVhY2hhYmxlVVJMKTsKIH0KIAogLyoqCkluZGV4OiBXZWJLaXQvV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0d2ViZnJhbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQub3JpZy9XZWJLaXQv
Z3RrL3dlYmtpdC93ZWJraXR3ZWJmcmFtZS5oCTIwMDktMDQtMTIgMTI6MTM6MDcuMDAwMDAwMDAw
ICsxMDAwCisrKyBXZWJLaXQvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViZnJhbWUuaAkyMDA5
LTA0LTEyIDEyOjMyOjEwLjAwMDAwMDAwMCArMTAwMApAQCAtOTIsNiArOTIsMTIgQEAKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAgICAgICAgICAqYmFz
ZV91cmkpOwogCiBXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF93ZWJfZnJhbWVfbG9hZF9hbHRlcm5h
dGVfc3RyaW5nIChXZWJLaXRXZWJGcmFtZSAgICAqZnJhbWUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgICAgKmNvbnRlbnQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgICAgKmJhc2Vf
dXJsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFy
ICAgICAgICp1bnJlYWNoYWJsZV91cmwpOworCitXRUJLSVRfQVBJIHZvaWQKIHdlYmtpdF93ZWJf
ZnJhbWVfbG9hZF9yZXF1ZXN0ICAgICAgIChXZWJLaXRXZWJGcmFtZSAgICAgICAqZnJhbWUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0TmV0d29ya1JlcXVlc3Qg
KnJlcXVlc3QpOwogCkluZGV4OiBXZWJLaXQvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmll
dy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Lm9yaWcvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0
d2Vidmlldy5jcHAJMjAwOS0wNC0xMiAxMjoxMzowNy4wMDAwMDAwMDAgKzEwMDAKKysrIFdlYktp
dC9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAkyMDA5LTA0LTE0IDA1OjQ1OjQ3
LjAwMDAwMDAwMCArMTAwMApAQCAtMTIyLDYgKzEyMiw3IEBACiAgICAgTE9BRF9TVEFSVEVELAog
ICAgIExPQURfQ09NTUlUVEVELAogICAgIExPQURfUFJPR1JFU1NfQ0hBTkdFRCwKKyAgICBMT0FE
X0VSUk9SLAogICAgIExPQURfRklOSVNIRUQsCiAgICAgVElUTEVfQ0hBTkdFRCwKICAgICBIT1ZF
UklOR19PVkVSX0xJTkssCkBAIC0xMzA2LDYgKzEzMDcsMzEgQEAKICAgICAgICAgICAgIEdfVFlQ
RV9OT05FLCAxLAogICAgICAgICAgICAgR19UWVBFX0lOVCk7CiAKKyAgICAvKioKKyAgICAgKiBX
ZWJLaXRXZWJWaWV3Ojpsb2FkLWVycm9yCisgICAgICogQHdlYl92aWV3OiB0aGUgb2JqZWN0IG9u
IHdoaWNoIHRoZSBzaWduYWwgaXMgZW1pdHRlZAorICAgICAqIEB3ZWJfZnJhbWU6IHRoZSAjV2Vi
S2l0V2ViRnJhbWUKKyAgICAgKiBAdXJpOiB0aGUgVVJJIHRoYXQgdHJpZ2dlcmVkIHRoZSBlcnJv
cgorICAgICAqIEB3ZWJfZXJyb3I6IHRoZSAjR0Vycm9yIHRoYXQgd2FzIHRyaWdnZXJlZAorICAg
ICAqCisgICAgICogQW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgbG9hZGluZy4gQnkgZGVmYXVsdCwg
aWYgdGhlIHNpZ25hbCBpcyBub3QKKyAgICAgKiBoYW5kbGVkLCB0aGUgQHdlYl92aWV3IHdpbGwg
ZGlzcGxheSBhIHN0b2NrIGVycm9yIHBhZ2UuIFlvdSBuZWVkIHRvCisgICAgICogaGFuZGxlIHRo
ZSBzaWduYWwgaWYgeW91IHdhbnQgdG8gcHJvdmlkZSB5b3VyIG93biBlcnJvciBwYWdlLgorICAg
ICAqCisgICAgICogU2luY2U6IDEuMS42CisgICAgICovCisgICAgd2Via2l0X3dlYl92aWV3X3Np
Z25hbHNbTE9BRF9FUlJPUl0gPSBnX3NpZ25hbF9uZXcoImxvYWQtZXJyb3IiLAorICAgICAgICAg
ICAgR19UWVBFX0ZST01fQ0xBU1Mod2ViVmlld0NsYXNzKSwKKyAgICAgICAgICAgIChHU2lnbmFs
RmxhZ3MpKEdfU0lHTkFMX1JVTl9MQVNUIHwgR19TSUdOQUxfQUNUSU9OKSwKKyAgICAgICAgICAg
IDAsCisgICAgICAgICAgICBnX3NpZ25hbF9hY2N1bXVsYXRvcl90cnVlX2hhbmRsZWQsCisgICAg
ICAgICAgICBOVUxMLAorICAgICAgICAgICAgd2Via2l0X21hcnNoYWxfQk9PTEVBTl9fT0JKRUNU
X1NUUklOR19QT0lOVEVSLAorICAgICAgICAgICAgR19UWVBFX0JPT0xFQU4sIDMsCisgICAgICAg
ICAgICBXRUJLSVRfVFlQRV9XRUJfRlJBTUUsCisgICAgICAgICAgICBHX1RZUEVfU1RSSU5HLAor
ICAgICAgICAgICAgR19UWVBFX1BPSU5URVIpOworCiAgICAgd2Via2l0X3dlYl92aWV3X3NpZ25h
bHNbTE9BRF9GSU5JU0hFRF0gPSBnX3NpZ25hbF9uZXcoImxvYWQtZmluaXNoZWQiLAogICAgICAg
ICAgICAgR19UWVBFX0ZST01fQ0xBU1Mod2ViVmlld0NsYXNzKSwKICAgICAgICAgICAgIChHU2ln
bmFsRmxhZ3MpKEdfU0lHTkFMX1JVTl9MQVNUIHwgR19TSUdOQUxfQUNUSU9OKSwKSW5kZXg6IFdl
YktpdC9XZWJLaXQvZ3RrL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQub3JpZy9XZWJL
aXQvZ3RrL0NoYW5nZUxvZwkyMDA5LTA0LTE0IDA2OjA0OjM4LjAwMDAwMDAwMCArMTAwMAorKysg
V2ViS2l0L1dlYktpdC9ndGsvQ2hhbmdlTG9nCTIwMDktMDQtMTQgMDY6MDQ6NDMuMDAwMDAwMDAw
ICsxMDAwCkBAIC0xLDMgKzEsMjIgQEAKKzIwMDktMDQtMTMgIEphbiBNaWNoYWVsIEFsb256byAg
PGptYWxvbnpvQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgW0dUS10gRXJyb3IgcmVwb3J0aW5nCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODM0NAorCisgICAgICAgIEFkZCBhIFdlYktp
dFdlYkZyYW1lIEFQSSB0byBsb2FkIGFsdGVybmF0ZSBjb250ZW50IGZvciB1bnJlYWNoYWJsZSBV
UkxzLgorICAgICAgICBBbHNvIGFkZCBhIG5ldyBzaWduYWwgImxvYWQtZXJyb3IiIGZvciBoYW5k
bGluZyBsb2FkIGVycm9ycy4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnQ6OnBvc3RQ
cm9ncmVzc0ZpbmlzaGVkTm90aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2Fk
ZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmFpbExvYWRpbmcpOgorICAgICAgICAoV2ViS2l0OjpGcmFt
ZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2FkKToKKyAgICAgICAg
KFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmFpbExvYWQpOgorICAgICAg
ICAqIHdlYmtpdC93ZWJraXR3ZWJmcmFtZS5jcHA6CisgICAgICAgICogd2Via2l0L3dlYmtpdHdl
YmZyYW1lLmg6CisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwOgorCiAyMDA5LTA0
LTEwICBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgIDxndXN0YXZvLm5vcm9uaGFAY29sbGFib3JhLmNv
LnVrPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEhvbGdlciBGcmV5dGhlci4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>29437</attachid>
            <date>2009-04-13 13:49:41 -0700</date>
            <delta_ts>2009-04-24 12:09:51 -0700</delta_ts>
            <desc>[2/3] Add default page for error reporting</desc>
            <filename>error-page</filename>
            <type>text/plain</type>
            <size>5476</size>
            <attacher name="Jan Alonzo">jmalonzo</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9HTlVtYWtlZmlsZS5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQub3JpZy9H
TlVtYWtlZmlsZS5hbQkyMDA5LTA0LTE0IDA1OjM2OjMzLjAwMDAwMDAwMCArMTAwMAorKysgV2Vi
S2l0L0dOVW1ha2VmaWxlLmFtCTIwMDktMDQtMTQgMDY6MDU6MTIuMDAwMDAwMDAwICsxMDAwCkBA
IC00NDksOCArNDQ5LDYgQEAKIAkmJiBjcCB4Z2VuLWd0YyAkQCBcCiAJJiYgcm0gLWYgeGdlbi1n
dGMKIAotIyBFTkQgV0VCS0lUIEdUSysKLSMKICMgRmlsZXMgdGhhdCB3aWxsIGJlIGRpc3RyaWJ1
dGVkCiBFWFRSQV9ESVNUID0gXAogCVdlYktpdC9MSUNFTlNFIFwKQEAgLTQ2NSw3ICs0NjMsMTUg
QEAKIAkkKHNyY2RpcikvV2ViS2l0L2d0ay9kb2NzL3dlYmtpdGd0ay1kb2NzLnNnbWwgXAogCSQo
c3JjZGlyKS9XZWJLaXQvZ3RrL2RvY3Mvd2Via2l0Z3RrLXNlY3Rpb25zLnR4dCBcCiAJJChzcmNk
aXIpL1dlYktpdC9ndGsvZG9jcy92ZXJzaW9uLnhtbC5pbiBcCi0JJChzcmNkaXIpL1dlYktpdC9n
dGsvcG8vKgorCSQoc3JjZGlyKS9XZWJLaXQvZ3RrL3BvLyogXAorCSQoc3JjZGlyKS9XZWJLaXQv
Z3RrL3Jlc291cmNlcy8qCisKKyMgZXh0cmEgcmVzb3VyY2UgZmlsZXMKK3Jlc291cmNlc2RpciA9
ICR7ZGF0YWRpcn0vd2Via2l0LTEuMC9yZXNvdXJjZXMKK2Rpc3RfcmVzb3VyY2VzX0RBVEEgPSBc
CisJJChzaGVsbCBscyAkKHNyY2RpcikvV2ViS2l0L2d0ay9yZXNvdXJjZXMvKi57aHRtbCxjc3N9
KQorCisjIEVORCBXRUJLSVQgR1RLKwogCiAjIEZpbGVzIHRoYXQgd2lsbCBiZSBjbGVhbmVkCiBN
QUlOVEFJTkVSQ0xFQU5GSUxFUyA6PSAkKHN0YW1wX2ZpbGVzKSAkKEJVSUxUX1NPVVJDRVMpIGRv
bHRjb21waWxlIGRvbHRsaWJ0b29sIFdlYktpdC9ndGsvZG9jcy92ZXJzaW9uLnhtbCBXZWJLaXQv
Z3RrL2RvY3MvR05VbWFrZWZpbGUKQEAgLTU2NCw0ICs1NzAsNCBAQAogCiBpbnN0YWxsZGlycy1k
YXRhLWxvY2FsOiBwby1pbnN0YWxsZGlycy1kYXRhLWxvY2FsCiAKLXVuaW5zdGFsbC1sb2NhbDog
cG8tdW5pbnN0YWxsLWxvY2FsClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQordW5pbnN0YWxs
LWxvY2FsOiBwby11bmluc3RhbGwtbG9jYWwKSW5kZXg6IFdlYktpdC9XZWJLaXQvZ3RrL1dlYkNv
cmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQu
b3JpZy9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAky
MDA5LTA0LTE0IDA1OjUyOjM3LjAwMDAwMDAwMCArMTAwMAorKysgV2ViS2l0L1dlYktpdC9ndGsv
V2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCTIwMDktMDQtMTQgMDY6MDU6
MTIuMDAwMDAwMDAwICsxMDAwCkBAIC01Nyw2ICs1Nyw3IEBACiAjaW5jbHVkZSAid2Via2l0cHJp
dmF0ZS5oIgogCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQVBJQ2FzdC5oPgorI2luY2x1ZGUg
PGdpby9naW8uaD4KICNpbmNsdWRlIDxnbGliLmg+CiAjaW5jbHVkZSA8Z2xpYi9ncHJpbnRmLmg+
CiAjaW5jbHVkZSA8c3RkaW8uaD4KQEAgLTgzNCwxMCArODM1LDIyIEBACiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBTdHJpbmcgY29udGVudCA9IFN0cmluZzo6Zm9ybWF0KCI8aHRtbD48
aGVhZD48dGl0bGU+JWQ8L3RpdGxlPjwvaGVhZD48Ym9keT4lczwvYm9keT48L2h0bWw+IiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yLmVycm9yQ29kZSgpLCB3ZWJF
cnJvci0+bWVzc2FnZSk7Ci0gICAgd2Via2l0X3dlYl9mcmFtZV9sb2FkX2FsdGVybmF0ZV9zdHJp
bmcobV9mcmFtZSwgY29udGVudC51dGY4KCkuZGF0YSgpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIGVycm9yLmZhaWxpbmdVUkwoKS51dGY4KCkuZGF0
YSgpKTsKKyAgICBTdHJpbmcgY29udGVudDsKKyAgICBnY2hhciogZmlsZUNvbnRlbnQ7CisgICAg
R0ZpbGUqIGVycm9yRmlsZSA9IGdfZmlsZV9uZXdfZm9yX3VyaSgiZmlsZTovLyJEQVRBX0RJUiIv
d2Via2l0LTEuMC9yZXNvdXJjZXMvZXJyb3IuaHRtbCIpOworCisgICAgZ2Jvb2xlYW4gbG9hZGVk
ID0gZ19maWxlX2xvYWRfY29udGVudHMoZXJyb3JGaWxlLCBOVUxMLCAmZmlsZUNvbnRlbnQsIE5V
TEwsIE5VTEwsIE5VTEwpOworICAgIGlmICghbG9hZGVkKQorICAgICAgICBjb250ZW50ID0gU3Ry
aW5nOjpmb3JtYXQoIjxodG1sPjxib2R5PiVzPC9ib2R5PjwvaHRtbD4iLCB3ZWJFcnJvci0+bWVz
c2FnZSk7CisgICAgZWxzZQorICAgICAgICBjb250ZW50ID0gU3RyaW5nOjpmb3JtYXQoZmlsZUNv
bnRlbnQsIGVycm9yLmZhaWxpbmdVUkwoKS51dGY4KCkuZGF0YSgpLCB3ZWJFcnJvci0+bWVzc2Fn
ZSk7CisKKyAgICB3ZWJraXRfd2ViX2ZyYW1lX2xvYWRfYWx0ZXJuYXRlX3N0cmluZyhtX2ZyYW1l
LCBjb250ZW50LnV0ZjgoKS5kYXRhKCksIE5VTEwsIGVycm9yLmZhaWxpbmdVUkwoKS51dGY4KCku
ZGF0YSgpKTsKKworICAgIGlmIChmaWxlQ29udGVudCkKKyAgICAgICAgZ19mcmVlKGZpbGVDb250
ZW50KTsKKworICAgIGdfb2JqZWN0X3VucmVmKGVycm9yRmlsZSk7CiAgICAgZ19lcnJvcl9mcmVl
KHdlYkVycm9yKTsKIH0KIApJbmRleDogV2ViS2l0L1dlYktpdC9ndGsvcmVzb3VyY2VzL2Vycm9y
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAw
MDAwICswMDAwCisrKyBXZWJLaXQvV2ViS2l0L2d0ay9yZXNvdXJjZXMvZXJyb3IuaHRtbAkyMDA5
LTA0LTE0IDA2OjA1OjEyLjAwMDAwMDAwMCArMTAwMApAQCAtMCwwICsxLDYxIEBACis8aHRtbD4K
KzxoZWFkPgorPHRpdGxlPkVycm9yPC90aXRsZT4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Citi
b2R5IHsKKyBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOworIG1hcmdpbjogMDsKKyBwYWRkaW5nOiAw
OworfQorCisjZXJyb3JDb250YWluZXIgeworIGJhY2tncm91bmQ6ICNmZmY7CisgbWluLXdpZHRo
OiAzNWVtOworIG1heC13aWR0aDogMzVlbTsKKyBwb3NpdGlvbjogYWJzb2x1dGU7CisgdG9wOiAy
ZW07CisgbGVmdDogMWVtOworIHBhZGRpbmc6IDEwcHg7CisgYm9yZGVyOiAycHggc29saWQgI2Vl
ZTsKKyAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDVweDsKK30KKworI2Vycm9yVGl0bGVUZXh0IHsK
KyBmb250LWZhbWlseTogc2Fucy1zZXJpZjsKKyBmb250LXNpemU6IDEyMCU7CisgZm9udC13ZWln
aHQ6IGJvbGQ7Cit9CisKKyNlcnJvck1lc3NhZ2VUZXh0IHsKKyBmb250OiA4MCUgVmVyZGFuYSwg
c2Fucy1zZXJpZjsKK30KKworPC9zdHlsZT4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0
Ij4KKworZnVuY3Rpb24gdHJ5YWdhaW4oKQoreworIGxvY2F0aW9uLnJlbG9hZCgpOworfQorPC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImVycm9yQ29udGFpbmVyIj4KKworPGRp
diBpZD0iZXJyb3JUaXRsZSI+CisgPHAgaWQ9ImVycm9yVGl0bGVUZXh0Ij5VbmFibGUgdG8gbG9h
ZCBwYWdlPC9wPgorPC9kaXY+Cis8ZGl2IGlkPSJlcnJvck1lc3NhZ2UiPgorIDxwPlByb2JsZW0g
b2NjdXJyZWQgd2hpbGUgbG9hZGluZyB0aGUgVVJMICVzPC9wPgorIDxwIGlkPSJlcnJvck1lc3Nh
Z2VUZXh0Ij4lczwvYT4KKzwvcD4KKzwvZGl2PgorCis8Zm9ybSBuYW1lPSJibCIgb25zdWJtaXQ9
InRyeWFnYWluKCkiPgorPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9InRyeSBhZ2FpbiIvPgor
PC9mb3JtPgorCis8L2Rpdj4KKworPC9ib2R5PgorPC9odG1sPgpJbmRleDogV2ViS2l0L0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQub3JpZy9DaGFuZ2VMb2cJMjAwOS0wNC0xNCAwNjox
MToxOC4wMDAwMDAwMDAgKzEwMDAKKysrIFdlYktpdC9DaGFuZ2VMb2cJMjAwOS0wNC0xNCAwNjox
MTo0Ni4wMDAwMDAwMDAgKzEwMDAKQEAgLTEsMyArMSwxNCBAQAorMjAwOS0wNC0xMyAgSmFuIE1p
Y2hhZWwgQWxvbnpvICA8am1hbG9uem9Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbR1RLXSBFcnJvciByZXBvcnRpbmcKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MzQ0CisKKyAgICAg
ICAgQWRkIHRoZSBkZWZhdWx0IGVycm9yIHBhZ2UgZm9yIGluc3RhbGxhdGlvbi4KKworICAgICAg
ICAqIEdOVW1ha2VmaWxlLmFtOgorCiAyMDA5LTA0LTA2ICBHdXN0YXZvIE5vcm9uaGEgU2lsdmEg
IDxndXN0YXZvLm5vcm9uaGFAY29sbGFib3JhLmNvLnVrPgogCiAgICAgICAgIFJ1YmJlci1zdGFt
cGVkIGJ5IFNhbSBXZWluaWcuCkluZGV4OiBXZWJLaXQvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0Lm9yaWcvV2ViS2l0L2d0ay9DaGFuZ2VMb2cJMjAwOS0wNC0xNCAw
NjowNjoyMi4wMDAwMDAwMDAgKzEwMDAKKysrIFdlYktpdC9XZWJLaXQvZ3RrL0NoYW5nZUxvZwky
MDA5LTA0LTE0IDA2OjEwOjI2LjAwMDAwMDAwMCArMTAwMApAQCAtNSw2ICs1LDE5IEBACiAgICAg
ICAgIFtHVEtdIEVycm9yIHJlcG9ydGluZwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTgzNDQKIAorICAgICAgICBEaXNwbGF5IGEgZGVmYXVsdCBlcnJv
ciBwYWdlIGZvciBsb2FkIGVycm9ycy4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnQ6
OmRpc3BhdGNoRGlkRmFpbExvYWQpOgorICAgICAgICAqIHJlc291cmNlcy9lcnJvci5odG1sOiBB
ZGRlZC4KKworMjAwOS0wNC0xMyAgSmFuIE1pY2hhZWwgQWxvbnpvICA8am1hbG9uem9Ad2Via2l0
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBb
R1RLXSBFcnJvciByZXBvcnRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE4MzQ0CisKICAgICAgICAgQWRkIGEgV2ViS2l0V2ViRnJhbWUgQVBJIHRv
IGxvYWQgYWx0ZXJuYXRlIGNvbnRlbnQgZm9yIHVucmVhY2hhYmxlIFVSTHMuCiAgICAgICAgIEFs
c28gYWRkIGEgbmV3IHNpZ25hbCAibG9hZC1lcnJvciIgZm9yIGhhbmRsaW5nIGxvYWQgZXJyb3Jz
LgogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>29438</attachid>
            <date>2009-04-13 13:53:21 -0700</date>
            <delta_ts>2009-04-24 12:15:10 -0700</delta_ts>
            <desc>[3/3] implement resource error-using methods</desc>
            <filename>error-gerror</filename>
            <type>text/plain</type>
            <size>17295</size>
            <attacher name="Jan Alonzo">jmalonzo</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
R3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQub3JpZy9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAkyMDA5LTA0LTE0IDA2OjA1OjEyLjAwMDAwMDAw
MCArMTAwMAorKysgV2ViS2l0L1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRHdGsuY3BwCTIwMDktMDQtMTQgMDY6Mzk6NTIuMDAwMDAwMDAwICsxMDAwCkBAIC00OSw2
ICs0OSw3IEBACiAjaW5jbHVkZSAiUHJvZ3Jlc3NUcmFja2VyLmgiCiAjaW5jbHVkZSAiSlNET01C
aW5kaW5nLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgorI2luY2x1ZGUgIldlYktp
dEVycm9yLmgiCiAjaW5jbHVkZSAid2Via2l0d2Vidmlldy5oIgogI2luY2x1ZGUgIndlYmtpdG5l
dHdvcmtyZXF1ZXN0LmgiCiAjaW5jbHVkZSAid2Via2l0d2ViZnJhbWUuaCIKQEAgLTU5LDcgKzYw
LDcgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BUElDYXN0Lmg+CiAjaW5jbHVkZSA8Z2lv
L2dpby5oPgogI2luY2x1ZGUgPGdsaWIuaD4KLSNpbmNsdWRlIDxnbGliL2dwcmludGYuaD4KKyNp
bmNsdWRlIDxnbGliL2dpMThuLWxpYi5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaWYgUExBVEZP
Uk0oVU5JWCkKICNpbmNsdWRlIDxzeXMvdXRzbmFtZS5oPgpAQCAtODI3LDEwICs4MjgsMTAgQEAK
ICAgICBHRXJyb3IqIHdlYkVycm9yID0gZ19lcnJvcl9uZXdfbGl0ZXJhbChnX3F1YXJrX2Zyb21f
c3RyaW5nKGVycm9yLmRvbWFpbigpLnV0ZjgoKS5kYXRhKCkpLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yLmVycm9yQ29kZSgpLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9u
KCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgZ2Jvb2xlYW4gaGFuZGxlZCA9IGZhbHNlOwotICAgIGdf
c2lnbmFsX2VtaXRfYnlfbmFtZSh3ZWJWaWV3LCAibG9hZC1lcnJvciIsIG1fZnJhbWUsIGVycm9y
LmZhaWxpbmdVUkwoKS51dGY4KCkuZGF0YSgpLCB3ZWJFcnJvciwgJmhhbmRsZWQpOworICAgIGdi
b29sZWFuIGlzSGFuZGxlZCA9IGZhbHNlOworICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZSh3ZWJW
aWV3LCAibG9hZC1lcnJvciIsIG1fZnJhbWUsIGVycm9yLmZhaWxpbmdVUkwoKS51dGY4KCkuZGF0
YSgpLCB3ZWJFcnJvciwgJmlzSGFuZGxlZCk7CiAKLSAgICBpZiAoaGFuZGxlZCkgeworICAgIGlm
IChpc0hhbmRsZWQpIHsKICAgICAgICAgZ19lcnJvcl9mcmVlKHdlYkVycm9yKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KQEAgLTg2Myw1NCArODY0LDYyIEBACiAgICAgc3RhcnREb3dubG9hZChy
ZXF1ZXN0KTsKIH0KIAotUmVzb3VyY2VFcnJvciBGcmFtZUxvYWRlckNsaWVudDo6Y2FuY2VsbGVk
RXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JikKK1Jlc291cmNlRXJyb3IgRnJhbWVMb2FkZXJD
bGllbnQ6OmNhbmNlbGxlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsK
LSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIFJlc291cmNlRXJyb3IgZXJyb3IoIiIsIDAsICIi
LCAiIik7Ci0gICAgZXJyb3Iuc2V0SXNDYW5jZWxsYXRpb24odHJ1ZSk7Ci0gICAgcmV0dXJuIGVy
cm9yOworICAgIHJldHVybiBSZXNvdXJjZUVycm9yKFdlYktpdEVycm9yOjpXZWJLaXROZXR3b3Jr
RXJyb3IsIFdlYktpdE5ldHdvcmtFcnJvckNhbmNlbGxlZCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICByZXF1ZXN0LnVybCgpLnN0cmluZygpLCBfKCJMb2FkIHJlcXVlc3QgY2FuY2VsbGVkIikp
OwogfQogCi1SZXNvdXJjZUVycm9yIEZyYW1lTG9hZGVyQ2xpZW50OjpibG9ja2VkRXJyb3IoY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JikKK1Jlc291cmNlRXJyb3IgRnJhbWVMb2FkZXJDbGllbnQ6OmJs
b2NrZWRFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAgbm90SW1w
bGVtZW50ZWQoKTsKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcigiIiwgMCwgIiIsICIiKTsKKyAg
ICByZXR1cm4gUmVzb3VyY2VFcnJvcihXZWJLaXRFcnJvcjo6V2ViS2l0UG9saWN5RXJyb3IsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0UG9saWN5RXJyb3JDYW5ub3RVc2VSZXN0cmlj
dGVkUG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LnVybCgpLnN0cmluZygp
LCBfKCJOb3QgYWxsb3dlZCB0byB1c2UgcmVzdHJpY3RlZCBuZXR3b3JrIHBvcnQiKSk7CiB9CiAK
LVJlc291cmNlRXJyb3IgRnJhbWVMb2FkZXJDbGllbnQ6OmNhbm5vdFNob3dVUkxFcnJvcihjb25z
dCBSZXNvdXJjZVJlcXVlc3QmKQorUmVzb3VyY2VFcnJvciBGcmFtZUxvYWRlckNsaWVudDo6Y2Fu
bm90U2hvd1VSTEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICBu
b3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBSZXNvdXJjZUVycm9yKCIiLCAwLCAiIiwgIiIp
OworICAgIHJldHVybiBSZXNvdXJjZUVycm9yKFdlYktpdEVycm9yOjpXZWJLaXRQb2xpY3lFcnJv
ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRQb2xpY3lFcnJvckNhbm5vdFNob3dV
UkwsCisgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC51cmwoKS5zdHJpbmcoKSwgXygi
VVJMIGNhbm5vdCBiZSBzaG93biIpKTsKIH0KIAotUmVzb3VyY2VFcnJvciBGcmFtZUxvYWRlckNs
aWVudDo6aW50ZXJydXB0Rm9yUG9saWN5Q2hhbmdlRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JikKK1Jlc291cmNlRXJyb3IgRnJhbWVMb2FkZXJDbGllbnQ6OmludGVycnVwdEZvclBvbGljeUNo
YW5nZUVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICBub3RJbXBs
ZW1lbnRlZCgpOwotICAgIHJldHVybiBSZXNvdXJjZUVycm9yKCIiLCAwLCAiIiwgIiIpOworICAg
IHJldHVybiBSZXNvdXJjZUVycm9yKFdlYktpdEVycm9yOjpXZWJLaXRQb2xpY3lFcnJvciwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRQb2xpY3lFcnJvckZyYW1lTG9hZEludGVycnVw
dGVkQnlQb2xpY3lDaGFuZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC51cmwo
KS5zdHJpbmcoKSwgXygiRnJhbWUgbG9hZCB3YXMgaW50ZXJydXB0ZWQiKSk7CiB9CiAKLVJlc291
cmNlRXJyb3IgRnJhbWVMb2FkZXJDbGllbnQ6OmNhbm5vdFNob3dNSU1FVHlwZUVycm9yKGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmKQorUmVzb3VyY2VFcnJvciBGcmFtZUxvYWRlckNsaWVudDo6Y2Fu
bm90U2hvd01JTUVUeXBlRXJyb3IoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7
Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcigiIiwgMCwg
IiIsICIiKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihXZWJLaXRFcnJvcjo6V2ViS2l0UG9s
aWN5RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0UG9saWN5RXJyb3JDYW5u
b3RTaG93TUlNRVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UudXJsKCku
c3RyaW5nKCksIF8oIkNvbnRlbnQgd2l0aCB0aGUgc3BlY2lmaWVkIE1JTUUgdHlwZSBjYW5ub3Qg
YmUgc2hvd24iKSk7CiB9CiAKLVJlc291cmNlRXJyb3IgRnJhbWVMb2FkZXJDbGllbnQ6OmZpbGVE
b2VzTm90RXhpc3RFcnJvcihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikKK1Jlc291cmNlRXJyb3Ig
RnJhbWVMb2FkZXJDbGllbnQ6OmZpbGVEb2VzTm90RXhpc3RFcnJvcihjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiByZXNwb25zZSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBS
ZXNvdXJjZUVycm9yKCIiLCAwLCAiIiwgIiIpOworICAgIHJldHVybiBSZXNvdXJjZUVycm9yKFdl
YktpdEVycm9yOjpXZWJLaXRQb2xpY3lFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICBX
ZWJLaXROZXR3b3JrRXJyb3JGaWxlRG9lc05vdEV4aXN0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlc3BvbnNlLnVybCgpLnN0cmluZygpLCBfKCJGaWxlIGRvZXMgbm90IGV4aXN0IikpOwog
fQogCi1SZXNvdXJjZUVycm9yIEZyYW1lTG9hZGVyQ2xpZW50OjpwbHVnaW5XaWxsSGFuZGxlTG9h
ZEVycm9yKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKQorUmVzb3VyY2VFcnJvciBGcmFtZUxvYWRl
ckNsaWVudDo6cGx1Z2luV2lsbEhhbmRsZUxvYWRFcnJvcihjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBSZXNvdXJj
ZUVycm9yKCIiLCAwLCAiIiwgIiIpOworICAgIHJldHVybiBSZXNvdXJjZUVycm9yKFdlYktpdEVy
cm9yOjpXZWJLaXRQb2xpY3lFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRQ
bHVnaW5FcnJvcldpbGxIYW5kbGVMb2FkLAorICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3Bv
bnNlLnVybCgpLnN0cmluZygpLCBfKCJQbHVnaW4gd2lsbCBoYW5kbGUgbG9hZCIpKTsKIH0KIAot
Ym9vbCBGcmFtZUxvYWRlckNsaWVudDo6c2hvdWxkRmFsbEJhY2soY29uc3QgUmVzb3VyY2VFcnJv
ciYpCitib29sIEZyYW1lTG9hZGVyQ2xpZW50OjpzaG91bGRGYWxsQmFjayhjb25zdCBSZXNvdXJj
ZUVycm9yJiBlcnJvcikKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBmYWxz
ZTsKKyAgICAvLyBXZSBjb3B5IE1hYydzIGltcGwgaGVyZS4KKyAgICAvLyBGSVhNRTogTmVlZHMg
dG8gY2hlY2sgZG9tYWluLgorICAgIC8vIEZJWE1FOiBXZWJLaXRFcnJvclBsdWdJbldpbGxIYW5k
bGVMb2FkIGlzIGEgd29ya2Fyb3VuZCBmb3IgdGhlIGNhbmNlbCB3ZSBkbyB0byBwcmV2ZW50Cisg
ICAgLy8gbG9hZGluZyBwbHVnaW4gY29udGVudCB0d2ljZS4gIFNlZSA8cmRhcjovL3Byb2JsZW0v
NDI1ODAwOD4KKyAgICByZXR1cm4gZXJyb3IuZXJyb3JDb2RlKCkgIT0gV2ViS2l0TmV0d29ya0Vy
cm9yQ2FuY2VsbGVkICYmIGVycm9yLmVycm9yQ29kZSgpICE9IFdlYktpdFBsdWdpbkVycm9yV2ls
bEhhbmRsZUxvYWQ7CisKIH0KIAogYm9vbCBGcmFtZUxvYWRlckNsaWVudDo6Y2FuQ2FjaGVQYWdl
KCkgY29uc3QKSW5kZXg6IFdlYktpdC9HTlVtYWtlZmlsZS5hbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQub3JpZy9HTlVtYWtlZmlsZS5hbQkyMDA5LTA0LTE0IDA2OjA1OjEyLjAwMDAwMDAwMCArMTAw
MAorKysgV2ViS2l0L0dOVW1ha2VmaWxlLmFtCTIwMDktMDQtMTQgMDY6MTI6NDMuMDAwMDAwMDAw
ICsxMDAwCkBAIC00NjksNyArNDY5LDcgQEAKICMgZXh0cmEgcmVzb3VyY2UgZmlsZXMKIHJlc291
cmNlc2RpciA9ICR7ZGF0YWRpcn0vd2Via2l0LTEuMC9yZXNvdXJjZXMKIGRpc3RfcmVzb3VyY2Vz
X0RBVEEgPSBcCi0JJChzaGVsbCBscyAkKHNyY2RpcikvV2ViS2l0L2d0ay9yZXNvdXJjZXMvKi57
aHRtbCxjc3N9KQorCSQoc2hlbGwgbHMgJChzcmNkaXIpL1dlYktpdC9ndGsvcmVzb3VyY2VzLyou
aHRtbCkKIAogIyBFTkQgV0VCS0lUIEdUSysKIApJbmRleDogV2ViS2l0L1dlYkNvcmUvR05VbWFr
ZWZpbGUuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Lm9yaWcvV2ViQ29yZS9HTlVtYWtlZmlsZS5h
bQkyMDA5LTA0LTE0IDA1OjM2OjI5LjAwMDAwMDAwMCArMTAwMAorKysgV2ViS2l0L1dlYkNvcmUv
R05VbWFrZWZpbGUuYW0JMjAwOS0wNC0xNCAwNjoxMjo0My4wMDAwMDAwMDAgKzEwMDAKQEAgLTE3
NDksNiArMTc0OSwxMCBAQAogCVdlYkNvcmUvcGx1Z2lucy9ndGsveGVtYmVkLmgKIGVuZGlmCiAK
K3dlYmNvcmVndGtfY3BwZmxhZ3MgKz0gXAorCS1EV1RGX1VTRV9TT1VQPTEgXAorCS1JJChzcmNk
aXIpL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwCisKIHdlYmNvcmVndGtfc291cmNlcyAr
PSBcCiAJV2ViQ29yZS9wYWdlL2d0ay9BWE9iamVjdENhY2hlQXRrLmNwcCBcCiAJV2ViQ29yZS9w
YWdlL2d0ay9BY2Nlc3NpYmlsaXR5T2JqZWN0QXRrLmNwcCBcCkBAIC0xODM0LDEzICsxODM4LDcg
QEAKIAlXZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIu
aCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy94Ym0vWEJNSW1hZ2VEZWNvZGVy
LmNwcCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy94Ym0vWEJNSW1hZ2VEZWNv
ZGVyLmggXAotCVdlYkNvcmUvcGxhdGZvcm0vdGV4dC9ndGsvVGV4dEJyZWFrSXRlcmF0b3JJbnRl
cm5hbElDVUd0ay5jcHAKLQotd2ViY29yZV9jcHBmbGFncyArPSBcCi0JLURXVEZfVVNFX1NPVVA9
MSBcCi0JLUkkKHNyY2RpcikvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAKLQotd2ViY29y
ZV9zb3VyY2VzICs9IFwKKwlXZWJDb3JlL3BsYXRmb3JtL3RleHQvZ3RrL1RleHRCcmVha0l0ZXJh
dG9ySW50ZXJuYWxJQ1VHdGsuY3BwIFwKIAlXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9B
dXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIFwKIAlXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9Db29raWVKYXJTb3VwLmNwcCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ29v
a2llSmFyU291cC5oIFwKQEAgLTE4NDgsNyArMTg0NiwxMCBAQAogCVdlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3IuaCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvUmVzb3VyY2VSZXF1ZXN0LmggXAotCVdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3Vw
L1Jlc291cmNlUmVzcG9uc2UuaAorCVdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291
cmNlUmVzcG9uc2UuaCBcCisJV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvV2ViS2l0RXJy
b3IuY3BwIFwKKwlXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9XZWJLaXRFcnJvci5oCisK
IAogaWYgVVNFX0dOT01FS0VZUklORwogd2ViY29yZV9jcHBmbGFncyArPSBcCkluZGV4OiBXZWJL
aXQvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQub3JpZy9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9S
ZXNvdXJjZUhhbmRsZVNvdXAuY3BwCTIwMDktMDQtMTQgMDU6MzY6MjkuMDAwMDAwMDAwICsxMDAw
CisrKyBXZWJLaXQvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVT
b3VwLmNwcAkyMDA5LTA0LTE0IDA2OjEyOjQzLjAwMDAwMDAwMCArMTAwMApAQCAtNDMsNiArNDMs
NyBAQAogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlSW50ZXJuYWwuaCIKICNpbmNsdWRlICJSZXNv
dXJjZVJlc3BvbnNlLmgiCiAjaW5jbHVkZSAiVGV4dEVuY29kaW5nLmgiCisjaW5jbHVkZSAiV2Vi
S2l0RXJyb3IuaCIKIAogI2luY2x1ZGUgPGVycm5vLmg+CiAjaW5jbHVkZSA8ZmNudGwuaD4KQEAg
LTEyMSwxNCArMTIyLDYgQEAKICAgICAgICAgZ19tYWluX2xvb3BfcnVuKG1fbWFpbkxvb3ApOwog
fQogCi1lbnVtCi17Ci0gICAgRVJST1JfVFJBTlNQT1JULAotICAgIEVSUk9SX1VOS05PV05fUFJP
VE9DT0wsCi0gICAgRVJST1JfQkFEX05PTl9IVFRQX01FVEhPRCwKLSAgICBFUlJPUl9VTkFCTEVf
VE9fT1BFTl9GSUxFLAotfTsKLQogc3RhdGljIHZvaWQgY2xlYW51cEdpb09wZXJhdGlvbihSZXNv
dXJjZUhhbmRsZUludGVybmFsKiBoYW5kbGUpOwogCiBSZXNvdXJjZUhhbmRsZUludGVybmFsOjp+
UmVzb3VyY2VIYW5kbGVJbnRlcm5hbCgpCkBAIC0zNDAsNyArMzMzLDkgQEAKIAogICAgIGlmIChT
T1VQX1NUQVRVU19JU19UUkFOU1BPUlRfRVJST1IobXNnLT5zdGF0dXNfY29kZSkpIHsKICAgICAg
ICAgY2hhciogdXJpID0gc291cF91cmlfdG9fc3RyaW5nKHNvdXBfbWVzc2FnZV9nZXRfdXJpKG1z
ZyksIGZhbHNlKTsKLSAgICAgICAgUmVzb3VyY2VFcnJvciBlcnJvcigid2Via2l0LW5ldHdvcmst
ZXJyb3IiLCBFUlJPUl9UUkFOU1BPUlQsIHVyaSwgU3RyaW5nOjpmcm9tVVRGOChtc2ctPnJlYXNv
bl9waHJhc2UpKTsKKyAgICAgICAgUmVzb3VyY2VFcnJvciBlcnJvcihXZWJLaXRFcnJvcjo6V2Vi
S2l0TmV0d29ya0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdE5ldHdv
cmtFcnJvclRyYW5zcG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmksIFN0cmlu
Zzo6ZnJvbVVURjgobXNnLT5yZWFzb25fcGhyYXNlKSk7CiAgICAgICAgIGdfZnJlZSh1cmkpOwog
ICAgICAgICBjbGllbnQtPmRpZEZhaWwoaGFuZGxlLmdldCgpLCBlcnJvcik7CiAgICAgICAgIHJl
dHVybjsKQEAgLTUyMSw3ICs1MTYsOSBAQAogICAgICAgICAgICAgICAgICAgICBnX2ZyZWUoZmls
ZU5hbWUpOwogCiAgICAgICAgICAgICAgICAgICAgIGlmIChlcnJvcikgewotICAgICAgICAgICAg
ICAgICAgICAgICAgUmVzb3VyY2VFcnJvciByZXNvdXJjZUVycm9yKCJ3ZWJraXQtbmV0d29yay1l
cnJvciIsIEVSUk9SX1VOQUJMRV9UT19PUEVOX0ZJTEUsIHVybFN0cmluZywgZXJyb3ItPm1lc3Nh
Z2UpOworICAgICAgICAgICAgICAgICAgICAgICAgUmVzb3VyY2VFcnJvciByZXNvdXJjZUVycm9y
KFdlYktpdEVycm9yOjpXZWJLaXROZXR3b3JrRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0TmV0d29ya0Vycm9yRmlsZUNhbm5v
dEJlT3BlbmVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHVybFN0cmluZywgZXJyb3ItPm1lc3NhZ2UpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgZ19lcnJvcl9mcmVlKGVycm9yKTsKIAogICAgICAgICAgICAgICAgICAgICAgICAgZC0+Y2xp
ZW50KCktPmRpZEZhaWwodGhpcywgcmVzb3VyY2VFcnJvcik7CkBAIC01NjEsNyArNTU4LDkgQEAK
ICAgICB9CiAKICAgICBLVVJMIHVybCA9IGhhbmRsZS0+cmVxdWVzdCgpLnVybCgpOwotICAgIFJl
c291cmNlRXJyb3IgZXJyb3IoIndlYmtpdC1uZXR3b3JrLWVycm9yIiwgRVJST1JfVU5LTk9XTl9Q
Uk9UT0NPTCwgdXJsLnN0cmluZygpLCB1cmwucHJvdG9jb2woKSk7CisgICAgUmVzb3VyY2VFcnJv
ciBlcnJvcihXZWJLaXRFcnJvcjo6V2ViS2l0TmV0d29ya0Vycm9yLAorICAgICAgICAgICAgICAg
ICAgICAgICAgV2ViS2l0TmV0d29ya0Vycm9yVW5rbm93blByb3RvY29sLAorICAgICAgICAgICAg
ICAgICAgICAgICAgdXJsLnN0cmluZygpLCB1cmwucHJvdG9jb2woKSk7CiAgICAgY2xpZW50LT5k
aWRGYWlsKGhhbmRsZSwgZXJyb3IpOwogCiAgICAgaGFuZGxlLT5kZXJlZigpOwpAQCAtNjU5LDcg
KzY1OCw5IEBACiB7CiAgICAgLy8gRklYTUU6IE1hcCBnaW8gZXJyb3JzIHRvIGEgbW9yZSBkZXRh
aWxlZCBlcnJvciBjb2RlIHdoZW4gd2UgaGF2ZSBpdCBpbiBXZWJLaXQuCiAgICAgZ2NoYXIqIHVy
aSA9IGdfZmlsZV9nZXRfdXJpKGZpbGUpOwotICAgIFJlc291cmNlRXJyb3IgcmVzb3VyY2VFcnJv
cigid2Via2l0LW5ldHdvcmstZXJyb3IiLCBFUlJPUl9UUkFOU1BPUlQsIHVyaSwgZXJyb3IgPyBT
dHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSA6IFN0cmluZygpKTsKKyAgICBSZXNvdXJj
ZUVycm9yIHJlc291cmNlRXJyb3IoV2ViS2l0RXJyb3I6OldlYktpdE5ldHdvcmtFcnJvciwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0TmV0d29ya0Vycm9yVHJhbnNwb3J0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmksIGVycm9yID8gU3RyaW5nOjpm
cm9tVVRGOChlcnJvci0+bWVzc2FnZSkgOiBTdHJpbmcoKSk7CiAgICAgZ19mcmVlKHVyaSk7CiAg
ICAgcmV0dXJuIHJlc291cmNlRXJyb3I7CiB9CkBAIC04NDYsNyArODQ3LDkgQEAKIGJvb2wgUmVz
b3VyY2VIYW5kbGU6OnN0YXJ0R2lvKEtVUkwgdXJsKQogewogICAgIGlmIChyZXF1ZXN0KCkuaHR0
cE1ldGhvZCgpICE9ICJHRVQiICYmIHJlcXVlc3QoKS5odHRwTWV0aG9kKCkgIT0gIlBPU1QiKSB7
Ci0gICAgICAgIFJlc291cmNlRXJyb3IgZXJyb3IoIndlYmtpdC1uZXR3b3JrLWVycm9yIiwgRVJS
T1JfQkFEX05PTl9IVFRQX01FVEhPRCwgdXJsLnN0cmluZygpLCByZXF1ZXN0KCkuaHR0cE1ldGhv
ZCgpKTsKKyAgICAgICAgUmVzb3VyY2VFcnJvciBlcnJvcihXZWJLaXRFcnJvcjo6V2ViS2l0TmV0
d29ya0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdE5ldHdvcmtFcnJv
ckhUVFBNZXRob2RVbmtub3duLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybC5zdHJp
bmcoKSwgcmVxdWVzdCgpLmh0dHBNZXRob2QoKSk7CiAgICAgICAgIGQtPmNsaWVudCgpLT5kaWRG
YWlsKHRoaXMsIGVycm9yKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KSW5kZXg6IFdl
YktpdC9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9XZWJLaXRFcnJvci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAorKysg
V2ViS2l0L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1dlYktpdEVycm9yLmgJMjAwOS0w
NC0xNCAwNjoxMjo0My4wMDAwMDAwMDAgKzEwMDAKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAwOCBMdWNhIEJydW5vIDxsZXRoYWxtYW44OEBnbWFpbC5jb20+CisgKiBD
b3B5cmlnaHQgKEMpIDIwMDkgSmFuIEFsb256byA8am1hbG9uem9AZ21haWwuY29tPgorICoKKyAq
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
CisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVm
IFdlYktpdEVycm9yX2gKKyNkZWZpbmUgV2ViS2l0RXJyb3JfaAorCisjaW5jbHVkZSA8Z2xpYi5o
PgorCisvLyBTaGFyZWQgd2Via2l0IGVycm9ycyBieSBXZWJDb3JlIGFuZCBXZWJLaXQKKy8vIFRo
aXMgZmlsZSBpcyBoZXJlIGJlY2F1c2UgUmVzb3VyY2VIYW5kbGVTb3VwIGNyZWF0ZXMgUmVzb3Vy
Y2VFcnJvcnMgYW5kIHNvCisvLyBkb2VzIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRHdGsuIFNvIHJhdGhlciB0aGFuIHRoaXMKKy8vIGZpbGUgc2l0dGluZyBpbiBX
ZWJLaXQsIHRoaXMgZmlsZSBpcyBoZXJlIHNpbmNlIFdlYkNvcmUvcGxhdGZvcm0vIHNob3VsZAor
Ly8gbm90IGRlcGVuZCBvbiBXZWJLaXQKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitlbnVtIFdl
YktpdE5ldHdvcmtFcnJvciB7CisgICAgV2ViS2l0TmV0d29ya0Vycm9yVHJhbnNwb3J0ICAgICAg
ICAgICAgICAgICAgICAgICAgID0gMzAwLAorICAgIFdlYktpdE5ldHdvcmtFcnJvclVua25vd25Q
cm90b2NvbCAgICAgICAgICAgICAgICAgICA9IDMwMSwKKyAgICBXZWJLaXROZXR3b3JrRXJyb3JD
YW5jZWxsZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSAzMDIsCisgICAgV2ViS2l0TmV0d29y
a0Vycm9yRmlsZURvZXNOb3RFeGlzdCAgICAgICAgICAgICAgICAgID0gMzAzLAorICAgIFdlYktp
dE5ldHdvcmtFcnJvckZpbGVDYW5ub3RCZU9wZW5lZCAgICAgICAgICAgICAgICA9IDMwNCwKKyAg
ICBXZWJLaXROZXR3b3JrRXJyb3JIVFRQTWV0aG9kVW5rbm93biAgICAgICAgICAgICAgICAgPSAz
MDUsCit9OworCisvLyBTeW5jJ2Qgd2l0aCBXZWJLaXQvbWFjL01pc2MvV2ViS2l0RXJyb3JzLmgK
K2VudW0gV2ViS2l0UG9saWN5RXJyb3IgeworICAgIFdlYktpdFBvbGljeUVycm9yQ2Fubm90U2hv
d01JTUVUeXBlICAgICAgICAgICAgICAgICA9IDEwMCwKKyAgICBXZWJLaXRQb2xpY3lFcnJvckNh
bm5vdFNob3dVUkwgICAgICAgICAgICAgICAgICAgICAgPSAxMDEsCisgICAgV2ViS2l0UG9saWN5
RXJyb3JGcmFtZUxvYWRJbnRlcnJ1cHRlZEJ5UG9saWN5Q2hhbmdlID0gMTAyLAorICAgIFdlYktp
dFBvbGljeUVycm9yQ2Fubm90VXNlUmVzdHJpY3RlZFBvcnQgICAgICAgICAgICA9IDEwMywKK307
CisKK2VudW0gV2ViS2l0UGx1Z2luRXJyb3IgeworICAgIFdlYktpdFBsdWdpbkVycm9yQ2Fubm90
RmluZFBsdWdpbiAgICAgICAgICAgICAgICAgICA9IDIwMCwKKyAgICBXZWJLaXRQbHVnaW5FcnJv
ckNhbm5vdExvYWRQbHVnaW4gICAgICAgICAgICAgICAgICAgPSAyMDEsCisgICAgV2ViS2l0UGx1
Z2luRXJyb3JKYXZhVW5hdmFpbGFibGUgICAgICAgICAgICAgICAgICAgID0gMjAyLAorICAgIFdl
YktpdFBsdWdpbkVycm9yQ29ubmVjdGlvbkNhbmNlbGxlZCAgICAgICAgICAgICAgICA9IDIwMywK
KyAgICBXZWJLaXRQbHVnaW5FcnJvcldpbGxIYW5kbGVMb2FkICAgICAgICAgICAgICAgICAgICAg
PSAyMDQsCit9OworCitjbGFzcyBXZWJLaXRFcnJvciB7CitwdWJsaWM6CisgICAgc3RhdGljIGNv
bnN0IGNoYXIqIFdlYktpdE5ldHdvcmtFcnJvcjsKKyAgICBzdGF0aWMgY29uc3QgY2hhciogV2Vi
S2l0UG9saWN5RXJyb3I7CisgICAgc3RhdGljIGNvbnN0IGNoYXIqIFdlYktpdFBsdWdpbkVycm9y
OworCitwcml2YXRlOgorICAgIFdlYktpdEVycm9yKCk7Cit9OworCit9CisKKyNlbmRpZiAvLyBX
ZWJLaXRFcnJvcl9oCkluZGV4OiBXZWJLaXQvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAv
V2ViS2l0RXJyb3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAw
OjAwLjAwMDAwMDAwMCArMDAwMAorKysgV2ViS2l0L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9z
b3VwL1dlYktpdEVycm9yLmNwcAkyMDA5LTA0LTE0IDA2OjEyOjQzLjAwMDAwMDAwMCArMTAwMApA
QCAtMCwwICsxLDEyIEBACisKKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYktp
dEVycm9yLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY29uc3QgY2hhciogV2ViS2l0RXJy
b3I6OldlYktpdE5ldHdvcmtFcnJvciA9ICJ3ZWJraXQtbmV0d29yay1lcnJvciI7Citjb25zdCBj
aGFyKiBXZWJLaXRFcnJvcjo6V2ViS2l0UG9saWN5RXJyb3IgPSAid2Via2l0LXBvbGljeS1lcnJv
ciI7Citjb25zdCBjaGFyKiBXZWJLaXRFcnJvcjo6V2ViS2l0UGx1Z2luRXJyb3IgPSAid2Via2l0
LXBsdWdpbi1lcnJvciI7CisKK30KSW5kZXg6IFdlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0Lm9yaWcvQ2hhbmdlTG9nCTIwMDktMDQtMTQgMDY6MTk6NTIuMDAwMDAwMDAwICsx
MDAwCisrKyBXZWJLaXQvQ2hhbmdlTG9nCTIwMDktMDQtMTQgMDY6MTk6NTYuMDAwMDAwMDAwICsx
MDAwCkBAIC01LDYgKzUsMTcgQEAKICAgICAgICAgW0dUS10gRXJyb3IgcmVwb3J0aW5nCiAgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODM0NAogCisgICAg
ICAgIEZpeCBkZWZhdWx0IGVycm9yIHBhZ2UgaW5zdGFsbC4KKworICAgICAgICAqIEdOVW1ha2Vm
aWxlLmFtOgorCisyMDA5LTA0LTEzICBKYW4gTWljaGFlbCBBbG9uem8gIDxqbWFsb256b0B3ZWJr
aXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFtHVEtdIEVycm9yIHJlcG9ydGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTgzNDQKKwogICAgICAgICBBZGQgdGhlIGRlZmF1bHQgZXJyb3IgcGFn
ZSBmb3IgaW5zdGFsbGF0aW9uLgogCiAgICAgICAgICogR05VbWFrZWZpbGUuYW06CkluZGV4OiBX
ZWJLaXQvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Lm9yaWcvV2ViQ29y
ZS9DaGFuZ2VMb2cJMjAwOS0wNC0xNCAwNjoyMDoxNy4wMDAwMDAwMDAgKzEwMDAKKysrIFdlYktp
dC9XZWJDb3JlL0NoYW5nZUxvZwkyMDA5LTA0LTE0IDA2OjIxOjQ0LjAwMDAwMDAwMCArMTAwMApA
QCAtMSwzICsxLDI0IEBACisyMDA5LTA0LTEzICBKYW4gTWljaGFlbCBBbG9uem8gIDxqbWFsb256
b0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFtHVEtdIEVycm9yIHJlcG9ydGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzNDQKKworICAgICAgICBBZGQgV2ViS2l0RXJyb3JzIGFu
ZCB1cGRhdGUgUmVzb3VyY2VFcnJvci1yZXBvcnRpbmcgbWV0aG9kcyB0byB1c2UKKyAgICAgICAg
dGhlIG5ldyBlcnJvciBkb21haW4vY29kZXMgZnJvbSBXZWJLaXRFcnJvcnMuCisKKyAgICAgICAg
KiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3Vy
Y2VIYW5kbGVTb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZpbmlzaGVkQ2FsbGJhY2spOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnN0YXJ0SHR0cCk6CisgICAgICAgIChX
ZWJDb3JlOjpyZXBvcnRVbmtub3duUHJvdG9jb2xFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpu
ZXR3b3JrRXJyb3JGb3JGaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpz
dGFydEdpbyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1dlYktpdEVycm9yLmNw
cDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1dlYktpdEVycm9yLmg6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6KToKKwogMjAwOS0wNC0xMiAgU2FtIFdlaW5pZyAg
PHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE1hcmsgUm93ZS4KSW5kZXg6
IFdlYktpdC9XZWJLaXQvZ3RrL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQub3JpZy9X
ZWJLaXQvZ3RrL0NoYW5nZUxvZwkyMDA5LTA0LTE0IDA2OjE5OjI3LjAwMDAwMDAwMCArMTAwMAor
KysgV2ViS2l0L1dlYktpdC9ndGsvQ2hhbmdlTG9nCTIwMDktMDQtMTQgMDY6MTk6MzIuMDAwMDAw
MDAwICsxMDAwCkBAIC01LDYgKzUsMjYgQEAKICAgICAgICAgW0dUS10gRXJyb3IgcmVwb3J0aW5n
CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODM0NAog
CisgICAgICAgIEltcGxlbWVudCBSZXNvdXJjZUVycm9yLXJlcG9ydGluZyBtZXRob2RzCisKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZhaWxMb2FkKToKKyAgICAg
ICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnQ6OmNhbmNlbGxlZEVycm9yKToKKyAgICAgICAg
KFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnQ6OmJsb2NrZWRFcnJvcik6CisgICAgICAgIChXZWJL
aXQ6OkZyYW1lTG9hZGVyQ2xpZW50OjpjYW5ub3RTaG93VVJMRXJyb3IpOgorICAgICAgICAoV2Vi
S2l0OjpGcmFtZUxvYWRlckNsaWVudDo6aW50ZXJydXB0Rm9yUG9saWN5Q2hhbmdlRXJyb3IpOgor
ICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudDo6Y2Fubm90U2hvd01JTUVUeXBlRXJy
b3IpOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudDo6ZmlsZURvZXNOb3RFeGlz
dEVycm9yKToKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnQ6OnBsdWdpbldpbGxI
YW5kbGVMb2FkRXJyb3IpOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudDo6c2hv
dWxkRmFsbEJhY2spOgorCisyMDA5LTA0LTEzICBKYW4gTWljaGFlbCBBbG9uem8gIDxqbWFsb256
b0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFtHVEtdIEVycm9yIHJlcG9ydGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzNDQKKwogICAgICAgICBEaXNwbGF5IGEgZGVmYXVsdCBl
cnJvciBwYWdlIGZvciBsb2FkIGVycm9ycy4KIAogICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50R3RrLmNwcDoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>29751</attachid>
            <date>2009-04-24 12:03:49 -0700</date>
            <delta_ts>2009-04-24 15:49:19 -0700</delta_ts>
            <desc>[1/3] Add API to load content for unreachable URL - v2</desc>
            <filename>error-frameapi</filename>
            <type>text/plain</type>
            <size>10027</size>
            <attacher name="Jan Alonzo">jmalonzo</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
R3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQub3JpZy9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAkyMDA5LTA0LTI0IDIwOjQ5OjEyLjAwMDAwMDAw
MCArMTAwMAorKysgV2ViS2l0L1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRHdGsuY3BwCTIwMDktMDQtMjQgMjA6NTA6MzMuMDAwMDAwMDAwICsxMDAwCkBAIC01Nyw2
ICs1Nyw3IEBACiAjaW5jbHVkZSAid2Via2l0cHJpdmF0ZS5oIgogCiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvQVBJQ2FzdC5oPgorI2luY2x1ZGUgPGdsaWIuaD4KICNpbmNsdWRlIDxzdGRpby5o
PgogI2lmIFBMQVRGT1JNKFVOSVgpCiAjaW5jbHVkZSA8c3lzL3V0c25hbWUuaD4KQEAgLTI2MCw4
ICsyNjEsMTEgQEAKIAogICAgIC8vIFdlIGNhbiBnZXQgYSBzdG9wTG9hZCgpIGZyb20gZGlzcG9z
ZSB3aGVuIHRoZSBvYmplY3QgaXMgYmVpbmcKICAgICAvLyBkZXN0cm95ZWQsIGRvbid0IGVtaXQg
dGhlIHNpZ25hbCBpbiB0aGF0IGNhc2UuCi0gICAgaWYgKCFwcml2YXRlRGF0YS0+ZGlzcG9zaW5n
KQotICAgICAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUod2ViVmlldywgImxvYWQtZmluaXNoZWQi
LCBtX2ZyYW1lKTsKKyAgICBpZiAocHJpdmF0ZURhdGEtPmRpc3Bvc2luZykKKyAgICAgICAgcmV0
dXJuOworCisgICAgZ2Jvb2xlYW4gaGFuZGxlZDsKKyAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUo
d2ViVmlldywgImxvYWQtZmluaXNoZWQiLCBtX2ZyYW1lLCBOVUxMLCBOVUxMLCAmaGFuZGxlZCk7
CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmZyYW1lTG9hZGVyRGVzdHJveWVkKCkKQEAg
LTgxMSw4ICs4MTUsOSBAQAogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgRnJhbWVM
b2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmFpbExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqLCB1bnNp
Z25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImKQordm9pZCBGcmFtZUxv
YWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGYWlsTG9hZGluZyhEb2N1bWVudExvYWRlciosIHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7CisgICAg
Ly8gRklYTUU6IHdoZW4gZG9lcyB0aGlzIG9jY3VyIGFuZCB3aGF0IHNob3VsZCBoYXBwZW4/CiAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIApAQCAtODIyLDEzICs4MjcsMzUgQEAKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmFpbFBy
b3Zpc2lvbmFsTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJikKK3ZvaWQgRnJhbWVMb2FkZXJDbGll
bnQ6OmRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJiBl
cnJvcikKIHsKKyAgICBkaXNwYXRjaERpZEZhaWxMb2FkKGVycm9yKTsKKworICAgIC8vIEZJWE1F
OiB0aGlzIGlzIGhlcmUgZm9yIGNvbXBhdGliaWxpdHkncyBzYWtlLgogICAgIGdfc2lnbmFsX2Vt
aXRfYnlfbmFtZShtX2ZyYW1lLCAibG9hZC1kb25lIiwgZmFsc2UpOwogfQogCi12b2lkIEZyYW1l
TG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZhaWxMb2FkKGNvbnN0IFJlc291cmNlRXJyb3ImKQor
dm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGYWlsTG9hZChjb25zdCBSZXNvdXJj
ZUVycm9yJiBlcnJvcikKIHsKKyAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gZ2V0Vmlld0Zy
b21GcmFtZShtX2ZyYW1lKTsKKyAgICBHRXJyb3IqIHdlYkVycm9yID0gZ19lcnJvcl9uZXdfbGl0
ZXJhbChnX3F1YXJrX2Zyb21fc3RyaW5nKGVycm9yLmRvbWFpbigpLnV0ZjgoKS5kYXRhKCkpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yLmVycm9yQ29k
ZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yLmxv
Y2FsaXplZERlc2NyaXB0aW9uKCkudXRmOCgpLmRhdGEoKSk7CisgICAgZ2Jvb2xlYW4gaGFuZGxl
ZCA9IGZhbHNlOworICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZSh3ZWJWaWV3LCAibG9hZC1lcnJv
ciIsIG1fZnJhbWUsIGVycm9yLmZhaWxpbmdVUkwoKS51dGY4KCkuZGF0YSgpLCB3ZWJFcnJvciwg
JmhhbmRsZWQpOworCisgICAgaWYgKGhhbmRsZWQpIHsKKyAgICAgICAgZ19lcnJvcl9mcmVlKHdl
YkVycm9yKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFN0cmluZyBjb250ZW50ID0g
U3RyaW5nOjpmb3JtYXQoIjxodG1sPjxoZWFkPjx0aXRsZT4lZDwvdGl0bGU+PC9oZWFkPjxib2R5
PiVzPC9ib2R5PjwvaHRtbD4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZXJyb3IuZXJyb3JDb2RlKCksIHdlYkVycm9yLT5tZXNzYWdlKTsKKyAgICB3ZWJraXRfd2ViX2Zy
YW1lX2xvYWRfYWx0ZXJuYXRlX3N0cmluZyhtX2ZyYW1lLCBjb250ZW50LnV0ZjgoKS5kYXRhKCks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgZXJyb3Iu
ZmFpbGluZ1VSTCgpLnV0ZjgoKS5kYXRhKCkpOworICAgIGdfZXJyb3JfZnJlZSh3ZWJFcnJvcik7
CisKKyAgICAvLyBGSVhNRTogdGhpcyBpcyBoZXJlIGZvciBjb21wYXRpYmlsaXR5J3Mgc2FrZS4K
ICAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUobV9mcmFtZSwgImxvYWQtZG9uZSIsIGZhbHNlKTsK
IH0KIApJbmRleDogV2ViS2l0L1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmZyYW1lLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQub3JpZy9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJmcmFt
ZS5jcHAJMjAwOS0wNC0yNCAyMDo0OToxMi4wMDAwMDAwMDAgKzEwMDAKKysrIFdlYktpdC9XZWJL
aXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJmcmFtZS5jcHAJMjAwOS0wNC0yNCAyMDo1MDozMy4wMDAw
MDAwMDAgKzEwMDAKQEAgLTE2Nyw2ICsxNjcsMTUgQEAKICAgICAgICAgICAgIGdfY2Nsb3N1cmVf
bWFyc2hhbF9WT0lEX19WT0lELAogICAgICAgICAgICAgR19UWVBFX05PTkUsIDApOwogCisgICAg
LyoqCisgICAgICogV2ViS2l0V2ViRnJhbWU6OmxvYWQtZG9uZQorICAgICAqIEB3ZWJfZnJhbWU6
IHRoZSBvYmplY3Qgb24gd2hpY2ggdGhlIHNpZ25hbCBpcyBlbWl0dGVkCisgICAgICoKKyAgICAg
KiBFbWl0dGVkIHdoZW4gZnJhbWUgbG9hZGluZyBpcyBkb25lLgorICAgICAqCisgICAgICogRGVw
cmVjYXRlZDogVXNlIFdlYktpdFdlYlZpZXc6OmxvYWQtZmluaXNoZWQgaW5zdGVhZCwgYW5kL29y
CisgICAgICogV2ViS2l0V2ViVmlldzo6bG9hZC1lcnJvciB0byBiZSBub3RpZmllZCBvZiBsb2Fk
IGVycm9ycworICAgICAqLwogICAgIHdlYmtpdF93ZWJfZnJhbWVfc2lnbmFsc1tMT0FEX0RPTkVd
ID0gZ19zaWduYWxfbmV3KCJsb2FkLWRvbmUiLAogICAgICAgICAgICAgR19UWVBFX0ZST01fQ0xB
U1MoZnJhbWVDbGFzcyksCiAgICAgICAgICAgICAoR1NpZ25hbEZsYWdzKShHX1NJR05BTF9SVU5f
TEFTVCB8IEdfU0lHTkFMX0FDVElPTiksCkBAIC0zOTgsNiArNDA3LDI2IEBACiAgICAgY29yZUZy
YW1lLT5sb2FkZXIoKS0+bG9hZChSZXNvdXJjZVJlcXVlc3QoS1VSTChLVVJMKCksIFN0cmluZzo6
ZnJvbVVURjgodXJpKSkpLCBmYWxzZSk7CiB9CiAKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfZnJh
bWVfbG9hZF9kYXRhKFdlYktpdFdlYkZyYW1lKiBmcmFtZSwgY29uc3QgZ2NoYXIqIGNvbnRlbnQs
IGNvbnN0IGdjaGFyKiBtaW1lVHlwZSwgY29uc3QgZ2NoYXIqIGVuY29kaW5nLCBjb25zdCBnY2hh
ciogYmFzZVVSTCwgY29uc3QgZ2NoYXIqIHVucmVhY2hhYmxlVVJMKQoreworICAgIEZyYW1lKiBj
b3JlRnJhbWUgPSBjb3JlKGZyYW1lKTsKKyAgICBBU1NFUlQoY29yZUZyYW1lKTsKKworICAgIEtV
UkwgYmFzZXVybCA9IChiYXNlVVJMKSA/IEtVUkwoS1VSTCgpLCBTdHJpbmc6OmZyb21VVEY4KGJh
c2VVUkwpKSA6IGJsYW5rVVJMKCk7CisKKyAgICAvLyBGSVhNRTogY29udmVydCBiYXNldXJsIGFu
ZCB1bnJlYWNoYWJsZVVSTCB0byBhbiBhYnNvbHV0ZSB1cmwKKyAgICBSZXNvdXJjZVJlcXVlc3Qg
cmVxdWVzdChiYXNldXJsKTsKKworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZl
ciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNvbnRlbnQsIGdfdXRmOF9zdHJsZW4oY29udGVudCwg
LTEpKTsKKyAgICBTdWJzdGl0dXRlRGF0YSBzdWJzdGl0dXRlRGF0YShzaGFyZWRCdWZmZXIucmVs
ZWFzZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbWVUeXBlID8gU3Ry
aW5nOjpmcm9tVVRGOChtaW1lVHlwZSkgOiBTdHJpbmc6OmZyb21VVEY4KCJ0ZXh0L2h0bWwiKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGluZyA/IFN0cmluZzo6ZnJv
bVVURjgoZW5jb2RpbmcpIDogU3RyaW5nOjpmcm9tVVRGOCgiVVRGLTgiKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBiYXNldXJsLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEtVUkwoS1VSTCgpLCBTdHJpbmc6OmZyb21VVEY4KHVucmVhY2hhYmxlVVJMKSkp
OworCisgICAgY29yZUZyYW1lLT5sb2FkZXIoKS0+bG9hZChyZXF1ZXN0LCBzdWJzdGl0dXRlRGF0
YSwgZmFsc2UpOworfQorCiAvKioKICAqIHdlYmtpdF93ZWJfZnJhbWVfbG9hZF9zdHJpbmc6CiAg
KiBAZnJhbWU6IGEgI1dlYktpdFdlYkZyYW1lCkBAIC00MjAsMTUgKzQ0OSwyNyBAQAogICAgIGdf
cmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9GUkFNRShmcmFtZSkpOwogICAgIGdfcmV0dXJu
X2lmX2ZhaWwoY29udGVudCk7CiAKLSAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShmcmFtZSk7
Ci0gICAgaWYgKCFjb3JlRnJhbWUpCi0gICAgICAgIHJldHVybjsKKyAgICB3ZWJraXRfd2ViX2Zy
YW1lX2xvYWRfZGF0YShmcmFtZSwgY29udGVudCwgY29udGVudE1pbWVUeXBlLCBjb250ZW50RW5j
b2RpbmcsIGJhc2VVcmksIE5VTEwpOworfQogCi0gICAgS1VSTCB1cmwoS1VSTCgpLCBiYXNlVXJp
ID8gU3RyaW5nOjpmcm9tVVRGOChiYXNlVXJpKSA6ICIiKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShjb250ZW50LCBzdHJsZW4o
Y29udGVudCkpOwotICAgIFN1YnN0aXR1dGVEYXRhIHN1YnN0aXR1dGVEYXRhKHNoYXJlZEJ1ZmZl
ci5yZWxlYXNlKCksIGNvbnRlbnRNaW1lVHlwZSA/IFN0cmluZyhjb250ZW50TWltZVR5cGUpIDog
InRleHQvaHRtbCIsIGNvbnRlbnRFbmNvZGluZyA/IFN0cmluZyhjb250ZW50RW5jb2RpbmcpIDog
IlVURi04IiwgYmxhbmtVUkwoKSwgdXJsKTsKKy8qKgorICogd2Via2l0X3dlYl9mcmFtZV9sb2Fk
X2FsdGVybmF0ZV9zdHJpbmc6CisgKiBAZnJhbWU6IGEgI1dlYktpdFdlYkZyYW1lCisgKiBAY29u
dGVudDogdGhlIGFsdGVybmF0ZSBjb250ZW50IHRvIGRpc3BsYXkgYXMgdGhlIG1haW4gcGFnZSBv
ZiB0aGUgQGZyYW1lCisgKiBAYmFzZV91cmw6IHRoZSBiYXNlIFVSSSBmb3IgcmVsYXRpdmUgbG9j
YXRpb25zCisgKiBAdW5yZWFjaGFibGVfdXJsOiB0aGUgVVJMIGZvciB0aGUgYWx0ZXJuYXRlIHBh
Z2UgY29udGVudAorICoKKyAqIFJlcXVlc3QgbG9hZGluZyBvZiBhbiBhbHRlcm5hdGUgY29udGVu
dCBmb3IgYSBVUkwgdGhhdCBpcyB1bnJlYWNoYWJsZS4KKyAqIFVzaW5nIHRoaXMgbWV0aG9kIHdp
bGwgcHJlc2VydmUgdGhlIGJhY2stZm9yd2FyZCBsaXN0LgorICoKKyAqIFNpbmNlOiAxLjEuNgor
ICovCit2b2lkIHdlYmtpdF93ZWJfZnJhbWVfbG9hZF9hbHRlcm5hdGVfc3RyaW5nKFdlYktpdFdl
YkZyYW1lKiBmcmFtZSwgY29uc3QgZ2NoYXIqIGNvbnRlbnQsIGNvbnN0IGdjaGFyKiBiYXNlVVJM
LCBjb25zdCBnY2hhciogdW5yZWFjaGFibGVVUkwpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChX
RUJLSVRfSVNfV0VCX0ZSQU1FKGZyYW1lKSk7CisgICAgZ19yZXR1cm5faWZfZmFpbChjb250ZW50
KTsKIAotICAgIGNvcmVGcmFtZS0+bG9hZGVyKCktPmxvYWQoUmVzb3VyY2VSZXF1ZXN0KHVybCks
IHN1YnN0aXR1dGVEYXRhLCBmYWxzZSk7CisgICAgd2Via2l0X3dlYl9mcmFtZV9sb2FkX2RhdGEo
ZnJhbWUsIGNvbnRlbnQsIE5VTEwsIE5VTEwsIGJhc2VVUkwsIHVucmVhY2hhYmxlVVJMKTsKIH0K
IAogLyoqCkluZGV4OiBXZWJLaXQvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViZnJhbWUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQub3JpZy9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJmcmFt
ZS5oCTIwMDktMDQtMjQgMjA6NDk6MTIuMDAwMDAwMDAwICsxMDAwCisrKyBXZWJLaXQvV2ViS2l0
L2d0ay93ZWJraXQvd2Via2l0d2ViZnJhbWUuaAkyMDA5LTA0LTI0IDIwOjUwOjMzLjAwMDAwMDAw
MCArMTAwMApAQCAtOTQsNiArOTQsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBnY2hhciAgICAgICAgICAqYmFzZV91cmkpOwogCiBXRUJLSVRfQVBJIHZv
aWQKK3dlYmtpdF93ZWJfZnJhbWVfbG9hZF9hbHRlcm5hdGVfc3RyaW5nIChXZWJLaXRXZWJGcmFt
ZSAgICAqZnJhbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgZ2NoYXIgICAgICAgKmNvbnRlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgZ2NoYXIgICAgICAgKmJhc2VfdXJsLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgICAgICp1bnJlYWNoYWJsZV91cmwp
OworCitXRUJLSVRfQVBJIHZvaWQKIHdlYmtpdF93ZWJfZnJhbWVfbG9hZF9yZXF1ZXN0ICAgICAg
IChXZWJLaXRXZWJGcmFtZSAgICAgICAqZnJhbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgV2ViS2l0TmV0d29ya1JlcXVlc3QgKnJlcXVlc3QpOwogCkluZGV4OiBXZWJL
aXQvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0Lm9yaWcvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAJMjAwOS0wNC0yNCAy
MDo0OToxMi4wMDAwMDAwMDAgKzEwMDAKKysrIFdlYktpdC9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJr
aXR3ZWJ2aWV3LmNwcAkyMDA5LTA0LTI0IDIwOjUwOjMzLjAwMDAwMDAwMCArMTAwMApAQCAtMTIy
LDYgKzEyMiw3IEBACiAgICAgTE9BRF9TVEFSVEVELAogICAgIExPQURfQ09NTUlUVEVELAogICAg
IExPQURfUFJPR1JFU1NfQ0hBTkdFRCwKKyAgICBMT0FEX0VSUk9SLAogICAgIExPQURfRklOSVNI
RUQsCiAgICAgVElUTEVfQ0hBTkdFRCwKICAgICBIT1ZFUklOR19PVkVSX0xJTkssCkBAIC0xMzA3
LDYgKzEzMDgsMzEgQEAKICAgICAgICAgICAgIEdfVFlQRV9OT05FLCAxLAogICAgICAgICAgICAg
R19UWVBFX0lOVCk7CiAKKyAgICAvKioKKyAgICAgKiBXZWJLaXRXZWJWaWV3Ojpsb2FkLWVycm9y
CisgICAgICogQHdlYl92aWV3OiB0aGUgb2JqZWN0IG9uIHdoaWNoIHRoZSBzaWduYWwgaXMgZW1p
dHRlZAorICAgICAqIEB3ZWJfZnJhbWU6IHRoZSAjV2ViS2l0V2ViRnJhbWUKKyAgICAgKiBAdXJp
OiB0aGUgVVJJIHRoYXQgdHJpZ2dlcmVkIHRoZSBlcnJvcgorICAgICAqIEB3ZWJfZXJyb3I6IHRo
ZSAjR0Vycm9yIHRoYXQgd2FzIHRyaWdnZXJlZAorICAgICAqCisgICAgICogQW4gZXJyb3Igb2Nj
dXJyZWQgd2hpbGUgbG9hZGluZy4gQnkgZGVmYXVsdCwgaWYgdGhlIHNpZ25hbCBpcyBub3QKKyAg
ICAgKiBoYW5kbGVkLCB0aGUgQHdlYl92aWV3IHdpbGwgZGlzcGxheSBhIHN0b2NrIGVycm9yIHBh
Z2UuIFlvdSBuZWVkIHRvCisgICAgICogaGFuZGxlIHRoZSBzaWduYWwgaWYgeW91IHdhbnQgdG8g
cHJvdmlkZSB5b3VyIG93biBlcnJvciBwYWdlLgorICAgICAqCisgICAgICogU2luY2U6IDEuMS42
CisgICAgICovCisgICAgd2Via2l0X3dlYl92aWV3X3NpZ25hbHNbTE9BRF9FUlJPUl0gPSBnX3Np
Z25hbF9uZXcoImxvYWQtZXJyb3IiLAorICAgICAgICAgICAgR19UWVBFX0ZST01fQ0xBU1Mod2Vi
Vmlld0NsYXNzKSwKKyAgICAgICAgICAgIChHU2lnbmFsRmxhZ3MpKEdfU0lHTkFMX1JVTl9MQVNU
IHwgR19TSUdOQUxfQUNUSU9OKSwKKyAgICAgICAgICAgIDAsCisgICAgICAgICAgICBnX3NpZ25h
bF9hY2N1bXVsYXRvcl90cnVlX2hhbmRsZWQsCisgICAgICAgICAgICBOVUxMLAorICAgICAgICAg
ICAgd2Via2l0X21hcnNoYWxfQk9PTEVBTl9fT0JKRUNUX1NUUklOR19QT0lOVEVSLAorICAgICAg
ICAgICAgR19UWVBFX0JPT0xFQU4sIDMsCisgICAgICAgICAgICBXRUJLSVRfVFlQRV9XRUJfRlJB
TUUsCisgICAgICAgICAgICBHX1RZUEVfU1RSSU5HLAorICAgICAgICAgICAgR19UWVBFX1BPSU5U
RVIpOworCiAgICAgd2Via2l0X3dlYl92aWV3X3NpZ25hbHNbTE9BRF9GSU5JU0hFRF0gPSBnX3Np
Z25hbF9uZXcoImxvYWQtZmluaXNoZWQiLAogICAgICAgICAgICAgR19UWVBFX0ZST01fQ0xBU1Mo
d2ViVmlld0NsYXNzKSwKICAgICAgICAgICAgIChHU2lnbmFsRmxhZ3MpKEdfU0lHTkFMX1JVTl9M
QVNUIHwgR19TSUdOQUxfQUNUSU9OKSwKSW5kZXg6IFdlYktpdC9XZWJLaXQvZ3RrL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQub3JpZy9XZWJLaXQvZ3RrL0NoYW5nZUxvZwkyMDA5LTA0
LTI0IDIxOjE1OjI3LjAwMDAwMDAwMCArMTAwMAorKysgV2ViS2l0L1dlYktpdC9ndGsvQ2hhbmdl
TG9nCTIwMDktMDQtMjQgMjE6MTc6NTIuMDAwMDAwMDAwICsxMDAwCkBAIC0xLDMgKzEsMjIgQEAK
KzIwMDktMDQtMjQgIEphbiBNaWNoYWVsIEFsb256byAgPGptYWxvbnpvQHdlYmtpdC5vcmc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0dUS10gRXJy
b3IgcmVwb3J0aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xODM0NAorCisgICAgICAgIEFkZCBhIFdlYktpdFdlYkZyYW1lIEFQSSB0byBsb2FkIGFs
dGVybmF0ZSBjb250ZW50IGZvciB1bnJlYWNoYWJsZSBVUkxzLgorICAgICAgICBBbHNvIGFkZCBh
IG5ldyBzaWduYWwgImxvYWQtZXJyb3IiIGZvciBoYW5kbGluZyBsb2FkIGVycm9ycy4KKworICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnQ6OnBvc3RQcm9ncmVzc0ZpbmlzaGVkTm90aWZpY2F0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmFp
bExvYWRpbmcpOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hE
aWRGYWlsUHJvdmlzaW9uYWxMb2FkKToKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGll
bnQ6OmRpc3BhdGNoRGlkRmFpbExvYWQpOgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJmcmFt
ZS5jcHA6CisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYmZyYW1lLmg6CisgICAgICAgICogd2Vi
a2l0L3dlYmtpdHdlYnZpZXcuY3BwOgorCiAyMDA5LTA0LTIxICBYYW4gTG9wZXogIDx4bG9wZXpA
aWdhbGlhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBHdXN0YXZvIE5vcm9uaGEuCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>29752</attachid>
            <date>2009-04-24 12:09:51 -0700</date>
            <delta_ts>2009-04-24 15:51:46 -0700</delta_ts>
            <desc>[2/3] Add default page for error reporting - v2</desc>
            <filename>error-page</filename>
            <type>text/plain</type>
            <size>5661</size>
            <attacher name="Jan Alonzo">jmalonzo</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9HTlVtYWtlZmlsZS5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQub3JpZy9H
TlVtYWtlZmlsZS5hbQkyMDA5LTA0LTI0IDIwOjQ5OjExLjAwMDAwMDAwMCArMTAwMAorKysgV2Vi
S2l0L0dOVW1ha2VmaWxlLmFtCTIwMDktMDQtMjQgMjE6MTk6MzcuMDAwMDAwMDAwICsxMDAwCkBA
IC00NDksOCArNDQ5LDYgQEAKIAkmJiBjcCB4Z2VuLWd0YyAkQCBcCiAJJiYgcm0gLWYgeGdlbi1n
dGMKIAotIyBFTkQgV0VCS0lUIEdUSysKLSMKICMgRmlsZXMgdGhhdCB3aWxsIGJlIGRpc3RyaWJ1
dGVkCiBFWFRSQV9ESVNUID0gXAogCVdlYktpdC9MSUNFTlNFIFwKQEAgLTQ2NSw3ICs0NjMsMTUg
QEAKIAkkKHNyY2RpcikvV2ViS2l0L2d0ay9kb2NzL3dlYmtpdGd0ay1kb2NzLnNnbWwgXAogCSQo
c3JjZGlyKS9XZWJLaXQvZ3RrL2RvY3Mvd2Via2l0Z3RrLXNlY3Rpb25zLnR4dCBcCiAJJChzcmNk
aXIpL1dlYktpdC9ndGsvZG9jcy92ZXJzaW9uLnhtbC5pbiBcCi0JJChzcmNkaXIpL1dlYktpdC9n
dGsvcG8vKgorCSQoc3JjZGlyKS9XZWJLaXQvZ3RrL3BvLyogXAorCSQoc3JjZGlyKS9XZWJLaXQv
Z3RrL3Jlc291cmNlcy8qCisKKyMgZXh0cmEgcmVzb3VyY2UgZmlsZXMKK3Jlc291cmNlc2RpciA9
ICR7ZGF0YWRpcn0vd2Via2l0LTEuMC9yZXNvdXJjZXMKK2Rpc3RfcmVzb3VyY2VzX0RBVEEgPSBc
CisJJChzaGVsbCBscyAkKHNyY2RpcikvV2ViS2l0L2d0ay9yZXNvdXJjZXMvKi5odG1sKQorCisj
IEVORCBXRUJLSVQgR1RLKwogCiAjIEZpbGVzIHRoYXQgd2lsbCBiZSBjbGVhbmVkCiBNQUlOVEFJ
TkVSQ0xFQU5GSUxFUyA6PSAkKHN0YW1wX2ZpbGVzKSAkKEJVSUxUX1NPVVJDRVMpIGRvbHRjb21w
aWxlIGRvbHRsaWJ0b29sIFdlYktpdC9ndGsvZG9jcy92ZXJzaW9uLnhtbCBXZWJLaXQvZ3RrL2Rv
Y3MvR05VbWFrZWZpbGUKQEAgLTU2NCw0ICs1NzAsNCBAQAogCiBpbnN0YWxsZGlycy1kYXRhLWxv
Y2FsOiBwby1pbnN0YWxsZGlycy1kYXRhLWxvY2FsCiAKLXVuaW5zdGFsbC1sb2NhbDogcG8tdW5p
bnN0YWxsLWxvY2FsClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQordW5pbnN0YWxsLWxvY2Fs
OiBwby11bmluc3RhbGwtbG9jYWwKSW5kZXg6IFdlYktpdC9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQub3JpZy9X
ZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAkyMDA5LTA0
LTI0IDIwOjUwOjMzLjAwMDAwMDAwMCArMTAwMAorKysgV2ViS2l0L1dlYktpdC9ndGsvV2ViQ29y
ZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCTIwMDktMDQtMjQgMjE6MjI6MTEuMDAw
MDAwMDAwICsxMDAwCkBAIC01Nyw2ICs1Nyw3IEBACiAjaW5jbHVkZSAid2Via2l0cHJpdmF0ZS5o
IgogCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQVBJQ2FzdC5oPgorI2luY2x1ZGUgPGdpby9n
aW8uaD4KICNpbmNsdWRlIDxnbGliLmg+CiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpZiBQTEFURk9S
TShVTklYKQpAQCAtODQ5LDEwICs4NTAsMjggQEAKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIFN0cmluZyBjb250ZW50ID0gU3RyaW5nOjpmb3JtYXQoIjxodG1sPjxoZWFkPjx0aXRsZT4l
ZDwvdGl0bGU+PC9oZWFkPjxib2R5PiVzPC9ib2R5PjwvaHRtbD4iLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZXJyb3IuZXJyb3JDb2RlKCksIHdlYkVycm9yLT5tZXNzYWdl
KTsKLSAgICB3ZWJraXRfd2ViX2ZyYW1lX2xvYWRfYWx0ZXJuYXRlX3N0cmluZyhtX2ZyYW1lLCBj
b250ZW50LnV0ZjgoKS5kYXRhKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgTlVMTCwgZXJyb3IuZmFpbGluZ1VSTCgpLnV0ZjgoKS5kYXRhKCkpOworICAgIFN0
cmluZyBjb250ZW50OworICAgIGdjaGFyKiBmaWxlQ29udGVudCA9IDA7CisgICAgR0ZpbGUqIGVy
cm9yRmlsZSA9IGdfZmlsZV9uZXdfZm9yX3VyaSgiZmlsZTovLyJEQVRBX0RJUiIvd2Via2l0LTEu
MC9yZXNvdXJjZXMvZXJyb3IuaHRtbCIpOworCisgICAgaWYgKCFlcnJvckZpbGUpCisgICAgICAg
IGNvbnRlbnQgPSBTdHJpbmc6OmZvcm1hdCgiPGh0bWw+PGJvZHk+JXM8L2JvZHk+PC9odG1sPiIs
IHdlYkVycm9yLT5tZXNzYWdlKTsKKyAgICBlbHNlIHsKKyAgICAgICAgZ2Jvb2xlYW4gbG9hZGVk
ID0gZ19maWxlX2xvYWRfY29udGVudHMoZXJyb3JGaWxlLCBOVUxMLCAmZmlsZUNvbnRlbnQsIDAs
IDAsIDApOworICAgICAgICBpZiAoIWxvYWRlZCkKKyAgICAgICAgICAgIGNvbnRlbnQgPSBTdHJp
bmc6OmZvcm1hdCgiPGh0bWw+PGJvZHk+JXM8L2JvZHk+PC9odG1sPiIsIHdlYkVycm9yLT5tZXNz
YWdlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY29udGVudCA9IFN0cmluZzo6Zm9ybWF0
KGZpbGVDb250ZW50LCBlcnJvci5mYWlsaW5nVVJMKCkudXRmOCgpLmRhdGEoKSwgd2ViRXJyb3It
Pm1lc3NhZ2UpOworICAgIH0KKworICAgIHdlYmtpdF93ZWJfZnJhbWVfbG9hZF9hbHRlcm5hdGVf
c3RyaW5nKG1fZnJhbWUsIGNvbnRlbnQudXRmOCgpLmRhdGEoKSwgMCwgZXJyb3IuZmFpbGluZ1VS
TCgpLnV0ZjgoKS5kYXRhKCkpOworCisgICAgaWYgKGZpbGVDb250ZW50KQorICAgICAgICBnX2Zy
ZWUoZmlsZUNvbnRlbnQpOworCisgICAgaWYgKGVycm9yRmlsZSkKKyAgICAgICAgZ19vYmplY3Rf
dW5yZWYoZXJyb3JGaWxlKTsKKwogICAgIGdfZXJyb3JfZnJlZSh3ZWJFcnJvcik7CiAKICAgICAv
LyBGSVhNRTogdGhpcyBpcyBoZXJlIGZvciBjb21wYXRpYmlsaXR5J3Mgc2FrZS4KSW5kZXg6IFdl
YktpdC9XZWJLaXQvZ3RrL3Jlc291cmNlcy9lcnJvci5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIC9kZXYv
bnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAorKysgV2ViS2l0L1dlYktp
dC9ndGsvcmVzb3VyY2VzL2Vycm9yLmh0bWwJMjAwOS0wNC0yNCAyMToxOTozNy4wMDAwMDAwMDAg
KzEwMDAKQEAgLTAsMCArMSw2MSBAQAorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5FcnJvcjwvdGl0
bGU+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorYm9keSB7CisgYmFja2dyb3VuZC1jb2xvcjog
I2ZmZjsKKyBtYXJnaW46IDA7CisgcGFkZGluZzogMDsKK30KKworI2Vycm9yQ29udGFpbmVyIHsK
KyBiYWNrZ3JvdW5kOiAjZmZmOworIG1pbi13aWR0aDogMzVlbTsKKyBtYXgtd2lkdGg6IDM1ZW07
CisgcG9zaXRpb246IGFic29sdXRlOworIHRvcDogMmVtOworIGxlZnQ6IDFlbTsKKyBwYWRkaW5n
OiAxMHB4OworIGJvcmRlcjogMnB4IHNvbGlkICNlZWU7CisgLXdlYmtpdC1ib3JkZXItcmFkaXVz
OiA1cHg7Cit9CisKKyNlcnJvclRpdGxlVGV4dCB7CisgZm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7
CisgZm9udC1zaXplOiAxMjAlOworIGZvbnQtd2VpZ2h0OiBib2xkOworfQorCisjZXJyb3JNZXNz
YWdlVGV4dCB7CisgZm9udDogODAlIFZlcmRhbmEsIHNhbnMtc2VyaWY7Cit9CisKKzwvc3R5bGU+
Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisKK2Z1bmN0aW9uIHRyeWFnYWluKCkK
K3sKKyBsb2NhdGlvbi5yZWxvYWQoKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
ZGl2IGlkPSJlcnJvckNvbnRhaW5lciI+CisKKzxkaXYgaWQ9ImVycm9yVGl0bGUiPgorIDxwIGlk
PSJlcnJvclRpdGxlVGV4dCI+VW5hYmxlIHRvIGxvYWQgcGFnZTwvcD4KKzwvZGl2PgorPGRpdiBp
ZD0iZXJyb3JNZXNzYWdlIj4KKyA8cD5Qcm9ibGVtIG9jY3VycmVkIHdoaWxlIGxvYWRpbmcgdGhl
IFVSTCAlczwvcD4KKyA8cCBpZD0iZXJyb3JNZXNzYWdlVGV4dCI+JXM8L2E+Cis8L3A+Cis8L2Rp
dj4KKworPGZvcm0gbmFtZT0iYmwiIG9uc3VibWl0PSJ0cnlhZ2FpbigpIj4KKzxpbnB1dCB0eXBl
PSJzdWJtaXQiIHZhbHVlPSJ0cnkgYWdhaW4iLz4KKzwvZm9ybT4KKworPC9kaXY+CisKKzwvYm9k
eT4KKzwvaHRtbD4KSW5kZXg6IFdlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
Lm9yaWcvQ2hhbmdlTG9nCTIwMDktMDQtMjQgMjE6MTk6NTEuMDAwMDAwMDAwICsxMDAwCisrKyBX
ZWJLaXQvQ2hhbmdlTG9nCTIwMDktMDQtMjQgMjI6MjM6MDEuMDAwMDAwMDAwICsxMDAwCkBAIC0x
LDMgKzEsMTQgQEAKKzIwMDktMDQtMjQgIEphbiBNaWNoYWVsIEFsb256byAgPGptYWxvbnpvQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgW0dUS10gRXJyb3IgcmVwb3J0aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xODM0NAorCisgICAgICAgIEFkZCB0aGUgZGVmYXVsdCBlcnJvciBw
YWdlIGZvciBpbnN0YWxsYXRpb24uCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKwogMjAw
OS0wNC0yNCAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBub2tpYS5jb20+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgQXJpeWEgSGlkYXlhdC4KSW5kZXg6IFdlYktpdC9XZWJLaXQvZ3Rr
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQub3JpZy9XZWJLaXQvZ3RrL0NoYW5nZUxv
ZwkyMDA5LTA0LTI0IDIxOjE5OjUxLjAwMDAwMDAwMCArMTAwMAorKysgV2ViS2l0L1dlYktpdC9n
dGsvQ2hhbmdlTG9nCTIwMDktMDQtMjQgMjI6MjI6MDcuMDAwMDAwMDAwICsxMDAwCkBAIC01LDYg
KzUsMTkgQEAKICAgICAgICAgW0dUS10gRXJyb3IgcmVwb3J0aW5nCiAgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODM0NAogCisgICAgICAgIERpc3BsYXkg
YSBkZWZhdWx0IGVycm9yIHBhZ2UgZm9yIGxvYWQgZXJyb3JzLgorCisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpGcmFt
ZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGYWlsTG9hZCk6CisgICAgICAgICogcmVzb3VyY2Vz
L2Vycm9yLmh0bWw6IEFkZGVkLgorCisyMDA5LTA0LTI0ICBKYW4gTWljaGFlbCBBbG9uem8gIDxq
bWFsb256b0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFtHVEtdIEVycm9yIHJlcG9ydGluZworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzNDQKKwogICAgICAgICBBZGQgYSBXZWJLaXRX
ZWJGcmFtZSBBUEkgdG8gbG9hZCBhbHRlcm5hdGUgY29udGVudCBmb3IgdW5yZWFjaGFibGUgVVJM
cy4KICAgICAgICAgQWxzbyBhZGQgYSBuZXcgc2lnbmFsICJsb2FkLWVycm9yIiBmb3IgaGFuZGxp
bmcgbG9hZCBlcnJvcnMuCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>29753</attachid>
            <date>2009-04-24 12:15:10 -0700</date>
            <delta_ts>2009-04-24 15:53:19 -0700</delta_ts>
            <desc>[3/3] implement resource error-using methods - v2</desc>
            <filename>error-resourceerror</filename>
            <type>text/plain</type>
            <size>21953</size>
            <attacher name="Jan Alonzo">jmalonzo</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dC5vcmlnL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0JMjAwOS0wNC0yNCAyMDo0OToxMC4wMDAwMDAw
MDAgKzEwMDAKKysrIFdlYktpdC9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCTIwMDktMDQtMjUgMDQ6
MjY6MDcuMDAwMDAwMDAwICsxMDAwCkBAIC0xNzU1LDYgKzE3NTUsMTAgQEAKIAlXZWJDb3JlL3Bs
dWdpbnMvZ3RrL3hlbWJlZC5oCiBlbmRpZgogCit3ZWJjb3JlZ3RrX2NwcGZsYWdzICs9IFwKKwkt
RFdURl9VU0VfU09VUD0xIFwKKwktSSQoc3JjZGlyKS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
c291cAorCiB3ZWJjb3JlZ3RrX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvcGFnZS9ndGsvQVhPYmpl
Y3RDYWNoZUF0ay5jcHAgXAogCVdlYkNvcmUvcGFnZS9ndGsvQWNjZXNzaWJpbGl0eU9iamVjdEF0
ay5jcHAgXApAQCAtMTg0MCwxMyArMTg0NCw3IEBACiAJV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmggXAogCVdlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMveGJtL1hCTUltYWdlRGVjb2Rlci5jcHAgXAogCVdlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMveGJtL1hCTUltYWdlRGVjb2Rlci5oIFwKLQlXZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvZ3RrL1RleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VHdGsuY3BwCi0KLXdlYmNvcmVfY3Bw
ZmxhZ3MgKz0gXAotCS1EV1RGX1VTRV9TT1VQPTEgXAotCS1JJChzcmNkaXIpL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9zb3VwCi0KLXdlYmNvcmVfc291cmNlcyArPSBcCisJV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L2d0ay9UZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVR3RrLmNwcCBcCiAJV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCBcCiAJ
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ29va2llSmFyU291cC5jcHAgXAogCVdlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0Nvb2tpZUphclNvdXAuaCBcCkBAIC0xODU2LDYgKzE4
NTQsNyBAQAogCVdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdC5o
IFwKIAlXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlc3BvbnNlLmgKIAor
CiBpZiBVU0VfR05PTUVLRVlSSU5HCiB3ZWJjb3JlX2NwcGZsYWdzICs9IFwKIAktRFdURl9VU0Vf
R05PTUVLRVlSSU5HPTEKSW5kZXg6IFdlYktpdC9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC5vcmlnL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAJMjAwOS0wNC0y
NCAyMDo0OToxMS4wMDAwMDAwMDAgKzEwMDAKKysrIFdlYktpdC9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwCTIwMDktMDQtMjUgMDQ6MjY6MDcuMDAw
MDAwMDAwICsxMDAwCkBAIC0xMjEsMTQgKzEyMSw2IEBACiAgICAgICAgIGdfbWFpbl9sb29wX3J1
bihtX21haW5Mb29wKTsKIH0KIAotZW51bQotewotICAgIEVSUk9SX1RSQU5TUE9SVCwKLSAgICBF
UlJPUl9VTktOT1dOX1BST1RPQ09MLAotICAgIEVSUk9SX0JBRF9OT05fSFRUUF9NRVRIT0QsCi0g
ICAgRVJST1JfVU5BQkxFX1RPX09QRU5fRklMRSwKLX07Ci0KIHN0YXRpYyB2b2lkIGNsZWFudXBH
aW9PcGVyYXRpb24oUmVzb3VyY2VIYW5kbGVJbnRlcm5hbCogaGFuZGxlKTsKIAogUmVzb3VyY2VI
YW5kbGVJbnRlcm5hbDo6flJlc291cmNlSGFuZGxlSW50ZXJuYWwoKQpAQCAtMzM5LDkgKzMzMSwx
MCBAQAogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoU09VUF9TVEFUVVNfSVNfVFJBTlNQT1JU
X0VSUk9SKG1zZy0+c3RhdHVzX2NvZGUpKSB7Ci0gICAgICAgIGNoYXIqIHVyaSA9IHNvdXBfdXJp
X3RvX3N0cmluZyhzb3VwX21lc3NhZ2VfZ2V0X3VyaShtc2cpLCBmYWxzZSk7Ci0gICAgICAgIFJl
c291cmNlRXJyb3IgZXJyb3IoIndlYmtpdC1uZXR3b3JrLWVycm9yIiwgRVJST1JfVFJBTlNQT1JU
LCB1cmksIFN0cmluZzo6ZnJvbVVURjgobXNnLT5yZWFzb25fcGhyYXNlKSk7Ci0gICAgICAgIGdf
ZnJlZSh1cmkpOworICAgICAgICBSZXNvdXJjZUVycm9yIGVycm9yKGdfcXVhcmtfdG9fc3RyaW5n
KFNPVVBfSFRUUF9FUlJPUiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnLT5zdGF0
dXNfY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VwX3VyaV90b19zdHJpbmco
c291cF9tZXNzYWdlX2dldF91cmkobXNnKSwgZmFsc2UpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFN0cmluZzo6ZnJvbVVURjgobXNnLT5yZWFzb25fcGhyYXNlKSk7CiAgICAgICAgIGNs
aWVudC0+ZGlkRmFpbChoYW5kbGUuZ2V0KCksIGVycm9yKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KQEAgLTUzNCw3ICs1MjcsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgZ19mcmVlKGZpbGVO
YW1lKTsKIAogICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIFJlc291cmNlRXJyb3IgcmVzb3VyY2VFcnJvcigid2Via2l0LW5ldHdvcmstZXJy
b3IiLCBFUlJPUl9VTkFCTEVfVE9fT1BFTl9GSUxFLCB1cmxTdHJpbmcsIGVycm9yLT5tZXNzYWdl
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFJlc291cmNlRXJyb3IgcmVzb3VyY2VFcnJvcihn
X3F1YXJrX3RvX3N0cmluZyhTT1VQX0hUVFBfRVJST1IpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZy0+c3RhdHVzX2NvZGUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsU3RyaW5nLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmlu
Zzo6ZnJvbVVURjgoZXJyb3ItPm1lc3NhZ2UpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGdf
ZXJyb3JfZnJlZShlcnJvcik7CiAKICAgICAgICAgICAgICAgICAgICAgICAgIGQtPmNsaWVudCgp
LT5kaWRGYWlsKHRoaXMsIHJlc291cmNlRXJyb3IpOwpAQCAtNTYyLDI1ICs1NTgsNiBAQAogICAg
IHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgZ2Jvb2xlYW4gcmVwb3J0VW5rbm93blByb3RvY29s
RXJyb3IoZ3BvaW50ZXIgY2FsbGJhY2tfZGF0YSkKLXsKLSAgICBSZXNvdXJjZUhhbmRsZSogaGFu
ZGxlID0gc3RhdGljX2Nhc3Q8UmVzb3VyY2VIYW5kbGUqPihjYWxsYmFja19kYXRhKTsKLSAgICBS
ZXNvdXJjZUhhbmRsZUludGVybmFsKiBkID0gaGFuZGxlLT5nZXRJbnRlcm5hbCgpOwotICAgIFJl
c291cmNlSGFuZGxlQ2xpZW50KiBjbGllbnQgPSBoYW5kbGUtPmNsaWVudCgpOwotCi0gICAgaWYg
KGQtPm1fY2FuY2VsbGVkIHx8ICFjbGllbnQpIHsKLSAgICAgICAgaGFuZGxlLT5kZXJlZigpOwot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgS1VSTCB1cmwgPSBoYW5kbGUtPnJl
cXVlc3QoKS51cmwoKTsKLSAgICBSZXNvdXJjZUVycm9yIGVycm9yKCJ3ZWJraXQtbmV0d29yay1l
cnJvciIsIEVSUk9SX1VOS05PV05fUFJPVE9DT0wsIHVybC5zdHJpbmcoKSwgdXJsLnByb3RvY29s
KCkpOwotICAgIGNsaWVudC0+ZGlkRmFpbChoYW5kbGUsIGVycm9yKTsKLQotICAgIGhhbmRsZS0+
ZGVyZWYoKTsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KIGJvb2wgUmVzb3VyY2VIYW5kbGU6OnN0
YXJ0KEZyYW1lKiBmcmFtZSkKIHsKICAgICBBU1NFUlQoIWQtPm1fbXNnKTsKQEAgLTYxMCwxMSAr
NTg3LDkgQEAKICAgICAgICAgLy8gRklYTUU6IHNob3VsZCB3ZSBiZSBkb2luZyBhbnkgb3RoZXIg
cHJvdG9jb2xzIGhlcmU/CiAgICAgICAgIHJldHVybiBzdGFydEdpbyh1cmwpOwogCi0gICAgLy8g
RXJyb3IgbXVzdCBub3QgYmUgcmVwb3J0ZWQgaW1tZWRpYXRlbHksIGJ1dCB0aHJvdWdoIGFuIGlk
bGUgZnVuY3Rpb24uCi0gICAgLy8gRGVzcGl0ZSBlcnJvciwgd2Ugc2hvdWxkIHJldHVybiB0cnVl
IHNvIGEgcHJvcGVyIGhhbmRsZSBpcyBjcmVhdGVkLAotICAgIC8vIHRvIHdoaWNoIHRoaXMgZmFp
bHVyZSBjYW4gYmUgcmVwb3J0ZWQuCi0gICAgcmVmKCk7Ci0gICAgZC0+bV9pZGxlSGFuZGxlciA9
IGdfaWRsZV9hZGQocmVwb3J0VW5rbm93blByb3RvY29sRXJyb3IsIHRoaXMpOworICAgIC8vIEVy
cm9yIG11c3Qgbm90IGJlIHJlcG9ydGVkIGltbWVkaWF0ZWx5CisgICAgdGhpcy0+c2NoZWR1bGVG
YWlsdXJlKEludmFsaWRVUkxGYWlsdXJlKTsKKwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC02
NjgsMTUgKzY0Myw2IEBACiAKIC8vIEdJTy1iYXNlZCBsb2FkZXIKIAotc3RhdGljIGlubGluZSBS
ZXNvdXJjZUVycm9yIG5ldHdvcmtFcnJvckZvckZpbGUoR0ZpbGUqIGZpbGUsIEdFcnJvciogZXJy
b3IpCi17Ci0gICAgLy8gRklYTUU6IE1hcCBnaW8gZXJyb3JzIHRvIGEgbW9yZSBkZXRhaWxlZCBl
cnJvciBjb2RlIHdoZW4gd2UgaGF2ZSBpdCBpbiBXZWJLaXQuCi0gICAgZ2NoYXIqIHVyaSA9IGdf
ZmlsZV9nZXRfdXJpKGZpbGUpOwotICAgIFJlc291cmNlRXJyb3IgcmVzb3VyY2VFcnJvcigid2Vi
a2l0LW5ldHdvcmstZXJyb3IiLCBFUlJPUl9UUkFOU1BPUlQsIHVyaSwgZXJyb3IgPyBTdHJpbmc6
OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSA6IFN0cmluZygpKTsKLSAgICBnX2ZyZWUodXJpKTsK
LSAgICByZXR1cm4gcmVzb3VyY2VFcnJvcjsKLX0KLQogc3RhdGljIHZvaWQgY2xlYW51cEdpb09w
ZXJhdGlvbihSZXNvdXJjZUhhbmRsZUludGVybmFsKiBkKQogewogICAgIGlmIChkLT5tX2dmaWxl
KSB7CkBAIC03MzUsNyArNzAxLDEwIEBACiAKICAgICBnc3NpemUgYnl0ZXNSZWFkID0gZ19pbnB1
dF9zdHJlYW1fcmVhZF9maW5pc2goZC0+bV9pbnB1dFN0cmVhbSwgcmVzLCAmZXJyb3IpOwogICAg
IGlmIChlcnJvcikgewotICAgICAgICBSZXNvdXJjZUVycm9yIHJlc291cmNlRXJyb3IgPSBuZXR3
b3JrRXJyb3JGb3JGaWxlKGQtPm1fZ2ZpbGUsIGVycm9yKTsKKyAgICAgICAgUmVzb3VyY2VFcnJv
ciByZXNvdXJjZUVycm9yKGdfcXVhcmtfdG9fc3RyaW5nKEdfSU9fRVJST1IpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3ItPmNvZGUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBnX2ZpbGVfZ2V0X3VyaShkLT5tX2dmaWxlKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yID8gU3RyaW5nOjpmcm9tVVRGOChlcnJv
ci0+bWVzc2FnZSkgOiBTdHJpbmcoKSk7CiAgICAgICAgIGdfZXJyb3JfZnJlZShlcnJvcik7CiAg
ICAgICAgIGNsZWFudXBHaW9PcGVyYXRpb24oZCk7CiAgICAgICAgIGNsaWVudC0+ZGlkRmFpbCho
YW5kbGUuZ2V0KCksIHJlc291cmNlRXJyb3IpOwpAQCAtNzc4LDcgKzc0NywxMSBAQAogICAgIEdF
cnJvciAqZXJyb3IgPSAwOwogICAgIEdGaWxlSW5wdXRTdHJlYW0qIGluID0gZ19maWxlX3JlYWRf
ZmluaXNoKEdfRklMRShzb3VyY2UpLCByZXMsICZlcnJvcik7CiAgICAgaWYgKGVycm9yKSB7Ci0g
ICAgICAgIFJlc291cmNlRXJyb3IgcmVzb3VyY2VFcnJvciA9IG5ldHdvcmtFcnJvckZvckZpbGUo
ZC0+bV9nZmlsZSwgZXJyb3IpOworICAgICAgICBSZXNvdXJjZUVycm9yIHJlc291cmNlRXJyb3Io
Z19xdWFya190b19zdHJpbmcoR19JT19FUlJPUiksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBlcnJvci0+Y29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGdfZmlsZV9nZXRfdXJpKGQtPm1fZ2ZpbGUpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZXJyb3IgPyBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSA6IFN0
cmluZygpKTsKKwogICAgICAgICBnX2Vycm9yX2ZyZWUoZXJyb3IpOwogICAgICAgICBjbGVhbnVw
R2lvT3BlcmF0aW9uKGQpOwogICAgICAgICBjbGllbnQtPmRpZEZhaWwoaGFuZGxlLCByZXNvdXJj
ZUVycm9yKTsKQEAgLTgyNSw4ICs3OTgsMTAgQEAKICAgICAgICAgLy8gc2VydmVyIChhbmQgdGhl
biBrZWVwIHRyYWNrIG9mIHRoZSBmYWN0IHRoYXQgd2UgbW91bnRlZCBpdCwKICAgICAgICAgLy8g
YW5kIHNldCBhIHRpbWVvdXQgdG8gdW5tb3VudCBpdCBsYXRlciBhZnRlciBpdCdzIGJlZW4gaWRs
ZQogICAgICAgICAvLyBmb3IgYSB3aGlsZSkuCi0KLSAgICAgICAgUmVzb3VyY2VFcnJvciByZXNv
dXJjZUVycm9yID0gbmV0d29ya0Vycm9yRm9yRmlsZShkLT5tX2dmaWxlLCBlcnJvcik7CisgICAg
ICAgIFJlc291cmNlRXJyb3IgcmVzb3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0cmluZyhHX0lPX0VS
Uk9SKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yLT5jb2RlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19maWxlX2dldF91cmkoZC0+bV9n
ZmlsZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvciA/IFN0cmlu
Zzo6ZnJvbVVURjgoZXJyb3ItPm1lc3NhZ2UpIDogU3RyaW5nKCkpOwogICAgICAgICBnX2Vycm9y
X2ZyZWUoZXJyb3IpOwogICAgICAgICBjbGVhbnVwR2lvT3BlcmF0aW9uKGQpOwogICAgICAgICBj
bGllbnQtPmRpZEZhaWwoaGFuZGxlLCByZXNvdXJjZUVycm9yKTsKQEAgLTgzNiw4ICs4MTEsMTAg
QEAKICAgICBpZiAoZ19maWxlX2luZm9fZ2V0X2ZpbGVfdHlwZShpbmZvKSAhPSBHX0ZJTEVfVFlQ
RV9SRUdVTEFSKSB7CiAgICAgICAgIC8vIEZJWE1FOiB3aGF0IGlmIHRoZSBVUkkgcG9pbnRzIHRv
IGEgZGlyZWN0b3J5PyBTaG91bGQgd2UKICAgICAgICAgLy8gZ2VuZXJhdGUgYSBsaXN0aW5nPyBI
b3c/IFdoYXQgZG8gb3RoZXIgYmFja2VuZHMgZG8gaGVyZT8KLQotICAgICAgICBSZXNvdXJjZUVy
cm9yIHJlc291cmNlRXJyb3IgPSBuZXR3b3JrRXJyb3JGb3JGaWxlKGQtPm1fZ2ZpbGUsIDApOwor
ICAgICAgICBSZXNvdXJjZUVycm9yIHJlc291cmNlRXJyb3IoZ19xdWFya190b19zdHJpbmcoR19J
T19FUlJPUiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHX0lPX0VSUk9S
X0ZBSUxFRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfZmlsZV9nZXRf
dXJpKGQtPm1fZ2ZpbGUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3Ry
aW5nKCkpOwogICAgICAgICBjbGVhbnVwR2lvT3BlcmF0aW9uKGQpOwogICAgICAgICBjbGllbnQt
PmRpZEZhaWwoaGFuZGxlLCByZXNvdXJjZUVycm9yKTsKICAgICAgICAgcmV0dXJuOwpAQCAtODU5
LDcgKzgzNiw5IEBACiBib29sIFJlc291cmNlSGFuZGxlOjpzdGFydEdpbyhLVVJMIHVybCkKIHsK
ICAgICBpZiAocmVxdWVzdCgpLmh0dHBNZXRob2QoKSAhPSAiR0VUIiAmJiByZXF1ZXN0KCkuaHR0
cE1ldGhvZCgpICE9ICJQT1NUIikgewotICAgICAgICBSZXNvdXJjZUVycm9yIGVycm9yKCJ3ZWJr
aXQtbmV0d29yay1lcnJvciIsIEVSUk9SX0JBRF9OT05fSFRUUF9NRVRIT0QsIHVybC5zdHJpbmco
KSwgcmVxdWVzdCgpLmh0dHBNZXRob2QoKSk7CisgICAgICAgIFJlc291cmNlRXJyb3IgZXJyb3Io
Z19xdWFya190b19zdHJpbmcoU09VUF9IVFRQX0VSUk9SKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBTT1VQX1NUQVRVU19NRVRIT0RfTk9UX0FMTE9XRUQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdXJsLnN0cmluZygpLCByZXF1ZXN0KCkuaHR0cE1ldGhvZCgpKTsKICAgICAg
ICAgZC0+Y2xpZW50KCktPmRpZEZhaWwodGhpcywgZXJyb3IpOwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQpJbmRleDogV2ViS2l0L1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC5vcmlnL1dlYktpdC9ndGsv
V2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCTIwMDktMDQtMjQgMjE6MjI6
MTEuMDAwMDAwMDAwICsxMDAwCisrKyBXZWJLaXQvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudEd0ay5jcHAJMjAwOS0wNC0yNSAwNDoyNjowNy4wMDAwMDAwMDAgKzEw
MDAKQEAgLTQ5LDE2ICs0OSwxOCBAQAogI2luY2x1ZGUgIlByb2dyZXNzVHJhY2tlci5oIgogI2lu
Y2x1ZGUgIkpTRE9NQmluZGluZy5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKLSNp
bmNsdWRlICJ3ZWJraXR3ZWJ2aWV3LmgiCisjaW5jbHVkZSAid2Via2l0ZXJyb3IuaCIKICNpbmNs
dWRlICJ3ZWJraXRuZXR3b3JrcmVxdWVzdC5oIgorI2luY2x1ZGUgIndlYmtpdHByaXZhdGUuaCIK
ICNpbmNsdWRlICJ3ZWJraXR3ZWJmcmFtZS5oIgogI2luY2x1ZGUgIndlYmtpdHdlYm5hdmlnYXRp
b25hY3Rpb24uaCIKICNpbmNsdWRlICJ3ZWJraXR3ZWJwb2xpY3lkZWNpc2lvbi5oIgotI2luY2x1
ZGUgIndlYmtpdHByaXZhdGUuaCIKKyNpbmNsdWRlICJ3ZWJraXR3ZWJ2aWV3LmgiCiAKICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9BUElDYXN0Lmg+CiAjaW5jbHVkZSA8Z2lvL2dpby5oPgogI2lu
Y2x1ZGUgPGdsaWIuaD4KKyNpbmNsdWRlIDxnbGliL2dpMThuLWxpYi5oPgogI2luY2x1ZGUgPHN0
ZGlvLmg+CiAjaWYgUExBVEZPUk0oVU5JWCkKICNpbmNsdWRlIDxzeXMvdXRzbmFtZS5oPgpAQCAt
ODQyLDEwICs4NDQsMTAgQEAKICAgICBHRXJyb3IqIHdlYkVycm9yID0gZ19lcnJvcl9uZXdfbGl0
ZXJhbChnX3F1YXJrX2Zyb21fc3RyaW5nKGVycm9yLmRvbWFpbigpLnV0ZjgoKS5kYXRhKCkpLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yLmVycm9yQ29k
ZSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yLmxv
Y2FsaXplZERlc2NyaXB0aW9uKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgZ2Jvb2xlYW4gaGFuZGxl
ZCA9IGZhbHNlOwotICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZSh3ZWJWaWV3LCAibG9hZC1lcnJv
ciIsIG1fZnJhbWUsIGVycm9yLmZhaWxpbmdVUkwoKS51dGY4KCkuZGF0YSgpLCB3ZWJFcnJvciwg
JmhhbmRsZWQpOworICAgIGdib29sZWFuIGlzSGFuZGxlZCA9IGZhbHNlOworICAgIGdfc2lnbmFs
X2VtaXRfYnlfbmFtZSh3ZWJWaWV3LCAibG9hZC1lcnJvciIsIG1fZnJhbWUsIGVycm9yLmZhaWxp
bmdVUkwoKS51dGY4KCkuZGF0YSgpLCB3ZWJFcnJvciwgJmlzSGFuZGxlZCk7CiAKLSAgICBpZiAo
aGFuZGxlZCkgeworICAgIGlmIChpc0hhbmRsZWQpIHsKICAgICAgICAgZ19lcnJvcl9mcmVlKHdl
YkVycm9yKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTg4Nyw1NCArODg5LDU0IEBACiAg
ICAgc3RhcnREb3dubG9hZChyZXF1ZXN0KTsKIH0KIAotUmVzb3VyY2VFcnJvciBGcmFtZUxvYWRl
ckNsaWVudDo6Y2FuY2VsbGVkRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JikKK1Jlc291cmNl
RXJyb3IgRnJhbWVMb2FkZXJDbGllbnQ6OmNhbmNlbGxlZEVycm9yKGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIFJlc291cmNlRXJy
b3IgZXJyb3IoIiIsIDAsICIiLCAiIik7Ci0gICAgZXJyb3Iuc2V0SXNDYW5jZWxsYXRpb24odHJ1
ZSk7Ci0gICAgcmV0dXJuIGVycm9yOworICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGdfcXVhcmtf
dG9fc3RyaW5nKFdFQktJVF9ORVRXT1JLX0VSUk9SKSwgV0VCS0lUX05FVFdPUktfRVJST1JfQ0FO
Q0VMTEVELAorICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QudXJsKCkuc3RyaW5nKCks
IF8oIkxvYWQgcmVxdWVzdCBjYW5jZWxsZWQiKSk7CiB9CiAKLVJlc291cmNlRXJyb3IgRnJhbWVM
b2FkZXJDbGllbnQ6OmJsb2NrZWRFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKQorUmVzb3Vy
Y2VFcnJvciBGcmFtZUxvYWRlckNsaWVudDo6YmxvY2tlZEVycm9yKGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBSZXNv
dXJjZUVycm9yKCIiLCAwLCAiIiwgIiIpOworICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGdfcXVh
cmtfdG9fc3RyaW5nKFdFQktJVF9QT0xJQ1lfRVJST1IpLCBXRUJLSVRfUE9MSUNZX0VSUk9SX0NB
Tk5PVF9VU0VfUkVTVFJJQ1RFRF9QT1JULAorICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVl
c3QudXJsKCkuc3RyaW5nKCksIF8oIk5vdCBhbGxvd2VkIHRvIHVzZSByZXN0cmljdGVkIG5ldHdv
cmsgcG9ydCIpKTsKIH0KIAotUmVzb3VyY2VFcnJvciBGcmFtZUxvYWRlckNsaWVudDo6Y2Fubm90
U2hvd1VSTEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpCitSZXNvdXJjZUVycm9yIEZyYW1l
TG9hZGVyQ2xpZW50OjpjYW5ub3RTaG93VVJMRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0KQogewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIFJlc291cmNlRXJy
b3IoIiIsIDAsICIiLCAiIik7CisgICAgcmV0dXJuIFJlc291cmNlRXJyb3IoZ19xdWFya190b19z
dHJpbmcoV0VCS0lUX1BPTElDWV9FUlJPUiksIFdFQktJVF9QT0xJQ1lfRVJST1JfQ0FOTk9UX1NI
T1dfVVJMLAorICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QudXJsKCkuc3RyaW5nKCks
IF8oIlVSTCBjYW5ub3QgYmUgc2hvd24iKSk7CiB9CiAKLVJlc291cmNlRXJyb3IgRnJhbWVMb2Fk
ZXJDbGllbnQ6OmludGVycnVwdEZvclBvbGljeUNoYW5nZUVycm9yKGNvbnN0IFJlc291cmNlUmVx
dWVzdCYpCitSZXNvdXJjZUVycm9yIEZyYW1lTG9hZGVyQ2xpZW50OjppbnRlcnJ1cHRGb3JQb2xp
Y3lDaGFuZ2VFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAgbm90
SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcigiIiwgMCwgIiIsICIiKTsK
KyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0cmluZyhXRUJLSVRfUE9MSUNZ
X0VSUk9SKSwgV0VCS0lUX1BPTElDWV9FUlJPUl9GUkFNRV9MT0FEX0lOVEVSUlVQVEVEX0JZX1BP
TElDWV9DSEFOR0UsCisgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC51cmwoKS5zdHJp
bmcoKSwgXygiRnJhbWUgbG9hZCB3YXMgaW50ZXJydXB0ZWQiKSk7CiB9CiAKLVJlc291cmNlRXJy
b3IgRnJhbWVMb2FkZXJDbGllbnQ6OmNhbm5vdFNob3dNSU1FVHlwZUVycm9yKGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmKQorUmVzb3VyY2VFcnJvciBGcmFtZUxvYWRlckNsaWVudDo6Y2Fubm90U2hv
d01JTUVUeXBlRXJyb3IoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7Ci0gICAg
bm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcigiIiwgMCwgIiIsICIi
KTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0cmluZyhXRUJLSVRfUE9M
SUNZX0VSUk9SKSwgV0VCS0lUX1BPTElDWV9FUlJPUl9DQU5OT1RfU0hPV19NSU1FX1RZUEUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UudXJsKCkuc3RyaW5nKCksIF8oIkNvbnRl
bnQgd2l0aCB0aGUgc3BlY2lmaWVkIE1JTUUgdHlwZSBjYW5ub3QgYmUgc2hvd24iKSk7CiB9CiAK
LVJlc291cmNlRXJyb3IgRnJhbWVMb2FkZXJDbGllbnQ6OmZpbGVEb2VzTm90RXhpc3RFcnJvcihj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJikKK1Jlc291cmNlRXJyb3IgRnJhbWVMb2FkZXJDbGllbnQ6
OmZpbGVEb2VzTm90RXhpc3RFcnJvcihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkK
IHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBSZXNvdXJjZUVycm9yKCIiLCAw
LCAiIiwgIiIpOworICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGdfcXVhcmtfdG9fc3RyaW5nKFdF
QktJVF9ORVRXT1JLX0VSUk9SKSwgV0VCS0lUX05FVFdPUktfRVJST1JfRklMRV9ET0VTX05PVF9F
WElTVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS51cmwoKS5zdHJpbmcoKSwg
XygiRmlsZSBkb2VzIG5vdCBleGlzdCIpKTsKIH0KIAotUmVzb3VyY2VFcnJvciBGcmFtZUxvYWRl
ckNsaWVudDo6cGx1Z2luV2lsbEhhbmRsZUxvYWRFcnJvcihjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JikKK1Jlc291cmNlRXJyb3IgRnJhbWVMb2FkZXJDbGllbnQ6OnBsdWdpbldpbGxIYW5kbGVMb2Fk
RXJyb3IoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7Ci0gICAgbm90SW1wbGVt
ZW50ZWQoKTsKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcigiIiwgMCwgIiIsICIiKTsKKyAgICBy
ZXR1cm4gUmVzb3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0cmluZyhXRUJLSVRfUExVR0lOX0VSUk9S
KSwgV0VCS0lUX1BMVUdJTl9FUlJPUl9XSUxMX0hBTkRMRV9MT0FELAorICAgICAgICAgICAgICAg
ICAgICAgICAgIHJlc3BvbnNlLnVybCgpLnN0cmluZygpLCBfKCJQbHVnaW4gd2lsbCBoYW5kbGUg
bG9hZCIpKTsKIH0KIAotYm9vbCBGcmFtZUxvYWRlckNsaWVudDo6c2hvdWxkRmFsbEJhY2soY29u
c3QgUmVzb3VyY2VFcnJvciYpCitib29sIEZyYW1lTG9hZGVyQ2xpZW50OjpzaG91bGRGYWxsQmFj
ayhjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwot
ICAgIHJldHVybiBmYWxzZTsKKyAgICAvLyBGSVhNRTogTmVlZHMgdG8gY2hlY2sgZG9tYWluLgor
ICAgIC8vIEZJWE1FOiBNYWMgaGFzIFdlYktpdEVycm9yUGx1Z0luV2lsbEhhbmRsZUxvYWQgaGVy
ZSB0b28gZG8gYXZvaWQKKyAgICAvLyBsb2FkaW5nIHBsdWdpbiBjb250ZW50IHR3aWNlLiBEbyB3
ZSBuZWVkIGl0PworICAgIHJldHVybiBlcnJvci5lcnJvckNvZGUoKSAhPSBXRUJLSVRfTkVUV09S
S19FUlJPUl9DQU5DRUxMRUQ7CiB9CiAKIGJvb2wgRnJhbWVMb2FkZXJDbGllbnQ6OmNhbkNhY2hl
UGFnZSgpIGNvbnN0CkluZGV4OiBXZWJLaXQvR05VbWFrZWZpbGUuYW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0Lm9yaWcvR05VbWFrZWZpbGUuYW0JMjAwOS0wNC0yNCAyMToxOTozNy4wMDAwMDAwMDAg
KzEwMDAKKysrIFdlYktpdC9HTlVtYWtlZmlsZS5hbQkyMDA5LTA0LTI1IDA0OjI2OjA3LjAwMDAw
MDAwMCArMTAwMApAQCAtMzEzLDYgKzMxMyw3IEBACiAJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0
LmggXAogCVdlYktpdC9ndGsvd2Via2l0L3dlYmtpdGRlZmluZXMuaCBcCiAJV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0ZG93bmxvYWQuaCBcCisJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0ZXJyb3Iu
aCBcCiAJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0bmV0d29ya3JlcXVlc3QuaCBcCiAJV2ViS2l0
L2d0ay93ZWJraXQvd2Via2l0c291cGF1dGhkaWFsb2cuaCBcCiAJV2ViS2l0L2d0ay93ZWJraXQv
d2Via2l0dmVyc2lvbi5oIFwKQEAgLTM0Nyw2ICszNDgsOCBAQAogCVdlYktpdC9ndGsvV2ViQ29y
ZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50R3RrLmggXAogCVdlYktpdC9ndGsvV2ViQ29yZVN1cHBv
cnQvUGFzdGVib2FyZEhlbHBlckd0ay5jcHAgXAogCVdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQv
UGFzdGVib2FyZEhlbHBlckd0ay5oIFwKKwlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRkb3dubG9h
ZC5jcHAgXAorCVdlYktpdC9ndGsvd2Via2l0L3dlYmtpdGVycm9yLmNwcCBcCiAJV2ViS2l0L2d0
ay93ZWJraXQvd2Via2l0bmV0d29ya3JlcXVlc3QuY3BwIFwKIAlXZWJLaXQvZ3RrL3dlYmtpdC93
ZWJraXRwcml2YXRlLmNwcCBcCiAJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5oIFwK
QEAgLTM1OSw3ICszNjIsNiBAQAogCVdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYm5hdmlnYXRp
b25hY3Rpb24uY3BwIFwKIAlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJwb2xpY3lkZWNpc2lv
bi5jcHAgXAogCVdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnNldHRpbmdzLmNwcCBcCi0JV2Vi
S2l0L2d0ay93ZWJraXQvd2Via2l0ZG93bmxvYWQuY3BwIFwKIAlXZWJLaXQvZ3RrL3dlYmtpdC93
ZWJraXR3ZWJ2aWV3LmNwcCBcCiAJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vid2luZG93ZmVh
dHVyZXMuY3BwCiAKSW5kZXg6IFdlYktpdC9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRlcnJvci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAw
ICswMDAwCisrKyBXZWJLaXQvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0ZXJyb3IuY3BwCTIwMDkt
MDQtMjUgMDQ6MjY6MDcuMDAwMDAwMDAwICsxMDAwCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDggTHVjYSBCcnVubyA8bGV0aGFsbWFuODhAZ21haWwuY29tPgorICoK
KyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAq
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg
RmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJ3ZWJraXRlcnJvci5oIgorCitleHRlcm4gIkMi
IHsKKworR1F1YXJrIHdlYmtpdF9uZXR3b3JrX2Vycm9yX3F1YXJrKHZvaWQpCit7CisgICAgcmV0
dXJuIGdfcXVhcmtfZnJvbV9zdGF0aWNfc3RyaW5nKCJ3ZWJraXQtbmV0d29yay1lcnJvci1xdWFy
ayIpOworfQorCitHUXVhcmsgd2Via2l0X3BvbGljeV9lcnJvcl9xdWFyayh2b2lkKQoreworICAg
IHJldHVybiBnX3F1YXJrX2Zyb21fc3RhdGljX3N0cmluZygid2Via2l0LXBvbGljeS1lcnJvci1x
dWFyayIpOworfQorCitHUXVhcmsgd2Via2l0X3BsdWdpbl9lcnJvcl9xdWFyayh2b2lkKQorewor
ICAgIHJldHVybiBnX3F1YXJrX2Zyb21fc3RhdGljX3N0cmluZygid2Via2l0LXBsdWdpbi1lcnJv
ci1xdWFyayIpOworfQorCit9CkluZGV4OiBXZWJLaXQvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0
ZXJyb3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAw
MDAwMDAgKzAwMDAKKysrIFdlYktpdC9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRlcnJvci5oCTIw
MDktMDQtMjUgMDQ6MjY6MDcuMDAwMDAwMDAwICsxMDAwCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDggTHVjYSBCcnVubyA8bGV0aGFsbWFuODhAZ21haWwuY29tPgor
ICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAq
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8K
KyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisj
aWZuZGVmIFdFQktJVF9FUlJPUl9ICisjZGVmaW5lIFdFQktJVF9FUlJPUl9ICisKKyNpbmNsdWRl
IDxnbGliLmg+CisKKyNpbmNsdWRlIDx3ZWJraXQvd2Via2l0ZGVmaW5lcy5oPgorCitHX0JFR0lO
X0RFQ0xTCisKKyNkZWZpbmUgV0VCS0lUX05FVFdPUktfRVJST1IgICAgICAgIHdlYmtpdF9uZXR3
b3JrX2Vycm9yX3F1YXJrICgpCisjZGVmaW5lIFdFQktJVF9QT0xJQ1lfRVJST1IgICAgICAgICB3
ZWJraXRfcG9saWN5X2Vycm9yX3F1YXJrICAoKQorI2RlZmluZSBXRUJLSVRfUExVR0lOX0VSUk9S
ICAgICAgICAgd2Via2l0X3BsdWdpbl9lcnJvcl9xdWFyayAgKCkKKwordHlwZWRlZiBlbnVtIHsK
KyAgICBXRUJLSVRfTkVUV09SS19FUlJPUl9GQUlMRUQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IDM5OSwKKyAgICBXRUJLSVRfTkVUV09SS19FUlJPUl9UUkFOU1BPUlQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IDMwMCwKKyAgICBXRUJLSVRfTkVUV09SS19FUlJPUl9V
TktOT1dOX1BST1RPQ09MICAgICAgICAgICAgICAgICAgICAgICA9IDMwMSwKKyAgICBXRUJLSVRf
TkVUV09SS19FUlJPUl9DQU5DRUxMRUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDMw
MiwKKyAgICBXRUJLSVRfTkVUV09SS19FUlJPUl9GSUxFX0RPRVNfTk9UX0VYSVNUICAgICAgICAg
ICAgICAgICAgICA9IDMwMywKK30gV2ViS2l0TmV0d29ya0Vycm9yOworCisvKiBTeW5jJ2Qgd2l0
aCBNYWMncyBXZWJLaXQgRXJyb3JzICovCit0eXBlZGVmIGVudW0geworICAgIFdFQktJVF9QT0xJ
Q1lfRVJST1JfRkFJTEVEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMTk5LAor
ICAgIFdFQktJVF9QT0xJQ1lfRVJST1JfQ0FOTk9UX1NIT1dfTUlNRV9UWVBFICAgICAgICAgICAg
ICAgICAgID0gMTAwLAorICAgIFdFQktJVF9QT0xJQ1lfRVJST1JfQ0FOTk9UX1NIT1dfVVJMICAg
ICAgICAgICAgICAgICAgICAgICAgID0gMTAxLAorICAgIFdFQktJVF9QT0xJQ1lfRVJST1JfRlJB
TUVfTE9BRF9JTlRFUlJVUFRFRF9CWV9QT0xJQ1lfQ0hBTkdFID0gMTAyLAorICAgIFdFQktJVF9Q
T0xJQ1lfRVJST1JfQ0FOTk9UX1VTRV9SRVNUUklDVEVEX1BPUlQgICAgICAgICAgICAgID0gMTAz
LAorfSBXZWJLaXRQb2xpY3lFcnJvcjsKKwordHlwZWRlZiBlbnVtIHsKKyAgICBXRUJLSVRfUExV
R0lOX0VSUk9SX0ZBSUxFRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDI5OSwK
KyAgICBXRUJLSVRfUExVR0lOX0VSUk9SX0NBTk5PVF9GSU5EX1BMVUdJTiAgICAgICAgICAgICAg
ICAgICAgICA9IDIwMCwKKyAgICBXRUJLSVRfUExVR0lOX0VSUk9SX0NBTk5PVF9MT0FEX1BMVUdJ
TiAgICAgICAgICAgICAgICAgICAgICA9IDIwMSwKKyAgICBXRUJLSVRfUExVR0lOX0VSUk9SX0pB
VkFfVU5BVkFJTEFCTEUgICAgICAgICAgICAgICAgICAgICAgICA9IDIwMiwKKyAgICBXRUJLSVRf
UExVR0lOX0VSUk9SX0NPTk5FQ1RJT05fQ0FOQ0VMTEVEICAgICAgICAgICAgICAgICAgICA9IDIw
MywKKyAgICBXRUJLSVRfUExVR0lOX0VSUk9SX1dJTExfSEFORExFX0xPQUQgICAgICAgICAgICAg
ICAgICAgICAgICA9IDIwNCwKK30gV2ViS2l0UGx1Z2luRXJyb3I7CisKKworV0VCS0lUX0FQSSBH
UXVhcmsKK3dlYmtpdF9uZXR3b3JrX2Vycm9yX3F1YXJrICh2b2lkKTsKKworV0VCS0lUX0FQSSBH
UXVhcmsKK3dlYmtpdF9wb2xpY3lfZXJyb3JfcXVhcmsgICh2b2lkKTsKKworV0VCS0lUX0FQSSBH
UXVhcmsKK3dlYmtpdF9wbHVnaW5fZXJyb3JfcXVhcmsgICh2b2lkKTsKKworR19FTkRfREVDTFMK
KworI2VuZGlmCkluZGV4OiBXZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC5v
cmlnL0NoYW5nZUxvZwkyMDA5LTA0LTI1IDA0OjMwOjAyLjAwMDAwMDAwMCArMTAwMAorKysgV2Vi
S2l0L0NoYW5nZUxvZwkyMDA5LTA0LTI1IDA0OjM2OjMwLjAwMDAwMDAwMCArMTAwMApAQCAtMiw2
ICsyLDE3IEBACiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCiAKKyAgICAg
ICAgIFtHVEtdIEVycm9yIHJlcG9ydGluZworICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE4MzQ0CisKKyAgICAgICAgQWRkIHdlYmtpdGVycm9yIHRvIHRo
ZSBidWlsZC4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorCisyMDA5LTA0LTI0ICBKYW4g
TWljaGFlbCBBbG9uem8gIDxqbWFsb256b0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCiAgICAgICAgIFtHVEtdIEVycm9yIHJlcG9ydGluZwogICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzNDQKIApJbmRl
eDogV2ViS2l0L1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC5vcmlnL1dl
YkNvcmUvQ2hhbmdlTG9nCTIwMDktMDQtMjUgMDQ6MzA6MDguMDAwMDAwMDAwICsxMDAwCisrKyBX
ZWJLaXQvV2ViQ29yZS9DaGFuZ2VMb2cJMjAwOS0wNC0yNSAwNDo0MjoxMy4wMDAwMDAwMDAgKzEw
MDAKQEAgLTEsMyArMSwyMyBAQAorMjAwOS0wNC0yNCAgSmFuIE1pY2hhZWwgQWxvbnpvICA8am1h
bG9uem9Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBbR1RLXSBFcnJvciByZXBvcnRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MzQ0CisKKyAgICAgICAgRml4IHRoZSBTT1VQIHJl
c291cmNlIGhhbmRsZSB0byByZXBvcnQgU09VUF9IVFRQX0VSUk9SIGZvciBTb3VwCisgICAgICAg
IGVycm9ycyBhbmQgR19JT19FUlJPUiBmb3IgZ2lvIGVycm9ycy4KKworICAgICAgICAqIEdOVW1h
a2VmaWxlLmFtOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRs
ZVNvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZmluaXNoZWRDYWxsYmFjayk6CisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6c3RhcnRIdHRwKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlSGFuZGxlOjpzdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpyZWFkQ2FsbGJhY2sp
OgorICAgICAgICAoV2ViQ29yZTo6b3BlbkNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OnF1
ZXJ5SW5mb0NhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpzdGFy
dEdpbyk6CisKIDIwMDktMDQtMjMgIEZyYW5jaXNjbyBUb2xtYXNreSAgPGZyYW5jaXNjb0AyODBu
b3J0aC5jb20+CiAKICAgICAgICAgQlVHIDI0NjA0OiBXZWJLaXQgcHJvZmlsZXIgcmVwb3J0cyBp
bmNvcnJlY3QgdG90YWwgdGltZXMKSW5kZXg6IFdlYktpdC9XZWJLaXQvZ3RrL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQub3JpZy9XZWJLaXQvZ3RrL0NoYW5nZUxvZwkyMDA5LTA0LTI1
IDA0OjMwOjEyLjAwMDAwMDAwMCArMTAwMAorKysgV2ViS2l0L1dlYktpdC9ndGsvQ2hhbmdlTG9n
CTIwMDktMDQtMjUgMDQ6NDQ6MDkuMDAwMDAwMDAwICsxMDAwCkBAIC01LDYgKzUsMjggQEAKICAg
ICAgICAgW0dUS10gRXJyb3IgcmVwb3J0aW5nCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xODM0NAogCisgICAgICAgIFVwZGF0ZSBGcmFtZUxvYWQgZXJy
b3JzIHRvIHVzZSBXZWJLaXRFcnJvcnMuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFt
ZUxvYWRlckNsaWVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaERpZEZhaWxMb2FkKToKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGll
bnQ6OmNhbmNlbGxlZEVycm9yKToKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnQ6
OmJsb2NrZWRFcnJvcik6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50OjpjYW5u
b3RTaG93VVJMRXJyb3IpOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudDo6aW50
ZXJydXB0Rm9yUG9saWN5Q2hhbmdlRXJyb3IpOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRl
ckNsaWVudDo6Y2Fubm90U2hvd01JTUVUeXBlRXJyb3IpOgorICAgICAgICAoV2ViS2l0OjpGcmFt
ZUxvYWRlckNsaWVudDo6ZmlsZURvZXNOb3RFeGlzdEVycm9yKToKKyAgICAgICAgKFdlYktpdDo6
RnJhbWVMb2FkZXJDbGllbnQ6OnBsdWdpbldpbGxIYW5kbGVMb2FkRXJyb3IpOgorICAgICAgICAo
V2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudDo6c2hvdWxkRmFsbEJhY2spOgorCSogd2Via2l0L3dl
YmtpdGVycm9yLmg6IEFkZGVkLgorCSogd2Via2l0L3dlYmtpdGVycm9yLmNwcDogQWRkZWQuCisK
KzIwMDktMDQtMjQgIEphbiBNaWNoYWVsIEFsb256byAgPGptYWxvbnpvQHdlYmtpdC5vcmc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0dUS10gRXJy
b3IgcmVwb3J0aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xODM0NAorCiAgICAgICAgIERpc3BsYXkgYSBkZWZhdWx0IGVycm9yIHBhZ2UgZm9yIGxv
YWQgZXJyb3JzLgogCiAgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRH
dGsuY3BwOgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>29769</attachid>
            <date>2009-04-24 15:49:19 -0700</date>
            <delta_ts>2009-04-25 00:57:32 -0700</delta_ts>
            <desc>[1/3] Add API to load content for unreachable URL - v3</desc>
            <filename>error-frameapi</filename>
            <type>text/plain</type>
            <size>10129</size>
            <attacher name="Jan Alonzo">jmalonzo</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
R3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQub3JpZy9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAkyMDA5LTA0LTI0IDIwOjQ5OjEyLjAwMDAwMDAw
MCArMTAwMAorKysgV2ViS2l0L1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRHdGsuY3BwCTIwMDktMDQtMjUgMDg6NDM6NDEuMDAwMDAwMDAwICsxMDAwCkBAIC01Nyw2
ICs1Nyw3IEBACiAjaW5jbHVkZSAid2Via2l0cHJpdmF0ZS5oIgogCiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvQVBJQ2FzdC5oPgorI2luY2x1ZGUgPGdsaWIuaD4KICNpbmNsdWRlIDxzdGRpby5o
PgogI2lmIFBMQVRGT1JNKFVOSVgpCiAjaW5jbHVkZSA8c3lzL3V0c25hbWUuaD4KQEAgLTI2MCw4
ICsyNjEsMTEgQEAKIAogICAgIC8vIFdlIGNhbiBnZXQgYSBzdG9wTG9hZCgpIGZyb20gZGlzcG9z
ZSB3aGVuIHRoZSBvYmplY3QgaXMgYmVpbmcKICAgICAvLyBkZXN0cm95ZWQsIGRvbid0IGVtaXQg
dGhlIHNpZ25hbCBpbiB0aGF0IGNhc2UuCi0gICAgaWYgKCFwcml2YXRlRGF0YS0+ZGlzcG9zaW5n
KQotICAgICAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUod2ViVmlldywgImxvYWQtZmluaXNoZWQi
LCBtX2ZyYW1lKTsKKyAgICBpZiAocHJpdmF0ZURhdGEtPmRpc3Bvc2luZykKKyAgICAgICAgcmV0
dXJuOworCisgICAgZ2Jvb2xlYW4gaGFuZGxlZDsKKyAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUo
d2ViVmlldywgImxvYWQtZmluaXNoZWQiLCBtX2ZyYW1lLCBOVUxMLCBOVUxMLCAmaGFuZGxlZCk7
CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmZyYW1lTG9hZGVyRGVzdHJveWVkKCkKQEAg
LTgxMSw4ICs4MTUsOSBAQAogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgRnJhbWVM
b2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmFpbExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqLCB1bnNp
Z25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImKQordm9pZCBGcmFtZUxv
YWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGYWlsTG9hZGluZyhEb2N1bWVudExvYWRlciosIHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7CisgICAg
Ly8gRklYTUU6IHdoZW4gZG9lcyB0aGlzIG9jY3VyIGFuZCB3aGF0IHNob3VsZCBoYXBwZW4/CiAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIApAQCAtODIyLDEzICs4MjcsMzUgQEAKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmFpbFBy
b3Zpc2lvbmFsTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJikKK3ZvaWQgRnJhbWVMb2FkZXJDbGll
bnQ6OmRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJiBl
cnJvcikKIHsKKyAgICBkaXNwYXRjaERpZEZhaWxMb2FkKGVycm9yKTsKKworICAgIC8vIEZJWE1F
OiBsb2FkLWRvbmUgaXMgZGVwcmVjYXRlZC4gUGxlYXNlIHJlbW92ZSB3aGVuIHNpZ25hbCdzIGJl
ZW4gcmVtb3ZlZC4KICAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUobV9mcmFtZSwgImxvYWQtZG9u
ZSIsIGZhbHNlKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGYWls
TG9hZChjb25zdCBSZXNvdXJjZUVycm9yJikKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3Bh
dGNoRGlkRmFpbExvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7CisgICAgV2ViS2l0
V2ViVmlldyogd2ViVmlldyA9IGdldFZpZXdGcm9tRnJhbWUobV9mcmFtZSk7CisgICAgR0Vycm9y
KiB3ZWJFcnJvciA9IGdfZXJyb3JfbmV3X2xpdGVyYWwoZ19xdWFya19mcm9tX3N0cmluZyhlcnJv
ci5kb21haW4oKS51dGY4KCkuZGF0YSgpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBlcnJvci5lcnJvckNvZGUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBlcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpLnV0ZjgoKS5k
YXRhKCkpOworICAgIGdib29sZWFuIGlzSGFuZGxlZCA9IGZhbHNlOworICAgIGdfc2lnbmFsX2Vt
aXRfYnlfbmFtZSh3ZWJWaWV3LCAibG9hZC1lcnJvciIsIG1fZnJhbWUsIGVycm9yLmZhaWxpbmdV
UkwoKS51dGY4KCkuZGF0YSgpLCB3ZWJFcnJvciwgJmlzSGFuZGxlZCk7CisKKyAgICBpZiAoaXNI
YW5kbGVkKSB7CisgICAgICAgIGdfZXJyb3JfZnJlZSh3ZWJFcnJvcik7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBTdHJpbmcgY29udGVudCA9IFN0cmluZzo6Zm9ybWF0KCI8aHRtbD48
aGVhZD48dGl0bGU+JWQ8L3RpdGxlPjwvaGVhZD48Ym9keT4lczwvYm9keT48L2h0bWw+IiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yLmVycm9yQ29kZSgpLCB3ZWJF
cnJvci0+bWVzc2FnZSk7CisgICAgd2Via2l0X3dlYl9mcmFtZV9sb2FkX2FsdGVybmF0ZV9zdHJp
bmcobV9mcmFtZSwgY29udGVudC51dGY4KCkuZGF0YSgpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIGVycm9yLmZhaWxpbmdVUkwoKS51dGY4KCkuZGF0
YSgpKTsKKyAgICBnX2Vycm9yX2ZyZWUod2ViRXJyb3IpOworCisgICAgLy8gRklYTUU6IGxvYWQt
ZG9uZSBpcyBkZXByZWNhdGVkLiBQbGVhc2UgcmVtb3ZlIHdoZW4gc2lnbmFsJ3MgYmVlbiByZW1v
dmVkLgogICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZShtX2ZyYW1lLCAibG9hZC1kb25lIiwgZmFs
c2UpOwogfQogCkluZGV4OiBXZWJLaXQvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViZnJhbWUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdC5vcmlnL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdl
YmZyYW1lLmNwcAkyMDA5LTA0LTI0IDIwOjQ5OjEyLjAwMDAwMDAwMCArMTAwMAorKysgV2ViS2l0
L1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmZyYW1lLmNwcAkyMDA5LTA0LTI1IDA4OjQ0OjE4
LjAwMDAwMDAwMCArMTAwMApAQCAtMTY3LDYgKzE2NywxNSBAQAogICAgICAgICAgICAgZ19jY2xv
c3VyZV9tYXJzaGFsX1ZPSURfX1ZPSUQsCiAgICAgICAgICAgICBHX1RZUEVfTk9ORSwgMCk7CiAK
KyAgICAvKioKKyAgICAgKiBXZWJLaXRXZWJGcmFtZTo6bG9hZC1kb25lCisgICAgICogQHdlYl9m
cmFtZTogdGhlIG9iamVjdCBvbiB3aGljaCB0aGUgc2lnbmFsIGlzIGVtaXR0ZWQKKyAgICAgKgor
ICAgICAqIEVtaXR0ZWQgd2hlbiBmcmFtZSBsb2FkaW5nIGlzIGRvbmUuCisgICAgICoKKyAgICAg
KiBEZXByZWNhdGVkOiBVc2UgV2ViS2l0V2ViVmlldzo6bG9hZC1maW5pc2hlZCBpbnN0ZWFkLCBh
bmQvb3IKKyAgICAgKiBXZWJLaXRXZWJWaWV3Ojpsb2FkLWVycm9yIHRvIGJlIG5vdGlmaWVkIG9m
IGxvYWQgZXJyb3JzCisgICAgICovCiAgICAgd2Via2l0X3dlYl9mcmFtZV9zaWduYWxzW0xPQURf
RE9ORV0gPSBnX3NpZ25hbF9uZXcoImxvYWQtZG9uZSIsCiAgICAgICAgICAgICBHX1RZUEVfRlJP
TV9DTEFTUyhmcmFtZUNsYXNzKSwKICAgICAgICAgICAgIChHU2lnbmFsRmxhZ3MpKEdfU0lHTkFM
X1JVTl9MQVNUIHwgR19TSUdOQUxfQUNUSU9OKSwKQEAgLTM5OCw2ICs0MDcsMjcgQEAKICAgICBj
b3JlRnJhbWUtPmxvYWRlcigpLT5sb2FkKFJlc291cmNlUmVxdWVzdChLVVJMKEtVUkwoKSwgU3Ry
aW5nOjpmcm9tVVRGOCh1cmkpKSksIGZhbHNlKTsKIH0KIAorc3RhdGljIHZvaWQgd2Via2l0X3dl
Yl9mcmFtZV9sb2FkX2RhdGEoV2ViS2l0V2ViRnJhbWUqIGZyYW1lLCBjb25zdCBnY2hhciogY29u
dGVudCwgY29uc3QgZ2NoYXIqIG1pbWVUeXBlLCBjb25zdCBnY2hhciogZW5jb2RpbmcsIGNvbnN0
IGdjaGFyKiBiYXNlVVJMLCBjb25zdCBnY2hhciogdW5yZWFjaGFibGVVUkwpCit7CisgICAgRnJh
bWUqIGNvcmVGcmFtZSA9IGNvcmUoZnJhbWUpOworICAgIEFTU0VSVChjb3JlRnJhbWUpOworCisg
ICAgLy8gRklYTUU6IGNoZWNrIGlmIGJhc2VVUkwgYW5kIHVucmVhY2hhYmxlVVJMIGFyZSByZWxh
dGl2ZSBhbmQgY29udmVydAorICAgIC8vIHRoZW0gdG8gYW4gYWJzb2x1dGUgdXJsCisgICAgS1VS
TCBiYXNlS1VSTCA9IGJhc2VVUkwgPyBLVVJMKEtVUkwoKSwgU3RyaW5nOjpmcm9tVVRGOChiYXNl
VVJMKSkgOiBibGFua1VSTCgpOworCisgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QoYmFzZUtV
UkwpOworCisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoY29udGVudCwgZ191dGY4X3N0cmxlbihjb250ZW50LCAtMSkpOworICAgIFN1
YnN0aXR1dGVEYXRhIHN1YnN0aXR1dGVEYXRhKHNoYXJlZEJ1ZmZlci5yZWxlYXNlKCksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWltZVR5cGUgPyBTdHJpbmc6OmZyb21VVEY4
KG1pbWVUeXBlKSA6IFN0cmluZzo6ZnJvbVVURjgoInRleHQvaHRtbCIpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nID8gU3RyaW5nOjpmcm9tVVRGOChlbmNvZGlu
ZykgOiBTdHJpbmc6OmZyb21VVEY4KCJVVEYtOCIpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJhc2VLVVJMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEtV
UkwoS1VSTCgpLCBTdHJpbmc6OmZyb21VVEY4KHVucmVhY2hhYmxlVVJMKSkpOworCisgICAgY29y
ZUZyYW1lLT5sb2FkZXIoKS0+bG9hZChyZXF1ZXN0LCBzdWJzdGl0dXRlRGF0YSwgZmFsc2UpOwor
fQorCiAvKioKICAqIHdlYmtpdF93ZWJfZnJhbWVfbG9hZF9zdHJpbmc6CiAgKiBAZnJhbWU6IGEg
I1dlYktpdFdlYkZyYW1lCkBAIC00MjAsMTUgKzQ1MCwyNyBAQAogICAgIGdfcmV0dXJuX2lmX2Zh
aWwoV0VCS0lUX0lTX1dFQl9GUkFNRShmcmFtZSkpOwogICAgIGdfcmV0dXJuX2lmX2ZhaWwoY29u
dGVudCk7CiAKLSAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShmcmFtZSk7Ci0gICAgaWYgKCFj
b3JlRnJhbWUpCi0gICAgICAgIHJldHVybjsKKyAgICB3ZWJraXRfd2ViX2ZyYW1lX2xvYWRfZGF0
YShmcmFtZSwgY29udGVudCwgY29udGVudE1pbWVUeXBlLCBjb250ZW50RW5jb2RpbmcsIGJhc2VV
cmksIE5VTEwpOworfQogCi0gICAgS1VSTCB1cmwoS1VSTCgpLCBiYXNlVXJpID8gU3RyaW5nOjpm
cm9tVVRGOChiYXNlVXJpKSA6ICIiKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzaGFyZWRC
dWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShjb250ZW50LCBzdHJsZW4oY29udGVudCkpOwot
ICAgIFN1YnN0aXR1dGVEYXRhIHN1YnN0aXR1dGVEYXRhKHNoYXJlZEJ1ZmZlci5yZWxlYXNlKCks
IGNvbnRlbnRNaW1lVHlwZSA/IFN0cmluZyhjb250ZW50TWltZVR5cGUpIDogInRleHQvaHRtbCIs
IGNvbnRlbnRFbmNvZGluZyA/IFN0cmluZyhjb250ZW50RW5jb2RpbmcpIDogIlVURi04IiwgYmxh
bmtVUkwoKSwgdXJsKTsKKy8qKgorICogd2Via2l0X3dlYl9mcmFtZV9sb2FkX2FsdGVybmF0ZV9z
dHJpbmc6CisgKiBAZnJhbWU6IGEgI1dlYktpdFdlYkZyYW1lCisgKiBAY29udGVudDogdGhlIGFs
dGVybmF0ZSBjb250ZW50IHRvIGRpc3BsYXkgYXMgdGhlIG1haW4gcGFnZSBvZiB0aGUgQGZyYW1l
CisgKiBAYmFzZV91cmw6IHRoZSBiYXNlIFVSSSBmb3IgcmVsYXRpdmUgbG9jYXRpb25zCisgKiBA
dW5yZWFjaGFibGVfdXJsOiB0aGUgVVJMIGZvciB0aGUgYWx0ZXJuYXRlIHBhZ2UgY29udGVudAor
ICoKKyAqIFJlcXVlc3QgbG9hZGluZyBvZiBhbiBhbHRlcm5hdGUgY29udGVudCBmb3IgYSBVUkwg
dGhhdCBpcyB1bnJlYWNoYWJsZS4KKyAqIFVzaW5nIHRoaXMgbWV0aG9kIHdpbGwgcHJlc2VydmUg
dGhlIGJhY2stZm9yd2FyZCBsaXN0LgorICoKKyAqIFNpbmNlOiAxLjEuNgorICovCit2b2lkIHdl
YmtpdF93ZWJfZnJhbWVfbG9hZF9hbHRlcm5hdGVfc3RyaW5nKFdlYktpdFdlYkZyYW1lKiBmcmFt
ZSwgY29uc3QgZ2NoYXIqIGNvbnRlbnQsIGNvbnN0IGdjaGFyKiBiYXNlVVJMLCBjb25zdCBnY2hh
ciogdW5yZWFjaGFibGVVUkwpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VC
X0ZSQU1FKGZyYW1lKSk7CisgICAgZ19yZXR1cm5faWZfZmFpbChjb250ZW50KTsKIAotICAgIGNv
cmVGcmFtZS0+bG9hZGVyKCktPmxvYWQoUmVzb3VyY2VSZXF1ZXN0KHVybCksIHN1YnN0aXR1dGVE
YXRhLCBmYWxzZSk7CisgICAgd2Via2l0X3dlYl9mcmFtZV9sb2FkX2RhdGEoZnJhbWUsIGNvbnRl
bnQsIE5VTEwsIE5VTEwsIGJhc2VVUkwsIHVucmVhY2hhYmxlVVJMKTsKIH0KIAogLyoqCkluZGV4
OiBXZWJLaXQvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViZnJhbWUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQub3JpZy9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJmcmFtZS5oCTIwMDktMDQt
MjQgMjA6NDk6MTIuMDAwMDAwMDAwICsxMDAwCisrKyBXZWJLaXQvV2ViS2l0L2d0ay93ZWJraXQv
d2Via2l0d2ViZnJhbWUuaAkyMDA5LTA0LTI0IDIwOjUwOjMzLjAwMDAwMDAwMCArMTAwMApAQCAt
OTQsNiArOTQsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBnY2hhciAgICAgICAgICAqYmFzZV91cmkpOwogCiBXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF93
ZWJfZnJhbWVfbG9hZF9hbHRlcm5hdGVfc3RyaW5nIChXZWJLaXRXZWJGcmFtZSAgICAqZnJhbWUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAg
ICAgKmNvbnRlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgZ2NoYXIgICAgICAgKmJhc2VfdXJsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGdjaGFyICAgICAgICp1bnJlYWNoYWJsZV91cmwpOworCitXRUJLSVRf
QVBJIHZvaWQKIHdlYmtpdF93ZWJfZnJhbWVfbG9hZF9yZXF1ZXN0ICAgICAgIChXZWJLaXRXZWJG
cmFtZSAgICAgICAqZnJhbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
V2ViS2l0TmV0d29ya1JlcXVlc3QgKnJlcXVlc3QpOwogCkluZGV4OiBXZWJLaXQvV2ViS2l0L2d0
ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Lm9yaWcvV2Vi
S2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAJMjAwOS0wNC0yNCAyMDo0OToxMi4wMDAw
MDAwMDAgKzEwMDAKKysrIFdlYktpdC9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNw
cAkyMDA5LTA0LTI0IDIwOjUwOjMzLjAwMDAwMDAwMCArMTAwMApAQCAtMTIyLDYgKzEyMiw3IEBA
CiAgICAgTE9BRF9TVEFSVEVELAogICAgIExPQURfQ09NTUlUVEVELAogICAgIExPQURfUFJPR1JF
U1NfQ0hBTkdFRCwKKyAgICBMT0FEX0VSUk9SLAogICAgIExPQURfRklOSVNIRUQsCiAgICAgVElU
TEVfQ0hBTkdFRCwKICAgICBIT1ZFUklOR19PVkVSX0xJTkssCkBAIC0xMzA3LDYgKzEzMDgsMzEg
QEAKICAgICAgICAgICAgIEdfVFlQRV9OT05FLCAxLAogICAgICAgICAgICAgR19UWVBFX0lOVCk7
CiAKKyAgICAvKioKKyAgICAgKiBXZWJLaXRXZWJWaWV3Ojpsb2FkLWVycm9yCisgICAgICogQHdl
Yl92aWV3OiB0aGUgb2JqZWN0IG9uIHdoaWNoIHRoZSBzaWduYWwgaXMgZW1pdHRlZAorICAgICAq
IEB3ZWJfZnJhbWU6IHRoZSAjV2ViS2l0V2ViRnJhbWUKKyAgICAgKiBAdXJpOiB0aGUgVVJJIHRo
YXQgdHJpZ2dlcmVkIHRoZSBlcnJvcgorICAgICAqIEB3ZWJfZXJyb3I6IHRoZSAjR0Vycm9yIHRo
YXQgd2FzIHRyaWdnZXJlZAorICAgICAqCisgICAgICogQW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUg
bG9hZGluZy4gQnkgZGVmYXVsdCwgaWYgdGhlIHNpZ25hbCBpcyBub3QKKyAgICAgKiBoYW5kbGVk
LCB0aGUgQHdlYl92aWV3IHdpbGwgZGlzcGxheSBhIHN0b2NrIGVycm9yIHBhZ2UuIFlvdSBuZWVk
IHRvCisgICAgICogaGFuZGxlIHRoZSBzaWduYWwgaWYgeW91IHdhbnQgdG8gcHJvdmlkZSB5b3Vy
IG93biBlcnJvciBwYWdlLgorICAgICAqCisgICAgICogU2luY2U6IDEuMS42CisgICAgICovCisg
ICAgd2Via2l0X3dlYl92aWV3X3NpZ25hbHNbTE9BRF9FUlJPUl0gPSBnX3NpZ25hbF9uZXcoImxv
YWQtZXJyb3IiLAorICAgICAgICAgICAgR19UWVBFX0ZST01fQ0xBU1Mod2ViVmlld0NsYXNzKSwK
KyAgICAgICAgICAgIChHU2lnbmFsRmxhZ3MpKEdfU0lHTkFMX1JVTl9MQVNUIHwgR19TSUdOQUxf
QUNUSU9OKSwKKyAgICAgICAgICAgIDAsCisgICAgICAgICAgICBnX3NpZ25hbF9hY2N1bXVsYXRv
cl90cnVlX2hhbmRsZWQsCisgICAgICAgICAgICBOVUxMLAorICAgICAgICAgICAgd2Via2l0X21h
cnNoYWxfQk9PTEVBTl9fT0JKRUNUX1NUUklOR19QT0lOVEVSLAorICAgICAgICAgICAgR19UWVBF
X0JPT0xFQU4sIDMsCisgICAgICAgICAgICBXRUJLSVRfVFlQRV9XRUJfRlJBTUUsCisgICAgICAg
ICAgICBHX1RZUEVfU1RSSU5HLAorICAgICAgICAgICAgR19UWVBFX1BPSU5URVIpOworCiAgICAg
d2Via2l0X3dlYl92aWV3X3NpZ25hbHNbTE9BRF9GSU5JU0hFRF0gPSBnX3NpZ25hbF9uZXcoImxv
YWQtZmluaXNoZWQiLAogICAgICAgICAgICAgR19UWVBFX0ZST01fQ0xBU1Mod2ViVmlld0NsYXNz
KSwKICAgICAgICAgICAgIChHU2lnbmFsRmxhZ3MpKEdfU0lHTkFMX1JVTl9MQVNUIHwgR19TSUdO
QUxfQUNUSU9OKSwKSW5kZXg6IFdlYktpdC9XZWJLaXQvZ3RrL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQub3JpZy9XZWJLaXQvZ3RrL0NoYW5nZUxvZwkyMDA5LTA0LTI0IDIxOjE1OjI3
LjAwMDAwMDAwMCArMTAwMAorKysgV2ViS2l0L1dlYktpdC9ndGsvQ2hhbmdlTG9nCTIwMDktMDQt
MjUgMDg6NDM6NDEuMDAwMDAwMDAwICsxMDAwCkBAIC0xLDMgKzEsMjIgQEAKKzIwMDktMDQtMjQg
IEphbiBNaWNoYWVsIEFsb256byAgPGptYWxvbnpvQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0dUS10gRXJyb3IgcmVwb3J0aW5n
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODM0NAor
CisgICAgICAgIEFkZCBhIFdlYktpdFdlYkZyYW1lIEFQSSB0byBsb2FkIGFsdGVybmF0ZSBjb250
ZW50IGZvciB1bnJlYWNoYWJsZSBVUkxzLgorICAgICAgICBBbHNvIGFkZCBhIG5ldyBzaWduYWwg
ImxvYWQtZXJyb3IiIGZvciBoYW5kbGluZyBsb2FkIGVycm9ycy4KKworICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RnJh
bWVMb2FkZXJDbGllbnQ6OnBvc3RQcm9ncmVzc0ZpbmlzaGVkTm90aWZpY2F0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmFpbExvYWRpbmcpOgor
ICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGYWlsUHJvdmlz
aW9uYWxMb2FkKToKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNo
RGlkRmFpbExvYWQpOgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJmcmFtZS5jcHA6CisgICAg
ICAgICogd2Via2l0L3dlYmtpdHdlYmZyYW1lLmg6CisgICAgICAgICogd2Via2l0L3dlYmtpdHdl
YnZpZXcuY3BwOgorCiAyMDA5LTA0LTIxICBYYW4gTG9wZXogIDx4bG9wZXpAaWdhbGlhLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBHdXN0YXZvIE5vcm9uaGEuCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>29770</attachid>
            <date>2009-04-24 15:51:46 -0700</date>
            <delta_ts>2009-04-25 01:20:30 -0700</delta_ts>
            <desc>[2/3] Add default page for error reporting - v3</desc>
            <filename>error-page</filename>
            <type>text/plain</type>
            <size>5783</size>
            <attacher name="Jan Alonzo">jmalonzo</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9HTlVtYWtlZmlsZS5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQub3JpZy9H
TlVtYWtlZmlsZS5hbQkyMDA5LTA0LTI0IDIwOjQ5OjExLjAwMDAwMDAwMCArMTAwMAorKysgV2Vi
S2l0L0dOVW1ha2VmaWxlLmFtCTIwMDktMDQtMjUgMDc6NTE6MTMuMDAwMDAwMDAwICsxMDAwCkBA
IC00NDksOCArNDQ5LDYgQEAgRGVyaXZlZFNvdXJjZXMvd2Via2l0ZW51bXR5cGVzLmNwcDogJCh3
ZQogCSYmIGNwIHhnZW4tZ3RjICRAIFwKIAkmJiBybSAtZiB4Z2VuLWd0YwogCi0jIEVORCBXRUJL
SVQgR1RLKwotIwogIyBGaWxlcyB0aGF0IHdpbGwgYmUgZGlzdHJpYnV0ZWQKIEVYVFJBX0RJU1Qg
PSBcCiAJV2ViS2l0L0xJQ0VOU0UgXApAQCAtNDY1LDcgKzQ2MywxNSBAQCBFWFRSQV9ESVNUID0g
XAogCSQoc3JjZGlyKS9XZWJLaXQvZ3RrL2RvY3Mvd2Via2l0Z3RrLWRvY3Muc2dtbCBcCiAJJChz
cmNkaXIpL1dlYktpdC9ndGsvZG9jcy93ZWJraXRndGstc2VjdGlvbnMudHh0IFwKIAkkKHNyY2Rp
cikvV2ViS2l0L2d0ay9kb2NzL3ZlcnNpb24ueG1sLmluIFwKLQkkKHNyY2RpcikvV2ViS2l0L2d0
ay9wby8qCisJJChzcmNkaXIpL1dlYktpdC9ndGsvcG8vKiBcCisJJChzcmNkaXIpL1dlYktpdC9n
dGsvcmVzb3VyY2VzLyoKKworIyBleHRyYSByZXNvdXJjZSBmaWxlcworcmVzb3VyY2VzZGlyID0g
JHtkYXRhZGlyfS93ZWJraXQtMS4wL3Jlc291cmNlcworZGlzdF9yZXNvdXJjZXNfREFUQSA9IFwK
KwkkKHNoZWxsIGxzICQoc3JjZGlyKS9XZWJLaXQvZ3RrL3Jlc291cmNlcy8qLmh0bWwpCisKKyMg
RU5EIFdFQktJVCBHVEsrCiAKICMgRmlsZXMgdGhhdCB3aWxsIGJlIGNsZWFuZWQKIE1BSU5UQUlO
RVJDTEVBTkZJTEVTIDo9ICQoc3RhbXBfZmlsZXMpICQoQlVJTFRfU09VUkNFUykgZG9sdGNvbXBp
bGUgZG9sdGxpYnRvb2wgV2ViS2l0L2d0ay9kb2NzL3ZlcnNpb24ueG1sIFdlYktpdC9ndGsvZG9j
cy9HTlVtYWtlZmlsZQpAQCAtNTY0LDQgKzU3MCw0IEBAIGluc3RhbGwtZGF0YS1sb2NhbDogcG8t
aW5zdGFsbC1kYXRhLWxvY2EKIAogaW5zdGFsbGRpcnMtZGF0YS1sb2NhbDogcG8taW5zdGFsbGRp
cnMtZGF0YS1sb2NhbAogCi11bmluc3RhbGwtbG9jYWw6IHBvLXVuaW5zdGFsbC1sb2NhbApcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK3VuaW5zdGFsbC1sb2NhbDogcG8tdW5pbnN0YWxsLWxv
Y2FsCkluZGV4OiBXZWJLaXQvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudEd0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Lm9yaWcvV2ViS2l0L2d0ay9XZWJDb3Jl
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAJMjAwOS0wNC0yNCAyMDo1MDozMy4wMDAw
MDAwMDAgKzEwMDAKKysrIFdlYktpdC9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9h
ZGVyQ2xpZW50R3RrLmNwcAkyMDA5LTA0LTI1IDA4OjI2OjI5LjAwMDAwMDAwMCArMTAwMApAQCAt
NTcsNiArNTcsNyBAQAogI2luY2x1ZGUgIndlYmtpdHByaXZhdGUuaCIKIAogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0FQSUNhc3QuaD4KKyNpbmNsdWRlIDxnaW8vZ2lvLmg+CiAjaW5jbHVkZSA8
Z2xpYi5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaWYgUExBVEZPUk0oVU5JWCkKQEAgLTg0OSwx
MCArODUwLDI4IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmFpbEwKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFN0cmluZyBjb250ZW50ID0gU3RyaW5nOjpmb3Jt
YXQoIjxodG1sPjxoZWFkPjx0aXRsZT4lZDwvdGl0bGU+PC9oZWFkPjxib2R5PiVzPC9ib2R5Pjwv
aHRtbD4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IuZXJyb3JD
b2RlKCksIHdlYkVycm9yLT5tZXNzYWdlKTsKLSAgICB3ZWJraXRfd2ViX2ZyYW1lX2xvYWRfYWx0
ZXJuYXRlX3N0cmluZyhtX2ZyYW1lLCBjb250ZW50LnV0ZjgoKS5kYXRhKCksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgZXJyb3IuZmFpbGluZ1VSTCgp
LnV0ZjgoKS5kYXRhKCkpOworICAgIFN0cmluZyBjb250ZW50OworICAgIGdjaGFyKiBmaWxlQ29u
dGVudCA9IDA7CisgICAgZ2NoYXIqIGVycm9yVVJJID0gZ19maWxlbmFtZV90b191cmkoREFUQV9E
SVIiL3dlYmtpdC0xLjAvcmVzb3VyY2VzL2Vycm9yLmh0bWwiLCBOVUxMLCBOVUxMKTsKKyAgICBH
RmlsZSogZXJyb3JGaWxlID0gZ19maWxlX25ld19mb3JfdXJpKGVycm9yVVJJKTsKKworICAgIGlm
ICghZXJyb3JGaWxlKQorICAgICAgICBjb250ZW50ID0gU3RyaW5nOjpmb3JtYXQoIjxodG1sPjxi
b2R5PiVzPC9ib2R5PjwvaHRtbD4iLCB3ZWJFcnJvci0+bWVzc2FnZSk7CisgICAgZWxzZSB7Cisg
ICAgICAgIGdib29sZWFuIGxvYWRlZCA9IGdfZmlsZV9sb2FkX2NvbnRlbnRzKGVycm9yRmlsZSwg
MCwgJmZpbGVDb250ZW50LCAwLCAwLCAwKTsKKyAgICAgICAgaWYgKCFsb2FkZWQpCisgICAgICAg
ICAgICBjb250ZW50ID0gU3RyaW5nOjpmb3JtYXQoIjxodG1sPjxib2R5PiVzPC9ib2R5PjwvaHRt
bD4iLCB3ZWJFcnJvci0+bWVzc2FnZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNvbnRl
bnQgPSBTdHJpbmc6OmZvcm1hdChmaWxlQ29udGVudCwgZXJyb3IuZmFpbGluZ1VSTCgpLnV0Zjgo
KS5kYXRhKCksIHdlYkVycm9yLT5tZXNzYWdlKTsKKyAgICB9CisKKyAgICB3ZWJraXRfd2ViX2Zy
YW1lX2xvYWRfYWx0ZXJuYXRlX3N0cmluZyhtX2ZyYW1lLCBjb250ZW50LnV0ZjgoKS5kYXRhKCks
IDAsIGVycm9yLmZhaWxpbmdVUkwoKS51dGY4KCkuZGF0YSgpKTsKKworICAgIGdfZnJlZShmaWxl
Q29udGVudCk7CisKKyAgICBpZiAoZXJyb3JGaWxlKQorICAgICAgICBnX29iamVjdF91bnJlZihl
cnJvckZpbGUpOworCiAgICAgZ19lcnJvcl9mcmVlKHdlYkVycm9yKTsKIAogICAgIC8vIEZJWE1F
OiB0aGlzIGlzIGhlcmUgZm9yIGNvbXBhdGliaWxpdHkncyBzYWtlLgpJbmRleDogV2ViS2l0L1dl
YktpdC9ndGsvcmVzb3VyY2VzL2Vycm9yLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gL2Rldi9udWxsCTE5
NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCisrKyBXZWJLaXQvV2ViS2l0L2d0ay9y
ZXNvdXJjZXMvZXJyb3IuaHRtbAkyMDA5LTA0LTI1IDA4OjAwOjAyLjAwMDAwMDAwMCArMTAwMApA
QCAtMCwwICsxLDYwIEBACis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPkVycm9yPC90aXRsZT4KKzxz
dHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Citib2R5IHsKKyBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwor
IG1hcmdpbjogMDsKKyBwYWRkaW5nOiAwOworfQorCisjZXJyb3JDb250YWluZXIgeworIGJhY2tn
cm91bmQ6ICNmZmY7CisgbWluLXdpZHRoOiAzNWVtOworIG1heC13aWR0aDogMzVlbTsKKyBwb3Np
dGlvbjogYWJzb2x1dGU7CisgdG9wOiAyZW07CisgbGVmdDogMWVtOworIHBhZGRpbmc6IDEwcHg7
CisgYm9yZGVyOiAycHggc29saWQgI2VlZTsKKyAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDVweDsK
K30KKworI2Vycm9yVGl0bGVUZXh0IHsKKyBmb250LXNpemU6IDEyMCU7CisgZm9udC13ZWlnaHQ6
IGJvbGQ7Cit9CisKKyNlcnJvck1lc3NhZ2VUZXh0IHsKKyBmb250LXNpemU6IDgwJTsKK30KKwor
PC9zdHlsZT4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKworZnVuY3Rpb24gdHJ5
YWdhaW4oKQoreworIGxvY2F0aW9uLnJlbG9hZCgpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxkaXYgaWQ9ImVycm9yQ29udGFpbmVyIj4KKworPGRpdiBpZD0iZXJyb3JUaXRsZSI+
CisgPHAgaWQ9ImVycm9yVGl0bGVUZXh0Ij5VbmFibGUgdG8gbG9hZCBwYWdlPC9wPgorPC9kaXY+
Cis8ZGl2IGlkPSJlcnJvck1lc3NhZ2UiPgorIDxwPlByb2JsZW0gb2NjdXJyZWQgd2hpbGUgbG9h
ZGluZyB0aGUgVVJMICVzPC9wPgorIDxwIGlkPSJlcnJvck1lc3NhZ2VUZXh0Ij4lczwvYT4KKzwv
cD4KKzwvZGl2PgorCis8Zm9ybSBuYW1lPSJibCIgb25zdWJtaXQ9InRyeWFnYWluKCkiPgorPGlu
cHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9InRyeSBhZ2FpbiIvPgorPC9mb3JtPgorCis8L2Rpdj4K
KworPC9ib2R5PgorPC9odG1sPgpJbmRleDogV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQub3JpZy9DaGFuZ2VMb2cJMjAwOS0wNC0yNCAyMToxOTo1MS4wMDAwMDAwMDAgKzEw
MDAKKysrIFdlYktpdC9DaGFuZ2VMb2cJMjAwOS0wNC0yNSAwNzo1MToxMy4wMDAwMDAwMDAgKzEw
MDAKQEAgLTEsMyArMSwxNCBAQAorMjAwOS0wNC0yNCAgSmFuIE1pY2hhZWwgQWxvbnpvICA8am1h
bG9uem9Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBbR1RLXSBFcnJvciByZXBvcnRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MzQ0CisKKyAgICAgICAgQWRkIHRoZSBkZWZhdWx0
IGVycm9yIHBhZ2UgZm9yIGluc3RhbGxhdGlvbi4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFt
OgorCiAyMDA5LTA0LTI0ICBTaW1vbiBIYXVzbWFubiAgPHNpbW9uLmhhdXNtYW5uQG5va2lhLmNv
bT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBcml5YSBIaWRheWF0LgpJbmRleDogV2ViS2l0L1dl
YktpdC9ndGsvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC5vcmlnL1dlYktpdC9ndGsv
Q2hhbmdlTG9nCTIwMDktMDQtMjQgMjE6MTk6NTEuMDAwMDAwMDAwICsxMDAwCisrKyBXZWJLaXQv
V2ViS2l0L2d0ay9DaGFuZ2VMb2cJMjAwOS0wNC0yNSAwNzo1MToxMy4wMDAwMDAwMDAgKzEwMDAK
QEAgLTUsNiArNSwxOSBAQAogICAgICAgICBbR1RLXSBFcnJvciByZXBvcnRpbmcKICAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MzQ0CiAKKyAgICAgICAg
RGlzcGxheSBhIGRlZmF1bHQgZXJyb3IgcGFnZSBmb3IgbG9hZCBlcnJvcnMuCisKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHA6CisgICAgICAgIChXZWJL
aXQ6OkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZhaWxMb2FkKToKKyAgICAgICAgKiBy
ZXNvdXJjZXMvZXJyb3IuaHRtbDogQWRkZWQuCisKKzIwMDktMDQtMjQgIEphbiBNaWNoYWVsIEFs
b256byAgPGptYWxvbnpvQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgW0dUS10gRXJyb3IgcmVwb3J0aW5nCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODM0NAorCiAgICAgICAgIEFkZCBh
IFdlYktpdFdlYkZyYW1lIEFQSSB0byBsb2FkIGFsdGVybmF0ZSBjb250ZW50IGZvciB1bnJlYWNo
YWJsZSBVUkxzLgogICAgICAgICBBbHNvIGFkZCBhIG5ldyBzaWduYWwgImxvYWQtZXJyb3IiIGZv
ciBoYW5kbGluZyBsb2FkIGVycm9ycy4KIAo=
</data>
<flag name="review"
          id="14898"
          type_id="1"
          status="+"
          setter="xan.lopez"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>29771</attachid>
            <date>2009-04-24 15:53:19 -0700</date>
            <delta_ts>2009-04-24 23:53:36 -0700</delta_ts>
            <desc>[3/3] implement resource error-using methods - v2</desc>
            <filename>error-resourceerror</filename>
            <type>text/plain</type>
            <size>19939</size>
            <attacher name="Jan Alonzo">jmalonzo</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRs
ZVNvdXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC5vcmlnL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAJMjAwOS0wNC0yNSAwNzo1MToxMy4wMDAw
MDAwMDAgKzEwMDAKKysrIFdlYktpdC9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNv
dXJjZUhhbmRsZVNvdXAuY3BwCTIwMDktMDQtMjUgMDg6NDA6MzguMDAwMDAwMDAwICsxMDAwCkBA
IC0xMjEsMTQgKzEyMSw2IEBACiAgICAgICAgIGdfbWFpbl9sb29wX3J1bihtX21haW5Mb29wKTsK
IH0KIAotZW51bQotewotICAgIEVSUk9SX1RSQU5TUE9SVCwKLSAgICBFUlJPUl9VTktOT1dOX1BS
T1RPQ09MLAotICAgIEVSUk9SX0JBRF9OT05fSFRUUF9NRVRIT0QsCi0gICAgRVJST1JfVU5BQkxF
X1RPX09QRU5fRklMRSwKLX07Ci0KIHN0YXRpYyB2b2lkIGNsZWFudXBHaW9PcGVyYXRpb24oUmVz
b3VyY2VIYW5kbGVJbnRlcm5hbCogaGFuZGxlKTsKIAogUmVzb3VyY2VIYW5kbGVJbnRlcm5hbDo6
flJlc291cmNlSGFuZGxlSW50ZXJuYWwoKQpAQCAtMzM5LDkgKzMzMSwxMCBAQAogICAgICAgICBy
ZXR1cm47CiAKICAgICBpZiAoU09VUF9TVEFUVVNfSVNfVFJBTlNQT1JUX0VSUk9SKG1zZy0+c3Rh
dHVzX2NvZGUpKSB7Ci0gICAgICAgIGNoYXIqIHVyaSA9IHNvdXBfdXJpX3RvX3N0cmluZyhzb3Vw
X21lc3NhZ2VfZ2V0X3VyaShtc2cpLCBmYWxzZSk7Ci0gICAgICAgIFJlc291cmNlRXJyb3IgZXJy
b3IoIndlYmtpdC1uZXR3b3JrLWVycm9yIiwgRVJST1JfVFJBTlNQT1JULCB1cmksIFN0cmluZzo6
ZnJvbVVURjgobXNnLT5yZWFzb25fcGhyYXNlKSk7Ci0gICAgICAgIGdfZnJlZSh1cmkpOworICAg
ICAgICBSZXNvdXJjZUVycm9yIGVycm9yKGdfcXVhcmtfdG9fc3RyaW5nKFNPVVBfSFRUUF9FUlJP
UiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnLT5zdGF0dXNfY29kZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzb3VwX3VyaV90b19zdHJpbmcoc291cF9tZXNzYWdlX2dl
dF91cmkobXNnKSwgZmFsc2UpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZzo6
ZnJvbVVURjgobXNnLT5yZWFzb25fcGhyYXNlKSk7CiAgICAgICAgIGNsaWVudC0+ZGlkRmFpbCho
YW5kbGUuZ2V0KCksIGVycm9yKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTUzNCw3ICs1
MjcsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgZ19mcmVlKGZpbGVOYW1lKTsKIAogICAgICAg
ICAgICAgICAgICAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIFJlc291
cmNlRXJyb3IgcmVzb3VyY2VFcnJvcigid2Via2l0LW5ldHdvcmstZXJyb3IiLCBFUlJPUl9VTkFC
TEVfVE9fT1BFTl9GSUxFLCB1cmxTdHJpbmcsIGVycm9yLT5tZXNzYWdlKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIFJlc291cmNlRXJyb3IgcmVzb3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0cmlu
ZyhTT1VQX0hUVFBfRVJST1IpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1zZy0+c3RhdHVzX2NvZGUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsU3RyaW5nLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZzo6ZnJvbVVURjgoZXJy
b3ItPm1lc3NhZ2UpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGdfZXJyb3JfZnJlZShlcnJv
cik7CiAKICAgICAgICAgICAgICAgICAgICAgICAgIGQtPmNsaWVudCgpLT5kaWRGYWlsKHRoaXMs
IHJlc291cmNlRXJyb3IpOwpAQCAtNTYyLDI1ICs1NTgsNiBAQAogICAgIHJldHVybiB0cnVlOwog
fQogCi1zdGF0aWMgZ2Jvb2xlYW4gcmVwb3J0VW5rbm93blByb3RvY29sRXJyb3IoZ3BvaW50ZXIg
Y2FsbGJhY2tfZGF0YSkKLXsKLSAgICBSZXNvdXJjZUhhbmRsZSogaGFuZGxlID0gc3RhdGljX2Nh
c3Q8UmVzb3VyY2VIYW5kbGUqPihjYWxsYmFja19kYXRhKTsKLSAgICBSZXNvdXJjZUhhbmRsZUlu
dGVybmFsKiBkID0gaGFuZGxlLT5nZXRJbnRlcm5hbCgpOwotICAgIFJlc291cmNlSGFuZGxlQ2xp
ZW50KiBjbGllbnQgPSBoYW5kbGUtPmNsaWVudCgpOwotCi0gICAgaWYgKGQtPm1fY2FuY2VsbGVk
IHx8ICFjbGllbnQpIHsKLSAgICAgICAgaGFuZGxlLT5kZXJlZigpOwotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgfQotCi0gICAgS1VSTCB1cmwgPSBoYW5kbGUtPnJlcXVlc3QoKS51cmwoKTsK
LSAgICBSZXNvdXJjZUVycm9yIGVycm9yKCJ3ZWJraXQtbmV0d29yay1lcnJvciIsIEVSUk9SX1VO
S05PV05fUFJPVE9DT0wsIHVybC5zdHJpbmcoKSwgdXJsLnByb3RvY29sKCkpOwotICAgIGNsaWVu
dC0+ZGlkRmFpbChoYW5kbGUsIGVycm9yKTsKLQotICAgIGhhbmRsZS0+ZGVyZWYoKTsKLSAgICBy
ZXR1cm4gZmFsc2U7Ci19Ci0KIGJvb2wgUmVzb3VyY2VIYW5kbGU6OnN0YXJ0KEZyYW1lKiBmcmFt
ZSkKIHsKICAgICBBU1NFUlQoIWQtPm1fbXNnKTsKQEAgLTYxMCwxMSArNTg3LDkgQEAKICAgICAg
ICAgLy8gRklYTUU6IHNob3VsZCB3ZSBiZSBkb2luZyBhbnkgb3RoZXIgcHJvdG9jb2xzIGhlcmU/
CiAgICAgICAgIHJldHVybiBzdGFydEdpbyh1cmwpOwogCi0gICAgLy8gRXJyb3IgbXVzdCBub3Qg
YmUgcmVwb3J0ZWQgaW1tZWRpYXRlbHksIGJ1dCB0aHJvdWdoIGFuIGlkbGUgZnVuY3Rpb24uCi0g
ICAgLy8gRGVzcGl0ZSBlcnJvciwgd2Ugc2hvdWxkIHJldHVybiB0cnVlIHNvIGEgcHJvcGVyIGhh
bmRsZSBpcyBjcmVhdGVkLAotICAgIC8vIHRvIHdoaWNoIHRoaXMgZmFpbHVyZSBjYW4gYmUgcmVw
b3J0ZWQuCi0gICAgcmVmKCk7Ci0gICAgZC0+bV9pZGxlSGFuZGxlciA9IGdfaWRsZV9hZGQocmVw
b3J0VW5rbm93blByb3RvY29sRXJyb3IsIHRoaXMpOworICAgIC8vIEVycm9yIG11c3Qgbm90IGJl
IHJlcG9ydGVkIGltbWVkaWF0ZWx5CisgICAgdGhpcy0+c2NoZWR1bGVGYWlsdXJlKEludmFsaWRV
UkxGYWlsdXJlKTsKKwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC02NjgsMTUgKzY0Myw2IEBA
CiAKIC8vIEdJTy1iYXNlZCBsb2FkZXIKIAotc3RhdGljIGlubGluZSBSZXNvdXJjZUVycm9yIG5l
dHdvcmtFcnJvckZvckZpbGUoR0ZpbGUqIGZpbGUsIEdFcnJvciogZXJyb3IpCi17Ci0gICAgLy8g
RklYTUU6IE1hcCBnaW8gZXJyb3JzIHRvIGEgbW9yZSBkZXRhaWxlZCBlcnJvciBjb2RlIHdoZW4g
d2UgaGF2ZSBpdCBpbiBXZWJLaXQuCi0gICAgZ2NoYXIqIHVyaSA9IGdfZmlsZV9nZXRfdXJpKGZp
bGUpOwotICAgIFJlc291cmNlRXJyb3IgcmVzb3VyY2VFcnJvcigid2Via2l0LW5ldHdvcmstZXJy
b3IiLCBFUlJPUl9UUkFOU1BPUlQsIHVyaSwgZXJyb3IgPyBTdHJpbmc6OmZyb21VVEY4KGVycm9y
LT5tZXNzYWdlKSA6IFN0cmluZygpKTsKLSAgICBnX2ZyZWUodXJpKTsKLSAgICByZXR1cm4gcmVz
b3VyY2VFcnJvcjsKLX0KLQogc3RhdGljIHZvaWQgY2xlYW51cEdpb09wZXJhdGlvbihSZXNvdXJj
ZUhhbmRsZUludGVybmFsKiBkKQogewogICAgIGlmIChkLT5tX2dmaWxlKSB7CkBAIC03MzUsNyAr
NzAxLDEwIEBACiAKICAgICBnc3NpemUgYnl0ZXNSZWFkID0gZ19pbnB1dF9zdHJlYW1fcmVhZF9m
aW5pc2goZC0+bV9pbnB1dFN0cmVhbSwgcmVzLCAmZXJyb3IpOwogICAgIGlmIChlcnJvcikgewot
ICAgICAgICBSZXNvdXJjZUVycm9yIHJlc291cmNlRXJyb3IgPSBuZXR3b3JrRXJyb3JGb3JGaWxl
KGQtPm1fZ2ZpbGUsIGVycm9yKTsKKyAgICAgICAgUmVzb3VyY2VFcnJvciByZXNvdXJjZUVycm9y
KGdfcXVhcmtfdG9fc3RyaW5nKEdfSU9fRVJST1IpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZXJyb3ItPmNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBnX2ZpbGVfZ2V0X3VyaShkLT5tX2dmaWxlKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGVycm9yID8gU3RyaW5nOjpmcm9tVVRGOChlcnJvci0+bWVzc2FnZSkgOiBT
dHJpbmcoKSk7CiAgICAgICAgIGdfZXJyb3JfZnJlZShlcnJvcik7CiAgICAgICAgIGNsZWFudXBH
aW9PcGVyYXRpb24oZCk7CiAgICAgICAgIGNsaWVudC0+ZGlkRmFpbChoYW5kbGUuZ2V0KCksIHJl
c291cmNlRXJyb3IpOwpAQCAtNzc4LDcgKzc0NywxMSBAQAogICAgIEdFcnJvciAqZXJyb3IgPSAw
OwogICAgIEdGaWxlSW5wdXRTdHJlYW0qIGluID0gZ19maWxlX3JlYWRfZmluaXNoKEdfRklMRShz
b3VyY2UpLCByZXMsICZlcnJvcik7CiAgICAgaWYgKGVycm9yKSB7Ci0gICAgICAgIFJlc291cmNl
RXJyb3IgcmVzb3VyY2VFcnJvciA9IG5ldHdvcmtFcnJvckZvckZpbGUoZC0+bV9nZmlsZSwgZXJy
b3IpOworICAgICAgICBSZXNvdXJjZUVycm9yIHJlc291cmNlRXJyb3IoZ19xdWFya190b19zdHJp
bmcoR19JT19FUlJPUiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJv
ci0+Y29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfZmlsZV9nZXRf
dXJpKGQtPm1fZ2ZpbGUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJy
b3IgPyBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSA6IFN0cmluZygpKTsKKwogICAg
ICAgICBnX2Vycm9yX2ZyZWUoZXJyb3IpOwogICAgICAgICBjbGVhbnVwR2lvT3BlcmF0aW9uKGQp
OwogICAgICAgICBjbGllbnQtPmRpZEZhaWwoaGFuZGxlLCByZXNvdXJjZUVycm9yKTsKQEAgLTgy
NSw4ICs3OTgsMTAgQEAKICAgICAgICAgLy8gc2VydmVyIChhbmQgdGhlbiBrZWVwIHRyYWNrIG9m
IHRoZSBmYWN0IHRoYXQgd2UgbW91bnRlZCBpdCwKICAgICAgICAgLy8gYW5kIHNldCBhIHRpbWVv
dXQgdG8gdW5tb3VudCBpdCBsYXRlciBhZnRlciBpdCdzIGJlZW4gaWRsZQogICAgICAgICAvLyBm
b3IgYSB3aGlsZSkuCi0KLSAgICAgICAgUmVzb3VyY2VFcnJvciByZXNvdXJjZUVycm9yID0gbmV0
d29ya0Vycm9yRm9yRmlsZShkLT5tX2dmaWxlLCBlcnJvcik7CisgICAgICAgIFJlc291cmNlRXJy
b3IgcmVzb3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0cmluZyhHX0lPX0VSUk9SKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yLT5jb2RlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZ19maWxlX2dldF91cmkoZC0+bV9nZmlsZSksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvciA/IFN0cmluZzo6ZnJvbVVURjgoZXJy
b3ItPm1lc3NhZ2UpIDogU3RyaW5nKCkpOwogICAgICAgICBnX2Vycm9yX2ZyZWUoZXJyb3IpOwog
ICAgICAgICBjbGVhbnVwR2lvT3BlcmF0aW9uKGQpOwogICAgICAgICBjbGllbnQtPmRpZEZhaWwo
aGFuZGxlLCByZXNvdXJjZUVycm9yKTsKQEAgLTgzNiw4ICs4MTEsMTAgQEAKICAgICBpZiAoZ19m
aWxlX2luZm9fZ2V0X2ZpbGVfdHlwZShpbmZvKSAhPSBHX0ZJTEVfVFlQRV9SRUdVTEFSKSB7CiAg
ICAgICAgIC8vIEZJWE1FOiB3aGF0IGlmIHRoZSBVUkkgcG9pbnRzIHRvIGEgZGlyZWN0b3J5PyBT
aG91bGQgd2UKICAgICAgICAgLy8gZ2VuZXJhdGUgYSBsaXN0aW5nPyBIb3c/IFdoYXQgZG8gb3Ro
ZXIgYmFja2VuZHMgZG8gaGVyZT8KLQotICAgICAgICBSZXNvdXJjZUVycm9yIHJlc291cmNlRXJy
b3IgPSBuZXR3b3JrRXJyb3JGb3JGaWxlKGQtPm1fZ2ZpbGUsIDApOworICAgICAgICBSZXNvdXJj
ZUVycm9yIHJlc291cmNlRXJyb3IoZ19xdWFya190b19zdHJpbmcoR19JT19FUlJPUiksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHX0lPX0VSUk9SX0ZBSUxFRCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfZmlsZV9nZXRfdXJpKGQtPm1fZ2ZpbGUp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nKCkpOwogICAgICAg
ICBjbGVhbnVwR2lvT3BlcmF0aW9uKGQpOwogICAgICAgICBjbGllbnQtPmRpZEZhaWwoaGFuZGxl
LCByZXNvdXJjZUVycm9yKTsKICAgICAgICAgcmV0dXJuOwpAQCAtODU5LDcgKzgzNiw5IEBACiBi
b29sIFJlc291cmNlSGFuZGxlOjpzdGFydEdpbyhLVVJMIHVybCkKIHsKICAgICBpZiAocmVxdWVz
dCgpLmh0dHBNZXRob2QoKSAhPSAiR0VUIiAmJiByZXF1ZXN0KCkuaHR0cE1ldGhvZCgpICE9ICJQ
T1NUIikgewotICAgICAgICBSZXNvdXJjZUVycm9yIGVycm9yKCJ3ZWJraXQtbmV0d29yay1lcnJv
ciIsIEVSUk9SX0JBRF9OT05fSFRUUF9NRVRIT0QsIHVybC5zdHJpbmcoKSwgcmVxdWVzdCgpLmh0
dHBNZXRob2QoKSk7CisgICAgICAgIFJlc291cmNlRXJyb3IgZXJyb3IoZ19xdWFya190b19zdHJp
bmcoU09VUF9IVFRQX0VSUk9SKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTT1VQX1NU
QVRVU19NRVRIT0RfTk9UX0FMTE9XRUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJs
LnN0cmluZygpLCByZXF1ZXN0KCkuaHR0cE1ldGhvZCgpKTsKICAgICAgICAgZC0+Y2xpZW50KCkt
PmRpZEZhaWwodGhpcywgZXJyb3IpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpJbmRl
eDogV2ViS2l0L1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdC5vcmlnL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCTIwMDktMDQtMjUgMDg6NDA6MTEuMDAwMDAwMDAwICsx
MDAwCisrKyBXZWJLaXQvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVu
dEd0ay5jcHAJMjAwOS0wNC0yNSAwODo0MjowMi4wMDAwMDAwMDAgKzEwMDAKQEAgLTQ5LDE2ICs0
OSwxOCBAQAogI2luY2x1ZGUgIlByb2dyZXNzVHJhY2tlci5oIgogI2luY2x1ZGUgIkpTRE9NQmlu
ZGluZy5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKLSNpbmNsdWRlICJ3ZWJraXR3
ZWJ2aWV3LmgiCisjaW5jbHVkZSAid2Via2l0ZXJyb3IuaCIKICNpbmNsdWRlICJ3ZWJraXRuZXR3
b3JrcmVxdWVzdC5oIgorI2luY2x1ZGUgIndlYmtpdHByaXZhdGUuaCIKICNpbmNsdWRlICJ3ZWJr
aXR3ZWJmcmFtZS5oIgogI2luY2x1ZGUgIndlYmtpdHdlYm5hdmlnYXRpb25hY3Rpb24uaCIKICNp
bmNsdWRlICJ3ZWJraXR3ZWJwb2xpY3lkZWNpc2lvbi5oIgotI2luY2x1ZGUgIndlYmtpdHByaXZh
dGUuaCIKKyNpbmNsdWRlICJ3ZWJraXR3ZWJ2aWV3LmgiCiAKICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9BUElDYXN0Lmg+CiAjaW5jbHVkZSA8Z2lvL2dpby5oPgogI2luY2x1ZGUgPGdsaWIuaD4K
KyNpbmNsdWRlIDxnbGliL2dpMThuLWxpYi5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaWYgUExB
VEZPUk0oVU5JWCkKICNpbmNsdWRlIDxzeXMvdXRzbmFtZS5oPgpAQCAtODg3LDU0ICs4ODksNTQg
QEAKICAgICBzdGFydERvd25sb2FkKHJlcXVlc3QpOwogfQogCi1SZXNvdXJjZUVycm9yIEZyYW1l
TG9hZGVyQ2xpZW50OjpjYW5jZWxsZWRFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKQorUmVz
b3VyY2VFcnJvciBGcmFtZUxvYWRlckNsaWVudDo6Y2FuY2VsbGVkRXJyb3IoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0KQogewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgUmVzb3Vy
Y2VFcnJvciBlcnJvcigiIiwgMCwgIiIsICIiKTsKLSAgICBlcnJvci5zZXRJc0NhbmNlbGxhdGlv
bih0cnVlKTsKLSAgICByZXR1cm4gZXJyb3I7CisgICAgcmV0dXJuIFJlc291cmNlRXJyb3IoZ19x
dWFya190b19zdHJpbmcoV0VCS0lUX05FVFdPUktfRVJST1IpLCBXRUJLSVRfTkVUV09SS19FUlJP
Ul9DQU5DRUxMRUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC51cmwoKS5zdHJp
bmcoKSwgXygiTG9hZCByZXF1ZXN0IGNhbmNlbGxlZCIpKTsKIH0KIAotUmVzb3VyY2VFcnJvciBG
cmFtZUxvYWRlckNsaWVudDo6YmxvY2tlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpCitS
ZXNvdXJjZUVycm9yIEZyYW1lTG9hZGVyQ2xpZW50OjpibG9ja2VkRXJyb3IoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0KQogewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJu
IFJlc291cmNlRXJyb3IoIiIsIDAsICIiLCAiIik7CisgICAgcmV0dXJuIFJlc291cmNlRXJyb3Io
Z19xdWFya190b19zdHJpbmcoV0VCS0lUX1BPTElDWV9FUlJPUiksIFdFQktJVF9QT0xJQ1lfRVJS
T1JfQ0FOTk9UX1VTRV9SRVNUUklDVEVEX1BPUlQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
cmVxdWVzdC51cmwoKS5zdHJpbmcoKSwgXygiTm90IGFsbG93ZWQgdG8gdXNlIHJlc3RyaWN0ZWQg
bmV0d29yayBwb3J0IikpOwogfQogCi1SZXNvdXJjZUVycm9yIEZyYW1lTG9hZGVyQ2xpZW50Ojpj
YW5ub3RTaG93VVJMRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JikKK1Jlc291cmNlRXJyb3Ig
RnJhbWVMb2FkZXJDbGllbnQ6OmNhbm5vdFNob3dVUkxFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gUmVzb3Vy
Y2VFcnJvcigiIiwgMCwgIiIsICIiKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihnX3F1YXJr
X3RvX3N0cmluZyhXRUJLSVRfUE9MSUNZX0VSUk9SKSwgV0VCS0lUX1BPTElDWV9FUlJPUl9DQU5O
T1RfU0hPV19VUkwsCisgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC51cmwoKS5zdHJp
bmcoKSwgXygiVVJMIGNhbm5vdCBiZSBzaG93biIpKTsKIH0KIAotUmVzb3VyY2VFcnJvciBGcmFt
ZUxvYWRlckNsaWVudDo6aW50ZXJydXB0Rm9yUG9saWN5Q2hhbmdlRXJyb3IoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JikKK1Jlc291cmNlRXJyb3IgRnJhbWVMb2FkZXJDbGllbnQ6OmludGVycnVwdEZv
clBvbGljeUNoYW5nZUVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAg
ICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBSZXNvdXJjZUVycm9yKCIiLCAwLCAiIiwg
IiIpOworICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGdfcXVhcmtfdG9fc3RyaW5nKFdFQktJVF9Q
T0xJQ1lfRVJST1IpLCBXRUJLSVRfUE9MSUNZX0VSUk9SX0ZSQU1FX0xPQURfSU5URVJSVVBURURf
QllfUE9MSUNZX0NIQU5HRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LnVybCgp
LnN0cmluZygpLCBfKCJGcmFtZSBsb2FkIHdhcyBpbnRlcnJ1cHRlZCIpKTsKIH0KIAotUmVzb3Vy
Y2VFcnJvciBGcmFtZUxvYWRlckNsaWVudDo6Y2Fubm90U2hvd01JTUVUeXBlRXJyb3IoY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYpCitSZXNvdXJjZUVycm9yIEZyYW1lTG9hZGVyQ2xpZW50OjpjYW5u
b3RTaG93TUlNRVR5cGVFcnJvcihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsK
LSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBSZXNvdXJjZUVycm9yKCIiLCAwLCAi
IiwgIiIpOworICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGdfcXVhcmtfdG9fc3RyaW5nKFdFQktJ
VF9QT0xJQ1lfRVJST1IpLCBXRUJLSVRfUE9MSUNZX0VSUk9SX0NBTk5PVF9TSE9XX01JTUVfVFlQ
RSwKKyAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS51cmwoKS5zdHJpbmcoKSwgXygi
Q29udGVudCB3aXRoIHRoZSBzcGVjaWZpZWQgTUlNRSB0eXBlIGNhbm5vdCBiZSBzaG93biIpKTsK
IH0KIAotUmVzb3VyY2VFcnJvciBGcmFtZUxvYWRlckNsaWVudDo6ZmlsZURvZXNOb3RFeGlzdEVy
cm9yKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKQorUmVzb3VyY2VFcnJvciBGcmFtZUxvYWRlckNs
aWVudDo6ZmlsZURvZXNOb3RFeGlzdEVycm9yKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIFJlc291cmNlRXJyb3Io
IiIsIDAsICIiLCAiIik7CisgICAgcmV0dXJuIFJlc291cmNlRXJyb3IoZ19xdWFya190b19zdHJp
bmcoV0VCS0lUX05FVFdPUktfRVJST1IpLCBXRUJLSVRfTkVUV09SS19FUlJPUl9GSUxFX0RPRVNf
Tk9UX0VYSVNULAorICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLnVybCgpLnN0cmlu
ZygpLCBfKCJGaWxlIGRvZXMgbm90IGV4aXN0IikpOwogfQogCi1SZXNvdXJjZUVycm9yIEZyYW1l
TG9hZGVyQ2xpZW50OjpwbHVnaW5XaWxsSGFuZGxlTG9hZEVycm9yKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmKQorUmVzb3VyY2VFcnJvciBGcmFtZUxvYWRlckNsaWVudDo6cGx1Z2luV2lsbEhhbmRs
ZUxvYWRFcnJvcihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKLSAgICBub3RJ
bXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBSZXNvdXJjZUVycm9yKCIiLCAwLCAiIiwgIiIpOwor
ICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGdfcXVhcmtfdG9fc3RyaW5nKFdFQktJVF9QTFVHSU5f
RVJST1IpLCBXRUJLSVRfUExVR0lOX0VSUk9SX1dJTExfSEFORExFX0xPQUQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgcmVzcG9uc2UudXJsKCkuc3RyaW5nKCksIF8oIlBsdWdpbiB3aWxsIGhh
bmRsZSBsb2FkIikpOwogfQogCi1ib29sIEZyYW1lTG9hZGVyQ2xpZW50OjpzaG91bGRGYWxsQmFj
ayhjb25zdCBSZXNvdXJjZUVycm9yJikKK2Jvb2wgRnJhbWVMb2FkZXJDbGllbnQ6OnNob3VsZEZh
bGxCYWNrKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogewotICAgIG5vdEltcGxlbWVudGVk
KCk7Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIC8vIEZJWE1FOiBOZWVkcyB0byBjaGVjayBkb21h
aW4uCisgICAgLy8gRklYTUU6IE1hYyBjaGVja3MgZm9yIFdlYktpdEVycm9yUGx1Z0luV2lsbEhh
bmRsZUxvYWQgaGVyZSB0byBhdm9pZAorICAgIC8vIGxvYWRpbmcgcGx1Z2luIGNvbnRlbnQgdHdp
Y2UuIERvIHdlIG5lZWQgaXQ/CisgICAgcmV0dXJuIGVycm9yLmVycm9yQ29kZSgpICE9IFdFQktJ
VF9ORVRXT1JLX0VSUk9SX0NBTkNFTExFRDsKIH0KIAogYm9vbCBGcmFtZUxvYWRlckNsaWVudDo6
Y2FuQ2FjaGVQYWdlKCkgY29uc3QKSW5kZXg6IFdlYktpdC9HTlVtYWtlZmlsZS5hbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQub3JpZy9HTlVtYWtlZmlsZS5hbQkyMDA5LTA0LTI1IDA4OjQwOjExLjAw
MDAwMDAwMCArMTAwMAorKysgV2ViS2l0L0dOVW1ha2VmaWxlLmFtCTIwMDktMDQtMjUgMDg6NDA6
MzguMDAwMDAwMDAwICsxMDAwCkBAIC0zMTMsNiArMzEzLDcgQEAKIAlXZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXQuaCBcCiAJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0ZGVmaW5lcy5oIFwKIAlXZWJL
aXQvZ3RrL3dlYmtpdC93ZWJraXRkb3dubG9hZC5oIFwKKwlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJr
aXRlcnJvci5oIFwKIAlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRuZXR3b3JrcmVxdWVzdC5oIFwK
IAlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRzb3VwYXV0aGRpYWxvZy5oIFwKIAlXZWJLaXQvZ3Rr
L3dlYmtpdC93ZWJraXR2ZXJzaW9uLmggXApAQCAtMzQ3LDYgKzM0OCw4IEBACiAJV2ViS2l0L2d0
ay9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRHdGsuaCBcCiAJV2ViS2l0L2d0ay9XZWJD
b3JlU3VwcG9ydC9QYXN0ZWJvYXJkSGVscGVyR3RrLmNwcCBcCiAJV2ViS2l0L2d0ay9XZWJDb3Jl
U3VwcG9ydC9QYXN0ZWJvYXJkSGVscGVyR3RrLmggXAorCVdlYktpdC9ndGsvd2Via2l0L3dlYmtp
dGRvd25sb2FkLmNwcCBcCisJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0ZXJyb3IuY3BwIFwKIAlX
ZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRuZXR3b3JrcmVxdWVzdC5jcHAgXAogCVdlYktpdC9ndGsv
d2Via2l0L3dlYmtpdHByaXZhdGUuY3BwIFwKIAlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2
YXRlLmggXApAQCAtMzU5LDcgKzM2Miw2IEBACiAJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vi
bmF2aWdhdGlvbmFjdGlvbi5jcHAgXAogCVdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnBvbGlj
eWRlY2lzaW9uLmNwcCBcCiAJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vic2V0dGluZ3MuY3Bw
IFwKLQlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRkb3dubG9hZC5jcHAgXAogCVdlYktpdC9ndGsv
d2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwIFwKIAlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ3
aW5kb3dmZWF0dXJlcy5jcHAKIApJbmRleDogV2ViS2l0L1dlYktpdC9ndGsvd2Via2l0L3dlYmtp
dGVycm9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4w
MDAwMDAwMDAgKzAwMDAKKysrIFdlYktpdC9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRlcnJvci5j
cHAJMjAwOS0wNC0yNSAwODo0MDozOC4wMDAwMDAwMDAgKzEwMDAKQEAgLTAsMCArMSw0MSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBMdWNhIEJydW5vIDxsZXRoYWxtYW44OEBnbWFpbC5j
b20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0
ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIndlYmtpdGVycm9yLmgiCisKK2V4
dGVybiAiQyIgeworCitHUXVhcmsgd2Via2l0X25ldHdvcmtfZXJyb3JfcXVhcmsodm9pZCkKK3sK
KyAgICByZXR1cm4gZ19xdWFya19mcm9tX3N0YXRpY19zdHJpbmcoIndlYmtpdC1uZXR3b3JrLWVy
cm9yLXF1YXJrIik7Cit9CisKK0dRdWFyayB3ZWJraXRfcG9saWN5X2Vycm9yX3F1YXJrKHZvaWQp
Cit7CisgICAgcmV0dXJuIGdfcXVhcmtfZnJvbV9zdGF0aWNfc3RyaW5nKCJ3ZWJraXQtcG9saWN5
LWVycm9yLXF1YXJrIik7Cit9CisKK0dRdWFyayB3ZWJraXRfcGx1Z2luX2Vycm9yX3F1YXJrKHZv
aWQpCit7CisgICAgcmV0dXJuIGdfcXVhcmtfZnJvbV9zdGF0aWNfc3RyaW5nKCJ3ZWJraXQtcGx1
Z2luLWVycm9yLXF1YXJrIik7Cit9CisKK30KSW5kZXg6IFdlYktpdC9XZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXRlcnJvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAw
OjAwLjAwMDAwMDAwMCArMDAwMAorKysgV2ViS2l0L1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdGVy
cm9yLmgJMjAwOS0wNC0yNSAwODo0MDozOC4wMDAwMDAwMDAgKzEwMDAKQEAgLTAsMCArMSw3MSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBMdWNhIEJydW5vIDxsZXRoYWxtYW44OEBnbWFp
bC5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3
cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgor
ICovCisKKyNpZm5kZWYgV0VCS0lUX0VSUk9SX0gKKyNkZWZpbmUgV0VCS0lUX0VSUk9SX0gKKwor
I2luY2x1ZGUgPGdsaWIuaD4KKworI2luY2x1ZGUgPHdlYmtpdC93ZWJraXRkZWZpbmVzLmg+CisK
K0dfQkVHSU5fREVDTFMKKworI2RlZmluZSBXRUJLSVRfTkVUV09SS19FUlJPUiAgICAgICAgd2Vi
a2l0X25ldHdvcmtfZXJyb3JfcXVhcmsgKCkKKyNkZWZpbmUgV0VCS0lUX1BPTElDWV9FUlJPUiAg
ICAgICAgIHdlYmtpdF9wb2xpY3lfZXJyb3JfcXVhcmsgICgpCisjZGVmaW5lIFdFQktJVF9QTFVH
SU5fRVJST1IgICAgICAgICB3ZWJraXRfcGx1Z2luX2Vycm9yX3F1YXJrICAoKQorCit0eXBlZGVm
IGVudW0geworICAgIFdFQktJVF9ORVRXT1JLX0VSUk9SX0ZBSUxFRCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gMzk5LAorICAgIFdFQktJVF9ORVRXT1JLX0VSUk9SX1RSQU5TUE9S
VCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMzAwLAorICAgIFdFQktJVF9ORVRXT1JL
X0VSUk9SX1VOS05PV05fUFJPVE9DT0wgICAgICAgICAgICAgICAgICAgICAgID0gMzAxLAorICAg
IFdFQktJVF9ORVRXT1JLX0VSUk9SX0NBTkNFTExFRCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gMzAyLAorICAgIFdFQktJVF9ORVRXT1JLX0VSUk9SX0ZJTEVfRE9FU19OT1RfRVhJU1Qg
ICAgICAgICAgICAgICAgICAgID0gMzAzLAorfSBXZWJLaXROZXR3b3JrRXJyb3I7CisKKy8qIFN5
bmMnZCB3aXRoIE1hYydzIFdlYktpdCBFcnJvcnMgKi8KK3R5cGVkZWYgZW51bSB7CisgICAgV0VC
S0lUX1BPTElDWV9FUlJPUl9GQUlMRUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSAxOTksCisgICAgV0VCS0lUX1BPTElDWV9FUlJPUl9DQU5OT1RfU0hPV19NSU1FX1RZUEUgICAg
ICAgICAgICAgICAgICAgPSAxMDAsCisgICAgV0VCS0lUX1BPTElDWV9FUlJPUl9DQU5OT1RfU0hP
V19VUkwgICAgICAgICAgICAgICAgICAgICAgICAgPSAxMDEsCisgICAgV0VCS0lUX1BPTElDWV9F
UlJPUl9GUkFNRV9MT0FEX0lOVEVSUlVQVEVEX0JZX1BPTElDWV9DSEFOR0UgPSAxMDIsCisgICAg
V0VCS0lUX1BPTElDWV9FUlJPUl9DQU5OT1RfVVNFX1JFU1RSSUNURURfUE9SVCAgICAgICAgICAg
ICAgPSAxMDMsCit9IFdlYktpdFBvbGljeUVycm9yOworCit0eXBlZGVmIGVudW0geworICAgIFdF
QktJVF9QTFVHSU5fRVJST1JfRkFJTEVEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gMjk5LAorICAgIFdFQktJVF9QTFVHSU5fRVJST1JfQ0FOTk9UX0ZJTkRfUExVR0lOICAgICAg
ICAgICAgICAgICAgICAgID0gMjAwLAorICAgIFdFQktJVF9QTFVHSU5fRVJST1JfQ0FOTk9UX0xP
QURfUExVR0lOICAgICAgICAgICAgICAgICAgICAgID0gMjAxLAorICAgIFdFQktJVF9QTFVHSU5f
RVJST1JfSkFWQV9VTkFWQUlMQUJMRSAgICAgICAgICAgICAgICAgICAgICAgID0gMjAyLAorICAg
IFdFQktJVF9QTFVHSU5fRVJST1JfQ09OTkVDVElPTl9DQU5DRUxMRUQgICAgICAgICAgICAgICAg
ICAgID0gMjAzLAorICAgIFdFQktJVF9QTFVHSU5fRVJST1JfV0lMTF9IQU5ETEVfTE9BRCAgICAg
ICAgICAgICAgICAgICAgICAgID0gMjA0LAorfSBXZWJLaXRQbHVnaW5FcnJvcjsKKworCitXRUJL
SVRfQVBJIEdRdWFyaword2Via2l0X25ldHdvcmtfZXJyb3JfcXVhcmsgKHZvaWQpOworCitXRUJL
SVRfQVBJIEdRdWFyaword2Via2l0X3BvbGljeV9lcnJvcl9xdWFyayAgKHZvaWQpOworCitXRUJL
SVRfQVBJIEdRdWFyaword2Via2l0X3BsdWdpbl9lcnJvcl9xdWFyayAgKHZvaWQpOworCitHX0VO
RF9ERUNMUworCisjZW5kaWYKSW5kZXg6IFdlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0Lm9yaWcvQ2hhbmdlTG9nCTIwMDktMDQtMjUgMDg6NDA6MTEuMDAwMDAwMDAwICsxMDAw
CisrKyBXZWJLaXQvQ2hhbmdlTG9nCTIwMDktMDQtMjUgMDg6NDA6MzguMDAwMDAwMDAwICsxMDAw
CkBAIC0yLDYgKzIsMTcgQEAKIAogICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
IAorICAgICAgICAgW0dUS10gRXJyb3IgcmVwb3J0aW5nCisgICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzNDQKKworICAgICAgICBBZGQgd2Via2l0ZXJy
b3IgdG8gdGhlIGJ1aWxkLgorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisKKzIwMDktMDQt
MjQgIEphbiBNaWNoYWVsIEFsb256byAgPGptYWxvbnpvQHdlYmtpdC5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKICAgICAgICAgW0dUS10gRXJyb3IgcmVwb3J0
aW5nCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODM0
NAogCkluZGV4OiBXZWJLaXQvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
Lm9yaWcvV2ViQ29yZS9DaGFuZ2VMb2cJMjAwOS0wNC0yNSAwNzo1MToxMy4wMDAwMDAwMDAgKzEw
MDAKKysrIFdlYktpdC9XZWJDb3JlL0NoYW5nZUxvZwkyMDA5LTA0LTI1IDA4OjQwOjM4LjAwMDAw
MDAwMCArMTAwMApAQCAtMSwzICsxLDIyIEBACisyMDA5LTA0LTI0ICBKYW4gTWljaGFlbCBBbG9u
em8gIDxqbWFsb256b0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFtHVEtdIEVycm9yIHJlcG9ydGluZworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzNDQKKworICAgICAgICBGaXggdGhl
IFNPVVAgcmVzb3VyY2UgaGFuZGxlIHRvIHJlcG9ydCBTT1VQX0hUVFBfRVJST1IgZm9yIFNvdXAK
KyAgICAgICAgZXJyb3JzIGFuZCBHX0lPX0VSUk9SIGZvciBnaW8gZXJyb3JzLgorCisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpmaW5pc2hlZENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
SGFuZGxlOjpzdGFydEh0dHApOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnN0
YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OnJlYWRDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3Jl
OjpvcGVuQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6cXVlcnlJbmZvQ2FsbGJhY2spOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnN0YXJ0R2lvKToKKwogMjAwOS0wNC0y
MyAgRnJhbmNpc2NvIFRvbG1hc2t5ICA8ZnJhbmNpc2NvQDI4MG5vcnRoLmNvbT4KIAogICAgICAg
ICBCVUcgMjQ2MDQ6IFdlYktpdCBwcm9maWxlciByZXBvcnRzIGluY29ycmVjdCB0b3RhbCB0aW1l
cwpJbmRleDogV2ViS2l0L1dlYktpdC9ndGsvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dC5vcmlnL1dlYktpdC9ndGsvQ2hhbmdlTG9nCTIwMDktMDQtMjUgMDg6NDA6MTEuMDAwMDAwMDAw
ICsxMDAwCisrKyBXZWJLaXQvV2ViS2l0L2d0ay9DaGFuZ2VMb2cJMjAwOS0wNC0yNSAwODo0MDoz
OC4wMDAwMDAwMDAgKzEwMDAKQEAgLTUsNiArNSwyOCBAQAogICAgICAgICBbR1RLXSBFcnJvciBy
ZXBvcnRpbmcKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE4MzQ0CiAKKyAgICAgICAgVXBkYXRlIEZyYW1lTG9hZCBlcnJvcnMgdG8gdXNlIFdlYktpdEVy
cm9ycy4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmFpbExv
YWQpOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudDo6Y2FuY2VsbGVkRXJyb3Ip
OgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudDo6YmxvY2tlZEVycm9yKToKKyAg
ICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnQ6OmNhbm5vdFNob3dVUkxFcnJvcik6Cisg
ICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50OjppbnRlcnJ1cHRGb3JQb2xpY3lDaGFu
Z2VFcnJvcik6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50OjpjYW5ub3RTaG93
TUlNRVR5cGVFcnJvcik6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50OjpmaWxl
RG9lc05vdEV4aXN0RXJyb3IpOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudDo6
cGx1Z2luV2lsbEhhbmRsZUxvYWRFcnJvcik6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVy
Q2xpZW50OjpzaG91bGRGYWxsQmFjayk6CisJKiB3ZWJraXQvd2Via2l0ZXJyb3IuaDogQWRkZWQu
CisJKiB3ZWJraXQvd2Via2l0ZXJyb3IuY3BwOiBBZGRlZC4KKworMjAwOS0wNC0yNCAgSmFuIE1p
Y2hhZWwgQWxvbnpvICA8am1hbG9uem9Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbR1RLXSBFcnJvciByZXBvcnRpbmcKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MzQ0CisKICAgICAg
ICAgRGlzcGxheSBhIGRlZmF1bHQgZXJyb3IgcGFnZSBmb3IgbG9hZCBlcnJvcnMuCiAKICAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHA6Cg==
</data>
<flag name="review"
          id="14899"
          type_id="1"
          status="+"
          setter="xan.lopez"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>29783</attachid>
            <date>2009-04-25 00:57:32 -0700</date>
            <delta_ts>2009-04-25 01:21:10 -0700</delta_ts>
            <desc>[1/3] Add API to load content for unreachable URL - v4</desc>
            <filename>error-frameapi</filename>
            <type>text/plain</type>
            <size>9703</size>
            <attacher name="Jan Alonzo">jmalonzo</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9XZWJLaXQvZ3RrL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQu
b3JpZy9XZWJLaXQvZ3RrL0NoYW5nZUxvZwkyMDA5LTA0LTI1IDE3OjQ0OjIyLjAwMDAwMDAwMCAr
MTAwMAorKysgV2ViS2l0L1dlYktpdC9ndGsvQ2hhbmdlTG9nCTIwMDktMDQtMjUgMTc6NDY6MTgu
MDAwMDAwMDAwICsxMDAwCkBAIC0xLDUgKzEsMjQgQEAKIDIwMDktMDQtMjQgIEphbiBNaWNoYWVs
IEFsb256byAgPGptYWxvbnpvQHdlYmtpdC5vcmc+CiAKKyAgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICBbR1RLXSBFcnJvciByZXBvcnRpbmcKKyAgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODM0NAorCisgICAgICAg
ICBBZGQgYSBXZWJLaXRXZWJGcmFtZSBBUEkgdG8gbG9hZCBhbHRlcm5hdGUgY29udGVudCBmb3Ig
dW5yZWFjaGFibGUgVVJMcy4KKyAgICAgICAgIEFsc28gYWRkIGEgbmV3IHNpZ25hbCAibG9hZC1l
cnJvciIgZm9yIGhhbmRsaW5nIGxvYWQgZXJyb3JzLgorCisgICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcDoKKyAgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9h
ZGVyQ2xpZW50Ojpwb3N0UHJvZ3Jlc3NGaW5pc2hlZE5vdGlmaWNhdGlvbik6CisgICAgICAgICAo
V2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGYWlsTG9hZGluZyk6CisgICAg
ICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9u
YWxMb2FkKToKKyAgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERp
ZEZhaWxMb2FkKToKKyAgICAgICAgICogd2Via2l0L3dlYmtpdHdlYmZyYW1lLmNwcDoKKyAgICAg
ICAgICogd2Via2l0L3dlYmtpdHdlYmZyYW1lLmg6CisgICAgICAgICAqIHdlYmtpdC93ZWJraXR3
ZWJ2aWV3LmNwcDoKKworMjAwOS0wNC0yNCAgSmFuIE1pY2hhZWwgQWxvbnpvICA8am1hbG9uem9A
d2Via2l0Lm9yZz4KKwogICAgICAgICBSdWJiZXItc3RhbXBlZCBieSBHdXN0YXZvIE5vcm9uaGEu
CiAKICAgICAgICAgRml4IGJyYWNlcyB0byBjb21wbHkgd2l0aCBzdHlsZSBndWlkZWxpbmVzLgpJ
bmRleDogV2ViS2l0L1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRH
dGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC5vcmlnL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCTIwMDktMDQtMjUgMTc6NDQ6MjIuMDAwMDAwMDAw
ICsxMDAwCisrKyBXZWJLaXQvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudEd0ay5jcHAJMjAwOS0wNC0yNSAxNzo0NzoxMC4wMDAwMDAwMDAgKzEwMDAKQEAgLTU3LDYg
KzU3LDcgQEAKICNpbmNsdWRlICJ3ZWJraXRwcml2YXRlLmgiCiAKICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9BUElDYXN0Lmg+CisjaW5jbHVkZSA8Z2xpYi5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+
CiAjaWYgUExBVEZPUk0oVU5JWCkKICNpbmNsdWRlIDxzeXMvdXRzbmFtZS5oPgpAQCAtODExLDgg
KzgxMiw5IEBACiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNs
aWVudDo6ZGlzcGF0Y2hEaWRGYWlsTG9hZGluZyhEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VFcnJvciYpCit2b2lkIEZyYW1lTG9hZGVyQ2xp
ZW50OjpkaXNwYXRjaERpZEZhaWxMb2FkaW5nKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKKyAgICAvLyBGSVhN
RTogd2hlbiBkb2VzIHRoaXMgb2NjdXIgYW5kIHdoYXQgc2hvdWxkIGhhcHBlbj8KICAgICBub3RJ
bXBsZW1lbnRlZCgpOwogfQogCkBAIC04MjIsMTMgKzgyNCwzNSBAQAogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9u
YWxMb2FkKGNvbnN0IFJlc291cmNlRXJyb3ImKQordm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlz
cGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQog
eworICAgIGRpc3BhdGNoRGlkRmFpbExvYWQoZXJyb3IpOworCisgICAgLy8gRklYTUU6IGxvYWQt
ZG9uZSBpcyBkZXByZWNhdGVkLiBQbGVhc2UgcmVtb3ZlIHdoZW4gc2lnbmFsJ3MgYmVlbiByZW1v
dmVkLgogICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZShtX2ZyYW1lLCAibG9hZC1kb25lIiwgZmFs
c2UpOwogfQogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZhaWxMb2FkKGNv
bnN0IFJlc291cmNlRXJyb3ImKQordm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRG
YWlsTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKKyAgICBXZWJLaXRXZWJWaWV3
KiB3ZWJWaWV3ID0gZ2V0Vmlld0Zyb21GcmFtZShtX2ZyYW1lKTsKKyAgICBHRXJyb3IqIHdlYkVy
cm9yID0gZ19lcnJvcl9uZXdfbGl0ZXJhbChnX3F1YXJrX2Zyb21fc3RyaW5nKGVycm9yLmRvbWFp
bigpLnV0ZjgoKS5kYXRhKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGVycm9yLmVycm9yQ29kZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKCkudXRmOCgpLmRhdGEoKSk7
CisgICAgZ2Jvb2xlYW4gaXNIYW5kbGVkID0gZmFsc2U7CisgICAgZ19zaWduYWxfZW1pdF9ieV9u
YW1lKHdlYlZpZXcsICJsb2FkLWVycm9yIiwgbV9mcmFtZSwgZXJyb3IuZmFpbGluZ1VSTCgpLnV0
ZjgoKS5kYXRhKCksIHdlYkVycm9yLCAmaXNIYW5kbGVkKTsKKworICAgIGlmIChpc0hhbmRsZWQp
IHsKKyAgICAgICAgZ19lcnJvcl9mcmVlKHdlYkVycm9yKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIFN0cmluZyBjb250ZW50ID0gU3RyaW5nOjpmb3JtYXQoIjxodG1sPjxoZWFkPjx0
aXRsZT4lZDwvdGl0bGU+PC9oZWFkPjxib2R5PiVzPC9ib2R5PjwvaHRtbD4iLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IuZXJyb3JDb2RlKCksIHdlYkVycm9yLT5t
ZXNzYWdlKTsKKyAgICB3ZWJraXRfd2ViX2ZyYW1lX2xvYWRfYWx0ZXJuYXRlX3N0cmluZyhtX2Zy
YW1lLCBjb250ZW50LnV0ZjgoKS5kYXRhKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgTlVMTCwgZXJyb3IuZmFpbGluZ1VSTCgpLnV0ZjgoKS5kYXRhKCkpOwor
ICAgIGdfZXJyb3JfZnJlZSh3ZWJFcnJvcik7CisKKyAgICAvLyBGSVhNRTogbG9hZC1kb25lIGlz
IGRlcHJlY2F0ZWQuIFBsZWFzZSByZW1vdmUgd2hlbiBzaWduYWwncyBiZWVuIHJlbW92ZWQuCiAg
ICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKG1fZnJhbWUsICJsb2FkLWRvbmUiLCBmYWxzZSk7CiB9
CiAKSW5kZXg6IFdlYktpdC9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJmcmFtZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0Lm9yaWcvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViZnJhbWUu
Y3BwCTIwMDktMDQtMjUgMTc6NDQ6MjIuMDAwMDAwMDAwICsxMDAwCisrKyBXZWJLaXQvV2ViS2l0
L2d0ay93ZWJraXQvd2Via2l0d2ViZnJhbWUuY3BwCTIwMDktMDQtMjUgMTc6NDk6MzYuMDAwMDAw
MDAwICsxMDAwCkBAIC0xNjcsNiArMTY3LDE1IEBACiAgICAgICAgICAgICBnX2NjbG9zdXJlX21h
cnNoYWxfVk9JRF9fVk9JRCwKICAgICAgICAgICAgIEdfVFlQRV9OT05FLCAwKTsKIAorICAgIC8q
KgorICAgICAqIFdlYktpdFdlYkZyYW1lOjpsb2FkLWRvbmUKKyAgICAgKiBAd2ViX2ZyYW1lOiB0
aGUgb2JqZWN0IG9uIHdoaWNoIHRoZSBzaWduYWwgaXMgZW1pdHRlZAorICAgICAqCisgICAgICog
RW1pdHRlZCB3aGVuIGZyYW1lIGxvYWRpbmcgaXMgZG9uZS4KKyAgICAgKgorICAgICAqIERlcHJl
Y2F0ZWQ6IFVzZSBXZWJLaXRXZWJWaWV3Ojpsb2FkLWZpbmlzaGVkIGluc3RlYWQsIGFuZC9vcgor
ICAgICAqIFdlYktpdFdlYlZpZXc6OmxvYWQtZXJyb3IgdG8gYmUgbm90aWZpZWQgb2YgbG9hZCBl
cnJvcnMKKyAgICAgKi8KICAgICB3ZWJraXRfd2ViX2ZyYW1lX3NpZ25hbHNbTE9BRF9ET05FXSA9
IGdfc2lnbmFsX25ldygibG9hZC1kb25lIiwKICAgICAgICAgICAgIEdfVFlQRV9GUk9NX0NMQVNT
KGZyYW1lQ2xhc3MpLAogICAgICAgICAgICAgKEdTaWduYWxGbGFncykoR19TSUdOQUxfUlVOX0xB
U1QgfCBHX1NJR05BTF9BQ1RJT04pLApAQCAtMzk4LDYgKzQwNywyNSBAQAogICAgIGNvcmVGcmFt
ZS0+bG9hZGVyKCktPmxvYWQoUmVzb3VyY2VSZXF1ZXN0KEtVUkwoS1VSTCgpLCBTdHJpbmc6OmZy
b21VVEY4KHVyaSkpKSwgZmFsc2UpOwogfQogCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX2ZyYW1l
X2xvYWRfZGF0YShXZWJLaXRXZWJGcmFtZSogZnJhbWUsIGNvbnN0IGdjaGFyKiBjb250ZW50LCBj
b25zdCBnY2hhciogbWltZVR5cGUsIGNvbnN0IGdjaGFyKiBlbmNvZGluZywgY29uc3QgZ2NoYXIq
IGJhc2VVUkwsIGNvbnN0IGdjaGFyKiB1bnJlYWNoYWJsZVVSTCkKK3sKKyAgICBGcmFtZSogY29y
ZUZyYW1lID0gY29yZShmcmFtZSk7CisgICAgQVNTRVJUKGNvcmVGcmFtZSk7CisKKyAgICBLVVJM
IGJhc2VLVVJMID0gYmFzZVVSTCA/IEtVUkwoS1VSTCgpLCBTdHJpbmc6OmZyb21VVEY4KGJhc2VV
UkwpKSA6IGJsYW5rVVJMKCk7CisKKyAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChiYXNlS1VS
TCk7CisKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShjb250ZW50LCBnX3V0Zjhfc3RybGVuKGNvbnRlbnQsIC0xKSk7CisgICAgU3Vi
c3RpdHV0ZURhdGEgc3Vic3RpdHV0ZURhdGEoc2hhcmVkQnVmZmVyLnJlbGVhc2UoKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW1lVHlwZSA/IFN0cmluZzo6ZnJvbVVURjgo
bWltZVR5cGUpIDogU3RyaW5nOjpmcm9tVVRGOCgidGV4dC9odG1sIiksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZW5jb2RpbmcgPyBTdHJpbmc6OmZyb21VVEY4KGVuY29kaW5n
KSA6IFN0cmluZzo6ZnJvbVVURjgoIlVURi04IiksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYmFzZUtVUkwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgS1VS
TChLVVJMKCksIFN0cmluZzo6ZnJvbVVURjgodW5yZWFjaGFibGVVUkwpKSk7CisKKyAgICBjb3Jl
RnJhbWUtPmxvYWRlcigpLT5sb2FkKHJlcXVlc3QsIHN1YnN0aXR1dGVEYXRhLCBmYWxzZSk7Cit9
CisKIC8qKgogICogd2Via2l0X3dlYl9mcmFtZV9sb2FkX3N0cmluZzoKICAqIEBmcmFtZTogYSAj
V2ViS2l0V2ViRnJhbWUKQEAgLTQyMCwxNSArNDQ4LDI4IEBACiAgICAgZ19yZXR1cm5faWZfZmFp
bChXRUJLSVRfSVNfV0VCX0ZSQU1FKGZyYW1lKSk7CiAgICAgZ19yZXR1cm5faWZfZmFpbChjb250
ZW50KTsKIAotICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKGZyYW1lKTsKLSAgICBpZiAoIWNv
cmVGcmFtZSkKLSAgICAgICAgcmV0dXJuOworICAgIHdlYmtpdF93ZWJfZnJhbWVfbG9hZF9kYXRh
KGZyYW1lLCBjb250ZW50LCBjb250ZW50TWltZVR5cGUsIGNvbnRlbnRFbmNvZGluZywgYmFzZVVy
aSwgTlVMTCk7Cit9CiAKLSAgICBLVVJMIHVybChLVVJMKCksIGJhc2VVcmkgPyBTdHJpbmc6OmZy
b21VVEY4KGJhc2VVcmkpIDogIiIpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNvbnRlbnQsIHN0cmxlbihjb250ZW50KSk7Ci0g
ICAgU3Vic3RpdHV0ZURhdGEgc3Vic3RpdHV0ZURhdGEoc2hhcmVkQnVmZmVyLnJlbGVhc2UoKSwg
Y29udGVudE1pbWVUeXBlID8gU3RyaW5nKGNvbnRlbnRNaW1lVHlwZSkgOiAidGV4dC9odG1sIiwg
Y29udGVudEVuY29kaW5nID8gU3RyaW5nKGNvbnRlbnRFbmNvZGluZykgOiAiVVRGLTgiLCBibGFu
a1VSTCgpLCB1cmwpOworLyoqCisgKiB3ZWJraXRfd2ViX2ZyYW1lX2xvYWRfYWx0ZXJuYXRlX3N0
cmluZzoKKyAqIEBmcmFtZTogYSAjV2ViS2l0V2ViRnJhbWUKKyAqIEBjb250ZW50OiB0aGUgYWx0
ZXJuYXRlIGNvbnRlbnQgdG8gZGlzcGxheSBhcyB0aGUgbWFpbiBwYWdlIG9mIHRoZSBAZnJhbWUK
KyAqIEBiYXNlX3VybDogdGhlIGJhc2UgVVJJIGZvciByZWxhdGl2ZSBsb2NhdGlvbnMKKyAqIEB1
bnJlYWNoYWJsZV91cmw6IHRoZSBVUkwgZm9yIHRoZSBhbHRlcm5hdGUgcGFnZSBjb250ZW50Cisg
KgorICogUmVxdWVzdCBsb2FkaW5nIG9mIGFuIGFsdGVybmF0ZSBjb250ZW50IGZvciBhIFVSTCB0
aGF0IGlzIHVucmVhY2hhYmxlLgorICogVXNpbmcgdGhpcyBtZXRob2Qgd2lsbCBwcmVzZXJ2ZSB0
aGUgYmFjay1mb3J3YXJkIGxpc3QuIFRoZSBVUkkgcGFzc2VkIGluCisgKiBAYmFzZV91cmwgaGFz
IHRvIGJlIGFuIGFic29sdXRlIFVSSS4KKyAqCisgKiBTaW5jZTogMS4xLjYKKyAqLwordm9pZCB3
ZWJraXRfd2ViX2ZyYW1lX2xvYWRfYWx0ZXJuYXRlX3N0cmluZyhXZWJLaXRXZWJGcmFtZSogZnJh
bWUsIGNvbnN0IGdjaGFyKiBjb250ZW50LCBjb25zdCBnY2hhciogYmFzZVVSTCwgY29uc3QgZ2No
YXIqIHVucmVhY2hhYmxlVVJMKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dF
Ql9GUkFNRShmcmFtZSkpOworICAgIGdfcmV0dXJuX2lmX2ZhaWwoY29udGVudCk7CiAKLSAgICBj
b3JlRnJhbWUtPmxvYWRlcigpLT5sb2FkKFJlc291cmNlUmVxdWVzdCh1cmwpLCBzdWJzdGl0dXRl
RGF0YSwgZmFsc2UpOworICAgIHdlYmtpdF93ZWJfZnJhbWVfbG9hZF9kYXRhKGZyYW1lLCBjb250
ZW50LCBOVUxMLCBOVUxMLCBiYXNlVVJMLCB1bnJlYWNoYWJsZVVSTCk7CiB9CiAKIC8qKgpJbmRl
eDogV2ViS2l0L1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmZyYW1lLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0Lm9yaWcvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViZnJhbWUuaAkyMDA5LTA0
LTI1IDE3OjQ0OjIyLjAwMDAwMDAwMCArMTAwMAorKysgV2ViS2l0L1dlYktpdC9ndGsvd2Via2l0
L3dlYmtpdHdlYmZyYW1lLmgJMjAwOS0wNC0yNSAxNzo0NDoyOC4wMDAwMDAwMDAgKzEwMDAKQEAg
LTk0LDYgKzk0LDEyIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgZ2NoYXIgICAgICAgICAgKmJhc2VfdXJpKTsKIAogV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRf
d2ViX2ZyYW1lX2xvYWRfYWx0ZXJuYXRlX3N0cmluZyAoV2ViS2l0V2ViRnJhbWUgICAgKmZyYW1l
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAg
ICAgICpjb250ZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGdjaGFyICAgICAgICpiYXNlX3VybCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBnY2hhciAgICAgICAqdW5yZWFjaGFibGVfdXJsKTsKKworV0VCS0lU
X0FQSSB2b2lkCiB3ZWJraXRfd2ViX2ZyYW1lX2xvYWRfcmVxdWVzdCAgICAgICAoV2ViS2l0V2Vi
RnJhbWUgICAgICAgKmZyYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFdlYktpdE5ldHdvcmtSZXF1ZXN0ICpyZXF1ZXN0KTsKIApJbmRleDogV2ViS2l0L1dlYktpdC9n
dGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC5vcmlnL1dl
YktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCTIwMDktMDQtMjUgMTc6NDQ6MjIuMDAw
MDAwMDAwICsxMDAwCisrKyBXZWJLaXQvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5j
cHAJMjAwOS0wNC0yNSAxNzo0NDoyOC4wMDAwMDAwMDAgKzEwMDAKQEAgLTEyMiw2ICsxMjIsNyBA
QAogICAgIExPQURfU1RBUlRFRCwKICAgICBMT0FEX0NPTU1JVFRFRCwKICAgICBMT0FEX1BST0dS
RVNTX0NIQU5HRUQsCisgICAgTE9BRF9FUlJPUiwKICAgICBMT0FEX0ZJTklTSEVELAogICAgIFRJ
VExFX0NIQU5HRUQsCiAgICAgSE9WRVJJTkdfT1ZFUl9MSU5LLApAQCAtMTMwMCw2ICsxMzAxLDMx
IEBACiAgICAgICAgICAgICBHX1RZUEVfTk9ORSwgMSwKICAgICAgICAgICAgIEdfVFlQRV9JTlQp
OwogCisgICAgLyoqCisgICAgICogV2ViS2l0V2ViVmlldzo6bG9hZC1lcnJvcgorICAgICAqIEB3
ZWJfdmlldzogdGhlIG9iamVjdCBvbiB3aGljaCB0aGUgc2lnbmFsIGlzIGVtaXR0ZWQKKyAgICAg
KiBAd2ViX2ZyYW1lOiB0aGUgI1dlYktpdFdlYkZyYW1lCisgICAgICogQHVyaTogdGhlIFVSSSB0
aGF0IHRyaWdnZXJlZCB0aGUgZXJyb3IKKyAgICAgKiBAd2ViX2Vycm9yOiB0aGUgI0dFcnJvciB0
aGF0IHdhcyB0cmlnZ2VyZWQKKyAgICAgKgorICAgICAqIEFuIGVycm9yIG9jY3VycmVkIHdoaWxl
IGxvYWRpbmcuIEJ5IGRlZmF1bHQsIGlmIHRoZSBzaWduYWwgaXMgbm90CisgICAgICogaGFuZGxl
ZCwgdGhlIEB3ZWJfdmlldyB3aWxsIGRpc3BsYXkgYSBzdG9jayBlcnJvciBwYWdlLiBZb3UgbmVl
ZCB0bworICAgICAqIGhhbmRsZSB0aGUgc2lnbmFsIGlmIHlvdSB3YW50IHRvIHByb3ZpZGUgeW91
ciBvd24gZXJyb3IgcGFnZS4KKyAgICAgKgorICAgICAqIFNpbmNlOiAxLjEuNgorICAgICAqLwor
ICAgIHdlYmtpdF93ZWJfdmlld19zaWduYWxzW0xPQURfRVJST1JdID0gZ19zaWduYWxfbmV3KCJs
b2FkLWVycm9yIiwKKyAgICAgICAgICAgIEdfVFlQRV9GUk9NX0NMQVNTKHdlYlZpZXdDbGFzcyks
CisgICAgICAgICAgICAoR1NpZ25hbEZsYWdzKShHX1NJR05BTF9SVU5fTEFTVCB8IEdfU0lHTkFM
X0FDVElPTiksCisgICAgICAgICAgICAwLAorICAgICAgICAgICAgZ19zaWduYWxfYWNjdW11bGF0
b3JfdHJ1ZV9oYW5kbGVkLAorICAgICAgICAgICAgTlVMTCwKKyAgICAgICAgICAgIHdlYmtpdF9t
YXJzaGFsX0JPT0xFQU5fX09CSkVDVF9TVFJJTkdfUE9JTlRFUiwKKyAgICAgICAgICAgIEdfVFlQ
RV9CT09MRUFOLCAzLAorICAgICAgICAgICAgV0VCS0lUX1RZUEVfV0VCX0ZSQU1FLAorICAgICAg
ICAgICAgR19UWVBFX1NUUklORywKKyAgICAgICAgICAgIEdfVFlQRV9QT0lOVEVSKTsKKwogICAg
IHdlYmtpdF93ZWJfdmlld19zaWduYWxzW0xPQURfRklOSVNIRURdID0gZ19zaWduYWxfbmV3KCJs
b2FkLWZpbmlzaGVkIiwKICAgICAgICAgICAgIEdfVFlQRV9GUk9NX0NMQVNTKHdlYlZpZXdDbGFz
cyksCiAgICAgICAgICAgICAoR1NpZ25hbEZsYWdzKShHX1NJR05BTF9SVU5fTEFTVCB8IEdfU0lH
TkFMX0FDVElPTiksCg==
</data>
<flag name="review"
          id="14909"
          type_id="1"
          status="+"
          setter="xan.lopez"
    />
          </attachment>
      

    </bug>

</bugzilla>