<?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>111135</bug_id>
          
          <creation_ts>2013-02-28 19:04:07 -0800</creation_ts>
          <short_desc>Threaded HTML Parser has an extra copy of every byte from the network</short_desc>
          <delta_ts>2013-03-13 14:31:48 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>106127</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Eric Seidel (no email)">eric</assigned_to>
          <cc>abarth</cc>
    
    <cc>benjamin</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>hausmann</cc>
    
    <cc>japhet</cc>
    
    <cc>jbriance</cc>
    
    <cc>jturcotte</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>ossy</cc>
    
    <cc>tonyg</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>844715</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-02-28 19:04:07 -0800</bug_when>
    <thetext>Threaded HTML Parser has an extra copy of every byte from the network</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844718</commentid>
    <comment_count>1</comment_count>
      <attachid>190868</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-02-28 19:09:52 -0800</bug_when>
    <thetext>Created attachment 190868
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844738</commentid>
    <comment_count>2</comment_count>
      <attachid>190871</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-02-28 19:44:20 -0800</bug_when>
    <thetext>Created attachment 190871
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844739</commentid>
    <comment_count>3</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-02-28 19:46:13 -0800</bug_when>
    <thetext>Can&apos;t change setDocument to use insert() as the XML parser doesn&apos;t implement insert.  I added a FIXME instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844748</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-02-28 20:06:00 -0800</bug_when>
    <thetext>Oh, bad news batman.

crash log for DumpRenderTree (pid 9217):
STDOUT: &lt;empty&gt;
STDERR: ASSERTION FAILED: inputSource-&gt;hasOneRef()
STDERR: ../../Source/WebCore/html/parser/HTMLDocumentParser.cpp(659) : virtual void WebCore::HTMLDocumentParser::append(PassRefPtr&lt;WTF::StringImpl&gt;)
STDERR: 1   0x19a0701 WebCore::HTMLDocumentParser::append(WTF::PassRefPtr&lt;WTF::StringImpl&gt;)
STDERR: 2   0x33d8a3f WebCore::Document::setContent(WTF::String const&amp;)
STDERR: 3   0x3322140 WebCore::XSLTProcessor::createDocumentFromSource(WTF::String const&amp;, WTF::String const&amp;, WTF::String const&amp;, WebCore::Node*, WebCore::Frame*)
STDERR: 4   0x33e8da6 WebCore::Document::applyXSLTransform(WebCore::ProcessingInstruction*)
STDERR: 5   0x348bcc5 WebCore::DocumentStyleSheetCollection::collectActiveStyleSheets(WTF::Vector&lt;WTF::RefPtr&lt;WebCore::StyleSheet&gt;, 0ul&gt;&amp;)
STDERR: 6   0x348c7a2 WebCore::DocumentStyleSheetCollection::updateActiveStyleSheets(WebCore::DocumentStyleSheetCollection::UpdateFlag)
STDERR: 7   0x33d8090 WebCore::Document::styleResolverChanged(WebCore::StyleResolverUpdateFlag)
STDERR: 8   0x33e1155 WebCore::Document::didRemoveAllPendingStylesheet()
STDERR: 9   0x348b8ae WebCore::DocumentStyleSheetCollection::removePendingSheet(WebCore::DocumentStyleSheetCollection::RemovePendingSheetNotificationType)
STDERR: 10  0x3586712 WebCore::ProcessingInstruction::sheetLoaded()
STDERR: 11  0x331eb32 WebCore::XSLStyleSheet::checkLoaded()
STDERR: 12  0x3586ca9 WebCore::ProcessingInstruction::parseStyleSheet(WTF::String const&amp;)
STDERR: 13  0x3586e5c WebCore::ProcessingInstruction::setXSLStyleSheet(WTF::String const&amp;, WebCore::KURL const&amp;, WTF::String const&amp;)
STDERR: 14  0x3586edb non-virtual thunk to WebCore::ProcessingInstruction::setXSLStyleSheet(WTF::String const&amp;, WebCore::KURL const&amp;, WTF::String const&amp;)
STDERR: 15  0x30b11c4 WebCore::CachedXSLStyleSheet::checkNotify()
STDERR: 16  0x30b10c3 WebCore::CachedXSLStyleSheet::data(WTF::PassRefPtr&lt;WebCore::ResourceBuffer&gt;, bool)
STDERR: 17  0x303956a WebCore::SubresourceLoader::didFinishLoading(double)
STDERR: 18  0x30321af WebCore::ResourceLoader::didFinishLoading(WebCore::ResourceHandle*, double)
STDERR: 19  0x241726a WebCore::ResourceHandleInternal::didFinishLoading(WebKit::WebURLLoader*, double)


