<?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>49257</bug_id>
          
          <creation_ts>2010-11-09 08:34:08 -0800</creation_ts>
          <short_desc>[Chromium] DRT does not have LayoutTestController.pageSizeAndMarginsInPixels</short_desc>
          <delta_ts>2011-11-11 15:52:37 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>46152</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mihai Parparita">mihaip</reporter>
          <assigned_to name="Stephen Chenney">schenney</assigned_to>
          <cc>fishd</cc>
    
    <cc>hamaji</cc>
    
    <cc>morrita</cc>
    
    <cc>schenney</cc>
    
    <cc>tkent</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yuzo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>306808</commentid>
    <comment_count>0</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-11-09 08:34:08 -0800</bug_when>
    <thetext>The following layout test is failing on all Chromium platforms:

printing/page-format-data-display-none.html

Probable cause:

The result shows CONSOLE MESSAGE: line 25: Uncaught TypeError: Object [object Object] has no method &apos;pageSizeAndMarginsInPixels&apos;

This is because the Chromium DRT LayoutTestController doesn&apos;t expose that functionality. 

See also http://crbug.com/62515 about adding that same functionality to test_shell.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>474208</commentid>
    <comment_count>1</comment_count>
    <who name="Stephen Chenney">schenney</who>
    <bug_when>2011-09-27 13:59:49 -0700</bug_when>
    <thetext>Adding support for pageSizeAndMarginInPixels and isPageBoxVisible simply requires pushing the query through from LayoutTestController to the existing methods in WebFrameImpl.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475051</commentid>
    <comment_count>2</comment_count>
    <who name="Stephen Chenney">schenney</who>
    <bug_when>2011-09-28 15:38:15 -0700</bug_when>
    <thetext>I have a patch ready for this that I will put up as soon as 46152 is reviewed committed. It also fixes the other missing printing layout test methods.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>494974</commentid>
    <comment_count>3</comment_count>
      <attachid>113387</attachid>
    <who name="Stephen Chenney">schenney</who>
    <bug_when>2011-11-02 15:31:41 -0700</bug_when>
    <thetext>Created attachment 113387
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>494976</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-02 15:33:16 -0700</bug_when>
    <thetext>Please wait for approval from fishd@chromium.org before submitting because this patch contains changes to the Chromium public API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>494978</commentid>
    <comment_count>5</comment_count>
      <attachid>113387</attachid>
    <who name="Stephen Chenney">schenney</who>
    <bug_when>2011-11-02 15:33:39 -0700</bug_when>
    <thetext>Comment on attachment 113387
Patch

This adds the remaining missing printing functionality from LayoutTestController.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495053</commentid>
    <comment_count>6</comment_count>
      <attachid>113387</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-11-02 16:45:31 -0700</bug_when>
    <thetext>Comment on attachment 113387
Patch

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

