<?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>192699</bug_id>
          
          <creation_ts>2018-12-14 07:50:00 -0800</creation_ts>
          <short_desc>[LFC][BFC] Transition to logical margin types.</short_desc>
          <delta_ts>2018-12-14 08:53:25 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="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>1487915</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2018-12-14 07:50:00 -0800</bug_when>
    <thetext>margin-top -&gt; margin-before etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1487918</commentid>
    <comment_count>1</comment_count>
      <attachid>357315</attachid>
    <who name="alan">zalan</who>
    <bug_when>2018-12-14 07:53:31 -0800</bug_when>
    <thetext>Created attachment 357315
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1487922</commentid>
    <comment_count>2</comment_count>
      <attachid>357315</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-12-14 08:52:31 -0800</bug_when>
    <thetext>Comment on attachment 357315
Patch

Clearing flags on attachment: 357315

Committed r239206: &lt;https://trac.webkit.org/changeset/239206&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1487923</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-12-14 08:52:33 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1487925</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-12-14 08:53:25 -0800</bug_when>
    <thetext>&lt;rdar://problem/46731504&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357315</attachid>
            <date>2018-12-14 07:53:31 -0800</date>
            <delta_ts>2018-12-14 08:52:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192699-20181214075329.patch</filename>
            <type>text/plain</type>
            <size>127462</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5MjA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2JiMTA5ZjQwMWI5YjQw
ZjZjZGE4OGNkNGRiNjkyZTk0ZDgwODQ4OC4uMmU1NjVlZTlmNTNiYWRiZjFlM2M3YTFjMzRjNjc1
MDk5ZTQxZjViMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1MSBAQAorMjAxOC0xMi0xNCAgWmFs
YW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgorCisgICAgICAgIFtMRkNdW0JGQ10gVHJhbnNp
dGlvbiB0byBsb2dpY2FsIG1hcmdpbiB0eXBlcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MjY5OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaXMgaW4gcHJlcGFyYXRpb24gZm9yIG1vdmluZyBv
dmVyIHRvIGxvZ2ljYWwgdHlwZXMuCisgICAgICAgIChUaGlzIHBhdGNoIGFsc28gdHJhbnNpdGlv
bnMgdG8gc2luZ2x1bGFyIG1hcmdpbiBuYW1pbmcgKHZlcnRpY2FsTWFyZ2lucyAtPiBWZXJ0aWNh
bE1hcmdpbikpCisKKyAgICAgICAgKiBsYXlvdXQvRm9ybWF0dGluZ0NvbnRleHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZU91dE9mRmxv
d0hvcml6b250YWxHZW9tZXRyeSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZv
cm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlT3V0T2ZGbG93VmVydGljYWxHZW9tZXRyeSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0Ojp2YWxpZGF0ZUdl
b21ldHJ5Q29uc3RyYWludHNBZnRlckxheW91dCBjb25zdCk6CisgICAgICAgICogbGF5b3V0L0Zv
cm1hdHRpbmdDb250ZXh0Lmg6CisgICAgICAgICogbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0R2Vv
bWV0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpzdGF0aWNWZXJ0aWNhbFBvc2l0
aW9uRm9yT3V0T2ZGbG93UG9zaXRpb25lZCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZv
cm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6b3V0T2ZGbG93Tm9uUmVwbGFjZWRWZXJ0aWNhbEdl
b21ldHJ5KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdl
b21ldHJ5OjpvdXRPZkZsb3dOb25SZXBsYWNlZEhvcml6b250YWxHZW9tZXRyeSk6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6b3V0T2ZGbG93
UmVwbGFjZWRWZXJ0aWNhbEdlb21ldHJ5KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9y
bWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dSZXBsYWNlZEhvcml6b250YWxHZW9t
ZXRyeSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9t
ZXRyeTo6Y29tcGxpY2F0ZWRDYXNlcyk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1h
dHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6ZmxvYXRpbmdOb25SZXBsYWNlZFdpZHRoQW5kTWFyZ2lu
KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5
OjpmbG9hdGluZ1JlcGxhY2VkV2lkdGhBbmRNYXJnaW4pOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmlubGluZVJlcGxhY2VkSGVpZ2h0QW5k
TWFyZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdl
b21ldHJ5OjppbmxpbmVSZXBsYWNlZFdpZHRoQW5kTWFyZ2luKToKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojpjb21wdXRlZE5vbkNvbGxhcHNl
ZEhvcml6b250YWxNYXJnaW5WYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1h
dHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6Y29tcHV0ZWROb25Db2xsYXBzZWRWZXJ0aWNhbE1hcmdp
blZhbHVlKToKKyAgICAgICAgKiBsYXlvdXQvRm9ybWF0dGluZ0NvbnRleHRRdWlya3MuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6UXVpcmtzOjpoZWln
aHRWYWx1ZU9mTmVhcmVzdENvbnRhaW5pbmdCbG9ja1dpdGhGaXhlZEhlaWdodCk6CisgICAgICAg
ICogbGF5b3V0L01hcmdpblR5cGVzLmg6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlZlcnRp
Y2FsTWFyZ2luOjp1c2VkVmFsdWVzIGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvVmVyaWZpY2F0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6b3V0cHV0TWlzbWF0Y2hpbmdCbG9j
a0JveEluZm9ybWF0aW9uSWZOZWVkZWQpOgorICAgICAgICAqIGxheW91dC9ibG9ja2Zvcm1hdHRp
bmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVFc3RpbWF0ZWRNYXJnaW5CZWZvcmUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpj
b21wdXRlRXN0aW1hdGVkTWFyZ2luQmVmb3JlRm9yQW5jZXN0b3JzIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6cHJlY29tcHV0ZVZlcnRp
Y2FsUG9zaXRpb25Gb3JGb3JtYXR0aW5nUm9vdElmTmVlZGVkIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6aGFzUHJlY29tcHV0ZWRNYXJnaW5CZWZvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlRmxvYXRpbmdQb3Np
dGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0Nv
bnRleHQ6OmNvbXB1dGVQb3NpdGlvblRvQXZvaWRGbG9hdHMgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlVmVydGljYWxQb3Np
dGlvbkZvckZsb2F0Q2xlYXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9j
a0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlV2lkdGhBbmRNYXJnaW4gY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlSGVpZ2h0
QW5kTWFyZ2luIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0
aW5nQ29udGV4dDo6Y29tcHV0ZUVzdGltYXRlZE1hcmdpblRvcCBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVF
c3RpbWF0ZWRNYXJnaW5Ub3BGb3JBbmNlc3RvcnMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpoYXNQcmVjb21wdXRlZE1hcmdpblRvcCk6IERlbGV0ZWQuCisgICAg
ICAgICogbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0Lmg6Cisg
ICAgICAgICogbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0R2Vv
bWV0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250
ZXh0OjpHZW9tZXRyeTo6aW5GbG93Tm9uUmVwbGFjZWRIZWlnaHRBbmRNYXJnaW4pOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5G
bG93Tm9uUmVwbGFjZWRXaWR0aEFuZE1hcmdpbik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbkZsb3dSZXBsYWNlZFdpZHRoQW5k
TWFyZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4
dDo6R2VvbWV0cnk6OnN0YXRpY1Bvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmluRmxvd0hlaWdodEFuZE1hcmdpbik6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21l
dHJ5OjppbnN0cmluc2ljV2lkdGhDb25zdHJhaW50cyk6CisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojplc3RpbWF0ZWRNYXJnaW5CZWZv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpH
ZW9tZXRyeTo6ZXN0aW1hdGVkTWFyZ2luQWZ0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6ZXN0aW1hdGVkTWFyZ2luVG9wKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4
dDo6R2VvbWV0cnk6OmVzdGltYXRlZE1hcmdpbkJvdHRvbSk6IERlbGV0ZWQuCisgICAgICAgICog
bGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0UXVpcmtzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6aGFzTWFyZ2luQmVmb3JlUXVpcmtWYWx1ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OlF1aXJrczo6
c3RyZXRjaGVkSGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0
aW5nQ29udGV4dDo6UXVpcmtzOjpzaG91bGRJZ25vcmVNYXJnaW5CZWZvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpoYXNNYXJnaW5Ub3BRdWlya1ZhbHVlKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6UXVpcmtzOjpzaG91
bGRJZ25vcmVNYXJnaW5Ub3ApOiBEZWxldGVkLgorICAgICAgICAqIGxheW91dC9ibG9ja2Zvcm1h
dHRpbmcvQmxvY2tNYXJnaW5Db2xsYXBzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OmlzTWFyZ2luQmVmb3JlQ29sbGFwc2VkV2l0aFNpYmxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0Ojppc01hcmdpbkFmdGVyQ29sbGFwc2VkV2l0aFNpYmxpbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6TWFyZ2luQ29s
bGFwc2U6OmlzTWFyZ2luQmVmb3JlQ29sbGFwc2VkV2l0aFBhcmVudCk6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6OmlzTWFyZ2luQWZ0ZXJDb2xsYXBzZWRUaHJvdWdoKToKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Ok1hcmdpbkNv
bGxhcHNlOjpjb2xsYXBzZWRNYXJnaW5CZWZvcmVGcm9tRmlyc3RDaGlsZCk6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpNYXJnaW5D
b2xsYXBzZTo6bm9uQ29sbGFwc2VkTWFyZ2luQmVmb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Ok1hcmdpbkNvbGxhcHNlOjpj
b21wdXRlZE5vbkNvbGxhcHNlZE1hcmdpbkJlZm9yZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpNYXJnaW5Db2xsYXBzZTo6Y29t
cHV0ZWROb25Db2xsYXBzZWRNYXJnaW5BZnRlcik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpNYXJnaW5Db2xsYXBzZTo6bWFyZ2lu
QmVmb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4
dDo6R2VvbWV0cnk6Ok1hcmdpbkNvbGxhcHNlOjptYXJnaW5BZnRlcik6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpNYXJnaW5Db2xs
YXBzZTo6aXNNYXJnaW5BZnRlckNvbGxhcHNlZFdpdGhQYXJlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6TWFyZ2luQ29sbGFw
c2U6OmlzTWFyZ2luQmVmb3JlQ29sbGFwc2VkV2l0aFBhcmVudE1hcmdpbkFmdGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Ok1h
cmdpbkNvbGxhcHNlOjpjb2xsYXBzZWRNYXJnaW5BZnRlckZyb21MYXN0Q2hpbGQpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6TWFy
Z2luQ29sbGFwc2U6Om5vbkNvbGxhcHNlZE1hcmdpbkFmdGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6aXNNYXJnaW5Ub3BDb2xsYXBzZWRXaXRoU2libGluZyk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXQ6OmlzTWFyZ2luQm90dG9tQ29sbGFwc2VkV2l0aFNpYmxpbmcp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250
ZXh0OjpHZW9tZXRyeTo6TWFyZ2luQ29sbGFwc2U6OmlzTWFyZ2luVG9wQ29sbGFwc2VkV2l0aFBh
cmVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OmlzTWFyZ2luQm90dG9t
Q29sbGFwc2VkVGhyb3VnaCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJs
b2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpNYXJnaW5Db2xsYXBzZTo6Y29sbGFwc2Vk
TWFyZ2luVG9wRnJvbUZpcnN0Q2hpbGQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6TWFyZ2luQ29sbGFwc2U6Om5v
bkNvbGxhcHNlZE1hcmdpblRvcCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpNYXJnaW5Db2xsYXBzZTo6Y29tcHV0
ZWROb25Db2xsYXBzZWRNYXJnaW5Ub3ApOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6TWFyZ2luQ29sbGFwc2U6OmNv
bXB1dGVkTm9uQ29sbGFwc2VkTWFyZ2luQm90dG9tKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Ok1hcmdpbkNvbGxh
cHNlOjptYXJnaW5Ub3ApOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9j
a0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6TWFyZ2luQ29sbGFwc2U6Om1hcmdpbkJvdHRv
bSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0Nv
bnRleHQ6Okdlb21ldHJ5OjpNYXJnaW5Db2xsYXBzZTo6aXNNYXJnaW5Cb3R0b21Db2xsYXBzZWRX
aXRoUGFyZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3Jt
YXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Ok1hcmdpbkNvbGxhcHNlOjppc01hcmdpblRvcENvbGxh
cHNlZFdpdGhQYXJlbnRNYXJnaW5Cb3R0b20pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6TWFyZ2luQ29sbGFwc2U6
OmNvbGxhcHNlZE1hcmdpbkJvdHRvbUZyb21MYXN0Q2hpbGQpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6TWFyZ2lu
Q29sbGFwc2U6Om5vbkNvbGxhcHNlZE1hcmdpbkJvdHRvbSk6IERlbGV0ZWQuCisgICAgICAgICog
bGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheTo6Qm94OjpCb3gpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Qm94OjptYXJnaW5C
b3ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Qm94Ojpub25Db2xsYXBzZWRN
YXJnaW5Cb3ggY29uc3QpOgorICAgICAgICAqIGxheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5Qm94
Lmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpCb3g6OnJlY3RXaXRoTWFyZ2luIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkJveDo6ZXN0aW1hdGVkTWFyZ2luQmVmb3Jl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkJveDo6c2V0RXN0aW1hdGVkTWFy
Z2luQmVmb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkJveDo6dG9wIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkJveDo6dG9wTGVmdCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5OjpCb3g6OnNldFZlcnRpY2FsTWFyZ2luKToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXk6OkJveDo6bWFyZ2luQmVmb3JlIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXk6OkJveDo6bWFyZ2luU3RhcnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheTo6Qm94OjptYXJnaW5BZnRlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5OjpCb3g6Om1hcmdpbkVuZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpC
b3g6Om5vbkNvbGxhcHNlZE1hcmdpbkJlZm9yZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5OjpCb3g6Om5vbkNvbGxhcHNlZE1hcmdpbkFmdGVyIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXk6OkJveDo6bm9uQ29tcHV0ZWRNYXJnaW5TdGFydCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5OjpCb3g6Om5vbkNvbXB1dGVkTWFyZ2luRW5kIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkJveDo6ZXN0aW1hdGVkTWFyZ2luVG9wIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkJveDo6c2V0RXN0aW1hdGVk
TWFyZ2luVG9wKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkJveDo6bWFy
Z2luVG9wIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkJveDo6
bWFyZ2luTGVmdCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpC
b3g6Om1hcmdpbkJvdHRvbSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5OjpCb3g6Om1hcmdpblJpZ2h0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXk6OkJveDo6bm9uQ29sbGFwc2VkTWFyZ2luVG9wIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkJveDo6bm9uQ29sbGFwc2VkTWFyZ2luQm90dG9tIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkJveDo6bm9uQ29tcHV0
ZWRNYXJnaW5MZWZ0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6
OkJveDo6bm9uQ29tcHV0ZWRNYXJnaW5SaWdodCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICog
bGF5b3V0L2Zsb2F0cy9GbG9hdEF2b2lkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpGbG9hdEF2b2lkZXI6OnNldEhvcml6b250YWxDb25zdHJhaW50cyk6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6OkZsb2F0QXZvaWRlcjo6aW5pdGlhbEhvcml6b250YWxQb3NpdGlvbiBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZsb2F0QXZvaWRlcjo6b3ZlcmZsb3dzQ29u
dGFpbmluZ0Jsb2NrIGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvZmxvYXRzL0Zsb2F0QXZvaWRl
ci5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGbG9hdEF2b2lkZXI6Om1hcmdpbkJlZm9y
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZsb2F0QXZvaWRlcjo6bWFyZ2lu
QWZ0ZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGbG9hdEF2b2lkZXI6Om1h
cmdpblN0YXJ0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6RmxvYXRBdm9pZGVy
OjptYXJnaW5FbmQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGbG9hdEF2b2lk
ZXI6Om1hcmdpbkJveFdpZHRoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rmxv
YXRBdm9pZGVyOjptYXJnaW5Ub3AgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0OjpGbG9hdEF2b2lkZXI6Om1hcmdpbkJvdHRvbSBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZsb2F0QXZvaWRlcjo6bWFyZ2luTGVmdCBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZsb2F0QXZvaWRlcjo6bWFyZ2luUmln
aHQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGxheW91dC9mbG9hdHMvRmxvYXRCb3guY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGbG9hdEJveDo6cmVjdCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZsb2F0Qm94Ojpob3Jpem9udGFsUG9zaXRpb25DYW5kaWRh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGbG9hdEJveDo6dmVydGljYWxQb3NpdGlv
bkNhbmRpZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZsb2F0Qm94Ojppbml0aWFs
VmVydGljYWxQb3NpdGlvbiBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2Zsb2F0cy9GbG9hdGlu
Z0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGbG9hdGluZ0NvbnRleHQ6
OnBvc2l0aW9uRm9yRmxvYXQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGbG9h
dGluZ0NvbnRleHQ6OnZlcnRpY2FsUG9zaXRpb25XaXRoQ2xlYXJhbmNlIGNvbnN0KToKKyAgICAg
ICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb2xs
ZWN0SW5saW5lQ29udGVudEZvclN1YnRyZWUgY29uc3QpOgorCiAyMDE4LTEyLTE0ICBaYWxhbiBC
dWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11bQkZDXSBJbnRyb2R1Y2Ug
VmVydGljYWxNYXJnaW4gYW5kIEhvcml6b250YWxNYXJnaW4gdHlwZXMuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmNwcAppbmRleCA4MWRkYThjNjIzOTUwNzdmN2Jl
NjI0ZDU0YWY3YTI2NzljZjU4NjM4Li5jZDhkNWM2YjM1NTJlNmFlNWY5ZDRjMDczMzI0NjQzOGYw
MWU0Mjc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRl
eHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5jcHAK
QEAgLTg3LDcgKzg3LDcgQEAgdm9pZCBGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZU91dE9mRmxv
d0hvcml6b250YWxHZW9tZXRyeShjb25zdCBCb3gmIGxheW91dEJveCkKICAgICB9CiAKICAgICBh
dXRvJiBkaXNwbGF5Qm94ID0gbGF5b3V0U3RhdGUuZGlzcGxheUJveEZvckxheW91dEJveChsYXlv
dXRCb3gpOwotICAgIGRpc3BsYXlCb3guc2V0TGVmdChob3Jpem9udGFsR2VvbWV0cnkubGVmdCAr
IGhvcml6b250YWxHZW9tZXRyeS53aWR0aEFuZE1hcmdpbi5tYXJnaW4ubGVmdCk7CisgICAgZGlz
cGxheUJveC5zZXRMZWZ0KGhvcml6b250YWxHZW9tZXRyeS5sZWZ0ICsgaG9yaXpvbnRhbEdlb21l
dHJ5LndpZHRoQW5kTWFyZ2luLm1hcmdpbi5zdGFydCk7CiAgICAgZGlzcGxheUJveC5zZXRDb250
ZW50Qm94V2lkdGgoaG9yaXpvbnRhbEdlb21ldHJ5LndpZHRoQW5kTWFyZ2luLndpZHRoKTsKICAg
ICBkaXNwbGF5Qm94LnNldEhvcml6b250YWxNYXJnaW4oaG9yaXpvbnRhbEdlb21ldHJ5LndpZHRo
QW5kTWFyZ2luLm1hcmdpbik7CiAgICAgZGlzcGxheUJveC5zZXRIb3Jpem9udGFsTm9uQ29tcHV0
ZWRNYXJnaW4oaG9yaXpvbnRhbEdlb21ldHJ5LndpZHRoQW5kTWFyZ2luLm5vbkNvbXB1dGVkTWFy
Z2luKTsKQEAgLTExNyw4ICsxMTcsOCBAQCB2b2lkIEZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRl
T3V0T2ZGbG93VmVydGljYWxHZW9tZXRyeShjb25zdCBCb3gmIGxheW91dEJveCkgYwogICAgIGF1
dG8mIGRpc3BsYXlCb3ggPSBsYXlvdXRTdGF0ZS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGxheW91
dEJveCk7CiAgICAgLy8gTWFyZ2lucyBvZiBhYnNvbHV0ZWx5IHBvc2l0aW9uZWQgYm94ZXMgZG8g
bm90IGNvbGxhcHNlCiAgICAgQVNTRVJUKCF2ZXJ0aWNhbEdlb21ldHJ5LmhlaWdodEFuZE1hcmdp
bi5tYXJnaW4uY29sbGFwc2VkVmFsdWVzKCkpOwotICAgIGF1dG8gbm9uQ29sbGFwc2VkVmVydGlj
YWxNYXJnaW5zID0gdmVydGljYWxHZW9tZXRyeS5oZWlnaHRBbmRNYXJnaW4ubWFyZ2luLm5vbkNv
bGxhcHNlZFZhbHVlcygpOwotICAgIGRpc3BsYXlCb3guc2V0VG9wKHZlcnRpY2FsR2VvbWV0cnku
dG9wICsgbm9uQ29sbGFwc2VkVmVydGljYWxNYXJnaW5zLnRvcCk7CisgICAgYXV0byBub25Db2xs
YXBzZWRWZXJ0aWNhbE1hcmdpbiA9IHZlcnRpY2FsR2VvbWV0cnkuaGVpZ2h0QW5kTWFyZ2luLm1h
cmdpbi5ub25Db2xsYXBzZWRWYWx1ZXMoKTsKKyAgICBkaXNwbGF5Qm94LnNldFRvcCh2ZXJ0aWNh
bEdlb21ldHJ5LnRvcCArIG5vbkNvbGxhcHNlZFZlcnRpY2FsTWFyZ2luLmJlZm9yZSk7CiAgICAg
ZGlzcGxheUJveC5zZXRDb250ZW50Qm94SGVpZ2h0KHZlcnRpY2FsR2VvbWV0cnkuaGVpZ2h0QW5k
TWFyZ2luLmhlaWdodCk7CiAgICAgZGlzcGxheUJveC5zZXRWZXJ0aWNhbE1hcmdpbih2ZXJ0aWNh
bEdlb21ldHJ5LmhlaWdodEFuZE1hcmdpbi5tYXJnaW4pOwogfQpAQCAtMjI0LDE2ICsyMjQsMTYg
QEAgdm9pZCBGb3JtYXR0aW5nQ29udGV4dDo6dmFsaWRhdGVHZW9tZXRyeUNvbnN0cmFpbnRzQWZ0
ZXJMYXlvdXQoKSBjb25zdAogICAgICAgICBpZiAoKGxheW91dEJveC5pc0Jsb2NrTGV2ZWxCb3go
KSB8fCBsYXlvdXRCb3guaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpICYmICFsYXlvdXRCb3gucmVw
bGFjZWQoKSkgewogICAgICAgICAgICAgLy8gbWFyZ2luLWxlZnQgKyBib3JkZXItbGVmdC13aWR0
aCArIHBhZGRpbmctbGVmdCArIHdpZHRoICsgcGFkZGluZy1yaWdodCArIGJvcmRlci1yaWdodC13
aWR0aCArIG1hcmdpbi1yaWdodCA9IHdpZHRoIG9mIGNvbnRhaW5pbmcgYmxvY2sKICAgICAgICAg
ICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrV2lkdGggPSBjb250YWluaW5nQmxvY2tEaXNwbGF5Qm94
LmNvbnRlbnRCb3hXaWR0aCgpOwotICAgICAgICAgICAgQVNTRVJUKGRpc3BsYXlCb3gubWFyZ2lu
TGVmdCgpICsgZGlzcGxheUJveC5ib3JkZXJMZWZ0KCkgKyBkaXNwbGF5Qm94LnBhZGRpbmdMZWZ0
KCkudmFsdWVfb3IoMCkgKyBkaXNwbGF5Qm94LmNvbnRlbnRCb3hXaWR0aCgpCi0gICAgICAgICAg
ICAgICAgKyBkaXNwbGF5Qm94LnBhZGRpbmdSaWdodCgpLnZhbHVlX29yKDApICsgZGlzcGxheUJv
eC5ib3JkZXJSaWdodCgpICsgZGlzcGxheUJveC5tYXJnaW5SaWdodCgpID09IGNvbnRhaW5pbmdC
bG9ja1dpZHRoKTsKKyAgICAgICAgICAgIEFTU0VSVChkaXNwbGF5Qm94Lm1hcmdpblN0YXJ0KCkg
KyBkaXNwbGF5Qm94LmJvcmRlckxlZnQoKSArIGRpc3BsYXlCb3gucGFkZGluZ0xlZnQoKS52YWx1
ZV9vcigwKSArIGRpc3BsYXlCb3guY29udGVudEJveFdpZHRoKCkKKyAgICAgICAgICAgICAgICAr
IGRpc3BsYXlCb3gucGFkZGluZ1JpZ2h0KCkudmFsdWVfb3IoMCkgKyBkaXNwbGF5Qm94LmJvcmRl
clJpZ2h0KCkgKyBkaXNwbGF5Qm94Lm1hcmdpbkVuZCgpID09IGNvbnRhaW5pbmdCbG9ja1dpZHRo
KTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIDEwLjYuNCBBYnNvbHV0ZWx5IHBvc2l0aW9uZWQs
IG5vbi1yZXBsYWNlZCBlbGVtZW50cwogICAgICAgICBpZiAobGF5b3V0Qm94LmlzT3V0T2ZGbG93
UG9zaXRpb25lZCgpICYmICFsYXlvdXRCb3gucmVwbGFjZWQoKSkgewogICAgICAgICAgICAgLy8g
dG9wICsgbWFyZ2luLXRvcCArIGJvcmRlci10b3Atd2lkdGggKyBwYWRkaW5nLXRvcCArIGhlaWdo
dCArIHBhZGRpbmctYm90dG9tICsgYm9yZGVyLWJvdHRvbS13aWR0aCArIG1hcmdpbi1ib3R0b20g
KyBib3R0b20gPSBoZWlnaHQgb2YgY29udGFpbmluZyBibG9jawogICAgICAgICAgICAgYXV0byBj
b250YWluaW5nQmxvY2tIZWlnaHQgPSBjb250YWluaW5nQmxvY2tEaXNwbGF5Qm94LmNvbnRlbnRC
b3hIZWlnaHQoKTsKLSAgICAgICAgICAgIEFTU0VSVChkaXNwbGF5Qm94LnRvcCgpICsgZGlzcGxh
eUJveC5tYXJnaW5Ub3AoKSArIGRpc3BsYXlCb3guYm9yZGVyVG9wKCkgKyBkaXNwbGF5Qm94LnBh
ZGRpbmdUb3AoKS52YWx1ZV9vcigwKSArIGRpc3BsYXlCb3guY29udGVudEJveEhlaWdodCgpCi0g
ICAgICAgICAgICAgICAgKyBkaXNwbGF5Qm94LnBhZGRpbmdCb3R0b20oKS52YWx1ZV9vcigwKSAr
IGRpc3BsYXlCb3guYm9yZGVyQm90dG9tKCkgKyBkaXNwbGF5Qm94Lm1hcmdpbkJvdHRvbSgpID09
IGNvbnRhaW5pbmdCbG9ja0hlaWdodCk7CisgICAgICAgICAgICBBU1NFUlQoZGlzcGxheUJveC50
b3AoKSArIGRpc3BsYXlCb3gubWFyZ2luQmVmb3JlKCkgKyBkaXNwbGF5Qm94LmJvcmRlclRvcCgp
ICsgZGlzcGxheUJveC5wYWRkaW5nVG9wKCkudmFsdWVfb3IoMCkgKyBkaXNwbGF5Qm94LmNvbnRl
bnRCb3hIZWlnaHQoKQorICAgICAgICAgICAgICAgICsgZGlzcGxheUJveC5wYWRkaW5nQm90dG9t
KCkudmFsdWVfb3IoMCkgKyBkaXNwbGF5Qm94LmJvcmRlckJvdHRvbSgpICsgZGlzcGxheUJveC5t
YXJnaW5BZnRlcigpID09IGNvbnRhaW5pbmdCbG9ja0hlaWdodCk7CiAgICAgICAgIH0KICAgICB9
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHQu
aCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5oCmluZGV4IDUwYjM4
NjNlYzUzMzdlNDExODFiNjgxYmNmZDMwZTJkMGYyNGEzM2EuLjMyMTYzMDJlYzlkZjJmNjZkYTNl
YWQ0NzYwMDY1ODM0MjMyZjBhOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9G
b3JtYXR0aW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5n
Q29udGV4dC5oCkBAIC04Niw3ICs4Niw3IEBAIHByb3RlY3RlZDoKIAogICAgICAgICBzdGF0aWMg
SGVpZ2h0QW5kTWFyZ2luIGlubGluZVJlcGxhY2VkSGVpZ2h0QW5kTWFyZ2luKGNvbnN0IExheW91
dFN0YXRlJiwgY29uc3QgQm94Jiwgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiB1c2VkSGVpZ2h0
ID0geyB9KTsKICAgICAgICAgc3RhdGljIFdpZHRoQW5kTWFyZ2luIGlubGluZVJlcGxhY2VkV2lk
dGhBbmRNYXJnaW4oY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmLCBzdGQ6Om9wdGlvbmFs
PExheW91dFVuaXQ+IHVzZWRXaWR0aCA9IHsgfSwgCi0gICAgICAgICAgICBzdGQ6Om9wdGlvbmFs
PExheW91dFVuaXQ+IHByZWNvbXB1dGVkTWFyZ2luTGVmdCA9IHsgfSwgc3RkOjpvcHRpb25hbDxM
YXlvdXRVbml0PiBwcmVjb21wdXRlZE1hcmdpblJpZ2h0ID0geyB9KTsKKyAgICAgICAgICAgIHN0
ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gcHJlY29tcHV0ZWRNYXJnaW5TdGFydCA9IHsgfSwgc3Rk
OjpvcHRpb25hbDxMYXlvdXRVbml0PiBwcmVjb21wdXRlZE1hcmdpbkVuZCA9IHsgfSk7CiAKICAg
ICAgICAgc3RhdGljIExheW91dFNpemUgaW5GbG93UG9zaXRpb25lZFBvc2l0aW9uT2Zmc2V0KGNv
bnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcAppbmRleCBkMWZlODhlMDEzNDMz
Zjc0Y2I4MDNiZDk2ODBiYmVmNWI2YmI1MTQwLi4xNGJiYTFlYjM0MDU1YmVkYjRiNGI0ODY4NTA2
ZjAxZWQxNWExMjE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGlu
Z0NvbnRleHRHZW9tZXRyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRp
bmdDb250ZXh0R2VvbWV0cnkuY3BwCkBAIC0xODYsNyArMTg2LDcgQEAgc3RhdGljIExheW91dFVu
aXQgc3RhdGljVmVydGljYWxQb3NpdGlvbkZvck91dE9mRmxvd1Bvc2l0aW9uZWQoY29uc3QgTGF5
b3V0U3RhdGUKICAgICBpZiAoYXV0byogcHJldmlvdXNJbkZsb3dTaWJsaW5nID0gbGF5b3V0Qm94
LnByZXZpb3VzSW5GbG93U2libGluZygpKSB7CiAgICAgICAgIC8vIEFkZCBzaWJsaW5nIG9mZnNl
dAogICAgICAgICBhdXRvJiBwcmV2aW91c0luRmxvd0Rpc3BsYXlCb3ggPSBsYXlvdXRTdGF0ZS5k
aXNwbGF5Qm94Rm9yTGF5b3V0Qm94KCpwcmV2aW91c0luRmxvd1NpYmxpbmcpOwotICAgICAgICB0
b3AgKz0gcHJldmlvdXNJbkZsb3dEaXNwbGF5Qm94LmJvdHRvbSgpICsgcHJldmlvdXNJbkZsb3dE
aXNwbGF5Qm94Lm5vbkNvbGxhcHNlZE1hcmdpbkJvdHRvbSgpOworICAgICAgICB0b3AgKz0gcHJl
dmlvdXNJbkZsb3dEaXNwbGF5Qm94LmJvdHRvbSgpICsgcHJldmlvdXNJbkZsb3dEaXNwbGF5Qm94
Lm5vbkNvbGxhcHNlZE1hcmdpbkFmdGVyKCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgQVNTRVJU
KGxheW91dEJveC5wYXJlbnQoKSk7CiAgICAgICAgIHRvcCA9IGxheW91dFN0YXRlLmRpc3BsYXlC
b3hGb3JMYXlvdXRCb3goKmxheW91dEJveC5wYXJlbnQoKSkuY29udGVudEJveFRvcCgpOwpAQCAt
MjgwLDggKzI4MCw4IEBAIFZlcnRpY2FsR2VvbWV0cnkgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21l
dHJ5OjpvdXRPZkZsb3dOb25SZXBsYWNlZFZlcnRpY2FsR2VvbWV0CiAgICAgYXV0byB0b3AgPSBj
b21wdXRlZFZhbHVlSWZOb3RBdXRvKHN0eWxlLmxvZ2ljYWxUb3AoKSwgY29udGFpbmluZ0Jsb2Nr
V2lkdGgpOwogICAgIGF1dG8gYm90dG9tID0gY29tcHV0ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5s
b2dpY2FsQm90dG9tKCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKTsKICAgICBhdXRvIGhlaWdodCA9
IHVzZWRIZWlnaHQgPyB1c2VkSGVpZ2h0LnZhbHVlKCkgOiBjb21wdXRlZEhlaWdodFZhbHVlKGxh
eW91dFN0YXRlLCBsYXlvdXRCb3gsIEhlaWdodFR5cGU6Ok5vcm1hbCk7Ci0gICAgYXV0byBtYXJn
aW5Ub3AgPSBjb21wdXRlZFZhbHVlSWZOb3RBdXRvKHN0eWxlLm1hcmdpblRvcCgpLCBjb250YWlu
aW5nQmxvY2tXaWR0aCk7Ci0gICAgYXV0byBtYXJnaW5Cb3R0b20gPSBjb21wdXRlZFZhbHVlSWZO
b3RBdXRvKHN0eWxlLm1hcmdpbkJvdHRvbSgpLCBjb250YWluaW5nQmxvY2tXaWR0aCk7CisgICAg
YXV0byBtYXJnaW5CZWZvcmUgPSBjb21wdXRlZFZhbHVlSWZOb3RBdXRvKHN0eWxlLm1hcmdpbkJl
Zm9yZSgpLCBjb250YWluaW5nQmxvY2tXaWR0aCk7CisgICAgYXV0byBtYXJnaW5BZnRlciA9IGNv
bXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5bGUubWFyZ2luQWZ0ZXIoKSwgY29udGFpbmluZ0Jsb2Nr
V2lkdGgpOwogICAgIGF1dG8gcGFkZGluZ1RvcCA9IGRpc3BsYXlCb3gucGFkZGluZ1RvcCgpLnZh
bHVlX29yKDApOwogICAgIGF1dG8gcGFkZGluZ0JvdHRvbSA9IGRpc3BsYXlCb3gucGFkZGluZ0Jv
dHRvbSgpLnZhbHVlX29yKDApOwogICAgIGF1dG8gYm9yZGVyVG9wID0gZGlzcGxheUJveC5ib3Jk
ZXJUb3AoKTsKQEAgLTI5MSw3MiArMjkxLDcyIEBAIFZlcnRpY2FsR2VvbWV0cnkgRm9ybWF0dGlu
Z0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dOb25SZXBsYWNlZFZlcnRpY2FsR2VvbWV0CiAg
ICAgICAgIHRvcCA9IHN0YXRpY1ZlcnRpY2FsUG9zaXRpb25Gb3JPdXRPZkZsb3dQb3NpdGlvbmVk
KGxheW91dFN0YXRlLCBsYXlvdXRCb3gpOwogCiAgICAgaWYgKHRvcCAmJiBoZWlnaHQgJiYgYm90
dG9tKSB7Ci0gICAgICAgIGlmICghbWFyZ2luVG9wICYmICFtYXJnaW5Cb3R0b20pIHsKLSAgICAg
ICAgICAgIGF1dG8gbWFyZ2luVG9wQW5kQm90dG9tID0gY29udGFpbmluZ0Jsb2NrSGVpZ2h0IC0g
KCp0b3AgKyBib3JkZXJUb3AgKyBwYWRkaW5nVG9wICsgKmhlaWdodCArIHBhZGRpbmdCb3R0b20g
KyBib3JkZXJCb3R0b20gKyAqYm90dG9tKTsKLSAgICAgICAgICAgIG1hcmdpblRvcCA9IG1hcmdp
bkJvdHRvbSA9IG1hcmdpblRvcEFuZEJvdHRvbSAvIDI7Ci0gICAgICAgIH0gZWxzZSBpZiAoIW1h
cmdpblRvcCkKLSAgICAgICAgICAgIG1hcmdpblRvcCA9IGNvbnRhaW5pbmdCbG9ja0hlaWdodCAt
ICgqdG9wICsgYm9yZGVyVG9wICsgcGFkZGluZ1RvcCArICpoZWlnaHQgKyBwYWRkaW5nQm90dG9t
ICsgYm9yZGVyQm90dG9tICsgKm1hcmdpbkJvdHRvbSArICpib3R0b20pOworICAgICAgICBpZiAo
IW1hcmdpbkJlZm9yZSAmJiAhbWFyZ2luQWZ0ZXIpIHsKKyAgICAgICAgICAgIGF1dG8gbWFyZ2lu
QmVmb3JlQW5kQWZ0ZXIgPSBjb250YWluaW5nQmxvY2tIZWlnaHQgLSAoKnRvcCArIGJvcmRlclRv
cCArIHBhZGRpbmdUb3AgKyAqaGVpZ2h0ICsgcGFkZGluZ0JvdHRvbSArIGJvcmRlckJvdHRvbSAr
ICpib3R0b20pOworICAgICAgICAgICAgbWFyZ2luQmVmb3JlID0gbWFyZ2luQWZ0ZXIgPSBtYXJn
aW5CZWZvcmVBbmRBZnRlciAvIDI7CisgICAgICAgIH0gZWxzZSBpZiAoIW1hcmdpbkJlZm9yZSkK
KyAgICAgICAgICAgIG1hcmdpbkJlZm9yZSA9IGNvbnRhaW5pbmdCbG9ja0hlaWdodCAtICgqdG9w
ICsgYm9yZGVyVG9wICsgcGFkZGluZ1RvcCArICpoZWlnaHQgKyBwYWRkaW5nQm90dG9tICsgYm9y
ZGVyQm90dG9tICsgKm1hcmdpbkFmdGVyICsgKmJvdHRvbSk7CiAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIG1hcmdpbkJvdHRvbSA9IGNvbnRhaW5pbmdCbG9ja0hlaWdodCAtICgqdG9wICsgKm1h
cmdpblRvcCArIGJvcmRlclRvcCArIHBhZGRpbmdUb3AgKyAqaGVpZ2h0ICsgcGFkZGluZ0JvdHRv
bSArIGJvcmRlckJvdHRvbSArICpib3R0b20pOworICAgICAgICAgICAgbWFyZ2luQWZ0ZXIgPSBj
b250YWluaW5nQmxvY2tIZWlnaHQgLSAoKnRvcCArICptYXJnaW5CZWZvcmUgKyBib3JkZXJUb3Ag
KyBwYWRkaW5nVG9wICsgKmhlaWdodCArIHBhZGRpbmdCb3R0b20gKyBib3JkZXJCb3R0b20gKyAq
Ym90dG9tKTsKICAgICAgICAgLy8gT3Zlci1jb25zdHJhaW5lZD8KLSAgICAgICAgYXV0byBib3hI
ZWlnaHQgPSAqdG9wICsgKm1hcmdpblRvcCArIGJvcmRlclRvcCArIHBhZGRpbmdUb3AgKyAqaGVp
Z2h0ICsgcGFkZGluZ0JvdHRvbSArIGJvcmRlckJvdHRvbSArICptYXJnaW5Cb3R0b20gKyAqYm90
dG9tOworICAgICAgICBhdXRvIGJveEhlaWdodCA9ICp0b3AgKyAqbWFyZ2luQmVmb3JlICsgYm9y
ZGVyVG9wICsgcGFkZGluZ1RvcCArICpoZWlnaHQgKyBwYWRkaW5nQm90dG9tICsgYm9yZGVyQm90
dG9tICsgKm1hcmdpbkFmdGVyICsgKmJvdHRvbTsKICAgICAgICAgaWYgKGJveEhlaWdodCA+IGNv
bnRhaW5pbmdCbG9ja0hlaWdodCkKLSAgICAgICAgICAgIGJvdHRvbSA9IGNvbnRhaW5pbmdCbG9j
a0hlaWdodCAtICgqdG9wICsgKm1hcmdpblRvcCArIGJvcmRlclRvcCArIHBhZGRpbmdUb3AgKyAq
aGVpZ2h0ICsgcGFkZGluZ0JvdHRvbSArIGJvcmRlckJvdHRvbSArICptYXJnaW5Cb3R0b20pOyAK
KyAgICAgICAgICAgIGJvdHRvbSA9IGNvbnRhaW5pbmdCbG9ja0hlaWdodCAtICgqdG9wICsgKm1h
cmdpbkJlZm9yZSArIGJvcmRlclRvcCArIHBhZGRpbmdUb3AgKyAqaGVpZ2h0ICsgcGFkZGluZ0Jv
dHRvbSArIGJvcmRlckJvdHRvbSArICptYXJnaW5BZnRlcik7IAogICAgIH0KIAogICAgIGlmICgh
dG9wICYmICFoZWlnaHQgJiYgYm90dG9tKSB7CiAgICAgICAgIC8vICMxCiAgICAgICAgIGhlaWdo
dCA9IGNvbnRlbnRIZWlnaHRGb3JGb3JtYXR0aW5nQ29udGV4dFJvb3QobGF5b3V0U3RhdGUsIGxh
eW91dEJveCk7Ci0gICAgICAgIG1hcmdpblRvcCA9IG1hcmdpblRvcC52YWx1ZV9vcigwKTsKLSAg
ICAgICAgbWFyZ2luQm90dG9tID0gbWFyZ2luQm90dG9tLnZhbHVlX29yKDApOwotICAgICAgICB0
b3AgPSBjb250YWluaW5nQmxvY2tIZWlnaHQgLSAoKm1hcmdpblRvcCArIGJvcmRlclRvcCArIHBh
ZGRpbmdUb3AgKyAqaGVpZ2h0ICsgcGFkZGluZ0JvdHRvbSArIGJvcmRlckJvdHRvbSArICptYXJn
aW5Cb3R0b20gKyAqYm90dG9tKTsgCisgICAgICAgIG1hcmdpbkJlZm9yZSA9IG1hcmdpbkJlZm9y
ZS52YWx1ZV9vcigwKTsKKyAgICAgICAgbWFyZ2luQWZ0ZXIgPSBtYXJnaW5BZnRlci52YWx1ZV9v
cigwKTsKKyAgICAgICAgdG9wID0gY29udGFpbmluZ0Jsb2NrSGVpZ2h0IC0gKCptYXJnaW5CZWZv
cmUgKyBib3JkZXJUb3AgKyBwYWRkaW5nVG9wICsgKmhlaWdodCArIHBhZGRpbmdCb3R0b20gKyBi
b3JkZXJCb3R0b20gKyAqbWFyZ2luQWZ0ZXIgKyAqYm90dG9tKTsgCiAgICAgfQogCiAgICAgaWYg
KCF0b3AgJiYgIWJvdHRvbSAmJiBoZWlnaHQpIHsKICAgICAgICAgLy8gIzIKICAgICAgICAgdG9w
ID0gc3RhdGljVmVydGljYWxQb3NpdGlvbkZvck91dE9mRmxvd1Bvc2l0aW9uZWQobGF5b3V0U3Rh
dGUsIGxheW91dEJveCk7Ci0gICAgICAgIG1hcmdpblRvcCA9IG1hcmdpblRvcC52YWx1ZV9vcigw
KTsKLSAgICAgICAgbWFyZ2luQm90dG9tID0gbWFyZ2luQm90dG9tLnZhbHVlX29yKDApOwotICAg
ICAgICBib3R0b20gPSBjb250YWluaW5nQmxvY2tIZWlnaHQgLSAoKnRvcCArICptYXJnaW5Ub3Ag
KyBib3JkZXJUb3AgKyBwYWRkaW5nVG9wICsgKmhlaWdodCArIHBhZGRpbmdCb3R0b20gKyBib3Jk
ZXJCb3R0b20gKyAqbWFyZ2luQm90dG9tKTsgCisgICAgICAgIG1hcmdpbkJlZm9yZSA9IG1hcmdp
bkJlZm9yZS52YWx1ZV9vcigwKTsKKyAgICAgICAgbWFyZ2luQWZ0ZXIgPSBtYXJnaW5BZnRlci52
YWx1ZV9vcigwKTsKKyAgICAgICAgYm90dG9tID0gY29udGFpbmluZ0Jsb2NrSGVpZ2h0IC0gKCp0
b3AgKyAqbWFyZ2luQmVmb3JlICsgYm9yZGVyVG9wICsgcGFkZGluZ1RvcCArICpoZWlnaHQgKyBw
YWRkaW5nQm90dG9tICsgYm9yZGVyQm90dG9tICsgKm1hcmdpbkFmdGVyKTsgCiAgICAgfQogCiAg
ICAgaWYgKCFoZWlnaHQgJiYgIWJvdHRvbSAmJiB0b3ApIHsKICAgICAgICAgLy8gIzMKICAgICAg
ICAgaGVpZ2h0ID0gY29udGVudEhlaWdodEZvckZvcm1hdHRpbmdDb250ZXh0Um9vdChsYXlvdXRT
dGF0ZSwgbGF5b3V0Qm94KTsKLSAgICAgICAgbWFyZ2luVG9wID0gbWFyZ2luVG9wLnZhbHVlX29y
KDApOwotICAgICAgICBtYXJnaW5Cb3R0b20gPSBtYXJnaW5Cb3R0b20udmFsdWVfb3IoMCk7Ci0g
ICAgICAgIGJvdHRvbSA9IGNvbnRhaW5pbmdCbG9ja0hlaWdodCAtICgqdG9wICsgKm1hcmdpblRv
cCArIGJvcmRlclRvcCArIHBhZGRpbmdUb3AgKyAqaGVpZ2h0ICsgcGFkZGluZ0JvdHRvbSArIGJv
cmRlckJvdHRvbSArICptYXJnaW5Cb3R0b20pOyAKKyAgICAgICAgbWFyZ2luQmVmb3JlID0gbWFy
Z2luQmVmb3JlLnZhbHVlX29yKDApOworICAgICAgICBtYXJnaW5BZnRlciA9IG1hcmdpbkFmdGVy
LnZhbHVlX29yKDApOworICAgICAgICBib3R0b20gPSBjb250YWluaW5nQmxvY2tIZWlnaHQgLSAo
KnRvcCArICptYXJnaW5CZWZvcmUgKyBib3JkZXJUb3AgKyBwYWRkaW5nVG9wICsgKmhlaWdodCAr
IHBhZGRpbmdCb3R0b20gKyBib3JkZXJCb3R0b20gKyAqbWFyZ2luQWZ0ZXIpOyAKICAgICB9CiAK
ICAgICBpZiAoIXRvcCAmJiBoZWlnaHQgJiYgYm90dG9tKSB7CiAgICAgICAgIC8vICM0Ci0gICAg
ICAgIG1hcmdpblRvcCA9IG1hcmdpblRvcC52YWx1ZV9vcigwKTsKLSAgICAgICAgbWFyZ2luQm90
dG9tID0gbWFyZ2luQm90dG9tLnZhbHVlX29yKDApOwotICAgICAgICB0b3AgPSBjb250YWluaW5n
QmxvY2tIZWlnaHQgLSAoKm1hcmdpblRvcCArIGJvcmRlclRvcCArIHBhZGRpbmdUb3AgKyAqaGVp
Z2h0ICsgcGFkZGluZ0JvdHRvbSArIGJvcmRlckJvdHRvbSArICptYXJnaW5Cb3R0b20gKyAqYm90
dG9tKTsgCisgICAgICAgIG1hcmdpbkJlZm9yZSA9IG1hcmdpbkJlZm9yZS52YWx1ZV9vcigwKTsK
KyAgICAgICAgbWFyZ2luQWZ0ZXIgPSBtYXJnaW5BZnRlci52YWx1ZV9vcigwKTsKKyAgICAgICAg
dG9wID0gY29udGFpbmluZ0Jsb2NrSGVpZ2h0IC0gKCptYXJnaW5CZWZvcmUgKyBib3JkZXJUb3Ag
KyBwYWRkaW5nVG9wICsgKmhlaWdodCArIHBhZGRpbmdCb3R0b20gKyBib3JkZXJCb3R0b20gKyAq
bWFyZ2luQWZ0ZXIgKyAqYm90dG9tKTsgCiAgICAgfQogCiAgICAgaWYgKCFoZWlnaHQgJiYgdG9w
ICYmIGJvdHRvbSkgewogICAgICAgICAvLyAjNQotICAgICAgICBtYXJnaW5Ub3AgPSBtYXJnaW5U
b3AudmFsdWVfb3IoMCk7Ci0gICAgICAgIG1hcmdpbkJvdHRvbSA9IG1hcmdpbkJvdHRvbS52YWx1
ZV9vcigwKTsKLSAgICAgICAgaGVpZ2h0ID0gY29udGFpbmluZ0Jsb2NrSGVpZ2h0IC0gKCp0b3Ag
KyAqbWFyZ2luVG9wICsgYm9yZGVyVG9wICsgcGFkZGluZ1RvcCArIHBhZGRpbmdCb3R0b20gKyBi
b3JkZXJCb3R0b20gKyAqbWFyZ2luQm90dG9tICsgKmJvdHRvbSk7IAorICAgICAgICBtYXJnaW5C
ZWZvcmUgPSBtYXJnaW5CZWZvcmUudmFsdWVfb3IoMCk7CisgICAgICAgIG1hcmdpbkFmdGVyID0g
bWFyZ2luQWZ0ZXIudmFsdWVfb3IoMCk7CisgICAgICAgIGhlaWdodCA9IGNvbnRhaW5pbmdCbG9j
a0hlaWdodCAtICgqdG9wICsgKm1hcmdpbkJlZm9yZSArIGJvcmRlclRvcCArIHBhZGRpbmdUb3Ag
KyBwYWRkaW5nQm90dG9tICsgYm9yZGVyQm90dG9tICsgKm1hcmdpbkFmdGVyICsgKmJvdHRvbSk7
IAogICAgIH0KIAogICAgIGlmICghYm90dG9tICYmIHRvcCAmJiBoZWlnaHQpIHsKICAgICAgICAg
Ly8gIzYKLSAgICAgICAgbWFyZ2luVG9wID0gbWFyZ2luVG9wLnZhbHVlX29yKDApOwotICAgICAg
ICBtYXJnaW5Cb3R0b20gPSBtYXJnaW5Cb3R0b20udmFsdWVfb3IoMCk7Ci0gICAgICAgIGJvdHRv
bSA9IGNvbnRhaW5pbmdCbG9ja0hlaWdodCAtICgqdG9wICsgKm1hcmdpblRvcCArIGJvcmRlclRv
cCArIHBhZGRpbmdUb3AgKyAqaGVpZ2h0ICsgcGFkZGluZ0JvdHRvbSArIGJvcmRlckJvdHRvbSAr
ICptYXJnaW5Cb3R0b20pOyAKKyAgICAgICAgbWFyZ2luQmVmb3JlID0gbWFyZ2luQmVmb3JlLnZh
bHVlX29yKDApOworICAgICAgICBtYXJnaW5BZnRlciA9IG1hcmdpbkFmdGVyLnZhbHVlX29yKDAp
OworICAgICAgICBib3R0b20gPSBjb250YWluaW5nQmxvY2tIZWlnaHQgLSAoKnRvcCArICptYXJn
aW5CZWZvcmUgKyBib3JkZXJUb3AgKyBwYWRkaW5nVG9wICsgKmhlaWdodCArIHBhZGRpbmdCb3R0
b20gKyBib3JkZXJCb3R0b20gKyAqbWFyZ2luQWZ0ZXIpOyAKICAgICB9CiAKICAgICBBU1NFUlQo
dG9wKTsKICAgICBBU1NFUlQoYm90dG9tKTsKICAgICBBU1NFUlQoaGVpZ2h0KTsKLSAgICBBU1NF
UlQobWFyZ2luVG9wKTsKLSAgICBBU1NFUlQobWFyZ2luQm90dG9tKTsKKyAgICBBU1NFUlQobWFy
Z2luQmVmb3JlKTsKKyAgICBBU1NFUlQobWFyZ2luQWZ0ZXIpOwogCi0gICAgTE9HX1dJVEhfU1RS
RUFNKEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LCBzdHJlYW0gPDwgIltQb3NpdGlvbl1bSGVpZ2h0
XVtNYXJnaW5dIC0+IG91dC1vZi1mbG93IG5vbi1yZXBsYWNlZCAtPiB0b3AoIiA8PCAqdG9wIDw8
ICJweCkgYm90dG9tKCIgIDw8ICpib3R0b20gPDwgInB4KSBoZWlnaHQoIiA8PCAqaGVpZ2h0IDw8
ICJweCkgbWFyZ2luKCIgPDwgKm1hcmdpblRvcCA8PCAicHgsICIgIDw8ICptYXJnaW5Cb3R0b20g
PDwgInB4KSBsYXlvdXRCb3goIiA8PCAmbGF5b3V0Qm94IDw8ICIpIik7Ci0gICAgcmV0dXJuIHsg
KnRvcCwgKmJvdHRvbSwgeyAqaGVpZ2h0LCB7IHsgKm1hcmdpblRvcCwgKm1hcmdpbkJvdHRvbSB9
LCB7IH0gfSB9IH07CisgICAgTE9HX1dJVEhfU1RSRUFNKEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0
LCBzdHJlYW0gPDwgIltQb3NpdGlvbl1bSGVpZ2h0XVtNYXJnaW5dIC0+IG91dC1vZi1mbG93IG5v
bi1yZXBsYWNlZCAtPiB0b3AoIiA8PCAqdG9wIDw8ICJweCkgYm90dG9tKCIgIDw8ICpib3R0b20g
PDwgInB4KSBoZWlnaHQoIiA8PCAqaGVpZ2h0IDw8ICJweCkgbWFyZ2luKCIgPDwgKm1hcmdpbkJl
Zm9yZSA8PCAicHgsICIgIDw8ICptYXJnaW5BZnRlciA8PCAicHgpIGxheW91dEJveCgiIDw8ICZs
YXlvdXRCb3ggPDwgIikiKTsKKyAgICByZXR1cm4geyAqdG9wLCAqYm90dG9tLCB7ICpoZWlnaHQs
IHsgeyAqbWFyZ2luQmVmb3JlLCAqbWFyZ2luQWZ0ZXIgfSwgeyB9IH0gfSB9OwogfQogCiBIb3Jp
em9udGFsR2VvbWV0cnkgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dOb25S
ZXBsYWNlZEhvcml6b250YWxHZW9tZXRyeShMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0
IEJveCYgbGF5b3V0Qm94LCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IHVzZWRXaWR0aCkKQEAg
LTM5OCwxMCArMzk4LDEwIEBAIEhvcml6b250YWxHZW9tZXRyeSBGb3JtYXR0aW5nQ29udGV4dDo6
R2VvbWV0cnk6Om91dE9mRmxvd05vblJlcGxhY2VkSG9yaXpvbnRhbEdlCiAgICAgYXV0byBsZWZ0
ID0gY29tcHV0ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5sb2dpY2FsTGVmdCgpLCBjb250YWluaW5n
QmxvY2tXaWR0aCk7CiAgICAgYXV0byByaWdodCA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5
bGUubG9naWNhbFJpZ2h0KCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKTsKICAgICBhdXRvIHdpZHRo
ID0gY29tcHV0ZWRWYWx1ZUlmTm90QXV0byh1c2VkV2lkdGggPyBMZW5ndGggeyB1c2VkV2lkdGgu
dmFsdWUoKSwgRml4ZWQgfSA6IHN0eWxlLmxvZ2ljYWxXaWR0aCgpLCBjb250YWluaW5nQmxvY2tX
aWR0aCk7Ci0gICAgYXV0byBtYXJnaW5MZWZ0ID0gY29tcHV0ZWRWYWx1ZUlmTm90QXV0byhzdHls
ZS5tYXJnaW5MZWZ0KCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKTsKLSAgICBhdXRvIG1hcmdpblJp
Z2h0ID0gY29tcHV0ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5tYXJnaW5SaWdodCgpLCBjb250YWlu
aW5nQmxvY2tXaWR0aCk7Ci0gICAgYXV0byBub25Db21wdXRlZE1hcmdpbkxlZnQgPSBtYXJnaW5M
ZWZ0LnZhbHVlX29yKDApOwotICAgIGF1dG8gbm9uQ29tcHV0ZWRNYXJnaW5SaWdodCA9IG1hcmdp
blJpZ2h0LnZhbHVlX29yKDApOworICAgIGF1dG8gbWFyZ2luU3RhcnQgPSBjb21wdXRlZFZhbHVl
SWZOb3RBdXRvKHN0eWxlLm1hcmdpblN0YXJ0KCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKTsKKyAg
ICBhdXRvIG1hcmdpbkVuZCA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5bGUubWFyZ2luRW5k
KCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKTsKKyAgICBhdXRvIG5vbkNvbXB1dGVkTWFyZ2luU3Rh
cnQgPSBtYXJnaW5TdGFydC52YWx1ZV9vcigwKTsKKyAgICBhdXRvIG5vbkNvbXB1dGVkTWFyZ2lu
RW5kID0gbWFyZ2luRW5kLnZhbHVlX29yKDApOwogICAgIGF1dG8gcGFkZGluZ0xlZnQgPSBkaXNw
bGF5Qm94LnBhZGRpbmdMZWZ0KCkudmFsdWVfb3IoMCk7CiAgICAgYXV0byBwYWRkaW5nUmlnaHQg
PSBkaXNwbGF5Qm94LnBhZGRpbmdSaWdodCgpLnZhbHVlX29yKDApOwogICAgIGF1dG8gYm9yZGVy
TGVmdCA9IGRpc3BsYXlCb3guYm9yZGVyTGVmdCgpOwpAQCAtNDExLDggKzQxMSw4IEBAIEhvcml6
b250YWxHZW9tZXRyeSBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9mRmxvd05vblJl
cGxhY2VkSG9yaXpvbnRhbEdlCiAgICAgICAgIC8vIElmIGFsbCB0aHJlZSBvZiAnbGVmdCcsICd3
aWR0aCcsIGFuZCAncmlnaHQnIGFyZSAnYXV0byc6IEZpcnN0IHNldCBhbnkgJ2F1dG8nIHZhbHVl
cyBmb3IgJ21hcmdpbi1sZWZ0JyBhbmQgJ21hcmdpbi1yaWdodCcgdG8gMC4KICAgICAgICAgLy8g
VGhlbiwgaWYgdGhlICdkaXJlY3Rpb24nIHByb3BlcnR5IG9mIHRoZSBlbGVtZW50IGVzdGFibGlz
aGluZyB0aGUgc3RhdGljLXBvc2l0aW9uIGNvbnRhaW5pbmcgYmxvY2sgaXMgJ2x0cicgc2V0ICds
ZWZ0JyB0byB0aGUgc3RhdGljCiAgICAgICAgIC8vIHBvc2l0aW9uIGFuZCBhcHBseSBydWxlIG51
bWJlciB0aHJlZSBiZWxvdzsgb3RoZXJ3aXNlLCBzZXQgJ3JpZ2h0JyB0byB0aGUgc3RhdGljIHBv
c2l0aW9uIGFuZCBhcHBseSBydWxlIG51bWJlciBvbmUgYmVsb3cuCi0gICAgICAgIG1hcmdpbkxl
ZnQgPSBtYXJnaW5MZWZ0LnZhbHVlX29yKDApOwotICAgICAgICBtYXJnaW5SaWdodCA9IG1hcmdp
blJpZ2h0LnZhbHVlX29yKDApOworICAgICAgICBtYXJnaW5TdGFydCA9IG1hcmdpblN0YXJ0LnZh
bHVlX29yKDApOworICAgICAgICBtYXJnaW5FbmQgPSBtYXJnaW5FbmQudmFsdWVfb3IoMCk7CiAK
ICAgICAgICAgYXV0byBzdGF0aWNIb3Jpem9udGFsUG9zaXRpb24gPSBzdGF0aWNIb3Jpem9udGFs
UG9zaXRpb25Gb3JPdXRPZkZsb3dQb3NpdGlvbmVkKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpOwog
ICAgICAgICBpZiAoaXNMZWZ0VG9SaWdodERpcmVjdGlvbikKQEAgLTQyNSw4NCArNDI1LDg0IEBA
IEhvcml6b250YWxHZW9tZXRyeSBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9mRmxv
d05vblJlcGxhY2VkSG9yaXpvbnRhbEdlCiAgICAgICAgIC8vIHNvbHZlIGZvciAnbWFyZ2luLXJp
Z2h0JyAoJ21hcmdpbi1sZWZ0JykuIElmIG9uZSBvZiAnbWFyZ2luLWxlZnQnIG9yICdtYXJnaW4t
cmlnaHQnIGlzICdhdXRvJywgc29sdmUgdGhlIGVxdWF0aW9uIGZvciB0aGF0IHZhbHVlLgogICAg
ICAgICAvLyBJZiB0aGUgdmFsdWVzIGFyZSBvdmVyLWNvbnN0cmFpbmVkLCBpZ25vcmUgdGhlIHZh
bHVlIGZvciAnbGVmdCcgKGluIGNhc2UgdGhlICdkaXJlY3Rpb24nIHByb3BlcnR5IG9mIHRoZSBj
b250YWluaW5nIGJsb2NrIGlzICdydGwnKSBvciAncmlnaHQnCiAgICAgICAgIC8vIChpbiBjYXNl
ICdkaXJlY3Rpb24nIGlzICdsdHInKSBhbmQgc29sdmUgZm9yIHRoYXQgdmFsdWUuCi0gICAgICAg
IGlmICghbWFyZ2luTGVmdCAmJiAhbWFyZ2luUmlnaHQpIHsKLSAgICAgICAgICAgIGF1dG8gbWFy
Z2luTGVmdEFuZFJpZ2h0ID0gY29udGFpbmluZ0Jsb2NrV2lkdGggLSAoKmxlZnQgKyBib3JkZXJM
ZWZ0ICsgcGFkZGluZ0xlZnQgKyAqd2lkdGggKyBwYWRkaW5nUmlnaHQgKyBib3JkZXJSaWdodCAr
ICpyaWdodCk7Ci0gICAgICAgICAgICBpZiAobWFyZ2luTGVmdEFuZFJpZ2h0ID49IDApCi0gICAg
ICAgICAgICAgICAgbWFyZ2luTGVmdCA9IG1hcmdpblJpZ2h0ID0gbWFyZ2luTGVmdEFuZFJpZ2h0
IC8gMjsgIAorICAgICAgICBpZiAoIW1hcmdpblN0YXJ0ICYmICFtYXJnaW5FbmQpIHsKKyAgICAg
ICAgICAgIGF1dG8gbWFyZ2luU3RhcnRBbmRFbmQgPSBjb250YWluaW5nQmxvY2tXaWR0aCAtICgq
bGVmdCArIGJvcmRlckxlZnQgKyBwYWRkaW5nTGVmdCArICp3aWR0aCArIHBhZGRpbmdSaWdodCAr
IGJvcmRlclJpZ2h0ICsgKnJpZ2h0KTsKKyAgICAgICAgICAgIGlmIChtYXJnaW5TdGFydEFuZEVu
ZCA+PSAwKQorICAgICAgICAgICAgICAgIG1hcmdpblN0YXJ0ID0gbWFyZ2luRW5kID0gbWFyZ2lu
U3RhcnRBbmRFbmQgLyAyOyAgCiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBp
ZiAoaXNMZWZ0VG9SaWdodERpcmVjdGlvbikgewotICAgICAgICAgICAgICAgICAgICBtYXJnaW5M
ZWZ0ID0gMF9sdTsKLSAgICAgICAgICAgICAgICAgICAgbWFyZ2luUmlnaHQgPSBjb250YWluaW5n
QmxvY2tXaWR0aCAtICgqbGVmdCArICptYXJnaW5MZWZ0ICsgYm9yZGVyTGVmdCArIHBhZGRpbmdM
ZWZ0ICsgKndpZHRoICsgcGFkZGluZ1JpZ2h0ICsgYm9yZGVyUmlnaHQgKyAqcmlnaHQpOworICAg
ICAgICAgICAgICAgICAgICBtYXJnaW5TdGFydCA9IDBfbHU7CisgICAgICAgICAgICAgICAgICAg
IG1hcmdpbkVuZCA9IGNvbnRhaW5pbmdCbG9ja1dpZHRoIC0gKCpsZWZ0ICsgKm1hcmdpblN0YXJ0
ICsgYm9yZGVyTGVmdCArIHBhZGRpbmdMZWZ0ICsgKndpZHRoICsgcGFkZGluZ1JpZ2h0ICsgYm9y
ZGVyUmlnaHQgKyAqcmlnaHQpOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICAgICAgICAgIG1hcmdpblJpZ2h0ID0gMF9sdTsKLSAgICAgICAgICAgICAgICAgICAgbWFyZ2lu
TGVmdCA9IGNvbnRhaW5pbmdCbG9ja1dpZHRoIC0gKCpsZWZ0ICsgYm9yZGVyTGVmdCArIHBhZGRp
bmdMZWZ0ICsgKndpZHRoICsgcGFkZGluZ1JpZ2h0ICsgYm9yZGVyUmlnaHQgKyAqbWFyZ2luUmln
aHQgKyAqcmlnaHQpOworICAgICAgICAgICAgICAgICAgICBtYXJnaW5FbmQgPSAwX2x1OworICAg
ICAgICAgICAgICAgICAgICBtYXJnaW5TdGFydCA9IGNvbnRhaW5pbmdCbG9ja1dpZHRoIC0gKCps
ZWZ0ICsgYm9yZGVyTGVmdCArIHBhZGRpbmdMZWZ0ICsgKndpZHRoICsgcGFkZGluZ1JpZ2h0ICsg
Ym9yZGVyUmlnaHQgKyAqbWFyZ2luRW5kICsgKnJpZ2h0KTsKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSBpZiAoIW1hcmdpbkxlZnQpIHsKLSAgICAgICAg
ICAgIG1hcmdpbkxlZnQgPSBjb250YWluaW5nQmxvY2tXaWR0aCAtICgqbGVmdCArIGJvcmRlckxl
ZnQgKyBwYWRkaW5nTGVmdCArICp3aWR0aCArIHBhZGRpbmdSaWdodCArIGJvcmRlclJpZ2h0ICsg
Km1hcmdpblJpZ2h0ICsgKnJpZ2h0KTsKKyAgICAgICAgfSBlbHNlIGlmICghbWFyZ2luU3RhcnQp
IHsKKyAgICAgICAgICAgIG1hcmdpblN0YXJ0ID0gY29udGFpbmluZ0Jsb2NrV2lkdGggLSAoKmxl
ZnQgKyBib3JkZXJMZWZ0ICsgcGFkZGluZ0xlZnQgKyAqd2lkdGggKyBwYWRkaW5nUmlnaHQgKyBi
b3JkZXJSaWdodCArICptYXJnaW5FbmQgKyAqcmlnaHQpOwogICAgICAgICAgICAgLy8gT3ZlcmNv
bnN0cmFpbmVkPyBJZ25vcmUgcmlnaHQgKGxlZnQpLgotICAgICAgICAgICAgaWYgKCptYXJnaW5M
ZWZ0IDwgMCkgeworICAgICAgICAgICAgaWYgKCptYXJnaW5TdGFydCA8IDApIHsKICAgICAgICAg
ICAgICAgICBpZiAoaXNMZWZ0VG9SaWdodERpcmVjdGlvbikKLSAgICAgICAgICAgICAgICAgICAg
bWFyZ2luTGVmdCA9IGNvbnRhaW5pbmdCbG9ja1dpZHRoIC0gKCpsZWZ0ICsgYm9yZGVyTGVmdCAr
IHBhZGRpbmdMZWZ0ICsgKndpZHRoICsgcGFkZGluZ1JpZ2h0ICsgYm9yZGVyUmlnaHQgKyAqbWFy
Z2luUmlnaHQpOworICAgICAgICAgICAgICAgICAgICBtYXJnaW5TdGFydCA9IGNvbnRhaW5pbmdC
bG9ja1dpZHRoIC0gKCpsZWZ0ICsgYm9yZGVyTGVmdCArIHBhZGRpbmdMZWZ0ICsgKndpZHRoICsg
cGFkZGluZ1JpZ2h0ICsgYm9yZGVyUmlnaHQgKyAqbWFyZ2luRW5kKTsKICAgICAgICAgICAgICAg
ICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIG1hcmdpbkxlZnQgPSBjb250YWluaW5nQmxvY2tX
aWR0aCAtIChib3JkZXJMZWZ0ICsgcGFkZGluZ0xlZnQgKyAqd2lkdGggKyBwYWRkaW5nUmlnaHQg
KyBib3JkZXJSaWdodCArICptYXJnaW5SaWdodCArICpyaWdodCk7CisgICAgICAgICAgICAgICAg
ICAgIG1hcmdpblN0YXJ0ID0gY29udGFpbmluZ0Jsb2NrV2lkdGggLSAoYm9yZGVyTGVmdCArIHBh
ZGRpbmdMZWZ0ICsgKndpZHRoICsgcGFkZGluZ1JpZ2h0ICsgYm9yZGVyUmlnaHQgKyAqbWFyZ2lu
RW5kICsgKnJpZ2h0KTsKICAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIGlmICghbWFyZ2lu
UmlnaHQpIHsKLSAgICAgICAgICAgIG1hcmdpblJpZ2h0ID0gY29udGFpbmluZ0Jsb2NrV2lkdGgg
LSAoKmxlZnQgKyAqbWFyZ2luTGVmdCArIGJvcmRlckxlZnQgKyBwYWRkaW5nTGVmdCArICp3aWR0
aCArIHBhZGRpbmdSaWdodCArIGJvcmRlclJpZ2h0ICsgKnJpZ2h0KTsKKyAgICAgICAgfSBlbHNl
IGlmICghbWFyZ2luRW5kKSB7CisgICAgICAgICAgICBtYXJnaW5FbmQgPSBjb250YWluaW5nQmxv
Y2tXaWR0aCAtICgqbGVmdCArICptYXJnaW5TdGFydCArIGJvcmRlckxlZnQgKyBwYWRkaW5nTGVm
dCArICp3aWR0aCArIHBhZGRpbmdSaWdodCArIGJvcmRlclJpZ2h0ICsgKnJpZ2h0KTsKICAgICAg
ICAgICAgIC8vIE92ZXJjb25zdHJhaW5lZD8gSWdub3JlIHJpZ2h0IChsZWZ0KS4KLSAgICAgICAg
ICAgIGlmICgqbWFyZ2luUmlnaHQgPCAwKSB7CisgICAgICAgICAgICBpZiAoKm1hcmdpbkVuZCA8
IDApIHsKICAgICAgICAgICAgICAgICBpZiAoaXNMZWZ0VG9SaWdodERpcmVjdGlvbikKLSAgICAg
ICAgICAgICAgICAgICAgbWFyZ2luUmlnaHQgPSBjb250YWluaW5nQmxvY2tXaWR0aCAtICgqbGVm
dCArICptYXJnaW5MZWZ0ICsgYm9yZGVyTGVmdCArIHBhZGRpbmdMZWZ0ICsgKndpZHRoICsgcGFk
ZGluZ1JpZ2h0ICsgYm9yZGVyUmlnaHQpOworICAgICAgICAgICAgICAgICAgICBtYXJnaW5FbmQg
PSBjb250YWluaW5nQmxvY2tXaWR0aCAtICgqbGVmdCArICptYXJnaW5TdGFydCArIGJvcmRlckxl
ZnQgKyBwYWRkaW5nTGVmdCArICp3aWR0aCArIHBhZGRpbmdSaWdodCArIGJvcmRlclJpZ2h0KTsK
ICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIG1hcmdpblJpZ2h0ID0g
Y29udGFpbmluZ0Jsb2NrV2lkdGggLSAoKm1hcmdpbkxlZnQgKyBib3JkZXJMZWZ0ICsgcGFkZGlu
Z0xlZnQgKyAqd2lkdGggKyBwYWRkaW5nUmlnaHQgKyBib3JkZXJSaWdodCArICpyaWdodCk7Cisg
ICAgICAgICAgICAgICAgICAgIG1hcmdpbkVuZCA9IGNvbnRhaW5pbmdCbG9ja1dpZHRoIC0gKCpt
YXJnaW5TdGFydCArIGJvcmRlckxlZnQgKyBwYWRkaW5nTGVmdCArICp3aWR0aCArIHBhZGRpbmdS
aWdodCArIGJvcmRlclJpZ2h0ICsgKnJpZ2h0KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQog
ICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIE90aGVyd2lzZSwgc2V0ICdhdXRvJyB2YWx1ZXMgZm9y
ICdtYXJnaW4tbGVmdCcgYW5kICdtYXJnaW4tcmlnaHQnIHRvIDAsIGFuZCBwaWNrIHRoZSBvbmUg
b2YgdGhlIGZvbGxvd2luZyBzaXggcnVsZXMgdGhhdCBhcHBsaWVzLgotICAgICAgICBtYXJnaW5M
ZWZ0ID0gbWFyZ2luTGVmdC52YWx1ZV9vcigwKTsKLSAgICAgICAgbWFyZ2luUmlnaHQgPSBtYXJn
aW5SaWdodC52YWx1ZV9vcigwKTsKKyAgICAgICAgbWFyZ2luU3RhcnQgPSBtYXJnaW5TdGFydC52
YWx1ZV9vcigwKTsKKyAgICAgICAgbWFyZ2luRW5kID0gbWFyZ2luRW5kLnZhbHVlX29yKDApOwog
ICAgIH0KIAotICAgIEFTU0VSVChtYXJnaW5MZWZ0KTsKLSAgICBBU1NFUlQobWFyZ2luUmlnaHQp
OworICAgIEFTU0VSVChtYXJnaW5TdGFydCk7CisgICAgQVNTRVJUKG1hcmdpbkVuZCk7CiAKICAg
ICBpZiAoIWxlZnQgJiYgIXdpZHRoICYmIHJpZ2h0KSB7CiAgICAgICAgIC8vICMxCiAgICAgICAg
IHdpZHRoID0gc2hyaW5rVG9GaXRXaWR0aChsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KTsKLSAgICAg
ICAgbGVmdCA9IGNvbnRhaW5pbmdCbG9ja1dpZHRoIC0gKCptYXJnaW5MZWZ0ICsgYm9yZGVyTGVm
dCArIHBhZGRpbmdMZWZ0ICsgKndpZHRoICsgcGFkZGluZ1JpZ2h0ICArIGJvcmRlclJpZ2h0ICsg
Km1hcmdpblJpZ2h0ICsgKnJpZ2h0KTsKKyAgICAgICAgbGVmdCA9IGNvbnRhaW5pbmdCbG9ja1dp
ZHRoIC0gKCptYXJnaW5TdGFydCArIGJvcmRlckxlZnQgKyBwYWRkaW5nTGVmdCArICp3aWR0aCAr
IHBhZGRpbmdSaWdodCAgKyBib3JkZXJSaWdodCArICptYXJnaW5FbmQgKyAqcmlnaHQpOwogICAg
IH0gZWxzZSBpZiAoIWxlZnQgJiYgIXJpZ2h0ICYmIHdpZHRoKSB7CiAgICAgICAgIC8vICMyCiAg
ICAgICAgIGF1dG8gc3RhdGljSG9yaXpvbnRhbFBvc2l0aW9uID0gc3RhdGljSG9yaXpvbnRhbFBv
c2l0aW9uRm9yT3V0T2ZGbG93UG9zaXRpb25lZChsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KTsKICAg
ICAgICAgaWYgKGlzTGVmdFRvUmlnaHREaXJlY3Rpb24pIHsKICAgICAgICAgICAgIGxlZnQgPSBz
dGF0aWNIb3Jpem9udGFsUG9zaXRpb247Ci0gICAgICAgICAgICByaWdodCA9IGNvbnRhaW5pbmdC
bG9ja1dpZHRoIC0gKCpsZWZ0ICsgKm1hcmdpbkxlZnQgKyBib3JkZXJMZWZ0ICsgcGFkZGluZ0xl
ZnQgKyAqd2lkdGggKyBwYWRkaW5nUmlnaHQgKyBib3JkZXJSaWdodCArICptYXJnaW5SaWdodCk7
CisgICAgICAgICAgICByaWdodCA9IGNvbnRhaW5pbmdCbG9ja1dpZHRoIC0gKCpsZWZ0ICsgKm1h
cmdpblN0YXJ0ICsgYm9yZGVyTGVmdCArIHBhZGRpbmdMZWZ0ICsgKndpZHRoICsgcGFkZGluZ1Jp
Z2h0ICsgYm9yZGVyUmlnaHQgKyAqbWFyZ2luRW5kKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgIHJpZ2h0ID0gc3RhdGljSG9yaXpvbnRhbFBvc2l0aW9uOwotICAgICAgICAgICAgbGVm
dCA9IGNvbnRhaW5pbmdCbG9ja1dpZHRoIC0gKCptYXJnaW5MZWZ0ICsgYm9yZGVyTGVmdCArIHBh
ZGRpbmdMZWZ0ICsgKndpZHRoICsgcGFkZGluZ1JpZ2h0ICsgYm9yZGVyUmlnaHQgKyAqbWFyZ2lu
UmlnaHQgKyAqcmlnaHQpOworICAgICAgICAgICAgbGVmdCA9IGNvbnRhaW5pbmdCbG9ja1dpZHRo
IC0gKCptYXJnaW5TdGFydCArIGJvcmRlckxlZnQgKyBwYWRkaW5nTGVmdCArICp3aWR0aCArIHBh
ZGRpbmdSaWdodCArIGJvcmRlclJpZ2h0ICsgKm1hcmdpbkVuZCArICpyaWdodCk7CiAgICAgICAg
IH0KICAgICB9IGVsc2UgaWYgKCF3aWR0aCAmJiAhcmlnaHQgJiYgbGVmdCkgewogICAgICAgICAv
LyAjMwogICAgICAgICB3aWR0aCA9IHNocmlua1RvRml0V2lkdGgobGF5b3V0U3RhdGUsIGxheW91
dEJveCk7Ci0gICAgICAgIHJpZ2h0ID0gY29udGFpbmluZ0Jsb2NrV2lkdGggLSAoKmxlZnQgKyAq
bWFyZ2luTGVmdCArIGJvcmRlckxlZnQgKyBwYWRkaW5nTGVmdCArICp3aWR0aCArIHBhZGRpbmdS
aWdodCArIGJvcmRlclJpZ2h0ICsgKm1hcmdpblJpZ2h0KTsKKyAgICAgICAgcmlnaHQgPSBjb250
YWluaW5nQmxvY2tXaWR0aCAtICgqbGVmdCArICptYXJnaW5TdGFydCArIGJvcmRlckxlZnQgKyBw
YWRkaW5nTGVmdCArICp3aWR0aCArIHBhZGRpbmdSaWdodCArIGJvcmRlclJpZ2h0ICsgKm1hcmdp
bkVuZCk7CiAgICAgfSBlbHNlIGlmICghbGVmdCAmJiB3aWR0aCAmJiByaWdodCkgewogICAgICAg
ICAvLyAjNAotICAgICAgICBsZWZ0ID0gY29udGFpbmluZ0Jsb2NrV2lkdGggLSAoKm1hcmdpbkxl
ZnQgKyBib3JkZXJMZWZ0ICsgcGFkZGluZ0xlZnQgKyAqd2lkdGggKyBwYWRkaW5nUmlnaHQgKyBi
b3JkZXJSaWdodCArICptYXJnaW5SaWdodCArICpyaWdodCk7CisgICAgICAgIGxlZnQgPSBjb250
YWluaW5nQmxvY2tXaWR0aCAtICgqbWFyZ2luU3RhcnQgKyBib3JkZXJMZWZ0ICsgcGFkZGluZ0xl
ZnQgKyAqd2lkdGggKyBwYWRkaW5nUmlnaHQgKyBib3JkZXJSaWdodCArICptYXJnaW5FbmQgKyAq
cmlnaHQpOwogICAgIH0gZWxzZSBpZiAoIXdpZHRoICYmIGxlZnQgJiYgcmlnaHQpIHsKICAgICAg
ICAgLy8gIzUKLSAgICAgICAgd2lkdGggPSBjb250YWluaW5nQmxvY2tXaWR0aCAtICgqbGVmdCAr
ICptYXJnaW5MZWZ0ICsgYm9yZGVyTGVmdCArIHBhZGRpbmdMZWZ0ICsgcGFkZGluZ1JpZ2h0ICAr
IGJvcmRlclJpZ2h0ICsgKm1hcmdpblJpZ2h0ICsgKnJpZ2h0KTsKKyAgICAgICAgd2lkdGggPSBj
b250YWluaW5nQmxvY2tXaWR0aCAtICgqbGVmdCArICptYXJnaW5TdGFydCArIGJvcmRlckxlZnQg
KyBwYWRkaW5nTGVmdCArIHBhZGRpbmdSaWdodCAgKyBib3JkZXJSaWdodCArICptYXJnaW5FbmQg
KyAqcmlnaHQpOwogICAgIH0gZWxzZSBpZiAoIXJpZ2h0ICYmIGxlZnQgJiYgd2lkdGgpIHsKICAg
ICAgICAgLy8gIzYKLSAgICAgICAgcmlnaHQgPSBjb250YWluaW5nQmxvY2tXaWR0aCAtICgqbGVm
dCArICptYXJnaW5MZWZ0ICsgYm9yZGVyTGVmdCArIHBhZGRpbmdMZWZ0ICsgKndpZHRoICsgcGFk
ZGluZ1JpZ2h0ICsgYm9yZGVyUmlnaHQgKyAqbWFyZ2luUmlnaHQpOworICAgICAgICByaWdodCA9
IGNvbnRhaW5pbmdCbG9ja1dpZHRoIC0gKCpsZWZ0ICsgKm1hcmdpblN0YXJ0ICsgYm9yZGVyTGVm
dCArIHBhZGRpbmdMZWZ0ICsgKndpZHRoICsgcGFkZGluZ1JpZ2h0ICsgYm9yZGVyUmlnaHQgKyAq
bWFyZ2luRW5kKTsKICAgICB9CiAKICAgICBBU1NFUlQobGVmdCk7CiAgICAgQVNTRVJUKHJpZ2h0
KTsKICAgICBBU1NFUlQod2lkdGgpOwotICAgIEFTU0VSVChtYXJnaW5MZWZ0KTsKLSAgICBBU1NF
UlQobWFyZ2luUmlnaHQpOworICAgIEFTU0VSVChtYXJnaW5TdGFydCk7CisgICAgQVNTRVJUKG1h
cmdpbkVuZCk7CiAKLSAgICBMT0dfV0lUSF9TVFJFQU0oRm9ybWF0dGluZ0NvbnRleHRMYXlvdXQs
IHN0cmVhbSA8PCAiW1Bvc2l0aW9uXVtXaWR0aF1bTWFyZ2luXSAtPiBvdXQtb2YtZmxvdyBub24t
cmVwbGFjZWQgLT4gbGVmdCgiIDw8ICpsZWZ0IDw8ICJweCkgcmlnaHQoIiAgPDwgKnJpZ2h0IDw8
ICJweCkgd2lkdGgoIiA8PCAqd2lkdGggPDwgInB4KSBtYXJnaW4oIiA8PCAqbWFyZ2luTGVmdCA8
PCAicHgsICIgIDw8ICptYXJnaW5SaWdodCA8PCAicHgpIGxheW91dEJveCgiIDw8ICZsYXlvdXRC
b3ggPDwgIikiKTsKLSAgICByZXR1cm4geyAqbGVmdCwgKnJpZ2h0LCB7ICp3aWR0aCwgeyAqbWFy
Z2luTGVmdCwgKm1hcmdpblJpZ2h0IH0sIHsgbm9uQ29tcHV0ZWRNYXJnaW5MZWZ0LCBub25Db21w
dXRlZE1hcmdpblJpZ2h0IH0gfSB9OworICAgIExPR19XSVRIX1NUUkVBTShGb3JtYXR0aW5nQ29u
dGV4dExheW91dCwgc3RyZWFtIDw8ICJbUG9zaXRpb25dW1dpZHRoXVtNYXJnaW5dIC0+IG91dC1v
Zi1mbG93IG5vbi1yZXBsYWNlZCAtPiBsZWZ0KCIgPDwgKmxlZnQgPDwgInB4KSByaWdodCgiICA8
PCAqcmlnaHQgPDwgInB4KSB3aWR0aCgiIDw8ICp3aWR0aCA8PCAicHgpIG1hcmdpbigiIDw8ICpt
YXJnaW5TdGFydCA8PCAicHgsICIgIDw8ICptYXJnaW5FbmQgPDwgInB4KSBsYXlvdXRCb3goIiA8
PCAmbGF5b3V0Qm94IDw8ICIpIik7CisgICAgcmV0dXJuIHsgKmxlZnQsICpyaWdodCwgeyAqd2lk
dGgsIHsgKm1hcmdpblN0YXJ0LCAqbWFyZ2luRW5kIH0sIHsgbm9uQ29tcHV0ZWRNYXJnaW5TdGFy
dCwgbm9uQ29tcHV0ZWRNYXJnaW5FbmQgfSB9IH07CiB9CiAKIFZlcnRpY2FsR2VvbWV0cnkgRm9y
bWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dSZXBsYWNlZFZlcnRpY2FsR2VvbWV0
cnkoY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91dEJveCwg
c3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiB1c2VkSGVpZ2h0KQpAQCAtNTI4LDggKzUyOCw4IEBA
IFZlcnRpY2FsR2VvbWV0cnkgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dS
ZXBsYWNlZFZlcnRpY2FsR2VvbWV0cnkoCiAgICAgYXV0byB0b3AgPSBjb21wdXRlZFZhbHVlSWZO
b3RBdXRvKHN0eWxlLmxvZ2ljYWxUb3AoKSwgY29udGFpbmluZ0Jsb2NrV2lkdGgpOwogICAgIGF1
dG8gYm90dG9tID0gY29tcHV0ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5sb2dpY2FsQm90dG9tKCks
IGNvbnRhaW5pbmdCbG9ja1dpZHRoKTsKICAgICBhdXRvIGhlaWdodCA9IGlubGluZVJlcGxhY2Vk
SGVpZ2h0QW5kTWFyZ2luKGxheW91dFN0YXRlLCBsYXlvdXRCb3gsIHVzZWRIZWlnaHQpLmhlaWdo
dDsKLSAgICBhdXRvIG1hcmdpblRvcCA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5bGUubWFy
Z2luVG9wKCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKTsKLSAgICBhdXRvIG1hcmdpbkJvdHRvbSA9
IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5bGUubWFyZ2luQm90dG9tKCksIGNvbnRhaW5pbmdC
bG9ja1dpZHRoKTsKKyAgICBhdXRvIG1hcmdpbkJlZm9yZSA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1
dG8oc3R5bGUubWFyZ2luQmVmb3JlKCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKTsKKyAgICBhdXRv
IG1hcmdpbkFmdGVyID0gY29tcHV0ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5tYXJnaW5BZnRlcigp
LCBjb250YWluaW5nQmxvY2tXaWR0aCk7CiAgICAgYXV0byBwYWRkaW5nVG9wID0gZGlzcGxheUJv
eC5wYWRkaW5nVG9wKCkudmFsdWVfb3IoMCk7CiAgICAgYXV0byBwYWRkaW5nQm90dG9tID0gZGlz
cGxheUJveC5wYWRkaW5nQm90dG9tKCkudmFsdWVfb3IoMCk7CiAgICAgYXV0byBib3JkZXJUb3Ag
PSBkaXNwbGF5Qm94LmJvcmRlclRvcCgpOwpAQCAtNTQyLDM2ICs1NDIsMzYgQEAgVmVydGljYWxH
ZW9tZXRyeSBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9mRmxvd1JlcGxhY2VkVmVy
dGljYWxHZW9tZXRyeSgKIAogICAgIGlmICghYm90dG9tKSB7CiAgICAgICAgIC8vICMyCi0gICAg
ICAgIG1hcmdpblRvcCA9IG1hcmdpblRvcC52YWx1ZV9vcigwKTsKLSAgICAgICAgbWFyZ2luQm90
dG9tID0gbWFyZ2luQm90dG9tLnZhbHVlX29yKDApOworICAgICAgICBtYXJnaW5CZWZvcmUgPSBt
YXJnaW5CZWZvcmUudmFsdWVfb3IoMCk7CisgICAgICAgIG1hcmdpbkFmdGVyID0gbWFyZ2luQWZ0
ZXIudmFsdWVfb3IoMCk7CiAgICAgfQogCi0gICAgaWYgKCFtYXJnaW5Ub3AgJiYgIW1hcmdpbkJv
dHRvbSkgeworICAgIGlmICghbWFyZ2luQmVmb3JlICYmICFtYXJnaW5BZnRlcikgewogICAgICAg
ICAvLyAjMwotICAgICAgICBhdXRvIG1hcmdpblRvcEFuZEJvdHRvbSA9IGNvbnRhaW5pbmdCbG9j
a0hlaWdodCAtICgqdG9wICsgYm9yZGVyVG9wICsgcGFkZGluZ1RvcCArIGhlaWdodCArIHBhZGRp
bmdCb3R0b20gKyBib3JkZXJCb3R0b20gKyAqYm90dG9tKTsKLSAgICAgICAgbWFyZ2luVG9wID0g
bWFyZ2luQm90dG9tID0gbWFyZ2luVG9wQW5kQm90dG9tIC8gMjsKKyAgICAgICAgYXV0byBtYXJn
aW5CZWZvcmVBbmRBZnRlciA9IGNvbnRhaW5pbmdCbG9ja0hlaWdodCAtICgqdG9wICsgYm9yZGVy
VG9wICsgcGFkZGluZ1RvcCArIGhlaWdodCArIHBhZGRpbmdCb3R0b20gKyBib3JkZXJCb3R0b20g
KyAqYm90dG9tKTsKKyAgICAgICAgbWFyZ2luQmVmb3JlID0gbWFyZ2luQWZ0ZXIgPSBtYXJnaW5C
ZWZvcmVBbmRBZnRlciAvIDI7CiAgICAgfQogCiAgICAgLy8gIzQKICAgICBpZiAoIXRvcCkKLSAg
ICAgICAgdG9wID0gY29udGFpbmluZ0Jsb2NrSGVpZ2h0IC0gKCptYXJnaW5Ub3AgKyBib3JkZXJU
b3AgKyBwYWRkaW5nVG9wICsgaGVpZ2h0ICsgcGFkZGluZ0JvdHRvbSArIGJvcmRlckJvdHRvbSAr
ICptYXJnaW5Cb3R0b20gKyAqYm90dG9tKTsKKyAgICAgICAgdG9wID0gY29udGFpbmluZ0Jsb2Nr
SGVpZ2h0IC0gKCptYXJnaW5CZWZvcmUgKyBib3JkZXJUb3AgKyBwYWRkaW5nVG9wICsgaGVpZ2h0
ICsgcGFkZGluZ0JvdHRvbSArIGJvcmRlckJvdHRvbSArICptYXJnaW5BZnRlciArICpib3R0b20p
OwogCiAgICAgaWYgKCFib3R0b20pCi0gICAgICAgIGJvdHRvbSA9IGNvbnRhaW5pbmdCbG9ja0hl
aWdodCAtICgqdG9wICsgKm1hcmdpblRvcCArIGJvcmRlclRvcCArIHBhZGRpbmdUb3AgKyBoZWln
aHQgKyBwYWRkaW5nQm90dG9tICsgYm9yZGVyQm90dG9tICsgKm1hcmdpbkJvdHRvbSk7CisgICAg
ICAgIGJvdHRvbSA9IGNvbnRhaW5pbmdCbG9ja0hlaWdodCAtICgqdG9wICsgKm1hcmdpbkJlZm9y
ZSArIGJvcmRlclRvcCArIHBhZGRpbmdUb3AgKyBoZWlnaHQgKyBwYWRkaW5nQm90dG9tICsgYm9y
ZGVyQm90dG9tICsgKm1hcmdpbkFmdGVyKTsKIAotICAgIGlmICghbWFyZ2luVG9wKQotICAgICAg
ICBtYXJnaW5Ub3AgPSBjb250YWluaW5nQmxvY2tIZWlnaHQgLSAoKnRvcCArIGJvcmRlclRvcCAr
IHBhZGRpbmdUb3AgKyBoZWlnaHQgKyBwYWRkaW5nQm90dG9tICsgYm9yZGVyQm90dG9tICsgKm1h
cmdpbkJvdHRvbSArICpib3R0b20pOworICAgIGlmICghbWFyZ2luQmVmb3JlKQorICAgICAgICBt
YXJnaW5CZWZvcmUgPSBjb250YWluaW5nQmxvY2tIZWlnaHQgLSAoKnRvcCArIGJvcmRlclRvcCAr
IHBhZGRpbmdUb3AgKyBoZWlnaHQgKyBwYWRkaW5nQm90dG9tICsgYm9yZGVyQm90dG9tICsgKm1h
cmdpbkFmdGVyICsgKmJvdHRvbSk7CiAKLSAgICBpZiAoIW1hcmdpbkJvdHRvbSkKLSAgICAgICAg
bWFyZ2luQm90dG9tID0gY29udGFpbmluZ0Jsb2NrSGVpZ2h0IC0gKCp0b3AgKyAqbWFyZ2luVG9w
ICsgYm9yZGVyVG9wICsgcGFkZGluZ1RvcCArIGhlaWdodCArIHBhZGRpbmdCb3R0b20gKyBib3Jk
ZXJCb3R0b20gKyAqYm90dG9tKTsKKyAgICBpZiAoIW1hcmdpbkFmdGVyKQorICAgICAgICBtYXJn
aW5BZnRlciA9IGNvbnRhaW5pbmdCbG9ja0hlaWdodCAtICgqdG9wICsgKm1hcmdpbkJlZm9yZSAr
IGJvcmRlclRvcCArIHBhZGRpbmdUb3AgKyBoZWlnaHQgKyBwYWRkaW5nQm90dG9tICsgYm9yZGVy
Qm90dG9tICsgKmJvdHRvbSk7CiAKICAgICAvLyAjNQotICAgIGF1dG8gYm94SGVpZ2h0ID0gKnRv
cCArICptYXJnaW5Ub3AgKyBib3JkZXJUb3AgKyBwYWRkaW5nVG9wICsgaGVpZ2h0ICsgcGFkZGlu
Z0JvdHRvbSArIGJvcmRlckJvdHRvbSArICptYXJnaW5Cb3R0b20gKyAqYm90dG9tOworICAgIGF1
dG8gYm94SGVpZ2h0ID0gKnRvcCArICptYXJnaW5CZWZvcmUgKyBib3JkZXJUb3AgKyBwYWRkaW5n
VG9wICsgaGVpZ2h0ICsgcGFkZGluZ0JvdHRvbSArIGJvcmRlckJvdHRvbSArICptYXJnaW5BZnRl
ciArICpib3R0b207CiAgICAgaWYgKGJveEhlaWdodCA+IGNvbnRhaW5pbmdCbG9ja0hlaWdodCkK
LSAgICAgICAgYm90dG9tID0gY29udGFpbmluZ0Jsb2NrSGVpZ2h0IC0gKCp0b3AgKyAqbWFyZ2lu
VG9wICsgYm9yZGVyVG9wICsgcGFkZGluZ1RvcCArIGhlaWdodCArIHBhZGRpbmdCb3R0b20gKyBi
b3JkZXJCb3R0b20gKyAqbWFyZ2luQm90dG9tKTsgCisgICAgICAgIGJvdHRvbSA9IGNvbnRhaW5p
bmdCbG9ja0hlaWdodCAtICgqdG9wICsgKm1hcmdpbkJlZm9yZSArIGJvcmRlclRvcCArIHBhZGRp
bmdUb3AgKyBoZWlnaHQgKyBwYWRkaW5nQm90dG9tICsgYm9yZGVyQm90dG9tICsgKm1hcmdpbkFm
dGVyKTsgCiAKLSAgICBMT0dfV0lUSF9TVFJFQU0oRm9ybWF0dGluZ0NvbnRleHRMYXlvdXQsIHN0
cmVhbSA8PCAiW1Bvc2l0aW9uXVtIZWlnaHRdW01hcmdpbl0gLT4gb3V0LW9mLWZsb3cgcmVwbGFj
ZWQgLT4gdG9wKCIgPDwgKnRvcCA8PCAicHgpIGJvdHRvbSgiICA8PCAqYm90dG9tIDw8ICJweCkg
aGVpZ2h0KCIgPDwgaGVpZ2h0IDw8ICJweCkgbWFyZ2luKCIgPDwgKm1hcmdpblRvcCA8PCAicHgs
ICIgIDw8ICptYXJnaW5Cb3R0b20gPDwgInB4KSBsYXlvdXRCb3goIiA8PCAmbGF5b3V0Qm94IDw8
ICIpIik7Ci0gICAgcmV0dXJuIHsgKnRvcCwgKmJvdHRvbSwgeyBoZWlnaHQsIHsgeyAqbWFyZ2lu
VG9wLCAqbWFyZ2luQm90dG9tIH0sIHsgfSB9IH0gfTsKKyAgICBMT0dfV0lUSF9TVFJFQU0oRm9y
bWF0dGluZ0NvbnRleHRMYXlvdXQsIHN0cmVhbSA8PCAiW1Bvc2l0aW9uXVtIZWlnaHRdW01hcmdp
bl0gLT4gb3V0LW9mLWZsb3cgcmVwbGFjZWQgLT4gdG9wKCIgPDwgKnRvcCA8PCAicHgpIGJvdHRv
bSgiICA8PCAqYm90dG9tIDw8ICJweCkgaGVpZ2h0KCIgPDwgaGVpZ2h0IDw8ICJweCkgbWFyZ2lu
KCIgPDwgKm1hcmdpbkJlZm9yZSA8PCAicHgsICIgIDw8ICptYXJnaW5BZnRlciA8PCAicHgpIGxh
eW91dEJveCgiIDw8ICZsYXlvdXRCb3ggPDwgIikiKTsKKyAgICByZXR1cm4geyAqdG9wLCAqYm90
dG9tLCB7IGhlaWdodCwgeyB7ICptYXJnaW5CZWZvcmUsICptYXJnaW5BZnRlciB9LCB7IH0gfSB9
IH07CiB9CiAKIEhvcml6b250YWxHZW9tZXRyeSBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6
Om91dE9mRmxvd1JlcGxhY2VkSG9yaXpvbnRhbEdlb21ldHJ5KGNvbnN0IExheW91dFN0YXRlJiBs
YXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gsIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5p
dD4gdXNlZFdpZHRoKQpAQCAtNjAwLDEwICs2MDAsMTAgQEAgSG9yaXpvbnRhbEdlb21ldHJ5IEZv
cm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6b3V0T2ZGbG93UmVwbGFjZWRIb3Jpem9udGFsR2Vv
bWUKIAogICAgIGF1dG8gbGVmdCA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5bGUubG9naWNh
bExlZnQoKSwgY29udGFpbmluZ0Jsb2NrV2lkdGgpOwogICAgIGF1dG8gcmlnaHQgPSBjb21wdXRl
ZFZhbHVlSWZOb3RBdXRvKHN0eWxlLmxvZ2ljYWxSaWdodCgpLCBjb250YWluaW5nQmxvY2tXaWR0
aCk7Ci0gICAgYXV0byBtYXJnaW5MZWZ0ID0gY29tcHV0ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5t
YXJnaW5MZWZ0KCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKTsKLSAgICBhdXRvIG1hcmdpblJpZ2h0
ID0gY29tcHV0ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5tYXJnaW5SaWdodCgpLCBjb250YWluaW5n
QmxvY2tXaWR0aCk7Ci0gICAgYXV0byBub25Db21wdXRlZE1hcmdpbkxlZnQgPSBtYXJnaW5MZWZ0
LnZhbHVlX29yKDApOwotICAgIGF1dG8gbm9uQ29tcHV0ZWRNYXJnaW5SaWdodCA9IG1hcmdpblJp
Z2h0LnZhbHVlX29yKDApOworICAgIGF1dG8gbWFyZ2luU3RhcnQgPSBjb21wdXRlZFZhbHVlSWZO
b3RBdXRvKHN0eWxlLm1hcmdpblN0YXJ0KCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKTsKKyAgICBh
dXRvIG1hcmdpbkVuZCA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5bGUubWFyZ2luRW5kKCks
IGNvbnRhaW5pbmdCbG9ja1dpZHRoKTsKKyAgICBhdXRvIG5vbkNvbXB1dGVkTWFyZ2luU3RhcnQg
PSBtYXJnaW5TdGFydC52YWx1ZV9vcigwKTsKKyAgICBhdXRvIG5vbkNvbXB1dGVkTWFyZ2luRW5k
ID0gbWFyZ2luRW5kLnZhbHVlX29yKDApOwogICAgIGF1dG8gd2lkdGggPSBpbmxpbmVSZXBsYWNl
ZFdpZHRoQW5kTWFyZ2luKGxheW91dFN0YXRlLCBsYXlvdXRCb3gsIHVzZWRXaWR0aCkud2lkdGg7
CiAgICAgYXV0byBwYWRkaW5nTGVmdCA9IGRpc3BsYXlCb3gucGFkZGluZ0xlZnQoKS52YWx1ZV9v
cigwKTsKICAgICBhdXRvIHBhZGRpbmdSaWdodCA9IGRpc3BsYXlCb3gucGFkZGluZ1JpZ2h0KCku
dmFsdWVfb3IoMCk7CkBAIC02MjEsNTUgKzYyMSw1NSBAQCBIb3Jpem9udGFsR2VvbWV0cnkgRm9y
bWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dSZXBsYWNlZEhvcml6b250YWxHZW9t
ZQogCiAgICAgaWYgKCFsZWZ0IHx8ICFyaWdodCkgewogICAgICAgICAvLyAjMgotICAgICAgICBt
YXJnaW5MZWZ0ID0gbWFyZ2luTGVmdC52YWx1ZV9vcigwKTsgCi0gICAgICAgIG1hcmdpblJpZ2h0
ID0gbWFyZ2luUmlnaHQudmFsdWVfb3IoMCk7IAorICAgICAgICBtYXJnaW5TdGFydCA9IG1hcmdp
blN0YXJ0LnZhbHVlX29yKDApOyAKKyAgICAgICAgbWFyZ2luRW5kID0gbWFyZ2luRW5kLnZhbHVl
X29yKDApOyAKICAgICB9CiAKLSAgICBpZiAoIW1hcmdpbkxlZnQgJiYgIW1hcmdpblJpZ2h0KSB7
CisgICAgaWYgKCFtYXJnaW5TdGFydCAmJiAhbWFyZ2luRW5kKSB7CiAgICAgICAgIC8vICMzCi0g
ICAgICAgIGF1dG8gbWFyZ2luTGVmdEFuZFJpZ2h0ID0gY29udGFpbmluZ0Jsb2NrV2lkdGggLSAo
KmxlZnQgKyBib3JkZXJMZWZ0ICsgcGFkZGluZ0xlZnQgKyB3aWR0aCArIHBhZGRpbmdSaWdodCAr
IGJvcmRlclJpZ2h0ICsgKnJpZ2h0KTsKLSAgICAgICAgaWYgKG1hcmdpbkxlZnRBbmRSaWdodCA+
PSAwKQotICAgICAgICAgICAgbWFyZ2luTGVmdCA9IG1hcmdpblJpZ2h0ID0gbWFyZ2luTGVmdEFu
ZFJpZ2h0IC8gMjsKKyAgICAgICAgYXV0byBtYXJnaW5TdGFydEFuZEVuZCA9IGNvbnRhaW5pbmdC
bG9ja1dpZHRoIC0gKCpsZWZ0ICsgYm9yZGVyTGVmdCArIHBhZGRpbmdMZWZ0ICsgd2lkdGggKyBw
YWRkaW5nUmlnaHQgKyBib3JkZXJSaWdodCArICpyaWdodCk7CisgICAgICAgIGlmIChtYXJnaW5T
dGFydEFuZEVuZCA+PSAwKQorICAgICAgICAgICAgbWFyZ2luU3RhcnQgPSBtYXJnaW5FbmQgPSBt
YXJnaW5TdGFydEFuZEVuZCAvIDI7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgaWYgKGlz
TGVmdFRvUmlnaHREaXJlY3Rpb24pIHsKLSAgICAgICAgICAgICAgICBtYXJnaW5MZWZ0ID0gMF9s
dTsKLSAgICAgICAgICAgICAgICBtYXJnaW5SaWdodCA9IGNvbnRhaW5pbmdCbG9ja1dpZHRoIC0g
KCpsZWZ0ICsgKm1hcmdpbkxlZnQgKyBib3JkZXJMZWZ0ICsgcGFkZGluZ0xlZnQgKyB3aWR0aCAr
IHBhZGRpbmdSaWdodCArIGJvcmRlclJpZ2h0ICsgKnJpZ2h0KTsKKyAgICAgICAgICAgICAgICBt
YXJnaW5TdGFydCA9IDBfbHU7CisgICAgICAgICAgICAgICAgbWFyZ2luRW5kID0gY29udGFpbmlu
Z0Jsb2NrV2lkdGggLSAoKmxlZnQgKyAqbWFyZ2luU3RhcnQgKyBib3JkZXJMZWZ0ICsgcGFkZGlu
Z0xlZnQgKyB3aWR0aCArIHBhZGRpbmdSaWdodCArIGJvcmRlclJpZ2h0ICsgKnJpZ2h0KTsKICAg
ICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgbWFyZ2luUmlnaHQgPSAwX2x1Owot
ICAgICAgICAgICAgICAgIG1hcmdpbkxlZnQgPSBjb250YWluaW5nQmxvY2tXaWR0aCAtICgqbGVm
dCArIGJvcmRlckxlZnQgKyBwYWRkaW5nTGVmdCArIHdpZHRoICsgcGFkZGluZ1JpZ2h0ICsgYm9y
ZGVyUmlnaHQgKyAqbWFyZ2luUmlnaHQgKyAqcmlnaHQpOworICAgICAgICAgICAgICAgIG1hcmdp
bkVuZCA9IDBfbHU7CisgICAgICAgICAgICAgICAgbWFyZ2luU3RhcnQgPSBjb250YWluaW5nQmxv
Y2tXaWR0aCAtICgqbGVmdCArIGJvcmRlckxlZnQgKyBwYWRkaW5nTGVmdCArIHdpZHRoICsgcGFk
ZGluZ1JpZ2h0ICsgYm9yZGVyUmlnaHQgKyAqbWFyZ2luRW5kICsgKnJpZ2h0KTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgfQogICAgIH0KIAogICAgIC8vICM0CiAgICAgaWYgKCFsZWZ0KQotICAg
ICAgICBsZWZ0ID0gY29udGFpbmluZ0Jsb2NrV2lkdGggLSAoKm1hcmdpbkxlZnQgKyBib3JkZXJM
ZWZ0ICsgcGFkZGluZ0xlZnQgKyB3aWR0aCArIHBhZGRpbmdSaWdodCArIGJvcmRlclJpZ2h0ICsg
Km1hcmdpblJpZ2h0ICsgKnJpZ2h0KTsKKyAgICAgICAgbGVmdCA9IGNvbnRhaW5pbmdCbG9ja1dp
ZHRoIC0gKCptYXJnaW5TdGFydCArIGJvcmRlckxlZnQgKyBwYWRkaW5nTGVmdCArIHdpZHRoICsg
cGFkZGluZ1JpZ2h0ICsgYm9yZGVyUmlnaHQgKyAqbWFyZ2luRW5kICsgKnJpZ2h0KTsKIAogICAg
IGlmICghcmlnaHQpCi0gICAgICAgIHJpZ2h0ID0gY29udGFpbmluZ0Jsb2NrV2lkdGggLSAoKmxl
ZnQgKyAqbWFyZ2luTGVmdCArIGJvcmRlckxlZnQgKyBwYWRkaW5nTGVmdCArIHdpZHRoICsgcGFk
ZGluZ1JpZ2h0ICsgYm9yZGVyUmlnaHQgKyAqbWFyZ2luUmlnaHQpOworICAgICAgICByaWdodCA9
IGNvbnRhaW5pbmdCbG9ja1dpZHRoIC0gKCpsZWZ0ICsgKm1hcmdpblN0YXJ0ICsgYm9yZGVyTGVm
dCArIHBhZGRpbmdMZWZ0ICsgd2lkdGggKyBwYWRkaW5nUmlnaHQgKyBib3JkZXJSaWdodCArICpt
YXJnaW5FbmQpOwogCi0gICAgaWYgKCFtYXJnaW5MZWZ0KQotICAgICAgICBtYXJnaW5MZWZ0ID0g
Y29udGFpbmluZ0Jsb2NrV2lkdGggLSAoKmxlZnQgKyBib3JkZXJMZWZ0ICsgcGFkZGluZ0xlZnQg
KyB3aWR0aCArIHBhZGRpbmdSaWdodCArIGJvcmRlclJpZ2h0ICsgKm1hcmdpblJpZ2h0ICsgKnJp
Z2h0KTsKKyAgICBpZiAoIW1hcmdpblN0YXJ0KQorICAgICAgICBtYXJnaW5TdGFydCA9IGNvbnRh
aW5pbmdCbG9ja1dpZHRoIC0gKCpsZWZ0ICsgYm9yZGVyTGVmdCArIHBhZGRpbmdMZWZ0ICsgd2lk
dGggKyBwYWRkaW5nUmlnaHQgKyBib3JkZXJSaWdodCArICptYXJnaW5FbmQgKyAqcmlnaHQpOwog
Ci0gICAgaWYgKCFtYXJnaW5SaWdodCkKLSAgICAgICAgbWFyZ2luUmlnaHQgPSBjb250YWluaW5n
QmxvY2tXaWR0aCAtICgqbGVmdCArICptYXJnaW5MZWZ0ICsgYm9yZGVyTGVmdCArIHBhZGRpbmdM
ZWZ0ICsgd2lkdGggKyBwYWRkaW5nUmlnaHQgKyBib3JkZXJSaWdodCArICpyaWdodCk7CisgICAg
aWYgKCFtYXJnaW5FbmQpCisgICAgICAgIG1hcmdpbkVuZCA9IGNvbnRhaW5pbmdCbG9ja1dpZHRo
IC0gKCpsZWZ0ICsgKm1hcmdpblN0YXJ0ICsgYm9yZGVyTGVmdCArIHBhZGRpbmdMZWZ0ICsgd2lk
dGggKyBwYWRkaW5nUmlnaHQgKyBib3JkZXJSaWdodCArICpyaWdodCk7CiAKLSAgICBhdXRvIGJv
eFdpZHRoID0gKCpsZWZ0ICsgKm1hcmdpbkxlZnQgKyBib3JkZXJMZWZ0ICsgcGFkZGluZ0xlZnQg
KyB3aWR0aCArIHBhZGRpbmdSaWdodCArIGJvcmRlclJpZ2h0ICsgKm1hcmdpblJpZ2h0ICsgKnJp
Z2h0KTsKKyAgICBhdXRvIGJveFdpZHRoID0gKCpsZWZ0ICsgKm1hcmdpblN0YXJ0ICsgYm9yZGVy
TGVmdCArIHBhZGRpbmdMZWZ0ICsgd2lkdGggKyBwYWRkaW5nUmlnaHQgKyBib3JkZXJSaWdodCAr
ICptYXJnaW5FbmQgKyAqcmlnaHQpOwogICAgIGlmIChib3hXaWR0aCA+IGNvbnRhaW5pbmdCbG9j
a1dpZHRoKSB7CiAgICAgICAgIC8vICM1IE92ZXItY29uc3RyYWluZWQ/CiAgICAgICAgIGlmIChp
c0xlZnRUb1JpZ2h0RGlyZWN0aW9uKQotICAgICAgICAgICAgcmlnaHQgPSBjb250YWluaW5nQmxv
Y2tXaWR0aCAtICgqbGVmdCArICptYXJnaW5MZWZ0ICsgYm9yZGVyTGVmdCArIHBhZGRpbmdMZWZ0
ICsgd2lkdGggKyBwYWRkaW5nUmlnaHQgKyBib3JkZXJSaWdodCArICptYXJnaW5SaWdodCk7Cisg
ICAgICAgICAgICByaWdodCA9IGNvbnRhaW5pbmdCbG9ja1dpZHRoIC0gKCpsZWZ0ICsgKm1hcmdp
blN0YXJ0ICsgYm9yZGVyTGVmdCArIHBhZGRpbmdMZWZ0ICsgd2lkdGggKyBwYWRkaW5nUmlnaHQg
KyBib3JkZXJSaWdodCArICptYXJnaW5FbmQpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBs
ZWZ0ID0gY29udGFpbmluZ0Jsb2NrV2lkdGggLSAoKm1hcmdpbkxlZnQgKyBib3JkZXJMZWZ0ICsg
cGFkZGluZ0xlZnQgKyB3aWR0aCArIHBhZGRpbmdSaWdodCArIGJvcmRlclJpZ2h0ICsgKm1hcmdp
blJpZ2h0ICsgKnJpZ2h0KTsKKyAgICAgICAgICAgIGxlZnQgPSBjb250YWluaW5nQmxvY2tXaWR0
aCAtICgqbWFyZ2luU3RhcnQgKyBib3JkZXJMZWZ0ICsgcGFkZGluZ0xlZnQgKyB3aWR0aCArIHBh
ZGRpbmdSaWdodCArIGJvcmRlclJpZ2h0ICsgKm1hcmdpbkVuZCArICpyaWdodCk7CiAgICAgfQog
CiAgICAgQVNTRVJUKGxlZnQpOwogICAgIEFTU0VSVChyaWdodCk7Ci0gICAgQVNTRVJUKG1hcmdp
bkxlZnQpOwotICAgIEFTU0VSVChtYXJnaW5SaWdodCk7CisgICAgQVNTRVJUKG1hcmdpblN0YXJ0
KTsKKyAgICBBU1NFUlQobWFyZ2luRW5kKTsKIAotICAgIExPR19XSVRIX1NUUkVBTShGb3JtYXR0
aW5nQ29udGV4dExheW91dCwgc3RyZWFtIDw8ICJbUG9zaXRpb25dW1dpZHRoXVtNYXJnaW5dIC0+
IG91dC1vZi1mbG93IHJlcGxhY2VkIC0+IGxlZnQoIiA8PCAqbGVmdCA8PCAicHgpIHJpZ2h0KCIg
IDw8ICpyaWdodCA8PCAicHgpIHdpZHRoKCIgPDwgd2lkdGggPDwgInB4KSBtYXJnaW4oIiA8PCAq
bWFyZ2luTGVmdCA8PCAicHgsICIgIDw8ICptYXJnaW5SaWdodCA8PCAicHgpIGxheW91dEJveCgi
IDw8ICZsYXlvdXRCb3ggPDwgIikiKTsKLSAgICByZXR1cm4geyAqbGVmdCwgKnJpZ2h0LCB7IHdp
ZHRoLCB7ICptYXJnaW5MZWZ0LCAqbWFyZ2luUmlnaHQgfSwgeyBub25Db21wdXRlZE1hcmdpbkxl
ZnQsIG5vbkNvbXB1dGVkTWFyZ2luUmlnaHQgfSB9IH07CisgICAgTE9HX1dJVEhfU1RSRUFNKEZv
cm1hdHRpbmdDb250ZXh0TGF5b3V0LCBzdHJlYW0gPDwgIltQb3NpdGlvbl1bV2lkdGhdW01hcmdp
bl0gLT4gb3V0LW9mLWZsb3cgcmVwbGFjZWQgLT4gbGVmdCgiIDw8ICpsZWZ0IDw8ICJweCkgcmln
aHQoIiAgPDwgKnJpZ2h0IDw8ICJweCkgd2lkdGgoIiA8PCB3aWR0aCA8PCAicHgpIG1hcmdpbigi
IDw8ICptYXJnaW5TdGFydCA8PCAicHgsICIgIDw8ICptYXJnaW5FbmQgPDwgInB4KSBsYXlvdXRC
b3goIiA8PCAmbGF5b3V0Qm94IDw8ICIpIik7CisgICAgcmV0dXJuIHsgKmxlZnQsICpyaWdodCwg
eyB3aWR0aCwgeyAqbWFyZ2luU3RhcnQsICptYXJnaW5FbmQgfSwgeyBub25Db21wdXRlZE1hcmdp
blN0YXJ0LCBub25Db21wdXRlZE1hcmdpbkVuZCB9IH0gfTsKIH0KIAogSGVpZ2h0QW5kTWFyZ2lu
IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6Y29tcGxpY2F0ZWRDYXNlcyhjb25zdCBMYXlv
dXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94LCBzdGQ6Om9wdGlvbmFs
PExheW91dFVuaXQ+IHVzZWRIZWlnaHQpCkBAIC02OTMsMTIgKzY5MywxMiBAQCBIZWlnaHRBbmRN
YXJnaW4gRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojpjb21wbGljYXRlZENhc2VzKGNvbnN0
IExheW91dFN0YXRlJgogICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrV2lkdGggPSBjb250YWluaW5n
QmxvY2tEaXNwbGF5Qm94LmNvbnRlbnRCb3hXaWR0aCgpOwogCiAgICAgYXV0byBoZWlnaHQgPSB1
c2VkSGVpZ2h0ID8gdXNlZEhlaWdodC52YWx1ZSgpIDogY29tcHV0ZWRIZWlnaHRWYWx1ZShsYXlv
dXRTdGF0ZSwgbGF5b3V0Qm94LCBIZWlnaHRUeXBlOjpOb3JtYWwpOwotICAgIGF1dG8gbWFyZ2lu
VG9wID0gY29tcHV0ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5tYXJnaW5Ub3AoKSwgY29udGFpbmlu
Z0Jsb2NrV2lkdGgpOwotICAgIGF1dG8gbWFyZ2luQm90dG9tID0gY29tcHV0ZWRWYWx1ZUlmTm90
QXV0byhzdHlsZS5tYXJnaW5Cb3R0b20oKSwgY29udGFpbmluZ0Jsb2NrV2lkdGgpOworICAgIGF1
dG8gbWFyZ2luQmVmb3JlID0gY29tcHV0ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5tYXJnaW5CZWZv
cmUoKSwgY29udGFpbmluZ0Jsb2NrV2lkdGgpOworICAgIGF1dG8gbWFyZ2luQWZ0ZXIgPSBjb21w
dXRlZFZhbHVlSWZOb3RBdXRvKHN0eWxlLm1hcmdpbkFmdGVyKCksIGNvbnRhaW5pbmdCbG9ja1dp
ZHRoKTsKIAogICAgIC8vICMxCi0gICAgbWFyZ2luVG9wID0gbWFyZ2luVG9wLnZhbHVlX29yKDAp
OwotICAgIG1hcmdpbkJvdHRvbSA9IG1hcmdpbkJvdHRvbS52YWx1ZV9vcigwKTsKKyAgICBtYXJn
aW5CZWZvcmUgPSBtYXJnaW5CZWZvcmUudmFsdWVfb3IoMCk7CisgICAgbWFyZ2luQWZ0ZXIgPSBt
YXJnaW5BZnRlci52YWx1ZV9vcigwKTsKICAgICAvLyAjMgogICAgIGlmICghaGVpZ2h0KSB7CiAg
ICAgICAgIEFTU0VSVChpc0hlaWdodEF1dG8obGF5b3V0Qm94KSk7CkBAIC03MDYsMTEgKzcwNiwx
MSBAQCBIZWlnaHRBbmRNYXJnaW4gRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojpjb21wbGlj
YXRlZENhc2VzKGNvbnN0IExheW91dFN0YXRlJgogICAgIH0KIAogICAgIEFTU0VSVChoZWlnaHQp
OwotICAgIEFTU0VSVChtYXJnaW5Ub3ApOwotICAgIEFTU0VSVChtYXJnaW5Cb3R0b20pOworICAg
IEFTU0VSVChtYXJnaW5CZWZvcmUpOworICAgIEFTU0VSVChtYXJnaW5BZnRlcik7CiAKLSAgICBM
T0dfV0lUSF9TVFJFQU0oRm9ybWF0dGluZ0NvbnRleHRMYXlvdXQsIHN0cmVhbSA8PCAiW0hlaWdo
dF1bTWFyZ2luXSAtPiBmbG9hdGluZyBub24tcmVwbGFjZWQgLT4gaGVpZ2h0KCIgPDwgKmhlaWdo
dCA8PCAicHgpIG1hcmdpbigiIDw8ICptYXJnaW5Ub3AgPDwgInB4LCAiIDw8ICptYXJnaW5Cb3R0
b20gPDwgInB4KSAtPiBsYXlvdXRCb3goIiA8PCAmbGF5b3V0Qm94IDw8ICIpIik7Ci0gICAgcmV0
dXJuIEhlaWdodEFuZE1hcmdpbiB7ICpoZWlnaHQsIHsgeyAqbWFyZ2luVG9wLCAqbWFyZ2luQm90
dG9tIH0sIHsgfSB9IH07CisgICAgTE9HX1dJVEhfU1RSRUFNKEZvcm1hdHRpbmdDb250ZXh0TGF5
b3V0LCBzdHJlYW0gPDwgIltIZWlnaHRdW01hcmdpbl0gLT4gZmxvYXRpbmcgbm9uLXJlcGxhY2Vk
IC0+IGhlaWdodCgiIDw8ICpoZWlnaHQgPDwgInB4KSBtYXJnaW4oIiA8PCAqbWFyZ2luQmVmb3Jl
IDw8ICJweCwgIiA8PCAqbWFyZ2luQWZ0ZXIgPDwgInB4KSAtPiBsYXlvdXRCb3goIiA8PCAmbGF5
b3V0Qm94IDw8ICIpIik7CisgICAgcmV0dXJuIEhlaWdodEFuZE1hcmdpbiB7ICpoZWlnaHQsIHsg
eyAqbWFyZ2luQmVmb3JlLCAqbWFyZ2luQWZ0ZXIgfSwgeyB9IH0gfTsKIH0KIAogV2lkdGhBbmRN
YXJnaW4gRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpmbG9hdGluZ05vblJlcGxhY2VkV2lk
dGhBbmRNYXJnaW4oTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91dEJv
eCwgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiB1c2VkV2lkdGgpCkBAIC03MzIsNyArNzMyLDcg
QEAgV2lkdGhBbmRNYXJnaW4gRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpmbG9hdGluZ05v
blJlcGxhY2VkV2lkdGhBbmRNYXJnaW4oTGEKICAgICBpZiAoIXdpZHRoKQogICAgICAgICB3aWR0
aCA9IHNocmlua1RvRml0V2lkdGgobGF5b3V0U3RhdGUsIGxheW91dEJveCk7CiAKLSAgICBMT0df
V0lUSF9TVFJFQU0oRm9ybWF0dGluZ0NvbnRleHRMYXlvdXQsIHN0cmVhbSA8PCAiW1dpZHRoXVtN
YXJnaW5dIC0+IGZsb2F0aW5nIG5vbi1yZXBsYWNlZCAtPiB3aWR0aCgiIDw8ICp3aWR0aCA8PCAi
cHgpIG1hcmdpbigiIDw8IG1hcmdpbi5sZWZ0IDw8ICJweCwgIiA8PCBtYXJnaW4ucmlnaHQgPDwg
InB4KSAtPiBsYXlvdXRCb3goIiA8PCAmbGF5b3V0Qm94IDw8ICIpIik7CisgICAgTE9HX1dJVEhf
U1RSRUFNKEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LCBzdHJlYW0gPDwgIltXaWR0aF1bTWFyZ2lu
XSAtPiBmbG9hdGluZyBub24tcmVwbGFjZWQgLT4gd2lkdGgoIiA8PCAqd2lkdGggPDwgInB4KSBt
YXJnaW4oIiA8PCBtYXJnaW4uc3RhcnQgPDwgInB4LCAiIDw8IG1hcmdpbi5lbmQgPDwgInB4KSAt
PiBsYXlvdXRCb3goIiA8PCAmbGF5b3V0Qm94IDw8ICIpIik7CiAgICAgcmV0dXJuIFdpZHRoQW5k
TWFyZ2luIHsgKndpZHRoLCBtYXJnaW4sIG1hcmdpbiB9OwogfQogCkBAIC03NTcsNyArNzU3LDcg
QEAgV2lkdGhBbmRNYXJnaW4gRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpmbG9hdGluZ1Jl
cGxhY2VkV2lkdGhBbmRNYXJnaW4oY29uc3QKICAgICBhdXRvIG1hcmdpbiA9IGNvbXB1dGVkTm9u
Q29sbGFwc2VkSG9yaXpvbnRhbE1hcmdpblZhbHVlKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpOwog
CiAgICAgTE9HX1dJVEhfU1RSRUFNKEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LCBzdHJlYW0gPDwg
IltIZWlnaHRdW01hcmdpbl0gLT4gZmxvYXRpbmcgcmVwbGFjZWQgLT4gcmVkaXJlY3RlZCB0byBp
bmxpbmUgcmVwbGFjZWQiKTsKLSAgICByZXR1cm4gaW5saW5lUmVwbGFjZWRXaWR0aEFuZE1hcmdp
bihsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94LCB1c2VkV2lkdGgsIG1hcmdpbi5sZWZ0LCBtYXJnaW4u
cmlnaHQpOworICAgIHJldHVybiBpbmxpbmVSZXBsYWNlZFdpZHRoQW5kTWFyZ2luKGxheW91dFN0
YXRlLCBsYXlvdXRCb3gsIHVzZWRXaWR0aCwgbWFyZ2luLnN0YXJ0LCBtYXJnaW4uZW5kKTsKIH0K
IAogVmVydGljYWxHZW9tZXRyeSBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9mRmxv
d1ZlcnRpY2FsR2VvbWV0cnkoY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBC
b3gmIGxheW91dEJveCwgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiB1c2VkSGVpZ2h0KQpAQCAt
ODM3LDEyICs4MzcsMTIgQEAgSGVpZ2h0QW5kTWFyZ2luIEZvcm1hdHRpbmdDb250ZXh0OjpHZW9t
ZXRyeTo6aW5saW5lUmVwbGFjZWRIZWlnaHRBbmRNYXJnaW4oY29uc3QKIAogICAgIEFTU0VSVCho
ZWlnaHQpOwogCi0gICAgTE9HX1dJVEhfU1RSRUFNKEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LCBz
dHJlYW0gPDwgIltIZWlnaHRdW01hcmdpbl0gLT4gaW5mbG93IHJlcGxhY2VkIC0+IGhlaWdodCgi
IDw8ICpoZWlnaHQgPDwgInB4KSBtYXJnaW4oIiA8PCBtYXJnaW4udG9wIDw8ICJweCwgIiA8PCBt
YXJnaW4uYm90dG9tIDw8ICJweCkgLT4gbGF5b3V0Qm94KCIgPDwgJmxheW91dEJveCA8PCAiKSIp
OworICAgIExPR19XSVRIX1NUUkVBTShGb3JtYXR0aW5nQ29udGV4dExheW91dCwgc3RyZWFtIDw8
ICJbSGVpZ2h0XVtNYXJnaW5dIC0+IGluZmxvdyByZXBsYWNlZCAtPiBoZWlnaHQoIiA8PCAqaGVp
Z2h0IDw8ICJweCkgbWFyZ2luKCIgPDwgbWFyZ2luLmJlZm9yZSA8PCAicHgsICIgPDwgbWFyZ2lu
LmFmdGVyIDw8ICJweCkgLT4gbGF5b3V0Qm94KCIgPDwgJmxheW91dEJveCA8PCAiKSIpOwogICAg
IHJldHVybiB7ICpoZWlnaHQsIHsgbWFyZ2luLCB7IH0gfSB9OwogfQogCiBXaWR0aEFuZE1hcmdp
biBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmlubGluZVJlcGxhY2VkV2lkdGhBbmRNYXJn
aW4oY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91dEJveCwK
LSAgICBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IHVzZWRXaWR0aCwgc3RkOjpvcHRpb25hbDxM
YXlvdXRVbml0PiBwcmVjb21wdXRlZE1hcmdpbkxlZnQsIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5p
dD4gcHJlY29tcHV0ZWRNYXJnaW5SaWdodCkKKyAgICBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+
IHVzZWRXaWR0aCwgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBwcmVjb21wdXRlZE1hcmdpblN0
YXJ0LCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IHByZWNvbXB1dGVkTWFyZ2luRW5kKQogewog
ICAgIEFTU0VSVCgobGF5b3V0Qm94LmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpIHx8IGxheW91dEJv
eC5pc0Zsb2F0aW5nUG9zaXRpb25lZCgpIHx8IGxheW91dEJveC5pc0luRmxvdygpKSAmJiBsYXlv
dXRCb3gucmVwbGFjZWQoKSk7CiAKQEAgLTg2OSwyNyArODY5LDI3IEBAIFdpZHRoQW5kTWFyZ2lu
IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5saW5lUmVwbGFjZWRXaWR0aEFuZE1hcmdp
bihjb25zdCBMCiAgICAgYXV0byYgY29udGFpbmluZ0Jsb2NrRGlzcGxheUJveCA9IGxheW91dFN0
YXRlLmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goKmxheW91dEJveC5jb250YWluaW5nQmxvY2soKSk7
CiAgICAgYXV0byBjb250YWluaW5nQmxvY2tXaWR0aCA9IGNvbnRhaW5pbmdCbG9ja0Rpc3BsYXlC
b3gud2lkdGgoKTsKIAotICAgIGF1dG8gY29tcHV0ZU1hcmdpblJpZ2h0ID0gWyZdKCkgewotICAg
ICAgICBpZiAocHJlY29tcHV0ZWRNYXJnaW5SaWdodCkKLSAgICAgICAgICAgIHJldHVybiBwcmVj
b21wdXRlZE1hcmdpblJpZ2h0LnZhbHVlKCk7Ci0gICAgICAgIGF1dG8gbWFyZ2luUmlnaHQgPSBj
b21wdXRlZFZhbHVlSWZOb3RBdXRvKHN0eWxlLm1hcmdpblJpZ2h0KCksIGNvbnRhaW5pbmdCbG9j
a1dpZHRoKTsKLSAgICAgICAgcmV0dXJuIG1hcmdpblJpZ2h0LnZhbHVlX29yKDBfbHUpOworICAg
IGF1dG8gY29tcHV0ZU1hcmdpbkVuZCA9IFsmXSgpIHsKKyAgICAgICAgaWYgKHByZWNvbXB1dGVk
TWFyZ2luRW5kKQorICAgICAgICAgICAgcmV0dXJuIHByZWNvbXB1dGVkTWFyZ2luRW5kLnZhbHVl
KCk7CisgICAgICAgIGF1dG8gbWFyZ2luRW5kID0gY29tcHV0ZWRWYWx1ZUlmTm90QXV0byhzdHls
ZS5tYXJnaW5FbmQoKSwgY29udGFpbmluZ0Jsb2NrV2lkdGgpOworICAgICAgICByZXR1cm4gbWFy
Z2luRW5kLnZhbHVlX29yKDBfbHUpOwogICAgIH07CiAKLSAgICBhdXRvIGNvbXB1dGVNYXJnaW5M
ZWZ0ID0gWyZdKCkgewotICAgICAgICBpZiAocHJlY29tcHV0ZWRNYXJnaW5MZWZ0KQotICAgICAg
ICAgICAgcmV0dXJuIHByZWNvbXB1dGVkTWFyZ2luTGVmdC52YWx1ZSgpOwotICAgICAgICBhdXRv
IG1hcmdpbkxlZnQgPSBjb21wdXRlZFZhbHVlSWZOb3RBdXRvKHN0eWxlLm1hcmdpbkxlZnQoKSwg
Y29udGFpbmluZ0Jsb2NrV2lkdGgpOwotICAgICAgICByZXR1cm4gbWFyZ2luTGVmdC52YWx1ZV9v
cigwX2x1KTsKKyAgICBhdXRvIGNvbXB1dGVNYXJnaW5TdGFydCA9IFsmXSgpIHsKKyAgICAgICAg
aWYgKHByZWNvbXB1dGVkTWFyZ2luU3RhcnQpCisgICAgICAgICAgICByZXR1cm4gcHJlY29tcHV0
ZWRNYXJnaW5TdGFydC52YWx1ZSgpOworICAgICAgICBhdXRvIG1hcmdpblN0YXJ0ID0gY29tcHV0
ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5tYXJnaW5TdGFydCgpLCBjb250YWluaW5nQmxvY2tXaWR0
aCk7CisgICAgICAgIHJldHVybiBtYXJnaW5TdGFydC52YWx1ZV9vcigwX2x1KTsKICAgICB9Owog
CiAgICAgYXV0byByZXBsYWNlZCA9IGxheW91dEJveC5yZXBsYWNlZCgpOwogICAgIEFTU0VSVChy
ZXBsYWNlZCk7CiAKLSAgICBhdXRvIG1hcmdpbkxlZnQgPSBjb21wdXRlTWFyZ2luTGVmdCgpOwot
ICAgIGF1dG8gbWFyZ2luUmlnaHQgPSBjb21wdXRlTWFyZ2luUmlnaHQoKTsKLSAgICBhdXRvIG5v
bkNvbXB1dGVkTWFyZ2luTGVmdCA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5bGUubWFyZ2lu
TGVmdCgpLCBjb250YWluaW5nQmxvY2tXaWR0aCkudmFsdWVfb3IoMCk7Ci0gICAgYXV0byBub25D
b21wdXRlZE1hcmdpblJpZ2h0ID0gY29tcHV0ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5tYXJnaW5S
aWdodCgpLCBjb250YWluaW5nQmxvY2tXaWR0aCkudmFsdWVfb3IoMCk7CisgICAgYXV0byBtYXJn
aW5TdGFydCA9IGNvbXB1dGVNYXJnaW5TdGFydCgpOworICAgIGF1dG8gbWFyZ2luRW5kID0gY29t
cHV0ZU1hcmdpbkVuZCgpOworICAgIGF1dG8gbm9uQ29tcHV0ZWRNYXJnaW5TdGFydCA9IGNvbXB1
dGVkVmFsdWVJZk5vdEF1dG8oc3R5bGUubWFyZ2luU3RhcnQoKSwgY29udGFpbmluZ0Jsb2NrV2lk
dGgpLnZhbHVlX29yKDApOworICAgIGF1dG8gbm9uQ29tcHV0ZWRNYXJnaW5FbmQgPSBjb21wdXRl
ZFZhbHVlSWZOb3RBdXRvKHN0eWxlLm1hcmdpbkVuZCgpLCBjb250YWluaW5nQmxvY2tXaWR0aCku
dmFsdWVfb3IoMCk7CiAgICAgYXV0byB3aWR0aCA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8odXNl
ZFdpZHRoID8gTGVuZ3RoIHsgdXNlZFdpZHRoLnZhbHVlKCksIEZpeGVkIH0gOiBzdHlsZS5sb2dp
Y2FsV2lkdGgoKSwgY29udGFpbmluZ0Jsb2NrV2lkdGgpOwogCiAgICAgYXV0byBoZWlnaHRJc0F1
dG8gPSBpc0hlaWdodEF1dG8obGF5b3V0Qm94KTsKQEAgLTkxNiw4ICs5MTYsOCBAQCBXaWR0aEFu
ZE1hcmdpbiBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmlubGluZVJlcGxhY2VkV2lkdGhB
bmRNYXJnaW4oY29uc3QgTAogCiAgICAgQVNTRVJUKHdpZHRoKTsKIAotICAgIExPR19XSVRIX1NU
UkVBTShGb3JtYXR0aW5nQ29udGV4dExheW91dCwgc3RyZWFtIDw8ICJbV2lkdGhdW01hcmdpbl0g
LT4gaW5mbG93IHJlcGxhY2VkIC0+IHdpZHRoKCIgPDwgKndpZHRoIDw8ICJweCkgbWFyZ2luKCIg
PDwgbWFyZ2luTGVmdCA8PCAicHgsICIgPDwgbWFyZ2luUmlnaHQgPDwgInB4KSAtPiBsYXlvdXRC
b3goIiA8PCAmbGF5b3V0Qm94IDw8ICIpIik7Ci0gICAgcmV0dXJuIHsgKndpZHRoLCB7IG1hcmdp
bkxlZnQsIG1hcmdpblJpZ2h0IH0sIHsgbm9uQ29tcHV0ZWRNYXJnaW5MZWZ0LCBub25Db21wdXRl
ZE1hcmdpblJpZ2h0IH0gfTsKKyAgICBMT0dfV0lUSF9TVFJFQU0oRm9ybWF0dGluZ0NvbnRleHRM
YXlvdXQsIHN0cmVhbSA8PCAiW1dpZHRoXVtNYXJnaW5dIC0+IGluZmxvdyByZXBsYWNlZCAtPiB3
aWR0aCgiIDw8ICp3aWR0aCA8PCAicHgpIG1hcmdpbigiIDw8IG1hcmdpblN0YXJ0IDw8ICJweCwg
IiA8PCBtYXJnaW5FbmQgPDwgInB4KSAtPiBsYXlvdXRCb3goIiA8PCAmbGF5b3V0Qm94IDw8ICIp
Iik7CisgICAgcmV0dXJuIHsgKndpZHRoLCB7IG1hcmdpblN0YXJ0LCBtYXJnaW5FbmQgfSwgeyBu
b25Db21wdXRlZE1hcmdpblN0YXJ0LCBub25Db21wdXRlZE1hcmdpbkVuZCB9IH07CiB9CiAKIExh
eW91dFNpemUgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbkZsb3dQb3NpdGlvbmVkUG9z
aXRpb25PZmZzZXQoY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxh
eW91dEJveCkKQEAgLTEwMjUsMTEgKzEwMjUsMTEgQEAgSG9yaXpvbnRhbE1hcmdpbiBGb3JtYXR0
aW5nQ29udGV4dDo6R2VvbWV0cnk6OmNvbXB1dGVkTm9uQ29sbGFwc2VkSG9yaXpvbnRhbE1hcmcK
ICAgICBhdXRvJiBzdHlsZSA9IGxheW91dEJveC5zdHlsZSgpOwogICAgIGF1dG8gY29udGFpbmlu
Z0Jsb2NrV2lkdGggPSBsYXlvdXRTdGF0ZS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KCpsYXlvdXRC
b3guY29udGFpbmluZ0Jsb2NrKCkpLmNvbnRlbnRCb3hXaWR0aCgpOwogCi0gICAgYXV0byBtYXJn
aW5MZWZ0ID0gY29tcHV0ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5tYXJnaW5MZWZ0KCksIGNvbnRh
aW5pbmdCbG9ja1dpZHRoKS52YWx1ZV9vcigwX2x1KTsKLSAgICBhdXRvIG1hcmdpblJpZ2h0ID0g
Y29tcHV0ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5tYXJnaW5SaWdodCgpLCBjb250YWluaW5nQmxv
Y2tXaWR0aCkudmFsdWVfb3IoMF9sdSk7CisgICAgYXV0byBtYXJnaW5TdGFydCA9IGNvbXB1dGVk
VmFsdWVJZk5vdEF1dG8oc3R5bGUubWFyZ2luU3RhcnQoKSwgY29udGFpbmluZ0Jsb2NrV2lkdGgp
LnZhbHVlX29yKDBfbHUpOworICAgIGF1dG8gbWFyZ2luRW5kID0gY29tcHV0ZWRWYWx1ZUlmTm90
QXV0byhzdHlsZS5tYXJnaW5FbmQoKSwgY29udGFpbmluZ0Jsb2NrV2lkdGgpLnZhbHVlX29yKDBf
bHUpOwogCi0gICAgTE9HX1dJVEhfU1RSRUFNKEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LCBzdHJl
YW0gPDwgIltNYXJnaW5dIC0+IG5vbiBjb2xsYXBzZWQgaG9yaXpvbnRhbCAtPiBtYXJnaW4oIiA8
PCBtYXJnaW5MZWZ0IDw8ICJweCwgIiA8PCBtYXJnaW5SaWdodCA8PCAicHgpIC0+IGxheW91dEJv
eDogIiA8PCAmbGF5b3V0Qm94KTsKLSAgICByZXR1cm4geyBtYXJnaW5MZWZ0LCBtYXJnaW5SaWdo
dCB9OworICAgIExPR19XSVRIX1NUUkVBTShGb3JtYXR0aW5nQ29udGV4dExheW91dCwgc3RyZWFt
IDw8ICJbTWFyZ2luXSAtPiBub24gY29sbGFwc2VkIGhvcml6b250YWwgLT4gbWFyZ2luKCIgPDwg
bWFyZ2luU3RhcnQgPDwgInB4LCAiIDw8IG1hcmdpbkVuZCA8PCAicHgpIC0+IGxheW91dEJveDog
IiA8PCAmbGF5b3V0Qm94KTsKKyAgICByZXR1cm4geyBtYXJnaW5TdGFydCwgbWFyZ2luRW5kIH07
CiB9CiAKIFZlcnRpY2FsTWFyZ2luOjpDb21wdXRlZFZhbHVlcyBGb3JtYXR0aW5nQ29udGV4dDo6
R2VvbWV0cnk6OmNvbXB1dGVkTm9uQ29sbGFwc2VkVmVydGljYWxNYXJnaW5WYWx1ZShjb25zdCBM
YXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQpAQCAtMTAzNywx
MSArMTAzNywxMSBAQCBWZXJ0aWNhbE1hcmdpbjo6Q29tcHV0ZWRWYWx1ZXMgRm9ybWF0dGluZ0Nv
bnRleHQ6Okdlb21ldHJ5Ojpjb21wdXRlZE5vbkNvbGxhcHNlZAogICAgIGF1dG8mIHN0eWxlID0g
bGF5b3V0Qm94LnN0eWxlKCk7CiAgICAgYXV0byBjb250YWluaW5nQmxvY2tXaWR0aCA9IGxheW91
dFN0YXRlLmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goKmxheW91dEJveC5jb250YWluaW5nQmxvY2so
KSkuY29udGVudEJveFdpZHRoKCk7CiAKLSAgICBhdXRvIG1hcmdpblRvcCA9IGNvbXB1dGVkVmFs
dWVJZk5vdEF1dG8oc3R5bGUubWFyZ2luVG9wKCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKS52YWx1
ZV9vcigwX2x1KTsKLSAgICBhdXRvIG1hcmdpbkJvdHRvbSA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1
dG8oc3R5bGUubWFyZ2luQm90dG9tKCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKS52YWx1ZV9vcigw
X2x1KTsKKyAgICBhdXRvIG1hcmdpbkJlZm9yZSA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5
bGUubWFyZ2luQmVmb3JlKCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKS52YWx1ZV9vcigwX2x1KTsK
KyAgICBhdXRvIG1hcmdpbkFmdGVyID0gY29tcHV0ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5tYXJn
aW5BZnRlcigpLCBjb250YWluaW5nQmxvY2tXaWR0aCkudmFsdWVfb3IoMF9sdSk7CiAKLSAgICBM
T0dfV0lUSF9TVFJFQU0oRm9ybWF0dGluZ0NvbnRleHRMYXlvdXQsIHN0cmVhbSA8PCAiW01hcmdp
bl0gLT4gbm9uIGNvbGxhcHNlZCB2ZXJ0aWNhbCAtPiBtYXJnaW4oIiA8PCBtYXJnaW5Ub3AgPDwg
InB4LCAiIDw8IG1hcmdpbkJvdHRvbSA8PCAicHgpIC0+IGxheW91dEJveDogIiA8PCAmbGF5b3V0
Qm94KTsKLSAgICByZXR1cm4geyBtYXJnaW5Ub3AsIG1hcmdpbkJvdHRvbSB9OworICAgIExPR19X
SVRIX1NUUkVBTShGb3JtYXR0aW5nQ29udGV4dExheW91dCwgc3RyZWFtIDw8ICJbTWFyZ2luXSAt
PiBub24gY29sbGFwc2VkIHZlcnRpY2FsIC0+IG1hcmdpbigiIDw8IG1hcmdpbkJlZm9yZSA8PCAi
cHgsICIgPDwgbWFyZ2luQWZ0ZXIgPDwgInB4KSAtPiBsYXlvdXRCb3g6ICIgPDwgJmxheW91dEJv
eCk7CisgICAgcmV0dXJuIHsgbWFyZ2luQmVmb3JlLCBtYXJnaW5BZnRlciB9OwogfQogCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHRRdWlya3Mu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0UXVpcmtzLmNwcApp
bmRleCBhM2M1YjZlODk3NWZmOWJiNTlmMDBhYjdjMDg1MDM3MTVmMTcwM2FiLi5kMTBhYmUyNzY1
NWFkOWQ5YjkzOWVkYTEwOGMxYTE1MzRkY2I5ODI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHRRdWlya3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dFF1aXJrcy5jcHAKQEAgLTQwLDI3ICs0MCwyNyBAQCBM
YXlvdXRVbml0IEZvcm1hdHRpbmdDb250ZXh0OjpRdWlya3M6OmhlaWdodFZhbHVlT2ZOZWFyZXN0
Q29udGFpbmluZ0Jsb2NrV2l0aEZpeAogICAgIC8vIEluIHF1aXJrcyBtb2RlLCB3ZSBnbyBhbmQg
dHJhdmVycyB0aGUgY29udGFpbmluZyBibG9jayBjaGFpbiB0byBmaW5kIGEgYmxvY2sgbGV2ZWwg
Ym94IHdpdGggZml4ZWQgaGVpZ2h0IHZhbHVlLCBldmVuIGlmIGl0IG1lYW5zIGxlYXZpbmcKICAg
ICAvLyB0aGUgY3VycmVudCBmb3JtYXR0aW5nIGNvbnRleHQuIEZJWE1FOiBzdXJlbHkgd2UgbmVl
ZCB0byBkbyBzb21lIHRyaWNrcyBoZXJlIHdoZW4gYmxvY2sgZGlyZWN0aW9uIHN1cHBvcnQgaXMg
YWRkZWQuCiAgICAgYXV0byogY29udGFpbmluZ0Jsb2NrID0gbGF5b3V0Qm94LmNvbnRhaW5pbmdC
bG9jaygpOwotICAgIExheW91dFVuaXQgYm9keUFuZERvY3VtZW50VmVydGljYWxNYXJnaW5zUGFk
ZGluZ3NBbmRCb3JkZXJzOworICAgIExheW91dFVuaXQgYm9keUFuZERvY3VtZW50VmVydGljYWxN
YXJnaW5QYWRkaW5nQW5kQm9yZGVyOwogICAgIHdoaWxlIChjb250YWluaW5nQmxvY2spIHsKICAg
ICAgICAgYXV0byBjb250YWluaW5nQmxvY2tIZWlnaHQgPSBjb250YWluaW5nQmxvY2stPnN0eWxl
KCkubG9naWNhbEhlaWdodCgpOwogICAgICAgICBpZiAoY29udGFpbmluZ0Jsb2NrSGVpZ2h0Lmlz
Rml4ZWQoKSkKLSAgICAgICAgICAgIHJldHVybiBjb250YWluaW5nQmxvY2tIZWlnaHQudmFsdWUo
KSAtIGJvZHlBbmREb2N1bWVudFZlcnRpY2FsTWFyZ2luc1BhZGRpbmdzQW5kQm9yZGVyczsKKyAg
ICAgICAgICAgIHJldHVybiBjb250YWluaW5nQmxvY2tIZWlnaHQudmFsdWUoKSAtIGJvZHlBbmRE
b2N1bWVudFZlcnRpY2FsTWFyZ2luUGFkZGluZ0FuZEJvcmRlcjsKIAogICAgICAgICAvLyBJZiB0
aGUgb25seSBmaXhlZCB2YWx1ZSBib3ggd2UgZmluZCBpcyB0aGUgSUNCLCB0aGVuIGlnbm9yZSB0
aGUgYm9keSBhbmQgdGhlIGRvY3VtZW50ICh2ZXJ0aWNhbCkgbWFyZ2luLCBwYWRkaW5nIGFuZCBi
b3JkZXIuIFNvIG11Y2ggcXVpcmtpbmVzcy4KICAgICAgICAgLy8gLWFuZCBpdCdzIHRvdGFsbHkg
aW5zYW5lIGJlY2F1c2Ugbm93IHdlIGZyZWVseSB0cmF2ZWwgYWNyb3NzIGZvcm1hdHRpbmcgY29u
dGV4dCBib3VuZGFyaWVzIGFuZCBjb21wdXRlZCBtYXJnaW5zIGFyZSBub25leGlzdGVudC4KICAg
ICAgICAgaWYgKGNvbnRhaW5pbmdCbG9jay0+aXNCb2R5Qm94KCkgfHwgY29udGFpbmluZ0Jsb2Nr
LT5pc0RvY3VtZW50Qm94KCkpIHsKICAgICAgICAgICAgIGF1dG8mIGRpc3BsYXlCb3ggPSBsYXlv
dXRTdGF0ZS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KCpjb250YWluaW5nQmxvY2spOwogCi0gICAg
ICAgICAgICBhdXRvIHZlcnRpY2FsTWFyZ2lucyA9IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRy
eTo6Y29tcHV0ZWROb25Db2xsYXBzZWRWZXJ0aWNhbE1hcmdpblZhbHVlKGxheW91dFN0YXRlLCAq
Y29udGFpbmluZ0Jsb2NrKTsKLSAgICAgICAgICAgIGF1dG8gdmVydGljYWxQYWRkaW5ncyA9IGRp
c3BsYXlCb3gucGFkZGluZ1RvcCgpLnZhbHVlX29yKDApICsgZGlzcGxheUJveC5wYWRkaW5nQm90
dG9tKCkudmFsdWVfb3IoMCk7Ci0gICAgICAgICAgICBhdXRvIHZlcnRpY2FsQm9yZGVycyA9IGRp
c3BsYXlCb3guYm9yZGVyVG9wKCkgKyBkaXNwbGF5Qm94LmJvcmRlckJvdHRvbSgpOwotICAgICAg
ICAgICAgYm9keUFuZERvY3VtZW50VmVydGljYWxNYXJnaW5zUGFkZGluZ3NBbmRCb3JkZXJzICs9
IHZlcnRpY2FsTWFyZ2lucy50b3AgKyB2ZXJ0aWNhbE1hcmdpbnMuYm90dG9tICsgdmVydGljYWxQ
YWRkaW5ncyArIHZlcnRpY2FsQm9yZGVyczsKKyAgICAgICAgICAgIGF1dG8gdmVydGljYWxNYXJn
aW4gPSBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmNvbXB1dGVkTm9uQ29sbGFwc2VkVmVy
dGljYWxNYXJnaW5WYWx1ZShsYXlvdXRTdGF0ZSwgKmNvbnRhaW5pbmdCbG9jayk7CisgICAgICAg
ICAgICBhdXRvIHZlcnRpY2FsUGFkZGluZyA9IGRpc3BsYXlCb3gucGFkZGluZ1RvcCgpLnZhbHVl
X29yKDApICsgZGlzcGxheUJveC5wYWRkaW5nQm90dG9tKCkudmFsdWVfb3IoMCk7CisgICAgICAg
ICAgICBhdXRvIHZlcnRpY2FsQm9yZGVyID0gZGlzcGxheUJveC5ib3JkZXJUb3AoKSArIGRpc3Bs
YXlCb3guYm9yZGVyQm90dG9tKCk7CisgICAgICAgICAgICBib2R5QW5kRG9jdW1lbnRWZXJ0aWNh
bE1hcmdpblBhZGRpbmdBbmRCb3JkZXIgKz0gdmVydGljYWxNYXJnaW4uYmVmb3JlICsgdmVydGlj
YWxNYXJnaW4uYWZ0ZXIgKyB2ZXJ0aWNhbFBhZGRpbmcgKyB2ZXJ0aWNhbEJvcmRlcjsKICAgICAg
ICAgfQogCiAgICAgICAgIGNvbnRhaW5pbmdCbG9jayA9IGNvbnRhaW5pbmdCbG9jay0+Y29udGFp
bmluZ0Jsb2NrKCk7CiAgICAgfQogICAgIC8vIEluaXRpYWwgY29udGFpbmluZyBibG9jayBoYXMg
dG8gaGF2ZSBhIGhlaWdodC4KLSAgICByZXR1cm4gbGF5b3V0U3RhdGUuZGlzcGxheUJveEZvckxh
eW91dEJveChsYXlvdXRCb3guaW5pdGlhbENvbnRhaW5pbmdCbG9jaygpKS5jb250ZW50Qm94KCku
aGVpZ2h0KCkgLSBib2R5QW5kRG9jdW1lbnRWZXJ0aWNhbE1hcmdpbnNQYWRkaW5nc0FuZEJvcmRl
cnM7CisgICAgcmV0dXJuIGxheW91dFN0YXRlLmRpc3BsYXlCb3hGb3JMYXlvdXRCb3gobGF5b3V0
Qm94LmluaXRpYWxDb250YWluaW5nQmxvY2soKSkuY29udGVudEJveCgpLmhlaWdodCgpIC0gYm9k
eUFuZERvY3VtZW50VmVydGljYWxNYXJnaW5QYWRkaW5nQW5kQm9yZGVyOwogfQogCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTWFyZ2luVHlwZXMuaCBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9NYXJnaW5UeXBlcy5oCmluZGV4IDcxNDZlMjI5MTYwN2M4NDA2OGI3MjE3OWJk
NTUzMzk5YTkxNTI2ZmQuLjZlNTNmODg3OWFjOTk5ZTVkZGVlNmJhZDcwYTA3ZWFjZGMzNmViZTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9NYXJnaW5UeXBlcy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9NYXJnaW5UeXBlcy5oCkBAIC0zNCwxNSArMzQsMTUgQEAgbmFt
ZXNwYWNlIExheW91dCB7CiAKIHN0cnVjdCBWZXJ0aWNhbE1hcmdpbiB7CiAgICAgc3RydWN0IENv
bXB1dGVkVmFsdWVzIHsKLSAgICAgICAgTGF5b3V0VW5pdCB0b3A7Ci0gICAgICAgIExheW91dFVu
aXQgYm90dG9tOworICAgICAgICBMYXlvdXRVbml0IGJlZm9yZTsKKyAgICAgICAgTGF5b3V0VW5p
dCBhZnRlcjsKICAgICB9OwogICAgIENvbXB1dGVkVmFsdWVzIHVzZWRWYWx1ZXMoKSBjb25zdDsK
ICAgICBDb21wdXRlZFZhbHVlcyBub25Db2xsYXBzZWRWYWx1ZXMoKSBjb25zdCB7IHJldHVybiBt
X25vbkNvbGxhcHNlZDsgfQogICAgIAogICAgIHN0cnVjdCBDb2xsYXBzZWRWYWx1ZXMgewotICAg
ICAgICBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IHRvcDsKLSAgICAgICAgc3RkOjpvcHRpb25h
bDxMYXlvdXRVbml0PiBib3R0b207CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4g
YmVmb3JlOworICAgICAgICBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGFmdGVyOwogICAgIH07
CiAgICAgc3RkOjpvcHRpb25hbDxDb2xsYXBzZWRWYWx1ZXM+IGNvbGxhcHNlZFZhbHVlcygpIGNv
bnN0IHsgcmV0dXJuIG1fY29sbGFwc2VkOyB9CiAgICAgdm9pZCBzZXRDb2xsYXBzZWRWYWx1ZXMo
Q29sbGFwc2VkVmFsdWVzIGNvbGxhcHNlZFZhbHVlcykgeyBtX2NvbGxhcHNlZCA9IGNvbGxhcHNl
ZFZhbHVlczsgfQpAQCAtNTcsOCArNTcsOCBAQCBwcml2YXRlOgogfTsKIAogc3RydWN0IEhvcml6
b250YWxNYXJnaW4gewotICAgIExheW91dFVuaXQgbGVmdDsKLSAgICBMYXlvdXRVbml0IHJpZ2h0
OworICAgIExheW91dFVuaXQgc3RhcnQ7CisgICAgTGF5b3V0VW5pdCBlbmQ7CiB9OwogCiBzdHJ1
Y3QgUG9zaXRpdmVBbmROZWdhdGl2ZVZlcnRpY2FsTWFyZ2luIHsKQEAgLTY2LDggKzY2LDggQEAg
c3RydWN0IFBvc2l0aXZlQW5kTmVnYXRpdmVWZXJ0aWNhbE1hcmdpbiB7CiAgICAgICAgIHN0ZDo6
b3B0aW9uYWw8TGF5b3V0VW5pdD4gcG9zaXRpdmU7CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8TGF5
b3V0VW5pdD4gbmVnYXRpdmU7CiAgICAgfTsKLSAgICBWYWx1ZXMgdG9wOwotICAgIFZhbHVlcyBi
b3R0b207CisgICAgVmFsdWVzIGJlZm9yZTsKKyAgICBWYWx1ZXMgYWZ0ZXI7CiB9OwogCiBpbmxp
bmUgVmVydGljYWxNYXJnaW46OlZlcnRpY2FsTWFyZ2luKFZlcnRpY2FsTWFyZ2luOjpDb21wdXRl
ZFZhbHVlcyBub25Db2xsYXBzZWQsIHN0ZDo6b3B0aW9uYWw8VmVydGljYWxNYXJnaW46OkNvbGxh
cHNlZFZhbHVlcz4gY29sbGFwc2VkKQpAQCAtODAsOCArODAsOCBAQCBpbmxpbmUgVmVydGljYWxN
YXJnaW46OkNvbXB1dGVkVmFsdWVzIFZlcnRpY2FsTWFyZ2luOjp1c2VkVmFsdWVzKCkgY29uc3QK
IHsKICAgICBpZiAoIW1fY29sbGFwc2VkKQogICAgICAgICByZXR1cm4gbV9ub25Db2xsYXBzZWQ7
Ci0gICAgcmV0dXJuIHsgbV9jb2xsYXBzZWQtPnRvcC52YWx1ZV9vcihtX25vbkNvbGxhcHNlZC50
b3ApLAotICAgICAgICBtX2NvbGxhcHNlZC0+Ym90dG9tLnZhbHVlX29yKG1fbm9uQ29sbGFwc2Vk
LmJvdHRvbSkgfTsKKyAgICByZXR1cm4geyBtX2NvbGxhcHNlZC0+YmVmb3JlLnZhbHVlX29yKG1f
bm9uQ29sbGFwc2VkLmJlZm9yZSksCisgICAgICAgIG1fY29sbGFwc2VkLT5hZnRlci52YWx1ZV9v
cihtX25vbkNvbGxhcHNlZC5hZnRlcikgfTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L1ZlcmlmaWNhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvVmVy
aWZpY2F0aW9uLmNwcAppbmRleCBhMjJlMjM0YjM1OWM3YjVhZTZlOWQ5ZjViMDhhNmY1NTM3M2Y0
OTFmLi44ZWIwNTQ3NDNhZmEwZWM1YThmMmI4MzQ2OTRjNGU1ODcxOWZjMmY3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvVmVyaWZpY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvVmVyaWZpY2F0aW9uLmNwcApAQCAtMjQ2LDEwICsyNDYsMTAgQEAgc3RhdGlj
IGJvb2wgb3V0cHV0TWlzbWF0Y2hpbmdCbG9ja0JveEluZm9ybWF0aW9uSWZOZWVkZWQoVGV4dFN0
cmVhbSYgc3RyZWFtLCBjb24KICAgICAgICAgYXV0byBib3JkZXJCb3ggPSBkaXNwbGF5Qm94LmJv
cmRlckJveCgpOwogCiAgICAgICAgIHJldHVybiBEaXNwbGF5OjpCb3g6OlJlY3QgewotICAgICAg
ICAgICAgYm9yZGVyQm94LnRvcCgpIC0gZGlzcGxheUJveC5ub25Db2xsYXBzZWRNYXJnaW5Ub3Ao
KSwKLSAgICAgICAgICAgIGJvcmRlckJveC5sZWZ0KCkgLSBkaXNwbGF5Qm94Lm5vbkNvbXB1dGVk
TWFyZ2luTGVmdCgpLAotICAgICAgICAgICAgZGlzcGxheUJveC5ub25Db21wdXRlZE1hcmdpbkxl
ZnQoKSArIGJvcmRlckJveC53aWR0aCgpICsgZGlzcGxheUJveC5ub25Db21wdXRlZE1hcmdpblJp
Z2h0KCksCi0gICAgICAgICAgICBkaXNwbGF5Qm94Lm5vbkNvbGxhcHNlZE1hcmdpblRvcCgpICsg
Ym9yZGVyQm94LmhlaWdodCgpICsgZGlzcGxheUJveC5ub25Db2xsYXBzZWRNYXJnaW5Cb3R0b20o
KQorICAgICAgICAgICAgYm9yZGVyQm94LnRvcCgpIC0gZGlzcGxheUJveC5ub25Db2xsYXBzZWRN
YXJnaW5CZWZvcmUoKSwKKyAgICAgICAgICAgIGJvcmRlckJveC5sZWZ0KCkgLSBkaXNwbGF5Qm94
Lm5vbkNvbXB1dGVkTWFyZ2luU3RhcnQoKSwKKyAgICAgICAgICAgIGRpc3BsYXlCb3gubm9uQ29t
cHV0ZWRNYXJnaW5TdGFydCgpICsgYm9yZGVyQm94LndpZHRoKCkgKyBkaXNwbGF5Qm94Lm5vbkNv
bXB1dGVkTWFyZ2luRW5kKCksCisgICAgICAgICAgICBkaXNwbGF5Qm94Lm5vbkNvbGxhcHNlZE1h
cmdpbkJlZm9yZSgpICsgYm9yZGVyQm94LmhlaWdodCgpICsgZGlzcGxheUJveC5ub25Db2xsYXBz
ZWRNYXJnaW5BZnRlcigpCiAgICAgICAgIH07CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5n
Q29udGV4dC5jcHAKaW5kZXggMWUzNmNiYTY3NTg5Zjg3NWU2YTY3ODdmM2UyMWI5ZDljMDBlOTAw
Yi4uNmFmYWQ0MjEwMmM4ZDc1YjZiODM2ODUyODg3MTIyYTI4YjIzZDVmMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250
ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2Nr
Rm9ybWF0dGluZ0NvbnRleHQuY3BwCkBAIC0xODQsMTcgKzE4NCwxNyBAQCB2b2lkIEJsb2NrRm9y
bWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVTdGF0aWNQb3NpdGlvbihjb25zdCBCb3gmIGxheW91dEJv
eCkgY29uc3QKICAgICBsYXlvdXRTdGF0ZS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGxheW91dEJv
eCkuc2V0VG9wTGVmdChHZW9tZXRyeTo6c3RhdGljUG9zaXRpb24obGF5b3V0U3RhdGUsIGxheW91
dEJveCkpOwogfQogCi12b2lkIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVFc3RpbWF0
ZWRNYXJnaW5Ub3AoY29uc3QgQm94JiBsYXlvdXRCb3gpIGNvbnN0Cit2b2lkIEJsb2NrRm9ybWF0
dGluZ0NvbnRleHQ6OmNvbXB1dGVFc3RpbWF0ZWRNYXJnaW5CZWZvcmUoY29uc3QgQm94JiBsYXlv
dXRCb3gpIGNvbnN0CiB7CiAgICAgYXV0byYgbGF5b3V0U3RhdGUgPSB0aGlzLT5sYXlvdXRTdGF0
ZSgpOwotICAgIGF1dG8gZXN0aW1hdGVkTWFyZ2luVG9wID0gR2VvbWV0cnk6OmVzdGltYXRlZE1h
cmdpblRvcChsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KTsKKyAgICBhdXRvIGVzdGltYXRlZE1hcmdp
bkJlZm9yZSA9IEdlb21ldHJ5Ojplc3RpbWF0ZWRNYXJnaW5CZWZvcmUobGF5b3V0U3RhdGUsIGxh
eW91dEJveCk7CiAKICAgICBhdXRvJiBkaXNwbGF5Qm94ID0gbGF5b3V0U3RhdGUuZGlzcGxheUJv
eEZvckxheW91dEJveChsYXlvdXRCb3gpOwotICAgIGRpc3BsYXlCb3guc2V0RXN0aW1hdGVkTWFy
Z2luVG9wKGVzdGltYXRlZE1hcmdpblRvcCk7Ci0gICAgZGlzcGxheUJveC5tb3ZlVmVydGljYWxs
eShlc3RpbWF0ZWRNYXJnaW5Ub3ApOworICAgIGRpc3BsYXlCb3guc2V0RXN0aW1hdGVkTWFyZ2lu
QmVmb3JlKGVzdGltYXRlZE1hcmdpbkJlZm9yZSk7CisgICAgZGlzcGxheUJveC5tb3ZlVmVydGlj
YWxseShlc3RpbWF0ZWRNYXJnaW5CZWZvcmUpOwogfQogCi12b2lkIEJsb2NrRm9ybWF0dGluZ0Nv
bnRleHQ6OmNvbXB1dGVFc3RpbWF0ZWRNYXJnaW5Ub3BGb3JBbmNlc3RvcnMoY29uc3QgQm94JiBs
YXlvdXRCb3gpIGNvbnN0Cit2b2lkIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVFc3Rp
bWF0ZWRNYXJnaW5CZWZvcmVGb3JBbmNlc3RvcnMoY29uc3QgQm94JiBsYXlvdXRCb3gpIGNvbnN0
CiB7CiAgICAgLy8gV2Ugb25seSBuZWVkIHRvIGVzdGltYXRlIG1hcmdpbiB0b3AgZm9yIGZsb2F0
IHJlbGF0ZWQgbGF5b3V0IChmb3JtYXR0aW5nIGNvbnRleHQgcm9vdHMgYXZvaWQgZmxvYXRzKS4K
ICAgICBBU1NFUlQobGF5b3V0Qm94LmlzRmxvYXRpbmdQb3NpdGlvbmVkKCkgfHwgbGF5b3V0Qm94
Lmhhc0Zsb2F0Q2xlYXIoKSB8fCBsYXlvdXRCb3guZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRpbmdD
b250ZXh0KCkgfHwgbGF5b3V0Qm94LmVzdGFibGlzaGVzSW5saW5lRm9ybWF0dGluZ0NvbnRleHQo
KSk7CkBAIC0yMTMsMTAgKzIxMywxMCBAQCB2b2lkIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNv
bXB1dGVFc3RpbWF0ZWRNYXJnaW5Ub3BGb3JBbmNlc3RvcnMoY29uc3QgQm94JiBsYQogICAgIGZv
ciAoYXV0byogYW5jZXN0b3IgPSBsYXlvdXRCb3guY29udGFpbmluZ0Jsb2NrKCk7IGFuY2VzdG9y
ICYmICFhbmNlc3Rvci0+ZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRpbmdDb250ZXh0KCk7IGFuY2Vz
dG9yID0gYW5jZXN0b3ItPmNvbnRhaW5pbmdCbG9jaygpKSB7CiAgICAgICAgIGF1dG8mIGRpc3Bs
YXlCb3ggPSBsYXlvdXRTdGF0ZS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KCphbmNlc3Rvcik7CiAg
ICAgICAgIC8vIEZJWE1FOiB3aXRoIGluY3JlbWVudGFsIGxheW91dCwgd2UgbWlnaHQgYWN0dWFs
bHkgaGF2ZSBhIHZhbGlkIChub24tZXN0aW1hdGVkKSBtYXJnaW4gdG9wIGFzIHdlbGwuCi0gICAg
ICAgIGlmIChkaXNwbGF5Qm94LmVzdGltYXRlZE1hcmdpblRvcCgpKQorICAgICAgICBpZiAoZGlz
cGxheUJveC5lc3RpbWF0ZWRNYXJnaW5CZWZvcmUoKSkKICAgICAgICAgICAgIHJldHVybjsKIAot
ICAgICAgICBjb21wdXRlRXN0aW1hdGVkTWFyZ2luVG9wKCphbmNlc3Rvcik7CisgICAgICAgIGNv
bXB1dGVFc3RpbWF0ZWRNYXJnaW5CZWZvcmUoKmFuY2VzdG9yKTsKICAgICB9CiB9CiAKQEAgLTIy
NiwyMiArMjI2LDIyIEBAIHZvaWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6cHJlY29tcHV0ZVZl
cnRpY2FsUG9zaXRpb25Gb3JGb3JtYXR0aW5nUm9vdElmTmVlZGVkCiAKICAgICBhdXRvIGF2b2lk
c0Zsb2F0cyA9IGxheW91dEJveC5pc0Zsb2F0aW5nUG9zaXRpb25lZCgpIHx8IGxheW91dEJveC5l
c3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQoKSB8fCBsYXlvdXRCb3guaGFzRmxvYXRD
bGVhcigpOwogICAgIGlmIChhdm9pZHNGbG9hdHMpCi0gICAgICAgIGNvbXB1dGVFc3RpbWF0ZWRN
YXJnaW5Ub3BGb3JBbmNlc3RvcnMobGF5b3V0Qm94KTsKKyAgICAgICAgY29tcHV0ZUVzdGltYXRl
ZE1hcmdpbkJlZm9yZUZvckFuY2VzdG9ycyhsYXlvdXRCb3gpOwogCiAgICAgLy8gSWYgdGhlIGlu
bGluZSBmb3JtYXR0aW5nIHJvb3QgaXMgYWxzbyB0aGUgcm9vdCBmb3IgdGhlIGZsb2F0cyAoaGFw
cGVucyB3aGVuIHRoZSByb290IGJveCBhbHNvIGVzdGFibGlzaGVzIGEgYmxvY2sgZm9ybWF0dGlu
ZyBjb250ZXh0KQogICAgIC8vIHRoZSBmbG9hdHMgYXJlIGluIHRoZSBjb29yZGluYXRlIHN5c3Rl
bSBvZiB0aGlzIHJvb3QuIE5vIG5lZWQgdG8gZmluZCB0aGUgZmluYWwgdmVydGljYWwgcG9zaXRp
b24uCiAgICAgYXV0byBpbmxpbmVDb250ZXh0SW5oZXJpdHNGbG9hdHMgPSBsYXlvdXRCb3guZXN0
YWJsaXNoZXNJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCgpICYmICFsYXlvdXRCb3guZXN0YWJsaXNo
ZXNCbG9ja0Zvcm1hdHRpbmdDb250ZXh0KCk7CiAgICAgaWYgKGlubGluZUNvbnRleHRJbmhlcml0
c0Zsb2F0cykgewotICAgICAgICBjb21wdXRlRXN0aW1hdGVkTWFyZ2luVG9wKGxheW91dEJveCk7
Ci0gICAgICAgIGNvbXB1dGVFc3RpbWF0ZWRNYXJnaW5Ub3BGb3JBbmNlc3RvcnMobGF5b3V0Qm94
KTsKKyAgICAgICAgY29tcHV0ZUVzdGltYXRlZE1hcmdpbkJlZm9yZShsYXlvdXRCb3gpOworICAg
ICAgICBjb21wdXRlRXN0aW1hdGVkTWFyZ2luQmVmb3JlRm9yQW5jZXN0b3JzKGxheW91dEJveCk7
CiAgICAgfQogfQogCiAjaWZuZGVmIE5ERUJVRwotc3RhdGljIGJvb2wgaGFzUHJlY29tcHV0ZWRN
YXJnaW5Ub3AoY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91
dEJveCkKK3N0YXRpYyBib29sIGhhc1ByZWNvbXB1dGVkTWFyZ2luQmVmb3JlKGNvbnN0IExheW91
dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gpCiB7CiAgICAgZm9yIChh
dXRvKiBhbmNlc3RvciA9IGxheW91dEJveC5jb250YWluaW5nQmxvY2soKTsgYW5jZXN0b3IgJiYg
IWFuY2VzdG9yLT5lc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQoKTsgYW5jZXN0b3Ig
PSBhbmNlc3Rvci0+Y29udGFpbmluZ0Jsb2NrKCkpIHsKLSAgICAgICAgaWYgKGxheW91dFN0YXRl
LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goKmFuY2VzdG9yKS5lc3RpbWF0ZWRNYXJnaW5Ub3AoKSkK
KyAgICAgICAgaWYgKGxheW91dFN0YXRlLmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goKmFuY2VzdG9y
KS5lc3RpbWF0ZWRNYXJnaW5CZWZvcmUoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtMjUzLDcgKzI1Myw3IEBAIHZvaWQgQmxvY2tGb3Jt
YXR0aW5nQ29udGV4dDo6Y29tcHV0ZUZsb2F0aW5nUG9zaXRpb24oY29uc3QgRmxvYXRpbmdDb250
ZXh0JiBmbG9hCiB7CiAgICAgYXV0byYgbGF5b3V0U3RhdGUgPSB0aGlzLT5sYXlvdXRTdGF0ZSgp
OwogICAgIEFTU0VSVChsYXlvdXRCb3guaXNGbG9hdGluZ1Bvc2l0aW9uZWQoKSk7Ci0gICAgQVNT
RVJUKGhhc1ByZWNvbXB1dGVkTWFyZ2luVG9wKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpKTsKKyAg
ICBBU1NFUlQoaGFzUHJlY29tcHV0ZWRNYXJnaW5CZWZvcmUobGF5b3V0U3RhdGUsIGxheW91dEJv
eCkpOwogCiAgICAgYXV0byYgZGlzcGxheUJveCA9IGxheW91dFN0YXRlLmRpc3BsYXlCb3hGb3JM
YXlvdXRCb3gobGF5b3V0Qm94KTsKICAgICAvLyA4LjMuMSBDb2xsYXBzaW5nIG1hcmdpbnMKQEAg
LTI2MSw3ICsyNjEsNyBAQCB2b2lkIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVGbG9h
dGluZ1Bvc2l0aW9uKGNvbnN0IEZsb2F0aW5nQ29udGV4dCYgZmxvYQogICAgIC8vIEFkanVzdCB0
aGUgc3RhdGljIHBvc2l0aW9uIGJ5IHVzaW5nIHRoZSBwcmV2aW91cyBpbmZsb3cgYm94J3Mgbm9u
LWNvbGxhcHNlZCBtYXJnaW4uCiAgICAgaWYgKGF1dG8qIHByZXZpb3VzSW5GbG93Qm94ID0gbGF5
b3V0Qm94LnByZXZpb3VzSW5GbG93U2libGluZygpKSB7CiAgICAgICAgIGF1dG8mIHByZXZpb3Vz
RGlzcGxheUJveCA9IGxheW91dFN0YXRlLmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goKnByZXZpb3Vz
SW5GbG93Qm94KTsKLSAgICAgICAgZGlzcGxheUJveC5tb3ZlVmVydGljYWxseShwcmV2aW91c0Rp
c3BsYXlCb3gubm9uQ29sbGFwc2VkTWFyZ2luQm90dG9tKCkgLSBwcmV2aW91c0Rpc3BsYXlCb3gu
bWFyZ2luQm90dG9tKCkpOworICAgICAgICBkaXNwbGF5Qm94Lm1vdmVWZXJ0aWNhbGx5KHByZXZp
b3VzRGlzcGxheUJveC5ub25Db2xsYXBzZWRNYXJnaW5BZnRlcigpIC0gcHJldmlvdXNEaXNwbGF5
Qm94Lm1hcmdpbkFmdGVyKCkpOwogICAgIH0KICAgICBkaXNwbGF5Qm94LnNldFRvcExlZnQoZmxv
YXRpbmdDb250ZXh0LnBvc2l0aW9uRm9yRmxvYXQobGF5b3V0Qm94KSk7CiB9CkBAIC0yNzMsNyAr
MjczLDcgQEAgdm9pZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlUG9zaXRpb25Ub0F2
b2lkRmxvYXRzKGNvbnN0IEZsb2F0aW5nQ29udGV4dCYKICAgICBBU1NFUlQobGF5b3V0Qm94LmVz
dGFibGlzaGVzQmxvY2tGb3JtYXR0aW5nQ29udGV4dCgpKTsKICAgICBBU1NFUlQoIWxheW91dEJv
eC5pc0Zsb2F0aW5nUG9zaXRpb25lZCgpKTsKICAgICBBU1NFUlQoIWxheW91dEJveC5oYXNGbG9h
dENsZWFyKCkpOwotICAgIEFTU0VSVChoYXNQcmVjb21wdXRlZE1hcmdpblRvcChsYXlvdXRTdGF0
ZSwgbGF5b3V0Qm94KSk7CisgICAgQVNTRVJUKGhhc1ByZWNvbXB1dGVkTWFyZ2luQmVmb3JlKGxh
eW91dFN0YXRlLCBsYXlvdXRCb3gpKTsKIAogICAgIGlmIChmbG9hdGluZ0NvbnRleHQuZmxvYXRp
bmdTdGF0ZSgpLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjkxLDggKzI5MSw4IEBA
IHZvaWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZVZlcnRpY2FsUG9zaXRpb25Gb3JG
bG9hdENsZWFyKGNvbnN0IEZsb2F0aW5nCiAgICAgYXV0byYgbGF5b3V0U3RhdGUgPSB0aGlzLT5s
YXlvdXRTdGF0ZSgpOwogICAgIC8vIEZvciBmb3JtYXR0aW5nIHJvb3RzLCB3ZSBhbHJlYWR5IHBy
ZWNvbXB1dGVkIGZpbmFsIHBvc2l0aW9uLgogICAgIGlmICghbGF5b3V0Qm94LmVzdGFibGlzaGVz
Rm9ybWF0dGluZ0NvbnRleHQoKSkKLSAgICAgICAgY29tcHV0ZUVzdGltYXRlZE1hcmdpblRvcEZv
ckFuY2VzdG9ycyhsYXlvdXRCb3gpOwotICAgIEFTU0VSVChoYXNQcmVjb21wdXRlZE1hcmdpblRv
cChsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KSk7CisgICAgICAgIGNvbXB1dGVFc3RpbWF0ZWRNYXJn
aW5CZWZvcmVGb3JBbmNlc3RvcnMobGF5b3V0Qm94KTsKKyAgICBBU1NFUlQoaGFzUHJlY29tcHV0
ZWRNYXJnaW5CZWZvcmUobGF5b3V0U3RhdGUsIGxheW91dEJveCkpOwogCiAgICAgaWYgKGF1dG8g
dmVydGljYWxQb3NpdGlvbldpdGhDbGVhcmFuY2UgPSBmbG9hdGluZ0NvbnRleHQudmVydGljYWxQ
b3NpdGlvbldpdGhDbGVhcmFuY2UobGF5b3V0Qm94KSkKICAgICAgICAgbGF5b3V0U3RhdGUuZGlz
cGxheUJveEZvckxheW91dEJveChsYXlvdXRCb3gpLnNldFRvcCgqdmVydGljYWxQb3NpdGlvbldp
dGhDbGVhcmFuY2UpOwpAQCAtMzMxLDcgKzMzMSw3IEBAIHZvaWQgQmxvY2tGb3JtYXR0aW5nQ29u
dGV4dDo6Y29tcHV0ZVdpZHRoQW5kTWFyZ2luKGNvbnN0IEJveCYgbGF5b3V0Qm94KSBjb25zdAog
CiAgICAgYXV0byYgZGlzcGxheUJveCA9IGxheW91dFN0YXRlLmRpc3BsYXlCb3hGb3JMYXlvdXRC
b3gobGF5b3V0Qm94KTsKICAgICBkaXNwbGF5Qm94LnNldENvbnRlbnRCb3hXaWR0aCh3aWR0aEFu
ZE1hcmdpbi53aWR0aCk7Ci0gICAgZGlzcGxheUJveC5tb3ZlSG9yaXpvbnRhbGx5KHdpZHRoQW5k
TWFyZ2luLm1hcmdpbi5sZWZ0KTsKKyAgICBkaXNwbGF5Qm94Lm1vdmVIb3Jpem9udGFsbHkod2lk
dGhBbmRNYXJnaW4ubWFyZ2luLnN0YXJ0KTsKICAgICBkaXNwbGF5Qm94LnNldEhvcml6b250YWxN
YXJnaW4od2lkdGhBbmRNYXJnaW4ubWFyZ2luKTsKICAgICBkaXNwbGF5Qm94LnNldEhvcml6b250
YWxOb25Db21wdXRlZE1hcmdpbih3aWR0aEFuZE1hcmdpbi5ub25Db21wdXRlZE1hcmdpbik7CiB9
CkBAIC0zNzYsOCArMzc2LDggQEAgdm9pZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRl
SGVpZ2h0QW5kTWFyZ2luKGNvbnN0IEJveCYgbGF5b3V0Qm94KSBjb25zdAogICAgIGRpc3BsYXlC
b3guc2V0VmVydGljYWxNYXJnaW4oaGVpZ2h0QW5kTWFyZ2luLm1hcmdpbik7CiAKICAgICAvLyBJ
ZiB0aGlzIGJveCBoYXMgYWxyZWFkeSBiZWVuIG1vdmVkIGJ5IHRoZSBlc3RpbWF0ZWQgdmVydGlj
YWwgbWFyZ2luLCBubyBuZWVkIHRvIG1vdmUgaXQgYWdhaW4uCi0gICAgaWYgKGxheW91dEJveC5p
c0Zsb2F0aW5nUG9zaXRpb25lZCgpIHx8ICFkaXNwbGF5Qm94LmVzdGltYXRlZE1hcmdpblRvcCgp
KQotICAgICAgICBkaXNwbGF5Qm94Lm1vdmVWZXJ0aWNhbGx5KGhlaWdodEFuZE1hcmdpbi5tYXJn
aW4udXNlZFZhbHVlcygpLnRvcCk7CisgICAgaWYgKGxheW91dEJveC5pc0Zsb2F0aW5nUG9zaXRp
b25lZCgpIHx8ICFkaXNwbGF5Qm94LmVzdGltYXRlZE1hcmdpbkJlZm9yZSgpKQorICAgICAgICBk
aXNwbGF5Qm94Lm1vdmVWZXJ0aWNhbGx5KGhlaWdodEFuZE1hcmdpbi5tYXJnaW4udXNlZFZhbHVl
cygpLmJlZm9yZSk7CiB9CiAKIEZvcm1hdHRpbmdDb250ZXh0OjpJbnN0cmluc2ljV2lkdGhDb25z
dHJhaW50cyBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjppbnN0cmluc2ljV2lkdGhDb25zdHJhaW50
cygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0
aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9j
a2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5oCmluZGV4IGU2NzdlMDE3NGYwZWQ1
OGMxNjJmYjZiNzEzZGUwOTZiMTFmMGZkMzAuLmY0NGUwMjE1N2YyMDEyYzY0YTc2NGFmZDljYTZk
ZjlhMTM3MWMzNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1h
dHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5oCkBAIC02MSw4ICs2MSw4
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb21wdXRlUG9zaXRpb25Ub0F2b2lkRmxvYXRzKGNvbnN0
IEZsb2F0aW5nQ29udGV4dCYsIGNvbnN0IEJveCYpIGNvbnN0OwogICAgIHZvaWQgY29tcHV0ZVZl
cnRpY2FsUG9zaXRpb25Gb3JGbG9hdENsZWFyKGNvbnN0IEZsb2F0aW5nQ29udGV4dCYsIGNvbnN0
IEJveCYpIGNvbnN0OwogCi0gICAgdm9pZCBjb21wdXRlRXN0aW1hdGVkTWFyZ2luVG9wRm9yQW5j
ZXN0b3JzKGNvbnN0IEJveCYpIGNvbnN0OwotICAgIHZvaWQgY29tcHV0ZUVzdGltYXRlZE1hcmdp
blRvcChjb25zdCBCb3gmKSBjb25zdDsKKyAgICB2b2lkIGNvbXB1dGVFc3RpbWF0ZWRNYXJnaW5C
ZWZvcmVGb3JBbmNlc3RvcnMoY29uc3QgQm94JikgY29uc3Q7CisgICAgdm9pZCBjb21wdXRlRXN0
aW1hdGVkTWFyZ2luQmVmb3JlKGNvbnN0IEJveCYpIGNvbnN0OwogCiAgICAgdm9pZCBwcmVjb21w
dXRlVmVydGljYWxQb3NpdGlvbkZvckZvcm1hdHRpbmdSb290SWZOZWVkZWQoY29uc3QgQm94Jikg
Y29uc3Q7CiAKQEAgLTc5LDMwICs3OSwzMCBAQCBwcml2YXRlOgogICAgICAgICBzdGF0aWMgYm9v
bCBpbnN0cmluc2ljV2lkdGhDb25zdHJhaW50c05lZWRDaGlsZHJlbldpZHRoKGNvbnN0IEJveCYp
OwogICAgICAgICBzdGF0aWMgSW5zdHJpbnNpY1dpZHRoQ29uc3RyYWludHMgaW5zdHJpbnNpY1dp
ZHRoQ29uc3RyYWludHMoY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmKTsKIAotICAgICAg
ICBzdGF0aWMgTGF5b3V0VW5pdCBlc3RpbWF0ZWRNYXJnaW5Ub3AoY29uc3QgTGF5b3V0U3RhdGUm
LCBjb25zdCBCb3gmKTsKLSAgICAgICAgc3RhdGljIExheW91dFVuaXQgZXN0aW1hdGVkTWFyZ2lu
Qm90dG9tKGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94Jik7CisgICAgICAgIHN0YXRpYyBM
YXlvdXRVbml0IGVzdGltYXRlZE1hcmdpbkJlZm9yZShjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0
IEJveCYpOworICAgICAgICBzdGF0aWMgTGF5b3V0VW5pdCBlc3RpbWF0ZWRNYXJnaW5BZnRlcihj
b25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAg
Ly8gVGhpcyBjbGFzcyBpbXBsZW1lbnRzIG1hcmdpbiBjb2xsYXBzaW5nIGZvciBibG9jayBmb3Jt
YXR0aW5nIGNvbnRleHQuCiAgICAgICAgIGNsYXNzIE1hcmdpbkNvbGxhcHNlIHsKICAgICAgICAg
cHVibGljOgotICAgICAgICAgICAgc3RhdGljIExheW91dFVuaXQgbWFyZ2luVG9wKGNvbnN0IExh
eW91dFN0YXRlJiwgY29uc3QgQm94Jik7Ci0gICAgICAgICAgICBzdGF0aWMgTGF5b3V0VW5pdCBt
YXJnaW5Cb3R0b20oY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmKTsKKyAgICAgICAgICAg
IHN0YXRpYyBMYXlvdXRVbml0IG1hcmdpbkJlZm9yZShjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0
IEJveCYpOworICAgICAgICAgICAgc3RhdGljIExheW91dFVuaXQgbWFyZ2luQWZ0ZXIoY29uc3Qg
TGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmKTsKIAotICAgICAgICAgICAgc3RhdGljIGJvb2wgaXNN
YXJnaW5Cb3R0b21Db2xsYXBzZWRXaXRoUGFyZW50KGNvbnN0IEJveCYpOwotICAgICAgICAgICAg
c3RhdGljIGJvb2wgaXNNYXJnaW5Ub3BDb2xsYXBzZWRXaXRoUGFyZW50TWFyZ2luQm90dG9tKGNv
bnN0IEJveCYpOworICAgICAgICAgICAgc3RhdGljIGJvb2wgaXNNYXJnaW5BZnRlckNvbGxhcHNl
ZFdpdGhQYXJlbnQoY29uc3QgQm94Jik7CisgICAgICAgICAgICBzdGF0aWMgYm9vbCBpc01hcmdp
bkJlZm9yZUNvbGxhcHNlZFdpdGhQYXJlbnRNYXJnaW5BZnRlcihjb25zdCBCb3gmKTsKIAogICAg
ICAgICBwcml2YXRlOgotICAgICAgICAgICAgc3RhdGljIExheW91dFVuaXQgY29sbGFwc2VkTWFy
Z2luQm90dG9tRnJvbUxhc3RDaGlsZChjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYpOwot
ICAgICAgICAgICAgc3RhdGljIExheW91dFVuaXQgbm9uQ29sbGFwc2VkTWFyZ2luQm90dG9tKGNv
bnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94Jik7CisgICAgICAgICAgICBzdGF0aWMgTGF5b3V0
VW5pdCBjb2xsYXBzZWRNYXJnaW5BZnRlckZyb21MYXN0Q2hpbGQoY29uc3QgTGF5b3V0U3RhdGUm
LCBjb25zdCBCb3gmKTsKKyAgICAgICAgICAgIHN0YXRpYyBMYXlvdXRVbml0IG5vbkNvbGxhcHNl
ZE1hcmdpbkFmdGVyKGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94Jik7CiAKLSAgICAgICAg
ICAgIHN0YXRpYyBMYXlvdXRVbml0IGNvbXB1dGVkTm9uQ29sbGFwc2VkTWFyZ2luVG9wKGNvbnN0
IExheW91dFN0YXRlJiwgY29uc3QgQm94Jik7Ci0gICAgICAgICAgICBzdGF0aWMgTGF5b3V0VW5p
dCBjb21wdXRlZE5vbkNvbGxhcHNlZE1hcmdpbkJvdHRvbShjb25zdCBMYXlvdXRTdGF0ZSYsIGNv
bnN0IEJveCYpOworICAgICAgICAgICAgc3RhdGljIExheW91dFVuaXQgY29tcHV0ZWROb25Db2xs
YXBzZWRNYXJnaW5CZWZvcmUoY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmKTsKKyAgICAg
ICAgICAgIHN0YXRpYyBMYXlvdXRVbml0IGNvbXB1dGVkTm9uQ29sbGFwc2VkTWFyZ2luQWZ0ZXIo
Y29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmKTsKIAotICAgICAgICAgICAgc3RhdGljIExh
eW91dFVuaXQgY29sbGFwc2VkTWFyZ2luVG9wRnJvbUZpcnN0Q2hpbGQoY29uc3QgTGF5b3V0U3Rh
dGUmLCBjb25zdCBCb3gmKTsKLSAgICAgICAgICAgIHN0YXRpYyBMYXlvdXRVbml0IG5vbkNvbGxh
cHNlZE1hcmdpblRvcChjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYpOworICAgICAgICAg
ICAgc3RhdGljIExheW91dFVuaXQgY29sbGFwc2VkTWFyZ2luQmVmb3JlRnJvbUZpcnN0Q2hpbGQo
Y29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmKTsKKyAgICAgICAgICAgIHN0YXRpYyBMYXlv
dXRVbml0IG5vbkNvbGxhcHNlZE1hcmdpbkJlZm9yZShjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0
IEJveCYpOwogCi0gICAgICAgICAgICBzdGF0aWMgYm9vbCBpc01hcmdpblRvcENvbGxhcHNlZFdp
dGhQYXJlbnQoY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmKTsKKyAgICAgICAgICAgIHN0
YXRpYyBib29sIGlzTWFyZ2luQmVmb3JlQ29sbGFwc2VkV2l0aFBhcmVudChjb25zdCBMYXlvdXRT
dGF0ZSYsIGNvbnN0IEJveCYpOwogICAgICAgICB9OwogCiAgICAgICAgIHN0YXRpYyBIZWlnaHRB
bmRNYXJnaW4gaW5GbG93Tm9uUmVwbGFjZWRIZWlnaHRBbmRNYXJnaW4oY29uc3QgTGF5b3V0U3Rh
dGUmLCBjb25zdCBCb3gmLCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IHVzZWRIZWlnaHQgPSB7
IH0pOwpAQCAtMTE2LDcgKzExNiw3IEBAIHByaXZhdGU6CiAgICAgICAgIHN0YXRpYyBib29sIG5l
ZWRzU3RyZXRjaGluZyhjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYpOwogICAgICAgICBz
dGF0aWMgSGVpZ2h0QW5kTWFyZ2luIHN0cmV0Y2hlZEhlaWdodChjb25zdCBMYXlvdXRTdGF0ZSYs
IGNvbnN0IEJveCYsIEhlaWdodEFuZE1hcmdpbik7CiAKLSAgICAgICAgc3RhdGljIGJvb2wgc2hv
dWxkSWdub3JlTWFyZ2luVG9wKGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94Jik7CisgICAg
ICAgIHN0YXRpYyBib29sIHNob3VsZElnbm9yZU1hcmdpbkJlZm9yZShjb25zdCBMYXlvdXRTdGF0
ZSYsIGNvbnN0IEJveCYpOwogICAgIH07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGlu
Z0NvbnRleHRHZW9tZXRyeS5jcHAKaW5kZXggZWJlMWEyMjcwYjg5ODFmMTZlOWVhMTNiMWVjYjZm
OTdiYTg3YTA2NS4uMzlmOTQwYjg3ZWFiOTM5NDUzMmE3YzUxYWNmODQ5YTI2NTUyNzdlMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1h
dHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9j
a2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcApAQCAtNjEsOSAr
NjEsOSBAQCBIZWlnaHRBbmRNYXJnaW4gQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6
OmluRmxvd05vblJlcGxhY2VkSGVpZ2h0QW5kTWFyZwogICAgICAgICBhdXRvIGNvbnRhaW5pbmdC
bG9ja1dpZHRoID0gbGF5b3V0U3RhdGUuZGlzcGxheUJveEZvckxheW91dEJveCgqbGF5b3V0Qm94
LmNvbnRhaW5pbmdCbG9jaygpKS5jb250ZW50Qm94V2lkdGgoKTsKICAgICAgICAgYXV0byYgZGlz
cGxheUJveCA9IGxheW91dFN0YXRlLmRpc3BsYXlCb3hGb3JMYXlvdXRCb3gobGF5b3V0Qm94KTsK
IAotICAgICAgICBhdXRvIG5vbkNvbGxhcHNlZE1hcmdpbiA9IFZlcnRpY2FsTWFyZ2luOjpDb21w
dXRlZFZhbHVlcyB7IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5bGUubWFyZ2luVG9wKCksIGNv
bnRhaW5pbmdCbG9ja1dpZHRoKS52YWx1ZV9vcigwKSwKLSAgICAgICAgICAgIGNvbXB1dGVkVmFs
dWVJZk5vdEF1dG8oc3R5bGUubWFyZ2luQm90dG9tKCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKS52
YWx1ZV9vcigwKSB9OyAKLSAgICAgICAgYXV0byBjb2xsYXBzZWRNYXJnaW4gPSBWZXJ0aWNhbE1h
cmdpbjo6Q29sbGFwc2VkVmFsdWVzIHsgTWFyZ2luQ29sbGFwc2U6Om1hcmdpblRvcChsYXlvdXRT
dGF0ZSwgbGF5b3V0Qm94KSwgTWFyZ2luQ29sbGFwc2U6Om1hcmdpbkJvdHRvbShsYXlvdXRTdGF0
ZSwgbGF5b3V0Qm94KSB9OworICAgICAgICBhdXRvIG5vbkNvbGxhcHNlZE1hcmdpbiA9IFZlcnRp
Y2FsTWFyZ2luOjpDb21wdXRlZFZhbHVlcyB7IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5bGUu
bWFyZ2luQmVmb3JlKCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKS52YWx1ZV9vcigwKSwKKyAgICAg
ICAgICAgIGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5bGUubWFyZ2luQWZ0ZXIoKSwgY29udGFp
bmluZ0Jsb2NrV2lkdGgpLnZhbHVlX29yKDApIH07IAorICAgICAgICBhdXRvIGNvbGxhcHNlZE1h
cmdpbiA9IFZlcnRpY2FsTWFyZ2luOjpDb2xsYXBzZWRWYWx1ZXMgeyBNYXJnaW5Db2xsYXBzZTo6
bWFyZ2luQmVmb3JlKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpLCBNYXJnaW5Db2xsYXBzZTo6bWFy
Z2luQWZ0ZXIobGF5b3V0U3RhdGUsIGxheW91dEJveCkgfTsKICAgICAgICAgYXV0byBib3JkZXJB
bmRQYWRkaW5nVG9wID0gZGlzcGxheUJveC5ib3JkZXJUb3AoKSArIGRpc3BsYXlCb3gucGFkZGlu
Z1RvcCgpLnZhbHVlX29yKDApOwogCiAgICAgICAgIGF1dG8gaGVpZ2h0ID0gdXNlZEhlaWdodCA/
IHVzZWRIZWlnaHQudmFsdWUoKSA6IGNvbXB1dGVkSGVpZ2h0VmFsdWUobGF5b3V0U3RhdGUsIGxh
eW91dEJveCwgSGVpZ2h0VHlwZTo6Tm9ybWFsKTsKQEAgLTg0LDE0ICs4NCwxNCBAQCBIZWlnaHRB
bmRNYXJnaW4gQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmluRmxvd05vblJlcGxh
Y2VkSGVpZ2h0QW5kTWFyZwogICAgICAgICAvLyAyLiB0aGUgYm90dG9tIGVkZ2Ugb2YgdGhlIGJv
dHRvbSAocG9zc2libHkgY29sbGFwc2VkKSBtYXJnaW4gb2YgaXRzIGxhc3QgaW4tZmxvdyBjaGls
ZCwgaWYgdGhlIGNoaWxkJ3MgYm90dG9tIG1hcmdpbi4uLgogICAgICAgICBhdXRvKiBsYXN0SW5G
bG93Q2hpbGQgPSBkb3duY2FzdDxDb250YWluZXI+KGxheW91dEJveCkubGFzdEluRmxvd0NoaWxk
KCk7CiAgICAgICAgIEFTU0VSVChsYXN0SW5GbG93Q2hpbGQpOwotICAgICAgICBpZiAoIU1hcmdp
bkNvbGxhcHNlOjppc01hcmdpbkJvdHRvbUNvbGxhcHNlZFdpdGhQYXJlbnQoKmxhc3RJbkZsb3dD
aGlsZCkpIHsKKyAgICAgICAgaWYgKCFNYXJnaW5Db2xsYXBzZTo6aXNNYXJnaW5BZnRlckNvbGxh
cHNlZFdpdGhQYXJlbnQoKmxhc3RJbkZsb3dDaGlsZCkpIHsKICAgICAgICAgICAgIGF1dG8mIGxh
c3RJbkZsb3dEaXNwbGF5Qm94ID0gbGF5b3V0U3RhdGUuZGlzcGxheUJveEZvckxheW91dEJveCgq
bGFzdEluRmxvd0NoaWxkKTsKLSAgICAgICAgICAgIHJldHVybiB7IGxhc3RJbkZsb3dEaXNwbGF5
Qm94LmJvdHRvbSgpICsgbGFzdEluRmxvd0Rpc3BsYXlCb3gubWFyZ2luQm90dG9tKCkgLSBib3Jk
ZXJBbmRQYWRkaW5nVG9wLCB7IG5vbkNvbGxhcHNlZE1hcmdpbiwgY29sbGFwc2VkTWFyZ2luIH0g
fTsKKyAgICAgICAgICAgIHJldHVybiB7IGxhc3RJbkZsb3dEaXNwbGF5Qm94LmJvdHRvbSgpICsg
bGFzdEluRmxvd0Rpc3BsYXlCb3gubWFyZ2luQWZ0ZXIoKSAtIGJvcmRlckFuZFBhZGRpbmdUb3As
IHsgbm9uQ29sbGFwc2VkTWFyZ2luLCBjb2xsYXBzZWRNYXJnaW4gfSB9OwogICAgICAgICB9CiAK
ICAgICAgICAgLy8gMy4gdGhlIGJvdHRvbSBib3JkZXIgZWRnZSBvZiB0aGUgbGFzdCBpbi1mbG93
IGNoaWxkIHdob3NlIHRvcCBtYXJnaW4gZG9lc24ndCBjb2xsYXBzZSB3aXRoIHRoZSBlbGVtZW50
J3MgYm90dG9tIG1hcmdpbgogICAgICAgICBhdXRvKiBpbkZsb3dDaGlsZCA9IGxhc3RJbkZsb3dD
aGlsZDsKLSAgICAgICAgd2hpbGUgKGluRmxvd0NoaWxkICYmIE1hcmdpbkNvbGxhcHNlOjppc01h
cmdpblRvcENvbGxhcHNlZFdpdGhQYXJlbnRNYXJnaW5Cb3R0b20oKmluRmxvd0NoaWxkKSkKKyAg
ICAgICAgd2hpbGUgKGluRmxvd0NoaWxkICYmIE1hcmdpbkNvbGxhcHNlOjppc01hcmdpbkJlZm9y
ZUNvbGxhcHNlZFdpdGhQYXJlbnRNYXJnaW5BZnRlcigqaW5GbG93Q2hpbGQpKQogICAgICAgICAg
ICAgaW5GbG93Q2hpbGQgPSBpbkZsb3dDaGlsZC0+cHJldmlvdXNJbkZsb3dTaWJsaW5nKCk7CiAg
ICAgICAgIGlmIChpbkZsb3dDaGlsZCkgewogICAgICAgICAgICAgYXV0byYgaW5GbG93RGlzcGxh
eUJveCA9IGxheW91dFN0YXRlLmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goKmluRmxvd0NoaWxkKTsK
QEAgLTEwNCw3ICsxMDQsNyBAQCBIZWlnaHRBbmRNYXJnaW4gQmxvY2tGb3JtYXR0aW5nQ29udGV4
dDo6R2VvbWV0cnk6OmluRmxvd05vblJlcGxhY2VkSGVpZ2h0QW5kTWFyZwogCiAgICAgYXV0byBo
ZWlnaHRBbmRNYXJnaW4gPSBjb21wdXRlKCk7CiAKLSAgICBMT0dfV0lUSF9TVFJFQU0oRm9ybWF0
dGluZ0NvbnRleHRMYXlvdXQsIHN0cmVhbSA8PCAiW0hlaWdodF1bTWFyZ2luXSAtPiBpbmZsb3cg
bm9uLXJlcGxhY2VkIC0+IGhlaWdodCgiIDw8IGhlaWdodEFuZE1hcmdpbi5oZWlnaHQgPDwgInB4
KSBtYXJnaW4oIiA8PCBoZWlnaHRBbmRNYXJnaW4ubWFyZ2luLnVzZWRWYWx1ZXMoKS50b3AgPDwg
InB4LCAiIDw8IGhlaWdodEFuZE1hcmdpbi5tYXJnaW4udXNlZFZhbHVlcygpLmJvdHRvbSA8PCAi
cHgpIC0+IGxheW91dEJveCgiIDw8ICZsYXlvdXRCb3ggPDwgIikiKTsKKyAgICBMT0dfV0lUSF9T
VFJFQU0oRm9ybWF0dGluZ0NvbnRleHRMYXlvdXQsIHN0cmVhbSA8PCAiW0hlaWdodF1bTWFyZ2lu
XSAtPiBpbmZsb3cgbm9uLXJlcGxhY2VkIC0+IGhlaWdodCgiIDw8IGhlaWdodEFuZE1hcmdpbi5o
ZWlnaHQgPDwgInB4KSBtYXJnaW4oIiA8PCBoZWlnaHRBbmRNYXJnaW4ubWFyZ2luLnVzZWRWYWx1
ZXMoKS5iZWZvcmUgPDwgInB4LCAiIDw8IGhlaWdodEFuZE1hcmdpbi5tYXJnaW4udXNlZFZhbHVl
cygpLmFmdGVyIDw8ICJweCkgLT4gbGF5b3V0Qm94KCIgPDwgJmxheW91dEJveCA8PCAiKSIpOwog
ICAgIHJldHVybiBoZWlnaHRBbmRNYXJnaW47CiB9CiAKQEAgLTE0MSwxMCArMTQxLDEwIEBAIFdp
ZHRoQW5kTWFyZ2luIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbkZsb3dOb25S
ZXBsYWNlZFdpZHRoQW5kTWFyZ2luCiAgICAgICAgIGF1dG8mIGRpc3BsYXlCb3ggPSBsYXlvdXRT
dGF0ZS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGxheW91dEJveCk7CiAKICAgICAgICAgYXV0byB3
aWR0aCA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8odXNlZFdpZHRoID8gTGVuZ3RoIHsgdXNlZFdp
ZHRoLnZhbHVlKCksIEZpeGVkIH0gOiBzdHlsZS5sb2dpY2FsV2lkdGgoKSwgY29udGFpbmluZ0Js
b2NrV2lkdGgpOwotICAgICAgICBhdXRvIG1hcmdpbkxlZnQgPSBjb21wdXRlZFZhbHVlSWZOb3RB
dXRvKHN0eWxlLm1hcmdpbkxlZnQoKSwgY29udGFpbmluZ0Jsb2NrV2lkdGgpOwotICAgICAgICBh
dXRvIG1hcmdpblJpZ2h0ID0gY29tcHV0ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5tYXJnaW5SaWdo
dCgpLCBjb250YWluaW5nQmxvY2tXaWR0aCk7Ci0gICAgICAgIGF1dG8gbm9uQ29tcHV0ZWRNYXJn
aW5MZWZ0ID0gbWFyZ2luTGVmdC52YWx1ZV9vcigwKTsKLSAgICAgICAgYXV0byBub25Db21wdXRl
ZE1hcmdpblJpZ2h0ID0gbWFyZ2luUmlnaHQudmFsdWVfb3IoMCk7CisgICAgICAgIGF1dG8gbWFy
Z2luU3RhcnQgPSBjb21wdXRlZFZhbHVlSWZOb3RBdXRvKHN0eWxlLm1hcmdpblN0YXJ0KCksIGNv
bnRhaW5pbmdCbG9ja1dpZHRoKTsKKyAgICAgICAgYXV0byBtYXJnaW5FbmQgPSBjb21wdXRlZFZh
bHVlSWZOb3RBdXRvKHN0eWxlLm1hcmdpbkVuZCgpLCBjb250YWluaW5nQmxvY2tXaWR0aCk7Cisg
ICAgICAgIGF1dG8gbm9uQ29tcHV0ZWRNYXJnaW5TdGFydCA9IG1hcmdpblN0YXJ0LnZhbHVlX29y
KDApOworICAgICAgICBhdXRvIG5vbkNvbXB1dGVkTWFyZ2luRW5kID0gbWFyZ2luRW5kLnZhbHVl
X29yKDApOwogICAgICAgICBhdXRvIGJvcmRlckxlZnQgPSBkaXNwbGF5Qm94LmJvcmRlckxlZnQo
KTsKICAgICAgICAgYXV0byBib3JkZXJSaWdodCA9IGRpc3BsYXlCb3guYm9yZGVyUmlnaHQoKTsK
ICAgICAgICAgYXV0byBwYWRkaW5nTGVmdCA9IGRpc3BsYXlCb3gucGFkZGluZ0xlZnQoKS52YWx1
ZV9vcigwKTsKQEAgLTE1Miw1MSArMTUyLDUxIEBAIFdpZHRoQW5kTWFyZ2luIEJsb2NrRm9ybWF0
dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbkZsb3dOb25SZXBsYWNlZFdpZHRoQW5kTWFyZ2luCiAK
ICAgICAgICAgLy8gIzEKICAgICAgICAgaWYgKHdpZHRoKSB7Ci0gICAgICAgICAgICBhdXRvIGhv
cml6b250YWxTcGFjZUZvck1hcmdpbiA9IGNvbnRhaW5pbmdCbG9ja1dpZHRoIC0gKG1hcmdpbkxl
ZnQudmFsdWVfb3IoMCkgKyBib3JkZXJMZWZ0ICsgcGFkZGluZ0xlZnQgKyAqd2lkdGggKyBwYWRk
aW5nUmlnaHQgKyBib3JkZXJSaWdodCArIG1hcmdpblJpZ2h0LnZhbHVlX29yKDApKTsKKyAgICAg
ICAgICAgIGF1dG8gaG9yaXpvbnRhbFNwYWNlRm9yTWFyZ2luID0gY29udGFpbmluZ0Jsb2NrV2lk
dGggLSAobWFyZ2luU3RhcnQudmFsdWVfb3IoMCkgKyBib3JkZXJMZWZ0ICsgcGFkZGluZ0xlZnQg
KyAqd2lkdGggKyBwYWRkaW5nUmlnaHQgKyBib3JkZXJSaWdodCArIG1hcmdpbkVuZC52YWx1ZV9v
cigwKSk7CiAgICAgICAgICAgICBpZiAoaG9yaXpvbnRhbFNwYWNlRm9yTWFyZ2luIDwgMCkgewot
ICAgICAgICAgICAgICAgIG1hcmdpbkxlZnQgPSBtYXJnaW5MZWZ0LnZhbHVlX29yKDApOwotICAg
ICAgICAgICAgICAgIG1hcmdpblJpZ2h0ID0gbWFyZ2luUmlnaHQudmFsdWVfb3IoMCk7CisgICAg
ICAgICAgICAgICAgbWFyZ2luU3RhcnQgPSBtYXJnaW5TdGFydC52YWx1ZV9vcigwKTsKKyAgICAg
ICAgICAgICAgICBtYXJnaW5FbmQgPSBtYXJnaW5FbmQudmFsdWVfb3IoMCk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KIAogICAgICAgICAvLyAjMgotICAgICAgICBpZiAod2lkdGggJiYgbWFy
Z2luTGVmdCAmJiBtYXJnaW5SaWdodCkgeworICAgICAgICBpZiAod2lkdGggJiYgbWFyZ2luU3Rh
cnQgJiYgbWFyZ2luRW5kKSB7CiAgICAgICAgICAgICBpZiAoY29udGFpbmluZ0Jsb2NrLT5zdHls
ZSgpLmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSkKLSAgICAgICAgICAgICAgICBtYXJnaW5SaWdo
dCA9IGNvbnRhaW5pbmdCbG9ja1dpZHRoIC0gKCptYXJnaW5MZWZ0ICsgYm9yZGVyTGVmdCArIHBh
ZGRpbmdMZWZ0ICArICp3aWR0aCArIHBhZGRpbmdSaWdodCArIGJvcmRlclJpZ2h0KTsKKyAgICAg
ICAgICAgICAgICBtYXJnaW5FbmQgPSBjb250YWluaW5nQmxvY2tXaWR0aCAtICgqbWFyZ2luU3Rh
cnQgKyBib3JkZXJMZWZ0ICsgcGFkZGluZ0xlZnQgICsgKndpZHRoICsgcGFkZGluZ1JpZ2h0ICsg
Ym9yZGVyUmlnaHQpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIG1hcmdpbkxl
ZnQgPSBjb250YWluaW5nQmxvY2tXaWR0aCAtIChib3JkZXJMZWZ0ICsgcGFkZGluZ0xlZnQgKyAq
d2lkdGggKyBwYWRkaW5nUmlnaHQgKyBib3JkZXJSaWdodCArICptYXJnaW5SaWdodCk7CisgICAg
ICAgICAgICAgICAgbWFyZ2luU3RhcnQgPSBjb250YWluaW5nQmxvY2tXaWR0aCAtIChib3JkZXJM
ZWZ0ICsgcGFkZGluZ0xlZnQgKyAqd2lkdGggKyBwYWRkaW5nUmlnaHQgKyBib3JkZXJSaWdodCAr
ICptYXJnaW5FbmQpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gIzMKLSAgICAgICAgaWYgKCFt
YXJnaW5MZWZ0ICYmIHdpZHRoICYmIG1hcmdpblJpZ2h0KQotICAgICAgICAgICAgbWFyZ2luTGVm
dCA9IGNvbnRhaW5pbmdCbG9ja1dpZHRoIC0gKGJvcmRlckxlZnQgKyBwYWRkaW5nTGVmdCAgKyAq
d2lkdGggKyBwYWRkaW5nUmlnaHQgKyBib3JkZXJSaWdodCArICptYXJnaW5SaWdodCk7Ci0gICAg
ICAgIGVsc2UgaWYgKG1hcmdpbkxlZnQgJiYgIXdpZHRoICYmIG1hcmdpblJpZ2h0KQotICAgICAg
ICAgICAgd2lkdGggPSBjb250YWluaW5nQmxvY2tXaWR0aCAtICgqbWFyZ2luTGVmdCArIGJvcmRl
ckxlZnQgKyBwYWRkaW5nTGVmdCArIHBhZGRpbmdSaWdodCArIGJvcmRlclJpZ2h0ICsgKm1hcmdp
blJpZ2h0KTsKLSAgICAgICAgZWxzZSBpZiAobWFyZ2luTGVmdCAmJiB3aWR0aCAmJiAhbWFyZ2lu
UmlnaHQpCi0gICAgICAgICAgICBtYXJnaW5SaWdodCA9IGNvbnRhaW5pbmdCbG9ja1dpZHRoIC0g
KCptYXJnaW5MZWZ0ICsgYm9yZGVyTGVmdCArIHBhZGRpbmdMZWZ0ICsgKndpZHRoICsgcGFkZGlu
Z1JpZ2h0ICsgYm9yZGVyUmlnaHQpOworICAgICAgICBpZiAoIW1hcmdpblN0YXJ0ICYmIHdpZHRo
ICYmIG1hcmdpbkVuZCkKKyAgICAgICAgICAgIG1hcmdpblN0YXJ0ID0gY29udGFpbmluZ0Jsb2Nr
V2lkdGggLSAoYm9yZGVyTGVmdCArIHBhZGRpbmdMZWZ0ICArICp3aWR0aCArIHBhZGRpbmdSaWdo
dCArIGJvcmRlclJpZ2h0ICsgKm1hcmdpbkVuZCk7CisgICAgICAgIGVsc2UgaWYgKG1hcmdpblN0
YXJ0ICYmICF3aWR0aCAmJiBtYXJnaW5FbmQpCisgICAgICAgICAgICB3aWR0aCA9IGNvbnRhaW5p
bmdCbG9ja1dpZHRoIC0gKCptYXJnaW5TdGFydCArIGJvcmRlckxlZnQgKyBwYWRkaW5nTGVmdCAr
IHBhZGRpbmdSaWdodCArIGJvcmRlclJpZ2h0ICsgKm1hcmdpbkVuZCk7CisgICAgICAgIGVsc2Ug
aWYgKG1hcmdpblN0YXJ0ICYmIHdpZHRoICYmICFtYXJnaW5FbmQpCisgICAgICAgICAgICBtYXJn
aW5FbmQgPSBjb250YWluaW5nQmxvY2tXaWR0aCAtICgqbWFyZ2luU3RhcnQgKyBib3JkZXJMZWZ0
ICsgcGFkZGluZ0xlZnQgKyAqd2lkdGggKyBwYWRkaW5nUmlnaHQgKyBib3JkZXJSaWdodCk7CiAK
ICAgICAgICAgLy8gIzQKICAgICAgICAgaWYgKCF3aWR0aCkgewotICAgICAgICAgICAgbWFyZ2lu
TGVmdCA9IG1hcmdpbkxlZnQudmFsdWVfb3IoMCk7Ci0gICAgICAgICAgICBtYXJnaW5SaWdodCA9
IG1hcmdpblJpZ2h0LnZhbHVlX29yKDApOwotICAgICAgICAgICAgd2lkdGggPSBjb250YWluaW5n
QmxvY2tXaWR0aCAtICgqbWFyZ2luTGVmdCArIGJvcmRlckxlZnQgKyBwYWRkaW5nTGVmdCArIHBh
ZGRpbmdSaWdodCArIGJvcmRlclJpZ2h0ICsgKm1hcmdpblJpZ2h0KTsKKyAgICAgICAgICAgIG1h
cmdpblN0YXJ0ID0gbWFyZ2luU3RhcnQudmFsdWVfb3IoMCk7CisgICAgICAgICAgICBtYXJnaW5F
bmQgPSBtYXJnaW5FbmQudmFsdWVfb3IoMCk7CisgICAgICAgICAgICB3aWR0aCA9IGNvbnRhaW5p
bmdCbG9ja1dpZHRoIC0gKCptYXJnaW5TdGFydCArIGJvcmRlckxlZnQgKyBwYWRkaW5nTGVmdCAr
IHBhZGRpbmdSaWdodCArIGJvcmRlclJpZ2h0ICsgKm1hcmdpbkVuZCk7CiAgICAgICAgIH0KIAog
ICAgICAgICAvLyAjNQotICAgICAgICBpZiAoIW1hcmdpbkxlZnQgJiYgIW1hcmdpblJpZ2h0KSB7
CisgICAgICAgIGlmICghbWFyZ2luU3RhcnQgJiYgIW1hcmdpbkVuZCkgewogICAgICAgICAgICAg
YXV0byBob3Jpem9udGFsU3BhY2VGb3JNYXJnaW4gPSBjb250YWluaW5nQmxvY2tXaWR0aCAtIChi
b3JkZXJMZWZ0ICsgcGFkZGluZ0xlZnQgICsgKndpZHRoICsgcGFkZGluZ1JpZ2h0ICsgYm9yZGVy
UmlnaHQpOwotICAgICAgICAgICAgbWFyZ2luTGVmdCA9IG1hcmdpblJpZ2h0ID0gaG9yaXpvbnRh
bFNwYWNlRm9yTWFyZ2luIC8gMjsKKyAgICAgICAgICAgIG1hcmdpblN0YXJ0ID0gbWFyZ2luRW5k
ID0gaG9yaXpvbnRhbFNwYWNlRm9yTWFyZ2luIC8gMjsKICAgICAgICAgfQogCiAgICAgICAgIEFT
U0VSVCh3aWR0aCk7Ci0gICAgICAgIEFTU0VSVChtYXJnaW5MZWZ0KTsKLSAgICAgICAgQVNTRVJU
KG1hcmdpblJpZ2h0KTsKKyAgICAgICAgQVNTRVJUKG1hcmdpblN0YXJ0KTsKKyAgICAgICAgQVNT
RVJUKG1hcmdpbkVuZCk7CiAKLSAgICAgICAgcmV0dXJuIFdpZHRoQW5kTWFyZ2luIHsgKndpZHRo
LCB7ICptYXJnaW5MZWZ0LCAqbWFyZ2luUmlnaHQgfSwgeyBub25Db21wdXRlZE1hcmdpbkxlZnQs
IG5vbkNvbXB1dGVkTWFyZ2luUmlnaHQgfSB9OworICAgICAgICByZXR1cm4gV2lkdGhBbmRNYXJn
aW4geyAqd2lkdGgsIHsgKm1hcmdpblN0YXJ0LCAqbWFyZ2luRW5kIH0sIHsgbm9uQ29tcHV0ZWRN
YXJnaW5TdGFydCwgbm9uQ29tcHV0ZWRNYXJnaW5FbmQgfSB9OwogICAgIH07CiAKICAgICBhdXRv
IHdpZHRoQW5kTWFyZ2luID0gY29tcHV0ZSgpOwotICAgIExPR19XSVRIX1NUUkVBTShGb3JtYXR0
aW5nQ29udGV4dExheW91dCwgc3RyZWFtIDw8ICJbV2lkdGhdW01hcmdpbl0gLT4gaW5mbG93IG5v
bi1yZXBsYWNlZCAtPiB3aWR0aCgiIDw8IHdpZHRoQW5kTWFyZ2luLndpZHRoIDw8ICJweCkgbWFy
Z2luKCIgPDwgd2lkdGhBbmRNYXJnaW4ubWFyZ2luLmxlZnQgPDwgInB4LCAiIDw8IHdpZHRoQW5k
TWFyZ2luLm1hcmdpbi5yaWdodCA8PCAicHgpIC0+IGxheW91dEJveCgiIDw8ICZsYXlvdXRCb3gg
PDwgIikiKTsKKyAgICBMT0dfV0lUSF9TVFJFQU0oRm9ybWF0dGluZ0NvbnRleHRMYXlvdXQsIHN0
cmVhbSA8PCAiW1dpZHRoXVtNYXJnaW5dIC0+IGluZmxvdyBub24tcmVwbGFjZWQgLT4gd2lkdGgo
IiA8PCB3aWR0aEFuZE1hcmdpbi53aWR0aCA8PCAicHgpIG1hcmdpbigiIDw8IHdpZHRoQW5kTWFy
Z2luLm1hcmdpbi5zdGFydCA8PCAicHgsICIgPDwgd2lkdGhBbmRNYXJnaW4ubWFyZ2luLmVuZCA8
PCAicHgpIC0+IGxheW91dEJveCgiIDw8ICZsYXlvdXRCb3ggPDwgIikiKTsKICAgICByZXR1cm4g
d2lkdGhBbmRNYXJnaW47CiB9CiAKQEAgLTIxNCw3ICsyMTQsNyBAQCBXaWR0aEFuZE1hcmdpbiBC
bG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5GbG93UmVwbGFjZWRXaWR0aEFuZE1h
cmdpbihjbwogICAgIC8vICMyCiAgICAgYXV0byBub25SZXBsYWNlZFdpZHRoQW5kTWFyZ2luID0g
aW5GbG93Tm9uUmVwbGFjZWRXaWR0aEFuZE1hcmdpbihsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94LCB3
aWR0aCk7CiAKLSAgICBMT0dfV0lUSF9TVFJFQU0oRm9ybWF0dGluZ0NvbnRleHRMYXlvdXQsIHN0
cmVhbSA8PCAiW1dpZHRoXVtNYXJnaW5dIC0+IGluZmxvdyByZXBsYWNlZCAtPiB3aWR0aCgiIDw8
IHdpZHRoIDw8ICJweCkgbWFyZ2luKCIgPDwgbm9uUmVwbGFjZWRXaWR0aEFuZE1hcmdpbi5tYXJn
aW4ubGVmdCA8PCAicHgsICIgPDwgbm9uUmVwbGFjZWRXaWR0aEFuZE1hcmdpbi5tYXJnaW4ucmln
aHQgPDwgInB4KSAtPiBsYXlvdXRCb3goIiA8PCAmbGF5b3V0Qm94IDw8ICIpIik7CisgICAgTE9H
X1dJVEhfU1RSRUFNKEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LCBzdHJlYW0gPDwgIltXaWR0aF1b
TWFyZ2luXSAtPiBpbmZsb3cgcmVwbGFjZWQgLT4gd2lkdGgoIiA8PCB3aWR0aCA8PCAicHgpIG1h
cmdpbigiIDw8IG5vblJlcGxhY2VkV2lkdGhBbmRNYXJnaW4ubWFyZ2luLnN0YXJ0IDw8ICJweCwg
IiA8PCBub25SZXBsYWNlZFdpZHRoQW5kTWFyZ2luLm1hcmdpbi5lbmQgPDwgInB4KSAtPiBsYXlv
dXRCb3goIiA8PCAmbGF5b3V0Qm94IDw8ICIpIik7CiAgICAgcmV0dXJuIHsgd2lkdGgsIG5vblJl
cGxhY2VkV2lkdGhBbmRNYXJnaW4ubWFyZ2luLCBub25SZXBsYWNlZFdpZHRoQW5kTWFyZ2luLm5v
bkNvbXB1dGVkTWFyZ2luIH07CiB9CiAKQEAgLTIzMCw3ICsyMzAsNyBAQCBQb2ludCBCbG9ja0Zv
cm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6c3RhdGljUG9zaXRpb24oY29uc3QgTGF5b3V0U3Rh
dGUmIGxheW91dAogICAgIGF1dG8mIGNvbnRhaW5pbmdCbG9ja0Rpc3BsYXlCb3ggPSBsYXlvdXRT
dGF0ZS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KCpsYXlvdXRCb3guY29udGFpbmluZ0Jsb2NrKCkp
OwogICAgIGlmIChhdXRvKiBwcmV2aW91c0luRmxvd1NpYmxpbmcgPSBsYXlvdXRCb3gucHJldmlv
dXNJbkZsb3dTaWJsaW5nKCkpIHsKICAgICAgICAgYXV0byYgcHJldmlvdXNJbkZsb3dEaXNwbGF5
Qm94ID0gbGF5b3V0U3RhdGUuZGlzcGxheUJveEZvckxheW91dEJveCgqcHJldmlvdXNJbkZsb3dT
aWJsaW5nKTsKLSAgICAgICAgdG9wID0gcHJldmlvdXNJbkZsb3dEaXNwbGF5Qm94LmJvdHRvbSgp
ICsgcHJldmlvdXNJbkZsb3dEaXNwbGF5Qm94Lm1hcmdpbkJvdHRvbSgpOworICAgICAgICB0b3Ag
PSBwcmV2aW91c0luRmxvd0Rpc3BsYXlCb3guYm90dG9tKCkgKyBwcmV2aW91c0luRmxvd0Rpc3Bs
YXlCb3gubWFyZ2luQWZ0ZXIoKTsKICAgICB9IGVsc2UKICAgICAgICAgdG9wID0gY29udGFpbmlu
Z0Jsb2NrRGlzcGxheUJveC5jb250ZW50Qm94VG9wKCk7CiAKQEAgLTI2Myw3ICsyNjMsNyBAQCBI
ZWlnaHRBbmRNYXJnaW4gQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmluRmxvd0hl
aWdodEFuZE1hcmdpbihjb25zdCBMYQogCiAgICAgaGVpZ2h0QW5kTWFyZ2luID0gUXVpcmtzOjpz
dHJldGNoZWRIZWlnaHQobGF5b3V0U3RhdGUsIGxheW91dEJveCwgaGVpZ2h0QW5kTWFyZ2luKTsK
IAotICAgIExPR19XSVRIX1NUUkVBTShGb3JtYXR0aW5nQ29udGV4dExheW91dCwgc3RyZWFtIDw8
ICJbSGVpZ2h0XVtNYXJnaW5dIC0+IGluZmxvdyBub24tcmVwbGFjZWQgLT4gc3RyZWNoZWQgdG8g
dmlld3BvcnQgLT4gaGVpZ2h0KCIgPDwgaGVpZ2h0QW5kTWFyZ2luLmhlaWdodCA8PCAicHgpIG1h
cmdpbigiIDw8IGhlaWdodEFuZE1hcmdpbi5tYXJnaW4udXNlZFZhbHVlcygpLnRvcCA8PCAicHgs
ICIgPDwgaGVpZ2h0QW5kTWFyZ2luLm1hcmdpbi51c2VkVmFsdWVzKCkuYm90dG9tIDw8ICJweCkg
LT4gbGF5b3V0Qm94KCIgPDwgJmxheW91dEJveCA8PCAiKSIpOworICAgIExPR19XSVRIX1NUUkVB
TShGb3JtYXR0aW5nQ29udGV4dExheW91dCwgc3RyZWFtIDw8ICJbSGVpZ2h0XVtNYXJnaW5dIC0+
IGluZmxvdyBub24tcmVwbGFjZWQgLT4gc3RyZWNoZWQgdG8gdmlld3BvcnQgLT4gaGVpZ2h0KCIg
PDwgaGVpZ2h0QW5kTWFyZ2luLmhlaWdodCA8PCAicHgpIG1hcmdpbigiIDw8IGhlaWdodEFuZE1h
cmdpbi5tYXJnaW4udXNlZFZhbHVlcygpLmJlZm9yZSA8PCAicHgsICIgPDwgaGVpZ2h0QW5kTWFy
Z2luLm1hcmdpbi51c2VkVmFsdWVzKCkuYWZ0ZXIgPDwgInB4KSAtPiBsYXlvdXRCb3goIiA8PCAm
bGF5b3V0Qm94IDw8ICIpIik7CiAgICAgcmV0dXJuIGhlaWdodEFuZE1hcmdpbjsKIH0KIApAQCAt
MzA4LDEyICszMDgsMTIgQEAgRm9ybWF0dGluZ0NvbnRleHQ6Okluc3RyaW5zaWNXaWR0aENvbnN0
cmFpbnRzIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjoKICAgICAgICAgQVNTRVJU
KGNoaWxkSW5zdHJpbnNpY1dpZHRoQ29uc3RyYWludHMpOwogICAgICAgICAKICAgICAgICAgYXV0
byYgc3R5bGUgPSBjaGlsZC5zdHlsZSgpOwotICAgICAgICBhdXRvIGhvcml6b250YWxNYXJnaW5C
b3JkZXJBbmRQYWRkaW5nID0gZml4ZWRWYWx1ZShzdHlsZS5tYXJnaW5MZWZ0KCkpLnZhbHVlX29y
KDApCisgICAgICAgIGF1dG8gaG9yaXpvbnRhbE1hcmdpbkJvcmRlckFuZFBhZGRpbmcgPSBmaXhl
ZFZhbHVlKHN0eWxlLm1hcmdpblN0YXJ0KCkpLnZhbHVlX29yKDApCiAgICAgICAgICAgICArIExh
eW91dFVuaXQgeyBzdHlsZS5ib3JkZXJMZWZ0V2lkdGgoKSB9CiAgICAgICAgICAgICArIGZpeGVk
VmFsdWUoc3R5bGUucGFkZGluZ0xlZnQoKSkudmFsdWVfb3IoMCkKICAgICAgICAgICAgICsgZml4
ZWRWYWx1ZShzdHlsZS5wYWRkaW5nUmlnaHQoKSkudmFsdWVfb3IoMCkKICAgICAgICAgICAgICsg
TGF5b3V0VW5pdCB7IHN0eWxlLmJvcmRlclJpZ2h0V2lkdGgoKSB9Ci0gICAgICAgICAgICArIGZp
eGVkVmFsdWUoc3R5bGUubWFyZ2luUmlnaHQoKSkudmFsdWVfb3IoMCk7CisgICAgICAgICAgICAr
IGZpeGVkVmFsdWUoc3R5bGUubWFyZ2luRW5kKCkpLnZhbHVlX29yKDApOwogCiAgICAgICAgIG1p
bmltdW1JbnRyaW5zaWNXaWR0aCA9IHN0ZDo6bWF4KG1pbmltdW1JbnRyaW5zaWNXaWR0aCwgY2hp
bGRJbnN0cmluc2ljV2lkdGhDb25zdHJhaW50cy0+bWluaW11bSArIGhvcml6b250YWxNYXJnaW5C
b3JkZXJBbmRQYWRkaW5nKTsgCiAgICAgICAgIG1heGltdW1JbnRyaW5zaWNXaWR0aCA9IHN0ZDo6
bWF4KG1heGltdW1JbnRyaW5zaWNXaWR0aCwgY2hpbGRJbnN0cmluc2ljV2lkdGhDb25zdHJhaW50
cy0+bWF4aW11bSArIGhvcml6b250YWxNYXJnaW5Cb3JkZXJBbmRQYWRkaW5nKTsgCkBAIC0zMjIs
NyArMzIyLDcgQEAgRm9ybWF0dGluZ0NvbnRleHQ6Okluc3RyaW5zaWNXaWR0aENvbnN0cmFpbnRz
IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjoKICAgICByZXR1cm4geyBtaW5pbXVt
SW50cmluc2ljV2lkdGgsIG1heGltdW1JbnRyaW5zaWNXaWR0aCB9OwogfQogCi1MYXlvdXRVbml0
IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojplc3RpbWF0ZWRNYXJnaW5Ub3AoY29u
c3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91dEJveCkKK0xheW91
dFVuaXQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmVzdGltYXRlZE1hcmdpbkJl
Zm9yZShjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94
KQogewogICAgIEFTU0VSVChsYXlvdXRCb3guaXNCbG9ja0xldmVsQm94KCkpOwogICAgIC8vIENh
bid0IGVzdGltYXRlIHZlcnRpY2FsIG1hcmdpbnMgZm9yIG91dCBvZiBmbG93IGJveGVzIChhbmQg
d2Ugc2hvdWxkbid0IG5lZWQgdG8gZG8gaXQgZm9yIGZsb2F0IGJveGVzKS4KQEAgLTMzMSwxMCAr
MzMxLDEwIEBAIExheW91dFVuaXQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmVz
dGltYXRlZE1hcmdpblRvcChjb25zdCBMYXlvdXRTdGF0CiAgICAgQVNTRVJUKCFsYXlvdXRCb3gu
ZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRpbmdDb250ZXh0KCkpOwogCiAgICAgLy8gTGV0J3MganVz
dCB1c2UgdGhlIG5vcm1hbCBwYXRoIGZvciBub3cuCi0gICAgcmV0dXJuIE1hcmdpbkNvbGxhcHNl
OjptYXJnaW5Ub3AobGF5b3V0U3RhdGUsIGxheW91dEJveCk7CisgICAgcmV0dXJuIE1hcmdpbkNv
bGxhcHNlOjptYXJnaW5CZWZvcmUobGF5b3V0U3RhdGUsIGxheW91dEJveCk7CiB9CiAKLUxheW91
dFVuaXQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmVzdGltYXRlZE1hcmdpbkJv
dHRvbShjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94
KQorTGF5b3V0VW5pdCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6ZXN0aW1hdGVk
TWFyZ2luQWZ0ZXIoY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxh
eW91dEJveCkKIHsKICAgICBBU1NFUlQobGF5b3V0Qm94LmlzQmxvY2tMZXZlbEJveCgpKTsKICAg
ICAvLyBDYW4ndCBlc3RpbWF0ZSB2ZXJ0aWNhbCBtYXJnaW5zIGZvciBvdXQgb2YgZmxvdyBib3hl
cyAoYW5kIHdlIHNob3VsZG4ndCBuZWVkIHRvIGRvIGl0IGZvciBmbG9hdCBib3hlcykuCkBAIC0z
NDMsNyArMzQzLDcgQEAgTGF5b3V0VW5pdCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRy
eTo6ZXN0aW1hdGVkTWFyZ2luQm90dG9tKGNvbnN0IExheW91dFMKICAgICBBU1NFUlQoIWxheW91
dEJveC5lc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQoKSk7CiAKICAgICAvLyBMZXQn
cyBqdXN0IHVzZSB0aGUgbm9ybWFsIHBhdGggZm9yIG5vdy4KLSAgICByZXR1cm4gTWFyZ2luQ29s
bGFwc2U6Om1hcmdpbkJvdHRvbShsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KTsKKyAgICByZXR1cm4g
TWFyZ2luQ29sbGFwc2U6Om1hcmdpbkFmdGVyKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpOwogfQog
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Js
b2NrRm9ybWF0dGluZ0NvbnRleHRRdWlya3MuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Js
b2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0UXVpcmtzLmNwcAppbmRleCBhMTlh
NjA4MzlhOGViNWE5MDkxYTc4NzAyZDY3YTI5ZmYxODMyZmVhLi5mYjcxYjdjMDgwZmYzZTk4ZGRi
M2NjNDk5YjAzZTBlYzA5ZGY2ZGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
YmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRRdWlya3MuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4
dFF1aXJrcy5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgc3RhdGljIGJvb2wgaXNRdWlya0NvbnRhaW5l
cihjb25zdCBCb3gmIGxheW91dEJveCkKICAgICByZXR1cm4gbGF5b3V0Qm94LmlzQm9keUJveCgp
IHx8IGxheW91dEJveC5pc0RvY3VtZW50Qm94KCkgfHwgbGF5b3V0Qm94LmlzVGFibGVDZWxsKCk7
CiB9CiAKLXN0YXRpYyBib29sIGhhc01hcmdpblRvcFF1aXJrVmFsdWUoY29uc3QgQm94JiBsYXlv
dXRCb3gpCitzdGF0aWMgYm9vbCBoYXNNYXJnaW5CZWZvcmVRdWlya1ZhbHVlKGNvbnN0IEJveCYg
bGF5b3V0Qm94KQogewogICAgIHJldHVybiBsYXlvdXRCb3guc3R5bGUoKS5oYXNNYXJnaW5CZWZv
cmVRdWlyaygpOwogfQpAQCAtNzgsMzggKzc4LDM4IEBAIEhlaWdodEFuZE1hcmdpbiBCbG9ja0Zv
cm1hdHRpbmdDb250ZXh0OjpRdWlya3M6OnN0cmV0Y2hlZEhlaWdodChjb25zdCBMYXlvdXRTdGF0
CiAgICAgYXV0byBzdHJlY2hlZEhlaWdodCA9IGxheW91dFN0YXRlLmRpc3BsYXlCb3hGb3JMYXlv
dXRCb3goaW5pdGlhbENvbnRhaW5pbmdCbG9jayhsYXlvdXRCb3gpKS5jb250ZW50Qm94SGVpZ2h0
KCk7CiAgICAgc3RyZWNoZWRIZWlnaHQgLT0gZG9jdW1lbnRCb3hWZXJ0aWNhbEJvcmRlcnMgKyBk
b2N1bWVudEJveFZlcnRpY2FsUGFkZGluZ3M7CiAKLSAgICBMYXlvdXRVbml0IHRvdGFsVmVydGlj
YWxNYXJnaW5zOworICAgIExheW91dFVuaXQgdG90YWxWZXJ0aWNhbE1hcmdpbjsKICAgICBpZiAo
bGF5b3V0Qm94LmlzRG9jdW1lbnRCb3goKSkgewotICAgICAgICBhdXRvIHZlcnRpY2FsTWFyZ2lu
cyA9IGhlaWdodEFuZE1hcmdpbi5tYXJnaW4udXNlZFZhbHVlcygpOworICAgICAgICBhdXRvIHZl
cnRpY2FsTWFyZ2luID0gaGVpZ2h0QW5kTWFyZ2luLm1hcmdpbi51c2VkVmFsdWVzKCk7CiAgICAg
ICAgIC8vIERvY3VtZW50IGJveCdzIG1hcmdpbnMgZG8gbm90IGNvbGxhcHNlLgogICAgICAgICBB
U1NFUlQoIWhlaWdodEFuZE1hcmdpbi5tYXJnaW4uY29sbGFwc2VkVmFsdWVzKCkpOwotICAgICAg
ICB0b3RhbFZlcnRpY2FsTWFyZ2lucyA9IHZlcnRpY2FsTWFyZ2lucy50b3AgKyB2ZXJ0aWNhbE1h
cmdpbnMuYm90dG9tOworICAgICAgICB0b3RhbFZlcnRpY2FsTWFyZ2luID0gdmVydGljYWxNYXJn
aW4uYmVmb3JlICsgdmVydGljYWxNYXJnaW4uYWZ0ZXI7CiAgICAgfSBlbHNlIGlmIChsYXlvdXRC
b3guaXNCb2R5Qm94KCkpIHsKICAgICAgICAgLy8gSGVyZSBpcyB0aGUgcXVpcmt5IHBhcnQgZm9y
IGJvZHkgYm94OgogICAgICAgICAvLyBTdHJldGNoIHRoZSBib2R5IHVzaW5nIHRoZSBpbml0aWFs
IGNvbnRhaW5pbmcgYmxvY2sncyBoZWlnaHQgYW5kIHNocmluayBpdCB3aXRoIGRvY3VtZW50IGJv
eCdzIG1hcmdpbi9ib3JkZXIvcGFkZGluZy4KICAgICAgICAgLy8gVGhpcyBsb29rcyBleHRyZW1l
bHkgb2RkIHdoZW4gaHRtbCBoYXMgbm9uLWF1dG8gaGVpZ2h0LgotICAgICAgICBhdXRvIHZlcnRp
Y2FsTWFyZ2lucyA9IEdlb21ldHJ5Ojplc3RpbWF0ZWRNYXJnaW5Ub3AobGF5b3V0U3RhdGUsIGRv
Y3VtZW50Qm94KSArIEdlb21ldHJ5Ojplc3RpbWF0ZWRNYXJnaW5Cb3R0b20obGF5b3V0U3RhdGUs
IGRvY3VtZW50Qm94KTsKLSAgICAgICAgc3RyZWNoZWRIZWlnaHQgLT0gdmVydGljYWxNYXJnaW5z
OworICAgICAgICBhdXRvIHZlcnRpY2FsTWFyZ2luID0gR2VvbWV0cnk6OmVzdGltYXRlZE1hcmdp
bkJlZm9yZShsYXlvdXRTdGF0ZSwgZG9jdW1lbnRCb3gpICsgR2VvbWV0cnk6OmVzdGltYXRlZE1h
cmdpbkFmdGVyKGxheW91dFN0YXRlLCBkb2N1bWVudEJveCk7CisgICAgICAgIHN0cmVjaGVkSGVp
Z2h0IC09IHZlcnRpY2FsTWFyZ2luOwogCiAgICAgICAgIC8vIFRoaXMgcXVpcmsgaGFwcGVucyB3
aGVuIHRoZSBib2R5IGhlaWdodCBpcyAwIHdoaWNoIG1lYW5zIGl0cyB2ZXJ0aWNhbCBtYXJnaW5z
IGNvbGxhcHNlIHRocm91Z2ggKHRvcCBhbmQgYm90dG9tIG1hcmdpbnMgYXJlIGFkam9pbmluZyku
CiAgICAgICAgIC8vIEhvd2V2ZXIgbm93IHRoYXQgd2Ugc3RyZXRjaCB0aGUgYm9keSB0aGV5IGRv
bid0IGNvbGxhcHNlIHRocm91Z2ggYW55bW9yZSwgc28gd2UgbmVlZCB0byB1c2UgdGhlIG5vbi1j
b2xsYXBzZWQgdmFsdWVzIGluc3RlYWQuCi0gICAgICAgIGF1dG8gYm9keUJveFZlcnRpY2FsTWFy
Z2lucyA9IGhlaWdodEFuZE1hcmdpbi5oZWlnaHQgPyBoZWlnaHRBbmRNYXJnaW4ubWFyZ2luLnVz
ZWRWYWx1ZXMoKSA6IGhlaWdodEFuZE1hcmdpbi5tYXJnaW4ubm9uQ29sbGFwc2VkVmFsdWVzKCk7
Ci0gICAgICAgIHRvdGFsVmVydGljYWxNYXJnaW5zID0gYm9keUJveFZlcnRpY2FsTWFyZ2lucy50
b3AgKyBib2R5Qm94VmVydGljYWxNYXJnaW5zLmJvdHRvbTsKKyAgICAgICAgYXV0byBib2R5Qm94
VmVydGljYWxNYXJnaW4gPSBoZWlnaHRBbmRNYXJnaW4uaGVpZ2h0ID8gaGVpZ2h0QW5kTWFyZ2lu
Lm1hcmdpbi51c2VkVmFsdWVzKCkgOiBoZWlnaHRBbmRNYXJnaW4ubWFyZ2luLm5vbkNvbGxhcHNl
ZFZhbHVlcygpOworICAgICAgICB0b3RhbFZlcnRpY2FsTWFyZ2luID0gYm9keUJveFZlcnRpY2Fs
TWFyZ2luLmJlZm9yZSArIGJvZHlCb3hWZXJ0aWNhbE1hcmdpbi5hZnRlcjsKICAgICB9CiAKICAg
ICAvLyBTdHJldGNoIGJ1dCBuZXZlciBvdmVyc3RyZXRjaCB3aXRoIHRoZSBtYXJnaW5zLgotICAg
IGlmIChoZWlnaHRBbmRNYXJnaW4uaGVpZ2h0ICsgdG90YWxWZXJ0aWNhbE1hcmdpbnMgPCBzdHJl
Y2hlZEhlaWdodCkKLSAgICAgICAgaGVpZ2h0QW5kTWFyZ2luLmhlaWdodCA9IHN0cmVjaGVkSGVp
Z2h0IC0gdG90YWxWZXJ0aWNhbE1hcmdpbnM7CisgICAgaWYgKGhlaWdodEFuZE1hcmdpbi5oZWln
aHQgKyB0b3RhbFZlcnRpY2FsTWFyZ2luIDwgc3RyZWNoZWRIZWlnaHQpCisgICAgICAgIGhlaWdo
dEFuZE1hcmdpbi5oZWlnaHQgPSBzdHJlY2hlZEhlaWdodCAtIHRvdGFsVmVydGljYWxNYXJnaW47
CiAKICAgICByZXR1cm4gaGVpZ2h0QW5kTWFyZ2luOwogfQogCi1ib29sIEJsb2NrRm9ybWF0dGlu
Z0NvbnRleHQ6OlF1aXJrczo6c2hvdWxkSWdub3JlTWFyZ2luVG9wKGNvbnN0IExheW91dFN0YXRl
JiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gpCitib29sIEJsb2NrRm9ybWF0dGlu
Z0NvbnRleHQ6OlF1aXJrczo6c2hvdWxkSWdub3JlTWFyZ2luQmVmb3JlKGNvbnN0IExheW91dFN0
YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gpCiB7CiAgICAgaWYgKCFsYXlv
dXRCb3gucGFyZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBsYXlv
dXRTdGF0ZS5pblF1aXJrc01vZGUoKSAmJiBpc1F1aXJrQ29udGFpbmVyKCpsYXlvdXRCb3gucGFy
ZW50KCkpICYmIGhhc01hcmdpblRvcFF1aXJrVmFsdWUobGF5b3V0Qm94KTsKKyAgICByZXR1cm4g
bGF5b3V0U3RhdGUuaW5RdWlya3NNb2RlKCkgJiYgaXNRdWlya0NvbnRhaW5lcigqbGF5b3V0Qm94
LnBhcmVudCgpKSAmJiBoYXNNYXJnaW5CZWZvcmVRdWlya1ZhbHVlKGxheW91dEJveCk7CiB9CiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxv
Y2tNYXJnaW5Db2xsYXBzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0
aW5nL0Jsb2NrTWFyZ2luQ29sbGFwc2UuY3BwCmluZGV4IGJmMWEwOGNjYjY1OWU1NzM1OTM3Yzc2
ZTgyMmU4N2RiYTg4OWU0ODYuLjdlMDgwODk4NzE0NDI2ZjFjMzU4OTc4MjcxZjQ1NDljYzk2MDlm
YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxv
Y2tNYXJnaW5Db2xsYXBzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9y
bWF0dGluZy9CbG9ja01hcmdpbkNvbGxhcHNlLmNwcApAQCAtOTQsNyArOTQsNyBAQCBzdGF0aWMg
TGF5b3V0VW5pdCBtYXJnaW5WYWx1ZShMYXlvdXRVbml0IGN1cnJlbnRNYXJnaW5WYWx1ZSwgTGF5
b3V0VW5pdCBjYW5kaWRhdAogICAgIHJldHVybiBjdXJyZW50TWFyZ2luVmFsdWUgKyBjYW5kaWRh
dGVNYXJnaW5WYWx1ZTsKIH0KIAotc3RhdGljIGJvb2wgaXNNYXJnaW5Ub3BDb2xsYXBzZWRXaXRo
U2libGluZyhjb25zdCBCb3gmIGxheW91dEJveCkKK3N0YXRpYyBib29sIGlzTWFyZ2luQmVmb3Jl
Q29sbGFwc2VkV2l0aFNpYmxpbmcoY29uc3QgQm94JiBsYXlvdXRCb3gpCiB7CiAgICAgQVNTRVJU
KGxheW91dEJveC5pc0Jsb2NrTGV2ZWxCb3goKSk7CiAKQEAgLTEwOSw3ICsxMDksNyBAQCBzdGF0
aWMgYm9vbCBpc01hcmdpblRvcENvbGxhcHNlZFdpdGhTaWJsaW5nKGNvbnN0IEJveCYgbGF5b3V0
Qm94KQogICAgIHJldHVybiBsYXlvdXRCb3guc3R5bGUoKS50b3AoKS5pc0F1dG8oKTsKIH0KIAot
c3RhdGljIGJvb2wgaXNNYXJnaW5Cb3R0b21Db2xsYXBzZWRXaXRoU2libGluZyhjb25zdCBCb3gm
IGxheW91dEJveCkKK3N0YXRpYyBib29sIGlzTWFyZ2luQWZ0ZXJDb2xsYXBzZWRXaXRoU2libGlu
Zyhjb25zdCBCb3gmIGxheW91dEJveCkKIHsKICAgICBBU1NFUlQobGF5b3V0Qm94LmlzQmxvY2tM
ZXZlbEJveCgpKTsKIApAQCAtMTI0LDcgKzEyNCw3IEBAIHN0YXRpYyBib29sIGlzTWFyZ2luQm90
dG9tQ29sbGFwc2VkV2l0aFNpYmxpbmcoY29uc3QgQm94JiBsYXlvdXRCb3gpCiAgICAgcmV0dXJu
IGxheW91dEJveC5zdHlsZSgpLmJvdHRvbSgpLmlzQXV0bygpOwogfQogCi1ib29sIEJsb2NrRm9y
bWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpNYXJnaW5Db2xsYXBzZTo6aXNNYXJnaW5Ub3BDb2xs
YXBzZWRXaXRoUGFyZW50KGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94
JiBsYXlvdXRCb3gpCitib29sIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpNYXJn
aW5Db2xsYXBzZTo6aXNNYXJnaW5CZWZvcmVDb2xsYXBzZWRXaXRoUGFyZW50KGNvbnN0IExheW91
dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gpCiB7CiAgICAgLy8gVGhl
IGZpcnN0IGluZmxvdyBjaGlsZCBjb3VsZCBwcm9wYWdhdGUgaXRzIHRvcCBtYXJnaW4gdG8gcGFy
ZW50LgogICAgIC8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9DU1MyMS9ib3guaHRtbCNjb2xsYXBz
aW5nLW1hcmdpbnMKQEAgLTE1MSwxMyArMTUxLDEzIEBAIGJvb2wgQmxvY2tGb3JtYXR0aW5nQ29u
dGV4dDo6R2VvbWV0cnk6Ok1hcmdpbkNvbGxhcHNlOjppc01hcmdpblRvcENvbGxhcHNlZFdpdGhQ
CiAgICAgaWYgKGhhc1BhZGRpbmdCZWZvcmUocGFyZW50KSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgaWYgKEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OlF1aXJrczo6c2hvdWxkSWdub3Jl
TWFyZ2luVG9wKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpKQorICAgIGlmIChCbG9ja0Zvcm1hdHRp
bmdDb250ZXh0OjpRdWlya3M6OnNob3VsZElnbm9yZU1hcmdpbkJlZm9yZShsYXlvdXRTdGF0ZSwg
bGF5b3V0Qm94KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLXN0YXRpYyBib29sIGlzTWFyZ2luQm90dG9tQ29sbGFwc2VkVGhyb3VnaChjb25zdCBCb3gm
IGxheW91dEJveCkKK3N0YXRpYyBib29sIGlzTWFyZ2luQWZ0ZXJDb2xsYXBzZWRUaHJvdWdoKGNv
bnN0IEJveCYgbGF5b3V0Qm94KQogewogICAgIEFTU0VSVChsYXlvdXRCb3guaXNCbG9ja0xldmVs
Qm94KCkpOwogCkBAIC0xODEsNyArMTgxLDcgQEAgc3RhdGljIGJvb2wgaXNNYXJnaW5Cb3R0b21D
b2xsYXBzZWRUaHJvdWdoKGNvbnN0IEJveCYgbGF5b3V0Qm94KQogICAgIHJldHVybiB0cnVlOwog
fQogCi1MYXlvdXRVbml0IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpNYXJnaW5D
b2xsYXBzZTo6Y29sbGFwc2VkTWFyZ2luVG9wRnJvbUZpcnN0Q2hpbGQoY29uc3QgTGF5b3V0U3Rh
dGUmIGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91dEJveCkKK0xheW91dFVuaXQgQmxvY2tG
b3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Ok1hcmdpbkNvbGxhcHNlOjpjb2xsYXBzZWRNYXJn
aW5CZWZvcmVGcm9tRmlyc3RDaGlsZChjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNv
bnN0IEJveCYgbGF5b3V0Qm94KQogewogICAgIEFTU0VSVChsYXlvdXRCb3guaXNCbG9ja0xldmVs
Qm94KCkpOwogCkBAIC0xOTUsMjEgKzE5NSwyMSBAQCBMYXlvdXRVbml0IEJsb2NrRm9ybWF0dGlu
Z0NvbnRleHQ6Okdlb21ldHJ5OjpNYXJnaW5Db2xsYXBzZTo6Y29sbGFwc2VkTWFyZ2luVG9wRgog
CiAgICAgLy8gRklYTUU6IFRha2UgY29sbGFwc2VkIHRocm91Z2ggbWFyZ2luIGludG8gYWNjb3Vu
dC4KICAgICBhdXRvJiBmaXJzdEluRmxvd0NoaWxkID0gKmRvd25jYXN0PENvbnRhaW5lcj4obGF5
b3V0Qm94KS5maXJzdEluRmxvd0NoaWxkKCk7Ci0gICAgaWYgKCFpc01hcmdpblRvcENvbGxhcHNl
ZFdpdGhQYXJlbnQobGF5b3V0U3RhdGUsIGZpcnN0SW5GbG93Q2hpbGQpKQorICAgIGlmICghaXNN
YXJnaW5CZWZvcmVDb2xsYXBzZWRXaXRoUGFyZW50KGxheW91dFN0YXRlLCBmaXJzdEluRmxvd0No
aWxkKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgLy8gQ29sbGVjdCBjb2xsYXBzZWQgbWFyZ2lu
IHRvcCByZWN1cnNpdmVseS4KLSAgICByZXR1cm4gbWFyZ2luVmFsdWUoY29tcHV0ZWROb25Db2xs
YXBzZWRNYXJnaW5Ub3AobGF5b3V0U3RhdGUsIGZpcnN0SW5GbG93Q2hpbGQpLCBjb2xsYXBzZWRN
YXJnaW5Ub3BGcm9tRmlyc3RDaGlsZChsYXlvdXRTdGF0ZSwgZmlyc3RJbkZsb3dDaGlsZCkpOwor
ICAgIHJldHVybiBtYXJnaW5WYWx1ZShjb21wdXRlZE5vbkNvbGxhcHNlZE1hcmdpbkJlZm9yZShs
YXlvdXRTdGF0ZSwgZmlyc3RJbkZsb3dDaGlsZCksIGNvbGxhcHNlZE1hcmdpbkJlZm9yZUZyb21G
aXJzdENoaWxkKGxheW91dFN0YXRlLCBmaXJzdEluRmxvd0NoaWxkKSk7CiB9CiAKLUxheW91dFVu
aXQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Ok1hcmdpbkNvbGxhcHNlOjpub25D
b2xsYXBzZWRNYXJnaW5Ub3AoY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBC
b3gmIGxheW91dEJveCkKK0xheW91dFVuaXQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0
cnk6Ok1hcmdpbkNvbGxhcHNlOjpub25Db2xsYXBzZWRNYXJnaW5CZWZvcmUoY29uc3QgTGF5b3V0
U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91dEJveCkKIHsKICAgICBBU1NFUlQo
bGF5b3V0Qm94LmlzQmxvY2tMZXZlbEJveCgpKTsKIAogICAgIC8vIE5vbiBjb2xsYXBzZWQgbWFy
Z2luIHRvcCBpbmNsdWRlcyBjb2xsYXBzZWQgbWFyZ2luIGZyb20gaW5mbG93IGZpcnN0IGNoaWxk
LgotICAgIHJldHVybiBtYXJnaW5WYWx1ZShjb21wdXRlZE5vbkNvbGxhcHNlZE1hcmdpblRvcChs
YXlvdXRTdGF0ZSwgbGF5b3V0Qm94KSwgY29sbGFwc2VkTWFyZ2luVG9wRnJvbUZpcnN0Q2hpbGQo
bGF5b3V0U3RhdGUsIGxheW91dEJveCkpOworICAgIHJldHVybiBtYXJnaW5WYWx1ZShjb21wdXRl
ZE5vbkNvbGxhcHNlZE1hcmdpbkJlZm9yZShsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KSwgY29sbGFw
c2VkTWFyZ2luQmVmb3JlRnJvbUZpcnN0Q2hpbGQobGF5b3V0U3RhdGUsIGxheW91dEJveCkpOwog
fQogCi0vKnN0YXRpYyBib29sIGhhc0Fkam9pbmluZ01hcmdpblRvcEFuZEJvdHRvbShjb25zdCBC
b3gmKQorLypzdGF0aWMgYm9vbCBoYXNBZGpvaW5pbmdNYXJnaW5CZWZvcmVBbmRBZnRlcihjb25z
dCBCb3gmKQogewogICAgIC8vIFR3byBtYXJnaW5zIGFyZSBhZGpvaW5pbmcgaWYgYW5kIG9ubHkg
aWY6CiAgICAgLy8gMS4gYm90aCBiZWxvbmcgdG8gaW4tZmxvdyBibG9jay1sZXZlbCBib3hlcyB0
aGF0IHBhcnRpY2lwYXRlIGluIHRoZSBzYW1lIGJsb2NrIGZvcm1hdHRpbmcgY29udGV4dApAQCAt
MjIzLDgxICsyMjMsODEgQEAgTGF5b3V0VW5pdCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9t
ZXRyeTo6TWFyZ2luQ29sbGFwc2U6Om5vbkNvbGxhcHNlZE1hcmdpblQKICAgICAvLyBBIGNvbGxh
cHNlZCBtYXJnaW4gaXMgY29uc2lkZXJlZCBhZGpvaW5pbmcgdG8gYW5vdGhlciBtYXJnaW4gaWYg
YW55IG9mIGl0cyBjb21wb25lbnQgbWFyZ2lucyBpcyBhZGpvaW5pbmcgdG8gdGhhdCBtYXJnaW4u
CiAgICAgcmV0dXJuIGZhbHNlOwogfSovCi1MYXlvdXRVbml0IEJsb2NrRm9ybWF0dGluZ0NvbnRl
eHQ6Okdlb21ldHJ5OjpNYXJnaW5Db2xsYXBzZTo6Y29tcHV0ZWROb25Db2xsYXBzZWRNYXJnaW5U
b3AoY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91dEJveCkK
K0xheW91dFVuaXQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Ok1hcmdpbkNvbGxh
cHNlOjpjb21wdXRlZE5vbkNvbGxhcHNlZE1hcmdpbkJlZm9yZShjb25zdCBMYXlvdXRTdGF0ZSYg
bGF5b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQogewogICAgIEFTU0VSVChsYXlvdXRC
b3guaXNCbG9ja0xldmVsQm94KCkpOwogCi0gICAgcmV0dXJuIGNvbXB1dGVkTm9uQ29sbGFwc2Vk
VmVydGljYWxNYXJnaW5WYWx1ZShsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KS50b3A7CisgICAgcmV0
dXJuIGNvbXB1dGVkTm9uQ29sbGFwc2VkVmVydGljYWxNYXJnaW5WYWx1ZShsYXlvdXRTdGF0ZSwg
bGF5b3V0Qm94KS5iZWZvcmU7CiB9CiAKLUxheW91dFVuaXQgQmxvY2tGb3JtYXR0aW5nQ29udGV4
dDo6R2VvbWV0cnk6Ok1hcmdpbkNvbGxhcHNlOjpjb21wdXRlZE5vbkNvbGxhcHNlZE1hcmdpbkJv
dHRvbShjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94
KQorTGF5b3V0VW5pdCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6TWFyZ2luQ29s
bGFwc2U6OmNvbXB1dGVkTm9uQ29sbGFwc2VkTWFyZ2luQWZ0ZXIoY29uc3QgTGF5b3V0U3RhdGUm
IGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91dEJveCkKIHsKICAgICBBU1NFUlQobGF5b3V0
Qm94LmlzQmxvY2tMZXZlbEJveCgpKTsKIAotICAgIHJldHVybiBjb21wdXRlZE5vbkNvbGxhcHNl
ZFZlcnRpY2FsTWFyZ2luVmFsdWUobGF5b3V0U3RhdGUsIGxheW91dEJveCkuYm90dG9tOworICAg
IHJldHVybiBjb21wdXRlZE5vbkNvbGxhcHNlZFZlcnRpY2FsTWFyZ2luVmFsdWUobGF5b3V0U3Rh
dGUsIGxheW91dEJveCkuYWZ0ZXI7CiB9CiAKLUxheW91dFVuaXQgQmxvY2tGb3JtYXR0aW5nQ29u
dGV4dDo6R2VvbWV0cnk6Ok1hcmdpbkNvbGxhcHNlOjptYXJnaW5Ub3AoY29uc3QgTGF5b3V0U3Rh
dGUmIGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91dEJveCkKK0xheW91dFVuaXQgQmxvY2tG
b3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Ok1hcmdpbkNvbGxhcHNlOjptYXJnaW5CZWZvcmUo
Y29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91dEJveCkKIHsK
ICAgICBpZiAobGF5b3V0Qm94LmlzQW5vbnltb3VzKCkpCiAgICAgICAgIHJldHVybiAwOwogCiAg
ICAgQVNTRVJUKGxheW91dEJveC5pc0Jsb2NrTGV2ZWxCb3goKSk7CiAKLSAgICAvLyBUT0RPOiB0
YWtlIF9oYXNBZGpvaW5pbmdNYXJnaW5Ub3BBbmRCb3R0b20oKSBpbnRvIGFjY291bnQuCi0gICAg
aWYgKGlzTWFyZ2luVG9wQ29sbGFwc2VkV2l0aFBhcmVudChsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94
KSkKKyAgICAvLyBUT0RPOiB0YWtlIF9oYXNBZGpvaW5pbmdNYXJnaW5CZWZvcmVBbmRBZnRlcigp
IGludG8gYWNjb3VudC4KKyAgICBpZiAoaXNNYXJnaW5CZWZvcmVDb2xsYXBzZWRXaXRoUGFyZW50
KGxheW91dFN0YXRlLCBsYXlvdXRCb3gpKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIC8vIEZJ
WE1FOiBGaW5kIG91dCB0aGUgbG9naWMgYmVoaW5kIHRoaXMuCi0gICAgaWYgKEJsb2NrRm9ybWF0
dGluZ0NvbnRleHQ6OlF1aXJrczo6c2hvdWxkSWdub3JlTWFyZ2luVG9wKGxheW91dFN0YXRlLCBs
YXlvdXRCb3gpKQorICAgIGlmIChCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpRdWlya3M6OnNob3Vs
ZElnbm9yZU1hcmdpbkJlZm9yZShsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KSkKICAgICAgICAgcmV0
dXJuIDA7CiAKLSAgICBpZiAoIWlzTWFyZ2luVG9wQ29sbGFwc2VkV2l0aFNpYmxpbmcobGF5b3V0
Qm94KSkgewotICAgICAgICBpZiAoIWlzTWFyZ2luQm90dG9tQ29sbGFwc2VkVGhyb3VnaChsYXlv
dXRCb3gpKQotICAgICAgICAgICAgcmV0dXJuIG5vbkNvbGxhcHNlZE1hcmdpblRvcChsYXlvdXRT
dGF0ZSwgbGF5b3V0Qm94KTsKKyAgICBpZiAoIWlzTWFyZ2luQmVmb3JlQ29sbGFwc2VkV2l0aFNp
YmxpbmcobGF5b3V0Qm94KSkgeworICAgICAgICBpZiAoIWlzTWFyZ2luQWZ0ZXJDb2xsYXBzZWRU
aHJvdWdoKGxheW91dEJveCkpCisgICAgICAgICAgICByZXR1cm4gbm9uQ29sbGFwc2VkTWFyZ2lu
QmVmb3JlKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpOwogICAgICAgICAvLyBDb21wdXRlIHRoZSBj
b2xsYXBzZWQgdGhyb3VnaCB2YWx1ZS4KLSAgICAgICAgYXV0byBtYXJnaW5Ub3AgPSBub25Db2xs
YXBzZWRNYXJnaW5Ub3AobGF5b3V0U3RhdGUsIGxheW91dEJveCk7Ci0gICAgICAgIGF1dG8gbWFy
Z2luQm90dG9tID0gbm9uQ29sbGFwc2VkTWFyZ2luQm90dG9tKGxheW91dFN0YXRlLCBsYXlvdXRC
b3gpOyAKLSAgICAgICAgcmV0dXJuIG1hcmdpblZhbHVlKG1hcmdpblRvcCwgbWFyZ2luQm90dG9t
KTsKKyAgICAgICAgYXV0byBtYXJnaW5CZWZvcmUgPSBub25Db2xsYXBzZWRNYXJnaW5CZWZvcmUo
bGF5b3V0U3RhdGUsIGxheW91dEJveCk7CisgICAgICAgIGF1dG8gbWFyZ2luQWZ0ZXIgPSBub25D
b2xsYXBzZWRNYXJnaW5BZnRlcihsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KTsgCisgICAgICAgIHJl
dHVybiBtYXJnaW5WYWx1ZShtYXJnaW5CZWZvcmUsIG1hcmdpbkFmdGVyKTsKICAgICB9CiAKICAg
ICAvLyBUaGUgYm90dG9tIG1hcmdpbiBvZiBhbiBpbi1mbG93IGJsb2NrLWxldmVsIGVsZW1lbnQg
YWx3YXlzIGNvbGxhcHNlcyB3aXRoIHRoZSB0b3AgbWFyZ2luIG9mIGl0cyBuZXh0IGluLWZsb3cg
YmxvY2stbGV2ZWwgc2libGluZywKICAgICAvLyB1bmxlc3MgdGhhdCBzaWJsaW5nIGhhcyBjbGVh
cmFuY2UuCiAgICAgYXV0byogcHJldmlvdXNJbkZsb3dTaWJsaW5nID0gbGF5b3V0Qm94LnByZXZp
b3VzSW5GbG93U2libGluZygpOwogICAgIGlmICghcHJldmlvdXNJbkZsb3dTaWJsaW5nKQotICAg
ICAgICByZXR1cm4gbm9uQ29sbGFwc2VkTWFyZ2luVG9wKGxheW91dFN0YXRlLCBsYXlvdXRCb3gp
OworICAgICAgICByZXR1cm4gbm9uQ29sbGFwc2VkTWFyZ2luQmVmb3JlKGxheW91dFN0YXRlLCBs
YXlvdXRCb3gpOwogCi0gICAgYXV0byBwcmV2aW91c1NpYmxpbmdNYXJnaW5Cb3R0b20gPSBub25D
b2xsYXBzZWRNYXJnaW5Cb3R0b20obGF5b3V0U3RhdGUsICpwcmV2aW91c0luRmxvd1NpYmxpbmcp
OwotICAgIGF1dG8gbWFyZ2luVG9wID0gbm9uQ29sbGFwc2VkTWFyZ2luVG9wKGxheW91dFN0YXRl
LCBsYXlvdXRCb3gpOwotICAgIHJldHVybiBtYXJnaW5WYWx1ZShtYXJnaW5Ub3AsIHByZXZpb3Vz
U2libGluZ01hcmdpbkJvdHRvbSk7CisgICAgYXV0byBwcmV2aW91c1NpYmxpbmdNYXJnaW5BZnRl
ciA9IG5vbkNvbGxhcHNlZE1hcmdpbkFmdGVyKGxheW91dFN0YXRlLCAqcHJldmlvdXNJbkZsb3dT
aWJsaW5nKTsKKyAgICBhdXRvIG1hcmdpbkJlZm9yZSA9IG5vbkNvbGxhcHNlZE1hcmdpbkJlZm9y
ZShsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KTsKKyAgICByZXR1cm4gbWFyZ2luVmFsdWUobWFyZ2lu
QmVmb3JlLCBwcmV2aW91c1NpYmxpbmdNYXJnaW5BZnRlcik7CiB9CiAKLUxheW91dFVuaXQgQmxv
Y2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Ok1hcmdpbkNvbGxhcHNlOjptYXJnaW5Cb3R0
b20oY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91dEJveCkK
K0xheW91dFVuaXQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Ok1hcmdpbkNvbGxh
cHNlOjptYXJnaW5BZnRlcihjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJv
eCYgbGF5b3V0Qm94KQogewogICAgIGlmIChsYXlvdXRCb3guaXNBbm9ueW1vdXMoKSkKICAgICAg
ICAgcmV0dXJuIDA7CiAKICAgICBBU1NFUlQobGF5b3V0Qm94LmlzQmxvY2tMZXZlbEJveCgpKTsK
IAotICAgIC8vIFRPRE86IHRha2UgX2hhc0Fkam9pbmluZ01hcmdpblRvcEFuZEJvdHRvbSgpIGlu
dG8gYWNjb3VudC4KLSAgICBpZiAoaXNNYXJnaW5Cb3R0b21Db2xsYXBzZWRXaXRoUGFyZW50KGxh
eW91dEJveCkpCisgICAgLy8gVE9ETzogdGFrZSBfaGFzQWRqb2luaW5nTWFyZ2luQmVmb3JlQW5k
Qm90dG9tKCkgaW50byBhY2NvdW50LgorICAgIGlmIChpc01hcmdpbkFmdGVyQ29sbGFwc2VkV2l0
aFBhcmVudChsYXlvdXRCb3gpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIGlmIChpc01hcmdp
bkJvdHRvbUNvbGxhcHNlZFRocm91Z2gobGF5b3V0Qm94KSkKKyAgICBpZiAoaXNNYXJnaW5BZnRl
ckNvbGxhcHNlZFRocm91Z2gobGF5b3V0Qm94KSkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICAv
LyBGbG9hdHMgYW5kIG91dCBvZiBmbG93IHBvc2l0aW9uZWQgYm94ZXMgZG8gbm90IGNvbGxhcHNl
IHRoZWlyIG1hcmdpbnMuCi0gICAgaWYgKCFpc01hcmdpbkJvdHRvbUNvbGxhcHNlZFdpdGhTaWJs
aW5nKGxheW91dEJveCkpCi0gICAgICAgIHJldHVybiBub25Db2xsYXBzZWRNYXJnaW5Cb3R0b20o
bGF5b3V0U3RhdGUsIGxheW91dEJveCk7CisgICAgaWYgKCFpc01hcmdpbkFmdGVyQ29sbGFwc2Vk
V2l0aFNpYmxpbmcobGF5b3V0Qm94KSkKKyAgICAgICAgcmV0dXJuIG5vbkNvbGxhcHNlZE1hcmdp
bkFmdGVyKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpOwogCiAgICAgLy8gVGhlIGJvdHRvbSBtYXJn
aW4gb2YgYW4gaW4tZmxvdyBibG9jay1sZXZlbCBlbGVtZW50IGFsd2F5cyBjb2xsYXBzZXMgd2l0
aCB0aGUgdG9wIG1hcmdpbiBvZiBpdHMgbmV4dCBpbi1mbG93IGJsb2NrLWxldmVsIHNpYmxpbmcs
CiAgICAgLy8gdW5sZXNzIHRoYXQgc2libGluZyBoYXMgY2xlYXJhbmNlLgogICAgIGlmIChsYXlv
dXRCb3gubmV4dEluRmxvd1NpYmxpbmcoKSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJu
IG5vbkNvbGxhcHNlZE1hcmdpbkJvdHRvbShsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KTsKKyAgICBy
ZXR1cm4gbm9uQ29sbGFwc2VkTWFyZ2luQWZ0ZXIobGF5b3V0U3RhdGUsIGxheW91dEJveCk7CiB9
CiAKLWJvb2wgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Ok1hcmdpbkNvbGxhcHNl
Ojppc01hcmdpbkJvdHRvbUNvbGxhcHNlZFdpdGhQYXJlbnQoY29uc3QgQm94JiBsYXlvdXRCb3gp
Citib29sIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpNYXJnaW5Db2xsYXBzZTo6
aXNNYXJnaW5BZnRlckNvbGxhcHNlZFdpdGhQYXJlbnQoY29uc3QgQm94JiBsYXlvdXRCb3gpCiB7
CiAgICAgLy8gbGFzdCBpbmZsb3cgYm94IHRvIHBhcmVudC4KICAgICAvLyBodHRwczovL3d3dy53
My5vcmcvVFIvQ1NTMjEvYm94Lmh0bWwjY29sbGFwc2luZy1tYXJnaW5zCkBAIC0zMDksNyArMzA5
LDcgQEAgYm9vbCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6TWFyZ2luQ29sbGFw
c2U6OmlzTWFyZ2luQm90dG9tQ29sbGFwc2VkV2kKICAgICBpZiAobGF5b3V0Qm94LmlzRmxvYXRp
bmdPck91dE9mRmxvd1Bvc2l0aW9uZWQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
aWYgKGlzTWFyZ2luQm90dG9tQ29sbGFwc2VkVGhyb3VnaChsYXlvdXRCb3gpKQorICAgIGlmIChp
c01hcmdpbkFmdGVyQ29sbGFwc2VkVGhyb3VnaChsYXlvdXRCb3gpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICAvLyBPbmx5IHRoZSBsYXN0IGlubGZsb3cgY2hpbGQgY29sbGFwc2VzIHdp
dGggcGFyZW50LgpAQCAtMzMzLDEyICszMzMsMTIgQEAgYm9vbCBCbG9ja0Zvcm1hdHRpbmdDb250
ZXh0OjpHZW9tZXRyeTo6TWFyZ2luQ29sbGFwc2U6OmlzTWFyZ2luQm90dG9tQ29sbGFwc2VkV2kK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9t
ZXRyeTo6TWFyZ2luQ29sbGFwc2U6OmlzTWFyZ2luVG9wQ29sbGFwc2VkV2l0aFBhcmVudE1hcmdp
bkJvdHRvbShjb25zdCBCb3gmKQorYm9vbCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRy
eTo6TWFyZ2luQ29sbGFwc2U6OmlzTWFyZ2luQmVmb3JlQ29sbGFwc2VkV2l0aFBhcmVudE1hcmdp
bkFmdGVyKGNvbnN0IEJveCYpCiB7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1MYXlvdXRVbml0
IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpNYXJnaW5Db2xsYXBzZTo6Y29sbGFw
c2VkTWFyZ2luQm90dG9tRnJvbUxhc3RDaGlsZChjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3Rh
dGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQorTGF5b3V0VW5pdCBCbG9ja0Zvcm1hdHRpbmdDb250
ZXh0OjpHZW9tZXRyeTo6TWFyZ2luQ29sbGFwc2U6OmNvbGxhcHNlZE1hcmdpbkFmdGVyRnJvbUxh
c3RDaGlsZChjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0
Qm94KQogewogICAgIEFTU0VSVChsYXlvdXRCb3guaXNCbG9ja0xldmVsQm94KCkpOwogCkBAIC0z
NTIsMTkgKzM1MiwxOSBAQCBMYXlvdXRVbml0IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21l
dHJ5OjpNYXJnaW5Db2xsYXBzZTo6Y29sbGFwc2VkTWFyZ2luQm90dAogCiAgICAgLy8gRklYTUU6
IENoZWNrIGZvciBjb2xsYXBzZWQgdGhyb3VnaCBtYXJnaW4uCiAgICAgYXV0byYgbGFzdEluRmxv
d0NoaWxkID0gKmRvd25jYXN0PENvbnRhaW5lcj4obGF5b3V0Qm94KS5sYXN0SW5GbG93Q2hpbGQo
KTsKLSAgICBpZiAoIWlzTWFyZ2luQm90dG9tQ29sbGFwc2VkV2l0aFBhcmVudChsYXN0SW5GbG93
Q2hpbGQpKQorICAgIGlmICghaXNNYXJnaW5BZnRlckNvbGxhcHNlZFdpdGhQYXJlbnQobGFzdElu
Rmxvd0NoaWxkKSkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICAvLyBDb2xsZWN0IGNvbGxhcHNl
ZCBtYXJnaW4gYm90dG9tIHJlY3Vyc2l2ZWx5LgotICAgIHJldHVybiBtYXJnaW5WYWx1ZShjb21w
dXRlZE5vbkNvbGxhcHNlZE1hcmdpbkJvdHRvbShsYXlvdXRTdGF0ZSwgbGFzdEluRmxvd0NoaWxk
KSwgY29sbGFwc2VkTWFyZ2luQm90dG9tRnJvbUxhc3RDaGlsZChsYXlvdXRTdGF0ZSwgbGFzdElu
Rmxvd0NoaWxkKSk7CisgICAgcmV0dXJuIG1hcmdpblZhbHVlKGNvbXB1dGVkTm9uQ29sbGFwc2Vk
TWFyZ2luQWZ0ZXIobGF5b3V0U3RhdGUsIGxhc3RJbkZsb3dDaGlsZCksIGNvbGxhcHNlZE1hcmdp
bkFmdGVyRnJvbUxhc3RDaGlsZChsYXlvdXRTdGF0ZSwgbGFzdEluRmxvd0NoaWxkKSk7CiB9CiAK
LUxheW91dFVuaXQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Ok1hcmdpbkNvbGxh
cHNlOjpub25Db2xsYXBzZWRNYXJnaW5Cb3R0b20oY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0
YXRlLCBjb25zdCBCb3gmIGxheW91dEJveCkKK0xheW91dFVuaXQgQmxvY2tGb3JtYXR0aW5nQ29u
dGV4dDo6R2VvbWV0cnk6Ok1hcmdpbkNvbGxhcHNlOjpub25Db2xsYXBzZWRNYXJnaW5BZnRlcihj
b25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQogewog
ICAgIEFTU0VSVChsYXlvdXRCb3guaXNCbG9ja0xldmVsQm94KCkpOwogCiAgICAgLy8gTm9uIGNv
bGxhcHNlZCBtYXJnaW4gYm90dG9tIGluY2x1ZGVzIGNvbGxhcHNlZCBtYXJnaW4gZnJvbSBpbmZs
b3cgbGFzdCBjaGlsZC4KLSAgICByZXR1cm4gbWFyZ2luVmFsdWUoY29tcHV0ZWROb25Db2xsYXBz
ZWRNYXJnaW5Cb3R0b20obGF5b3V0U3RhdGUsIGxheW91dEJveCksIGNvbGxhcHNlZE1hcmdpbkJv
dHRvbUZyb21MYXN0Q2hpbGQobGF5b3V0U3RhdGUsIGxheW91dEJveCkpOworICAgIHJldHVybiBt
YXJnaW5WYWx1ZShjb21wdXRlZE5vbkNvbGxhcHNlZE1hcmdpbkFmdGVyKGxheW91dFN0YXRlLCBs
YXlvdXRCb3gpLCBjb2xsYXBzZWRNYXJnaW5BZnRlckZyb21MYXN0Q2hpbGQobGF5b3V0U3RhdGUs
IGxheW91dEJveCkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
ZGlzcGxheXRyZWUvRGlzcGxheUJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxh
eXRyZWUvRGlzcGxheUJveC5jcHAKaW5kZXggNjViYzBmMDcwYWU3MDU2YWU2NTVmMTk5MmEzYWJk
ZmM5ZjNkMjliMi4uMDI3YjQzNGJiYzZkNGMyZjU1MTBhZmNlOWM1MDc4MzllNjQ5ZTI0NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlCb3guY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5Qm94LmNwcApA
QCAtNjAsNyArNjAsNyBAQCBCb3g6OkJveChjb25zdCBCb3gmIG90aGVyKQogICAgICwgbV9ob3Jp
em9udGFsTWFyZ2luKG90aGVyLm1faG9yaXpvbnRhbE1hcmdpbikKICAgICAsIG1fdmVydGljYWxN
YXJnaW4ob3RoZXIubV92ZXJ0aWNhbE1hcmdpbikKICAgICAsIG1faG9yaXpvbnRhbE5vbkNvbXB1
dGVkTWFyZ2luKG90aGVyLm1faG9yaXpvbnRhbE5vbkNvbXB1dGVkTWFyZ2luKQotICAgICwgbV9l
c3RpbWF0ZWRNYXJnaW5Ub3Aob3RoZXIubV9lc3RpbWF0ZWRNYXJnaW5Ub3ApCisgICAgLCBtX2Vz
dGltYXRlZE1hcmdpbkJlZm9yZShvdGhlci5tX2VzdGltYXRlZE1hcmdpbkJlZm9yZSkKICAgICAs
IG1fYm9yZGVyKG90aGVyLm1fYm9yZGVyKQogICAgICwgbV9wYWRkaW5nKG90aGVyLm1fcGFkZGlu
ZykKICNpZiAhQVNTRVJUX0RJU0FCTEVECkBAIC05MiwxMCArOTIsMTAgQEAgQm94OjpSZWN0IEJv
eDo6bWFyZ2luQm94KCkgY29uc3QKICAgICBhdXRvIGJvcmRlckJveCA9IHRoaXMtPmJvcmRlckJv
eCgpOwogCiAgICAgUmVjdCBtYXJnaW5Cb3g7Ci0gICAgbWFyZ2luQm94LnNldFRvcChib3JkZXJC
b3gudG9wKCkgLSBtYXJnaW5Ub3AoKSk7Ci0gICAgbWFyZ2luQm94LnNldExlZnQoYm9yZGVyQm94
LmxlZnQoKSAtIG1hcmdpbkxlZnQoKSk7Ci0gICAgbWFyZ2luQm94LnNldEhlaWdodChib3JkZXJC
b3guaGVpZ2h0KCkgKyBtYXJnaW5Ub3AoKSArIG1hcmdpbkJvdHRvbSgpKTsKLSAgICBtYXJnaW5C
b3guc2V0V2lkdGgoYm9yZGVyQm94LndpZHRoKCkgKyBtYXJnaW5MZWZ0KCkgKyBtYXJnaW5SaWdo
dCgpKTsKKyAgICBtYXJnaW5Cb3guc2V0VG9wKGJvcmRlckJveC50b3AoKSAtIG1hcmdpbkJlZm9y
ZSgpKTsKKyAgICBtYXJnaW5Cb3guc2V0TGVmdChib3JkZXJCb3gubGVmdCgpIC0gbWFyZ2luU3Rh
cnQoKSk7CisgICAgbWFyZ2luQm94LnNldEhlaWdodChib3JkZXJCb3guaGVpZ2h0KCkgKyBtYXJn
aW5CZWZvcmUoKSArIG1hcmdpbkFmdGVyKCkpOworICAgIG1hcmdpbkJveC5zZXRXaWR0aChib3Jk
ZXJCb3gud2lkdGgoKSArIG1hcmdpblN0YXJ0KCkgKyBtYXJnaW5FbmQoKSk7CiAgICAgcmV0dXJu
IG1hcmdpbkJveDsKIH0KIApAQCAtMTA0LDEwICsxMDQsMTAgQEAgQm94OjpSZWN0IEJveDo6bm9u
Q29sbGFwc2VkTWFyZ2luQm94KCkgY29uc3QKICAgICBhdXRvIGJvcmRlckJveCA9IHRoaXMtPmJv
cmRlckJveCgpOwogCiAgICAgUmVjdCBtYXJnaW5Cb3g7Ci0gICAgbWFyZ2luQm94LnNldFRvcChi
b3JkZXJCb3gudG9wKCkgLSBub25Db2xsYXBzZWRNYXJnaW5Ub3AoKSk7Ci0gICAgbWFyZ2luQm94
LnNldExlZnQoYm9yZGVyQm94LmxlZnQoKSAtIG1hcmdpbkxlZnQoKSk7Ci0gICAgbWFyZ2luQm94
LnNldEhlaWdodChib3JkZXJCb3guaGVpZ2h0KCkgKyBub25Db2xsYXBzZWRNYXJnaW5Ub3AoKSAr
IG5vbkNvbGxhcHNlZE1hcmdpbkJvdHRvbSgpKTsKLSAgICBtYXJnaW5Cb3guc2V0V2lkdGgoYm9y
ZGVyQm94LndpZHRoKCkgKyBtYXJnaW5MZWZ0KCkgKyBtYXJnaW5SaWdodCgpKTsKKyAgICBtYXJn
aW5Cb3guc2V0VG9wKGJvcmRlckJveC50b3AoKSAtIG5vbkNvbGxhcHNlZE1hcmdpbkJlZm9yZSgp
KTsKKyAgICBtYXJnaW5Cb3guc2V0TGVmdChib3JkZXJCb3gubGVmdCgpIC0gbWFyZ2luU3RhcnQo
KSk7CisgICAgbWFyZ2luQm94LnNldEhlaWdodChib3JkZXJCb3guaGVpZ2h0KCkgKyBub25Db2xs
YXBzZWRNYXJnaW5CZWZvcmUoKSArIG5vbkNvbGxhcHNlZE1hcmdpbkFmdGVyKCkpOworICAgIG1h
cmdpbkJveC5zZXRXaWR0aChib3JkZXJCb3gud2lkdGgoKSArIG1hcmdpblN0YXJ0KCkgKyBtYXJn
aW5FbmQoKSk7CiAgICAgcmV0dXJuIG1hcmdpbkJveDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlCb3guaCBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5Qm94LmgKaW5kZXggZTQ5ZGUzYzM2YWU4NTIyYmVh
ZTQwZTcwZGZkOTRjM2JiYWI1M2Q0Mi4uOWY1NTkwZmYzNzQ1N2UwOGQ1MzA1ZWMyNzVjNjFhNmU2
MTA1OTFkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rp
c3BsYXlCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxh
eUJveC5oCkBAIC0xMzYsMjAgKzEzNiwyMCBAQCBwdWJsaWM6CiAgICAgTGF5b3V0VW5pdCB3aWR0
aCgpIGNvbnN0IHsgcmV0dXJuIGJvcmRlckxlZnQoKSArIHBhZGRpbmdMZWZ0KCkudmFsdWVfb3Io
MCkgKyBjb250ZW50Qm94V2lkdGgoKSArIHBhZGRpbmdSaWdodCgpLnZhbHVlX29yKDApICsgYm9y
ZGVyUmlnaHQoKTsgfQogICAgIExheW91dFVuaXQgaGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gYm9y
ZGVyVG9wKCkgKyBwYWRkaW5nVG9wKCkudmFsdWVfb3IoMCkgKyBjb250ZW50Qm94SGVpZ2h0KCkg
KyBwYWRkaW5nQm90dG9tKCkudmFsdWVfb3IoMCkgKyBib3JkZXJCb3R0b20oKTsgfQogICAgIFJl
Y3QgcmVjdCgpIGNvbnN0IHsgcmV0dXJuIHsgdG9wKCksIGxlZnQoKSwgd2lkdGgoKSwgaGVpZ2h0
KCkgfTsgfQotICAgIFJlY3QgcmVjdFdpdGhNYXJnaW4oKSBjb25zdCB7IHJldHVybiB7IHRvcCgp
IC0gbWFyZ2luVG9wKCksIGxlZnQoKSAtIG1hcmdpbkxlZnQoKSwgbWFyZ2luTGVmdCgpICsgd2lk
dGgoKSArIG1hcmdpblJpZ2h0KCksIG1hcmdpblRvcCgpICsgaGVpZ2h0KCkgKyBtYXJnaW5Cb3R0
b20oKSB9OyB9CisgICAgUmVjdCByZWN0V2l0aE1hcmdpbigpIGNvbnN0IHsgcmV0dXJuIHsgdG9w
KCkgLSBtYXJnaW5CZWZvcmUoKSwgbGVmdCgpIC0gbWFyZ2luU3RhcnQoKSwgbWFyZ2luU3RhcnQo
KSArIHdpZHRoKCkgKyBtYXJnaW5FbmQoKSwgbWFyZ2luQmVmb3JlKCkgKyBoZWlnaHQoKSArIG1h
cmdpbkFmdGVyKCkgfTsgfQogCiAgICAgTGF5b3V0OjpWZXJ0aWNhbE1hcmdpbiB2ZXJ0aWNhbE1h
cmdpbigpIGNvbnN0OwotICAgIExheW91dFVuaXQgbWFyZ2luVG9wKCkgY29uc3Q7Ci0gICAgTGF5
b3V0VW5pdCBtYXJnaW5MZWZ0KCkgY29uc3Q7Ci0gICAgTGF5b3V0VW5pdCBtYXJnaW5Cb3R0b20o
KSBjb25zdDsKLSAgICBMYXlvdXRVbml0IG1hcmdpblJpZ2h0KCkgY29uc3Q7CisgICAgTGF5b3V0
VW5pdCBtYXJnaW5CZWZvcmUoKSBjb25zdDsKKyAgICBMYXlvdXRVbml0IG1hcmdpblN0YXJ0KCkg
Y29uc3Q7CisgICAgTGF5b3V0VW5pdCBtYXJnaW5BZnRlcigpIGNvbnN0OworICAgIExheW91dFVu
aXQgbWFyZ2luRW5kKCkgY29uc3Q7CiAKLSAgICBMYXlvdXRVbml0IG5vbkNvbGxhcHNlZE1hcmdp
blRvcCgpIGNvbnN0OwotICAgIExheW91dFVuaXQgbm9uQ29sbGFwc2VkTWFyZ2luQm90dG9tKCkg
Y29uc3Q7Ci0gICAgTGF5b3V0VW5pdCBub25Db21wdXRlZE1hcmdpbkxlZnQoKSBjb25zdDsKLSAg
ICBMYXlvdXRVbml0IG5vbkNvbXB1dGVkTWFyZ2luUmlnaHQoKSBjb25zdDsKKyAgICBMYXlvdXRV
bml0IG5vbkNvbGxhcHNlZE1hcmdpbkJlZm9yZSgpIGNvbnN0OworICAgIExheW91dFVuaXQgbm9u
Q29sbGFwc2VkTWFyZ2luQWZ0ZXIoKSBjb25zdDsKKyAgICBMYXlvdXRVbml0IG5vbkNvbXB1dGVk
TWFyZ2luU3RhcnQoKSBjb25zdDsKKyAgICBMYXlvdXRVbml0IG5vbkNvbXB1dGVkTWFyZ2luRW5k
KCkgY29uc3Q7CiAKLSAgICBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGVzdGltYXRlZE1hcmdp
blRvcCgpIGNvbnN0IHsgcmV0dXJuIG1fZXN0aW1hdGVkTWFyZ2luVG9wOyB9CisgICAgc3RkOjpv
cHRpb25hbDxMYXlvdXRVbml0PiBlc3RpbWF0ZWRNYXJnaW5CZWZvcmUoKSBjb25zdCB7IHJldHVy
biBtX2VzdGltYXRlZE1hcmdpbkJlZm9yZTsgfQogCiAgICAgTGF5b3V0VW5pdCBib3JkZXJUb3Ao
KSBjb25zdDsKICAgICBMYXlvdXRVbml0IGJvcmRlckxlZnQoKSBjb25zdDsKQEAgLTE5NCw3ICsx
OTQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0SG9yaXpvbnRhbE1hcmdpbihMYXlvdXQ6Okhv
cml6b250YWxNYXJnaW4pOwogICAgIHZvaWQgc2V0VmVydGljYWxNYXJnaW4oTGF5b3V0OjpWZXJ0
aWNhbE1hcmdpbik7CiAgICAgdm9pZCBzZXRIb3Jpem9udGFsTm9uQ29tcHV0ZWRNYXJnaW4oTGF5
b3V0OjpIb3Jpem9udGFsTWFyZ2luKTsKLSAgICB2b2lkIHNldEVzdGltYXRlZE1hcmdpblRvcChM
YXlvdXRVbml0IG1hcmdpblRvcCkgeyBtX2VzdGltYXRlZE1hcmdpblRvcCA9IG1hcmdpblRvcDsg
fQorICAgIHZvaWQgc2V0RXN0aW1hdGVkTWFyZ2luQmVmb3JlKExheW91dFVuaXQgbWFyZ2luQmVm
b3JlKSB7IG1fZXN0aW1hdGVkTWFyZ2luQmVmb3JlID0gbWFyZ2luQmVmb3JlOyB9CiAKICAgICB2
b2lkIHNldEJvcmRlcihMYXlvdXQ6OkVkZ2VzKTsKICAgICB2b2lkIHNldFBhZGRpbmcoc3RkOjpv
cHRpb25hbDxMYXlvdXQ6OkVkZ2VzPik7CkBAIC0yMjcsNyArMjI3LDcgQEAgcHJpdmF0ZToKICAg
ICBMYXlvdXQ6Okhvcml6b250YWxNYXJnaW4gbV9ob3Jpem9udGFsTWFyZ2luOwogICAgIExheW91
dDo6VmVydGljYWxNYXJnaW4gbV92ZXJ0aWNhbE1hcmdpbjsKICAgICBMYXlvdXQ6Okhvcml6b250
YWxNYXJnaW4gbV9ob3Jpem9udGFsTm9uQ29tcHV0ZWRNYXJnaW47Ci0gICAgc3RkOjpvcHRpb25h
bDxMYXlvdXRVbml0PiBtX2VzdGltYXRlZE1hcmdpblRvcDsKKyAgICBzdGQ6Om9wdGlvbmFsPExh
eW91dFVuaXQ+IG1fZXN0aW1hdGVkTWFyZ2luQmVmb3JlOwogCiAgICAgTGF5b3V0OjpFZGdlcyBt
X2JvcmRlcjsKICAgICBzdGQ6Om9wdGlvbmFsPExheW91dDo6RWRnZXM+IG1fcGFkZGluZzsKQEAg
LTQzNyw3ICs0MzcsNyBAQCBpbmxpbmUgQm94OjpSZWN0OjpvcGVyYXRvciBMYXlvdXRSZWN0KCkg
Y29uc3QKIAogaW5saW5lIExheW91dFVuaXQgQm94Ojp0b3AoKSBjb25zdAogewotICAgIEFTU0VS
VChtX2hhc1ZhbGlkVG9wICYmIChtX2VzdGltYXRlZE1hcmdpblRvcCB8fCBtX2hhc1ZhbGlkVmVy
dGljYWxNYXJnaW4pKTsKKyAgICBBU1NFUlQobV9oYXNWYWxpZFRvcCAmJiAobV9lc3RpbWF0ZWRN
YXJnaW5CZWZvcmUgfHwgbV9oYXNWYWxpZFZlcnRpY2FsTWFyZ2luKSk7CiAgICAgcmV0dXJuIG1f
dG9wTGVmdC55KCk7CiB9CiAKQEAgLTQ0OSw3ICs0NDksNyBAQCBpbmxpbmUgTGF5b3V0VW5pdCBC
b3g6OmxlZnQoKSBjb25zdAogCiBpbmxpbmUgTGF5b3V0UG9pbnQgQm94Ojp0b3BMZWZ0KCkgY29u
c3QKIHsKLSAgICBBU1NFUlQobV9oYXNWYWxpZFRvcCAmJiAobV9lc3RpbWF0ZWRNYXJnaW5Ub3Ag
fHwgbV9oYXNWYWxpZFZlcnRpY2FsTWFyZ2luKSk7CisgICAgQVNTRVJUKG1faGFzVmFsaWRUb3Ag
JiYgKG1fZXN0aW1hdGVkTWFyZ2luQmVmb3JlIHx8IG1faGFzVmFsaWRWZXJ0aWNhbE1hcmdpbikp
OwogICAgIEFTU0VSVChtX2hhc1ZhbGlkTGVmdCAmJiBtX2hhc1ZhbGlkSG9yaXpvbnRhbE1hcmdp
bik7CiAgICAgcmV0dXJuIG1fdG9wTGVmdDsKIH0KQEAgLTUyMSw3ICs1MjEsNyBAQCBpbmxpbmUg
dm9pZCBCb3g6OnNldFZlcnRpY2FsTWFyZ2luKExheW91dDo6VmVydGljYWxNYXJnaW4gbWFyZ2lu
KQogICAgIHNldEhhc1ZhbGlkVmVydGljYWxNYXJnaW4oKTsKICAgICBzZXRIYXNWYWxpZFZlcnRp
Y2FsTm9uQ29sbGFwc2VkTWFyZ2luKCk7CiAjZW5kaWYKLSAgICBBU1NFUlQoIW1fZXN0aW1hdGVk
TWFyZ2luVG9wIHx8ICptX2VzdGltYXRlZE1hcmdpblRvcCA9PSBtYXJnaW4udXNlZFZhbHVlcygp
LnRvcCk7CisgICAgQVNTRVJUKCFtX2VzdGltYXRlZE1hcmdpbkJlZm9yZSB8fCAqbV9lc3RpbWF0
ZWRNYXJnaW5CZWZvcmUgPT0gbWFyZ2luLnVzZWRWYWx1ZXMoKS5iZWZvcmUpOwogICAgIG1fdmVy
dGljYWxNYXJnaW4gPSBtYXJnaW47CiB9CiAKQEAgLTU1NSw1MiArNTU1LDUyIEBAIGlubGluZSBM
YXlvdXQ6OlZlcnRpY2FsTWFyZ2luIEJveDo6dmVydGljYWxNYXJnaW4oKSBjb25zdAogICAgIHJl
dHVybiBtX3ZlcnRpY2FsTWFyZ2luOwogfQogCi1pbmxpbmUgTGF5b3V0VW5pdCBCb3g6Om1hcmdp
blRvcCgpIGNvbnN0CitpbmxpbmUgTGF5b3V0VW5pdCBCb3g6Om1hcmdpbkJlZm9yZSgpIGNvbnN0
CiB7CiAgICAgQVNTRVJUKG1faGFzVmFsaWRWZXJ0aWNhbE1hcmdpbik7Ci0gICAgcmV0dXJuIG1f
dmVydGljYWxNYXJnaW4udXNlZFZhbHVlcygpLnRvcDsKKyAgICByZXR1cm4gbV92ZXJ0aWNhbE1h
cmdpbi51c2VkVmFsdWVzKCkuYmVmb3JlOwogfQogCi1pbmxpbmUgTGF5b3V0VW5pdCBCb3g6Om1h
cmdpbkxlZnQoKSBjb25zdAoraW5saW5lIExheW91dFVuaXQgQm94OjptYXJnaW5TdGFydCgpIGNv
bnN0CiB7CiAgICAgQVNTRVJUKG1faGFzVmFsaWRIb3Jpem9udGFsTWFyZ2luKTsKLSAgICByZXR1
cm4gbV9ob3Jpem9udGFsTWFyZ2luLmxlZnQ7CisgICAgcmV0dXJuIG1faG9yaXpvbnRhbE1hcmdp
bi5zdGFydDsKIH0KIAotaW5saW5lIExheW91dFVuaXQgQm94OjptYXJnaW5Cb3R0b20oKSBjb25z
dAoraW5saW5lIExheW91dFVuaXQgQm94OjptYXJnaW5BZnRlcigpIGNvbnN0CiB7CiAgICAgQVNT
RVJUKG1faGFzVmFsaWRWZXJ0aWNhbE1hcmdpbik7Ci0gICAgcmV0dXJuIG1fdmVydGljYWxNYXJn
aW4udXNlZFZhbHVlcygpLmJvdHRvbTsKKyAgICByZXR1cm4gbV92ZXJ0aWNhbE1hcmdpbi51c2Vk
VmFsdWVzKCkuYWZ0ZXI7CiB9CiAKLWlubGluZSBMYXlvdXRVbml0IEJveDo6bWFyZ2luUmlnaHQo
KSBjb25zdAoraW5saW5lIExheW91dFVuaXQgQm94OjptYXJnaW5FbmQoKSBjb25zdAogewogICAg
IEFTU0VSVChtX2hhc1ZhbGlkSG9yaXpvbnRhbE1hcmdpbik7Ci0gICAgcmV0dXJuIG1faG9yaXpv
bnRhbE1hcmdpbi5yaWdodDsKKyAgICByZXR1cm4gbV9ob3Jpem9udGFsTWFyZ2luLmVuZDsKIH0K
IAotaW5saW5lIExheW91dFVuaXQgQm94Ojpub25Db2xsYXBzZWRNYXJnaW5Ub3AoKSBjb25zdAor
aW5saW5lIExheW91dFVuaXQgQm94Ojpub25Db2xsYXBzZWRNYXJnaW5CZWZvcmUoKSBjb25zdAog
ewogICAgIEFTU0VSVChtX2hhc1ZhbGlkVmVydGljYWxOb25Db2xsYXBzZWRNYXJnaW4pOwotICAg
IHJldHVybiBtX3ZlcnRpY2FsTWFyZ2luLm5vbkNvbGxhcHNlZFZhbHVlcygpLnRvcDsKKyAgICBy
ZXR1cm4gbV92ZXJ0aWNhbE1hcmdpbi5ub25Db2xsYXBzZWRWYWx1ZXMoKS5iZWZvcmU7CiB9CiAK
LWlubGluZSBMYXlvdXRVbml0IEJveDo6bm9uQ29sbGFwc2VkTWFyZ2luQm90dG9tKCkgY29uc3QK
K2lubGluZSBMYXlvdXRVbml0IEJveDo6bm9uQ29sbGFwc2VkTWFyZ2luQWZ0ZXIoKSBjb25zdAog
ewogICAgIEFTU0VSVChtX2hhc1ZhbGlkVmVydGljYWxOb25Db2xsYXBzZWRNYXJnaW4pOwotICAg
IHJldHVybiBtX3ZlcnRpY2FsTWFyZ2luLm5vbkNvbGxhcHNlZFZhbHVlcygpLmJvdHRvbTsKKyAg
ICByZXR1cm4gbV92ZXJ0aWNhbE1hcmdpbi5ub25Db2xsYXBzZWRWYWx1ZXMoKS5hZnRlcjsKIH0K
IAotaW5saW5lIExheW91dFVuaXQgQm94Ojpub25Db21wdXRlZE1hcmdpbkxlZnQoKSBjb25zdAor
aW5saW5lIExheW91dFVuaXQgQm94Ojpub25Db21wdXRlZE1hcmdpblN0YXJ0KCkgY29uc3QKIHsK
ICAgICBBU1NFUlQobV9oYXNWYWxpZEhvcml6b250YWxOb25Db21wdXRlZE1hcmdpbik7Ci0gICAg
cmV0dXJuIG1faG9yaXpvbnRhbE5vbkNvbXB1dGVkTWFyZ2luLmxlZnQ7CisgICAgcmV0dXJuIG1f
aG9yaXpvbnRhbE5vbkNvbXB1dGVkTWFyZ2luLnN0YXJ0OwogfQogCi1pbmxpbmUgTGF5b3V0VW5p
dCBCb3g6Om5vbkNvbXB1dGVkTWFyZ2luUmlnaHQoKSBjb25zdAoraW5saW5lIExheW91dFVuaXQg
Qm94Ojpub25Db21wdXRlZE1hcmdpbkVuZCgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKG1faGFzVmFs
aWRIb3Jpem9udGFsTm9uQ29tcHV0ZWRNYXJnaW4pOwotICAgIHJldHVybiBtX2hvcml6b250YWxO
b25Db21wdXRlZE1hcmdpbi5yaWdodDsKKyAgICByZXR1cm4gbV9ob3Jpem9udGFsTm9uQ29tcHV0
ZWRNYXJnaW4uZW5kOwogfQogCiBpbmxpbmUgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBCb3g6
OnBhZGRpbmdUb3AoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zs
b2F0cy9GbG9hdEF2b2lkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zsb2F0cy9GbG9h
dEF2b2lkZXIuY3BwCmluZGV4IDMyYWEzMThmMGZlZGUwNmZjNjlmOTQzOWViZjNkNWFlNmQyYjlk
ZDkuLmRiMTgxY2Q0YTU3Yjc0NzBhNTQ2YjYzZjkyNDAwOGJhNmI5Mjk4ZWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9mbG9hdHMvRmxvYXRBdm9pZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZmxvYXRzL0Zsb2F0QXZvaWRlci5jcHAKQEAgLTYxLDExICs2MSwx
MSBAQCB2b2lkIEZsb2F0QXZvaWRlcjo6c2V0SG9yaXpvbnRhbENvbnN0cmFpbnRzKEhvcml6b250
YWxDb25zdHJhaW50cyBob3Jpem9udGFsQ29ucwogICAgICAgICAvLyBDb21wdXRlIHRoZSBob3Jp
em9udGFsIHBvc2l0aW9uIGZvciB0aGUgbmV3IGZsb2F0aW5nIGJ5IHRha2luZyBib3RoIHRoZSBj
b250aW5pbmcgYmxvY2sgYW5kIHRoZSBjdXJyZW50IGxlZnQvcmlnaHQgZmxvYXRzIGludG8gYWNj
b3VudC4KICAgICAgICAgYXV0byBjb250YWluaW5nQmxvY2tDb250ZW50Qm94TGVmdCA9IG1fY29u
dGFpbmluZ0Jsb2NrQWJzb2x1dGVEaXNwbGF5Qm94LmxlZnQoKSArIG1fY29udGFpbmluZ0Jsb2Nr
QWJzb2x1dGVEaXNwbGF5Qm94LmNvbnRlbnRCb3hMZWZ0KCk7CiAgICAgICAgIGlmIChpc0xlZnRB
bGlnbmVkKCkpCi0gICAgICAgICAgICByZXR1cm4gc3RkOjptYXg8UG9zaXRpb25JbkNvbnRleHRS
b290Pih7IGNvbnRhaW5pbmdCbG9ja0NvbnRlbnRCb3hMZWZ0ICsgbWFyZ2luTGVmdCgpIH0sIGxl
ZnQpOworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWF4PFBvc2l0aW9uSW5Db250ZXh0Um9vdD4o
eyBjb250YWluaW5nQmxvY2tDb250ZW50Qm94TGVmdCArIG1hcmdpblN0YXJ0KCkgfSwgbGVmdCk7
CiAKICAgICAgICAgLy8gTWFrZSBzdXJlIGl0IGRvZXMgbm90IG92ZXJmbG93IHRoZSBjb250YWlu
aW5nIGJsb2NrIG9uIHRoZSByaWdodC4KICAgICAgICAgYXV0byBjb250YWluaW5nQmxvY2tDb250
ZW50Qm94UmlnaHQgPSBjb250YWluaW5nQmxvY2tDb250ZW50Qm94TGVmdCArIG1fY29udGFpbmlu
Z0Jsb2NrQWJzb2x1dGVEaXNwbGF5Qm94LmNvbnRlbnRCb3hXaWR0aCgpOwotICAgICAgICByZXR1
cm4gc3RkOjptaW48UG9zaXRpb25JbkNvbnRleHRSb290PihsZWZ0LCB7IGNvbnRhaW5pbmdCbG9j
a0NvbnRlbnRCb3hSaWdodCAtIG1hcmdpbkJveFdpZHRoKCkgKyBtYXJnaW5MZWZ0KCkgfSk7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om1pbjxQb3NpdGlvbkluQ29udGV4dFJvb3Q+KGxlZnQsIHsgY29u
dGFpbmluZ0Jsb2NrQ29udGVudEJveFJpZ2h0IC0gbWFyZ2luQm94V2lkdGgoKSArIG1hcmdpblN0
YXJ0KCkgfSk7CiAgICAgfTsKIAogICAgIGF1dG8gcG9zaXRpb25DYW5kaWRhdGUgPSBob3Jpem9u
dGFsUG9zaXRpb25DYW5kaWRhdGUoaG9yaXpvbnRhbENvbnN0cmFpbnRzKTsKQEAgLTk5LDcgKzk5
LDcgQEAgUG9zaXRpb25JbkNvbnRleHRSb290IEZsb2F0QXZvaWRlcjo6aW5pdGlhbEhvcml6b250
YWxQb3NpdGlvbigpIGNvbnN0CiAgICAgYXV0byBjb250YWluaW5nQmxvY2tDb250ZW50Qm94Umln
aHQgPSBjb250YWluaW5nQmxvY2tDb250ZW50Qm94TGVmdCArIG1fY29udGFpbmluZ0Jsb2NrQWJz
b2x1dGVEaXNwbGF5Qm94LmNvbnRlbnRCb3hXaWR0aCgpOwogCiAgICAgYXV0byBsZWZ0ID0gaXNM
ZWZ0QWxpZ25lZCgpID8gY29udGFpbmluZ0Jsb2NrQ29udGVudEJveExlZnQgOiBjb250YWluaW5n
QmxvY2tDb250ZW50Qm94UmlnaHQgLSBtYXJnaW5Cb3hXaWR0aCgpOwotICAgIGxlZnQgKz0gbWFy
Z2luTGVmdCgpOworICAgIGxlZnQgKz0gbWFyZ2luU3RhcnQoKTsKIAogICAgIHJldHVybiB7IGxl
ZnQgfTsKIH0KQEAgLTEwNywxMyArMTA3LDEzIEBAIFBvc2l0aW9uSW5Db250ZXh0Um9vdCBGbG9h
dEF2b2lkZXI6OmluaXRpYWxIb3Jpem9udGFsUG9zaXRpb24oKSBjb25zdAogYm9vbCBGbG9hdEF2
b2lkZXI6Om92ZXJmbG93c0NvbnRhaW5pbmdCbG9jaygpIGNvbnN0CiB7CiAgICAgYXV0byBjb250
YWluaW5nQmxvY2tDb250ZW50Qm94TGVmdCA9IG1fY29udGFpbmluZ0Jsb2NrQWJzb2x1dGVEaXNw
bGF5Qm94LmxlZnQoKSArIG1fY29udGFpbmluZ0Jsb2NrQWJzb2x1dGVEaXNwbGF5Qm94LmNvbnRl
bnRCb3hMZWZ0KCk7Ci0gICAgYXV0byBsZWZ0ID0gZGlzcGxheUJveCgpLmxlZnQoKSAtIG1hcmdp
bkxlZnQoKTsKKyAgICBhdXRvIGxlZnQgPSBkaXNwbGF5Qm94KCkubGVmdCgpIC0gbWFyZ2luU3Rh
cnQoKTsKIAogICAgIGlmIChjb250YWluaW5nQmxvY2tDb250ZW50Qm94TGVmdCA+IGxlZnQpCiAg
ICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgYXV0byBjb250YWluaW5nQmxvY2tDb250ZW50Qm94
UmlnaHQgPSBjb250YWluaW5nQmxvY2tDb250ZW50Qm94TGVmdCArIG1fY29udGFpbmluZ0Jsb2Nr
QWJzb2x1dGVEaXNwbGF5Qm94LmNvbnRlbnRCb3hXaWR0aCgpOwotICAgIGF1dG8gcmlnaHQgPSBk
aXNwbGF5Qm94KCkucmlnaHQoKSArIG1hcmdpblJpZ2h0KCk7CisgICAgYXV0byByaWdodCA9IGRp
c3BsYXlCb3goKS5yaWdodCgpICsgbWFyZ2luRW5kKCk7CiAKICAgICByZXR1cm4gY29udGFpbmlu
Z0Jsb2NrQ29udGVudEJveFJpZ2h0IDwgcmlnaHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZmxvYXRzL0Zsb2F0QXZvaWRlci5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zsb2F0cy9GbG9hdEF2b2lkZXIuaAppbmRleCA4YzI2ZGRmMmVkNzBjODcyYzhiMzgwOWU4MDc4
OWY5MjFkZmNmM2VmLi43YWQzN2ExNDhkZWM5ZWNjNTcxNTMxMTY1MGU4MTgzNjRjNzBiYzk0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZmxvYXRzL0Zsb2F0QXZvaWRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mbG9hdHMvRmxvYXRBdm9pZGVyLmgKQEAgLTcwLDEy
ICs3MCwxMiBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCBQb3NpdGlvbkluQ29udGV4dFJvb3Qg
aG9yaXpvbnRhbFBvc2l0aW9uQ2FuZGlkYXRlKEhvcml6b250YWxDb25zdHJhaW50cyk7CiAgICAg
dmlydHVhbCBQb3NpdGlvbkluQ29udGV4dFJvb3QgdmVydGljYWxQb3NpdGlvbkNhbmRpZGF0ZShQ
b3NpdGlvbkluQ29udGV4dFJvb3QpOwogCi0gICAgTGF5b3V0VW5pdCBtYXJnaW5Ub3AoKSBjb25z
dCB7IHJldHVybiBkaXNwbGF5Qm94KCkubWFyZ2luVG9wKCk7IH0KLSAgICBMYXlvdXRVbml0IG1h
cmdpbkJvdHRvbSgpIGNvbnN0IHsgcmV0dXJuIGRpc3BsYXlCb3goKS5tYXJnaW5Cb3R0b20oKTsg
fQotICAgIExheW91dFVuaXQgbWFyZ2luTGVmdCgpIGNvbnN0IHsgcmV0dXJuIGRpc3BsYXlCb3go
KS5ub25Db21wdXRlZE1hcmdpbkxlZnQoKTsgfQotICAgIExheW91dFVuaXQgbWFyZ2luUmlnaHQo
KSBjb25zdCB7IHJldHVybiBkaXNwbGF5Qm94KCkubm9uQ29tcHV0ZWRNYXJnaW5SaWdodCgpOyB9
CisgICAgTGF5b3V0VW5pdCBtYXJnaW5CZWZvcmUoKSBjb25zdCB7IHJldHVybiBkaXNwbGF5Qm94
KCkubWFyZ2luQmVmb3JlKCk7IH0KKyAgICBMYXlvdXRVbml0IG1hcmdpbkFmdGVyKCkgY29uc3Qg
eyByZXR1cm4gZGlzcGxheUJveCgpLm1hcmdpbkFmdGVyKCk7IH0KKyAgICBMYXlvdXRVbml0IG1h
cmdpblN0YXJ0KCkgY29uc3QgeyByZXR1cm4gZGlzcGxheUJveCgpLm5vbkNvbXB1dGVkTWFyZ2lu
U3RhcnQoKTsgfQorICAgIExheW91dFVuaXQgbWFyZ2luRW5kKCkgY29uc3QgeyByZXR1cm4gZGlz
cGxheUJveCgpLm5vbkNvbXB1dGVkTWFyZ2luRW5kKCk7IH0KIAotICAgIExheW91dFVuaXQgbWFy
Z2luQm94V2lkdGgoKSBjb25zdCB7IHJldHVybiBtYXJnaW5MZWZ0KCkgKyBkaXNwbGF5Qm94KCku
d2lkdGgoKSArIG1hcmdpblJpZ2h0KCk7IH0KKyAgICBMYXlvdXRVbml0IG1hcmdpbkJveFdpZHRo
KCkgY29uc3QgeyByZXR1cm4gbWFyZ2luU3RhcnQoKSArIGRpc3BsYXlCb3goKS53aWR0aCgpICsg
bWFyZ2luRW5kKCk7IH0KIAogICAgIGNvbnN0IEZsb2F0aW5nU3RhdGUmIGZsb2F0aW5nU3RhdGUo
KSBjb25zdCB7IHJldHVybiBtX2Zsb2F0aW5nU3RhdGU7IH0KICAgICBjb25zdCBCb3gmIGxheW91
dEJveCgpIGNvbnN0IHsgcmV0dXJuICptX2xheW91dEJveDsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Zsb2F0cy9GbG9hdEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvZmxvYXRzL0Zsb2F0Qm94LmNwcAppbmRleCA0NWMyYTNhMWQyNTU4NDMxY2ViNzJmZjVjYmFj
MzU2NDE3NzQ3MTFlLi5iNTU3YmIwOTZjN2Y3ZGVhYjAzNDZjODljNzgxNzY3OGQ4MTdhYzJiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZmxvYXRzL0Zsb2F0Qm94LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZmxvYXRzL0Zsb2F0Qm94LmNwcApAQCAtNDMsMzAgKzQz
LDMwIEBAIEZsb2F0Qm94OjpGbG9hdEJveChjb25zdCBCb3gmIGxheW91dEJveCwgY29uc3QgRmxv
YXRpbmdTdGF0ZSYgZmxvYXRpbmdTdGF0ZSwgY29uCiBEaXNwbGF5OjpCb3g6OlJlY3QgRmxvYXRC
b3g6OnJlY3QoKSBjb25zdAogewogICAgIGF1dG8gcmVjdCA9IGRpc3BsYXlCb3goKS5yZWN0KCk7
Ci0gICAgcmV0dXJuIHsgcmVjdC50b3AoKSAtIG1hcmdpblRvcCgpLCByZWN0LmxlZnQoKSAtIG1h
cmdpbkxlZnQoKSwgbWFyZ2luTGVmdCgpICsgcmVjdC53aWR0aCgpICsgbWFyZ2luUmlnaHQoKSwg
bWFyZ2luVG9wKCkgKyByZWN0LmhlaWdodCgpICsgbWFyZ2luQm90dG9tKCkgfTsKKyAgICByZXR1
cm4geyByZWN0LnRvcCgpIC0gbWFyZ2luQmVmb3JlKCksIHJlY3QubGVmdCgpIC0gbWFyZ2luU3Rh
cnQoKSwgbWFyZ2luU3RhcnQoKSArIHJlY3Qud2lkdGgoKSArIG1hcmdpbkVuZCgpLCBtYXJnaW5C
ZWZvcmUoKSArIHJlY3QuaGVpZ2h0KCkgKyBtYXJnaW5BZnRlcigpIH07CiB9CiAKIFBvc2l0aW9u
SW5Db250ZXh0Um9vdCBGbG9hdEJveDo6aG9yaXpvbnRhbFBvc2l0aW9uQ2FuZGlkYXRlKEhvcml6
b250YWxDb25zdHJhaW50cyBob3Jpem9udGFsQ29uc3RyYWludHMpCiB7CiAgICAgYXV0byBwb3Np
dGlvbkNhbmRpZGF0ZSA9IGlzTGVmdEFsaWduZWQoKSA/ICpob3Jpem9udGFsQ29uc3RyYWludHMu
bGVmdCA6ICpob3Jpem9udGFsQ29uc3RyYWludHMucmlnaHQgLSByZWN0KCkud2lkdGgoKTsKLSAg
ICBwb3NpdGlvbkNhbmRpZGF0ZSArPSBtYXJnaW5MZWZ0KCk7CisgICAgcG9zaXRpb25DYW5kaWRh
dGUgKz0gbWFyZ2luU3RhcnQoKTsKIAogICAgIHJldHVybiB7IHBvc2l0aW9uQ2FuZGlkYXRlIH07
CiB9CiAKIFBvc2l0aW9uSW5Db250ZXh0Um9vdCBGbG9hdEJveDo6dmVydGljYWxQb3NpdGlvbkNh
bmRpZGF0ZShQb3NpdGlvbkluQ29udGV4dFJvb3QgdmVydGljYWxDb25zdHJhaW50KQogewotICAg
IHJldHVybiB7IHZlcnRpY2FsQ29uc3RyYWludCArIG1hcmdpblRvcCgpIH07CisgICAgcmV0dXJu
IHsgdmVydGljYWxDb25zdHJhaW50ICsgbWFyZ2luQmVmb3JlKCkgfTsKIH0KIAogUG9zaXRpb25J
bkNvbnRleHRSb290IEZsb2F0Qm94Ojppbml0aWFsVmVydGljYWxQb3NpdGlvbigpIGNvbnN0CiB7
CiAgICAgLy8gSW5jb21pbmcgZmxvYXQgY2Fubm90IGJlIHBsYWNlZCBoaWdoZXIgdGhhbiBleGlz
dGluZyBmbG9hdHMgKG1hcmdpbiBib3ggb2YgdGhlIGxhc3QgZmxvYXQpLgogICAgIC8vIFRha2Ug
dGhlIHN0YXRpYyBwb3NpdGlvbiAod2hlcmUgdGhlIGJveCB3b3VsZCBnbyBpZiBpdCB3YXNuJ3Qg
ZmxvYXRpbmcpIGFuZCBhZGp1c3QgaXQgd2l0aCB0aGUgbGFzdCBmbG9hdC4KLSAgICBhdXRvIHRv
cCA9IEZsb2F0QXZvaWRlcjo6aW5pdGlhbFZlcnRpY2FsUG9zaXRpb24oKSAtIG1hcmdpblRvcCgp
OworICAgIGF1dG8gdG9wID0gRmxvYXRBdm9pZGVyOjppbml0aWFsVmVydGljYWxQb3NpdGlvbigp
IC0gbWFyZ2luQmVmb3JlKCk7CiAgICAgaWYgKGF1dG8gbGFzdEZsb2F0ID0gZmxvYXRpbmdTdGF0
ZSgpLmxhc3QoKSkKICAgICAgICAgdG9wID0gc3RkOjptYXgodG9wLCBsYXN0RmxvYXQtPnJlY3RX
aXRoTWFyZ2luKCkudG9wKCkpOwotICAgIHRvcCArPSBtYXJnaW5Ub3AoKTsKKyAgICB0b3AgKz0g
bWFyZ2luQmVmb3JlKCk7CiAKICAgICByZXR1cm4geyB0b3AgfTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9mbG9hdHMvRmxvYXRpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mbG9hdHMvRmxvYXRpbmdDb250ZXh0LmNwcAppbmRleCAyNzUzMTk0MDM4
YTk4NmEwN2NlYjY5ZDBhMmQzYTUwMWQ2N2QwNmI4Li4xMzE0YTE3OGM4ZTc2OGY3OTJlMzAzZDY4
MDE3MmMwODZlZjBhMmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZmxvYXRz
L0Zsb2F0aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zsb2F0cy9G
bG9hdGluZ0NvbnRleHQuY3BwCkBAIC0xMjgsOSArMTI4LDkgQEAgUG9pbnQgRmxvYXRpbmdDb250
ZXh0Ojpwb3NpdGlvbkZvckZsb2F0KGNvbnN0IEJveCYgbGF5b3V0Qm94KSBjb25zdAogICAgICAg
ICAgICAgYXV0byYgY29udGFpbmluZ0Jsb2NrRGlzcGxheUJveCA9IGxheW91dFN0YXRlKCkuZGlz
cGxheUJveEZvckxheW91dEJveCgqbGF5b3V0Qm94LmNvbnRhaW5pbmdCbG9jaygpKTsKIAogICAg
ICAgICAgICAgaWYgKGxheW91dEJveC5pc0xlZnRGbG9hdGluZ1Bvc2l0aW9uZWQoKSkKLSAgICAg
ICAgICAgICAgICByZXR1cm4gUG9zaXRpb24geyBjb250YWluaW5nQmxvY2tEaXNwbGF5Qm94LmNv
bnRlbnRCb3hMZWZ0KCkgKyBkaXNwbGF5Qm94Lm1hcmdpbkxlZnQoKSB9OworICAgICAgICAgICAg
ICAgIHJldHVybiBQb3NpdGlvbiB7IGNvbnRhaW5pbmdCbG9ja0Rpc3BsYXlCb3guY29udGVudEJv
eExlZnQoKSArIGRpc3BsYXlCb3gubWFyZ2luU3RhcnQoKSB9OwogCi0gICAgICAgICAgICByZXR1
cm4gUG9zaXRpb24geyBjb250YWluaW5nQmxvY2tEaXNwbGF5Qm94LmNvbnRlbnRCb3hSaWdodCgp
IC0gZGlzcGxheUJveC5tYXJnaW5SaWdodCgpIC0gZGlzcGxheUJveC53aWR0aCgpIH07CisgICAg
ICAgICAgICByZXR1cm4gUG9zaXRpb24geyBjb250YWluaW5nQmxvY2tEaXNwbGF5Qm94LmNvbnRl
bnRCb3hSaWdodCgpIC0gZGlzcGxheUJveC5tYXJnaW5FbmQoKSAtIGRpc3BsYXlCb3gud2lkdGgo
KSB9OwogICAgICAgICB9OwogCiAgICAgICAgIC8vIE5vIGZsb2F0IGJveCBvbiB0aGUgY29udGV4
dCB5ZXQgLT4gYWxpZ24gaXQgd2l0aCB0aGUgY29udGFpbmluZyBibG9jaydzIGxlZnQvcmlnaHQg
ZWRnZS4KQEAgLTE4OCwyMyArMTg4LDIzIEBAIHN0ZDo6b3B0aW9uYWw8UG9zaXRpb24+IEZsb2F0
aW5nQ29udGV4dDo6dmVydGljYWxQb3NpdGlvbldpdGhDbGVhcmFuY2UoY29uc3QgQm94CiAgICAg
ICAgICAgICBhdXRvJiBwcmV2aW91c0luRmxvd0Rpc3BsYXlCb3ggPSBsYXlvdXRTdGF0ZS5kaXNw
bGF5Qm94Rm9yTGF5b3V0Qm94KCpwcmV2aW91c0luRmxvd1NpYmxpbmcpOwogCiAgICAgICAgICAg
ICAvLyBTaW5jZSB0aGUgcHJldmlvdXMgaW5mbG93IHNpYmxpbmcgaGFzIGFscmVhZHkgYmVlbiBs
YWlkIG91dCwgaXRzIG1hcmdpbiBpcyBjb2xsYXBzZWQgYnkgbm93LgotICAgICAgICAgICAgQVNT
RVJUKCFwcmV2aW91c0luRmxvd0Rpc3BsYXlCb3gubWFyZ2luQm90dG9tKCkpOwotICAgICAgICAg
ICAgYXV0byBjb2xsYXBzZWRNYXJnaW4gPSBkaXNwbGF5Qm94Lm1hcmdpblRvcCgpOworICAgICAg
ICAgICAgQVNTRVJUKCFwcmV2aW91c0luRmxvd0Rpc3BsYXlCb3gubWFyZ2luQWZ0ZXIoKSk7Cisg
ICAgICAgICAgICBhdXRvIGNvbGxhcHNlZE1hcmdpbiA9IGRpc3BsYXlCb3gubWFyZ2luQmVmb3Jl
KCk7CiAKICAgICAgICAgICAgIC8vIFJlc2V0IHByZXZpb3VzIGJvdHRvbSBhbmQgY3VycmVudCB0
b3AgbWFyZ2lucyB0byBub24tY29sbGFwc2luZy4KICAgICAgICAgICAgIGF1dG8gcHJldmlvdXNW
ZXJ0aWNhbE1hcmdpbiA9IHByZXZpb3VzSW5GbG93RGlzcGxheUJveC52ZXJ0aWNhbE1hcmdpbigp
OwotICAgICAgICAgICAgaWYgKHByZXZpb3VzVmVydGljYWxNYXJnaW4uY29sbGFwc2VkVmFsdWVz
KCkgJiYgcHJldmlvdXNWZXJ0aWNhbE1hcmdpbi5jb2xsYXBzZWRWYWx1ZXMoKS0+Ym90dG9tKSB7
Ci0gICAgICAgICAgICAgICAgcHJldmlvdXNWZXJ0aWNhbE1hcmdpbi5zZXRDb2xsYXBzZWRWYWx1
ZXMoeyBwcmV2aW91c1ZlcnRpY2FsTWFyZ2luLmNvbGxhcHNlZFZhbHVlcygpLT50b3AsIHsgfSB9
KTsKKyAgICAgICAgICAgIGlmIChwcmV2aW91c1ZlcnRpY2FsTWFyZ2luLmNvbGxhcHNlZFZhbHVl
cygpICYmIHByZXZpb3VzVmVydGljYWxNYXJnaW4uY29sbGFwc2VkVmFsdWVzKCktPmFmdGVyKSB7
CisgICAgICAgICAgICAgICAgcHJldmlvdXNWZXJ0aWNhbE1hcmdpbi5zZXRDb2xsYXBzZWRWYWx1
ZXMoeyBwcmV2aW91c1ZlcnRpY2FsTWFyZ2luLmNvbGxhcHNlZFZhbHVlcygpLT5iZWZvcmUsIHsg
fSB9KTsKICAgICAgICAgICAgICAgICBwcmV2aW91c0luRmxvd0Rpc3BsYXlCb3guc2V0VmVydGlj
YWxNYXJnaW4ocHJldmlvdXNWZXJ0aWNhbE1hcmdpbik7CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAvLyBGSVhNRTogY2hlY2sgaWYgY29sbGFwc2luZyB0aHJvdWdoIGhhcyBhbnl0aGluZyB0
byBkbyB3aXRoIHRoaXMuCiAgICAgICAgICAgICBhdXRvIHZlcnRpY2FsTWFyZ2luID0gZGlzcGxh
eUJveC52ZXJ0aWNhbE1hcmdpbigpOwotICAgICAgICAgICAgaWYgKHZlcnRpY2FsTWFyZ2luLmNv
bGxhcHNlZFZhbHVlcygpICYmIHZlcnRpY2FsTWFyZ2luLmNvbGxhcHNlZFZhbHVlcygpLT50b3Ap
IHsKLSAgICAgICAgICAgICAgICB2ZXJ0aWNhbE1hcmdpbi5zZXRDb2xsYXBzZWRWYWx1ZXMoeyB7
IH0sIHZlcnRpY2FsTWFyZ2luLmNvbGxhcHNlZFZhbHVlcygpLT5ib3R0b20gfSk7CisgICAgICAg
ICAgICBpZiAodmVydGljYWxNYXJnaW4uY29sbGFwc2VkVmFsdWVzKCkgJiYgdmVydGljYWxNYXJn
aW4uY29sbGFwc2VkVmFsdWVzKCktPmJlZm9yZSkgeworICAgICAgICAgICAgICAgIHZlcnRpY2Fs
TWFyZ2luLnNldENvbGxhcHNlZFZhbHVlcyh7IHsgfSwgdmVydGljYWxNYXJnaW4uY29sbGFwc2Vk
VmFsdWVzKCktPmFmdGVyIH0pOwogICAgICAgICAgICAgICAgIGRpc3BsYXlCb3guc2V0VmVydGlj
YWxNYXJnaW4odmVydGljYWxNYXJnaW4pOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBh
dXRvIG5vbkNvbGxhcHNlZE1hcmdpbiA9IHByZXZpb3VzSW5GbG93RGlzcGxheUJveC5tYXJnaW5C
b3R0b20oKSArIGRpc3BsYXlCb3gubWFyZ2luVG9wKCk7CisgICAgICAgICAgICBhdXRvIG5vbkNv
bGxhcHNlZE1hcmdpbiA9IHByZXZpb3VzSW5GbG93RGlzcGxheUJveC5tYXJnaW5BZnRlcigpICsg
ZGlzcGxheUJveC5tYXJnaW5CZWZvcmUoKTsKICAgICAgICAgICAgIGF1dG8gbWFyZ2luT2Zmc2V0
ID0gbm9uQ29sbGFwc2VkTWFyZ2luIC0gY29sbGFwc2VkTWFyZ2luOwogICAgICAgICAgICAgLy8g
TW92ZSB0aGUgYm94IHRvIHRoZSBwb3NpdGlvbiB3aGVyZSBpdCB3b3VsZCBiZSB3aXRoIG5vbi1j
b2xsYXBzZWQgbWFyZ2lucy4KICAgICAgICAgICAgIHJvb3RSZWxhdGl2ZVRvcCArPSBtYXJnaW5P
ZmZzZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGlu
Zy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5s
aW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKaW5kZXggYzdhZDljNWM5
ZDExNzA1ZmViNTc3OGFkNDA4NjNkNjM4NGM3MjZlNy4uZmI1NTRmZjE1ZDc5NjM4OTEyNmJhN2E4
MDE3Y2RiMWUzYWNmZDRlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGlu
ZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcApA
QCAtNDQyLDEwICs0NDIsMTAgQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6Y29sbGVj
dElubGluZUNvbnRlbnRGb3JTdWJ0cmVlKGNvbnN0IEJveCYgcm9vdCwgSW4KICAgICAgICAgY3Jl
YXRlQW5kQXBwZW5kSW5saW5lSXRlbSgpOwogICAgICAgICBhdXRvJiBpbmxpbmVSdW4gPSAqaW5s
aW5lRm9ybWF0dGluZ1N0YXRlLmlubGluZUNvbnRlbnQoKS5sYXN0KCk7CiAKLSAgICAgICAgYXV0
byBob3Jpem9udGFsTWFyZ2lucyA9IEdlb21ldHJ5Ojpjb21wdXRlZE5vbkNvbGxhcHNlZEhvcml6
b250YWxNYXJnaW5WYWx1ZShsYXlvdXRTdGF0ZSgpLCByb290KTsKKyAgICAgICAgYXV0byBob3Jp
em9udGFsTWFyZ2luID0gR2VvbWV0cnk6OmNvbXB1dGVkTm9uQ29sbGFwc2VkSG9yaXpvbnRhbE1h
cmdpblZhbHVlKGxheW91dFN0YXRlKCksIHJvb3QpOwogICAgICAgICBpbmxpbmVSdW4uYWRkRGV0
YWNoaW5nUnVsZSh7IElubGluZUl0ZW06OkRldGFjaGluZ1J1bGU6OkJyZWFrQXRTdGFydCwgSW5s
aW5lSXRlbTo6RGV0YWNoaW5nUnVsZTo6QnJlYWtBdEVuZCB9KTsKLSAgICAgICAgaW5saW5lUnVu
LmFkZE5vbkJyZWFrYWJsZVN0YXJ0KGhvcml6b250YWxNYXJnaW5zLmxlZnQpOwotICAgICAgICBp
bmxpbmVSdW4uYWRkTm9uQnJlYWthYmxlRW5kKGhvcml6b250YWxNYXJnaW5zLnJpZ2h0KTsKKyAg
ICAgICAgaW5saW5lUnVuLmFkZE5vbkJyZWFrYWJsZVN0YXJ0KGhvcml6b250YWxNYXJnaW4uc3Rh
cnQpOworICAgICAgICBpbmxpbmVSdW4uYWRkTm9uQnJlYWthYmxlRW5kKGhvcml6b250YWxNYXJn
aW4uZW5kKTsKICAgICAgICAgLy8gU2tpcCBmb3JtYXR0aW5nIHJvb3Qgc3VidHJlZS4gVGhleSBh
cmUgbm90IHBhcnQgb2YgdGhpcyBpbmxpbmUgZm9ybWF0dGluZyBjb250ZXh0LgogICAgICAgICBy
ZXR1cm47CiAgICAgfQpAQCAtNDY1LDcgKzQ2NSw3IEBAIHZvaWQgSW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQ6OmNvbGxlY3RJbmxpbmVDb250ZW50Rm9yU3VidHJlZShjb25zdCBCb3gmIHJvb3QsIElu
CiAgICAgLy8gRklYTUU6IFJldmlzaXQgdGhpcyB3aGVuIHdlIGZpZ3VyZWQgb3V0IGhvdyBpbmxp
bmUgYm94ZXMgZml0IHRoZSBkaXNwbGF5IHRyZWUuCiAgICAgYXV0byBwYWRkaW5nID0gR2VvbWV0
cnk6OmNvbXB1dGVkUGFkZGluZyhsYXlvdXRTdGF0ZSgpLCByb290KTsKICAgICBhdXRvIGJvcmRl
ciA9IEdlb21ldHJ5Ojpjb21wdXRlZEJvcmRlcihsYXlvdXRTdGF0ZSgpLCByb290KTsKLSAgICBh
dXRvIGhvcml6b250YWxNYXJnaW5zID0gR2VvbWV0cnk6OmNvbXB1dGVkTm9uQ29sbGFwc2VkSG9y
aXpvbnRhbE1hcmdpblZhbHVlKGxheW91dFN0YXRlKCksIHJvb3QpOworICAgIGF1dG8gaG9yaXpv
bnRhbE1hcmdpbiA9IEdlb21ldHJ5Ojpjb21wdXRlZE5vbkNvbGxhcHNlZEhvcml6b250YWxNYXJn
aW5WYWx1ZShsYXlvdXRTdGF0ZSgpLCByb290KTsKICAgICAvLyBTZXR1cCBicmVha2luZyBib3Vu
ZGFyaWVzIGZvciB0aGlzIHN1YnRyZWUuCiAgICAgYXV0byogbGFzdERlc2NlbmRhbnRJbmxpbmVC
b3ggPSBpbmxpbmVGb3JtYXR0aW5nU3RhdGUubGFzdElubGluZUl0ZW0oKTsKICAgICAvLyBFbXB0
eSBjb250YWluZXI/CkBAIC00NzUsMTMgKzQ3NSwxMyBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdD
b250ZXh0Ojpjb2xsZWN0SW5saW5lQ29udGVudEZvclN1YnRyZWUoY29uc3QgQm94JiByb290LCBJ
bgogICAgIGF1dG8gcm9vdEJyZWFrc0F0U3RhcnQgPSBbJl0gewogICAgICAgICBpZiAoJnJvb3Qg
PT0gJih0aGlzLT5yb290KCkpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBy
ZXR1cm4gKHBhZGRpbmcgJiYgcGFkZGluZy0+aG9yaXpvbnRhbC5sZWZ0KSB8fCBib3JkZXIuaG9y
aXpvbnRhbC5sZWZ0IHx8IGhvcml6b250YWxNYXJnaW5zLmxlZnQgfHwgcm9vdC5pc1Bvc2l0aW9u
ZWQoKTsKKyAgICAgICAgcmV0dXJuIChwYWRkaW5nICYmIHBhZGRpbmctPmhvcml6b250YWwubGVm
dCkgfHwgYm9yZGVyLmhvcml6b250YWwubGVmdCB8fCBob3Jpem9udGFsTWFyZ2luLnN0YXJ0IHx8
IHJvb3QuaXNQb3NpdGlvbmVkKCk7CiAgICAgfTsKIAogICAgIGF1dG8gcm9vdEJyZWFrc0F0RW5k
ID0gWyZdIHsKICAgICAgICAgaWYgKCZyb290ID09ICYodGhpcy0+cm9vdCgpKSkKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgcmV0dXJuIChwYWRkaW5nICYmIHBhZGRpbmctPmhv
cml6b250YWwucmlnaHQpIHx8IGJvcmRlci5ob3Jpem9udGFsLnJpZ2h0IHx8IGhvcml6b250YWxN
YXJnaW5zLnJpZ2h0IHx8IHJvb3QuaXNQb3NpdGlvbmVkKCk7CisgICAgICAgIHJldHVybiAocGFk
ZGluZyAmJiBwYWRkaW5nLT5ob3Jpem9udGFsLnJpZ2h0KSB8fCBib3JkZXIuaG9yaXpvbnRhbC5y
aWdodCB8fCBob3Jpem9udGFsTWFyZ2luLmVuZCB8fCByb290LmlzUG9zaXRpb25lZCgpOwogICAg
IH07CiAKICAgICBpZiAocm9vdEJyZWFrc0F0U3RhcnQoKSkgewpAQCAtNDk2LDcgKzQ5Niw3IEBA
IHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNvbGxlY3RJbmxpbmVDb250ZW50Rm9yU3Vi
dHJlZShjb25zdCBCb3gmIHJvb3QsIEluCiAKICAgICAgICAgQVNTRVJUKGZpcnN0RGVzY2VuZGFu
dElubGluZUJveCk7CiAgICAgICAgIGZpcnN0RGVzY2VuZGFudElubGluZUJveC0+YWRkRGV0YWNo
aW5nUnVsZShJbmxpbmVJdGVtOjpEZXRhY2hpbmdSdWxlOjpCcmVha0F0U3RhcnQpOwotICAgICAg
ICBhdXRvIHN0YXJ0T2Zmc2V0ID0gYm9yZGVyLmhvcml6b250YWwubGVmdCArIGhvcml6b250YWxN
YXJnaW5zLmxlZnQ7CisgICAgICAgIGF1dG8gc3RhcnRPZmZzZXQgPSBib3JkZXIuaG9yaXpvbnRh
bC5sZWZ0ICsgaG9yaXpvbnRhbE1hcmdpbi5zdGFydDsKICAgICAgICAgaWYgKHBhZGRpbmcpCiAg
ICAgICAgICAgICBzdGFydE9mZnNldCArPSBwYWRkaW5nLT5ob3Jpem9udGFsLmxlZnQ7CiAgICAg
ICAgIGZpcnN0RGVzY2VuZGFudElubGluZUJveC0+YWRkTm9uQnJlYWthYmxlU3RhcnQoc3RhcnRP
ZmZzZXQpOwpAQCAtNTA0LDcgKzUwNCw3IEBAIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6
OmNvbGxlY3RJbmxpbmVDb250ZW50Rm9yU3VidHJlZShjb25zdCBCb3gmIHJvb3QsIEluCiAKICAg
ICBpZiAocm9vdEJyZWFrc0F0RW5kKCkpIHsKICAgICAgICAgbGFzdERlc2NlbmRhbnRJbmxpbmVC
b3gtPmFkZERldGFjaGluZ1J1bGUoSW5saW5lSXRlbTo6RGV0YWNoaW5nUnVsZTo6QnJlYWtBdEVu
ZCk7Ci0gICAgICAgIGF1dG8gZW5kT2Zmc2V0ID0gYm9yZGVyLmhvcml6b250YWwucmlnaHQgKyBo
b3Jpem9udGFsTWFyZ2lucy5yaWdodDsKKyAgICAgICAgYXV0byBlbmRPZmZzZXQgPSBib3JkZXIu
aG9yaXpvbnRhbC5yaWdodCArIGhvcml6b250YWxNYXJnaW4uZW5kOwogICAgICAgICBpZiAocGFk
ZGluZykKICAgICAgICAgICAgIGVuZE9mZnNldCArPSBwYWRkaW5nLT5ob3Jpem9udGFsLnJpZ2h0
OwogICAgICAgICBsYXN0RGVzY2VuZGFudElubGluZUJveC0+YWRkTm9uQnJlYWthYmxlRW5kKGVu
ZE9mZnNldCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>