<?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>72176</bug_id>
          
          <creation_ts>2011-11-11 13:44:26 -0800</creation_ts>
          <short_desc>[Chromium] setPageScaleFactor and associated methods should take scaling limits into account</short_desc>
          <delta_ts>2011-11-14 15:02:34 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>70559</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Fady Samuel">fsamuel</reporter>
          <assigned_to name="Fady Samuel">fsamuel</assigned_to>
          <cc>aelias</cc>
    
    <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>johnme</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>501057</commentid>
    <comment_count>0</comment_count>
    <who name="Fady Samuel">fsamuel</who>
    <bug_when>2011-11-11 13:44:26 -0800</bug_when>
    <thetext>[Chromium] setPageScaleFactor and associated methods should take scaling limits into account</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>501059</commentid>
    <comment_count>1</comment_count>
      <attachid>114765</attachid>
    <who name="Fady Samuel">fsamuel</who>
    <bug_when>2011-11-11 13:46:54 -0800</bug_when>
    <thetext>Created attachment 114765
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>501062</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-11 13:49:45 -0800</bug_when>
    <thetext>Please wait for approval from fishd@chromium.org before submitting because this patch contains changes to the Chromium public API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>501277</commentid>
    <comment_count>3</comment_count>
      <attachid>114765</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-11-11 17:57:31 -0800</bug_when>
    <thetext>Comment on attachment 114765
Patch

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

This code is all really inconsistent about whether it is talking about &apos;pageScale&apos;, &apos;scaleFactor&apos;, or &apos;pageScaleFactor&apos;. Can you pick one and stick to it?

&gt; Source/WebKit/chromium/public/WebView.h:218
&gt; +    virtual void setPageAndScrollOffsetScaleFactor(float) = 0;

did you mean PageScaleFactorAndScrollOffset? We talk about the &apos;PageScaleFactor&apos; elsewhere and it&apos;s weird to break it up like this

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:1873
&gt; +    IntPoint pt = offset;

don&apos;t use abbreviations for variable names in WebKit, - use full words

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:1876
&gt; +    pt.setX(std::max(0, pt.x()));

don&apos;t use std::foo() in WebKit, put a using namespace std; declaration at the top of the file and then just call foo(). pretty sure we already have the using declaration in this file.

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:1878
&gt; +    return pt;

are you sure there aren&apos;t any IntPoint/IntSize/etc utilities to do this instead of doing it all component by component?

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:1958
&gt; +    m_minimumPageScaleFactor = min(max(minPageScale, minPageScaleFactor), maxPageScaleFactor);
&gt; +    m_maximumPageScaleFactor = max(min(maxPageScale, maxPageScaleFactor), minPageScaleFactor);

you&apos;re clamping the passed-in values to within [0.25,4] ? that doesn&apos;t seem right - those values should be defaults but if a caller wants some other values we should honor them, imo. the caller has access to these values and can do whatever they like with them</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>501352</commentid>
    <comment_count>4</comment_count>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2011-11-11 20:58:55 -0800</bug_when>
    <thetext>I don&apos;t have proper Bugzilla permissions to do an inline review, but here&apos;s my comments:

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:1857
&gt; +    float minimumScale = m_minimumPageScaleFactor * deviceScaleFactor();

Hmm, using deviceScaleFactor here will result in inconsistent clamping compared to the Impl-thread clamping, which doesn&apos;t have access to deviceScaleFactor (and probably doesn&apos;t need to except for this).  How about preapplying deviceScaleFactor to m_minimumPageScaleFactor/m_maximumPageScaleFactor?

&gt;&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:1958
&gt;&gt; +    m_maximumPageScaleFactor = max(min(maxPageScale, maxPageScaleFactor), minPageScaleFactor);
&gt; 
&gt; you&apos;re clamping the passed-in values to within [0.25,4] ? that doesn&apos;t seem right - those values should be defaults but if a caller wants some other values we should honor them, imo. the caller has access to these values and can do whatever they like with them

We want to prevent the viewport tag from setting crazy limits, so the clamping here is fine by me.  I just think we should clamp by m_minimumPageScaleFactor * deviceScaleFactor here instead, as mentioned above. 

We also need to clamp m_minimumPageScaleFactor so that we can&apos;t zoom out further than the document width.  The code we wrote earlier to do this looks like:

min_scale = std::max(min_scale, (float) viewport_size.width() / (content_size.width() / currentPageScaleFactor));</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>501442</commentid>
    <comment_count>5</comment_count>
      <attachid>114836</attachid>
    <who name="Fady Samuel">fsamuel</who>
    <bug_when>2011-11-12 08:59:12 -0800</bug_when>
    <thetext>Created attachment 114836
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>501445</commentid>
    <comment_count>6</comment_count>
      <attachid>114836</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-12 09:27:50 -0800</bug_when>
    <thetext>Comment on attachment 114836
Patch

Attachment 114836 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10396762

New failing tests:
fast/repaint/background-scaling.html
fast/repaint/scale-page-shrink.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>501597</commentid>
    <comment_count>7</comment_count>
      <attachid>114836</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-11-13 20:43:44 -0800</bug_when>
    <thetext>Comment on attachment 114836
Patch

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

&gt; Source/WebKit/chromium/public/WebView.h:216
&gt; +    // Scales the page and the scroll offset by a factor of scaleFactor, while

nit: comment mentions &quot;scaleFactor&quot; but you left the parameter unnamed, which makes this
comment a tad confusing.  Also as James said, we should probably use only one term for this.
seems like we are converging on pageScaleFactor.

&gt; Source/WebKit/chromium/public/WebView.h:218
&gt; +    virtual void setPageScaleFactorAndPreserveScrollOffset(float) = 0;

nit: since you are not setting &quot;PreserveScrollOffset&quot;, I think a better name for this method
would be:  setPageScaleFactorPreservingScrollOffset(float pageScaleFactor)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>501622</commentid>
    <comment_count>8</comment_count>
      <attachid>114836</attachid>
    <who name="Fady Samuel">fsamuel</who>
    <bug_when>2011-11-13 22:22:07 -0800</bug_when>
    <thetext>Comment on attachment 114836
Patch

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

&gt;&gt; Source/WebKit/chromium/public/WebView.h:216
&gt;&gt; +    // Scales the page and the scroll offset by a factor of scaleFactor, while
&gt; 
&gt; nit: comment mentions &quot;scaleFactor&quot; but you left the parameter unnamed, which makes this
&gt; comment a tad confusing.  Also as James said, we should probably use only one term for this.
&gt; seems like we are converging on pageScaleFactor.

There&apos;s only so much I can do here. Recall that pageScaleFactor() is a method. C++ doesn&apos;t seem to allow the use of both a formal parameter variable called pageScaleFactor and a method called pageScaleFactor().

&gt;&gt; Source/WebKit/chromium/public/WebView.h:218
&gt;&gt; +    virtual void setPageScaleFactorAndPreserveScrollOffset(float) = 0;
&gt; 
&gt; nit: since you are not setting &quot;PreserveScrollOffset&quot;, I think a better name for this method
&gt; would be:  setPageScaleFactorPreservingScrollOffset(float pageScaleFactor)

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>501623</commentid>
    <comment_count>9</comment_count>
      <attachid>114765</attachid>
    <who name="Fady Samuel">fsamuel</who>
    <bug_when>2011-11-13 22:23:12 -0800</bug_when>
    <thetext>Comment on attachment 114765
Patch

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

&gt;&gt; Source/WebKit/chromium/public/WebView.h:218
&gt;&gt; +    virtual void setPageAndScrollOffsetScaleFactor(float) = 0;
&gt; 
&gt; did you mean PageScaleFactorAndScrollOffset? We talk about the &apos;PageScaleFactor&apos; elsewhere and it&apos;s weird to break it up like this

I had a hard time coming up with a name for this one

Changing it to setPageScaleFactorAndPreserveScrollOffset, which is logically what it does. It does not preserve the scroll offset in pixels but it preserves where  you are logically in the page by scaling the scroll offset. I&apos;m still not sure if this is the best name. I&apos;m open to suggestions.

&gt;&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:1873
&gt;&gt; +    IntPoint pt = offset;
&gt; 
&gt; don&apos;t use abbreviations for variable names in WebKit, - use full words

Done.

&gt;&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:1876
&gt;&gt; +    pt.setX(std::max(0, pt.x()));
&gt; 
&gt; don&apos;t use std::foo() in WebKit, put a using namespace std; declaration at the top of the file and then just call foo(). pretty sure we already have the using declaration in this file.

Sorry, I copied and pasted this from Chromium code I had locally and missed this change.  Fixed.

&gt;&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:1878
&gt;&gt; +    return pt;
&gt; 
&gt; are you sure there aren&apos;t any IntPoint/IntSize/etc utilities to do this instead of doing it all component by component?

I can use clampNegativeToZero, and shrunkTo. Done.

&gt;&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:1958
&gt;&gt; +    m_maximumPageScaleFactor = max(min(maxPageScale, maxPageScaleFactor), minPageScaleFactor);
&gt; 
&gt; you&apos;re clamping the passed-in values to within [0.25,4] ? that doesn&apos;t seem right - those values should be defaults but if a caller wants some other values we should honor them, imo. the caller has access to these values and can do whatever they like with them

Please see Alexandre&apos;s comments below.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>501624</commentid>
    <comment_count>10</comment_count>
      <attachid>114879</attachid>
    <who name="Fady Samuel">fsamuel</who>
    <bug_when>2011-11-13 22:27:33 -0800</bug_when>
    <thetext>Created attachment 114879
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>501625</commentid>
    <comment_count>11</comment_count>
    <who name="Fady Samuel">fsamuel</who>
    <bug_when>2011-11-13 22:28:43 -0800</bug_when>
    <thetext>fishd, jamesr: Ideally, I&apos;d like to rename applyScrollAndScale to setPageScaleFactor* but the issue is that scrolling happens before scaling in this method and setPageScaleFactor* might not capture that. Perhaps setPageScaleFactorAfterScroll? Does that sound reasonable or confusing?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>501627</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-13 22:30:36 -0800</bug_when>
    <thetext>Attachment 114879 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/plat...&quot; exit_code: 1

Source/WebKit/chromium/src/WebViewImpl.h:161:  The parameter name &quot;scaleFactor&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebKit/chromium/public/WebView.h:218:  The parameter name &quot;scaleFactor&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 2 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>501943</commentid>
    <comment_count>13</comment_count>
    <who name="Fady Samuel">fsamuel</who>
    <bug_when>2011-11-14 08:42:33 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; Attachment 114879 [details] did not pass style-queue:
&gt; 
&gt; Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/plat...&quot; exit_code: 1
&gt; 
&gt; Source/WebKit/chromium/src/WebViewImpl.h:161:  The parameter name &quot;scaleFactor&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
&gt; Source/WebKit/chromium/public/WebView.h:218:  The parameter name &quot;scaleFactor&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
&gt; Total errors found: 2 in 7 files
&gt; 
&gt; 
&gt; If any of these errors are false positives, please file a bug against check-webkit-style.

Sigh, getting rid of these.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>501951</commentid>
    <comment_count>14</comment_count>
      <attachid>114955</attachid>
    <who name="Fady Samuel">fsamuel</who>
    <bug_when>2011-11-14 08:48:24 -0800</bug_when>
    <thetext>Created attachment 114955
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>502333</commentid>
    <comment_count>15</comment_count>
      <attachid>114955</attachid>
    <who name="Fady Samuel">fsamuel</who>
    <bug_when>2011-11-14 14:47:14 -0800</bug_when>
    <thetext>Comment on attachment 114955
Patch

Clearing flags on attachment: 114955

Committed r100196: &lt;http://trac.webkit.org/changeset/100196&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>502334</commentid>
    <comment_count>16</comment_count>
    <who name="Fady Samuel">fsamuel</who>
    <bug_when>2011-11-14 14:47:21 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>502349</commentid>
    <comment_count>17</comment_count>
    <who name="Fady Samuel">fsamuel</who>
    <bug_when>2011-11-14 15:02:34 -0800</bug_when>
    <thetext>*** Bug 71622 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114765</attachid>
            <date>2011-11-11 13:46:54 -0800</date>
            <delta_ts>2011-11-13 22:23:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72176-20111111164653.patch</filename>
            <type>text/plain</type>
            <size>9961</size>
            <attacher name="Fady Samuel">fsamuel</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTk5NjUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXgg
NzM0MjNhNTc5ZjEwNmUxZjI4MTk4NjZjYWI0NTlhNjk4YTVlMWM5Zi4uNGU5OTM5YTU2ZjNmY2Qw
NDQwNjFmMTkzNjk0NDRkMDc4ZmM0YzE3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyNiBAQAorMjAxMS0xMS0xMSAgRmFkeSBTYW11ZWwgIDxmc2FtdWVsQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIHNldFBhZ2VTY2FsZUZhY3RvciBhbmQgYXNzb2Np
YXRlZCBtZXRob2RzIHNob3VsZCB0YWtlIHNjYWxpbmcgbGltaXRzIGludG8gYWNjb3VudAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzIxNzYKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAxLiBzZXRQYWdlU2Nh
bGVGYWN0b3JMaW1pdHMgbm93IGFmZmVjdHMgdGhlIGJlaGF2aW9yIG9mIG90aGVyIHNjYWxpbmcg
bWV0aG9kcworICAgICAgICAgICBpbmNsdWRpbmcgc2V0UGFnZVNjYWxlRmFjdG9yLgorICAgICAg
ICAyLiBzZXRQYWdlQW5kU2Nyb2xsT2Zmc2V0U2NhbGVGYWN0b3IgaW50cm9kdWNlZCB0aGF0IHNj
YWxlcyB0aGUgc2Nyb2xsIG9mZnNldCAKKyAgICAgICAgICAgYWxvbmcgd2l0aCB0aGUgcGFnZSB3
aXRoaW4gdGhlIHBhZ2UgYm91bmRzLgorCisgICAgICAgICogcHVibGljL1dlYlZpZXcuaDoKKyAg
ICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1w
bDo6V2ViVmlld0ltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6Y29tcHV0ZVNj
YWxlV2l0aGluTGltaXRzKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmNsYW1wT2Zm
c2V0QXRTY2FsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRQYWdlQW5kU2Ny
b2xsT2Zmc2V0U2NhbGVGYWN0b3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2V0
UGFnZVNjYWxlRmFjdG9yKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNldFBhZ2VT
Y2FsZUZhY3RvckxpbWl0cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjphcHBseVNj
cm9sbEFuZFNjYWxlKToKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuaDoKKwogMjAxMS0xMS0x
MSAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJv
bWl1bV0gRml4IENDTGF5ZXJUcmVlSG9zdCBsZWFrIGluIHdlYmtpdF91bml0X3Rlc3RzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3LmggYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3LmgKaW5kZXggZjUxMGY3ODJhYTE3NWNjNGNl
YjYzYjE4NWNlNzYxMjc4ZWNhMWQwZS4uMmUzMjZlZjZiNTcxY2Q3YWFmNTQ5MzNmYmNjZWMzYmE2
ODU2Njc1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmll
dy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXcuaApAQCAtNjEs
NiArNjEsOCBAQCBwdWJsaWM6CiAgICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgY29uc3QgZG91Ymxl
IHRleHRTaXplTXVsdGlwbGllclJhdGlvOwogICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIGNvbnN0
IGRvdWJsZSBtaW5UZXh0U2l6ZU11bHRpcGxpZXI7CiAgICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMg
Y29uc3QgZG91YmxlIG1heFRleHRTaXplTXVsdGlwbGllcjsKKyAgICBXRUJLSVRfRVhQT1JUIHN0
YXRpYyBjb25zdCBmbG9hdCBtaW5QYWdlU2NhbGVGYWN0b3I7CisgICAgV0VCS0lUX0VYUE9SVCBz
dGF0aWMgY29uc3QgZmxvYXQgbWF4UGFnZVNjYWxlRmFjdG9yOwogCiAgICAgLy8gQ29udHJvbHMg
dGhlIHRpbWUgdGhhdCB1c2VyIHNjcmlwdHMgaW5qZWN0ZWQgaW50byB0aGUgZG9jdW1lbnQgcnVu
LgogICAgIGVudW0gVXNlclNjcmlwdEluamVjdEF0IHsKQEAgLTIwNywyMCArMjA5LDI0IEBAIHB1
YmxpYzoKICAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyBkb3VibGUgem9vbUxldmVsVG9ab29tRmFj
dG9yKGRvdWJsZSB6b29tTGV2ZWwpOwogICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIGRvdWJsZSB6
b29tRmFjdG9yVG9ab29tTGV2ZWwoZG91YmxlIGZhY3Rvcik7CiAKLSAgICAvLyBQYWdlU2NhbGVG
YWN0b3Igd2lsbCBiZSBmb3JjZS1jbGFtcGVkIGJldHdlZW4gbWluUGFnZVNjYWxlIGFuZCBtYXhQ
YWdlU2NhbGUKLSAgICAvLyAoYW5kIHRoZXNlIHZhbHVlcyB3aWxsIHBlcnNpc3QgdW50aWwgc2V0
UGFnZVNjYWxlRmFjdG9yTGltaXRzIGlzIGNhbGxlZAotICAgIC8vIGFnYWluKS4KLSAgICB2aXJ0
dWFsIHZvaWQgc2V0UGFnZVNjYWxlRmFjdG9yTGltaXRzKGZsb2F0IG1pblBhZ2VTY2FsZSwgZmxv
YXQgbWF4UGFnZVNjYWxlKSA9IDA7Ci0KICAgICAvLyBHZXRzIHRoZSBzY2FsZSBmYWN0b3Igb2Yg
dGhlIHBhZ2UsIHdoZXJlIDEuMCBpcyB0aGUgbm9ybWFsIHNpemUsID4gMS4wCiAgICAgLy8gaXMg
c2NhbGVkIHVwLCA8IDEuMCBpcyBzY2FsZWQgZG93bi4KICAgICB2aXJ0dWFsIGZsb2F0IHBhZ2VT
Y2FsZUZhY3RvcigpIGNvbnN0ID0gMDsKIAorICAgIC8vIFNjYWxlcyB0aGUgcGFnZSBhbmQgdGhl
IHNjcm9sbCBvZmZzZXQgYnkgYSBmYWN0b3Igb2Ygc2NhbGVGYWN0b3IsIHdoaWxlCisgICAgLy8g
ZW5zdXJpbmcgdGhhdCB0aGUgbmV3IHNjcm9sbCBwb3NpdGlvbiBkb2VzIG5vdCBnbyBiZXlvbmQg
dGhlIGVkZ2Ugb2YgdGhlIHBhZ2UuCisgICAgdmlydHVhbCB2b2lkIHNldFBhZ2VBbmRTY3JvbGxP
ZmZzZXRTY2FsZUZhY3RvcihmbG9hdCkgPSAwOworCiAgICAgLy8gU2NhbGVzIGEgcGFnZSBieSBh
IGZhY3RvciBvZiBzY2FsZUZhY3RvciBhbmQgdGhlbiBzZXRzIGEgc2Nyb2xsIHBvc2l0aW9uIHRv
ICh4LCB5KS4KICAgICAvLyBzZXRQYWdlU2NhbGVGYWN0b3IoKSBtYWduaWZpZXMgYW5kIHNocmlu
a3MgYSBwYWdlIHdpdGhvdXQgYWZmZWN0aW5nIGxheW91dC4KICAgICAvLyBPbiB0aGUgb3RoZXIg
aGFuZCwgem9vbWluZyBhZmZlY3RzIGxheW91dCBvZiB0aGUgcGFnZS4KICAgICB2aXJ0dWFsIHZv
aWQgc2V0UGFnZVNjYWxlRmFjdG9yKGZsb2F0IHNjYWxlRmFjdG9yLCBjb25zdCBXZWJQb2ludCYg
b3JpZ2luKSA9IDA7CiAKKyAgICAvLyBQYWdlU2NhbGVGYWN0b3Igd2lsbCBiZSBmb3JjZS1jbGFt
cGVkIGJldHdlZW4gbWluUGFnZVNjYWxlIGFuZCBtYXhQYWdlU2NhbGUKKyAgICAvLyAoYW5kIHRo
ZXNlIHZhbHVlcyB3aWxsIHBlcnNpc3QgdW50aWwgc2V0UGFnZVNjYWxlRmFjdG9yTGltaXRzIGlz
IGNhbGxlZAorICAgIC8vIGFnYWluKS4KKyAgICB2aXJ0dWFsIHZvaWQgc2V0UGFnZVNjYWxlRmFj
dG9yTGltaXRzKGZsb2F0IG1pblBhZ2VTY2FsZSwgZmxvYXQgbWF4UGFnZVNjYWxlKSA9IDA7CisK
ICAgICAvLyBUaGUgcmF0aW8gb2YgdGhlIGN1cnJlbnQgZGV2aWNlJ3Mgc2NyZWVuIERQSSB0byB0
aGUgdGFyZ2V0IGRldmljZSdzIHNjcmVlbiBEUEkuCiAgICAgdmlydHVhbCBmbG9hdCBkZXZpY2VT
Y2FsZUZhY3RvcigpIGNvbnN0ID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
Vmlld0ltcGwuY3BwCmluZGV4IGZlZGQ2ZjA4NDk4NzZjZjAyMmQxZGQ0YjJiZDU1MzhiZmQ0MDYy
MmUuLmQ0ZGJjMWU1ZmJlOWNkMjJmYTRiNDFhMGI0MTUzMGIyNGM1MWJlODEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAgLTE5OSw2ICsxOTksOCBAQCBu
YW1lc3BhY2UgV2ViS2l0IHsKIGNvbnN0IGRvdWJsZSBXZWJWaWV3Ojp0ZXh0U2l6ZU11bHRpcGxp
ZXJSYXRpbyA9IDEuMjsKIGNvbnN0IGRvdWJsZSBXZWJWaWV3OjptaW5UZXh0U2l6ZU11bHRpcGxp
ZXIgPSAwLjU7CiBjb25zdCBkb3VibGUgV2ViVmlldzo6bWF4VGV4dFNpemVNdWx0aXBsaWVyID0g
My4wOworY29uc3QgZmxvYXQgV2ViVmlldzo6bWluUGFnZVNjYWxlRmFjdG9yID0gMC4yNTsKK2Nv
bnN0IGZsb2F0IFdlYlZpZXc6Om1heFBhZ2VTY2FsZUZhY3RvciA9IDQuMDsKIAogCiAvLyBUaGUg
Z3JvdXAgbmFtZSBpZGVudGlmaWVzIGEgbmFtZXNwYWNlIG9mIHBhZ2VzLiAgUGFnZSBncm91cCBp
cyB1c2VkIG9uIE9TWApAQCAtMzM0LDYgKzMzNiw4IEBAIFdlYlZpZXdJbXBsOjpXZWJWaWV3SW1w
bChXZWJWaWV3Q2xpZW50KiBjbGllbnQpCiAgICAgLCBtX3pvb21MZXZlbCgwKQogICAgICwgbV9t
aW5pbXVtWm9vbUxldmVsKHpvb21GYWN0b3JUb1pvb21MZXZlbChtaW5UZXh0U2l6ZU11bHRpcGxp
ZXIpKQogICAgICwgbV9tYXhpbXVtWm9vbUxldmVsKHpvb21GYWN0b3JUb1pvb21MZXZlbChtYXhU
ZXh0U2l6ZU11bHRpcGxpZXIpKQorICAgICwgbV9taW5pbXVtUGFnZVNjYWxlRmFjdG9yKG1pblBh
Z2VTY2FsZUZhY3RvcikKKyAgICAsIG1fbWF4aW11bVBhZ2VTY2FsZUZhY3RvcihtYXhQYWdlU2Nh
bGVGYWN0b3IpCiAgICAgLCBtX2NvbnRleHRNZW51QWxsb3dlZChmYWxzZSkKICAgICAsIG1fZG9p
bmdEcmFnQW5kRHJvcChmYWxzZSkKICAgICAsIG1faWdub3JlSW5wdXRFdmVudHMoZmFsc2UpCkBA
IC0xODQ4LDExICsxODUyLDU1IEBAIGZsb2F0IFdlYlZpZXdJbXBsOjpwYWdlU2NhbGVGYWN0b3Io
KSBjb25zdAogICAgIHJldHVybiBwYWdlKCktPnBhZ2VTY2FsZUZhY3RvcigpOwogfQogCitmbG9h
dCBXZWJWaWV3SW1wbDo6Y29tcHV0ZVNjYWxlV2l0aGluTGltaXRzKGZsb2F0IHNjYWxlRmFjdG9y
KQoreworICAgIGZsb2F0IG1pbmltdW1TY2FsZSA9IG1fbWluaW11bVBhZ2VTY2FsZUZhY3RvciAq
IGRldmljZVNjYWxlRmFjdG9yKCk7CisgICAgZmxvYXQgbWF4aW11bVNjYWxlID0gbV9tYXhpbXVt
UGFnZVNjYWxlRmFjdG9yICogZGV2aWNlU2NhbGVGYWN0b3IoKTsKKyAgICByZXR1cm4gbWluKG1h
eChzY2FsZUZhY3RvciwgbWluaW11bVNjYWxlKSwgbWF4aW11bVNjYWxlKTsKK30KKworV2ViUG9p
bnQgV2ViVmlld0ltcGw6OmNsYW1wT2Zmc2V0QXRTY2FsZShjb25zdCBXZWJQb2ludCYgb2Zmc2V0
LCBmbG9hdCBzY2FsZSkKK3sKKyAgICAvLyBUaGlzIGlzIHRoZSBzY2FsZWQgY29udGVudCBzaXpl
LiBXZSBuZWVkIHRvIGNvbnZlcnQgaXQgdG8gdGhlIG5ldyBzY2FsZSBmYWN0b3IuCisgICAgV2Vi
U2l6ZSBjb250ZW50U2l6ZSA9IG1haW5GcmFtZSgpLT5jb250ZW50c1NpemUoKTsKKyAgICBmbG9h
dCBkZWx0YVNjYWxlID0gc2NhbGUgLyBwYWdlU2NhbGVGYWN0b3IoKTsKKyAgICBpbnQgZG9jV2lk
dGhBdE5ld1NjYWxlID0gY29udGVudFNpemUud2lkdGggKiBkZWx0YVNjYWxlOworICAgIGludCBk
b2NIZWlnaHRBdE5ld1NjYWxlID0gY29udGVudFNpemUuaGVpZ2h0ICogZGVsdGFTY2FsZTsKKyAg
ICBpbnQgdmlld1dpZHRoID0gbV9zaXplLndpZHRoOworICAgIGludCB2aWV3SGVpZ2h0ID0gbV9z
aXplLmhlaWdodDsKKworICAgIC8vIEVuZm9yY2UgdGhlIG1heGltdW0gYW5kIG1pbmltdW0gc2Ny
b2xsIHBvc2l0aW9ucyBhdCB0aGUgbmV3IHNjYWxlLgorICAgIEludFBvaW50IHB0ID0gb2Zmc2V0
OworICAgIHB0LnNldFgobWluKGRvY1dpZHRoQXROZXdTY2FsZSAtIHZpZXdXaWR0aCwgcHQueCgp
KSk7CisgICAgcHQuc2V0WShtaW4oZG9jSGVpZ2h0QXROZXdTY2FsZSAtIHZpZXdIZWlnaHQsIHB0
LnkoKSkpOworICAgIHB0LnNldFgoc3RkOjptYXgoMCwgcHQueCgpKSk7CisgICAgcHQuc2V0WShz
dGQ6Om1heCgwLCBwdC55KCkpKTsKKyAgICByZXR1cm4gcHQ7Cit9CisKK3ZvaWQgV2ViVmlld0lt
cGw6OnNldFBhZ2VBbmRTY3JvbGxPZmZzZXRTY2FsZUZhY3RvcihmbG9hdCBzY2FsZUZhY3RvcikK
K3sKKyAgICAvLyBQaWNrIGEgc2NhbGUgZmFjdG9yIHRoYXQgaXMgd2l0aGluIHRoZSBleHBlY3Rl
ZCBsaW1pdHMKKyAgICBzY2FsZUZhY3RvciA9IGNvbXB1dGVTY2FsZVdpdGhpbkxpbWl0cyhzY2Fs
ZUZhY3Rvcik7CisgICAgaWYgKHNjYWxlRmFjdG9yID09IHBhZ2VTY2FsZUZhY3RvcigpKQorICAg
ICAgICByZXR1cm47CisKKyAgICAvLyBGSVhNRTogc2Nyb2xsT2Zmc2V0IG91Z2h0IHRvIGJlIGEg
cG9pbnQgbm90IGEgc2l6ZS4KKyAgICBJbnRQb2ludCBzY3JvbGxPZmZzZXRBdE5ld1NjYWxlKG1h
aW5GcmFtZSgpLT5zY3JvbGxPZmZzZXQoKS53aWR0aCwgbWFpbkZyYW1lKCktPnNjcm9sbE9mZnNl
dCgpLmhlaWdodCk7CisgICAgZmxvYXQgZGVsdGFTY2FsZSA9IHNjYWxlRmFjdG9yIC8gcGFnZVNj
YWxlRmFjdG9yKCk7CisgICAgc2Nyb2xsT2Zmc2V0QXROZXdTY2FsZS5zZXRYKHNjcm9sbE9mZnNl
dEF0TmV3U2NhbGUueCgpICogZGVsdGFTY2FsZSk7CisgICAgc2Nyb2xsT2Zmc2V0QXROZXdTY2Fs
ZS5zZXRZKHNjcm9sbE9mZnNldEF0TmV3U2NhbGUueSgpICogZGVsdGFTY2FsZSk7CisKKyAgICBX
ZWJQb2ludCBjbGFtcGVkT2Zmc2V0QXROZXdTY2FsZSA9IGNsYW1wT2Zmc2V0QXRTY2FsZShzY3Jv
bGxPZmZzZXRBdE5ld1NjYWxlLCBzY2FsZUZhY3Rvcik7CisgICAgc2V0UGFnZVNjYWxlRmFjdG9y
KHNjYWxlRmFjdG9yLCBjbGFtcGVkT2Zmc2V0QXROZXdTY2FsZSk7Cit9CisKIHZvaWQgV2ViVmll
d0ltcGw6OnNldFBhZ2VTY2FsZUZhY3RvcihmbG9hdCBzY2FsZUZhY3RvciwgY29uc3QgV2ViUG9p
bnQmIG9yaWdpbikKIHsKICAgICBpZiAoIXBhZ2UoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAg
c2NhbGVGYWN0b3IgPSBjb21wdXRlU2NhbGVXaXRoaW5MaW1pdHMoc2NhbGVGYWN0b3IpOwogICAg
IHBhZ2UoKS0+c2V0UGFnZVNjYWxlRmFjdG9yKHNjYWxlRmFjdG9yLCBvcmlnaW4pOwogfQogCkBA
IC0xOTA2LDggKzE5NTQsMTIgQEAgdm9pZCBXZWJWaWV3SW1wbDo6ZW5hYmxlRml4ZWRMYXlvdXRN
b2RlKGJvb2wgZW5hYmxlKQogCiB2b2lkIFdlYlZpZXdJbXBsOjpzZXRQYWdlU2NhbGVGYWN0b3JM
aW1pdHMoZmxvYXQgbWluUGFnZVNjYWxlLCBmbG9hdCBtYXhQYWdlU2NhbGUpCiB7CisgICAgbV9t
aW5pbXVtUGFnZVNjYWxlRmFjdG9yID0gbWluKG1heChtaW5QYWdlU2NhbGUsIG1pblBhZ2VTY2Fs
ZUZhY3RvciksIG1heFBhZ2VTY2FsZUZhY3Rvcik7CisgICAgbV9tYXhpbXVtUGFnZVNjYWxlRmFj
dG9yID0gbWF4KG1pbihtYXhQYWdlU2NhbGUsIG1heFBhZ2VTY2FsZUZhY3RvciksIG1pblBhZ2VT
Y2FsZUZhY3Rvcik7CisgICAgQVNTRVJUKG1pblBhZ2VTY2FsZSA8PSBtYXhQYWdlU2NhbGUpOwog
I2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLSAgICBtX2xheWVyVHJlZUhvc3QtPnNl
dFBhZ2VTY2FsZUZhY3RvckxpbWl0cyhtaW5QYWdlU2NhbGUsIG1heFBhZ2VTY2FsZSk7CisgICAg
aWYgKG1fbGF5ZXJUcmVlSG9zdCkKKyAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXRQYWdlU2Nh
bGVGYWN0b3JMaW1pdHMobWluUGFnZVNjYWxlLCBtYXhQYWdlU2NhbGUpOwogI2VuZGlmCiB9CiAK
QEAgLTI3MjQsNyArMjc3Niw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OmFwcGx5U2Nyb2xsQW5kU2Nh
bGUoY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEsIGZsb2F0IHNjYWxlRmFjCiAKICAgICBmbG9h
dCBvbGRTY2FsZSA9IHBhZ2VTY2FsZUZhY3RvcigpOwogICAgIGlmICghb2xkU2NhbGUpCi0gICAg
ICAgIG9sZFNjYWxlID0gMS4wZjsKKyAgICAgICAgb2xkU2NhbGUgPSAxOwogCiAgICAgaWYgKCFz
Y2FsZUZhY3RvciB8fCBvbGRTY2FsZSA9PSBzY2FsZUZhY3RvcikKICAgICAgICAgbWFpbkZyYW1l
SW1wbCgpLT5mcmFtZVZpZXcoKS0+c2Nyb2xsQnkoc2Nyb2xsRGVsdGEpOwpAQCAtMjczNiw2ICsy
Nzg4LDkgQEAgdm9pZCBXZWJWaWV3SW1wbDo6YXBwbHlTY3JvbGxBbmRTY2FsZShjb25zdCBJbnRT
aXplJiBzY3JvbGxEZWx0YSwgZmxvYXQgc2NhbGVGYWMKICAgICAgICAgV2ViU2l6ZSBzY3JvbGxP
ZmZzZXQgPSBtYWluRnJhbWUoKS0+c2Nyb2xsT2Zmc2V0KCk7CiAgICAgICAgIHNjcm9sbE9mZnNl
dC53aWR0aCArPSBzY3JvbGxEZWx0YS53aWR0aCgpOwogICAgICAgICBzY3JvbGxPZmZzZXQuaGVp
Z2h0ICs9IHNjcm9sbERlbHRhLmhlaWdodCgpOworICAgICAgICAvLyBOZWVkIHRvIGNvbXB1dGUg
dGhlIGFwcHJvcHJpYXRlIHNjYWxlIGZhY3RvciBoZXJlIHRvIGNvbXB1dGUKKyAgICAgICAgLy8g
dGhlIHNjYWxlRGVsdGEgYXBwcm9wcmlhdGVseS4KKyAgICAgICAgc2NhbGVGYWN0b3IgPSBjb21w
dXRlU2NhbGVXaXRoaW5MaW1pdHMoc2NhbGVGYWN0b3IpOwogICAgICAgICBmbG9hdCBzY2FsZURl
bHRhID0gc2NhbGVGYWN0b3IgLyBvbGRTY2FsZTsKICAgICAgICAgV2ViUG9pbnQgc2NhbGVkU2Ny
b2xsT2Zmc2V0KHNjcm9sbE9mZnNldC53aWR0aCAqIHNjYWxlRGVsdGEsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGxPZmZzZXQuaGVpZ2h0ICogc2NhbGVEZWx0YSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAppbmRleCA5YTAxOTkyNGE5
ZjBkMmQ4NzcyNzc4YTU2N2VkM2M2NDBmOWEwOGQzLi5kMzQyZDQzNjM0MWE1NGJmNGViY2M0ZDEx
OTI3Yzg5OGIyM2FlODdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBs
LmgKQEAgLTE1OCw2ICsxNTgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHpvb21MaW1p
dHNDaGFuZ2VkKGRvdWJsZSBtaW5pbXVtWm9vbUxldmVsLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkb3VibGUgbWF4aW11bVpvb21MZXZlbCk7CiAgICAgdmlydHVhbCBmbG9h
dCBwYWdlU2NhbGVGYWN0b3IoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UGFnZUFuZFNj
cm9sbE9mZnNldFNjYWxlRmFjdG9yKGZsb2F0KTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0UGFnZVNj
YWxlRmFjdG9yKGZsb2F0IHNjYWxlRmFjdG9yLCBjb25zdCBXZWJQb2ludCYgb3JpZ2luKTsKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0UGFnZVNjYWxlRmFjdG9yTGltaXRzKGZsb2F0IG1pblBhZ2VTY2Fs
ZSwgZmxvYXQgbWF4UGFnZVNjYWxlKTsKICAgICB2aXJ0dWFsIGZsb2F0IGRldmljZVNjYWxlRmFj
dG9yKCkgY29uc3Q7CkBAIC00MTcsNiArNDE4LDkgQEAgcHVibGljOgogICAgIHZvaWQgbG9zZUNv
bXBvc2l0b3JDb250ZXh0KGludCBudW1UaW1lcyk7CiAKIHByaXZhdGU6CisgICAgZmxvYXQgY29t
cHV0ZVNjYWxlV2l0aGluTGltaXRzKGZsb2F0IHNjYWxlKTsKKyAgICBXZWJQb2ludCBjbGFtcE9m
ZnNldEF0U2NhbGUoY29uc3QgV2ViUG9pbnQmIG9mZnNldCwgZmxvYXQgc2NhbGUpOworCiAgICAg
ZnJpZW5kIGNsYXNzIFdlYlZpZXc7ICAvLyBTbyBXZWJWaWV3OjpDcmVhdGUgY2FuIGNhbGwgb3Vy
IGNvbnN0cnVjdG9yCiAgICAgZnJpZW5kIGNsYXNzIFdURjo6UmVmQ291bnRlZDxXZWJWaWV3SW1w
bD47CiAKQEAgLTUxMyw2ICs1MTcsMTAgQEAgcHJpdmF0ZToKIAogICAgIGRvdWJsZSBtX21heGlt
dW1ab29tTGV2ZWw7CiAKKyAgICBmbG9hdCBtX21pbmltdW1QYWdlU2NhbGVGYWN0b3I7CisKKyAg
ICBmbG9hdCBtX21heGltdW1QYWdlU2NhbGVGYWN0b3I7CisKICAgICBib29sIG1fY29udGV4dE1l
bnVBbGxvd2VkOwogCiAgICAgYm9vbCBtX2RvaW5nRHJhZ0FuZERyb3A7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114836</attachid>
            <date>2011-11-12 08:59:12 -0800</date>
            <delta_ts>2011-11-13 22:27:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72176-20111112115910.patch</filename>
            <type>text/plain</type>
            <size>9578</size>
            <attacher name="Fady Samuel">fsamuel</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTk5NjUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXgg
NzM0MjNhNTc5ZjEwNmUxZjI4MTk4NjZjYWI0NTlhNjk4YTVlMWM5Zi4uMzdhNWVhZDI1MGQxZTE5
MmNmNWY0OTA4ZDg0MGZkODYzYjNhNmE1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyNiBAQAorMjAxMS0xMS0xMiAgRmFkeSBTYW11ZWwgIDxmc2FtdWVsQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIHNldFBhZ2VTY2FsZUZhY3RvciBhbmQgYXNzb2Np
YXRlZCBtZXRob2RzIHNob3VsZCB0YWtlIHNjYWxpbmcgbGltaXRzIGludG8gYWNjb3VudAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzIxNzYKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAxLiBzZXRQYWdlU2Nh
bGVGYWN0b3JMaW1pdHMgbm93IGFmZmVjdHMgdGhlIGJlaGF2aW9yIG9mIG90aGVyIHNjYWxpbmcg
bWV0aG9kcworICAgICAgICAgICBpbmNsdWRpbmcgc2V0UGFnZVNjYWxlRmFjdG9yLgorICAgICAg
ICAyLiBzZXRQYWdlU2NhbGVGYWN0b3JBbmRQcmVzZXJ2ZVNjcm9sbE9mZnNldCBpbnRyb2R1Y2Vk
IHRoYXQgc2NhbGVzIHRoZSBzY3JvbGwgb2Zmc2V0IAorICAgICAgICAgICBhbG9uZyB3aXRoIHRo
ZSBwYWdlLCBwcmVzZXJ2aW5nIHRoZSBzY3JvbGwgcG9zaXRpb24gd2l0aGluIHRoZSBwYWdlIGJv
dW5kcy4KKworICAgICAgICAqIHB1YmxpYy9XZWJWaWV3Lmg6CisgICAgICAgICogc3JjL1dlYlZp
ZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OldlYlZpZXdJbXBsKToK
KyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmNvbXB1dGVQYWdlU2NhbGVGYWN0b3JXaXRo
aW5MaW1pdHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6Y2xhbXBPZmZzZXRBdFNj
YWxlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNldFBhZ2VTY2FsZUZhY3RvckFu
ZFByZXNlcnZlU2Nyb2xsT2Zmc2V0KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNl
dFBhZ2VTY2FsZUZhY3Rvcik6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRQYWdl
U2NhbGVGYWN0b3JMaW1pdHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6YXBwbHlT
Y3JvbGxBbmRTY2FsZSk6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmg6CisKIDIwMTEtMTEt
MTEgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hy
b21pdW1dIEZpeCBDQ0xheWVyVHJlZUhvc3QgbGVhayBpbiB3ZWJraXRfdW5pdF90ZXN0cwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlldy5oIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlldy5oCmluZGV4IGY1MTBmNzgyYWExNzVjYzRj
ZWI2M2IxODVjZTc2MTI3OGVjYTFkMGUuLmFlYTM1NjIyYTM3YjVhZWNjMDY4NDc2YjA4MTZmZTJi
YjZmYmU5ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZp
ZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3LmgKQEAgLTYx
LDYgKzYxLDggQEAgcHVibGljOgogICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIGNvbnN0IGRvdWJs
ZSB0ZXh0U2l6ZU11bHRpcGxpZXJSYXRpbzsKICAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyBjb25z
dCBkb3VibGUgbWluVGV4dFNpemVNdWx0aXBsaWVyOwogICAgIFdFQktJVF9FWFBPUlQgc3RhdGlj
IGNvbnN0IGRvdWJsZSBtYXhUZXh0U2l6ZU11bHRpcGxpZXI7CisgICAgV0VCS0lUX0VYUE9SVCBz
dGF0aWMgY29uc3QgZmxvYXQgbWluUGFnZVNjYWxlRmFjdG9yOworICAgIFdFQktJVF9FWFBPUlQg
c3RhdGljIGNvbnN0IGZsb2F0IG1heFBhZ2VTY2FsZUZhY3RvcjsKIAogICAgIC8vIENvbnRyb2xz
IHRoZSB0aW1lIHRoYXQgdXNlciBzY3JpcHRzIGluamVjdGVkIGludG8gdGhlIGRvY3VtZW50IHJ1
bi4KICAgICBlbnVtIFVzZXJTY3JpcHRJbmplY3RBdCB7CkBAIC0yMDcsMjAgKzIwOSwyNCBAQCBw
dWJsaWM6CiAgICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgZG91YmxlIHpvb21MZXZlbFRvWm9vbUZh
Y3Rvcihkb3VibGUgem9vbUxldmVsKTsKICAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyBkb3VibGUg
em9vbUZhY3RvclRvWm9vbUxldmVsKGRvdWJsZSBmYWN0b3IpOwogCi0gICAgLy8gUGFnZVNjYWxl
RmFjdG9yIHdpbGwgYmUgZm9yY2UtY2xhbXBlZCBiZXR3ZWVuIG1pblBhZ2VTY2FsZSBhbmQgbWF4
UGFnZVNjYWxlCi0gICAgLy8gKGFuZCB0aGVzZSB2YWx1ZXMgd2lsbCBwZXJzaXN0IHVudGlsIHNl
dFBhZ2VTY2FsZUZhY3RvckxpbWl0cyBpcyBjYWxsZWQKLSAgICAvLyBhZ2FpbikuCi0gICAgdmly
dHVhbCB2b2lkIHNldFBhZ2VTY2FsZUZhY3RvckxpbWl0cyhmbG9hdCBtaW5QYWdlU2NhbGUsIGZs
b2F0IG1heFBhZ2VTY2FsZSkgPSAwOwotCiAgICAgLy8gR2V0cyB0aGUgc2NhbGUgZmFjdG9yIG9m
IHRoZSBwYWdlLCB3aGVyZSAxLjAgaXMgdGhlIG5vcm1hbCBzaXplLCA+IDEuMAogICAgIC8vIGlz
IHNjYWxlZCB1cCwgPCAxLjAgaXMgc2NhbGVkIGRvd24uCiAgICAgdmlydHVhbCBmbG9hdCBwYWdl
U2NhbGVGYWN0b3IoKSBjb25zdCA9IDA7CiAKKyAgICAvLyBTY2FsZXMgdGhlIHBhZ2UgYW5kIHRo
ZSBzY3JvbGwgb2Zmc2V0IGJ5IGEgZmFjdG9yIG9mIHNjYWxlRmFjdG9yLCB3aGlsZQorICAgIC8v
IGVuc3VyaW5nIHRoYXQgdGhlIG5ldyBzY3JvbGwgcG9zaXRpb24gZG9lcyBub3QgZ28gYmV5b25k
IHRoZSBlZGdlIG9mIHRoZSBwYWdlLgorICAgIHZpcnR1YWwgdm9pZCBzZXRQYWdlU2NhbGVGYWN0
b3JBbmRQcmVzZXJ2ZVNjcm9sbE9mZnNldChmbG9hdCkgPSAwOworCiAgICAgLy8gU2NhbGVzIGEg
cGFnZSBieSBhIGZhY3RvciBvZiBzY2FsZUZhY3RvciBhbmQgdGhlbiBzZXRzIGEgc2Nyb2xsIHBv
c2l0aW9uIHRvICh4LCB5KS4KICAgICAvLyBzZXRQYWdlU2NhbGVGYWN0b3IoKSBtYWduaWZpZXMg
YW5kIHNocmlua3MgYSBwYWdlIHdpdGhvdXQgYWZmZWN0aW5nIGxheW91dC4KICAgICAvLyBPbiB0
aGUgb3RoZXIgaGFuZCwgem9vbWluZyBhZmZlY3RzIGxheW91dCBvZiB0aGUgcGFnZS4KICAgICB2
aXJ0dWFsIHZvaWQgc2V0UGFnZVNjYWxlRmFjdG9yKGZsb2F0IHNjYWxlRmFjdG9yLCBjb25zdCBX
ZWJQb2ludCYgb3JpZ2luKSA9IDA7CiAKKyAgICAvLyBQYWdlU2NhbGVGYWN0b3Igd2lsbCBiZSBm
b3JjZS1jbGFtcGVkIGJldHdlZW4gbWluUGFnZVNjYWxlIGFuZCBtYXhQYWdlU2NhbGUKKyAgICAv
LyAoYW5kIHRoZXNlIHZhbHVlcyB3aWxsIHBlcnNpc3QgdW50aWwgc2V0UGFnZVNjYWxlRmFjdG9y
TGltaXRzIGlzIGNhbGxlZAorICAgIC8vIGFnYWluKS4KKyAgICB2aXJ0dWFsIHZvaWQgc2V0UGFn
ZVNjYWxlRmFjdG9yTGltaXRzKGZsb2F0IG1pblBhZ2VTY2FsZSwgZmxvYXQgbWF4UGFnZVNjYWxl
KSA9IDA7CisKICAgICAvLyBUaGUgcmF0aW8gb2YgdGhlIGN1cnJlbnQgZGV2aWNlJ3Mgc2NyZWVu
IERQSSB0byB0aGUgdGFyZ2V0IGRldmljZSdzIHNjcmVlbiBEUEkuCiAgICAgdmlydHVhbCBmbG9h
dCBkZXZpY2VTY2FsZUZhY3RvcigpIGNvbnN0ID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IGZlZGQ2ZjA4NDk4NzZjZjAyMmQxZGQ0YjJiZDU1
MzhiZmQ0MDYyMmUuLmNhZGI4NWUwMzhjNTM5MzMzNGUwZWI3MDdkZWNjMzc5NDlhYmJhNDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAgLTE5OSw2ICsx
OTksOCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNvbnN0IGRvdWJsZSBXZWJWaWV3Ojp0ZXh0U2l6
ZU11bHRpcGxpZXJSYXRpbyA9IDEuMjsKIGNvbnN0IGRvdWJsZSBXZWJWaWV3OjptaW5UZXh0U2l6
ZU11bHRpcGxpZXIgPSAwLjU7CiBjb25zdCBkb3VibGUgV2ViVmlldzo6bWF4VGV4dFNpemVNdWx0
aXBsaWVyID0gMy4wOworY29uc3QgZmxvYXQgV2ViVmlldzo6bWluUGFnZVNjYWxlRmFjdG9yID0g
MC4yNTsKK2NvbnN0IGZsb2F0IFdlYlZpZXc6Om1heFBhZ2VTY2FsZUZhY3RvciA9IDQuMDsKIAog
CiAvLyBUaGUgZ3JvdXAgbmFtZSBpZGVudGlmaWVzIGEgbmFtZXNwYWNlIG9mIHBhZ2VzLiAgUGFn
ZSBncm91cCBpcyB1c2VkIG9uIE9TWApAQCAtMzM0LDYgKzMzNiw4IEBAIFdlYlZpZXdJbXBsOjpX
ZWJWaWV3SW1wbChXZWJWaWV3Q2xpZW50KiBjbGllbnQpCiAgICAgLCBtX3pvb21MZXZlbCgwKQog
ICAgICwgbV9taW5pbXVtWm9vbUxldmVsKHpvb21GYWN0b3JUb1pvb21MZXZlbChtaW5UZXh0U2l6
ZU11bHRpcGxpZXIpKQogICAgICwgbV9tYXhpbXVtWm9vbUxldmVsKHpvb21GYWN0b3JUb1pvb21M
ZXZlbChtYXhUZXh0U2l6ZU11bHRpcGxpZXIpKQorICAgICwgbV9taW5pbXVtUGFnZVNjYWxlRmFj
dG9yKG1pblBhZ2VTY2FsZUZhY3RvcikKKyAgICAsIG1fbWF4aW11bVBhZ2VTY2FsZUZhY3Rvciht
YXhQYWdlU2NhbGVGYWN0b3IpCiAgICAgLCBtX2NvbnRleHRNZW51QWxsb3dlZChmYWxzZSkKICAg
ICAsIG1fZG9pbmdEcmFnQW5kRHJvcChmYWxzZSkKICAgICAsIG1faWdub3JlSW5wdXRFdmVudHMo
ZmFsc2UpCkBAIC0xODQ4LDExICsxODUyLDUyIEBAIGZsb2F0IFdlYlZpZXdJbXBsOjpwYWdlU2Nh
bGVGYWN0b3IoKSBjb25zdAogICAgIHJldHVybiBwYWdlKCktPnBhZ2VTY2FsZUZhY3RvcigpOwog
fQogCitmbG9hdCBXZWJWaWV3SW1wbDo6Y29tcHV0ZVBhZ2VTY2FsZUZhY3RvcldpdGhpbkxpbWl0
cyhmbG9hdCBzY2FsZUZhY3RvcikKK3sKKyAgICByZXR1cm4gbWluKG1heChzY2FsZUZhY3Rvciwg
bV9taW5pbXVtUGFnZVNjYWxlRmFjdG9yKSwgbV9tYXhpbXVtUGFnZVNjYWxlRmFjdG9yKTsKK30K
KworV2ViUG9pbnQgV2ViVmlld0ltcGw6OmNsYW1wT2Zmc2V0QXRTY2FsZShjb25zdCBXZWJQb2lu
dCYgb2Zmc2V0LCBmbG9hdCBzY2FsZSkKK3sKKyAgICAvLyBUaGlzIGlzIHRoZSBzY2FsZWQgY29u
dGVudCBzaXplLiBXZSBuZWVkIHRvIGNvbnZlcnQgaXQgdG8gdGhlIG5ldyBzY2FsZSBmYWN0b3Iu
CisgICAgV2ViU2l6ZSBjb250ZW50U2l6ZSA9IG1haW5GcmFtZSgpLT5jb250ZW50c1NpemUoKTsK
KyAgICBmbG9hdCBkZWx0YVNjYWxlID0gc2NhbGUgLyBwYWdlU2NhbGVGYWN0b3IoKTsKKyAgICBp
bnQgZG9jV2lkdGhBdE5ld1NjYWxlID0gY29udGVudFNpemUud2lkdGggKiBkZWx0YVNjYWxlOwor
ICAgIGludCBkb2NIZWlnaHRBdE5ld1NjYWxlID0gY29udGVudFNpemUuaGVpZ2h0ICogZGVsdGFT
Y2FsZTsKKyAgICBpbnQgdmlld1dpZHRoID0gbV9zaXplLndpZHRoOworICAgIGludCB2aWV3SGVp
Z2h0ID0gbV9zaXplLmhlaWdodDsKKworICAgIC8vIEVuZm9yY2UgdGhlIG1heGltdW0gYW5kIG1p
bmltdW0gc2Nyb2xsIHBvc2l0aW9ucyBhdCB0aGUgbmV3IHNjYWxlLgorICAgIEludFBvaW50IGNs
YW1wZWRPZmZzZXQgPSBvZmZzZXQ7CisgICAgY2xhbXBlZE9mZnNldC5jbGFtcE5lZ2F0aXZlVG9a
ZXJvKCk7CisgICAgY2xhbXBlZE9mZnNldCA9IGNsYW1wZWRPZmZzZXQuc2hydW5rVG8oSW50UG9p
bnQoZG9jV2lkdGhBdE5ld1NjYWxlIC0gdmlld1dpZHRoLCBkb2NIZWlnaHRBdE5ld1NjYWxlIC0g
dmlld0hlaWdodCkpOworICAgIHJldHVybiBjbGFtcGVkT2Zmc2V0OworfQorCit2b2lkIFdlYlZp
ZXdJbXBsOjpzZXRQYWdlU2NhbGVGYWN0b3JBbmRQcmVzZXJ2ZVNjcm9sbE9mZnNldChmbG9hdCBz
Y2FsZUZhY3RvcikKK3sKKyAgICAvLyBQaWNrIGEgc2NhbGUgZmFjdG9yIHRoYXQgaXMgd2l0aGlu
IHRoZSBleHBlY3RlZCBsaW1pdHMKKyAgICBzY2FsZUZhY3RvciA9IGNvbXB1dGVQYWdlU2NhbGVG
YWN0b3JXaXRoaW5MaW1pdHMoc2NhbGVGYWN0b3IpOworICAgIGlmIChzY2FsZUZhY3RvciA9PSBw
YWdlU2NhbGVGYWN0b3IoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgSW50UG9pbnQgc2Nyb2xs
T2Zmc2V0QXROZXdTY2FsZShtYWluRnJhbWUoKS0+c2Nyb2xsT2Zmc2V0KCkud2lkdGgsIG1haW5G
cmFtZSgpLT5zY3JvbGxPZmZzZXQoKS5oZWlnaHQpOworICAgIGZsb2F0IGRlbHRhU2NhbGUgPSBz
Y2FsZUZhY3RvciAvIHBhZ2VTY2FsZUZhY3RvcigpOworICAgIHNjcm9sbE9mZnNldEF0TmV3U2Nh
bGUuc2NhbGUoZGVsdGFTY2FsZSwgZGVsdGFTY2FsZSk7CisKKyAgICBXZWJQb2ludCBjbGFtcGVk
T2Zmc2V0QXROZXdTY2FsZSA9IGNsYW1wT2Zmc2V0QXRTY2FsZShzY3JvbGxPZmZzZXRBdE5ld1Nj
YWxlLCBzY2FsZUZhY3Rvcik7CisgICAgc2V0UGFnZVNjYWxlRmFjdG9yKHNjYWxlRmFjdG9yLCBj
bGFtcGVkT2Zmc2V0QXROZXdTY2FsZSk7Cit9CisKIHZvaWQgV2ViVmlld0ltcGw6OnNldFBhZ2VT
Y2FsZUZhY3RvcihmbG9hdCBzY2FsZUZhY3RvciwgY29uc3QgV2ViUG9pbnQmIG9yaWdpbikKIHsK
ICAgICBpZiAoIXBhZ2UoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgaWYgKCFzY2FsZUZhY3Rv
cikKKyAgICAgICAgc2NhbGVGYWN0b3IgPSAxOworCisgICAgc2NhbGVGYWN0b3IgPSBjb21wdXRl
UGFnZVNjYWxlRmFjdG9yV2l0aGluTGltaXRzKHNjYWxlRmFjdG9yKTsKICAgICBwYWdlKCktPnNl
dFBhZ2VTY2FsZUZhY3RvcihzY2FsZUZhY3Rvciwgb3JpZ2luKTsKIH0KIApAQCAtMTkwNiw4ICsx
OTUxLDE3IEBAIHZvaWQgV2ViVmlld0ltcGw6OmVuYWJsZUZpeGVkTGF5b3V0TW9kZShib29sIGVu
YWJsZSkKIAogdm9pZCBXZWJWaWV3SW1wbDo6c2V0UGFnZVNjYWxlRmFjdG9yTGltaXRzKGZsb2F0
IG1pblBhZ2VTY2FsZSwgZmxvYXQgbWF4UGFnZVNjYWxlKQogeworICAgIG1fbWluaW11bVBhZ2VT
Y2FsZUZhY3RvciA9IG1pbihtYXgobWluUGFnZVNjYWxlLCBtaW5QYWdlU2NhbGVGYWN0b3IpLCBt
YXhQYWdlU2NhbGVGYWN0b3IpICogZGV2aWNlU2NhbGVGYWN0b3IoKTsKKyAgICBtX21heGltdW1Q
YWdlU2NhbGVGYWN0b3IgPSBtYXgobWluKG1heFBhZ2VTY2FsZSwgbWF4UGFnZVNjYWxlRmFjdG9y
KSwgbWluUGFnZVNjYWxlRmFjdG9yKSAqIGRldmljZVNjYWxlRmFjdG9yKCk7CisKKyAgICAvLyBM
aW1pdCBwYWdlIHNjYWxpbmcgZG93biB0byB0aGUgZG9jdW1lbnQgd2lkdGguCisgICAgaW50IHZp
ZXdXaWR0aCA9IG1fc2l6ZS53aWR0aDsKKyAgICBpbnQgdW5zY2FsZWRDb250ZW50V2lkdGggPSBt
YWluRnJhbWUoKS0+Y29udGVudHNTaXplKCkud2lkdGggLyBwYWdlU2NhbGVGYWN0b3IoKTsKKyAg
ICBtX21pbmltdW1QYWdlU2NhbGVGYWN0b3IgPSBtYXgobV9taW5pbXVtUGFnZVNjYWxlRmFjdG9y
LCAgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHZpZXdXaWR0aCkgLyB1bnNjYWxlZENvbnRlbnRXaWR0aCk7
CisgICAgQVNTRVJUKG1pblBhZ2VTY2FsZSA8PSBtYXhQYWdlU2NhbGUpOwogI2lmIFVTRShBQ0NF
TEVSQVRFRF9DT01QT1NJVElORykKLSAgICBtX2xheWVyVHJlZUhvc3QtPnNldFBhZ2VTY2FsZUZh
Y3RvckxpbWl0cyhtaW5QYWdlU2NhbGUsIG1heFBhZ2VTY2FsZSk7CisgICAgaWYgKG1fbGF5ZXJU
cmVlSG9zdCkKKyAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXRQYWdlU2NhbGVGYWN0b3JMaW1p
dHMobV9taW5pbXVtUGFnZVNjYWxlRmFjdG9yLCBtX21heGltdW1QYWdlU2NhbGVGYWN0b3IpOwog
I2VuZGlmCiB9CiAKQEAgLTI3MjQsNyArMjc3OCw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OmFwcGx5
U2Nyb2xsQW5kU2NhbGUoY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEsIGZsb2F0IHNjYWxlRmFj
CiAKICAgICBmbG9hdCBvbGRTY2FsZSA9IHBhZ2VTY2FsZUZhY3RvcigpOwogICAgIGlmICghb2xk
U2NhbGUpCi0gICAgICAgIG9sZFNjYWxlID0gMS4wZjsKKyAgICAgICAgb2xkU2NhbGUgPSAxOwog
CiAgICAgaWYgKCFzY2FsZUZhY3RvciB8fCBvbGRTY2FsZSA9PSBzY2FsZUZhY3RvcikKICAgICAg
ICAgbWFpbkZyYW1lSW1wbCgpLT5mcmFtZVZpZXcoKS0+c2Nyb2xsQnkoc2Nyb2xsRGVsdGEpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKaW5kZXggOWEwMTk5MjRhOWYw
ZDJkODc3Mjc3OGE1NjdlZDNjNjQwZjlhMDhkMy4uZTNjNGU3NGFlM2FjYmQzMzk0MzNhZDc5NGU4
ZDk2MzRlZWFjNDI5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
Vmlld0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5o
CkBAIC0xNTgsNiArMTU4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB6b29tTGltaXRz
Q2hhbmdlZChkb3VibGUgbWluaW11bVpvb21MZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZG91YmxlIG1heGltdW1ab29tTGV2ZWwpOwogICAgIHZpcnR1YWwgZmxvYXQg
cGFnZVNjYWxlRmFjdG9yKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHNldFBhZ2VTY2FsZUZh
Y3RvckFuZFByZXNlcnZlU2Nyb2xsT2Zmc2V0KGZsb2F0KTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0
UGFnZVNjYWxlRmFjdG9yKGZsb2F0IHNjYWxlRmFjdG9yLCBjb25zdCBXZWJQb2ludCYgb3JpZ2lu
KTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0UGFnZVNjYWxlRmFjdG9yTGltaXRzKGZsb2F0IG1pblBh
Z2VTY2FsZSwgZmxvYXQgbWF4UGFnZVNjYWxlKTsKICAgICB2aXJ0dWFsIGZsb2F0IGRldmljZVNj
YWxlRmFjdG9yKCkgY29uc3Q7CkBAIC00MTcsNiArNDE4LDkgQEAgcHVibGljOgogICAgIHZvaWQg
bG9zZUNvbXBvc2l0b3JDb250ZXh0KGludCBudW1UaW1lcyk7CiAKIHByaXZhdGU6CisgICAgZmxv
YXQgY29tcHV0ZVBhZ2VTY2FsZUZhY3RvcldpdGhpbkxpbWl0cyhmbG9hdCBzY2FsZSk7CisgICAg
V2ViUG9pbnQgY2xhbXBPZmZzZXRBdFNjYWxlKGNvbnN0IFdlYlBvaW50JiBvZmZzZXQsIGZsb2F0
IHNjYWxlKTsKKwogICAgIGZyaWVuZCBjbGFzcyBXZWJWaWV3OyAgLy8gU28gV2ViVmlldzo6Q3Jl
YXRlIGNhbiBjYWxsIG91ciBjb25zdHJ1Y3RvcgogICAgIGZyaWVuZCBjbGFzcyBXVEY6OlJlZkNv
dW50ZWQ8V2ViVmlld0ltcGw+OwogCkBAIC01MTMsNiArNTE3LDEwIEBAIHByaXZhdGU6CiAKICAg
ICBkb3VibGUgbV9tYXhpbXVtWm9vbUxldmVsOwogCisgICAgZmxvYXQgbV9taW5pbXVtUGFnZVNj
YWxlRmFjdG9yOworCisgICAgZmxvYXQgbV9tYXhpbXVtUGFnZVNjYWxlRmFjdG9yOworCiAgICAg
Ym9vbCBtX2NvbnRleHRNZW51QWxsb3dlZDsKIAogICAgIGJvb2wgbV9kb2luZ0RyYWdBbmREcm9w
Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114879</attachid>
            <date>2011-11-13 22:27:33 -0800</date>
            <delta_ts>2011-11-14 08:48:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72176-20111114012731.patch</filename>
            <type>text/plain</type>
            <size>17195</size>
            <attacher name="Fady Samuel">fsamuel</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwMDk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDZmMzY4MmJlMzBmYzE5NjY5MGFiOTc5ZWZiZDNlNDM1ZWQ4MzJiNTkuLmMxNmFhNDA2NjliMjY3
