<?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>181429</bug_id>
          
          <creation_ts>2018-01-09 03:10:01 -0800</creation_ts>
          <short_desc>Provide a method to obtain a CSS value from a RenderStyle by CSSPropertyID</short_desc>
          <delta_ts>2018-01-09 05:12:17 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antoine Quint">graouts</reporter>
          <assigned_to name="Antoine Quint">graouts</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>koivisto</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1387184</commentid>
    <comment_count>0</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2018-01-09 03:10:01 -0800</bug_when>
    <thetext>Provide a method to obtain a CSS value from a RenderStyle by CSSPropertyID</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1387185</commentid>
    <comment_count>1</comment_count>
      <attachid>330806</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2018-01-09 03:14:43 -0800</bug_when>
    <thetext>Created attachment 330806
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1387206</commentid>
    <comment_count>2</comment_count>
      <attachid>330806</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-01-09 05:11:57 -0800</bug_when>
    <thetext>Comment on attachment 330806
Patch

Clearing flags on attachment: 330806

Committed r226627: &lt;https://trac.webkit.org/changeset/226627&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1387207</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-01-09 05:11:59 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1387208</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-01-09 05:12:17 -0800</bug_when>
    <thetext>&lt;rdar://problem/36374125&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>330806</attachid>
            <date>2018-01-09 03:14:43 -0800</date>
            <delta_ts>2018-01-09 05:11:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-181429-20180109121441.patch</filename>
            <type>text/plain</type>
            <size>99987</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI2NDg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzI4ODI1Y2VmNDMxNTIz
