<?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>86440</bug_id>
          
          <creation_ts>2012-05-14 22:06:27 -0700</creation_ts>
          <short_desc>[Chromium] Implement WebViewImpl::textInputInfo() for Android</short_desc>
          <delta_ts>2012-05-21 01:27:05 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>86709</dependson>
          <blocked>66687</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>tomz</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>623641</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-05-14 22:06:27 -0700</bug_when>
    <thetext>[Chromium] Implement WebViewImpl::textInputInfo() for Android</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>623642</commentid>
    <comment_count>1</comment_count>
      <attachid>141853</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-05-14 22:07:15 -0700</bug_when>
    <thetext>Created attachment 141853
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>623704</commentid>
    <comment_count>2</comment_count>
      <attachid>141864</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-05-14 23:53:06 -0700</bug_when>
    <thetext>Created attachment 141864
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>623708</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-14 23:55:32 -0700</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>623712</commentid>
    <comment_count>4</comment_count>
      <attachid>141864</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-05-14 23:58:10 -0700</bug_when>
    <thetext>Comment on attachment 141864
Patch

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

This is really a patch for darin.

&gt; Source/WebKit/chromium/public/WebTextInputInfo.h:2
&gt; + * Copyright (C) 2011 Google Inc. All rights reserved.

Back to the future!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>624384</commentid>
    <comment_count>5</comment_count>
      <attachid>141864</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2012-05-15 12:21:07 -0700</bug_when>
    <thetext>Comment on attachment 141864
Patch

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

&gt; Source/WebKit/chromium/public/WebTextInputInfo.h:35
&gt; +

nit: no newline

&gt; Source/WebKit/chromium/public/WebTextInputInfo.h:67
&gt; +    return a.type == b.type

this is a fair bit of code.  i recommend making this non-inline by
creating an equals method.  see WebNode.h for example.

&gt; Source/WebKit/chromium/public/WebWidget.h:36
&gt;  #include &quot;WebTextInputType.h&quot;

nit: delete this include since it comes in through WebTextInputInfo.h

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:1903
&gt; +        info.value = static_cast&lt;HTMLTextAreaElement*&gt;(node)-&gt;value();

is this really the best way to do run-time type detection and downcasting?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>624528</commentid>
    <comment_count>6</comment_count>
      <attachid>141864</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-05-15 14:00:22 -0700</bug_when>
    <thetext>Comment on attachment 141864
Patch

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

Thanks for the review.  Will fix.

&gt;&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:1903
&gt;&gt; +        info.value = static_cast&lt;HTMLTextAreaElement*&gt;(node)-&gt;value();
&gt; 
&gt; is this really the best way to do run-time type detection and downcasting?

Yeah, this is a relatively common idiom in WebCore, especially in form-related code.  When I first discovered it, I tried for a while to break it by searching for a way to disassociate the tag name from the C++ type, but it doesn&apos;t appear to be possible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>624599</commentid>
    <comment_count>7</comment_count>
      <attachid>142064</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-05-15 14:47:27 -0700</bug_when>
    <thetext>Created attachment 142064
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>624774</commentid>
    <comment_count>8</comment_count>
      <attachid>142064</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-15 17:34:32 -0700</bug_when>
    <thetext>Comment on attachment 142064
Patch

Attachment 142064 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/12706485</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>624826</commentid>
    <comment_count>9</comment_count>
      <attachid>142119</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-05-15 18:36:04 -0700</bug_when>
    <thetext>Created attachment 142119
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>624854</commentid>
    <comment_count>10</comment_count>
      <attachid>142125</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-05-15 19:04:13 -0700</bug_when>
    <thetext>Created attachment 142125
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>624940</commentid>
    <comment_count>11</comment_count>
      <attachid>142125</attachid>
    <who name="Tom Zakrajsek">tomz</who>
    <bug_when>2012-05-15 21:17:51 -0700</bug_when>
    <thetext>Comment on attachment 142125
Patch

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

I was just perusing for my own edification, but did come up with two nits/questions.

&gt; Source/WebKit/chromium/public/WebTextInputInfo.h:2
&gt; + * Copyright (C) 2011 Google Inc. All rights reserved.

Should this be 2012?

&gt; Source/WebKit/chromium/public/WebTextInputInfo.h:73
&gt; +    return !(a == b);

Why not just  return (a !=  b)?  Just curious if I&apos;m missing an idiom I should know about.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>624943</commentid>
    <comment_count>12</comment_count>
      <attachid>142125</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-05-15 21:20:05 -0700</bug_when>
    <thetext>Comment on attachment 142125
Patch

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

&gt;&gt; Source/WebKit/chromium/public/WebTextInputInfo.h:2
&gt;&gt; + * Copyright (C) 2011 Google Inc. All rights reserved.
&gt; 
&gt; Should this be 2012?

I believe this code was written in 2011.

&gt;&gt; Source/WebKit/chromium/public/WebTextInputInfo.h:73
&gt;&gt; +    return !(a == b);
&gt; 
&gt; Why not just  return (a !=  b)?  Just curious if I&apos;m missing an idiom I should know about.

That would just end up calling operator!= recursively.  The idea here is to have operator!= call operator== instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>624949</commentid>
    <comment_count>13</comment_count>
    <who name="Tom Zakrajsek">tomz</who>
    <bug_when>2012-05-15 21:31:36 -0700</bug_when>
    <thetext>Wow, that&apos;s embarrassing.  Of course that&apos;s why it was using !(a==b).  It looked so odd to me that i completely missed the context.  ValueAdd went from 0 to -1 :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>625006</commentid>
    <comment_count>14</comment_count>
      <attachid>142125</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2012-05-15 22:55:35 -0700</bug_when>
    <thetext>Comment on attachment 142125
Patch

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

&gt; Source/WebKit/chromium/src/WebTextInputInfo.cpp:44
&gt; +

nit: extra new line</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>626051</commentid>
    <comment_count>15</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-05-16 17:22:32 -0700</bug_when>
    <thetext>No worries Tom.  I appreciate your looking at these patches and providing feedback.  I should dig up some of the bonehead webkit-dev posts I&apos;ve written so you can have a good laugh.  :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>626160</commentid>
    <comment_count>16</comment_count>
      <attachid>142396</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-05-16 19:31:21 -0700</bug_when>
    <thetext>Created attachment 142396
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>626251</commentid>
    <comment_count>17</comment_count>
      <attachid>142396</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-16 22:03:15 -0700</bug_when>
    <thetext>Comment on attachment 142396
Patch for landing

Clearing flags on attachment: 142396

Committed r117396: &lt;http://trac.webkit.org/changeset/117396&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>626252</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-16 22:03:21 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>626293</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-16 23:29:17 -0700</bug_when>
    <thetext>Re-opened since this is blocked by 86709</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>628783</commentid>
    <comment_count>20</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-05-20 22:31:13 -0700</bug_when>
    <thetext>// Check WebKit::WebTextInputType and ui::TextInputType is kept in sync.

Looks like we need to keep these in sync, which is going to be tricky given that they&apos;re in different repos.  I&apos;m going to skip adding the new enum values in this patch and tackle that problem in the future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>628795</commentid>
    <comment_count>21</comment_count>
      <attachid>142948</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-05-20 23:05:39 -0700</bug_when>
    <thetext>Created attachment 142948
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>628866</commentid>
    <comment_count>22</comment_count>
      <attachid>142948</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-21 01:27:00 -0700</bug_when>
    <thetext>Comment on attachment 142948
Patch for landing

Clearing flags on attachment: 142948

Committed r117745: &lt;http://trac.webkit.org/changeset/117745&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>628867</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-21 01:27:05 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>141853</attachid>
            <date>2012-05-14 22:07:15 -0700</date>
            <delta_ts>2012-05-14 23:53:02 -0700</delta_ts>
            <desc>work in progress</desc>
            <filename>bug-86440-20120514220714.patch</filename>
            <type>text/plain</type>
            <size>11062</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiAxMTcwMjkpCisrKyBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIw
IEBACisyMDEyLTA1LTE0ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgW0Nocm9taXVtXSBJbXBsZW1lbnQgV2ViVmlld0ltcGw6OnRleHRJbnB1dEluZm8oKSBmb3Ig
QW5kcm9pZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
ODY0NDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IHB1YmxpYy9XZWJUZXh0SW5wdXRJbmZvLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAg
ICAgICAgKFdlYlRleHRJbnB1dEluZm8pOgorICAgICAgICAoV2ViS2l0OjpXZWJUZXh0SW5wdXRJ
bmZvOjpXZWJUZXh0SW5wdXRJbmZvKToKKyAgICAgICAgKFdlYktpdDo6b3BlcmF0b3I9PSk6Cisg
ICAgICAgIChXZWJLaXQ6Om9wZXJhdG9yIT0pOgorICAgICAgICAqIHB1YmxpYy9XZWJUZXh0SW5w
dXRUeXBlLmg6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViVmlld0ltcGw6OnRleHRJbnB1dEluZm8pOgorCiAyMDEyLTA1LTE0ICBHYXZpbiBQZXRl
cnMgIDxnYXZpbnBAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEFkZCBQcmVyZW5kZXJlciwgUHJl
cmVuZGVySGFuZGxlIGFuZCBhIGNocm9taXVtIGludGVyZmFjZSBmb3IgUHJlcmVuZGVyaW5nLgpJ
bmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVGV4dElucHV0SW5mby5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlRleHRJbnB1dElu
Zm8uaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlRl
eHRJbnB1dEluZm8uaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4MiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElU
UyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwor
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgV2ViVGV4dElucHV0SW5mb19oCisjZGVmaW5lIFdlYlRleHRJbnB1dEluZm9faAorCisjaW5j
bHVkZSAiV2ViVGV4dElucHV0VHlwZS5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlN0cmluZy5o
IgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RydWN0IFdlYlRleHRJbnB1dEluZm8geworCisg
ICAgV2ViVGV4dElucHV0VHlwZSB0eXBlOworCisgICAgLy8gVGhlIHZhbHVlIG9mIHRoZSBjdXJy
ZW50bHkgZm9jdXNlZCBpbnB1dCBmaWVsZC4KKyAgICBXZWJTdHJpbmcgdmFsdWU7CisKKyAgICAv
LyBUaGUgY3Vyc29yIHBvc2l0aW9uIG9mIHRoZSBjdXJyZW50IHNlbGVjdGlvbiBzdGFydCwgb3Ig
dGhlIGNhcmV0IHBvc2l0aW9uCisgICAgLy8gaWYgbm90aGluZyBpcyBzZWxlY3RlZC4KKyAgICBp
bnQgc2VsZWN0aW9uU3RhcnQ7CisKKyAgICAvLyBUaGUgY3Vyc29yIHBvc2l0aW9uIG9mIHRoZSBj
dXJyZW50IHNlbGVjdGlvbiBlbmQsIG9yIHRoZSBjYXJldCBwb3NpdGlvbgorICAgIC8vIGlmIG5v
dGhpbmcgaXMgc2VsZWN0ZWQuCisgICAgaW50IHNlbGVjdGlvbkVuZDsKKworICAgIC8vIFRoZSBz
dGFydCBwb3NpdGlvbiBvZiB0aGUgY3VycmVudCBjb21wb3NpdGlvbiwgb3IgLTEgaWYgdGhlcmUg
aXMgbm9uZS4KKyAgICBpbnQgY29tcG9zaXRpb25TdGFydDsKKworICAgIC8vIFRoZSBlbmQgcG9z
aXRpb24gb2YgdGhlIGN1cnJlbnQgY29tcG9zaXRpb24sIG9yIC0xIGlmIHRoZXJlIGlzIG5vbmUu
CisgICAgaW50IGNvbXBvc2l0aW9uRW5kOworCisgICAgV2ViVGV4dElucHV0SW5mbygpCisgICAg
ICAgIDogdHlwZShXZWJUZXh0SW5wdXRUeXBlTm9uZSkKKyAgICAgICAgLCBzZWxlY3Rpb25TdGFy
dCgwKQorICAgICAgICAsIHNlbGVjdGlvbkVuZCgwKQorICAgICAgICAsIGNvbXBvc2l0aW9uU3Rh
cnQoLTEpCisgICAgICAgICwgY29tcG9zaXRpb25FbmQoLTEpCisgICAgeworICAgIH0KK307CisK
K2lubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgV2ViVGV4dElucHV0SW5mbyYgYSwgY29uc3Qg
V2ViVGV4dElucHV0SW5mbyYgYikKK3sKKyAgICByZXR1cm4gYS50eXBlID09IGIudHlwZQorICAg
ICAgICAmJiBhLnZhbHVlID09IGIudmFsdWUKKyAgICAgICAgJiYgYS5zZWxlY3Rpb25TdGFydCA9
PSBiLnNlbGVjdGlvblN0YXJ0CisgICAgICAgICYmIGEuc2VsZWN0aW9uRW5kID09IGIuc2VsZWN0
aW9uRW5kCisgICAgICAgICYmIGEuY29tcG9zaXRpb25TdGFydCA9PSBiLmNvbXBvc2l0aW9uU3Rh
cnQKKyAgICAgICAgJiYgYS5jb21wb3NpdGlvbkVuZCA9PSBiLmNvbXBvc2l0aW9uRW5kOworfQor
CitpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFdlYlRleHRJbnB1dEluZm8mIGEsIGNvbnN0
IFdlYlRleHRJbnB1dEluZm8mIGIpCit7CisgICAgcmV0dXJuICEoYSA9PSBiKTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViVGV4dElucHV0VHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYlRleHRJbnB1dFR5cGUuaAkocmV2aXNpb24gMTE3MDI5KQorKysg
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVGV4dElucHV0VHlwZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zOSw2ICszOSw4IEBAIGVudW0gV2ViVGV4dElucHV0VHlwZSB7CiAKICAgICAv
LyBJbnB1dCBjYXJldCBpcyBpbiBhIG5vcm1hbCBlZGl0YWJsZSBub2RlLCBhbnkgaW5wdXQgbWV0
aG9kIGNhbiBiZSB1c2VkLgogICAgIFdlYlRleHRJbnB1dFR5cGVUZXh0LAorICAgIFdlYlRleHRJ
bnB1dFR5cGVUZXh0QXJlYSwKKyAgICBXZWJUZXh0SW5wdXRUeXBlQ29udGVudEVkaXRhYmxlLAog
CiAgICAgLy8gSW5wdXQgY2FyZXQgaXMgaW4gYSBzcGVjaWZpYyBpbnB1dCBmaWVsZCwgYW5kIGlu
cHV0IG1ldGhvZCBtYXkgYmUgdXNlZAogICAgIC8vIG9ubHkgaWYgaXQncyBzdWl0YWJsZSBmb3Ig
dGhlIHNwZWNpZmljIGlucHV0IGZpZWxkLgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViVmlld0ltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlZpZXdJbXBsLmNwcAkocmV2aXNpb24gMTE3MDI5KQorKysgU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDAsNiArMTQw
LDcgQEAKICNpbmNsdWRlICJXZWJSYW5nZS5oIgogI2luY2x1ZGUgIldlYlJ1bnRpbWVGZWF0dXJl
cy5oIgogI2luY2x1ZGUgIldlYlNldHRpbmdzSW1wbC5oIgorI2luY2x1ZGUgIldlYlRleHRJbnB1
dEluZm8uaCIKICNpbmNsdWRlICJXZWJWaWV3Q2xpZW50LmgiCiAjaW5jbHVkZSAiV2hlZWxFdmVu
dC5oIgogI2luY2x1ZGUgImNjL0NDUHJveHkuaCIKQEAgLTE4NzMsNjIgKzE4NzQsMTE1IEBAIGJv
b2wgV2ViVmlld0ltcGw6OmNvbXBvc2l0aW9uUmFuZ2Uoc2l6ZV8KICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKK1dlYlRleHRJbnB1dEluZm8gV2ViVmlld0ltcGw6OnRleHRJbnB1dEluZm8oKQorewor
ICAgIFdlYlRleHRJbnB1dEluZm8gaW5mbzsKKworICAgIEZyYW1lKiBmb2N1c2VkID0gZm9jdXNl
ZFdlYkNvcmVGcmFtZSgpOworICAgIGlmICghZm9jdXNlZCkKKyAgICAgICAgcmV0dXJuIGluZm87
CisKKyAgICBFZGl0b3IqIGVkaXRvciA9IGZvY3VzZWQtPmVkaXRvcigpOworICAgIGlmICghZWRp
dG9yIHx8ICFlZGl0b3ItPmNhbkVkaXQoKSkKKyAgICAgICAgcmV0dXJuIGluZm87CisKKyAgICBG
cmFtZVNlbGVjdGlvbiogc2VsZWN0aW9uID0gZm9jdXNlZC0+c2VsZWN0aW9uKCk7CisgICAgaWYg
KCFzZWxlY3Rpb24pCisgICAgICAgIHJldHVybiBpbmZvOworCisgICAgTm9kZSogbm9kZSA9IGZv
Y3VzZWRXZWJDb3JlTm9kZSgpOworICAgIGlmICghbm9kZSkKKyAgICAgICAgcmV0dXJuIGluZm87
CisKKyAgICBpbmZvLnR5cGUgPSB0ZXh0SW5wdXRUeXBlKCk7CisgICAgaWYgKHR5cGUgPT0gV2Vi
VGV4dElucHV0VHlwZU5vbmUpCisgICAgICAgIHJldHVybiBpbmZvOworCisgICAgaWYgKG5vZGUt
Pmhhc1RhZ05hbWUoSFRNTE5hbWVzOjp0ZXh0YXJlYVRhZykpCisgICAgICAgIGluZm8udmFsdWUg
PSBzdGF0aWNfY2FzdDxIVE1MVGV4dEFyZWFFbGVtZW50Kj4obm9kZSktPnZhbHVlKCk7CisgICAg
ZWxzZSBpZiAobm9kZS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OmlucHV0VGFnKSkKKyAgICAgICAg
aW5mby52YWx1ZSA9IHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihub2RlKS0+dmFsdWUo
KTsKKyAgICBlbHNlIGlmIChub2RlLT5zaG91bGRVc2VJbnB1dE1ldGhvZCgpKSB7CisgICAgICAg
IGluZm8udmFsdWUgPSBub2RlLT5ub2RlVmFsdWUoKTsKKyAgICBlbHNlCisgICAgICAgIHJldHVy
biBpbmZvOworCisgICAgaWYgKGluZm8udmFsdWUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4g
aW5mbzsKKworICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6dGV4dGFyZWFUYWcp
IHx8IG5vZGUtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjppbnB1dFRhZykpIHsKKyAgICAgICAgSFRN
TFRleHRGb3JtQ29udHJvbEVsZW1lbnQqIGZvcm1FbGVtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTFRl
eHRGb3JtQ29udHJvbEVsZW1lbnQqPihub2RlKTsKKyAgICAgICAgaW5mby5zZWxlY3Rpb25TdGFy
dCA9IGZvcm1FbGVtZW50LT5zZWxlY3Rpb25TdGFydCgpOworICAgICAgICBpbmZvLnNlbGVjdGlv
bkVuZCA9IGZvcm1FbGVtZW50LT5zZWxlY3Rpb25FbmQoKTsKKyAgICAgICAgaWYgKGVkaXRvci0+
aGFzQ29tcG9zaXRpb24oKSkgeworICAgICAgICAgICAgaW5mby5jb21wb3NpdGlvblN0YXJ0ID0g
Zm9ybUVsZW1lbnQtPmluZGV4Rm9yVmlzaWJsZVBvc2l0aW9uKFBvc2l0aW9uKGVkaXRvci0+Y29t
cG9zaXRpb25Ob2RlKCksIGVkaXRvci0+Y29tcG9zaXRpb25TdGFydCgpKSk7CisgICAgICAgICAg
ICBpbmZvLmNvbXBvc2l0aW9uRW5kID0gZm9ybUVsZW1lbnQtPmluZGV4Rm9yVmlzaWJsZVBvc2l0
aW9uKFBvc2l0aW9uKGVkaXRvci0+Y29tcG9zaXRpb25Ob2RlKCksIGVkaXRvci0+Y29tcG9zaXRp
b25FbmQoKSkpOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgaW5mby5zZWxlY3Rp
b25TdGFydCA9IHNlbGVjdGlvbi0+c3RhcnQoKS5jb21wdXRlT2Zmc2V0SW5Db250YWluZXJOb2Rl
KCk7CisgICAgICAgIGluZm8uc2VsZWN0aW9uRW5kID0gc2VsZWN0aW9uLT5lbmQoKS5jb21wdXRl
T2Zmc2V0SW5Db250YWluZXJOb2RlKCk7CisgICAgICAgIGlmIChlZGl0b3ItPmhhc0NvbXBvc2l0
aW9uKCkpIHsKKyAgICAgICAgICAgIGluZm8uY29tcG9zaXRpb25TdGFydCA9IHN0YXRpY19jYXN0
PGludD4oZWRpdG9yLT5jb21wb3NpdGlvblN0YXJ0KCkpOworICAgICAgICAgICAgaW5mby5jb21w
b3NpdGlvbkVuZCA9IHN0YXRpY19jYXN0PGludD4oZWRpdG9yLT5jb21wb3NpdGlvbkVuZCgpKTsK
KyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBpbmZvOworfQorCiBXZWJUZXh0SW5wdXRU
eXBlIFdlYlZpZXdJbXBsOjp0ZXh0SW5wdXRUeXBlKCkKIHsKICAgICBOb2RlKiBub2RlID0gZm9j
dXNlZFdlYkNvcmVOb2RlKCk7CiAgICAgaWYgKCFub2RlKQogICAgICAgICByZXR1cm4gV2ViVGV4
dElucHV0VHlwZU5vbmU7CiAKLSAgICBpZiAobm9kZS0+bm9kZVR5cGUoKSA9PSBOb2RlOjpFTEVN
RU5UX05PREUpIHsKLSAgICAgICAgRWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0PEVsZW1l
bnQqPihub2RlKTsKLSAgICAgICAgaWYgKGVsZW1lbnQtPmhhc0xvY2FsTmFtZShIVE1MTmFtZXM6
OmlucHV0VGFnKSkgewotICAgICAgICAgICAgSFRNTElucHV0RWxlbWVudCogaW5wdXQgPSBzdGF0
aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4oZWxlbWVudCk7CisgICAgaWYgKG5vZGUtPmhhc0xv
Y2FsTmFtZShIVE1MTmFtZXM6OmlucHV0VGFnKSkgeworICAgICAgICBIVE1MSW5wdXRFbGVtZW50
KiBpbnB1dCA9IHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihub2RlKTsKIAotICAgICAg
ICAgICAgaWYgKGlucHV0LT5yZWFkT25seSgpIHx8IGlucHV0LT5kaXNhYmxlZCgpKQotICAgICAg
ICAgICAgICAgIHJldHVybiBXZWJUZXh0SW5wdXRUeXBlTm9uZTsKKyAgICAgICAgaWYgKGlucHV0
LT5yZWFkT25seSgpIHx8IGlucHV0LT5kaXNhYmxlZCgpKQorICAgICAgICAgICAgcmV0dXJuIFdl
YlRleHRJbnB1dFR5cGVOb25lOwogCi0gICAgICAgICAgICBpZiAoaW5wdXQtPmlzUGFzc3dvcmRG
aWVsZCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBXZWJUZXh0SW5wdXRUeXBlUGFzc3dvcmQ7
Ci0gICAgICAgICAgICBpZiAoaW5wdXQtPmlzU2VhcmNoRmllbGQoKSkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gV2ViVGV4dElucHV0VHlwZVNlYXJjaDsKLSAgICAgICAgICAgIGlmIChpbnB1dC0+
aXNFbWFpbEZpZWxkKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdlYlRleHRJbnB1dFR5cGVF
bWFpbDsKLSAgICAgICAgICAgIGlmIChpbnB1dC0+aXNOdW1iZXJGaWVsZCgpKQotICAgICAgICAg
ICAgICAgIHJldHVybiBXZWJUZXh0SW5wdXRUeXBlTnVtYmVyOwotICAgICAgICAgICAgaWYgKGlu
cHV0LT5pc1RlbGVwaG9uZUZpZWxkKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdlYlRleHRJ
bnB1dFR5cGVUZWxlcGhvbmU7Ci0gICAgICAgICAgICBpZiAoaW5wdXQtPmlzVVJMRmllbGQoKSkK
LSAgICAgICAgICAgICAgICByZXR1cm4gV2ViVGV4dElucHV0VHlwZVVSTDsKLSAgICAgICAgICAg
IGlmIChpbnB1dC0+aXNEYXRlRmllbGQoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gV2ViVGV4
dElucHV0VHlwZURhdGU7Ci0gICAgICAgICAgICBpZiAoaW5wdXQtPmlzRGF0ZVRpbWVGaWVsZCgp
KQotICAgICAgICAgICAgICAgIHJldHVybiBXZWJUZXh0SW5wdXRUeXBlRGF0ZVRpbWU7Ci0gICAg
ICAgICAgICBpZiAoaW5wdXQtPmlzRGF0ZVRpbWVMb2NhbEZpZWxkKCkpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIFdlYlRleHRJbnB1dFR5cGVEYXRlVGltZUxvY2FsOwotICAgICAgICAgICAgaWYg
KGlucHV0LT5pc01vbnRoRmllbGQoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gV2ViVGV4dElu
cHV0VHlwZU1vbnRoOwotICAgICAgICAgICAgaWYgKGlucHV0LT5pc1RpbWVGaWVsZCgpKQotICAg
ICAgICAgICAgICAgIHJldHVybiBXZWJUZXh0SW5wdXRUeXBlVGltZTsKLSAgICAgICAgICAgIGlm
IChpbnB1dC0+aXNXZWVrRmllbGQoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gV2ViVGV4dElu
cHV0VHlwZVdlZWs7Ci0gICAgICAgICAgICBpZiAoaW5wdXQtPmlzVGV4dEZpZWxkKCkpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIFdlYlRleHRJbnB1dFR5cGVUZXh0OworICAgICAgICBpZiAoaW5w
dXQtPmlzUGFzc3dvcmRGaWVsZCgpKQorICAgICAgICAgICAgcmV0dXJuIFdlYlRleHRJbnB1dFR5
cGVQYXNzd29yZDsKKyAgICAgICAgaWYgKGlucHV0LT5pc1NlYXJjaEZpZWxkKCkpCisgICAgICAg
ICAgICByZXR1cm4gV2ViVGV4dElucHV0VHlwZVNlYXJjaDsKKyAgICAgICAgaWYgKGlucHV0LT5p
c0VtYWlsRmllbGQoKSkKKyAgICAgICAgICAgIHJldHVybiBXZWJUZXh0SW5wdXRUeXBlRW1haWw7
CisgICAgICAgIGlmIChpbnB1dC0+aXNOdW1iZXJGaWVsZCgpKQorICAgICAgICAgICAgcmV0dXJu
IFdlYlRleHRJbnB1dFR5cGVOdW1iZXI7CisgICAgICAgIGlmIChpbnB1dC0+aXNUZWxlcGhvbmVG
aWVsZCgpKQorICAgICAgICAgICAgcmV0dXJuIFdlYlRleHRJbnB1dFR5cGVUZWxlcGhvbmU7Cisg
ICAgICAgIGlmIChpbnB1dC0+aXNVUkxGaWVsZCgpKQorICAgICAgICAgICAgcmV0dXJuIFdlYlRl
eHRJbnB1dFR5cGVVUkw7CisgICAgICAgIGlmIChpbnB1dC0+aXNEYXRlRmllbGQoKSkKKyAgICAg
ICAgICAgIHJldHVybiBXZWJUZXh0SW5wdXRUeXBlRGF0ZTsKKyAgICAgICAgaWYgKGlucHV0LT5p
c0RhdGVUaW1lRmllbGQoKSkKKyAgICAgICAgICAgIHJldHVybiBXZWJUZXh0SW5wdXRUeXBlRGF0
ZVRpbWU7CisgICAgICAgIGlmIChpbnB1dC0+aXNEYXRlVGltZUxvY2FsRmllbGQoKSkKKyAgICAg
ICAgICAgIHJldHVybiBXZWJUZXh0SW5wdXRUeXBlRGF0ZVRpbWVMb2NhbDsKKyAgICAgICAgaWYg
KGlucHV0LT5pc01vbnRoRmllbGQoKSkKKyAgICAgICAgICAgIHJldHVybiBXZWJUZXh0SW5wdXRU
eXBlTW9udGg7CisgICAgICAgIGlmIChpbnB1dC0+aXNUaW1lRmllbGQoKSkKKyAgICAgICAgICAg
IHJldHVybiBXZWJUZXh0SW5wdXRUeXBlVGltZTsKKyAgICAgICAgaWYgKGlucHV0LT5pc1dlZWtG
aWVsZCgpKQorICAgICAgICAgICAgcmV0dXJuIFdlYlRleHRJbnB1dFR5cGVXZWVrOworICAgICAg
ICBpZiAoaW5wdXQtPmlzVGV4dEZpZWxkKCkpCisgICAgICAgICAgICByZXR1cm4gV2ViVGV4dElu
cHV0VHlwZVRleHQ7CiAKLSAgICAgICAgICAgIHJldHVybiBXZWJUZXh0SW5wdXRUeXBlTm9uZTsK
LSAgICAgICAgfQorICAgICAgICByZXR1cm4gV2ViVGV4dElucHV0VHlwZU5vbmU7CisgICAgfQog
Ci0gICAgICAgIGlmIChlbGVtZW50LT5oYXNMb2NhbE5hbWUoSFRNTE5hbWVzOjp0ZXh0YXJlYVRh
ZykpIHsKLSAgICAgICAgICAgIEhUTUxUZXh0QXJlYUVsZW1lbnQqIHRleHRhcmVhID0gc3RhdGlj
X2Nhc3Q8SFRNTFRleHRBcmVhRWxlbWVudCo+KGVsZW1lbnQpOworICAgIGlmIChub2RlLT5oYXNM
b2NhbE5hbWUoSFRNTE5hbWVzOjp0ZXh0YXJlYVRhZykpIHsKKyAgICAgICAgSFRNTFRleHRBcmVh
RWxlbWVudCogdGV4dGFyZWEgPSBzdGF0aWNfY2FzdDxIVE1MVGV4dEFyZWFFbGVtZW50Kj4obm9k
ZSk7CiAKLSAgICAgICAgICAgIGlmICh0ZXh0YXJlYS0+cmVhZE9ubHkoKSB8fCB0ZXh0YXJlYS0+
ZGlzYWJsZWQoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gV2ViVGV4dElucHV0VHlwZU5vbmU7
Ci0gICAgICAgICAgICByZXR1cm4gV2ViVGV4dElucHV0VHlwZVRleHQ7Ci0gICAgICAgIH0KKyAg
ICAgICAgaWYgKHRleHRhcmVhLT5yZWFkT25seSgpIHx8IHRleHRhcmVhLT5kaXNhYmxlZCgpKQor
ICAgICAgICAgICAgcmV0dXJuIFdlYlRleHRJbnB1dFR5cGVOb25lOworCisgICAgICAgIHJldHVy
biBXZWJUZXh0SW5wdXRUeXBlVGV4dEFyZWE7CiAgICAgfQogCi0gICAgLy8gRm9yIG90aGVyIHNp
dHVhdGlvbnMuCiAgICAgaWYgKG5vZGUtPnNob3VsZFVzZUlucHV0TWV0aG9kKCkpCi0gICAgICAg
IHJldHVybiBXZWJUZXh0SW5wdXRUeXBlVGV4dDsKKyAgICAgICAgcmV0dXJuIFdlYlRleHRJbnB1
dFR5cGVDb250ZW50RWRpdGFibGU7CiAKICAgICByZXR1cm4gV2ViVGV4dElucHV0VHlwZU5vbmU7
CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>141864</attachid>
            <date>2012-05-14 23:53:06 -0700</date>
            <delta_ts>2012-05-15 14:47:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-86440-20120514235305.patch</filename>
            <type>text/plain</type>
            <size>13163</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiAxMTcwMjkpCisrKyBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIw
IEBACisyMDEyLTA1LTE0ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgW0Nocm9taXVtXSBJbXBsZW1lbnQgV2ViVmlld0ltcGw6OnRleHRJbnB1dEluZm8oKSBmb3Ig
QW5kcm9pZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
ODY0NDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IHB1YmxpYy9XZWJUZXh0SW5wdXRJbmZvLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAg
ICAgICAgKFdlYlRleHRJbnB1dEluZm8pOgorICAgICAgICAoV2ViS2l0OjpXZWJUZXh0SW5wdXRJ
bmZvOjpXZWJUZXh0SW5wdXRJbmZvKToKKyAgICAgICAgKFdlYktpdDo6b3BlcmF0b3I9PSk6Cisg
ICAgICAgIChXZWJLaXQ6Om9wZXJhdG9yIT0pOgorICAgICAgICAqIHB1YmxpYy9XZWJUZXh0SW5w
dXRUeXBlLmg6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViVmlld0ltcGw6OnRleHRJbnB1dEluZm8pOgorCiAyMDEyLTA1LTE0ICBHYXZpbiBQZXRl
cnMgIDxnYXZpbnBAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEFkZCBQcmVyZW5kZXJlciwgUHJl
cmVuZGVySGFuZGxlIGFuZCBhIGNocm9taXVtIGludGVyZmFjZSBmb3IgUHJlcmVuZGVyaW5nLgpJ
bmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVGV4dElucHV0SW5mby5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlRleHRJbnB1dElu
Zm8uaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlRl
eHRJbnB1dEluZm8uaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4MiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElU
UyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwor
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgV2ViVGV4dElucHV0SW5mb19oCisjZGVmaW5lIFdlYlRleHRJbnB1dEluZm9faAorCisjaW5j
bHVkZSAiV2ViVGV4dElucHV0VHlwZS5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlN0cmluZy5o
IgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RydWN0IFdlYlRleHRJbnB1dEluZm8geworCisg
ICAgV2ViVGV4dElucHV0VHlwZSB0eXBlOworCisgICAgLy8gVGhlIHZhbHVlIG9mIHRoZSBjdXJy
ZW50bHkgZm9jdXNlZCBpbnB1dCBmaWVsZC4KKyAgICBXZWJTdHJpbmcgdmFsdWU7CisKKyAgICAv
LyBUaGUgY3Vyc29yIHBvc2l0aW9uIG9mIHRoZSBjdXJyZW50IHNlbGVjdGlvbiBzdGFydCwgb3Ig
dGhlIGNhcmV0IHBvc2l0aW9uCisgICAgLy8gaWYgbm90aGluZyBpcyBzZWxlY3RlZC4KKyAgICBp
bnQgc2VsZWN0aW9uU3RhcnQ7CisKKyAgICAvLyBUaGUgY3Vyc29yIHBvc2l0aW9uIG9mIHRoZSBj
dXJyZW50IHNlbGVjdGlvbiBlbmQsIG9yIHRoZSBjYXJldCBwb3NpdGlvbgorICAgIC8vIGlmIG5v
dGhpbmcgaXMgc2VsZWN0ZWQuCisgICAgaW50IHNlbGVjdGlvbkVuZDsKKworICAgIC8vIFRoZSBz
dGFydCBwb3NpdGlvbiBvZiB0aGUgY3VycmVudCBjb21wb3NpdGlvbiwgb3IgLTEgaWYgdGhlcmUg
aXMgbm9uZS4KKyAgICBpbnQgY29tcG9zaXRpb25TdGFydDsKKworICAgIC8vIFRoZSBlbmQgcG9z
aXRpb24gb2YgdGhlIGN1cnJlbnQgY29tcG9zaXRpb24sIG9yIC0xIGlmIHRoZXJlIGlzIG5vbmUu
CisgICAgaW50IGNvbXBvc2l0aW9uRW5kOworCisgICAgV2ViVGV4dElucHV0SW5mbygpCisgICAg
ICAgIDogdHlwZShXZWJUZXh0SW5wdXRUeXBlTm9uZSkKKyAgICAgICAgLCBzZWxlY3Rpb25TdGFy
dCgwKQorICAgICAgICAsIHNlbGVjdGlvbkVuZCgwKQorICAgICAgICAsIGNvbXBvc2l0aW9uU3Rh
cnQoLTEpCisgICAgICAgICwgY29tcG9zaXRpb25FbmQoLTEpCisgICAgeworICAgIH0KK307CisK
K2lubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgV2ViVGV4dElucHV0SW5mbyYgYSwgY29uc3Qg
V2ViVGV4dElucHV0SW5mbyYgYikKK3sKKyAgICByZXR1cm4gYS50eXBlID09IGIudHlwZQorICAg
ICAgICAmJiBhLnZhbHVlID09IGIudmFsdWUKKyAgICAgICAgJiYgYS5zZWxlY3Rpb25TdGFydCA9
PSBiLnNlbGVjdGlvblN0YXJ0CisgICAgICAgICYmIGEuc2VsZWN0aW9uRW5kID09IGIuc2VsZWN0
aW9uRW5kCisgICAgICAgICYmIGEuY29tcG9zaXRpb25TdGFydCA9PSBiLmNvbXBvc2l0aW9uU3Rh
cnQKKyAgICAgICAgJiYgYS5jb21wb3NpdGlvbkVuZCA9PSBiLmNvbXBvc2l0aW9uRW5kOworfQor
CitpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFdlYlRleHRJbnB1dEluZm8mIGEsIGNvbnN0
IFdlYlRleHRJbnB1dEluZm8mIGIpCit7CisgICAgcmV0dXJuICEoYSA9PSBiKTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViVGV4dElucHV0VHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYlRleHRJbnB1dFR5cGUuaAkocmV2aXNpb24gMTE3MDI5KQorKysg
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVGV4dElucHV0VHlwZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zOSw2ICszOSw4IEBAIGVudW0gV2ViVGV4dElucHV0VHlwZSB7CiAKICAgICAv
LyBJbnB1dCBjYXJldCBpcyBpbiBhIG5vcm1hbCBlZGl0YWJsZSBub2RlLCBhbnkgaW5wdXQgbWV0
aG9kIGNhbiBiZSB1c2VkLgogICAgIFdlYlRleHRJbnB1dFR5cGVUZXh0LAorICAgIFdlYlRleHRJ
bnB1dFR5cGVUZXh0QXJlYSwKKyAgICBXZWJUZXh0SW5wdXRUeXBlQ29udGVudEVkaXRhYmxlLAog
CiAgICAgLy8gSW5wdXQgY2FyZXQgaXMgaW4gYSBzcGVjaWZpYyBpbnB1dCBmaWVsZCwgYW5kIGlu
cHV0IG1ldGhvZCBtYXkgYmUgdXNlZAogICAgIC8vIG9ubHkgaWYgaXQncyBzdWl0YWJsZSBmb3Ig
dGhlIHNwZWNpZmljIGlucHV0IGZpZWxkLgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViV2lkZ2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViV2lkZ2V0LmgJKHJldmlzaW9uIDExNzAyOSkKKysrIFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYldpZGdldC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBA
CiAjZGVmaW5lIFdlYldpZGdldF9oCiAKICNpbmNsdWRlICJXZWJDb21wb3NpdGlvblVuZGVybGlu
ZS5oIgorI2luY2x1ZGUgIldlYlRleHRJbnB1dEluZm8uaCIKICNpbmNsdWRlICJXZWJUZXh0SW5w
dXRUeXBlLmgiCiAjaW5jbHVkZSAiV2ViVGV4dERpcmVjdGlvbi5oIgogI2luY2x1ZGUgInBsYXRm
b3JtL1dlYkNhbnZhcy5oIgpAQCAtMTcwLDggKzE3MSwxMiBAQCBwdWJsaWM6CiAgICAgLy8gcmV0
dXJucyBmYWxzZSBvbiBmYWlsdXJlLgogICAgIHZpcnR1YWwgYm9vbCBjb21wb3NpdGlvblJhbmdl
KHNpemVfdCogbG9jYXRpb24sIHNpemVfdCogbGVuZ3RoKSB7IHJldHVybiBmYWxzZTsgfQogCisg
ICAgLy8gUmV0dXJucyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY3VycmVudCB0ZXh0IGlucHV0IG9m
IHRoaXMgV2ViV2lkZ2V0LgorICAgIHZpcnR1YWwgV2ViVGV4dElucHV0SW5mbyB0ZXh0SW5wdXRJ
bmZvKCkgeyByZXR1cm4gV2ViVGV4dElucHV0SW5mbygpOyB9CisKICAgICAvLyBSZXR1cm5zIHRo
ZSBjdXJyZW50IHRleHQgaW5wdXQgdHlwZSBvZiB0aGlzIFdlYldpZGdldC4KLSAgICB2aXJ0dWFs
IFdlYlRleHRJbnB1dFR5cGUgdGV4dElucHV0VHlwZSgpIHsgcmV0dXJuIFdlYktpdDo6V2ViVGV4
dElucHV0VHlwZU5vbmU7IH0KKyAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgbWV0aG9kLiBJdCdz
IHJlZHVuZGFudCB3aXRoIHRleHRJbnB1dEluZm8oKS4KKyAgICB2aXJ0dWFsIFdlYlRleHRJbnB1
dFR5cGUgdGV4dElucHV0VHlwZSgpIHsgcmV0dXJuIFdlYlRleHRJbnB1dFR5cGVOb25lOyB9CiAK
ICAgICAvLyBSZXR1cm5zIHRoZSBzdGFydCBhbmQgZW5kIGJvdW5kcyBvZiB0aGUgY3VycmVudCBz
ZWxlY3Rpb24uCiAgICAgLy8gSWYgdGhlIHNlbGVjdGlvbiByYW5nZSBpcyBlbXB0eSwgaXQgcmV0
dXJucyB0aGUgY2FyZXQgYm91bmRzLgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViVmlld0ltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlZpZXdJbXBsLmNwcAkocmV2aXNpb24gMTE3MDI5KQorKysgU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsNiArMTEzLDcg
QEAKICNpbmNsdWRlICJTcGVlY2hJbnB1dENsaWVudEltcGwuaCIKICNpbmNsdWRlICJTcGVlY2hS
ZWNvZ25pdGlvbkNsaWVudFByb3h5LmgiCiAjaW5jbHVkZSAiU3R5bGVSZXNvbHZlci5oIgorI2lu
Y2x1ZGUgIlRleHQuaCIKICNpbmNsdWRlICJUZXh0RmllbGREZWNvcmF0b3JJbXBsLmgiCiAjaW5j
bHVkZSAiVGV4dEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKQEAgLTE0MCw2ICsxNDEs
NyBAQAogI2luY2x1ZGUgIldlYlJhbmdlLmgiCiAjaW5jbHVkZSAiV2ViUnVudGltZUZlYXR1cmVz
LmgiCiAjaW5jbHVkZSAiV2ViU2V0dGluZ3NJbXBsLmgiCisjaW5jbHVkZSAiV2ViVGV4dElucHV0
SW5mby5oIgogI2luY2x1ZGUgIldlYlZpZXdDbGllbnQuaCIKICNpbmNsdWRlICJXaGVlbEV2ZW50
LmgiCiAjaW5jbHVkZSAiY2MvQ0NQcm94eS5oIgpAQCAtMTg3Myw2MiArMTg3NSwxMTUgQEAgYm9v
bCBXZWJWaWV3SW1wbDo6Y29tcG9zaXRpb25SYW5nZShzaXplXwogICAgIHJldHVybiBmYWxzZTsK
IH0KIAorV2ViVGV4dElucHV0SW5mbyBXZWJWaWV3SW1wbDo6dGV4dElucHV0SW5mbygpCit7Cisg
ICAgV2ViVGV4dElucHV0SW5mbyBpbmZvOworCisgICAgRnJhbWUqIGZvY3VzZWQgPSBmb2N1c2Vk
V2ViQ29yZUZyYW1lKCk7CisgICAgaWYgKCFmb2N1c2VkKQorICAgICAgICByZXR1cm4gaW5mbzsK
KworICAgIEVkaXRvciogZWRpdG9yID0gZm9jdXNlZC0+ZWRpdG9yKCk7CisgICAgaWYgKCFlZGl0
b3IgfHwgIWVkaXRvci0+Y2FuRWRpdCgpKQorICAgICAgICByZXR1cm4gaW5mbzsKKworICAgIEZy
YW1lU2VsZWN0aW9uKiBzZWxlY3Rpb24gPSBmb2N1c2VkLT5zZWxlY3Rpb24oKTsKKyAgICBpZiAo
IXNlbGVjdGlvbikKKyAgICAgICAgcmV0dXJuIGluZm87CisKKyAgICBOb2RlKiBub2RlID0gZm9j
dXNlZFdlYkNvcmVOb2RlKCk7CisgICAgaWYgKCFub2RlKQorICAgICAgICByZXR1cm4gaW5mbzsK
KworICAgIGluZm8udHlwZSA9IHRleHRJbnB1dFR5cGUoKTsKKyAgICBpZiAoaW5mby50eXBlID09
IFdlYlRleHRJbnB1dFR5cGVOb25lKQorICAgICAgICByZXR1cm4gaW5mbzsKKworICAgIGlmIChu
b2RlLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6dGV4dGFyZWFUYWcpKQorICAgICAgICBpbmZvLnZh
bHVlID0gc3RhdGljX2Nhc3Q8SFRNTFRleHRBcmVhRWxlbWVudCo+KG5vZGUpLT52YWx1ZSgpOwor
ICAgIGVsc2UgaWYgKG5vZGUtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjppbnB1dFRhZykpCisgICAg
ICAgIGluZm8udmFsdWUgPSBzdGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4obm9kZSktPnZh
bHVlKCk7CisgICAgZWxzZSBpZiAobm9kZS0+c2hvdWxkVXNlSW5wdXRNZXRob2QoKSkKKyAgICAg
ICAgaW5mby52YWx1ZSA9IG5vZGUtPm5vZGVWYWx1ZSgpOworICAgIGVsc2UKKyAgICAgICAgcmV0
dXJuIGluZm87CisKKyAgICBpZiAoaW5mby52YWx1ZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVy
biBpbmZvOworCisgICAgaWYgKG5vZGUtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjp0ZXh0YXJlYVRh
ZykgfHwgbm9kZS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OmlucHV0VGFnKSkgeworICAgICAgICBI
VE1MVGV4dEZvcm1Db250cm9sRWxlbWVudCogZm9ybUVsZW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1M
VGV4dEZvcm1Db250cm9sRWxlbWVudCo+KG5vZGUpOworICAgICAgICBpbmZvLnNlbGVjdGlvblN0
YXJ0ID0gZm9ybUVsZW1lbnQtPnNlbGVjdGlvblN0YXJ0KCk7CisgICAgICAgIGluZm8uc2VsZWN0
aW9uRW5kID0gZm9ybUVsZW1lbnQtPnNlbGVjdGlvbkVuZCgpOworICAgICAgICBpZiAoZWRpdG9y
LT5oYXNDb21wb3NpdGlvbigpKSB7CisgICAgICAgICAgICBpbmZvLmNvbXBvc2l0aW9uU3RhcnQg
PSBmb3JtRWxlbWVudC0+aW5kZXhGb3JWaXNpYmxlUG9zaXRpb24oUG9zaXRpb24oZWRpdG9yLT5j
b21wb3NpdGlvbk5vZGUoKSwgZWRpdG9yLT5jb21wb3NpdGlvblN0YXJ0KCkpKTsKKyAgICAgICAg
ICAgIGluZm8uY29tcG9zaXRpb25FbmQgPSBmb3JtRWxlbWVudC0+aW5kZXhGb3JWaXNpYmxlUG9z
aXRpb24oUG9zaXRpb24oZWRpdG9yLT5jb21wb3NpdGlvbk5vZGUoKSwgZWRpdG9yLT5jb21wb3Np
dGlvbkVuZCgpKSk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBpbmZvLnNlbGVj
dGlvblN0YXJ0ID0gc2VsZWN0aW9uLT5zdGFydCgpLmNvbXB1dGVPZmZzZXRJbkNvbnRhaW5lck5v
ZGUoKTsKKyAgICAgICAgaW5mby5zZWxlY3Rpb25FbmQgPSBzZWxlY3Rpb24tPmVuZCgpLmNvbXB1
dGVPZmZzZXRJbkNvbnRhaW5lck5vZGUoKTsKKyAgICAgICAgaWYgKGVkaXRvci0+aGFzQ29tcG9z
aXRpb24oKSkgeworICAgICAgICAgICAgaW5mby5jb21wb3NpdGlvblN0YXJ0ID0gc3RhdGljX2Nh
c3Q8aW50PihlZGl0b3ItPmNvbXBvc2l0aW9uU3RhcnQoKSk7CisgICAgICAgICAgICBpbmZvLmNv
bXBvc2l0aW9uRW5kID0gc3RhdGljX2Nhc3Q8aW50PihlZGl0b3ItPmNvbXBvc2l0aW9uRW5kKCkp
OworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIGluZm87Cit9CisKIFdlYlRleHRJbnB1
dFR5cGUgV2ViVmlld0ltcGw6OnRleHRJbnB1dFR5cGUoKQogewogICAgIE5vZGUqIG5vZGUgPSBm
b2N1c2VkV2ViQ29yZU5vZGUoKTsKICAgICBpZiAoIW5vZGUpCiAgICAgICAgIHJldHVybiBXZWJU
ZXh0SW5wdXRUeXBlTm9uZTsKIAotICAgIGlmIChub2RlLT5ub2RlVHlwZSgpID09IE5vZGU6OkVM
RU1FTlRfTk9ERSkgewotICAgICAgICBFbGVtZW50KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8RWxl
bWVudCo+KG5vZGUpOwotICAgICAgICBpZiAoZWxlbWVudC0+aGFzTG9jYWxOYW1lKEhUTUxOYW1l
czo6aW5wdXRUYWcpKSB7Ci0gICAgICAgICAgICBIVE1MSW5wdXRFbGVtZW50KiBpbnB1dCA9IHN0
YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihlbGVtZW50KTsKKyAgICBpZiAobm9kZS0+aGFz
VGFnTmFtZShIVE1MTmFtZXM6OmlucHV0VGFnKSkgeworICAgICAgICBIVE1MSW5wdXRFbGVtZW50
KiBpbnB1dCA9IHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihub2RlKTsKIAotICAgICAg
ICAgICAgaWYgKGlucHV0LT5yZWFkT25seSgpIHx8IGlucHV0LT5kaXNhYmxlZCgpKQotICAgICAg
ICAgICAgICAgIHJldHVybiBXZWJUZXh0SW5wdXRUeXBlTm9uZTsKKyAgICAgICAgaWYgKGlucHV0
LT5yZWFkT25seSgpIHx8IGlucHV0LT5kaXNhYmxlZCgpKQorICAgICAgICAgICAgcmV0dXJuIFdl
YlRleHRJbnB1dFR5cGVOb25lOwogCi0gICAgICAgICAgICBpZiAoaW5wdXQtPmlzUGFzc3dvcmRG
aWVsZCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBXZWJUZXh0SW5wdXRUeXBlUGFzc3dvcmQ7
Ci0gICAgICAgICAgICBpZiAoaW5wdXQtPmlzU2VhcmNoRmllbGQoKSkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gV2ViVGV4dElucHV0VHlwZVNlYXJjaDsKLSAgICAgICAgICAgIGlmIChpbnB1dC0+
aXNFbWFpbEZpZWxkKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdlYlRleHRJbnB1dFR5cGVF
bWFpbDsKLSAgICAgICAgICAgIGlmIChpbnB1dC0+aXNOdW1iZXJGaWVsZCgpKQotICAgICAgICAg
ICAgICAgIHJldHVybiBXZWJUZXh0SW5wdXRUeXBlTnVtYmVyOwotICAgICAgICAgICAgaWYgKGlu
cHV0LT5pc1RlbGVwaG9uZUZpZWxkKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdlYlRleHRJ
bnB1dFR5cGVUZWxlcGhvbmU7Ci0gICAgICAgICAgICBpZiAoaW5wdXQtPmlzVVJMRmllbGQoKSkK
LSAgICAgICAgICAgICAgICByZXR1cm4gV2ViVGV4dElucHV0VHlwZVVSTDsKLSAgICAgICAgICAg
IGlmIChpbnB1dC0+aXNEYXRlRmllbGQoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gV2ViVGV4
dElucHV0VHlwZURhdGU7Ci0gICAgICAgICAgICBpZiAoaW5wdXQtPmlzRGF0ZVRpbWVGaWVsZCgp
KQotICAgICAgICAgICAgICAgIHJldHVybiBXZWJUZXh0SW5wdXRUeXBlRGF0ZVRpbWU7Ci0gICAg
ICAgICAgICBpZiAoaW5wdXQtPmlzRGF0ZVRpbWVMb2NhbEZpZWxkKCkpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIFdlYlRleHRJbnB1dFR5cGVEYXRlVGltZUxvY2FsOwotICAgICAgICAgICAgaWYg
KGlucHV0LT5pc01vbnRoRmllbGQoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gV2ViVGV4dElu
cHV0VHlwZU1vbnRoOwotICAgICAgICAgICAgaWYgKGlucHV0LT5pc1RpbWVGaWVsZCgpKQotICAg
ICAgICAgICAgICAgIHJldHVybiBXZWJUZXh0SW5wdXRUeXBlVGltZTsKLSAgICAgICAgICAgIGlm
IChpbnB1dC0+aXNXZWVrRmllbGQoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gV2ViVGV4dElu
cHV0VHlwZVdlZWs7Ci0gICAgICAgICAgICBpZiAoaW5wdXQtPmlzVGV4dEZpZWxkKCkpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIFdlYlRleHRJbnB1dFR5cGVUZXh0OworICAgICAgICBpZiAoaW5w
dXQtPmlzUGFzc3dvcmRGaWVsZCgpKQorICAgICAgICAgICAgcmV0dXJuIFdlYlRleHRJbnB1dFR5
cGVQYXNzd29yZDsKKyAgICAgICAgaWYgKGlucHV0LT5pc1NlYXJjaEZpZWxkKCkpCisgICAgICAg
ICAgICByZXR1cm4gV2ViVGV4dElucHV0VHlwZVNlYXJjaDsKKyAgICAgICAgaWYgKGlucHV0LT5p
c0VtYWlsRmllbGQoKSkKKyAgICAgICAgICAgIHJldHVybiBXZWJUZXh0SW5wdXRUeXBlRW1haWw7
CisgICAgICAgIGlmIChpbnB1dC0+aXNOdW1iZXJGaWVsZCgpKQorICAgICAgICAgICAgcmV0dXJu
IFdlYlRleHRJbnB1dFR5cGVOdW1iZXI7CisgICAgICAgIGlmIChpbnB1dC0+aXNUZWxlcGhvbmVG
aWVsZCgpKQorICAgICAgICAgICAgcmV0dXJuIFdlYlRleHRJbnB1dFR5cGVUZWxlcGhvbmU7Cisg
ICAgICAgIGlmIChpbnB1dC0+aXNVUkxGaWVsZCgpKQorICAgICAgICAgICAgcmV0dXJuIFdlYlRl
eHRJbnB1dFR5cGVVUkw7CisgICAgICAgIGlmIChpbnB1dC0+aXNEYXRlRmllbGQoKSkKKyAgICAg
ICAgICAgIHJldHVybiBXZWJUZXh0SW5wdXRUeXBlRGF0ZTsKKyAgICAgICAgaWYgKGlucHV0LT5p
c0RhdGVUaW1lRmllbGQoKSkKKyAgICAgICAgICAgIHJldHVybiBXZWJUZXh0SW5wdXRUeXBlRGF0
ZVRpbWU7CisgICAgICAgIGlmIChpbnB1dC0+aXNEYXRlVGltZUxvY2FsRmllbGQoKSkKKyAgICAg
ICAgICAgIHJldHVybiBXZWJUZXh0SW5wdXRUeXBlRGF0ZVRpbWVMb2NhbDsKKyAgICAgICAgaWYg
KGlucHV0LT5pc01vbnRoRmllbGQoKSkKKyAgICAgICAgICAgIHJldHVybiBXZWJUZXh0SW5wdXRU
eXBlTW9udGg7CisgICAgICAgIGlmIChpbnB1dC0+aXNUaW1lRmllbGQoKSkKKyAgICAgICAgICAg
IHJldHVybiBXZWJUZXh0SW5wdXRUeXBlVGltZTsKKyAgICAgICAgaWYgKGlucHV0LT5pc1dlZWtG
aWVsZCgpKQorICAgICAgICAgICAgcmV0dXJuIFdlYlRleHRJbnB1dFR5cGVXZWVrOworICAgICAg
ICBpZiAoaW5wdXQtPmlzVGV4dEZpZWxkKCkpCisgICAgICAgICAgICByZXR1cm4gV2ViVGV4dElu
cHV0VHlwZVRleHQ7CiAKLSAgICAgICAgICAgIHJldHVybiBXZWJUZXh0SW5wdXRUeXBlTm9uZTsK
LSAgICAgICAgfQorICAgICAgICByZXR1cm4gV2ViVGV4dElucHV0VHlwZU5vbmU7CisgICAgfQog
Ci0gICAgICAgIGlmIChlbGVtZW50LT5oYXNMb2NhbE5hbWUoSFRNTE5hbWVzOjp0ZXh0YXJlYVRh
ZykpIHsKLSAgICAgICAgICAgIEhUTUxUZXh0QXJlYUVsZW1lbnQqIHRleHRhcmVhID0gc3RhdGlj
X2Nhc3Q8SFRNTFRleHRBcmVhRWxlbWVudCo+KGVsZW1lbnQpOworICAgIGlmIChub2RlLT5oYXNU
YWdOYW1lKEhUTUxOYW1lczo6dGV4dGFyZWFUYWcpKSB7CisgICAgICAgIEhUTUxUZXh0QXJlYUVs
ZW1lbnQqIHRleHRhcmVhID0gc3RhdGljX2Nhc3Q8SFRNTFRleHRBcmVhRWxlbWVudCo+KG5vZGUp
OwogCi0gICAgICAgICAgICBpZiAodGV4dGFyZWEtPnJlYWRPbmx5KCkgfHwgdGV4dGFyZWEtPmRp
c2FibGVkKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdlYlRleHRJbnB1dFR5cGVOb25lOwot
ICAgICAgICAgICAgcmV0dXJuIFdlYlRleHRJbnB1dFR5cGVUZXh0OwotICAgICAgICB9CisgICAg
ICAgIGlmICh0ZXh0YXJlYS0+cmVhZE9ubHkoKSB8fCB0ZXh0YXJlYS0+ZGlzYWJsZWQoKSkKKyAg
ICAgICAgICAgIHJldHVybiBXZWJUZXh0SW5wdXRUeXBlTm9uZTsKKworICAgICAgICByZXR1cm4g
V2ViVGV4dElucHV0VHlwZVRleHRBcmVhOwogICAgIH0KIAotICAgIC8vIEZvciBvdGhlciBzaXR1
YXRpb25zLgogICAgIGlmIChub2RlLT5zaG91bGRVc2VJbnB1dE1ldGhvZCgpKQotICAgICAgICBy
ZXR1cm4gV2ViVGV4dElucHV0VHlwZVRleHQ7CisgICAgICAgIHJldHVybiBXZWJUZXh0SW5wdXRU
eXBlQ29udGVudEVkaXRhYmxlOwogCiAgICAgcmV0dXJuIFdlYlRleHRJbnB1dFR5cGVOb25lOwog
fQpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCShyZXZpc2lv
biAxMTcwMjkpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xNDYsNiArMTQ2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9v
bCBjb25maXJtQ29tcG9zaXRpb24oKTsKICAgICB2aXJ0dWFsIGJvb2wgY29uZmlybUNvbXBvc2l0
aW9uKGNvbnN0IFdlYlN0cmluZyYgdGV4dCk7CiAgICAgdmlydHVhbCBib29sIGNvbXBvc2l0aW9u
UmFuZ2Uoc2l6ZV90KiBsb2NhdGlvbiwgc2l6ZV90KiBsZW5ndGgpOworICAgIHZpcnR1YWwgV2Vi
VGV4dElucHV0SW5mbyB0ZXh0SW5wdXRJbmZvKCk7CiAgICAgdmlydHVhbCBXZWJUZXh0SW5wdXRU
eXBlIHRleHRJbnB1dFR5cGUoKTsKICAgICB2aXJ0dWFsIGJvb2wgc2VsZWN0aW9uQm91bmRzKFdl
YlJlY3QmIHN0YXJ0LCBXZWJSZWN0JiBlbmQpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBjYXJl
dE9yU2VsZWN0aW9uUmFuZ2Uoc2l6ZV90KiBsb2NhdGlvbiwgc2l6ZV90KiBsZW5ndGgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>142064</attachid>
            <date>2012-05-15 14:47:27 -0700</date>
            <delta_ts>2012-05-15 18:35:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-86440-20120515144726.patch</filename>
            <type>text/plain</type>
            <size>14601</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiAxMTcxNjUpCisrKyBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1
