<?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>209381</bug_id>
          
          <creation_ts>2020-03-21 17:41:37 -0700</creation_ts>
          <short_desc>[LFC] Layout::Box::containingBlock should return a const ContainerBox&amp;</short_desc>
          <delta_ts>2020-03-22 07:02:44 -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>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>1632546</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2020-03-21 17:41:37 -0700</bug_when>
    <thetext>and not const ContainerBox*

Layout tree is immutable during layout, so it&apos;s guaranteed to have a valid containing block.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1632547</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-03-21 17:41:55 -0700</bug_when>
    <thetext>&lt;rdar://problem/60732278&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1632557</commentid>
    <comment_count>2</comment_count>
      <attachid>394188</attachid>
    <who name="alan">zalan</who>
    <bug_when>2020-03-21 18:38:42 -0700</bug_when>
    <thetext>Created attachment 394188
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1632628</commentid>
    <comment_count>3</comment_count>
      <attachid>394188</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-03-22 06:49:42 -0700</bug_when>
    <thetext>Comment on attachment 394188
Patch

nice</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1632631</commentid>
    <comment_count>4</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-03-22 07:02:44 -0700</bug_when>
    <thetext>Committed r258819: &lt;https://trac.webkit.org/changeset/258819&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 394188.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>394188</attachid>
            <date>2020-03-21 18:38:42 -0700</date>
            <delta_ts>2020-03-22 07:02:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209381-20200321183841.patch</filename>
            <type>text/plain</type>
            <size>42890</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4MDgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjA5NjNiNmIzODljZjVl