YjE2ODFkZjFmY2M4NmRmNjVhZjYxNzJkMC4uYWI2MmExZTZlOTdmMDI0MmY4ZmE5ZDE4M2RhOTU4
Mzg0NTAzZTUwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE4LTAxLTA5ICBBbnRv
aW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CisKKyAgICAgICAgUHJvdmlkZSBhIG1ldGhv
ZCB0byBvYnRhaW4gYSBDU1MgdmFsdWUgZnJvbSBhIFJlbmRlclN0eWxlIGJ5IENTU1Byb3BlcnR5
SUQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MTQy
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBL
ZXlmcmFtZUVmZmVjdC5nZXRLZXlmcmFtZXMoKSBtZXRob2QgZnJvbSBXZWIgQW5pbWF0aW9ucyBy
ZXF1aXJlcyB0aGF0IHdlIHJldHVybiBhbGwgc3R5bGVzIGFwcGxpZWQgYXQgYSBnaXZlbgorICAg
ICAgICBhbmltYXRpb24gZWZmZWN0IGtleWZyYW1lLiBXaGVuIHdlIHBhcnNlIGtleWZyYW1lcywg
d2UgY3JlYXRlIFJlbmRlclN0eWxlIG9iamVjdHMgdGhhdCBhcmUgc3RvcmVkIGluIGEgS2V5ZnJh
bWVMaXN0LAorICAgICAgICBhcyB3ZWxsIGFzIGEgbGlzdCBvZiBDU1NQcm9wZXJ0eUlEcyB0aGF0
IGFyZSBhbmltYXRlZC4gSW4gb3JkZXIgdG8gcHJvdmlkZSB0aGUgbGlzdCBvZiBhbmltYXRlZCBw
cm9wZXJ0aWVzIGFuZCB0aGVpcgorICAgICAgICB2YWx1ZXMgd2hlbiBjYWxsaW5nIGdldEtleWZy
YW1lcygpLCB3ZSBuZWVkIHRvIGJlIGFibGUgdG8gcmVhZCBiYWNrIGZyb20gdGhlIFJlbmRlclN0
eWxlIHdlIGNyZWF0ZS4gQXMgYSBmaXJzdCBzdGVwCisgICAgICAgIHRvd2FyZHMgdGhpcyBnb2Fs
LCB3ZSBmYWN0b3Igc29tZSBjb2RlIGluIENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnByb3BlcnR5
VmFsdWUoKSBvdXQgaW50byBhIG5ldyBtZXRob2QKKyAgICAgICAgQ29tcHV0ZWRTdHlsZUV4dHJh
Y3Rvcjo6dmFsdWVGb3JQcm9wZXJ0eWluU3R5bGUoKSB3aGljaCB0YWtlcyBpbiBhbiBleHBsaWNp
dCBSZW5kZXJTdHlsZS4KKworICAgICAgICBObyB0ZXN0IGFzIHRoaXMgaXMgc2ltcGx5IHJlZmFj
dG9yaW5nIHRoYXQgZG9lc24ndCBjaGFuZ2Ugb3IgYWRkIGJlaGF2aW9yLgorCisgICAgICAgICog
Y3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
b21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnZhbHVlRm9yUHJvcGVydHlpblN0eWxlKToKKyAgICAg
ICAgKiBjc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmg6CisKIDIwMTgtMDEtMDUgIERh
dmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZS1lbmFibGUgLVdj
YXN0LXF1YWwgaW4gV2ViQ29yZSBmb3IgQXBwbGUgcG9ydHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKaW5kZXggZDZiNDIxZGQ3MzA4
MzgxNTBlNWI3ZjI4YzViZWE1MmM2NmI1N2NlNy4uY2MxOGU0MGYyZWM4OTQ5NTZjMzFlOTBiYjE5
YTdhNGYyNWMzMTk1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVk
U3R5bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVk
U3R5bGVEZWNsYXJhdGlvbi5jcHAKQEAgLTI3MDAsMTggKzI3MDAsMjMgQEAgUmVmUHRyPENTU1Zh
bHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQg
cHJvcGVydHlJRCwKICAgICBpZiAoIXN0eWxlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAor
ICAgIHJldHVybiB2YWx1ZUZvclByb3BlcnR5aW5TdHlsZSgqc3R5bGUsIHByb3BlcnR5SUQsIHJl
bmRlcmVyKTsKK30KKworUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjp2
YWx1ZUZvclByb3BlcnR5aW5TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIENTU1Byb3Bl
cnR5SUQgcHJvcGVydHlJRCwgUmVuZGVyRWxlbWVudCogcmVuZGVyZXIpCit7CiAgICAgYXV0byYg
Y3NzVmFsdWVQb29sID0gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKTsKLSAgICBwcm9wZXJ0eUlE
ID0gQ1NTUHJvcGVydHk6OnJlc29sdmVEaXJlY3Rpb25Bd2FyZVByb3BlcnR5KHByb3BlcnR5SUQs
IHN0eWxlLT5kaXJlY3Rpb24oKSwgc3R5bGUtPndyaXRpbmdNb2RlKCkpOworICAgIHByb3BlcnR5
SUQgPSBDU1NQcm9wZXJ0eTo6cmVzb2x2ZURpcmVjdGlvbkF3YXJlUHJvcGVydHkocHJvcGVydHlJ
RCwgc3R5bGUuZGlyZWN0aW9uKCksIHN0eWxlLndyaXRpbmdNb2RlKCkpOwogCiAgICAgc3dpdGNo
IChwcm9wZXJ0eUlEKSB7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlJbnZhbGlkOgogICAgICAg
ICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcjoK
LSAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlQ29sb3JWYWx1ZShtX2FsbG93
VmlzaXRlZFN0eWxlPyBzdHlsZS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFj
a2dyb3VuZENvbG9yKSA6IHN0eWxlLT5iYWNrZ3JvdW5kQ29sb3IoKSk7CisgICAgICAgICAgICBy
ZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZUNvbG9yVmFsdWUobV9hbGxvd1Zpc2l0ZWRTdHlsZT8g
c3R5bGUudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKSA6
IHN0eWxlLmJhY2tncm91bmRDb2xvcigpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tn
cm91bmRJbWFnZToKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tJbWFnZTogewot
ICAgICAgICAgICAgYXV0byYgbGF5ZXJzID0gcHJvcGVydHlJRCA9PSBDU1NQcm9wZXJ0eVdlYmtp
dE1hc2tJbWFnZSA/IHN0eWxlLT5tYXNrTGF5ZXJzKCkgOiBzdHlsZS0+YmFja2dyb3VuZExheWVy
cygpOworICAgICAgICAgICAgYXV0byYgbGF5ZXJzID0gcHJvcGVydHlJRCA9PSBDU1NQcm9wZXJ0
eVdlYmtpdE1hc2tJbWFnZSA/IHN0eWxlLm1hc2tMYXllcnMoKSA6IHN0eWxlLmJhY2tncm91bmRM
YXllcnMoKTsKICAgICAgICAgICAgIGlmICghbGF5ZXJzLm5leHQoKSkgewogICAgICAgICAgICAg
ICAgIGlmIChsYXllcnMuaW1hZ2UoKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxheWVy
cy5pbWFnZSgpLT5jc3NWYWx1ZSgpOwpAQCAtMjcyOSwxNyArMjczNCwxNyBAQCBSZWZQdHI8Q1NT
VmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJ
RCBwcm9wZXJ0eUlELAogICAgICAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZFNpemU6CiAg
ICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCYWNrZ3JvdW5kU2l6ZToKICAgICAgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tTaXplOiB7Ci0gICAgICAgICAgICBhdXRvJiBsYXllcnMg
PSBwcm9wZXJ0eUlEID09IENTU1Byb3BlcnR5V2Via2l0TWFza1NpemUgPyBzdHlsZS0+bWFza0xh
eWVycygpIDogc3R5bGUtPmJhY2tncm91bmRMYXllcnMoKTsKKyAgICAgICAgICAgIGF1dG8mIGxh
eWVycyA9IHByb3BlcnR5SUQgPT0gQ1NTUHJvcGVydHlXZWJraXRNYXNrU2l6ZSA/IHN0eWxlLm1h
c2tMYXllcnMoKSA6IHN0eWxlLmJhY2tncm91bmRMYXllcnMoKTsKICAgICAgICAgICAgIGlmICgh
bGF5ZXJzLm5leHQoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmlsbFNpemVUb0NTU1ZhbHVl
KGxheWVycy5zaXplKCksICpzdHlsZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZpbGxTaXpl
VG9DU1NWYWx1ZShsYXllcnMuc2l6ZSgpLCBzdHlsZSk7CiAgICAgICAgICAgICBhdXRvIGxpc3Qg
PSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CiAgICAgICAgICAgICBmb3Ig
KGF1dG8qIGN1cnJMYXllciA9ICZsYXllcnM7IGN1cnJMYXllcjsgY3VyckxheWVyID0gY3Vyckxh
eWVyLT5uZXh0KCkpCi0gICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGZpbGxTaXplVG9DU1NW
YWx1ZShjdXJyTGF5ZXItPnNpemUoKSwgKnN0eWxlKSk7CisgICAgICAgICAgICAgICAgbGlzdC0+
YXBwZW5kKGZpbGxTaXplVG9DU1NWYWx1ZShjdXJyTGF5ZXItPnNpemUoKSwgc3R5bGUpKTsKICAg
ICAgICAgICAgIHJldHVybiBXVEZNb3ZlKGxpc3QpOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ug
Q1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0OgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0TWFza1JlcGVhdDogewotICAgICAgICAgICAgYXV0byYgbGF5ZXJzID0gcHJvcGVydHlJRCA9
PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXQgPyBzdHlsZS0+bWFza0xheWVycygpIDogc3R5
bGUtPmJhY2tncm91bmRMYXllcnMoKTsKKyAgICAgICAgICAgIGF1dG8mIGxheWVycyA9IHByb3Bl
cnR5SUQgPT0gQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0ID8gc3R5bGUubWFza0xheWVycygp
IDogc3R5bGUuYmFja2dyb3VuZExheWVycygpOwogICAgICAgICAgICAgaWYgKCFsYXllcnMubmV4
dCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBmaWxsUmVwZWF0VG9DU1NWYWx1ZShsYXllcnMu
cmVwZWF0WCgpLCBsYXllcnMucmVwZWF0WSgpKTsKICAgICAgICAgICAgIGF1dG8gbGlzdCA9IENT
U1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKQEAgLTI3NDgsNyArMjc1Myw3IEBA
IFJlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZShD
U1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsCiAgICAgICAgICAgICByZXR1cm4gV1RGTW92ZShsaXN0
KTsKICAgICAgICAgfQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza1NvdXJjZVR5
cGU6IHsKLSAgICAgICAgICAgIGF1dG8mIGxheWVycyA9IHN0eWxlLT5tYXNrTGF5ZXJzKCk7Cisg
ICAgICAgICAgICBhdXRvJiBsYXllcnMgPSBzdHlsZS5tYXNrTGF5ZXJzKCk7CiAgICAgICAgICAg
ICBpZiAoIWxheWVycy5uZXh0KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZpbGxTb3VyY2VU
eXBlVG9DU1NWYWx1ZShsYXllcnMubWFza1NvdXJjZVR5cGUoKSk7CiAgICAgICAgICAgICBhdXRv
IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CkBAIC0yNzU4LDcg
KzI3NjMsNyBAQCBSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnByb3Bl
cnR5VmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELAogICAgICAgICB9CiAgICAgICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRCYWNrZ3JvdW5kQ29tcG9zaXRlOgogICAgICAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0TWFza0NvbXBvc2l0ZTogewotICAgICAgICAgICAgYXV0byYgbGF5ZXJz
ID0gcHJvcGVydHlJRCA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tDb21wb3NpdGUgPyBzdHlsZS0+
bWFza0xheWVycygpIDogc3R5bGUtPmJhY2tncm91bmRMYXllcnMoKTsKKyAgICAgICAgICAgIGF1
dG8mIGxheWVycyA9IHByb3BlcnR5SUQgPT0gQ1NTUHJvcGVydHlXZWJraXRNYXNrQ29tcG9zaXRl
ID8gc3R5bGUubWFza0xheWVycygpIDogc3R5bGUuYmFja2dyb3VuZExheWVycygpOwogICAgICAg
ICAgICAgaWYgKCFsYXllcnMubmV4dCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1
ZVBvb2wuY3JlYXRlVmFsdWUobGF5ZXJzLmNvbXBvc2l0ZSgpKTsKICAgICAgICAgICAgIGF1dG8g
bGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKQEAgLTI3NjcsNyAr
Mjc3Miw3IEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6cHJvcGVy
dHlWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsCiAgICAgICAgICAgICByZXR1cm4gV1RG
TW92ZShsaXN0KTsKICAgICAgICAgfQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3Vu
ZEF0dGFjaG1lbnQ6IHsKLSAgICAgICAgICAgIGF1dG8mIGxheWVycyA9IHN0eWxlLT5iYWNrZ3Jv
dW5kTGF5ZXJzKCk7CisgICAgICAgICAgICBhdXRvJiBsYXllcnMgPSBzdHlsZS5iYWNrZ3JvdW5k
TGF5ZXJzKCk7CiAgICAgICAgICAgICBpZiAoIWxheWVycy5uZXh0KCkpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShsYXllcnMuYXR0YWNobWVudCgpKTsK
ICAgICAgICAgICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0
ZWQoKTsKQEAgLTI3ODEsNyArMjc4Niw3IEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHls
ZUV4dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsCiAgICAg
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCYWNrZ3JvdW5kT3JpZ2luOgogICAgICAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0TWFza0NsaXA6CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRNYXNrT3JpZ2luOiB7Ci0gICAgICAgICAgICBhdXRvJiBsYXllcnMgPSAocHJvcGVydHlJRCA9
PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tDbGlwIHx8IHByb3BlcnR5SUQgPT0gQ1NTUHJvcGVydHlX
ZWJraXRNYXNrT3JpZ2luKSA/IHN0eWxlLT5tYXNrTGF5ZXJzKCkgOiBzdHlsZS0+YmFja2dyb3Vu
ZExheWVycygpOworICAgICAgICAgICAgYXV0byYgbGF5ZXJzID0gKHByb3BlcnR5SUQgPT0gQ1NT
UHJvcGVydHlXZWJraXRNYXNrQ2xpcCB8fCBwcm9wZXJ0eUlEID09IENTU1Byb3BlcnR5V2Via2l0
TWFza09yaWdpbikgPyBzdHlsZS5tYXNrTGF5ZXJzKCkgOiBzdHlsZS5iYWNrZ3JvdW5kTGF5ZXJz
KCk7CiAgICAgICAgICAgICBib29sIGlzQ2xpcCA9IHByb3BlcnR5SUQgPT0gQ1NTUHJvcGVydHlC
YWNrZ3JvdW5kQ2xpcCB8fCBwcm9wZXJ0eUlEID09IENTU1Byb3BlcnR5V2Via2l0QmFja2dyb3Vu
ZENsaXAgfHwgcHJvcGVydHlJRCA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tDbGlwOwogICAgICAg
ICAgICAgaWYgKCFsYXllcnMubmV4dCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1
ZVBvb2wuY3JlYXRlVmFsdWUoaXNDbGlwID8gbGF5ZXJzLmNsaXAoKSA6IGxheWVycy5vcmlnaW4o
KSk7CkBAIC0yNzkyLDE4ICsyNzk3LDE4IEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHls
ZUV4dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsCiAgICAg
ICAgIH0KICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvbjoKICAgICAg
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvbjogewotICAgICAgICAgICAgYXV0
byYgbGF5ZXJzID0gcHJvcGVydHlJRCA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvbiA/
IHN0eWxlLT5tYXNrTGF5ZXJzKCkgOiBzdHlsZS0+YmFja2dyb3VuZExheWVycygpOworICAgICAg
ICAgICAgYXV0byYgbGF5ZXJzID0gcHJvcGVydHlJRCA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQ
b3NpdGlvbiA/IHN0eWxlLm1hc2tMYXllcnMoKSA6IHN0eWxlLmJhY2tncm91bmRMYXllcnMoKTsK
ICAgICAgICAgICAgIGlmICghbGF5ZXJzLm5leHQoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4g
Y3JlYXRlUG9zaXRpb25MaXN0Rm9yTGF5ZXIocHJvcGVydHlJRCwgbGF5ZXJzLCAqc3R5bGUpOwor
ICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVQb3NpdGlvbkxpc3RGb3JMYXllcihwcm9wZXJ0
eUlELCBsYXllcnMsIHN0eWxlKTsKIAogICAgICAgICAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVM
aXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOwogICAgICAgICAgICAgZm9yIChhdXRvKiBjdXJy
TGF5ZXIgPSAmbGF5ZXJzOyBjdXJyTGF5ZXI7IGN1cnJMYXllciA9IGN1cnJMYXllci0+bmV4dCgp
KQotICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjcmVhdGVQb3NpdGlvbkxpc3RGb3JMYXll
cihwcm9wZXJ0eUlELCAqY3VyckxheWVyLCAqc3R5bGUpKTsKKyAgICAgICAgICAgICAgICBsaXN0
LT5hcHBlbmQoY3JlYXRlUG9zaXRpb25MaXN0Rm9yTGF5ZXIocHJvcGVydHlJRCwgKmN1cnJMYXll
ciwgc3R5bGUpKTsKICAgICAgICAgICAgIHJldHVybiBXVEZNb3ZlKGxpc3QpOwogICAgICAgICB9
CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25YOgogICAgICAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uWDogewotICAgICAgICAgICAgYXV0byYg
bGF5ZXJzID0gcHJvcGVydHlJRCA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblggPyBz
dHlsZS0+bWFza0xheWVycygpIDogc3R5bGUtPmJhY2tncm91bmRMYXllcnMoKTsKKyAgICAgICAg
ICAgIGF1dG8mIGxheWVycyA9IHByb3BlcnR5SUQgPT0gQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9z
aXRpb25YID8gc3R5bGUubWFza0xheWVycygpIDogc3R5bGUuYmFja2dyb3VuZExheWVycygpOwog
ICAgICAgICAgICAgaWYgKCFsYXllcnMubmV4dCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBj
c3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUobGF5ZXJzLnhQb3NpdGlvbigpKTsKIApAQCAtMjgxNSw3
ICsyODIwLDcgQEAgUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9w
ZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwKICAgICAgICAgfQogICAgICAgICBj
YXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWToKICAgICAgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblk6IHsKLSAgICAgICAgICAgIGF1dG8mIGxheWVycyA9IHBy
b3BlcnR5SUQgPT0gQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25ZID8gc3R5bGUtPm1hc2tM
YXllcnMoKSA6IHN0eWxlLT5iYWNrZ3JvdW5kTGF5ZXJzKCk7CisgICAgICAgICAgICBhdXRvJiBs
YXllcnMgPSBwcm9wZXJ0eUlEID09IENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uWSA/IHN0
eWxlLm1hc2tMYXllcnMoKSA6IHN0eWxlLmJhY2tncm91bmRMYXllcnMoKTsKICAgICAgICAgICAg
IGlmICghbGF5ZXJzLm5leHQoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29s
LmNyZWF0ZVZhbHVlKGxheWVycy55UG9zaXRpb24oKSk7CiAKQEAgLTI4MjYsMTMwICsyODMxLDEz
MCBAQCBSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnByb3BlcnR5VmFs
dWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELAogICAgICAgICAgICAgcmV0dXJuIFdURk1vdmUo
bGlzdCk7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckNvbGxhcHNl
OgotICAgICAgICAgICAgaWYgKHN0eWxlLT5ib3JkZXJDb2xsYXBzZSgpKQorICAgICAgICAgICAg
aWYgKHN0eWxlLmJvcmRlckNvbGxhcHNlKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGNzc1Zh
bHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVDb2xsYXBzZSk7CiAgICAgICAg
ICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZVNl
cGFyYXRlKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclNwYWNpbmc6IHsKICAgICAg
ICAgICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsK
LSAgICAgICAgICAgIGxpc3QtPmFwcGVuZCh6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHN0eWxlLT5o
b3Jpem9udGFsQm9yZGVyU3BhY2luZygpLCAqc3R5bGUpKTsKLSAgICAgICAgICAgIGxpc3QtPmFw
cGVuZCh6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHN0eWxlLT52ZXJ0aWNhbEJvcmRlclNwYWNpbmco
KSwgKnN0eWxlKSk7CisgICAgICAgICAgICBsaXN0LT5hcHBlbmQoem9vbUFkanVzdGVkUGl4ZWxW
YWx1ZShzdHlsZS5ob3Jpem9udGFsQm9yZGVyU3BhY2luZygpLCBzdHlsZSkpOworICAgICAgICAg
ICAgbGlzdC0+YXBwZW5kKHpvb21BZGp1c3RlZFBpeGVsVmFsdWUoc3R5bGUudmVydGljYWxCb3Jk
ZXJTcGFjaW5nKCksIHN0eWxlKSk7CiAgICAgICAgICAgICByZXR1cm4gV1RGTW92ZShsaXN0KTsK
ICAgICAgICAgfQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVySG9yaXpvbnRh
bFNwYWNpbmc6Ci0gICAgICAgICAgICByZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZShzdHls
ZS0+aG9yaXpvbnRhbEJvcmRlclNwYWNpbmcoKSwgKnN0eWxlKTsKKyAgICAgICAgICAgIHJldHVy
biB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHN0eWxlLmhvcml6b250YWxCb3JkZXJTcGFjaW5nKCks
IHN0eWxlKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclZlcnRpY2FsU3Bh
Y2luZzoKLSAgICAgICAgICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHN0eWxlLT52
ZXJ0aWNhbEJvcmRlclNwYWNpbmcoKSwgKnN0eWxlKTsKKyAgICAgICAgICAgIHJldHVybiB6b29t
QWRqdXN0ZWRQaXhlbFZhbHVlKHN0eWxlLnZlcnRpY2FsQm9yZGVyU3BhY2luZygpLCBzdHlsZSk7
CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJJbWFnZVNvdXJjZToKLSAgICAgICAgICAg
IGlmIChzdHlsZS0+Ym9yZGVySW1hZ2VTb3VyY2UoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4g
c3R5bGUtPmJvcmRlckltYWdlU291cmNlKCktPmNzc1ZhbHVlKCk7CisgICAgICAgICAgICBpZiAo
c3R5bGUuYm9yZGVySW1hZ2VTb3VyY2UoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gc3R5bGUu
Ym9yZGVySW1hZ2VTb3VyY2UoKS0+Y3NzVmFsdWUoKTsKICAgICAgICAgICAgIHJldHVybiBjc3NW
YWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTm9uZSk7CiAgICAgICAgIGNh
c2UgQ1NTUHJvcGVydHlCb3JkZXJUb3BDb2xvcjoKLSAgICAgICAgICAgIHJldHVybiBtX2FsbG93
VmlzaXRlZFN0eWxlID8gY3NzVmFsdWVQb29sLmNyZWF0ZUNvbG9yVmFsdWUoc3R5bGUtPnZpc2l0
ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJvcmRlclRvcENvbG9yKSkgOiBjdXJyZW50Q29s
b3JPclZhbGlkQ29sb3Ioc3R5bGUsIHN0eWxlLT5ib3JkZXJUb3BDb2xvcigpKTsKKyAgICAgICAg
ICAgIHJldHVybiBtX2FsbG93VmlzaXRlZFN0eWxlID8gY3NzVmFsdWVQb29sLmNyZWF0ZUNvbG9y
VmFsdWUoc3R5bGUudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Qm9yZGVyVG9wQ29s
b3IpKSA6IGN1cnJlbnRDb2xvck9yVmFsaWRDb2xvcigmc3R5bGUsIHN0eWxlLmJvcmRlclRvcENv
bG9yKCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRDb2xvcjoKLSAgICAg
ICAgICAgIHJldHVybiBtX2FsbG93VmlzaXRlZFN0eWxlID8gY3NzVmFsdWVQb29sLmNyZWF0ZUNv
bG9yVmFsdWUoc3R5bGUtPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJvcmRlclJp
Z2h0Q29sb3IpKSA6IGN1cnJlbnRDb2xvck9yVmFsaWRDb2xvcihzdHlsZSwgc3R5bGUtPmJvcmRl
clJpZ2h0Q29sb3IoKSk7CisgICAgICAgICAgICByZXR1cm4gbV9hbGxvd1Zpc2l0ZWRTdHlsZSA/
IGNzc1ZhbHVlUG9vbC5jcmVhdGVDb2xvclZhbHVlKHN0eWxlLnZpc2l0ZWREZXBlbmRlbnRDb2xv
cihDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0Q29sb3IpKSA6IGN1cnJlbnRDb2xvck9yVmFsaWRDb2xv
cigmc3R5bGUsIHN0eWxlLmJvcmRlclJpZ2h0Q29sb3IoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJv
cGVydHlCb3JkZXJCb3R0b21Db2xvcjoKLSAgICAgICAgICAgIHJldHVybiBtX2FsbG93VmlzaXRl
ZFN0eWxlID8gY3NzVmFsdWVQb29sLmNyZWF0ZUNvbG9yVmFsdWUoc3R5bGUtPnZpc2l0ZWREZXBl
bmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbUNvbG9yKSkgOiBjdXJyZW50Q29sb3JP
clZhbGlkQ29sb3Ioc3R5bGUsIHN0eWxlLT5ib3JkZXJCb3R0b21Db2xvcigpKTsKKyAgICAgICAg
ICAgIHJldHVybiBtX2FsbG93VmlzaXRlZFN0eWxlID8gY3NzVmFsdWVQb29sLmNyZWF0ZUNvbG9y
VmFsdWUoc3R5bGUudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Qm9yZGVyQm90dG9t
Q29sb3IpKSA6IGN1cnJlbnRDb2xvck9yVmFsaWRDb2xvcigmc3R5bGUsIHN0eWxlLmJvcmRlckJv
dHRvbUNvbG9yKCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyTGVmdENvbG9yOgot
ICAgICAgICAgICAgcmV0dXJuIG1fYWxsb3dWaXNpdGVkU3R5bGUgPyBjc3NWYWx1ZVBvb2wuY3Jl
YXRlQ29sb3JWYWx1ZShzdHlsZS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Qm9y
ZGVyTGVmdENvbG9yKSkgOiBjdXJyZW50Q29sb3JPclZhbGlkQ29sb3Ioc3R5bGUsIHN0eWxlLT5i
b3JkZXJMZWZ0Q29sb3IoKSk7CisgICAgICAgICAgICByZXR1cm4gbV9hbGxvd1Zpc2l0ZWRTdHls
ZSA/IGNzc1ZhbHVlUG9vbC5jcmVhdGVDb2xvclZhbHVlKHN0eWxlLnZpc2l0ZWREZXBlbmRlbnRD
b2xvcihDU1NQcm9wZXJ0eUJvcmRlckxlZnRDb2xvcikpIDogY3VycmVudENvbG9yT3JWYWxpZENv
bG9yKCZzdHlsZSwgc3R5bGUuYm9yZGVyTGVmdENvbG9yKCkpOwogICAgICAgICBjYXNlIENTU1By
b3BlcnR5Qm9yZGVyVG9wU3R5bGU6Ci0gICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNy
ZWF0ZVZhbHVlKHN0eWxlLT5ib3JkZXJUb3BTdHlsZSgpKTsKKyAgICAgICAgICAgIHJldHVybiBj
c3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUuYm9yZGVyVG9wU3R5bGUoKSk7CiAgICAgICAg
IGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJSaWdodFN0eWxlOgotICAgICAgICAgICAgcmV0dXJuIGNz
c1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzdHlsZS0+Ym9yZGVyUmlnaHRTdHlsZSgpKTsKKyAgICAg
ICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUuYm9yZGVyUmlnaHRT
dHlsZSgpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVN0eWxlOgotICAg
ICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzdHlsZS0+Ym9yZGVyQm90
dG9tU3R5bGUoKSk7CisgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVl
KHN0eWxlLmJvcmRlckJvdHRvbVN0eWxlKCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5Qm9y
ZGVyTGVmdFN0eWxlOgotICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1
ZShzdHlsZS0+Ym9yZGVyTGVmdFN0eWxlKCkpOworICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVl
UG9vbC5jcmVhdGVWYWx1ZShzdHlsZS5ib3JkZXJMZWZ0U3R5bGUoKSk7CiAgICAgICAgIGNhc2Ug
Q1NTUHJvcGVydHlCb3JkZXJUb3BXaWR0aDoKLSAgICAgICAgICAgIHJldHVybiB6b29tQWRqdXN0
ZWRQaXhlbFZhbHVlKHN0eWxlLT5ib3JkZXJUb3BXaWR0aCgpLCAqc3R5bGUpOworICAgICAgICAg
ICAgcmV0dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFsdWUoc3R5bGUuYm9yZGVyVG9wV2lkdGgoKSwg
c3R5bGUpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRXaWR0aDoKLSAgICAg
ICAgICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHN0eWxlLT5ib3JkZXJSaWdodFdp
ZHRoKCksICpzdHlsZSk7CisgICAgICAgICAgICByZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1
ZShzdHlsZS5ib3JkZXJSaWdodFdpZHRoKCksIHN0eWxlKTsKICAgICAgICAgY2FzZSBDU1NQcm9w
ZXJ0eUJvcmRlckJvdHRvbVdpZHRoOgotICAgICAgICAgICAgcmV0dXJuIHpvb21BZGp1c3RlZFBp
eGVsVmFsdWUoc3R5bGUtPmJvcmRlckJvdHRvbVdpZHRoKCksICpzdHlsZSk7CisgICAgICAgICAg
ICByZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZShzdHlsZS5ib3JkZXJCb3R0b21XaWR0aCgp
LCBzdHlsZSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0V2lkdGg6Ci0gICAg
ICAgICAgICByZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZShzdHlsZS0+Ym9yZGVyTGVmdFdp
ZHRoKCksICpzdHlsZSk7CisgICAgICAgICAgICByZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1
ZShzdHlsZS5ib3JkZXJMZWZ0V2lkdGgoKSwgc3R5bGUpOwogICAgICAgICBjYXNlIENTU1Byb3Bl
cnR5Qm90dG9tOgotICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uT2Zmc2V0VmFsdWUoKnN0eWxl
LCBDU1NQcm9wZXJ0eUJvdHRvbSwgcmVuZGVyZXIpOworICAgICAgICAgICAgcmV0dXJuIHBvc2l0
aW9uT2Zmc2V0VmFsdWUoc3R5bGUsIENTU1Byb3BlcnR5Qm90dG9tLCByZW5kZXJlcik7CiAgICAg
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hBbGlnbjoKLSAgICAgICAgICAgIHJldHVybiBj
c3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUtPmJveEFsaWduKCkpOworICAgICAgICAgICAg
cmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzdHlsZS5ib3hBbGlnbigpKTsKICNpZiBF
TkFCTEUoQ1NTX0JPWF9ERUNPUkFUSU9OX0JSRUFLKQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0Qm94RGVjb3JhdGlvbkJyZWFrOgotICAgICAgICAgICAgaWYgKHN0eWxlLT5ib3hEZWNv
cmF0aW9uQnJlYWsoKSA9PSBEU0xJQ0UpCisgICAgICAgICAgICBpZiAoc3R5bGUuYm94RGVjb3Jh
dGlvbkJyZWFrKCkgPT0gRFNMSUNFKQogICAgICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBv
b2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlU2xpY2UpOwogICAgICAgICByZXR1cm4g
Y3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUNsb25lKTsKICNlbmRp
ZgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94RGlyZWN0aW9uOgotICAgICAgICAg
ICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzdHlsZS0+Ym94RGlyZWN0aW9uKCkp
OworICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzdHlsZS5ib3hE
aXJlY3Rpb24oKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hGbGV4OgotICAg
ICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzdHlsZS0+Ym94RmxleCgp
LCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUik7CisgICAgICAgICAgICByZXR1cm4gY3Nz
VmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLmJveEZsZXgoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19OVU1CRVIpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94RmxleEdyb3Vw
OgotICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzdHlsZS0+Ym94
RmxleEdyb3VwKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKTsKKyAgICAgICAgICAg
IHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUuYm94RmxleEdyb3VwKCksIENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdEJveExpbmVzOgotICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1
ZShzdHlsZS0+Ym94TGluZXMoKSk7CisgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNy
ZWF0ZVZhbHVlKHN0eWxlLmJveExpbmVzKCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0Qm94T3JkaW5hbEdyb3VwOgotICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVh
dGVWYWx1ZShzdHlsZS0+Ym94T3JkaW5hbEdyb3VwKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
TlVNQkVSKTsKKyAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5
bGUuYm94T3JkaW5hbEdyb3VwKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKTsKICAg
ICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveE9yaWVudDoKLSAgICAgICAgICAgIHJldHVy
biBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUtPmJveE9yaWVudCgpKTsKKyAgICAgICAg
ICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUuYm94T3JpZW50KCkpOwog
ICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94UGFjazoKLSAgICAgICAgICAgIHJldHVy
biBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUtPmJveFBhY2soKSk7CisgICAgICAgICAg
ICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLmJveFBhY2soKSk7CiAgICAg
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hSZWZsZWN0OgotICAgICAgICAgICAgcmV0dXJu
IHZhbHVlRm9yUmVmbGVjdGlvbihzdHlsZS0+Ym94UmVmbGVjdCgpLCAqc3R5bGUpOworICAgICAg
ICAgICAgcmV0dXJuIHZhbHVlRm9yUmVmbGVjdGlvbihzdHlsZS5ib3hSZWZsZWN0KCksIHN0eWxl
KTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJveFNoYWRvdzoKICAgICAgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdEJveFNoYWRvdzoKLSAgICAgICAgICAgIHJldHVybiB2YWx1ZUZvclNoYWRv
dyhzdHlsZS0+Ym94U2hhZG93KCksIHByb3BlcnR5SUQsICpzdHlsZSk7CisgICAgICAgICAgICBy
ZXR1cm4gdmFsdWVGb3JTaGFkb3coc3R5bGUuYm94U2hhZG93KCksIHByb3BlcnR5SUQsIHN0eWxl
KTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUNhcHRpb25TaWRlOgotICAgICAgICAgICAgcmV0
dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzdHlsZS0+Y2FwdGlvblNpZGUoKSk7CisgICAg
ICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLmNhcHRpb25TaWRl
KCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5Q2FyZXRDb2xvcjoKLSAgICAgICAgICAgIHJl
dHVybiBtX2FsbG93VmlzaXRlZFN0eWxlID8gY3NzVmFsdWVQb29sLmNyZWF0ZUNvbG9yVmFsdWUo
c3R5bGUtPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNhcmV0Q29sb3IpKSA6IGN1
cnJlbnRDb2xvck9yVmFsaWRDb2xvcihzdHlsZSwgc3R5bGUtPmNhcmV0Q29sb3IoKSk7CisgICAg
ICAgICAgICByZXR1cm4gbV9hbGxvd1Zpc2l0ZWRTdHlsZSA/IGNzc1ZhbHVlUG9vbC5jcmVhdGVD
b2xvclZhbHVlKHN0eWxlLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNhcmV0Q29s
b3IpKSA6IGN1cnJlbnRDb2xvck9yVmFsaWRDb2xvcigmc3R5bGUsIHN0eWxlLmNhcmV0Q29sb3Io
KSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlDbGVhcjoKLSAgICAgICAgICAgIHJldHVybiBj
c3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUtPmNsZWFyKCkpOworICAgICAgICAgICAgcmV0
dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzdHlsZS5jbGVhcigpKTsKICAgICAgICAgY2Fz
ZSBDU1NQcm9wZXJ0eUNvbG9yOgotICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVh
dGVDb2xvclZhbHVlKG1fYWxsb3dWaXNpdGVkU3R5bGUgPyBzdHlsZS0+dmlzaXRlZERlcGVuZGVu
dENvbG9yKENTU1Byb3BlcnR5Q29sb3IpIDogc3R5bGUtPmNvbG9yKCkpOworICAgICAgICAgICAg
cmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVDb2xvclZhbHVlKG1fYWxsb3dWaXNpdGVkU3R5bGUg
PyBzdHlsZS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvcikgOiBzdHlsZS5j
b2xvcigpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFByaW50Q29sb3JBZGp1c3Q6
Ci0gICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLT5wcmlu
dENvbG9yQWRqdXN0KCkpOworICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVW
YWx1ZShzdHlsZS5wcmludENvbG9yQWRqdXN0KCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0Q29sdW1uQXhpczoKLSAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRl
VmFsdWUoc3R5bGUtPmNvbHVtbkF4aXMoKSk7CisgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQ
b29sLmNyZWF0ZVZhbHVlKHN0eWxlLmNvbHVtbkF4aXMoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJv
cGVydHlDb2x1bW5Db3VudDoKLSAgICAgICAgICAgIGlmIChzdHlsZS0+aGFzQXV0b0NvbHVtbkNv
dW50KCkpCisgICAgICAgICAgICBpZiAoc3R5bGUuaGFzQXV0b0NvbHVtbkNvdW50KCkpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NT
VmFsdWVBdXRvKTsKLSAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUo
c3R5bGUtPmNvbHVtbkNvdW50KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKTsKKyAg
ICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUuY29sdW1uQ291
bnQoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpOwogICAgICAgICBjYXNlIENTU1By
b3BlcnR5Q29sdW1uRmlsbDoKLSAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRl
VmFsdWUoc3R5bGUtPmNvbHVtbkZpbGwoKSk7CisgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQ
b29sLmNyZWF0ZVZhbHVlKHN0eWxlLmNvbHVtbkZpbGwoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJv
cGVydHlDb2x1bW5HYXA6Ci0gICAgICAgICAgICBpZiAoc3R5bGUtPmhhc05vcm1hbENvbHVtbkdh
cCgpKQorICAgICAgICAgICAgaWYgKHN0eWxlLmhhc05vcm1hbENvbHVtbkdhcCgpKQogICAgICAg
ICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1Zh
bHVlTm9ybWFsKTsKLSAgICAgICAgICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHN0
eWxlLT5jb2x1bW5HYXAoKSwgKnN0eWxlKTsKKyAgICAgICAgICAgIHJldHVybiB6b29tQWRqdXN0
ZWRQaXhlbFZhbHVlKHN0eWxlLmNvbHVtbkdhcCgpLCBzdHlsZSk7CiAgICAgICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRDb2x1bW5Qcm9ncmVzc2lvbjoKLSAgICAgICAgICAgIHJldHVybiBjc3NW
YWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUtPmNvbHVtblByb2dyZXNzaW9uKCkpOworICAgICAg
ICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzdHlsZS5jb2x1bW5Qcm9ncmVz
c2lvbigpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUNvbHVtblJ1bGVDb2xvcjoKLSAgICAg
ICAgICAgIHJldHVybiBtX2FsbG93VmlzaXRlZFN0eWxlID8gY3NzVmFsdWVQb29sLmNyZWF0ZUNv
bG9yVmFsdWUoc3R5bGUtPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eU91dGxpbmVD
b2xvcikpIDogY3VycmVudENvbG9yT3JWYWxpZENvbG9yKHN0eWxlLCBzdHlsZS0+Y29sdW1uUnVs
ZUNvbG9yKCkpOworICAgICAgICAgICAgcmV0dXJuIG1fYWxsb3dWaXNpdGVkU3R5bGUgPyBjc3NW
YWx1ZVBvb2wuY3JlYXRlQ29sb3JWYWx1ZShzdHlsZS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NT
UHJvcGVydHlPdXRsaW5lQ29sb3IpKSA6IGN1cnJlbnRDb2xvck9yVmFsaWRDb2xvcigmc3R5bGUs
IHN0eWxlLmNvbHVtblJ1bGVDb2xvcigpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUNvbHVt
blJ1bGVTdHlsZToKLSAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUo
c3R5bGUtPmNvbHVtblJ1bGVTdHlsZSgpKTsKKyAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBv
b2wuY3JlYXRlVmFsdWUoc3R5bGUuY29sdW1uUnVsZVN0eWxlKCkpOwogICAgICAgICBjYXNlIENT
U1Byb3BlcnR5Q29sdW1uUnVsZVdpZHRoOgotICAgICAgICAgICAgcmV0dXJuIHpvb21BZGp1c3Rl
ZFBpeGVsVmFsdWUoc3R5bGUtPmNvbHVtblJ1bGVXaWR0aCgpLCAqc3R5bGUpOworICAgICAgICAg
ICAgcmV0dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFsdWUoc3R5bGUuY29sdW1uUnVsZVdpZHRoKCks
IHN0eWxlKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUNvbHVtblNwYW46Ci0gICAgICAgICAg
ICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShzdHlsZS0+Y29sdW1u
U3BhbigpID8gQ1NTVmFsdWVBbGwgOiBDU1NWYWx1ZU5vbmUpOworICAgICAgICAgICAgcmV0dXJu
IGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoc3R5bGUuY29sdW1uU3BhbigpID8g
Q1NTVmFsdWVBbGwgOiBDU1NWYWx1ZU5vbmUpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0Q29sdW1uQnJlYWtBZnRlcjoKLSAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3Jl
YXRlVmFsdWUoY29udmVydFRvQ29sdW1uQnJlYWsoc3R5bGUtPmJyZWFrQWZ0ZXIoKSkpOworICAg
ICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShjb252ZXJ0VG9Db2x1bW5C
cmVhayhzdHlsZS5icmVha0FmdGVyKCkpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dENvbHVtbkJyZWFrQmVmb3JlOgotICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVh
dGVWYWx1ZShjb252ZXJ0VG9Db2x1bW5CcmVhayhzdHlsZS0+YnJlYWtCZWZvcmUoKSkpOworICAg
ICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShjb252ZXJ0VG9Db2x1bW5C
cmVhayhzdHlsZS5icmVha0JlZm9yZSgpKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRDb2x1bW5CcmVha0luc2lkZToKLSAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3Jl
YXRlVmFsdWUoY29udmVydFRvQ29sdW1uQnJlYWsoc3R5bGUtPmJyZWFrSW5zaWRlKCkpKTsKKyAg
ICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoY29udmVydFRvQ29sdW1u
QnJlYWsoc3R5bGUuYnJlYWtJbnNpZGUoKSkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5Q29s
dW1uV2lkdGg6Ci0gICAgICAgICAgICBpZiAoc3R5bGUtPmhhc0F1dG9Db2x1bW5XaWR0aCgpKQor
ICAgICAgICAgICAgaWYgKHN0eWxlLmhhc0F1dG9Db2x1bW5XaWR0aCgpKQogICAgICAgICAgICAg
ICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlQXV0
byk7Ci0gICAgICAgICAgICByZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZShzdHlsZS0+Y29s
dW1uV2lkdGgoKSwgKnN0eWxlKTsKKyAgICAgICAgICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhl
bFZhbHVlKHN0eWxlLmNvbHVtbldpZHRoKCksIHN0eWxlKTsKICAgICAgICAgY2FzZSBDU1NQcm9w
ZXJ0eVRhYlNpemU6Ci0gICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVl
KHN0eWxlLT50YWJTaXplKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKTsKKyAgICAg
ICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUudGFiU2l6ZSgpLCBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUik7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlD
dXJzb3I6IHsKICAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3Q7Ci0gICAgICAg
ICAgICBhdXRvKiBjdXJzb3JzID0gc3R5bGUtPmN1cnNvcnMoKTsKKyAgICAgICAgICAgIGF1dG8q
IGN1cnNvcnMgPSBzdHlsZS5jdXJzb3JzKCk7CiAgICAgICAgICAgICBpZiAoY3Vyc29ycyAmJiBj
dXJzb3JzLT5zaXplKCkgPiAwKSB7CiAgICAgICAgICAgICAgICAgbGlzdCA9IENTU1ZhbHVlTGlz
dDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgY3Vyc29ycy0+c2l6ZSgpOyArK2kpCiAgICAgICAgICAgICAgICAgICAgIGlm
IChTdHlsZUltYWdlKiBpbWFnZSA9IGN1cnNvcnMtPmF0KGkpLmltYWdlKCkpCiAgICAgICAgICAg
ICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoaW1hZ2UtPmNzc1ZhbHVlKCkpOwogICAgICAgICAg
ICAgfQotICAgICAgICAgICAgYXV0byB2YWx1ZSA9IGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShz
dHlsZS0+Y3Vyc29yKCkpOworICAgICAgICAgICAgYXV0byB2YWx1ZSA9IGNzc1ZhbHVlUG9vbC5j
cmVhdGVWYWx1ZShzdHlsZS5jdXJzb3IoKSk7CiAgICAgICAgICAgICBpZiAobGlzdCkgewogICAg
ICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChXVEZNb3ZlKHZhbHVlKSk7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuIGxpc3Q7CkBAIC0yOTU4LDQwICsyOTYzLDQwIEBAIFJlZlB0cjxDU1NWYWx1ZT4g
Q29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3Bl
cnR5SUQsCiAgICAgICAgIH0KICNpZiBFTkFCTEUoQ1VSU09SX1ZJU0lCSUxJVFkpCiAgICAgICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDdXJzb3JWaXNpYmlsaXR5OgotICAgICAgICAgICAgcmV0
dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzdHlsZS0+Y3Vyc29yVmlzaWJpbGl0eSgpKTsK
KyAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUuY3Vyc29y
VmlzaWJpbGl0eSgpKTsKICNlbmRpZgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5RGlyZWN0aW9u
OgotICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzdHlsZS0+ZGly
ZWN0aW9uKCkpOworICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShz
dHlsZS5kaXJlY3Rpb24oKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlEaXNwbGF5OgotICAg
ICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzdHlsZS0+ZGlzcGxheSgp
KTsKKyAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUuZGlz
cGxheSgpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUVtcHR5Q2VsbHM6Ci0gICAgICAgICAg
ICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLT5lbXB0eUNlbGxzKCkpOwor
ICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzdHlsZS5lbXB0eUNl
bGxzKCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5QWxpZ25Db250ZW50OgotICAgICAgICAg
ICAgcmV0dXJuIHZhbHVlRm9yQ29udGVudFBvc2l0aW9uQW5kRGlzdHJpYnV0aW9uV2l0aE92ZXJm
bG93QWxpZ25tZW50KHN0eWxlLT5hbGlnbkNvbnRlbnQoKSwgQ1NTVmFsdWVTdHJldGNoKTsKKyAg
ICAgICAgICAgIHJldHVybiB2YWx1ZUZvckNvbnRlbnRQb3NpdGlvbkFuZERpc3RyaWJ1dGlvbldp
dGhPdmVyZmxvd0FsaWdubWVudChzdHlsZS5hbGlnbkNvbnRlbnQoKSwgQ1NTVmFsdWVTdHJldGNo
KTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUFsaWduSXRlbXM6Ci0gICAgICAgICAgICByZXR1
cm4gdmFsdWVGb3JJdGVtUG9zaXRpb25XaXRoT3ZlcmZsb3dBbGlnbm1lbnQoc3R5bGUtPmFsaWdu
SXRlbXMoKSk7CisgICAgICAgICAgICByZXR1cm4gdmFsdWVGb3JJdGVtUG9zaXRpb25XaXRoT3Zl
cmZsb3dBbGlnbm1lbnQoc3R5bGUuYWxpZ25JdGVtcygpKTsKICAgICAgICAgY2FzZSBDU1NQcm9w
ZXJ0eUFsaWduU2VsZjoKLSAgICAgICAgICAgIHJldHVybiB2YWx1ZUZvckl0ZW1Qb3NpdGlvbldp
dGhPdmVyZmxvd0FsaWdubWVudChzdHlsZS0+YWxpZ25TZWxmKCkpOworICAgICAgICAgICAgcmV0
dXJuIHZhbHVlRm9ySXRlbVBvc2l0aW9uV2l0aE92ZXJmbG93QWxpZ25tZW50KHN0eWxlLmFsaWdu
U2VsZigpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUZsZXg6CiAgICAgICAgICAgICByZXR1
cm4gZ2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JTaG9ydGhhbmRQcm9wZXJ0aWVzKGZsZXhTaG9ydGhh
bmQoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlGbGV4QmFzaXM6Ci0gICAgICAgICAgICBy
ZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLT5mbGV4QmFzaXMoKSwgKnN0eWxl
KTsKKyAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUuZmxl
eEJhc2lzKCksIHN0eWxlKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUZsZXhEaXJlY3Rpb246
Ci0gICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLT5mbGV4
RGlyZWN0aW9uKCkpOworICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1
ZShzdHlsZS5mbGV4RGlyZWN0aW9uKCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5RmxleEZs
b3c6CiAgICAgICAgICAgICByZXR1cm4gZ2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JTaG9ydGhhbmRQ
cm9wZXJ0aWVzKGZsZXhGbG93U2hvcnRoYW5kKCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5
RmxleEdyb3c6Ci0gICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0
eWxlLT5mbGV4R3JvdygpKTsKKyAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRl
VmFsdWUoc3R5bGUuZmxleEdyb3coKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlGbGV4U2hy
aW5rOgotICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzdHlsZS0+
ZmxleFNocmluaygpKTsKKyAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFs
dWUoc3R5bGUuZmxleFNocmluaygpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUZsZXhXcmFw
OgotICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzdHlsZS0+Zmxl
eFdyYXAoKSk7CisgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0
eWxlLmZsZXhXcmFwKCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5SnVzdGlmeUNvbnRlbnQ6
Ci0gICAgICAgICAgICByZXR1cm4gdmFsdWVGb3JDb250ZW50UG9zaXRpb25BbmREaXN0cmlidXRp
b25XaXRoT3ZlcmZsb3dBbGlnbm1lbnQoc3R5bGUtPmp1c3RpZnlDb250ZW50KCksIENTU1ZhbHVl
RmxleFN0YXJ0KTsKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZUZvckNvbnRlbnRQb3NpdGlvbkFu
ZERpc3RyaWJ1dGlvbldpdGhPdmVyZmxvd0FsaWdubWVudChzdHlsZS5qdXN0aWZ5Q29udGVudCgp
LCBDU1NWYWx1ZUZsZXhTdGFydCk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlKdXN0aWZ5SXRl
bXM6Ci0gICAgICAgICAgICByZXR1cm4gdmFsdWVGb3JJdGVtUG9zaXRpb25XaXRoT3ZlcmZsb3dB
bGlnbm1lbnQoc3R5bGUtPmp1c3RpZnlJdGVtcygpLnBvc2l0aW9uKCkgPT0gSXRlbVBvc2l0aW9u
QXV0byA/IFJlbmRlclN0eWxlOjppbml0aWFsRGVmYXVsdEFsaWdubWVudCgpIDogc3R5bGUtPmp1
c3RpZnlJdGVtcygpKTsKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZUZvckl0ZW1Qb3NpdGlvbldp
dGhPdmVyZmxvd0FsaWdubWVudChzdHlsZS5qdXN0aWZ5SXRlbXMoKS5wb3NpdGlvbigpID09IEl0
ZW1Qb3NpdGlvbkF1dG8gPyBSZW5kZXJTdHlsZTo6aW5pdGlhbERlZmF1bHRBbGlnbm1lbnQoKSA6
IHN0eWxlLmp1c3RpZnlJdGVtcygpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUp1c3RpZnlT
ZWxmOgotICAgICAgICAgICAgcmV0dXJuIHZhbHVlRm9ySXRlbVBvc2l0aW9uV2l0aE92ZXJmbG93
QWxpZ25tZW50KHN0eWxlLT5qdXN0aWZ5U2VsZigpKTsKKyAgICAgICAgICAgIHJldHVybiB2YWx1
ZUZvckl0ZW1Qb3NpdGlvbldpdGhPdmVyZmxvd0FsaWdubWVudChzdHlsZS5qdXN0aWZ5U2VsZigp
KTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVBsYWNlQ29udGVudDoKICAgICAgICAgICAgIHJl
dHVybiBnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvclNob3J0aGFuZFByb3BlcnRpZXMocGxhY2VDb250
ZW50U2hvcnRoYW5kKCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5UGxhY2VJdGVtczoKQEAg
LTI5OTksMzQgKzMwMDQsMzQgQEAgUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFj
dG9yOjpwcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwKICAgICAgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVBsYWNlU2VsZjoKICAgICAgICAgICAgIHJldHVybiBnZXRDU1NQcm9wZXJ0
eVZhbHVlc0ZvclNob3J0aGFuZFByb3BlcnRpZXMocGxhY2VTZWxmU2hvcnRoYW5kKCkpOwogICAg
ICAgICBjYXNlIENTU1Byb3BlcnR5T3JkZXI6Ci0gICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQ
b29sLmNyZWF0ZVZhbHVlKHN0eWxlLT5vcmRlcigpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05V
TUJFUik7CisgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxl
Lm9yZGVyKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKTsKICAgICAgICAgY2FzZSBD
U1NQcm9wZXJ0eUZsb2F0OgotICAgICAgICAgICAgaWYgKHN0eWxlLT5kaXNwbGF5KCkgIT0gTk9O
RSAmJiBzdHlsZS0+aGFzT3V0T2ZGbG93UG9zaXRpb24oKSkKKyAgICAgICAgICAgIGlmIChzdHls
ZS5kaXNwbGF5KCkgIT0gTk9ORSAmJiBzdHlsZS5oYXNPdXRPZkZsb3dQb3NpdGlvbigpKQogICAg
ICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENT
U1ZhbHVlTm9uZSk7Ci0gICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVl
KHN0eWxlLT5mbG9hdGluZygpKTsKKyAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3Jl
YXRlVmFsdWUoc3R5bGUuZmxvYXRpbmcoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlGb250
OiB7Ci0gICAgICAgICAgICBhdXRvIGNvbXB1dGVkRm9udCA9IGZvbnRTaG9ydGhhbmRWYWx1ZUZv
clNlbGVjdGlvblByb3BlcnRpZXMoc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpKTsKLSAgICAgICAg
ICAgIGNvbXB1dGVkRm9udC0+c2l6ZSA9IGZvbnRTaXplRnJvbVN0eWxlKCpzdHlsZSk7Ci0gICAg
ICAgICAgICBjb21wdXRlZEZvbnQtPmxpbmVIZWlnaHQgPSBsaW5lSGVpZ2h0RnJvbVN0eWxlKCpz
dHlsZSk7Ci0gICAgICAgICAgICBjb21wdXRlZEZvbnQtPmZhbWlseSA9IGZvbnRGYW1pbHlMaXN0
RnJvbVN0eWxlKCpzdHlsZSk7CisgICAgICAgICAgICBhdXRvIGNvbXB1dGVkRm9udCA9IGZvbnRT
aG9ydGhhbmRWYWx1ZUZvclNlbGVjdGlvblByb3BlcnRpZXMoc3R5bGUuZm9udERlc2NyaXB0aW9u
KCkpOworICAgICAgICAgICAgY29tcHV0ZWRGb250LT5zaXplID0gZm9udFNpemVGcm9tU3R5bGUo
c3R5bGUpOworICAgICAgICAgICAgY29tcHV0ZWRGb250LT5saW5lSGVpZ2h0ID0gbGluZUhlaWdo
dEZyb21TdHlsZShzdHlsZSk7CisgICAgICAgICAgICBjb21wdXRlZEZvbnQtPmZhbWlseSA9IGZv
bnRGYW1pbHlMaXN0RnJvbVN0eWxlKHN0eWxlKTsKICAgICAgICAgICAgIHJldHVybiBXVEZNb3Zl
KGNvbXB1dGVkRm9udCk7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUZvbnRG
YW1pbHk6Ci0gICAgICAgICAgICByZXR1cm4gZm9udEZhbWlseUZyb21TdHlsZSgqc3R5bGUpOwor
ICAgICAgICAgICAgcmV0dXJuIGZvbnRGYW1pbHlGcm9tU3R5bGUoc3R5bGUpOwogICAgICAgICBj
YXNlIENTU1Byb3BlcnR5Rm9udFNpemU6Ci0gICAgICAgICAgICByZXR1cm4gZm9udFNpemVGcm9t
U3R5bGUoKnN0eWxlKTsKKyAgICAgICAgICAgIHJldHVybiBmb250U2l6ZUZyb21TdHlsZShzdHls
ZSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlGb250U3R5bGU6Ci0gICAgICAgICAgICByZXR1
cm4gZm9udFN0eWxlRnJvbVN0eWxlKCpzdHlsZSk7CisgICAgICAgICAgICByZXR1cm4gZm9udFN0
eWxlRnJvbVN0eWxlKHN0eWxlKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUZvbnRTdHJldGNo
OgotICAgICAgICAgICAgcmV0dXJuIGZvbnRTdHJldGNoRnJvbVN0eWxlKCpzdHlsZSk7CisgICAg
ICAgICAgICByZXR1cm4gZm9udFN0cmV0Y2hGcm9tU3R5bGUoc3R5bGUpOwogICAgICAgICBjYXNl
IENTU1Byb3BlcnR5Rm9udFZhcmlhbnQ6Ci0gICAgICAgICAgICByZXR1cm4gZm9udFZhcmlhbnRG
cm9tU3R5bGUoKnN0eWxlKTsKKyAgICAgICAgICAgIHJldHVybiBmb250VmFyaWFudEZyb21TdHls
ZShzdHlsZSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlGb250V2VpZ2h0OgotICAgICAgICAg
ICAgcmV0dXJuIGZvbnRXZWlnaHRGcm9tU3R5bGUoKnN0eWxlKTsKKyAgICAgICAgICAgIHJldHVy
biBmb250V2VpZ2h0RnJvbVN0eWxlKHN0eWxlKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUZv
bnRTeW50aGVzaXM6Ci0gICAgICAgICAgICByZXR1cm4gZm9udFN5bnRoZXNpc0Zyb21TdHlsZSgq
c3R5bGUpOworICAgICAgICAgICAgcmV0dXJuIGZvbnRTeW50aGVzaXNGcm9tU3R5bGUoc3R5bGUp
OwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5Rm9udEZlYXR1cmVTZXR0aW5nczogewotICAgICAg
ICAgICAgY29uc3QgRm9udEZlYXR1cmVTZXR0aW5ncyYgZmVhdHVyZVNldHRpbmdzID0gc3R5bGUt
PmZvbnREZXNjcmlwdGlvbigpLmZlYXR1cmVTZXR0aW5ncygpOworICAgICAgICAgICAgY29uc3Qg
Rm9udEZlYXR1cmVTZXR0aW5ncyYgZmVhdHVyZVNldHRpbmdzID0gc3R5bGUuZm9udERlc2NyaXB0
aW9uKCkuZmVhdHVyZVNldHRpbmdzKCk7CiAgICAgICAgICAgICBpZiAoIWZlYXR1cmVTZXR0aW5n
cy5zaXplKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVu
dGlmaWVyVmFsdWUoQ1NTVmFsdWVOb3JtYWwpOwogICAgICAgICAgICAgYXV0byBsaXN0ID0gQ1NT
VmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOwpAQCAtMzAzNiw3ICszMDQxLDcgQEAg
UmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKENT
U1Byb3BlcnR5SUQgcHJvcGVydHlJRCwKICAgICAgICAgfQogI2lmIEVOQUJMRShWQVJJQVRJT05f
Rk9OVFMpCiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlGb250VmFyaWF0aW9uU2V0dGluZ3M6IHsK
LSAgICAgICAgICAgIGNvbnN0IEZvbnRWYXJpYXRpb25TZXR0aW5ncyYgdmFyaWF0aW9uU2V0dGlu
Z3MgPSBzdHlsZS0+Zm9udERlc2NyaXB0aW9uKCkudmFyaWF0aW9uU2V0dGluZ3MoKTsKKyAgICAg
ICAgICAgIGNvbnN0IEZvbnRWYXJpYXRpb25TZXR0aW5ncyYgdmFyaWF0aW9uU2V0dGluZ3MgPSBz
dHlsZS5mb250RGVzY3JpcHRpb24oKS52YXJpYXRpb25TZXR0aW5ncygpOwogICAgICAgICAgICAg
aWYgKHZhcmlhdGlvblNldHRpbmdzLmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICByZXR1cm4g
Y3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vcm1hbCk7CiAgICAg
ICAgICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7
CkBAIC0zMDQ1LDE3ICszMDUwLDE3IEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4
dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsCiAgICAgICAg
ICAgICByZXR1cm4gV1RGTW92ZShsaXN0KTsKICAgICAgICAgfQogICAgICAgICBjYXNlIENTU1By
b3BlcnR5Rm9udE9wdGljYWxTaXppbmc6Ci0gICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29s
LmNyZWF0ZVZhbHVlKHN0eWxlLT5mb250RGVzY3JpcHRpb24oKS5vcHRpY2FsU2l6aW5nKCkpOwor
ICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzdHlsZS5mb250RGVz
Y3JpcHRpb24oKS5vcHRpY2FsU2l6aW5nKCkpOwogI2VuZGlmCiAgICAgICAgIGNhc2UgQ1NTUHJv
cGVydHlHcmlkQXV0b0Zsb3c6IHsKICAgICAgICAgICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlz
dDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKLSAgICAgICAgICAgIEFTU0VSVChzdHlsZS0+aXNH
cmlkQXV0b0Zsb3dEaXJlY3Rpb25Sb3coKSB8fCBzdHlsZS0+aXNHcmlkQXV0b0Zsb3dEaXJlY3Rp
b25Db2x1bW4oKSk7Ci0gICAgICAgICAgICBpZiAoc3R5bGUtPmlzR3JpZEF1dG9GbG93RGlyZWN0
aW9uUm93KCkpCisgICAgICAgICAgICBBU1NFUlQoc3R5bGUuaXNHcmlkQXV0b0Zsb3dEaXJlY3Rp
b25Sb3coKSB8fCBzdHlsZS5pc0dyaWRBdXRvRmxvd0RpcmVjdGlvbkNvbHVtbigpKTsKKyAgICAg
ICAgICAgIGlmIChzdHlsZS5pc0dyaWRBdXRvRmxvd0RpcmVjdGlvblJvdygpKQogICAgICAgICAg
ICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENT
U1ZhbHVlUm93KSk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgbGlzdC0+YXBw
ZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVDb2x1bW4pKTsK
IAotICAgICAgICAgICAgaWYgKHN0eWxlLT5pc0dyaWRBdXRvRmxvd0FsZ29yaXRobURlbnNlKCkp
CisgICAgICAgICAgICBpZiAoc3R5bGUuaXNHcmlkQXV0b0Zsb3dBbGdvcml0aG1EZW5zZSgpKQog
ICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmll
clZhbHVlKENTU1ZhbHVlRGVuc2UpKTsKIAogICAgICAgICAgICAgcmV0dXJuIFdURk1vdmUobGlz
dCk7CkBAIC0zMDY3LDIzICszMDcyLDIzIEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHls
ZUV4dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsCiAgICAg
ICAgIC8vIGRlcGVuZGluZyBvbiB0aGUgc2l6ZSBvZiB0aGUgZXhwbGljaXQgZ3JpZCBvciB0aGUg
bnVtYmVyIG9mIGltcGxpY2l0IHRyYWNrcyBhZGRlZCB0byB0aGUgZ3JpZC4gU2VlCiAgICAgICAg
IC8vIGh0dHA6Ly9saXN0cy53My5vcmcvQXJjaGl2ZXMvUHVibGljL3d3dy1zdHlsZS8yMDEzTm92
LzAwMTQuaHRtbAogICAgICAgICBjYXNlIENTU1Byb3BlcnR5R3JpZEF1dG9Db2x1bW5zOgotICAg
ICAgICAgICAgcmV0dXJuIHZhbHVlRm9yR3JpZFRyYWNrU2l6ZUxpc3QoRm9yQ29sdW1ucywgKnN0
eWxlKTsKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZUZvckdyaWRUcmFja1NpemVMaXN0KEZvckNv
bHVtbnMsIHN0eWxlKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUdyaWRBdXRvUm93czoKLSAg
ICAgICAgICAgIHJldHVybiB2YWx1ZUZvckdyaWRUcmFja1NpemVMaXN0KEZvclJvd3MsICpzdHls
ZSk7CisgICAgICAgICAgICByZXR1cm4gdmFsdWVGb3JHcmlkVHJhY2tTaXplTGlzdChGb3JSb3dz
LCBzdHlsZSk7CiAKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUdyaWRUZW1wbGF0ZUNvbHVtbnM6
Ci0gICAgICAgICAgICByZXR1cm4gdmFsdWVGb3JHcmlkVHJhY2tMaXN0KEZvckNvbHVtbnMsIHJl
bmRlcmVyLCAqc3R5bGUpOworICAgICAgICAgICAgcmV0dXJuIHZhbHVlRm9yR3JpZFRyYWNrTGlz
dChGb3JDb2x1bW5zLCByZW5kZXJlciwgc3R5bGUpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5
R3JpZFRlbXBsYXRlUm93czoKLSAgICAgICAgICAgIHJldHVybiB2YWx1ZUZvckdyaWRUcmFja0xp
c3QoRm9yUm93cywgcmVuZGVyZXIsICpzdHlsZSk7CisgICAgICAgICAgICByZXR1cm4gdmFsdWVG
b3JHcmlkVHJhY2tMaXN0KEZvclJvd3MsIHJlbmRlcmVyLCBzdHlsZSk7CiAKICAgICAgICAgY2Fz
ZSBDU1NQcm9wZXJ0eUdyaWRDb2x1bW5TdGFydDoKLSAgICAgICAgICAgIHJldHVybiB2YWx1ZUZv
ckdyaWRQb3NpdGlvbihzdHlsZS0+Z3JpZEl0ZW1Db2x1bW5TdGFydCgpKTsKKyAgICAgICAgICAg
IHJldHVybiB2YWx1ZUZvckdyaWRQb3NpdGlvbihzdHlsZS5ncmlkSXRlbUNvbHVtblN0YXJ0KCkp
OwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5R3JpZENvbHVtbkVuZDoKLSAgICAgICAgICAgIHJl
dHVybiB2YWx1ZUZvckdyaWRQb3NpdGlvbihzdHlsZS0+Z3JpZEl0ZW1Db2x1bW5FbmQoKSk7Cisg
ICAgICAgICAgICByZXR1cm4gdmFsdWVGb3JHcmlkUG9zaXRpb24oc3R5bGUuZ3JpZEl0ZW1Db2x1
bW5FbmQoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlHcmlkUm93U3RhcnQ6Ci0gICAgICAg
ICAgICByZXR1cm4gdmFsdWVGb3JHcmlkUG9zaXRpb24oc3R5bGUtPmdyaWRJdGVtUm93U3RhcnQo
KSk7CisgICAgICAgICAgICByZXR1cm4gdmFsdWVGb3JHcmlkUG9zaXRpb24oc3R5bGUuZ3JpZEl0
ZW1Sb3dTdGFydCgpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUdyaWRSb3dFbmQ6Ci0gICAg
ICAgICAgICByZXR1cm4gdmFsdWVGb3JHcmlkUG9zaXRpb24oc3R5bGUtPmdyaWRJdGVtUm93RW5k
KCkpOworICAgICAgICAgICAgcmV0dXJuIHZhbHVlRm9yR3JpZFBvc2l0aW9uKHN0eWxlLmdyaWRJ
dGVtUm93RW5kKCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5R3JpZEFyZWE6CiAgICAgICAg
ICAgICByZXR1cm4gZ2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JHcmlkU2hvcnRoYW5kKGdyaWRBcmVh
U2hvcnRoYW5kKCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5R3JpZFRlbXBsYXRlOgpAQCAt
MzA5NSwxNSArMzEwMCwxNSBAQCBSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0
b3I6OnByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELAogICAgICAgICBjYXNl
IENTU1Byb3BlcnR5R3JpZFJvdzoKICAgICAgICAgICAgIHJldHVybiBnZXRDU1NQcm9wZXJ0eVZh
bHVlc0ZvckdyaWRTaG9ydGhhbmQoZ3JpZFJvd1Nob3J0aGFuZCgpKTsKICAgICAgICAgY2FzZSBD
U1NQcm9wZXJ0eUdyaWRUZW1wbGF0ZUFyZWFzOgotICAgICAgICAgICAgaWYgKCFzdHlsZS0+bmFt
ZWRHcmlkQXJlYVJvd0NvdW50KCkpIHsKLSAgICAgICAgICAgICAgICBBU1NFUlQoIXN0eWxlLT5u
YW1lZEdyaWRBcmVhQ29sdW1uQ291bnQoKSk7CisgICAgICAgICAgICBpZiAoIXN0eWxlLm5hbWVk
R3JpZEFyZWFSb3dDb3VudCgpKSB7CisgICAgICAgICAgICAgICAgQVNTRVJUKCFzdHlsZS5uYW1l
ZEdyaWRBcmVhQ29sdW1uQ291bnQoKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVl
UG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb25lKTsKICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIHJldHVybiBDU1NHcmlkVGVtcGxhdGVBcmVhc1ZhbHVlOjpjcmVhdGUoc3R5
bGUtPm5hbWVkR3JpZEFyZWEoKSwgc3R5bGUtPm5hbWVkR3JpZEFyZWFSb3dDb3VudCgpLCBzdHls
ZS0+bmFtZWRHcmlkQXJlYUNvbHVtbkNvdW50KCkpOworICAgICAgICAgICAgcmV0dXJuIENTU0dy
aWRUZW1wbGF0ZUFyZWFzVmFsdWU6OmNyZWF0ZShzdHlsZS5uYW1lZEdyaWRBcmVhKCksIHN0eWxl
Lm5hbWVkR3JpZEFyZWFSb3dDb3VudCgpLCBzdHlsZS5uYW1lZEdyaWRBcmVhQ29sdW1uQ291bnQo
KSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlHcmlkQ29sdW1uR2FwOgotICAgICAgICAgICAg
cmV0dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFsdWVGb3JMZW5ndGgoc3R5bGUtPmdyaWRDb2x1bW5H
YXAoKSwgKnN0eWxlKTsKKyAgICAgICAgICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVl
Rm9yTGVuZ3RoKHN0eWxlLmdyaWRDb2x1bW5HYXAoKSwgc3R5bGUpOwogICAgICAgICBjYXNlIENT
U1Byb3BlcnR5R3JpZFJvd0dhcDoKLSAgICAgICAgICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhl
bFZhbHVlRm9yTGVuZ3RoKHN0eWxlLT5ncmlkUm93R2FwKCksICpzdHlsZSk7CisgICAgICAgICAg
ICByZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZUZvckxlbmd0aChzdHlsZS5ncmlkUm93R2Fw
KCksIHN0eWxlKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUdyaWRHYXA6CiAgICAgICAgICAg
ICByZXR1cm4gZ2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JHcmlkU2hvcnRoYW5kKGdyaWRHYXBTaG9y
dGhhbmQoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlIZWlnaHQ6CkBAIC0zMTEyLDcxICsz
MTE3LDcxIEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6cHJvcGVy
dHlWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsCiAgICAgICAgICAgICAgICAgLy8gdGhl
ICJoZWlnaHQiIHByb3BlcnR5IGRvZXMgbm90IGFwcGx5IGZvciBub24tcmVwbGFjZWQgaW5saW5l
IGVsZW1lbnRzLgogICAgICAgICAgICAgICAgIGlmIChpc05vblJlcGxhY2VkSW5saW5lKCpyZW5k
ZXJlcikpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlSWRl
bnRpZmllclZhbHVlKENTU1ZhbHVlQXV0byk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHpvb21B
ZGp1c3RlZFBpeGVsVmFsdWUoc2l6aW5nQm94KCpyZW5kZXJlcikuaGVpZ2h0KCksICpzdHlsZSk7
CisgICAgICAgICAgICAgICAgcmV0dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFsdWUoc2l6aW5nQm94
KCpyZW5kZXJlcikuaGVpZ2h0KCksIHN0eWxlKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlRm9yTGVuZ3RoKHN0eWxlLT5oZWlnaHQoKSwg
KnN0eWxlKTsKKyAgICAgICAgICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlRm9yTGVu
Z3RoKHN0eWxlLmhlaWdodCgpLCBzdHlsZSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRIeXBoZW5zOgotICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShz
dHlsZS0+aHlwaGVucygpKTsKKyAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRl
VmFsdWUoc3R5bGUuaHlwaGVucygpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEh5
cGhlbmF0ZUNoYXJhY3RlcjoKLSAgICAgICAgICAgIGlmIChzdHlsZS0+aHlwaGVuYXRpb25TdHJp
bmcoKS5pc051bGwoKSkKKyAgICAgICAgICAgIGlmIChzdHlsZS5oeXBoZW5hdGlvblN0cmluZygp
LmlzTnVsbCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlSWRl
bnRpZmllclZhbHVlKENTU1ZhbHVlQXV0byk7Ci0gICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQ
b29sLmNyZWF0ZVZhbHVlKHN0eWxlLT5oeXBoZW5hdGlvblN0cmluZygpLCBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTX1NUUklORyk7CisgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0
ZVZhbHVlKHN0eWxlLmh5cGhlbmF0aW9uU3RyaW5nKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
U1RSSU5HKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEh5cGhlbmF0ZUxpbWl0QWZ0
ZXI6Ci0gICAgICAgICAgICBpZiAoc3R5bGUtPmh5cGhlbmF0aW9uTGltaXRBZnRlcigpIDwgMCkK
KyAgICAgICAgICAgIGlmIChzdHlsZS5oeXBoZW5hdGlvbkxpbWl0QWZ0ZXIoKSA8IDApCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENT
U1ZhbHVlQXV0byk7Ci0gICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0
ZShzdHlsZS0+aHlwaGVuYXRpb25MaW1pdEFmdGVyKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
TlVNQkVSKTsKKyAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHN0
eWxlLmh5cGhlbmF0aW9uTGltaXRBZnRlcigpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJF
Uik7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRIeXBoZW5hdGVMaW1pdEJlZm9yZToK
LSAgICAgICAgICAgIGlmIChzdHlsZS0+aHlwaGVuYXRpb25MaW1pdEJlZm9yZSgpIDwgMCkKKyAg
ICAgICAgICAgIGlmIChzdHlsZS5oeXBoZW5hdGlvbkxpbWl0QmVmb3JlKCkgPCAwKQogICAgICAg
ICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NW
YWx1ZUF1dG8pOwotICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUo
c3R5bGUtPmh5cGhlbmF0aW9uTGltaXRCZWZvcmUoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19O
VU1CRVIpOworICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3R5
bGUuaHlwaGVuYXRpb25MaW1pdEJlZm9yZSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJF
Uik7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRIeXBoZW5hdGVMaW1pdExpbmVzOgot
ICAgICAgICAgICAgaWYgKHN0eWxlLT5oeXBoZW5hdGlvbkxpbWl0TGluZXMoKSA8IDApCisgICAg
ICAgICAgICBpZiAoc3R5bGUuaHlwaGVuYXRpb25MaW1pdExpbmVzKCkgPCAwKQogICAgICAgICAg
ICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1
ZU5vTGltaXQpOwotICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUo
c3R5bGUtPmh5cGhlbmF0aW9uTGltaXRMaW5lcygpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05V
TUJFUik7CisgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShzdHls
ZS5oeXBoZW5hdGlvbkxpbWl0TGluZXMoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIp
OwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRml0OgotICAgICAgICAgICAg
aWYgKHN0eWxlLT5ib3JkZXJGaXQoKSA9PSBCb3JkZXJGaXRCb3JkZXIpCisgICAgICAgICAgICBp
ZiAoc3R5bGUuYm9yZGVyRml0KCkgPT0gQm9yZGVyRml0Qm9yZGVyKQogICAgICAgICAgICAgICAg
IHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlQm9yZGVy
KTsKICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVl
KENTU1ZhbHVlTGluZXMpOwogI2lmIEVOQUJMRShDU1NfSU1BR0VfT1JJRU5UQVRJT04pCiAgICAg
ICAgIGNhc2UgQ1NTUHJvcGVydHlJbWFnZU9yaWVudGF0aW9uOgotICAgICAgICAgICAgcmV0dXJu
IGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzdHlsZS0+aW1hZ2VPcmllbnRhdGlvbigpKTsKKyAg
ICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUuaW1hZ2VPcmll
bnRhdGlvbigpKTsKICNlbmRpZgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5SW1hZ2VSZW5kZXJp
bmc6Ci0gICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShzdHlsZS0+
aW1hZ2VSZW5kZXJpbmcoKSk7CisgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6
OmNyZWF0ZShzdHlsZS5pbWFnZVJlbmRlcmluZygpKTsKICNpZiBFTkFCTEUoQ1NTX0lNQUdFX1JF
U09MVVRJT04pCiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlJbWFnZVJlc29sdXRpb246Ci0gICAg
ICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLT5pbWFnZVJlc29s
dXRpb24oKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19EUFBYKTsKKyAgICAgICAgICAgIHJldHVy
biBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUuaW1hZ2VSZXNvbHV0aW9uKCksIENTU1By
aW1pdGl2ZVZhbHVlOjpDU1NfRFBQWCk7CiAjZW5kaWYKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0
eUxlZnQ6Ci0gICAgICAgICAgICByZXR1cm4gcG9zaXRpb25PZmZzZXRWYWx1ZSgqc3R5bGUsIENT
U1Byb3BlcnR5TGVmdCwgcmVuZGVyZXIpOworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uT2Zm
c2V0VmFsdWUoc3R5bGUsIENTU1Byb3BlcnR5TGVmdCwgcmVuZGVyZXIpOwogICAgICAgICBjYXNl
IENTU1Byb3BlcnR5TGV0dGVyU3BhY2luZzoKLSAgICAgICAgICAgIGlmICghc3R5bGUtPmxldHRl
clNwYWNpbmcoKSkKKyAgICAgICAgICAgIGlmICghc3R5bGUubGV0dGVyU3BhY2luZygpKQogICAg
ICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENT
U1ZhbHVlTm9ybWFsKTsKLSAgICAgICAgICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVl
KHN0eWxlLT5sZXR0ZXJTcGFjaW5nKCksICpzdHlsZSk7CisgICAgICAgICAgICByZXR1cm4gem9v
bUFkanVzdGVkUGl4ZWxWYWx1ZShzdHlsZS5sZXR0ZXJTcGFjaW5nKCksIHN0eWxlKTsKICAgICAg
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdExpbmVDbGFtcDoKLSAgICAgICAgICAgIGlmIChzdHls
ZS0+bGluZUNsYW1wKCkuaXNOb25lKCkpCisgICAgICAgICAgICBpZiAoc3R5bGUubGluZUNsYW1w
KCkuaXNOb25lKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVJ
ZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb25lKTsKLSAgICAgICAgICAgIHJldHVybiBjc3NWYWx1
ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUtPmxpbmVDbGFtcCgpLnZhbHVlKCksIHN0eWxlLT5saW5l
Q2xhbXAoKS5pc1BlcmNlbnRhZ2UoKSA/IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFH
RSA6IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKTsKKyAgICAgICAgICAgIHJldHVybiBj
c3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUubGluZUNsYW1wKCkudmFsdWUoKSwgc3R5bGUu
bGluZUNsYW1wKCkuaXNQZXJjZW50YWdlKCkgPyBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNF
TlRBR0UgOiBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUik7CiAgICAgICAgIGNhc2UgQ1NT
UHJvcGVydHlMaW5lSGVpZ2h0OgotICAgICAgICAgICAgcmV0dXJuIGxpbmVIZWlnaHRGcm9tU3R5
bGUoKnN0eWxlKTsKKyAgICAgICAgICAgIHJldHVybiBsaW5lSGVpZ2h0RnJvbVN0eWxlKHN0eWxl
KTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUxpc3RTdHlsZUltYWdlOgotICAgICAgICAgICAg
aWYgKHN0eWxlLT5saXN0U3R5bGVJbWFnZSgpKQotICAgICAgICAgICAgICAgIHJldHVybiBzdHls
ZS0+bGlzdFN0eWxlSW1hZ2UoKS0+Y3NzVmFsdWUoKTsKKyAgICAgICAgICAgIGlmIChzdHlsZS5s
aXN0U3R5bGVJbWFnZSgpKQorICAgICAgICAgICAgICAgIHJldHVybiBzdHlsZS5saXN0U3R5bGVJ
bWFnZSgpLT5jc3NWYWx1ZSgpOwogICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVh
dGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb25lKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0
eUxpc3RTdHlsZVBvc2l0aW9uOgotICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVh
dGVWYWx1ZShzdHlsZS0+bGlzdFN0eWxlUG9zaXRpb24oKSk7CisgICAgICAgICAgICByZXR1cm4g
Y3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLmxpc3RTdHlsZVBvc2l0aW9uKCkpOwogICAg
ICAgICBjYXNlIENTU1Byb3BlcnR5TGlzdFN0eWxlVHlwZToKLSAgICAgICAgICAgIHJldHVybiBj
c3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUtPmxpc3RTdHlsZVR5cGUoKSk7CisgICAgICAg
ICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLmxpc3RTdHlsZVR5cGUo
KSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRMb2NhbGU6Ci0gICAgICAgICAgICBp
ZiAoc3R5bGUtPmxvY2FsZSgpLmlzTnVsbCgpKQorICAgICAgICAgICAgaWYgKHN0eWxlLmxvY2Fs
ZSgpLmlzTnVsbCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRl
SWRlbnRpZmllclZhbHVlKENTU1ZhbHVlQXV0byk7Ci0gICAgICAgICAgICByZXR1cm4gY3NzVmFs
dWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLT5sb2NhbGUoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19TVFJJTkcpOworICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShz
dHlsZS5sb2NhbGUoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TVFJJTkcpOwogICAgICAgICBj
YXNlIENTU1Byb3BlcnR5TWFyZ2luVG9wOgotICAgICAgICAgICAgcmV0dXJuIHpvb21BZGp1c3Rl
ZFBhZGRpbmdPck1hcmdpblBpeGVsVmFsdWU8JlJlbmRlclN0eWxlOjptYXJnaW5Ub3AsICZSZW5k
ZXJCb3hNb2RlbE9iamVjdDo6bWFyZ2luVG9wPigqc3R5bGUsIHJlbmRlcmVyKTsKKyAgICAgICAg
ICAgIHJldHVybiB6b29tQWRqdXN0ZWRQYWRkaW5nT3JNYXJnaW5QaXhlbFZhbHVlPCZSZW5kZXJT
dHlsZTo6bWFyZ2luVG9wLCAmUmVuZGVyQm94TW9kZWxPYmplY3Q6Om1hcmdpblRvcD4oc3R5bGUs
IHJlbmRlcmVyKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eU1hcmdpblJpZ2h0OiB7Ci0gICAg
ICAgICAgICBMZW5ndGggbWFyZ2luUmlnaHQgPSBzdHlsZS0+bWFyZ2luUmlnaHQoKTsKKyAgICAg
ICAgICAgIExlbmd0aCBtYXJnaW5SaWdodCA9IHN0eWxlLm1hcmdpblJpZ2h0KCk7CiAgICAgICAg
ICAgICBpZiAobWFyZ2luUmlnaHQuaXNGaXhlZCgpIHx8ICFpczxSZW5kZXJCb3g+KHJlbmRlcmVy
KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZUZvckxlbmd0
aChtYXJnaW5SaWdodCwgKnN0eWxlKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gem9vbUFkanVz
dGVkUGl4ZWxWYWx1ZUZvckxlbmd0aChtYXJnaW5SaWdodCwgc3R5bGUpOwogICAgICAgICAgICAg
ZmxvYXQgdmFsdWU7CiAgICAgICAgICAgICBpZiAobWFyZ2luUmlnaHQuaXNQZXJjZW50T3JDYWxj
dWxhdGVkKCkpIHsKICAgICAgICAgICAgICAgICAvLyBSZW5kZXJCb3ggZ2l2ZXMgYSBtYXJnaW5S
aWdodCgpIHRoYXQgaXMgdGhlIGRpc3RhbmNlIGJldHdlZW4gdGhlIHJpZ2h0LWVkZ2Ugb2YgdGhl
IGNoaWxkIGJveApAQCAtMzE4NSwxNDggKzMxOTAsMTUwIEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ29t
cHV0ZWRTdHlsZUV4dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5
SUQsCiAgICAgICAgICAgICAgICAgdmFsdWUgPSBtaW5pbXVtVmFsdWVGb3JMZW5ndGgobWFyZ2lu
UmlnaHQsIGRvd25jYXN0PFJlbmRlckJveD4oKnJlbmRlcmVyKS5jb250YWluaW5nQmxvY2tMb2dp
Y2FsV2lkdGhGb3JDb250ZW50KCkpOwogICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAg
ICAgdmFsdWUgPSBkb3duY2FzdDxSZW5kZXJCb3g+KCpyZW5kZXJlcikubWFyZ2luUmlnaHQoKTsK
LSAgICAgICAgICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHZhbHVlLCAqc3R5bGUp
OworICAgICAgICAgICAgcmV0dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFsdWUodmFsdWUsIHN0eWxl
KTsKICAgICAgICAgfQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5TWFyZ2luQm90dG9tOgotICAg
ICAgICAgICAgcmV0dXJuIHpvb21BZGp1c3RlZFBhZGRpbmdPck1hcmdpblBpeGVsVmFsdWU8JlJl
bmRlclN0eWxlOjptYXJnaW5Cb3R0b20sICZSZW5kZXJCb3hNb2RlbE9iamVjdDo6bWFyZ2luQm90
dG9tPigqc3R5bGUsIHJlbmRlcmVyKTsKKyAgICAgICAgICAgIHJldHVybiB6b29tQWRqdXN0ZWRQ
YWRkaW5nT3JNYXJnaW5QaXhlbFZhbHVlPCZSZW5kZXJTdHlsZTo6bWFyZ2luQm90dG9tLCAmUmVu
ZGVyQm94TW9kZWxPYmplY3Q6Om1hcmdpbkJvdHRvbT4oc3R5bGUsIHJlbmRlcmVyKTsKICAgICAg
ICAgY2FzZSBDU1NQcm9wZXJ0eU1hcmdpbkxlZnQ6Ci0gICAgICAgICAgICByZXR1cm4gem9vbUFk
anVzdGVkUGFkZGluZ09yTWFyZ2luUGl4ZWxWYWx1ZTwmUmVuZGVyU3R5bGU6Om1hcmdpbkxlZnQs
ICZSZW5kZXJCb3hNb2RlbE9iamVjdDo6bWFyZ2luTGVmdD4oKnN0eWxlLCByZW5kZXJlcik7Cisg
ICAgICAgICAgICByZXR1cm4gem9vbUFkanVzdGVkUGFkZGluZ09yTWFyZ2luUGl4ZWxWYWx1ZTwm
UmVuZGVyU3R5bGU6Om1hcmdpbkxlZnQsICZSZW5kZXJCb3hNb2RlbE9iamVjdDo6bWFyZ2luTGVm
dD4oc3R5bGUsIHJlbmRlcmVyKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1
ZWVEaXJlY3Rpb246Ci0gICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVl
KHN0eWxlLT5tYXJxdWVlRGlyZWN0aW9uKCkpOworICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVl
UG9vbC5jcmVhdGVWYWx1ZShzdHlsZS5tYXJxdWVlRGlyZWN0aW9uKCkpOwogICAgICAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0TWFycXVlZUluY3JlbWVudDoKLSAgICAgICAgICAgIHJldHVybiBj
c3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUtPm1hcnF1ZWVJbmNyZW1lbnQoKSk7CisgICAg
ICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLm1hcnF1ZWVJbmNy
ZW1lbnQoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlUmVwZXRpdGlv
bjoKLSAgICAgICAgICAgIGlmIChzdHlsZS0+bWFycXVlZUxvb3BDb3VudCgpIDwgMCkKKyAgICAg
ICAgICAgIGlmIChzdHlsZS5tYXJxdWVlTG9vcENvdW50KCkgPCAwKQogICAgICAgICAgICAgICAg
IHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlSW5maW5p
dGUpOwotICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzdHlsZS0+
bWFycXVlZUxvb3BDb3VudCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUik7CisgICAg
ICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLm1hcnF1ZWVMb29w
Q291bnQoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpOwogICAgICAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0TWFycXVlZVN0eWxlOgotICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVl
UG9vbC5jcmVhdGVWYWx1ZShzdHlsZS0+bWFycXVlZUJlaGF2aW9yKCkpOworICAgICAgICAgICAg
cmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzdHlsZS5tYXJxdWVlQmVoYXZpb3IoKSk7
CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRVc2VyTW9kaWZ5OgotICAgICAgICAgICAg
cmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzdHlsZS0+dXNlck1vZGlmeSgpKTsKKyAg
ICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUudXNlck1vZGlm
eSgpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eU1heEhlaWdodDogewotICAgICAgICAgICAg
Y29uc3QgTGVuZ3RoJiBtYXhIZWlnaHQgPSBzdHlsZS0+bWF4SGVpZ2h0KCk7CisgICAgICAgICAg
ICBjb25zdCBMZW5ndGgmIG1heEhlaWdodCA9IHN0eWxlLm1heEhlaWdodCgpOwogICAgICAgICAg
ICAgaWYgKG1heEhlaWdodC5pc1VuZGVmaW5lZCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBj
c3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTm9uZSk7Ci0gICAgICAg
ICAgICByZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZUZvckxlbmd0aChtYXhIZWlnaHQsICpz
dHlsZSk7CisgICAgICAgICAgICByZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZUZvckxlbmd0
aChtYXhIZWlnaHQsIHN0eWxlKTsKICAgICAgICAgfQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5
TWF4V2lkdGg6IHsKLSAgICAgICAgICAgIGNvbnN0IExlbmd0aCYgbWF4V2lkdGggPSBzdHlsZS0+
bWF4V2lkdGgoKTsKKyAgICAgICAgICAgIGNvbnN0IExlbmd0aCYgbWF4V2lkdGggPSBzdHlsZS5t
YXhXaWR0aCgpOwogICAgICAgICAgICAgaWYgKG1heFdpZHRoLmlzVW5kZWZpbmVkKCkpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NT
VmFsdWVOb25lKTsKLSAgICAgICAgICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlRm9y
TGVuZ3RoKG1heFdpZHRoLCAqc3R5bGUpOworICAgICAgICAgICAgcmV0dXJuIHpvb21BZGp1c3Rl
ZFBpeGVsVmFsdWVGb3JMZW5ndGgobWF4V2lkdGgsIHN0eWxlKTsKICAgICAgICAgfQogICAgICAg
ICBjYXNlIENTU1Byb3BlcnR5TWluSGVpZ2h0OgotICAgICAgICAgICAgaWYgKHN0eWxlLT5taW5I
ZWlnaHQoKS5pc0F1dG8oKSkgewotICAgICAgICAgICAgICAgIGlmIChpc0ZsZXhPckdyaWQoc3R5
bGVkRWxlbWVudC0+cGFyZW50Tm9kZSgpKSkKKyAgICAgICAgICAgIGlmIChzdHlsZS5taW5IZWln
aHQoKS5pc0F1dG8oKSkgeworICAgICAgICAgICAgICAgIGF1dG8qIHN0eWxlZEVsZW1lbnQgPSB0
aGlzLT5zdHlsZWRFbGVtZW50KCk7CisgICAgICAgICAgICAgICAgaWYgKHN0eWxlZEVsZW1lbnQg
JiYgaXNGbGV4T3JHcmlkKHN0eWxlZEVsZW1lbnQtPnBhcmVudE5vZGUoKSkpCiAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1Zh
bHVlQXV0byk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFsdWUo
MCwgKnN0eWxlKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1
ZSgwLCBzdHlsZSk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gem9vbUFkanVz
dGVkUGl4ZWxWYWx1ZUZvckxlbmd0aChzdHlsZS0+bWluSGVpZ2h0KCksICpzdHlsZSk7CisgICAg
ICAgICAgICByZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZUZvckxlbmd0aChzdHlsZS5taW5I
ZWlnaHQoKSwgc3R5bGUpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5TWluV2lkdGg6Ci0gICAg
ICAgICAgICBpZiAoc3R5bGUtPm1pbldpZHRoKCkuaXNBdXRvKCkpIHsKLSAgICAgICAgICAgICAg
ICBpZiAoaXNGbGV4T3JHcmlkKHN0eWxlZEVsZW1lbnQtPnBhcmVudE5vZGUoKSkpCisgICAgICAg
ICAgICBpZiAoc3R5bGUubWluV2lkdGgoKS5pc0F1dG8oKSkgeworICAgICAgICAgICAgICAgIGF1
dG8qIHN0eWxlZEVsZW1lbnQgPSB0aGlzLT5zdHlsZWRFbGVtZW50KCk7CisgICAgICAgICAgICAg
ICAgaWYgKHN0eWxlZEVsZW1lbnQgJiYgaXNGbGV4T3JHcmlkKHN0eWxlZEVsZW1lbnQtPnBhcmVu
dE5vZGUoKSkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRl
SWRlbnRpZmllclZhbHVlKENTU1ZhbHVlQXV0byk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHpv
b21BZGp1c3RlZFBpeGVsVmFsdWUoMCwgKnN0eWxlKTsKKyAgICAgICAgICAgICAgICByZXR1cm4g
em9vbUFkanVzdGVkUGl4ZWxWYWx1ZSgwLCBzdHlsZSk7CiAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICByZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZUZvckxlbmd0aChzdHlsZS0+bWluV2lk
dGgoKSwgKnN0eWxlKTsKKyAgICAgICAgICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVl
Rm9yTGVuZ3RoKHN0eWxlLm1pbldpZHRoKCksIHN0eWxlKTsKICAgICAgICAgY2FzZSBDU1NQcm9w
ZXJ0eU9iamVjdEZpdDoKLSAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFs
dWUoc3R5bGUtPm9iamVjdEZpdCgpKTsKKyAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wu
Y3JlYXRlVmFsdWUoc3R5bGUub2JqZWN0Rml0KCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5
T2JqZWN0UG9zaXRpb246IHsKICAgICAgICAgICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6
Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKLSAgICAgICAgICAgIGxpc3QtPmFwcGVuZCh6b29tQWRq
dXN0ZWRQaXhlbFZhbHVlRm9yTGVuZ3RoKHN0eWxlLT5vYmplY3RQb3NpdGlvbigpLngoKSwgKnN0
eWxlKSk7Ci0gICAgICAgICAgICBsaXN0LT5hcHBlbmQoem9vbUFkanVzdGVkUGl4ZWxWYWx1ZUZv
ckxlbmd0aChzdHlsZS0+b2JqZWN0UG9zaXRpb24oKS55KCksICpzdHlsZSkpOworICAgICAgICAg
ICAgbGlzdC0+YXBwZW5kKHpvb21BZGp1c3RlZFBpeGVsVmFsdWVGb3JMZW5ndGgoc3R5bGUub2Jq
ZWN0UG9zaXRpb24oKS54KCksIHN0eWxlKSk7CisgICAgICAgICAgICBsaXN0LT5hcHBlbmQoem9v
bUFkanVzdGVkUGl4ZWxWYWx1ZUZvckxlbmd0aChzdHlsZS5vYmplY3RQb3NpdGlvbigpLnkoKSwg
c3R5bGUpKTsKICAgICAgICAgICAgIHJldHVybiBXVEZNb3ZlKGxpc3QpOwogICAgICAgICB9CiAg
ICAgICAgIGNhc2UgQ1NTUHJvcGVydHlPcGFjaXR5OgotICAgICAgICAgICAgcmV0dXJuIGNzc1Zh
bHVlUG9vbC5jcmVhdGVWYWx1ZShzdHlsZS0+b3BhY2l0eSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX05VTUJFUik7CisgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVl
KHN0eWxlLm9wYWNpdHkoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpOwogICAgICAg
ICBjYXNlIENTU1Byb3BlcnR5T3JwaGFuczoKLSAgICAgICAgICAgIGlmIChzdHlsZS0+aGFzQXV0
b09ycGhhbnMoKSkKKyAgICAgICAgICAgIGlmIChzdHlsZS5oYXNBdXRvT3JwaGFucygpKQogICAg
ICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENT
U1ZhbHVlQXV0byk7Ci0gICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVl
KHN0eWxlLT5vcnBoYW5zKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKTsKKyAgICAg
ICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUub3JwaGFucygpLCBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUik7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlP
dXRsaW5lQ29sb3I6Ci0gICAgICAgICAgICByZXR1cm4gbV9hbGxvd1Zpc2l0ZWRTdHlsZSA/IGNz
c1ZhbHVlUG9vbC5jcmVhdGVDb2xvclZhbHVlKHN0eWxlLT52aXNpdGVkRGVwZW5kZW50Q29sb3Io
Q1NTUHJvcGVydHlPdXRsaW5lQ29sb3IpKSA6IGN1cnJlbnRDb2xvck9yVmFsaWRDb2xvcihzdHls
ZSwgc3R5bGUtPm91dGxpbmVDb2xvcigpKTsKKyAgICAgICAgICAgIHJldHVybiBtX2FsbG93Vmlz
aXRlZFN0eWxlID8gY3NzVmFsdWVQb29sLmNyZWF0ZUNvbG9yVmFsdWUoc3R5bGUudmlzaXRlZERl
cGVuZGVudENvbG9yKENTU1Byb3BlcnR5T3V0bGluZUNvbG9yKSkgOiBjdXJyZW50Q29sb3JPclZh
bGlkQ29sb3IoJnN0eWxlLCBzdHlsZS5vdXRsaW5lQ29sb3IoKSk7CiAgICAgICAgIGNhc2UgQ1NT
UHJvcGVydHlPdXRsaW5lT2Zmc2V0OgotICAgICAgICAgICAgcmV0dXJuIHpvb21BZGp1c3RlZFBp
eGVsVmFsdWUoc3R5bGUtPm91dGxpbmVPZmZzZXQoKSwgKnN0eWxlKTsKKyAgICAgICAgICAgIHJl
dHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHN0eWxlLm91dGxpbmVPZmZzZXQoKSwgc3R5bGUp
OwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5T3V0bGluZVN0eWxlOgotICAgICAgICAgICAgaWYg
KHN0eWxlLT5vdXRsaW5lU3R5bGVJc0F1dG8oKSkKKyAgICAgICAgICAgIGlmIChzdHlsZS5vdXRs
aW5lU3R5bGVJc0F1dG8oKSkKICAgICAgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNy
ZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUF1dG8pOwotICAgICAgICAgICAgcmV0dXJuIGNz
c1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzdHlsZS0+b3V0bGluZVN0eWxlKCkpOworICAgICAgICAg
ICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzdHlsZS5vdXRsaW5lU3R5bGUoKSk7
CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlPdXRsaW5lV2lkdGg6Ci0gICAgICAgICAgICByZXR1
cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZShzdHlsZS0+b3V0bGluZVdpZHRoKCksICpzdHlsZSk7
CisgICAgICAgICAgICByZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZShzdHlsZS5vdXRsaW5l
V2lkdGgoKSwgc3R5bGUpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5T3ZlcmZsb3c6Ci0gICAg
ICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0ZDo6bWF4KHN0eWxlLT5v
dmVyZmxvd1goKSwgc3R5bGUtPm92ZXJmbG93WSgpKSk7CisgICAgICAgICAgICByZXR1cm4gY3Nz
VmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0ZDo6bWF4KHN0eWxlLm92ZXJmbG93WCgpLCBzdHlsZS5v
dmVyZmxvd1koKSkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5T3ZlcmZsb3dXcmFwOgotICAg
ICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzdHlsZS0+b3ZlcmZsb3dX
cmFwKCkpOworICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzdHls
ZS5vdmVyZmxvd1dyYXAoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlPdmVyZmxvd1g6Ci0g
ICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLT5vdmVyZmxv
d1goKSk7CisgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxl
Lm92ZXJmbG93WCgpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eU92ZXJmbG93WToKLSAgICAg
ICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUtPm92ZXJmbG93WSgp
KTsKKyAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUub3Zl
cmZsb3dZKCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5UGFkZGluZ1RvcDoKLSAgICAgICAg
ICAgIHJldHVybiB6b29tQWRqdXN0ZWRQYWRkaW5nT3JNYXJnaW5QaXhlbFZhbHVlPCZSZW5kZXJT
dHlsZTo6cGFkZGluZ1RvcCwgJlJlbmRlckJveE1vZGVsT2JqZWN0Ojpjb21wdXRlZENTU1BhZGRp
bmdUb3A+KCpzdHlsZSwgcmVuZGVyZXIpOworICAgICAgICAgICAgcmV0dXJuIHpvb21BZGp1c3Rl
ZFBhZGRpbmdPck1hcmdpblBpeGVsVmFsdWU8JlJlbmRlclN0eWxlOjpwYWRkaW5nVG9wLCAmUmVu
ZGVyQm94TW9kZWxPYmplY3Q6OmNvbXB1dGVkQ1NTUGFkZGluZ1RvcD4oc3R5bGUsIHJlbmRlcmVy
KTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVBhZGRpbmdSaWdodDoKLSAgICAgICAgICAgIHJl
dHVybiB6b29tQWRqdXN0ZWRQYWRkaW5nT3JNYXJnaW5QaXhlbFZhbHVlPCZSZW5kZXJTdHlsZTo6
cGFkZGluZ1JpZ2h0LCAmUmVuZGVyQm94TW9kZWxPYmplY3Q6OmNvbXB1dGVkQ1NTUGFkZGluZ1Jp
Z2h0Pigqc3R5bGUsIHJlbmRlcmVyKTsKKyAgICAgICAgICAgIHJldHVybiB6b29tQWRqdXN0ZWRQ
YWRkaW5nT3JNYXJnaW5QaXhlbFZhbHVlPCZSZW5kZXJTdHlsZTo6cGFkZGluZ1JpZ2h0LCAmUmVu
ZGVyQm94TW9kZWxPYmplY3Q6OmNvbXB1dGVkQ1NTUGFkZGluZ1JpZ2h0PihzdHlsZSwgcmVuZGVy
ZXIpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5UGFkZGluZ0JvdHRvbToKLSAgICAgICAgICAg
IHJldHVybiB6b29tQWRqdXN0ZWRQYWRkaW5nT3JNYXJnaW5QaXhlbFZhbHVlPCZSZW5kZXJTdHls
ZTo6cGFkZGluZ0JvdHRvbSwgJlJlbmRlckJveE1vZGVsT2JqZWN0Ojpjb21wdXRlZENTU1BhZGRp
bmdCb3R0b20+KCpzdHlsZSwgcmVuZGVyZXIpOworICAgICAgICAgICAgcmV0dXJuIHpvb21BZGp1
c3RlZFBhZGRpbmdPck1hcmdpblBpeGVsVmFsdWU8JlJlbmRlclN0eWxlOjpwYWRkaW5nQm90dG9t
LCAmUmVuZGVyQm94TW9kZWxPYmplY3Q6OmNvbXB1dGVkQ1NTUGFkZGluZ0JvdHRvbT4oc3R5bGUs
IHJlbmRlcmVyKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVBhZGRpbmdMZWZ0OgotICAgICAg
ICAgICAgcmV0dXJuIHpvb21BZGp1c3RlZFBhZGRpbmdPck1hcmdpblBpeGVsVmFsdWU8JlJlbmRl
clN0eWxlOjpwYWRkaW5nTGVmdCwgJlJlbmRlckJveE1vZGVsT2JqZWN0Ojpjb21wdXRlZENTU1Bh
ZGRpbmdMZWZ0Pigqc3R5bGUsIHJlbmRlcmVyKTsKKyAgICAgICAgICAgIHJldHVybiB6b29tQWRq
dXN0ZWRQYWRkaW5nT3JNYXJnaW5QaXhlbFZhbHVlPCZSZW5kZXJTdHlsZTo6cGFkZGluZ0xlZnQs
ICZSZW5kZXJCb3hNb2RlbE9iamVjdDo6Y29tcHV0ZWRDU1NQYWRkaW5nTGVmdD4oc3R5bGUsIHJl
bmRlcmVyKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVBhZ2VCcmVha0FmdGVyOgotICAgICAg
ICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShjb252ZXJ0VG9QYWdlQnJlYWso
c3R5bGUtPmJyZWFrQWZ0ZXIoKSkpOworICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5j
cmVhdGVWYWx1ZShjb252ZXJ0VG9QYWdlQnJlYWsoc3R5bGUuYnJlYWtBZnRlcigpKSk7CiAgICAg
ICAgIGNhc2UgQ1NTUHJvcGVydHlQYWdlQnJlYWtCZWZvcmU6Ci0gICAgICAgICAgICByZXR1cm4g
Y3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKGNvbnZlcnRUb1BhZ2VCcmVhayhzdHlsZS0+YnJlYWtC
ZWZvcmUoKSkpOworICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShj
b252ZXJ0VG9QYWdlQnJlYWsoc3R5bGUuYnJlYWtCZWZvcmUoKSkpOwogICAgICAgICBjYXNlIENT
U1Byb3BlcnR5UGFnZUJyZWFrSW5zaWRlOgotICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9v
bC5jcmVhdGVWYWx1ZShjb252ZXJ0VG9QYWdlQnJlYWsoc3R5bGUtPmJyZWFrSW5zaWRlKCkpKTsK
KyAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoY29udmVydFRvUGFn
ZUJyZWFrKHN0eWxlLmJyZWFrSW5zaWRlKCkpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJy
ZWFrQWZ0ZXI6Ci0gICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0
eWxlLT5icmVha0FmdGVyKCkpOworICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVh
dGVWYWx1ZShzdHlsZS5icmVha0FmdGVyKCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5QnJl
YWtCZWZvcmU6Ci0gICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0
eWxlLT5icmVha0JlZm9yZSgpKTsKKyAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3Jl
YXRlVmFsdWUoc3R5bGUuYnJlYWtCZWZvcmUoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlC
cmVha0luc2lkZToKLSAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUo
c3R5bGUtPmJyZWFrSW5zaWRlKCkpOworICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5j
cmVhdGVWYWx1ZShzdHlsZS5icmVha0luc2lkZSgpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0
eUhhbmdpbmdQdW5jdHVhdGlvbjoKLSAgICAgICAgICAgIHJldHVybiBoYW5naW5nUHVuY3R1YXRp
b25Ub0NTU1ZhbHVlKHN0eWxlLT5oYW5naW5nUHVuY3R1YXRpb24oKSk7CisgICAgICAgICAgICBy
ZXR1cm4gaGFuZ2luZ1B1bmN0dWF0aW9uVG9DU1NWYWx1ZShzdHlsZS5oYW5naW5nUHVuY3R1YXRp
b24oKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlQb3NpdGlvbjoKLSAgICAgICAgICAgIHJl
dHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUtPnBvc2l0aW9uKCkpOworICAgICAg
ICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzdHlsZS5wb3NpdGlvbigpKTsK
ICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVJpZ2h0OgotICAgICAgICAgICAgcmV0dXJuIHBvc2l0
aW9uT2Zmc2V0VmFsdWUoKnN0eWxlLCBDU1NQcm9wZXJ0eVJpZ2h0LCByZW5kZXJlcik7CisgICAg
ICAgICAgICByZXR1cm4gcG9zaXRpb25PZmZzZXRWYWx1ZShzdHlsZSwgQ1NTUHJvcGVydHlSaWdo
dCwgcmVuZGVyZXIpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UnVieVBvc2l0aW9u
OgotICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzdHlsZS0+cnVi
eVBvc2l0aW9uKCkpOworICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1
ZShzdHlsZS5ydWJ5UG9zaXRpb24oKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlUYWJsZUxh
eW91dDoKLSAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUt
PnRhYmxlTGF5b3V0KCkpOworICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVW
YWx1ZShzdHlsZS50YWJsZUxheW91dCgpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRB
bGlnbjoKLSAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUt
PnRleHRBbGlnbigpKTsKKyAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFs
dWUoc3R5bGUudGV4dEFsaWduKCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5VGV4dERlY29y
YXRpb246Ci0gICAgICAgICAgICByZXR1cm4gcmVuZGVyVGV4dERlY29yYXRpb25GbGFnc1RvQ1NT
VmFsdWUoc3R5bGUtPnRleHREZWNvcmF0aW9uKCkpOworICAgICAgICAgICAgcmV0dXJuIHJlbmRl
clRleHREZWNvcmF0aW9uRmxhZ3NUb0NTU1ZhbHVlKHN0eWxlLnRleHREZWNvcmF0aW9uKCkpOwog
I2lmIEVOQUJMRShDU1MzX1RFWFQpCiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0
QWxpZ25MYXN0OgotICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShz
dHlsZS0+dGV4dEFsaWduTGFzdCgpKTsKKyAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wu
Y3JlYXRlVmFsdWUoc3R5bGUudGV4dEFsaWduTGFzdCgpKTsKICAgICAgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdFRleHRKdXN0aWZ5OgotICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5j
cmVhdGVWYWx1ZShzdHlsZS0+dGV4dEp1c3RpZnkoKSk7CisgICAgICAgICAgICByZXR1cm4gY3Nz
VmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLnRleHRKdXN0aWZ5KCkpOwogI2VuZGlmIC8vIENT
UzNfVEVYVAogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dERlY29yYXRpb246CiAg
ICAgICAgICAgICByZXR1cm4gZ2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JTaG9ydGhhbmRQcm9wZXJ0
aWVzKHdlYmtpdFRleHREZWNvcmF0aW9uU2hvcnRoYW5kKCkpOwogICAgICAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0VGV4dERlY29yYXRpb25MaW5lOgotICAgICAgICAgICAgcmV0dXJuIHJlbmRl
clRleHREZWNvcmF0aW9uRmxhZ3NUb0NTU1ZhbHVlKHN0eWxlLT50ZXh0RGVjb3JhdGlvbigpKTsK
KyAgICAgICAgICAgIHJldHVybiByZW5kZXJUZXh0RGVjb3JhdGlvbkZsYWdzVG9DU1NWYWx1ZShz
dHlsZS50ZXh0RGVjb3JhdGlvbigpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRl
eHREZWNvcmF0aW9uU3R5bGU6Ci0gICAgICAgICAgICByZXR1cm4gcmVuZGVyVGV4dERlY29yYXRp
b25TdHlsZUZsYWdzVG9DU1NWYWx1ZShzdHlsZS0+dGV4dERlY29yYXRpb25TdHlsZSgpKTsKKyAg
ICAgICAgICAgIHJldHVybiByZW5kZXJUZXh0RGVjb3JhdGlvblN0eWxlRmxhZ3NUb0NTU1ZhbHVl
KHN0eWxlLnRleHREZWNvcmF0aW9uU3R5bGUoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRUZXh0RGVjb3JhdGlvbkNvbG9yOgotICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRDb2xv
ck9yVmFsaWRDb2xvcihzdHlsZSwgc3R5bGUtPnRleHREZWNvcmF0aW9uQ29sb3IoKSk7CisgICAg
ICAgICAgICByZXR1cm4gY3VycmVudENvbG9yT3JWYWxpZENvbG9yKCZzdHlsZSwgc3R5bGUudGV4
dERlY29yYXRpb25Db2xvcigpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRE
ZWNvcmF0aW9uU2tpcDoKLSAgICAgICAgICAgIHJldHVybiByZW5kZXJUZXh0RGVjb3JhdGlvblNr
aXBGbGFnc1RvQ1NTVmFsdWUoc3R5bGUtPnRleHREZWNvcmF0aW9uU2tpcCgpKTsKKyAgICAgICAg
ICAgIHJldHVybiByZW5kZXJUZXh0RGVjb3JhdGlvblNraXBGbGFnc1RvQ1NTVmFsdWUoc3R5bGUu
dGV4dERlY29yYXRpb25Ta2lwKCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4
dFVuZGVybGluZVBvc2l0aW9uOgotICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVh
dGVWYWx1ZShzdHlsZS0+dGV4dFVuZGVybGluZVBvc2l0aW9uKCkpOworICAgICAgICAgICAgcmV0
dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzdHlsZS50ZXh0VW5kZXJsaW5lUG9zaXRpb24o
KSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3JhdGlvbnNJbkVmZmVj
dDoKLSAgICAgICAgICAgIHJldHVybiByZW5kZXJUZXh0RGVjb3JhdGlvbkZsYWdzVG9DU1NWYWx1
ZShzdHlsZS0+dGV4dERlY29yYXRpb25zSW5FZmZlY3QoKSk7CisgICAgICAgICAgICByZXR1cm4g
cmVuZGVyVGV4dERlY29yYXRpb25GbGFnc1RvQ1NTVmFsdWUoc3R5bGUudGV4dERlY29yYXRpb25z
SW5FZmZlY3QoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0RmlsbENvbG9y
OgotICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRDb2xvck9yVmFsaWRDb2xvcihzdHlsZSwgc3R5
bGUtPnRleHRGaWxsQ29sb3IoKSk7CisgICAgICAgICAgICByZXR1cm4gY3VycmVudENvbG9yT3JW
YWxpZENvbG9yKCZzdHlsZSwgc3R5bGUudGV4dEZpbGxDb2xvcigpKTsKICAgICAgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpc0NvbG9yOgotICAgICAgICAgICAgcmV0dXJuIGN1
cnJlbnRDb2xvck9yVmFsaWRDb2xvcihzdHlsZSwgc3R5bGUtPnRleHRFbXBoYXNpc0NvbG9yKCkp
OworICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRDb2xvck9yVmFsaWRDb2xvcigmc3R5bGUsIHN0
eWxlLnRleHRFbXBoYXNpc0NvbG9yKCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
VGV4dEVtcGhhc2lzUG9zaXRpb246Ci0gICAgICAgICAgICByZXR1cm4gcmVuZGVyRW1waGFzaXNQ
b3NpdGlvbkZsYWdzVG9DU1NWYWx1ZShzdHlsZS0+dGV4dEVtcGhhc2lzUG9zaXRpb24oKSk7Cisg
ICAgICAgICAgICByZXR1cm4gcmVuZGVyRW1waGFzaXNQb3NpdGlvbkZsYWdzVG9DU1NWYWx1ZShz
dHlsZS50ZXh0RW1waGFzaXNQb3NpdGlvbigpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdFRleHRFbXBoYXNpc1N0eWxlOgotICAgICAgICAgICAgc3dpdGNoIChzdHlsZS0+dGV4dEVt
cGhhc2lzTWFyaygpKSB7CisgICAgICAgICAgICBzd2l0Y2ggKHN0eWxlLnRleHRFbXBoYXNpc01h
cmsoKSkgewogICAgICAgICAgICAgY2FzZSBUZXh0RW1waGFzaXNNYXJrTm9uZToKICAgICAgICAg
ICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1
ZU5vbmUpOwogICAgICAgICAgICAgY2FzZSBUZXh0RW1waGFzaXNNYXJrQ3VzdG9tOgotICAgICAg
ICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUtPnRleHRFbXBo
YXNpc0N1c3RvbU1hcmsoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TVFJJTkcpOworICAgICAg
ICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUudGV4dEVtcGhh
c2lzQ3VzdG9tTWFyaygpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklORyk7CiAgICAgICAg
ICAgICBjYXNlIFRleHRFbXBoYXNpc01hcmtBdXRvOgogICAgICAgICAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogI2lmIEFTU0VSVF9ESVNBQkxFRApAQCAtMzMzOCwyNCArMzM0NSwyNCBA
QCBSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnByb3BlcnR5VmFsdWUo
Q1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELAogICAgICAgICAgICAgY2FzZSBUZXh0RW1waGFzaXNN
YXJrVHJpYW5nbGU6CiAgICAgICAgICAgICBjYXNlIFRleHRFbXBoYXNpc01hcmtTZXNhbWU6CiAg
ICAgICAgICAgICAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFy
YXRlZCgpOwotICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRl
VmFsdWUoc3R5bGUtPnRleHRFbXBoYXNpc0ZpbGwoKSkpOwotICAgICAgICAgICAgICAgIGxpc3Qt
PmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUtPnRleHRFbXBoYXNpc01hcmso
KSkpOworICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFs
dWUoc3R5bGUudGV4dEVtcGhhc2lzRmlsbCgpKSk7CisgICAgICAgICAgICAgICAgbGlzdC0+YXBw
ZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzdHlsZS50ZXh0RW1waGFzaXNNYXJrKCkpKTsK
ICAgICAgICAgICAgICAgICByZXR1cm4gV1RGTW92ZShsaXN0KTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIGNhc2UgQ1NT
UHJvcGVydHlUZXh0SW5kZW50OiB7CiAgICAgICAgICAgICAvLyBJZiBDU1MzX1RFWFQgaXMgZGlz
YWJsZWQgb3IgdGV4dC1pbmRlbnQgaGFzIG9ubHkgb25lIHZhbHVlKDxsZW5ndGg+IHwgPHBlcmNl
bnRhZ2U+KSwKICAgICAgICAgICAgIC8vIGdldFByb3BlcnR5Q1NTVmFsdWUoKSByZXR1cm5zIENT
U1ZhbHVlLgotICAgICAgICAgICAgYXV0byB0ZXh0SW5kZW50ID0gem9vbUFkanVzdGVkUGl4ZWxW
YWx1ZUZvckxlbmd0aChzdHlsZS0+dGV4dEluZGVudCgpLCAqc3R5bGUpOworICAgICAgICAgICAg
YXV0byB0ZXh0SW5kZW50ID0gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZUZvckxlbmd0aChzdHlsZS50
ZXh0SW5kZW50KCksIHN0eWxlKTsKICNpZiBFTkFCTEUoQ1NTM19URVhUKQogICAgICAgICAgICAg
Ly8gSWYgQ1NTM19URVhUIGlzIGVuYWJsZWQgYW5kIHRleHQtaW5kZW50IGhhcyAtd2Via2l0LWVh
Y2gtbGluZSBvciAtd2Via2l0LWhhbmdpbmcsCiAgICAgICAgICAgICAvLyBnZXRQcm9wZXJ0eUNT
U1ZhbHVlKCkgcmV0dXJucyBDU1NWYWx1ZUxpc3QuCi0gICAgICAgICAgICBpZiAoc3R5bGUtPnRl
eHRJbmRlbnRMaW5lKCkgPT0gVGV4dEluZGVudEVhY2hMaW5lIHx8IHN0eWxlLT50ZXh0SW5kZW50
VHlwZSgpID09IFRleHRJbmRlbnRIYW5naW5nKSB7CisgICAgICAgICAgICBpZiAoc3R5bGUudGV4
dEluZGVudExpbmUoKSA9PSBUZXh0SW5kZW50RWFjaExpbmUgfHwgc3R5bGUudGV4dEluZGVudFR5
cGUoKSA9PSBUZXh0SW5kZW50SGFuZ2luZykgewogICAgICAgICAgICAgICAgIGF1dG8gbGlzdCA9
IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKICAgICAgICAgICAgICAgICBs
aXN0LT5hcHBlbmQoV1RGTW92ZSh0ZXh0SW5kZW50KSk7Ci0gICAgICAgICAgICAgICAgaWYgKHN0
eWxlLT50ZXh0SW5kZW50TGluZSgpID09IFRleHRJbmRlbnRFYWNoTGluZSkKKyAgICAgICAgICAg
ICAgICBpZiAoc3R5bGUudGV4dEluZGVudExpbmUoKSA9PSBUZXh0SW5kZW50RWFjaExpbmUpCiAg
ICAgICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRp
ZmllclZhbHVlKENTU1ZhbHVlV2Via2l0RWFjaExpbmUpKTsKLSAgICAgICAgICAgICAgICBpZiAo
c3R5bGUtPnRleHRJbmRlbnRUeXBlKCkgPT0gVGV4dEluZGVudEhhbmdpbmcpCisgICAgICAgICAg
ICAgICAgaWYgKHN0eWxlLnRleHRJbmRlbnRUeXBlKCkgPT0gVGV4dEluZGVudEhhbmdpbmcpCiAg
ICAgICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRp
ZmllclZhbHVlKENTU1ZhbHVlV2Via2l0SGFuZ2luZykpOwogICAgICAgICAgICAgICAgIHJldHVy
biBXVEZNb3ZlKGxpc3QpOwogICAgICAgICAgICAgfQpAQCAtMzM2MywzNSArMzM3MCwzNSBAQCBS
ZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnByb3BlcnR5VmFsdWUoQ1NT
UHJvcGVydHlJRCBwcm9wZXJ0eUlELAogICAgICAgICAgICAgcmV0dXJuIFdURk1vdmUodGV4dElu
ZGVudCk7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRTaGFkb3c6Ci0g
ICAgICAgICAgICByZXR1cm4gdmFsdWVGb3JTaGFkb3coc3R5bGUtPnRleHRTaGFkb3coKSwgcHJv
cGVydHlJRCwgKnN0eWxlKTsKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZUZvclNoYWRvdyhzdHls
ZS50ZXh0U2hhZG93KCksIHByb3BlcnR5SUQsIHN0eWxlKTsKICAgICAgICAgY2FzZSBDU1NQcm9w
ZXJ0eVRleHRSZW5kZXJpbmc6Ci0gICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0
ZVZhbHVlKHN0eWxlLT5mb250RGVzY3JpcHRpb24oKS50ZXh0UmVuZGVyaW5nTW9kZSgpKTsKKyAg
ICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUuZm9udERlc2Ny
aXB0aW9uKCkudGV4dFJlbmRlcmluZ01vZGUoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlU
ZXh0T3ZlcmZsb3c6Ci0gICAgICAgICAgICBpZiAoc3R5bGUtPnRleHRPdmVyZmxvdygpKQorICAg
ICAgICAgICAgaWYgKHN0eWxlLnRleHRPdmVyZmxvdygpKQogICAgICAgICAgICAgICAgIHJldHVy
biBjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlRWxsaXBzaXMpOwog
ICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NT
VmFsdWVDbGlwKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTZWN1cml0eToK
LSAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUtPnRleHRT
ZWN1cml0eSgpKTsKKyAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUo
c3R5bGUudGV4dFNlY3VyaXR5KCkpOwogI2lmIEVOQUJMRShURVhUX0FVVE9TSVpJTkcpCiAgICAg
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0U2l6ZUFkanVzdDoKLSAgICAgICAgICAgIGlm
IChzdHlsZS0+dGV4dFNpemVBZGp1c3QoKS5pc0F1dG8oKSkKKyAgICAgICAgICAgIGlmIChzdHls
ZS50ZXh0U2l6ZUFkanVzdCgpLmlzQXV0bygpKQogICAgICAgICAgICAgICAgIHJldHVybiBjc3NW
YWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlQXV0byk7Ci0gICAgICAgICAg
ICBpZiAoc3R5bGUtPnRleHRTaXplQWRqdXN0KCkuaXNOb25lKCkpCisgICAgICAgICAgICBpZiAo
c3R5bGUudGV4dFNpemVBZGp1c3QoKS5pc05vbmUoKSkKICAgICAgICAgICAgICAgICByZXR1cm4g
Y3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vbmUpOwotICAgICAg
ICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3R5bGUtPnRleHRTaXplQWRq
dXN0KCkucGVyY2VudGFnZSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0UpOwor
ICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3R5bGUudGV4dFNp
emVBZGp1c3QoKS5wZXJjZW50YWdlKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFH
RSk7CiAjZW5kaWYKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2VDb2xv
cjoKLSAgICAgICAgICAgIHJldHVybiBjdXJyZW50Q29sb3JPclZhbGlkQ29sb3Ioc3R5bGUsIHN0
eWxlLT50ZXh0U3Ryb2tlQ29sb3IoKSk7CisgICAgICAgICAgICByZXR1cm4gY3VycmVudENvbG9y
T3JWYWxpZENvbG9yKCZzdHlsZSwgc3R5bGUudGV4dFN0cm9rZUNvbG9yKCkpOwogICAgICAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZVdpZHRoOgotICAgICAgICAgICAgcmV0dXJu
IHpvb21BZGp1c3RlZFBpeGVsVmFsdWUoc3R5bGUtPnRleHRTdHJva2VXaWR0aCgpLCAqc3R5bGUp
OworICAgICAgICAgICAgcmV0dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFsdWUoc3R5bGUudGV4dFN0
cm9rZVdpZHRoKCksIHN0eWxlKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRUcmFuc2Zv
cm06Ci0gICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLT50
ZXh0VHJhbnNmb3JtKCkpOworICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVW
YWx1ZShzdHlsZS50ZXh0VHJhbnNmb3JtKCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5VG9w
OgotICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uT2Zmc2V0VmFsdWUoKnN0eWxlLCBDU1NQcm9w
ZXJ0eVRvcCwgcmVuZGVyZXIpOworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uT2Zmc2V0VmFs
dWUoc3R5bGUsIENTU1Byb3BlcnR5VG9wLCByZW5kZXJlcik7CiAgICAgICAgIGNhc2UgQ1NTUHJv
cGVydHlVbmljb2RlQmlkaToKLSAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRl
VmFsdWUoc3R5bGUtPnVuaWNvZGVCaWRpKCkpOworICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVl
UG9vbC5jcmVhdGVWYWx1ZShzdHlsZS51bmljb2RlQmlkaSgpKTsKICAgICAgICAgY2FzZSBDU1NQ
cm9wZXJ0eVZlcnRpY2FsQWxpZ246Ci0gICAgICAgICAgICBzd2l0Y2ggKHN0eWxlLT52ZXJ0aWNh
bEFsaWduKCkpIHsKKyAgICAgICAgICAgIHN3aXRjaCAoc3R5bGUudmVydGljYWxBbGlnbigpKSB7
CiAgICAgICAgICAgICAgICAgY2FzZSBCQVNFTElORToKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVCYXNlbGluZSk7
CiAgICAgICAgICAgICAgICAgY2FzZSBNSURETEU6CkBAIC0zNDExLDcxICszNDE4LDcxIEBAIFJl
ZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZShDU1NQ
cm9wZXJ0eUlEIHByb3BlcnR5SUQsCiAgICAgICAgICAgICAgICAgY2FzZSBCQVNFTElORV9NSURE
TEU6CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRp
ZmllclZhbHVlKENTU1ZhbHVlV2Via2l0QmFzZWxpbmVNaWRkbGUpOwogICAgICAgICAgICAgICAg
IGNhc2UgTEVOR1RIOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNy
ZWF0ZVZhbHVlKHN0eWxlLT52ZXJ0aWNhbEFsaWduTGVuZ3RoKCkpOworICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLnZlcnRpY2FsQWxpZ25M
ZW5ndGgoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5
VmlzaWJpbGl0eToKLSAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUo
c3R5bGUtPnZpc2liaWxpdHkoKSk7CisgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNy
ZWF0ZVZhbHVlKHN0eWxlLnZpc2liaWxpdHkoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlX
aGl0ZVNwYWNlOgotICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShz
dHlsZS0+d2hpdGVTcGFjZSgpKTsKKyAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3Jl
YXRlVmFsdWUoc3R5bGUud2hpdGVTcGFjZSgpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdp
ZG93czoKLSAgICAgICAgICAgIGlmIChzdHlsZS0+aGFzQXV0b1dpZG93cygpKQorICAgICAgICAg
ICAgaWYgKHN0eWxlLmhhc0F1dG9XaWRvd3MoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gY3Nz
VmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUF1dG8pOwotICAgICAgICAg
ICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzdHlsZS0+d2lkb3dzKCksIENTU1By
aW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKTsKKyAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBv
b2wuY3JlYXRlVmFsdWUoc3R5bGUud2lkb3dzKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVN
QkVSKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdpZHRoOgogICAgICAgICAgICAgaWYgKHJl
bmRlcmVyICYmICFyZW5kZXJlci0+aXNSZW5kZXJTVkdNb2RlbE9iamVjdCgpKSB7CiAgICAgICAg
ICAgICAgICAgLy8gQWNjb3JkaW5nIHRvIGh0dHA6Ly93d3cudzMub3JnL1RSL0NTUzIvdmlzdWRl
dC5odG1sI3RoZS13aWR0aC1wcm9wZXJ0eSwKICAgICAgICAgICAgICAgICAvLyB0aGUgIndpZHRo
IiBwcm9wZXJ0eSBkb2VzIG5vdCBhcHBseSBmb3Igbm9uLXJlcGxhY2VkIGlubGluZSBlbGVtZW50
cy4KICAgICAgICAgICAgICAgICBpZiAoaXNOb25SZXBsYWNlZElubGluZSgqcmVuZGVyZXIpKQog
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJW
YWx1ZShDU1NWYWx1ZUF1dG8pOwotICAgICAgICAgICAgICAgIHJldHVybiB6b29tQWRqdXN0ZWRQ
aXhlbFZhbHVlKHNpemluZ0JveCgqcmVuZGVyZXIpLndpZHRoKCksICpzdHlsZSk7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFsdWUoc2l6aW5nQm94KCpyZW5kZXJl
cikud2lkdGgoKSwgc3R5bGUpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIHpv
b21BZGp1c3RlZFBpeGVsVmFsdWVGb3JMZW5ndGgoc3R5bGUtPndpZHRoKCksICpzdHlsZSk7Cisg
ICAgICAgICAgICByZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZUZvckxlbmd0aChzdHlsZS53
aWR0aCgpLCBzdHlsZSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXaWxsQ2hhbmdlOgotICAg
ICAgICAgICAgcmV0dXJuIHdpbGxDaGFuZ2VQcm9wZXJ0eVZhbHVlKHN0eWxlLT53aWxsQ2hhbmdl
KCkpOworICAgICAgICAgICAgcmV0dXJuIHdpbGxDaGFuZ2VQcm9wZXJ0eVZhbHVlKHN0eWxlLndp
bGxDaGFuZ2UoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXb3JkQnJlYWs6Ci0gICAgICAg
ICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLT53b3JkQnJlYWsoKSk7
CisgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLndvcmRC
cmVhaygpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdvcmRTcGFjaW5nOgotICAgICAgICAg
ICAgcmV0dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFsdWUoc3R5bGUtPmZvbnRDYXNjYWRlKCkud29y
ZFNwYWNpbmcoKSwgKnN0eWxlKTsKKyAgICAgICAgICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhl
bFZhbHVlKHN0eWxlLmZvbnRDYXNjYWRlKCkud29yZFNwYWNpbmcoKSwgc3R5bGUpOwogICAgICAg
ICBjYXNlIENTU1Byb3BlcnR5V29yZFdyYXA6Ci0gICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQ
b29sLmNyZWF0ZVZhbHVlKHN0eWxlLT5vdmVyZmxvd1dyYXAoKSk7CisgICAgICAgICAgICByZXR1
cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLm92ZXJmbG93V3JhcCgpKTsKICAgICAg
ICAgY2FzZSBDU1NQcm9wZXJ0eUxpbmVCcmVhazoKLSAgICAgICAgICAgIHJldHVybiBjc3NWYWx1
ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUtPmxpbmVCcmVhaygpKTsKKyAgICAgICAgICAgIHJldHVy
biBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUubGluZUJyZWFrKCkpOwogICAgICAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0TmJzcE1vZGU6Ci0gICAgICAgICAgICByZXR1cm4gY3NzVmFs
dWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLT5uYnNwTW9kZSgpKTsKKyAgICAgICAgICAgIHJldHVy
biBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUubmJzcE1vZGUoKSk7CiAgICAgICAgIGNh
c2UgQ1NTUHJvcGVydHlSZXNpemU6Ci0gICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNy
ZWF0ZVZhbHVlKHN0eWxlLT5yZXNpemUoKSk7CisgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQ
b29sLmNyZWF0ZVZhbHVlKHN0eWxlLnJlc2l6ZSgpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdEZvbnRLZXJuaW5nOgotICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVh
dGVWYWx1ZShzdHlsZS0+Zm9udERlc2NyaXB0aW9uKCkua2VybmluZygpKTsKKyAgICAgICAgICAg
IHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUuZm9udERlc2NyaXB0aW9uKCku
a2VybmluZygpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZvbnRTbW9vdGhpbmc6
Ci0gICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLT5mb250
RGVzY3JpcHRpb24oKS5mb250U21vb3RoaW5nKCkpOworICAgICAgICAgICAgcmV0dXJuIGNzc1Zh
bHVlUG9vbC5jcmVhdGVWYWx1ZShzdHlsZS5mb250RGVzY3JpcHRpb24oKS5mb250U21vb3RoaW5n
KCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5Rm9udFZhcmlhbnRMaWdhdHVyZXM6Ci0gICAg
ICAgICAgICByZXR1cm4gZm9udFZhcmlhbnRMaWdhdHVyZXNQcm9wZXJ0eVZhbHVlKHN0eWxlLT5m
b250RGVzY3JpcHRpb24oKS52YXJpYW50Q29tbW9uTGlnYXR1cmVzKCksIHN0eWxlLT5mb250RGVz
Y3JpcHRpb24oKS52YXJpYW50RGlzY3JldGlvbmFyeUxpZ2F0dXJlcygpLCBzdHlsZS0+Zm9udERl
c2NyaXB0aW9uKCkudmFyaWFudEhpc3RvcmljYWxMaWdhdHVyZXMoKSwgc3R5bGUtPmZvbnREZXNj
cmlwdGlvbigpLnZhcmlhbnRDb250ZXh0dWFsQWx0ZXJuYXRlcygpKTsKKyAgICAgICAgICAgIHJl
dHVybiBmb250VmFyaWFudExpZ2F0dXJlc1Byb3BlcnR5VmFsdWUoc3R5bGUuZm9udERlc2NyaXB0
aW9uKCkudmFyaWFudENvbW1vbkxpZ2F0dXJlcygpLCBzdHlsZS5mb250RGVzY3JpcHRpb24oKS52
YXJpYW50RGlzY3JldGlvbmFyeUxpZ2F0dXJlcygpLCBzdHlsZS5mb250RGVzY3JpcHRpb24oKS52
YXJpYW50SGlzdG9yaWNhbExpZ2F0dXJlcygpLCBzdHlsZS5mb250RGVzY3JpcHRpb24oKS52YXJp
YW50Q29udGV4dHVhbEFsdGVybmF0ZXMoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlGb250
VmFyaWFudFBvc2l0aW9uOgotICAgICAgICAgICAgcmV0dXJuIGZvbnRWYXJpYW50UG9zaXRpb25Q
cm9wZXJ0eVZhbHVlKHN0eWxlLT5mb250RGVzY3JpcHRpb24oKS52YXJpYW50UG9zaXRpb24oKSk7
CisgICAgICAgICAgICByZXR1cm4gZm9udFZhcmlhbnRQb3NpdGlvblByb3BlcnR5VmFsdWUoc3R5
bGUuZm9udERlc2NyaXB0aW9uKCkudmFyaWFudFBvc2l0aW9uKCkpOwogICAgICAgICBjYXNlIENT
U1Byb3BlcnR5Rm9udFZhcmlhbnRDYXBzOgotICAgICAgICAgICAgcmV0dXJuIGZvbnRWYXJpYW50
Q2Fwc1Byb3BlcnR5VmFsdWUoc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpLnZhcmlhbnRDYXBzKCkp
OworICAgICAgICAgICAgcmV0dXJuIGZvbnRWYXJpYW50Q2Fwc1Byb3BlcnR5VmFsdWUoc3R5bGUu
Zm9udERlc2NyaXB0aW9uKCkudmFyaWFudENhcHMoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVy
dHlGb250VmFyaWFudE51bWVyaWM6Ci0gICAgICAgICAgICByZXR1cm4gZm9udFZhcmlhbnROdW1l
cmljUHJvcGVydHlWYWx1ZShzdHlsZS0+Zm9udERlc2NyaXB0aW9uKCkudmFyaWFudE51bWVyaWNG
aWd1cmUoKSwgc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpLnZhcmlhbnROdW1lcmljU3BhY2luZygp
LCBzdHlsZS0+Zm9udERlc2NyaXB0aW9uKCkudmFyaWFudE51bWVyaWNGcmFjdGlvbigpLCBzdHls
ZS0+Zm9udERlc2NyaXB0aW9uKCkudmFyaWFudE51bWVyaWNPcmRpbmFsKCksIHN0eWxlLT5mb250
RGVzY3JpcHRpb24oKS52YXJpYW50TnVtZXJpY1NsYXNoZWRaZXJvKCkpOworICAgICAgICAgICAg
cmV0dXJuIGZvbnRWYXJpYW50TnVtZXJpY1Byb3BlcnR5VmFsdWUoc3R5bGUuZm9udERlc2NyaXB0
aW9uKCkudmFyaWFudE51bWVyaWNGaWd1cmUoKSwgc3R5bGUuZm9udERlc2NyaXB0aW9uKCkudmFy
aWFudE51bWVyaWNTcGFjaW5nKCksIHN0eWxlLmZvbnREZXNjcmlwdGlvbigpLnZhcmlhbnROdW1l
cmljRnJhY3Rpb24oKSwgc3R5bGUuZm9udERlc2NyaXB0aW9uKCkudmFyaWFudE51bWVyaWNPcmRp
bmFsKCksIHN0eWxlLmZvbnREZXNjcmlwdGlvbigpLnZhcmlhbnROdW1lcmljU2xhc2hlZFplcm8o
KSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlGb250VmFyaWFudEFsdGVybmF0ZXM6Ci0gICAg
ICAgICAgICByZXR1cm4gZm9udFZhcmlhbnRBbHRlcm5hdGVzUHJvcGVydHlWYWx1ZShzdHlsZS0+
Zm9udERlc2NyaXB0aW9uKCkudmFyaWFudEFsdGVybmF0ZXMoKSk7CisgICAgICAgICAgICByZXR1
cm4gZm9udFZhcmlhbnRBbHRlcm5hdGVzUHJvcGVydHlWYWx1ZShzdHlsZS5mb250RGVzY3JpcHRp
b24oKS52YXJpYW50QWx0ZXJuYXRlcygpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUZvbnRW
YXJpYW50RWFzdEFzaWFuOgotICAgICAgICAgICAgcmV0dXJuIGZvbnRWYXJpYW50RWFzdEFzaWFu
UHJvcGVydHlWYWx1ZShzdHlsZS0+Zm9udERlc2NyaXB0aW9uKCkudmFyaWFudEVhc3RBc2lhblZh
cmlhbnQoKSwgc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpLnZhcmlhbnRFYXN0QXNpYW5XaWR0aCgp
LCBzdHlsZS0+Zm9udERlc2NyaXB0aW9uKCkudmFyaWFudEVhc3RBc2lhblJ1YnkoKSk7CisgICAg
ICAgICAgICByZXR1cm4gZm9udFZhcmlhbnRFYXN0QXNpYW5Qcm9wZXJ0eVZhbHVlKHN0eWxlLmZv
bnREZXNjcmlwdGlvbigpLnZhcmlhbnRFYXN0QXNpYW5WYXJpYW50KCksIHN0eWxlLmZvbnREZXNj
cmlwdGlvbigpLnZhcmlhbnRFYXN0QXNpYW5XaWR0aCgpLCBzdHlsZS5mb250RGVzY3JpcHRpb24o
KS52YXJpYW50RWFzdEFzaWFuUnVieSgpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVpJbmRl
eDoKLSAgICAgICAgICAgIGlmIChzdHlsZS0+aGFzQXV0b1pJbmRleCgpKQorICAgICAgICAgICAg
aWYgKHN0eWxlLmhhc0F1dG9aSW5kZXgoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gY3NzVmFs
dWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUF1dG8pOwotICAgICAgICAgICAg
cmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzdHlsZS0+ekluZGV4KCksIENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfTlVNQkVSKTsKKyAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wu
Y3JlYXRlVmFsdWUoc3R5bGUuekluZGV4KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVS
KTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVpvb206Ci0gICAgICAgICAgICByZXR1cm4gY3Nz
VmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLT56b29tKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfTlVNQkVSKTsKKyAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUo
c3R5bGUuem9vbSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUik7CiAgICAgICAgIGNh
c2UgQ1NTUHJvcGVydHlCb3hTaXppbmc6Ci0gICAgICAgICAgICBpZiAoc3R5bGUtPmJveFNpemlu
ZygpID09IENPTlRFTlRfQk9YKQorICAgICAgICAgICAgaWYgKHN0eWxlLmJveFNpemluZygpID09
IENPTlRFTlRfQk9YKQogICAgICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRl
SWRlbnRpZmllclZhbHVlKENTU1ZhbHVlQ29udGVudEJveCk7CiAgICAgICAgICAgICByZXR1cm4g
Y3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUJvcmRlckJveCk7CiAj
aWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0RGFzaGJvYXJkUmVnaW9uOgogICAgICAgICB7Ci0gICAgICAgICAgICBjb25zdCBWZWN0b3I8
U3R5bGVEYXNoYm9hcmRSZWdpb24+JiByZWdpb25zID0gc3R5bGUtPmRhc2hib2FyZFJlZ2lvbnMo
KTsKKyAgICAgICAgICAgIGNvbnN0IFZlY3RvcjxTdHlsZURhc2hib2FyZFJlZ2lvbj4mIHJlZ2lv
bnMgPSBzdHlsZS5kYXNoYm9hcmRSZWdpb25zKCk7CiAgICAgICAgICAgICB1bnNpZ25lZCBjb3Vu
dCA9IHJlZ2lvbnMuc2l6ZSgpOwogICAgICAgICAgICAgaWYgKGNvdW50ID09IDEgJiYgcmVnaW9u
c1swXS50eXBlID09IFN0eWxlRGFzaGJvYXJkUmVnaW9uOjpOb25lKQogICAgICAgICAgICAgICAg
IHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTm9uZSk7
CkBAIC0zNDg4LDEwICszNDk1LDEwIEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4
dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsCiAKICAgICAg
ICAgICAgICAgICByZWdpb24tPm1fbGFiZWwgPSBzdHlsZVJlZ2lvbi5sYWJlbDsKICAgICAgICAg
ICAgICAgICBMZW5ndGhCb3ggb2Zmc2V0ID0gc3R5bGVSZWdpb24ub2Zmc2V0OwotICAgICAgICAg
ICAgICAgIHJlZ2lvbi0+c2V0VG9wKHpvb21BZGp1c3RlZFBpeGVsVmFsdWUob2Zmc2V0LnRvcCgp
LnZhbHVlKCksICpzdHlsZSkpOwotICAgICAgICAgICAgICAgIHJlZ2lvbi0+c2V0UmlnaHQoem9v
bUFkanVzdGVkUGl4ZWxWYWx1ZShvZmZzZXQucmlnaHQoKS52YWx1ZSgpLCAqc3R5bGUpKTsKLSAg
ICAgICAgICAgICAgICByZWdpb24tPnNldEJvdHRvbSh6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKG9m
ZnNldC5ib3R0b20oKS52YWx1ZSgpLCAqc3R5bGUpKTsKLSAgICAgICAgICAgICAgICByZWdpb24t
PnNldExlZnQoem9vbUFkanVzdGVkUGl4ZWxWYWx1ZShvZmZzZXQubGVmdCgpLnZhbHVlKCksICpz
dHlsZSkpOworICAgICAgICAgICAgICAgIHJlZ2lvbi0+c2V0VG9wKHpvb21BZGp1c3RlZFBpeGVs
VmFsdWUob2Zmc2V0LnRvcCgpLnZhbHVlKCksIHN0eWxlKSk7CisgICAgICAgICAgICAgICAgcmVn
aW9uLT5zZXRSaWdodCh6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKG9mZnNldC5yaWdodCgpLnZhbHVl
KCksIHN0eWxlKSk7CisgICAgICAgICAgICAgICAgcmVnaW9uLT5zZXRCb3R0b20oem9vbUFkanVz
dGVkUGl4ZWxWYWx1ZShvZmZzZXQuYm90dG9tKCkudmFsdWUoKSwgc3R5bGUpKTsKKyAgICAgICAg
ICAgICAgICByZWdpb24tPnNldExlZnQoem9vbUFkanVzdGVkUGl4ZWxWYWx1ZShvZmZzZXQubGVm
dCgpLnZhbHVlKCksIHN0eWxlKSk7CiAgICAgICAgICAgICAgICAgcmVnaW9uLT5tX2lzUmVjdGFu
Z2xlID0gKHN0eWxlUmVnaW9uLnR5cGUgPT0gU3R5bGVEYXNoYm9hcmRSZWdpb246OlJlY3Rhbmds
ZSk7CiAgICAgICAgICAgICAgICAgcmVnaW9uLT5tX2lzQ2lyY2xlID0gKHN0eWxlUmVnaW9uLnR5
cGUgPT0gU3R5bGVEYXNoYm9hcmRSZWdpb246OkNpcmNsZSk7CiAKQEAgLTM1MDUsMTAgKzM1MTIs
MTAgQEAgUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZh
bHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwKICAgICAgICAgfQogI2VuZGlmCiAgICAgICAg
IGNhc2UgQ1NTUHJvcGVydHlBbmltYXRpb25EZWxheToKLSAgICAgICAgICAgIHJldHVybiBkZWxh
eVZhbHVlKHN0eWxlLT5hbmltYXRpb25zKCkpOworICAgICAgICAgICAgcmV0dXJuIGRlbGF5VmFs
dWUoc3R5bGUuYW5pbWF0aW9ucygpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUFuaW1hdGlv
bkRpcmVjdGlvbjogewogICAgICAgICAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVh
dGVDb21tYVNlcGFyYXRlZCgpOwotICAgICAgICAgICAgY29uc3QgQW5pbWF0aW9uTGlzdCogdCA9
IHN0eWxlLT5hbmltYXRpb25zKCk7CisgICAgICAgICAgICBjb25zdCBBbmltYXRpb25MaXN0KiB0
ID0gc3R5bGUuYW5pbWF0aW9ucygpOwogICAgICAgICAgICAgaWYgKHQpIHsKICAgICAgICAgICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHQtPnNpemUoKTsgKytpKSB7CiAgICAgICAgICAg
ICAgICAgICAgIHN3aXRjaCAodC0+YW5pbWF0aW9uKGkpLmRpcmVjdGlvbigpKSB7CkBAIC0zNTMx
LDEwICszNTM4LDEwIEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6
cHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsCiAgICAgICAgICAgICByZXR1
cm4gV1RGTW92ZShsaXN0KTsKICAgICAgICAgfQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5QW5p
bWF0aW9uRHVyYXRpb246Ci0gICAgICAgICAgICByZXR1cm4gZHVyYXRpb25WYWx1ZShzdHlsZS0+
YW5pbWF0aW9ucygpKTsKKyAgICAgICAgICAgIHJldHVybiBkdXJhdGlvblZhbHVlKHN0eWxlLmFu
aW1hdGlvbnMoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlBbmltYXRpb25GaWxsTW9kZTog
ewogICAgICAgICAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFy
YXRlZCgpOwotICAgICAgICAgICAgY29uc3QgQW5pbWF0aW9uTGlzdCogdCA9IHN0eWxlLT5hbmlt
YXRpb25zKCk7CisgICAgICAgICAgICBjb25zdCBBbmltYXRpb25MaXN0KiB0ID0gc3R5bGUuYW5p
bWF0aW9ucygpOwogICAgICAgICAgICAgaWYgKHQpIHsKICAgICAgICAgICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHQtPnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICAgICAgICAgIHN3
aXRjaCAodC0+YW5pbWF0aW9uKGkpLmZpbGxNb2RlKCkpIHsKQEAgLTM1NTgsNyArMzU2NSw3IEBA
IFJlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZShD
U1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsCiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NQcm9w
ZXJ0eUFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50OiB7CiAgICAgICAgICAgICBhdXRvIGxpc3QgPSBD
U1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7Ci0gICAgICAgICAgICBjb25zdCBB
bmltYXRpb25MaXN0KiB0ID0gc3R5bGUtPmFuaW1hdGlvbnMoKTsKKyAgICAgICAgICAgIGNvbnN0
IEFuaW1hdGlvbkxpc3QqIHQgPSBzdHlsZS5hbmltYXRpb25zKCk7CiAgICAgICAgICAgICBpZiAo
dCkgewogICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdC0+c2l6ZSgpOyAr
K2kpIHsKICAgICAgICAgICAgICAgICAgICAgZG91YmxlIGl0ZXJhdGlvbkNvdW50ID0gdC0+YW5p
bWF0aW9uKGkpLml0ZXJhdGlvbkNvdW50KCk7CkBAIC0zNTczLDcgKzM1ODAsNyBAQCBSZWZQdHI8
Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnByb3BlcnR5VmFsdWUoQ1NTUHJvcGVy
dHlJRCBwcm9wZXJ0eUlELAogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlBbmlt
YXRpb25OYW1lOiB7CiAgICAgICAgICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0
ZUNvbW1hU2VwYXJhdGVkKCk7Ci0gICAgICAgICAgICBjb25zdCBBbmltYXRpb25MaXN0KiB0ID0g
c3R5bGUtPmFuaW1hdGlvbnMoKTsKKyAgICAgICAgICAgIGNvbnN0IEFuaW1hdGlvbkxpc3QqIHQg
PSBzdHlsZS5hbmltYXRpb25zKCk7CiAgICAgICAgICAgICBpZiAodCkgewogICAgICAgICAgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdC0+c2l6ZSgpOyArK2kpCiAgICAgICAgICAgICAg
ICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUodC0+YW5pbWF0aW9u
KGkpLm5hbWUoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TVFJJTkcpKTsKQEAgLTM1ODMsNyAr
MzU5MCw3IEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6cHJvcGVy
dHlWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsCiAgICAgICAgIH0KICAgICAgICAgY2Fz
ZSBDU1NQcm9wZXJ0eUFuaW1hdGlvblBsYXlTdGF0ZTogewogICAgICAgICAgICAgYXV0byBsaXN0
ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOwotICAgICAgICAgICAgY29u
c3QgQW5pbWF0aW9uTGlzdCogdCA9IHN0eWxlLT5hbmltYXRpb25zKCk7CisgICAgICAgICAgICBj
b25zdCBBbmltYXRpb25MaXN0KiB0ID0gc3R5bGUuYW5pbWF0aW9ucygpOwogICAgICAgICAgICAg
aWYgKHQpIHsKICAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHQtPnNpemUo
KTsgKytpKSB7CiAgICAgICAgICAgICAgICAgICAgIGludCBwcm9wID0gdC0+YW5pbWF0aW9uKGkp
LnBsYXlTdGF0ZSgpOwpAQCAtMzU5Nyw3MSArMzYwNCw3MSBAQCBSZWZQdHI8Q1NTVmFsdWU+IENv
bXB1dGVkU3R5bGVFeHRyYWN0b3I6OnByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0
eUlELAogICAgICAgICAgICAgcmV0dXJuIFdURk1vdmUobGlzdCk7CiAgICAgICAgIH0KICAgICAg
ICAgY2FzZSBDU1NQcm9wZXJ0eUFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uOgotICAgICAgICAgICAg
cmV0dXJuIHRpbWluZ0Z1bmN0aW9uVmFsdWUoc3R5bGUtPmFuaW1hdGlvbnMoKSk7CisgICAgICAg
ICAgICByZXR1cm4gdGltaW5nRnVuY3Rpb25WYWx1ZShzdHlsZS5hbmltYXRpb25zKCkpOwogI2lm
IEVOQUJMRShDU1NfQU5JTUFUSU9OU19MRVZFTF8yKQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0QW5pbWF0aW9uVHJpZ2dlcjoKLSAgICAgICAgICAgIHJldHVybiBhbmltYXRpb25Ucmln
Z2VyVmFsdWUoc3R5bGUtPmFuaW1hdGlvbnMoKSwgKnN0eWxlKTsKKyAgICAgICAgICAgIHJldHVy
biBhbmltYXRpb25UcmlnZ2VyVmFsdWUoc3R5bGUuYW5pbWF0aW9ucygpLCBzdHlsZSk7CiAjZW5k
aWYKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEFwcGVhcmFuY2U6Ci0gICAgICAgICAg
ICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLT5hcHBlYXJhbmNlKCkpOwor
ICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzdHlsZS5hcHBlYXJh
bmNlKCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QXNwZWN0UmF0aW86Ci0gICAg
ICAgICAgICBpZiAoc3R5bGUtPmFzcGVjdFJhdGlvVHlwZSgpID09IEFzcGVjdFJhdGlvQXV0bykK
KyAgICAgICAgICAgIGlmIChzdHlsZS5hc3BlY3RSYXRpb1R5cGUoKSA9PSBBc3BlY3RSYXRpb0F1
dG8pCiAgICAgICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVy
VmFsdWUoQ1NTVmFsdWVBdXRvKTsKLSAgICAgICAgICAgIGlmIChzdHlsZS0+YXNwZWN0UmF0aW9U
eXBlKCkgPT0gQXNwZWN0UmF0aW9Gcm9tRGltZW5zaW9ucykKKyAgICAgICAgICAgIGlmIChzdHls
ZS5hc3BlY3RSYXRpb1R5cGUoKSA9PSBBc3BlY3RSYXRpb0Zyb21EaW1lbnNpb25zKQogICAgICAg
ICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1Zh
bHVlRnJvbURpbWVuc2lvbnMpOwotICAgICAgICAgICAgaWYgKHN0eWxlLT5hc3BlY3RSYXRpb1R5
cGUoKSA9PSBBc3BlY3RSYXRpb0Zyb21JbnRyaW5zaWMpCisgICAgICAgICAgICBpZiAoc3R5bGUu
YXNwZWN0UmF0aW9UeXBlKCkgPT0gQXNwZWN0UmF0aW9Gcm9tSW50cmluc2ljKQogICAgICAgICAg
ICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVl
RnJvbUludHJpbnNpYyk7Ci0gICAgICAgICAgICByZXR1cm4gQ1NTQXNwZWN0UmF0aW9WYWx1ZTo6
Y3JlYXRlKHN0eWxlLT5hc3BlY3RSYXRpb051bWVyYXRvcigpLCBzdHlsZS0+YXNwZWN0UmF0aW9E
ZW5vbWluYXRvcigpKTsKKyAgICAgICAgICAgIHJldHVybiBDU1NBc3BlY3RSYXRpb1ZhbHVlOjpj
cmVhdGUoc3R5bGUuYXNwZWN0UmF0aW9OdW1lcmF0b3IoKSwgc3R5bGUuYXNwZWN0UmF0aW9EZW5v
bWluYXRvcigpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJhY2tmYWNlVmlzaWJp
bGl0eToKLSAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZh
bHVlKChzdHlsZS0+YmFja2ZhY2VWaXNpYmlsaXR5KCkgPT0gQmFja2ZhY2VWaXNpYmlsaXR5SGlk
ZGVuKSA/IENTU1ZhbHVlSGlkZGVuIDogQ1NTVmFsdWVWaXNpYmxlKTsKKyAgICAgICAgICAgIHJl
dHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKChzdHlsZS5iYWNrZmFjZVZp
c2liaWxpdHkoKSA9PSBCYWNrZmFjZVZpc2liaWxpdHlIaWRkZW4pID8gQ1NTVmFsdWVIaWRkZW4g
OiBDU1NWYWx1ZVZpc2libGUpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVy
SW1hZ2U6Ci0gICAgICAgICAgICByZXR1cm4gdmFsdWVGb3JOaW5lUGllY2VJbWFnZShzdHlsZS0+
Ym9yZGVySW1hZ2UoKSk7CisgICAgICAgICAgICByZXR1cm4gdmFsdWVGb3JOaW5lUGllY2VJbWFn
ZShzdHlsZS5ib3JkZXJJbWFnZSgpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlcklt
YWdlT3V0c2V0OgotICAgICAgICAgICAgcmV0dXJuIHZhbHVlRm9yTmluZVBpZWNlSW1hZ2VRdWFk
KHN0eWxlLT5ib3JkZXJJbWFnZSgpLm91dHNldCgpKTsKKyAgICAgICAgICAgIHJldHVybiB2YWx1
ZUZvck5pbmVQaWVjZUltYWdlUXVhZChzdHlsZS5ib3JkZXJJbWFnZSgpLm91dHNldCgpKTsKICAg
ICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckltYWdlUmVwZWF0OgotICAgICAgICAgICAgcmV0
dXJuIHZhbHVlRm9yTmluZVBpZWNlSW1hZ2VSZXBlYXQoc3R5bGUtPmJvcmRlckltYWdlKCkpOwor
ICAgICAgICAgICAgcmV0dXJuIHZhbHVlRm9yTmluZVBpZWNlSW1hZ2VSZXBlYXQoc3R5bGUuYm9y
ZGVySW1hZ2UoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJJbWFnZVNsaWNlOgot
ICAgICAgICAgICAgcmV0dXJuIHZhbHVlRm9yTmluZVBpZWNlSW1hZ2VTbGljZShzdHlsZS0+Ym9y
ZGVySW1hZ2UoKSk7CisgICAgICAgICAgICByZXR1cm4gdmFsdWVGb3JOaW5lUGllY2VJbWFnZVNs
aWNlKHN0eWxlLmJvcmRlckltYWdlKCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVy
SW1hZ2VXaWR0aDoKLSAgICAgICAgICAgIHJldHVybiB2YWx1ZUZvck5pbmVQaWVjZUltYWdlUXVh
ZChzdHlsZS0+Ym9yZGVySW1hZ2UoKS5ib3JkZXJTbGljZXMoKSk7CisgICAgICAgICAgICByZXR1
cm4gdmFsdWVGb3JOaW5lUGllY2VJbWFnZVF1YWQoc3R5bGUuYm9yZGVySW1hZ2UoKS5ib3JkZXJT
bGljZXMoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrQm94SW1hZ2U6Ci0g
ICAgICAgICAgICByZXR1cm4gdmFsdWVGb3JOaW5lUGllY2VJbWFnZShzdHlsZS0+bWFza0JveElt
YWdlKCkpOworICAgICAgICAgICAgcmV0dXJuIHZhbHVlRm9yTmluZVBpZWNlSW1hZ2Uoc3R5bGUu
bWFza0JveEltYWdlKCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza0JveElt
YWdlT3V0c2V0OgotICAgICAgICAgICAgcmV0dXJuIHZhbHVlRm9yTmluZVBpZWNlSW1hZ2VRdWFk
KHN0eWxlLT5tYXNrQm94SW1hZ2UoKS5vdXRzZXQoKSk7CisgICAgICAgICAgICByZXR1cm4gdmFs
dWVGb3JOaW5lUGllY2VJbWFnZVF1YWQoc3R5bGUubWFza0JveEltYWdlKCkub3V0c2V0KCkpOwog
ICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza0JveEltYWdlUmVwZWF0OgotICAgICAg
ICAgICAgcmV0dXJuIHZhbHVlRm9yTmluZVBpZWNlSW1hZ2VSZXBlYXQoc3R5bGUtPm1hc2tCb3hJ
bWFnZSgpKTsKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZUZvck5pbmVQaWVjZUltYWdlUmVwZWF0
KHN0eWxlLm1hc2tCb3hJbWFnZSgpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1h
c2tCb3hJbWFnZVNsaWNlOgotICAgICAgICAgICAgcmV0dXJuIHZhbHVlRm9yTmluZVBpZWNlSW1h
Z2VTbGljZShzdHlsZS0+bWFza0JveEltYWdlKCkpOworICAgICAgICAgICAgcmV0dXJuIHZhbHVl
Rm9yTmluZVBpZWNlSW1hZ2VTbGljZShzdHlsZS5tYXNrQm94SW1hZ2UoKSk7CiAgICAgICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrQm94SW1hZ2VXaWR0aDoKLSAgICAgICAgICAgIHJldHVy
biB2YWx1ZUZvck5pbmVQaWVjZUltYWdlUXVhZChzdHlsZS0+bWFza0JveEltYWdlKCkuYm9yZGVy
U2xpY2VzKCkpOworICAgICAgICAgICAgcmV0dXJuIHZhbHVlRm9yTmluZVBpZWNlSW1hZ2VRdWFk
KHN0eWxlLm1hc2tCb3hJbWFnZSgpLmJvcmRlclNsaWNlcygpKTsKICAgICAgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdE1hc2tCb3hJbWFnZVNvdXJjZToKLSAgICAgICAgICAgIGlmIChzdHlsZS0+
bWFza0JveEltYWdlU291cmNlKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHN0eWxlLT5tYXNr
Qm94SW1hZ2VTb3VyY2UoKS0+Y3NzVmFsdWUoKTsKKyAgICAgICAgICAgIGlmIChzdHlsZS5tYXNr
Qm94SW1hZ2VTb3VyY2UoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gc3R5bGUubWFza0JveElt
YWdlU291cmNlKCktPmNzc1ZhbHVlKCk7CiAgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29s
LmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vbmUpOwogICAgICAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0Rm9udFNpemVEZWx0YToKICAgICAgICAgICAgIC8vIE5vdCBhIHJlYWwgc3R5
bGUgcHJvcGVydHkgLS0gdXNlZCBieSB0aGUgZWRpdGluZyBlbmdpbmUgLS0gc28gaGFzIG5vIGNv
bXB1dGVkIHZhbHVlLgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRJbml0aWFsTGV0dGVyOiB7Ci0gICAgICAgICAgICBhdXRvIGRyb3AgPSAhc3R5bGUt
PmluaXRpYWxMZXR0ZXJEcm9wKCkgPyBjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVl
KENTU1ZhbHVlTm9ybWFsKSA6IGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzdHlsZS0+aW5pdGlh
bExldHRlckRyb3AoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpOwotICAgICAgICAg
ICAgYXV0byBzaXplID0gIXN0eWxlLT5pbml0aWFsTGV0dGVySGVpZ2h0KCkgPyBjc3NWYWx1ZVBv
b2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTm9ybWFsKSA6IGNzc1ZhbHVlUG9vbC5j
cmVhdGVWYWx1ZShzdHlsZS0+aW5pdGlhbExldHRlckhlaWdodCgpLCBDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTX05VTUJFUik7CisgICAgICAgICAgICBhdXRvIGRyb3AgPSAhc3R5bGUuaW5pdGlhbExl
dHRlckRyb3AoKSA/IGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVO
b3JtYWwpIDogY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLmluaXRpYWxMZXR0ZXJEcm9w
KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKTsKKyAgICAgICAgICAgIGF1dG8gc2l6
ZSA9ICFzdHlsZS5pbml0aWFsTGV0dGVySGVpZ2h0KCkgPyBjc3NWYWx1ZVBvb2wuY3JlYXRlSWRl
bnRpZmllclZhbHVlKENTU1ZhbHVlTm9ybWFsKSA6IGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShz
dHlsZS5pbml0aWFsTGV0dGVySGVpZ2h0KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVS
KTsKICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoUGFpcjo6Y3Jl
YXRlKFdURk1vdmUoZHJvcCksIFdURk1vdmUoc2l6ZSkpKTsKICAgICAgICAgfQogICAgICAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQm90dG9tQ29sbGFwc2U6CiAgICAgICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRNYXJnaW5BZnRlckNvbGxhcHNlOgotICAgICAgICAgICAgcmV0dXJu
IGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzdHlsZS0+bWFyZ2luQWZ0ZXJDb2xsYXBzZSgpKTsK
KyAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUubWFyZ2lu
QWZ0ZXJDb2xsYXBzZSgpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpblRv
cENvbGxhcHNlOgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQmVmb3JlQ29s
bGFwc2U6Ci0gICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxl
LT5tYXJnaW5CZWZvcmVDb2xsYXBzZSgpKTsKKyAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBv
b2wuY3JlYXRlVmFsdWUoc3R5bGUubWFyZ2luQmVmb3JlQ29sbGFwc2UoKSk7CiAjaWYgRU5BQkxF
KEFDQ0VMRVJBVEVEX09WRVJGTE9XX1NDUk9MTElORykKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdE92ZXJmbG93U2Nyb2xsaW5nOgotICAgICAgICAgICAgaWYgKCFzdHlsZS0+dXNlVG91
Y2hPdmVyZmxvd1Njcm9sbGluZygpKQorICAgICAgICAgICAgaWYgKCFzdHlsZS51c2VUb3VjaE92
ZXJmbG93U2Nyb2xsaW5nKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5j
cmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVBdXRvKTsKICAgICAgICAgICAgIHJldHVybiBj
c3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlVG91Y2gpOwogI2VuZGlm
CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlQZXJzcGVjdGl2ZToKLSAgICAgICAgICAgIGlmICgh
c3R5bGUtPmhhc1BlcnNwZWN0aXZlKCkpCisgICAgICAgICAgICBpZiAoIXN0eWxlLmhhc1BlcnNw
ZWN0aXZlKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVu
dGlmaWVyVmFsdWUoQ1NTVmFsdWVOb25lKTsKLSAgICAgICAgICAgIHJldHVybiB6b29tQWRqdXN0
ZWRQaXhlbFZhbHVlKHN0eWxlLT5wZXJzcGVjdGl2ZSgpLCAqc3R5bGUpOworICAgICAgICAgICAg
cmV0dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFsdWUoc3R5bGUucGVyc3BlY3RpdmUoKSwgc3R5bGUp
OwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5UGVyc3BlY3RpdmVPcmlnaW46IHsKICAgICAgICAg
ICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKICAg
ICAgICAgICAgIGlmIChyZW5kZXJlcikgewpAQCAtMzY2OSw1NiArMzY3Niw1NiBAQCBSZWZQdHI8
Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnByb3BlcnR5VmFsdWUoQ1NTUHJvcGVy
dHlJRCBwcm9wZXJ0eUlELAogICAgICAgICAgICAgICAgIGlmIChpczxSZW5kZXJCb3g+KCpyZW5k
ZXJlcikpCiAgICAgICAgICAgICAgICAgICAgIGJveCA9IGRvd25jYXN0PFJlbmRlckJveD4oKnJl
bmRlcmVyKS5ib3JkZXJCb3hSZWN0KCk7CiAKLSAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQo
em9vbUFkanVzdGVkUGl4ZWxWYWx1ZShtaW5pbXVtVmFsdWVGb3JMZW5ndGgoc3R5bGUtPnBlcnNw
ZWN0aXZlT3JpZ2luWCgpLCBib3gud2lkdGgoKSksICpzdHlsZSkpOwotICAgICAgICAgICAgICAg
IGxpc3QtPmFwcGVuZCh6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKG1pbmltdW1WYWx1ZUZvckxlbmd0
aChzdHlsZS0+cGVyc3BlY3RpdmVPcmlnaW5ZKCksIGJveC5oZWlnaHQoKSksICpzdHlsZSkpOwor
ICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZCh6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKG1pbmlt
dW1WYWx1ZUZvckxlbmd0aChzdHlsZS5wZXJzcGVjdGl2ZU9yaWdpblgoKSwgYm94LndpZHRoKCkp
LCBzdHlsZSkpOworICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZCh6b29tQWRqdXN0ZWRQaXhl
bFZhbHVlKG1pbmltdW1WYWx1ZUZvckxlbmd0aChzdHlsZS5wZXJzcGVjdGl2ZU9yaWdpblkoKSwg
Ym94LmhlaWdodCgpKSwgc3R5bGUpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2Ug
ewotICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZCh6b29tQWRqdXN0ZWRQaXhlbFZhbHVlRm9y
TGVuZ3RoKHN0eWxlLT5wZXJzcGVjdGl2ZU9yaWdpblgoKSwgKnN0eWxlKSk7Ci0gICAgICAgICAg
ICAgICAgbGlzdC0+YXBwZW5kKHpvb21BZGp1c3RlZFBpeGVsVmFsdWVGb3JMZW5ndGgoc3R5bGUt
PnBlcnNwZWN0aXZlT3JpZ2luWSgpLCAqc3R5bGUpKTsKKyAgICAgICAgICAgICAgICBsaXN0LT5h
cHBlbmQoem9vbUFkanVzdGVkUGl4ZWxWYWx1ZUZvckxlbmd0aChzdHlsZS5wZXJzcGVjdGl2ZU9y
aWdpblgoKSwgc3R5bGUpKTsKKyAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoem9vbUFkanVz
dGVkUGl4ZWxWYWx1ZUZvckxlbmd0aChzdHlsZS5wZXJzcGVjdGl2ZU9yaWdpblkoKSwgc3R5bGUp
KTsKIAogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIFdURk1vdmUobGlzdCk7CiAg
ICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFJ0bE9yZGVyaW5nOgotICAg
ICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoc3R5bGUt
PnJ0bE9yZGVyaW5nKCkgPyBDU1NWYWx1ZVZpc3VhbCA6IENTU1ZhbHVlTG9naWNhbCk7CisgICAg
ICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShzdHlsZS5y
dGxPcmRlcmluZygpID8gQ1NTVmFsdWVWaXN1YWwgOiBDU1NWYWx1ZUxvZ2ljYWwpOwogI2lmIEVO
QUJMRShUT1VDSF9FVkVOVFMpCiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUYXBIaWdo
bGlnaHRDb2xvcjoKLSAgICAgICAgICAgIHJldHVybiBjdXJyZW50Q29sb3JPclZhbGlkQ29sb3Io
c3R5bGUsIHN0eWxlLT50YXBIaWdobGlnaHRDb2xvcigpKTsKKyAgICAgICAgICAgIHJldHVybiBj
dXJyZW50Q29sb3JPclZhbGlkQ29sb3IoJnN0eWxlLCBzdHlsZS50YXBIaWdobGlnaHRDb2xvcigp
KTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVRvdWNoQWN0aW9uOgotICAgICAgICAgICAgcmV0
dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzdHlsZS0+dG91Y2hBY3Rpb24oKSk7CisgICAg
ICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLnRvdWNoQWN0aW9u
KCkpOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oSU9TKQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0VG91Y2hDYWxsb3V0OgotICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVh
dGVJZGVudGlmaWVyVmFsdWUoc3R5bGUtPnRvdWNoQ2FsbG91dEVuYWJsZWQoKSA/IENTU1ZhbHVl
RGVmYXVsdCA6IENTU1ZhbHVlTm9uZSk7CisgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29s
LmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShzdHlsZS50b3VjaENhbGxvdXRFbmFibGVkKCkgPyBDU1NW
YWx1ZURlZmF1bHQgOiBDU1NWYWx1ZU5vbmUpOwogI2VuZGlmCiAgICAgICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRVc2VyRHJhZzoKLSAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3Jl
YXRlVmFsdWUoc3R5bGUtPnVzZXJEcmFnKCkpOworICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVl
UG9vbC5jcmVhdGVWYWx1ZShzdHlsZS51c2VyRHJhZygpKTsKICAgICAgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdFVzZXJTZWxlY3Q6Ci0gICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNy
ZWF0ZVZhbHVlKHN0eWxlLT51c2VyU2VsZWN0KCkpOworICAgICAgICAgICAgcmV0dXJuIGNzc1Zh
bHVlUG9vbC5jcmVhdGVWYWx1ZShzdHlsZS51c2VyU2VsZWN0KCkpOwogICAgICAgICBjYXNlIENT
U1Byb3BlcnR5Qm9yZGVyQm90dG9tTGVmdFJhZGl1czoKLSAgICAgICAgICAgIHJldHVybiBib3Jk
ZXJSYWRpdXNDb3JuZXJWYWx1ZShzdHlsZS0+Ym9yZGVyQm90dG9tTGVmdFJhZGl1cygpLCAqc3R5
bGUpOworICAgICAgICAgICAgcmV0dXJuIGJvcmRlclJhZGl1c0Nvcm5lclZhbHVlKHN0eWxlLmJv
cmRlckJvdHRvbUxlZnRSYWRpdXMoKSwgc3R5bGUpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5
Qm9yZGVyQm90dG9tUmlnaHRSYWRpdXM6Ci0gICAgICAgICAgICByZXR1cm4gYm9yZGVyUmFkaXVz
Q29ybmVyVmFsdWUoc3R5bGUtPmJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzKCksICpzdHlsZSk7Cisg
ICAgICAgICAgICByZXR1cm4gYm9yZGVyUmFkaXVzQ29ybmVyVmFsdWUoc3R5bGUuYm9yZGVyQm90
dG9tUmlnaHRSYWRpdXMoKSwgc3R5bGUpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVy
VG9wTGVmdFJhZGl1czoKLSAgICAgICAgICAgIHJldHVybiBib3JkZXJSYWRpdXNDb3JuZXJWYWx1
ZShzdHlsZS0+Ym9yZGVyVG9wTGVmdFJhZGl1cygpLCAqc3R5bGUpOworICAgICAgICAgICAgcmV0
dXJuIGJvcmRlclJhZGl1c0Nvcm5lclZhbHVlKHN0eWxlLmJvcmRlclRvcExlZnRSYWRpdXMoKSwg
c3R5bGUpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyVG9wUmlnaHRSYWRpdXM6Ci0g
ICAgICAgICAgICByZXR1cm4gYm9yZGVyUmFkaXVzQ29ybmVyVmFsdWUoc3R5bGUtPmJvcmRlclRv
cFJpZ2h0UmFkaXVzKCksICpzdHlsZSk7CisgICAgICAgICAgICByZXR1cm4gYm9yZGVyUmFkaXVz
Q29ybmVyVmFsdWUoc3R5bGUuYm9yZGVyVG9wUmlnaHRSYWRpdXMoKSwgc3R5bGUpOwogICAgICAg
ICBjYXNlIENTU1Byb3BlcnR5Q2xpcDogewotICAgICAgICAgICAgaWYgKCFzdHlsZS0+aGFzQ2xp
cCgpKQorICAgICAgICAgICAgaWYgKCFzdHlsZS5oYXNDbGlwKCkpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVBdXRvKTsK
ICAgICAgICAgICAgIGF1dG8gcmVjdCA9IFJlY3Q6OmNyZWF0ZSgpOwotICAgICAgICAgICAgcmVj
dC0+c2V0VG9wKGF1dG9Pclpvb21BZGp1c3RlZFZhbHVlKHN0eWxlLT5jbGlwKCkudG9wKCksICpz
dHlsZSkpOwotICAgICAgICAgICAgcmVjdC0+c2V0UmlnaHQoYXV0b09yWm9vbUFkanVzdGVkVmFs
dWUoc3R5bGUtPmNsaXAoKS5yaWdodCgpLCAqc3R5bGUpKTsKLSAgICAgICAgICAgIHJlY3QtPnNl
dEJvdHRvbShhdXRvT3Jab29tQWRqdXN0ZWRWYWx1ZShzdHlsZS0+Y2xpcCgpLmJvdHRvbSgpLCAq
c3R5bGUpKTsKLSAgICAgICAgICAgIHJlY3QtPnNldExlZnQoYXV0b09yWm9vbUFkanVzdGVkVmFs
dWUoc3R5bGUtPmNsaXAoKS5sZWZ0KCksICpzdHlsZSkpOworICAgICAgICAgICAgcmVjdC0+c2V0
VG9wKGF1dG9Pclpvb21BZGp1c3RlZFZhbHVlKHN0eWxlLmNsaXAoKS50b3AoKSwgc3R5bGUpKTsK
KyAgICAgICAgICAgIHJlY3QtPnNldFJpZ2h0KGF1dG9Pclpvb21BZGp1c3RlZFZhbHVlKHN0eWxl
LmNsaXAoKS5yaWdodCgpLCBzdHlsZSkpOworICAgICAgICAgICAgcmVjdC0+c2V0Qm90dG9tKGF1
dG9Pclpvb21BZGp1c3RlZFZhbHVlKHN0eWxlLmNsaXAoKS5ib3R0b20oKSwgc3R5bGUpKTsKKyAg
ICAgICAgICAgIHJlY3QtPnNldExlZnQoYXV0b09yWm9vbUFkanVzdGVkVmFsdWUoc3R5bGUuY2xp
cCgpLmxlZnQoKSwgc3R5bGUpKTsKICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3Jl
YXRlVmFsdWUoV1RGTW92ZShyZWN0KSk7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NQcm9w
ZXJ0eVNwZWFrQXM6Ci0gICAgICAgICAgICByZXR1cm4gc3BlYWtBc1RvQ1NTVmFsdWUoc3R5bGUt
PnNwZWFrQXMoKSk7CisgICAgICAgICAgICByZXR1cm4gc3BlYWtBc1RvQ1NTVmFsdWUoc3R5bGUu
c3BlYWtBcygpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVRyYW5zZm9ybToKLSAgICAgICAg
ICAgIHJldHVybiBjb21wdXRlZFRyYW5zZm9ybShyZW5kZXJlciwgKnN0eWxlKTsKKyAgICAgICAg
ICAgIHJldHVybiBjb21wdXRlZFRyYW5zZm9ybShyZW5kZXJlciwgc3R5bGUpOwogICAgICAgICBj
YXNlIENTU1Byb3BlcnR5VHJhbnNmb3JtQm94OgotICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1p
dGl2ZVZhbHVlOjpjcmVhdGUoc3R5bGUtPnRyYW5zZm9ybUJveCgpKTsKKyAgICAgICAgICAgIHJl
dHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHN0eWxlLnRyYW5zZm9ybUJveCgpKTsKICAg
ICAgICAgY2FzZSBDU1NQcm9wZXJ0eVRyYW5zZm9ybU9yaWdpbjogewogICAgICAgICAgICAgYXV0
byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwogICAgICAgICAg
ICAgaWYgKHJlbmRlcmVyKSB7CkBAIC0zNzI2LDMxICszNzMzLDMxIEBAIFJlZlB0cjxDU1NWYWx1
ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUlEIHBy
b3BlcnR5SUQsCiAgICAgICAgICAgICAgICAgaWYgKGlzPFJlbmRlckJveD4oKnJlbmRlcmVyKSkK
ICAgICAgICAgICAgICAgICAgICAgYm94ID0gZG93bmNhc3Q8UmVuZGVyQm94PigqcmVuZGVyZXIp
LmJvcmRlckJveFJlY3QoKTsKIAotICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZCh6b29tQWRq
dXN0ZWRQaXhlbFZhbHVlKG1pbmltdW1WYWx1ZUZvckxlbmd0aChzdHlsZS0+dHJhbnNmb3JtT3Jp
Z2luWCgpLCBib3gud2lkdGgoKSksICpzdHlsZSkpOwotICAgICAgICAgICAgICAgIGxpc3QtPmFw
cGVuZCh6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKG1pbmltdW1WYWx1ZUZvckxlbmd0aChzdHlsZS0+
dHJhbnNmb3JtT3JpZ2luWSgpLCBib3guaGVpZ2h0KCkpLCAqc3R5bGUpKTsKLSAgICAgICAgICAg
ICAgICBpZiAoc3R5bGUtPnRyYW5zZm9ybU9yaWdpblooKSAhPSAwKQotICAgICAgICAgICAgICAg
ICAgICBsaXN0LT5hcHBlbmQoem9vbUFkanVzdGVkUGl4ZWxWYWx1ZShzdHlsZS0+dHJhbnNmb3Jt
T3JpZ2luWigpLCAqc3R5bGUpKTsKKyAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoem9vbUFk
anVzdGVkUGl4ZWxWYWx1ZShtaW5pbXVtVmFsdWVGb3JMZW5ndGgoc3R5bGUudHJhbnNmb3JtT3Jp
Z2luWCgpLCBib3gud2lkdGgoKSksIHN0eWxlKSk7CisgICAgICAgICAgICAgICAgbGlzdC0+YXBw
ZW5kKHpvb21BZGp1c3RlZFBpeGVsVmFsdWUobWluaW11bVZhbHVlRm9yTGVuZ3RoKHN0eWxlLnRy
YW5zZm9ybU9yaWdpblkoKSwgYm94LmhlaWdodCgpKSwgc3R5bGUpKTsKKyAgICAgICAgICAgICAg
ICBpZiAoc3R5bGUudHJhbnNmb3JtT3JpZ2luWigpKQorICAgICAgICAgICAgICAgICAgICBsaXN0
LT5hcHBlbmQoem9vbUFkanVzdGVkUGl4ZWxWYWx1ZShzdHlsZS50cmFuc2Zvcm1PcmlnaW5aKCks
IHN0eWxlKSk7CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGxpc3QtPmFw
cGVuZCh6b29tQWRqdXN0ZWRQaXhlbFZhbHVlRm9yTGVuZ3RoKHN0eWxlLT50cmFuc2Zvcm1Pcmln
aW5YKCksICpzdHlsZSkpOwotICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZCh6b29tQWRqdXN0
ZWRQaXhlbFZhbHVlRm9yTGVuZ3RoKHN0eWxlLT50cmFuc2Zvcm1PcmlnaW5ZKCksICpzdHlsZSkp
OwotICAgICAgICAgICAgICAgIGlmIChzdHlsZS0+dHJhbnNmb3JtT3JpZ2luWigpICE9IDApCi0g
ICAgICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZCh6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHN0
eWxlLT50cmFuc2Zvcm1PcmlnaW5aKCksICpzdHlsZSkpOworICAgICAgICAgICAgICAgIGxpc3Qt
PmFwcGVuZCh6b29tQWRqdXN0ZWRQaXhlbFZhbHVlRm9yTGVuZ3RoKHN0eWxlLnRyYW5zZm9ybU9y
aWdpblgoKSwgc3R5bGUpKTsKKyAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoem9vbUFkanVz
dGVkUGl4ZWxWYWx1ZUZvckxlbmd0aChzdHlsZS50cmFuc2Zvcm1PcmlnaW5ZKCksIHN0eWxlKSk7
CisgICAgICAgICAgICAgICAgaWYgKHN0eWxlLnRyYW5zZm9ybU9yaWdpblooKSkKKyAgICAgICAg
ICAgICAgICAgICAgbGlzdC0+YXBwZW5kKHpvb21BZGp1c3RlZFBpeGVsVmFsdWUoc3R5bGUudHJh
bnNmb3JtT3JpZ2luWigpLCBzdHlsZSkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0
dXJuIFdURk1vdmUobGlzdCk7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVRy
YW5zZm9ybVN0eWxlOgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtU3R5
bGU6Ci0gICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1
ZSgoc3R5bGUtPnRyYW5zZm9ybVN0eWxlM0QoKSA9PSBUcmFuc2Zvcm1TdHlsZTNEUHJlc2VydmUz
RCkgPyBDU1NWYWx1ZVByZXNlcnZlM2QgOiBDU1NWYWx1ZUZsYXQpOworICAgICAgICAgICAgcmV0
dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoKHN0eWxlLnRyYW5zZm9ybVN0
eWxlM0QoKSA9PSBUcmFuc2Zvcm1TdHlsZTNEUHJlc2VydmUzRCkgPyBDU1NWYWx1ZVByZXNlcnZl
M2QgOiBDU1NWYWx1ZUZsYXQpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5VHJhbnNpdGlvbkRl
bGF5OgotICAgICAgICAgICAgcmV0dXJuIGRlbGF5VmFsdWUoc3R5bGUtPnRyYW5zaXRpb25zKCkp
OworICAgICAgICAgICAgcmV0dXJuIGRlbGF5VmFsdWUoc3R5bGUudHJhbnNpdGlvbnMoKSk7CiAg
ICAgICAgIGNhc2UgQ1NTUHJvcGVydHlUcmFuc2l0aW9uRHVyYXRpb246Ci0gICAgICAgICAgICBy
ZXR1cm4gZHVyYXRpb25WYWx1ZShzdHlsZS0+dHJhbnNpdGlvbnMoKSk7CisgICAgICAgICAgICBy
ZXR1cm4gZHVyYXRpb25WYWx1ZShzdHlsZS50cmFuc2l0aW9ucygpKTsKICAgICAgICAgY2FzZSBD
U1NQcm9wZXJ0eVRyYW5zaXRpb25Qcm9wZXJ0eToKLSAgICAgICAgICAgIHJldHVybiB0cmFuc2l0
aW9uUHJvcGVydHlWYWx1ZShzdHlsZS0+dHJhbnNpdGlvbnMoKSk7CisgICAgICAgICAgICByZXR1
cm4gdHJhbnNpdGlvblByb3BlcnR5VmFsdWUoc3R5bGUudHJhbnNpdGlvbnMoKSk7CiAgICAgICAg
IGNhc2UgQ1NTUHJvcGVydHlUcmFuc2l0aW9uVGltaW5nRnVuY3Rpb246Ci0gICAgICAgICAgICBy
ZXR1cm4gdGltaW5nRnVuY3Rpb25WYWx1ZShzdHlsZS0+dHJhbnNpdGlvbnMoKSk7CisgICAgICAg
ICAgICByZXR1cm4gdGltaW5nRnVuY3Rpb25WYWx1ZShzdHlsZS50cmFuc2l0aW9ucygpKTsKICAg
ICAgICAgY2FzZSBDU1NQcm9wZXJ0eVRyYW5zaXRpb246IHsKLSAgICAgICAgICAgIGlmIChhdXRv
KiBhbmltYXRpb25MaXN0ID0gc3R5bGUtPnRyYW5zaXRpb25zKCkpIHsKKyAgICAgICAgICAgIGlm
IChhdXRvKiBhbmltYXRpb25MaXN0ID0gc3R5bGUudHJhbnNpdGlvbnMoKSkgewogICAgICAgICAg
ICAgICAgIGF1dG8gdHJhbnNpdGlvbnNMaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNl
cGFyYXRlZCgpOwogICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYW5pbWF0
aW9uTGlzdC0+c2l6ZSgpOyArK2kpIHsKICAgICAgICAgICAgICAgICAgICAgYXV0byBsaXN0ID0g
Q1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwpAQCAtMzc3MywzMyArMzc4MCwz
MyBAQCBSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnByb3BlcnR5VmFs
dWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELAogICAgICAgICAgICAgcmV0dXJuIFdURk1vdmUo
bGlzdCk7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVBvaW50ZXJFdmVudHM6
Ci0gICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLT5wb2lu
dGVyRXZlbnRzKCkpOworICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1
ZShzdHlsZS5wb2ludGVyRXZlbnRzKCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
TGluZUdyaWQ6Ci0gICAgICAgICAgICBpZiAoc3R5bGUtPmxpbmVHcmlkKCkuaXNOdWxsKCkpCisg
ICAgICAgICAgICBpZiAoc3R5bGUubGluZUdyaWQoKS5pc051bGwoKSkKICAgICAgICAgICAgICAg
ICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vbmUp
OwotICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzdHlsZS0+bGlu
ZUdyaWQoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TVFJJTkcpOworICAgICAgICAgICAgcmV0
dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzdHlsZS5saW5lR3JpZCgpLCBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX1NUUklORyk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRMaW5l
U25hcDoKLSAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHN0eWxl
LT5saW5lU25hcCgpKTsKKyAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3Jl
YXRlKHN0eWxlLmxpbmVTbmFwKCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TGlu
ZUFsaWduOgotICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3R5
bGUtPmxpbmVBbGlnbigpKTsKKyAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6
Y3JlYXRlKHN0eWxlLmxpbmVBbGlnbigpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdyaXRp
bmdNb2RlOgotICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzdHls
ZS0+d3JpdGluZ01vZGUoKSk7CisgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0
ZVZhbHVlKHN0eWxlLndyaXRpbmdNb2RlKCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0VGV4dENvbWJpbmU6Ci0gICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZh
bHVlKHN0eWxlLT50ZXh0Q29tYmluZSgpKTsKKyAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBv
b2wuY3JlYXRlVmFsdWUoc3R5bGUudGV4dENvbWJpbmUoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRUZXh0T3JpZW50YXRpb246Ci0gICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0
aXZlVmFsdWU6OmNyZWF0ZShzdHlsZS0+dGV4dE9yaWVudGF0aW9uKCkpOworICAgICAgICAgICAg
cmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3R5bGUudGV4dE9yaWVudGF0aW9uKCkp
OwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TGluZUJveENvbnRhaW46Ci0gICAgICAg
ICAgICByZXR1cm4gY3JlYXRlTGluZUJveENvbnRhaW5WYWx1ZShzdHlsZS0+bGluZUJveENvbnRh
aW4oKSk7CisgICAgICAgICAgICByZXR1cm4gY3JlYXRlTGluZUJveENvbnRhaW5WYWx1ZShzdHls
ZS5saW5lQm94Q29udGFpbigpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUFsdDoKLSAgICAg
ICAgICAgIHJldHVybiBhbHRUZXh0VG9DU1NWYWx1ZSgqc3R5bGUpOworICAgICAgICAgICAgcmV0
dXJuIGFsdFRleHRUb0NTU1ZhbHVlKHN0eWxlKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUNv
bnRlbnQ6Ci0gICAgICAgICAgICByZXR1cm4gY29udGVudFRvQ1NTVmFsdWUoKnN0eWxlKTsKKyAg
ICAgICAgICAgIHJldHVybiBjb250ZW50VG9DU1NWYWx1ZShzdHlsZSk7CiAgICAgICAgIGNhc2Ug
Q1NTUHJvcGVydHlDb3VudGVySW5jcmVtZW50OgotICAgICAgICAgICAgcmV0dXJuIGNvdW50ZXJU
b0NTU1ZhbHVlKCpzdHlsZSwgcHJvcGVydHlJRCk7CisgICAgICAgICAgICByZXR1cm4gY291bnRl
clRvQ1NTVmFsdWUoc3R5bGUsIHByb3BlcnR5SUQpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5
Q291bnRlclJlc2V0OgotICAgICAgICAgICAgcmV0dXJuIGNvdW50ZXJUb0NTU1ZhbHVlKCpzdHls
ZSwgcHJvcGVydHlJRCk7CisgICAgICAgICAgICByZXR1cm4gY291bnRlclRvQ1NTVmFsdWUoc3R5
bGUsIHByb3BlcnR5SUQpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q2xpcFBhdGg6
IHsKLSAgICAgICAgICAgIGF1dG8qIG9wZXJhdGlvbiA9IHN0eWxlLT5jbGlwUGF0aCgpOworICAg
ICAgICAgICAgYXV0byogb3BlcmF0aW9uID0gc3R5bGUuY2xpcFBhdGgoKTsKICAgICAgICAgICAg
IGlmICghb3BlcmF0aW9uKQogICAgICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3Jl
YXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTm9uZSk7CiAgICAgICAgICAgICBpZiAoaXM8UmVm
ZXJlbmNlQ2xpcFBhdGhPcGVyYXRpb24+KCpvcGVyYXRpb24pKQpAQCAtMzgwNyw3ICszODE0LDcg
QEAgUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVl
KENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwKICAgICAgICAgICAgIGF1dG8gbGlzdCA9IENTU1Zh
bHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKICAgICAgICAgICAgIGlmIChpczxTaGFw
ZUNsaXBQYXRoT3BlcmF0aW9uPigqb3BlcmF0aW9uKSkgewogICAgICAgICAgICAgICAgIGF1dG8m
IHNoYXBlT3BlcmF0aW9uID0gZG93bmNhc3Q8U2hhcGVDbGlwUGF0aE9wZXJhdGlvbj4oKm9wZXJh
dGlvbik7Ci0gICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKHZhbHVlRm9yQmFzaWNTaGFwZSgq
c3R5bGUsIHNoYXBlT3BlcmF0aW9uLmJhc2ljU2hhcGUoKSkpOworICAgICAgICAgICAgICAgIGxp
c3QtPmFwcGVuZCh2YWx1ZUZvckJhc2ljU2hhcGUoc3R5bGUsIHNoYXBlT3BlcmF0aW9uLmJhc2lj
U2hhcGUoKSkpOwogICAgICAgICAgICAgICAgIGlmIChzaGFwZU9wZXJhdGlvbi5yZWZlcmVuY2VC
b3goKSAhPSBCb3hNaXNzaW5nKQogICAgICAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3Nz
VmFsdWVQb29sLmNyZWF0ZVZhbHVlKHNoYXBlT3BlcmF0aW9uLnJlZmVyZW5jZUJveCgpKSk7CiAg
ICAgICAgICAgICB9CkBAIC0zODE2LDI1ICszODIzLDI1IEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ29t
cHV0ZWRTdHlsZUV4dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5
SUQsCiAgICAgICAgICAgICByZXR1cm4gV1RGTW92ZShsaXN0KTsKICAgICAgICAgfQogICAgICAg
ICBjYXNlIENTU1Byb3BlcnR5U2hhcGVNYXJnaW46Ci0gICAgICAgICAgICByZXR1cm4gY3NzVmFs
dWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLT5zaGFwZU1hcmdpbigpLCAqc3R5bGUpOworICAgICAg
ICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzdHlsZS5zaGFwZU1hcmdpbigp
LCBzdHlsZSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlTaGFwZUltYWdlVGhyZXNob2xkOgot
ICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzdHlsZS0+c2hhcGVJ
bWFnZVRocmVzaG9sZCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUik7CisgICAgICAg
ICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLnNoYXBlSW1hZ2VUaHJl
c2hvbGQoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpOwogICAgICAgICBjYXNlIENT
U1Byb3BlcnR5U2hhcGVPdXRzaWRlOgotICAgICAgICAgICAgcmV0dXJuIHNoYXBlUHJvcGVydHlW
YWx1ZSgqc3R5bGUsIHN0eWxlLT5zaGFwZU91dHNpZGUoKSk7CisgICAgICAgICAgICByZXR1cm4g
c2hhcGVQcm9wZXJ0eVZhbHVlKHN0eWxlLCBzdHlsZS5zaGFwZU91dHNpZGUoKSk7CiAgICAgICAg
IGNhc2UgQ1NTUHJvcGVydHlGaWx0ZXI6Ci0gICAgICAgICAgICByZXR1cm4gdmFsdWVGb3JGaWx0
ZXIoKnN0eWxlLCBzdHlsZS0+ZmlsdGVyKCkpOworICAgICAgICAgICAgcmV0dXJuIHZhbHVlRm9y
RmlsdGVyKHN0eWxlLCBzdHlsZS5maWx0ZXIoKSk7CiAjaWYgRU5BQkxFKEZJTFRFUlNfTEVWRUxf
MikKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJhY2tkcm9wRmlsdGVyOgotICAgICAg
ICAgICAgcmV0dXJuIHZhbHVlRm9yRmlsdGVyKCpzdHlsZSwgc3R5bGUtPmJhY2tkcm9wRmlsdGVy
KCkpOworICAgICAgICAgICAgcmV0dXJuIHZhbHVlRm9yRmlsdGVyKHN0eWxlLCBzdHlsZS5iYWNr
ZHJvcEZpbHRlcigpKTsKICNlbmRpZgogI2lmIEVOQUJMRShDU1NfQ09NUE9TSVRJTkcpCiAgICAg
ICAgIGNhc2UgQ1NTUHJvcGVydHlNaXhCbGVuZE1vZGU6Ci0gICAgICAgICAgICByZXR1cm4gY3Nz
VmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLT5ibGVuZE1vZGUoKSk7CisgICAgICAgICAgICBy
ZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLmJsZW5kTW9kZSgpKTsKICAgICAg
ICAgY2FzZSBDU1NQcm9wZXJ0eUlzb2xhdGlvbjoKLSAgICAgICAgICAgIHJldHVybiBjc3NWYWx1
ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUtPmlzb2xhdGlvbigpKTsKKyAgICAgICAgICAgIHJldHVy
biBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUuaXNvbGF0aW9uKCkpOwogI2VuZGlmCiAg
ICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQmxlbmRNb2RlOiB7Ci0gICAgICAgICAg
ICBhdXRvJiBsYXllcnMgPSBzdHlsZS0+YmFja2dyb3VuZExheWVycygpOworICAgICAgICAgICAg
YXV0byYgbGF5ZXJzID0gc3R5bGUuYmFja2dyb3VuZExheWVycygpOwogICAgICAgICAgICAgaWYg
KCFsYXllcnMubmV4dCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3Jl
YXRlVmFsdWUobGF5ZXJzLmJsZW5kTW9kZSgpKTsKICAgICAgICAgICAgIGF1dG8gbGlzdCA9IENT
U1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKQEAgLTM4NjAsOSArMzg2Nyw5IEBA
IFJlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZShD
U1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsCiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJM
ZWZ0OgogICAgICAgICAgICAgcmV0dXJuIGdldENTU1Byb3BlcnR5VmFsdWVzRm9yU2hvcnRoYW5k
UHJvcGVydGllcyhib3JkZXJMZWZ0U2hvcnRoYW5kKCkpOwogICAgICAgICBjYXNlIENTU1Byb3Bl
cnR5Qm9yZGVySW1hZ2U6Ci0gICAgICAgICAgICByZXR1cm4gdmFsdWVGb3JOaW5lUGllY2VJbWFn
ZShzdHlsZS0+Ym9yZGVySW1hZ2UoKSk7CisgICAgICAgICAgICByZXR1cm4gdmFsdWVGb3JOaW5l
UGllY2VJbWFnZShzdHlsZS5ib3JkZXJJbWFnZSgpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0
eUJvcmRlclJhZGl1czoKLSAgICAgICAgICAgIHJldHVybiBib3JkZXJSYWRpdXNTaG9ydGhhbmRW
YWx1ZSgqc3R5bGUpOworICAgICAgICAgICAgcmV0dXJuIGJvcmRlclJhZGl1c1Nob3J0aGFuZFZh
bHVlKHN0eWxlKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0OgogICAgICAg
ICAgICAgcmV0dXJuIGdldENTU1Byb3BlcnR5VmFsdWVzRm9yU2hvcnRoYW5kUHJvcGVydGllcyhi
b3JkZXJSaWdodFNob3J0aGFuZCgpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclN0
eWxlOgpAQCAtMzg4OCwzOSArMzg5NSwzOSBAQCBSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5
bGVFeHRyYWN0b3I6OnByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELAogICAg
ICAgICBjYXNlIENTU1Byb3BlcnR5U2Nyb2xsU25hcE1hcmdpbjoKICAgICAgICAgICAgIHJldHVy
biBnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvclNpZGVzU2hvcnRoYW5kKHNjcm9sbFNuYXBNYXJnaW5T
aG9ydGhhbmQoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlTY3JvbGxTbmFwTWFyZ2luQm90
dG9tOgotICAgICAgICAgICAgcmV0dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFsdWVGb3JMZW5ndGgo
c3R5bGUtPnNjcm9sbFNuYXBNYXJnaW5Cb3R0b20oKSwgKnN0eWxlKTsKKyAgICAgICAgICAgIHJl
dHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlRm9yTGVuZ3RoKHN0eWxlLnNjcm9sbFNuYXBNYXJn
aW5Cb3R0b20oKSwgc3R5bGUpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5U2Nyb2xsU25hcE1h
cmdpblRvcDoKLSAgICAgICAgICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlRm9yTGVu
Z3RoKHN0eWxlLT5zY3JvbGxTbmFwTWFyZ2luVG9wKCksICpzdHlsZSk7CisgICAgICAgICAgICBy
ZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZUZvckxlbmd0aChzdHlsZS5zY3JvbGxTbmFwTWFy
Z2luVG9wKCksIHN0eWxlKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVNjcm9sbFNuYXBNYXJn
aW5SaWdodDoKLSAgICAgICAgICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlRm9yTGVu
Z3RoKHN0eWxlLT5zY3JvbGxTbmFwTWFyZ2luUmlnaHQoKSwgKnN0eWxlKTsKKyAgICAgICAgICAg
IHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlRm9yTGVuZ3RoKHN0eWxlLnNjcm9sbFNuYXBN
YXJnaW5SaWdodCgpLCBzdHlsZSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlTY3JvbGxTbmFw
TWFyZ2luTGVmdDoKLSAgICAgICAgICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlRm9y
TGVuZ3RoKHN0eWxlLT5zY3JvbGxTbmFwTWFyZ2luTGVmdCgpLCAqc3R5bGUpOworICAgICAgICAg
ICAgcmV0dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFsdWVGb3JMZW5ndGgoc3R5bGUuc2Nyb2xsU25h
cE1hcmdpbkxlZnQoKSwgc3R5bGUpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5U2Nyb2xsUGFk
ZGluZzoKICAgICAgICAgICAgIHJldHVybiBnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvclNpZGVzU2hv
cnRoYW5kKHNjcm9sbFBhZGRpbmdTaG9ydGhhbmQoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVy
dHlTY3JvbGxQYWRkaW5nQm90dG9tOgotICAgICAgICAgICAgcmV0dXJuIHpvb21BZGp1c3RlZFBp
eGVsVmFsdWVGb3JMZW5ndGgoc3R5bGUtPnNjcm9sbFBhZGRpbmdCb3R0b20oKSwgKnN0eWxlKTsK
KyAgICAgICAgICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlRm9yTGVuZ3RoKHN0eWxl
LnNjcm9sbFBhZGRpbmdCb3R0b20oKSwgc3R5bGUpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5
U2Nyb2xsUGFkZGluZ1RvcDoKLSAgICAgICAgICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZh
bHVlRm9yTGVuZ3RoKHN0eWxlLT5zY3JvbGxQYWRkaW5nVG9wKCksICpzdHlsZSk7CisgICAgICAg
ICAgICByZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZUZvckxlbmd0aChzdHlsZS5zY3JvbGxQ
YWRkaW5nVG9wKCksIHN0eWxlKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVNjcm9sbFBhZGRp
bmdSaWdodDoKLSAgICAgICAgICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlRm9yTGVu
Z3RoKHN0eWxlLT5zY3JvbGxQYWRkaW5nUmlnaHQoKSwgKnN0eWxlKTsKKyAgICAgICAgICAgIHJl
dHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlRm9yTGVuZ3RoKHN0eWxlLnNjcm9sbFBhZGRpbmdS
aWdodCgpLCBzdHlsZSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlTY3JvbGxQYWRkaW5nTGVm
dDoKLSAgICAgICAgICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlRm9yTGVuZ3RoKHN0
eWxlLT5zY3JvbGxQYWRkaW5nTGVmdCgpLCAqc3R5bGUpOworICAgICAgICAgICAgcmV0dXJuIHpv
b21BZGp1c3RlZFBpeGVsVmFsdWVGb3JMZW5ndGgoc3R5bGUuc2Nyb2xsUGFkZGluZ0xlZnQoKSwg
c3R5bGUpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5U2Nyb2xsU25hcFR5cGU6Ci0gICAgICAg
ICAgICByZXR1cm4gdmFsdWVGb3JTY3JvbGxTbmFwVHlwZShzdHlsZS0+c2Nyb2xsU25hcFR5cGUo
KSk7CisgICAgICAgICAgICByZXR1cm4gdmFsdWVGb3JTY3JvbGxTbmFwVHlwZShzdHlsZS5zY3Jv
bGxTbmFwVHlwZSgpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVNjcm9sbFNuYXBBbGlnbjoK
LSAgICAgICAgICAgIHJldHVybiB2YWx1ZUZvclNjcm9sbFNuYXBBbGlnbm1lbnQoc3R5bGUtPnNj
cm9sbFNuYXBBbGlnbigpKTsKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZUZvclNjcm9sbFNuYXBB
bGlnbm1lbnQoc3R5bGUuc2Nyb2xsU25hcEFsaWduKCkpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUo
Q1NTX1RSQUlMSU5HX1dPUkQpCiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlBcHBsZVRyYWlsaW5n
V29yZDoKLSAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUt
PnRyYWlsaW5nV29yZCgpKTsKKyAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRl
VmFsdWUoc3R5bGUudHJhaWxpbmdXb3JkKCkpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoQVBQTEVf
UEFZKQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5QXBwbGVQYXlCdXR0b25TdHlsZToKLSAgICAg
ICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUtPmFwcGxlUGF5QnV0
dG9uU3R5bGUoKSk7CisgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVl
KHN0eWxlLmFwcGxlUGF5QnV0dG9uU3R5bGUoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlB
cHBsZVBheUJ1dHRvblR5cGU6Ci0gICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0
ZVZhbHVlKHN0eWxlLT5hcHBsZVBheUJ1dHRvblR5cGUoKSk7CisgICAgICAgICAgICByZXR1cm4g
Y3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLmFwcGxlUGF5QnV0dG9uVHlwZSgpKTsKICNl
bmRpZgogCiAgICAgICAgIC8qIEluZGl2aWR1YWwgcHJvcGVydGllcyBub3QgcGFydCBvZiB0aGUg
c3BlYyAqLwpAQCAtMzkzMCwzNiArMzkzNywzNiBAQCBSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVk
U3R5bGVFeHRyYWN0b3I6OnByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELAog
CiAgICAgICAgIC8vIExlbmd0aCBwcm9wZXJ0aWVzIGZvciBTVkcuCiAgICAgICAgIGNhc2UgQ1NT
UHJvcGVydHlDeDoKLSAgICAgICAgICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlRm9y
TGVuZ3RoKHN0eWxlLT5zdmdTdHlsZSgpLmN4KCksICpzdHlsZSk7CisgICAgICAgICAgICByZXR1
cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZUZvckxlbmd0aChzdHlsZS5zdmdTdHlsZSgpLmN4KCks
IHN0eWxlKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUN5OgotICAgICAgICAgICAgcmV0dXJu
IHpvb21BZGp1c3RlZFBpeGVsVmFsdWVGb3JMZW5ndGgoc3R5bGUtPnN2Z1N0eWxlKCkuY3koKSwg
KnN0eWxlKTsKKyAgICAgICAgICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlRm9yTGVu
Z3RoKHN0eWxlLnN2Z1N0eWxlKCkuY3koKSwgc3R5bGUpOwogICAgICAgICBjYXNlIENTU1Byb3Bl
cnR5UjoKLSAgICAgICAgICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlRm9yTGVuZ3Ro
KHN0eWxlLT5zdmdTdHlsZSgpLnIoKSwgKnN0eWxlKTsKKyAgICAgICAgICAgIHJldHVybiB6b29t
QWRqdXN0ZWRQaXhlbFZhbHVlRm9yTGVuZ3RoKHN0eWxlLnN2Z1N0eWxlKCkucigpLCBzdHlsZSk7
CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlSeDoKLSAgICAgICAgICAgIHJldHVybiB6b29tQWRq
dXN0ZWRQaXhlbFZhbHVlRm9yTGVuZ3RoKHN0eWxlLT5zdmdTdHlsZSgpLnJ4KCksICpzdHlsZSk7
CisgICAgICAgICAgICByZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZUZvckxlbmd0aChzdHls
ZS5zdmdTdHlsZSgpLnJ4KCksIHN0eWxlKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVJ5Ogot
ICAgICAgICAgICAgcmV0dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFsdWVGb3JMZW5ndGgoc3R5bGUt
PnN2Z1N0eWxlKCkucnkoKSwgKnN0eWxlKTsKKyAgICAgICAgICAgIHJldHVybiB6b29tQWRqdXN0
ZWRQaXhlbFZhbHVlRm9yTGVuZ3RoKHN0eWxlLnN2Z1N0eWxlKCkucnkoKSwgc3R5bGUpOwogICAg
ICAgICBjYXNlIENTU1Byb3BlcnR5U3Ryb2tlRGFzaG9mZnNldDoKLSAgICAgICAgICAgIHJldHVy
biB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlRm9yTGVuZ3RoKHN0eWxlLT5zdmdTdHlsZSgpLnN0cm9r
ZURhc2hPZmZzZXQoKSwgKnN0eWxlKTsKKyAgICAgICAgICAgIHJldHVybiB6b29tQWRqdXN0ZWRQ
aXhlbFZhbHVlRm9yTGVuZ3RoKHN0eWxlLnN2Z1N0eWxlKCkuc3Ryb2tlRGFzaE9mZnNldCgpLCBz
dHlsZSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlYOgotICAgICAgICAgICAgcmV0dXJuIHpv
b21BZGp1c3RlZFBpeGVsVmFsdWVGb3JMZW5ndGgoc3R5bGUtPnN2Z1N0eWxlKCkueCgpLCAqc3R5
bGUpOworICAgICAgICAgICAgcmV0dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFsdWVGb3JMZW5ndGgo
c3R5bGUuc3ZnU3R5bGUoKS54KCksIHN0eWxlKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVk6
Ci0gICAgICAgICAgICByZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZUZvckxlbmd0aChzdHls
ZS0+c3ZnU3R5bGUoKS55KCksICpzdHlsZSk7CisgICAgICAgICAgICByZXR1cm4gem9vbUFkanVz
dGVkUGl4ZWxWYWx1ZUZvckxlbmd0aChzdHlsZS5zdmdTdHlsZSgpLnkoKSwgc3R5bGUpOwogICAg
ICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dFpvb206Ci0gICAgICAgICAgICByZXR1cm4g
Y3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLT50ZXh0Wm9vbSgpKTsKKyAgICAgICAgICAg
IHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUudGV4dFpvb20oKSk7CiAKICAg
ICAgICAgY2FzZSBDU1NQcm9wZXJ0eVBhaW50T3JkZXI6Ci0gICAgICAgICAgICByZXR1cm4gcGFp
bnRPcmRlcihzdHlsZS0+cGFpbnRPcmRlcigpKTsKKyAgICAgICAgICAgIHJldHVybiBwYWludE9y
ZGVyKHN0eWxlLnBhaW50T3JkZXIoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlTdHJva2VM
aW5lY2FwOgotICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3R5
bGUtPmNhcFN0eWxlKCkpOworICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpj
cmVhdGUoc3R5bGUuY2FwU3R5bGUoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlTdHJva2VM
aW5lam9pbjoKLSAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHN0
eWxlLT5qb2luU3R5bGUoKSk7CisgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6
OmNyZWF0ZShzdHlsZS5qb2luU3R5bGUoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlTdHJv
a2VXaWR0aDoKLSAgICAgICAgICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlRm9yTGVu
Z3RoKHN0eWxlLT5zdHJva2VXaWR0aCgpLCAqc3R5bGUpOworICAgICAgICAgICAgcmV0dXJuIHpv
b21BZGp1c3RlZFBpeGVsVmFsdWVGb3JMZW5ndGgoc3R5bGUuc3Ryb2tlV2lkdGgoKSwgc3R5bGUp
OwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5U3Ryb2tlQ29sb3I6Ci0gICAgICAgICAgICByZXR1
cm4gY3VycmVudENvbG9yT3JWYWxpZENvbG9yKHN0eWxlLCBzdHlsZS0+c3Ryb2tlQ29sb3IoKSk7
CisgICAgICAgICAgICByZXR1cm4gY3VycmVudENvbG9yT3JWYWxpZENvbG9yKCZzdHlsZSwgc3R5
bGUuc3Ryb2tlQ29sb3IoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlTdHJva2VNaXRlcmxp
bWl0OgotICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3R5bGUt
PnN0cm9rZU1pdGVyTGltaXQoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpOworICAg
ICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3R5bGUuc3Ryb2tlTWl0
ZXJMaW1pdCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUik7CiAKICAgICAgICAgLyog
VW5pbXBsZW1lbnRlZCBDU1MgMyBwcm9wZXJ0aWVzIChpbmNsdWRpbmcgQ1NTMyBzaG9ydGhhbmQg
cHJvcGVydGllcykgKi8KICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUFsbDoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaAppbmRleCAxM2I2ZDlm
ZGJmMjFlZDA2ZmM2MzFlNjI2ZjAzODc5MDBkMTQ4ZmRmLi4zOWFlNmMzMGQ3ZTAxN2ZkNTJkNWMy
MTk4MjU3NWQ0OTQyOTQ4OWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29t
cHV0ZWRTdHlsZURlY2xhcmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1
dGVkU3R5bGVEZWNsYXJhdGlvbi5oCkBAIC01NSw2ICs1NSw3IEBAIHB1YmxpYzoKICAgICBDb21w
dXRlZFN0eWxlRXh0cmFjdG9yKEVsZW1lbnQqLCBib29sIGFsbG93VmlzaXRlZFN0eWxlID0gZmFs
c2UsIFBzZXVkb0lkID0gTk9QU0VVRE8pOwogCiAgICAgUmVmUHRyPENTU1ZhbHVlPiBwcm9wZXJ0
eVZhbHVlKENTU1Byb3BlcnR5SUQsIEVVcGRhdGVMYXlvdXQgPSBVcGRhdGVMYXlvdXQpOworICAg
IFJlZlB0cjxDU1NWYWx1ZT4gdmFsdWVGb3JQcm9wZXJ0eWluU3R5bGUoY29uc3QgUmVuZGVyU3R5
bGUmLCBDU1NQcm9wZXJ0eUlELCBSZW5kZXJFbGVtZW50KiA9IG51bGxwdHIpOwogICAgIFN0cmlu
ZyBjdXN0b21Qcm9wZXJ0eVRleHQoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUpOwogICAgIFJl
ZlB0cjxDU1NWYWx1ZT4gY3VzdG9tUHJvcGVydHlWYWx1ZShjb25zdCBTdHJpbmcmIHByb3BlcnR5
TmFtZSk7CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>