IEBACisyMDEyLTA1LTE1ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgW0Nocm9taXVtXSBJbXBsZW1lbnQgV2ViVmlld0ltcGw6OnRleHRJbnB1dEluZm8oKSBmb3Ig
QW5kcm9pZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
ODY0NDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
aGlzIHBhdGNoIGFkZHMgV2ViVmlldzo6dGV4dElucHV0SW5mbygpLCB3aGljaCBkZXNjcmliZXMg
dGhlIHRleHQKKyAgICAgICAgaW5wdXQgdGhhdCBjdXJyZW50bHkgaGFzIGZvY3VzLiAgQW5kcm9p
ZCBpcyBwbGFubmluZyB0byB1c2UgdGhpcyB0bworICAgICAgICBkZXRlcm1pbmUgd2hhdCBzb3J0
IG9mIGtleWJvYXJkIG9yIHRleHQgZW50cnkgVUkgdG8gc2hvdy4gIFRoaXMgQVBJCisgICAgICAg
IHN1YnN1bWVzIHRoZSB0ZXh0SW5wdXRUeXBlKCkgQVBJLCB3aGljaCB3aWxsIGJlIHJlbW92ZWQg
b25jZSB0aGUKKyAgICAgICAgY2xpZW50cyBoYXZlIGJlZW4gdXBkYXRlZC4KKworICAgICAgICAq
IFdlYktpdC5neXA6CisgICAgICAgICogcHVibGljL1dlYlRleHRJbnB1dEluZm8uaDogQWRkZWQu
CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViVGV4dElucHV0SW5mbyk6CisgICAgICAg
IChXZWJLaXQ6OldlYlRleHRJbnB1dEluZm86OldlYlRleHRJbnB1dEluZm8pOgorICAgICAgICAo
V2ViS2l0OjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdlYktpdDo6b3BlcmF0b3IhPSk6CisgICAg
ICAgICogcHVibGljL1dlYlRleHRJbnB1dFR5cGUuaDoKKyAgICAgICAgKiBwdWJsaWMvV2ViV2lk
Z2V0Lmg6CisgICAgICAgIChXZWJXaWRnZXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJXaWRnZXQ6
OnRleHRJbnB1dEluZm8pOgorICAgICAgICAoV2ViS2l0OjpXZWJXaWRnZXQ6OnRleHRJbnB1dFR5
cGUpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlZpZXdJbXBsOjp0ZXh0SW5wdXRJbmZvKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlZpZXdJbXBsOjp0ZXh0SW5wdXRUeXBlKToKKyAgICAgICAgKiBzcmMvV2ViVmll
d0ltcGwuaDoKKyAgICAgICAgKFdlYlZpZXdJbXBsKToKKwogMjAxMi0wNS0xNSAgVGVycnkgQW5k
ZXJzb24gIDx0ZGFuZGVyc29uQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIENv
bXB1dGUgdGhlIGJlc3QgdGFyZ2V0IG5vZGUgb24gYSBHZXN0dXJlVGFwIGV2ZW50CkluZGV4OiBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCShyZXZpc2lvbiAxMTcwODgpCisrKyBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL1dlYktpdC5neXAJKHdvcmtpbmcgY29weSkKQEAgLTI3MSw2ICsyNzEsNyBA
QAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViVGV4dENoZWNraW5nUmVzdWx0LmgnLAogICAg
ICAgICAgICAgICAgICdwdWJsaWMvV2ViVGV4dERpcmVjdGlvbi5oJywKICAgICAgICAgICAgICAg
ICAncHVibGljL1dlYlRleHRGaWVsZERlY29yYXRvckNsaWVudC5oJywKKyAgICAgICAgICAgICAg
ICAncHVibGljL1dlYlRleHRJbnB1dEluZm8uaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9X
ZWJUZXh0SW5wdXRUeXBlLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViVGV4dFJ1bi5o
JywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYlRpbWVSYW5nZS5oJywKQEAgLTY1Miw2ICs2
NTMsNyBAQAogICAgICAgICAgICAgICAgICdzcmMvV2ViU3RvcmFnZVF1b3RhQ2FsbGJhY2tzSW1w
bC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViU3RvcmFnZVF1b3RhQ2FsbGJhY2tzSW1w
bC5oJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYlN1cnJvdW5kaW5nVGV4dC5jcHAnLAorICAg
ICAgICAgICAgICAgICdzcmMvV2ViVGV4dElucHV0SW5mby5jcHAnLAogICAgICAgICAgICAgICAg
ICdzcmMvV2ViVGV4dFJ1bi5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViVVJMTG9hZFRp
bWluZy5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViU2NvcGVkVXNlckdlc3R1cmUuY3Bw
JywKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlRleHRJbnB1dEluZm8u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJUZXh0SW5w
dXRJbmZvLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJUZXh0SW5wdXRJbmZvLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzggQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIFdlYlRleHRJbnB1dEluZm9faAorI2RlZmluZSBXZWJUZXh0SW5wdXRJbmZvX2gKKwor
I2luY2x1ZGUgIldlYlRleHRJbnB1dFR5cGUuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJTdHJp
bmcuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0cnVjdCBXZWJUZXh0SW5wdXRJbmZvIHsK
KyAgICBXZWJUZXh0SW5wdXRUeXBlIHR5cGU7CisKKyAgICAvLyBUaGUgdmFsdWUgb2YgdGhlIGN1
cnJlbnRseSBmb2N1c2VkIGlucHV0IGZpZWxkLgorICAgIFdlYlN0cmluZyB2YWx1ZTsKKworICAg
IC8vIFRoZSBjdXJzb3IgcG9zaXRpb24gb2YgdGhlIGN1cnJlbnQgc2VsZWN0aW9uIHN0YXJ0LCBv
ciB0aGUgY2FyZXQgcG9zaXRpb24KKyAgICAvLyBpZiBub3RoaW5nIGlzIHNlbGVjdGVkLgorICAg
IGludCBzZWxlY3Rpb25TdGFydDsKKworICAgIC8vIFRoZSBjdXJzb3IgcG9zaXRpb24gb2YgdGhl
IGN1cnJlbnQgc2VsZWN0aW9uIGVuZCwgb3IgdGhlIGNhcmV0IHBvc2l0aW9uCisgICAgLy8gaWYg
bm90aGluZyBpcyBzZWxlY3RlZC4KKyAgICBpbnQgc2VsZWN0aW9uRW5kOworCisgICAgLy8gVGhl
IHN0YXJ0IHBvc2l0aW9uIG9mIHRoZSBjdXJyZW50IGNvbXBvc2l0aW9uLCBvciAtMSBpZiB0aGVy
ZSBpcyBub25lLgorICAgIGludCBjb21wb3NpdGlvblN0YXJ0OworCisgICAgLy8gVGhlIGVuZCBw
b3NpdGlvbiBvZiB0aGUgY3VycmVudCBjb21wb3NpdGlvbiwgb3IgLTEgaWYgdGhlcmUgaXMgbm9u
ZS4KKyAgICBpbnQgY29tcG9zaXRpb25FbmQ7CisKKyAgICBXRUJLSVRfRVhQT1JUIGJvb2wgZXF1
YWxzKGNvbnN0IFdlYlRleHRJbnB1dEluZm8mKSBjb25zdDsKKworICAgIFdlYlRleHRJbnB1dElu
Zm8oKQorICAgICAgICA6IHR5cGUoV2ViVGV4dElucHV0VHlwZU5vbmUpCisgICAgICAgICwgc2Vs
ZWN0aW9uU3RhcnQoMCkKKyAgICAgICAgLCBzZWxlY3Rpb25FbmQoMCkKKyAgICAgICAgLCBjb21w
b3NpdGlvblN0YXJ0KC0xKQorICAgICAgICAsIGNvbXBvc2l0aW9uRW5kKC0xKQorICAgIHsKKyAg
ICB9Cit9OworCitpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFdlYlRleHRJbnB1dEluZm8m
IGEsIGNvbnN0IFdlYlRleHRJbnB1dEluZm8mIGIpCit7CisgICAgcmV0dXJuIGEuZXF1YWxzKGIp
OworfQorCitpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFdlYlRleHRJbnB1dEluZm8mIGEs
IGNvbnN0IFdlYlRleHRJbnB1dEluZm8mIGIpCit7CisgICAgcmV0dXJuICEoYSA9PSBiKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViVGV4dElucHV0VHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlRleHRJbnB1dFR5cGUuaAkocmV2aXNpb24gMTE3MDg4
KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVGV4dElucHV0VHlwZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw4IEBAIGVudW0gV2ViVGV4dElucHV0VHlwZSB7CiAK
ICAgICAvLyBJbnB1dCBjYXJldCBpcyBpbiBhIG5vcm1hbCBlZGl0YWJsZSBub2RlLCBhbnkgaW5w
dXQgbWV0aG9kIGNhbiBiZSB1c2VkLgogICAgIFdlYlRleHRJbnB1dFR5cGVUZXh0LAorICAgIFdl
YlRleHRJbnB1dFR5cGVUZXh0QXJlYSwKKyAgICBXZWJUZXh0SW5wdXRUeXBlQ29udGVudEVkaXRh
YmxlLAogCiAgICAgLy8gSW5wdXQgY2FyZXQgaXMgaW4gYSBzcGVjaWZpYyBpbnB1dCBmaWVsZCwg
YW5kIGlucHV0IG1ldGhvZCBtYXkgYmUgdXNlZAogICAgIC8vIG9ubHkgaWYgaXQncyBzdWl0YWJs
ZSBmb3IgdGhlIHNwZWNpZmljIGlucHV0IGZpZWxkLgpJbmRleDogU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViV2lkZ2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViV2lkZ2V0LmgJKHJldmlzaW9uIDExNzA4OCkKKysrIFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYldpZGdldC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw4ICsz
Miw4IEBACiAjZGVmaW5lIFdlYldpZGdldF9oCiAKICNpbmNsdWRlICJXZWJDb21wb3NpdGlvblVu
ZGVybGluZS5oIgotI2luY2x1ZGUgIldlYlRleHRJbnB1dFR5cGUuaCIKICNpbmNsdWRlICJXZWJU
ZXh0RGlyZWN0aW9uLmgiCisjaW5jbHVkZSAiV2ViVGV4dElucHV0SW5mby5oIgogI2luY2x1ZGUg
InBsYXRmb3JtL1dlYkNhbnZhcy5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYkNvbW1vbi5oIgog
I2luY2x1ZGUgInBsYXRmb3JtL1dlYlJlY3QuaCIKQEAgLTE3MCw4ICsxNzAsMTIgQEAgcHVibGlj
OgogICAgIC8vIHJldHVybnMgZmFsc2Ugb24gZmFpbHVyZS4KICAgICB2aXJ0dWFsIGJvb2wgY29t
cG9zaXRpb25SYW5nZShzaXplX3QqIGxvY2F0aW9uLCBzaXplX3QqIGxlbmd0aCkgeyByZXR1cm4g
ZmFsc2U7IH0KIAorICAgIC8vIFJldHVybnMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGN1cnJlbnQg
dGV4dCBpbnB1dCBvZiB0aGlzIFdlYldpZGdldC4KKyAgICB2aXJ0dWFsIFdlYlRleHRJbnB1dElu
Zm8gdGV4dElucHV0SW5mbygpIHsgcmV0dXJuIFdlYlRleHRJbnB1dEluZm8oKTsgfQorCiAgICAg
Ly8gUmV0dXJucyB0aGUgY3VycmVudCB0ZXh0IGlucHV0IHR5cGUgb2YgdGhpcyBXZWJXaWRnZXQu
Ci0gICAgdmlydHVhbCBXZWJUZXh0SW5wdXRUeXBlIHRleHRJbnB1dFR5cGUoKSB7IHJldHVybiBX
ZWJLaXQ6OldlYlRleHRJbnB1dFR5cGVOb25lOyB9CisgICAgLy8gRklYTUU6IFJlbW92ZSB0aGlz
IG1ldGhvZC4gSXQncyByZWR1bmRhbnQgd2l0aCB0ZXh0SW5wdXRJbmZvKCkuCisgICAgdmlydHVh
bCBXZWJUZXh0SW5wdXRUeXBlIHRleHRJbnB1dFR5cGUoKSB7IHJldHVybiBXZWJUZXh0SW5wdXRU
eXBlTm9uZTsgfQogCiAgICAgLy8gUmV0dXJucyB0aGUgc3RhcnQgYW5kIGVuZCBib3VuZHMgb2Yg
dGhlIGN1cnJlbnQgc2VsZWN0aW9uLgogICAgIC8vIElmIHRoZSBzZWxlY3Rpb24gcmFuZ2UgaXMg
ZW1wdHksIGl0IHJldHVybnMgdGhlIGNhcmV0IGJvdW5kcy4KSW5kZXg6IFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAJKHJldmlzaW9uIDExNzA4OCkKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTEzLDYgKzExMyw3IEBACiAjaW5jbHVkZSAiU3BlZWNoSW5wdXRDbGllbnRJbXBsLmgiCiAjaW5j
bHVkZSAiU3BlZWNoUmVjb2duaXRpb25DbGllbnRQcm94eS5oIgogI2luY2x1ZGUgIlN0eWxlUmVz
b2x2ZXIuaCIKKyNpbmNsdWRlICJUZXh0LmgiCiAjaW5jbHVkZSAiVGV4dEZpZWxkRGVjb3JhdG9y
SW1wbC5oIgogI2luY2x1ZGUgIlRleHRJdGVyYXRvci5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCkBA
IC0xNDAsNiArMTQxLDcgQEAKICNpbmNsdWRlICJXZWJSYW5nZS5oIgogI2luY2x1ZGUgIldlYlJ1
bnRpbWVGZWF0dXJlcy5oIgogI2luY2x1ZGUgIldlYlNldHRpbmdzSW1wbC5oIgorI2luY2x1ZGUg
IldlYlRleHRJbnB1dEluZm8uaCIKICNpbmNsdWRlICJXZWJWaWV3Q2xpZW50LmgiCiAjaW5jbHVk
ZSAiV2hlZWxFdmVudC5oIgogI2luY2x1ZGUgImNjL0NDUHJveHkuaCIKQEAgLTE4NzMsNjIgKzE4
NzUsMTE1IEBAIGJvb2wgV2ViVmlld0ltcGw6OmNvbXBvc2l0aW9uUmFuZ2Uoc2l6ZV8KICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKK1dlYlRleHRJbnB1dEluZm8gV2ViVmlld0ltcGw6OnRleHRJbnB1
dEluZm8oKQoreworICAgIFdlYlRleHRJbnB1dEluZm8gaW5mbzsKKworICAgIEZyYW1lKiBmb2N1
c2VkID0gZm9jdXNlZFdlYkNvcmVGcmFtZSgpOworICAgIGlmICghZm9jdXNlZCkKKyAgICAgICAg
cmV0dXJuIGluZm87CisKKyAgICBFZGl0b3IqIGVkaXRvciA9IGZvY3VzZWQtPmVkaXRvcigpOwor
ICAgIGlmICghZWRpdG9yIHx8ICFlZGl0b3ItPmNhbkVkaXQoKSkKKyAgICAgICAgcmV0dXJuIGlu
Zm87CisKKyAgICBGcmFtZVNlbGVjdGlvbiogc2VsZWN0aW9uID0gZm9jdXNlZC0+c2VsZWN0aW9u
KCk7CisgICAgaWYgKCFzZWxlY3Rpb24pCisgICAgICAgIHJldHVybiBpbmZvOworCisgICAgTm9k
ZSogbm9kZSA9IGZvY3VzZWRXZWJDb3JlTm9kZSgpOworICAgIGlmICghbm9kZSkKKyAgICAgICAg
cmV0dXJuIGluZm87CisKKyAgICBpbmZvLnR5cGUgPSB0ZXh0SW5wdXRUeXBlKCk7CisgICAgaWYg
KGluZm8udHlwZSA9PSBXZWJUZXh0SW5wdXRUeXBlTm9uZSkKKyAgICAgICAgcmV0dXJuIGluZm87
CisKKyAgICBpZiAobm9kZS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OnRleHRhcmVhVGFnKSkKKyAg
ICAgICAgaW5mby52YWx1ZSA9IHN0YXRpY19jYXN0PEhUTUxUZXh0QXJlYUVsZW1lbnQqPihub2Rl
KS0+dmFsdWUoKTsKKyAgICBlbHNlIGlmIChub2RlLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6aW5w
dXRUYWcpKQorICAgICAgICBpbmZvLnZhbHVlID0gc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVu
dCo+KG5vZGUpLT52YWx1ZSgpOworICAgIGVsc2UgaWYgKG5vZGUtPnNob3VsZFVzZUlucHV0TWV0
aG9kKCkpCisgICAgICAgIGluZm8udmFsdWUgPSBub2RlLT5ub2RlVmFsdWUoKTsKKyAgICBlbHNl
CisgICAgICAgIHJldHVybiBpbmZvOworCisgICAgaWYgKGluZm8udmFsdWUuaXNFbXB0eSgpKQor
ICAgICAgICByZXR1cm4gaW5mbzsKKworICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKEhUTUxOYW1l
czo6dGV4dGFyZWFUYWcpIHx8IG5vZGUtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjppbnB1dFRhZykp
IHsKKyAgICAgICAgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQqIGZvcm1FbGVtZW50ID0gc3Rh
dGljX2Nhc3Q8SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQqPihub2RlKTsKKyAgICAgICAgaW5m
by5zZWxlY3Rpb25TdGFydCA9IGZvcm1FbGVtZW50LT5zZWxlY3Rpb25TdGFydCgpOworICAgICAg
ICBpbmZvLnNlbGVjdGlvbkVuZCA9IGZvcm1FbGVtZW50LT5zZWxlY3Rpb25FbmQoKTsKKyAgICAg
ICAgaWYgKGVkaXRvci0+aGFzQ29tcG9zaXRpb24oKSkgeworICAgICAgICAgICAgaW5mby5jb21w
b3NpdGlvblN0YXJ0ID0gZm9ybUVsZW1lbnQtPmluZGV4Rm9yVmlzaWJsZVBvc2l0aW9uKFBvc2l0
aW9uKGVkaXRvci0+Y29tcG9zaXRpb25Ob2RlKCksIGVkaXRvci0+Y29tcG9zaXRpb25TdGFydCgp
KSk7CisgICAgICAgICAgICBpbmZvLmNvbXBvc2l0aW9uRW5kID0gZm9ybUVsZW1lbnQtPmluZGV4
Rm9yVmlzaWJsZVBvc2l0aW9uKFBvc2l0aW9uKGVkaXRvci0+Y29tcG9zaXRpb25Ob2RlKCksIGVk
aXRvci0+Y29tcG9zaXRpb25FbmQoKSkpOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgaW5mby5zZWxlY3Rpb25TdGFydCA9IHNlbGVjdGlvbi0+c3RhcnQoKS5jb21wdXRlT2Zmc2V0
SW5Db250YWluZXJOb2RlKCk7CisgICAgICAgIGluZm8uc2VsZWN0aW9uRW5kID0gc2VsZWN0aW9u
LT5lbmQoKS5jb21wdXRlT2Zmc2V0SW5Db250YWluZXJOb2RlKCk7CisgICAgICAgIGlmIChlZGl0
b3ItPmhhc0NvbXBvc2l0aW9uKCkpIHsKKyAgICAgICAgICAgIGluZm8uY29tcG9zaXRpb25TdGFy
dCA9IHN0YXRpY19jYXN0PGludD4oZWRpdG9yLT5jb21wb3NpdGlvblN0YXJ0KCkpOworICAgICAg
ICAgICAgaW5mby5jb21wb3NpdGlvbkVuZCA9IHN0YXRpY19jYXN0PGludD4oZWRpdG9yLT5jb21w
b3NpdGlvbkVuZCgpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBpbmZvOworfQor
CiBXZWJUZXh0SW5wdXRUeXBlIFdlYlZpZXdJbXBsOjp0ZXh0SW5wdXRUeXBlKCkKIHsKICAgICBO
b2RlKiBub2RlID0gZm9jdXNlZFdlYkNvcmVOb2RlKCk7CiAgICAgaWYgKCFub2RlKQogICAgICAg
ICByZXR1cm4gV2ViVGV4dElucHV0VHlwZU5vbmU7CiAKLSAgICBpZiAobm9kZS0+bm9kZVR5cGUo
KSA9PSBOb2RlOjpFTEVNRU5UX05PREUpIHsKLSAgICAgICAgRWxlbWVudCogZWxlbWVudCA9IHN0
YXRpY19jYXN0PEVsZW1lbnQqPihub2RlKTsKLSAgICAgICAgaWYgKGVsZW1lbnQtPmhhc0xvY2Fs
TmFtZShIVE1MTmFtZXM6OmlucHV0VGFnKSkgewotICAgICAgICAgICAgSFRNTElucHV0RWxlbWVu
dCogaW5wdXQgPSBzdGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4oZWxlbWVudCk7CisgICAg
aWYgKG5vZGUtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjppbnB1dFRhZykpIHsKKyAgICAgICAgSFRN
TElucHV0RWxlbWVudCogaW5wdXQgPSBzdGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4obm9k
ZSk7CiAKLSAgICAgICAgICAgIGlmIChpbnB1dC0+cmVhZE9ubHkoKSB8fCBpbnB1dC0+ZGlzYWJs
ZWQoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gV2ViVGV4dElucHV0VHlwZU5vbmU7CisgICAg
ICAgIGlmIChpbnB1dC0+cmVhZE9ubHkoKSB8fCBpbnB1dC0+ZGlzYWJsZWQoKSkKKyAgICAgICAg
ICAgIHJldHVybiBXZWJUZXh0SW5wdXRUeXBlTm9uZTsKIAotICAgICAgICAgICAgaWYgKGlucHV0
LT5pc1Bhc3N3b3JkRmllbGQoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gV2ViVGV4dElucHV0
VHlwZVBhc3N3b3JkOwotICAgICAgICAgICAgaWYgKGlucHV0LT5pc1NlYXJjaEZpZWxkKCkpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIFdlYlRleHRJbnB1dFR5cGVTZWFyY2g7Ci0gICAgICAgICAg
ICBpZiAoaW5wdXQtPmlzRW1haWxGaWVsZCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBXZWJU
ZXh0SW5wdXRUeXBlRW1haWw7Ci0gICAgICAgICAgICBpZiAoaW5wdXQtPmlzTnVtYmVyRmllbGQo
KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gV2ViVGV4dElucHV0VHlwZU51bWJlcjsKLSAgICAg
ICAgICAgIGlmIChpbnB1dC0+aXNUZWxlcGhvbmVGaWVsZCgpKQotICAgICAgICAgICAgICAgIHJl
dHVybiBXZWJUZXh0SW5wdXRUeXBlVGVsZXBob25lOwotICAgICAgICAgICAgaWYgKGlucHV0LT5p
c1VSTEZpZWxkKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdlYlRleHRJbnB1dFR5cGVVUkw7
Ci0gICAgICAgICAgICBpZiAoaW5wdXQtPmlzRGF0ZUZpZWxkKCkpCi0gICAgICAgICAgICAgICAg
cmV0dXJuIFdlYlRleHRJbnB1dFR5cGVEYXRlOwotICAgICAgICAgICAgaWYgKGlucHV0LT5pc0Rh
dGVUaW1lRmllbGQoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gV2ViVGV4dElucHV0VHlwZURh
dGVUaW1lOwotICAgICAgICAgICAgaWYgKGlucHV0LT5pc0RhdGVUaW1lTG9jYWxGaWVsZCgpKQot
ICAgICAgICAgICAgICAgIHJldHVybiBXZWJUZXh0SW5wdXRUeXBlRGF0ZVRpbWVMb2NhbDsKLSAg
ICAgICAgICAgIGlmIChpbnB1dC0+aXNNb250aEZpZWxkKCkpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIFdlYlRleHRJbnB1dFR5cGVNb250aDsKLSAgICAgICAgICAgIGlmIChpbnB1dC0+aXNUaW1l
RmllbGQoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gV2ViVGV4dElucHV0VHlwZVRpbWU7Ci0g
ICAgICAgICAgICBpZiAoaW5wdXQtPmlzV2Vla0ZpZWxkKCkpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIFdlYlRleHRJbnB1dFR5cGVXZWVrOwotICAgICAgICAgICAgaWYgKGlucHV0LT5pc1RleHRG
aWVsZCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBXZWJUZXh0SW5wdXRUeXBlVGV4dDsKKyAg
ICAgICAgaWYgKGlucHV0LT5pc1Bhc3N3b3JkRmllbGQoKSkKKyAgICAgICAgICAgIHJldHVybiBX
ZWJUZXh0SW5wdXRUeXBlUGFzc3dvcmQ7CisgICAgICAgIGlmIChpbnB1dC0+aXNTZWFyY2hGaWVs
ZCgpKQorICAgICAgICAgICAgcmV0dXJuIFdlYlRleHRJbnB1dFR5cGVTZWFyY2g7CisgICAgICAg
IGlmIChpbnB1dC0+aXNFbWFpbEZpZWxkKCkpCisgICAgICAgICAgICByZXR1cm4gV2ViVGV4dElu
cHV0VHlwZUVtYWlsOworICAgICAgICBpZiAoaW5wdXQtPmlzTnVtYmVyRmllbGQoKSkKKyAgICAg
ICAgICAgIHJldHVybiBXZWJUZXh0SW5wdXRUeXBlTnVtYmVyOworICAgICAgICBpZiAoaW5wdXQt
PmlzVGVsZXBob25lRmllbGQoKSkKKyAgICAgICAgICAgIHJldHVybiBXZWJUZXh0SW5wdXRUeXBl
VGVsZXBob25lOworICAgICAgICBpZiAoaW5wdXQtPmlzVVJMRmllbGQoKSkKKyAgICAgICAgICAg
IHJldHVybiBXZWJUZXh0SW5wdXRUeXBlVVJMOworICAgICAgICBpZiAoaW5wdXQtPmlzRGF0ZUZp
ZWxkKCkpCisgICAgICAgICAgICByZXR1cm4gV2ViVGV4dElucHV0VHlwZURhdGU7CisgICAgICAg
IGlmIChpbnB1dC0+aXNEYXRlVGltZUZpZWxkKCkpCisgICAgICAgICAgICByZXR1cm4gV2ViVGV4
dElucHV0VHlwZURhdGVUaW1lOworICAgICAgICBpZiAoaW5wdXQtPmlzRGF0ZVRpbWVMb2NhbEZp
ZWxkKCkpCisgICAgICAgICAgICByZXR1cm4gV2ViVGV4dElucHV0VHlwZURhdGVUaW1lTG9jYWw7
CisgICAgICAgIGlmIChpbnB1dC0+aXNNb250aEZpZWxkKCkpCisgICAgICAgICAgICByZXR1cm4g
V2ViVGV4dElucHV0VHlwZU1vbnRoOworICAgICAgICBpZiAoaW5wdXQtPmlzVGltZUZpZWxkKCkp
CisgICAgICAgICAgICByZXR1cm4gV2ViVGV4dElucHV0VHlwZVRpbWU7CisgICAgICAgIGlmIChp
bnB1dC0+aXNXZWVrRmllbGQoKSkKKyAgICAgICAgICAgIHJldHVybiBXZWJUZXh0SW5wdXRUeXBl
V2VlazsKKyAgICAgICAgaWYgKGlucHV0LT5pc1RleHRGaWVsZCgpKQorICAgICAgICAgICAgcmV0
dXJuIFdlYlRleHRJbnB1dFR5cGVUZXh0OwogCi0gICAgICAgICAgICByZXR1cm4gV2ViVGV4dElu
cHV0VHlwZU5vbmU7Ci0gICAgICAgIH0KKyAgICAgICAgcmV0dXJuIFdlYlRleHRJbnB1dFR5cGVO
b25lOworICAgIH0KIAotICAgICAgICBpZiAoZWxlbWVudC0+aGFzTG9jYWxOYW1lKEhUTUxOYW1l
czo6dGV4dGFyZWFUYWcpKSB7Ci0gICAgICAgICAgICBIVE1MVGV4dEFyZWFFbGVtZW50KiB0ZXh0
YXJlYSA9IHN0YXRpY19jYXN0PEhUTUxUZXh0QXJlYUVsZW1lbnQqPihlbGVtZW50KTsKKyAgICBp
ZiAobm9kZS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OnRleHRhcmVhVGFnKSkgeworICAgICAgICBI
VE1MVGV4dEFyZWFFbGVtZW50KiB0ZXh0YXJlYSA9IHN0YXRpY19jYXN0PEhUTUxUZXh0QXJlYUVs
ZW1lbnQqPihub2RlKTsKIAotICAgICAgICAgICAgaWYgKHRleHRhcmVhLT5yZWFkT25seSgpIHx8
IHRleHRhcmVhLT5kaXNhYmxlZCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBXZWJUZXh0SW5w
dXRUeXBlTm9uZTsKLSAgICAgICAgICAgIHJldHVybiBXZWJUZXh0SW5wdXRUeXBlVGV4dDsKLSAg
ICAgICAgfQorICAgICAgICBpZiAodGV4dGFyZWEtPnJlYWRPbmx5KCkgfHwgdGV4dGFyZWEtPmRp
c2FibGVkKCkpCisgICAgICAgICAgICByZXR1cm4gV2ViVGV4dElucHV0VHlwZU5vbmU7CisKKyAg
ICAgICAgcmV0dXJuIFdlYlRleHRJbnB1dFR5cGVUZXh0QXJlYTsKICAgICB9CiAKLSAgICAvLyBG
b3Igb3RoZXIgc2l0dWF0aW9ucy4KICAgICBpZiAobm9kZS0+c2hvdWxkVXNlSW5wdXRNZXRob2Qo
KSkKLSAgICAgICAgcmV0dXJuIFdlYlRleHRJbnB1dFR5cGVUZXh0OworICAgICAgICByZXR1cm4g
V2ViVGV4dElucHV0VHlwZUNvbnRlbnRFZGl0YWJsZTsKIAogICAgIHJldHVybiBXZWJUZXh0SW5w
dXRUeXBlTm9uZTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJ
bXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0lt
cGwuaAkocmV2aXNpb24gMTE3MDg4KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
Vmlld0ltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtMTQ2LDYgKzE0Niw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIGJvb2wgY29uZmlybUNvbXBvc2l0aW9uKCk7CiAgICAgdmlydHVhbCBib29sIGNv
bmZpcm1Db21wb3NpdGlvbihjb25zdCBXZWJTdHJpbmcmIHRleHQpOwogICAgIHZpcnR1YWwgYm9v
bCBjb21wb3NpdGlvblJhbmdlKHNpemVfdCogbG9jYXRpb24sIHNpemVfdCogbGVuZ3RoKTsKKyAg
ICB2aXJ0dWFsIFdlYlRleHRJbnB1dEluZm8gdGV4dElucHV0SW5mbygpOwogICAgIHZpcnR1YWwg
V2ViVGV4dElucHV0VHlwZSB0ZXh0SW5wdXRUeXBlKCk7CiAgICAgdmlydHVhbCBib29sIHNlbGVj
dGlvbkJvdW5kcyhXZWJSZWN0JiBzdGFydCwgV2ViUmVjdCYgZW5kKSBjb25zdDsKICAgICB2aXJ0
dWFsIGJvb2wgY2FyZXRPclNlbGVjdGlvblJhbmdlKHNpemVfdCogbG9jYXRpb24sIHNpemVfdCog
bGVuZ3RoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>142119</attachid>
            <date>2012-05-15 18:36:04 -0700</date>
            <delta_ts>2012-05-15 19:04:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-86440-20120515183603.patch</filename>
            <type>text/plain</type>
            <size>16905</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiAxMTcxOTkpCisrKyBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1
