<?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>52388</bug_id>
          
          <creation_ts>2011-01-13 12:03:19 -0800</creation_ts>
          <short_desc>REGRESSION: Assertion failure in FrameLoader::continueLoadAfterWillSubmitForm() when navigating back to an unreachable URL</short_desc>
          <delta_ts>2011-01-18 00:40:43 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Page Loading</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>52614</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jessie Berlin">jberlin</reporter>
          <assigned_to name="Jessie Berlin">jberlin</assigned_to>
          <cc>abarth</cc>
    
    <cc>andersca</cc>
    
    <cc>ap</cc>
    
    <cc>beidson</cc>
    
    <cc>dglazkov</cc>
    
    <cc>jberlin</cc>
    
    <cc>mjs</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>333855</commentid>
    <comment_count>0</comment_count>
    <who name="Jessie Berlin">jberlin</who>
    <bug_when>2011-01-13 12:03:19 -0800</bug_when>
    <thetext>First noticed in r75714 on both Windows &amp; Mac

STEPS TO REPRODUCE:

1. Go to an unreachable URL (e.g. aljda;ldfjkal;sdjfa;df.com)
2. Go to a reachable URL (e.g. http://webkit.org)
3. Go back.

Note the following assertion failure:

FrameLoader::continueLoadAfterWillSubmitForm()

with the following stack trace:

WebKit.dll!WebCore::FrameLoader::continueLoadAfterWillSubmitForm()  Line 2450 + 0x3c bytes    C++
WebKit.dll!WebCore::FrameLoader::continueLoadAfterNavigationPolicy(const WebCore::ResourceRequest &amp; __formal={...}, WTF::PassRefPtr&lt;WebCore::FormState&gt; formState={...}, bool shouldContinue=true)  Line 2991    C++
WebKit.dll!WebCore::FrameLoader::callContinueLoadAfterNavigationPolicy(void * argument=0x0becd038, const WebCore::ResourceRequest &amp; request={...}, WTF::PassRefPtr&lt;WebCore::FormState&gt; formState={...}, bool shouldContinue=true)  Line 2865    C++
WebKit.dll!WebCore::PolicyChecker::checkNavigationPolicy(const WebCore::ResourceRequest &amp; request={...}, WebCore::DocumentLoader * loader=0x0bbcff88, WTF::PassRefPtr&lt;WebCore::FormState&gt; formState={...}, void (void *, const WebCore::ResourceRequest &amp;, WTF::PassRefPtr&lt;WebCore::FormState&gt;, bool)* function=0x6697c570, void * argument=0x0becd038)  Line 78 + 0x17 bytes    C++
 WebKit.dll!WebCore::FrameLoader::loadWithDocumentLoader(WebCore::DocumentLoader * loader=0x0bbcff88, WebCore::FrameLoadType type=FrameLoadTypeBack, WTF::PassRefPtr&lt;WebCore::FormState&gt; prpFormState={...})  Line 1485    C++
    WebKit.dll!WebCore::FrameLoader::loadDifferentDocumentItem(WebCore::HistoryItem * item=0x0bb5b098, WebCore::FrameLoadType loadType=FrameLoadTypeBack)  Line 3171    C++
    WebKit.dll!WebCore::FrameLoader::loadItem(WebCore::HistoryItem * item=0x0bb5b098, WebCore::FrameLoadType loadType=FrameLoadTypeBack)  Line 3270    C++
    WebKit.dll!WebCore::HistoryController::recursiveGoToItem(WebCore::HistoryItem * item=0x0bb5b098, WebCore::HistoryItem * fromItem=0x0be9d6e8, WebCore::FrameLoadType type=FrameLoadTypeBack)  Line 650    C++
    WebKit.dll!WebCore::HistoryController::goToItem(WebCore::HistoryItem * targetItem=0x0bb5b098, WebCore::FrameLoadType type=FrameLoadTypeBack)  Line 246    C++
    WebKit.dll!WebCore::Page::goToItem(WebCore::HistoryItem * item=0x0bb5b098, WebCore::FrameLoadType type=FrameLoadTypeBack)  Line 363    C++
    WebKit.dll!WebCore::Page::goBack()  Line 285    C++

&lt;rdar://problem/8853432&gt;

This appears to be happening because in FrameLoader::load, we change the FrameLoadType to be FrameLoadTypeReload so that we try loading the unreachable URL again. This causes us to not reset the navigation start in FrameLoader::continueLoadAfterNavigationPolicy before calling continueLoadAfterWillSubmitForm.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>333867</commentid>
    <comment_count>1</comment_count>
      <attachid>78840</attachid>
    <who name="Jessie Berlin">jberlin</who>
    <bug_when>2011-01-13 12:12:31 -0800</bug_when>
    <thetext>Created attachment 78840
Patch (idea for a fix, needs looking over and needs tests added once the approach is approved)

The attached patch is a speculative fix Anders and I came up with this morning. Adam Barth, could you give your opinion on this approach? (others feel free to weigh in as well).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>333932</commentid>
    <comment_count>2</comment_count>
    <who name="Jessie Berlin">jberlin</who>
    <bug_when>2011-01-13 14:23:16 -0800</bug_when>
    <thetext>A better fix for this bug is to never cache error pages (these can be recognized as pages with substitute data or unreachable URLs). I will send out a new patch with that fix and tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>334057</commentid>
    <comment_count>3</comment_count>
      <attachid>78880</attachid>
    <who name="Jessie Berlin">jberlin</who>
    <bug_when>2011-01-13 17:46:22 -0800</bug_when>
    <thetext>Created attachment 78880
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>334058</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-01-13 17:50:33 -0800</bug_when>
    <thetext>Attachment 78880 did not build on chromium:
Build output: http://queues.webkit.org/results/7558024</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>334075</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-01-13 18:43:15 -0800</bug_when>
    <thetext>Attachment 78880 did not build on chromium:
Build output: http://queues.webkit.org/results/7570025</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>334101</commentid>
    <comment_count>6</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-01-13 21:27:32 -0800</bug_when>
    <thetext>+        Do not cache any error pages (which we can recognize as having substitute data and/or an
+        unreachableURL).

Pages loaded from appcache also have substitute data, although I&apos;m not sure if failingURL() is set. It probably is when displaying fallback resources.

+        * DumpRenderTree/LayoutTestController.cpp:

At this point, we should probably be making WebKit2 WebKitTestRunner tests right away.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>334103</commentid>
    <comment_count>7</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-01-13 21:33:10 -0800</bug_when>
    <thetext>I&apos;m not sure which behavior is best for appcache. It probably makes sense to at least test that we&apos;re not crashing or hitting an assertion - see http/tests/appcache/offline-access.html for an example of testing offline appcache behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>334358</commentid>
    <comment_count>8</comment_count>
    <who name="Jessie Berlin">jberlin</who>
    <bug_when>2011-01-14 09:34:13 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; I&apos;m not sure which behavior is best for appcache. It probably makes sense to at least test that we&apos;re not crashing or hitting an assertion - see http/tests/appcache/offline-access.html for an example of testing offline appcache behavior.

I ran that test on Mac with these changes applied and it worked fine.

I then decided to try out a demo for Application Cache (http://people.opera.com/shwetankd/demos/2/index.htm), and it still works fine.

Talking to Anders, he pointed out that ApplicationCache document loaders don&apos;t have unreachable URLs.

Since we do not want to expose the ability to do loading in the Injected Bundle, making this test work for WebKit2 would require a message up the UI Process to call WKPageLoadAlternateHTMLString. Anders suggested I do that in a separate patch.

I will try to fix the Chromium build errors in my next version of this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>334367</commentid>
    <comment_count>9</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-01-14 09:48:15 -0800</bug_when>
    <thetext>&gt; I ran that test on Mac with these changes applied and it worked fine.

FWIW, I&apos;m pretty sure that we have no tests that involve going back to documents coming from appcache.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>334747</commentid>
    <comment_count>10</comment_count>
      <attachid>79032</attachid>
    <who name="Jessie Berlin">jberlin</who>
    <bug_when>2011-01-14 17:01:01 -0800</bug_when>
    <thetext>Created attachment 79032
Patch

I have tested the AppCache by hand (going back to a page that uses - with and without this patch applied, without internet connectivity - works), and will be working on getting this test working in WTR in another patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>334754</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-01-14 17:06:04 -0800</bug_when>
    <thetext>Attachment 79032 did not build on chromium:
Build output: http://queues.webkit.org/results/7551059</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>334771</commentid>
    <comment_count>12</comment_count>
      <attachid>79038</attachid>
    <who name="Jessie Berlin">jberlin</who>
    <bug_when>2011-01-14 17:25:42 -0800</bug_when>
    <thetext>Created attachment 79038
Patch

Fix Chromium Build errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>334799</commentid>
    <comment_count>13</comment_count>
    <who name="Jessie Berlin">jberlin</who>
    <bug_when>2011-01-14 18:08:38 -0800</bug_when>
    <thetext>After looking just a little more into it, we would need to port the WorkQueue concept over to WebKitTestRunner before making this test work with WebKit2 tests.

That is non-trivial, and I am looking into it now. It should definitely be a separate patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>335385</commentid>
    <comment_count>14</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2011-01-17 10:29:09 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; Created an attachment (id=79032) [details]
&gt; Patch
&gt; 
&gt; I have tested the AppCache by hand (going back to a page that uses - with and without this patch applied, without internet connectivity - works),

Did you test whether pages coming from the AppCache can successfully go into the page cache? Going back to AppCache pages without internet connectivity works even if they are not in the page cache. A way to test whether the AppCache page is going into the page cache is to make a DOM change (e.g. with the Web Inspector) and see if it&apos;s still there after you go back.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>335419</commentid>
    <comment_count>15</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2011-01-17 11:40:22 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; (In reply to comment #10)
&gt; &gt; Created an attachment (id=79032) [details] [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; I have tested the AppCache by hand (going back to a page that uses - with and without this patch applied, without internet connectivity - works),
&gt; 
&gt; Did you test whether pages coming from the AppCache can successfully go into the page cache? Going back to AppCache pages without internet connectivity works even if they are not in the page cache. A way to test whether the AppCache page is going into the page cache is to make a DOM change (e.g. with the Web Inspector) and see if it&apos;s still there after you go back.

Pages from the application cache aren&apos;t put in the page cache, nor do they have an unreachable URL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>335420</commentid>
    <comment_count>16</comment_count>
      <attachid>79038</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2011-01-17 11:41:09 -0800</bug_when>
    <thetext>Comment on attachment 79038
Patch

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

&gt; Source/WebCore/history/PageCache.cpp:255
&gt; +        // Do not cache error pages (these can be recognized as pages with substitute data or unreachable URLs).

Please move the check up here so that the call to FrameLoaderClient::canCachePage is the last call.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>335424</commentid>
    <comment_count>17</comment_count>
    <who name="Jessie Berlin">jberlin</who>
    <bug_when>2011-01-17 11:50:33 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; (From update of attachment 79038 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=79038&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/history/PageCache.cpp:255
&gt; &gt; +        // Do not cache error pages (these can be recognized as pages with substitute data or unreachable URLs).
&gt; 
&gt; Please move the check up here so that the call to FrameLoaderClient::canCachePage is the last call.

Done. Thanks for the review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>335439</commentid>
    <comment_count>18</comment_count>
    <who name="Jessie Berlin">jberlin</who>
    <bug_when>2011-01-17 12:12:29 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; (In reply to comment #10)
&gt; &gt; Created an attachment (id=79032) [details] [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; I have tested the AppCache by hand (going back to a page that uses - with and without this patch applied, without internet connectivity - works),
&gt; 
&gt; Did you test whether pages coming from the AppCache can successfully go into the page cache? Going back to AppCache pages without internet connectivity works even if they are not in the page cache. A way to test whether the AppCache page is going into the page cache is to make a DOM change (e.g. with the Web Inspector) and see if it&apos;s still there after you go back.

I just tested that case with this patch applied and the changes were there when I went back.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>335446</commentid>
    <comment_count>19</comment_count>
      <attachid>79038</attachid>
    <who name="Jessie Berlin">jberlin</who>
    <bug_when>2011-01-17 12:24:06 -0800</bug_when>
    <thetext>Comment on attachment 79038
Patch

Committed in r75966
http://trac.webkit.org/changeset/75966</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>78840</attachid>
            <date>2011-01-13 12:12:31 -0800</date>
            <delta_ts>2011-01-13 17:46:22 -0800</delta_ts>
            <desc>Patch (idea for a fix, needs looking over and needs tests added once the approach is approved)</desc>
            <filename>patchFor52388.patch</filename>
            <type>text/plain</type>
            <size>3001</size>
            <attacher name="Jessie Berlin">jberlin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc1NzI5KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTEtMDEtMTMgIEplc3NpZSBC
ZXJsaW4gIDxqYmVybGluQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBSRUdSRVNTSU9OOiBBc3NlcnRpb24gZmFpbHVyZSBpbiBGcmFt
ZUxvYWRlcjo6Y29udGludWVMb2FkQWZ0ZXJXaWxsU3VibWl0Rm9ybSgpIHdoZW4KKyAgICAgICAg
bmF2aWdhdGluZyBiYWNrIHRvIGFuIHVucmVhY2hhYmxlIFVSTC4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUyMzg4CisKKyAgICAgICAgTm8gbmV3IHRl
c3RzIHlldC4gSWYgdGhpcyBhcHByb2FjaCBpcyBhcHByb3ZlZCwgYSBwYXRjaCB3aXRoIHRlc3Rz
IHdpbGwgYmUgcG9zdGVkIGZvcgorICAgICAgICBmb3JtYWwgcmV2aWV3LgorCisgICAgICAgICog
bG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpj
b250aW51ZUxvYWRBZnRlck5hdmlnYXRpb25Qb2xpY3kpOgorICAgICAgICAuLi4gdG8gaGVyZSBz
byB0aGF0IHRoZSByZWxvYWQgY2FzZSBhbHNvIGhhcyBuYXZpZ2F0aW9uU3RhcnQgcmVzZXQuCisg
ICAgICAgIEFsc28sIHNldCBjb21taXR0ZWQgZm9yIHRoZSBwcm92aXNpb25hbCBsb2FkZXIgdG8g
ZmFsc2UsIHNpbmNlIHRoZSBwcm92aXNpb25hbCBsb2FkZXIgaXMKKyAgICAgICAgZnJvbSB0aGUg
Y2FjaGVkIGl0ZW0gYW5kIHRoZSBuZXcgbG9hZCBoYXNuJ3QgYmVlbiBjb21taXR0ZWQgeWV0Lgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRQcm92aXNpb25hbEl0ZW1Gcm9tQ2Fj
aGVkUGFnZSk6CisgICAgICAgIE1vdmUgdGhlIGNvZGUgdG8gcmVzZXQgdGhlIG5hdmlnYXRpb25T
dGFydCBmcm9tIGhlcmUgLi4uCisKIDIwMTEtMDEtMTMgIERpbWl0cmkgR2xhemtvdiAgPGRnbGF6
a292QGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByNzU3
MjUuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHJldmlzaW9uIDc1
NzE0KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjk3OSw5ICsyOTc5LDIwIEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNvbnRpbnVlTG9h
ZEFmdGVyTmF2aWcKIAogICAgIHNldFBvbGljeURvY3VtZW50TG9hZGVyKDApOwogCi0gICAgaWYg
KGlzQmFja0ZvcndhcmRMb2FkVHlwZSh0eXBlKSAmJiBoaXN0b3J5KCktPnByb3Zpc2lvbmFsSXRl
bSgpLT5pc0luUGFnZUNhY2hlKCkpIHsKLSAgICAgICAgbG9hZFByb3Zpc2lvbmFsSXRlbUZyb21D
YWNoZWRQYWdlKCk7Ci0gICAgICAgIHJldHVybjsKKyAgICBpZiAoaGlzdG9yeSgpLT5wcm92aXNp
b25hbEl0ZW0oKSAmJiBoaXN0b3J5KCktPnByb3Zpc2lvbmFsSXRlbSgpLT5pc0luUGFnZUNhY2hl
KCkpIHsKKyAgICAgICAgQVNTRVJUKGlzQmFja0ZvcndhcmRMb2FkVHlwZSh0eXBlKSB8fCB0eXBl
ID09IEZyYW1lTG9hZFR5cGVSZWxvYWQpOworICAgICAgICBEb2N1bWVudExvYWRlciogcHJvdmlz
aW9uYWxMb2FkZXIgPSBwcm92aXNpb25hbERvY3VtZW50TG9hZGVyKCk7CisgICAgICAgIC8vIFRo
ZSBuYXZpZ2F0aW9uIHN0YXJ0IHRpbWUgaXMgdGhlIG9uZSBmcm9tIHRoZSBjYWNoZWQgaXRlbSBh
bmQgbmVlZHMgdG8gYmUgcmVzZXQuCisgICAgICAgIEFTU0VSVChwcm92aXNpb25hbExvYWRlci0+
dGltaW5nKCktPm5hdmlnYXRpb25TdGFydCk7CisgICAgICAgIHByb3Zpc2lvbmFsTG9hZGVyLT5y
ZXNldFRpbWluZygpOworCisgICAgICAgIGlmIChpc0JhY2tGb3J3YXJkTG9hZFR5cGUodHlwZSkp
IHsKKyAgICAgICAgICAgIGxvYWRQcm92aXNpb25hbEl0ZW1Gcm9tQ2FjaGVkUGFnZSgpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIC8vIElmIGl0IGlzIG9mIHR5cGUg
RnJhbWVMb2FkVHlwZVJlbG9hZCwgdGhlbiBpdCBzaG91bGRuJ3QgdGhpbmsgaXQgaGFzIGFscmVh
ZHkKKyAgICAgICAgLy8gYmVlbiBjb21taXR0ZWQgYmVjYXVzZSBvbmx5IHRoZSBjYWNoZWQgaXRl
bSBoYXMgYmVlbiBjb21taXR0ZWQuCisgICAgICAgIHByb3Zpc2lvbmFsTG9hZGVyLT5zZXRDb21t
aXR0ZWQoZmFsc2UpOwogICAgIH0KIAogICAgIGlmIChmb3JtU3RhdGUpCkBAIC0zMTAyLDEwICsz
MTEzLDggQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFByb3Zpc2lvbmFsSXRlbUZybwogICAgIHBy
b3Zpc2lvbmFsTG9hZGVyLT5wcmVwYXJlRm9yTG9hZFN0YXJ0KCk7CiAKICAgICBtX2xvYWRpbmdG
cm9tQ2FjaGVkUGFnZSA9IHRydWU7Ci0gICAgCi0gICAgLy8gU2hvdWxkIGhhdmUgdGltaW5nIGRh
dGEgZnJvbSBwcmV2aW91cyB0aW1lKHMpIHRoZSBwYWdlIHdhcyBzaG93bi4KLSAgICBBU1NFUlQo
cHJvdmlzaW9uYWxMb2FkZXItPnRpbWluZygpLT5uYXZpZ2F0aW9uU3RhcnQpOwotICAgIHByb3Zp
c2lvbmFsTG9hZGVyLT5yZXNldFRpbWluZygpOworCisgICAgQVNTRVJUKCFwcm92aXNpb25hbExv
YWRlci0+dGltaW5nKCktPm5hdmlnYXRpb25TdGFydCk7CiAgICAgcHJvdmlzaW9uYWxMb2FkZXIt
PnRpbWluZygpLT5uYXZpZ2F0aW9uU3RhcnQgPSBjdXJyZW50VGltZSgpOyAgICAKIAogICAgIHBy
b3Zpc2lvbmFsTG9hZGVyLT5zZXRDb21taXR0ZWQodHJ1ZSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>78880</attachid>
            <date>2011-01-13 17:46:22 -0800</date>
            <delta_ts>2011-01-14 17:01:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>doNotCacheErrorPages.patch</filename>
            <type>text/plain</type>
            <size>16157</size>
            <attacher name="Jessie Berlin">jberlin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc1NzU2KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMDEtMTMgIEplc3NpZSBC
ZXJsaW4gIDxqYmVybGluQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBSRUdSRVNTSU9OOiBBc3NlcnRpb24gZmFpbHVyZSBpbiBGcmFt
ZUxvYWRlcjo6Y29udGludWVMb2FkQWZ0ZXJXaWxsU3VibWl0Rm9ybSgpIHdoZW4KKyAgICAgICAg
bmF2aWdhdGluZyBiYWNrIHRvIGFuIHVucmVhY2hhYmxlIFVSTAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTIzODgKKworICAgICAgICBUZXN0OiBodHRw
L3Rlc3RzL25hdmlnYXRpb24vZ28tYmFjay10by1lcnJvci1wYWdlLmh0bWwKKworICAgICAgICAq
IGhpc3RvcnkvUGFnZUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VDYWNoZTo6Y2Fu
Q2FjaGVQYWdlQ29udGFpbmluZ1RoaXNGcmFtZSk6CisgICAgICAgIERvIG5vdCBjYWNoZSBhbnkg
ZXJyb3IgcGFnZXMgKHdoaWNoIHdlIGNhbiByZWNvZ25pemUgYXMgaGF2aW5nIHN1YnN0aXR1dGUg
ZGF0YSBhbmQvb3IgYW4KKyAgICAgICAgdW5yZWFjaGFibGVVUkwpLgorCiAyMDExLTAxLTEzICBF
dmFuIE1hcnRpbiAgPGV2YW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFRv
bnkgQ2hhbmcuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9oaXN0b3J5L1BhZ2VDYWNoZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaGlzdG9yeS9QYWdlQ2FjaGUuY3BwCShyZXZpc2lv
biA3NTcxNCkKKysrIFNvdXJjZS9XZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjUyLDYgKzI1Miw3IEBAIGJvb2wgUGFnZUNhY2hlOjpjYW5DYWNoZVBhZ2VD
b250YWluaW5nVGgKICAgICAKICAgICByZXR1cm4gZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExv
YWRlcigpCiAgICAgICAgICYmIGZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKS0+bWFp
bkRvY3VtZW50RXJyb3IoKS5pc051bGwoKQorICAgICAgICAvLyBEbyBub3QgY2FjaGUgZXJyb3Ig
cGFnZXMgKHRoZXNlIGNhbiBiZSByZWNvZ25pemVkIGFzIHBhZ2VzIHdpdGggc3Vic3RpdHV0ZSBk
YXRhIG9yIHVucmVhY2hhYmxlIFVSTHMpLgogICAgICAgICAvLyBGSVhNRTogSWYgd2UgZXZlciBj
aGFuZ2UgdGhpcyBzbyB0aGF0IGZyYW1lcyB3aXRoIHBsdWctaW5zIHdpbGwgYmUgY2FjaGVkLAog
ICAgICAgICAvLyB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHdlIGRvbid0IGNhY2hlIGZyYW1l
cyB0aGF0IGhhdmUgb3V0c3RhbmRpbmcgTlBPYmplY3RzCiAgICAgICAgIC8vIChvYmplY3RzIGNy
ZWF0ZWQgYnkgdGhlIHBsdWctaW4pLiBTaW5jZSB0aGVyZSBpcyBubyB3YXkgdG8gcGF1c2UvcmVz
dW1lIGEgTmV0c2NhcGUgcGx1Zy1pbiwKQEAgLTI4MSw3ICsyODIsOCBAQCBib29sIFBhZ2VDYWNo
ZTo6Y2FuQ2FjaGVQYWdlQ29udGFpbmluZ1RoCiAgICAgICAgICYmICFmcmFtZS0+ZG9jdW1lbnQo
KS0+Y29udGFpbnNXTUxDb250ZW50KCkKICAgICAgICAgJiYgIWZyYW1lLT5kb2N1bWVudCgpLT5p
c1dNTERvY3VtZW50KCkKICNlbmRpZgotICAgICAgICAmJiBmcmFtZS0+bG9hZGVyKCktPmNsaWVu
dCgpLT5jYW5DYWNoZVBhZ2UoKTsKKyAgICAgICAgJiYgZnJhbWUtPmxvYWRlcigpLT5jbGllbnQo
KS0+Y2FuQ2FjaGVQYWdlKCkKKyAgICAgICAgJiYgIShmcmFtZS0+bG9hZGVyKCktPmRvY3VtZW50
TG9hZGVyKCktPnN1YnN0aXR1dGVEYXRhKCkuaXNWYWxpZCgpICYmICFmcmFtZS0+bG9hZGVyKCkt
PmRvY3VtZW50TG9hZGVyKCktPnN1YnN0aXR1dGVEYXRhKCkuZmFpbGluZ1VSTCgpLmlzRW1wdHko
KSk7CiB9CiAgICAgCiBib29sIFBhZ2VDYWNoZTo6Y2FuQ2FjaGUoUGFnZSogcGFnZSkKSW5kZXg6
IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9u
IDc1NzU2KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzgg
QEAKKzIwMTEtMDEtMTMgIEplc3NpZSBCZXJsaW4gIDxqYmVybGluQGFwcGxlLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSRUdSRVNTSU9OOiBB
c3NlcnRpb24gZmFpbHVyZSBpbiBGcmFtZUxvYWRlcjo6Y29udGludWVMb2FkQWZ0ZXJXaWxsU3Vi
bWl0Rm9ybSgpIHdoZW4KKyAgICAgICAgbmF2aWdhdGluZyBiYWNrIHRvIGFuIHVucmVhY2hhYmxl
IFVSTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTIz
ODgKKworICAgICAgICBBZGQgdGhlIGFiaWxpdHkgdG8gcGFzcyBhIHRoaXJkIGFyZ3VtZW50IHRv
IHF1ZXVlTG9hZEhUTUxTdHJpbmcgd2hpY2ggaXMgdGhlIHVucmVhY2hhYmxlCisgICAgICAgIFVS
TCBmb3Igd2hpY2ggdGhlIEhUTUxTdHJpbmcgaXMgYmVpbmcgbG9hZGVkIGluc3RlYWQuCisKKyAg
ICAgICAgSWYgdGhlcmUgaXMgYSB0aGlyZCBhcmd1bWVudCwgdGhlbiB1c2UgbG9hZEFsdGVybmF0
ZUhUTUxTdHJpbmcgaW5zdGVhZCBvZiBsb2FkSFRNTFN0cmluZzoKKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChxdWV1ZUxvYWRIVE1M
U3RyaW5nQ2FsbGJhY2spOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnF1ZXVlTG9h
ZEhUTUxTdHJpbmcpOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnF1ZXVlTG9hZEFs
dGVybmF0ZUhUTUxTdHJpbmcpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RD
b250cm9sbGVyLmg6CisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9Xb3JrUXVldWVJdGVtLmg6
CisgICAgICAgIChMb2FkSFRNTFN0cmluZ0l0ZW06OkxvYWRIVE1MU3RyaW5nSXRlbSk6CisKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHA6
CisgICAgICAgIChXb3JrSXRlbUxvYWRIVE1MU3RyaW5nOjpXb3JrSXRlbUxvYWRIVE1MU3RyaW5n
KToKKyAgICAgICAgKFdvcmtJdGVtTG9hZEhUTUxTdHJpbmc6OnJ1bik6CisgICAgICAgIChMYXlv
dXRUZXN0Q29udHJvbGxlcjo6cXVldWVMb2FkSFRNTFN0cmluZyk6CisKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9ndGsvV29ya1F1ZXVlSXRlbUd0ay5jcHA6CisgICAgICAgIChMb2FkSFRNTFN0
cmluZ0l0ZW06Omludm9rZSk6CisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvV29ya1F1
ZXVlSXRlbU1hYy5tbToKKyAgICAgICAgKExvYWRIVE1MU3RyaW5nSXRlbTo6aW52b2tlKToKKwor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9Xb3JrUXVldWVJdGVtV2luLmNwcDoKKyAgICAg
ICAgKExvYWRIVE1MU3RyaW5nSXRlbTo6aW52b2tlKToKKwogMjAxMS0wMS0xMyAgQWxlamFuZHJv
IEcuIENhc3RybyAgPGFsZXhAaWdhbGlhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBNYXJ0
aW4gUm9iaW5zb24uCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJv
bGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENv
bnRyb2xsZXIuY3BwCShyZXZpc2lvbiA3NTcxNCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xh
eW91dFRlc3RDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODMzLDggKzgzMywxNiBA
QCBzdGF0aWMgSlNWYWx1ZVJlZiBxdWV1ZUxvYWRIVE1MU3RyaW5nQ2FsCiAgICAgICAgIGJhc2VV
UkwuYWRvcHQoSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIiIpKTsKIAogICAgIExheW91
dFRlc3RDb250cm9sbGVyKiBjb250cm9sbGVyID0gc3RhdGljX2Nhc3Q8TGF5b3V0VGVzdENvbnRy
b2xsZXIqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOwotICAgIGNvbnRyb2xsZXIt
PnF1ZXVlTG9hZEhUTUxTdHJpbmcoY29udGVudC5nZXQoKSwgYmFzZVVSTC5nZXQoKSk7CiAKKyAg
ICBpZiAoYXJndW1lbnRDb3VudCA+PSAzKSB7CisgICAgICAgIEpTUmV0YWluUHRyPEpTU3RyaW5n
UmVmPiB1bnJlYWNoYWJsZVVSTDsKKyAgICAgICAgdW5yZWFjaGFibGVVUkwuYWRvcHQoSlNWYWx1
ZVRvU3RyaW5nQ29weShjb250ZXh0LCBhcmd1bWVudHNbMl0sIGV4Y2VwdGlvbikpOworICAgICAg
ICBBU1NFUlQoISpleGNlcHRpb24pOworICAgICAgICBjb250cm9sbGVyLT5xdWV1ZUxvYWRBbHRl
cm5hdGVIVE1MU3RyaW5nKGNvbnRlbnQuZ2V0KCksIGJhc2VVUkwuZ2V0KCksIHVucmVhY2hhYmxl
VVJMLmdldCgpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQp
OworICAgIH0KKworICAgIGNvbnRyb2xsZXItPnF1ZXVlTG9hZEhUTUxTdHJpbmcoY29udGVudC5n
ZXQoKSwgYmFzZVVSTC5nZXQoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNv
bnRleHQpOwogfQogCkBAIC0yMDc3LDYgKzIwODUsMTEgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJv
bGxlcjo6cXVldWVMb2FkSFRNTAogICAgIFdvcmtRdWV1ZTo6c2hhcmVkKCktPnF1ZXVlKG5ldyBM
b2FkSFRNTFN0cmluZ0l0ZW0oY29udGVudCwgYmFzZVVSTCkpOwogfQogCit2b2lkIExheW91dFRl
c3RDb250cm9sbGVyOjpxdWV1ZUxvYWRBbHRlcm5hdGVIVE1MU3RyaW5nKEpTU3RyaW5nUmVmIGNv
bnRlbnQsIEpTU3RyaW5nUmVmIGJhc2VVUkwsIEpTU3RyaW5nUmVmIHVucmVhY2hhYmxlVVJMKQor
eworICAgIFdvcmtRdWV1ZTo6c2hhcmVkKCktPnF1ZXVlKG5ldyBMb2FkSFRNTFN0cmluZ0l0ZW0o
Y29udGVudCwgYmFzZVVSTCwgdW5yZWFjaGFibGVVUkwpKTsKK30KKwogdm9pZCBMYXlvdXRUZXN0
Q29udHJvbGxlcjo6cXVldWVCYWNrTmF2aWdhdGlvbihpbnQgaG93RmFyQmFjaykKIHsKICAgICBX
b3JrUXVldWU6OnNoYXJlZCgpLT5xdWV1ZShuZXcgQmFja0l0ZW0oaG93RmFyQmFjaykpOwpJbmRl
eDogVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCShyZXZpc2lv
biA3NTcxNCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTc0LDYgKzc0LDcgQEAgcHVibGljOgogICAgIHZvaWQgcXVldWVG
b3J3YXJkTmF2aWdhdGlvbihpbnQgaG93RmFyRm9yd2FyZCk7CiAgICAgdm9pZCBxdWV1ZUxvYWQo
SlNTdHJpbmdSZWYgdXJsLCBKU1N0cmluZ1JlZiB0YXJnZXQpOwogICAgIHZvaWQgcXVldWVMb2Fk
SFRNTFN0cmluZyhKU1N0cmluZ1JlZiBjb250ZW50LCBKU1N0cmluZ1JlZiBiYXNlVVJMKTsKKyAg
ICB2b2lkIHF1ZXVlTG9hZEFsdGVybmF0ZUhUTUxTdHJpbmcoSlNTdHJpbmdSZWYgY29udGVudCwg
SlNTdHJpbmdSZWYgYmFzZVVSTCwgSlNTdHJpbmdSZWYgdW5yZWFjaGFibGVVUkwpOwogICAgIHZv
aWQgcXVldWVMb2FkaW5nU2NyaXB0KEpTU3RyaW5nUmVmIHNjcmlwdCk7CiAgICAgdm9pZCBxdWV1
ZU5vbkxvYWRpbmdTY3JpcHQoSlNTdHJpbmdSZWYgc2NyaXB0KTsKICAgICB2b2lkIHF1ZXVlUmVs
b2FkKCk7CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9Xb3JrUXVldWVJdGVtLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvV29ya1F1ZXVlSXRlbS5oCShyZXZpc2lvbiA3
NTcxNCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL1dvcmtRdWV1ZUl0ZW0uaAkod29ya2luZyBj
b3B5KQpAQCAtNjEsMTEgKzYxLDE5IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCisgICAgTG9h
ZEhUTUxTdHJpbmdJdGVtKGNvbnN0IEpTU3RyaW5nUmVmIGNvbnRlbnQsIGNvbnN0IEpTU3RyaW5n
UmVmIGJhc2VVUkwsIGNvbnN0IEpTU3RyaW5nUmVmIHVucmVhY2hhYmxlVVJMKQorICAgICAgICA6
IG1fY29udGVudChjb250ZW50KQorICAgICAgICAsIG1fYmFzZVVSTChiYXNlVVJMKQorICAgICAg
ICAsIG1fdW5yZWFjaGFibGVVUkwodW5yZWFjaGFibGVVUkwpCisgICAgeworICAgIH0KKwogcHJp
dmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgaW52b2tlKCkgY29uc3Q7CiAKICAgICBKU1JldGFpblB0
cjxKU1N0cmluZ1JlZj4gbV9jb250ZW50OwogICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBt
X2Jhc2VVUkw7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IG1fdW5yZWFjaGFibGVVUkw7
CiB9OwogCiBjbGFzcyBSZWxvYWRJdGVtIDogcHVibGljIFdvcmtRdWV1ZUl0ZW0gewpJbmRleDog
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250
cm9sbGVyLmNwcAkocmV2aXNpb24gNzU3MTQpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4NCw4ICs0
ODQsMTcgQEAgcHVibGljOgogICAgIFdvcmtJdGVtTG9hZEhUTUxTdHJpbmcoY29uc3Qgc3RkOjpz
dHJpbmcmIGh0bWwsIGNvbnN0IFdlYlVSTCYgYmFzZVVSTCkKICAgICAgICAgOiBtX2h0bWwoaHRt
bCkKICAgICAgICAgLCBtX2Jhc2VVUkwoYmFzZVVSTCkge30KKyAgICBXb3JrSXRlbUxvYWRIVE1M
U3RyaW5nKGNvbnN0IHN0ZDo6c3RyaW5nJiBodG1sLCBjb25zdCBXZWJVUkwmIGJhc2VVUkwsIGNv
bnN0IFdlYlVSTCYgdW5yZWFjaGFibGVVUkwpCisgICAgICAgIDogbV9odG1sKGh0bWwpCisgICAg
ICAgICwgbV9iYXNlVVJMKGJhc2VVUkwpCisgICAgICAgICwgbV91bnJlYWNoYWJsZVVSTCh1bnJl
YWNoYWJsZVVSTCkge30KICAgICBib29sIHJ1bihUZXN0U2hlbGwqIHNoZWxsKQogICAgIHsKKyAg
ICAgICAgaWYgKCFtX3VucmVhY2hhYmxlVVJMLmlzTnVsbCgpKSB7CisgICAgICAgICAgICBzaGVs
bC0+d2ViVmlldygpLT5tYWluRnJhbWUoKS0+bG9hZEFsdGVybmF0ZUhUTUxTdHJpbmcoCisgICAg
ICAgICAgICAgICAgV2ViS2l0OjpXZWJEYXRhKG1faHRtbC5kYXRhKCksIG1faHRtbC5sZW5ndGgo
KSksIG1fYmFzZVVSTCwgbV91bnJlYWNoYWJsZVVSTCk7CisgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAgICAgfQogICAgICAgICBzaGVsbC0+d2ViVmlldygpLT5tYWluRnJhbWUoKS0+bG9h
ZEhUTUxTdHJpbmcoCiAgICAgICAgICAgICBXZWJLaXQ6OldlYkRhdGEobV9odG1sLmRhdGEoKSwg
bV9odG1sLmxlbmd0aCgpKSwgbV9iYXNlVVJMKTsKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC00
OTMsNiArNTAyLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBzdGQ6OnN0cmluZyBtX2h0bWw7
CiAgICAgV2ViVVJMIG1fYmFzZVVSTDsKKyAgICBXZWJVUkwgbV91bnJlYWNoYWJsZVVSTDsKIH07
CiAKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnF1ZXVlTG9hZEhUTUxTdHJpbmcoY29uc3Qg
Q3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKQEAgLTUwMiw3
ICs1MTIsMTAgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cXVldWVMb2FkSFRNTAogICAg
ICAgICBXZWJVUkwgYmFzZVVSTDsKICAgICAgICAgaWYgKGFyZ3VtZW50cy5zaXplKCkgPiAxICYm
IGFyZ3VtZW50c1sxXS5pc1N0cmluZygpKQogICAgICAgICAgICAgYmFzZVVSTCA9IFdlYlVSTChH
VVJMKGFyZ3VtZW50c1sxXS50b1N0cmluZygpKSk7Ci0gICAgICAgIG1fd29ya1F1ZXVlLmFkZFdv
cmsobmV3IFdvcmtJdGVtTG9hZEhUTUxTdHJpbmcoaHRtbCwgYmFzZVVSTCkpOworICAgICAgICBp
ZiAoYXJndW1lbnRzLnNpemUoKSA+IDIgJiYgYXJndW1lbnRzWzJdLmlzU3RyaW5nKCkpCisgICAg
ICAgICAgICBtX3dvcmtRdWV1ZS5hZGRXb3JrKG5ldyBXb3JrSXRlbUxvYWRIVE1MU3RyaW5nKGh0
bWwsIGJhc2VVUkwsIFdlYlVSTChHVVJMKGFyZ3VtZW50c1syXS5pc1N0cmluZygpKSkpKTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgbV93b3JrUXVldWUuYWRkV29yayhuZXcgV29ya0l0ZW1M
b2FkSFRNTFN0cmluZyhodG1sLCBiYXNlVVJMKSk7CiAgICAgfQogICAgIHJlc3VsdC0+c2V0TnVs
bCgpOwogfQpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL1dvcmtRdWV1ZUl0ZW1HdGsu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9Xb3JrUXVldWVJdGVt
R3RrLmNwcAkocmV2aXNpb24gNzU3MTQpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvV29y
a1F1ZXVlSXRlbUd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYxLDYgKzYxLDEyIEBAIGJvb2wg
TG9hZEhUTUxTdHJpbmdJdGVtOjppbnZva2UoKSBjb25zdAogewogICAgIEdPd25QdHI8Z2NoYXI+
IGNvbnRlbnQoSlNTdHJpbmdDb3B5VVRGOENTdHJpbmcobV9jb250ZW50LmdldCgpKSk7CiAgICAg
R093blB0cjxnY2hhcj4gYmFzZVVSTChKU1N0cmluZ0NvcHlVVEY4Q1N0cmluZyhtX2Jhc2VVUkwu
Z2V0KCkpKTsKKworICAgIGlmIChtX3VucmVhY2hhYmxlVVJMKSB7CisgICAgICAgIEdPd25QdHI8
Z2NoYXI+IHVucmVhY2hhYmxlVVJMKEpTU3RyaW5nQ29weVVURjhDU3RyaW5nKG1fdW5yZWFjaGFi
bGVVUkwuZ2V0KCkpKTsKKyAgICAgICAgd2Via2l0X3dlYl9mcmFtZV9sb2FkX2FsdGVybmF0ZV9z
dHJpbmcobWFpbkZyYW1lLCBjb250ZW50LmdldCgpLCBiYXNlVVJMLmdldCgpLCB1bnJlYWNoYWJs
ZVVSTC5nZXQoKSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KICAgICB3ZWJraXRfd2Vi
X2ZyYW1lX2xvYWRfc3RyaW5nKG1haW5GcmFtZSwgY29udGVudC5nZXQoKSwgMCwgMCwgYmFzZVVS
TC5nZXQoKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJl
ZS9tYWMvV29ya1F1ZXVlSXRlbU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVy
VHJlZS9tYWMvV29ya1F1ZXVlSXRlbU1hYy5tbQkocmV2aXNpb24gNzU3MTQpCisrKyBUb29scy9E
dW1wUmVuZGVyVHJlZS9tYWMvV29ya1F1ZXVlSXRlbU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAt
NTksNyArNTksMTMgQEAgYm9vbCBMb2FkSFRNTFN0cmluZ0l0ZW06Omludm9rZSgpIGNvbnN0CiAg
ICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjb250ZW50Q0YoQWRvcHRDRiwgSlNTdHJpbmdDb3B5
Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbV9jb250ZW50LmdldCgpKSk7CiAgICAgUmV0
YWluUHRyPENGU3RyaW5nUmVmPiBiYXNlVVJMQ0YoQWRvcHRDRiwgSlNTdHJpbmdDb3B5Q0ZTdHJp
bmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbV9iYXNlVVJMLmdldCgpKSk7CiAKLSAgICBbbWFpbkZy
YW1lIGxvYWRIVE1MU3RyaW5nOihOU1N0cmluZyAqKWNvbnRlbnRDRi5nZXQoKSBiYXNlVVJMOltO
U1VSTCBVUkxXaXRoU3RyaW5nOihOU1N0cmluZyAqKWJhc2VVUkxDRi5nZXQoKV1dOworICAgIGlm
ICghbV91bnJlYWNoYWJsZVVSTCkgeworICAgICAgICBbbWFpbkZyYW1lIGxvYWRIVE1MU3RyaW5n
OihOU1N0cmluZyAqKWNvbnRlbnRDRi5nZXQoKSBiYXNlVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5n
OihOU1N0cmluZyAqKWJhc2VVUkxDRi5nZXQoKV1dOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CisKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHVucmVhY2hhYmxlVVJMQ0YoQWRvcHRD
RiwgSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbV91bnJlYWNoYWJs
ZVVSTC5nZXQoKSkpOworICAgIFttYWluRnJhbWUgbG9hZEFsdGVybmF0ZUhUTUxTdHJpbmc6KE5T
U3RyaW5nICopY29udGVudENGLmdldCgpIGJhc2VVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6KE5T
U3RyaW5nICopYmFzZVVSTENGLmdldCgpXSBmb3JVbnJlYWNoYWJsZVVSTDpbTlNVUkwgVVJMV2l0
aFN0cmluZzooTlNTdHJpbmcgKil1bnJlYWNoYWJsZVVSTENGLmdldCgpXV07CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9Xb3JrUXVldWVJdGVt
V2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vV29ya1F1ZXVl
SXRlbVdpbi5jcHAJKHJldmlzaW9uIDc1NzE0KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvd2lu
L1dvcmtRdWV1ZUl0ZW1XaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OSw2ICs4OSwxNiBAQCBi
b29sIExvYWRIVE1MU3RyaW5nSXRlbTo6aW52b2tlKCkgY29uc3QKICAgICBCU1RSIGNvbnRlbnRC
U1RSID0gU3lzQWxsb2NTdHJpbmcoY29udGVudC5jX3N0cigpKTsKICAgICBCU1RSIGJhc2VVUkxC
U1RSID0gU3lzQWxsb2NTdHJpbmcoYmFzZVVSTC5jX3N0cigpKTsKIAorICAgIGlmIChtX3VucmVh
Y2hhYmxlVVJMKSB7CisgICAgICAgIHdzdHJpbmcgdW5yZWFjaGFibGVVUkwgPSBqc1N0cmluZ1Jl
ZlRvV1N0cmluZyhtX3VucmVhY2hhYmxlVVJMLmdldCgpKTsKKyAgICAgICAgQlNUUiB1bnJlYWNo
YWJsZVVSTEJTVFIgPSBTeXNBbGxvY1N0cmluZyh1bnJlYWNoYWJsZVVSTC5jX3N0cigpKTsKKyAg
ICAgICAgZnJhbWUtPmxvYWRBbHRlcm5hdGVIVE1MU3RyaW5nKGNvbnRlbnRCU1RSLCBiYXNlVVJM
QlNUUiwgdW5yZWFjaGFibGVVUkxCU1RSKTsKKyAgICAgICAgU3lzRnJlZVN0cmluZyhjb250ZW50
QlNUUik7CisgICAgICAgIFN5c0ZyZWVTdHJpbmcoYmFzZVVSTEJTVFIpOworICAgICAgICBTeXNG
cmVlU3RyaW5nKHVucmVhY2hhYmxlVVJMQlNUUik7CisgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0KKwogICAgIGZyYW1lLT5sb2FkSFRNTFN0cmluZyhjb250ZW50QlNUUiwgYmFzZVVSTEJTVFIp
OwogCiAgICAgU3lzRnJlZVN0cmluZyhjb250ZW50QlNUUik7CkluZGV4OiBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA3
NTc1NikKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDIzIEBACisyMDExLTAxLTEzICBKZXNzaWUgQmVybGluICA8amJlcmxpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUkVHUkVTU0lP
TjogQXNzZXJ0aW9uIGZhaWx1cmUgaW4gRnJhbWVMb2FkZXI6OmNvbnRpbnVlTG9hZEFmdGVyV2ls
bFN1Ym1pdEZvcm0oKSB3aGVuCisgICAgICAgIG5hdmlnYXRpbmcgYmFjayB0byBhbiB1bnJlYWNo
YWJsZSBVUkwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTUyMzg4CisKKyAgICAgICAgVGVzdCBsb2FkaW5nIGEgcGFnZSB3aXRoIGFuIHVucmVhY2hhYmxl
IFVSTCwgdGhlbiBsb2FkaW5nIGFub3RoZXIgcGFnZSB0aGF0IGlzIHJlYWNoYWJsZSwKKyAgICAg
ICAgYW5kIHRoZW4gbmF2aWdhdGluZyBiYWNrLgorCisgICAgICAgICogaHR0cC90ZXN0cy9uYXZp
Z2F0aW9uL2dvLWJhY2stdG8tZXJyb3ItcGFnZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGh0dHAvdGVzdHMvbmF2aWdhdGlvbi9nby1iYWNrLXRvLWVycm9yLXBhZ2UuaHRtbDogQWRk
ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3Jlc291cmNlcy9wYWdlLXRvLWdv
LWJhY2stZnJvbS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2syL1NraXBw
ZWQ6CisgICAgICAgIFRoaXMgdGVzdCBuZWVkcyBhZGRpdGlvbmFsIFdlYktpdDIgQnVuZGxlIEFQ
SS4gU2tpcHBpbmcgZm9yIG5vdy4KKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9Ta2lwcGVkOgorICAg
ICAgICBJIGNvdWxkIG5vdCBmaW5kIGFueXRoaW5nIGxpa2UgbG9hZEFsdGVybmF0ZUhUTUxTdHJp
bmcgb24gUVdlYkZyYW1lLCBzbyBza2lwcGluZyB0aGlzIHRlc3QKKyAgICAgICAgb24gdGhlIFF0
IHBsYXRmb3JtLgorCiAyMDExLTAxLTEzICBKdXN0aW4gU2NodWggIDxqc2NodWhAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQgY2hyb21pdW0gZXhwZWN0YXRpb25zIHVwZGF0ZS4K
SW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9nby1iYWNrLXRvLWVycm9y
LXBhZ2UtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
bmF2aWdhdGlvbi9nby1iYWNrLXRvLWVycm9yLXBhZ2UtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL2dvLWJhY2stdG8tZXJyb3It
cGFnZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEgQEAKK1RoaXMgdGVzdHMg
dGhhdCBnb2luZyBiYWNrIHRvIGFuIGVycm9yIHBhZ2UgKGFuIHVucmVhY2hhYmxlIFVSTCBmb3Ig
d2hpY2ggdGhlcmUgaXMgc3Vic3RpdHV0ZSBkYXRhKSBkb2VzIG5vdCBjYXVzZSBhbiBhc3NlcnRp
b24gZmFpbHVyZS4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9nby1i
YWNrLXRvLWVycm9yLXBhZ2UuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL25hdmlnYXRpb24vZ28tYmFjay10by1lcnJvci1wYWdlLmh0bWwJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vZ28tYmFjay10by1lcnJvci1wYWdl
Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTIgQEAKKzxwPlRoaXMgdGVzdHMgdGhhdCBn
b2luZyBiYWNrIHRvIGFuIGVycm9yIHBhZ2UgKGFuIHVucmVhY2hhYmxlIFVSTCBmb3Igd2hpY2gg
dGhlcmUgaXMgc3Vic3RpdHV0ZQorZGF0YSkgZG9lcyBub3QgY2F1c2UgYW4gYXNzZXJ0aW9uIGZh
aWx1cmUuPC9wPgorPHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsK
KyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIucXVldWVMb2FkSFRNTFN0cmluZygiPGh0bWw+PGhlYWQ+PHRpdGxlPlRpdGxlIG9m
IHBhZ2UgbG9hZGVkIGFzIGVycm9yIHBhZ2UgZm9yIGFuIHVucmVhY2hhYmxlIFVSTDwvdGl0bGU+
PC9oZWFkPjxib2R5PkZBSUw6IFRoZSBhbHRlcm5hdGUgSFRNTCBzdHJpbmcgd2FzIGNhY2hlZCwg
YnV0IHNob3VsZCBub3QgaGF2ZSBiZWVuIGNhY2hlZCBmb3IgYW4gZXJyb3IgcGFnZTwvYm9keT48
L2h0bWw+IiwgIiIsICJ0aGlzIGlzIGFuIHVucmVhY2hhYmxlIFVSTCIpOworICAgIGxheW91dFRl
c3RDb250cm9sbGVyLnF1ZXVlTG9hZCgicmVzb3VyY2VzL3BhZ2UtdG8tZ28tYmFjay1mcm9tLmh0
bWwiKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5xdWV1ZUJhY2tOYXZpZ2F0aW9uKDEpOwor
fSBlbHNlCisgICAgZG9jdW1lbnQud3JpdGUoJ1RoaXMgdGVzdCBtdXN0IGJlIHJ1biBieSBEdW1w
UmVuZGVyVHJlZSEnKQorPC9zY3JpcHQ+CisKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMv
bmF2aWdhdGlvbi9yZXNvdXJjZXMvcGFnZS10by1nby1iYWNrLWZyb20uaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vcmVzb3VyY2VzL3BhZ2UtdG8t
Z28tYmFjay1mcm9tLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L25hdmlnYXRpb24vcmVzb3VyY2VzL3BhZ2UtdG8tZ28tYmFjay1mcm9tLmh0bWwJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsOCBAQAorPGh0bWw+CisgIDxoZWFkPgorICAgIDx0aXRsZT5BIHBhZ2Ug
dGhhdCBjYW4gYmUgbmF2aWdhdGVkIGJhY2sgZnJvbTwvdGl0bGU+CisgIDwvaGVhZD4KKyAgPGJv
ZHk+CisgICAgPHA+VGhpcyBpcyBhIHBhZ2UgdGhhdCBjYW4gYmUgbmF2aWdhdGVkIGJhY2sgZnJv
bS48L3A+CisgIDwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy13azIvU2tpcHBlZAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sy
L1NraXBwZWQJKHJldmlzaW9uIDc1NzE0KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdr
Mi9Ta2lwcGVkCSh3b3JraW5nIGNvcHkpCkBAIC00ODYsNiArNDg2LDcgQEAgaHR0cC90ZXN0cy9t
aXNjL2lzaW5kZXgtd2l0aC1uby1mb3JtLmh0bQogaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL2RvY3Vt
ZW50LWxvY2F0aW9uLWNsaWNrLXRpbWVvdXQuaHRtbAogaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL2Rv
Y3VtZW50LWxvY2F0aW9uLWNsaWNrLmh0bWwKIGh0dHAvdGVzdHMvbmF2aWdhdGlvbi9kb2N1bWVu
dC1sb2NhdGlvbi1tb3VzZW92ZXIuaHRtbAoraHR0cC90ZXN0cy9uYXZpZ2F0aW9uL2dvLWJhY2st
dG8tZXJyb3ItcGFnZS5odG1sCiBodHRwL3Rlc3RzL25hdmlnYXRpb24vbm8tcmVmZXJyZXItcmVz
ZXQuaHRtbAogaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL25vLXJlZmVycmVyLXNhbWUtd2luZG93Lmh0
bWwKIGh0dHAvdGVzdHMvbmF2aWdhdGlvbi9uby1yZWZlcnJlci1zdWJmcmFtZS5odG1sCkluZGV4
OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL3BsYXRmb3JtL3F0L1NraXBwZWQJKHJldmlzaW9uIDc1NzE0KQorKysgTGF5b3V0VGVzdHMv
cGxhdGZvcm0vcXQvU2tpcHBlZAkod29ya2luZyBjb3B5KQpAQCAtMjE5LDYgKzIxOSw5IEBAIGh0
dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvc2VuZC1hcnJheS1idWYKICMgTWlzc2luZyBEUlQgYWJp
bGl0eSB0byBzZXQgYWNjZXB0IGNvb2tpZSBwb2xpY3kKIGh0dHAvdGVzdHMveG1saHR0cHJlcXVl
c3QvY3Jvc3Mtb3JpZ2luLWNvb2tpZS1zdG9yYWdlLmh0bWwKIAorIyBRV2ViRnJhbWUgbWlzc2lu
ZyBhIHZlcnNpb24gb2Ygc2V0SFRNTCB3aGljaCBhbGxvd3Mgc3BlY2lmeWluZyB0aGUgdW5yZWFj
aGFibGUgVVJMLgoraHR0cC90ZXN0cy9uYXZpZ2F0aW9uL2dvLWJhY2stdG8tZXJyb3ItcGFnZS5o
dG1sCisKICMgU3RpbGwgZmFpbCB3aXRoIFF0IDQuNy4xCiBodHRwL3Rlc3RzL3htbGh0dHByZXF1
ZXN0L2NhY2hlLW92ZXJyaWRlLmh0bWwKIGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvY3Jvc3Mt
b3JpZ2luLWF1dGhvcml6YXRpb24uaHRtbAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79032</attachid>
            <date>2011-01-14 17:01:01 -0800</date>
            <delta_ts>2011-01-14 17:25:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>doNotCacheErrorPagesTake2.patch</filename>
            <type>text/plain</type>
            <size>15015</size>
            <attacher name="Jessie Berlin">jberlin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc1ODQyKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMDEtMTQgIEplc3NpZSBC
ZXJsaW4gIDxqYmVybGluQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBSRUdSRVNTSU9OOiBBc3NlcnRpb24gZmFpbHVyZSBpbiBGcmFt
ZUxvYWRlcjo6Y29udGludWVMb2FkQWZ0ZXJXaWxsU3VibWl0Rm9ybSgpIHdoZW4KKyAgICAgICAg
bmF2aWdhdGluZyBiYWNrIHRvIGFuIHVucmVhY2hhYmxlIFVSTAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTIzODgKKworICAgICAgICBUZXN0OiBodHRw
L3Rlc3RzL25hdmlnYXRpb24vZ28tYmFjay10by1lcnJvci1wYWdlLmh0bWwKKworICAgICAgICAq
IGhpc3RvcnkvUGFnZUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VDYWNoZTo6Y2Fu
Q2FjaGVQYWdlQ29udGFpbmluZ1RoaXNGcmFtZSk6CisgICAgICAgIERvIG5vdCBjYWNoZSBhbnkg
ZXJyb3IgcGFnZXMgKHdoaWNoIHdlIGNhbiByZWNvZ25pemUgYXMgaGF2aW5nIHN1YnN0aXR1dGUg
ZGF0YSBhbmQvb3IgYW4KKyAgICAgICAgdW5yZWFjaGFibGVVUkwpLgorCiAyMDExLTAxLTE0ICBU
b255IEdlbnRpbGNvcmUgIDx0b255Z0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdl
ZCBidWlsZCBmaXguCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9oaXN0b3J5L1BhZ2VDYWNoZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaGlzdG9yeS9QYWdlQ2FjaGUuY3BwCShyZXZp
c2lvbiA3NTgwNykKKysrIFNvdXJjZS9XZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjUyLDYgKzI1Miw3IEBAIGJvb2wgUGFnZUNhY2hlOjpjYW5DYWNoZVBh
Z2VDb250YWluaW5nVGgKICAgICAKICAgICByZXR1cm4gZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVu
dExvYWRlcigpCiAgICAgICAgICYmIGZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKS0+
bWFpbkRvY3VtZW50RXJyb3IoKS5pc051bGwoKQorICAgICAgICAvLyBEbyBub3QgY2FjaGUgZXJy
b3IgcGFnZXMgKHRoZXNlIGNhbiBiZSByZWNvZ25pemVkIGFzIHBhZ2VzIHdpdGggc3Vic3RpdHV0
ZSBkYXRhIG9yIHVucmVhY2hhYmxlIFVSTHMpLgogICAgICAgICAvLyBGSVhNRTogSWYgd2UgZXZl
ciBjaGFuZ2UgdGhpcyBzbyB0aGF0IGZyYW1lcyB3aXRoIHBsdWctaW5zIHdpbGwgYmUgY2FjaGVk
LAogICAgICAgICAvLyB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHdlIGRvbid0IGNhY2hlIGZy
YW1lcyB0aGF0IGhhdmUgb3V0c3RhbmRpbmcgTlBPYmplY3RzCiAgICAgICAgIC8vIChvYmplY3Rz
IGNyZWF0ZWQgYnkgdGhlIHBsdWctaW4pLiBTaW5jZSB0aGVyZSBpcyBubyB3YXkgdG8gcGF1c2Uv
cmVzdW1lIGEgTmV0c2NhcGUgcGx1Zy1pbiwKQEAgLTI4MSw3ICsyODIsOCBAQCBib29sIFBhZ2VD
YWNoZTo6Y2FuQ2FjaGVQYWdlQ29udGFpbmluZ1RoCiAgICAgICAgICYmICFmcmFtZS0+ZG9jdW1l
bnQoKS0+Y29udGFpbnNXTUxDb250ZW50KCkKICAgICAgICAgJiYgIWZyYW1lLT5kb2N1bWVudCgp
LT5pc1dNTERvY3VtZW50KCkKICNlbmRpZgotICAgICAgICAmJiBmcmFtZS0+bG9hZGVyKCktPmNs
aWVudCgpLT5jYW5DYWNoZVBhZ2UoKTsKKyAgICAgICAgJiYgZnJhbWUtPmxvYWRlcigpLT5jbGll
bnQoKS0+Y2FuQ2FjaGVQYWdlKCkKKyAgICAgICAgJiYgIShmcmFtZS0+bG9hZGVyKCktPmRvY3Vt
ZW50TG9hZGVyKCktPnN1YnN0aXR1dGVEYXRhKCkuaXNWYWxpZCgpICYmICFmcmFtZS0+bG9hZGVy
KCktPmRvY3VtZW50TG9hZGVyKCktPnN1YnN0aXR1dGVEYXRhKCkuZmFpbGluZ1VSTCgpLmlzRW1w
dHkoKSk7CiB9CiAgICAgCiBib29sIFBhZ2VDYWNoZTo6Y2FuQ2FjaGUoUGFnZSogcGFnZSkKSW5k
ZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlz
aW9uIDc1ODQyKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MzQgQEAKKzIwMTEtMDEtMTQgIEplc3NpZSBCZXJsaW4gIDxqYmVybGluQGFwcGxlLmNvbT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSRUdSRVNTSU9O
OiBBc3NlcnRpb24gZmFpbHVyZSBpbiBGcmFtZUxvYWRlcjo6Y29udGludWVMb2FkQWZ0ZXJXaWxs
U3VibWl0Rm9ybSgpIHdoZW4KKyAgICAgICAgbmF2aWdhdGluZyBiYWNrIHRvIGFuIHVucmVhY2hh
YmxlIFVSTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NTIzODgKKworICAgICAgICBBZGQgYSB0aGlyZCBwYXJhbWV0ZXIgKHVucmVhY2hhYmxlVVJMKSB0
byBxdWV1ZUxvYWRIVE1MU3RyaW5nLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvTGF5b3V0
VGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAocXVldWVMb2FkSFRNTFN0cmluZ0NhbGxiYWNr
KToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpxdWV1ZUxvYWRIVE1MU3RyaW5nKToK
KyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpxdWV1ZUxvYWRBbHRlcm5hdGVIVE1MU3Ry
aW5nKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oOgor
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvV29ya1F1ZXVlSXRlbS5oOgorICAgICAgICAoTG9h
ZEhUTUxTdHJpbmdJdGVtOjpMb2FkSFRNTFN0cmluZ0l0ZW0pOgorCisgICAgICAgICogRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV29y
a0l0ZW1Mb2FkSFRNTFN0cmluZzo6V29ya0l0ZW1Mb2FkSFRNTFN0cmluZyk6CisgICAgICAgIChX
b3JrSXRlbUxvYWRIVE1MU3RyaW5nOjpydW4pOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OnF1ZXVlTG9hZEhUTUxTdHJpbmcpOgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvZ3Rr
L1dvcmtRdWV1ZUl0ZW1HdGsuY3BwOgorICAgICAgICAoTG9hZEhUTUxTdHJpbmdJdGVtOjppbnZv
a2UpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9Xb3JrUXVldWVJdGVtTWFjLm1tOgor
ICAgICAgICAoTG9hZEhUTUxTdHJpbmdJdGVtOjppbnZva2UpOgorICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL3dpbi9Xb3JrUXVldWVJdGVtV2luLmNwcDoKKyAgICAgICAgKExvYWRIVE1MU3RyaW5n
SXRlbTo6aW52b2tlKToKKwogMjAxMS0wMS0xNCAgQnJpYW4gV2VpbnN0ZWluICA8YndlaW5zdGVp
bkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmYgR2FyZW4uCkluZGV4OiBU
b29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCShyZXZpc2lv
biA3NTgwNykKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtODU4LDggKzg1OCwxNiBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBx
dWV1ZUxvYWRIVE1MU3RyaW5nQ2FsCiAgICAgICAgIGJhc2VVUkwuYWRvcHQoSlNTdHJpbmdDcmVh
dGVXaXRoVVRGOENTdHJpbmcoIiIpKTsKIAogICAgIExheW91dFRlc3RDb250cm9sbGVyKiBjb250
cm9sbGVyID0gc3RhdGljX2Nhc3Q8TGF5b3V0VGVzdENvbnRyb2xsZXIqPihKU09iamVjdEdldFBy
aXZhdGUodGhpc09iamVjdCkpOwotICAgIGNvbnRyb2xsZXItPnF1ZXVlTG9hZEhUTUxTdHJpbmco
Y29udGVudC5nZXQoKSwgYmFzZVVSTC5nZXQoKSk7CiAKKyAgICBpZiAoYXJndW1lbnRDb3VudCA+
PSAzKSB7CisgICAgICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiB1bnJlYWNoYWJsZVVSTDsK
KyAgICAgICAgdW5yZWFjaGFibGVVUkwuYWRvcHQoSlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0
LCBhcmd1bWVudHNbMl0sIGV4Y2VwdGlvbikpOworICAgICAgICBBU1NFUlQoISpleGNlcHRpb24p
OworICAgICAgICBjb250cm9sbGVyLT5xdWV1ZUxvYWRBbHRlcm5hdGVIVE1MU3RyaW5nKGNvbnRl
bnQuZ2V0KCksIGJhc2VVUkwuZ2V0KCksIHVucmVhY2hhYmxlVVJMLmdldCgpKTsKKyAgICAgICAg
cmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworICAgIH0KKworICAgIGNvbnRy
b2xsZXItPnF1ZXVlTG9hZEhUTUxTdHJpbmcoY29udGVudC5nZXQoKSwgYmFzZVVSTC5nZXQoKSk7
CiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwogfQogCkBAIC0yMTAz
LDYgKzIxMTEsMTEgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cXVldWVMb2FkSFRNTAog
ICAgIFdvcmtRdWV1ZTo6c2hhcmVkKCktPnF1ZXVlKG5ldyBMb2FkSFRNTFN0cmluZ0l0ZW0oY29u
dGVudCwgYmFzZVVSTCkpOwogfQogCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpxdWV1ZUxv
YWRBbHRlcm5hdGVIVE1MU3RyaW5nKEpTU3RyaW5nUmVmIGNvbnRlbnQsIEpTU3RyaW5nUmVmIGJh
c2VVUkwsIEpTU3RyaW5nUmVmIHVucmVhY2hhYmxlVVJMKQoreworICAgIFdvcmtRdWV1ZTo6c2hh
cmVkKCktPnF1ZXVlKG5ldyBMb2FkSFRNTFN0cmluZ0l0ZW0oY29udGVudCwgYmFzZVVSTCwgdW5y
ZWFjaGFibGVVUkwpKTsKK30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cXVldWVCYWNr
TmF2aWdhdGlvbihpbnQgaG93RmFyQmFjaykKIHsKICAgICBXb3JrUXVldWU6OnNoYXJlZCgpLT5x
dWV1ZShuZXcgQmFja0l0ZW0oaG93RmFyQmFjaykpOwpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRy
ZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVy
VHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCShyZXZpc2lvbiA3NTgwNykKKysrIFRvb2xzL0R1
bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTc3
LDYgKzc3LDcgQEAgcHVibGljOgogICAgIHZvaWQgcXVldWVGb3J3YXJkTmF2aWdhdGlvbihpbnQg
aG93RmFyRm9yd2FyZCk7CiAgICAgdm9pZCBxdWV1ZUxvYWQoSlNTdHJpbmdSZWYgdXJsLCBKU1N0
cmluZ1JlZiB0YXJnZXQpOwogICAgIHZvaWQgcXVldWVMb2FkSFRNTFN0cmluZyhKU1N0cmluZ1Jl
ZiBjb250ZW50LCBKU1N0cmluZ1JlZiBiYXNlVVJMKTsKKyAgICB2b2lkIHF1ZXVlTG9hZEFsdGVy
bmF0ZUhUTUxTdHJpbmcoSlNTdHJpbmdSZWYgY29udGVudCwgSlNTdHJpbmdSZWYgYmFzZVVSTCwg
SlNTdHJpbmdSZWYgdW5yZWFjaGFibGVVUkwpOwogICAgIHZvaWQgcXVldWVMb2FkaW5nU2NyaXB0
KEpTU3RyaW5nUmVmIHNjcmlwdCk7CiAgICAgdm9pZCBxdWV1ZU5vbkxvYWRpbmdTY3JpcHQoSlNT
dHJpbmdSZWYgc2NyaXB0KTsKICAgICB2b2lkIHF1ZXVlUmVsb2FkKCk7CkluZGV4OiBUb29scy9E
dW1wUmVuZGVyVHJlZS9Xb3JrUXVldWVJdGVtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJl
bmRlclRyZWUvV29ya1F1ZXVlSXRlbS5oCShyZXZpc2lvbiA3NTgwNykKKysrIFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL1dvcmtRdWV1ZUl0ZW0uaAkod29ya2luZyBjb3B5KQpAQCAtNjEsMTEgKzYxLDE5
IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCisgICAgTG9hZEhUTUxTdHJpbmdJdGVtKGNvbnN0
IEpTU3RyaW5nUmVmIGNvbnRlbnQsIGNvbnN0IEpTU3RyaW5nUmVmIGJhc2VVUkwsIGNvbnN0IEpT
U3RyaW5nUmVmIHVucmVhY2hhYmxlVVJMKQorICAgICAgICA6IG1fY29udGVudChjb250ZW50KQor
ICAgICAgICAsIG1fYmFzZVVSTChiYXNlVVJMKQorICAgICAgICAsIG1fdW5yZWFjaGFibGVVUkwo
dW5yZWFjaGFibGVVUkwpCisgICAgeworICAgIH0KKwogcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJv
b2wgaW52b2tlKCkgY29uc3Q7CiAKICAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gbV9jb250
ZW50OwogICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBtX2Jhc2VVUkw7CisgICAgSlNSZXRh
aW5QdHI8SlNTdHJpbmdSZWY+IG1fdW5yZWFjaGFibGVVUkw7CiB9OwogCiBjbGFzcyBSZWxvYWRJ
dGVtIDogcHVibGljIFdvcmtRdWV1ZUl0ZW0gewpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAkocmV2aXNpb24g
NzU4MDcpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJv
bGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4NCwxNSArNDg0LDIwIEBAIHB1YmxpYzoKICAg
ICBXb3JrSXRlbUxvYWRIVE1MU3RyaW5nKGNvbnN0IHN0ZDo6c3RyaW5nJiBodG1sLCBjb25zdCBX
ZWJVUkwmIGJhc2VVUkwpCiAgICAgICAgIDogbV9odG1sKGh0bWwpCiAgICAgICAgICwgbV9iYXNl
VVJMKGJhc2VVUkwpIHt9CisgICAgV29ya0l0ZW1Mb2FkSFRNTFN0cmluZyhjb25zdCBzdGQ6OnN0
cmluZyYgaHRtbCwgY29uc3QgV2ViVVJMJiBiYXNlVVJMLCBjb25zdCBXZWJVUkwmIHVucmVhY2hh
YmxlVVJMKQorICAgICAgICA6IG1faHRtbChodG1sKQorICAgICAgICAsIG1fYmFzZVVSTChiYXNl
VVJMKQorICAgICAgICAsIG1fdW5yZWFjaGFibGVVUkwodW5yZWFjaGFibGVVUkwpIHt9CiAgICAg
Ym9vbCBydW4oVGVzdFNoZWxsKiBzaGVsbCkKICAgICB7CiAgICAgICAgIHNoZWxsLT53ZWJWaWV3
KCktPm1haW5GcmFtZSgpLT5sb2FkSFRNTFN0cmluZygKLSAgICAgICAgICAgIFdlYktpdDo6V2Vi
RGF0YShtX2h0bWwuZGF0YSgpLCBtX2h0bWwubGVuZ3RoKCkpLCBtX2Jhc2VVUkwpOworICAgICAg
ICAgICAgV2ViS2l0OjpXZWJEYXRhKG1faHRtbC5kYXRhKCksIG1faHRtbC5sZW5ndGgoKSksIG1f
YmFzZVVSTCwgbV91bnJlYWNoYWJsZVVSTCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0K
IHByaXZhdGU6CiAgICAgc3RkOjpzdHJpbmcgbV9odG1sOwogICAgIFdlYlVSTCBtX2Jhc2VVUkw7
CisgICAgV2ViVVJMIG1fdW5yZWFjaGFibGVVUkw7CiB9OwogCiB2b2lkIExheW91dFRlc3RDb250
cm9sbGVyOjpxdWV1ZUxvYWRIVE1MU3RyaW5nKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1l
bnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCkBAIC01MDIsNyArNTA3LDEwIEBAIHZvaWQgTGF5b3V0
VGVzdENvbnRyb2xsZXI6OnF1ZXVlTG9hZEhUTUwKICAgICAgICAgV2ViVVJMIGJhc2VVUkw7CiAg
ICAgICAgIGlmIChhcmd1bWVudHMuc2l6ZSgpID4gMSAmJiBhcmd1bWVudHNbMV0uaXNTdHJpbmco
KSkKICAgICAgICAgICAgIGJhc2VVUkwgPSBXZWJVUkwoR1VSTChhcmd1bWVudHNbMV0udG9TdHJp
bmcoKSkpOwotICAgICAgICBtX3dvcmtRdWV1ZS5hZGRXb3JrKG5ldyBXb3JrSXRlbUxvYWRIVE1M
U3RyaW5nKGh0bWwsIGJhc2VVUkwpKTsKKyAgICAgICAgaWYgKGFyZ3VtZW50cy5zaXplKCkgPiAy
ICYmIGFyZ3VtZW50c1syXS5pc1N0cmluZygpKQorICAgICAgICAgICAgbV93b3JrUXVldWUuYWRk
V29yayhuZXcgV29ya0l0ZW1Mb2FkSFRNTFN0cmluZyhodG1sLCBiYXNlVVJMLCBXZWJVUkwoR1VS
TChhcmd1bWVudHNbMl0uaXNTdHJpbmcoKSkpKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IG1fd29ya1F1ZXVlLmFkZFdvcmsobmV3IFdvcmtJdGVtTG9hZEhUTUxTdHJpbmcoaHRtbCwgYmFz
ZVVSTCkpOwogICAgIH0KICAgICByZXN1bHQtPnNldE51bGwoKTsKIH0KSW5kZXg6IFRvb2xzL0R1
bXBSZW5kZXJUcmVlL2d0ay9Xb3JrUXVldWVJdGVtR3RrLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9EdW1wUmVuZGVyVHJlZS9ndGsvV29ya1F1ZXVlSXRlbUd0ay5jcHAJKHJldmlzaW9uIDc1ODA3
KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL1dvcmtRdWV1ZUl0ZW1HdGsuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC02MSw2ICs2MSwxMiBAQCBib29sIExvYWRIVE1MU3RyaW5nSXRlbTo6aW52
b2tlKCkgY29uc3QKIHsKICAgICBHT3duUHRyPGdjaGFyPiBjb250ZW50KEpTU3RyaW5nQ29weVVU
RjhDU3RyaW5nKG1fY29udGVudC5nZXQoKSkpOwogICAgIEdPd25QdHI8Z2NoYXI+IGJhc2VVUkwo
SlNTdHJpbmdDb3B5VVRGOENTdHJpbmcobV9iYXNlVVJMLmdldCgpKSk7CisKKyAgICBpZiAobV91
bnJlYWNoYWJsZVVSTCkgeworICAgICAgICBHT3duUHRyPGdjaGFyPiB1bnJlYWNoYWJsZVVSTChK
U1N0cmluZ0NvcHlVVEY4Q1N0cmluZyhtX3VucmVhY2hhYmxlVVJMLmdldCgpKSk7CisgICAgICAg
IHdlYmtpdF93ZWJfZnJhbWVfbG9hZF9hbHRlcm5hdGVfc3RyaW5nKG1haW5GcmFtZSwgY29udGVu
dC5nZXQoKSwgYmFzZVVSTC5nZXQoKSwgdW5yZWFjaGFibGVVUkwuZ2V0KCkpOworICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CiAgICAgd2Via2l0X3dlYl9mcmFtZV9sb2FkX3N0cmluZyhtYWlu
RnJhbWUsIGNvbnRlbnQuZ2V0KCksIDAsIDAsIGJhc2VVUkwuZ2V0KCkpOwogICAgIHJldHVybiB0
cnVlOwogfQpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1dvcmtRdWV1ZUl0ZW1NYWMu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1dvcmtRdWV1ZUl0ZW1N
YWMubW0JKHJldmlzaW9uIDc1ODA3KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1dvcmtR
dWV1ZUl0ZW1NYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTU5LDYgKzU5LDEyIEBAIGJvb2wgTG9h
ZEhUTUxTdHJpbmdJdGVtOjppbnZva2UoKSBjb25zdAogICAgIFJldGFpblB0cjxDRlN0cmluZ1Jl
Zj4gY29udGVudENGKEFkb3B0Q0YsIEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIG1fY29udGVudC5nZXQoKSkpOwogICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gYmFz
ZVVSTENGKEFkb3B0Q0YsIEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQs
IG1fYmFzZVVSTC5nZXQoKSkpOwogCisgICAgaWYgKG1fdW5yZWFjaGFibGVVUkwpIHsKKyAgICAg
ICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1bnJlYWNoYWJsZVVSTENGKEFkb3B0Q0YsIEpTU3Ry
aW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIG1fdW5yZWFjaGFibGVVUkwuZ2V0
KCkpKTsKKyAgICAgICAgW21haW5GcmFtZSBsb2FkQWx0ZXJuYXRlSFRNTFN0cmluZzooTlNTdHJp
bmcgKiljb250ZW50Q0YuZ2V0KCkgYmFzZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzooTlNTdHJp
bmcgKiliYXNlVVJMQ0YuZ2V0KCldIGZvclVucmVhY2hhYmxlVVJMOltOU1VSTCBVUkxXaXRoU3Ry
aW5nOihOU1N0cmluZyAqKXVucmVhY2hhYmxlVVJMQ0YuZ2V0KCldXTsKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgfQorCiAgICAgW21haW5GcmFtZSBsb2FkSFRNTFN0cmluZzooTlNTdHJpbmcg
Kiljb250ZW50Q0YuZ2V0KCkgYmFzZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzooTlNTdHJpbmcg
KiliYXNlVVJMQ0YuZ2V0KCldXTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KSW5kZXg6IFRvb2xzL0R1
bXBSZW5kZXJUcmVlL3dpbi9Xb3JrUXVldWVJdGVtV2luLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9EdW1wUmVuZGVyVHJlZS93aW4vV29ya1F1ZXVlSXRlbVdpbi5jcHAJKHJldmlzaW9uIDc1ODA3
KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1dvcmtRdWV1ZUl0ZW1XaW4uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC04OSw2ICs4OSwxNiBAQCBib29sIExvYWRIVE1MU3RyaW5nSXRlbTo6aW52
b2tlKCkgY29uc3QKICAgICBCU1RSIGNvbnRlbnRCU1RSID0gU3lzQWxsb2NTdHJpbmcoY29udGVu
dC5jX3N0cigpKTsKICAgICBCU1RSIGJhc2VVUkxCU1RSID0gU3lzQWxsb2NTdHJpbmcoYmFzZVVS
TC5jX3N0cigpKTsKIAorICAgIGlmIChtX3VucmVhY2hhYmxlVVJMKSB7CisgICAgICAgIHdzdHJp
bmcgdW5yZWFjaGFibGVVUkwgPSBqc1N0cmluZ1JlZlRvV1N0cmluZyhtX3VucmVhY2hhYmxlVVJM
LmdldCgpKTsKKyAgICAgICAgQlNUUiB1bnJlYWNoYWJsZVVSTEJTVFIgPSBTeXNBbGxvY1N0cmlu
Zyh1bnJlYWNoYWJsZVVSTC5jX3N0cigpKTsKKyAgICAgICAgZnJhbWUtPmxvYWRBbHRlcm5hdGVI
VE1MU3RyaW5nKGNvbnRlbnRCU1RSLCBiYXNlVVJMQlNUUiwgdW5yZWFjaGFibGVVUkxCU1RSKTsK
KyAgICAgICAgU3lzRnJlZVN0cmluZyhjb250ZW50QlNUUik7CisgICAgICAgIFN5c0ZyZWVTdHJp
bmcoYmFzZVVSTEJTVFIpOworICAgICAgICBTeXNGcmVlU3RyaW5nKHVucmVhY2hhYmxlVVJMQlNU
Uik7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKwogICAgIGZyYW1lLT5sb2FkSFRNTFN0
cmluZyhjb250ZW50QlNUUiwgYmFzZVVSTEJTVFIpOwogCiAgICAgU3lzRnJlZVN0cmluZyhjb250
ZW50QlNUUik7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA3NTg0MikKKysrIExheW91dFRlc3RzL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDExLTAxLTE0ICBKZXNzaWUg
QmVybGluICA8amJlcmxpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgUkVHUkVTU0lPTjogQXNzZXJ0aW9uIGZhaWx1cmUgaW4gRnJh
bWVMb2FkZXI6OmNvbnRpbnVlTG9hZEFmdGVyV2lsbFN1Ym1pdEZvcm0oKSB3aGVuCisgICAgICAg
IG5hdmlnYXRpbmcgYmFjayB0byBhbiB1bnJlYWNoYWJsZSBVUkwKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUyMzg4CisKKyAgICAgICAgQWRkIGEgdGVz
dCB0aGF0IGxvYWRzIGFuIGFsdGVybmF0ZSBIVE1MIFN0cmluZyBmb3IgYW4gInVucmVhY2hhYmxl
IiBVUkwsIGxvYWRzIGFub3RoZXIKKyAgICAgICAgcGFnZSwgYW5kIHRoZW4gZ29lcyBiYWNrIHRv
IHRoZSAidW5yZWFjaGFibGUiIFVSTCwgd2hpY2ggaXMgbm93IHJlYWNoYWJsZS4KKworICAgICAg
ICBUaGlzIHRlc3RzIHR3byB0aGluZ3M6CisgICAgICAgIDEpIE5vIGFzc2VydGlvbiBmYWlsdXJl
IHdoZW4gZ29pbmcgYmFjayB0byBhbiB1bnJlYWNoYWJsZSBVUkwuCisgICAgICAgIDIpIFRoZXJl
IGlzIG5vIHBhZ2UgY2FjaGVkIGZvciB0aGUgdW5yZWFjaGFibGUgVVJMLgorCisgICAgICAgICog
aHR0cC90ZXN0cy9uYXZpZ2F0aW9uL2dvLWJhY2stdG8tZXJyb3ItcGFnZS1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvbmF2aWdhdGlvbi9nby1iYWNrLXRvLWVycm9y
LXBhZ2UuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3Jlc291
cmNlcy9wYWdlLXRvLWdvLWJhY2stZnJvbS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rl
c3RzL25hdmlnYXRpb24vcmVzb3VyY2VzL3BhZ2UtdHJlYXRlZC1hcy11bnJlYWNoYWJsZS5odG1s
OiBBZGRlZC4KKwogMjAxMS0wMS0xNCAgTWFjaWVqIFN0YWNob3dpYWsgIDxtanNAYXBwbGUuY29t
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFuZGVycyBDYXJsc3Nvbi4KSW5kZXg6IExheW91dFRl
c3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9nby1iYWNrLXRvLWVycm9yLXBhZ2UtZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9nby1i
YWNrLXRvLWVycm9yLXBhZ2UtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL2dvLWJhY2stdG8tZXJyb3ItcGFnZS1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEgQEAKK1BBU1M6IEdvaW5nIGJhY2sgdG8gYSBwYWdl
IHRoYXQgd2FzIHByZXZpb3VzbHkgdHJlYXRlZCBhcyB1bnJlYWNoYWJsZSBsb2FkcyB0aGUgYWN0
dWFsIHBhZ2UuCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vZ28tYmFj
ay10by1lcnJvci1wYWdlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9uYXZpZ2F0aW9uL2dvLWJhY2stdG8tZXJyb3ItcGFnZS5odG1sCShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL2dvLWJhY2stdG8tZXJyb3ItcGFnZS5o
dG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE0IEBACis8c2NyaXB0PgoraWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRl
UHJlZmVyZW5jZSgiV2ViS2l0VXNlc1BhZ2VDYWNoZVByZWZlcmVuY2VLZXkiLCAxKTsKKyAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIucXVldWVMb2FkSFRNTFN0cmluZygiPHNjcmlwdD5kb2N1bWVudC53cml0ZSgnPGRpdiBpZD1y
ZXN1bHQ+RkFJTDogVGhlIGFsdGVybmF0ZSBIVE1MIHN0cmluZyB3YXMgY2FjaGVkLCBidXQgc2hv
dWxkIG5vdCBoYXZlIGJlZW4gY2FjaGVkIGZvciBhbiBlcnJvciBwYWdlPC9kaXY+Jyk7PFwvc2Ny
aXB0PiIsICJyZXNvdXJjZXMiLCAiaHR0cDovLzEyNy4wLjAuMTo4MDAwL25hdmlnYXRpb24vcmVz
b3VyY2VzL3BhZ2UtdHJlYXRlZC1hcy11bnJlYWNoYWJsZS5odG1sIik7CisgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIucXVldWVMb2FkKCJyZXNvdXJjZXMvcGFnZS10by1nby1iYWNrLWZyb20uaHRt
bCIpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLnF1ZXVlQmFja05hdmlnYXRpb24oMSk7Cit9
IGVsc2UKKyAgICBkb2N1bWVudC53cml0ZSgnVGhpcyB0ZXN0IG11c3QgYmUgcnVuIGJ5IER1bXBS
ZW5kZXJUcmVlIScpCis8L3NjcmlwdD4KKworPHA+VGhpcyB0ZXN0cyB0aGF0IGdvaW5nIGJhY2sg
dG8gYW4gZXJyb3IgcGFnZSAoYW4gdW5yZWFjaGFibGUgVVJMIGZvciB3aGljaCB0aGVyZSBpcyBz
dWJzdGl0dXRlCitkYXRhKSBkb2VzIG5vdCBjYXVzZSBhbiBhc3NlcnRpb24gZmFpbHVyZS48L3A+
CisKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9yZXNvdXJjZXMvcGFn
ZS10by1nby1iYWNrLWZyb20uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL25hdmlnYXRpb24vcmVzb3VyY2VzL3BhZ2UtdG8tZ28tYmFjay1mcm9tLmh0bWwJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vcmVzb3VyY2VzL3Bh
Z2UtdG8tZ28tYmFjay1mcm9tLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOCBAQAorPGh0
bWw+CisgIDxoZWFkPgorICAgIDx0aXRsZT5BIHBhZ2UgdGhhdCBjYW4gYmUgbmF2aWdhdGVkIGJh
Y2sgZnJvbTwvdGl0bGU+CisgIDwvaGVhZD4KKyAgPGJvZHk+CisgICAgPHA+VGhpcyBpcyBhIHBh
Z2UgdGhhdCBjYW4gYmUgbmF2aWdhdGVkIGJhY2sgZnJvbS48L3A+CisgIDwvYm9keT4KKzwvaHRt
bD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9yZXNvdXJjZXMvcGFn
ZS10cmVhdGVkLWFzLXVucmVhY2hhYmxlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3Jlc291cmNlcy9wYWdlLXRyZWF0ZWQtYXMtdW5yZWFjaGFi
bGUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlv
bi9yZXNvdXJjZXMvcGFnZS10cmVhdGVkLWFzLXVucmVhY2hhYmxlLmh0bWwJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsOCBAQAorPGh0bWw+CisgIDxoZWFkPgorICAgIDx0aXRsZT5UaGlzIHBhZ2Ug
d2lsbCBiZSBpbml0aWFsbHkgdHJlYXRlZCBhcyB1bnJlYWNoYWJsZTwvdGl0bGU+CisgIDwvaGVh
ZD4KKyAgPGJvZHk+CisgICAgPHA+UEFTUzogR29pbmcgYmFjayB0byBhIHBhZ2UgdGhhdCB3YXMg
cHJldmlvdXNseSB0cmVhdGVkIGFzIHVucmVhY2hhYmxlIGxvYWRzIHRoZSBhY3R1YWwgcGFnZS48
L3A+CisgIDwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79038</attachid>
            <date>2011-01-14 17:25:42 -0800</date>
            <delta_ts>2011-01-17 12:24:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>doNotCacheErrorPagesTake3.patch</filename>
            <type>text/plain</type>
            <size>15015</size>
            <attacher name="Jessie Berlin">jberlin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc1ODQyKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMDEtMTQgIEplc3NpZSBC
ZXJsaW4gIDxqYmVybGluQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBSRUdSRVNTSU9OOiBBc3NlcnRpb24gZmFpbHVyZSBpbiBGcmFt
ZUxvYWRlcjo6Y29udGludWVMb2FkQWZ0ZXJXaWxsU3VibWl0Rm9ybSgpIHdoZW4KKyAgICAgICAg
bmF2aWdhdGluZyBiYWNrIHRvIGFuIHVucmVhY2hhYmxlIFVSTAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTIzODgKKworICAgICAgICBUZXN0OiBodHRw
L3Rlc3RzL25hdmlnYXRpb24vZ28tYmFjay10by1lcnJvci1wYWdlLmh0bWwKKworICAgICAgICAq
IGhpc3RvcnkvUGFnZUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VDYWNoZTo6Y2Fu
Q2FjaGVQYWdlQ29udGFpbmluZ1RoaXNGcmFtZSk6CisgICAgICAgIERvIG5vdCBjYWNoZSBhbnkg
ZXJyb3IgcGFnZXMgKHdoaWNoIHdlIGNhbiByZWNvZ25pemUgYXMgaGF2aW5nIHN1YnN0aXR1dGUg
ZGF0YSBhbmQvb3IgYW4KKyAgICAgICAgdW5yZWFjaGFibGVVUkwpLgorCiAyMDExLTAxLTE0ICBU
b255IEdlbnRpbGNvcmUgIDx0b255Z0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdl
ZCBidWlsZCBmaXguCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9oaXN0b3J5L1BhZ2VDYWNoZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaGlzdG9yeS9QYWdlQ2FjaGUuY3BwCShyZXZp
c2lvbiA3NTgwNykKKysrIFNvdXJjZS9XZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjUyLDYgKzI1Miw3IEBAIGJvb2wgUGFnZUNhY2hlOjpjYW5DYWNoZVBh
Z2VDb250YWluaW5nVGgKICAgICAKICAgICByZXR1cm4gZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVu
dExvYWRlcigpCiAgICAgICAgICYmIGZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKS0+
bWFpbkRvY3VtZW50RXJyb3IoKS5pc051bGwoKQorICAgICAgICAvLyBEbyBub3QgY2FjaGUgZXJy
b3IgcGFnZXMgKHRoZXNlIGNhbiBiZSByZWNvZ25pemVkIGFzIHBhZ2VzIHdpdGggc3Vic3RpdHV0
ZSBkYXRhIG9yIHVucmVhY2hhYmxlIFVSTHMpLgogICAgICAgICAvLyBGSVhNRTogSWYgd2UgZXZl
ciBjaGFuZ2UgdGhpcyBzbyB0aGF0IGZyYW1lcyB3aXRoIHBsdWctaW5zIHdpbGwgYmUgY2FjaGVk
LAogICAgICAgICAvLyB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHdlIGRvbid0IGNhY2hlIGZy
YW1lcyB0aGF0IGhhdmUgb3V0c3RhbmRpbmcgTlBPYmplY3RzCiAgICAgICAgIC8vIChvYmplY3Rz
IGNyZWF0ZWQgYnkgdGhlIHBsdWctaW4pLiBTaW5jZSB0aGVyZSBpcyBubyB3YXkgdG8gcGF1c2Uv
cmVzdW1lIGEgTmV0c2NhcGUgcGx1Zy1pbiwKQEAgLTI4MSw3ICsyODIsOCBAQCBib29sIFBhZ2VD
YWNoZTo6Y2FuQ2FjaGVQYWdlQ29udGFpbmluZ1RoCiAgICAgICAgICYmICFmcmFtZS0+ZG9jdW1l
bnQoKS0+Y29udGFpbnNXTUxDb250ZW50KCkKICAgICAgICAgJiYgIWZyYW1lLT5kb2N1bWVudCgp
LT5pc1dNTERvY3VtZW50KCkKICNlbmRpZgotICAgICAgICAmJiBmcmFtZS0+bG9hZGVyKCktPmNs
aWVudCgpLT5jYW5DYWNoZVBhZ2UoKTsKKyAgICAgICAgJiYgZnJhbWUtPmxvYWRlcigpLT5jbGll
bnQoKS0+Y2FuQ2FjaGVQYWdlKCkKKyAgICAgICAgJiYgIShmcmFtZS0+bG9hZGVyKCktPmRvY3Vt
ZW50TG9hZGVyKCktPnN1YnN0aXR1dGVEYXRhKCkuaXNWYWxpZCgpICYmICFmcmFtZS0+bG9hZGVy
KCktPmRvY3VtZW50TG9hZGVyKCktPnN1YnN0aXR1dGVEYXRhKCkuZmFpbGluZ1VSTCgpLmlzRW1w
dHkoKSk7CiB9CiAgICAgCiBib29sIFBhZ2VDYWNoZTo6Y2FuQ2FjaGUoUGFnZSogcGFnZSkKSW5k
ZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlz
aW9uIDc1ODQyKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MzQgQEAKKzIwMTEtMDEtMTQgIEplc3NpZSBCZXJsaW4gIDxqYmVybGluQGFwcGxlLmNvbT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSRUdSRVNTSU9O
OiBBc3NlcnRpb24gZmFpbHVyZSBpbiBGcmFtZUxvYWRlcjo6Y29udGludWVMb2FkQWZ0ZXJXaWxs
U3VibWl0Rm9ybSgpIHdoZW4KKyAgICAgICAgbmF2aWdhdGluZyBiYWNrIHRvIGFuIHVucmVhY2hh
YmxlIFVSTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NTIzODgKKworICAgICAgICBBZGQgYSB0aGlyZCBwYXJhbWV0ZXIgKHVucmVhY2hhYmxlVVJMKSB0
byBxdWV1ZUxvYWRIVE1MU3RyaW5nLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvTGF5b3V0
VGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAocXVldWVMb2FkSFRNTFN0cmluZ0NhbGxiYWNr
KToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpxdWV1ZUxvYWRIVE1MU3RyaW5nKToK
KyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpxdWV1ZUxvYWRBbHRlcm5hdGVIVE1MU3Ry
aW5nKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oOgor
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvV29ya1F1ZXVlSXRlbS5oOgorICAgICAgICAoTG9h
ZEhUTUxTdHJpbmdJdGVtOjpMb2FkSFRNTFN0cmluZ0l0ZW0pOgorCisgICAgICAgICogRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV29y
a0l0ZW1Mb2FkSFRNTFN0cmluZzo6V29ya0l0ZW1Mb2FkSFRNTFN0cmluZyk6CisgICAgICAgIChX
b3JrSXRlbUxvYWRIVE1MU3RyaW5nOjpydW4pOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OnF1ZXVlTG9hZEhUTUxTdHJpbmcpOgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvZ3Rr
L1dvcmtRdWV1ZUl0ZW1HdGsuY3BwOgorICAgICAgICAoTG9hZEhUTUxTdHJpbmdJdGVtOjppbnZv
a2UpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9Xb3JrUXVldWVJdGVtTWFjLm1tOgor
ICAgICAgICAoTG9hZEhUTUxTdHJpbmdJdGVtOjppbnZva2UpOgorICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL3dpbi9Xb3JrUXVldWVJdGVtV2luLmNwcDoKKyAgICAgICAgKExvYWRIVE1MU3RyaW5n
SXRlbTo6aW52b2tlKToKKwogMjAxMS0wMS0xNCAgQnJpYW4gV2VpbnN0ZWluICA8YndlaW5zdGVp
bkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmYgR2FyZW4uCkluZGV4OiBU
b29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCShyZXZpc2lv
biA3NTgwNykKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtODU4LDggKzg1OCwxNiBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBx
dWV1ZUxvYWRIVE1MU3RyaW5nQ2FsCiAgICAgICAgIGJhc2VVUkwuYWRvcHQoSlNTdHJpbmdDcmVh
dGVXaXRoVVRGOENTdHJpbmcoIiIpKTsKIAogICAgIExheW91dFRlc3RDb250cm9sbGVyKiBjb250
cm9sbGVyID0gc3RhdGljX2Nhc3Q8TGF5b3V0VGVzdENvbnRyb2xsZXIqPihKU09iamVjdEdldFBy
aXZhdGUodGhpc09iamVjdCkpOwotICAgIGNvbnRyb2xsZXItPnF1ZXVlTG9hZEhUTUxTdHJpbmco
Y29udGVudC5nZXQoKSwgYmFzZVVSTC5nZXQoKSk7CiAKKyAgICBpZiAoYXJndW1lbnRDb3VudCA+
PSAzKSB7CisgICAgICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiB1bnJlYWNoYWJsZVVSTDsK
KyAgICAgICAgdW5yZWFjaGFibGVVUkwuYWRvcHQoSlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0
LCBhcmd1bWVudHNbMl0sIGV4Y2VwdGlvbikpOworICAgICAgICBBU1NFUlQoISpleGNlcHRpb24p
OworICAgICAgICBjb250cm9sbGVyLT5xdWV1ZUxvYWRBbHRlcm5hdGVIVE1MU3RyaW5nKGNvbnRl
bnQuZ2V0KCksIGJhc2VVUkwuZ2V0KCksIHVucmVhY2hhYmxlVVJMLmdldCgpKTsKKyAgICAgICAg
cmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworICAgIH0KKworICAgIGNvbnRy
b2xsZXItPnF1ZXVlTG9hZEhUTUxTdHJpbmcoY29udGVudC5nZXQoKSwgYmFzZVVSTC5nZXQoKSk7
CiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwogfQogCkBAIC0yMTAz
LDYgKzIxMTEsMTEgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cXVldWVMb2FkSFRNTAog
ICAgIFdvcmtRdWV1ZTo6c2hhcmVkKCktPnF1ZXVlKG5ldyBMb2FkSFRNTFN0cmluZ0l0ZW0oY29u
dGVudCwgYmFzZVVSTCkpOwogfQogCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpxdWV1ZUxv
YWRBbHRlcm5hdGVIVE1MU3RyaW5nKEpTU3RyaW5nUmVmIGNvbnRlbnQsIEpTU3RyaW5nUmVmIGJh
c2VVUkwsIEpTU3RyaW5nUmVmIHVucmVhY2hhYmxlVVJMKQoreworICAgIFdvcmtRdWV1ZTo6c2hh
cmVkKCktPnF1ZXVlKG5ldyBMb2FkSFRNTFN0cmluZ0l0ZW0oY29udGVudCwgYmFzZVVSTCwgdW5y
ZWFjaGFibGVVUkwpKTsKK30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cXVldWVCYWNr
TmF2aWdhdGlvbihpbnQgaG93RmFyQmFjaykKIHsKICAgICBXb3JrUXVldWU6OnNoYXJlZCgpLT5x
dWV1ZShuZXcgQmFja0l0ZW0oaG93RmFyQmFjaykpOwpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRy
ZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVy
VHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCShyZXZpc2lvbiA3NTgwNykKKysrIFRvb2xzL0R1
bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTc3
LDYgKzc3LDcgQEAgcHVibGljOgogICAgIHZvaWQgcXVldWVGb3J3YXJkTmF2aWdhdGlvbihpbnQg
aG93RmFyRm9yd2FyZCk7CiAgICAgdm9pZCBxdWV1ZUxvYWQoSlNTdHJpbmdSZWYgdXJsLCBKU1N0
cmluZ1JlZiB0YXJnZXQpOwogICAgIHZvaWQgcXVldWVMb2FkSFRNTFN0cmluZyhKU1N0cmluZ1Jl
ZiBjb250ZW50LCBKU1N0cmluZ1JlZiBiYXNlVVJMKTsKKyAgICB2b2lkIHF1ZXVlTG9hZEFsdGVy
bmF0ZUhUTUxTdHJpbmcoSlNTdHJpbmdSZWYgY29udGVudCwgSlNTdHJpbmdSZWYgYmFzZVVSTCwg
SlNTdHJpbmdSZWYgdW5yZWFjaGFibGVVUkwpOwogICAgIHZvaWQgcXVldWVMb2FkaW5nU2NyaXB0
KEpTU3RyaW5nUmVmIHNjcmlwdCk7CiAgICAgdm9pZCBxdWV1ZU5vbkxvYWRpbmdTY3JpcHQoSlNT
dHJpbmdSZWYgc2NyaXB0KTsKICAgICB2b2lkIHF1ZXVlUmVsb2FkKCk7CkluZGV4OiBUb29scy9E
dW1wUmVuZGVyVHJlZS9Xb3JrUXVldWVJdGVtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJl
bmRlclRyZWUvV29ya1F1ZXVlSXRlbS5oCShyZXZpc2lvbiA3NTgwNykKKysrIFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL1dvcmtRdWV1ZUl0ZW0uaAkod29ya2luZyBjb3B5KQpAQCAtNjEsMTEgKzYxLDE5
IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCisgICAgTG9hZEhUTUxTdHJpbmdJdGVtKGNvbnN0
IEpTU3RyaW5nUmVmIGNvbnRlbnQsIGNvbnN0IEpTU3RyaW5nUmVmIGJhc2VVUkwsIGNvbnN0IEpT
U3RyaW5nUmVmIHVucmVhY2hhYmxlVVJMKQorICAgICAgICA6IG1fY29udGVudChjb250ZW50KQor
ICAgICAgICAsIG1fYmFzZVVSTChiYXNlVVJMKQorICAgICAgICAsIG1fdW5yZWFjaGFibGVVUkwo
dW5yZWFjaGFibGVVUkwpCisgICAgeworICAgIH0KKwogcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJv
b2wgaW52b2tlKCkgY29uc3Q7CiAKICAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gbV9jb250
ZW50OwogICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBtX2Jhc2VVUkw7CisgICAgSlNSZXRh
aW5QdHI8SlNTdHJpbmdSZWY+IG1fdW5yZWFjaGFibGVVUkw7CiB9OwogCiBjbGFzcyBSZWxvYWRJ
dGVtIDogcHVibGljIFdvcmtRdWV1ZUl0ZW0gewpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAkocmV2aXNpb24g
NzU4MDcpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJv
bGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4NCwxNSArNDg0LDIwIEBAIHB1YmxpYzoKICAg
ICBXb3JrSXRlbUxvYWRIVE1MU3RyaW5nKGNvbnN0IHN0ZDo6c3RyaW5nJiBodG1sLCBjb25zdCBX
ZWJVUkwmIGJhc2VVUkwpCiAgICAgICAgIDogbV9odG1sKGh0bWwpCiAgICAgICAgICwgbV9iYXNl
VVJMKGJhc2VVUkwpIHt9CisgICAgV29ya0l0ZW1Mb2FkSFRNTFN0cmluZyhjb25zdCBzdGQ6OnN0
cmluZyYgaHRtbCwgY29uc3QgV2ViVVJMJiBiYXNlVVJMLCBjb25zdCBXZWJVUkwmIHVucmVhY2hh
YmxlVVJMKQorICAgICAgICA6IG1faHRtbChodG1sKQorICAgICAgICAsIG1fYmFzZVVSTChiYXNl
VVJMKQorICAgICAgICAsIG1fdW5yZWFjaGFibGVVUkwodW5yZWFjaGFibGVVUkwpIHt9CiAgICAg
Ym9vbCBydW4oVGVzdFNoZWxsKiBzaGVsbCkKICAgICB7CiAgICAgICAgIHNoZWxsLT53ZWJWaWV3
KCktPm1haW5GcmFtZSgpLT5sb2FkSFRNTFN0cmluZygKLSAgICAgICAgICAgIFdlYktpdDo6V2Vi
RGF0YShtX2h0bWwuZGF0YSgpLCBtX2h0bWwubGVuZ3RoKCkpLCBtX2Jhc2VVUkwpOworICAgICAg
ICAgICAgV2ViS2l0OjpXZWJEYXRhKG1faHRtbC5kYXRhKCksIG1faHRtbC5sZW5ndGgoKSksIG1f
YmFzZVVSTCwgbV91bnJlYWNoYWJsZVVSTCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0K
IHByaXZhdGU6CiAgICAgc3RkOjpzdHJpbmcgbV9odG1sOwogICAgIFdlYlVSTCBtX2Jhc2VVUkw7
CisgICAgV2ViVVJMIG1fdW5yZWFjaGFibGVVUkw7CiB9OwogCiB2b2lkIExheW91dFRlc3RDb250
cm9sbGVyOjpxdWV1ZUxvYWRIVE1MU3RyaW5nKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1l
bnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCkBAIC01MDIsNyArNTA3LDEwIEBAIHZvaWQgTGF5b3V0
VGVzdENvbnRyb2xsZXI6OnF1ZXVlTG9hZEhUTUwKICAgICAgICAgV2ViVVJMIGJhc2VVUkw7CiAg
ICAgICAgIGlmIChhcmd1bWVudHMuc2l6ZSgpID4gMSAmJiBhcmd1bWVudHNbMV0uaXNTdHJpbmco
KSkKICAgICAgICAgICAgIGJhc2VVUkwgPSBXZWJVUkwoR1VSTChhcmd1bWVudHNbMV0udG9TdHJp
bmcoKSkpOwotICAgICAgICBtX3dvcmtRdWV1ZS5hZGRXb3JrKG5ldyBXb3JrSXRlbUxvYWRIVE1M
U3RyaW5nKGh0bWwsIGJhc2VVUkwpKTsKKyAgICAgICAgaWYgKGFyZ3VtZW50cy5zaXplKCkgPiAy
ICYmIGFyZ3VtZW50c1syXS5pc1N0cmluZygpKQorICAgICAgICAgICAgbV93b3JrUXVldWUuYWRk
V29yayhuZXcgV29ya0l0ZW1Mb2FkSFRNTFN0cmluZyhodG1sLCBiYXNlVVJMLCBXZWJVUkwoR1VS
TChhcmd1bWVudHNbMl0udG9TdHJpbmcoKSkpKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IG1fd29ya1F1ZXVlLmFkZFdvcmsobmV3IFdvcmtJdGVtTG9hZEhUTUxTdHJpbmcoaHRtbCwgYmFz
ZVVSTCkpOwogICAgIH0KICAgICByZXN1bHQtPnNldE51bGwoKTsKIH0KSW5kZXg6IFRvb2xzL0R1
bXBSZW5kZXJUcmVlL2d0ay9Xb3JrUXVldWVJdGVtR3RrLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9EdW1wUmVuZGVyVHJlZS9ndGsvV29ya1F1ZXVlSXRlbUd0ay5jcHAJKHJldmlzaW9uIDc1ODA3
KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL1dvcmtRdWV1ZUl0ZW1HdGsuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC02MSw2ICs2MSwxMiBAQCBib29sIExvYWRIVE1MU3RyaW5nSXRlbTo6aW52
b2tlKCkgY29uc3QKIHsKICAgICBHT3duUHRyPGdjaGFyPiBjb250ZW50KEpTU3RyaW5nQ29weVVU
RjhDU3RyaW5nKG1fY29udGVudC5nZXQoKSkpOwogICAgIEdPd25QdHI8Z2NoYXI+IGJhc2VVUkwo
SlNTdHJpbmdDb3B5VVRGOENTdHJpbmcobV9iYXNlVVJMLmdldCgpKSk7CisKKyAgICBpZiAobV91
bnJlYWNoYWJsZVVSTCkgeworICAgICAgICBHT3duUHRyPGdjaGFyPiB1bnJlYWNoYWJsZVVSTChK
U1N0cmluZ0NvcHlVVEY4Q1N0cmluZyhtX3VucmVhY2hhYmxlVVJMLmdldCgpKSk7CisgICAgICAg
IHdlYmtpdF93ZWJfZnJhbWVfbG9hZF9hbHRlcm5hdGVfc3RyaW5nKG1haW5GcmFtZSwgY29udGVu
dC5nZXQoKSwgYmFzZVVSTC5nZXQoKSwgdW5yZWFjaGFibGVVUkwuZ2V0KCkpOworICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CiAgICAgd2Via2l0X3dlYl9mcmFtZV9sb2FkX3N0cmluZyhtYWlu
RnJhbWUsIGNvbnRlbnQuZ2V0KCksIDAsIDAsIGJhc2VVUkwuZ2V0KCkpOwogICAgIHJldHVybiB0
cnVlOwogfQpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1dvcmtRdWV1ZUl0ZW1NYWMu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1dvcmtRdWV1ZUl0ZW1N
YWMubW0JKHJldmlzaW9uIDc1ODA3KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1dvcmtR
dWV1ZUl0ZW1NYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTU5LDYgKzU5LDEyIEBAIGJvb2wgTG9h
ZEhUTUxTdHJpbmdJdGVtOjppbnZva2UoKSBjb25zdAogICAgIFJldGFpblB0cjxDRlN0cmluZ1Jl
Zj4gY29udGVudENGKEFkb3B0Q0YsIEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIG1fY29udGVudC5nZXQoKSkpOwogICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gYmFz
ZVVSTENGKEFkb3B0Q0YsIEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQs
IG1fYmFzZVVSTC5nZXQoKSkpOwogCisgICAgaWYgKG1fdW5yZWFjaGFibGVVUkwpIHsKKyAgICAg
ICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1bnJlYWNoYWJsZVVSTENGKEFkb3B0Q0YsIEpTU3Ry
aW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIG1fdW5yZWFjaGFibGVVUkwuZ2V0
KCkpKTsKKyAgICAgICAgW21haW5GcmFtZSBsb2FkQWx0ZXJuYXRlSFRNTFN0cmluZzooTlNTdHJp
bmcgKiljb250ZW50Q0YuZ2V0KCkgYmFzZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzooTlNTdHJp
bmcgKiliYXNlVVJMQ0YuZ2V0KCldIGZvclVucmVhY2hhYmxlVVJMOltOU1VSTCBVUkxXaXRoU3Ry
aW5nOihOU1N0cmluZyAqKXVucmVhY2hhYmxlVVJMQ0YuZ2V0KCldXTsKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgfQorCiAgICAgW21haW5GcmFtZSBsb2FkSFRNTFN0cmluZzooTlNTdHJpbmcg
Kiljb250ZW50Q0YuZ2V0KCkgYmFzZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzooTlNTdHJpbmcg
KiliYXNlVVJMQ0YuZ2V0KCldXTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KSW5kZXg6IFRvb2xzL0R1
bXBSZW5kZXJUcmVlL3dpbi9Xb3JrUXVldWVJdGVtV2luLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9EdW1wUmVuZGVyVHJlZS93aW4vV29ya1F1ZXVlSXRlbVdpbi5jcHAJKHJldmlzaW9uIDc1ODA3
KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1dvcmtRdWV1ZUl0ZW1XaW4uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC04OSw2ICs4OSwxNiBAQCBib29sIExvYWRIVE1MU3RyaW5nSXRlbTo6aW52
b2tlKCkgY29uc3QKICAgICBCU1RSIGNvbnRlbnRCU1RSID0gU3lzQWxsb2NTdHJpbmcoY29udGVu
dC5jX3N0cigpKTsKICAgICBCU1RSIGJhc2VVUkxCU1RSID0gU3lzQWxsb2NTdHJpbmcoYmFzZVVS
TC5jX3N0cigpKTsKIAorICAgIGlmIChtX3VucmVhY2hhYmxlVVJMKSB7CisgICAgICAgIHdzdHJp
bmcgdW5yZWFjaGFibGVVUkwgPSBqc1N0cmluZ1JlZlRvV1N0cmluZyhtX3VucmVhY2hhYmxlVVJM
LmdldCgpKTsKKyAgICAgICAgQlNUUiB1bnJlYWNoYWJsZVVSTEJTVFIgPSBTeXNBbGxvY1N0cmlu
Zyh1bnJlYWNoYWJsZVVSTC5jX3N0cigpKTsKKyAgICAgICAgZnJhbWUtPmxvYWRBbHRlcm5hdGVI
VE1MU3RyaW5nKGNvbnRlbnRCU1RSLCBiYXNlVVJMQlNUUiwgdW5yZWFjaGFibGVVUkxCU1RSKTsK
KyAgICAgICAgU3lzRnJlZVN0cmluZyhjb250ZW50QlNUUik7CisgICAgICAgIFN5c0ZyZWVTdHJp
bmcoYmFzZVVSTEJTVFIpOworICAgICAgICBTeXNGcmVlU3RyaW5nKHVucmVhY2hhYmxlVVJMQlNU
Uik7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKwogICAgIGZyYW1lLT5sb2FkSFRNTFN0
cmluZyhjb250ZW50QlNUUiwgYmFzZVVSTEJTVFIpOwogCiAgICAgU3lzRnJlZVN0cmluZyhjb250
ZW50QlNUUik7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA3NTg0MikKKysrIExheW91dFRlc3RzL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDExLTAxLTE0ICBKZXNzaWUg
QmVybGluICA8amJlcmxpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgUkVHUkVTU0lPTjogQXNzZXJ0aW9uIGZhaWx1cmUgaW4gRnJh
bWVMb2FkZXI6OmNvbnRpbnVlTG9hZEFmdGVyV2lsbFN1Ym1pdEZvcm0oKSB3aGVuCisgICAgICAg
IG5hdmlnYXRpbmcgYmFjayB0byBhbiB1bnJlYWNoYWJsZSBVUkwKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUyMzg4CisKKyAgICAgICAgQWRkIGEgdGVz
dCB0aGF0IGxvYWRzIGFuIGFsdGVybmF0ZSBIVE1MIFN0cmluZyBmb3IgYW4gInVucmVhY2hhYmxl
IiBVUkwsIGxvYWRzIGFub3RoZXIKKyAgICAgICAgcGFnZSwgYW5kIHRoZW4gZ29lcyBiYWNrIHRv
IHRoZSAidW5yZWFjaGFibGUiIFVSTCwgd2hpY2ggaXMgbm93IHJlYWNoYWJsZS4KKworICAgICAg
ICBUaGlzIHRlc3RzIHR3byB0aGluZ3M6CisgICAgICAgIDEpIE5vIGFzc2VydGlvbiBmYWlsdXJl
IHdoZW4gZ29pbmcgYmFjayB0byBhbiB1bnJlYWNoYWJsZSBVUkwuCisgICAgICAgIDIpIFRoZXJl
IGlzIG5vIHBhZ2UgY2FjaGVkIGZvciB0aGUgdW5yZWFjaGFibGUgVVJMLgorCisgICAgICAgICog
aHR0cC90ZXN0cy9uYXZpZ2F0aW9uL2dvLWJhY2stdG8tZXJyb3ItcGFnZS1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvbmF2aWdhdGlvbi9nby1iYWNrLXRvLWVycm9y
LXBhZ2UuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3Jlc291
cmNlcy9wYWdlLXRvLWdvLWJhY2stZnJvbS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rl
c3RzL25hdmlnYXRpb24vcmVzb3VyY2VzL3BhZ2UtdHJlYXRlZC1hcy11bnJlYWNoYWJsZS5odG1s
OiBBZGRlZC4KKwogMjAxMS0wMS0xNCAgTWFjaWVqIFN0YWNob3dpYWsgIDxtanNAYXBwbGUuY29t
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFuZGVycyBDYXJsc3Nvbi4KSW5kZXg6IExheW91dFRl
c3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9nby1iYWNrLXRvLWVycm9yLXBhZ2UtZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9nby1i
YWNrLXRvLWVycm9yLXBhZ2UtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL2dvLWJhY2stdG8tZXJyb3ItcGFnZS1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEgQEAKK1BBU1M6IEdvaW5nIGJhY2sgdG8gYSBwYWdl
IHRoYXQgd2FzIHByZXZpb3VzbHkgdHJlYXRlZCBhcyB1bnJlYWNoYWJsZSBsb2FkcyB0aGUgYWN0
dWFsIHBhZ2UuCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vZ28tYmFj
ay10by1lcnJvci1wYWdlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9uYXZpZ2F0aW9uL2dvLWJhY2stdG8tZXJyb3ItcGFnZS5odG1sCShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL2dvLWJhY2stdG8tZXJyb3ItcGFnZS5o
dG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE0IEBACis8c2NyaXB0PgoraWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRl
UHJlZmVyZW5jZSgiV2ViS2l0VXNlc1BhZ2VDYWNoZVByZWZlcmVuY2VLZXkiLCAxKTsKKyAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIucXVldWVMb2FkSFRNTFN0cmluZygiPHNjcmlwdD5kb2N1bWVudC53cml0ZSgnPGRpdiBpZD1y
ZXN1bHQ+RkFJTDogVGhlIGFsdGVybmF0ZSBIVE1MIHN0cmluZyB3YXMgY2FjaGVkLCBidXQgc2hv
dWxkIG5vdCBoYXZlIGJlZW4gY2FjaGVkIGZvciBhbiBlcnJvciBwYWdlPC9kaXY+Jyk7PFwvc2Ny
aXB0PiIsICJyZXNvdXJjZXMiLCAiaHR0cDovLzEyNy4wLjAuMTo4MDAwL25hdmlnYXRpb24vcmVz
b3VyY2VzL3BhZ2UtdHJlYXRlZC1hcy11bnJlYWNoYWJsZS5odG1sIik7CisgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIucXVldWVMb2FkKCJyZXNvdXJjZXMvcGFnZS10by1nby1iYWNrLWZyb20uaHRt
bCIpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLnF1ZXVlQmFja05hdmlnYXRpb24oMSk7Cit9
IGVsc2UKKyAgICBkb2N1bWVudC53cml0ZSgnVGhpcyB0ZXN0IG11c3QgYmUgcnVuIGJ5IER1bXBS
ZW5kZXJUcmVlIScpCis8L3NjcmlwdD4KKworPHA+VGhpcyB0ZXN0cyB0aGF0IGdvaW5nIGJhY2sg
dG8gYW4gZXJyb3IgcGFnZSAoYW4gdW5yZWFjaGFibGUgVVJMIGZvciB3aGljaCB0aGVyZSBpcyBz
dWJzdGl0dXRlCitkYXRhKSBkb2VzIG5vdCBjYXVzZSBhbiBhc3NlcnRpb24gZmFpbHVyZS48L3A+
CisKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9yZXNvdXJjZXMvcGFn
ZS10by1nby1iYWNrLWZyb20uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL25hdmlnYXRpb24vcmVzb3VyY2VzL3BhZ2UtdG8tZ28tYmFjay1mcm9tLmh0bWwJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vcmVzb3VyY2VzL3Bh
Z2UtdG8tZ28tYmFjay1mcm9tLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOCBAQAorPGh0
bWw+CisgIDxoZWFkPgorICAgIDx0aXRsZT5BIHBhZ2UgdGhhdCBjYW4gYmUgbmF2aWdhdGVkIGJh
Y2sgZnJvbTwvdGl0bGU+CisgIDwvaGVhZD4KKyAgPGJvZHk+CisgICAgPHA+VGhpcyBpcyBhIHBh
Z2UgdGhhdCBjYW4gYmUgbmF2aWdhdGVkIGJhY2sgZnJvbS48L3A+CisgIDwvYm9keT4KKzwvaHRt
bD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9yZXNvdXJjZXMvcGFn
ZS10cmVhdGVkLWFzLXVucmVhY2hhYmxlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3Jlc291cmNlcy9wYWdlLXRyZWF0ZWQtYXMtdW5yZWFjaGFi
bGUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlv
bi9yZXNvdXJjZXMvcGFnZS10cmVhdGVkLWFzLXVucmVhY2hhYmxlLmh0bWwJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsOCBAQAorPGh0bWw+CisgIDxoZWFkPgorICAgIDx0aXRsZT5UaGlzIHBhZ2Ug
d2lsbCBiZSBpbml0aWFsbHkgdHJlYXRlZCBhcyB1bnJlYWNoYWJsZTwvdGl0bGU+CisgIDwvaGVh
ZD4KKyAgPGJvZHk+CisgICAgPHA+UEFTUzogR29pbmcgYmFjayB0byBhIHBhZ2UgdGhhdCB3YXMg
cHJldmlvdXNseSB0cmVhdGVkIGFzIHVucmVhY2hhYmxlIGxvYWRzIHRoZSBhY3R1YWwgcGFnZS48
L3A+CisgIDwvYm9keT4KKzwvaHRtbD4K
</data>
<flag name="review"
          id="70425"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>