MmU2NzA1MjE2NTMxOGJlZTc1ZWE5NmE0Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjggQEAKKzIwMTEtMTEtMTMgIEZhZHkgU2FtdWVsICA8ZnNhbXVlbEBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBzZXRQYWdlU2NhbGVGYWN0b3IgYW5kIGFzc29j
aWF0ZWQgbWV0aG9kcyBzaG91bGQgdGFrZSBzY2FsaW5nIGxpbWl0cyBpbnRvIGFjY291bnQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyMTc2CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQSBjb3VwbGUgb2Yg
Y2hhbmdlczoKKworICAgICAgICAxLiBzZXRQYWdlU2NhbGVGYWN0b3JMaW1pdHMgbm93IGFmZmVj
dHMgdGhlIGJlaGF2aW9yIG9mIG90aGVyIHNjYWxpbmcgbWV0aG9kcworICAgICAgICAgICBpbmNs
dWRpbmcgc2V0UGFnZVNjYWxlRmFjdG9yLgorICAgICAgICAyLiBzZXRQYWdlU2NhbGVGYWN0b3JQ
cmVzZXJ2aW5nU2Nyb2xsT2Zmc2V0IGludHJvZHVjZWQgdGhhdCBzY2FsZXMgdGhlIHNjcm9sbCBv
ZmZzZXQgCisgICAgICAgICAgIGFsb25nIHdpdGggdGhlIHBhZ2UsIHByZXNlcnZpbmcgdGhlIHNj
cm9sbCBwb3NpdGlvbiB3aXRoaW4gdGhlIHBhZ2UgYm91bmRzLgorCisgICAgICAgICogcHVibGlj
L1dlYlZpZXcuaDoKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJWaWV3SW1wbDo6V2ViVmlld0ltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3
SW1wbDo6Y29tcHV0ZVBhZ2VTY2FsZUZhY3RvcldpdGhpbkxpbWl0cyk6CisgICAgICAgIChXZWJL
aXQ6OldlYlZpZXdJbXBsOjpjbGFtcE9mZnNldEF0U2NhbGUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJWaWV3SW1wbDo6c2V0UGFnZVNjYWxlRmFjdG9yUHJlc2VydmluZ1Njcm9sbE9mZnNldCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRQYWdlU2NhbGVGYWN0b3IpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2V0UGFnZVNjYWxlRmFjdG9yTGltaXRzKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmFwcGx5U2Nyb2xsQW5kU2NhbGUpOgorICAgICAgICAq
IHNyYy9XZWJWaWV3SW1wbC5oOgorCiAyMDExLTExLTEzICBLZW50IFRhbXVyYSAgPHRrZW50QGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1dIFJlbW92ZSBXZWJGaWxlQ2hvb3NlclBh
cmFtczo6YWNjZXB0VHlwZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYlZpZXcuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXcuaApp
bmRleCBmNTEwZjc4MmFhMTc1Y2M0Y2ViNjNiMTg1Y2U3NjEyNzhlY2ExZDBlLi40NTVlMzFmNDUw
ODg5ODhlMjFiOTM5Y2M5MjI1ODRhMzBkMTc2YTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViVmlldy5oCkBAIC02MSw2ICs2MSw4IEBAIHB1YmxpYzoKICAgICBXRUJLSVRfRVhQ
T1JUIHN0YXRpYyBjb25zdCBkb3VibGUgdGV4dFNpemVNdWx0aXBsaWVyUmF0aW87CiAgICAgV0VC
S0lUX0VYUE9SVCBzdGF0aWMgY29uc3QgZG91YmxlIG1pblRleHRTaXplTXVsdGlwbGllcjsKICAg
ICBXRUJLSVRfRVhQT1JUIHN0YXRpYyBjb25zdCBkb3VibGUgbWF4VGV4dFNpemVNdWx0aXBsaWVy
OworICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIGNvbnN0IGZsb2F0IG1pblBhZ2VTY2FsZUZhY3Rv
cjsKKyAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyBjb25zdCBmbG9hdCBtYXhQYWdlU2NhbGVGYWN0
b3I7CiAKICAgICAvLyBDb250cm9scyB0aGUgdGltZSB0aGF0IHVzZXIgc2NyaXB0cyBpbmplY3Rl
ZCBpbnRvIHRoZSBkb2N1bWVudCBydW4uCiAgICAgZW51bSBVc2VyU2NyaXB0SW5qZWN0QXQgewpA
QCAtMjA3LDIwICsyMDksMjQgQEAgcHVibGljOgogICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIGRv
dWJsZSB6b29tTGV2ZWxUb1pvb21GYWN0b3IoZG91YmxlIHpvb21MZXZlbCk7CiAgICAgV0VCS0lU
X0VYUE9SVCBzdGF0aWMgZG91YmxlIHpvb21GYWN0b3JUb1pvb21MZXZlbChkb3VibGUgZmFjdG9y
KTsKIAotICAgIC8vIFBhZ2VTY2FsZUZhY3RvciB3aWxsIGJlIGZvcmNlLWNsYW1wZWQgYmV0d2Vl
biBtaW5QYWdlU2NhbGUgYW5kIG1heFBhZ2VTY2FsZQotICAgIC8vIChhbmQgdGhlc2UgdmFsdWVz
IHdpbGwgcGVyc2lzdCB1bnRpbCBzZXRQYWdlU2NhbGVGYWN0b3JMaW1pdHMgaXMgY2FsbGVkCi0g
ICAgLy8gYWdhaW4pLgotICAgIHZpcnR1YWwgdm9pZCBzZXRQYWdlU2NhbGVGYWN0b3JMaW1pdHMo
ZmxvYXQgbWluUGFnZVNjYWxlLCBmbG9hdCBtYXhQYWdlU2NhbGUpID0gMDsKLQogICAgIC8vIEdl
dHMgdGhlIHNjYWxlIGZhY3RvciBvZiB0aGUgcGFnZSwgd2hlcmUgMS4wIGlzIHRoZSBub3JtYWwg
c2l6ZSwgPiAxLjAKICAgICAvLyBpcyBzY2FsZWQgdXAsIDwgMS4wIGlzIHNjYWxlZCBkb3duLgog
ICAgIHZpcnR1YWwgZmxvYXQgcGFnZVNjYWxlRmFjdG9yKCkgY29uc3QgPSAwOwogCisgICAgLy8g
U2NhbGVzIHRoZSBwYWdlIGFuZCB0aGUgc2Nyb2xsIG9mZnNldCBieSBhIGZhY3RvciBvZiBzY2Fs
ZUZhY3Rvciwgd2hpbGUKKyAgICAvLyBlbnN1cmluZyB0aGF0IHRoZSBuZXcgc2Nyb2xsIHBvc2l0
aW9uIGRvZXMgbm90IGdvIGJleW9uZCB0aGUgZWRnZSBvZiB0aGUgcGFnZS4KKyAgICB2aXJ0dWFs
IHZvaWQgc2V0UGFnZVNjYWxlRmFjdG9yUHJlc2VydmluZ1Njcm9sbE9mZnNldChmbG9hdCBzY2Fs
ZUZhY3RvcikgPSAwOworCiAgICAgLy8gU2NhbGVzIGEgcGFnZSBieSBhIGZhY3RvciBvZiBzY2Fs
ZUZhY3RvciBhbmQgdGhlbiBzZXRzIGEgc2Nyb2xsIHBvc2l0aW9uIHRvICh4LCB5KS4KICAgICAv
LyBzZXRQYWdlU2NhbGVGYWN0b3IoKSBtYWduaWZpZXMgYW5kIHNocmlua3MgYSBwYWdlIHdpdGhv
dXQgYWZmZWN0aW5nIGxheW91dC4KICAgICAvLyBPbiB0aGUgb3RoZXIgaGFuZCwgem9vbWluZyBh
ZmZlY3RzIGxheW91dCBvZiB0aGUgcGFnZS4KICAgICB2aXJ0dWFsIHZvaWQgc2V0UGFnZVNjYWxl
RmFjdG9yKGZsb2F0IHNjYWxlRmFjdG9yLCBjb25zdCBXZWJQb2ludCYgb3JpZ2luKSA9IDA7CiAK
KyAgICAvLyBQYWdlU2NhbGVGYWN0b3Igd2lsbCBiZSBmb3JjZS1jbGFtcGVkIGJldHdlZW4gbWlu
UGFnZVNjYWxlIGFuZCBtYXhQYWdlU2NhbGUKKyAgICAvLyAoYW5kIHRoZXNlIHZhbHVlcyB3aWxs
IHBlcnNpc3QgdW50aWwgc2V0UGFnZVNjYWxlRmFjdG9yTGltaXRzIGlzIGNhbGxlZAorICAgIC8v
IGFnYWluKS4KKyAgICB2aXJ0dWFsIHZvaWQgc2V0UGFnZVNjYWxlRmFjdG9yTGltaXRzKGZsb2F0
IG1pblBhZ2VTY2FsZSwgZmxvYXQgbWF4UGFnZVNjYWxlKSA9IDA7CisKICAgICAvLyBUaGUgcmF0
aW8gb2YgdGhlIGN1cnJlbnQgZGV2aWNlJ3Mgc2NyZWVuIERQSSB0byB0aGUgdGFyZ2V0IGRldmlj
ZSdzIHNjcmVlbiBEUEkuCiAgICAgdmlydHVhbCBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcigpIGNv
bnN0ID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmll
d0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmlu
ZGV4IGQ0ZDQ5MzY1ZmNjMmQ3OTRlYWU4ZTRhYThhNjlhYzRjZWM2MTRmYTAuLjA3MjFmMGUyMjg3
NmQxZjJkODVjZjEzY2EzNTUyNWI1NzAzOGI5NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAgLTE5OSw2ICsxOTksOCBAQCBuYW1lc3BhY2UgV2ViS2l0
IHsKIGNvbnN0IGRvdWJsZSBXZWJWaWV3Ojp0ZXh0U2l6ZU11bHRpcGxpZXJSYXRpbyA9IDEuMjsK
IGNvbnN0IGRvdWJsZSBXZWJWaWV3OjptaW5UZXh0U2l6ZU11bHRpcGxpZXIgPSAwLjU7CiBjb25z
dCBkb3VibGUgV2ViVmlldzo6bWF4VGV4dFNpemVNdWx0aXBsaWVyID0gMy4wOworY29uc3QgZmxv
YXQgV2ViVmlldzo6bWluUGFnZVNjYWxlRmFjdG9yID0gMC4yNTsKK2NvbnN0IGZsb2F0IFdlYlZp
ZXc6Om1heFBhZ2VTY2FsZUZhY3RvciA9IDQuMDsKIAogCiAvLyBUaGUgZ3JvdXAgbmFtZSBpZGVu
dGlmaWVzIGEgbmFtZXNwYWNlIG9mIHBhZ2VzLiAgUGFnZSBncm91cCBpcyB1c2VkIG9uIE9TWApA
QCAtMzM4LDYgKzM0MCw4IEBAIFdlYlZpZXdJbXBsOjpXZWJWaWV3SW1wbChXZWJWaWV3Q2xpZW50
KiBjbGllbnQpCiAgICAgLCBtX3pvb21MZXZlbCgwKQogICAgICwgbV9taW5pbXVtWm9vbUxldmVs
KHpvb21GYWN0b3JUb1pvb21MZXZlbChtaW5UZXh0U2l6ZU11bHRpcGxpZXIpKQogICAgICwgbV9t
YXhpbXVtWm9vbUxldmVsKHpvb21GYWN0b3JUb1pvb21MZXZlbChtYXhUZXh0U2l6ZU11bHRpcGxp
ZXIpKQorICAgICwgbV9taW5pbXVtUGFnZVNjYWxlRmFjdG9yKG1pblBhZ2VTY2FsZUZhY3RvcikK
KyAgICAsIG1fbWF4aW11bVBhZ2VTY2FsZUZhY3RvcihtYXhQYWdlU2NhbGVGYWN0b3IpCiAgICAg
LCBtX2NvbnRleHRNZW51QWxsb3dlZChmYWxzZSkKICAgICAsIG1fZG9pbmdEcmFnQW5kRHJvcChm
YWxzZSkKICAgICAsIG1faWdub3JlSW5wdXRFdmVudHMoZmFsc2UpCkBAIC0xODUyLDExICsxODU2
LDUyIEBAIGZsb2F0IFdlYlZpZXdJbXBsOjpwYWdlU2NhbGVGYWN0b3IoKSBjb25zdAogICAgIHJl
dHVybiBwYWdlKCktPnBhZ2VTY2FsZUZhY3RvcigpOwogfQogCitmbG9hdCBXZWJWaWV3SW1wbDo6
Y29tcHV0ZVBhZ2VTY2FsZUZhY3RvcldpdGhpbkxpbWl0cyhmbG9hdCBzY2FsZUZhY3RvcikKK3sK
KyAgICByZXR1cm4gbWluKG1heChzY2FsZUZhY3RvciwgbV9taW5pbXVtUGFnZVNjYWxlRmFjdG9y
KSwgbV9tYXhpbXVtUGFnZVNjYWxlRmFjdG9yKTsKK30KKworV2ViUG9pbnQgV2ViVmlld0ltcGw6
OmNsYW1wT2Zmc2V0QXRTY2FsZShjb25zdCBXZWJQb2ludCYgb2Zmc2V0LCBmbG9hdCBzY2FsZSkK
K3sKKyAgICAvLyBUaGlzIGlzIHRoZSBzY2FsZWQgY29udGVudCBzaXplLiBXZSBuZWVkIHRvIGNv
bnZlcnQgaXQgdG8gdGhlIG5ldyBzY2FsZSBmYWN0b3IuCisgICAgV2ViU2l6ZSBjb250ZW50U2l6
ZSA9IG1haW5GcmFtZSgpLT5jb250ZW50c1NpemUoKTsKKyAgICBmbG9hdCBkZWx0YVNjYWxlID0g
c2NhbGUgLyBwYWdlU2NhbGVGYWN0b3IoKTsKKyAgICBpbnQgZG9jV2lkdGhBdE5ld1NjYWxlID0g
Y29udGVudFNpemUud2lkdGggKiBkZWx0YVNjYWxlOworICAgIGludCBkb2NIZWlnaHRBdE5ld1Nj
YWxlID0gY29udGVudFNpemUuaGVpZ2h0ICogZGVsdGFTY2FsZTsKKyAgICBpbnQgdmlld1dpZHRo
ID0gbV9zaXplLndpZHRoOworICAgIGludCB2aWV3SGVpZ2h0ID0gbV9zaXplLmhlaWdodDsKKwor
ICAgIC8vIEVuZm9yY2UgdGhlIG1heGltdW0gYW5kIG1pbmltdW0gc2Nyb2xsIHBvc2l0aW9ucyBh
dCB0aGUgbmV3IHNjYWxlLgorICAgIEludFBvaW50IGNsYW1wZWRPZmZzZXQgPSBvZmZzZXQ7Cisg
ICAgY2xhbXBlZE9mZnNldC5jbGFtcE5lZ2F0aXZlVG9aZXJvKCk7CisgICAgY2xhbXBlZE9mZnNl
dCA9IGNsYW1wZWRPZmZzZXQuc2hydW5rVG8oSW50UG9pbnQoZG9jV2lkdGhBdE5ld1NjYWxlIC0g
dmlld1dpZHRoLCBkb2NIZWlnaHRBdE5ld1NjYWxlIC0gdmlld0hlaWdodCkpOworICAgIHJldHVy
biBjbGFtcGVkT2Zmc2V0OworfQorCit2b2lkIFdlYlZpZXdJbXBsOjpzZXRQYWdlU2NhbGVGYWN0
b3JQcmVzZXJ2aW5nU2Nyb2xsT2Zmc2V0KGZsb2F0IHNjYWxlRmFjdG9yKQoreworICAgIC8vIFBp
Y2sgYSBzY2FsZSBmYWN0b3IgdGhhdCBpcyB3aXRoaW4gdGhlIGV4cGVjdGVkIGxpbWl0cworICAg
IHNjYWxlRmFjdG9yID0gY29tcHV0ZVBhZ2VTY2FsZUZhY3RvcldpdGhpbkxpbWl0cyhzY2FsZUZh
Y3Rvcik7CisgICAgaWYgKHNjYWxlRmFjdG9yID09IHBhZ2VTY2FsZUZhY3RvcigpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBJbnRQb2ludCBzY3JvbGxPZmZzZXRBdE5ld1NjYWxlKG1haW5GcmFt
ZSgpLT5zY3JvbGxPZmZzZXQoKS53aWR0aCwgbWFpbkZyYW1lKCktPnNjcm9sbE9mZnNldCgpLmhl
aWdodCk7CisgICAgZmxvYXQgZGVsdGFTY2FsZSA9IHNjYWxlRmFjdG9yIC8gcGFnZVNjYWxlRmFj
dG9yKCk7CisgICAgc2Nyb2xsT2Zmc2V0QXROZXdTY2FsZS5zY2FsZShkZWx0YVNjYWxlLCBkZWx0
YVNjYWxlKTsKKworICAgIFdlYlBvaW50IGNsYW1wZWRPZmZzZXRBdE5ld1NjYWxlID0gY2xhbXBP
ZmZzZXRBdFNjYWxlKHNjcm9sbE9mZnNldEF0TmV3U2NhbGUsIHNjYWxlRmFjdG9yKTsKKyAgICBz
ZXRQYWdlU2NhbGVGYWN0b3Ioc2NhbGVGYWN0b3IsIGNsYW1wZWRPZmZzZXRBdE5ld1NjYWxlKTsK
K30KKwogdm9pZCBXZWJWaWV3SW1wbDo6c2V0UGFnZVNjYWxlRmFjdG9yKGZsb2F0IHNjYWxlRmFj
dG9yLCBjb25zdCBXZWJQb2ludCYgb3JpZ2luKQogewogICAgIGlmICghcGFnZSgpKQogICAgICAg
ICByZXR1cm47CiAKKyAgICBpZiAoIXNjYWxlRmFjdG9yKQorICAgICAgICBzY2FsZUZhY3RvciA9
IDE7CisKKyAgICBzY2FsZUZhY3RvciA9IGNvbXB1dGVQYWdlU2NhbGVGYWN0b3JXaXRoaW5MaW1p
dHMoc2NhbGVGYWN0b3IpOwogICAgIHBhZ2UoKS0+c2V0UGFnZVNjYWxlRmFjdG9yKHNjYWxlRmFj
dG9yLCBvcmlnaW4pOwogfQogCkBAIC0xOTEwLDggKzE5NTUsMTcgQEAgdm9pZCBXZWJWaWV3SW1w
bDo6ZW5hYmxlRml4ZWRMYXlvdXRNb2RlKGJvb2wgZW5hYmxlKQogCiB2b2lkIFdlYlZpZXdJbXBs
OjpzZXRQYWdlU2NhbGVGYWN0b3JMaW1pdHMoZmxvYXQgbWluUGFnZVNjYWxlLCBmbG9hdCBtYXhQ
YWdlU2NhbGUpCiB7CisgICAgbV9taW5pbXVtUGFnZVNjYWxlRmFjdG9yID0gbWluKG1heChtaW5Q
YWdlU2NhbGUsIG1pblBhZ2VTY2FsZUZhY3RvciksIG1heFBhZ2VTY2FsZUZhY3RvcikgKiBkZXZp
Y2VTY2FsZUZhY3RvcigpOworICAgIG1fbWF4aW11bVBhZ2VTY2FsZUZhY3RvciA9IG1heChtaW4o
bWF4UGFnZVNjYWxlLCBtYXhQYWdlU2NhbGVGYWN0b3IpLCBtaW5QYWdlU2NhbGVGYWN0b3IpICog
ZGV2aWNlU2NhbGVGYWN0b3IoKTsKKworICAgIC8vIExpbWl0IHBhZ2Ugc2NhbGluZyBkb3duIHRv
IHRoZSBkb2N1bWVudCB3aWR0aC4KKyAgICBpbnQgdmlld1dpZHRoID0gbV9zaXplLndpZHRoOwor
ICAgIGludCB1bnNjYWxlZENvbnRlbnRXaWR0aCA9IG1haW5GcmFtZSgpLT5jb250ZW50c1NpemUo
KS53aWR0aCAvIHBhZ2VTY2FsZUZhY3RvcigpOworICAgIG1fbWluaW11bVBhZ2VTY2FsZUZhY3Rv
ciA9IG1heChtX21pbmltdW1QYWdlU2NhbGVGYWN0b3IsICBzdGF0aWNfY2FzdDxmbG9hdD4odmll
d1dpZHRoKSAvIHVuc2NhbGVkQ29udGVudFdpZHRoKTsKKyAgICBBU1NFUlQobWluUGFnZVNjYWxl
IDw9IG1heFBhZ2VTY2FsZSk7CiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotICAg
IG1fbGF5ZXJUcmVlSG9zdC0+c2V0UGFnZVNjYWxlRmFjdG9yTGltaXRzKG1pblBhZ2VTY2FsZSwg
bWF4UGFnZVNjYWxlKTsKKyAgICBpZiAobV9sYXllclRyZWVIb3N0KQorICAgICAgICBtX2xheWVy
VHJlZUhvc3QtPnNldFBhZ2VTY2FsZUZhY3RvckxpbWl0cyhtX21pbmltdW1QYWdlU2NhbGVGYWN0
b3IsIG1fbWF4aW11bVBhZ2VTY2FsZUZhY3Rvcik7CiAjZW5kaWYKIH0KIApAQCAtMjcyOCw3ICsy
NzgyLDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6YXBwbHlTY3JvbGxBbmRTY2FsZShjb25zdCBJbnRT
aXplJiBzY3JvbGxEZWx0YSwgZmxvYXQgc2NhbGVGYWMKIAogICAgIGZsb2F0IG9sZFNjYWxlID0g
cGFnZVNjYWxlRmFjdG9yKCk7CiAgICAgaWYgKCFvbGRTY2FsZSkKLSAgICAgICAgb2xkU2NhbGUg
PSAxLjBmOworICAgICAgICBvbGRTY2FsZSA9IDE7CiAKICAgICBpZiAoIXNjYWxlRmFjdG9yIHx8
IG9sZFNjYWxlID09IHNjYWxlRmFjdG9yKQogICAgICAgICBtYWluRnJhbWVJbXBsKCktPmZyYW1l
VmlldygpLT5zY3JvbGxCeShzY3JvbGxEZWx0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViVmlld0ltcGwuaAppbmRleCA5YTAxOTkyNGE5ZjBkMmQ4NzcyNzc4YTU2N2VkM2M2NDBmOWEw
OGQzLi5hYmYxMjU0ZWI4MTk0MTA3MjkzMjAxODQ1NGUxMDJhOGIyODQyNTcwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKQEAgLTE1OCw2ICsxNTgsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIHpvb21MaW1pdHNDaGFuZ2VkKGRvdWJsZSBtaW5pbXVtWm9v
bUxldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgbWF4aW11
bVpvb21MZXZlbCk7CiAgICAgdmlydHVhbCBmbG9hdCBwYWdlU2NhbGVGYWN0b3IoKSBjb25zdDsK
KyAgICB2aXJ0dWFsIHZvaWQgc2V0UGFnZVNjYWxlRmFjdG9yUHJlc2VydmluZ1Njcm9sbE9mZnNl
dChmbG9hdCBzY2FsZUZhY3Rvcik7CiAgICAgdmlydHVhbCB2b2lkIHNldFBhZ2VTY2FsZUZhY3Rv
cihmbG9hdCBzY2FsZUZhY3RvciwgY29uc3QgV2ViUG9pbnQmIG9yaWdpbik7CiAgICAgdmlydHVh
bCB2b2lkIHNldFBhZ2VTY2FsZUZhY3RvckxpbWl0cyhmbG9hdCBtaW5QYWdlU2NhbGUsIGZsb2F0
IG1heFBhZ2VTY2FsZSk7CiAgICAgdmlydHVhbCBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcigpIGNv
bnN0OwpAQCAtNDE3LDYgKzQxOCw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGxvc2VDb21wb3NpdG9y
Q29udGV4dChpbnQgbnVtVGltZXMpOwogCiBwcml2YXRlOgorICAgIGZsb2F0IGNvbXB1dGVQYWdl
U2NhbGVGYWN0b3JXaXRoaW5MaW1pdHMoZmxvYXQgc2NhbGUpOworICAgIFdlYlBvaW50IGNsYW1w
T2Zmc2V0QXRTY2FsZShjb25zdCBXZWJQb2ludCYgb2Zmc2V0LCBmbG9hdCBzY2FsZSk7CisKICAg
ICBmcmllbmQgY2xhc3MgV2ViVmlldzsgIC8vIFNvIFdlYlZpZXc6OkNyZWF0ZSBjYW4gY2FsbCBv
dXIgY29uc3RydWN0b3IKICAgICBmcmllbmQgY2xhc3MgV1RGOjpSZWZDb3VudGVkPFdlYlZpZXdJ
bXBsPjsKIApAQCAtNTEzLDYgKzUxNywxMCBAQCBwcml2YXRlOgogCiAgICAgZG91YmxlIG1fbWF4
aW11bVpvb21MZXZlbDsKIAorICAgIGZsb2F0IG1fbWluaW11bVBhZ2VTY2FsZUZhY3RvcjsKKwor
ICAgIGZsb2F0IG1fbWF4aW11bVBhZ2VTY2FsZUZhY3RvcjsKKwogICAgIGJvb2wgbV9jb250ZXh0
TWVudUFsbG93ZWQ7CiAKICAgICBib29sIG1fZG9pbmdEcmFnQW5kRHJvcDsKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA5OTAw
M2NhN2E5M2ExMmY5OWM2YjE5ODI1ODM5MzA3MzBkZDY4ZDkzLi5hYjFjZWE5NDQ0OGExZGMzMDAx
NjljNTFiMjc4MTU3Y2JiN2Q5ZmMyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
KysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTEtMTEtMTMg
IEZhZHkgU2FtdWVsICA8ZnNhbXVlbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVt
XSBzZXRQYWdlU2NhbGVGYWN0b3IgYW5kIGFzc29jaWF0ZWQgbWV0aG9kcyBzaG91bGQgdGFrZSBz
Y2FsaW5nIGxpbWl0cyBpbnRvIGFjY291bnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTcyMTc2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgUmViYXNlbGluZWQgc29tZSB0ZXN0cyB0aGF0IGJyb2tlIGJlY2F1
c2Ugd2Ugbm93IGNsYW1wIHBhZ2VTY2FsZUZhY3RvciB0byAwLjI1ICh0aGVzZSB0ZXN0IGF0IDAu
MikuCisKKyAgICAgICAgU2luY2UgdGhpcyBpcyBhIENocm9taXVtIG9ubHkgY2hhbmdlLCB0aGUg
bmV3IGJhc2VsaW5lcyBhcmUgb25seSBmb3IgQ2hyb21pdW0uCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9jaHJvbWl1bS1saW51eC9mYXN0L3JlcGFpbnQvc2NhbGUtcGFnZS1zaHJpbmstZXhwZWN0ZWQu
cG5nOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtLWxpbnV4L2Zhc3QvcmVwYWludC9zY2Fs
ZS1wYWdlLXNocmluay1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2No
cm9taXVtL2Zhc3QvcmVwYWludC9iYWNrZ3JvdW5kLXNjYWxpbmctZXhwZWN0ZWQucG5nOiBDb3Bp
ZWQgZnJvbSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1saW51eC9mYXN0L3JlcGFpbnQv
c2NhbGUtcGFnZS1zaHJpbmstZXhwZWN0ZWQucG5nLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9t
aXVtL2Zhc3QvcmVwYWludC9iYWNrZ3JvdW5kLXNjYWxpbmctZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KwogMjAxMS0xMS0xMyAgSnVsaWVuIENoYWZmcmFpeCAgPGpjaGFmZnJhaXhAd2Via2l0Lm9yZz4K
IAogICAgICAgICBSRUdSRVNTSU9OKDk5ODQ5KTogTlVMTC1kZXJlZiBpbiB1cGRhdGVMYXN0TWVk
aWFMaW5lIHdoZW4gcGFyc2luZyBzb21lIG1lZGlhLXF1ZXJpZXMKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLWxpbnV4L2Zhc3QvcmVwYWludC9zY2FsZS1wYWdlLXNo
cmluay1leHBlY3RlZC5wbmcgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1saW51eC9m
YXN0L3JlcGFpbnQvc2NhbGUtcGFnZS1zaHJpbmstZXhwZWN0ZWQucG5nCmluZGV4IGNiMDZhMzZi
NTRkYWZkMjI1NzYxMDY1NmFkOTZkZjg3N2MxMTY5ZWIuLmU4YWY0MjU2ZDAzMDA3OGUxNjdkMjM3
ODAxY2Q0YWM1YzRiOTJjMzQgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCA0MTQ2Cnpj
bWVJMFlmekZ8N3t9aTx5Ty1ePlM8IX5oSGU9Sk07MVVVJW1vM3hRRjBnSHBpSFcrSm08U2RNRDJp
O2s0ej1jMwp6VzkjTSFJJVBZb0cpaWhqTnItN2xuIzg2PD03bXJVJHJLUzMoNzNwN3BabUhXYEU8
XmxJcD4rQHtMY1VVJm9rJVIKeiZ6S197KkZufCswSSlJY3JeQ01oZlR0ZS1jJHs3MTBnaTBfY0l6
SW4qXyMpMEhaTHZuZD5TZDJNaDRPfDVOSzNyCnpkVD1ALUckVk5iejdTKzY7KFlxQXNpfi10dmB8
REVAYHQ5eDdsOG9he1hGalEhUEVJJSF7YFlUN3cwSi1GR0xMZwp6ZSktKSk8b0RPVCVDRUYtZW8/
eUtpPyVsKjBZI3FANm5sIWptRXc7clVJOUtjb3F0QHR2T2ViSWJnYmVreyg0eVoKej4wdS1kNXV8
dmtZKCpuQkd7RjZxSWZ0RyEjWFEhMz16RjRNejB9SFkremE3aDBzdyZPTCRSJmAwTHAla14/PV9A
CnpNYVNvYjBXNmptTWwqbHQ1ZVNBMl5jXiNGJF4wcVgpNnNwZFMmN2w1QVpMKXk7NEdofmc+MzUo
YXAlc1JEOW5NfQp6JC1iZGhxVFQ2b2pFJl5UQXx4PDdIYChCO3pgfDt7Pj5FUUMkNjgwajYxaCtL
aTBIX3tPbXZmI1Nkd0B8TyViY0kKelNnc3tLaVh6TXU7ZUNyMiRDQ3tZMHczI1BZS3BDIT1Mc3l3
aS13RlRKb0tmejApZitSOD1TVDxyTEs/bDc0MXV0CnpIOHdSdmF9bXdPQE84VDhHJiFhJlFmOykh
ejtSLTJLfUktSypeUjlZUFlAMilDXkJSazhDQk9pZlE/ZFRpNlIlcgp6TzYwejUkSUZ8JGlPTzFP
dkdjUTV0RyY3VjIhQExgWTBLY3kxTjUwQ2VjaUl0clU3QC0tYH01IWdwfGoyalglJkIKekhIQWow
MjtWcWpmV2N0ejMtcjlrR3QofSt1YGJCfHpSOytxa0J9YCkqMFJmNFIjeFVMWDB1cSVOXkltKlVm
QjdsCnpzQVdla2YxbSl3bHc2P3VeRyM7bit9SmJIVXtqS1daVTlMX0g+XkBkKmhXbmdhLXZleSst
eCR4ZzJNdj9gfDNKJgp6Ri1Be1A7JThnaCtnKSFIYjlobH5TOGReSlh4Xyh2VSUkcGsyfGB0dGwj
b05DaU5KUUR8Q21yfTlpRSg9Kys3aDQKenU5d1kobVJsXkEwWHthJEcxc01HKl47RCRGWj0pVz1+
SGotUVUxVmBnfj9GVTtgc3dsaWs4ZU4hUF9eaTY1JFAoCnpTM15IcW07bkkrY0J8bjRXQTxGQFB8
LX1ZeWZAa2o+T2V7YC1yK3pZbj5hZFR5VGttZEMlciNBV09kMkdndF97UAp6TlQmQU1vPXhBT0ZQ
Z00zd2h7OGo3ZmxsJjA1RDd8MmdLJGJ4dFBLcU5Xa09VQD1lLTEoVlNsWW9NRUxPRmlMZVQKenVE
bX11b2dgKF8hbDRYX3kwTmpiQyo1b2lZZUZGOUxZYSQ2Q1g9bnlGZGppeCVuRkFsdy0rc2UyZ2Ri
SCNeZG94CnpOa1FgcjJFKkdvdlNfT1JaJXdoQ09lRkZKMHgkcVU3fmRvb2kpRC0ydmVeMUo2IUVK
cGlBMiZoNCNGLTBNSytYTwp6PkBka21CK198VGNYdX1ebmpsR0E4YEpWaHJCPHNBMjdeYz5MSilB
T18rJURzeXRBfldqKyV0U0hRV2NJYzUlRkEKeiVQI3d1Z2BWP0QpbF47eDNUNU1WJStQZig5UFdn
RldpczAtOFpsNVA2cFZsNnZBPHdvZjVfVDkhZEBLYl5yVFpLCnpFfVhgeHZQMHcobXFPcDJ4dnY2
cUBATFRMeSlSfkdYWTwweU5DPTRDdXs2SThiYEgmJDlXfFMmXj4xI298MHlqawp6KSMtRmcoWTQz
QGpaZiFhbzZZOXpYSkNkcjkjNWZBI01ZbUwodmM3YVJLU2deSn53JkdXQ1hMemE0ZkZxWGwkX1oK
eiopaXp0OD8xJkE2YzRrZnZadTROXkNDSkJQNz5qKGdDWFRVSzBZOXA+Pj95WUhFbHUyanRBdVNh
LXZiZ15YZ040CnolJnJMTExsN1RzS2VSJT5aU1NfJG58SiVGKWxEPDBqfF8tOzthZWBkM0IxbE1N
RD94RUxMWDNmdHp8NyM5SW1xRwp6VVF0akRkP1grVHRgVnJSKmkxPDR0fTBhM2c7bzwpTHJyUzBO
e3EqZV5tRGAtSTI9QHBsbU9xU1NMKH1BQDZpez4KekkhPDlEXzd8b2wlej9OZ208eVEmaDFLJlBE
elIwU3FxJUU8NHc+fnhpcHJIfW1wNDI9dXteO30yUmVkWUNWJTRyCnp7SnU2Ml8kfk9kN3FIcD8w
UlZLYV5afGFuLVFmWU8qPlY7RFFvbmZDQHN0KHJOcDF2UnN+fkcmWTlZaDgwdk1+KAp6WmdGZUtl
VTAycztgVHxtUGsheF8/a0NrPFJrI2JRfEZ5UHN0PT9oR0ZIdyZsUmZDQFpLd0ojd2FNUGliRUJe
dCoKQzNtNHUxCgpsaXRlcmFsIDQwNjEKemNtZUhLfDVNVXU5UkZ5WXVLYyNIRlBhKih5SXJvKyNE
UGpBJTM1RHNPSiFTSVdnd0poKm5yVVJKMGRJUklJbENWCnpiN2BnTj9Zdn4yVXZRQ3Zpa2VaOW1x
S1Bycmh3IVpDVyhsb0REcXtgeylfRjc9YT1XWF91Y2I7VWVEe3hKQD1HLQp6bWxXQF9IRT01Z0t8
VXdHSXI7K3haUTJWIz9xQCU3MmJHO1djN31qeWZBK0RuKj1aVCtYO2Z3bzlnMiMkNnBjYjUKelFC
amRkKUl+SFpJdSZeI0g1REN8OSpIPl5idWxfMyVLdTRqMj9ZNXVQOD5iX1Z9NlpjQjhCbCZ5ODRN
JF4/TFB9CnpGTTItUkAlZ29ZZ2x1Zn12b3pkT15NMzNkbz5xQmhASylLRTlgKU97cl8hJGIpYjk8
Kl87Y2Nya0hfWXB5JCt2Pwp6XzsmQl9EdGo8KCNGU010Rm9eQmxPdTNya25XI0t4dT9rcW1nJVl3
QTgzcDVjTFFyLUNlOG1IVDkyMiZ2KjVtY1YKemF3VnI8THMoYmYqRFBhQlRPfXZjQz9IdiU0LTk4
fjZ1b3FxP3ZqZ35PSW9TSFZDWkdQKCFAOSR7cEBKOTgjRT1OCnpETCk4JDt7dj5JIWVYdCVAJGx9
Q3VUUyN2YiNZZmBVZyt2TDR6USk4cWhvWSpSTTZ8TnR7TnVKdj05c0M/byE1LQp6Tig0ekZaZzA8
Qm4oN20mMyNwTlR2OEhGK2craWZEUTNvJFM/aktIa0UySnAmZGl9fT1DNTF4YT9US2xaTk5qNzwK
ekpPLVc0SFY+Z2VwSlcwZHJyNVVETXBmbi0pdjspXz0rVUZBKUJXWVFae01EdXBQIXdiTU4jQjVJ
PSM4TW5ORnZ4CnojOTMqVU1IVDJEOFg4KCVVQ3B2QXJYKGo5RUR3WXJofmZ3b2luJTs5cHNRc3FU
MzBeUTY8ZzxUQWJSb18tdWB1agp6Pnpta0syb1RvQ15SQ2U4X3Y2QHdQS089TVAhbVpjNypBSEFl
QUw/NyU1Z2YlJWdkP0NtYyshd1psX35JI0x5SHcKeileJUt8SGMhSndxdFRZPHteVyQ7QFYtaT1R
WntYUmMjMXphSHdWTSF3e35gUmlwNlZCeSUwQEpPfmxVWmA5KVAxCnpxaTIwP2FCeHRsaH0kclRH
JGU4NjFyfUBMQTswIXFhYE82dVB5dEJHR3JWaClOUShZYF5+Y0w5Z21YI2loZUR5TQp6NU0mYU9O
SzgmMTJTQGshX3VEcnRSYUk0citTc25Qd2w8MlFSLTFWY2clV21sVEJtdXF4Y3NINXYxUzYzJHBs
cEoKenRWaTQtOEAxVEZXJGZBfVBoV1ZQTEBkcz90KGteMTkoUXpMYTUjPXAtTXV7fFh8Z2tpbnY9
NksqfSt0e3F5K2hMCno4TkskXldgZkEwcTtDWHx2JiY8UWxVO2Q/aHlXVW09Rk9EPyghJmxNTmEt
JWpWWUF0bkZKSCNPNm1vZy1gZlFhewp6bn5BJnQzUDZuOSsrMVc0bns4TCtZNC00QlgwdXItQW1j
S3BwN2ZQP3FOQWhkYlVLYEVOamZsN1QzVHZSdmx4K3EKejJnMVVkZlEka0c4UE4xYGVuaTdAK0hF
ISl4VGp9SHBBNjJDMnVGdjhoNlpZNFMqdX47O1lzXzlsMWRxak1hIy1FCnpKdVVTRD9XTmtLTW5U
VSMrbT80JHRKTT07Nmo5Y30yUCFZbXpOe2RlSzdJTlV1b29RSF5aMFJPdSZAOEZVMDJpKwp6JT1x
WkA4fnlAUGNPbWVNUypIKipIe1U7JHFYK2c0TnZnUitUTEI5S2ZsJEhzXkMkdVE2YWcxaTFUbnoy
VkJmMEIKeiVBe0lzZmxodU9BT2QoS3J2OUpgXnZ2ckFDJXdHOVdIPE04Rj9EaFA5cEk+NkNxal9a
QDZAenU0V1k1bUQkWTJ1Cno3JlZOSkh7T0dKZHJWQUJqRXMhTGFCKFJySEheV184KE8mNjZyQUFH
en58P00xRGs8aWZBMG5hVDRgK0xsSCgrKAp6QkFxQFR0RzxpRVU7PUVCMXl+cVFCcGN+ITBDcyF4
PThnUFV2aUpEN3teR2JJSmBzPDF6SGR2SSFgRjVSTVpITnUKenxETEFDT2NwJC1OSnJxeiViPUhp
e25TMVVldkVnI0tCWCh5S3ZlQlUyOWBIfiFGTVdGPHV3QFElIV55PmphNVN2CnpIZzluPFIzSmda
Yykoe1lRMC08fTlEMmY1JGt2fSZFfU8+SFpjTXsoSTw/OyRYSyskI0ZVTnApbikmaEZVZUZZSgp6
aF9sVGRkYlc4Tl5peyVuSGBuNVNMO34kbk0xYnZ6I3pAKypRK2I2VSZmVE9+bzQjSns0bE5QVDs2
Wl99emAkRzUKenhWR34lbSRXV195Unoqe2Zoel5CNnU0NjBPMkwwTTFxJlJ2bWN+dW8hI1FRNDtK
KiU/SUZAdkA8P0hqO3t7ZT96CkI3Y35GPwoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL2Nocm9taXVtLWxpbnV4L2Zhc3QvcmVwYWludC9zY2FsZS1wYWdlLXNocmluay1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1saW51eC9mYXN0L3JlcGFpbnQv
c2NhbGUtcGFnZS1zaHJpbmstZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQxZDRkMzM3YWZmOWNm
NzdlN2I1ZTY1OWZhNDQ4ZDUyYTUyNGJiMTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9jaHJvbWl1bS1saW51eC9mYXN0L3JlcGFpbnQvc2NhbGUtcGFnZS1zaHJpbmst
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOSBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAw
CisgIFJlbmRlclZpZXcgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCitsYXllciBhdCAoMCwwKSBzaXpl
IDgwMHg2MDAKKyAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgODAweDYwMAorICAg
IFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDU4NAorICAgICAgUmVuZGVyQmxv
Y2sgKGFub255bW91cykgYXQgKDAsMCkgc2l6ZSA3ODR4MjAKKyAgICAgICAgUmVuZGVyVGV4dCB7
I3RleHR9IGF0ICgwLDApIHNpemUgNjg2eDE5CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkg
d2lkdGggNjg2OiAiVGhpcyB0ZXN0IG11c3QgYmUgcnVuIGluIER1bXBSZW5kZXJUcmVlIGFzIGEg
cGl4ZWwgdGVzdC4gVGhlcmUgc2hvdWxkIG5vdCBiZSB2aXN1YWwgYXJpdGZhY3RzIGFmdGVyIHNj
YWxpbmcgdGhlIHBhZ2UuIgorICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMjApIHNpemUg
NTAweDUwMCBbYmdjb2xvcj0jMDA4MDAwXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0vZmFzdC9yZXBhaW50L2JhY2tncm91bmQtc2NhbGluZy1leHBlY3RlZC5wbmcg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L3JlcGFpbnQvYmFja2dyb3VuZC1z
Y2FsaW5nLWV4cGVjdGVkLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMTBmMjg3NjYxYjViOTljMTQ0ZDRiNmQw
MTJiZmJkNjI1YzUwYzcwCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAyODUxCnpjbWVBU0BOPyhv
bEh5YHVWQnEhaWEweX55VXsrdllWMmE+aTAqWik9aF5obEElQFdzJGxIYG9rPG19P29UIXNgPQp6
KDxEPFAzcmg8RjFBfUF9bFQtcn1sakxNZUxsWk5AR3xNRVQ2dk1xWEVSNzVkVHc2VXw5NzhKUnl1
RVJkXk1IVz4KenYhaXZkYHJQPGc1ZTc0NmEoIyl9YSglbWtgVElIWjcjTlAqRU41cTZ4Wns/PCRa
JiozaktSVFlscmI2emdERUJDCnpvSW1yRG13X1N0PDdtUGhPXytselZVQ3VScXQoU3xvaklCZE1z
b3I2YXpXaTNFM1RFbHcjUTVZd3Q1Km5VSHgzdgpJSVZDZyEwUXdZM2l2UiFzCgpsaXRlcmFsIDAK
SGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9m
YXN0L3JlcGFpbnQvYmFja2dyb3VuZC1zY2FsaW5nLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvcmVwYWludC9iYWNrZ3JvdW5kLXNjYWxpbmctZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjAwYWE2MDMzYTUzMWRlZWU3ODIzOGUzM2NlMTY0ZGQ4MGI0NGM4
MzYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0
L3JlcGFpbnQvYmFja2dyb3VuZC1zY2FsaW5nLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDYgQEAK
K2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJWaWV3IGF0ICgwLDApIHNpemUg
ODAweDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlckJsb2NrIHtIVE1M
fSBhdCAoMCwwKSBzaXplIDgwMHg2MDAgW2JnY29sb3I9IzAwODAwMF0KKyAgICBSZW5kZXJCb2R5
IHtCT0RZfSBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0
ICgwLDApIHNpemUgODAweDEwMCBbYmdjb2xvcj0jMDA4MDAwXQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114955</attachid>
            <date>2011-11-14 08:48:24 -0800</date>
            <delta_ts>2011-11-14 14:47:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72176-20111114114822.patch</filename>
            <type>text/plain</type>
            <size>17157</size>
            <attacher name="Fady Samuel">fsamuel</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwMTQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDQ2MDUyNDYzMWZlZGQ0YTMyNGQyOGMzNWEwNDY0Y2UzYWRhYWQ1N2EuLjFlZDM0N2E4OTQzODhj