IEBACisyMDEyLTA1LTE1ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgW0Nocm9taXVtXSBJbXBsZW1lbnQgV2ViVmlld0ltcGw6OnRleHRJbnB1dEluZm8oKSBmb3Ig
QW5kcm9pZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
ODY0NDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
aGlzIHBhdGNoIGFkZHMgV2ViVmlldzo6dGV4dElucHV0SW5mbygpLCB3aGljaCBkZXNjcmliZXMg
dGhlIHRleHQKKyAgICAgICAgaW5wdXQgdGhhdCBjdXJyZW50bHkgaGFzIGZvY3VzLiAgQW5kcm9p
ZCBpcyBwbGFubmluZyB0byB1c2UgdGhpcyB0bworICAgICAgICBkZXRlcm1pbmUgd2hhdCBzb3J0
IG9mIGtleWJvYXJkIG9yIHRleHQgZW50cnkgVUkgdG8gc2hvdy4gIFRoaXMgQVBJCisgICAgICAg
IHN1YnN1bWVzIHRoZSB0ZXh0SW5wdXRUeXBlKCkgQVBJLCB3aGljaCB3aWxsIGJlIHJlbW92ZWQg
b25jZSB0aGUKKyAgICAgICAgY2xpZW50cyBoYXZlIGJlZW4gdXBkYXRlZC4KKworICAgICAgICAq
IFdlYktpdC5neXA6CisgICAgICAgICogcHVibGljL1dlYlRleHRJbnB1dEluZm8uaDogQWRkZWQu
CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViVGV4dElucHV0SW5mbyk6CisgICAgICAg
IChXZWJLaXQ6OldlYlRleHRJbnB1dEluZm86OldlYlRleHRJbnB1dEluZm8pOgorICAgICAgICAo
V2ViS2l0OjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdlYktpdDo6b3BlcmF0b3IhPSk6CisgICAg
ICAgICogcHVibGljL1dlYlRleHRJbnB1dFR5cGUuaDoKKyAgICAgICAgKiBwdWJsaWMvV2ViV2lk
Z2V0Lmg6CisgICAgICAgIChXZWJXaWRnZXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJXaWRnZXQ6
OnRleHRJbnB1dEluZm8pOgorICAgICAgICAoV2ViS2l0OjpXZWJXaWRnZXQ6OnRleHRJbnB1dFR5
cGUpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlZpZXdJbXBsOjp0ZXh0SW5wdXRJbmZvKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlZpZXdJbXBsOjp0ZXh0SW5wdXRUeXBlKToKKyAgICAgICAgKiBzcmMvV2ViVmll
d0ltcGwuaDoKKyAgICAgICAgKFdlYlZpZXdJbXBsKToKKwogMjAxMi0wNS0xNSAgU2hhd24gU2lu
Z2ggIDxzaGF3bnNpbmdoQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIEFkZCB1
bml0IHRlc3RpbmcgdG8gV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vV2ViS2l0Lmd5cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL1dlYktpdC5neXAJKHJldmlzaW9uIDExNzE5OSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vV2ViS2l0Lmd5cAkod29ya2luZyBjb3B5KQpAQCAtMjcxLDYgKzI3MSw3IEBACiAgICAgICAg
ICAgICAgICAgJ3B1YmxpYy9XZWJUZXh0Q2hlY2tpbmdSZXN1bHQuaCcsCiAgICAgICAgICAgICAg
ICAgJ3B1YmxpYy9XZWJUZXh0RGlyZWN0aW9uLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMv
V2ViVGV4dEZpZWxkRGVjb3JhdG9yQ2xpZW50LmgnLAorICAgICAgICAgICAgICAgICdwdWJsaWMv
V2ViVGV4dElucHV0SW5mby5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYlRleHRJbnB1
dFR5cGUuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJUZXh0UnVuLmgnLAogICAgICAg
ICAgICAgICAgICdwdWJsaWMvV2ViVGltZVJhbmdlLmgnLApAQCAtNjU4LDYgKzY1OSw3IEBACiAg
ICAgICAgICAgICAgICAgJ3NyYy9XZWJTdG9yYWdlUXVvdGFDYWxsYmFja3NJbXBsLmNwcCcsCiAg
ICAgICAgICAgICAgICAgJ3NyYy9XZWJTdG9yYWdlUXVvdGFDYWxsYmFja3NJbXBsLmgnLAogICAg
ICAgICAgICAgICAgICdzcmMvV2ViU3Vycm91bmRpbmdUZXh0LmNwcCcsCisgICAgICAgICAgICAg
ICAgJ3NyYy9XZWJUZXh0SW5wdXRJbmZvLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJU
ZXh0UnVuLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJVUkxMb2FkVGltaW5nLmNwcCcs
CiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJTY29wZWRVc2VyR2VzdHVyZS5jcHAnLApJbmRleDog
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVGV4dElucHV0SW5mby5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlRleHRJbnB1dEluZm8uaAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlRleHRJbnB1
dEluZm8uaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3OCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05U
UklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2Vi
VGV4dElucHV0SW5mb19oCisjZGVmaW5lIFdlYlRleHRJbnB1dEluZm9faAorCisjaW5jbHVkZSAi
V2ViVGV4dElucHV0VHlwZS5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlN0cmluZy5oIgorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworc3RydWN0IFdlYlRleHRJbnB1dEluZm8geworICAgIFdlYlRl
eHRJbnB1dFR5cGUgdHlwZTsKKworICAgIC8vIFRoZSB2YWx1ZSBvZiB0aGUgY3VycmVudGx5IGZv
Y3VzZWQgaW5wdXQgZmllbGQuCisgICAgV2ViU3RyaW5nIHZhbHVlOworCisgICAgLy8gVGhlIGN1
cnNvciBwb3NpdGlvbiBvZiB0aGUgY3VycmVudCBzZWxlY3Rpb24gc3RhcnQsIG9yIHRoZSBjYXJl
dCBwb3NpdGlvbgorICAgIC8vIGlmIG5vdGhpbmcgaXMgc2VsZWN0ZWQuCisgICAgaW50IHNlbGVj
dGlvblN0YXJ0OworCisgICAgLy8gVGhlIGN1cnNvciBwb3NpdGlvbiBvZiB0aGUgY3VycmVudCBz
ZWxlY3Rpb24gZW5kLCBvciB0aGUgY2FyZXQgcG9zaXRpb24KKyAgICAvLyBpZiBub3RoaW5nIGlz
IHNlbGVjdGVkLgorICAgIGludCBzZWxlY3Rpb25FbmQ7CisKKyAgICAvLyBUaGUgc3RhcnQgcG9z
aXRpb24gb2YgdGhlIGN1cnJlbnQgY29tcG9zaXRpb24sIG9yIC0xIGlmIHRoZXJlIGlzIG5vbmUu
CisgICAgaW50IGNvbXBvc2l0aW9uU3RhcnQ7CisKKyAgICAvLyBUaGUgZW5kIHBvc2l0aW9uIG9m
IHRoZSBjdXJyZW50IGNvbXBvc2l0aW9uLCBvciAtMSBpZiB0aGVyZSBpcyBub25lLgorICAgIGlu
dCBjb21wb3NpdGlvbkVuZDsKKworICAgIFdFQktJVF9FWFBPUlQgYm9vbCBlcXVhbHMoY29uc3Qg
V2ViVGV4dElucHV0SW5mbyYpIGNvbnN0OworCisgICAgV2ViVGV4dElucHV0SW5mbygpCisgICAg
ICAgIDogdHlwZShXZWJUZXh0SW5wdXRUeXBlTm9uZSkKKyAgICAgICAgLCBzZWxlY3Rpb25TdGFy
dCgwKQorICAgICAgICAsIHNlbGVjdGlvbkVuZCgwKQorICAgICAgICAsIGNvbXBvc2l0aW9uU3Rh
cnQoLTEpCisgICAgICAgICwgY29tcG9zaXRpb25FbmQoLTEpCisgICAgeworICAgIH0KK307CisK
K2lubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgV2ViVGV4dElucHV0SW5mbyYgYSwgY29uc3Qg
V2ViVGV4dElucHV0SW5mbyYgYikKK3sKKyAgICByZXR1cm4gYS5lcXVhbHMoYik7Cit9CisKK2lu
bGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgV2ViVGV4dElucHV0SW5mbyYgYSwgY29uc3QgV2Vi
VGV4dElucHV0SW5mbyYgYikKK3sKKyAgICByZXR1cm4gIShhID09IGIpOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJUZXh0SW5wdXRUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViVGV4dElucHV0VHlwZS5oCShyZXZpc2lvbiAxMTcxOTkpCisrKyBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJUZXh0SW5wdXRUeXBlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM5LDYgKzM5LDggQEAgZW51bSBXZWJUZXh0SW5wdXRUeXBlIHsKIAogICAgIC8vIElu
cHV0IGNhcmV0IGlzIGluIGEgbm9ybWFsIGVkaXRhYmxlIG5vZGUsIGFueSBpbnB1dCBtZXRob2Qg
Y2FuIGJlIHVzZWQuCiAgICAgV2ViVGV4dElucHV0VHlwZVRleHQsCisgICAgV2ViVGV4dElucHV0
VHlwZVRleHRBcmVhLAorICAgIFdlYlRleHRJbnB1dFR5cGVDb250ZW50RWRpdGFibGUsCiAKICAg
ICAvLyBJbnB1dCBjYXJldCBpcyBpbiBhIHNwZWNpZmljIGlucHV0IGZpZWxkLCBhbmQgaW5wdXQg
bWV0aG9kIG1heSBiZSB1c2VkCiAgICAgLy8gb25seSBpZiBpdCdzIHN1aXRhYmxlIGZvciB0aGUg
c3BlY2lmaWMgaW5wdXQgZmllbGQuCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJXaWRnZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJXaWRnZXQuaAkocmV2aXNpb24gMTE3MTk5KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViV2lkZ2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDggKzMyLDggQEAKICNk
ZWZpbmUgV2ViV2lkZ2V0X2gKIAogI2luY2x1ZGUgIldlYkNvbXBvc2l0aW9uVW5kZXJsaW5lLmgi
Ci0jaW5jbHVkZSAiV2ViVGV4dElucHV0VHlwZS5oIgogI2luY2x1ZGUgIldlYlRleHREaXJlY3Rp
b24uaCIKKyNpbmNsdWRlICJXZWJUZXh0SW5wdXRJbmZvLmgiCiAjaW5jbHVkZSAicGxhdGZvcm0v
V2ViQ2FudmFzLmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViQ29tbW9uLmgiCiAjaW5jbHVkZSAi
cGxhdGZvcm0vV2ViUmVjdC5oIgpAQCAtMTcwLDggKzE3MCwxMiBAQCBwdWJsaWM6CiAgICAgLy8g
cmV0dXJucyBmYWxzZSBvbiBmYWlsdXJlLgogICAgIHZpcnR1YWwgYm9vbCBjb21wb3NpdGlvblJh
bmdlKHNpemVfdCogbG9jYXRpb24sIHNpemVfdCogbGVuZ3RoKSB7IHJldHVybiBmYWxzZTsgfQog
CisgICAgLy8gUmV0dXJucyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY3VycmVudCB0ZXh0IGlucHV0
IG9mIHRoaXMgV2ViV2lkZ2V0LgorICAgIHZpcnR1YWwgV2ViVGV4dElucHV0SW5mbyB0ZXh0SW5w
dXRJbmZvKCkgeyByZXR1cm4gV2ViVGV4dElucHV0SW5mbygpOyB9CisKICAgICAvLyBSZXR1cm5z
IHRoZSBjdXJyZW50IHRleHQgaW5wdXQgdHlwZSBvZiB0aGlzIFdlYldpZGdldC4KLSAgICB2aXJ0
dWFsIFdlYlRleHRJbnB1dFR5cGUgdGV4dElucHV0VHlwZSgpIHsgcmV0dXJuIFdlYktpdDo6V2Vi
VGV4dElucHV0VHlwZU5vbmU7IH0KKyAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgbWV0aG9kLiBJ
dCdzIHJlZHVuZGFudCB3aXRoIHRleHRJbnB1dEluZm8oKS4KKyAgICB2aXJ0dWFsIFdlYlRleHRJ
bnB1dFR5cGUgdGV4dElucHV0VHlwZSgpIHsgcmV0dXJuIFdlYlRleHRJbnB1dFR5cGVOb25lOyB9
CiAKICAgICAvLyBSZXR1cm5zIHRoZSBzdGFydCBhbmQgZW5kIGJvdW5kcyBvZiB0aGUgY3VycmVu
dCBzZWxlY3Rpb24uCiAgICAgLy8gSWYgdGhlIHNlbGVjdGlvbiByYW5nZSBpcyBlbXB0eSwgaXQg
cmV0dXJucyB0aGUgY2FyZXQgYm91bmRzLgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViVGV4dElucHV0SW5mby5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViVGV4dElucHV0SW5mby5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJUZXh0SW5wdXRJbmZvLmNwcAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0
OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
CisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJUZXh0SW5wdXRJbmZv
LmNwcC5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworYm9vbCBXZWJUZXh0SW5wdXRJbmZvOjpl
cXVhbHMoY29uc3QgV2ViVGV4dElucHV0SW5mbyYgb3RoZXIpIGNvbnN0Cit7CisgICAgcmV0dXJu
IHR5cGUgPT0gb3RoZXIudHlwZQorICAgICAgICAmJiB2YWx1ZSA9PSBvdGhlci52YWx1ZQorICAg
ICAgICAmJiBzZWxlY3Rpb25TdGFydCA9PSBvdGhlci5zZWxlY3Rpb25TdGFydAorICAgICAgICAm
JiBzZWxlY3Rpb25FbmQgPT0gb3RoZXIuc2VsZWN0aW9uRW5kCisgICAgICAgICYmIGNvbXBvc2l0
aW9uU3RhcnQgPT0gb3RoZXIuY29tcG9zaXRpb25TdGFydAorICAgICAgICAmJiBjb21wb3NpdGlv
bkVuZCA9PSBvdGhlci5jb21wb3NpdGlvbkVuZDsKKworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAJKHJl
dmlzaW9uIDExNzE5OSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBs
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEzLDYgKzExMyw3IEBACiAjaW5jbHVkZSAiU3BlZWNo
SW5wdXRDbGllbnRJbXBsLmgiCiAjaW5jbHVkZSAiU3BlZWNoUmVjb2duaXRpb25DbGllbnRQcm94
eS5oIgogI2luY2x1ZGUgIlN0eWxlUmVzb2x2ZXIuaCIKKyNpbmNsdWRlICJUZXh0LmgiCiAjaW5j
bHVkZSAiVGV4dEZpZWxkRGVjb3JhdG9ySW1wbC5oIgogI2luY2x1ZGUgIlRleHRJdGVyYXRvci5o
IgogI2luY2x1ZGUgIlRpbWVyLmgiCkBAIC0xNDAsNiArMTQxLDcgQEAKICNpbmNsdWRlICJXZWJS
YW5nZS5oIgogI2luY2x1ZGUgIldlYlJ1bnRpbWVGZWF0dXJlcy5oIgogI2luY2x1ZGUgIldlYlNl
dHRpbmdzSW1wbC5oIgorI2luY2x1ZGUgIldlYlRleHRJbnB1dEluZm8uaCIKICNpbmNsdWRlICJX
ZWJWaWV3Q2xpZW50LmgiCiAjaW5jbHVkZSAiV2hlZWxFdmVudC5oIgogI2luY2x1ZGUgImNjL0ND
UHJveHkuaCIKQEAgLTE4NjUsNjIgKzE4NjcsMTE1IEBAIGJvb2wgV2ViVmlld0ltcGw6OmNvbXBv
c2l0aW9uUmFuZ2Uoc2l6ZV8KICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK1dlYlRleHRJbnB1dElu
Zm8gV2ViVmlld0ltcGw6OnRleHRJbnB1dEluZm8oKQoreworICAgIFdlYlRleHRJbnB1dEluZm8g
aW5mbzsKKworICAgIEZyYW1lKiBmb2N1c2VkID0gZm9jdXNlZFdlYkNvcmVGcmFtZSgpOworICAg
IGlmICghZm9jdXNlZCkKKyAgICAgICAgcmV0dXJuIGluZm87CisKKyAgICBFZGl0b3IqIGVkaXRv
ciA9IGZvY3VzZWQtPmVkaXRvcigpOworICAgIGlmICghZWRpdG9yIHx8ICFlZGl0b3ItPmNhbkVk
aXQoKSkKKyAgICAgICAgcmV0dXJuIGluZm87CisKKyAgICBGcmFtZVNlbGVjdGlvbiogc2VsZWN0
aW9uID0gZm9jdXNlZC0+c2VsZWN0aW9uKCk7CisgICAgaWYgKCFzZWxlY3Rpb24pCisgICAgICAg
IHJldHVybiBpbmZvOworCisgICAgTm9kZSogbm9kZSA9IGZvY3VzZWRXZWJDb3JlTm9kZSgpOwor
ICAgIGlmICghbm9kZSkKKyAgICAgICAgcmV0dXJuIGluZm87CisKKyAgICBpbmZvLnR5cGUgPSB0
ZXh0SW5wdXRUeXBlKCk7CisgICAgaWYgKGluZm8udHlwZSA9PSBXZWJUZXh0SW5wdXRUeXBlTm9u
ZSkKKyAgICAgICAgcmV0dXJuIGluZm87CisKKyAgICBpZiAobm9kZS0+aGFzVGFnTmFtZShIVE1M
TmFtZXM6OnRleHRhcmVhVGFnKSkKKyAgICAgICAgaW5mby52YWx1ZSA9IHN0YXRpY19jYXN0PEhU
TUxUZXh0QXJlYUVsZW1lbnQqPihub2RlKS0+dmFsdWUoKTsKKyAgICBlbHNlIGlmIChub2RlLT5o
YXNUYWdOYW1lKEhUTUxOYW1lczo6aW5wdXRUYWcpKQorICAgICAgICBpbmZvLnZhbHVlID0gc3Rh
dGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KG5vZGUpLT52YWx1ZSgpOworICAgIGVsc2UgaWYg
KG5vZGUtPnNob3VsZFVzZUlucHV0TWV0aG9kKCkpCisgICAgICAgIGluZm8udmFsdWUgPSBub2Rl
LT5ub2RlVmFsdWUoKTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiBpbmZvOworCisgICAgaWYg
KGluZm8udmFsdWUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gaW5mbzsKKworICAgIGlmIChu
b2RlLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6dGV4dGFyZWFUYWcpIHx8IG5vZGUtPmhhc1RhZ05h
bWUoSFRNTE5hbWVzOjppbnB1dFRhZykpIHsKKyAgICAgICAgSFRNTFRleHRGb3JtQ29udHJvbEVs
ZW1lbnQqIGZvcm1FbGVtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTFRleHRGb3JtQ29udHJvbEVsZW1l
bnQqPihub2RlKTsKKyAgICAgICAgaW5mby5zZWxlY3Rpb25TdGFydCA9IGZvcm1FbGVtZW50LT5z
ZWxlY3Rpb25TdGFydCgpOworICAgICAgICBpbmZvLnNlbGVjdGlvbkVuZCA9IGZvcm1FbGVtZW50
LT5zZWxlY3Rpb25FbmQoKTsKKyAgICAgICAgaWYgKGVkaXRvci0+aGFzQ29tcG9zaXRpb24oKSkg
eworICAgICAgICAgICAgaW5mby5jb21wb3NpdGlvblN0YXJ0ID0gZm9ybUVsZW1lbnQtPmluZGV4
Rm9yVmlzaWJsZVBvc2l0aW9uKFBvc2l0aW9uKGVkaXRvci0+Y29tcG9zaXRpb25Ob2RlKCksIGVk
aXRvci0+Y29tcG9zaXRpb25TdGFydCgpKSk7CisgICAgICAgICAgICBpbmZvLmNvbXBvc2l0aW9u
RW5kID0gZm9ybUVsZW1lbnQtPmluZGV4Rm9yVmlzaWJsZVBvc2l0aW9uKFBvc2l0aW9uKGVkaXRv
ci0+Y29tcG9zaXRpb25Ob2RlKCksIGVkaXRvci0+Y29tcG9zaXRpb25FbmQoKSkpOworICAgICAg
ICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgaW5mby5zZWxlY3Rpb25TdGFydCA9IHNlbGVjdGlv
bi0+c3RhcnQoKS5jb21wdXRlT2Zmc2V0SW5Db250YWluZXJOb2RlKCk7CisgICAgICAgIGluZm8u
c2VsZWN0aW9uRW5kID0gc2VsZWN0aW9uLT5lbmQoKS5jb21wdXRlT2Zmc2V0SW5Db250YWluZXJO
b2RlKCk7CisgICAgICAgIGlmIChlZGl0b3ItPmhhc0NvbXBvc2l0aW9uKCkpIHsKKyAgICAgICAg
ICAgIGluZm8uY29tcG9zaXRpb25TdGFydCA9IHN0YXRpY19jYXN0PGludD4oZWRpdG9yLT5jb21w
b3NpdGlvblN0YXJ0KCkpOworICAgICAgICAgICAgaW5mby5jb21wb3NpdGlvbkVuZCA9IHN0YXRp
Y19jYXN0PGludD4oZWRpdG9yLT5jb21wb3NpdGlvbkVuZCgpKTsKKyAgICAgICAgfQorICAgIH0K
KworICAgIHJldHVybiBpbmZvOworfQorCiBXZWJUZXh0SW5wdXRUeXBlIFdlYlZpZXdJbXBsOjp0
ZXh0SW5wdXRUeXBlKCkKIHsKICAgICBOb2RlKiBub2RlID0gZm9jdXNlZFdlYkNvcmVOb2RlKCk7
CiAgICAgaWYgKCFub2RlKQogICAgICAgICByZXR1cm4gV2ViVGV4dElucHV0VHlwZU5vbmU7CiAK
LSAgICBpZiAobm9kZS0+bm9kZVR5cGUoKSA9PSBOb2RlOjpFTEVNRU5UX05PREUpIHsKLSAgICAg
ICAgRWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihub2RlKTsKLSAgICAg
ICAgaWYgKGVsZW1lbnQtPmhhc0xvY2FsTmFtZShIVE1MTmFtZXM6OmlucHV0VGFnKSkgewotICAg
ICAgICAgICAgSFRNTElucHV0RWxlbWVudCogaW5wdXQgPSBzdGF0aWNfY2FzdDxIVE1MSW5wdXRF
bGVtZW50Kj4oZWxlbWVudCk7CisgICAgaWYgKG5vZGUtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpp
bnB1dFRhZykpIHsKKyAgICAgICAgSFRNTElucHV0RWxlbWVudCogaW5wdXQgPSBzdGF0aWNfY2Fz
dDxIVE1MSW5wdXRFbGVtZW50Kj4obm9kZSk7CiAKLSAgICAgICAgICAgIGlmIChpbnB1dC0+cmVh
ZE9ubHkoKSB8fCBpbnB1dC0+ZGlzYWJsZWQoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gV2Vi
VGV4dElucHV0VHlwZU5vbmU7CisgICAgICAgIGlmIChpbnB1dC0+cmVhZE9ubHkoKSB8fCBpbnB1
dC0+ZGlzYWJsZWQoKSkKKyAgICAgICAgICAgIHJldHVybiBXZWJUZXh0SW5wdXRUeXBlTm9uZTsK
IAotICAgICAgICAgICAgaWYgKGlucHV0LT5pc1Bhc3N3b3JkRmllbGQoKSkKLSAgICAgICAgICAg
ICAgICByZXR1cm4gV2ViVGV4dElucHV0VHlwZVBhc3N3b3JkOwotICAgICAgICAgICAgaWYgKGlu
cHV0LT5pc1NlYXJjaEZpZWxkKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdlYlRleHRJbnB1
dFR5cGVTZWFyY2g7Ci0gICAgICAgICAgICBpZiAoaW5wdXQtPmlzRW1haWxGaWVsZCgpKQotICAg
ICAgICAgICAgICAgIHJldHVybiBXZWJUZXh0SW5wdXRUeXBlRW1haWw7Ci0gICAgICAgICAgICBp
ZiAoaW5wdXQtPmlzTnVtYmVyRmllbGQoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gV2ViVGV4
dElucHV0VHlwZU51bWJlcjsKLSAgICAgICAgICAgIGlmIChpbnB1dC0+aXNUZWxlcGhvbmVGaWVs
ZCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBXZWJUZXh0SW5wdXRUeXBlVGVsZXBob25lOwot
ICAgICAgICAgICAgaWYgKGlucHV0LT5pc1VSTEZpZWxkKCkpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIFdlYlRleHRJbnB1dFR5cGVVUkw7Ci0gICAgICAgICAgICBpZiAoaW5wdXQtPmlzRGF0ZUZp
ZWxkKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdlYlRleHRJbnB1dFR5cGVEYXRlOwotICAg
ICAgICAgICAgaWYgKGlucHV0LT5pc0RhdGVUaW1lRmllbGQoKSkKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gV2ViVGV4dElucHV0VHlwZURhdGVUaW1lOwotICAgICAgICAgICAgaWYgKGlucHV0LT5p
c0RhdGVUaW1lTG9jYWxGaWVsZCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBXZWJUZXh0SW5w
dXRUeXBlRGF0ZVRpbWVMb2NhbDsKLSAgICAgICAgICAgIGlmIChpbnB1dC0+aXNNb250aEZpZWxk
KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdlYlRleHRJbnB1dFR5cGVNb250aDsKLSAgICAg
ICAgICAgIGlmIChpbnB1dC0+aXNUaW1lRmllbGQoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4g
V2ViVGV4dElucHV0VHlwZVRpbWU7Ci0gICAgICAgICAgICBpZiAoaW5wdXQtPmlzV2Vla0ZpZWxk
KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdlYlRleHRJbnB1dFR5cGVXZWVrOwotICAgICAg
ICAgICAgaWYgKGlucHV0LT5pc1RleHRGaWVsZCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBX
ZWJUZXh0SW5wdXRUeXBlVGV4dDsKKyAgICAgICAgaWYgKGlucHV0LT5pc1Bhc3N3b3JkRmllbGQo
KSkKKyAgICAgICAgICAgIHJldHVybiBXZWJUZXh0SW5wdXRUeXBlUGFzc3dvcmQ7CisgICAgICAg
IGlmIChpbnB1dC0+aXNTZWFyY2hGaWVsZCgpKQorICAgICAgICAgICAgcmV0dXJuIFdlYlRleHRJ
bnB1dFR5cGVTZWFyY2g7CisgICAgICAgIGlmIChpbnB1dC0+aXNFbWFpbEZpZWxkKCkpCisgICAg
ICAgICAgICByZXR1cm4gV2ViVGV4dElucHV0VHlwZUVtYWlsOworICAgICAgICBpZiAoaW5wdXQt
PmlzTnVtYmVyRmllbGQoKSkKKyAgICAgICAgICAgIHJldHVybiBXZWJUZXh0SW5wdXRUeXBlTnVt
YmVyOworICAgICAgICBpZiAoaW5wdXQtPmlzVGVsZXBob25lRmllbGQoKSkKKyAgICAgICAgICAg
IHJldHVybiBXZWJUZXh0SW5wdXRUeXBlVGVsZXBob25lOworICAgICAgICBpZiAoaW5wdXQtPmlz
VVJMRmllbGQoKSkKKyAgICAgICAgICAgIHJldHVybiBXZWJUZXh0SW5wdXRUeXBlVVJMOworICAg
ICAgICBpZiAoaW5wdXQtPmlzRGF0ZUZpZWxkKCkpCisgICAgICAgICAgICByZXR1cm4gV2ViVGV4
dElucHV0VHlwZURhdGU7CisgICAgICAgIGlmIChpbnB1dC0+aXNEYXRlVGltZUZpZWxkKCkpCisg
ICAgICAgICAgICByZXR1cm4gV2ViVGV4dElucHV0VHlwZURhdGVUaW1lOworICAgICAgICBpZiAo
aW5wdXQtPmlzRGF0ZVRpbWVMb2NhbEZpZWxkKCkpCisgICAgICAgICAgICByZXR1cm4gV2ViVGV4
dElucHV0VHlwZURhdGVUaW1lTG9jYWw7CisgICAgICAgIGlmIChpbnB1dC0+aXNNb250aEZpZWxk
KCkpCisgICAgICAgICAgICByZXR1cm4gV2ViVGV4dElucHV0VHlwZU1vbnRoOworICAgICAgICBp
ZiAoaW5wdXQtPmlzVGltZUZpZWxkKCkpCisgICAgICAgICAgICByZXR1cm4gV2ViVGV4dElucHV0
VHlwZVRpbWU7CisgICAgICAgIGlmIChpbnB1dC0+aXNXZWVrRmllbGQoKSkKKyAgICAgICAgICAg
IHJldHVybiBXZWJUZXh0SW5wdXRUeXBlV2VlazsKKyAgICAgICAgaWYgKGlucHV0LT5pc1RleHRG
aWVsZCgpKQorICAgICAgICAgICAgcmV0dXJuIFdlYlRleHRJbnB1dFR5cGVUZXh0OwogCi0gICAg
ICAgICAgICByZXR1cm4gV2ViVGV4dElucHV0VHlwZU5vbmU7Ci0gICAgICAgIH0KKyAgICAgICAg
cmV0dXJuIFdlYlRleHRJbnB1dFR5cGVOb25lOworICAgIH0KIAotICAgICAgICBpZiAoZWxlbWVu
dC0+aGFzTG9jYWxOYW1lKEhUTUxOYW1lczo6dGV4dGFyZWFUYWcpKSB7Ci0gICAgICAgICAgICBI
VE1MVGV4dEFyZWFFbGVtZW50KiB0ZXh0YXJlYSA9IHN0YXRpY19jYXN0PEhUTUxUZXh0QXJlYUVs
ZW1lbnQqPihlbGVtZW50KTsKKyAgICBpZiAobm9kZS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OnRl
eHRhcmVhVGFnKSkgeworICAgICAgICBIVE1MVGV4dEFyZWFFbGVtZW50KiB0ZXh0YXJlYSA9IHN0
YXRpY19jYXN0PEhUTUxUZXh0QXJlYUVsZW1lbnQqPihub2RlKTsKIAotICAgICAgICAgICAgaWYg
KHRleHRhcmVhLT5yZWFkT25seSgpIHx8IHRleHRhcmVhLT5kaXNhYmxlZCgpKQotICAgICAgICAg
ICAgICAgIHJldHVybiBXZWJUZXh0SW5wdXRUeXBlTm9uZTsKLSAgICAgICAgICAgIHJldHVybiBX
ZWJUZXh0SW5wdXRUeXBlVGV4dDsKLSAgICAgICAgfQorICAgICAgICBpZiAodGV4dGFyZWEtPnJl
YWRPbmx5KCkgfHwgdGV4dGFyZWEtPmRpc2FibGVkKCkpCisgICAgICAgICAgICByZXR1cm4gV2Vi
VGV4dElucHV0VHlwZU5vbmU7CisKKyAgICAgICAgcmV0dXJuIFdlYlRleHRJbnB1dFR5cGVUZXh0
QXJlYTsKICAgICB9CiAKLSAgICAvLyBGb3Igb3RoZXIgc2l0dWF0aW9ucy4KICAgICBpZiAobm9k
ZS0+c2hvdWxkVXNlSW5wdXRNZXRob2QoKSkKLSAgICAgICAgcmV0dXJuIFdlYlRleHRJbnB1dFR5
cGVUZXh0OworICAgICAgICByZXR1cm4gV2ViVGV4dElucHV0VHlwZUNvbnRlbnRFZGl0YWJsZTsK
IAogICAgIHJldHVybiBXZWJUZXh0SW5wdXRUeXBlTm9uZTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAkocmV2aXNpb24gMTE3MTk5KQorKysgU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtMTQ1
LDYgKzE0NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgY29uZmlybUNvbXBvc2l0aW9u
KCk7CiAgICAgdmlydHVhbCBib29sIGNvbmZpcm1Db21wb3NpdGlvbihjb25zdCBXZWJTdHJpbmcm
IHRleHQpOwogICAgIHZpcnR1YWwgYm9vbCBjb21wb3NpdGlvblJhbmdlKHNpemVfdCogbG9jYXRp
b24sIHNpemVfdCogbGVuZ3RoKTsKKyAgICB2aXJ0dWFsIFdlYlRleHRJbnB1dEluZm8gdGV4dElu
cHV0SW5mbygpOwogICAgIHZpcnR1YWwgV2ViVGV4dElucHV0VHlwZSB0ZXh0SW5wdXRUeXBlKCk7
CiAgICAgdmlydHVhbCBib29sIHNlbGVjdGlvbkJvdW5kcyhXZWJSZWN0JiBzdGFydCwgV2ViUmVj
dCYgZW5kKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgY2FyZXRPclNlbGVjdGlvblJhbmdlKHNp
emVfdCogbG9jYXRpb24sIHNpemVfdCogbGVuZ3RoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>142125</attachid>
            <date>2012-05-15 19:04:13 -0700</date>
            <delta_ts>2012-05-16 19:31:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-86440-20120515190411.patch</filename>
            <type>text/plain</type>
            <size>16901</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiAxMTcxOTkpCisrKyBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1
