<?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>202552</bug_id>
          
          <creation_ts>2019-10-03 17:46:05 -0700</creation_ts>
          <short_desc>ASSERTION FAILED: m_transactionOperationsInProgressQueue.first() == &amp;operation in IDBTransaction::operationCompletedOnClient</short_desc>
          <delta_ts>2019-10-07 15:37:16 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sihui Liu">sihui_liu</reporter>
          <assigned_to name="Sihui Liu">sihui_liu</assigned_to>
          <cc>achristensen</cc>
    
    <cc>alecflett</cc>
    
    <cc>beidson</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>jsbell</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1576660</commentid>
    <comment_count>0</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2019-10-03 17:46:05 -0700</bug_when>
    <thetext>If there is quota error for some request, we send back an error response immediately without dispatching a task to database thread and waiting for result from database thread. However, web process expects to receive results for request in the order of requests being sent.
One simple solution is to dispatch a task with the quota error to the background thread, to make sure requests are handled in order on the background thread.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1576663</commentid>
    <comment_count>1</comment_count>
      <attachid>380172</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2019-10-03 17:55:34 -0700</bug_when>
    <thetext>Created attachment 380172
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1576695</commentid>
    <comment_count>2</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-10-03 20:09:41 -0700</bug_when>
    <thetext>Code change looks good.  Test needs some polish.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1576737</commentid>
    <comment_count>3</comment_count>
      <attachid>380189</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2019-10-03 23:26:06 -0700</bug_when>
    <thetext>Created attachment 380189
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1576912</commentid>
    <comment_count>4</comment_count>
      <attachid>380226</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2019-10-04 10:43:11 -0700</bug_when>
    <thetext>Created attachment 380226
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1577522</commentid>
    <comment_count>5</comment_count>
      <attachid>380365</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2019-10-07 14:58:32 -0700</bug_when>
    <thetext>Created attachment 380365
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1577535</commentid>
    <comment_count>6</comment_count>
      <attachid>380365</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-07 15:36:54 -0700</bug_when>
    <thetext>Comment on attachment 380365
Patch for landing

Clearing flags on attachment: 380365

Committed r250800: &lt;https://trac.webkit.org/changeset/250800&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1577536</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-07 15:36:56 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1577538</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-10-07 15:37:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/56053633&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380172</attachid>
            <date>2019-10-03 17:55:34 -0700</date>
            <delta_ts>2019-10-03 23:26:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202552-20191003175533.patch</filename>
            <type>text/plain</type>
            <size>34856</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwNjc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTYzMDEyMmExODY5YWU3
