<?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>204852</bug_id>
          
          <creation_ts>2019-12-04 08:06:48 -0800</creation_ts>
          <short_desc>[LFC][Integration] Paint with TextPainter</short_desc>
          <delta_ts>2019-12-04 10:01:23 -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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1595476</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-12-04 08:06:48 -0800</bug_when>
    <thetext>Paint with correct text properties.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1595477</commentid>
    <comment_count>1</comment_count>
      <attachid>384810</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-12-04 08:13:34 -0800</bug_when>
    <thetext>Created attachment 384810
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1595478</commentid>
    <comment_count>2</comment_count>
      <attachid>384811</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-12-04 08:15:18 -0800</bug_when>
    <thetext>Created attachment 384811
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1595479</commentid>
    <comment_count>3</comment_count>
      <attachid>384812</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-12-04 08:16:58 -0800</bug_when>
    <thetext>Created attachment 384812
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1595486</commentid>
    <comment_count>4</comment_count>
      <attachid>384812</attachid>
    <who name="alan">zalan</who>
    <bug_when>2019-12-04 08:50:32 -0800</bug_when>
    <thetext>Comment on attachment 384812
patch

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

&gt; Source/WebCore/layout/integration/LayoutIntegrationLineLayout.cpp:188
&gt; +        if (textContext.start() == textContext.end())

!textContext.length()

&gt; Source/WebCore/layout/integration/LayoutIntegrationLineLayout.cpp:196
&gt; +        LayoutRect rect = run.logicalRect();
&gt; +        FloatRect visualOverflowRect = computeOverflow(style, rect, viewportSize);

why no auto? (also in a few places further down)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1595497</commentid>
    <comment_count>5</comment_count>
      <attachid>384819</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-12-04 09:16:44 -0800</bug_when>
    <thetext>Created attachment 384819
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1595507</commentid>
    <comment_count>6</comment_count>
      <attachid>384819</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-12-04 10:00:43 -0800</bug_when>
    <thetext>Comment on attachment 384819
patch

Clearing flags on attachment: 384819

Committed r253107: &lt;https://trac.webkit.org/changeset/253107&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1595508</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-12-04 10:00:44 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1595510</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-12-04 10:01:23 -0800</bug_when>
    <thetext>&lt;rdar://problem/57627529&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>384810</attachid>
            <date>2019-12-04 08:13:34 -0800</date>
            <delta_ts>2019-12-04 08:15:18 -0800</delta_ts>
            <desc>patch</desc>
            <filename>lfc-integration-paint.patch</filename>
            <type>text/plain</type>
            <size>11792</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA3YWU1YThlOTk3ZC4uY2JhNTkwNjFmYzQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAor
MjAxOS0xMi0wNCAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAg
W0xGQ11bSW50ZWdyYXRpb25dIFBhaW50IHdpdGggVGV4dFBhaW50ZXIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNDg1MgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9sYXlvdXRmb3JtYXR0aW5n
Y29udGV4dC9mbG93LWludGVncmF0aW9uLWJhc2ljLXBhaW50LWV4cGVjdGVkLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvbGF5b3V0Zm9ybWF0dGluZ2NvbnRleHQvZmxvdy1pbnRlZ3JhdGlv
bi1iYXNpYy1wYWludC5odG1sOiBBZGRlZC4KKwogMjAxOS0xMi0wMyAgTWVnYW4gR2FyZG5lciAg
PG1lZ2FuX2dhcmRuZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBkaXNhYmxlZCBoaWdobGln
aHQgQVBJIHNrZWxldG9uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2xheW91dGZvcm1h
dHRpbmdjb250ZXh0L2Zsb3ctaW50ZWdyYXRpb24tYmFzaWMtcGFpbnQtZXhwZWN0ZWQuaHRtbCBi
L0xheW91dFRlc3RzL2Zhc3QvbGF5b3V0Zm9ybWF0dGluZ2NvbnRleHQvZmxvdy1pbnRlZ3JhdGlv
bi1iYXNpYy1wYWludC1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwLi5mMjRmNzRmOWQ5MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvbGF5b3V0Zm9ybWF0dGluZ2NvbnRleHQvZmxvdy1pbnRlZ3JhdGlvbi1iYXNpYy1wYWludC1l
eHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBodG1sPgorPHN0eWxlPgor
Lm1hcmdpbiB7IG1hcmdpbjogMTBweCA0MDBweCAyMHB4IDVweDsgfQorLmJvcmRlciB7IGJvcmRl
ci1sZWZ0OiAxMHB4IHNvbGlkIGJsYWNrOyBib3JkZXItdG9wOiA1cHggc29saWQgYmxhY2s7IGJv
cmRlci1yaWdodDogMTVweCBzb2xpZCBibGFjazsgYm9yZGVyLWJvdHRvbTogMjBweCBzb2xpZCBi
bGFjazsgfQorLnBhZGRpbmcgeyBwYWRkaW5nOiAxMHB4IDUwcHggMjBweCA1cHg7IH0KKzwvc3R5
bGU+Cis8ZGl2IGNsYXNzPSJtYXJnaW4iPlRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0IHRl
eHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dCA8L2Rp
dj4KKzxkaXYgY2xhc3M9Im1hcmdpbiBib3JkZXIiPlRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0
ZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4
dCA8L2Rpdj4KKzxkaXYgY2xhc3M9Im1hcmdpbiBib3JkZXIgcGFkZGluZyI+VGV4dCB0ZXh0IHRl
eHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0
IHRleHQgdGV4dCB0ZXh0IDwvZGl2PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9sYXlvdXRmb3JtYXR0aW5nY29udGV4dC9mbG93LWludGVncmF0aW9uLWJhc2ljLXBhaW50
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2xheW91dGZvcm1hdHRpbmdjb250ZXh0L2Zsb3ctaW50
ZWdyYXRpb24tYmFzaWMtcGFpbnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMC4uYmMzNzQ4Mjg5MDkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2xheW91dGZvcm1hdHRpbmdjb250ZXh0L2Zsb3ctaW50ZWdyYXRpb24tYmFzaWMtcGFpbnQuaHRt
bApAQCAtMCwwICsxLDExIEBACis8IURPQ1RZUEUgaHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5u
ZXIgWyBpbnRlcm5hbDpMYXlvdXRGb3JtYXR0aW5nQ29udGV4dEludGVncmF0aW9uRW5hYmxlZD10
cnVlIF0gLS0+Cis8aHRtbD4KKzxzdHlsZT4KKy5tYXJnaW4geyBtYXJnaW46IDEwcHggNDAwcHgg
MjBweCA1cHg7IH0KKy5ib3JkZXIgeyBib3JkZXItbGVmdDogMTBweCBzb2xpZCBibGFjazsgYm9y
ZGVyLXRvcDogNXB4IHNvbGlkIGJsYWNrOyBib3JkZXItcmlnaHQ6IDE1cHggc29saWQgYmxhY2s7
IGJvcmRlci1ib3R0b206IDIwcHggc29saWQgYmxhY2s7IH0KKy5wYWRkaW5nIHsgcGFkZGluZzog
MTBweCA1MHB4IDIwcHggNXB4OyB9Cis8L3N0eWxlPgorPGRpdiBjbGFzcz0ibWFyZ2luIj5UZXh0
IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0
ZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQgPC9kaXY+Cis8ZGl2IGNsYXNzPSJtYXJnaW4gYm9yZGVy
Ij5UZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQg
dGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQgPC9kaXY+Cis8ZGl2IGNsYXNzPSJtYXJnaW4g
Ym9yZGVyIHBhZGRpbmciPlRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0
ZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dCA8L2Rpdj4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwppbmRleCBmOTEyOTk5YmM2ZS4uNmU3Mjk1YThlMTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyOSBAQAorMjAxOS0xMi0wNCAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5j
b20+CisKKyAgICAgICAgW0xGQ11bSW50ZWdyYXRpb25dIFBhaW50IHdpdGggVGV4dFBhaW50ZXIK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNDg1Mgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERpc3BsYXk6
OlBhaW50ZXIgaXMgdmVyeSBydWRpbWVudGFyeSBhbmQgdHVybmluZyBpdCBpbnRvIGZ1bGwgcGFp
bnRpbmcgaW1wbGVtZW50YXRpb25zCisgICAgICAgIHJlcXVpcmVzIGxvdCBvZiByZWZhY3Rvcmlu
Zy4gSW5zdGVhZCBmb3Igbm93IHVzZSBzZXBhcmF0ZSBwYWludGluZyBjb2RlIGluIHRoZSBpbnRl
Z3JhdGlvbgorICAgICAgICBsYXllciB0aGF0IGludm9rZXMgdGhlIGV4aXN0aW5nIHJlbmRlciB0
cmVlIGJhc2VkIHBhaW50aW5nIGhlbHBlcnMuCisKKyAgICAgICAgVGhpcyBhbHNvIGVuYWJsZXMg
d3JpdGluZyByZWZ0ZXN0cyBmb3IgaW50ZXJncmF0ZWQgTEZDIGxheW91dC4KKworICAgICAgICBU
ZXN0OiBmYXN0L2xheW91dGZvcm1hdHRpbmdjb250ZXh0L2Zsb3ctaW50ZWdyYXRpb24tYmFzaWMt
cGFpbnQuaHRtbAorCisgICAgICAgICogbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlJbmxpbmVD
b250ZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjogY29uc3QpOgorICAgICAgICAq
IGxheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OmNvbXB1dGVPdmVyZmxvdyk6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZUxheW91dDo6cGFpbnQpOgorCisg
ICAgICAgIEFkb3B0ZWQgZnJvbSBTaW1wbGVMaW5lTGF5b3V0OjpwYWludEZsb3cgd2l0aCBzdXBw
b3J0IGZvciBwZXItcnVuIHN0eWxlIGFkZGVkLgorCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJ
bnRlZ3JhdGlvbjo6TGluZUxheW91dDo6ZGVidWdUZXh0U2hhZG93KToKKyAgICAgICAgKiBsYXlv
dXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0Lmg6CisKIDIwMTktMTIt
MDMgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSB1
bnVzZWQgRHJhZ0NvbnRyb2xsZXI6OmNsaWVudCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheUlubGluZUNvbnRlbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5SW5saW5lQ29udGVudC5oCmluZGV4IGU0ZmMz
ZWZhZTI5Li41YzBjOGMxZGUzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rp
c3BsYXl0cmVlL0Rpc3BsYXlJbmxpbmVDb250ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlJbmxpbmVDb250ZW50LmgKQEAgLTI5LDYgKzI5LDcgQEAK
IAogI2luY2x1ZGUgIkRpc3BsYXlSdW4uaCIKICNpbmNsdWRlICJJbmxpbmVMaW5lQm94LmgiCisj
aW5jbHVkZSA8d3RmL0l0ZXJhdG9yUmFuZ2UuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQyLDggKzQzLDM1IEBAIHN0cnVjdCBJbmxpbmVDb250
ZW50IDogcHVibGljIFJlZkNvdW50ZWQ8SW5saW5lQ29udGVudD4gewogICAgIExpbmVCb3hlcyBs
aW5lQm94ZXM7CiAKICAgICBjb25zdCBMYXlvdXQ6OkxpbmVCb3gmIGxpbmVCb3hGb3JSdW4oY29u
c3QgUnVuJiBydW4pIGNvbnN0IHsgcmV0dXJuIGxpbmVCb3hlc1tydW4ubGluZUluZGV4KCldOyB9
CisgICAgV1RGOjpJdGVyYXRvclJhbmdlPGNvbnN0IFJ1bio+IHJ1bnNGb3JSZWN0KGNvbnN0IExh
eW91dFJlY3QmKSBjb25zdDsKIH07CiAKK2lubGluZSBXVEY6Okl0ZXJhdG9yUmFuZ2U8Y29uc3Qg
UnVuKj4gSW5saW5lQ29udGVudDo6cnVuc0ZvclJlY3QoY29uc3QgTGF5b3V0UmVjdCYgcmVjdCkg
Y29uc3QKK3sKKyAgICAvLyBGSVhNRTogRG8gc29tZXRoaW5nIGVmZmljaWVudC4KKyAgICBjb25z
dCBSdW4qIGZpcnN0ID0gbnVsbHB0cjsKKyAgICBmb3IgKGF1dG8mIHJ1biA6IHJ1bnMpIHsKKyAg
ICAgICAgTGF5b3V0UmVjdCBydW5SZWN0ID0gcnVuLmxvZ2ljYWxSZWN0KCk7CisgICAgICAgIGlm
IChydW5SZWN0LmludGVyc2VjdHMocmVjdCkpIHsKKyAgICAgICAgICAgIGZpcnN0ID0gJnJ1bjsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIGlmICghZmlyc3QpCisg
ICAgICAgIHJldHVybiB7IG51bGxwdHIsIG51bGxwdHIgfTsKKworICAgIGNvbnN0IFJ1biogbGFz
dCA9IG51bGxwdHI7CisgICAgZm9yIChhdXRvJiBydW4gOiBXVEY6Om1ha2VSZXZlcnNlZFJhbmdl
KHJ1bnMpKSB7CisgICAgICAgIExheW91dFJlY3QgcnVuUmVjdCA9IHJ1bi5sb2dpY2FsUmVjdCgp
OworICAgICAgICBpZiAocnVuUmVjdC5pbnRlcnNlY3RzKHJlY3QpKSB7CisgICAgICAgICAgICBs
YXN0ID0gJnJ1bjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAg
cmV0dXJuIHsgZmlyc3QsIGxhc3QgKyAxIH07Cit9CisKIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUxheW91
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRp
b25MaW5lTGF5b3V0LmNwcAppbmRleCBhODQwZDhjNTAxZS4uZDJiNjljMGMxOWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxp
bmVMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlv
dXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuY3BwCkBAIC0yOSwxNiArMjksMjAgQEAKICNpZiBFTkFC
TEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKIAogI2luY2x1ZGUgIkRpc3BsYXlCb3guaCIK
LSNpbmNsdWRlICJEaXNwbGF5UGFpbnRlci5oIgorI2luY2x1ZGUgIkV2ZW50UmVnaW9uLmgiCiAj
aW5jbHVkZSAiSW5saW5lRm9ybWF0dGluZ1N0YXRlLmgiCiAjaW5jbHVkZSAiSW52YWxpZGF0aW9u
U3RhdGUuaCIKICNpbmNsdWRlICJMYXlvdXRDb250ZXh0LmgiCiAjaW5jbHVkZSAiTGF5b3V0VHJl
ZUJ1aWxkZXIuaCIKICNpbmNsdWRlICJQYWludEluZm8uaCIKICNpbmNsdWRlICJSZW5kZXJCbG9j
a0Zsb3cuaCIKKyNpbmNsdWRlICJSZW5kZXJDaGlsZEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiUmVu
ZGVyTGluZUJyZWFrLmgiCiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgorI2lu
Y2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU2ltcGxlTGluZUxheW91dC5oIgorI2luY2x1
ZGUgIlRleHREZWNvcmF0aW9uUGFpbnRlci5oIgorI2luY2x1ZGUgIlRleHRQYWludGVyLmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBMYXlvdXRJbnRlZ3JhdGlvbiB7CkBAIC0x
MDAsMTggKzEwNCw2IEBAIGNvbnN0IERpc3BsYXk6OklubGluZUNvbnRlbnQqIExpbmVMYXlvdXQ6
OmRpc3BsYXlJbmxpbmVDb250ZW50KCkgY29uc3QKICAgICByZXR1cm4gZG93bmNhc3Q8TGF5b3V0
OjpJbmxpbmVGb3JtYXR0aW5nU3RhdGU+KG1fbGF5b3V0U3RhdGUtPmVzdGFibGlzaGVkRm9ybWF0
dGluZ1N0YXRlKHJvb3RMYXlvdXRCb3goKSkpLmRpc3BsYXlJbmxpbmVDb250ZW50KCk7CiB9CiAK
LXZvaWQgTGluZUxheW91dDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91
dFBvaW50JiBwYWludE9mZnNldCkKLXsKLSAgICBhdXRvJiBncmFwaGljc0NvbnRleHQgPSBwYWlu
dEluZm8uY29udGV4dCgpOwotCi0gICAgZ3JhcGhpY3NDb250ZXh0LnNhdmUoKTsKLSAgICBncmFw
aGljc0NvbnRleHQudHJhbnNsYXRlKHBhaW50T2Zmc2V0KTsKLQotICAgIERpc3BsYXk6OlBhaW50
ZXI6OnBhaW50SW5saW5lRmxvdygqbV9sYXlvdXRTdGF0ZSwgcGFpbnRJbmZvLmNvbnRleHQoKSk7
Ci0KLSAgICBncmFwaGljc0NvbnRleHQucmVzdG9yZSgpOwotfQotCiBMaW5lTGF5b3V0VHJhdmVy
c2FsOjpUZXh0Qm94SXRlcmF0b3IgTGluZUxheW91dDo6dGV4dEJveGVzRm9yKGNvbnN0IFJlbmRl
clRleHQmIHJlbmRlclRleHQpIGNvbnN0CiB7CiAgICAgYXV0byogaW5saW5lQ29udGVudCA9IGRp
c3BsYXlJbmxpbmVDb250ZW50KCk7CkBAIC0xNTgsNiArMTUwLDEwMCBAQCBjb25zdCBMYXlvdXQ6
OkNvbnRhaW5lciYgTGluZUxheW91dDo6cm9vdExheW91dEJveCgpIGNvbnN0CiAgICAgcmV0dXJu
IG1fdHJlZUNvbnRlbnQtPnJvb3RMYXlvdXRCb3goKTsKIH0KIAorc3RhdGljIExheW91dFJlY3Qg
Y29tcHV0ZU92ZXJmbG93KGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgTGF5b3V0UmVj
dCYgYm94UmVjdCwgSW50U2l6ZSYgdmlld3BvcnRTaXplKQoreworICAgIGF1dG8gb3ZlcmZsb3dS
ZWN0ID0gYm94UmVjdDsKKyAgICBhdXRvIHN0cm9rZU92ZXJmbG93ID0gc3RkOjpjZWlsKHN0eWxl
LmNvbXB1dGVkU3Ryb2tlV2lkdGgodmlld3BvcnRTaXplKSk7CisgICAgb3ZlcmZsb3dSZWN0Lmlu
ZmxhdGUoc3Ryb2tlT3ZlcmZsb3cpOworCisgICAgYXV0byBsZXR0ZXJTcGFjaW5nID0gc3R5bGUu
Zm9udENhc2NhZGUoKS5sZXR0ZXJTcGFjaW5nKCk7CisgICAgaWYgKGxldHRlclNwYWNpbmcgPj0g
MCkKKyAgICAgICAgcmV0dXJuIG92ZXJmbG93UmVjdDsKKyAgICAvLyBMYXN0IGxldHRlcidzIG5l
Z2F0aXZlIHNwYWNpbmcgc2hyaW5rcyBsYXlvdXQgcmVjdC4gUHVzaCBpdCB0byB2aXN1YWwgb3Zl
cmZsb3cuCisgICAgb3ZlcmZsb3dSZWN0LmV4cGFuZCgtbGV0dGVyU3BhY2luZywgMCk7CisgICAg
cmV0dXJuIG92ZXJmbG93UmVjdDsKK30KKwordm9pZCBMaW5lTGF5b3V0OjpwYWludChQYWludElu
Zm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQoreworICAgIGlm
ICghZGlzcGxheUlubGluZUNvbnRlbnQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byYg
aW5saW5lQ29udGVudCA9ICpkaXNwbGF5SW5saW5lQ29udGVudCgpOworCisgICAgYXV0byB2aWV3
cG9ydFNpemUgPSBtX2Zsb3cuZnJhbWUoKS52aWV3KCktPnNpemUoKTsKKyAgICBmbG9hdCBkZXZp
Y2VTY2FsZUZhY3RvciA9IG1fZmxvdy5kb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCk7CisK
KyAgICBhdXRvIHBhaW50UmVjdCA9IHBhaW50SW5mby5yZWN0OworICAgIHBhaW50UmVjdC5tb3Zl
QnkoLXBhaW50T2Zmc2V0KTsKKworICAgIGlmIChwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFz
ZTo6Rm9yZWdyb3VuZCAmJiBwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZTo6RXZlbnRSZWdp
b24pCisgICAgICAgIHJldHVybjsKKworICAgIGZvciAoYXV0byYgcnVuIDogaW5saW5lQ29udGVu
dC5ydW5zRm9yUmVjdChwYWludFJlY3QpKSB7CisgICAgICAgIGlmICghcnVuLnRleHRDb250ZXh0
KCkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBhdXRvJiB0ZXh0Q29udGV4dCA9
ICpydW4udGV4dENvbnRleHQoKTsKKyAgICAgICAgaWYgKHRleHRDb250ZXh0LnN0YXJ0KCkgPT0g
dGV4dENvbnRleHQuZW5kKCkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBhdXRv
JiBzdHlsZSA9IHJ1bi5zdHlsZSgpOworICAgICAgICBpZiAoc3R5bGUudmlzaWJpbGl0eSgpICE9
IFZpc2liaWxpdHk6OlZpc2libGUpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgTGF5
b3V0UmVjdCByZWN0ID0gcnVuLmxvZ2ljYWxSZWN0KCk7CisgICAgICAgIEZsb2F0UmVjdCB2aXN1
YWxPdmVyZmxvd1JlY3QgPSBjb21wdXRlT3ZlcmZsb3coc3R5bGUsIHJlY3QsIHZpZXdwb3J0U2l6
ZSk7CisgICAgICAgIGlmIChwYWludFJlY3QueSgpID4gdmlzdWFsT3ZlcmZsb3dSZWN0Lm1heFko
KSB8fCBwYWludFJlY3QubWF4WSgpIDwgdmlzdWFsT3ZlcmZsb3dSZWN0LnkoKSkKKyAgICAgICAg
ICAgIGNvbnRpbnVlOworCisgICAgICAgIGlmIChwYWludEluZm8uZXZlbnRSZWdpb25Db250ZXh0
KSB7CisgICAgICAgICAgICBpZiAoc3R5bGUucG9pbnRlckV2ZW50cygpICE9IFBvaW50ZXJFdmVu
dHM6Ok5vbmUpCisgICAgICAgICAgICAgICAgcGFpbnRJbmZvLmV2ZW50UmVnaW9uQ29udGV4dC0+
dW5pdGUoZW5jbG9zaW5nSW50UmVjdCh2aXN1YWxPdmVyZmxvd1JlY3QpLCBzdHlsZSk7CisgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEZJWE1FOiBIeXBoZW5z
LgorCisgICAgICAgIGF1dG8mIGxpbmVCb3ggPSBpbmxpbmVDb250ZW50LmxpbmVCb3hGb3JSdW4o
cnVuKTsKKyAgICAgICAgYXV0byBiYXNlbGluZU9mZnNldCA9IHBhaW50T2Zmc2V0LnkoKSArIGxp
bmVCb3gubG9naWNhbFRvcCgpICsgbGluZUJveC5iYXNlbGluZU9mZnNldCgpOworCisgICAgICAg
IEV4cGFuc2lvbkJlaGF2aW9yIGJlaGF2aW9yID0gdGV4dENvbnRleHQuZXhwYW5zaW9uKCkgPyB0
ZXh0Q29udGV4dC5leHBhbnNpb24oKS0+YmVoYXZpb3IgOiBEZWZhdWx0RXhwYW5zaW9uOworICAg
ICAgICBMYXlvdXRVbml0IGhvcml6b250YWxFeHBhbnNpb24gPSB0ZXh0Q29udGV4dC5leHBhbnNp
b24oKSA/IHRleHRDb250ZXh0LmV4cGFuc2lvbigpLT5ob3Jpem9udGFsRXhwYW5zaW9uIDogMF9s
dTsKKyAgICAgICAgYXV0byBsb2dpY2FsTGVmdCA9IHBhaW50T2Zmc2V0LngoKSArIHJ1bi5sb2dp
Y2FsTGVmdCgpOworCisgICAgICAgIFRleHRSdW4gdGV4dFJ1biB7IHRleHRDb250ZXh0LmNvbnRl
bnQoKSwgbG9naWNhbExlZnQsIGhvcml6b250YWxFeHBhbnNpb24sIGJlaGF2aW9yIH07CisgICAg
ICAgIHRleHRSdW4uc2V0VGFiU2l6ZSghc3R5bGUuY29sbGFwc2VXaGl0ZVNwYWNlKCksIHN0eWxl
LnRhYlNpemUoKSk7CisgICAgICAgIEZsb2F0UG9pbnQgdGV4dE9yaWdpbiB7IHJlY3QueCgpICsg
cGFpbnRPZmZzZXQueCgpLCByb3VuZFRvRGV2aWNlUGl4ZWwoYmFzZWxpbmVPZmZzZXQsIGRldmlj
ZVNjYWxlRmFjdG9yKSB9OworCisgICAgICAgIFRleHRQYWludGVyIHRleHRQYWludGVyKHBhaW50
SW5mby5jb250ZXh0KCkpOworICAgICAgICB0ZXh0UGFpbnRlci5zZXRGb250KHN0eWxlLmZvbnRD
YXNjYWRlKCkpOworICAgICAgICB0ZXh0UGFpbnRlci5zZXRTdHlsZShjb21wdXRlVGV4dFBhaW50
U3R5bGUobV9mbG93LmZyYW1lKCksIHN0eWxlLCBwYWludEluZm8pKTsKKyAgICAgICAgaWYgKGF1
dG8qIGRlYnVnU2hhZG93ID0gZGVidWdUZXh0U2hhZG93KCkpCisgICAgICAgICAgICB0ZXh0UGFp
bnRlci5zZXRTaGFkb3coZGVidWdTaGFkb3cpOworCisgICAgICAgIHRleHRQYWludGVyLnBhaW50
KHRleHRSdW4sIHJlY3QsIHRleHRPcmlnaW4pOworCisgICAgICAgIGlmICghc3R5bGUudGV4dERl
Y29yYXRpb25zSW5FZmZlY3QoKS5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBV
c2UgY29ycmVjdCBSZW5kZXJUZXh0LgorICAgICAgICAgICAgaWYgKGF1dG8qIHRleHRSZW5kZXJl
ciA9IGNoaWxkcmVuT2ZUeXBlPFJlbmRlclRleHQ+KG1fZmxvdykuZmlyc3QoKSkgeworICAgICAg
ICAgICAgICAgIGF1dG8gcGFpbnRlciA9IFRleHREZWNvcmF0aW9uUGFpbnRlciB7IHBhaW50SW5m
by5jb250ZXh0KCksIHN0eWxlLnRleHREZWNvcmF0aW9uc0luRWZmZWN0KCksICp0ZXh0UmVuZGVy
ZXIsIGZhbHNlLCBzdHlsZS5mb250Q2FzY2FkZSgpIH07CisgICAgICAgICAgICAgICAgcGFpbnRl
ci5zZXRXaWR0aChyZWN0LndpZHRoKCkpOworICAgICAgICAgICAgICAgIHBhaW50ZXIucGFpbnRU
ZXh0RGVjb3JhdGlvbih0ZXh0UnVuLCB0ZXh0T3JpZ2luLCByZWN0LmxvY2F0aW9uKCkgKyBwYWlu
dE9mZnNldCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK1NoYWRvd0Rh
dGEqIExpbmVMYXlvdXQ6OmRlYnVnVGV4dFNoYWRvdygpCit7CisgICAgaWYgKCFtX2Zsb3cuc2V0
dGluZ3MoKS5zaW1wbGVMaW5lTGF5b3V0RGVidWdCb3JkZXJzRW5hYmxlZCgpKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTaGFkb3dEYXRhPiBk
ZWJ1Z1RleHRTaGFkb3coSW50UG9pbnQoMCwgMCksIDEwLCAyMCwgU2hhZG93U3R5bGU6Ok5vcm1h
bCwgdHJ1ZSwgQ29sb3IoMCwgMCwgMTUwLCAxNTApKTsKKyAgICByZXR1cm4gJmRlYnVnVGV4dFNo
YWRvdy5nZXQoKTsKK30KKwogfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmgKaW5k
ZXggNTVjNzVjZTg0ZWQuLjRjY2FiMTkwNDFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUxheW91
dC5oCkBAIC02OSw2ICs2OSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgY29uc3QgTGF5b3V0
OjpDb250YWluZXImIHJvb3RMYXlvdXRCb3goKSBjb25zdDsKICAgICB2b2lkIHByZXBhcmVSb290
R2VvbWV0cnlGb3JMYXlvdXQoKTsKKyAgICBTaGFkb3dEYXRhKiBkZWJ1Z1RleHRTaGFkb3coKTsK
IAogICAgIGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgbV9mbG93OwogICAgIHN0ZDo6dW5pcXVlX3B0
cjxjb25zdCBMYXlvdXQ6OkxheW91dFRyZWVDb250ZW50PiBtX3RyZWVDb250ZW50Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>384811</attachid>
            <date>2019-12-04 08:15:18 -0800</date>
            <delta_ts>2019-12-04 08:16:58 -0800</delta_ts>
            <desc>patch</desc>
            <filename>lfc-integration-paint-2.patch</filename>
            <type>text/plain</type>
            <size>11794</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA3YWU1YThlOTk3ZC4uY2JhNTkwNjFmYzQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAor
MjAxOS0xMi0wNCAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAg
W0xGQ11bSW50ZWdyYXRpb25dIFBhaW50IHdpdGggVGV4dFBhaW50ZXIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNDg1MgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9sYXlvdXRmb3JtYXR0aW5n
Y29udGV4dC9mbG93LWludGVncmF0aW9uLWJhc2ljLXBhaW50LWV4cGVjdGVkLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvbGF5b3V0Zm9ybWF0dGluZ2NvbnRleHQvZmxvdy1pbnRlZ3JhdGlv
bi1iYXNpYy1wYWludC5odG1sOiBBZGRlZC4KKwogMjAxOS0xMi0wMyAgTWVnYW4gR2FyZG5lciAg
PG1lZ2FuX2dhcmRuZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBkaXNhYmxlZCBoaWdobGln
aHQgQVBJIHNrZWxldG9uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2xheW91dGZvcm1h
dHRpbmdjb250ZXh0L2Zsb3ctaW50ZWdyYXRpb24tYmFzaWMtcGFpbnQtZXhwZWN0ZWQuaHRtbCBi
L0xheW91dFRlc3RzL2Zhc3QvbGF5b3V0Zm9ybWF0dGluZ2NvbnRleHQvZmxvdy1pbnRlZ3JhdGlv
bi1iYXNpYy1wYWludC1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwLi5mMjRmNzRmOWQ5MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvbGF5b3V0Zm9ybWF0dGluZ2NvbnRleHQvZmxvdy1pbnRlZ3JhdGlvbi1iYXNpYy1wYWludC1l
eHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBodG1sPgorPHN0eWxlPgor
Lm1hcmdpbiB7IG1hcmdpbjogMTBweCA0MDBweCAyMHB4IDVweDsgfQorLmJvcmRlciB7IGJvcmRl
ci1sZWZ0OiAxMHB4IHNvbGlkIGJsYWNrOyBib3JkZXItdG9wOiA1cHggc29saWQgYmxhY2s7IGJv
cmRlci1yaWdodDogMTVweCBzb2xpZCBibGFjazsgYm9yZGVyLWJvdHRvbTogMjBweCBzb2xpZCBi
bGFjazsgfQorLnBhZGRpbmcgeyBwYWRkaW5nOiAxMHB4IDUwcHggMjBweCA1cHg7IH0KKzwvc3R5
bGU+Cis8ZGl2IGNsYXNzPSJtYXJnaW4iPlRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0IHRl
eHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dCA8L2Rp
dj4KKzxkaXYgY2xhc3M9Im1hcmdpbiBib3JkZXIiPlRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0
ZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4
dCA8L2Rpdj4KKzxkaXYgY2xhc3M9Im1hcmdpbiBib3JkZXIgcGFkZGluZyI+VGV4dCB0ZXh0IHRl
eHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0
IHRleHQgdGV4dCB0ZXh0IDwvZGl2PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9sYXlvdXRmb3JtYXR0aW5nY29udGV4dC9mbG93LWludGVncmF0aW9uLWJhc2ljLXBhaW50
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2xheW91dGZvcm1hdHRpbmdjb250ZXh0L2Zsb3ctaW50
ZWdyYXRpb24tYmFzaWMtcGFpbnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMC4uYmMzNzQ4Mjg5MDkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2xheW91dGZvcm1hdHRpbmdjb250ZXh0L2Zsb3ctaW50ZWdyYXRpb24tYmFzaWMtcGFpbnQuaHRt
bApAQCAtMCwwICsxLDExIEBACis8IURPQ1RZUEUgaHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5u
ZXIgWyBpbnRlcm5hbDpMYXlvdXRGb3JtYXR0aW5nQ29udGV4dEludGVncmF0aW9uRW5hYmxlZD10
cnVlIF0gLS0+Cis8aHRtbD4KKzxzdHlsZT4KKy5tYXJnaW4geyBtYXJnaW46IDEwcHggNDAwcHgg
MjBweCA1cHg7IH0KKy5ib3JkZXIgeyBib3JkZXItbGVmdDogMTBweCBzb2xpZCBibGFjazsgYm9y
ZGVyLXRvcDogNXB4IHNvbGlkIGJsYWNrOyBib3JkZXItcmlnaHQ6IDE1cHggc29saWQgYmxhY2s7
IGJvcmRlci1ib3R0b206IDIwcHggc29saWQgYmxhY2s7IH0KKy5wYWRkaW5nIHsgcGFkZGluZzog
MTBweCA1MHB4IDIwcHggNXB4OyB9Cis8L3N0eWxlPgorPGRpdiBjbGFzcz0ibWFyZ2luIj5UZXh0
IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0
ZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQgPC9kaXY+Cis8ZGl2IGNsYXNzPSJtYXJnaW4gYm9yZGVy
Ij5UZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQg
dGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQgPC9kaXY+Cis8ZGl2IGNsYXNzPSJtYXJnaW4g
Ym9yZGVyIHBhZGRpbmciPlRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0
ZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dCA8L2Rpdj4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwppbmRleCBmOTEyOTk5YmM2ZS4uMDA1MTZkZjVjODAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyOSBAQAorMjAxOS0xMi0wNCAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5j
b20+CisKKyAgICAgICAgW0xGQ11bSW50ZWdyYXRpb25dIFBhaW50IHdpdGggVGV4dFBhaW50ZXIK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNDg1Mgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERpc3BsYXk6
OlBhaW50ZXIgaXMgdmVyeSBydWRpbWVudGFyeSBhbmQgdHVybmluZyBpdCBpbnRvIGEgZnVsbCBw
YWludGluZyBpbXBsZW1lbnRhdGlvbgorICAgICAgICByZXF1aXJlcyBsb3Qgb2YgcmVmYWN0b3Jp
bmcuIEluc3RlYWQsIGZvciBub3cgdXNlIHNlcGFyYXRlIHBhaW50aW5nIGNvZGUgaW4gdGhlIGlu
dGVncmF0aW9uCisgICAgICAgIGxheWVyIHRoYXQgaW52b2tlcyB0aGUgZXhpc3RpbmcgcmVuZGVy
IHRyZWUgYmFzZWQgcGFpbnRpbmcgaGVscGVycy4KKworICAgICAgICBUaGlzIGFsc28gZW5hYmxl
cyB3cml0aW5nIHJlZnRlc3RzIGZvciBpbnRlcmdyYXRlZCBMRkMgbGF5b3V0LgorCisgICAgICAg
IFRlc3Q6IGZhc3QvbGF5b3V0Zm9ybWF0dGluZ2NvbnRleHQvZmxvdy1pbnRlZ3JhdGlvbi1iYXNp
Yy1wYWludC5odG1sCisKKyAgICAgICAgKiBsYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheUlubGlu
ZUNvbnRlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OiBjb25zdCk6CisgICAgICAg
ICogbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6Y29tcHV0ZU92ZXJmbG93KToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpMaW5lTGF5b3V0OjpwYWludCk6CisK
KyAgICAgICAgQWRvcHRlZCBmcm9tIFNpbXBsZUxpbmVMYXlvdXQ6OnBhaW50RmxvdyB3aXRoIHN1
cHBvcnQgZm9yIHBlci1ydW4gc3R5bGUgYWRkZWQuCisKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dEludGVncmF0aW9uOjpMaW5lTGF5b3V0OjpkZWJ1Z1RleHRTaGFkb3cpOgorICAgICAgICAqIGxh
eW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuaDoKKwogMjAxOS0x
Mi0wMyAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3Zl
IHVudXNlZCBEcmFnQ29udHJvbGxlcjo6Y2xpZW50KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5SW5saW5lQ29udGVudC5oIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlJbmxpbmVDb250ZW50LmgKaW5kZXggZTRm
YzNlZmFlMjkuLjVjMGM4YzFkZTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
ZGlzcGxheXRyZWUvRGlzcGxheUlubGluZUNvbnRlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheUlubGluZUNvbnRlbnQuaApAQCAtMjksNiArMjksNyBA
QAogCiAjaW5jbHVkZSAiRGlzcGxheVJ1bi5oIgogI2luY2x1ZGUgIklubGluZUxpbmVCb3guaCIK
KyNpbmNsdWRlIDx3dGYvSXRlcmF0b3JSYW5nZS5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDIsOCArNDMsMzUgQEAgc3RydWN0IElubGluZUNv
bnRlbnQgOiBwdWJsaWMgUmVmQ291bnRlZDxJbmxpbmVDb250ZW50PiB7CiAgICAgTGluZUJveGVz
IGxpbmVCb3hlczsKIAogICAgIGNvbnN0IExheW91dDo6TGluZUJveCYgbGluZUJveEZvclJ1bihj
b25zdCBSdW4mIHJ1bikgY29uc3QgeyByZXR1cm4gbGluZUJveGVzW3J1bi5saW5lSW5kZXgoKV07
IH0KKyAgICBXVEY6Okl0ZXJhdG9yUmFuZ2U8Y29uc3QgUnVuKj4gcnVuc0ZvclJlY3QoY29uc3Qg
TGF5b3V0UmVjdCYpIGNvbnN0OwogfTsKIAoraW5saW5lIFdURjo6SXRlcmF0b3JSYW5nZTxjb25z
dCBSdW4qPiBJbmxpbmVDb250ZW50OjpydW5zRm9yUmVjdChjb25zdCBMYXlvdXRSZWN0JiByZWN0
KSBjb25zdAoreworICAgIC8vIEZJWE1FOiBEbyBzb21ldGhpbmcgZWZmaWNpZW50LgorICAgIGNv
bnN0IFJ1biogZmlyc3QgPSBudWxscHRyOworICAgIGZvciAoYXV0byYgcnVuIDogcnVucykgewor
ICAgICAgICBMYXlvdXRSZWN0IHJ1blJlY3QgPSBydW4ubG9naWNhbFJlY3QoKTsKKyAgICAgICAg
aWYgKHJ1blJlY3QuaW50ZXJzZWN0cyhyZWN0KSkgeworICAgICAgICAgICAgZmlyc3QgPSAmcnVu
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKCFmaXJzdCkK
KyAgICAgICAgcmV0dXJuIHsgbnVsbHB0ciwgbnVsbHB0ciB9OworCisgICAgY29uc3QgUnVuKiBs
YXN0ID0gbnVsbHB0cjsKKyAgICBmb3IgKGF1dG8mIHJ1biA6IFdURjo6bWFrZVJldmVyc2VkUmFu
Z2UocnVucykpIHsKKyAgICAgICAgTGF5b3V0UmVjdCBydW5SZWN0ID0gcnVuLmxvZ2ljYWxSZWN0
KCk7CisgICAgICAgIGlmIChydW5SZWN0LmludGVyc2VjdHMocmVjdCkpIHsKKyAgICAgICAgICAg
IGxhc3QgPSAmcnVuOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICByZXR1cm4geyBmaXJzdCwgbGFzdCArIDEgfTsKK30KKwogfQogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5
b3V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3Jh
dGlvbkxpbmVMYXlvdXQuY3BwCmluZGV4IGE4NDBkOGM1MDFlLi5kMmI2OWMwYzE5ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9u
TGluZUxheW91dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xh
eW91dEludGVncmF0aW9uTGluZUxheW91dC5jcHAKQEAgLTI5LDE2ICsyOSwyMCBAQAogI2lmIEVO
QUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQogCiAjaW5jbHVkZSAiRGlzcGxheUJveC5o
IgotI2luY2x1ZGUgIkRpc3BsYXlQYWludGVyLmgiCisjaW5jbHVkZSAiRXZlbnRSZWdpb24uaCIK
ICNpbmNsdWRlICJJbmxpbmVGb3JtYXR0aW5nU3RhdGUuaCIKICNpbmNsdWRlICJJbnZhbGlkYXRp
b25TdGF0ZS5oIgogI2luY2x1ZGUgIkxheW91dENvbnRleHQuaCIKICNpbmNsdWRlICJMYXlvdXRU
cmVlQnVpbGRlci5oIgogI2luY2x1ZGUgIlBhaW50SW5mby5oIgogI2luY2x1ZGUgIlJlbmRlckJs
b2NrRmxvdy5oIgorI2luY2x1ZGUgIlJlbmRlckNoaWxkSXRlcmF0b3IuaCIKICNpbmNsdWRlICJS
ZW5kZXJMaW5lQnJlYWsuaCIKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCisj
aW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTaW1wbGVMaW5lTGF5b3V0LmgiCisjaW5j
bHVkZSAiVGV4dERlY29yYXRpb25QYWludGVyLmgiCisjaW5jbHVkZSAiVGV4dFBhaW50ZXIuaCIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIExheW91dEludGVncmF0aW9uIHsKQEAg
LTEwMCwxOCArMTA0LDYgQEAgY29uc3QgRGlzcGxheTo6SW5saW5lQ29udGVudCogTGluZUxheW91
dDo6ZGlzcGxheUlubGluZUNvbnRlbnQoKSBjb25zdAogICAgIHJldHVybiBkb3duY2FzdDxMYXlv
dXQ6OklubGluZUZvcm1hdHRpbmdTdGF0ZT4obV9sYXlvdXRTdGF0ZS0+ZXN0YWJsaXNoZWRGb3Jt
YXR0aW5nU3RhdGUocm9vdExheW91dEJveCgpKSkuZGlzcGxheUlubGluZUNvbnRlbnQoKTsKIH0K
IAotdm9pZCBMaW5lTGF5b3V0OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5
b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQotewotICAgIGF1dG8mIGdyYXBoaWNzQ29udGV4dCA9IHBh
aW50SW5mby5jb250ZXh0KCk7Ci0KLSAgICBncmFwaGljc0NvbnRleHQuc2F2ZSgpOwotICAgIGdy
YXBoaWNzQ29udGV4dC50cmFuc2xhdGUocGFpbnRPZmZzZXQpOwotCi0gICAgRGlzcGxheTo6UGFp
bnRlcjo6cGFpbnRJbmxpbmVGbG93KCptX2xheW91dFN0YXRlLCBwYWludEluZm8uY29udGV4dCgp
KTsKLQotICAgIGdyYXBoaWNzQ29udGV4dC5yZXN0b3JlKCk7Ci19Ci0KIExpbmVMYXlvdXRUcmF2
ZXJzYWw6OlRleHRCb3hJdGVyYXRvciBMaW5lTGF5b3V0Ojp0ZXh0Qm94ZXNGb3IoY29uc3QgUmVu
ZGVyVGV4dCYgcmVuZGVyVGV4dCkgY29uc3QKIHsKICAgICBhdXRvKiBpbmxpbmVDb250ZW50ID0g
ZGlzcGxheUlubGluZUNvbnRlbnQoKTsKQEAgLTE1OCw2ICsxNTAsMTAwIEBAIGNvbnN0IExheW91
dDo6Q29udGFpbmVyJiBMaW5lTGF5b3V0Ojpyb290TGF5b3V0Qm94KCkgY29uc3QKICAgICByZXR1
cm4gbV90cmVlQ29udGVudC0+cm9vdExheW91dEJveCgpOwogfQogCitzdGF0aWMgTGF5b3V0UmVj
dCBjb21wdXRlT3ZlcmZsb3coY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBMYXlvdXRS
ZWN0JiBib3hSZWN0LCBJbnRTaXplJiB2aWV3cG9ydFNpemUpCit7CisgICAgYXV0byBvdmVyZmxv
d1JlY3QgPSBib3hSZWN0OworICAgIGF1dG8gc3Ryb2tlT3ZlcmZsb3cgPSBzdGQ6OmNlaWwoc3R5
bGUuY29tcHV0ZWRTdHJva2VXaWR0aCh2aWV3cG9ydFNpemUpKTsKKyAgICBvdmVyZmxvd1JlY3Qu
aW5mbGF0ZShzdHJva2VPdmVyZmxvdyk7CisKKyAgICBhdXRvIGxldHRlclNwYWNpbmcgPSBzdHls
ZS5mb250Q2FzY2FkZSgpLmxldHRlclNwYWNpbmcoKTsKKyAgICBpZiAobGV0dGVyU3BhY2luZyA+
PSAwKQorICAgICAgICByZXR1cm4gb3ZlcmZsb3dSZWN0OworICAgIC8vIExhc3QgbGV0dGVyJ3Mg
bmVnYXRpdmUgc3BhY2luZyBzaHJpbmtzIGxheW91dCByZWN0LiBQdXNoIGl0IHRvIHZpc3VhbCBv
dmVyZmxvdy4KKyAgICBvdmVyZmxvd1JlY3QuZXhwYW5kKC1sZXR0ZXJTcGFjaW5nLCAwKTsKKyAg
ICByZXR1cm4gb3ZlcmZsb3dSZWN0OworfQorCit2b2lkIExpbmVMYXlvdXQ6OnBhaW50KFBhaW50
SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCit7CisgICAg
aWYgKCFkaXNwbGF5SW5saW5lQ29udGVudCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRv
JiBpbmxpbmVDb250ZW50ID0gKmRpc3BsYXlJbmxpbmVDb250ZW50KCk7CisKKyAgICBhdXRvIHZp
ZXdwb3J0U2l6ZSA9IG1fZmxvdy5mcmFtZSgpLnZpZXcoKS0+c2l6ZSgpOworICAgIGZsb2F0IGRl
dmljZVNjYWxlRmFjdG9yID0gbV9mbG93LmRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKTsK
KworICAgIGF1dG8gcGFpbnRSZWN0ID0gcGFpbnRJbmZvLnJlY3Q7CisgICAgcGFpbnRSZWN0Lm1v
dmVCeSgtcGFpbnRPZmZzZXQpOworCisgICAgaWYgKHBhaW50SW5mby5waGFzZSAhPSBQYWludFBo
YXNlOjpGb3JlZ3JvdW5kICYmIHBhaW50SW5mby5waGFzZSAhPSBQYWludFBoYXNlOjpFdmVudFJl
Z2lvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgZm9yIChhdXRvJiBydW4gOiBpbmxpbmVDb250
ZW50LnJ1bnNGb3JSZWN0KHBhaW50UmVjdCkpIHsKKyAgICAgICAgaWYgKCFydW4udGV4dENvbnRl
eHQoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGF1dG8mIHRleHRDb250ZXh0
ID0gKnJ1bi50ZXh0Q29udGV4dCgpOworICAgICAgICBpZiAodGV4dENvbnRleHQuc3RhcnQoKSA9
PSB0ZXh0Q29udGV4dC5lbmQoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGF1
dG8mIHN0eWxlID0gcnVuLnN0eWxlKCk7CisgICAgICAgIGlmIChzdHlsZS52aXNpYmlsaXR5KCkg
IT0gVmlzaWJpbGl0eTo6VmlzaWJsZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBM
YXlvdXRSZWN0IHJlY3QgPSBydW4ubG9naWNhbFJlY3QoKTsKKyAgICAgICAgRmxvYXRSZWN0IHZp
c3VhbE92ZXJmbG93UmVjdCA9IGNvbXB1dGVPdmVyZmxvdyhzdHlsZSwgcmVjdCwgdmlld3BvcnRT
aXplKTsKKyAgICAgICAgaWYgKHBhaW50UmVjdC55KCkgPiB2aXN1YWxPdmVyZmxvd1JlY3QubWF4
WSgpIHx8IHBhaW50UmVjdC5tYXhZKCkgPCB2aXN1YWxPdmVyZmxvd1JlY3QueSgpKQorICAgICAg
ICAgICAgY29udGludWU7CisKKyAgICAgICAgaWYgKHBhaW50SW5mby5ldmVudFJlZ2lvbkNvbnRl
eHQpIHsKKyAgICAgICAgICAgIGlmIChzdHlsZS5wb2ludGVyRXZlbnRzKCkgIT0gUG9pbnRlckV2
ZW50czo6Tm9uZSkKKyAgICAgICAgICAgICAgICBwYWludEluZm8uZXZlbnRSZWdpb25Db250ZXh0
LT51bml0ZShlbmNsb3NpbmdJbnRSZWN0KHZpc3VhbE92ZXJmbG93UmVjdCksIHN0eWxlKTsKKyAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgLy8gRklYTUU6IEh5cGhl
bnMuCisKKyAgICAgICAgYXV0byYgbGluZUJveCA9IGlubGluZUNvbnRlbnQubGluZUJveEZvclJ1
bihydW4pOworICAgICAgICBhdXRvIGJhc2VsaW5lT2Zmc2V0ID0gcGFpbnRPZmZzZXQueSgpICsg
bGluZUJveC5sb2dpY2FsVG9wKCkgKyBsaW5lQm94LmJhc2VsaW5lT2Zmc2V0KCk7CisKKyAgICAg
ICAgRXhwYW5zaW9uQmVoYXZpb3IgYmVoYXZpb3IgPSB0ZXh0Q29udGV4dC5leHBhbnNpb24oKSA/
IHRleHRDb250ZXh0LmV4cGFuc2lvbigpLT5iZWhhdmlvciA6IERlZmF1bHRFeHBhbnNpb247Cisg
ICAgICAgIExheW91dFVuaXQgaG9yaXpvbnRhbEV4cGFuc2lvbiA9IHRleHRDb250ZXh0LmV4cGFu
c2lvbigpID8gdGV4dENvbnRleHQuZXhwYW5zaW9uKCktPmhvcml6b250YWxFeHBhbnNpb24gOiAw
X2x1OworICAgICAgICBhdXRvIGxvZ2ljYWxMZWZ0ID0gcGFpbnRPZmZzZXQueCgpICsgcnVuLmxv
Z2ljYWxMZWZ0KCk7CisKKyAgICAgICAgVGV4dFJ1biB0ZXh0UnVuIHsgdGV4dENvbnRleHQuY29u
dGVudCgpLCBsb2dpY2FsTGVmdCwgaG9yaXpvbnRhbEV4cGFuc2lvbiwgYmVoYXZpb3IgfTsKKyAg
ICAgICAgdGV4dFJ1bi5zZXRUYWJTaXplKCFzdHlsZS5jb2xsYXBzZVdoaXRlU3BhY2UoKSwgc3R5
bGUudGFiU2l6ZSgpKTsKKyAgICAgICAgRmxvYXRQb2ludCB0ZXh0T3JpZ2luIHsgcmVjdC54KCkg
KyBwYWludE9mZnNldC54KCksIHJvdW5kVG9EZXZpY2VQaXhlbChiYXNlbGluZU9mZnNldCwgZGV2
aWNlU2NhbGVGYWN0b3IpIH07CisKKyAgICAgICAgVGV4dFBhaW50ZXIgdGV4dFBhaW50ZXIocGFp
bnRJbmZvLmNvbnRleHQoKSk7CisgICAgICAgIHRleHRQYWludGVyLnNldEZvbnQoc3R5bGUuZm9u
dENhc2NhZGUoKSk7CisgICAgICAgIHRleHRQYWludGVyLnNldFN0eWxlKGNvbXB1dGVUZXh0UGFp
bnRTdHlsZShtX2Zsb3cuZnJhbWUoKSwgc3R5bGUsIHBhaW50SW5mbykpOworICAgICAgICBpZiAo
YXV0byogZGVidWdTaGFkb3cgPSBkZWJ1Z1RleHRTaGFkb3coKSkKKyAgICAgICAgICAgIHRleHRQ
YWludGVyLnNldFNoYWRvdyhkZWJ1Z1NoYWRvdyk7CisKKyAgICAgICAgdGV4dFBhaW50ZXIucGFp
bnQodGV4dFJ1biwgcmVjdCwgdGV4dE9yaWdpbik7CisKKyAgICAgICAgaWYgKCFzdHlsZS50ZXh0
RGVjb3JhdGlvbnNJbkVmZmVjdCgpLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgLy8gRklYTUU6
IFVzZSBjb3JyZWN0IFJlbmRlclRleHQuCisgICAgICAgICAgICBpZiAoYXV0byogdGV4dFJlbmRl
cmVyID0gY2hpbGRyZW5PZlR5cGU8UmVuZGVyVGV4dD4obV9mbG93KS5maXJzdCgpKSB7CisgICAg
ICAgICAgICAgICAgYXV0byBwYWludGVyID0gVGV4dERlY29yYXRpb25QYWludGVyIHsgcGFpbnRJ
bmZvLmNvbnRleHQoKSwgc3R5bGUudGV4dERlY29yYXRpb25zSW5FZmZlY3QoKSwgKnRleHRSZW5k
ZXJlciwgZmFsc2UsIHN0eWxlLmZvbnRDYXNjYWRlKCkgfTsKKyAgICAgICAgICAgICAgICBwYWlu
dGVyLnNldFdpZHRoKHJlY3Qud2lkdGgoKSk7CisgICAgICAgICAgICAgICAgcGFpbnRlci5wYWlu
dFRleHREZWNvcmF0aW9uKHRleHRSdW4sIHRleHRPcmlnaW4sIHJlY3QubG9jYXRpb24oKSArIHBh
aW50T2Zmc2V0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKworU2hhZG93
RGF0YSogTGluZUxheW91dDo6ZGVidWdUZXh0U2hhZG93KCkKK3sKKyAgICBpZiAoIW1fZmxvdy5z
ZXR0aW5ncygpLnNpbXBsZUxpbmVMYXlvdXREZWJ1Z0JvcmRlcnNFbmFibGVkKCkpCisgICAgICAg
IHJldHVybiBudWxscHRyOworCisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFNoYWRvd0RhdGE+
IGRlYnVnVGV4dFNoYWRvdyhJbnRQb2ludCgwLCAwKSwgMTAsIDIwLCBTaGFkb3dTdHlsZTo6Tm9y
bWFsLCB0cnVlLCBDb2xvcigwLCAwLCAxNTAsIDE1MCkpOworICAgIHJldHVybiAmZGVidWdUZXh0
U2hhZG93LmdldCgpOworfQorCiB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuaApp
bmRleCA1NWM3NWNlODRlZC4uNGNjYWIxOTA0MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5
b3V0LmgKQEAgLTY5LDYgKzY5LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBjb25zdCBMYXlv
dXQ6OkNvbnRhaW5lciYgcm9vdExheW91dEJveCgpIGNvbnN0OwogICAgIHZvaWQgcHJlcGFyZVJv
b3RHZW9tZXRyeUZvckxheW91dCgpOworICAgIFNoYWRvd0RhdGEqIGRlYnVnVGV4dFNoYWRvdygp
OwogCiAgICAgY29uc3QgUmVuZGVyQmxvY2tGbG93JiBtX2Zsb3c7CiAgICAgc3RkOjp1bmlxdWVf
cHRyPGNvbnN0IExheW91dDo6TGF5b3V0VHJlZUNvbnRlbnQ+IG1fdHJlZUNvbnRlbnQ7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>384812</attachid>
            <date>2019-12-04 08:16:58 -0800</date>
            <delta_ts>2019-12-04 09:16:44 -0800</delta_ts>
            <desc>patch</desc>
            <filename>lfc-integration-paint-3.patch</filename>
            <type>text/plain</type>
            <size>11794</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA3YWU1YThlOTk3ZC4uY2JhNTkwNjFmYzQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAor
MjAxOS0xMi0wNCAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAg
W0xGQ11bSW50ZWdyYXRpb25dIFBhaW50IHdpdGggVGV4dFBhaW50ZXIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNDg1MgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9sYXlvdXRmb3JtYXR0aW5n
Y29udGV4dC9mbG93LWludGVncmF0aW9uLWJhc2ljLXBhaW50LWV4cGVjdGVkLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvbGF5b3V0Zm9ybWF0dGluZ2NvbnRleHQvZmxvdy1pbnRlZ3JhdGlv
bi1iYXNpYy1wYWludC5odG1sOiBBZGRlZC4KKwogMjAxOS0xMi0wMyAgTWVnYW4gR2FyZG5lciAg
PG1lZ2FuX2dhcmRuZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBkaXNhYmxlZCBoaWdobGln
aHQgQVBJIHNrZWxldG9uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2xheW91dGZvcm1h
dHRpbmdjb250ZXh0L2Zsb3ctaW50ZWdyYXRpb24tYmFzaWMtcGFpbnQtZXhwZWN0ZWQuaHRtbCBi
L0xheW91dFRlc3RzL2Zhc3QvbGF5b3V0Zm9ybWF0dGluZ2NvbnRleHQvZmxvdy1pbnRlZ3JhdGlv
bi1iYXNpYy1wYWludC1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwLi5mMjRmNzRmOWQ5MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvbGF5b3V0Zm9ybWF0dGluZ2NvbnRleHQvZmxvdy1pbnRlZ3JhdGlvbi1iYXNpYy1wYWludC1l
eHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBodG1sPgorPHN0eWxlPgor
Lm1hcmdpbiB7IG1hcmdpbjogMTBweCA0MDBweCAyMHB4IDVweDsgfQorLmJvcmRlciB7IGJvcmRl
ci1sZWZ0OiAxMHB4IHNvbGlkIGJsYWNrOyBib3JkZXItdG9wOiA1cHggc29saWQgYmxhY2s7IGJv
cmRlci1yaWdodDogMTVweCBzb2xpZCBibGFjazsgYm9yZGVyLWJvdHRvbTogMjBweCBzb2xpZCBi
bGFjazsgfQorLnBhZGRpbmcgeyBwYWRkaW5nOiAxMHB4IDUwcHggMjBweCA1cHg7IH0KKzwvc3R5
bGU+Cis8ZGl2IGNsYXNzPSJtYXJnaW4iPlRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0IHRl
eHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dCA8L2Rp
dj4KKzxkaXYgY2xhc3M9Im1hcmdpbiBib3JkZXIiPlRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0
ZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4
dCA8L2Rpdj4KKzxkaXYgY2xhc3M9Im1hcmdpbiBib3JkZXIgcGFkZGluZyI+VGV4dCB0ZXh0IHRl
eHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0
IHRleHQgdGV4dCB0ZXh0IDwvZGl2PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9sYXlvdXRmb3JtYXR0aW5nY29udGV4dC9mbG93LWludGVncmF0aW9uLWJhc2ljLXBhaW50
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2xheW91dGZvcm1hdHRpbmdjb250ZXh0L2Zsb3ctaW50
ZWdyYXRpb24tYmFzaWMtcGFpbnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMC4uYmMzNzQ4Mjg5MDkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2xheW91dGZvcm1hdHRpbmdjb250ZXh0L2Zsb3ctaW50ZWdyYXRpb24tYmFzaWMtcGFpbnQuaHRt
bApAQCAtMCwwICsxLDExIEBACis8IURPQ1RZUEUgaHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5u
ZXIgWyBpbnRlcm5hbDpMYXlvdXRGb3JtYXR0aW5nQ29udGV4dEludGVncmF0aW9uRW5hYmxlZD10
cnVlIF0gLS0+Cis8aHRtbD4KKzxzdHlsZT4KKy5tYXJnaW4geyBtYXJnaW46IDEwcHggNDAwcHgg
MjBweCA1cHg7IH0KKy5ib3JkZXIgeyBib3JkZXItbGVmdDogMTBweCBzb2xpZCBibGFjazsgYm9y
ZGVyLXRvcDogNXB4IHNvbGlkIGJsYWNrOyBib3JkZXItcmlnaHQ6IDE1cHggc29saWQgYmxhY2s7
IGJvcmRlci1ib3R0b206IDIwcHggc29saWQgYmxhY2s7IH0KKy5wYWRkaW5nIHsgcGFkZGluZzog
MTBweCA1MHB4IDIwcHggNXB4OyB9Cis8L3N0eWxlPgorPGRpdiBjbGFzcz0ibWFyZ2luIj5UZXh0
IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0
ZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQgPC9kaXY+Cis8ZGl2IGNsYXNzPSJtYXJnaW4gYm9yZGVy
Ij5UZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQg
dGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQgPC9kaXY+Cis8ZGl2IGNsYXNzPSJtYXJnaW4g
Ym9yZGVyIHBhZGRpbmciPlRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0
ZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dCA8L2Rpdj4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwppbmRleCBmOTEyOTk5YmM2ZS4uMDA1MTZkZjVjODAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyOSBAQAorMjAxOS0xMi0wNCAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5j
b20+CisKKyAgICAgICAgW0xGQ11bSW50ZWdyYXRpb25dIFBhaW50IHdpdGggVGV4dFBhaW50ZXIK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNDg1Mgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERpc3BsYXk6
OlBhaW50ZXIgaXMgdmVyeSBydWRpbWVudGFyeSBhbmQgdHVybmluZyBpdCBpbnRvIGEgZnVsbCBw
YWludGluZyBpbXBsZW1lbnRhdGlvbgorICAgICAgICByZXF1aXJlcyBsb3Qgb2YgcmVmYWN0b3Jp
bmcuIEluc3RlYWQsIGZvciBub3cgdXNlIHNlcGFyYXRlIHBhaW50aW5nIGNvZGUgaW4gdGhlIGlu
dGVncmF0aW9uCisgICAgICAgIGxheWVyIHRoYXQgaW52b2tlcyB0aGUgZXhpc3RpbmcgcmVuZGVy
IHRyZWUgYmFzZWQgcGFpbnRpbmcgaGVscGVycy4KKworICAgICAgICBUaGlzIGFsc28gZW5hYmxl
cyB3cml0aW5nIHJlZnRlc3RzIGZvciBpbnRlcmdyYXRlZCBMRkMgbGF5b3V0LgorCisgICAgICAg
IFRlc3Q6IGZhc3QvbGF5b3V0Zm9ybWF0dGluZ2NvbnRleHQvZmxvdy1pbnRlZ3JhdGlvbi1iYXNp
Yy1wYWludC5odG1sCisKKyAgICAgICAgKiBsYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheUlubGlu
ZUNvbnRlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OiBjb25zdCk6CisgICAgICAg
ICogbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6Y29tcHV0ZU92ZXJmbG93KToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpMaW5lTGF5b3V0OjpwYWludCk6CisK
KyAgICAgICAgQWRvcHRlZCBmcm9tIFNpbXBsZUxpbmVMYXlvdXQ6OnBhaW50RmxvdyB3aXRoIHN1
cHBvcnQgZm9yIHBlci1ydW4gc3R5bGUgYWRkZWQuCisKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dEludGVncmF0aW9uOjpMaW5lTGF5b3V0OjpkZWJ1Z1RleHRTaGFkb3cpOgorICAgICAgICAqIGxh
eW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuaDoKKwogMjAxOS0x
Mi0wMyAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3Zl
IHVudXNlZCBEcmFnQ29udHJvbGxlcjo6Y2xpZW50KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5SW5saW5lQ29udGVudC5oIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlJbmxpbmVDb250ZW50LmgKaW5kZXggZTRm
YzNlZmFlMjkuLjVjMGM4YzFkZTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
ZGlzcGxheXRyZWUvRGlzcGxheUlubGluZUNvbnRlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheUlubGluZUNvbnRlbnQuaApAQCAtMjksNiArMjksNyBA
QAogCiAjaW5jbHVkZSAiRGlzcGxheVJ1bi5oIgogI2luY2x1ZGUgIklubGluZUxpbmVCb3guaCIK
KyNpbmNsdWRlIDx3dGYvSXRlcmF0b3JSYW5nZS5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDIsOCArNDMsMzUgQEAgc3RydWN0IElubGluZUNv
bnRlbnQgOiBwdWJsaWMgUmVmQ291bnRlZDxJbmxpbmVDb250ZW50PiB7CiAgICAgTGluZUJveGVz
IGxpbmVCb3hlczsKIAogICAgIGNvbnN0IExheW91dDo6TGluZUJveCYgbGluZUJveEZvclJ1bihj
b25zdCBSdW4mIHJ1bikgY29uc3QgeyByZXR1cm4gbGluZUJveGVzW3J1bi5saW5lSW5kZXgoKV07
IH0KKyAgICBXVEY6Okl0ZXJhdG9yUmFuZ2U8Y29uc3QgUnVuKj4gcnVuc0ZvclJlY3QoY29uc3Qg
TGF5b3V0UmVjdCYpIGNvbnN0OwogfTsKIAoraW5saW5lIFdURjo6SXRlcmF0b3JSYW5nZTxjb25z
dCBSdW4qPiBJbmxpbmVDb250ZW50OjpydW5zRm9yUmVjdChjb25zdCBMYXlvdXRSZWN0JiByZWN0
KSBjb25zdAoreworICAgIC8vIEZJWE1FOiBEbyBzb21ldGhpbmcgZWZmaWNpZW50LgorICAgIGNv
bnN0IFJ1biogZmlyc3QgPSBudWxscHRyOworICAgIGZvciAoYXV0byYgcnVuIDogcnVucykgewor
ICAgICAgICBMYXlvdXRSZWN0IHJ1blJlY3QgPSBydW4ubG9naWNhbFJlY3QoKTsKKyAgICAgICAg
aWYgKHJ1blJlY3QuaW50ZXJzZWN0cyhyZWN0KSkgeworICAgICAgICAgICAgZmlyc3QgPSAmcnVu
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKCFmaXJzdCkK
KyAgICAgICAgcmV0dXJuIHsgbnVsbHB0ciwgbnVsbHB0ciB9OworCisgICAgY29uc3QgUnVuKiBs
YXN0ID0gbnVsbHB0cjsKKyAgICBmb3IgKGF1dG8mIHJ1biA6IFdURjo6bWFrZVJldmVyc2VkUmFu
Z2UocnVucykpIHsKKyAgICAgICAgTGF5b3V0UmVjdCBydW5SZWN0ID0gcnVuLmxvZ2ljYWxSZWN0
KCk7CisgICAgICAgIGlmIChydW5SZWN0LmludGVyc2VjdHMocmVjdCkpIHsKKyAgICAgICAgICAg
IGxhc3QgPSAmcnVuOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICByZXR1cm4geyBmaXJzdCwgbGFzdCArIDEgfTsKK30KKwogfQogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5
b3V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3Jh
dGlvbkxpbmVMYXlvdXQuY3BwCmluZGV4IGE4NDBkOGM1MDFlLi43ZmY3OTgyYjRiOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9u
TGluZUxheW91dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xh
eW91dEludGVncmF0aW9uTGluZUxheW91dC5jcHAKQEAgLTI5LDE2ICsyOSwyMCBAQAogI2lmIEVO
QUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQogCiAjaW5jbHVkZSAiRGlzcGxheUJveC5o
IgotI2luY2x1ZGUgIkRpc3BsYXlQYWludGVyLmgiCisjaW5jbHVkZSAiRXZlbnRSZWdpb24uaCIK
ICNpbmNsdWRlICJJbmxpbmVGb3JtYXR0aW5nU3RhdGUuaCIKICNpbmNsdWRlICJJbnZhbGlkYXRp
b25TdGF0ZS5oIgogI2luY2x1ZGUgIkxheW91dENvbnRleHQuaCIKICNpbmNsdWRlICJMYXlvdXRU
cmVlQnVpbGRlci5oIgogI2luY2x1ZGUgIlBhaW50SW5mby5oIgogI2luY2x1ZGUgIlJlbmRlckJs
b2NrRmxvdy5oIgorI2luY2x1ZGUgIlJlbmRlckNoaWxkSXRlcmF0b3IuaCIKICNpbmNsdWRlICJS
ZW5kZXJMaW5lQnJlYWsuaCIKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCisj
aW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTaW1wbGVMaW5lTGF5b3V0LmgiCisjaW5j
bHVkZSAiVGV4dERlY29yYXRpb25QYWludGVyLmgiCisjaW5jbHVkZSAiVGV4dFBhaW50ZXIuaCIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIExheW91dEludGVncmF0aW9uIHsKQEAg
LTEwMCwxOCArMTA0LDYgQEAgY29uc3QgRGlzcGxheTo6SW5saW5lQ29udGVudCogTGluZUxheW91
dDo6ZGlzcGxheUlubGluZUNvbnRlbnQoKSBjb25zdAogICAgIHJldHVybiBkb3duY2FzdDxMYXlv
dXQ6OklubGluZUZvcm1hdHRpbmdTdGF0ZT4obV9sYXlvdXRTdGF0ZS0+ZXN0YWJsaXNoZWRGb3Jt
YXR0aW5nU3RhdGUocm9vdExheW91dEJveCgpKSkuZGlzcGxheUlubGluZUNvbnRlbnQoKTsKIH0K
IAotdm9pZCBMaW5lTGF5b3V0OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5
b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQotewotICAgIGF1dG8mIGdyYXBoaWNzQ29udGV4dCA9IHBh
aW50SW5mby5jb250ZXh0KCk7Ci0KLSAgICBncmFwaGljc0NvbnRleHQuc2F2ZSgpOwotICAgIGdy
YXBoaWNzQ29udGV4dC50cmFuc2xhdGUocGFpbnRPZmZzZXQpOwotCi0gICAgRGlzcGxheTo6UGFp
bnRlcjo6cGFpbnRJbmxpbmVGbG93KCptX2xheW91dFN0YXRlLCBwYWludEluZm8uY29udGV4dCgp
KTsKLQotICAgIGdyYXBoaWNzQ29udGV4dC5yZXN0b3JlKCk7Ci19Ci0KIExpbmVMYXlvdXRUcmF2
ZXJzYWw6OlRleHRCb3hJdGVyYXRvciBMaW5lTGF5b3V0Ojp0ZXh0Qm94ZXNGb3IoY29uc3QgUmVu
ZGVyVGV4dCYgcmVuZGVyVGV4dCkgY29uc3QKIHsKICAgICBhdXRvKiBpbmxpbmVDb250ZW50ID0g
ZGlzcGxheUlubGluZUNvbnRlbnQoKTsKQEAgLTE1OCw2ICsxNTAsMTAwIEBAIGNvbnN0IExheW91
dDo6Q29udGFpbmVyJiBMaW5lTGF5b3V0Ojpyb290TGF5b3V0Qm94KCkgY29uc3QKICAgICByZXR1
cm4gbV90cmVlQ29udGVudC0+cm9vdExheW91dEJveCgpOwogfQogCitzdGF0aWMgTGF5b3V0UmVj
dCBjb21wdXRlT3ZlcmZsb3coY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBMYXlvdXRS
ZWN0JiBib3hSZWN0LCBJbnRTaXplJiB2aWV3cG9ydFNpemUpCit7CisgICAgYXV0byBvdmVyZmxv
d1JlY3QgPSBib3hSZWN0OworICAgIGF1dG8gc3Ryb2tlT3ZlcmZsb3cgPSBzdGQ6OmNlaWwoc3R5
bGUuY29tcHV0ZWRTdHJva2VXaWR0aCh2aWV3cG9ydFNpemUpKTsKKyAgICBvdmVyZmxvd1JlY3Qu
aW5mbGF0ZShzdHJva2VPdmVyZmxvdyk7CisKKyAgICBhdXRvIGxldHRlclNwYWNpbmcgPSBzdHls
ZS5mb250Q2FzY2FkZSgpLmxldHRlclNwYWNpbmcoKTsKKyAgICBpZiAobGV0dGVyU3BhY2luZyA+
PSAwKQorICAgICAgICByZXR1cm4gb3ZlcmZsb3dSZWN0OworICAgIC8vIExhc3QgbGV0dGVyJ3Mg
bmVnYXRpdmUgc3BhY2luZyBzaHJpbmtzIGxheW91dCByZWN0LiBQdXNoIGl0IHRvIHZpc3VhbCBv
dmVyZmxvdy4KKyAgICBvdmVyZmxvd1JlY3QuZXhwYW5kKC1sZXR0ZXJTcGFjaW5nLCAwKTsKKyAg
ICByZXR1cm4gb3ZlcmZsb3dSZWN0OworfQorCit2b2lkIExpbmVMYXlvdXQ6OnBhaW50KFBhaW50
SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCit7CisgICAg
aWYgKCFkaXNwbGF5SW5saW5lQ29udGVudCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAo
cGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2U6OkZvcmVncm91bmQgJiYgcGFpbnRJbmZvLnBo
YXNlICE9IFBhaW50UGhhc2U6OkV2ZW50UmVnaW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBh
dXRvJiBpbmxpbmVDb250ZW50ID0gKmRpc3BsYXlJbmxpbmVDb250ZW50KCk7CisKKyAgICBhdXRv
IHZpZXdwb3J0U2l6ZSA9IG1fZmxvdy5mcmFtZSgpLnZpZXcoKS0+c2l6ZSgpOworICAgIGZsb2F0
IGRldmljZVNjYWxlRmFjdG9yID0gbV9mbG93LmRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3Io
KTsKKworICAgIGF1dG8gcGFpbnRSZWN0ID0gcGFpbnRJbmZvLnJlY3Q7CisgICAgcGFpbnRSZWN0
Lm1vdmVCeSgtcGFpbnRPZmZzZXQpOworCisgICAgZm9yIChhdXRvJiBydW4gOiBpbmxpbmVDb250
ZW50LnJ1bnNGb3JSZWN0KHBhaW50UmVjdCkpIHsKKyAgICAgICAgaWYgKCFydW4udGV4dENvbnRl
eHQoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGF1dG8mIHRleHRDb250ZXh0
ID0gKnJ1bi50ZXh0Q29udGV4dCgpOworICAgICAgICBpZiAodGV4dENvbnRleHQuc3RhcnQoKSA9
PSB0ZXh0Q29udGV4dC5lbmQoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGF1
dG8mIHN0eWxlID0gcnVuLnN0eWxlKCk7CisgICAgICAgIGlmIChzdHlsZS52aXNpYmlsaXR5KCkg
IT0gVmlzaWJpbGl0eTo6VmlzaWJsZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBM
YXlvdXRSZWN0IHJlY3QgPSBydW4ubG9naWNhbFJlY3QoKTsKKyAgICAgICAgRmxvYXRSZWN0IHZp
c3VhbE92ZXJmbG93UmVjdCA9IGNvbXB1dGVPdmVyZmxvdyhzdHlsZSwgcmVjdCwgdmlld3BvcnRT
aXplKTsKKyAgICAgICAgaWYgKHBhaW50UmVjdC55KCkgPiB2aXN1YWxPdmVyZmxvd1JlY3QubWF4
WSgpIHx8IHBhaW50UmVjdC5tYXhZKCkgPCB2aXN1YWxPdmVyZmxvd1JlY3QueSgpKQorICAgICAg
ICAgICAgY29udGludWU7CisKKyAgICAgICAgaWYgKHBhaW50SW5mby5ldmVudFJlZ2lvbkNvbnRl
eHQpIHsKKyAgICAgICAgICAgIGlmIChzdHlsZS5wb2ludGVyRXZlbnRzKCkgIT0gUG9pbnRlckV2
ZW50czo6Tm9uZSkKKyAgICAgICAgICAgICAgICBwYWludEluZm8uZXZlbnRSZWdpb25Db250ZXh0
LT51bml0ZShlbmNsb3NpbmdJbnRSZWN0KHZpc3VhbE92ZXJmbG93UmVjdCksIHN0eWxlKTsKKyAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgLy8gRklYTUU6IEh5cGhl
bnMuCisKKyAgICAgICAgYXV0byYgbGluZUJveCA9IGlubGluZUNvbnRlbnQubGluZUJveEZvclJ1
bihydW4pOworICAgICAgICBhdXRvIGJhc2VsaW5lT2Zmc2V0ID0gcGFpbnRPZmZzZXQueSgpICsg
bGluZUJveC5sb2dpY2FsVG9wKCkgKyBsaW5lQm94LmJhc2VsaW5lT2Zmc2V0KCk7CisKKyAgICAg
ICAgRXhwYW5zaW9uQmVoYXZpb3IgYmVoYXZpb3IgPSB0ZXh0Q29udGV4dC5leHBhbnNpb24oKSA/
IHRleHRDb250ZXh0LmV4cGFuc2lvbigpLT5iZWhhdmlvciA6IERlZmF1bHRFeHBhbnNpb247Cisg
ICAgICAgIExheW91dFVuaXQgaG9yaXpvbnRhbEV4cGFuc2lvbiA9IHRleHRDb250ZXh0LmV4cGFu
c2lvbigpID8gdGV4dENvbnRleHQuZXhwYW5zaW9uKCktPmhvcml6b250YWxFeHBhbnNpb24gOiAw
X2x1OworICAgICAgICBhdXRvIGxvZ2ljYWxMZWZ0ID0gcGFpbnRPZmZzZXQueCgpICsgcnVuLmxv
Z2ljYWxMZWZ0KCk7CisKKyAgICAgICAgVGV4dFJ1biB0ZXh0UnVuIHsgdGV4dENvbnRleHQuY29u
dGVudCgpLCBsb2dpY2FsTGVmdCwgaG9yaXpvbnRhbEV4cGFuc2lvbiwgYmVoYXZpb3IgfTsKKyAg
ICAgICAgdGV4dFJ1bi5zZXRUYWJTaXplKCFzdHlsZS5jb2xsYXBzZVdoaXRlU3BhY2UoKSwgc3R5
bGUudGFiU2l6ZSgpKTsKKyAgICAgICAgRmxvYXRQb2ludCB0ZXh0T3JpZ2luIHsgcmVjdC54KCkg
KyBwYWludE9mZnNldC54KCksIHJvdW5kVG9EZXZpY2VQaXhlbChiYXNlbGluZU9mZnNldCwgZGV2
aWNlU2NhbGVGYWN0b3IpIH07CisKKyAgICAgICAgVGV4dFBhaW50ZXIgdGV4dFBhaW50ZXIocGFp
bnRJbmZvLmNvbnRleHQoKSk7CisgICAgICAgIHRleHRQYWludGVyLnNldEZvbnQoc3R5bGUuZm9u
dENhc2NhZGUoKSk7CisgICAgICAgIHRleHRQYWludGVyLnNldFN0eWxlKGNvbXB1dGVUZXh0UGFp
bnRTdHlsZShtX2Zsb3cuZnJhbWUoKSwgc3R5bGUsIHBhaW50SW5mbykpOworICAgICAgICBpZiAo
YXV0byogZGVidWdTaGFkb3cgPSBkZWJ1Z1RleHRTaGFkb3coKSkKKyAgICAgICAgICAgIHRleHRQ
YWludGVyLnNldFNoYWRvdyhkZWJ1Z1NoYWRvdyk7CisKKyAgICAgICAgdGV4dFBhaW50ZXIucGFp
bnQodGV4dFJ1biwgcmVjdCwgdGV4dE9yaWdpbik7CisKKyAgICAgICAgaWYgKCFzdHlsZS50ZXh0
RGVjb3JhdGlvbnNJbkVmZmVjdCgpLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgLy8gRklYTUU6
IFVzZSBjb3JyZWN0IFJlbmRlclRleHQuCisgICAgICAgICAgICBpZiAoYXV0byogdGV4dFJlbmRl
cmVyID0gY2hpbGRyZW5PZlR5cGU8UmVuZGVyVGV4dD4obV9mbG93KS5maXJzdCgpKSB7CisgICAg
ICAgICAgICAgICAgYXV0byBwYWludGVyID0gVGV4dERlY29yYXRpb25QYWludGVyIHsgcGFpbnRJ
bmZvLmNvbnRleHQoKSwgc3R5bGUudGV4dERlY29yYXRpb25zSW5FZmZlY3QoKSwgKnRleHRSZW5k
ZXJlciwgZmFsc2UsIHN0eWxlLmZvbnRDYXNjYWRlKCkgfTsKKyAgICAgICAgICAgICAgICBwYWlu
dGVyLnNldFdpZHRoKHJlY3Qud2lkdGgoKSk7CisgICAgICAgICAgICAgICAgcGFpbnRlci5wYWlu
dFRleHREZWNvcmF0aW9uKHRleHRSdW4sIHRleHRPcmlnaW4sIHJlY3QubG9jYXRpb24oKSArIHBh
aW50T2Zmc2V0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKworU2hhZG93
RGF0YSogTGluZUxheW91dDo6ZGVidWdUZXh0U2hhZG93KCkKK3sKKyAgICBpZiAoIW1fZmxvdy5z
ZXR0aW5ncygpLnNpbXBsZUxpbmVMYXlvdXREZWJ1Z0JvcmRlcnNFbmFibGVkKCkpCisgICAgICAg
IHJldHVybiBudWxscHRyOworCisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFNoYWRvd0RhdGE+
IGRlYnVnVGV4dFNoYWRvdyhJbnRQb2ludCgwLCAwKSwgMTAsIDIwLCBTaGFkb3dTdHlsZTo6Tm9y
bWFsLCB0cnVlLCBDb2xvcigwLCAwLCAxNTAsIDE1MCkpOworICAgIHJldHVybiAmZGVidWdUZXh0
U2hhZG93LmdldCgpOworfQorCiB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuaApp
bmRleCA1NWM3NWNlODRlZC4uNGNjYWIxOTA0MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5
b3V0LmgKQEAgLTY5LDYgKzY5LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBjb25zdCBMYXlv
dXQ6OkNvbnRhaW5lciYgcm9vdExheW91dEJveCgpIGNvbnN0OwogICAgIHZvaWQgcHJlcGFyZVJv
b3RHZW9tZXRyeUZvckxheW91dCgpOworICAgIFNoYWRvd0RhdGEqIGRlYnVnVGV4dFNoYWRvdygp
OwogCiAgICAgY29uc3QgUmVuZGVyQmxvY2tGbG93JiBtX2Zsb3c7CiAgICAgc3RkOjp1bmlxdWVf
cHRyPGNvbnN0IExheW91dDo6TGF5b3V0VHJlZUNvbnRlbnQ+IG1fdHJlZUNvbnRlbnQ7Cg==
</data>
<flag name="review"
          id="400634"
          type_id="1"
          status="+"
          setter="zalan"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>384819</attachid>
            <date>2019-12-04 09:16:44 -0800</date>
            <delta_ts>2019-12-04 10:00:43 -0800</delta_ts>
            <desc>patch</desc>
            <filename>lfc-integration-paint-4.patch</filename>
            <type>text/plain</type>
            <size>11747</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA3YWU1YThlOTk3ZC4uMjk3ODM3MmNiODAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAor
MjAxOS0xMi0wNCAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAg
W0xGQ11bSW50ZWdyYXRpb25dIFBhaW50IHdpdGggVGV4dFBhaW50ZXIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNDg1MgorCisgICAgICAgIFJldmll
d2VkIGJ5IFphbGFuIEJ1anRhcy4KKworICAgICAgICAqIGZhc3QvbGF5b3V0Zm9ybWF0dGluZ2Nv
bnRleHQvZmxvdy1pbnRlZ3JhdGlvbi1iYXNpYy1wYWludC1leHBlY3RlZC5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2xheW91dGZvcm1hdHRpbmdjb250ZXh0L2Zsb3ctaW50ZWdyYXRpb24t
YmFzaWMtcGFpbnQuaHRtbDogQWRkZWQuCisKIDIwMTktMTItMDMgIE1lZ2FuIEdhcmRuZXIgIDxt
ZWdhbl9nYXJkbmVyQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgZGlzYWJsZWQgaGlnaGxpZ2h0
IEFQSSBza2VsZXRvbgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9sYXlvdXRmb3JtYXR0
aW5nY29udGV4dC9mbG93LWludGVncmF0aW9uLWJhc2ljLXBhaW50LWV4cGVjdGVkLmh0bWwgYi9M
YXlvdXRUZXN0cy9mYXN0L2xheW91dGZvcm1hdHRpbmdjb250ZXh0L2Zsb3ctaW50ZWdyYXRpb24t
YmFzaWMtcGFpbnQtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMC4uZjI0Zjc0ZjlkOTMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2xheW91dGZvcm1hdHRpbmdjb250ZXh0L2Zsb3ctaW50ZWdyYXRpb24tYmFzaWMtcGFpbnQtZXhw
ZWN0ZWQuaHRtbApAQCAtMCwwICsxLDEwIEBACis8IURPQ1RZUEUgaHRtbD4KKzxzdHlsZT4KKy5t
YXJnaW4geyBtYXJnaW46IDEwcHggNDAwcHggMjBweCA1cHg7IH0KKy5ib3JkZXIgeyBib3JkZXIt
bGVmdDogMTBweCBzb2xpZCBibGFjazsgYm9yZGVyLXRvcDogNXB4IHNvbGlkIGJsYWNrOyBib3Jk
ZXItcmlnaHQ6IDE1cHggc29saWQgYmxhY2s7IGJvcmRlci1ib3R0b206IDIwcHggc29saWQgYmxh
Y2s7IH0KKy5wYWRkaW5nIHsgcGFkZGluZzogMTBweCA1MHB4IDIwcHggNXB4OyB9Cis8L3N0eWxl
PgorPGRpdiBjbGFzcz0ibWFyZ2luIj5UZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0
IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQgPC9kaXY+
Cis8ZGl2IGNsYXNzPSJtYXJnaW4gYm9yZGVyIj5UZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4
dCB0ZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQg
PC9kaXY+Cis8ZGl2IGNsYXNzPSJtYXJnaW4gYm9yZGVyIHBhZGRpbmciPlRleHQgdGV4dCB0ZXh0
IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0
ZXh0IHRleHQgdGV4dCA8L2Rpdj4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvbGF5b3V0Zm9ybWF0dGluZ2NvbnRleHQvZmxvdy1pbnRlZ3JhdGlvbi1iYXNpYy1wYWludC5o
dG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9sYXlvdXRmb3JtYXR0aW5nY29udGV4dC9mbG93LWludGVn
cmF0aW9uLWJhc2ljLXBhaW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAuLmJjMzc0ODI4OTA5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9s
YXlvdXRmb3JtYXR0aW5nY29udGV4dC9mbG93LWludGVncmF0aW9uLWJhc2ljLXBhaW50Lmh0bWwK
QEAgLTAsMCArMSwxMSBAQAorPCFET0NUWVBFIGh0bWw+IDwhLS0gd2Via2l0LXRlc3QtcnVubmVy
IFsgaW50ZXJuYWw6TGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRJbnRlZ3JhdGlvbkVuYWJsZWQ9dHJ1
ZSBdIC0tPgorPGh0bWw+Cis8c3R5bGU+CisubWFyZ2luIHsgbWFyZ2luOiAxMHB4IDQwMHB4IDIw
cHggNXB4OyB9CisuYm9yZGVyIHsgYm9yZGVyLWxlZnQ6IDEwcHggc29saWQgYmxhY2s7IGJvcmRl
ci10b3A6IDVweCBzb2xpZCBibGFjazsgYm9yZGVyLXJpZ2h0OiAxNXB4IHNvbGlkIGJsYWNrOyBi
b3JkZXItYm90dG9tOiAyMHB4IHNvbGlkIGJsYWNrOyB9CisucGFkZGluZyB7IHBhZGRpbmc6IDEw
cHggNTBweCAyMHB4IDVweDsgfQorPC9zdHlsZT4KKzxkaXYgY2xhc3M9Im1hcmdpbiI+VGV4dCB0
ZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4
dCB0ZXh0IHRleHQgdGV4dCB0ZXh0IDwvZGl2PgorPGRpdiBjbGFzcz0ibWFyZ2luIGJvcmRlciI+
VGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0IHRl
eHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0IDwvZGl2PgorPGRpdiBjbGFzcz0ibWFyZ2luIGJv
cmRlciBwYWRkaW5nIj5UZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4
dCB0ZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQgdGV4dCB0ZXh0IHRleHQgPC9kaXY+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKaW5kZXggZjkxMjk5OWJjNmUuLmRiOTE4Mzk5Mjc1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjkgQEAKKzIwMTktMTItMDQgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29t
PgorCisgICAgICAgIFtMRkNdW0ludGVncmF0aW9uXSBQYWludCB3aXRoIFRleHRQYWludGVyCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDQ4NTIKKwor
ICAgICAgICBSZXZpZXdlZCBieSBaYWxhbiBCdWp0YXMuCisKKyAgICAgICAgRGlzcGxheTo6UGFp
bnRlciBpcyB2ZXJ5IHJ1ZGltZW50YXJ5IGFuZCB0dXJuaW5nIGl0IGludG8gYSBmdWxsIHBhaW50
aW5nIGltcGxlbWVudGF0aW9uCisgICAgICAgIHJlcXVpcmVzIGxvdCBvZiByZWZhY3RvcmluZy4g
SW5zdGVhZCwgZm9yIG5vdyB1c2Ugc2VwYXJhdGUgcGFpbnRpbmcgY29kZSBpbiB0aGUgaW50ZWdy
YXRpb24KKyAgICAgICAgbGF5ZXIgdGhhdCBpbnZva2VzIHRoZSBleGlzdGluZyByZW5kZXIgdHJl
ZSBiYXNlZCBwYWludGluZyBoZWxwZXJzLgorCisgICAgICAgIFRoaXMgYWxzbyBlbmFibGVzIHdy
aXRpbmcgcmVmdGVzdHMgZm9yIGludGVyZ3JhdGVkIExGQyBsYXlvdXQuCisKKyAgICAgICAgVGVz
dDogZmFzdC9sYXlvdXRmb3JtYXR0aW5nY29udGV4dC9mbG93LWludGVncmF0aW9uLWJhc2ljLXBh
aW50Lmh0bWwKKworICAgICAgICAqIGxheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5SW5saW5lQ29u
dGVudC5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6IGNvbnN0KToKKyAgICAgICAgKiBs
YXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpjb21wdXRlT3ZlcmZsb3cpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkxpbmVMYXlvdXQ6OnBhaW50KToKKworICAg
ICAgICBBZG9wdGVkIGZyb20gU2ltcGxlTGluZUxheW91dDo6cGFpbnRGbG93IHdpdGggc3VwcG9y
dCBmb3IgcGVyLXJ1biBzdHlsZSBhZGRlZC4KKworICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50
ZWdyYXRpb246OkxpbmVMYXlvdXQ6OmRlYnVnVGV4dFNoYWRvdyk6CisgICAgICAgICogbGF5b3V0
L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5oOgorCiAyMDE5LTEyLTAz
ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgdW51
c2VkIERyYWdDb250cm9sbGVyOjpjbGllbnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlJbmxpbmVDb250ZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheUlubGluZUNvbnRlbnQuaAppbmRleCBlNGZjM2Vm
YWUyOS4uNWMwYzhjMWRlM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNw
bGF5dHJlZS9EaXNwbGF5SW5saW5lQ29udGVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9kaXNwbGF5dHJlZS9EaXNwbGF5SW5saW5lQ29udGVudC5oCkBAIC0yOSw2ICsyOSw3IEBACiAK
ICNpbmNsdWRlICJEaXNwbGF5UnVuLmgiCiAjaW5jbHVkZSAiSW5saW5lTGluZUJveC5oIgorI2lu
Y2x1ZGUgPHd0Zi9JdGVyYXRvclJhbmdlLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00Miw4ICs0MywzNSBAQCBzdHJ1Y3QgSW5saW5lQ29udGVu
dCA6IHB1YmxpYyBSZWZDb3VudGVkPElubGluZUNvbnRlbnQ+IHsKICAgICBMaW5lQm94ZXMgbGlu
ZUJveGVzOwogCiAgICAgY29uc3QgTGF5b3V0OjpMaW5lQm94JiBsaW5lQm94Rm9yUnVuKGNvbnN0
IFJ1biYgcnVuKSBjb25zdCB7IHJldHVybiBsaW5lQm94ZXNbcnVuLmxpbmVJbmRleCgpXTsgfQor
ICAgIFdURjo6SXRlcmF0b3JSYW5nZTxjb25zdCBSdW4qPiBydW5zRm9yUmVjdChjb25zdCBMYXlv
dXRSZWN0JikgY29uc3Q7CiB9OwogCitpbmxpbmUgV1RGOjpJdGVyYXRvclJhbmdlPGNvbnN0IFJ1
bio+IElubGluZUNvbnRlbnQ6OnJ1bnNGb3JSZWN0KGNvbnN0IExheW91dFJlY3QmIHJlY3QpIGNv
bnN0Cit7CisgICAgLy8gRklYTUU6IERvIHNvbWV0aGluZyBlZmZpY2llbnQuCisgICAgY29uc3Qg
UnVuKiBmaXJzdCA9IG51bGxwdHI7CisgICAgZm9yIChhdXRvJiBydW4gOiBydW5zKSB7CisgICAg
ICAgIExheW91dFJlY3QgcnVuUmVjdCA9IHJ1bi5sb2dpY2FsUmVjdCgpOworICAgICAgICBpZiAo
cnVuUmVjdC5pbnRlcnNlY3RzKHJlY3QpKSB7CisgICAgICAgICAgICBmaXJzdCA9ICZydW47Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoIWZpcnN0KQorICAg
ICAgICByZXR1cm4geyBudWxscHRyLCBudWxscHRyIH07CisKKyAgICBjb25zdCBSdW4qIGxhc3Qg
PSBudWxscHRyOworICAgIGZvciAoYXV0byYgcnVuIDogV1RGOjptYWtlUmV2ZXJzZWRSYW5nZShy
dW5zKSkgeworICAgICAgICBMYXlvdXRSZWN0IHJ1blJlY3QgPSBydW4ubG9naWNhbFJlY3QoKTsK
KyAgICAgICAgaWYgKHJ1blJlY3QuaW50ZXJzZWN0cyhyZWN0KSkgeworICAgICAgICAgICAgbGFz
dCA9ICZydW47CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJl
dHVybiB7IGZpcnN0LCBsYXN0ICsgMSB9OworfQorCiB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9u
TGluZUxheW91dC5jcHAKaW5kZXggYTg0MGQ4YzUwMWUuLjgwZDY1NjYxZTc5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5l
TGF5b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0
SW50ZWdyYXRpb25MaW5lTGF5b3V0LmNwcApAQCAtMjksMTYgKzI5LDIwIEBACiAjaWYgRU5BQkxF
KExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCiAKICNpbmNsdWRlICJEaXNwbGF5Qm94LmgiCi0j
aW5jbHVkZSAiRGlzcGxheVBhaW50ZXIuaCIKKyNpbmNsdWRlICJFdmVudFJlZ2lvbi5oIgogI2lu
Y2x1ZGUgIklubGluZUZvcm1hdHRpbmdTdGF0ZS5oIgogI2luY2x1ZGUgIkludmFsaWRhdGlvblN0
YXRlLmgiCiAjaW5jbHVkZSAiTGF5b3V0Q29udGV4dC5oIgogI2luY2x1ZGUgIkxheW91dFRyZWVC
dWlsZGVyLmgiCiAjaW5jbHVkZSAiUGFpbnRJbmZvLmgiCiAjaW5jbHVkZSAiUmVuZGVyQmxvY2tG
bG93LmgiCisjaW5jbHVkZSAiUmVuZGVyQ2hpbGRJdGVyYXRvci5oIgogI2luY2x1ZGUgIlJlbmRl
ckxpbmVCcmVhay5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKKyNpbmNs
dWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlNpbXBsZUxpbmVMYXlvdXQuaCIKKyNpbmNsdWRl
ICJUZXh0RGVjb3JhdGlvblBhaW50ZXIuaCIKKyNpbmNsdWRlICJUZXh0UGFpbnRlci5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgTGF5b3V0SW50ZWdyYXRpb24gewpAQCAtMTAw
LDE4ICsxMDQsNiBAQCBjb25zdCBEaXNwbGF5OjpJbmxpbmVDb250ZW50KiBMaW5lTGF5b3V0Ojpk
aXNwbGF5SW5saW5lQ29udGVudCgpIGNvbnN0CiAgICAgcmV0dXJuIGRvd25jYXN0PExheW91dDo6
SW5saW5lRm9ybWF0dGluZ1N0YXRlPihtX2xheW91dFN0YXRlLT5lc3RhYmxpc2hlZEZvcm1hdHRp
bmdTdGF0ZShyb290TGF5b3V0Qm94KCkpKS5kaXNwbGF5SW5saW5lQ29udGVudCgpOwogfQogCi12
b2lkIExpbmVMYXlvdXQ6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQ
b2ludCYgcGFpbnRPZmZzZXQpCi17Ci0gICAgYXV0byYgZ3JhcGhpY3NDb250ZXh0ID0gcGFpbnRJ
bmZvLmNvbnRleHQoKTsKLQotICAgIGdyYXBoaWNzQ29udGV4dC5zYXZlKCk7Ci0gICAgZ3JhcGhp
Y3NDb250ZXh0LnRyYW5zbGF0ZShwYWludE9mZnNldCk7Ci0KLSAgICBEaXNwbGF5OjpQYWludGVy
OjpwYWludElubGluZUZsb3coKm1fbGF5b3V0U3RhdGUsIHBhaW50SW5mby5jb250ZXh0KCkpOwot
Ci0gICAgZ3JhcGhpY3NDb250ZXh0LnJlc3RvcmUoKTsKLX0KLQogTGluZUxheW91dFRyYXZlcnNh
bDo6VGV4dEJveEl0ZXJhdG9yIExpbmVMYXlvdXQ6OnRleHRCb3hlc0Zvcihjb25zdCBSZW5kZXJU
ZXh0JiByZW5kZXJUZXh0KSBjb25zdAogewogICAgIGF1dG8qIGlubGluZUNvbnRlbnQgPSBkaXNw
bGF5SW5saW5lQ29udGVudCgpOwpAQCAtMTU4LDYgKzE1MCwxMDAgQEAgY29uc3QgTGF5b3V0OjpD
b250YWluZXImIExpbmVMYXlvdXQ6OnJvb3RMYXlvdXRCb3goKSBjb25zdAogICAgIHJldHVybiBt
X3RyZWVDb250ZW50LT5yb290TGF5b3V0Qm94KCk7CiB9CiAKK3N0YXRpYyBMYXlvdXRSZWN0IGNv
bXB1dGVPdmVyZmxvdyhjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IExheW91dFJlY3Qm
IGJveFJlY3QsIEludFNpemUmIHZpZXdwb3J0U2l6ZSkKK3sKKyAgICBhdXRvIG92ZXJmbG93UmVj
dCA9IGJveFJlY3Q7CisgICAgYXV0byBzdHJva2VPdmVyZmxvdyA9IHN0ZDo6Y2VpbChzdHlsZS5j
b21wdXRlZFN0cm9rZVdpZHRoKHZpZXdwb3J0U2l6ZSkpOworICAgIG92ZXJmbG93UmVjdC5pbmZs
YXRlKHN0cm9rZU92ZXJmbG93KTsKKworICAgIGF1dG8gbGV0dGVyU3BhY2luZyA9IHN0eWxlLmZv
bnRDYXNjYWRlKCkubGV0dGVyU3BhY2luZygpOworICAgIGlmIChsZXR0ZXJTcGFjaW5nID49IDAp
CisgICAgICAgIHJldHVybiBvdmVyZmxvd1JlY3Q7CisgICAgLy8gTGFzdCBsZXR0ZXIncyBuZWdh
dGl2ZSBzcGFjaW5nIHNocmlua3MgbGF5b3V0IHJlY3QuIFB1c2ggaXQgdG8gdmlzdWFsIG92ZXJm
bG93LgorICAgIG92ZXJmbG93UmVjdC5leHBhbmQoLWxldHRlclNwYWNpbmcsIDApOworICAgIHJl
dHVybiBvdmVyZmxvd1JlY3Q7Cit9CisKK3ZvaWQgTGluZUxheW91dDo6cGFpbnQoUGFpbnRJbmZv
JiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKK3sKKyAgICBpZiAo
IWRpc3BsYXlJbmxpbmVDb250ZW50KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChwYWlu
dEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZTo6Rm9yZWdyb3VuZCAmJiBwYWludEluZm8ucGhhc2Ug
IT0gUGFpbnRQaGFzZTo6RXZlbnRSZWdpb24pCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8m
IGlubGluZUNvbnRlbnQgPSAqZGlzcGxheUlubGluZUNvbnRlbnQoKTsKKworICAgIGF1dG8gdmll
d3BvcnRTaXplID0gbV9mbG93LmZyYW1lKCkudmlldygpLT5zaXplKCk7CisgICAgZmxvYXQgZGV2
aWNlU2NhbGVGYWN0b3IgPSBtX2Zsb3cuZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpOwor
CisgICAgYXV0byBwYWludFJlY3QgPSBwYWludEluZm8ucmVjdDsKKyAgICBwYWludFJlY3QubW92
ZUJ5KC1wYWludE9mZnNldCk7CisKKyAgICBmb3IgKGF1dG8mIHJ1biA6IGlubGluZUNvbnRlbnQu
cnVuc0ZvclJlY3QocGFpbnRSZWN0KSkgeworICAgICAgICBpZiAoIXJ1bi50ZXh0Q29udGV4dCgp
KQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgYXV0byYgdGV4dENvbnRleHQgPSAq
cnVuLnRleHRDb250ZXh0KCk7CisgICAgICAgIGlmICghdGV4dENvbnRleHQubGVuZ3RoKCkpCisg
ICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBhdXRvJiBzdHlsZSA9IHJ1bi5zdHlsZSgp
OworICAgICAgICBpZiAoc3R5bGUudmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZpc2libGUp
CisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgTGF5b3V0UmVjdCByZWN0ID0gcnVuLmxv
Z2ljYWxSZWN0KCk7CisgICAgICAgIGF1dG8gdmlzdWFsT3ZlcmZsb3dSZWN0ID0gY29tcHV0ZU92
ZXJmbG93KHN0eWxlLCByZWN0LCB2aWV3cG9ydFNpemUpOworICAgICAgICBpZiAocGFpbnRSZWN0
LnkoKSA+IHZpc3VhbE92ZXJmbG93UmVjdC5tYXhZKCkgfHwgcGFpbnRSZWN0Lm1heFkoKSA8IHZp
c3VhbE92ZXJmbG93UmVjdC55KCkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBp
ZiAocGFpbnRJbmZvLmV2ZW50UmVnaW9uQ29udGV4dCkgeworICAgICAgICAgICAgaWYgKHN0eWxl
LnBvaW50ZXJFdmVudHMoKSAhPSBQb2ludGVyRXZlbnRzOjpOb25lKQorICAgICAgICAgICAgICAg
IHBhaW50SW5mby5ldmVudFJlZ2lvbkNvbnRleHQtPnVuaXRlKGVuY2xvc2luZ0ludFJlY3Qodmlz
dWFsT3ZlcmZsb3dSZWN0KSwgc3R5bGUpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
IH0KKworICAgICAgICAvLyBGSVhNRTogSHlwaGVucy4KKworICAgICAgICBhdXRvJiBsaW5lQm94
ID0gaW5saW5lQ29udGVudC5saW5lQm94Rm9yUnVuKHJ1bik7CisgICAgICAgIGF1dG8gYmFzZWxp
bmVPZmZzZXQgPSBwYWludE9mZnNldC55KCkgKyBsaW5lQm94LmxvZ2ljYWxUb3AoKSArIGxpbmVC
b3guYmFzZWxpbmVPZmZzZXQoKTsKKworICAgICAgICBhdXRvIGJlaGF2aW9yID0gdGV4dENvbnRl
eHQuZXhwYW5zaW9uKCkgPyB0ZXh0Q29udGV4dC5leHBhbnNpb24oKS0+YmVoYXZpb3IgOiBEZWZh
dWx0RXhwYW5zaW9uOworICAgICAgICBhdXRvIGhvcml6b250YWxFeHBhbnNpb24gPSB0ZXh0Q29u
dGV4dC5leHBhbnNpb24oKSA/IHRleHRDb250ZXh0LmV4cGFuc2lvbigpLT5ob3Jpem9udGFsRXhw
YW5zaW9uIDogMF9sdTsKKyAgICAgICAgYXV0byBsb2dpY2FsTGVmdCA9IHBhaW50T2Zmc2V0Lngo
KSArIHJ1bi5sb2dpY2FsTGVmdCgpOworCisgICAgICAgIFRleHRSdW4gdGV4dFJ1biB7IHRleHRD
b250ZXh0LmNvbnRlbnQoKSwgbG9naWNhbExlZnQsIGhvcml6b250YWxFeHBhbnNpb24sIGJlaGF2
aW9yIH07CisgICAgICAgIHRleHRSdW4uc2V0VGFiU2l6ZSghc3R5bGUuY29sbGFwc2VXaGl0ZVNw
YWNlKCksIHN0eWxlLnRhYlNpemUoKSk7CisgICAgICAgIEZsb2F0UG9pbnQgdGV4dE9yaWdpbiB7
IHJlY3QueCgpICsgcGFpbnRPZmZzZXQueCgpLCByb3VuZFRvRGV2aWNlUGl4ZWwoYmFzZWxpbmVP
ZmZzZXQsIGRldmljZVNjYWxlRmFjdG9yKSB9OworCisgICAgICAgIFRleHRQYWludGVyIHRleHRQ
YWludGVyKHBhaW50SW5mby5jb250ZXh0KCkpOworICAgICAgICB0ZXh0UGFpbnRlci5zZXRGb250
KHN0eWxlLmZvbnRDYXNjYWRlKCkpOworICAgICAgICB0ZXh0UGFpbnRlci5zZXRTdHlsZShjb21w
dXRlVGV4dFBhaW50U3R5bGUobV9mbG93LmZyYW1lKCksIHN0eWxlLCBwYWludEluZm8pKTsKKyAg
ICAgICAgaWYgKGF1dG8qIGRlYnVnU2hhZG93ID0gZGVidWdUZXh0U2hhZG93KCkpCisgICAgICAg
ICAgICB0ZXh0UGFpbnRlci5zZXRTaGFkb3coZGVidWdTaGFkb3cpOworCisgICAgICAgIHRleHRQ
YWludGVyLnBhaW50KHRleHRSdW4sIHJlY3QsIHRleHRPcmlnaW4pOworCisgICAgICAgIGlmICgh
c3R5bGUudGV4dERlY29yYXRpb25zSW5FZmZlY3QoKS5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAg
IC8vIEZJWE1FOiBVc2UgY29ycmVjdCBSZW5kZXJUZXh0LgorICAgICAgICAgICAgaWYgKGF1dG8q
IHRleHRSZW5kZXJlciA9IGNoaWxkcmVuT2ZUeXBlPFJlbmRlclRleHQ+KG1fZmxvdykuZmlyc3Qo
KSkgeworICAgICAgICAgICAgICAgIGF1dG8gcGFpbnRlciA9IFRleHREZWNvcmF0aW9uUGFpbnRl
ciB7IHBhaW50SW5mby5jb250ZXh0KCksIHN0eWxlLnRleHREZWNvcmF0aW9uc0luRWZmZWN0KCks
ICp0ZXh0UmVuZGVyZXIsIGZhbHNlLCBzdHlsZS5mb250Q2FzY2FkZSgpIH07CisgICAgICAgICAg
ICAgICAgcGFpbnRlci5zZXRXaWR0aChyZWN0LndpZHRoKCkpOworICAgICAgICAgICAgICAgIHBh
aW50ZXIucGFpbnRUZXh0RGVjb3JhdGlvbih0ZXh0UnVuLCB0ZXh0T3JpZ2luLCByZWN0LmxvY2F0
aW9uKCkgKyBwYWludE9mZnNldCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9
CisKK1NoYWRvd0RhdGEqIExpbmVMYXlvdXQ6OmRlYnVnVGV4dFNoYWRvdygpCit7CisgICAgaWYg
KCFtX2Zsb3cuc2V0dGluZ3MoKS5zaW1wbGVMaW5lTGF5b3V0RGVidWdCb3JkZXJzRW5hYmxlZCgp
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxT
aGFkb3dEYXRhPiBkZWJ1Z1RleHRTaGFkb3coSW50UG9pbnQoMCwgMCksIDEwLCAyMCwgU2hhZG93
U3R5bGU6Ok5vcm1hbCwgdHJ1ZSwgQ29sb3IoMCwgMCwgMTUwLCAxNTApKTsKKyAgICByZXR1cm4g
JmRlYnVnVGV4dFNoYWRvdy5nZXQoKTsKK30KKwogfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5l
TGF5b3V0LmgKaW5kZXggNTVjNzVjZTg0ZWQuLjRjY2FiMTkwNDFkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0
aW9uTGluZUxheW91dC5oCkBAIC02OSw2ICs2OSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAg
Y29uc3QgTGF5b3V0OjpDb250YWluZXImIHJvb3RMYXlvdXRCb3goKSBjb25zdDsKICAgICB2b2lk
IHByZXBhcmVSb290R2VvbWV0cnlGb3JMYXlvdXQoKTsKKyAgICBTaGFkb3dEYXRhKiBkZWJ1Z1Rl
eHRTaGFkb3coKTsKIAogICAgIGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgbV9mbG93OwogICAgIHN0
ZDo6dW5pcXVlX3B0cjxjb25zdCBMYXlvdXQ6OkxheW91dFRyZWVDb250ZW50PiBtX3RyZWVDb250
ZW50Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>