This means we have bugs in our XSLTProcessor... that append() call could yield, meaning the end() call directly following it would come before all of the data is processed.  I guess that just means we just drop the rest of the document on the floor. :(

I guess this means I need to implement XMLDocumentParser::insert() and use that instead, but somehow guard against it ever being used from document.write() too.  I don&apos;t really want to create a new method for this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844750</commentid>
    <comment_count>5</comment_count>
      <attachid>190871</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-02-28 20:11:59 -0800</bug_when>
    <thetext>Comment on attachment 190871
Patch

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

&gt; Source/WTF/ChangeLog:14
&gt; +        The threaded html parser needs to accept ownership
&gt; +        of a string buffer.  The easiest way to do this seemed
&gt; +        to be to use a PassRefPtr&lt;StringImpl&gt;, but there was no way
&gt; +        to generated one from a String (easily), so I added one.
&gt; +
&gt; +        * wtf/text/WTFString.h:
&gt; +        (WTF::String::releaseImpl):

Thus spreading the bad stuffs from RefPtr :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844780</commentid>
    <comment_count>6</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-02-28 21:07:42 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 190871 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=190871&amp;action=review
&gt; 
&gt; &gt; Source/WTF/ChangeLog:14
&gt; &gt; +        The threaded html parser needs to accept ownership
&gt; &gt; +        of a string buffer.  The easiest way to do this seemed
&gt; &gt; +        to be to use a PassRefPtr&lt;StringImpl&gt;, but there was no way
&gt; &gt; +        to generated one from a String (easily), so I added one.
&gt; &gt; +
&gt; &gt; +        * wtf/text/WTFString.h:
&gt; &gt; +        (WTF::String::releaseImpl):
&gt; 
&gt; Thus spreading the bad stuffs from RefPtr :(

I&apos;m open to other suggestions.  I originally considered using (String&amp;) and String::swap() to steal out the ref, but that seemed more hacky.

Alternatively I coud have a PassOwnPtr wrapper around an object which contained a String.  Thats effectively what bind() is doing for us before passing it to the background thread.

Or, I could change this API to take a Vector&lt;UChar&gt;, but that seems nasty.

I&apos;m assuming of course that the &quot;bad stuffs&quot; from RefPtr you mean is the ref-counted nature of strings which makes this x-thread communication extra tricky to get right.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844786</commentid>
    <comment_count>7</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-02-28 21:17:35 -0800</bug_when>
    <thetext>Why is XSLT using an HTML parser?

Document::setContent should probably pin the parser to the main thread.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844787</commentid>
    <comment_count>8</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-02-28 21:18:33 -0800</bug_when>
    <thetext>&gt; Thus spreading the bad stuffs from RefPtr :(

What are the bad stuffs?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844792</commentid>
    <comment_count>9</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-02-28 21:29:10 -0800</bug_when>
    <thetext>&gt; I&apos;m open to other suggestions.  I originally considered using (String&amp;) and String::swap() to steal out the ref, but that seemed more hacky.

I don&apos;t know anything about the threading involved here so I don&apos;t have any solution to suggest. :(

I am just sad the message passing is not cleaner.

&gt; Alternatively I coud have a PassOwnPtr wrapper around an object which contained a String.  Thats effectively what bind() is doing for us before passing it to the background thread.
&gt; 
&gt; Or, I could change this API to take a Vector&lt;UChar&gt;, but that seems nasty.
&gt; 
&gt; I&apos;m assuming of course that the &quot;bad stuffs&quot; from RefPtr you mean is the ref-counted nature of strings which makes this x-thread communication extra tricky to get right.

I think a PassOwnPtr on a wrapper make sense regarding the ownership. As long as you don&apos;t leak the string impl, you avoid threading issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844818</commentid>
    <comment_count>10</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-02-28 22:13:55 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; Why is XSLT using an HTML parser?
&gt; 
&gt; Document::setContent should probably pin the parser to the main thread.

Yeah, that&apos;s fine.  It just masks the bug here, but that&apos;s OK I guess.  I believe the bug just involves dropping the rest of the document on the floor.  If you use XSLT to produce a large html document (or one with &lt;script&gt; tags) I suspect we drop everything after the &lt;script&gt; on the floor.

XSLT uses the HTML parser (or whatever parser) to parse the result of the XSLT transform.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844821</commentid>
    <comment_count>11</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-02-28 22:16:30 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; &gt; I&apos;m open to other suggestions.  I originally considered using (String&amp;) and String::swap() to steal out the ref, but that seemed more hacky.
&gt; 
&gt; I don&apos;t know anything about the threading involved here so I don&apos;t have any solution to suggest. :(
&gt; 
&gt; I am just sad the message passing is not cleaner.

The model is that DocumentParser::append() wants to take ownership of the string so it can pass it to the parser thread.  It only really cares in the threaded-parser case, but because it&apos;s a generic interface on DocumentParser, requires all callers to append() to be aware that append() expects to take ownership.

&gt; &gt; Alternatively I coud have a PassOwnPtr wrapper around an object which contained a String.  Thats effectively what bind() is doing for us before passing it to the background thread.
&gt; &gt; 
&gt; &gt; Or, I could change this API to take a Vector&lt;UChar&gt;, but that seems nasty.
&gt; &gt; 
&gt; &gt; I&apos;m assuming of course that the &quot;bad stuffs&quot; from RefPtr you mean is the ref-counted nature of strings which makes this x-thread communication extra tricky to get right.
&gt; 
&gt; I think a PassOwnPtr on a wrapper make sense regarding the ownership. As long as you don&apos;t leak the string impl, you avoid threading issues.

struct ParseRequest {
    String source;
};

DocumentParser::append(PassOwnPtr&lt;ParseRequest&gt;)

would be one way to do this, yes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844822</commentid>
    <comment_count>12</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-02-28 22:17:27 -0800</bug_when>
    <thetext>Or even I guess PassOwnPtr&lt;String&gt;. :)  Since they&apos;re equivalent.

PassOwnPtr&lt;StringImpl&gt; seems like a bad idea, but all of these options seem bad. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844824</commentid>
    <comment_count>13</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-02-28 22:18:56 -0800</bug_when>
    <thetext>I think I&apos;ll try changing it to PassOwnPtr&lt;String&gt; and see how ugly that looks. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844826</commentid>
    <comment_count>14</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-02-28 22:20:34 -0800</bug_when>
    <thetext>&gt; Yeah, that&apos;s fine.  It just masks the bug here, but that&apos;s OK I guess.  I believe the bug just involves dropping the rest of the document on the floor.  If you use XSLT to produce a large html document (or one with &lt;script&gt; tags) I suspect we drop everything after the &lt;script&gt; on the floor.

Why would we drop the rest of the document on the floor?  This seems just like what happens when the network delivers data in one big packet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844830</commentid>
    <comment_count>15</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-02-28 22:25:17 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; &gt; Yeah, that&apos;s fine.  It just masks the bug here, but that&apos;s OK I guess.  I believe the bug just involves dropping the rest of the document on the floor.  If you use XSLT to produce a large html document (or one with &lt;script&gt; tags) I suspect we drop everything after the &lt;script&gt; on the floor.
&gt; 
&gt; Why would we drop the rest of the document on the floor?  This seems just like what happens when the network delivers data in one big packet.

You&apos;re right.  I for whatever reason mis-remembered Document::setContent as calling DocumentParser::end() directly, it calls Document::close() which does a finish and does a forced-syncrhonous parse which will get the rest of the doc.

So it doesn&apos;t matter that append yields in this case.  I can just pin the parser and this ASSERT will go away.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844835</commentid>
    <comment_count>16</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-02-28 22:33:01 -0800</bug_when>
    <thetext>&gt; struct ParseRequest {
&gt;     String source;
&gt; };

This is not really what I meant.

(In reply to comment #13)
&gt; I think I&apos;ll try changing it to PassOwnPtr&lt;String&gt; and see how ugly that looks. :)

I don&apos;t think that is any better.

What I mean is there is no ownership passing semantic on RefPtr.
I may simply be too obsessive about clean threading semantic.

Or maybe I am completely missing the point.
Let&apos;s say a decoder keep a reference to that String. Wouldn&apos;t this break the code? If it does, I think the object returned should instead be one with pure ownership (even if it is just a lame wrapper).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844839</commentid>
    <comment_count>17</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-02-28 22:39:51 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; &gt; struct ParseRequest {
&gt; &gt;     String source;
&gt; &gt; };
&gt; 
&gt; This is not really what I meant.
&gt; 
&gt; (In reply to comment #13)
&gt; &gt; I think I&apos;ll try changing it to PassOwnPtr&lt;String&gt; and see how ugly that looks. :)
&gt; 
&gt; I don&apos;t think that is any better.

OK.  Then I&apos;ll keep it with PassRefPtr&lt;StringImpl&gt; for now.

&gt; What I mean is there is no ownership passing semantic on RefPtr.
&gt; I may simply be too obsessive about clean threading semantic.

There isn&apos;t really a threading semantic here.  Clients of DocumentParser don&apos;t care that it&apos;s going to pass the string across the thread.  But HTMLDocumentParser does care (when in threading mode) that the string passed in is completely owned by it.  HTMLDocumentParser doesn&apos;t want to deal with ref-counted Strings, but that&apos;s what we have in WebCore. :)

PassRefPtr&lt;StringImpl&gt; doesn&apos;t really have the meaning that I want, but it seemed closer than String&amp; at least. :)

&gt; Or maybe I am completely missing the point.
&gt; Let&apos;s say a decoder keep a reference to that String. Wouldn&apos;t this break the code? If it does, I think the object returned should instead be one with pure ownership (even if it is just a lame wrapper).

Yes.  If something kept a reference, that would break things.  That&apos;s why it ASSERTs.  I mean, it could even disable threading mode in that case as a fall-back, but ideally this would take a PassOwnPtr&lt;Vector&lt;UChar&gt;&gt; to fully convey the &quot;I&apos;m going to take ownership of this buffer, dammit&quot; meaning.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>845299</commentid>
    <comment_count>18</comment_count>
      <attachid>190986</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-03-01 10:44:58 -0800</bug_when>
    <thetext>Created attachment 190986
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>845399</commentid>
    <comment_count>19</comment_count>
      <attachid>190986</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-03-01 12:24:47 -0800</bug_when>
    <thetext>Comment on attachment 190986
Patch

I understand benjaminp&apos;s concerns, but I think we should still move forward with this patch.  It&apos;s true that we&apos;re creating a tighter coupling between the HTML parser and the charset decoder, but I don&apos;t see a way around that with our current string mechanism.  (The ASSERT helps us maintain the invariant, so we should be well-covered w.r.t. testing.)

In the long term, we should think about how to make it easier to write multithreaded code that uses strings in WebCore.  The current String class is really difficult to use on multiple threads correctly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>845475</commentid>
    <comment_count>20</comment_count>
      <attachid>190986</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-01 13:55:25 -0800</bug_when>
    <thetext>Comment on attachment 190986
Patch

Clearing flags on attachment: 190986

Committed r144498: &lt;http://trac.webkit.org/changeset/144498&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>845476</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-01 13:55:29 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>846004</commentid>
    <comment_count>22</comment_count>
    <who name="Julien Brianceau">jbriance</who>
    <bug_when>2013-03-03 04:24:38 -0800</bug_when>
    <thetext>This patch breaks our sh4 Qt/WebKit1 build slave:
http://build.webkit.org/builders/Qt%20Linux%20SH4%20Release/builds/21351</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>846019</commentid>
    <comment_count>23</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-03-03 08:39:14 -0800</bug_when>
    <thetext>/local/wkit/slavebuildbot_LOCAL/workspace_LOCAL/qt-linux-sh4-release/build/Source/WebCore/xml/parser/XMLDocumentParserQt.cpp: In member function &apos;void WebCore::XMLDocumentParser::resumeParsing()&apos;:
/local/wkit/slavebuildbot_LOCAL/workspace_LOCAL/qt-linux-sh4-release/build/Source/WebCore/xml/parser/XMLDocumentParserQt.cpp:265:16: error: no matching function for call to &apos;WebCore::XMLDocumentParser::append(WebCore::SegmentedString&amp;)&apos;
/local/wkit/slavebuildbot_LOCAL/workspace_LOCAL/qt-linux-sh4-release/build/Source/WebCore/xml/parser/XMLDocumentParserQt.cpp:265:16: note: candidate is:
/local/wkit/slavebuildbot_LOCAL/workspace_LOCAL/qt-linux-sh4-release/build/Source/WebCore/xml/parser/XMLDocumentParser.h:110:22: note: virtual void WebCore::XMLDocumentParser::append(WTF::PassRefPtr&lt;WTF::StringImpl&gt;)
/local/wkit/slavebuildbot_LOCAL/workspace_LOCAL/qt-linux-sh4-release/build/Source/WebCore/xml/parser/XMLDocumentParser.h:110:22: note:   no known conversion for argument 1 from &apos;WebCore::SegmentedString&apos; to &apos;WTF::PassRefPtr&lt;WTF::StringImpl&gt;&apos;
/local/wkit/slavebuildbot_LOCAL/workspace_LOCAL/qt-linux-sh4-release/build/Source/WebCore/xml/parser/XMLDocumentParserQt.cpp: In member function &apos;bool WebCore::XMLDocumentParser::appendFragmentSource(const WTF::String&amp;)&apos;:
/local/wkit/slavebuildbot_LOCAL/workspace_LOCAL/qt-linux-sh4-release/build/Source/WebCore/xml/parser/XMLDocumentParserQt.cpp:276:46: error: no matching function for call to &apos;WebCore::XMLDocumentParser::append(WTF::String)&apos;
/local/wkit/slavebuildbot_LOCAL/workspace_LOCAL/qt-linux-sh4-release/build/Source/WebCore/xml/parser/XMLDocumentParserQt.cpp:276:46: note: candidate is:
/local/wkit/slavebuildbot_LOCAL/workspace_LOCAL/qt-linux-sh4-release/build/Source/WebCore/xml/parser/XMLDocumentParser.h:110:22: note: virtual void WebCore::XMLDocumentParser::append(WTF::PassRefPtr&lt;WTF::StringImpl&gt;)
/local/wkit/slavebuildbot_LOCAL/workspace_LOCAL/qt-linux-sh4-release/build/Source/WebCore/xml/parser/XMLDocumentParser.h:110:22: note:   no known conversion for argument 1 from &apos;WTF::String&apos; to &apos;WTF::PassRefPtr&lt;WTF::StringImpl&gt;&apos;
/local/wkit/slavebuildbot_LOCAL/workspace_LOCAL/qt-linux-sh4-release/build/Source/WebCore/xml/parser/XMLDocumentParserQt.cpp:277:18: error: no matching function for call to &apos;WebCore::XMLDocumentParser::append(const WTF::String&amp;)&apos;
/local/wkit/slavebuildbot_LOCAL/workspace_LOCAL/qt-linux-sh4-release/build/Source/WebCore/xml/parser/XMLDocumentParserQt.cpp:277:18: note: candidate is:
/local/wkit/slavebuildbot_LOCAL/workspace_LOCAL/qt-linux-sh4-release/build/Source/WebCore/xml/parser/XMLDocumentParser.h:110:22: note: virtual void WebCore::XMLDocumentParser::append(WTF::PassRefPtr&lt;WTF::StringImpl&gt;)
/local/wkit/slavebuildbot_LOCAL/workspace_LOCAL/qt-linux-sh4-release/build/Source/WebCore/xml/parser/XMLDocumentParser.h:110:22: note:   no known conversion for argument 1 from &apos;const WTF::String&apos; to &apos;WTF::PassRefPtr&lt;WTF::StringImpl&gt;&apos;
/local/wkit/slavebuildbot_LOCAL/workspace_LOCAL/qt-linux-sh4-release/build/Source/WebCore/xml/parser/XMLDocumentParserQt.cpp:278:47: error: no matching function for call to &apos;WebCore::XMLDocumentParser::append(WTF::String)&apos;
/local/wkit/slavebuildbot_LOCAL/workspace_LOCAL/qt-linux-sh4-release/build/Source/WebCore/xml/parser/XMLDocumentParserQt.cpp:278:47: note: candidate is:
/local/wkit/slavebuildbot_LOCAL/workspace_LOCAL/qt-linux-sh4-release/build/Source/WebCore/xml/parser/XMLDocumentParser.h:110:22: note: virtual void WebCore::XMLDocumentParser::append(WTF::PassRefPtr&lt;WTF::StringImpl&gt;)
/local/wkit/slavebuildbot_LOCAL/workspace_LOCAL/qt-linux-sh4-release/build/Source/WebCore/xml/parser/XMLDocumentParser.h:110:22: note:   no known conversion for argument 1 from &apos;WTF::String&apos; to &apos;WTF::PassRefPtr&lt;WTF::StringImpl&gt;&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>846026</commentid>
    <comment_count>24</comment_count>
    <who name="Julien Brianceau">jbriance</who>
    <bug_when>2013-03-03 09:33:12 -0800</bug_when>
    <thetext>(In reply to comment #23)
&gt; /local/wkit/slavebuildbot_LOCAL/workspace_LOCAL/qt-linux-sh4-release/build/Source/WebCore/xml/parser/XMLDocumentParserQt.cpp: In member function &apos;void WebCore::XMLDocumentParser::resumeParsing()&apos;:
&gt; /local/wkit/slavebuildbot_LOCAL/workspace_LOCAL/qt-linux-sh4-release/build/Source/WebCore/xml/parser/XMLDocumentParserQt.cpp:265:16: error: no matching function for call to &apos;WebCore::XMLDocumentParser::append(WebCore::SegmentedString&amp;)&apos;
&gt; /local/wkit/slavebuildbot_LOCAL/workspace_LOCAL/qt-linux-sh4-release/build/Source/WebCore/xml/parser/XMLDocumentParserQt.cpp:265:16: note: candidate is:
&gt; /local/wkit/slavebuildbot_LOCAL/workspace_LOCAL/qt-linux-sh4-release/build/Source/WebCore/xml/parser/XMLDocumentParser.h:110:22: note: virtual void WebCore::XMLDocumentParser::append(WTF::PassRefPtr&lt;WTF::StringImpl&gt;)
&gt; /local/wkit/slavebuildbot_LOCAL/workspace_LOCAL/qt-linux-sh4-release/build/Source/WebCore/xml/parser/XMLDocumentParser.h:110:22: note:   no known conversion for argument 1 from &apos;WebCore::SegmentedString&apos; to &apos;WTF::PassRefPtr&lt;WTF::StringImpl&gt;&apos;
For this error, I think we can do the same as in XMLDocumentParserLibxml2.cpp:
-    append(rest);
+    append(rest.toString().impl());


&gt; /local/wkit/slavebuildbot_LOCAL/workspace_LOCAL/qt-linux-sh4-release/build/Source/WebCore/xml/parser/XMLDocumentParserQt.cpp: In member function &apos;bool WebCore::XMLDocumentParser::appendFragmentSource(const WTF::String&amp;)&apos;:
&gt; /local/wkit/slavebuildbot_LOCAL/workspace_LOCAL/qt-linux-sh4-release/build/Source/WebCore/xml/parser/XMLDocumentParserQt.cpp:276:46: error: no matching function for call to &apos;WebCore::XMLDocumentParser::append(WTF::String)&apos;
&gt; /local/wkit/slavebuildbot_LOCAL/workspace_LOCAL/qt-linux-sh4-release/build/Source/WebCore/xml/parser/XMLDocumentParserQt.cpp:276:46: note: candidate is:
&gt; /local/wkit/slavebuildbot_LOCAL/workspace_LOCAL/qt-linux-sh4-release/build/Source/WebCore/xml/parser/XMLDocumentParser.h:110:22: note: virtual void WebCore::XMLDocumentParser::append(WTF::PassRefPtr&lt;WTF::StringImpl&gt;)
&gt; /local/wkit/slavebuildbot_LOCAL/workspace_LOCAL/qt-linux-sh4-release/build/Source/WebCore/xml/parser/XMLDocumentParser.h:110:22: note:   no known conversion for argument 1 from &apos;WTF::String&apos; to &apos;WTF::PassRefPtr&lt;WTF::StringImpl&gt;&apos;
&gt; /local/wkit/slavebuildbot_LOCAL/workspace_LOCAL/qt-linux-sh4-release/build/Source/WebCore/xml/parser/XMLDocumentParserQt.cpp:277:18: error: no matching function for call to &apos;WebCore::XMLDocumentParser::append(const WTF::String&amp;)&apos;
&gt; /local/wkit/slavebuildbot_LOCAL/workspace_LOCAL/qt-linux-sh4-release/build/Source/WebCore/xml/parser/XMLDocumentParserQt.cpp:277:18: note: candidate is:
&gt; /local/wkit/slavebuildbot_LOCAL/workspace_LOCAL/qt-linux-sh4-release/build/Source/WebCore/xml/parser/XMLDocumentParser.h:110:22: note: virtual void WebCore::XMLDocumentParser::append(WTF::PassRefPtr&lt;WTF::StringImpl&gt;)
&gt; /local/wkit/slavebuildbot_LOCAL/workspace_LOCAL/qt-linux-sh4-release/build/Source/WebCore/xml/parser/XMLDocumentParser.h:110:22: note:   no known conversion for argument 1 from &apos;const WTF::String&apos; to &apos;WTF::PassRefPtr&lt;WTF::StringImpl&gt;&apos;
&gt; /local/wkit/slavebuildbot_LOCAL/workspace_LOCAL/qt-linux-sh4-release/build/Source/WebCore/xml/parser/XMLDocumentParserQt.cpp:278:47: error: no matching function for call to &apos;WebCore::XMLDocumentParser::append(WTF::String)&apos;
&gt; /local/wkit/slavebuildbot_LOCAL/workspace_LOCAL/qt-linux-sh4-release/build/Source/WebCore/xml/parser/XMLDocumentParserQt.cpp:278:47: note: candidate is:
&gt; /local/wkit/slavebuildbot_LOCAL/workspace_LOCAL/qt-linux-sh4-release/build/Source/WebCore/xml/parser/XMLDocumentParser.h:110:22: note: virtual void WebCore::XMLDocumentParser::append(WTF::PassRefPtr&lt;WTF::StringImpl&gt;)
&gt; /local/wkit/slavebuildbot_LOCAL/workspace_LOCAL/qt-linux-sh4-release/build/Source/WebCore/xml/parser/XMLDocumentParser.h:110:22: note:   no known conversion for argument 1 from &apos;WTF::String&apos; to &apos;WTF::PassRefPtr&lt;WTF::StringImpl&gt;&apos;
For these 3 errors, I think this should builds, but I&apos;m not sure that it&apos;s actually a good thing:
-    append(String(&quot;&lt;qxmlstreamdummyelement&gt;&quot;));
-    append(source);
-    append(String(&quot;&lt;/qxmlstreamdummyelement&gt;&quot;));
+    append(String(&quot;&lt;qxmlstreamdummyelement&gt;&quot;).impl());
+    append(source.impl());
+    append(String(&quot;&lt;/qxmlstreamdummyelement&gt;&quot;).impl());</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>846033</commentid>
    <comment_count>25</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-03-03 10:15:13 -0800</bug_when>
    <thetext>Posting a patch now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>846034</commentid>
    <comment_count>26</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-03-03 10:16:15 -0800</bug_when>
    <thetext>Why was is the Qt bubble above green if this patch breaks the qt build?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>846038</commentid>
    <comment_count>27</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-03-03 10:25:37 -0800</bug_when>
    <thetext>Attempted build fix in https://bugs.webkit.org/show_bug.cgi?id=111272</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>846058</commentid>
    <comment_count>28</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2013-03-03 13:06:25 -0800</bug_when>
    <thetext>(In reply to comment #26)
&gt; Why was is the Qt bubble above green if this patch breaks the qt build?

Because Qt has only one EWS which uses USE(libxml) codepath, but
unfortunataly Qt SH4 and Qt Windows don&apos;t have EWS bots and they
don&apos;t use libxml.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>846128</commentid>
    <comment_count>29</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-03-03 17:40:23 -0800</bug_when>
    <thetext>I would like to see the qtxml code path removed at some point. :). I know I approved the patches long ago, but I now think that was a mistake. The XML parser is tricky to get right once, and I think having two parser implementations is mostly a source of compile errors and security bugs these days. :)

Thank you both for the build fix!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>846146</commentid>
    <comment_count>30</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2013-03-03 21:44:19 -0800</bug_when>
    <thetext>(In reply to comment #29)
&gt; I would like to see the qtxml code path removed at some point. :). I know I approved the patches long ago, but I now think that was a mistake. The XML parser is tricky to get right once, and I think having two parser implementations is mostly a source of compile errors and security bugs these days. :)
&gt; 
&gt; Thank you both for the build fix!

cc Qt maintainers</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>847456</commentid>
    <comment_count>31</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-03-05 02:00:32 -0800</bug_when>
    <thetext>*** Bug 107332 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854215</commentid>
    <comment_count>32</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2013-03-13 05:17:37 -0700</bug_when>
    <thetext>(In reply to comment #30)
&gt; (In reply to comment #29)
&gt; &gt; I would like to see the qtxml code path removed at some point. :). I know I approved the patches long ago, but I now think that was a mistake. The XML parser is tricky to get right once, and I think having two parser implementations is mostly a source of compile errors and security bugs these days. :)
&gt; &gt; 
&gt; &gt; Thank you both for the build fix!
&gt; 
&gt; cc Qt maintainers

Thanks Ossy for the Cc.

I think Eric has a fair point and I&apos;m inclined to agree.

Do you envision that the project would require libxml at all times or do you think that it makes sense to also support a build without libxml (and thus XHTML) support?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854483</commentid>
    <comment_count>33</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-03-13 12:33:18 -0700</bug_when>
    <thetext>(In reply to comment #32)
&gt; (In reply to comment #30)
&gt; &gt; (In reply to comment #29)
&gt; &gt; &gt; I would like to see the qtxml code path removed at some point. :). I know I approved the patches long ago, but I now think that was a mistake. The XML parser is tricky to get right once, and I think having two parser implementations is mostly a source of compile errors and security bugs these days. :)
&gt; &gt; &gt; 
&gt; &gt; &gt; Thank you both for the build fix!
&gt; &gt; 
&gt; &gt; cc Qt maintainers
&gt; 
&gt; Thanks Ossy for the Cc.
&gt; 
&gt; I think Eric has a fair point and I&apos;m inclined to agree.
&gt; 
&gt; Do you envision that the project would require libxml at all times or do you think that it makes sense to also support a build without libxml (and thus XHTML) support?

libxml seems very prevalent to me.  Either we should use something better for all of WebKit, or we should fix libxml to be more awesome.

It&apos;s probably more common to see xml content served to XMLHttpRequest than it is to run across a truly XHTML page.  I don&apos;t believe it is possible to use the web w/o some XML support, sadly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854634</commentid>
    <comment_count>34</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2013-03-13 14:31:48 -0700</bug_when>
    <thetext>(In reply to comment #33)
[...] 
&gt; &gt; I think Eric has a fair point and I&apos;m inclined to agree.
&gt; &gt; 
&gt; &gt; Do you envision that the project would require libxml at all times or do you think that it makes sense to also support a build without libxml (and thus XHTML) support?
&gt; 
&gt; libxml seems very prevalent to me.  Either we should use something better for all of WebKit, or we should fix libxml to be more awesome.
&gt; 
&gt; It&apos;s probably more common to see xml content served to XMLHttpRequest than it is to run across a truly XHTML page.  I don&apos;t believe it is possible to use the web w/o some XML support, sadly.

Oh, excellent point. Yeah that makes a build without libxml useless.

I&apos;ll bring it up in the Qt community.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>190868</attachid>
            <date>2013-02-28 19:09:52 -0800</date>
            <delta_ts>2013-02-28 19:44:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-111135-20130228190610.patch</filename>
            <type>text/plain</type>
            <size>16128</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0MzY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDc1NjkxNjBlNzdhM2E5MGQ2MTYxMjFj
NmFiMzUwNmNlYjlhOGYzZWMuLjMyZmNjNmYzMTJmZGZlMDNjYjVjZGQzMDJjMTYzNmNhM2I2NWRm
YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTMtMDItMjggIEVyaWMgU2VpZGVsICA8ZXJpY0B3
ZWJraXQub3JnPgorCisgICAgICAgIFRocmVhZGVkIEhUTUwgUGFyc2VyIGhhcyBhbiBleHRyYSBj
b3B5IG9mIGV2ZXJ5IGJ5dGUgZnJvbSB0aGUgbmV0d29yaworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTExMTM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIHRocmVhZGVkIGh0bWwgcGFyc2VyIG5lZWRz
IHRvIGFjY2VwdCBvd25lcnNoaXAKKyAgICAgICAgb2YgYSBzdHJpbmcgYnVmZmVyLiAgVGhlIGVh
c2llc3Qgd2F5IHRvIGRvIHRoaXMgc2VlbWVkCisgICAgICAgIHRvIGJlIHRvIHVzZSBhIFBhc3NS
ZWZQdHI8U3RyaW5nSW1wbD4sIGJ1dCB0aGVyZSB3YXMgbm8gd2F5CisgICAgICAgIHRvIGdlbmVy
YXRlZCBvbmUgZnJvbSBhIFN0cmluZyAoZWFzaWx5KSwgc28gSSBhZGRlZCBvbmUuCisKKyAgICAg
ICAgKiB3dGYvdGV4dC9XVEZTdHJpbmcuaDoKKyAgICAgICAgKFdURjo6U3RyaW5nOjpyZWxlYXNl
SW1wbCk6CisKIDIwMTMtMDItMjggIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KIAog
ICAgICAgICBDcmFzaCBpbiBKU0M6Ok1hcmtlZEJsb2NrOjpGcmVlTGlzdCBKU0M6Ok1hcmtlZEJs
b2NrOjpzd2VlcEhlbHBlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGU1YzcxYzA2ZjdlZmQyOGMwZjQxMWU3M2Zk
OGVjMmM5ODMxZDBhMGQuLjY5Zjg4OGRiMTY5YmNkY2NjNDJjYTRhMDcyYjkzZjkwMmNkZDU3MWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MCBAQAorMjAxMy0wMi0yOCAgRXJpYyBTZWlkZWwgIDxl
cmljQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVGhyZWFkZWQgSFRNTCBQYXJzZXIgaGFzIGFuIGV4
dHJhIGNvcHkgb2YgZXZlcnkgYnl0ZSBmcm9tIHRoZSBuZXR3b3JrCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTExMzUKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFdmVyeSBMYXlvdXRUZXN0IGV4ZWN1dGVz
IHRoaXMgY29kZSBpbiB0aHJlYWRlZCBwYXJzaW5nIG1vZGUuCisKKyAgICAgICAgKiBkb20vRGVj
b2RlZERhdGFEb2N1bWVudFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEZWNvZGVkRGF0
YURvY3VtZW50UGFyc2VyOjphcHBlbmRCeXRlcyk6CisgICAgICAgICAtIFBhc3Mgb3duZXJzaGlw
IG9mIHRoZSBkZWNvZGVkIHN0cmluZyB0byB0aGUgcGFyc2VyLgorICAgICAgICAoV2ViQ29yZTo6
RGVjb2RlZERhdGFEb2N1bWVudFBhcnNlcjo6Zmx1c2gpOgorICAgICAgICAgLSBTYW1lLgorICAg
ICAgICAqIGRvbS9EZWNvZGVkRGF0YURvY3VtZW50UGFyc2VyLmg6CisgICAgICAgIChEZWNvZGVk
RGF0YURvY3VtZW50UGFyc2VyKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNldENvbnRlbnQpOgorICAgICAgICAgLSBVc2luZyBpbnNl
cnQgaW5zdGVhZCBvZiBhcHBlbmQgaGVyZSBzaW5jZSB3ZSBuZXZlciB3YW50IHRoaXMgdG8gYmUg
YXluYy4KKyAgICAgICAgKiBkb20vRG9jdW1lbnRQYXJzZXIuaDoKKyAgICAgICAgKERvY3VtZW50
UGFyc2VyKToKKyAgICAgICAgKiBkb20vUmF3RGF0YURvY3VtZW50UGFyc2VyLmg6CisgICAgICAg
IChXZWJDb3JlOjpSYXdEYXRhRG9jdW1lbnRQYXJzZXI6OmFwcGVuZCk6CisgICAgICAgICogaHRt
bC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHA6CisgICAgICAgIChGVFBEaXJlY3RvcnlEb2N1bWVu
dFBhcnNlcik6CisgICAgICAgIChXZWJDb3JlOjpGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6
YXBwZW5kKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50UGFyc2VyOjphcHBlbmQpOgorICAgICAgICAq
IGh0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5oOgorICAgICAgICAoSFRNTERvY3VtZW50
UGFyc2VyKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MVmlld1NvdXJjZVBhcnNlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlld1NvdXJjZVBhcnNlcjo6YXBwZW5kKToKKyAgICAg
ICAgKiBodG1sL3BhcnNlci9IVE1MVmlld1NvdXJjZVBhcnNlci5oOgorICAgICAgICAoSFRNTFZp
ZXdTb3VyY2VQYXJzZXIpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL1RleHREb2N1bWVudFBhcnNl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RG9jdW1lbnRQYXJzZXI6OmFwcGVuZCk6Cisg
ICAgICAgICogaHRtbC9wYXJzZXIvVGV4dERvY3VtZW50UGFyc2VyLmg6CisgICAgICAgIChUZXh0
RG9jdW1lbnRQYXJzZXIpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFdyaXRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFdyaXRlcjo6cmVwbGFjZURvY3VtZW50KToKKyAgICAg
ICAgKiB4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlhNTERvY3VtZW50UGFyc2VyOjphcHBlbmQpOgorICAgICAgICAqIHhtbC9wYXJzZXIvWE1MRG9j
dW1lbnRQYXJzZXIuaDoKKyAgICAgICAgKFhNTERvY3VtZW50UGFyc2VyKToKKyAgICAgICAgKiB4
bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpYTUxEb2N1bWVudFBhcnNlcjo6cmVzdW1lUGFyc2luZyk6CisKIDIwMTMtMDItMjggIFJ5b3N1
a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2ZXJ0IGFuIGVycm9uZW91
cyBjaGFuZ2UgaW4gcjE0NDMzNi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RG
U3RyaW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCmluZGV4IDViZDNkYjI5
NTlhOGQzMjdiYWU2NzFlYjNmNGIxYzI3YzdmNzhhOTcuLjljYTZmNTczM2YzMGM3ZDc3MWJlOTE1
NGIxNTM0OWNmOGFhZGZlN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3Ry
aW5nLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaApAQCAtMTY3LDYgKzE2
Nyw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhbV9pbXBs
IHx8ICFtX2ltcGwtPmxlbmd0aCgpOyB9CiAKICAgICBTdHJpbmdJbXBsKiBpbXBsKCkgY29uc3Qg
eyByZXR1cm4gbV9pbXBsLmdldCgpOyB9CisgICAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiByZWxl
YXNlSW1wbCgpIHsgcmV0dXJuIG1faW1wbC5yZWxlYXNlKCk7IH0KIAogICAgIHVuc2lnbmVkIGxl
bmd0aCgpIGNvbnN0CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RlY29k
ZWREYXRhRG9jdW1lbnRQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RlY29kZWREYXRh
RG9jdW1lbnRQYXJzZXIuY3BwCmluZGV4IDFmMTM3NTU2MzA5OTEzZDkxOWRhYTQ3M2RhNTI1NWIw
OTg1NTU1M2YuLjE4M2E0YTY0MjY3MmEyNWE0ODQxN2M4ODkzZDZmOWJlMmJhMTVlNTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EZWNvZGVkRGF0YURvY3VtZW50UGFyc2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGVjb2RlZERhdGFEb2N1bWVudFBhcnNlci5jcHAKQEAg
LTQ3LDcgKzQ3LDcgQEAgdm9pZCBEZWNvZGVkRGF0YURvY3VtZW50UGFyc2VyOjphcHBlbmRCeXRl
cyhEb2N1bWVudFdyaXRlciogd3JpdGVyLCBjb25zdCBjaGFyKgogICAgICAgICByZXR1cm47CiAK
ICAgICB3cml0ZXItPnJlcG9ydERhdGFSZWNlaXZlZCgpOwotICAgIGFwcGVuZChkZWNvZGVkKTsK
KyAgICBhcHBlbmQoZGVjb2RlZC5yZWxlYXNlSW1wbCgpKTsKIH0KIAogdm9pZCBEZWNvZGVkRGF0
YURvY3VtZW50UGFyc2VyOjpmbHVzaChEb2N1bWVudFdyaXRlciogd3JpdGVyKQpAQCAtNTcsNyAr
NTcsNyBAQCB2b2lkIERlY29kZWREYXRhRG9jdW1lbnRQYXJzZXI6OmZsdXNoKERvY3VtZW50V3Jp
dGVyKiB3cml0ZXIpCiAgICAgICAgIHJldHVybjsKIAogICAgIHdyaXRlci0+cmVwb3J0RGF0YVJl
Y2VpdmVkKCk7Ci0gICAgYXBwZW5kKHJlbWFpbmluZ0RhdGEpOworICAgIGFwcGVuZChyZW1haW5p
bmdEYXRhLnJlbGVhc2VJbXBsKCkpOwogfQogCiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0RlY29kZWREYXRhRG9jdW1lbnRQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
ZWNvZGVkRGF0YURvY3VtZW50UGFyc2VyLmgKaW5kZXggNDc0N2E0YTEzNmUzYmQ1MjFkZmI2NjU2
ZmM2MjE0MDI5MTAzZDYzOS4uYWNmNDc3ZmJiMmE5NTM0YjRlYTk0NmEwMDQxOWJlMzRiMTMwYzc0
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RlY29kZWREYXRhRG9jdW1lbnRQYXJz
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGVjb2RlZERhdGFEb2N1bWVudFBhcnNlci5o
CkBAIC00MSw3ICs0MSw3IEBAIHByb3RlY3RlZDoKIAogcHJpdmF0ZToKICAgICAvLyBhcHBlbmQg
aXMgdXNlZCBieSBEb2N1bWVudFdyaXRlcjo6cmVwbGFjZURvY3VtZW50LgotICAgIHZpcnR1YWwg
dm9pZCBhcHBlbmQoY29uc3QgU2VnbWVudGVkU3RyaW5nJikgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBhcHBlbmQoUGFzc1JlZlB0cjxTdHJpbmdJbXBsPikgPSAwOwogCiAgICAgLy8gYXBwZW5kQnl0
ZXMgYW5kIGZsdXNoIGFyZSB1c2VkIGJ5IERvY3VtZW50V3JpdGVyICh0aGUgbG9hZGVyKS4KICAg
ICB2aXJ0dWFsIHZvaWQgYXBwZW5kQnl0ZXMoRG9jdW1lbnRXcml0ZXIqLCBjb25zdCBjaGFyKiBi
eXRlcywgc2l6ZV90IGxlbmd0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCAyYzVkZjY3
MzJhNWMzMGRkYzkyMTZlMjljZTFhMDFjMDRkY2ZmYTFlLi43ZTE3ZWQ4YjQ3NDZkOTM2YWE4N2Zm
YWJiMzVhNTJhZGExNzMxZTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTEzNTgsNyAr
MTM1OCw3IEBAIEtVUkwgRG9jdW1lbnQ6OmJhc2VVUkkoKSBjb25zdAogdm9pZCBEb2N1bWVudDo6
c2V0Q29udGVudChjb25zdCBTdHJpbmcmIGNvbnRlbnQpCiB7CiAgICAgb3BlbigpOwotICAgIG1f
cGFyc2VyLT5hcHBlbmQoY29udGVudCk7CisgICAgbV9wYXJzZXItPmluc2VydChjb250ZW50KTsK
ICAgICBjbG9zZSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnRQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFBhcnNlci5oCmluZGV4IGFh
ZjExYjJmNTk4YzM4NjhlNjQ5YTM0MzVmZDQxOGI3MDg4NWU1YzYuLmY5YjRkMjY3NjJkOWMyYzcw
NDlhNjY5Y2E3NTYxNWY4MTAyMjE1ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudFBhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFBhcnNlci5o
CkBAIC0yNCw2ICsyNCw3IEBACiAjaWZuZGVmIERvY3VtZW50UGFyc2VyX2gKICNkZWZpbmUgRG9j
dW1lbnRQYXJzZXJfaAogCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01MSw5ICs1Miw4IEBAIHB1
YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBwaW5Ub01haW5UaHJlYWQoKSB7IH0KIAotICAgIC8v
IEZJWE1FOiBhcHBlbmQoKSBzaG91bGQgYmUgcHJpdmF0ZSwgYnV0IERvY3VtZW50V3JpdGVyOjpy
ZXBsYWNlRG9jdW1lbnQKLSAgICAvLyB1c2VzIGl0IGZvciBub3cuCi0gICAgdmlydHVhbCB2b2lk
IGFwcGVuZChjb25zdCBTZWdtZW50ZWRTdHJpbmcmKSA9IDA7CisgICAgLy8gRklYTUU6IGFwcGVu
ZCgpIHNob3VsZCBiZSBwcml2YXRlLCBidXQgRG9jdW1lbnRXcml0ZXI6OnJlcGxhY2VEb2N1bWVu
dCB1c2VzIGl0IGZvciBub3cuCisgICAgdmlydHVhbCB2b2lkIGFwcGVuZChQYXNzUmVmUHRyPFN0
cmluZ0ltcGw+KSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoKCkgPSAwOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUmF3RGF0YURvY3VtZW50UGFyc2VyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vUmF3RGF0YURvY3VtZW50UGFyc2VyLmgKaW5kZXggOGJmOTUxY2RhYjIz
ODQ2NjI5NjdhNWUyMDhkMDA3MTEwMmY2YzFmNC4uMjI4ZTk0YmQ3NWZkNmZiOTAyOTBmODhkYjky
NmI2OTc4ZThmNzI3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Jhd0RhdGFEb2N1
bWVudFBhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SYXdEYXRhRG9jdW1lbnRQYXJz
ZXIuaApAQCAtNTYsNyArNTYsNyBAQCBwcml2YXRlOgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kKGNvbnN0IFNlZ21lbnRlZFN0
cmluZyYpCisgICAgdmlydHVhbCB2b2lkIGFwcGVuZChQYXNzUmVmUHRyPFN0cmluZ0ltcGw+KQog
ICAgIHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcAppbmRleCBjMTc2MjJhMjEwMmVmZjNh
NjYzM2ViNjc3YjQ3MjRhOTI5ZjU5NWY4Li44NzhmZmI5M2JkMWMxMjc4NzFiMmM4YWUwYmEzZDJi
YzE5NDg0MDJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURv
Y3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50
LmNwcApAQCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgRlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXIoZG9jdW1lbnQpKTsKICAgICB9CiAKLSAgICB2
aXJ0dWFsIHZvaWQgYXBwZW5kKGNvbnN0IFNlZ21lbnRlZFN0cmluZyYpOworICAgIHZpcnR1YWwg
dm9pZCBhcHBlbmQoUGFzc1JlZlB0cjxTdHJpbmdJbXBsPik7CiAgICAgdmlydHVhbCB2b2lkIGZp
bmlzaCgpOwogCiAgICAgdmlydHVhbCBib29sIGlzV2FpdGluZ0ZvclNjcmlwdHMoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQpAQCAtMzQ2LDggKzM0NiwxMCBAQCB2b2lkIEZUUERpcmVjdG9yeURv
Y3VtZW50UGFyc2VyOjpjcmVhdGVCYXNpY0RvY3VtZW50KCkKICAgICBib2R5RWxlbWVudC0+YXBw
ZW5kQ2hpbGQobV90YWJsZUVsZW1lbnQsIElHTk9SRV9FWENFUFRJT04pOwogfQogCi12b2lkIEZU
UERpcmVjdG9yeURvY3VtZW50UGFyc2VyOjphcHBlbmQoY29uc3QgU2VnbWVudGVkU3RyaW5nJiBz
b3VyY2UpCit2b2lkIEZUUERpcmVjdG9yeURvY3VtZW50UGFyc2VyOjphcHBlbmQoUGFzc1JlZlB0
cjxTdHJpbmdJbXBsPiBpbnB1dFNvdXJjZSkKIHsKKyAgICBTdHJpbmcgc291cmNlKGlucHV0U291
cmNlKTsKKwogICAgIC8vIE1ha2Ugc3VyZSB3ZSBoYXZlIHRoZSB0YWJsZSBlbGVtZW50IHRvIGFw
cGVuZCB0byBieSBsb2FkaW5nIHRoZSB0ZW1wbGF0ZSBzZXQgaW4gdGhlIHByZWYsIG9yCiAgICAg
Ly8gY3JlYXRpbmcgYSB2ZXJ5IGJhc2ljIGRvY3VtZW50IHdpdGggdGhlIGFwcHJvcHJpYXRlIHRh
YmxlCiAgICAgaWYgKCFtX3RhYmxlRWxlbWVudCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKaW5kZXggYmQ0OGUzZTY3N2EzMmNhZDZi
ZmFlNzFiMmVkYjBhY2ZhOGM0YzQyMC4uMWIwMTYyNmE5ZTE5NzI2NDg3ZTlmZmE2NmIwZmIwZTNk
MjhmODE5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3Vt
ZW50UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1l
bnRQYXJzZXIuY3BwCkBAIC02NDYsNyArNjQ2LDcgQEAgdm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6
OnN0b3BCYWNrZ3JvdW5kUGFyc2VyKCkKIAogI2VuZGlmCiAKLXZvaWQgSFRNTERvY3VtZW50UGFy
c2VyOjphcHBlbmQoY29uc3QgU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UpCit2b2lkIEhUTUxEb2N1
bWVudFBhcnNlcjo6YXBwZW5kKFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gaW5wdXRTb3VyY2UpCiB7
CiAgICAgaWYgKGlzU3RvcHBlZCgpKQogICAgICAgICByZXR1cm47CkBAIC02NTYsOCArNjU2LDEy
IEBAIHZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjphcHBlbmQoY29uc3QgU2VnbWVudGVkU3RyaW5n
JiBzb3VyY2UpCiAgICAgICAgIGlmICghbV9oYXZlQmFja2dyb3VuZFBhcnNlcikKICAgICAgICAg
ICAgIHN0YXJ0QmFja2dyb3VuZFBhcnNlcigpOwogCi0gICAgICAgIEhUTUxQYXJzZXJUaHJlYWQ6
OnNoYXJlZCgpLT5wb3N0VGFzayhiaW5kKAotICAgICAgICAgICAgJkJhY2tncm91bmRIVE1MUGFy
c2VyOjphcHBlbmQsIG1fYmFja2dyb3VuZFBhcnNlciwgc291cmNlLnRvU3RyaW5nKCkuaXNvbGF0
ZWRDb3B5KCkpKTsKKyAgICAgICAgQVNTRVJUKGlucHV0U291cmNlLT5oYXNPbmVSZWYoKSk7Cisg
ICAgICAgIENsb3N1cmUgY2xvc3VyZSA9IGJpbmQoJkJhY2tncm91bmRIVE1MUGFyc2VyOjphcHBl
bmQsIG1fYmFja2dyb3VuZFBhcnNlciwgU3RyaW5nKGlucHV0U291cmNlKSk7CisgICAgICAgIC8v
IE5PVEU6IEltcG9ydGFudCB0aGF0IHRoZSBTdHJpbmcgdGVtcG9yYXJ5IGlzIGRlc3Ryb3llZCBi
ZWZvcmUgd2UgcG9zdCB0aGUgdGFzaworICAgICAgICAvLyBvdGhlcndpc2UgdGhlIFN0cmluZyBj
b3VsZCBjYWxsIGRlcmVmKCkgb24gYSBTdHJpbmdJbXBsIG5vdyBvd25lZCBieSB0aGUgYmFja2dy
b3VuZCBwYXJzZXIuCisgICAgICAgIC8vIFdlIHdvdWxkIGxpa2UgdG8gQVNTRVJUKGNsb3N1cmUu
YXJnMygpLT5oYXNPbmVSZWYoKSkgYnV0IHNhZGx5IHRoZSBhcmdzIGFyZSBwcml2YXRlLgorICAg
ICAgICBIVE1MUGFyc2VyVGhyZWFkOjpzaGFyZWQoKS0+cG9zdFRhc2soY2xvc3VyZSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYKQEAgLTY2NSw2ICs2NjksNyBAQCB2b2lkIEhUTUxE
b2N1bWVudFBhcnNlcjo6YXBwZW5kKGNvbnN0IFNlZ21lbnRlZFN0cmluZyYgc291cmNlKQogICAg
IC8vIHB1bXBUb2tlbml6ZXIgY2FuIGNhdXNlIHRoaXMgcGFyc2VyIHRvIGJlIGRldGFjaGVkIGZy
b20gdGhlIERvY3VtZW50LAogICAgIC8vIGJ1dCB3ZSBuZWVkIHRvIGVuc3VyZSBpdCBpc24ndCBk
ZWxldGVkIHlldC4KICAgICBSZWZQdHI8SFRNTERvY3VtZW50UGFyc2VyPiBwcm90ZWN0KHRoaXMp
OworICAgIFN0cmluZyBzb3VyY2UoaW5wdXRTb3VyY2UpOwogCiAgICAgaWYgKG1fcHJlbG9hZFNj
YW5uZXIpIHsKICAgICAgICAgaWYgKG1faW5wdXQuY3VycmVudCgpLmlzRW1wdHkoKSAmJiAhaXNX
YWl0aW5nRm9yU2NyaXB0cygpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hU
TUxEb2N1bWVudFBhcnNlci5oCmluZGV4IDFiYmY3NzFjYjgxNDVmNjc5ZjEwY2IxZmU0NTZiMzIw
NmI3ZmFmY2UuLjg5MTU0NmRhYjBlZmMxNTlmOTViNWEwZjhhMjc3MzAwZjc1ZDRkNTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5oCkBAIC05
Nyw3ICs5Nyw3IEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBpbnNl
cnQoY29uc3QgU2VnbWVudGVkU3RyaW5nJikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGFw
cGVuZChjb25zdCBTZWdtZW50ZWRTdHJpbmcmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQg
YXBwZW5kKFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4pIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9p
ZCBmaW5pc2goKSBPVkVSUklERTsKIAogICAgIEhUTUxEb2N1bWVudFBhcnNlcihIVE1MRG9jdW1l
bnQqLCBib29sIHJlcG9ydEVycm9ycyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MVmlld1NvdXJjZVBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9IVE1MVmlld1NvdXJjZVBhcnNlci5jcHAKaW5kZXggZjAxOWMyZTkwNjY0NDBlNGM4ZmM1
OTNjYmUyOGM5NmJlMjdiYjIzNi4uZmU4YzMzODkzZWVlYTQ3ZDJlNzI2ODQ1NzQwYzNiMmY4MDcw
NzhlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFZpZXdTb3Vy
Y2VQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxWaWV3U291
cmNlUGFyc2VyLmNwcApAQCAtNjIsOSArNjIsOSBAQCB2b2lkIEhUTUxWaWV3U291cmNlUGFyc2Vy
OjpwdW1wVG9rZW5pemVyKCkKICAgICB9CiB9CiAKLXZvaWQgSFRNTFZpZXdTb3VyY2VQYXJzZXI6
OmFwcGVuZChjb25zdCBTZWdtZW50ZWRTdHJpbmcmIGlucHV0KQordm9pZCBIVE1MVmlld1NvdXJj
ZVBhcnNlcjo6YXBwZW5kKFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gaW5wdXQpCiB7Ci0gICAgbV9p
bnB1dC5hcHBlbmRUb0VuZChpbnB1dCk7CisgICAgbV9pbnB1dC5hcHBlbmRUb0VuZChTdHJpbmco
aW5wdXQpKTsKICAgICBwdW1wVG9rZW5pemVyKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxWaWV3U291cmNlUGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MVmlld1NvdXJjZVBhcnNlci5oCmluZGV4IDY2MmJlNzJhZTIwNjc2
MzU2ZjFlM2Q1YmY4MmVkYzFmZGUwNzMxZmIuLjQwYzA2NGI4YjYzNTlmZTBmOGVmOGNhNjRhNzE2
MTZlYzdkODUyNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxW
aWV3U291cmNlUGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFZp
ZXdTb3VyY2VQYXJzZXIuaApAQCAtNTksNyArNTksNyBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgog
ICAgIC8vIERvY3VtZW50UGFyc2VyCiAgICAgdmlydHVhbCB2b2lkIGluc2VydChjb25zdCBTZWdt
ZW50ZWRTdHJpbmcmKTsKLSAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kKGNvbnN0IFNlZ21lbnRlZFN0
cmluZyYpOworICAgIHZpcnR1YWwgdm9pZCBhcHBlbmQoUGFzc1JlZlB0cjxTdHJpbmdJbXBsPik7
CiAgICAgdmlydHVhbCB2b2lkIGZpbmlzaCgpOwogCiAgICAgSFRNTFZpZXdTb3VyY2VEb2N1bWVu
dCogZG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxIVE1MVmlld1NvdXJjZURv
Y3VtZW50Kj4oRGVjb2RlZERhdGFEb2N1bWVudFBhcnNlcjo6ZG9jdW1lbnQoKSk7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1RleHREb2N1bWVudFBhcnNlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9UZXh0RG9jdW1lbnRQYXJzZXIuY3BwCmluZGV4
IDM5MWZjYWMwZWMzNWM2NmNlMDU4ZWI4MmE0ODE5MmJmNmNlMmM3MDcuLjgwZGI0YTlkYzA1YmE0
MzU4ODFlNTZjYTMwMWJlZDA0ODgzNWI1MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL1RleHREb2N1bWVudFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvVGV4dERvY3VtZW50UGFyc2VyLmNwcApAQCAtNDQsNyArNDQsNyBAQCBUZXh0RG9j
dW1lbnRQYXJzZXI6On5UZXh0RG9jdW1lbnRQYXJzZXIoKQogewogfQogCi12b2lkIFRleHREb2N1
bWVudFBhcnNlcjo6YXBwZW5kKGNvbnN0IFNlZ21lbnRlZFN0cmluZyYgdGV4dCkKK3ZvaWQgVGV4
dERvY3VtZW50UGFyc2VyOjphcHBlbmQoUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiB0ZXh0KQogewog
ICAgIGlmICghbV9oYXZlSW5zZXJ0ZWRGYWtlUHJlRWxlbWVudCkKICAgICAgICAgaW5zZXJ0RmFr
ZVByZUVsZW1lbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1Rl
eHREb2N1bWVudFBhcnNlci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvVGV4dERvY3Vt
ZW50UGFyc2VyLmgKaW5kZXggMWNjY2M1YjBmMjdkZmRjZTYwM2M0MzA3N2Q4MjBiYjgxOWY2YTZi
Mi4uOTVlNTEyOTMxNWQ5MzZhYWU3MDI3MjllZTMwMTNlM2Q4MDI0YWUxYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvVGV4dERvY3VtZW50UGFyc2VyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvVGV4dERvY3VtZW50UGFyc2VyLmgKQEAgLTQxLDcgKzQx
LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBleHBsaWNpdCBUZXh0RG9jdW1lbnRQYXJzZXIo
SFRNTERvY3VtZW50Kik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kKGNvbnN0IFNlZ21lbnRl
ZFN0cmluZyYpOworICAgIHZpcnR1YWwgdm9pZCBhcHBlbmQoUGFzc1JlZlB0cjxTdHJpbmdJbXBs
Pik7CiAgICAgdm9pZCBpbnNlcnRGYWtlUHJlRWxlbWVudCgpOwogCiAgICAgYm9vbCBtX2hhdmVJ
bnNlcnRlZEZha2VQcmVFbGVtZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0RvY3VtZW50V3JpdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRl
ci5jcHAKaW5kZXggYWRhNTE5YWViYmYwYjA1OTQyZjBmMjY5NGQxMThjZWU3NmJjOTUyZS4uMDNi
NTc0OWY4Y2Y2NGY0MDdjZDQwZDQ4M2RiM2I1YWZmYTM1MmVhMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRXcml0ZXIuY3BwCkBAIC04MCw3ICs4MCw5IEBAIHZvaWQgRG9jdW1lbnRX
cml0ZXI6OnJlcGxhY2VEb2N1bWVudChjb25zdCBTdHJpbmcmIHNvdXJjZSwgRG9jdW1lbnQqIG93
bmVyRG9jdW1lCiAgICAgICAgIC8vIHRvIHN1cHBvcnQgUmF3RGF0YURvY3VtZW50UGFyc2Vycy4K
ICAgICAgICAgaWYgKERvY3VtZW50UGFyc2VyKiBwYXJzZXIgPSBtX2ZyYW1lLT5kb2N1bWVudCgp
LT5wYXJzZXIoKSkgewogICAgICAgICAgICAgcGFyc2VyLT5waW5Ub01haW5UaHJlYWQoKTsKLSAg
ICAgICAgICAgIHBhcnNlci0+YXBwZW5kKHNvdXJjZSk7CisgICAgICAgICAgICAvLyBCZWNhdXNl
IHdlJ3JlIHBpbm5lZCB0byB0aGUgbWFpbiB0aHJlYWQgd2UgZG9uJ3QgbmVlZCB0byB3b3JyeSBh
Ym91dAorICAgICAgICAgICAgLy8gcGFzc2luZyBvd25lcnNoaXAgb2YgdGhlIHNvdXJjZSBzdHJp
bmcuCisgICAgICAgICAgICBwYXJzZXItPmFwcGVuZChzb3VyY2UuaW1wbCgpKTsKICAgICAgICAg
fQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1
bWVudFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFy
c2VyLmNwcAppbmRleCA0ZTEzNTBlMzQ2MzhlODgwYjg3Yzc1ZDZmN2YyMTQ1NmVhNWY4YjdjLi45
ZTk1YTU0ODUwYzJlMWU0M2EzNWZjNWU5MTUwZTFkM2RkNmIzZDFmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcApAQCAtMTEyLDggKzExMiw5
IEBAIHZvaWQgWE1MRG9jdW1lbnRQYXJzZXI6Omluc2VydChjb25zdCBTZWdtZW50ZWRTdHJpbmcm
KQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIFhNTERvY3VtZW50UGFyc2Vy
OjphcHBlbmQoY29uc3QgU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UpCit2b2lkIFhNTERvY3VtZW50
UGFyc2VyOjphcHBlbmQoUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBpbnB1dFNvdXJjZSkKIHsKKyAg
ICBTZWdtZW50ZWRTdHJpbmcgc291cmNlKGlucHV0U291cmNlKTsKICAgICBpZiAobV9zYXdYU0xU
cmFuc2Zvcm0gfHwgIW1fc2F3Rmlyc3RFbGVtZW50KQogICAgICAgICBtX29yaWdpbmFsU291cmNl
Rm9yVHJhbnNmb3JtLmFwcGVuZChzb3VyY2UpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFy
c2VyL1hNTERvY3VtZW50UGFyc2VyLmgKaW5kZXggYzVjZjVmNjcxYzAyNzBiMzNlNDhhNmY2ZTVi
MWZhZTE3YWIwNDI5ZC4uM2Q3MjgwYzU2NTlhNmM0NjY5YmQxZGNkNmJhZjEyMWNlNDZiNTgxZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuaApAQCAt
MTA3LDcgKzEwNyw3IEBAIGNsYXNzIFRleHQ7CiAKICAgICAgICAgLy8gRnJvbSBEb2N1bWVudFBh
cnNlcgogICAgICAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0KGNvbnN0IFNlZ21lbnRlZFN0cmluZyYp
OwotICAgICAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kKGNvbnN0IFNlZ21lbnRlZFN0cmluZyYpOwor
ICAgICAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kKFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4pOwogICAg
ICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoKCk7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1dhaXRp
bmdGb3JTY3JpcHRzKCkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBzdG9wUGFyc2luZygp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNl
ckxpYnhtbDIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNl
ckxpYnhtbDIuY3BwCmluZGV4IDUwYmI0ZmZlMzc4NTUzNWM1ZGI2MTAxN2MzOWQ3MTdiZWE4ZTRl
ZTcuLjFiZDBmMGM1ZjZhZDM3Y2Y3MjIwOTRkZjM1OWMwMDhmMmI3Yzg3NWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5j
cHAKQEAgLTE0NDQsNyArMTQ0NCwxMCBAQCB2b2lkIFhNTERvY3VtZW50UGFyc2VyOjpyZXN1bWVQ
YXJzaW5nKCkKICAgICAvLyBUaGVuLCB3cml0ZSBhbnkgcGVuZGluZyBkYXRhCiAgICAgU2VnbWVu
dGVkU3RyaW5nIHJlc3QgPSBtX3BlbmRpbmdTcmM7CiAgICAgbV9wZW5kaW5nU3JjLmNsZWFyKCk7
Ci0gICAgYXBwZW5kKHJlc3QpOworICAgIC8vIFRoZXJlIGlzIG5vcm1hbGx5IG9ubHkgb25lIHN0
cmluZyBsZWZ0LCBzbyB0b1N0cmluZygpIHNob3VsZG4ndCBjb3B5LgorICAgIC8vIEluIGFueSBj
YXNlLCB0aGUgWE1MIHBhcnNlciBydW5zIG9uIHRoZSBtYWluIHRocmVhZCBhbmQgaXQncyBPSyBp
ZgorICAgIC8vIHRoZSBwYXNzZWQgc3RyaW5nIGhhcyBtb3JlIHRoYW4gb25lIHJlZmVyZW5jZS4K
KyAgICBhcHBlbmQocmVzdC50b1N0cmluZygpLmltcGwoKSk7CiAKICAgICAvLyBGaW5hbGx5LCBp
ZiBmaW5pc2goKSBoYXMgYmVlbiBjYWxsZWQgYW5kIHdyaXRlKCkgZGlkbid0IHJlc3VsdAogICAg
IC8vIGluIGFueSBmdXJ0aGVyIGNhbGxiYWNrcyBiZWluZyBxdWV1ZWQsIGNhbGwgZW5kKCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>190871</attachid>
            <date>2013-02-28 19:44:20 -0800</date>
            <delta_ts>2013-03-01 10:44:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-111135-20130228194032.patch</filename>
            <type>text/plain</type>
            <size>16324</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0MzY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDc1NjkxNjBlNzdhM2E5MGQ2MTYxMjFj
NmFiMzUwNmNlYjlhOGYzZWMuLjMyZmNjNmYzMTJmZGZlMDNjYjVjZGQzMDJjMTYzNmNhM2I2NWRm
YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTMtMDItMjggIEVyaWMgU2VpZGVsICA8ZXJpY0B3
ZWJraXQub3JnPgorCisgICAgICAgIFRocmVhZGVkIEhUTUwgUGFyc2VyIGhhcyBhbiBleHRyYSBj
b3B5IG9mIGV2ZXJ5IGJ5dGUgZnJvbSB0aGUgbmV0d29yaworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTExMTM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIHRocmVhZGVkIGh0bWwgcGFyc2VyIG5lZWRz
IHRvIGFjY2VwdCBvd25lcnNoaXAKKyAgICAgICAgb2YgYSBzdHJpbmcgYnVmZmVyLiAgVGhlIGVh
c2llc3Qgd2F5IHRvIGRvIHRoaXMgc2VlbWVkCisgICAgICAgIHRvIGJlIHRvIHVzZSBhIFBhc3NS
ZWZQdHI8U3RyaW5nSW1wbD4sIGJ1dCB0aGVyZSB3YXMgbm8gd2F5CisgICAgICAgIHRvIGdlbmVy
YXRlZCBvbmUgZnJvbSBhIFN0cmluZyAoZWFzaWx5KSwgc28gSSBhZGRlZCBvbmUuCisKKyAgICAg
ICAgKiB3dGYvdGV4dC9XVEZTdHJpbmcuaDoKKyAgICAgICAgKFdURjo6U3RyaW5nOjpyZWxlYXNl
SW1wbCk6CisKIDIwMTMtMDItMjggIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KIAog
ICAgICAgICBDcmFzaCBpbiBKU0M6Ok1hcmtlZEJsb2NrOjpGcmVlTGlzdCBKU0M6Ok1hcmtlZEJs
b2NrOjpzd2VlcEhlbHBlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGU1YzcxYzA2ZjdlZmQyOGMwZjQxMWU3M2Zk
OGVjMmM5ODMxZDBhMGQuLjY3NWJlOGRhYjE1ZTMxMmViNmYzN2M3NzJhZTdjNzhjMTNiMTk4NDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0OSBAQAorMjAxMy0wMi0yOCAgRXJpYyBTZWlkZWwgIDxl
cmljQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVGhyZWFkZWQgSFRNTCBQYXJzZXIgaGFzIGFuIGV4
dHJhIGNvcHkgb2YgZXZlcnkgYnl0ZSBmcm9tIHRoZSBuZXR3b3JrCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTExMzUKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFdmVyeSBMYXlvdXRUZXN0IGV4ZWN1dGVz
IHRoaXMgY29kZSBpbiB0aHJlYWRlZCBwYXJzaW5nIG1vZGUuCisKKyAgICAgICAgKiBkb20vRGVj
b2RlZERhdGFEb2N1bWVudFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEZWNvZGVkRGF0
YURvY3VtZW50UGFyc2VyOjphcHBlbmRCeXRlcyk6CisgICAgICAgICAtIFBhc3Mgb3duZXJzaGlw
IG9mIHRoZSBkZWNvZGVkIHN0cmluZyB0byB0aGUgcGFyc2VyLgorICAgICAgICAoV2ViQ29yZTo6
RGVjb2RlZERhdGFEb2N1bWVudFBhcnNlcjo6Zmx1c2gpOgorICAgICAgICAgLSBTYW1lLgorICAg
ICAgICAqIGRvbS9EZWNvZGVkRGF0YURvY3VtZW50UGFyc2VyLmg6CisgICAgICAgIChEZWNvZGVk
RGF0YURvY3VtZW50UGFyc2VyKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNldENvbnRlbnQpOgorICAgICAgICAqIGRvbS9Eb2N1bWVu
dFBhcnNlci5oOgorICAgICAgICAoRG9jdW1lbnRQYXJzZXIpOgorICAgICAgICAqIGRvbS9SYXdE
YXRhRG9jdW1lbnRQYXJzZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJhd0RhdGFEb2N1bWVudFBh
cnNlcjo6YXBwZW5kKToKKyAgICAgICAgKiBodG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcDoK
KyAgICAgICAgKEZUUERpcmVjdG9yeURvY3VtZW50UGFyc2VyKToKKyAgICAgICAgKFdlYkNvcmU6
OkZUUERpcmVjdG9yeURvY3VtZW50UGFyc2VyOjphcHBlbmQpOgorICAgICAgICAqIGh0bWwvcGFy
c2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1l
bnRQYXJzZXI6OmFwcGVuZCk6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFy
c2VyLmg6CisgICAgICAgIChIVE1MRG9jdW1lbnRQYXJzZXIpOgorICAgICAgICAqIGh0bWwvcGFy
c2VyL0hUTUxWaWV3U291cmNlUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWV3
U291cmNlUGFyc2VyOjphcHBlbmQpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxWaWV3U291
cmNlUGFyc2VyLmg6CisgICAgICAgIChIVE1MVmlld1NvdXJjZVBhcnNlcik6CisgICAgICAgICog
aHRtbC9wYXJzZXIvVGV4dERvY3VtZW50UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHREb2N1bWVudFBhcnNlcjo6YXBwZW5kKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9UZXh0RG9j
dW1lbnRQYXJzZXIuaDoKKyAgICAgICAgKFRleHREb2N1bWVudFBhcnNlcik6CisgICAgICAgICog
bG9hZGVyL0RvY3VtZW50V3JpdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50V3Jp
dGVyOjpyZXBsYWNlRG9jdW1lbnQpOgorICAgICAgICAqIHhtbC9wYXJzZXIvWE1MRG9jdW1lbnRQ
YXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MRG9jdW1lbnRQYXJzZXI6OmFwcGVuZCk6
CisgICAgICAgICogeG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5oOgorICAgICAgICAoWE1M
RG9jdW1lbnRQYXJzZXIpOgorICAgICAgICAqIHhtbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJM
aWJ4bWwyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTERvY3VtZW50UGFyc2VyOjpyZXN1bWVQ
YXJzaW5nKToKKwogMjAxMy0wMi0yOCAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4K
IAogICAgICAgICBSZXZlcnQgYW4gZXJyb25lb3VzIGNoYW5nZSBpbiByMTQ0MzM2LgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaCBiL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvV1RGU3RyaW5nLmgKaW5kZXggNWJkM2RiMjk1OWE4ZDMyN2JhZTY3MWViM2Y0YjFjMjdjN2Y3
OGE5Ny4uOWNhNmY1NzMzZjMwYzdkNzcxYmU5MTU0YjE1MzQ5Y2Y4YWFkZmU3ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L1dURlN0cmluZy5oCkBAIC0xNjcsNiArMTY3LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNF
bXB0eSgpIGNvbnN0IHsgcmV0dXJuICFtX2ltcGwgfHwgIW1faW1wbC0+bGVuZ3RoKCk7IH0KIAog
ICAgIFN0cmluZ0ltcGwqIGltcGwoKSBjb25zdCB7IHJldHVybiBtX2ltcGwuZ2V0KCk7IH0KKyAg
ICBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHJlbGVhc2VJbXBsKCkgeyByZXR1cm4gbV9pbXBsLnJl
bGVhc2UoKTsgfQogCiAgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QKICAgICB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGVjb2RlZERhdGFEb2N1bWVudFBhcnNlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRGVjb2RlZERhdGFEb2N1bWVudFBhcnNlci5jcHAKaW5kZXggMWYx
Mzc1NTYzMDk5MTNkOTE5ZGFhNDczZGE1MjU1YjA5ODU1NTUzZi4uMTgzYTRhNjQyNjcyYTI1YTQ4
NDE3Yzg4OTNkNmY5YmUyYmExNWU1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Rl
Y29kZWREYXRhRG9jdW1lbnRQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EZWNv
ZGVkRGF0YURvY3VtZW50UGFyc2VyLmNwcApAQCAtNDcsNyArNDcsNyBAQCB2b2lkIERlY29kZWRE
YXRhRG9jdW1lbnRQYXJzZXI6OmFwcGVuZEJ5dGVzKERvY3VtZW50V3JpdGVyKiB3cml0ZXIsIGNv
bnN0IGNoYXIqCiAgICAgICAgIHJldHVybjsKIAogICAgIHdyaXRlci0+cmVwb3J0RGF0YVJlY2Vp
dmVkKCk7Ci0gICAgYXBwZW5kKGRlY29kZWQpOworICAgIGFwcGVuZChkZWNvZGVkLnJlbGVhc2VJ
bXBsKCkpOwogfQogCiB2b2lkIERlY29kZWREYXRhRG9jdW1lbnRQYXJzZXI6OmZsdXNoKERvY3Vt
ZW50V3JpdGVyKiB3cml0ZXIpCkBAIC01Nyw3ICs1Nyw3IEBAIHZvaWQgRGVjb2RlZERhdGFEb2N1
bWVudFBhcnNlcjo6Zmx1c2goRG9jdW1lbnRXcml0ZXIqIHdyaXRlcikKICAgICAgICAgcmV0dXJu
OwogCiAgICAgd3JpdGVyLT5yZXBvcnREYXRhUmVjZWl2ZWQoKTsKLSAgICBhcHBlbmQocmVtYWlu
aW5nRGF0YSk7CisgICAgYXBwZW5kKHJlbWFpbmluZ0RhdGEucmVsZWFzZUltcGwoKSk7CiB9CiAK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGVjb2RlZERhdGFEb2N1bWVudFBh
cnNlci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RlY29kZWREYXRhRG9jdW1lbnRQYXJzZXIuaApp
bmRleCA0NzQ3YTRhMTM2ZTNiZDUyMWRmYjY2NTZmYzYyMTQwMjkxMDNkNjM5Li5hY2Y0NzdmYmIy
YTk1MzRiNGVhOTQ2YTAwNDE5YmUzNGIxMzBjNzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRGVjb2RlZERhdGFEb2N1bWVudFBhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9EZWNvZGVkRGF0YURvY3VtZW50UGFyc2VyLmgKQEAgLTQxLDcgKzQxLDcgQEAgcHJvdGVjdGVk
OgogCiBwcml2YXRlOgogICAgIC8vIGFwcGVuZCBpcyB1c2VkIGJ5IERvY3VtZW50V3JpdGVyOjpy
ZXBsYWNlRG9jdW1lbnQuCi0gICAgdmlydHVhbCB2b2lkIGFwcGVuZChjb25zdCBTZWdtZW50ZWRT
dHJpbmcmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFwcGVuZChQYXNzUmVmUHRyPFN0cmluZ0lt
cGw+KSA9IDA7CiAKICAgICAvLyBhcHBlbmRCeXRlcyBhbmQgZmx1c2ggYXJlIHVzZWQgYnkgRG9j
dW1lbnRXcml0ZXIgKHRoZSBsb2FkZXIpLgogICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRCeXRlcyhE
b2N1bWVudFdyaXRlciosIGNvbnN0IGNoYXIqIGJ5dGVzLCBzaXplX3QgbGVuZ3RoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCmluZGV4IDJjNWRmNjczMmE1YzMwZGRjOTIxNmUyOWNlMWEwMWMwNGRj
ZmZhMWUuLmE1YzRiZDhlYjBhODE3ZjU3OWVlN2EzMTllNWYxNWY1OTlhMzI0ZjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcApAQCAtMTM1OCw3ICsxMzU4LDExIEBAIEtVUkwgRG9jdW1lbnQ6OmJh
c2VVUkkoKSBjb25zdAogdm9pZCBEb2N1bWVudDo6c2V0Q29udGVudChjb25zdCBTdHJpbmcmIGNv
bnRlbnQpCiB7CiAgICAgb3BlbigpOwotICAgIG1fcGFyc2VyLT5hcHBlbmQoY29udGVudCk7Cisg
ICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHByb2JhYmx5IHVzZSBpbnNlcnQoKSwgYnV0IHRoYXQn
cyAoaW50ZW50aW9uYWxseSkKKyAgICAvLyBub3QgaW1wbGVtZW50ZWQgZm9yIHRoZSBYTUwgcGFy
c2VyIGFzIGl0J3Mgbm9ybWFsbHkgc3lub255bW91cyB3aXRoCisgICAgLy8gZG9jdW1lbnQud3Jp
dGUoKS4gVGhlIGRhbmdlciB3aXRoIHVzaW5nIGFwcGVuZCgpIGlzIHRoYXQgYXBwZW5kKCkKKyAg
ICAvLyBjYW4geWllbGQsIHdoaWNoIHdvdWxkIGJlIHdyb25nIGhlcmUhCisgICAgbV9wYXJzZXIt
PmFwcGVuZChjb250ZW50LmltcGwoKSk7CiAgICAgY2xvc2UoKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50UGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnRQYXJzZXIuaAppbmRleCBhYWYxMWIyZjU5OGMzODY4ZTY0OWEzNDM1ZmQ0MThiNzA4
ODVlNWM2Li5mOWI0ZDI2NzYyZDljMmM3MDQ5YTY2OWNhNzU2MTVmODEwMjIxNWYxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnRQYXJzZXIuaApAQCAtMjQsNiArMjQsNyBAQAogI2lmbmRlZiBEb2N1
bWVudFBhcnNlcl9oCiAjZGVmaW5lIERvY3VtZW50UGFyc2VyX2gKIAorI2luY2x1ZGUgPHd0Zi9G
b3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpAQCAtNTEsOSArNTIsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgcGluVG9N
YWluVGhyZWFkKCkgeyB9CiAKLSAgICAvLyBGSVhNRTogYXBwZW5kKCkgc2hvdWxkIGJlIHByaXZh
dGUsIGJ1dCBEb2N1bWVudFdyaXRlcjo6cmVwbGFjZURvY3VtZW50Ci0gICAgLy8gdXNlcyBpdCBm
b3Igbm93LgotICAgIHZpcnR1YWwgdm9pZCBhcHBlbmQoY29uc3QgU2VnbWVudGVkU3RyaW5nJikg
PSAwOworICAgIC8vIEZJWE1FOiBhcHBlbmQoKSBzaG91bGQgYmUgcHJpdmF0ZSwgYnV0IERvY3Vt
ZW50V3JpdGVyOjpyZXBsYWNlRG9jdW1lbnQgdXNlcyBpdCBmb3Igbm93LgorICAgIHZpcnR1YWwg
dm9pZCBhcHBlbmQoUGFzc1JlZlB0cjxTdHJpbmdJbXBsPikgPSAwOwogCiAgICAgdmlydHVhbCB2
b2lkIGZpbmlzaCgpID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Jhd0Rh
dGFEb2N1bWVudFBhcnNlci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1Jhd0RhdGFEb2N1bWVudFBh
cnNlci5oCmluZGV4IDhiZjk1MWNkYWIyMzg0NjYyOTY3YTVlMjA4ZDAwNzExMDJmNmMxZjQuLjIy
OGU5NGJkNzVmZDZmYjkwMjkwZjg4ZGI5MjZiNjk3OGU4ZjcyN2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9SYXdEYXRhRG9jdW1lbnRQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vUmF3RGF0YURvY3VtZW50UGFyc2VyLmgKQEAgLTU2LDcgKzU2LDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lk
IGFwcGVuZChjb25zdCBTZWdtZW50ZWRTdHJpbmcmKQorICAgIHZpcnR1YWwgdm9pZCBhcHBlbmQo
UGFzc1JlZlB0cjxTdHJpbmdJbXBsPikKICAgICB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5
RG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5j
cHAKaW5kZXggYzE3NjIyYTIxMDJlZmYzYTY2MzNlYjY3N2I0NzI0YTkyOWY1OTVmOC4uODc4ZmZi
OTNiZDFjMTI3ODcxYjJjOGFlMGJhM2QyYmMxOTQ4NDAyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEZUUERpcmVjdG9yeURvY3VtZW50UGFyc2VyKGRv
Y3VtZW50KSk7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIGFwcGVuZChjb25zdCBTZWdtZW50
ZWRTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kKFBhc3NSZWZQdHI8U3RyaW5nSW1w
bD4pOwogICAgIHZpcnR1YWwgdm9pZCBmaW5pc2goKTsKIAogICAgIHZpcnR1YWwgYm9vbCBpc1dh
aXRpbmdGb3JTY3JpcHRzKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTM0Niw4ICszNDYs
MTAgQEAgdm9pZCBGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6Y3JlYXRlQmFzaWNEb2N1bWVu
dCgpCiAgICAgYm9keUVsZW1lbnQtPmFwcGVuZENoaWxkKG1fdGFibGVFbGVtZW50LCBJR05PUkVf
RVhDRVBUSU9OKTsKIH0KIAotdm9pZCBGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6YXBwZW5k
KGNvbnN0IFNlZ21lbnRlZFN0cmluZyYgc291cmNlKQordm9pZCBGVFBEaXJlY3RvcnlEb2N1bWVu
dFBhcnNlcjo6YXBwZW5kKFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gaW5wdXRTb3VyY2UpCiB7Cisg
ICAgU3RyaW5nIHNvdXJjZShpbnB1dFNvdXJjZSk7CisKICAgICAvLyBNYWtlIHN1cmUgd2UgaGF2
ZSB0aGUgdGFibGUgZWxlbWVudCB0byBhcHBlbmQgdG8gYnkgbG9hZGluZyB0aGUgdGVtcGxhdGUg
c2V0IGluIHRoZSBwcmVmLCBvcgogICAgIC8vIGNyZWF0aW5nIGEgdmVyeSBiYXNpYyBkb2N1bWVu
dCB3aXRoIHRoZSBhcHByb3ByaWF0ZSB0YWJsZQogICAgIGlmICghbV90YWJsZUVsZW1lbnQpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3Bw
CmluZGV4IGJkNDhlM2U2NzdhMzJjYWQ2YmZhZTcxYjJlZGIwYWNmYThjNGM0MjAuLjFiMDE2MjZh
OWUxOTcyNjQ4N2U5ZmZhNjZiMGZiMGUzZDI4ZjgxOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcApAQCAtNjQ2LDcgKzY0Niw3IEBA
IHZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjpzdG9wQmFja2dyb3VuZFBhcnNlcigpCiAKICNlbmRp
ZgogCi12b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6YXBwZW5kKGNvbnN0IFNlZ21lbnRlZFN0cmlu
ZyYgc291cmNlKQordm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6OmFwcGVuZChQYXNzUmVmUHRyPFN0
cmluZ0ltcGw+IGlucHV0U291cmNlKQogewogICAgIGlmIChpc1N0b3BwZWQoKSkKICAgICAgICAg
cmV0dXJuOwpAQCAtNjU2LDggKzY1NiwxMiBAQCB2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6YXBw
ZW5kKGNvbnN0IFNlZ21lbnRlZFN0cmluZyYgc291cmNlKQogICAgICAgICBpZiAoIW1faGF2ZUJh
Y2tncm91bmRQYXJzZXIpCiAgICAgICAgICAgICBzdGFydEJhY2tncm91bmRQYXJzZXIoKTsKIAot
ICAgICAgICBIVE1MUGFyc2VyVGhyZWFkOjpzaGFyZWQoKS0+cG9zdFRhc2soYmluZCgKLSAgICAg
ICAgICAgICZCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6YXBwZW5kLCBtX2JhY2tncm91bmRQYXJzZXIs
IHNvdXJjZS50b1N0cmluZygpLmlzb2xhdGVkQ29weSgpKSk7CisgICAgICAgIEFTU0VSVChpbnB1
dFNvdXJjZS0+aGFzT25lUmVmKCkpOworICAgICAgICBDbG9zdXJlIGNsb3N1cmUgPSBiaW5kKCZC
YWNrZ3JvdW5kSFRNTFBhcnNlcjo6YXBwZW5kLCBtX2JhY2tncm91bmRQYXJzZXIsIFN0cmluZyhp
bnB1dFNvdXJjZSkpOworICAgICAgICAvLyBOT1RFOiBJbXBvcnRhbnQgdGhhdCB0aGUgU3RyaW5n
IHRlbXBvcmFyeSBpcyBkZXN0cm95ZWQgYmVmb3JlIHdlIHBvc3QgdGhlIHRhc2sKKyAgICAgICAg
Ly8gb3RoZXJ3aXNlIHRoZSBTdHJpbmcgY291bGQgY2FsbCBkZXJlZigpIG9uIGEgU3RyaW5nSW1w
bCBub3cgb3duZWQgYnkgdGhlIGJhY2tncm91bmQgcGFyc2VyLgorICAgICAgICAvLyBXZSB3b3Vs
ZCBsaWtlIHRvIEFTU0VSVChjbG9zdXJlLmFyZzMoKS0+aGFzT25lUmVmKCkpIGJ1dCBzYWRseSB0
aGUgYXJncyBhcmUgcHJpdmF0ZS4KKyAgICAgICAgSFRNTFBhcnNlclRocmVhZDo6c2hhcmVkKCkt
PnBvc3RUYXNrKGNsb3N1cmUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmCkBAIC02
NjUsNiArNjY5LDcgQEAgdm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6OmFwcGVuZChjb25zdCBTZWdt
ZW50ZWRTdHJpbmcmIHNvdXJjZSkKICAgICAvLyBwdW1wVG9rZW5pemVyIGNhbiBjYXVzZSB0aGlz
IHBhcnNlciB0byBiZSBkZXRhY2hlZCBmcm9tIHRoZSBEb2N1bWVudCwKICAgICAvLyBidXQgd2Ug
bmVlZCB0byBlbnN1cmUgaXQgaXNuJ3QgZGVsZXRlZCB5ZXQuCiAgICAgUmVmUHRyPEhUTUxEb2N1
bWVudFBhcnNlcj4gcHJvdGVjdCh0aGlzKTsKKyAgICBTdHJpbmcgc291cmNlKGlucHV0U291cmNl
KTsKIAogICAgIGlmIChtX3ByZWxvYWRTY2FubmVyKSB7CiAgICAgICAgIGlmIChtX2lucHV0LmN1
cnJlbnQoKS5pc0VtcHR5KCkgJiYgIWlzV2FpdGluZ0ZvclNjcmlwdHMoKSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuaAppbmRleCAxYmJmNzcx
Y2I4MTQ1ZjY3OWYxMGNiMWZlNDU2YjMyMDZiN2ZhZmNlLi44OTE1NDZkYWIwZWZjMTU5Zjk1YjVh
MGY4YTI3NzMwMGY3NWQ0ZDU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9IVE1MRG9jdW1lbnRQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9I
VE1MRG9jdW1lbnRQYXJzZXIuaApAQCAtOTcsNyArOTcsNyBAQCBwdWJsaWM6CiAKIHByb3RlY3Rl
ZDoKICAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0KGNvbnN0IFNlZ21lbnRlZFN0cmluZyYpIE9WRVJS
SURFOwotICAgIHZpcnR1YWwgdm9pZCBhcHBlbmQoY29uc3QgU2VnbWVudGVkU3RyaW5nJikgT1ZF
UlJJREU7CisgICAgdmlydHVhbCB2b2lkIGFwcGVuZChQYXNzUmVmUHRyPFN0cmluZ0ltcGw+KSBP
VkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoKCkgT1ZFUlJJREU7CiAKICAgICBIVE1M
RG9jdW1lbnRQYXJzZXIoSFRNTERvY3VtZW50KiwgYm9vbCByZXBvcnRFcnJvcnMpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFZpZXdTb3VyY2VQYXJzZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFZpZXdTb3VyY2VQYXJzZXIuY3BwCmlu
ZGV4IGYwMTljMmU5MDY2NDQwZTRjOGZjNTkzY2JlMjhjOTZiZTI3YmIyMzYuLmZlOGMzMzg5M2Vl
ZWE0N2QyZTcyNjg0NTc0MGMzYjJmODA3MDc4ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0hUTUxWaWV3U291cmNlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MVmlld1NvdXJjZVBhcnNlci5jcHAKQEAgLTYyLDkgKzYyLDkgQEAg
dm9pZCBIVE1MVmlld1NvdXJjZVBhcnNlcjo6cHVtcFRva2VuaXplcigpCiAgICAgfQogfQogCi12
b2lkIEhUTUxWaWV3U291cmNlUGFyc2VyOjphcHBlbmQoY29uc3QgU2VnbWVudGVkU3RyaW5nJiBp
bnB1dCkKK3ZvaWQgSFRNTFZpZXdTb3VyY2VQYXJzZXI6OmFwcGVuZChQYXNzUmVmUHRyPFN0cmlu
Z0ltcGw+IGlucHV0KQogewotICAgIG1faW5wdXQuYXBwZW5kVG9FbmQoaW5wdXQpOworICAgIG1f
aW5wdXQuYXBwZW5kVG9FbmQoU3RyaW5nKGlucHV0KSk7CiAgICAgcHVtcFRva2VuaXplcigpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVmlld1NvdXJj
ZVBhcnNlci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFZpZXdTb3VyY2VQYXJz
ZXIuaAppbmRleCA2NjJiZTcyYWUyMDY3NjM1NmYxZTNkNWJmODJlZGMxZmRlMDczMWZiLi40MGMw
NjRiOGI2MzU5ZmUwZjhlZjhjYTY0YTcxNjE2ZWM3ZDg1MjQxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVmlld1NvdXJjZVBhcnNlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxWaWV3U291cmNlUGFyc2VyLmgKQEAgLTU5LDcgKzU5LDcg
QEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKICAgICAvLyBEb2N1bWVudFBhcnNlcgogICAgIHZpcnR1
YWwgdm9pZCBpbnNlcnQoY29uc3QgU2VnbWVudGVkU3RyaW5nJik7Ci0gICAgdmlydHVhbCB2b2lk
IGFwcGVuZChjb25zdCBTZWdtZW50ZWRTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIHZvaWQgYXBwZW5k
KFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4pOwogICAgIHZpcnR1YWwgdm9pZCBmaW5pc2goKTsKIAog
ICAgIEhUTUxWaWV3U291cmNlRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8SFRNTFZpZXdTb3VyY2VEb2N1bWVudCo+KERlY29kZWREYXRhRG9jdW1lbnRQYXJz
ZXI6OmRvY3VtZW50KCkpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9UZXh0RG9jdW1lbnRQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvVGV4
dERvY3VtZW50UGFyc2VyLmNwcAppbmRleCAzOTFmY2FjMGVjMzVjNjZjZTA1OGViODJhNDgxOTJi
ZjZjZTJjNzA3Li44MGRiNGE5ZGMwNWJhNDM1ODgxZTU2Y2EzMDFiZWQwNDg4MzViNTA4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9UZXh0RG9jdW1lbnRQYXJzZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1RleHREb2N1bWVudFBhcnNlci5jcHAK
QEAgLTQ0LDcgKzQ0LDcgQEAgVGV4dERvY3VtZW50UGFyc2VyOjp+VGV4dERvY3VtZW50UGFyc2Vy
KCkKIHsKIH0KIAotdm9pZCBUZXh0RG9jdW1lbnRQYXJzZXI6OmFwcGVuZChjb25zdCBTZWdtZW50
ZWRTdHJpbmcmIHRleHQpCit2b2lkIFRleHREb2N1bWVudFBhcnNlcjo6YXBwZW5kKFBhc3NSZWZQ
dHI8U3RyaW5nSW1wbD4gdGV4dCkKIHsKICAgICBpZiAoIW1faGF2ZUluc2VydGVkRmFrZVByZUVs
ZW1lbnQpCiAgICAgICAgIGluc2VydEZha2VQcmVFbGVtZW50KCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9UZXh0RG9jdW1lbnRQYXJzZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL1RleHREb2N1bWVudFBhcnNlci5oCmluZGV4IDFjY2NjNWIwZjI3ZGZk
Y2U2MDNjNDMwNzdkODIwYmI4MTlmNmE2YjIuLjk1ZTUxMjkzMTVkOTM2YWFlNzAyNzI5ZWUzMDEz
ZTNkODAyNGFlMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1RleHRE
b2N1bWVudFBhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1RleHREb2N1
bWVudFBhcnNlci5oCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgZXhw
bGljaXQgVGV4dERvY3VtZW50UGFyc2VyKEhUTUxEb2N1bWVudCopOwogCi0gICAgdmlydHVhbCB2
b2lkIGFwcGVuZChjb25zdCBTZWdtZW50ZWRTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIHZvaWQgYXBw
ZW5kKFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4pOwogICAgIHZvaWQgaW5zZXJ0RmFrZVByZUVsZW1l
bnQoKTsKIAogICAgIGJvb2wgbV9oYXZlSW5zZXJ0ZWRGYWtlUHJlRWxlbWVudDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuY3BwCmluZGV4IGFkYTUxOWFlYmJmMGIwNTk0MmYw
ZjI2OTRkMTE4Y2VlNzZiYzk1MmUuLjAzYjU3NDlmOGNmNjRmNDA3Y2Q0MGQ0ODNkYjNiNWFmZmEz
NTJlYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmNwcApAQCAtODAs
NyArODAsOSBAQCB2b2lkIERvY3VtZW50V3JpdGVyOjpyZXBsYWNlRG9jdW1lbnQoY29uc3QgU3Ry
aW5nJiBzb3VyY2UsIERvY3VtZW50KiBvd25lckRvY3VtZQogICAgICAgICAvLyB0byBzdXBwb3J0
IFJhd0RhdGFEb2N1bWVudFBhcnNlcnMuCiAgICAgICAgIGlmIChEb2N1bWVudFBhcnNlciogcGFy
c2VyID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+cGFyc2VyKCkpIHsKICAgICAgICAgICAgIHBhcnNl
ci0+cGluVG9NYWluVGhyZWFkKCk7Ci0gICAgICAgICAgICBwYXJzZXItPmFwcGVuZChzb3VyY2Up
OworICAgICAgICAgICAgLy8gQmVjYXVzZSB3ZSdyZSBwaW5uZWQgdG8gdGhlIG1haW4gdGhyZWFk
IHdlIGRvbid0IG5lZWQgdG8gd29ycnkgYWJvdXQKKyAgICAgICAgICAgIC8vIHBhc3Npbmcgb3du
ZXJzaGlwIG9mIHRoZSBzb3VyY2Ugc3RyaW5nLgorICAgICAgICAgICAgcGFyc2VyLT5hcHBlbmQo
c291cmNlLmltcGwoKSk7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
eG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHAKaW5kZXggNGUxMzUwZTM0NjM4ZTg4MGI4
N2M3NWQ2ZjdmMjE0NTZlYTVmOGI3Yy4uOWU5NWE1NDg1MGMyZTFlNDNhMzVmYzVlOTE1MGUxZDNk
ZDZiM2QxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVu
dFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBh
cnNlci5jcHAKQEAgLTExMiw4ICsxMTIsOSBAQCB2b2lkIFhNTERvY3VtZW50UGFyc2VyOjppbnNl
cnQoY29uc3QgU2VnbWVudGVkU3RyaW5nJikKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0K
IAotdm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6YXBwZW5kKGNvbnN0IFNlZ21lbnRlZFN0cmluZyYg
c291cmNlKQordm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6YXBwZW5kKFBhc3NSZWZQdHI8U3RyaW5n
SW1wbD4gaW5wdXRTb3VyY2UpCiB7CisgICAgU2VnbWVudGVkU3RyaW5nIHNvdXJjZShpbnB1dFNv
dXJjZSk7CiAgICAgaWYgKG1fc2F3WFNMVHJhbnNmb3JtIHx8ICFtX3Nhd0ZpcnN0RWxlbWVudCkK
ICAgICAgICAgbV9vcmlnaW5hbFNvdXJjZUZvclRyYW5zZm9ybS5hcHBlbmQoc291cmNlKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5o
IGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5oCmluZGV4IGM1
Y2Y1ZjY3MWMwMjcwYjMzZTQ4YTZmNmU1YjFmYWUxN2FiMDQyOWQuLjNkNzI4MGM1NjU5YTZjNDY2
OWJkMWRjZDZiYWYxMjFjZTQ2YjU4MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9w
YXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2Vy
L1hNTERvY3VtZW50UGFyc2VyLmgKQEAgLTEwNyw3ICsxMDcsNyBAQCBjbGFzcyBUZXh0OwogCiAg
ICAgICAgIC8vIEZyb20gRG9jdW1lbnRQYXJzZXIKICAgICAgICAgdmlydHVhbCB2b2lkIGluc2Vy
dChjb25zdCBTZWdtZW50ZWRTdHJpbmcmKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGFwcGVuZChj
b25zdCBTZWdtZW50ZWRTdHJpbmcmKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGFwcGVuZChQYXNz
UmVmUHRyPFN0cmluZ0ltcGw+KTsKICAgICAgICAgdmlydHVhbCB2b2lkIGZpbmlzaCgpOwogICAg
ICAgICB2aXJ0dWFsIGJvb2wgaXNXYWl0aW5nRm9yU2NyaXB0cygpIGNvbnN0OwogICAgICAgICB2
aXJ0dWFsIHZvaWQgc3RvcFBhcnNpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3ht
bC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3ht
bC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAppbmRleCA1MGJiNGZmZTM3ODU1
MzVjNWRiNjEwMTdjMzlkNzE3YmVhOGU0ZWU3Li4xYmQwZjBjNWY2YWQzN2NmNzIyMDk0ZGYzNTlj
MDA4ZjJiN2M4NzVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERv
Y3VtZW50UGFyc2VyTGlieG1sMi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9Y
TUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCkBAIC0xNDQ0LDcgKzE0NDQsMTAgQEAgdm9pZCBY
TUxEb2N1bWVudFBhcnNlcjo6cmVzdW1lUGFyc2luZygpCiAgICAgLy8gVGhlbiwgd3JpdGUgYW55
IHBlbmRpbmcgZGF0YQogICAgIFNlZ21lbnRlZFN0cmluZyByZXN0ID0gbV9wZW5kaW5nU3JjOwog
ICAgIG1fcGVuZGluZ1NyYy5jbGVhcigpOwotICAgIGFwcGVuZChyZXN0KTsKKyAgICAvLyBUaGVy
ZSBpcyBub3JtYWxseSBvbmx5IG9uZSBzdHJpbmcgbGVmdCwgc28gdG9TdHJpbmcoKSBzaG91bGRu
J3QgY29weS4KKyAgICAvLyBJbiBhbnkgY2FzZSwgdGhlIFhNTCBwYXJzZXIgcnVucyBvbiB0aGUg
bWFpbiB0aHJlYWQgYW5kIGl0J3MgT0sgaWYKKyAgICAvLyB0aGUgcGFzc2VkIHN0cmluZyBoYXMg
bW9yZSB0aGFuIG9uZSByZWZlcmVuY2UuCisgICAgYXBwZW5kKHJlc3QudG9TdHJpbmcoKS5pbXBs
KCkpOwogCiAgICAgLy8gRmluYWxseSwgaWYgZmluaXNoKCkgaGFzIGJlZW4gY2FsbGVkIGFuZCB3
cml0ZSgpIGRpZG4ndCByZXN1bHQKICAgICAvLyBpbiBhbnkgZnVydGhlciBjYWxsYmFja3MgYmVp
bmcgcXVldWVkLCBjYWxsIGVuZCgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>190986</attachid>
            <date>2013-03-01 10:44:58 -0800</date>
            <delta_ts>2013-03-01 13:55:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-111135-20130301104110.patch</filename>
            <type>text/plain</type>
            <size>16570</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0MzY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDc1NjkxNjBlNzdhM2E5MGQ2MTYxMjFj
NmFiMzUwNmNlYjlhOGYzZWMuLjMyZmNjNmYzMTJmZGZlMDNjYjVjZGQzMDJjMTYzNmNhM2I2NWRm
YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTMtMDItMjggIEVyaWMgU2VpZGVsICA8ZXJpY0B3
ZWJraXQub3JnPgorCisgICAgICAgIFRocmVhZGVkIEhUTUwgUGFyc2VyIGhhcyBhbiBleHRyYSBj
b3B5IG9mIGV2ZXJ5IGJ5dGUgZnJvbSB0aGUgbmV0d29yaworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTExMTM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIHRocmVhZGVkIGh0bWwgcGFyc2VyIG5lZWRz
IHRvIGFjY2VwdCBvd25lcnNoaXAKKyAgICAgICAgb2YgYSBzdHJpbmcgYnVmZmVyLiAgVGhlIGVh
c2llc3Qgd2F5IHRvIGRvIHRoaXMgc2VlbWVkCisgICAgICAgIHRvIGJlIHRvIHVzZSBhIFBhc3NS
ZWZQdHI8U3RyaW5nSW1wbD4sIGJ1dCB0aGVyZSB3YXMgbm8gd2F5CisgICAgICAgIHRvIGdlbmVy
YXRlZCBvbmUgZnJvbSBhIFN0cmluZyAoZWFzaWx5KSwgc28gSSBhZGRlZCBvbmUuCisKKyAgICAg
ICAgKiB3dGYvdGV4dC9XVEZTdHJpbmcuaDoKKyAgICAgICAgKFdURjo6U3RyaW5nOjpyZWxlYXNl
SW1wbCk6CisKIDIwMTMtMDItMjggIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KIAog
ICAgICAgICBDcmFzaCBpbiBKU0M6Ok1hcmtlZEJsb2NrOjpGcmVlTGlzdCBKU0M6Ok1hcmtlZEJs
b2NrOjpzd2VlcEhlbHBlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGU1YzcxYzA2ZjdlZmQyOGMwZjQxMWU3M2Zk
OGVjMmM5ODMxZDBhMGQuLjY3NWJlOGRhYjE1ZTMxMmViNmYzN2M3NzJhZTdjNzhjMTNiMTk4NDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0OSBAQAorMjAxMy0wMi0yOCAgRXJpYyBTZWlkZWwgIDxl
cmljQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVGhyZWFkZWQgSFRNTCBQYXJzZXIgaGFzIGFuIGV4
dHJhIGNvcHkgb2YgZXZlcnkgYnl0ZSBmcm9tIHRoZSBuZXR3b3JrCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTExMzUKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFdmVyeSBMYXlvdXRUZXN0IGV4ZWN1dGVz
IHRoaXMgY29kZSBpbiB0aHJlYWRlZCBwYXJzaW5nIG1vZGUuCisKKyAgICAgICAgKiBkb20vRGVj
b2RlZERhdGFEb2N1bWVudFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEZWNvZGVkRGF0
YURvY3VtZW50UGFyc2VyOjphcHBlbmRCeXRlcyk6CisgICAgICAgICAtIFBhc3Mgb3duZXJzaGlw
IG9mIHRoZSBkZWNvZGVkIHN0cmluZyB0byB0aGUgcGFyc2VyLgorICAgICAgICAoV2ViQ29yZTo6
RGVjb2RlZERhdGFEb2N1bWVudFBhcnNlcjo6Zmx1c2gpOgorICAgICAgICAgLSBTYW1lLgorICAg
ICAgICAqIGRvbS9EZWNvZGVkRGF0YURvY3VtZW50UGFyc2VyLmg6CisgICAgICAgIChEZWNvZGVk
RGF0YURvY3VtZW50UGFyc2VyKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNldENvbnRlbnQpOgorICAgICAgICAqIGRvbS9Eb2N1bWVu
dFBhcnNlci5oOgorICAgICAgICAoRG9jdW1lbnRQYXJzZXIpOgorICAgICAgICAqIGRvbS9SYXdE
YXRhRG9jdW1lbnRQYXJzZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJhd0RhdGFEb2N1bWVudFBh
cnNlcjo6YXBwZW5kKToKKyAgICAgICAgKiBodG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcDoK
KyAgICAgICAgKEZUUERpcmVjdG9yeURvY3VtZW50UGFyc2VyKToKKyAgICAgICAgKFdlYkNvcmU6
OkZUUERpcmVjdG9yeURvY3VtZW50UGFyc2VyOjphcHBlbmQpOgorICAgICAgICAqIGh0bWwvcGFy
c2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1l
bnRQYXJzZXI6OmFwcGVuZCk6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFy
c2VyLmg6CisgICAgICAgIChIVE1MRG9jdW1lbnRQYXJzZXIpOgorICAgICAgICAqIGh0bWwvcGFy
c2VyL0hUTUxWaWV3U291cmNlUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWV3
U291cmNlUGFyc2VyOjphcHBlbmQpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxWaWV3U291
cmNlUGFyc2VyLmg6CisgICAgICAgIChIVE1MVmlld1NvdXJjZVBhcnNlcik6CisgICAgICAgICog
aHRtbC9wYXJzZXIvVGV4dERvY3VtZW50UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHREb2N1bWVudFBhcnNlcjo6YXBwZW5kKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9UZXh0RG9j
dW1lbnRQYXJzZXIuaDoKKyAgICAgICAgKFRleHREb2N1bWVudFBhcnNlcik6CisgICAgICAgICog
bG9hZGVyL0RvY3VtZW50V3JpdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50V3Jp
dGVyOjpyZXBsYWNlRG9jdW1lbnQpOgorICAgICAgICAqIHhtbC9wYXJzZXIvWE1MRG9jdW1lbnRQ
YXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MRG9jdW1lbnRQYXJzZXI6OmFwcGVuZCk6
CisgICAgICAgICogeG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5oOgorICAgICAgICAoWE1M
RG9jdW1lbnRQYXJzZXIpOgorICAgICAgICAqIHhtbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJM
aWJ4bWwyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTERvY3VtZW50UGFyc2VyOjpyZXN1bWVQ
YXJzaW5nKToKKwogMjAxMy0wMi0yOCAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4K
IAogICAgICAgICBSZXZlcnQgYW4gZXJyb25lb3VzIGNoYW5nZSBpbiByMTQ0MzM2LgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaCBiL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvV1RGU3RyaW5nLmgKaW5kZXggNWJkM2RiMjk1OWE4ZDMyN2JhZTY3MWViM2Y0YjFjMjdjN2Y3
OGE5Ny4uOWNhNmY1NzMzZjMwYzdkNzcxYmU5MTU0YjE1MzQ5Y2Y4YWFkZmU3ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L1dURlN0cmluZy5oCkBAIC0xNjcsNiArMTY3LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNF
bXB0eSgpIGNvbnN0IHsgcmV0dXJuICFtX2ltcGwgfHwgIW1faW1wbC0+bGVuZ3RoKCk7IH0KIAog
ICAgIFN0cmluZ0ltcGwqIGltcGwoKSBjb25zdCB7IHJldHVybiBtX2ltcGwuZ2V0KCk7IH0KKyAg
ICBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHJlbGVhc2VJbXBsKCkgeyByZXR1cm4gbV9pbXBsLnJl
bGVhc2UoKTsgfQogCiAgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QKICAgICB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGVjb2RlZERhdGFEb2N1bWVudFBhcnNlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRGVjb2RlZERhdGFEb2N1bWVudFBhcnNlci5jcHAKaW5kZXggMWYx
Mzc1NTYzMDk5MTNkOTE5ZGFhNDczZGE1MjU1YjA5ODU1NTUzZi4uMTgzYTRhNjQyNjcyYTI1YTQ4
NDE3Yzg4OTNkNmY5YmUyYmExNWU1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Rl
Y29kZWREYXRhRG9jdW1lbnRQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EZWNv
ZGVkRGF0YURvY3VtZW50UGFyc2VyLmNwcApAQCAtNDcsNyArNDcsNyBAQCB2b2lkIERlY29kZWRE
YXRhRG9jdW1lbnRQYXJzZXI6OmFwcGVuZEJ5dGVzKERvY3VtZW50V3JpdGVyKiB3cml0ZXIsIGNv
bnN0IGNoYXIqCiAgICAgICAgIHJldHVybjsKIAogICAgIHdyaXRlci0+cmVwb3J0RGF0YVJlY2Vp
dmVkKCk7Ci0gICAgYXBwZW5kKGRlY29kZWQpOworICAgIGFwcGVuZChkZWNvZGVkLnJlbGVhc2VJ
bXBsKCkpOwogfQogCiB2b2lkIERlY29kZWREYXRhRG9jdW1lbnRQYXJzZXI6OmZsdXNoKERvY3Vt
ZW50V3JpdGVyKiB3cml0ZXIpCkBAIC01Nyw3ICs1Nyw3IEBAIHZvaWQgRGVjb2RlZERhdGFEb2N1
bWVudFBhcnNlcjo6Zmx1c2goRG9jdW1lbnRXcml0ZXIqIHdyaXRlcikKICAgICAgICAgcmV0dXJu
OwogCiAgICAgd3JpdGVyLT5yZXBvcnREYXRhUmVjZWl2ZWQoKTsKLSAgICBhcHBlbmQocmVtYWlu
aW5nRGF0YSk7CisgICAgYXBwZW5kKHJlbWFpbmluZ0RhdGEucmVsZWFzZUltcGwoKSk7CiB9CiAK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGVjb2RlZERhdGFEb2N1bWVudFBh
cnNlci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RlY29kZWREYXRhRG9jdW1lbnRQYXJzZXIuaApp
bmRleCA0NzQ3YTRhMTM2ZTNiZDUyMWRmYjY2NTZmYzYyMTQwMjkxMDNkNjM5Li5hY2Y0NzdmYmIy
YTk1MzRiNGVhOTQ2YTAwNDE5YmUzNGIxMzBjNzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRGVjb2RlZERhdGFEb2N1bWVudFBhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9EZWNvZGVkRGF0YURvY3VtZW50UGFyc2VyLmgKQEAgLTQxLDcgKzQxLDcgQEAgcHJvdGVjdGVk
OgogCiBwcml2YXRlOgogICAgIC8vIGFwcGVuZCBpcyB1c2VkIGJ5IERvY3VtZW50V3JpdGVyOjpy
ZXBsYWNlRG9jdW1lbnQuCi0gICAgdmlydHVhbCB2b2lkIGFwcGVuZChjb25zdCBTZWdtZW50ZWRT
dHJpbmcmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFwcGVuZChQYXNzUmVmUHRyPFN0cmluZ0lt
cGw+KSA9IDA7CiAKICAgICAvLyBhcHBlbmRCeXRlcyBhbmQgZmx1c2ggYXJlIHVzZWQgYnkgRG9j
dW1lbnRXcml0ZXIgKHRoZSBsb2FkZXIpLgogICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRCeXRlcyhE
b2N1bWVudFdyaXRlciosIGNvbnN0IGNoYXIqIGJ5dGVzLCBzaXplX3QgbGVuZ3RoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCmluZGV4IDJjNWRmNjczMmE1YzMwZGRjOTIxNmUyOWNlMWEwMWMwNGRj
ZmZhMWUuLjI4MzViZDAxZTc3NTUyNGEyYmRjYTJiODI3NWYyMmUxMmUwODI2MGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcApAQCAtMTM1OCw3ICsxMzU4LDEyIEBAIEtVUkwgRG9jdW1lbnQ6OmJh
c2VVUkkoKSBjb25zdAogdm9pZCBEb2N1bWVudDo6c2V0Q29udGVudChjb25zdCBTdHJpbmcmIGNv
bnRlbnQpCiB7CiAgICAgb3BlbigpOwotICAgIG1fcGFyc2VyLT5hcHBlbmQoY29udGVudCk7Cisg
ICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHByb2JhYmx5IHVzZSBpbnNlcnQoKSwgYnV0IHRoYXQn
cyAoaW50ZW50aW9uYWxseSkKKyAgICAvLyBub3QgaW1wbGVtZW50ZWQgZm9yIHRoZSBYTUwgcGFy
c2VyIGFzIGl0J3Mgbm9ybWFsbHkgc3lub255bW91cyB3aXRoCisgICAgLy8gZG9jdW1lbnQud3Jp
dGUoKS4gYXBwZW5kKCkgd2lsbCBlbmQgdXAgeWllbGRpbmcsIGJ1dCBjbG9zZSgpIHdpbGwKKyAg
ICAvLyBwdW1wIHRoZSB0b2tlbml6ZXIgc3luY3Job25vdXNseSBhbmQgZmluaXNoIHRoZSBwYXJz
ZS4KKyAgICBtX3BhcnNlci0+cGluVG9NYWluVGhyZWFkKCk7CisgICAgbV9wYXJzZXItPmFwcGVu
ZChjb250ZW50LmltcGwoKSk7CiAgICAgY2xvc2UoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50UGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnRQYXJzZXIuaAppbmRleCBhYWYxMWIyZjU5OGMzODY4ZTY0OWEzNDM1ZmQ0MThiNzA4ODVlNWM2
Li5mNjVkMzY5OTJkMzQ2NDc0NTEyNGIyYWY0OGRiNGY0YTIwMTZjYzY1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnRQYXJzZXIuaApAQCAtMjQsNiArMjQsNyBAQAogI2lmbmRlZiBEb2N1bWVudFBh
cnNlcl9oCiAjZGVmaW5lIERvY3VtZW50UGFyc2VyX2gKIAorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpA
QCAtNTEsOSArNTIsMTAgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHBpblRvTWFpblRo
cmVhZCgpIHsgfQogCi0gICAgLy8gRklYTUU6IGFwcGVuZCgpIHNob3VsZCBiZSBwcml2YXRlLCBi
dXQgRG9jdW1lbnRXcml0ZXI6OnJlcGxhY2VEb2N1bWVudAotICAgIC8vIHVzZXMgaXQgZm9yIG5v
dy4KLSAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kKGNvbnN0IFNlZ21lbnRlZFN0cmluZyYpID0gMDsK
KyAgICAvLyBGSVhNRTogYXBwZW5kKCkgc2hvdWxkIGJlIHByaXZhdGUsIGJ1dCBEb2N1bWVudFdy
aXRlcjo6cmVwbGFjZURvY3VtZW50IHVzZXMgaXQgZm9yIG5vdy4KKyAgICAvLyBGSVhNRTogVGhp
cyByZWFsbHkgc2hvdWxkIHRha2UgYSBQYXNzT3duUHRyIHRvIHNpZ25pZnkgdGhhdCBpdCBleHBl
Y3RzIHRvIHRha2UKKyAgICAvLyBvd25lcnNoaXAgb2YgdGhlIGJ1ZmZlci4gVGhlIHBhcnNlciBl
eHBlY3RzIHRoZSBQYXNzUmVmUHRyIHRvIGhvbGQgdGhlIG9ubHkgcmVmIG9mIHRoZSBTdHJpbmdJ
bXBsLgorICAgIHZpcnR1YWwgdm9pZCBhcHBlbmQoUGFzc1JlZlB0cjxTdHJpbmdJbXBsPikgPSAw
OwogCiAgICAgdmlydHVhbCB2b2lkIGZpbmlzaCgpID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL1Jhd0RhdGFEb2N1bWVudFBhcnNlci5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L1Jhd0RhdGFEb2N1bWVudFBhcnNlci5oCmluZGV4IDhiZjk1MWNkYWIyMzg0NjYyOTY3YTVlMjA4
ZDAwNzExMDJmNmMxZjQuLjIyOGU5NGJkNzVmZDZmYjkwMjkwZjg4ZGI5MjZiNjk3OGU4ZjcyN2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9SYXdEYXRhRG9jdW1lbnRQYXJzZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmF3RGF0YURvY3VtZW50UGFyc2VyLmgKQEAgLTU2LDcg
KzU2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQog
Ci0gICAgdmlydHVhbCB2b2lkIGFwcGVuZChjb25zdCBTZWdtZW50ZWRTdHJpbmcmKQorICAgIHZp
cnR1YWwgdm9pZCBhcHBlbmQoUGFzc1JlZlB0cjxTdHJpbmdJbXBsPikKICAgICB7CiAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBE
aXJlY3RvcnlEb2N1bWVudC5jcHAKaW5kZXggYzE3NjIyYTIxMDJlZmYzYTY2MzNlYjY3N2I0NzI0
YTkyOWY1OTVmOC4uODc4ZmZiOTNiZDFjMTI3ODcxYjJjOGFlMGJhM2QyYmMxOTQ4NDAyZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAKQEAgLTU3LDcg
KzU3LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEZUUERpcmVjdG9y
eURvY3VtZW50UGFyc2VyKGRvY3VtZW50KSk7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIGFw
cGVuZChjb25zdCBTZWdtZW50ZWRTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kKFBh
c3NSZWZQdHI8U3RyaW5nSW1wbD4pOwogICAgIHZpcnR1YWwgdm9pZCBmaW5pc2goKTsKIAogICAg
IHZpcnR1YWwgYm9vbCBpc1dhaXRpbmdGb3JTY3JpcHRzKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KQEAgLTM0Niw4ICszNDYsMTAgQEAgdm9pZCBGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6
Y3JlYXRlQmFzaWNEb2N1bWVudCgpCiAgICAgYm9keUVsZW1lbnQtPmFwcGVuZENoaWxkKG1fdGFi
bGVFbGVtZW50LCBJR05PUkVfRVhDRVBUSU9OKTsKIH0KIAotdm9pZCBGVFBEaXJlY3RvcnlEb2N1
bWVudFBhcnNlcjo6YXBwZW5kKGNvbnN0IFNlZ21lbnRlZFN0cmluZyYgc291cmNlKQordm9pZCBG
VFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6YXBwZW5kKFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4g
aW5wdXRTb3VyY2UpCiB7CisgICAgU3RyaW5nIHNvdXJjZShpbnB1dFNvdXJjZSk7CisKICAgICAv
LyBNYWtlIHN1cmUgd2UgaGF2ZSB0aGUgdGFibGUgZWxlbWVudCB0byBhcHBlbmQgdG8gYnkgbG9h
ZGluZyB0aGUgdGVtcGxhdGUgc2V0IGluIHRoZSBwcmVmLCBvcgogICAgIC8vIGNyZWF0aW5nIGEg
dmVyeSBiYXNpYyBkb2N1bWVudCB3aXRoIHRoZSBhcHByb3ByaWF0ZSB0YWJsZQogICAgIGlmICgh
bV90YWJsZUVsZW1lbnQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxEb2N1bWVudFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
RG9jdW1lbnRQYXJzZXIuY3BwCmluZGV4IGJkNDhlM2U2NzdhMzJjYWQ2YmZhZTcxYjJlZGIwYWNm
YThjNGM0MjAuLjFiMDE2MjZhOWUxOTcyNjQ4N2U5ZmZhNjZiMGZiMGUzZDI4ZjgxOWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcApA
QCAtNjQ2LDcgKzY0Niw3IEBAIHZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjpzdG9wQmFja2dyb3Vu
ZFBhcnNlcigpCiAKICNlbmRpZgogCi12b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6YXBwZW5kKGNv
bnN0IFNlZ21lbnRlZFN0cmluZyYgc291cmNlKQordm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6OmFw
cGVuZChQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGlucHV0U291cmNlKQogewogICAgIGlmIChpc1N0
b3BwZWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNjU2LDggKzY1NiwxMiBAQCB2b2lkIEhUTUxE
b2N1bWVudFBhcnNlcjo6YXBwZW5kKGNvbnN0IFNlZ21lbnRlZFN0cmluZyYgc291cmNlKQogICAg
ICAgICBpZiAoIW1faGF2ZUJhY2tncm91bmRQYXJzZXIpCiAgICAgICAgICAgICBzdGFydEJhY2tn
cm91bmRQYXJzZXIoKTsKIAotICAgICAgICBIVE1MUGFyc2VyVGhyZWFkOjpzaGFyZWQoKS0+cG9z
dFRhc2soYmluZCgKLSAgICAgICAgICAgICZCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6YXBwZW5kLCBt
X2JhY2tncm91bmRQYXJzZXIsIHNvdXJjZS50b1N0cmluZygpLmlzb2xhdGVkQ29weSgpKSk7Cisg
ICAgICAgIEFTU0VSVChpbnB1dFNvdXJjZS0+aGFzT25lUmVmKCkpOworICAgICAgICBDbG9zdXJl
IGNsb3N1cmUgPSBiaW5kKCZCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6YXBwZW5kLCBtX2JhY2tncm91
bmRQYXJzZXIsIFN0cmluZyhpbnB1dFNvdXJjZSkpOworICAgICAgICAvLyBOT1RFOiBJbXBvcnRh
bnQgdGhhdCB0aGUgU3RyaW5nIHRlbXBvcmFyeSBpcyBkZXN0cm95ZWQgYmVmb3JlIHdlIHBvc3Qg
dGhlIHRhc2sKKyAgICAgICAgLy8gb3RoZXJ3aXNlIHRoZSBTdHJpbmcgY291bGQgY2FsbCBkZXJl
ZigpIG9uIGEgU3RyaW5nSW1wbCBub3cgb3duZWQgYnkgdGhlIGJhY2tncm91bmQgcGFyc2VyLgor
ICAgICAgICAvLyBXZSB3b3VsZCBsaWtlIHRvIEFTU0VSVChjbG9zdXJlLmFyZzMoKS0+aGFzT25l
UmVmKCkpIGJ1dCBzYWRseSB0aGUgYXJncyBhcmUgcHJpdmF0ZS4KKyAgICAgICAgSFRNTFBhcnNl
clRocmVhZDo6c2hhcmVkKCktPnBvc3RUYXNrKGNsb3N1cmUpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogI2VuZGlmCkBAIC02NjUsNiArNjY5LDcgQEAgdm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6
OmFwcGVuZChjb25zdCBTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSkKICAgICAvLyBwdW1wVG9rZW5p
emVyIGNhbiBjYXVzZSB0aGlzIHBhcnNlciB0byBiZSBkZXRhY2hlZCBmcm9tIHRoZSBEb2N1bWVu
dCwKICAgICAvLyBidXQgd2UgbmVlZCB0byBlbnN1cmUgaXQgaXNuJ3QgZGVsZXRlZCB5ZXQuCiAg
ICAgUmVmUHRyPEhUTUxEb2N1bWVudFBhcnNlcj4gcHJvdGVjdCh0aGlzKTsKKyAgICBTdHJpbmcg
c291cmNlKGlucHV0U291cmNlKTsKIAogICAgIGlmIChtX3ByZWxvYWRTY2FubmVyKSB7CiAgICAg
ICAgIGlmIChtX2lucHV0LmN1cnJlbnQoKS5pc0VtcHR5KCkgJiYgIWlzV2FpdGluZ0ZvclNjcmlw
dHMoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3Vt
ZW50UGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJz
ZXIuaAppbmRleCAxYmJmNzcxY2I4MTQ1ZjY3OWYxMGNiMWZlNDU2YjMyMDZiN2ZhZmNlLi44OTE1
NDZkYWIwZWZjMTU5Zjk1YjVhMGY4YTI3NzMwMGY3NWQ0ZDU3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuaApAQCAtOTcsNyArOTcsNyBAQCBw
dWJsaWM6CiAKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0KGNvbnN0IFNlZ21l
bnRlZFN0cmluZyYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBhcHBlbmQoY29uc3QgU2Vn
bWVudGVkU3RyaW5nJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGFwcGVuZChQYXNzUmVm
UHRyPFN0cmluZ0ltcGw+KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoKCkgT1ZF
UlJJREU7CiAKICAgICBIVE1MRG9jdW1lbnRQYXJzZXIoSFRNTERvY3VtZW50KiwgYm9vbCByZXBv
cnRFcnJvcnMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFZp
ZXdTb3VyY2VQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFZpZXdT
b3VyY2VQYXJzZXIuY3BwCmluZGV4IGYwMTljMmU5MDY2NDQwZTRjOGZjNTkzY2JlMjhjOTZiZTI3
YmIyMzYuLmZlOGMzMzg5M2VlZWE0N2QyZTcyNjg0NTc0MGMzYjJmODA3MDc4ZTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxWaWV3U291cmNlUGFyc2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVmlld1NvdXJjZVBhcnNlci5jcHAK
QEAgLTYyLDkgKzYyLDkgQEAgdm9pZCBIVE1MVmlld1NvdXJjZVBhcnNlcjo6cHVtcFRva2VuaXpl
cigpCiAgICAgfQogfQogCi12b2lkIEhUTUxWaWV3U291cmNlUGFyc2VyOjphcHBlbmQoY29uc3Qg
U2VnbWVudGVkU3RyaW5nJiBpbnB1dCkKK3ZvaWQgSFRNTFZpZXdTb3VyY2VQYXJzZXI6OmFwcGVu
ZChQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGlucHV0KQogewotICAgIG1faW5wdXQuYXBwZW5kVG9F
bmQoaW5wdXQpOworICAgIG1faW5wdXQuYXBwZW5kVG9FbmQoU3RyaW5nKGlucHV0KSk7CiAgICAg
cHVtcFRva2VuaXplcigpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9IVE1MVmlld1NvdXJjZVBhcnNlci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
SFRNTFZpZXdTb3VyY2VQYXJzZXIuaAppbmRleCA2NjJiZTcyYWUyMDY3NjM1NmYxZTNkNWJmODJl
ZGMxZmRlMDczMWZiLi40MGMwNjRiOGI2MzU5ZmUwZjhlZjhjYTY0YTcxNjE2ZWM3ZDg1MjQxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVmlld1NvdXJjZVBhcnNl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxWaWV3U291cmNlUGFyc2Vy
LmgKQEAgLTU5LDcgKzU5LDcgQEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKICAgICAvLyBEb2N1bWVu
dFBhcnNlcgogICAgIHZpcnR1YWwgdm9pZCBpbnNlcnQoY29uc3QgU2VnbWVudGVkU3RyaW5nJik7
Ci0gICAgdmlydHVhbCB2b2lkIGFwcGVuZChjb25zdCBTZWdtZW50ZWRTdHJpbmcmKTsKKyAgICB2
aXJ0dWFsIHZvaWQgYXBwZW5kKFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4pOwogICAgIHZpcnR1YWwg
dm9pZCBmaW5pc2goKTsKIAogICAgIEhUTUxWaWV3U291cmNlRG9jdW1lbnQqIGRvY3VtZW50KCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTFZpZXdTb3VyY2VEb2N1bWVudCo+KERlY29k
ZWREYXRhRG9jdW1lbnRQYXJzZXI6OmRvY3VtZW50KCkpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9UZXh0RG9jdW1lbnRQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvVGV4dERvY3VtZW50UGFyc2VyLmNwcAppbmRleCAzOTFmY2FjMGVjMzVj
NjZjZTA1OGViODJhNDgxOTJiZjZjZTJjNzA3Li44MGRiNGE5ZGMwNWJhNDM1ODgxZTU2Y2EzMDFi
ZWQwNDg4MzViNTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9UZXh0
RG9jdW1lbnRQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1RleHRE
b2N1bWVudFBhcnNlci5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgVGV4dERvY3VtZW50UGFyc2VyOjp+
VGV4dERvY3VtZW50UGFyc2VyKCkKIHsKIH0KIAotdm9pZCBUZXh0RG9jdW1lbnRQYXJzZXI6OmFw
cGVuZChjb25zdCBTZWdtZW50ZWRTdHJpbmcmIHRleHQpCit2b2lkIFRleHREb2N1bWVudFBhcnNl
cjo6YXBwZW5kKFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gdGV4dCkKIHsKICAgICBpZiAoIW1faGF2
ZUluc2VydGVkRmFrZVByZUVsZW1lbnQpCiAgICAgICAgIGluc2VydEZha2VQcmVFbGVtZW50KCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9UZXh0RG9jdW1lbnRQYXJz
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1RleHREb2N1bWVudFBhcnNlci5oCmlu
ZGV4IDFjY2NjNWIwZjI3ZGZkY2U2MDNjNDMwNzdkODIwYmI4MTlmNmE2YjIuLjk1ZTUxMjkzMTVk
OTM2YWFlNzAyNzI5ZWUzMDEzZTNkODAyNGFlMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL1RleHREb2N1bWVudFBhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL1RleHREb2N1bWVudFBhcnNlci5oCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoK
IHByaXZhdGU6CiAgICAgZXhwbGljaXQgVGV4dERvY3VtZW50UGFyc2VyKEhUTUxEb2N1bWVudCop
OwogCi0gICAgdmlydHVhbCB2b2lkIGFwcGVuZChjb25zdCBTZWdtZW50ZWRTdHJpbmcmKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgYXBwZW5kKFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4pOwogICAgIHZvaWQg
aW5zZXJ0RmFrZVByZUVsZW1lbnQoKTsKIAogICAgIGJvb2wgbV9oYXZlSW5zZXJ0ZWRGYWtlUHJl
RWxlbWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuY3BwCmluZGV4IGFk
YTUxOWFlYmJmMGIwNTk0MmYwZjI2OTRkMTE4Y2VlNzZiYzk1MmUuLjAzYjU3NDlmOGNmNjRmNDA3
Y2Q0MGQ0ODNkYjNiNWFmZmEzNTJlYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudFdyaXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
V3JpdGVyLmNwcApAQCAtODAsNyArODAsOSBAQCB2b2lkIERvY3VtZW50V3JpdGVyOjpyZXBsYWNl
RG9jdW1lbnQoY29uc3QgU3RyaW5nJiBzb3VyY2UsIERvY3VtZW50KiBvd25lckRvY3VtZQogICAg
ICAgICAvLyB0byBzdXBwb3J0IFJhd0RhdGFEb2N1bWVudFBhcnNlcnMuCiAgICAgICAgIGlmIChE
b2N1bWVudFBhcnNlciogcGFyc2VyID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+cGFyc2VyKCkpIHsK
ICAgICAgICAgICAgIHBhcnNlci0+cGluVG9NYWluVGhyZWFkKCk7Ci0gICAgICAgICAgICBwYXJz
ZXItPmFwcGVuZChzb3VyY2UpOworICAgICAgICAgICAgLy8gQmVjYXVzZSB3ZSdyZSBwaW5uZWQg
dG8gdGhlIG1haW4gdGhyZWFkIHdlIGRvbid0IG5lZWQgdG8gd29ycnkgYWJvdXQKKyAgICAgICAg
ICAgIC8vIHBhc3Npbmcgb3duZXJzaGlwIG9mIHRoZSBzb3VyY2Ugc3RyaW5nLgorICAgICAgICAg
ICAgcGFyc2VyLT5hcHBlbmQoc291cmNlLmltcGwoKSk7CiAgICAgICAgIH0KICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHAKaW5kZXgg
NGUxMzUwZTM0NjM4ZTg4MGI4N2M3NWQ2ZjdmMjE0NTZlYTVmOGI3Yy4uOWU5NWE1NDg1MGMyZTFl
NDNhMzVmYzVlOTE1MGUxZDNkZDZiM2QxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1s
L3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL3Bh
cnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHAKQEAgLTExMiw4ICsxMTIsOSBAQCB2b2lkIFhNTERv
Y3VtZW50UGFyc2VyOjppbnNlcnQoY29uc3QgU2VnbWVudGVkU3RyaW5nJikKICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKIH0KIAotdm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6YXBwZW5kKGNvbnN0
IFNlZ21lbnRlZFN0cmluZyYgc291cmNlKQordm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6YXBwZW5k
KFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gaW5wdXRTb3VyY2UpCiB7CisgICAgU2VnbWVudGVkU3Ry
aW5nIHNvdXJjZShpbnB1dFNvdXJjZSk7CiAgICAgaWYgKG1fc2F3WFNMVHJhbnNmb3JtIHx8ICFt
X3Nhd0ZpcnN0RWxlbWVudCkKICAgICAgICAgbV9vcmlnaW5hbFNvdXJjZUZvclRyYW5zZm9ybS5h
cHBlbmQoc291cmNlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9Y
TUxEb2N1bWVudFBhcnNlci5oIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVu
dFBhcnNlci5oCmluZGV4IGM1Y2Y1ZjY3MWMwMjcwYjMzZTQ4YTZmNmU1YjFmYWUxN2FiMDQyOWQu
LjNkNzI4MGM1NjU5YTZjNDY2OWJkMWRjZDZiYWYxMjFjZTQ2YjU4MWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmgKQEAgLTEwNyw3ICsxMDcsNyBA
QCBjbGFzcyBUZXh0OwogCiAgICAgICAgIC8vIEZyb20gRG9jdW1lbnRQYXJzZXIKICAgICAgICAg
dmlydHVhbCB2b2lkIGluc2VydChjb25zdCBTZWdtZW50ZWRTdHJpbmcmKTsKLSAgICAgICAgdmly
dHVhbCB2b2lkIGFwcGVuZChjb25zdCBTZWdtZW50ZWRTdHJpbmcmKTsKKyAgICAgICAgdmlydHVh
bCB2b2lkIGFwcGVuZChQYXNzUmVmUHRyPFN0cmluZ0ltcGw+KTsKICAgICAgICAgdmlydHVhbCB2
b2lkIGZpbmlzaCgpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNXYWl0aW5nRm9yU2NyaXB0cygp
IGNvbnN0OwogICAgICAgICB2aXJ0dWFsIHZvaWQgc3RvcFBhcnNpbmcoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcApp
bmRleCA1MGJiNGZmZTM3ODU1MzVjNWRiNjEwMTdjMzlkNzE3YmVhOGU0ZWU3Li4xYmQwZjBjNWY2
YWQzN2NmNzIyMDk0ZGYzNTljMDA4ZjJiN2M4NzVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCkBAIC0xNDQ0LDcg
KzE0NDQsMTAgQEAgdm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6cmVzdW1lUGFyc2luZygpCiAgICAg
Ly8gVGhlbiwgd3JpdGUgYW55IHBlbmRpbmcgZGF0YQogICAgIFNlZ21lbnRlZFN0cmluZyByZXN0
ID0gbV9wZW5kaW5nU3JjOwogICAgIG1fcGVuZGluZ1NyYy5jbGVhcigpOwotICAgIGFwcGVuZChy
ZXN0KTsKKyAgICAvLyBUaGVyZSBpcyBub3JtYWxseSBvbmx5IG9uZSBzdHJpbmcgbGVmdCwgc28g
dG9TdHJpbmcoKSBzaG91bGRuJ3QgY29weS4KKyAgICAvLyBJbiBhbnkgY2FzZSwgdGhlIFhNTCBw
YXJzZXIgcnVucyBvbiB0aGUgbWFpbiB0aHJlYWQgYW5kIGl0J3MgT0sgaWYKKyAgICAvLyB0aGUg
cGFzc2VkIHN0cmluZyBoYXMgbW9yZSB0aGFuIG9uZSByZWZlcmVuY2UuCisgICAgYXBwZW5kKHJl
c3QudG9TdHJpbmcoKS5pbXBsKCkpOwogCiAgICAgLy8gRmluYWxseSwgaWYgZmluaXNoKCkgaGFz
IGJlZW4gY2FsbGVkIGFuZCB3cml0ZSgpIGRpZG4ndCByZXN1bHQKICAgICAvLyBpbiBhbnkgZnVy
dGhlciBjYWxsYmFja3MgYmVpbmcgcXVldWVkLCBjYWxsIGVuZCgpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>