IEBACisyMDEyLTA1LTE1ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgW0Nocm9taXVtXSBJbXBsZW1lbnQgV2ViVmlld0ltcGw6OnRleHRJbnB1dEluZm8oKSBmb3Ig
QW5kcm9pZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
ODY0NDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
aGlzIHBhdGNoIGFkZHMgV2ViVmlldzo6dGV4dElucHV0SW5mbygpLCB3aGljaCBkZXNjcmliZXMg
dGhlIHRleHQKKyAgICAgICAgaW5wdXQgdGhhdCBjdXJyZW50bHkgaGFzIGZvY3VzLiAgQW5kcm9p
ZCBpcyBwbGFubmluZyB0byB1c2UgdGhpcyB0bworICAgICAgICBkZXRlcm1pbmUgd2hhdCBzb3J0
IG9mIGtleWJvYXJkIG9yIHRleHQgZW50cnkgVUkgdG8gc2hvdy4gIFRoaXMgQVBJCisgICAgICAg
IHN1YnN1bWVzIHRoZSB0ZXh0SW5wdXRUeXBlKCkgQVBJLCB3aGljaCB3aWxsIGJlIHJlbW92ZWQg
b25jZSB0aGUKKyAgICAgICAgY2xpZW50cyBoYXZlIGJlZW4gdXBkYXRlZC4KKworICAgICAgICAq
IFdlYktpdC5neXA6CisgICAgICAgICogcHVibGljL1dlYlRleHRJbnB1dEluZm8uaDogQWRkZWQu
CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViVGV4dElucHV0SW5mbyk6CisgICAgICAg
IChXZWJLaXQ6OldlYlRleHRJbnB1dEluZm86OldlYlRleHRJbnB1dEluZm8pOgorICAgICAgICAo
V2ViS2l0OjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdlYktpdDo6b3BlcmF0b3IhPSk6CisgICAg
ICAgICogcHVibGljL1dlYlRleHRJbnB1dFR5cGUuaDoKKyAgICAgICAgKiBwdWJsaWMvV2ViV2lk
Z2V0Lmg6CisgICAgICAgIChXZWJXaWRnZXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJXaWRnZXQ6
OnRleHRJbnB1dEluZm8pOgorICAgICAgICAoV2ViS2l0OjpXZWJXaWRnZXQ6OnRleHRJbnB1dFR5
cGUpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlZpZXdJbXBsOjp0ZXh0SW5wdXRJbmZvKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlZpZXdJbXBsOjp0ZXh0SW5wdXRUeXBlKToKKyAgICAgICAgKiBzcmMvV2ViVmll
d0ltcGwuaDoKKyAgICAgICAgKFdlYlZpZXdJbXBsKToKKwogMjAxMi0wNS0xNSAgU2hhd24gU2lu
Z2ggIDxzaGF3bnNpbmdoQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIEFkZCB1
bml0IHRlc3RpbmcgdG8gV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vV2ViS2l0Lmd5cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL1dlYktpdC5neXAJKHJldmlzaW9uIDExNzE5OSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vV2ViS2l0Lmd5cAkod29ya2luZyBjb3B5KQpAQCAtMjcxLDYgKzI3MSw3IEBACiAgICAgICAg
ICAgICAgICAgJ3B1YmxpYy9XZWJUZXh0Q2hlY2tpbmdSZXN1bHQuaCcsCiAgICAgICAgICAgICAg
ICAgJ3B1YmxpYy9XZWJUZXh0RGlyZWN0aW9uLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMv
V2ViVGV4dEZpZWxkRGVjb3JhdG9yQ2xpZW50LmgnLAorICAgICAgICAgICAgICAgICdwdWJsaWMv
V2ViVGV4dElucHV0SW5mby5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYlRleHRJbnB1
dFR5cGUuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJUZXh0UnVuLmgnLAogICAgICAg
ICAgICAgICAgICdwdWJsaWMvV2ViVGltZVJhbmdlLmgnLApAQCAtNjU4LDYgKzY1OSw3IEBACiAg
ICAgICAgICAgICAgICAgJ3NyYy9XZWJTdG9yYWdlUXVvdGFDYWxsYmFja3NJbXBsLmNwcCcsCiAg
ICAgICAgICAgICAgICAgJ3NyYy9XZWJTdG9yYWdlUXVvdGFDYWxsYmFja3NJbXBsLmgnLAogICAg
ICAgICAgICAgICAgICdzcmMvV2ViU3Vycm91bmRpbmdUZXh0LmNwcCcsCisgICAgICAgICAgICAg
ICAgJ3NyYy9XZWJUZXh0SW5wdXRJbmZvLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJU
ZXh0UnVuLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJVUkxMb2FkVGltaW5nLmNwcCcs
CiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJTY29wZWRVc2VyR2VzdHVyZS5jcHAnLApJbmRleDog
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVGV4dElucHV0SW5mby5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlRleHRJbnB1dEluZm8uaAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlRleHRJbnB1
dEluZm8uaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3OCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05U
UklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2Vi
VGV4dElucHV0SW5mb19oCisjZGVmaW5lIFdlYlRleHRJbnB1dEluZm9faAorCisjaW5jbHVkZSAi
V2ViVGV4dElucHV0VHlwZS5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlN0cmluZy5oIgorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworc3RydWN0IFdlYlRleHRJbnB1dEluZm8geworICAgIFdlYlRl
eHRJbnB1dFR5cGUgdHlwZTsKKworICAgIC8vIFRoZSB2YWx1ZSBvZiB0aGUgY3VycmVudGx5IGZv
Y3VzZWQgaW5wdXQgZmllbGQuCisgICAgV2ViU3RyaW5nIHZhbHVlOworCisgICAgLy8gVGhlIGN1
cnNvciBwb3NpdGlvbiBvZiB0aGUgY3VycmVudCBzZWxlY3Rpb24gc3RhcnQsIG9yIHRoZSBjYXJl
dCBwb3NpdGlvbgorICAgIC8vIGlmIG5vdGhpbmcgaXMgc2VsZWN0ZWQuCisgICAgaW50IHNlbGVj
dGlvblN0YXJ0OworCisgICAgLy8gVGhlIGN1cnNvciBwb3NpdGlvbiBvZiB0aGUgY3VycmVudCBz
ZWxlY3Rpb24gZW5kLCBvciB0aGUgY2FyZXQgcG9zaXRpb24KKyAgICAvLyBpZiBub3RoaW5nIGlz
IHNlbGVjdGVkLgorICAgIGludCBzZWxlY3Rpb25FbmQ7CisKKyAgICAvLyBUaGUgc3RhcnQgcG9z
aXRpb24gb2YgdGhlIGN1cnJlbnQgY29tcG9zaXRpb24sIG9yIC0xIGlmIHRoZXJlIGlzIG5vbmUu
CisgICAgaW50IGNvbXBvc2l0aW9uU3RhcnQ7CisKKyAgICAvLyBUaGUgZW5kIHBvc2l0aW9uIG9m
IHRoZSBjdXJyZW50IGNvbXBvc2l0aW9uLCBvciAtMSBpZiB0aGVyZSBpcyBub25lLgorICAgIGlu
dCBjb21wb3NpdGlvbkVuZDsKKworICAgIFdFQktJVF9FWFBPUlQgYm9vbCBlcXVhbHMoY29uc3Qg
V2ViVGV4dElucHV0SW5mbyYpIGNvbnN0OworCisgICAgV2ViVGV4dElucHV0SW5mbygpCisgICAg
ICAgIDogdHlwZShXZWJUZXh0SW5wdXRUeXBlTm9uZSkKKyAgICAgICAgLCBzZWxlY3Rpb25TdGFy
dCgwKQorICAgICAgICAsIHNlbGVjdGlvbkVuZCgwKQorICAgICAgICAsIGNvbXBvc2l0aW9uU3Rh
cnQoLTEpCisgICAgICAgICwgY29tcG9zaXRpb25FbmQoLTEpCisgICAgeworICAgIH0KK307CisK
K2lubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgV2ViVGV4dElucHV0SW5mbyYgYSwgY29uc3Qg
V2ViVGV4dElucHV0SW5mbyYgYikKK3sKKyAgICByZXR1cm4gYS5lcXVhbHMoYik7Cit9CisKK2lu
bGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgV2ViVGV4dElucHV0SW5mbyYgYSwgY29uc3QgV2Vi
VGV4dElucHV0SW5mbyYgYikKK3sKKyAgICByZXR1cm4gIShhID09IGIpOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJUZXh0SW5wdXRUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViVGV4dElucHV0VHlwZS5oCShyZXZpc2lvbiAxMTcxOTkpCisrKyBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJUZXh0SW5wdXRUeXBlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM5LDYgKzM5LDggQEAgZW51bSBXZWJUZXh0SW5wdXRUeXBlIHsKIAogICAgIC8vIElu
cHV0IGNhcmV0IGlzIGluIGEgbm9ybWFsIGVkaXRhYmxlIG5vZGUsIGFueSBpbnB1dCBtZXRob2Qg
Y2FuIGJlIHVzZWQuCiAgICAgV2ViVGV4dElucHV0VHlwZVRleHQsCisgICAgV2ViVGV4dElucHV0
VHlwZVRleHRBcmVhLAorICAgIFdlYlRleHRJbnB1dFR5cGVDb250ZW50RWRpdGFibGUsCiAKICAg
ICAvLyBJbnB1dCBjYXJldCBpcyBpbiBhIHNwZWNpZmljIGlucHV0IGZpZWxkLCBhbmQgaW5wdXQg
bWV0aG9kIG1heSBiZSB1c2VkCiAgICAgLy8gb25seSBpZiBpdCdzIHN1aXRhYmxlIGZvciB0aGUg
c3BlY2lmaWMgaW5wdXQgZmllbGQuCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJXaWRnZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJXaWRnZXQuaAkocmV2aXNpb24gMTE3MTk5KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViV2lkZ2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDggKzMyLDggQEAKICNk
ZWZpbmUgV2ViV2lkZ2V0X2gKIAogI2luY2x1ZGUgIldlYkNvbXBvc2l0aW9uVW5kZXJsaW5lLmgi
Ci0jaW5jbHVkZSAiV2ViVGV4dElucHV0VHlwZS5oIgogI2luY2x1ZGUgIldlYlRleHREaXJlY3Rp
b24uaCIKKyNpbmNsdWRlICJXZWJUZXh0SW5wdXRJbmZvLmgiCiAjaW5jbHVkZSAicGxhdGZvcm0v
V2ViQ2FudmFzLmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViQ29tbW9uLmgiCiAjaW5jbHVkZSAi
cGxhdGZvcm0vV2ViUmVjdC5oIgpAQCAtMTcwLDggKzE3MCwxMiBAQCBwdWJsaWM6CiAgICAgLy8g
cmV0dXJucyBmYWxzZSBvbiBmYWlsdXJlLgogICAgIHZpcnR1YWwgYm9vbCBjb21wb3NpdGlvblJh
bmdlKHNpemVfdCogbG9jYXRpb24sIHNpemVfdCogbGVuZ3RoKSB7IHJldHVybiBmYWxzZTsgfQog
CisgICAgLy8gUmV0dXJucyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY3VycmVudCB0ZXh0IGlucHV0
IG9mIHRoaXMgV2ViV2lkZ2V0LgorICAgIHZpcnR1YWwgV2ViVGV4dElucHV0SW5mbyB0ZXh0SW5w
dXRJbmZvKCkgeyByZXR1cm4gV2ViVGV4dElucHV0SW5mbygpOyB9CisKICAgICAvLyBSZXR1cm5z
IHRoZSBjdXJyZW50IHRleHQgaW5wdXQgdHlwZSBvZiB0aGlzIFdlYldpZGdldC4KLSAgICB2aXJ0
dWFsIFdlYlRleHRJbnB1dFR5cGUgdGV4dElucHV0VHlwZSgpIHsgcmV0dXJuIFdlYktpdDo6V2Vi
VGV4dElucHV0VHlwZU5vbmU7IH0KKyAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgbWV0aG9kLiBJ
dCdzIHJlZHVuZGFudCB3aXRoIHRleHRJbnB1dEluZm8oKS4KKyAgICB2aXJ0dWFsIFdlYlRleHRJ
bnB1dFR5cGUgdGV4dElucHV0VHlwZSgpIHsgcmV0dXJuIFdlYlRleHRJbnB1dFR5cGVOb25lOyB9
CiAKICAgICAvLyBSZXR1cm5zIHRoZSBzdGFydCBhbmQgZW5kIGJvdW5kcyBvZiB0aGUgY3VycmVu
dCBzZWxlY3Rpb24uCiAgICAgLy8gSWYgdGhlIHNlbGVjdGlvbiByYW5nZSBpcyBlbXB0eSwgaXQg
cmV0dXJucyB0aGUgY2FyZXQgYm91bmRzLgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViVGV4dElucHV0SW5mby5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViVGV4dElucHV0SW5mby5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJUZXh0SW5wdXRJbmZvLmNwcAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0
OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
CisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJUZXh0SW5wdXRJbmZv
LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitib29sIFdlYlRleHRJbnB1dEluZm86OmVxdWFs
cyhjb25zdCBXZWJUZXh0SW5wdXRJbmZvJiBvdGhlcikgY29uc3QKK3sKKyAgICByZXR1cm4gdHlw
ZSA9PSBvdGhlci50eXBlCisgICAgICAgICYmIHZhbHVlID09IG90aGVyLnZhbHVlCisgICAgICAg
ICYmIHNlbGVjdGlvblN0YXJ0ID09IG90aGVyLnNlbGVjdGlvblN0YXJ0CisgICAgICAgICYmIHNl
bGVjdGlvbkVuZCA9PSBvdGhlci5zZWxlY3Rpb25FbmQKKyAgICAgICAgJiYgY29tcG9zaXRpb25T
dGFydCA9PSBvdGhlci5jb21wb3NpdGlvblN0YXJ0CisgICAgICAgICYmIGNvbXBvc2l0aW9uRW5k
ID09IG90aGVyLmNvbXBvc2l0aW9uRW5kOworCit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApJ
bmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAkocmV2aXNp
b24gMTE3MTk5KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsNiArMTEzLDcgQEAKICNpbmNsdWRlICJTcGVlY2hJbnB1
dENsaWVudEltcGwuaCIKICNpbmNsdWRlICJTcGVlY2hSZWNvZ25pdGlvbkNsaWVudFByb3h5Lmgi
CiAjaW5jbHVkZSAiU3R5bGVSZXNvbHZlci5oIgorI2luY2x1ZGUgIlRleHQuaCIKICNpbmNsdWRl
ICJUZXh0RmllbGREZWNvcmF0b3JJbXBsLmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCiAj
aW5jbHVkZSAiVGltZXIuaCIKQEAgLTE0MCw2ICsxNDEsNyBAQAogI2luY2x1ZGUgIldlYlJhbmdl
LmgiCiAjaW5jbHVkZSAiV2ViUnVudGltZUZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiV2ViU2V0dGlu
Z3NJbXBsLmgiCisjaW5jbHVkZSAiV2ViVGV4dElucHV0SW5mby5oIgogI2luY2x1ZGUgIldlYlZp
ZXdDbGllbnQuaCIKICNpbmNsdWRlICJXaGVlbEV2ZW50LmgiCiAjaW5jbHVkZSAiY2MvQ0NQcm94
eS5oIgpAQCAtMTg2NSw2MiArMTg2NywxMTUgQEAgYm9vbCBXZWJWaWV3SW1wbDo6Y29tcG9zaXRp
b25SYW5nZShzaXplXwogICAgIHJldHVybiBmYWxzZTsKIH0KIAorV2ViVGV4dElucHV0SW5mbyBX
ZWJWaWV3SW1wbDo6dGV4dElucHV0SW5mbygpCit7CisgICAgV2ViVGV4dElucHV0SW5mbyBpbmZv
OworCisgICAgRnJhbWUqIGZvY3VzZWQgPSBmb2N1c2VkV2ViQ29yZUZyYW1lKCk7CisgICAgaWYg
KCFmb2N1c2VkKQorICAgICAgICByZXR1cm4gaW5mbzsKKworICAgIEVkaXRvciogZWRpdG9yID0g
Zm9jdXNlZC0+ZWRpdG9yKCk7CisgICAgaWYgKCFlZGl0b3IgfHwgIWVkaXRvci0+Y2FuRWRpdCgp
KQorICAgICAgICByZXR1cm4gaW5mbzsKKworICAgIEZyYW1lU2VsZWN0aW9uKiBzZWxlY3Rpb24g
PSBmb2N1c2VkLT5zZWxlY3Rpb24oKTsKKyAgICBpZiAoIXNlbGVjdGlvbikKKyAgICAgICAgcmV0
dXJuIGluZm87CisKKyAgICBOb2RlKiBub2RlID0gZm9jdXNlZFdlYkNvcmVOb2RlKCk7CisgICAg
aWYgKCFub2RlKQorICAgICAgICByZXR1cm4gaW5mbzsKKworICAgIGluZm8udHlwZSA9IHRleHRJ
bnB1dFR5cGUoKTsKKyAgICBpZiAoaW5mby50eXBlID09IFdlYlRleHRJbnB1dFR5cGVOb25lKQor
ICAgICAgICByZXR1cm4gaW5mbzsKKworICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKEhUTUxOYW1l
czo6dGV4dGFyZWFUYWcpKQorICAgICAgICBpbmZvLnZhbHVlID0gc3RhdGljX2Nhc3Q8SFRNTFRl
eHRBcmVhRWxlbWVudCo+KG5vZGUpLT52YWx1ZSgpOworICAgIGVsc2UgaWYgKG5vZGUtPmhhc1Rh
Z05hbWUoSFRNTE5hbWVzOjppbnB1dFRhZykpCisgICAgICAgIGluZm8udmFsdWUgPSBzdGF0aWNf
Y2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4obm9kZSktPnZhbHVlKCk7CisgICAgZWxzZSBpZiAobm9k
ZS0+c2hvdWxkVXNlSW5wdXRNZXRob2QoKSkKKyAgICAgICAgaW5mby52YWx1ZSA9IG5vZGUtPm5v
ZGVWYWx1ZSgpOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIGluZm87CisKKyAgICBpZiAoaW5m
by52YWx1ZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBpbmZvOworCisgICAgaWYgKG5vZGUt
Pmhhc1RhZ05hbWUoSFRNTE5hbWVzOjp0ZXh0YXJlYVRhZykgfHwgbm9kZS0+aGFzVGFnTmFtZShI
VE1MTmFtZXM6OmlucHV0VGFnKSkgeworICAgICAgICBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVu
dCogZm9ybUVsZW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudCo+
KG5vZGUpOworICAgICAgICBpbmZvLnNlbGVjdGlvblN0YXJ0ID0gZm9ybUVsZW1lbnQtPnNlbGVj
dGlvblN0YXJ0KCk7CisgICAgICAgIGluZm8uc2VsZWN0aW9uRW5kID0gZm9ybUVsZW1lbnQtPnNl
bGVjdGlvbkVuZCgpOworICAgICAgICBpZiAoZWRpdG9yLT5oYXNDb21wb3NpdGlvbigpKSB7Cisg
ICAgICAgICAgICBpbmZvLmNvbXBvc2l0aW9uU3RhcnQgPSBmb3JtRWxlbWVudC0+aW5kZXhGb3JW
aXNpYmxlUG9zaXRpb24oUG9zaXRpb24oZWRpdG9yLT5jb21wb3NpdGlvbk5vZGUoKSwgZWRpdG9y
LT5jb21wb3NpdGlvblN0YXJ0KCkpKTsKKyAgICAgICAgICAgIGluZm8uY29tcG9zaXRpb25FbmQg
PSBmb3JtRWxlbWVudC0+aW5kZXhGb3JWaXNpYmxlUG9zaXRpb24oUG9zaXRpb24oZWRpdG9yLT5j
b21wb3NpdGlvbk5vZGUoKSwgZWRpdG9yLT5jb21wb3NpdGlvbkVuZCgpKSk7CisgICAgICAgIH0K
KyAgICB9IGVsc2UgeworICAgICAgICBpbmZvLnNlbGVjdGlvblN0YXJ0ID0gc2VsZWN0aW9uLT5z
dGFydCgpLmNvbXB1dGVPZmZzZXRJbkNvbnRhaW5lck5vZGUoKTsKKyAgICAgICAgaW5mby5zZWxl
Y3Rpb25FbmQgPSBzZWxlY3Rpb24tPmVuZCgpLmNvbXB1dGVPZmZzZXRJbkNvbnRhaW5lck5vZGUo
KTsKKyAgICAgICAgaWYgKGVkaXRvci0+aGFzQ29tcG9zaXRpb24oKSkgeworICAgICAgICAgICAg
aW5mby5jb21wb3NpdGlvblN0YXJ0ID0gc3RhdGljX2Nhc3Q8aW50PihlZGl0b3ItPmNvbXBvc2l0
aW9uU3RhcnQoKSk7CisgICAgICAgICAgICBpbmZvLmNvbXBvc2l0aW9uRW5kID0gc3RhdGljX2Nh
c3Q8aW50PihlZGl0b3ItPmNvbXBvc2l0aW9uRW5kKCkpOworICAgICAgICB9CisgICAgfQorCisg
ICAgcmV0dXJuIGluZm87Cit9CisKIFdlYlRleHRJbnB1dFR5cGUgV2ViVmlld0ltcGw6OnRleHRJ
bnB1dFR5cGUoKQogewogICAgIE5vZGUqIG5vZGUgPSBmb2N1c2VkV2ViQ29yZU5vZGUoKTsKICAg
ICBpZiAoIW5vZGUpCiAgICAgICAgIHJldHVybiBXZWJUZXh0SW5wdXRUeXBlTm9uZTsKIAotICAg
IGlmIChub2RlLT5ub2RlVHlwZSgpID09IE5vZGU6OkVMRU1FTlRfTk9ERSkgewotICAgICAgICBF
bGVtZW50KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG5vZGUpOwotICAgICAgICBp
ZiAoZWxlbWVudC0+aGFzTG9jYWxOYW1lKEhUTUxOYW1lczo6aW5wdXRUYWcpKSB7Ci0gICAgICAg
ICAgICBIVE1MSW5wdXRFbGVtZW50KiBpbnB1dCA9IHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1l
bnQqPihlbGVtZW50KTsKKyAgICBpZiAobm9kZS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OmlucHV0
VGFnKSkgeworICAgICAgICBIVE1MSW5wdXRFbGVtZW50KiBpbnB1dCA9IHN0YXRpY19jYXN0PEhU
TUxJbnB1dEVsZW1lbnQqPihub2RlKTsKIAotICAgICAgICAgICAgaWYgKGlucHV0LT5yZWFkT25s
eSgpIHx8IGlucHV0LT5kaXNhYmxlZCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBXZWJUZXh0
SW5wdXRUeXBlTm9uZTsKKyAgICAgICAgaWYgKGlucHV0LT5yZWFkT25seSgpIHx8IGlucHV0LT5k
aXNhYmxlZCgpKQorICAgICAgICAgICAgcmV0dXJuIFdlYlRleHRJbnB1dFR5cGVOb25lOwogCi0g
ICAgICAgICAgICBpZiAoaW5wdXQtPmlzUGFzc3dvcmRGaWVsZCgpKQotICAgICAgICAgICAgICAg
IHJldHVybiBXZWJUZXh0SW5wdXRUeXBlUGFzc3dvcmQ7Ci0gICAgICAgICAgICBpZiAoaW5wdXQt
PmlzU2VhcmNoRmllbGQoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gV2ViVGV4dElucHV0VHlw
ZVNlYXJjaDsKLSAgICAgICAgICAgIGlmIChpbnB1dC0+aXNFbWFpbEZpZWxkKCkpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIFdlYlRleHRJbnB1dFR5cGVFbWFpbDsKLSAgICAgICAgICAgIGlmIChp
bnB1dC0+aXNOdW1iZXJGaWVsZCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBXZWJUZXh0SW5w
dXRUeXBlTnVtYmVyOwotICAgICAgICAgICAgaWYgKGlucHV0LT5pc1RlbGVwaG9uZUZpZWxkKCkp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFdlYlRleHRJbnB1dFR5cGVUZWxlcGhvbmU7Ci0gICAg
ICAgICAgICBpZiAoaW5wdXQtPmlzVVJMRmllbGQoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4g
V2ViVGV4dElucHV0VHlwZVVSTDsKLSAgICAgICAgICAgIGlmIChpbnB1dC0+aXNEYXRlRmllbGQo
KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gV2ViVGV4dElucHV0VHlwZURhdGU7Ci0gICAgICAg
ICAgICBpZiAoaW5wdXQtPmlzRGF0ZVRpbWVGaWVsZCgpKQotICAgICAgICAgICAgICAgIHJldHVy
biBXZWJUZXh0SW5wdXRUeXBlRGF0ZVRpbWU7Ci0gICAgICAgICAgICBpZiAoaW5wdXQtPmlzRGF0
ZVRpbWVMb2NhbEZpZWxkKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdlYlRleHRJbnB1dFR5
cGVEYXRlVGltZUxvY2FsOwotICAgICAgICAgICAgaWYgKGlucHV0LT5pc01vbnRoRmllbGQoKSkK
LSAgICAgICAgICAgICAgICByZXR1cm4gV2ViVGV4dElucHV0VHlwZU1vbnRoOwotICAgICAgICAg
ICAgaWYgKGlucHV0LT5pc1RpbWVGaWVsZCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBXZWJU
ZXh0SW5wdXRUeXBlVGltZTsKLSAgICAgICAgICAgIGlmIChpbnB1dC0+aXNXZWVrRmllbGQoKSkK
LSAgICAgICAgICAgICAgICByZXR1cm4gV2ViVGV4dElucHV0VHlwZVdlZWs7Ci0gICAgICAgICAg
ICBpZiAoaW5wdXQtPmlzVGV4dEZpZWxkKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdlYlRl
eHRJbnB1dFR5cGVUZXh0OworICAgICAgICBpZiAoaW5wdXQtPmlzUGFzc3dvcmRGaWVsZCgpKQor
ICAgICAgICAgICAgcmV0dXJuIFdlYlRleHRJbnB1dFR5cGVQYXNzd29yZDsKKyAgICAgICAgaWYg
KGlucHV0LT5pc1NlYXJjaEZpZWxkKCkpCisgICAgICAgICAgICByZXR1cm4gV2ViVGV4dElucHV0
VHlwZVNlYXJjaDsKKyAgICAgICAgaWYgKGlucHV0LT5pc0VtYWlsRmllbGQoKSkKKyAgICAgICAg
ICAgIHJldHVybiBXZWJUZXh0SW5wdXRUeXBlRW1haWw7CisgICAgICAgIGlmIChpbnB1dC0+aXNO
dW1iZXJGaWVsZCgpKQorICAgICAgICAgICAgcmV0dXJuIFdlYlRleHRJbnB1dFR5cGVOdW1iZXI7
CisgICAgICAgIGlmIChpbnB1dC0+aXNUZWxlcGhvbmVGaWVsZCgpKQorICAgICAgICAgICAgcmV0
dXJuIFdlYlRleHRJbnB1dFR5cGVUZWxlcGhvbmU7CisgICAgICAgIGlmIChpbnB1dC0+aXNVUkxG
aWVsZCgpKQorICAgICAgICAgICAgcmV0dXJuIFdlYlRleHRJbnB1dFR5cGVVUkw7CisgICAgICAg
IGlmIChpbnB1dC0+aXNEYXRlRmllbGQoKSkKKyAgICAgICAgICAgIHJldHVybiBXZWJUZXh0SW5w
dXRUeXBlRGF0ZTsKKyAgICAgICAgaWYgKGlucHV0LT5pc0RhdGVUaW1lRmllbGQoKSkKKyAgICAg
ICAgICAgIHJldHVybiBXZWJUZXh0SW5wdXRUeXBlRGF0ZVRpbWU7CisgICAgICAgIGlmIChpbnB1
dC0+aXNEYXRlVGltZUxvY2FsRmllbGQoKSkKKyAgICAgICAgICAgIHJldHVybiBXZWJUZXh0SW5w
dXRUeXBlRGF0ZVRpbWVMb2NhbDsKKyAgICAgICAgaWYgKGlucHV0LT5pc01vbnRoRmllbGQoKSkK
KyAgICAgICAgICAgIHJldHVybiBXZWJUZXh0SW5wdXRUeXBlTW9udGg7CisgICAgICAgIGlmIChp
bnB1dC0+aXNUaW1lRmllbGQoKSkKKyAgICAgICAgICAgIHJldHVybiBXZWJUZXh0SW5wdXRUeXBl
VGltZTsKKyAgICAgICAgaWYgKGlucHV0LT5pc1dlZWtGaWVsZCgpKQorICAgICAgICAgICAgcmV0
dXJuIFdlYlRleHRJbnB1dFR5cGVXZWVrOworICAgICAgICBpZiAoaW5wdXQtPmlzVGV4dEZpZWxk
KCkpCisgICAgICAgICAgICByZXR1cm4gV2ViVGV4dElucHV0VHlwZVRleHQ7CiAKLSAgICAgICAg
ICAgIHJldHVybiBXZWJUZXh0SW5wdXRUeXBlTm9uZTsKLSAgICAgICAgfQorICAgICAgICByZXR1
cm4gV2ViVGV4dElucHV0VHlwZU5vbmU7CisgICAgfQogCi0gICAgICAgIGlmIChlbGVtZW50LT5o
YXNMb2NhbE5hbWUoSFRNTE5hbWVzOjp0ZXh0YXJlYVRhZykpIHsKLSAgICAgICAgICAgIEhUTUxU
ZXh0QXJlYUVsZW1lbnQqIHRleHRhcmVhID0gc3RhdGljX2Nhc3Q8SFRNTFRleHRBcmVhRWxlbWVu
dCo+KGVsZW1lbnQpOworICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6dGV4dGFy
ZWFUYWcpKSB7CisgICAgICAgIEhUTUxUZXh0QXJlYUVsZW1lbnQqIHRleHRhcmVhID0gc3RhdGlj
X2Nhc3Q8SFRNTFRleHRBcmVhRWxlbWVudCo+KG5vZGUpOwogCi0gICAgICAgICAgICBpZiAodGV4
dGFyZWEtPnJlYWRPbmx5KCkgfHwgdGV4dGFyZWEtPmRpc2FibGVkKCkpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIFdlYlRleHRJbnB1dFR5cGVOb25lOwotICAgICAgICAgICAgcmV0dXJuIFdlYlRl
eHRJbnB1dFR5cGVUZXh0OwotICAgICAgICB9CisgICAgICAgIGlmICh0ZXh0YXJlYS0+cmVhZE9u
bHkoKSB8fCB0ZXh0YXJlYS0+ZGlzYWJsZWQoKSkKKyAgICAgICAgICAgIHJldHVybiBXZWJUZXh0
SW5wdXRUeXBlTm9uZTsKKworICAgICAgICByZXR1cm4gV2ViVGV4dElucHV0VHlwZVRleHRBcmVh
OwogICAgIH0KIAotICAgIC8vIEZvciBvdGhlciBzaXR1YXRpb25zLgogICAgIGlmIChub2RlLT5z
aG91bGRVc2VJbnB1dE1ldGhvZCgpKQotICAgICAgICByZXR1cm4gV2ViVGV4dElucHV0VHlwZVRl
eHQ7CisgICAgICAgIHJldHVybiBXZWJUZXh0SW5wdXRUeXBlQ29udGVudEVkaXRhYmxlOwogCiAg
ICAgcmV0dXJuIFdlYlRleHRJbnB1dFR5cGVOb25lOwogfQpJbmRleDogU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCShyZXZpc2lvbiAxMTcxOTkpCisrKyBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDUsNiAr
MTQ1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBjb25maXJtQ29tcG9zaXRpb24oKTsK
ICAgICB2aXJ0dWFsIGJvb2wgY29uZmlybUNvbXBvc2l0aW9uKGNvbnN0IFdlYlN0cmluZyYgdGV4
dCk7CiAgICAgdmlydHVhbCBib29sIGNvbXBvc2l0aW9uUmFuZ2Uoc2l6ZV90KiBsb2NhdGlvbiwg
c2l6ZV90KiBsZW5ndGgpOworICAgIHZpcnR1YWwgV2ViVGV4dElucHV0SW5mbyB0ZXh0SW5wdXRJ
bmZvKCk7CiAgICAgdmlydHVhbCBXZWJUZXh0SW5wdXRUeXBlIHRleHRJbnB1dFR5cGUoKTsKICAg
ICB2aXJ0dWFsIGJvb2wgc2VsZWN0aW9uQm91bmRzKFdlYlJlY3QmIHN0YXJ0LCBXZWJSZWN0JiBl
bmQpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBjYXJldE9yU2VsZWN0aW9uUmFuZ2Uoc2l6ZV90
KiBsb2NhdGlvbiwgc2l6ZV90KiBsZW5ndGgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>142396</attachid>
            <date>2012-05-16 19:31:21 -0700</date>
            <delta_ts>2012-05-20 23:05:32 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-86440-20120516193126.patch</filename>
            <type>text/plain</type>
            <size>16915</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiAxMTczODEpCisrKyBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1