NzM1NGE3YzMzMzE2MDAwNDY3Y2I2YTQ2Ny4uZDFiNDAyMjQ1NzA3NDg1Y2U0YzJiYTQ2OGNlMDJi
YWM3MDY1YTg2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDE5LTEwLTAzICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIEFTU0VSVElPTiBGQUlMRUQ6
IG1fdHJhbnNhY3Rpb25PcGVyYXRpb25zSW5Qcm9ncmVzc1F1ZXVlLmZpcnN0KCkgPT0gJm9wZXJh
dGlvbiBpbiBJREJUcmFuc2FjdGlvbjo6b3BlcmF0aW9uQ29tcGxldGVkT25DbGllbnQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjU1MgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERpc3BhdGNoIHRhc2sg
dG8gZGF0YWJhc2UgdGhyZWFkIGV2ZW4gaWYgdGhlcmUgaXMgUXVvdGFFeGNlZWRlZEVycm9yLCB0
byBtYWtlIHN1cmUgcmVxdWVzdCByZXN1bHRzIGFyZSBzZW50IGluIAorICAgICAgICBvcmRlci4K
KworICAgICAgICBNb2RpZmllZCBleGlzdGluZyB0ZXN0IHRvIGNvdmVyIHRoaXM6IHN0b3JhZ2Uv
aW5kZXhlZGRiL3N0b3JhZ2UtbGltaXQuaHRtbC4gVGVzdCB3b3VsZCBoaXQgdGhpcyBhc3NlcnRp
b24gCisgICAgICAgIHdpdGhvdXQgZml4LgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZl
cjo6VW5pcXVlSURCRGF0YWJhc2U6OnJlcXVlc3RTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjp3YWl0Rm9yUmVxdWVzdFNwYWNlQ29tcGxldGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpjcmVh
dGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRh
dGFiYXNlOjpjcmVhdGVPYmplY3RTdG9yZUFmdGVyUXVvdGFDaGVjayk6CisgICAgICAgIChXZWJD
b3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3JtQ3JlYXRlT2JqZWN0U3Rv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6ZGVs
ZXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJE
YXRhYmFzZTo6cmVuYW1lT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVy
OjpVbmlxdWVJREJEYXRhYmFzZTo6cmVuYW1lT2JqZWN0U3RvcmVBZnRlclF1b3RhQ2hlY2spOgor
ICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9ybVJl
bmFtZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURC
RGF0YWJhc2U6OmNsZWFyT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVy
OjpVbmlxdWVJREJEYXRhYmFzZTo6Y3JlYXRlSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6Y3JlYXRlSW5kZXhBZnRlclF1b3RhQ2hlY2spOgor
ICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9ybUNy
ZWF0ZUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJh
c2U6OmRlbGV0ZUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURC
RGF0YWJhc2U6OnJlbmFtZUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5p
cXVlSURCRGF0YWJhc2U6OnJlbmFtZUluZGV4QWZ0ZXJRdW90YUNoZWNrKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OnBlcmZvcm1SZW5hbWVJbmRleCk6
CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpwdXRPckFk
ZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpwdXRP
ckFkZEFmdGVyUXVvdGFDaGVjayk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1
ZUlEQkRhdGFiYXNlOjpwZXJmb3JtUHV0T3JBZGQpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2Vy
dmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6Z2V0UmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmdldEFsbFJlY29yZHMpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6Z2V0Q291bnQpOgorICAgICAgICAo
V2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlUmVjb3JkKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6Om9wZW5DdXJzb3Ip
OgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6aXRlcmF0
ZUN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNl
Ojpjb21taXRUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1
ZUlEQkRhdGFiYXNlOjphYm9ydFRyYW5zYWN0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuaDoKKwogMjAxOS0xMC0wMyAgSm9obiBXaWxh
bmRlciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXNvdXJjZSBMb2FkIFN0YXRp
c3RpY3M6IERvd25ncmFkZSBkb2N1bWVudC5yZWZlcnJlciBmb3IgYWxsIHRoaXJkLXBhcnR5IGlm
cmFtZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9VbmlxdWVJREJEYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwCmluZGV4IGNlODFlYjA5MWJlZGYwZTBlOGRh
ZjRlZmVmZGQ0MGMwMmUxN2YzNDAuLjM5NTgyNTMxYTg4ZGQ4MzE0ZjMzN2ZkYmJkYmFiNjQ2ZWU3
ZjIyOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9VbmlxdWVJREJEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcApAQCAtMTg2LDcgKzE4Niw3IEBAIHN0
YXRpYyBpbmxpbmUgU3RyaW5nIHF1b3RhRXJyb3JNZXNzYWdlTmFtZShjb25zdCBjaGFyKiB0YXNr
TmFtZSkKICAgICByZXR1cm4gbWFrZVN0cmluZygiRmFpbGVkIHRvICIsIHRhc2tOYW1lLCAiIGlu
IGRhdGFiYXNlIGJlY2F1c2Ugbm90IGVub3VnaCBzcGFjZSBmb3IgZG9tYWluIik7CiB9CiAKLXZv
aWQgVW5pcXVlSURCRGF0YWJhc2U6OnJlcXVlc3RTcGFjZShVbmlxdWVJREJEYXRhYmFzZVRyYW5z
YWN0aW9uJiB0cmFuc2FjdGlvbiwgdWludDY0X3QgdGFza1NpemUsIGNvbnN0IGNoYXIqIHRhc2tO
YW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPElEQkVycm9yPiYmKT4mJiBjYWxs
YmFjaykKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnJlcXVlc3RTcGFjZShVbmlxdWVJREJEYXRh
YmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgdWludDY0X3QgdGFza1NpemUsIGNvbnN0IGNo
YXIqIHRhc2tOYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElEQkVycm9yJiYpPiYmIGNhbGxi
YWNrKQogewogICAgIG1fc2VydmVyLT5yZXF1ZXN0U3BhY2UobV9pZGVudGlmaWVyLm9yaWdpbigp
LCB0YXNrU2l6ZSwgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIHRoaXMsIHdlYWtUcmFu
c2FjdGlvbiA9IG1ha2VXZWFrUHRyKHRyYW5zYWN0aW9uKSwgdGFza05hbWUsIGNhbGxiYWNrID0g
V1RGTW92ZShjYWxsYmFjayldKGF1dG8gZGVjaXNpb24pIG11dGFibGUgewogICAgICAgICBpZiAo
IXdlYWtUaGlzKSB7CkBAIC0yMDksMTIgKzIwOSwxMiBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNl
OjpyZXF1ZXN0U3BhY2UoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24s
CiAgICAgICAgICAgICBjYWxsYmFjayhJREJFcnJvciB7IFF1b3RhRXhjZWVkZWRFcnJvciwgcXVv
dGFFcnJvck1lc3NhZ2VOYW1lKHRhc2tOYW1lKSB9KTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgY2FzZSBTdG9yYWdlUXVvdGFNYW5hZ2VyOjpEZWNpc2lvbjo6R3JhbnQ6Ci0gICAgICAg
ICAgICBjYWxsYmFjayh7IH0pOworICAgICAgICAgICAgY2FsbGJhY2soSURCRXJyb3IgeyB9KTsK
ICAgICAgICAgfTsKICAgICB9KTsKIH0KIAotdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6d2FpdEZv
clJlcXVlc3RTcGFjZUNvbXBsZXRpb24oVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJh
bnNhY3Rpb24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8SURCRXJyb3I+JiYpPiYm
IGNhbGxiYWNrKQordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6d2FpdEZvclJlcXVlc3RTcGFjZUNv
bXBsZXRpb24oVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoSURCRXJyb3ImJik+JiYgY2FsbGJhY2spCiB7CiAgICAgcmVxdWVz
dFNwYWNlKHRyYW5zYWN0aW9uLCAwLCAiIiwgV1RGTW92ZShjYWxsYmFjaykpOwogfQpAQCAtODM4
LDI4ICs4MzgsMjkgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0U3RvcmUo
VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3QKIAogICAgIGF1dG8gdGFza1Np
emUgPSBkZWZhdWx0V3JpdGVPcGVyYXRpb25Db3N0ICsgZXN0aW1hdGVTaXplKGluZm8pOwogICAg
IHJlcXVlc3RTcGFjZSh0cmFuc2FjdGlvbiwgdGFza1NpemUsICJjcmVhdGVPYmplY3RTdG9yZSIs
IFt0aGlzLCB0YXNrU2l6ZSwgJnRyYW5zYWN0aW9uLCBpbmZvLCBjYWxsYmFjayA9IFdURk1vdmUo
Y2FsbGJhY2spXShhdXRvIGVycm9yKSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKGVycm9yKSB7Ci0g
ICAgICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKCplcnJvcikpOwotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICB9Ci0gICAgICAgIHRoaXMtPmNyZWF0ZU9iamVjdFN0b3JlQWZ0ZXJRdW90YUNo
ZWNrKHRhc2tTaXplLCB0cmFuc2FjdGlvbiwgaW5mbywgV1RGTW92ZShjYWxsYmFjaykpOworICAg
ICAgICB0aGlzLT5jcmVhdGVPYmplY3RTdG9yZUFmdGVyUXVvdGFDaGVjayh0YXNrU2l6ZSwgdHJh
bnNhY3Rpb24sIGluZm8sIFdURk1vdmUoY2FsbGJhY2spLCBlcnJvcik7CiAgICAgfSk7CiB9CiAK
LXZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmNyZWF0ZU9iamVjdFN0b3JlQWZ0ZXJRdW90YUNoZWNr
KHVpbnQ2NF90IHRhc2tTaXplLCBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2Fj
dGlvbiwgY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJiBpbmZvLCBFcnJvckNhbGxiYWNrIGNhbGxi
YWNrKQordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0U3RvcmVBZnRlclF1b3Rh
Q2hlY2sodWludDY0X3QgdGFza1NpemUsIFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRy
YW5zYWN0aW9uLCBjb25zdCBJREJPYmplY3RTdG9yZUluZm8mIGluZm8sIEVycm9yQ2FsbGJhY2sg
Y2FsbGJhY2ssIGNvbnN0IElEQkVycm9yJiBxdW90YUVycm9yKQogewogICAgIHVpbnQ2NF90IGNh
bGxiYWNrSUQgPSBzdG9yZUNhbGxiYWNrT3JGaXJlRXJyb3IoV1RGTW92ZShjYWxsYmFjayksIHRh
c2tTaXplKTsKICAgICBpZiAoIWNhbGxiYWNrSUQpCiAgICAgICAgIHJldHVybjsKIAotICAgIHBv
c3REYXRhYmFzZVRhc2soY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0
YWJhc2U6OnBlcmZvcm1DcmVhdGVPYmplY3RTdG9yZSwgY2FsbGJhY2tJRCwgdHJhbnNhY3Rpb24u
aW5mbygpLmlkZW50aWZpZXIoKSwgaW5mbykpOworICAgIHBvc3REYXRhYmFzZVRhc2soY3JlYXRl
Q3Jvc3NUaHJlYWRUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OnBlcmZvcm1DcmVhdGVP
YmplY3RTdG9yZSwgY2FsbGJhY2tJRCwgdHJhbnNhY3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKSwg
aW5mbywgIHF1b3RhRXJyb3IpKTsKIH0KIAotdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9y
bUNyZWF0ZU9iamVjdFN0b3JlKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgY29uc3QgSURC
UmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQk9iamVj
dFN0b3JlSW5mbyYgaW5mbykKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnBlcmZvcm1DcmVhdGVP
YmplY3RTdG9yZSh1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIGNvbnN0IElEQlJlc291cmNl
SWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJPYmplY3RTdG9yZUlu
Zm8mIGluZm8sIGNvbnN0IElEQkVycm9yJiBxdW90YUVycm9yKQogewogICAgIEFTU0VSVCghaXNN
YWluVGhyZWFkKCkpOwogICAgIExPRyhJbmRleGVkREIsICIoZGIpIFVuaXF1ZUlEQkRhdGFiYXNl
OjpwZXJmb3JtQ3JlYXRlT2JqZWN0U3RvcmUiKTsKIAorICAgIGlmICghcXVvdGFFcnJvci5pc051
bGwoKSkgeworICAgICAgICBwb3N0RGF0YWJhc2VUYXNrUmVwbHkoY3JlYXRlQ3Jvc3NUaHJlYWRU
YXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OmRpZFBlcmZvcm1DcmVhdGVPYmplY3RTdG9y
ZSwgY2FsbGJhY2tJZGVudGlmaWVyLCBxdW90YUVycm9yLCBpbmZvKSk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKICAgICBBU1NFUlQobV9iYWNraW5nU3RvcmUpOwogICAgIG1fYmFja2luZ1N0
b3JlLT5jcmVhdGVPYmplY3RTdG9yZSh0cmFuc2FjdGlvbklkZW50aWZpZXIsIGluZm8pOwogCkBA
IC04ODMsOSArODg0LDkgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlT2JqZWN0U3Rv
cmUoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3QKICAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOwogICAgIExPRyhJbmRleGVkREIsICIobWFpbikgVW5pcXVlSURCRGF0YWJh
c2U6OmRlbGV0ZU9iamVjdFN0b3JlIik7CiAKLSAgICB3YWl0Rm9yUmVxdWVzdFNwYWNlQ29tcGxl
dGlvbih0cmFuc2FjdGlvbiwgW3RoaXMsICZ0cmFuc2FjdGlvbiwgb2JqZWN0U3RvcmVOYW1lLCBj
YWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShhdXRvIGVycm9yKSBtdXRhYmxlIHsKLSAgICAg
ICAgaWYgKGVycm9yKSB7Ci0gICAgICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKCplcnJvcikpOwor
ICAgIHdhaXRGb3JSZXF1ZXN0U3BhY2VDb21wbGV0aW9uKHRyYW5zYWN0aW9uLCBbdGhpcywgJnRy
YW5zYWN0aW9uLCBvYmplY3RTdG9yZU5hbWUsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayld
KGF1dG8mJiBlcnJvcikgbXV0YWJsZSB7CisgICAgICAgIGlmICghZXJyb3IuaXNOdWxsKCkpIHsK
KyAgICAgICAgICAgIGNhbGxiYWNrKFdURk1vdmUoZXJyb3IpKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogICAgICAgICB0aGlzLT5kZWxldGVPYmplY3RTdG9yZUFmdGVyUXVvdGFD
aGVjayh0cmFuc2FjdGlvbiwgb2JqZWN0U3RvcmVOYW1lLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CkBA
IC05MzcsMzggKzkzOCwzOSBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpyZW5hbWVPYmplY3RT
dG9yZShVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdAogCiAgICAgYXV0byB0
YXNrU2l6ZSA9IGRlZmF1bHRXcml0ZU9wZXJhdGlvbkNvc3QgKyBuZXdOYW1lLnNpemVJbkJ5dGVz
KCk7CiAgICAgcmVxdWVzdFNwYWNlKHRyYW5zYWN0aW9uLCB0YXNrU2l6ZSwgInJlbmFtZU9iamVj
dFN0b3JlIiwgW3RoaXMsIHRhc2tTaXplLCAmdHJhbnNhY3Rpb24sIG9iamVjdFN0b3JlSWRlbnRp
ZmllciwgbmV3TmFtZSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYXV0byBlcnJvcikg
bXV0YWJsZSB7Ci0gICAgICAgIGlmIChlcnJvcikgewotICAgICAgICAgICAgY2FsbGJhY2soV1RG
TW92ZSgqZXJyb3IpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICB0
aGlzLT5yZW5hbWVPYmplY3RTdG9yZUFmdGVyUXVvdGFDaGVjayh0YXNrU2l6ZSwgdHJhbnNhY3Rp
b24sIG9iamVjdFN0b3JlSWRlbnRpZmllciwgbmV3TmFtZSwgV1RGTW92ZShjYWxsYmFjaykpOwor
ICAgICAgICB0aGlzLT5yZW5hbWVPYmplY3RTdG9yZUFmdGVyUXVvdGFDaGVjayh0YXNrU2l6ZSwg
dHJhbnNhY3Rpb24sIG9iamVjdFN0b3JlSWRlbnRpZmllciwgbmV3TmFtZSwgV1RGTW92ZShjYWxs
YmFjayksIGVycm9yKTsKICAgICB9KTsKIH0KIAotdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cmVu
YW1lT2JqZWN0U3RvcmVBZnRlclF1b3RhQ2hlY2sodWludDY0X3QgdGFza1NpemUsIFVuaXF1ZUlE
QkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCB1aW50NjRfdCBvYmplY3RTdG9yZUlk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSwgRXJyb3JDYWxsYmFjayBjYWxsYmFjaykK
K3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnJlbmFtZU9iamVjdFN0b3JlQWZ0ZXJRdW90YUNoZWNr
KHVpbnQ2NF90IHRhc2tTaXplLCBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2Fj
dGlvbiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5ld05h
bWUsIEVycm9yQ2FsbGJhY2sgY2FsbGJhY2ssIGNvbnN0IElEQkVycm9yJiBxdW90YUVycm9yKQog
ewogICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBzdG9yZUNhbGxiYWNrT3JGaXJlRXJyb3IoV1RG
TW92ZShjYWxsYmFjayksIHRhc2tTaXplKTsKICAgICBpZiAoIWNhbGxiYWNrSUQpCiAgICAgICAg
IHJldHVybjsKIAorICAgIElEQkVycm9yIGVycm9yID0gcXVvdGFFcnJvcjsKICAgICBhdXRvKiBp
bmZvID0gbV9kYXRhYmFzZUluZm8tPmluZm9Gb3JFeGlzdGluZ09iamVjdFN0b3JlKG9iamVjdFN0
b3JlSWRlbnRpZmllcik7CiAgICAgaWYgKCFpbmZvKSB7Ci0gICAgICAgIHBlcmZvcm1FcnJvckNh
bGxiYWNrKGNhbGxiYWNrSUQsIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBy
ZW5hbWUgbm9uLWV4aXN0YW50IG9iamVjdCBzdG9yZSJfcyB9KTsKKyAgICAgICAgZXJyb3IgPSBJ
REJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gcmVuYW1lIG5vbi1leGlzdGFudCBv
YmplY3Qgc3RvcmUiX3MgfTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHBvc3REYXRh
YmFzZVRhc2soY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6
OnBlcmZvcm1SZW5hbWVPYmplY3RTdG9yZSwgY2FsbGJhY2tJRCwgdHJhbnNhY3Rpb24uaW5mbygp
LmlkZW50aWZpZXIoKSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBuZXdOYW1lKSk7CisgICAgcG9z
dERhdGFiYXNlVGFzayhjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZVbmlxdWVJREJEYXRh
YmFzZTo6cGVyZm9ybVJlbmFtZU9iamVjdFN0b3JlLCBjYWxsYmFja0lELCB0cmFuc2FjdGlvbi5p
bmZvKCkuaWRlbnRpZmllcigpLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIG5ld05hbWUsIGVycm9y
KSk7CiB9CiAKLXZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnBlcmZvcm1SZW5hbWVPYmplY3RTdG9y
ZSh1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmll
ciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIs
IGNvbnN0IFN0cmluZyYgbmV3TmFtZSkKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnBlcmZvcm1S
ZW5hbWVPYmplY3RTdG9yZSh1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIGNvbnN0IElEQlJl
c291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBvYmplY3RT
dG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSwgY29uc3QgSURCRXJyb3ImIGVy
cm9yKQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAgIExPRyhJbmRleGVkREIs
ICIoZGIpIFVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3JtUmVuYW1lT2JqZWN0U3RvcmUiKTsKKyAg
ICAKKyAgICBpZiAoIWVycm9yLmlzTnVsbCgpKSB7CisgICAgICAgIHBvc3REYXRhYmFzZVRhc2tS
ZXBseShjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6ZGlk
UGVyZm9ybVJlbmFtZU9iamVjdFN0b3JlLCBjYWxsYmFja0lkZW50aWZpZXIsIGVycm9yLCBvYmpl
Y3RTdG9yZUlkZW50aWZpZXIsIG5ld05hbWUpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAog
ICAgIEFTU0VSVChtX2JhY2tpbmdTdG9yZSk7CiAgICAgbV9iYWNraW5nU3RvcmUtPnJlbmFtZU9i
amVjdFN0b3JlKHRyYW5zYWN0aW9uSWRlbnRpZmllciwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBu
ZXdOYW1lKTsKIAotICAgIElEQkVycm9yIGVycm9yOwogICAgIHBvc3REYXRhYmFzZVRhc2tSZXBs
eShjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6ZGlkUGVy
Zm9ybVJlbmFtZU9iamVjdFN0b3JlLCBjYWxsYmFja0lkZW50aWZpZXIsIGVycm9yLCBvYmplY3RT
dG9yZUlkZW50aWZpZXIsIG5ld05hbWUpKTsKIH0KIApAQCAtOTg4LDkgKzk5MCw5IEBAIHZvaWQg
VW5pcXVlSURCRGF0YWJhc2U6OmNsZWFyT2JqZWN0U3RvcmUoVW5pcXVlSURCRGF0YWJhc2VUcmFu
c2FjdGlvbiYgdHJhbnNhY3RpCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBMT0co
SW5kZXhlZERCLCAiKG1haW4pIFVuaXF1ZUlEQkRhdGFiYXNlOjpjbGVhck9iamVjdFN0b3JlIik7
CiAKLSAgICB3YWl0Rm9yUmVxdWVzdFNwYWNlQ29tcGxldGlvbih0cmFuc2FjdGlvbiwgW3RoaXMs
ICZ0cmFuc2FjdGlvbiwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjYWxsYmFjayA9IFdURk1vdmUo
Y2FsbGJhY2spXShhdXRvIGVycm9yKSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKGVycm9yKSB7Ci0g
ICAgICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKCplcnJvcikpOworICAgIHdhaXRGb3JSZXF1ZXN0
U3BhY2VDb21wbGV0aW9uKHRyYW5zYWN0aW9uLCBbdGhpcywgJnRyYW5zYWN0aW9uLCBvYmplY3RT
dG9yZUlkZW50aWZpZXIsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGF1dG8mJiBlcnJv
cikgbXV0YWJsZSB7CisgICAgICAgIGlmICghZXJyb3IuaXNOdWxsKCkpIHsKKyAgICAgICAgICAg
IGNhbGxiYWNrKFdURk1vdmUoZXJyb3IpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogICAgICAgICB0aGlzLT5jbGVhck9iamVjdFN0b3JlQWZldFF1b3RhQ2hlY2sodHJhbnNhY3Rp
b24sIG9iamVjdFN0b3JlSWRlbnRpZmllciwgV1RGTW92ZShjYWxsYmFjaykpOwpAQCAtMTAzMiwy
NiArMTAzNCwyNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjcmVhdGVJbmRleChVbmlxdWVJ
REJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgYwogCiAgICAgYXV0byB0YXNrU2l6
ZSA9IGRlZmF1bHRXcml0ZU9wZXJhdGlvbkNvc3QgKyBlc3RpbWF0ZVNpemUoaW5mbyk7CiAgICAg
cmVxdWVzdFNwYWNlKHRyYW5zYWN0aW9uLCB0YXNrU2l6ZSwgImNyZWF0ZUluZGV4IiwgW3RoaXMs
IHRhc2tTaXplLCAmdHJhbnNhY3Rpb24sIGluZm8sIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFj
ayldKGF1dG8gZXJyb3IpIG11dGFibGUgewotICAgICAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAg
ICAgIGNhbGxiYWNrKFdURk1vdmUoKmVycm9yKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIH0KLSAgICAgICAgdGhpcy0+Y3JlYXRlSW5kZXhBZnRlclF1b3RhQ2hlY2sodGFza1NpemUs
IHRyYW5zYWN0aW9uLCBpbmZvLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgICAgIHRoaXMtPmNy
ZWF0ZUluZGV4QWZ0ZXJRdW90YUNoZWNrKHRhc2tTaXplLCB0cmFuc2FjdGlvbiwgaW5mbywgV1RG
TW92ZShjYWxsYmFjayksIGVycm9yKTsKICAgICB9KTsKIH0KIAotdm9pZCBVbmlxdWVJREJEYXRh
YmFzZTo6Y3JlYXRlSW5kZXhBZnRlclF1b3RhQ2hlY2sodWludDY0X3QgdGFza1NpemUsIFVuaXF1
ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBjb25zdCBJREJJbmRleEluZm8m
IGluZm8sIEVycm9yQ2FsbGJhY2sgY2FsbGJhY2spCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpj
cmVhdGVJbmRleEFmdGVyUXVvdGFDaGVjayh1aW50NjRfdCB0YXNrU2l6ZSwgVW5pcXVlSURCRGF0
YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIGNvbnN0IElEQkluZGV4SW5mbyYgaW5mbywg
RXJyb3JDYWxsYmFjayBjYWxsYmFjaywgY29uc3QgSURCRXJyb3ImIHF1b3RhRXJyb3IpCiB7CiAg
ICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IHN0b3JlQ2FsbGJhY2tPckZpcmVFcnJvcihXVEZNb3Zl
KGNhbGxiYWNrKSwgdGFza1NpemUpOwogICAgIGlmICghY2FsbGJhY2tJRCkKICAgICAgICAgcmV0
dXJuOwotICAgIHBvc3REYXRhYmFzZVRhc2soY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKCp0aGlzLCAm
VW5pcXVlSURCRGF0YWJhc2U6OnBlcmZvcm1DcmVhdGVJbmRleCwgY2FsbGJhY2tJRCwgdHJhbnNh
Y3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKSwgaW5mbykpOworICAgIHBvc3REYXRhYmFzZVRhc2so
Y3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OnBlcmZvcm1D
cmVhdGVJbmRleCwgY2FsbGJhY2tJRCwgdHJhbnNhY3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKSwg
aW5mbywgcXVvdGFFcnJvcikpOwogfQogCi12b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3Jt
Q3JlYXRlSW5kZXgodWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBjb25zdCBJREJSZXNvdXJj
ZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCSW5kZXhJbmZvJiBp
bmZvKQordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9ybUNyZWF0ZUluZGV4KHVpbnQ2NF90
IGNhbGxiYWNrSWRlbnRpZmllciwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2Fj
dGlvbklkZW50aWZpZXIsIGNvbnN0IElEQkluZGV4SW5mbyYgaW5mbywgY29uc3QgSURCRXJyb3Im
IHF1b3RhRXJyb3IpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAgTE9HKElu
ZGV4ZWREQiwgIihkYikgVW5pcXVlSURCRGF0YWJhc2U6OnBlcmZvcm1DcmVhdGVJbmRleCIpOwor
ICAgIAorICAgIGlmICghcXVvdGFFcnJvci5pc051bGwoKSkgeworICAgICAgICBwb3N0RGF0YWJh
c2VUYXNrUmVwbHkoY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJh
c2U6OmRpZFBlcmZvcm1DcmVhdGVJbmRleCwgY2FsbGJhY2tJZGVudGlmaWVyLCBxdW90YUVycm9y
LCBpbmZvKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBJREJFcnJvciBlcnJvcjsK
ICAgICBBU1NFUlQobV9iYWNraW5nU3RvcmUpOwpAQCAtMTA4Niw5ICsxMDg5LDkgQEAgdm9pZCBV
bmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlSW5kZXgoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlv
biYgdHJhbnNhY3Rpb24sIHUKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIExPRyhJ
bmRleGVkREIsICIobWFpbikgVW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZUluZGV4Iik7CiAKLSAg
ICB3YWl0Rm9yUmVxdWVzdFNwYWNlQ29tcGxldGlvbih0cmFuc2FjdGlvbiwgW3RoaXMsICZ0cmFu
c2FjdGlvbiwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRleE5hbWUsIGNhbGxiYWNrID0gV1RG
TW92ZShjYWxsYmFjayldKGF1dG8gZXJyb3IpIG11dGFibGUgewotICAgICAgICBpZiAoZXJyb3Ip
IHsKLSAgICAgICAgICAgIGNhbGxiYWNrKFdURk1vdmUoKmVycm9yKSk7CisgICAgd2FpdEZvclJl
cXVlc3RTcGFjZUNvbXBsZXRpb24odHJhbnNhY3Rpb24sIFt0aGlzLCAmdHJhbnNhY3Rpb24sIG9i
amVjdFN0b3JlSWRlbnRpZmllciwgaW5kZXhOYW1lLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJh
Y2spXShhdXRvJiYgZXJyb3IpIG11dGFibGUgeworICAgICAgICBpZiAoIWVycm9yLmlzTnVsbCgp
KSB7CisgICAgICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKGVycm9yKSk7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgdGhpcy0+ZGVsZXRlSW5kZXhBZnRlclF1b3RhQ2hl
Y2sodHJhbnNhY3Rpb24sIG9iamVjdFN0b3JlSWRlbnRpZmllciwgaW5kZXhOYW1lLCBXVEZNb3Zl
KGNhbGxiYWNrKSk7CkBAIC0xMTQ5LDQ0ICsxMTUyLDQxIEBAIHZvaWQgVW5pcXVlSURCRGF0YWJh
c2U6OnJlbmFtZUluZGV4KFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9u
LCB1CiAKICAgICBhdXRvIHRhc2tTaXplID0gZGVmYXVsdFdyaXRlT3BlcmF0aW9uQ29zdCArIG5l
d05hbWUuc2l6ZUluQnl0ZXMoKTsKICAgICByZXF1ZXN0U3BhY2UodHJhbnNhY3Rpb24sIHRhc2tT
aXplLCAicmVuYW1lSW5kZXgiLCBbdGhpcywgdGFza1NpemUsICZ0cmFuc2FjdGlvbiwgb2JqZWN0
U3RvcmVJZGVudGlmaWVyLCBpbmRleElkZW50aWZpZXIsIG5ld05hbWUsIGNhbGxiYWNrID0gV1RG
TW92ZShjYWxsYmFjayldKGF1dG8gZXJyb3IpIG11dGFibGUgewotICAgICAgICBpZiAoZXJyb3Ip
IHsKLSAgICAgICAgICAgIGNhbGxiYWNrKFdURk1vdmUoKmVycm9yKSk7Ci0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgdGhpcy0+cmVuYW1lSW5kZXhBZnRlclF1b3RhQ2hl
Y2sodGFza1NpemUsIHRyYW5zYWN0aW9uLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGluZGV4SWRl
bnRpZmllciwgbmV3TmFtZSwgV1RGTW92ZShjYWxsYmFjaykpOworICAgICAgICB0aGlzLT5yZW5h
bWVJbmRleEFmdGVyUXVvdGFDaGVjayh0YXNrU2l6ZSwgdHJhbnNhY3Rpb24sIG9iamVjdFN0b3Jl
SWRlbnRpZmllciwgaW5kZXhJZGVudGlmaWVyLCBuZXdOYW1lLCBXVEZNb3ZlKGNhbGxiYWNrKSwg
ZXJyb3IpOwogICAgIH0pOwogfQogCi12b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpyZW5hbWVJbmRl
eEFmdGVyUXVvdGFDaGVjayh1aW50NjRfdCB0YXNrU2l6ZSwgVW5pcXVlSURCRGF0YWJhc2VUcmFu
c2FjdGlvbiYgdHJhbnNhY3Rpb24sIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgdWlu
dDY0X3QgaW5kZXhJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5ld05hbWUsIEVycm9yQ2FsbGJh
Y2sgY2FsbGJhY2spCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpyZW5hbWVJbmRleEFmdGVyUXVv
dGFDaGVjayh1aW50NjRfdCB0YXNrU2l6ZSwgVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYg
dHJhbnNhY3Rpb24sIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgdWludDY0X3QgaW5k
ZXhJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5ld05hbWUsIEVycm9yQ2FsbGJhY2sgY2FsbGJh
Y2ssIGNvbnN0IElEQkVycm9yJiBxdW90YUVycm9yKQogewogICAgIHVpbnQ2NF90IGNhbGxiYWNr
SUQgPSBzdG9yZUNhbGxiYWNrT3JGaXJlRXJyb3IoV1RGTW92ZShjYWxsYmFjayksIHRhc2tTaXpl
KTsKICAgICBpZiAoIWNhbGxiYWNrSUQpCiAgICAgICAgIHJldHVybjsKIAorICAgIElEQkVycm9y
IGVycm9yID0gcXVvdGFFcnJvcjsKICAgICBhdXRvKiBvYmplY3RTdG9yZUluZm8gPSBtX2RhdGFi
YXNlSW5mby0+aW5mb0ZvckV4aXN0aW5nT2JqZWN0U3RvcmUob2JqZWN0U3RvcmVJZGVudGlmaWVy
KTsKLSAgICBpZiAoIW9iamVjdFN0b3JlSW5mbykgewotICAgICAgICBwZXJmb3JtRXJyb3JDYWxs
YmFjayhjYWxsYmFja0lELCBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gcmVu
YW1lIGluZGV4IGluIG5vbi1leGlzdGFudCBvYmplY3Qgc3RvcmUiX3MgfSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9CisgICAgaWYgKCFvYmplY3RTdG9yZUluZm8pCisgICAgICAgIGVycm9yID0g
SURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIHJlbmFtZSBpbmRleCBpbiBub24t
ZXhpc3RhbnQgb2JqZWN0IHN0b3JlIl9zIH07CiAKICAgICBhdXRvKiBpbmRleEluZm8gPSBvYmpl
Y3RTdG9yZUluZm8tPmluZm9Gb3JFeGlzdGluZ0luZGV4KGluZGV4SWRlbnRpZmllcik7Ci0gICAg
aWYgKCFpbmRleEluZm8pIHsKLSAgICAgICAgcGVyZm9ybUVycm9yQ2FsbGJhY2soY2FsbGJhY2tJ
RCwgSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIHJlbmFtZSBub24tZXhpc3Rh
bnQgaW5kZXgiX3MgfSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKCFpbmRleElu
Zm8pCisgICAgICAgIGVycm9yID0gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRv
IHJlbmFtZSBub24tZXhpc3RhbnQgaW5kZXgiX3MgfTsKIAotICAgIHBvc3REYXRhYmFzZVRhc2so
Y3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OnBlcmZvcm1S
ZW5hbWVJbmRleCwgY2FsbGJhY2tJRCwgdHJhbnNhY3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKSwg
b2JqZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRleElkZW50aWZpZXIsIG5ld05hbWUpKTsKKyAgICBw
b3N0RGF0YWJhc2VUYXNrKGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRh
dGFiYXNlOjpwZXJmb3JtUmVuYW1lSW5kZXgsIGNhbGxiYWNrSUQsIHRyYW5zYWN0aW9uLmluZm8o
KS5pZGVudGlmaWVyKCksIG9iamVjdFN0b3JlSWRlbnRpZmllciwgaW5kZXhJZGVudGlmaWVyLCBu
ZXdOYW1lLCBlcnJvcikpOwogfQogCi12b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3JtUmVu
YW1lSW5kZXgodWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBjb25zdCBJREJSZXNvdXJjZUlk
ZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVu
dGlmaWVyLCB1aW50NjRfdCBpbmRleElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSkK
K3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnBlcmZvcm1SZW5hbWVJbmRleCh1aW50NjRfdCBjYWxs
YmFja0lkZW50aWZpZXIsIGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25J
ZGVudGlmaWVyLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIHVpbnQ2NF90IGluZGV4
SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuZXdOYW1lLCBjb25zdCBJREJFcnJvciYgZXJyb3Ip
CiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAgTE9HKEluZGV4ZWREQiwgIihk
YikgVW5pcXVlSURCRGF0YWJhc2U6OnBlcmZvcm1SZW5hbWVJbmRleCIpOwogCisgICAgaWYgKCFl
cnJvci5pc051bGwoKSkgeworICAgICAgICBwb3N0RGF0YWJhc2VUYXNrUmVwbHkoY3JlYXRlQ3Jv
c3NUaHJlYWRUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OmRpZFBlcmZvcm1SZW5hbWVJ
bmRleCwgY2FsbGJhY2tJZGVudGlmaWVyLCBlcnJvciwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBp
bmRleElkZW50aWZpZXIsIG5ld05hbWUpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAg
IEFTU0VSVChtX2JhY2tpbmdTdG9yZSk7CiAgICAgbV9iYWNraW5nU3RvcmUtPnJlbmFtZUluZGV4
KHRyYW5zYWN0aW9uSWRlbnRpZmllciwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRleElkZW50
aWZpZXIsIG5ld05hbWUpOwogCi0gICAgSURCRXJyb3IgZXJyb3I7CiAgICAgcG9zdERhdGFiYXNl
VGFza1JlcGx5KGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNl
OjpkaWRQZXJmb3JtUmVuYW1lSW5kZXgsIGNhbGxiYWNrSWRlbnRpZmllciwgZXJyb3IsIG9iamVj
dFN0b3JlSWRlbnRpZmllciwgaW5kZXhJZGVudGlmaWVyLCBuZXdOYW1lKSk7CiB9CiAKQEAgLTEy
MTUsMjMgKzEyMTUsMTkgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cHV0T3JBZGQoVW5pcXVl
SURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIGNvbnMKIAogICAgIGF1dG8gdGFz
a1NpemUgPSBkZWZhdWx0V3JpdGVPcGVyYXRpb25Db3N0ICsgZXN0aW1hdGVTaXplKGtleURhdGEp
ICsgZXN0aW1hdGVTaXplKHZhbHVlKTsKICAgICByZXF1ZXN0U3BhY2UodHJhbnNhY3Rpb24sIHRh
c2tTaXplLCAicHV0T3JBZGQiLCBbdGhpcywgdGFza1NpemUsIHJlcXVlc3REYXRhLCBrZXlEYXRh
LCB2YWx1ZSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgb3ZlcndyaXRlTW9kZV0oYXV0
byBlcnJvcikgbXV0YWJsZSB7Ci0gICAgICAgIGlmIChlcnJvcikgewotICAgICAgICAgICAgY2Fs
bGJhY2soV1RGTW92ZSgqZXJyb3IpLCB7IH0pOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICB9Ci0gICAgICAgIHRoaXMtPnB1dE9yQWRkQWZ0ZXJRdW90YUNoZWNrKHRhc2tTaXplLCByZXF1
ZXN0RGF0YSwga2V5RGF0YSwgdmFsdWUsIG92ZXJ3cml0ZU1vZGUsIFdURk1vdmUoY2FsbGJhY2sp
KTsKKyAgICAgICAgdGhpcy0+cHV0T3JBZGRBZnRlclF1b3RhQ2hlY2sodGFza1NpemUsIHJlcXVl
c3REYXRhLCBrZXlEYXRhLCB2YWx1ZSwgb3ZlcndyaXRlTW9kZSwgV1RGTW92ZShjYWxsYmFjayks
IGVycm9yKTsKICAgICB9KTsKIH0KIAotdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cHV0T3JBZGRB
ZnRlclF1b3RhQ2hlY2sodWludDY0X3QgdGFza1NpemUsIGNvbnN0IElEQlJlcXVlc3REYXRhJiBy
ZXF1ZXN0RGF0YSwgY29uc3QgSURCS2V5RGF0YSYga2V5RGF0YSwgY29uc3QgSURCVmFsdWUmIHZh
bHVlLCBJbmRleGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9kZSBvdmVyd3JpdGVNb2RlLCBL
ZXlEYXRhQ2FsbGJhY2sgY2FsbGJhY2spCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpwdXRPckFk
ZEFmdGVyUXVvdGFDaGVjayh1aW50NjRfdCB0YXNrU2l6ZSwgY29uc3QgSURCUmVxdWVzdERhdGEm
IHJlcXVlc3REYXRhLCBjb25zdCBJREJLZXlEYXRhJiBrZXlEYXRhLCBjb25zdCBJREJWYWx1ZSYg
dmFsdWUsIEluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlIG92ZXJ3cml0ZU1vZGUs
IEtleURhdGFDYWxsYmFjayBjYWxsYmFjaywgY29uc3QgSURCRXJyb3ImIHF1b3RhRXJyb3IpCiB7
CiAgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IHN0b3JlQ2FsbGJhY2tPckZpcmVFcnJvcihXVEZN
b3ZlKGNhbGxiYWNrKSwgdGFza1NpemUpOwogICAgIGlmICghY2FsbGJhY2tJRCkKICAgICAgICAg
cmV0dXJuOwotICAgIHBvc3REYXRhYmFzZVRhc2soY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKCp0aGlz
LCAmVW5pcXVlSURCRGF0YWJhc2U6OnBlcmZvcm1QdXRPckFkZCwgY2FsbGJhY2tJRCwgcmVxdWVz
dERhdGEudHJhbnNhY3Rpb25JZGVudGlmaWVyKCksIHJlcXVlc3REYXRhLm9iamVjdFN0b3JlSWRl
bnRpZmllcigpLCBrZXlEYXRhLCB2YWx1ZSwgb3ZlcndyaXRlTW9kZSkpOworICAgIHBvc3REYXRh
YmFzZVRhc2soY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6
OnBlcmZvcm1QdXRPckFkZCwgY2FsbGJhY2tJRCwgcmVxdWVzdERhdGEudHJhbnNhY3Rpb25JZGVu
dGlmaWVyKCksIHJlcXVlc3REYXRhLm9iamVjdFN0b3JlSWRlbnRpZmllcigpLCBrZXlEYXRhLCB2
YWx1ZSwgb3ZlcndyaXRlTW9kZSwgcXVvdGFFcnJvcikpOwogfQogCi12b2lkIFVuaXF1ZUlEQkRh
dGFiYXNlOjpwZXJmb3JtUHV0T3JBZGQodWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBjb25z
dCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgdWludDY0X3Qg
b2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBJREJLZXlEYXRhJiBrZXlEYXRhLCBjb25zdCBJ
REJWYWx1ZSYgb3JpZ2luYWxSZWNvcmRWYWx1ZSwgSW5kZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3
cml0ZU1vZGUgb3ZlcndyaXRlTW9kZSkKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnBlcmZvcm1Q
dXRPckFkZCh1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIGNvbnN0IElEQlJlc291cmNlSWRl
bnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50
aWZpZXIsIGNvbnN0IElEQktleURhdGEmIGtleURhdGEsIGNvbnN0IElEQlZhbHVlJiBvcmlnaW5h
bFJlY29yZFZhbHVlLCBJbmRleGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9kZSBvdmVyd3Jp
dGVNb2RlLCBjb25zdCBJREJFcnJvciYgcXVvdGFFcnJvcikKIHsKICAgICBBU1NFUlQoIWlzTWFp
blRocmVhZCgpKTsKICAgICBMT0coSW5kZXhlZERCLCAiKGRiKSBVbmlxdWVJREJEYXRhYmFzZTo6
cGVyZm9ybVB1dE9yQWRkIik7CkBAIC0xMjQyLDYgKzEyMzgsMTEgQEAgdm9pZCBVbmlxdWVJREJE
YXRhYmFzZTo6cGVyZm9ybVB1dE9yQWRkKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgY29u
c3QgSURCUmUKICAgICBJREJLZXlEYXRhIHVzZWRLZXk7CiAgICAgSURCRXJyb3IgZXJyb3I7CiAK
KyAgICBpZiAoIXF1b3RhRXJyb3IuaXNOdWxsKCkpIHsKKyAgICAgICAgcG9zdERhdGFiYXNlVGFz
a1JlcGx5KGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpk
aWRQZXJmb3JtUHV0T3JBZGQsIGNhbGxiYWNrSWRlbnRpZmllciwgcXVvdGFFcnJvciwgdXNlZEtl
eSkpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgaWYgKCFtX2JhY2tpbmdTdG9yZSkg
ewogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihJbmRleGVkREIsICIlcCAtIFVuaXF1ZUlEQkRh
dGFiYXNlOjpwZXJmb3JtUHV0T3JBZGQ6IG1fYmFja2luZ1N0b3JlIGlzIG51bGwiLCB0aGlzKTsK
ICAgICAgICAgZXJyb3IgPSBJREJFcnJvcihJbnZhbGlkU3RhdGVFcnJvciwgIkJhY2tpbmcgc3Rv
cmUgaXMgaW52YWxpZCBmb3IgY2FsbCB0byBwdXQgb3IgYWRkIl9zKTsKQEAgLTEzMjMsOSArMTMy
NCw5IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmdldFJlY29yZChVbmlxdWVJREJEYXRhYmFz
ZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgY29uCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKICAgICBMT0coSW5kZXhlZERCLCAiKG1haW4pIFVuaXF1ZUlEQkRhdGFiYXNlOjpnZXRSZWNv
cmQiKTsKIAotICAgIHdhaXRGb3JSZXF1ZXN0U3BhY2VDb21wbGV0aW9uKHRyYW5zYWN0aW9uLCBb
dGhpcywgcmVxdWVzdERhdGEsIGdldFJlY29yZERhdGEsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxs
YmFjayldKGF1dG8gZXJyb3IpIG11dGFibGUgewotICAgICAgICBpZiAoZXJyb3IpIHsKLSAgICAg
ICAgICAgIGNhbGxiYWNrKFdURk1vdmUoKmVycm9yKSwgeyB9KTsKKyAgICB3YWl0Rm9yUmVxdWVz
dFNwYWNlQ29tcGxldGlvbih0cmFuc2FjdGlvbiwgW3RoaXMsIHJlcXVlc3REYXRhLCBnZXRSZWNv
cmREYXRhLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShhdXRvJiYgZXJyb3IpIG11dGFi
bGUgeworICAgICAgICBpZiAoIWVycm9yLmlzTnVsbCgpKSB7CisgICAgICAgICAgICBjYWxsYmFj
ayhXVEZNb3ZlKGVycm9yKSwgeyB9KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
ICAgICAgICB0aGlzLT5nZXRSZWNvcmRBZnRlclF1b3RhQ2hlY2socmVxdWVzdERhdGEsIGdldFJl
Y29yZERhdGEsIFdURk1vdmUoY2FsbGJhY2spKTsKQEAgLTEzNDksOSArMTM1MCw5IEBAIHZvaWQg
VW5pcXVlSURCRGF0YWJhc2U6OmdldEFsbFJlY29yZHMoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2Fj
dGlvbiYgdHJhbnNhY3Rpb24sCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBMT0co
SW5kZXhlZERCLCAiKG1haW4pIFVuaXF1ZUlEQkRhdGFiYXNlOjpnZXRBbGxSZWNvcmRzIik7CiAK
LSAgICB3YWl0Rm9yUmVxdWVzdFNwYWNlQ29tcGxldGlvbih0cmFuc2FjdGlvbiwgW3RoaXMsIHJl
cXVlc3REYXRhLCBnZXRBbGxSZWNvcmRzRGF0YSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNr
KV0oYXV0byBlcnJvcikgbXV0YWJsZSB7Ci0gICAgICAgIGlmIChlcnJvcikgewotICAgICAgICAg
ICAgY2FsbGJhY2soV1RGTW92ZSgqZXJyb3IpLCB7IH0pOworICAgIHdhaXRGb3JSZXF1ZXN0U3Bh
Y2VDb21wbGV0aW9uKHRyYW5zYWN0aW9uLCBbdGhpcywgcmVxdWVzdERhdGEsIGdldEFsbFJlY29y
ZHNEYXRhLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShhdXRvJiYgZXJyb3IpIG11dGFi
bGUgeworICAgICAgICBpZiAoIWVycm9yLmlzTnVsbCgpKSB7CisgICAgICAgICAgICBjYWxsYmFj
ayhXVEZNb3ZlKGVycm9yKSwgeyB9KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
ICAgICAgICB0aGlzLT5nZXRBbGxSZWNvcmRzQWZ0ZXJRdW90YUNoZWNrKHJlcXVlc3REYXRhLCBn
ZXRBbGxSZWNvcmRzRGF0YSwgV1RGTW92ZShjYWxsYmFjaykpOwpAQCAtMTQyNyw5ICsxNDI4LDkg
QEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Z2V0Q291bnQoVW5pcXVlSURCRGF0YWJhc2VUcmFu
c2FjdGlvbiYgdHJhbnNhY3Rpb24sIGNvbnMKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwog
ICAgIExPRyhJbmRleGVkREIsICIobWFpbikgVW5pcXVlSURCRGF0YWJhc2U6OmdldENvdW50Iik7
CiAKLSAgICB3YWl0Rm9yUmVxdWVzdFNwYWNlQ29tcGxldGlvbih0cmFuc2FjdGlvbiwgW3RoaXMs
IHJlcXVlc3REYXRhLCByYW5nZSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYXV0byBl
cnJvcikgbXV0YWJsZSB7Ci0gICAgICAgIGlmIChlcnJvcikgewotICAgICAgICAgICAgY2FsbGJh
Y2soV1RGTW92ZSgqZXJyb3IpLCB7IH0pOworICAgIHdhaXRGb3JSZXF1ZXN0U3BhY2VDb21wbGV0
aW9uKHRyYW5zYWN0aW9uLCBbdGhpcywgcmVxdWVzdERhdGEsIHJhbmdlLCBjYWxsYmFjayA9IFdU
Rk1vdmUoY2FsbGJhY2spXShhdXRvJiYgZXJyb3IpIG11dGFibGUgeworICAgICAgICBpZiAoIWVy
cm9yLmlzTnVsbCgpKSB7CisgICAgICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKGVycm9yKSwgeyB9
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICB0aGlzLT5nZXRDb3Vu
dEFmdGVyUXVvdGFDaGVjayhyZXF1ZXN0RGF0YSwgcmFuZ2UsIFdURk1vdmUoY2FsbGJhY2spKTsK
QEAgLTE0NzEsOSArMTQ3Miw5IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZVJlY29y
ZChVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwKICAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOwogICAgIExPRyhJbmRleGVkREIsICIobWFpbikgVW5pcXVlSURCRGF0
YWJhc2U6OmRlbGV0ZVJlY29yZCIpOwogCi0gICAgd2FpdEZvclJlcXVlc3RTcGFjZUNvbXBsZXRp
b24odHJhbnNhY3Rpb24sIFt0aGlzLCByZXF1ZXN0RGF0YSwga2V5UmFuZ2VEYXRhLCBjYWxsYmFj
ayA9IFdURk1vdmUoY2FsbGJhY2spXShhdXRvIGVycm9yKSBtdXRhYmxlIHsKLSAgICAgICAgaWYg
KGVycm9yKSB7Ci0gICAgICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKCplcnJvcikpOworICAgIHdh
aXRGb3JSZXF1ZXN0U3BhY2VDb21wbGV0aW9uKHRyYW5zYWN0aW9uLCBbdGhpcywgcmVxdWVzdERh
dGEsIGtleVJhbmdlRGF0YSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYXV0byYmIGVy
cm9yKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCFlcnJvci5pc051bGwoKSkgeworICAgICAgICAg
ICAgY2FsbGJhY2soV1RGTW92ZShlcnJvcikpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAgICAgICAgIHRoaXMtPmRlbGV0ZVJlY29yZEFmdGVyUXVvdGFDaGVjayhyZXF1ZXN0RGF0
YSwga2V5UmFuZ2VEYXRhLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CkBAIC0xNTExLDkgKzE1MTIsOSBA
QCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpvcGVuQ3Vyc29yKFVuaXF1ZUlEQkRhdGFiYXNlVHJh
bnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBjbwogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAg
ICAgTE9HKEluZGV4ZWREQiwgIihtYWluKSBVbmlxdWVJREJEYXRhYmFzZTo6b3BlbkN1cnNvciIp
OwogCi0gICAgd2FpdEZvclJlcXVlc3RTcGFjZUNvbXBsZXRpb24odHJhbnNhY3Rpb24sIFt0aGlz
LCByZXF1ZXN0RGF0YSwgaW5mbywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYXV0byBl
cnJvcikgbXV0YWJsZSB7Ci0gICAgICAgIGlmIChlcnJvcikgewotICAgICAgICAgICAgY2FsbGJh
Y2soV1RGTW92ZSgqZXJyb3IpLCB7IH0pOworICAgIHdhaXRGb3JSZXF1ZXN0U3BhY2VDb21wbGV0
aW9uKHRyYW5zYWN0aW9uLCBbdGhpcywgcmVxdWVzdERhdGEsIGluZm8sIGNhbGxiYWNrID0gV1RG
TW92ZShjYWxsYmFjayldKGF1dG8mJiBlcnJvcikgbXV0YWJsZSB7CisgICAgICAgIGlmICghZXJy
b3IuaXNOdWxsKCkpIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKFdURk1vdmUoZXJyb3IpLCB7IH0p
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIHRoaXMtPm9wZW5DdXJz
b3JBZnRlclF1b3RhQ2hlY2socmVxdWVzdERhdGEsIGluZm8sIFdURk1vdmUoY2FsbGJhY2spKTsK
QEAgLTE1NTIsOSArMTU1Myw5IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6Oml0ZXJhdGVDdXJz
b3IoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sCiAgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKICAgICBMT0coSW5kZXhlZERCLCAiKG1haW4pIFVuaXF1ZUlEQkRh
dGFiYXNlOjppdGVyYXRlQ3Vyc29yIik7CiAKLSAgICB3YWl0Rm9yUmVxdWVzdFNwYWNlQ29tcGxl
dGlvbih0cmFuc2FjdGlvbiwgW3RoaXMsIHJlcXVlc3REYXRhLCBkYXRhLCBjYWxsYmFjayA9IFdU
Rk1vdmUoY2FsbGJhY2spXShhdXRvIGVycm9yKSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKGVycm9y
KSB7Ci0gICAgICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKCplcnJvciksIHsgfSk7CisgICAgd2Fp
dEZvclJlcXVlc3RTcGFjZUNvbXBsZXRpb24odHJhbnNhY3Rpb24sIFt0aGlzLCByZXF1ZXN0RGF0
YSwgZGF0YSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYXV0byYmIGVycm9yKSBtdXRh
YmxlIHsKKyAgICAgICAgaWYgKCFlcnJvci5pc051bGwoKSkgeworICAgICAgICAgICAgY2FsbGJh
Y2soV1RGTW92ZShlcnJvciksIHsgfSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
ICAgICAgICAgdGhpcy0+aXRlcmF0ZUN1cnNvckFmdGVyUXVvdGFDaGVjayhyZXF1ZXN0RGF0YSwg
ZGF0YSwgV1RGTW92ZShjYWxsYmFjaykpOwpAQCAtMTYyNiw5ICsxNjI3LDkgQEAgdm9pZCBVbmlx
dWVJREJEYXRhYmFzZTo6Y29tbWl0VHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VUcmFuc2Fj
dGlvbiYgdHJhbnNhY3QKIAogICAgIEFTU0VSVCh0cmFuc2FjdGlvbi5kYXRhYmFzZUNvbm5lY3Rp
b24oKS5kYXRhYmFzZSgpID09IHRoaXMpOwogCi0gICAgd2FpdEZvclJlcXVlc3RTcGFjZUNvbXBs
ZXRpb24odHJhbnNhY3Rpb24sIFt0aGlzLCAmdHJhbnNhY3Rpb24sIGNhbGxiYWNrID0gV1RGTW92
ZShjYWxsYmFjayldKGF1dG8gZXJyb3IpIG11dGFibGUgewotICAgICAgICBpZiAoZXJyb3IpIHsK
LSAgICAgICAgICAgIGNhbGxiYWNrKFdURk1vdmUoKmVycm9yKSk7CisgICAgd2FpdEZvclJlcXVl
c3RTcGFjZUNvbXBsZXRpb24odHJhbnNhY3Rpb24sIFt0aGlzLCAmdHJhbnNhY3Rpb24sIGNhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayldKGF1dG8mJiBlcnJvcikgbXV0YWJsZSB7CisgICAgICAg
IGlmICghZXJyb3IuaXNOdWxsKCkpIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKFdURk1vdmUoZXJy
b3IpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICB0aGlzLT5jb21t
aXRUcmFuc2FjdGlvbkFmdGVyUXVvdGFDaGVjayh0cmFuc2FjdGlvbiwgV1RGTW92ZShjYWxsYmFj
aykpOwpAQCAtMTY5OSw4ICsxNzAwLDggQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6YWJvcnRU
cmFuc2FjdGlvbihVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGkKIAogICAg
IGlmICh3YWl0Rm9yUGVuZGluZ1Rhc2tzID09IFdhaXRGb3JQZW5kaW5nVGFza3M6Olllcykgewog
ICAgICAgICB3YWl0Rm9yUmVxdWVzdFNwYWNlQ29tcGxldGlvbih0cmFuc2FjdGlvbiwgW3RoaXMs
ICZ0cmFuc2FjdGlvbiwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYXV0byYmIGVycm9y
KSBtdXRhYmxlIHsKLSAgICAgICAgICAgIGlmIChlcnJvcikgewotICAgICAgICAgICAgICAgIGNh
bGxiYWNrKFdURk1vdmUoKmVycm9yKSk7CisgICAgICAgICAgICBpZiAoIWVycm9yLmlzTnVsbCgp
KSB7CisgICAgICAgICAgICAgICAgY2FsbGJhY2soV1RGTW92ZShlcnJvcikpOwogICAgICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHRoaXMtPmFib3J0VHJh
bnNhY3Rpb24odHJhbnNhY3Rpb24sIFdhaXRGb3JQZW5kaW5nVGFza3M6Ok5vLCBXVEZNb3ZlKGNh
bGxiYWNrKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5oCmluZGV4IDUzYjIxZGZlNGQyMWRhNTVmZmNh
NmYwNmZiMDZiMjI3NWMxZWNmOGQuLjE0MTgwMWRhN2ZmZTU2MTlhNzEwZGEyZmIyNjk1NGRjNmNl
ZDJjNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9VbmlxdWVJREJEYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5oCkBAIC0xNDEsMTEgKzE0MSwxMSBAQCBwcml2
YXRlOgogCiAgICAgdm9pZCBzY2hlZHVsZVNodXRkb3duRm9yQ2xvc2UoKTsKIAotICAgIHZvaWQg
Y3JlYXRlT2JqZWN0U3RvcmVBZnRlclF1b3RhQ2hlY2sodWludDY0X3QgdGFza1NpemUsIFVuaXF1
ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mLCBjb25zdCBJREJPYmplY3RTdG9yZUluZm8mLCBFcnJv
ckNhbGxiYWNrKTsKLSAgICB2b2lkIHJlbmFtZU9iamVjdFN0b3JlQWZ0ZXJRdW90YUNoZWNrKHVp
bnQ2NF90IHRhc2tTaXplLCBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiwgdWludDY0X3Qg
b2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5ld05hbWUsIEVycm9yQ2FsbGJh
Y2spOwotICAgIHZvaWQgY3JlYXRlSW5kZXhBZnRlclF1b3RhQ2hlY2sodWludDY0X3QgdGFza1Np
emUsIFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mLCBjb25zdCBJREJJbmRleEluZm8mLCBF
cnJvckNhbGxiYWNrKTsKLSAgICB2b2lkIHJlbmFtZUluZGV4QWZ0ZXJRdW90YUNoZWNrKHVpbnQ2
NF90IHRhc2tTaXplLCBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiwgdWludDY0X3Qgb2Jq
ZWN0U3RvcmVJZGVudGlmaWVyLCB1aW50NjRfdCBpbmRleElkZW50aWZpZXIsIGNvbnN0IFN0cmlu
ZyYgbmV3TmFtZSwgRXJyb3JDYWxsYmFjayk7Ci0gICAgdm9pZCBwdXRPckFkZEFmdGVyUXVvdGFD
aGVjayh1aW50NjRfdCB0YXNrU2l6ZSwgY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJL
ZXlEYXRhJiwgY29uc3QgSURCVmFsdWUmLCBJbmRleGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRl
TW9kZSwgS2V5RGF0YUNhbGxiYWNrKTsKKyAgICB2b2lkIGNyZWF0ZU9iamVjdFN0b3JlQWZ0ZXJR
dW90YUNoZWNrKHVpbnQ2NF90IHRhc2tTaXplLCBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9u
JiwgY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJiwgRXJyb3JDYWxsYmFjaywgY29uc3QgSURCRXJy
b3ImKTsKKyAgICB2b2lkIHJlbmFtZU9iamVjdFN0b3JlQWZ0ZXJRdW90YUNoZWNrKHVpbnQ2NF90
IHRhc2tTaXplLCBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiwgdWludDY0X3Qgb2JqZWN0
U3RvcmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5ld05hbWUsIEVycm9yQ2FsbGJhY2ssIGNv
bnN0IElEQkVycm9yJik7CisgICAgdm9pZCBjcmVhdGVJbmRleEFmdGVyUXVvdGFDaGVjayh1aW50
NjRfdCB0YXNrU2l6ZSwgVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYsIGNvbnN0IElEQklu
ZGV4SW5mbyYsIEVycm9yQ2FsbGJhY2ssIGNvbnN0IElEQkVycm9yJik7CisgICAgdm9pZCByZW5h
bWVJbmRleEFmdGVyUXVvdGFDaGVjayh1aW50NjRfdCB0YXNrU2l6ZSwgVW5pcXVlSURCRGF0YWJh
c2VUcmFuc2FjdGlvbiYsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgdWludDY0X3Qg
aW5kZXhJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5ld05hbWUsIEVycm9yQ2FsbGJhY2ssIGNv
bnN0IElEQkVycm9yJik7CisgICAgdm9pZCBwdXRPckFkZEFmdGVyUXVvdGFDaGVjayh1aW50NjRf
dCB0YXNrU2l6ZSwgY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJLZXlEYXRhJiwgY29u
c3QgSURCVmFsdWUmLCBJbmRleGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9kZSwgS2V5RGF0
YUNhbGxiYWNrLCBjb25zdCBJREJFcnJvciYpOwogICAgIHZvaWQgZGVsZXRlUmVjb3JkQWZ0ZXJR
dW90YUNoZWNrKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiwg
RXJyb3JDYWxsYmFjayk7CiAKICAgICB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlQWZ0ZXJRdW90YUNo
ZWNrKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mLCBjb25zdCBTdHJpbmcmIG9iamVjdFN0
b3JlTmFtZSwgRXJyb3JDYWxsYmFjayk7CkBAIC0xNjQsMTQgKzE2NCwxNCBAQCBwcml2YXRlOgog
ICAgIHZvaWQgcGVyZm9ybUNvbW1pdFRyYW5zYWN0aW9uKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRp
ZmllciwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIp
OwogICAgIHZvaWQgcGVyZm9ybUFib3J0VHJhbnNhY3Rpb24odWludDY0X3QgY2FsbGJhY2tJZGVu
dGlmaWVyLCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmll
cik7CiAgICAgdm9pZCBiZWdpblRyYW5zYWN0aW9uSW5CYWNraW5nU3RvcmUoY29uc3QgSURCVHJh
bnNhY3Rpb25JbmZvJik7Ci0gICAgdm9pZCBwZXJmb3JtQ3JlYXRlT2JqZWN0U3RvcmUodWludDY0
X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5z
YWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJik7CisgICAgdm9pZCBw
ZXJmb3JtQ3JlYXRlT2JqZWN0U3RvcmUodWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBjb25z
dCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURC
T2JqZWN0U3RvcmVJbmZvJiwgY29uc3QgSURCRXJyb3ImKTsKICAgICB2b2lkIHBlcmZvcm1EZWxl
dGVPYmplY3RTdG9yZSh1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIGNvbnN0IElEQlJlc291
cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBvYmplY3RTdG9y
ZUlkZW50aWZpZXIpOwotICAgIHZvaWQgcGVyZm9ybVJlbmFtZU9iamVjdFN0b3JlKHVpbnQ2NF90
IGNhbGxiYWNrSWRlbnRpZmllciwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2Fj
dGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiBuZXdOYW1lKTsKKyAgICB2b2lkIHBlcmZvcm1SZW5hbWVPYmplY3RTdG9yZSh1aW50NjRf
dCBjYWxsYmFja0lkZW50aWZpZXIsIGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNh
Y3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgbmV3TmFtZSwgY29uc3QgSURCRXJyb3ImKTsKICAgICB2b2lkIHBlcmZvcm1DbGVhck9i
amVjdFN0b3JlKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgY29uc3QgSURCUmVzb3VyY2VJ
ZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRl
bnRpZmllcik7Ci0gICAgdm9pZCBwZXJmb3JtQ3JlYXRlSW5kZXgodWludDY0X3QgY2FsbGJhY2tJ
ZGVudGlmaWVyLCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRp
ZmllciwgY29uc3QgSURCSW5kZXhJbmZvJik7CisgICAgdm9pZCBwZXJmb3JtQ3JlYXRlSW5kZXgo
dWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXIm
IHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCSW5kZXhJbmZvJiwgY29uc3QgSURCRXJy
b3ImKTsKICAgICB2b2lkIHBlcmZvcm1EZWxldGVJbmRleCh1aW50NjRfdCBjYWxsYmFja0lkZW50
aWZpZXIsIGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVy
LCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIHVpbnQ2NF90IGluZGV4SWRlbnRpZmll
cik7Ci0gICAgdm9pZCBwZXJmb3JtUmVuYW1lSW5kZXgodWludDY0X3QgY2FsbGJhY2tJZGVudGlm
aWVyLCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwg
dWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCB1aW50NjRfdCBpbmRleElkZW50aWZpZXIs
IGNvbnN0IFN0cmluZyYgbmV3TmFtZSk7Ci0gICAgdm9pZCBwZXJmb3JtUHV0T3JBZGQodWludDY0
X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5z
YWN0aW9uSWRlbnRpZmllciwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBJ
REJLZXlEYXRhJiwgY29uc3QgSURCVmFsdWUmLCBJbmRleGVkREI6Ok9iamVjdFN0b3JlT3Zlcndy
aXRlTW9kZSk7CisgICAgdm9pZCBwZXJmb3JtUmVuYW1lSW5kZXgodWludDY0X3QgY2FsbGJhY2tJ
ZGVudGlmaWVyLCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRp
ZmllciwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCB1aW50NjRfdCBpbmRleElkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSwgY29uc3QgSURCRXJyb3ImKTsKKyAgICB2b2lk
IHBlcmZvcm1QdXRPckFkZCh1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIGNvbnN0IElEQlJl
c291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBvYmplY3RT
dG9yZUlkZW50aWZpZXIsIGNvbnN0IElEQktleURhdGEmLCBjb25zdCBJREJWYWx1ZSYsIEluZGV4
ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlLCBjb25zdCBJREJFcnJvciYpOwogICAgIHZv
aWQgcGVyZm9ybUdldFJlY29yZCh1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIGNvbnN0IElE
QlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBvYmpl
Y3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IElEQktleVJhbmdlRGF0YSYsIElEQkdldFJlY29yZERh
dGFUeXBlKTsKICAgICB2b2lkIHBlcmZvcm1HZXRBbGxSZWNvcmRzKHVpbnQ2NF90IGNhbGxiYWNr
SWRlbnRpZmllciwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50
aWZpZXIsIGNvbnN0IElEQkdldEFsbFJlY29yZHNEYXRhJik7CiAgICAgdm9pZCBwZXJmb3JtR2V0
SW5kZXhSZWNvcmQodWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBjb25zdCBJREJSZXNvdXJj
ZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgdWludDY0X3Qgb2JqZWN0U3RvcmVJ
ZGVudGlmaWVyLCB1aW50NjRfdCBpbmRleElkZW50aWZpZXIsIEluZGV4ZWREQjo6SW5kZXhSZWNv
cmRUeXBlLCBjb25zdCBJREJLZXlSYW5nZURhdGEmKTsKQEAgLTI0Nyw4ICsyNDcsOCBAQCBwcml2
YXRlOgogICAgIHZvaWQgbWF5YmVGaW5pc2hIYXJkQ2xvc2UoKTsKICAgICBib29sIGlzRG9uZVdp
dGhIYXJkQ2xvc2UoKTsKIAotICAgIHZvaWQgcmVxdWVzdFNwYWNlKFVuaXF1ZUlEQkRhdGFiYXNl
VHJhbnNhY3Rpb24mLCB1aW50NjRfdCB0YXNrU2l6ZSwgY29uc3QgY2hhciogZXJyb3JNZXNzYWdl
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPElEQkVycm9yPiYmKT4mJik7Ci0gICAg
dm9pZCB3YWl0Rm9yUmVxdWVzdFNwYWNlQ29tcGxldGlvbihVbmlxdWVJREJEYXRhYmFzZVRyYW5z
YWN0aW9uJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxJREJFcnJvcj4mJik+JiYp
OworICAgIHZvaWQgcmVxdWVzdFNwYWNlKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mLCB1
aW50NjRfdCB0YXNrU2l6ZSwgY29uc3QgY2hhciogZXJyb3JNZXNzYWdlLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKElEQkVycm9yJiYpPiYmKTsKKyAgICB2b2lkIHdhaXRGb3JSZXF1ZXN0U3BhY2VD
b21wbGV0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKElEQkVycm9yJiYpPiYmKTsKICAgICB2b2lkIHVwZGF0ZVNwYWNlVXNlZElmTmVlZGVk
KE9wdGlvbmFsPHVpbnQ2NF90PiBvcHRpb25hbENhbGxiYWNrSWRlbnRpZmllciA9IFdURjo6bnVs
bG9wdCk7CiAKICAgICBSZWY8SURCU2VydmVyPiBtX3NlcnZlcjsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA4OGI4NDI2NmQx
ZDcxMjUwOTI0NGViYWFkNDQxMDY1MWViMzdlNzFjLi5mNjI3MTYwYTI3NTQ3YTY1Y2FmMjY3MTRi
MzgzY2EwMzI0NzlkOTRlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTktMTAtMDMgIFNpaHVp
IExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgQVNTRVJUSU9OIEZBSUxFRDog
bV90cmFuc2FjdGlvbk9wZXJhdGlvbnNJblByb2dyZXNzUXVldWUuZmlyc3QoKSA9PSAmb3BlcmF0
aW9uIGluIElEQlRyYW5zYWN0aW9uOjpvcGVyYXRpb25Db21wbGV0ZWRPbkNsaWVudAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyNTUyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4
ZWRkYi9yZXNvdXJjZXMvc3RvcmFnZS1saW1pdC5qczoKKyAgICAgICAgKG9uT3BlblN1Y2Nlc3Mu
cmVxdWVzdC5vbmVycm9yKToKKwogMjAxOS0xMC0wMyAgSm9obiBXaWxhbmRlciAgPHdpbGFuZGVy
QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXNvdXJjZSBMb2FkIFN0YXRpc3RpY3M6IERvd25ncmFk
ZSBkb2N1bWVudC5yZWZlcnJlciBmb3IgYWxsIHRoaXJkLXBhcnR5IGlmcmFtZXMKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9zdG9yYWdlLWxpbWl0
LmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3N0b3JhZ2UtbGlt
aXQuanMKaW5kZXggODFiZTZkMjA5NjI4MWE1YmZiNzg3MDI5NTAxZGIwZTEzNWRhZjBkYy4uMWEw
N2FmYTU1MjAwMDAzZGU0NjI5ZDMxZGUzNTc3NmZkM2VmOWQ4YiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3N0b3JhZ2UtbGltaXQuanMKKysrIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3N0b3JhZ2UtbGltaXQuanMK
QEAgLTIzLDkgKzIzLDE3IEBAIGZ1bmN0aW9uIG9uT3BlblN1Y2Nlc3MoZXZlbnQpCiAgICAgcHJl
YW1ibGUoZXZlbnQpOwogICAgIGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIp
OwogICAgIGV2YWxBbmRMb2coInN0b3JlID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJywgJ3JlYWR3
cml0ZScpLm9iamVjdFN0b3JlKCdzdG9yZScpIik7CisKKyAgICAvLyBTbWFsbCBhZGQgc2hvdWxk
IHN1Y2NlZWQuCisgICAgZXZhbEFuZExvZygic3VjY2Vzc0NvdW50ID0gMCIpOworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDw9IDEwOyBpICsrKQorICAgIAlldmFsQW5kTG9nKCJzdG9yZS5hZGQobmV3
IFVpbnQ4QXJyYXkoMSksICIgKyBpICsgIikub25zdWNjZXNzID0gKCk9PiB7ICsrc3VjY2Vzc0Nv
dW50OyB9Iik7CisKKwkvLyBCaWcgYWRkIHNob3VsZCBmYWlsLgogICAgIGV2YWxBbmRMb2coInJl
cXVlc3QgPSBzdG9yZS5hZGQobmV3IFVpbnQ4QXJyYXkoIiArIChxdW90YSArIDEpICsgIiksIDAp
Iik7CiAgICAgcmVxdWVzdC5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsKICAgICAgICAgc2hv
dWxkQmVUcnVlKCInZXJyb3InIGluIHJlcXVlc3QiKTsKKyAgICAgICAgc2hvdWxkQmUoInN1Y2Nl
c3NmdWxBZGRDb3VudCIsICIxMCIpOwogICAgICAgICBzaG91bGRCZSgicmVxdWVzdC5lcnJvci5j
b2RlIiwgIkRPTUV4Y2VwdGlvbi5RVU9UQV9FWENFRURFRF9FUlIiKTsKICAgICAgICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJyZXF1ZXN0LmVycm9yLm5hbWUiLCAiUXVvdGFFeGNlZWRlZEVycm9y
Iik7CiAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380189</attachid>
            <date>2019-10-03 23:26:06 -0700</date>
            <delta_ts>2019-10-04 10:43:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202552-20191003232557.patch</filename>
            <type>text/plain</type>
            <size>36257</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwNjk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTNhOWFlZDM5Y2FjOTUy