&gt; Source/WebKit/chromium/public/WebFrame.h:483
&gt; +    virtual WebString pageProperty(const WebSize&amp; pageSize,

nit: this should be called &quot;getPageProperty&quot;... the attribute-style name pageProperty is
generally only used for things that resemble attribute getters.  here, we have a method
with a complex set of input arguments that returns a result.  it seems like a &quot;get&quot; prefix
is therefore warranted.

another question:  is it possible that you will want to get multiple page properties?
if so, then it seems like there is some overhead with having to repeatedly setup the
print context.  why not just say that you can only query page properties between
printBegin and printEnd?

also, have you considered making printBegin possibly return a WebPrintContext?  even
the pageCount attribute could be a property of WebPrintContext (i.e., printBegin
would return a |const WebPrintContext*| instead of an integer page count).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495120</commentid>
    <comment_count>7</comment_count>
      <attachid>113387</attachid>
    <who name="Stephen Chenney">schenney</who>
    <bug_when>2011-11-02 18:11:47 -0700</bug_when>
    <thetext>Comment on attachment 113387
Patch

I&apos;ll address fishd&apos;s comments before proceeding. Thanks for helping me learn.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495666</commentid>
    <comment_count>8</comment_count>
      <attachid>113528</attachid>
    <who name="Stephen Chenney">schenney</who>
    <bug_when>2011-11-03 11:23:27 -0700</bug_when>
    <thetext>Created attachment 113528
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495673</commentid>
    <comment_count>9</comment_count>
    <who name="Stephen Chenney">schenney</who>
    <bug_when>2011-11-03 11:33:01 -0700</bug_when>
    <thetext>In response to Darin suggestions, I have renamed the get functions to reflect their getting nature. It includes a rename on one existing method to maintain consistency.

I also moved the printBegin/printEnd set-up out of WebFrameImpl and into the test code. This would allow multiple calls to obtain multiple properties without re-starting print layout. However, it is not used that way right now because this functionality is only accessed through JS calls. I really don&apos;t want to change all the printing tests to make it more rational, at least not right now.

I don&apos;t want to change anything about printBegin/printEnd because that code is used in several places and it would be a major change. In particular, the declarations for PrintContext are in WebCore, and are not included in the Layout Test code that is a big customer for WebKit::WebFrame::printBegin. And it would affect other WebKit ports, I suspect.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>496083</commentid>
    <comment_count>10</comment_count>
      <attachid>113528</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-11-04 00:24:38 -0700</bug_when>
    <thetext>Comment on attachment 113528
Patch

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

&gt; Source/WebKit/chromium/src/WebFrameImpl.cpp:1479
&gt; +                                                 int&amp; marginTop,

not that you need to change this, but this should really take a WebRect output parameter to describe the margin instead of 4 distinct ints.

&gt; Tools/DumpRenderTree/chromium/LayoutTestController.cpp:1653
&gt; +        if (!arguments[argOffset].isNumber()

hmm, so much repetition... this kind of looks like it could be expressed using a for loop:

{
   int* results[] = {
       pageNumber,
       width,
       height,
       marginTop,
       marginRight,
       marginBottom,
       marginLeft
   };
   const int resultsLen = sizeof(results) / sizeof(results[0]);
   for (int i = 0; i &lt; resultsLen; ++i)
       *results[i] = 0;
   if (arguments.size() - argOffset == resultsLen) {
       for (int i = 0; i &lt; resultsLen; ++i) {
           if (!arguments[argOffset + i].isNumber())
               return false;
           *results[i] = arguments[argOffset + i].toInt32();
       }
       return true;
   }
   return arguments.size() == argOffset;
}

&gt; Tools/DumpRenderTree/chromium/LayoutTestController.cpp:1751
&gt; +    result-&gt;set((frame-&gt;getPageProperty(cppVariantToWebString(arguments[0]), pageNumber)).utf8());

nit: no need for the extra ()&apos;s around the frame-&gt;getPageProperty call.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>496434</commentid>
    <comment_count>11</comment_count>
      <attachid>113706</attachid>
    <who name="Stephen Chenney">schenney</who>
    <bug_when>2011-11-04 13:43:27 -0700</bug_when>
    <thetext>Created attachment 113706
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>496438</commentid>
    <comment_count>12</comment_count>
      <attachid>113706</attachid>
    <who name="Stephen Chenney">schenney</who>
    <bug_when>2011-11-04 13:46:50 -0700</bug_when>
    <thetext>Comment on attachment 113706
Patch

More work to make the code prettier. Rather than the loop option for param passing, I went with encapsulating the parsing of an int from the argument list. Somewhat cleaner, I think, but not perfect. Still, I don&apos;t want to mess with it too much.

Regarding the WebSize for the margin data, I am generally against using a class to hold values that have a meaning significant;y different from the member names/class. In this case, the margins are not a rectangle - they are 4 distinct integers actually representing an offset from a rectangle.

And I got rid of those unnecessary parans around the function call.

Still learning ...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>496441</commentid>
    <comment_count>13</comment_count>
    <who name="Stephen Chenney">schenney</who>
    <bug_when>2011-11-04 13:49:10 -0700</bug_when>
    <thetext>hamaji or marrita, time to look at it I think. Let&apos;s contribute to reducing failing test count.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499364</commentid>
    <comment_count>14</comment_count>
      <attachid>114370</attachid>
    <who name="Stephen Chenney">schenney</who>
    <bug_when>2011-11-09 14:35:44 -0800</bug_when>
    <thetext>Created attachment 114370
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499367</commentid>
    <comment_count>15</comment_count>
    <who name="Stephen Chenney">schenney</who>
    <bug_when>2011-11-09 14:40:27 -0800</bug_when>
    <thetext>Updated patch just to resolve merge conflicts with Changelogs. Someone please review soon so that it commits cleanly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499411</commentid>
    <comment_count>16</comment_count>
      <attachid>114370</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-11-09 15:29:07 -0800</bug_when>
    <thetext>Comment on attachment 114370
Patch

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

&gt; Source/WebKit/chromium/public/WebFrame.h:475
&gt; +    virtual void getPageSizeAndMarginsInPixels(int pageIndex,

Is it safe to rename this?  I see it called from chrome:
http://codesearch.google.com/codesearch#OAMlx_jo-ck/src/chrome/renderer/print_web_view_helper.cc&amp;exact_package=chromium&amp;ct=rc&amp;cd=21&amp;q=pageSizeAndMarginsInPixels&amp;sq=

Also, webkit style is to not use the &apos;get&apos; prefix.

&gt; Source/WebKit/chromium/public/WebFrame.h:485
&gt; +    virtual WebString getPageProperty(const WebString&amp; propertyName,
&gt; +                                      int pageIndex) = 0;

No &apos;get&apos;.  For example, LayoutTestController{Mac,Win,Qt,etc}.cpp all use pageProperty().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499414</commentid>
    <comment_count>17</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-11-09 15:30:34 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; &gt; Source/WebKit/chromium/public/WebFrame.h:485
&gt; &gt; +    virtual WebString getPageProperty(const WebString&amp; propertyName,
&gt; &gt; +                                      int pageIndex) = 0;
&gt; 
&gt; No &apos;get&apos;.  For example, LayoutTestController{Mac,Win,Qt,etc}.cpp all use pageProperty().

Hah, I see this is the opposite of what Darin said.  That said, I think it&apos;s still better to not have &apos;get&apos; here since the other ports don&apos;t use &apos;get&apos;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499501</commentid>
    <comment_count>18</comment_count>
      <attachid>114370</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-11-09 17:08:25 -0800</bug_when>
    <thetext>Comment on attachment 114370
Patch

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

&gt;&gt; Source/WebKit/chromium/public/WebFrame.h:475
&gt;&gt; +    virtual void getPageSizeAndMarginsInPixels(int pageIndex,
&gt; 
&gt; Is it safe to rename this?  I see it called from chrome:
&gt; http://codesearch.google.com/codesearch#OAMlx_jo-ck/src/chrome/renderer/print_web_view_helper.cc&amp;exact_package=chromium&amp;ct=rc&amp;cd=21&amp;q=pageSizeAndMarginsInPixels&amp;sq=
&gt; 
&gt; Also, webkit style is to not use the &apos;get&apos; prefix.

I seem to recall a discussion about the use of the &apos;get&apos; prefix.  I thought we only drop the &apos;get&apos; prefix for things that are intended as attribute getters.  An attribute getter takes no parameters.  Maybe I&apos;m mistaken?

Instead of &apos;get&apos; we could also use &apos;query&apos; :-)  My point is that it seems like it is perhaps helpful to signal that we are doing some work here.  I can see that WebKit is very inconsistent on the usage of the &apos;get&apos; prefix.  Just look at Document!

My main immediate concern is about making the WebKit API use a consistent style for things like this.  It is easier to fixup WebCore style underneath the API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499517</commentid>
    <comment_count>19</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-11-09 17:24:56 -0800</bug_when>
    <thetext>I&apos;m wrong, get is for functions with out arguments:
https://lists.webkit.org/pipermail/webkit-dev/2011-October/018154.html

Seems like we want to fix pageSizeAndMarginsInPixels in all the ports.  That said, this change can&apos;t rename pageSizeAndMarginsInPixels without breaking Chromium.

getPageProperty doesn&apos;t have out params, so it should just be pageProperty.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500022</commentid>
    <comment_count>20</comment_count>
      <attachid>114524</attachid>
    <who name="Stephen Chenney">schenney</who>
    <bug_when>2011-11-10 10:04:14 -0800</bug_when>
    <thetext>Created attachment 114524
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500023</commentid>
    <comment_count>21</comment_count>
    <who name="Stephen Chenney">schenney</who>
    <bug_when>2011-11-10 10:05:26 -0800</bug_when>
    <thetext>Patch fixes the naming of methods. I can&apos;t believe I screwed up the dependency of chromium code on the renamed method. Anyway, I think now everything is named correctly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500030</commentid>
    <comment_count>22</comment_count>
      <attachid>114524</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-11-10 10:29:37 -0800</bug_when>
    <thetext>Comment on attachment 114524
Patch

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

LGTM, but I defer to fishd for final review.

&gt; Tools/DumpRenderTree/chromium/LayoutTestController.cpp:1604
&gt; +    if ((int)arguments.size() &gt; argIndex) {

Nit: Use a C++ style cast: static_cast&lt;int&gt;

&gt; Tools/DumpRenderTree/chromium/LayoutTestController.cpp:1622
&gt; +    int argCount = (int)arguments.size() - argOffset;

ditto

&gt; Tools/DumpRenderTree/chromium/LayoutTestController.cpp:1633
&gt; +    if ((int)arguments.size() &gt; argOffset + 1)

ditto

&gt; Tools/DumpRenderTree/chromium/LayoutTestController.cpp:1644
&gt; +    int argCount = (int)arguments.size() - argOffset;

ditto

&gt; Tools/DumpRenderTree/chromium/LayoutTestController.cpp:1704
&gt; +    result-&gt;set(resultString.str().c_str());

Nit: You can drop the .c_str() since CppVariant::set can take a std::string.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500057</commentid>
    <comment_count>23</comment_count>
      <attachid>114528</attachid>
    <who name="Stephen Chenney">schenney</who>
    <bug_when>2011-11-10 11:06:56 -0800</bug_when>
    <thetext>Created attachment 114528
Patch

Good call on casting. Fixed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500497</commentid>
    <comment_count>24</comment_count>
      <attachid>114528</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-11-10 21:09:33 -0800</bug_when>
    <thetext>Comment on attachment 114528
Patch

Thanks Tony for digging up that webkit-dev thread.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>501185</commentid>
    <comment_count>25</comment_count>
      <attachid>114528</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-11 15:52:26 -0800</bug_when>
    <thetext>Comment on attachment 114528
Patch

Clearing flags on attachment: 114528

Committed r100040: &lt;http://trac.webkit.org/changeset/100040&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>501186</commentid>
    <comment_count>26</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-11 15:52:37 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113387</attachid>
            <date>2011-11-02 15:31:41 -0700</date>
            <delta_ts>2011-11-02 18:11:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-49257-20111102183140.patch</filename>
            <type>text/plain</type>
            <size>14254</size>
            <attacher name="Stephen Chenney">schenney</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA5OTEwNCkKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcg
QEAKKzIwMTEtMTEtMDIgIFN0ZXBoZW4gQ2hlbm5leSAgPHNjaGVubmV5QGNocm9taXVtLm9yZz4K
KworICAgICAgICBbQ2hyb21pdW1dIERSVCBkb2VzIG5vdCBoYXZlIExheW91dFRlc3RDb250cm9s
bGVyLnBhZ2VTaXplQW5kTWFyZ2luc0luUGl4ZWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD00OTI1NworCisgICAgICAgIEFkZCB0aGUgV2ViRnJhbWU6
OnBhZ2VQcm9wZXJ0eSBtZXRob2QgZm9yIENocm9taXVtLgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcHVibGljL1dlYkZyYW1lLmg6CisgICAgICAg
ICogc3JjL1dlYkZyYW1lSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lSW1wbDo6
cGFnZVByb3BlcnR5KToKKyAgICAgICAgKiBzcmMvV2ViRnJhbWVJbXBsLmg6CisKIDIwMTEtMTAt
MzEgIE5hdCBEdWNhICA8bmR1Y2FAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0g
U2xvdyBkb3duIGNvbW1pdCBhbmQgZHJhdyByYXRlIGJhc2VkIG9uIHZpc2liaWxpdHkgYW5kIGRy
YXcgY29tcGxldGlvbgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJh
bWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFt
ZS5oCShyZXZpc2lvbiA5OTA5MikKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YkZyYW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3OSw2ICs0NzksMTEgQEAgcHVibGljOgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQmIG1hcmdpbkJvdHRv
bSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50JiBtYXJn
aW5MZWZ0KSA9IDA7CiAKKyAgICAvLyBSZXR1cm5zIHRoZSB2YWx1ZSBmb3IgYSBwYWdlIHByb3Bl
cnR5IHRoYXQgaXMgb25seSBkZWZpbmVkIHdoZW4gcHJpbnRpbmcuCisgICAgdmlydHVhbCBXZWJT
dHJpbmcgcGFnZVByb3BlcnR5KGNvbnN0IFdlYlNpemUmIHBhZ2VTaXplLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJTdHJpbmcmIHByb3BlcnR5TmFtZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHBhZ2VJbmRleCkgPSAwOworCiAg
ICAgLy8gRmluZC1pbi1wYWdlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCiAKICAgICAvLyBTZWFyY2hlcyBhIGZyYW1lIGZvciBhIGdpdmVu
IHN0cmluZy4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBs
LmNwcAkocmV2aXNpb24gOTkwOTIpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJG
cmFtZUltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDkxLDYgKzE0OTEsMjQgQEAgdm9pZCBX
ZWJGcmFtZUltcGw6OnBhZ2VTaXplQW5kTWFyZ2luc0luUAogICAgIHBhZ2VTaXplID0gc2l6ZTsK
IH0KIAorV2ViU3RyaW5nIFdlYkZyYW1lSW1wbDo6cGFnZVByb3BlcnR5KGNvbnN0IFdlYlNpemUm
IHBhZ2VTaXplSW5QaXhlbHMsIGNvbnN0IFdlYlN0cmluZyYgcHJvcGVydHlOYW1lLCBpbnQgcGFn
ZUluZGV4KQoreworICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPnVwZGF0ZUxheW91dCgpOworCisg
ICAgQ2hyb21lUHJpbnRDb250ZXh0IHByaW50Q29udGV4dChtX2ZyYW1lKTsKKyAgICBwcmludENv
bnRleHQuYmVnaW4ocGFnZVNpemVJblBpeGVscy53aWR0aCwgcGFnZVNpemVJblBpeGVscy5oZWln
aHQpOworCisgICAgZmxvYXQgcGFnZUhlaWdodDsKKyAgICBwcmludENvbnRleHQuY29tcHV0ZVBh
Z2VSZWN0cyhGbG9hdFJlY3QoRmxvYXRQb2ludCgwLCAwKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBGbG9hdFNpemUocGFnZVNpemVJblBpeGVscy53aWR0aCwgcGFnZVNpemVJ
blBpeGVscy5oZWlnaHQpKSwgMCwgMCwgMSwgcGFnZUhlaWdodCk7CisKKyAgICBTdHJpbmcgcmVz
dWx0ID0gcHJpbnRDb250ZXh0LnBhZ2VQcm9wZXJ0eShtX2ZyYW1lLCBwcm9wZXJ0eU5hbWUudXRm
OCgpLmRhdGEoKSwgcGFnZUluZGV4KTsKKworICAgIHByaW50Q29udGV4dC5lbmQoKTsKKworICAg
IHJldHVybiByZXN1bHQ7Cit9CisKIGJvb2wgV2ViRnJhbWVJbXBsOjpmaW5kKGludCBpZGVudGlm
aWVyLAogICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViU3RyaW5nJiBzZWFyY2hUZXh0
LAogICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViRmluZE9wdGlvbnMmIG9wdGlvbnMs
CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuaAkocmV2aXNp
b24gOTkwOTIpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuaAko
d29ya2luZyBjb3B5KQpAQCAtMTc4LDYgKzE3OCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50JiBtYXJnaW5SaWdodCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50JiBtYXJnaW5Cb3R0b20sCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCYgbWFyZ2luTGVm
dCk7CisgICAgdmlydHVhbCBXZWJTdHJpbmcgcGFnZVByb3BlcnR5KGNvbnN0IFdlYlNpemUmIHBh
Z2VTaXplLCBjb25zdCBXZWJTdHJpbmcmIHByb3BlcnR5TmFtZSwgaW50IHBhZ2VJbmRleCk7CiAg
ICAgdmlydHVhbCB2b2lkIHByaW50UGFnZXNXaXRoQm91bmRhcmllcyhXZWJDYW52YXMqLCBjb25z
dCBXZWJTaXplJik7CiAgICAgdmlydHVhbCBib29sIGZpbmQoCiAgICAgICAgIGludCBpZGVudGlm
aWVyLCBjb25zdCBXZWJTdHJpbmcmIHNlYXJjaFRleHQsIGNvbnN0IFdlYkZpbmRPcHRpb25zJiwK
SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDk5MTA0KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMjEgQEAKKzIwMTEtMTEtMDIgIFN0ZXBoZW4gQ2hlbm5leSAgPHNjaGVubmV5QGNocm9taXVt
Lm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIERSVCBkb2VzIG5vdCBoYXZlIExheW91dFRlc3RD
b250cm9sbGVyLnBhZ2VTaXplQW5kTWFyZ2luc0luUGl4ZWxzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00OTI1NworCisgICAgICAgIEFkZHMgdGhlIHJl
bWFpbmluZyBtaXNzaW5nIGxheW91dCB0ZXN0IGZ1bmN0aW9uYWxpdHkgZm9yIHByaW50aW5nLgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoTGF5
b3V0VGVzdENvbnRyb2xsZXI6OkxheW91dFRlc3RDb250cm9sbGVyKTogQWRkIGJpbmRpbmdzIGZv
ciBuZXcgSlMgbWV0aG9kcworICAgICAgICAocGFyc2VQYWdlTnVtYmVyKTogTWV0aG9kIHRvIHBh
cnNlIEpTIGFyZ3VtZW50cyBmb3IgYSBwYWdlIG51bWJlcgorICAgICAgICAocGFyc2VQYWdlTnVt
YmVyU2l6ZU1hcmdpbnMpOiBNZXRob2QgdG8gcGFyc2UgSlMgYXJndW1lbnRzIGZvciBwYWdlIHNp
emUgYW5kIG1hcmdpbnMKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpwYWdlU2l6ZUFu
ZE1hcmdpbnNJblBpeGVscyk6IEdldCB0aGUgcGFnZSBzaXplIGFuZCBtYXJnaW5zIGZvciBhIGdp
dmVuIHBhZ2UuCisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6aXNQYWdlQm94VmlzaWJs
ZSk6IGdldCB0aGUgdmlzaWJpbGl0eSBzdGF0dXMgZm9yIHByaW50aW5nCisgICAgICAgIChMYXlv
dXRUZXN0Q29udHJvbGxlcjo6cGFnZVByb3BlcnR5KTogZ2V0IGEgc3BlY2lmaWMgQ1NTIHByb3Bl
cnR5IHdoZW4gaW4gcHJpdG5pbmcgbW9kZQorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL0xheW91dFRlc3RDb250cm9sbGVyLmg6IEFkZCBkZWNsYXJhdGlvbnMgZm9yIG5ldyBtZXRo
b2RzCisKIDIwMTEtMTEtMDIgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4K
IAogICAgICAgICBVcGRhdGUgZm9yIHRoZSBXZWJLaXQyIEFQSSBmaXhhZ2UuCkluZGV4OiBUb29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xs
ZXIuY3BwCShyZXZpc2lvbiA5OTA5MikKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L0xheW91dFRlc3RDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjMsNiArNjMsNyBA
QAogI2luY2x1ZGUgPGNsb2NhbGU+CiAjaW5jbHVkZSA8Y3N0ZGxpYj4KICNpbmNsdWRlIDxsaW1p
dHM+CisjaW5jbHVkZSA8c3N0cmVhbT4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
IAogI2lmIE9TKFdJTkRPV1MpCkBAIC0xMjIsNiArMTIzLDcgQEAgTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OkxheW91dFRlc3RDb250cm9sbAogICAgIGJpbmRNZXRob2QoImdyYW50RGVza3RvcE5vdGlm
aWNhdGlvblBlcm1pc3Npb24iLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OmdyYW50RGVza3RvcE5v
dGlmaWNhdGlvblBlcm1pc3Npb24pOwogICAgIGJpbmRNZXRob2QoImhhc1NwZWxsaW5nTWFya2Vy
IiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpoYXNTcGVsbGluZ01hcmtlcik7CiAgICAgYmluZE1l
dGhvZCgiaXNDb21tYW5kRW5hYmxlZCIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6aXNDb21tYW5k
RW5hYmxlZCk7CisgICAgYmluZE1ldGhvZCgiaXNQYWdlQm94VmlzaWJsZSIsICZMYXlvdXRUZXN0
Q29udHJvbGxlcjo6aXNQYWdlQm94VmlzaWJsZSk7CiAgICAgYmluZE1ldGhvZCgibGF5ZXJUcmVl
QXNUZXh0IiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpsYXllclRyZWVBc1RleHQpOwogICAgIGJp
bmRNZXRob2QoImxvc2VDb21wb3NpdG9yQ29udGV4dCIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6
bG9zZUNvbXBvc2l0b3JDb250ZXh0KTsKICAgICBiaW5kTWV0aG9kKCJtYXJrZXJUZXh0Rm9yTGlz
dEl0ZW0iLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6Om1hcmtlclRleHRGb3JMaXN0SXRlbSk7CkBA
IC0xMzIsNiArMTM0LDggQEAgTGF5b3V0VGVzdENvbnRyb2xsZXI6OkxheW91dFRlc3RDb250cm9s
bAogICAgIGJpbmRNZXRob2QoIm9iakNJZGVudGl0eUlzRXF1YWwiLCAmTGF5b3V0VGVzdENvbnRy
b2xsZXI6Om9iakNJZGVudGl0eUlzRXF1YWwpOwogICAgIGJpbmRNZXRob2QoIm92ZXJyaWRlUHJl
ZmVyZW5jZSIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6b3ZlcnJpZGVQcmVmZXJlbmNlKTsKICAg
ICBiaW5kTWV0aG9kKCJwYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQiLCAmTGF5b3V0VGVzdENvbnRy
b2xsZXI6OnBhZ2VOdW1iZXJGb3JFbGVtZW50QnlJZCk7CisgICAgYmluZE1ldGhvZCgicGFnZVBy
b3BlcnR5IiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpwYWdlUHJvcGVydHkpOworICAgIGJpbmRN
ZXRob2QoInBhZ2VTaXplQW5kTWFyZ2luc0luUGl4ZWxzIiwgJkxheW91dFRlc3RDb250cm9sbGVy
OjpwYWdlU2l6ZUFuZE1hcmdpbnNJblBpeGVscyk7CiAgICAgYmluZE1ldGhvZCgicGF0aFRvTG9j
YWxSZXNvdXJjZSIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGF0aFRvTG9jYWxSZXNvdXJjZSk7
CiAgICAgYmluZE1ldGhvZCgicGF1c2VBbmltYXRpb25BdFRpbWVPbkVsZW1lbnRXaXRoSWQiLCAm
TGF5b3V0VGVzdENvbnRyb2xsZXI6OnBhdXNlQW5pbWF0aW9uQXRUaW1lT25FbGVtZW50V2l0aElk
KTsKICAgICBiaW5kTWV0aG9kKCJwYXVzZVRyYW5zaXRpb25BdFRpbWVPbkVsZW1lbnRXaXRoSWQi
LCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBhdXNlVHJhbnNpdGlvbkF0VGltZU9uRWxlbWVudFdp
dGhJZCk7CkBAIC0xNjE2LDYgKzE2MjAsNjAgQEAgc3RhdGljIGJvb2wgcGFyc2VQYWdlU2l6ZVBh
cmFtZXRlcnMoY29ucwogICAgIHJldHVybiB0cnVlOwogfQogCitzdGF0aWMgYm9vbCBwYXJzZVBh
Z2VOdW1iZXIoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIGludCBhcmdPZmZzZXQs
IGludCogcGFnZU51bWJlcikKK3sKKyAgICAqcGFnZU51bWJlciA9IDA7CisgICAgc3dpdGNoIChh
cmd1bWVudHMuc2l6ZSgpIC0gYXJnT2Zmc2V0KSB7CisgICAgY2FzZSAxOgorICAgICAgICBpZiAo
IWFyZ3VtZW50c1thcmdPZmZzZXRdLmlzTnVtYmVyKCkpCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgICpwYWdlTnVtYmVyID0gYXJndW1lbnRzW2FyZ09mZnNldF0udG9JbnQzMigp
OworICAgICAgICAvLyBmYWxsIHRocm91Z2guCisgICAgY2FzZSAwOgorICAgICAgICBicmVhazsK
KyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0
cnVlOworfQorCitzdGF0aWMgYm9vbCBwYXJzZVBhZ2VOdW1iZXJTaXplTWFyZ2lucyhjb25zdCBD
cHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgaW50IGFyZ09mZnNldCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGludCogcGFnZU51bWJlciwgaW50KiB3aWR0aCwgaW50
KiBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQqIG1h
cmdpblRvcCwgaW50KiBtYXJnaW5SaWdodCwgaW50KiBtYXJnaW5Cb3R0b20sIGludCogbWFyZ2lu
TGVmdCkKK3sKKyAgICAqcGFnZU51bWJlciA9IDA7CisgICAgKndpZHRoID0gMDsKKyAgICAqaGVp
Z2h0ID0gMDsKKyAgICAqbWFyZ2luVG9wID0gMDsKKyAgICAqbWFyZ2luUmlnaHQgPSAwOworICAg
ICptYXJnaW5Cb3R0b20gPSAwOworICAgICptYXJnaW5MZWZ0ID0gMDsKKyAgICBzd2l0Y2ggKGFy
Z3VtZW50cy5zaXplKCkgLSBhcmdPZmZzZXQpIHsKKyAgICBjYXNlIDc6CisgICAgICAgIGlmICgh
YXJndW1lbnRzW2FyZ09mZnNldF0uaXNOdW1iZXIoKQorICAgICAgICAgICAgfHwgIWFyZ3VtZW50
c1thcmdPZmZzZXQgKyAxXS5pc051bWJlcigpCisgICAgICAgICAgICB8fCAhYXJndW1lbnRzW2Fy
Z09mZnNldCArIDJdLmlzTnVtYmVyKCkKKyAgICAgICAgICAgIHx8ICFhcmd1bWVudHNbYXJnT2Zm
c2V0ICsgM10uaXNOdW1iZXIoKQorICAgICAgICAgICAgfHwgIWFyZ3VtZW50c1thcmdPZmZzZXQg
KyA0XS5pc051bWJlcigpCisgICAgICAgICAgICB8fCAhYXJndW1lbnRzW2FyZ09mZnNldCArIDVd
LmlzTnVtYmVyKCkKKyAgICAgICAgICAgIHx8ICFhcmd1bWVudHNbYXJnT2Zmc2V0ICsgNl0uaXNO
dW1iZXIoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgKnBhZ2VOdW1iZXIg
PSBhcmd1bWVudHNbYXJnT2Zmc2V0XS50b0ludDMyKCk7CisgICAgICAgICp3aWR0aCA9IGFyZ3Vt
ZW50c1thcmdPZmZzZXQgKyAxXS50b0ludDMyKCk7CisgICAgICAgICpoZWlnaHQgPSBhcmd1bWVu
dHNbYXJnT2Zmc2V0ICsgMl0udG9JbnQzMigpOworICAgICAgICAqbWFyZ2luVG9wID0gYXJndW1l
bnRzW2FyZ09mZnNldCArIDNdLnRvSW50MzIoKTsKKyAgICAgICAgKm1hcmdpblJpZ2h0ID0gYXJn
dW1lbnRzW2FyZ09mZnNldCArIDRdLnRvSW50MzIoKTsKKyAgICAgICAgKm1hcmdpbkJvdHRvbSA9
IGFyZ3VtZW50c1thcmdPZmZzZXQgKyA1XS50b0ludDMyKCk7CisgICAgICAgICptYXJnaW5MZWZ0
ID0gYXJndW1lbnRzW2FyZ09mZnNldCArIDZdLnRvSW50MzIoKTsKKyAgICAgICAgLy8gZmFsbCB0
aHJvdWdoLgorICAgIGNhc2UgMDoKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogdm9pZCBMYXlv
dXRUZXN0Q29udHJvbGxlcjo6c2V0UHJpbnRpbmcoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1
bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKIHsKICAgICBzZXRJc1ByaW50aW5nKHRydWUpOwpA
QCAtMTY0MCw2ICsxNjk4LDU4IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBhZ2VOdW1i
ZXJGb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0
YXRpY19jYXN0PGZsb2F0PihwYWdlSGVpZ2h0SW5QaXhlbHMpKSk7CiB9CiAKK3ZvaWQgTGF5b3V0
VGVzdENvbnRyb2xsZXI6OnBhZ2VTaXplQW5kTWFyZ2luc0luUGl4ZWxzKGNvbnN0IENwcEFyZ3Vt
ZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCit7CisgICAgcmVzdWx0LT5z
ZXQoIiIpOworICAgIGludCBwYWdlTnVtYmVyID0gMDsKKyAgICBpbnQgd2lkdGggPSAwOworICAg
IGludCBoZWlnaHQgPSAwOworICAgIGludCBtYXJnaW5Ub3AgPSAwOworICAgIGludCBtYXJnaW5S
aWdodCA9IDA7CisgICAgaW50IG1hcmdpbkJvdHRvbSA9IDA7CisgICAgaW50IG1hcmdpbkxlZnQg
PSAwOworICAgIGlmICghcGFyc2VQYWdlTnVtYmVyU2l6ZU1hcmdpbnMoYXJndW1lbnRzLCAwLCAm
cGFnZU51bWJlciwgJndpZHRoLCAmaGVpZ2h0LCAmbWFyZ2luVG9wLCAmbWFyZ2luUmlnaHQsICZt
YXJnaW5Cb3R0b20sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbWFyZ2lu
TGVmdCkpCisgICAgICAgIHJldHVybjsKKworICAgIFdlYkZyYW1lKiBmcmFtZSA9IG1fc2hlbGwt
PndlYlZpZXcoKS0+bWFpbkZyYW1lKCk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJu
OworICAgIFdlYlNpemUgcGFnZVNpemUod2lkdGgsIGhlaWdodCk7CisgICAgZnJhbWUtPnBhZ2VT
aXplQW5kTWFyZ2luc0luUGl4ZWxzKHBhZ2VOdW1iZXIsIHBhZ2VTaXplLCBtYXJnaW5Ub3AsIG1h
cmdpblJpZ2h0LCBtYXJnaW5Cb3R0b20sIG1hcmdpbkxlZnQpOworICAgIHN0cmluZ3N0cmVhbSBy
ZXN1bHRTdHJpbmc7CisgICAgcmVzdWx0U3RyaW5nIDw8ICIoIiA8PCBwYWdlU2l6ZS53aWR0aCA8
PCAiLCAiIDw8IHBhZ2VTaXplLmhlaWdodCA8PCAiKSAiIDw8IG1hcmdpblRvcCA8PCAiICIgPDwg
bWFyZ2luUmlnaHQgPDwgIiAiCisgICAgICAgICAgICAgICAgIDw8IG1hcmdpbkJvdHRvbSA8PCAi
ICIgPDwgbWFyZ2luTGVmdDsKKyAgICByZXN1bHQtPnNldChyZXN1bHRTdHJpbmcuc3RyKCkuY19z
dHIoKSk7Cit9CisKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmlzUGFnZUJveFZpc2libGUo
Y29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKK3sK
KyAgICByZXN1bHQtPnNldE51bGwoKTsKKyAgICBpbnQgcGFnZU51bWJlciA9IDA7CisgICAgaWYg
KCFwYXJzZVBhZ2VOdW1iZXIoYXJndW1lbnRzLCAwLCAmcGFnZU51bWJlcikpCisgICAgICAgIHJl
dHVybjsKKyAgICBXZWJGcmFtZSogZnJhbWUgPSBtX3NoZWxsLT53ZWJWaWV3KCktPm1haW5GcmFt
ZSgpOworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVybjsKKyAgICByZXN1bHQtPnNldChm
cmFtZS0+aXNQYWdlQm94VmlzaWJsZShwYWdlTnVtYmVyKSk7Cit9CisKK3ZvaWQgTGF5b3V0VGVz
dENvbnRyb2xsZXI6OnBhZ2VQcm9wZXJ0eShjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50
cywgQ3BwVmFyaWFudCogcmVzdWx0KQoreworICAgIHJlc3VsdC0+c2V0KCIiKTsKKyAgICBpbnQg
cGFnZU51bWJlciA9IDA7CisgICAgaWYgKCFwYXJzZVBhZ2VOdW1iZXIoYXJndW1lbnRzLCAxLCAm
cGFnZU51bWJlcikpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAoIWFyZ3VtZW50c1swXS5pc1N0
cmluZygpKQorICAgICAgICByZXR1cm47CisgICAgV2ViRnJhbWUqIGZyYW1lID0gbV9zaGVsbC0+
d2ViVmlldygpLT5tYWluRnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1cm47
CisgICAgV2ViU2l6ZSBwYWdlU2l6ZSg4MDAsIDgwMCk7CisgICAgcmVzdWx0LT5zZXQoKGZyYW1l
LT5wYWdlUHJvcGVydHkocGFnZVNpemUsIGNwcFZhcmlhbnRUb1dlYlN0cmluZyhhcmd1bWVudHNb
MF0pLCBwYWdlTnVtYmVyKSkudXRmOCgpKTsKK30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxl
cjo6bnVtYmVyT2ZQYWdlcyhjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFy
aWFudCogcmVzdWx0KQogewogICAgIHJlc3VsdC0+c2V0TnVsbCgpOwpJbmRleDogVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCShy
ZXZpc2lvbiA5OTA5MikKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRl
c3RDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzNCw2ICszMzQsMTUgQEAgcHVibGlj
OgogICAgIC8vIEdldHMgdGhlIG51bWJlciBvZiBwYWdlIHdoZXJlIHRoZSBzcGVjaWZpZWQgZWxl
bWVudCB3aWxsIGJlIHB1dC4KICAgICB2b2lkIHBhZ2VOdW1iZXJGb3JFbGVtZW50QnlJZChjb25z
dCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAKKyAgICAvLyBHZXRzIHRoZSBwYWdl
IHNpemUgYW5kIG1hcmdpbnMgZm9yIGEgcHJpbnRlZCBwYWdlLgorICAgIHZvaWQgcGFnZVNpemVB
bmRNYXJnaW5zSW5QaXhlbHMoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwor
CisgICAgLy8gUmV0dXJucyB0aGUgdmlzaWJpbGlsdHkgc3RhdHVzIG9mIGEgcGFnZSBib3ggZm9y
IHByaW50aW5nCisgICAgdm9pZCBpc1BhZ2VCb3hWaXNpYmxlKGNvbnN0IENwcEFyZ3VtZW50TGlz
dCYsIENwcFZhcmlhbnQqKTsKKworICAgIC8vIEdldHMgdGhlIHBhZ2UtcmVsYXRlZCBwcm9wZXJ0
eSBmb3IgcHJpbnRlZCBjb250ZW50CisgICAgdm9pZCBwYWdlUHJvcGVydHkoY29uc3QgQ3BwQXJn
dW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOworCiAgICAgLy8gR2V0cyB0aGUgbnVtYmVyIG9mIHBh
Z2VzIHRvIGJlIHByaW50ZWQuCiAgICAgdm9pZCBudW1iZXJPZlBhZ2VzKGNvbnN0IENwcEFyZ3Vt
ZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKIApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gOTkxMDQpCisrKyBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAx
MS0xMS0wMiAgU3RlcGhlbiBDaGVubmV5ICA8c2NoZW5uZXlAY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFtDaHJvbWl1bV0gRFJUIGRvZXMgbm90IGhhdmUgTGF5b3V0VGVzdENvbnRyb2xsZXIucGFn
ZVNpemVBbmRNYXJnaW5zSW5QaXhlbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTQ5MjU3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQ6
IFJlbW92ZWQgZXhwZWN0ZWQgZmFpbHMgZm9yCisgICAgICAgIHByaW50aW5nIHRlc3RzIHRoYXQg
d2VyZSB1c2luZyBtaXNzaW5nIGZ1bmN0aW9uYWxpdHkgaW4gTGF5b3V0VGVzdENvbnRyb2xsZXIu
CisKIDIwMTEtMTEtMDIgIFRvbSBTZXBleiAgPHRzZXBlekBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgWFNTQXVkaXRvciBpcyBzaWxlbnQKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9t
aXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQJKHJldmlzaW9uIDk5MDkyKQorKysg
TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMTI3LDkgKzIxMjcsNiBAQCBCVUdDUjExMjQ2IFNLSVAgOiBmYXN0L2Rv
bS9XaW5kb3cvd2luZG93CiBCVUdDUjQ2NjAzIDogZmFzdC9mcmFtZXMvbG90cy1vZi1pZnJhbWVz
Lmh0bWwgPSBQQVNTIFRJTUVPVVQKIEJVR0NSNDY2MDMgOiBmYXN0L2ZyYW1lcy9sb3RzLW9mLW9i
amVjdHMuaHRtbCA9IFBBU1MgVElNRU9VVAogCi0vLyBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGFn
ZVByb3BlcnR5IGlzIG5vdCBpbXBsZW1lbnRlZCBmb3IgQ2hyb21pdW0geWV0LgotQlVHV0szNTk2
MSA6IHByaW50aW5nL3BhZ2UtcnVsZS1zZWxlY3Rpb24uaHRtbCA9IFRFWFQKLQogQlVHQ1I0NzAz
NSBXSU4gREVCVUcgOiBmYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvZG9jdW1lbnQtZGVzdHJveWVk
LW5hdmlnYXRlLWJhY2std2l0aC1mcmFnbWVudC1zY3JvbGwuaHRtbCA9IFBBU1MgVEVYVAogCiAv
LyBDU1MzIEh5cGhlbmF0aW9uIGxhbmRlZCBpbiBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5n
ZXNldC82MTU0OApAQCAtMjE0NSw5ICsyMTQyLDYgQEAgQlVHQ1I0NzA4MyA6IGZhc3QvdGV4dC9o
eXBoZW5hdGUtbGltaXQtYgogLy8gV2ViS2l0IHJvbGwgNjE1NDc6NjE2MjkuIFN0aWxsIG5lZWQg
dG8gaW52ZXN0aWdhdGUuCiBCVUdfSENMQU0gOiBmYXN0L2pzL3NjcmlwdC1saW5lLW51bWJlci5o
dG1sID0gVEVYVAogCi0vLyBMYXlvdXRUZXN0Q29udHJvbGxlcjo6aXNQYWdlQm94VmlzaWJsZSwg
cGFnZUFyZWFSZWN0SW5QaXhlbHMsIGFuZCBwcmVmZXJyZWRQYWdlU2l6ZUluUGl4ZWxzIGFyZSBu
b3QgaW1wbGVtZW50ZWQgeWV0IGZvciBDaHJvbWl1bS4KLUJVR1dLMzc1MzggOiBwcmludGluZy9w
YWdlLWZvcm1hdC1kYXRhLmh0bWwgPSBURVhUCi0KIC8vIEZpcnN0IG5vdGljZWQgb24gdHJ5Ym90
cyBhZnRlciByNjE4MzYsIG5vdyBpbiB0aGUgdHJlZS4KIEJVR19NTkFHQU5PViBMSU5VWCA6IGZh
c3QvanMvT2JqZWN0LWNyZWF0ZS5odG1sID0gQ1JBU0ggRkFJTAogCkBAIC0yNDk2LDkgKzI0OTAs
NiBAQCBXT05URklYIFNLSVAgV0lOIDogcGxhdGZvcm0vd2luL3BsdWdpbnMvCiAvLyBBZGRlZCBp
biBXSyByNzE0MjQKIEJVR0NSNjIxMzggOiBhbmltYXRpb25zL3N0b3AtYW5pbWF0aW9uLW9uLXN1
c3BlbmQuaHRtbCA9IFBBU1MgQ1JBU0ggVEVYVAogCi0vLyB0ZXN0X3NoZWxsIGFuZCBEUlQgZG8g
bm90IGhhdmUgTGF5b3V0VGVzdENvbnRyb2xsZXIucGFnZVNpemVBbmRNYXJnaW5zSW5QaXhlbHMK
LUJVR0NSNjI1MTUgOiBwcmludGluZy9wYWdlLWZvcm1hdC1kYXRhLWRpc3BsYXktbm9uZS5odG1s
ID0gVEVYVAotCiBCVUdDUjYxNzM5IERFQlVHIDogYW5pbWF0aW9ucy9zdXNwZW5kLXJlc3VtZS1h
bmltYXRpb24tZXZlbnRzLmh0bWwgPSBQQVNTIENSQVNIIFRFWFQKIAogLy8gTmV3IHRlc3RzIGFk
ZGVkIHdpdGggaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvNzI0NzIgYW5kIGZ1cnRo
ZXIuCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113528</attachid>
            <date>2011-11-03 11:23:27 -0700</date>
            <delta_ts>2011-11-04 13:43:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-49257-20111103142326.patch</filename>
            <type>text/plain</type>
            <size>16439</size>
            <attacher name="Stephen Chenney">schenney</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA5OTE5NykKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcg
QEAKKzIwMTEtMTEtMDMgIFN0ZXBoZW4gQ2hlbm5leSAgPHNjaGVubmV5QGNocm9taXVtLm9yZz4K
KworICAgICAgICBbQ2hyb21pdW1dIERSVCBkb2VzIG5vdCBoYXZlIExheW91dFRlc3RDb250cm9s
bGVyLnBhZ2VTaXplQW5kTWFyZ2luc0luUGl4ZWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD00OTI1NworCisgICAgICAgIEFkZCB0aGUgV2ViRnJhbWU6
OmdldFBhZ2VQcm9wZXJ0eSBtZXRob2QgZm9yIENocm9taXVtLgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcHVibGljL1dlYkZyYW1lLmg6CisgICAg
ICAgICogc3JjL1dlYkZyYW1lSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lSW1w
bDo6Z2V0UGFnZVByb3BlcnR5KToKKyAgICAgICAgKiBzcmMvV2ViRnJhbWVJbXBsLmg6CisKIDIw
MTEtMTAtMjggIEhhbnMgV2VubmJvcmcgIDxoYW5zQGNocm9taXVtLm9yZz4KIAogICAgICAgICBJ
bmRleGVkREI6IFJlY3ljbGUgY3Vyc29yIG9iamVjdHMgd2hlbiBjYWxsaW5nIGNvbnRpbnVlKCkK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWUuaAkocmV2aXNpb24g
OTkxOTcpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NzIsMTIgKzQ3MiwxNyBAQCBwdWJsaWM6CiAgICAgLy8gcGl4ZWxzIHBl
ciBpbmNoLiBwYWdlU2l6ZSwgbWFyZ2luVG9wLCBtYXJnaW5SaWdodCwgbWFyZ2luQm90dG9tLAog
ICAgIC8vIG1hcmdpbkxlZnQgbXVzdCBiZSBpbml0aWFsaXplZCB0byB0aGUgZGVmYXVsdCB2YWx1
ZXMgdGhhdCBhcmUgdXNlZCBpZgogICAgIC8vIGF1dG8gaXMgc3BlY2lmaWVkLgotICAgIHZpcnR1
YWwgdm9pZCBwYWdlU2l6ZUFuZE1hcmdpbnNJblBpeGVscyhpbnQgcGFnZUluZGV4LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJTaXplJiBwYWdlU2l6ZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50JiBtYXJnaW5U
b3AsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCYgbWFy
Z2luUmlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dCYgbWFyZ2luQm90dG9tLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQmIG1hcmdpbkxlZnQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0UGFnZVNpemVB
bmRNYXJnaW5zSW5QaXhlbHMoaW50IHBhZ2VJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgV2ViU2l6ZSYgcGFnZVNpemUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCYgbWFyZ2luVG9wLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQmIG1hcmdpblJpZ2h0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQmIG1h
cmdpbkJvdHRvbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50JiBtYXJnaW5MZWZ0KSA9IDA7CisKKyAgICAvLyBSZXR1cm5zIHRoZSB2YWx1ZSBmb3Ig
YSBwYWdlIHByb3BlcnR5IHRoYXQgaXMgb25seSBkZWZpbmVkIHdoZW4gcHJpbnRpbmcuCisgICAg
Ly8gcHJpbnRCZWdpbiBtdXN0IGhhdmUgYmVlbiBjYWxsZWQgYmVmb3JlIHRoaXMgbWV0aG9kLgor
ICAgIHZpcnR1YWwgV2ViU3RyaW5nIGdldFBhZ2VQcm9wZXJ0eShjb25zdCBXZWJTdHJpbmcmIHBy
b3BlcnR5TmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHBh
Z2VJbmRleCkgPSAwOwogCiAgICAgLy8gRmluZC1pbi1wYWdlIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAkocmV2aXNpb24gOTkxOTcpCisrKyBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNDc0LDEyICsxNDc0LDEyIEBAIGJvb2wgV2ViRnJhbWVJbXBsOjppc1BhZ2VCb3hWaXNp
YmxlKGludCAKICAgICByZXR1cm4gZnJhbWUoKS0+ZG9jdW1lbnQoKS0+aXNQYWdlQm94VmlzaWJs
ZShwYWdlSW5kZXgpOwogfQogCi12b2lkIFdlYkZyYW1lSW1wbDo6cGFnZVNpemVBbmRNYXJnaW5z
SW5QaXhlbHMoaW50IHBhZ2VJbmRleCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBXZWJTaXplJiBwYWdlU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQmIG1hcmdpblRvcCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQmIG1hcmdpblJpZ2h0LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCYgbWFyZ2luQm90dG9tLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCYgbWFyZ2lu
TGVmdCkKK3ZvaWQgV2ViRnJhbWVJbXBsOjpnZXRQYWdlU2l6ZUFuZE1hcmdpbnNJblBpeGVscyhp
bnQgcGFnZUluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFdlYlNpemUmIHBhZ2VTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludCYgbWFyZ2luVG9wLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCYgbWFyZ2luUmlnaHQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50JiBtYXJnaW5Cb3R0b20s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50JiBt
YXJnaW5MZWZ0KQogewogICAgIEludFNpemUgc2l6ZShwYWdlU2l6ZS53aWR0aCwgcGFnZVNpemUu
aGVpZ2h0KTsKICAgICBmcmFtZSgpLT5kb2N1bWVudCgpLT5wYWdlU2l6ZUFuZE1hcmdpbnNJblBp
eGVscyhwYWdlSW5kZXgsCkBAIC0xNDkxLDYgKzE0OTEsMTIgQEAgdm9pZCBXZWJGcmFtZUltcGw6
OnBhZ2VTaXplQW5kTWFyZ2luc0luUAogICAgIHBhZ2VTaXplID0gc2l6ZTsKIH0KIAorV2ViU3Ry
aW5nIFdlYkZyYW1lSW1wbDo6Z2V0UGFnZVByb3BlcnR5KGNvbnN0IFdlYlN0cmluZyYgcHJvcGVy
dHlOYW1lLCBpbnQgcGFnZUluZGV4KQoreworICAgIEFTU0VSVChtX3ByaW50Q29udGV4dCk7Cisg
ICAgcmV0dXJuIG1fcHJpbnRDb250ZXh0LT5wYWdlUHJvcGVydHkobV9mcmFtZSwgcHJvcGVydHlO
YW1lLnV0ZjgoKS5kYXRhKCksIHBhZ2VJbmRleCk7Cit9CisKIGJvb2wgV2ViRnJhbWVJbXBsOjpm
aW5kKGludCBpZGVudGlmaWVyLAogICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViU3Ry
aW5nJiBzZWFyY2hUZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViRmluZE9w
dGlvbnMmIG9wdGlvbnMsCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFt
ZUltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFt
ZUltcGwuaAkocmV2aXNpb24gOTkxOTcpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJGcmFtZUltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtMTcyLDEyICsxNzIsMTMgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBwcmludEVuZCgpOwogICAgIHZpcnR1YWwgYm9vbCBpc1ByaW50
U2NhbGluZ0Rpc2FibGVkRm9yUGx1Z2luKGNvbnN0IFdlYk5vZGUmKTsKICAgICB2aXJ0dWFsIGJv
b2wgaXNQYWdlQm94VmlzaWJsZShpbnQgcGFnZUluZGV4KTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFn
ZVNpemVBbmRNYXJnaW5zSW5QaXhlbHMoaW50IHBhZ2VJbmRleCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViU2l6ZSYgcGFnZVNpemUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCYgbWFyZ2luVG9wLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQmIG1hcmdpblJpZ2h0LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQmIG1hcmdpbkJv
dHRvbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50JiBt
YXJnaW5MZWZ0KTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0UGFnZVNpemVBbmRNYXJnaW5zSW5QaXhl
bHMoaW50IHBhZ2VJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgV2ViU2l6ZSYgcGFnZVNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludCYgbWFyZ2luVG9wLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQmIG1hcmdpblJpZ2h0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQmIG1hcmdpbkJvdHRvbSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50JiBtYXJnaW5M
ZWZ0KTsKKyAgICB2aXJ0dWFsIFdlYlN0cmluZyBnZXRQYWdlUHJvcGVydHkoY29uc3QgV2ViU3Ry
aW5nJiBwcm9wZXJ0eU5hbWUsIGludCBwYWdlSW5kZXgpOwogICAgIHZpcnR1YWwgdm9pZCBwcmlu
dFBhZ2VzV2l0aEJvdW5kYXJpZXMoV2ViQ2FudmFzKiwgY29uc3QgV2ViU2l6ZSYpOwogICAgIHZp
cnR1YWwgYm9vbCBmaW5kKAogICAgICAgICBpbnQgaWRlbnRpZmllciwgY29uc3QgV2ViU3RyaW5n
JiBzZWFyY2hUZXh0LCBjb25zdCBXZWJGaW5kT3B0aW9ucyYsCkluZGV4OiBUb29scy9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA5OTE5NykKKysrIFRv
b2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDExLTExLTAz
ICBTdGVwaGVuIENoZW5uZXkgIDxzY2hlbm5leUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0No
cm9taXVtXSBEUlQgZG9lcyBub3QgaGF2ZSBMYXlvdXRUZXN0Q29udHJvbGxlci5wYWdlU2l6ZUFu
ZE1hcmdpbnNJblBpeGVscworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NDkyNTcKKworICAgICAgICBBZGRzIHRoZSByZW1haW5pbmcgbWlzc2luZyBsYXlv
dXQgdGVzdCBmdW5jdGlvbmFsaXR5IGZvciBwcmludGluZy4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xh
eW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpM
YXlvdXRUZXN0Q29udHJvbGxlcik6IEFkZCBiaW5kaW5ncyBmb3IgbmV3IEpTIG1ldGhvZHMKKyAg
ICAgICAgKHBhcnNlUGFnZU51bWJlcik6IE1ldGhvZCB0byBwYXJzZSBKUyBhcmd1bWVudHMgZm9y
IGEgcGFnZSBudW1iZXIKKyAgICAgICAgKHBhcnNlUGFnZU51bWJlclNpemVNYXJnaW5zKTogTWV0
aG9kIHRvIHBhcnNlIEpTIGFyZ3VtZW50cyBmb3IgcGFnZSBzaXplIGFuZCBtYXJnaW5zCisgICAg
ICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGFnZVNpemVBbmRNYXJnaW5zSW5QaXhlbHMpOiBH
ZXQgdGhlIHBhZ2Ugc2l6ZSBhbmQgbWFyZ2lucyBmb3IgYSBnaXZlbiBwYWdlLgorICAgICAgICAo
TGF5b3V0VGVzdENvbnRyb2xsZXI6OmlzUGFnZUJveFZpc2libGUpOiBnZXQgdGhlIHZpc2liaWxp
dHkgc3RhdHVzIGZvciBwcmludGluZworICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBh
Z2VQcm9wZXJ0eSk6IGdldCBhIHNwZWNpZmljIENTUyBwcm9wZXJ0eSB3aGVuIGluIHByaW50aW5n
IG1vZGUKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJv
bGxlci5oOiBBZGQgZGVjbGFyYXRpb25zIGZvciBuZXcgbWV0aG9kcworCiAyMDExLTExLTAzICBT
aW1vbiBIYXVzbWFubiAgPHNpbW9uLmhhdXNtYW5uQG5va2lhLmNvbT4KIAogICAgICAgICBbUXRd
IFVuYWJsZSB0byBzdGFydCBNaW5pQnJvd3NlciBhZnRlciBydW4td2Via2l0LXRlc3RzCkluZGV4
OiBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENv
bnRyb2xsZXIuY3BwCShyZXZpc2lvbiA5OTE5NykKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjMsNiAr
NjMsNyBAQAogI2luY2x1ZGUgPGNsb2NhbGU+CiAjaW5jbHVkZSA8Y3N0ZGxpYj4KICNpbmNsdWRl
IDxsaW1pdHM+CisjaW5jbHVkZSA8c3N0cmVhbT4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KIAogI2lmIE9TKFdJTkRPV1MpCkBAIC0xMjIsNiArMTIzLDcgQEAgTGF5b3V0VGVzdENv
bnRyb2xsZXI6OkxheW91dFRlc3RDb250cm9sbAogICAgIGJpbmRNZXRob2QoImdyYW50RGVza3Rv
cE5vdGlmaWNhdGlvblBlcm1pc3Npb24iLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OmdyYW50RGVz
a3RvcE5vdGlmaWNhdGlvblBlcm1pc3Npb24pOwogICAgIGJpbmRNZXRob2QoImhhc1NwZWxsaW5n
TWFya2VyIiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpoYXNTcGVsbGluZ01hcmtlcik7CiAgICAg
YmluZE1ldGhvZCgiaXNDb21tYW5kRW5hYmxlZCIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6aXND
b21tYW5kRW5hYmxlZCk7CisgICAgYmluZE1ldGhvZCgiaXNQYWdlQm94VmlzaWJsZSIsICZMYXlv
dXRUZXN0Q29udHJvbGxlcjo6aXNQYWdlQm94VmlzaWJsZSk7CiAgICAgYmluZE1ldGhvZCgibGF5
ZXJUcmVlQXNUZXh0IiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpsYXllclRyZWVBc1RleHQpOwog
ICAgIGJpbmRNZXRob2QoImxvc2VDb21wb3NpdG9yQ29udGV4dCIsICZMYXlvdXRUZXN0Q29udHJv
bGxlcjo6bG9zZUNvbXBvc2l0b3JDb250ZXh0KTsKICAgICBiaW5kTWV0aG9kKCJtYXJrZXJUZXh0
Rm9yTGlzdEl0ZW0iLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6Om1hcmtlclRleHRGb3JMaXN0SXRl
bSk7CkBAIC0xMzIsNiArMTM0LDggQEAgTGF5b3V0VGVzdENvbnRyb2xsZXI6OkxheW91dFRlc3RD
b250cm9sbAogICAgIGJpbmRNZXRob2QoIm9iakNJZGVudGl0eUlzRXF1YWwiLCAmTGF5b3V0VGVz
dENvbnRyb2xsZXI6Om9iakNJZGVudGl0eUlzRXF1YWwpOwogICAgIGJpbmRNZXRob2QoIm92ZXJy
aWRlUHJlZmVyZW5jZSIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6b3ZlcnJpZGVQcmVmZXJlbmNl
KTsKICAgICBiaW5kTWV0aG9kKCJwYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQiLCAmTGF5b3V0VGVz
dENvbnRyb2xsZXI6OnBhZ2VOdW1iZXJGb3JFbGVtZW50QnlJZCk7CisgICAgYmluZE1ldGhvZCgi
cGFnZVByb3BlcnR5IiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpwYWdlUHJvcGVydHkpOworICAg
IGJpbmRNZXRob2QoInBhZ2VTaXplQW5kTWFyZ2luc0luUGl4ZWxzIiwgJkxheW91dFRlc3RDb250
cm9sbGVyOjpwYWdlU2l6ZUFuZE1hcmdpbnNJblBpeGVscyk7CiAgICAgYmluZE1ldGhvZCgicGF0
aFRvTG9jYWxSZXNvdXJjZSIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGF0aFRvTG9jYWxSZXNv
dXJjZSk7CiAgICAgYmluZE1ldGhvZCgicGF1c2VBbmltYXRpb25BdFRpbWVPbkVsZW1lbnRXaXRo
SWQiLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBhdXNlQW5pbWF0aW9uQXRUaW1lT25FbGVtZW50
V2l0aElkKTsKICAgICBiaW5kTWV0aG9kKCJwYXVzZVRyYW5zaXRpb25BdFRpbWVPbkVsZW1lbnRX
aXRoSWQiLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBhdXNlVHJhbnNpdGlvbkF0VGltZU9uRWxl
bWVudFdpdGhJZCk7CkBAIC0xNjE2LDYgKzE2MjAsNjAgQEAgc3RhdGljIGJvb2wgcGFyc2VQYWdl
U2l6ZVBhcmFtZXRlcnMoY29ucwogICAgIHJldHVybiB0cnVlOwogfQogCitzdGF0aWMgYm9vbCBw
YXJzZVBhZ2VOdW1iZXIoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIGludCBhcmdP
ZmZzZXQsIGludCogcGFnZU51bWJlcikKK3sKKyAgICAqcGFnZU51bWJlciA9IDA7CisgICAgc3dp
dGNoIChhcmd1bWVudHMuc2l6ZSgpIC0gYXJnT2Zmc2V0KSB7CisgICAgY2FzZSAxOgorICAgICAg
ICBpZiAoIWFyZ3VtZW50c1thcmdPZmZzZXRdLmlzTnVtYmVyKCkpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgICpwYWdlTnVtYmVyID0gYXJndW1lbnRzW2FyZ09mZnNldF0udG9J
bnQzMigpOworICAgICAgICAvLyBmYWxsIHRocm91Z2guCisgICAgY2FzZSAwOgorICAgICAgICBi
cmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJl
dHVybiB0cnVlOworfQorCitzdGF0aWMgYm9vbCBwYXJzZVBhZ2VOdW1iZXJTaXplTWFyZ2lucyhj
b25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgaW50IGFyZ09mZnNldCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCogcGFnZU51bWJlciwgaW50KiB3aWR0
aCwgaW50KiBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQqIG1hcmdpblRvcCwgaW50KiBtYXJnaW5SaWdodCwgaW50KiBtYXJnaW5Cb3R0b20sIGludCog
bWFyZ2luTGVmdCkKK3sKKyAgICAqcGFnZU51bWJlciA9IDA7CisgICAgKndpZHRoID0gMDsKKyAg
ICAqaGVpZ2h0ID0gMDsKKyAgICAqbWFyZ2luVG9wID0gMDsKKyAgICAqbWFyZ2luUmlnaHQgPSAw
OworICAgICptYXJnaW5Cb3R0b20gPSAwOworICAgICptYXJnaW5MZWZ0ID0gMDsKKyAgICBzd2l0
Y2ggKGFyZ3VtZW50cy5zaXplKCkgLSBhcmdPZmZzZXQpIHsKKyAgICBjYXNlIDc6CisgICAgICAg
IGlmICghYXJndW1lbnRzW2FyZ09mZnNldF0uaXNOdW1iZXIoKQorICAgICAgICAgICAgfHwgIWFy
Z3VtZW50c1thcmdPZmZzZXQgKyAxXS5pc051bWJlcigpCisgICAgICAgICAgICB8fCAhYXJndW1l
bnRzW2FyZ09mZnNldCArIDJdLmlzTnVtYmVyKCkKKyAgICAgICAgICAgIHx8ICFhcmd1bWVudHNb
YXJnT2Zmc2V0ICsgM10uaXNOdW1iZXIoKQorICAgICAgICAgICAgfHwgIWFyZ3VtZW50c1thcmdP
ZmZzZXQgKyA0XS5pc051bWJlcigpCisgICAgICAgICAgICB8fCAhYXJndW1lbnRzW2FyZ09mZnNl
dCArIDVdLmlzTnVtYmVyKCkKKyAgICAgICAgICAgIHx8ICFhcmd1bWVudHNbYXJnT2Zmc2V0ICsg
Nl0uaXNOdW1iZXIoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgKnBhZ2VO
dW1iZXIgPSBhcmd1bWVudHNbYXJnT2Zmc2V0XS50b0ludDMyKCk7CisgICAgICAgICp3aWR0aCA9
IGFyZ3VtZW50c1thcmdPZmZzZXQgKyAxXS50b0ludDMyKCk7CisgICAgICAgICpoZWlnaHQgPSBh
cmd1bWVudHNbYXJnT2Zmc2V0ICsgMl0udG9JbnQzMigpOworICAgICAgICAqbWFyZ2luVG9wID0g
YXJndW1lbnRzW2FyZ09mZnNldCArIDNdLnRvSW50MzIoKTsKKyAgICAgICAgKm1hcmdpblJpZ2h0
ID0gYXJndW1lbnRzW2FyZ09mZnNldCArIDRdLnRvSW50MzIoKTsKKyAgICAgICAgKm1hcmdpbkJv
dHRvbSA9IGFyZ3VtZW50c1thcmdPZmZzZXQgKyA1XS50b0ludDMyKCk7CisgICAgICAgICptYXJn
aW5MZWZ0ID0gYXJndW1lbnRzW2FyZ09mZnNldCArIDZdLnRvSW50MzIoKTsKKyAgICAgICAgLy8g
ZmFsbCB0aHJvdWdoLgorICAgIGNhc2UgMDoKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogdm9p
ZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0UHJpbnRpbmcoY29uc3QgQ3BwQXJndW1lbnRMaXN0
JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKIHsKICAgICBzZXRJc1ByaW50aW5nKHRy
dWUpOwpAQCAtMTY0MCw2ICsxNjk4LDYwIEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBh
Z2VOdW1iZXJGb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0YXRpY19jYXN0PGZsb2F0PihwYWdlSGVpZ2h0SW5QaXhlbHMpKSk7CiB9CiAKK3ZvaWQg
TGF5b3V0VGVzdENvbnRyb2xsZXI6OnBhZ2VTaXplQW5kTWFyZ2luc0luUGl4ZWxzKGNvbnN0IENw
cEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCit7CisgICAgcmVz
dWx0LT5zZXQoIiIpOworICAgIGludCBwYWdlTnVtYmVyID0gMDsKKyAgICBpbnQgd2lkdGggPSAw
OworICAgIGludCBoZWlnaHQgPSAwOworICAgIGludCBtYXJnaW5Ub3AgPSAwOworICAgIGludCBt
YXJnaW5SaWdodCA9IDA7CisgICAgaW50IG1hcmdpbkJvdHRvbSA9IDA7CisgICAgaW50IG1hcmdp
bkxlZnQgPSAwOworICAgIGlmICghcGFyc2VQYWdlTnVtYmVyU2l6ZU1hcmdpbnMoYXJndW1lbnRz
LCAwLCAmcGFnZU51bWJlciwgJndpZHRoLCAmaGVpZ2h0LCAmbWFyZ2luVG9wLCAmbWFyZ2luUmln
aHQsICZtYXJnaW5Cb3R0b20sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAm
bWFyZ2luTGVmdCkpCisgICAgICAgIHJldHVybjsKKworICAgIFdlYkZyYW1lKiBmcmFtZSA9IG1f
c2hlbGwtPndlYlZpZXcoKS0+bWFpbkZyYW1lKCk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAg
cmV0dXJuOworICAgIFdlYlNpemUgcGFnZVNpemUod2lkdGgsIGhlaWdodCk7CisgICAgZnJhbWUt
PmdldFBhZ2VTaXplQW5kTWFyZ2luc0luUGl4ZWxzKHBhZ2VOdW1iZXIsIHBhZ2VTaXplLCBtYXJn
aW5Ub3AsIG1hcmdpblJpZ2h0LCBtYXJnaW5Cb3R0b20sIG1hcmdpbkxlZnQpOworICAgIHN0cmlu
Z3N0cmVhbSByZXN1bHRTdHJpbmc7CisgICAgcmVzdWx0U3RyaW5nIDw8ICIoIiA8PCBwYWdlU2l6
ZS53aWR0aCA8PCAiLCAiIDw8IHBhZ2VTaXplLmhlaWdodCA8PCAiKSAiIDw8IG1hcmdpblRvcCA8
PCAiICIgPDwgbWFyZ2luUmlnaHQgPDwgIiAiCisgICAgICAgICAgICAgICAgIDw8IG1hcmdpbkJv
dHRvbSA8PCAiICIgPDwgbWFyZ2luTGVmdDsKKyAgICByZXN1bHQtPnNldChyZXN1bHRTdHJpbmcu
c3RyKCkuY19zdHIoKSk7Cit9CisKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmlzUGFnZUJv
eFZpc2libGUoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJl
c3VsdCkKK3sKKyAgICByZXN1bHQtPnNldE51bGwoKTsKKyAgICBpbnQgcGFnZU51bWJlciA9IDA7
CisgICAgaWYgKCFwYXJzZVBhZ2VOdW1iZXIoYXJndW1lbnRzLCAwLCAmcGFnZU51bWJlcikpCisg
ICAgICAgIHJldHVybjsKKyAgICBXZWJGcmFtZSogZnJhbWUgPSBtX3NoZWxsLT53ZWJWaWV3KCkt
Pm1haW5GcmFtZSgpOworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVybjsKKyAgICByZXN1
bHQtPnNldChmcmFtZS0+aXNQYWdlQm94VmlzaWJsZShwYWdlTnVtYmVyKSk7Cit9CisKK3ZvaWQg
TGF5b3V0VGVzdENvbnRyb2xsZXI6OnBhZ2VQcm9wZXJ0eShjb25zdCBDcHBBcmd1bWVudExpc3Qm
IGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQoreworICAgIHJlc3VsdC0+c2V0KCIiKTsK
KyAgICBpbnQgcGFnZU51bWJlciA9IDA7CisgICAgaWYgKCFwYXJzZVBhZ2VOdW1iZXIoYXJndW1l
bnRzLCAxLCAmcGFnZU51bWJlcikpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAoIWFyZ3VtZW50
c1swXS5pc1N0cmluZygpKQorICAgICAgICByZXR1cm47CisgICAgV2ViRnJhbWUqIGZyYW1lID0g
bV9zaGVsbC0+d2ViVmlldygpLT5tYWluRnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQorICAgICAg
ICByZXR1cm47CisgICAgV2ViU2l6ZSBwYWdlU2l6ZSg4MDAsIDgwMCk7CisgICAgZnJhbWUtPnBy
aW50QmVnaW4ocGFnZVNpemUpOworICAgIHJlc3VsdC0+c2V0KChmcmFtZS0+Z2V0UGFnZVByb3Bl
cnR5KGNwcFZhcmlhbnRUb1dlYlN0cmluZyhhcmd1bWVudHNbMF0pLCBwYWdlTnVtYmVyKSkudXRm
OCgpKTsKKyAgICBmcmFtZS0+cHJpbnRFbmQoKTsKK30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJv
bGxlcjo6bnVtYmVyT2ZQYWdlcyhjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3Bw
VmFyaWFudCogcmVzdWx0KQogewogICAgIHJlc3VsdC0+c2V0TnVsbCgpOwpJbmRleDogVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5o
CShyZXZpc2lvbiA5OTE5NykKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91
dFRlc3RDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzNCw2ICszMzQsMTUgQEAgcHVi
bGljOgogICAgIC8vIEdldHMgdGhlIG51bWJlciBvZiBwYWdlIHdoZXJlIHRoZSBzcGVjaWZpZWQg
ZWxlbWVudCB3aWxsIGJlIHB1dC4KICAgICB2b2lkIHBhZ2VOdW1iZXJGb3JFbGVtZW50QnlJZChj
b25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAKKyAgICAvLyBHZXRzIHRoZSBw
YWdlIHNpemUgYW5kIG1hcmdpbnMgZm9yIGEgcHJpbnRlZCBwYWdlLgorICAgIHZvaWQgcGFnZVNp
emVBbmRNYXJnaW5zSW5QaXhlbHMoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCop
OworCisgICAgLy8gUmV0dXJucyB0aGUgdmlzaWJpbGlsdHkgc3RhdHVzIG9mIGEgcGFnZSBib3gg
Zm9yIHByaW50aW5nCisgICAgdm9pZCBpc1BhZ2VCb3hWaXNpYmxlKGNvbnN0IENwcEFyZ3VtZW50
TGlzdCYsIENwcFZhcmlhbnQqKTsKKworICAgIC8vIEdldHMgdGhlIHBhZ2UtcmVsYXRlZCBwcm9w
ZXJ0eSBmb3IgcHJpbnRlZCBjb250ZW50CisgICAgdm9pZCBwYWdlUHJvcGVydHkoY29uc3QgQ3Bw
QXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOworCiAgICAgLy8gR2V0cyB0aGUgbnVtYmVyIG9m
IHBhZ2VzIHRvIGJlIHByaW50ZWQuCiAgICAgdm9pZCBudW1iZXJPZlBhZ2VzKGNvbnN0IENwcEFy
Z3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKIApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gOTkxOTcpCisr
KyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAor
MjAxMS0xMS0wMyAgU3RlcGhlbiBDaGVubmV5ICA8c2NoZW5uZXlAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIFtDaHJvbWl1bV0gRFJUIGRvZXMgbm90IGhhdmUgTGF5b3V0VGVzdENvbnRyb2xsZXIu
cGFnZVNpemVBbmRNYXJnaW5zSW5QaXhlbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTQ5MjU3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50
eHQ6IFJlbW92ZWQgZXhwZWN0ZWQgZmFpbHMgZm9yCisgICAgICAgIHByaW50aW5nIHRlc3RzIHRo
YXQgd2VyZSB1c2luZyBtaXNzaW5nIGZ1bmN0aW9uYWxpdHkgaW4gTGF5b3V0VGVzdENvbnRyb2xs
ZXIuCisKIDIwMTEtMTEtMDMgIEFuZHJleSBLb3N5YWtvdiAgPGNhc2VxQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBVbnJldmlld2VkIGV4cGVjdGF0aW9ucyB1cGRhdGUuCkluZGV4OiBMYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CShy
ZXZpc2lvbiA5OTE5NykKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhw
ZWN0YXRpb25zLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMjA5MCw5ICsyMDkwLDYgQEAgQlVHQ1Ix
MTI0NiBTS0lQIDogZmFzdC9kb20vV2luZG93L3dpbmRvdwogQlVHQ1I0NjYwMyA6IGZhc3QvZnJh
bWVzL2xvdHMtb2YtaWZyYW1lcy5odG1sID0gUEFTUyBUSU1FT1VUCiBCVUdDUjQ2NjAzIDogZmFz
dC9mcmFtZXMvbG90cy1vZi1vYmplY3RzLmh0bWwgPSBQQVNTIFRJTUVPVVQKIAotLy8gTGF5b3V0
VGVzdENvbnRyb2xsZXI6OnBhZ2VQcm9wZXJ0eSBpcyBub3QgaW1wbGVtZW50ZWQgZm9yIENocm9t
aXVtIHlldC4KLUJVR1dLMzU5NjEgOiBwcmludGluZy9wYWdlLXJ1bGUtc2VsZWN0aW9uLmh0bWwg
PSBURVhUCi0KIEJVR0NSNDcwMzUgV0lOIERFQlVHIDogZmFzdC9sb2FkZXIvc3RhdGVvYmplY3Rz
L2RvY3VtZW50LWRlc3Ryb3llZC1uYXZpZ2F0ZS1iYWNrLXdpdGgtZnJhZ21lbnQtc2Nyb2xsLmh0
bWwgPSBQQVNTIFRFWFQKIAogLy8gQ1NTMyBIeXBoZW5hdGlvbiBsYW5kZWQgaW4gaHR0cDovL3Ry
YWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvNjE1NDgKQEAgLTIxMDgsOSArMjEwNSw2IEBAIEJVR0NS
NDcwODMgOiBmYXN0L3RleHQvaHlwaGVuYXRlLWxpbWl0LWIKIC8vIFdlYktpdCByb2xsIDYxNTQ3
OjYxNjI5LiBTdGlsbCBuZWVkIHRvIGludmVzdGlnYXRlLgogQlVHX0hDTEFNIDogZmFzdC9qcy9z
Y3JpcHQtbGluZS1udW1iZXIuaHRtbCA9IFRFWFQKIAotLy8gTGF5b3V0VGVzdENvbnRyb2xsZXI6
OmlzUGFnZUJveFZpc2libGUsIHBhZ2VBcmVhUmVjdEluUGl4ZWxzLCBhbmQgcHJlZmVycmVkUGFn
ZVNpemVJblBpeGVscyBhcmUgbm90IGltcGxlbWVudGVkIHlldCBmb3IgQ2hyb21pdW0uCi1CVUdX
SzM3NTM4IDogcHJpbnRpbmcvcGFnZS1mb3JtYXQtZGF0YS5odG1sID0gVEVYVAotCiAvLyBGaXJz
dCBub3RpY2VkIG9uIHRyeWJvdHMgYWZ0ZXIgcjYxODM2LCBub3cgaW4gdGhlIHRyZWUuCiBCVUdf
TU5BR0FOT1YgTElOVVggOiBmYXN0L2pzL09iamVjdC1jcmVhdGUuaHRtbCA9IENSQVNIIEZBSUwK
IApAQCAtMjQ1Niw5ICsyNDUwLDYgQEAgV09OVEZJWCBTS0lQIFdJTiA6IHBsYXRmb3JtL3dpbi9w
bHVnaW5zLwogLy8gQWRkZWQgaW4gV0sgcjcxNDI0CiBCVUdDUjYyMTM4IDogYW5pbWF0aW9ucy9z
dG9wLWFuaW1hdGlvbi1vbi1zdXNwZW5kLmh0bWwgPSBQQVNTIENSQVNIIFRFWFQKIAotLy8gdGVz
dF9zaGVsbCBhbmQgRFJUIGRvIG5vdCBoYXZlIExheW91dFRlc3RDb250cm9sbGVyLnBhZ2VTaXpl
QW5kTWFyZ2luc0luUGl4ZWxzCi1CVUdDUjYyNTE1IDogcHJpbnRpbmcvcGFnZS1mb3JtYXQtZGF0
YS1kaXNwbGF5LW5vbmUuaHRtbCA9IFRFWFQKLQogQlVHQ1I2MTczOSBERUJVRyA6IGFuaW1hdGlv
bnMvc3VzcGVuZC1yZXN1bWUtYW5pbWF0aW9uLWV2ZW50cy5odG1sID0gUEFTUyBDUkFTSCBURVhU
CiAKIC8vIE5ldyB0ZXN0cyBhZGRlZCB3aXRoIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdl
c2V0LzcyNDcyIGFuZCBmdXJ0aGVyLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113706</attachid>
            <date>2011-11-04 13:43:27 -0700</date>
            <delta_ts>2011-11-09 14:35:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-49257-20111104164326.patch</filename>
            <type>text/plain</type>
            <size>17685</size>
            <attacher name="Stephen Chenney">schenney</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA5OTMwOCkKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcg
QEAKKzIwMTEtMTEtMDQgIFN0ZXBoZW4gQ2hlbm5leSAgPHNjaGVubmV5QGNocm9taXVtLm9yZz4K
KworICAgICAgICBbQ2hyb21pdW1dIERSVCBkb2VzIG5vdCBoYXZlIExheW91dFRlc3RDb250cm9s
bGVyLnBhZ2VTaXplQW5kTWFyZ2luc0luUGl4ZWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD00OTI1NworCisgICAgICAgIEFkZCB0aGUgV2ViRnJhbWU6
OmdldFBhZ2VQcm9wZXJ0eSBtZXRob2QgZm9yIENocm9taXVtLgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcHVibGljL1dlYkZyYW1lLmg6CisgICAg
ICAgICogc3JjL1dlYkZyYW1lSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lSW1w
bDo6Z2V0UGFnZVByb3BlcnR5KToKKyAgICAgICAgKiBzcmMvV2ViRnJhbWVJbXBsLmg6CisKIDIw
MTEtMTEtMDQgIFJvYmVydCBTZXNlayAgPHJzZXNla0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
W2Nocm9taXVtXSBVc2UgQ2hyb21pdW0ncyBjb3B5IG9mIGxpYldlYktpdFN5c3RlbUludGVyZmFj
ZUxlb3BhcmQuYQpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZS5o
CShyZXZpc2lvbiA5OTMwOCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZy
YW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3MiwxMiArNDcyLDE3IEBAIHB1YmxpYzoKICAgICAv
LyBwaXhlbHMgcGVyIGluY2guIHBhZ2VTaXplLCBtYXJnaW5Ub3AsIG1hcmdpblJpZ2h0LCBtYXJn
aW5Cb3R0b20sCiAgICAgLy8gbWFyZ2luTGVmdCBtdXN0IGJlIGluaXRpYWxpemVkIHRvIHRoZSBk
ZWZhdWx0IHZhbHVlcyB0aGF0IGFyZSB1c2VkIGlmCiAgICAgLy8gYXV0byBpcyBzcGVjaWZpZWQu
Ci0gICAgdmlydHVhbCB2b2lkIHBhZ2VTaXplQW5kTWFyZ2luc0luUGl4ZWxzKGludCBwYWdlSW5k
ZXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYlNpemUm
IHBhZ2VTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQmIG1hcmdpblRvcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50JiBtYXJnaW5SaWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50JiBtYXJnaW5Cb3R0b20sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGludCYgbWFyZ2luTGVmdCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBn
ZXRQYWdlU2l6ZUFuZE1hcmdpbnNJblBpeGVscyhpbnQgcGFnZUluZGV4LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJTaXplJiBwYWdlU2l6ZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50JiBtYXJnaW5U
b3AsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCYg
bWFyZ2luUmlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludCYgbWFyZ2luQm90dG9tLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQmIG1hcmdpbkxlZnQpID0gMDsKKworICAgIC8vIFJldHVybnMgdGhl
IHZhbHVlIGZvciBhIHBhZ2UgcHJvcGVydHkgdGhhdCBpcyBvbmx5IGRlZmluZWQgd2hlbiBwcmlu
dGluZy4KKyAgICAvLyBwcmludEJlZ2luIG11c3QgaGF2ZSBiZWVuIGNhbGxlZCBiZWZvcmUgdGhp
cyBtZXRob2QuCisgICAgdmlydHVhbCBXZWJTdHJpbmcgZ2V0UGFnZVByb3BlcnR5KGNvbnN0IFdl
YlN0cmluZyYgcHJvcGVydHlOYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQgcGFnZUluZGV4KSA9IDA7CiAKICAgICAvLyBGaW5kLWluLXBhZ2UgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIApJbmRleDog
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCShyZXZpc2lvbiA5
OTMwOCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE0NzQsMTIgKzE0NzQsMTIgQEAgYm9vbCBXZWJGcmFtZUltcGw6Omlz
UGFnZUJveFZpc2libGUoaW50IAogICAgIHJldHVybiBmcmFtZSgpLT5kb2N1bWVudCgpLT5pc1Bh
Z2VCb3hWaXNpYmxlKHBhZ2VJbmRleCk7CiB9CiAKLXZvaWQgV2ViRnJhbWVJbXBsOjpwYWdlU2l6
ZUFuZE1hcmdpbnNJblBpeGVscyhpbnQgcGFnZUluZGV4LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFdlYlNpemUmIHBhZ2VTaXplLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCYgbWFyZ2luVG9wLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCYgbWFyZ2luUmlnaHQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50JiBtYXJn
aW5Cb3R0b20sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW50JiBtYXJnaW5MZWZ0KQordm9pZCBXZWJGcmFtZUltcGw6OmdldFBhZ2VTaXplQW5kTWFyZ2lu
c0luUGl4ZWxzKGludCBwYWdlSW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgV2ViU2l6ZSYgcGFnZVNpemUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50JiBtYXJnaW5Ub3AsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50JiBtYXJnaW5SaWdodCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQmIG1h
cmdpbkJvdHRvbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQmIG1hcmdpbkxlZnQpCiB7CiAgICAgSW50U2l6ZSBzaXplKHBhZ2VTaXplLndpZHRo
LCBwYWdlU2l6ZS5oZWlnaHQpOwogICAgIGZyYW1lKCktPmRvY3VtZW50KCktPnBhZ2VTaXplQW5k
TWFyZ2luc0luUGl4ZWxzKHBhZ2VJbmRleCwKQEAgLTE0OTEsNiArMTQ5MSwxMiBAQCB2b2lkIFdl
YkZyYW1lSW1wbDo6cGFnZVNpemVBbmRNYXJnaW5zSW5QCiAgICAgcGFnZVNpemUgPSBzaXplOwog
fQogCitXZWJTdHJpbmcgV2ViRnJhbWVJbXBsOjpnZXRQYWdlUHJvcGVydHkoY29uc3QgV2ViU3Ry
aW5nJiBwcm9wZXJ0eU5hbWUsIGludCBwYWdlSW5kZXgpCit7CisgICAgQVNTRVJUKG1fcHJpbnRD
b250ZXh0KTsKKyAgICByZXR1cm4gbV9wcmludENvbnRleHQtPnBhZ2VQcm9wZXJ0eShtX2ZyYW1l
LCBwcm9wZXJ0eU5hbWUudXRmOCgpLmRhdGEoKSwgcGFnZUluZGV4KTsKK30KKwogYm9vbCBXZWJG
cmFtZUltcGw6OmZpbmQoaW50IGlkZW50aWZpZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBXZWJTdHJpbmcmIHNlYXJjaFRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBXZWJGaW5kT3B0aW9ucyYgb3B0aW9ucywKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYkZyYW1lSW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYkZyYW1lSW1wbC5oCShyZXZpc2lvbiA5OTMwOCkKKysrIFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkZyYW1lSW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzIsMTIgKzE3Miwx
MyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHByaW50RW5kKCk7CiAgICAgdmlydHVhbCBi
b29sIGlzUHJpbnRTY2FsaW5nRGlzYWJsZWRGb3JQbHVnaW4oY29uc3QgV2ViTm9kZSYpOwogICAg
IHZpcnR1YWwgYm9vbCBpc1BhZ2VCb3hWaXNpYmxlKGludCBwYWdlSW5kZXgpOwotICAgIHZpcnR1
YWwgdm9pZCBwYWdlU2l6ZUFuZE1hcmdpbnNJblBpeGVscyhpbnQgcGFnZUluZGV4LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJTaXplJiBwYWdlU2l6ZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50JiBtYXJnaW5U
b3AsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCYgbWFy
Z2luUmlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dCYgbWFyZ2luQm90dG9tLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQmIG1hcmdpbkxlZnQpOworICAgIHZpcnR1YWwgdm9pZCBnZXRQYWdlU2l6ZUFuZE1h
cmdpbnNJblBpeGVscyhpbnQgcGFnZUluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBXZWJTaXplJiBwYWdlU2l6ZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50JiBtYXJnaW5Ub3AsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCYgbWFyZ2luUmlnaHQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCYgbWFyZ2lu
Qm90dG9tLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQmIG1hcmdpbkxlZnQpOworICAgIHZpcnR1YWwgV2ViU3RyaW5nIGdldFBhZ2VQcm9wZXJ0eShj
b25zdCBXZWJTdHJpbmcmIHByb3BlcnR5TmFtZSwgaW50IHBhZ2VJbmRleCk7CiAgICAgdmlydHVh
bCB2b2lkIHByaW50UGFnZXNXaXRoQm91bmRhcmllcyhXZWJDYW52YXMqLCBjb25zdCBXZWJTaXpl
Jik7CiAgICAgdmlydHVhbCBib29sIGZpbmQoCiAgICAgICAgIGludCBpZGVudGlmaWVyLCBjb25z
dCBXZWJTdHJpbmcmIHNlYXJjaFRleHQsIGNvbnN0IFdlYkZpbmRPcHRpb25zJiwKSW5kZXg6IFRv
b2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDk5
MzA4KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAK
KzIwMTEtMTEtMDQgIFN0ZXBoZW4gQ2hlbm5leSAgPHNjaGVubmV5QGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBbQ2hyb21pdW1dIERSVCBkb2VzIG5vdCBoYXZlIExheW91dFRlc3RDb250cm9sbGVy
LnBhZ2VTaXplQW5kTWFyZ2luc0luUGl4ZWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD00OTI1NworCisgICAgICAgIEFkZHMgdGhlIHJlbWFpbmluZyBt
aXNzaW5nIGxheW91dCB0ZXN0IGZ1bmN0aW9uYWxpdHkgZm9yIHByaW50aW5nLgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENv
bnRyb2xsZXI6OkxheW91dFRlc3RDb250cm9sbGVyKTogQWRkIGJpbmRpbmdzIGZvciBuZXcgSlMg
bWV0aG9kcworICAgICAgICAocGFyc2VQYWdlTnVtYmVyKTogTWV0aG9kIHRvIHBhcnNlIEpTIGFy
Z3VtZW50cyBmb3IgYSBwYWdlIG51bWJlcgorICAgICAgICAocGFyc2VQYWdlTnVtYmVyU2l6ZU1h
cmdpbnMpOiBNZXRob2QgdG8gcGFyc2UgSlMgYXJndW1lbnRzIGZvciBwYWdlIHNpemUgYW5kIG1h
cmdpbnMKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpwYWdlU2l6ZUFuZE1hcmdpbnNJ
blBpeGVscyk6IEdldCB0aGUgcGFnZSBzaXplIGFuZCBtYXJnaW5zIGZvciBhIGdpdmVuIHBhZ2Uu
CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6aXNQYWdlQm94VmlzaWJsZSk6IGdldCB0
aGUgdmlzaWJpbGl0eSBzdGF0dXMgZm9yIHByaW50aW5nCisgICAgICAgIChMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6cGFnZVByb3BlcnR5KTogZ2V0IGEgc3BlY2lmaWMgQ1NTIHByb3BlcnR5IHdoZW4g
aW4gcHJpbnRpbmcgbW9kZQorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91
dFRlc3RDb250cm9sbGVyLmg6IEFkZCBkZWNsYXJhdGlvbnMgZm9yIG5ldyBtZXRob2RzCisKIDIw
MTEtMTEtMDQgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAg
ICBGaXggV0tUUiBjcmFzaCB3aGVuIHJ1bm5pbmcgTlBOX0NvbnZlcnRQb2ludCB0ZXN0LgpJbmRl
eDogVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RD
b250cm9sbGVyLmNwcAkocmV2aXNpb24gOTkzMDgpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYzLDYg
KzYzLDcgQEAKICNpbmNsdWRlIDxjbG9jYWxlPgogI2luY2x1ZGUgPGNzdGRsaWI+CiAjaW5jbHVk
ZSA8bGltaXRzPgorI2luY2x1ZGUgPHNzdHJlYW0+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKICNpZiBPUyhXSU5ET1dTKQpAQCAtMTIyLDYgKzEyMyw3IEBAIExheW91dFRlc3RD
b250cm9sbGVyOjpMYXlvdXRUZXN0Q29udHJvbGwKICAgICBiaW5kTWV0aG9kKCJncmFudERlc2t0
b3BOb3RpZmljYXRpb25QZXJtaXNzaW9uIiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpncmFudERl
c2t0b3BOb3RpZmljYXRpb25QZXJtaXNzaW9uKTsKICAgICBiaW5kTWV0aG9kKCJoYXNTcGVsbGlu
Z01hcmtlciIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6aGFzU3BlbGxpbmdNYXJrZXIpOwogICAg
IGJpbmRNZXRob2QoImlzQ29tbWFuZEVuYWJsZWQiLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6Omlz
Q29tbWFuZEVuYWJsZWQpOworICAgIGJpbmRNZXRob2QoImlzUGFnZUJveFZpc2libGUiLCAmTGF5
b3V0VGVzdENvbnRyb2xsZXI6OmlzUGFnZUJveFZpc2libGUpOwogICAgIGJpbmRNZXRob2QoImxh
eWVyVHJlZUFzVGV4dCIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6bGF5ZXJUcmVlQXNUZXh0KTsK
ICAgICBiaW5kTWV0aG9kKCJsb3NlQ29tcG9zaXRvckNvbnRleHQiLCAmTGF5b3V0VGVzdENvbnRy
b2xsZXI6Omxvc2VDb21wb3NpdG9yQ29udGV4dCk7CiAgICAgYmluZE1ldGhvZCgibWFya2VyVGV4
dEZvckxpc3RJdGVtIiwgJkxheW91dFRlc3RDb250cm9sbGVyOjptYXJrZXJUZXh0Rm9yTGlzdEl0
ZW0pOwpAQCAtMTMyLDYgKzEzNCw4IEBAIExheW91dFRlc3RDb250cm9sbGVyOjpMYXlvdXRUZXN0
Q29udHJvbGwKICAgICBiaW5kTWV0aG9kKCJvYmpDSWRlbnRpdHlJc0VxdWFsIiwgJkxheW91dFRl
c3RDb250cm9sbGVyOjpvYmpDSWRlbnRpdHlJc0VxdWFsKTsKICAgICBiaW5kTWV0aG9kKCJvdmVy
cmlkZVByZWZlcmVuY2UiLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6Om92ZXJyaWRlUHJlZmVyZW5j
ZSk7CiAgICAgYmluZE1ldGhvZCgicGFnZU51bWJlckZvckVsZW1lbnRCeUlkIiwgJkxheW91dFRl
c3RDb250cm9sbGVyOjpwYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQpOworICAgIGJpbmRNZXRob2Qo
InBhZ2VQcm9wZXJ0eSIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGFnZVByb3BlcnR5KTsKKyAg
ICBiaW5kTWV0aG9kKCJwYWdlU2l6ZUFuZE1hcmdpbnNJblBpeGVscyIsICZMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6cGFnZVNpemVBbmRNYXJnaW5zSW5QaXhlbHMpOwogICAgIGJpbmRNZXRob2QoInBh
dGhUb0xvY2FsUmVzb3VyY2UiLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBhdGhUb0xvY2FsUmVz
b3VyY2UpOwogICAgIGJpbmRNZXRob2QoInBhdXNlQW5pbWF0aW9uQXRUaW1lT25FbGVtZW50V2l0
aElkIiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpwYXVzZUFuaW1hdGlvbkF0VGltZU9uRWxlbWVu
dFdpdGhJZCk7CiAgICAgYmluZE1ldGhvZCgicGF1c2VUcmFuc2l0aW9uQXRUaW1lT25FbGVtZW50
V2l0aElkIiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpwYXVzZVRyYW5zaXRpb25BdFRpbWVPbkVs
ZW1lbnRXaXRoSWQpOwpAQCAtMTU5MSw2ICsxNTk1LDIyIEBAIHZvaWQgTGF5b3V0VGVzdENvbnRy
b2xsZXI6OmNvdW50ZXJWYWx1ZUYKICAgICByZXN1bHQtPnNldChjb3VudGVyVmFsdWUudXRmOCgp
KTsKIH0KIAorLy8gUGFyc2UgYSBzaW5nbGUgYXJndW1lbnQuIFRoZSBtZXRob2QgcmV0dXJucyB0
cnVlIGlmIHRoZXJlIGlzIGFuIGFyZ3VtZW50IHRoYXQKKy8vIGlzIGEgbnVtYmVyIG9yIGlmIHRo
ZXJlIGlzIG5vIGFyZ3VtZW50IGF0IGFsbC4gSXQgcmV0dXJucyBmYWxzZSBvbmx5IGlmIHRoZXJl
CisvLyBpcyBzb21lIGFyZ3VtZW50IHRoYXQgaXMgbm90IGEgbnVtYmVyLiBUaGUgdmFsdWUgcGFy
YW1ldGVyIGlzIGZpbGxlZCB3aXRoIHRoZQorLy8gcGFyc2VkIG51bWJlciwgb3IgZ2l2ZW4gdGhl
IGRlZmF1bHQgaWYgdGhlcmUgaXMgbm8gYXJndW1lbnQuCitzdGF0aWMgYm9vbCBwYXJzZUNwcEFy
Z3VtZW50SW50MzIoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIGludCBhcmdJbmRl
eCwgaW50KiB2YWx1ZSwgaW50IGRlZmF1bHRWYWx1ZSkKK3sKKyAgICBpZiAoKGludClhcmd1bWVu
dHMuc2l6ZSgpID4gYXJnSW5kZXgpIHsKKyAgICAgICAgaWYgKCFhcmd1bWVudHNbYXJnSW5kZXhd
LmlzTnVtYmVyKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICp2YWx1ZSA9
IGFyZ3VtZW50c1thcmdJbmRleF0udG9JbnQzMigpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CisgICAgKnZhbHVlID0gZGVmYXVsdFZhbHVlOworICAgIHJldHVybiB0cnVlOworfQorCiBz
dGF0aWMgYm9vbCBwYXJzZVBhZ2VTaXplUGFyYW1ldGVycyhjb25zdCBDcHBBcmd1bWVudExpc3Qm
IGFyZ3VtZW50cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBhcmdP
ZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQqIHBhZ2VXaWR0
aEluUGl4ZWxzLApAQCAtMTU5OCwyMSArMTYxOCw0MCBAQCBzdGF0aWMgYm9vbCBwYXJzZVBhZ2VT
aXplUGFyYW1ldGVycyhjb25zCiB7CiAgICAgLy8gV2ViS2l0IGlzIHVzaW5nIHRoZSB3aW5kb3cg
d2lkdGgvaGVpZ2h0IG9mIER1bXBSZW5kZXJUcmVlIGFzIHRoZQogICAgIC8vIGRlZmF1bHQgdmFs
dWUgb2YgdGhlIHBhZ2Ugc2l6ZS4KLSAgICAvLyBGSVhNRTogc2hhcmUgdGhlc2UgdmFsdWVzIHdp
dGggb3RoZXIgcG9ydHMuCi0gICAgKnBhZ2VXaWR0aEluUGl4ZWxzID0gODAwOwotICAgICpwYWdl
SGVpZ2h0SW5QaXhlbHMgPSA2MDA7Ci0gICAgc3dpdGNoIChhcmd1bWVudHMuc2l6ZSgpIC0gYXJn
T2Zmc2V0KSB7Ci0gICAgY2FzZSAyOgotICAgICAgICBpZiAoIWFyZ3VtZW50c1thcmdPZmZzZXRd
LmlzTnVtYmVyKCkgfHwgIWFyZ3VtZW50c1sxICsgYXJnT2Zmc2V0XS5pc051bWJlcigpKQotICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAqcGFnZVdpZHRoSW5QaXhlbHMgPSBhcmd1
bWVudHNbYXJnT2Zmc2V0XS50b0ludDMyKCk7Ci0gICAgICAgICpwYWdlSGVpZ2h0SW5QaXhlbHMg
PSBhcmd1bWVudHNbMSArIGFyZ09mZnNldF0udG9JbnQzMigpOwotICAgICAgICAvLyBmYWxsIHRo
cm91Z2guCi0gICAgY2FzZSAwOgotICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0OgorICAgIC8v
IEZJWE1FOiBzaGFyZSB0aGUgZGVmYXVsdCB2YWx1ZXMgd2l0aCBvdGhlciBwb3J0cy4KKyAgICBp
bnQgYXJnQ291bnQgPSAoaW50KWFyZ3VtZW50cy5zaXplKCkgLSBhcmdPZmZzZXQ7CisgICAgaWYg
KGFyZ0NvdW50ICYmIGFyZ0NvdW50ICE9IDIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBp
ZiAoIXBhcnNlQ3BwQXJndW1lbnRJbnQzMihhcmd1bWVudHMsIGFyZ09mZnNldCwgcGFnZVdpZHRo
SW5QaXhlbHMsIDgwMCkKKyAgICAgICAgfHwgIXBhcnNlQ3BwQXJndW1lbnRJbnQzMihhcmd1bWVu
dHMsIGFyZ09mZnNldCArIDEsIHBhZ2VIZWlnaHRJblBpeGVscywgNjAwKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgYm9vbCBwYXJzZVBhZ2VO
dW1iZXIoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIGludCBhcmdPZmZzZXQsIGlu
dCogcGFnZU51bWJlcikKK3sKKyAgICBpZiAoKGludClhcmd1bWVudHMuc2l6ZSgpID4gYXJnT2Zm
c2V0ICsgMSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghcGFyc2VDcHBBcmd1bWVu
dEludDMyKGFyZ3VtZW50cywgYXJnT2Zmc2V0LCBwYWdlTnVtYmVyLCAwKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgYm9vbCBwYXJzZVBhZ2VO
dW1iZXJTaXplTWFyZ2lucyhjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgaW50IGFy
Z09mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCogcGFn
ZU51bWJlciwgaW50KiB3aWR0aCwgaW50KiBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQqIG1hcmdpblRvcCwgaW50KiBtYXJnaW5SaWdodCwgaW50KiBt
YXJnaW5Cb3R0b20sIGludCogbWFyZ2luTGVmdCkKK3sKKyAgICBpbnQgYXJnQ291bnQgPSAoaW50
KWFyZ3VtZW50cy5zaXplKCkgLSBhcmdPZmZzZXQ7CisgICAgaWYgKGFyZ0NvdW50ICYmIGFyZ0Nv
dW50ICE9IDcpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIXBhcnNlQ3BwQXJndW1l
bnRJbnQzMihhcmd1bWVudHMsIGFyZ09mZnNldCwgcGFnZU51bWJlciwgMCkKKyAgICAgICAgfHwg
IXBhcnNlQ3BwQXJndW1lbnRJbnQzMihhcmd1bWVudHMsIGFyZ09mZnNldCArIDEsIHdpZHRoLCAw
KQorICAgICAgICB8fCAhcGFyc2VDcHBBcmd1bWVudEludDMyKGFyZ3VtZW50cywgYXJnT2Zmc2V0
ICsgMiwgaGVpZ2h0LCAwKQorICAgICAgICB8fCAhcGFyc2VDcHBBcmd1bWVudEludDMyKGFyZ3Vt
ZW50cywgYXJnT2Zmc2V0ICsgMywgbWFyZ2luVG9wLCAwKQorICAgICAgICB8fCAhcGFyc2VDcHBB
cmd1bWVudEludDMyKGFyZ3VtZW50cywgYXJnT2Zmc2V0ICsgNCwgbWFyZ2luUmlnaHQsIDApCisg
ICAgICAgIHx8ICFwYXJzZUNwcEFyZ3VtZW50SW50MzIoYXJndW1lbnRzLCBhcmdPZmZzZXQgKyA1
LCBtYXJnaW5Cb3R0b20sIDApCisgICAgICAgIHx8ICFwYXJzZUNwcEFyZ3VtZW50SW50MzIoYXJn
dW1lbnRzLCBhcmdPZmZzZXQgKyA2LCBtYXJnaW5MZWZ0LCAwKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMTY0MCw2ICsxNjc5LDYwIEBA
IHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBhZ2VOdW1iZXJGb3IKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGZsb2F0PihwYWdl
SGVpZ2h0SW5QaXhlbHMpKSk7CiB9CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBhZ2VT
aXplQW5kTWFyZ2luc0luUGl4ZWxzKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBD
cHBWYXJpYW50KiByZXN1bHQpCit7CisgICAgcmVzdWx0LT5zZXQoIiIpOworICAgIGludCBwYWdl
TnVtYmVyID0gMDsKKyAgICBpbnQgd2lkdGggPSAwOworICAgIGludCBoZWlnaHQgPSAwOworICAg
IGludCBtYXJnaW5Ub3AgPSAwOworICAgIGludCBtYXJnaW5SaWdodCA9IDA7CisgICAgaW50IG1h
cmdpbkJvdHRvbSA9IDA7CisgICAgaW50IG1hcmdpbkxlZnQgPSAwOworICAgIGlmICghcGFyc2VQ
YWdlTnVtYmVyU2l6ZU1hcmdpbnMoYXJndW1lbnRzLCAwLCAmcGFnZU51bWJlciwgJndpZHRoLCAm
aGVpZ2h0LCAmbWFyZ2luVG9wLCAmbWFyZ2luUmlnaHQsICZtYXJnaW5Cb3R0b20sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbWFyZ2luTGVmdCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIFdlYkZyYW1lKiBmcmFtZSA9IG1fc2hlbGwtPndlYlZpZXcoKS0+bWFpbkZyYW1l
KCk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuOworICAgIFdlYlNpemUgcGFnZVNp
emUod2lkdGgsIGhlaWdodCk7CisgICAgZnJhbWUtPmdldFBhZ2VTaXplQW5kTWFyZ2luc0luUGl4
ZWxzKHBhZ2VOdW1iZXIsIHBhZ2VTaXplLCBtYXJnaW5Ub3AsIG1hcmdpblJpZ2h0LCBtYXJnaW5C
b3R0b20sIG1hcmdpbkxlZnQpOworICAgIHN0cmluZ3N0cmVhbSByZXN1bHRTdHJpbmc7CisgICAg
cmVzdWx0U3RyaW5nIDw8ICIoIiA8PCBwYWdlU2l6ZS53aWR0aCA8PCAiLCAiIDw8IHBhZ2VTaXpl
LmhlaWdodCA8PCAiKSAiIDw8IG1hcmdpblRvcCA8PCAiICIgPDwgbWFyZ2luUmlnaHQgPDwgIiAi
CisgICAgICAgICAgICAgICAgIDw8IG1hcmdpbkJvdHRvbSA8PCAiICIgPDwgbWFyZ2luTGVmdDsK
KyAgICByZXN1bHQtPnNldChyZXN1bHRTdHJpbmcuc3RyKCkuY19zdHIoKSk7Cit9CisKK3ZvaWQg
TGF5b3V0VGVzdENvbnRyb2xsZXI6OmlzUGFnZUJveFZpc2libGUoY29uc3QgQ3BwQXJndW1lbnRM
aXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKK3sKKyAgICByZXN1bHQtPnNldE51
bGwoKTsKKyAgICBpbnQgcGFnZU51bWJlciA9IDA7CisgICAgaWYgKCFwYXJzZVBhZ2VOdW1iZXIo
YXJndW1lbnRzLCAwLCAmcGFnZU51bWJlcikpCisgICAgICAgIHJldHVybjsKKyAgICBXZWJGcmFt
ZSogZnJhbWUgPSBtX3NoZWxsLT53ZWJWaWV3KCktPm1haW5GcmFtZSgpOworICAgIGlmICghZnJh
bWUpCisgICAgICAgIHJldHVybjsKKyAgICByZXN1bHQtPnNldChmcmFtZS0+aXNQYWdlQm94Vmlz
aWJsZShwYWdlTnVtYmVyKSk7Cit9CisKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBhZ2VQ
cm9wZXJ0eShjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVz
dWx0KQoreworICAgIHJlc3VsdC0+c2V0KCIiKTsKKyAgICBpbnQgcGFnZU51bWJlciA9IDA7Cisg
ICAgaWYgKCFwYXJzZVBhZ2VOdW1iZXIoYXJndW1lbnRzLCAxLCAmcGFnZU51bWJlcikpCisgICAg
ICAgIHJldHVybjsKKyAgICBpZiAoIWFyZ3VtZW50c1swXS5pc1N0cmluZygpKQorICAgICAgICBy
ZXR1cm47CisgICAgV2ViRnJhbWUqIGZyYW1lID0gbV9zaGVsbC0+d2ViVmlldygpLT5tYWluRnJh
bWUoKTsKKyAgICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1cm47CisgICAgV2ViU2l6ZSBwYWdl
U2l6ZSg4MDAsIDgwMCk7CisgICAgZnJhbWUtPnByaW50QmVnaW4ocGFnZVNpemUpOworICAgIHJl
c3VsdC0+c2V0KGZyYW1lLT5nZXRQYWdlUHJvcGVydHkoY3BwVmFyaWFudFRvV2ViU3RyaW5nKGFy
Z3VtZW50c1swXSksIHBhZ2VOdW1iZXIpLnV0ZjgoKSk7CisgICAgZnJhbWUtPnByaW50RW5kKCk7
Cit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6Om51bWJlck9mUGFnZXMoY29uc3QgQ3Bw
QXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKIHsKICAgICByZXN1
bHQtPnNldE51bGwoKTsKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91
dFRlc3RDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaAkocmV2aXNpb24gOTkzMDgpCisrKyBUb29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMzQsNiArMzM0LDE1IEBAIHB1YmxpYzoKICAgICAvLyBHZXRzIHRoZSBudW1iZXIg
b2YgcGFnZSB3aGVyZSB0aGUgc3BlY2lmaWVkIGVsZW1lbnQgd2lsbCBiZSBwdXQuCiAgICAgdm9p
ZCBwYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFy
aWFudCopOwogCisgICAgLy8gR2V0cyB0aGUgcGFnZSBzaXplIGFuZCBtYXJnaW5zIGZvciBhIHBy
aW50ZWQgcGFnZS4KKyAgICB2b2lkIHBhZ2VTaXplQW5kTWFyZ2luc0luUGl4ZWxzKGNvbnN0IENw
cEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKKworICAgIC8vIFJldHVybnMgdGhlIHZpc2li
aWxpbHR5IHN0YXR1cyBvZiBhIHBhZ2UgYm94IGZvciBwcmludGluZworICAgIHZvaWQgaXNQYWdl
Qm94VmlzaWJsZShjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CisKKyAgICAv
LyBHZXRzIHRoZSBwYWdlLXJlbGF0ZWQgcHJvcGVydHkgZm9yIHByaW50ZWQgY29udGVudAorICAg
IHZvaWQgcGFnZVByb3BlcnR5KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsK
KwogICAgIC8vIEdldHMgdGhlIG51bWJlciBvZiBwYWdlcyB0byBiZSBwcmludGVkLgogICAgIHZv
aWQgbnVtYmVyT2ZQYWdlcyhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAK
SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDk5MzA4KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMTEtMDQgIFN0ZXBoZW4gQ2hlbm5leSAg
PHNjaGVubmV5QGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIERSVCBkb2VzIG5v
dCBoYXZlIExheW91dFRlc3RDb250cm9sbGVyLnBhZ2VTaXplQW5kTWFyZ2luc0luUGl4ZWxzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00OTI1NworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0v
Y2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0OiBSZW1vdmVkIGV4cGVjdGVkIGZhaWxzIGZv
cgorICAgICAgICBwcmludGluZyB0ZXN0cyB0aGF0IHdlcmUgdXNpbmcgbWlzc2luZyBmdW5jdGlv
bmFsaXR5IGluIExheW91dFRlc3RDb250cm9sbGVyLgorCiAyMDExLTExLTA0ICBNaWhuZWEgT3Zp
ZGVuaWUgIDxtaWhuZWFAYWRvYmUuY29tPgogCiAgICAgICAgIENvcnJlY3QgcGFyc2luZyBvZiBp
bmNvbXBsZXRlIEAtd2Via2l0LXJlZ2lvbiBydWxlcy4KSW5kZXg6IExheW91dFRlc3RzL3BsYXRm
b3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQJKHJldmlzaW9uIDk5
MzA4KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yMDkzLDkgKzIwOTMsNiBAQCBCVUdDUjQ2NjAzIFNMT1cg
UkVMRUFTRSA6IGZhc3QvZnJhbWVzL2xvCiBCVUdDUjQ2NjAzIERFQlVHIDogZmFzdC9mcmFtZXMv
bG90cy1vZi1pZnJhbWVzLmh0bWwgPSBUSU1FT1VUCiBCVUdDUjQ2NjAzIERFQlVHIDogZmFzdC9m
cmFtZXMvbG90cy1vZi1vYmplY3RzLmh0bWwgPSBUSU1FT1VUCiAKLS8vIExheW91dFRlc3RDb250
cm9sbGVyOjpwYWdlUHJvcGVydHkgaXMgbm90IGltcGxlbWVudGVkIGZvciBDaHJvbWl1bSB5ZXQu
Ci1CVUdXSzM1OTYxIDogcHJpbnRpbmcvcGFnZS1ydWxlLXNlbGVjdGlvbi5odG1sID0gVEVYVAot
CiBCVUdDUjQ3MDM1IFdJTiBERUJVRyA6IGZhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9kb2N1bWVu
dC1kZXN0cm95ZWQtbmF2aWdhdGUtYmFjay13aXRoLWZyYWdtZW50LXNjcm9sbC5odG1sID0gUEFT
UyBURVhUCiAKIC8vIENTUzMgSHlwaGVuYXRpb24gbGFuZGVkIGluIGh0dHA6Ly90cmFjLndlYmtp
dC5vcmcvY2hhbmdlc2V0LzYxNTQ4CkBAIC0yMTExLDkgKzIxMDgsNiBAQCBCVUdDUjQ3MDgzIDog
ZmFzdC90ZXh0L2h5cGhlbmF0ZS1saW1pdC1iCiAvLyBXZWJLaXQgcm9sbCA2MTU0Nzo2MTYyOS4g
U3RpbGwgbmVlZCB0byBpbnZlc3RpZ2F0ZS4KIEJVR19IQ0xBTSA6IGZhc3QvanMvc2NyaXB0LWxp
bmUtbnVtYmVyLmh0bWwgPSBURVhUCiAKLS8vIExheW91dFRlc3RDb250cm9sbGVyOjppc1BhZ2VC
b3hWaXNpYmxlLCBwYWdlQXJlYVJlY3RJblBpeGVscywgYW5kIHByZWZlcnJlZFBhZ2VTaXplSW5Q
aXhlbHMgYXJlIG5vdCBpbXBsZW1lbnRlZCB5ZXQgZm9yIENocm9taXVtLgotQlVHV0szNzUzOCA6
IHByaW50aW5nL3BhZ2UtZm9ybWF0LWRhdGEuaHRtbCA9IFRFWFQKLQogLy8gRmlyc3Qgbm90aWNl
ZCBvbiB0cnlib3RzIGFmdGVyIHI2MTgzNiwgbm93IGluIHRoZSB0cmVlLgogQlVHX01OQUdBTk9W
IExJTlVYIDogZmFzdC9qcy9PYmplY3QtY3JlYXRlLmh0bWwgPSBDUkFTSCBGQUlMCiAKQEAgLTI0
NTksOSArMjQ1Myw2IEBAIFdPTlRGSVggU0tJUCBXSU4gOiBwbGF0Zm9ybS93aW4vcGx1Z2lucy8K
IC8vIEFkZGVkIGluIFdLIHI3MTQyNAogQlVHQ1I2MjEzOCA6IGFuaW1hdGlvbnMvc3RvcC1hbmlt
YXRpb24tb24tc3VzcGVuZC5odG1sID0gUEFTUyBDUkFTSCBURVhUCiAKLS8vIHRlc3Rfc2hlbGwg
YW5kIERSVCBkbyBub3QgaGF2ZSBMYXlvdXRUZXN0Q29udHJvbGxlci5wYWdlU2l6ZUFuZE1hcmdp
bnNJblBpeGVscwotQlVHQ1I2MjUxNSA6IHByaW50aW5nL3BhZ2UtZm9ybWF0LWRhdGEtZGlzcGxh
eS1ub25lLmh0bWwgPSBURVhUCi0KIEJVR0NSNjE3MzkgREVCVUcgOiBhbmltYXRpb25zL3N1c3Bl
bmQtcmVzdW1lLWFuaW1hdGlvbi1ldmVudHMuaHRtbCA9IFBBU1MgQ1JBU0ggVEVYVAogCiAvLyBO
ZXcgdGVzdHMgYWRkZWQgd2l0aCBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC83MjQ3
MiBhbmQgZnVydGhlci4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114370</attachid>
            <date>2011-11-09 14:35:44 -0800</date>
            <delta_ts>2011-11-10 10:04:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-49257-20111109173543.patch</filename>
            <type>text/plain</type>
            <size>17711</size>
            <attacher name="Stephen Chenney">schenney</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA5OTc0MykKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcg
QEAKKzIwMTEtMTEtMDkgIFN0ZXBoZW4gQ2hlbm5leSAgPHNjaGVubmV5QGNocm9taXVtLm9yZz4K
KworICAgICAgICBbQ2hyb21pdW1dIERSVCBkb2VzIG5vdCBoYXZlIExheW91dFRlc3RDb250cm9s
bGVyLnBhZ2VTaXplQW5kTWFyZ2luc0luUGl4ZWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD00OTI1NworCisgICAgICAgIEFkZCB0aGUgV2ViRnJhbWU6
OmdldFBhZ2VQcm9wZXJ0eSBtZXRob2QgZm9yIENocm9taXVtLgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcHVibGljL1dlYkZyYW1lLmg6CisgICAg
ICAgICogc3JjL1dlYkZyYW1lSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lSW1w
bDo6Z2V0UGFnZVByb3BlcnR5KToKKyAgICAgICAgKiBzcmMvV2ViRnJhbWVJbXBsLmg6CisKIDIw
MTEtMTEtMDkgIEhlbnJpayBHcnVuZWxsICA8Z3J1bmVsbEBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgQWRkaW5nIG1pc3NpbmcgaW1wbGVtZW50YXRpb24gb2YgV2ViTWVkaWFTdHJlYW1EZXNjcmlw
dG9yOjpsYWJlbCgpLgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJh
bWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFt
ZS5oCShyZXZpc2lvbiA5OTc0MykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YkZyYW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3MiwxMiArNDcyLDE3IEBAIHB1YmxpYzoKICAg
ICAvLyBwaXhlbHMgcGVyIGluY2guIHBhZ2VTaXplLCBtYXJnaW5Ub3AsIG1hcmdpblJpZ2h0LCBt
YXJnaW5Cb3R0b20sCiAgICAgLy8gbWFyZ2luTGVmdCBtdXN0IGJlIGluaXRpYWxpemVkIHRvIHRo
ZSBkZWZhdWx0IHZhbHVlcyB0aGF0IGFyZSB1c2VkIGlmCiAgICAgLy8gYXV0byBpcyBzcGVjaWZp
ZWQuCi0gICAgdmlydHVhbCB2b2lkIHBhZ2VTaXplQW5kTWFyZ2luc0luUGl4ZWxzKGludCBwYWdl
SW5kZXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYlNp
emUmIHBhZ2VTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQmIG1hcmdpblRvcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50JiBtYXJnaW5SaWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50JiBtYXJnaW5Cb3R0b20sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludCYgbWFyZ2luTGVmdCkgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBnZXRQYWdlU2l6ZUFuZE1hcmdpbnNJblBpeGVscyhpbnQgcGFnZUluZGV4LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJTaXplJiBwYWdlU2l6ZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50JiBtYXJn
aW5Ub3AsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dCYgbWFyZ2luUmlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGludCYgbWFyZ2luQm90dG9tLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQmIG1hcmdpbkxlZnQpID0gMDsKKworICAgIC8vIFJldHVybnMg
dGhlIHZhbHVlIGZvciBhIHBhZ2UgcHJvcGVydHkgdGhhdCBpcyBvbmx5IGRlZmluZWQgd2hlbiBw
cmludGluZy4KKyAgICAvLyBwcmludEJlZ2luIG11c3QgaGF2ZSBiZWVuIGNhbGxlZCBiZWZvcmUg
dGhpcyBtZXRob2QuCisgICAgdmlydHVhbCBXZWJTdHJpbmcgZ2V0UGFnZVByb3BlcnR5KGNvbnN0
IFdlYlN0cmluZyYgcHJvcGVydHlOYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQgcGFnZUluZGV4KSA9IDA7CiAKICAgICAvLyBGaW5kLWluLXBhZ2UgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIApJbmRl
eDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCShyZXZpc2lv
biA5OTc0MykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE0NzUsMTIgKzE0NzUsMTIgQEAgYm9vbCBXZWJGcmFtZUltcGw6
OmlzUGFnZUJveFZpc2libGUoaW50IAogICAgIHJldHVybiBmcmFtZSgpLT5kb2N1bWVudCgpLT5p
c1BhZ2VCb3hWaXNpYmxlKHBhZ2VJbmRleCk7CiB9CiAKLXZvaWQgV2ViRnJhbWVJbXBsOjpwYWdl
U2l6ZUFuZE1hcmdpbnNJblBpeGVscyhpbnQgcGFnZUluZGV4LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYlNpemUmIHBhZ2VTaXplLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCYgbWFyZ2luVG9wLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCYgbWFyZ2luUmln
aHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50JiBt
YXJnaW5Cb3R0b20sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50JiBtYXJnaW5MZWZ0KQordm9pZCBXZWJGcmFtZUltcGw6OmdldFBhZ2VTaXplQW5kTWFy
Z2luc0luUGl4ZWxzKGludCBwYWdlSW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgV2ViU2l6ZSYgcGFnZVNpemUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50JiBtYXJnaW5Ub3AsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50JiBtYXJnaW5SaWdo
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQm
IG1hcmdpbkJvdHRvbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQmIG1hcmdpbkxlZnQpCiB7CiAgICAgSW50U2l6ZSBzaXplKHBhZ2VTaXplLndp
ZHRoLCBwYWdlU2l6ZS5oZWlnaHQpOwogICAgIGZyYW1lKCktPmRvY3VtZW50KCktPnBhZ2VTaXpl
QW5kTWFyZ2luc0luUGl4ZWxzKHBhZ2VJbmRleCwKQEAgLTE0OTIsNiArMTQ5MiwxMiBAQCB2b2lk
IFdlYkZyYW1lSW1wbDo6cGFnZVNpemVBbmRNYXJnaW5zSW5QCiAgICAgcGFnZVNpemUgPSBzaXpl
OwogfQogCitXZWJTdHJpbmcgV2ViRnJhbWVJbXBsOjpnZXRQYWdlUHJvcGVydHkoY29uc3QgV2Vi
U3RyaW5nJiBwcm9wZXJ0eU5hbWUsIGludCBwYWdlSW5kZXgpCit7CisgICAgQVNTRVJUKG1fcHJp
bnRDb250ZXh0KTsKKyAgICByZXR1cm4gbV9wcmludENvbnRleHQtPnBhZ2VQcm9wZXJ0eShtX2Zy
YW1lLCBwcm9wZXJ0eU5hbWUudXRmOCgpLmRhdGEoKSwgcGFnZUluZGV4KTsKK30KKwogYm9vbCBX
ZWJGcmFtZUltcGw6OmZpbmQoaW50IGlkZW50aWZpZXIsCiAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBXZWJTdHJpbmcmIHNlYXJjaFRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBXZWJGaW5kT3B0aW9ucyYgb3B0aW9ucywKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYkZyYW1lSW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYkZyYW1lSW1wbC5oCShyZXZpc2lvbiA5OTc0MykKKysrIFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzIsMTIgKzE3
MiwxMyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHByaW50RW5kKCk7CiAgICAgdmlydHVh
bCBib29sIGlzUHJpbnRTY2FsaW5nRGlzYWJsZWRGb3JQbHVnaW4oY29uc3QgV2ViTm9kZSYpOwog
ICAgIHZpcnR1YWwgYm9vbCBpc1BhZ2VCb3hWaXNpYmxlKGludCBwYWdlSW5kZXgpOwotICAgIHZp
cnR1YWwgdm9pZCBwYWdlU2l6ZUFuZE1hcmdpbnNJblBpeGVscyhpbnQgcGFnZUluZGV4LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJTaXplJiBwYWdlU2l6
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50JiBtYXJn
aW5Ub3AsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCYg
bWFyZ2luUmlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGludCYgbWFyZ2luQm90dG9tLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQmIG1hcmdpbkxlZnQpOworICAgIHZpcnR1YWwgdm9pZCBnZXRQYWdlU2l6ZUFu
ZE1hcmdpbnNJblBpeGVscyhpbnQgcGFnZUluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBXZWJTaXplJiBwYWdlU2l6ZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50JiBtYXJnaW5Ub3AsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCYgbWFyZ2luUmlnaHQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCYgbWFy
Z2luQm90dG9tLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQmIG1hcmdpbkxlZnQpOworICAgIHZpcnR1YWwgV2ViU3RyaW5nIGdldFBhZ2VQcm9wZXJ0
eShjb25zdCBXZWJTdHJpbmcmIHByb3BlcnR5TmFtZSwgaW50IHBhZ2VJbmRleCk7CiAgICAgdmly
dHVhbCB2b2lkIHByaW50UGFnZXNXaXRoQm91bmRhcmllcyhXZWJDYW52YXMqLCBjb25zdCBXZWJT
aXplJik7CiAgICAgdmlydHVhbCBib29sIGZpbmQoCiAgICAgICAgIGludCBpZGVudGlmaWVyLCBj
b25zdCBXZWJTdHJpbmcmIHNlYXJjaFRleHQsIGNvbnN0IFdlYkZpbmRPcHRpb25zJiwKSW5kZXg6
IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9u
IDk5NzQzKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEg
QEAKKzIwMTEtMTEtMDkgIFN0ZXBoZW4gQ2hlbm5leSAgPHNjaGVubmV5QGNocm9taXVtLm9yZz4K
KworICAgICAgICBbQ2hyb21pdW1dIERSVCBkb2VzIG5vdCBoYXZlIExheW91dFRlc3RDb250cm9s
bGVyLnBhZ2VTaXplQW5kTWFyZ2luc0luUGl4ZWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD00OTI1NworCisgICAgICAgIEFkZHMgdGhlIHJlbWFpbmlu
ZyBtaXNzaW5nIGxheW91dCB0ZXN0IGZ1bmN0aW9uYWxpdHkgZm9yIHByaW50aW5nLgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoTGF5b3V0VGVz
dENvbnRyb2xsZXI6OkxheW91dFRlc3RDb250cm9sbGVyKTogQWRkIGJpbmRpbmdzIGZvciBuZXcg
SlMgbWV0aG9kcworICAgICAgICAocGFyc2VQYWdlTnVtYmVyKTogTWV0aG9kIHRvIHBhcnNlIEpT
IGFyZ3VtZW50cyBmb3IgYSBwYWdlIG51bWJlcgorICAgICAgICAocGFyc2VQYWdlTnVtYmVyU2l6
ZU1hcmdpbnMpOiBNZXRob2QgdG8gcGFyc2UgSlMgYXJndW1lbnRzIGZvciBwYWdlIHNpemUgYW5k
IG1hcmdpbnMKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpwYWdlU2l6ZUFuZE1hcmdp
bnNJblBpeGVscyk6IEdldCB0aGUgcGFnZSBzaXplIGFuZCBtYXJnaW5zIGZvciBhIGdpdmVuIHBh
Z2UuCisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6aXNQYWdlQm94VmlzaWJsZSk6IGdl
dCB0aGUgdmlzaWJpbGl0eSBzdGF0dXMgZm9yIHByaW50aW5nCisgICAgICAgIChMYXlvdXRUZXN0
Q29udHJvbGxlcjo6cGFnZVByb3BlcnR5KTogZ2V0IGEgc3BlY2lmaWMgQ1NTIHByb3BlcnR5IHdo
ZW4gaW4gcHJpbnRpbmcgbW9kZQorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xh
eW91dFRlc3RDb250cm9sbGVyLmg6IEFkZCBkZWNsYXJhdGlvbnMgZm9yIG5ldyBtZXRob2RzCisK
IDIwMTEtMTEtMDkgIEJldGggRGFraW4gIDxiZGFraW5AYXBwbGUuY29tPgogCiAgICAgICAgIFNw
ZWN1bGF0aXZlIGJ1aWxkIGZpeC4KSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L0xheW91dFRlc3RDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDk5NzQzKQor
KysgVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC02Myw2ICs2Myw3IEBACiAjaW5jbHVkZSA8Y2xvY2FsZT4KICNp
bmNsdWRlIDxjc3RkbGliPgogI2luY2x1ZGUgPGxpbWl0cz4KKyNpbmNsdWRlIDxzc3RyZWFtPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiAjaWYgT1MoV0lORE9XUykKQEAgLTEy
Miw2ICsxMjMsNyBAQCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6TGF5b3V0VGVzdENvbnRyb2xsCiAg
ICAgYmluZE1ldGhvZCgiZ3JhbnREZXNrdG9wTm90aWZpY2F0aW9uUGVybWlzc2lvbiIsICZMYXlv
dXRUZXN0Q29udHJvbGxlcjo6Z3JhbnREZXNrdG9wTm90aWZpY2F0aW9uUGVybWlzc2lvbik7CiAg
ICAgYmluZE1ldGhvZCgiaGFzU3BlbGxpbmdNYXJrZXIiLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6
Omhhc1NwZWxsaW5nTWFya2VyKTsKICAgICBiaW5kTWV0aG9kKCJpc0NvbW1hbmRFbmFibGVkIiwg
JkxheW91dFRlc3RDb250cm9sbGVyOjppc0NvbW1hbmRFbmFibGVkKTsKKyAgICBiaW5kTWV0aG9k
KCJpc1BhZ2VCb3hWaXNpYmxlIiwgJkxheW91dFRlc3RDb250cm9sbGVyOjppc1BhZ2VCb3hWaXNp
YmxlKTsKICAgICBiaW5kTWV0aG9kKCJsYXllclRyZWVBc1RleHQiLCAmTGF5b3V0VGVzdENvbnRy
b2xsZXI6OmxheWVyVHJlZUFzVGV4dCk7CiAgICAgYmluZE1ldGhvZCgibG9zZUNvbXBvc2l0b3JD
b250ZXh0IiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpsb3NlQ29tcG9zaXRvckNvbnRleHQpOwog
ICAgIGJpbmRNZXRob2QoIm1hcmtlclRleHRGb3JMaXN0SXRlbSIsICZMYXlvdXRUZXN0Q29udHJv
bGxlcjo6bWFya2VyVGV4dEZvckxpc3RJdGVtKTsKQEAgLTEzMiw2ICsxMzQsOCBAQCBMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6TGF5b3V0VGVzdENvbnRyb2xsCiAgICAgYmluZE1ldGhvZCgib2JqQ0lk
ZW50aXR5SXNFcXVhbCIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6b2JqQ0lkZW50aXR5SXNFcXVh
bCk7CiAgICAgYmluZE1ldGhvZCgib3ZlcnJpZGVQcmVmZXJlbmNlIiwgJkxheW91dFRlc3RDb250
cm9sbGVyOjpvdmVycmlkZVByZWZlcmVuY2UpOwogICAgIGJpbmRNZXRob2QoInBhZ2VOdW1iZXJG
b3JFbGVtZW50QnlJZCIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGFnZU51bWJlckZvckVsZW1l
bnRCeUlkKTsKKyAgICBiaW5kTWV0aG9kKCJwYWdlUHJvcGVydHkiLCAmTGF5b3V0VGVzdENvbnRy
b2xsZXI6OnBhZ2VQcm9wZXJ0eSk7CisgICAgYmluZE1ldGhvZCgicGFnZVNpemVBbmRNYXJnaW5z
SW5QaXhlbHMiLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBhZ2VTaXplQW5kTWFyZ2luc0luUGl4
ZWxzKTsKICAgICBiaW5kTWV0aG9kKCJwYXRoVG9Mb2NhbFJlc291cmNlIiwgJkxheW91dFRlc3RD
b250cm9sbGVyOjpwYXRoVG9Mb2NhbFJlc291cmNlKTsKICAgICBiaW5kTWV0aG9kKCJwYXVzZUFu
aW1hdGlvbkF0VGltZU9uRWxlbWVudFdpdGhJZCIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGF1
c2VBbmltYXRpb25BdFRpbWVPbkVsZW1lbnRXaXRoSWQpOwogICAgIGJpbmRNZXRob2QoInBhdXNl
VHJhbnNpdGlvbkF0VGltZU9uRWxlbWVudFdpdGhJZCIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6
cGF1c2VUcmFuc2l0aW9uQXRUaW1lT25FbGVtZW50V2l0aElkKTsKQEAgLTE1OTEsNiArMTU5NSwy
MiBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpjb3VudGVyVmFsdWVGCiAgICAgcmVzdWx0
LT5zZXQoY291bnRlclZhbHVlLnV0ZjgoKSk7CiB9CiAKKy8vIFBhcnNlIGEgc2luZ2xlIGFyZ3Vt
ZW50LiBUaGUgbWV0aG9kIHJldHVybnMgdHJ1ZSBpZiB0aGVyZSBpcyBhbiBhcmd1bWVudCB0aGF0
CisvLyBpcyBhIG51bWJlciBvciBpZiB0aGVyZSBpcyBubyBhcmd1bWVudCBhdCBhbGwuIEl0IHJl
dHVybnMgZmFsc2Ugb25seSBpZiB0aGVyZQorLy8gaXMgc29tZSBhcmd1bWVudCB0aGF0IGlzIG5v
dCBhIG51bWJlci4gVGhlIHZhbHVlIHBhcmFtZXRlciBpcyBmaWxsZWQgd2l0aCB0aGUKKy8vIHBh
cnNlZCBudW1iZXIsIG9yIGdpdmVuIHRoZSBkZWZhdWx0IGlmIHRoZXJlIGlzIG5vIGFyZ3VtZW50
Lgorc3RhdGljIGJvb2wgcGFyc2VDcHBBcmd1bWVudEludDMyKGNvbnN0IENwcEFyZ3VtZW50TGlz
dCYgYXJndW1lbnRzLCBpbnQgYXJnSW5kZXgsIGludCogdmFsdWUsIGludCBkZWZhdWx0VmFsdWUp
Cit7CisgICAgaWYgKChpbnQpYXJndW1lbnRzLnNpemUoKSA+IGFyZ0luZGV4KSB7CisgICAgICAg
IGlmICghYXJndW1lbnRzW2FyZ0luZGV4XS5pc051bWJlcigpKQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICAqdmFsdWUgPSBhcmd1bWVudHNbYXJnSW5kZXhdLnRvSW50MzIoKTsK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgICp2YWx1ZSA9IGRlZmF1bHRWYWx1ZTsK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKwogc3RhdGljIGJvb2wgcGFyc2VQYWdlU2l6ZVBhcmFtZXRl
cnMoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgYXJnT2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50KiBwYWdlV2lkdGhJblBpeGVscywKQEAgLTE1OTgsMjEgKzE2MTgsNDAg
QEAgc3RhdGljIGJvb2wgcGFyc2VQYWdlU2l6ZVBhcmFtZXRlcnMoY29ucwogewogICAgIC8vIFdl
YktpdCBpcyB1c2luZyB0aGUgd2luZG93IHdpZHRoL2hlaWdodCBvZiBEdW1wUmVuZGVyVHJlZSBh
cyB0aGUKICAgICAvLyBkZWZhdWx0IHZhbHVlIG9mIHRoZSBwYWdlIHNpemUuCi0gICAgLy8gRklY
TUU6IHNoYXJlIHRoZXNlIHZhbHVlcyB3aXRoIG90aGVyIHBvcnRzLgotICAgICpwYWdlV2lkdGhJ
blBpeGVscyA9IDgwMDsKLSAgICAqcGFnZUhlaWdodEluUGl4ZWxzID0gNjAwOwotICAgIHN3aXRj
aCAoYXJndW1lbnRzLnNpemUoKSAtIGFyZ09mZnNldCkgewotICAgIGNhc2UgMjoKLSAgICAgICAg
aWYgKCFhcmd1bWVudHNbYXJnT2Zmc2V0XS5pc051bWJlcigpIHx8ICFhcmd1bWVudHNbMSArIGFy
Z09mZnNldF0uaXNOdW1iZXIoKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg
KnBhZ2VXaWR0aEluUGl4ZWxzID0gYXJndW1lbnRzW2FyZ09mZnNldF0udG9JbnQzMigpOwotICAg
ICAgICAqcGFnZUhlaWdodEluUGl4ZWxzID0gYXJndW1lbnRzWzEgKyBhcmdPZmZzZXRdLnRvSW50
MzIoKTsKLSAgICAgICAgLy8gZmFsbCB0aHJvdWdoLgotICAgIGNhc2UgMDoKLSAgICAgICAgYnJl
YWs7Ci0gICAgZGVmYXVsdDoKKyAgICAvLyBGSVhNRTogc2hhcmUgdGhlIGRlZmF1bHQgdmFsdWVz
IHdpdGggb3RoZXIgcG9ydHMuCisgICAgaW50IGFyZ0NvdW50ID0gKGludClhcmd1bWVudHMuc2l6
ZSgpIC0gYXJnT2Zmc2V0OworICAgIGlmIChhcmdDb3VudCAmJiBhcmdDb3VudCAhPSAyKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFwYXJzZUNwcEFyZ3VtZW50SW50MzIoYXJndW1l
bnRzLCBhcmdPZmZzZXQsIHBhZ2VXaWR0aEluUGl4ZWxzLCA4MDApCisgICAgICAgIHx8ICFwYXJz
ZUNwcEFyZ3VtZW50SW50MzIoYXJndW1lbnRzLCBhcmdPZmZzZXQgKyAxLCBwYWdlSGVpZ2h0SW5Q
aXhlbHMsIDYwMCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30K
Kworc3RhdGljIGJvb2wgcGFyc2VQYWdlTnVtYmVyKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJn
dW1lbnRzLCBpbnQgYXJnT2Zmc2V0LCBpbnQqIHBhZ2VOdW1iZXIpCit7CisgICAgaWYgKChpbnQp
YXJndW1lbnRzLnNpemUoKSA+IGFyZ09mZnNldCArIDEpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICBpZiAoIXBhcnNlQ3BwQXJndW1lbnRJbnQzMihhcmd1bWVudHMsIGFyZ09mZnNldCwgcGFn
ZU51bWJlciwgMCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30K
Kworc3RhdGljIGJvb2wgcGFyc2VQYWdlTnVtYmVyU2l6ZU1hcmdpbnMoY29uc3QgQ3BwQXJndW1l
bnRMaXN0JiBhcmd1bWVudHMsIGludCBhcmdPZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQqIHBhZ2VOdW1iZXIsIGludCogd2lkdGgsIGludCogaGVpZ2h0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50KiBtYXJnaW5Ub3As
IGludCogbWFyZ2luUmlnaHQsIGludCogbWFyZ2luQm90dG9tLCBpbnQqIG1hcmdpbkxlZnQpCit7
CisgICAgaW50IGFyZ0NvdW50ID0gKGludClhcmd1bWVudHMuc2l6ZSgpIC0gYXJnT2Zmc2V0Owor
ICAgIGlmIChhcmdDb3VudCAmJiBhcmdDb3VudCAhPSA3KQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgaWYgKCFwYXJzZUNwcEFyZ3VtZW50SW50MzIoYXJndW1lbnRzLCBhcmdPZmZzZXQsIHBh
Z2VOdW1iZXIsIDApCisgICAgICAgIHx8ICFwYXJzZUNwcEFyZ3VtZW50SW50MzIoYXJndW1lbnRz
LCBhcmdPZmZzZXQgKyAxLCB3aWR0aCwgMCkKKyAgICAgICAgfHwgIXBhcnNlQ3BwQXJndW1lbnRJ
bnQzMihhcmd1bWVudHMsIGFyZ09mZnNldCArIDIsIGhlaWdodCwgMCkKKyAgICAgICAgfHwgIXBh
cnNlQ3BwQXJndW1lbnRJbnQzMihhcmd1bWVudHMsIGFyZ09mZnNldCArIDMsIG1hcmdpblRvcCwg
MCkKKyAgICAgICAgfHwgIXBhcnNlQ3BwQXJndW1lbnRJbnQzMihhcmd1bWVudHMsIGFyZ09mZnNl
dCArIDQsIG1hcmdpblJpZ2h0LCAwKQorICAgICAgICB8fCAhcGFyc2VDcHBBcmd1bWVudEludDMy
KGFyZ3VtZW50cywgYXJnT2Zmc2V0ICsgNSwgbWFyZ2luQm90dG9tLCAwKQorICAgICAgICB8fCAh
cGFyc2VDcHBBcmd1bWVudEludDMyKGFyZ3VtZW50cywgYXJnT2Zmc2V0ICsgNiwgbWFyZ2luTGVm
dCwgMCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKQEAgLTE2NDAsNiArMTY3OSw2MCBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpwYWdl
TnVtYmVyRm9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdGF0aWNfY2FzdDxmbG9hdD4ocGFnZUhlaWdodEluUGl4ZWxzKSkpOwogfQogCit2b2lkIExh
eW91dFRlc3RDb250cm9sbGVyOjpwYWdlU2l6ZUFuZE1hcmdpbnNJblBpeGVscyhjb25zdCBDcHBB
cmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQoreworICAgIHJlc3Vs
dC0+c2V0KCIiKTsKKyAgICBpbnQgcGFnZU51bWJlciA9IDA7CisgICAgaW50IHdpZHRoID0gMDsK
KyAgICBpbnQgaGVpZ2h0ID0gMDsKKyAgICBpbnQgbWFyZ2luVG9wID0gMDsKKyAgICBpbnQgbWFy
Z2luUmlnaHQgPSAwOworICAgIGludCBtYXJnaW5Cb3R0b20gPSAwOworICAgIGludCBtYXJnaW5M
ZWZ0ID0gMDsKKyAgICBpZiAoIXBhcnNlUGFnZU51bWJlclNpemVNYXJnaW5zKGFyZ3VtZW50cywg
MCwgJnBhZ2VOdW1iZXIsICZ3aWR0aCwgJmhlaWdodCwgJm1hcmdpblRvcCwgJm1hcmdpblJpZ2h0
LCAmbWFyZ2luQm90dG9tLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm1h
cmdpbkxlZnQpKQorICAgICAgICByZXR1cm47CisKKyAgICBXZWJGcmFtZSogZnJhbWUgPSBtX3No
ZWxsLT53ZWJWaWV3KCktPm1haW5GcmFtZSgpOworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJl
dHVybjsKKyAgICBXZWJTaXplIHBhZ2VTaXplKHdpZHRoLCBoZWlnaHQpOworICAgIGZyYW1lLT5n
ZXRQYWdlU2l6ZUFuZE1hcmdpbnNJblBpeGVscyhwYWdlTnVtYmVyLCBwYWdlU2l6ZSwgbWFyZ2lu
VG9wLCBtYXJnaW5SaWdodCwgbWFyZ2luQm90dG9tLCBtYXJnaW5MZWZ0KTsKKyAgICBzdHJpbmdz
dHJlYW0gcmVzdWx0U3RyaW5nOworICAgIHJlc3VsdFN0cmluZyA8PCAiKCIgPDwgcGFnZVNpemUu
d2lkdGggPDwgIiwgIiA8PCBwYWdlU2l6ZS5oZWlnaHQgPDwgIikgIiA8PCBtYXJnaW5Ub3AgPDwg
IiAiIDw8IG1hcmdpblJpZ2h0IDw8ICIgIgorICAgICAgICAgICAgICAgICA8PCBtYXJnaW5Cb3R0
b20gPDwgIiAiIDw8IG1hcmdpbkxlZnQ7CisgICAgcmVzdWx0LT5zZXQocmVzdWx0U3RyaW5nLnN0
cigpLmNfc3RyKCkpOworfQorCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjppc1BhZ2VCb3hW
aXNpYmxlKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1
bHQpCit7CisgICAgcmVzdWx0LT5zZXROdWxsKCk7CisgICAgaW50IHBhZ2VOdW1iZXIgPSAwOwor
ICAgIGlmICghcGFyc2VQYWdlTnVtYmVyKGFyZ3VtZW50cywgMCwgJnBhZ2VOdW1iZXIpKQorICAg
ICAgICByZXR1cm47CisgICAgV2ViRnJhbWUqIGZyYW1lID0gbV9zaGVsbC0+d2ViVmlldygpLT5t
YWluRnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1cm47CisgICAgcmVzdWx0
LT5zZXQoZnJhbWUtPmlzUGFnZUJveFZpc2libGUocGFnZU51bWJlcikpOworfQorCit2b2lkIExh
eW91dFRlc3RDb250cm9sbGVyOjpwYWdlUHJvcGVydHkoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBh
cmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKK3sKKyAgICByZXN1bHQtPnNldCgiIik7Cisg
ICAgaW50IHBhZ2VOdW1iZXIgPSAwOworICAgIGlmICghcGFyc2VQYWdlTnVtYmVyKGFyZ3VtZW50
cywgMSwgJnBhZ2VOdW1iZXIpKQorICAgICAgICByZXR1cm47CisgICAgaWYgKCFhcmd1bWVudHNb
MF0uaXNTdHJpbmcoKSkKKyAgICAgICAgcmV0dXJuOworICAgIFdlYkZyYW1lKiBmcmFtZSA9IG1f
c2hlbGwtPndlYlZpZXcoKS0+bWFpbkZyYW1lKCk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAg
cmV0dXJuOworICAgIFdlYlNpemUgcGFnZVNpemUoODAwLCA4MDApOworICAgIGZyYW1lLT5wcmlu
dEJlZ2luKHBhZ2VTaXplKTsKKyAgICByZXN1bHQtPnNldChmcmFtZS0+Z2V0UGFnZVByb3BlcnR5
KGNwcFZhcmlhbnRUb1dlYlN0cmluZyhhcmd1bWVudHNbMF0pLCBwYWdlTnVtYmVyKS51dGY4KCkp
OworICAgIGZyYW1lLT5wcmludEVuZCgpOworfQorCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVy
OjpudW1iZXJPZlBhZ2VzKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJp
YW50KiByZXN1bHQpCiB7CiAgICAgcmVzdWx0LT5zZXROdWxsKCk7CkluZGV4OiBUb29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmgJKHJl
dmlzaW9uIDk5NzQzKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVz
dENvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzM0LDYgKzMzNCwxNSBAQCBwdWJsaWM6
CiAgICAgLy8gR2V0cyB0aGUgbnVtYmVyIG9mIHBhZ2Ugd2hlcmUgdGhlIHNwZWNpZmllZCBlbGVt
ZW50IHdpbGwgYmUgcHV0LgogICAgIHZvaWQgcGFnZU51bWJlckZvckVsZW1lbnRCeUlkKGNvbnN0
IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKIAorICAgIC8vIEdldHMgdGhlIHBhZ2Ug
c2l6ZSBhbmQgbWFyZ2lucyBmb3IgYSBwcmludGVkIHBhZ2UuCisgICAgdm9pZCBwYWdlU2l6ZUFu
ZE1hcmdpbnNJblBpeGVscyhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CisK
KyAgICAvLyBSZXR1cm5zIHRoZSB2aXNpYmlsaWx0eSBzdGF0dXMgb2YgYSBwYWdlIGJveCBmb3Ig
cHJpbnRpbmcKKyAgICB2b2lkIGlzUGFnZUJveFZpc2libGUoY29uc3QgQ3BwQXJndW1lbnRMaXN0
JiwgQ3BwVmFyaWFudCopOworCisgICAgLy8gR2V0cyB0aGUgcGFnZS1yZWxhdGVkIHByb3BlcnR5
IGZvciBwcmludGVkIGNvbnRlbnQKKyAgICB2b2lkIHBhZ2VQcm9wZXJ0eShjb25zdCBDcHBBcmd1
bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CisKICAgICAvLyBHZXRzIHRoZSBudW1iZXIgb2YgcGFn
ZXMgdG8gYmUgcHJpbnRlZC4KICAgICB2b2lkIG51bWJlck9mUGFnZXMoY29uc3QgQ3BwQXJndW1l
bnRMaXN0JiwgQ3BwVmFyaWFudCopOwogCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA5OTc0MykKKysrIExh
eW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDEx
LTExLTA5ICBTdGVwaGVuIENoZW5uZXkgIDxzY2hlbm5leUBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgW0Nocm9taXVtXSBEUlQgZG9lcyBub3QgaGF2ZSBMYXlvdXRUZXN0Q29udHJvbGxlci5wYWdl
U2l6ZUFuZE1hcmdpbnNJblBpeGVscworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NDkyNTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dDog
UmVtb3ZlZCBleHBlY3RlZCBmYWlscyBmb3IKKyAgICAgICAgcHJpbnRpbmcgdGVzdHMgdGhhdCB3
ZXJlIHVzaW5nIG1pc3NpbmcgZnVuY3Rpb25hbGl0eSBpbiBMYXlvdXRUZXN0Q29udHJvbGxlci4K
KwogMjAxMS0xMS0wOSAgQXJrbyBTYWhhICA8YXJrb0Btb3Rvcm9sYS5jb20+CiAKICAgICAgICAg
TWljcm9kYXRhOiBmYXN0L2RvbS9NaWNyb0RhdGEvaXRlbWlkLWF0dHJpYnV0ZS10ZXN0Lmh0bWwg
YXNzZXJ0aW9uIGZhaWx1cmUgaW4gRWxlbWVudDo6Z2V0VVJMQXR0cmlidXRlKCkuCkluZGV4OiBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMu
dHh0CShyZXZpc2lvbiA5OTc0MykKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rl
c3RfZXhwZWN0YXRpb25zLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMjA5NSw5ICsyMDk1LDYgQEAg
QlVHQ1I0NjYwMyBTTE9XIFJFTEVBU0UgOiBmYXN0L2ZyYW1lcy9sbwogQlVHQ1I0NjYwMyBTS0lQ
IERFQlVHIDogZmFzdC9mcmFtZXMvbG90cy1vZi1pZnJhbWVzLmh0bWwgPSBUSU1FT1VUCiBCVUdD
UjQ2NjAzIFNLSVAgREVCVUcgOiBmYXN0L2ZyYW1lcy9sb3RzLW9mLW9iamVjdHMuaHRtbCA9IFRJ
TUVPVVQKIAotLy8gTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBhZ2VQcm9wZXJ0eSBpcyBub3QgaW1w
bGVtZW50ZWQgZm9yIENocm9taXVtIHlldC4KLUJVR1dLMzU5NjEgOiBwcmludGluZy9wYWdlLXJ1
bGUtc2VsZWN0aW9uLmh0bWwgPSBURVhUCi0KIEJVR0NSNDcwMzUgV0lOIERFQlVHIDogZmFzdC9s
b2FkZXIvc3RhdGVvYmplY3RzL2RvY3VtZW50LWRlc3Ryb3llZC1uYXZpZ2F0ZS1iYWNrLXdpdGgt
ZnJhZ21lbnQtc2Nyb2xsLmh0bWwgPSBQQVNTIFRFWFQKIAogLy8gQ1NTMyBIeXBoZW5hdGlvbiBs
YW5kZWQgaW4gaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvNjE1NDgKQEAgLTIxMTMs
OSArMjExMCw2IEBAIEJVR0NSNDcwODMgOiBmYXN0L3RleHQvaHlwaGVuYXRlLWxpbWl0LWIKIC8v
IFdlYktpdCByb2xsIDYxNTQ3OjYxNjI5LiBTdGlsbCBuZWVkIHRvIGludmVzdGlnYXRlLgogQlVH
X0hDTEFNIDogZmFzdC9qcy9zY3JpcHQtbGluZS1udW1iZXIuaHRtbCA9IFRFWFQKIAotLy8gTGF5
b3V0VGVzdENvbnRyb2xsZXI6OmlzUGFnZUJveFZpc2libGUsIHBhZ2VBcmVhUmVjdEluUGl4ZWxz
LCBhbmQgcHJlZmVycmVkUGFnZVNpemVJblBpeGVscyBhcmUgbm90IGltcGxlbWVudGVkIHlldCBm
b3IgQ2hyb21pdW0uCi1CVUdXSzM3NTM4IDogcHJpbnRpbmcvcGFnZS1mb3JtYXQtZGF0YS5odG1s
ID0gVEVYVAotCiAvLyBGaXJzdCBub3RpY2VkIG9uIHRyeWJvdHMgYWZ0ZXIgcjYxODM2LCBub3cg
aW4gdGhlIHRyZWUuCiBCVUdfTU5BR0FOT1YgTElOVVggOiBmYXN0L2pzL09iamVjdC1jcmVhdGUu
aHRtbCA9IENSQVNIIEZBSUwKIApAQCAtMjQ2Miw5ICsyNDU2LDYgQEAgV09OVEZJWCBTS0lQIFdJ
TiA6IHBsYXRmb3JtL3dpbi9wbHVnaW5zLwogLy8gQWRkZWQgaW4gV0sgcjcxNDI0CiBCVUdDUjYy
MTM4IDogYW5pbWF0aW9ucy9zdG9wLWFuaW1hdGlvbi1vbi1zdXNwZW5kLmh0bWwgPSBQQVNTIENS
QVNIIFRFWFQKIAotLy8gdGVzdF9zaGVsbCBhbmQgRFJUIGRvIG5vdCBoYXZlIExheW91dFRlc3RD
b250cm9sbGVyLnBhZ2VTaXplQW5kTWFyZ2luc0luUGl4ZWxzCi1CVUdDUjYyNTE1IDogcHJpbnRp
bmcvcGFnZS1mb3JtYXQtZGF0YS1kaXNwbGF5LW5vbmUuaHRtbCA9IFRFWFQKLQogQlVHQ1I2MTcz
OSBERUJVRyA6IGFuaW1hdGlvbnMvc3VzcGVuZC1yZXN1bWUtYW5pbWF0aW9uLWV2ZW50cy5odG1s
ID0gUEFTUyBDUkFTSCBURVhUCiAKIC8vIE5ldyB0ZXN0cyBhZGRlZCB3aXRoIGh0dHA6Ly90cmFj
LndlYmtpdC5vcmcvY2hhbmdlc2V0LzcyNDcyIGFuZCBmdXJ0aGVyLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114524</attachid>
            <date>2011-11-10 10:04:14 -0800</date>
            <delta_ts>2011-11-10 11:06:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-49257-20111110130412.patch</filename>
            <type>text/plain</type>
            <size>15128</size>
            <attacher name="Stephen Chenney">schenney</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA5OTg0OSkKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcg
QEAKKzIwMTEtMTEtMTAgIFN0ZXBoZW4gQ2hlbm5leSAgPHNjaGVubmV5QGNocm9taXVtLm9yZz4K
KworICAgICAgICBbQ2hyb21pdW1dIERSVCBkb2VzIG5vdCBoYXZlIExheW91dFRlc3RDb250cm9s
bGVyLnBhZ2VTaXplQW5kTWFyZ2luc0luUGl4ZWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD00OTI1NworCisgICAgICAgIEFkZCB0aGUgV2ViRnJhbWU6
OmdldFBhZ2VQcm9wZXJ0eSBtZXRob2QgZm9yIENocm9taXVtLgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcHVibGljL1dlYkZyYW1lLmg6CisgICAg
ICAgICogc3JjL1dlYkZyYW1lSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lSW1w
bDo6Z2V0UGFnZVByb3BlcnR5KToKKyAgICAgICAgKiBzcmMvV2ViRnJhbWVJbXBsLmg6CisKIDIw
MTEtMTEtMTAgIEFscGhhIExhbSAgPGhjbGFtQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hy
b21pdW1dIFNjcm9sbCBkZWx0YXMgYXJlIGNsZWFyZWQgZHVyaW5nIGNvbW1pdCB0byB0aGUgbWFp
biB0aHJlYWQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWUuaAko
cmV2aXNpb24gOTk4NDkpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFt
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NzksNiArNDc5LDEwIEBAIHB1YmxpYzoKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50JiBtYXJnaW5Cb3R0b20sCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCYgbWFyZ2luTGVm
dCkgPSAwOwogCisgICAgLy8gUmV0dXJucyB0aGUgdmFsdWUgZm9yIGEgcGFnZSBwcm9wZXJ0eSB0
aGF0IGlzIG9ubHkgZGVmaW5lZCB3aGVuIHByaW50aW5nLgorICAgIC8vIHByaW50QmVnaW4gbXVz
dCBoYXZlIGJlZW4gY2FsbGVkIGJlZm9yZSB0aGlzIG1ldGhvZC4KKyAgICB2aXJ0dWFsIFdlYlN0
cmluZyBwYWdlUHJvcGVydHkoY29uc3QgV2ViU3RyaW5nJiBwcm9wZXJ0eU5hbWUsIGludCBwYWdl
SW5kZXgpID0gMDsKKwogICAgIC8vIEZpbmQtaW4tcGFnZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAgICAgLy8gU2VhcmNoZXMgYSBm
cmFtZSBmb3IgYSBnaXZlbiBzdHJpbmcuCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJGcmFtZUltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYkZyYW1lSW1wbC5jcHAJKHJldmlzaW9uIDk5ODQ5KQorKysgU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ5Miw2ICsx
NDkyLDEyIEBAIHZvaWQgV2ViRnJhbWVJbXBsOjpwYWdlU2l6ZUFuZE1hcmdpbnNJblAKICAgICBw
YWdlU2l6ZSA9IHNpemU7CiB9CiAKK1dlYlN0cmluZyBXZWJGcmFtZUltcGw6OnBhZ2VQcm9wZXJ0
eShjb25zdCBXZWJTdHJpbmcmIHByb3BlcnR5TmFtZSwgaW50IHBhZ2VJbmRleCkKK3sKKyAgICBB
U1NFUlQobV9wcmludENvbnRleHQpOworICAgIHJldHVybiBtX3ByaW50Q29udGV4dC0+cGFnZVBy
b3BlcnR5KG1fZnJhbWUsIHByb3BlcnR5TmFtZS51dGY4KCkuZGF0YSgpLCBwYWdlSW5kZXgpOwor
fQorCiBib29sIFdlYkZyYW1lSW1wbDo6ZmluZChpbnQgaWRlbnRpZmllciwKICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFdlYlN0cmluZyYgc2VhcmNoVGV4dCwKICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IFdlYkZpbmRPcHRpb25zJiBvcHRpb25zLApJbmRleDogU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmgJKHJldmlzaW9uIDk5ODQ5KQorKysgU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAg
LTE3OCw2ICsxNzgsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludCYgbWFyZ2luUmlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludCYgbWFyZ2luQm90dG9tLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQmIG1hcmdpbkxlZnQpOworICAgIHZpcnR1YWwg
V2ViU3RyaW5nIHBhZ2VQcm9wZXJ0eShjb25zdCBXZWJTdHJpbmcmIHByb3BlcnR5TmFtZSwgaW50
IHBhZ2VJbmRleCk7CiAgICAgdmlydHVhbCB2b2lkIHByaW50UGFnZXNXaXRoQm91bmRhcmllcyhX
ZWJDYW52YXMqLCBjb25zdCBXZWJTaXplJik7CiAgICAgdmlydHVhbCBib29sIGZpbmQoCiAgICAg
ICAgIGludCBpZGVudGlmaWVyLCBjb25zdCBXZWJTdHJpbmcmIHNlYXJjaFRleHQsIGNvbnN0IFdl
YkZpbmRPcHRpb25zJiwKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDk5ODQ5KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTEtMTEtMTAgIFN0ZXBoZW4gQ2hlbm5leSAgPHNj
aGVubmV5QGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIERSVCBkb2VzIG5vdCBo
YXZlIExheW91dFRlc3RDb250cm9sbGVyLnBhZ2VTaXplQW5kTWFyZ2luc0luUGl4ZWxzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00OTI1NworCisgICAg
ICAgIEFkZHMgdGhlIHJlbWFpbmluZyBtaXNzaW5nIGxheW91dCB0ZXN0IGZ1bmN0aW9uYWxpdHkg
Zm9yIHByaW50aW5nLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3Bw
OgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OkxheW91dFRlc3RDb250cm9sbGVyKTog
QWRkIGJpbmRpbmdzIGZvciBuZXcgSlMgbWV0aG9kcworICAgICAgICAocGFyc2VQYWdlTnVtYmVy
KTogTWV0aG9kIHRvIHBhcnNlIEpTIGFyZ3VtZW50cyBmb3IgYSBwYWdlIG51bWJlcgorICAgICAg
ICAocGFyc2VQYWdlTnVtYmVyU2l6ZU1hcmdpbnMpOiBNZXRob2QgdG8gcGFyc2UgSlMgYXJndW1l
bnRzIGZvciBwYWdlIHNpemUgYW5kIG1hcmdpbnMKKyAgICAgICAgKExheW91dFRlc3RDb250cm9s
bGVyOjpwYWdlU2l6ZUFuZE1hcmdpbnNJblBpeGVscyk6IEdldCB0aGUgcGFnZSBzaXplIGFuZCBt
YXJnaW5zIGZvciBhIGdpdmVuIHBhZ2UuCisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6
aXNQYWdlQm94VmlzaWJsZSk6IGdldCB0aGUgdmlzaWJpbGl0eSBzdGF0dXMgZm9yIHByaW50aW5n
CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGFnZVByb3BlcnR5KTogZ2V0IGEgc3Bl
Y2lmaWMgQ1NTIHByb3BlcnR5IHdoZW4gaW4gcHJpbnRpbmcgbW9kZQorICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmg6IEFkZCBkZWNsYXJhdGlv
bnMgZm9yIG5ldyBtZXRob2RzCisKIDIwMTEtMTEtMTAgIEFsZXhpcyBNZW5hcmQgIDxhbGV4aXMu
bWVuYXJkQG9wZW5ib3NzYS5vcmc+CiAKICAgICAgICAgW1F0XSBNZXJnZSBRVG91Y2hXZWJWaWV3
IGFuZCBRRGVza3RvcFdlYlZpZXcgaW50byBvbmUgY2xhc3MKSW5kZXg6IFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAJKHJl
dmlzaW9uIDk5ODQ5KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVz
dENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Myw2ICs2Myw3IEBACiAjaW5jbHVk
ZSA8Y2xvY2FsZT4KICNpbmNsdWRlIDxjc3RkbGliPgogI2luY2x1ZGUgPGxpbWl0cz4KKyNpbmNs
dWRlIDxzc3RyZWFtPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiAjaWYgT1Mo
V0lORE9XUykKQEAgLTEyMiw2ICsxMjMsNyBAQCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6TGF5b3V0
VGVzdENvbnRyb2xsCiAgICAgYmluZE1ldGhvZCgiZ3JhbnREZXNrdG9wTm90aWZpY2F0aW9uUGVy
bWlzc2lvbiIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6Z3JhbnREZXNrdG9wTm90aWZpY2F0aW9u
UGVybWlzc2lvbik7CiAgICAgYmluZE1ldGhvZCgiaGFzU3BlbGxpbmdNYXJrZXIiLCAmTGF5b3V0
VGVzdENvbnRyb2xsZXI6Omhhc1NwZWxsaW5nTWFya2VyKTsKICAgICBiaW5kTWV0aG9kKCJpc0Nv
bW1hbmRFbmFibGVkIiwgJkxheW91dFRlc3RDb250cm9sbGVyOjppc0NvbW1hbmRFbmFibGVkKTsK
KyAgICBiaW5kTWV0aG9kKCJpc1BhZ2VCb3hWaXNpYmxlIiwgJkxheW91dFRlc3RDb250cm9sbGVy
Ojppc1BhZ2VCb3hWaXNpYmxlKTsKICAgICBiaW5kTWV0aG9kKCJsYXllclRyZWVBc1RleHQiLCAm
TGF5b3V0VGVzdENvbnRyb2xsZXI6OmxheWVyVHJlZUFzVGV4dCk7CiAgICAgYmluZE1ldGhvZCgi
bG9zZUNvbXBvc2l0b3JDb250ZXh0IiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpsb3NlQ29tcG9z
aXRvckNvbnRleHQpOwogICAgIGJpbmRNZXRob2QoIm1hcmtlclRleHRGb3JMaXN0SXRlbSIsICZM
YXlvdXRUZXN0Q29udHJvbGxlcjo6bWFya2VyVGV4dEZvckxpc3RJdGVtKTsKQEAgLTEzMiw2ICsx
MzQsOCBAQCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6TGF5b3V0VGVzdENvbnRyb2xsCiAgICAgYmlu
ZE1ldGhvZCgib2JqQ0lkZW50aXR5SXNFcXVhbCIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6b2Jq
Q0lkZW50aXR5SXNFcXVhbCk7CiAgICAgYmluZE1ldGhvZCgib3ZlcnJpZGVQcmVmZXJlbmNlIiwg
JkxheW91dFRlc3RDb250cm9sbGVyOjpvdmVycmlkZVByZWZlcmVuY2UpOwogICAgIGJpbmRNZXRo
b2QoInBhZ2VOdW1iZXJGb3JFbGVtZW50QnlJZCIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGFn
ZU51bWJlckZvckVsZW1lbnRCeUlkKTsKKyAgICBiaW5kTWV0aG9kKCJwYWdlUHJvcGVydHkiLCAm
TGF5b3V0VGVzdENvbnRyb2xsZXI6OnBhZ2VQcm9wZXJ0eSk7CisgICAgYmluZE1ldGhvZCgicGFn
ZVNpemVBbmRNYXJnaW5zSW5QaXhlbHMiLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBhZ2VTaXpl
QW5kTWFyZ2luc0luUGl4ZWxzKTsKICAgICBiaW5kTWV0aG9kKCJwYXRoVG9Mb2NhbFJlc291cmNl
IiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpwYXRoVG9Mb2NhbFJlc291cmNlKTsKICAgICBiaW5k
TWV0aG9kKCJwYXVzZUFuaW1hdGlvbkF0VGltZU9uRWxlbWVudFdpdGhJZCIsICZMYXlvdXRUZXN0
Q29udHJvbGxlcjo6cGF1c2VBbmltYXRpb25BdFRpbWVPbkVsZW1lbnRXaXRoSWQpOwogICAgIGJp
bmRNZXRob2QoInBhdXNlVHJhbnNpdGlvbkF0VGltZU9uRWxlbWVudFdpdGhJZCIsICZMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6cGF1c2VUcmFuc2l0aW9uQXRUaW1lT25FbGVtZW50V2l0aElkKTsKQEAg
LTE1OTEsNiArMTU5NSwyMiBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpjb3VudGVyVmFs
dWVGCiAgICAgcmVzdWx0LT5zZXQoY291bnRlclZhbHVlLnV0ZjgoKSk7CiB9CiAKKy8vIFBhcnNl
IGEgc2luZ2xlIGFyZ3VtZW50LiBUaGUgbWV0aG9kIHJldHVybnMgdHJ1ZSBpZiB0aGVyZSBpcyBh
biBhcmd1bWVudCB0aGF0CisvLyBpcyBhIG51bWJlciBvciBpZiB0aGVyZSBpcyBubyBhcmd1bWVu
dCBhdCBhbGwuIEl0IHJldHVybnMgZmFsc2Ugb25seSBpZiB0aGVyZQorLy8gaXMgc29tZSBhcmd1
bWVudCB0aGF0IGlzIG5vdCBhIG51bWJlci4gVGhlIHZhbHVlIHBhcmFtZXRlciBpcyBmaWxsZWQg
d2l0aCB0aGUKKy8vIHBhcnNlZCBudW1iZXIsIG9yIGdpdmVuIHRoZSBkZWZhdWx0IGlmIHRoZXJl
IGlzIG5vIGFyZ3VtZW50Lgorc3RhdGljIGJvb2wgcGFyc2VDcHBBcmd1bWVudEludDMyKGNvbnN0
IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBpbnQgYXJnSW5kZXgsIGludCogdmFsdWUsIGlu
dCBkZWZhdWx0VmFsdWUpCit7CisgICAgaWYgKChpbnQpYXJndW1lbnRzLnNpemUoKSA+IGFyZ0lu
ZGV4KSB7CisgICAgICAgIGlmICghYXJndW1lbnRzW2FyZ0luZGV4XS5pc051bWJlcigpKQorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAqdmFsdWUgPSBhcmd1bWVudHNbYXJnSW5k
ZXhdLnRvSW50MzIoKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgICp2YWx1ZSA9
IGRlZmF1bHRWYWx1ZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogc3RhdGljIGJvb2wgcGFyc2VQ
YWdlU2l6ZVBhcmFtZXRlcnMoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYXJnT2Zmc2V0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50KiBwYWdlV2lkdGhJblBpeGVscywKQEAgLTE1
OTgsMjEgKzE2MTgsNDAgQEAgc3RhdGljIGJvb2wgcGFyc2VQYWdlU2l6ZVBhcmFtZXRlcnMoY29u
cwogewogICAgIC8vIFdlYktpdCBpcyB1c2luZyB0aGUgd2luZG93IHdpZHRoL2hlaWdodCBvZiBE
dW1wUmVuZGVyVHJlZSBhcyB0aGUKICAgICAvLyBkZWZhdWx0IHZhbHVlIG9mIHRoZSBwYWdlIHNp
emUuCi0gICAgLy8gRklYTUU6IHNoYXJlIHRoZXNlIHZhbHVlcyB3aXRoIG90aGVyIHBvcnRzLgot
ICAgICpwYWdlV2lkdGhJblBpeGVscyA9IDgwMDsKLSAgICAqcGFnZUhlaWdodEluUGl4ZWxzID0g
NjAwOwotICAgIHN3aXRjaCAoYXJndW1lbnRzLnNpemUoKSAtIGFyZ09mZnNldCkgewotICAgIGNh
c2UgMjoKLSAgICAgICAgaWYgKCFhcmd1bWVudHNbYXJnT2Zmc2V0XS5pc051bWJlcigpIHx8ICFh
cmd1bWVudHNbMSArIGFyZ09mZnNldF0uaXNOdW1iZXIoKSkKLSAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAgICAgKnBhZ2VXaWR0aEluUGl4ZWxzID0gYXJndW1lbnRzW2FyZ09mZnNldF0u
dG9JbnQzMigpOwotICAgICAgICAqcGFnZUhlaWdodEluUGl4ZWxzID0gYXJndW1lbnRzWzEgKyBh
cmdPZmZzZXRdLnRvSW50MzIoKTsKLSAgICAgICAgLy8gZmFsbCB0aHJvdWdoLgotICAgIGNhc2Ug
MDoKLSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKKyAgICAvLyBGSVhNRTogc2hhcmUgdGhl
IGRlZmF1bHQgdmFsdWVzIHdpdGggb3RoZXIgcG9ydHMuCisgICAgaW50IGFyZ0NvdW50ID0gKGlu
dClhcmd1bWVudHMuc2l6ZSgpIC0gYXJnT2Zmc2V0OworICAgIGlmIChhcmdDb3VudCAmJiBhcmdD
b3VudCAhPSAyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFwYXJzZUNwcEFyZ3Vt
ZW50SW50MzIoYXJndW1lbnRzLCBhcmdPZmZzZXQsIHBhZ2VXaWR0aEluUGl4ZWxzLCA4MDApCisg
ICAgICAgIHx8ICFwYXJzZUNwcEFyZ3VtZW50SW50MzIoYXJndW1lbnRzLCBhcmdPZmZzZXQgKyAx
LCBwYWdlSGVpZ2h0SW5QaXhlbHMsIDYwMCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIGJvb2wgcGFyc2VQYWdlTnVtYmVyKGNvbnN0IENwcEFy
Z3VtZW50TGlzdCYgYXJndW1lbnRzLCBpbnQgYXJnT2Zmc2V0LCBpbnQqIHBhZ2VOdW1iZXIpCit7
CisgICAgaWYgKChpbnQpYXJndW1lbnRzLnNpemUoKSA+IGFyZ09mZnNldCArIDEpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICBpZiAoIXBhcnNlQ3BwQXJndW1lbnRJbnQzMihhcmd1bWVudHMs
IGFyZ09mZnNldCwgcGFnZU51bWJlciwgMCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIGJvb2wgcGFyc2VQYWdlTnVtYmVyU2l6ZU1hcmdpbnMo
Y29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIGludCBhcmdPZmZzZXQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQqIHBhZ2VOdW1iZXIsIGludCogd2lk
dGgsIGludCogaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW50KiBtYXJnaW5Ub3AsIGludCogbWFyZ2luUmlnaHQsIGludCogbWFyZ2luQm90dG9tLCBpbnQq
IG1hcmdpbkxlZnQpCit7CisgICAgaW50IGFyZ0NvdW50ID0gKGludClhcmd1bWVudHMuc2l6ZSgp
IC0gYXJnT2Zmc2V0OworICAgIGlmIChhcmdDb3VudCAmJiBhcmdDb3VudCAhPSA3KQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFwYXJzZUNwcEFyZ3VtZW50SW50MzIoYXJndW1lbnRz
LCBhcmdPZmZzZXQsIHBhZ2VOdW1iZXIsIDApCisgICAgICAgIHx8ICFwYXJzZUNwcEFyZ3VtZW50
SW50MzIoYXJndW1lbnRzLCBhcmdPZmZzZXQgKyAxLCB3aWR0aCwgMCkKKyAgICAgICAgfHwgIXBh
cnNlQ3BwQXJndW1lbnRJbnQzMihhcmd1bWVudHMsIGFyZ09mZnNldCArIDIsIGhlaWdodCwgMCkK
KyAgICAgICAgfHwgIXBhcnNlQ3BwQXJndW1lbnRJbnQzMihhcmd1bWVudHMsIGFyZ09mZnNldCAr
IDMsIG1hcmdpblRvcCwgMCkKKyAgICAgICAgfHwgIXBhcnNlQ3BwQXJndW1lbnRJbnQzMihhcmd1
bWVudHMsIGFyZ09mZnNldCArIDQsIG1hcmdpblJpZ2h0LCAwKQorICAgICAgICB8fCAhcGFyc2VD
cHBBcmd1bWVudEludDMyKGFyZ3VtZW50cywgYXJnT2Zmc2V0ICsgNSwgbWFyZ2luQm90dG9tLCAw
KQorICAgICAgICB8fCAhcGFyc2VDcHBBcmd1bWVudEludDMyKGFyZ3VtZW50cywgYXJnT2Zmc2V0
ICsgNiwgbWFyZ2luTGVmdCwgMCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKQEAgLTE2NDAsNiArMTY3OSw2MCBAQCB2b2lkIExheW91dFRlc3RD
b250cm9sbGVyOjpwYWdlTnVtYmVyRm9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxmbG9hdD4ocGFnZUhlaWdodEluUGl4ZWxzKSkp
OwogfQogCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpwYWdlU2l6ZUFuZE1hcmdpbnNJblBp
eGVscyhjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0
KQoreworICAgIHJlc3VsdC0+c2V0KCIiKTsKKyAgICBpbnQgcGFnZU51bWJlciA9IDA7CisgICAg
aW50IHdpZHRoID0gMDsKKyAgICBpbnQgaGVpZ2h0ID0gMDsKKyAgICBpbnQgbWFyZ2luVG9wID0g
MDsKKyAgICBpbnQgbWFyZ2luUmlnaHQgPSAwOworICAgIGludCBtYXJnaW5Cb3R0b20gPSAwOwor
ICAgIGludCBtYXJnaW5MZWZ0ID0gMDsKKyAgICBpZiAoIXBhcnNlUGFnZU51bWJlclNpemVNYXJn
aW5zKGFyZ3VtZW50cywgMCwgJnBhZ2VOdW1iZXIsICZ3aWR0aCwgJmhlaWdodCwgJm1hcmdpblRv
cCwgJm1hcmdpblJpZ2h0LCAmbWFyZ2luQm90dG9tLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJm1hcmdpbkxlZnQpKQorICAgICAgICByZXR1cm47CisKKyAgICBXZWJGcmFt
ZSogZnJhbWUgPSBtX3NoZWxsLT53ZWJWaWV3KCktPm1haW5GcmFtZSgpOworICAgIGlmICghZnJh
bWUpCisgICAgICAgIHJldHVybjsKKyAgICBXZWJTaXplIHBhZ2VTaXplKHdpZHRoLCBoZWlnaHQp
OworICAgIGZyYW1lLT5wYWdlU2l6ZUFuZE1hcmdpbnNJblBpeGVscyhwYWdlTnVtYmVyLCBwYWdl
U2l6ZSwgbWFyZ2luVG9wLCBtYXJnaW5SaWdodCwgbWFyZ2luQm90dG9tLCBtYXJnaW5MZWZ0KTsK
KyAgICBzdHJpbmdzdHJlYW0gcmVzdWx0U3RyaW5nOworICAgIHJlc3VsdFN0cmluZyA8PCAiKCIg
PDwgcGFnZVNpemUud2lkdGggPDwgIiwgIiA8PCBwYWdlU2l6ZS5oZWlnaHQgPDwgIikgIiA8PCBt
YXJnaW5Ub3AgPDwgIiAiIDw8IG1hcmdpblJpZ2h0IDw8ICIgIgorICAgICAgICAgICAgICAgICA8
PCBtYXJnaW5Cb3R0b20gPDwgIiAiIDw8IG1hcmdpbkxlZnQ7CisgICAgcmVzdWx0LT5zZXQocmVz
dWx0U3RyaW5nLnN0cigpLmNfc3RyKCkpOworfQorCit2b2lkIExheW91dFRlc3RDb250cm9sbGVy
Ojppc1BhZ2VCb3hWaXNpYmxlKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBW
YXJpYW50KiByZXN1bHQpCit7CisgICAgcmVzdWx0LT5zZXROdWxsKCk7CisgICAgaW50IHBhZ2VO
dW1iZXIgPSAwOworICAgIGlmICghcGFyc2VQYWdlTnVtYmVyKGFyZ3VtZW50cywgMCwgJnBhZ2VO
dW1iZXIpKQorICAgICAgICByZXR1cm47CisgICAgV2ViRnJhbWUqIGZyYW1lID0gbV9zaGVsbC0+
d2ViVmlldygpLT5tYWluRnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1cm47
CisgICAgcmVzdWx0LT5zZXQoZnJhbWUtPmlzUGFnZUJveFZpc2libGUocGFnZU51bWJlcikpOwor
fQorCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpwYWdlUHJvcGVydHkoY29uc3QgQ3BwQXJn
dW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKK3sKKyAgICByZXN1bHQt
PnNldCgiIik7CisgICAgaW50IHBhZ2VOdW1iZXIgPSAwOworICAgIGlmICghcGFyc2VQYWdlTnVt
YmVyKGFyZ3VtZW50cywgMSwgJnBhZ2VOdW1iZXIpKQorICAgICAgICByZXR1cm47CisgICAgaWYg
KCFhcmd1bWVudHNbMF0uaXNTdHJpbmcoKSkKKyAgICAgICAgcmV0dXJuOworICAgIFdlYkZyYW1l
KiBmcmFtZSA9IG1fc2hlbGwtPndlYlZpZXcoKS0+bWFpbkZyYW1lKCk7CisgICAgaWYgKCFmcmFt
ZSkKKyAgICAgICAgcmV0dXJuOworICAgIFdlYlNpemUgcGFnZVNpemUoODAwLCA4MDApOworICAg
IGZyYW1lLT5wcmludEJlZ2luKHBhZ2VTaXplKTsKKyAgICByZXN1bHQtPnNldChmcmFtZS0+cGFn
ZVByb3BlcnR5KGNwcFZhcmlhbnRUb1dlYlN0cmluZyhhcmd1bWVudHNbMF0pLCBwYWdlTnVtYmVy
KS51dGY4KCkpOworICAgIGZyYW1lLT5wcmludEVuZCgpOworfQorCiB2b2lkIExheW91dFRlc3RD
b250cm9sbGVyOjpudW1iZXJPZlBhZ2VzKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRz
LCBDcHBWYXJpYW50KiByZXN1bHQpCiB7CiAgICAgcmVzdWx0LT5zZXROdWxsKCk7CkluZGV4OiBU
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9s
bGVyLmgJKHJldmlzaW9uIDk5ODQ5KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
TGF5b3V0VGVzdENvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzM0LDYgKzMzNCwxNSBA
QCBwdWJsaWM6CiAgICAgLy8gR2V0cyB0aGUgbnVtYmVyIG9mIHBhZ2Ugd2hlcmUgdGhlIHNwZWNp
ZmllZCBlbGVtZW50IHdpbGwgYmUgcHV0LgogICAgIHZvaWQgcGFnZU51bWJlckZvckVsZW1lbnRC
eUlkKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKIAorICAgIC8vIEdldHMg
dGhlIHBhZ2Ugc2l6ZSBhbmQgbWFyZ2lucyBmb3IgYSBwcmludGVkIHBhZ2UuCisgICAgdm9pZCBw
YWdlU2l6ZUFuZE1hcmdpbnNJblBpeGVscyhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJp
YW50Kik7CisKKyAgICAvLyBSZXR1cm5zIHRoZSB2aXNpYmlsaWx0eSBzdGF0dXMgb2YgYSBwYWdl
IGJveCBmb3IgcHJpbnRpbmcKKyAgICB2b2lkIGlzUGFnZUJveFZpc2libGUoY29uc3QgQ3BwQXJn
dW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOworCisgICAgLy8gR2V0cyB0aGUgcGFnZS1yZWxhdGVk
IHByb3BlcnR5IGZvciBwcmludGVkIGNvbnRlbnQKKyAgICB2b2lkIHBhZ2VQcm9wZXJ0eShjb25z
dCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CisKICAgICAvLyBHZXRzIHRoZSBudW1i
ZXIgb2YgcGFnZXMgdG8gYmUgcHJpbnRlZC4KICAgICB2b2lkIG51bWJlck9mUGFnZXMoY29uc3Qg
Q3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA5OTg0
OSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEz
IEBACisyMDExLTExLTEwICBTdGVwaGVuIENoZW5uZXkgIDxzY2hlbm5leUBjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgW0Nocm9taXVtXSBEUlQgZG9lcyBub3QgaGF2ZSBMYXlvdXRUZXN0Q29udHJv
bGxlci5wYWdlU2l6ZUFuZE1hcmdpbnNJblBpeGVscworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDkyNTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRp
b25zLnR4dDogUmVtb3ZlZCBleHBlY3RlZCBmYWlscyBmb3IKKyAgICAgICAgcHJpbnRpbmcgdGVz
dHMgdGhhdCB3ZXJlIHVzaW5nIG1pc3NpbmcgZnVuY3Rpb25hbGl0eSBpbiBMYXlvdXRUZXN0Q29u
dHJvbGxlci4KKwogMjAxMS0xMS0xMCAgQWxleGFuZGVyIFBhdmxvdiAgPGFwYXZsb3ZAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFNob3cgbWVkaWEgcXVlcmllcyBhc3Nv
Y2lhdGVkIHdpdGggc3BlY2lmaWMgQ1NTIHJ1bGVzCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9y
bS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CShyZXZpc2lvbiA5OTg0
OSkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtMjA3MSw5ICsyMDcxLDYgQEAgQlVHQ1I0NjYwMyBTTE9XIFJF
TEVBU0UgOiBmYXN0L2ZyYW1lcy9sbwogQlVHQ1I0NjYwMyBTS0lQIERFQlVHIDogZmFzdC9mcmFt
ZXMvbG90cy1vZi1pZnJhbWVzLmh0bWwgPSBUSU1FT1VUCiBCVUdDUjQ2NjAzIFNLSVAgREVCVUcg
OiBmYXN0L2ZyYW1lcy9sb3RzLW9mLW9iamVjdHMuaHRtbCA9IFRJTUVPVVQKIAotLy8gTGF5b3V0
VGVzdENvbnRyb2xsZXI6OnBhZ2VQcm9wZXJ0eSBpcyBub3QgaW1wbGVtZW50ZWQgZm9yIENocm9t
aXVtIHlldC4KLUJVR1dLMzU5NjEgOiBwcmludGluZy9wYWdlLXJ1bGUtc2VsZWN0aW9uLmh0bWwg
PSBURVhUCi0KIEJVR0NSNDcwMzUgV0lOIERFQlVHIDogZmFzdC9sb2FkZXIvc3RhdGVvYmplY3Rz
L2RvY3VtZW50LWRlc3Ryb3llZC1uYXZpZ2F0ZS1iYWNrLXdpdGgtZnJhZ21lbnQtc2Nyb2xsLmh0
bWwgPSBQQVNTIFRFWFQKIAogLy8gQ1NTMyBIeXBoZW5hdGlvbiBsYW5kZWQgaW4gaHR0cDovL3Ry
YWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvNjE1NDgKQEAgLTIwODksOSArMjA4Niw2IEBAIEJVR0NS
NDcwODMgOiBmYXN0L3RleHQvaHlwaGVuYXRlLWxpbWl0LWIKIC8vIFdlYktpdCByb2xsIDYxNTQ3
OjYxNjI5LiBTdGlsbCBuZWVkIHRvIGludmVzdGlnYXRlLgogQlVHX0hDTEFNIDogZmFzdC9qcy9z
Y3JpcHQtbGluZS1udW1iZXIuaHRtbCA9IFRFWFQKIAotLy8gTGF5b3V0VGVzdENvbnRyb2xsZXI6
OmlzUGFnZUJveFZpc2libGUsIHBhZ2VBcmVhUmVjdEluUGl4ZWxzLCBhbmQgcHJlZmVycmVkUGFn
ZVNpemVJblBpeGVscyBhcmUgbm90IGltcGxlbWVudGVkIHlldCBmb3IgQ2hyb21pdW0uCi1CVUdX
SzM3NTM4IDogcHJpbnRpbmcvcGFnZS1mb3JtYXQtZGF0YS5odG1sID0gVEVYVAotCiAvLyBGaXJz
dCBub3RpY2VkIG9uIHRyeWJvdHMgYWZ0ZXIgcjYxODM2LCBub3cgaW4gdGhlIHRyZWUuCiBCVUdf
TU5BR0FOT1YgTElOVVggOiBmYXN0L2pzL09iamVjdC1jcmVhdGUuaHRtbCA9IENSQVNIIEZBSUwK
IApAQCAtMjQzOCw5ICsyNDMyLDYgQEAgV09OVEZJWCBTS0lQIFdJTiA6IHBsYXRmb3JtL3dpbi9w
bHVnaW5zLwogLy8gQWRkZWQgaW4gV0sgcjcxNDI0CiBCVUdDUjYyMTM4IDogYW5pbWF0aW9ucy9z
dG9wLWFuaW1hdGlvbi1vbi1zdXNwZW5kLmh0bWwgPSBQQVNTIENSQVNIIFRFWFQKIAotLy8gdGVz
dF9zaGVsbCBhbmQgRFJUIGRvIG5vdCBoYXZlIExheW91dFRlc3RDb250cm9sbGVyLnBhZ2VTaXpl
QW5kTWFyZ2luc0luUGl4ZWxzCi1CVUdDUjYyNTE1IDogcHJpbnRpbmcvcGFnZS1mb3JtYXQtZGF0
YS1kaXNwbGF5LW5vbmUuaHRtbCA9IFRFWFQKLQogQlVHQ1I2MTczOSBERUJVRyA6IGFuaW1hdGlv
bnMvc3VzcGVuZC1yZXN1bWUtYW5pbWF0aW9uLWV2ZW50cy5odG1sID0gUEFTUyBDUkFTSCBURVhU
CiAKIC8vIE5ldyB0ZXN0cyBhZGRlZCB3aXRoIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdl
c2V0LzcyNDcyIGFuZCBmdXJ0aGVyLgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114528</attachid>
            <date>2011-11-10 11:06:56 -0800</date>
            <delta_ts>2011-11-11 15:52:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-49257-20111110140655.patch</filename>
            <type>text/plain</type>
            <size>15092</size>
            <attacher name="Stephen Chenney">schenney</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA5OTg4MCkKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcg
QEAKKzIwMTEtMTEtMTAgIFN0ZXBoZW4gQ2hlbm5leSAgPHNjaGVubmV5QGNocm9taXVtLm9yZz4K
KworICAgICAgICBbQ2hyb21pdW1dIERSVCBkb2VzIG5vdCBoYXZlIExheW91dFRlc3RDb250cm9s
bGVyLnBhZ2VTaXplQW5kTWFyZ2luc0luUGl4ZWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD00OTI1NworCisgICAgICAgIEFkZCB0aGUgV2ViRnJhbWU6
OmdldFBhZ2VQcm9wZXJ0eSBtZXRob2QgZm9yIENocm9taXVtLgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcHVibGljL1dlYkZyYW1lLmg6CisgICAg
ICAgICogc3JjL1dlYkZyYW1lSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lSW1w
bDo6Z2V0UGFnZVByb3BlcnR5KToKKyAgICAgICAgKiBzcmMvV2ViRnJhbWVJbXBsLmg6CisKIDIw
MTEtMTEtMTAgIFZzZXZvbG9kIFZsYXNvdiAgPHZzZXZpa0BjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgVW5yZXZpZXdlZC4gIFJvbGxlZCBERVBTLgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViRnJhbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJGcmFtZS5oCShyZXZpc2lvbiA5OTg4MCkKKysrIFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYkZyYW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3OSw2ICs0NzksMTAg
QEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQmIG1hcmdpbkJvdHRvbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50JiBtYXJnaW5MZWZ0KSA9IDA7CiAKKyAgICAvLyBSZXR1cm5zIHRoZSB2YWx1ZSBm
b3IgYSBwYWdlIHByb3BlcnR5IHRoYXQgaXMgb25seSBkZWZpbmVkIHdoZW4gcHJpbnRpbmcuCisg
ICAgLy8gcHJpbnRCZWdpbiBtdXN0IGhhdmUgYmVlbiBjYWxsZWQgYmVmb3JlIHRoaXMgbWV0aG9k
LgorICAgIHZpcnR1YWwgV2ViU3RyaW5nIHBhZ2VQcm9wZXJ0eShjb25zdCBXZWJTdHJpbmcmIHBy
b3BlcnR5TmFtZSwgaW50IHBhZ2VJbmRleCkgPSAwOworCiAgICAgLy8gRmluZC1pbi1wYWdlIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAK
ICAgICAvLyBTZWFyY2hlcyBhIGZyYW1lIGZvciBhIGdpdmVuIHN0cmluZy4KSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAkocmV2aXNpb24gOTk4ODAp
CisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNDkyLDYgKzE0OTIsMTIgQEAgdm9pZCBXZWJGcmFtZUltcGw6OnBhZ2VTaXpl
QW5kTWFyZ2luc0luUAogICAgIHBhZ2VTaXplID0gc2l6ZTsKIH0KIAorV2ViU3RyaW5nIFdlYkZy
YW1lSW1wbDo6cGFnZVByb3BlcnR5KGNvbnN0IFdlYlN0cmluZyYgcHJvcGVydHlOYW1lLCBpbnQg
cGFnZUluZGV4KQoreworICAgIEFTU0VSVChtX3ByaW50Q29udGV4dCk7CisgICAgcmV0dXJuIG1f
cHJpbnRDb250ZXh0LT5wYWdlUHJvcGVydHkobV9mcmFtZSwgcHJvcGVydHlOYW1lLnV0ZjgoKS5k
YXRhKCksIHBhZ2VJbmRleCk7Cit9CisKIGJvb2wgV2ViRnJhbWVJbXBsOjpmaW5kKGludCBpZGVu
dGlmaWVyLAogICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViU3RyaW5nJiBzZWFyY2hU
ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViRmluZE9wdGlvbnMmIG9wdGlv
bnMsCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuaAkocmV2
aXNpb24gOTk4ODApCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwu
aAkod29ya2luZyBjb3B5KQpAQCAtMTc4LDYgKzE3OCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50JiBtYXJnaW5SaWdodCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50JiBtYXJnaW5Cb3R0b20s
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCYgbWFyZ2lu
TGVmdCk7CisgICAgdmlydHVhbCBXZWJTdHJpbmcgcGFnZVByb3BlcnR5KGNvbnN0IFdlYlN0cmlu
ZyYgcHJvcGVydHlOYW1lLCBpbnQgcGFnZUluZGV4KTsKICAgICB2aXJ0dWFsIHZvaWQgcHJpbnRQ
YWdlc1dpdGhCb3VuZGFyaWVzKFdlYkNhbnZhcyosIGNvbnN0IFdlYlNpemUmKTsKICAgICB2aXJ0
dWFsIGJvb2wgZmluZCgKICAgICAgICAgaW50IGlkZW50aWZpZXIsIGNvbnN0IFdlYlN0cmluZyYg
c2VhcmNoVGV4dCwgY29uc3QgV2ViRmluZE9wdGlvbnMmLApJbmRleDogVG9vbHMvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gOTk4ODApCisrKyBUb29s
cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMSBAQAorMjAxMS0xMS0xMCAg
U3RlcGhlbiBDaGVubmV5ICA8c2NoZW5uZXlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJv
bWl1bV0gRFJUIGRvZXMgbm90IGhhdmUgTGF5b3V0VGVzdENvbnRyb2xsZXIucGFnZVNpemVBbmRN
YXJnaW5zSW5QaXhlbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTQ5MjU3CisKKyAgICAgICAgQWRkcyB0aGUgcmVtYWluaW5nIG1pc3NpbmcgbGF5b3V0
IHRlc3QgZnVuY3Rpb25hbGl0eSBmb3IgcHJpbnRpbmcuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlv
dXRUZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6TGF5
b3V0VGVzdENvbnRyb2xsZXIpOiBBZGQgYmluZGluZ3MgZm9yIG5ldyBKUyBtZXRob2RzCisgICAg
ICAgIChwYXJzZVBhZ2VOdW1iZXIpOiBNZXRob2QgdG8gcGFyc2UgSlMgYXJndW1lbnRzIGZvciBh
IHBhZ2UgbnVtYmVyCisgICAgICAgIChwYXJzZVBhZ2VOdW1iZXJTaXplTWFyZ2lucyk6IE1ldGhv
ZCB0byBwYXJzZSBKUyBhcmd1bWVudHMgZm9yIHBhZ2Ugc2l6ZSBhbmQgbWFyZ2lucworICAgICAg
ICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBhZ2VTaXplQW5kTWFyZ2luc0luUGl4ZWxzKTogR2V0
IHRoZSBwYWdlIHNpemUgYW5kIG1hcmdpbnMgZm9yIGEgZ2l2ZW4gcGFnZS4KKyAgICAgICAgKExh
eW91dFRlc3RDb250cm9sbGVyOjppc1BhZ2VCb3hWaXNpYmxlKTogZ2V0IHRoZSB2aXNpYmlsaXR5
IHN0YXR1cyBmb3IgcHJpbnRpbmcKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpwYWdl
UHJvcGVydHkpOiBnZXQgYSBzcGVjaWZpYyBDU1MgcHJvcGVydHkgd2hlbiBpbiBwcmludGluZyBt
b2RlCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xs
ZXIuaDogQWRkIGRlY2xhcmF0aW9ucyBmb3IgbmV3IG1ldGhvZHMKKwogMjAxMS0xMS0xMCAgQmFs
YXpzIEtlbGVtZW4gIDxrYmFsYXpzQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1F0XSBYMTEgcGx1
Z2lucyBuZWVkIHRvIGJlIHJld29ya2VkIGZvciBRdDUKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAJKHJldmlz
aW9uIDk5ODgwKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENv
bnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Myw2ICs2Myw3IEBACiAjaW5jbHVkZSA8
Y2xvY2FsZT4KICNpbmNsdWRlIDxjc3RkbGliPgogI2luY2x1ZGUgPGxpbWl0cz4KKyNpbmNsdWRl
IDxzc3RyZWFtPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiAjaWYgT1MoV0lO
RE9XUykKQEAgLTEyMiw2ICsxMjMsNyBAQCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6TGF5b3V0VGVz
dENvbnRyb2xsCiAgICAgYmluZE1ldGhvZCgiZ3JhbnREZXNrdG9wTm90aWZpY2F0aW9uUGVybWlz
c2lvbiIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6Z3JhbnREZXNrdG9wTm90aWZpY2F0aW9uUGVy
bWlzc2lvbik7CiAgICAgYmluZE1ldGhvZCgiaGFzU3BlbGxpbmdNYXJrZXIiLCAmTGF5b3V0VGVz
dENvbnRyb2xsZXI6Omhhc1NwZWxsaW5nTWFya2VyKTsKICAgICBiaW5kTWV0aG9kKCJpc0NvbW1h
bmRFbmFibGVkIiwgJkxheW91dFRlc3RDb250cm9sbGVyOjppc0NvbW1hbmRFbmFibGVkKTsKKyAg
ICBiaW5kTWV0aG9kKCJpc1BhZ2VCb3hWaXNpYmxlIiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpp
c1BhZ2VCb3hWaXNpYmxlKTsKICAgICBiaW5kTWV0aG9kKCJsYXllclRyZWVBc1RleHQiLCAmTGF5
b3V0VGVzdENvbnRyb2xsZXI6OmxheWVyVHJlZUFzVGV4dCk7CiAgICAgYmluZE1ldGhvZCgibG9z
ZUNvbXBvc2l0b3JDb250ZXh0IiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpsb3NlQ29tcG9zaXRv
ckNvbnRleHQpOwogICAgIGJpbmRNZXRob2QoIm1hcmtlclRleHRGb3JMaXN0SXRlbSIsICZMYXlv
dXRUZXN0Q29udHJvbGxlcjo6bWFya2VyVGV4dEZvckxpc3RJdGVtKTsKQEAgLTEzMiw2ICsxMzQs
OCBAQCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6TGF5b3V0VGVzdENvbnRyb2xsCiAgICAgYmluZE1l
dGhvZCgib2JqQ0lkZW50aXR5SXNFcXVhbCIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6b2JqQ0lk
ZW50aXR5SXNFcXVhbCk7CiAgICAgYmluZE1ldGhvZCgib3ZlcnJpZGVQcmVmZXJlbmNlIiwgJkxh
eW91dFRlc3RDb250cm9sbGVyOjpvdmVycmlkZVByZWZlcmVuY2UpOwogICAgIGJpbmRNZXRob2Qo
InBhZ2VOdW1iZXJGb3JFbGVtZW50QnlJZCIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGFnZU51
bWJlckZvckVsZW1lbnRCeUlkKTsKKyAgICBiaW5kTWV0aG9kKCJwYWdlUHJvcGVydHkiLCAmTGF5
b3V0VGVzdENvbnRyb2xsZXI6OnBhZ2VQcm9wZXJ0eSk7CisgICAgYmluZE1ldGhvZCgicGFnZVNp
emVBbmRNYXJnaW5zSW5QaXhlbHMiLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBhZ2VTaXplQW5k
TWFyZ2luc0luUGl4ZWxzKTsKICAgICBiaW5kTWV0aG9kKCJwYXRoVG9Mb2NhbFJlc291cmNlIiwg
JkxheW91dFRlc3RDb250cm9sbGVyOjpwYXRoVG9Mb2NhbFJlc291cmNlKTsKICAgICBiaW5kTWV0
aG9kKCJwYXVzZUFuaW1hdGlvbkF0VGltZU9uRWxlbWVudFdpdGhJZCIsICZMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6cGF1c2VBbmltYXRpb25BdFRpbWVPbkVsZW1lbnRXaXRoSWQpOwogICAgIGJpbmRN
ZXRob2QoInBhdXNlVHJhbnNpdGlvbkF0VGltZU9uRWxlbWVudFdpdGhJZCIsICZMYXlvdXRUZXN0
Q29udHJvbGxlcjo6cGF1c2VUcmFuc2l0aW9uQXRUaW1lT25FbGVtZW50V2l0aElkKTsKQEAgLTE1
OTEsNiArMTU5NSwyMiBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpjb3VudGVyVmFsdWVG
CiAgICAgcmVzdWx0LT5zZXQoY291bnRlclZhbHVlLnV0ZjgoKSk7CiB9CiAKKy8vIFBhcnNlIGEg
c2luZ2xlIGFyZ3VtZW50LiBUaGUgbWV0aG9kIHJldHVybnMgdHJ1ZSBpZiB0aGVyZSBpcyBhbiBh
cmd1bWVudCB0aGF0CisvLyBpcyBhIG51bWJlciBvciBpZiB0aGVyZSBpcyBubyBhcmd1bWVudCBh
dCBhbGwuIEl0IHJldHVybnMgZmFsc2Ugb25seSBpZiB0aGVyZQorLy8gaXMgc29tZSBhcmd1bWVu
dCB0aGF0IGlzIG5vdCBhIG51bWJlci4gVGhlIHZhbHVlIHBhcmFtZXRlciBpcyBmaWxsZWQgd2l0
aCB0aGUKKy8vIHBhcnNlZCBudW1iZXIsIG9yIGdpdmVuIHRoZSBkZWZhdWx0IGlmIHRoZXJlIGlz
IG5vIGFyZ3VtZW50Lgorc3RhdGljIGJvb2wgcGFyc2VDcHBBcmd1bWVudEludDMyKGNvbnN0IENw
cEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBpbnQgYXJnSW5kZXgsIGludCogdmFsdWUsIGludCBk
ZWZhdWx0VmFsdWUpCit7CisgICAgaWYgKHN0YXRpY19jYXN0PGludD4oYXJndW1lbnRzLnNpemUo
KSkgPiBhcmdJbmRleCkgeworICAgICAgICBpZiAoIWFyZ3VtZW50c1thcmdJbmRleF0uaXNOdW1i
ZXIoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgKnZhbHVlID0gYXJndW1l
bnRzW2FyZ0luZGV4XS50b0ludDMyKCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAg
ICAqdmFsdWUgPSBkZWZhdWx0VmFsdWU7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHN0YXRpYyBi
b29sIHBhcnNlUGFnZVNpemVQYXJhbWV0ZXJzKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1l
bnRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGFyZ09mZnNldCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCogcGFnZVdpZHRoSW5QaXhl
bHMsCkBAIC0xNTk4LDIxICsxNjE4LDQwIEBAIHN0YXRpYyBib29sIHBhcnNlUGFnZVNpemVQYXJh
bWV0ZXJzKGNvbnMKIHsKICAgICAvLyBXZWJLaXQgaXMgdXNpbmcgdGhlIHdpbmRvdyB3aWR0aC9o
ZWlnaHQgb2YgRHVtcFJlbmRlclRyZWUgYXMgdGhlCiAgICAgLy8gZGVmYXVsdCB2YWx1ZSBvZiB0
aGUgcGFnZSBzaXplLgotICAgIC8vIEZJWE1FOiBzaGFyZSB0aGVzZSB2YWx1ZXMgd2l0aCBvdGhl
ciBwb3J0cy4KLSAgICAqcGFnZVdpZHRoSW5QaXhlbHMgPSA4MDA7Ci0gICAgKnBhZ2VIZWlnaHRJ
blBpeGVscyA9IDYwMDsKLSAgICBzd2l0Y2ggKGFyZ3VtZW50cy5zaXplKCkgLSBhcmdPZmZzZXQp
IHsKLSAgICBjYXNlIDI6Ci0gICAgICAgIGlmICghYXJndW1lbnRzW2FyZ09mZnNldF0uaXNOdW1i
ZXIoKSB8fCAhYXJndW1lbnRzWzEgKyBhcmdPZmZzZXRdLmlzTnVtYmVyKCkpCi0gICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICpwYWdlV2lkdGhJblBpeGVscyA9IGFyZ3VtZW50c1th
cmdPZmZzZXRdLnRvSW50MzIoKTsKLSAgICAgICAgKnBhZ2VIZWlnaHRJblBpeGVscyA9IGFyZ3Vt
ZW50c1sxICsgYXJnT2Zmc2V0XS50b0ludDMyKCk7Ci0gICAgICAgIC8vIGZhbGwgdGhyb3VnaC4K
LSAgICBjYXNlIDA6Ci0gICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6CisgICAgLy8gRklYTUU6
IHNoYXJlIHRoZSBkZWZhdWx0IHZhbHVlcyB3aXRoIG90aGVyIHBvcnRzLgorICAgIGludCBhcmdD
b3VudCA9IHN0YXRpY19jYXN0PGludD4oYXJndW1lbnRzLnNpemUoKSkgLSBhcmdPZmZzZXQ7Cisg
ICAgaWYgKGFyZ0NvdW50ICYmIGFyZ0NvdW50ICE9IDIpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICBpZiAoIXBhcnNlQ3BwQXJndW1lbnRJbnQzMihhcmd1bWVudHMsIGFyZ09mZnNldCwgcGFn
ZVdpZHRoSW5QaXhlbHMsIDgwMCkKKyAgICAgICAgfHwgIXBhcnNlQ3BwQXJndW1lbnRJbnQzMihh
cmd1bWVudHMsIGFyZ09mZnNldCArIDEsIHBhZ2VIZWlnaHRJblBpeGVscywgNjAwKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgYm9vbCBwYXJz
ZVBhZ2VOdW1iZXIoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIGludCBhcmdPZmZz
ZXQsIGludCogcGFnZU51bWJlcikKK3sKKyAgICBpZiAoc3RhdGljX2Nhc3Q8aW50Pihhcmd1bWVu
dHMuc2l6ZSgpKSA+IGFyZ09mZnNldCArIDEpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBp
ZiAoIXBhcnNlQ3BwQXJndW1lbnRJbnQzMihhcmd1bWVudHMsIGFyZ09mZnNldCwgcGFnZU51bWJl
ciwgMCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3Rh
dGljIGJvb2wgcGFyc2VQYWdlTnVtYmVyU2l6ZU1hcmdpbnMoY29uc3QgQ3BwQXJndW1lbnRMaXN0
JiBhcmd1bWVudHMsIGludCBhcmdPZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQqIHBhZ2VOdW1iZXIsIGludCogd2lkdGgsIGludCogaGVpZ2h0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50KiBtYXJnaW5Ub3AsIGludCog
bWFyZ2luUmlnaHQsIGludCogbWFyZ2luQm90dG9tLCBpbnQqIG1hcmdpbkxlZnQpCit7CisgICAg
aW50IGFyZ0NvdW50ID0gc3RhdGljX2Nhc3Q8aW50Pihhcmd1bWVudHMuc2l6ZSgpKSAtIGFyZ09m
ZnNldDsKKyAgICBpZiAoYXJnQ291bnQgJiYgYXJnQ291bnQgIT0gNykKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIGlmICghcGFyc2VDcHBBcmd1bWVudEludDMyKGFyZ3VtZW50cywgYXJnT2Zm
c2V0LCBwYWdlTnVtYmVyLCAwKQorICAgICAgICB8fCAhcGFyc2VDcHBBcmd1bWVudEludDMyKGFy
Z3VtZW50cywgYXJnT2Zmc2V0ICsgMSwgd2lkdGgsIDApCisgICAgICAgIHx8ICFwYXJzZUNwcEFy
Z3VtZW50SW50MzIoYXJndW1lbnRzLCBhcmdPZmZzZXQgKyAyLCBoZWlnaHQsIDApCisgICAgICAg
IHx8ICFwYXJzZUNwcEFyZ3VtZW50SW50MzIoYXJndW1lbnRzLCBhcmdPZmZzZXQgKyAzLCBtYXJn
aW5Ub3AsIDApCisgICAgICAgIHx8ICFwYXJzZUNwcEFyZ3VtZW50SW50MzIoYXJndW1lbnRzLCBh
cmdPZmZzZXQgKyA0LCBtYXJnaW5SaWdodCwgMCkKKyAgICAgICAgfHwgIXBhcnNlQ3BwQXJndW1l
bnRJbnQzMihhcmd1bWVudHMsIGFyZ09mZnNldCArIDUsIG1hcmdpbkJvdHRvbSwgMCkKKyAgICAg
ICAgfHwgIXBhcnNlQ3BwQXJndW1lbnRJbnQzMihhcmd1bWVudHMsIGFyZ09mZnNldCArIDYsIG1h
cmdpbkxlZnQsIDApKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQogICAgIHJldHVybiB0
cnVlOwogfQogCkBAIC0xNjQwLDYgKzE2NzksNjAgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxl
cjo6cGFnZU51bWJlckZvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHBhZ2VIZWlnaHRJblBpeGVscykpKTsKIH0KIAor
dm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGFnZVNpemVBbmRNYXJnaW5zSW5QaXhlbHMoY29u
c3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKK3sKKyAg
ICByZXN1bHQtPnNldCgiIik7CisgICAgaW50IHBhZ2VOdW1iZXIgPSAwOworICAgIGludCB3aWR0
aCA9IDA7CisgICAgaW50IGhlaWdodCA9IDA7CisgICAgaW50IG1hcmdpblRvcCA9IDA7CisgICAg
aW50IG1hcmdpblJpZ2h0ID0gMDsKKyAgICBpbnQgbWFyZ2luQm90dG9tID0gMDsKKyAgICBpbnQg
bWFyZ2luTGVmdCA9IDA7CisgICAgaWYgKCFwYXJzZVBhZ2VOdW1iZXJTaXplTWFyZ2lucyhhcmd1
bWVudHMsIDAsICZwYWdlTnVtYmVyLCAmd2lkdGgsICZoZWlnaHQsICZtYXJnaW5Ub3AsICZtYXJn
aW5SaWdodCwgJm1hcmdpbkJvdHRvbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICZtYXJnaW5MZWZ0KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgV2ViRnJhbWUqIGZyYW1l
ID0gbV9zaGVsbC0+d2ViVmlldygpLT5tYWluRnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQorICAg
ICAgICByZXR1cm47CisgICAgV2ViU2l6ZSBwYWdlU2l6ZSh3aWR0aCwgaGVpZ2h0KTsKKyAgICBm
cmFtZS0+cGFnZVNpemVBbmRNYXJnaW5zSW5QaXhlbHMocGFnZU51bWJlciwgcGFnZVNpemUsIG1h
cmdpblRvcCwgbWFyZ2luUmlnaHQsIG1hcmdpbkJvdHRvbSwgbWFyZ2luTGVmdCk7CisgICAgc3Ry
aW5nc3RyZWFtIHJlc3VsdFN0cmluZzsKKyAgICByZXN1bHRTdHJpbmcgPDwgIigiIDw8IHBhZ2VT
aXplLndpZHRoIDw8ICIsICIgPDwgcGFnZVNpemUuaGVpZ2h0IDw8ICIpICIgPDwgbWFyZ2luVG9w
IDw8ICIgIiA8PCBtYXJnaW5SaWdodCA8PCAiICIKKyAgICAgICAgICAgICAgICAgPDwgbWFyZ2lu
Qm90dG9tIDw8ICIgIiA8PCBtYXJnaW5MZWZ0OworICAgIHJlc3VsdC0+c2V0KHJlc3VsdFN0cmlu
Zy5zdHIoKSk7Cit9CisKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmlzUGFnZUJveFZpc2li
bGUoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkK
K3sKKyAgICByZXN1bHQtPnNldE51bGwoKTsKKyAgICBpbnQgcGFnZU51bWJlciA9IDA7CisgICAg
aWYgKCFwYXJzZVBhZ2VOdW1iZXIoYXJndW1lbnRzLCAwLCAmcGFnZU51bWJlcikpCisgICAgICAg
IHJldHVybjsKKyAgICBXZWJGcmFtZSogZnJhbWUgPSBtX3NoZWxsLT53ZWJWaWV3KCktPm1haW5G
cmFtZSgpOworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVybjsKKyAgICByZXN1bHQtPnNl
dChmcmFtZS0+aXNQYWdlQm94VmlzaWJsZShwYWdlTnVtYmVyKSk7Cit9CisKK3ZvaWQgTGF5b3V0
VGVzdENvbnRyb2xsZXI6OnBhZ2VQcm9wZXJ0eShjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3Vt
ZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQoreworICAgIHJlc3VsdC0+c2V0KCIiKTsKKyAgICBp
bnQgcGFnZU51bWJlciA9IDA7CisgICAgaWYgKCFwYXJzZVBhZ2VOdW1iZXIoYXJndW1lbnRzLCAx
LCAmcGFnZU51bWJlcikpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAoIWFyZ3VtZW50c1swXS5p
c1N0cmluZygpKQorICAgICAgICByZXR1cm47CisgICAgV2ViRnJhbWUqIGZyYW1lID0gbV9zaGVs
bC0+d2ViVmlldygpLT5tYWluRnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1
cm47CisgICAgV2ViU2l6ZSBwYWdlU2l6ZSg4MDAsIDgwMCk7CisgICAgZnJhbWUtPnByaW50QmVn
aW4ocGFnZVNpemUpOworICAgIHJlc3VsdC0+c2V0KGZyYW1lLT5wYWdlUHJvcGVydHkoY3BwVmFy
aWFudFRvV2ViU3RyaW5nKGFyZ3VtZW50c1swXSksIHBhZ2VOdW1iZXIpLnV0ZjgoKSk7CisgICAg
ZnJhbWUtPnByaW50RW5kKCk7Cit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6Om51bWJl
ck9mUGFnZXMoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJl
c3VsdCkKIHsKICAgICByZXN1bHQtPnNldE51bGwoKTsKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaAkocmV2aXNpb24g
OTk4ODApCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJv
bGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMzQsNiArMzM0LDE1IEBAIHB1YmxpYzoKICAgICAv
LyBHZXRzIHRoZSBudW1iZXIgb2YgcGFnZSB3aGVyZSB0aGUgc3BlY2lmaWVkIGVsZW1lbnQgd2ls
bCBiZSBwdXQuCiAgICAgdm9pZCBwYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQoY29uc3QgQ3BwQXJn
dW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogCisgICAgLy8gR2V0cyB0aGUgcGFnZSBzaXplIGFu
ZCBtYXJnaW5zIGZvciBhIHByaW50ZWQgcGFnZS4KKyAgICB2b2lkIHBhZ2VTaXplQW5kTWFyZ2lu
c0luUGl4ZWxzKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKKworICAgIC8v
IFJldHVybnMgdGhlIHZpc2liaWxpbHR5IHN0YXR1cyBvZiBhIHBhZ2UgYm94IGZvciBwcmludGlu
ZworICAgIHZvaWQgaXNQYWdlQm94VmlzaWJsZShjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBW
YXJpYW50Kik7CisKKyAgICAvLyBHZXRzIHRoZSBwYWdlLXJlbGF0ZWQgcHJvcGVydHkgZm9yIHBy
aW50ZWQgY29udGVudAorICAgIHZvaWQgcGFnZVByb3BlcnR5KGNvbnN0IENwcEFyZ3VtZW50TGlz
dCYsIENwcFZhcmlhbnQqKTsKKwogICAgIC8vIEdldHMgdGhlIG51bWJlciBvZiBwYWdlcyB0byBi
ZSBwcmludGVkLgogICAgIHZvaWQgbnVtYmVyT2ZQYWdlcyhjb25zdCBDcHBBcmd1bWVudExpc3Qm
LCBDcHBWYXJpYW50Kik7CiAKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDk5ODgwKQorKysgTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMTEtMTAg
IFN0ZXBoZW4gQ2hlbm5leSAgPHNjaGVubmV5QGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hy
b21pdW1dIERSVCBkb2VzIG5vdCBoYXZlIExheW91dFRlc3RDb250cm9sbGVyLnBhZ2VTaXplQW5k
TWFyZ2luc0luUGl4ZWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD00OTI1NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0OiBSZW1vdmVk
IGV4cGVjdGVkIGZhaWxzIGZvcgorICAgICAgICBwcmludGluZyB0ZXN0cyB0aGF0IHdlcmUgdXNp
bmcgbWlzc2luZyBmdW5jdGlvbmFsaXR5IGluIExheW91dFRlc3RDb250cm9sbGVyLgorCiAyMDEx
LTExLTEwICBPamFuIFZhZmFpICA8b2phbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmViYXNl
bGluZXMgYWZ0ZXIgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvOTk4NTQuCkluZGV4
OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlv
bnMudHh0CShyZXZpc2lvbiA5OTg4MCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVt
L3Rlc3RfZXhwZWN0YXRpb25zLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMjA3MSw5ICsyMDcxLDYg
QEAgQlVHQ1I0NjYwMyBTTE9XIFJFTEVBU0UgOiBmYXN0L2ZyYW1lcy9sbwogQlVHQ1I0NjYwMyBT
S0lQIERFQlVHIDogZmFzdC9mcmFtZXMvbG90cy1vZi1pZnJhbWVzLmh0bWwgPSBUSU1FT1VUCiBC
VUdDUjQ2NjAzIFNLSVAgREVCVUcgOiBmYXN0L2ZyYW1lcy9sb3RzLW9mLW9iamVjdHMuaHRtbCA9
IFRJTUVPVVQKIAotLy8gTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBhZ2VQcm9wZXJ0eSBpcyBub3Qg
aW1wbGVtZW50ZWQgZm9yIENocm9taXVtIHlldC4KLUJVR1dLMzU5NjEgOiBwcmludGluZy9wYWdl
LXJ1bGUtc2VsZWN0aW9uLmh0bWwgPSBURVhUCi0KIEJVR0NSNDcwMzUgV0lOIERFQlVHIDogZmFz
dC9sb2FkZXIvc3RhdGVvYmplY3RzL2RvY3VtZW50LWRlc3Ryb3llZC1uYXZpZ2F0ZS1iYWNrLXdp
dGgtZnJhZ21lbnQtc2Nyb2xsLmh0bWwgPSBQQVNTIFRFWFQKIAogLy8gQ1NTMyBIeXBoZW5hdGlv
biBsYW5kZWQgaW4gaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvNjE1NDgKQEAgLTIw
ODksOSArMjA4Niw2IEBAIEJVR0NSNDcwODMgOiBmYXN0L3RleHQvaHlwaGVuYXRlLWxpbWl0LWIK
IC8vIFdlYktpdCByb2xsIDYxNTQ3OjYxNjI5LiBTdGlsbCBuZWVkIHRvIGludmVzdGlnYXRlLgog
QlVHX0hDTEFNIDogZmFzdC9qcy9zY3JpcHQtbGluZS1udW1iZXIuaHRtbCA9IFRFWFQKIAotLy8g
TGF5b3V0VGVzdENvbnRyb2xsZXI6OmlzUGFnZUJveFZpc2libGUsIHBhZ2VBcmVhUmVjdEluUGl4
ZWxzLCBhbmQgcHJlZmVycmVkUGFnZVNpemVJblBpeGVscyBhcmUgbm90IGltcGxlbWVudGVkIHll
dCBmb3IgQ2hyb21pdW0uCi1CVUdXSzM3NTM4IDogcHJpbnRpbmcvcGFnZS1mb3JtYXQtZGF0YS5o
dG1sID0gVEVYVAotCiAvLyBGaXJzdCBub3RpY2VkIG9uIHRyeWJvdHMgYWZ0ZXIgcjYxODM2LCBu
b3cgaW4gdGhlIHRyZWUuCiBCVUdfTU5BR0FOT1YgTElOVVggOiBmYXN0L2pzL09iamVjdC1jcmVh
dGUuaHRtbCA9IENSQVNIIEZBSUwKIApAQCAtMjQzOCw5ICsyNDMyLDYgQEAgV09OVEZJWCBTS0lQ
IFdJTiA6IHBsYXRmb3JtL3dpbi9wbHVnaW5zLwogLy8gQWRkZWQgaW4gV0sgcjcxNDI0CiBCVUdD
UjYyMTM4IDogYW5pbWF0aW9ucy9zdG9wLWFuaW1hdGlvbi1vbi1zdXNwZW5kLmh0bWwgPSBQQVNT
IENSQVNIIFRFWFQKIAotLy8gdGVzdF9zaGVsbCBhbmQgRFJUIGRvIG5vdCBoYXZlIExheW91dFRl
c3RDb250cm9sbGVyLnBhZ2VTaXplQW5kTWFyZ2luc0luUGl4ZWxzCi1CVUdDUjYyNTE1IDogcHJp
bnRpbmcvcGFnZS1mb3JtYXQtZGF0YS1kaXNwbGF5LW5vbmUuaHRtbCA9IFRFWFQKLQogQlVHQ1I2
MTczOSBERUJVRyA6IGFuaW1hdGlvbnMvc3VzcGVuZC1yZXN1bWUtYW5pbWF0aW9uLWV2ZW50cy5o
dG1sID0gUEFTUyBDUkFTSCBURVhUCiAKIC8vIE5ldyB0ZXN0cyBhZGRlZCB3aXRoIGh0dHA6Ly90
cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzcyNDcyIGFuZCBmdXJ0aGVyLgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>