IEBACisyMDEyLTA1LTE2ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgW0Nocm9taXVtXSBJbXBsZW1lbnQgV2ViVmlld0ltcGw6OnRleHRJbnB1dEluZm8oKSBmb3Ig
QW5kcm9pZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
ODY0NDAKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBGaXNoZXIuCisKKyAgICAgICAgVGhp
cyBwYXRjaCBhZGRzIFdlYlZpZXc6OnRleHRJbnB1dEluZm8oKSwgd2hpY2ggZGVzY3JpYmVzIHRo
ZSB0ZXh0CisgICAgICAgIGlucHV0IHRoYXQgY3VycmVudGx5IGhhcyBmb2N1cy4gIEFuZHJvaWQg
aXMgcGxhbm5pbmcgdG8gdXNlIHRoaXMgdG8KKyAgICAgICAgZGV0ZXJtaW5lIHdoYXQgc29ydCBv
ZiBrZXlib2FyZCBvciB0ZXh0IGVudHJ5IFVJIHRvIHNob3cuICBUaGlzIEFQSQorICAgICAgICBz
dWJzdW1lcyB0aGUgdGV4dElucHV0VHlwZSgpIEFQSSwgd2hpY2ggd2lsbCBiZSByZW1vdmVkIG9u
Y2UgdGhlCisgICAgICAgIGNsaWVudHMgaGF2ZSBiZWVuIHVwZGF0ZWQuCisKKyAgICAgICAgKiBX
ZWJLaXQuZ3lwOgorICAgICAgICAqIHB1YmxpYy9XZWJUZXh0SW5wdXRJbmZvLmg6IEFkZGVkLgor
ICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYlRleHRJbnB1dEluZm8pOgorICAgICAgICAo
V2ViS2l0OjpXZWJUZXh0SW5wdXRJbmZvOjpXZWJUZXh0SW5wdXRJbmZvKToKKyAgICAgICAgKFdl
YktpdDo6b3BlcmF0b3I9PSk6CisgICAgICAgIChXZWJLaXQ6Om9wZXJhdG9yIT0pOgorICAgICAg
ICAqIHB1YmxpYy9XZWJUZXh0SW5wdXRUeXBlLmg6CisgICAgICAgICogcHVibGljL1dlYldpZGdl
dC5oOgorICAgICAgICAoV2ViV2lkZ2V0KToKKyAgICAgICAgKFdlYktpdDo6V2ViV2lkZ2V0Ojp0
ZXh0SW5wdXRJbmZvKToKKyAgICAgICAgKFdlYktpdDo6V2ViV2lkZ2V0Ojp0ZXh0SW5wdXRUeXBl
KToKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJW
aWV3SW1wbDo6dGV4dElucHV0SW5mbyk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJWaWV3SW1wbDo6dGV4dElucHV0VHlwZSk6CisgICAgICAgICogc3JjL1dlYlZpZXdJ
bXBsLmg6CisgICAgICAgIChXZWJWaWV3SW1wbCk6CisKIDIwMTItMDUtMTYgIEphbWVzIFJvYmlu
c29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KIAogICAgICAgICBHcmFwaGljc0NvbnRleHQzRCBp
bnRlcmZhY2Ugc2hvdWxkIG5vdCBiZSBhd2FyZSBvZiBDYW52YXNSZW5kZXJpbmdDb250ZXh0Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCShyZXZpc2lvbiAxMTczODEpCisrKyBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAJKHdvcmtpbmcgY29weSkKQEAgLTI3Miw2ICsy
NzIsNyBAQAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViVGV4dENoZWNraW5nUmVzdWx0Lmgn
LAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViVGV4dERpcmVjdGlvbi5oJywKICAgICAgICAg
ICAgICAgICAncHVibGljL1dlYlRleHRGaWVsZERlY29yYXRvckNsaWVudC5oJywKKyAgICAgICAg
ICAgICAgICAncHVibGljL1dlYlRleHRJbnB1dEluZm8uaCcsCiAgICAgICAgICAgICAgICAgJ3B1
YmxpYy9XZWJUZXh0SW5wdXRUeXBlLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViVGV4
dFJ1bi5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYlRpbWVSYW5nZS5oJywKQEAgLTY1
Nyw2ICs2NTgsNyBAQAogICAgICAgICAgICAgICAgICdzcmMvV2ViU3RvcmFnZVF1b3RhQ2FsbGJh
Y2tzSW1wbC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViU3RvcmFnZVF1b3RhQ2FsbGJh
Y2tzSW1wbC5oJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYlN1cnJvdW5kaW5nVGV4dC5jcHAn
LAorICAgICAgICAgICAgICAgICdzcmMvV2ViVGV4dElucHV0SW5mby5jcHAnLAogICAgICAgICAg
ICAgICAgICdzcmMvV2ViVGV4dFJ1bi5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViVVJM
TG9hZFRpbWluZy5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViU2NvcGVkVXNlckdlc3R1
cmUuY3BwJywKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlRleHRJbnB1
dEluZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJU
ZXh0SW5wdXRJbmZvLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJUZXh0SW5wdXRJbmZvLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzggQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAor
ICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIFdlYlRleHRJbnB1dEluZm9faAorI2RlZmluZSBXZWJUZXh0SW5wdXRJbmZv
X2gKKworI2luY2x1ZGUgIldlYlRleHRJbnB1dFR5cGUuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9X
ZWJTdHJpbmcuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0cnVjdCBXZWJUZXh0SW5wdXRJ
bmZvIHsKKyAgICBXZWJUZXh0SW5wdXRUeXBlIHR5cGU7CisKKyAgICAvLyBUaGUgdmFsdWUgb2Yg
dGhlIGN1cnJlbnRseSBmb2N1c2VkIGlucHV0IGZpZWxkLgorICAgIFdlYlN0cmluZyB2YWx1ZTsK
KworICAgIC8vIFRoZSBjdXJzb3IgcG9zaXRpb24gb2YgdGhlIGN1cnJlbnQgc2VsZWN0aW9uIHN0
YXJ0LCBvciB0aGUgY2FyZXQgcG9zaXRpb24KKyAgICAvLyBpZiBub3RoaW5nIGlzIHNlbGVjdGVk
LgorICAgIGludCBzZWxlY3Rpb25TdGFydDsKKworICAgIC8vIFRoZSBjdXJzb3IgcG9zaXRpb24g
b2YgdGhlIGN1cnJlbnQgc2VsZWN0aW9uIGVuZCwgb3IgdGhlIGNhcmV0IHBvc2l0aW9uCisgICAg
Ly8gaWYgbm90aGluZyBpcyBzZWxlY3RlZC4KKyAgICBpbnQgc2VsZWN0aW9uRW5kOworCisgICAg
Ly8gVGhlIHN0YXJ0IHBvc2l0aW9uIG9mIHRoZSBjdXJyZW50IGNvbXBvc2l0aW9uLCBvciAtMSBp
ZiB0aGVyZSBpcyBub25lLgorICAgIGludCBjb21wb3NpdGlvblN0YXJ0OworCisgICAgLy8gVGhl
IGVuZCBwb3NpdGlvbiBvZiB0aGUgY3VycmVudCBjb21wb3NpdGlvbiwgb3IgLTEgaWYgdGhlcmUg
aXMgbm9uZS4KKyAgICBpbnQgY29tcG9zaXRpb25FbmQ7CisKKyAgICBXRUJLSVRfRVhQT1JUIGJv
b2wgZXF1YWxzKGNvbnN0IFdlYlRleHRJbnB1dEluZm8mKSBjb25zdDsKKworICAgIFdlYlRleHRJ
bnB1dEluZm8oKQorICAgICAgICA6IHR5cGUoV2ViVGV4dElucHV0VHlwZU5vbmUpCisgICAgICAg
ICwgc2VsZWN0aW9uU3RhcnQoMCkKKyAgICAgICAgLCBzZWxlY3Rpb25FbmQoMCkKKyAgICAgICAg
LCBjb21wb3NpdGlvblN0YXJ0KC0xKQorICAgICAgICAsIGNvbXBvc2l0aW9uRW5kKC0xKQorICAg
IHsKKyAgICB9Cit9OworCitpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFdlYlRleHRJbnB1
dEluZm8mIGEsIGNvbnN0IFdlYlRleHRJbnB1dEluZm8mIGIpCit7CisgICAgcmV0dXJuIGEuZXF1
YWxzKGIpOworfQorCitpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFdlYlRleHRJbnB1dElu
Zm8mIGEsIGNvbnN0IFdlYlRleHRJbnB1dEluZm8mIGIpCit7CisgICAgcmV0dXJuICEoYSA9PSBi
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpJbmRleDogU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVGV4dElucHV0VHlwZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlRleHRJbnB1dFR5cGUuaAkocmV2aXNpb24g
MTE3MzgxKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVGV4dElucHV0VHlw
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw4IEBAIGVudW0gV2ViVGV4dElucHV0VHlw
ZSB7CiAKICAgICAvLyBJbnB1dCBjYXJldCBpcyBpbiBhIG5vcm1hbCBlZGl0YWJsZSBub2RlLCBh
bnkgaW5wdXQgbWV0aG9kIGNhbiBiZSB1c2VkLgogICAgIFdlYlRleHRJbnB1dFR5cGVUZXh0LAor
ICAgIFdlYlRleHRJbnB1dFR5cGVUZXh0QXJlYSwKKyAgICBXZWJUZXh0SW5wdXRUeXBlQ29udGVu
dEVkaXRhYmxlLAogCiAgICAgLy8gSW5wdXQgY2FyZXQgaXMgaW4gYSBzcGVjaWZpYyBpbnB1dCBm
aWVsZCwgYW5kIGlucHV0IG1ldGhvZCBtYXkgYmUgdXNlZAogICAgIC8vIG9ubHkgaWYgaXQncyBz
dWl0YWJsZSBmb3IgdGhlIHNwZWNpZmljIGlucHV0IGZpZWxkLgpJbmRleDogU291cmNlL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViV2lkZ2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViV2lkZ2V0LmgJKHJldmlzaW9uIDExNzM4MSkKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYldpZGdldC5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
Miw4ICszMiw4IEBACiAjZGVmaW5lIFdlYldpZGdldF9oCiAKICNpbmNsdWRlICJXZWJDb21wb3Np
dGlvblVuZGVybGluZS5oIgotI2luY2x1ZGUgIldlYlRleHRJbnB1dFR5cGUuaCIKICNpbmNsdWRl
ICJXZWJUZXh0RGlyZWN0aW9uLmgiCisjaW5jbHVkZSAiV2ViVGV4dElucHV0SW5mby5oIgogI2lu
Y2x1ZGUgInBsYXRmb3JtL1dlYkNhbnZhcy5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYkNvbW1v
bi5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYlJlY3QuaCIKQEAgLTE3MCw4ICsxNzAsMTIgQEAg
cHVibGljOgogICAgIC8vIHJldHVybnMgZmFsc2Ugb24gZmFpbHVyZS4KICAgICB2aXJ0dWFsIGJv
b2wgY29tcG9zaXRpb25SYW5nZShzaXplX3QqIGxvY2F0aW9uLCBzaXplX3QqIGxlbmd0aCkgeyBy
ZXR1cm4gZmFsc2U7IH0KIAorICAgIC8vIFJldHVybnMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGN1
cnJlbnQgdGV4dCBpbnB1dCBvZiB0aGlzIFdlYldpZGdldC4KKyAgICB2aXJ0dWFsIFdlYlRleHRJ
bnB1dEluZm8gdGV4dElucHV0SW5mbygpIHsgcmV0dXJuIFdlYlRleHRJbnB1dEluZm8oKTsgfQor
CiAgICAgLy8gUmV0dXJucyB0aGUgY3VycmVudCB0ZXh0IGlucHV0IHR5cGUgb2YgdGhpcyBXZWJX
aWRnZXQuCi0gICAgdmlydHVhbCBXZWJUZXh0SW5wdXRUeXBlIHRleHRJbnB1dFR5cGUoKSB7IHJl
dHVybiBXZWJLaXQ6OldlYlRleHRJbnB1dFR5cGVOb25lOyB9CisgICAgLy8gRklYTUU6IFJlbW92
ZSB0aGlzIG1ldGhvZC4gSXQncyByZWR1bmRhbnQgd2l0aCB0ZXh0SW5wdXRJbmZvKCkuCisgICAg
dmlydHVhbCBXZWJUZXh0SW5wdXRUeXBlIHRleHRJbnB1dFR5cGUoKSB7IHJldHVybiBXZWJUZXh0
SW5wdXRUeXBlTm9uZTsgfQogCiAgICAgLy8gUmV0dXJucyB0aGUgc3RhcnQgYW5kIGVuZCBib3Vu
ZHMgb2YgdGhlIGN1cnJlbnQgc2VsZWN0aW9uLgogICAgIC8vIElmIHRoZSBzZWxlY3Rpb24gcmFu
Z2UgaXMgZW1wdHksIGl0IHJldHVybnMgdGhlIGNhcmV0IGJvdW5kcy4KSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlRleHRJbnB1dEluZm8uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlRleHRJbnB1dEluZm8uY3BwCShyZXZpc2lvbiAw
KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVGV4dElucHV0SW5mby5jcHAJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
ICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
V2ViVGV4dElucHV0SW5mby5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworYm9vbCBXZWJUZXh0
SW5wdXRJbmZvOjplcXVhbHMoY29uc3QgV2ViVGV4dElucHV0SW5mbyYgb3RoZXIpIGNvbnN0Cit7
CisgICAgcmV0dXJuIHR5cGUgPT0gb3RoZXIudHlwZQorICAgICAgICAmJiB2YWx1ZSA9PSBvdGhl
ci52YWx1ZQorICAgICAgICAmJiBzZWxlY3Rpb25TdGFydCA9PSBvdGhlci5zZWxlY3Rpb25TdGFy
dAorICAgICAgICAmJiBzZWxlY3Rpb25FbmQgPT0gb3RoZXIuc2VsZWN0aW9uRW5kCisgICAgICAg
ICYmIGNvbXBvc2l0aW9uU3RhcnQgPT0gb3RoZXIuY29tcG9zaXRpb25TdGFydAorICAgICAgICAm
JiBjb21wb3NpdGlvbkVuZCA9PSBvdGhlci5jb21wb3NpdGlvbkVuZDsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1w
bC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0lt
cGwuY3BwCShyZXZpc2lvbiAxMTczODEpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJWaWV3SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMyw2ICsxMTMsNyBAQAogI2luY2x1
ZGUgIlNwZWVjaElucHV0Q2xpZW50SW1wbC5oIgogI2luY2x1ZGUgIlNwZWVjaFJlY29nbml0aW9u
Q2xpZW50UHJveHkuaCIKICNpbmNsdWRlICJTdHlsZVJlc29sdmVyLmgiCisjaW5jbHVkZSAiVGV4
dC5oIgogI2luY2x1ZGUgIlRleHRGaWVsZERlY29yYXRvckltcGwuaCIKICNpbmNsdWRlICJUZXh0
SXRlcmF0b3IuaCIKICNpbmNsdWRlICJUaW1lci5oIgpAQCAtMTQwLDYgKzE0MSw3IEBACiAjaW5j
bHVkZSAiV2ViUmFuZ2UuaCIKICNpbmNsdWRlICJXZWJSdW50aW1lRmVhdHVyZXMuaCIKICNpbmNs
dWRlICJXZWJTZXR0aW5nc0ltcGwuaCIKKyNpbmNsdWRlICJXZWJUZXh0SW5wdXRJbmZvLmgiCiAj
aW5jbHVkZSAiV2ViVmlld0NsaWVudC5oIgogI2luY2x1ZGUgIldoZWVsRXZlbnQuaCIKICNpbmNs
dWRlICJjYy9DQ1Byb3h5LmgiCkBAIC0xODc5LDYyICsxODgxLDExNSBAQCBib29sIFdlYlZpZXdJ
bXBsOjpjb21wb3NpdGlvblJhbmdlKHNpemVfCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitXZWJU
ZXh0SW5wdXRJbmZvIFdlYlZpZXdJbXBsOjp0ZXh0SW5wdXRJbmZvKCkKK3sKKyAgICBXZWJUZXh0
SW5wdXRJbmZvIGluZm87CisKKyAgICBGcmFtZSogZm9jdXNlZCA9IGZvY3VzZWRXZWJDb3JlRnJh
bWUoKTsKKyAgICBpZiAoIWZvY3VzZWQpCisgICAgICAgIHJldHVybiBpbmZvOworCisgICAgRWRp
dG9yKiBlZGl0b3IgPSBmb2N1c2VkLT5lZGl0b3IoKTsKKyAgICBpZiAoIWVkaXRvciB8fCAhZWRp
dG9yLT5jYW5FZGl0KCkpCisgICAgICAgIHJldHVybiBpbmZvOworCisgICAgRnJhbWVTZWxlY3Rp
b24qIHNlbGVjdGlvbiA9IGZvY3VzZWQtPnNlbGVjdGlvbigpOworICAgIGlmICghc2VsZWN0aW9u
KQorICAgICAgICByZXR1cm4gaW5mbzsKKworICAgIE5vZGUqIG5vZGUgPSBmb2N1c2VkV2ViQ29y
ZU5vZGUoKTsKKyAgICBpZiAoIW5vZGUpCisgICAgICAgIHJldHVybiBpbmZvOworCisgICAgaW5m
by50eXBlID0gdGV4dElucHV0VHlwZSgpOworICAgIGlmIChpbmZvLnR5cGUgPT0gV2ViVGV4dElu
cHV0VHlwZU5vbmUpCisgICAgICAgIHJldHVybiBpbmZvOworCisgICAgaWYgKG5vZGUtPmhhc1Rh
Z05hbWUoSFRNTE5hbWVzOjp0ZXh0YXJlYVRhZykpCisgICAgICAgIGluZm8udmFsdWUgPSBzdGF0
aWNfY2FzdDxIVE1MVGV4dEFyZWFFbGVtZW50Kj4obm9kZSktPnZhbHVlKCk7CisgICAgZWxzZSBp
ZiAobm9kZS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OmlucHV0VGFnKSkKKyAgICAgICAgaW5mby52
YWx1ZSA9IHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihub2RlKS0+dmFsdWUoKTsKKyAg
ICBlbHNlIGlmIChub2RlLT5zaG91bGRVc2VJbnB1dE1ldGhvZCgpKQorICAgICAgICBpbmZvLnZh
bHVlID0gbm9kZS0+bm9kZVZhbHVlKCk7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gaW5mbzsK
KworICAgIGlmIChpbmZvLnZhbHVlLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGluZm87CisK
KyAgICBpZiAobm9kZS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OnRleHRhcmVhVGFnKSB8fCBub2Rl
LT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6aW5wdXRUYWcpKSB7CisgICAgICAgIEhUTUxUZXh0Rm9y
bUNvbnRyb2xFbGVtZW50KiBmb3JtRWxlbWVudCA9IHN0YXRpY19jYXN0PEhUTUxUZXh0Rm9ybUNv
bnRyb2xFbGVtZW50Kj4obm9kZSk7CisgICAgICAgIGluZm8uc2VsZWN0aW9uU3RhcnQgPSBmb3Jt
RWxlbWVudC0+c2VsZWN0aW9uU3RhcnQoKTsKKyAgICAgICAgaW5mby5zZWxlY3Rpb25FbmQgPSBm
b3JtRWxlbWVudC0+c2VsZWN0aW9uRW5kKCk7CisgICAgICAgIGlmIChlZGl0b3ItPmhhc0NvbXBv
c2l0aW9uKCkpIHsKKyAgICAgICAgICAgIGluZm8uY29tcG9zaXRpb25TdGFydCA9IGZvcm1FbGVt
ZW50LT5pbmRleEZvclZpc2libGVQb3NpdGlvbihQb3NpdGlvbihlZGl0b3ItPmNvbXBvc2l0aW9u
Tm9kZSgpLCBlZGl0b3ItPmNvbXBvc2l0aW9uU3RhcnQoKSkpOworICAgICAgICAgICAgaW5mby5j
b21wb3NpdGlvbkVuZCA9IGZvcm1FbGVtZW50LT5pbmRleEZvclZpc2libGVQb3NpdGlvbihQb3Np
dGlvbihlZGl0b3ItPmNvbXBvc2l0aW9uTm9kZSgpLCBlZGl0b3ItPmNvbXBvc2l0aW9uRW5kKCkp
KTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGluZm8uc2VsZWN0aW9uU3RhcnQg
PSBzZWxlY3Rpb24tPnN0YXJ0KCkuY29tcHV0ZU9mZnNldEluQ29udGFpbmVyTm9kZSgpOworICAg
ICAgICBpbmZvLnNlbGVjdGlvbkVuZCA9IHNlbGVjdGlvbi0+ZW5kKCkuY29tcHV0ZU9mZnNldElu
Q29udGFpbmVyTm9kZSgpOworICAgICAgICBpZiAoZWRpdG9yLT5oYXNDb21wb3NpdGlvbigpKSB7
CisgICAgICAgICAgICBpbmZvLmNvbXBvc2l0aW9uU3RhcnQgPSBzdGF0aWNfY2FzdDxpbnQ+KGVk
aXRvci0+Y29tcG9zaXRpb25TdGFydCgpKTsKKyAgICAgICAgICAgIGluZm8uY29tcG9zaXRpb25F
bmQgPSBzdGF0aWNfY2FzdDxpbnQ+KGVkaXRvci0+Y29tcG9zaXRpb25FbmQoKSk7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICByZXR1cm4gaW5mbzsKK30KKwogV2ViVGV4dElucHV0VHlwZSBXZWJW
aWV3SW1wbDo6dGV4dElucHV0VHlwZSgpCiB7CiAgICAgTm9kZSogbm9kZSA9IGZvY3VzZWRXZWJD
b3JlTm9kZSgpOwogICAgIGlmICghbm9kZSkKICAgICAgICAgcmV0dXJuIFdlYlRleHRJbnB1dFR5
cGVOb25lOwogCi0gICAgaWYgKG5vZGUtPm5vZGVUeXBlKCkgPT0gTm9kZTo6RUxFTUVOVF9OT0RF
KSB7Ci0gICAgICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obm9k
ZSk7Ci0gICAgICAgIGlmIChlbGVtZW50LT5oYXNMb2NhbE5hbWUoSFRNTE5hbWVzOjppbnB1dFRh
ZykpIHsKLSAgICAgICAgICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0ID0gc3RhdGljX2Nhc3Q8
SFRNTElucHV0RWxlbWVudCo+KGVsZW1lbnQpOworICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKEhU
TUxOYW1lczo6aW5wdXRUYWcpKSB7CisgICAgICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0ID0g
c3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KG5vZGUpOwogCi0gICAgICAgICAgICBpZiAo
aW5wdXQtPnJlYWRPbmx5KCkgfHwgaW5wdXQtPmRpc2FibGVkKCkpCi0gICAgICAgICAgICAgICAg
cmV0dXJuIFdlYlRleHRJbnB1dFR5cGVOb25lOworICAgICAgICBpZiAoaW5wdXQtPnJlYWRPbmx5
KCkgfHwgaW5wdXQtPmRpc2FibGVkKCkpCisgICAgICAgICAgICByZXR1cm4gV2ViVGV4dElucHV0
VHlwZU5vbmU7CiAKLSAgICAgICAgICAgIGlmIChpbnB1dC0+aXNQYXNzd29yZEZpZWxkKCkpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIFdlYlRleHRJbnB1dFR5cGVQYXNzd29yZDsKLSAgICAgICAg
ICAgIGlmIChpbnB1dC0+aXNTZWFyY2hGaWVsZCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBX
ZWJUZXh0SW5wdXRUeXBlU2VhcmNoOwotICAgICAgICAgICAgaWYgKGlucHV0LT5pc0VtYWlsRmll
bGQoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gV2ViVGV4dElucHV0VHlwZUVtYWlsOwotICAg
ICAgICAgICAgaWYgKGlucHV0LT5pc051bWJlckZpZWxkKCkpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIFdlYlRleHRJbnB1dFR5cGVOdW1iZXI7Ci0gICAgICAgICAgICBpZiAoaW5wdXQtPmlzVGVs
ZXBob25lRmllbGQoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gV2ViVGV4dElucHV0VHlwZVRl
bGVwaG9uZTsKLSAgICAgICAgICAgIGlmIChpbnB1dC0+aXNVUkxGaWVsZCgpKQotICAgICAgICAg
ICAgICAgIHJldHVybiBXZWJUZXh0SW5wdXRUeXBlVVJMOwotICAgICAgICAgICAgaWYgKGlucHV0
LT5pc0RhdGVGaWVsZCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBXZWJUZXh0SW5wdXRUeXBl
RGF0ZTsKLSAgICAgICAgICAgIGlmIChpbnB1dC0+aXNEYXRlVGltZUZpZWxkKCkpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIFdlYlRleHRJbnB1dFR5cGVEYXRlVGltZTsKLSAgICAgICAgICAgIGlm
IChpbnB1dC0+aXNEYXRlVGltZUxvY2FsRmllbGQoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4g
V2ViVGV4dElucHV0VHlwZURhdGVUaW1lTG9jYWw7Ci0gICAgICAgICAgICBpZiAoaW5wdXQtPmlz
TW9udGhGaWVsZCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBXZWJUZXh0SW5wdXRUeXBlTW9u
dGg7Ci0gICAgICAgICAgICBpZiAoaW5wdXQtPmlzVGltZUZpZWxkKCkpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIFdlYlRleHRJbnB1dFR5cGVUaW1lOwotICAgICAgICAgICAgaWYgKGlucHV0LT5p
c1dlZWtGaWVsZCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBXZWJUZXh0SW5wdXRUeXBlV2Vl
azsKLSAgICAgICAgICAgIGlmIChpbnB1dC0+aXNUZXh0RmllbGQoKSkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gV2ViVGV4dElucHV0VHlwZVRleHQ7CisgICAgICAgIGlmIChpbnB1dC0+aXNQYXNz
d29yZEZpZWxkKCkpCisgICAgICAgICAgICByZXR1cm4gV2ViVGV4dElucHV0VHlwZVBhc3N3b3Jk
OworICAgICAgICBpZiAoaW5wdXQtPmlzU2VhcmNoRmllbGQoKSkKKyAgICAgICAgICAgIHJldHVy
biBXZWJUZXh0SW5wdXRUeXBlU2VhcmNoOworICAgICAgICBpZiAoaW5wdXQtPmlzRW1haWxGaWVs
ZCgpKQorICAgICAgICAgICAgcmV0dXJuIFdlYlRleHRJbnB1dFR5cGVFbWFpbDsKKyAgICAgICAg
aWYgKGlucHV0LT5pc051bWJlckZpZWxkKCkpCisgICAgICAgICAgICByZXR1cm4gV2ViVGV4dElu
cHV0VHlwZU51bWJlcjsKKyAgICAgICAgaWYgKGlucHV0LT5pc1RlbGVwaG9uZUZpZWxkKCkpCisg
ICAgICAgICAgICByZXR1cm4gV2ViVGV4dElucHV0VHlwZVRlbGVwaG9uZTsKKyAgICAgICAgaWYg
KGlucHV0LT5pc1VSTEZpZWxkKCkpCisgICAgICAgICAgICByZXR1cm4gV2ViVGV4dElucHV0VHlw
ZVVSTDsKKyAgICAgICAgaWYgKGlucHV0LT5pc0RhdGVGaWVsZCgpKQorICAgICAgICAgICAgcmV0
dXJuIFdlYlRleHRJbnB1dFR5cGVEYXRlOworICAgICAgICBpZiAoaW5wdXQtPmlzRGF0ZVRpbWVG
aWVsZCgpKQorICAgICAgICAgICAgcmV0dXJuIFdlYlRleHRJbnB1dFR5cGVEYXRlVGltZTsKKyAg
ICAgICAgaWYgKGlucHV0LT5pc0RhdGVUaW1lTG9jYWxGaWVsZCgpKQorICAgICAgICAgICAgcmV0
dXJuIFdlYlRleHRJbnB1dFR5cGVEYXRlVGltZUxvY2FsOworICAgICAgICBpZiAoaW5wdXQtPmlz
TW9udGhGaWVsZCgpKQorICAgICAgICAgICAgcmV0dXJuIFdlYlRleHRJbnB1dFR5cGVNb250aDsK
KyAgICAgICAgaWYgKGlucHV0LT5pc1RpbWVGaWVsZCgpKQorICAgICAgICAgICAgcmV0dXJuIFdl
YlRleHRJbnB1dFR5cGVUaW1lOworICAgICAgICBpZiAoaW5wdXQtPmlzV2Vla0ZpZWxkKCkpCisg
ICAgICAgICAgICByZXR1cm4gV2ViVGV4dElucHV0VHlwZVdlZWs7CisgICAgICAgIGlmIChpbnB1
dC0+aXNUZXh0RmllbGQoKSkKKyAgICAgICAgICAgIHJldHVybiBXZWJUZXh0SW5wdXRUeXBlVGV4
dDsKIAotICAgICAgICAgICAgcmV0dXJuIFdlYlRleHRJbnB1dFR5cGVOb25lOwotICAgICAgICB9
CisgICAgICAgIHJldHVybiBXZWJUZXh0SW5wdXRUeXBlTm9uZTsKKyAgICB9CiAKLSAgICAgICAg
aWYgKGVsZW1lbnQtPmhhc0xvY2FsTmFtZShIVE1MTmFtZXM6OnRleHRhcmVhVGFnKSkgewotICAg
ICAgICAgICAgSFRNTFRleHRBcmVhRWxlbWVudCogdGV4dGFyZWEgPSBzdGF0aWNfY2FzdDxIVE1M
VGV4dEFyZWFFbGVtZW50Kj4oZWxlbWVudCk7CisgICAgaWYgKG5vZGUtPmhhc1RhZ05hbWUoSFRN
TE5hbWVzOjp0ZXh0YXJlYVRhZykpIHsKKyAgICAgICAgSFRNTFRleHRBcmVhRWxlbWVudCogdGV4
dGFyZWEgPSBzdGF0aWNfY2FzdDxIVE1MVGV4dEFyZWFFbGVtZW50Kj4obm9kZSk7CiAKLSAgICAg
ICAgICAgIGlmICh0ZXh0YXJlYS0+cmVhZE9ubHkoKSB8fCB0ZXh0YXJlYS0+ZGlzYWJsZWQoKSkK
LSAgICAgICAgICAgICAgICByZXR1cm4gV2ViVGV4dElucHV0VHlwZU5vbmU7Ci0gICAgICAgICAg
ICByZXR1cm4gV2ViVGV4dElucHV0VHlwZVRleHQ7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKHRl
eHRhcmVhLT5yZWFkT25seSgpIHx8IHRleHRhcmVhLT5kaXNhYmxlZCgpKQorICAgICAgICAgICAg
cmV0dXJuIFdlYlRleHRJbnB1dFR5cGVOb25lOworCisgICAgICAgIHJldHVybiBXZWJUZXh0SW5w
dXRUeXBlVGV4dEFyZWE7CiAgICAgfQogCi0gICAgLy8gRm9yIG90aGVyIHNpdHVhdGlvbnMuCiAg
ICAgaWYgKG5vZGUtPnNob3VsZFVzZUlucHV0TWV0aG9kKCkpCi0gICAgICAgIHJldHVybiBXZWJU
ZXh0SW5wdXRUeXBlVGV4dDsKKyAgICAgICAgcmV0dXJuIFdlYlRleHRJbnB1dFR5cGVDb250ZW50
RWRpdGFibGU7CiAKICAgICByZXR1cm4gV2ViVGV4dElucHV0VHlwZU5vbmU7CiB9CkluZGV4OiBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgJKHJldmlzaW9uIDExNzM4MSkK
KysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTE0NSw2ICsxNDUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGNvbmZpcm1D
b21wb3NpdGlvbigpOwogICAgIHZpcnR1YWwgYm9vbCBjb25maXJtQ29tcG9zaXRpb24oY29uc3Qg
V2ViU3RyaW5nJiB0ZXh0KTsKICAgICB2aXJ0dWFsIGJvb2wgY29tcG9zaXRpb25SYW5nZShzaXpl
X3QqIGxvY2F0aW9uLCBzaXplX3QqIGxlbmd0aCk7CisgICAgdmlydHVhbCBXZWJUZXh0SW5wdXRJ
bmZvIHRleHRJbnB1dEluZm8oKTsKICAgICB2aXJ0dWFsIFdlYlRleHRJbnB1dFR5cGUgdGV4dElu
cHV0VHlwZSgpOwogICAgIHZpcnR1YWwgYm9vbCBzZWxlY3Rpb25Cb3VuZHMoV2ViUmVjdCYgc3Rh
cnQsIFdlYlJlY3QmIGVuZCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIGNhcmV0T3JTZWxlY3Rp
b25SYW5nZShzaXplX3QqIGxvY2F0aW9uLCBzaXplX3QqIGxlbmd0aCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>142948</attachid>
            <date>2012-05-20 23:05:39 -0700</date>
            <delta_ts>2012-05-21 01:27:00 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-86440-20120520230537.patch</filename>
            <type>text/plain</type>
            <size>16199</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiAxMTc3MjcpCisrKyBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1