YzdhZjg3ZmMyNGJlMjJmYjNlODAyMGM3OS4uYzM0OTM3NWRjM2QyYzBkMGVjYzc0MjZjMmZkYzc3
MDdlZjU5ODVmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2IEBACisyMDIwLTAzLTIxICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ10gTGF5b3V0OjpCb3g6
OmNvbnRhaW5pbmdCbG9jayBzaG91bGQgcmV0dXJuIGEgY29uc3QgQ29udGFpbmVyQm94JgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5MzgxCisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS82MDczMjI3OD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBMYXlvdXQgdHJlZSBpcyBpbW11dGFibGUgZHVyaW5nIGxh
eW91dCwgc28gZXZlcnkgYm94IHNob3VsZCBiZSBhYmxlIHRvIHJldHVybiBhIHZhbGlkIGNvbnRh
aW5pbmcgYmxvY2sgKGV4Y2VwdCB0aGUgSUNCKS4KKyAgICAgICAgKFRoaXMgcGF0Y2ggYWxzbyBy
ZW1vdmVzIHRoZSB1bnVzZWQgaXNEZXNjZW5kYW50T2YoKSBmdW5jdGlvbiBhbmQgcmVuYW1lcyBp
c0Rlc2NlbmRhbnRPZkZvcm1hdHRpbmdSb290IHRvIGlzSW5Gb3JtYXR0aW5nQ29udGV4dE9mKS4K
KworICAgICAgICAqIGxheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXRPdXRPZkZsb3dDb250ZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6OnZhbGlkYXRlR2Vv
bWV0cnlDb25zdHJhaW50c0FmdGVyTGF5b3V0IGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvRm9y
bWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Omlz
SGVpZ2h0QXV0byk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0
OjpHZW9tZXRyeTo6Y29tcHV0ZWRIZWlnaHRWYWx1ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6c3RhdGljVmVydGljYWxQb3Np
dGlvbkZvck91dE9mRmxvd1Bvc2l0aW9uZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OnN0YXRpY0hvcml6b250YWxQb3NpdGlv
bkZvck91dE9mRmxvd1Bvc2l0aW9uZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9mRmxvd05vblJlcGxhY2VkSG9yaXpv
bnRhbEdlb21ldHJ5KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRl
eHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dSZXBsYWNlZEhvcml6b250YWxHZW9tZXRyeSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6
aW5GbG93UG9zaXRpb25lZFBvc2l0aW9uT2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQv
Rm9ybWF0dGluZ0NvbnRleHRRdWlya3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpG
b3JtYXR0aW5nQ29udGV4dDo6UXVpcmtzOjpoZWlnaHRWYWx1ZU9mTmVhcmVzdENvbnRhaW5pbmdC
bG9ja1dpdGhGaXhlZEhlaWdodCk6CisgICAgICAgICogbGF5b3V0L1ZlcmlmaWNhdGlvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Om91dHB1dE1pc21hdGNoaW5nQmxvY2tCb3hJbmZv
cm1hdGlvbklmTmVlZGVkKToKKyAgICAgICAgKiBsYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2Nr
Rm9ybWF0dGluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zv
cm1hdHRpbmdDb250ZXh0OjpsYXlvdXRJbkZsb3dDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6dXNlZEF2YWlsYWJsZVdpZHRoRm9yRmxv
YXRBdm9pZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29u
dGV4dDo6cHJlY29tcHV0ZVZlcnRpY2FsUG9zaXRpb25Gb3JBbmNlc3RvcnMpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpwcmVjb21wdXRlVmVydGlj
YWxQb3NpdGlvbkZvckJveEFuZEFuY2VzdG9ycyk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OnZlcnRpY2FsUG9zaXRpb25XaXRoTWFyZ2luIGNvbnN0
KToKKyAgICAgICAgKiBsYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRl
eHRHZW9tZXRyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGlu
Z0NvbnRleHQ6Okdlb21ldHJ5OjppbkZsb3dOb25SZXBsYWNlZFdpZHRoQW5kTWFyZ2luIGNvbnN0
KToKKyAgICAgICAgKiBsYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRl
eHRRdWlya3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdD
b250ZXh0OjpRdWlya3M6OnN0cmV0Y2hlZEluRmxvd0hlaWdodCk6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6OmluaXRpYWxDb250YWluaW5nQmxvY2spOiBEZWxldGVkLgorICAgICAgICAqIGxh
eW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tNYXJnaW5Db2xsYXBzZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Ok1hcmdpbkNvbGxhcHNlOjpt
YXJnaW5zQ29sbGFwc2VUaHJvdWdoIGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvYmxvY2tmb3Jt
YXR0aW5nL1ByZWNvbXB1dGVkQmxvY2tNYXJnaW5Db2xsYXBzZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Ok1hcmdpbkNvbGxhcHNlOjpwcmVj
b21wdXRlZFBvc2l0aXZlTmVnYXRpdmVWYWx1ZXMgY29uc3QpOgorICAgICAgICAqIGxheW91dC9k
aXNwbGF5dHJlZS9EaXNwbGF5UGFpbnRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
OjphYnNvbHV0ZURpc3BsYXlCb3gpOgorICAgICAgICAqIGxheW91dC9mbG9hdHMvRmxvYXRpbmdD
b250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6RmxvYXRpbmdDb250ZXh0Ojp2
ZXJ0aWNhbFBvc2l0aW9uV2l0aENsZWFyYW5jZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXQ6OkZsb2F0aW5nQ29udGV4dDo6YWJzb2x1dGVEaXNwbGF5Qm94Q29vcmRpbmF0ZXMgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGbG9hdGluZ0NvbnRleHQ6Om1hcFRvRmxv
YXRpbmdTdGF0ZVJvb3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGbG9hdGlu
Z0NvbnRleHQ6Om1hcFRvcFRvRmxvYXRpbmdTdGF0ZVJvb3QgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0OjpGbG9hdGluZ0NvbnRleHQ6Om1hcFBvaW50RnJvbUZvcm1hdHRpbmdDb250
ZXh0Um9vdFRvRmxvYXRpbmdTdGF0ZVJvb3QgY29uc3QpOgorICAgICAgICAqIGxheW91dC9mbG9h
dHMvRmxvYXRpbmdTdGF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZsb2F0aW5n
U3RhdGU6OmJvdHRvbSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZsb2F0aW5n
U3RhdGU6OnRvcCBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2Zsb2F0cy9GbG9hdGluZ1N0YXRl
Lmg6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZsb2F0aW5nU3RhdGU6OkZsb2F0SXRlbTo6
aXNJbkZvcm1hdHRpbmdDb250ZXh0T2YgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpGbG9hdGluZ1N0YXRlOjpGbG9hdEl0ZW06OmlzRGVzY2VuZGFudE9mRm9ybWF0dGluZ1Jvb3Qg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGxheW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJveDo6Y29udGFpbmluZ0Jsb2NrIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Qm94Ojpmb3JtYXR0aW5nQ29udGV4dFJvb3Qg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCb3g6OmlzSW5Gb3JtYXR0aW5nQ29u
dGV4dE9mIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Qm94Ojppc0Rlc2NlbmRh
bnRPZiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJveDo6aXND
b250YWluaW5nQmxvY2tEZXNjZW5kYW50T2YgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGxh
eW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5oOgorCiAyMDIwLTAzLTIwICBaYWxhbiBCdWp0YXMg
IDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgdGVsZXJpay5jb206IFBsYWNlaG9sZGVyIHRl
eHQgaXMgbWlzYWxpZ25lZCBpbiBzZWFyY2ggdGV4dCBib3gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvRm9ybWF0dGluZ0NvbnRleHQuY3BwCmluZGV4IDcxYTY5YzRlNjAwZDQxNGI3NDcyMTFkZDVl
Zjg2YzllODZjYjMxM2IuLmI2NzNlMzE5NmFkNjM3MDY5NmQ0YzdjZmE4ODU0MjRmOWIzNjBiYTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmNwcApAQCAtMTM5
LDE5ICsxMzksMTcgQEAgdm9pZCBGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0T3V0T2ZGbG93Q29u
dGVudChJbnZhbGlkYXRpb25TdGF0ZSYgaW52YWxpZGF0aW9uU3QKICAgICBjb2xsZWN0T3V0T2ZG
bG93RGVzY2VuZGFudHNJZk5lZWRlZCgpOwogCiAgICAgYXV0byBob3Jpem9udGFsQ29uc3RyYWlu
dHNGb3JMYXlvdXRCb3ggPSBbJl0gKGNvbnN0IGF1dG8mIG91dE9mRmxvd0JveCkgewotICAgICAg
ICBhdXRvKiBjb250YWluaW5nQmxvY2sgPSBvdXRPZkZsb3dCb3guY29udGFpbmluZ0Jsb2NrKCk7
Ci0gICAgICAgIEFTU0VSVChjb250YWluaW5nQmxvY2spOwotICAgICAgICBpZiAoY29udGFpbmlu
Z0Jsb2NrID09ICZyb290KCkpCisgICAgICAgIGF1dG8mIGNvbnRhaW5pbmdCbG9jayA9IG91dE9m
Rmxvd0JveC5jb250YWluaW5nQmxvY2soKTsKKyAgICAgICAgaWYgKCZjb250YWluaW5nQmxvY2sg
PT0gJnJvb3QoKSkKICAgICAgICAgICAgIHJldHVybiByb290SG9yaXpvbnRhbENvbnN0cmFpbnRz
OwotICAgICAgICByZXR1cm4gR2VvbWV0cnk6Omhvcml6b250YWxDb25zdHJhaW50c0Zvck91dE9m
RmxvdyhnZW9tZXRyeUZvckJveCgqY29udGFpbmluZ0Jsb2NrKSk7CisgICAgICAgIHJldHVybiBH
ZW9tZXRyeTo6aG9yaXpvbnRhbENvbnN0cmFpbnRzRm9yT3V0T2ZGbG93KGdlb21ldHJ5Rm9yQm94
KGNvbnRhaW5pbmdCbG9jaykpOwogICAgIH07CiAKICAgICBhdXRvIHZlcnRpY2FsQ29uc3RyYWlu
dHNGb3JMYXlvdXRCb3ggPSBbJl0gKGNvbnN0IGF1dG8mIG91dE9mRmxvd0JveCkgewotICAgICAg
ICBhdXRvKiBjb250YWluaW5nQmxvY2sgPSBvdXRPZkZsb3dCb3guY29udGFpbmluZ0Jsb2NrKCk7
Ci0gICAgICAgIEFTU0VSVChjb250YWluaW5nQmxvY2spOwotICAgICAgICBpZiAoY29udGFpbmlu
Z0Jsb2NrID09ICZyb290KCkpCisgICAgICAgIGF1dG8mIGNvbnRhaW5pbmdCbG9jayA9IG91dE9m
Rmxvd0JveC5jb250YWluaW5nQmxvY2soKTsKKyAgICAgICAgaWYgKCZjb250YWluaW5nQmxvY2sg
PT0gJnJvb3QoKSkKICAgICAgICAgICAgIHJldHVybiByb290VmVydGljYWxDb25zdHJhaW50czsK
LSAgICAgICAgcmV0dXJuIEdlb21ldHJ5Ojp2ZXJ0aWNhbENvbnN0cmFpbnRzRm9yT3V0T2ZGbG93
KGdlb21ldHJ5Rm9yQm94KCpjb250YWluaW5nQmxvY2spKTsKKyAgICAgICAgcmV0dXJuIEdlb21l
dHJ5Ojp2ZXJ0aWNhbENvbnN0cmFpbnRzRm9yT3V0T2ZGbG93KGdlb21ldHJ5Rm9yQm94KGNvbnRh
aW5pbmdCbG9jaykpOwogICAgIH07CiAKICAgICBmb3IgKGF1dG8mIG91dE9mRmxvd0JveCA6IGZv
cm1hdHRpbmdTdGF0ZSgpLm91dE9mRmxvd0JveGVzKCkpIHsKQEAgLTMwMyw3ICszMDEsNyBAQCB2
b2lkIEZvcm1hdHRpbmdDb250ZXh0Ojp2YWxpZGF0ZUdlb21ldHJ5Q29uc3RyYWludHNBZnRlckxh
eW91dCgpIGNvbnN0CiAgICAgZm9yIChhdXRvJiBsYXlvdXRCb3ggOiBkZXNjZW5kYW50c09mVHlw
ZTxCb3g+KGZvcm1hdHRpbmdDb250ZXh0Um9vdCkpIHsKICAgICAgICAgaWYgKCZsYXlvdXRCb3gu
Zm9ybWF0dGluZ0NvbnRleHRSb290KCkgIT0gJmZvcm1hdHRpbmdDb250ZXh0Um9vdCkKICAgICAg
ICAgICAgIGNvbnRpbnVlOwotICAgICAgICBhdXRvJiBjb250YWluaW5nQmxvY2tHZW9tZXRyeSA9
IGdlb21ldHJ5Rm9yQm94KCpsYXlvdXRCb3guY29udGFpbmluZ0Jsb2NrKCkpOworICAgICAgICBh
dXRvJiBjb250YWluaW5nQmxvY2tHZW9tZXRyeSA9IGdlb21ldHJ5Rm9yQm94KGxheW91dEJveC5j
b250YWluaW5nQmxvY2soKSk7CiAgICAgICAgIGF1dG8mIGJveEdlb21ldHJ5ID0gZ2VvbWV0cnlG
b3JCb3gobGF5b3V0Qm94KTsKIAogICAgICAgICAvLyAxMC4zLjMgQmxvY2stbGV2ZWwsIG5vbi1y
ZXBsYWNlZCBlbGVtZW50cyBpbiBub3JtYWwgZmxvdwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCmluZGV4IDZkMzYzMTkwYmEwZWM3
MjRjZjUyNTlkMjdjMTljMDY3NjAzNWJmM2EuLjJlMWU3MjczYjFhMWM2N2ViMThlNTJmMGQxMTJk
MDY0NzY2MGE1MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5n
Q29udGV4dEdlb21ldHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGlu
Z0NvbnRleHRHZW9tZXRyeS5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgc3RhdGljIGlubGluZSBib29s
IGlzSGVpZ2h0QXV0byhjb25zdCBCb3gmIGxheW91dEJveCkKICAgICAgICAgaWYgKGxheW91dEJv
eC5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgICAgICByZXR1cm4gIWxheW91dEJveC5jb250YWluaW5nQmxvY2soKS0+c3R5bGUoKS5sb2dp
Y2FsSGVpZ2h0KCkuaXNGaXhlZCgpOworICAgICAgICByZXR1cm4gIWxheW91dEJveC5jb250YWlu
aW5nQmxvY2soKS5zdHlsZSgpLmxvZ2ljYWxIZWlnaHQoKS5pc0ZpeGVkKCk7CiAgICAgfQogCiAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtNzYsNyArNzYsNyBAQCBPcHRpb25hbDxMYXlvdXRVbml0PiBG
b3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmNvbXB1dGVkSGVpZ2h0VmFsdWUoY29uc3QgQm94
JgogICAgICAgICBpZiAobGF5b3V0U3RhdGUoKS5pblF1aXJrc01vZGUoKSkKICAgICAgICAgICAg
IGNvbnRhaW5pbmdCbG9ja0hlaWdodCA9IGZvcm1hdHRpbmdDb250ZXh0KCkucXVpcmtzKCkuaGVp
Z2h0VmFsdWVPZk5lYXJlc3RDb250YWluaW5nQmxvY2tXaXRoRml4ZWRIZWlnaHQobGF5b3V0Qm94
KTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBhdXRvIGNvbnRhaW5pbmdCbG9ja0hlaWdo
dEZyb21TdHlsZSA9IGxheW91dEJveC5jb250YWluaW5nQmxvY2soKS0+c3R5bGUoKS5sb2dpY2Fs
SGVpZ2h0KCk7CisgICAgICAgICAgICBhdXRvIGNvbnRhaW5pbmdCbG9ja0hlaWdodEZyb21TdHls
ZSA9IGxheW91dEJveC5jb250YWluaW5nQmxvY2soKS5zdHlsZSgpLmxvZ2ljYWxIZWlnaHQoKTsK
ICAgICAgICAgICAgIGlmIChjb250YWluaW5nQmxvY2tIZWlnaHRGcm9tU3R5bGUuaXNGaXhlZCgp
KQogICAgICAgICAgICAgICAgIGNvbnRhaW5pbmdCbG9ja0hlaWdodCA9IExheW91dFVuaXQgeyBj
b250YWluaW5nQmxvY2tIZWlnaHRGcm9tU3R5bGUudmFsdWUoKSB9OwogICAgICAgICB9CkBAIC0y
MzgsMTMgKzIzOCwxMyBAQCBMYXlvdXRVbml0IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6
c3RhdGljVmVydGljYWxQb3NpdGlvbkZvck91dE9mRmxvd1Bvc2l0aQogICAgIH0KIAogICAgIC8v
IFJlc29sdmUgdG9wIGFsbCB0aGUgd2F5IHVwIHRvIHRoZSBjb250YWluaW5nIGJsb2NrLgotICAg
IGF1dG8mIGNvbnRhaW5pbmdCbG9jayA9ICpsYXlvdXRCb3guY29udGFpbmluZ0Jsb2NrKCk7Cisg
ICAgYXV0byYgY29udGFpbmluZ0Jsb2NrID0gbGF5b3V0Qm94LmNvbnRhaW5pbmdCbG9jaygpOwog
ICAgIC8vIFN0YXJ0IHdpdGggdGhlIHBhcmVudCBzaW5jZSB3ZSBwcmV0ZW5kIHRoYXQgdGhpcyBi
b3ggaXMgbm9ybWFsIGZsb3cuCi0gICAgZm9yIChhdXRvKiBjb250YWluZXJCb3ggPSBsYXlvdXRC
b3gucGFyZW50KCk7IGNvbnRhaW5lckJveCAhPSAmY29udGFpbmluZ0Jsb2NrOyBjb250YWluZXJC
b3ggPSBjb250YWluZXJCb3gtPmNvbnRhaW5pbmdCbG9jaygpKSB7Ci0gICAgICAgIGF1dG8mIGJv
eEdlb21ldHJ5ID0gZm9ybWF0dGluZ0NvbnRleHQuZ2VvbWV0cnlGb3JCb3goKmNvbnRhaW5lckJv
eCwgRXNjYXBlUmVhc29uOjpPdXRPZkZsb3dCb3hOZWVkc0luRmxvd0dlb21ldHJ5KTsKKyAgICBm
b3IgKGF1dG8qIGFuY2VzdG9yID0gbGF5b3V0Qm94LnBhcmVudCgpOyBhbmNlc3RvciAhPSAmY29u
dGFpbmluZ0Jsb2NrOyBhbmNlc3RvciA9ICZhbmNlc3Rvci0+Y29udGFpbmluZ0Jsb2NrKCkpIHsK
KyAgICAgICAgYXV0byYgYm94R2VvbWV0cnkgPSBmb3JtYXR0aW5nQ29udGV4dC5nZW9tZXRyeUZv
ckJveCgqYW5jZXN0b3IsIEVzY2FwZVJlYXNvbjo6T3V0T2ZGbG93Qm94TmVlZHNJbkZsb3dHZW9t
ZXRyeSk7CiAgICAgICAgIC8vIERpc3BsYXk6OkJveDo6dG9wIGlzIHRoZSBib3JkZXIgYm94IHRv
cCBwb3NpdGlvbiBpbiBpdHMgY29udGFpbmluZyBibG9jaydzIGNvb3JkaW5hdGUgc3lzdGVtLgog
ICAgICAgICB0b3AgKz0gYm94R2VvbWV0cnkudG9wKCk7Ci0gICAgICAgIEFTU0VSVCghY29udGFp
bmVyQm94LT5pc1Bvc2l0aW9uZWQoKSB8fCBsYXlvdXRCb3guaXNGaXhlZFBvc2l0aW9uZWQoKSk7
CisgICAgICAgIEFTU0VSVCghYW5jZXN0b3ItPmlzUG9zaXRpb25lZCgpIHx8IGxheW91dEJveC5p
c0ZpeGVkUG9zaXRpb25lZCgpKTsKICAgICB9CiAgICAgLy8gTW92ZSB0aGUgc3RhdGljIHBvc2l0
aW9uIHJlbGF0aXZlIHRvIHRoZSBwYWRkaW5nIGJveC4gVGhpcyBpcyB2ZXJ5IHNwZWNpZmljIHRv
IGFib2x1dGVseSBwb3NpdGlvbmVkIGJveGVzLgogICAgIHJldHVybiB0b3AgLSB2ZXJ0aWNhbENv
bnN0cmFpbnRzLmxvZ2ljYWxUb3A7CkBAIC0yNjEsMTMgKzI2MSwxMyBAQCBMYXlvdXRVbml0IEZv
cm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6c3RhdGljSG9yaXpvbnRhbFBvc2l0aW9uRm9yT3V0
T2ZGbG93UG9zaQogICAgIGF1dG8gbGVmdCA9IGZvcm1hdHRpbmdDb250ZXh0Lmdlb21ldHJ5Rm9y
Qm94KCpsYXlvdXRCb3gucGFyZW50KCksIEVzY2FwZVJlYXNvbjo6T3V0T2ZGbG93Qm94TmVlZHNJ
bkZsb3dHZW9tZXRyeSkuY29udGVudEJveExlZnQoKTsKIAogICAgIC8vIFJlc29sdmUgbGVmdCBh
bGwgdGhlIHdheSB1cCB0byB0aGUgY29udGFpbmluZyBibG9jay4KLSAgICBhdXRvJiBjb250YWlu
aW5nQmxvY2sgPSAqbGF5b3V0Qm94LmNvbnRhaW5pbmdCbG9jaygpOworICAgIGF1dG8mIGNvbnRh
aW5pbmdCbG9jayA9IGxheW91dEJveC5jb250YWluaW5nQmxvY2soKTsKICAgICAvLyBTdGFydCB3
aXRoIHRoZSBwYXJlbnQgc2luY2Ugd2UgcHJldGVuZCB0aGF0IHRoaXMgYm94IGlzIG5vcm1hbCBm
bG93LgotICAgIGZvciAoYXV0byogY29udGFpbmVyQm94ID0gbGF5b3V0Qm94LnBhcmVudCgpOyBj
b250YWluZXJCb3ggIT0gJmNvbnRhaW5pbmdCbG9jazsgY29udGFpbmVyQm94ID0gY29udGFpbmVy
Qm94LT5jb250YWluaW5nQmxvY2soKSkgewotICAgICAgICBhdXRvJiBib3hHZW9tZXRyeSA9IGZv
cm1hdHRpbmdDb250ZXh0Lmdlb21ldHJ5Rm9yQm94KCpjb250YWluZXJCb3gsIEVzY2FwZVJlYXNv
bjo6T3V0T2ZGbG93Qm94TmVlZHNJbkZsb3dHZW9tZXRyeSk7CisgICAgZm9yIChhdXRvKiBhbmNl
c3RvciA9IGxheW91dEJveC5wYXJlbnQoKTsgYW5jZXN0b3IgIT0gJmNvbnRhaW5pbmdCbG9jazsg
YW5jZXN0b3IgPSAmYW5jZXN0b3ItPmNvbnRhaW5pbmdCbG9jaygpKSB7CisgICAgICAgIGF1dG8m
IGJveEdlb21ldHJ5ID0gZm9ybWF0dGluZ0NvbnRleHQuZ2VvbWV0cnlGb3JCb3goKmFuY2VzdG9y
LCBFc2NhcGVSZWFzb246Ok91dE9mRmxvd0JveE5lZWRzSW5GbG93R2VvbWV0cnkpOwogICAgICAg
ICAvLyBEaXNwbGF5OjpCb3g6OmxlZnQgaXMgdGhlIGJvcmRlciBib3ggbGVmdCBwb3NpdGlvbiBp
biBpdHMgY29udGFpbmluZyBibG9jaydzIGNvb3JkaW5hdGUgc3lzdGVtLgogICAgICAgICBsZWZ0
ICs9IGJveEdlb21ldHJ5LmxlZnQoKTsKLSAgICAgICAgQVNTRVJUKCFjb250YWluZXJCb3gtPmlz
UG9zaXRpb25lZCgpIHx8IGxheW91dEJveC5pc0ZpeGVkUG9zaXRpb25lZCgpKTsKKyAgICAgICAg
QVNTRVJUKCFhbmNlc3Rvci0+aXNQb3NpdGlvbmVkKCkgfHwgbGF5b3V0Qm94LmlzRml4ZWRQb3Np
dGlvbmVkKCkpOwogICAgIH0KICAgICAvLyBNb3ZlIHRoZSBzdGF0aWMgcG9zaXRpb24gcmVsYXRp
dmUgdG8gdGhlIHBhZGRpbmcgYm94LiBUaGlzIGlzIHZlcnkgc3BlY2lmaWMgdG8gYWJvbHV0ZWx5
IHBvc2l0aW9uZWQgYm94ZXMuCiAgICAgcmV0dXJuIGxlZnQgLSBob3Jpem9udGFsQ29uc3RyYWlu
dHMubG9naWNhbExlZnQ7CkBAIC00NTEsNyArNDUxLDcgQEAgSG9yaXpvbnRhbEdlb21ldHJ5IEZv
cm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6b3V0T2ZGbG93Tm9uUmVwbGFjZWRIb3Jpem9udGFs
R2UKICAgICBhdXRvJiBzdHlsZSA9IGxheW91dEJveC5zdHlsZSgpOwogICAgIGF1dG8mIGJveEdl
b21ldHJ5ID0gZm9ybWF0dGluZ0NvbnRleHQuZ2VvbWV0cnlGb3JCb3gobGF5b3V0Qm94KTsKICAg
ICBhdXRvIGNvbnRhaW5pbmdCbG9ja1dpZHRoID0gaG9yaXpvbnRhbENvbnN0cmFpbnRzLmxvZ2lj
YWxXaWR0aDsKLSAgICBhdXRvIGlzTGVmdFRvUmlnaHREaXJlY3Rpb24gPSBsYXlvdXRCb3guY29u
dGFpbmluZ0Jsb2NrKCktPnN0eWxlKCkuaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpOworICAgIGF1
dG8gaXNMZWZ0VG9SaWdodERpcmVjdGlvbiA9IGxheW91dEJveC5jb250YWluaW5nQmxvY2soKS5z
dHlsZSgpLmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKTsKICAgICAKICAgICBhdXRvIGxlZnQgPSBj
b21wdXRlZFZhbHVlSWZOb3RBdXRvKHN0eWxlLmxvZ2ljYWxMZWZ0KCksIGNvbnRhaW5pbmdCbG9j
a1dpZHRoKTsKICAgICBhdXRvIHJpZ2h0ID0gY29tcHV0ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5s
b2dpY2FsUmlnaHQoKSwgY29udGFpbmluZ0Jsb2NrV2lkdGgpOwpAQCAtNjY0LDcgKzY2NCw3IEBA
IEhvcml6b250YWxHZW9tZXRyeSBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9mRmxv
d1JlcGxhY2VkSG9yaXpvbnRhbEdlb21lCiAgICAgYXV0byYgc3R5bGUgPSByZXBsYWNlZEJveC5z
dHlsZSgpOwogICAgIGF1dG8mIGJveEdlb21ldHJ5ID0gZm9ybWF0dGluZ0NvbnRleHQuZ2VvbWV0
cnlGb3JCb3gocmVwbGFjZWRCb3gpOwogICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrV2lkdGggPSBo
b3Jpem9udGFsQ29uc3RyYWludHMubG9naWNhbFdpZHRoOwotICAgIGF1dG8gaXNMZWZ0VG9SaWdo
dERpcmVjdGlvbiA9IHJlcGxhY2VkQm94LmNvbnRhaW5pbmdCbG9jaygpLT5zdHlsZSgpLmlzTGVm
dFRvUmlnaHREaXJlY3Rpb24oKTsKKyAgICBhdXRvIGlzTGVmdFRvUmlnaHREaXJlY3Rpb24gPSBy
ZXBsYWNlZEJveC5jb250YWluaW5nQmxvY2soKS5zdHlsZSgpLmlzTGVmdFRvUmlnaHREaXJlY3Rp
b24oKTsKIAogICAgIGF1dG8gbGVmdCA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5bGUubG9n
aWNhbExlZnQoKSwgY29udGFpbmluZ0Jsb2NrV2lkdGgpOwogICAgIGF1dG8gcmlnaHQgPSBjb21w
dXRlZFZhbHVlSWZOb3RBdXRvKHN0eWxlLmxvZ2ljYWxSaWdodCgpLCBjb250YWluaW5nQmxvY2tX
aWR0aCk7CkBAIC0xMDI1LDcgKzEwMjUsNyBAQCBMYXlvdXRTaXplIEZvcm1hdHRpbmdDb250ZXh0
OjpHZW9tZXRyeTo6aW5GbG93UG9zaXRpb25lZFBvc2l0aW9uT2Zmc2V0KGNvbnN0IEJveAogICAg
ICAgICByaWdodCA9IC0qbGVmdDsKICAgICB9IGVsc2UgewogICAgICAgICAvLyAjNAotICAgICAg
ICBhdXRvIGlzTGVmdFRvUmlnaHREaXJlY3Rpb24gPSBsYXlvdXRCb3guY29udGFpbmluZ0Jsb2Nr
KCktPnN0eWxlKCkuaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpOworICAgICAgICBhdXRvIGlzTGVm
dFRvUmlnaHREaXJlY3Rpb24gPSBsYXlvdXRCb3guY29udGFpbmluZ0Jsb2NrKCkuc3R5bGUoKS5p
c0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCk7CiAgICAgICAgIGlmIChpc0xlZnRUb1JpZ2h0RGlyZWN0
aW9uKQogICAgICAgICAgICAgcmlnaHQgPSAtKmxlZnQ7CiAgICAgICAgIGVsc2UKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dFF1aXJrcy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHRRdWlya3MuY3BwCmluZGV4IDQ5
OWRhMGY1ZDE5YjA5MzM0Y2FhZTY2MWFkYjFlZWE2ZTAyMzBlNmQuLjhjMjY2ZmUzODJhYmJiZTJk
MWYzNjRjMWQwNjA5ZDQ4ZWY5YmEyYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9Gb3JtYXR0aW5nQ29udGV4dFF1aXJrcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L0Zvcm1hdHRpbmdDb250ZXh0UXVpcmtzLmNwcApAQCAtMzksNyArMzksNyBAQCBMYXlvdXRVbml0
IEZvcm1hdHRpbmdDb250ZXh0OjpRdWlya3M6OmhlaWdodFZhbHVlT2ZOZWFyZXN0Q29udGFpbmlu
Z0Jsb2NrV2l0aEZpeAogICAgIC8vIEluIHF1aXJrcyBtb2RlLCB3ZSBnbyBhbmQgdHJhdmVycyB0
aGUgY29udGFpbmluZyBibG9jayBjaGFpbiB0byBmaW5kIGEgYmxvY2sgbGV2ZWwgYm94IHdpdGgg
Zml4ZWQgaGVpZ2h0IHZhbHVlLCBldmVuIGlmIGl0IG1lYW5zIGxlYXZpbmcKICAgICAvLyB0aGUg
Y3VycmVudCBmb3JtYXR0aW5nIGNvbnRleHQuIEZJWE1FOiBzdXJlbHkgd2UgbmVlZCB0byBkbyBz
b21lIHRyaWNrcyBoZXJlIHdoZW4gYmxvY2sgZGlyZWN0aW9uIHN1cHBvcnQgaXMgYWRkZWQuCiAg
ICAgYXV0byYgZm9ybWF0dGluZ0NvbnRleHQgPSB0aGlzLT5mb3JtYXR0aW5nQ29udGV4dCgpOwot
ICAgIGF1dG8qIGNvbnRhaW5pbmdCbG9jayA9IGxheW91dEJveC5jb250YWluaW5nQmxvY2soKTsK
KyAgICBhdXRvKiBjb250YWluaW5nQmxvY2sgPSAmbGF5b3V0Qm94LmNvbnRhaW5pbmdCbG9jaygp
OwogICAgIExheW91dFVuaXQgYm9keUFuZERvY3VtZW50VmVydGljYWxNYXJnaW5QYWRkaW5nQW5k
Qm9yZGVyOwogICAgIHdoaWxlIChjb250YWluaW5nQmxvY2spIHsKICAgICAgICAgYXV0byBjb250
YWluaW5nQmxvY2tIZWlnaHQgPSBjb250YWluaW5nQmxvY2stPnN0eWxlKCkubG9naWNhbEhlaWdo
dCgpOwpAQCAtNTEsNyArNTEsNyBAQCBMYXlvdXRVbml0IEZvcm1hdHRpbmdDb250ZXh0OjpRdWly
a3M6OmhlaWdodFZhbHVlT2ZOZWFyZXN0Q29udGFpbmluZ0Jsb2NrV2l0aEZpeAogICAgICAgICBp
ZiAoY29udGFpbmluZ0Jsb2NrLT5pc0JvZHlCb3goKSB8fCBjb250YWluaW5nQmxvY2stPmlzRG9j
dW1lbnRCb3goKSkgewogICAgICAgICAgICAgYXV0byYgYm94R2VvbWV0cnkgPSBmb3JtYXR0aW5n
Q29udGV4dC5nZW9tZXRyeUZvckJveCgqY29udGFpbmluZ0Jsb2NrLCBGb3JtYXR0aW5nQ29udGV4
dDo6RXNjYXBlUmVhc29uOjpGaW5kRml4ZWRIZWlnaHRBbmNlc3RvclF1aXJrKTsKIAotICAgICAg
ICAgICAgYXV0byYgY29udGFpbmluZ0Jsb2NrRGlzcGxheUJveCA9IGZvcm1hdHRpbmdDb250ZXh0
Lmdlb21ldHJ5Rm9yQm94KCpjb250YWluaW5nQmxvY2stPmNvbnRhaW5pbmdCbG9jaygpLCBGb3Jt
YXR0aW5nQ29udGV4dDo6RXNjYXBlUmVhc29uOjpGaW5kRml4ZWRIZWlnaHRBbmNlc3RvclF1aXJr
KTsKKyAgICAgICAgICAgIGF1dG8mIGNvbnRhaW5pbmdCbG9ja0Rpc3BsYXlCb3ggPSBmb3JtYXR0
aW5nQ29udGV4dC5nZW9tZXRyeUZvckJveChjb250YWluaW5nQmxvY2stPmNvbnRhaW5pbmdCbG9j
aygpLCBGb3JtYXR0aW5nQ29udGV4dDo6RXNjYXBlUmVhc29uOjpGaW5kRml4ZWRIZWlnaHRBbmNl
c3RvclF1aXJrKTsKICAgICAgICAgICAgIGF1dG8gaG9yaXpvbnRhbENvbnN0cmFpbnRzID0gR2Vv
bWV0cnk6Omhvcml6b250YWxDb25zdHJhaW50c0ZvckluRmxvdyhjb250YWluaW5nQmxvY2tEaXNw
bGF5Qm94KTsKICAgICAgICAgICAgIGF1dG8gdmVydGljYWxNYXJnaW4gPSBmb3JtYXR0aW5nQ29u
dGV4dC5nZW9tZXRyeSgpLmNvbXB1dGVkVmVydGljYWxNYXJnaW4oKmNvbnRhaW5pbmdCbG9jaywg
aG9yaXpvbnRhbENvbnN0cmFpbnRzKTsKICAgICAgICAgICAgIGF1dG8gdmVydGljYWxQYWRkaW5n
ID0gYm94R2VvbWV0cnkucGFkZGluZ1RvcCgpLnZhbHVlT3IoMCkgKyBib3hHZW9tZXRyeS5wYWRk
aW5nQm90dG9tKCkudmFsdWVPcigwKTsKQEAgLTU5LDcgKzU5LDkgQEAgTGF5b3V0VW5pdCBGb3Jt
YXR0aW5nQ29udGV4dDo6UXVpcmtzOjpoZWlnaHRWYWx1ZU9mTmVhcmVzdENvbnRhaW5pbmdCbG9j
a1dpdGhGaXgKICAgICAgICAgICAgIGJvZHlBbmREb2N1bWVudFZlcnRpY2FsTWFyZ2luUGFkZGlu
Z0FuZEJvcmRlciArPSB2ZXJ0aWNhbE1hcmdpbi5iZWZvcmUudmFsdWVPcigwKSArIHZlcnRpY2Fs
TWFyZ2luLmFmdGVyLnZhbHVlT3IoMCkgKyB2ZXJ0aWNhbFBhZGRpbmcgKyB2ZXJ0aWNhbEJvcmRl
cjsKICAgICAgICAgfQogCi0gICAgICAgIGNvbnRhaW5pbmdCbG9jayA9IGNvbnRhaW5pbmdCbG9j
ay0+Y29udGFpbmluZ0Jsb2NrKCk7CisgICAgICAgIGlmIChjb250YWluaW5nQmxvY2stPmlzSW5p
dGlhbENvbnRhaW5pbmdCbG9jaygpKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNvbnRh
aW5pbmdCbG9jayA9ICZjb250YWluaW5nQmxvY2stPmNvbnRhaW5pbmdCbG9jaygpOwogICAgIH0K
ICAgICAvLyBJbml0aWFsIGNvbnRhaW5pbmcgYmxvY2sgaGFzIHRvIGhhdmUgYSBoZWlnaHQuCiAg
ICAgcmV0dXJuIGZvcm1hdHRpbmdDb250ZXh0Lmdlb21ldHJ5Rm9yQm94KGxheW91dEJveC5pbml0
aWFsQ29udGFpbmluZ0Jsb2NrKCksIEZvcm1hdHRpbmdDb250ZXh0OjpFc2NhcGVSZWFzb246OkZp
bmRGaXhlZEhlaWdodEFuY2VzdG9yUXVpcmspLmNvbnRlbnRCb3goKS5oZWlnaHQoKSAtIGJvZHlB
bmREb2N1bWVudFZlcnRpY2FsTWFyZ2luUGFkZGluZ0FuZEJvcmRlcjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9WZXJpZmljYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L1ZlcmlmaWNhdGlvbi5jcHAKaW5kZXggMGRlMTA2ZjY4ZTVkYzI5YzAxNTZhMjdmNzI0NWU4
NTA0ZTMyODY4MC4uM2FmYTU5ZGY1ZmIzYTMxZGI1ZTUyZWY1YWQwM2U3Y2FmMDBjZjM5ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L1ZlcmlmaWNhdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L1ZlcmlmaWNhdGlvbi5jcHAKQEAgLTI1MSw3ICsyNTEsNyBAQCBz
dGF0aWMgYm9vbCBvdXRwdXRNaXNtYXRjaGluZ0Jsb2NrQm94SW5mb3JtYXRpb25JZk5lZWRlZChU
ZXh0U3RyZWFtJiBzdHJlYW0sIGNvbgogICAgIGlmIChsYXlvdXRCb3guaXNUYWJsZUJveCgpKSB7
CiAgICAgICAgIC8vIFdoZW4gdGhlIDx0YWJsZT4gaXMgb3V0LW9mLWZsb3cgcG9zaXRpb25lZCwg
dGhlIHdyYXBwZXIgdGFibGUgYm94IGhhcyB0aGUgb2Zmc2V0CiAgICAgICAgIC8vIHdoaWxlIHRo
ZSBhY3R1YWwgdGFibGUgYm94IGlzIHN0YXRpYywgaW5mbG93LgotICAgICAgICBhdXRvJiB0YWJs
ZVdyYXBwZXJEaXNwbGF5Qm94ID0gY29udGV4dC5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KCpsYXlv
dXRCb3guY29udGFpbmluZ0Jsb2NrKCkpOworICAgICAgICBhdXRvJiB0YWJsZVdyYXBwZXJEaXNw
bGF5Qm94ID0gY29udGV4dC5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGxheW91dEJveC5jb250YWlu
aW5nQmxvY2soKSk7CiAgICAgICAgIGRpc3BsYXlCb3gubW92ZUJ5KHRhYmxlV3JhcHBlckRpc3Bs
YXlCb3gudG9wTGVmdCgpKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuY3Bw
CmluZGV4IDQ4MWFmY2RjYmYyYmE5NGNmYjRhYzZlMzU3MGEwMzE3MDAzZTA5NGQuLjg3OTUxOGQ1
ZWU2NGE4MmIyNjhiN2QwN2FlYTNiYTI3N2QzYmRhMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdD
b250ZXh0LmNwcApAQCAtOTEsMTkgKzkxLDE3IEBAIHZvaWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4
dDo6bGF5b3V0SW5GbG93Q29udGVudChJbnZhbGlkYXRpb25TdGF0ZSYgaW52YWxpZGF0aW9uCiAg
ICAgfTsKIAogICAgIGF1dG8gaG9yaXpvbnRhbENvbnN0cmFpbnRzRm9yTGF5b3V0Qm94ID0gWyZd
IChjb25zdCBhdXRvJiBsYXlvdXRCb3gpIHsKLSAgICAgICAgYXV0byogY29udGFpbmluZ0Jsb2Nr
ID0gbGF5b3V0Qm94LmNvbnRhaW5pbmdCbG9jaygpOwotICAgICAgICBBU1NFUlQoY29udGFpbmlu
Z0Jsb2NrKTsKLSAgICAgICAgaWYgKGNvbnRhaW5pbmdCbG9jayA9PSAmZm9ybWF0dGluZ1Jvb3Qp
CisgICAgICAgIGF1dG8mIGNvbnRhaW5pbmdCbG9jayA9IGxheW91dEJveC5jb250YWluaW5nQmxv
Y2soKTsKKyAgICAgICAgaWYgKCZjb250YWluaW5nQmxvY2sgPT0gJmZvcm1hdHRpbmdSb290KQog
ICAgICAgICAgICAgcmV0dXJuIHJvb3RIb3Jpem9udGFsQ29uc3RyYWludHM7Ci0gICAgICAgIHJl
dHVybiBHZW9tZXRyeTo6aG9yaXpvbnRhbENvbnN0cmFpbnRzRm9ySW5GbG93KGdlb21ldHJ5Rm9y
Qm94KCpjb250YWluaW5nQmxvY2spKTsKKyAgICAgICAgcmV0dXJuIEdlb21ldHJ5Ojpob3Jpem9u
dGFsQ29uc3RyYWludHNGb3JJbkZsb3coZ2VvbWV0cnlGb3JCb3goY29udGFpbmluZ0Jsb2NrKSk7
CiAgICAgfTsKIAogICAgIGF1dG8gdmVydGljYWxDb25zdHJhaW50c0ZvckxheW91dEJveCA9IFsm
XSAoY29uc3QgYXV0byYgbGF5b3V0Qm94KSB7Ci0gICAgICAgIGF1dG8qIGNvbnRhaW5pbmdCbG9j
ayA9IGxheW91dEJveC5jb250YWluaW5nQmxvY2soKTsKLSAgICAgICAgQVNTRVJUKGNvbnRhaW5p
bmdCbG9jayk7Ci0gICAgICAgIGlmIChjb250YWluaW5nQmxvY2sgPT0gJmZvcm1hdHRpbmdSb290
KQorICAgICAgICBhdXRvJiBjb250YWluaW5nQmxvY2sgPSBsYXlvdXRCb3guY29udGFpbmluZ0Js
b2NrKCk7CisgICAgICAgIGlmICgmY29udGFpbmluZ0Jsb2NrID09ICZmb3JtYXR0aW5nUm9vdCkK
ICAgICAgICAgICAgIHJldHVybiByb290VmVydGljYWxDb25zdHJhaW50czsKLSAgICAgICAgcmV0
dXJuIEdlb21ldHJ5Ojp2ZXJ0aWNhbENvbnN0cmFpbnRzRm9ySW5GbG93KGdlb21ldHJ5Rm9yQm94
KCpjb250YWluaW5nQmxvY2spKTsKKyAgICAgICAgcmV0dXJuIEdlb21ldHJ5Ojp2ZXJ0aWNhbENv
bnN0cmFpbnRzRm9ySW5GbG93KGdlb21ldHJ5Rm9yQm94KGNvbnRhaW5pbmdCbG9jaykpOwogICAg
IH07CiAKICAgICAvLyBUaGlzIGlzIGEgcG9zdC1vcmRlciB0cmVlIHRyYXZlcnNhbCBsYXlvdXQu
CkBAIC0yMTEsMTAgKzIwOSwxMCBAQCBPcHRpb25hbDxMYXlvdXRVbml0PiBCbG9ja0Zvcm1hdHRp
bmdDb250ZXh0Ojp1c2VkQXZhaWxhYmxlV2lkdGhGb3JGbG9hdEF2b2lkZXIoYwogCiAgICAgYXV0
byBtYXBMb2dpY2FsVG9wVG9Gb3JtYXR0aW5nQ29udGV4dFJvb3QgPSBbJl0gewogICAgICAgICBh
dXRvJiBmb3JtYXR0aW5nQ29udGV4dFJvb3QgPSByb290KCk7Ci0gICAgICAgIEFTU0VSVChsYXlv
dXRCb3guaXNDb250YWluaW5nQmxvY2tEZXNjZW5kYW50T2YoZm9ybWF0dGluZ0NvbnRleHRSb290
KSk7CisgICAgICAgIEFTU0VSVChsYXlvdXRCb3guaXNJbkZvcm1hdHRpbmdDb250ZXh0T2YoZm9y
bWF0dGluZ0NvbnRleHRSb290KSk7CiAgICAgICAgIGF1dG8gdG9wID0gZ2VvbWV0cnlGb3JCb3go
bGF5b3V0Qm94KS50b3AoKTsKLSAgICAgICAgZm9yIChhdXRvKiBjb250YWluZXJCb3ggPSBsYXlv
dXRCb3guY29udGFpbmluZ0Jsb2NrKCk7IGNvbnRhaW5lckJveCAmJiBjb250YWluZXJCb3ggIT0g
JmZvcm1hdHRpbmdDb250ZXh0Um9vdDsgY29udGFpbmVyQm94ID0gY29udGFpbmVyQm94LT5jb250
YWluaW5nQmxvY2soKSkKLSAgICAgICAgICAgIHRvcCArPSBnZW9tZXRyeUZvckJveCgqY29udGFp
bmVyQm94KS50b3AoKTsKKyAgICAgICAgZm9yIChhdXRvKiBhbmNlc3RvciA9ICZsYXlvdXRCb3gu
Y29udGFpbmluZ0Jsb2NrKCk7IGFuY2VzdG9yICE9ICZmb3JtYXR0aW5nQ29udGV4dFJvb3Q7IGFu
Y2VzdG9yID0gJmFuY2VzdG9yLT5jb250YWluaW5nQmxvY2soKSkKKyAgICAgICAgICAgIHRvcCAr
PSBnZW9tZXRyeUZvckJveCgqYW5jZXN0b3IpLnRvcCgpOwogICAgICAgICByZXR1cm4gdG9wOwog
ICAgIH07CiAKQEAgLTI1OSw3ICsyNTcsNyBAQCB2b2lkIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6
OmNvbXB1dGVTdGF0aWNIb3Jpem9udGFsUG9zaXRpb24oY29uc3QgQm94JiBsYXlvdXRCbwogdm9p
ZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpwcmVjb21wdXRlVmVydGljYWxQb3NpdGlvbkZvckFu
Y2VzdG9ycyhjb25zdCBCb3gmIGxheW91dEJveCwgY29uc3QgQ29uc3RyYWludHNQYWlyPEhvcml6
b250YWxDb25zdHJhaW50cz4mIGhvcml6b250YWxDb25zdHJhaW50cywgY29uc3QgQ29uc3RyYWlu
dHNQYWlyPFZlcnRpY2FsQ29uc3RyYWludHM+JiB2ZXJ0aWNhbENvbnN0cmFpbnRzKQogewogICAg
IEFTU0VSVChsYXlvdXRCb3guaXNGbG9hdEF2b2lkZXIoKSk7Ci0gICAgcHJlY29tcHV0ZVZlcnRp
Y2FsUG9zaXRpb25Gb3JCb3hBbmRBbmNlc3RvcnMoKmxheW91dEJveC5jb250YWluaW5nQmxvY2so
KSwgaG9yaXpvbnRhbENvbnN0cmFpbnRzLCB2ZXJ0aWNhbENvbnN0cmFpbnRzKTsKKyAgICBwcmVj
b21wdXRlVmVydGljYWxQb3NpdGlvbkZvckJveEFuZEFuY2VzdG9ycyhsYXlvdXRCb3guY29udGFp
bmluZ0Jsb2NrKCksIGhvcml6b250YWxDb25zdHJhaW50cywgdmVydGljYWxDb25zdHJhaW50cyk7
CiB9CiAKIHZvaWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6cHJlY29tcHV0ZVZlcnRpY2FsUG9z
aXRpb25Gb3JCb3hBbmRBbmNlc3RvcnMoY29uc3QgQm94JiBsYXlvdXRCb3gsIGNvbnN0IENvbnN0
cmFpbnRzUGFpcjxIb3Jpem9udGFsQ29uc3RyYWludHM+JiBob3Jpem9udGFsQ29uc3RyYWludHMs
IGNvbnN0IENvbnN0cmFpbnRzUGFpcjxWZXJ0aWNhbENvbnN0cmFpbnRzPiYgdmVydGljYWxDb25z
dHJhaW50cykKQEAgLTI3NCwxNCArMjcyLDE0IEBAIHZvaWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4
dDo6cHJlY29tcHV0ZVZlcnRpY2FsUG9zaXRpb25Gb3JCb3hBbmRBbmNlc3RvcnMoY29uc3QKICAg
ICAvLwogICAgIC8vIFRoZSBpZGVhIGhlcmUgaXMgdGhhdCBhcyBsb25nIGFzIHdlIGRvbid0IGNy
b3NzIHRoZSBibG9jayBmb3JtYXR0aW5nIGNvbnRleHQgYm91bmRhcnksIHdlIHNob3VsZCBiZSBh
YmxlIHRvIHByZS1jb21wdXRlIHRoZSBmaW5hbCB0b3AgcG9zaXRpb24uCiAgICAgLy8gRklYTUU6
IHdlIGN1cnJlbnRseSBkb24ndCBhY2NvdW50IGZvciB0aGUgImNsZWFyIiBwcm9wZXJ0eSB3aGVu
IGNvbXB1dGluZyB0aGUgZmluYWwgcG9zaXRpb24gZm9yIGFuIGFuY2VzdG9yLgotICAgIGZvciAo
YXV0byogYW5jZXN0b3IgPSAmbGF5b3V0Qm94OyBhbmNlc3RvciAmJiBhbmNlc3RvciAhPSAmcm9v
dCgpOyBhbmNlc3RvciA9IGFuY2VzdG9yLT5jb250YWluaW5nQmxvY2soKSkgeworICAgIGZvciAo
YXV0byogYW5jZXN0b3IgPSAmbGF5b3V0Qm94OyBhbmNlc3RvciAmJiBhbmNlc3RvciAhPSAmcm9v
dCgpOyBhbmNlc3RvciA9ICZhbmNlc3Rvci0+Y29udGFpbmluZ0Jsb2NrKCkpIHsKICAgICAgICAg
YXV0byBob3Jpem9udGFsQ29uc3RyYWludHNGb3JBbmNlc3RvciA9IFsmXSB7Ci0gICAgICAgICAg
ICBhdXRvKiBjb250YWluaW5nQmxvY2sgPSBhbmNlc3Rvci0+Y29udGFpbmluZ0Jsb2NrKCk7Ci0g
ICAgICAgICAgICByZXR1cm4gY29udGFpbmluZ0Jsb2NrID09ICZyb290KCkgPyBob3Jpem9udGFs
Q29uc3RyYWludHMucm9vdCA6IEdlb21ldHJ5Ojpob3Jpem9udGFsQ29uc3RyYWludHNGb3JJbkZs
b3coZ2VvbWV0cnlGb3JCb3goKmNvbnRhaW5pbmdCbG9jaykpOworICAgICAgICAgICAgYXV0byYg
Y29udGFpbmluZ0Jsb2NrID0gYW5jZXN0b3ItPmNvbnRhaW5pbmdCbG9jaygpOworICAgICAgICAg
ICAgcmV0dXJuICZjb250YWluaW5nQmxvY2sgPT0gJnJvb3QoKSA/IGhvcml6b250YWxDb25zdHJh
aW50cy5yb290IDogR2VvbWV0cnk6Omhvcml6b250YWxDb25zdHJhaW50c0ZvckluRmxvdyhnZW9t
ZXRyeUZvckJveChjb250YWluaW5nQmxvY2spKTsKICAgICAgICAgfTsKICAgICAgICAgYXV0byB2
ZXJ0aWNhbENvbnN0cmFpbnRzRm9yQW5jZXN0b3IgPSBbJl0gewotICAgICAgICAgICAgYXV0byog
Y29udGFpbmluZ0Jsb2NrID0gYW5jZXN0b3ItPmNvbnRhaW5pbmdCbG9jaygpOwotICAgICAgICAg
ICAgcmV0dXJuIGNvbnRhaW5pbmdCbG9jayA9PSAmcm9vdCgpID8gdmVydGljYWxDb25zdHJhaW50
cy5yb290IDogR2VvbWV0cnk6OnZlcnRpY2FsQ29uc3RyYWludHNGb3JJbkZsb3coZ2VvbWV0cnlG
b3JCb3goKmNvbnRhaW5pbmdCbG9jaykpOworICAgICAgICAgICAgYXV0byYgY29udGFpbmluZ0Js
b2NrID0gYW5jZXN0b3ItPmNvbnRhaW5pbmdCbG9jaygpOworICAgICAgICAgICAgcmV0dXJuICZj
b250YWluaW5nQmxvY2sgPT0gJnJvb3QoKSA/IHZlcnRpY2FsQ29uc3RyYWludHMucm9vdCA6IEdl
b21ldHJ5Ojp2ZXJ0aWNhbENvbnN0cmFpbnRzRm9ySW5GbG93KGdlb21ldHJ5Rm9yQm94KGNvbnRh
aW5pbmdCbG9jaykpOwogICAgICAgICB9OwogCiAgICAgICAgIGF1dG8gY29tcHV0ZWRWZXJ0aWNh
bE1hcmdpbiA9IGdlb21ldHJ5KCkuY29tcHV0ZWRWZXJ0aWNhbE1hcmdpbigqYW5jZXN0b3IsIGhv
cml6b250YWxDb25zdHJhaW50c0ZvckFuY2VzdG9yKCkpOwpAQCAtNTUzLDcgKzU1MSw3IEBAIExh
eW91dFVuaXQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6dmVydGljYWxQb3NpdGlvbldpdGhNYXJn
aW4oY29uc3QgQm94JiBsYXlvdXRCCiAgICAgICAgIHJldHVybiBjb250YWluaW5nQmxvY2tDb250
ZW50Qm94VG9wICsgdmVydGljYWxNYXJnaW4uYmVmb3JlKCk7CiAgICAgfQogICAgIC8vIEF0IHRo
aXMgcG9pbnQgdGhpcyBib3ggaW5kaXJlY3RseSAodmlhIGNvbGxhcHNlZCB0aHJvdWdoIHByZXZp
b3VzIGluLWZsb3cgc2libGluZ3MpIGFkam9pbnMgdGhlIHBhcmVudC4gTGV0J3MgY2hlY2sgaWYg
aXQgbWFyZ2luIGNvbGxhcHNlcyB3aXRoIHRoZSBwYXJlbnQuCi0gICAgYXV0byYgY29udGFpbmlu
Z0Jsb2NrID0gKmxheW91dEJveC5jb250YWluaW5nQmxvY2soKTsKKyAgICBhdXRvJiBjb250YWlu
aW5nQmxvY2sgPSBsYXlvdXRCb3guY29udGFpbmluZ0Jsb2NrKCk7CiAgICAgQVNTRVJUKGNvbnRh
aW5pbmdCbG9jay5maXJzdEluRmxvd0NoaWxkKCkpOwogICAgIEFTU0VSVChjb250YWluaW5nQmxv
Y2suZmlyc3RJbkZsb3dDaGlsZCgpICE9ICZsYXlvdXRCb3gpOwogICAgIGlmIChtYXJnaW5Db2xs
YXBzZSgpLm1hcmdpbkJlZm9yZUNvbGxhcHNlc1dpdGhQYXJlbnRNYXJnaW5CZWZvcmUoKmNvbnRh
aW5pbmdCbG9jay5maXJzdEluRmxvd0NoaWxkKCkpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnku
Y3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRp
bmdDb250ZXh0R2VvbWV0cnkuY3BwCmluZGV4IDUyNWUzYTllYmU3OGMxMjUxY2VjN2VkMTg4Y2Ey
NWY2MGE5NDQ1NzAuLjAzZDQwY2M2NDRlNGI2OGViZTFlYmNkYTQ0ZjcwZjExYzZiM2MyMGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3Jt
YXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxv
Y2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKQEAgLTE1OCw3
ICsxNTgsNyBAQCBDb250ZW50V2lkdGhBbmRNYXJnaW4gQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6
R2VvbWV0cnk6OmluRmxvd05vblJlcGxhY2VkV2lkdGhBbgogCiAgICAgICAgIC8vICMyCiAgICAg
ICAgIGlmICh3aWR0aCAmJiBjb21wdXRlZEhvcml6b250YWxNYXJnaW4uc3RhcnQgJiYgY29tcHV0
ZWRIb3Jpem9udGFsTWFyZ2luLmVuZCkgewotICAgICAgICAgICAgaWYgKGxheW91dEJveC5jb250
YWluaW5nQmxvY2soKS0+c3R5bGUoKS5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkpIHsKKyAgICAg
ICAgICAgIGlmIChsYXlvdXRCb3guY29udGFpbmluZ0Jsb2NrKCkuc3R5bGUoKS5pc0xlZnRUb1Jp
Z2h0RGlyZWN0aW9uKCkpIHsKICAgICAgICAgICAgICAgICB1c2VkSG9yaXpvbnRhbE1hcmdpbi5z
dGFydCA9ICpjb21wdXRlZEhvcml6b250YWxNYXJnaW4uc3RhcnQ7CiAgICAgICAgICAgICAgICAg
dXNlZEhvcml6b250YWxNYXJnaW4uZW5kID0gY29udGFpbmluZ0Jsb2NrV2lkdGggLSAodXNlZEhv
cml6b250YWxNYXJnaW4uc3RhcnQgKyBib3JkZXJMZWZ0ICsgcGFkZGluZ0xlZnQgKyAqd2lkdGgg
KyBwYWRkaW5nUmlnaHQgKyBib3JkZXJSaWdodCk7CiAgICAgICAgICAgICB9IGVsc2UgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1h
dHRpbmdDb250ZXh0UXVpcmtzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1h
dHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dFF1aXJrcy5jcHAKaW5kZXggYTcxODBiYjc3OWVj
NzIzYjZjY2ViODU1NDhlOGQ1OTE3OTA4NDJiYS4uMTZkNWFhZTI5ZDFkNDlhZjhlM2Q0YjZkYTU2
YWU2ZDEwOTE4ZmI2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9y
bWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0UXVpcmtzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRRdWlya3Mu
Y3BwCkBAIC0zNywxNCArMzcsNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIExh
eW91dCB7CiAKLXN0YXRpYyBjb25zdCBDb250YWluZXJCb3gmIGluaXRpYWxDb250YWluaW5nQmxv
Y2soY29uc3QgQm94JiBsYXlvdXRCb3gpCi17Ci0gICAgYXV0byogY29udGFpbmluZ0Jsb2NrID0g
bGF5b3V0Qm94LmNvbnRhaW5pbmdCbG9jaygpOwotICAgIHdoaWxlIChjb250YWluaW5nQmxvY2st
PmNvbnRhaW5pbmdCbG9jaygpKQotICAgICAgICBjb250YWluaW5nQmxvY2sgPSBjb250YWluaW5n
QmxvY2stPmNvbnRhaW5pbmdCbG9jaygpOwotICAgIHJldHVybiAqY29udGFpbmluZ0Jsb2NrOwot
fQotCiBzdGF0aWMgYm9vbCBpc1F1aXJrQ29udGFpbmVyKGNvbnN0IEJveCYgbGF5b3V0Qm94KQog
ewogICAgIHJldHVybiBsYXlvdXRCb3guaXNCb2R5Qm94KCkgfHwgbGF5b3V0Qm94LmlzRG9jdW1l
bnRCb3goKSB8fCBsYXlvdXRCb3guaXNUYWJsZUNlbGwoKTsKQEAgLTcxLDcgKzYzLDcgQEAgTGF5
b3V0VW5pdCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpRdWlya3M6OnN0cmV0Y2hlZEluRmxvd0hl
aWdodChjb25zdCBCb3gmIGxheW8KIAogICAgIGlmIChsYXlvdXRCb3guaXNEb2N1bWVudEJveCgp
KSB7CiAgICAgICAgIC8vIExldCdzIHN0cmV0Y2ggdGhlIGluZmxvdyBkb2N1bWVudCBib3goPGh0
bWw+KSB0byB0aGUgaGVpZ2h0IG9mIHRoZSBpbml0aWFsIGNvbnRhaW5pbmcgYmxvY2sgKHZpZXcp
LgotICAgICAgICBhdXRvIGRvY3VtZW50Qm94Q29udGVudEhlaWdodCA9IGZvcm1hdHRpbmdDb250
ZXh0Lmdlb21ldHJ5Rm9yQm94KGluaXRpYWxDb250YWluaW5nQmxvY2sobGF5b3V0Qm94KSwgRXNj
YXBlUmVhc29uOjpEb2N1bWVudEJveFN0cmVjaGVzVG9WaWV3cG9ydFF1aXJrKS5jb250ZW50Qm94
SGVpZ2h0KCk7CisgICAgICAgIGF1dG8gZG9jdW1lbnRCb3hDb250ZW50SGVpZ2h0ID0gZm9ybWF0
dGluZ0NvbnRleHQuZ2VvbWV0cnlGb3JCb3gobGF5b3V0Qm94LmluaXRpYWxDb250YWluaW5nQmxv
Y2soKSwgRXNjYXBlUmVhc29uOjpEb2N1bWVudEJveFN0cmVjaGVzVG9WaWV3cG9ydFF1aXJrKS5j
b250ZW50Qm94SGVpZ2h0KCk7CiAgICAgICAgIC8vIERvY3VtZW50IGJveCdzIG93biB2ZXJ0aWNh
bCBtYXJnaW4vYm9yZGVyL3BhZGRpbmcgdmFsdWVzIGFsd2F5cyBzaHJpbmsgdGhlIGNvbnRlbnQg
aGVpZ2h0LgogICAgICAgICBhdXRvJiBkb2N1bWVudEJveEdlb21ldHJ5ID0gZm9ybWF0dGluZ0Nv
bnRleHQuZ2VvbWV0cnlGb3JCb3gobGF5b3V0Qm94KTsKICAgICAgICAgZG9jdW1lbnRCb3hDb250
ZW50SGVpZ2h0IC09IG5vbkNvbGxhcHNlZFZlcnRpY2FsTWFyZ2luICsgZG9jdW1lbnRCb3hHZW9t
ZXRyeS52ZXJ0aWNhbEJvcmRlcigpICsgZG9jdW1lbnRCb3hHZW9tZXRyeS52ZXJ0aWNhbFBhZGRp
bmcoKS52YWx1ZU9yKDApOwpAQCAtODAsNyArNzIsNyBAQCBMYXlvdXRVbml0IEJsb2NrRm9ybWF0
dGluZ0NvbnRleHQ6OlF1aXJrczo6c3RyZXRjaGVkSW5GbG93SGVpZ2h0KGNvbnN0IEJveCYgbGF5
bwogCiAgICAgLy8gSGVyZSBpcyB0aGUgcXVpcmt5IHBhcnQgZm9yIGJvZHkgYm94IHdoZW4gaXQg
c3RyZXRjaGVzIGFsbCB0aGUgd2F5IHRvIHRoZSBJQ0IgZXZlbiB3aGVuIHRoZSBkb2N1bWVudCBi
b3ggZG9lcyBub3QgKGUuZy4gb3V0LW9mLWZsb3cgcG9zaXRpb25lZCkuCiAgICAgQVNTRVJUKGxh
eW91dEJveC5pc0JvZHlCb3goKSk7Ci0gICAgYXV0byYgaW5pdGlhbENvbnRhaW5pbmdCbG9ja0dl
b21ldHJ5ID0gZm9ybWF0dGluZ0NvbnRleHQuZ2VvbWV0cnlGb3JCb3goaW5pdGlhbENvbnRhaW5p
bmdCbG9jayhsYXlvdXRCb3gpLCBFc2NhcGVSZWFzb246OkJvZHlTdHJlY2hlc1RvVmlld3BvcnRR
dWlyayk7CisgICAgYXV0byYgaW5pdGlhbENvbnRhaW5pbmdCbG9ja0dlb21ldHJ5ID0gZm9ybWF0
dGluZ0NvbnRleHQuZ2VvbWV0cnlGb3JCb3gobGF5b3V0Qm94LmluaXRpYWxDb250YWluaW5nQmxv
Y2soKSwgRXNjYXBlUmVhc29uOjpCb2R5U3RyZWNoZXNUb1ZpZXdwb3J0UXVpcmspOwogICAgIC8v
IFN0YXJ0IHRoZSBjb250ZW50IGhlaWdodCB3aXRoIHRoZSBJQ0IuCiAgICAgYXV0byBib2R5Qm94
Q29udGVudEhlaWdodCA9IGluaXRpYWxDb250YWluaW5nQmxvY2tHZW9tZXRyeS5jb250ZW50Qm94
SGVpZ2h0KCk7CiAgICAgLy8gQm9keSBib3gncyBvd24gYm9yZGVyIGFuZCBwYWRkaW5nIHNocmlu
ayB0aGUgY29udGVudCBoZWlnaHQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
YmxvY2tmb3JtYXR0aW5nL0Jsb2NrTWFyZ2luQ29sbGFwc2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja01hcmdpbkNvbGxhcHNlLmNwcAppbmRleCAxMzc0
YTg3NzRkNjZlZmNiZDRhOGJkYWE1NjU5OThlYWZmYTkyMmM1Li5iNDllYTdkMzRiNWQ5NjQxYzhh
MzA3NWZjYWQyMjM1YTcxNzEyMDU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
YmxvY2tmb3JtYXR0aW5nL0Jsb2NrTWFyZ2luQ29sbGFwc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tNYXJnaW5Db2xsYXBzZS5jcHAKQEAgLTQw
Niw3ICs0MDYsNyBAQCBib29sIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Ok1hcmdpbkNvbGxhcHNl
OjptYXJnaW5zQ29sbGFwc2VUaHJvdWdoKGNvbnN0IEJveCYgbAogICAgICAgICAgICAgICAgIC8v
IEFueSBmbG9hdCBib3ggaW4gdGhpcyBmb3JtYXR0aW5nIGNvbnRleHQgcHJldmVudHMgY29sbGFw
c2luZyB0aHJvdWdoLgogICAgICAgICAgICAgICAgIGF1dG8mIGZsb2F0cyA9IGZvcm1hdHRpbmdT
dGF0ZS5mbG9hdGluZ1N0YXRlKCkuZmxvYXRzKCk7CiAgICAgICAgICAgICAgICAgZm9yIChhdXRv
JiBmbG9hdEl0ZW0gOiBmbG9hdHMpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGZsb2F0SXRl
bS5pc0Rlc2NlbmRhbnRPZkZvcm1hdHRpbmdSb290KGNvbnRhaW5lckJveCkpCisgICAgICAgICAg
ICAgICAgICAgIGlmIChmbG9hdEl0ZW0uaXNJbkZvcm1hdHRpbmdDb250ZXh0T2YoY29udGFpbmVy
Qm94KSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL1ByZWNvbXB1dGVkQmxvY2tNYXJnaW5Db2xs
YXBzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL1ByZWNvbXB1
dGVkQmxvY2tNYXJnaW5Db2xsYXBzZS5jcHAKaW5kZXggODA5YzBkNGZkNzA4YzRmODhlYmJlNDdh
OTFlZWYzZWJkYjE3NTk2Ny4uMWYyYWI3MzM3Mjg0MzNkNDY5ZThkYmUyZGU0NjAwZGQ3ZTAzN2Iz
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9QcmVj
b21wdXRlZEJsb2NrTWFyZ2luQ29sbGFwc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9ibG9ja2Zvcm1hdHRpbmcvUHJlY29tcHV0ZWRCbG9ja01hcmdpbkNvbGxhcHNlLmNwcApAQCAt
NDQsNyArNDQsNyBAQCBQb3NpdGl2ZUFuZE5lZ2F0aXZlVmVydGljYWxNYXJnaW46OlZhbHVlcyBC
bG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpNYXJnaW5Db2xsYXBzZQogICAgIGlmIChibG9ja0Zvcm1h
dHRpbmdTdGF0ZS5oYXNQb3NpdGl2ZUFuZE5lZ2F0aXZlVmVydGljYWxNYXJnaW4obGF5b3V0Qm94
KSkKICAgICAgICAgcmV0dXJuIGJsb2NrRm9ybWF0dGluZ1N0YXRlLnBvc2l0aXZlQW5kTmVnYXRp
dmVWZXJ0aWNhbE1hcmdpbihsYXlvdXRCb3gpLmJlZm9yZTsKIAotICAgIGF1dG8gaG9yaXpvbnRh
bENvbnN0cmFpbnRzID0gR2VvbWV0cnk6Omhvcml6b250YWxDb25zdHJhaW50c0ZvckluRmxvdyhm
b3JtYXR0aW5nQ29udGV4dCgpLmdlb21ldHJ5Rm9yQm94KCpsYXlvdXRCb3guY29udGFpbmluZ0Js
b2NrKCkpKTsKKyAgICBhdXRvIGhvcml6b250YWxDb25zdHJhaW50cyA9IEdlb21ldHJ5Ojpob3Jp
em9udGFsQ29uc3RyYWludHNGb3JJbkZsb3coZm9ybWF0dGluZ0NvbnRleHQoKS5nZW9tZXRyeUZv
ckJveChsYXlvdXRCb3guY29udGFpbmluZ0Jsb2NrKCkpKTsKICAgICBhdXRvIGNvbXB1dGVkVmVy
dGljYWxNYXJnaW4gPSBmb3JtYXR0aW5nQ29udGV4dCgpLmdlb21ldHJ5KCkuY29tcHV0ZWRWZXJ0
aWNhbE1hcmdpbihsYXlvdXRCb3gsIGhvcml6b250YWxDb25zdHJhaW50cyk7CiAgICAgYXV0byBu
b25Db2xsYXBzZWRNYXJnaW4gPSBVc2VkVmVydGljYWxNYXJnaW46Ok5vbkNvbGxhcHNlZFZhbHVl
cyB7IGNvbXB1dGVkVmVydGljYWxNYXJnaW4uYmVmb3JlLnZhbHVlT3IoMCksIGNvbXB1dGVkVmVy
dGljYWxNYXJnaW4uYWZ0ZXIudmFsdWVPcigwKSB9OwogICAgIHJldHVybiBwcmVjb21wdXRlZFBv
c2l0aXZlTmVnYXRpdmVNYXJnaW5CZWZvcmUobGF5b3V0Qm94LCBub25Db2xsYXBzZWRNYXJnaW4p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlQ
YWludGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5UGFp
bnRlci5jcHAKaW5kZXggNjYxNzc3YzUxOTg3MGQ1NzI1ZDljMGY0ZjEyOTQ5ZGI3ZWIwMDJmNi4u
ZTQ0MzAyMWZiMzMwYzNhZWZjMTFkMWQ2MWNlYWM0YjgxYjcwMDg1ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlQYWludGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheVBhaW50ZXIuY3BwCkBAIC0x
NTAsOCArMTUwLDggQEAgc3RhdGljIEJveCBhYnNvbHV0ZURpc3BsYXlCb3goY29uc3QgTGF5b3V0
OjpMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IExheW8KICAgICAgICAgcmV0dXJuIGxh
eW91dFN0YXRlLmRpc3BsYXlCb3hGb3JMYXlvdXRCb3gobGF5b3V0Qm94KTsKIAogICAgIGF1dG8g
YWJzb2x1dGVCb3ggPSBCb3ggeyBsYXlvdXRTdGF0ZS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGxh
eW91dEJveCkgfTsKLSAgICBmb3IgKGF1dG8qIGNvbnRhaW5lckJveCA9IGxheW91dEJveC5jb250
YWluaW5nQmxvY2soKTsgY29udGFpbmVyQm94ICE9ICZsYXlvdXRCb3guaW5pdGlhbENvbnRhaW5p
bmdCbG9jaygpOyBjb250YWluZXJCb3ggPSBjb250YWluZXJCb3gtPmNvbnRhaW5pbmdCbG9jaygp
KQotICAgICAgICBhYnNvbHV0ZUJveC5tb3ZlQnkobGF5b3V0U3RhdGUuZGlzcGxheUJveEZvckxh
eW91dEJveCgqY29udGFpbmVyQm94KS50b3BMZWZ0KCkpOworICAgIGZvciAoYXV0byogY29udGFp
bmluZ0Jsb2NrID0gJmxheW91dEJveC5jb250YWluaW5nQmxvY2soKTsgIWNvbnRhaW5pbmdCbG9j
ay0+aXNJbml0aWFsQ29udGFpbmluZ0Jsb2NrKCk7IGNvbnRhaW5pbmdCbG9jayA9ICZjb250YWlu
aW5nQmxvY2stPmNvbnRhaW5pbmdCbG9jaygpKQorICAgICAgICBhYnNvbHV0ZUJveC5tb3ZlQnko
bGF5b3V0U3RhdGUuZGlzcGxheUJveEZvckxheW91dEJveCgqY29udGFpbmluZ0Jsb2NrKS50b3BM
ZWZ0KCkpOwogICAgIHJldHVybiBhYnNvbHV0ZUJveDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Zsb2F0cy9GbG9hdGluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zsb2F0cy9GbG9hdGluZ0NvbnRleHQuY3BwCmluZGV4IGVkYjMzZTE5OWZlYTgz
Njc2YTljNDU2NzViZDgxMTZhMTEyNGEyYWEuLjJiN2VkYjNmZTc3MWMwN2NhMGE5YTkzMDY5YmNi
MjMxMTIzYTJmOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mbG9hdHMvRmxv
YXRpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZmxvYXRzL0Zsb2F0
aW5nQ29udGV4dC5jcHAKQEAgLTI1MSwxMCArMjUxLDEwIEBAIEZsb2F0aW5nQ29udGV4dDo6Q2xl
YXJhbmNlUG9zaXRpb24gRmxvYXRpbmdDb250ZXh0Ojp2ZXJ0aWNhbFBvc2l0aW9uV2l0aENsZWFy
YW5jCiAgICAgICAgIEFTU0VSVCgqZmxvYXRCb3R0b20gPT0gcm9vdFJlbGF0aXZlVG9wKTsKIAog
ICAgICAgICAvLyBUaGUgcmV0dXJuIHZlcnRpY2FsIHBvc2l0aW9uIGlzIGluIHRoZSBjb250YWlu
aW5nIGJsb2NrJ3MgY29vcmRpbmF0ZSBzeXN0ZW0uIENvbnZlcnQgaXQgdG8gdGhlIGZvcm1hdHRp
bmcgcm9vdCdzIGNvb3JkaW5hdGUgc3lzdGVtIGlmIG5lZWRlZC4KLSAgICAgICAgaWYgKGxheW91
dEJveC5jb250YWluaW5nQmxvY2soKSA9PSAmbV9mbG9hdGluZ1N0YXRlLnJvb3QoKSkKKyAgICAg
ICAgaWYgKCZsYXlvdXRCb3guY29udGFpbmluZ0Jsb2NrKCkgPT0gJm1fZmxvYXRpbmdTdGF0ZS5y
b290KCkpCiAgICAgICAgICAgICByZXR1cm4geyBQb3NpdGlvbiB7IHJvb3RSZWxhdGl2ZVRvcCB9
LCBjbGVhcmFuY2UgfTsKIAotICAgICAgICBhdXRvIGNvbnRhaW5pbmdCbG9ja1Jvb3RSZWxhdGl2
ZVRvcCA9IG1hcFRvcFRvRmxvYXRpbmdTdGF0ZVJvb3QoKmxheW91dEJveC5jb250YWluaW5nQmxv
Y2soKSk7CisgICAgICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrUm9vdFJlbGF0aXZlVG9wID0gbWFw
VG9wVG9GbG9hdGluZ1N0YXRlUm9vdChsYXlvdXRCb3guY29udGFpbmluZ0Jsb2NrKCkpOwogICAg
ICAgICByZXR1cm4geyBQb3NpdGlvbiB7IHJvb3RSZWxhdGl2ZVRvcCAtIGNvbnRhaW5pbmdCbG9j
a1Jvb3RSZWxhdGl2ZVRvcCB9LCBjbGVhcmFuY2UgfTsKICAgICB9OwogCkBAIC00MTgsNyArNDE4
LDcgQEAgdm9pZCBGbG9hdGluZ0NvbnRleHQ6OmZpbmRQb3NpdGlvbkZvckZvcm1hdHRpbmdDb250
ZXh0Um9vdChGbG9hdEF2b2lkZXImIGZsb2F0QXYKIAogRmxvYXRpbmdDb250ZXh0OjpBYnNvbHV0
ZUNvb3JkaW5hdGVWYWx1ZXNGb3JGbG9hdEF2b2lkZXIgRmxvYXRpbmdDb250ZXh0OjphYnNvbHV0
ZURpc3BsYXlCb3hDb29yZGluYXRlcyhjb25zdCBCb3gmIGZsb2F0QXZvaWRlcikgY29uc3QKIHsK
LSAgICBhdXRvJiBjb250YWluaW5nQmxvY2sgPSAqZmxvYXRBdm9pZGVyLmNvbnRhaW5pbmdCbG9j
aygpOworICAgIGF1dG8mIGNvbnRhaW5pbmdCbG9jayA9IGZsb2F0QXZvaWRlci5jb250YWluaW5n
QmxvY2soKTsKICAgICBhdXRvIGRpc3BsYXlCb3ggPSBtYXBUb0Zsb2F0aW5nU3RhdGVSb290KGZs
b2F0QXZvaWRlcik7CiAKICAgICBpZiAoJmNvbnRhaW5pbmdCbG9jayA9PSAmZmxvYXRpbmdTdGF0
ZSgpLnJvb3QoKSkgewpAQCAtNDM1LDcgKzQzNSw3IEBAIERpc3BsYXk6OkJveCBGbG9hdGluZ0Nv
bnRleHQ6Om1hcFRvRmxvYXRpbmdTdGF0ZVJvb3QoY29uc3QgQm94JiBmbG9hdEJveCkgY29uc3QK
ICAgICBhdXRvJiBmbG9hdGluZ1N0YXRlUm9vdCA9IGZsb2F0aW5nU3RhdGUoKS5yb290KCk7CiAg
ICAgYXV0byYgYm94R2VvbWV0cnkgPSBmb3JtYXR0aW5nQ29udGV4dCgpLmdlb21ldHJ5Rm9yQm94
KGZsb2F0Qm94LCBGb3JtYXR0aW5nQ29udGV4dDo6RXNjYXBlUmVhc29uOjpGbG9hdEJveE5lZWRz
VG9CZUluQWJzb2x1dGVDb29yZGluYXRlcyk7CiAgICAgYXV0byB0b3BMZWZ0ID0gYm94R2VvbWV0
cnkudG9wTGVmdCgpOwotICAgIGZvciAoYXV0byogY29udGFpbmluZ0Jsb2NrID0gZmxvYXRCb3gu
Y29udGFpbmluZ0Jsb2NrKCk7IGNvbnRhaW5pbmdCbG9jayAmJiBjb250YWluaW5nQmxvY2sgIT0g
JmZsb2F0aW5nU3RhdGVSb290OyBjb250YWluaW5nQmxvY2sgPSBjb250YWluaW5nQmxvY2stPmNv
bnRhaW5pbmdCbG9jaygpKQorICAgIGZvciAoYXV0byogY29udGFpbmluZ0Jsb2NrID0gJmZsb2F0
Qm94LmNvbnRhaW5pbmdCbG9jaygpOyBjb250YWluaW5nQmxvY2sgIT0gJmZsb2F0aW5nU3RhdGVS
b290OyBjb250YWluaW5nQmxvY2sgPSAmY29udGFpbmluZ0Jsb2NrLT5jb250YWluaW5nQmxvY2so
KSkKICAgICAgICAgdG9wTGVmdC5tb3ZlQnkoZm9ybWF0dGluZ0NvbnRleHQoKS5nZW9tZXRyeUZv
ckJveCgqY29udGFpbmluZ0Jsb2NrLCBGb3JtYXR0aW5nQ29udGV4dDo6RXNjYXBlUmVhc29uOjpG
bG9hdEJveE5lZWRzVG9CZUluQWJzb2x1dGVDb29yZGluYXRlcykudG9wTGVmdCgpKTsKIAogICAg
IGF1dG8gbWFwcGVkRGlzcGxheUJveCA9IERpc3BsYXk6OkJveChib3hHZW9tZXRyeSk7CkBAIC00
NDcsOCArNDQ3LDggQEAgTGF5b3V0VW5pdCBGbG9hdGluZ0NvbnRleHQ6Om1hcFRvcFRvRmxvYXRp
bmdTdGF0ZVJvb3QoY29uc3QgQm94JiBmbG9hdEJveCkgY29uc3QKIHsKICAgICBhdXRvJiBmbG9h
dGluZ1N0YXRlUm9vdCA9IGZsb2F0aW5nU3RhdGUoKS5yb290KCk7CiAgICAgYXV0byB0b3AgPSBm
b3JtYXR0aW5nQ29udGV4dCgpLmdlb21ldHJ5Rm9yQm94KGZsb2F0Qm94LCBGb3JtYXR0aW5nQ29u
dGV4dDo6RXNjYXBlUmVhc29uOjpGbG9hdEJveE5lZWRzVG9CZUluQWJzb2x1dGVDb29yZGluYXRl
cykudG9wKCk7Ci0gICAgZm9yIChhdXRvKiBjb250YWluZXJCb3ggPSBmbG9hdEJveC5jb250YWlu
aW5nQmxvY2soKTsgY29udGFpbmVyQm94ICYmIGNvbnRhaW5lckJveCAhPSAmZmxvYXRpbmdTdGF0
ZVJvb3Q7IGNvbnRhaW5lckJveCA9IGNvbnRhaW5lckJveC0+Y29udGFpbmluZ0Jsb2NrKCkpCi0g
ICAgICAgIHRvcCArPSBmb3JtYXR0aW5nQ29udGV4dCgpLmdlb21ldHJ5Rm9yQm94KCpjb250YWlu
ZXJCb3gsIEZvcm1hdHRpbmdDb250ZXh0OjpFc2NhcGVSZWFzb246OkZsb2F0Qm94TmVlZHNUb0Jl
SW5BYnNvbHV0ZUNvb3JkaW5hdGVzKS50b3AoKTsKKyAgICBmb3IgKGF1dG8qIGNvbnRhaW5pbmdC
bG9jayA9ICZmbG9hdEJveC5jb250YWluaW5nQmxvY2soKTsgY29udGFpbmluZ0Jsb2NrICE9ICZm
bG9hdGluZ1N0YXRlUm9vdDsgY29udGFpbmluZ0Jsb2NrID0gJmNvbnRhaW5pbmdCbG9jay0+Y29u
dGFpbmluZ0Jsb2NrKCkpCisgICAgICAgIHRvcCArPSBmb3JtYXR0aW5nQ29udGV4dCgpLmdlb21l
dHJ5Rm9yQm94KCpjb250YWluaW5nQmxvY2ssIEZvcm1hdHRpbmdDb250ZXh0OjpFc2NhcGVSZWFz
b246OkZsb2F0Qm94TmVlZHNUb0JlSW5BYnNvbHV0ZUNvb3JkaW5hdGVzKS50b3AoKTsKICAgICBy
ZXR1cm4gdG9wOwogfQogCkBAIC00NTksOCArNDU5LDggQEAgUG9pbnQgRmxvYXRpbmdDb250ZXh0
OjptYXBQb2ludEZyb21Gb3JtYXR0aW5nQ29udGV4dFJvb3RUb0Zsb2F0aW5nU3RhdGVSb290KFBv
aW4KICAgICBpZiAoJmZyb20gPT0gJnRvKQogICAgICAgICByZXR1cm4gcG9zaXRpb247CiAgICAg
YXV0byBtYXBwZWRQb3NpdGlvbiA9IHBvc2l0aW9uOwotICAgIGZvciAoYXV0byogY29udGFpbmVy
Qm94ID0gJmZyb207IGNvbnRhaW5lckJveCAmJiBjb250YWluZXJCb3ggIT0gJnRvOyBjb250YWlu
ZXJCb3ggPSBjb250YWluZXJCb3gtPmNvbnRhaW5pbmdCbG9jaygpKQotICAgICAgICBtYXBwZWRQ
b3NpdGlvbi5tb3ZlQnkoZm9ybWF0dGluZ0NvbnRleHQoKS5nZW9tZXRyeUZvckJveCgqY29udGFp
bmVyQm94LCBGb3JtYXR0aW5nQ29udGV4dDo6RXNjYXBlUmVhc29uOjpGbG9hdEJveE5lZWRzVG9C
ZUluQWJzb2x1dGVDb29yZGluYXRlcykudG9wTGVmdCgpKTsKKyAgICBmb3IgKGF1dG8qIGNvbnRh
aW5pbmdCbG9jayA9ICZmcm9tOyBjb250YWluaW5nQmxvY2sgIT0gJnRvOyBjb250YWluaW5nQmxv
Y2sgPSAmY29udGFpbmluZ0Jsb2NrLT5jb250YWluaW5nQmxvY2soKSkKKyAgICAgICAgbWFwcGVk
UG9zaXRpb24ubW92ZUJ5KGZvcm1hdHRpbmdDb250ZXh0KCkuZ2VvbWV0cnlGb3JCb3goKmNvbnRh
aW5pbmdCbG9jaywgRm9ybWF0dGluZ0NvbnRleHQ6OkVzY2FwZVJlYXNvbjo6RmxvYXRCb3hOZWVk
c1RvQmVJbkFic29sdXRlQ29vcmRpbmF0ZXMpLnRvcExlZnQoKSk7CiAgICAgcmV0dXJuIG1hcHBl
ZFBvc2l0aW9uOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZmxvYXRz
L0Zsb2F0aW5nU3RhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zsb2F0cy9GbG9hdGlu
Z1N0YXRlLmNwcAppbmRleCBiNGY4N2VhNmU4NzcwYmIwODc4ZWVjODQyOTVmNTc5NmI0MTE0MWUw
Li45NGYzYjAyMzUwMjkzOTc1MDVmMzI5ODU0OGZiYjYwYTg0YjNkYzhjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvZmxvYXRzL0Zsb2F0aW5nU3RhdGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9mbG9hdHMvRmxvYXRpbmdTdGF0ZS5jcHAKQEAgLTk3LDcgKzk3LDcg
QEAgT3B0aW9uYWw8UG9zaXRpb25JbkNvbnRleHRSb290PiBGbG9hdGluZ1N0YXRlOjpib3R0b20o
Y29uc3QgQ29udGFpbmVyQm94JiBmb3JtYXQKICAgICBPcHRpb25hbDxQb3NpdGlvbkluQ29udGV4
dFJvb3Q+IGJvdHRvbTsKICAgICBmb3IgKGF1dG8mIGZsb2F0SXRlbSA6IG1fZmxvYXRzKSB7CiAg
ICAgICAgIC8vIElnbm9yZSBmbG9hdHMgZnJvbSBhbmNlc3RvciBmb3JtYXR0aW5nIGNvbnRleHRz
IHdoZW4gdGhlIGZsb2F0aW5nIHN0YXRlIGlzIGluaGVyaXRlZC4KLSAgICAgICAgaWYgKCFmbG9h
dEl0ZW0uaXNEZXNjZW5kYW50T2ZGb3JtYXR0aW5nUm9vdChmb3JtYXR0aW5nQ29udGV4dFJvb3Qp
KQorICAgICAgICBpZiAoIWZsb2F0SXRlbS5pc0luRm9ybWF0dGluZ0NvbnRleHRPZihmb3JtYXR0
aW5nQ29udGV4dFJvb3QpKQogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgaWYgKCh0
eXBlID09IENsZWFyOjpMZWZ0ICYmICFmbG9hdEl0ZW0uaXNMZWZ0UG9zaXRpb25lZCgpKQpAQCAt
MTIyLDcgKzEyMiw3IEBAIE9wdGlvbmFsPFBvc2l0aW9uSW5Db250ZXh0Um9vdD4gRmxvYXRpbmdT
dGF0ZTo6dG9wKGNvbnN0IENvbnRhaW5lckJveCYgZm9ybWF0dGluCiAgICAgT3B0aW9uYWw8UG9z
aXRpb25JbkNvbnRleHRSb290PiB0b3A7CiAgICAgZm9yIChhdXRvJiBmbG9hdEl0ZW0gOiBtX2Zs
b2F0cykgewogICAgICAgICAvLyBJZ25vcmUgZmxvYXRzIGZyb20gYW5jZXN0b3IgZm9ybWF0dGlu
ZyBjb250ZXh0cyB3aGVuIHRoZSBmbG9hdGluZyBzdGF0ZSBpcyBpbmhlcml0ZWQuCi0gICAgICAg
IGlmICghZmxvYXRJdGVtLmlzRGVzY2VuZGFudE9mRm9ybWF0dGluZ1Jvb3QoZm9ybWF0dGluZ0Nv
bnRleHRSb290KSkKKyAgICAgICAgaWYgKCFmbG9hdEl0ZW0uaXNJbkZvcm1hdHRpbmdDb250ZXh0
T2YoZm9ybWF0dGluZ0NvbnRleHRSb290KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAg
ICAgIGF1dG8gZmxvYXRUb3AgPSBmbG9hdEl0ZW0ucmVjdFdpdGhNYXJnaW4oKS50b3AoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mbG9hdHMvRmxvYXRpbmdTdGF0ZS5oIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zsb2F0cy9GbG9hdGluZ1N0YXRlLmgKaW5kZXggYWNiMjUz
ZmIxOTNhN2Y4NTk2Y2Q4NTZiMDRhMDc3NTY3ZTE1NzFhOS4uNGY3YWI0YTNlMjgwZWI2OWU2MDFh
OTA4ZjA5NjBjNjM1MWM0ZmVhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zs
b2F0cy9GbG9hdGluZ1N0YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zsb2F0cy9G
bG9hdGluZ1N0YXRlLmgKQEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgogICAgICAgICBGbG9hdEl0
ZW0oUG9zaXRpb24sIERpc3BsYXk6OkJveCBhYnNvbHV0ZURpc3BsYXlCb3gpOwogCiAgICAgICAg
IGJvb2wgaXNMZWZ0UG9zaXRpb25lZCgpIGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRpb24gPT0gUG9z
aXRpb246OkxlZnQ7IH0KLSAgICAgICAgYm9vbCBpc0Rlc2NlbmRhbnRPZkZvcm1hdHRpbmdSb290
KGNvbnN0IENvbnRhaW5lckJveCYpIGNvbnN0OworICAgICAgICBib29sIGlzSW5Gb3JtYXR0aW5n
Q29udGV4dE9mKGNvbnN0IENvbnRhaW5lckJveCYgZm9ybWF0dGluZ0NvbnRleHRSb290KSBjb25z
dCB7IHJldHVybiBtX2xheW91dEJveC0+aXNJbkZvcm1hdHRpbmdDb250ZXh0T2YoZm9ybWF0dGlu
Z0NvbnRleHRSb290KTsgfQogCiAgICAgICAgIERpc3BsYXk6OlJlY3QgcmVjdFdpdGhNYXJnaW4o
KSBjb25zdCB7IHJldHVybiBtX2Fic29sdXRlRGlzcGxheUJveC5yZWN0V2l0aE1hcmdpbigpOyB9
CiAgICAgICAgIFVzZWRIb3Jpem9udGFsTWFyZ2luIGhvcml6b250YWxNYXJnaW4oKSBjb25zdCB7
IHJldHVybiBtX2Fic29sdXRlRGlzcGxheUJveC5ob3Jpem9udGFsTWFyZ2luKCk7IH0KQEAgLTEx
NSwxMiArMTE1LDYgQEAgaW5saW5lIE9wdGlvbmFsPFBvc2l0aW9uSW5Db250ZXh0Um9vdD4gRmxv
YXRpbmdTdGF0ZTo6Ym90dG9tKGNvbnN0IENvbnRhaW5lckJveCYKICAgICByZXR1cm4gYm90dG9t
KGZvcm1hdHRpbmdDb250ZXh0Um9vdCwgQ2xlYXI6OkJvdGgpOwogfQogCi1pbmxpbmUgYm9vbCBG
bG9hdGluZ1N0YXRlOjpGbG9hdEl0ZW06OmlzRGVzY2VuZGFudE9mRm9ybWF0dGluZ1Jvb3QoY29u
c3QgQ29udGFpbmVyQm94JiBmb3JtYXR0aW5nQ29udGV4dFJvb3QpIGNvbnN0Ci17Ci0gICAgQVNT
RVJUKGZvcm1hdHRpbmdDb250ZXh0Um9vdC5lc3RhYmxpc2hlc0Zvcm1hdHRpbmdDb250ZXh0KCkp
OwotICAgIHJldHVybiBtX2xheW91dEJveC0+aXNDb250YWluaW5nQmxvY2tEZXNjZW5kYW50T2Yo
ZG93bmNhc3Q8Q29udGFpbmVyQm94Pihmb3JtYXR0aW5nQ29udGV4dFJvb3QpKTsKLX0KLQogfQog
fQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9M
YXlvdXRCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94
LmNwcAppbmRleCBkM2MyNTY0M2M2YjFiYTE3OTkyOGVhNzFjZDE5MmNmNmY5ZWYwNzVkLi4xMThj
YzUzNTExMTAxMDY2MDRiNzM0YmQ5ZmViYTIyZWQ4ZDVmOGVkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5jcHAKQEAgLTE3OCw0MyArMTc4LDQ3IEBA
IGJvb2wgQm94Ojppc0Zsb2F0QXZvaWRlcigpIGNvbnN0CiAgICAgcmV0dXJuIChlc3RhYmxpc2hl
c0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQoKSAmJiAhZXN0YWJsaXNoZXNJbmxpbmVGb3JtYXR0aW5n
Q29udGV4dCgpKSB8fCBlc3RhYmxpc2hlc1RhYmxlRm9ybWF0dGluZ0NvbnRleHQoKSB8fCBoYXNG
bG9hdENsZWFyKCk7CiB9CiAKLWNvbnN0IENvbnRhaW5lckJveCogQm94Ojpjb250YWluaW5nQmxv
Y2soKSBjb25zdAorY29uc3QgQ29udGFpbmVyQm94JiBCb3g6OmNvbnRhaW5pbmdCbG9jaygpIGNv
bnN0CiB7CiAgICAgLy8gRmluZGluZyB0aGUgY29udGFpbmluZyBibG9jayBieSB0cmF2ZXJzaW5n
IHRoZSB0cmVlIGR1cmluZyB0cmVlIGNvbnN0cnVjdGlvbiBjb3VsZCBwcm92aWRlIGluY29ycmVj
dCByZXN1bHQuCiAgICAgQVNTRVJUKCFQaGFzZTo6aXNJblRyZWVCdWlsZGluZygpKTsKKyAgICAv
LyBJZiB3ZSBldmVyIGVuZCB1cCBoZXJlIHdpdGggdGhlIElDQiwgd2UgbXVzdCBiZSBkb2luZyBz
b21ldGhpbmcgbm90LXNvLWdyZWF0LgorICAgIFJFTEVBU0VfQVNTRVJUKCFpc0luaXRpYWxDb250
YWluaW5nQmxvY2soKSk7CiAgICAgLy8gVGhlIGNvbnRhaW5pbmcgYmxvY2sgaW4gd2hpY2ggdGhl
IHJvb3QgZWxlbWVudCBsaXZlcyBpcyBhIHJlY3RhbmdsZSBjYWxsZWQgdGhlIGluaXRpYWwgY29u
dGFpbmluZyBibG9jay4KICAgICAvLyBGb3Igb3RoZXIgZWxlbWVudHMsIGlmIHRoZSBlbGVtZW50
J3MgcG9zaXRpb24gaXMgJ3JlbGF0aXZlJyBvciAnc3RhdGljJywgdGhlIGNvbnRhaW5pbmcgYmxv
Y2sgaXMgZm9ybWVkIGJ5IHRoZQogICAgIC8vIGNvbnRlbnQgZWRnZSBvZiB0aGUgbmVhcmVzdCBi
bG9jayBjb250YWluZXIgYW5jZXN0b3IgYm94IG9yIHdoaWNoIGVzdGFibGlzaGVzIGEgZm9ybWF0
dGluZyBjb250ZXh0LgogICAgIC8vIElmIHRoZSBlbGVtZW50IGhhcyAncG9zaXRpb246IGZpeGVk
JywgdGhlIGNvbnRhaW5pbmcgYmxvY2sgaXMgZXN0YWJsaXNoZWQgYnkgdGhlIHZpZXdwb3J0CiAg
ICAgLy8gSWYgdGhlIGVsZW1lbnQgaGFzICdwb3NpdGlvbjogYWJzb2x1dGUnLCB0aGUgY29udGFp
bmluZyBibG9jayBpcyBlc3RhYmxpc2hlZCBieSB0aGUgbmVhcmVzdCBhbmNlc3RvciB3aXRoIGEK
ICAgICAvLyAncG9zaXRpb24nIG9mICdhYnNvbHV0ZScsICdyZWxhdGl2ZScgb3IgJ2ZpeGVkJy4K
LSAgICBpZiAoIXBhcmVudCgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQogICAgIGlmICgh
aXNQb3NpdGlvbmVkKCkgfHwgaXNJbkZsb3dQb3NpdGlvbmVkKCkpIHsKLSAgICAgICAgZm9yIChh
dXRvKiBuZWFyZXN0QmxvY2tDb250YWluZXJPckZvcm1hdHRpbmdDb250ZXh0Um9vdCA9IHBhcmVu
dCgpOyBuZWFyZXN0QmxvY2tDb250YWluZXJPckZvcm1hdHRpbmdDb250ZXh0Um9vdDsgbmVhcmVz
dEJsb2NrQ29udGFpbmVyT3JGb3JtYXR0aW5nQ29udGV4dFJvb3QgPSBuZWFyZXN0QmxvY2tDb250
YWluZXJPckZvcm1hdHRpbmdDb250ZXh0Um9vdC0+cGFyZW50KCkpIHsKLSAgICAgICAgICAgIGlm
IChuZWFyZXN0QmxvY2tDb250YWluZXJPckZvcm1hdHRpbmdDb250ZXh0Um9vdC0+aXNCbG9ja0Nv
bnRhaW5lckJveCgpIHx8IG5lYXJlc3RCbG9ja0NvbnRhaW5lck9yRm9ybWF0dGluZ0NvbnRleHRS
b290LT5lc3RhYmxpc2hlc0Zvcm1hdHRpbmdDb250ZXh0KCkpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIG5lYXJlc3RCbG9ja0NvbnRhaW5lck9yRm9ybWF0dGluZ0NvbnRleHRSb290OyAKKyAgICAg
ICAgYXV0byogYW5jZXN0b3IgPSBwYXJlbnQoKTsKKyAgICAgICAgZm9yICg7ICFhbmNlc3Rvci0+
aXNJbml0aWFsQ29udGFpbmluZ0Jsb2NrKCk7IGFuY2VzdG9yID0gYW5jZXN0b3ItPnBhcmVudCgp
KSB7CisgICAgICAgICAgICBpZiAoYW5jZXN0b3ItPmlzQmxvY2tDb250YWluZXJCb3goKSB8fCBh
bmNlc3Rvci0+ZXN0YWJsaXNoZXNGb3JtYXR0aW5nQ29udGV4dCgpKQorICAgICAgICAgICAgICAg
IHJldHVybiAqYW5jZXN0b3I7CiAgICAgICAgIH0KLSAgICAgICAgLy8gV2Ugc2hvdWxkIGFsd2F5
cyBtYW5hZ2UgdG8gZmluZCB0aGUgSUNCLgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiAqYW5jZXN0b3I7CiAgICAg
fQogCiAgICAgaWYgKGlzRml4ZWRQb3NpdGlvbmVkKCkpIHsKICAgICAgICAgYXV0byogYW5jZXN0
b3IgPSBwYXJlbnQoKTsKLSAgICAgICAgZm9yICg7IGFuY2VzdG9yLT5wYXJlbnQoKSAmJiAhYW5j
ZXN0b3ItPnN0eWxlKCkuaGFzVHJhbnNmb3JtKCk7IGFuY2VzdG9yID0gYW5jZXN0b3ItPnBhcmVu
dCgpKSB7IH0KLSAgICAgICAgcmV0dXJuIGFuY2VzdG9yOworICAgICAgICBmb3IgKDsgIWFuY2Vz
dG9yLT5pc0luaXRpYWxDb250YWluaW5nQmxvY2soKTsgYW5jZXN0b3IgPSBhbmNlc3Rvci0+cGFy
ZW50KCkpIHsKKyAgICAgICAgICAgIGlmIChhbmNlc3Rvci0+c3R5bGUoKS5oYXNUcmFuc2Zvcm0o
KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gKmFuY2VzdG9yOworICAgICAgICB9CisgICAgICAg
IHJldHVybiAqYW5jZXN0b3I7CiAgICAgfQogCiAgICAgaWYgKGlzT3V0T2ZGbG93UG9zaXRpb25l
ZCgpKSB7CiAgICAgICAgIGF1dG8qIGFuY2VzdG9yID0gcGFyZW50KCk7Ci0gICAgICAgIGZvciAo
OyBhbmNlc3Rvci0+cGFyZW50KCkgJiYgIWFuY2VzdG9yLT5pc1Bvc2l0aW9uZWQoKSAmJiAhYW5j
ZXN0b3ItPnN0eWxlKCkuaGFzVHJhbnNmb3JtKCk7IGFuY2VzdG9yID0gYW5jZXN0b3ItPnBhcmVu
dCgpKSB7IH0KLSAgICAgICAgcmV0dXJuIGFuY2VzdG9yOworICAgICAgICBmb3IgKDsgIWFuY2Vz
dG9yLT5pc0luaXRpYWxDb250YWluaW5nQmxvY2soKTsgYW5jZXN0b3IgPSBhbmNlc3Rvci0+cGFy
ZW50KCkpIHsKKyAgICAgICAgICAgIGlmIChhbmNlc3Rvci0+aXNQb3NpdGlvbmVkKCkgfHwgYW5j
ZXN0b3ItPnN0eWxlKCkuaGFzVHJhbnNmb3JtKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuICph
bmNlc3RvcjsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gKmFuY2VzdG9yOwogICAgIH0KIAog
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVy
biBpbml0aWFsQ29udGFpbmluZ0Jsb2NrKCk7CiB9CiAKIGNvbnN0IENvbnRhaW5lckJveCYgQm94
Ojpmb3JtYXR0aW5nQ29udGV4dFJvb3QoKSBjb25zdApAQCAtMjMwLDE1ICsyMzQsMTAgQEAgY29u
c3QgQ29udGFpbmVyQm94JiBCb3g6OmZvcm1hdHRpbmdDb250ZXh0Um9vdCgpIGNvbnN0CiAgICAg
Ly8gPGRpdiBpZD1vdXRlciBzdHlsZT0icG9zaXRpb246IGFic29sdXRlIj48ZGl2IGlkPWlubmVy
PjxzcGFuIHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmUiPmNvbnRlbnQ8L3NwYW4+PC9kaXY+PC9k
aXY+CiAgICAgLy8gV2hpbGUgdGhlIHJlbGF0aXZlbHkgcG9zaXRpb25lZCBpbmxpbmUgY29udGFp
bmVyIChzcGFuKSBpcyBwbGFjZWQgcmVsYXRpdmUgdG8gaXRzIGNvbnRhaW5pbmcgYmxvY2sgIm91
dGVyIiwgaXQgbGl2ZXMgaW4gdGhlIGlubGluZQogICAgIC8vIGZvcm1hdHRpbmcgY29udGV4dCBl
c3RhYmxpc2hlZCBieSAiaW5uZXIiLgotICAgIGNvbnN0IENvbnRhaW5lckJveCogYW5jZXN0b3Ig
PSBudWxscHRyOwotICAgIGlmIChpc0lubGluZUxldmVsQm94KCkgJiYgaXNJbkZsb3dQb3NpdGlv
bmVkKCkpCi0gICAgICAgIGFuY2VzdG9yID0gcGFyZW50KCk7Ci0gICAgZWxzZQotICAgICAgICBh
bmNlc3RvciA9IGNvbnRhaW5pbmdCbG9jaygpOwotICAgIEFTU0VSVChhbmNlc3Rvcik7Ci0gICAg
aWYgKGFuY2VzdG9yLT5lc3RhYmxpc2hlc0Zvcm1hdHRpbmdDb250ZXh0KCkpCi0gICAgICAgIHJl
dHVybiAqYW5jZXN0b3I7Ci0gICAgcmV0dXJuIGFuY2VzdG9yLT5mb3JtYXR0aW5nQ29udGV4dFJv
b3QoKTsKKyAgICBhdXRvJiBhbmNlc3RvciA9IGlzSW5saW5lTGV2ZWxCb3goKSAmJiBpc0luRmxv
d1Bvc2l0aW9uZWQoKSA/ICpwYXJlbnQoKSA6IGNvbnRhaW5pbmdCbG9jaygpOworICAgIGlmIChh
bmNlc3Rvci5lc3RhYmxpc2hlc0Zvcm1hdHRpbmdDb250ZXh0KCkpCisgICAgICAgIHJldHVybiBh
bmNlc3RvcjsKKyAgICByZXR1cm4gYW5jZXN0b3IuZm9ybWF0dGluZ0NvbnRleHRSb290KCk7CiB9
CiAKIGNvbnN0IENvbnRhaW5lckJveCYgQm94Ojppbml0aWFsQ29udGFpbmluZ0Jsb2NrKCkgY29u
c3QKQEAgLTI1MiwyMSArMjUxLDE5IEBAIGNvbnN0IENvbnRhaW5lckJveCYgQm94Ojppbml0aWFs
Q29udGFpbmluZ0Jsb2NrKCkgY29uc3QKICAgICByZXR1cm4gKnBhcmVudDsKIH0KIAotYm9vbCBC
b3g6OmlzRGVzY2VuZGFudE9mKGNvbnN0IENvbnRhaW5lckJveCYgYW5jZXN0b3JDYW5kaWRhdGUp
IGNvbnN0Ci17Ci0gICAgZm9yIChhdXRvKiBhbmNlc3RvciA9IHBhcmVudCgpOyBhbmNlc3Rvcjsg
YW5jZXN0b3IgPSBhbmNlc3Rvci0+cGFyZW50KCkpIHsKLSAgICAgICAgaWYgKGFuY2VzdG9yID09
ICZhbmNlc3RvckNhbmRpZGF0ZSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAg
ICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wgQm94Ojppc0NvbnRhaW5pbmdCbG9ja0Rlc2NlbmRh
bnRPZihjb25zdCBDb250YWluZXJCb3gmIGFuY2VzdG9yQ2FuZGlkYXRlKSBjb25zdAorYm9vbCBC
b3g6OmlzSW5Gb3JtYXR0aW5nQ29udGV4dE9mKGNvbnN0IENvbnRhaW5lckJveCYgZm9ybWF0dGlu
Z0NvbnRleHRSb290KSBjb25zdAogeyAKLSAgICBmb3IgKGF1dG8qIGFuY2VzdG9yID0gY29udGFp
bmluZ0Jsb2NrKCk7IGFuY2VzdG9yOyBhbmNlc3RvciA9IGFuY2VzdG9yLT5jb250YWluaW5nQmxv
Y2soKSkgewotICAgICAgICBpZiAoYW5jZXN0b3IgPT0gJmFuY2VzdG9yQ2FuZGlkYXRlKQorICAg
IEFTU0VSVChmb3JtYXR0aW5nQ29udGV4dFJvb3QuZXN0YWJsaXNoZXNGb3JtYXR0aW5nQ29udGV4
dCgpKTsKKyAgICBBU1NFUlQoIWlzSW5pdGlhbENvbnRhaW5pbmdCbG9jaygpKTsKKyAgICBhdXRv
KiBhbmNlc3RvciA9ICZjb250YWluaW5nQmxvY2soKTsKKyAgICB3aGlsZSAoYW5jZXN0b3IpIHsK
KyAgICAgICAgaWYgKGFuY2VzdG9yID09ICZmb3JtYXR0aW5nQ29udGV4dFJvb3QpCiAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgaWYgKGFuY2VzdG9yLT5pc0luaXRpYWxDb250YWlu
aW5nQmxvY2soKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgYW5jZXN0b3Ig
PSAmYW5jZXN0b3ItPmNvbnRhaW5pbmdCbG9jaygpOwogICAgIH0KKyAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2xheW91dHRyZWUvTGF5b3V0Qm94LmgKaW5kZXggNzliODA5MmQ2ZDdlZDAzOTIyMWVmY2QyMjA2
YmI3OWNkMmRjMDlmMy4uZmUzNDhlYWVjZmRlZjM4YjhmOTQ4N2ViMWU5ODA0N2UyZGYxZjU4MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94LmgKQEAgLTkz
LDEyICs5MywxMSBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzRmxvYXRpbmdPck91dE9mRmxvd1Bv
c2l0aW9uZWQoKSBjb25zdCB7IHJldHVybiBpc0Zsb2F0aW5nUG9zaXRpb25lZCgpIHx8IGlzT3V0
T2ZGbG93UG9zaXRpb25lZCgpOyB9CiAKLSAgICBjb25zdCBDb250YWluZXJCb3gqIGNvbnRhaW5p
bmdCbG9jaygpIGNvbnN0OworICAgIGNvbnN0IENvbnRhaW5lckJveCYgY29udGFpbmluZ0Jsb2Nr
KCkgY29uc3Q7CiAgICAgY29uc3QgQ29udGFpbmVyQm94JiBmb3JtYXR0aW5nQ29udGV4dFJvb3Qo
KSBjb25zdDsKICAgICBjb25zdCBDb250YWluZXJCb3gmIGluaXRpYWxDb250YWluaW5nQmxvY2so
KSBjb25zdDsKIAotICAgIGJvb2wgaXNEZXNjZW5kYW50T2YoY29uc3QgQ29udGFpbmVyQm94Jikg
Y29uc3Q7Ci0gICAgYm9vbCBpc0NvbnRhaW5pbmdCbG9ja0Rlc2NlbmRhbnRPZihjb25zdCBDb250
YWluZXJCb3gmKSBjb25zdDsKKyAgICBib29sIGlzSW5Gb3JtYXR0aW5nQ29udGV4dE9mKGNvbnN0
IENvbnRhaW5lckJveCYpIGNvbnN0OwogCiAgICAgYm9vbCBpc0Fub255bW91cygpIGNvbnN0IHsg
cmV0dXJuIG1faXNBbm9ueW1vdXM7IH0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>