<?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>152148</bug_id>
          
          <creation_ts>2015-12-10 12:58:37 -0800</creation_ts>
          <short_desc>TextPainter: Add support for painting multiple text runs.</short_desc>
          <delta_ts>2015-12-10 15:37:57 -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>Layout and Rendering</component>
          <version>WebKit 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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1148278</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2015-12-10 12:58:37 -0800</bug_when>
    <thetext>This is in preparation for adding simple line layout as a client.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1148282</commentid>
    <comment_count>1</comment_count>
      <attachid>267123</attachid>
    <who name="alan">zalan</who>
    <bug_when>2015-12-10 13:03:10 -0800</bug_when>
    <thetext>Created attachment 267123
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1148285</commentid>
    <comment_count>2</comment_count>
      <attachid>267123</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-12-10 13:18:02 -0800</bug_when>
    <thetext>Comment on attachment 267123
Patch

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

&gt; Source/WebCore/ChangeLog:3
&gt; +        TextPainter: Add support for multiple text run paintings.

...for painting multiple text runs</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1148288</commentid>
    <comment_count>3</comment_count>
      <attachid>267126</attachid>
    <who name="alan">zalan</who>
    <bug_when>2015-12-10 13:23:58 -0800</bug_when>
    <thetext>Created attachment 267126
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1148306</commentid>
    <comment_count>4</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2015-12-10 15:31:04 -0800</bug_when>
    <thetext>Committed r193929: &lt;http://trac.webkit.org/changeset/193929&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267123</attachid>
            <date>2015-12-10 13:03:10 -0800</date>
            <delta_ts>2015-12-10 13:23:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152148-20151210130238.patch</filename>
            <type>text/plain</type>
            <size>22095</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkzODkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODhiMzBmZjM1MWViZTVi