IEBACisyMDEyLTA1LTIwICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgW0Nocm9taXVtXSBJbXBsZW1lbnQgV2ViVmlld0ltcGw6OnRleHRJbnB1dEluZm8oKSBmb3Ig
QW5kcm9pZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
ODY0NDAKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBGaXNoZXIuCisKKyAgICAgICAgVGhp
cyBwYXRjaCBhZGRzIFdlYlZpZXc6OnRleHRJbnB1dEluZm8oKSwgd2hpY2ggZGVzY3JpYmVzIHRo
ZSB0ZXh0CisgICAgICAgIGlucHV0IHRoYXQgY3VycmVudGx5IGhhcyBmb2N1cy4gIEFuZHJvaWQg
aXMgcGxhbm5pbmcgdG8gdXNlIHRoaXMgdG8KKyAgICAgICAgZGV0ZXJtaW5lIHdoYXQgc29ydCBv
ZiBrZXlib2FyZCBvciB0ZXh0IGVudHJ5IFVJIHRvIHNob3cuICBUaGlzIEFQSQorICAgICAgICBz
dWJzdW1lcyB0aGUgdGV4dElucHV0VHlwZSgpIEFQSSwgd2hpY2ggd2lsbCBiZSByZW1vdmVkIG9u
Y2UgdGhlCisgICAgICAgIGNsaWVudHMgaGF2ZSBiZWVuIHVwZGF0ZWQuCisKKyAgICAgICAgKiBX
ZWJLaXQuZ3lwOgorICAgICAgICAqIHB1YmxpYy9XZWJUZXh0SW5wdXRJbmZvLmg6IEFkZGVkLgor
ICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYlRleHRJbnB1dEluZm8pOgorICAgICAgICAo
V2ViS2l0OjpXZWJUZXh0SW5wdXRJbmZvOjpXZWJUZXh0SW5wdXRJbmZvKToKKyAgICAgICAgKFdl
YktpdDo6b3BlcmF0b3I9PSk6CisgICAgICAgIChXZWJLaXQ6Om9wZXJhdG9yIT0pOgorICAgICAg
ICAqIHB1YmxpYy9XZWJUZXh0SW5wdXRUeXBlLmg6CisgICAgICAgICogcHVibGljL1dlYldpZGdl
dC5oOgorICAgICAgICAoV2ViV2lkZ2V0KToKKyAgICAgICAgKFdlYktpdDo6V2ViV2lkZ2V0Ojp0
ZXh0SW5wdXRJbmZvKToKKyAgICAgICAgKFdlYktpdDo6V2ViV2lkZ2V0Ojp0ZXh0SW5wdXRUeXBl
KToKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJW
aWV3SW1wbDo6dGV4dElucHV0SW5mbyk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJWaWV3SW1wbDo6dGV4dElucHV0VHlwZSk6CisgICAgICAgICogc3JjL1dlYlZpZXdJ
bXBsLmg6CisgICAgICAgIChXZWJWaWV3SW1wbCk6CisKIDIwMTItMDUtMjAgIEpvc2h1YSBCZWxs
ICA8anNiZWxsQGNocm9taXVtLm9yZz4KIAogICAgICAgICBJbmRleGVkREI6IERlbGV0ZSBvYnNv
bGV0ZSBDaHJvbWl1bSBXZWJLaXQgQVBJIG1ldGhvZApJbmRleDogU291cmNlL1dlYktpdC9jaHJv
bWl1bS9XZWJLaXQuZ3lwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2Vi
S2l0Lmd5cAkocmV2aXNpb24gMTE3NzI3KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJL
aXQuZ3lwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzIsNiArMjcyLDcgQEAKICAgICAgICAgICAgICAg
ICAncHVibGljL1dlYlRleHRDaGVja2luZ1Jlc3VsdC5oJywKICAgICAgICAgICAgICAgICAncHVi
bGljL1dlYlRleHREaXJlY3Rpb24uaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJUZXh0
RmllbGREZWNvcmF0b3JDbGllbnQuaCcsCisgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJUZXh0
SW5wdXRJbmZvLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViVGV4dElucHV0VHlwZS5o
JywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYlRleHRSdW4uaCcsCiAgICAgICAgICAgICAg
ICAgJ3B1YmxpYy9XZWJUaW1lUmFuZ2UuaCcsCkBAIC02NTgsNiArNjU5LDcgQEAKICAgICAgICAg
ICAgICAgICAnc3JjL1dlYlN0b3JhZ2VRdW90YUNhbGxiYWNrc0ltcGwuY3BwJywKICAgICAgICAg
ICAgICAgICAnc3JjL1dlYlN0b3JhZ2VRdW90YUNhbGxiYWNrc0ltcGwuaCcsCiAgICAgICAgICAg
ICAgICAgJ3NyYy9XZWJTdXJyb3VuZGluZ1RleHQuY3BwJywKKyAgICAgICAgICAgICAgICAnc3Jj
L1dlYlRleHRJbnB1dEluZm8uY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYlRleHRSdW4u
Y3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYlVSTExvYWRUaW1pbmcuY3BwJywKICAgICAg
ICAgICAgICAgICAnc3JjL1dlYlNjb3BlZFVzZXJHZXN0dXJlLmNwcCcsCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJUZXh0SW5wdXRJbmZvLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVGV4dElucHV0SW5mby5oCShyZXZpc2lv
biAwKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVGV4dElucHV0SW5mby5o
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDc4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEx
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9S
UyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
KyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJUZXh0SW5w
dXRJbmZvX2gKKyNkZWZpbmUgV2ViVGV4dElucHV0SW5mb19oCisKKyNpbmNsdWRlICJXZWJUZXh0
SW5wdXRUeXBlLmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViU3RyaW5nLmgiCisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCitzdHJ1Y3QgV2ViVGV4dElucHV0SW5mbyB7CisgICAgV2ViVGV4dElucHV0
VHlwZSB0eXBlOworCisgICAgLy8gVGhlIHZhbHVlIG9mIHRoZSBjdXJyZW50bHkgZm9jdXNlZCBp
bnB1dCBmaWVsZC4KKyAgICBXZWJTdHJpbmcgdmFsdWU7CisKKyAgICAvLyBUaGUgY3Vyc29yIHBv
c2l0aW9uIG9mIHRoZSBjdXJyZW50IHNlbGVjdGlvbiBzdGFydCwgb3IgdGhlIGNhcmV0IHBvc2l0
aW9uCisgICAgLy8gaWYgbm90aGluZyBpcyBzZWxlY3RlZC4KKyAgICBpbnQgc2VsZWN0aW9uU3Rh
cnQ7CisKKyAgICAvLyBUaGUgY3Vyc29yIHBvc2l0aW9uIG9mIHRoZSBjdXJyZW50IHNlbGVjdGlv
biBlbmQsIG9yIHRoZSBjYXJldCBwb3NpdGlvbgorICAgIC8vIGlmIG5vdGhpbmcgaXMgc2VsZWN0
ZWQuCisgICAgaW50IHNlbGVjdGlvbkVuZDsKKworICAgIC8vIFRoZSBzdGFydCBwb3NpdGlvbiBv
ZiB0aGUgY3VycmVudCBjb21wb3NpdGlvbiwgb3IgLTEgaWYgdGhlcmUgaXMgbm9uZS4KKyAgICBp
bnQgY29tcG9zaXRpb25TdGFydDsKKworICAgIC8vIFRoZSBlbmQgcG9zaXRpb24gb2YgdGhlIGN1
cnJlbnQgY29tcG9zaXRpb24sIG9yIC0xIGlmIHRoZXJlIGlzIG5vbmUuCisgICAgaW50IGNvbXBv
c2l0aW9uRW5kOworCisgICAgV0VCS0lUX0VYUE9SVCBib29sIGVxdWFscyhjb25zdCBXZWJUZXh0
SW5wdXRJbmZvJikgY29uc3Q7CisKKyAgICBXZWJUZXh0SW5wdXRJbmZvKCkKKyAgICAgICAgOiB0
eXBlKFdlYlRleHRJbnB1dFR5cGVOb25lKQorICAgICAgICAsIHNlbGVjdGlvblN0YXJ0KDApCisg
ICAgICAgICwgc2VsZWN0aW9uRW5kKDApCisgICAgICAgICwgY29tcG9zaXRpb25TdGFydCgtMSkK
KyAgICAgICAgLCBjb21wb3NpdGlvbkVuZCgtMSkKKyAgICB7CisgICAgfQorfTsKKworaW5saW5l
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBXZWJUZXh0SW5wdXRJbmZvJiBhLCBjb25zdCBXZWJUZXh0
SW5wdXRJbmZvJiBiKQoreworICAgIHJldHVybiBhLmVxdWFscyhiKTsKK30KKworaW5saW5lIGJv
b2wgb3BlcmF0b3IhPShjb25zdCBXZWJUZXh0SW5wdXRJbmZvJiBhLCBjb25zdCBXZWJUZXh0SW5w
dXRJbmZvJiBiKQoreworICAgIHJldHVybiAhKGEgPT0gYik7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdAorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YldpZGdldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YldpZGdldC5oCShyZXZpc2lvbiAxMTc3MjcpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJXaWRnZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsOCArMzIsOCBAQAogI2RlZmlu
ZSBXZWJXaWRnZXRfaAogCiAjaW5jbHVkZSAiV2ViQ29tcG9zaXRpb25VbmRlcmxpbmUuaCIKLSNp
bmNsdWRlICJXZWJUZXh0SW5wdXRUeXBlLmgiCiAjaW5jbHVkZSAiV2ViVGV4dERpcmVjdGlvbi5o
IgorI2luY2x1ZGUgIldlYlRleHRJbnB1dEluZm8uaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJD
YW52YXMuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDb21tb24uaCIKICNpbmNsdWRlICJwbGF0
Zm9ybS9XZWJSZWN0LmgiCkBAIC0xNzAsOCArMTcwLDEyIEBAIHB1YmxpYzoKICAgICAvLyByZXR1
cm5zIGZhbHNlIG9uIGZhaWx1cmUuCiAgICAgdmlydHVhbCBib29sIGNvbXBvc2l0aW9uUmFuZ2Uo
c2l6ZV90KiBsb2NhdGlvbiwgc2l6ZV90KiBsZW5ndGgpIHsgcmV0dXJuIGZhbHNlOyB9CiAKKyAg
ICAvLyBSZXR1cm5zIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjdXJyZW50IHRleHQgaW5wdXQgb2Yg
dGhpcyBXZWJXaWRnZXQuCisgICAgdmlydHVhbCBXZWJUZXh0SW5wdXRJbmZvIHRleHRJbnB1dElu
Zm8oKSB7IHJldHVybiBXZWJUZXh0SW5wdXRJbmZvKCk7IH0KKwogICAgIC8vIFJldHVybnMgdGhl
IGN1cnJlbnQgdGV4dCBpbnB1dCB0eXBlIG9mIHRoaXMgV2ViV2lkZ2V0LgotICAgIHZpcnR1YWwg
V2ViVGV4dElucHV0VHlwZSB0ZXh0SW5wdXRUeXBlKCkgeyByZXR1cm4gV2ViS2l0OjpXZWJUZXh0
SW5wdXRUeXBlTm9uZTsgfQorICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBtZXRob2QuIEl0J3Mg
cmVkdW5kYW50IHdpdGggdGV4dElucHV0SW5mbygpLgorICAgIHZpcnR1YWwgV2ViVGV4dElucHV0
VHlwZSB0ZXh0SW5wdXRUeXBlKCkgeyByZXR1cm4gV2ViVGV4dElucHV0VHlwZU5vbmU7IH0KIAog
ICAgIC8vIFJldHVybnMgdGhlIHN0YXJ0IGFuZCBlbmQgYm91bmRzIG9mIHRoZSBjdXJyZW50IHNl
bGVjdGlvbi4KICAgICAvLyBJZiB0aGUgc2VsZWN0aW9uIHJhbmdlIGlzIGVtcHR5LCBpdCByZXR1
cm5zIHRoZSBjYXJldCBib3VuZHMuCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJUZXh0SW5wdXRJbmZvLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJUZXh0SW5wdXRJbmZvLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlRleHRJbnB1dEluZm8uY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6Cisg
KgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAq
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
CisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlRleHRJbnB1dEluZm8uaCIK
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Jvb2wgV2ViVGV4dElucHV0SW5mbzo6ZXF1YWxzKGNv
bnN0IFdlYlRleHRJbnB1dEluZm8mIG90aGVyKSBjb25zdAoreworICAgIHJldHVybiB0eXBlID09
IG90aGVyLnR5cGUKKyAgICAgICAgJiYgdmFsdWUgPT0gb3RoZXIudmFsdWUKKyAgICAgICAgJiYg
c2VsZWN0aW9uU3RhcnQgPT0gb3RoZXIuc2VsZWN0aW9uU3RhcnQKKyAgICAgICAgJiYgc2VsZWN0
aW9uRW5kID09IG90aGVyLnNlbGVjdGlvbkVuZAorICAgICAgICAmJiBjb21wb3NpdGlvblN0YXJ0
ID09IG90aGVyLmNvbXBvc2l0aW9uU3RhcnQKKyAgICAgICAgJiYgY29tcG9zaXRpb25FbmQgPT0g
b3RoZXIuY29tcG9zaXRpb25FbmQ7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDog
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAkocmV2aXNpb24gMTE3
NzI3KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMTMsNiArMTEzLDcgQEAKICNpbmNsdWRlICJTcGVlY2hJbnB1dENsaWVu
dEltcGwuaCIKICNpbmNsdWRlICJTcGVlY2hSZWNvZ25pdGlvbkNsaWVudFByb3h5LmgiCiAjaW5j
bHVkZSAiU3R5bGVSZXNvbHZlci5oIgorI2luY2x1ZGUgIlRleHQuaCIKICNpbmNsdWRlICJUZXh0
RmllbGREZWNvcmF0b3JJbXBsLmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCiAjaW5jbHVk
ZSAiVGltZXIuaCIKQEAgLTE0MCw2ICsxNDEsNyBAQAogI2luY2x1ZGUgIldlYlJhbmdlLmgiCiAj
aW5jbHVkZSAiV2ViUnVudGltZUZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiV2ViU2V0dGluZ3NJbXBs
LmgiCisjaW5jbHVkZSAiV2ViVGV4dElucHV0SW5mby5oIgogI2luY2x1ZGUgIldlYlZpZXdDbGll
bnQuaCIKICNpbmNsdWRlICJXaGVlbEV2ZW50LmgiCiAjaW5jbHVkZSAiY2MvQ0NQcm94eS5oIgpA
QCAtMTg4MCw2MCArMTg4MiwxMTMgQEAgYm9vbCBXZWJWaWV3SW1wbDo6Y29tcG9zaXRpb25SYW5n
ZShzaXplXwogICAgIHJldHVybiBmYWxzZTsKIH0KIAorV2ViVGV4dElucHV0SW5mbyBXZWJWaWV3
SW1wbDo6dGV4dElucHV0SW5mbygpCit7CisgICAgV2ViVGV4dElucHV0SW5mbyBpbmZvOworCisg
ICAgRnJhbWUqIGZvY3VzZWQgPSBmb2N1c2VkV2ViQ29yZUZyYW1lKCk7CisgICAgaWYgKCFmb2N1
c2VkKQorICAgICAgICByZXR1cm4gaW5mbzsKKworICAgIEVkaXRvciogZWRpdG9yID0gZm9jdXNl
ZC0+ZWRpdG9yKCk7CisgICAgaWYgKCFlZGl0b3IgfHwgIWVkaXRvci0+Y2FuRWRpdCgpKQorICAg
ICAgICByZXR1cm4gaW5mbzsKKworICAgIEZyYW1lU2VsZWN0aW9uKiBzZWxlY3Rpb24gPSBmb2N1
c2VkLT5zZWxlY3Rpb24oKTsKKyAgICBpZiAoIXNlbGVjdGlvbikKKyAgICAgICAgcmV0dXJuIGlu
Zm87CisKKyAgICBOb2RlKiBub2RlID0gZm9jdXNlZFdlYkNvcmVOb2RlKCk7CisgICAgaWYgKCFu
b2RlKQorICAgICAgICByZXR1cm4gaW5mbzsKKworICAgIGluZm8udHlwZSA9IHRleHRJbnB1dFR5
cGUoKTsKKyAgICBpZiAoaW5mby50eXBlID09IFdlYlRleHRJbnB1dFR5cGVOb25lKQorICAgICAg
ICByZXR1cm4gaW5mbzsKKworICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6dGV4
dGFyZWFUYWcpKQorICAgICAgICBpbmZvLnZhbHVlID0gc3RhdGljX2Nhc3Q8SFRNTFRleHRBcmVh
RWxlbWVudCo+KG5vZGUpLT52YWx1ZSgpOworICAgIGVsc2UgaWYgKG5vZGUtPmhhc1RhZ05hbWUo
SFRNTE5hbWVzOjppbnB1dFRhZykpCisgICAgICAgIGluZm8udmFsdWUgPSBzdGF0aWNfY2FzdDxI
VE1MSW5wdXRFbGVtZW50Kj4obm9kZSktPnZhbHVlKCk7CisgICAgZWxzZSBpZiAobm9kZS0+c2hv
dWxkVXNlSW5wdXRNZXRob2QoKSkKKyAgICAgICAgaW5mby52YWx1ZSA9IG5vZGUtPm5vZGVWYWx1
ZSgpOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIGluZm87CisKKyAgICBpZiAoaW5mby52YWx1
ZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBpbmZvOworCisgICAgaWYgKG5vZGUtPmhhc1Rh
Z05hbWUoSFRNTE5hbWVzOjp0ZXh0YXJlYVRhZykgfHwgbm9kZS0+aGFzVGFnTmFtZShIVE1MTmFt
ZXM6OmlucHV0VGFnKSkgeworICAgICAgICBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudCogZm9y
bUVsZW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudCo+KG5vZGUp
OworICAgICAgICBpbmZvLnNlbGVjdGlvblN0YXJ0ID0gZm9ybUVsZW1lbnQtPnNlbGVjdGlvblN0
YXJ0KCk7CisgICAgICAgIGluZm8uc2VsZWN0aW9uRW5kID0gZm9ybUVsZW1lbnQtPnNlbGVjdGlv
bkVuZCgpOworICAgICAgICBpZiAoZWRpdG9yLT5oYXNDb21wb3NpdGlvbigpKSB7CisgICAgICAg
ICAgICBpbmZvLmNvbXBvc2l0aW9uU3RhcnQgPSBmb3JtRWxlbWVudC0+aW5kZXhGb3JWaXNpYmxl
UG9zaXRpb24oUG9zaXRpb24oZWRpdG9yLT5jb21wb3NpdGlvbk5vZGUoKSwgZWRpdG9yLT5jb21w
b3NpdGlvblN0YXJ0KCkpKTsKKyAgICAgICAgICAgIGluZm8uY29tcG9zaXRpb25FbmQgPSBmb3Jt
RWxlbWVudC0+aW5kZXhGb3JWaXNpYmxlUG9zaXRpb24oUG9zaXRpb24oZWRpdG9yLT5jb21wb3Np
dGlvbk5vZGUoKSwgZWRpdG9yLT5jb21wb3NpdGlvbkVuZCgpKSk7CisgICAgICAgIH0KKyAgICB9
IGVsc2UgeworICAgICAgICBpbmZvLnNlbGVjdGlvblN0YXJ0ID0gc2VsZWN0aW9uLT5zdGFydCgp
LmNvbXB1dGVPZmZzZXRJbkNvbnRhaW5lck5vZGUoKTsKKyAgICAgICAgaW5mby5zZWxlY3Rpb25F
bmQgPSBzZWxlY3Rpb24tPmVuZCgpLmNvbXB1dGVPZmZzZXRJbkNvbnRhaW5lck5vZGUoKTsKKyAg
ICAgICAgaWYgKGVkaXRvci0+aGFzQ29tcG9zaXRpb24oKSkgeworICAgICAgICAgICAgaW5mby5j
b21wb3NpdGlvblN0YXJ0ID0gc3RhdGljX2Nhc3Q8aW50PihlZGl0b3ItPmNvbXBvc2l0aW9uU3Rh
cnQoKSk7CisgICAgICAgICAgICBpbmZvLmNvbXBvc2l0aW9uRW5kID0gc3RhdGljX2Nhc3Q8aW50
PihlZGl0b3ItPmNvbXBvc2l0aW9uRW5kKCkpOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0
dXJuIGluZm87Cit9CisKIFdlYlRleHRJbnB1dFR5cGUgV2ViVmlld0ltcGw6OnRleHRJbnB1dFR5
cGUoKQogewogICAgIE5vZGUqIG5vZGUgPSBmb2N1c2VkV2ViQ29yZU5vZGUoKTsKICAgICBpZiAo
IW5vZGUpCiAgICAgICAgIHJldHVybiBXZWJUZXh0SW5wdXRUeXBlTm9uZTsKIAotICAgIGlmIChu
b2RlLT5ub2RlVHlwZSgpID09IE5vZGU6OkVMRU1FTlRfTk9ERSkgewotICAgICAgICBFbGVtZW50
KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG5vZGUpOwotICAgICAgICBpZiAoZWxl
bWVudC0+aGFzTG9jYWxOYW1lKEhUTUxOYW1lczo6aW5wdXRUYWcpKSB7Ci0gICAgICAgICAgICBI
VE1MSW5wdXRFbGVtZW50KiBpbnB1dCA9IHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihl
bGVtZW50KTsKKyAgICBpZiAobm9kZS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OmlucHV0VGFnKSkg
eworICAgICAgICBIVE1MSW5wdXRFbGVtZW50KiBpbnB1dCA9IHN0YXRpY19jYXN0PEhUTUxJbnB1
dEVsZW1lbnQqPihub2RlKTsKKworICAgICAgICBpZiAoaW5wdXQtPnJlYWRPbmx5KCkgfHwgaW5w
dXQtPmRpc2FibGVkKCkpCisgICAgICAgICAgICByZXR1cm4gV2ViVGV4dElucHV0VHlwZU5vbmU7
CiAKLSAgICAgICAgICAgIGlmIChpbnB1dC0+cmVhZE9ubHkoKSB8fCBpbnB1dC0+ZGlzYWJsZWQo
KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gV2ViVGV4dElucHV0VHlwZU5vbmU7CisgICAgICAg
IGlmIChpbnB1dC0+aXNQYXNzd29yZEZpZWxkKCkpCisgICAgICAgICAgICByZXR1cm4gV2ViVGV4
dElucHV0VHlwZVBhc3N3b3JkOworICAgICAgICBpZiAoaW5wdXQtPmlzU2VhcmNoRmllbGQoKSkK
KyAgICAgICAgICAgIHJldHVybiBXZWJUZXh0SW5wdXRUeXBlU2VhcmNoOworICAgICAgICBpZiAo
aW5wdXQtPmlzRW1haWxGaWVsZCgpKQorICAgICAgICAgICAgcmV0dXJuIFdlYlRleHRJbnB1dFR5
cGVFbWFpbDsKKyAgICAgICAgaWYgKGlucHV0LT5pc051bWJlckZpZWxkKCkpCisgICAgICAgICAg
ICByZXR1cm4gV2ViVGV4dElucHV0VHlwZU51bWJlcjsKKyAgICAgICAgaWYgKGlucHV0LT5pc1Rl
bGVwaG9uZUZpZWxkKCkpCisgICAgICAgICAgICByZXR1cm4gV2ViVGV4dElucHV0VHlwZVRlbGVw
aG9uZTsKKyAgICAgICAgaWYgKGlucHV0LT5pc1VSTEZpZWxkKCkpCisgICAgICAgICAgICByZXR1
cm4gV2ViVGV4dElucHV0VHlwZVVSTDsKKyAgICAgICAgaWYgKGlucHV0LT5pc0RhdGVGaWVsZCgp
KQorICAgICAgICAgICAgcmV0dXJuIFdlYlRleHRJbnB1dFR5cGVEYXRlOworICAgICAgICBpZiAo
aW5wdXQtPmlzRGF0ZVRpbWVGaWVsZCgpKQorICAgICAgICAgICAgcmV0dXJuIFdlYlRleHRJbnB1
dFR5cGVEYXRlVGltZTsKKyAgICAgICAgaWYgKGlucHV0LT5pc0RhdGVUaW1lTG9jYWxGaWVsZCgp
KQorICAgICAgICAgICAgcmV0dXJuIFdlYlRleHRJbnB1dFR5cGVEYXRlVGltZUxvY2FsOworICAg
ICAgICBpZiAoaW5wdXQtPmlzTW9udGhGaWVsZCgpKQorICAgICAgICAgICAgcmV0dXJuIFdlYlRl
eHRJbnB1dFR5cGVNb250aDsKKyAgICAgICAgaWYgKGlucHV0LT5pc1RpbWVGaWVsZCgpKQorICAg
ICAgICAgICAgcmV0dXJuIFdlYlRleHRJbnB1dFR5cGVUaW1lOworICAgICAgICBpZiAoaW5wdXQt
PmlzV2Vla0ZpZWxkKCkpCisgICAgICAgICAgICByZXR1cm4gV2ViVGV4dElucHV0VHlwZVdlZWs7
CisgICAgICAgIGlmIChpbnB1dC0+aXNUZXh0RmllbGQoKSkKKyAgICAgICAgICAgIHJldHVybiBX
ZWJUZXh0SW5wdXRUeXBlVGV4dDsKIAotICAgICAgICAgICAgaWYgKGlucHV0LT5pc1Bhc3N3b3Jk
RmllbGQoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gV2ViVGV4dElucHV0VHlwZVBhc3N3b3Jk
OwotICAgICAgICAgICAgaWYgKGlucHV0LT5pc1NlYXJjaEZpZWxkKCkpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIFdlYlRleHRJbnB1dFR5cGVTZWFyY2g7Ci0gICAgICAgICAgICBpZiAoaW5wdXQt
PmlzRW1haWxGaWVsZCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBXZWJUZXh0SW5wdXRUeXBl
RW1haWw7Ci0gICAgICAgICAgICBpZiAoaW5wdXQtPmlzTnVtYmVyRmllbGQoKSkKLSAgICAgICAg
ICAgICAgICByZXR1cm4gV2ViVGV4dElucHV0VHlwZU51bWJlcjsKLSAgICAgICAgICAgIGlmIChp
bnB1dC0+aXNUZWxlcGhvbmVGaWVsZCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBXZWJUZXh0
SW5wdXRUeXBlVGVsZXBob25lOwotICAgICAgICAgICAgaWYgKGlucHV0LT5pc1VSTEZpZWxkKCkp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFdlYlRleHRJbnB1dFR5cGVVUkw7Ci0gICAgICAgICAg
ICBpZiAoaW5wdXQtPmlzRGF0ZUZpZWxkKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdlYlRl
eHRJbnB1dFR5cGVEYXRlOwotICAgICAgICAgICAgaWYgKGlucHV0LT5pc0RhdGVUaW1lRmllbGQo
KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gV2ViVGV4dElucHV0VHlwZURhdGVUaW1lOwotICAg
ICAgICAgICAgaWYgKGlucHV0LT5pc0RhdGVUaW1lTG9jYWxGaWVsZCgpKQotICAgICAgICAgICAg
ICAgIHJldHVybiBXZWJUZXh0SW5wdXRUeXBlRGF0ZVRpbWVMb2NhbDsKLSAgICAgICAgICAgIGlm
IChpbnB1dC0+aXNNb250aEZpZWxkKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdlYlRleHRJ
bnB1dFR5cGVNb250aDsKLSAgICAgICAgICAgIGlmIChpbnB1dC0+aXNUaW1lRmllbGQoKSkKLSAg
ICAgICAgICAgICAgICByZXR1cm4gV2ViVGV4dElucHV0VHlwZVRpbWU7Ci0gICAgICAgICAgICBp
ZiAoaW5wdXQtPmlzV2Vla0ZpZWxkKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdlYlRleHRJ
bnB1dFR5cGVXZWVrOwotICAgICAgICAgICAgaWYgKGlucHV0LT5pc1RleHRGaWVsZCgpKQotICAg
ICAgICAgICAgICAgIHJldHVybiBXZWJUZXh0SW5wdXRUeXBlVGV4dDsKKyAgICAgICAgcmV0dXJu
IFdlYlRleHRJbnB1dFR5cGVOb25lOworICAgIH0KIAotICAgICAgICAgICAgcmV0dXJuIFdlYlRl
eHRJbnB1dFR5cGVOb25lOwotICAgICAgICB9CisgICAgaWYgKG5vZGUtPmhhc1RhZ05hbWUoSFRN
TE5hbWVzOjp0ZXh0YXJlYVRhZykpIHsKKyAgICAgICAgSFRNTFRleHRBcmVhRWxlbWVudCogdGV4
dGFyZWEgPSBzdGF0aWNfY2FzdDxIVE1MVGV4dEFyZWFFbGVtZW50Kj4obm9kZSk7CiAKLSAgICAg
ICAgaWYgKGVsZW1lbnQtPmhhc0xvY2FsTmFtZShIVE1MTmFtZXM6OnRleHRhcmVhVGFnKSkgewot
ICAgICAgICAgICAgSFRNTFRleHRBcmVhRWxlbWVudCogdGV4dGFyZWEgPSBzdGF0aWNfY2FzdDxI
VE1MVGV4dEFyZWFFbGVtZW50Kj4oZWxlbWVudCk7CisgICAgICAgIGlmICh0ZXh0YXJlYS0+cmVh
ZE9ubHkoKSB8fCB0ZXh0YXJlYS0+ZGlzYWJsZWQoKSkKKyAgICAgICAgICAgIHJldHVybiBXZWJU
ZXh0SW5wdXRUeXBlTm9uZTsKIAotICAgICAgICAgICAgaWYgKHRleHRhcmVhLT5yZWFkT25seSgp
IHx8IHRleHRhcmVhLT5kaXNhYmxlZCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBXZWJUZXh0
SW5wdXRUeXBlTm9uZTsKLSAgICAgICAgICAgIHJldHVybiBXZWJUZXh0SW5wdXRUeXBlVGV4dDsK
LSAgICAgICAgfQorICAgICAgICByZXR1cm4gV2ViVGV4dElucHV0VHlwZVRleHQ7CiAgICAgfQog
Ci0gICAgLy8gRm9yIG90aGVyIHNpdHVhdGlvbnMuCiAgICAgaWYgKG5vZGUtPnNob3VsZFVzZUlu
cHV0TWV0aG9kKCkpCiAgICAgICAgIHJldHVybiBXZWJUZXh0SW5wdXRUeXBlVGV4dDsKIApJbmRl
eDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCShyZXZpc2lvbiAxMTc3
MjcpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xNDUsNiArMTQ1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBjb25m
aXJtQ29tcG9zaXRpb24oKTsKICAgICB2aXJ0dWFsIGJvb2wgY29uZmlybUNvbXBvc2l0aW9uKGNv
bnN0IFdlYlN0cmluZyYgdGV4dCk7CiAgICAgdmlydHVhbCBib29sIGNvbXBvc2l0aW9uUmFuZ2Uo
c2l6ZV90KiBsb2NhdGlvbiwgc2l6ZV90KiBsZW5ndGgpOworICAgIHZpcnR1YWwgV2ViVGV4dElu
cHV0SW5mbyB0ZXh0SW5wdXRJbmZvKCk7CiAgICAgdmlydHVhbCBXZWJUZXh0SW5wdXRUeXBlIHRl
eHRJbnB1dFR5cGUoKTsKICAgICB2aXJ0dWFsIGJvb2wgc2VsZWN0aW9uQm91bmRzKFdlYlJlY3Qm
IHN0YXJ0LCBXZWJSZWN0JiBlbmQpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBzZWxlY3Rpb25U
ZXh0RGlyZWN0aW9uKFdlYlRleHREaXJlY3Rpb24mIHN0YXJ0LCBXZWJUZXh0RGlyZWN0aW9uJiBl
bmQpIGNvbnN0Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>