<?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>201464</bug_id>
          
          <creation_ts>2019-09-04 11:31:51 -0700</creation_ts>
          <short_desc>[LFC] Assert on FormattingContext escaping</short_desc>
          <delta_ts>2019-09-04 13:42:17 -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>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="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>commit-queue</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>1567804</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2019-09-04 11:31:51 -0700</bug_when>
    <thetext>We should not need to read display boxes in different formatting contexts apart from a few (justified) cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567805</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-09-04 11:32:14 -0700</bug_when>
    <thetext>&lt;rdar://problem/55029574&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567807</commentid>
    <comment_count>2</comment_count>
      <attachid>377992</attachid>
    <who name="alan">zalan</who>
    <bug_when>2019-09-04 11:40:15 -0700</bug_when>
    <thetext>Created attachment 377992
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567809</commentid>
    <comment_count>3</comment_count>
      <attachid>377992</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-09-04 11:44:19 -0700</bug_when>
    <thetext>Comment on attachment 377992
Patch

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

&gt; Source/WebCore/layout/FormattingContext.h:72
&gt; +    enum class EscapeType { AccesChildFormattingContext, AccessParentFormattingContext, AccessAncestorFormattingContext };

Typo &quot;Acces&quot;

Maybe split this into lines?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567811</commentid>
    <comment_count>4</comment_count>
      <attachid>377994</attachid>
    <who name="alan">zalan</who>
    <bug_when>2019-09-04 11:48:34 -0700</bug_when>
    <thetext>Created attachment 377994
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567835</commentid>
    <comment_count>5</comment_count>
      <attachid>378002</attachid>
    <who name="alan">zalan</who>
    <bug_when>2019-09-04 12:58:49 -0700</bug_when>
    <thetext>Created attachment 378002
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567853</commentid>
    <comment_count>6</comment_count>
      <attachid>378002</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-09-04 13:42:15 -0700</bug_when>
    <thetext>Comment on attachment 378002
Patch

Clearing flags on attachment: 378002

Committed r249497: &lt;https://trac.webkit.org/changeset/249497&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567854</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-09-04 13:42:17 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>377992</attachid>
            <date>2019-09-04 11:40:15 -0700</date>
            <delta_ts>2019-09-04 11:48:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201464-20190904114003.patch</filename>
            <type>text/plain</type>
            <size>17739</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5MzU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTFjNWJiYjMzYmVkMDgz
MDhiNzk3YjJiNzdkNDA2Nzg4MzI4Y2ZiMy4uNDk4MDEwNThlZWRjZTUxNGVlYWJkODQ5ZDg1ZTk4
YTY1YWRlMWU5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE5LTA5LTA0ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ10gQXNzZXJ0IG9uIEZv
cm1hdHRpbmdDb250ZXh0IGVzY2FwaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDE0NjQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU1MDI5NTc0
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMg
cGF0Y2ggYXNzZXJ0cyBvbiBhY2NpZGVudGFsIGZvcm1hdHRpbmcgY29udGV4dCBlc2NhcGluZy4g
VGhpcyBpcyBvbmx5IGEgY29ycmVjdG5lc3MgaXNzdWUgYXQgdGhlIG1vbWVudCwKKyAgICAgICAg
c2luY2Ugd2UgZG9uJ3Qgc3VwcG9ydCBtdWx0aXRocmVhZGVkIHN1YnRyZWUgbGF5b3V0IHlldC4K
KyAgICAgICAgTm9ybWFsbHkgd2Ugc2hvdWxkIG5vdCBuZWVkIHRvIGFjY2VzcyBkaXNwbGF5IGJv
eGVzIGluIGRpZmZlcmVudCBmb3JtYXR0aW5nIGNvbnRleHRzIGR1cmluZyBsYXlvdXQsIGJ1dCB0
aGVyZSBhcmUgYSBmZXcsIGp1c3RpZmllZCBjYXNlcyB3aGVuIGl0IGlzIHJlcXVpcmVkLgorCisg
ICAgICAgICogbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6OmRpc3BsYXlCb3hGb3JMYXlvdXRCb3ggY29uc3Qp
OgorICAgICAgICAqIGxheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6ZGlzcGxheUJveEZvckxheW91dEJveCBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgICogbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnku
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0
cnk6OmNvbnRlbnRIZWlnaHRGb3JGb3JtYXR0aW5nQ29udGV4dFJvb3QgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OnN0YXRpY1Zl
cnRpY2FsUG9zaXRpb25Gb3JPdXRPZkZsb3dQb3NpdGlvbmVkIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpzdGF0aWNIb3Jpem9u
dGFsUG9zaXRpb25Gb3JPdXRPZkZsb3dQb3NpdGlvbmVkIGNvbnN0KToKKyAgICAgICAgKiBsYXlv
dXQvRm9ybWF0dGluZ0NvbnRleHRRdWlya3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpGb3JtYXR0aW5nQ29udGV4dDo6UXVpcmtzOjpoZWlnaHRWYWx1ZU9mTmVhcmVzdENvbnRhaW5p
bmdCbG9ja1dpdGhGaXhlZEhlaWdodCk6CisgICAgICAgICogbGF5b3V0L2Zsb2F0cy9GbG9hdGlu
Z0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGbG9hdGluZ0NvbnRleHQ6
OmFic29sdXRlRGlzcGxheUJveENvb3JkaW5hdGVzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6RmxvYXRpbmdDb250ZXh0OjptYXBUb0Zsb2F0aW5nU3RhdGVSb290IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6RmxvYXRpbmdDb250ZXh0OjptYXBUb3BUb0Zsb2F0
aW5nU3RhdGVSb290IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6RmxvYXRpbmdD
b250ZXh0OjptYXBQb2ludEZyb21Gb3JtYXR0aW5nQ29udGV4dFJvb3RUb0Zsb2F0aW5nU3RhdGVS
b290IGNvbnN0KToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlld0xheW91dENvbnRleHQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6bGF5b3V0VXNpbmdGb3JtYXR0aW5nQ29udGV4dCk6CisKIDIwMTkt
MDktMDQgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXSBG
b3JtYXR0aW5nQ29udGV4dDo6bWFwKiBmdW5jdGlvbnMgYXJlIHRvbyBnZW5lcmljLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5jcHAKaW5kZXggMDgyOGZhMjRmOTQ0
NmIxYWMxNDViYzk2N2FhOTljZmM4MzFjODRjYS4uNzY1NmRiODUyOGVkNTkwMWI3OGYwNTA4ZjMw
ZGE1OTkxNTljMjdmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRp
bmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRl
eHQuY3BwCkBAIC0xODMsNiArMTgzLDYzIEBAIExheW91dFVuaXQgRm9ybWF0dGluZ0NvbnRleHQ6
Om1hcFJpZ2h0VG9Gb3JtYXR0aW5nQ29udGV4dFJvb3QoY29uc3QgQm94JiBsYXlvdXRCCiAgICAg
cmV0dXJuIG1hcEhvcml6b250YWxQb3NpdGlvblRvQW5jZXN0b3IoKnRoaXMsIGRpc3BsYXlCb3hG
b3JMYXlvdXRCb3gobGF5b3V0Qm94KS5yaWdodCgpLCAqbGF5b3V0Qm94LmNvbnRhaW5pbmdCbG9j
aygpLCBkb3duY2FzdDxDb250YWluZXI+KHJvb3QoKSkpOwogfQogCitEaXNwbGF5OjpCb3gmIEZv
cm1hdHRpbmdDb250ZXh0OjpkaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGNvbnN0IEJveCYgbGF5b3V0
Qm94LCBPcHRpb25hbDxFc2NhcGVUeXBlPiBlc2NhcGVUeXBlKSBjb25zdAoreworICAgIFVOVVNF
RF9QQVJBTShlc2NhcGVUeXBlKTsKKworI2lmbmRlZiBOREVCVUcKKyAgICBhdXRvIGlzT2tUb0Fj
Y2Vzc0Rpc3BsYXlCb3ggPSBbJl0geworICAgICAgICAvLyAxLiBIaWdobHkgY29tbW9uIGNhc2Ug
b2YgYWNjZXNzaW5nIHRoZSBmb3JtYXR0aW5nIHJvb3QncyBkaXNwbGF5IGJveCBpdHNlbGYuIFRo
aXMgaXMgZm9ybWF0dGluZyBjb250ZXh0IGVzY2FwaW5nIGluIHRoZSBzdHJpY3Qgc2Vuc2UsIHNp
bmNlCisgICAgICAgIC8vIHRoZSBmb3JtYXR0aW5nIGNvbnRleHQgcm9vdCBib3ggbGl2ZXMgaW4g
dGhlIHBhcmVudCBmb3JtYXR0aW5nIGNvbnRleHQuICAKKyAgICAgICAgLy8gVGhpcyBoYXBwZW5z
IGUuZy4gd2hlbiBhIGJsb2NrIGxldmVsIGJveCBib3ggbmVlZHMgdG8gc3RyZXRjaCBob3Jpem9u
dGFsbHkgYW5kIGNoZWNrcyBpdHMgY29udGFpbmluZyBibG9jayBmb3IgaG9yaXpvbnRhbCBzcGFj
ZSAodGhpcyBzaG91bGQgcHJvYmFibHkgYmUgbGltaXRlZCB0byByZWFkaW5nIGhvcml6b250YWwg
Y29uc3RyYWludCB2YWx1ZXMpLgorICAgICAgICBpZiAoJmxheW91dEJveCA9PSAmcm9vdCgpKQor
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgLy8gMi4gU3BlY2lhbCBjYXNlIHdo
ZW4gYWNjZXNzaW5nIHRoZSBJQ0IncyBkaXNwbGF5IGJveAorICAgICAgICBpZiAobGF5b3V0Qm94
LmlzSW5pdGlhbENvbnRhaW5pbmdCbG9jaygpKSB7CisgICAgICAgICAgICAvLyBUaGVyZSBoYXMg
dG8gYmUgYSB2YWxpZCByZWFzb24gdG8gYWNjZXNzIHRoZSBJQ0IuCisgICAgICAgICAgICBpZiAo
IWVzY2FwZVR5cGUpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAg
cmV0dXJuICplc2NhcGVUeXBlID09IEVzY2FwZVR5cGU6OkFjY2Vzc1BhcmVudEZvcm1hdHRpbmdD
b250ZXh0IHx8ICplc2NhcGVUeXBlID09IEVzY2FwZVR5cGU6OkFjY2Vzc0FuY2VzdG9yRm9ybWF0
dGluZ0NvbnRleHQ7CisgICAgICAgIH0KKworICAgICAgICAvLyAzLiBNb3N0IGNvbW1vbiBjYXNl
IG9mIGFjY2Vzc2luZyBib3gvY29udGFpbmluZyBibG9jayBkaXNwbGF5IGJveCB3aXRoaW4gdGhl
IHNhbWUgZm9ybWF0dGluZyBjb250ZXh0IHRyZWUuIAorICAgICAgICBpZiAoJmxheW91dEJveC5m
b3JtYXR0aW5nQ29udGV4dFJvb3QoKSA9PSAmcm9vdCgpKQorICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisKKyAgICAgICAgaWYgKCFlc2NhcGVUeXBlKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgICAgIC8vIDQuIEFjY2Vzc2luZyBjaGlsZCBmb3JtYXR0aW5nIGNvbnRleHQgc3Vi
dHJlZSBpcyByZWxhdGl2ZWx5IHJhcmUuIEl0IGhhcHBlbnMgd2hlbiBlLmcgYSBzaHJpbmsgdG8g
Zml0IChvdXQtb2YtZmxvdyBibG9jayBsZXZlbCkgYm94IGNoZWNrcyB0aGUgY29udGVudCB3aWR0
aC4KKyAgICAgICAgLy8gQ2hlY2tpbmcgdGhlIGNvbnRlbnQgd2lkdGggbWVhbnMgdG8gZ2V0IGRp
c3BsYXkgYm94ZXMgZnJvbSB0aGUgZXN0YWJsaXNoZWQgZm9ybWF0dGluZyBjb250ZXh0ICh3ZSB0
cnkgdG8gYWNjZXNzIGRpc3BsYXkgYm94ZXMgaW4gYSBjaGlsZCBmb3JtYXR0aW5nIGNvbnRleHQp
CisgICAgICAgIGlmICgqZXNjYXBlVHlwZSA9PSBFc2NhcGVUeXBlOjpBY2Nlc0NoaWxkRm9ybWF0
dGluZ0NvbnRleHQgJiYgJmxheW91dEJveC5mb3JtYXR0aW5nQ29udGV4dFJvb3QoKS5mb3JtYXR0
aW5nQ29udGV4dFJvb3QoKSA9PSAmcm9vdCgpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisK
KyAgICAgICAgLy8gNS4gRmxvYXQgYm94IHRvcC9sZWZ0IHZhbHVlcyBhcmUgbWFwcGVkIHJlbGF0
aXZlIHRvIHRoZSBGbG9hdFN0YXRlJ3Mgcm9vdC4gSW5saW5lIGZvcm1hdHRpbmcgY29udGV4dHMo
QSkgaW5oZXJpdCBmbG9hdHMgZnJvbSBwYXJlbnQKKyAgICAgICAgLy8gYmxvY2sgZm9ybWF0dGlu
ZyBjb250ZXh0cyhCKS4gRmxvYXRzIGluIHRoZXNlIGlubGluZSBmb3JtYXR0aW5nIGNvbnRleHRz
KEEpIG5lZWQgdG8gYmUgbWFwcGVkIHRvIHRoZSBwYXJlbnQsIGJsb2NrIGZvcm1hdHRpbmcgY29u
dGV4dChCKS4gCisgICAgICAgIGlmICgqZXNjYXBlVHlwZSA9PSBFc2NhcGVUeXBlOjpBY2Nlc3NQ
YXJlbnRGb3JtYXR0aW5nQ29udGV4dCAmJiAmbGF5b3V0Qm94LmZvcm1hdHRpbmdDb250ZXh0Um9v
dCgpID09ICZyb290KCkuZm9ybWF0dGluZ0NvbnRleHRSb290KCkpCisgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKworICAgICAgICAvLyA2LiBGaW5kaW5nIHRoZSBmaXJzdCBjb250YWluaW5nIGJs
b2NrIHdpdGggZml4ZWQgaGVpZ2h0IHF1aXJrLiBTZWUgUXVpcmtzOjpoZWlnaHRWYWx1ZU9mTmVh
cmVzdENvbnRhaW5pbmdCbG9ja1dpdGhGaXhlZEhlaWdodAorICAgICAgICBpZiAoKmVzY2FwZVR5
cGUgPT0gRXNjYXBlVHlwZTo6QWNjZXNzQW5jZXN0b3JGb3JtYXR0aW5nQ29udGV4dCkgeworICAg
ICAgICAgICAgYXV0byYgdGFyZ2V0Rm9ybWF0dGluZ1Jvb3QgPSBsYXlvdXRCb3guZm9ybWF0dGlu
Z0NvbnRleHRSb290KCk7CisgICAgICAgICAgICBhdXRvKiBhbmNlc3RvckZvcm1hdHRpbmdDb250
ZXh0Um9vdCA9ICZyb290KCkuZm9ybWF0dGluZ0NvbnRleHRSb290KCk7CisgICAgICAgICAgICB3
aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgICAgIGlmICgmdGFyZ2V0Rm9ybWF0dGluZ1Jvb3Qg
PT0gYW5jZXN0b3JGb3JtYXR0aW5nQ29udGV4dFJvb3QpCisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgICAgICAgICAgICAgIGlmIChhbmNlc3RvckZvcm1hdHRpbmdDb250ZXh0
Um9vdC0+aXNJbml0aWFsQ29udGFpbmluZ0Jsb2NrKCkpCisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICBhbmNlc3RvckZvcm1hdHRpbmdDb250ZXh0Um9v
dCA9ICZhbmNlc3RvckZvcm1hdHRpbmdDb250ZXh0Um9vdC0+Zm9ybWF0dGluZ0NvbnRleHRSb290
KCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfTsKKyNlbmRpZgorICAgIEFTU0VSVChpc09rVG9BY2Nlc3NEaXNwbGF5Qm94KCkpOworICAg
IHJldHVybiBsYXlvdXRTdGF0ZSgpLmRpc3BsYXlCb3hGb3JMYXlvdXRCb3gobGF5b3V0Qm94KTsK
K30KKwogI2lmbmRlZiBOREVCVUcKIHZvaWQgRm9ybWF0dGluZ0NvbnRleHQ6OnZhbGlkYXRlR2Vv
bWV0cnlDb25zdHJhaW50c0FmdGVyTGF5b3V0KCkgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmgKaW5kZXggMzEzN2UxNjM4MGE1MGY2YWIyZWMxY2RiYjk1
NWUxNDNhYmU3YTNmNi4uMGI0MzY3NGI5ZmNlYmNhZjFjY2NmNWQxYWYxNTdjM2UzM2ZjYjdhNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmgKQEAgLTY5LDcgKzY5
LDggQEAgcHVibGljOgogICAgIGJvb2wgaXNJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCgpIGNvbnN0
IHsgcmV0dXJuIHJvb3QoKS5lc3RhYmxpc2hlc0lubGluZUZvcm1hdHRpbmdDb250ZXh0KCk7IH0K
ICAgICBib29sIGlzVGFibGVGb3JtYXR0aW5nQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIHJvb3Qo
KS5lc3RhYmxpc2hlc1RhYmxlRm9ybWF0dGluZ0NvbnRleHQoKTsgfQogCi0gICAgRGlzcGxheTo6
Qm94JiBkaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGNvbnN0IEJveCYgbGF5b3V0Qm94KSBjb25zdCB7
IHJldHVybiBsYXlvdXRTdGF0ZSgpLmRpc3BsYXlCb3hGb3JMYXlvdXRCb3gobGF5b3V0Qm94KTsg
fQorICAgIGVudW0gY2xhc3MgRXNjYXBlVHlwZSB7IEFjY2VzQ2hpbGRGb3JtYXR0aW5nQ29udGV4
dCwgQWNjZXNzUGFyZW50Rm9ybWF0dGluZ0NvbnRleHQsIEFjY2Vzc0FuY2VzdG9yRm9ybWF0dGlu
Z0NvbnRleHQgfTsKKyAgICBEaXNwbGF5OjpCb3gmIGRpc3BsYXlCb3hGb3JMYXlvdXRCb3goY29u
c3QgQm94JiwgT3B0aW9uYWw8RXNjYXBlVHlwZT4gPSBXVEY6Om51bGxvcHQpIGNvbnN0OwogICAg
IGJvb2wgaGFzRGlzcGxheUJveChjb25zdCBCb3gmIGxheW91dEJveCkgY29uc3QgeyByZXR1cm4g
bGF5b3V0U3RhdGUoKS5oYXNEaXNwbGF5Qm94KGxheW91dEJveCk7IH0KIAogICAgIGNvbnN0IEJv
eCYgcm9vdCgpIGNvbnN0IHsgcmV0dXJuICptX3Jvb3Q7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcAppbmRleCA4NjZjMmM4ZDE5
MTBjMjdkNGFiN2VkMzUxM2EzYzM3YzNmMTMwMWFmLi5jN2I0MThhNWFkNTkzNjhhMmIwMDQ2ZmFk
Y2FiMmRlZmNlYjczNTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0
dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1h
dHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCkBAIC0xMjAsOCArMTIwLDggQEAgTGF5b3V0VW5pdCBG
b3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmNvbnRlbnRIZWlnaHRGb3JGb3JtYXR0aW5nQ29u
dGV4dFJvb3QoY28KICAgICAgICAgYm90dG9tID0gbGluZUJveGVzLmxhc3QoKS5sb2dpY2FsQm90
dG9tKCk7CiAgICAgfSBlbHNlIGlmIChmb3JtYXR0aW5nUm9vdENvbnRhaW5lci5lc3RhYmxpc2hl
c0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQoKSB8fCBsYXlvdXRCb3guaXNEb2N1bWVudEJveCgpKSB7
CiAgICAgICAgIGlmIChmb3JtYXR0aW5nUm9vdENvbnRhaW5lci5oYXNJbkZsb3dDaGlsZCgpKSB7
Ci0gICAgICAgICAgICBhdXRvJiBmaXJzdERpc3BsYXlCb3ggPSBmb3JtYXR0aW5nQ29udGV4dC5k
aXNwbGF5Qm94Rm9yTGF5b3V0Qm94KCpmb3JtYXR0aW5nUm9vdENvbnRhaW5lci5maXJzdEluRmxv
d0NoaWxkKCkpOwotICAgICAgICAgICAgYXV0byYgbGFzdERpc3BsYXlCb3ggPSBmb3JtYXR0aW5n
Q29udGV4dC5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KCpmb3JtYXR0aW5nUm9vdENvbnRhaW5lci5s
YXN0SW5GbG93Q2hpbGQoKSk7CisgICAgICAgICAgICBhdXRvJiBmaXJzdERpc3BsYXlCb3ggPSBm
b3JtYXR0aW5nQ29udGV4dC5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KCpmb3JtYXR0aW5nUm9vdENv
bnRhaW5lci5maXJzdEluRmxvd0NoaWxkKCksIEVzY2FwZVR5cGU6OkFjY2VzQ2hpbGRGb3JtYXR0
aW5nQ29udGV4dCk7CisgICAgICAgICAgICBhdXRvJiBsYXN0RGlzcGxheUJveCA9IGZvcm1hdHRp
bmdDb250ZXh0LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goKmZvcm1hdHRpbmdSb290Q29udGFpbmVy
Lmxhc3RJbkZsb3dDaGlsZCgpLCBFc2NhcGVUeXBlOjpBY2Nlc0NoaWxkRm9ybWF0dGluZ0NvbnRl
eHQpOwogICAgICAgICAgICAgdG9wID0gZmlyc3REaXNwbGF5Qm94LnJlY3RXaXRoTWFyZ2luKCku
dG9wKCk7CiAgICAgICAgICAgICBib3R0b20gPSBsYXN0RGlzcGxheUJveC5yZWN0V2l0aE1hcmdp
bigpLmJvdHRvbSgpOwogICAgICAgICB9CkBAIC0yMDUsMTggKzIwNSwxOCBAQCBMYXlvdXRVbml0
IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6c3RhdGljVmVydGljYWxQb3NpdGlvbkZvck91
dE9mRmxvd1Bvc2l0aQogICAgIExheW91dFVuaXQgdG9wOwogICAgIGlmIChhdXRvKiBwcmV2aW91
c0luRmxvd1NpYmxpbmcgPSBsYXlvdXRCb3gucHJldmlvdXNJbkZsb3dTaWJsaW5nKCkpIHsKICAg
ICAgICAgLy8gQWRkIHNpYmxpbmcgb2Zmc2V0Ci0gICAgICAgIGF1dG8mIHByZXZpb3VzSW5GbG93
RGlzcGxheUJveCA9IGZvcm1hdHRpbmdDb250ZXh0LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goKnBy
ZXZpb3VzSW5GbG93U2libGluZyk7CisgICAgICAgIGF1dG8mIHByZXZpb3VzSW5GbG93RGlzcGxh
eUJveCA9IGZvcm1hdHRpbmdDb250ZXh0LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goKnByZXZpb3Vz
SW5GbG93U2libGluZywgRm9ybWF0dGluZ0NvbnRleHQ6OkVzY2FwZVR5cGU6OkFjY2VzQ2hpbGRG
b3JtYXR0aW5nQ29udGV4dCk7CiAgICAgICAgIHRvcCArPSBwcmV2aW91c0luRmxvd0Rpc3BsYXlC
b3guYm90dG9tKCkgKyBwcmV2aW91c0luRmxvd0Rpc3BsYXlCb3gubm9uQ29sbGFwc2VkTWFyZ2lu
QWZ0ZXIoKTsKICAgICB9IGVsc2UgewogICAgICAgICBBU1NFUlQobGF5b3V0Qm94LnBhcmVudCgp
KTsKLSAgICAgICAgdG9wID0gZm9ybWF0dGluZ0NvbnRleHQuZGlzcGxheUJveEZvckxheW91dEJv
eCgqbGF5b3V0Qm94LnBhcmVudCgpKS5jb250ZW50Qm94VG9wKCk7CisgICAgICAgIHRvcCA9IGZv
cm1hdHRpbmdDb250ZXh0LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goKmxheW91dEJveC5wYXJlbnQo
KSwgRm9ybWF0dGluZ0NvbnRleHQ6OkVzY2FwZVR5cGU6OkFjY2VzQ2hpbGRGb3JtYXR0aW5nQ29u
dGV4dCkuY29udGVudEJveFRvcCgpOwogICAgIH0KIAogICAgIC8vIFJlc29sdmUgdG9wIGFsbCB0
aGUgd2F5IHVwIHRvIHRoZSBjb250YWluaW5nIGJsb2NrLgogICAgIGF1dG8mIGNvbnRhaW5pbmdC
bG9jayA9ICpsYXlvdXRCb3guY29udGFpbmluZ0Jsb2NrKCk7CiAgICAgLy8gU3RhcnQgd2l0aCB0
aGUgcGFyZW50IHNpbmNlIHdlIHByZXRlbmQgdGhhdCB0aGlzIGJveCBpcyBub3JtYWwgZmxvdy4K
ICAgICBmb3IgKGF1dG8qIGNvbnRhaW5lciA9IGxheW91dEJveC5wYXJlbnQoKTsgY29udGFpbmVy
ICE9ICZjb250YWluaW5nQmxvY2s7IGNvbnRhaW5lciA9IGNvbnRhaW5lci0+Y29udGFpbmluZ0Js
b2NrKCkpIHsKLSAgICAgICAgYXV0byYgZGlzcGxheUJveCA9IGZvcm1hdHRpbmdDb250ZXh0LmRp
c3BsYXlCb3hGb3JMYXlvdXRCb3goKmNvbnRhaW5lcik7CisgICAgICAgIGF1dG8mIGRpc3BsYXlC
b3ggPSBmb3JtYXR0aW5nQ29udGV4dC5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KCpjb250YWluZXIs
IEZvcm1hdHRpbmdDb250ZXh0OjpFc2NhcGVUeXBlOjpBY2Nlc0NoaWxkRm9ybWF0dGluZ0NvbnRl
eHQpOwogICAgICAgICAvLyBEaXNwbGF5OjpCb3g6OnRvcCBpcyB0aGUgYm9yZGVyIGJveCB0b3Ag
cG9zaXRpb24gaW4gaXRzIGNvbnRhaW5pbmcgYmxvY2sncyBjb29yZGluYXRlIHN5c3RlbS4KICAg
ICAgICAgdG9wICs9IGRpc3BsYXlCb3gudG9wKCk7CiAgICAgICAgIEFTU0VSVCghY29udGFpbmVy
LT5pc1Bvc2l0aW9uZWQoKSB8fCBsYXlvdXRCb3guaXNGaXhlZFBvc2l0aW9uZWQoKSk7CkBAIC0y
MzQsMTkgKzIzNCwxOSBAQCBMYXlvdXRVbml0IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6
c3RhdGljSG9yaXpvbnRhbFBvc2l0aW9uRm9yT3V0T2ZGbG93UG9zaQogICAgIC8vIFN0YXJ0IHdp
dGggdGhpcyBib3gncyBib3JkZXIgYm94IG9mZnNldCBmcm9tIHRoZSBwYXJlbnQncyBib3JkZXIg
Ym94LgogICAgIGF1dG8mIGZvcm1hdHRpbmdDb250ZXh0ID0gdGhpcy0+Zm9ybWF0dGluZ0NvbnRl
eHQoKTsKICAgICBBU1NFUlQobGF5b3V0Qm94LnBhcmVudCgpKTsKLSAgICBhdXRvIGxlZnQgPSBm
b3JtYXR0aW5nQ29udGV4dC5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KCpsYXlvdXRCb3gucGFyZW50
KCkpLmNvbnRlbnRCb3hMZWZ0KCk7CisgICAgYXV0byBsZWZ0ID0gZm9ybWF0dGluZ0NvbnRleHQu
ZGlzcGxheUJveEZvckxheW91dEJveCgqbGF5b3V0Qm94LnBhcmVudCgpLCBGb3JtYXR0aW5nQ29u
dGV4dDo6RXNjYXBlVHlwZTo6QWNjZXNDaGlsZEZvcm1hdHRpbmdDb250ZXh0KS5jb250ZW50Qm94
TGVmdCgpOwogCiAgICAgLy8gUmVzb2x2ZSBsZWZ0IGFsbCB0aGUgd2F5IHVwIHRvIHRoZSBjb250
YWluaW5nIGJsb2NrLgogICAgIGF1dG8mIGNvbnRhaW5pbmdCbG9jayA9ICpsYXlvdXRCb3guY29u
dGFpbmluZ0Jsb2NrKCk7CiAgICAgLy8gU3RhcnQgd2l0aCB0aGUgcGFyZW50IHNpbmNlIHdlIHBy
ZXRlbmQgdGhhdCB0aGlzIGJveCBpcyBub3JtYWwgZmxvdy4KICAgICBmb3IgKGF1dG8qIGNvbnRh
aW5lciA9IGxheW91dEJveC5wYXJlbnQoKTsgY29udGFpbmVyICE9ICZjb250YWluaW5nQmxvY2s7
IGNvbnRhaW5lciA9IGNvbnRhaW5lci0+Y29udGFpbmluZ0Jsb2NrKCkpIHsKLSAgICAgICAgYXV0
byYgZGlzcGxheUJveCA9IGZvcm1hdHRpbmdDb250ZXh0LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3go
KmNvbnRhaW5lcik7CisgICAgICAgIGF1dG8mIGRpc3BsYXlCb3ggPSBmb3JtYXR0aW5nQ29udGV4
dC5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KCpjb250YWluZXIsIEZvcm1hdHRpbmdDb250ZXh0OjpF
c2NhcGVUeXBlOjpBY2Nlc0NoaWxkRm9ybWF0dGluZ0NvbnRleHQpOwogICAgICAgICAvLyBEaXNw
bGF5OjpCb3g6OmxlZnQgaXMgdGhlIGJvcmRlciBib3ggbGVmdCBwb3NpdGlvbiBpbiBpdHMgY29u
dGFpbmluZyBibG9jaydzIGNvb3JkaW5hdGUgc3lzdGVtLgogICAgICAgICBsZWZ0ICs9IGRpc3Bs
YXlCb3gubGVmdCgpOwogICAgICAgICBBU1NFUlQoIWNvbnRhaW5lci0+aXNQb3NpdGlvbmVkKCkg
fHwgbGF5b3V0Qm94LmlzRml4ZWRQb3NpdGlvbmVkKCkpOwogICAgIH0KICAgICAvLyBNb3ZlIHRo
ZSBzdGF0aWMgcG9zaXRpb24gcmVsYXRpdmUgdG8gdGhlIHBhZGRpbmcgYm94LiBUaGlzIGlzIHZl
cnkgc3BlY2lmaWMgdG8gYWJvbHV0ZWx5IHBvc2l0aW9uZWQgYm94ZXMuCi0gICAgYXV0byBwYWRk
aW5nQm94TGVmdCA9IGZvcm1hdHRpbmdDb250ZXh0LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goY29u
dGFpbmluZ0Jsb2NrKS5wYWRkaW5nQm94TGVmdCgpOworICAgIGF1dG8gcGFkZGluZ0JveExlZnQg
PSBmb3JtYXR0aW5nQ29udGV4dC5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGNvbnRhaW5pbmdCbG9j
aywgRm9ybWF0dGluZ0NvbnRleHQ6OkVzY2FwZVR5cGU6OkFjY2VzQ2hpbGRGb3JtYXR0aW5nQ29u
dGV4dCkucGFkZGluZ0JveExlZnQoKTsKICAgICByZXR1cm4gbGVmdCAtIHBhZGRpbmdCb3hMZWZ0
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRl
eHRRdWlya3MuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0UXVp
cmtzLmNwcAppbmRleCAyNWM0ZmJjZDNiYzMyNTY5YWRiOGRmYjA5MzE1MmE3M2UzYzAxZjIyLi41
NjUzOWUxNmM2MDRkNTY3MjY0NWExOGMzMjEwZmVmODBiZmMwNzhmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHRRdWlya3MuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dFF1aXJrcy5jcHAKQEAgLTUwLDkgKzUw
LDkgQEAgTGF5b3V0VW5pdCBGb3JtYXR0aW5nQ29udGV4dDo6UXVpcmtzOjpoZWlnaHRWYWx1ZU9m
TmVhcmVzdENvbnRhaW5pbmdCbG9ja1dpdGhGaXgKICAgICAgICAgLy8gSWYgdGhlIG9ubHkgZml4
ZWQgdmFsdWUgYm94IHdlIGZpbmQgaXMgdGhlIElDQiwgdGhlbiBpZ25vcmUgdGhlIGJvZHkgYW5k
IHRoZSBkb2N1bWVudCAodmVydGljYWwpIG1hcmdpbiwgcGFkZGluZyBhbmQgYm9yZGVyLiBTbyBt
dWNoIHF1aXJraW5lc3MuCiAgICAgICAgIC8vIC1hbmQgaXQncyB0b3RhbGx5IGluc2FuZSBiZWNh
dXNlIG5vdyB3ZSBmcmVlbHkgdHJhdmVsIGFjcm9zcyBmb3JtYXR0aW5nIGNvbnRleHQgYm91bmRh
cmllcyBhbmQgY29tcHV0ZWQgbWFyZ2lucyBhcmUgbm9uZXhpc3RlbnQuCiAgICAgICAgIGlmIChj
b250YWluaW5nQmxvY2stPmlzQm9keUJveCgpIHx8IGNvbnRhaW5pbmdCbG9jay0+aXNEb2N1bWVu
dEJveCgpKSB7Ci0gICAgICAgICAgICBhdXRvJiBkaXNwbGF5Qm94ID0gZm9ybWF0dGluZ0NvbnRl
eHQuZGlzcGxheUJveEZvckxheW91dEJveCgqY29udGFpbmluZ0Jsb2NrKTsKKyAgICAgICAgICAg
IGF1dG8mIGRpc3BsYXlCb3ggPSBmb3JtYXR0aW5nQ29udGV4dC5kaXNwbGF5Qm94Rm9yTGF5b3V0
Qm94KCpjb250YWluaW5nQmxvY2ssIEZvcm1hdHRpbmdDb250ZXh0OjpFc2NhcGVUeXBlOjpBY2Nl
c3NBbmNlc3RvckZvcm1hdHRpbmdDb250ZXh0KTsKIAotICAgICAgICAgICAgYXV0byB1c2VkVmFs
dWVzID0gVXNlZEhvcml6b250YWxWYWx1ZXMgeyBmb3JtYXR0aW5nQ29udGV4dC5kaXNwbGF5Qm94
Rm9yTGF5b3V0Qm94KCpjb250YWluaW5nQmxvY2stPmNvbnRhaW5pbmdCbG9jaygpKS5jb250ZW50
Qm94V2lkdGgoKSB9OworICAgICAgICAgICAgYXV0byB1c2VkVmFsdWVzID0gVXNlZEhvcml6b250
YWxWYWx1ZXMgeyBmb3JtYXR0aW5nQ29udGV4dC5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KCpjb250
YWluaW5nQmxvY2stPmNvbnRhaW5pbmdCbG9jaygpLCBGb3JtYXR0aW5nQ29udGV4dDo6RXNjYXBl
VHlwZTo6QWNjZXNzQW5jZXN0b3JGb3JtYXR0aW5nQ29udGV4dCkuY29udGVudEJveFdpZHRoKCkg
fTsKICAgICAgICAgICAgIGF1dG8gdmVydGljYWxNYXJnaW4gPSBmb3JtYXR0aW5nQ29udGV4dC5n
ZW9tZXRyeSgpLmNvbXB1dGVkVmVydGljYWxNYXJnaW4oKmNvbnRhaW5pbmdCbG9jaywgdXNlZFZh
bHVlcyk7CiAgICAgICAgICAgICBhdXRvIHZlcnRpY2FsUGFkZGluZyA9IGRpc3BsYXlCb3gucGFk
ZGluZ1RvcCgpLnZhbHVlT3IoMCkgKyBkaXNwbGF5Qm94LnBhZGRpbmdCb3R0b20oKS52YWx1ZU9y
KDApOwogICAgICAgICAgICAgYXV0byB2ZXJ0aWNhbEJvcmRlciA9IGRpc3BsYXlCb3guYm9yZGVy
VG9wKCkgKyBkaXNwbGF5Qm94LmJvcmRlckJvdHRvbSgpOwpAQCAtNjIsNyArNjIsNyBAQCBMYXlv
dXRVbml0IEZvcm1hdHRpbmdDb250ZXh0OjpRdWlya3M6OmhlaWdodFZhbHVlT2ZOZWFyZXN0Q29u
dGFpbmluZ0Jsb2NrV2l0aEZpeAogICAgICAgICBjb250YWluaW5nQmxvY2sgPSBjb250YWluaW5n
QmxvY2stPmNvbnRhaW5pbmdCbG9jaygpOwogICAgIH0KICAgICAvLyBJbml0aWFsIGNvbnRhaW5p
bmcgYmxvY2sgaGFzIHRvIGhhdmUgYSBoZWlnaHQuCi0gICAgcmV0dXJuIGZvcm1hdHRpbmdDb250
ZXh0LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3gobGF5b3V0Qm94LmluaXRpYWxDb250YWluaW5nQmxv
Y2soKSkuY29udGVudEJveCgpLmhlaWdodCgpIC0gYm9keUFuZERvY3VtZW50VmVydGljYWxNYXJn
aW5QYWRkaW5nQW5kQm9yZGVyOworICAgIHJldHVybiBmb3JtYXR0aW5nQ29udGV4dC5kaXNwbGF5
Qm94Rm9yTGF5b3V0Qm94KGxheW91dEJveC5pbml0aWFsQ29udGFpbmluZ0Jsb2NrKCksIEZvcm1h
dHRpbmdDb250ZXh0OjpFc2NhcGVUeXBlOjpBY2Nlc3NBbmNlc3RvckZvcm1hdHRpbmdDb250ZXh0
KS5jb250ZW50Qm94KCkuaGVpZ2h0KCkgLSBib2R5QW5kRG9jdW1lbnRWZXJ0aWNhbE1hcmdpblBh
ZGRpbmdBbmRCb3JkZXI7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9mbG9hdHMvRmxvYXRpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mbG9h
dHMvRmxvYXRpbmdDb250ZXh0LmNwcAppbmRleCA0NWIzMTcwOTBkYTdmNTQzYTkyNDU4YzI4MzNi
ZjEzZmFhNTI4MzQ5Li5jOGE5NDc3MTNlZDVkY2RhYzQ3Y2FkNjJkMTI3NzBhODJlODgyNmY3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZmxvYXRzL0Zsb2F0aW5nQ29udGV4dC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zsb2F0cy9GbG9hdGluZ0NvbnRleHQuY3Bw
CkBAIC00MjUsNyArNDI1LDcgQEAgRmxvYXRpbmdDb250ZXh0OjpBYnNvbHV0ZUNvb3JkaW5hdGVW
YWx1ZXNGb3JGbG9hdEF2b2lkZXIgRmxvYXRpbmdDb250ZXh0OjphYnNvbHUKICAgICBhdXRvIGRp
c3BsYXlCb3ggPSBtYXBUb0Zsb2F0aW5nU3RhdGVSb290KGZsb2F0QXZvaWRlcik7CiAKICAgICBp
ZiAoJmNvbnRhaW5pbmdCbG9jayA9PSAmZmxvYXRpbmdTdGF0ZSgpLnJvb3QoKSkgewotICAgICAg
ICBhdXRvIGNvbnRhaW5pbmdCbG9ja0Rpc3BsYXlCb3ggPSBmb3JtYXR0aW5nQ29udGV4dCgpLmRp
c3BsYXlCb3hGb3JMYXlvdXRCb3goY29udGFpbmluZ0Jsb2NrKTsKKyAgICAgICAgYXV0byBjb250
YWluaW5nQmxvY2tEaXNwbGF5Qm94ID0gZm9ybWF0dGluZ0NvbnRleHQoKS5kaXNwbGF5Qm94Rm9y
TGF5b3V0Qm94KGNvbnRhaW5pbmdCbG9jaywgRm9ybWF0dGluZ0NvbnRleHQ6OkVzY2FwZVR5cGU6
OkFjY2Vzc1BhcmVudEZvcm1hdHRpbmdDb250ZXh0KTsKICAgICAgICAgcmV0dXJuIHsgZGlzcGxh
eUJveCwgeyB9LCB7ICBjb250YWluaW5nQmxvY2tEaXNwbGF5Qm94LmNvbnRlbnRCb3hMZWZ0KCks
IGNvbnRhaW5pbmdCbG9ja0Rpc3BsYXlCb3guY29udGVudEJveFJpZ2h0KCkgfSB9OwogICAgIH0K
ICAgICBhdXRvIGNvbnRhaW5pbmdCbG9ja0Fic29sdXRlRGlzcGxheUJveCA9IG1hcFRvRmxvYXRp
bmdTdGF0ZVJvb3QoY29udGFpbmluZ0Jsb2NrKTsKQEAgLTQzNiwxMCArNDM2LDEwIEBAIEZsb2F0
aW5nQ29udGV4dDo6QWJzb2x1dGVDb29yZGluYXRlVmFsdWVzRm9yRmxvYXRBdm9pZGVyIEZsb2F0
aW5nQ29udGV4dDo6YWJzb2x1CiBEaXNwbGF5OjpCb3ggRmxvYXRpbmdDb250ZXh0OjptYXBUb0Zs
b2F0aW5nU3RhdGVSb290KGNvbnN0IEJveCYgZmxvYXRCb3gpIGNvbnN0CiB7CiAgICAgYXV0byYg
ZmxvYXRpbmdTdGF0ZVJvb3QgPSBmbG9hdGluZ1N0YXRlKCkucm9vdCgpOwotICAgIGF1dG8mIGRp
c3BsYXlCb3ggPSBmb3JtYXR0aW5nQ29udGV4dCgpLmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goZmxv
YXRCb3gpOworICAgIGF1dG8mIGRpc3BsYXlCb3ggPSBmb3JtYXR0aW5nQ29udGV4dCgpLmRpc3Bs
YXlCb3hGb3JMYXlvdXRCb3goZmxvYXRCb3gsIEZvcm1hdHRpbmdDb250ZXh0OjpFc2NhcGVUeXBl
OjpBY2Nlc3NQYXJlbnRGb3JtYXR0aW5nQ29udGV4dCk7CiAgICAgYXV0byB0b3BMZWZ0ID0gZGlz
cGxheUJveC50b3BMZWZ0KCk7CiAgICAgZm9yIChhdXRvKiBjb250YWluaW5nQmxvY2sgPSBmbG9h
dEJveC5jb250YWluaW5nQmxvY2soKTsgY29udGFpbmluZ0Jsb2NrICYmIGNvbnRhaW5pbmdCbG9j
ayAhPSAmZmxvYXRpbmdTdGF0ZVJvb3Q7IGNvbnRhaW5pbmdCbG9jayA9IGNvbnRhaW5pbmdCbG9j
ay0+Y29udGFpbmluZ0Jsb2NrKCkpCi0gICAgICAgIHRvcExlZnQubW92ZUJ5KGZvcm1hdHRpbmdD
b250ZXh0KCkuZGlzcGxheUJveEZvckxheW91dEJveCgqY29udGFpbmluZ0Jsb2NrKS50b3BMZWZ0
KCkpOworICAgICAgICB0b3BMZWZ0Lm1vdmVCeShmb3JtYXR0aW5nQ29udGV4dCgpLmRpc3BsYXlC
b3hGb3JMYXlvdXRCb3goKmNvbnRhaW5pbmdCbG9jaywgRm9ybWF0dGluZ0NvbnRleHQ6OkVzY2Fw
ZVR5cGU6OkFjY2Vzc1BhcmVudEZvcm1hdHRpbmdDb250ZXh0KS50b3BMZWZ0KCkpOwogCiAgICAg
YXV0byBtYXBwZWREaXNwbGF5Qm94ID0gRGlzcGxheTo6Qm94KGRpc3BsYXlCb3gpOwogICAgIG1h
cHBlZERpc3BsYXlCb3guc2V0VG9wTGVmdCh0b3BMZWZ0KTsKQEAgLTQ0OSw5ICs0NDksOSBAQCBE
aXNwbGF5OjpCb3ggRmxvYXRpbmdDb250ZXh0OjptYXBUb0Zsb2F0aW5nU3RhdGVSb290KGNvbnN0
IEJveCYgZmxvYXRCb3gpIGNvbnN0CiBMYXlvdXRVbml0IEZsb2F0aW5nQ29udGV4dDo6bWFwVG9w
VG9GbG9hdGluZ1N0YXRlUm9vdChjb25zdCBCb3gmIGZsb2F0Qm94KSBjb25zdAogewogICAgIGF1
dG8mIGZsb2F0aW5nU3RhdGVSb290ID0gZmxvYXRpbmdTdGF0ZSgpLnJvb3QoKTsKLSAgICBhdXRv
IHRvcCA9IGZvcm1hdHRpbmdDb250ZXh0KCkuZGlzcGxheUJveEZvckxheW91dEJveChmbG9hdEJv
eCkudG9wKCk7CisgICAgYXV0byB0b3AgPSBmb3JtYXR0aW5nQ29udGV4dCgpLmRpc3BsYXlCb3hG
b3JMYXlvdXRCb3goZmxvYXRCb3gsIEZvcm1hdHRpbmdDb250ZXh0OjpFc2NhcGVUeXBlOjpBY2Nl
c3NQYXJlbnRGb3JtYXR0aW5nQ29udGV4dCkudG9wKCk7CiAgICAgZm9yIChhdXRvKiBjb250YWlu
ZXIgPSBmbG9hdEJveC5jb250YWluaW5nQmxvY2soKTsgY29udGFpbmVyICYmIGNvbnRhaW5lciAh
PSAmZmxvYXRpbmdTdGF0ZVJvb3Q7IGNvbnRhaW5lciA9IGNvbnRhaW5lci0+Y29udGFpbmluZ0Js
b2NrKCkpCi0gICAgICAgIHRvcCArPSBmb3JtYXR0aW5nQ29udGV4dCgpLmRpc3BsYXlCb3hGb3JM
YXlvdXRCb3goKmNvbnRhaW5lcikudG9wKCk7CisgICAgICAgIHRvcCArPSBmb3JtYXR0aW5nQ29u
dGV4dCgpLmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goKmNvbnRhaW5lciwgRm9ybWF0dGluZ0NvbnRl
eHQ6OkVzY2FwZVR5cGU6OkFjY2Vzc1BhcmVudEZvcm1hdHRpbmdDb250ZXh0KS50b3AoKTsKICAg
ICByZXR1cm4gdG9wOwogfQogCkBAIC00NjMsNyArNDYzLDcgQEAgUG9pbnQgRmxvYXRpbmdDb250
ZXh0OjptYXBQb2ludEZyb21Gb3JtYXR0aW5nQ29udGV4dFJvb3RUb0Zsb2F0aW5nU3RhdGVSb290
KFBvaW4KICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOwogICAgIGF1dG8gbWFwcGVkUG9zaXRpb24g
PSBwb3NpdGlvbjsKICAgICBmb3IgKGF1dG8qIGNvbnRhaW5lciA9ICZmcm9tOyBjb250YWluZXIg
JiYgY29udGFpbmVyICE9ICZ0bzsgY29udGFpbmVyID0gY29udGFpbmVyLT5jb250YWluaW5nQmxv
Y2soKSkKLSAgICAgICAgbWFwcGVkUG9zaXRpb24ubW92ZUJ5KGZvcm1hdHRpbmdDb250ZXh0KCku
ZGlzcGxheUJveEZvckxheW91dEJveCgqY29udGFpbmVyKS50b3BMZWZ0KCkpOworICAgICAgICBt
YXBwZWRQb3NpdGlvbi5tb3ZlQnkoZm9ybWF0dGluZ0NvbnRleHQoKS5kaXNwbGF5Qm94Rm9yTGF5
b3V0Qm94KCpjb250YWluZXIsIEZvcm1hdHRpbmdDb250ZXh0OjpFc2NhcGVUeXBlOjpBY2Nlc3NQ
YXJlbnRGb3JtYXR0aW5nQ29udGV4dCkudG9wTGVmdCgpKTsKICAgICByZXR1cm4gbWFwcGVkUG9z
aXRpb247CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>377994</attachid>
            <date>2019-09-04 11:48:34 -0700</date>
            <delta_ts>2019-09-04 12:58:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201464-20190904114822.patch</filename>
            <type>text/plain</type>
            <size>17782</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5MzU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTFjNWJiYjMzYmVkMDgz
MDhiNzk3YjJiNzdkNDA2Nzg4MzI4Y2ZiMy4uNzhhZTJkYjBhOTNkOWU4NTM1OTI3YWJkOTdhMzg2
MTc4NWFlMzVlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE5LTA5LTA0ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ10gQXNzZXJ0IG9uIEZv
cm1hdHRpbmdDb250ZXh0IGVzY2FwaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDE0NjQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU1MDI5NTc0
PgorCisgICAgICAgIFJldmlld2VkIGJ5IEFudHRpIEtvaXZpc3RvLgorCisgICAgICAgIFRoaXMg
cGF0Y2ggYXNzZXJ0cyBvbiBhY2NpZGVudGFsIGZvcm1hdHRpbmcgY29udGV4dCBlc2NhcGluZy4g
VGhpcyBpcyBvbmx5IGEgY29ycmVjdG5lc3MgaXNzdWUgYXQgdGhlIG1vbWVudCwKKyAgICAgICAg
c2luY2Ugd2UgZG9uJ3Qgc3VwcG9ydCBtdWx0aXRocmVhZGVkIHN1YnRyZWUgbGF5b3V0IHlldC4K
KyAgICAgICAgTm9ybWFsbHkgd2Ugc2hvdWxkIG5vdCBuZWVkIHRvIGFjY2VzcyBkaXNwbGF5IGJv
eGVzIGluIGRpZmZlcmVudCBmb3JtYXR0aW5nIGNvbnRleHRzIGR1cmluZyBsYXlvdXQsIGJ1dCB0
aGVyZSBhcmUgYSBmZXcsIGp1c3RpZmllZCBjYXNlcyB3aGVuIGl0IGlzIHJlcXVpcmVkLgorCisg
ICAgICAgICogbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6OmRpc3BsYXlCb3hGb3JMYXlvdXRCb3ggY29uc3Qp
OgorICAgICAgICAqIGxheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6ZGlzcGxheUJveEZvckxheW91dEJveCBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgICogbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnku
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0
cnk6OmNvbnRlbnRIZWlnaHRGb3JGb3JtYXR0aW5nQ29udGV4dFJvb3QgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OnN0YXRpY1Zl
cnRpY2FsUG9zaXRpb25Gb3JPdXRPZkZsb3dQb3NpdGlvbmVkIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpzdGF0aWNIb3Jpem9u
dGFsUG9zaXRpb25Gb3JPdXRPZkZsb3dQb3NpdGlvbmVkIGNvbnN0KToKKyAgICAgICAgKiBsYXlv
dXQvRm9ybWF0dGluZ0NvbnRleHRRdWlya3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpGb3JtYXR0aW5nQ29udGV4dDo6UXVpcmtzOjpoZWlnaHRWYWx1ZU9mTmVhcmVzdENvbnRhaW5p
bmdCbG9ja1dpdGhGaXhlZEhlaWdodCk6CisgICAgICAgICogbGF5b3V0L2Zsb2F0cy9GbG9hdGlu
Z0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGbG9hdGluZ0NvbnRleHQ6
OmFic29sdXRlRGlzcGxheUJveENvb3JkaW5hdGVzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6RmxvYXRpbmdDb250ZXh0OjptYXBUb0Zsb2F0aW5nU3RhdGVSb290IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6RmxvYXRpbmdDb250ZXh0OjptYXBUb3BUb0Zsb2F0
aW5nU3RhdGVSb290IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6RmxvYXRpbmdD
b250ZXh0OjptYXBQb2ludEZyb21Gb3JtYXR0aW5nQ29udGV4dFJvb3RUb0Zsb2F0aW5nU3RhdGVS
b290IGNvbnN0KToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlld0xheW91dENvbnRleHQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6bGF5b3V0VXNpbmdGb3JtYXR0aW5nQ29udGV4dCk6CisKIDIwMTkt
MDktMDQgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXSBG
b3JtYXR0aW5nQ29udGV4dDo6bWFwKiBmdW5jdGlvbnMgYXJlIHRvbyBnZW5lcmljLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5jcHAKaW5kZXggMDgyOGZhMjRmOTQ0
NmIxYWMxNDViYzk2N2FhOTljZmM4MzFjODRjYS4uYzA5YWNiMzlmMjc1OWI0MzkwNDYwODQ1NGUy
MTJmNDRiYTdmMmJhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRp
bmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRl
eHQuY3BwCkBAIC0xODMsNiArMTgzLDYzIEBAIExheW91dFVuaXQgRm9ybWF0dGluZ0NvbnRleHQ6
Om1hcFJpZ2h0VG9Gb3JtYXR0aW5nQ29udGV4dFJvb3QoY29uc3QgQm94JiBsYXlvdXRCCiAgICAg
cmV0dXJuIG1hcEhvcml6b250YWxQb3NpdGlvblRvQW5jZXN0b3IoKnRoaXMsIGRpc3BsYXlCb3hG
b3JMYXlvdXRCb3gobGF5b3V0Qm94KS5yaWdodCgpLCAqbGF5b3V0Qm94LmNvbnRhaW5pbmdCbG9j
aygpLCBkb3duY2FzdDxDb250YWluZXI+KHJvb3QoKSkpOwogfQogCitEaXNwbGF5OjpCb3gmIEZv
cm1hdHRpbmdDb250ZXh0OjpkaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGNvbnN0IEJveCYgbGF5b3V0
Qm94LCBPcHRpb25hbDxFc2NhcGVUeXBlPiBlc2NhcGVUeXBlKSBjb25zdAoreworICAgIFVOVVNF
RF9QQVJBTShlc2NhcGVUeXBlKTsKKworI2lmbmRlZiBOREVCVUcKKyAgICBhdXRvIGlzT2tUb0Fj
Y2Vzc0Rpc3BsYXlCb3ggPSBbJl0geworICAgICAgICAvLyAxLiBIaWdobHkgY29tbW9uIGNhc2Ug
b2YgYWNjZXNzaW5nIHRoZSBmb3JtYXR0aW5nIHJvb3QncyBkaXNwbGF5IGJveCBpdHNlbGYuIFRo
aXMgaXMgZm9ybWF0dGluZyBjb250ZXh0IGVzY2FwaW5nIGluIHRoZSBzdHJpY3Qgc2Vuc2UsIHNp
bmNlCisgICAgICAgIC8vIHRoZSBmb3JtYXR0aW5nIGNvbnRleHQgcm9vdCBib3ggbGl2ZXMgaW4g
dGhlIHBhcmVudCBmb3JtYXR0aW5nIGNvbnRleHQuICAKKyAgICAgICAgLy8gVGhpcyBoYXBwZW5z
IGUuZy4gd2hlbiBhIGJsb2NrIGxldmVsIGJveCBib3ggbmVlZHMgdG8gc3RyZXRjaCBob3Jpem9u
dGFsbHkgYW5kIGNoZWNrcyBpdHMgY29udGFpbmluZyBibG9jayBmb3IgaG9yaXpvbnRhbCBzcGFj
ZSAodGhpcyBzaG91bGQgcHJvYmFibHkgYmUgbGltaXRlZCB0byByZWFkaW5nIGhvcml6b250YWwg
Y29uc3RyYWludCB2YWx1ZXMpLgorICAgICAgICBpZiAoJmxheW91dEJveCA9PSAmcm9vdCgpKQor
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgLy8gMi4gU3BlY2lhbCBjYXNlIHdo
ZW4gYWNjZXNzaW5nIHRoZSBJQ0IncyBkaXNwbGF5IGJveAorICAgICAgICBpZiAobGF5b3V0Qm94
LmlzSW5pdGlhbENvbnRhaW5pbmdCbG9jaygpKSB7CisgICAgICAgICAgICAvLyBUaGVyZSBoYXMg
dG8gYmUgYSB2YWxpZCByZWFzb24gdG8gYWNjZXNzIHRoZSBJQ0IuCisgICAgICAgICAgICBpZiAo
IWVzY2FwZVR5cGUpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAg
cmV0dXJuICplc2NhcGVUeXBlID09IEVzY2FwZVR5cGU6OkFjY2Vzc1BhcmVudEZvcm1hdHRpbmdD
b250ZXh0IHx8ICplc2NhcGVUeXBlID09IEVzY2FwZVR5cGU6OkFjY2Vzc0FuY2VzdG9yRm9ybWF0
dGluZ0NvbnRleHQ7CisgICAgICAgIH0KKworICAgICAgICAvLyAzLiBNb3N0IGNvbW1vbiBjYXNl
IG9mIGFjY2Vzc2luZyBib3gvY29udGFpbmluZyBibG9jayBkaXNwbGF5IGJveCB3aXRoaW4gdGhl
IHNhbWUgZm9ybWF0dGluZyBjb250ZXh0IHRyZWUuIAorICAgICAgICBpZiAoJmxheW91dEJveC5m
b3JtYXR0aW5nQ29udGV4dFJvb3QoKSA9PSAmcm9vdCgpKQorICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisKKyAgICAgICAgaWYgKCFlc2NhcGVUeXBlKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgICAgIC8vIDQuIEFjY2Vzc2luZyBjaGlsZCBmb3JtYXR0aW5nIGNvbnRleHQgc3Vi
dHJlZSBpcyByZWxhdGl2ZWx5IHJhcmUuIEl0IGhhcHBlbnMgd2hlbiBlLmcgYSBzaHJpbmsgdG8g
Zml0IChvdXQtb2YtZmxvdyBibG9jayBsZXZlbCkgYm94IGNoZWNrcyB0aGUgY29udGVudCB3aWR0
aC4KKyAgICAgICAgLy8gQ2hlY2tpbmcgdGhlIGNvbnRlbnQgd2lkdGggbWVhbnMgdG8gZ2V0IGRp
c3BsYXkgYm94ZXMgZnJvbSB0aGUgZXN0YWJsaXNoZWQgZm9ybWF0dGluZyBjb250ZXh0ICh3ZSB0
cnkgdG8gYWNjZXNzIGRpc3BsYXkgYm94ZXMgaW4gYSBjaGlsZCBmb3JtYXR0aW5nIGNvbnRleHQp
CisgICAgICAgIGlmICgqZXNjYXBlVHlwZSA9PSBFc2NhcGVUeXBlOjpBY2Nlc3NDaGlsZEZvcm1h
dHRpbmdDb250ZXh0ICYmICZsYXlvdXRCb3guZm9ybWF0dGluZ0NvbnRleHRSb290KCkuZm9ybWF0
dGluZ0NvbnRleHRSb290KCkgPT0gJnJvb3QoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwor
CisgICAgICAgIC8vIDUuIEZsb2F0IGJveCB0b3AvbGVmdCB2YWx1ZXMgYXJlIG1hcHBlZCByZWxh
dGl2ZSB0byB0aGUgRmxvYXRTdGF0ZSdzIHJvb3QuIElubGluZSBmb3JtYXR0aW5nIGNvbnRleHRz
KEEpIGluaGVyaXQgZmxvYXRzIGZyb20gcGFyZW50CisgICAgICAgIC8vIGJsb2NrIGZvcm1hdHRp
bmcgY29udGV4dHMoQikuIEZsb2F0cyBpbiB0aGVzZSBpbmxpbmUgZm9ybWF0dGluZyBjb250ZXh0
cyhBKSBuZWVkIHRvIGJlIG1hcHBlZCB0byB0aGUgcGFyZW50LCBibG9jayBmb3JtYXR0aW5nIGNv
bnRleHQoQikuIAorICAgICAgICBpZiAoKmVzY2FwZVR5cGUgPT0gRXNjYXBlVHlwZTo6QWNjZXNz
UGFyZW50Rm9ybWF0dGluZ0NvbnRleHQgJiYgJmxheW91dEJveC5mb3JtYXR0aW5nQ29udGV4dFJv
b3QoKSA9PSAmcm9vdCgpLmZvcm1hdHRpbmdDb250ZXh0Um9vdCgpKQorICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisKKyAgICAgICAgLy8gNi4gRmluZGluZyB0aGUgZmlyc3QgY29udGFpbmluZyBi
bG9jayB3aXRoIGZpeGVkIGhlaWdodCBxdWlyay4gU2VlIFF1aXJrczo6aGVpZ2h0VmFsdWVPZk5l
YXJlc3RDb250YWluaW5nQmxvY2tXaXRoRml4ZWRIZWlnaHQKKyAgICAgICAgaWYgKCplc2NhcGVU
eXBlID09IEVzY2FwZVR5cGU6OkFjY2Vzc0FuY2VzdG9yRm9ybWF0dGluZ0NvbnRleHQpIHsKKyAg
ICAgICAgICAgIGF1dG8mIHRhcmdldEZvcm1hdHRpbmdSb290ID0gbGF5b3V0Qm94LmZvcm1hdHRp
bmdDb250ZXh0Um9vdCgpOworICAgICAgICAgICAgYXV0byogYW5jZXN0b3JGb3JtYXR0aW5nQ29u
dGV4dFJvb3QgPSAmcm9vdCgpLmZvcm1hdHRpbmdDb250ZXh0Um9vdCgpOworICAgICAgICAgICAg
d2hpbGUgKHRydWUpIHsKKyAgICAgICAgICAgICAgICBpZiAoJnRhcmdldEZvcm1hdHRpbmdSb290
ID09IGFuY2VzdG9yRm9ybWF0dGluZ0NvbnRleHRSb290KQorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICBpZiAoYW5jZXN0b3JGb3JtYXR0aW5nQ29udGV4
dFJvb3QtPmlzSW5pdGlhbENvbnRhaW5pbmdCbG9jaygpKQorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgYW5jZXN0b3JGb3JtYXR0aW5nQ29udGV4dFJv
b3QgPSAmYW5jZXN0b3JGb3JtYXR0aW5nQ29udGV4dFJvb3QtPmZvcm1hdHRpbmdDb250ZXh0Um9v
dCgpOworICAgICAgICAgICAgfQorCisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH07CisjZW5kaWYKKyAgICBBU1NFUlQoaXNPa1RvQWNjZXNzRGlzcGxheUJveCgpKTsKKyAg
ICByZXR1cm4gbGF5b3V0U3RhdGUoKS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGxheW91dEJveCk7
Cit9CisKICNpZm5kZWYgTkRFQlVHCiB2b2lkIEZvcm1hdHRpbmdDb250ZXh0Ojp2YWxpZGF0ZUdl
b21ldHJ5Q29uc3RyYWludHNBZnRlckxheW91dCgpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9Gb3JtYXR0aW5nQ29udGV4dC5oCmluZGV4IDMxMzdlMTYzODBhNTBmNmFiMmVjMWNkYmI5
NTVlMTQzYWJlN2EzZjYuLjM0ZWNmYmI0Nzc2YTUwZTRjNjQzYjE3NDk4ZTViZDJjZjRhZmY2ZDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5oCkBAIC02OSw3ICs2
OSwxMiBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0lubGluZUZvcm1hdHRpbmdDb250ZXh0KCkgY29u
c3QgeyByZXR1cm4gcm9vdCgpLmVzdGFibGlzaGVzSW5saW5lRm9ybWF0dGluZ0NvbnRleHQoKTsg
fQogICAgIGJvb2wgaXNUYWJsZUZvcm1hdHRpbmdDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gcm9v
dCgpLmVzdGFibGlzaGVzVGFibGVGb3JtYXR0aW5nQ29udGV4dCgpOyB9CiAKLSAgICBEaXNwbGF5
OjpCb3gmIGRpc3BsYXlCb3hGb3JMYXlvdXRCb3goY29uc3QgQm94JiBsYXlvdXRCb3gpIGNvbnN0
IHsgcmV0dXJuIGxheW91dFN0YXRlKCkuZGlzcGxheUJveEZvckxheW91dEJveChsYXlvdXRCb3gp
OyB9CisgICAgZW51bSBjbGFzcyBFc2NhcGVUeXBlIHsKKyAgICAgICAgQWNjZXNDaGlsZEZvcm1h
dHRpbmdDb250ZXh0LAorICAgICAgICBBY2Nlc3NQYXJlbnRGb3JtYXR0aW5nQ29udGV4dCwgCisg
ICAgICAgIEFjY2Vzc0FuY2VzdG9yRm9ybWF0dGluZ0NvbnRleHQKKyAgICB9OworICAgIERpc3Bs
YXk6OkJveCYgZGlzcGxheUJveEZvckxheW91dEJveChjb25zdCBCb3gmLCBPcHRpb25hbDxFc2Nh
cGVUeXBlPiA9IFdURjo6bnVsbG9wdCkgY29uc3Q7CiAgICAgYm9vbCBoYXNEaXNwbGF5Qm94KGNv
bnN0IEJveCYgbGF5b3V0Qm94KSBjb25zdCB7IHJldHVybiBsYXlvdXRTdGF0ZSgpLmhhc0Rpc3Bs
YXlCb3gobGF5b3V0Qm94KTsgfQogCiAgICAgY29uc3QgQm94JiByb290KCkgY29uc3QgeyByZXR1
cm4gKm1fcm9vdDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRp
bmdDb250ZXh0R2VvbWV0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdD
b250ZXh0R2VvbWV0cnkuY3BwCmluZGV4IDg2NmMyYzhkMTkxMGMyN2Q0YWI3ZWQzNTEzYTNjMzdj
M2YxMzAxYWYuLmJhY2YzNWNjYjI3NzU2YTRiZjMwMThlNDA3MDVjODE5NmUxMWI3ODcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5j
cHAKQEAgLTEyMCw4ICsxMjAsOCBAQCBMYXlvdXRVbml0IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9t
ZXRyeTo6Y29udGVudEhlaWdodEZvckZvcm1hdHRpbmdDb250ZXh0Um9vdChjbwogICAgICAgICBi
b3R0b20gPSBsaW5lQm94ZXMubGFzdCgpLmxvZ2ljYWxCb3R0b20oKTsKICAgICB9IGVsc2UgaWYg
KGZvcm1hdHRpbmdSb290Q29udGFpbmVyLmVzdGFibGlzaGVzQmxvY2tGb3JtYXR0aW5nQ29udGV4
dCgpIHx8IGxheW91dEJveC5pc0RvY3VtZW50Qm94KCkpIHsKICAgICAgICAgaWYgKGZvcm1hdHRp
bmdSb290Q29udGFpbmVyLmhhc0luRmxvd0NoaWxkKCkpIHsKLSAgICAgICAgICAgIGF1dG8mIGZp
cnN0RGlzcGxheUJveCA9IGZvcm1hdHRpbmdDb250ZXh0LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3go
KmZvcm1hdHRpbmdSb290Q29udGFpbmVyLmZpcnN0SW5GbG93Q2hpbGQoKSk7Ci0gICAgICAgICAg
ICBhdXRvJiBsYXN0RGlzcGxheUJveCA9IGZvcm1hdHRpbmdDb250ZXh0LmRpc3BsYXlCb3hGb3JM
YXlvdXRCb3goKmZvcm1hdHRpbmdSb290Q29udGFpbmVyLmxhc3RJbkZsb3dDaGlsZCgpKTsKKyAg
ICAgICAgICAgIGF1dG8mIGZpcnN0RGlzcGxheUJveCA9IGZvcm1hdHRpbmdDb250ZXh0LmRpc3Bs
YXlCb3hGb3JMYXlvdXRCb3goKmZvcm1hdHRpbmdSb290Q29udGFpbmVyLmZpcnN0SW5GbG93Q2hp
bGQoKSwgRXNjYXBlVHlwZTo6QWNjZXNzQ2hpbGRGb3JtYXR0aW5nQ29udGV4dCk7CisgICAgICAg
ICAgICBhdXRvJiBsYXN0RGlzcGxheUJveCA9IGZvcm1hdHRpbmdDb250ZXh0LmRpc3BsYXlCb3hG
b3JMYXlvdXRCb3goKmZvcm1hdHRpbmdSb290Q29udGFpbmVyLmxhc3RJbkZsb3dDaGlsZCgpLCBF
c2NhcGVUeXBlOjpBY2Nlc3NDaGlsZEZvcm1hdHRpbmdDb250ZXh0KTsKICAgICAgICAgICAgIHRv
cCA9IGZpcnN0RGlzcGxheUJveC5yZWN0V2l0aE1hcmdpbigpLnRvcCgpOwogICAgICAgICAgICAg
Ym90dG9tID0gbGFzdERpc3BsYXlCb3gucmVjdFdpdGhNYXJnaW4oKS5ib3R0b20oKTsKICAgICAg
ICAgfQpAQCAtMjA1LDE4ICsyMDUsMTggQEAgTGF5b3V0VW5pdCBGb3JtYXR0aW5nQ29udGV4dDo6
R2VvbWV0cnk6OnN0YXRpY1ZlcnRpY2FsUG9zaXRpb25Gb3JPdXRPZkZsb3dQb3NpdGkKICAgICBM
YXlvdXRVbml0IHRvcDsKICAgICBpZiAoYXV0byogcHJldmlvdXNJbkZsb3dTaWJsaW5nID0gbGF5
b3V0Qm94LnByZXZpb3VzSW5GbG93U2libGluZygpKSB7CiAgICAgICAgIC8vIEFkZCBzaWJsaW5n
IG9mZnNldAotICAgICAgICBhdXRvJiBwcmV2aW91c0luRmxvd0Rpc3BsYXlCb3ggPSBmb3JtYXR0
aW5nQ29udGV4dC5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KCpwcmV2aW91c0luRmxvd1NpYmxpbmcp
OworICAgICAgICBhdXRvJiBwcmV2aW91c0luRmxvd0Rpc3BsYXlCb3ggPSBmb3JtYXR0aW5nQ29u
dGV4dC5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KCpwcmV2aW91c0luRmxvd1NpYmxpbmcsIEZvcm1h
dHRpbmdDb250ZXh0OjpFc2NhcGVUeXBlOjpBY2Nlc3NDaGlsZEZvcm1hdHRpbmdDb250ZXh0KTsK
ICAgICAgICAgdG9wICs9IHByZXZpb3VzSW5GbG93RGlzcGxheUJveC5ib3R0b20oKSArIHByZXZp
b3VzSW5GbG93RGlzcGxheUJveC5ub25Db2xsYXBzZWRNYXJnaW5BZnRlcigpOwogICAgIH0gZWxz
ZSB7CiAgICAgICAgIEFTU0VSVChsYXlvdXRCb3gucGFyZW50KCkpOwotICAgICAgICB0b3AgPSBm
b3JtYXR0aW5nQ29udGV4dC5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KCpsYXlvdXRCb3gucGFyZW50
KCkpLmNvbnRlbnRCb3hUb3AoKTsKKyAgICAgICAgdG9wID0gZm9ybWF0dGluZ0NvbnRleHQuZGlz
cGxheUJveEZvckxheW91dEJveCgqbGF5b3V0Qm94LnBhcmVudCgpLCBGb3JtYXR0aW5nQ29udGV4
dDo6RXNjYXBlVHlwZTo6QWNjZXNzQ2hpbGRGb3JtYXR0aW5nQ29udGV4dCkuY29udGVudEJveFRv
cCgpOwogICAgIH0KIAogICAgIC8vIFJlc29sdmUgdG9wIGFsbCB0aGUgd2F5IHVwIHRvIHRoZSBj
b250YWluaW5nIGJsb2NrLgogICAgIGF1dG8mIGNvbnRhaW5pbmdCbG9jayA9ICpsYXlvdXRCb3gu
Y29udGFpbmluZ0Jsb2NrKCk7CiAgICAgLy8gU3RhcnQgd2l0aCB0aGUgcGFyZW50IHNpbmNlIHdl
IHByZXRlbmQgdGhhdCB0aGlzIGJveCBpcyBub3JtYWwgZmxvdy4KICAgICBmb3IgKGF1dG8qIGNv
bnRhaW5lciA9IGxheW91dEJveC5wYXJlbnQoKTsgY29udGFpbmVyICE9ICZjb250YWluaW5nQmxv
Y2s7IGNvbnRhaW5lciA9IGNvbnRhaW5lci0+Y29udGFpbmluZ0Jsb2NrKCkpIHsKLSAgICAgICAg
YXV0byYgZGlzcGxheUJveCA9IGZvcm1hdHRpbmdDb250ZXh0LmRpc3BsYXlCb3hGb3JMYXlvdXRC
b3goKmNvbnRhaW5lcik7CisgICAgICAgIGF1dG8mIGRpc3BsYXlCb3ggPSBmb3JtYXR0aW5nQ29u
dGV4dC5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KCpjb250YWluZXIsIEZvcm1hdHRpbmdDb250ZXh0
OjpFc2NhcGVUeXBlOjpBY2Nlc3NDaGlsZEZvcm1hdHRpbmdDb250ZXh0KTsKICAgICAgICAgLy8g
RGlzcGxheTo6Qm94Ojp0b3AgaXMgdGhlIGJvcmRlciBib3ggdG9wIHBvc2l0aW9uIGluIGl0cyBj
b250YWluaW5nIGJsb2NrJ3MgY29vcmRpbmF0ZSBzeXN0ZW0uCiAgICAgICAgIHRvcCArPSBkaXNw
bGF5Qm94LnRvcCgpOwogICAgICAgICBBU1NFUlQoIWNvbnRhaW5lci0+aXNQb3NpdGlvbmVkKCkg
fHwgbGF5b3V0Qm94LmlzRml4ZWRQb3NpdGlvbmVkKCkpOwpAQCAtMjM0LDE5ICsyMzQsMTkgQEAg
TGF5b3V0VW5pdCBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OnN0YXRpY0hvcml6b250YWxQ
b3NpdGlvbkZvck91dE9mRmxvd1Bvc2kKICAgICAvLyBTdGFydCB3aXRoIHRoaXMgYm94J3MgYm9y
ZGVyIGJveCBvZmZzZXQgZnJvbSB0aGUgcGFyZW50J3MgYm9yZGVyIGJveC4KICAgICBhdXRvJiBm
b3JtYXR0aW5nQ29udGV4dCA9IHRoaXMtPmZvcm1hdHRpbmdDb250ZXh0KCk7CiAgICAgQVNTRVJU
KGxheW91dEJveC5wYXJlbnQoKSk7Ci0gICAgYXV0byBsZWZ0ID0gZm9ybWF0dGluZ0NvbnRleHQu
ZGlzcGxheUJveEZvckxheW91dEJveCgqbGF5b3V0Qm94LnBhcmVudCgpKS5jb250ZW50Qm94TGVm
dCgpOworICAgIGF1dG8gbGVmdCA9IGZvcm1hdHRpbmdDb250ZXh0LmRpc3BsYXlCb3hGb3JMYXlv
dXRCb3goKmxheW91dEJveC5wYXJlbnQoKSwgRm9ybWF0dGluZ0NvbnRleHQ6OkVzY2FwZVR5cGU6
OkFjY2Vzc0NoaWxkRm9ybWF0dGluZ0NvbnRleHQpLmNvbnRlbnRCb3hMZWZ0KCk7CiAKICAgICAv
LyBSZXNvbHZlIGxlZnQgYWxsIHRoZSB3YXkgdXAgdG8gdGhlIGNvbnRhaW5pbmcgYmxvY2suCiAg
ICAgYXV0byYgY29udGFpbmluZ0Jsb2NrID0gKmxheW91dEJveC5jb250YWluaW5nQmxvY2soKTsK
ICAgICAvLyBTdGFydCB3aXRoIHRoZSBwYXJlbnQgc2luY2Ugd2UgcHJldGVuZCB0aGF0IHRoaXMg
Ym94IGlzIG5vcm1hbCBmbG93LgogICAgIGZvciAoYXV0byogY29udGFpbmVyID0gbGF5b3V0Qm94
LnBhcmVudCgpOyBjb250YWluZXIgIT0gJmNvbnRhaW5pbmdCbG9jazsgY29udGFpbmVyID0gY29u
dGFpbmVyLT5jb250YWluaW5nQmxvY2soKSkgewotICAgICAgICBhdXRvJiBkaXNwbGF5Qm94ID0g
Zm9ybWF0dGluZ0NvbnRleHQuZGlzcGxheUJveEZvckxheW91dEJveCgqY29udGFpbmVyKTsKKyAg
ICAgICAgYXV0byYgZGlzcGxheUJveCA9IGZvcm1hdHRpbmdDb250ZXh0LmRpc3BsYXlCb3hGb3JM
YXlvdXRCb3goKmNvbnRhaW5lciwgRm9ybWF0dGluZ0NvbnRleHQ6OkVzY2FwZVR5cGU6OkFjY2Vz
c0NoaWxkRm9ybWF0dGluZ0NvbnRleHQpOwogICAgICAgICAvLyBEaXNwbGF5OjpCb3g6OmxlZnQg
aXMgdGhlIGJvcmRlciBib3ggbGVmdCBwb3NpdGlvbiBpbiBpdHMgY29udGFpbmluZyBibG9jaydz
IGNvb3JkaW5hdGUgc3lzdGVtLgogICAgICAgICBsZWZ0ICs9IGRpc3BsYXlCb3gubGVmdCgpOwog
ICAgICAgICBBU1NFUlQoIWNvbnRhaW5lci0+aXNQb3NpdGlvbmVkKCkgfHwgbGF5b3V0Qm94Lmlz
Rml4ZWRQb3NpdGlvbmVkKCkpOwogICAgIH0KICAgICAvLyBNb3ZlIHRoZSBzdGF0aWMgcG9zaXRp
b24gcmVsYXRpdmUgdG8gdGhlIHBhZGRpbmcgYm94LiBUaGlzIGlzIHZlcnkgc3BlY2lmaWMgdG8g
YWJvbHV0ZWx5IHBvc2l0aW9uZWQgYm94ZXMuCi0gICAgYXV0byBwYWRkaW5nQm94TGVmdCA9IGZv
cm1hdHRpbmdDb250ZXh0LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goY29udGFpbmluZ0Jsb2NrKS5w
YWRkaW5nQm94TGVmdCgpOworICAgIGF1dG8gcGFkZGluZ0JveExlZnQgPSBmb3JtYXR0aW5nQ29u
dGV4dC5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGNvbnRhaW5pbmdCbG9jaywgRm9ybWF0dGluZ0Nv
bnRleHQ6OkVzY2FwZVR5cGU6OkFjY2Vzc0NoaWxkRm9ybWF0dGluZ0NvbnRleHQpLnBhZGRpbmdC
b3hMZWZ0KCk7CiAgICAgcmV0dXJuIGxlZnQgLSBwYWRkaW5nQm94TGVmdDsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0UXVpcmtzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dFF1aXJrcy5jcHAKaW5kZXgg
MjVjNGZiY2QzYmMzMjU2OWFkYjhkZmIwOTMxNTJhNzNlM2MwMWYyMi4uNTY1MzllMTZjNjA0ZDU2
NzI2NDVhMThjMzIxMGZlZjgwYmZjMDc4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L0Zvcm1hdHRpbmdDb250ZXh0UXVpcmtzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvRm9ybWF0dGluZ0NvbnRleHRRdWlya3MuY3BwCkBAIC01MCw5ICs1MCw5IEBAIExheW91dFVu
aXQgRm9ybWF0dGluZ0NvbnRleHQ6OlF1aXJrczo6aGVpZ2h0VmFsdWVPZk5lYXJlc3RDb250YWlu
aW5nQmxvY2tXaXRoRml4CiAgICAgICAgIC8vIElmIHRoZSBvbmx5IGZpeGVkIHZhbHVlIGJveCB3
ZSBmaW5kIGlzIHRoZSBJQ0IsIHRoZW4gaWdub3JlIHRoZSBib2R5IGFuZCB0aGUgZG9jdW1lbnQg
KHZlcnRpY2FsKSBtYXJnaW4sIHBhZGRpbmcgYW5kIGJvcmRlci4gU28gbXVjaCBxdWlya2luZXNz
LgogICAgICAgICAvLyAtYW5kIGl0J3MgdG90YWxseSBpbnNhbmUgYmVjYXVzZSBub3cgd2UgZnJl
ZWx5IHRyYXZlbCBhY3Jvc3MgZm9ybWF0dGluZyBjb250ZXh0IGJvdW5kYXJpZXMgYW5kIGNvbXB1
dGVkIG1hcmdpbnMgYXJlIG5vbmV4aXN0ZW50LgogICAgICAgICBpZiAoY29udGFpbmluZ0Jsb2Nr
LT5pc0JvZHlCb3goKSB8fCBjb250YWluaW5nQmxvY2stPmlzRG9jdW1lbnRCb3goKSkgewotICAg
ICAgICAgICAgYXV0byYgZGlzcGxheUJveCA9IGZvcm1hdHRpbmdDb250ZXh0LmRpc3BsYXlCb3hG
b3JMYXlvdXRCb3goKmNvbnRhaW5pbmdCbG9jayk7CisgICAgICAgICAgICBhdXRvJiBkaXNwbGF5
Qm94ID0gZm9ybWF0dGluZ0NvbnRleHQuZGlzcGxheUJveEZvckxheW91dEJveCgqY29udGFpbmlu
Z0Jsb2NrLCBGb3JtYXR0aW5nQ29udGV4dDo6RXNjYXBlVHlwZTo6QWNjZXNzQW5jZXN0b3JGb3Jt
YXR0aW5nQ29udGV4dCk7CiAKLSAgICAgICAgICAgIGF1dG8gdXNlZFZhbHVlcyA9IFVzZWRIb3Jp
em9udGFsVmFsdWVzIHsgZm9ybWF0dGluZ0NvbnRleHQuZGlzcGxheUJveEZvckxheW91dEJveCgq
Y29udGFpbmluZ0Jsb2NrLT5jb250YWluaW5nQmxvY2soKSkuY29udGVudEJveFdpZHRoKCkgfTsK
KyAgICAgICAgICAgIGF1dG8gdXNlZFZhbHVlcyA9IFVzZWRIb3Jpem9udGFsVmFsdWVzIHsgZm9y
bWF0dGluZ0NvbnRleHQuZGlzcGxheUJveEZvckxheW91dEJveCgqY29udGFpbmluZ0Jsb2NrLT5j
b250YWluaW5nQmxvY2soKSwgRm9ybWF0dGluZ0NvbnRleHQ6OkVzY2FwZVR5cGU6OkFjY2Vzc0Fu
Y2VzdG9yRm9ybWF0dGluZ0NvbnRleHQpLmNvbnRlbnRCb3hXaWR0aCgpIH07CiAgICAgICAgICAg
ICBhdXRvIHZlcnRpY2FsTWFyZ2luID0gZm9ybWF0dGluZ0NvbnRleHQuZ2VvbWV0cnkoKS5jb21w
dXRlZFZlcnRpY2FsTWFyZ2luKCpjb250YWluaW5nQmxvY2ssIHVzZWRWYWx1ZXMpOwogICAgICAg
ICAgICAgYXV0byB2ZXJ0aWNhbFBhZGRpbmcgPSBkaXNwbGF5Qm94LnBhZGRpbmdUb3AoKS52YWx1
ZU9yKDApICsgZGlzcGxheUJveC5wYWRkaW5nQm90dG9tKCkudmFsdWVPcigwKTsKICAgICAgICAg
ICAgIGF1dG8gdmVydGljYWxCb3JkZXIgPSBkaXNwbGF5Qm94LmJvcmRlclRvcCgpICsgZGlzcGxh
eUJveC5ib3JkZXJCb3R0b20oKTsKQEAgLTYyLDcgKzYyLDcgQEAgTGF5b3V0VW5pdCBGb3JtYXR0
aW5nQ29udGV4dDo6UXVpcmtzOjpoZWlnaHRWYWx1ZU9mTmVhcmVzdENvbnRhaW5pbmdCbG9ja1dp
dGhGaXgKICAgICAgICAgY29udGFpbmluZ0Jsb2NrID0gY29udGFpbmluZ0Jsb2NrLT5jb250YWlu
aW5nQmxvY2soKTsKICAgICB9CiAgICAgLy8gSW5pdGlhbCBjb250YWluaW5nIGJsb2NrIGhhcyB0
byBoYXZlIGEgaGVpZ2h0LgotICAgIHJldHVybiBmb3JtYXR0aW5nQ29udGV4dC5kaXNwbGF5Qm94
Rm9yTGF5b3V0Qm94KGxheW91dEJveC5pbml0aWFsQ29udGFpbmluZ0Jsb2NrKCkpLmNvbnRlbnRC
b3goKS5oZWlnaHQoKSAtIGJvZHlBbmREb2N1bWVudFZlcnRpY2FsTWFyZ2luUGFkZGluZ0FuZEJv
cmRlcjsKKyAgICByZXR1cm4gZm9ybWF0dGluZ0NvbnRleHQuZGlzcGxheUJveEZvckxheW91dEJv
eChsYXlvdXRCb3guaW5pdGlhbENvbnRhaW5pbmdCbG9jaygpLCBGb3JtYXR0aW5nQ29udGV4dDo6
RXNjYXBlVHlwZTo6QWNjZXNzQW5jZXN0b3JGb3JtYXR0aW5nQ29udGV4dCkuY29udGVudEJveCgp
LmhlaWdodCgpIC0gYm9keUFuZERvY3VtZW50VmVydGljYWxNYXJnaW5QYWRkaW5nQW5kQm9yZGVy
OwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZmxvYXRzL0Zsb2F0
aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZmxvYXRzL0Zsb2F0aW5nQ29u
dGV4dC5jcHAKaW5kZXggNDViMzE3MDkwZGE3ZjU0M2E5MjQ1OGMyODMzYmYxM2ZhYTUyODM0OS4u
YzhhOTQ3NzEzZWQ1ZGNkYWM0N2NhZDYyZDEyNzcwYTgyZTg4MjZmNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Zsb2F0cy9GbG9hdGluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9mbG9hdHMvRmxvYXRpbmdDb250ZXh0LmNwcApAQCAtNDI1LDcgKzQy
NSw3IEBAIEZsb2F0aW5nQ29udGV4dDo6QWJzb2x1dGVDb29yZGluYXRlVmFsdWVzRm9yRmxvYXRB
dm9pZGVyIEZsb2F0aW5nQ29udGV4dDo6YWJzb2x1CiAgICAgYXV0byBkaXNwbGF5Qm94ID0gbWFw
VG9GbG9hdGluZ1N0YXRlUm9vdChmbG9hdEF2b2lkZXIpOwogCiAgICAgaWYgKCZjb250YWluaW5n
QmxvY2sgPT0gJmZsb2F0aW5nU3RhdGUoKS5yb290KCkpIHsKLSAgICAgICAgYXV0byBjb250YWlu
aW5nQmxvY2tEaXNwbGF5Qm94ID0gZm9ybWF0dGluZ0NvbnRleHQoKS5kaXNwbGF5Qm94Rm9yTGF5
b3V0Qm94KGNvbnRhaW5pbmdCbG9jayk7CisgICAgICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrRGlz
cGxheUJveCA9IGZvcm1hdHRpbmdDb250ZXh0KCkuZGlzcGxheUJveEZvckxheW91dEJveChjb250
YWluaW5nQmxvY2ssIEZvcm1hdHRpbmdDb250ZXh0OjpFc2NhcGVUeXBlOjpBY2Nlc3NQYXJlbnRG
b3JtYXR0aW5nQ29udGV4dCk7CiAgICAgICAgIHJldHVybiB7IGRpc3BsYXlCb3gsIHsgfSwgeyAg
Y29udGFpbmluZ0Jsb2NrRGlzcGxheUJveC5jb250ZW50Qm94TGVmdCgpLCBjb250YWluaW5nQmxv
Y2tEaXNwbGF5Qm94LmNvbnRlbnRCb3hSaWdodCgpIH0gfTsKICAgICB9CiAgICAgYXV0byBjb250
YWluaW5nQmxvY2tBYnNvbHV0ZURpc3BsYXlCb3ggPSBtYXBUb0Zsb2F0aW5nU3RhdGVSb290KGNv
bnRhaW5pbmdCbG9jayk7CkBAIC00MzYsMTAgKzQzNiwxMCBAQCBGbG9hdGluZ0NvbnRleHQ6OkFi
c29sdXRlQ29vcmRpbmF0ZVZhbHVlc0ZvckZsb2F0QXZvaWRlciBGbG9hdGluZ0NvbnRleHQ6OmFi
c29sdQogRGlzcGxheTo6Qm94IEZsb2F0aW5nQ29udGV4dDo6bWFwVG9GbG9hdGluZ1N0YXRlUm9v
dChjb25zdCBCb3gmIGZsb2F0Qm94KSBjb25zdAogewogICAgIGF1dG8mIGZsb2F0aW5nU3RhdGVS
b290ID0gZmxvYXRpbmdTdGF0ZSgpLnJvb3QoKTsKLSAgICBhdXRvJiBkaXNwbGF5Qm94ID0gZm9y
bWF0dGluZ0NvbnRleHQoKS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGZsb2F0Qm94KTsKKyAgICBh
dXRvJiBkaXNwbGF5Qm94ID0gZm9ybWF0dGluZ0NvbnRleHQoKS5kaXNwbGF5Qm94Rm9yTGF5b3V0
Qm94KGZsb2F0Qm94LCBGb3JtYXR0aW5nQ29udGV4dDo6RXNjYXBlVHlwZTo6QWNjZXNzUGFyZW50
Rm9ybWF0dGluZ0NvbnRleHQpOwogICAgIGF1dG8gdG9wTGVmdCA9IGRpc3BsYXlCb3gudG9wTGVm
dCgpOwogICAgIGZvciAoYXV0byogY29udGFpbmluZ0Jsb2NrID0gZmxvYXRCb3guY29udGFpbmlu
Z0Jsb2NrKCk7IGNvbnRhaW5pbmdCbG9jayAmJiBjb250YWluaW5nQmxvY2sgIT0gJmZsb2F0aW5n
U3RhdGVSb290OyBjb250YWluaW5nQmxvY2sgPSBjb250YWluaW5nQmxvY2stPmNvbnRhaW5pbmdC
bG9jaygpKQotICAgICAgICB0b3BMZWZ0Lm1vdmVCeShmb3JtYXR0aW5nQ29udGV4dCgpLmRpc3Bs
YXlCb3hGb3JMYXlvdXRCb3goKmNvbnRhaW5pbmdCbG9jaykudG9wTGVmdCgpKTsKKyAgICAgICAg
dG9wTGVmdC5tb3ZlQnkoZm9ybWF0dGluZ0NvbnRleHQoKS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94
KCpjb250YWluaW5nQmxvY2ssIEZvcm1hdHRpbmdDb250ZXh0OjpFc2NhcGVUeXBlOjpBY2Nlc3NQ
YXJlbnRGb3JtYXR0aW5nQ29udGV4dCkudG9wTGVmdCgpKTsKIAogICAgIGF1dG8gbWFwcGVkRGlz
cGxheUJveCA9IERpc3BsYXk6OkJveChkaXNwbGF5Qm94KTsKICAgICBtYXBwZWREaXNwbGF5Qm94
LnNldFRvcExlZnQodG9wTGVmdCk7CkBAIC00NDksOSArNDQ5LDkgQEAgRGlzcGxheTo6Qm94IEZs
b2F0aW5nQ29udGV4dDo6bWFwVG9GbG9hdGluZ1N0YXRlUm9vdChjb25zdCBCb3gmIGZsb2F0Qm94
KSBjb25zdAogTGF5b3V0VW5pdCBGbG9hdGluZ0NvbnRleHQ6Om1hcFRvcFRvRmxvYXRpbmdTdGF0
ZVJvb3QoY29uc3QgQm94JiBmbG9hdEJveCkgY29uc3QKIHsKICAgICBhdXRvJiBmbG9hdGluZ1N0
YXRlUm9vdCA9IGZsb2F0aW5nU3RhdGUoKS5yb290KCk7Ci0gICAgYXV0byB0b3AgPSBmb3JtYXR0
aW5nQ29udGV4dCgpLmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goZmxvYXRCb3gpLnRvcCgpOworICAg
IGF1dG8gdG9wID0gZm9ybWF0dGluZ0NvbnRleHQoKS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGZs
b2F0Qm94LCBGb3JtYXR0aW5nQ29udGV4dDo6RXNjYXBlVHlwZTo6QWNjZXNzUGFyZW50Rm9ybWF0
dGluZ0NvbnRleHQpLnRvcCgpOwogICAgIGZvciAoYXV0byogY29udGFpbmVyID0gZmxvYXRCb3gu
Y29udGFpbmluZ0Jsb2NrKCk7IGNvbnRhaW5lciAmJiBjb250YWluZXIgIT0gJmZsb2F0aW5nU3Rh
dGVSb290OyBjb250YWluZXIgPSBjb250YWluZXItPmNvbnRhaW5pbmdCbG9jaygpKQotICAgICAg
ICB0b3AgKz0gZm9ybWF0dGluZ0NvbnRleHQoKS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KCpjb250
YWluZXIpLnRvcCgpOworICAgICAgICB0b3AgKz0gZm9ybWF0dGluZ0NvbnRleHQoKS5kaXNwbGF5
Qm94Rm9yTGF5b3V0Qm94KCpjb250YWluZXIsIEZvcm1hdHRpbmdDb250ZXh0OjpFc2NhcGVUeXBl
OjpBY2Nlc3NQYXJlbnRGb3JtYXR0aW5nQ29udGV4dCkudG9wKCk7CiAgICAgcmV0dXJuIHRvcDsK
IH0KIApAQCAtNDYzLDcgKzQ2Myw3IEBAIFBvaW50IEZsb2F0aW5nQ29udGV4dDo6bWFwUG9pbnRG
cm9tRm9ybWF0dGluZ0NvbnRleHRSb290VG9GbG9hdGluZ1N0YXRlUm9vdChQb2luCiAgICAgICAg
IHJldHVybiBwb3NpdGlvbjsKICAgICBhdXRvIG1hcHBlZFBvc2l0aW9uID0gcG9zaXRpb247CiAg
ICAgZm9yIChhdXRvKiBjb250YWluZXIgPSAmZnJvbTsgY29udGFpbmVyICYmIGNvbnRhaW5lciAh
PSAmdG87IGNvbnRhaW5lciA9IGNvbnRhaW5lci0+Y29udGFpbmluZ0Jsb2NrKCkpCi0gICAgICAg
IG1hcHBlZFBvc2l0aW9uLm1vdmVCeShmb3JtYXR0aW5nQ29udGV4dCgpLmRpc3BsYXlCb3hGb3JM
YXlvdXRCb3goKmNvbnRhaW5lcikudG9wTGVmdCgpKTsKKyAgICAgICAgbWFwcGVkUG9zaXRpb24u
bW92ZUJ5KGZvcm1hdHRpbmdDb250ZXh0KCkuZGlzcGxheUJveEZvckxheW91dEJveCgqY29udGFp
bmVyLCBGb3JtYXR0aW5nQ29udGV4dDo6RXNjYXBlVHlwZTo6QWNjZXNzUGFyZW50Rm9ybWF0dGlu
Z0NvbnRleHQpLnRvcExlZnQoKSk7CiAgICAgcmV0dXJuIG1hcHBlZFBvc2l0aW9uOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378002</attachid>
            <date>2019-09-04 12:58:49 -0700</date>
            <delta_ts>2019-09-04 13:42:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201464-20190904125849.patch</filename>
            <type>text/plain</type>
            <size>17778</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5NDk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2Q1MmI4ZTJiYmM3Nzdm