OTM1MDVkYWIwZTk0MWIyMDkzNDVkMWU4Ny4uMDI2NTU2YWY0OWIzYzYzZDg0NWIzZDAxZjk5Nzgy
ZjBjZGMzNDgzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE1LTEyLTEwICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgVGV4dFBhaW50ZXI6IEFkZCBz
dXBwb3J0IGZvciBtdWx0aXBsZSB0ZXh0IHJ1biBwYWludGluZ3MuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTIxNDgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGlzIGluIHByZXBhcmF0aW9uIGZv
ciBhZGRpbmcgc2ltcGxlIGxpbmUgbGF5b3V0IGFzIGEgY2xpZW50LgorCisgICAgICAgIE5vIGNo
YW5nZSBpbiBmdW5jdGlvbmFsaXR5LgorCisgICAgICAgICogcmVuZGVyaW5nL0lubGluZVRleHRC
b3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZHJhd1NraXBJbmtVbmRlcmxpbmUpOiBEZWNvdXBs
ZSB1bmRlcmxpbmUgc2tpcHBpbmcgaW50ZXJzZWN0aW9uIGNhbGN1bGF0aW9uIGFuZCB0ZXh0IHBh
aW50ZXIuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94OjpwYWludCk6CisgICAgICAg
IChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94OjpwYWludERlY29yYXRpb24pOgorICAgICAgICAqIHJl
bmRlcmluZy9JbmxpbmVUZXh0Qm94Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1RleHRQYWludGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRQYWludGVyOjpUZXh0UGFpbnRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0UGFpbnRlcjo6cGFpbnRUZXh0V2l0aFNoYWRvd3MpOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dFBhaW50ZXI6OnBhaW50VGV4dEFuZEVtcGhhc2lzTWFya3NJZk5lZWRl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0UGFpbnRlcjo6cGFpbnRUZXh0KToKKyAgICAgICAg
KFdlYkNvcmU6OlRleHRQYWludGVyOjpkYXNoZXNGb3JJbnRlcnNlY3Rpb25zV2l0aFJlY3QpOiBE
ZWxldGVkLgorICAgICAgICAqIHJlbmRlcmluZy9UZXh0UGFpbnRlci5oOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dFBhaW50ZXI6OnNldFRleHRQYWludFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6
OlRleHRQYWludGVyOjpzZXRTZWxlY3Rpb25QYWludFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6
OlRleHRQYWludGVyOjpzZXRJc0hvcml6b250YWwpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFBh
aW50ZXI6OnNldEZvbnQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFBhaW50ZXI6OmFkZEVtcGhh
c2lzKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRQYWludGVyOjphZGRUZXh0U2hhZG93KToKKwog
MjAxNS0xMi0wOSAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFRl
eHRQYWludGVyOiBNYWtlIGJlZm9yZSBhbmQgYWZ0ZXIgc2VsZWN0aW9uIHBhaW50aW5nIG1vcmUg
ZXhwbGljaXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4
dEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKaW5k
ZXggZGFiYWQxYmU4MzdiZDk5ZWE5OTI3OWNkMjg1YzNkMWIzZWZlMzdmZS4uNWQyNmNiNzQ3NWM3
ODE3MTdkNmU3ZWU0NTExYTNiNGI1OTE3NWVkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9JbmxpbmVUZXh0Qm94LmNwcApAQCAtMTE5LDE0ICsxMTksMTQgQEAgc3RhdGljIERhc2hBcnJh
eSB0cmFuc2xhdGVJbnRlcnNlY3Rpb25Qb2ludHNUb1NraXBJbmtCb3VuZGFyaWVzKGNvbnN0IERh
c2hBcnJheSYKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1zdGF0aWMgdm9pZCBkcmF3U2tpcElu
a1VuZGVybGluZShUZXh0UGFpbnRlciYgdGV4dFBhaW50ZXIsIEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgRmxvYXRQb2ludCBsb2NhbE9yaWdpbiwgZmxvYXQgdW5kZXJsaW5lT2Zmc2V0LCBmbG9h
dCB3aWR0aCwgYm9vbCBpc1ByaW50aW5nLCBib29sIGRvdWJsZUxpbmVzKQorc3RhdGljIHZvaWQg
ZHJhd1NraXBJbmtVbmRlcmxpbmUoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGb250
Q2FzY2FkZSYgZm9udCwgY29uc3QgVGV4dFJ1biYgdGV4dFJ1biwgY29uc3QgRmxvYXRQb2ludCYg
dGV4dE9yaWdpbiwgY29uc3QgRmxvYXRQb2ludCYgbG9jYWxPcmlnaW4sCisgICAgZmxvYXQgdW5k
ZXJsaW5lT2Zmc2V0LCBmbG9hdCB3aWR0aCwgYm9vbCBpc1ByaW50aW5nLCBib29sIGRvdWJsZUxp
bmVzKQogewogICAgIEZsb2F0UG9pbnQgYWRqdXN0ZWRMb2NhbE9yaWdpbiA9IGxvY2FsT3JpZ2lu
OwogICAgIGFkanVzdGVkTG9jYWxPcmlnaW4ubW92ZSgwLCB1bmRlcmxpbmVPZmZzZXQpOwogICAg
IEZsb2F0UmVjdCB1bmRlcmxpbmVCb3VuZGluZ0JveCA9IGNvbnRleHQuY29tcHV0ZUxpbmVCb3Vu
ZHNGb3JUZXh0KGFkanVzdGVkTG9jYWxPcmlnaW4sIHdpZHRoLCBpc1ByaW50aW5nKTsKLSAgICBE
YXNoQXJyYXkgaW50ZXJzZWN0aW9ucyA9IHRleHRQYWludGVyLmRhc2hlc0ZvckludGVyc2VjdGlv
bnNXaXRoUmVjdCh1bmRlcmxpbmVCb3VuZGluZ0JveCk7CisgICAgRGFzaEFycmF5IGludGVyc2Vj
dGlvbnMgPSBmb250LmRhc2hlc0ZvckludGVyc2VjdGlvbnNXaXRoUmVjdCh0ZXh0UnVuLCB0ZXh0
T3JpZ2luLCB1bmRlcmxpbmVCb3VuZGluZ0JveCk7CiAgICAgRGFzaEFycmF5IGEgPSB0cmFuc2xh
dGVJbnRlcnNlY3Rpb25Qb2ludHNUb1NraXBJbmtCb3VuZGFyaWVzKGludGVyc2VjdGlvbnMsIHVu
ZGVybGluZUJvdW5kaW5nQm94LmhlaWdodCgpLCB3aWR0aCk7Ci0KICAgICBBU1NFUlQoIShhLnNp
emUoKSAlIDIpKTsKICAgICBjb250ZXh0LmRyYXdMaW5lc0ZvclRleHQoYWRqdXN0ZWRMb2NhbE9y
aWdpbiwgYSwgaXNQcmludGluZywgZG91YmxlTGluZXMpOwogfQpAQCAtNjEyLDggKzYxMiwxNSBA
QCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBM
YXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsCiAgICAgZWxzZQogICAgICAgICB0ZXh0T3JpZ2luLnNl
dFgocm91bmRUb0RldmljZVBpeGVsKExheW91dFVuaXQodGV4dE9yaWdpbi54KCkpLCByZW5kZXJl
cigpLmRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSkpOwogCi0gICAgVGV4dFBhaW50ZXIg
dGV4dFBhaW50ZXIoY29udGV4dCwgcGFpbnRTZWxlY3RlZFRleHRPbmx5LCBwYWludFNlbGVjdGVk
VGV4dFNlcGFyYXRlbHksIGZvbnQsIHNlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25FbmQsIGxlbmd0
aCwgZW1waGFzaXNNYXJrLCBjb21iaW5lZFRleHQsIHRleHRSdW4sIGJveFJlY3QsIHRleHRPcmln
aW4sIGVtcGhhc2lzTWFya09mZnNldCwgdGV4dFNoYWRvdywgc2VsZWN0aW9uU2hhZG93LCBpc0hv
cml6b250YWwoKSwgdGV4dFBhaW50U3R5bGUsIHNlbGVjdGlvblBhaW50U3R5bGUpOwotICAgIHRl
eHRQYWludGVyLnBhaW50VGV4dCgpOworICAgIFRleHRQYWludGVyIHRleHRQYWludGVyKGNvbnRl
eHQpOworICAgIHRleHRQYWludGVyLnNldEZvbnQoZm9udCk7CisgICAgdGV4dFBhaW50ZXIuc2V0
VGV4dFBhaW50U3R5bGUodGV4dFBhaW50U3R5bGUpOworICAgIHRleHRQYWludGVyLnNldFNlbGVj
dGlvblBhaW50U3R5bGUoc2VsZWN0aW9uUGFpbnRTdHlsZSk7CisgICAgdGV4dFBhaW50ZXIuc2V0
SXNIb3Jpem9udGFsKGlzSG9yaXpvbnRhbCgpKTsKKyAgICB0ZXh0UGFpbnRlci5hZGRUZXh0U2hh
ZG93KHRleHRTaGFkb3csIHNlbGVjdGlvblNoYWRvdyk7CisgICAgdGV4dFBhaW50ZXIuYWRkRW1w
aGFzaXMoZW1waGFzaXNNYXJrLCBlbXBoYXNpc01hcmtPZmZzZXQsIGNvbWJpbmVkVGV4dCk7CisK
KyAgICB0ZXh0UGFpbnRlci5wYWludFRleHQodGV4dFJ1biwgbGVuZ3RoLCBib3hSZWN0LCB0ZXh0
T3JpZ2luLCBzZWxlY3Rpb25TdGFydCwgc2VsZWN0aW9uRW5kLCBwYWludFNlbGVjdGVkVGV4dE9u
bHksIHBhaW50U2VsZWN0ZWRUZXh0U2VwYXJhdGVseSk7CiAKICAgICAvLyBQYWludCBkZWNvcmF0
aW9ucwogICAgIFRleHREZWNvcmF0aW9uIHRleHREZWNvcmF0aW9ucyA9IGxpbmVTdHlsZS50ZXh0
RGVjb3JhdGlvbnNJbkVmZmVjdCgpOwpAQCAtNjIxLDcgKzYyOCw3IEBAIHZvaWQgSW5saW5lVGV4
dEJveDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWlu
dE9mZnNldCwKICAgICAgICAgdXBkYXRlR3JhcGhpY3NDb250ZXh0KGNvbnRleHQsIHRleHRQYWlu
dFN0eWxlKTsKICAgICAgICAgaWYgKGNvbWJpbmVkVGV4dCkKICAgICAgICAgICAgIGNvbnRleHQu
Y29uY2F0Q1RNKHJvdGF0aW9uKGJveFJlY3QsIENsb2Nrd2lzZSkpOwotICAgICAgICBwYWludERl
Y29yYXRpb24oY29udGV4dCwgYm94T3JpZ2luLCB0ZXh0RGVjb3JhdGlvbnMsIHRleHRTaGFkb3cs
IHRleHRQYWludGVyKTsKKyAgICAgICAgcGFpbnREZWNvcmF0aW9uKGNvbnRleHQsIGZvbnQsIHRl
eHRSdW4sIHRleHRPcmlnaW4sIGJveE9yaWdpbiwgdGV4dERlY29yYXRpb25zLCB0ZXh0U2hhZG93
KTsKICAgICAgICAgaWYgKGNvbWJpbmVkVGV4dCkKICAgICAgICAgICAgIGNvbnRleHQuY29uY2F0
Q1RNKHJvdGF0aW9uKGJveFJlY3QsIENvdW50ZXJjbG9ja3dpc2UpKTsKICAgICB9CkBAIC04OTQs
MTIgKzkwMSwxNCBAQCBzdGF0aWMgdm9pZCBzdHJva2VXYXZ5VGV4dERlY29yYXRpb24oR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBGbG9hdFBvaW50JiBwMSwgRgogICAgIGNvbnRleHQuc3Ryb2tl
UGF0aChwYXRoKTsKIH0KIAotdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludERlY29yYXRpb24oR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFBvaW50JiBib3hPcmlnaW4sIFRleHRE
ZWNvcmF0aW9uIGRlY29yYXRpb24sIGNvbnN0IFNoYWRvd0RhdGEqIHNoYWRvdywgVGV4dFBhaW50
ZXImIHRleHRQYWludGVyKQordm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludERlY29yYXRpb24oR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29uc3QgVGV4
dFJ1biYgdGV4dFJ1biwgY29uc3QgRmxvYXRQb2ludCYgdGV4dE9yaWdpbiwgY29uc3QgRmxvYXRQ
b2ludCYgYm94T3JpZ2luLAorICAgIFRleHREZWNvcmF0aW9uIGRlY29yYXRpb24sIGNvbnN0IFNo
YWRvd0RhdGEqIHNoYWRvdykKIHsKICNpZiAhRU5BQkxFKENTUzNfVEVYVF9ERUNPUkFUSU9OX1NL
SVBfSU5LKQotICAgIFVOVVNFRF9QQVJBTSh0ZXh0UGFpbnRlcik7CisgICAgVU5VU0VEX1BBUkFN
KGZvbnQpOworICAgIFVOVVNFRF9QQVJBTSh0ZXh0UnVuKTsKKyAgICBVTlVTRURfUEFSQU0odGV4
dE9yaWdpbik7CiAjZW5kaWYKLQogICAgIGlmIChtX3RydW5jYXRpb24gPT0gY0Z1bGxUcnVuY2F0
aW9uKQogICAgICAgICByZXR1cm47CiAKQEAgLTk4NSw5ICs5OTQsOCBAQCB2b2lkIElubGluZVRl
eHRCb3g6OnBhaW50RGVjb3JhdGlvbihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZs
b2F0UG9pbnQmCiAgICAgICAgICAgICBkZWZhdWx0OgogI2lmIEVOQUJMRShDU1MzX1RFWFRfREVD
T1JBVElPTl9TS0lQX0lOSykKICAgICAgICAgICAgICAgICBpZiAoKGxpbmVTdHlsZS50ZXh0RGVj
b3JhdGlvblNraXAoKSA9PSBUZXh0RGVjb3JhdGlvblNraXBJbmsgfHwgbGluZVN0eWxlLnRleHRE
ZWNvcmF0aW9uU2tpcCgpID09IFRleHREZWNvcmF0aW9uU2tpcEF1dG8pICYmIGlzSG9yaXpvbnRh
bCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghY29udGV4dC5wYWludGluZ0Rpc2FibGVk
KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGRyYXdTa2lwSW5rVW5kZXJsaW5lKHRleHRQ
YWludGVyLCBjb250ZXh0LCBsb2NhbE9yaWdpbiwgdW5kZXJsaW5lT2Zmc2V0LCB3aWR0aCwgaXNQ
cmludGluZywgdW5kZXJsaW5lU3R5bGUgPT0gVGV4dERlY29yYXRpb25TdHlsZURvdWJsZSk7Ci0g
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKCFjb250ZXh0LnBh
aW50aW5nRGlzYWJsZWQoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGRyYXdTa2lwSW5rVW5k
ZXJsaW5lKGNvbnRleHQsIGZvbnQsIHRleHRSdW4sIHRleHRPcmlnaW4sIGxvY2FsT3JpZ2luLCB1
bmRlcmxpbmVPZmZzZXQsIHdpZHRoLCBpc1ByaW50aW5nLCB1bmRlcmxpbmVTdHlsZSA9PSBUZXh0
RGVjb3JhdGlvblN0eWxlRG91YmxlKTsKICAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAg
ICAgICAgICAgICAgLy8gRklYTUU6IE5lZWQgdG8gc3VwcG9ydCB0ZXh0LWRlY29yYXRpb24tc2tp
cDogbm9uZS4KICNlbmRpZiAvLyBDU1MzX1RFWFRfREVDT1JBVElPTl9TS0lQX0lOSwpAQCAtMTAw
OCw3ICsxMDE2LDcgQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludERlY29yYXRpb24oR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFBvaW50JgogI2lmIEVOQUJMRShDU1MzX1RF
WFRfREVDT1JBVElPTl9TS0lQX0lOSykKICAgICAgICAgICAgICAgICBpZiAoKGxpbmVTdHlsZS50
ZXh0RGVjb3JhdGlvblNraXAoKSA9PSBUZXh0RGVjb3JhdGlvblNraXBJbmsgfHwgbGluZVN0eWxl
LnRleHREZWNvcmF0aW9uU2tpcCgpID09IFRleHREZWNvcmF0aW9uU2tpcEF1dG8pICYmIGlzSG9y
aXpvbnRhbCgpKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICghY29udGV4dC5wYWludGluZ0Rp
c2FibGVkKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBkcmF3U2tpcElua1VuZGVybGluZSh0
ZXh0UGFpbnRlciwgY29udGV4dCwgbG9jYWxPcmlnaW4sIDAsIHdpZHRoLCBpc1ByaW50aW5nLCBv
dmVybGluZVN0eWxlID09IFRleHREZWNvcmF0aW9uU3R5bGVEb3VibGUpOworICAgICAgICAgICAg
ICAgICAgICAgICAgZHJhd1NraXBJbmtVbmRlcmxpbmUoY29udGV4dCwgZm9udCwgdGV4dFJ1biwg
dGV4dE9yaWdpbiwgbG9jYWxPcmlnaW4sIDAsIHdpZHRoLCBpc1ByaW50aW5nLCBvdmVybGluZVN0
eWxlID09IFRleHREZWNvcmF0aW9uU3R5bGVEb3VibGUpOwogICAgICAgICAgICAgICAgIH0gZWxz
ZQogICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogTmVlZCB0byBzdXBwb3J0IHRleHQtZGVj
b3JhdGlvbi1za2lwOiBub25lLgogI2VuZGlmIC8vIENTUzNfVEVYVF9ERUNPUkFUSU9OX1NLSVBf
SU5LCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guaAppbmRleCA3ZDAxMDAz
NzNhODc5NDFlYjBmOTVjNjk2MzgxYzNjY2RiYTU3YjFiLi5mM2RkNjc1MDRkNWRkN2E1Mzc4MTkz
OTc0ZDZiMDU0Y2MwZWFiZTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
SW5saW5lVGV4dEJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0
Qm94LmgKQEAgLTE1OSw3ICsxNTksNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBwYWludENvbXBv
c2l0aW9uVW5kZXJsaW5lKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UG9pbnQmIGJveE9y
aWdpbiwgY29uc3QgQ29tcG9zaXRpb25VbmRlcmxpbmUmKTsKIAogcHJpdmF0ZToKLSAgICB2b2lk
IHBhaW50RGVjb3JhdGlvbihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFBvaW50JiBib3hP
cmlnaW4sIFRleHREZWNvcmF0aW9uLCBjb25zdCBTaGFkb3dEYXRhKiwgVGV4dFBhaW50ZXImKTsK
KyAgICB2b2lkIHBhaW50RGVjb3JhdGlvbihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGb250Q2Fz
Y2FkZSYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBGbG9hdFBvaW50JiB0ZXh0T3JpZ2luLCBjb25z
dCBGbG9hdFBvaW50JiBib3hPcmlnaW4sIFRleHREZWNvcmF0aW9uLCBjb25zdCBTaGFkb3dEYXRh
Kik7CiAgICAgdm9pZCBwYWludFNlbGVjdGlvbihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9h
dFBvaW50JiBib3hPcmlnaW4sIGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgRm9udENhc2NhZGUm
LCBDb2xvciB0ZXh0Q29sb3IpOwogICAgIHZvaWQgcGFpbnREb2N1bWVudE1hcmtlcihHcmFwaGlj
c0NvbnRleHQmLCBjb25zdCBGbG9hdFBvaW50JiBib3hPcmlnaW4sIFJlbmRlcmVkRG9jdW1lbnRN
YXJrZXImLCBjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IEZvbnRDYXNjYWRlJiwgYm9vbCBncmFt
bWFyKTsKICAgICB2b2lkIHBhaW50VGV4dE1hdGNoTWFya2VyKEdyYXBoaWNzQ29udGV4dCYsIGNv
bnN0IEZsb2F0UG9pbnQmIGJveE9yaWdpbiwgUmVuZGVyZWREb2N1bWVudE1hcmtlciYsIGNvbnN0
IFJlbmRlclN0eWxlJiwgY29uc3QgRm9udENhc2NhZGUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvVGV4dFBhaW50ZXIuY3BwCmluZGV4IGViZDkzNzgzODBjMDgyN2NiNTk4ZDE1NDhmM2RkZTE1
YTI4YTcwOTcuLmFmOTkwZTljNTViM2UwM2FhZDE3MGNiYjIwZTU4MGMwZmJjYjQ2NmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWludGVyLmNwcApAQCAtMjYsNyArMjYsNiBAQAog
I2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIklubGluZVRleHRCb3guaCIK
ICNpbmNsdWRlICJSZW5kZXJDb21iaW5lVGV4dC5oIgotI2luY2x1ZGUgIlRleHRQYWludFN0eWxl
LmgiCiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKQEAgLTc5LDI4ICs3OCw4IEBAIFNoYWRvd0FwcGxpZXI6On5TaGFkb3dBcHBsaWVyKCkKICAg
ICAgICAgbV9jb250ZXh0LmNsZWFyU2hhZG93KCk7CiB9CiAKLVRleHRQYWludGVyOjpUZXh0UGFp
bnRlcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGJvb2wgcGFpbnRTZWxlY3RlZFRleHRPbmx5
LCBib29sIHBhaW50U2VsZWN0ZWRUZXh0U2VwYXJhdGVseSwgY29uc3QgRm9udENhc2NhZGUmIGZv
bnQsIGludCBzZWxlY3Rpb25TdGFydCwKLSAgICBpbnQgc2VsZWN0aW9uRW5kLCBpbnQgbGVuZ3Ro
LCBjb25zdCBBdG9taWNTdHJpbmcmIGVtcGhhc2lzTWFyaywgUmVuZGVyQ29tYmluZVRleHQqIGNv
bWJpbmVkVGV4dCwgVGV4dFJ1biYgdGV4dFJ1biwgRmxvYXRSZWN0JiBib3hSZWN0LAotICAgIEZs
b2F0UG9pbnQmIHRleHRPcmlnaW4sIGludCBlbXBoYXNpc01hcmtPZmZzZXQsIGNvbnN0IFNoYWRv
d0RhdGEqIHRleHRTaGFkb3csIGNvbnN0IFNoYWRvd0RhdGEqIHNlbGVjdGlvblNoYWRvdywgYm9v
bCB0ZXh0Qm94SXNIb3Jpem9udGFsLAotICAgIFRleHRQYWludFN0eWxlJiB0ZXh0UGFpbnRTdHls
ZSwgVGV4dFBhaW50U3R5bGUmIHNlbGVjdGlvblBhaW50U3R5bGUpCitUZXh0UGFpbnRlcjo6VGV4
dFBhaW50ZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogICAgIDogbV9jb250ZXh0KGNvbnRl
eHQpCi0gICAgLCBtX3RleHRQYWludFN0eWxlKHRleHRQYWludFN0eWxlKQotICAgICwgbV9zZWxl
Y3Rpb25QYWludFN0eWxlKHNlbGVjdGlvblBhaW50U3R5bGUpCi0gICAgLCBtX3RleHRTaGFkb3co
dGV4dFNoYWRvdykKLSAgICAsIG1fc2VsZWN0aW9uU2hhZG93KHNlbGVjdGlvblNoYWRvdykKLSAg
ICAsIG1fcGFpbnRTZWxlY3RlZFRleHRPbmx5KHBhaW50U2VsZWN0ZWRUZXh0T25seSkKLSAgICAs
IG1fcGFpbnRTZWxlY3RlZFRleHRTZXBhcmF0ZWx5KHBhaW50U2VsZWN0ZWRUZXh0U2VwYXJhdGVs
eSkKLSAgICAsIG1fZm9udChmb250KQotICAgICwgbV9zZWxlY3Rpb25TdGFydChzZWxlY3Rpb25T
dGFydCkKLSAgICAsIG1fc2VsZWN0aW9uRW5kKHNlbGVjdGlvbkVuZCkKLSAgICAsIG1fbGVuZ3Ro
KGxlbmd0aCkKLSAgICAsIG1fZW1waGFzaXNNYXJrKGVtcGhhc2lzTWFyaykKLSAgICAsIG1fY29t
YmluZWRUZXh0KGNvbWJpbmVkVGV4dCkKLSAgICAsIG1fdGV4dFJ1bih0ZXh0UnVuKQotICAgICwg
bV9ib3hSZWN0KGJveFJlY3QpCi0gICAgLCBtX3RleHRPcmlnaW4odGV4dE9yaWdpbikKLSAgICAs
IG1fZW1waGFzaXNNYXJrT2Zmc2V0KGVtcGhhc2lzTWFya09mZnNldCkKLSAgICAsIG1fdGV4dEJv
eElzSG9yaXpvbnRhbCh0ZXh0Qm94SXNIb3Jpem9udGFsKQogewogfQogCkBAIC0xMTQsOCArOTMs
OCBAQCB2b2lkIFRleHRQYWludGVyOjpkcmF3VGV4dE9yRW1waGFzaXNNYXJrcyhjb25zdCBGb250
Q2FzY2FkZSYgZm9udCwgY29uc3QgVGV4dFJ1bgogICAgICAgICBtX2NvbnRleHQuZHJhd0VtcGhh
c2lzTWFya3MoZm9udCwgdGV4dFJ1biwgZW1waGFzaXNNYXJrLCB0ZXh0T3JpZ2luICsgSW50U2l6
ZSgwLCBlbXBoYXNpc01hcmtPZmZzZXQpLCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KTsKIH0KIAot
dm9pZCBUZXh0UGFpbnRlcjo6cGFpbnRUZXh0V2l0aFNoYWRvd3MoY29uc3QgU2hhZG93RGF0YSog
c2hhZG93LCBjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29uc3QgVGV4dFJ1biYgdGV4dFJ1biwg
Y29uc3QgQXRvbWljU3RyaW5nJiBlbXBoYXNpc01hcmssCi0gICAgaW50IGVtcGhhc2lzTWFya09m
ZnNldCwgaW50IHN0YXJ0T2Zmc2V0LCBpbnQgZW5kT2Zmc2V0LCBjb25zdCBGbG9hdFBvaW50JiB0
ZXh0T3JpZ2luLCBib29sIHN0cm9rZWQpCit2b2lkIFRleHRQYWludGVyOjpwYWludFRleHRXaXRo
U2hhZG93cyhjb25zdCBTaGFkb3dEYXRhKiBzaGFkb3csIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250
LCBjb25zdCBUZXh0UnVuJiB0ZXh0UnVuLCBjb25zdCBGbG9hdFJlY3QmIGJveFJlY3QsIGNvbnN0
IEZsb2F0UG9pbnQmIHRleHRPcmlnaW4sCisgICAgaW50IHN0YXJ0T2Zmc2V0LCBpbnQgZW5kT2Zm
c2V0LCBjb25zdCBBdG9taWNTdHJpbmcmIGVtcGhhc2lzTWFyaywgaW50IGVtcGhhc2lzTWFya09m
ZnNldCwgYm9vbCBzdHJva2VkKQogewogICAgIGlmICghc2hhZG93KSB7CiAgICAgICAgIGRyYXdU
ZXh0T3JFbXBoYXNpc01hcmtzKGZvbnQsIHRleHRSdW4sIGVtcGhhc2lzTWFyaywgZW1waGFzaXNN
YXJrT2Zmc2V0LCB0ZXh0T3JpZ2luLCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KTsKQEAgLTEyOCw3
ICsxMDcsNyBAQCB2b2lkIFRleHRQYWludGVyOjpwYWludFRleHRXaXRoU2hhZG93cyhjb25zdCBT
aGFkb3dEYXRhKiBzaGFkb3csIGNvbnN0IEZvbnRDYXNjYQogICAgIGlmICghb3BhcXVlKQogICAg
ICAgICBtX2NvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yOjpibGFjayk7CiAgICAgd2hpbGUgKHNo
YWRvdykgewotICAgICAgICBTaGFkb3dBcHBsaWVyIHNoYWRvd0FwcGxpZXIobV9jb250ZXh0LCBz
aGFkb3csIG1fYm94UmVjdCwgbGFzdFNoYWRvd0l0ZXJhdGlvblNob3VsZERyYXdUZXh0LCBvcGFx
dWUsIG1fdGV4dEJveElzSG9yaXpvbnRhbCA/IEhvcml6b250YWwgOiBWZXJ0aWNhbCk7CisgICAg
ICAgIFNoYWRvd0FwcGxpZXIgc2hhZG93QXBwbGllcihtX2NvbnRleHQsIHNoYWRvdywgYm94UmVj
dCwgbGFzdFNoYWRvd0l0ZXJhdGlvblNob3VsZERyYXdUZXh0LCBvcGFxdWUsIG1fdGV4dEJveElz
SG9yaXpvbnRhbCA/IEhvcml6b250YWwgOiBWZXJ0aWNhbCk7CiAgICAgICAgIGlmICghc2hhZG93
QXBwbGllci5ub3RoaW5nVG9EcmF3KCkpCiAgICAgICAgICAgICBkcmF3VGV4dE9yRW1waGFzaXNN
YXJrcyhmb250LCB0ZXh0UnVuLCBlbXBoYXNpc01hcmssIGVtcGhhc2lzTWFya09mZnNldCwgdGV4
dE9yaWdpbiArIHNoYWRvd0FwcGxpZXIuZXh0cmFPZmZzZXQoKSwgc3RhcnRPZmZzZXQsIGVuZE9m
ZnNldCk7CiAgICAgICAgIHNoYWRvdyA9IHNoYWRvdy0+bmV4dCgpOwpAQCAtMTQxLDU5ICsxMjAs
NTYgQEAgdm9pZCBUZXh0UGFpbnRlcjo6cGFpbnRUZXh0V2l0aFNoYWRvd3MoY29uc3QgU2hhZG93
RGF0YSogc2hhZG93LCBjb25zdCBGb250Q2FzY2EKICAgICB9CiB9CiAKLXZvaWQgVGV4dFBhaW50
ZXI6OnBhaW50VGV4dEFuZEVtcGhhc2lzTWFya3NJZk5lZWRlZChpbnQgc3RhcnRPZmZzZXQsIGlu
dCBlbmRPZmZzZXQsIGNvbnN0IFRleHRQYWludFN0eWxlJiBwYWludFN0eWxlLCBjb25zdCBTaGFk
b3dEYXRhKiBzaGFkb3cpCit2b2lkIFRleHRQYWludGVyOjpwYWludFRleHRBbmRFbXBoYXNpc01h
cmtzSWZOZWVkZWQoY29uc3QgVGV4dFJ1biYgdGV4dFJ1biwgY29uc3QgRmxvYXRSZWN0JiBib3hS
ZWN0LCBjb25zdCBGbG9hdFBvaW50JiB0ZXh0T3JpZ2luLCBpbnQgc3RhcnRPZmZzZXQsIGludCBl
bmRPZmZzZXQsCisgICAgY29uc3QgVGV4dFBhaW50U3R5bGUmIHBhaW50U3R5bGUsIGNvbnN0IFNo
YWRvd0RhdGEqIHNoYWRvdykKIHsKICAgICAvLyBGSVhNRTogVHJ1bmNhdGUgcmlnaHQtdG8tbGVm
dCB0ZXh0IGNvcnJlY3RseS4KLSAgICBwYWludFRleHRXaXRoU2hhZG93cyhzaGFkb3csIG1fZm9u
dCwgbV90ZXh0UnVuLCBudWxsQXRvbSwgMCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCwgbV90ZXh0
T3JpZ2luLCBwYWludFN0eWxlLnN0cm9rZVdpZHRoID4gMCk7CisgICAgcGFpbnRUZXh0V2l0aFNo
YWRvd3Moc2hhZG93LCAqbV9mb250LCB0ZXh0UnVuLCBib3hSZWN0LCB0ZXh0T3JpZ2luLCBzdGFy
dE9mZnNldCwgZW5kT2Zmc2V0LCBudWxsQXRvbSwgMCwgcGFpbnRTdHlsZS5zdHJva2VXaWR0aCA+
IDApOwogCiAgICAgaWYgKG1fZW1waGFzaXNNYXJrLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgRmxvYXRQb2ludCBib3hPcmlnaW4gPSBtX2JveFJlY3QubG9jYXRpb24oKTsKKyAg
ICBGbG9hdFBvaW50IGJveE9yaWdpbiA9IGJveFJlY3QubG9jYXRpb24oKTsKICAgICB1cGRhdGVH
cmFwaGljc0NvbnRleHQobV9jb250ZXh0LCBwYWludFN0eWxlLCBVc2VFbXBoYXNpc01hcmtDb2xv
cik7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFRleHRSdW4+IG9iamVjdFJlcGxhY2VtZW50
Q2hhcmFjdGVyVGV4dFJ1bihTdHJpbmdWaWV3KCZvYmplY3RSZXBsYWNlbWVudENoYXJhY3Rlciwg
MSkpOwotICAgIFRleHRSdW4mIGVtcGhhc2lzTWFya1RleHRSdW4gPSBtX2NvbWJpbmVkVGV4dCA/
IG9iamVjdFJlcGxhY2VtZW50Q2hhcmFjdGVyVGV4dFJ1bi5nZXQoKSA6IG1fdGV4dFJ1bjsKLSAg
ICBGbG9hdFBvaW50IGVtcGhhc2lzTWFya1RleHRPcmlnaW4gPSBtX2NvbWJpbmVkVGV4dCA/IEZs
b2F0UG9pbnQoYm94T3JpZ2luLngoKSArIG1fYm94UmVjdC53aWR0aCgpIC8gMiwgYm94T3JpZ2lu
LnkoKSArIG1fZm9udC5mb250TWV0cmljcygpLmFzY2VudCgpKSA6IG1fdGV4dE9yaWdpbjsKKyAg
ICBjb25zdCBUZXh0UnVuJiBlbXBoYXNpc01hcmtUZXh0UnVuID0gbV9jb21iaW5lZFRleHQgPyBv
YmplY3RSZXBsYWNlbWVudENoYXJhY3RlclRleHRSdW4uZ2V0KCkgOiB0ZXh0UnVuOworICAgIEZs
b2F0UG9pbnQgZW1waGFzaXNNYXJrVGV4dE9yaWdpbiA9IG1fY29tYmluZWRUZXh0ID8gRmxvYXRQ
b2ludChib3hPcmlnaW4ueCgpICsgYm94UmVjdC53aWR0aCgpIC8gMiwgYm94T3JpZ2luLnkoKSAr
IG1fZm9udC0+Zm9udE1ldHJpY3MoKS5hc2NlbnQoKSkgOiB0ZXh0T3JpZ2luOwogICAgIGlmICht
X2NvbWJpbmVkVGV4dCkKLSAgICAgICAgbV9jb250ZXh0LmNvbmNhdENUTShyb3RhdGlvbihtX2Jv
eFJlY3QsIENsb2Nrd2lzZSkpOworICAgICAgICBtX2NvbnRleHQuY29uY2F0Q1RNKHJvdGF0aW9u
KGJveFJlY3QsIENsb2Nrd2lzZSkpOwogCiAgICAgLy8gRklYTUU6IFRydW5jYXRlIHJpZ2h0LXRv
LWxlZnQgdGV4dCBjb3JyZWN0bHkuCi0gICAgcGFpbnRUZXh0V2l0aFNoYWRvd3Moc2hhZG93LCBt
X2NvbWJpbmVkVGV4dCA/IG1fY29tYmluZWRUZXh0LT5vcmlnaW5hbEZvbnQoKSA6IG1fZm9udCwg
ZW1waGFzaXNNYXJrVGV4dFJ1biwgbV9lbXBoYXNpc01hcmssIG1fZW1waGFzaXNNYXJrT2Zmc2V0
LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0LCBlbXBoYXNpc01hcmtUZXh0T3JpZ2luLCBwYWludFN0
eWxlLnN0cm9rZVdpZHRoID4gMCk7CisgICAgcGFpbnRUZXh0V2l0aFNoYWRvd3Moc2hhZG93LCBt
X2NvbWJpbmVkVGV4dCA/IG1fY29tYmluZWRUZXh0LT5vcmlnaW5hbEZvbnQoKSA6ICptX2ZvbnQs
IGVtcGhhc2lzTWFya1RleHRSdW4sIGJveFJlY3QsIGVtcGhhc2lzTWFya1RleHRPcmlnaW4sIHN0
YXJ0T2Zmc2V0LCBlbmRPZmZzZXQsCisgICAgICAgIG1fZW1waGFzaXNNYXJrLCBtX2VtcGhhc2lz
TWFya09mZnNldCwgcGFpbnRTdHlsZS5zdHJva2VXaWR0aCA+IDApOwogCiAgICAgaWYgKG1fY29t
YmluZWRUZXh0KQotICAgICAgICBtX2NvbnRleHQuY29uY2F0Q1RNKHJvdGF0aW9uKG1fYm94UmVj
dCwgQ291bnRlcmNsb2Nrd2lzZSkpOworICAgICAgICBtX2NvbnRleHQuY29uY2F0Q1RNKHJvdGF0
aW9uKGJveFJlY3QsIENvdW50ZXJjbG9ja3dpc2UpKTsKIH0KICAgICAKLXZvaWQgVGV4dFBhaW50
ZXI6OnBhaW50VGV4dCgpCit2b2lkIFRleHRQYWludGVyOjpwYWludFRleHQoY29uc3QgVGV4dFJ1
biYgdGV4dFJ1biwgaW50IGxlbmd0aCwgY29uc3QgRmxvYXRSZWN0JiBib3hSZWN0LCBjb25zdCBG
bG9hdFBvaW50JiB0ZXh0T3JpZ2luLCBpbnQgc2VsZWN0aW9uU3RhcnQsIGludCBzZWxlY3Rpb25F
bmQsCisgICAgYm9vbCBwYWludFNlbGVjdGVkVGV4dE9ubHksIGJvb2wgcGFpbnRTZWxlY3RlZFRl
eHRTZXBhcmF0ZWx5KQogewotICAgIGlmICghbV9wYWludFNlbGVjdGVkVGV4dE9ubHkpIHsKKyAg
ICBBU1NFUlQobV9mb250KTsKKyAgICBpZiAoIXBhaW50U2VsZWN0ZWRUZXh0T25seSkgewogICAg
ICAgICAvLyBGb3Igc3Ryb2tlZCBwYWludGluZywgd2UgaGF2ZSB0byBjaGFuZ2UgdGhlIHRleHQg
ZHJhd2luZyBtb2RlLiBJdCdzIHByb2JhYmx5IGRhbmdlcm91cyB0byBsZWF2ZSB0aGF0IG11dGF0
ZWQgYXMgYSBzaWRlCiAgICAgICAgIC8vIGVmZmVjdCwgc28gb25seSB3aGVuIHdlIGtub3cgd2Un
cmUgc3Ryb2tpbmcsIGRvIGEgc2F2ZS9yZXN0b3JlLgogICAgICAgICBHcmFwaGljc0NvbnRleHRT
dGF0ZVNhdmVyIHN0YXRlU2F2ZXIobV9jb250ZXh0LCBtX3RleHRQYWludFN0eWxlLnN0cm9rZVdp
ZHRoID4gMCk7CiAgICAgICAgIHVwZGF0ZUdyYXBoaWNzQ29udGV4dChtX2NvbnRleHQsIG1fdGV4
dFBhaW50U3R5bGUpOwotICAgICAgICBpZiAobV9wYWludFNlbGVjdGVkVGV4dFNlcGFyYXRlbHkp
IHsKKyAgICAgICAgaWYgKHBhaW50U2VsZWN0ZWRUZXh0U2VwYXJhdGVseSkgewogICAgICAgICAg
ICAgLy8gUGFpbnQgdGhlIGJlZm9yZSBhbmQgYWZ0ZXIgc2VsZWN0aW9uIHBhcnRzLgotICAgICAg
ICAgICAgaWYgKG1fc2VsZWN0aW9uU3RhcnQgPiAwKQotICAgICAgICAgICAgICAgIHBhaW50VGV4
dEFuZEVtcGhhc2lzTWFya3NJZk5lZWRlZCgwLCBtX3NlbGVjdGlvblN0YXJ0LCBtX3RleHRQYWlu
dFN0eWxlLCBtX3RleHRTaGFkb3cpOwotICAgICAgICAgICAgaWYgKG1fc2VsZWN0aW9uRW5kIDwg
bV9sZW5ndGgpCi0gICAgICAgICAgICAgICAgcGFpbnRUZXh0QW5kRW1waGFzaXNNYXJrc0lmTmVl
ZGVkKG1fc2VsZWN0aW9uRW5kLCBtX2xlbmd0aCwgbV90ZXh0UGFpbnRTdHlsZSwgbV90ZXh0U2hh
ZG93KTsKKyAgICAgICAgICAgIGlmIChzZWxlY3Rpb25TdGFydCA+IDApCisgICAgICAgICAgICAg
ICAgcGFpbnRUZXh0QW5kRW1waGFzaXNNYXJrc0lmTmVlZGVkKHRleHRSdW4sIGJveFJlY3QsIHRl
eHRPcmlnaW4sIDAsIHNlbGVjdGlvblN0YXJ0LCBtX3RleHRQYWludFN0eWxlLCBtX3RleHRTaGFk
b3cpOworICAgICAgICAgICAgaWYgKHNlbGVjdGlvbkVuZCA8IGxlbmd0aCkKKyAgICAgICAgICAg
ICAgICBwYWludFRleHRBbmRFbXBoYXNpc01hcmtzSWZOZWVkZWQodGV4dFJ1biwgYm94UmVjdCwg
dGV4dE9yaWdpbiwgc2VsZWN0aW9uRW5kLCBsZW5ndGgsIG1fdGV4dFBhaW50U3R5bGUsIG1fdGV4
dFNoYWRvdyk7CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgcGFpbnRUZXh0QW5kRW1waGFz
aXNNYXJrc0lmTmVlZGVkKDAsIG1fbGVuZ3RoLCBtX3RleHRQYWludFN0eWxlLCBtX3RleHRTaGFk
b3cpOworICAgICAgICAgICAgcGFpbnRUZXh0QW5kRW1waGFzaXNNYXJrc0lmTmVlZGVkKHRleHRS
dW4sIGJveFJlY3QsIHRleHRPcmlnaW4sIDAsIGxlbmd0aCwgbV90ZXh0UGFpbnRTdHlsZSwgbV90
ZXh0U2hhZG93KTsKICAgICB9CiAKICAgICAvLyBQYWludCBvbmx5IHRoZSB0ZXh0IHRoYXQgaXMg
c2VsZWN0ZWQuCi0gICAgaWYgKChtX3BhaW50U2VsZWN0ZWRUZXh0T25seSB8fCBtX3BhaW50U2Vs
ZWN0ZWRUZXh0U2VwYXJhdGVseSkgJiYgbV9zZWxlY3Rpb25TdGFydCA8IG1fc2VsZWN0aW9uRW5k
KSB7CisgICAgaWYgKChwYWludFNlbGVjdGVkVGV4dE9ubHkgfHwgcGFpbnRTZWxlY3RlZFRleHRT
ZXBhcmF0ZWx5KSAmJiBzZWxlY3Rpb25TdGFydCA8IHNlbGVjdGlvbkVuZCkgewogICAgICAgICBH
cmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIobV9jb250ZXh0LCBtX3NlbGVjdGlv
blBhaW50U3R5bGUuc3Ryb2tlV2lkdGggPiAwKTsKICAgICAgICAgdXBkYXRlR3JhcGhpY3NDb250
ZXh0KG1fY29udGV4dCwgbV9zZWxlY3Rpb25QYWludFN0eWxlKTsKLSAgICAgICAgcGFpbnRUZXh0
QW5kRW1waGFzaXNNYXJrc0lmTmVlZGVkKG1fc2VsZWN0aW9uU3RhcnQsIG1fc2VsZWN0aW9uRW5k
LCBtX3NlbGVjdGlvblBhaW50U3R5bGUsIG1fc2VsZWN0aW9uU2hhZG93KTsKKyAgICAgICAgcGFp
bnRUZXh0QW5kRW1waGFzaXNNYXJrc0lmTmVlZGVkKHRleHRSdW4sIGJveFJlY3QsIHRleHRPcmln
aW4sIHNlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25FbmQsIG1fc2VsZWN0aW9uUGFpbnRTdHlsZSwg
bV9zZWxlY3Rpb25TaGFkb3cpOwogICAgIH0KIH0KIAotI2lmIEVOQUJMRShDU1MzX1RFWFRfREVD
T1JBVElPTl9TS0lQX0lOSykKLURhc2hBcnJheSBUZXh0UGFpbnRlcjo6ZGFzaGVzRm9ySW50ZXJz
ZWN0aW9uc1dpdGhSZWN0KGNvbnN0IEZsb2F0UmVjdCYgbGluZUV4dGVudHMpCi17Ci0gICAgcmV0
dXJuIG1fZm9udC5kYXNoZXNGb3JJbnRlcnNlY3Rpb25zV2l0aFJlY3QobV90ZXh0UnVuLCBtX3Rl
eHRPcmlnaW4sIGxpbmVFeHRlbnRzKTsKLX0KLSNlbmRpZgotCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBhaW50ZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRlci5oCmluZGV4IDA0MTEyNTk1YTU0
ZjcxYzBiZmY1NjI5ZmVjNmQ0NDU2NThjMTk5NmMuLjZjZjZmNDUzNzYzY2Y1OTc4ZjAzNmMyZmE3
MTA4ZWUxNDhhMDdkOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0
UGFpbnRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRlci5oCkBA
IC0yNCw5ICsyNCw5IEBACiAjZGVmaW5lIFRleHRQYWludGVyX2gKIAogI2luY2x1ZGUgIkFmZmlu
ZVRyYW5zZm9ybS5oIgotI2luY2x1ZGUgIkRhc2hBcnJheS5oIgogI2luY2x1ZGUgIlJlbmRlclRl
eHQuaCIKICNpbmNsdWRlICJUZXh0RmxhZ3MuaCIKKyNpbmNsdWRlICJUZXh0UGFpbnRTdHlsZS5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ0LDQzICs0NCw1MSBAQCBzdGF0aWMgaW5s
aW5lIEFmZmluZVRyYW5zZm9ybSByb3RhdGlvbihjb25zdCBGbG9hdFJlY3QmIGJveFJlY3QsIFJv
dGF0aW9uRGlyZWN0aQogCiBjbGFzcyBUZXh0UGFpbnRlciB7CiBwdWJsaWM6Ci0gICAgVGV4dFBh
aW50ZXIoR3JhcGhpY3NDb250ZXh0JiwgYm9vbCBwYWludFNlbGVjdGVkVGV4dE9ubHksIGJvb2wg
cGFpbnRTZWxlY3RlZFRleHRTZXBhcmF0ZWx5LCBjb25zdCBGb250Q2FzY2FkZSYsCi0gICAgICAg
IGludCBzZWxlY3Rpb25TdGFydCwgaW50IHNlbGVjdGlvbkVuZCwgaW50IGxlbmd0aCwgY29uc3Qg
QXRvbWljU3RyaW5nJiBlbXBoYXNpc01hcmssIFJlbmRlckNvbWJpbmVUZXh0KiwKLSAgICAgICAg
VGV4dFJ1biYsIEZsb2F0UmVjdCYgYm94UmVjdCwgRmxvYXRQb2ludCYgdGV4dE9yaWdpbiwgaW50
IGVtcGhhc2lzTWFya09mZnNldCwgY29uc3QgU2hhZG93RGF0YSogdGV4dFNoYWRvdywgY29uc3Qg
U2hhZG93RGF0YSogc2VsZWN0aW9uU2hhZG93LAotICAgICAgICBib29sIHRleHRCb3hJc0hvcml6
b250YWwsIFRleHRQYWludFN0eWxlJiBub25TZWxlY3Rpb25QYWludFN0eWxlLCBUZXh0UGFpbnRT
dHlsZSYgc2VsZWN0aW9uUGFpbnRTdHlsZSk7CisgICAgVGV4dFBhaW50ZXIoR3JhcGhpY3NDb250
ZXh0Jik7CiAgICAgCi0gICAgdm9pZCBwYWludFRleHQoKTsKLSNpZiBFTkFCTEUoQ1NTM19URVhU
X0RFQ09SQVRJT05fU0tJUF9JTkspCi0gICAgRGFzaEFycmF5IGRhc2hlc0ZvckludGVyc2VjdGlv
bnNXaXRoUmVjdChjb25zdCBGbG9hdFJlY3QmIGxpbmVFeHRlbnRzKTsKLSNlbmRpZgorICAgIHZv
aWQgc2V0VGV4dFBhaW50U3R5bGUoY29uc3QgVGV4dFBhaW50U3R5bGUmIHRleHRQYWludFN0eWxl
KSB7IG1fdGV4dFBhaW50U3R5bGUgPSB0ZXh0UGFpbnRTdHlsZTsgfQorICAgIHZvaWQgc2V0U2Vs
ZWN0aW9uUGFpbnRTdHlsZShjb25zdCBUZXh0UGFpbnRTdHlsZSYgc2VsZWN0aW9uUGFpbnRTdHls
ZSkgeyBtX3NlbGVjdGlvblBhaW50U3R5bGUgPSBzZWxlY3Rpb25QYWludFN0eWxlOyB9CisgICAg
dm9pZCBzZXRJc0hvcml6b250YWwoYm9vbCBpc0hvcml6b250YWwpIHsgbV90ZXh0Qm94SXNIb3Jp
em9udGFsID0gaXNIb3Jpem9udGFsOyB9CisgICAgdm9pZCBzZXRGb250KGNvbnN0IEZvbnRDYXNj
YWRlJiBmb250KSB7IG1fZm9udCA9ICZmb250OyB9CisgICAgdm9pZCBhZGRFbXBoYXNpcyhjb25z
dCBBdG9taWNTdHJpbmcmIGVtcGhhc2lzTWFyaywgaW50IGVtcGhhc2lzTWFya09mZnNldCwgUmVu
ZGVyQ29tYmluZVRleHQqKTsKKyAgICB2b2lkIGFkZFRleHRTaGFkb3coY29uc3QgU2hhZG93RGF0
YSogdGV4dFNoYWRvdywgY29uc3QgU2hhZG93RGF0YSogc2VsZWN0aW9uU2hhZG93KTsKKworICAg
IHZvaWQgcGFpbnRUZXh0KGNvbnN0IFRleHRSdW4mLCBpbnQgbGVuZ3RoLCBjb25zdCBGbG9hdFJl
Y3QmIGJveFJlY3QsIGNvbnN0IEZsb2F0UG9pbnQmIHRleHRPcmlnaW4sCisgICAgICAgIGludCBz
ZWxlY3Rpb25TdGFydCwgaW50IHNlbGVjdGlvbkVuZCwgYm9vbCBwYWludFNlbGVjdGVkVGV4dE9u
bHksIGJvb2wgcGFpbnRTZWxlY3RlZFRleHRTZXBhcmF0ZWx5KTsKIAogcHJpdmF0ZToKICAgICB2
b2lkIGRyYXdUZXh0T3JFbXBoYXNpc01hcmtzKGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgVGV4
dFJ1biYsIGNvbnN0IEF0b21pY1N0cmluZyYgZW1waGFzaXNNYXJrLCBpbnQgZW1waGFzaXNNYXJr
T2Zmc2V0LAogICAgICAgICBjb25zdCBGbG9hdFBvaW50JiB0ZXh0T3JpZ2luLCBpbnQgc3RhcnRP
ZmZzZXQsIGludCBlbmRPZmZzZXQpOwotICAgIHZvaWQgcGFpbnRUZXh0V2l0aFNoYWRvd3MoY29u
c3QgU2hhZG93RGF0YSosIGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0
IEF0b21pY1N0cmluZyYgZW1waGFzaXNNYXJrLCBpbnQgZW1waGFzaXNNYXJrT2Zmc2V0LAotICAg
ICAgICBpbnQgc3RhcnRPZmZzZXQsIGludCBlbmRPZmZzZXQsIGNvbnN0IEZsb2F0UG9pbnQmIHRl
eHRPcmlnaW4sIGJvb2wgc3Ryb2tlZCk7Ci0gICAgdm9pZCBwYWludFRleHRBbmRFbXBoYXNpc01h
cmtzSWZOZWVkZWQoaW50IHN0YXJ0T2Zmc2V0LCBpbnQgZW5kT2Zmc2V0LCBjb25zdCBUZXh0UGFp
bnRTdHlsZSYsIGNvbnN0IFNoYWRvd0RhdGEqKTsKKyAgICB2b2lkIHBhaW50VGV4dFdpdGhTaGFk
b3dzKGNvbnN0IFNoYWRvd0RhdGEqLCBjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IFRleHRSdW4m
LCBjb25zdCBGbG9hdFJlY3QmIGJveFJlY3QsIGNvbnN0IEZsb2F0UG9pbnQmIHRleHRPcmlnaW4s
CisgICAgICAgIGludCBzdGFydE9mZnNldCwgaW50IGVuZE9mZnNldCwgY29uc3QgQXRvbWljU3Ry
aW5nJiBlbXBoYXNpc01hcmssIGludCBlbXBoYXNpc01hcmtPZmZzZXQsIGJvb2wgc3Ryb2tlZCk7
CisgICAgdm9pZCBwYWludFRleHRBbmRFbXBoYXNpc01hcmtzSWZOZWVkZWQoY29uc3QgVGV4dFJ1
biYsIGNvbnN0IEZsb2F0UmVjdCYgYm94UmVjdCwgY29uc3QgRmxvYXRQb2ludCYgdGV4dE9yaWdp
biwgaW50IHN0YXJ0T2Zmc2V0LCBpbnQgZW5kT2Zmc2V0LAorICAgICAgICBjb25zdCBUZXh0UGFp
bnRTdHlsZSYsIGNvbnN0IFNoYWRvd0RhdGEqKTsKIAogICAgIEdyYXBoaWNzQ29udGV4dCYgbV9j
b250ZXh0OwotICAgIFRleHRQYWludFN0eWxlJiBtX3RleHRQYWludFN0eWxlOwotICAgIFRleHRQ
YWludFN0eWxlJiBtX3NlbGVjdGlvblBhaW50U3R5bGU7Ci0gICAgY29uc3QgU2hhZG93RGF0YSog
bV90ZXh0U2hhZG93OwotICAgIGNvbnN0IFNoYWRvd0RhdGEqIG1fc2VsZWN0aW9uU2hhZG93Owot
ICAgIGJvb2wgbV9wYWludFNlbGVjdGVkVGV4dE9ubHk7Ci0gICAgYm9vbCBtX3BhaW50U2VsZWN0
ZWRUZXh0U2VwYXJhdGVseTsKLSAgICBjb25zdCBGb250Q2FzY2FkZSYgbV9mb250OwotICAgIGlu
dCBtX3NlbGVjdGlvblN0YXJ0OwotICAgIGludCBtX3NlbGVjdGlvbkVuZDsKLSAgICBpbnQgbV9s
ZW5ndGg7Ci0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBtX2VtcGhhc2lzTWFyazsKLSAgICBSZW5k
ZXJDb21iaW5lVGV4dCogbV9jb21iaW5lZFRleHQ7Ci0gICAgVGV4dFJ1biYgbV90ZXh0UnVuOwot
ICAgIEZsb2F0UmVjdCBtX2JveFJlY3Q7Ci0gICAgRmxvYXRQb2ludCBtX3RleHRPcmlnaW47Ci0g
ICAgaW50IG1fZW1waGFzaXNNYXJrT2Zmc2V0OwotICAgIGJvb2wgbV90ZXh0Qm94SXNIb3Jpem9u
dGFsOworICAgIGNvbnN0IEZvbnRDYXNjYWRlKiBtX2ZvbnQgeyBudWxscHRyIH07CisgICAgVGV4
dFBhaW50U3R5bGUgbV90ZXh0UGFpbnRTdHlsZTsKKyAgICBUZXh0UGFpbnRTdHlsZSBtX3NlbGVj
dGlvblBhaW50U3R5bGU7CisgICAgY29uc3QgU2hhZG93RGF0YSogbV90ZXh0U2hhZG93IHsgbnVs
bHB0ciB9OworICAgIGNvbnN0IFNoYWRvd0RhdGEqIG1fc2VsZWN0aW9uU2hhZG93IHsgbnVsbHB0
ciB9OworICAgIEF0b21pY1N0cmluZyBtX2VtcGhhc2lzTWFyazsKKyAgICBSZW5kZXJDb21iaW5l
VGV4dCogbV9jb21iaW5lZFRleHQgeyBudWxscHRyIH07CisgICAgaW50IG1fZW1waGFzaXNNYXJr
T2Zmc2V0IHsgMCB9OworICAgIGJvb2wgbV90ZXh0Qm94SXNIb3Jpem9udGFsIHsgdHJ1ZSB9Owog
fTsKIAoraW5saW5lIHZvaWQgVGV4dFBhaW50ZXI6OmFkZEVtcGhhc2lzKGNvbnN0IEF0b21pY1N0
cmluZyYgZW1waGFzaXNNYXJrLCBpbnQgZW1waGFzaXNNYXJrT2Zmc2V0LCBSZW5kZXJDb21iaW5l
VGV4dCogY29tYmluZWRUZXh0KQoreworICAgIG1fZW1waGFzaXNNYXJrID0gZW1waGFzaXNNYXJr
OworICAgIG1fZW1waGFzaXNNYXJrT2Zmc2V0ID0gZW1waGFzaXNNYXJrT2Zmc2V0OworICAgIG1f
Y29tYmluZWRUZXh0ID0gY29tYmluZWRUZXh0OworfQorCitpbmxpbmUgdm9pZCBUZXh0UGFpbnRl
cjo6YWRkVGV4dFNoYWRvdyhjb25zdCBTaGFkb3dEYXRhKiB0ZXh0U2hhZG93LCBjb25zdCBTaGFk
b3dEYXRhKiBzZWxlY3Rpb25TaGFkb3cpCit7CisgICAgbV90ZXh0U2hhZG93ID0gdGV4dFNoYWRv
dzsKKyAgICBtX3NlbGVjdGlvblNoYWRvdyA9IHNlbGVjdGlvblNoYWRvdzsKK30KKwogY2xhc3Mg
U2hhZG93QXBwbGllciB7CiBwdWJsaWM6CiAgICAgU2hhZG93QXBwbGllcihHcmFwaGljc0NvbnRl
eHQmLCBjb25zdCBTaGFkb3dEYXRhKiwgY29uc3QgRmxvYXRSZWN0JiB0ZXh0UmVjdCwgYm9vbCBs
YXN0U2hhZG93SXRlcmF0aW9uU2hvdWxkRHJhd1RleHQgPSB0cnVlLCBib29sIG9wYXF1ZSA9IGZh
bHNlLCBGb250T3JpZW50YXRpb24gPSBIb3Jpem9udGFsKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267126</attachid>
            <date>2015-12-10 13:23:58 -0800</date>
            <delta_ts>2015-12-10 15:37:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152148-20151210132326.patch</filename>
            <type>text/plain</type>
            <size>22093</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkzODkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODhiMzBmZjM1MWViZTVi