NDcxZDVjMmZkMzRhNjMyZmIwNWRhNTY3OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjkgQEAKKzIwMTEtMTEtMTQgIEZhZHkgU2FtdWVsICA8ZnNhbXVlbEBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBzZXRQYWdlU2NhbGVGYWN0b3IgYW5kIGFzc29j
aWF0ZWQgbWV0aG9kcyBzaG91bGQgdGFrZSBzY2FsaW5nIGxpbWl0cyBpbnRvIGFjY291bnQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyMTc2CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgCisgICAgICAgIEEgY291cGxlIG9m
IGNoYW5nZXM6CisgCisgICAgICAgIDEuIHNldFBhZ2VTY2FsZUZhY3RvckxpbWl0cyBub3cgYWZm
ZWN0cyB0aGUgYmVoYXZpb3Igb2Ygb3RoZXIgc2NhbGluZyBtZXRob2RzCisgICAgICAgICAgIGlu
Y2x1ZGluZyBzZXRQYWdlU2NhbGVGYWN0b3IuCisgICAgICAgIDIuIHNldFBhZ2VTY2FsZUZhY3Rv
clByZXNlcnZpbmdTY3JvbGxPZmZzZXQgaW50cm9kdWNlZCB0aGF0IHNjYWxlcyB0aGUgc2Nyb2xs
IG9mZnNldCAKKyAgICAgICAgICAgYWxvbmcgd2l0aCB0aGUgcGFnZSwgcHJlc2VydmluZyB0aGUg
c2Nyb2xsIHBvc2l0aW9uIHdpdGhpbiB0aGUgcGFnZSBib3VuZHMuCisgCisKKyAgICAgICAgKiBw
dWJsaWMvV2ViVmlldy5oOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlZpZXdJbXBsOjpXZWJWaWV3SW1wbCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlZpZXdJbXBsOjpjb21wdXRlUGFnZVNjYWxlRmFjdG9yV2l0aGluTGltaXRzKToKKyAgICAgICAg
KFdlYktpdDo6V2ViVmlld0ltcGw6OmNsYW1wT2Zmc2V0QXRTY2FsZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlZpZXdJbXBsOjpzZXRQYWdlU2NhbGVGYWN0b3JQcmVzZXJ2aW5nU2Nyb2xsT2Zmc2V0
KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNldFBhZ2VTY2FsZUZhY3Rvcik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRQYWdlU2NhbGVGYWN0b3JMaW1pdHMpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6YXBwbHlTY3JvbGxBbmRTY2FsZSk6CisgICAg
ICAgICogc3JjL1dlYlZpZXdJbXBsLmg6CisKIDIwMTEtMTEtMTQgIElhaW4gTWVycmljayAgPGh1
c2t5QGdvb2dsZS5jb20+CiAKICAgICAgICAgW2Nocm9taXVtXSBGaXggaW5jb3JyZWN0IHVzYWdl
IG9mIEFTU0VSVCBpbiBDQ0xheWVyVHJlZUhvc3RUZXN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJWaWV3LmgKaW5kZXggZjUxMGY3ODJhYTE3NWNjNGNlYjYzYjE4NWNlNzYxMjc4ZWNh
MWQwZS4uMWUxODBlOTExYWY4ZDRjNWExM2UxNDUzY2ZiMjVhODA0N2MwOWJhMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlldy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXcuaApAQCAtNjEsNiArNjEsOCBAQCBwdWJsaWM6
CiAgICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgY29uc3QgZG91YmxlIHRleHRTaXplTXVsdGlwbGll
clJhdGlvOwogICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIGNvbnN0IGRvdWJsZSBtaW5UZXh0U2l6
ZU11bHRpcGxpZXI7CiAgICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgY29uc3QgZG91YmxlIG1heFRl
eHRTaXplTXVsdGlwbGllcjsKKyAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyBjb25zdCBmbG9hdCBt
aW5QYWdlU2NhbGVGYWN0b3I7CisgICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgY29uc3QgZmxvYXQg
bWF4UGFnZVNjYWxlRmFjdG9yOwogCiAgICAgLy8gQ29udHJvbHMgdGhlIHRpbWUgdGhhdCB1c2Vy
IHNjcmlwdHMgaW5qZWN0ZWQgaW50byB0aGUgZG9jdW1lbnQgcnVuLgogICAgIGVudW0gVXNlclNj
cmlwdEluamVjdEF0IHsKQEAgLTIwNywyMCArMjA5LDI0IEBAIHB1YmxpYzoKICAgICBXRUJLSVRf
RVhQT1JUIHN0YXRpYyBkb3VibGUgem9vbUxldmVsVG9ab29tRmFjdG9yKGRvdWJsZSB6b29tTGV2
ZWwpOwogICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIGRvdWJsZSB6b29tRmFjdG9yVG9ab29tTGV2
ZWwoZG91YmxlIGZhY3Rvcik7CiAKLSAgICAvLyBQYWdlU2NhbGVGYWN0b3Igd2lsbCBiZSBmb3Jj
ZS1jbGFtcGVkIGJldHdlZW4gbWluUGFnZVNjYWxlIGFuZCBtYXhQYWdlU2NhbGUKLSAgICAvLyAo
YW5kIHRoZXNlIHZhbHVlcyB3aWxsIHBlcnNpc3QgdW50aWwgc2V0UGFnZVNjYWxlRmFjdG9yTGlt
aXRzIGlzIGNhbGxlZAotICAgIC8vIGFnYWluKS4KLSAgICB2aXJ0dWFsIHZvaWQgc2V0UGFnZVNj
YWxlRmFjdG9yTGltaXRzKGZsb2F0IG1pblBhZ2VTY2FsZSwgZmxvYXQgbWF4UGFnZVNjYWxlKSA9
IDA7Ci0KICAgICAvLyBHZXRzIHRoZSBzY2FsZSBmYWN0b3Igb2YgdGhlIHBhZ2UsIHdoZXJlIDEu
MCBpcyB0aGUgbm9ybWFsIHNpemUsID4gMS4wCiAgICAgLy8gaXMgc2NhbGVkIHVwLCA8IDEuMCBp
cyBzY2FsZWQgZG93bi4KICAgICB2aXJ0dWFsIGZsb2F0IHBhZ2VTY2FsZUZhY3RvcigpIGNvbnN0
ID0gMDsKIAorICAgIC8vIFNjYWxlcyB0aGUgcGFnZSBhbmQgdGhlIHNjcm9sbCBvZmZzZXQgYnkg
YSBnaXZlbiBmYWN0b3IsIHdoaWxlIGVuc3VyaW5nCisgICAgLy8gdGhhdCB0aGUgbmV3IHNjcm9s
bCBwb3NpdGlvbiBkb2VzIG5vdCBnbyBiZXlvbmQgdGhlIGVkZ2Ugb2YgdGhlIHBhZ2UuCisgICAg
dmlydHVhbCB2b2lkIHNldFBhZ2VTY2FsZUZhY3RvclByZXNlcnZpbmdTY3JvbGxPZmZzZXQoZmxv
YXQpID0gMDsKKwogICAgIC8vIFNjYWxlcyBhIHBhZ2UgYnkgYSBmYWN0b3Igb2Ygc2NhbGVGYWN0
b3IgYW5kIHRoZW4gc2V0cyBhIHNjcm9sbCBwb3NpdGlvbiB0byAoeCwgeSkuCiAgICAgLy8gc2V0
UGFnZVNjYWxlRmFjdG9yKCkgbWFnbmlmaWVzIGFuZCBzaHJpbmtzIGEgcGFnZSB3aXRob3V0IGFm
ZmVjdGluZyBsYXlvdXQuCiAgICAgLy8gT24gdGhlIG90aGVyIGhhbmQsIHpvb21pbmcgYWZmZWN0
cyBsYXlvdXQgb2YgdGhlIHBhZ2UuCiAgICAgdmlydHVhbCB2b2lkIHNldFBhZ2VTY2FsZUZhY3Rv
cihmbG9hdCBzY2FsZUZhY3RvciwgY29uc3QgV2ViUG9pbnQmIG9yaWdpbikgPSAwOwogCisgICAg
Ly8gUGFnZVNjYWxlRmFjdG9yIHdpbGwgYmUgZm9yY2UtY2xhbXBlZCBiZXR3ZWVuIG1pblBhZ2VT
Y2FsZSBhbmQgbWF4UGFnZVNjYWxlCisgICAgLy8gKGFuZCB0aGVzZSB2YWx1ZXMgd2lsbCBwZXJz
aXN0IHVudGlsIHNldFBhZ2VTY2FsZUZhY3RvckxpbWl0cyBpcyBjYWxsZWQKKyAgICAvLyBhZ2Fp
bikuCisgICAgdmlydHVhbCB2b2lkIHNldFBhZ2VTY2FsZUZhY3RvckxpbWl0cyhmbG9hdCBtaW5Q
YWdlU2NhbGUsIGZsb2F0IG1heFBhZ2VTY2FsZSkgPSAwOworCiAgICAgLy8gVGhlIHJhdGlvIG9m
IHRoZSBjdXJyZW50IGRldmljZSdzIHNjcmVlbiBEUEkgdG8gdGhlIHRhcmdldCBkZXZpY2UncyBz
Y3JlZW4gRFBJLgogICAgIHZpcnR1YWwgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IoKSBjb25zdCA9
IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBs
LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAppbmRleCA4
ZWQ3N2U5MjYxZTM5ZThjNzk0MjVkZWY1ZmRmMzRhZWFjMjgzMmRkLi40YzQwNzNlMjE1OGNkZWEw
MjljMjNlYWE5ZGU0Y2IwNDRjM2E2ZTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViVmlld0ltcGwuY3BwCkBAIC0xOTksNiArMTk5LDggQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBj
b25zdCBkb3VibGUgV2ViVmlldzo6dGV4dFNpemVNdWx0aXBsaWVyUmF0aW8gPSAxLjI7CiBjb25z
dCBkb3VibGUgV2ViVmlldzo6bWluVGV4dFNpemVNdWx0aXBsaWVyID0gMC41OwogY29uc3QgZG91
YmxlIFdlYlZpZXc6Om1heFRleHRTaXplTXVsdGlwbGllciA9IDMuMDsKK2NvbnN0IGZsb2F0IFdl
YlZpZXc6Om1pblBhZ2VTY2FsZUZhY3RvciA9IDAuMjU7Citjb25zdCBmbG9hdCBXZWJWaWV3Ojpt
YXhQYWdlU2NhbGVGYWN0b3IgPSA0LjA7CiAKIAogLy8gVGhlIGdyb3VwIG5hbWUgaWRlbnRpZmll
cyBhIG5hbWVzcGFjZSBvZiBwYWdlcy4gIFBhZ2UgZ3JvdXAgaXMgdXNlZCBvbiBPU1gKQEAgLTMz
OCw2ICszNDAsOCBAQCBXZWJWaWV3SW1wbDo6V2ViVmlld0ltcGwoV2ViVmlld0NsaWVudCogY2xp
ZW50KQogICAgICwgbV96b29tTGV2ZWwoMCkKICAgICAsIG1fbWluaW11bVpvb21MZXZlbCh6b29t
RmFjdG9yVG9ab29tTGV2ZWwobWluVGV4dFNpemVNdWx0aXBsaWVyKSkKICAgICAsIG1fbWF4aW11
bVpvb21MZXZlbCh6b29tRmFjdG9yVG9ab29tTGV2ZWwobWF4VGV4dFNpemVNdWx0aXBsaWVyKSkK
KyAgICAsIG1fbWluaW11bVBhZ2VTY2FsZUZhY3RvcihtaW5QYWdlU2NhbGVGYWN0b3IpCisgICAg
LCBtX21heGltdW1QYWdlU2NhbGVGYWN0b3IobWF4UGFnZVNjYWxlRmFjdG9yKQogICAgICwgbV9j
b250ZXh0TWVudUFsbG93ZWQoZmFsc2UpCiAgICAgLCBtX2RvaW5nRHJhZ0FuZERyb3AoZmFsc2Up
CiAgICAgLCBtX2lnbm9yZUlucHV0RXZlbnRzKGZhbHNlKQpAQCAtMTg1MiwxMSArMTg1Niw1MiBA
QCBmbG9hdCBXZWJWaWV3SW1wbDo6cGFnZVNjYWxlRmFjdG9yKCkgY29uc3QKICAgICByZXR1cm4g
cGFnZSgpLT5wYWdlU2NhbGVGYWN0b3IoKTsKIH0KIAorZmxvYXQgV2ViVmlld0ltcGw6OmNvbXB1
dGVQYWdlU2NhbGVGYWN0b3JXaXRoaW5MaW1pdHMoZmxvYXQgc2NhbGVGYWN0b3IpCit7CisgICAg
cmV0dXJuIG1pbihtYXgoc2NhbGVGYWN0b3IsIG1fbWluaW11bVBhZ2VTY2FsZUZhY3RvciksIG1f
bWF4aW11bVBhZ2VTY2FsZUZhY3Rvcik7Cit9CisKK1dlYlBvaW50IFdlYlZpZXdJbXBsOjpjbGFt
cE9mZnNldEF0U2NhbGUoY29uc3QgV2ViUG9pbnQmIG9mZnNldCwgZmxvYXQgc2NhbGUpCit7Cisg
ICAgLy8gVGhpcyBpcyB0aGUgc2NhbGVkIGNvbnRlbnQgc2l6ZS4gV2UgbmVlZCB0byBjb252ZXJ0
IGl0IHRvIHRoZSBuZXcgc2NhbGUgZmFjdG9yLgorICAgIFdlYlNpemUgY29udGVudFNpemUgPSBt
YWluRnJhbWUoKS0+Y29udGVudHNTaXplKCk7CisgICAgZmxvYXQgZGVsdGFTY2FsZSA9IHNjYWxl
IC8gcGFnZVNjYWxlRmFjdG9yKCk7CisgICAgaW50IGRvY1dpZHRoQXROZXdTY2FsZSA9IGNvbnRl
bnRTaXplLndpZHRoICogZGVsdGFTY2FsZTsKKyAgICBpbnQgZG9jSGVpZ2h0QXROZXdTY2FsZSA9
IGNvbnRlbnRTaXplLmhlaWdodCAqIGRlbHRhU2NhbGU7CisgICAgaW50IHZpZXdXaWR0aCA9IG1f
c2l6ZS53aWR0aDsKKyAgICBpbnQgdmlld0hlaWdodCA9IG1fc2l6ZS5oZWlnaHQ7CisKKyAgICAv
LyBFbmZvcmNlIHRoZSBtYXhpbXVtIGFuZCBtaW5pbXVtIHNjcm9sbCBwb3NpdGlvbnMgYXQgdGhl
IG5ldyBzY2FsZS4KKyAgICBJbnRQb2ludCBjbGFtcGVkT2Zmc2V0ID0gb2Zmc2V0OworICAgIGNs
YW1wZWRPZmZzZXQuY2xhbXBOZWdhdGl2ZVRvWmVybygpOworICAgIGNsYW1wZWRPZmZzZXQgPSBj
bGFtcGVkT2Zmc2V0LnNocnVua1RvKEludFBvaW50KGRvY1dpZHRoQXROZXdTY2FsZSAtIHZpZXdX
aWR0aCwgZG9jSGVpZ2h0QXROZXdTY2FsZSAtIHZpZXdIZWlnaHQpKTsKKyAgICByZXR1cm4gY2xh
bXBlZE9mZnNldDsKK30KKwordm9pZCBXZWJWaWV3SW1wbDo6c2V0UGFnZVNjYWxlRmFjdG9yUHJl
c2VydmluZ1Njcm9sbE9mZnNldChmbG9hdCBzY2FsZUZhY3RvcikKK3sKKyAgICAvLyBQaWNrIGEg
c2NhbGUgZmFjdG9yIHRoYXQgaXMgd2l0aGluIHRoZSBleHBlY3RlZCBsaW1pdHMKKyAgICBzY2Fs
ZUZhY3RvciA9IGNvbXB1dGVQYWdlU2NhbGVGYWN0b3JXaXRoaW5MaW1pdHMoc2NhbGVGYWN0b3Ip
OworICAgIGlmIChzY2FsZUZhY3RvciA9PSBwYWdlU2NhbGVGYWN0b3IoKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgSW50UG9pbnQgc2Nyb2xsT2Zmc2V0QXROZXdTY2FsZShtYWluRnJhbWUoKS0+
c2Nyb2xsT2Zmc2V0KCkud2lkdGgsIG1haW5GcmFtZSgpLT5zY3JvbGxPZmZzZXQoKS5oZWlnaHQp
OworICAgIGZsb2F0IGRlbHRhU2NhbGUgPSBzY2FsZUZhY3RvciAvIHBhZ2VTY2FsZUZhY3Rvcigp
OworICAgIHNjcm9sbE9mZnNldEF0TmV3U2NhbGUuc2NhbGUoZGVsdGFTY2FsZSwgZGVsdGFTY2Fs
ZSk7CisKKyAgICBXZWJQb2ludCBjbGFtcGVkT2Zmc2V0QXROZXdTY2FsZSA9IGNsYW1wT2Zmc2V0
QXRTY2FsZShzY3JvbGxPZmZzZXRBdE5ld1NjYWxlLCBzY2FsZUZhY3Rvcik7CisgICAgc2V0UGFn
ZVNjYWxlRmFjdG9yKHNjYWxlRmFjdG9yLCBjbGFtcGVkT2Zmc2V0QXROZXdTY2FsZSk7Cit9CisK
IHZvaWQgV2ViVmlld0ltcGw6OnNldFBhZ2VTY2FsZUZhY3RvcihmbG9hdCBzY2FsZUZhY3Rvciwg
Y29uc3QgV2ViUG9pbnQmIG9yaWdpbikKIHsKICAgICBpZiAoIXBhZ2UoKSkKICAgICAgICAgcmV0
dXJuOwogCisgICAgaWYgKCFzY2FsZUZhY3RvcikKKyAgICAgICAgc2NhbGVGYWN0b3IgPSAxOwor
CisgICAgc2NhbGVGYWN0b3IgPSBjb21wdXRlUGFnZVNjYWxlRmFjdG9yV2l0aGluTGltaXRzKHNj
YWxlRmFjdG9yKTsKICAgICBwYWdlKCktPnNldFBhZ2VTY2FsZUZhY3RvcihzY2FsZUZhY3Rvciwg
b3JpZ2luKTsKIH0KIApAQCAtMTkxMCw4ICsxOTU1LDE3IEBAIHZvaWQgV2ViVmlld0ltcGw6OmVu
YWJsZUZpeGVkTGF5b3V0TW9kZShib29sIGVuYWJsZSkKIAogdm9pZCBXZWJWaWV3SW1wbDo6c2V0
UGFnZVNjYWxlRmFjdG9yTGltaXRzKGZsb2F0IG1pblBhZ2VTY2FsZSwgZmxvYXQgbWF4UGFnZVNj
YWxlKQogeworICAgIG1fbWluaW11bVBhZ2VTY2FsZUZhY3RvciA9IG1pbihtYXgobWluUGFnZVNj
YWxlLCBtaW5QYWdlU2NhbGVGYWN0b3IpLCBtYXhQYWdlU2NhbGVGYWN0b3IpICogZGV2aWNlU2Nh
bGVGYWN0b3IoKTsKKyAgICBtX21heGltdW1QYWdlU2NhbGVGYWN0b3IgPSBtYXgobWluKG1heFBh
Z2VTY2FsZSwgbWF4UGFnZVNjYWxlRmFjdG9yKSwgbWluUGFnZVNjYWxlRmFjdG9yKSAqIGRldmlj
ZVNjYWxlRmFjdG9yKCk7CisKKyAgICAvLyBMaW1pdCBwYWdlIHNjYWxpbmcgZG93biB0byB0aGUg
ZG9jdW1lbnQgd2lkdGguCisgICAgaW50IHZpZXdXaWR0aCA9IG1fc2l6ZS53aWR0aDsKKyAgICBp
bnQgdW5zY2FsZWRDb250ZW50V2lkdGggPSBtYWluRnJhbWUoKS0+Y29udGVudHNTaXplKCkud2lk
dGggLyBwYWdlU2NhbGVGYWN0b3IoKTsKKyAgICBtX21pbmltdW1QYWdlU2NhbGVGYWN0b3IgPSBt
YXgobV9taW5pbXVtUGFnZVNjYWxlRmFjdG9yLCAgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHZpZXdXaWR0
aCkgLyB1bnNjYWxlZENvbnRlbnRXaWR0aCk7CisgICAgQVNTRVJUKG1pblBhZ2VTY2FsZSA8PSBt
YXhQYWdlU2NhbGUpOwogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLSAgICBtX2xh
eWVyVHJlZUhvc3QtPnNldFBhZ2VTY2FsZUZhY3RvckxpbWl0cyhtaW5QYWdlU2NhbGUsIG1heFBh
Z2VTY2FsZSk7CisgICAgaWYgKG1fbGF5ZXJUcmVlSG9zdCkKKyAgICAgICAgbV9sYXllclRyZWVI
b3N0LT5zZXRQYWdlU2NhbGVGYWN0b3JMaW1pdHMobV9taW5pbXVtUGFnZVNjYWxlRmFjdG9yLCBt
X21heGltdW1QYWdlU2NhbGVGYWN0b3IpOwogI2VuZGlmCiB9CiAKQEAgLTI3MzAsNyArMjc4NCw3
IEBAIHZvaWQgV2ViVmlld0ltcGw6OmFwcGx5U2Nyb2xsQW5kU2NhbGUoY29uc3QgSW50U2l6ZSYg
c2Nyb2xsRGVsdGEsIGZsb2F0IHNjYWxlRmFjCiAKICAgICBmbG9hdCBvbGRTY2FsZSA9IHBhZ2VT
Y2FsZUZhY3RvcigpOwogICAgIGlmICghb2xkU2NhbGUpCi0gICAgICAgIG9sZFNjYWxlID0gMS4w
ZjsKKyAgICAgICAgb2xkU2NhbGUgPSAxOwogCiAgICAgaWYgKCFzY2FsZUZhY3RvciB8fCBvbGRT
Y2FsZSA9PSBzY2FsZUZhY3RvcikKICAgICAgICAgbWFpbkZyYW1lSW1wbCgpLT5mcmFtZVZpZXco
KS0+c2Nyb2xsQnkoc2Nyb2xsRGVsdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViVmlld0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZp
ZXdJbXBsLmgKaW5kZXggOWEwMTk5MjRhOWYwZDJkODc3Mjc3OGE1NjdlZDNjNjQwZjlhMDhkMy4u
MWVhNDk5ZTUzZmQxZjFjNGE0Y2ViN2VhMmY1Y2I2NTQ1MzIyZTEyYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCkBAIC0xNTgsNiArMTU4LDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCB6b29tTGltaXRzQ2hhbmdlZChkb3VibGUgbWluaW11bVpvb21MZXZl
bCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIG1heGltdW1ab29t
TGV2ZWwpOwogICAgIHZpcnR1YWwgZmxvYXQgcGFnZVNjYWxlRmFjdG9yKCkgY29uc3Q7CisgICAg
dmlydHVhbCB2b2lkIHNldFBhZ2VTY2FsZUZhY3RvclByZXNlcnZpbmdTY3JvbGxPZmZzZXQoZmxv
YXQpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRQYWdlU2NhbGVGYWN0b3IoZmxvYXQgc2NhbGVGYWN0
b3IsIGNvbnN0IFdlYlBvaW50JiBvcmlnaW4pOwogICAgIHZpcnR1YWwgdm9pZCBzZXRQYWdlU2Nh
bGVGYWN0b3JMaW1pdHMoZmxvYXQgbWluUGFnZVNjYWxlLCBmbG9hdCBtYXhQYWdlU2NhbGUpOwog
ICAgIHZpcnR1YWwgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IoKSBjb25zdDsKQEAgLTQxNyw2ICs0
MTgsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBsb3NlQ29tcG9zaXRvckNvbnRleHQoaW50IG51bVRp
bWVzKTsKIAogcHJpdmF0ZToKKyAgICBmbG9hdCBjb21wdXRlUGFnZVNjYWxlRmFjdG9yV2l0aGlu
TGltaXRzKGZsb2F0IHNjYWxlKTsKKyAgICBXZWJQb2ludCBjbGFtcE9mZnNldEF0U2NhbGUoY29u
c3QgV2ViUG9pbnQmIG9mZnNldCwgZmxvYXQgc2NhbGUpOworCiAgICAgZnJpZW5kIGNsYXNzIFdl
YlZpZXc7ICAvLyBTbyBXZWJWaWV3OjpDcmVhdGUgY2FuIGNhbGwgb3VyIGNvbnN0cnVjdG9yCiAg
ICAgZnJpZW5kIGNsYXNzIFdURjo6UmVmQ291bnRlZDxXZWJWaWV3SW1wbD47CiAKQEAgLTUxMyw2
ICs1MTcsMTAgQEAgcHJpdmF0ZToKIAogICAgIGRvdWJsZSBtX21heGltdW1ab29tTGV2ZWw7CiAK
KyAgICBmbG9hdCBtX21pbmltdW1QYWdlU2NhbGVGYWN0b3I7CisKKyAgICBmbG9hdCBtX21heGlt
dW1QYWdlU2NhbGVGYWN0b3I7CisKICAgICBib29sIG1fY29udGV4dE1lbnVBbGxvd2VkOwogCiAg
ICAgYm9vbCBtX2RvaW5nRHJhZ0FuZERyb3A7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNTdiYjA5M2UwZmZhNmUzNmMyYjA5
OGE3YmE0ZjA3YzBmMGQ4NzhjYi4uMWRlYmNmZTQ2NjRiNDkyMmFhYmFjYWMyYTk4NDE3ZTlhMDIw
YjU3ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDExLTExLTE0ICBGYWR5IFNhbXVlbCAgPGZz
YW11ZWxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0gc2V0UGFnZVNjYWxlRmFj
dG9yIGFuZCBhc3NvY2lhdGVkIG1ldGhvZHMgc2hvdWxkIHRha2Ugc2NhbGluZyBsaW1pdHMgaW50
byBhY2NvdW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03MjE3NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFJlYmFzZWxpbmVkIHNvbWUgdGVzdHMgdGhhdCBicm9rZSBiZWNhdXNlIHdlIG5vdyBjbGFtcCBw
YWdlU2NhbGVGYWN0b3IgdG8gMC4yNSAodGhlc2UgdGVzdCBhdCAwLjIpLgorCisgICAgICAgIFNp
bmNlIHRoaXMgaXMgYSBDaHJvbWl1bSBvbmx5IGNoYW5nZSwgdGhlIG5ldyBiYXNlbGluZXMgYXJl
IG9ubHkgZm9yIENocm9taXVtLgorCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0tbGludXgv
ZmFzdC9yZXBhaW50L3NjYWxlLXBhZ2Utc2hyaW5rLWV4cGVjdGVkLnBuZzoKKyAgICAgICAgKiBw
bGF0Zm9ybS9jaHJvbWl1bS1saW51eC9mYXN0L3JlcGFpbnQvc2NhbGUtcGFnZS1zaHJpbmstZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L3JlcGFp
bnQvYmFja2dyb3VuZC1zY2FsaW5nLWV4cGVjdGVkLnBuZzogQ29waWVkIGZyb20gTGF5b3V0VGVz
dHMvcGxhdGZvcm0vY2hyb21pdW0tbGludXgvZmFzdC9yZXBhaW50L3NjYWxlLXBhZ2Utc2hyaW5r
LWV4cGVjdGVkLnBuZy4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L3JlcGFpbnQv
YmFja2dyb3VuZC1zY2FsaW5nLWV4cGVjdGVkLnR4dDogQWRkZWQuCisKIDIwMTEtMTEtMTQgIFRv
bnkgR2VudGlsY29yZSAgPHRvbnlnQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1d
IHNlY3VyaXR5L2NyeXB0by1yYW5kb20tdmFsdWVzLXR5cGVzLmh0bWwgaXMgZmxha3kgb24gd2lu
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1saW51eC9mYXN0L3Jl
cGFpbnQvc2NhbGUtcGFnZS1zaHJpbmstZXhwZWN0ZWQucG5nIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0tbGludXgvZmFzdC9yZXBhaW50L3NjYWxlLXBhZ2Utc2hyaW5rLWV4cGVjdGVk
LnBuZwppbmRleCBjYjA2YTM2YjU0ZGFmZDIyNTc2MTA2NTZhZDk2ZGY4NzdjMTE2OWViLi5lOGFm
NDI1NmQwMzAwNzhlMTY3ZDIzNzgwMWNkNGFjNWM0YjkyYzM0IDEwMDY0NApHSVQgYmluYXJ5IHBh
dGNoCmxpdGVyYWwgNDE0Ngp6Y21lSTBZZnpGfDd7fWk8eU8tXj5TPCF+aEhlPUpNOzFVVSVtbzN4
UUYwZ0hwaUhXK0ptPFNkTUQyaTtrNHo9YzMKelc5I00hSSVQWW9HKWloak5yLTdsbiM4Njw9N21y
VSRyS1MzKDczcDdwWm1IV2BFPF5sSXA+K0B7TGNVVSZvayVSCnomektfeypGbnwrMEkpSWNyXkNN
aGZUdGUtYyR7NzEwZ2kwX2NJekluKl8jKTBIWkx2bmQ+U2QyTWg0T3w1Tkszcgp6ZFQ9QC1HJFZO
Yno3Uys2OyhZcUFzaX4tdHZgfERFQGB0OXg3bDhvYXtYRmpRIVBFSSUhe2BZVDd3MEotRkdMTGcK
emUpLSkpPG9ET1QlQ0VGLWVvP3lLaT8lbCowWSNxQDZubCFqbUV3O3JVSTlLY29xdEB0dk9lYkli
Z2Jla3soNHlaCno+MHUtZDV1fHZrWSgqbkJHe0Y2cUlmdEchI1hRITM9ekY0TXowfUhZK3phN2gw
c3cmT0wkUiZgMExwJWtePz1fQAp6TWFTb2IwVzZqbU1sKmx0NWVTQTJeY14jRiReMHFYKTZzcGRT
JjdsNUFaTCl5OzRHaH5nPjM1KGFwJXNSRDluTX0KeiQtYmRocVRUNm9qRSZeVEF8eDw3SGAoQjt6
YHw7ez4+RVFDJDY4MGo2MWgrS2kwSF97T212ZiNTZHdAfE8lYmNJCnpTZ3N7S2lYek11O2VDcjIk
Q0N7WTB3MyNQWUtwQyE9THN5d2ktd0ZUSm9LZnowKWYrUjg9U1Q8ckxLP2w3NDF1dAp6SDh3UnZh
fW13T0BPOFQ4RyYhYSZRZjspIXo7Ui0yS31JLUsqXlI5WVBZQDIpQ15CUms4Q0JPaWZRP2RUaTZS
JXIKek82MHo1JElGfCRpT08xT3ZHY1E1dEcmN1YyIUBMYFkwS2N5MU41MENlY2lJdHJVN0AtLWB9
NSFncHxqMmpYJSZCCnpISEFqMDI7VnFqZldjdHozLXI5a0d0KH0rdWBiQnx6UjsrcWtCfWApKjBS
ZjRSI3hVTFgwdXElTl5JbSpVZkI3bAp6c0FXZWtmMW0pd2x3Nj91XkcjO24rfUpiSFV7aktXWlU5
TF9IPl5AZCpoV25nYS12ZXkrLXgkeGcyTXY/YHwzSiYKekYtQXtQOyU4Z2grZykhSGI5aGx+Uzhk
XkpYeF8odlUlJHBrMnxgdHRsI29OQ2lOSlFEfENtcn05aUUoPSsrN2g0Cnp1OXdZKG1SbF5BMFh7
YSRHMXNNRypeO0QkRlo9KVc9fkhqLVFVMVZgZ34/RlU7YHN3bGlrOGVOIVBfXmk2NSRQKAp6UzNe
SHFtO25JK2NCfG40V0E8RkBQfC19WXlmQGtqPk9le2Atcit6WW4+YWRUeVRrbWRDJXIjQVdPZDJH
Z3Rfe1AKek5UJkFNbz14QU9GUGdNM3doezhqN2ZsbCYwNUQ3fDJnSyRieHRQS3FOV2tPVUA9ZS0x
KFZTbFlvTUVMT0ZpTGVUCnp1RG19dW9nYChfIWw0WF95ME5qYkMqNW9pWWVGRjlMWWEkNkNYPW55
RmRqaXglbkZBbHctK3NlMmdkYkgjXmRveAp6TmtRYHIyRSpHb3ZTX09SWiV3aENPZUZGSjB4JHFV
N35kb29pKUQtMnZlXjFKNiFFSnBpQTImaDQjRi0wTUsrWE8Kej5AZGttQitffFRjWHV9Xm5qbEdB
OGBKVmhyQjxzQTI3XmM+TEopQU9fKyVEc3l0QX5XaisldFNIUVdjSWM1JUZBCnolUCN3dWdgVj9E
KWxeO3gzVDVNViUrUGYoOVBXZ0ZXaXMwLThabDVQNnBWbDZ2QTx3b2Y1X1Q5IWRAS2JeclRaSwp6
RX1YYHh2UDB3KG1xT3AyeHZ2NnFAQExUTHkpUn5HWFk8MHlOQz00Q3V7Nkk4YmBIJiQ5V3xTJl4+
MSNvfDB5amsKeikjLUZnKFk0M0BqWmYhYW82WTl6WEpDZHI5IzVmQSNNWW1MKHZjN2FSS1NnXkp+
dyZHV0NYTHphNGZGcVhsJF9aCnoqKWl6dDg/MSZBNmM0a2Z2WnU0Tl5DQ0pCUDc+aihnQ1hUVUsw
WTlwPj4/eVlIRWx1Mmp0QXVTYS12YmdeWGdONAp6JSZyTExMbDdUc0tlUiU+WlNTXyRufEolRils
RDwwanxfLTs7YWVgZDNCMWxNTUQ/eEVMTFgzZnR6fDcjOUltcUcKelVRdGpEZD9YK1R0YFZyUipp
MTw0dH0wYTNnO288KUxyclMwTntxKmVebURgLUkyPUBwbG1PcVNTTCh9QUA2aXs+CnpJITw5RF83
fG9sJXo/TmdtPHlRJmgxSyZQRHpSMFNxcSVFPDR3Pn54aXBySH1tcDQyPXV7Xjt9MlJlZFlDViU0
cgp6e0p1NjJfJH5PZDdxSHA/MFJWS2FeWnxhbi1RZllPKj5WO0RRb25mQ0BzdChyTnAxdlJzfn5H
Jlk5WWg4MHZNfigKelpnRmVLZVUwMnM7YFR8bVBrIXhfP2tDazxSayNiUXxGeVBzdD0/aEdGSHcm
bFJmQ0BaS3dKI3dhTVBpYkVCXnQqCkMzbTR1MQoKbGl0ZXJhbCA0MDYxCnpjbWVIS3w1TVV1OVJG
eVl1S2MjSEZQYSooeUlybysjRFBqQSUzNURzT0ohU0lXZ3dKaCpuclVSSjBkSVJJSWxDVgp6Yjdg
Z04/WXZ+MlV2UUN2aWtlWjltcUtQcnJodyFaQ1cobG9ERHF7YHspX0Y3PWE9V1hfdWNiO1VlRHt4
SkA9Ry0Kem1sV0BfSEU9NWdLfFV3R0lyOyt4WlEyViM/cUAlNzJiRztXYzd9anlmQStEbio9WlQr
WDtmd285ZzIjJDZwY2I1CnpRQmpkZClJfkhaSXUmXiNINURDfDkqSD5eYnVsXzMlS3U0ajI/WTV1
UDg+Yl9WfTZaY0I4QmwmeTg0TSReP0xQfQp6Rk0yLVJAJWdvWWdsdWZ9dm96ZE9eTTMzZG8+cUJo
QEspS0U5YClPe3JfISRiKWI5PCpfO2NjcmtIX1lweSQrdj8Kel87JkJfRHRqPCgjRlNNdEZvXkJs
T3UzcmtuVyNLeHU/a3FtZyVZd0E4M3A1Y0xRci1DZThtSFQ5MjImdio1bWNWCnphd1ZyPExzKGJm
KkRQYUJUT312Y0M/SHYlNC05OH42dW9xcT92amd+T0lvU0hWQ1pHUCghQDkke3BASjk4I0U9Tgp6
REwpOCQ7e3Y+SSFlWHQlQCRsfUN1VFMjdmIjWWZgVWcrdkw0elEpOHFob1kqUk02fE50e051SnY9
OXNDP28hNS0Kek4oNHpGWmcwPEJuKDdtJjMjcE5UdjhIRitnK2lmRFEzbyRTP2pLSGtFMkpwJmRp
fX09QzUxeGE/VEtsWk5Oajc8CnpKTy1XNEhWPmdlcEpXMGRycjVVRE1wZm4tKXY7KV89K1VGQSlC
V1lRWntNRHVwUCF3Yk1OI0I1ST0jOE1uTkZ2eAp6IzkzKlVNSFQyRDhYOCglVUNwdkFyWChqOUVE
d1lyaH5md29pbiU7OXBzUXNxVDMwXlE2PGc8VEFiUm9fLXVgdWoKej56bWtLMm9Ub0NeUkNlOF92
NkB3UEtPPU1QIW1aYzcqQUhBZUFMPzclNWdmJSVnZD9DbWMrIXdabF9+SSNMeUh3CnopXiVLfEhj
IUp3cXRUWTx7XlckO0BWLWk9UVp7WFJjIzF6YUh3Vk0hd3t+YFJpcDZWQnklMEBKT35sVVpgOSlQ
MQp6cWkyMD9hQnh0bGh9JHJURyRlODYxcn1ATEE7MCFxYWBPNnVQeXRCR0dyVmgpTlEoWWBefmNM
OWdtWCNpaGVEeU0KejVNJmFPTks4JjEyU0BrIV91RHJ0UmFJNHIrU3NuUHdsPDJRUi0xVmNnJVdt
bFRCbXVxeGNzSDV2MVM2MyRwbHBKCnp0Vmk0LThAMVRGVyRmQX1QaFdWUExAZHM/dChrXjE5KFF6
TGE1Iz1wLU11e3xYfGdraW52PTZLKn0rdHtxeStoTAp6OE5LJF5XYGZBMHE7Q1h8diYmPFFsVTtk
P2h5V1VtPUZPRD8oISZsTU5hLSVqVllBdG5GSkgjTzZtb2ctYGZRYXsKem5+QSZ0M1A2bjkrKzFX
NG57OEwrWTQtNEJYMHVyLUFtY0twcDdmUD9xTkFoZGJVS2BFTmpmbDdUM1R2UnZseCtxCnoyZzFV
ZGZRJGtHOFBOMWBlbmk3QCtIRSEpeFRqfUhwQTYyQzJ1RnY4aDZaWTRTKnV+OztZc185bDFkcWpN
YSMtRQp6SnVVU0Q/V05rS01uVFUjK20/NCR0Sk09OzZqOWN9MlAhWW16TntkZUs3SU5VdW9vUUhe
WjBST3UmQDhGVTAyaSsKeiU9cVpAOH55QFBjT21lTVMqSCoqSHtVOyRxWCtnNE52Z1IrVExCOUtm
bCRIc15DJHVRNmFnMWkxVG56MlZCZjBCCnolQXtJc2ZsaHVPQU9kKEtydjlKYF52dnJBQyV3RzlX
SDxNOEY/RGhQOXBJPjZDcWpfWkA2QHp1NFdZNW1EJFkydQp6NyZWTkpIe09HSmRyVkFCakVzIUxh
QihSckhIXldfOChPJjY2ckFBR3p+fD9NMURrPGlmQTBuYVQ0YCtMbEgoKygKekJBcUBUdEc8aUVV
Oz1FQjF5fnFRQnBjfiEwQ3MheD04Z1BVdmlKRDd7XkdiSUpgczwxekhkdkkhYEY1Uk1aSE51Cnp8
RExBQ09jcCQtTkpycXolYj1IaXtuUzFVZXZFZyNLQlgoeUt2ZUJVMjlgSH4hRk1XRjx1d0BRJSFe
eT5qYTVTdgp6SGc5bjxSM0pnWmMpKHtZUTAtPH05RDJmNSRrdn0mRX1PPkhaY017KEk8PzskWEsr
JCNGVU5wKW4pJmhGVWVGWUoKemhfbFRkZGJXOE5eaXslbkhgbjVTTDt+JG5NMWJ2eiN6QCsqUSti
NlUmZlRPfm80I0p7NGxOUFQ7NlpffXpgJEc1Cnp4Vkd+JW0kV1dfeVJ6KntmaHpeQjZ1NDYwTzJM
ME0xcSZSdm1jfnVvISNRUTQ7SiolP0lGQHZAPD9Iajt7e2U/egpCN2N+Rj8KCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1saW51eC9mYXN0L3JlcGFpbnQvc2NhbGUt
cGFnZS1zaHJpbmstZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0t
bGludXgvZmFzdC9yZXBhaW50L3NjYWxlLXBhZ2Utc2hyaW5rLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5kMWQ0ZDMzN2FmZjljZjc3ZTdiNWU2NTlmYTQ0OGQ1MmE1MjRiYjE5Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbGludXgvZmFzdC9yZXBhaW50
L3NjYWxlLXBhZ2Utc2hyaW5rLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDkgQEAKK2xheWVyIGF0
ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJWaWV3IGF0ICgwLDApIHNpemUgODAweDYwMAor
bGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCww
KSBzaXplIDgwMHg2MDAKKyAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc4NHg1
ODQKKyAgICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICgwLDApIHNpemUgNzg0eDIwCisg
ICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDY4NngxOQorICAgICAgICAg
IHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDY4NjogIlRoaXMgdGVzdCBtdXN0IGJlIHJ1biBpbiBE
dW1wUmVuZGVyVHJlZSBhcyBhIHBpeGVsIHRlc3QuIFRoZXJlIHNob3VsZCBub3QgYmUgdmlzdWFs
IGFyaXRmYWN0cyBhZnRlciBzY2FsaW5nIHRoZSBwYWdlLiIKKyAgICAgIFJlbmRlckJsb2NrIHtE
SVZ9IGF0ICgwLDIwKSBzaXplIDUwMHg1MDAgW2JnY29sb3I9IzAwODAwMF0KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvcmVwYWludC9iYWNrZ3JvdW5kLXNj
YWxpbmctZXhwZWN0ZWQucG5nIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9y
ZXBhaW50L2JhY2tncm91bmQtc2NhbGluZy1leHBlY3RlZC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTEwZjI4
NzY2MWI1Yjk5YzE0NGQ0YjZkMDEyYmZiZDYyNWM1MGM3MApHSVQgYmluYXJ5IHBhdGNoCmxpdGVy
YWwgMjg1MQp6Y21lQVNATj8ob2xIeWB1VkJxIWlhMHl+eVV7K3ZZVjJhPmkwKlopPWheaGxBJUBX
cyRsSGBvazxtfT9vVCFzYD0Keig8RDxQM3JoPEYxQX1BfWxULXJ9bGpMTWVMbFpOQEd8TUVUNnZN
cVhFUjc1ZFR3NlV8OTc4SlJ5dUVSZF5NSFc+Cnp2IWl2ZGByUDxnNWU3NDZhKCMpfWEoJW1rYFRJ
SFo3I05QKkVONXE2eFp7PzwkWiYqM2pLUlRZbHJiNnpnREVCQwp6b0ltckRtd19TdDw3bVBoT18r
bHpWVUN1UnF0KFN8b2pJQmRNc29yNmF6V2kzRTNURWx3I1E1WXd0NSpuVUh4M3YKSUlWQ2chMFF3
WTNpdlIhcwoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vY2hyb21pdW0vZmFzdC9yZXBhaW50L2JhY2tncm91bmQtc2NhbGluZy1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L3JlcGFpbnQvYmFja2dy
b3VuZC1zY2FsaW5nLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMGFhNjAzM2E1MzFkZWVlNzgy
MzhlMzNjZTE2NGRkODBiNDRjODM2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0vZmFzdC9yZXBhaW50L2JhY2tncm91bmQtc2NhbGluZy1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSw2IEBACitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVy
VmlldyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAor
ICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4NjAwIFtiZ2NvbG9yPSMwMDgw
MDBdCisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgICAgICBS
ZW5kZXJCbG9jayB7RElWfSBhdCAoMCwwKSBzaXplIDgwMHgxMDAgW2JnY29sb3I9IzAwODAwMF0K
</data>

          </attachment>
      

    </bug>

</bugzilla>