OGZhYjA3N2Y2YjA5MzMxMmVkMDcyZTMzMS4uMTc4YzA5NjhkZDk5YzZhMTg3MzJmMzcwMWQ1ZWFi
NDQ3OWRhY2I5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE5LTA5LTA0ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ10gQXNzZXJ0IG9uIEZv
cm1hdHRpbmdDb250ZXh0IGVzY2FwaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDE0NjQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU1MDI5NTc0
PgorCisgICAgICAgIFJldmlld2VkIGJ5IEFudHRpIEtvaXZpc3RvLgorCisgICAgICAgIFRoaXMg
cGF0Y2ggYXNzZXJ0cyBvbiBhY2NpZGVudGFsIGZvcm1hdHRpbmcgY29udGV4dCBlc2NhcGluZy4g
VGhpcyBpcyBvbmx5IGEgY29ycmVjdG5lc3MgaXNzdWUgYXQgdGhlIG1vbWVudCwKKyAgICAgICAg
c2luY2Ugd2UgZG9uJ3Qgc3VwcG9ydCBtdWx0aXRocmVhZGVkIHN1YnRyZWUgbGF5b3V0IHlldC4K
KyAgICAgICAgTm9ybWFsbHkgd2Ugc2hvdWxkIG5vdCBuZWVkIHRvIGFjY2VzcyBkaXNwbGF5IGJv
eGVzIGluIGRpZmZlcmVudCBmb3JtYXR0aW5nIGNvbnRleHRzIGR1cmluZyBsYXlvdXQsIGJ1dCB0
aGVyZSBhcmUgYSBmZXcsIGp1c3RpZmllZCBjYXNlcyB3aGVuIGl0IGlzIHJlcXVpcmVkLgorCisg
ICAgICAgICogbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6OmRpc3BsYXlCb3hGb3JMYXlvdXRCb3ggY29uc3Qp
OgorICAgICAgICAqIGxheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6ZGlzcGxheUJveEZvckxheW91dEJveCBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgICogbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnku
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0
cnk6OmNvbnRlbnRIZWlnaHRGb3JGb3JtYXR0aW5nQ29udGV4dFJvb3QgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OnN0YXRpY1Zl
cnRpY2FsUG9zaXRpb25Gb3JPdXRPZkZsb3dQb3NpdGlvbmVkIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpzdGF0aWNIb3Jpem9u
dGFsUG9zaXRpb25Gb3JPdXRPZkZsb3dQb3NpdGlvbmVkIGNvbnN0KToKKyAgICAgICAgKiBsYXlv
dXQvRm9ybWF0dGluZ0NvbnRleHRRdWlya3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpGb3JtYXR0aW5nQ29udGV4dDo6UXVpcmtzOjpoZWlnaHRWYWx1ZU9mTmVhcmVzdENvbnRhaW5p
bmdCbG9ja1dpdGhGaXhlZEhlaWdodCk6CisgICAgICAgICogbGF5b3V0L2Zsb2F0cy9GbG9hdGlu
Z0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGbG9hdGluZ0NvbnRleHQ6
OmFic29sdXRlRGlzcGxheUJveENvb3JkaW5hdGVzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6RmxvYXRpbmdDb250ZXh0OjptYXBUb0Zsb2F0aW5nU3RhdGVSb290IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6RmxvYXRpbmdDb250ZXh0OjptYXBUb3BUb0Zsb2F0
aW5nU3RhdGVSb290IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6RmxvYXRpbmdD
b250ZXh0OjptYXBQb2ludEZyb21Gb3JtYXR0aW5nQ29udGV4dFJvb3RUb0Zsb2F0aW5nU3RhdGVS
b290IGNvbnN0KToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlld0xheW91dENvbnRleHQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6bGF5b3V0VXNpbmdGb3JtYXR0aW5nQ29udGV4dCk6CisKIDIwMTkt
MDktMDQgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXSBG
b3JtYXR0aW5nQ29udGV4dDo6bWFwKiBmdW5jdGlvbnMgYXJlIHRvbyBnZW5lcmljLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5jcHAKaW5kZXggMDgyOGZhMjRmOTQ0
NmIxYWMxNDViYzk2N2FhOTljZmM4MzFjODRjYS4uMGQ0YTc4YmRkN2UzZTU5YmY2NDgzMTRkYmI1
M2RkN2I1ZjQ5NWM0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRp
bmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRl
eHQuY3BwCkBAIC0xODMsNiArMTgzLDYzIEBAIExheW91dFVuaXQgRm9ybWF0dGluZ0NvbnRleHQ6
Om1hcFJpZ2h0VG9Gb3JtYXR0aW5nQ29udGV4dFJvb3QoY29uc3QgQm94JiBsYXlvdXRCCiAgICAg
cmV0dXJuIG1hcEhvcml6b250YWxQb3NpdGlvblRvQW5jZXN0b3IoKnRoaXMsIGRpc3BsYXlCb3hG
b3JMYXlvdXRCb3gobGF5b3V0Qm94KS5yaWdodCgpLCAqbGF5b3V0Qm94LmNvbnRhaW5pbmdCbG9j
aygpLCBkb3duY2FzdDxDb250YWluZXI+KHJvb3QoKSkpOwogfQogCitEaXNwbGF5OjpCb3gmIEZv
cm1hdHRpbmdDb250ZXh0OjpkaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGNvbnN0IEJveCYgbGF5b3V0
Qm94LCBPcHRpb25hbDxFc2NhcGVUeXBlPiBlc2NhcGVUeXBlKSBjb25zdAoreworICAgIFVOVVNF
RF9QQVJBTShlc2NhcGVUeXBlKTsKKworI2lmbmRlZiBOREVCVUcKKyAgICBhdXRvIGlzT2tUb0Fj
Y2Vzc0Rpc3BsYXlCb3ggPSBbJl0geworICAgICAgICAvLyAxLiBIaWdobHkgY29tbW9uIGNhc2Ug
b2YgYWNjZXNzaW5nIHRoZSBmb3JtYXR0aW5nIHJvb3QncyBkaXNwbGF5IGJveCBpdHNlbGYuIFRo
aXMgaXMgZm9ybWF0dGluZyBjb250ZXh0IGVzY2FwaW5nIGluIHRoZSBzdHJpY3Qgc2Vuc2UsIHNp
bmNlCisgICAgICAgIC8vIHRoZSBmb3JtYXR0aW5nIGNvbnRleHQgcm9vdCBib3ggbGl2ZXMgaW4g
dGhlIHBhcmVudCBmb3JtYXR0aW5nIGNvbnRleHQuCisgICAgICAgIC8vIFRoaXMgaGFwcGVucyBl
LmcuIHdoZW4gYSBibG9jayBsZXZlbCBib3ggYm94IG5lZWRzIHRvIHN0cmV0Y2ggaG9yaXpvbnRh
bGx5IGFuZCBjaGVja3MgaXRzIGNvbnRhaW5pbmcgYmxvY2sgZm9yIGhvcml6b250YWwgc3BhY2Ug
KHRoaXMgc2hvdWxkIHByb2JhYmx5IGJlIGxpbWl0ZWQgdG8gcmVhZGluZyBob3Jpem9udGFsIGNv
bnN0cmFpbnQgdmFsdWVzKS4KKyAgICAgICAgaWYgKCZsYXlvdXRCb3ggPT0gJnJvb3QoKSkKKyAg
ICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAgIC8vIDIuIFNwZWNpYWwgY2FzZSB3aGVu
IGFjY2Vzc2luZyB0aGUgSUNCJ3MgZGlzcGxheSBib3gKKyAgICAgICAgaWYgKGxheW91dEJveC5p
c0luaXRpYWxDb250YWluaW5nQmxvY2soKSkgeworICAgICAgICAgICAgLy8gVGhlcmUgaGFzIHRv
IGJlIGEgdmFsaWQgcmVhc29uIHRvIGFjY2VzcyB0aGUgSUNCLgorICAgICAgICAgICAgaWYgKCFl
c2NhcGVUeXBlKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIHJl
dHVybiAqZXNjYXBlVHlwZSA9PSBFc2NhcGVUeXBlOjpBY2Nlc3NQYXJlbnRGb3JtYXR0aW5nQ29u
dGV4dCB8fCAqZXNjYXBlVHlwZSA9PSBFc2NhcGVUeXBlOjpBY2Nlc3NBbmNlc3RvckZvcm1hdHRp
bmdDb250ZXh0OworICAgICAgICB9CisKKyAgICAgICAgLy8gMy4gTW9zdCBjb21tb24gY2FzZSBv
ZiBhY2Nlc3NpbmcgYm94L2NvbnRhaW5pbmcgYmxvY2sgZGlzcGxheSBib3ggd2l0aGluIHRoZSBz
YW1lIGZvcm1hdHRpbmcgY29udGV4dCB0cmVlLgorICAgICAgICBpZiAoJmxheW91dEJveC5mb3Jt
YXR0aW5nQ29udGV4dFJvb3QoKSA9PSAmcm9vdCgpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisKKyAgICAgICAgaWYgKCFlc2NhcGVUeXBlKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgICAgIC8vIDQuIEFjY2Vzc2luZyBjaGlsZCBmb3JtYXR0aW5nIGNvbnRleHQgc3VidHJl
ZSBpcyByZWxhdGl2ZWx5IHJhcmUuIEl0IGhhcHBlbnMgd2hlbiBlLmcgYSBzaHJpbmsgdG8gZml0
IChvdXQtb2YtZmxvdyBibG9jayBsZXZlbCkgYm94IGNoZWNrcyB0aGUgY29udGVudCB3aWR0aC4K
KyAgICAgICAgLy8gQ2hlY2tpbmcgdGhlIGNvbnRlbnQgd2lkdGggbWVhbnMgdG8gZ2V0IGRpc3Bs
YXkgYm94ZXMgZnJvbSB0aGUgZXN0YWJsaXNoZWQgZm9ybWF0dGluZyBjb250ZXh0ICh3ZSB0cnkg
dG8gYWNjZXNzIGRpc3BsYXkgYm94ZXMgaW4gYSBjaGlsZCBmb3JtYXR0aW5nIGNvbnRleHQpCisg
ICAgICAgIGlmICgqZXNjYXBlVHlwZSA9PSBFc2NhcGVUeXBlOjpBY2Nlc3NDaGlsZEZvcm1hdHRp
bmdDb250ZXh0ICYmICZsYXlvdXRCb3guZm9ybWF0dGluZ0NvbnRleHRSb290KCkuZm9ybWF0dGlu
Z0NvbnRleHRSb290KCkgPT0gJnJvb3QoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworCisg
ICAgICAgIC8vIDUuIEZsb2F0IGJveCB0b3AvbGVmdCB2YWx1ZXMgYXJlIG1hcHBlZCByZWxhdGl2
ZSB0byB0aGUgRmxvYXRTdGF0ZSdzIHJvb3QuIElubGluZSBmb3JtYXR0aW5nIGNvbnRleHRzKEEp
IGluaGVyaXQgZmxvYXRzIGZyb20gcGFyZW50CisgICAgICAgIC8vIGJsb2NrIGZvcm1hdHRpbmcg
Y29udGV4dHMoQikuIEZsb2F0cyBpbiB0aGVzZSBpbmxpbmUgZm9ybWF0dGluZyBjb250ZXh0cyhB
KSBuZWVkIHRvIGJlIG1hcHBlZCB0byB0aGUgcGFyZW50LCBibG9jayBmb3JtYXR0aW5nIGNvbnRl
eHQoQikuCisgICAgICAgIGlmICgqZXNjYXBlVHlwZSA9PSBFc2NhcGVUeXBlOjpBY2Nlc3NQYXJl
bnRGb3JtYXR0aW5nQ29udGV4dCAmJiAmbGF5b3V0Qm94LmZvcm1hdHRpbmdDb250ZXh0Um9vdCgp
ID09ICZyb290KCkuZm9ybWF0dGluZ0NvbnRleHRSb290KCkpCisgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKworICAgICAgICAvLyA2LiBGaW5kaW5nIHRoZSBmaXJzdCBjb250YWluaW5nIGJsb2Nr
IHdpdGggZml4ZWQgaGVpZ2h0IHF1aXJrLiBTZWUgUXVpcmtzOjpoZWlnaHRWYWx1ZU9mTmVhcmVz
dENvbnRhaW5pbmdCbG9ja1dpdGhGaXhlZEhlaWdodAorICAgICAgICBpZiAoKmVzY2FwZVR5cGUg
PT0gRXNjYXBlVHlwZTo6QWNjZXNzQW5jZXN0b3JGb3JtYXR0aW5nQ29udGV4dCkgeworICAgICAg
ICAgICAgYXV0byYgdGFyZ2V0Rm9ybWF0dGluZ1Jvb3QgPSBsYXlvdXRCb3guZm9ybWF0dGluZ0Nv
bnRleHRSb290KCk7CisgICAgICAgICAgICBhdXRvKiBhbmNlc3RvckZvcm1hdHRpbmdDb250ZXh0
Um9vdCA9ICZyb290KCkuZm9ybWF0dGluZ0NvbnRleHRSb290KCk7CisgICAgICAgICAgICB3aGls
ZSAodHJ1ZSkgeworICAgICAgICAgICAgICAgIGlmICgmdGFyZ2V0Rm9ybWF0dGluZ1Jvb3QgPT0g
YW5jZXN0b3JGb3JtYXR0aW5nQ29udGV4dFJvb3QpCisgICAgICAgICAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICAgICAgICAgIGlmIChhbmNlc3RvckZvcm1hdHRpbmdDb250ZXh0Um9v
dC0+aXNJbml0aWFsQ29udGFpbmluZ0Jsb2NrKCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgICAgICAgICBhbmNlc3RvckZvcm1hdHRpbmdDb250ZXh0Um9vdCA9
ICZhbmNlc3RvckZvcm1hdHRpbmdDb250ZXh0Um9vdC0+Zm9ybWF0dGluZ0NvbnRleHRSb290KCk7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fTsKKyNlbmRpZgorICAgIEFTU0VSVChpc09rVG9BY2Nlc3NEaXNwbGF5Qm94KCkpOworICAgIHJl
dHVybiBsYXlvdXRTdGF0ZSgpLmRpc3BsYXlCb3hGb3JMYXlvdXRCb3gobGF5b3V0Qm94KTsKK30K
KwogI2lmbmRlZiBOREVCVUcKIHZvaWQgRm9ybWF0dGluZ0NvbnRleHQ6OnZhbGlkYXRlR2VvbWV0
cnlDb25zdHJhaW50c0FmdGVyTGF5b3V0KCkgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L0Zvcm1hdHRpbmdDb250ZXh0LmgKaW5kZXggOWVjMGZlODBjYTU4NjEwNjQwZTBmNDc0Y2ZiMGRl
NjY1MGRkYjFiMC4uMzUzYWQxOTYzNWNkZDNiOGU5NmM1ZTlkNmQ2MjUxMzY1NTg5M2RhNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmgKQEAgLTY5LDcgKzY5LDEy
IEBAIHB1YmxpYzoKICAgICBib29sIGlzSW5saW5lRm9ybWF0dGluZ0NvbnRleHQoKSBjb25zdCB7
IHJldHVybiByb290KCkuZXN0YWJsaXNoZXNJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCgpOyB9CiAg
ICAgYm9vbCBpc1RhYmxlRm9ybWF0dGluZ0NvbnRleHQoKSBjb25zdCB7IHJldHVybiByb290KCku
ZXN0YWJsaXNoZXNUYWJsZUZvcm1hdHRpbmdDb250ZXh0KCk7IH0KIAotICAgIERpc3BsYXk6OkJv
eCYgZGlzcGxheUJveEZvckxheW91dEJveChjb25zdCBCb3gmIGxheW91dEJveCkgY29uc3QgeyBy
ZXR1cm4gbGF5b3V0U3RhdGUoKS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGxheW91dEJveCk7IH0K
KyAgICBlbnVtIGNsYXNzIEVzY2FwZVR5cGUgeworICAgICAgICBBY2Nlc3NDaGlsZEZvcm1hdHRp
bmdDb250ZXh0LAorICAgICAgICBBY2Nlc3NQYXJlbnRGb3JtYXR0aW5nQ29udGV4dCwKKyAgICAg
ICAgQWNjZXNzQW5jZXN0b3JGb3JtYXR0aW5nQ29udGV4dAorICAgIH07CisgICAgRGlzcGxheTo6
Qm94JiBkaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGNvbnN0IEJveCYsIE9wdGlvbmFsPEVzY2FwZVR5
cGU+ID0gV1RGOjpudWxsb3B0KSBjb25zdDsKICAgICBib29sIGhhc0Rpc3BsYXlCb3goY29uc3Qg
Qm94JiBsYXlvdXRCb3gpIGNvbnN0IHsgcmV0dXJuIGxheW91dFN0YXRlKCkuaGFzRGlzcGxheUJv
eChsYXlvdXRCb3gpOyB9CiAKICAgICBjb25zdCBCb3gmIHJvb3QoKSBjb25zdCB7IHJldHVybiAq
bV9yb290OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0Nv
bnRleHRHZW9tZXRyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRl
eHRHZW9tZXRyeS5jcHAKaW5kZXggODY2YzJjOGQxOTEwYzI3ZDRhYjdlZDM1MTNhM2MzN2MzZjEz
MDFhZi4uYmFjZjM1Y2NiMjc3NTZhNGJmMzAxOGU0MDcwNWM4MTk2ZTExYjc4NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcApA
QCAtMTIwLDggKzEyMCw4IEBAIExheW91dFVuaXQgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5
Ojpjb250ZW50SGVpZ2h0Rm9yRm9ybWF0dGluZ0NvbnRleHRSb290KGNvCiAgICAgICAgIGJvdHRv
bSA9IGxpbmVCb3hlcy5sYXN0KCkubG9naWNhbEJvdHRvbSgpOwogICAgIH0gZWxzZSBpZiAoZm9y
bWF0dGluZ1Jvb3RDb250YWluZXIuZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRpbmdDb250ZXh0KCkg
fHwgbGF5b3V0Qm94LmlzRG9jdW1lbnRCb3goKSkgewogICAgICAgICBpZiAoZm9ybWF0dGluZ1Jv
b3RDb250YWluZXIuaGFzSW5GbG93Q2hpbGQoKSkgewotICAgICAgICAgICAgYXV0byYgZmlyc3RE
aXNwbGF5Qm94ID0gZm9ybWF0dGluZ0NvbnRleHQuZGlzcGxheUJveEZvckxheW91dEJveCgqZm9y
bWF0dGluZ1Jvb3RDb250YWluZXIuZmlyc3RJbkZsb3dDaGlsZCgpKTsKLSAgICAgICAgICAgIGF1
dG8mIGxhc3REaXNwbGF5Qm94ID0gZm9ybWF0dGluZ0NvbnRleHQuZGlzcGxheUJveEZvckxheW91
dEJveCgqZm9ybWF0dGluZ1Jvb3RDb250YWluZXIubGFzdEluRmxvd0NoaWxkKCkpOworICAgICAg
ICAgICAgYXV0byYgZmlyc3REaXNwbGF5Qm94ID0gZm9ybWF0dGluZ0NvbnRleHQuZGlzcGxheUJv
eEZvckxheW91dEJveCgqZm9ybWF0dGluZ1Jvb3RDb250YWluZXIuZmlyc3RJbkZsb3dDaGlsZCgp
LCBFc2NhcGVUeXBlOjpBY2Nlc3NDaGlsZEZvcm1hdHRpbmdDb250ZXh0KTsKKyAgICAgICAgICAg
IGF1dG8mIGxhc3REaXNwbGF5Qm94ID0gZm9ybWF0dGluZ0NvbnRleHQuZGlzcGxheUJveEZvckxh
eW91dEJveCgqZm9ybWF0dGluZ1Jvb3RDb250YWluZXIubGFzdEluRmxvd0NoaWxkKCksIEVzY2Fw
ZVR5cGU6OkFjY2Vzc0NoaWxkRm9ybWF0dGluZ0NvbnRleHQpOwogICAgICAgICAgICAgdG9wID0g
Zmlyc3REaXNwbGF5Qm94LnJlY3RXaXRoTWFyZ2luKCkudG9wKCk7CiAgICAgICAgICAgICBib3R0
b20gPSBsYXN0RGlzcGxheUJveC5yZWN0V2l0aE1hcmdpbigpLmJvdHRvbSgpOwogICAgICAgICB9
CkBAIC0yMDUsMTggKzIwNSwxOCBAQCBMYXlvdXRVbml0IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9t
ZXRyeTo6c3RhdGljVmVydGljYWxQb3NpdGlvbkZvck91dE9mRmxvd1Bvc2l0aQogICAgIExheW91
dFVuaXQgdG9wOwogICAgIGlmIChhdXRvKiBwcmV2aW91c0luRmxvd1NpYmxpbmcgPSBsYXlvdXRC
b3gucHJldmlvdXNJbkZsb3dTaWJsaW5nKCkpIHsKICAgICAgICAgLy8gQWRkIHNpYmxpbmcgb2Zm
c2V0Ci0gICAgICAgIGF1dG8mIHByZXZpb3VzSW5GbG93RGlzcGxheUJveCA9IGZvcm1hdHRpbmdD
b250ZXh0LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goKnByZXZpb3VzSW5GbG93U2libGluZyk7Cisg
ICAgICAgIGF1dG8mIHByZXZpb3VzSW5GbG93RGlzcGxheUJveCA9IGZvcm1hdHRpbmdDb250ZXh0
LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goKnByZXZpb3VzSW5GbG93U2libGluZywgRm9ybWF0dGlu
Z0NvbnRleHQ6OkVzY2FwZVR5cGU6OkFjY2Vzc0NoaWxkRm9ybWF0dGluZ0NvbnRleHQpOwogICAg
ICAgICB0b3AgKz0gcHJldmlvdXNJbkZsb3dEaXNwbGF5Qm94LmJvdHRvbSgpICsgcHJldmlvdXNJ
bkZsb3dEaXNwbGF5Qm94Lm5vbkNvbGxhcHNlZE1hcmdpbkFmdGVyKCk7CiAgICAgfSBlbHNlIHsK
ICAgICAgICAgQVNTRVJUKGxheW91dEJveC5wYXJlbnQoKSk7Ci0gICAgICAgIHRvcCA9IGZvcm1h
dHRpbmdDb250ZXh0LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goKmxheW91dEJveC5wYXJlbnQoKSku
Y29udGVudEJveFRvcCgpOworICAgICAgICB0b3AgPSBmb3JtYXR0aW5nQ29udGV4dC5kaXNwbGF5
Qm94Rm9yTGF5b3V0Qm94KCpsYXlvdXRCb3gucGFyZW50KCksIEZvcm1hdHRpbmdDb250ZXh0OjpF
c2NhcGVUeXBlOjpBY2Nlc3NDaGlsZEZvcm1hdHRpbmdDb250ZXh0KS5jb250ZW50Qm94VG9wKCk7
CiAgICAgfQogCiAgICAgLy8gUmVzb2x2ZSB0b3AgYWxsIHRoZSB3YXkgdXAgdG8gdGhlIGNvbnRh
aW5pbmcgYmxvY2suCiAgICAgYXV0byYgY29udGFpbmluZ0Jsb2NrID0gKmxheW91dEJveC5jb250
YWluaW5nQmxvY2soKTsKICAgICAvLyBTdGFydCB3aXRoIHRoZSBwYXJlbnQgc2luY2Ugd2UgcHJl
dGVuZCB0aGF0IHRoaXMgYm94IGlzIG5vcm1hbCBmbG93LgogICAgIGZvciAoYXV0byogY29udGFp
bmVyID0gbGF5b3V0Qm94LnBhcmVudCgpOyBjb250YWluZXIgIT0gJmNvbnRhaW5pbmdCbG9jazsg
Y29udGFpbmVyID0gY29udGFpbmVyLT5jb250YWluaW5nQmxvY2soKSkgewotICAgICAgICBhdXRv
JiBkaXNwbGF5Qm94ID0gZm9ybWF0dGluZ0NvbnRleHQuZGlzcGxheUJveEZvckxheW91dEJveCgq
Y29udGFpbmVyKTsKKyAgICAgICAgYXV0byYgZGlzcGxheUJveCA9IGZvcm1hdHRpbmdDb250ZXh0
LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goKmNvbnRhaW5lciwgRm9ybWF0dGluZ0NvbnRleHQ6OkVz
Y2FwZVR5cGU6OkFjY2Vzc0NoaWxkRm9ybWF0dGluZ0NvbnRleHQpOwogICAgICAgICAvLyBEaXNw
bGF5OjpCb3g6OnRvcCBpcyB0aGUgYm9yZGVyIGJveCB0b3AgcG9zaXRpb24gaW4gaXRzIGNvbnRh
aW5pbmcgYmxvY2sncyBjb29yZGluYXRlIHN5c3RlbS4KICAgICAgICAgdG9wICs9IGRpc3BsYXlC
b3gudG9wKCk7CiAgICAgICAgIEFTU0VSVCghY29udGFpbmVyLT5pc1Bvc2l0aW9uZWQoKSB8fCBs
YXlvdXRCb3guaXNGaXhlZFBvc2l0aW9uZWQoKSk7CkBAIC0yMzQsMTkgKzIzNCwxOSBAQCBMYXlv
dXRVbml0IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6c3RhdGljSG9yaXpvbnRhbFBvc2l0
aW9uRm9yT3V0T2ZGbG93UG9zaQogICAgIC8vIFN0YXJ0IHdpdGggdGhpcyBib3gncyBib3JkZXIg
Ym94IG9mZnNldCBmcm9tIHRoZSBwYXJlbnQncyBib3JkZXIgYm94LgogICAgIGF1dG8mIGZvcm1h
dHRpbmdDb250ZXh0ID0gdGhpcy0+Zm9ybWF0dGluZ0NvbnRleHQoKTsKICAgICBBU1NFUlQobGF5
b3V0Qm94LnBhcmVudCgpKTsKLSAgICBhdXRvIGxlZnQgPSBmb3JtYXR0aW5nQ29udGV4dC5kaXNw
bGF5Qm94Rm9yTGF5b3V0Qm94KCpsYXlvdXRCb3gucGFyZW50KCkpLmNvbnRlbnRCb3hMZWZ0KCk7
CisgICAgYXV0byBsZWZ0ID0gZm9ybWF0dGluZ0NvbnRleHQuZGlzcGxheUJveEZvckxheW91dEJv
eCgqbGF5b3V0Qm94LnBhcmVudCgpLCBGb3JtYXR0aW5nQ29udGV4dDo6RXNjYXBlVHlwZTo6QWNj
ZXNzQ2hpbGRGb3JtYXR0aW5nQ29udGV4dCkuY29udGVudEJveExlZnQoKTsKIAogICAgIC8vIFJl
c29sdmUgbGVmdCBhbGwgdGhlIHdheSB1cCB0byB0aGUgY29udGFpbmluZyBibG9jay4KICAgICBh
dXRvJiBjb250YWluaW5nQmxvY2sgPSAqbGF5b3V0Qm94LmNvbnRhaW5pbmdCbG9jaygpOwogICAg
IC8vIFN0YXJ0IHdpdGggdGhlIHBhcmVudCBzaW5jZSB3ZSBwcmV0ZW5kIHRoYXQgdGhpcyBib3gg
aXMgbm9ybWFsIGZsb3cuCiAgICAgZm9yIChhdXRvKiBjb250YWluZXIgPSBsYXlvdXRCb3gucGFy
ZW50KCk7IGNvbnRhaW5lciAhPSAmY29udGFpbmluZ0Jsb2NrOyBjb250YWluZXIgPSBjb250YWlu
ZXItPmNvbnRhaW5pbmdCbG9jaygpKSB7Ci0gICAgICAgIGF1dG8mIGRpc3BsYXlCb3ggPSBmb3Jt
YXR0aW5nQ29udGV4dC5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KCpjb250YWluZXIpOworICAgICAg
ICBhdXRvJiBkaXNwbGF5Qm94ID0gZm9ybWF0dGluZ0NvbnRleHQuZGlzcGxheUJveEZvckxheW91
dEJveCgqY29udGFpbmVyLCBGb3JtYXR0aW5nQ29udGV4dDo6RXNjYXBlVHlwZTo6QWNjZXNzQ2hp
bGRGb3JtYXR0aW5nQ29udGV4dCk7CiAgICAgICAgIC8vIERpc3BsYXk6OkJveDo6bGVmdCBpcyB0
aGUgYm9yZGVyIGJveCBsZWZ0IHBvc2l0aW9uIGluIGl0cyBjb250YWluaW5nIGJsb2NrJ3MgY29v
cmRpbmF0ZSBzeXN0ZW0uCiAgICAgICAgIGxlZnQgKz0gZGlzcGxheUJveC5sZWZ0KCk7CiAgICAg
ICAgIEFTU0VSVCghY29udGFpbmVyLT5pc1Bvc2l0aW9uZWQoKSB8fCBsYXlvdXRCb3guaXNGaXhl
ZFBvc2l0aW9uZWQoKSk7CiAgICAgfQogICAgIC8vIE1vdmUgdGhlIHN0YXRpYyBwb3NpdGlvbiBy
ZWxhdGl2ZSB0byB0aGUgcGFkZGluZyBib3guIFRoaXMgaXMgdmVyeSBzcGVjaWZpYyB0byBhYm9s
dXRlbHkgcG9zaXRpb25lZCBib3hlcy4KLSAgICBhdXRvIHBhZGRpbmdCb3hMZWZ0ID0gZm9ybWF0
dGluZ0NvbnRleHQuZGlzcGxheUJveEZvckxheW91dEJveChjb250YWluaW5nQmxvY2spLnBhZGRp
bmdCb3hMZWZ0KCk7CisgICAgYXV0byBwYWRkaW5nQm94TGVmdCA9IGZvcm1hdHRpbmdDb250ZXh0
LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goY29udGFpbmluZ0Jsb2NrLCBGb3JtYXR0aW5nQ29udGV4
dDo6RXNjYXBlVHlwZTo6QWNjZXNzQ2hpbGRGb3JtYXR0aW5nQ29udGV4dCkucGFkZGluZ0JveExl
ZnQoKTsKICAgICByZXR1cm4gbGVmdCAtIHBhZGRpbmdCb3hMZWZ0OwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHRRdWlya3MuY3BwIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0UXVpcmtzLmNwcAppbmRleCAyNWM0
ZmJjZDNiYzMyNTY5YWRiOGRmYjA5MzE1MmE3M2UzYzAxZjIyLi41NjUzOWUxNmM2MDRkNTY3MjY0
NWExOGMzMjEwZmVmODBiZmMwNzhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
Rm9ybWF0dGluZ0NvbnRleHRRdWlya3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9G
b3JtYXR0aW5nQ29udGV4dFF1aXJrcy5jcHAKQEAgLTUwLDkgKzUwLDkgQEAgTGF5b3V0VW5pdCBG
b3JtYXR0aW5nQ29udGV4dDo6UXVpcmtzOjpoZWlnaHRWYWx1ZU9mTmVhcmVzdENvbnRhaW5pbmdC
bG9ja1dpdGhGaXgKICAgICAgICAgLy8gSWYgdGhlIG9ubHkgZml4ZWQgdmFsdWUgYm94IHdlIGZp
bmQgaXMgdGhlIElDQiwgdGhlbiBpZ25vcmUgdGhlIGJvZHkgYW5kIHRoZSBkb2N1bWVudCAodmVy
dGljYWwpIG1hcmdpbiwgcGFkZGluZyBhbmQgYm9yZGVyLiBTbyBtdWNoIHF1aXJraW5lc3MuCiAg
ICAgICAgIC8vIC1hbmQgaXQncyB0b3RhbGx5IGluc2FuZSBiZWNhdXNlIG5vdyB3ZSBmcmVlbHkg
dHJhdmVsIGFjcm9zcyBmb3JtYXR0aW5nIGNvbnRleHQgYm91bmRhcmllcyBhbmQgY29tcHV0ZWQg
bWFyZ2lucyBhcmUgbm9uZXhpc3RlbnQuCiAgICAgICAgIGlmIChjb250YWluaW5nQmxvY2stPmlz
Qm9keUJveCgpIHx8IGNvbnRhaW5pbmdCbG9jay0+aXNEb2N1bWVudEJveCgpKSB7Ci0gICAgICAg
ICAgICBhdXRvJiBkaXNwbGF5Qm94ID0gZm9ybWF0dGluZ0NvbnRleHQuZGlzcGxheUJveEZvckxh
eW91dEJveCgqY29udGFpbmluZ0Jsb2NrKTsKKyAgICAgICAgICAgIGF1dG8mIGRpc3BsYXlCb3gg
PSBmb3JtYXR0aW5nQ29udGV4dC5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KCpjb250YWluaW5nQmxv
Y2ssIEZvcm1hdHRpbmdDb250ZXh0OjpFc2NhcGVUeXBlOjpBY2Nlc3NBbmNlc3RvckZvcm1hdHRp
bmdDb250ZXh0KTsKIAotICAgICAgICAgICAgYXV0byB1c2VkVmFsdWVzID0gVXNlZEhvcml6b250
YWxWYWx1ZXMgeyBmb3JtYXR0aW5nQ29udGV4dC5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KCpjb250
YWluaW5nQmxvY2stPmNvbnRhaW5pbmdCbG9jaygpKS5jb250ZW50Qm94V2lkdGgoKSB9OworICAg
ICAgICAgICAgYXV0byB1c2VkVmFsdWVzID0gVXNlZEhvcml6b250YWxWYWx1ZXMgeyBmb3JtYXR0
aW5nQ29udGV4dC5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KCpjb250YWluaW5nQmxvY2stPmNvbnRh
aW5pbmdCbG9jaygpLCBGb3JtYXR0aW5nQ29udGV4dDo6RXNjYXBlVHlwZTo6QWNjZXNzQW5jZXN0
b3JGb3JtYXR0aW5nQ29udGV4dCkuY29udGVudEJveFdpZHRoKCkgfTsKICAgICAgICAgICAgIGF1
dG8gdmVydGljYWxNYXJnaW4gPSBmb3JtYXR0aW5nQ29udGV4dC5nZW9tZXRyeSgpLmNvbXB1dGVk
VmVydGljYWxNYXJnaW4oKmNvbnRhaW5pbmdCbG9jaywgdXNlZFZhbHVlcyk7CiAgICAgICAgICAg
ICBhdXRvIHZlcnRpY2FsUGFkZGluZyA9IGRpc3BsYXlCb3gucGFkZGluZ1RvcCgpLnZhbHVlT3Io
MCkgKyBkaXNwbGF5Qm94LnBhZGRpbmdCb3R0b20oKS52YWx1ZU9yKDApOwogICAgICAgICAgICAg
YXV0byB2ZXJ0aWNhbEJvcmRlciA9IGRpc3BsYXlCb3guYm9yZGVyVG9wKCkgKyBkaXNwbGF5Qm94
LmJvcmRlckJvdHRvbSgpOwpAQCAtNjIsNyArNjIsNyBAQCBMYXlvdXRVbml0IEZvcm1hdHRpbmdD
b250ZXh0OjpRdWlya3M6OmhlaWdodFZhbHVlT2ZOZWFyZXN0Q29udGFpbmluZ0Jsb2NrV2l0aEZp
eAogICAgICAgICBjb250YWluaW5nQmxvY2sgPSBjb250YWluaW5nQmxvY2stPmNvbnRhaW5pbmdC
bG9jaygpOwogICAgIH0KICAgICAvLyBJbml0aWFsIGNvbnRhaW5pbmcgYmxvY2sgaGFzIHRvIGhh
dmUgYSBoZWlnaHQuCi0gICAgcmV0dXJuIGZvcm1hdHRpbmdDb250ZXh0LmRpc3BsYXlCb3hGb3JM
YXlvdXRCb3gobGF5b3V0Qm94LmluaXRpYWxDb250YWluaW5nQmxvY2soKSkuY29udGVudEJveCgp
LmhlaWdodCgpIC0gYm9keUFuZERvY3VtZW50VmVydGljYWxNYXJnaW5QYWRkaW5nQW5kQm9yZGVy
OworICAgIHJldHVybiBmb3JtYXR0aW5nQ29udGV4dC5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGxh
eW91dEJveC5pbml0aWFsQ29udGFpbmluZ0Jsb2NrKCksIEZvcm1hdHRpbmdDb250ZXh0OjpFc2Nh
cGVUeXBlOjpBY2Nlc3NBbmNlc3RvckZvcm1hdHRpbmdDb250ZXh0KS5jb250ZW50Qm94KCkuaGVp
Z2h0KCkgLSBib2R5QW5kRG9jdW1lbnRWZXJ0aWNhbE1hcmdpblBhZGRpbmdBbmRCb3JkZXI7CiB9
CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mbG9hdHMvRmxvYXRpbmdD
b250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mbG9hdHMvRmxvYXRpbmdDb250ZXh0
LmNwcAppbmRleCA2MDQ3OTYyOTNjMmNhNWU3MTEyM2ViMWViMTU2Njg5MDg4M2JjYjVmLi5hMDAz
N2JmNzQ2M2Q0NDE2MDYxNWZkZTliNTVjZmJkOWMxZmQ4MDgzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZmxvYXRzL0Zsb2F0aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Zsb2F0cy9GbG9hdGluZ0NvbnRleHQuY3BwCkBAIC00MjUsNyArNDI1LDcg
QEAgRmxvYXRpbmdDb250ZXh0OjpBYnNvbHV0ZUNvb3JkaW5hdGVWYWx1ZXNGb3JGbG9hdEF2b2lk
ZXIgRmxvYXRpbmdDb250ZXh0OjphYnNvbHUKICAgICBhdXRvIGRpc3BsYXlCb3ggPSBtYXBUb0Zs
b2F0aW5nU3RhdGVSb290KGZsb2F0QXZvaWRlcik7CiAKICAgICBpZiAoJmNvbnRhaW5pbmdCbG9j
ayA9PSAmZmxvYXRpbmdTdGF0ZSgpLnJvb3QoKSkgewotICAgICAgICBhdXRvIGNvbnRhaW5pbmdC
bG9ja0Rpc3BsYXlCb3ggPSBmb3JtYXR0aW5nQ29udGV4dCgpLmRpc3BsYXlCb3hGb3JMYXlvdXRC
b3goY29udGFpbmluZ0Jsb2NrKTsKKyAgICAgICAgYXV0byBjb250YWluaW5nQmxvY2tEaXNwbGF5
Qm94ID0gZm9ybWF0dGluZ0NvbnRleHQoKS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGNvbnRhaW5p
bmdCbG9jaywgRm9ybWF0dGluZ0NvbnRleHQ6OkVzY2FwZVR5cGU6OkFjY2Vzc1BhcmVudEZvcm1h
dHRpbmdDb250ZXh0KTsKICAgICAgICAgcmV0dXJuIHsgZGlzcGxheUJveCwgeyB9LCB7ICBjb250
YWluaW5nQmxvY2tEaXNwbGF5Qm94LmNvbnRlbnRCb3hMZWZ0KCksIGNvbnRhaW5pbmdCbG9ja0Rp
c3BsYXlCb3guY29udGVudEJveFJpZ2h0KCkgfSB9OwogICAgIH0KICAgICBhdXRvIGNvbnRhaW5p
bmdCbG9ja0Fic29sdXRlRGlzcGxheUJveCA9IG1hcFRvRmxvYXRpbmdTdGF0ZVJvb3QoY29udGFp
bmluZ0Jsb2NrKTsKQEAgLTQzNiwxMCArNDM2LDEwIEBAIEZsb2F0aW5nQ29udGV4dDo6QWJzb2x1
dGVDb29yZGluYXRlVmFsdWVzRm9yRmxvYXRBdm9pZGVyIEZsb2F0aW5nQ29udGV4dDo6YWJzb2x1
CiBEaXNwbGF5OjpCb3ggRmxvYXRpbmdDb250ZXh0OjptYXBUb0Zsb2F0aW5nU3RhdGVSb290KGNv
bnN0IEJveCYgZmxvYXRCb3gpIGNvbnN0CiB7CiAgICAgYXV0byYgZmxvYXRpbmdTdGF0ZVJvb3Qg
PSBmbG9hdGluZ1N0YXRlKCkucm9vdCgpOwotICAgIGF1dG8mIGRpc3BsYXlCb3ggPSBmb3JtYXR0
aW5nQ29udGV4dCgpLmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goZmxvYXRCb3gpOworICAgIGF1dG8m
IGRpc3BsYXlCb3ggPSBmb3JtYXR0aW5nQ29udGV4dCgpLmRpc3BsYXlCb3hGb3JMYXlvdXRCb3go
ZmxvYXRCb3gsIEZvcm1hdHRpbmdDb250ZXh0OjpFc2NhcGVUeXBlOjpBY2Nlc3NQYXJlbnRGb3Jt
YXR0aW5nQ29udGV4dCk7CiAgICAgYXV0byB0b3BMZWZ0ID0gZGlzcGxheUJveC50b3BMZWZ0KCk7
CiAgICAgZm9yIChhdXRvKiBjb250YWluaW5nQmxvY2sgPSBmbG9hdEJveC5jb250YWluaW5nQmxv
Y2soKTsgY29udGFpbmluZ0Jsb2NrICYmIGNvbnRhaW5pbmdCbG9jayAhPSAmZmxvYXRpbmdTdGF0
ZVJvb3Q7IGNvbnRhaW5pbmdCbG9jayA9IGNvbnRhaW5pbmdCbG9jay0+Y29udGFpbmluZ0Jsb2Nr
KCkpCi0gICAgICAgIHRvcExlZnQubW92ZUJ5KGZvcm1hdHRpbmdDb250ZXh0KCkuZGlzcGxheUJv
eEZvckxheW91dEJveCgqY29udGFpbmluZ0Jsb2NrKS50b3BMZWZ0KCkpOworICAgICAgICB0b3BM
ZWZ0Lm1vdmVCeShmb3JtYXR0aW5nQ29udGV4dCgpLmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goKmNv
bnRhaW5pbmdCbG9jaywgRm9ybWF0dGluZ0NvbnRleHQ6OkVzY2FwZVR5cGU6OkFjY2Vzc1BhcmVu
dEZvcm1hdHRpbmdDb250ZXh0KS50b3BMZWZ0KCkpOwogCiAgICAgYXV0byBtYXBwZWREaXNwbGF5
Qm94ID0gRGlzcGxheTo6Qm94KGRpc3BsYXlCb3gpOwogICAgIG1hcHBlZERpc3BsYXlCb3guc2V0
VG9wTGVmdCh0b3BMZWZ0KTsKQEAgLTQ0OSw5ICs0NDksOSBAQCBEaXNwbGF5OjpCb3ggRmxvYXRp
bmdDb250ZXh0OjptYXBUb0Zsb2F0aW5nU3RhdGVSb290KGNvbnN0IEJveCYgZmxvYXRCb3gpIGNv
bnN0CiBMYXlvdXRVbml0IEZsb2F0aW5nQ29udGV4dDo6bWFwVG9wVG9GbG9hdGluZ1N0YXRlUm9v
dChjb25zdCBCb3gmIGZsb2F0Qm94KSBjb25zdAogewogICAgIGF1dG8mIGZsb2F0aW5nU3RhdGVS
b290ID0gZmxvYXRpbmdTdGF0ZSgpLnJvb3QoKTsKLSAgICBhdXRvIHRvcCA9IGZvcm1hdHRpbmdD
b250ZXh0KCkuZGlzcGxheUJveEZvckxheW91dEJveChmbG9hdEJveCkudG9wKCk7CisgICAgYXV0
byB0b3AgPSBmb3JtYXR0aW5nQ29udGV4dCgpLmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goZmxvYXRC
b3gsIEZvcm1hdHRpbmdDb250ZXh0OjpFc2NhcGVUeXBlOjpBY2Nlc3NQYXJlbnRGb3JtYXR0aW5n
Q29udGV4dCkudG9wKCk7CiAgICAgZm9yIChhdXRvKiBjb250YWluZXIgPSBmbG9hdEJveC5jb250
YWluaW5nQmxvY2soKTsgY29udGFpbmVyICYmIGNvbnRhaW5lciAhPSAmZmxvYXRpbmdTdGF0ZVJv
b3Q7IGNvbnRhaW5lciA9IGNvbnRhaW5lci0+Y29udGFpbmluZ0Jsb2NrKCkpCi0gICAgICAgIHRv
cCArPSBmb3JtYXR0aW5nQ29udGV4dCgpLmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goKmNvbnRhaW5l
cikudG9wKCk7CisgICAgICAgIHRvcCArPSBmb3JtYXR0aW5nQ29udGV4dCgpLmRpc3BsYXlCb3hG
b3JMYXlvdXRCb3goKmNvbnRhaW5lciwgRm9ybWF0dGluZ0NvbnRleHQ6OkVzY2FwZVR5cGU6OkFj
Y2Vzc1BhcmVudEZvcm1hdHRpbmdDb250ZXh0KS50b3AoKTsKICAgICByZXR1cm4gdG9wOwogfQog
CkBAIC00NjMsNyArNDYzLDcgQEAgUG9pbnQgRmxvYXRpbmdDb250ZXh0OjptYXBQb2ludEZyb21G
b3JtYXR0aW5nQ29udGV4dFJvb3RUb0Zsb2F0aW5nU3RhdGVSb290KFBvaW4KICAgICAgICAgcmV0
dXJuIHBvc2l0aW9uOwogICAgIGF1dG8gbWFwcGVkUG9zaXRpb24gPSBwb3NpdGlvbjsKICAgICBm
b3IgKGF1dG8qIGNvbnRhaW5lciA9ICZmcm9tOyBjb250YWluZXIgJiYgY29udGFpbmVyICE9ICZ0
bzsgY29udGFpbmVyID0gY29udGFpbmVyLT5jb250YWluaW5nQmxvY2soKSkKLSAgICAgICAgbWFw
cGVkUG9zaXRpb24ubW92ZUJ5KGZvcm1hdHRpbmdDb250ZXh0KCkuZGlzcGxheUJveEZvckxheW91
dEJveCgqY29udGFpbmVyKS50b3BMZWZ0KCkpOworICAgICAgICBtYXBwZWRQb3NpdGlvbi5tb3Zl
QnkoZm9ybWF0dGluZ0NvbnRleHQoKS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KCpjb250YWluZXIs
IEZvcm1hdHRpbmdDb250ZXh0OjpFc2NhcGVUeXBlOjpBY2Nlc3NQYXJlbnRGb3JtYXR0aW5nQ29u
dGV4dCkudG9wTGVmdCgpKTsKICAgICByZXR1cm4gbWFwcGVkUG9zaXRpb247CiB9CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>