OTM1MDVkYWIwZTk0MWIyMDkzNDVkMWU4Ny4uNTkwMzZhODMwZjQ0ZDBhN2IxM2FkN2VjZjkzNWQ3
OGRiNDgxZjZkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE1LTEyLTEwICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgVGV4dFBhaW50ZXI6IEFkZCBz
dXBwb3J0IGZvciBwYWludGluZyBtdWx0aXBsZSB0ZXh0IHJ1bnMuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTIxNDgKKworICAgICAgICBSZXZpZXdl
ZCBieSBTaW1vbiBGcmFzZXIuCisKKyAgICAgICAgVGhpcyBpcyBpbiBwcmVwYXJhdGlvbiBmb3Ig
YWRkaW5nIHNpbXBsZSBsaW5lIGxheW91dCBhcyBhIGNsaWVudC4KKworICAgICAgICBObyBjaGFu
Z2UgaW4gZnVuY3Rpb25hbGl0eS4KKworICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVUZXh0Qm94
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdTa2lwSW5rVW5kZXJsaW5lKTogRGVjb3VwbGUg
dW5kZXJsaW5lIHNraXBwaW5nIGludGVyc2VjdGlvbiBjYWxjdWxhdGlvbiBhbmQgdGV4dCBwYWlu
dGVyLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6cGFpbnQpOgorICAgICAgICAo
V2ViQ29yZTo6SW5saW5lVGV4dEJveDo6cGFpbnREZWNvcmF0aW9uKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvSW5saW5lVGV4dEJveC5oOgorICAgICAgICAqIHJlbmRlcmluZy9UZXh0UGFpbnRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0UGFpbnRlcjo6VGV4dFBhaW50ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dFBhaW50ZXI6OnBhaW50VGV4dFdpdGhTaGFkb3dzKToKKyAgICAgICAg
KFdlYkNvcmU6OlRleHRQYWludGVyOjpwYWludFRleHRBbmRFbXBoYXNpc01hcmtzSWZOZWVkZWQp
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dFBhaW50ZXI6OnBhaW50VGV4dCk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0UGFpbnRlcjo6ZGFzaGVzRm9ySW50ZXJzZWN0aW9uc1dpdGhSZWN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvVGV4dFBhaW50ZXIuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlRleHRQYWludGVyOjpzZXRUZXh0UGFpbnRTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpU
ZXh0UGFpbnRlcjo6c2V0U2VsZWN0aW9uUGFpbnRTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpU
ZXh0UGFpbnRlcjo6c2V0SXNIb3Jpem9udGFsKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRQYWlu
dGVyOjpzZXRGb250KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRQYWludGVyOjphZGRFbXBoYXNp
cyk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0UGFpbnRlcjo6YWRkVGV4dFNoYWRvdyk6CisKIDIw
MTUtMTItMDkgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBUZXh0
UGFpbnRlcjogTWFrZSBiZWZvcmUgYW5kIGFmdGVyIHNlbGVjdGlvbiBwYWludGluZyBtb3JlIGV4
cGxpY2l0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRC
b3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCmluZGV4
IGRhYmFkMWJlODM3YmQ5OWVhOTkyNzljZDI4NWMzZDFiM2VmZTM3ZmUuLjVkMjZjYjc0NzVjNzgx
NzE3ZDZlN2VlNDUxMWEzYjRiNTkxNzVlZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
SW5saW5lVGV4dEJveC5jcHAKQEAgLTExOSwxNCArMTE5LDE0IEBAIHN0YXRpYyBEYXNoQXJyYXkg
dHJhbnNsYXRlSW50ZXJzZWN0aW9uUG9pbnRzVG9Ta2lwSW5rQm91bmRhcmllcyhjb25zdCBEYXNo
QXJyYXkmCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc3RhdGljIHZvaWQgZHJhd1NraXBJbmtV
bmRlcmxpbmUoVGV4dFBhaW50ZXImIHRleHRQYWludGVyLCBHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIEZsb2F0UG9pbnQgbG9jYWxPcmlnaW4sIGZsb2F0IHVuZGVybGluZU9mZnNldCwgZmxvYXQg
d2lkdGgsIGJvb2wgaXNQcmludGluZywgYm9vbCBkb3VibGVMaW5lcykKK3N0YXRpYyB2b2lkIGRy
YXdTa2lwSW5rVW5kZXJsaW5lKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRm9udENh
c2NhZGUmIGZvbnQsIGNvbnN0IFRleHRSdW4mIHRleHRSdW4sIGNvbnN0IEZsb2F0UG9pbnQmIHRl
eHRPcmlnaW4sIGNvbnN0IEZsb2F0UG9pbnQmIGxvY2FsT3JpZ2luLAorICAgIGZsb2F0IHVuZGVy
bGluZU9mZnNldCwgZmxvYXQgd2lkdGgsIGJvb2wgaXNQcmludGluZywgYm9vbCBkb3VibGVMaW5l
cykKIHsKICAgICBGbG9hdFBvaW50IGFkanVzdGVkTG9jYWxPcmlnaW4gPSBsb2NhbE9yaWdpbjsK
ICAgICBhZGp1c3RlZExvY2FsT3JpZ2luLm1vdmUoMCwgdW5kZXJsaW5lT2Zmc2V0KTsKICAgICBG
bG9hdFJlY3QgdW5kZXJsaW5lQm91bmRpbmdCb3ggPSBjb250ZXh0LmNvbXB1dGVMaW5lQm91bmRz
Rm9yVGV4dChhZGp1c3RlZExvY2FsT3JpZ2luLCB3aWR0aCwgaXNQcmludGluZyk7Ci0gICAgRGFz
aEFycmF5IGludGVyc2VjdGlvbnMgPSB0ZXh0UGFpbnRlci5kYXNoZXNGb3JJbnRlcnNlY3Rpb25z
V2l0aFJlY3QodW5kZXJsaW5lQm91bmRpbmdCb3gpOworICAgIERhc2hBcnJheSBpbnRlcnNlY3Rp
b25zID0gZm9udC5kYXNoZXNGb3JJbnRlcnNlY3Rpb25zV2l0aFJlY3QodGV4dFJ1biwgdGV4dE9y
aWdpbiwgdW5kZXJsaW5lQm91bmRpbmdCb3gpOwogICAgIERhc2hBcnJheSBhID0gdHJhbnNsYXRl
SW50ZXJzZWN0aW9uUG9pbnRzVG9Ta2lwSW5rQm91bmRhcmllcyhpbnRlcnNlY3Rpb25zLCB1bmRl
cmxpbmVCb3VuZGluZ0JveC5oZWlnaHQoKSwgd2lkdGgpOwotCiAgICAgQVNTRVJUKCEoYS5zaXpl
KCkgJSAyKSk7CiAgICAgY29udGV4dC5kcmF3TGluZXNGb3JUZXh0KGFkanVzdGVkTG9jYWxPcmln
aW4sIGEsIGlzUHJpbnRpbmcsIGRvdWJsZUxpbmVzKTsKIH0KQEAgLTYxMiw4ICs2MTIsMTUgQEAg
dm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5
b3V0UG9pbnQmIHBhaW50T2Zmc2V0LAogICAgIGVsc2UKICAgICAgICAgdGV4dE9yaWdpbi5zZXRY
KHJvdW5kVG9EZXZpY2VQaXhlbChMYXlvdXRVbml0KHRleHRPcmlnaW4ueCgpKSwgcmVuZGVyZXIo
KS5kb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCkpKTsKIAotICAgIFRleHRQYWludGVyIHRl
eHRQYWludGVyKGNvbnRleHQsIHBhaW50U2VsZWN0ZWRUZXh0T25seSwgcGFpbnRTZWxlY3RlZFRl
eHRTZXBhcmF0ZWx5LCBmb250LCBzZWxlY3Rpb25TdGFydCwgc2VsZWN0aW9uRW5kLCBsZW5ndGgs
IGVtcGhhc2lzTWFyaywgY29tYmluZWRUZXh0LCB0ZXh0UnVuLCBib3hSZWN0LCB0ZXh0T3JpZ2lu
LCBlbXBoYXNpc01hcmtPZmZzZXQsIHRleHRTaGFkb3csIHNlbGVjdGlvblNoYWRvdywgaXNIb3Jp
em9udGFsKCksIHRleHRQYWludFN0eWxlLCBzZWxlY3Rpb25QYWludFN0eWxlKTsKLSAgICB0ZXh0
UGFpbnRlci5wYWludFRleHQoKTsKKyAgICBUZXh0UGFpbnRlciB0ZXh0UGFpbnRlcihjb250ZXh0
KTsKKyAgICB0ZXh0UGFpbnRlci5zZXRGb250KGZvbnQpOworICAgIHRleHRQYWludGVyLnNldFRl
eHRQYWludFN0eWxlKHRleHRQYWludFN0eWxlKTsKKyAgICB0ZXh0UGFpbnRlci5zZXRTZWxlY3Rp
b25QYWludFN0eWxlKHNlbGVjdGlvblBhaW50U3R5bGUpOworICAgIHRleHRQYWludGVyLnNldElz
SG9yaXpvbnRhbChpc0hvcml6b250YWwoKSk7CisgICAgdGV4dFBhaW50ZXIuYWRkVGV4dFNoYWRv
dyh0ZXh0U2hhZG93LCBzZWxlY3Rpb25TaGFkb3cpOworICAgIHRleHRQYWludGVyLmFkZEVtcGhh
c2lzKGVtcGhhc2lzTWFyaywgZW1waGFzaXNNYXJrT2Zmc2V0LCBjb21iaW5lZFRleHQpOworCisg
ICAgdGV4dFBhaW50ZXIucGFpbnRUZXh0KHRleHRSdW4sIGxlbmd0aCwgYm94UmVjdCwgdGV4dE9y
aWdpbiwgc2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkVuZCwgcGFpbnRTZWxlY3RlZFRleHRPbmx5
LCBwYWludFNlbGVjdGVkVGV4dFNlcGFyYXRlbHkpOwogCiAgICAgLy8gUGFpbnQgZGVjb3JhdGlv
bnMKICAgICBUZXh0RGVjb3JhdGlvbiB0ZXh0RGVjb3JhdGlvbnMgPSBsaW5lU3R5bGUudGV4dERl
Y29yYXRpb25zSW5FZmZlY3QoKTsKQEAgLTYyMSw3ICs2MjgsNyBAQCB2b2lkIElubGluZVRleHRC
b3g6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRP
ZmZzZXQsCiAgICAgICAgIHVwZGF0ZUdyYXBoaWNzQ29udGV4dChjb250ZXh0LCB0ZXh0UGFpbnRT
dHlsZSk7CiAgICAgICAgIGlmIChjb21iaW5lZFRleHQpCiAgICAgICAgICAgICBjb250ZXh0LmNv
bmNhdENUTShyb3RhdGlvbihib3hSZWN0LCBDbG9ja3dpc2UpKTsKLSAgICAgICAgcGFpbnREZWNv
cmF0aW9uKGNvbnRleHQsIGJveE9yaWdpbiwgdGV4dERlY29yYXRpb25zLCB0ZXh0U2hhZG93LCB0
ZXh0UGFpbnRlcik7CisgICAgICAgIHBhaW50RGVjb3JhdGlvbihjb250ZXh0LCBmb250LCB0ZXh0
UnVuLCB0ZXh0T3JpZ2luLCBib3hPcmlnaW4sIHRleHREZWNvcmF0aW9ucywgdGV4dFNoYWRvdyk7
CiAgICAgICAgIGlmIChjb21iaW5lZFRleHQpCiAgICAgICAgICAgICBjb250ZXh0LmNvbmNhdENU
TShyb3RhdGlvbihib3hSZWN0LCBDb3VudGVyY2xvY2t3aXNlKSk7CiAgICAgfQpAQCAtODk0LDEy
ICs5MDEsMTQgQEAgc3RhdGljIHZvaWQgc3Ryb2tlV2F2eVRleHREZWNvcmF0aW9uKEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgRmxvYXRQb2ludCYgcDEsIEYKICAgICBjb250ZXh0LnN0cm9rZVBh
dGgocGF0aCk7CiB9CiAKLXZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnREZWNvcmF0aW9uKEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRQb2ludCYgYm94T3JpZ2luLCBUZXh0RGVj
b3JhdGlvbiBkZWNvcmF0aW9uLCBjb25zdCBTaGFkb3dEYXRhKiBzaGFkb3csIFRleHRQYWludGVy
JiB0ZXh0UGFpbnRlcikKK3ZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnREZWNvcmF0aW9uKEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRm9udENhc2NhZGUmIGZvbnQsIGNvbnN0IFRleHRS
dW4mIHRleHRSdW4sIGNvbnN0IEZsb2F0UG9pbnQmIHRleHRPcmlnaW4sIGNvbnN0IEZsb2F0UG9p
bnQmIGJveE9yaWdpbiwKKyAgICBUZXh0RGVjb3JhdGlvbiBkZWNvcmF0aW9uLCBjb25zdCBTaGFk
b3dEYXRhKiBzaGFkb3cpCiB7CiAjaWYgIUVOQUJMRShDU1MzX1RFWFRfREVDT1JBVElPTl9TS0lQ
X0lOSykKLSAgICBVTlVTRURfUEFSQU0odGV4dFBhaW50ZXIpOworICAgIFVOVVNFRF9QQVJBTShm
b250KTsKKyAgICBVTlVTRURfUEFSQU0odGV4dFJ1bik7CisgICAgVU5VU0VEX1BBUkFNKHRleHRP
cmlnaW4pOwogI2VuZGlmCi0KICAgICBpZiAobV90cnVuY2F0aW9uID09IGNGdWxsVHJ1bmNhdGlv
bikKICAgICAgICAgcmV0dXJuOwogCkBAIC05ODUsOSArOTk0LDggQEAgdm9pZCBJbmxpbmVUZXh0
Qm94OjpwYWludERlY29yYXRpb24oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9h
dFBvaW50JgogICAgICAgICAgICAgZGVmYXVsdDoKICNpZiBFTkFCTEUoQ1NTM19URVhUX0RFQ09S
QVRJT05fU0tJUF9JTkspCiAgICAgICAgICAgICAgICAgaWYgKChsaW5lU3R5bGUudGV4dERlY29y
YXRpb25Ta2lwKCkgPT0gVGV4dERlY29yYXRpb25Ta2lwSW5rIHx8IGxpbmVTdHlsZS50ZXh0RGVj
b3JhdGlvblNraXAoKSA9PSBUZXh0RGVjb3JhdGlvblNraXBBdXRvKSAmJiBpc0hvcml6b250YWwo
KSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbnRleHQucGFpbnRpbmdEaXNhYmxlZCgp
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBkcmF3U2tpcElua1VuZGVybGluZSh0ZXh0UGFp
bnRlciwgY29udGV4dCwgbG9jYWxPcmlnaW4sIHVuZGVybGluZU9mZnNldCwgd2lkdGgsIGlzUHJp
bnRpbmcsIHVuZGVybGluZVN0eWxlID09IFRleHREZWNvcmF0aW9uU3R5bGVEb3VibGUpOwotICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmICghY29udGV4dC5wYWlu
dGluZ0Rpc2FibGVkKCkpCisgICAgICAgICAgICAgICAgICAgICAgICBkcmF3U2tpcElua1VuZGVy
bGluZShjb250ZXh0LCBmb250LCB0ZXh0UnVuLCB0ZXh0T3JpZ2luLCBsb2NhbE9yaWdpbiwgdW5k
ZXJsaW5lT2Zmc2V0LCB3aWR0aCwgaXNQcmludGluZywgdW5kZXJsaW5lU3R5bGUgPT0gVGV4dERl
Y29yYXRpb25TdHlsZURvdWJsZSk7CiAgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAg
ICAgICAgICAgIC8vIEZJWE1FOiBOZWVkIHRvIHN1cHBvcnQgdGV4dC1kZWNvcmF0aW9uLXNraXA6
IG5vbmUuCiAjZW5kaWYgLy8gQ1NTM19URVhUX0RFQ09SQVRJT05fU0tJUF9JTksKQEAgLTEwMDgs
NyArMTAxNiw3IEBAIHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnREZWNvcmF0aW9uKEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRQb2ludCYKICNpZiBFTkFCTEUoQ1NTM19URVhU
X0RFQ09SQVRJT05fU0tJUF9JTkspCiAgICAgICAgICAgICAgICAgaWYgKChsaW5lU3R5bGUudGV4
dERlY29yYXRpb25Ta2lwKCkgPT0gVGV4dERlY29yYXRpb25Ta2lwSW5rIHx8IGxpbmVTdHlsZS50
ZXh0RGVjb3JhdGlvblNraXAoKSA9PSBUZXh0RGVjb3JhdGlvblNraXBBdXRvKSAmJiBpc0hvcml6
b250YWwoKSkgewogICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbnRleHQucGFpbnRpbmdEaXNh
YmxlZCgpKQotICAgICAgICAgICAgICAgICAgICAgICAgZHJhd1NraXBJbmtVbmRlcmxpbmUodGV4
dFBhaW50ZXIsIGNvbnRleHQsIGxvY2FsT3JpZ2luLCAwLCB3aWR0aCwgaXNQcmludGluZywgb3Zl
cmxpbmVTdHlsZSA9PSBUZXh0RGVjb3JhdGlvblN0eWxlRG91YmxlKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGRyYXdTa2lwSW5rVW5kZXJsaW5lKGNvbnRleHQsIGZvbnQsIHRleHRSdW4sIHRl
eHRPcmlnaW4sIGxvY2FsT3JpZ2luLCAwLCB3aWR0aCwgaXNQcmludGluZywgb3ZlcmxpbmVTdHls
ZSA9PSBUZXh0RGVjb3JhdGlvblN0eWxlRG91YmxlKTsKICAgICAgICAgICAgICAgICB9IGVsc2UK
ICAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IE5lZWQgdG8gc3VwcG9ydCB0ZXh0LWRlY29y
YXRpb24tc2tpcDogbm9uZS4KICNlbmRpZiAvLyBDU1MzX1RFWFRfREVDT1JBVElPTl9TS0lQX0lO
SwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmgKaW5kZXggN2QwMTAwMzcz
YTg3OTQxZWIwZjk1YzY5NjM4MWMzY2NkYmE1N2IxYi4uZjNkZDY3NTA0ZDVkZDdhNTM3ODE5Mzk3
NGQ2YjA1NGNjMGVhYmU2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lu
bGluZVRleHRCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJv
eC5oCkBAIC0xNTksNyArMTU5LDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgcGFpbnRDb21wb3Np
dGlvblVuZGVybGluZShHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFBvaW50JiBib3hPcmln
aW4sIGNvbnN0IENvbXBvc2l0aW9uVW5kZXJsaW5lJik7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBw
YWludERlY29yYXRpb24oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRQb2ludCYgYm94T3Jp
Z2luLCBUZXh0RGVjb3JhdGlvbiwgY29uc3QgU2hhZG93RGF0YSosIFRleHRQYWludGVyJik7Cisg
ICAgdm9pZCBwYWludERlY29yYXRpb24oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRm9udENhc2Nh
ZGUmLCBjb25zdCBUZXh0UnVuJiwgY29uc3QgRmxvYXRQb2ludCYgdGV4dE9yaWdpbiwgY29uc3Qg
RmxvYXRQb2ludCYgYm94T3JpZ2luLCBUZXh0RGVjb3JhdGlvbiwgY29uc3QgU2hhZG93RGF0YSop
OwogICAgIHZvaWQgcGFpbnRTZWxlY3Rpb24oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRQ
b2ludCYgYm94T3JpZ2luLCBjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IEZvbnRDYXNjYWRlJiwg
Q29sb3IgdGV4dENvbG9yKTsKICAgICB2b2lkIHBhaW50RG9jdW1lbnRNYXJrZXIoR3JhcGhpY3ND
b250ZXh0JiwgY29uc3QgRmxvYXRQb2ludCYgYm94T3JpZ2luLCBSZW5kZXJlZERvY3VtZW50TWFy
a2VyJiwgY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBGb250Q2FzY2FkZSYsIGJvb2wgZ3JhbW1h
cik7CiAgICAgdm9pZCBwYWludFRleHRNYXRjaE1hcmtlcihHcmFwaGljc0NvbnRleHQmLCBjb25z
dCBGbG9hdFBvaW50JiBib3hPcmlnaW4sIFJlbmRlcmVkRG9jdW1lbnRNYXJrZXImLCBjb25zdCBS
ZW5kZXJTdHlsZSYsIGNvbnN0IEZvbnRDYXNjYWRlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvVGV4dFBhaW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1RleHRQYWludGVyLmNwcAppbmRleCBlYmQ5Mzc4MzgwYzA4MjdjYjU5OGQxNTQ4ZjNkZGUxNWEy
OGE3MDk3Li5hZjk5MGU5YzU1YjNlMDNhYWQxNzBjYmIyMGU1ODBjMGZiY2I0NjZmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBhaW50ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRlci5jcHAKQEAgLTI2LDcgKzI2LDYgQEAKICNp
bmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJJbmxpbmVUZXh0Qm94LmgiCiAj
aW5jbHVkZSAiUmVuZGVyQ29tYmluZVRleHQuaCIKLSNpbmNsdWRlICJUZXh0UGFpbnRTdHlsZS5o
IgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CkBAIC03OSwyOCArNzgsOCBAQCBTaGFkb3dBcHBsaWVyOjp+U2hhZG93QXBwbGllcigpCiAgICAg
ICAgIG1fY29udGV4dC5jbGVhclNoYWRvdygpOwogfQogCi1UZXh0UGFpbnRlcjo6VGV4dFBhaW50
ZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBib29sIHBhaW50U2VsZWN0ZWRUZXh0T25seSwg
Ym9vbCBwYWludFNlbGVjdGVkVGV4dFNlcGFyYXRlbHksIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250
LCBpbnQgc2VsZWN0aW9uU3RhcnQsCi0gICAgaW50IHNlbGVjdGlvbkVuZCwgaW50IGxlbmd0aCwg
Y29uc3QgQXRvbWljU3RyaW5nJiBlbXBoYXNpc01hcmssIFJlbmRlckNvbWJpbmVUZXh0KiBjb21i
aW5lZFRleHQsIFRleHRSdW4mIHRleHRSdW4sIEZsb2F0UmVjdCYgYm94UmVjdCwKLSAgICBGbG9h
dFBvaW50JiB0ZXh0T3JpZ2luLCBpbnQgZW1waGFzaXNNYXJrT2Zmc2V0LCBjb25zdCBTaGFkb3dE
YXRhKiB0ZXh0U2hhZG93LCBjb25zdCBTaGFkb3dEYXRhKiBzZWxlY3Rpb25TaGFkb3csIGJvb2wg
dGV4dEJveElzSG9yaXpvbnRhbCwKLSAgICBUZXh0UGFpbnRTdHlsZSYgdGV4dFBhaW50U3R5bGUs
IFRleHRQYWludFN0eWxlJiBzZWxlY3Rpb25QYWludFN0eWxlKQorVGV4dFBhaW50ZXI6OlRleHRQ
YWludGVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKICAgICA6IG1fY29udGV4dChjb250ZXh0
KQotICAgICwgbV90ZXh0UGFpbnRTdHlsZSh0ZXh0UGFpbnRTdHlsZSkKLSAgICAsIG1fc2VsZWN0
aW9uUGFpbnRTdHlsZShzZWxlY3Rpb25QYWludFN0eWxlKQotICAgICwgbV90ZXh0U2hhZG93KHRl
eHRTaGFkb3cpCi0gICAgLCBtX3NlbGVjdGlvblNoYWRvdyhzZWxlY3Rpb25TaGFkb3cpCi0gICAg
LCBtX3BhaW50U2VsZWN0ZWRUZXh0T25seShwYWludFNlbGVjdGVkVGV4dE9ubHkpCi0gICAgLCBt
X3BhaW50U2VsZWN0ZWRUZXh0U2VwYXJhdGVseShwYWludFNlbGVjdGVkVGV4dFNlcGFyYXRlbHkp
Ci0gICAgLCBtX2ZvbnQoZm9udCkKLSAgICAsIG1fc2VsZWN0aW9uU3RhcnQoc2VsZWN0aW9uU3Rh
cnQpCi0gICAgLCBtX3NlbGVjdGlvbkVuZChzZWxlY3Rpb25FbmQpCi0gICAgLCBtX2xlbmd0aChs
ZW5ndGgpCi0gICAgLCBtX2VtcGhhc2lzTWFyayhlbXBoYXNpc01hcmspCi0gICAgLCBtX2NvbWJp
bmVkVGV4dChjb21iaW5lZFRleHQpCi0gICAgLCBtX3RleHRSdW4odGV4dFJ1bikKLSAgICAsIG1f
Ym94UmVjdChib3hSZWN0KQotICAgICwgbV90ZXh0T3JpZ2luKHRleHRPcmlnaW4pCi0gICAgLCBt
X2VtcGhhc2lzTWFya09mZnNldChlbXBoYXNpc01hcmtPZmZzZXQpCi0gICAgLCBtX3RleHRCb3hJ
c0hvcml6b250YWwodGV4dEJveElzSG9yaXpvbnRhbCkKIHsKIH0KIApAQCAtMTE0LDggKzkzLDgg
QEAgdm9pZCBUZXh0UGFpbnRlcjo6ZHJhd1RleHRPckVtcGhhc2lzTWFya3MoY29uc3QgRm9udENh
c2NhZGUmIGZvbnQsIGNvbnN0IFRleHRSdW4KICAgICAgICAgbV9jb250ZXh0LmRyYXdFbXBoYXNp
c01hcmtzKGZvbnQsIHRleHRSdW4sIGVtcGhhc2lzTWFyaywgdGV4dE9yaWdpbiArIEludFNpemUo
MCwgZW1waGFzaXNNYXJrT2Zmc2V0KSwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCk7CiB9CiAKLXZv
aWQgVGV4dFBhaW50ZXI6OnBhaW50VGV4dFdpdGhTaGFkb3dzKGNvbnN0IFNoYWRvd0RhdGEqIHNo
YWRvdywgY29uc3QgRm9udENhc2NhZGUmIGZvbnQsIGNvbnN0IFRleHRSdW4mIHRleHRSdW4sIGNv
bnN0IEF0b21pY1N0cmluZyYgZW1waGFzaXNNYXJrLAotICAgIGludCBlbXBoYXNpc01hcmtPZmZz
ZXQsIGludCBzdGFydE9mZnNldCwgaW50IGVuZE9mZnNldCwgY29uc3QgRmxvYXRQb2ludCYgdGV4
dE9yaWdpbiwgYm9vbCBzdHJva2VkKQordm9pZCBUZXh0UGFpbnRlcjo6cGFpbnRUZXh0V2l0aFNo
YWRvd3MoY29uc3QgU2hhZG93RGF0YSogc2hhZG93LCBjb25zdCBGb250Q2FzY2FkZSYgZm9udCwg
Y29uc3QgVGV4dFJ1biYgdGV4dFJ1biwgY29uc3QgRmxvYXRSZWN0JiBib3hSZWN0LCBjb25zdCBG
bG9hdFBvaW50JiB0ZXh0T3JpZ2luLAorICAgIGludCBzdGFydE9mZnNldCwgaW50IGVuZE9mZnNl
dCwgY29uc3QgQXRvbWljU3RyaW5nJiBlbXBoYXNpc01hcmssIGludCBlbXBoYXNpc01hcmtPZmZz
ZXQsIGJvb2wgc3Ryb2tlZCkKIHsKICAgICBpZiAoIXNoYWRvdykgewogICAgICAgICBkcmF3VGV4
dE9yRW1waGFzaXNNYXJrcyhmb250LCB0ZXh0UnVuLCBlbXBoYXNpc01hcmssIGVtcGhhc2lzTWFy
a09mZnNldCwgdGV4dE9yaWdpbiwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCk7CkBAIC0xMjgsNyAr
MTA3LDcgQEAgdm9pZCBUZXh0UGFpbnRlcjo6cGFpbnRUZXh0V2l0aFNoYWRvd3MoY29uc3QgU2hh
ZG93RGF0YSogc2hhZG93LCBjb25zdCBGb250Q2FzY2EKICAgICBpZiAoIW9wYXF1ZSkKICAgICAg
ICAgbV9jb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcjo6YmxhY2spOwogICAgIHdoaWxlIChzaGFk
b3cpIHsKLSAgICAgICAgU2hhZG93QXBwbGllciBzaGFkb3dBcHBsaWVyKG1fY29udGV4dCwgc2hh
ZG93LCBtX2JveFJlY3QsIGxhc3RTaGFkb3dJdGVyYXRpb25TaG91bGREcmF3VGV4dCwgb3BhcXVl
LCBtX3RleHRCb3hJc0hvcml6b250YWwgPyBIb3Jpem9udGFsIDogVmVydGljYWwpOworICAgICAg
ICBTaGFkb3dBcHBsaWVyIHNoYWRvd0FwcGxpZXIobV9jb250ZXh0LCBzaGFkb3csIGJveFJlY3Qs
IGxhc3RTaGFkb3dJdGVyYXRpb25TaG91bGREcmF3VGV4dCwgb3BhcXVlLCBtX3RleHRCb3hJc0hv
cml6b250YWwgPyBIb3Jpem9udGFsIDogVmVydGljYWwpOwogICAgICAgICBpZiAoIXNoYWRvd0Fw
cGxpZXIubm90aGluZ1RvRHJhdygpKQogICAgICAgICAgICAgZHJhd1RleHRPckVtcGhhc2lzTWFy
a3MoZm9udCwgdGV4dFJ1biwgZW1waGFzaXNNYXJrLCBlbXBoYXNpc01hcmtPZmZzZXQsIHRleHRP
cmlnaW4gKyBzaGFkb3dBcHBsaWVyLmV4dHJhT2Zmc2V0KCksIHN0YXJ0T2Zmc2V0LCBlbmRPZmZz
ZXQpOwogICAgICAgICBzaGFkb3cgPSBzaGFkb3ctPm5leHQoKTsKQEAgLTE0MSw1OSArMTIwLDU2
IEBAIHZvaWQgVGV4dFBhaW50ZXI6OnBhaW50VGV4dFdpdGhTaGFkb3dzKGNvbnN0IFNoYWRvd0Rh
dGEqIHNoYWRvdywgY29uc3QgRm9udENhc2NhCiAgICAgfQogfQogCi12b2lkIFRleHRQYWludGVy
OjpwYWludFRleHRBbmRFbXBoYXNpc01hcmtzSWZOZWVkZWQoaW50IHN0YXJ0T2Zmc2V0LCBpbnQg
ZW5kT2Zmc2V0LCBjb25zdCBUZXh0UGFpbnRTdHlsZSYgcGFpbnRTdHlsZSwgY29uc3QgU2hhZG93
RGF0YSogc2hhZG93KQordm9pZCBUZXh0UGFpbnRlcjo6cGFpbnRUZXh0QW5kRW1waGFzaXNNYXJr
c0lmTmVlZGVkKGNvbnN0IFRleHRSdW4mIHRleHRSdW4sIGNvbnN0IEZsb2F0UmVjdCYgYm94UmVj
dCwgY29uc3QgRmxvYXRQb2ludCYgdGV4dE9yaWdpbiwgaW50IHN0YXJ0T2Zmc2V0LCBpbnQgZW5k
T2Zmc2V0LAorICAgIGNvbnN0IFRleHRQYWludFN0eWxlJiBwYWludFN0eWxlLCBjb25zdCBTaGFk
b3dEYXRhKiBzaGFkb3cpCiB7CiAgICAgLy8gRklYTUU6IFRydW5jYXRlIHJpZ2h0LXRvLWxlZnQg
dGV4dCBjb3JyZWN0bHkuCi0gICAgcGFpbnRUZXh0V2l0aFNoYWRvd3Moc2hhZG93LCBtX2ZvbnQs
IG1fdGV4dFJ1biwgbnVsbEF0b20sIDAsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQsIG1fdGV4dE9y
aWdpbiwgcGFpbnRTdHlsZS5zdHJva2VXaWR0aCA+IDApOworICAgIHBhaW50VGV4dFdpdGhTaGFk
b3dzKHNoYWRvdywgKm1fZm9udCwgdGV4dFJ1biwgYm94UmVjdCwgdGV4dE9yaWdpbiwgc3RhcnRP
ZmZzZXQsIGVuZE9mZnNldCwgbnVsbEF0b20sIDAsIHBhaW50U3R5bGUuc3Ryb2tlV2lkdGggPiAw
KTsKIAogICAgIGlmIChtX2VtcGhhc2lzTWFyay5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIEZsb2F0UG9pbnQgYm94T3JpZ2luID0gbV9ib3hSZWN0LmxvY2F0aW9uKCk7CisgICAg
RmxvYXRQb2ludCBib3hPcmlnaW4gPSBib3hSZWN0LmxvY2F0aW9uKCk7CiAgICAgdXBkYXRlR3Jh
cGhpY3NDb250ZXh0KG1fY29udGV4dCwgcGFpbnRTdHlsZSwgVXNlRW1waGFzaXNNYXJrQ29sb3Ip
OwogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxUZXh0UnVuPiBvYmplY3RSZXBsYWNlbWVudENo
YXJhY3RlclRleHRSdW4oU3RyaW5nVmlldygmb2JqZWN0UmVwbGFjZW1lbnRDaGFyYWN0ZXIsIDEp
KTsKLSAgICBUZXh0UnVuJiBlbXBoYXNpc01hcmtUZXh0UnVuID0gbV9jb21iaW5lZFRleHQgPyBv
YmplY3RSZXBsYWNlbWVudENoYXJhY3RlclRleHRSdW4uZ2V0KCkgOiBtX3RleHRSdW47Ci0gICAg
RmxvYXRQb2ludCBlbXBoYXNpc01hcmtUZXh0T3JpZ2luID0gbV9jb21iaW5lZFRleHQgPyBGbG9h
dFBvaW50KGJveE9yaWdpbi54KCkgKyBtX2JveFJlY3Qud2lkdGgoKSAvIDIsIGJveE9yaWdpbi55
KCkgKyBtX2ZvbnQuZm9udE1ldHJpY3MoKS5hc2NlbnQoKSkgOiBtX3RleHRPcmlnaW47CisgICAg
Y29uc3QgVGV4dFJ1biYgZW1waGFzaXNNYXJrVGV4dFJ1biA9IG1fY29tYmluZWRUZXh0ID8gb2Jq
ZWN0UmVwbGFjZW1lbnRDaGFyYWN0ZXJUZXh0UnVuLmdldCgpIDogdGV4dFJ1bjsKKyAgICBGbG9h
dFBvaW50IGVtcGhhc2lzTWFya1RleHRPcmlnaW4gPSBtX2NvbWJpbmVkVGV4dCA/IEZsb2F0UG9p
bnQoYm94T3JpZ2luLngoKSArIGJveFJlY3Qud2lkdGgoKSAvIDIsIGJveE9yaWdpbi55KCkgKyBt
X2ZvbnQtPmZvbnRNZXRyaWNzKCkuYXNjZW50KCkpIDogdGV4dE9yaWdpbjsKICAgICBpZiAobV9j
b21iaW5lZFRleHQpCi0gICAgICAgIG1fY29udGV4dC5jb25jYXRDVE0ocm90YXRpb24obV9ib3hS
ZWN0LCBDbG9ja3dpc2UpKTsKKyAgICAgICAgbV9jb250ZXh0LmNvbmNhdENUTShyb3RhdGlvbihi
b3hSZWN0LCBDbG9ja3dpc2UpKTsKIAogICAgIC8vIEZJWE1FOiBUcnVuY2F0ZSByaWdodC10by1s
ZWZ0IHRleHQgY29ycmVjdGx5LgotICAgIHBhaW50VGV4dFdpdGhTaGFkb3dzKHNoYWRvdywgbV9j
b21iaW5lZFRleHQgPyBtX2NvbWJpbmVkVGV4dC0+b3JpZ2luYWxGb250KCkgOiBtX2ZvbnQsIGVt
cGhhc2lzTWFya1RleHRSdW4sIG1fZW1waGFzaXNNYXJrLCBtX2VtcGhhc2lzTWFya09mZnNldCwg
c3RhcnRPZmZzZXQsIGVuZE9mZnNldCwgZW1waGFzaXNNYXJrVGV4dE9yaWdpbiwgcGFpbnRTdHls
ZS5zdHJva2VXaWR0aCA+IDApOworICAgIHBhaW50VGV4dFdpdGhTaGFkb3dzKHNoYWRvdywgbV9j
b21iaW5lZFRleHQgPyBtX2NvbWJpbmVkVGV4dC0+b3JpZ2luYWxGb250KCkgOiAqbV9mb250LCBl
bXBoYXNpc01hcmtUZXh0UnVuLCBib3hSZWN0LCBlbXBoYXNpc01hcmtUZXh0T3JpZ2luLCBzdGFy
dE9mZnNldCwgZW5kT2Zmc2V0LAorICAgICAgICBtX2VtcGhhc2lzTWFyaywgbV9lbXBoYXNpc01h
cmtPZmZzZXQsIHBhaW50U3R5bGUuc3Ryb2tlV2lkdGggPiAwKTsKIAogICAgIGlmIChtX2NvbWJp
bmVkVGV4dCkKLSAgICAgICAgbV9jb250ZXh0LmNvbmNhdENUTShyb3RhdGlvbihtX2JveFJlY3Qs
IENvdW50ZXJjbG9ja3dpc2UpKTsKKyAgICAgICAgbV9jb250ZXh0LmNvbmNhdENUTShyb3RhdGlv
bihib3hSZWN0LCBDb3VudGVyY2xvY2t3aXNlKSk7CiB9CiAgICAgCi12b2lkIFRleHRQYWludGVy
OjpwYWludFRleHQoKQordm9pZCBUZXh0UGFpbnRlcjo6cGFpbnRUZXh0KGNvbnN0IFRleHRSdW4m
IHRleHRSdW4sIGludCBsZW5ndGgsIGNvbnN0IEZsb2F0UmVjdCYgYm94UmVjdCwgY29uc3QgRmxv
YXRQb2ludCYgdGV4dE9yaWdpbiwgaW50IHNlbGVjdGlvblN0YXJ0LCBpbnQgc2VsZWN0aW9uRW5k
LAorICAgIGJvb2wgcGFpbnRTZWxlY3RlZFRleHRPbmx5LCBib29sIHBhaW50U2VsZWN0ZWRUZXh0
U2VwYXJhdGVseSkKIHsKLSAgICBpZiAoIW1fcGFpbnRTZWxlY3RlZFRleHRPbmx5KSB7CisgICAg
QVNTRVJUKG1fZm9udCk7CisgICAgaWYgKCFwYWludFNlbGVjdGVkVGV4dE9ubHkpIHsKICAgICAg
ICAgLy8gRm9yIHN0cm9rZWQgcGFpbnRpbmcsIHdlIGhhdmUgdG8gY2hhbmdlIHRoZSB0ZXh0IGRy
YXdpbmcgbW9kZS4gSXQncyBwcm9iYWJseSBkYW5nZXJvdXMgdG8gbGVhdmUgdGhhdCBtdXRhdGVk
IGFzIGEgc2lkZQogICAgICAgICAvLyBlZmZlY3QsIHNvIG9ubHkgd2hlbiB3ZSBrbm93IHdlJ3Jl
IHN0cm9raW5nLCBkbyBhIHNhdmUvcmVzdG9yZS4KICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3Rh
dGVTYXZlciBzdGF0ZVNhdmVyKG1fY29udGV4dCwgbV90ZXh0UGFpbnRTdHlsZS5zdHJva2VXaWR0
aCA+IDApOwogICAgICAgICB1cGRhdGVHcmFwaGljc0NvbnRleHQobV9jb250ZXh0LCBtX3RleHRQ
YWludFN0eWxlKTsKLSAgICAgICAgaWYgKG1fcGFpbnRTZWxlY3RlZFRleHRTZXBhcmF0ZWx5KSB7
CisgICAgICAgIGlmIChwYWludFNlbGVjdGVkVGV4dFNlcGFyYXRlbHkpIHsKICAgICAgICAgICAg
IC8vIFBhaW50IHRoZSBiZWZvcmUgYW5kIGFmdGVyIHNlbGVjdGlvbiBwYXJ0cy4KLSAgICAgICAg
ICAgIGlmIChtX3NlbGVjdGlvblN0YXJ0ID4gMCkKLSAgICAgICAgICAgICAgICBwYWludFRleHRB
bmRFbXBoYXNpc01hcmtzSWZOZWVkZWQoMCwgbV9zZWxlY3Rpb25TdGFydCwgbV90ZXh0UGFpbnRT
dHlsZSwgbV90ZXh0U2hhZG93KTsKLSAgICAgICAgICAgIGlmIChtX3NlbGVjdGlvbkVuZCA8IG1f
bGVuZ3RoKQotICAgICAgICAgICAgICAgIHBhaW50VGV4dEFuZEVtcGhhc2lzTWFya3NJZk5lZWRl
ZChtX3NlbGVjdGlvbkVuZCwgbV9sZW5ndGgsIG1fdGV4dFBhaW50U3R5bGUsIG1fdGV4dFNoYWRv
dyk7CisgICAgICAgICAgICBpZiAoc2VsZWN0aW9uU3RhcnQgPiAwKQorICAgICAgICAgICAgICAg
IHBhaW50VGV4dEFuZEVtcGhhc2lzTWFya3NJZk5lZWRlZCh0ZXh0UnVuLCBib3hSZWN0LCB0ZXh0
T3JpZ2luLCAwLCBzZWxlY3Rpb25TdGFydCwgbV90ZXh0UGFpbnRTdHlsZSwgbV90ZXh0U2hhZG93
KTsKKyAgICAgICAgICAgIGlmIChzZWxlY3Rpb25FbmQgPCBsZW5ndGgpCisgICAgICAgICAgICAg
ICAgcGFpbnRUZXh0QW5kRW1waGFzaXNNYXJrc0lmTmVlZGVkKHRleHRSdW4sIGJveFJlY3QsIHRl
eHRPcmlnaW4sIHNlbGVjdGlvbkVuZCwgbGVuZ3RoLCBtX3RleHRQYWludFN0eWxlLCBtX3RleHRT
aGFkb3cpOwogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHBhaW50VGV4dEFuZEVtcGhhc2lz
TWFya3NJZk5lZWRlZCgwLCBtX2xlbmd0aCwgbV90ZXh0UGFpbnRTdHlsZSwgbV90ZXh0U2hhZG93
KTsKKyAgICAgICAgICAgIHBhaW50VGV4dEFuZEVtcGhhc2lzTWFya3NJZk5lZWRlZCh0ZXh0UnVu
LCBib3hSZWN0LCB0ZXh0T3JpZ2luLCAwLCBsZW5ndGgsIG1fdGV4dFBhaW50U3R5bGUsIG1fdGV4
dFNoYWRvdyk7CiAgICAgfQogCiAgICAgLy8gUGFpbnQgb25seSB0aGUgdGV4dCB0aGF0IGlzIHNl
bGVjdGVkLgotICAgIGlmICgobV9wYWludFNlbGVjdGVkVGV4dE9ubHkgfHwgbV9wYWludFNlbGVj
dGVkVGV4dFNlcGFyYXRlbHkpICYmIG1fc2VsZWN0aW9uU3RhcnQgPCBtX3NlbGVjdGlvbkVuZCkg
eworICAgIGlmICgocGFpbnRTZWxlY3RlZFRleHRPbmx5IHx8IHBhaW50U2VsZWN0ZWRUZXh0U2Vw
YXJhdGVseSkgJiYgc2VsZWN0aW9uU3RhcnQgPCBzZWxlY3Rpb25FbmQpIHsKICAgICAgICAgR3Jh
cGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKG1fY29udGV4dCwgbV9zZWxlY3Rpb25Q
YWludFN0eWxlLnN0cm9rZVdpZHRoID4gMCk7CiAgICAgICAgIHVwZGF0ZUdyYXBoaWNzQ29udGV4
dChtX2NvbnRleHQsIG1fc2VsZWN0aW9uUGFpbnRTdHlsZSk7Ci0gICAgICAgIHBhaW50VGV4dEFu
ZEVtcGhhc2lzTWFya3NJZk5lZWRlZChtX3NlbGVjdGlvblN0YXJ0LCBtX3NlbGVjdGlvbkVuZCwg
bV9zZWxlY3Rpb25QYWludFN0eWxlLCBtX3NlbGVjdGlvblNoYWRvdyk7CisgICAgICAgIHBhaW50
VGV4dEFuZEVtcGhhc2lzTWFya3NJZk5lZWRlZCh0ZXh0UnVuLCBib3hSZWN0LCB0ZXh0T3JpZ2lu
LCBzZWxlY3Rpb25TdGFydCwgc2VsZWN0aW9uRW5kLCBtX3NlbGVjdGlvblBhaW50U3R5bGUsIG1f
c2VsZWN0aW9uU2hhZG93KTsKICAgICB9CiB9CiAKLSNpZiBFTkFCTEUoQ1NTM19URVhUX0RFQ09S
QVRJT05fU0tJUF9JTkspCi1EYXNoQXJyYXkgVGV4dFBhaW50ZXI6OmRhc2hlc0ZvckludGVyc2Vj
dGlvbnNXaXRoUmVjdChjb25zdCBGbG9hdFJlY3QmIGxpbmVFeHRlbnRzKQotewotICAgIHJldHVy
biBtX2ZvbnQuZGFzaGVzRm9ySW50ZXJzZWN0aW9uc1dpdGhSZWN0KG1fdGV4dFJ1biwgbV90ZXh0
T3JpZ2luLCBsaW5lRXh0ZW50cyk7Ci19Ci0jZW5kaWYKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWludGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBhaW50ZXIuaAppbmRleCAwNDExMjU5NWE1NGY3
MWMwYmZmNTYyOWZlYzZkNDQ1NjU4YzE5OTZjLi42Y2Y2ZjQ1Mzc2M2NmNTk3OGYwMzZjMmZhNzEw
OGVlMTQ4YTA3ZDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBh
aW50ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBhaW50ZXIuaApAQCAt
MjQsOSArMjQsOSBAQAogI2RlZmluZSBUZXh0UGFpbnRlcl9oCiAKICNpbmNsdWRlICJBZmZpbmVU
cmFuc2Zvcm0uaCIKLSNpbmNsdWRlICJEYXNoQXJyYXkuaCIKICNpbmNsdWRlICJSZW5kZXJUZXh0
LmgiCiAjaW5jbHVkZSAiVGV4dEZsYWdzLmgiCisjaW5jbHVkZSAiVGV4dFBhaW50U3R5bGUuaCIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00NCw0MyArNDQsNTEgQEAgc3RhdGljIGlubGlu
ZSBBZmZpbmVUcmFuc2Zvcm0gcm90YXRpb24oY29uc3QgRmxvYXRSZWN0JiBib3hSZWN0LCBSb3Rh
dGlvbkRpcmVjdGkKIAogY2xhc3MgVGV4dFBhaW50ZXIgewogcHVibGljOgotICAgIFRleHRQYWlu
dGVyKEdyYXBoaWNzQ29udGV4dCYsIGJvb2wgcGFpbnRTZWxlY3RlZFRleHRPbmx5LCBib29sIHBh
aW50U2VsZWN0ZWRUZXh0U2VwYXJhdGVseSwgY29uc3QgRm9udENhc2NhZGUmLAotICAgICAgICBp
bnQgc2VsZWN0aW9uU3RhcnQsIGludCBzZWxlY3Rpb25FbmQsIGludCBsZW5ndGgsIGNvbnN0IEF0
b21pY1N0cmluZyYgZW1waGFzaXNNYXJrLCBSZW5kZXJDb21iaW5lVGV4dCosCi0gICAgICAgIFRl
eHRSdW4mLCBGbG9hdFJlY3QmIGJveFJlY3QsIEZsb2F0UG9pbnQmIHRleHRPcmlnaW4sIGludCBl
bXBoYXNpc01hcmtPZmZzZXQsIGNvbnN0IFNoYWRvd0RhdGEqIHRleHRTaGFkb3csIGNvbnN0IFNo
YWRvd0RhdGEqIHNlbGVjdGlvblNoYWRvdywKLSAgICAgICAgYm9vbCB0ZXh0Qm94SXNIb3Jpem9u
dGFsLCBUZXh0UGFpbnRTdHlsZSYgbm9uU2VsZWN0aW9uUGFpbnRTdHlsZSwgVGV4dFBhaW50U3R5
bGUmIHNlbGVjdGlvblBhaW50U3R5bGUpOworICAgIFRleHRQYWludGVyKEdyYXBoaWNzQ29udGV4
dCYpOwogICAgIAotICAgIHZvaWQgcGFpbnRUZXh0KCk7Ci0jaWYgRU5BQkxFKENTUzNfVEVYVF9E
RUNPUkFUSU9OX1NLSVBfSU5LKQotICAgIERhc2hBcnJheSBkYXNoZXNGb3JJbnRlcnNlY3Rpb25z
V2l0aFJlY3QoY29uc3QgRmxvYXRSZWN0JiBsaW5lRXh0ZW50cyk7Ci0jZW5kaWYKKyAgICB2b2lk
IHNldFRleHRQYWludFN0eWxlKGNvbnN0IFRleHRQYWludFN0eWxlJiB0ZXh0UGFpbnRTdHlsZSkg
eyBtX3RleHRQYWludFN0eWxlID0gdGV4dFBhaW50U3R5bGU7IH0KKyAgICB2b2lkIHNldFNlbGVj
dGlvblBhaW50U3R5bGUoY29uc3QgVGV4dFBhaW50U3R5bGUmIHNlbGVjdGlvblBhaW50U3R5bGUp
IHsgbV9zZWxlY3Rpb25QYWludFN0eWxlID0gc2VsZWN0aW9uUGFpbnRTdHlsZTsgfQorICAgIHZv
aWQgc2V0SXNIb3Jpem9udGFsKGJvb2wgaXNIb3Jpem9udGFsKSB7IG1fdGV4dEJveElzSG9yaXpv
bnRhbCA9IGlzSG9yaXpvbnRhbDsgfQorICAgIHZvaWQgc2V0Rm9udChjb25zdCBGb250Q2FzY2Fk
ZSYgZm9udCkgeyBtX2ZvbnQgPSAmZm9udDsgfQorICAgIHZvaWQgYWRkRW1waGFzaXMoY29uc3Qg
QXRvbWljU3RyaW5nJiBlbXBoYXNpc01hcmssIGludCBlbXBoYXNpc01hcmtPZmZzZXQsIFJlbmRl
ckNvbWJpbmVUZXh0Kik7CisgICAgdm9pZCBhZGRUZXh0U2hhZG93KGNvbnN0IFNoYWRvd0RhdGEq
IHRleHRTaGFkb3csIGNvbnN0IFNoYWRvd0RhdGEqIHNlbGVjdGlvblNoYWRvdyk7CisKKyAgICB2
b2lkIHBhaW50VGV4dChjb25zdCBUZXh0UnVuJiwgaW50IGxlbmd0aCwgY29uc3QgRmxvYXRSZWN0
JiBib3hSZWN0LCBjb25zdCBGbG9hdFBvaW50JiB0ZXh0T3JpZ2luLAorICAgICAgICBpbnQgc2Vs
ZWN0aW9uU3RhcnQsIGludCBzZWxlY3Rpb25FbmQsIGJvb2wgcGFpbnRTZWxlY3RlZFRleHRPbmx5
LCBib29sIHBhaW50U2VsZWN0ZWRUZXh0U2VwYXJhdGVseSk7CiAKIHByaXZhdGU6CiAgICAgdm9p
ZCBkcmF3VGV4dE9yRW1waGFzaXNNYXJrcyhjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IFRleHRS
dW4mLCBjb25zdCBBdG9taWNTdHJpbmcmIGVtcGhhc2lzTWFyaywgaW50IGVtcGhhc2lzTWFya09m
ZnNldCwKICAgICAgICAgY29uc3QgRmxvYXRQb2ludCYgdGV4dE9yaWdpbiwgaW50IHN0YXJ0T2Zm
c2V0LCBpbnQgZW5kT2Zmc2V0KTsKLSAgICB2b2lkIHBhaW50VGV4dFdpdGhTaGFkb3dzKGNvbnN0
IFNoYWRvd0RhdGEqLCBjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBB
dG9taWNTdHJpbmcmIGVtcGhhc2lzTWFyaywgaW50IGVtcGhhc2lzTWFya09mZnNldCwKLSAgICAg
ICAgaW50IHN0YXJ0T2Zmc2V0LCBpbnQgZW5kT2Zmc2V0LCBjb25zdCBGbG9hdFBvaW50JiB0ZXh0
T3JpZ2luLCBib29sIHN0cm9rZWQpOwotICAgIHZvaWQgcGFpbnRUZXh0QW5kRW1waGFzaXNNYXJr
c0lmTmVlZGVkKGludCBzdGFydE9mZnNldCwgaW50IGVuZE9mZnNldCwgY29uc3QgVGV4dFBhaW50
U3R5bGUmLCBjb25zdCBTaGFkb3dEYXRhKik7CisgICAgdm9pZCBwYWludFRleHRXaXRoU2hhZG93
cyhjb25zdCBTaGFkb3dEYXRhKiwgY29uc3QgRm9udENhc2NhZGUmLCBjb25zdCBUZXh0UnVuJiwg
Y29uc3QgRmxvYXRSZWN0JiBib3hSZWN0LCBjb25zdCBGbG9hdFBvaW50JiB0ZXh0T3JpZ2luLAor
ICAgICAgICBpbnQgc3RhcnRPZmZzZXQsIGludCBlbmRPZmZzZXQsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgZW1waGFzaXNNYXJrLCBpbnQgZW1waGFzaXNNYXJrT2Zmc2V0LCBib29sIHN0cm9rZWQpOwor
ICAgIHZvaWQgcGFpbnRUZXh0QW5kRW1waGFzaXNNYXJrc0lmTmVlZGVkKGNvbnN0IFRleHRSdW4m
LCBjb25zdCBGbG9hdFJlY3QmIGJveFJlY3QsIGNvbnN0IEZsb2F0UG9pbnQmIHRleHRPcmlnaW4s
IGludCBzdGFydE9mZnNldCwgaW50IGVuZE9mZnNldCwKKyAgICAgICAgY29uc3QgVGV4dFBhaW50
U3R5bGUmLCBjb25zdCBTaGFkb3dEYXRhKik7CiAKICAgICBHcmFwaGljc0NvbnRleHQmIG1fY29u
dGV4dDsKLSAgICBUZXh0UGFpbnRTdHlsZSYgbV90ZXh0UGFpbnRTdHlsZTsKLSAgICBUZXh0UGFp
bnRTdHlsZSYgbV9zZWxlY3Rpb25QYWludFN0eWxlOwotICAgIGNvbnN0IFNoYWRvd0RhdGEqIG1f
dGV4dFNoYWRvdzsKLSAgICBjb25zdCBTaGFkb3dEYXRhKiBtX3NlbGVjdGlvblNoYWRvdzsKLSAg
ICBib29sIG1fcGFpbnRTZWxlY3RlZFRleHRPbmx5OwotICAgIGJvb2wgbV9wYWludFNlbGVjdGVk
VGV4dFNlcGFyYXRlbHk7Ci0gICAgY29uc3QgRm9udENhc2NhZGUmIG1fZm9udDsKLSAgICBpbnQg
bV9zZWxlY3Rpb25TdGFydDsKLSAgICBpbnQgbV9zZWxlY3Rpb25FbmQ7Ci0gICAgaW50IG1fbGVu
Z3RoOwotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbV9lbXBoYXNpc01hcms7Ci0gICAgUmVuZGVy
Q29tYmluZVRleHQqIG1fY29tYmluZWRUZXh0OwotICAgIFRleHRSdW4mIG1fdGV4dFJ1bjsKLSAg
ICBGbG9hdFJlY3QgbV9ib3hSZWN0OwotICAgIEZsb2F0UG9pbnQgbV90ZXh0T3JpZ2luOwotICAg
IGludCBtX2VtcGhhc2lzTWFya09mZnNldDsKLSAgICBib29sIG1fdGV4dEJveElzSG9yaXpvbnRh
bDsKKyAgICBjb25zdCBGb250Q2FzY2FkZSogbV9mb250IHsgbnVsbHB0ciB9OworICAgIFRleHRQ
YWludFN0eWxlIG1fdGV4dFBhaW50U3R5bGU7CisgICAgVGV4dFBhaW50U3R5bGUgbV9zZWxlY3Rp
b25QYWludFN0eWxlOworICAgIGNvbnN0IFNoYWRvd0RhdGEqIG1fdGV4dFNoYWRvdyB7IG51bGxw
dHIgfTsKKyAgICBjb25zdCBTaGFkb3dEYXRhKiBtX3NlbGVjdGlvblNoYWRvdyB7IG51bGxwdHIg
fTsKKyAgICBBdG9taWNTdHJpbmcgbV9lbXBoYXNpc01hcms7CisgICAgUmVuZGVyQ29tYmluZVRl
eHQqIG1fY29tYmluZWRUZXh0IHsgbnVsbHB0ciB9OworICAgIGludCBtX2VtcGhhc2lzTWFya09m
ZnNldCB7IDAgfTsKKyAgICBib29sIG1fdGV4dEJveElzSG9yaXpvbnRhbCB7IHRydWUgfTsKIH07
CiAKK2lubGluZSB2b2lkIFRleHRQYWludGVyOjphZGRFbXBoYXNpcyhjb25zdCBBdG9taWNTdHJp
bmcmIGVtcGhhc2lzTWFyaywgaW50IGVtcGhhc2lzTWFya09mZnNldCwgUmVuZGVyQ29tYmluZVRl
eHQqIGNvbWJpbmVkVGV4dCkKK3sKKyAgICBtX2VtcGhhc2lzTWFyayA9IGVtcGhhc2lzTWFyazsK
KyAgICBtX2VtcGhhc2lzTWFya09mZnNldCA9IGVtcGhhc2lzTWFya09mZnNldDsKKyAgICBtX2Nv
bWJpbmVkVGV4dCA9IGNvbWJpbmVkVGV4dDsKK30KKworaW5saW5lIHZvaWQgVGV4dFBhaW50ZXI6
OmFkZFRleHRTaGFkb3coY29uc3QgU2hhZG93RGF0YSogdGV4dFNoYWRvdywgY29uc3QgU2hhZG93
RGF0YSogc2VsZWN0aW9uU2hhZG93KQoreworICAgIG1fdGV4dFNoYWRvdyA9IHRleHRTaGFkb3c7
CisgICAgbV9zZWxlY3Rpb25TaGFkb3cgPSBzZWxlY3Rpb25TaGFkb3c7Cit9CisKIGNsYXNzIFNo
YWRvd0FwcGxpZXIgewogcHVibGljOgogICAgIFNoYWRvd0FwcGxpZXIoR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgU2hhZG93RGF0YSosIGNvbnN0IEZsb2F0UmVjdCYgdGV4dFJlY3QsIGJvb2wgbGFz
dFNoYWRvd0l0ZXJhdGlvblNob3VsZERyYXdUZXh0ID0gdHJ1ZSwgYm9vbCBvcGFxdWUgPSBmYWxz
ZSwgRm9udE9yaWVudGF0aW9uID0gSG9yaXpvbnRhbCk7Cg==
</data>
<flag name="commit-queue"
          id="292171"
          type_id="3"
          status="-"
          setter="zalan"
    />
          </attachment>
      

    </bug>

</bugzilla>