<?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>77263</bug_id>
          
          <creation_ts>2012-01-27 16:44:05 -0800</creation_ts>
          <short_desc>PlatformScreenMac should not rely on NSWindow for important bits of data</short_desc>
          <delta_ts>2012-01-30 13:45:36 -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>Platform</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Beth Dakin">bdakin</reporter>
          <assigned_to name="Beth Dakin">bdakin</assigned_to>
          <cc>aroben</cc>
    
    <cc>bdakin</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>544506</commentid>
    <comment_count>0</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2012-01-27 16:44:05 -0800</bug_when>
    <thetext>PlatformScreenMac assumes it can reliably get an NSWindow from the platformWidget(), which is not true in WebKit2. It should be updated so that these functions work properly in WebKit2.

&lt;rdar://problem/10741654&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544529</commentid>
    <comment_count>1</comment_count>
      <attachid>124405</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2012-01-27 17:14:44 -0800</bug_when>
    <thetext>Created attachment 124405
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545227</commentid>
    <comment_count>2</comment_count>
      <attachid>124405</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-01-30 11:15:31 -0800</bug_when>
    <thetext>Comment on attachment 124405
Patch 

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

r=me

&gt; Source/WebCore/platform/PlatformScreen.h:59
&gt; +    FloatRect toUserSpace(const NSRect&amp;, NSWindow *destination, float deviceScaleFactor);
&gt; +    NSRect toDeviceSpace(const FloatRect&amp;, NSWindow *source, float deviceScaleFactor);

Follow-up bug: It looks like these functions will do the wrong thing in WebKit2 in the case of multiple screens where the window is not on the primary screen, since the NSWindow argument will be NULL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545249</commentid>
    <comment_count>3</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2012-01-30 11:48:53 -0800</bug_when>
    <thetext>Thanks! I will definitely file a follow-up bug for the remaining issue. Committed change with http://trac.webkit.org/changeset/106271</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545295</commentid>
    <comment_count>4</comment_count>
      <attachid>124405</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2012-01-30 12:17:22 -0800</bug_when>
    <thetext>Comment on attachment 124405
Patch 

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

&gt; Source/WebCore/platform/PlatformScreen.h:43
&gt; +    class FrameView;

It&apos;s a layering violation for anything in Source/WebCore/platform to know about FrameView. I&apos;m not sure what the best fix is though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545307</commentid>
    <comment_count>5</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2012-01-30 12:29:53 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 124405 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=124405&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/PlatformScreen.h:43
&gt; &gt; +    class FrameView;
&gt; 
&gt; It&apos;s a layering violation for anything in Source/WebCore/platform to know about FrameView. I&apos;m not sure what the best fix is though.


We could add a virtual function on Widget to return the deviceScaleFactor. It would always return 1 from Widget.h, but FrameViews could fetch the real deviceScaleFactor. That would totally fix the layering violation, but it&apos;s a shame that it&apos;s such a circuitous path.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545377</commentid>
    <comment_count>6</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2012-01-30 13:45:36 -0800</bug_when>
    <thetext>32-bit build fix: http://trac.webkit.org/changeset/106286</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124405</attachid>
            <date>2012-01-27 17:14:44 -0800</date>
            <delta_ts>2012-01-30 12:17:22 -0800</delta_ts>
            <desc>Patch </desc>
            <filename>for-review.txt</filename>
            <type>text/plain</type>
            <size>21359</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNjE2OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU0IEBACisyMDEyLTAxLTI3ICBCZXRoIERh
