<?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>197931</bug_id>
          
          <creation_ts>2019-05-15 15:52:42 -0700</creation_ts>
          <short_desc>Clean up RenderLayerCompositor::computeCompositingRequirements() and traverseUnchangedSubtree()</short_desc>
          <delta_ts>2019-05-21 13:37:06 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</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="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>jonlee</cc>
    
    <cc>koivisto</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>1536647</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-05-15 15:52:42 -0700</bug_when>
    <thetext>Clean up RenderLayerCompositor::computeCompositingRequirements() and traverseUnchangedSubtree()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1536649</commentid>
    <comment_count>1</comment_count>
      <attachid>370003</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-05-15 15:56:53 -0700</bug_when>
    <thetext>Created attachment 370003
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1536700</commentid>
    <comment_count>2</comment_count>
      <attachid>370003</attachid>
    <who name="alan">zalan</who>
    <bug_when>2019-05-15 19:08:31 -0700</bug_when>
    <thetext>Comment on attachment 370003
Patch

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

&gt; Source/WebCore/rendering/RenderLayerCompositor.cpp:914
&gt; +    auto layerWillComposite = [&amp;]() {

auto layerWillComposite = [&amp;]

&gt; Source/WebCore/rendering/RenderLayerCompositor.cpp:926
&gt; +    auto layerWillCompositePostDescendants = [&amp;]() {

[&amp;]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1536710</commentid>
    <comment_count>3</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-05-15 19:51:58 -0700</bug_when>
    <thetext>https://trac.webkit.org/r245371</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1537974</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-05-21 13:37:06 -0700</bug_when>
    <thetext>&lt;rdar://problem/50998283&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>370003</attachid>
            <date>2019-05-15 15:56:53 -0700</date>
            <delta_ts>2019-05-15 19:42:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-197931-20190515155652.patch</filename>
            <type>text/plain</type>
            <size>26363</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ1MzM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDZjMTM2NDQ1NWE4ZWI1
M2Q1NjNiOTdlMmRhMTA0ODQ2NGYyN2I0MS4uNmZmZDIwZDBjZDMzMzg1NTA2YjE2OGJhZjA0MTY2
NWRiNDliODk3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDE5LTA1LTE1ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIENsZWFuIHVwIFJl
bmRlckxheWVyQ29tcG9zaXRvcjo6Y29tcHV0ZUNvbXBvc2l0aW5nUmVxdWlyZW1lbnRzKCkgYW5k
IHRyYXZlcnNlVW5jaGFuZ2VkU3VidHJlZSgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xOTc5MzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGVzZSBmdW5jdGlvbnMgaGF2ZSBncm93biBhbmQgYmVjb21l
IGhhcmQgdG8gbWFpbnRhaW4sIHNvIHRyeSB0byB1bmRvIHNvbWUgdGVjaG5pY2FsIGRlYnQuCisK
KyAgICAgICAgUmVuYW1lICJjaGlsZFN0YXRlIiB0byAiY3VycmVudFN0YXRlIiBzaW5jZSBpdCdz
IHRoZSBzdGF0ZSB3ZSBwYXNzIHRvIGNoaWxkcmVuLCBidXQgYWxzbworICAgICAgICBpcyBzdGF0
ZSB3ZSBjaGFuZ2Ugd2hlbiB0aGUgY3VycmVudCBsYXllciBiZWNvbWVzIGNvbXBvc2l0ZWQuCisK
KyAgICAgICAgU2VwYXJhdGUgdGhlIGxheWVyV2lsbENvbXBvc2l0ZSgpIGxhbWJkYSBmcm9tIGxh
eWVyV2lsbENvbXBvc2l0ZVBvc3REZXNjZW5kYW50cygpLgorCisgICAgICAgIEdyb3VwIHRoZSBj
aHVua3Mgb2YgY29kZSBhdCBlbmQgb2YgdGhlIGZ1bmN0aW9ucyBpbnRvOgorICAgICAgICAgICAg
LSB1cGRhdGluZyBiaXRzIG9uIFJlbmRlckxheWVyCisgICAgICAgICAgICAtIHVwZGF0aW5nIGNv
bXBvc2l0aW5nU3RhdGUgd2l0aCBjaGFuZ2VzIGZyb20gY2hpbGRyZW4gYW5kIG91ciBzdGF0ZQor
ICAgICAgICAgICAgLSBkb2luZyBwb3N0LXRyYXZlcnNhbCB3b3JrIG9uIG92ZXJsYXBNYXAgYW5k
IGJhY2tpbmdTaGFyaW5nU3RhdGUKKworICAgICAgICBDb2RlIHNoYXJlZCBiZXR3ZWVuIHRoZSB0
d28gZnVuY3Rpb25zIGlzIHB1c2hlZCBpbnRvIENvbXBvc2l0aW5nU3RhdGU6OnVwZGF0ZVdpdGhE
ZXNjZW5kYW50U3RhdGVBbmRMYXllcigpLgorCisgICAgICAgIFRoaXMgbW92ZXMgY29kZSBhcm91
bmQgYnV0IHNob3VsZCBub3QgY2F1c2UgYW55IGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVDb25maWd1cmF0aW9uKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxh
eWVyQ29tcG9zaXRvcjo6T3ZlcmxhcEV4dGVudDo6a25vd25Ub0JlSGF2ZUV4dGVudFVuY2VydGFp
bnR5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6Q29t
cG9zaXRpbmdTdGF0ZTo6dXBkYXRlV2l0aERlc2NlbmRhbnRTdGF0ZUFuZExheWVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6Y29tcHV0ZUNvbXBvc2l0aW5nUmVx
dWlyZW1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6dHJh
dmVyc2VVbmNoYW5nZWRTdWJ0cmVlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29t
cG9zaXRvcjo6Y2xpcHNDb21wb3NpdGluZ0Rlc2NlbmRhbnRzKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6Q29tcG9zaXRpbmdTdGF0ZTo6cHJvcGFnYXRlU3RhdGVG
cm9tQ2hpbGRyZW4pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21w
b3NpdG9yOjpDb21wb3NpdGluZ1N0YXRlOjpwcm9wYWdhdGVTdGF0ZUZyb21DaGlsZHJlbkZvclVu
Y2hhbmdlZFN1YnRyZWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJD
b21wb3NpdG9yOjpjbGlwc0NvbXBvc2l0aW5nRGVzY2VuZGFudHMgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaDoKKwogMjAxOS0wNS0x
NSAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtl
IExheWVyT3ZlcmxhcE1hcCBhYmxlIHRvIG91dHB1dCB0byBhIFRleHRTdHJlYW0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKaW5kZXggMzg5YWEx
ZWFlMGMxNmY1ODY4ZDhjMjQ4MWVlMTdkNGIwOWFlMDI0Yy4uYzlhOWEzYjcwM2I0MGE1ODRkOWFi
YzQ2ODZhMjc3MDJkYmJmZTUzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyQmFja2luZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyQmFja2luZy5jcHAKQEAgLTc3MSw3ICs3NzEsNyBAQCBib29sIFJlbmRlckxheWVy
QmFja2luZzo6dXBkYXRlQ29uZmlndXJhdGlvbigpCiAgICAgICAgIEZsb2F0Um91bmRlZFJlY3Qg
Y29udGVudHNDbGlwcGluZ1JlY3QgPSByZW5kZXJlcigpLnN0eWxlKCkuZ2V0Um91bmRlZElubmVy
Qm9yZGVyRm9yKHJlbmRlckJveC5ib3JkZXJCb3hSZWN0KCkpLnBpeGVsU25hcHBlZFJvdW5kZWRS
ZWN0Rm9yUGFpbnRpbmcoZGV2aWNlU2NhbGVGYWN0b3IoKSk7CiAgICAgICAgIG5lZWRzRGVzY2Vu
ZGFudHNDbGlwcGluZ0xheWVyID0gY29udGVudHNDbGlwcGluZ1JlY3QuaXNSb3VuZGVkKCk7CiAg
ICAgfSBlbHNlCi0gICAgICAgIG5lZWRzRGVzY2VuZGFudHNDbGlwcGluZ0xheWVyID0gY29tcG9z
aXRvci5jbGlwc0NvbXBvc2l0aW5nRGVzY2VuZGFudHMobV9vd25pbmdMYXllcik7CisgICAgICAg
IG5lZWRzRGVzY2VuZGFudHNDbGlwcGluZ0xheWVyID0gUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpj
bGlwc0NvbXBvc2l0aW5nRGVzY2VuZGFudHMobV9vd25pbmdMYXllcik7CiAKICAgICBpZiAodXBk
YXRlU2Nyb2xsaW5nTGF5ZXJzKHVzZXNDb21wb3NpdGVkU2Nyb2xsaW5nKSkKICAgICAgICAgbGF5
ZXJDb25maWdDaGFuZ2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKaW5kZXggYjYzM2JmOWVlMWMwNzg1M2M2ODRmOGVl
NWNkZjRlY2QwMWRkNGVjNS4uMTM3NTVjM2Y2OTgxZjZhZjQxNzNlZjZjZTMwZmY5MDFmNmZlYzk3
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9z
aXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9z
aXRvci5jcHAKQEAgLTExMyw2ICsxMTMsMTUgQEAgc3RydWN0IFNjcm9sbGluZ1RyZWVTdGF0ZSB7
CiAgICAgc2l6ZV90IG5leHRDaGlsZEluZGV4IHsgMCB9OwogfTsKIAorc3RydWN0IFJlbmRlckxh
eWVyQ29tcG9zaXRvcjo6T3ZlcmxhcEV4dGVudCB7CisgICAgTGF5b3V0UmVjdCBib3VuZHM7Cisg
ICAgYm9vbCBleHRlbnRDb21wdXRlZCB7IGZhbHNlIH07CisgICAgYm9vbCBoYXNUcmFuc2Zvcm1B
bmltYXRpb24geyBmYWxzZSB9OworICAgIGJvb2wgYW5pbWF0aW9uQ2F1c2VzRXh0ZW50VW5jZXJ0
YWludHkgeyBmYWxzZSB9OworCisgICAgYm9vbCBrbm93blRvQmVIYXZlRXh0ZW50VW5jZXJ0YWlu
dHkoKSBjb25zdCB7IHJldHVybiBleHRlbnRDb21wdXRlZCAmJiBhbmltYXRpb25DYXVzZXNFeHRl
bnRVbmNlcnRhaW50eTsgfQorfTsKKwogc3RydWN0IFJlbmRlckxheWVyQ29tcG9zaXRvcjo6Q29t
cG9zaXRpbmdTdGF0ZSB7CiAgICAgQ29tcG9zaXRpbmdTdGF0ZShSZW5kZXJMYXllciogY29tcEFu
Y2VzdG9yLCBib29sIHRlc3RPdmVybGFwID0gdHJ1ZSkKICAgICAgICAgOiBjb21wb3NpdGluZ0Fu
Y2VzdG9yKGNvbXBBbmNlc3RvcikKQEAgLTE0NCwxNiArMTUzLDI2IEBAIHN0cnVjdCBSZW5kZXJM
YXllckNvbXBvc2l0b3I6OkNvbXBvc2l0aW5nU3RhdGUgewogICAgICAgICByZXR1cm4gY2hpbGRT
dGF0ZTsKICAgICB9CiAKLSAgICB2b2lkIHByb3BhZ2F0ZVN0YXRlRnJvbUNoaWxkcmVuKGNvbnN0
IENvbXBvc2l0aW5nU3RhdGUmIGNoaWxkU3RhdGUpCisgICAgdm9pZCB1cGRhdGVXaXRoRGVzY2Vu
ZGFudFN0YXRlQW5kTGF5ZXIoY29uc3QgQ29tcG9zaXRpbmdTdGF0ZSYgY2hpbGRTdGF0ZSwgY29u
c3QgUmVuZGVyTGF5ZXImIGxheWVyLCBjb25zdCBPdmVybGFwRXh0ZW50JiBsYXllckV4dGVudCwg
Ym9vbCBpc1VuY2hhbmdlZFN1YnRyZWUgPSBmYWxzZSkKICAgICB7CiAgICAgICAgIC8vIFN1YnNl
cXVlbnQgbGF5ZXJzIGluIHRoZSBwYXJlbnQgc3RhY2tpbmcgY29udGV4dCBhbHNvIG5lZWQgdG8g
Y29tcG9zaXRlLgotICAgICAgICBzdWJ0cmVlSXNDb21wb3NpdGluZyB8PSBjaGlsZFN0YXRlLnN1
YnRyZWVJc0NvbXBvc2l0aW5nOwotICAgICAgICBmdWxsUGFpbnRPcmRlclRyYXZlcnNhbFJlcXVp
cmVkIHw9IGNoaWxkU3RhdGUuZnVsbFBhaW50T3JkZXJUcmF2ZXJzYWxSZXF1aXJlZDsKLSAgICB9
CisgICAgICAgIHN1YnRyZWVJc0NvbXBvc2l0aW5nIHw9IGNoaWxkU3RhdGUuc3VidHJlZUlzQ29t
cG9zaXRpbmcgfCBsYXllci5pc0NvbXBvc2l0ZWQoKTsKKyAgICAgICAgaWYgKCFpc1VuY2hhbmdl
ZFN1YnRyZWUpCisgICAgICAgICAgICBmdWxsUGFpbnRPcmRlclRyYXZlcnNhbFJlcXVpcmVkIHw9
IGNoaWxkU3RhdGUuZnVsbFBhaW50T3JkZXJUcmF2ZXJzYWxSZXF1aXJlZDsKKworICAgICAgICAv
LyBUdXJuIG92ZXJsYXAgdGVzdGluZyBvZmYgZm9yIGxhdGVyIGxheWVycyBpZiBpdCdzIGFscmVh
ZHkgb2ZmLCBvciBpZiB3ZSBoYXZlIGFuIGFuaW1hdGluZyB0cmFuc2Zvcm0uCisgICAgICAgIC8v
IE5vdGUgdGhhdCBpZiB0aGUgbGF5ZXIgY2xpcHMgaXRzIGRlc2NlbmRhbnRzLCB0aGVyZSdzIG5v
IHJlYXNvbiB0byBwcm9wYWdhdGUgdGhlIGNoaWxkIGFuaW1hdGlvbiB0byB0aGUgcGFyZW50IGxh
eWVycy4gVGhhdCdzIGJlY2F1c2UKKyAgICAgICAgLy8gd2Uga25vdyBmb3Igc3VyZSB0aGUgYW5p
bWF0aW9uIGlzIGNvbnRhaW5lZCBpbnNpZGUgdGhlIGNsaXBwaW5nIHJlY3RhbmdsZSwgd2hpY2gg
aXMgYWxyZWFkeSBhZGRlZCB0byB0aGUgb3ZlcmxhcCBtYXAuCisgICAgICAgIGF1dG8gY2FuUmVl
bmFibGVPdmVybGFwVGVzdGluZyA9IFsmbGF5ZXJdKCkgeworICAgICAgICAgICAgcmV0dXJuIGxh
eWVyLmlzQ29tcG9zaXRlZCgpICYmIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6Y2xpcHNDb21wb3Np
dGluZ0Rlc2NlbmRhbnRzKGxheWVyKTsKKyAgICAgICAgfTsKKyAgICAgICAgaWYgKCghY2hpbGRT
dGF0ZS50ZXN0aW5nT3ZlcmxhcCAmJiAhY2FuUmVlbmFibGVPdmVybGFwVGVzdGluZygpKSB8fCBs
YXllckV4dGVudC5rbm93blRvQmVIYXZlRXh0ZW50VW5jZXJ0YWludHkoKSkKKyAgICAgICAgICAg
IHRlc3RpbmdPdmVybGFwID0gZmFsc2U7CiAKLSAgICB2b2lkIHByb3BhZ2F0ZVN0YXRlRnJvbUNo
aWxkcmVuRm9yVW5jaGFuZ2VkU3VidHJlZShjb25zdCBDb21wb3NpdGluZ1N0YXRlJiBjaGlsZFN0
YXRlKQotICAgIHsKLSAgICAgICAgc3VidHJlZUlzQ29tcG9zaXRpbmcgfD0gY2hpbGRTdGF0ZS5z
dWJ0cmVlSXNDb21wb3NpdGluZzsKKyNpZiBFTkFCTEUoQ1NTX0NPTVBPU0lUSU5HKQorICAgICAg
ICBpZiAoKGxheWVyLmlzQ29tcG9zaXRlZCgpICYmIGxheWVyLmhhc0JsZW5kTW9kZSgpKSB8fCAo
bGF5ZXIuaGFzTm90SXNvbGF0ZWRDb21wb3NpdGVkQmxlbmRpbmdEZXNjZW5kYW50cygpICYmICFs
YXllci5pc29sYXRlc0NvbXBvc2l0ZWRCbGVuZGluZygpKSkKKyAgICAgICAgICAgIGhhc05vdElz
b2xhdGVkQ29tcG9zaXRlZEJsZW5kaW5nRGVzY2VuZGFudHMgPSB0cnVlOworI2VuZGlmCiAgICAg
fQogCiAgICAgUmVuZGVyTGF5ZXIqIGNvbXBvc2l0aW5nQW5jZXN0b3I7CkBAIC0yNTEsMTUgKzI3
MCw2IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpCYWNraW5nU2hhcmluZ1N0YXRlOjp1
cGRhdGVBZnRlckRlc2NlbmRhbnRUcmF2ZXJzYWwoCiAgICAgICAgIGxheWVyLmJhY2tpbmcoKS0+
Y2xlYXJCYWNraW5nU2hhcmluZ0xheWVycygpOwogfQogCi1zdHJ1Y3QgUmVuZGVyTGF5ZXJDb21w
b3NpdG9yOjpPdmVybGFwRXh0ZW50IHsKLSAgICBMYXlvdXRSZWN0IGJvdW5kczsKLSAgICBib29s
IGV4dGVudENvbXB1dGVkIHsgZmFsc2UgfTsKLSAgICBib29sIGhhc1RyYW5zZm9ybUFuaW1hdGlv
biB7IGZhbHNlIH07Ci0gICAgYm9vbCBhbmltYXRpb25DYXVzZXNFeHRlbnRVbmNlcnRhaW50eSB7
IGZhbHNlIH07Ci0KLSAgICBib29sIGtub3duVG9CZUhhdmVFeHRlbnRVbmNlcnRhaW50eSgpIGNv
bnN0IHsgcmV0dXJuIGV4dGVudENvbXB1dGVkICYmIGFuaW1hdGlvbkNhdXNlc0V4dGVudFVuY2Vy
dGFpbnR5OyB9Ci19OwotCiAjaWYgIUxPR19ESVNBQkxFRAogc3RhdGljIGlubGluZSBib29sIGNv
bXBvc2l0aW5nTG9nRW5hYmxlZCgpCiB7CkBAIC04OTksMzcgKzkwOSwzNSBAQCB2b2lkIFJlbmRl
ckxheWVyQ29tcG9zaXRvcjo6Y29tcHV0ZUNvbXBvc2l0aW5nUmVxdWlyZW1lbnRzKFJlbmRlckxh
eWVyKiBhbmNlc3RvcgogICAgIC8vIFRoZSBjaGlsZHJlbiBvZiB0aGlzIGxheWVyIGRvbid0IG5l
ZWQgdG8gY29tcG9zaXRlLCB1bmxlc3MgdGhlcmUgaXMKICAgICAvLyBhIGNvbXBvc2l0aW5nIGxh
eWVyIGFtb25nIHRoZW0sIHNvIHN0YXJ0IGJ5IGluaGVyaXRpbmcgdGhlIGNvbXBvc2l0aW5nCiAg
ICAgLy8gYW5jZXN0b3Igd2l0aCBzdWJ0cmVlSXNDb21wb3NpdGluZyBzZXQgdG8gZmFsc2UuCi0g
ICAgQ29tcG9zaXRpbmdTdGF0ZSBjaGlsZFN0YXRlID0gY29tcG9zaXRpbmdTdGF0ZS5zdGF0ZUZv
clBhaW50T3JkZXJDaGlsZHJlbihsYXllcik7CisgICAgQ29tcG9zaXRpbmdTdGF0ZSBjdXJyZW50
U3RhdGUgPSBjb21wb3NpdGluZ1N0YXRlLnN0YXRlRm9yUGFpbnRPcmRlckNoaWxkcmVuKGxheWVy
KTsKIAotICAgIGF1dG8gbGF5ZXJXaWxsQ29tcG9zaXRlID0gWyZdKGJvb2wgcG9zdERlc2NlbmRh
bnRzID0gZmFsc2UpIHsKKyAgICBhdXRvIGxheWVyV2lsbENvbXBvc2l0ZSA9IFsmXSgpIHsKKyAg
ICAgICAgLy8gVGhpcyBsYXllciBpcyBnb2luZyB0byBiZSBjb21wb3NpdGVkLCBzbyBjaGlsZHJl
biBjYW4gc2FmZWx5IGlnbm9yZSB0aGUgZmFjdCB0aGF0IHRoZXJlJ3MgYW4KKyAgICAgICAgLy8g
YW5pbWF0aW9uIHJ1bm5pbmcgYmVoaW5kIHRoaXMgbGF5ZXIsIG1lYW5pbmcgdGhleSBjYW4gcmVs
eSBvbiB0aGUgb3ZlcmxhcCBtYXAgdGVzdGluZyBhZ2Fpbi4KKyAgICAgICAgY3VycmVudFN0YXRl
LnRlc3RpbmdPdmVybGFwID0gdHJ1ZTsKICAgICAgICAgLy8gVGhpcyBsYXllciBub3cgYWN0cyBh
cyB0aGUgYW5jZXN0b3IgZm9yIGtpZHMuCi0gICAgICAgIGNoaWxkU3RhdGUuY29tcG9zaXRpbmdB
bmNlc3RvciA9ICZsYXllcjsKKyAgICAgICAgY3VycmVudFN0YXRlLmNvbXBvc2l0aW5nQW5jZXN0
b3IgPSAmbGF5ZXI7CiAgICAgICAgIG92ZXJsYXBNYXAucHVzaENvbXBvc2l0aW5nQ29udGFpbmVy
KCk7Ci0gICAgICAgIAotICAgICAgICBpZiAocG9zdERlc2NlbmRhbnRzKSB7Ci0gICAgICAgICAg
ICBjaGlsZFN0YXRlLnN1YnRyZWVJc0NvbXBvc2l0aW5nID0gdHJ1ZTsKLSAgICAgICAgICAgIGFk
ZFRvT3ZlcmxhcE1hcFJlY3Vyc2l2ZShvdmVybGFwTWFwLCBsYXllcik7Ci0gICAgICAgIH0KIAot
ICAgICAgICAvLyBUaGlzIGxheWVyIGlzIGdvaW5nIHRvIGJlIGNvbXBvc2l0ZWQsIHNvIGNoaWxk
cmVuIGNhbiBzYWZlbHkgaWdub3JlIHRoZSBmYWN0IHRoYXQgdGhlcmUncyBhbgotICAgICAgICAv
LyBhbmltYXRpb24gcnVubmluZyBiZWhpbmQgdGhpcyBsYXllciwgbWVhbmluZyB0aGV5IGNhbiBy
ZWx5IG9uIHRoZSBvdmVybGFwIG1hcCB0ZXN0aW5nIGFnYWluLgotICAgICAgICBjaGlsZFN0YXRl
LnRlc3RpbmdPdmVybGFwID0gdHJ1ZTsKICAgICAgICAgd2lsbEJlQ29tcG9zaXRlZCA9IHRydWU7
CiAgICAgICAgIGxheWVyUGFpbnRzSW50b1Byb3ZpZGVkQmFja2luZyA9IGZhbHNlOwogICAgIH07
CiAKKyAgICBhdXRvIGxheWVyV2lsbENvbXBvc2l0ZVBvc3REZXNjZW5kYW50cyA9IFsmXSgpIHsK
KyAgICAgICAgbGF5ZXJXaWxsQ29tcG9zaXRlKCk7CisgICAgICAgIGN1cnJlbnRTdGF0ZS5zdWJ0
cmVlSXNDb21wb3NpdGluZyA9IHRydWU7CisgICAgICAgIGFkZFRvT3ZlcmxhcE1hcFJlY3Vyc2l2
ZShvdmVybGFwTWFwLCBsYXllcik7CisgICAgfTsKKwogICAgIGlmICh3aWxsQmVDb21wb3NpdGVk
KSB7Ci0gICAgICAgIC8vIFRlbGwgdGhlIHBhcmVudCBpdCBoYXMgY29tcG9zaXRpbmcgZGVzY2Vu
ZGFudHMuCi0gICAgICAgIGNvbXBvc2l0aW5nU3RhdGUuc3VidHJlZUlzQ29tcG9zaXRpbmcgPSB0
cnVlOwotICAgICAgICAKICAgICAgICAgbGF5ZXJXaWxsQ29tcG9zaXRlKCk7CiAKICAgICAgICAg
Y29tcHV0ZUV4dGVudChvdmVybGFwTWFwLCBsYXllciwgbGF5ZXJFeHRlbnQpOwotICAgICAgICBj
aGlsZFN0YXRlLmFuY2VzdG9ySGFzVHJhbnNmb3JtQW5pbWF0aW9uIHw9IGxheWVyRXh0ZW50Lmhh
c1RyYW5zZm9ybUFuaW1hdGlvbjsKKyAgICAgICAgY3VycmVudFN0YXRlLmFuY2VzdG9ySGFzVHJh
bnNmb3JtQW5pbWF0aW9uIHw9IGxheWVyRXh0ZW50Lmhhc1RyYW5zZm9ybUFuaW1hdGlvbjsKICAg
ICAgICAgLy8gVG9vIGhhcmQgdG8gY29tcHV0ZSBhbmltYXRlZCBib3VuZHMgaWYgYm90aCB1cyBh
bmQgc29tZSBhbmNlc3RvciBpcyBhbmltYXRpbmcgdHJhbnNmb3JtLgogICAgICAgICBsYXllckV4
dGVudC5hbmltYXRpb25DYXVzZXNFeHRlbnRVbmNlcnRhaW50eSB8PSBsYXllckV4dGVudC5oYXNU
cmFuc2Zvcm1BbmltYXRpb24gJiYgY29tcG9zaXRpbmdTdGF0ZS5hbmNlc3Rvckhhc1RyYW5zZm9y
bUFuaW1hdGlvbjsKICAgICB9IGVsc2UgaWYgKGxheWVyUGFpbnRzSW50b1Byb3ZpZGVkQmFja2lu
ZykgewotICAgICAgICBjaGlsZFN0YXRlLmJhY2tpbmdTaGFyaW5nQW5jZXN0b3IgPSAmbGF5ZXI7
CisgICAgICAgIGN1cnJlbnRTdGF0ZS5iYWNraW5nU2hhcmluZ0FuY2VzdG9yID0gJmxheWVyOwog
ICAgICAgICBvdmVybGFwTWFwLnB1c2hDb21wb3NpdGluZ0NvbnRhaW5lcigpOwogICAgIH0KIApA
QCAtOTQyLDExICs5NTAsMTEgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmNvbXB1dGVD
b21wb3NpdGluZ1JlcXVpcmVtZW50cyhSZW5kZXJMYXllciogYW5jZXN0b3IKICAgICBib29sIGFu
eURlc2NlbmRhbnRIYXMzRFRyYW5zZm9ybSA9IGZhbHNlOwogCiAgICAgZm9yIChhdXRvKiBjaGls
ZExheWVyIDogbGF5ZXIubmVnYXRpdmVaT3JkZXJMYXllcnMoKSkgewotICAgICAgICBjb21wdXRl
Q29tcG9zaXRpbmdSZXF1aXJlbWVudHMoJmxheWVyLCAqY2hpbGRMYXllciwgb3ZlcmxhcE1hcCwg
Y2hpbGRTdGF0ZSwgYmFja2luZ1NoYXJpbmdTdGF0ZSwgYW55RGVzY2VuZGFudEhhczNEVHJhbnNm
b3JtKTsKKyAgICAgICAgY29tcHV0ZUNvbXBvc2l0aW5nUmVxdWlyZW1lbnRzKCZsYXllciwgKmNo
aWxkTGF5ZXIsIG92ZXJsYXBNYXAsIGN1cnJlbnRTdGF0ZSwgYmFja2luZ1NoYXJpbmdTdGF0ZSwg
YW55RGVzY2VuZGFudEhhczNEVHJhbnNmb3JtKTsKIAogICAgICAgICAvLyBJZiB3ZSBoYXZlIHRv
IG1ha2UgYSBsYXllciBmb3IgdGhpcyBjaGlsZCwgbWFrZSBvbmUgbm93IHNvIHdlIGNhbiBoYXZl
IGEgY29udGVudHMgbGF5ZXIKICAgICAgICAgLy8gKHNpbmNlIHdlIG5lZWQgdG8gZW5zdXJlIHRo
YXQgdGhlIC12ZSB6LW9yZGVyIGNoaWxkIHJlbmRlcnMgdW5kZXJuZWF0aCBvdXIgY29udGVudHMp
LgotICAgICAgICBpZiAoIXdpbGxCZUNvbXBvc2l0ZWQgJiYgY2hpbGRTdGF0ZS5zdWJ0cmVlSXND
b21wb3NpdGluZykgeworICAgICAgICBpZiAoIXdpbGxCZUNvbXBvc2l0ZWQgJiYgY3VycmVudFN0
YXRlLnN1YnRyZWVJc0NvbXBvc2l0aW5nKSB7CiAgICAgICAgICAgICAvLyBtYWtlIGxheWVyIGNv
bXBvc2l0aW5nCiAgICAgICAgICAgICBsYXllci5zZXRJbmRpcmVjdENvbXBvc2l0aW5nUmVhc29u
KFJlbmRlckxheWVyOjpJbmRpcmVjdENvbXBvc2l0aW5nUmVhc29uOjpCYWNrZ3JvdW5kTGF5ZXIp
OwogICAgICAgICAgICAgbGF5ZXJXaWxsQ29tcG9zaXRlKCk7CkBAIC05NTQsMTAgKzk2MiwxMCBA
QCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6Y29tcHV0ZUNvbXBvc2l0aW5nUmVxdWlyZW1l
bnRzKFJlbmRlckxheWVyKiBhbmNlc3RvcgogICAgIH0KICAgICAKICAgICBmb3IgKGF1dG8qIGNo
aWxkTGF5ZXIgOiBsYXllci5ub3JtYWxGbG93TGF5ZXJzKCkpCi0gICAgICAgIGNvbXB1dGVDb21w
b3NpdGluZ1JlcXVpcmVtZW50cygmbGF5ZXIsICpjaGlsZExheWVyLCBvdmVybGFwTWFwLCBjaGls
ZFN0YXRlLCBiYWNraW5nU2hhcmluZ1N0YXRlLCBhbnlEZXNjZW5kYW50SGFzM0RUcmFuc2Zvcm0p
OworICAgICAgICBjb21wdXRlQ29tcG9zaXRpbmdSZXF1aXJlbWVudHMoJmxheWVyLCAqY2hpbGRM
YXllciwgb3ZlcmxhcE1hcCwgY3VycmVudFN0YXRlLCBiYWNraW5nU2hhcmluZ1N0YXRlLCBhbnlE
ZXNjZW5kYW50SGFzM0RUcmFuc2Zvcm0pOwogCiAgICAgZm9yIChhdXRvKiBjaGlsZExheWVyIDog
bGF5ZXIucG9zaXRpdmVaT3JkZXJMYXllcnMoKSkKLSAgICAgICAgY29tcHV0ZUNvbXBvc2l0aW5n
UmVxdWlyZW1lbnRzKCZsYXllciwgKmNoaWxkTGF5ZXIsIG92ZXJsYXBNYXAsIGNoaWxkU3RhdGUs
IGJhY2tpbmdTaGFyaW5nU3RhdGUsIGFueURlc2NlbmRhbnRIYXMzRFRyYW5zZm9ybSk7CisgICAg
ICAgIGNvbXB1dGVDb21wb3NpdGluZ1JlcXVpcmVtZW50cygmbGF5ZXIsICpjaGlsZExheWVyLCBv
dmVybGFwTWFwLCBjdXJyZW50U3RhdGUsIGJhY2tpbmdTaGFyaW5nU3RhdGUsIGFueURlc2NlbmRh
bnRIYXMzRFRyYW5zZm9ybSk7CiAKICAgICAvLyBJZiB3ZSBqdXN0IGVudGVyZWQgY29tcG9zaXRp
bmcgbW9kZSwgdGhlIHJvb3Qgd2lsbCBoYXZlIGJlY29tZSBjb21wb3NpdGVkIChhcyBsb25nIGFz
IGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nIGlzIGVuYWJsZWQpLgogICAgIGlmIChsYXllci5pc1Jl
bmRlclZpZXdMYXllcigpKSB7CkBAIC05NzAsMTIgKzk3OCwxMiBAQCB2b2lkIFJlbmRlckxheWVy
Q29tcG9zaXRvcjo6Y29tcHV0ZUNvbXBvc2l0aW5nUmVxdWlyZW1lbnRzKFJlbmRlckxheWVyKiBh
bmNlc3RvcgogICAgIC8vIGNvbXBvc2l0aW5nIGFuY2VzdG9yJ3MgYmFja2luZywgYW5kIHNvIGFy
ZSBzdGlsbCBjb25zaWRlcmVkIGZvciBvdmVybGFwLgogICAgIC8vIEZJWE1FOiBXaGVuIGxheWVy
RXh0ZW50IGhhcyB0YWtlbiBhbmltYXRpb24gYm91bmRzIGludG8gYWNjb3VudCwgd2UgYWxzbyBr
bm93IHRoYXQgdGhlIGJvdW5kcwogICAgIC8vIGluY2x1ZGUgZGVzY2VuZGFudHMsIHNvIHdlIGRv
bid0IG5lZWQgdG8gYWRkIHRoZW0gYWxsIHRvIHRoZSBvdmVybGFwIG1hcC4KLSAgICBpZiAoY2hp
bGRTdGF0ZS5jb21wb3NpdGluZ0FuY2VzdG9yICYmICFjaGlsZFN0YXRlLmNvbXBvc2l0aW5nQW5j
ZXN0b3ItPmlzUmVuZGVyVmlld0xheWVyKCkpCisgICAgaWYgKGN1cnJlbnRTdGF0ZS5jb21wb3Np
dGluZ0FuY2VzdG9yICYmICFjdXJyZW50U3RhdGUuY29tcG9zaXRpbmdBbmNlc3Rvci0+aXNSZW5k
ZXJWaWV3TGF5ZXIoKSkKICAgICAgICAgYWRkVG9PdmVybGFwTWFwKG92ZXJsYXBNYXAsIGxheWVy
LCBsYXllckV4dGVudCk7CiAKICNpZiBFTkFCTEUoQ1NTX0NPTVBPU0lUSU5HKQogICAgIGJvb2wg
aXNvbGF0ZWRDb21wb3NpdGVkQmxlbmRpbmcgPSBsYXllci5pc29sYXRlc0NvbXBvc2l0ZWRCbGVu
ZGluZygpOwotICAgIGxheWVyLnNldEhhc05vdElzb2xhdGVkQ29tcG9zaXRlZEJsZW5kaW5nRGVz
Y2VuZGFudHMoY2hpbGRTdGF0ZS5oYXNOb3RJc29sYXRlZENvbXBvc2l0ZWRCbGVuZGluZ0Rlc2Nl
bmRhbnRzKTsKKyAgICBsYXllci5zZXRIYXNOb3RJc29sYXRlZENvbXBvc2l0ZWRCbGVuZGluZ0Rl
c2NlbmRhbnRzKGN1cnJlbnRTdGF0ZS5oYXNOb3RJc29sYXRlZENvbXBvc2l0ZWRCbGVuZGluZ0Rl
c2NlbmRhbnRzKTsKICAgICBpZiAobGF5ZXIuaXNvbGF0ZXNDb21wb3NpdGVkQmxlbmRpbmcoKSAh
PSBpc29sYXRlZENvbXBvc2l0ZWRCbGVuZGluZykgewogICAgICAgICAvLyBpc29sYXRlZENvbXBv
c2l0ZWRCbGVuZGluZyBhZmZlY3RzIHRoZSByZXN1bHQgb2YgY2xpcHBlZEJ5QW5jZXN0b3IoKS4K
ICAgICAgICAgbGF5ZXIuc2V0Q2hpbGRyZW5OZWVkQ29tcG9zaXRpbmdHZW9tZXRyeVVwZGF0ZSgp
OwpAQCAtOTg2LDkgKzk5NCw5IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpjb21wdXRl
Q29tcG9zaXRpbmdSZXF1aXJlbWVudHMoUmVuZGVyTGF5ZXIqIGFuY2VzdG9yCiAgICAgLy8gTm93
IGNoZWNrIGZvciByZWFzb25zIHRvIGJlY29tZSBjb21wb3NpdGVkIHRoYXQgZGVwZW5kIG9uIHRo
ZSBzdGF0ZSBvZiBkZXNjZW5kYW50IGxheWVycy4KICAgICBSZW5kZXJMYXllcjo6SW5kaXJlY3RD
b21wb3NpdGluZ1JlYXNvbiBpbmRpcmVjdENvbXBvc2l0aW5nUmVhc29uOwogICAgIGlmICghd2ls
bEJlQ29tcG9zaXRlZCAmJiBjYW5CZUNvbXBvc2l0ZWQobGF5ZXIpCi0gICAgICAgICYmIHJlcXVp
cmVzQ29tcG9zaXRpbmdGb3JJbmRpcmVjdFJlYXNvbihsYXllciwgY29tcG9zaXRpbmdTdGF0ZS5j
b21wb3NpdGluZ0FuY2VzdG9yLCBjaGlsZFN0YXRlLnN1YnRyZWVJc0NvbXBvc2l0aW5nLCBhbnlE
ZXNjZW5kYW50SGFzM0RUcmFuc2Zvcm0sIGxheWVyUGFpbnRzSW50b1Byb3ZpZGVkQmFja2luZywg
aW5kaXJlY3RDb21wb3NpdGluZ1JlYXNvbikpIHsKKyAgICAgICAgJiYgcmVxdWlyZXNDb21wb3Np
dGluZ0ZvckluZGlyZWN0UmVhc29uKGxheWVyLCBjb21wb3NpdGluZ1N0YXRlLmNvbXBvc2l0aW5n
QW5jZXN0b3IsIGN1cnJlbnRTdGF0ZS5zdWJ0cmVlSXNDb21wb3NpdGluZywgYW55RGVzY2VuZGFu
dEhhczNEVHJhbnNmb3JtLCBsYXllclBhaW50c0ludG9Qcm92aWRlZEJhY2tpbmcsIGluZGlyZWN0
Q29tcG9zaXRpbmdSZWFzb24pKSB7CiAgICAgICAgIGxheWVyLnNldEluZGlyZWN0Q29tcG9zaXRp
bmdSZWFzb24oaW5kaXJlY3RDb21wb3NpdGluZ1JlYXNvbik7Ci0gICAgICAgIGxheWVyV2lsbENv
bXBvc2l0ZSh0cnVlKTsKKyAgICAgICAgbGF5ZXJXaWxsQ29tcG9zaXRlUG9zdERlc2NlbmRhbnRz
KCk7CiAgICAgfQogICAgIAogICAgIGlmIChsYXllci5yZWZsZWN0aW9uTGF5ZXIoKSkgewpAQCAt
OTk3LDMzICsxMDA1LDE4IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpjb21wdXRlQ29t
cG9zaXRpbmdSZXF1aXJlbWVudHMoUmVuZGVyTGF5ZXIqIGFuY2VzdG9yCiAgICAgfQogCiAgICAg
Ly8gU2V0IHRoZSBmbGFnIHRvIHNheSB0aGF0IHRoaXMgbGF5ZXIgaGFzIGNvbXBvc2l0aW5nIGNo
aWxkcmVuLgotICAgIGxheWVyLnNldEhhc0NvbXBvc2l0aW5nRGVzY2VuZGFudChjaGlsZFN0YXRl
LnN1YnRyZWVJc0NvbXBvc2l0aW5nKTsKKyAgICBsYXllci5zZXRIYXNDb21wb3NpdGluZ0Rlc2Nl
bmRhbnQoY3VycmVudFN0YXRlLnN1YnRyZWVJc0NvbXBvc2l0aW5nKTsKIAotICAgIC8vIHNldEhh
c0NvbXBvc2l0aW5nRGVzY2VuZGFudCgpIG1heSBoYXZlIGNoYW5nZWQgdGhlIGFuc3dlciB0byBu
ZWVkc1RvQmVDb21wb3NpdGVkKCkgd2hlbiBjbGlwcGluZywgc28gdGVzdCB0aGF0IGFnYWluLgor
ICAgIC8vIHNldEhhc0NvbXBvc2l0aW5nRGVzY2VuZGFudCgpIG1heSBoYXZlIGNoYW5nZWQgdGhl
IGFuc3dlciB0byBuZWVkc1RvQmVDb21wb3NpdGVkKCkgd2hlbiBjbGlwcGluZywgc28gdGVzdCB0
aGF0IG5vdy4KICAgICBib29sIGlzQ29tcG9zaXRlZENsaXBwaW5nTGF5ZXIgPSBjYW5CZUNvbXBv
c2l0ZWQobGF5ZXIpICYmIGNsaXBzQ29tcG9zaXRpbmdEZXNjZW5kYW50cyhsYXllcik7Ci0KLSAg
ICAvLyBUdXJuIG92ZXJsYXAgdGVzdGluZyBvZmYgZm9yIGxhdGVyIGxheWVycyBpZiBpdCdzIGFs
cmVhZHkgb2ZmLCBvciBpZiB3ZSBoYXZlIGFuIGFuaW1hdGluZyB0cmFuc2Zvcm0uCi0gICAgLy8g
Tm90ZSB0aGF0IGlmIHRoZSBsYXllciBjbGlwcyBpdHMgZGVzY2VuZGFudHMsIHRoZXJlJ3Mgbm8g
cmVhc29uIHRvIHByb3BhZ2F0ZSB0aGUgY2hpbGQgYW5pbWF0aW9uIHRvIHRoZSBwYXJlbnQgbGF5
ZXJzLiBUaGF0J3MgYmVjYXVzZQotICAgIC8vIHdlIGtub3cgZm9yIHN1cmUgdGhlIGFuaW1hdGlv
biBpcyBjb250YWluZWQgaW5zaWRlIHRoZSBjbGlwcGluZyByZWN0YW5nbGUsIHdoaWNoIGlzIGFs
cmVhZHkgYWRkZWQgdG8gdGhlIG92ZXJsYXAgbWFwLgotICAgIGlmICgoIWNoaWxkU3RhdGUudGVz
dGluZ092ZXJsYXAgJiYgIWlzQ29tcG9zaXRlZENsaXBwaW5nTGF5ZXIpIHx8IGxheWVyRXh0ZW50
Lmtub3duVG9CZUhhdmVFeHRlbnRVbmNlcnRhaW50eSgpKQotICAgICAgICBjb21wb3NpdGluZ1N0
YXRlLnRlc3RpbmdPdmVybGFwID0gZmFsc2U7Ci0gICAgCiAgICAgaWYgKGlzQ29tcG9zaXRlZENs
aXBwaW5nTGF5ZXIgJiAhd2lsbEJlQ29tcG9zaXRlZCkKLSAgICAgICAgbGF5ZXJXaWxsQ29tcG9z
aXRlKHRydWUpOwotCi0jaWYgRU5BQkxFKENTU19DT01QT1NJVElORykKLSAgICBpZiAoKHdpbGxC
ZUNvbXBvc2l0ZWQgJiYgbGF5ZXIuaGFzQmxlbmRNb2RlKCkpIHx8IChsYXllci5oYXNOb3RJc29s
YXRlZENvbXBvc2l0ZWRCbGVuZGluZ0Rlc2NlbmRhbnRzKCkgJiYgIWxheWVyLmlzb2xhdGVzQ29t
cG9zaXRlZEJsZW5kaW5nKCkpKQotICAgICAgICBjb21wb3NpdGluZ1N0YXRlLmhhc05vdElzb2xh
dGVkQ29tcG9zaXRlZEJsZW5kaW5nRGVzY2VuZGFudHMgPSB0cnVlOwotI2VuZGlmCi0KLSAgICBp
ZiAoKGNoaWxkU3RhdGUuY29tcG9zaXRpbmdBbmNlc3RvciA9PSAmbGF5ZXIgJiYgIWxheWVyLmlz
UmVuZGVyVmlld0xheWVyKCkpIHx8IGNoaWxkU3RhdGUuYmFja2luZ1NoYXJpbmdBbmNlc3RvciA9
PSAmbGF5ZXIpCi0gICAgICAgIG92ZXJsYXBNYXAucG9wQ29tcG9zaXRpbmdDb250YWluZXIoKTsK
KyAgICAgICAgbGF5ZXJXaWxsQ29tcG9zaXRlUG9zdERlc2NlbmRhbnRzKCk7CiAKICAgICAvLyBJ
ZiB3ZSdyZSBiYWNrIGF0IHRoZSByb290LCBhbmQgbm8gb3RoZXIgbGF5ZXJzIG5lZWQgdG8gYmUg
Y29tcG9zaXRlZCwgYW5kIHRoZSByb290IGxheWVyIGl0c2VsZiBkb2Vzbid0IG5lZWQKICAgICAv
LyB0byBiZSBjb21wb3NpdGVkLCB0aGVuIHdlIGNhbiBkcm9wIG91dCBvZiBjb21wb3NpdGluZyBt
b2RlIGFsdG9nZXRoZXIuIEhvd2V2ZXIsIGRvbid0IGRyb3Agb3V0IG9mIGNvbXBvc2l0aW5nIG1v
ZGUKICAgICAvLyBpZiB0aGVyZSBhcmUgY29tcG9zaXRlZCBsYXllcnMgdGhhdCB3ZSBkaWRuJ3Qg
aGl0IGluIG91ciB0cmF2ZXJzYWwgKGUuZy4gYmVjYXVzZSBvZiB2aXNpYmlsaXR5OmhpZGRlbiku
CiAgICAgUmVxdWlyZXNDb21wb3NpdGluZ0RhdGEgcm9vdExheWVyUXVlcnlEYXRhOwotICAgIGlm
IChsYXllci5pc1JlbmRlclZpZXdMYXllcigpICYmICFjaGlsZFN0YXRlLnN1YnRyZWVJc0NvbXBv
c2l0aW5nICYmICFyZXF1aXJlc0NvbXBvc2l0aW5nTGF5ZXIobGF5ZXIsIHJvb3RMYXllclF1ZXJ5
RGF0YSkgJiYgIW1fZm9yY2VDb21wb3NpdGluZ01vZGUgJiYgIW5lZWRzQ29tcG9zaXRpbmdGb3JD
b250ZW50T3JPdmVybGF5cygpKSB7CisgICAgaWYgKGxheWVyLmlzUmVuZGVyVmlld0xheWVyKCkg
JiYgIWN1cnJlbnRTdGF0ZS5zdWJ0cmVlSXNDb21wb3NpdGluZyAmJiAhcmVxdWlyZXNDb21wb3Np
dGluZ0xheWVyKGxheWVyLCByb290TGF5ZXJRdWVyeURhdGEpICYmICFtX2ZvcmNlQ29tcG9zaXRp
bmdNb2RlICYmICFuZWVkc0NvbXBvc2l0aW5nRm9yQ29udGVudE9yT3ZlcmxheXMoKSkgewogICAg
ICAgICAvLyBEb24ndCBkcm9wIG91dCBvZiBjb21wb3NpdGluZyBvbiBpT1MsIGJlY2F1c2Ugd2Ug
bWF5IGZsYXNoLiBTZWUgPHJkYXI6Ly9wcm9ibGVtLzgzNDgzMzc+LgogI2lmICFQTEFURk9STShJ
T1NfRkFNSUxZKQogICAgICAgICBlbmFibGVDb21wb3NpdGluZ01vZGUoZmFsc2UpOwpAQCAtMTAz
MSw4ICsxMDI0LDYgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmNvbXB1dGVDb21wb3Np
dGluZ1JlcXVpcmVtZW50cyhSZW5kZXJMYXllciogYW5jZXN0b3IKICNlbmRpZgogICAgIH0KIAot
ICAgIGNvbXBvc2l0aW5nU3RhdGUucHJvcGFnYXRlU3RhdGVGcm9tQ2hpbGRyZW4oY2hpbGRTdGF0
ZSk7Ci0KICAgICBBU1NFUlQod2lsbEJlQ29tcG9zaXRlZCA9PSBuZWVkc1RvQmVDb21wb3NpdGVk
KGxheWVyLCBxdWVyeURhdGEpKTsKIAogICAgIC8vIENyZWF0ZSBvciBkZXN0cm95IGJhY2tpbmcg
aGVyZS4gSG93ZXZlciwgd2UgY2FuJ3QgdXBkYXRlIGdlb21ldHJ5IGJlY2F1c2UgbGF5ZXJzIGFi
b3ZlIHVzIG1heSBiZWNvbWUgY29tcG9zaXRlZApAQCAtMTA0NSwxMiArMTAzNiw5IEBAIHZvaWQg
UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpjb21wdXRlQ29tcG9zaXRpbmdSZXF1aXJlbWVudHMoUmVu
ZGVyTGF5ZXIqIGFuY2VzdG9yCiAgICAgICAgIGxheWVyLnNldE5lZWRzQ29tcG9zaXRpbmdHZW9t
ZXRyeVVwZGF0ZU9uQW5jZXN0b3JzKCk7CiAgICAgfQogCi0gICAgYmFja2luZ1NoYXJpbmdTdGF0
ZS51cGRhdGVBZnRlckRlc2NlbmRhbnRUcmF2ZXJzYWwobGF5ZXIsIGNvbXBvc2l0aW5nU3RhdGUu
c3RhY2tpbmdDb250ZXh0QW5jZXN0b3IpOwotCisgICAgLy8gVXBkYXRlIGxheWVyIHN0YXRlIGJp
dHMuCiAgICAgaWYgKGxheWVyLnJlZmxlY3Rpb25MYXllcigpICYmIHVwZGF0ZUxheWVyQ29tcG9z
aXRpbmdTdGF0ZSgqbGF5ZXIucmVmbGVjdGlvbkxheWVyKCksIHF1ZXJ5RGF0YSwgQ29tcG9zaXRp
bmdDaGFuZ2VSZXBhaW50Tm93KSkKICAgICAgICAgbGF5ZXIuc2V0TmVlZHNDb21wb3NpdGluZ0xh
eWVyQ29ubmVjdGlvbigpOwotCi0gICAgZGVzY2VuZGFudEhhczNEVHJhbnNmb3JtIHw9IGFueURl
c2NlbmRhbnRIYXMzRFRyYW5zZm9ybSB8fCBsYXllci5oYXMzRFRyYW5zZm9ybSgpOwogICAgIAog
ICAgIC8vIEZJWE1FOiBjbGFyaWZ5IG5lZWRzQ29tcG9zaXRpbmdQYWludE9yZGVyQ2hpbGRyZW5V
cGRhdGUuIElmIGEgY29tcG9zaXRlZCBsYXllciBnZXRzIGEgbmV3IGFuY2VzdG9yLCBpdCBuZWVk
cyBnZW9tZXRyeSBjb21wdXRhdGlvbnMuCiAgICAgaWYgKGxheWVyLm5lZWRzQ29tcG9zaXRpbmdQ
YWludE9yZGVyQ2hpbGRyZW5VcGRhdGUoKSkgewpAQCAtMTA1OSw2ICsxMDQ3LDE2IEBAIHZvaWQg
UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpjb21wdXRlQ29tcG9zaXRpbmdSZXF1aXJlbWVudHMoUmVu
ZGVyTGF5ZXIqIGFuY2VzdG9yCiAgICAgfQogCiAgICAgbGF5ZXIuY2xlYXJDb21wb3NpdGluZ1Jl
cXVpcmVtZW50c1RyYXZlcnNhbFN0YXRlKCk7CisKKyAgICAvLyBDb21wdXRlIHN0YXRlIHBhc3Nl
ZCB0byB0aGUgY2FsbGVyLgorICAgIGRlc2NlbmRhbnRIYXMzRFRyYW5zZm9ybSB8PSBhbnlEZXNj
ZW5kYW50SGFzM0RUcmFuc2Zvcm0gfHwgbGF5ZXIuaGFzM0RUcmFuc2Zvcm0oKTsKKyAgICBjb21w
b3NpdGluZ1N0YXRlLnVwZGF0ZVdpdGhEZXNjZW5kYW50U3RhdGVBbmRMYXllcihjdXJyZW50U3Rh
dGUsIGxheWVyLCBsYXllckV4dGVudCk7CisKKyAgICAvLyBQb3AgYmFja2luZy9vdmVybGFwIHNo
YXJpbmcgc3RhdGUuCisgICAgaWYgKCh3aWxsQmVDb21wb3NpdGVkICYmICFsYXllci5pc1JlbmRl
clZpZXdMYXllcigpKSB8fCBjdXJyZW50U3RhdGUuYmFja2luZ1NoYXJpbmdBbmNlc3RvciA9PSAm
bGF5ZXIpCisgICAgICAgIG92ZXJsYXBNYXAucG9wQ29tcG9zaXRpbmdDb250YWluZXIoKTsKKwor
ICAgIGJhY2tpbmdTaGFyaW5nU3RhdGUudXBkYXRlQWZ0ZXJEZXNjZW5kYW50VHJhdmVyc2FsKGxh
eWVyLCBjb21wb3NpdGluZ1N0YXRlLnN0YWNraW5nQ29udGV4dEFuY2VzdG9yKTsKICAgICBvdmVy
bGFwTWFwLmdlb21ldHJ5TWFwKCkucG9wTWFwcGluZ3NUb0FuY2VzdG9yKGFuY2VzdG9yTGF5ZXIp
OwogCiAgICAgTE9HX1dJVEhfU1RSRUFNKENvbXBvc2l0aW5nLCBzdHJlYW0gPDwgVGV4dFN0cmVh
bTo6UmVwZWF0KGNvbXBvc2l0aW5nU3RhdGUuZGVwdGggKiAyLCAnICcpIDw8ICZsYXllciA8PCAi
IGNvbXB1dGVDb21wb3NpdGluZ1JlcXVpcmVtZW50cyAtIHdpbGxCZUNvbXBvc2l0ZWQgIiA8PCB3
aWxsQmVDb21wb3NpdGVkIDw8ICIgKGJhY2tpbmcgcHJvdmlkZXIgY2FuZGlkYXRlICIgPDwgYmFj
a2luZ1NoYXJpbmdTdGF0ZS5iYWNraW5nUHJvdmlkZXJDYW5kaWRhdGUoKSA8PCAiKSIpOwpAQCAt
MTA5NSwyMSArMTA5MywxOCBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dHJhdmVyc2VV
bmNoYW5nZWRTdWJ0cmVlKFJlbmRlckxheWVyKiBhbmNlc3RvckxheWVyLAogICAgICAgICBiYWNr
aW5nU2hhcmluZ1N0YXRlLmFwcGVuZFNoYXJpbmdMYXllcihsYXllcik7CiAgICAgfQogCi0gICAg
Q29tcG9zaXRpbmdTdGF0ZSBjaGlsZFN0YXRlID0gY29tcG9zaXRpbmdTdGF0ZS5zdGF0ZUZvclBh
aW50T3JkZXJDaGlsZHJlbihsYXllcik7CisgICAgQ29tcG9zaXRpbmdTdGF0ZSBjdXJyZW50U3Rh
dGUgPSBjb21wb3NpdGluZ1N0YXRlLnN0YXRlRm9yUGFpbnRPcmRlckNoaWxkcmVuKGxheWVyKTsK
IAogICAgIGlmIChsYXllcklzQ29tcG9zaXRlZCkgewotICAgICAgICAvLyBUZWxsIHRoZSBwYXJl
bnQgaXQgaGFzIGNvbXBvc2l0aW5nIGRlc2NlbmRhbnRzLgotICAgICAgICBjb21wb3NpdGluZ1N0
YXRlLnN1YnRyZWVJc0NvbXBvc2l0aW5nID0gdHJ1ZTsKLSAgICAgICAgLy8gVGhpcyBsYXllciBu
b3cgYWN0cyBhcyB0aGUgYW5jZXN0b3IgZm9yIGtpZHMuCi0gICAgICAgIGNoaWxkU3RhdGUuY29t
cG9zaXRpbmdBbmNlc3RvciA9ICZsYXllcjsKLQotICAgICAgICBvdmVybGFwTWFwLnB1c2hDb21w
b3NpdGluZ0NvbnRhaW5lcigpOwogICAgICAgICAvLyBUaGlzIGxheWVyIGlzIGdvaW5nIHRvIGJl
IGNvbXBvc2l0ZWQsIHNvIGNoaWxkcmVuIGNhbiBzYWZlbHkgaWdub3JlIHRoZSBmYWN0IHRoYXQg
dGhlcmUncyBhbgogICAgICAgICAvLyBhbmltYXRpb24gcnVubmluZyBiZWhpbmQgdGhpcyBsYXll
ciwgbWVhbmluZyB0aGV5IGNhbiByZWx5IG9uIHRoZSBvdmVybGFwIG1hcCB0ZXN0aW5nIGFnYWlu
LgotICAgICAgICBjaGlsZFN0YXRlLnRlc3RpbmdPdmVybGFwID0gdHJ1ZTsKKyAgICAgICAgY3Vy
cmVudFN0YXRlLnRlc3RpbmdPdmVybGFwID0gdHJ1ZTsKKyAgICAgICAgLy8gVGhpcyBsYXllciBu
b3cgYWN0cyBhcyB0aGUgYW5jZXN0b3IgZm9yIGtpZHMuCisgICAgICAgIGN1cnJlbnRTdGF0ZS5j
b21wb3NpdGluZ0FuY2VzdG9yID0gJmxheWVyOworICAgICAgICBvdmVybGFwTWFwLnB1c2hDb21w
b3NpdGluZ0NvbnRhaW5lcigpOwogCiAgICAgICAgIGNvbXB1dGVFeHRlbnQob3ZlcmxhcE1hcCwg
bGF5ZXIsIGxheWVyRXh0ZW50KTsKLSAgICAgICAgY2hpbGRTdGF0ZS5hbmNlc3Rvckhhc1RyYW5z
Zm9ybUFuaW1hdGlvbiB8PSBsYXllckV4dGVudC5oYXNUcmFuc2Zvcm1BbmltYXRpb247CisgICAg
ICAgIGN1cnJlbnRTdGF0ZS5hbmNlc3Rvckhhc1RyYW5zZm9ybUFuaW1hdGlvbiB8PSBsYXllckV4
dGVudC5oYXNUcmFuc2Zvcm1BbmltYXRpb247CiAgICAgICAgIC8vIFRvbyBoYXJkIHRvIGNvbXB1
dGUgYW5pbWF0ZWQgYm91bmRzIGlmIGJvdGggdXMgYW5kIHNvbWUgYW5jZXN0b3IgaXMgYW5pbWF0
aW5nIHRyYW5zZm9ybS4KICAgICAgICAgbGF5ZXJFeHRlbnQuYW5pbWF0aW9uQ2F1c2VzRXh0ZW50
VW5jZXJ0YWludHkgfD0gbGF5ZXJFeHRlbnQuaGFzVHJhbnNmb3JtQW5pbWF0aW9uICYmIGNvbXBv
c2l0aW5nU3RhdGUuYW5jZXN0b3JIYXNUcmFuc2Zvcm1BbmltYXRpb247CiAgICAgfQpAQCAtMTEy
Myw1OCArMTExOCw0MSBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dHJhdmVyc2VVbmNo
YW5nZWRTdWJ0cmVlKFJlbmRlckxheWVyKiBhbmNlc3RvckxheWVyLAogICAgIGJvb2wgYW55RGVz
Y2VuZGFudEhhczNEVHJhbnNmb3JtID0gZmFsc2U7CiAKICAgICBmb3IgKGF1dG8qIGNoaWxkTGF5
ZXIgOiBsYXllci5uZWdhdGl2ZVpPcmRlckxheWVycygpKSB7Ci0gICAgICAgIHRyYXZlcnNlVW5j
aGFuZ2VkU3VidHJlZSgmbGF5ZXIsICpjaGlsZExheWVyLCBvdmVybGFwTWFwLCBjaGlsZFN0YXRl
LCBiYWNraW5nU2hhcmluZ1N0YXRlLCBhbnlEZXNjZW5kYW50SGFzM0RUcmFuc2Zvcm0pOwotICAg
ICAgICBpZiAoY2hpbGRTdGF0ZS5zdWJ0cmVlSXNDb21wb3NpdGluZykKKyAgICAgICAgdHJhdmVy
c2VVbmNoYW5nZWRTdWJ0cmVlKCZsYXllciwgKmNoaWxkTGF5ZXIsIG92ZXJsYXBNYXAsIGN1cnJl
bnRTdGF0ZSwgYmFja2luZ1NoYXJpbmdTdGF0ZSwgYW55RGVzY2VuZGFudEhhczNEVHJhbnNmb3Jt
KTsKKyAgICAgICAgaWYgKGN1cnJlbnRTdGF0ZS5zdWJ0cmVlSXNDb21wb3NpdGluZykKICAgICAg
ICAgICAgIEFTU0VSVChsYXllcklzQ29tcG9zaXRlZCk7CiAgICAgfQogICAgIAogICAgIGZvciAo
YXV0byogY2hpbGRMYXllciA6IGxheWVyLm5vcm1hbEZsb3dMYXllcnMoKSkKLSAgICAgICAgdHJh
dmVyc2VVbmNoYW5nZWRTdWJ0cmVlKCZsYXllciwgKmNoaWxkTGF5ZXIsIG92ZXJsYXBNYXAsIGNo
aWxkU3RhdGUsIGJhY2tpbmdTaGFyaW5nU3RhdGUsIGFueURlc2NlbmRhbnRIYXMzRFRyYW5zZm9y
bSk7CisgICAgICAgIHRyYXZlcnNlVW5jaGFuZ2VkU3VidHJlZSgmbGF5ZXIsICpjaGlsZExheWVy
LCBvdmVybGFwTWFwLCBjdXJyZW50U3RhdGUsIGJhY2tpbmdTaGFyaW5nU3RhdGUsIGFueURlc2Nl
bmRhbnRIYXMzRFRyYW5zZm9ybSk7CiAKICAgICBmb3IgKGF1dG8qIGNoaWxkTGF5ZXIgOiBsYXll
ci5wb3NpdGl2ZVpPcmRlckxheWVycygpKQotICAgICAgICB0cmF2ZXJzZVVuY2hhbmdlZFN1YnRy
ZWUoJmxheWVyLCAqY2hpbGRMYXllciwgb3ZlcmxhcE1hcCwgY2hpbGRTdGF0ZSwgYmFja2luZ1No
YXJpbmdTdGF0ZSwgYW55RGVzY2VuZGFudEhhczNEVHJhbnNmb3JtKTsKKyAgICAgICAgdHJhdmVy
c2VVbmNoYW5nZWRTdWJ0cmVlKCZsYXllciwgKmNoaWxkTGF5ZXIsIG92ZXJsYXBNYXAsIGN1cnJl
bnRTdGF0ZSwgYmFja2luZ1NoYXJpbmdTdGF0ZSwgYW55RGVzY2VuZGFudEhhczNEVHJhbnNmb3Jt
KTsKIAogICAgIC8vIEFsbCBsYXllcnMgKGV2ZW4gb25lcyB0aGF0IGFyZW4ndCBiZWluZyBjb21w
b3NpdGVkKSBuZWVkIHRvIGdldCBhZGRlZCB0bwogICAgIC8vIHRoZSBvdmVybGFwIG1hcC4gTGF5
ZXJzIHRoYXQgZG8gbm90IGNvbXBvc2l0ZSB3aWxsIGRyYXcgaW50byB0aGVpcgogICAgIC8vIGNv
bXBvc2l0aW5nIGFuY2VzdG9yJ3MgYmFja2luZywgYW5kIHNvIGFyZSBzdGlsbCBjb25zaWRlcmVk
IGZvciBvdmVybGFwLgogICAgIC8vIEZJWE1FOiBXaGVuIGxheWVyRXh0ZW50IGhhcyB0YWtlbiBh
bmltYXRpb24gYm91bmRzIGludG8gYWNjb3VudCwgd2UgYWxzbyBrbm93IHRoYXQgdGhlIGJvdW5k
cwogICAgIC8vIGluY2x1ZGUgZGVzY2VuZGFudHMsIHNvIHdlIGRvbid0IG5lZWQgdG8gYWRkIHRo
ZW0gYWxsIHRvIHRoZSBvdmVybGFwIG1hcC4KLSAgICBpZiAoY2hpbGRTdGF0ZS5jb21wb3NpdGlu
Z0FuY2VzdG9yICYmICFjaGlsZFN0YXRlLmNvbXBvc2l0aW5nQW5jZXN0b3ItPmlzUmVuZGVyVmll
d0xheWVyKCkpCisgICAgaWYgKGN1cnJlbnRTdGF0ZS5jb21wb3NpdGluZ0FuY2VzdG9yICYmICFj
dXJyZW50U3RhdGUuY29tcG9zaXRpbmdBbmNlc3Rvci0+aXNSZW5kZXJWaWV3TGF5ZXIoKSkKICAg
ICAgICAgYWRkVG9PdmVybGFwTWFwKG92ZXJsYXBNYXAsIGxheWVyLCBsYXllckV4dGVudCk7CiAK
LSAgICBjb21wb3NpdGluZ1N0YXRlLnByb3BhZ2F0ZVN0YXRlRnJvbUNoaWxkcmVuRm9yVW5jaGFu
Z2VkU3VidHJlZShjaGlsZFN0YXRlKTsKLQogICAgIC8vIFNldCB0aGUgZmxhZyB0byBzYXkgdGhh
dCB0aGlzIGxheWVyIGhhcyBjb21wb3NpdGluZyBjaGlsZHJlbi4KLSAgICBBU1NFUlQobGF5ZXIu
aGFzQ29tcG9zaXRpbmdEZXNjZW5kYW50KCkgPT0gY2hpbGRTdGF0ZS5zdWJ0cmVlSXNDb21wb3Np
dGluZyk7Ci0KLSAgICAvLyBzZXRIYXNDb21wb3NpdGluZ0Rlc2NlbmRhbnQoKSBtYXkgaGF2ZSBj
aGFuZ2VkIHRoZSBhbnN3ZXIgdG8gbmVlZHNUb0JlQ29tcG9zaXRlZCgpIHdoZW4gY2xpcHBpbmcs
IHNvIHRlc3QgdGhhdCBhZ2Fpbi4KLSAgICBib29sIGlzQ29tcG9zaXRlZENsaXBwaW5nTGF5ZXIg
PSBjYW5CZUNvbXBvc2l0ZWQobGF5ZXIpICYmIGNsaXBzQ29tcG9zaXRpbmdEZXNjZW5kYW50cyhs
YXllcik7CisgICAgQVNTRVJUKGxheWVyLmhhc0NvbXBvc2l0aW5nRGVzY2VuZGFudCgpID09IGN1
cnJlbnRTdGF0ZS5zdWJ0cmVlSXNDb21wb3NpdGluZyk7CisgICAgQVNTRVJUX0lNUExJRVMoY2Fu
QmVDb21wb3NpdGVkKGxheWVyKSAmJiBjbGlwc0NvbXBvc2l0aW5nRGVzY2VuZGFudHMobGF5ZXIp
LCBsYXllcklzQ29tcG9zaXRlZCk7CiAKLSAgICAvLyBUdXJuIG92ZXJsYXAgdGVzdGluZyBvZmYg
Zm9yIGxhdGVyIGxheWVycyBpZiBpdCdzIGFscmVhZHkgb2ZmLCBvciBpZiB3ZSBoYXZlIGFuIGFu
aW1hdGluZyB0cmFuc2Zvcm0uCi0gICAgLy8gTm90ZSB0aGF0IGlmIHRoZSBsYXllciBjbGlwcyBp
dHMgZGVzY2VuZGFudHMsIHRoZXJlJ3Mgbm8gcmVhc29uIHRvIHByb3BhZ2F0ZSB0aGUgY2hpbGQg
YW5pbWF0aW9uIHRvIHRoZSBwYXJlbnQgbGF5ZXJzLiBUaGF0J3MgYmVjYXVzZQotICAgIC8vIHdl
IGtub3cgZm9yIHN1cmUgdGhlIGFuaW1hdGlvbiBpcyBjb250YWluZWQgaW5zaWRlIHRoZSBjbGlw
cGluZyByZWN0YW5nbGUsIHdoaWNoIGlzIGFscmVhZHkgYWRkZWQgdG8gdGhlIG92ZXJsYXAgbWFw
LgotICAgIGlmICgoIWNoaWxkU3RhdGUudGVzdGluZ092ZXJsYXAgJiYgIWlzQ29tcG9zaXRlZENs
aXBwaW5nTGF5ZXIpIHx8IGxheWVyRXh0ZW50Lmtub3duVG9CZUhhdmVFeHRlbnRVbmNlcnRhaW50
eSgpKQotICAgICAgICBjb21wb3NpdGluZ1N0YXRlLnRlc3RpbmdPdmVybGFwID0gZmFsc2U7Ci0g
ICAgCi0gICAgaWYgKGlzQ29tcG9zaXRlZENsaXBwaW5nTGF5ZXIpCi0gICAgICAgIEFTU0VSVChs
YXllcklzQ29tcG9zaXRlZCk7CisgICAgZGVzY2VuZGFudEhhczNEVHJhbnNmb3JtIHw9IGFueURl
c2NlbmRhbnRIYXMzRFRyYW5zZm9ybSB8fCBsYXllci5oYXMzRFRyYW5zZm9ybSgpOwogCi0jaWYg
RU5BQkxFKENTU19DT01QT1NJVElORykKLSAgICBpZiAoKGxheWVySXNDb21wb3NpdGVkICYmIGxh
eWVyLmhhc0JsZW5kTW9kZSgpKQotICAgICAgICB8fCAobGF5ZXIuaGFzTm90SXNvbGF0ZWRDb21w
b3NpdGVkQmxlbmRpbmdEZXNjZW5kYW50cygpICYmICFsYXllci5pc29sYXRlc0NvbXBvc2l0ZWRC
bGVuZGluZygpKSkKLSAgICAgICAgY29tcG9zaXRpbmdTdGF0ZS5oYXNOb3RJc29sYXRlZENvbXBv
c2l0ZWRCbGVuZGluZ0Rlc2NlbmRhbnRzID0gdHJ1ZTsKLSNlbmRpZgorICAgIEFTU0VSVCghY3Vy
cmVudFN0YXRlLmZ1bGxQYWludE9yZGVyVHJhdmVyc2FsUmVxdWlyZWQpOworICAgIGNvbXBvc2l0
aW5nU3RhdGUudXBkYXRlV2l0aERlc2NlbmRhbnRTdGF0ZUFuZExheWVyKGN1cnJlbnRTdGF0ZSwg
bGF5ZXIsIGxheWVyRXh0ZW50LCB0cnVlKTsKIAotICAgIGlmICgoY2hpbGRTdGF0ZS5jb21wb3Np
dGluZ0FuY2VzdG9yID09ICZsYXllciAmJiAhbGF5ZXIuaXNSZW5kZXJWaWV3TGF5ZXIoKSkgfHwg
Y2hpbGRTdGF0ZS5iYWNraW5nU2hhcmluZ0FuY2VzdG9yID09ICZsYXllcikKKyAgICBpZiAoKGxh
eWVySXNDb21wb3NpdGVkICYmICFsYXllci5pc1JlbmRlclZpZXdMYXllcigpKSB8fCBjdXJyZW50
U3RhdGUuYmFja2luZ1NoYXJpbmdBbmNlc3RvciA9PSAmbGF5ZXIpCiAgICAgICAgIG92ZXJsYXBN
YXAucG9wQ29tcG9zaXRpbmdDb250YWluZXIoKTsKIAogICAgIGJhY2tpbmdTaGFyaW5nU3RhdGUu
dXBkYXRlQWZ0ZXJEZXNjZW5kYW50VHJhdmVyc2FsKGxheWVyLCBjb21wb3NpdGluZ1N0YXRlLnN0
YWNraW5nQ29udGV4dEFuY2VzdG9yKTsKLQotICAgIGRlc2NlbmRhbnRIYXMzRFRyYW5zZm9ybSB8
PSBhbnlEZXNjZW5kYW50SGFzM0RUcmFuc2Zvcm0gfHwgbGF5ZXIuaGFzM0RUcmFuc2Zvcm0oKTsK
KyAgICBvdmVybGFwTWFwLmdlb21ldHJ5TWFwKCkucG9wTWFwcGluZ3NUb0FuY2VzdG9yKGFuY2Vz
dG9yTGF5ZXIpOwogCiAgICAgQVNTRVJUKCFsYXllci5uZWVkc0NvbXBvc2l0aW5nUmVxdWlyZW1l
bnRzVHJhdmVyc2FsKCkpOwotCi0gICAgb3ZlcmxhcE1hcC5nZW9tZXRyeU1hcCgpLnBvcE1hcHBp
bmdzVG9BbmNlc3RvcihhbmNlc3RvckxheWVyKTsKIH0KIAogdm9pZCBSZW5kZXJMYXllckNvbXBv
c2l0b3I6OnVwZGF0ZUJhY2tpbmdBbmRIaWVyYXJjaHkoUmVuZGVyTGF5ZXImIGxheWVyLCBWZWN0
b3I8UmVmPEdyYXBoaWNzTGF5ZXI+PiYgY2hpbGRMYXllcnNPZkVuY2xvc2luZ0xheWVyLCBTY3Jv
bGxpbmdUcmVlU3RhdGUmIHNjcm9sbGluZ1RyZWVTdGF0ZSwgT3B0aW9uU2V0PFVwZGF0ZUxldmVs
PiB1cGRhdGVMZXZlbCwgaW50IGRlcHRoKQpAQCAtMjUyMCw3ICsyNDk4LDcgQEAgYm9vbCBSZW5k
ZXJMYXllckNvbXBvc2l0b3I6OmNsaXBwZWRCeUFuY2VzdG9yKFJlbmRlckxheWVyJiBsYXllcikg
Y29uc3QKIC8vIFJldHVybiB0cnVlIGlmIHRoZSBnaXZlbiBsYXllciBpcyBhIHN0YWNraW5nIGNv
bnRleHQgYW5kIGhhcyBjb21wb3NpdGluZyBjaGlsZAogLy8gbGF5ZXJzIHRoYXQgaXQgbmVlZHMg
dG8gY2xpcC4gSW4gdGhpcyBjYXNlIHdlIGluc2VydCBhIGNsaXBwaW5nIEdyYXBoaWNzTGF5ZXIK
IC8vIGludG8gdGhlIGhpZXJhcmNoeSBiZXR3ZWVuIHRoaXMgbGF5ZXIgYW5kIGl0cyBjaGlsZHJl
biBpbiB0aGUgei1vcmRlciBoaWVyYXJjaHkuCi1ib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6
Y2xpcHNDb21wb3NpdGluZ0Rlc2NlbmRhbnRzKGNvbnN0IFJlbmRlckxheWVyJiBsYXllcikgY29u
c3QKK2Jvb2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpjbGlwc0NvbXBvc2l0aW5nRGVzY2VuZGFu
dHMoY29uc3QgUmVuZGVyTGF5ZXImIGxheWVyKQogewogICAgIHJldHVybiBsYXllci5oYXNDb21w
b3NpdGluZ0Rlc2NlbmRhbnQoKSAmJiBsYXllci5yZW5kZXJlcigpLmhhc0NsaXBPck92ZXJmbG93
Q2xpcCgpICYmICFsYXllci5pc29sYXRlc0NvbXBvc2l0ZWRCbGVuZGluZygpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oCmluZGV4IDc4
ZGNiNjkwMDQ1ZmJjMzlhZmRkMzczNDEyNDZhODE3MTg5MTdjMmIuLmRiMjI0MzY3ZGIwZWFlNDk5
MmQ0YmI4ZjA2NjUzYjk0MDRjMzJiODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgKQEAgLTIwMyw3ICsyMDMsNyBAQCBwdWJsaWM6CiAg
ICAgLy8gV2hldGhlciBsYXllcidzIGJhY2tpbmcgbmVlZHMgYSBncmFwaGljcyBsYXllciB0byBk
byBjbGlwcGluZyBieSBhbiBhbmNlc3RvciAobm9uLXN0YWNraW5nLWNvbnRleHQgcGFyZW50IHdp
dGggb3ZlcmZsb3cpLgogICAgIGJvb2wgY2xpcHBlZEJ5QW5jZXN0b3IoUmVuZGVyTGF5ZXImKSBj
b25zdDsKICAgICAvLyBXaGV0aGVyIGxheWVyJ3MgYmFja2luZyBuZWVkcyBhIGdyYXBoaWNzIGxh
eWVyIHRvIGNsaXAgei1vcmRlciBjaGlsZHJlbiBvZiB0aGUgZ2l2ZW4gbGF5ZXIuCi0gICAgYm9v
bCBjbGlwc0NvbXBvc2l0aW5nRGVzY2VuZGFudHMoY29uc3QgUmVuZGVyTGF5ZXImKSBjb25zdDsK
KyAgICBzdGF0aWMgYm9vbCBjbGlwc0NvbXBvc2l0aW5nRGVzY2VuZGFudHMoY29uc3QgUmVuZGVy
TGF5ZXImKTsKIAogICAgIC8vIFdoZXRoZXIgdGhlIGdpdmVuIGxheWVyIG5lZWRzIGFuIGV4dHJh
ICdjb250ZW50cycgbGF5ZXIuCiAgICAgYm9vbCBuZWVkc0NvbnRlbnRzQ29tcG9zaXRpbmdMYXll
cihjb25zdCBSZW5kZXJMYXllciYpIGNvbnN0Owo=
</data>
<flag name="review"
          id="386020"
          type_id="1"
          status="+"
          setter="zalan"
    />
          </attachment>
      

    </bug>

</bugzilla>