<?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>175782</bug_id>
          
          <creation_ts>2017-08-21 14:13:19 -0700</creation_ts>
          <short_desc>Cleanup TextPainter</short_desc>
          <delta_ts>2017-08-21 16:22:03 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Local Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Daniel Bates">dbates</reporter>
          <assigned_to name="Daniel Bates">dbates</assigned_to>
          <cc>buildbot</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1340747</commentid>
    <comment_count>0</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2017-08-21 14:13:19 -0700</bug_when>
    <thetext>Remove redundant mention of &quot;text&quot; in the name of TextPainter member functions, add separate setters for selection and non-selection shadows, and do some other minor cleanups.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1340750</commentid>
    <comment_count>1</comment_count>
      <attachid>318671</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2017-08-21 14:23:41 -0700</bug_when>
    <thetext>Created attachment 318671
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1340753</commentid>
    <comment_count>2</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-08-21 14:26:31 -0700</bug_when>
    <thetext>Attachment 318671 did not pass style-queue:


ERROR: Source/WebCore/rendering/TextPainter.cpp:36:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 5 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>1340765</commentid>
    <comment_count>3</comment_count>
      <attachid>318671</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2017-08-21 14:49:58 -0700</bug_when>
    <thetext>Comment on attachment 318671
Patch

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

&gt; Source/WebCore/rendering/TextPainter.cpp:4
&gt; + * Copyright (C) 2004-2017 Apple Inc. All rights reserved.

Are we actually allowed to retroactively add in 2014-2016?

&gt; Source/WebCore/rendering/TextPainter.cpp:40
&gt; +    : m_context { context }
&gt; +    , m_shadow { shadow }
&gt; +    , m_onlyDrawsShadow { !isLastShadowIteration() || !lastShadowIterationShouldDrawText }
&gt; +    , m_avoidDrawingShadow { shadowIsCompletelyCoveredByText(opaque) }
&gt; +    , m_nothingToDraw { shadow &amp;&amp; m_avoidDrawingShadow &amp;&amp; m_onlyDrawsShadow }
&gt; +    , m_didSaveContext { false }

What&apos;s the reason for this change? I haven&apos;t seen this style in any other code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1340809</commentid>
    <comment_count>4</comment_count>
      <attachid>318671</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2017-08-21 16:19:21 -0700</bug_when>
    <thetext>Comment on attachment 318671
Patch

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

&gt;&gt; Source/WebCore/rendering/TextPainter.cpp:4
&gt;&gt; + * Copyright (C) 2004-2017 Apple Inc. All rights reserved.
&gt; 
&gt; Are we actually allowed to retroactively add in 2014-2016?

Yes, Apple employees made changes throughout 2014-2016.

&gt;&gt; Source/WebCore/rendering/TextPainter.cpp:40
&gt;&gt; +    , m_didSaveContext { false }
&gt; 
&gt; What&apos;s the reason for this change? I haven&apos;t seen this style in any other code.

We should bring this up on webkit-dev to standardize. I have seen a movement towards using this style. See bug #173682, comment #4.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1340811</commentid>
    <comment_count>5</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2017-08-21 16:21:29 -0700</bug_when>
    <thetext>Committed r220988: &lt;http://trac.webkit.org/changeset/220988&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1340814</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-08-21 16:22:03 -0700</bug_when>
    <thetext>&lt;rdar://problem/34001905&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318671</attachid>
            <date>2017-08-21 14:23:41 -0700</date>
            <delta_ts>2017-08-21 14:49:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175782-20170821142340.patch</filename>
            <type>text/plain</type>
            <size>21180</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIwOTc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzVmNjZlNGVlMDg4Nzdk
YTJmYjkyNWU0MDdhYWM5OWI5MWRlMjM5Ny4uN2M2ZmJiYTM2MzRjMDU2NTk3ODJmYmM1NGEyYzhi
M2M3NjYzZTZiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDE3LTA4LTIxICBEYW5p
ZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBDbGVhbnVwIFRleHRQYWlu
dGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU3
ODIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1v
dmUgcmVkdW5kYW50IG1lbnRpb24gb2YgInRleHQiIGluIHRoZSBuYW1lIG9mIFRleHRQYWludGVy
IG1lbWJlciBmdW5jdGlvbnMsIGFkZCBzZXBhcmF0ZQorICAgICAgICBzZXR0ZXJzIGZvciBzZWxl
Y3Rpb24gYW5kIG5vbi1zZWxlY3Rpb24gc2hhZG93cywgYW5kIGRvIHNvbWUgb3RoZXIgbWlub3Ig
Y2xlYW51cHMuCisKKyAgICAgICAgKiByZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94OjpwYWludCk6IFVwZGF0ZSBjb2RlIGZvciByZW5h
bWVkIGZ1bmN0aW9ucy4KKyAgICAgICAgKiByZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0
aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpwYWludEZsb3cp
OiBEaXR0by4KKyAgICAgICAgKiByZW5kZXJpbmcvVGV4dFBhaW50ZXIuY3BwOiBJbmNsdWRlIFNo
YWRvd0RhdGEuaC4KKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0FwcGxpZXI6OlNoYWRvd0FwcGxp
ZXIpOiBVc2UgQysrMTEgYnJhY2UtaW5pdGlhbGl6YXRpb24gc3ludGF4LgorICAgICAgICAoV2Vi
Q29yZTo6U2hhZG93QXBwbGllcjo6aXNMYXN0U2hhZG93SXRlcmF0aW9uKTogTW92ZWQgZnJvbSBU
ZXh0UGFpbnRlci5oLgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93QXBwbGllcjo6c2hhZG93SXND
b21wbGV0ZWx5Q292ZXJlZEJ5VGV4dCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6VGV4dFBh
aW50ZXI6OnBhaW50VGV4dE9yRW1waGFzaXNNYXJrcyk6IFJlbmFtZWQ7IGZvcm1lcmx5IG5hbWVk
IGRyYXdUZXh0T3JFbXBoYXNpc01hcmtzLgorICAgICAgICAoV2ViQ29yZTo6VGV4dFBhaW50ZXI6
OnBhaW50VGV4dFdpdGhTaGFkb3dzKTogVXBkYXRlIGNvZGUgZm9yIHJlbmFtZWQgZnVuY3Rpb25z
LgorICAgICAgICAoV2ViQ29yZTo6VGV4dFBhaW50ZXI6OnBhaW50UmFuZ2UpOiBSZW5hbWVkOyBm
b3JtZXJseSBuYW1lZCBwYWludFRleHRJblJhbmdlLgorICAgICAgICAoV2ViQ29yZTo6VGV4dFBh
aW50ZXI6OnBhaW50KTogUmVuYW1lZDsgZm9ybWVybHkgbmFtZWQgcGFpbnRUZXh0LgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dFBhaW50ZXI6OmRyYXdUZXh0T3JFbXBoYXNpc01hcmtzKTogUmVuYW1l
ZCB0byBwYWludFRleHRPckVtcGhhc2lzTWFya3MoKSB0byBtYXRjaAorICAgICAgICB0aGUgbmFt
aW5nIGNvbnZlbnRpb24gb2YgYWxsIHRoZSBvdGhlciBwYWludCBmdW5jdGlvbnMgaW4gdGhpcyBj
bGFzcy4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRQYWludGVyOjpwYWludFRleHRJblJhbmdlKTog
UmVuYW1lZCB0byBwYWludFJhbmdlLgorICAgICAgICAoV2ViQ29yZTo6VGV4dFBhaW50ZXI6OnBh
aW50VGV4dCk6IFJlbmFtZWQgdG8gcGFpbnQuCisgICAgICAgICogcmVuZGVyaW5nL1RleHRQYWlu
dGVyLmg6IEZvcndhcmQgZGVjbGFyZSBTaGFkb3dEYXRhLgorICAgICAgICAoV2ViQ29yZTo6VGV4
dFBhaW50ZXI6OnNldFN0eWxlKTogUmVuYW1lZDsgZm9ybWVybHkgbmFtZWQgc2V0VGV4dFBhaW50
U3R5bGUuCisgICAgICAgIChXZWJDb3JlOjpUZXh0UGFpbnRlcjo6c2V0U2VsZWN0aW9uU3R5bGUp
OiBSZW5hbWVkOyBmb3JtZXJseSBuYW1lZCBzZXRTZWxlY3Rpb25QYWludFN0eWxlLgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dFBhaW50ZXI6OnNldFNoYWRvdyk6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dFBhaW50ZXI6OnNldFNlbGVjdGlvblNoYWRvdyk6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6VGV4dFBhaW50ZXI6OnNldEVtcGhhc2lzTWFyayk6IFJlbmFtZWQ7IGZvcm1lcmx5
IG5hbWVkIGFkZEVtcGhhc2lzLiAKKyAgICAgICAgKFdlYkNvcmU6OlRleHRQYWludGVyOjpzZXRU
ZXh0UGFpbnRTdHlsZSk6IFJlbmFtZWQgdG8gc2V0U3R5bGUuCisgICAgICAgIChXZWJDb3JlOjpU
ZXh0UGFpbnRlcjo6c2V0U2VsZWN0aW9uUGFpbnRTdHlsZSk6IFJlbmFtZWQgdG8gc2V0U2VsZWN0
aW9uU3R5bGUuCisgICAgICAgIChXZWJDb3JlOjpUZXh0UGFpbnRlcjo6YWRkRW1waGFzaXMpOiBS
ZW5hbWVkIHRvIHNldEVtcGhhc2lzTWFyay4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRQYWludGVy
OjphZGRUZXh0U2hhZG93KTogU3BsaXQgZnVuY3Rpb25hbGl0eSBpbnRvIHNldFNoYWRvdyBhbmQg
c2V0U2VsZWN0aW9uU2hhZG93LgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93QXBwbGllcjo6aXNM
YXN0U2hhZG93SXRlcmF0aW9uKTogTW92ZWQgdG8gVGV4dFBhaW50ZXIuY3BwLgorICAgICAgICAo
V2ViQ29yZTo6U2hhZG93QXBwbGllcjo6c2hhZG93SXNDb21wbGV0ZWx5Q292ZXJlZEJ5VGV4dCk6
IERpdHRvLgorCiAyMDE3LTA4LTIxICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbUGF5bWVudCBSZXF1ZXN0XSBJbXBsZW1lbnQgdGhlIFBheW1lbnRSZXF1ZXN0IGNv
bnN0cnVjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4
dEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKaW5k
ZXggZDc2ZmUwOTdjYTYyNmNjNjgyZmIzODM4MTQzYzBlOGU3OTNhYTc1Yy4uMjQ3NzRjNTYwY2M3
ZTcyNDlmZmViMDZjNDBhNzFkZDI0ODlmZmJjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9JbmxpbmVUZXh0Qm94LmNwcApAQCAtNTQ3LDExICs1NDcsMTIgQEAgdm9pZCBJbmxpbmVUZXh0
Qm94OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50
T2Zmc2V0LAogCiAgICAgVGV4dFBhaW50ZXIgdGV4dFBhaW50ZXIoY29udGV4dCk7CiAgICAgdGV4
dFBhaW50ZXIuc2V0Rm9udChmb250KTsKLSAgICB0ZXh0UGFpbnRlci5zZXRUZXh0UGFpbnRTdHls
ZSh0ZXh0UGFpbnRTdHlsZSk7Ci0gICAgdGV4dFBhaW50ZXIuc2V0U2VsZWN0aW9uUGFpbnRTdHls
ZShzZWxlY3Rpb25QYWludFN0eWxlKTsKKyAgICB0ZXh0UGFpbnRlci5zZXRTdHlsZSh0ZXh0UGFp
bnRTdHlsZSk7CisgICAgdGV4dFBhaW50ZXIuc2V0U2VsZWN0aW9uU3R5bGUoc2VsZWN0aW9uUGFp
bnRTdHlsZSk7CiAgICAgdGV4dFBhaW50ZXIuc2V0SXNIb3Jpem9udGFsKGlzSG9yaXpvbnRhbCgp
KTsKLSAgICB0ZXh0UGFpbnRlci5hZGRUZXh0U2hhZG93KHRleHRTaGFkb3csIHNlbGVjdGlvblNo
YWRvdyk7Ci0gICAgdGV4dFBhaW50ZXIuYWRkRW1waGFzaXMoZW1waGFzaXNNYXJrLCBlbXBoYXNp
c01hcmtPZmZzZXQsIGNvbWJpbmVkVGV4dCk7CisgICAgdGV4dFBhaW50ZXIuc2V0U2hhZG93KHRl
eHRTaGFkb3cpOworICAgIHRleHRQYWludGVyLnNldFNlbGVjdGlvblNoYWRvdyhzZWxlY3Rpb25T
aGFkb3cpOworICAgIHRleHRQYWludGVyLnNldEVtcGhhc2lzTWFyayhlbXBoYXNpc01hcmssIGVt
cGhhc2lzTWFya09mZnNldCwgY29tYmluZWRUZXh0KTsKIAogICAgIGF1dG8gZHJhZ2dlZENvbnRl
bnRSYW5nZXMgPSByZW5kZXJlcigpLmRyYWdnZWRDb250ZW50UmFuZ2VzQmV0d2Vlbk9mZnNldHMo
bV9zdGFydCwgbV9zdGFydCArIG1fbGVuKTsKICAgICBpZiAoIWRyYWdnZWRDb250ZW50UmFuZ2Vz
LmlzRW1wdHkoKSAmJiAhcGFpbnRTZWxlY3RlZFRleHRPbmx5ICYmICFwYWludE5vblNlbGVjdGVk
VGV4dE9ubHkpIHsKQEAgLTU2NCwxOSArNTY1LDE5IEBAIHZvaWQgSW5saW5lVGV4dEJveDo6cGFp
bnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwK
ICAgICAgICAgICAgIGN1cnJlbnRFbmQgPSBzdGQ6Om1pbihkcmFnZ2VkQ29udGVudFJhbmdlc1tp
bmRleF0uc2Vjb25kIC0gbV9zdGFydCwgbGVuZ3RoKTsKIAogICAgICAgICAgICAgaWYgKHByZXZp
b3VzRW5kIDwgY3VycmVudFN0YXJ0KQotICAgICAgICAgICAgICAgIHRleHRQYWludGVyLnBhaW50
VGV4dEluUmFuZ2UodGV4dFJ1biwgYm94UmVjdCwgdGV4dE9yaWdpbiwgcHJldmlvdXNFbmQsIGN1
cnJlbnRTdGFydCk7CisgICAgICAgICAgICAgICAgdGV4dFBhaW50ZXIucGFpbnRSYW5nZSh0ZXh0
UnVuLCBib3hSZWN0LCB0ZXh0T3JpZ2luLCBwcmV2aW91c0VuZCwgY3VycmVudFN0YXJ0KTsKIAog
ICAgICAgICAgICAgaWYgKGN1cnJlbnRTdGFydCA8IGN1cnJlbnRFbmQpIHsKICAgICAgICAgICAg
ICAgICBjb250ZXh0LnNhdmUoKTsKICAgICAgICAgICAgICAgICBjb250ZXh0LnNldEFscGhhKDAu
MjUpOwotICAgICAgICAgICAgICAgIHRleHRQYWludGVyLnBhaW50VGV4dEluUmFuZ2UodGV4dFJ1
biwgYm94UmVjdCwgdGV4dE9yaWdpbiwgY3VycmVudFN0YXJ0LCBjdXJyZW50RW5kKTsKKyAgICAg
ICAgICAgICAgICB0ZXh0UGFpbnRlci5wYWludFJhbmdlKHRleHRSdW4sIGJveFJlY3QsIHRleHRP
cmlnaW4sIGN1cnJlbnRTdGFydCwgY3VycmVudEVuZCk7CiAgICAgICAgICAgICAgICAgY29udGV4
dC5yZXN0b3JlKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgaWYgKGN1cnJl
bnRFbmQgPCBsZW5ndGgpCi0gICAgICAgICAgICB0ZXh0UGFpbnRlci5wYWludFRleHRJblJhbmdl
KHRleHRSdW4sIGJveFJlY3QsIHRleHRPcmlnaW4sIGN1cnJlbnRFbmQsIGxlbmd0aCk7CisgICAg
ICAgICAgICB0ZXh0UGFpbnRlci5wYWludFJhbmdlKHRleHRSdW4sIGJveFJlY3QsIHRleHRPcmln
aW4sIGN1cnJlbnRFbmQsIGxlbmd0aCk7CiAgICAgfSBlbHNlCi0gICAgICAgIHRleHRQYWludGVy
LnBhaW50VGV4dCh0ZXh0UnVuLCBsZW5ndGgsIGJveFJlY3QsIHRleHRPcmlnaW4sIHNlbGVjdGlv
blN0YXJ0LCBzZWxlY3Rpb25FbmQsIHBhaW50U2VsZWN0ZWRUZXh0T25seSwgcGFpbnRTZWxlY3Rl
ZFRleHRTZXBhcmF0ZWx5LCBwYWludE5vblNlbGVjdGVkVGV4dE9ubHkpOworICAgICAgICB0ZXh0
UGFpbnRlci5wYWludCh0ZXh0UnVuLCBsZW5ndGgsIGJveFJlY3QsIHRleHRPcmlnaW4sIHNlbGVj
dGlvblN0YXJ0LCBzZWxlY3Rpb25FbmQsIHBhaW50U2VsZWN0ZWRUZXh0T25seSwgcGFpbnRTZWxl
Y3RlZFRleHRTZXBhcmF0ZWx5LCBwYWludE5vblNlbGVjdGVkVGV4dE9ubHkpOwogCiAgICAgLy8g
UGFpbnQgZGVjb3JhdGlvbnMKICAgICBUZXh0RGVjb3JhdGlvbiB0ZXh0RGVjb3JhdGlvbnMgPSBs
aW5lU3R5bGUudGV4dERlY29yYXRpb25zSW5FZmZlY3QoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcAppbmRleCA0MGY0
NzUzYWJlYmVmZWIwNGM4YzlkZjUxYWQxMWVlZDY4MGI4MDgzLi4wNmI2MWNjNzU2NWYxYjlkMjdl
MGZmMjUwOGFjMDYyODYzN2RjNjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3BwCkBAIC04MSwxMiArODEsMTIgQEAg
dm9pZCBwYWludEZsb3coY29uc3QgUmVuZGVyQmxvY2tGbG93JiBmbG93LCBjb25zdCBMYXlvdXQm
IGxheW91dCwgUGFpbnRJbmZvJiBwYWkKIAogICAgIFRleHRQYWludGVyIHRleHRQYWludGVyKHBh
aW50SW5mby5jb250ZXh0KCkpOwogICAgIHRleHRQYWludGVyLnNldEZvbnQoc3R5bGUuZm9udENh
c2NhZGUoKSk7Ci0gICAgdGV4dFBhaW50ZXIuc2V0VGV4dFBhaW50U3R5bGUoY29tcHV0ZVRleHRQ
YWludFN0eWxlKGZsb3cuZnJhbWUoKSwgc3R5bGUsIHBhaW50SW5mbykpOworICAgIHRleHRQYWlu
dGVyLnNldFN0eWxlKGNvbXB1dGVUZXh0UGFpbnRTdHlsZShmbG93LmZyYW1lKCksIHN0eWxlLCBw
YWludEluZm8pKTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxTaGFkb3dEYXRhPiBkZWJ1Z1NoYWRv
dyA9IG51bGxwdHI7CiAgICAgaWYgKGZsb3cuc2V0dGluZ3MoKS5zaW1wbGVMaW5lTGF5b3V0RGVi
dWdCb3JkZXJzRW5hYmxlZCgpKSB7CiAgICAgICAgIGRlYnVnU2hhZG93ID0gc3RkOjptYWtlX3Vu
aXF1ZTxTaGFkb3dEYXRhPihJbnRQb2ludCgwLCAwKSwgMTAsIDIwLCBTaGFkb3dTdHlsZTo6Tm9y
bWFsLCB0cnVlLCBDb2xvcigwLCAyNTUsIDAsIDIwMCkpOwotICAgICAgICB0ZXh0UGFpbnRlci5h
ZGRUZXh0U2hhZG93KGRlYnVnU2hhZG93LmdldCgpLCBudWxscHRyKTsKKyAgICAgICAgdGV4dFBh
aW50ZXIuc2V0U2hhZG93KGRlYnVnU2hhZG93LmdldCgpKTsKICAgICB9CiAKICAgICBzdGQ6Om9w
dGlvbmFsPFRleHREZWNvcmF0aW9uUGFpbnRlcj4gdGV4dERlY29yYXRpb25QYWludGVyOwpAQCAt
MTIwLDcgKzEyMCw3IEBAIHZvaWQgcGFpbnRGbG93KGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgZmxv
dywgY29uc3QgTGF5b3V0JiBsYXlvdXQsIFBhaW50SW5mbyYgcGFpCiAgICAgICAgIFRleHRSdW4g
dGV4dFJ1bihydW4uaGFzSHlwaGVuKCkgPyB0ZXh0V2l0aEh5cGhlbiA6IHJ1bi50ZXh0KCksIDAs
IHJ1bi5leHBhbnNpb24oKSwgcnVuLmV4cGFuc2lvbkJlaGF2aW9yKCkpOwogICAgICAgICB0ZXh0
UnVuLnNldFRhYlNpemUoIXN0eWxlLmNvbGxhcHNlV2hpdGVTcGFjZSgpLCBzdHlsZS50YWJTaXpl
KCkpOwogICAgICAgICBGbG9hdFBvaW50IHRleHRPcmlnaW4gPSBGbG9hdFBvaW50KHJlY3QueCgp
ICsgcGFpbnRPZmZzZXQueCgpLCByb3VuZFRvRGV2aWNlUGl4ZWwocnVuLmJhc2VsaW5lUG9zaXRp
b24oKSArIHBhaW50T2Zmc2V0LnkoKSwgZGV2aWNlU2NhbGVGYWN0b3IpKTsKLSAgICAgICAgdGV4
dFBhaW50ZXIucGFpbnRUZXh0KHRleHRSdW4sIHRleHRSdW4ubGVuZ3RoKCksIHJlY3QsIHRleHRP
cmlnaW4pOworICAgICAgICB0ZXh0UGFpbnRlci5wYWludCh0ZXh0UnVuLCB0ZXh0UnVuLmxlbmd0
aCgpLCByZWN0LCB0ZXh0T3JpZ2luKTsKICAgICAgICAgaWYgKHRleHREZWNvcmF0aW9uUGFpbnRl
cikgewogICAgICAgICAgICAgdGV4dERlY29yYXRpb25QYWludGVyLT5zZXRXaWR0aChyZWN0Lndp
ZHRoKCkpOwogICAgICAgICAgICAgdGV4dERlY29yYXRpb25QYWludGVyLT5wYWludFRleHREZWNv
cmF0aW9uKHRleHRSdW4sIHRleHRPcmlnaW4sIHJlY3QubG9jYXRpb24oKSArIHBhaW50T2Zmc2V0
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBhaW50ZXIuY3BwCmluZGV4IDIxOTE3N2Y2
ZjZjMjUwODRjZTI2YmQxNjExMTc3YTViNjNlNDc2NDguLjYwZTkyMGVhZjdlZDM0YmQ0NjRkMmY5
MjU4NWZlYTdhYzVmNTMzODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9U
ZXh0UGFpbnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWludGVy
LmNwcApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBr
ZGUub3JnKQogICogKEMpIDIwMDAgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIw
MTEsIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDA0LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCkBAIC0yNiwxNyArMjYsMTggQEAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRl
eHQuaCIKICNpbmNsdWRlICJJbmxpbmVUZXh0Qm94LmgiCiAjaW5jbHVkZSAiUmVuZGVyQ29tYmlu
ZVRleHQuaCIKKyNpbmNsdWRlICJTaGFkb3dEYXRhLmgiCiAjaW5jbHVkZSA8d3RmL05ldmVyRGVz
dHJveWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU2hhZG93QXBwbGllcjo6U2hhZG93
QXBwbGllcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IFNoYWRvd0RhdGEqIHNoYWRv
dywgY29uc3QgRmxvYXRSZWN0JiB0ZXh0UmVjdCwgYm9vbCBsYXN0U2hhZG93SXRlcmF0aW9uU2hv
dWxkRHJhd1RleHQsIGJvb2wgb3BhcXVlLCBGb250T3JpZW50YXRpb24gb3JpZW50YXRpb24pCi0g
ICAgOiBtX2NvbnRleHQoY29udGV4dCkKLSAgICAsIG1fc2hhZG93KHNoYWRvdykKLSAgICAsIG1f
b25seURyYXdzU2hhZG93KCFpc0xhc3RTaGFkb3dJdGVyYXRpb24oKSB8fCAhbGFzdFNoYWRvd0l0
ZXJhdGlvblNob3VsZERyYXdUZXh0KQotICAgICwgbV9hdm9pZERyYXdpbmdTaGFkb3coc2hhZG93
SXNDb21wbGV0ZWx5Q292ZXJlZEJ5VGV4dChvcGFxdWUpKQotICAgICwgbV9ub3RoaW5nVG9EcmF3
KHNoYWRvdyAmJiBtX2F2b2lkRHJhd2luZ1NoYWRvdyAmJiBtX29ubHlEcmF3c1NoYWRvdykKLSAg
ICAsIG1fZGlkU2F2ZUNvbnRleHQoZmFsc2UpCisgICAgOiBtX2NvbnRleHQgeyBjb250ZXh0IH0K
KyAgICAsIG1fc2hhZG93IHsgc2hhZG93IH0KKyAgICAsIG1fb25seURyYXdzU2hhZG93IHsgIWlz
TGFzdFNoYWRvd0l0ZXJhdGlvbigpIHx8ICFsYXN0U2hhZG93SXRlcmF0aW9uU2hvdWxkRHJhd1Rl
eHQgfQorICAgICwgbV9hdm9pZERyYXdpbmdTaGFkb3cgeyBzaGFkb3dJc0NvbXBsZXRlbHlDb3Zl
cmVkQnlUZXh0KG9wYXF1ZSkgfQorICAgICwgbV9ub3RoaW5nVG9EcmF3IHsgc2hhZG93ICYmIG1f
YXZvaWREcmF3aW5nU2hhZG93ICYmIG1fb25seURyYXdzU2hhZG93IH0KKyAgICAsIG1fZGlkU2F2
ZUNvbnRleHQgeyBmYWxzZSB9CiB7CiAgICAgaWYgKCFzaGFkb3cgfHwgbV9ub3RoaW5nVG9EcmF3
KSB7CiAgICAgICAgIG1fc2hhZG93ID0gbnVsbHB0cjsKQEAgLTY4LDYgKzY5LDE2IEBAIFNoYWRv
d0FwcGxpZXI6OlNoYWRvd0FwcGxpZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBT
aGFkb3dEYXRhKiBzaGFkb3csCiAgICAgICAgIGNvbnRleHQuc2V0U2hhZG93KHNoYWRvd09mZnNl
dCwgc2hhZG93UmFkaXVzLCBzaGFkb3dDb2xvcik7CiB9CiAKK2lubGluZSBib29sIFNoYWRvd0Fw
cGxpZXI6OmlzTGFzdFNoYWRvd0l0ZXJhdGlvbigpCit7CisgICAgcmV0dXJuIG1fc2hhZG93ICYm
ICFtX3NoYWRvdy0+bmV4dCgpOworfQorCitpbmxpbmUgYm9vbCBTaGFkb3dBcHBsaWVyOjpzaGFk
b3dJc0NvbXBsZXRlbHlDb3ZlcmVkQnlUZXh0KGJvb2wgdGV4dElzT3BhcXVlKQoreworICAgIHJl
dHVybiB0ZXh0SXNPcGFxdWUgJiYgbV9zaGFkb3cgJiYgbV9zaGFkb3ctPmxvY2F0aW9uKCkuaXNa
ZXJvKCkgJiYgIW1fc2hhZG93LT5yYWRpdXMoKTsKK30KKwogU2hhZG93QXBwbGllcjo6flNoYWRv
d0FwcGxpZXIoKQogewogICAgIGlmICghbV9zaGFkb3cpCkBAIC04Myw3ICs5NCw3IEBAIFRleHRQ
YWludGVyOjpUZXh0UGFpbnRlcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiB7CiB9CiAKLXZv
aWQgVGV4dFBhaW50ZXI6OmRyYXdUZXh0T3JFbXBoYXNpc01hcmtzKGNvbnN0IEZvbnRDYXNjYWRl
JiBmb250LCBjb25zdCBUZXh0UnVuJiB0ZXh0UnVuLCBjb25zdCBBdG9taWNTdHJpbmcmIGVtcGhh
c2lzTWFyaywKK3ZvaWQgVGV4dFBhaW50ZXI6OnBhaW50VGV4dE9yRW1waGFzaXNNYXJrcyhjb25z
dCBGb250Q2FzY2FkZSYgZm9udCwgY29uc3QgVGV4dFJ1biYgdGV4dFJ1biwgY29uc3QgQXRvbWlj
U3RyaW5nJiBlbXBoYXNpc01hcmssCiAgICAgZmxvYXQgZW1waGFzaXNNYXJrT2Zmc2V0LCBjb25z
dCBGbG9hdFBvaW50JiB0ZXh0T3JpZ2luLCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQg
ZW5kT2Zmc2V0KQogewogICAgIEFTU0VSVChzdGFydE9mZnNldCA8IGVuZE9mZnNldCk7CkBAIC05
Nyw3ICsxMDgsNyBAQCB2b2lkIFRleHRQYWludGVyOjpwYWludFRleHRXaXRoU2hhZG93cyhjb25z
dCBTaGFkb3dEYXRhKiBzaGFkb3csIGNvbnN0IEZvbnRDYXNjYQogICAgIHVuc2lnbmVkIHN0YXJ0
T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQsIGNvbnN0IEF0b21pY1N0cmluZyYgZW1waGFzaXNN
YXJrLCBmbG9hdCBlbXBoYXNpc01hcmtPZmZzZXQsIGJvb2wgc3Ryb2tlZCkKIHsKICAgICBpZiAo
IXNoYWRvdykgewotICAgICAgICBkcmF3VGV4dE9yRW1waGFzaXNNYXJrcyhmb250LCB0ZXh0UnVu
LCBlbXBoYXNpc01hcmssIGVtcGhhc2lzTWFya09mZnNldCwgdGV4dE9yaWdpbiwgc3RhcnRPZmZz
ZXQsIGVuZE9mZnNldCk7CisgICAgICAgIHBhaW50VGV4dE9yRW1waGFzaXNNYXJrcyhmb250LCB0
ZXh0UnVuLCBlbXBoYXNpc01hcmssIGVtcGhhc2lzTWFya09mZnNldCwgdGV4dE9yaWdpbiwgc3Rh
cnRPZmZzZXQsIGVuZE9mZnNldCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEwOSwx
NCArMTIwLDE0IEBAIHZvaWQgVGV4dFBhaW50ZXI6OnBhaW50VGV4dFdpdGhTaGFkb3dzKGNvbnN0
IFNoYWRvd0RhdGEqIHNoYWRvdywgY29uc3QgRm9udENhc2NhCiAgICAgd2hpbGUgKHNoYWRvdykg
ewogICAgICAgICBTaGFkb3dBcHBsaWVyIHNoYWRvd0FwcGxpZXIobV9jb250ZXh0LCBzaGFkb3cs
IGJveFJlY3QsIGxhc3RTaGFkb3dJdGVyYXRpb25TaG91bGREcmF3VGV4dCwgb3BhcXVlLCBtX3Rl
eHRCb3hJc0hvcml6b250YWwgPyBIb3Jpem9udGFsIDogVmVydGljYWwpOwogICAgICAgICBpZiAo
IXNoYWRvd0FwcGxpZXIubm90aGluZ1RvRHJhdygpKQotICAgICAgICAgICAgZHJhd1RleHRPckVt
cGhhc2lzTWFya3MoZm9udCwgdGV4dFJ1biwgZW1waGFzaXNNYXJrLCBlbXBoYXNpc01hcmtPZmZz
ZXQsIHRleHRPcmlnaW4gKyBzaGFkb3dBcHBsaWVyLmV4dHJhT2Zmc2V0KCksIHN0YXJ0T2Zmc2V0
LCBlbmRPZmZzZXQpOworICAgICAgICAgICAgcGFpbnRUZXh0T3JFbXBoYXNpc01hcmtzKGZvbnQs
IHRleHRSdW4sIGVtcGhhc2lzTWFyaywgZW1waGFzaXNNYXJrT2Zmc2V0LCB0ZXh0T3JpZ2luICsg
c2hhZG93QXBwbGllci5leHRyYU9mZnNldCgpLCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KTsKICAg
ICAgICAgc2hhZG93ID0gc2hhZG93LT5uZXh0KCk7CiAgICAgfQogCiAgICAgaWYgKCFsYXN0U2hh
ZG93SXRlcmF0aW9uU2hvdWxkRHJhd1RleHQpIHsKICAgICAgICAgaWYgKCFvcGFxdWUpCiAgICAg
ICAgICAgICBtX2NvbnRleHQuc2V0RmlsbENvbG9yKGZpbGxDb2xvcik7Ci0gICAgICAgIGRyYXdU
ZXh0T3JFbXBoYXNpc01hcmtzKGZvbnQsIHRleHRSdW4sIGVtcGhhc2lzTWFyaywgZW1waGFzaXNN
YXJrT2Zmc2V0LCB0ZXh0T3JpZ2luLCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KTsKKyAgICAgICAg
cGFpbnRUZXh0T3JFbXBoYXNpc01hcmtzKGZvbnQsIHRleHRSdW4sIGVtcGhhc2lzTWFyaywgZW1w
aGFzaXNNYXJrT2Zmc2V0LCB0ZXh0T3JpZ2luLCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KTsKICAg
ICB9CiB9CiAKQEAgLTE2OSwzNCArMTgwLDM0IEBAIHZvaWQgVGV4dFBhaW50ZXI6OnBhaW50VGV4
dEFuZEVtcGhhc2lzTWFya3NJZk5lZWRlZChjb25zdCBUZXh0UnVuJiB0ZXh0UnVuLCBjb25zCiAg
ICAgICAgIG1fY29udGV4dC5jb25jYXRDVE0ocm90YXRpb24oYm94UmVjdCwgQ291bnRlcmNsb2Nr
d2lzZSkpOwogfQogCi12b2lkIFRleHRQYWludGVyOjpwYWludFRleHRJblJhbmdlKGNvbnN0IFRl
eHRSdW4mIHRleHRSdW4sIGNvbnN0IEZsb2F0UmVjdCYgYm94UmVjdCwgY29uc3QgRmxvYXRQb2lu
dCYgdGV4dE9yaWdpbiwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGVuZCkKK3ZvaWQgVGV4dFBh
aW50ZXI6OnBhaW50UmFuZ2UoY29uc3QgVGV4dFJ1biYgdGV4dFJ1biwgY29uc3QgRmxvYXRSZWN0
JiBib3hSZWN0LCBjb25zdCBGbG9hdFBvaW50JiB0ZXh0T3JpZ2luLCB1bnNpZ25lZCBzdGFydCwg
dW5zaWduZWQgZW5kKQogewogICAgIEFTU0VSVChtX2ZvbnQpOwogICAgIEFTU0VSVChzdGFydCA8
IGVuZCk7CiAKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIobV9jb250
ZXh0LCBtX3RleHRQYWludFN0eWxlLnN0cm9rZVdpZHRoID4gMCk7Ci0gICAgdXBkYXRlR3JhcGhp
Y3NDb250ZXh0KG1fY29udGV4dCwgbV90ZXh0UGFpbnRTdHlsZSk7Ci0gICAgcGFpbnRUZXh0QW5k
RW1waGFzaXNNYXJrc0lmTmVlZGVkKHRleHRSdW4sIGJveFJlY3QsIHRleHRPcmlnaW4sIHN0YXJ0
LCBlbmQsIG1fdGV4dFBhaW50U3R5bGUsIG1fdGV4dFNoYWRvdyk7CisgICAgR3JhcGhpY3NDb250
ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKG1fY29udGV4dCwgbV9zdHlsZS5zdHJva2VXaWR0aCA+
IDApOworICAgIHVwZGF0ZUdyYXBoaWNzQ29udGV4dChtX2NvbnRleHQsIG1fc3R5bGUpOworICAg
IHBhaW50VGV4dEFuZEVtcGhhc2lzTWFya3NJZk5lZWRlZCh0ZXh0UnVuLCBib3hSZWN0LCB0ZXh0
T3JpZ2luLCBzdGFydCwgZW5kLCBtX3N0eWxlLCBtX3NoYWRvdyk7CiB9CiAgICAgCi12b2lkIFRl
eHRQYWludGVyOjpwYWludFRleHQoY29uc3QgVGV4dFJ1biYgdGV4dFJ1biwgdW5zaWduZWQgbGVu
Z3RoLCBjb25zdCBGbG9hdFJlY3QmIGJveFJlY3QsIGNvbnN0IEZsb2F0UG9pbnQmIHRleHRPcmln
aW4sIHVuc2lnbmVkIHNlbGVjdGlvblN0YXJ0LCB1bnNpZ25lZCBzZWxlY3Rpb25FbmQsCit2b2lk
IFRleHRQYWludGVyOjpwYWludChjb25zdCBUZXh0UnVuJiB0ZXh0UnVuLCB1bnNpZ25lZCBsZW5n
dGgsIGNvbnN0IEZsb2F0UmVjdCYgYm94UmVjdCwgY29uc3QgRmxvYXRQb2ludCYgdGV4dE9yaWdp
biwgdW5zaWduZWQgc2VsZWN0aW9uU3RhcnQsIHVuc2lnbmVkIHNlbGVjdGlvbkVuZCwKICAgICBi
b29sIHBhaW50U2VsZWN0ZWRUZXh0T25seSwgYm9vbCBwYWludFNlbGVjdGVkVGV4dFNlcGFyYXRl
bHksIGJvb2wgcGFpbnROb25TZWxlY3RlZFRleHRPbmx5KQogewogICAgIEFTU0VSVChtX2ZvbnQp
OwogICAgIGlmICghcGFpbnRTZWxlY3RlZFRleHRPbmx5KSB7CiAgICAgICAgIC8vIEZvciBzdHJv
a2VkIHBhaW50aW5nLCB3ZSBoYXZlIHRvIGNoYW5nZSB0aGUgdGV4dCBkcmF3aW5nIG1vZGUuIEl0
J3MgcHJvYmFibHkgZGFuZ2Vyb3VzIHRvIGxlYXZlIHRoYXQgbXV0YXRlZCBhcyBhIHNpZGUKICAg
ICAgICAgLy8gZWZmZWN0LCBzbyBvbmx5IHdoZW4gd2Uga25vdyB3ZSdyZSBzdHJva2luZywgZG8g
YSBzYXZlL3Jlc3RvcmUuCi0gICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVT
YXZlcihtX2NvbnRleHQsIG1fdGV4dFBhaW50U3R5bGUuc3Ryb2tlV2lkdGggPiAwKTsKLSAgICAg
ICAgdXBkYXRlR3JhcGhpY3NDb250ZXh0KG1fY29udGV4dCwgbV90ZXh0UGFpbnRTdHlsZSk7Cisg
ICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihtX2NvbnRleHQsIG1f
c3R5bGUuc3Ryb2tlV2lkdGggPiAwKTsKKyAgICAgICAgdXBkYXRlR3JhcGhpY3NDb250ZXh0KG1f
Y29udGV4dCwgbV9zdHlsZSk7CiAgICAgICAgIGJvb2wgZnVsbFBhaW50ID0gIXBhaW50U2VsZWN0
ZWRUZXh0U2VwYXJhdGVseSB8fCBzZWxlY3Rpb25FbmQgPD0gc2VsZWN0aW9uU3RhcnQ7CiAgICAg
ICAgIGlmIChmdWxsUGFpbnQpCi0gICAgICAgICAgICBwYWludFRleHRBbmRFbXBoYXNpc01hcmtz
SWZOZWVkZWQodGV4dFJ1biwgYm94UmVjdCwgdGV4dE9yaWdpbiwgMCwgbGVuZ3RoLCBtX3RleHRQ
YWludFN0eWxlLCBtX3RleHRTaGFkb3cpOworICAgICAgICAgICAgcGFpbnRUZXh0QW5kRW1waGFz
aXNNYXJrc0lmTmVlZGVkKHRleHRSdW4sIGJveFJlY3QsIHRleHRPcmlnaW4sIDAsIGxlbmd0aCwg
bV9zdHlsZSwgbV9zaGFkb3cpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIC8vIFBhaW50
IHRoZSBiZWZvcmUgYW5kIGFmdGVyIHNlbGVjdGlvbiBwYXJ0cy4KICAgICAgICAgICAgIGlmIChz
ZWxlY3Rpb25TdGFydCA+IDApCi0gICAgICAgICAgICAgICAgcGFpbnRUZXh0QW5kRW1waGFzaXNN
YXJrc0lmTmVlZGVkKHRleHRSdW4sIGJveFJlY3QsIHRleHRPcmlnaW4sIDAsIHNlbGVjdGlvblN0
YXJ0LCBtX3RleHRQYWludFN0eWxlLCBtX3RleHRTaGFkb3cpOworICAgICAgICAgICAgICAgIHBh
aW50VGV4dEFuZEVtcGhhc2lzTWFya3NJZk5lZWRlZCh0ZXh0UnVuLCBib3hSZWN0LCB0ZXh0T3Jp
Z2luLCAwLCBzZWxlY3Rpb25TdGFydCwgbV9zdHlsZSwgbV9zaGFkb3cpOwogICAgICAgICAgICAg
aWYgKHNlbGVjdGlvbkVuZCA8IGxlbmd0aCkKLSAgICAgICAgICAgICAgICBwYWludFRleHRBbmRF
bXBoYXNpc01hcmtzSWZOZWVkZWQodGV4dFJ1biwgYm94UmVjdCwgdGV4dE9yaWdpbiwgc2VsZWN0
aW9uRW5kLCBsZW5ndGgsIG1fdGV4dFBhaW50U3R5bGUsIG1fdGV4dFNoYWRvdyk7CisgICAgICAg
ICAgICAgICAgcGFpbnRUZXh0QW5kRW1waGFzaXNNYXJrc0lmTmVlZGVkKHRleHRSdW4sIGJveFJl
Y3QsIHRleHRPcmlnaW4sIHNlbGVjdGlvbkVuZCwgbGVuZ3RoLCBtX3N0eWxlLCBtX3NoYWRvdyk7
CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTIwNSw5ICsyMTYsOSBAQCB2b2lkIFRleHRQYWludGVy
OjpwYWludFRleHQoY29uc3QgVGV4dFJ1biYgdGV4dFJ1biwgdW5zaWduZWQgbGVuZ3RoLCBjb25z
dCBGbG9hdAogCiAgICAgLy8gUGFpbnQgb25seSB0aGUgdGV4dCB0aGF0IGlzIHNlbGVjdGVkLgog
ICAgIGlmICgocGFpbnRTZWxlY3RlZFRleHRPbmx5IHx8IHBhaW50U2VsZWN0ZWRUZXh0U2VwYXJh
dGVseSkgJiYgc2VsZWN0aW9uU3RhcnQgPCBzZWxlY3Rpb25FbmQpIHsKLSAgICAgICAgR3JhcGhp
Y3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKG1fY29udGV4dCwgbV9zZWxlY3Rpb25QYWlu
dFN0eWxlLnN0cm9rZVdpZHRoID4gMCk7Ci0gICAgICAgIHVwZGF0ZUdyYXBoaWNzQ29udGV4dCht
X2NvbnRleHQsIG1fc2VsZWN0aW9uUGFpbnRTdHlsZSk7Ci0gICAgICAgIHBhaW50VGV4dEFuZEVt
cGhhc2lzTWFya3NJZk5lZWRlZCh0ZXh0UnVuLCBib3hSZWN0LCB0ZXh0T3JpZ2luLCBzZWxlY3Rp
b25TdGFydCwgc2VsZWN0aW9uRW5kLCBtX3NlbGVjdGlvblBhaW50U3R5bGUsIG1fc2VsZWN0aW9u
U2hhZG93KTsKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKG1f
Y29udGV4dCwgbV9zZWxlY3Rpb25TdHlsZS5zdHJva2VXaWR0aCA+IDApOworICAgICAgICB1cGRh
dGVHcmFwaGljc0NvbnRleHQobV9jb250ZXh0LCBtX3NlbGVjdGlvblN0eWxlKTsKKyAgICAgICAg
cGFpbnRUZXh0QW5kRW1waGFzaXNNYXJrc0lmTmVlZGVkKHRleHRSdW4sIGJveFJlY3QsIHRleHRP
cmlnaW4sIHNlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25FbmQsIG1fc2VsZWN0aW9uU3R5bGUsIG1f
c2VsZWN0aW9uU2hhZG93KTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9UZXh0UGFpbnRlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQ
YWludGVyLmgKaW5kZXggYWJkOGI0NzZlYzA1ZTVlYTIyZjY2YzVkZGY3MmY2MDhjYWQxMzQ4Ny4u
M2I4MTQ3M2NjODI5MjkzN2ZkY2NiMGYwOGY5YjQ0NDlmNWFlMTMwNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWludGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1RleHRQYWludGVyLmgKQEAgLTEsNyArMSw3IEBACiAvKgogICogKEMpIDE5OTkg
TGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAqIChDKSAyMDAwIERpcmsgTXVlbGxlciAobXVl
bGxlckBrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAy
MDA4LCAyMDA5LCAyMDEwLCAyMDExLCAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjQsNyArMjQsNiBAQAogCiAjaW5j
bHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCi0jaW5jbHVk
ZSAiU2hhZG93RGF0YS5oIgogI2luY2x1ZGUgIlRleHRGbGFncy5oIgogI2luY2x1ZGUgIlRleHRQ
YWludFN0eWxlLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CkBAIC0zMyw2
ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRm9udENhc2NhZGU7CiBjbGFz
cyBSZW5kZXJDb21iaW5lVGV4dDsKK2NsYXNzIFNoYWRvd0RhdGE7CiBjbGFzcyBUZXh0UnVuOwog
CiBzdHJ1Y3QgVGV4dFBhaW50U3R5bGU7CkBAIC00OSwxOSArNDksMjQgQEAgY2xhc3MgVGV4dFBh
aW50ZXIgewogcHVibGljOgogICAgIFRleHRQYWludGVyKEdyYXBoaWNzQ29udGV4dCYpOwogICAg
IAotICAgIHZvaWQgc2V0VGV4dFBhaW50U3R5bGUoY29uc3QgVGV4dFBhaW50U3R5bGUmIHRleHRQ
YWludFN0eWxlKSB7IG1fdGV4dFBhaW50U3R5bGUgPSB0ZXh0UGFpbnRTdHlsZTsgfQotICAgIHZv
aWQgc2V0U2VsZWN0aW9uUGFpbnRTdHlsZShjb25zdCBUZXh0UGFpbnRTdHlsZSYgc2VsZWN0aW9u
UGFpbnRTdHlsZSkgeyBtX3NlbGVjdGlvblBhaW50U3R5bGUgPSBzZWxlY3Rpb25QYWludFN0eWxl
OyB9Ci0gICAgdm9pZCBzZXRJc0hvcml6b250YWwoYm9vbCBpc0hvcml6b250YWwpIHsgbV90ZXh0
Qm94SXNIb3Jpem9udGFsID0gaXNIb3Jpem9udGFsOyB9CisgICAgdm9pZCBzZXRTdHlsZShjb25z
dCBUZXh0UGFpbnRTdHlsZSYgdGV4dFBhaW50U3R5bGUpIHsgbV9zdHlsZSA9IHRleHRQYWludFN0
eWxlOyB9CisgICAgdm9pZCBzZXRTZWxlY3Rpb25TdHlsZShjb25zdCBUZXh0UGFpbnRTdHlsZSYg
c2VsZWN0aW9uUGFpbnRTdHlsZSkgeyBtX3NlbGVjdGlvblN0eWxlID0gc2VsZWN0aW9uUGFpbnRT
dHlsZTsgfQorCisgICAgdm9pZCBzZXRTaGFkb3coY29uc3QgU2hhZG93RGF0YSogc2hhZG93KSB7
IG1fc2hhZG93ID0gc2hhZG93OyB9CisgICAgdm9pZCBzZXRTZWxlY3Rpb25TaGFkb3coY29uc3Qg
U2hhZG93RGF0YSogc2VsZWN0aW9uU2hhZG93KSB7IG1fc2VsZWN0aW9uU2hhZG93ID0gc2VsZWN0
aW9uU2hhZG93OyB9CisKICAgICB2b2lkIHNldEZvbnQoY29uc3QgRm9udENhc2NhZGUmIGZvbnQp
IHsgbV9mb250ID0gJmZvbnQ7IH0KLSAgICB2b2lkIGFkZEVtcGhhc2lzKGNvbnN0IEF0b21pY1N0
cmluZyYgZW1waGFzaXNNYXJrLCBmbG9hdCBlbXBoYXNpc01hcmtPZmZzZXQsIFJlbmRlckNvbWJp
bmVUZXh0Kik7Ci0gICAgdm9pZCBhZGRUZXh0U2hhZG93KGNvbnN0IFNoYWRvd0RhdGEqIHRleHRT
aGFkb3csIGNvbnN0IFNoYWRvd0RhdGEqIHNlbGVjdGlvblNoYWRvdyk7CiAKLSAgICB2b2lkIHBh
aW50VGV4dEluUmFuZ2UoY29uc3QgVGV4dFJ1biYsIGNvbnN0IEZsb2F0UmVjdCYgYm94UmVjdCwg
Y29uc3QgRmxvYXRQb2ludCYgdGV4dE9yaWdpbiwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGVu
ZCk7Ci0gICAgdm9pZCBwYWludFRleHQoY29uc3QgVGV4dFJ1biYsIHVuc2lnbmVkIGxlbmd0aCwg
Y29uc3QgRmxvYXRSZWN0JiBib3hSZWN0LCBjb25zdCBGbG9hdFBvaW50JiB0ZXh0T3JpZ2luLAor
ICAgIHZvaWQgc2V0SXNIb3Jpem9udGFsKGJvb2wgaXNIb3Jpem9udGFsKSB7IG1fdGV4dEJveElz
SG9yaXpvbnRhbCA9IGlzSG9yaXpvbnRhbDsgfQorCisgICAgdm9pZCBzZXRFbXBoYXNpc01hcmso
Y29uc3QgQXRvbWljU3RyaW5nJiBtYXJrLCBmbG9hdCBvZmZzZXQsIFJlbmRlckNvbWJpbmVUZXh0
Kik7CisKKyAgICB2b2lkIHBhaW50UmFuZ2UoY29uc3QgVGV4dFJ1biYsIGNvbnN0IEZsb2F0UmVj
dCYgYm94UmVjdCwgY29uc3QgRmxvYXRQb2ludCYgdGV4dE9yaWdpbiwgdW5zaWduZWQgc3RhcnQs
IHVuc2lnbmVkIGVuZCk7CisgICAgdm9pZCBwYWludChjb25zdCBUZXh0UnVuJiwgdW5zaWduZWQg
bGVuZ3RoLCBjb25zdCBGbG9hdFJlY3QmIGJveFJlY3QsIGNvbnN0IEZsb2F0UG9pbnQmIHRleHRP
cmlnaW4sCiAgICAgICAgIHVuc2lnbmVkIHNlbGVjdGlvblN0YXJ0ID0gMCwgdW5zaWduZWQgc2Vs
ZWN0aW9uRW5kID0gMCwgYm9vbCBwYWludFNlbGVjdGVkVGV4dE9ubHkgPSBmYWxzZSwgYm9vbCBw
YWludFNlbGVjdGVkVGV4dFNlcGFyYXRlbHkgPSBmYWxzZSwgYm9vbCBwYWludE5vblNlbGVjdGVk
VGV4dE9ubHkgPSBmYWxzZSk7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBkcmF3VGV4dE9yRW1waGFz
aXNNYXJrcyhjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBBdG9taWNT
dHJpbmcmIGVtcGhhc2lzTWFyaywgZmxvYXQgZW1waGFzaXNNYXJrT2Zmc2V0LAorICAgIHZvaWQg
cGFpbnRUZXh0T3JFbXBoYXNpc01hcmtzKGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgVGV4dFJ1
biYsIGNvbnN0IEF0b21pY1N0cmluZyYgZW1waGFzaXNNYXJrLCBmbG9hdCBlbXBoYXNpc01hcmtP
ZmZzZXQsCiAgICAgICAgIGNvbnN0IEZsb2F0UG9pbnQmIHRleHRPcmlnaW4sIHVuc2lnbmVkIHN0
YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOwogICAgIHZvaWQgcGFpbnRUZXh0V2l0aFNo
YWRvd3MoY29uc3QgU2hhZG93RGF0YSosIGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgVGV4dFJ1
biYsIGNvbnN0IEZsb2F0UmVjdCYgYm94UmVjdCwgY29uc3QgRmxvYXRQb2ludCYgdGV4dE9yaWdp
biwKICAgICAgICAgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCwgY29u
c3QgQXRvbWljU3RyaW5nJiBlbXBoYXNpc01hcmssIGZsb2F0IGVtcGhhc2lzTWFya09mZnNldCwg
Ym9vbCBzdHJva2VkKTsKQEAgLTcwLDkgKzc1LDkgQEAgcHJpdmF0ZToKIAogICAgIEdyYXBoaWNz
Q29udGV4dCYgbV9jb250ZXh0OwogICAgIGNvbnN0IEZvbnRDYXNjYWRlKiBtX2ZvbnQgeyBudWxs
cHRyIH07Ci0gICAgVGV4dFBhaW50U3R5bGUgbV90ZXh0UGFpbnRTdHlsZTsKLSAgICBUZXh0UGFp
bnRTdHlsZSBtX3NlbGVjdGlvblBhaW50U3R5bGU7Ci0gICAgY29uc3QgU2hhZG93RGF0YSogbV90
ZXh0U2hhZG93IHsgbnVsbHB0ciB9OworICAgIFRleHRQYWludFN0eWxlIG1fc3R5bGU7CisgICAg
VGV4dFBhaW50U3R5bGUgbV9zZWxlY3Rpb25TdHlsZTsKKyAgICBjb25zdCBTaGFkb3dEYXRhKiBt
X3NoYWRvdyB7IG51bGxwdHIgfTsKICAgICBjb25zdCBTaGFkb3dEYXRhKiBtX3NlbGVjdGlvblNo
YWRvdyB7IG51bGxwdHIgfTsKICAgICBBdG9taWNTdHJpbmcgbV9lbXBoYXNpc01hcms7CiAgICAg
UmVuZGVyQ29tYmluZVRleHQqIG1fY29tYmluZWRUZXh0IHsgbnVsbHB0ciB9OwpAQCAtODAsMTkg
Kzg1LDEzIEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3RleHRCb3hJc0hvcml6b250YWwgeyB0cnVl
IH07CiB9OwogCi1pbmxpbmUgdm9pZCBUZXh0UGFpbnRlcjo6YWRkRW1waGFzaXMoY29uc3QgQXRv
bWljU3RyaW5nJiBlbXBoYXNpc01hcmssIGZsb2F0IGVtcGhhc2lzTWFya09mZnNldCwgUmVuZGVy
Q29tYmluZVRleHQqIGNvbWJpbmVkVGV4dCkKK2lubGluZSB2b2lkIFRleHRQYWludGVyOjpzZXRF
bXBoYXNpc01hcmsoY29uc3QgQXRvbWljU3RyaW5nJiBtYXJrLCBmbG9hdCBvZmZzZXQsIFJlbmRl
ckNvbWJpbmVUZXh0KiBjb21iaW5lZFRleHQpCiB7Ci0gICAgbV9lbXBoYXNpc01hcmsgPSBlbXBo
YXNpc01hcms7Ci0gICAgbV9lbXBoYXNpc01hcmtPZmZzZXQgPSBlbXBoYXNpc01hcmtPZmZzZXQ7
CisgICAgbV9lbXBoYXNpc01hcmsgPSBtYXJrOworICAgIG1fZW1waGFzaXNNYXJrT2Zmc2V0ID0g
b2Zmc2V0OwogICAgIG1fY29tYmluZWRUZXh0ID0gY29tYmluZWRUZXh0OwogfQogCi1pbmxpbmUg
dm9pZCBUZXh0UGFpbnRlcjo6YWRkVGV4dFNoYWRvdyhjb25zdCBTaGFkb3dEYXRhKiB0ZXh0U2hh
ZG93LCBjb25zdCBTaGFkb3dEYXRhKiBzZWxlY3Rpb25TaGFkb3cpCi17Ci0gICAgbV90ZXh0U2hh
ZG93ID0gdGV4dFNoYWRvdzsKLSAgICBtX3NlbGVjdGlvblNoYWRvdyA9IHNlbGVjdGlvblNoYWRv
dzsKLX0KLQogY2xhc3MgU2hhZG93QXBwbGllciB7CiBwdWJsaWM6CiAgICAgU2hhZG93QXBwbGll
cihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBTaGFkb3dEYXRhKiwgY29uc3QgRmxvYXRSZWN0JiB0
ZXh0UmVjdCwgYm9vbCBsYXN0U2hhZG93SXRlcmF0aW9uU2hvdWxkRHJhd1RleHQgPSB0cnVlLCBi
b29sIG9wYXF1ZSA9IGZhbHNlLCBGb250T3JpZW50YXRpb24gPSBIb3Jpem9udGFsKTsKQEAgLTEx
NCwxNCArMTEzLDQgQEAgcHJpdmF0ZToKICAgICBib29sIG1fZGlkU2F2ZUNvbnRleHQgOiAxOwog
fTsKIAotaW5saW5lIGJvb2wgU2hhZG93QXBwbGllcjo6aXNMYXN0U2hhZG93SXRlcmF0aW9uKCkK
LXsKLSAgICByZXR1cm4gbV9zaGFkb3cgJiYgIW1fc2hhZG93LT5uZXh0KCk7Ci19Ci0KLWlubGlu
ZSBib29sIFNoYWRvd0FwcGxpZXI6OnNoYWRvd0lzQ29tcGxldGVseUNvdmVyZWRCeVRleHQoYm9v
bCB0ZXh0SXNPcGFxdWUpCi17Ci0gICAgcmV0dXJuIHRleHRJc09wYXF1ZSAmJiBtX3NoYWRvdyAm
JiBtX3NoYWRvdy0+bG9jYXRpb24oKSA9PSBJbnRQb2ludCgpICYmICFtX3NoYWRvdy0+cmFkaXVz
KCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>
<flag name="review"
          id="339028"
          type_id="1"
          status="+"
          setter="mmaxfield"
    />
          </attachment>
      

    </bug>

</bugzilla>