a2luICA8YmRha2luQGFwcGxlLmNvbT4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NzcyNjMKKyAgICAgICAgUGxhdGZvcm1TY3JlZW5NYWMgc2hvdWxk
IG5vdCByZWx5IG9uIE5TV2luZG93IGZvciBpbXBvcnRhbnQgYml0cyBvZiBkYXRhCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIG1haW4gcHJvYmxl
bSBpcyB0aGF0IHdlIGNhbm5vdCByZWx5IG9uIHRoZSBOU1dpbmRvdyBmb3IgaW5mb3JtYXRpb24g
YWJvdXQgCisgICAgICAgIHRoZSBkZXZpY2VTY2FsZUZhY3RvciBiZWNhdXNlIHdlIGNhbm5vdCBh
Y2Nlc3MgYW4gTlNXaW5kb3cgZnJvbSB3aXRoaW4gCisgICAgICAgIFdlYkNvcmUgZm9yIFdlYktp
dDIgd2luZG93cy4gSW5zdGVhZCwgd2UgY2FuIGZldGNoIGl0IGZyb20gCisgICAgICAgIFdlYkNv
cmU6OmRldmljZVNjYWxlRmFjdG9yKCksIGJ1dCB3ZSBuZWVkIGEgRnJhbWUgdG8gY2FsbCB0aGF0
LiBTbyAKKyAgICAgICAgc2NyZWVuQXZhaWxhYmxlUmVjdCBhbmQgc2NyZWVuUmVjdCBib3RoIG5v
dyB0YWtlIGEgRnJhbWVWaWV3KiBpbnN0ZWFkIG9mIGEgCisgICAgICAgIFdpZGdldCouIEFsbCBl
eGlzdGluZyBjYWxsIHNpdGVzIGFjdHVhbGx5IHNlbnQgYSBGcmFtZVZpZXcgaW4gYW55d2F5LCBz
byB0aGlzIAorICAgICAgICBpcyBub3QgYSBiaWcgY2hhbmdlLCBidXQgaXQgZG9lcyByZXF1aXJl
IHRvdWNoaW5nIGEgbG90IG9mIHBsYXRmb3Jtcy4KKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoK
KyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVNjcmVlbi5oOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgICogcGxhdGZvcm0vYmxhY2tiZXJyeS9QbGF0Zm9ybVNjcmVlbkJsYWNrQmVycnku
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6c2NyZWVuQXZhaWxhYmxlUmVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpzY3JlZW5SZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9y
bVNjcmVlbkNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNjcmVlblJlY3QpOgorICAg
ICAgICAoV2ViQ29yZTo6c2NyZWVuQXZhaWxhYmxlUmVjdCk6CisgICAgICAgICogcGxhdGZvcm0v
Y2hyb21pdW0vUGxhdGZvcm1TdXBwb3J0Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFBsYXRmb3JtU3VwcG9ydCk6CisgICAgICAgICgpOgorICAgICAgICAqIHBsYXRmb3JtL2VmbC9Q
bGF0Zm9ybVNjcmVlbkVmbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzY3JlZW5SZWN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OnNjcmVlbkF2YWlsYWJsZVJlY3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2d0ay9QbGF0Zm9ybVNjcmVlbkd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzY3JlZW5SZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OnNjcmVlbkF2YWlsYWJsZVJlY3QpOgorICAgICAgICAqIHBs
YXRmb3JtL3F0L1BsYXRmb3JtU2NyZWVuUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2NyZWVu
UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpzY3JlZW5BdmFpbGFibGVSZWN0KToKKyAgICAgICAg
KiBwbGF0Zm9ybS93aW4vUGxhdGZvcm1TY3JlZW5XaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
c2NyZWVuUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpzY3JlZW5BdmFpbGFibGVSZWN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS93eC9TY3JlZW5XeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzY3Jl
ZW5SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OnNjcmVlbkF2YWlsYWJsZVJlY3QpOgorCisgICAg
ICAgIFRoZSBNYWMtb25seSBmdW5jdGlvbnMgdG9Vc2VyU3BhY2UoKSBhbmQgdG9EZXZpY2VTcGFj
ZSgpIHdlcmUgYWxzbyB1cGRhdGVkIHRvIAorICAgICAgICB0YWtlIGEgcGFyYW1ldGVyIGZvciB0
aGUgZGV2aWNlU2NhbGVGYWN0b3IuCisgICAgICAgICogcGxhdGZvcm0vbWFjL1BsYXRmb3JtU2Ny
ZWVuTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6c2NyZWVuUmVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpzY3JlZW5BdmFpbGFibGVSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OnRvVXNlclNwYWNl
KToKKyAgICAgICAgKFdlYkNvcmU6OnRvRGV2aWNlU3BhY2UpOgorCiAyMDEyLTAxLTI3ICBNaWtl
IExhd3RoZXIgIDxtaWtlbGF3dGhlckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQ1NTIGNhbGMg
cGFyc2luZyBzdGFnZQpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHJldmlzaW9uIDEwNjA2NCkK
KysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCSh3b3JraW5nIGNvcHkpCkBAIC0yMjAs
NyArMjIwLDcgQEAgX19aTjdXZWJDb3JlMTFSZW5kZXJMYXllcjE5c2Nyb2xsUmVjdFRvVgogX19a
TjdXZWJDb3JlMTFnbG9iYWxQb2ludEVSSzhfTlNQb2ludFA4TlNXaW5kb3cKIF9fWk43V2ViQ29y
ZTExbWVtb3J5Q2FjaGVFdgogX19aTjdXZWJDb3JlMTFzdGFydE9mV29yZEVSS05TXzE1VmlzaWJs
ZVBvc2l0aW9uRU5TXzlFV29yZFNpZGVFCi1fX1pON1dlYkNvcmUxMXRvVXNlclNwYWNlRVJLN19O
U1JlY3RQOE5TV2luZG93CitfX1pON1dlYkNvcmUxMXRvVXNlclNwYWNlRVJLNkNHUmVjdFA4TlNX
aW5kb3dmCiBfX1pON1dlYkNvcmUxMXdyaXRlVG9GaWxlRWlQS2NpCiBfX1pON1dlYkNvcmUxMkNo
cm9tZUNsaWVudDIzcGFpbnRDdXN0b21PdmVyaGFuZ0FyZWFFUE5TXzE1R3JhcGhpY3NDb250ZXh0
RVJLTlNfN0ludFJlY3RFUzVfUzVfCiBfX1pON1dlYkNvcmUxMkVkaXRpbmdTdHlsZUQxRXYKQEAg
LTMyNiw3ICszMjYsNyBAQCBfX1pON1dlYkNvcmUxM1Jlc291cmNlRXJyb3JDMUVQOV9fQ0ZFcnJv
CiBfX1pON1dlYkNvcmUxM1R5cGluZ0NvbW1hbmQzOWluc2VydFBhcmFncmFwaFNlcGFyYXRvcklu
UXVvdGVkQ29udGVudEVQTlNfOERvY3VtZW50RQogX19aTjdXZWJDb3JlMTNjcmVhdGVXcmFwcGVy
RVBOM0pTQzlFeGVjU3RhdGVFUE5TXzE3SlNET01HbG9iYWxPYmplY3RFUE5TXzROb2RlRQogX19a
TjdXZWJDb3JlMTNkaXJlY3RvcnlOYW1lRVJLTjNXVEY2U3RyaW5nRQotX19aTjdXZWJDb3JlMTN0
b0RldmljZVNwYWNlRVJLTlNfOUZsb2F0UmVjdEVQOE5TV2luZG93CitfX1pON1dlYkNvcmUxM3Rv
RGV2aWNlU3BhY2VFUktOU185RmxvYXRSZWN0RVA4TlNXaW5kb3dmCiBfX1pON1dlYkNvcmUxM3Rv
SFRNTEVsZW1lbnRFUE5TXzIxRm9ybUFzc29jaWF0ZWRFbGVtZW50RQogX19aTjdXZWJDb3JlMTN0
b0pTRE9NV2luZG93RU4zSlNDN0pTVmFsdWVFCiBfX1pON1dlYkNvcmUxNENhY2hlZFJlc291cmNl
MTJyZW1vdmVDbGllbnRFUE5TXzIwQ2FjaGVkUmVzb3VyY2VDbGllbnRFCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNjcmVlbi5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU2NyZWVuLmgJKHJldmlzaW9uIDEwNjA2NCkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU2NyZWVuLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQwLDYgKzQwLDcgQEAgdHlwZWRlZiB1aW50MzJfdCBQbGF0Zm9ybURpc3BsYXlJRDsKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIEZsb2F0UmVjdDsKKyAgICBjbGFzcyBGcmFtZVZp
ZXc7CiAgICAgY2xhc3MgV2lkZ2V0OwogCiAgICAgaW50IHNjcmVlbkhvcml6b250YWxEUEkoV2lk
Z2V0Kik7CkBAIC00OCwxNCArNDksMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGludCBz
Y3JlZW5EZXB0aFBlckNvbXBvbmVudChXaWRnZXQqKTsKICAgICBib29sIHNjcmVlbklzTW9ub2No
cm9tZShXaWRnZXQqKTsKIAotICAgIEZsb2F0UmVjdCBzY3JlZW5SZWN0KFdpZGdldCopOwotICAg
IEZsb2F0UmVjdCBzY3JlZW5BdmFpbGFibGVSZWN0KFdpZGdldCopOworICAgIEZsb2F0UmVjdCBz
Y3JlZW5SZWN0KEZyYW1lVmlldyopOworICAgIEZsb2F0UmVjdCBzY3JlZW5BdmFpbGFibGVSZWN0
KEZyYW1lVmlldyopOwogCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIE5TU2NyZWVuICpzY3JlZW5G
b3JXaW5kb3coTlNXaW5kb3cgKik7CiAKLSAgICBGbG9hdFJlY3QgdG9Vc2VyU3BhY2UoY29uc3Qg
TlNSZWN0JiwgTlNXaW5kb3cgKmRlc3RpbmF0aW9uKTsKLSAgICBOU1JlY3QgdG9EZXZpY2VTcGFj
ZShjb25zdCBGbG9hdFJlY3QmLCBOU1dpbmRvdyAqc291cmNlKTsKKyAgICBGbG9hdFJlY3QgdG9V
c2VyU3BhY2UoY29uc3QgTlNSZWN0JiwgTlNXaW5kb3cgKmRlc3RpbmF0aW9uLCBmbG9hdCBkZXZp
Y2VTY2FsZUZhY3Rvcik7CisgICAgTlNSZWN0IHRvRGV2aWNlU3BhY2UoY29uc3QgRmxvYXRSZWN0
JiwgTlNXaW5kb3cgKnNvdXJjZSwgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IpOwogCiAgICAgTlNQ
b2ludCBmbGlwU2NyZWVuUG9pbnQoY29uc3QgTlNQb2ludCYsIE5TU2NyZWVuICopOwogI2VuZGlm
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1BsYXRmb3JtU2NyZWVu
QmxhY2tCZXJyeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxh
Y2tiZXJyeS9QbGF0Zm9ybVNjcmVlbkJsYWNrQmVycnkuY3BwCShyZXZpc2lvbiAxMDYwNjQpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1BsYXRmb3JtU2NyZWVuQmxhY2tC
ZXJyeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwLDYgKzIwLDcgQEAKICNpbmNsdWRlICJQbGF0
Zm9ybVNjcmVlbi5oIgogCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCisjaW5jbHVkZSAiRnJhbWVW
aWV3LmgiCiAjaW5jbHVkZSAiV2lkZ2V0LmgiCiAKICNpbmNsdWRlIDxCbGFja0JlcnJ5UGxhdGZv
cm1TY3JlZW4uaD4KQEAgLTQxLDEyICs0MiwxMiBAQCBpbnQgc2NyZWVuRGVwdGgoV2lkZ2V0KikK
ICAgICByZXR1cm4gMjQ7CiB9CiAKLUZsb2F0UmVjdCBzY3JlZW5BdmFpbGFibGVSZWN0KFdpZGdl
dCogd2lkZ2V0KQorRmxvYXRSZWN0IHNjcmVlbkF2YWlsYWJsZVJlY3QoRnJhbWVWaWV3KiBmcmFt
ZVZpZXcpCiB7CiAgICAgcmV0dXJuIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIEZsb2F0U2l6ZShJ
bnRTaXplKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGljczo6U2NyZWVuOjpzaXplKCkpKSk7
CiB9CiAKLUZsb2F0UmVjdCBzY3JlZW5SZWN0KFdpZGdldCogd2lkZ2V0KQorRmxvYXRSZWN0IHNj
cmVlblJlY3QoRnJhbWVWaWV3KiBmcmFtZVZpZXcpCiB7CiAgICAgcmV0dXJuIEZsb2F0UmVjdChG
bG9hdFBvaW50KCksIEZsb2F0U2l6ZShJbnRTaXplKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFw
aGljczo6U2NyZWVuOjpzaXplKCkpKSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jaHJvbWl1bS9QbGF0Zm9ybVNjcmVlbkNocm9taXVtLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVNjcmVlbkNocm9taXVtLmNwcAko
cmV2aXNpb24gMTA2MDY0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxh
dGZvcm1TY3JlZW5DaHJvbWl1bS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVNjcmVlbi5oIgogCisjaW5j
bHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIlBsYXRm
b3JtU3VwcG9ydC5oIgogCkBAIC02MSwxNCArNjIsMTQgQEAgYm9vbCBzY3JlZW5Jc01vbm9jaHJv
bWUoV2lkZ2V0KiB3aWRnZXQpCiAgICAgcmV0dXJuIFBsYXRmb3JtU3VwcG9ydDo6c2NyZWVuSXNN
b25vY2hyb21lKHdpZGdldCk7CiB9CiAKLUZsb2F0UmVjdCBzY3JlZW5SZWN0KFdpZGdldCogd2lk
Z2V0KQorRmxvYXRSZWN0IHNjcmVlblJlY3QoRnJhbWVWaWV3KiBmcmFtZVZpZXcpCiB7Ci0gICAg
cmV0dXJuIFBsYXRmb3JtU3VwcG9ydDo6c2NyZWVuUmVjdCh3aWRnZXQpOworICAgIHJldHVybiBQ
bGF0Zm9ybVN1cHBvcnQ6OnNjcmVlblJlY3QoZnJhbWVWaWV3KTsKIH0KIAotRmxvYXRSZWN0IHNj
cmVlbkF2YWlsYWJsZVJlY3QoV2lkZ2V0KiB3aWRnZXQpCitGbG9hdFJlY3Qgc2NyZWVuQXZhaWxh
YmxlUmVjdChGcmFtZVZpZXcqIGZyYW1lVmlldykKIHsKLSAgICByZXR1cm4gUGxhdGZvcm1TdXBw
b3J0OjpzY3JlZW5BdmFpbGFibGVSZWN0KHdpZGdldCk7CisgICAgcmV0dXJuIFBsYXRmb3JtU3Vw
cG9ydDo6c2NyZWVuQXZhaWxhYmxlUmVjdChmcmFtZVZpZXcpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9y
bVN1cHBvcnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1
bS9QbGF0Zm9ybVN1cHBvcnQuaAkocmV2aXNpb24gMTA2MDY0KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1TdXBwb3J0LmgJKHdvcmtpbmcgY29weSkKQEAgLTcx
LDYgKzcxLDcgQEAgY2xhc3MgQ29sb3I7CiBjbGFzcyBDdXJzb3I7CiBjbGFzcyBEb2N1bWVudDsK
IGNsYXNzIEZyYW1lOworY2xhc3MgRnJhbWVWaWV3OwogY2xhc3MgR2FtZXBhZExpc3Q7CiBjbGFz
cyBHZW9sb2NhdGlvblNlcnZpY2VCcmlkZ2U7CiBjbGFzcyBHZW9sb2NhdGlvblNlcnZpY2VDaHJv
bWl1bTsKQEAgLTI0NSw4ICsyNDYsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGludCBzY3JlZW5E
ZXB0aChXaWRnZXQqKTsKICAgICBzdGF0aWMgaW50IHNjcmVlbkRlcHRoUGVyQ29tcG9uZW50KFdp
ZGdldCopOwogICAgIHN0YXRpYyBib29sIHNjcmVlbklzTW9ub2Nocm9tZShXaWRnZXQqKTsKLSAg
ICBzdGF0aWMgSW50UmVjdCBzY3JlZW5SZWN0KFdpZGdldCopOwotICAgIHN0YXRpYyBJbnRSZWN0
IHNjcmVlbkF2YWlsYWJsZVJlY3QoV2lkZ2V0Kik7CisgICAgc3RhdGljIEludFJlY3Qgc2NyZWVu
UmVjdChGcmFtZVZpZXcqKTsKKyAgICBzdGF0aWMgSW50UmVjdCBzY3JlZW5BdmFpbGFibGVSZWN0
KEZyYW1lVmlldyopOwogCiAgICAgLy8gU2hhcmVkVGltZXJzIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICBzdGF0aWMgdm9pZCBzZXRT
aGFyZWRUaW1lckZpcmVkRnVuY3Rpb24odm9pZCAoKmZ1bmMpKCkpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZWZsL1BsYXRmb3JtU2NyZWVuRWZsLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUGxhdGZvcm1TY3JlZW5FZmwuY3BwCShyZXZpc2lv
biAxMDYwNjQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUGxhdGZvcm1TY3JlZW5F
ZmwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TY3JlZW4uaCIKIAorI2luY2x1ZGUgIkZyYW1lVmlldy5o
IgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcu
aCIKICNpbmNsdWRlICJXaWRnZXQuaCIKQEAgLTczLDIzICs3NCwyMyBAQCBib29sIHNjcmVlbklz
TW9ub2Nocm9tZShXaWRnZXQqKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotRmxvYXRSZWN0IHNj
cmVlblJlY3QoV2lkZ2V0KiB3aWRnZXQpCitGbG9hdFJlY3Qgc2NyZWVuUmVjdChGcmFtZVZpZXcq
IGZyYW1lVmlldykKIHsKLSAgICBpZiAoIXdpZGdldCkKKyAgICBpZiAoIWZyYW1lVmlldykKICAg
ICAgICAgcmV0dXJuIEZsb2F0UmVjdCgpOwogCiAgICAgaW50IHgsIHksIHcsIGg7Ci0gICAgRXZh
cyogZSA9IHdpZGdldC0+ZXZhcygpOworICAgIEV2YXMqIGUgPSBmcmFtZVZpZXctPmV2YXMoKTsK
IAogICAgIGVjb3JlX2V2YXNfc2NyZWVuX2dlb21ldHJ5X2dldChlY29yZV9ldmFzX2Vjb3JlX2V2
YXNfZ2V0KGUpLCAmeCwgJnksICZ3LCAmaCk7CiAKICAgICByZXR1cm4gRmxvYXRSZWN0KHgsIHks
IHcsIGgpOwogfQogCi1GbG9hdFJlY3Qgc2NyZWVuQXZhaWxhYmxlUmVjdChXaWRnZXQqIHdpZGdl
dCkKK0Zsb2F0UmVjdCBzY3JlZW5BdmFpbGFibGVSZWN0KEZyYW1lVmlldyogZnJhbWVWaWV3KQog
ewogICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIHNjcmVlblJlY3Qod2lkZ2V0KTsK
KyAgICByZXR1cm4gc2NyZWVuUmVjdChmcmFtZVZpZXcpOwogfQogCiB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1TY3JlZW5HdGsuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybVNjcmVlbkd0ay5jcHAJKHJldmlz
aW9uIDEwNjA2NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybVNjcmVl
bkd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVNjcmVlbi5oIgogCisjaW5jbHVkZSAiRnJhbWVWaWV3
LmgiCiAjaW5jbHVkZSAiR3RrVmVyc2lvbmluZy5oIgogI2luY2x1ZGUgIkhvc3RXaW5kb3cuaCIK
ICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgpAQCAtMTAwLDkgKzEwMSw5IEBAIHN0YXRpYyBH
ZGtTY3JlZW4qIGdldFNjcmVlbihHdGtXaWRnZXQqIHcKICAgICByZXR1cm4gZ3RrX3dpZGdldF9o
YXNfc2NyZWVuKHdpZGdldCkgPyBndGtfd2lkZ2V0X2dldF9zY3JlZW4od2lkZ2V0KSA6IGdka19z
Y3JlZW5fZ2V0X2RlZmF1bHQoKTsKIH0KIAotRmxvYXRSZWN0IHNjcmVlblJlY3QoV2lkZ2V0KiB3
aWRnZXQpCitGbG9hdFJlY3Qgc2NyZWVuUmVjdChGcmFtZVZpZXcqIGZyYW1lVmlldykKIHsKLSAg
ICBHdGtXaWRnZXQqIGNvbnRhaW5lciA9IHdpZGdldCA/IEdUS19XSURHRVQod2lkZ2V0LT5yb290
KCktPmhvc3RXaW5kb3coKS0+cGxhdGZvcm1QYWdlQ2xpZW50KCkpIDogMDsKKyAgICBHdGtXaWRn
ZXQqIGNvbnRhaW5lciA9IGZyYW1lVmlldyA/IEdUS19XSURHRVQoZnJhbWVWaWV3LT5yb290KCkt
Pmhvc3RXaW5kb3coKS0+cGxhdGZvcm1QYWdlQ2xpZW50KCkpIDogMDsKICAgICBpZiAoY29udGFp
bmVyKQogICAgICAgICBjb250YWluZXIgPSBnZXRUb3BsZXZlbChjb250YWluZXIpOwogCkBAIC0x
MTgsMTEgKzExOSwxMSBAQCBGbG9hdFJlY3Qgc2NyZWVuUmVjdChXaWRnZXQqIHdpZGdldCkKICAg
ICByZXR1cm4gRmxvYXRSZWN0KGdlb21ldHJ5LngsIGdlb21ldHJ5LnksIGdlb21ldHJ5LndpZHRo
LCBnZW9tZXRyeS5oZWlnaHQpOwogfQogCi1GbG9hdFJlY3Qgc2NyZWVuQXZhaWxhYmxlUmVjdChX
aWRnZXQqIHdpZGdldCkKK0Zsb2F0UmVjdCBzY3JlZW5BdmFpbGFibGVSZWN0KEZyYW1lVmlldyog
ZnJhbWVWaWV3KQogewotICAgIEd0a1dpZGdldCogY29udGFpbmVyID0gd2lkZ2V0ID8gR1RLX1dJ
REdFVCh3aWRnZXQtPnJvb3QoKS0+aG9zdFdpbmRvdygpLT5wbGF0Zm9ybVBhZ2VDbGllbnQoKSkg
OiAwOworICAgIEd0a1dpZGdldCogY29udGFpbmVyID0gZnJhbWVWaWV3ID8gR1RLX1dJREdFVChm
cmFtZVZpZXctPnJvb3QoKS0+aG9zdFdpbmRvdygpLT5wbGF0Zm9ybVBhZ2VDbGllbnQoKSkgOiAw
OwogICAgIGlmIChjb250YWluZXIgJiYgIWd0a193aWRnZXRfZ2V0X3JlYWxpemVkKGNvbnRhaW5l
cikpCi0gICAgICAgIHJldHVybiBzY3JlZW5SZWN0KHdpZGdldCk7CisgICAgICAgIHJldHVybiBz
Y3JlZW5SZWN0KGZyYW1lVmlldyk7CiAKICAgICBHZGtTY3JlZW4qIHNjcmVlbiA9IGNvbnRhaW5l
ciA/IGdldFNjcmVlbihjb250YWluZXIpIDogZ2RrX3NjcmVlbl9nZXRfZGVmYXVsdCgpOwogICAg
IGlmICghc2NyZWVuKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3Jt
U2NyZWVuTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Q
bGF0Zm9ybVNjcmVlbk1hYy5tbQkocmV2aXNpb24gMTA2MDY0KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1BsYXRmb3JtU2NyZWVuTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC02NCwx
NiArNjQsMTYgQEAgYm9vbCBzY3JlZW5Jc01vbm9jaHJvbWUoV2lkZ2V0KikKIC8vIFRoZXNlIGZ1
bmN0aW9ucyBzY2FsZSBiZXR3ZWVuIHNjcmVlbiBhbmQgcGFnZSBjb29yZGluYXRlcyBiZWNhdXNl
IEphdmFTY3JpcHQvRE9NIG9wZXJhdGlvbnMgCiAvLyBhc3N1bWUgdGhhdCB0aGUgc2NyZWVuIGFu
ZCB0aGUgcGFnZSBzaGFyZSB0aGUgc2FtZSBjb29yZGluYXRlIHN5c3RlbS4KIAotRmxvYXRSZWN0
IHNjcmVlblJlY3QoV2lkZ2V0KiB3aWRnZXQpCitGbG9hdFJlY3Qgc2NyZWVuUmVjdChGcmFtZVZp
ZXcqIGZyYW1lVmlldykKIHsKLSAgICBOU1dpbmRvdyAqd2luZG93ID0gd2lkZ2V0ID8gW3dpZGdl
dC0+cGxhdGZvcm1XaWRnZXQoKSB3aW5kb3ddIDogbmlsOwotICAgIHJldHVybiB0b1VzZXJTcGFj
ZShbc2NyZWVuRm9yV2luZG93KHdpbmRvdykgZnJhbWVdLCB3aW5kb3cpOworICAgIE5TV2luZG93
ICp3aW5kb3cgPSBmcmFtZVZpZXcgPyBbZnJhbWVWaWV3LT5wbGF0Zm9ybVdpZGdldCgpIHdpbmRv
d10gOiBuaWw7CisgICAgcmV0dXJuIHRvVXNlclNwYWNlKFtzY3JlZW5Gb3JXaW5kb3cod2luZG93
KSBmcmFtZV0sIHdpbmRvdywgV2ViQ29yZTo6ZGV2aWNlU2NhbGVGYWN0b3IoZnJhbWVWaWV3LT5m
cmFtZSgpKSk7CiB9CiAKLUZsb2F0UmVjdCBzY3JlZW5BdmFpbGFibGVSZWN0KFdpZGdldCogd2lk
Z2V0KQorRmxvYXRSZWN0IHNjcmVlbkF2YWlsYWJsZVJlY3QoRnJhbWVWaWV3KiBmcmFtZVZpZXcp
CiB7Ci0gICAgTlNXaW5kb3cgKndpbmRvdyA9IHdpZGdldCA/IFt3aWRnZXQtPnBsYXRmb3JtV2lk
Z2V0KCkgd2luZG93XSA6IG5pbDsKLSAgICByZXR1cm4gdG9Vc2VyU3BhY2UoW3NjcmVlbkZvcldp
bmRvdyh3aW5kb3cpIHZpc2libGVGcmFtZV0sIHdpbmRvdyk7CisgICAgTlNXaW5kb3cgKndpbmRv
dyA9IGZyYW1lVmlldyA/IFtmcmFtZVZpZXctPnBsYXRmb3JtV2lkZ2V0KCkgd2luZG93XSA6IG5p
bDsKKyAgICByZXR1cm4gdG9Vc2VyU3BhY2UoW3NjcmVlbkZvcldpbmRvdyh3aW5kb3cpIHZpc2li
bGVGcmFtZV0sIHdpbmRvdywgV2ViQ29yZTo6ZGV2aWNlU2NhbGVGYWN0b3IoZnJhbWVWaWV3LT5m
cmFtZSgpKSk7CiB9CiAKIE5TU2NyZWVuICpzY3JlZW5Gb3JXaW5kb3coTlNXaW5kb3cgKndpbmRv
dykKQEAgLTg5LDI5ICs4OSwxOCBAQCBOU1NjcmVlbiAqc2NyZWVuRm9yV2luZG93KE5TV2luZG93
ICp3aW5kCiAgICAgcmV0dXJuIG5pbDsKIH0KIAotc3RhdGljIENHRmxvYXQgd2luZG93U2NhbGVG
YWN0b3IoTlNXaW5kb3cgKndpbmRvdykKLXsKLSNpZiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9Q
QVJEKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCi0gICAgcmV0dXJuIFt3
aW5kb3cgYmFja2luZ1NjYWxlRmFjdG9yXTsKLSNlbHNlCi0gICAgcmV0dXJuIFt3aW5kb3cgdXNl
clNwYWNlU2NhbGVGYWN0b3JdOwotI2VuZGlmCi19Ci0KLUZsb2F0UmVjdCB0b1VzZXJTcGFjZShj
b25zdCBOU1JlY3QmIHJlY3QsIE5TV2luZG93ICpkZXN0aW5hdGlvbikKK0Zsb2F0UmVjdCB0b1Vz
ZXJTcGFjZShjb25zdCBOU1JlY3QmIHJlY3QsIE5TV2luZG93ICpkZXN0aW5hdGlvbiwgZmxvYXQg
ZGV2aWNlU2NhbGVGYWN0b3IpCiB7CiAgICAgRmxvYXRSZWN0IHVzZXJSZWN0ID0gcmVjdDsKICAg
ICB1c2VyUmVjdC5zZXRZKE5TTWF4WShbc2NyZWVuRm9yV2luZG93KGRlc3RpbmF0aW9uKSBmcmFt
ZV0pIC0gKHVzZXJSZWN0LnkoKSArIHVzZXJSZWN0LmhlaWdodCgpKSk7IC8vIGZsaXAKLSAgICBp
ZiAoZGVzdGluYXRpb24pCi0gICAgICAgIHVzZXJSZWN0LnNjYWxlKDEgLyB3aW5kb3dTY2FsZUZh
Y3RvcihkZXN0aW5hdGlvbikpOyAvLyBzY2FsZSBkb3duCisgICAgdXNlclJlY3Quc2NhbGUoMSAv
IGRldmljZVNjYWxlRmFjdG9yKTsgLy8gc2NhbGUgZG93bgogICAgIHJldHVybiB1c2VyUmVjdDsK
IH0KIAotTlNSZWN0IHRvRGV2aWNlU3BhY2UoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBOU1dpbmRv
dyAqc291cmNlKQorTlNSZWN0IHRvRGV2aWNlU3BhY2UoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBO
U1dpbmRvdyAqc291cmNlLCBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcikKIHsKICAgICBGbG9hdFJl
Y3QgZGV2aWNlUmVjdCA9IHJlY3Q7Ci0gICAgaWYgKHNvdXJjZSkKLSAgICAgICAgZGV2aWNlUmVj
dC5zY2FsZSh3aW5kb3dTY2FsZUZhY3Rvcihzb3VyY2UpKTsgLy8gc2NhbGUgdXAKKyAgICBkZXZp
Y2VSZWN0LnNjYWxlKGRldmljZVNjYWxlRmFjdG9yKTsgLy8gc2NhbGUgdXAKICAgICBkZXZpY2VS
ZWN0LnNldFkoTlNNYXhZKFtzY3JlZW5Gb3JXaW5kb3coc291cmNlKSBmcmFtZV0pIC0gKGRldmlj
ZVJlY3QueSgpICsgZGV2aWNlUmVjdC5oZWlnaHQoKSkpOyAvLyBmbGlwCiAgICAgcmV0dXJuIGRl
dmljZVJlY3Q7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9QbGF0Zm9ybVNj
cmVlblF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9QbGF0
Zm9ybVNjcmVlblF0LmNwcAkocmV2aXNpb24gMTA2MDY0KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vcXQvUGxhdGZvcm1TY3JlZW5RdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMiwxNSAr
MTAyLDE1IEBAIGJvb2wgc2NyZWVuSXNNb25vY2hyb21lKFdpZGdldCogdykKICAgICByZXR1cm4g
UUFwcGxpY2F0aW9uOjpkZXNrdG9wKCktPnNjcmVlbihzY3JlZW5OdW1iZXIodykpLT5jb2xvckNv
dW50KCkgPT0gMjsKIH0KIAotRmxvYXRSZWN0IHNjcmVlblJlY3QoV2lkZ2V0KiB3KQorRmxvYXRS
ZWN0IHNjcmVlblJlY3QoRnJhbWVWaWV3KiBmcmFtZVZpZXcpCiB7Ci0gICAgUVJlY3QgciA9IFFB
cHBsaWNhdGlvbjo6ZGVza3RvcCgpLT5zY3JlZW5HZW9tZXRyeShzY3JlZW5OdW1iZXIodykpOwor
ICAgIFFSZWN0IHIgPSBRQXBwbGljYXRpb246OmRlc2t0b3AoKS0+c2NyZWVuR2VvbWV0cnkoc2Ny
ZWVuTnVtYmVyKGZyYW1lVmlldykpOwogICAgIHJldHVybiBGbG9hdFJlY3Qoci54KCksIHIueSgp
LCByLndpZHRoKCksIHIuaGVpZ2h0KCkpOwogfQogCi1GbG9hdFJlY3Qgc2NyZWVuQXZhaWxhYmxl
UmVjdChXaWRnZXQqIHcpCitGbG9hdFJlY3Qgc2NyZWVuQXZhaWxhYmxlUmVjdChGcmFtZVZpZXcq
IGZyYW1lVmlldykKIHsKLSAgICBRUmVjdCByID0gUUFwcGxpY2F0aW9uOjpkZXNrdG9wKCktPmF2
YWlsYWJsZUdlb21ldHJ5KHNjcmVlbk51bWJlcih3KSk7CisgICAgUVJlY3QgciA9IFFBcHBsaWNh
dGlvbjo6ZGVza3RvcCgpLT5hdmFpbGFibGVHZW9tZXRyeShzY3JlZW5OdW1iZXIoZnJhbWVWaWV3
KSk7CiAgICAgcmV0dXJuIEZsb2F0UmVjdChyLngoKSwgci55KCksIHIud2lkdGgoKSwgci5oZWln
aHQoKSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QbGF0Zm9ybVNj
cmVlbldpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bs
YXRmb3JtU2NyZWVuV2luLmNwcAkocmV2aXNpb24gMTA2MDY0KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL1BsYXRmb3JtU2NyZWVuV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA2
LDE1ICsxMDYsMTUgQEAgYm9vbCBzY3JlZW5Jc01vbm9jaHJvbWUoV2lkZ2V0KiB3aWRnZXQpCiAj
ZW5kaWYKIH0KIAotRmxvYXRSZWN0IHNjcmVlblJlY3QoV2lkZ2V0KiB3aWRnZXQpCitGbG9hdFJl
Y3Qgc2NyZWVuUmVjdChGcmFtZVZpZXcqIGZyYW1lVmlldykKIHsKLSAgICBNT05JVE9SSU5GT0VY
IG1vbml0b3JJbmZvID0gbW9uaXRvckluZm9Gb3JXaWRnZXQod2lkZ2V0KTsKKyAgICBNT05JVE9S
SU5GT0VYIG1vbml0b3JJbmZvID0gbW9uaXRvckluZm9Gb3JXaWRnZXQoZnJhbWVWaWV3KTsKICAg
ICByZXR1cm4gbW9uaXRvckluZm8ucmNNb25pdG9yOwogfQogCi1GbG9hdFJlY3Qgc2NyZWVuQXZh
aWxhYmxlUmVjdChXaWRnZXQqIHdpZGdldCkKK0Zsb2F0UmVjdCBzY3JlZW5BdmFpbGFibGVSZWN0
KEZyYW1lVmlldyogZnJhbWVWaWV3KQogewotICAgIE1PTklUT1JJTkZPRVggbW9uaXRvckluZm8g
PSBtb25pdG9ySW5mb0ZvcldpZGdldCh3aWRnZXQpOworICAgIE1PTklUT1JJTkZPRVggbW9uaXRv
ckluZm8gPSBtb25pdG9ySW5mb0ZvcldpZGdldChmcmFtZVZpZXcpOwogICAgIHJldHVybiBtb25p
dG9ySW5mby5yY1dvcms7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3d4L1Nj
cmVlbld4LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93eC9TY3Jl
ZW5XeC5jcHAJKHJldmlzaW9uIDEwNjA2NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3d4
L1NjcmVlbld4LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUg
IlNjcmVlbi5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIK
KyNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2lu
Y2x1ZGUgIldpZGdldC5oIgogCkBAIC00OCw3ICs0OSw3IEBAIGludCBzY3JlZW5WZXJ0aWNhbERQ
SShXaWRnZXQqKQogICAgIHJldHVybiAwOwogfQogICAgIAotRmxvYXRSZWN0IHNjcmVlblJlY3Qo
V2lkZ2V0KiB3aWRnZXQpCitGbG9hdFJlY3Qgc2NyZWVuUmVjdChGcmFtZVZpZXcqIGZyYW1lVmll
dykKIHsKIC8qCiAgICAgaW50IGRpc3BsYXlOdW07CkBAIC03Nyw3ICs3OCw3IEBAIGJvb2wgc2Ny
ZWVuSXNNb25vY2hyb21lKFdpZGdldCogd2lkZ2V0KQogICAgIHJldHVybiB3eENvbG91ckRpc3Bs
YXkoKTsKIH0KIAotRmxvYXRSZWN0IHNjcmVlbkF2YWlsYWJsZVJlY3QoV2lkZ2V0KiB3aWRnZXQp
CitGbG9hdFJlY3Qgc2NyZWVuQXZhaWxhYmxlUmVjdChGcmFtZVZpZXcqIGZyYW1lVmlldykKIHsK
IC8qCiAgICAgV2lkZ2V0KiB3aWRnZXQgPSB3aWRnZXQtPndpZGdldCgpOwpJbmRleDogU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwkocmV2aXNpb24gMTA2MTY5KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMDEtMjcgIEJldGggRGFraW4gIDxiZGFraW5A
YXBwbGUuY29tPgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03NzI2MworICAgICAgICBQbGF0Zm9ybVNjcmVlbk1hYyBzaG91bGQgbm90IHJlbHkgb24g
TlNXaW5kb3cgZm9yIGltcG9ydGFudCBiaXRzIG9mIGRhdGEKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICB0b1VzZXJTcGFjZSgpIGFuZCB0b0RldmljZVNw
YWNlKCkgbm93IHRha2UgYSBwYXJhbWV0ZXIgZm9yIHRoZSAKKyAgICAgICAgZGV2aWNlU2NhbGVG
YWN0b3IuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tOgorICAgICAgICAo
LVtXS1ZpZXcgX2NvbnZlcnRUb0RldmljZVNwYWNlOl0pOgorICAgICAgICAoLVtXS1ZpZXcgX2Nv
bnZlcnRUb1VzZXJTcGFjZTpdKToKKwogMjAxMi0wMS0yNyAgRmFkeSBTYW11ZWwgIDxmc2FtdWVs
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZW5hbWUgc2hvdWxkTGF5b3V0Rml4ZWRFbGVtZW50
c1JlbGF0aXZlVG9GcmFtZSBhbmQgbWFrZSBpdCBhIHNldHRpbmcKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0JKHJldmlzaW9uIDEwNjA2NCkKKysrIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQkod29ya2luZyBjb3B5KQpA
QCAtMjI3MiwxMiArMjI3MiwxMiBAQCAtIChCT09MKV9pbnRlcnByZXRLZXlFdmVudDooTlNFdmVu
dCAqKWV2CiAKIC0gKE5TUmVjdClfY29udmVydFRvRGV2aWNlU3BhY2U6KE5TUmVjdClyZWN0CiB7
Ci0gICAgcmV0dXJuIHRvRGV2aWNlU3BhY2UocmVjdCwgW3NlbGYgd2luZG93XSk7CisgICAgcmV0
dXJuIHRvRGV2aWNlU3BhY2UocmVjdCwgW3NlbGYgd2luZG93XSwgX2RhdGEtPl9wYWdlLT5kZXZp
Y2VTY2FsZUZhY3RvcigpKTsKIH0KIAogLSAoTlNSZWN0KV9jb252ZXJ0VG9Vc2VyU3BhY2U6KE5T
UmVjdClyZWN0CiB7Ci0gICAgcmV0dXJuIHRvVXNlclNwYWNlKHJlY3QsIFtzZWxmIHdpbmRvd10p
OworICAgIHJldHVybiB0b1VzZXJTcGFjZShyZWN0LCBbc2VsZiB3aW5kb3ddLCBfZGF0YS0+X3Bh
Z2UtPmRldmljZVNjYWxlRmFjdG9yKCkpOwogfQogCiAvLyBBbnkgbm9uLXplcm8gdmFsdWUgd2ls
bCBkbywgYnV0IHVzaW5nIHNvbWV0aGluZyByZWNvZ25pemFibGUgbWlnaHQgaGVscCB1cyBkZWJ1
ZyBzb21lIGRheS4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiAxMDYx
NjkpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE1IEBACisyMDEyLTAxLTI3ICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNv
bT4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzcy
NjMKKyAgICAgICAgUGxhdGZvcm1TY3JlZW5NYWMgc2hvdWxkIG5vdCByZWx5IG9uIE5TV2luZG93
IGZvciBpbXBvcnRhbnQgYml0cyBvZiBkYXRhCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGhlc2UgdHdvIGZ1bmN0aW9ucyBub3cgdGFrZSBhIEZyYW1l
VmlldyBpbnN0ZWFkIG9mIGEgV2lkZ2V0LgorICAgICAgICAqIHNyYy9QbGF0Zm9ybVN1cHBvcnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1TdXBwb3J0OjpzY3JlZW5SZWN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtU3VwcG9ydDo6c2NyZWVuQXZhaWxhYmxlUmVjdCk6CisK
IDIwMTItMDEtMjcgIEplZmYgVGltYW51cyAgPHR3aXpAY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFtjaHJvbWl1bV0gSW5jcmVhc2UgdGhlIHNpemUgb2YgdGhlIEdhbmVzaCB0ZXh0dXJlIGNhY2hl
IHRvIHByZXZlbnQgcGVyZm9ybWFuY2UgcHJvYmxlbXMgb24gYWR2YW5jZWQgQ2FudmFzMkQgcGFn
ZXMuCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9QbGF0Zm9ybVN1cHBvcnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1BsYXRmb3JtU3VwcG9y
dC5jcHAJKHJldmlzaW9uIDEwNjA2NCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1Bs
YXRmb3JtU3VwcG9ydC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwOTIsMTcgKzEwOTIsMTcgQEAg
Ym9vbCBQbGF0Zm9ybVN1cHBvcnQ6OnNjcmVlbklzTW9ub2Nocm9tZQogICAgIHJldHVybiBjbGll
bnQtPnNjcmVlbkluZm8oKS5pc01vbm9jaHJvbWU7CiB9CiAKLUludFJlY3QgUGxhdGZvcm1TdXBw
b3J0OjpzY3JlZW5SZWN0KFdpZGdldCogd2lkZ2V0KQorSW50UmVjdCBQbGF0Zm9ybVN1cHBvcnQ6
OnNjcmVlblJlY3QoRnJhbWVWaWV3KiBmcmFtZVZpZXcpCiB7Ci0gICAgV2ViV2lkZ2V0Q2xpZW50
KiBjbGllbnQgPSB0b1dlYldpZGdldENsaWVudCh3aWRnZXQpOworICAgIFdlYldpZGdldENsaWVu
dCogY2xpZW50ID0gdG9XZWJXaWRnZXRDbGllbnQoZnJhbWVWaWV3KTsKICAgICBpZiAoIWNsaWVu
dCkKICAgICAgICAgcmV0dXJuIEludFJlY3QoKTsKICAgICByZXR1cm4gY2xpZW50LT5zY3JlZW5J
bmZvKCkucmVjdDsKIH0KIAotSW50UmVjdCBQbGF0Zm9ybVN1cHBvcnQ6OnNjcmVlbkF2YWlsYWJs
ZVJlY3QoV2lkZ2V0KiB3aWRnZXQpCitJbnRSZWN0IFBsYXRmb3JtU3VwcG9ydDo6c2NyZWVuQXZh
aWxhYmxlUmVjdChGcmFtZVZpZXcqIGZyYW1lVmlldykKIHsKLSAgICBXZWJXaWRnZXRDbGllbnQq
IGNsaWVudCA9IHRvV2ViV2lkZ2V0Q2xpZW50KHdpZGdldCk7CisgICAgV2ViV2lkZ2V0Q2xpZW50
KiBjbGllbnQgPSB0b1dlYldpZGdldENsaWVudChmcmFtZVZpZXcpOwogICAgIGlmICghY2xpZW50
KQogICAgICAgICByZXR1cm4gSW50UmVjdCgpOwogICAgIHJldHVybiBjbGllbnQtPnNjcmVlbklu
Zm8oKS5hdmFpbGFibGVSZWN0OwpJbmRleDogU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMTA2MTY5
KQorKysgU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTcgQEAKKzIwMTItMDEtMjcgIEJldGggRGFraW4gIDxiZGFraW5AYXBwbGUuY29tPgorCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NzI2MworICAg
ICAgICBQbGF0Zm9ybVNjcmVlbk1hYyBzaG91bGQgbm90IHJlbHkgb24gTlNXaW5kb3cgZm9yIGlt
cG9ydGFudCBiaXRzIG9mIGRhdGEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICB0b1VzZXJTcGFjZSgpIGFuZCB0b0RldmljZVNwYWNlKCkgbm93IHRha2Ug
YSBwYXJhbWV0ZXIgZm9yIHRoZSAKKyAgICAgICAgZGV2aWNlU2NhbGVGYWN0b3IuCisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tOgorICAgICAgICAod2luZG93U2Nh
bGVGYWN0b3IpOgorICAgICAgICAoV2ViQ2hyb21lQ2xpZW50OjpzZXRXaW5kb3dSZWN0KToKKyAg
ICAgICAgKFdlYkNocm9tZUNsaWVudDo6d2luZG93UmVjdCk6CisKIDIwMTItMDEtMjUgIE1hcmsg
Um93ZSAgPG1yb3dlQGFwcGxlLmNvbT4KIAogICAgICAgICBCdWlsZCBpbiB0byBhbiBhbHRlcm5h
dGUgbG9jYXRpb24gd2hlbiBVU0VfU1RBR0lOR19JTlNUQUxMX1BBVEggaXMgc2V0LgpJbmRleDog
U291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5tbQkocmV2aXNpb24gMTA2MDY0KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNTAsMTkgKzE1MCwxNiBA
QCB2b2lkIFdlYkNocm9tZUNsaWVudDo6Y2hyb21lRGVzdHJveWVkKCkKICAgICBkZWxldGUgdGhp
czsKIH0KIAotLy8gVGhlc2UgZnVuY3Rpb25zIHNjYWxlIGJldHdlZW4gd2luZG93IGFuZCBXZWJW
aWV3IGNvb3JkaW5hdGVzIGJlY2F1c2UgSmF2YVNjcmlwdC9ET00gb3BlcmF0aW9ucyAKLS8vIGFz
c3VtZSB0aGF0IHRoZSBXZWJWaWV3IGFuZCB0aGUgd2luZG93IHNoYXJlIHRoZSBzYW1lIGNvb3Jk
aW5hdGUgc3lzdGVtLgotCiB2b2lkIFdlYkNocm9tZUNsaWVudDo6c2V0V2luZG93UmVjdChjb25z
dCBGbG9hdFJlY3QmIHJlY3QpCiB7Ci0gICAgTlNSZWN0IHdpbmRvd1JlY3QgPSB0b0RldmljZVNw
YWNlKHJlY3QsIFttX3dlYlZpZXcgd2luZG93XSk7CisgICAgTlNSZWN0IHdpbmRvd1JlY3QgPSB0
b0RldmljZVNwYWNlKHJlY3QsIFttX3dlYlZpZXcgd2luZG93XSwgW21fd2ViVmlldyBfYmFja2lu
Z1NjYWxlRmFjdG9yXSk7CiAgICAgW1ttX3dlYlZpZXcgX1VJRGVsZWdhdGVGb3J3YXJkZXJdIHdl
YlZpZXc6bV93ZWJWaWV3IHNldEZyYW1lOndpbmRvd1JlY3RdOwogfQogCiBGbG9hdFJlY3QgV2Vi
Q2hyb21lQ2xpZW50Ojp3aW5kb3dSZWN0KCkKIHsKICAgICBOU1JlY3Qgd2luZG93UmVjdCA9IFtb
bV93ZWJWaWV3IF9VSURlbGVnYXRlRm9yd2FyZGVyXSB3ZWJWaWV3RnJhbWU6bV93ZWJWaWV3XTsK
LSAgICByZXR1cm4gdG9Vc2VyU3BhY2Uod2luZG93UmVjdCwgW21fd2ViVmlldyB3aW5kb3ddKTsK
KyAgICByZXR1cm4gdG9Vc2VyU3BhY2Uod2luZG93UmVjdCwgW21fd2ViVmlldyB3aW5kb3ddLCBb
bV93ZWJWaWV3IF9iYWNraW5nU2NhbGVGYWN0b3JdKTsKIH0KIAogLy8gRklYTUU6IFdlIG5lZWQg
dG8gYWRkIEFQSSBmb3Igc2V0dGluZyBhbmQgZ2V0dGluZyB0aGlzLgo=
</data>
<flag name="review"
          id="125652"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>