MTRjYjc2OTk2MjkyOGJjODQ1YmZhYjhjNC4uYzk5YTQyMDMyZmIzYzI0OTRhMzZkZWI1M2YxNWRi
ODc3MmE0MzAxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDE5LTEwLTAzICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIEFTU0VSVElPTiBGQUlMRUQ6
IG1fdHJhbnNhY3Rpb25PcGVyYXRpb25zSW5Qcm9ncmVzc1F1ZXVlLmZpcnN0KCkgPT0gJm9wZXJh
dGlvbiBpbiBJREJUcmFuc2FjdGlvbjo6b3BlcmF0aW9uQ29tcGxldGVkT25DbGllbnQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjU1MgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERpc3BhdGNoIHRhc2sg
dG8gZGF0YWJhc2UgdGhyZWFkIGV2ZW4gaWYgdGhlcmUgaXMgUXVvdGFFeGNlZWRlZEVycm9yLCB0
byBtYWtlIHN1cmUgcmVxdWVzdCByZXN1bHRzIGFyZSBzZW50IGluIAorICAgICAgICBvcmRlci4K
KworICAgICAgICBNb2RpZmllZCBleGlzdGluZyB0ZXN0IHRvIGNvdmVyIHRoaXM6IHN0b3JhZ2Uv
aW5kZXhlZGRiL3N0b3JhZ2UtbGltaXQuaHRtbC4gVGVzdCB3b3VsZCBoaXQgdGhpcyBhc3NlcnRp
b24gCisgICAgICAgIHdpdGhvdXQgZml4LgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZl
cjo6VW5pcXVlSURCRGF0YWJhc2U6OnJlcXVlc3RTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjp3YWl0Rm9yUmVxdWVzdFNwYWNlQ29tcGxldGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpjcmVh
dGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRh
dGFiYXNlOjpjcmVhdGVPYmplY3RTdG9yZUFmdGVyUXVvdGFDaGVjayk6CisgICAgICAgIChXZWJD
b3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3JtQ3JlYXRlT2JqZWN0U3Rv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6ZGVs
ZXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJE
YXRhYmFzZTo6cmVuYW1lT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVy
OjpVbmlxdWVJREJEYXRhYmFzZTo6cmVuYW1lT2JqZWN0U3RvcmVBZnRlclF1b3RhQ2hlY2spOgor
ICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9ybVJl
bmFtZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURC
RGF0YWJhc2U6OmNsZWFyT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVy
OjpVbmlxdWVJREJEYXRhYmFzZTo6Y3JlYXRlSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6Y3JlYXRlSW5kZXhBZnRlclF1b3RhQ2hlY2spOgor
ICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9ybUNy
ZWF0ZUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJh
c2U6OmRlbGV0ZUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURC
RGF0YWJhc2U6OnJlbmFtZUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5p
cXVlSURCRGF0YWJhc2U6OnJlbmFtZUluZGV4QWZ0ZXJRdW90YUNoZWNrKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OnBlcmZvcm1SZW5hbWVJbmRleCk6
CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpwdXRPckFk
ZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpwdXRP
ckFkZEFmdGVyUXVvdGFDaGVjayk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1
ZUlEQkRhdGFiYXNlOjpwZXJmb3JtUHV0T3JBZGQpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2Vy
dmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6Z2V0UmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmdldEFsbFJlY29yZHMpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6Z2V0Q291bnQpOgorICAgICAgICAo
V2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlUmVjb3JkKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6Om9wZW5DdXJzb3Ip
OgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6aXRlcmF0
ZUN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNl
Ojpjb21taXRUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1
ZUlEQkRhdGFiYXNlOjphYm9ydFRyYW5zYWN0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuaDoKKwogMjAxOS0xMC0wMyAgSmFtZXMgRGFy
cGluaWFuICA8amRhcnBpbmlhbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgRml4IFdlYkdMIDEg
Y29uZm9ybWFuY2UgcmVncmVzc2lvbnMgd2hlbiBVU0VfQU5HTEU9MQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRh
YmFzZS5jcHAKaW5kZXggY2U4MWViMDkxYmVkZjBlMGU4ZGFmNGVmZWZkZDQwYzAyZTE3ZjM0MC4u
Mzk1ODI1MzFhODhkZDgzMTRmMzM3ZmRiYmRiYWI2NDZlZTdmMjI5ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURC
RGF0YWJhc2UuY3BwCkBAIC0xODYsNyArMTg2LDcgQEAgc3RhdGljIGlubGluZSBTdHJpbmcgcXVv
dGFFcnJvck1lc3NhZ2VOYW1lKGNvbnN0IGNoYXIqIHRhc2tOYW1lKQogICAgIHJldHVybiBtYWtl
U3RyaW5nKCJGYWlsZWQgdG8gIiwgdGFza05hbWUsICIgaW4gZGF0YWJhc2UgYmVjYXVzZSBub3Qg
ZW5vdWdoIHNwYWNlIGZvciBkb21haW4iKTsKIH0KIAotdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6
cmVxdWVzdFNwYWNlKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCB1
aW50NjRfdCB0YXNrU2l6ZSwgY29uc3QgY2hhciogdGFza05hbWUsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoT3B0aW9uYWw8SURCRXJyb3I+JiYpPiYmIGNhbGxiYWNrKQordm9pZCBVbmlxdWVJREJE
YXRhYmFzZTo6cmVxdWVzdFNwYWNlKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5z
YWN0aW9uLCB1aW50NjRfdCB0YXNrU2l6ZSwgY29uc3QgY2hhciogdGFza05hbWUsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoSURCRXJyb3ImJik+JiYgY2FsbGJhY2spCiB7CiAgICAgbV9zZXJ2ZXIt
PnJlcXVlc3RTcGFjZShtX2lkZW50aWZpZXIub3JpZ2luKCksIHRhc2tTaXplLCBbd2Vha1RoaXMg
PSBtYWtlV2Vha1B0cih0aGlzKSwgdGhpcywgd2Vha1RyYW5zYWN0aW9uID0gbWFrZVdlYWtQdHIo
dHJhbnNhY3Rpb24pLCB0YXNrTmFtZSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYXV0
byBkZWNpc2lvbikgbXV0YWJsZSB7CiAgICAgICAgIGlmICghd2Vha1RoaXMpIHsKQEAgLTIwOSwx
MiArMjA5LDEyIEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnJlcXVlc3RTcGFjZShVbmlxdWVJ
REJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwKICAgICAgICAgICAgIGNhbGxiYWNr
KElEQkVycm9yIHsgUXVvdGFFeGNlZWRlZEVycm9yLCBxdW90YUVycm9yTWVzc2FnZU5hbWUodGFz
a05hbWUpIH0pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBjYXNlIFN0b3JhZ2VRdW90
YU1hbmFnZXI6OkRlY2lzaW9uOjpHcmFudDoKLSAgICAgICAgICAgIGNhbGxiYWNrKHsgfSk7Cisg
ICAgICAgICAgICBjYWxsYmFjayhJREJFcnJvciB7IH0pOwogICAgICAgICB9OwogICAgIH0pOwog
fQogCi12b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjp3YWl0Rm9yUmVxdWVzdFNwYWNlQ29tcGxldGlv
bihVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChPcHRpb25hbDxJREJFcnJvcj4mJik+JiYgY2FsbGJhY2spCit2b2lkIFVuaXF1
ZUlEQkRhdGFiYXNlOjp3YWl0Rm9yUmVxdWVzdFNwYWNlQ29tcGxldGlvbihVbmlxdWVJREJEYXRh
YmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJREJF
cnJvciYmKT4mJiBjYWxsYmFjaykKIHsKICAgICByZXF1ZXN0U3BhY2UodHJhbnNhY3Rpb24sIDAs
ICIiLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiB9CkBAIC04MzgsMjggKzgzOCwyOSBAQCB2b2lkIFVu
aXF1ZUlEQkRhdGFiYXNlOjpjcmVhdGVPYmplY3RTdG9yZShVbmlxdWVJREJEYXRhYmFzZVRyYW5z
YWN0aW9uJiB0cmFuc2FjdAogCiAgICAgYXV0byB0YXNrU2l6ZSA9IGRlZmF1bHRXcml0ZU9wZXJh
dGlvbkNvc3QgKyBlc3RpbWF0ZVNpemUoaW5mbyk7CiAgICAgcmVxdWVzdFNwYWNlKHRyYW5zYWN0
aW9uLCB0YXNrU2l6ZSwgImNyZWF0ZU9iamVjdFN0b3JlIiwgW3RoaXMsIHRhc2tTaXplLCAmdHJh
bnNhY3Rpb24sIGluZm8sIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGF1dG8gZXJyb3Ip
IG11dGFibGUgewotICAgICAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgICAgIGNhbGxiYWNrKFdU
Rk1vdmUoKmVycm9yKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAg
dGhpcy0+Y3JlYXRlT2JqZWN0U3RvcmVBZnRlclF1b3RhQ2hlY2sodGFza1NpemUsIHRyYW5zYWN0
aW9uLCBpbmZvLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgICAgIHRoaXMtPmNyZWF0ZU9iamVj
dFN0b3JlQWZ0ZXJRdW90YUNoZWNrKHRhc2tTaXplLCB0cmFuc2FjdGlvbiwgaW5mbywgV1RGTW92
ZShjYWxsYmFjayksIGVycm9yKTsKICAgICB9KTsKIH0KIAotdm9pZCBVbmlxdWVJREJEYXRhYmFz
ZTo6Y3JlYXRlT2JqZWN0U3RvcmVBZnRlclF1b3RhQ2hlY2sodWludDY0X3QgdGFza1NpemUsIFVu
aXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBjb25zdCBJREJPYmplY3RT
dG9yZUluZm8mIGluZm8sIEVycm9yQ2FsbGJhY2sgY2FsbGJhY2spCit2b2lkIFVuaXF1ZUlEQkRh
dGFiYXNlOjpjcmVhdGVPYmplY3RTdG9yZUFmdGVyUXVvdGFDaGVjayh1aW50NjRfdCB0YXNrU2l6
ZSwgVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIGNvbnN0IElEQk9i
amVjdFN0b3JlSW5mbyYgaW5mbywgRXJyb3JDYWxsYmFjayBjYWxsYmFjaywgY29uc3QgSURCRXJy
b3ImIHF1b3RhRXJyb3IpCiB7CiAgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IHN0b3JlQ2FsbGJh
Y2tPckZpcmVFcnJvcihXVEZNb3ZlKGNhbGxiYWNrKSwgdGFza1NpemUpOwogICAgIGlmICghY2Fs
bGJhY2tJRCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcG9zdERhdGFiYXNlVGFzayhjcmVhdGVD
cm9zc1RocmVhZFRhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9ybUNyZWF0ZU9i
amVjdFN0b3JlLCBjYWxsYmFja0lELCB0cmFuc2FjdGlvbi5pbmZvKCkuaWRlbnRpZmllcigpLCBp
bmZvKSk7CisgICAgcG9zdERhdGFiYXNlVGFzayhjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMs
ICZVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9ybUNyZWF0ZU9iamVjdFN0b3JlLCBjYWxsYmFja0lE
LCB0cmFuc2FjdGlvbi5pbmZvKCkuaWRlbnRpZmllcigpLCBpbmZvLCAgcXVvdGFFcnJvcikpOwog
fQogCi12b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3JtQ3JlYXRlT2JqZWN0U3RvcmUodWlu
dDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRy
YW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJiBpbmZvKQordm9p
ZCBVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9ybUNyZWF0ZU9iamVjdFN0b3JlKHVpbnQ2NF90IGNh
bGxiYWNrSWRlbnRpZmllciwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlv
bklkZW50aWZpZXIsIGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYgaW5mbywgY29uc3QgSURCRXJy
b3ImIHF1b3RhRXJyb3IpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAgTE9H
KEluZGV4ZWREQiwgIihkYikgVW5pcXVlSURCRGF0YWJhc2U6OnBlcmZvcm1DcmVhdGVPYmplY3RT
dG9yZSIpOwogCisgICAgaWYgKCFxdW90YUVycm9yLmlzTnVsbCgpKSB7CisgICAgICAgIHBvc3RE
YXRhYmFzZVRhc2tSZXBseShjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZVbmlxdWVJREJE
YXRhYmFzZTo6ZGlkUGVyZm9ybUNyZWF0ZU9iamVjdFN0b3JlLCBjYWxsYmFja0lkZW50aWZpZXIs
IHF1b3RhRXJyb3IsIGluZm8pKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIEFTU0VS
VChtX2JhY2tpbmdTdG9yZSk7CiAgICAgbV9iYWNraW5nU3RvcmUtPmNyZWF0ZU9iamVjdFN0b3Jl
KHRyYW5zYWN0aW9uSWRlbnRpZmllciwgaW5mbyk7CiAKQEAgLTg4Myw5ICs4ODQsOSBAQCB2b2lk
IFVuaXF1ZUlEQkRhdGFiYXNlOjpkZWxldGVPYmplY3RTdG9yZShVbmlxdWVJREJEYXRhYmFzZVRy
YW5zYWN0aW9uJiB0cmFuc2FjdAogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgTE9H
KEluZGV4ZWREQiwgIihtYWluKSBVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlT2JqZWN0U3RvcmUi
KTsKIAotICAgIHdhaXRGb3JSZXF1ZXN0U3BhY2VDb21wbGV0aW9uKHRyYW5zYWN0aW9uLCBbdGhp
cywgJnRyYW5zYWN0aW9uLCBvYmplY3RTdG9yZU5hbWUsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxs
YmFjayldKGF1dG8gZXJyb3IpIG11dGFibGUgewotICAgICAgICBpZiAoZXJyb3IpIHsKLSAgICAg
ICAgICAgIGNhbGxiYWNrKFdURk1vdmUoKmVycm9yKSk7CisgICAgd2FpdEZvclJlcXVlc3RTcGFj
ZUNvbXBsZXRpb24odHJhbnNhY3Rpb24sIFt0aGlzLCAmdHJhbnNhY3Rpb24sIG9iamVjdFN0b3Jl
TmFtZSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYXV0byYmIGVycm9yKSBtdXRhYmxl
IHsKKyAgICAgICAgaWYgKCFlcnJvci5pc051bGwoKSkgeworICAgICAgICAgICAgY2FsbGJhY2so
V1RGTW92ZShlcnJvcikpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAg
IHRoaXMtPmRlbGV0ZU9iamVjdFN0b3JlQWZ0ZXJRdW90YUNoZWNrKHRyYW5zYWN0aW9uLCBvYmpl
Y3RTdG9yZU5hbWUsIFdURk1vdmUoY2FsbGJhY2spKTsKQEAgLTkzNywzOCArOTM4LDM5IEBAIHZv
aWQgVW5pcXVlSURCRGF0YWJhc2U6OnJlbmFtZU9iamVjdFN0b3JlKFVuaXF1ZUlEQkRhdGFiYXNl
VHJhbnNhY3Rpb24mIHRyYW5zYWN0CiAKICAgICBhdXRvIHRhc2tTaXplID0gZGVmYXVsdFdyaXRl
T3BlcmF0aW9uQ29zdCArIG5ld05hbWUuc2l6ZUluQnl0ZXMoKTsKICAgICByZXF1ZXN0U3BhY2Uo
dHJhbnNhY3Rpb24sIHRhc2tTaXplLCAicmVuYW1lT2JqZWN0U3RvcmUiLCBbdGhpcywgdGFza1Np
emUsICZ0cmFuc2FjdGlvbiwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBuZXdOYW1lLCBjYWxsYmFj
ayA9IFdURk1vdmUoY2FsbGJhY2spXShhdXRvIGVycm9yKSBtdXRhYmxlIHsKLSAgICAgICAgaWYg
KGVycm9yKSB7Ci0gICAgICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKCplcnJvcikpOwotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIHRoaXMtPnJlbmFtZU9iamVjdFN0b3Jl
QWZ0ZXJRdW90YUNoZWNrKHRhc2tTaXplLCB0cmFuc2FjdGlvbiwgb2JqZWN0U3RvcmVJZGVudGlm
aWVyLCBuZXdOYW1lLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgICAgIHRoaXMtPnJlbmFtZU9i
amVjdFN0b3JlQWZ0ZXJRdW90YUNoZWNrKHRhc2tTaXplLCB0cmFuc2FjdGlvbiwgb2JqZWN0U3Rv
cmVJZGVudGlmaWVyLCBuZXdOYW1lLCBXVEZNb3ZlKGNhbGxiYWNrKSwgZXJyb3IpOwogICAgIH0p
OwogfQogCi12b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpyZW5hbWVPYmplY3RTdG9yZUFmdGVyUXVv
dGFDaGVjayh1aW50NjRfdCB0YXNrU2l6ZSwgVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYg
dHJhbnNhY3Rpb24sIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgU3RyaW5n
JiBuZXdOYW1lLCBFcnJvckNhbGxiYWNrIGNhbGxiYWNrKQordm9pZCBVbmlxdWVJREJEYXRhYmFz
ZTo6cmVuYW1lT2JqZWN0U3RvcmVBZnRlclF1b3RhQ2hlY2sodWludDY0X3QgdGFza1NpemUsIFVu
aXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCB1aW50NjRfdCBvYmplY3RT
dG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSwgRXJyb3JDYWxsYmFjayBjYWxs
YmFjaywgY29uc3QgSURCRXJyb3ImIHF1b3RhRXJyb3IpCiB7CiAgICAgdWludDY0X3QgY2FsbGJh
Y2tJRCA9IHN0b3JlQ2FsbGJhY2tPckZpcmVFcnJvcihXVEZNb3ZlKGNhbGxiYWNrKSwgdGFza1Np
emUpOwogICAgIGlmICghY2FsbGJhY2tJRCkKICAgICAgICAgcmV0dXJuOwogCisgICAgSURCRXJy
b3IgZXJyb3IgPSBxdW90YUVycm9yOwogICAgIGF1dG8qIGluZm8gPSBtX2RhdGFiYXNlSW5mby0+
aW5mb0ZvckV4aXN0aW5nT2JqZWN0U3RvcmUob2JqZWN0U3RvcmVJZGVudGlmaWVyKTsKICAgICBp
ZiAoIWluZm8pIHsKLSAgICAgICAgcGVyZm9ybUVycm9yQ2FsbGJhY2soY2FsbGJhY2tJRCwgSURC
RXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIHJlbmFtZSBub24tZXhpc3RhbnQgb2Jq
ZWN0IHN0b3JlIl9zIH0pOworICAgICAgICBlcnJvciA9IElEQkVycm9yIHsgVW5rbm93bkVycm9y
LCAiQXR0ZW1wdCB0byByZW5hbWUgbm9uLWV4aXN0YW50IG9iamVjdCBzdG9yZSJfcyB9OwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgcG9zdERhdGFiYXNlVGFzayhjcmVhdGVDcm9zc1Ro
cmVhZFRhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9ybVJlbmFtZU9iamVjdFN0
b3JlLCBjYWxsYmFja0lELCB0cmFuc2FjdGlvbi5pbmZvKCkuaWRlbnRpZmllcigpLCBvYmplY3RT
dG9yZUlkZW50aWZpZXIsIG5ld05hbWUpKTsKKyAgICBwb3N0RGF0YWJhc2VUYXNrKGNyZWF0ZUNy
b3NzVGhyZWFkVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3JtUmVuYW1lT2Jq
ZWN0U3RvcmUsIGNhbGxiYWNrSUQsIHRyYW5zYWN0aW9uLmluZm8oKS5pZGVudGlmaWVyKCksIG9i
amVjdFN0b3JlSWRlbnRpZmllciwgbmV3TmFtZSwgZXJyb3IpKTsKIH0KIAotdm9pZCBVbmlxdWVJ
REJEYXRhYmFzZTo6cGVyZm9ybVJlbmFtZU9iamVjdFN0b3JlKHVpbnQ2NF90IGNhbGxiYWNrSWRl
bnRpZmllciwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZp
ZXIsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuZXdOYW1l
KQordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9ybVJlbmFtZU9iamVjdFN0b3JlKHVpbnQ2
NF90IGNhbGxiYWNrSWRlbnRpZmllciwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFu
c2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3Qg
U3RyaW5nJiBuZXdOYW1lLCBjb25zdCBJREJFcnJvciYgZXJyb3IpCiB7CiAgICAgQVNTRVJUKCFp
c01haW5UaHJlYWQoKSk7CiAgICAgTE9HKEluZGV4ZWREQiwgIihkYikgVW5pcXVlSURCRGF0YWJh
c2U6OnBlcmZvcm1SZW5hbWVPYmplY3RTdG9yZSIpOworICAgIAorICAgIGlmICghZXJyb3IuaXNO
dWxsKCkpIHsKKyAgICAgICAgcG9zdERhdGFiYXNlVGFza1JlcGx5KGNyZWF0ZUNyb3NzVGhyZWFk
VGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRQZXJmb3JtUmVuYW1lT2JqZWN0U3Rv
cmUsIGNhbGxiYWNrSWRlbnRpZmllciwgZXJyb3IsIG9iamVjdFN0b3JlSWRlbnRpZmllciwgbmV3
TmFtZSkpOworICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgQVNTRVJUKG1fYmFja2luZ1N0
b3JlKTsKICAgICBtX2JhY2tpbmdTdG9yZS0+cmVuYW1lT2JqZWN0U3RvcmUodHJhbnNhY3Rpb25J
ZGVudGlmaWVyLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIG5ld05hbWUpOwogCi0gICAgSURCRXJy
b3IgZXJyb3I7CiAgICAgcG9zdERhdGFiYXNlVGFza1JlcGx5KGNyZWF0ZUNyb3NzVGhyZWFkVGFz
aygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRQZXJmb3JtUmVuYW1lT2JqZWN0U3RvcmUs
IGNhbGxiYWNrSWRlbnRpZmllciwgZXJyb3IsIG9iamVjdFN0b3JlSWRlbnRpZmllciwgbmV3TmFt
ZSkpOwogfQogCkBAIC05ODgsOSArOTkwLDkgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Y2xl
YXJPYmplY3RTdG9yZShVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGkKICAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIExPRyhJbmRleGVkREIsICIobWFpbikgVW5p
cXVlSURCRGF0YWJhc2U6OmNsZWFyT2JqZWN0U3RvcmUiKTsKIAotICAgIHdhaXRGb3JSZXF1ZXN0
U3BhY2VDb21wbGV0aW9uKHRyYW5zYWN0aW9uLCBbdGhpcywgJnRyYW5zYWN0aW9uLCBvYmplY3RT
dG9yZUlkZW50aWZpZXIsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGF1dG8gZXJyb3Ip
IG11dGFibGUgewotICAgICAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgICAgIGNhbGxiYWNrKFdU
Rk1vdmUoKmVycm9yKSk7CisgICAgd2FpdEZvclJlcXVlc3RTcGFjZUNvbXBsZXRpb24odHJhbnNh
Y3Rpb24sIFt0aGlzLCAmdHJhbnNhY3Rpb24sIG9iamVjdFN0b3JlSWRlbnRpZmllciwgY2FsbGJh
Y2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYXV0byYmIGVycm9yKSBtdXRhYmxlIHsKKyAgICAgICAg
aWYgKCFlcnJvci5pc051bGwoKSkgeworICAgICAgICAgICAgY2FsbGJhY2soV1RGTW92ZShlcnJv
cikpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIHRoaXMtPmNsZWFy
T2JqZWN0U3RvcmVBZmV0UXVvdGFDaGVjayh0cmFuc2FjdGlvbiwgb2JqZWN0U3RvcmVJZGVudGlm
aWVyLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CkBAIC0xMDMyLDI2ICsxMDM0LDI3IEBAIHZvaWQgVW5p
cXVlSURCRGF0YWJhc2U6OmNyZWF0ZUluZGV4KFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24m
IHRyYW5zYWN0aW9uLCBjCiAKICAgICBhdXRvIHRhc2tTaXplID0gZGVmYXVsdFdyaXRlT3BlcmF0
aW9uQ29zdCArIGVzdGltYXRlU2l6ZShpbmZvKTsKICAgICByZXF1ZXN0U3BhY2UodHJhbnNhY3Rp
b24sIHRhc2tTaXplLCAiY3JlYXRlSW5kZXgiLCBbdGhpcywgdGFza1NpemUsICZ0cmFuc2FjdGlv
biwgaW5mbywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYXV0byBlcnJvcikgbXV0YWJs
ZSB7Ci0gICAgICAgIGlmIChlcnJvcikgewotICAgICAgICAgICAgY2FsbGJhY2soV1RGTW92ZSgq
ZXJyb3IpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICB0aGlzLT5j
cmVhdGVJbmRleEFmdGVyUXVvdGFDaGVjayh0YXNrU2l6ZSwgdHJhbnNhY3Rpb24sIGluZm8sIFdU
Rk1vdmUoY2FsbGJhY2spKTsKKyAgICAgICAgdGhpcy0+Y3JlYXRlSW5kZXhBZnRlclF1b3RhQ2hl
Y2sodGFza1NpemUsIHRyYW5zYWN0aW9uLCBpbmZvLCBXVEZNb3ZlKGNhbGxiYWNrKSwgZXJyb3Ip
OwogICAgIH0pOwogfQogCi12b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjcmVhdGVJbmRleEFmdGVy
UXVvdGFDaGVjayh1aW50NjRfdCB0YXNrU2l6ZSwgVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlv
biYgdHJhbnNhY3Rpb24sIGNvbnN0IElEQkluZGV4SW5mbyYgaW5mbywgRXJyb3JDYWxsYmFjayBj
YWxsYmFjaykKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmNyZWF0ZUluZGV4QWZ0ZXJRdW90YUNo
ZWNrKHVpbnQ2NF90IHRhc2tTaXplLCBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFu
c2FjdGlvbiwgY29uc3QgSURCSW5kZXhJbmZvJiBpbmZvLCBFcnJvckNhbGxiYWNrIGNhbGxiYWNr
LCBjb25zdCBJREJFcnJvciYgcXVvdGFFcnJvcikKIHsKICAgICB1aW50NjRfdCBjYWxsYmFja0lE
ID0gc3RvcmVDYWxsYmFja09yRmlyZUVycm9yKFdURk1vdmUoY2FsbGJhY2spLCB0YXNrU2l6ZSk7
CiAgICAgaWYgKCFjYWxsYmFja0lEKQogICAgICAgICByZXR1cm47Ci0gICAgcG9zdERhdGFiYXNl
VGFzayhjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6cGVy
Zm9ybUNyZWF0ZUluZGV4LCBjYWxsYmFja0lELCB0cmFuc2FjdGlvbi5pbmZvKCkuaWRlbnRpZmll
cigpLCBpbmZvKSk7CisgICAgcG9zdERhdGFiYXNlVGFzayhjcmVhdGVDcm9zc1RocmVhZFRhc2so
KnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9ybUNyZWF0ZUluZGV4LCBjYWxsYmFja0lE
LCB0cmFuc2FjdGlvbi5pbmZvKCkuaWRlbnRpZmllcigpLCBpbmZvLCBxdW90YUVycm9yKSk7CiB9
CiAKLXZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnBlcmZvcm1DcmVhdGVJbmRleCh1aW50NjRfdCBj
YWxsYmFja0lkZW50aWZpZXIsIGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rp
b25JZGVudGlmaWVyLCBjb25zdCBJREJJbmRleEluZm8mIGluZm8pCit2b2lkIFVuaXF1ZUlEQkRh
dGFiYXNlOjpwZXJmb3JtQ3JlYXRlSW5kZXgodWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBj
b25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3Qg
SURCSW5kZXhJbmZvJiBpbmZvLCBjb25zdCBJREJFcnJvciYgcXVvdGFFcnJvcikKIHsKICAgICBB
U1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBMT0coSW5kZXhlZERCLCAiKGRiKSBVbmlxdWVJ
REJEYXRhYmFzZTo6cGVyZm9ybUNyZWF0ZUluZGV4Iik7CisgICAgCisgICAgaWYgKCFxdW90YUVy
cm9yLmlzTnVsbCgpKSB7CisgICAgICAgIHBvc3REYXRhYmFzZVRhc2tSZXBseShjcmVhdGVDcm9z
c1RocmVhZFRhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6ZGlkUGVyZm9ybUNyZWF0ZUlu
ZGV4LCBjYWxsYmFja0lkZW50aWZpZXIsIHF1b3RhRXJyb3IsIGluZm8pKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KIAogICAgIElEQkVycm9yIGVycm9yOwogICAgIEFTU0VSVChtX2JhY2tpbmdT
dG9yZSk7CkBAIC0xMDg2LDkgKzEwODksOSBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpkZWxl
dGVJbmRleChVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgdQogICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgTE9HKEluZGV4ZWREQiwgIihtYWluKSBVbmlx
dWVJREJEYXRhYmFzZTo6ZGVsZXRlSW5kZXgiKTsKIAotICAgIHdhaXRGb3JSZXF1ZXN0U3BhY2VD
b21wbGV0aW9uKHRyYW5zYWN0aW9uLCBbdGhpcywgJnRyYW5zYWN0aW9uLCBvYmplY3RTdG9yZUlk
ZW50aWZpZXIsIGluZGV4TmFtZSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYXV0byBl
cnJvcikgbXV0YWJsZSB7Ci0gICAgICAgIGlmIChlcnJvcikgewotICAgICAgICAgICAgY2FsbGJh
Y2soV1RGTW92ZSgqZXJyb3IpKTsKKyAgICB3YWl0Rm9yUmVxdWVzdFNwYWNlQ29tcGxldGlvbih0
cmFuc2FjdGlvbiwgW3RoaXMsICZ0cmFuc2FjdGlvbiwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBp
bmRleE5hbWUsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGF1dG8mJiBlcnJvcikgbXV0
YWJsZSB7CisgICAgICAgIGlmICghZXJyb3IuaXNOdWxsKCkpIHsKKyAgICAgICAgICAgIGNhbGxi
YWNrKFdURk1vdmUoZXJyb3IpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAg
ICAgICB0aGlzLT5kZWxldGVJbmRleEFmdGVyUXVvdGFDaGVjayh0cmFuc2FjdGlvbiwgb2JqZWN0
U3RvcmVJZGVudGlmaWVyLCBpbmRleE5hbWUsIFdURk1vdmUoY2FsbGJhY2spKTsKQEAgLTExNDks
NDQgKzExNTIsNDEgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cmVuYW1lSW5kZXgoVW5pcXVl
SURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIHUKIAogICAgIGF1dG8gdGFza1Np
emUgPSBkZWZhdWx0V3JpdGVPcGVyYXRpb25Db3N0ICsgbmV3TmFtZS5zaXplSW5CeXRlcygpOwog
ICAgIHJlcXVlc3RTcGFjZSh0cmFuc2FjdGlvbiwgdGFza1NpemUsICJyZW5hbWVJbmRleCIsIFt0
aGlzLCB0YXNrU2l6ZSwgJnRyYW5zYWN0aW9uLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGluZGV4
SWRlbnRpZmllciwgbmV3TmFtZSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYXV0byBl
cnJvcikgbXV0YWJsZSB7Ci0gICAgICAgIGlmIChlcnJvcikgewotICAgICAgICAgICAgY2FsbGJh
Y2soV1RGTW92ZSgqZXJyb3IpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAg
ICAgICB0aGlzLT5yZW5hbWVJbmRleEFmdGVyUXVvdGFDaGVjayh0YXNrU2l6ZSwgdHJhbnNhY3Rp
b24sIG9iamVjdFN0b3JlSWRlbnRpZmllciwgaW5kZXhJZGVudGlmaWVyLCBuZXdOYW1lLCBXVEZN
b3ZlKGNhbGxiYWNrKSk7CisgICAgICAgIHRoaXMtPnJlbmFtZUluZGV4QWZ0ZXJRdW90YUNoZWNr
KHRhc2tTaXplLCB0cmFuc2FjdGlvbiwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRleElkZW50
aWZpZXIsIG5ld05hbWUsIFdURk1vdmUoY2FsbGJhY2spLCBlcnJvcik7CiAgICAgfSk7CiB9CiAK
LXZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnJlbmFtZUluZGV4QWZ0ZXJRdW90YUNoZWNrKHVpbnQ2
NF90IHRhc2tTaXplLCBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwg
dWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCB1aW50NjRfdCBpbmRleElkZW50aWZpZXIs
IGNvbnN0IFN0cmluZyYgbmV3TmFtZSwgRXJyb3JDYWxsYmFjayBjYWxsYmFjaykKK3ZvaWQgVW5p
cXVlSURCRGF0YWJhc2U6OnJlbmFtZUluZGV4QWZ0ZXJRdW90YUNoZWNrKHVpbnQ2NF90IHRhc2tT
aXplLCBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgdWludDY0X3Qg
b2JqZWN0U3RvcmVJZGVudGlmaWVyLCB1aW50NjRfdCBpbmRleElkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgbmV3TmFtZSwgRXJyb3JDYWxsYmFjayBjYWxsYmFjaywgY29uc3QgSURCRXJyb3ImIHF1
b3RhRXJyb3IpCiB7CiAgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IHN0b3JlQ2FsbGJhY2tPckZp
cmVFcnJvcihXVEZNb3ZlKGNhbGxiYWNrKSwgdGFza1NpemUpOwogICAgIGlmICghY2FsbGJhY2tJ
RCkKICAgICAgICAgcmV0dXJuOwogCisgICAgSURCRXJyb3IgZXJyb3IgPSBxdW90YUVycm9yOwog
ICAgIGF1dG8qIG9iamVjdFN0b3JlSW5mbyA9IG1fZGF0YWJhc2VJbmZvLT5pbmZvRm9yRXhpc3Rp
bmdPYmplY3RTdG9yZShvYmplY3RTdG9yZUlkZW50aWZpZXIpOwotICAgIGlmICghb2JqZWN0U3Rv
cmVJbmZvKSB7Ci0gICAgICAgIHBlcmZvcm1FcnJvckNhbGxiYWNrKGNhbGxiYWNrSUQsIElEQkVy
cm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byByZW5hbWUgaW5kZXggaW4gbm9uLWV4aXN0
YW50IG9iamVjdCBzdG9yZSJfcyB9KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAo
IW9iamVjdFN0b3JlSW5mbykKKyAgICAgICAgZXJyb3IgPSBJREJFcnJvciB7IFVua25vd25FcnJv
ciwgIkF0dGVtcHQgdG8gcmVuYW1lIGluZGV4IGluIG5vbi1leGlzdGFudCBvYmplY3Qgc3RvcmUi
X3MgfTsKIAogICAgIGF1dG8qIGluZGV4SW5mbyA9IG9iamVjdFN0b3JlSW5mby0+aW5mb0ZvckV4
aXN0aW5nSW5kZXgoaW5kZXhJZGVudGlmaWVyKTsKLSAgICBpZiAoIWluZGV4SW5mbykgewotICAg
ICAgICBwZXJmb3JtRXJyb3JDYWxsYmFjayhjYWxsYmFja0lELCBJREJFcnJvciB7IFVua25vd25F
cnJvciwgIkF0dGVtcHQgdG8gcmVuYW1lIG5vbi1leGlzdGFudCBpbmRleCJfcyB9KTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoIWluZGV4SW5mbykKKyAgICAgICAgZXJyb3IgPSBJ
REJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gcmVuYW1lIG5vbi1leGlzdGFudCBp
bmRleCJfcyB9OwogCi0gICAgcG9zdERhdGFiYXNlVGFzayhjcmVhdGVDcm9zc1RocmVhZFRhc2so
KnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9ybVJlbmFtZUluZGV4LCBjYWxsYmFja0lE
LCB0cmFuc2FjdGlvbi5pbmZvKCkuaWRlbnRpZmllcigpLCBvYmplY3RTdG9yZUlkZW50aWZpZXIs
IGluZGV4SWRlbnRpZmllciwgbmV3TmFtZSkpOworICAgIHBvc3REYXRhYmFzZVRhc2soY3JlYXRl
Q3Jvc3NUaHJlYWRUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OnBlcmZvcm1SZW5hbWVJ
bmRleCwgY2FsbGJhY2tJRCwgdHJhbnNhY3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKSwgb2JqZWN0
U3RvcmVJZGVudGlmaWVyLCBpbmRleElkZW50aWZpZXIsIG5ld05hbWUsIGVycm9yKSk7CiB9CiAK
LXZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnBlcmZvcm1SZW5hbWVJbmRleCh1aW50NjRfdCBjYWxs
YmFja0lkZW50aWZpZXIsIGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25J
ZGVudGlmaWVyLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIHVpbnQ2NF90IGluZGV4
SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuZXdOYW1lKQordm9pZCBVbmlxdWVJREJEYXRhYmFz
ZTo6cGVyZm9ybVJlbmFtZUluZGV4KHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgY29uc3Qg
SURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IG9i
amVjdFN0b3JlSWRlbnRpZmllciwgdWludDY0X3QgaW5kZXhJZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmIG5ld05hbWUsIGNvbnN0IElEQkVycm9yJiBlcnJvcikKIHsKICAgICBBU1NFUlQoIWlzTWFp
blRocmVhZCgpKTsKICAgICBMT0coSW5kZXhlZERCLCAiKGRiKSBVbmlxdWVJREJEYXRhYmFzZTo6
cGVyZm9ybVJlbmFtZUluZGV4Iik7CiAKKyAgICBpZiAoIWVycm9yLmlzTnVsbCgpKSB7CisgICAg
ICAgIHBvc3REYXRhYmFzZVRhc2tSZXBseShjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZV
bmlxdWVJREJEYXRhYmFzZTo6ZGlkUGVyZm9ybVJlbmFtZUluZGV4LCBjYWxsYmFja0lkZW50aWZp
ZXIsIGVycm9yLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGluZGV4SWRlbnRpZmllciwgbmV3TmFt
ZSkpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgQVNTRVJUKG1fYmFja2luZ1N0b3Jl
KTsKICAgICBtX2JhY2tpbmdTdG9yZS0+cmVuYW1lSW5kZXgodHJhbnNhY3Rpb25JZGVudGlmaWVy
LCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGluZGV4SWRlbnRpZmllciwgbmV3TmFtZSk7CiAKLSAg
ICBJREJFcnJvciBlcnJvcjsKICAgICBwb3N0RGF0YWJhc2VUYXNrUmVwbHkoY3JlYXRlQ3Jvc3NU
aHJlYWRUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OmRpZFBlcmZvcm1SZW5hbWVJbmRl
eCwgY2FsbGJhY2tJZGVudGlmaWVyLCBlcnJvciwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRl
eElkZW50aWZpZXIsIG5ld05hbWUpKTsKIH0KIApAQCAtMTIxNSwyMyArMTIxNSwxOSBAQCB2b2lk
IFVuaXF1ZUlEQkRhdGFiYXNlOjpwdXRPckFkZChVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9u
JiB0cmFuc2FjdGlvbiwgY29ucwogCiAgICAgYXV0byB0YXNrU2l6ZSA9IGRlZmF1bHRXcml0ZU9w
ZXJhdGlvbkNvc3QgKyBlc3RpbWF0ZVNpemUoa2V5RGF0YSkgKyBlc3RpbWF0ZVNpemUodmFsdWUp
OwogICAgIHJlcXVlc3RTcGFjZSh0cmFuc2FjdGlvbiwgdGFza1NpemUsICJwdXRPckFkZCIsIFt0
aGlzLCB0YXNrU2l6ZSwgcmVxdWVzdERhdGEsIGtleURhdGEsIHZhbHVlLCBjYWxsYmFjayA9IFdU
Rk1vdmUoY2FsbGJhY2spLCBvdmVyd3JpdGVNb2RlXShhdXRvIGVycm9yKSBtdXRhYmxlIHsKLSAg
ICAgICAgaWYgKGVycm9yKSB7Ci0gICAgICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKCplcnJvciks
IHsgfSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgdGhpcy0+cHV0
T3JBZGRBZnRlclF1b3RhQ2hlY2sodGFza1NpemUsIHJlcXVlc3REYXRhLCBrZXlEYXRhLCB2YWx1
ZSwgb3ZlcndyaXRlTW9kZSwgV1RGTW92ZShjYWxsYmFjaykpOworICAgICAgICB0aGlzLT5wdXRP
ckFkZEFmdGVyUXVvdGFDaGVjayh0YXNrU2l6ZSwgcmVxdWVzdERhdGEsIGtleURhdGEsIHZhbHVl
LCBvdmVyd3JpdGVNb2RlLCBXVEZNb3ZlKGNhbGxiYWNrKSwgZXJyb3IpOwogICAgIH0pOwogfQog
Ci12b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpwdXRPckFkZEFmdGVyUXVvdGFDaGVjayh1aW50NjRf
dCB0YXNrU2l6ZSwgY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJL
ZXlEYXRhJiBrZXlEYXRhLCBjb25zdCBJREJWYWx1ZSYgdmFsdWUsIEluZGV4ZWREQjo6T2JqZWN0
U3RvcmVPdmVyd3JpdGVNb2RlIG92ZXJ3cml0ZU1vZGUsIEtleURhdGFDYWxsYmFjayBjYWxsYmFj
aykKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnB1dE9yQWRkQWZ0ZXJRdW90YUNoZWNrKHVpbnQ2
NF90IHRhc2tTaXplLCBjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElE
QktleURhdGEmIGtleURhdGEsIGNvbnN0IElEQlZhbHVlJiB2YWx1ZSwgSW5kZXhlZERCOjpPYmpl
Y3RTdG9yZU92ZXJ3cml0ZU1vZGUgb3ZlcndyaXRlTW9kZSwgS2V5RGF0YUNhbGxiYWNrIGNhbGxi
YWNrLCBjb25zdCBJREJFcnJvciYgcXVvdGFFcnJvcikKIHsKICAgICB1aW50NjRfdCBjYWxsYmFj
a0lEID0gc3RvcmVDYWxsYmFja09yRmlyZUVycm9yKFdURk1vdmUoY2FsbGJhY2spLCB0YXNrU2l6
ZSk7CiAgICAgaWYgKCFjYWxsYmFja0lEKQogICAgICAgICByZXR1cm47Ci0gICAgcG9zdERhdGFi
YXNlVGFzayhjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6
cGVyZm9ybVB1dE9yQWRkLCBjYWxsYmFja0lELCByZXF1ZXN0RGF0YS50cmFuc2FjdGlvbklkZW50
aWZpZXIoKSwgcmVxdWVzdERhdGEub2JqZWN0U3RvcmVJZGVudGlmaWVyKCksIGtleURhdGEsIHZh
bHVlLCBvdmVyd3JpdGVNb2RlKSk7CisgICAgcG9zdERhdGFiYXNlVGFzayhjcmVhdGVDcm9zc1Ro
cmVhZFRhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9ybVB1dE9yQWRkLCBjYWxs
YmFja0lELCByZXF1ZXN0RGF0YS50cmFuc2FjdGlvbklkZW50aWZpZXIoKSwgcmVxdWVzdERhdGEu
b2JqZWN0U3RvcmVJZGVudGlmaWVyKCksIGtleURhdGEsIHZhbHVlLCBvdmVyd3JpdGVNb2RlLCBx
dW90YUVycm9yKSk7CiB9CiAKLXZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnBlcmZvcm1QdXRPckFk
ZCh1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmll
ciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIs
IGNvbnN0IElEQktleURhdGEmIGtleURhdGEsIGNvbnN0IElEQlZhbHVlJiBvcmlnaW5hbFJlY29y
ZFZhbHVlLCBJbmRleGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9kZSBvdmVyd3JpdGVNb2Rl
KQordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9ybVB1dE9yQWRkKHVpbnQ2NF90IGNhbGxi
YWNrSWRlbnRpZmllciwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklk
ZW50aWZpZXIsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgSURCS2V5RGF0
YSYga2V5RGF0YSwgY29uc3QgSURCVmFsdWUmIG9yaWdpbmFsUmVjb3JkVmFsdWUsIEluZGV4ZWRE
Qjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlIG92ZXJ3cml0ZU1vZGUsIGNvbnN0IElEQkVycm9y
JiBxdW90YUVycm9yKQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAgIExPRyhJ
bmRleGVkREIsICIoZGIpIFVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3JtUHV0T3JBZGQiKTsKQEAg
LTEyNDIsNiArMTIzOCwxMSBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3JtUHV0T3JB
ZGQodWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBjb25zdCBJREJSZQogICAgIElEQktleURh
dGEgdXNlZEtleTsKICAgICBJREJFcnJvciBlcnJvcjsKIAorICAgIGlmICghcXVvdGFFcnJvci5p
c051bGwoKSkgeworICAgICAgICBwb3N0RGF0YWJhc2VUYXNrUmVwbHkoY3JlYXRlQ3Jvc3NUaHJl
YWRUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OmRpZFBlcmZvcm1QdXRPckFkZCwgY2Fs
bGJhY2tJZGVudGlmaWVyLCBxdW90YUVycm9yLCB1c2VkS2V5KSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKICAgICBpZiAoIW1fYmFja2luZ1N0b3JlKSB7CiAgICAgICAgIFJFTEVBU0VfTE9H
X0VSUk9SKEluZGV4ZWREQiwgIiVwIC0gVW5pcXVlSURCRGF0YWJhc2U6OnBlcmZvcm1QdXRPckFk
ZDogbV9iYWNraW5nU3RvcmUgaXMgbnVsbCIsIHRoaXMpOwogICAgICAgICBlcnJvciA9IElEQkVy
cm9yKEludmFsaWRTdGF0ZUVycm9yLCAiQmFja2luZyBzdG9yZSBpcyBpbnZhbGlkIGZvciBjYWxs
IHRvIHB1dCBvciBhZGQiX3MpOwpAQCAtMTMyMyw5ICsxMzI0LDkgQEAgdm9pZCBVbmlxdWVJREJE
YXRhYmFzZTo6Z2V0UmVjb3JkKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0
aW9uLCBjb24KICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIExPRyhJbmRleGVkREIs
ICIobWFpbikgVW5pcXVlSURCRGF0YWJhc2U6OmdldFJlY29yZCIpOwogCi0gICAgd2FpdEZvclJl
cXVlc3RTcGFjZUNvbXBsZXRpb24odHJhbnNhY3Rpb24sIFt0aGlzLCByZXF1ZXN0RGF0YSwgZ2V0
UmVjb3JkRGF0YSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYXV0byBlcnJvcikgbXV0
YWJsZSB7Ci0gICAgICAgIGlmIChlcnJvcikgewotICAgICAgICAgICAgY2FsbGJhY2soV1RGTW92
ZSgqZXJyb3IpLCB7IH0pOworICAgIHdhaXRGb3JSZXF1ZXN0U3BhY2VDb21wbGV0aW9uKHRyYW5z
YWN0aW9uLCBbdGhpcywgcmVxdWVzdERhdGEsIGdldFJlY29yZERhdGEsIGNhbGxiYWNrID0gV1RG
TW92ZShjYWxsYmFjayldKGF1dG8mJiBlcnJvcikgbXV0YWJsZSB7CisgICAgICAgIGlmICghZXJy
b3IuaXNOdWxsKCkpIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKFdURk1vdmUoZXJyb3IpLCB7IH0p
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIHRoaXMtPmdldFJlY29y
ZEFmdGVyUXVvdGFDaGVjayhyZXF1ZXN0RGF0YSwgZ2V0UmVjb3JkRGF0YSwgV1RGTW92ZShjYWxs
YmFjaykpOwpAQCAtMTM0OSw5ICsxMzUwLDkgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Z2V0
QWxsUmVjb3JkcyhVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwKICAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIExPRyhJbmRleGVkREIsICIobWFpbikgVW5p
cXVlSURCRGF0YWJhc2U6OmdldEFsbFJlY29yZHMiKTsKIAotICAgIHdhaXRGb3JSZXF1ZXN0U3Bh
Y2VDb21wbGV0aW9uKHRyYW5zYWN0aW9uLCBbdGhpcywgcmVxdWVzdERhdGEsIGdldEFsbFJlY29y
ZHNEYXRhLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShhdXRvIGVycm9yKSBtdXRhYmxl
IHsKLSAgICAgICAgaWYgKGVycm9yKSB7Ci0gICAgICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKCpl
cnJvciksIHsgfSk7CisgICAgd2FpdEZvclJlcXVlc3RTcGFjZUNvbXBsZXRpb24odHJhbnNhY3Rp
b24sIFt0aGlzLCByZXF1ZXN0RGF0YSwgZ2V0QWxsUmVjb3Jkc0RhdGEsIGNhbGxiYWNrID0gV1RG
TW92ZShjYWxsYmFjayldKGF1dG8mJiBlcnJvcikgbXV0YWJsZSB7CisgICAgICAgIGlmICghZXJy
b3IuaXNOdWxsKCkpIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKFdURk1vdmUoZXJyb3IpLCB7IH0p
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIHRoaXMtPmdldEFsbFJl
Y29yZHNBZnRlclF1b3RhQ2hlY2socmVxdWVzdERhdGEsIGdldEFsbFJlY29yZHNEYXRhLCBXVEZN
b3ZlKGNhbGxiYWNrKSk7CkBAIC0xNDI3LDkgKzE0MjgsOSBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFi
YXNlOjpnZXRDb3VudChVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwg
Y29ucwogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgTE9HKEluZGV4ZWREQiwgIiht
YWluKSBVbmlxdWVJREJEYXRhYmFzZTo6Z2V0Q291bnQiKTsKIAotICAgIHdhaXRGb3JSZXF1ZXN0
U3BhY2VDb21wbGV0aW9uKHRyYW5zYWN0aW9uLCBbdGhpcywgcmVxdWVzdERhdGEsIHJhbmdlLCBj
YWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShhdXRvIGVycm9yKSBtdXRhYmxlIHsKLSAgICAg
ICAgaWYgKGVycm9yKSB7Ci0gICAgICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKCplcnJvciksIHsg
fSk7CisgICAgd2FpdEZvclJlcXVlc3RTcGFjZUNvbXBsZXRpb24odHJhbnNhY3Rpb24sIFt0aGlz
LCByZXF1ZXN0RGF0YSwgcmFuZ2UsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGF1dG8m
JiBlcnJvcikgbXV0YWJsZSB7CisgICAgICAgIGlmICghZXJyb3IuaXNOdWxsKCkpIHsKKyAgICAg
ICAgICAgIGNhbGxiYWNrKFdURk1vdmUoZXJyb3IpLCB7IH0pOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAgICAgICAgIHRoaXMtPmdldENvdW50QWZ0ZXJRdW90YUNoZWNrKHJlcXVl
c3REYXRhLCByYW5nZSwgV1RGTW92ZShjYWxsYmFjaykpOwpAQCAtMTQ3MSw5ICsxNDcyLDkgQEAg
dm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlUmVjb3JkKFVuaXF1ZUlEQkRhdGFiYXNlVHJh
bnNhY3Rpb24mIHRyYW5zYWN0aW9uLAogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAg
TE9HKEluZGV4ZWREQiwgIihtYWluKSBVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlUmVjb3JkIik7
CiAKLSAgICB3YWl0Rm9yUmVxdWVzdFNwYWNlQ29tcGxldGlvbih0cmFuc2FjdGlvbiwgW3RoaXMs
IHJlcXVlc3REYXRhLCBrZXlSYW5nZURhdGEsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayld
KGF1dG8gZXJyb3IpIG11dGFibGUgewotICAgICAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgICAg
IGNhbGxiYWNrKFdURk1vdmUoKmVycm9yKSk7CisgICAgd2FpdEZvclJlcXVlc3RTcGFjZUNvbXBs
ZXRpb24odHJhbnNhY3Rpb24sIFt0aGlzLCByZXF1ZXN0RGF0YSwga2V5UmFuZ2VEYXRhLCBjYWxs
YmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShhdXRvJiYgZXJyb3IpIG11dGFibGUgeworICAgICAg
ICBpZiAoIWVycm9yLmlzTnVsbCgpKSB7CisgICAgICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKGVy
cm9yKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgdGhpcy0+ZGVs
ZXRlUmVjb3JkQWZ0ZXJRdW90YUNoZWNrKHJlcXVlc3REYXRhLCBrZXlSYW5nZURhdGEsIFdURk1v
dmUoY2FsbGJhY2spKTsKQEAgLTE1MTEsOSArMTUxMiw5IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJh
c2U6Om9wZW5DdXJzb3IoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24s
IGNvCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBMT0coSW5kZXhlZERCLCAiKG1h
aW4pIFVuaXF1ZUlEQkRhdGFiYXNlOjpvcGVuQ3Vyc29yIik7CiAKLSAgICB3YWl0Rm9yUmVxdWVz
dFNwYWNlQ29tcGxldGlvbih0cmFuc2FjdGlvbiwgW3RoaXMsIHJlcXVlc3REYXRhLCBpbmZvLCBj
YWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShhdXRvIGVycm9yKSBtdXRhYmxlIHsKLSAgICAg
ICAgaWYgKGVycm9yKSB7Ci0gICAgICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKCplcnJvciksIHsg
fSk7CisgICAgd2FpdEZvclJlcXVlc3RTcGFjZUNvbXBsZXRpb24odHJhbnNhY3Rpb24sIFt0aGlz
LCByZXF1ZXN0RGF0YSwgaW5mbywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYXV0byYm
IGVycm9yKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCFlcnJvci5pc051bGwoKSkgeworICAgICAg
ICAgICAgY2FsbGJhY2soV1RGTW92ZShlcnJvciksIHsgfSk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KICAgICAgICAgdGhpcy0+b3BlbkN1cnNvckFmdGVyUXVvdGFDaGVjayhyZXF1
ZXN0RGF0YSwgaW5mbywgV1RGTW92ZShjYWxsYmFjaykpOwpAQCAtMTU1Miw5ICsxNTUzLDkgQEAg
dm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6aXRlcmF0ZUN1cnNvcihVbmlxdWVJREJEYXRhYmFzZVRy
YW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAg
IExPRyhJbmRleGVkREIsICIobWFpbikgVW5pcXVlSURCRGF0YWJhc2U6Oml0ZXJhdGVDdXJzb3Ii
KTsKIAotICAgIHdhaXRGb3JSZXF1ZXN0U3BhY2VDb21wbGV0aW9uKHRyYW5zYWN0aW9uLCBbdGhp
cywgcmVxdWVzdERhdGEsIGRhdGEsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGF1dG8g
ZXJyb3IpIG11dGFibGUgewotICAgICAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgICAgIGNhbGxi
YWNrKFdURk1vdmUoKmVycm9yKSwgeyB9KTsKKyAgICB3YWl0Rm9yUmVxdWVzdFNwYWNlQ29tcGxl
dGlvbih0cmFuc2FjdGlvbiwgW3RoaXMsIHJlcXVlc3REYXRhLCBkYXRhLCBjYWxsYmFjayA9IFdU
Rk1vdmUoY2FsbGJhY2spXShhdXRvJiYgZXJyb3IpIG11dGFibGUgeworICAgICAgICBpZiAoIWVy
cm9yLmlzTnVsbCgpKSB7CisgICAgICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKGVycm9yKSwgeyB9
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICB0aGlzLT5pdGVyYXRl
Q3Vyc29yQWZ0ZXJRdW90YUNoZWNrKHJlcXVlc3REYXRhLCBkYXRhLCBXVEZNb3ZlKGNhbGxiYWNr
KSk7CkBAIC0xNjI2LDkgKzE2MjcsOSBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjb21taXRU
cmFuc2FjdGlvbihVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdAogCiAgICAg
QVNTRVJUKHRyYW5zYWN0aW9uLmRhdGFiYXNlQ29ubmVjdGlvbigpLmRhdGFiYXNlKCkgPT0gdGhp
cyk7CiAKLSAgICB3YWl0Rm9yUmVxdWVzdFNwYWNlQ29tcGxldGlvbih0cmFuc2FjdGlvbiwgW3Ro
aXMsICZ0cmFuc2FjdGlvbiwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYXV0byBlcnJv
cikgbXV0YWJsZSB7Ci0gICAgICAgIGlmIChlcnJvcikgewotICAgICAgICAgICAgY2FsbGJhY2so
V1RGTW92ZSgqZXJyb3IpKTsKKyAgICB3YWl0Rm9yUmVxdWVzdFNwYWNlQ29tcGxldGlvbih0cmFu
c2FjdGlvbiwgW3RoaXMsICZ0cmFuc2FjdGlvbiwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNr
KV0oYXV0byYmIGVycm9yKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCFlcnJvci5pc051bGwoKSkg
eworICAgICAgICAgICAgY2FsbGJhY2soV1RGTW92ZShlcnJvcikpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAgICAgICAgIHRoaXMtPmNvbW1pdFRyYW5zYWN0aW9uQWZ0ZXJRdW90
YUNoZWNrKHRyYW5zYWN0aW9uLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CkBAIC0xNjk5LDggKzE3MDAs
OCBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjphYm9ydFRyYW5zYWN0aW9uKFVuaXF1ZUlEQkRh
dGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aQogCiAgICAgaWYgKHdhaXRGb3JQZW5kaW5nVGFz
a3MgPT0gV2FpdEZvclBlbmRpbmdUYXNrczo6WWVzKSB7CiAgICAgICAgIHdhaXRGb3JSZXF1ZXN0
U3BhY2VDb21wbGV0aW9uKHRyYW5zYWN0aW9uLCBbdGhpcywgJnRyYW5zYWN0aW9uLCBjYWxsYmFj
ayA9IFdURk1vdmUoY2FsbGJhY2spXShhdXRvJiYgZXJyb3IpIG11dGFibGUgewotICAgICAgICAg
ICAgaWYgKGVycm9yKSB7Ci0gICAgICAgICAgICAgICAgY2FsbGJhY2soV1RGTW92ZSgqZXJyb3Ip
KTsKKyAgICAgICAgICAgIGlmICghZXJyb3IuaXNOdWxsKCkpIHsKKyAgICAgICAgICAgICAgICBj
YWxsYmFjayhXVEZNb3ZlKGVycm9yKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgdGhpcy0+YWJvcnRUcmFuc2FjdGlvbih0cmFuc2FjdGlvbiwg
V2FpdEZvclBlbmRpbmdUYXNrczo6Tm8sIFdURk1vdmUoY2FsbGJhY2spKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFz
ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRh
dGFiYXNlLmgKaW5kZXggNTNiMjFkZmU0ZDIxZGE1NWZmY2E2ZjA2ZmIwNmIyMjc1YzFlY2Y4ZC4u
MTQxODAxZGE3ZmZlNTYxOWE3MTBkYTJmYjI2OTU0ZGM2Y2VkMmM0ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRh
dGFiYXNlLmgKQEAgLTE0MSwxMSArMTQxLDExIEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHNjaGVk
dWxlU2h1dGRvd25Gb3JDbG9zZSgpOwogCi0gICAgdm9pZCBjcmVhdGVPYmplY3RTdG9yZUFmdGVy
UXVvdGFDaGVjayh1aW50NjRfdCB0YXNrU2l6ZSwgVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlv
biYsIGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYsIEVycm9yQ2FsbGJhY2spOwotICAgIHZvaWQg
cmVuYW1lT2JqZWN0U3RvcmVBZnRlclF1b3RhQ2hlY2sodWludDY0X3QgdGFza1NpemUsIFVuaXF1
ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIs
IGNvbnN0IFN0cmluZyYgbmV3TmFtZSwgRXJyb3JDYWxsYmFjayk7Ci0gICAgdm9pZCBjcmVhdGVJ
bmRleEFmdGVyUXVvdGFDaGVjayh1aW50NjRfdCB0YXNrU2l6ZSwgVW5pcXVlSURCRGF0YWJhc2VU
cmFuc2FjdGlvbiYsIGNvbnN0IElEQkluZGV4SW5mbyYsIEVycm9yQ2FsbGJhY2spOwotICAgIHZv
aWQgcmVuYW1lSW5kZXhBZnRlclF1b3RhQ2hlY2sodWludDY0X3QgdGFza1NpemUsIFVuaXF1ZUlE
QkRhdGFiYXNlVHJhbnNhY3Rpb24mLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIHVp
bnQ2NF90IGluZGV4SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuZXdOYW1lLCBFcnJvckNhbGxi
YWNrKTsKLSAgICB2b2lkIHB1dE9yQWRkQWZ0ZXJRdW90YUNoZWNrKHVpbnQ2NF90IHRhc2tTaXpl
LCBjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQktleURhdGEmLCBjb25zdCBJREJWYWx1
ZSYsIEluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlLCBLZXlEYXRhQ2FsbGJhY2sp
OworICAgIHZvaWQgY3JlYXRlT2JqZWN0U3RvcmVBZnRlclF1b3RhQ2hlY2sodWludDY0X3QgdGFz
a1NpemUsIFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mLCBjb25zdCBJREJPYmplY3RTdG9y
ZUluZm8mLCBFcnJvckNhbGxiYWNrLCBjb25zdCBJREJFcnJvciYpOworICAgIHZvaWQgcmVuYW1l
T2JqZWN0U3RvcmVBZnRlclF1b3RhQ2hlY2sodWludDY0X3QgdGFza1NpemUsIFVuaXF1ZUlEQkRh
dGFiYXNlVHJhbnNhY3Rpb24mLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgbmV3TmFtZSwgRXJyb3JDYWxsYmFjaywgY29uc3QgSURCRXJyb3ImKTsKKyAgICB2
b2lkIGNyZWF0ZUluZGV4QWZ0ZXJRdW90YUNoZWNrKHVpbnQ2NF90IHRhc2tTaXplLCBVbmlxdWVJ
REJEYXRhYmFzZVRyYW5zYWN0aW9uJiwgY29uc3QgSURCSW5kZXhJbmZvJiwgRXJyb3JDYWxsYmFj
aywgY29uc3QgSURCRXJyb3ImKTsKKyAgICB2b2lkIHJlbmFtZUluZGV4QWZ0ZXJRdW90YUNoZWNr
KHVpbnQ2NF90IHRhc2tTaXplLCBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiwgdWludDY0
X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCB1aW50NjRfdCBpbmRleElkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgbmV3TmFtZSwgRXJyb3JDYWxsYmFjaywgY29uc3QgSURCRXJyb3ImKTsKKyAgICB2
b2lkIHB1dE9yQWRkQWZ0ZXJRdW90YUNoZWNrKHVpbnQ2NF90IHRhc2tTaXplLCBjb25zdCBJREJS
ZXF1ZXN0RGF0YSYsIGNvbnN0IElEQktleURhdGEmLCBjb25zdCBJREJWYWx1ZSYsIEluZGV4ZWRE
Qjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlLCBLZXlEYXRhQ2FsbGJhY2ssIGNvbnN0IElEQkVy
cm9yJik7CiAgICAgdm9pZCBkZWxldGVSZWNvcmRBZnRlclF1b3RhQ2hlY2soY29uc3QgSURCUmVx
dWVzdERhdGEmLCBjb25zdCBJREJLZXlSYW5nZURhdGEmLCBFcnJvckNhbGxiYWNrKTsKIAogICAg
IHZvaWQgZGVsZXRlT2JqZWN0U3RvcmVBZnRlclF1b3RhQ2hlY2soVW5pcXVlSURCRGF0YWJhc2VU
cmFuc2FjdGlvbiYsIGNvbnN0IFN0cmluZyYgb2JqZWN0U3RvcmVOYW1lLCBFcnJvckNhbGxiYWNr
KTsKQEAgLTE2NCwxNCArMTY0LDE0IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwZXJmb3JtQ29tbWl0
VHJhbnNhY3Rpb24odWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBjb25zdCBJREJSZXNvdXJj
ZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllcik7CiAgICAgdm9pZCBwZXJmb3JtQWJv
cnRUcmFuc2FjdGlvbih1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIGNvbnN0IElEQlJlc291
cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKICAgICB2b2lkIGJlZ2luVHJh
bnNhY3Rpb25JbkJhY2tpbmdTdG9yZShjb25zdCBJREJUcmFuc2FjdGlvbkluZm8mKTsKLSAgICB2
b2lkIHBlcmZvcm1DcmVhdGVPYmplY3RTdG9yZSh1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIs
IGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25z
dCBJREJPYmplY3RTdG9yZUluZm8mKTsKKyAgICB2b2lkIHBlcmZvcm1DcmVhdGVPYmplY3RTdG9y
ZSh1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmll
ciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJPYmplY3RTdG9yZUluZm8mLCBjb25z
dCBJREJFcnJvciYpOwogICAgIHZvaWQgcGVyZm9ybURlbGV0ZU9iamVjdFN0b3JlKHVpbnQ2NF90
IGNhbGxiYWNrSWRlbnRpZmllciwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2Fj
dGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllcik7Ci0gICAgdm9p
ZCBwZXJmb3JtUmVuYW1lT2JqZWN0U3RvcmUodWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBj
b25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgdWludDY0
X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5ld05hbWUpOworICAgIHZv
aWQgcGVyZm9ybVJlbmFtZU9iamVjdFN0b3JlKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwg
Y29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2
NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuZXdOYW1lLCBjb25zdCBJ
REJFcnJvciYpOwogICAgIHZvaWQgcGVyZm9ybUNsZWFyT2JqZWN0U3RvcmUodWludDY0X3QgY2Fs
bGJhY2tJZGVudGlmaWVyLCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9u
SWRlbnRpZmllciwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyKTsKLSAgICB2b2lkIHBl
cmZvcm1DcmVhdGVJbmRleCh1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIGNvbnN0IElEQlJl
c291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJJbmRleElu
Zm8mKTsKKyAgICB2b2lkIHBlcmZvcm1DcmVhdGVJbmRleCh1aW50NjRfdCBjYWxsYmFja0lkZW50
aWZpZXIsIGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVy
LCBjb25zdCBJREJJbmRleEluZm8mLCBjb25zdCBJREJFcnJvciYpOwogICAgIHZvaWQgcGVyZm9y
bURlbGV0ZUluZGV4KHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgY29uc3QgSURCUmVzb3Vy
Y2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IG9iamVjdFN0b3Jl
SWRlbnRpZmllciwgdWludDY0X3QgaW5kZXhJZGVudGlmaWVyKTsKLSAgICB2b2lkIHBlcmZvcm1S
ZW5hbWVJbmRleCh1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIGNvbnN0IElEQlJlc291cmNl
SWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBvYmplY3RTdG9yZUlk
ZW50aWZpZXIsIHVpbnQ2NF90IGluZGV4SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuZXdOYW1l
KTsKLSAgICB2b2lkIHBlcmZvcm1QdXRPckFkZCh1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIs
IGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1aW50
NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IElEQktleURhdGEmLCBjb25zdCBJREJW
YWx1ZSYsIEluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlKTsKKyAgICB2b2lkIHBl
cmZvcm1SZW5hbWVJbmRleCh1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIGNvbnN0IElEQlJl
c291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBvYmplY3RT
dG9yZUlkZW50aWZpZXIsIHVpbnQ2NF90IGluZGV4SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBu
ZXdOYW1lLCBjb25zdCBJREJFcnJvciYpOworICAgIHZvaWQgcGVyZm9ybVB1dE9yQWRkKHVpbnQ2
NF90IGNhbGxiYWNrSWRlbnRpZmllciwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFu
c2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3Qg
SURCS2V5RGF0YSYsIGNvbnN0IElEQlZhbHVlJiwgSW5kZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3
cml0ZU1vZGUsIGNvbnN0IElEQkVycm9yJik7CiAgICAgdm9pZCBwZXJmb3JtR2V0UmVjb3JkKHVp
bnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0
cmFuc2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29u
c3QgSURCS2V5UmFuZ2VEYXRhJiwgSURCR2V0UmVjb3JkRGF0YVR5cGUpOwogICAgIHZvaWQgcGVy
Zm9ybUdldEFsbFJlY29yZHModWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBjb25zdCBJREJS
ZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCR2V0QWxs
UmVjb3Jkc0RhdGEmKTsKICAgICB2b2lkIHBlcmZvcm1HZXRJbmRleFJlY29yZCh1aW50NjRfdCBj
YWxsYmFja0lkZW50aWZpZXIsIGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rp
b25JZGVudGlmaWVyLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIHVpbnQ2NF90IGlu
ZGV4SWRlbnRpZmllciwgSW5kZXhlZERCOjpJbmRleFJlY29yZFR5cGUsIGNvbnN0IElEQktleVJh
bmdlRGF0YSYpOwpAQCAtMjQ3LDggKzI0Nyw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBtYXliZUZp
bmlzaEhhcmRDbG9zZSgpOwogICAgIGJvb2wgaXNEb25lV2l0aEhhcmRDbG9zZSgpOwogCi0gICAg
dm9pZCByZXF1ZXN0U3BhY2UoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYsIHVpbnQ2NF90
IHRhc2tTaXplLCBjb25zdCBjaGFyKiBlcnJvck1lc3NhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoT3B0aW9uYWw8SURCRXJyb3I+JiYpPiYmKTsKLSAgICB2b2lkIHdhaXRGb3JSZXF1ZXN0U3Bh
Y2VDb21wbGV0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKE9wdGlvbmFsPElEQkVycm9yPiYmKT4mJik7CisgICAgdm9pZCByZXF1ZXN0U3Bh
Y2UoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYsIHVpbnQ2NF90IHRhc2tTaXplLCBjb25z
dCBjaGFyKiBlcnJvck1lc3NhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSURCRXJyb3ImJik+
JiYpOworICAgIHZvaWQgd2FpdEZvclJlcXVlc3RTcGFjZUNvbXBsZXRpb24oVW5pcXVlSURCRGF0
YWJhc2VUcmFuc2FjdGlvbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSURCRXJyb3ImJik+JiYp
OwogICAgIHZvaWQgdXBkYXRlU3BhY2VVc2VkSWZOZWVkZWQoT3B0aW9uYWw8dWludDY0X3Q+IG9w
dGlvbmFsQ2FsbGJhY2tJZGVudGlmaWVyID0gV1RGOjpudWxsb3B0KTsKIAogICAgIFJlZjxJREJT
ZXJ2ZXI+IG1fc2VydmVyOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGYxODdhNzc2ZDI4OTczZDA3YTc2ZThjZjA5YWZhOWUy
YzdlNDM5NjguLjdmMTA2YTVlODg1M2NhOWIxOTU0YWZlMjI0NDJmNjlkZjIzODc3NTAgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNCBAQAorMjAxOS0xMC0wMyAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxl
LmNvbT4KKworICAgICAgICBBU1NFUlRJT04gRkFJTEVEOiBtX3RyYW5zYWN0aW9uT3BlcmF0aW9u
c0luUHJvZ3Jlc3NRdWV1ZS5maXJzdCgpID09ICZvcGVyYXRpb24gaW4gSURCVHJhbnNhY3Rpb246
Om9wZXJhdGlvbkNvbXBsZXRlZE9uQ2xpZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDI1NTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9zdG9yYWdl
LWxpbWl0LmpzOgorICAgICAgICAob25PcGVuU3VjY2Vzcy5yZXF1ZXN0Lm9uZXJyb3IpOgorICAg
ICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3N0b3JhZ2UtbGltaXQtZXhwZWN0ZWQudHh0OgorCiAy
MDE5LTEwLTAzICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJl
c3luYyBXUFQgc2hhZG93IERPTSB0ZXN0cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvcmVzb3VyY2VzL3N0b3JhZ2UtbGltaXQuanMgYi9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvc3RvcmFnZS1saW1pdC5qcwppbmRleCA4MWJlNmQyMDk2
MjgxYTViZmI3ODcwMjk1MDFkYjBlMTM1ZGFmMGRjLi5hZGIyYzA0YzFhZjQyZGMwMTMyMjk2MGVj
NjZiODVhMWRhZjc4YmJhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9yZXNvdXJjZXMvc3RvcmFnZS1saW1pdC5qcworKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9yZXNvdXJjZXMvc3RvcmFnZS1saW1pdC5qcwpAQCAtMjMsOSArMjMsMTcgQEAgZnVu
Y3Rpb24gb25PcGVuU3VjY2VzcyhldmVudCkKICAgICBwcmVhbWJsZShldmVudCk7CiAgICAgZXZh
bEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CiAgICAgZXZhbEFuZExvZygic3Rv
cmUgPSBkYi50cmFuc2FjdGlvbignc3RvcmUnLCAncmVhZHdyaXRlJykub2JqZWN0U3RvcmUoJ3N0
b3JlJykiKTsKKworICAgIC8vIFNtYWxsIGFkZCBzaG91bGQgc3VjY2VlZC4KKyAgICBldmFsQW5k
TG9nKCJhZGRDb3VudCA9IDAiKTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8PSAxMDsgaSArKykK
KyAgICAgICAgZXZhbEFuZExvZygic3RvcmUuYWRkKG5ldyBVaW50OEFycmF5KDEpLCAiICsgaSAr
ICIpLm9uc3VjY2VzcyA9ICgpPT4geyArK2FkZENvdW50OyB9Iik7CisKKwkvLyBCaWcgYWRkIHNo
b3VsZCBmYWlsLgogICAgIGV2YWxBbmRMb2coInJlcXVlc3QgPSBzdG9yZS5hZGQobmV3IFVpbnQ4
QXJyYXkoIiArIChxdW90YSArIDEpICsgIiksIDApIik7CiAgICAgcmVxdWVzdC5vbmVycm9yID0g
ZnVuY3Rpb24oZXZlbnQpIHsKICAgICAgICAgc2hvdWxkQmVUcnVlKCInZXJyb3InIGluIHJlcXVl
c3QiKTsKKyAgICAgICAgc2hvdWxkQmUoImFkZENvdW50IiwgIjEwIik7CiAgICAgICAgIHNob3Vs
ZEJlKCJyZXF1ZXN0LmVycm9yLmNvZGUiLCAiRE9NRXhjZXB0aW9uLlFVT1RBX0VYQ0VFREVEX0VS
UiIpOwogICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInJlcXVlc3QuZXJyb3IubmFtZSIs
ICJRdW90YUV4Y2VlZGVkRXJyb3IiKTsKICAgICAgICAgZmluaXNoSlNUZXN0KCk7CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9zdG9yYWdlLWxpbWl0LWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3N0b3JhZ2UtbGltaXQtZXhwZWN0
ZWQudHh0CmluZGV4IGE0Y2Y2YTk1ZTczNjQyYTM5ZjNmZDBlMjJmM2IxYWIwOWZmNzQ5ZjcuLmYw
YTg3ZmUyMzRjNTgwMTdlNGQ2ZWZlMGNiNmIyZjkyOGE5ZDJkMTIgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3N0b3JhZ2UtbGltaXQtZXhwZWN0ZWQudHh0CisrKyBi
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3N0b3JhZ2UtbGltaXQtZXhwZWN0ZWQudHh0
CkBAIC0xNSw4ICsxNSwyMCBAQCBzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZScp
CiBvbk9wZW5TdWNjZXNzKCk6CiBkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQKIHN0b3JlID0gZGIu
dHJhbnNhY3Rpb24oJ3N0b3JlJywgJ3JlYWR3cml0ZScpLm9iamVjdFN0b3JlKCdzdG9yZScpCith
ZGRDb3VudCA9IDAKK3N0b3JlLmFkZChuZXcgVWludDhBcnJheSgxKSwgMSkub25zdWNjZXNzID0g
KCk9PiB7ICsrYWRkQ291bnQ7IH0KK3N0b3JlLmFkZChuZXcgVWludDhBcnJheSgxKSwgMikub25z
dWNjZXNzID0gKCk9PiB7ICsrYWRkQ291bnQ7IH0KK3N0b3JlLmFkZChuZXcgVWludDhBcnJheSgx
KSwgMykub25zdWNjZXNzID0gKCk9PiB7ICsrYWRkQ291bnQ7IH0KK3N0b3JlLmFkZChuZXcgVWlu
dDhBcnJheSgxKSwgNCkub25zdWNjZXNzID0gKCk9PiB7ICsrYWRkQ291bnQ7IH0KK3N0b3JlLmFk
ZChuZXcgVWludDhBcnJheSgxKSwgNSkub25zdWNjZXNzID0gKCk9PiB7ICsrYWRkQ291bnQ7IH0K
K3N0b3JlLmFkZChuZXcgVWludDhBcnJheSgxKSwgNikub25zdWNjZXNzID0gKCk9PiB7ICsrYWRk
Q291bnQ7IH0KK3N0b3JlLmFkZChuZXcgVWludDhBcnJheSgxKSwgNykub25zdWNjZXNzID0gKCk9
PiB7ICsrYWRkQ291bnQ7IH0KK3N0b3JlLmFkZChuZXcgVWludDhBcnJheSgxKSwgOCkub25zdWNj
ZXNzID0gKCk9PiB7ICsrYWRkQ291bnQ7IH0KK3N0b3JlLmFkZChuZXcgVWludDhBcnJheSgxKSwg
OSkub25zdWNjZXNzID0gKCk9PiB7ICsrYWRkQ291bnQ7IH0KK3N0b3JlLmFkZChuZXcgVWludDhB
cnJheSgxKSwgMTApLm9uc3VjY2VzcyA9ICgpPT4geyArK2FkZENvdW50OyB9CiByZXF1ZXN0ID0g
c3RvcmUuYWRkKG5ldyBVaW50OEFycmF5KDQwOTYwMSksIDApCiBQQVNTICdlcnJvcicgaW4gcmVx
dWVzdCBpcyB0cnVlCitQQVNTIGFkZENvdW50IGlzIDEwCiBQQVNTIHJlcXVlc3QuZXJyb3IuY29k
ZSBpcyBET01FeGNlcHRpb24uUVVPVEFfRVhDRUVERURfRVJSCiBQQVNTIHJlcXVlc3QuZXJyb3Iu
bmFtZSBpcyAiUXVvdGFFeGNlZWRlZEVycm9yIgogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380226</attachid>
            <date>2019-10-04 10:43:11 -0700</date>
            <delta_ts>2019-10-07 14:58:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202552-20191004104310.patch</filename>
            <type>text/plain</type>
            <size>36748</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwNzI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmJmN2Q0NDAyMzlmNzVh
YzdkNDQ4NTA5ZWJiMjA4Mjg3M2Q2Y2U2NS4uNTc4MWQ5YjE1NWU0ZjI5MmU3ZDQ5YWY0MTY4NTc0
NjY4MDk3ODZlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDE5LTEwLTA0ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIEFTU0VSVElPTiBGQUlMRUQ6
IG1fdHJhbnNhY3Rpb25PcGVyYXRpb25zSW5Qcm9ncmVzc1F1ZXVlLmZpcnN0KCkgPT0gJm9wZXJh
dGlvbiBpbiBJREJUcmFuc2FjdGlvbjo6b3BlcmF0aW9uQ29tcGxldGVkT25DbGllbnQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjU1MgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERpc3BhdGNoIHRhc2sg
dG8gZGF0YWJhc2UgdGhyZWFkIGV2ZW4gaWYgdGhlcmUgaXMgUXVvdGFFeGNlZWRlZEVycm9yLCB0
byBtYWtlIHN1cmUgcmVxdWVzdCByZXN1bHRzIGFyZSBzZW50IGluIAorICAgICAgICBvcmRlci4K
KworICAgICAgICBNb2RpZmllZCBleGlzdGluZyB0ZXN0IHRvIGNvdmVyIHRoaXM6IHN0b3JhZ2Uv
aW5kZXhlZGRiL3N0b3JhZ2UtbGltaXQuaHRtbC4gVGVzdCB3b3VsZCBoaXQgdGhpcyBhc3NlcnRp
b24gCisgICAgICAgIHdpdGhvdXQgZml4LgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZl
cjo6VW5pcXVlSURCRGF0YWJhc2U6OnJlcXVlc3RTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjp3YWl0Rm9yUmVxdWVzdFNwYWNlQ29tcGxldGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpjcmVh
dGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRh
dGFiYXNlOjpjcmVhdGVPYmplY3RTdG9yZUFmdGVyUXVvdGFDaGVjayk6CisgICAgICAgIChXZWJD
b3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3JtQ3JlYXRlT2JqZWN0U3Rv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6ZGVs
ZXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJE
YXRhYmFzZTo6cmVuYW1lT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVy
OjpVbmlxdWVJREJEYXRhYmFzZTo6cmVuYW1lT2JqZWN0U3RvcmVBZnRlclF1b3RhQ2hlY2spOgor
ICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9ybVJl
bmFtZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURC
RGF0YWJhc2U6OmNsZWFyT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVy
OjpVbmlxdWVJREJEYXRhYmFzZTo6Y3JlYXRlSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6Y3JlYXRlSW5kZXhBZnRlclF1b3RhQ2hlY2spOgor
ICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9ybUNy
ZWF0ZUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJh
c2U6OmRlbGV0ZUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURC
RGF0YWJhc2U6OnJlbmFtZUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5p
cXVlSURCRGF0YWJhc2U6OnJlbmFtZUluZGV4QWZ0ZXJRdW90YUNoZWNrKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OnBlcmZvcm1SZW5hbWVJbmRleCk6
CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpwdXRPckFk
ZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpwdXRP
ckFkZEFmdGVyUXVvdGFDaGVjayk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1
ZUlEQkRhdGFiYXNlOjpwZXJmb3JtUHV0T3JBZGQpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2Vy
dmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6Z2V0UmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmdldEFsbFJlY29yZHMpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6Z2V0Q291bnQpOgorICAgICAgICAo
V2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlUmVjb3JkKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6Om9wZW5DdXJzb3Ip
OgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6aXRlcmF0
ZUN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNl
Ojpjb21taXRUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1
ZUlEQkRhdGFiYXNlOjphYm9ydFRyYW5zYWN0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuaDoKKwogMjAxOS0xMC0wNCAgeW91ZW5uIGZh
YmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgQWJvcnRTaWduYWwgZG9lcyBub3Qg
YWx3YXlzIGVtaXQgdGhlIGFib3J0IHNpZ25hbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHAKaW5k
ZXggY2U4MWViMDkxYmVkZjBlMGU4ZGFmNGVmZWZkZDQwYzAyZTE3ZjM0MC4uYzg1NDI4M2U1YmVh
YTUzY2Q0ZDkzZDdiOTc4ZTRmYjZmYjM5NmViMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3Bw
CkBAIC0xODYsNyArMTg2LDcgQEAgc3RhdGljIGlubGluZSBTdHJpbmcgcXVvdGFFcnJvck1lc3Nh
Z2VOYW1lKGNvbnN0IGNoYXIqIHRhc2tOYW1lKQogICAgIHJldHVybiBtYWtlU3RyaW5nKCJGYWls
ZWQgdG8gIiwgdGFza05hbWUsICIgaW4gZGF0YWJhc2UgYmVjYXVzZSBub3QgZW5vdWdoIHNwYWNl
IGZvciBkb21haW4iKTsKIH0KIAotdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cmVxdWVzdFNwYWNl
KFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCB1aW50NjRfdCB0YXNr
U2l6ZSwgY29uc3QgY2hhciogdGFza05hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9u
YWw8SURCRXJyb3I+JiYpPiYmIGNhbGxiYWNrKQordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cmVx
dWVzdFNwYWNlKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCB1aW50
NjRfdCB0YXNrU2l6ZSwgY29uc3QgY2hhciogdGFza05hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoSURCRXJyb3ImJik+JiYgY2FsbGJhY2spCiB7CiAgICAgbV9zZXJ2ZXItPnJlcXVlc3RTcGFj
ZShtX2lkZW50aWZpZXIub3JpZ2luKCksIHRhc2tTaXplLCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0
cih0aGlzKSwgdGhpcywgd2Vha1RyYW5zYWN0aW9uID0gbWFrZVdlYWtQdHIodHJhbnNhY3Rpb24p
LCB0YXNrTmFtZSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYXV0byBkZWNpc2lvbikg
bXV0YWJsZSB7CiAgICAgICAgIGlmICghd2Vha1RoaXMpIHsKQEAgLTIwOSwxMiArMjA5LDEyIEBA
IHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnJlcXVlc3RTcGFjZShVbmlxdWVJREJEYXRhYmFzZVRy
YW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwKICAgICAgICAgICAgIGNhbGxiYWNrKElEQkVycm9yIHsg
UXVvdGFFeGNlZWRlZEVycm9yLCBxdW90YUVycm9yTWVzc2FnZU5hbWUodGFza05hbWUpIH0pOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBjYXNlIFN0b3JhZ2VRdW90YU1hbmFnZXI6OkRl
Y2lzaW9uOjpHcmFudDoKLSAgICAgICAgICAgIGNhbGxiYWNrKHsgfSk7CisgICAgICAgICAgICBj
YWxsYmFjayhJREJFcnJvciB7IH0pOwogICAgICAgICB9OwogICAgIH0pOwogfQogCi12b2lkIFVu
aXF1ZUlEQkRhdGFiYXNlOjp3YWl0Rm9yUmVxdWVzdFNwYWNlQ29tcGxldGlvbihVbmlxdWVJREJE
YXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChP
cHRpb25hbDxJREJFcnJvcj4mJik+JiYgY2FsbGJhY2spCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNl
Ojp3YWl0Rm9yUmVxdWVzdFNwYWNlQ29tcGxldGlvbihVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0
aW9uJiB0cmFuc2FjdGlvbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJREJFcnJvciYmKT4mJiBj
YWxsYmFjaykKIHsKICAgICByZXF1ZXN0U3BhY2UodHJhbnNhY3Rpb24sIDAsICIiLCBXVEZNb3Zl
KGNhbGxiYWNrKSk7CiB9CkBAIC04MzgsMjggKzgzOCwzMyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFi
YXNlOjpjcmVhdGVPYmplY3RTdG9yZShVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFu
c2FjdAogCiAgICAgYXV0byB0YXNrU2l6ZSA9IGRlZmF1bHRXcml0ZU9wZXJhdGlvbkNvc3QgKyBl
c3RpbWF0ZVNpemUoaW5mbyk7CiAgICAgcmVxdWVzdFNwYWNlKHRyYW5zYWN0aW9uLCB0YXNrU2l6
ZSwgImNyZWF0ZU9iamVjdFN0b3JlIiwgW3RoaXMsIHRhc2tTaXplLCAmdHJhbnNhY3Rpb24sIGlu
Zm8sIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGF1dG8gZXJyb3IpIG11dGFibGUgewot
ICAgICAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgICAgIGNhbGxiYWNrKFdURk1vdmUoKmVycm9y
KSk7CisgICAgICAgIGlmICghZXJyb3IuaXNOdWxsKCkgJiYgKmVycm9yLmNvZGUoKSA9PSBVbmtu
b3duRXJyb3IpIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKFdURk1vdmUoZXJyb3IpKTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICB0aGlzLT5jcmVhdGVPYmplY3RTdG9y
ZUFmdGVyUXVvdGFDaGVjayh0YXNrU2l6ZSwgdHJhbnNhY3Rpb24sIGluZm8sIFdURk1vdmUoY2Fs
bGJhY2spKTsKKyAgICAgICAgdGhpcy0+Y3JlYXRlT2JqZWN0U3RvcmVBZnRlclF1b3RhQ2hlY2so
dGFza1NpemUsIHRyYW5zYWN0aW9uLCBpbmZvLCBXVEZNb3ZlKGNhbGxiYWNrKSwgZXJyb3IpOwog
ICAgIH0pOwogfQogCi12b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjcmVhdGVPYmplY3RTdG9yZUFm
dGVyUXVvdGFDaGVjayh1aW50NjRfdCB0YXNrU2l6ZSwgVW5pcXVlSURCRGF0YWJhc2VUcmFuc2Fj
dGlvbiYgdHJhbnNhY3Rpb24sIGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYgaW5mbywgRXJyb3JD
YWxsYmFjayBjYWxsYmFjaykKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmNyZWF0ZU9iamVjdFN0
b3JlQWZ0ZXJRdW90YUNoZWNrKHVpbnQ2NF90IHRhc2tTaXplLCBVbmlxdWVJREJEYXRhYmFzZVRy
YW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJiBpbmZvLCBF
cnJvckNhbGxiYWNrIGNhbGxiYWNrLCBjb25zdCBJREJFcnJvciYgcXVvdGFFcnJvcikKIHsKICAg
ICB1aW50NjRfdCBjYWxsYmFja0lEID0gc3RvcmVDYWxsYmFja09yRmlyZUVycm9yKFdURk1vdmUo
Y2FsbGJhY2spLCB0YXNrU2l6ZSk7CiAgICAgaWYgKCFjYWxsYmFja0lEKQogICAgICAgICByZXR1
cm47CiAKLSAgICBwb3N0RGF0YWJhc2VUYXNrKGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygqdGhpcywg
JlVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3JtQ3JlYXRlT2JqZWN0U3RvcmUsIGNhbGxiYWNrSUQs
IHRyYW5zYWN0aW9uLmluZm8oKS5pZGVudGlmaWVyKCksIGluZm8pKTsKKyAgICBwb3N0RGF0YWJh
c2VUYXNrKGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpw
ZXJmb3JtQ3JlYXRlT2JqZWN0U3RvcmUsIGNhbGxiYWNrSUQsIHRyYW5zYWN0aW9uLmluZm8oKS5p
ZGVudGlmaWVyKCksIGluZm8sICBxdW90YUVycm9yKSk7CiB9CiAKLXZvaWQgVW5pcXVlSURCRGF0
YWJhc2U6OnBlcmZvcm1DcmVhdGVPYmplY3RTdG9yZSh1aW50NjRfdCBjYWxsYmFja0lkZW50aWZp
ZXIsIGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBj
b25zdCBJREJPYmplY3RTdG9yZUluZm8mIGluZm8pCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpw
ZXJmb3JtQ3JlYXRlT2JqZWN0U3RvcmUodWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBjb25z
dCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURC
T2JqZWN0U3RvcmVJbmZvJiBpbmZvLCBjb25zdCBJREJFcnJvciYgcXVvdGFFcnJvcikKIHsKICAg
ICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBMT0coSW5kZXhlZERCLCAiKGRiKSBVbmlx
dWVJREJEYXRhYmFzZTo6cGVyZm9ybUNyZWF0ZU9iamVjdFN0b3JlIik7CiAKKyAgICBpZiAoIXF1
b3RhRXJyb3IuaXNOdWxsKCkpIHsKKyAgICAgICAgcG9zdERhdGFiYXNlVGFza1JlcGx5KGNyZWF0
ZUNyb3NzVGhyZWFkVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRQZXJmb3JtQ3Jl
YXRlT2JqZWN0U3RvcmUsIGNhbGxiYWNrSWRlbnRpZmllciwgcXVvdGFFcnJvciwgaW5mbykpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgQVNTRVJUKG1fYmFja2luZ1N0b3JlKTsKICAg
ICBtX2JhY2tpbmdTdG9yZS0+Y3JlYXRlT2JqZWN0U3RvcmUodHJhbnNhY3Rpb25JZGVudGlmaWVy
LCBpbmZvKTsKIApAQCAtODgzLDkgKzg4OCw5IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmRl
bGV0ZU9iamVjdFN0b3JlKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0CiAg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBMT0coSW5kZXhlZERCLCAiKG1haW4pIFVu
aXF1ZUlEQkRhdGFiYXNlOjpkZWxldGVPYmplY3RTdG9yZSIpOwogCi0gICAgd2FpdEZvclJlcXVl
c3RTcGFjZUNvbXBsZXRpb24odHJhbnNhY3Rpb24sIFt0aGlzLCAmdHJhbnNhY3Rpb24sIG9iamVj
dFN0b3JlTmFtZSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYXV0byBlcnJvcikgbXV0
YWJsZSB7Ci0gICAgICAgIGlmIChlcnJvcikgewotICAgICAgICAgICAgY2FsbGJhY2soV1RGTW92
ZSgqZXJyb3IpKTsKKyAgICB3YWl0Rm9yUmVxdWVzdFNwYWNlQ29tcGxldGlvbih0cmFuc2FjdGlv
biwgW3RoaXMsICZ0cmFuc2FjdGlvbiwgb2JqZWN0U3RvcmVOYW1lLCBjYWxsYmFjayA9IFdURk1v
dmUoY2FsbGJhY2spXShhdXRvJiYgZXJyb3IpIG11dGFibGUgeworICAgICAgICBpZiAoIWVycm9y
LmlzTnVsbCgpKSB7CisgICAgICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKGVycm9yKSk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgdGhpcy0+ZGVsZXRlT2JqZWN0U3Rv
cmVBZnRlclF1b3RhQ2hlY2sodHJhbnNhY3Rpb24sIG9iamVjdFN0b3JlTmFtZSwgV1RGTW92ZShj
YWxsYmFjaykpOwpAQCAtOTM3LDM4ICs5NDIsNDEgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6
cmVuYW1lT2JqZWN0U3RvcmUoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3QK
IAogICAgIGF1dG8gdGFza1NpemUgPSBkZWZhdWx0V3JpdGVPcGVyYXRpb25Db3N0ICsgbmV3TmFt
ZS5zaXplSW5CeXRlcygpOwogICAgIHJlcXVlc3RTcGFjZSh0cmFuc2FjdGlvbiwgdGFza1NpemUs
ICJyZW5hbWVPYmplY3RTdG9yZSIsIFt0aGlzLCB0YXNrU2l6ZSwgJnRyYW5zYWN0aW9uLCBvYmpl
Y3RTdG9yZUlkZW50aWZpZXIsIG5ld05hbWUsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayld
KGF1dG8gZXJyb3IpIG11dGFibGUgewotICAgICAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgICAg
IGNhbGxiYWNrKFdURk1vdmUoKmVycm9yKSk7CisgICAgICAgIGlmICghZXJyb3IuaXNOdWxsKCkg
JiYgKmVycm9yLmNvZGUoKSA9PSBVbmtub3duRXJyb3IpIHsKKyAgICAgICAgICAgIGNhbGxiYWNr
KFdURk1vdmUoZXJyb3IpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAg
ICB0aGlzLT5yZW5hbWVPYmplY3RTdG9yZUFmdGVyUXVvdGFDaGVjayh0YXNrU2l6ZSwgdHJhbnNh
Y3Rpb24sIG9iamVjdFN0b3JlSWRlbnRpZmllciwgbmV3TmFtZSwgV1RGTW92ZShjYWxsYmFjaykp
OworICAgICAgICB0aGlzLT5yZW5hbWVPYmplY3RTdG9yZUFmdGVyUXVvdGFDaGVjayh0YXNrU2l6
ZSwgdHJhbnNhY3Rpb24sIG9iamVjdFN0b3JlSWRlbnRpZmllciwgbmV3TmFtZSwgV1RGTW92ZShj
YWxsYmFjayksIGVycm9yKTsKICAgICB9KTsKIH0KIAotdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6
cmVuYW1lT2JqZWN0U3RvcmVBZnRlclF1b3RhQ2hlY2sodWludDY0X3QgdGFza1NpemUsIFVuaXF1
ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCB1aW50NjRfdCBvYmplY3RTdG9y
ZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSwgRXJyb3JDYWxsYmFjayBjYWxsYmFj
aykKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnJlbmFtZU9iamVjdFN0b3JlQWZ0ZXJRdW90YUNo
ZWNrKHVpbnQ2NF90IHRhc2tTaXplLCBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFu
c2FjdGlvbiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5l
d05hbWUsIEVycm9yQ2FsbGJhY2sgY2FsbGJhY2ssIGNvbnN0IElEQkVycm9yJiBxdW90YUVycm9y
KQogewogICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBzdG9yZUNhbGxiYWNrT3JGaXJlRXJyb3Io
V1RGTW92ZShjYWxsYmFjayksIHRhc2tTaXplKTsKICAgICBpZiAoIWNhbGxiYWNrSUQpCiAgICAg
ICAgIHJldHVybjsKIAorICAgIElEQkVycm9yIGVycm9yID0gcXVvdGFFcnJvcjsKICAgICBhdXRv
KiBpbmZvID0gbV9kYXRhYmFzZUluZm8tPmluZm9Gb3JFeGlzdGluZ09iamVjdFN0b3JlKG9iamVj
dFN0b3JlSWRlbnRpZmllcik7Ci0gICAgaWYgKCFpbmZvKSB7Ci0gICAgICAgIHBlcmZvcm1FcnJv
ckNhbGxiYWNrKGNhbGxiYWNrSUQsIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0
byByZW5hbWUgbm9uLWV4aXN0YW50IG9iamVjdCBzdG9yZSJfcyB9KTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KKyAgICBpZiAoIWluZm8pCisgICAgICAgIGVycm9yID0gSURCRXJyb3IgeyBVbmtu
b3duRXJyb3IsICJBdHRlbXB0IHRvIHJlbmFtZSBub24tZXhpc3RhbnQgb2JqZWN0IHN0b3JlIl9z
IH07CiAKLSAgICBwb3N0RGF0YWJhc2VUYXNrKGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygqdGhpcywg
JlVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3JtUmVuYW1lT2JqZWN0U3RvcmUsIGNhbGxiYWNrSUQs
IHRyYW5zYWN0aW9uLmluZm8oKS5pZGVudGlmaWVyKCksIG9iamVjdFN0b3JlSWRlbnRpZmllciwg
bmV3TmFtZSkpOworICAgIHBvc3REYXRhYmFzZVRhc2soY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKCp0
aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OnBlcmZvcm1SZW5hbWVPYmplY3RTdG9yZSwgY2FsbGJh
Y2tJRCwgdHJhbnNhY3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKSwgb2JqZWN0U3RvcmVJZGVudGlm
aWVyLCBuZXdOYW1lLCBlcnJvcikpOwogfQogCi12b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJm
b3JtUmVuYW1lT2JqZWN0U3RvcmUodWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBjb25zdCBJ
REJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgdWludDY0X3Qgb2Jq
ZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5ld05hbWUpCit2b2lkIFVuaXF1ZUlE
QkRhdGFiYXNlOjpwZXJmb3JtUmVuYW1lT2JqZWN0U3RvcmUodWludDY0X3QgY2FsbGJhY2tJZGVu
dGlmaWVyLCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmll
ciwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5ld05hbWUs
IGNvbnN0IElEQkVycm9yJiBlcnJvcikKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsK
ICAgICBMT0coSW5kZXhlZERCLCAiKGRiKSBVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9ybVJlbmFt
ZU9iamVjdFN0b3JlIik7CisgICAgCisgICAgaWYgKCFlcnJvci5pc051bGwoKSkgeworICAgICAg
ICBwb3N0RGF0YWJhc2VUYXNrUmVwbHkoY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKCp0aGlzLCAmVW5p
cXVlSURCRGF0YWJhc2U6OmRpZFBlcmZvcm1SZW5hbWVPYmplY3RTdG9yZSwgY2FsbGJhY2tJZGVu
dGlmaWVyLCBlcnJvciwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBuZXdOYW1lKSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CiAKICAgICBBU1NFUlQobV9iYWNraW5nU3RvcmUpOwogICAgIG1fYmFj
a2luZ1N0b3JlLT5yZW5hbWVPYmplY3RTdG9yZSh0cmFuc2FjdGlvbklkZW50aWZpZXIsIG9iamVj
dFN0b3JlSWRlbnRpZmllciwgbmV3TmFtZSk7CiAKLSAgICBJREJFcnJvciBlcnJvcjsKICAgICBw
b3N0RGF0YWJhc2VUYXNrUmVwbHkoY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKCp0aGlzLCAmVW5pcXVl
SURCRGF0YWJhc2U6OmRpZFBlcmZvcm1SZW5hbWVPYmplY3RTdG9yZSwgY2FsbGJhY2tJZGVudGlm
aWVyLCBlcnJvciwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBuZXdOYW1lKSk7CiB9CiAKQEAgLTk4
OCw5ICs5OTYsOSBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjbGVhck9iamVjdFN0b3JlKFVu
aXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aQogICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CiAgICAgTE9HKEluZGV4ZWREQiwgIihtYWluKSBVbmlxdWVJREJEYXRhYmFzZTo6
Y2xlYXJPYmplY3RTdG9yZSIpOwogCi0gICAgd2FpdEZvclJlcXVlc3RTcGFjZUNvbXBsZXRpb24o
dHJhbnNhY3Rpb24sIFt0aGlzLCAmdHJhbnNhY3Rpb24sIG9iamVjdFN0b3JlSWRlbnRpZmllciwg
Y2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYXV0byBlcnJvcikgbXV0YWJsZSB7Ci0gICAg
ICAgIGlmIChlcnJvcikgewotICAgICAgICAgICAgY2FsbGJhY2soV1RGTW92ZSgqZXJyb3IpKTsK
KyAgICB3YWl0Rm9yUmVxdWVzdFNwYWNlQ29tcGxldGlvbih0cmFuc2FjdGlvbiwgW3RoaXMsICZ0
cmFuc2FjdGlvbiwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjYWxsYmFjayA9IFdURk1vdmUoY2Fs
bGJhY2spXShhdXRvJiYgZXJyb3IpIG11dGFibGUgeworICAgICAgICBpZiAoIWVycm9yLmlzTnVs
bCgpKSB7CisgICAgICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKGVycm9yKSk7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgdGhpcy0+Y2xlYXJPYmplY3RTdG9yZUFmZXRR
dW90YUNoZWNrKHRyYW5zYWN0aW9uLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIFdURk1vdmUoY2Fs
bGJhY2spKTsKQEAgLTEwMzIsMjYgKzEwNDAsMzEgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6
Y3JlYXRlSW5kZXgoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIGMK
IAogICAgIGF1dG8gdGFza1NpemUgPSBkZWZhdWx0V3JpdGVPcGVyYXRpb25Db3N0ICsgZXN0aW1h
dGVTaXplKGluZm8pOwogICAgIHJlcXVlc3RTcGFjZSh0cmFuc2FjdGlvbiwgdGFza1NpemUsICJj
cmVhdGVJbmRleCIsIFt0aGlzLCB0YXNrU2l6ZSwgJnRyYW5zYWN0aW9uLCBpbmZvLCBjYWxsYmFj
ayA9IFdURk1vdmUoY2FsbGJhY2spXShhdXRvIGVycm9yKSBtdXRhYmxlIHsKLSAgICAgICAgaWYg
KGVycm9yKSB7Ci0gICAgICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKCplcnJvcikpOworICAgICAg
ICBpZiAoIWVycm9yLmlzTnVsbCgpICYmICplcnJvci5jb2RlKCkgPT0gVW5rbm93bkVycm9yKSB7
CisgICAgICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKGVycm9yKSk7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KLSAgICAgICAgdGhpcy0+Y3JlYXRlSW5kZXhBZnRlclF1b3RhQ2hlY2so
dGFza1NpemUsIHRyYW5zYWN0aW9uLCBpbmZvLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgICAg
IHRoaXMtPmNyZWF0ZUluZGV4QWZ0ZXJRdW90YUNoZWNrKHRhc2tTaXplLCB0cmFuc2FjdGlvbiwg
aW5mbywgV1RGTW92ZShjYWxsYmFjayksIGVycm9yKTsKICAgICB9KTsKIH0KIAotdm9pZCBVbmlx
dWVJREJEYXRhYmFzZTo6Y3JlYXRlSW5kZXhBZnRlclF1b3RhQ2hlY2sodWludDY0X3QgdGFza1Np
emUsIFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBjb25zdCBJREJJ
bmRleEluZm8mIGluZm8sIEVycm9yQ2FsbGJhY2sgY2FsbGJhY2spCit2b2lkIFVuaXF1ZUlEQkRh
dGFiYXNlOjpjcmVhdGVJbmRleEFmdGVyUXVvdGFDaGVjayh1aW50NjRfdCB0YXNrU2l6ZSwgVW5p
cXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIGNvbnN0IElEQkluZGV4SW5m
byYgaW5mbywgRXJyb3JDYWxsYmFjayBjYWxsYmFjaywgY29uc3QgSURCRXJyb3ImIHF1b3RhRXJy
b3IpCiB7CiAgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IHN0b3JlQ2FsbGJhY2tPckZpcmVFcnJv
cihXVEZNb3ZlKGNhbGxiYWNrKSwgdGFza1NpemUpOwogICAgIGlmICghY2FsbGJhY2tJRCkKICAg
ICAgICAgcmV0dXJuOwotICAgIHBvc3REYXRhYmFzZVRhc2soY3JlYXRlQ3Jvc3NUaHJlYWRUYXNr
KCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OnBlcmZvcm1DcmVhdGVJbmRleCwgY2FsbGJhY2tJ
RCwgdHJhbnNhY3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKSwgaW5mbykpOworICAgIHBvc3REYXRh
YmFzZVRhc2soY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6
OnBlcmZvcm1DcmVhdGVJbmRleCwgY2FsbGJhY2tJRCwgdHJhbnNhY3Rpb24uaW5mbygpLmlkZW50
aWZpZXIoKSwgaW5mbywgcXVvdGFFcnJvcikpOwogfQogCi12b2lkIFVuaXF1ZUlEQkRhdGFiYXNl
OjpwZXJmb3JtQ3JlYXRlSW5kZXgodWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBjb25zdCBJ
REJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCSW5k
ZXhJbmZvJiBpbmZvKQordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9ybUNyZWF0ZUluZGV4
KHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVy
JiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQkluZGV4SW5mbyYgaW5mbywgY29uc3Qg
SURCRXJyb3ImIHF1b3RhRXJyb3IpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAg
ICAgTE9HKEluZGV4ZWREQiwgIihkYikgVW5pcXVlSURCRGF0YWJhc2U6OnBlcmZvcm1DcmVhdGVJ
bmRleCIpOworICAgIAorICAgIGlmICghcXVvdGFFcnJvci5pc051bGwoKSkgeworICAgICAgICBw
b3N0RGF0YWJhc2VUYXNrUmVwbHkoY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKCp0aGlzLCAmVW5pcXVl
SURCRGF0YWJhc2U6OmRpZFBlcmZvcm1DcmVhdGVJbmRleCwgY2FsbGJhY2tJZGVudGlmaWVyLCBx
dW90YUVycm9yLCBpbmZvKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBJREJFcnJv
ciBlcnJvcjsKICAgICBBU1NFUlQobV9iYWNraW5nU3RvcmUpOwpAQCAtMTA4Niw5ICsxMDk5LDkg
QEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlSW5kZXgoVW5pcXVlSURCRGF0YWJhc2VU
cmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIHUKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwog
ICAgIExPRyhJbmRleGVkREIsICIobWFpbikgVW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZUluZGV4
Iik7CiAKLSAgICB3YWl0Rm9yUmVxdWVzdFNwYWNlQ29tcGxldGlvbih0cmFuc2FjdGlvbiwgW3Ro
aXMsICZ0cmFuc2FjdGlvbiwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRleE5hbWUsIGNhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayldKGF1dG8gZXJyb3IpIG11dGFibGUgewotICAgICAgICBp
ZiAoZXJyb3IpIHsKLSAgICAgICAgICAgIGNhbGxiYWNrKFdURk1vdmUoKmVycm9yKSk7CisgICAg
d2FpdEZvclJlcXVlc3RTcGFjZUNvbXBsZXRpb24odHJhbnNhY3Rpb24sIFt0aGlzLCAmdHJhbnNh
Y3Rpb24sIG9iamVjdFN0b3JlSWRlbnRpZmllciwgaW5kZXhOYW1lLCBjYWxsYmFjayA9IFdURk1v
dmUoY2FsbGJhY2spXShhdXRvJiYgZXJyb3IpIG11dGFibGUgeworICAgICAgICBpZiAoIWVycm9y
LmlzTnVsbCgpKSB7CisgICAgICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKGVycm9yKSk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgdGhpcy0+ZGVsZXRlSW5kZXhBZnRl
clF1b3RhQ2hlY2sodHJhbnNhY3Rpb24sIG9iamVjdFN0b3JlSWRlbnRpZmllciwgaW5kZXhOYW1l
LCBXVEZNb3ZlKGNhbGxiYWNrKSk7CkBAIC0xMTQ5LDQ0ICsxMTYyLDQ1IEBAIHZvaWQgVW5pcXVl
SURCRGF0YWJhc2U6OnJlbmFtZUluZGV4KFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRy
YW5zYWN0aW9uLCB1CiAKICAgICBhdXRvIHRhc2tTaXplID0gZGVmYXVsdFdyaXRlT3BlcmF0aW9u
Q29zdCArIG5ld05hbWUuc2l6ZUluQnl0ZXMoKTsKICAgICByZXF1ZXN0U3BhY2UodHJhbnNhY3Rp
b24sIHRhc2tTaXplLCAicmVuYW1lSW5kZXgiLCBbdGhpcywgdGFza1NpemUsICZ0cmFuc2FjdGlv
biwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRleElkZW50aWZpZXIsIG5ld05hbWUsIGNhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayldKGF1dG8gZXJyb3IpIG11dGFibGUgewotICAgICAgICBp
ZiAoZXJyb3IpIHsKLSAgICAgICAgICAgIGNhbGxiYWNrKFdURk1vdmUoKmVycm9yKSk7CisgICAg
ICAgIGlmICghZXJyb3IuaXNOdWxsKCkgJiYgKmVycm9yLmNvZGUoKSA9PSBVbmtub3duRXJyb3Ip
IHsKKyAgICAgICAgICAgIGNhbGxiYWNrKFdURk1vdmUoZXJyb3IpKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQotICAgICAgICB0aGlzLT5yZW5hbWVJbmRleEFmdGVyUXVvdGFDaGVj
ayh0YXNrU2l6ZSwgdHJhbnNhY3Rpb24sIG9iamVjdFN0b3JlSWRlbnRpZmllciwgaW5kZXhJZGVu
dGlmaWVyLCBuZXdOYW1lLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgICAgIHRoaXMtPnJlbmFt
ZUluZGV4QWZ0ZXJRdW90YUNoZWNrKHRhc2tTaXplLCB0cmFuc2FjdGlvbiwgb2JqZWN0U3RvcmVJ
ZGVudGlmaWVyLCBpbmRleElkZW50aWZpZXIsIG5ld05hbWUsIFdURk1vdmUoY2FsbGJhY2spLCBl
cnJvcik7CiAgICAgfSk7CiB9CiAKLXZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnJlbmFtZUluZGV4
QWZ0ZXJRdW90YUNoZWNrKHVpbnQ2NF90IHRhc2tTaXplLCBVbmlxdWVJREJEYXRhYmFzZVRyYW5z
YWN0aW9uJiB0cmFuc2FjdGlvbiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCB1aW50
NjRfdCBpbmRleElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSwgRXJyb3JDYWxsYmFj
ayBjYWxsYmFjaykKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnJlbmFtZUluZGV4QWZ0ZXJRdW90
YUNoZWNrKHVpbnQ2NF90IHRhc2tTaXplLCBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0
cmFuc2FjdGlvbiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCB1aW50NjRfdCBpbmRl
eElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSwgRXJyb3JDYWxsYmFjayBjYWxsYmFj
aywgY29uc3QgSURCRXJyb3ImIHF1b3RhRXJyb3IpCiB7CiAgICAgdWludDY0X3QgY2FsbGJhY2tJ
RCA9IHN0b3JlQ2FsbGJhY2tPckZpcmVFcnJvcihXVEZNb3ZlKGNhbGxiYWNrKSwgdGFza1NpemUp
OwogICAgIGlmICghY2FsbGJhY2tJRCkKICAgICAgICAgcmV0dXJuOwogCisgICAgSURCRXJyb3Ig
ZXJyb3IgPSBxdW90YUVycm9yOwogICAgIGF1dG8qIG9iamVjdFN0b3JlSW5mbyA9IG1fZGF0YWJh
c2VJbmZvLT5pbmZvRm9yRXhpc3RpbmdPYmplY3RTdG9yZShvYmplY3RTdG9yZUlkZW50aWZpZXIp
OwotICAgIGlmICghb2JqZWN0U3RvcmVJbmZvKSB7Ci0gICAgICAgIHBlcmZvcm1FcnJvckNhbGxi
YWNrKGNhbGxiYWNrSUQsIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byByZW5h
bWUgaW5kZXggaW4gbm9uLWV4aXN0YW50IG9iamVjdCBzdG9yZSJfcyB9KTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KKyAgICBpZiAoIW9iamVjdFN0b3JlSW5mbykKKyAgICAgICAgZXJyb3IgPSBJ
REJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gcmVuYW1lIGluZGV4IGluIG5vbi1l
eGlzdGFudCBvYmplY3Qgc3RvcmUiX3MgfTsKIAogICAgIGF1dG8qIGluZGV4SW5mbyA9IG9iamVj
dFN0b3JlSW5mby0+aW5mb0ZvckV4aXN0aW5nSW5kZXgoaW5kZXhJZGVudGlmaWVyKTsKLSAgICBp
ZiAoIWluZGV4SW5mbykgewotICAgICAgICBwZXJmb3JtRXJyb3JDYWxsYmFjayhjYWxsYmFja0lE
LCBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gcmVuYW1lIG5vbi1leGlzdGFu
dCBpbmRleCJfcyB9KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoIWluZGV4SW5m
bykKKyAgICAgICAgZXJyb3IgPSBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8g
cmVuYW1lIG5vbi1leGlzdGFudCBpbmRleCJfcyB9OwogCi0gICAgcG9zdERhdGFiYXNlVGFzayhj
cmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9ybVJl
bmFtZUluZGV4LCBjYWxsYmFja0lELCB0cmFuc2FjdGlvbi5pbmZvKCkuaWRlbnRpZmllcigpLCBv
YmplY3RTdG9yZUlkZW50aWZpZXIsIGluZGV4SWRlbnRpZmllciwgbmV3TmFtZSkpOworICAgIHBv
c3REYXRhYmFzZVRhc2soY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0
YWJhc2U6OnBlcmZvcm1SZW5hbWVJbmRleCwgY2FsbGJhY2tJRCwgdHJhbnNhY3Rpb24uaW5mbygp
LmlkZW50aWZpZXIoKSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRleElkZW50aWZpZXIsIG5l
d05hbWUsIGVycm9yKSk7CiB9CiAKLXZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnBlcmZvcm1SZW5h
bWVJbmRleCh1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIGNvbnN0IElEQlJlc291cmNlSWRl
bnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50
aWZpZXIsIHVpbnQ2NF90IGluZGV4SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuZXdOYW1lKQor
dm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9ybVJlbmFtZUluZGV4KHVpbnQ2NF90IGNhbGxi
YWNrSWRlbnRpZmllciwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklk
ZW50aWZpZXIsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgdWludDY0X3QgaW5kZXhJ
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5ld05hbWUsIGNvbnN0IElEQkVycm9yJiBlcnJvcikK
IHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBMT0coSW5kZXhlZERCLCAiKGRi
KSBVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9ybVJlbmFtZUluZGV4Iik7CiAKKyAgICBpZiAoIWVy
cm9yLmlzTnVsbCgpKSB7CisgICAgICAgIHBvc3REYXRhYmFzZVRhc2tSZXBseShjcmVhdGVDcm9z
c1RocmVhZFRhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6ZGlkUGVyZm9ybVJlbmFtZUlu
ZGV4LCBjYWxsYmFja0lkZW50aWZpZXIsIGVycm9yLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGlu
ZGV4SWRlbnRpZmllciwgbmV3TmFtZSkpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAg
QVNTRVJUKG1fYmFja2luZ1N0b3JlKTsKICAgICBtX2JhY2tpbmdTdG9yZS0+cmVuYW1lSW5kZXgo
dHJhbnNhY3Rpb25JZGVudGlmaWVyLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGluZGV4SWRlbnRp
ZmllciwgbmV3TmFtZSk7CiAKLSAgICBJREJFcnJvciBlcnJvcjsKICAgICBwb3N0RGF0YWJhc2VU
YXNrUmVwbHkoY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6
OmRpZFBlcmZvcm1SZW5hbWVJbmRleCwgY2FsbGJhY2tJZGVudGlmaWVyLCBlcnJvciwgb2JqZWN0
U3RvcmVJZGVudGlmaWVyLCBpbmRleElkZW50aWZpZXIsIG5ld05hbWUpKTsKIH0KIApAQCAtMTIx
NSwyMyArMTIyOSwyMyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpwdXRPckFkZChVbmlxdWVJ
REJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgY29ucwogCiAgICAgYXV0byB0YXNr
U2l6ZSA9IGRlZmF1bHRXcml0ZU9wZXJhdGlvbkNvc3QgKyBlc3RpbWF0ZVNpemUoa2V5RGF0YSkg
KyBlc3RpbWF0ZVNpemUodmFsdWUpOwogICAgIHJlcXVlc3RTcGFjZSh0cmFuc2FjdGlvbiwgdGFz
a1NpemUsICJwdXRPckFkZCIsIFt0aGlzLCB0YXNrU2l6ZSwgcmVxdWVzdERhdGEsIGtleURhdGEs
IHZhbHVlLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBvdmVyd3JpdGVNb2RlXShhdXRv
IGVycm9yKSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKGVycm9yKSB7Ci0gICAgICAgICAgICBjYWxs
YmFjayhXVEZNb3ZlKCplcnJvciksIHsgfSk7CisgICAgICAgIGlmICghZXJyb3IuaXNOdWxsKCkg
JiYgKmVycm9yLmNvZGUoKSA9PSBVbmtub3duRXJyb3IpIHsKKyAgICAgICAgICAgIGNhbGxiYWNr
KFdURk1vdmUoZXJyb3IpLCB7IH0pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0g
ICAgICAgIHRoaXMtPnB1dE9yQWRkQWZ0ZXJRdW90YUNoZWNrKHRhc2tTaXplLCByZXF1ZXN0RGF0
YSwga2V5RGF0YSwgdmFsdWUsIG92ZXJ3cml0ZU1vZGUsIFdURk1vdmUoY2FsbGJhY2spKTsKKyAg
ICAgICAgdGhpcy0+cHV0T3JBZGRBZnRlclF1b3RhQ2hlY2sodGFza1NpemUsIHJlcXVlc3REYXRh
LCBrZXlEYXRhLCB2YWx1ZSwgb3ZlcndyaXRlTW9kZSwgV1RGTW92ZShjYWxsYmFjayksIGVycm9y
KTsKICAgICB9KTsKIH0KIAotdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cHV0T3JBZGRBZnRlclF1
b3RhQ2hlY2sodWludDY0X3QgdGFza1NpemUsIGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0
RGF0YSwgY29uc3QgSURCS2V5RGF0YSYga2V5RGF0YSwgY29uc3QgSURCVmFsdWUmIHZhbHVlLCBJ
bmRleGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9kZSBvdmVyd3JpdGVNb2RlLCBLZXlEYXRh
Q2FsbGJhY2sgY2FsbGJhY2spCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpwdXRPckFkZEFmdGVy
UXVvdGFDaGVjayh1aW50NjRfdCB0YXNrU2l6ZSwgY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVl
c3REYXRhLCBjb25zdCBJREJLZXlEYXRhJiBrZXlEYXRhLCBjb25zdCBJREJWYWx1ZSYgdmFsdWUs
IEluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlIG92ZXJ3cml0ZU1vZGUsIEtleURh
dGFDYWxsYmFjayBjYWxsYmFjaywgY29uc3QgSURCRXJyb3ImIHF1b3RhRXJyb3IpCiB7CiAgICAg
dWludDY0X3QgY2FsbGJhY2tJRCA9IHN0b3JlQ2FsbGJhY2tPckZpcmVFcnJvcihXVEZNb3ZlKGNh
bGxiYWNrKSwgdGFza1NpemUpOwogICAgIGlmICghY2FsbGJhY2tJRCkKICAgICAgICAgcmV0dXJu
OwotICAgIHBvc3REYXRhYmFzZVRhc2soY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKCp0aGlzLCAmVW5p
cXVlSURCRGF0YWJhc2U6OnBlcmZvcm1QdXRPckFkZCwgY2FsbGJhY2tJRCwgcmVxdWVzdERhdGEu
dHJhbnNhY3Rpb25JZGVudGlmaWVyKCksIHJlcXVlc3REYXRhLm9iamVjdFN0b3JlSWRlbnRpZmll
cigpLCBrZXlEYXRhLCB2YWx1ZSwgb3ZlcndyaXRlTW9kZSkpOworICAgIHBvc3REYXRhYmFzZVRh
c2soY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OnBlcmZv
cm1QdXRPckFkZCwgY2FsbGJhY2tJRCwgcmVxdWVzdERhdGEudHJhbnNhY3Rpb25JZGVudGlmaWVy
KCksIHJlcXVlc3REYXRhLm9iamVjdFN0b3JlSWRlbnRpZmllcigpLCBrZXlEYXRhLCB2YWx1ZSwg
b3ZlcndyaXRlTW9kZSwgcXVvdGFFcnJvcikpOwogfQogCi12b2lkIFVuaXF1ZUlEQkRhdGFiYXNl
OjpwZXJmb3JtUHV0T3JBZGQodWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBjb25zdCBJREJS
ZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgdWludDY0X3Qgb2JqZWN0
U3RvcmVJZGVudGlmaWVyLCBjb25zdCBJREJLZXlEYXRhJiBrZXlEYXRhLCBjb25zdCBJREJWYWx1
ZSYgb3JpZ2luYWxSZWNvcmRWYWx1ZSwgSW5kZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1v
ZGUgb3ZlcndyaXRlTW9kZSkKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnBlcmZvcm1QdXRPckFk
ZCh1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmll
ciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIs
IGNvbnN0IElEQktleURhdGEmIGtleURhdGEsIGNvbnN0IElEQlZhbHVlJiBvcmlnaW5hbFJlY29y
ZFZhbHVlLCBJbmRleGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9kZSBvdmVyd3JpdGVNb2Rl
LCBjb25zdCBJREJFcnJvciYgcXVvdGFFcnJvcikKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVh
ZCgpKTsKICAgICBMT0coSW5kZXhlZERCLCAiKGRiKSBVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9y
bVB1dE9yQWRkIik7CkBAIC0xMjQyLDYgKzEyNTYsMTEgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFz
ZTo6cGVyZm9ybVB1dE9yQWRkKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgY29uc3QgSURC
UmUKICAgICBJREJLZXlEYXRhIHVzZWRLZXk7CiAgICAgSURCRXJyb3IgZXJyb3I7CiAKKyAgICBp
ZiAoIXF1b3RhRXJyb3IuaXNOdWxsKCkpIHsKKyAgICAgICAgcG9zdERhdGFiYXNlVGFza1JlcGx5
KGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRQZXJm
b3JtUHV0T3JBZGQsIGNhbGxiYWNrSWRlbnRpZmllciwgcXVvdGFFcnJvciwgdXNlZEtleSkpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgaWYgKCFtX2JhY2tpbmdTdG9yZSkgewogICAg
ICAgICBSRUxFQVNFX0xPR19FUlJPUihJbmRleGVkREIsICIlcCAtIFVuaXF1ZUlEQkRhdGFiYXNl
OjpwZXJmb3JtUHV0T3JBZGQ6IG1fYmFja2luZ1N0b3JlIGlzIG51bGwiLCB0aGlzKTsKICAgICAg
ICAgZXJyb3IgPSBJREJFcnJvcihJbnZhbGlkU3RhdGVFcnJvciwgIkJhY2tpbmcgc3RvcmUgaXMg
aW52YWxpZCBmb3IgY2FsbCB0byBwdXQgb3IgYWRkIl9zKTsKQEAgLTEzMjMsOSArMTM0Miw5IEBA
IHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmdldFJlY29yZChVbmlxdWVJREJEYXRhYmFzZVRyYW5z
YWN0aW9uJiB0cmFuc2FjdGlvbiwgY29uCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAg
ICBMT0coSW5kZXhlZERCLCAiKG1haW4pIFVuaXF1ZUlEQkRhdGFiYXNlOjpnZXRSZWNvcmQiKTsK
IAotICAgIHdhaXRGb3JSZXF1ZXN0U3BhY2VDb21wbGV0aW9uKHRyYW5zYWN0aW9uLCBbdGhpcywg
cmVxdWVzdERhdGEsIGdldFJlY29yZERhdGEsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayld
KGF1dG8gZXJyb3IpIG11dGFibGUgewotICAgICAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgICAg
IGNhbGxiYWNrKFdURk1vdmUoKmVycm9yKSwgeyB9KTsKKyAgICB3YWl0Rm9yUmVxdWVzdFNwYWNl
Q29tcGxldGlvbih0cmFuc2FjdGlvbiwgW3RoaXMsIHJlcXVlc3REYXRhLCBnZXRSZWNvcmREYXRh
LCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShhdXRvJiYgZXJyb3IpIG11dGFibGUgewor
ICAgICAgICBpZiAoIWVycm9yLmlzTnVsbCgpKSB7CisgICAgICAgICAgICBjYWxsYmFjayhXVEZN
b3ZlKGVycm9yKSwgeyB9KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAg
ICB0aGlzLT5nZXRSZWNvcmRBZnRlclF1b3RhQ2hlY2socmVxdWVzdERhdGEsIGdldFJlY29yZERh
dGEsIFdURk1vdmUoY2FsbGJhY2spKTsKQEAgLTEzNDksOSArMTM2OCw5IEBAIHZvaWQgVW5pcXVl
SURCRGF0YWJhc2U6OmdldEFsbFJlY29yZHMoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYg
dHJhbnNhY3Rpb24sCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBMT0coSW5kZXhl
ZERCLCAiKG1haW4pIFVuaXF1ZUlEQkRhdGFiYXNlOjpnZXRBbGxSZWNvcmRzIik7CiAKLSAgICB3
YWl0Rm9yUmVxdWVzdFNwYWNlQ29tcGxldGlvbih0cmFuc2FjdGlvbiwgW3RoaXMsIHJlcXVlc3RE
YXRhLCBnZXRBbGxSZWNvcmRzRGF0YSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYXV0
byBlcnJvcikgbXV0YWJsZSB7Ci0gICAgICAgIGlmIChlcnJvcikgewotICAgICAgICAgICAgY2Fs
bGJhY2soV1RGTW92ZSgqZXJyb3IpLCB7IH0pOworICAgIHdhaXRGb3JSZXF1ZXN0U3BhY2VDb21w
bGV0aW9uKHRyYW5zYWN0aW9uLCBbdGhpcywgcmVxdWVzdERhdGEsIGdldEFsbFJlY29yZHNEYXRh
LCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShhdXRvJiYgZXJyb3IpIG11dGFibGUgewor
ICAgICAgICBpZiAoIWVycm9yLmlzTnVsbCgpKSB7CisgICAgICAgICAgICBjYWxsYmFjayhXVEZN
b3ZlKGVycm9yKSwgeyB9KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAg
ICB0aGlzLT5nZXRBbGxSZWNvcmRzQWZ0ZXJRdW90YUNoZWNrKHJlcXVlc3REYXRhLCBnZXRBbGxS
ZWNvcmRzRGF0YSwgV1RGTW92ZShjYWxsYmFjaykpOwpAQCAtMTQyNyw5ICsxNDQ2LDkgQEAgdm9p
ZCBVbmlxdWVJREJEYXRhYmFzZTo6Z2V0Q291bnQoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlv
biYgdHJhbnNhY3Rpb24sIGNvbnMKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIExP
RyhJbmRleGVkREIsICIobWFpbikgVW5pcXVlSURCRGF0YWJhc2U6OmdldENvdW50Iik7CiAKLSAg
ICB3YWl0Rm9yUmVxdWVzdFNwYWNlQ29tcGxldGlvbih0cmFuc2FjdGlvbiwgW3RoaXMsIHJlcXVl
c3REYXRhLCByYW5nZSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYXV0byBlcnJvcikg
bXV0YWJsZSB7Ci0gICAgICAgIGlmIChlcnJvcikgewotICAgICAgICAgICAgY2FsbGJhY2soV1RG
TW92ZSgqZXJyb3IpLCB7IH0pOworICAgIHdhaXRGb3JSZXF1ZXN0U3BhY2VDb21wbGV0aW9uKHRy
YW5zYWN0aW9uLCBbdGhpcywgcmVxdWVzdERhdGEsIHJhbmdlLCBjYWxsYmFjayA9IFdURk1vdmUo
Y2FsbGJhY2spXShhdXRvJiYgZXJyb3IpIG11dGFibGUgeworICAgICAgICBpZiAoIWVycm9yLmlz
TnVsbCgpKSB7CisgICAgICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKGVycm9yKSwgeyB9KTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICB0aGlzLT5nZXRDb3VudEFmdGVy
UXVvdGFDaGVjayhyZXF1ZXN0RGF0YSwgcmFuZ2UsIFdURk1vdmUoY2FsbGJhY2spKTsKQEAgLTE0
NzEsOSArMTQ5MCw5IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZVJlY29yZChVbmlx
dWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwKICAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOwogICAgIExPRyhJbmRleGVkREIsICIobWFpbikgVW5pcXVlSURCRGF0YWJhc2U6
OmRlbGV0ZVJlY29yZCIpOwogCi0gICAgd2FpdEZvclJlcXVlc3RTcGFjZUNvbXBsZXRpb24odHJh
bnNhY3Rpb24sIFt0aGlzLCByZXF1ZXN0RGF0YSwga2V5UmFuZ2VEYXRhLCBjYWxsYmFjayA9IFdU
Rk1vdmUoY2FsbGJhY2spXShhdXRvIGVycm9yKSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKGVycm9y
KSB7Ci0gICAgICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKCplcnJvcikpOworICAgIHdhaXRGb3JS
ZXF1ZXN0U3BhY2VDb21wbGV0aW9uKHRyYW5zYWN0aW9uLCBbdGhpcywgcmVxdWVzdERhdGEsIGtl
eVJhbmdlRGF0YSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYXV0byYmIGVycm9yKSBt
dXRhYmxlIHsKKyAgICAgICAgaWYgKCFlcnJvci5pc051bGwoKSkgeworICAgICAgICAgICAgY2Fs
bGJhY2soV1RGTW92ZShlcnJvcikpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAg
ICAgICAgIHRoaXMtPmRlbGV0ZVJlY29yZEFmdGVyUXVvdGFDaGVjayhyZXF1ZXN0RGF0YSwga2V5
UmFuZ2VEYXRhLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CkBAIC0xNTExLDkgKzE1MzAsOSBAQCB2b2lk
IFVuaXF1ZUlEQkRhdGFiYXNlOjpvcGVuQ3Vyc29yKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rp
b24mIHRyYW5zYWN0aW9uLCBjbwogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgTE9H
KEluZGV4ZWREQiwgIihtYWluKSBVbmlxdWVJREJEYXRhYmFzZTo6b3BlbkN1cnNvciIpOwogCi0g
ICAgd2FpdEZvclJlcXVlc3RTcGFjZUNvbXBsZXRpb24odHJhbnNhY3Rpb24sIFt0aGlzLCByZXF1
ZXN0RGF0YSwgaW5mbywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYXV0byBlcnJvcikg
bXV0YWJsZSB7Ci0gICAgICAgIGlmIChlcnJvcikgewotICAgICAgICAgICAgY2FsbGJhY2soV1RG
TW92ZSgqZXJyb3IpLCB7IH0pOworICAgIHdhaXRGb3JSZXF1ZXN0U3BhY2VDb21wbGV0aW9uKHRy
YW5zYWN0aW9uLCBbdGhpcywgcmVxdWVzdERhdGEsIGluZm8sIGNhbGxiYWNrID0gV1RGTW92ZShj
YWxsYmFjayldKGF1dG8mJiBlcnJvcikgbXV0YWJsZSB7CisgICAgICAgIGlmICghZXJyb3IuaXNO
dWxsKCkpIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKFdURk1vdmUoZXJyb3IpLCB7IH0pOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIHRoaXMtPm9wZW5DdXJzb3JBZnRl
clF1b3RhQ2hlY2socmVxdWVzdERhdGEsIGluZm8sIFdURk1vdmUoY2FsbGJhY2spKTsKQEAgLTE1
NTIsOSArMTU3MSw5IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6Oml0ZXJhdGVDdXJzb3IoVW5p
cXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sCiAgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKICAgICBMT0coSW5kZXhlZERCLCAiKG1haW4pIFVuaXF1ZUlEQkRhdGFiYXNl
OjppdGVyYXRlQ3Vyc29yIik7CiAKLSAgICB3YWl0Rm9yUmVxdWVzdFNwYWNlQ29tcGxldGlvbih0
cmFuc2FjdGlvbiwgW3RoaXMsIHJlcXVlc3REYXRhLCBkYXRhLCBjYWxsYmFjayA9IFdURk1vdmUo
Y2FsbGJhY2spXShhdXRvIGVycm9yKSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKGVycm9yKSB7Ci0g
ICAgICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKCplcnJvciksIHsgfSk7CisgICAgd2FpdEZvclJl
cXVlc3RTcGFjZUNvbXBsZXRpb24odHJhbnNhY3Rpb24sIFt0aGlzLCByZXF1ZXN0RGF0YSwgZGF0
YSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYXV0byYmIGVycm9yKSBtdXRhYmxlIHsK
KyAgICAgICAgaWYgKCFlcnJvci5pc051bGwoKSkgeworICAgICAgICAgICAgY2FsbGJhY2soV1RG
TW92ZShlcnJvciksIHsgfSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAg
ICAgdGhpcy0+aXRlcmF0ZUN1cnNvckFmdGVyUXVvdGFDaGVjayhyZXF1ZXN0RGF0YSwgZGF0YSwg
V1RGTW92ZShjYWxsYmFjaykpOwpAQCAtMTYyNiw5ICsxNjQ1LDkgQEAgdm9pZCBVbmlxdWVJREJE
YXRhYmFzZTo6Y29tbWl0VHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYg
dHJhbnNhY3QKIAogICAgIEFTU0VSVCh0cmFuc2FjdGlvbi5kYXRhYmFzZUNvbm5lY3Rpb24oKS5k
YXRhYmFzZSgpID09IHRoaXMpOwogCi0gICAgd2FpdEZvclJlcXVlc3RTcGFjZUNvbXBsZXRpb24o
dHJhbnNhY3Rpb24sIFt0aGlzLCAmdHJhbnNhY3Rpb24sIGNhbGxiYWNrID0gV1RGTW92ZShjYWxs
YmFjayldKGF1dG8gZXJyb3IpIG11dGFibGUgewotICAgICAgICBpZiAoZXJyb3IpIHsKLSAgICAg
ICAgICAgIGNhbGxiYWNrKFdURk1vdmUoKmVycm9yKSk7CisgICAgd2FpdEZvclJlcXVlc3RTcGFj
ZUNvbXBsZXRpb24odHJhbnNhY3Rpb24sIFt0aGlzLCAmdHJhbnNhY3Rpb24sIGNhbGxiYWNrID0g
V1RGTW92ZShjYWxsYmFjayldKGF1dG8mJiBlcnJvcikgbXV0YWJsZSB7CisgICAgICAgIGlmICgh
ZXJyb3IuaXNOdWxsKCkpIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKFdURk1vdmUoZXJyb3IpKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICB0aGlzLT5jb21taXRUcmFu
c2FjdGlvbkFmdGVyUXVvdGFDaGVjayh0cmFuc2FjdGlvbiwgV1RGTW92ZShjYWxsYmFjaykpOwpA
QCAtMTY5OSw4ICsxNzE4LDggQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6YWJvcnRUcmFuc2Fj
dGlvbihVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGkKIAogICAgIGlmICh3
YWl0Rm9yUGVuZGluZ1Rhc2tzID09IFdhaXRGb3JQZW5kaW5nVGFza3M6OlllcykgewogICAgICAg
ICB3YWl0Rm9yUmVxdWVzdFNwYWNlQ29tcGxldGlvbih0cmFuc2FjdGlvbiwgW3RoaXMsICZ0cmFu
c2FjdGlvbiwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYXV0byYmIGVycm9yKSBtdXRh
YmxlIHsKLSAgICAgICAgICAgIGlmIChlcnJvcikgewotICAgICAgICAgICAgICAgIGNhbGxiYWNr
KFdURk1vdmUoKmVycm9yKSk7CisgICAgICAgICAgICBpZiAoIWVycm9yLmlzTnVsbCgpKSB7Cisg
ICAgICAgICAgICAgICAgY2FsbGJhY2soV1RGTW92ZShlcnJvcikpOwogICAgICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHRoaXMtPmFib3J0VHJhbnNhY3Rp
b24odHJhbnNhY3Rpb24sIFdhaXRGb3JQZW5kaW5nVGFza3M6Ok5vLCBXVEZNb3ZlKGNhbGxiYWNr
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
VW5pcXVlSURCRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9VbmlxdWVJREJEYXRhYmFzZS5oCmluZGV4IDUzYjIxZGZlNGQyMWRhNTVmZmNhNmYwNmZi
MDZiMjI3NWMxZWNmOGQuLjE0MTgwMWRhN2ZmZTU2MTlhNzEwZGEyZmIyNjk1NGRjNmNlZDJjNGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9Vbmlx
dWVJREJEYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9VbmlxdWVJREJEYXRhYmFzZS5oCkBAIC0xNDEsMTEgKzE0MSwxMSBAQCBwcml2YXRlOgog
CiAgICAgdm9pZCBzY2hlZHVsZVNodXRkb3duRm9yQ2xvc2UoKTsKIAotICAgIHZvaWQgY3JlYXRl
T2JqZWN0U3RvcmVBZnRlclF1b3RhQ2hlY2sodWludDY0X3QgdGFza1NpemUsIFVuaXF1ZUlEQkRh
dGFiYXNlVHJhbnNhY3Rpb24mLCBjb25zdCBJREJPYmplY3RTdG9yZUluZm8mLCBFcnJvckNhbGxi
YWNrKTsKLSAgICB2b2lkIHJlbmFtZU9iamVjdFN0b3JlQWZ0ZXJRdW90YUNoZWNrKHVpbnQ2NF90
IHRhc2tTaXplLCBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiwgdWludDY0X3Qgb2JqZWN0
U3RvcmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5ld05hbWUsIEVycm9yQ2FsbGJhY2spOwot
ICAgIHZvaWQgY3JlYXRlSW5kZXhBZnRlclF1b3RhQ2hlY2sodWludDY0X3QgdGFza1NpemUsIFVu
aXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mLCBjb25zdCBJREJJbmRleEluZm8mLCBFcnJvckNh
bGxiYWNrKTsKLSAgICB2b2lkIHJlbmFtZUluZGV4QWZ0ZXJRdW90YUNoZWNrKHVpbnQ2NF90IHRh
c2tTaXplLCBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiwgdWludDY0X3Qgb2JqZWN0U3Rv
cmVJZGVudGlmaWVyLCB1aW50NjRfdCBpbmRleElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3
TmFtZSwgRXJyb3JDYWxsYmFjayk7Ci0gICAgdm9pZCBwdXRPckFkZEFmdGVyUXVvdGFDaGVjayh1
aW50NjRfdCB0YXNrU2l6ZSwgY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJLZXlEYXRh
JiwgY29uc3QgSURCVmFsdWUmLCBJbmRleGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9kZSwg
S2V5RGF0YUNhbGxiYWNrKTsKKyAgICB2b2lkIGNyZWF0ZU9iamVjdFN0b3JlQWZ0ZXJRdW90YUNo
ZWNrKHVpbnQ2NF90IHRhc2tTaXplLCBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiwgY29u
c3QgSURCT2JqZWN0U3RvcmVJbmZvJiwgRXJyb3JDYWxsYmFjaywgY29uc3QgSURCRXJyb3ImKTsK
KyAgICB2b2lkIHJlbmFtZU9iamVjdFN0b3JlQWZ0ZXJRdW90YUNoZWNrKHVpbnQ2NF90IHRhc2tT
aXplLCBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJ
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5ld05hbWUsIEVycm9yQ2FsbGJhY2ssIGNvbnN0IElE
QkVycm9yJik7CisgICAgdm9pZCBjcmVhdGVJbmRleEFmdGVyUXVvdGFDaGVjayh1aW50NjRfdCB0
YXNrU2l6ZSwgVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYsIGNvbnN0IElEQkluZGV4SW5m
byYsIEVycm9yQ2FsbGJhY2ssIGNvbnN0IElEQkVycm9yJik7CisgICAgdm9pZCByZW5hbWVJbmRl
eEFmdGVyUXVvdGFDaGVjayh1aW50NjRfdCB0YXNrU2l6ZSwgVW5pcXVlSURCRGF0YWJhc2VUcmFu
c2FjdGlvbiYsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgdWludDY0X3QgaW5kZXhJ
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5ld05hbWUsIEVycm9yQ2FsbGJhY2ssIGNvbnN0IElE
QkVycm9yJik7CisgICAgdm9pZCBwdXRPckFkZEFmdGVyUXVvdGFDaGVjayh1aW50NjRfdCB0YXNr
U2l6ZSwgY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJLZXlEYXRhJiwgY29uc3QgSURC
VmFsdWUmLCBJbmRleGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9kZSwgS2V5RGF0YUNhbGxi
YWNrLCBjb25zdCBJREJFcnJvciYpOwogICAgIHZvaWQgZGVsZXRlUmVjb3JkQWZ0ZXJRdW90YUNo
ZWNrKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiwgRXJyb3JD
YWxsYmFjayk7CiAKICAgICB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlQWZ0ZXJRdW90YUNoZWNrKFVu
aXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mLCBjb25zdCBTdHJpbmcmIG9iamVjdFN0b3JlTmFt
ZSwgRXJyb3JDYWxsYmFjayk7CkBAIC0xNjQsMTQgKzE2NCwxNCBAQCBwcml2YXRlOgogICAgIHZv
aWQgcGVyZm9ybUNvbW1pdFRyYW5zYWN0aW9uKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwg
Y29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIpOwogICAg
IHZvaWQgcGVyZm9ybUFib3J0VHJhbnNhY3Rpb24odWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVy
LCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllcik7CiAg
ICAgdm9pZCBiZWdpblRyYW5zYWN0aW9uSW5CYWNraW5nU3RvcmUoY29uc3QgSURCVHJhbnNhY3Rp
b25JbmZvJik7Ci0gICAgdm9pZCBwZXJmb3JtQ3JlYXRlT2JqZWN0U3RvcmUodWludDY0X3QgY2Fs
bGJhY2tJZGVudGlmaWVyLCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9u
SWRlbnRpZmllciwgY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJik7CisgICAgdm9pZCBwZXJmb3Jt
Q3JlYXRlT2JqZWN0U3RvcmUodWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBjb25zdCBJREJS
ZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCT2JqZWN0
U3RvcmVJbmZvJiwgY29uc3QgSURCRXJyb3ImKTsKICAgICB2b2lkIHBlcmZvcm1EZWxldGVPYmpl
Y3RTdG9yZSh1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIGNvbnN0IElEQlJlc291cmNlSWRl
bnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50
aWZpZXIpOwotICAgIHZvaWQgcGVyZm9ybVJlbmFtZU9iamVjdFN0b3JlKHVpbnQ2NF90IGNhbGxi
YWNrSWRlbnRpZmllciwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklk
ZW50aWZpZXIsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBu
ZXdOYW1lKTsKKyAgICB2b2lkIHBlcmZvcm1SZW5hbWVPYmplY3RTdG9yZSh1aW50NjRfdCBjYWxs
YmFja0lkZW50aWZpZXIsIGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25J
ZGVudGlmaWVyLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
bmV3TmFtZSwgY29uc3QgSURCRXJyb3ImKTsKICAgICB2b2lkIHBlcmZvcm1DbGVhck9iamVjdFN0
b3JlKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlm
aWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmll
cik7Ci0gICAgdm9pZCBwZXJmb3JtQ3JlYXRlSW5kZXgodWludDY0X3QgY2FsbGJhY2tJZGVudGlm
aWVyLCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwg
Y29uc3QgSURCSW5kZXhJbmZvJik7CisgICAgdm9pZCBwZXJmb3JtQ3JlYXRlSW5kZXgodWludDY0
X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5z
YWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCSW5kZXhJbmZvJiwgY29uc3QgSURCRXJyb3ImKTsK
ICAgICB2b2lkIHBlcmZvcm1EZWxldGVJbmRleCh1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIs
IGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1aW50
NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIHVpbnQ2NF90IGluZGV4SWRlbnRpZmllcik7Ci0g
ICAgdm9pZCBwZXJmb3JtUmVuYW1lSW5kZXgodWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBj
b25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgdWludDY0
X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCB1aW50NjRfdCBpbmRleElkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgbmV3TmFtZSk7Ci0gICAgdm9pZCBwZXJmb3JtUHV0T3JBZGQodWludDY0X3QgY2Fs
bGJhY2tJZGVudGlmaWVyLCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9u
SWRlbnRpZmllciwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBJREJLZXlE
YXRhJiwgY29uc3QgSURCVmFsdWUmLCBJbmRleGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9k
ZSk7CisgICAgdm9pZCBwZXJmb3JtUmVuYW1lSW5kZXgodWludDY0X3QgY2FsbGJhY2tJZGVudGlm
aWVyLCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwg
dWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCB1aW50NjRfdCBpbmRleElkZW50aWZpZXIs
IGNvbnN0IFN0cmluZyYgbmV3TmFtZSwgY29uc3QgSURCRXJyb3ImKTsKKyAgICB2b2lkIHBlcmZv
cm1QdXRPckFkZCh1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIGNvbnN0IElEQlJlc291cmNl
SWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBvYmplY3RTdG9yZUlk
ZW50aWZpZXIsIGNvbnN0IElEQktleURhdGEmLCBjb25zdCBJREJWYWx1ZSYsIEluZGV4ZWREQjo6
T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlLCBjb25zdCBJREJFcnJvciYpOwogICAgIHZvaWQgcGVy
Zm9ybUdldFJlY29yZCh1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIGNvbnN0IElEQlJlc291
cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBvYmplY3RTdG9y
ZUlkZW50aWZpZXIsIGNvbnN0IElEQktleVJhbmdlRGF0YSYsIElEQkdldFJlY29yZERhdGFUeXBl
KTsKICAgICB2b2lkIHBlcmZvcm1HZXRBbGxSZWNvcmRzKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRp
ZmllciwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIs
IGNvbnN0IElEQkdldEFsbFJlY29yZHNEYXRhJik7CiAgICAgdm9pZCBwZXJmb3JtR2V0SW5kZXhS
ZWNvcmQodWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBjb25zdCBJREJSZXNvdXJjZUlkZW50
aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlm
aWVyLCB1aW50NjRfdCBpbmRleElkZW50aWZpZXIsIEluZGV4ZWREQjo6SW5kZXhSZWNvcmRUeXBl
LCBjb25zdCBJREJLZXlSYW5nZURhdGEmKTsKQEAgLTI0Nyw4ICsyNDcsOCBAQCBwcml2YXRlOgog
ICAgIHZvaWQgbWF5YmVGaW5pc2hIYXJkQ2xvc2UoKTsKICAgICBib29sIGlzRG9uZVdpdGhIYXJk
Q2xvc2UoKTsKIAotICAgIHZvaWQgcmVxdWVzdFNwYWNlKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNh
Y3Rpb24mLCB1aW50NjRfdCB0YXNrU2l6ZSwgY29uc3QgY2hhciogZXJyb3JNZXNzYWdlLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPElEQkVycm9yPiYmKT4mJik7Ci0gICAgdm9pZCB3
YWl0Rm9yUmVxdWVzdFNwYWNlQ29tcGxldGlvbihVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9u
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxJREJFcnJvcj4mJik+JiYpOworICAg
IHZvaWQgcmVxdWVzdFNwYWNlKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mLCB1aW50NjRf
dCB0YXNrU2l6ZSwgY29uc3QgY2hhciogZXJyb3JNZXNzYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKElEQkVycm9yJiYpPiYmKTsKKyAgICB2b2lkIHdhaXRGb3JSZXF1ZXN0U3BhY2VDb21wbGV0
aW9uKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KElEQkVycm9yJiYpPiYmKTsKICAgICB2b2lkIHVwZGF0ZVNwYWNlVXNlZElmTmVlZGVkKE9wdGlv
bmFsPHVpbnQ2NF90PiBvcHRpb25hbENhbGxiYWNrSWRlbnRpZmllciA9IFdURjo6bnVsbG9wdCk7
CiAKICAgICBSZWY8SURCU2VydmVyPiBtX3NlcnZlcjsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAyNmIzMzFlOWVkM2JiMDNj
NDExMjdmMTM4OTNjOGE2M2UzNGI4OGEzLi41OTNhMTg3NzgzYTVjZDBhZTg4MTM5YTQ3Y2JjY2Ux
NmVlYTBjMzdjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTktMTAtMDQgIFNpaHVpIExpdSAg
PHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgQVNTRVJUSU9OIEZBSUxFRDogbV90cmFu
c2FjdGlvbk9wZXJhdGlvbnNJblByb2dyZXNzUXVldWUuZmlyc3QoKSA9PSAmb3BlcmF0aW9uIGlu
IElEQlRyYW5zYWN0aW9uOjpvcGVyYXRpb25Db21wbGV0ZWRPbkNsaWVudAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyNTUyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9y
ZXNvdXJjZXMvc3RvcmFnZS1saW1pdC5qczoKKyAgICAgICAgKG9uT3BlblN1Y2Nlc3MucmVxdWVz
dC5vbmVycm9yKToKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9zdG9yYWdlLWxpbWl0LWV4
cGVjdGVkLnR4dDoKKwogMjAxOS0xMC0wNCAgeW91ZW5uIGZhYmxldCAgPHlvdWVubkBhcHBsZS5j
b20+CiAKICAgICAgICAgQWJvcnRTaWduYWwgZG9lcyBub3QgYWx3YXlzIGVtaXQgdGhlIGFib3J0
IHNpZ25hbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3Vy
Y2VzL3N0b3JhZ2UtbGltaXQuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNv
dXJjZXMvc3RvcmFnZS1saW1pdC5qcwppbmRleCA4MWJlNmQyMDk2MjgxYTViZmI3ODcwMjk1MDFk
YjBlMTM1ZGFmMGRjLi5hM2RjMWUzYmIxYzcxYzcyMTM2NWY0ZjZhZjdmNjJjZDBmZTRlODc5IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvc3RvcmFn
ZS1saW1pdC5qcworKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMv
c3RvcmFnZS1saW1pdC5qcwpAQCAtMjMsOCArMjMsMTYgQEAgZnVuY3Rpb24gb25PcGVuU3VjY2Vz
cyhldmVudCkKICAgICBwcmVhbWJsZShldmVudCk7CiAgICAgZXZhbEFuZExvZygiZGIgPSBldmVu
dC50YXJnZXQucmVzdWx0Iik7CiAgICAgZXZhbEFuZExvZygic3RvcmUgPSBkYi50cmFuc2FjdGlv
bignc3RvcmUnLCAncmVhZHdyaXRlJykub2JqZWN0U3RvcmUoJ3N0b3JlJykiKTsKKworICAgIC8v
IFNtYWxsIGFkZCBzaG91bGQgc3VjY2VlZC4KKyAgICBldmFsQW5kTG9nKCJhZGRDb3VudCA9IDAi
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8PSAxMDsgaSArKykKKyAgICAgICAgZXZhbEFuZExv
Zygic3RvcmUuYWRkKG5ldyBVaW50OEFycmF5KDEpLCAiICsgaSArICIpLm9uc3VjY2VzcyA9ICgp
PT4geyArK2FkZENvdW50OyB9Iik7CisKKwkvLyBCaWcgYWRkIHNob3VsZCBmYWlsLgogICAgIGV2
YWxBbmRMb2coInJlcXVlc3QgPSBzdG9yZS5hZGQobmV3IFVpbnQ4QXJyYXkoIiArIChxdW90YSAr
IDEpICsgIiksIDApIik7CiAgICAgcmVxdWVzdC5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsK
KyAgICAJc2hvdWxkQmUoImFkZENvdW50IiwgIjEwIik7CiAgICAgICAgIHNob3VsZEJlVHJ1ZSgi
J2Vycm9yJyBpbiByZXF1ZXN0Iik7CiAgICAgICAgIHNob3VsZEJlKCJyZXF1ZXN0LmVycm9yLmNv
ZGUiLCAiRE9NRXhjZXB0aW9uLlFVT1RBX0VYQ0VFREVEX0VSUiIpOwogICAgICAgICBzaG91bGRC
ZUVxdWFsVG9TdHJpbmcoInJlcXVlc3QuZXJyb3IubmFtZSIsICJRdW90YUV4Y2VlZGVkRXJyb3Ii
KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3N0b3JhZ2UtbGlt
aXQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvc3RvcmFnZS1s
aW1pdC1leHBlY3RlZC50eHQKaW5kZXggYTRjZjZhOTVlNzM2NDJhMzlmM2ZkMGUyMmYzYjFhYjA5
ZmY3NDlmNy4uOWE3NDUyNjhkMWVjODcyMWVmZDhhMTI2ZGMxYjZiYjZlMTI5MTYwMSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvc3RvcmFnZS1saW1pdC1leHBlY3Rl
ZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvc3RvcmFnZS1saW1pdC1l
eHBlY3RlZC50eHQKQEAgLTE1LDcgKzE1LDE5IEBAIHN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3Rv
cmUoJ3N0b3JlJykKIG9uT3BlblN1Y2Nlc3MoKToKIGRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdAog
c3RvcmUgPSBkYi50cmFuc2FjdGlvbignc3RvcmUnLCAncmVhZHdyaXRlJykub2JqZWN0U3RvcmUo
J3N0b3JlJykKK2FkZENvdW50ID0gMAorc3RvcmUuYWRkKG5ldyBVaW50OEFycmF5KDEpLCAxKS5v
bnN1Y2Nlc3MgPSAoKT0+IHsgKythZGRDb3VudDsgfQorc3RvcmUuYWRkKG5ldyBVaW50OEFycmF5
KDEpLCAyKS5vbnN1Y2Nlc3MgPSAoKT0+IHsgKythZGRDb3VudDsgfQorc3RvcmUuYWRkKG5ldyBV
aW50OEFycmF5KDEpLCAzKS5vbnN1Y2Nlc3MgPSAoKT0+IHsgKythZGRDb3VudDsgfQorc3RvcmUu
YWRkKG5ldyBVaW50OEFycmF5KDEpLCA0KS5vbnN1Y2Nlc3MgPSAoKT0+IHsgKythZGRDb3VudDsg
fQorc3RvcmUuYWRkKG5ldyBVaW50OEFycmF5KDEpLCA1KS5vbnN1Y2Nlc3MgPSAoKT0+IHsgKyth
ZGRDb3VudDsgfQorc3RvcmUuYWRkKG5ldyBVaW50OEFycmF5KDEpLCA2KS5vbnN1Y2Nlc3MgPSAo
KT0+IHsgKythZGRDb3VudDsgfQorc3RvcmUuYWRkKG5ldyBVaW50OEFycmF5KDEpLCA3KS5vbnN1
Y2Nlc3MgPSAoKT0+IHsgKythZGRDb3VudDsgfQorc3RvcmUuYWRkKG5ldyBVaW50OEFycmF5KDEp
LCA4KS5vbnN1Y2Nlc3MgPSAoKT0+IHsgKythZGRDb3VudDsgfQorc3RvcmUuYWRkKG5ldyBVaW50
OEFycmF5KDEpLCA5KS5vbnN1Y2Nlc3MgPSAoKT0+IHsgKythZGRDb3VudDsgfQorc3RvcmUuYWRk
KG5ldyBVaW50OEFycmF5KDEpLCAxMCkub25zdWNjZXNzID0gKCk9PiB7ICsrYWRkQ291bnQ7IH0K
IHJlcXVlc3QgPSBzdG9yZS5hZGQobmV3IFVpbnQ4QXJyYXkoNDA5NjAxKSwgMCkKK1BBU1MgYWRk
Q291bnQgaXMgMTAKIFBBU1MgJ2Vycm9yJyBpbiByZXF1ZXN0IGlzIHRydWUKIFBBU1MgcmVxdWVz
dC5lcnJvci5jb2RlIGlzIERPTUV4Y2VwdGlvbi5RVU9UQV9FWENFRURFRF9FUlIKIFBBU1MgcmVx
dWVzdC5lcnJvci5uYW1lIGlzICJRdW90YUV4Y2VlZGVkRXJyb3IiCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380365</attachid>
            <date>2019-10-07 14:58:32 -0700</date>
            <delta_ts>2019-10-07 15:36:54 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-202552-20191007145831.patch</filename>
            <type>text/plain</type>
            <size>36808</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwNzg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTJjZmFlZDVjOGYyMzM2
Y2JkNTIzYTA5ZGIwY2RiYjZiODc0MWRlMi4uZWI3MjMwZDYyZTNjOWE4NjAwNjU1ZmNjMTgzMTQw
ZDRhMmVhODhjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDE5LTEwLTA3ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIEFTU0VSVElPTiBGQUlMRUQ6
IG1fdHJhbnNhY3Rpb25PcGVyYXRpb25zSW5Qcm9ncmVzc1F1ZXVlLmZpcnN0KCkgPT0gJm9wZXJh
dGlvbiBpbiBJREJUcmFuc2FjdGlvbjo6b3BlcmF0aW9uQ29tcGxldGVkT25DbGllbnQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjU1MgorCisgICAg
ICAgIFJldmlld2VkIGJ5IEFsZXggQ2hyaXN0ZW5zZW4uCisKKyAgICAgICAgRGlzcGF0Y2ggdGFz
ayB0byBkYXRhYmFzZSB0aHJlYWQgZXZlbiBpZiB0aGVyZSBpcyBRdW90YUV4Y2VlZGVkRXJyb3Is
IHRvIG1ha2Ugc3VyZSByZXF1ZXN0IHJlc3VsdHMgYXJlIHNlbnQgaW4gCisgICAgICAgIG9yZGVy
LgorCisgICAgICAgIE1vZGlmaWVkIGV4aXN0aW5nIHRlc3QgdG8gY292ZXIgdGhpczogc3RvcmFn
ZS9pbmRleGVkZGIvc3RvcmFnZS1saW1pdC5odG1sLiBUZXN0IHdvdWxkIGhpdCB0aGlzIGFzc2Vy
dGlvbiAKKyAgICAgICAgd2l0aG91dCBmaXguCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2Vy
dmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6cmVxdWVzdFNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OndhaXRGb3JSZXF1ZXN0U3BhY2VDb21wbGV0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmNy
ZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURC
RGF0YWJhc2U6OmNyZWF0ZU9iamVjdFN0b3JlQWZ0ZXJRdW90YUNoZWNrKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OnBlcmZvcm1DcmVhdGVPYmplY3RT
dG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpk
ZWxldGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlE
QkRhdGFiYXNlOjpyZW5hbWVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2
ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpyZW5hbWVPYmplY3RTdG9yZUFmdGVyUXVvdGFDaGVjayk6
CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3Jt
UmVuYW1lT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJ
REJEYXRhYmFzZTo6Y2xlYXJPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2
ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpjcmVhdGVJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpjcmVhdGVJbmRleEFmdGVyUXVvdGFDaGVjayk6
CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3Jt
Q3JlYXRlSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRh
YmFzZTo6ZGVsZXRlSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJ
REJEYXRhYmFzZTo6cmVuYW1lSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpV
bmlxdWVJREJEYXRhYmFzZTo6cmVuYW1lSW5kZXhBZnRlclF1b3RhQ2hlY2spOgorICAgICAgICAo
V2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9ybVJlbmFtZUluZGV4
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OnB1dE9y
QWRkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OnB1
dE9yQWRkQWZ0ZXJRdW90YUNoZWNrKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5p
cXVlSURCRGF0YWJhc2U6OnBlcmZvcm1QdXRPckFkZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJT
ZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpnZXRSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6
SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6Z2V0QWxsUmVjb3Jkcyk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpnZXRDb3VudCk6CisgICAgICAg
IChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpkZWxldGVSZWNvcmQpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6b3BlbkN1cnNv
cik6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjppdGVy
YXRlQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJh
c2U6OmNvbW1pdFRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5p
cXVlSURCRGF0YWJhc2U6OmFib3J0VHJhbnNhY3Rpb24pOgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5oOgorCiAyMDE5LTEwLTA3ICBSb2IgQnVp
cyAgPHJidWlzQGlnYWxpYS5jb20+CiAKICAgICAgICAgQ2hhbmdlIFJlc3BvbnNlJ3Mgc3RhdHVz
VGV4dCdzIGRlZmF1bHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwCmluZGV4IGNlODFlYjA5MWJl
ZGYwZTBlOGRhZjRlZmVmZGQ0MGMwMmUxN2YzNDAuLjY2NGY0OTA4ZDhmMDI3Y2U2OTRmODUzYzY3
MGRkNjUyNWQ3ODFkYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcApAQCAtMTg2LDcgKzE4
Niw3IEBAIHN0YXRpYyBpbmxpbmUgU3RyaW5nIHF1b3RhRXJyb3JNZXNzYWdlTmFtZShjb25zdCBj
aGFyKiB0YXNrTmFtZSkKICAgICByZXR1cm4gbWFrZVN0cmluZygiRmFpbGVkIHRvICIsIHRhc2tO
YW1lLCAiIGluIGRhdGFiYXNlIGJlY2F1c2Ugbm90IGVub3VnaCBzcGFjZSBmb3IgZG9tYWluIik7
CiB9CiAKLXZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnJlcXVlc3RTcGFjZShVbmlxdWVJREJEYXRh
YmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgdWludDY0X3QgdGFza1NpemUsIGNvbnN0IGNo
YXIqIHRhc2tOYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPElEQkVycm9yPiYm
KT4mJiBjYWxsYmFjaykKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnJlcXVlc3RTcGFjZShVbmlx
dWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgdWludDY0X3QgdGFza1NpemUs
IGNvbnN0IGNoYXIqIHRhc2tOYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElEQkVycm9yJiYp
PiYmIGNhbGxiYWNrKQogewogICAgIG1fc2VydmVyLT5yZXF1ZXN0U3BhY2UobV9pZGVudGlmaWVy
Lm9yaWdpbigpLCB0YXNrU2l6ZSwgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIHRoaXMs
IHdlYWtUcmFuc2FjdGlvbiA9IG1ha2VXZWFrUHRyKHRyYW5zYWN0aW9uKSwgdGFza05hbWUsIGNh
bGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGF1dG8gZGVjaXNpb24pIG11dGFibGUgewogICAg
ICAgICBpZiAoIXdlYWtUaGlzKSB7CkBAIC0yMDksMTIgKzIwOSwxMiBAQCB2b2lkIFVuaXF1ZUlE
QkRhdGFiYXNlOjpyZXF1ZXN0U3BhY2UoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJh
bnNhY3Rpb24sCiAgICAgICAgICAgICBjYWxsYmFjayhJREJFcnJvciB7IFF1b3RhRXhjZWVkZWRF
cnJvciwgcXVvdGFFcnJvck1lc3NhZ2VOYW1lKHRhc2tOYW1lKSB9KTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgY2FzZSBTdG9yYWdlUXVvdGFNYW5hZ2VyOjpEZWNpc2lvbjo6R3JhbnQ6
Ci0gICAgICAgICAgICBjYWxsYmFjayh7IH0pOworICAgICAgICAgICAgY2FsbGJhY2soSURCRXJy
b3IgeyB9KTsKICAgICAgICAgfTsKICAgICB9KTsKIH0KIAotdm9pZCBVbmlxdWVJREJEYXRhYmFz
ZTo6d2FpdEZvclJlcXVlc3RTcGFjZUNvbXBsZXRpb24oVW5pcXVlSURCRGF0YWJhc2VUcmFuc2Fj
dGlvbiYgdHJhbnNhY3Rpb24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8SURCRXJy
b3I+JiYpPiYmIGNhbGxiYWNrKQordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6d2FpdEZvclJlcXVl
c3RTcGFjZUNvbXBsZXRpb24oVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rp
b24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSURCRXJyb3ImJik+JiYgY2FsbGJhY2spCiB7CiAg
ICAgcmVxdWVzdFNwYWNlKHRyYW5zYWN0aW9uLCAwLCAiIiwgV1RGTW92ZShjYWxsYmFjaykpOwog
fQpAQCAtODM4LDI4ICs4MzgsMzMgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Y3JlYXRlT2Jq
ZWN0U3RvcmUoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3QKIAogICAgIGF1
dG8gdGFza1NpemUgPSBkZWZhdWx0V3JpdGVPcGVyYXRpb25Db3N0ICsgZXN0aW1hdGVTaXplKGlu
Zm8pOwogICAgIHJlcXVlc3RTcGFjZSh0cmFuc2FjdGlvbiwgdGFza1NpemUsICJjcmVhdGVPYmpl
Y3RTdG9yZSIsIFt0aGlzLCB0YXNrU2l6ZSwgJnRyYW5zYWN0aW9uLCBpbmZvLCBjYWxsYmFjayA9
IFdURk1vdmUoY2FsbGJhY2spXShhdXRvIGVycm9yKSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKGVy
cm9yKSB7Ci0gICAgICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKCplcnJvcikpOworICAgICAgICBp
ZiAoIWVycm9yLmlzTnVsbCgpICYmICplcnJvci5jb2RlKCkgIT0gUXVvdGFFeGNlZWRlZEVycm9y
KSB7CisgICAgICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKGVycm9yKSk7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgdGhpcy0+Y3JlYXRlT2JqZWN0U3RvcmVBZnRlclF1
b3RhQ2hlY2sodGFza1NpemUsIHRyYW5zYWN0aW9uLCBpbmZvLCBXVEZNb3ZlKGNhbGxiYWNrKSk7
CisgICAgICAgIHRoaXMtPmNyZWF0ZU9iamVjdFN0b3JlQWZ0ZXJRdW90YUNoZWNrKHRhc2tTaXpl
LCB0cmFuc2FjdGlvbiwgaW5mbywgV1RGTW92ZShjYWxsYmFjayksIGVycm9yKTsKICAgICB9KTsK
IH0KIAotdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0U3RvcmVBZnRlclF1b3Rh
Q2hlY2sodWludDY0X3QgdGFza1NpemUsIFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRy
YW5zYWN0aW9uLCBjb25zdCBJREJPYmplY3RTdG9yZUluZm8mIGluZm8sIEVycm9yQ2FsbGJhY2sg
Y2FsbGJhY2spCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjcmVhdGVPYmplY3RTdG9yZUFmdGVy
UXVvdGFDaGVjayh1aW50NjRfdCB0YXNrU2l6ZSwgVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlv
biYgdHJhbnNhY3Rpb24sIGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYgaW5mbywgRXJyb3JDYWxs
YmFjayBjYWxsYmFjaywgY29uc3QgSURCRXJyb3ImIHF1b3RhRXJyb3IpCiB7CiAgICAgdWludDY0
X3QgY2FsbGJhY2tJRCA9IHN0b3JlQ2FsbGJhY2tPckZpcmVFcnJvcihXVEZNb3ZlKGNhbGxiYWNr
KSwgdGFza1NpemUpOwogICAgIGlmICghY2FsbGJhY2tJRCkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgcG9zdERhdGFiYXNlVGFzayhjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZVbmlxdWVJ
REJEYXRhYmFzZTo6cGVyZm9ybUNyZWF0ZU9iamVjdFN0b3JlLCBjYWxsYmFja0lELCB0cmFuc2Fj
dGlvbi5pbmZvKCkuaWRlbnRpZmllcigpLCBpbmZvKSk7CisgICAgcG9zdERhdGFiYXNlVGFzayhj
cmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9ybUNy
ZWF0ZU9iamVjdFN0b3JlLCBjYWxsYmFja0lELCB0cmFuc2FjdGlvbi5pbmZvKCkuaWRlbnRpZmll
cigpLCBpbmZvLCAgcXVvdGFFcnJvcikpOwogfQogCi12b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpw
ZXJmb3JtQ3JlYXRlT2JqZWN0U3RvcmUodWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBjb25z
dCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURC
T2JqZWN0U3RvcmVJbmZvJiBpbmZvKQordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9ybUNy
ZWF0ZU9iamVjdFN0b3JlKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgY29uc3QgSURCUmVz
b3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQk9iamVjdFN0
b3JlSW5mbyYgaW5mbywgY29uc3QgSURCRXJyb3ImIHF1b3RhRXJyb3IpCiB7CiAgICAgQVNTRVJU
KCFpc01haW5UaHJlYWQoKSk7CiAgICAgTE9HKEluZGV4ZWREQiwgIihkYikgVW5pcXVlSURCRGF0
YWJhc2U6OnBlcmZvcm1DcmVhdGVPYmplY3RTdG9yZSIpOwogCisgICAgaWYgKCFxdW90YUVycm9y
LmlzTnVsbCgpKSB7CisgICAgICAgIHBvc3REYXRhYmFzZVRhc2tSZXBseShjcmVhdGVDcm9zc1Ro
cmVhZFRhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6ZGlkUGVyZm9ybUNyZWF0ZU9iamVj
dFN0b3JlLCBjYWxsYmFja0lkZW50aWZpZXIsIHF1b3RhRXJyb3IsIGluZm8pKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKwogICAgIEFTU0VSVChtX2JhY2tpbmdTdG9yZSk7CiAgICAgbV9iYWNr
aW5nU3RvcmUtPmNyZWF0ZU9iamVjdFN0b3JlKHRyYW5zYWN0aW9uSWRlbnRpZmllciwgaW5mbyk7
CiAKQEAgLTg4Myw5ICs4ODgsOSBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpkZWxldGVPYmpl
Y3RTdG9yZShVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdAogICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CiAgICAgTE9HKEluZGV4ZWREQiwgIihtYWluKSBVbmlxdWVJREJE
YXRhYmFzZTo6ZGVsZXRlT2JqZWN0U3RvcmUiKTsKIAotICAgIHdhaXRGb3JSZXF1ZXN0U3BhY2VD
b21wbGV0aW9uKHRyYW5zYWN0aW9uLCBbdGhpcywgJnRyYW5zYWN0aW9uLCBvYmplY3RTdG9yZU5h
bWUsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGF1dG8gZXJyb3IpIG11dGFibGUgewot
ICAgICAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgICAgIGNhbGxiYWNrKFdURk1vdmUoKmVycm9y
KSk7CisgICAgd2FpdEZvclJlcXVlc3RTcGFjZUNvbXBsZXRpb24odHJhbnNhY3Rpb24sIFt0aGlz
LCAmdHJhbnNhY3Rpb24sIG9iamVjdFN0b3JlTmFtZSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxi
YWNrKV0oYXV0byYmIGVycm9yKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCFlcnJvci5pc051bGwo
KSkgeworICAgICAgICAgICAgY2FsbGJhY2soV1RGTW92ZShlcnJvcikpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIHRoaXMtPmRlbGV0ZU9iamVjdFN0b3JlQWZ0ZXJR
dW90YUNoZWNrKHRyYW5zYWN0aW9uLCBvYmplY3RTdG9yZU5hbWUsIFdURk1vdmUoY2FsbGJhY2sp
KTsKQEAgLTkzNywzOCArOTQyLDQxIEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnJlbmFtZU9i
amVjdFN0b3JlKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0CiAKICAgICBh
dXRvIHRhc2tTaXplID0gZGVmYXVsdFdyaXRlT3BlcmF0aW9uQ29zdCArIG5ld05hbWUuc2l6ZUlu
Qnl0ZXMoKTsKICAgICByZXF1ZXN0U3BhY2UodHJhbnNhY3Rpb24sIHRhc2tTaXplLCAicmVuYW1l
T2JqZWN0U3RvcmUiLCBbdGhpcywgdGFza1NpemUsICZ0cmFuc2FjdGlvbiwgb2JqZWN0U3RvcmVJ
ZGVudGlmaWVyLCBuZXdOYW1lLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShhdXRvIGVy
cm9yKSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKGVycm9yKSB7Ci0gICAgICAgICAgICBjYWxsYmFj
ayhXVEZNb3ZlKCplcnJvcikpOworICAgICAgICBpZiAoIWVycm9yLmlzTnVsbCgpICYmICplcnJv
ci5jb2RlKCkgIT0gUXVvdGFFeGNlZWRlZEVycm9yKSB7CisgICAgICAgICAgICBjYWxsYmFjayhX
VEZNb3ZlKGVycm9yKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAg
dGhpcy0+cmVuYW1lT2JqZWN0U3RvcmVBZnRlclF1b3RhQ2hlY2sodGFza1NpemUsIHRyYW5zYWN0
aW9uLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIG5ld05hbWUsIFdURk1vdmUoY2FsbGJhY2spKTsK
KyAgICAgICAgdGhpcy0+cmVuYW1lT2JqZWN0U3RvcmVBZnRlclF1b3RhQ2hlY2sodGFza1NpemUs
IHRyYW5zYWN0aW9uLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIG5ld05hbWUsIFdURk1vdmUoY2Fs
bGJhY2spLCBlcnJvcik7CiAgICAgfSk7CiB9CiAKLXZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnJl
bmFtZU9iamVjdFN0b3JlQWZ0ZXJRdW90YUNoZWNrKHVpbnQ2NF90IHRhc2tTaXplLCBVbmlxdWVJ
REJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJ
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5ld05hbWUsIEVycm9yQ2FsbGJhY2sgY2FsbGJhY2sp
Cit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpyZW5hbWVPYmplY3RTdG9yZUFmdGVyUXVvdGFDaGVj
ayh1aW50NjRfdCB0YXNrU2l6ZSwgVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNh
Y3Rpb24sIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuZXdO
YW1lLCBFcnJvckNhbGxiYWNrIGNhbGxiYWNrLCBjb25zdCBJREJFcnJvciYgcXVvdGFFcnJvcikK
IHsKICAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gc3RvcmVDYWxsYmFja09yRmlyZUVycm9yKFdU
Rk1vdmUoY2FsbGJhY2spLCB0YXNrU2l6ZSk7CiAgICAgaWYgKCFjYWxsYmFja0lEKQogICAgICAg
ICByZXR1cm47CiAKKyAgICBJREJFcnJvciBlcnJvciA9IHF1b3RhRXJyb3I7CiAgICAgYXV0byog
aW5mbyA9IG1fZGF0YWJhc2VJbmZvLT5pbmZvRm9yRXhpc3RpbmdPYmplY3RTdG9yZShvYmplY3RT
dG9yZUlkZW50aWZpZXIpOwotICAgIGlmICghaW5mbykgewotICAgICAgICBwZXJmb3JtRXJyb3JD
YWxsYmFjayhjYWxsYmFja0lELCBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8g
cmVuYW1lIG5vbi1leGlzdGFudCBvYmplY3Qgc3RvcmUiX3MgfSk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9CisgICAgaWYgKCFpbmZvKQorICAgICAgICBlcnJvciA9IElEQkVycm9yIHsgVW5rbm93
bkVycm9yLCAiQXR0ZW1wdCB0byByZW5hbWUgbm9uLWV4aXN0YW50IG9iamVjdCBzdG9yZSJfcyB9
OwogCi0gICAgcG9zdERhdGFiYXNlVGFzayhjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZV
bmlxdWVJREJEYXRhYmFzZTo6cGVyZm9ybVJlbmFtZU9iamVjdFN0b3JlLCBjYWxsYmFja0lELCB0
cmFuc2FjdGlvbi5pbmZvKCkuaWRlbnRpZmllcigpLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIG5l
d05hbWUpKTsKKyAgICBwb3N0RGF0YWJhc2VUYXNrKGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygqdGhp
cywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3JtUmVuYW1lT2JqZWN0U3RvcmUsIGNhbGxiYWNr
SUQsIHRyYW5zYWN0aW9uLmluZm8oKS5pZGVudGlmaWVyKCksIG9iamVjdFN0b3JlSWRlbnRpZmll
ciwgbmV3TmFtZSwgZXJyb3IpKTsKIH0KIAotdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9y
bVJlbmFtZU9iamVjdFN0b3JlKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgY29uc3QgSURC
UmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IG9iamVj
dFN0b3JlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuZXdOYW1lKQordm9pZCBVbmlxdWVJREJE
YXRhYmFzZTo6cGVyZm9ybVJlbmFtZU9iamVjdFN0b3JlKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRp
ZmllciwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIs
IHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuZXdOYW1lLCBj
b25zdCBJREJFcnJvciYgZXJyb3IpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAg
ICAgTE9HKEluZGV4ZWREQiwgIihkYikgVW5pcXVlSURCRGF0YWJhc2U6OnBlcmZvcm1SZW5hbWVP
YmplY3RTdG9yZSIpOwogCisgICAgaWYgKCFlcnJvci5pc051bGwoKSkgeworICAgICAgICBwb3N0
RGF0YWJhc2VUYXNrUmVwbHkoY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKCp0aGlzLCAmVW5pcXVlSURC
RGF0YWJhc2U6OmRpZFBlcmZvcm1SZW5hbWVPYmplY3RTdG9yZSwgY2FsbGJhY2tJZGVudGlmaWVy
LCBlcnJvciwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBuZXdOYW1lKSk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKICAgICBBU1NFUlQobV9iYWNraW5nU3RvcmUpOwogICAgIG1fYmFja2luZ1N0
b3JlLT5yZW5hbWVPYmplY3RTdG9yZSh0cmFuc2FjdGlvbklkZW50aWZpZXIsIG9iamVjdFN0b3Jl
SWRlbnRpZmllciwgbmV3TmFtZSk7CiAKLSAgICBJREJFcnJvciBlcnJvcjsKICAgICBwb3N0RGF0
YWJhc2VUYXNrUmVwbHkoY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0
YWJhc2U6OmRpZFBlcmZvcm1SZW5hbWVPYmplY3RTdG9yZSwgY2FsbGJhY2tJZGVudGlmaWVyLCBl
cnJvciwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBuZXdOYW1lKSk7CiB9CiAKQEAgLTk4OCw5ICs5
OTYsOSBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjbGVhck9iamVjdFN0b3JlKFVuaXF1ZUlE
QkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aQogICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CiAgICAgTE9HKEluZGV4ZWREQiwgIihtYWluKSBVbmlxdWVJREJEYXRhYmFzZTo6Y2xlYXJP
YmplY3RTdG9yZSIpOwogCi0gICAgd2FpdEZvclJlcXVlc3RTcGFjZUNvbXBsZXRpb24odHJhbnNh
Y3Rpb24sIFt0aGlzLCAmdHJhbnNhY3Rpb24sIG9iamVjdFN0b3JlSWRlbnRpZmllciwgY2FsbGJh
Y2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYXV0byBlcnJvcikgbXV0YWJsZSB7Ci0gICAgICAgIGlm
IChlcnJvcikgewotICAgICAgICAgICAgY2FsbGJhY2soV1RGTW92ZSgqZXJyb3IpKTsKKyAgICB3
YWl0Rm9yUmVxdWVzdFNwYWNlQ29tcGxldGlvbih0cmFuc2FjdGlvbiwgW3RoaXMsICZ0cmFuc2Fj
dGlvbiwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2sp
XShhdXRvJiYgZXJyb3IpIG11dGFibGUgeworICAgICAgICBpZiAoIWVycm9yLmlzTnVsbCgpKSB7
CisgICAgICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKGVycm9yKSk7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KICAgICAgICAgdGhpcy0+Y2xlYXJPYmplY3RTdG9yZUFmZXRRdW90YUNo
ZWNrKHRyYW5zYWN0aW9uLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIFdURk1vdmUoY2FsbGJhY2sp
KTsKQEAgLTEwMzIsMjcgKzEwNDAsMzIgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Y3JlYXRl
SW5kZXgoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIGMKIAogICAg
IGF1dG8gdGFza1NpemUgPSBkZWZhdWx0V3JpdGVPcGVyYXRpb25Db3N0ICsgZXN0aW1hdGVTaXpl
KGluZm8pOwogICAgIHJlcXVlc3RTcGFjZSh0cmFuc2FjdGlvbiwgdGFza1NpemUsICJjcmVhdGVJ
bmRleCIsIFt0aGlzLCB0YXNrU2l6ZSwgJnRyYW5zYWN0aW9uLCBpbmZvLCBjYWxsYmFjayA9IFdU
Rk1vdmUoY2FsbGJhY2spXShhdXRvIGVycm9yKSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKGVycm9y
KSB7Ci0gICAgICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKCplcnJvcikpOworICAgICAgICBpZiAo
IWVycm9yLmlzTnVsbCgpICYmICplcnJvci5jb2RlKCkgIT0gUXVvdGFFeGNlZWRlZEVycm9yKSB7
CisgICAgICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKGVycm9yKSk7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KLSAgICAgICAgdGhpcy0+Y3JlYXRlSW5kZXhBZnRlclF1b3RhQ2hlY2so
dGFza1NpemUsIHRyYW5zYWN0aW9uLCBpbmZvLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgICAg
IHRoaXMtPmNyZWF0ZUluZGV4QWZ0ZXJRdW90YUNoZWNrKHRhc2tTaXplLCB0cmFuc2FjdGlvbiwg
aW5mbywgV1RGTW92ZShjYWxsYmFjayksIGVycm9yKTsKICAgICB9KTsKIH0KIAotdm9pZCBVbmlx
dWVJREJEYXRhYmFzZTo6Y3JlYXRlSW5kZXhBZnRlclF1b3RhQ2hlY2sodWludDY0X3QgdGFza1Np
emUsIFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBjb25zdCBJREJJ
bmRleEluZm8mIGluZm8sIEVycm9yQ2FsbGJhY2sgY2FsbGJhY2spCit2b2lkIFVuaXF1ZUlEQkRh
dGFiYXNlOjpjcmVhdGVJbmRleEFmdGVyUXVvdGFDaGVjayh1aW50NjRfdCB0YXNrU2l6ZSwgVW5p
cXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIGNvbnN0IElEQkluZGV4SW5m
byYgaW5mbywgRXJyb3JDYWxsYmFjayBjYWxsYmFjaywgY29uc3QgSURCRXJyb3ImIHF1b3RhRXJy
b3IpCiB7CiAgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IHN0b3JlQ2FsbGJhY2tPckZpcmVFcnJv
cihXVEZNb3ZlKGNhbGxiYWNrKSwgdGFza1NpemUpOwogICAgIGlmICghY2FsbGJhY2tJRCkKICAg
ICAgICAgcmV0dXJuOwotICAgIHBvc3REYXRhYmFzZVRhc2soY3JlYXRlQ3Jvc3NUaHJlYWRUYXNr
KCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OnBlcmZvcm1DcmVhdGVJbmRleCwgY2FsbGJhY2tJ
RCwgdHJhbnNhY3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKSwgaW5mbykpOworICAgIHBvc3REYXRh
YmFzZVRhc2soY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6
OnBlcmZvcm1DcmVhdGVJbmRleCwgY2FsbGJhY2tJRCwgdHJhbnNhY3Rpb24uaW5mbygpLmlkZW50
aWZpZXIoKSwgaW5mbywgcXVvdGFFcnJvcikpOwogfQogCi12b2lkIFVuaXF1ZUlEQkRhdGFiYXNl
OjpwZXJmb3JtQ3JlYXRlSW5kZXgodWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBjb25zdCBJ
REJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCSW5k
ZXhJbmZvJiBpbmZvKQordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9ybUNyZWF0ZUluZGV4
KHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVy
JiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQkluZGV4SW5mbyYgaW5mbywgY29uc3Qg
SURCRXJyb3ImIHF1b3RhRXJyb3IpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAg
ICAgTE9HKEluZGV4ZWREQiwgIihkYikgVW5pcXVlSURCRGF0YWJhc2U6OnBlcmZvcm1DcmVhdGVJ
bmRleCIpOwogCisgICAgaWYgKCFxdW90YUVycm9yLmlzTnVsbCgpKSB7CisgICAgICAgIHBvc3RE
YXRhYmFzZVRhc2tSZXBseShjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZVbmlxdWVJREJE
YXRhYmFzZTo6ZGlkUGVyZm9ybUNyZWF0ZUluZGV4LCBjYWxsYmFja0lkZW50aWZpZXIsIHF1b3Rh
RXJyb3IsIGluZm8pKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIElEQkVycm9yIGVy
cm9yOwogICAgIEFTU0VSVChtX2JhY2tpbmdTdG9yZSk7CiAgICAgaWYgKCFtX2JhY2tpbmdTdG9y
ZSkgewpAQCAtMTA4Niw5ICsxMDk5LDkgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRl
SW5kZXgoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIHUKICAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIExPRyhJbmRleGVkREIsICIobWFpbikgVW5pcXVl
SURCRGF0YWJhc2U6OmRlbGV0ZUluZGV4Iik7CiAKLSAgICB3YWl0Rm9yUmVxdWVzdFNwYWNlQ29t
cGxldGlvbih0cmFuc2FjdGlvbiwgW3RoaXMsICZ0cmFuc2FjdGlvbiwgb2JqZWN0U3RvcmVJZGVu
dGlmaWVyLCBpbmRleE5hbWUsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGF1dG8gZXJy
b3IpIG11dGFibGUgewotICAgICAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgICAgIGNhbGxiYWNr
KFdURk1vdmUoKmVycm9yKSk7CisgICAgd2FpdEZvclJlcXVlc3RTcGFjZUNvbXBsZXRpb24odHJh
bnNhY3Rpb24sIFt0aGlzLCAmdHJhbnNhY3Rpb24sIG9iamVjdFN0b3JlSWRlbnRpZmllciwgaW5k
ZXhOYW1lLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShhdXRvJiYgZXJyb3IpIG11dGFi
bGUgeworICAgICAgICBpZiAoIWVycm9yLmlzTnVsbCgpKSB7CisgICAgICAgICAgICBjYWxsYmFj
ayhXVEZNb3ZlKGVycm9yKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAg
ICAgdGhpcy0+ZGVsZXRlSW5kZXhBZnRlclF1b3RhQ2hlY2sodHJhbnNhY3Rpb24sIG9iamVjdFN0
b3JlSWRlbnRpZmllciwgaW5kZXhOYW1lLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CkBAIC0xMTQ5LDQ0
ICsxMTYyLDQ1IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnJlbmFtZUluZGV4KFVuaXF1ZUlE
QkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCB1CiAKICAgICBhdXRvIHRhc2tTaXpl
ID0gZGVmYXVsdFdyaXRlT3BlcmF0aW9uQ29zdCArIG5ld05hbWUuc2l6ZUluQnl0ZXMoKTsKICAg
ICByZXF1ZXN0U3BhY2UodHJhbnNhY3Rpb24sIHRhc2tTaXplLCAicmVuYW1lSW5kZXgiLCBbdGhp
cywgdGFza1NpemUsICZ0cmFuc2FjdGlvbiwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRleElk
ZW50aWZpZXIsIG5ld05hbWUsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGF1dG8gZXJy
b3IpIG11dGFibGUgewotICAgICAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgICAgIGNhbGxiYWNr
KFdURk1vdmUoKmVycm9yKSk7CisgICAgICAgIGlmICghZXJyb3IuaXNOdWxsKCkgJiYgKmVycm9y
LmNvZGUoKSAhPSBRdW90YUV4Y2VlZGVkRXJyb3IpIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKFdU
Rk1vdmUoZXJyb3IpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICB0
aGlzLT5yZW5hbWVJbmRleEFmdGVyUXVvdGFDaGVjayh0YXNrU2l6ZSwgdHJhbnNhY3Rpb24sIG9i
amVjdFN0b3JlSWRlbnRpZmllciwgaW5kZXhJZGVudGlmaWVyLCBuZXdOYW1lLCBXVEZNb3ZlKGNh
bGxiYWNrKSk7CisgICAgICAgIHRoaXMtPnJlbmFtZUluZGV4QWZ0ZXJRdW90YUNoZWNrKHRhc2tT
aXplLCB0cmFuc2FjdGlvbiwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRleElkZW50aWZpZXIs
IG5ld05hbWUsIFdURk1vdmUoY2FsbGJhY2spLCBlcnJvcik7CiAgICAgfSk7CiB9CiAKLXZvaWQg
VW5pcXVlSURCRGF0YWJhc2U6OnJlbmFtZUluZGV4QWZ0ZXJRdW90YUNoZWNrKHVpbnQ2NF90IHRh
c2tTaXplLCBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgdWludDY0
X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCB1aW50NjRfdCBpbmRleElkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgbmV3TmFtZSwgRXJyb3JDYWxsYmFjayBjYWxsYmFjaykKK3ZvaWQgVW5pcXVlSURC
RGF0YWJhc2U6OnJlbmFtZUluZGV4QWZ0ZXJRdW90YUNoZWNrKHVpbnQ2NF90IHRhc2tTaXplLCBV
bmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgdWludDY0X3Qgb2JqZWN0
U3RvcmVJZGVudGlmaWVyLCB1aW50NjRfdCBpbmRleElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
bmV3TmFtZSwgRXJyb3JDYWxsYmFjayBjYWxsYmFjaywgY29uc3QgSURCRXJyb3ImIHF1b3RhRXJy
b3IpCiB7CiAgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IHN0b3JlQ2FsbGJhY2tPckZpcmVFcnJv
cihXVEZNb3ZlKGNhbGxiYWNrKSwgdGFza1NpemUpOwogICAgIGlmICghY2FsbGJhY2tJRCkKICAg
ICAgICAgcmV0dXJuOwogCisgICAgSURCRXJyb3IgZXJyb3IgPSBxdW90YUVycm9yOwogICAgIGF1
dG8qIG9iamVjdFN0b3JlSW5mbyA9IG1fZGF0YWJhc2VJbmZvLT5pbmZvRm9yRXhpc3RpbmdPYmpl
Y3RTdG9yZShvYmplY3RTdG9yZUlkZW50aWZpZXIpOwotICAgIGlmICghb2JqZWN0U3RvcmVJbmZv
KSB7Ci0gICAgICAgIHBlcmZvcm1FcnJvckNhbGxiYWNrKGNhbGxiYWNrSUQsIElEQkVycm9yIHsg
VW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byByZW5hbWUgaW5kZXggaW4gbm9uLWV4aXN0YW50IG9i
amVjdCBzdG9yZSJfcyB9KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoIW9iamVj
dFN0b3JlSW5mbykKKyAgICAgICAgZXJyb3IgPSBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0
dGVtcHQgdG8gcmVuYW1lIGluZGV4IGluIG5vbi1leGlzdGFudCBvYmplY3Qgc3RvcmUiX3MgfTsK
IAogICAgIGF1dG8qIGluZGV4SW5mbyA9IG9iamVjdFN0b3JlSW5mby0+aW5mb0ZvckV4aXN0aW5n
SW5kZXgoaW5kZXhJZGVudGlmaWVyKTsKLSAgICBpZiAoIWluZGV4SW5mbykgewotICAgICAgICBw
ZXJmb3JtRXJyb3JDYWxsYmFjayhjYWxsYmFja0lELCBJREJFcnJvciB7IFVua25vd25FcnJvciwg
IkF0dGVtcHQgdG8gcmVuYW1lIG5vbi1leGlzdGFudCBpbmRleCJfcyB9KTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KKyAgICBpZiAoIWluZGV4SW5mbykKKyAgICAgICAgZXJyb3IgPSBJREJFcnJv
ciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gcmVuYW1lIG5vbi1leGlzdGFudCBpbmRleCJf
cyB9OwogCi0gICAgcG9zdERhdGFiYXNlVGFzayhjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMs
ICZVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9ybVJlbmFtZUluZGV4LCBjYWxsYmFja0lELCB0cmFu
c2FjdGlvbi5pbmZvKCkuaWRlbnRpZmllcigpLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGluZGV4
SWRlbnRpZmllciwgbmV3TmFtZSkpOworICAgIHBvc3REYXRhYmFzZVRhc2soY3JlYXRlQ3Jvc3NU
aHJlYWRUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OnBlcmZvcm1SZW5hbWVJbmRleCwg
Y2FsbGJhY2tJRCwgdHJhbnNhY3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKSwgb2JqZWN0U3RvcmVJ
ZGVudGlmaWVyLCBpbmRleElkZW50aWZpZXIsIG5ld05hbWUsIGVycm9yKSk7CiB9CiAKLXZvaWQg
VW5pcXVlSURCRGF0YWJhc2U6OnBlcmZvcm1SZW5hbWVJbmRleCh1aW50NjRfdCBjYWxsYmFja0lk
ZW50aWZpZXIsIGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlm
aWVyLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIHVpbnQ2NF90IGluZGV4SWRlbnRp
ZmllciwgY29uc3QgU3RyaW5nJiBuZXdOYW1lKQordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cGVy
Zm9ybVJlbmFtZUluZGV4KHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgY29uc3QgSURCUmVz
b3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IG9iamVjdFN0
b3JlSWRlbnRpZmllciwgdWludDY0X3QgaW5kZXhJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5l
d05hbWUsIGNvbnN0IElEQkVycm9yJiBlcnJvcikKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVh
ZCgpKTsKICAgICBMT0coSW5kZXhlZERCLCAiKGRiKSBVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9y
bVJlbmFtZUluZGV4Iik7CiAKKyAgICBpZiAoIWVycm9yLmlzTnVsbCgpKSB7CisgICAgICAgIHBv
c3REYXRhYmFzZVRhc2tSZXBseShjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZVbmlxdWVJ
REJEYXRhYmFzZTo6ZGlkUGVyZm9ybVJlbmFtZUluZGV4LCBjYWxsYmFja0lkZW50aWZpZXIsIGVy
cm9yLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGluZGV4SWRlbnRpZmllciwgbmV3TmFtZSkpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgQVNTRVJUKG1fYmFja2luZ1N0b3JlKTsKICAg
ICBtX2JhY2tpbmdTdG9yZS0+cmVuYW1lSW5kZXgodHJhbnNhY3Rpb25JZGVudGlmaWVyLCBvYmpl
Y3RTdG9yZUlkZW50aWZpZXIsIGluZGV4SWRlbnRpZmllciwgbmV3TmFtZSk7CiAKLSAgICBJREJF
cnJvciBlcnJvcjsKICAgICBwb3N0RGF0YWJhc2VUYXNrUmVwbHkoY3JlYXRlQ3Jvc3NUaHJlYWRU
YXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OmRpZFBlcmZvcm1SZW5hbWVJbmRleCwgY2Fs
bGJhY2tJZGVudGlmaWVyLCBlcnJvciwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRleElkZW50
aWZpZXIsIG5ld05hbWUpKTsKIH0KIApAQCAtMTIxNSwyMyArMTIyOSwyMyBAQCB2b2lkIFVuaXF1
ZUlEQkRhdGFiYXNlOjpwdXRPckFkZChVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFu
c2FjdGlvbiwgY29ucwogCiAgICAgYXV0byB0YXNrU2l6ZSA9IGRlZmF1bHRXcml0ZU9wZXJhdGlv
bkNvc3QgKyBlc3RpbWF0ZVNpemUoa2V5RGF0YSkgKyBlc3RpbWF0ZVNpemUodmFsdWUpOwogICAg
IHJlcXVlc3RTcGFjZSh0cmFuc2FjdGlvbiwgdGFza1NpemUsICJwdXRPckFkZCIsIFt0aGlzLCB0
YXNrU2l6ZSwgcmVxdWVzdERhdGEsIGtleURhdGEsIHZhbHVlLCBjYWxsYmFjayA9IFdURk1vdmUo
Y2FsbGJhY2spLCBvdmVyd3JpdGVNb2RlXShhdXRvIGVycm9yKSBtdXRhYmxlIHsKLSAgICAgICAg
aWYgKGVycm9yKSB7Ci0gICAgICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKCplcnJvciksIHsgfSk7
CisgICAgICAgIGlmICghZXJyb3IuaXNOdWxsKCkgJiYgKmVycm9yLmNvZGUoKSAhPSBRdW90YUV4
Y2VlZGVkRXJyb3IpIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKFdURk1vdmUoZXJyb3IpLCB7IH0p
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIHRoaXMtPnB1dE9yQWRk
QWZ0ZXJRdW90YUNoZWNrKHRhc2tTaXplLCByZXF1ZXN0RGF0YSwga2V5RGF0YSwgdmFsdWUsIG92
ZXJ3cml0ZU1vZGUsIFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICAgICAgdGhpcy0+cHV0T3JBZGRB
ZnRlclF1b3RhQ2hlY2sodGFza1NpemUsIHJlcXVlc3REYXRhLCBrZXlEYXRhLCB2YWx1ZSwgb3Zl
cndyaXRlTW9kZSwgV1RGTW92ZShjYWxsYmFjayksIGVycm9yKTsKICAgICB9KTsKIH0KIAotdm9p
ZCBVbmlxdWVJREJEYXRhYmFzZTo6cHV0T3JBZGRBZnRlclF1b3RhQ2hlY2sodWludDY0X3QgdGFz
a1NpemUsIGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCS2V5RGF0
YSYga2V5RGF0YSwgY29uc3QgSURCVmFsdWUmIHZhbHVlLCBJbmRleGVkREI6Ok9iamVjdFN0b3Jl
T3ZlcndyaXRlTW9kZSBvdmVyd3JpdGVNb2RlLCBLZXlEYXRhQ2FsbGJhY2sgY2FsbGJhY2spCit2
b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpwdXRPckFkZEFmdGVyUXVvdGFDaGVjayh1aW50NjRfdCB0
YXNrU2l6ZSwgY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJLZXlE
YXRhJiBrZXlEYXRhLCBjb25zdCBJREJWYWx1ZSYgdmFsdWUsIEluZGV4ZWREQjo6T2JqZWN0U3Rv
cmVPdmVyd3JpdGVNb2RlIG92ZXJ3cml0ZU1vZGUsIEtleURhdGFDYWxsYmFjayBjYWxsYmFjaywg
Y29uc3QgSURCRXJyb3ImIHF1b3RhRXJyb3IpCiB7CiAgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9
IHN0b3JlQ2FsbGJhY2tPckZpcmVFcnJvcihXVEZNb3ZlKGNhbGxiYWNrKSwgdGFza1NpemUpOwog
ICAgIGlmICghY2FsbGJhY2tJRCkKICAgICAgICAgcmV0dXJuOwotICAgIHBvc3REYXRhYmFzZVRh
c2soY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OnBlcmZv
cm1QdXRPckFkZCwgY2FsbGJhY2tJRCwgcmVxdWVzdERhdGEudHJhbnNhY3Rpb25JZGVudGlmaWVy
KCksIHJlcXVlc3REYXRhLm9iamVjdFN0b3JlSWRlbnRpZmllcigpLCBrZXlEYXRhLCB2YWx1ZSwg
b3ZlcndyaXRlTW9kZSkpOworICAgIHBvc3REYXRhYmFzZVRhc2soY3JlYXRlQ3Jvc3NUaHJlYWRU
YXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OnBlcmZvcm1QdXRPckFkZCwgY2FsbGJhY2tJ
RCwgcmVxdWVzdERhdGEudHJhbnNhY3Rpb25JZGVudGlmaWVyKCksIHJlcXVlc3REYXRhLm9iamVj
dFN0b3JlSWRlbnRpZmllcigpLCBrZXlEYXRhLCB2YWx1ZSwgb3ZlcndyaXRlTW9kZSwgcXVvdGFF
cnJvcikpOwogfQogCi12b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3JtUHV0T3JBZGQodWlu
dDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRy
YW5zYWN0aW9uSWRlbnRpZmllciwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25z
dCBJREJLZXlEYXRhJiBrZXlEYXRhLCBjb25zdCBJREJWYWx1ZSYgb3JpZ2luYWxSZWNvcmRWYWx1
ZSwgSW5kZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1vZGUgb3ZlcndyaXRlTW9kZSkKK3Zv
aWQgVW5pcXVlSURCRGF0YWJhc2U6OnBlcmZvcm1QdXRPckFkZCh1aW50NjRfdCBjYWxsYmFja0lk
ZW50aWZpZXIsIGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlm
aWVyLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IElEQktleURhdGEmIGtl
eURhdGEsIGNvbnN0IElEQlZhbHVlJiBvcmlnaW5hbFJlY29yZFZhbHVlLCBJbmRleGVkREI6Ok9i
amVjdFN0b3JlT3ZlcndyaXRlTW9kZSBvdmVyd3JpdGVNb2RlLCBjb25zdCBJREJFcnJvciYgcXVv
dGFFcnJvcikKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBMT0coSW5kZXhl
ZERCLCAiKGRiKSBVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9ybVB1dE9yQWRkIik7CkBAIC0xMjQy
LDYgKzEyNTYsMTEgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9ybVB1dE9yQWRkKHVp
bnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgY29uc3QgSURCUmUKICAgICBJREJLZXlEYXRhIHVz
ZWRLZXk7CiAgICAgSURCRXJyb3IgZXJyb3I7CiAKKyAgICBpZiAoIXF1b3RhRXJyb3IuaXNOdWxs
KCkpIHsKKyAgICAgICAgcG9zdERhdGFiYXNlVGFza1JlcGx5KGNyZWF0ZUNyb3NzVGhyZWFkVGFz
aygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRQZXJmb3JtUHV0T3JBZGQsIGNhbGxiYWNr
SWRlbnRpZmllciwgcXVvdGFFcnJvciwgdXNlZEtleSkpOworICAgICAgICByZXR1cm47CisgICAg
fQorCiAgICAgaWYgKCFtX2JhY2tpbmdTdG9yZSkgewogICAgICAgICBSRUxFQVNFX0xPR19FUlJP
UihJbmRleGVkREIsICIlcCAtIFVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3JtUHV0T3JBZGQ6IG1f
YmFja2luZ1N0b3JlIGlzIG51bGwiLCB0aGlzKTsKICAgICAgICAgZXJyb3IgPSBJREJFcnJvcihJ
bnZhbGlkU3RhdGVFcnJvciwgIkJhY2tpbmcgc3RvcmUgaXMgaW52YWxpZCBmb3IgY2FsbCB0byBw
dXQgb3IgYWRkIl9zKTsKQEAgLTEzMjMsOSArMTM0Miw5IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJh
c2U6OmdldFJlY29yZChVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwg
Y29uCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBMT0coSW5kZXhlZERCLCAiKG1h
aW4pIFVuaXF1ZUlEQkRhdGFiYXNlOjpnZXRSZWNvcmQiKTsKIAotICAgIHdhaXRGb3JSZXF1ZXN0
U3BhY2VDb21wbGV0aW9uKHRyYW5zYWN0aW9uLCBbdGhpcywgcmVxdWVzdERhdGEsIGdldFJlY29y
ZERhdGEsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGF1dG8gZXJyb3IpIG11dGFibGUg
ewotICAgICAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgICAgIGNhbGxiYWNrKFdURk1vdmUoKmVy
cm9yKSwgeyB9KTsKKyAgICB3YWl0Rm9yUmVxdWVzdFNwYWNlQ29tcGxldGlvbih0cmFuc2FjdGlv
biwgW3RoaXMsIHJlcXVlc3REYXRhLCBnZXRSZWNvcmREYXRhLCBjYWxsYmFjayA9IFdURk1vdmUo
Y2FsbGJhY2spXShhdXRvJiYgZXJyb3IpIG11dGFibGUgeworICAgICAgICBpZiAoIWVycm9yLmlz
TnVsbCgpKSB7CisgICAgICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKGVycm9yKSwgeyB9KTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICB0aGlzLT5nZXRSZWNvcmRBZnRl
clF1b3RhQ2hlY2socmVxdWVzdERhdGEsIGdldFJlY29yZERhdGEsIFdURk1vdmUoY2FsbGJhY2sp
KTsKQEAgLTEzNDksOSArMTM2OCw5IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmdldEFsbFJl
Y29yZHMoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sCiAgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBMT0coSW5kZXhlZERCLCAiKG1haW4pIFVuaXF1ZUlE
QkRhdGFiYXNlOjpnZXRBbGxSZWNvcmRzIik7CiAKLSAgICB3YWl0Rm9yUmVxdWVzdFNwYWNlQ29t
cGxldGlvbih0cmFuc2FjdGlvbiwgW3RoaXMsIHJlcXVlc3REYXRhLCBnZXRBbGxSZWNvcmRzRGF0
YSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYXV0byBlcnJvcikgbXV0YWJsZSB7Ci0g
ICAgICAgIGlmIChlcnJvcikgewotICAgICAgICAgICAgY2FsbGJhY2soV1RGTW92ZSgqZXJyb3Ip
LCB7IH0pOworICAgIHdhaXRGb3JSZXF1ZXN0U3BhY2VDb21wbGV0aW9uKHRyYW5zYWN0aW9uLCBb
dGhpcywgcmVxdWVzdERhdGEsIGdldEFsbFJlY29yZHNEYXRhLCBjYWxsYmFjayA9IFdURk1vdmUo
Y2FsbGJhY2spXShhdXRvJiYgZXJyb3IpIG11dGFibGUgeworICAgICAgICBpZiAoIWVycm9yLmlz
TnVsbCgpKSB7CisgICAgICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKGVycm9yKSwgeyB9KTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICB0aGlzLT5nZXRBbGxSZWNvcmRz
QWZ0ZXJRdW90YUNoZWNrKHJlcXVlc3REYXRhLCBnZXRBbGxSZWNvcmRzRGF0YSwgV1RGTW92ZShj
YWxsYmFjaykpOwpAQCAtMTQyNyw5ICsxNDQ2LDkgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6
Z2V0Q291bnQoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIGNvbnMK
ICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIExPRyhJbmRleGVkREIsICIobWFpbikg
VW5pcXVlSURCRGF0YWJhc2U6OmdldENvdW50Iik7CiAKLSAgICB3YWl0Rm9yUmVxdWVzdFNwYWNl
Q29tcGxldGlvbih0cmFuc2FjdGlvbiwgW3RoaXMsIHJlcXVlc3REYXRhLCByYW5nZSwgY2FsbGJh
Y2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYXV0byBlcnJvcikgbXV0YWJsZSB7Ci0gICAgICAgIGlm
IChlcnJvcikgewotICAgICAgICAgICAgY2FsbGJhY2soV1RGTW92ZSgqZXJyb3IpLCB7IH0pOwor
ICAgIHdhaXRGb3JSZXF1ZXN0U3BhY2VDb21wbGV0aW9uKHRyYW5zYWN0aW9uLCBbdGhpcywgcmVx
dWVzdERhdGEsIHJhbmdlLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShhdXRvJiYgZXJy
b3IpIG11dGFibGUgeworICAgICAgICBpZiAoIWVycm9yLmlzTnVsbCgpKSB7CisgICAgICAgICAg
ICBjYWxsYmFjayhXVEZNb3ZlKGVycm9yKSwgeyB9KTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogICAgICAgICB0aGlzLT5nZXRDb3VudEFmdGVyUXVvdGFDaGVjayhyZXF1ZXN0RGF0
YSwgcmFuZ2UsIFdURk1vdmUoY2FsbGJhY2spKTsKQEAgLTE0NzEsOSArMTQ5MCw5IEBAIHZvaWQg
VW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZVJlY29yZChVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0
aW9uJiB0cmFuc2FjdGlvbiwKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIExPRyhJ
bmRleGVkREIsICIobWFpbikgVW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZVJlY29yZCIpOwogCi0g
ICAgd2FpdEZvclJlcXVlc3RTcGFjZUNvbXBsZXRpb24odHJhbnNhY3Rpb24sIFt0aGlzLCByZXF1
ZXN0RGF0YSwga2V5UmFuZ2VEYXRhLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShhdXRv
IGVycm9yKSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKGVycm9yKSB7Ci0gICAgICAgICAgICBjYWxs
YmFjayhXVEZNb3ZlKCplcnJvcikpOworICAgIHdhaXRGb3JSZXF1ZXN0U3BhY2VDb21wbGV0aW9u
KHRyYW5zYWN0aW9uLCBbdGhpcywgcmVxdWVzdERhdGEsIGtleVJhbmdlRGF0YSwgY2FsbGJhY2sg
PSBXVEZNb3ZlKGNhbGxiYWNrKV0oYXV0byYmIGVycm9yKSBtdXRhYmxlIHsKKyAgICAgICAgaWYg
KCFlcnJvci5pc051bGwoKSkgeworICAgICAgICAgICAgY2FsbGJhY2soV1RGTW92ZShlcnJvcikp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIHRoaXMtPmRlbGV0ZVJl
Y29yZEFmdGVyUXVvdGFDaGVjayhyZXF1ZXN0RGF0YSwga2V5UmFuZ2VEYXRhLCBXVEZNb3ZlKGNh
bGxiYWNrKSk7CkBAIC0xNTExLDkgKzE1MzAsOSBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpv
cGVuQ3Vyc29yKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBjbwog
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgTE9HKEluZGV4ZWREQiwgIihtYWluKSBV
bmlxdWVJREJEYXRhYmFzZTo6b3BlbkN1cnNvciIpOwogCi0gICAgd2FpdEZvclJlcXVlc3RTcGFj
ZUNvbXBsZXRpb24odHJhbnNhY3Rpb24sIFt0aGlzLCByZXF1ZXN0RGF0YSwgaW5mbywgY2FsbGJh
Y2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYXV0byBlcnJvcikgbXV0YWJsZSB7Ci0gICAgICAgIGlm
IChlcnJvcikgewotICAgICAgICAgICAgY2FsbGJhY2soV1RGTW92ZSgqZXJyb3IpLCB7IH0pOwor
ICAgIHdhaXRGb3JSZXF1ZXN0U3BhY2VDb21wbGV0aW9uKHRyYW5zYWN0aW9uLCBbdGhpcywgcmVx
dWVzdERhdGEsIGluZm8sIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGF1dG8mJiBlcnJv
cikgbXV0YWJsZSB7CisgICAgICAgIGlmICghZXJyb3IuaXNOdWxsKCkpIHsKKyAgICAgICAgICAg
IGNhbGxiYWNrKFdURk1vdmUoZXJyb3IpLCB7IH0pOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAgICAgICAgIHRoaXMtPm9wZW5DdXJzb3JBZnRlclF1b3RhQ2hlY2socmVxdWVzdERh
dGEsIGluZm8sIFdURk1vdmUoY2FsbGJhY2spKTsKQEAgLTE1NTIsOSArMTU3MSw5IEBAIHZvaWQg
VW5pcXVlSURCRGF0YWJhc2U6Oml0ZXJhdGVDdXJzb3IoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2Fj
dGlvbiYgdHJhbnNhY3Rpb24sCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBMT0co
SW5kZXhlZERCLCAiKG1haW4pIFVuaXF1ZUlEQkRhdGFiYXNlOjppdGVyYXRlQ3Vyc29yIik7CiAK
LSAgICB3YWl0Rm9yUmVxdWVzdFNwYWNlQ29tcGxldGlvbih0cmFuc2FjdGlvbiwgW3RoaXMsIHJl
cXVlc3REYXRhLCBkYXRhLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShhdXRvIGVycm9y
KSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKGVycm9yKSB7Ci0gICAgICAgICAgICBjYWxsYmFjayhX
VEZNb3ZlKCplcnJvciksIHsgfSk7CisgICAgd2FpdEZvclJlcXVlc3RTcGFjZUNvbXBsZXRpb24o
dHJhbnNhY3Rpb24sIFt0aGlzLCByZXF1ZXN0RGF0YSwgZGF0YSwgY2FsbGJhY2sgPSBXVEZNb3Zl
KGNhbGxiYWNrKV0oYXV0byYmIGVycm9yKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCFlcnJvci5p
c051bGwoKSkgeworICAgICAgICAgICAgY2FsbGJhY2soV1RGTW92ZShlcnJvciksIHsgfSk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgdGhpcy0+aXRlcmF0ZUN1cnNv
ckFmdGVyUXVvdGFDaGVjayhyZXF1ZXN0RGF0YSwgZGF0YSwgV1RGTW92ZShjYWxsYmFjaykpOwpA
QCAtMTYyNiw5ICsxNjQ1LDkgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Y29tbWl0VHJhbnNh
Y3Rpb24oVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3QKIAogICAgIEFTU0VS
VCh0cmFuc2FjdGlvbi5kYXRhYmFzZUNvbm5lY3Rpb24oKS5kYXRhYmFzZSgpID09IHRoaXMpOwog
Ci0gICAgd2FpdEZvclJlcXVlc3RTcGFjZUNvbXBsZXRpb24odHJhbnNhY3Rpb24sIFt0aGlzLCAm
dHJhbnNhY3Rpb24sIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGF1dG8gZXJyb3IpIG11
dGFibGUgewotICAgICAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgICAgIGNhbGxiYWNrKFdURk1v
dmUoKmVycm9yKSk7CisgICAgd2FpdEZvclJlcXVlc3RTcGFjZUNvbXBsZXRpb24odHJhbnNhY3Rp
b24sIFt0aGlzLCAmdHJhbnNhY3Rpb24sIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGF1
dG8mJiBlcnJvcikgbXV0YWJsZSB7CisgICAgICAgIGlmICghZXJyb3IuaXNOdWxsKCkpIHsKKyAg
ICAgICAgICAgIGNhbGxiYWNrKFdURk1vdmUoZXJyb3IpKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogICAgICAgICB0aGlzLT5jb21taXRUcmFuc2FjdGlvbkFmdGVyUXVvdGFDaGVj
ayh0cmFuc2FjdGlvbiwgV1RGTW92ZShjYWxsYmFjaykpOwpAQCAtMTY5OSw4ICsxNzE4LDggQEAg
dm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6YWJvcnRUcmFuc2FjdGlvbihVbmlxdWVJREJEYXRhYmFz
ZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGkKIAogICAgIGlmICh3YWl0Rm9yUGVuZGluZ1Rhc2tzID09
IFdhaXRGb3JQZW5kaW5nVGFza3M6OlllcykgewogICAgICAgICB3YWl0Rm9yUmVxdWVzdFNwYWNl
Q29tcGxldGlvbih0cmFuc2FjdGlvbiwgW3RoaXMsICZ0cmFuc2FjdGlvbiwgY2FsbGJhY2sgPSBX
VEZNb3ZlKGNhbGxiYWNrKV0oYXV0byYmIGVycm9yKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIGlm
IChlcnJvcikgewotICAgICAgICAgICAgICAgIGNhbGxiYWNrKFdURk1vdmUoKmVycm9yKSk7Cisg
ICAgICAgICAgICBpZiAoIWVycm9yLmlzTnVsbCgpKSB7CisgICAgICAgICAgICAgICAgY2FsbGJh
Y2soV1RGTW92ZShlcnJvcikpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIHRoaXMtPmFib3J0VHJhbnNhY3Rpb24odHJhbnNhY3Rpb24sIFdhaXRG
b3JQZW5kaW5nVGFza3M6Ok5vLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFz
ZS5oCmluZGV4IDUzYjIxZGZlNGQyMWRhNTVmZmNhNmYwNmZiMDZiMjI3NWMxZWNmOGQuLjE0MTgw
MWRhN2ZmZTU2MTlhNzEwZGEyZmIyNjk1NGRjNmNlZDJjNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFz
ZS5oCkBAIC0xNDEsMTEgKzE0MSwxMSBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBzY2hlZHVsZVNo
dXRkb3duRm9yQ2xvc2UoKTsKIAotICAgIHZvaWQgY3JlYXRlT2JqZWN0U3RvcmVBZnRlclF1b3Rh
Q2hlY2sodWludDY0X3QgdGFza1NpemUsIFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mLCBj
b25zdCBJREJPYmplY3RTdG9yZUluZm8mLCBFcnJvckNhbGxiYWNrKTsKLSAgICB2b2lkIHJlbmFt
ZU9iamVjdFN0b3JlQWZ0ZXJRdW90YUNoZWNrKHVpbnQ2NF90IHRhc2tTaXplLCBVbmlxdWVJREJE
YXRhYmFzZVRyYW5zYWN0aW9uJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIG5ld05hbWUsIEVycm9yQ2FsbGJhY2spOwotICAgIHZvaWQgY3JlYXRlSW5kZXhB
ZnRlclF1b3RhQ2hlY2sodWludDY0X3QgdGFza1NpemUsIFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNh
Y3Rpb24mLCBjb25zdCBJREJJbmRleEluZm8mLCBFcnJvckNhbGxiYWNrKTsKLSAgICB2b2lkIHJl
bmFtZUluZGV4QWZ0ZXJRdW90YUNoZWNrKHVpbnQ2NF90IHRhc2tTaXplLCBVbmlxdWVJREJEYXRh
YmFzZVRyYW5zYWN0aW9uJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCB1aW50NjRf
dCBpbmRleElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSwgRXJyb3JDYWxsYmFjayk7
Ci0gICAgdm9pZCBwdXRPckFkZEFmdGVyUXVvdGFDaGVjayh1aW50NjRfdCB0YXNrU2l6ZSwgY29u
c3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJLZXlEYXRhJiwgY29uc3QgSURCVmFsdWUmLCBJ
bmRleGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9kZSwgS2V5RGF0YUNhbGxiYWNrKTsKKyAg
ICB2b2lkIGNyZWF0ZU9iamVjdFN0b3JlQWZ0ZXJRdW90YUNoZWNrKHVpbnQ2NF90IHRhc2tTaXpl
LCBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiwgY29uc3QgSURCT2JqZWN0U3RvcmVJbmZv
JiwgRXJyb3JDYWxsYmFjaywgY29uc3QgSURCRXJyb3ImKTsKKyAgICB2b2lkIHJlbmFtZU9iamVj
dFN0b3JlQWZ0ZXJRdW90YUNoZWNrKHVpbnQ2NF90IHRhc2tTaXplLCBVbmlxdWVJREJEYXRhYmFz
ZVRyYW5zYWN0aW9uJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmIG5ld05hbWUsIEVycm9yQ2FsbGJhY2ssIGNvbnN0IElEQkVycm9yJik7CisgICAgdm9pZCBj
cmVhdGVJbmRleEFmdGVyUXVvdGFDaGVjayh1aW50NjRfdCB0YXNrU2l6ZSwgVW5pcXVlSURCRGF0
YWJhc2VUcmFuc2FjdGlvbiYsIGNvbnN0IElEQkluZGV4SW5mbyYsIEVycm9yQ2FsbGJhY2ssIGNv
bnN0IElEQkVycm9yJik7CisgICAgdm9pZCByZW5hbWVJbmRleEFmdGVyUXVvdGFDaGVjayh1aW50
NjRfdCB0YXNrU2l6ZSwgVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYsIHVpbnQ2NF90IG9i
amVjdFN0b3JlSWRlbnRpZmllciwgdWludDY0X3QgaW5kZXhJZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmIG5ld05hbWUsIEVycm9yQ2FsbGJhY2ssIGNvbnN0IElEQkVycm9yJik7CisgICAgdm9pZCBw
dXRPckFkZEFmdGVyUXVvdGFDaGVjayh1aW50NjRfdCB0YXNrU2l6ZSwgY29uc3QgSURCUmVxdWVz
dERhdGEmLCBjb25zdCBJREJLZXlEYXRhJiwgY29uc3QgSURCVmFsdWUmLCBJbmRleGVkREI6Ok9i
amVjdFN0b3JlT3ZlcndyaXRlTW9kZSwgS2V5RGF0YUNhbGxiYWNrLCBjb25zdCBJREJFcnJvciYp
OwogICAgIHZvaWQgZGVsZXRlUmVjb3JkQWZ0ZXJRdW90YUNoZWNrKGNvbnN0IElEQlJlcXVlc3RE
YXRhJiwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiwgRXJyb3JDYWxsYmFjayk7CiAKICAgICB2b2lk
IGRlbGV0ZU9iamVjdFN0b3JlQWZ0ZXJRdW90YUNoZWNrKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNh
Y3Rpb24mLCBjb25zdCBTdHJpbmcmIG9iamVjdFN0b3JlTmFtZSwgRXJyb3JDYWxsYmFjayk7CkBA
IC0xNjQsMTQgKzE2NCwxNCBAQCBwcml2YXRlOgogICAgIHZvaWQgcGVyZm9ybUNvbW1pdFRyYW5z
YWN0aW9uKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgY29uc3QgSURCUmVzb3VyY2VJZGVu
dGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIpOwogICAgIHZvaWQgcGVyZm9ybUFib3J0VHJh
bnNhY3Rpb24odWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBjb25zdCBJREJSZXNvdXJjZUlk
ZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllcik7CiAgICAgdm9pZCBiZWdpblRyYW5zYWN0
aW9uSW5CYWNraW5nU3RvcmUoY29uc3QgSURCVHJhbnNhY3Rpb25JbmZvJik7Ci0gICAgdm9pZCBw
ZXJmb3JtQ3JlYXRlT2JqZWN0U3RvcmUodWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBjb25z
dCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURC
T2JqZWN0U3RvcmVJbmZvJik7CisgICAgdm9pZCBwZXJmb3JtQ3JlYXRlT2JqZWN0U3RvcmUodWlu
dDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRy
YW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJiwgY29uc3QgSURC
RXJyb3ImKTsKICAgICB2b2lkIHBlcmZvcm1EZWxldGVPYmplY3RTdG9yZSh1aW50NjRfdCBjYWxs
YmFja0lkZW50aWZpZXIsIGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25J
ZGVudGlmaWVyLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIpOwotICAgIHZvaWQgcGVy
Zm9ybVJlbmFtZU9iamVjdFN0b3JlKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgY29uc3Qg
SURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IG9i
amVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuZXdOYW1lKTsKKyAgICB2b2lkIHBl
cmZvcm1SZW5hbWVPYmplY3RTdG9yZSh1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIGNvbnN0
IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBv
YmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSwgY29uc3QgSURCRXJy
b3ImKTsKICAgICB2b2lkIHBlcmZvcm1DbGVhck9iamVjdFN0b3JlKHVpbnQ2NF90IGNhbGxiYWNr
SWRlbnRpZmllciwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50
aWZpZXIsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllcik7Ci0gICAgdm9pZCBwZXJmb3Jt
Q3JlYXRlSW5kZXgodWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBjb25zdCBJREJSZXNvdXJj
ZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCSW5kZXhJbmZvJik7
CisgICAgdm9pZCBwZXJmb3JtQ3JlYXRlSW5kZXgodWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVy
LCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29u
c3QgSURCSW5kZXhJbmZvJiwgY29uc3QgSURCRXJyb3ImKTsKICAgICB2b2lkIHBlcmZvcm1EZWxl
dGVJbmRleCh1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIGNvbnN0IElEQlJlc291cmNlSWRl
bnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50
aWZpZXIsIHVpbnQ2NF90IGluZGV4SWRlbnRpZmllcik7Ci0gICAgdm9pZCBwZXJmb3JtUmVuYW1l
SW5kZXgodWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBjb25zdCBJREJSZXNvdXJjZUlkZW50
aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlm
aWVyLCB1aW50NjRfdCBpbmRleElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSk7Ci0g
ICAgdm9pZCBwZXJmb3JtUHV0T3JBZGQodWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBjb25z
dCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgdWludDY0X3Qg
b2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBJREJLZXlEYXRhJiwgY29uc3QgSURCVmFsdWUm
LCBJbmRleGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9kZSk7CisgICAgdm9pZCBwZXJmb3Jt
UmVuYW1lSW5kZXgodWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBjb25zdCBJREJSZXNvdXJj
ZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgdWludDY0X3Qgb2JqZWN0U3RvcmVJ
ZGVudGlmaWVyLCB1aW50NjRfdCBpbmRleElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFt
ZSwgY29uc3QgSURCRXJyb3ImKTsKKyAgICB2b2lkIHBlcmZvcm1QdXRPckFkZCh1aW50NjRfdCBj
YWxsYmFja0lkZW50aWZpZXIsIGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rp
b25JZGVudGlmaWVyLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IElEQktl
eURhdGEmLCBjb25zdCBJREJWYWx1ZSYsIEluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVN
b2RlLCBjb25zdCBJREJFcnJvciYpOwogICAgIHZvaWQgcGVyZm9ybUdldFJlY29yZCh1aW50NjRf
dCBjYWxsYmFja0lkZW50aWZpZXIsIGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNh
Y3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IElE
QktleVJhbmdlRGF0YSYsIElEQkdldFJlY29yZERhdGFUeXBlKTsKICAgICB2b2lkIHBlcmZvcm1H
ZXRBbGxSZWNvcmRzKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgY29uc3QgSURCUmVzb3Vy
Y2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQkdldEFsbFJlY29y
ZHNEYXRhJik7CiAgICAgdm9pZCBwZXJmb3JtR2V0SW5kZXhSZWNvcmQodWludDY0X3QgY2FsbGJh
Y2tJZGVudGlmaWVyLCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRl
bnRpZmllciwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCB1aW50NjRfdCBpbmRleElk
ZW50aWZpZXIsIEluZGV4ZWREQjo6SW5kZXhSZWNvcmRUeXBlLCBjb25zdCBJREJLZXlSYW5nZURh
dGEmKTsKQEAgLTI0Nyw4ICsyNDcsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgbWF5YmVGaW5pc2hI
YXJkQ2xvc2UoKTsKICAgICBib29sIGlzRG9uZVdpdGhIYXJkQ2xvc2UoKTsKIAotICAgIHZvaWQg
cmVxdWVzdFNwYWNlKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mLCB1aW50NjRfdCB0YXNr
U2l6ZSwgY29uc3QgY2hhciogZXJyb3JNZXNzYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9w
dGlvbmFsPElEQkVycm9yPiYmKT4mJik7Ci0gICAgdm9pZCB3YWl0Rm9yUmVxdWVzdFNwYWNlQ29t
cGxldGlvbihVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChPcHRpb25hbDxJREJFcnJvcj4mJik+JiYpOworICAgIHZvaWQgcmVxdWVzdFNwYWNlKFVu
aXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mLCB1aW50NjRfdCB0YXNrU2l6ZSwgY29uc3QgY2hh
ciogZXJyb3JNZXNzYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElEQkVycm9yJiYpPiYmKTsK
KyAgICB2b2lkIHdhaXRGb3JSZXF1ZXN0U3BhY2VDb21wbGV0aW9uKFVuaXF1ZUlEQkRhdGFiYXNl
VHJhbnNhY3Rpb24mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElEQkVycm9yJiYpPiYmKTsKICAg
ICB2b2lkIHVwZGF0ZVNwYWNlVXNlZElmTmVlZGVkKE9wdGlvbmFsPHVpbnQ2NF90PiBvcHRpb25h
bENhbGxiYWNrSWRlbnRpZmllciA9IFdURjo6bnVsbG9wdCk7CiAKICAgICBSZWY8SURCU2VydmVy
PiBtX3NlcnZlcjsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwppbmRleCAwNmY3NzgwNjU0ZjBiYTFkMWZkNzFiNDViNGU4OTA5OGM3YTM3
MDViLi5kMDM2MDQwYjliNzdjMmZkY2QyY2I2YWYxZjRkM2MyOWQzZGYwYzc0IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTQgQEAKKzIwMTktMTAtMDcgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+
CisKKyAgICAgICAgQVNTRVJUSU9OIEZBSUxFRDogbV90cmFuc2FjdGlvbk9wZXJhdGlvbnNJblBy
b2dyZXNzUXVldWUuZmlyc3QoKSA9PSAmb3BlcmF0aW9uIGluIElEQlRyYW5zYWN0aW9uOjpvcGVy
YXRpb25Db21wbGV0ZWRPbkNsaWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjAyNTUyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleCBDaHJpc3Rl
bnNlbi4KKworICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9zdG9yYWdlLWxp
bWl0LmpzOgorICAgICAgICAob25PcGVuU3VjY2Vzcy5yZXF1ZXN0Lm9uZXJyb3IpOgorICAgICAg
ICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3N0b3JhZ2UtbGltaXQtZXhwZWN0ZWQudHh0OgorCiAyMDE5
LTEwLTA3ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgRE9NQ2Fj
aGUgc2hvdWxkIG5vdCBwcmV2ZW50IHBhZ2VzIGZyb20gZW50ZXJpbmcgdGhlIGJhY2svZm9yd2Fy
ZCBjYWNoZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3Vy
Y2VzL3N0b3JhZ2UtbGltaXQuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNv
dXJjZXMvc3RvcmFnZS1saW1pdC5qcwppbmRleCA4MWJlNmQyMDk2MjgxYTViZmI3ODcwMjk1MDFk
YjBlMTM1ZGFmMGRjLi5mMWEzNmZjM2ZiZDM2ZjA5ZmMwOWI5MTY1YmIzZDY2YTNkMThjYzMzIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvc3RvcmFn
ZS1saW1pdC5qcworKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMv
c3RvcmFnZS1saW1pdC5qcwpAQCAtMjMsOCArMjMsMTYgQEAgZnVuY3Rpb24gb25PcGVuU3VjY2Vz
cyhldmVudCkKICAgICBwcmVhbWJsZShldmVudCk7CiAgICAgZXZhbEFuZExvZygiZGIgPSBldmVu
dC50YXJnZXQucmVzdWx0Iik7CiAgICAgZXZhbEFuZExvZygic3RvcmUgPSBkYi50cmFuc2FjdGlv
bignc3RvcmUnLCAncmVhZHdyaXRlJykub2JqZWN0U3RvcmUoJ3N0b3JlJykiKTsKKworICAgIC8v
IFNtYWxsIGFkZCBzaG91bGQgc3VjY2VlZC4KKyAgICBldmFsQW5kTG9nKCJhZGRDb3VudCA9IDAi
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8PSAxMDsgaSArKykKKyAgICAgICAgZXZhbEFuZExv
Zygic3RvcmUuYWRkKG5ldyBVaW50OEFycmF5KDEpLCAiICsgaSArICIpLm9uc3VjY2VzcyA9ICgp
PT4geyArK2FkZENvdW50OyB9Iik7CisKKwkvLyBCaWcgYWRkIHNob3VsZCBmYWlsLgogICAgIGV2
YWxBbmRMb2coInJlcXVlc3QgPSBzdG9yZS5hZGQobmV3IFVpbnQ4QXJyYXkoIiArIChxdW90YSAr
IDEpICsgIiksIDApIik7CiAgICAgcmVxdWVzdC5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsK
KyAgICAgICAgc2hvdWxkQmUoImFkZENvdW50IiwgIjEwIik7CiAgICAgICAgIHNob3VsZEJlVHJ1
ZSgiJ2Vycm9yJyBpbiByZXF1ZXN0Iik7CiAgICAgICAgIHNob3VsZEJlKCJyZXF1ZXN0LmVycm9y
LmNvZGUiLCAiRE9NRXhjZXB0aW9uLlFVT1RBX0VYQ0VFREVEX0VSUiIpOwogICAgICAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoInJlcXVlc3QuZXJyb3IubmFtZSIsICJRdW90YUV4Y2VlZGVkRXJy
b3IiKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3N0b3JhZ2Ut
bGltaXQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvc3RvcmFn
ZS1saW1pdC1leHBlY3RlZC50eHQKaW5kZXggYTRjZjZhOTVlNzM2NDJhMzlmM2ZkMGUyMmYzYjFh
YjA5ZmY3NDlmNy4uOWE3NDUyNjhkMWVjODcyMWVmZDhhMTI2ZGMxYjZiYjZlMTI5MTYwMSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvc3RvcmFnZS1saW1pdC1leHBl
Y3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvc3RvcmFnZS1saW1p
dC1leHBlY3RlZC50eHQKQEAgLTE1LDcgKzE1LDE5IEBAIHN0b3JlID0gZGIuY3JlYXRlT2JqZWN0
U3RvcmUoJ3N0b3JlJykKIG9uT3BlblN1Y2Nlc3MoKToKIGRiID0gZXZlbnQudGFyZ2V0LnJlc3Vs
dAogc3RvcmUgPSBkYi50cmFuc2FjdGlvbignc3RvcmUnLCAncmVhZHdyaXRlJykub2JqZWN0U3Rv
cmUoJ3N0b3JlJykKK2FkZENvdW50ID0gMAorc3RvcmUuYWRkKG5ldyBVaW50OEFycmF5KDEpLCAx
KS5vbnN1Y2Nlc3MgPSAoKT0+IHsgKythZGRDb3VudDsgfQorc3RvcmUuYWRkKG5ldyBVaW50OEFy
cmF5KDEpLCAyKS5vbnN1Y2Nlc3MgPSAoKT0+IHsgKythZGRDb3VudDsgfQorc3RvcmUuYWRkKG5l
dyBVaW50OEFycmF5KDEpLCAzKS5vbnN1Y2Nlc3MgPSAoKT0+IHsgKythZGRDb3VudDsgfQorc3Rv
cmUuYWRkKG5ldyBVaW50OEFycmF5KDEpLCA0KS5vbnN1Y2Nlc3MgPSAoKT0+IHsgKythZGRDb3Vu
dDsgfQorc3RvcmUuYWRkKG5ldyBVaW50OEFycmF5KDEpLCA1KS5vbnN1Y2Nlc3MgPSAoKT0+IHsg
KythZGRDb3VudDsgfQorc3RvcmUuYWRkKG5ldyBVaW50OEFycmF5KDEpLCA2KS5vbnN1Y2Nlc3Mg
PSAoKT0+IHsgKythZGRDb3VudDsgfQorc3RvcmUuYWRkKG5ldyBVaW50OEFycmF5KDEpLCA3KS5v
bnN1Y2Nlc3MgPSAoKT0+IHsgKythZGRDb3VudDsgfQorc3RvcmUuYWRkKG5ldyBVaW50OEFycmF5
KDEpLCA4KS5vbnN1Y2Nlc3MgPSAoKT0+IHsgKythZGRDb3VudDsgfQorc3RvcmUuYWRkKG5ldyBV
aW50OEFycmF5KDEpLCA5KS5vbnN1Y2Nlc3MgPSAoKT0+IHsgKythZGRDb3VudDsgfQorc3RvcmUu
YWRkKG5ldyBVaW50OEFycmF5KDEpLCAxMCkub25zdWNjZXNzID0gKCk9PiB7ICsrYWRkQ291bnQ7
IH0KIHJlcXVlc3QgPSBzdG9yZS5hZGQobmV3IFVpbnQ4QXJyYXkoNDA5NjAxKSwgMCkKK1BBU1Mg
YWRkQ291bnQgaXMgMTAKIFBBU1MgJ2Vycm9yJyBpbiByZXF1ZXN0IGlzIHRydWUKIFBBU1MgcmVx
dWVzdC5lcnJvci5jb2RlIGlzIERPTUV4Y2VwdGlvbi5RVU9UQV9FWENFRURFRF9FUlIKIFBBU1Mg
cmVxdWVzdC5lcnJvci5uYW1lIGlzICJRdW90YUV4Y2VlZGVkRXJyb3IiCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>