<?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>178102</bug_id>
          
          <creation_ts>2017-10-09 17:09:23 -0700</creation_ts>
          <short_desc>Replace copyKeysToVector/copyValuesToVector with copyToVector(map.keys())/copyToVector(map.values())</short_desc>
          <delta_ts>2018-01-19 10:11:19 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>181771</dependson>
          <blocked>181863</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1358524</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-10-09 17:09:23 -0700</bug_when>
    <thetext>Replace copyKeysToVector/copyValuesToVector with copyToVector(map.keys())/copyToVector(map.values())</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1358528</commentid>
    <comment_count>1</comment_count>
      <attachid>323249</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-10-09 17:15:24 -0700</bug_when>
    <thetext>Created attachment 323249
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1358533</commentid>
    <comment_count>2</comment_count>
      <attachid>323251</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-10-09 17:22:37 -0700</bug_when>
    <thetext>Created attachment 323251
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1358610</commentid>
    <comment_count>3</comment_count>
      <attachid>323273</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-10-09 20:01:57 -0700</bug_when>
    <thetext>Created attachment 323273
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1358625</commentid>
    <comment_count>4</comment_count>
      <attachid>323277</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-10-09 20:25:17 -0700</bug_when>
    <thetext>Created attachment 323277
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1358768</commentid>
    <comment_count>5</comment_count>
      <attachid>323309</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-10-10 08:20:34 -0700</bug_when>
    <thetext>Created attachment 323309
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1358933</commentid>
    <comment_count>6</comment_count>
      <attachid>323309</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-10-10 15:13:11 -0700</bug_when>
    <thetext>Comment on attachment 323309
Patch

Clearing flags on attachment: 323309

Committed r223149: &lt;http://trac.webkit.org/changeset/223149&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1358934</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-10-10 15:13:12 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1358935</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-10-10 15:14:01 -0700</bug_when>
    <thetext>&lt;rdar://problem/34920783&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1390280</commentid>
    <comment_count>9</comment_count>
      <attachid>323309</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-01-17 16:32:16 -0800</bug_when>
    <thetext>Comment on attachment 323309
Patch

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

&gt; Source/WebKit/UIProcess/WebProcessProxy.cpp:625
&gt; +    auto pages = copyToVector(m_pageMap.values());

This used to ref the pages and now it no longer does (rdar://problem/36566237).</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>323249</attachid>
            <date>2017-10-09 17:15:24 -0700</date>
            <delta_ts>2017-10-09 17:22:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178102-20171009171524.patch</filename>
            <type>text/plain</type>
            <size>42668</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjIzMTA4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBA
CisyMDE3LTEwLTA5ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVw
bGFjZSBjb3B5S2V5c1RvVmVjdG9yL2NvcHlWYWx1ZXNUb1ZlY3RvciB3aXRoIGNvcHlUb1ZlY3Rv
cihtYXAua2V5cygpKS9jb3B5VG9WZWN0b3IobWFwLnZhbHVlcygpKQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4MTAyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50OjpjbGVhckluc3BlY3RvckJyZWFrcG9pbnRTdGF0ZSk6CisKIDIwMTctMTAtMDkg
IFJvYmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4KIAogICAgICAgICBSZWZhY3Rv
ciB0aGUgaW5saW5lciB0byBzaW1wbGlmeSBibG9jayBsaW5raW5nCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAkocmV2aXNpb24gMjIzMDY1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEwNzEsOSArMTA3MSw3IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJB
Z2VudDo6YnJlYWtQcm9ncmEKIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y2xlYXJJbnNw
ZWN0b3JCcmVha3BvaW50U3RhdGUoKQogewogICAgIEVycm9yU3RyaW5nIGR1bW15RXJyb3I7Ci0g
ICAgVmVjdG9yPFN0cmluZz4gYnJlYWtwb2ludElkZW50aWZpZXJzOwotICAgIGNvcHlLZXlzVG9W
ZWN0b3IobV9icmVha3BvaW50SWRlbnRpZmllclRvRGVidWdTZXJ2ZXJCcmVha3BvaW50SURzLCBi
cmVha3BvaW50SWRlbnRpZmllcnMpOwotICAgIGZvciAoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVy
IDogYnJlYWtwb2ludElkZW50aWZpZXJzKQorICAgIGZvciAoY29uc3QgU3RyaW5nJiBpZGVudGlm
aWVyIDogY29weVRvVmVjdG9yKG1fYnJlYWtwb2ludElkZW50aWZpZXJUb0RlYnVnU2VydmVyQnJl
YWtwb2ludElEcy5rZXlzKCkpKQogICAgICAgICByZW1vdmVCcmVha3BvaW50KGR1bW15RXJyb3Is
IGlkZW50aWZpZXIpOwogCiAgICAgbV9qYXZhU2NyaXB0QnJlYWtwb2ludHMuY2xlYXIoKTsKSW5k
ZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hhbmdl
TG9nCShyZXZpc2lvbiAyMjMwNjUpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDE3LTEwLTA5ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgUmVwbGFjZSBjb3B5S2V5c1RvVmVjdG9yL2NvcHlWYWx1ZXNUb1Zl
Y3RvciB3aXRoIGNvcHlUb1ZlY3RvcihtYXAua2V5cygpKS9jb3B5VG9WZWN0b3IobWFwLnZhbHVl
cygpKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4
MTAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3
dGYvSGFzaE1hcC5oOgorICAgICAgICAoV1RGOjpjb3B5S2V5c1RvVmVjdG9yKTogRGVsZXRlZC4K
KyAgICAgICAgKFdURjo6Y29weVZhbHVlc1RvVmVjdG9yKTogRGVsZXRlZC4KKyAgICAgICAgCisg
ICAgICAgICAgICBSZW1vdmUgY29weUtleXNUb1ZlY3RvciBhbmQgY29weVZhbHVlc1RvVmVjdG9y
IHdoaWNoIGFyZSBubyBsb25nZXIgdXNlZC4KKwogMjAxNy0xMC0wOSAgU2FtIFdlaW5pZyAgPHNh
bUB3ZWJraXQub3JnPgogCiAgICAgICAgIE1ha2UgSGFzaE1hcDo6a2V5cygpIGFuZCBIYXNoTWFw
Ojp2YWx1ZXMoKSB3b3JrIHdpdGggV1RGOjptYXAvV1RGOjpjb3B5VG9WZWN0b3IKSW5kZXg6IFNv
dXJjZS9XVEYvd3RmL0hhc2hNYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9IYXNo
TWFwLmgJKHJldmlzaW9uIDIyMzA2NSkKKysrIFNvdXJjZS9XVEYvd3RmL0hhc2hNYXAuaAkod29y
a2luZyBjb3B5KQpAQCAtNTg5LDMyICs1ODksNiBAQCBpbmxpbmUgdm9pZCBjb3B5VG9WZWN0b3Io
Y29uc3QgSGFzaE1hcDxUCiAgICAgICAgIHZlY3RvcltpXSA9IHsgKCppdCkua2V5LCAoKml0KS52
YWx1ZSB9OwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBW
LCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYLCB0eXBlbmFtZSBZPgotaW5saW5lIHZvaWQgY29weUtl
eXNUb1ZlY3Rvcihjb25zdCBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+JiBjb2xsZWN0aW9uLCBZJiB2
ZWN0b3IpCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+Ojpj
b25zdF9pdGVyYXRvcjo6S2V5cyBpdGVyYXRvcjsKLSAgICAKLSAgICB2ZWN0b3IucmVzaXplKGNv
bGxlY3Rpb24uc2l6ZSgpKTsKLSAgICAKLSAgICBpdGVyYXRvciBpdCA9IGNvbGxlY3Rpb24uYmVn
aW4oKS5rZXlzKCk7Ci0gICAgaXRlcmF0b3IgZW5kID0gY29sbGVjdGlvbi5lbmQoKS5rZXlzKCk7
Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaXQgIT0gZW5kOyArK2l0LCArK2kpCi0gICAgICAg
IHZlY3RvcltpXSA9ICppdDsKLX0gIAotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBV
LCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYLCB0eXBlbmFtZSBZPgotaW5saW5l
IHZvaWQgY29weVZhbHVlc1RvVmVjdG9yKGNvbnN0IEhhc2hNYXA8VCwgVSwgViwgVywgWD4mIGNv
bGxlY3Rpb24sIFkmIHZlY3RvcikKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEhhc2hNYXA8VCwg
VSwgViwgVywgWD46OmNvbnN0X2l0ZXJhdG9yOjpWYWx1ZXMgaXRlcmF0b3I7Ci0gICAgCi0gICAg
dmVjdG9yLnJlc2l6ZShjb2xsZWN0aW9uLnNpemUoKSk7Ci0gICAgCi0gICAgaXRlcmF0b3IgaXQg
PSBjb2xsZWN0aW9uLmJlZ2luKCkudmFsdWVzKCk7Ci0gICAgaXRlcmF0b3IgZW5kID0gY29sbGVj
dGlvbi5lbmQoKS52YWx1ZXMoKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpdCAhPSBlbmQ7
ICsraXQsICsraSkKLSAgICAgICAgdmVjdG9yW2ldID0gKml0OwotfSAgIAotCiB9IC8vIG5hbWVz
cGFjZSBXVEYKIAogdXNpbmcgV1RGOjpIYXNoTWFwOwpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24g
MjIzMDY1KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsNTkgQEAKKzIwMTctMTAtMDkgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KKwor
ICAgICAgICBSZXBsYWNlIGNvcHlLZXlzVG9WZWN0b3IvY29weVZhbHVlc1RvVmVjdG9yIHdpdGgg
Y29weVRvVmVjdG9yKG1hcC5rZXlzKCkpL2NvcHlUb1ZlY3RvcihtYXAudmFsdWVzKCkpCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzgxMDIKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1vZHVsZXMvZ2Vv
bG9jYXRpb24vR2VvbG9jYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246
OldhdGNoZXJzOjpnZXROb3RpZmllcnNWZWN0b3IgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5z
YWN0aW9uOjpjb25uZWN0aW9uQ2xvc2VkRnJvbVNlcnZlcik6CisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Qcm94eS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eTo6Y29ubmVjdGlvblRvU2VydmVyTG9zdCk6
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmltbWVk
aWF0ZUNsb3NlRm9yVXNlckRlbGV0ZSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9N
ZWRpYVN0cmVhbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbTo6Z2V0VHJhY2tz
IGNvbnN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OndpbmRvd1Byb3hpZXMpOgorICAgICAg
ICAqIGNzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjppdGVtIGNvbnN0KToKKyAgICAgICAgKiBk
b20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnByZXBhcmVGb3JE
ZXN0cnVjdGlvbik6CisgICAgICAgICogZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OnJlbW92ZU1hcmtl
cnMpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JXb3JrZXJBZ2VudDo6ZGlzY29ubmVjdEZyb21BbGxXb3Jr
ZXJJbnNwZWN0b3JQcm94aWVzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNl
c0RhdGEuY3BwOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpjYW5jZWxBbGwpOgorICAgICAgICAoV2ViQ29yZTo6c2V0QWxsRGVmZXJzTG9h
ZGluZyk6CisgICAgICAgIChXZWJDb3JlOjphcmVBbGxMb2FkZXJzUGFnZUNhY2hlQWNjZXB0YWJs
ZSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1lbW9yeUNhY2hlOjpmb3JFYWNoU2Vzc2lvblJlc291cmNlKToKKyAgICAgICAgKiBs
b2FkZXIvbWFjL0RvY3VtZW50TG9hZGVyTWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNjaGVk
dWxlQWxsKToKKyAgICAgICAgKFdlYkNvcmU6OnVuc2NoZWR1bGVBbGwpOgorICAgICAgICAqIHBh
Z2UvUmVzb3VyY2VVc2FnZVRocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVVz
YWdlVGhyZWFkOjpub3RpZnlPYnNlcnZlcnMpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtUHJpdmF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVh
bVByaXZhdGU6OnRyYWNrcyBjb25zdCk6CisgICAgICAgIAorICAgICAgICAgICAgUmVwbGFjZSBj
b3B5S2V5c1RvVmVjdG9yIC8gY29weVZhbHVlc1RvVmVjdG9yIHdpdGggY29weVRvVmVjdG9yKG1h
cC5rZXlzKCkpIC8gY29weVRvVmVjdG9yKG1hcC52YWx1ZXMoKSkgCisKKzIwMTctMTAtMDkgIFNh
bSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBNYWtlIEhhc2hNYXA6OmtleXMo
KSBhbmQgSGFzaE1hcDo6dmFsdWVzKCkgd29yayB3aXRoIFdURjo6bWFwL1dURjo6Y29weVRvVmVj
dG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzgw
NzIKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVNlbGVjdGlvbkdyb3VwQVZGT2JqQy5oOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakM6Om9wdGlvbnMpOgor
ICAgICAgICAKKyAgICAgICAgICAgIFVwZGF0ZSBmb3IgdHlwZSBjaGFuZ2UgZm9yIEhhc2hNYXA6
OnZhbHVlcygpLgorICAgICAgICAgICAgCiAyMDE3LTEwLTA5ICBEZWFuIEphY2tzb24gIDxkaW5v
QGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViR0xdIFRoaXJkIElPU3VyZmFjZSBidWZmZXIgbWln
aHQgYmUgYWxsb2NhdGVkIHdpdGggdGhlIHdyb25nIHNpemUKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uY3BwCShyZXZpc2lvbiAy
MjMwNjUpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9u
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI3LDcgKzEyNyw3IEBAIGJvb2wgR2VvbG9jYXRpb246
OldhdGNoZXJzOjppc0VtcHR5KCkgY28KIAogdm9pZCBHZW9sb2NhdGlvbjo6V2F0Y2hlcnM6Omdl
dE5vdGlmaWVyc1ZlY3RvcihHZW9Ob3RpZmllclZlY3RvciYgY29weSkgY29uc3QKIHsKLSAgICBj
b3B5VmFsdWVzVG9WZWN0b3IobV9pZFRvTm90aWZpZXJNYXAsIGNvcHkpOworICAgIGNvcHkgPSBj
b3B5VG9WZWN0b3IobV9pZFRvTm90aWZpZXJNYXAudmFsdWVzKCkpOwogfQogCiBSZWY8R2VvbG9j
YXRpb24+IEdlb2xvY2F0aW9uOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9u
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJU
cmFuc2FjdGlvbi5jcHAJKHJldmlzaW9uIDIyMzA2NSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM2OCwx
MCArMTM2OCw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OmNvbm5lY3Rpb25DbG9zZWRGcm8KIAog
ICAgIGFib3J0SW5Qcm9ncmVzc09wZXJhdGlvbnMoZXJyb3IpOwogCi0gICAgVmVjdG9yPFJlZlB0
cjxJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uPj4gb3BlcmF0aW9uczsKLSAgICBjb3B5
VmFsdWVzVG9WZWN0b3IobV90cmFuc2FjdGlvbk9wZXJhdGlvbk1hcCwgb3BlcmF0aW9ucyk7Ci0K
LSAgICBmb3IgKGF1dG8mIG9wZXJhdGlvbiA6IG9wZXJhdGlvbnMpIHsKKyAgICBmb3IgKGF1dG8m
IG9wZXJhdGlvbiA6IGNvcHlUb1ZlY3RvcihtX3RyYW5zYWN0aW9uT3BlcmF0aW9uTWFwLnZhbHVl
cygpKSkgewogICAgICAgICBtX2N1cnJlbnRseUNvbXBsZXRpbmdSZXF1ZXN0ID0gbnVsbHB0cjsK
ICAgICAgICAgbV90cmFuc2FjdGlvbk9wZXJhdGlvbnNJblByb2dyZXNzUXVldWUuYXBwZW5kKG9w
ZXJhdGlvbi5nZXQoKSk7CiAgICAgICAgIEFTU0VSVChtX3RyYW5zYWN0aW9uT3BlcmF0aW9uc0lu
UHJvZ3Jlc3NRdWV1ZS5maXJzdCgpID09IG9wZXJhdGlvbi5nZXQoKSk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblByb3h5LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURC
Q29ubmVjdGlvblByb3h5LmNwcAkocmV2aXNpb24gMjIzMDY1KQorKysgU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Qcm94eS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQyMiw3ICs0MjIsNyBAQCB2b2lkIElEQkNvbm5lY3Rpb25Qcm94eTo6Y29ubmVj
dGlvblRvU2VyCiAgICAgVmVjdG9yPHVpbnQ2NF90PiBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlm
aWVyczsKICAgICB7CiAgICAgICAgIExvY2tlcjxMb2NrPiBsb2NrZXIobV9kYXRhYmFzZUNvbm5l
Y3Rpb25NYXBMb2NrKTsKLSAgICAgICAgY29weUtleXNUb1ZlY3RvcihtX2RhdGFiYXNlQ29ubmVj
dGlvbk1hcCwgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcnMpOworICAgICAgICBkYXRhYmFz
ZUNvbm5lY3Rpb25JZGVudGlmaWVycyA9IGNvcHlUb1ZlY3RvcihtX2RhdGFiYXNlQ29ubmVjdGlv
bk1hcC5rZXlzKCkpOwogICAgIH0KIAogICAgIGZvciAoYXV0byBjb25uZWN0aW9uSWRlbnRpZmll
ciA6IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXJzKSB7CkBAIC00NDEsNyArNDQxLDcgQEAg
dm9pZCBJREJDb25uZWN0aW9uUHJveHk6OmNvbm5lY3Rpb25Ub1NlcgogICAgIFZlY3RvcjxJREJS
ZXNvdXJjZUlkZW50aWZpZXI+IG9wZW5EQlJlcXVlc3RJZGVudGlmaWVyczsKICAgICB7CiAgICAg
ICAgIExvY2tlcjxMb2NrPiBsb2NrZXIobV9vcGVuREJSZXF1ZXN0TWFwTG9jayk7Ci0gICAgICAg
IGNvcHlLZXlzVG9WZWN0b3IobV9vcGVuREJSZXF1ZXN0TWFwLCBvcGVuREJSZXF1ZXN0SWRlbnRp
ZmllcnMpOworICAgICAgICBvcGVuREJSZXF1ZXN0SWRlbnRpZmllcnMgPSBjb3B5VG9WZWN0b3Io
bV9vcGVuREJSZXF1ZXN0TWFwLmtleXMoKSk7CiAgICAgfQogCiAgICAgZm9yIChhdXRvJiByZXF1
ZXN0SWRlbnRpZmllciA6IG9wZW5EQlJlcXVlc3RJZGVudGlmaWVycykgewpJbmRleDogU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5p
cXVlSURCRGF0YWJhc2UuY3BwCShyZXZpc2lvbiAyMjMwNjUpCisrKyBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xODEzLDkgKzE4MTMsNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjppbW1lZGlh
dGVDbG9zZUZvCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAogICAgIC8vIEVycm9yIG91
dCBhbGwgdHJhbnNhY3Rpb25zCi0gICAgVmVjdG9yPElEQlJlc291cmNlSWRlbnRpZmllcj4gaW5Q
cm9ncmVzc0lkZW50aWZpZXJzOwotICAgIGNvcHlLZXlzVG9WZWN0b3IobV9pblByb2dyZXNzVHJh
bnNhY3Rpb25zLCBpblByb2dyZXNzSWRlbnRpZmllcnMpOwotICAgIGZvciAoYXV0byYgaWRlbnRp
ZmllciA6IGluUHJvZ3Jlc3NJZGVudGlmaWVycykKKyAgICBmb3IgKGF1dG8mIGlkZW50aWZpZXIg
OiBjb3B5VG9WZWN0b3IobV9pblByb2dyZXNzVHJhbnNhY3Rpb25zLmtleXMoKSkpCiAgICAgICAg
IG1faW5Qcm9ncmVzc1RyYW5zYWN0aW9ucy5nZXQoaWRlbnRpZmllciktPmFib3J0V2l0aG91dENh
bGxiYWNrKCk7CiAKICAgICBBU1NFUlQobV9pblByb2dyZXNzVHJhbnNhY3Rpb25zLmlzRW1wdHko
KSk7CkBAIC0xODI1LDI4ICsxODIzLDIwIEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmltbWVk
aWF0ZUNsb3NlRm8KICAgICBtX29iamVjdFN0b3JlV3JpdGVUcmFuc2FjdGlvbnMuY2xlYXIoKTsK
IAogICAgIC8vIEVycm9yIG91dCBhbGwgcGVuZGluZyBjYWxsYmFja3MKLSAgICBWZWN0b3I8dWlu
dDY0X3Q+IGNhbGxiYWNrSWRlbnRpZmllcnM7CiAgICAgSURCRXJyb3IgZXJyb3IgPSBJREJFcnJv
cjo6dXNlckRlbGV0ZUVycm9yKCk7CiAgICAgSURCS2V5RGF0YSBrZXlEYXRhOwogICAgIElEQkdl
dFJlc3VsdCBnZXRSZXN1bHQ7CiAKLSAgICBjb3B5S2V5c1RvVmVjdG9yKG1fZXJyb3JDYWxsYmFj
a3MsIGNhbGxiYWNrSWRlbnRpZmllcnMpOwotICAgIGZvciAoYXV0byBpZGVudGlmaWVyIDogY2Fs
bGJhY2tJZGVudGlmaWVycykKKyAgICBmb3IgKGF1dG8gaWRlbnRpZmllciA6IGNvcHlUb1ZlY3Rv
cihtX2Vycm9yQ2FsbGJhY2tzLmtleXMoKSkpCiAgICAgICAgIHBlcmZvcm1FcnJvckNhbGxiYWNr
KGlkZW50aWZpZXIsIGVycm9yKTsKIAotICAgIGNhbGxiYWNrSWRlbnRpZmllcnMuY2xlYXIoKTsK
LSAgICBjb3B5S2V5c1RvVmVjdG9yKG1fa2V5RGF0YUNhbGxiYWNrcywgY2FsbGJhY2tJZGVudGlm
aWVycyk7Ci0gICAgZm9yIChhdXRvIGlkZW50aWZpZXIgOiBjYWxsYmFja0lkZW50aWZpZXJzKQor
ICAgIGZvciAoYXV0byBpZGVudGlmaWVyIDogY29weVRvVmVjdG9yKG1fa2V5RGF0YUNhbGxiYWNr
cy5rZXlzKCkpKQogICAgICAgICBwZXJmb3JtS2V5RGF0YUNhbGxiYWNrKGlkZW50aWZpZXIsIGVy
cm9yLCBrZXlEYXRhKTsKIAotICAgIGNhbGxiYWNrSWRlbnRpZmllcnMuY2xlYXIoKTsKLSAgICBj
b3B5S2V5c1RvVmVjdG9yKG1fZ2V0UmVzdWx0Q2FsbGJhY2tzLCBjYWxsYmFja0lkZW50aWZpZXJz
KTsKLSAgICBmb3IgKGF1dG8gaWRlbnRpZmllciA6IGNhbGxiYWNrSWRlbnRpZmllcnMpCisgICAg
Zm9yIChhdXRvIGlkZW50aWZpZXIgOiBjb3B5VG9WZWN0b3IobV9nZXRSZXN1bHRDYWxsYmFja3Mu
a2V5cygpKSkKICAgICAgICAgcGVyZm9ybUdldFJlc3VsdENhbGxiYWNrKGlkZW50aWZpZXIsIGVy
cm9yLCBnZXRSZXN1bHQpOwogCi0gICAgY2FsbGJhY2tJZGVudGlmaWVycy5jbGVhcigpOwotICAg
IGNvcHlLZXlzVG9WZWN0b3IobV9jb3VudENhbGxiYWNrcywgY2FsbGJhY2tJZGVudGlmaWVycyk7
Ci0gICAgZm9yIChhdXRvIGlkZW50aWZpZXIgOiBjYWxsYmFja0lkZW50aWZpZXJzKQorICAgIGZv
ciAoYXV0byBpZGVudGlmaWVyIDogY29weVRvVmVjdG9yKG1fY291bnRDYWxsYmFja3Mua2V5cygp
KSkKICAgICAgICAgcGVyZm9ybUNvdW50Q2FsbGJhY2soaWRlbnRpZmllciwgZXJyb3IsIDApOwog
CiAgICAgLy8gRXJyb3Igb3V0IGFsbCBJREJPcGVuREJSZXF1ZXN0cwpAQCAtMTg2MSw3ICsxODUx
LDcgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6aW1tZWRpYXRlQ2xvc2VGbwogICAgIG1fcGVu
ZGluZ09wZW5EQlJlcXVlc3RzLmNsZWFyKCk7CiAKICAgICAvLyBDbG9zZSBhbGwgb3BlbiBjb25u
ZWN0aW9ucwotICAgIExpc3RIYXNoU2V0PFJlZlB0cjxVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rp
b24+PiBvcGVuRGF0YWJhc2VDb25uZWN0aW9ucyA9IG1fb3BlbkRhdGFiYXNlQ29ubmVjdGlvbnM7
CisgICAgYXV0byBvcGVuRGF0YWJhc2VDb25uZWN0aW9ucyA9IG1fb3BlbkRhdGFiYXNlQ29ubmVj
dGlvbnM7CiAgICAgZm9yIChhdXRvJiBjb25uZWN0aW9uIDogb3BlbkRhdGFiYXNlQ29ubmVjdGlv
bnMpCiAgICAgICAgIGNvbm5lY3Rpb25DbG9zZWRGcm9tU2VydmVyKCpjb25uZWN0aW9uKTsKIApJ
bmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbS5jcHAJKHJldmlzaW9uIDIyMzA2NSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzcsMTEgKzE3Nyw3
IEBAIE1lZGlhU3RyZWFtVHJhY2tWZWN0b3IgTWVkaWFTdHJlYW06OmdldFYKIAogTWVkaWFTdHJl
YW1UcmFja1ZlY3RvciBNZWRpYVN0cmVhbTo6Z2V0VHJhY2tzKCkgY29uc3QKIHsKLSAgICBNZWRp
YVN0cmVhbVRyYWNrVmVjdG9yIHRyYWNrczsKLSAgICB0cmFja3MucmVzZXJ2ZUNhcGFjaXR5KG1f
dHJhY2tTZXQuc2l6ZSgpKTsKLSAgICBjb3B5VmFsdWVzVG9WZWN0b3IobV90cmFja1NldCwgdHJh
Y2tzKTsKLQotICAgIHJldHVybiB0cmFja3M7CisgICAgcmV0dXJuIGNvcHlUb1ZlY3RvcihtX3Ry
YWNrU2V0LnZhbHVlcygpKTsKIH0KIAogdm9pZCBNZWRpYVN0cmVhbTo6dHJhY2tEaWRFbmQoKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5j
cHAJKHJldmlzaW9uIDIyMzA2NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODEsOSArMjgxLDcgQEAgUmVmPERP
TVdyYXBwZXJXb3JsZD4gU2NyaXB0Q29udHJvbGxlcjo6YwogCiBWZWN0b3I8SlNDOjpTdHJvbmc8
SlNET01XaW5kb3dQcm94eT4+IFNjcmlwdENvbnRyb2xsZXI6OndpbmRvd1Byb3hpZXMoKQogewot
ICAgIFZlY3RvcjxKU0M6OlN0cm9uZzxKU0RPTVdpbmRvd1Byb3h5Pj4gd2luZG93UHJveGllczsK
LSAgICBjb3B5VmFsdWVzVG9WZWN0b3IobV93aW5kb3dQcm94aWVzLCB3aW5kb3dQcm94aWVzKTsK
LSAgICByZXR1cm4gd2luZG93UHJveGllczsKKyAgICByZXR1cm4gY29weVRvVmVjdG9yKG1fd2lu
ZG93UHJveGllcy52YWx1ZXMoKSk7CiB9CiAKIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6Z2V0QWxs
V29ybGRzKFZlY3RvcjxSZWY8RE9NV3JhcHBlcldvcmxkPj4mIHdvcmxkcykKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCShy
ZXZpc2lvbiAyMjMwNjUpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURl
Y2xhcmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDA5NSw5ICs0MDk1LDggQEAgU3RyaW5n
IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6aXRlbQogICAgIGNvbnN0IGF1dG8mIGN1c3Rv
bVByb3BlcnRpZXMgPSBzdHlsZS0+Y3VzdG9tUHJvcGVydGllcygpOwogICAgIGlmIChpbmRleCA+
PSBjdXN0b21Qcm9wZXJ0aWVzLnNpemUoKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAg
IAotICAgIFZlY3RvcjxTdHJpbmcsIDQ+IHJlc3VsdHM7Ci0gICAgY29weUtleXNUb1ZlY3Rvcihj
dXN0b21Qcm9wZXJ0aWVzLCByZXN1bHRzKTsKKworICAgIGF1dG8gcmVzdWx0cyA9IGNvcHlUb1Zl
Y3RvcihjdXN0b21Qcm9wZXJ0aWVzLmtleXMoKSk7CiAgICAgcmV0dXJuIHJlc3VsdHMuYXQoaW5k
ZXgpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDIyMzA2NSkK
KysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIz
MzgsOSArMjMzOCw3IEBAIHZvaWQgRG9jdW1lbnQ6OnByZXBhcmVGb3JEZXN0cnVjdGlvbigpCiAK
ICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogICAgIGlmICghbV9jbGllbnRU
b0lETWFwLmlzRW1wdHkoKSAmJiBwYWdlKCkpIHsKLSAgICAgICAgVmVjdG9yPFdlYkNvcmU6Ok1l
ZGlhUGxheWJhY2tUYXJnZXRDbGllbnQqPiBjbGllbnRzOwotICAgICAgICBjb3B5S2V5c1RvVmVj
dG9yKG1fY2xpZW50VG9JRE1hcCwgY2xpZW50cyk7Ci0gICAgICAgIGZvciAoYXV0byogY2xpZW50
IDogY2xpZW50cykKKyAgICAgICAgZm9yIChhdXRvKiBjbGllbnQgOiBjb3B5VG9WZWN0b3IobV9j
bGllbnRUb0lETWFwLmtleXMoKSkpCiAgICAgICAgICAgICByZW1vdmVQbGF5YmFja1RhcmdldFBp
Y2tlckNsaWVudCgqY2xpZW50KTsKICAgICB9CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyMjMwNjUp
CisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTcyLDcgKzU3Miw3IEBAIHZvaWQgRG9jdW1lbnRNYXJrZXJDb250cm9s
bGVyOjpyZW1vdmVNYXIKICAgICAgICAgcmV0dXJuOwogICAgIEFTU0VSVCghbV9tYXJrZXJzLmlz
RW1wdHkoKSk7CiAgICAgCi0gICAgTWFya2VyTWFwOjppdGVyYXRvciBpdGVyYXRvciA9IG1fbWFy
a2Vycy5maW5kKG5vZGUpOworICAgIGF1dG8gaXRlcmF0b3IgPSBtX21hcmtlcnMuZmluZChub2Rl
KTsKICAgICBpZiAoaXRlcmF0b3IgIT0gbV9tYXJrZXJzLmVuZCgpKQogICAgICAgICByZW1vdmVN
YXJrZXJzRnJvbUxpc3QoaXRlcmF0b3IsIG1hcmtlclR5cGVzKTsKIH0KQEAgLTU4Myw5ICs1ODMs
NyBAQCB2b2lkIERvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6cmVtb3ZlTWFyCiAgICAgICAgIHJl
dHVybjsKICAgICBBU1NFUlQoIW1fbWFya2Vycy5pc0VtcHR5KCkpOwogCi0gICAgVmVjdG9yPFJl
ZlB0cjxOb2RlPj4gbm9kZXNXaXRoTWFya2VyczsKLSAgICBjb3B5S2V5c1RvVmVjdG9yKG1fbWFy
a2Vycywgbm9kZXNXaXRoTWFya2Vycyk7Ci0gICAgZm9yIChhdXRvJiBub2RlIDogbm9kZXNXaXRo
TWFya2VycykgeworICAgIGZvciAoYXV0byYgbm9kZSA6IGNvcHlUb1ZlY3RvcihtX21hcmtlcnMu
a2V5cygpKSkgewogICAgICAgICBhdXRvIGl0ZXJhdG9yID0gbV9tYXJrZXJzLmZpbmQobm9kZSk7
CiAgICAgICAgIGlmIChpdGVyYXRvciAhPSBtX21hcmtlcnMuZW5kKCkpCiAgICAgICAgICAgICBy
ZW1vdmVNYXJrZXJzRnJvbUxpc3QoaXRlcmF0b3IsIG1hcmtlclR5cGVzKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50LmNwcAkocmV2
aXNpb24gMjIzMDY1KQorKysgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvcldvcmtl
ckFnZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ1LDkgKzE0NSw3IEBAIHZvaWQgSW5zcGVj
dG9yV29ya2VyQWdlbnQ6OmNvbm5lY3RUb0FsbFcKIAogdm9pZCBJbnNwZWN0b3JXb3JrZXJBZ2Vu
dDo6ZGlzY29ubmVjdEZyb21BbGxXb3JrZXJJbnNwZWN0b3JQcm94aWVzKCkKIHsKLSAgICBWZWN0
b3I8V29ya2VySW5zcGVjdG9yUHJveHkqPiBwcm94aWVzOwotICAgIGNvcHlWYWx1ZXNUb1ZlY3Rv
cihtX2Nvbm5lY3RlZFByb3hpZXMsIHByb3hpZXMpOwotICAgIGZvciAoYXV0byogcHJveHkgOiBw
cm94aWVzKQorICAgIGZvciAoYXV0byogcHJveHkgOiBjb3B5VG9WZWN0b3IobV9jb25uZWN0ZWRQ
cm94aWVzLnZhbHVlcygpKSkKICAgICAgICAgcHJveHktPmRpc2Nvbm5lY3RGcm9tV29ya2VySW5z
cGVjdG9yQ29udHJvbGxlcigpOwogCiAgICAgbV9jb25uZWN0ZWRQcm94aWVzLmNsZWFyKCk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0
YS5jcHAJKHJldmlzaW9uIDIyMzA2NSkKKysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3
b3JrUmVzb3VyY2VzRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2Miw5ICsyNjIsNyBAQCB2
b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpjbGVhcihjb25zdCBTCiAKIFZlY3RvcjxOZXR3b3Jr
UmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhKj4gTmV0d29ya1Jlc291cmNlc0RhdGE6OnJlc291
cmNlcygpCiB7Ci0gICAgVmVjdG9yPE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGEq
PiByZXNvdXJjZXM7Ci0gICAgY29weVZhbHVlc1RvVmVjdG9yKG1fcmVxdWVzdElkVG9SZXNvdXJj
ZURhdGFNYXAsIHJlc291cmNlcyk7Ci0gICAgcmV0dXJuIHJlc291cmNlczsKKyAgICByZXR1cm4g
Y29weVRvVmVjdG9yKG1fcmVxdWVzdElkVG9SZXNvdXJjZURhdGFNYXAudmFsdWVzKCkpOwogfQog
CiBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhKiBOZXR3b3JrUmVzb3VyY2VzRGF0
YTo6cmVzb3VyY2VEYXRhRm9yUmVxdWVzdElkKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCShyZXZpc2lvbiAyMjMw
NjUpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMDAsMjUgKzEwMCwxOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRp
YyB2b2lkIGNhbmNlbEFsbChjb25zdCBSZXNvdXJjZUxvYWRlck1hcCYgbG9hZGVycykKIHsKLSAg
ICBWZWN0b3I8UmVmUHRyPFJlc291cmNlTG9hZGVyPj4gbG9hZGVyc0NvcHk7Ci0gICAgY29weVZh
bHVlc1RvVmVjdG9yKGxvYWRlcnMsIGxvYWRlcnNDb3B5KTsKLSAgICBmb3IgKGF1dG8mIGxvYWRl
ciA6IGxvYWRlcnNDb3B5KQorICAgIGZvciAoYXV0byYgbG9hZGVyIDogY29weVRvVmVjdG9yKGxv
YWRlcnMudmFsdWVzKCkpKQogICAgICAgICBsb2FkZXItPmNhbmNlbCgpOwogfQogCiBzdGF0aWMg
dm9pZCBzZXRBbGxEZWZlcnNMb2FkaW5nKGNvbnN0IFJlc291cmNlTG9hZGVyTWFwJiBsb2FkZXJz
LCBib29sIGRlZmVycykKIHsKLSAgICBWZWN0b3I8UmVmUHRyPFJlc291cmNlTG9hZGVyPj4gbG9h
ZGVyc0NvcHk7Ci0gICAgY29weVZhbHVlc1RvVmVjdG9yKGxvYWRlcnMsIGxvYWRlcnNDb3B5KTsK
LSAgICBmb3IgKGF1dG8mIGxvYWRlciA6IGxvYWRlcnNDb3B5KQorICAgIGZvciAoYXV0byYgbG9h
ZGVyIDogY29weVRvVmVjdG9yKGxvYWRlcnMudmFsdWVzKCkpKQogICAgICAgICBsb2FkZXItPnNl
dERlZmVyc0xvYWRpbmcoZGVmZXJzKTsKIH0KIAogc3RhdGljIGJvb2wgYXJlQWxsTG9hZGVyc1Bh
Z2VDYWNoZUFjY2VwdGFibGUoY29uc3QgUmVzb3VyY2VMb2FkZXJNYXAmIGxvYWRlcnMpCiB7Ci0g
ICAgVmVjdG9yPFJlZlB0cjxSZXNvdXJjZUxvYWRlcj4+IGxvYWRlcnNDb3B5OwotICAgIGNvcHlW
YWx1ZXNUb1ZlY3Rvcihsb2FkZXJzLCBsb2FkZXJzQ29weSk7Ci0gICAgZm9yIChhdXRvJiBsb2Fk
ZXIgOiBsb2FkZXJzQ29weSkgeworICAgIGZvciAoYXV0byYgbG9hZGVyIDogY29weVRvVmVjdG9y
KGxvYWRlcnMudmFsdWVzKCkpKSB7CiAgICAgICAgIGlmICghbG9hZGVyLT5mcmFtZUxvYWRlcigp
IHx8ICFsb2FkZXItPmZyYW1lTG9hZGVyKCktPmZyYW1lKCkucGFnZSgpKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5
Q2FjaGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1v
cnlDYWNoZS5jcHAJKHJldmlzaW9uIDIyMzA2NSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9NZW1vcnlDYWNoZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3OCwxMCArMjc4LDcgQEAg
dm9pZCBNZW1vcnlDYWNoZTo6Zm9yRWFjaFNlc3Npb25SZXNvdXJjZQogICAgIGlmIChpdCA9PSBt
X3Nlc3Npb25SZXNvdXJjZXMuZW5kKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFZlY3RvcjxD
YWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4+IHJlc291cmNlc0ZvclNlc3Npb247
Ci0gICAgY29weVZhbHVlc1RvVmVjdG9yKCppdC0+dmFsdWUsIHJlc291cmNlc0ZvclNlc3Npb24p
OwotCi0gICAgZm9yIChhdXRvJiByZXNvdXJjZSA6IHJlc291cmNlc0ZvclNlc3Npb24pCisgICAg
Zm9yIChhdXRvJiByZXNvdXJjZSA6IGNvcHlUb1ZlY3RvcigqaXQtPnZhbHVlLT52YWx1ZXMoKSkp
CiAgICAgICAgIGZ1bmN0aW9uKCpyZXNvdXJjZSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9tYWMvRG9jdW1lbnRMb2FkZXJNYWMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9tYWMvRG9jdW1lbnRMb2FkZXJNYWMuY3BwCShyZXZpc2lvbiAyMjMwNjUp
CisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvbWFjL0RvY3VtZW50TG9hZGVyTWFjLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzcsMTcgKzM3LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3Rh
dGljIHZvaWQgc2NoZWR1bGVBbGwoY29uc3QgUmVzb3VyY2VMb2FkZXJNYXAmIGxvYWRlcnMsIFNj
aGVkdWxlUGFpciYgcGFpcikKIHsKLSAgICBWZWN0b3I8UmVmUHRyPFJlc291cmNlTG9hZGVyPj4g
bG9hZGVyc0NvcHk7Ci0gICAgY29weVZhbHVlc1RvVmVjdG9yKGxvYWRlcnMsIGxvYWRlcnNDb3B5
KTsKLSAgICBmb3IgKGF1dG8mIGxvYWRlciA6IGxvYWRlcnNDb3B5KQorICAgIGZvciAoYXV0byYg
bG9hZGVyIDogY29weVRvVmVjdG9yKGxvYWRlcnMudmFsdWVzKCkpKQogICAgICAgICBsb2FkZXIt
PnNjaGVkdWxlKHBhaXIpOwogfQogCiBzdGF0aWMgdm9pZCB1bnNjaGVkdWxlQWxsKGNvbnN0IFJl
c291cmNlTG9hZGVyTWFwJiBsb2FkZXJzLCBTY2hlZHVsZVBhaXImIHBhaXIpCiB7Ci0gICAgVmVj
dG9yPFJlZlB0cjxSZXNvdXJjZUxvYWRlcj4+IGxvYWRlcnNDb3B5OwotICAgIGNvcHlWYWx1ZXNU
b1ZlY3Rvcihsb2FkZXJzLCBsb2FkZXJzQ29weSk7Ci0gICAgZm9yIChhdXRvJiBsb2FkZXIgOiBs
b2FkZXJzQ29weSkKKyAgICBmb3IgKGF1dG8mIGxvYWRlciA6IGNvcHlUb1ZlY3Rvcihsb2FkZXJz
LnZhbHVlcygpKSkKICAgICAgICAgbG9hZGVyLT51bnNjaGVkdWxlKHBhaXIpOwogfQogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1Jlc291cmNlVXNhZ2VUaHJlYWQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUmVzb3VyY2VVc2FnZVRocmVhZC5jcHAJKHJldmlzaW9u
IDIyMzA2NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUmVzb3VyY2VVc2FnZVRocmVhZC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTg2LDcgKzg2LDcgQEAgdm9pZCBSZXNvdXJjZVVzYWdlVGhyZWFk
Ojpub3RpZnlPYnNlcnZlcgogICAgICAgICB7CiAgICAgICAgICAgICBhdXRvJiByZXNvdXJjZVVz
YWdlVGhyZWFkID0gUmVzb3VyY2VVc2FnZVRocmVhZDo6c2luZ2xldG9uKCk7CiAgICAgICAgICAg
ICBMb2NrSG9sZGVyIGxvY2tlcihyZXNvdXJjZVVzYWdlVGhyZWFkLm1fbG9jayk7Ci0gICAgICAg
ICAgICBjb3B5VmFsdWVzVG9WZWN0b3IocmVzb3VyY2VVc2FnZVRocmVhZC5tX29ic2VydmVycywg
ZnVuY3Rpb25zKTsKKyAgICAgICAgICAgIGZ1bmN0aW9ucyA9IGNvcHlUb1ZlY3RvcihyZXNvdXJj
ZVVzYWdlVGhyZWFkLm1fb2JzZXJ2ZXJzLnZhbHVlcygpKTsKICAgICAgICAgfQogCiAgICAgICAg
IGZvciAoYXV0byYgZnVuY3Rpb24gOiBmdW5jdGlvbnMpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVByaXZhdGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUHJpdmF0ZS5j
cHAJKHJldmlzaW9uIDIyMzA2NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtUHJpdmF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkxLDExICs5MSw3
IEBAIHZvaWQgTWVkaWFTdHJlYW1Qcml2YXRlOjpyZW1vdmVPYnNlcnZlcigKIAogTWVkaWFTdHJl
YW1UcmFja1ByaXZhdGVWZWN0b3IgTWVkaWFTdHJlYW1Qcml2YXRlOjp0cmFja3MoKSBjb25zdAog
ewotICAgIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlVmVjdG9yIHRyYWNrczsKLSAgICB0cmFja3Mu
cmVzZXJ2ZUNhcGFjaXR5KG1fdHJhY2tTZXQuc2l6ZSgpKTsKLSAgICBjb3B5VmFsdWVzVG9WZWN0
b3IobV90cmFja1NldCwgdHJhY2tzKTsKLQotICAgIHJldHVybiB0cmFja3M7CisgICAgcmV0dXJu
IGNvcHlUb1ZlY3RvcihtX3RyYWNrU2V0LnZhbHVlcygpKTsKIH0KIAogdm9pZCBNZWRpYVN0cmVh
bVByaXZhdGU6OnVwZGF0ZUFjdGl2ZVN0YXRlKE5vdGlmeUNsaWVudE9wdGlvbiBub3RpZnlDbGll
bnRPcHRpb24pCkluZGV4OiBTb3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxvZwkocmV2aXNpb24gMjIzMDY1KQorKysgU291cmNl
L1dlYkRyaXZlci9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAx
Ny0xMC0wOSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIFJlcGxhY2Ug
Y29weUtleXNUb1ZlY3Rvci9jb3B5VmFsdWVzVG9WZWN0b3Igd2l0aCBjb3B5VG9WZWN0b3IobWFw
LmtleXMoKSkvY29weVRvVmVjdG9yKG1hcC52YWx1ZXMoKSkKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODEwMgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2Vzc2lvbkhvc3QuY3BwOgorICAgICAgICAo
V2ViRHJpdmVyOjpTZXNzaW9uSG9zdDo6aW5zcGVjdG9yRGlzY29ubmVjdGVkKToKKwogMjAxNy0x
MC0wMiAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAg
ICAgV2ViRHJpdmVyOiBIVFRQIHN0YXR1cyBjb2RlIGlzIG5vdCBjb3JyZWN0IGZvciBzb21lIG9m
IHRoZSBlcnJvcnMKSW5kZXg6IFNvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbkhvc3QuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbkhvc3QuY3BwCShyZXZpc2lvbiAyMjMw
NjUpCisrKyBTb3VyY2UvV2ViRHJpdmVyL1Nlc3Npb25Ib3N0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzYsOSArMzYsNyBAQCBuYW1lc3BhY2UgV2ViRHJpdmVyIHsKIHZvaWQgU2Vzc2lvbkhvc3Q6
Omluc3BlY3RvckRpc2Nvbm5lY3RlZCgpCiB7CiAgICAgLy8gQnJvd3NlciBjbG9zZWQgb3IgY3Jh
c2hlZCwgZmluaXNoIGFsbCBwZW5kaW5nIGNvbW1hbmRzIHdpdGggZXJyb3IuCi0gICAgVmVjdG9y
PGxvbmc+IG1lc3NhZ2VzOwotICAgIGNvcHlLZXlzVG9WZWN0b3IobV9jb21tYW5kUmVxdWVzdHMs
IG1lc3NhZ2VzKTsKLSAgICBmb3IgKGF1dG8gbWVzc2FnZUlEIDogbWVzc2FnZXMpIHsKKyAgICBm
b3IgKGF1dG8gbWVzc2FnZUlEIDogY29weVRvVmVjdG9yKG1fY29tbWFuZFJlcXVlc3RzLmtleXMo
KSkpIHsKICAgICAgICAgYXV0byByZXNwb25zZUhhbmRsZXIgPSBtX2NvbW1hbmRSZXF1ZXN0cy50
YWtlKG1lc3NhZ2VJRCk7CiAgICAgICAgIHJlc3BvbnNlSGFuZGxlcih7IG51bGxwdHIsIHRydWUg
fSk7CiAgICAgfQpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMzA2NSkKKysrIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDMgQEAKKzIwMTctMTAtMDkg
IFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXBsYWNlIGNvcHlLZXlz
VG9WZWN0b3IvY29weVZhbHVlc1RvVmVjdG9yIHdpdGggY29weVRvVmVjdG9yKG1hcC5rZXlzKCkp
L2NvcHlUb1ZlY3RvcihtYXAudmFsdWVzKCkpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNzgxMDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OmRpZENsb3NlKToKKyAgICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90
ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpkdW1wQ2hhbmdlZExh
eWVycyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3Bw
OgorICAgICAgICAod2Via2l0V2ViQ29udGV4dEludmFsaWRhdGVDdXN0b21Qcm90b2NvbFJlcXVl
c3RzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHA6
CisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZUNvbnRhaW5lckZvcmFsbCk6CisgICAgICAgICog
VUlQcm9jZXNzL0NvY29hL1dLV2ViVmlld0NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5Lm1tOgorICAg
ICAgICAoLVtXS1dlYlZpZXdDb250ZW50UHJvdmlkZXJSZWdpc3RyeSBfbWltZVR5cGVzV2l0aEN1
c3RvbUNvbnRlbnRQcm92aWRlcnNdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvR2VuZXJpY0NhbGxi
YWNrLmg6CisgICAgICAgIChXZWJLaXQ6OmludmFsaWRhdGVDYWxsYmFja01hcCk6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3NQcm94eTo6c2h1dERvd24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6
OmRpZENsb3NlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpkaWRCZWNvbWVV
bnJlc3BvbnNpdmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmRpZEJlY29t
ZVJlc3BvbnNpdmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OndpbGxDaGFu
Z2VJc1Jlc3BvbnNpdmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmRpZENo
YW5nZUlzUmVzcG9uc2l2ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6ZGlz
Y29ubmVjdEZyYW1lc0Zyb21QYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5
OjpmcmFtZUNvdW50SW5QYWdlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1By
b3h5OjpyZXF1ZXN0VGVybWluYXRpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9O
ZXRzY2FwZS9OUFJ1bnRpbWVPYmplY3RNYXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpOUFJ1bnRp
bWVPYmplY3RNYXA6OmludmFsaWRhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9O
ZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1
Z2luOjpzdG9wQWxsU3RyZWFtcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpjYW5jZWxBbGxTdHJlYW1z
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxh
eWVyVHJlZUNvbnRleHQubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZUNvbnRl
eHQ6OmJ1aWxkVHJhbnNhY3Rpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmRpZENsb3NlKToKKwogMjAxNy0xMC0w
OSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIE1ha2UgSGFzaE1hcDo6
a2V5cygpIGFuZCBIYXNoTWFwOjp2YWx1ZXMoKSB3b3JrIHdpdGggV1RGOjptYXAvV1RGOjpjb3B5
VG9WZWN0b3IKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCShyZXZpc2lvbiAyMjMw
NjUpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY4LDkgKzE2OCw3IEBAIHZvaWQgTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZEMKICAgICAvLyBQcm90ZWN0IG91cnNlbGYg
YXMgd2UgbWlnaHQgYmUgb3RoZXJ3aXNlIGJlIGRlbGV0ZWQgZHVyaW5nIHRoaXMgZnVuY3Rpb24u
CiAgICAgUmVmPE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzPiBwcm90ZWN0b3IoKnRoaXMp
OwogCi0gICAgVmVjdG9yPFJlZlB0cjxOZXR3b3JrUmVzb3VyY2VMb2FkZXI+PiBsb2FkZXJzOwot
ICAgIGNvcHlWYWx1ZXNUb1ZlY3RvcihtX25ldHdvcmtSZXNvdXJjZUxvYWRlcnMsIGxvYWRlcnMp
OwotICAgIGZvciAoYXV0byYgbG9hZGVyIDogbG9hZGVycykKKyAgICBmb3IgKGF1dG8mIGxvYWRl
ciA6IGNvcHlUb1ZlY3RvcihtX25ldHdvcmtSZXNvdXJjZUxvYWRlcnMudmFsdWVzKCkpKQogICAg
ICAgICBsb2FkZXItPmFib3J0KCk7CiAgICAgQVNTRVJUKG1fbmV0d29ya1Jlc291cmNlTG9hZGVy
cy5pc0VtcHR5KCkpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRy
ZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1t
CShyZXZpc2lvbiAyMjMwNjUpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRy
ZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTc0NCw4
ICs3NDQsNyBAQCBzdGF0aWMgdm9pZCBkdW1wQ2hhbmdlZExheWVycyhUZXh0U3RyZWFtCiAgICAg
dHMgPDwgImNoYW5nZWQtbGF5ZXJzIjsKIAogICAgIC8vIER1bXAgdGhlIGxheWVyIHByb3BlcnRp
ZXMgc29ydGVkIGJ5IGxheWVyIElELgotICAgIFZlY3RvcjxHcmFwaGljc0xheWVyOjpQbGF0Zm9y
bUxheWVySUQ+IGxheWVySURzOwotICAgIGNvcHlLZXlzVG9WZWN0b3IoY2hhbmdlZExheWVyUHJv
cGVydGllcywgbGF5ZXJJRHMpOworICAgIGF1dG8gbGF5ZXJJRHMgPSBjb3B5VG9WZWN0b3IoY2hh
bmdlZExheWVyUHJvcGVydGllcy5rZXlzKCkpOwogICAgIHN0ZDo6c29ydChsYXllcklEcy5iZWdp
bigpLCBsYXllcklEcy5lbmQoKSk7CiAKICAgICBmb3IgKGF1dG8mIGxheWVySUQgOiBsYXllcklE
cykgewpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2VuZXJpY0NhbGxiYWNrLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2VuZXJpY0NhbGxiYWNrLmgJKHJl
dmlzaW9uIDIyMzA2NSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dlbmVyaWNDYWxsYmFj
ay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjMsOSArMTYzLDcgQEAgdHlwZWRlZiBHZW5lcmljQ2Fs
bGJhY2s8Y29uc3QgU2hhcmVhYmxlQgogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIHZvaWQgaW52YWxp
ZGF0ZUNhbGxiYWNrTWFwKEhhc2hNYXA8dWludDY0X3QsIFQ+JiBjYWxsYmFja01hcCwgQ2FsbGJh
Y2tCYXNlOjpFcnJvciBlcnJvcikKIHsKLSAgICBWZWN0b3I8VD4gY2FsbGJhY2tzOwotICAgIGNv
cHlWYWx1ZXNUb1ZlY3RvcihjYWxsYmFja01hcCwgY2FsbGJhY2tzKTsKLSAgICBmb3IgKGF1dG8m
IGNhbGxiYWNrIDogY2FsbGJhY2tzKQorICAgIGZvciAoYXV0byYgY2FsbGJhY2sgOiBjb3B5VG9W
ZWN0b3IoY2FsbGJhY2tNYXAudmFsdWVzKCkpKQogICAgICAgICBjYWxsYmFjay0+aW52YWxpZGF0
ZShlcnJvcik7CiAKICAgICBjYWxsYmFja01hcC5jbGVhcigpOwpJbmRleDogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCShyZXZpc2lvbiAyMjMwNjUpCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xODEsMTggKzE4MSwxNSBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6c2h1dERvd24oKQog
ICAgIG1fYmFja2dyb3VuZFJlc3BvbnNpdmVuZXNzVGltZXIuaW52YWxpZGF0ZSgpOwogICAgIG1f
dG9rZW5Gb3JIb2xkaW5nTG9ja2VkRmlsZXMgPSBudWxscHRyOwogCi0gICAgVmVjdG9yPFJlZlB0
cjxXZWJGcmFtZVByb3h5Pj4gZnJhbWVzOwotICAgIGNvcHlWYWx1ZXNUb1ZlY3RvcihtX2ZyYW1l
TWFwLCBmcmFtZXMpOwotCi0gICAgZm9yIChzaXplX3QgaSA9IDAsIHNpemUgPSBmcmFtZXMuc2l6
ZSgpOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICBmcmFtZXNbaV0tPndlYlByb2Nlc3NXaWxsU2h1
dERvd24oKTsKKyAgICBmb3IgKGF1dG8mIGZyYW1lIDogY29weVRvVmVjdG9yKG1fZnJhbWVNYXAu
dmFsdWVzKCkpKQorICAgICAgICBmcmFtZS0+d2ViUHJvY2Vzc1dpbGxTaHV0RG93bigpOwogICAg
IG1fZnJhbWVNYXAuY2xlYXIoKTsKIAotICAgIGZvciAoVmlzaXRlZExpbmtTdG9yZSogdmlzaXRl
ZExpbmtTdG9yZSA6IG1fdmlzaXRlZExpbmtTdG9yZXMpCisgICAgZm9yIChhdXRvKiB2aXNpdGVk
TGlua1N0b3JlIDogbV92aXNpdGVkTGlua1N0b3JlcykKICAgICAgICAgdmlzaXRlZExpbmtTdG9y
ZS0+cmVtb3ZlUHJvY2VzcygqdGhpcyk7CiAgICAgbV92aXNpdGVkTGlua1N0b3Jlcy5jbGVhcigp
OwogCi0gICAgZm9yIChXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSogd2ViVXNlckNvbnRl
bnRDb250cm9sbGVyUHJveHkgOiBtX3dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3hpZXMpCisg
ICAgZm9yIChhdXRvKiB3ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSA6IG1fd2ViVXNlckNv
bnRlbnRDb250cm9sbGVyUHJveGllcykKICAgICAgICAgd2ViVXNlckNvbnRlbnRDb250cm9sbGVy
UHJveHktPnJlbW92ZVByb2Nlc3MoKnRoaXMpOwogICAgIG1fd2ViVXNlckNvbnRlbnRDb250cm9s
bGVyUHJveGllcy5jbGVhcigpOwogCkBAIC02MjUsMTMgKzYyMiwxMiBAQCB2b2lkIFdlYlByb2Nl
c3NQcm94eTo6ZGlkQ2xvc2UoSVBDOjpDb25uCiAKICAgICB3ZWJDb25uZWN0aW9uKCktPmRpZENs
b3NlKCk7CiAKLSAgICBWZWN0b3I8UmVmUHRyPFdlYlBhZ2VQcm94eT4+IHBhZ2VzOwotICAgIGNv
cHlWYWx1ZXNUb1ZlY3RvcihtX3BhZ2VNYXAsIHBhZ2VzKTsKKyAgICBhdXRvIHBhZ2VzID0gY29w
eVRvVmVjdG9yKG1fcGFnZU1hcC52YWx1ZXMoKSk7CiAKICAgICBzaHV0RG93bigpOwogCi0gICAg
Zm9yIChzaXplX3QgaSA9IDAsIHNpemUgPSBwYWdlcy5zaXplKCk7IGkgPCBzaXplOyArK2kpCi0g
ICAgICAgIHBhZ2VzW2ldLT5wcm9jZXNzRGlkVGVybWluYXRlKFByb2Nlc3NUZXJtaW5hdGlvblJl
YXNvbjo6Q3Jhc2gpOworICAgIGZvciAoYXV0byYgcGFnZSA6IHBhZ2VzKQorICAgICAgICBwYWdl
LT5wcm9jZXNzRGlkVGVybWluYXRlKFByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbjo6Q3Jhc2gpOwog
CiB9CiAKQEAgLTY1MywxMiArNjQ5LDkgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZEJlY29t
ZVVucmVzcG9ucwogewogICAgIG1faXNSZXNwb25zaXZlID0gTm9Pck1heWJlOjpObzsKIAotICAg
IFZlY3RvcjxSZWZQdHI8V2ViUGFnZVByb3h5Pj4gcGFnZXM7Ci0gICAgY29weVZhbHVlc1RvVmVj
dG9yKG1fcGFnZU1hcCwgcGFnZXMpOwotCiAgICAgYXV0byBpc1Jlc3BvbnNpdmVDYWxsYmFja3Mg
PSBXVEZNb3ZlKG1faXNSZXNwb25zaXZlQ2FsbGJhY2tzKTsKIAotICAgIGZvciAoYXV0byYgcGFn
ZSA6IHBhZ2VzKQorICAgIGZvciAoYXV0byYgcGFnZSA6IGNvcHlUb1ZlY3RvcihtX3BhZ2VNYXAu
dmFsdWVzKCkpKQogICAgICAgICBwYWdlLT5wcm9jZXNzRGlkQmVjb21lVW5yZXNwb25zaXZlKCk7
CiAKICAgICBib29sIGlzV2ViUHJvY2Vzc1Jlc3BvbnNpdmUgPSBmYWxzZTsKQEAgLTY3MCwyNSAr
NjYzLDE5IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRCZWNvbWVSZXNwb25zaXYKIHsKICAg
ICBtX2lzUmVzcG9uc2l2ZSA9IE5vT3JNYXliZTo6TWF5YmU7CiAKLSAgICBWZWN0b3I8UmVmUHRy
PFdlYlBhZ2VQcm94eT4+IHBhZ2VzOwotICAgIGNvcHlWYWx1ZXNUb1ZlY3RvcihtX3BhZ2VNYXAs
IHBhZ2VzKTsKLSAgICBmb3IgKGF1dG8mIHBhZ2UgOiBwYWdlcykKKyAgICBmb3IgKGF1dG8mIHBh
Z2UgOiBjb3B5VG9WZWN0b3IobV9wYWdlTWFwLnZhbHVlcygpKSkKICAgICAgICAgcGFnZS0+cHJv
Y2Vzc0RpZEJlY29tZVJlc3BvbnNpdmUoKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzUHJveHk6Ondp
bGxDaGFuZ2VJc1Jlc3BvbnNpdmUoKQogewotICAgIFZlY3RvcjxSZWZQdHI8V2ViUGFnZVByb3h5
Pj4gcGFnZXM7Ci0gICAgY29weVZhbHVlc1RvVmVjdG9yKG1fcGFnZU1hcCwgcGFnZXMpOwotICAg
IGZvciAoYXV0byYgcGFnZSA6IHBhZ2VzKQorICAgIGZvciAoYXV0byYgcGFnZSA6IGNvcHlUb1Zl
Y3RvcihtX3BhZ2VNYXAudmFsdWVzKCkpKQogICAgICAgICBwYWdlLT53aWxsQ2hhbmdlUHJvY2Vz
c0lzUmVzcG9uc2l2ZSgpOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkQ2hhbmdlSXNS
ZXNwb25zaXZlKCkKIHsKLSAgICBWZWN0b3I8UmVmUHRyPFdlYlBhZ2VQcm94eT4+IHBhZ2VzOwot
ICAgIGNvcHlWYWx1ZXNUb1ZlY3RvcihtX3BhZ2VNYXAsIHBhZ2VzKTsKLSAgICBmb3IgKGF1dG8m
IHBhZ2UgOiBwYWdlcykKKyAgICBmb3IgKGF1dG8mIHBhZ2UgOiBjb3B5VG9WZWN0b3IobV9wYWdl
TWFwLnZhbHVlcygpKSkKICAgICAgICAgcGFnZS0+ZGlkQ2hhbmdlUHJvY2Vzc0lzUmVzcG9uc2l2
ZSgpOwogfQogCkBAIC03NDgsMTkgKzczNSwxNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlk
RGVzdHJveUZyYW1lKHVpCiAKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaXNjb25uZWN0RnJhbWVz
RnJvbVBhZ2UoV2ViUGFnZVByb3h5KiBwYWdlKQogewotICAgIFZlY3RvcjxSZWZQdHI8V2ViRnJh
bWVQcm94eT4+IGZyYW1lczsKLSAgICBjb3B5VmFsdWVzVG9WZWN0b3IobV9mcmFtZU1hcCwgZnJh
bWVzKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IGZyYW1lcy5zaXplKCk7IGkgPCBz
aXplOyArK2kpIHsKLSAgICAgICAgaWYgKGZyYW1lc1tpXS0+cGFnZSgpID09IHBhZ2UpCi0gICAg
ICAgICAgICBmcmFtZXNbaV0tPndlYlByb2Nlc3NXaWxsU2h1dERvd24oKTsKKyAgICBmb3IgKGF1
dG8mIGZyYW1lIDogY29weVRvVmVjdG9yKG1fZnJhbWVNYXAudmFsdWVzKCkpKSB7CisgICAgICAg
IGlmIChmcmFtZS0+cGFnZSgpID09IHBhZ2UpCisgICAgICAgICAgICBmcmFtZS0+d2ViUHJvY2Vz
c1dpbGxTaHV0RG93bigpOwogICAgIH0KIH0KIAogc2l6ZV90IFdlYlByb2Nlc3NQcm94eTo6ZnJh
bWVDb3VudEluUGFnZShXZWJQYWdlUHJveHkqIHBhZ2UpIGNvbnN0CiB7CiAgICAgc2l6ZV90IHJl
c3VsdCA9IDA7Ci0gICAgZm9yIChIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8V2ViRnJhbWVQcm94
eT4+Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gbV9mcmFtZU1hcC5iZWdpbigpOyBpdGVyICE9IG1f
ZnJhbWVNYXAuZW5kKCk7ICsraXRlcikgewotICAgICAgICBpZiAoaXRlci0+dmFsdWUtPnBhZ2Uo
KSA9PSBwYWdlKQorICAgIGZvciAoYXV0byYgZnJhbWUgOiBtX2ZyYW1lTWFwLnZhbHVlcygpKSB7
CisgICAgICAgIGlmIChmcmFtZS0+cGFnZSgpID09IHBhZ2UpCiAgICAgICAgICAgICArK3Jlc3Vs
dDsKICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTg4OCwxMyArODczLDEyIEBAIHZvaWQg
V2ViUHJvY2Vzc1Byb3h5OjpyZXF1ZXN0VGVybWluYXRpb24KICAgICBpZiAod2ViQ29ubmVjdGlv
bigpKQogICAgICAgICB3ZWJDb25uZWN0aW9uKCktPmRpZENsb3NlKCk7CiAKLSAgICBWZWN0b3I8
UmVmUHRyPFdlYlBhZ2VQcm94eT4+IHBhZ2VzOwotICAgIGNvcHlWYWx1ZXNUb1ZlY3RvcihtX3Bh
Z2VNYXAsIHBhZ2VzKTsKKyAgICBhdXRvIHBhZ2VzID0gY29weVRvVmVjdG9yKG1fcGFnZU1hcC52
YWx1ZXMoKSk7CiAKICAgICBzaHV0RG93bigpOwogCi0gICAgZm9yIChzaXplX3QgaSA9IDAsIHNp
emUgPSBwYWdlcy5zaXplKCk7IGkgPCBzaXplOyArK2kpCi0gICAgICAgIHBhZ2VzW2ldLT5wcm9j
ZXNzRGlkVGVybWluYXRlKHJlYXNvbik7CisgICAgZm9yIChhdXRvJiBwYWdlIDogcGFnZXMpCisg
ICAgICAgIHBhZ2UtPnByb2Nlc3NEaWRUZXJtaW5hdGUocmVhc29uKTsKIH0KIAogdm9pZCBXZWJQ
cm9jZXNzUHJveHk6OnN0b3BSZXNwb25zaXZlbmVzc1RpbWVyKCkKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwCShy
ZXZpc2lvbiAyMjMwNjUpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRXZWJDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYxOCw5ICsxNjE4LDcgQEAgdm9p
ZCB3ZWJraXRXZWJDb250ZXh0U3RvcExvYWRpbmdDdXN0b21QcgogCiB2b2lkIHdlYmtpdFdlYkNv
bnRleHRJbnZhbGlkYXRlQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0cyhXZWJLaXRXZWJDb250ZXh0KiBj
b250ZXh0LCBMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSYgbWFuYWdlcikKIHsKLSAg
ICBWZWN0b3I8R1JlZlB0cjxXZWJLaXRVUklTY2hlbWVSZXF1ZXN0Pj4gcmVxdWVzdHM7Ci0gICAg
Y29weVZhbHVlc1RvVmVjdG9yKGNvbnRleHQtPnByaXYtPnVyaVNjaGVtZVJlcXVlc3RzLCByZXF1
ZXN0cyk7Ci0gICAgZm9yIChhdXRvJiByZXF1ZXN0IDogcmVxdWVzdHMpIHsKKyAgICBmb3IgKGF1
dG8mIHJlcXVlc3QgOiBjb3B5VG9WZWN0b3IoY29udGV4dC0+cHJpdi0+dXJpU2NoZW1lUmVxdWVz
dHMudmFsdWVzKCkpKSB7CiAgICAgICAgIGlmICh3ZWJraXRVUklTY2hlbWVSZXF1ZXN0R2V0TWFu
YWdlcihyZXF1ZXN0LmdldCgpKSA9PSAmbWFuYWdlcikKICAgICAgICAgICAgIHdlYmtpdFVSSVNj
aGVtZVJlcXVlc3RJbnZhbGlkYXRlKHJlcXVlc3QuZ2V0KCkpOwogICAgIH0KSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2Uu
Y3BwCShyZXZpc2lvbiAyMjMwNjUpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYlZpZXdCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDc1LDkgKzQ3NSw3IEBA
IHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlQ29udGFpbmVyRm8KICAgICBXZWJLaXRXZWJW
aWV3QmFzZSogd2ViVmlldyA9IFdFQktJVF9XRUJfVklFV19CQVNFKGNvbnRhaW5lcik7CiAgICAg
V2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKiBwcml2ID0gd2ViVmlldy0+cHJpdjsKIAotICAgIFZl
Y3RvcjxHdGtXaWRnZXQqPiBjaGlsZHJlbjsKLSAgICBjb3B5S2V5c1RvVmVjdG9yKHByaXYtPmNo
aWxkcmVuLCBjaGlsZHJlbik7Ci0gICAgZm9yIChjb25zdCBhdXRvJiBjaGlsZCA6IGNoaWxkcmVu
KSB7CisgICAgZm9yIChjb25zdCBhdXRvJiBjaGlsZCA6IGNvcHlUb1ZlY3Rvcihwcml2LT5jaGls
ZHJlbi5rZXlzKCkpKSB7CiAgICAgICAgIGlmIChwcml2LT5jaGlsZHJlbi5jb250YWlucyhjaGls
ZCkpCiAgICAgICAgICAgICAoKmNhbGxiYWNrKShjaGlsZCwgY2FsbGJhY2tEYXRhKTsKICAgICB9
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XS1dlYlZpZXdDb250ZW50UHJv
dmlkZXJSZWdpc3RyeS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9XS1dlYlZpZXdDb250ZW50UHJvdmlkZXJSZWdpc3RyeS5tbQkocmV2aXNpb24gMjIzMDY1
KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV0tXZWJWaWV3Q29udGVudFByb3Zp
ZGVyUmVnaXN0cnkubW0JKHdvcmtpbmcgY29weSkKQEAgLTg5LDkgKzg5LDcgQEAgLSAoQ2xhc3Mg
PFdLV2ViVmlld0NvbnRlbnRQcm92aWRlcj4pcHJvdgogCiAtIChWZWN0b3I8U3RyaW5nPilfbWlt
ZVR5cGVzV2l0aEN1c3RvbUNvbnRlbnRQcm92aWRlcnMKIHsKLSAgICBWZWN0b3I8U3RyaW5nPiBt
aW1lVHlwZXM7Ci0gICAgY29weUtleXNUb1ZlY3RvcihfY29udGVudFByb3ZpZGVyRm9yTUlNRVR5
cGUsIG1pbWVUeXBlcyk7Ci0gICAgcmV0dXJuIG1pbWVUeXBlczsKKyAgICByZXR1cm4gY29weVRv
VmVjdG9yKF9jb250ZW50UHJvdmlkZXJGb3JNSU1FVHlwZS5rZXlzKCkpOwogfQogCiBAZW5kCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCShyZXZpc2lvbiAyMjMw
NjUpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTY2NSwxMCArNjY1LDcgQEAgdm9pZCBXZWJQcm9jZXNzOjpkaWRSZWNlaXZlTWVz
c2FnZShJUEM6Ogogdm9pZCBXZWJQcm9jZXNzOjpkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mKQog
ewogI2lmbmRlZiBOREVCVUcKLSAgICAvLyBDbG9zZSBhbGwgdGhlIGxpdmUgcGFnZXMuCi0gICAg
VmVjdG9yPFJlZlB0cjxXZWJQYWdlPj4gcGFnZXM7Ci0gICAgY29weVZhbHVlc1RvVmVjdG9yKG1f
cGFnZU1hcCwgcGFnZXMpOwotICAgIGZvciAoYXV0byYgcGFnZSA6IHBhZ2VzKQorICAgIGZvciAo
YXV0byYgcGFnZSA6IGNvcHlUb1ZlY3RvcihtX3BhZ2VNYXAudmFsdWVzKCkpKQogICAgICAgICBw
YWdlLT5jbG9zZSgpOwogICAgIHBhZ2VzLmNsZWFyKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCShyZXZpc2lvbiAyMjMwNjUp
CisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTI4NCwxMSArMTI4NCw4IEBAIHZvaWQgUGx1Z2luVmlldzo6cmVtb3Zl
U3RyZWFtKFN0cmVhbSogc3QKIAogdm9pZCBQbHVnaW5WaWV3OjpjYW5jZWxBbGxTdHJlYW1zKCkK
IHsKLSAgICBWZWN0b3I8UmVmUHRyPFN0cmVhbT4+IHN0cmVhbXM7Ci0gICAgY29weVZhbHVlc1Rv
VmVjdG9yKG1fc3RyZWFtcywgc3RyZWFtcyk7Ci0gICAgCi0gICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBzdHJlYW1zLnNpemUoKTsgKytpKQotICAgICAgICBzdHJlYW1zW2ldLT5jYW5jZWwoKTsK
KyAgICBmb3IgKGF1dG8mIHN0cmVhbSA6IGNvcHlUb1ZlY3RvcihtX3N0cmVhbXMudmFsdWVzKCkp
KQorICAgICAgICBzdHJlYW0tPmNhbmNlbCgpOwogCiAgICAgLy8gQ2FuY2VsbGluZyBhIHN0cmVh
bSByZW1vdmVzIGl0IGZyb20gdGhlIG1fc3RyZWFtcyBtYXAsIHNvIGlmIHdlIGNhbmNlbCBhbGwg
c3RyZWFtcyB0aGUgbWFwIHNob3VsZCBiZSBlbXB0eS4KICAgICBBU1NFUlQobV9zdHJlYW1zLmlz
RW1wdHkoKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS9OUFJ1bnRpbWVPYmplY3RNYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QUnVudGltZU9iamVjdE1hcC5jcHAJKHJldmlzaW9u
IDIyMzA2NSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05Q
UnVudGltZU9iamVjdE1hcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwMCwxMiArMjAwLDkgQEAg
Ym9vbCBOUFJ1bnRpbWVPYmplY3RNYXA6OmV2YWx1YXRlKE5QT2JqZQogCiB2b2lkIE5QUnVudGlt
ZU9iamVjdE1hcDo6aW52YWxpZGF0ZSgpCiB7Ci0gICAgVmVjdG9yPE5QSlNPYmplY3QqPiBucEpT
T2JqZWN0czsKLSAgICBjb3B5VmFsdWVzVG9WZWN0b3IobV9ucEpTT2JqZWN0cywgbnBKU09iamVj
dHMpOwotCiAgICAgLy8gRGVhbGxvY2F0ZSBhbGwgdGhlIG9iamVjdCB3cmFwcGVycyBzbyB3ZSB3
b24ndCBsZWFrIGFueSBKYXZhU2NyaXB0IG9iamVjdHMuCi0gICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBucEpTT2JqZWN0cy5zaXplKCk7ICsraSkKLSAgICAgICAgZGVhbGxvY2F0ZU5QT2JqZWN0
KG5wSlNPYmplY3RzW2ldKTsKKyAgICBmb3IgKGF1dG8mIG5wSlNPYmplY3QgOiBjb3B5VG9WZWN0
b3IobV9ucEpTT2JqZWN0cy52YWx1ZXMoKSkpCisgICAgICAgIGRlYWxsb2NhdGVOUE9iamVjdChu
cEpTT2JqZWN0KTsKICAgICAKICAgICAvLyBXZSBzaG91bGRuJ3QgaGF2ZSBhbnkgTlBKU09iamVj
dHMgbGVmdCBub3cuCiAgICAgQVNTRVJUKG1fbnBKU09iamVjdHMuaXNFbXB0eSgpKTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2lu
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAJKHJldmlzaW9uIDIyMzA2NSkKKysrIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTY4LDExICs1NjgsOCBAQCBOZXRzY2FwZVBsdWdpblN0cmVhbSogTmV0c2Nh
cGVQbHVnaW46OnN0CiAKIHZvaWQgTmV0c2NhcGVQbHVnaW46OnN0b3BBbGxTdHJlYW1zKCkKIHsK
LSAgICBWZWN0b3I8UmVmUHRyPE5ldHNjYXBlUGx1Z2luU3RyZWFtPj4gc3RyZWFtczsKLSAgICBj
b3B5VmFsdWVzVG9WZWN0b3IobV9zdHJlYW1zLCBzdHJlYW1zKTsKLQotICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgc3RyZWFtcy5zaXplKCk7ICsraSkKLSAgICAgICAgc3RyZWFtc1tpXS0+c3Rv
cChOUFJFU19VU0VSX0JSRUFLKTsKKyAgICBmb3IgKGF1dG8mIHN0cmVhbSA6IGNvcHlUb1ZlY3Rv
cihtX3N0cmVhbXMudmFsdWVzKCkpKQorICAgICAgICBzdHJlYW0tPnN0b3AoTlBSRVNfVVNFUl9C
UkVBSyk7CiB9CiAKIGJvb2wgTmV0c2NhcGVQbHVnaW46OmFsbG93UG9wdXBzKCkgY29uc3QKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1v
dGVMYXllclRyZWVDb250ZXh0Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVDb250ZXh0Lm1tCShy
ZXZpc2lvbiAyMjMwNjUpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1v
dGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlQ29udGV4dC5tbQkod29ya2luZyBjb3B5KQpAQCAt
MTI2LDkgKzEyNiw3IEBAIHZvaWQgUmVtb3RlTGF5ZXJUcmVlQ29udGV4dDo6YnVpbGRUcmFuc2EK
ICAgICByb290TGF5ZXJSZW1vdGUucmVjdXJzaXZlQnVpbGRUcmFuc2FjdGlvbigqdGhpcywgdHJh
bnNhY3Rpb24pOwogICAgIG1fY3VycmVudFRyYW5zYWN0aW9uID0gbnVsbHB0cjsKIAotICAgIFZl
Y3RvcjxSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJDcmVhdGlvblByb3BlcnRpZXM+
IGNyZWF0ZWRMYXllclByb3BlcnRpZXM7Ci0gICAgY29weVZhbHVlc1RvVmVjdG9yKG1fY3JlYXRl
ZExheWVycywgY3JlYXRlZExheWVyUHJvcGVydGllcyk7Ci0gICAgdHJhbnNhY3Rpb24uc2V0Q3Jl
YXRlZExheWVycyhXVEZNb3ZlKGNyZWF0ZWRMYXllclByb3BlcnRpZXMpKTsKKyAgICB0cmFuc2Fj
dGlvbi5zZXRDcmVhdGVkTGF5ZXJzKGNvcHlUb1ZlY3RvcihtX2NyZWF0ZWRMYXllcnMudmFsdWVz
KCkpKTsKICAgICB0cmFuc2FjdGlvbi5zZXREZXN0cm95ZWRMYXllcklEcyhXVEZNb3ZlKG1fZGVz
dHJveWVkTGF5ZXJzKSk7CiAgICAgCiAgICAgbV9jcmVhdGVkTGF5ZXJzLmNsZWFyKCk7CkluZGV4
OiBTb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0TGVnYWN5L0NoYW5nZUxvZwkocmV2aXNpb24gMjIzMDY1KQorKysgU291cmNlL1dlYktpdExl
Z2FjeS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxNy0xMC0w
OSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIFJlcGxhY2UgY29weUtl
eXNUb1ZlY3Rvci9jb3B5VmFsdWVzVG9WZWN0b3Igd2l0aCBjb3B5VG9WZWN0b3IobWFwLmtleXMo
KSkvY29weVRvVmVjdG9yKG1hcC52YWx1ZXMoKSkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODEwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2No
ZWR1bGVyLmNwcDoKKyAgICAgICAgKFdlYlJlc291cmNlTG9hZFNjaGVkdWxlcjo6c2VydmVQZW5k
aW5nUmVxdWVzdHMpOgorCiAyMDE3LTEwLTA1ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNv
bT4KIAogICAgICAgICBSZW1vdmUgYWRkaXRpb25hbCBXZWJLaXRTeXN0ZW1JbnRlcmZhY2UgcmVt
bmFudHMKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3Vy
Y2VMb2FkU2NoZWR1bGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L1dl
YkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAJKHJldmlzaW9uIDIyMzA2
NSkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2Fk
U2NoZWR1bGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjIyLDEwICsyMjIsNyBAQCB2b2lkIFdl
YlJlc291cmNlTG9hZFNjaGVkdWxlcjo6c2VydmVQZW5kCiAgICAgCiAgICAgc2VydmVQZW5kaW5n
UmVxdWVzdHMobV9ub25IVFRQUHJvdG9jb2xIb3N0LCBtaW5pbXVtUHJpb3JpdHkpOwogCi0gICAg
VmVjdG9yPEhvc3RJbmZvcm1hdGlvbio+IGhvc3RzVG9TZXJ2ZTsKLSAgICBjb3B5VmFsdWVzVG9W
ZWN0b3IobV9ob3N0cywgaG9zdHNUb1NlcnZlKTsKLQotICAgIGZvciAoYXV0byogaG9zdCA6IGhv
c3RzVG9TZXJ2ZSkgeworICAgIGZvciAoYXV0byogaG9zdCA6IGNvcHlUb1ZlY3RvcihtX2hvc3Rz
LnZhbHVlcygpKSkgewogICAgICAgICBpZiAoaG9zdC0+aGFzUmVxdWVzdHMoKSkKICAgICAgICAg
ICAgIHNlcnZlUGVuZGluZ1JlcXVlc3RzKGhvc3QsIG1pbmltdW1Qcmlvcml0eSk7CiAgICAgICAg
IGVsc2UKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMzA2NSkK
KysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDE3IEBACisyMDE3LTEwLTA5ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisK
KyAgICAgICAgUmVwbGFjZSBjb3B5S2V5c1RvVmVjdG9yL2NvcHlWYWx1ZXNUb1ZlY3RvciB3aXRo
IGNvcHlUb1ZlY3RvcihtYXAua2V5cygpKS9jb3B5VG9WZWN0b3IobWFwLnZhbHVlcygpKQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4MTAyCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBIaXN0b3J5L1dl
Ykhpc3RvcnkubW06CisgICAgICAgICgtW1dlYkhpc3RvcnlQcml2YXRlIHJlYnVpbGRIaXN0b3J5
QnlEYXlJZk5lZWRlZDpdKToKKyAgICAgICAgKiBQbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdp
bkluc3RhbmNlUHJveHkubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luSW5zdGFu
Y2VQcm94eTo6c3RvcEFsbFN0cmVhbXMpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlVz
ZXJNZWRpYUNsaWVudC5tbToKKyAgICAgICAgKFdlYlVzZXJNZWRpYUNsaWVudDo6cGFnZURlc3Ry
b3llZCk6CisKIDIwMTctMTAtMDkgIFJvYmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNv
bT4KIAogICAgICAgICBNYWtlIHRoZSBuYW1lcyBvZiB0aGUgb3B0aW9ucyBjb25zaXN0ZW50Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L1dlYkhpc3RvcnkubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5Lm1tCShy
ZXZpc2lvbiAyMjMwNjUpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L1dlYkhp
c3RvcnkubW0JKHdvcmtpbmcgY29weSkKQEAgLTM2Niw4ICszNjYsNyBAQCAtICh2b2lkKXJlYnVp
bGRIaXN0b3J5QnlEYXlJZk5lZWRlZDooV2ViCiB7CiAgICAgLy8gV2UgY2xlYXIgYWxsIHRoZSB2
YWx1ZXMgdG8gcHJlc2VudCBhIGNvbnNpc3RlbnQgc3RhdGUgd2hlbiBzZW5kaW5nIHRoZSBub3Rp
ZmljYXRpb25zLgogICAgIC8vIFdlIGtlZXAgYSByZWZlcmVuY2UgdG8gdGhlIGVudHJpZXMgZm9y
IHJlYnVpbGRpbmcgdGhlIGhpc3RvcnkgYWZ0ZXIgdGhlIG5vdGlmaWNhdGlvbi4KLSAgICBWZWN0
b3IgPFJldGFpblB0cjxOU011dGFibGVBcnJheT4+IGVudHJ5QXJyYXlzOwotICAgIGNvcHlWYWx1
ZXNUb1ZlY3RvcigqX2VudHJpZXNCeURhdGUsIGVudHJ5QXJyYXlzKTsKKyAgICBhdXRvIGVudHJ5
QXJyYXlzID0gY29weVRvVmVjdG9yKF9lbnRyaWVzQnlEYXRlLT52YWx1ZXMoKSk7CiAgICAgX2Vu
dHJpZXNCeURhdGUtPmNsZWFyKCk7CiAgICAgCiAgICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqZW50
cmllc0J5VVJMID0gX2VudHJpZXNCeVVSTDsKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdp
bkluc3RhbmNlUHJveHkubW0JKHJldmlzaW9uIDIyMzA2NSkKKysrIFNvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQkod29y
a2luZyBjb3B5KQpAQCAtMjkzLDEwICsyOTMsOCBAQCB2b2lkIE5ldHNjYXBlUGx1Z2luSW5zdGFu
Y2VQcm94eTo6bGF5ZXJICiAKIHZvaWQgTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpzdG9w
QWxsU3RyZWFtcygpCiB7Ci0gICAgVmVjdG9yPFJlZlB0cjxIb3N0ZWROZXRzY2FwZVBsdWdpblN0
cmVhbT4+IHN0cmVhbXNDb3B5OwotICAgIGNvcHlWYWx1ZXNUb1ZlY3RvcihtX3N0cmVhbXMsIHN0
cmVhbXNDb3B5KTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0cmVhbXNDb3B5LnNpemUo
KTsgaSsrKQotICAgICAgICBzdHJlYW1zQ29weVtpXS0+c3RvcCgpOworICAgIGZvciAoYXV0byYg
c3RyZWFtIDogY29weVRvVmVjdG9yKG1fc3RyZWFtcy52YWx1ZXMoKSkpCisgICAgICAgIHN0cmVh
bS0+c3RvcCgpOwogfQogCiB2b2lkIE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6Y2xlYW51
cCgpCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJVc2Vy
TWVkaWFDbGllbnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViVXNlck1lZGlhQ2xpZW50Lm1tCShyZXZpc2lvbiAyMjMwNjUpCisrKyBT
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTEwOSw4ICsxMDksNyBAQCBXZWJVc2VyTWVkaWFDbGllbnQ6
On5XZWJVc2VyTWVkaWFDbGllbnQoCiB2b2lkIFdlYlVzZXJNZWRpYUNsaWVudDo6cGFnZURlc3Ry
b3llZCgpCiB7CiAgICAgYXV0byYgcmVxdWVzdHNNYXAgPSB1c2VyTWVkaWFSZXF1ZXN0c01hcCgp
OwotICAgIFZlY3RvcjxSZXRhaW5QdHI8V2ViVXNlck1lZGlhUG9saWN5TGlzdGVuZXI+PiBwZW5k
aW5nUmVxdWVzdHM7Ci0gICAgY29weVZhbHVlc1RvVmVjdG9yKHJlcXVlc3RzTWFwLCBwZW5kaW5n
UmVxdWVzdHMpOworICAgIGF1dG8gcGVuZGluZ1JlcXVlc3RzID0gY29weVRvVmVjdG9yKHJlcXVl
c3RzTWFwLnZhbHVlcygpKTsKICAgICByZXF1ZXN0c01hcC5jbGVhcigpOwogCiAgICAgZm9yIChh
dXRvJiByZXF1ZXN0IDogcGVuZGluZ1JlcXVlc3RzKQpAQCAtMTE5LDggKzExOCw3IEBAIHZvaWQg
V2ViVXNlck1lZGlhQ2xpZW50OjpwYWdlRGVzdHJveWVkKCkKICAgICBBU1NFUlQodXNlck1lZGlh
UmVxdWVzdHNNYXAoKS5pc0VtcHR5KCkpOwogCiAgICAgYXV0byYgY2hlY2tNYXAgPSB1c2VyTWVk
aWFDaGVja01hcCgpOwotICAgIFZlY3RvcjxSZXRhaW5QdHI8V2ViVXNlck1lZGlhUG9saWN5Q2hl
Y2tlckxpc3RlbmVyPj4gcGVuZGluZ0NoZWNrczsKLSAgICBjb3B5VmFsdWVzVG9WZWN0b3IoY2hl
Y2tNYXAsIHBlbmRpbmdDaGVja3MpOworICAgIGF1dG8gcGVuZGluZ0NoZWNrcyA9IGNvcHlUb1Zl
Y3RvcihjaGVja01hcC52YWx1ZXMoKSk7CiAgICAgY2hlY2tNYXAuY2xlYXIoKTsKIAogICAgIGZv
ciAoYXV0byYgY2hlY2sgOiBwZW5kaW5nQ2hlY2tzKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>323251</attachid>
            <date>2017-10-09 17:22:37 -0700</date>
            <delta_ts>2017-10-09 20:01:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178102-20171009172236.patch</filename>
            <type>text/plain</type>
            <size>42220</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjIzMTA4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBA
CisyMDE3LTEwLTA5ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVw
bGFjZSBjb3B5S2V5c1RvVmVjdG9yL2NvcHlWYWx1ZXNUb1ZlY3RvciB3aXRoIGNvcHlUb1ZlY3Rv
cihtYXAua2V5cygpKS9jb3B5VG9WZWN0b3IobWFwLnZhbHVlcygpKQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4MTAyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50OjpjbGVhckluc3BlY3RvckJyZWFrcG9pbnRTdGF0ZSk6CisKIDIwMTctMTAtMDkg
IFJvYmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4KIAogICAgICAgICBSZWZhY3Rv
ciB0aGUgaW5saW5lciB0byBzaW1wbGlmeSBibG9jayBsaW5raW5nCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAkocmV2aXNpb24gMjIzMDY1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEwNzEsOSArMTA3MSw3IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJB
Z2VudDo6YnJlYWtQcm9ncmEKIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y2xlYXJJbnNw
ZWN0b3JCcmVha3BvaW50U3RhdGUoKQogewogICAgIEVycm9yU3RyaW5nIGR1bW15RXJyb3I7Ci0g
ICAgVmVjdG9yPFN0cmluZz4gYnJlYWtwb2ludElkZW50aWZpZXJzOwotICAgIGNvcHlLZXlzVG9W
ZWN0b3IobV9icmVha3BvaW50SWRlbnRpZmllclRvRGVidWdTZXJ2ZXJCcmVha3BvaW50SURzLCBi
cmVha3BvaW50SWRlbnRpZmllcnMpOwotICAgIGZvciAoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVy
IDogYnJlYWtwb2ludElkZW50aWZpZXJzKQorICAgIGZvciAoY29uc3QgU3RyaW5nJiBpZGVudGlm
aWVyIDogY29weVRvVmVjdG9yKG1fYnJlYWtwb2ludElkZW50aWZpZXJUb0RlYnVnU2VydmVyQnJl
YWtwb2ludElEcy5rZXlzKCkpKQogICAgICAgICByZW1vdmVCcmVha3BvaW50KGR1bW15RXJyb3Is
IGlkZW50aWZpZXIpOwogCiAgICAgbV9qYXZhU2NyaXB0QnJlYWtwb2ludHMuY2xlYXIoKTsKSW5k
ZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hhbmdl
TG9nCShyZXZpc2lvbiAyMjMwNjUpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDE3LTEwLTA5ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgUmVwbGFjZSBjb3B5S2V5c1RvVmVjdG9yL2NvcHlWYWx1ZXNUb1Zl
Y3RvciB3aXRoIGNvcHlUb1ZlY3RvcihtYXAua2V5cygpKS9jb3B5VG9WZWN0b3IobWFwLnZhbHVl
cygpKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4
MTAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3
dGYvSGFzaE1hcC5oOgorICAgICAgICAoV1RGOjpjb3B5S2V5c1RvVmVjdG9yKTogRGVsZXRlZC4K
KyAgICAgICAgKFdURjo6Y29weVZhbHVlc1RvVmVjdG9yKTogRGVsZXRlZC4KKyAgICAgICAgCisg
ICAgICAgICAgICBSZW1vdmUgY29weUtleXNUb1ZlY3RvciBhbmQgY29weVZhbHVlc1RvVmVjdG9y
IHdoaWNoIGFyZSBubyBsb25nZXIgdXNlZC4KKwogMjAxNy0xMC0wOSAgU2FtIFdlaW5pZyAgPHNh
bUB3ZWJraXQub3JnPgogCiAgICAgICAgIE1ha2UgSGFzaE1hcDo6a2V5cygpIGFuZCBIYXNoTWFw
Ojp2YWx1ZXMoKSB3b3JrIHdpdGggV1RGOjptYXAvV1RGOjpjb3B5VG9WZWN0b3IKSW5kZXg6IFNv
dXJjZS9XVEYvd3RmL0hhc2hNYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9IYXNo
TWFwLmgJKHJldmlzaW9uIDIyMzA2NSkKKysrIFNvdXJjZS9XVEYvd3RmL0hhc2hNYXAuaAkod29y
a2luZyBjb3B5KQpAQCAtNTg5LDMyICs1ODksNiBAQCBpbmxpbmUgdm9pZCBjb3B5VG9WZWN0b3Io
Y29uc3QgSGFzaE1hcDxUCiAgICAgICAgIHZlY3RvcltpXSA9IHsgKCppdCkua2V5LCAoKml0KS52
YWx1ZSB9OwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBW
LCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYLCB0eXBlbmFtZSBZPgotaW5saW5lIHZvaWQgY29weUtl
eXNUb1ZlY3Rvcihjb25zdCBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+JiBjb2xsZWN0aW9uLCBZJiB2
ZWN0b3IpCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+Ojpj
b25zdF9pdGVyYXRvcjo6S2V5cyBpdGVyYXRvcjsKLSAgICAKLSAgICB2ZWN0b3IucmVzaXplKGNv
bGxlY3Rpb24uc2l6ZSgpKTsKLSAgICAKLSAgICBpdGVyYXRvciBpdCA9IGNvbGxlY3Rpb24uYmVn
aW4oKS5rZXlzKCk7Ci0gICAgaXRlcmF0b3IgZW5kID0gY29sbGVjdGlvbi5lbmQoKS5rZXlzKCk7
Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaXQgIT0gZW5kOyArK2l0LCArK2kpCi0gICAgICAg
IHZlY3RvcltpXSA9ICppdDsKLX0gIAotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBV
LCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYLCB0eXBlbmFtZSBZPgotaW5saW5l
IHZvaWQgY29weVZhbHVlc1RvVmVjdG9yKGNvbnN0IEhhc2hNYXA8VCwgVSwgViwgVywgWD4mIGNv
bGxlY3Rpb24sIFkmIHZlY3RvcikKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEhhc2hNYXA8VCwg
VSwgViwgVywgWD46OmNvbnN0X2l0ZXJhdG9yOjpWYWx1ZXMgaXRlcmF0b3I7Ci0gICAgCi0gICAg
dmVjdG9yLnJlc2l6ZShjb2xsZWN0aW9uLnNpemUoKSk7Ci0gICAgCi0gICAgaXRlcmF0b3IgaXQg
PSBjb2xsZWN0aW9uLmJlZ2luKCkudmFsdWVzKCk7Ci0gICAgaXRlcmF0b3IgZW5kID0gY29sbGVj
dGlvbi5lbmQoKS52YWx1ZXMoKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpdCAhPSBlbmQ7
ICsraXQsICsraSkKLSAgICAgICAgdmVjdG9yW2ldID0gKml0OwotfSAgIAotCiB9IC8vIG5hbWVz
cGFjZSBXVEYKIAogdXNpbmcgV1RGOjpIYXNoTWFwOwpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24g
MjIzMDY1KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsNDcgQEAKKzIwMTctMTAtMDkgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KKwor
ICAgICAgICBSZXBsYWNlIGNvcHlLZXlzVG9WZWN0b3IvY29weVZhbHVlc1RvVmVjdG9yIHdpdGgg
Y29weVRvVmVjdG9yKG1hcC5rZXlzKCkpL2NvcHlUb1ZlY3RvcihtYXAudmFsdWVzKCkpCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzgxMDIKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1vZHVsZXMvZ2Vv
bG9jYXRpb24vR2VvbG9jYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246
OldhdGNoZXJzOjpnZXROb3RpZmllcnNWZWN0b3IgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5z
YWN0aW9uOjpjb25uZWN0aW9uQ2xvc2VkRnJvbVNlcnZlcik6CisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Qcm94eS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eTo6Y29ubmVjdGlvblRvU2VydmVyTG9zdCk6
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmltbWVk
aWF0ZUNsb3NlRm9yVXNlckRlbGV0ZSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9N
ZWRpYVN0cmVhbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbTo6Z2V0VHJhY2tz
IGNvbnN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OndpbmRvd1Byb3hpZXMpOgorICAgICAg
ICAqIGNzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjppdGVtIGNvbnN0KToKKyAgICAgICAgKiBk
b20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnByZXBhcmVGb3JE
ZXN0cnVjdGlvbik6CisgICAgICAgICogZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OnJlbW92ZU1hcmtl
cnMpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JXb3JrZXJBZ2VudDo6ZGlzY29ubmVjdEZyb21BbGxXb3Jr
ZXJJbnNwZWN0b3JQcm94aWVzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNl
c0RhdGEuY3BwOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpjYW5jZWxBbGwpOgorICAgICAgICAoV2ViQ29yZTo6c2V0QWxsRGVmZXJzTG9h
ZGluZyk6CisgICAgICAgIChXZWJDb3JlOjphcmVBbGxMb2FkZXJzUGFnZUNhY2hlQWNjZXB0YWJs
ZSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1lbW9yeUNhY2hlOjpmb3JFYWNoU2Vzc2lvblJlc291cmNlKToKKyAgICAgICAgKiBs
b2FkZXIvbWFjL0RvY3VtZW50TG9hZGVyTWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNjaGVk
dWxlQWxsKToKKyAgICAgICAgKFdlYkNvcmU6OnVuc2NoZWR1bGVBbGwpOgorICAgICAgICAqIHBh
Z2UvUmVzb3VyY2VVc2FnZVRocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVVz
YWdlVGhyZWFkOjpub3RpZnlPYnNlcnZlcnMpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtUHJpdmF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVh
bVByaXZhdGU6OnRyYWNrcyBjb25zdCk6CisKKyAgICAgICAgICAgIFJlcGxhY2UgY29weUtleXNU
b1ZlY3RvciAvIGNvcHlWYWx1ZXNUb1ZlY3RvciB3aXRoIGNvcHlUb1ZlY3RvcihtYXAua2V5cygp
KSAvIGNvcHlUb1ZlY3RvcihtYXAudmFsdWVzKCkpCisKIDIwMTctMTAtMDkgIERlYW4gSmFja3Nv
biAgPGRpbm9AYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJHTF0gVGhpcmQgSU9TdXJmYWNlIGJ1
ZmZlciBtaWdodCBiZSBhbGxvY2F0ZWQgd2l0aCB0aGUgd3Jvbmcgc2l6ZQpJbmRleDogU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHAJKHJl
dmlzaW9uIDIyMzA2NSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2Vv
bG9jYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjcsNyArMTI3LDcgQEAgYm9vbCBHZW9s
b2NhdGlvbjo6V2F0Y2hlcnM6OmlzRW1wdHkoKSBjbwogCiB2b2lkIEdlb2xvY2F0aW9uOjpXYXRj
aGVyczo6Z2V0Tm90aWZpZXJzVmVjdG9yKEdlb05vdGlmaWVyVmVjdG9yJiBjb3B5KSBjb25zdAog
ewotICAgIGNvcHlWYWx1ZXNUb1ZlY3RvcihtX2lkVG9Ob3RpZmllck1hcCwgY29weSk7CisgICAg
Y29weSA9IGNvcHlUb1ZlY3RvcihtX2lkVG9Ob3RpZmllck1hcC52YWx1ZXMoKSk7CiB9CiAKIFJl
ZjxHZW9sb2NhdGlvbj4gR2VvbG9jYXRpb246OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0KQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJh
bnNhY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAkocmV2aXNpb24gMjIzMDY1KQorKysgU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMzY4LDEwICsxMzY4LDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6Y29ubmVjdGlvbkNsb3Nl
ZEZybwogCiAgICAgYWJvcnRJblByb2dyZXNzT3BlcmF0aW9ucyhlcnJvcik7CiAKLSAgICBWZWN0
b3I8UmVmUHRyPElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24+PiBvcGVyYXRpb25zOwot
ICAgIGNvcHlWYWx1ZXNUb1ZlY3RvcihtX3RyYW5zYWN0aW9uT3BlcmF0aW9uTWFwLCBvcGVyYXRp
b25zKTsKLQotICAgIGZvciAoYXV0byYgb3BlcmF0aW9uIDogb3BlcmF0aW9ucykgeworICAgIGZv
ciAoYXV0byYgb3BlcmF0aW9uIDogY29weVRvVmVjdG9yKG1fdHJhbnNhY3Rpb25PcGVyYXRpb25N
YXAudmFsdWVzKCkpKSB7CiAgICAgICAgIG1fY3VycmVudGx5Q29tcGxldGluZ1JlcXVlc3QgPSBu
dWxscHRyOwogICAgICAgICBtX3RyYW5zYWN0aW9uT3BlcmF0aW9uc0luUHJvZ3Jlc3NRdWV1ZS5h
cHBlbmQob3BlcmF0aW9uLmdldCgpKTsKICAgICAgICAgQVNTRVJUKG1fdHJhbnNhY3Rpb25PcGVy
YXRpb25zSW5Qcm9ncmVzc1F1ZXVlLmZpcnN0KCkgPT0gb3BlcmF0aW9uLmdldCgpKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uUHJv
eHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2Ns
aWVudC9JREJDb25uZWN0aW9uUHJveHkuY3BwCShyZXZpc2lvbiAyMjMwNjUpCisrKyBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblByb3h5LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDIyLDcgKzQyMiw3IEBAIHZvaWQgSURCQ29ubmVjdGlvblByb3h5
Ojpjb25uZWN0aW9uVG9TZXIKICAgICBWZWN0b3I8dWludDY0X3Q+IGRhdGFiYXNlQ29ubmVjdGlv
bklkZW50aWZpZXJzOwogICAgIHsKICAgICAgICAgTG9ja2VyPExvY2s+IGxvY2tlcihtX2RhdGFi
YXNlQ29ubmVjdGlvbk1hcExvY2spOwotICAgICAgICBjb3B5S2V5c1RvVmVjdG9yKG1fZGF0YWJh
c2VDb25uZWN0aW9uTWFwLCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVycyk7CisgICAgICAg
IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXJzID0gY29weVRvVmVjdG9yKG1fZGF0YWJhc2VD
b25uZWN0aW9uTWFwLmtleXMoKSk7CiAgICAgfQogCiAgICAgZm9yIChhdXRvIGNvbm5lY3Rpb25J
ZGVudGlmaWVyIDogZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcnMpIHsKQEAgLTQ0MSw3ICs0
NDEsNyBAQCB2b2lkIElEQkNvbm5lY3Rpb25Qcm94eTo6Y29ubmVjdGlvblRvU2VyCiAgICAgVmVj
dG9yPElEQlJlc291cmNlSWRlbnRpZmllcj4gb3BlbkRCUmVxdWVzdElkZW50aWZpZXJzOwogICAg
IHsKICAgICAgICAgTG9ja2VyPExvY2s+IGxvY2tlcihtX29wZW5EQlJlcXVlc3RNYXBMb2NrKTsK
LSAgICAgICAgY29weUtleXNUb1ZlY3RvcihtX29wZW5EQlJlcXVlc3RNYXAsIG9wZW5EQlJlcXVl
c3RJZGVudGlmaWVycyk7CisgICAgICAgIG9wZW5EQlJlcXVlc3RJZGVudGlmaWVycyA9IGNvcHlU
b1ZlY3RvcihtX29wZW5EQlJlcXVlc3RNYXAua2V5cygpKTsKICAgICB9CiAKICAgICBmb3IgKGF1
dG8mIHJlcXVlc3RJZGVudGlmaWVyIDogb3BlbkRCUmVxdWVzdElkZW50aWZpZXJzKSB7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJh
c2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHAJKHJldmlzaW9uIDIyMzA2NSkKKysrIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE4MTMsOSArMTgxMyw3IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6
OmltbWVkaWF0ZUNsb3NlRm8KICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCiAgICAgLy8g
RXJyb3Igb3V0IGFsbCB0cmFuc2FjdGlvbnMKLSAgICBWZWN0b3I8SURCUmVzb3VyY2VJZGVudGlm
aWVyPiBpblByb2dyZXNzSWRlbnRpZmllcnM7Ci0gICAgY29weUtleXNUb1ZlY3RvcihtX2luUHJv
Z3Jlc3NUcmFuc2FjdGlvbnMsIGluUHJvZ3Jlc3NJZGVudGlmaWVycyk7Ci0gICAgZm9yIChhdXRv
JiBpZGVudGlmaWVyIDogaW5Qcm9ncmVzc0lkZW50aWZpZXJzKQorICAgIGZvciAoYXV0byYgaWRl
bnRpZmllciA6IGNvcHlUb1ZlY3RvcihtX2luUHJvZ3Jlc3NUcmFuc2FjdGlvbnMua2V5cygpKSkK
ICAgICAgICAgbV9pblByb2dyZXNzVHJhbnNhY3Rpb25zLmdldChpZGVudGlmaWVyKS0+YWJvcnRX
aXRob3V0Q2FsbGJhY2soKTsKIAogICAgIEFTU0VSVChtX2luUHJvZ3Jlc3NUcmFuc2FjdGlvbnMu
aXNFbXB0eSgpKTsKQEAgLTE4MjUsMjggKzE4MjMsMjAgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFz
ZTo6aW1tZWRpYXRlQ2xvc2VGbwogICAgIG1fb2JqZWN0U3RvcmVXcml0ZVRyYW5zYWN0aW9ucy5j
bGVhcigpOwogCiAgICAgLy8gRXJyb3Igb3V0IGFsbCBwZW5kaW5nIGNhbGxiYWNrcwotICAgIFZl
Y3Rvcjx1aW50NjRfdD4gY2FsbGJhY2tJZGVudGlmaWVyczsKICAgICBJREJFcnJvciBlcnJvciA9
IElEQkVycm9yOjp1c2VyRGVsZXRlRXJyb3IoKTsKICAgICBJREJLZXlEYXRhIGtleURhdGE7CiAg
ICAgSURCR2V0UmVzdWx0IGdldFJlc3VsdDsKIAotICAgIGNvcHlLZXlzVG9WZWN0b3IobV9lcnJv
ckNhbGxiYWNrcywgY2FsbGJhY2tJZGVudGlmaWVycyk7Ci0gICAgZm9yIChhdXRvIGlkZW50aWZp
ZXIgOiBjYWxsYmFja0lkZW50aWZpZXJzKQorICAgIGZvciAoYXV0byBpZGVudGlmaWVyIDogY29w
eVRvVmVjdG9yKG1fZXJyb3JDYWxsYmFja3Mua2V5cygpKSkKICAgICAgICAgcGVyZm9ybUVycm9y
Q2FsbGJhY2soaWRlbnRpZmllciwgZXJyb3IpOwogCi0gICAgY2FsbGJhY2tJZGVudGlmaWVycy5j
bGVhcigpOwotICAgIGNvcHlLZXlzVG9WZWN0b3IobV9rZXlEYXRhQ2FsbGJhY2tzLCBjYWxsYmFj
a0lkZW50aWZpZXJzKTsKLSAgICBmb3IgKGF1dG8gaWRlbnRpZmllciA6IGNhbGxiYWNrSWRlbnRp
ZmllcnMpCisgICAgZm9yIChhdXRvIGlkZW50aWZpZXIgOiBjb3B5VG9WZWN0b3IobV9rZXlEYXRh
Q2FsbGJhY2tzLmtleXMoKSkpCiAgICAgICAgIHBlcmZvcm1LZXlEYXRhQ2FsbGJhY2soaWRlbnRp
ZmllciwgZXJyb3IsIGtleURhdGEpOwogCi0gICAgY2FsbGJhY2tJZGVudGlmaWVycy5jbGVhcigp
OwotICAgIGNvcHlLZXlzVG9WZWN0b3IobV9nZXRSZXN1bHRDYWxsYmFja3MsIGNhbGxiYWNrSWRl
bnRpZmllcnMpOwotICAgIGZvciAoYXV0byBpZGVudGlmaWVyIDogY2FsbGJhY2tJZGVudGlmaWVy
cykKKyAgICBmb3IgKGF1dG8gaWRlbnRpZmllciA6IGNvcHlUb1ZlY3RvcihtX2dldFJlc3VsdENh
bGxiYWNrcy5rZXlzKCkpKQogICAgICAgICBwZXJmb3JtR2V0UmVzdWx0Q2FsbGJhY2soaWRlbnRp
ZmllciwgZXJyb3IsIGdldFJlc3VsdCk7CiAKLSAgICBjYWxsYmFja0lkZW50aWZpZXJzLmNsZWFy
KCk7Ci0gICAgY29weUtleXNUb1ZlY3RvcihtX2NvdW50Q2FsbGJhY2tzLCBjYWxsYmFja0lkZW50
aWZpZXJzKTsKLSAgICBmb3IgKGF1dG8gaWRlbnRpZmllciA6IGNhbGxiYWNrSWRlbnRpZmllcnMp
CisgICAgZm9yIChhdXRvIGlkZW50aWZpZXIgOiBjb3B5VG9WZWN0b3IobV9jb3VudENhbGxiYWNr
cy5rZXlzKCkpKQogICAgICAgICBwZXJmb3JtQ291bnRDYWxsYmFjayhpZGVudGlmaWVyLCBlcnJv
ciwgMCk7CiAKICAgICAvLyBFcnJvciBvdXQgYWxsIElEQk9wZW5EQlJlcXVlc3RzCkBAIC0xODYx
LDcgKzE4NTEsNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjppbW1lZGlhdGVDbG9zZUZvCiAg
ICAgbV9wZW5kaW5nT3BlbkRCUmVxdWVzdHMuY2xlYXIoKTsKIAogICAgIC8vIENsb3NlIGFsbCBv
cGVuIGNvbm5lY3Rpb25zCi0gICAgTGlzdEhhc2hTZXQ8UmVmUHRyPFVuaXF1ZUlEQkRhdGFiYXNl
Q29ubmVjdGlvbj4+IG9wZW5EYXRhYmFzZUNvbm5lY3Rpb25zID0gbV9vcGVuRGF0YWJhc2VDb25u
ZWN0aW9uczsKKyAgICBhdXRvIG9wZW5EYXRhYmFzZUNvbm5lY3Rpb25zID0gbV9vcGVuRGF0YWJh
c2VDb25uZWN0aW9uczsKICAgICBmb3IgKGF1dG8mIGNvbm5lY3Rpb24gOiBvcGVuRGF0YWJhc2VD
b25uZWN0aW9ucykKICAgICAgICAgY29ubmVjdGlvbkNsb3NlZEZyb21TZXJ2ZXIoKmNvbm5lY3Rp
b24pOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3Ry
ZWFtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L01lZGlhU3RyZWFtLmNwcAkocmV2aXNpb24gMjIzMDY1KQorKysgU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3Nywx
MSArMTc3LDcgQEAgTWVkaWFTdHJlYW1UcmFja1ZlY3RvciBNZWRpYVN0cmVhbTo6Z2V0VgogCiBN
ZWRpYVN0cmVhbVRyYWNrVmVjdG9yIE1lZGlhU3RyZWFtOjpnZXRUcmFja3MoKSBjb25zdAogewot
ICAgIE1lZGlhU3RyZWFtVHJhY2tWZWN0b3IgdHJhY2tzOwotICAgIHRyYWNrcy5yZXNlcnZlQ2Fw
YWNpdHkobV90cmFja1NldC5zaXplKCkpOwotICAgIGNvcHlWYWx1ZXNUb1ZlY3RvcihtX3RyYWNr
U2V0LCB0cmFja3MpOwotCi0gICAgcmV0dXJuIHRyYWNrczsKKyAgICByZXR1cm4gY29weVRvVmVj
dG9yKG1fdHJhY2tTZXQudmFsdWVzKCkpOwogfQogCiB2b2lkIE1lZGlhU3RyZWFtOjp0cmFja0Rp
ZEVuZCgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250
cm9sbGVyLmNwcAkocmV2aXNpb24gMjIzMDY1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4MSw5ICsyODEsNyBA
QCBSZWY8RE9NV3JhcHBlcldvcmxkPiBTY3JpcHRDb250cm9sbGVyOjpjCiAKIFZlY3RvcjxKU0M6
OlN0cm9uZzxKU0RPTVdpbmRvd1Byb3h5Pj4gU2NyaXB0Q29udHJvbGxlcjo6d2luZG93UHJveGll
cygpCiB7Ci0gICAgVmVjdG9yPEpTQzo6U3Ryb25nPEpTRE9NV2luZG93UHJveHk+PiB3aW5kb3dQ
cm94aWVzOwotICAgIGNvcHlWYWx1ZXNUb1ZlY3RvcihtX3dpbmRvd1Byb3hpZXMsIHdpbmRvd1By
b3hpZXMpOwotICAgIHJldHVybiB3aW5kb3dQcm94aWVzOworICAgIHJldHVybiBjb3B5VG9WZWN0
b3IobV93aW5kb3dQcm94aWVzLnZhbHVlcygpKTsKIH0KIAogdm9pZCBTY3JpcHRDb250cm9sbGVy
OjpnZXRBbGxXb3JsZHMoVmVjdG9yPFJlZjxET01XcmFwcGVyV29ybGQ+PiYgd29ybGRzKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlv
bi5jcHAJKHJldmlzaW9uIDIyMzA2NSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRl
ZFN0eWxlRGVjbGFyYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MDk1LDkgKzQwOTUsOCBA
QCBTdHJpbmcgQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjppdGVtCiAgICAgY29uc3QgYXV0
byYgY3VzdG9tUHJvcGVydGllcyA9IHN0eWxlLT5jdXN0b21Qcm9wZXJ0aWVzKCk7CiAgICAgaWYg
KGluZGV4ID49IGN1c3RvbVByb3BlcnRpZXMuc2l6ZSgpKQogICAgICAgICByZXR1cm4gU3RyaW5n
KCk7Ci0gICAgCi0gICAgVmVjdG9yPFN0cmluZywgND4gcmVzdWx0czsKLSAgICBjb3B5S2V5c1Rv
VmVjdG9yKGN1c3RvbVByb3BlcnRpZXMsIHJlc3VsdHMpOworCisgICAgYXV0byByZXN1bHRzID0g
Y29weVRvVmVjdG9yKGN1c3RvbVByb3BlcnRpZXMua2V5cygpKTsKICAgICByZXR1cm4gcmVzdWx0
cy5hdChpbmRleCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24g
MjIzMDY1KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjMzOCw5ICsyMzM4LDcgQEAgdm9pZCBEb2N1bWVudDo6cHJlcGFyZUZvckRlc3RydWN0
aW9uKCkKIAogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCiAgICAgaWYgKCFt
X2NsaWVudFRvSURNYXAuaXNFbXB0eSgpICYmIHBhZ2UoKSkgewotICAgICAgICBWZWN0b3I8V2Vi
Q29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENsaWVudCo+IGNsaWVudHM7Ci0gICAgICAgIGNvcHlL
ZXlzVG9WZWN0b3IobV9jbGllbnRUb0lETWFwLCBjbGllbnRzKTsKLSAgICAgICAgZm9yIChhdXRv
KiBjbGllbnQgOiBjbGllbnRzKQorICAgICAgICBmb3IgKGF1dG8qIGNsaWVudCA6IGNvcHlUb1Zl
Y3RvcihtX2NsaWVudFRvSURNYXAua2V5cygpKSkKICAgICAgICAgICAgIHJlbW92ZVBsYXliYWNr
VGFyZ2V0UGlja2VyQ2xpZW50KCpjbGllbnQpOwogICAgIH0KICNlbmRpZgpJbmRleDogU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAJKHJldmlzaW9u
IDIyMzA2NSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NzIsNyArNTcyLDcgQEAgdm9pZCBEb2N1bWVudE1hcmtl
ckNvbnRyb2xsZXI6OnJlbW92ZU1hcgogICAgICAgICByZXR1cm47CiAgICAgQVNTRVJUKCFtX21h
cmtlcnMuaXNFbXB0eSgpKTsKICAgICAKLSAgICBNYXJrZXJNYXA6Oml0ZXJhdG9yIGl0ZXJhdG9y
ID0gbV9tYXJrZXJzLmZpbmQobm9kZSk7CisgICAgYXV0byBpdGVyYXRvciA9IG1fbWFya2Vycy5m
aW5kKG5vZGUpOwogICAgIGlmIChpdGVyYXRvciAhPSBtX21hcmtlcnMuZW5kKCkpCiAgICAgICAg
IHJlbW92ZU1hcmtlcnNGcm9tTGlzdChpdGVyYXRvciwgbWFya2VyVHlwZXMpOwogfQpAQCAtNTgz
LDkgKzU4Myw3IEBAIHZvaWQgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjpyZW1vdmVNYXIKICAg
ICAgICAgcmV0dXJuOwogICAgIEFTU0VSVCghbV9tYXJrZXJzLmlzRW1wdHkoKSk7CiAKLSAgICBW
ZWN0b3I8UmVmUHRyPE5vZGU+PiBub2Rlc1dpdGhNYXJrZXJzOwotICAgIGNvcHlLZXlzVG9WZWN0
b3IobV9tYXJrZXJzLCBub2Rlc1dpdGhNYXJrZXJzKTsKLSAgICBmb3IgKGF1dG8mIG5vZGUgOiBu
b2Rlc1dpdGhNYXJrZXJzKSB7CisgICAgZm9yIChhdXRvJiBub2RlIDogY29weVRvVmVjdG9yKG1f
bWFya2Vycy5rZXlzKCkpKSB7CiAgICAgICAgIGF1dG8gaXRlcmF0b3IgPSBtX21hcmtlcnMuZmlu
ZChub2RlKTsKICAgICAgICAgaWYgKGl0ZXJhdG9yICE9IG1fbWFya2Vycy5lbmQoKSkKICAgICAg
ICAgICAgIHJlbW92ZU1hcmtlcnNGcm9tTGlzdChpdGVyYXRvciwgbWFya2VyVHlwZXMpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQu
Y3BwCShyZXZpc2lvbiAyMjMwNjUpCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yV29ya2VyQWdlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDUsOSArMTQ1LDcgQEAgdm9p
ZCBJbnNwZWN0b3JXb3JrZXJBZ2VudDo6Y29ubmVjdFRvQWxsVwogCiB2b2lkIEluc3BlY3Rvcldv
cmtlckFnZW50OjpkaXNjb25uZWN0RnJvbUFsbFdvcmtlckluc3BlY3RvclByb3hpZXMoKQogewot
ICAgIFZlY3RvcjxXb3JrZXJJbnNwZWN0b3JQcm94eSo+IHByb3hpZXM7Ci0gICAgY29weVZhbHVl
c1RvVmVjdG9yKG1fY29ubmVjdGVkUHJveGllcywgcHJveGllcyk7Ci0gICAgZm9yIChhdXRvKiBw
cm94eSA6IHByb3hpZXMpCisgICAgZm9yIChhdXRvKiBwcm94eSA6IGNvcHlUb1ZlY3RvcihtX2Nv
bm5lY3RlZFByb3hpZXMudmFsdWVzKCkpKQogICAgICAgICBwcm94eS0+ZGlzY29ubmVjdEZyb21X
b3JrZXJJbnNwZWN0b3JDb250cm9sbGVyKCk7CiAKICAgICBtX2Nvbm5lY3RlZFByb3hpZXMuY2xl
YXIoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0
YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNv
dXJjZXNEYXRhLmNwcAkocmV2aXNpb24gMjIzMDY1KQorKysgU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYyLDkgKzI2
Miw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OmNsZWFyKGNvbnN0IFMKIAogVmVjdG9y
PE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGEqPiBOZXR3b3JrUmVzb3VyY2VzRGF0
YTo6cmVzb3VyY2VzKCkKIHsKLSAgICBWZWN0b3I8TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291
cmNlRGF0YSo+IHJlc291cmNlczsKLSAgICBjb3B5VmFsdWVzVG9WZWN0b3IobV9yZXF1ZXN0SWRU
b1Jlc291cmNlRGF0YU1hcCwgcmVzb3VyY2VzKTsKLSAgICByZXR1cm4gcmVzb3VyY2VzOworICAg
IHJldHVybiBjb3B5VG9WZWN0b3IobV9yZXF1ZXN0SWRUb1Jlc291cmNlRGF0YU1hcC52YWx1ZXMo
KSk7CiB9CiAKIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGEqIE5ldHdvcmtSZXNv
dXJjZXNEYXRhOjpyZXNvdXJjZURhdGFGb3JSZXF1ZXN0SWQoY29uc3QgU3RyaW5nJiByZXF1ZXN0
SWQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAJKHJldmlz
aW9uIDIyMzA2NSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEwMCwyNSArMTAwLDE5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogc3RhdGljIHZvaWQgY2FuY2VsQWxsKGNvbnN0IFJlc291cmNlTG9hZGVyTWFwJiBsb2FkZXJz
KQogewotICAgIFZlY3RvcjxSZWZQdHI8UmVzb3VyY2VMb2FkZXI+PiBsb2FkZXJzQ29weTsKLSAg
ICBjb3B5VmFsdWVzVG9WZWN0b3IobG9hZGVycywgbG9hZGVyc0NvcHkpOwotICAgIGZvciAoYXV0
byYgbG9hZGVyIDogbG9hZGVyc0NvcHkpCisgICAgZm9yIChhdXRvJiBsb2FkZXIgOiBjb3B5VG9W
ZWN0b3IobG9hZGVycy52YWx1ZXMoKSkpCiAgICAgICAgIGxvYWRlci0+Y2FuY2VsKCk7CiB9CiAK
IHN0YXRpYyB2b2lkIHNldEFsbERlZmVyc0xvYWRpbmcoY29uc3QgUmVzb3VyY2VMb2FkZXJNYXAm
IGxvYWRlcnMsIGJvb2wgZGVmZXJzKQogewotICAgIFZlY3RvcjxSZWZQdHI8UmVzb3VyY2VMb2Fk
ZXI+PiBsb2FkZXJzQ29weTsKLSAgICBjb3B5VmFsdWVzVG9WZWN0b3IobG9hZGVycywgbG9hZGVy
c0NvcHkpOwotICAgIGZvciAoYXV0byYgbG9hZGVyIDogbG9hZGVyc0NvcHkpCisgICAgZm9yIChh
dXRvJiBsb2FkZXIgOiBjb3B5VG9WZWN0b3IobG9hZGVycy52YWx1ZXMoKSkpCiAgICAgICAgIGxv
YWRlci0+c2V0RGVmZXJzTG9hZGluZyhkZWZlcnMpOwogfQogCiBzdGF0aWMgYm9vbCBhcmVBbGxM
b2FkZXJzUGFnZUNhY2hlQWNjZXB0YWJsZShjb25zdCBSZXNvdXJjZUxvYWRlck1hcCYgbG9hZGVy
cykKIHsKLSAgICBWZWN0b3I8UmVmUHRyPFJlc291cmNlTG9hZGVyPj4gbG9hZGVyc0NvcHk7Ci0g
ICAgY29weVZhbHVlc1RvVmVjdG9yKGxvYWRlcnMsIGxvYWRlcnNDb3B5KTsKLSAgICBmb3IgKGF1
dG8mIGxvYWRlciA6IGxvYWRlcnNDb3B5KSB7CisgICAgZm9yIChhdXRvJiBsb2FkZXIgOiBjb3B5
VG9WZWN0b3IobG9hZGVycy52YWx1ZXMoKSkpIHsKICAgICAgICAgaWYgKCFsb2FkZXItPmZyYW1l
TG9hZGVyKCkgfHwgIWxvYWRlci0+ZnJhbWVMb2FkZXIoKS0+ZnJhbWUoKS5wYWdlKCkpCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9NZW1vcnlDYWNoZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL01lbW9yeUNhY2hlLmNwcAkocmV2aXNpb24gMjIzMDY1KQorKysgU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjc4LDEwICsy
NzgsNyBAQCB2b2lkIE1lbW9yeUNhY2hlOjpmb3JFYWNoU2Vzc2lvblJlc291cmNlCiAgICAgaWYg
KGl0ID09IG1fc2Vzc2lvblJlc291cmNlcy5lbmQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
VmVjdG9yPENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPj4gcmVzb3VyY2VzRm9y
U2Vzc2lvbjsKLSAgICBjb3B5VmFsdWVzVG9WZWN0b3IoKml0LT52YWx1ZSwgcmVzb3VyY2VzRm9y
U2Vzc2lvbik7Ci0KLSAgICBmb3IgKGF1dG8mIHJlc291cmNlIDogcmVzb3VyY2VzRm9yU2Vzc2lv
bikKKyAgICBmb3IgKGF1dG8mIHJlc291cmNlIDogY29weVRvVmVjdG9yKCppdC0+dmFsdWUtPnZh
bHVlcygpKSkKICAgICAgICAgZnVuY3Rpb24oKnJlc291cmNlKTsKIH0KIApJbmRleDogU291cmNl
L1dlYkNvcmUvbG9hZGVyL21hYy9Eb2N1bWVudExvYWRlck1hYy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvbG9hZGVyL21hYy9Eb2N1bWVudExvYWRlck1hYy5jcHAJKHJldmlzaW9u
IDIyMzA2NSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9tYWMvRG9jdW1lbnRMb2FkZXJNYWMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNywxNyArMzcsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBzdGF0aWMgdm9pZCBzY2hlZHVsZUFsbChjb25zdCBSZXNvdXJjZUxvYWRlck1hcCYgbG9h
ZGVycywgU2NoZWR1bGVQYWlyJiBwYWlyKQogewotICAgIFZlY3RvcjxSZWZQdHI8UmVzb3VyY2VM
b2FkZXI+PiBsb2FkZXJzQ29weTsKLSAgICBjb3B5VmFsdWVzVG9WZWN0b3IobG9hZGVycywgbG9h
ZGVyc0NvcHkpOwotICAgIGZvciAoYXV0byYgbG9hZGVyIDogbG9hZGVyc0NvcHkpCisgICAgZm9y
IChhdXRvJiBsb2FkZXIgOiBjb3B5VG9WZWN0b3IobG9hZGVycy52YWx1ZXMoKSkpCiAgICAgICAg
IGxvYWRlci0+c2NoZWR1bGUocGFpcik7CiB9CiAKIHN0YXRpYyB2b2lkIHVuc2NoZWR1bGVBbGwo
Y29uc3QgUmVzb3VyY2VMb2FkZXJNYXAmIGxvYWRlcnMsIFNjaGVkdWxlUGFpciYgcGFpcikKIHsK
LSAgICBWZWN0b3I8UmVmUHRyPFJlc291cmNlTG9hZGVyPj4gbG9hZGVyc0NvcHk7Ci0gICAgY29w
eVZhbHVlc1RvVmVjdG9yKGxvYWRlcnMsIGxvYWRlcnNDb3B5KTsKLSAgICBmb3IgKGF1dG8mIGxv
YWRlciA6IGxvYWRlcnNDb3B5KQorICAgIGZvciAoYXV0byYgbG9hZGVyIDogY29weVRvVmVjdG9y
KGxvYWRlcnMudmFsdWVzKCkpKQogICAgICAgICBsb2FkZXItPnVuc2NoZWR1bGUocGFpcik7CiB9
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUmVzb3VyY2VVc2FnZVRocmVhZC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9SZXNvdXJjZVVzYWdlVGhyZWFkLmNwcAko
cmV2aXNpb24gMjIzMDY1KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9SZXNvdXJjZVVzYWdlVGhy
ZWFkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODYsNyArODYsNyBAQCB2b2lkIFJlc291cmNlVXNh
Z2VUaHJlYWQ6Om5vdGlmeU9ic2VydmVyCiAgICAgICAgIHsKICAgICAgICAgICAgIGF1dG8mIHJl
c291cmNlVXNhZ2VUaHJlYWQgPSBSZXNvdXJjZVVzYWdlVGhyZWFkOjpzaW5nbGV0b24oKTsKICAg
ICAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKHJlc291cmNlVXNhZ2VUaHJlYWQubV9sb2NrKTsK
LSAgICAgICAgICAgIGNvcHlWYWx1ZXNUb1ZlY3RvcihyZXNvdXJjZVVzYWdlVGhyZWFkLm1fb2Jz
ZXJ2ZXJzLCBmdW5jdGlvbnMpOworICAgICAgICAgICAgZnVuY3Rpb25zID0gY29weVRvVmVjdG9y
KHJlc291cmNlVXNhZ2VUaHJlYWQubV9vYnNlcnZlcnMudmFsdWVzKCkpOwogICAgICAgICB9CiAK
ICAgICAgICAgZm9yIChhdXRvJiBmdW5jdGlvbiA6IGZ1bmN0aW9ucykKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUHJpdmF0ZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Q
cml2YXRlLmNwcAkocmV2aXNpb24gMjIzMDY1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Qcml2YXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTEs
MTEgKzkxLDcgQEAgdm9pZCBNZWRpYVN0cmVhbVByaXZhdGU6OnJlbW92ZU9ic2VydmVyKAogCiBN
ZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZVZlY3RvciBNZWRpYVN0cmVhbVByaXZhdGU6OnRyYWNrcygp
IGNvbnN0CiB7Ci0gICAgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGVWZWN0b3IgdHJhY2tzOwotICAg
IHRyYWNrcy5yZXNlcnZlQ2FwYWNpdHkobV90cmFja1NldC5zaXplKCkpOwotICAgIGNvcHlWYWx1
ZXNUb1ZlY3RvcihtX3RyYWNrU2V0LCB0cmFja3MpOwotCi0gICAgcmV0dXJuIHRyYWNrczsKKyAg
ICByZXR1cm4gY29weVRvVmVjdG9yKG1fdHJhY2tTZXQudmFsdWVzKCkpOwogfQogCiB2b2lkIE1l
ZGlhU3RyZWFtUHJpdmF0ZTo6dXBkYXRlQWN0aXZlU3RhdGUoTm90aWZ5Q2xpZW50T3B0aW9uIG5v
dGlmeUNsaWVudE9wdGlvbikKSW5kZXg6IFNvdXJjZS9XZWJEcml2ZXIvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJEcml2ZXIvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjMwNjUpCisr
KyBTb3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEz
IEBACisyMDE3LTEwLTA5ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAg
UmVwbGFjZSBjb3B5S2V5c1RvVmVjdG9yL2NvcHlWYWx1ZXNUb1ZlY3RvciB3aXRoIGNvcHlUb1Zl
Y3RvcihtYXAua2V5cygpKS9jb3B5VG9WZWN0b3IobWFwLnZhbHVlcygpKQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4MTAyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTZXNzaW9uSG9zdC5jcHA6Cisg
ICAgICAgIChXZWJEcml2ZXI6OlNlc3Npb25Ib3N0OjppbnNwZWN0b3JEaXNjb25uZWN0ZWQpOgor
CiAyMDE3LTEwLTAyICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4K
IAogICAgICAgICBXZWJEcml2ZXI6IEhUVFAgc3RhdHVzIGNvZGUgaXMgbm90IGNvcnJlY3QgZm9y
IHNvbWUgb2YgdGhlIGVycm9ycwpJbmRleDogU291cmNlL1dlYkRyaXZlci9TZXNzaW9uSG9zdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkRyaXZlci9TZXNzaW9uSG9zdC5jcHAJKHJldmlz
aW9uIDIyMzA2NSkKKysrIFNvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbkhvc3QuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNiw5ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJEcml2ZXIgewogdm9pZCBTZXNz
aW9uSG9zdDo6aW5zcGVjdG9yRGlzY29ubmVjdGVkKCkKIHsKICAgICAvLyBCcm93c2VyIGNsb3Nl
ZCBvciBjcmFzaGVkLCBmaW5pc2ggYWxsIHBlbmRpbmcgY29tbWFuZHMgd2l0aCBlcnJvci4KLSAg
ICBWZWN0b3I8bG9uZz4gbWVzc2FnZXM7Ci0gICAgY29weUtleXNUb1ZlY3RvcihtX2NvbW1hbmRS
ZXF1ZXN0cywgbWVzc2FnZXMpOwotICAgIGZvciAoYXV0byBtZXNzYWdlSUQgOiBtZXNzYWdlcykg
eworICAgIGZvciAoYXV0byBtZXNzYWdlSUQgOiBjb3B5VG9WZWN0b3IobV9jb21tYW5kUmVxdWVz
dHMua2V5cygpKSkgewogICAgICAgICBhdXRvIHJlc3BvbnNlSGFuZGxlciA9IG1fY29tbWFuZFJl
cXVlc3RzLnRha2UobWVzc2FnZUlEKTsKICAgICAgICAgcmVzcG9uc2VIYW5kbGVyKHsgbnVsbHB0
ciwgdHJ1ZSB9KTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjIzMDY1KQorKysgU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0MyBAQAorMjAx
Ny0xMC0wOSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIFJlcGxhY2Ug
Y29weUtleXNUb1ZlY3Rvci9jb3B5VmFsdWVzVG9WZWN0b3Igd2l0aCBjb3B5VG9WZWN0b3IobWFw
LmtleXMoKSkvY29weVRvVmVjdG9yKG1hcC52YWx1ZXMoKSkKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODEwMgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6ZGlkQ2xvc2UpOgorICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRy
ZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW06CisgICAgICAgIChXZWJLaXQ6OmR1bXBD
aGFuZ2VkTGF5ZXJzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29u
dGV4dC5jcHA6CisgICAgICAgICh3ZWJraXRXZWJDb250ZXh0SW52YWxpZGF0ZUN1c3RvbVByb3Rv
Y29sUmVxdWVzdHMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdC
YXNlLmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlQ29udGFpbmVyRm9yYWxsKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV0tXZWJWaWV3Q29udGVudFByb3ZpZGVyUmVnaXN0cnku
bW06CisgICAgICAgICgtW1dLV2ViVmlld0NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5IF9taW1lVHlw
ZXNXaXRoQ3VzdG9tQ29udGVudFByb3ZpZGVyc10pOgorICAgICAgICAqIFVJUHJvY2Vzcy9HZW5l
cmljQ2FsbGJhY2suaDoKKyAgICAgICAgKFdlYktpdDo6aW52YWxpZGF0ZUNhbGxiYWNrTWFwKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzc1Byb3h5OjpzaHV0RG93bik6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NQcm94eTo6ZGlkQ2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmRp
ZEJlY29tZVVucmVzcG9uc2l2ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6
ZGlkQmVjb21lUmVzcG9uc2l2ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6
d2lsbENoYW5nZUlzUmVzcG9uc2l2ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94
eTo6ZGlkQ2hhbmdlSXNSZXNwb25zaXZlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1By
b3h5OjpkaXNjb25uZWN0RnJhbWVzRnJvbVBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzUHJveHk6OmZyYW1lQ291bnRJblBhZ2UgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzUHJveHk6OnJlcXVlc3RUZXJtaW5hdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL05QUnVudGltZU9iamVjdE1hcC5jcHA6CisgICAgICAgIChXZWJLaXQ6
Ok5QUnVudGltZU9iamVjdE1hcDo6aW52YWxpZGF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
c2NhcGVQbHVnaW46OnN0b3BBbGxTdHJlYW1zKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OmNhbmNlbEFs
bFN0cmVhbXMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUv
UmVtb3RlTGF5ZXJUcmVlQ29udGV4dC5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJU
cmVlQ29udGV4dDo6YnVpbGRUcmFuc2FjdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6ZGlkQ2xvc2UpOgorCiAy
MDE3LTEwLTA5ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgTWFrZSBI
YXNoTWFwOjprZXlzKCkgYW5kIEhhc2hNYXA6OnZhbHVlcygpIHdvcmsgd2l0aCBXVEY6Om1hcC9X
VEY6OmNvcHlUb1ZlY3RvcgpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAJKHJldmlz
aW9uIDIyMzA2NSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjgsOSArMTY4LDcgQEAg
dm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkQwogICAgIC8vIFByb3RlY3Qg
b3Vyc2VsZiBhcyB3ZSBtaWdodCBiZSBvdGhlcndpc2UgYmUgZGVsZXRlZCBkdXJpbmcgdGhpcyBm
dW5jdGlvbi4KICAgICBSZWY8TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+IHByb3RlY3Rv
cigqdGhpcyk7CiAKLSAgICBWZWN0b3I8UmVmUHRyPE5ldHdvcmtSZXNvdXJjZUxvYWRlcj4+IGxv
YWRlcnM7Ci0gICAgY29weVZhbHVlc1RvVmVjdG9yKG1fbmV0d29ya1Jlc291cmNlTG9hZGVycywg
bG9hZGVycyk7Ci0gICAgZm9yIChhdXRvJiBsb2FkZXIgOiBsb2FkZXJzKQorICAgIGZvciAoYXV0
byYgbG9hZGVyIDogY29weVRvVmVjdG9yKG1fbmV0d29ya1Jlc291cmNlTG9hZGVycy52YWx1ZXMo
KSkpCiAgICAgICAgIGxvYWRlci0+YWJvcnQoKTsKICAgICBBU1NFUlQobV9uZXR3b3JrUmVzb3Vy
Y2VMb2FkZXJzLmlzRW1wdHkoKSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90
ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNh
Y3Rpb24ubW0JKHJldmlzaW9uIDIyMzA2NSkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90
ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbQkod29ya2luZyBjb3B5KQpA
QCAtNzQ0LDggKzc0NCw3IEBAIHN0YXRpYyB2b2lkIGR1bXBDaGFuZ2VkTGF5ZXJzKFRleHRTdHJl
YW0KICAgICB0cyA8PCAiY2hhbmdlZC1sYXllcnMiOwogCiAgICAgLy8gRHVtcCB0aGUgbGF5ZXIg
cHJvcGVydGllcyBzb3J0ZWQgYnkgbGF5ZXIgSUQuCi0gICAgVmVjdG9yPEdyYXBoaWNzTGF5ZXI6
OlBsYXRmb3JtTGF5ZXJJRD4gbGF5ZXJJRHM7Ci0gICAgY29weUtleXNUb1ZlY3RvcihjaGFuZ2Vk
TGF5ZXJQcm9wZXJ0aWVzLCBsYXllcklEcyk7CisgICAgYXV0byBsYXllcklEcyA9IGNvcHlUb1Zl
Y3RvcihjaGFuZ2VkTGF5ZXJQcm9wZXJ0aWVzLmtleXMoKSk7CiAgICAgc3RkOjpzb3J0KGxheWVy
SURzLmJlZ2luKCksIGxheWVySURzLmVuZCgpKTsKIAogICAgIGZvciAoYXV0byYgbGF5ZXJJRCA6
IGxheWVySURzKSB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HZW5lcmljQ2FsbGJh
Y2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HZW5lcmljQ2FsbGJh
Y2suaAkocmV2aXNpb24gMjIzMDY1KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2VuZXJp
Y0NhbGxiYWNrLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2Myw5ICsxNjMsNyBAQCB0eXBlZGVmIEdl
bmVyaWNDYWxsYmFjazxjb25zdCBTaGFyZWFibGVCCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogdm9p
ZCBpbnZhbGlkYXRlQ2FsbGJhY2tNYXAoSGFzaE1hcDx1aW50NjRfdCwgVD4mIGNhbGxiYWNrTWFw
LCBDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKQogewotICAgIFZlY3RvcjxUPiBjYWxsYmFja3M7
Ci0gICAgY29weVZhbHVlc1RvVmVjdG9yKGNhbGxiYWNrTWFwLCBjYWxsYmFja3MpOwotICAgIGZv
ciAoYXV0byYgY2FsbGJhY2sgOiBjYWxsYmFja3MpCisgICAgZm9yIChhdXRvJiBjYWxsYmFjayA6
IGNvcHlUb1ZlY3RvcihjYWxsYmFja01hcC52YWx1ZXMoKSkpCiAgICAgICAgIGNhbGxiYWNrLT5p
bnZhbGlkYXRlKGVycm9yKTsKIAogICAgIGNhbGxiYWNrTWFwLmNsZWFyKCk7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAJKHJldmlzaW9uIDIyMzA2
NSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE4MSwxOCArMTgxLDE1IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpzaHV0
RG93bigpCiAgICAgbV9iYWNrZ3JvdW5kUmVzcG9uc2l2ZW5lc3NUaW1lci5pbnZhbGlkYXRlKCk7
CiAgICAgbV90b2tlbkZvckhvbGRpbmdMb2NrZWRGaWxlcyA9IG51bGxwdHI7CiAKLSAgICBWZWN0
b3I8UmVmUHRyPFdlYkZyYW1lUHJveHk+PiBmcmFtZXM7Ci0gICAgY29weVZhbHVlc1RvVmVjdG9y
KG1fZnJhbWVNYXAsIGZyYW1lcyk7Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IGZy
YW1lcy5zaXplKCk7IGkgPCBzaXplOyArK2kpCi0gICAgICAgIGZyYW1lc1tpXS0+d2ViUHJvY2Vz
c1dpbGxTaHV0RG93bigpOworICAgIGZvciAoYXV0byYgZnJhbWUgOiBjb3B5VG9WZWN0b3IobV9m
cmFtZU1hcC52YWx1ZXMoKSkpCisgICAgICAgIGZyYW1lLT53ZWJQcm9jZXNzV2lsbFNodXREb3du
KCk7CiAgICAgbV9mcmFtZU1hcC5jbGVhcigpOwogCi0gICAgZm9yIChWaXNpdGVkTGlua1N0b3Jl
KiB2aXNpdGVkTGlua1N0b3JlIDogbV92aXNpdGVkTGlua1N0b3JlcykKKyAgICBmb3IgKGF1dG8q
IHZpc2l0ZWRMaW5rU3RvcmUgOiBtX3Zpc2l0ZWRMaW5rU3RvcmVzKQogICAgICAgICB2aXNpdGVk
TGlua1N0b3JlLT5yZW1vdmVQcm9jZXNzKCp0aGlzKTsKICAgICBtX3Zpc2l0ZWRMaW5rU3RvcmVz
LmNsZWFyKCk7CiAKLSAgICBmb3IgKFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KiB3ZWJV
c2VyQ29udGVudENvbnRyb2xsZXJQcm94eSA6IG1fd2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJv
eGllcykKKyAgICBmb3IgKGF1dG8qIHdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5IDogbV93
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94aWVzKQogICAgICAgICB3ZWJVc2VyQ29udGVudENv
bnRyb2xsZXJQcm94eS0+cmVtb3ZlUHJvY2VzcygqdGhpcyk7CiAgICAgbV93ZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94aWVzLmNsZWFyKCk7CiAKQEAgLTYyNSwxMyArNjIyLDEyIEBAIHZvaWQg
V2ViUHJvY2Vzc1Byb3h5OjpkaWRDbG9zZShJUEM6OkNvbm4KIAogICAgIHdlYkNvbm5lY3Rpb24o
KS0+ZGlkQ2xvc2UoKTsKIAotICAgIFZlY3RvcjxSZWZQdHI8V2ViUGFnZVByb3h5Pj4gcGFnZXM7
Ci0gICAgY29weVZhbHVlc1RvVmVjdG9yKG1fcGFnZU1hcCwgcGFnZXMpOworICAgIGF1dG8gcGFn
ZXMgPSBjb3B5VG9WZWN0b3IobV9wYWdlTWFwLnZhbHVlcygpKTsKIAogICAgIHNodXREb3duKCk7
CiAKLSAgICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IHBhZ2VzLnNpemUoKTsgaSA8IHNpemU7
ICsraSkKLSAgICAgICAgcGFnZXNbaV0tPnByb2Nlc3NEaWRUZXJtaW5hdGUoUHJvY2Vzc1Rlcm1p
bmF0aW9uUmVhc29uOjpDcmFzaCk7CisgICAgZm9yIChhdXRvJiBwYWdlIDogcGFnZXMpCisgICAg
ICAgIHBhZ2UtPnByb2Nlc3NEaWRUZXJtaW5hdGUoUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uOjpD
cmFzaCk7CiAKIH0KIApAQCAtNjUzLDEyICs2NDksOSBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6
ZGlkQmVjb21lVW5yZXNwb25zCiB7CiAgICAgbV9pc1Jlc3BvbnNpdmUgPSBOb09yTWF5YmU6Ok5v
OwogCi0gICAgVmVjdG9yPFJlZlB0cjxXZWJQYWdlUHJveHk+PiBwYWdlczsKLSAgICBjb3B5VmFs
dWVzVG9WZWN0b3IobV9wYWdlTWFwLCBwYWdlcyk7Ci0KICAgICBhdXRvIGlzUmVzcG9uc2l2ZUNh
bGxiYWNrcyA9IFdURk1vdmUobV9pc1Jlc3BvbnNpdmVDYWxsYmFja3MpOwogCi0gICAgZm9yIChh
dXRvJiBwYWdlIDogcGFnZXMpCisgICAgZm9yIChhdXRvJiBwYWdlIDogY29weVRvVmVjdG9yKG1f
cGFnZU1hcC52YWx1ZXMoKSkpCiAgICAgICAgIHBhZ2UtPnByb2Nlc3NEaWRCZWNvbWVVbnJlc3Bv
bnNpdmUoKTsKIAogICAgIGJvb2wgaXNXZWJQcm9jZXNzUmVzcG9uc2l2ZSA9IGZhbHNlOwpAQCAt
NjcwLDI1ICs2NjMsMTkgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZEJlY29tZVJlc3BvbnNp
dgogewogICAgIG1faXNSZXNwb25zaXZlID0gTm9Pck1heWJlOjpNYXliZTsKIAotICAgIFZlY3Rv
cjxSZWZQdHI8V2ViUGFnZVByb3h5Pj4gcGFnZXM7Ci0gICAgY29weVZhbHVlc1RvVmVjdG9yKG1f
cGFnZU1hcCwgcGFnZXMpOwotICAgIGZvciAoYXV0byYgcGFnZSA6IHBhZ2VzKQorICAgIGZvciAo
YXV0byYgcGFnZSA6IGNvcHlUb1ZlY3RvcihtX3BhZ2VNYXAudmFsdWVzKCkpKQogICAgICAgICBw
YWdlLT5wcm9jZXNzRGlkQmVjb21lUmVzcG9uc2l2ZSgpOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQ
cm94eTo6d2lsbENoYW5nZUlzUmVzcG9uc2l2ZSgpCiB7Ci0gICAgVmVjdG9yPFJlZlB0cjxXZWJQ
YWdlUHJveHk+PiBwYWdlczsKLSAgICBjb3B5VmFsdWVzVG9WZWN0b3IobV9wYWdlTWFwLCBwYWdl
cyk7Ci0gICAgZm9yIChhdXRvJiBwYWdlIDogcGFnZXMpCisgICAgZm9yIChhdXRvJiBwYWdlIDog
Y29weVRvVmVjdG9yKG1fcGFnZU1hcC52YWx1ZXMoKSkpCiAgICAgICAgIHBhZ2UtPndpbGxDaGFu
Z2VQcm9jZXNzSXNSZXNwb25zaXZlKCk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRD
aGFuZ2VJc1Jlc3BvbnNpdmUoKQogewotICAgIFZlY3RvcjxSZWZQdHI8V2ViUGFnZVByb3h5Pj4g
cGFnZXM7Ci0gICAgY29weVZhbHVlc1RvVmVjdG9yKG1fcGFnZU1hcCwgcGFnZXMpOwotICAgIGZv
ciAoYXV0byYgcGFnZSA6IHBhZ2VzKQorICAgIGZvciAoYXV0byYgcGFnZSA6IGNvcHlUb1ZlY3Rv
cihtX3BhZ2VNYXAudmFsdWVzKCkpKQogICAgICAgICBwYWdlLT5kaWRDaGFuZ2VQcm9jZXNzSXNS
ZXNwb25zaXZlKCk7CiB9CiAKQEAgLTc0OCwxOSArNzM1LDE3IEBAIHZvaWQgV2ViUHJvY2Vzc1By
b3h5OjpkaWREZXN0cm95RnJhbWUodWkKIAogdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpc2Nvbm5l
Y3RGcmFtZXNGcm9tUGFnZShXZWJQYWdlUHJveHkqIHBhZ2UpCiB7Ci0gICAgVmVjdG9yPFJlZlB0
cjxXZWJGcmFtZVByb3h5Pj4gZnJhbWVzOwotICAgIGNvcHlWYWx1ZXNUb1ZlY3RvcihtX2ZyYW1l
TWFwLCBmcmFtZXMpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwLCBzaXplID0gZnJhbWVzLnNpemUo
KTsgaSA8IHNpemU7ICsraSkgewotICAgICAgICBpZiAoZnJhbWVzW2ldLT5wYWdlKCkgPT0gcGFn
ZSkKLSAgICAgICAgICAgIGZyYW1lc1tpXS0+d2ViUHJvY2Vzc1dpbGxTaHV0RG93bigpOworICAg
IGZvciAoYXV0byYgZnJhbWUgOiBjb3B5VG9WZWN0b3IobV9mcmFtZU1hcC52YWx1ZXMoKSkpIHsK
KyAgICAgICAgaWYgKGZyYW1lLT5wYWdlKCkgPT0gcGFnZSkKKyAgICAgICAgICAgIGZyYW1lLT53
ZWJQcm9jZXNzV2lsbFNodXREb3duKCk7CiAgICAgfQogfQogCiBzaXplX3QgV2ViUHJvY2Vzc1By
b3h5OjpmcmFtZUNvdW50SW5QYWdlKFdlYlBhZ2VQcm94eSogcGFnZSkgY29uc3QKIHsKICAgICBz
aXplX3QgcmVzdWx0ID0gMDsKLSAgICBmb3IgKEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxXZWJG
cmFtZVByb3h5Pj46OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBtX2ZyYW1lTWFwLmJlZ2luKCk7IGl0
ZXIgIT0gbV9mcmFtZU1hcC5lbmQoKTsgKytpdGVyKSB7Ci0gICAgICAgIGlmIChpdGVyLT52YWx1
ZS0+cGFnZSgpID09IHBhZ2UpCisgICAgZm9yIChhdXRvJiBmcmFtZSA6IG1fZnJhbWVNYXAudmFs
dWVzKCkpIHsKKyAgICAgICAgaWYgKGZyYW1lLT5wYWdlKCkgPT0gcGFnZSkKICAgICAgICAgICAg
ICsrcmVzdWx0OwogICAgIH0KICAgICByZXR1cm4gcmVzdWx0OwpAQCAtODg4LDEzICs4NzMsMTIg
QEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnJlcXVlc3RUZXJtaW5hdGlvbgogICAgIGlmICh3ZWJD
b25uZWN0aW9uKCkpCiAgICAgICAgIHdlYkNvbm5lY3Rpb24oKS0+ZGlkQ2xvc2UoKTsKIAotICAg
IFZlY3RvcjxSZWZQdHI8V2ViUGFnZVByb3h5Pj4gcGFnZXM7Ci0gICAgY29weVZhbHVlc1RvVmVj
dG9yKG1fcGFnZU1hcCwgcGFnZXMpOworICAgIGF1dG8gcGFnZXMgPSBjb3B5VG9WZWN0b3IobV9w
YWdlTWFwLnZhbHVlcygpKTsKIAogICAgIHNodXREb3duKCk7CiAKLSAgICBmb3IgKHNpemVfdCBp
ID0gMCwgc2l6ZSA9IHBhZ2VzLnNpemUoKTsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgcGFnZXNb
aV0tPnByb2Nlc3NEaWRUZXJtaW5hdGUocmVhc29uKTsKKyAgICBmb3IgKGF1dG8mIHBhZ2UgOiBw
YWdlcykKKyAgICAgICAgcGFnZS0+cHJvY2Vzc0RpZFRlcm1pbmF0ZShyZWFzb24pOwogfQogCiB2
b2lkIFdlYlByb2Nlc3NQcm94eTo6c3RvcFJlc3BvbnNpdmVuZXNzVGltZXIoKQpJbmRleDogU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4
dC5jcHAJKHJldmlzaW9uIDIyMzA2NSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdFdlYkNvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjE4LDkgKzE2MTgs
NyBAQCB2b2lkIHdlYmtpdFdlYkNvbnRleHRTdG9wTG9hZGluZ0N1c3RvbVByCiAKIHZvaWQgd2Vi
a2l0V2ViQ29udGV4dEludmFsaWRhdGVDdXN0b21Qcm90b2NvbFJlcXVlc3RzKFdlYktpdFdlYkNv
bnRleHQqIGNvbnRleHQsIExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5JiBtYW5hZ2Vy
KQogewotICAgIFZlY3RvcjxHUmVmUHRyPFdlYktpdFVSSVNjaGVtZVJlcXVlc3Q+PiByZXF1ZXN0
czsKLSAgICBjb3B5VmFsdWVzVG9WZWN0b3IoY29udGV4dC0+cHJpdi0+dXJpU2NoZW1lUmVxdWVz
dHMsIHJlcXVlc3RzKTsKLSAgICBmb3IgKGF1dG8mIHJlcXVlc3QgOiByZXF1ZXN0cykgeworICAg
IGZvciAoYXV0byYgcmVxdWVzdCA6IGNvcHlUb1ZlY3Rvcihjb250ZXh0LT5wcml2LT51cmlTY2hl
bWVSZXF1ZXN0cy52YWx1ZXMoKSkpIHsKICAgICAgICAgaWYgKHdlYmtpdFVSSVNjaGVtZVJlcXVl
c3RHZXRNYW5hZ2VyKHJlcXVlc3QuZ2V0KCkpID09ICZtYW5hZ2VyKQogICAgICAgICAgICAgd2Vi
a2l0VVJJU2NoZW1lUmVxdWVzdEludmFsaWRhdGUocmVxdWVzdC5nZXQoKSk7CiAgICAgfQpJbmRl
eDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJW
aWV3QmFzZS5jcHAJKHJldmlzaW9uIDIyMzA2NSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NzUsOSAr
NDc1LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VDb250YWluZXJGbwogICAgIFdl
YktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3ID0gV0VCS0lUX1dFQl9WSUVXX0JBU0UoY29udGFpbmVy
KTsKICAgICBXZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUqIHByaXYgPSB3ZWJWaWV3LT5wcml2Owog
Ci0gICAgVmVjdG9yPEd0a1dpZGdldCo+IGNoaWxkcmVuOwotICAgIGNvcHlLZXlzVG9WZWN0b3Io
cHJpdi0+Y2hpbGRyZW4sIGNoaWxkcmVuKTsKLSAgICBmb3IgKGNvbnN0IGF1dG8mIGNoaWxkIDog
Y2hpbGRyZW4pIHsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGNoaWxkIDogY29weVRvVmVjdG9yKHBy
aXYtPmNoaWxkcmVuLmtleXMoKSkpIHsKICAgICAgICAgaWYgKHByaXYtPmNoaWxkcmVuLmNvbnRh
aW5zKGNoaWxkKSkKICAgICAgICAgICAgICgqY2FsbGJhY2spKGNoaWxkLCBjYWxsYmFja0RhdGEp
OwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLV2ViVmlld0Nv
bnRlbnRQcm92aWRlclJlZ2lzdHJ5Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1dLV2ViVmlld0NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5Lm1tCShyZXZpc2lv
biAyMjMwNjUpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XS1dlYlZpZXdDb250
ZW50UHJvdmlkZXJSZWdpc3RyeS5tbQkod29ya2luZyBjb3B5KQpAQCAtODksOSArODksNyBAQCAt
IChDbGFzcyA8V0tXZWJWaWV3Q29udGVudFByb3ZpZGVyPilwcm92CiAKIC0gKFZlY3RvcjxTdHJp
bmc+KV9taW1lVHlwZXNXaXRoQ3VzdG9tQ29udGVudFByb3ZpZGVycwogewotICAgIFZlY3RvcjxT
dHJpbmc+IG1pbWVUeXBlczsKLSAgICBjb3B5S2V5c1RvVmVjdG9yKF9jb250ZW50UHJvdmlkZXJG
b3JNSU1FVHlwZSwgbWltZVR5cGVzKTsKLSAgICByZXR1cm4gbWltZVR5cGVzOworICAgIHJldHVy
biBjb3B5VG9WZWN0b3IoX2NvbnRlbnRQcm92aWRlckZvck1JTUVUeXBlLmtleXMoKSk7CiB9CiAK
IEBlbmQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHJldmlz
aW9uIDIyMzA2NSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNjY1LDEwICs2NjUsNyBAQCB2b2lkIFdlYlByb2Nlc3M6OmRpZFJl
Y2VpdmVNZXNzYWdlKElQQzo6CiB2b2lkIFdlYlByb2Nlc3M6OmRpZENsb3NlKElQQzo6Q29ubmVj
dGlvbiYpCiB7CiAjaWZuZGVmIE5ERUJVRwotICAgIC8vIENsb3NlIGFsbCB0aGUgbGl2ZSBwYWdl
cy4KLSAgICBWZWN0b3I8UmVmUHRyPFdlYlBhZ2U+PiBwYWdlczsKLSAgICBjb3B5VmFsdWVzVG9W
ZWN0b3IobV9wYWdlTWFwLCBwYWdlcyk7Ci0gICAgZm9yIChhdXRvJiBwYWdlIDogcGFnZXMpCisg
ICAgZm9yIChhdXRvJiBwYWdlIDogY29weVRvVmVjdG9yKG1fcGFnZU1hcC52YWx1ZXMoKSkpCiAg
ICAgICAgIHBhZ2UtPmNsb3NlKCk7CiAgICAgcGFnZXMuY2xlYXIoKTsKIApJbmRleDogU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAJKHJldmlzaW9u
IDIyMzA2NSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjg0LDExICsxMjg0LDggQEAgdm9pZCBQbHVnaW5WaWV3
OjpyZW1vdmVTdHJlYW0oU3RyZWFtKiBzdAogCiB2b2lkIFBsdWdpblZpZXc6OmNhbmNlbEFsbFN0
cmVhbXMoKQogewotICAgIFZlY3RvcjxSZWZQdHI8U3RyZWFtPj4gc3RyZWFtczsKLSAgICBjb3B5
VmFsdWVzVG9WZWN0b3IobV9zdHJlYW1zLCBzdHJlYW1zKTsKLSAgICAKLSAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHN0cmVhbXMuc2l6ZSgpOyArK2kpCi0gICAgICAgIHN0cmVhbXNbaV0tPmNh
bmNlbCgpOworICAgIGZvciAoYXV0byYgc3RyZWFtIDogY29weVRvVmVjdG9yKG1fc3RyZWFtcy52
YWx1ZXMoKSkpCisgICAgICAgIHN0cmVhbS0+Y2FuY2VsKCk7CiAKICAgICAvLyBDYW5jZWxsaW5n
IGEgc3RyZWFtIHJlbW92ZXMgaXQgZnJvbSB0aGUgbV9zdHJlYW1zIG1hcCwgc28gaWYgd2UgY2Fu
Y2VsIGFsbCBzdHJlYW1zIHRoZSBtYXAgc2hvdWxkIGJlIGVtcHR5LgogICAgIEFTU0VSVChtX3N0
cmVhbXMuaXNFbXB0eSgpKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L05ldHNjYXBlL05QUnVudGltZU9iamVjdE1hcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBSdW50aW1lT2JqZWN0TWFwLmNwcAko
cmV2aXNpb24gMjIzMDY1KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0
c2NhcGUvTlBSdW50aW1lT2JqZWN0TWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjAwLDEyICsy
MDAsOSBAQCBib29sIE5QUnVudGltZU9iamVjdE1hcDo6ZXZhbHVhdGUoTlBPYmplCiAKIHZvaWQg
TlBSdW50aW1lT2JqZWN0TWFwOjppbnZhbGlkYXRlKCkKIHsKLSAgICBWZWN0b3I8TlBKU09iamVj
dCo+IG5wSlNPYmplY3RzOwotICAgIGNvcHlWYWx1ZXNUb1ZlY3RvcihtX25wSlNPYmplY3RzLCBu
cEpTT2JqZWN0cyk7Ci0KICAgICAvLyBEZWFsbG9jYXRlIGFsbCB0aGUgb2JqZWN0IHdyYXBwZXJz
IHNvIHdlIHdvbid0IGxlYWsgYW55IEphdmFTY3JpcHQgb2JqZWN0cy4KLSAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG5wSlNPYmplY3RzLnNpemUoKTsgKytpKQotICAgICAgICBkZWFsbG9jYXRl
TlBPYmplY3QobnBKU09iamVjdHNbaV0pOworICAgIGZvciAoYXV0byYgbnBKU09iamVjdCA6IGNv
cHlUb1ZlY3RvcihtX25wSlNPYmplY3RzLnZhbHVlcygpKSkKKyAgICAgICAgZGVhbGxvY2F0ZU5Q
T2JqZWN0KG5wSlNPYmplY3QpOwogICAgIAogICAgIC8vIFdlIHNob3VsZG4ndCBoYXZlIGFueSBO
UEpTT2JqZWN0cyBsZWZ0IG5vdy4KICAgICBBU1NFUlQobV9ucEpTT2JqZWN0cy5pc0VtcHR5KCkp
OwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2Nh
cGVQbHVnaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcAkocmV2aXNpb24gMjIzMDY1KQorKysgU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01NjgsMTEgKzU2OCw4IEBAIE5ldHNjYXBlUGx1Z2luU3RyZWFt
KiBOZXRzY2FwZVBsdWdpbjo6c3QKIAogdm9pZCBOZXRzY2FwZVBsdWdpbjo6c3RvcEFsbFN0cmVh
bXMoKQogewotICAgIFZlY3RvcjxSZWZQdHI8TmV0c2NhcGVQbHVnaW5TdHJlYW0+PiBzdHJlYW1z
OwotICAgIGNvcHlWYWx1ZXNUb1ZlY3RvcihtX3N0cmVhbXMsIHN0cmVhbXMpOwotCi0gICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBzdHJlYW1zLnNpemUoKTsgKytpKQotICAgICAgICBzdHJlYW1z
W2ldLT5zdG9wKE5QUkVTX1VTRVJfQlJFQUspOworICAgIGZvciAoYXV0byYgc3RyZWFtIDogY29w
eVRvVmVjdG9yKG1fc3RyZWFtcy52YWx1ZXMoKSkpCisgICAgICAgIHN0cmVhbS0+c3RvcChOUFJF
U19VU0VSX0JSRUFLKTsKIH0KIAogYm9vbCBOZXRzY2FwZVBsdWdpbjo6YWxsb3dQb3B1cHMoKSBj
b25zdApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJU
cmVlL1JlbW90ZUxheWVyVHJlZUNvbnRleHQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUNvbnRl
eHQubW0JKHJldmlzaW9uIDIyMzA2NSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVDb250ZXh0Lm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0xMjYsOSArMTI2LDcgQEAgdm9pZCBSZW1vdGVMYXllclRyZWVDb250ZXh0OjpidWls
ZFRyYW5zYQogICAgIHJvb3RMYXllclJlbW90ZS5yZWN1cnNpdmVCdWlsZFRyYW5zYWN0aW9uKCp0
aGlzLCB0cmFuc2FjdGlvbik7CiAgICAgbV9jdXJyZW50VHJhbnNhY3Rpb24gPSBudWxscHRyOwog
Ci0gICAgVmVjdG9yPFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpMYXllckNyZWF0aW9uUHJv
cGVydGllcz4gY3JlYXRlZExheWVyUHJvcGVydGllczsKLSAgICBjb3B5VmFsdWVzVG9WZWN0b3Io
bV9jcmVhdGVkTGF5ZXJzLCBjcmVhdGVkTGF5ZXJQcm9wZXJ0aWVzKTsKLSAgICB0cmFuc2FjdGlv
bi5zZXRDcmVhdGVkTGF5ZXJzKFdURk1vdmUoY3JlYXRlZExheWVyUHJvcGVydGllcykpOworICAg
IHRyYW5zYWN0aW9uLnNldENyZWF0ZWRMYXllcnMoY29weVRvVmVjdG9yKG1fY3JlYXRlZExheWVy
cy52YWx1ZXMoKSkpOwogICAgIHRyYW5zYWN0aW9uLnNldERlc3Ryb3llZExheWVySURzKFdURk1v
dmUobV9kZXN0cm95ZWRMYXllcnMpKTsKICAgICAKICAgICBtX2NyZWF0ZWRMYXllcnMuY2xlYXIo
KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjMwNjUpCisrKyBTb3VyY2Uv
V2ViS2l0TGVnYWN5L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisy
MDE3LTEwLTA5ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVwbGFj
ZSBjb3B5S2V5c1RvVmVjdG9yL2NvcHlWYWx1ZXNUb1ZlY3RvciB3aXRoIGNvcHlUb1ZlY3Rvciht
YXAua2V5cygpKS9jb3B5VG9WZWN0b3IobWFwLnZhbHVlcygpKQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4MTAyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJj
ZUxvYWRTY2hlZHVsZXIuY3BwOgorICAgICAgICAoV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpz
ZXJ2ZVBlbmRpbmdSZXF1ZXN0cyk6CisKIDIwMTctMTAtMDUgIERhcmluIEFkbGVyICA8ZGFyaW5A
YXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBhZGRpdGlvbmFsIFdlYktpdFN5c3RlbUludGVy
ZmFjZSByZW1uYW50cwpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9X
ZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRM
ZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcAkocmV2aXNp
b24gMjIzMDY1KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJSZXNv
dXJjZUxvYWRTY2hlZHVsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjIsMTAgKzIyMiw3IEBA
IHZvaWQgV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpzZXJ2ZVBlbmQKICAgICAKICAgICBzZXJ2
ZVBlbmRpbmdSZXF1ZXN0cyhtX25vbkhUVFBQcm90b2NvbEhvc3QsIG1pbmltdW1Qcmlvcml0eSk7
CiAKLSAgICBWZWN0b3I8SG9zdEluZm9ybWF0aW9uKj4gaG9zdHNUb1NlcnZlOwotICAgIGNvcHlW
YWx1ZXNUb1ZlY3RvcihtX2hvc3RzLCBob3N0c1RvU2VydmUpOwotCi0gICAgZm9yIChhdXRvKiBo
b3N0IDogaG9zdHNUb1NlcnZlKSB7CisgICAgZm9yIChhdXRvKiBob3N0IDogY29weVRvVmVjdG9y
KG1faG9zdHMudmFsdWVzKCkpKSB7CiAgICAgICAgIGlmIChob3N0LT5oYXNSZXF1ZXN0cygpKQog
ICAgICAgICAgICAgc2VydmVQZW5kaW5nUmVxdWVzdHMoaG9zdCwgbWluaW11bVByaW9yaXR5KTsK
ICAgICAgICAgZWxzZQpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24g
MjIzMDY1KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTctMTAtMDkgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0
Lm9yZz4KKworICAgICAgICBSZXBsYWNlIGNvcHlLZXlzVG9WZWN0b3IvY29weVZhbHVlc1RvVmVj
dG9yIHdpdGggY29weVRvVmVjdG9yKG1hcC5rZXlzKCkpL2NvcHlUb1ZlY3RvcihtYXAudmFsdWVz
KCkpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzgx
MDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEhp
c3RvcnkvV2ViSGlzdG9yeS5tbToKKyAgICAgICAgKC1bV2ViSGlzdG9yeVByaXZhdGUgcmVidWls
ZEhpc3RvcnlCeURheUlmTmVlZGVkOl0pOgorICAgICAgICAqIFBsdWdpbnMvSG9zdGVkL05ldHNj
YXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVn
aW5JbnN0YW5jZVByb3h5OjpzdG9wQWxsU3RyZWFtcyk6CisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvV2ViVXNlck1lZGlhQ2xpZW50Lm1tOgorICAgICAgICAoV2ViVXNlck1lZGlhQ2xpZW50Ojpw
YWdlRGVzdHJveWVkKToKKwogMjAxNy0xMC0wOSAgUm9iaW4gTW9yaXNzZXQgIDxybW9yaXNzZXRA
YXBwbGUuY29tPgogCiAgICAgICAgIE1ha2UgdGhlIG5hbWVzIG9mIHRoZSBvcHRpb25zIGNvbnNp
c3RlbnQKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvV2ViSGlzdG9yeS5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L1dlYkhpc3Rv
cnkubW0JKHJldmlzaW9uIDIyMzA2NSkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3Rv
cnkvV2ViSGlzdG9yeS5tbQkod29ya2luZyBjb3B5KQpAQCAtMzY2LDggKzM2Niw3IEBAIC0gKHZv
aWQpcmVidWlsZEhpc3RvcnlCeURheUlmTmVlZGVkOihXZWIKIHsKICAgICAvLyBXZSBjbGVhciBh
bGwgdGhlIHZhbHVlcyB0byBwcmVzZW50IGEgY29uc2lzdGVudCBzdGF0ZSB3aGVuIHNlbmRpbmcg
dGhlIG5vdGlmaWNhdGlvbnMuCiAgICAgLy8gV2Uga2VlcCBhIHJlZmVyZW5jZSB0byB0aGUgZW50
cmllcyBmb3IgcmVidWlsZGluZyB0aGUgaGlzdG9yeSBhZnRlciB0aGUgbm90aWZpY2F0aW9uLgot
ICAgIFZlY3RvciA8UmV0YWluUHRyPE5TTXV0YWJsZUFycmF5Pj4gZW50cnlBcnJheXM7Ci0gICAg
Y29weVZhbHVlc1RvVmVjdG9yKCpfZW50cmllc0J5RGF0ZSwgZW50cnlBcnJheXMpOworICAgIGF1
dG8gZW50cnlBcnJheXMgPSBjb3B5VG9WZWN0b3IoX2VudHJpZXNCeURhdGUtPnZhbHVlcygpKTsK
ICAgICBfZW50cmllc0J5RGF0ZS0+Y2xlYXIoKTsKICAgICAKICAgICBOU011dGFibGVEaWN0aW9u
YXJ5ICplbnRyaWVzQnlVUkwgPSBfZW50cmllc0J5VVJMOwpJbmRleDogU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNj
YXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQkocmV2aXNpb24gMjIzMDY1KQorKysgU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOTMsMTAgKzI5Myw4IEBAIHZvaWQgTmV0c2NhcGVQbHVn
aW5JbnN0YW5jZVByb3h5OjpsYXllckgKIAogdm9pZCBOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJv
eHk6OnN0b3BBbGxTdHJlYW1zKCkKIHsKLSAgICBWZWN0b3I8UmVmUHRyPEhvc3RlZE5ldHNjYXBl
UGx1Z2luU3RyZWFtPj4gc3RyZWFtc0NvcHk7Ci0gICAgY29weVZhbHVlc1RvVmVjdG9yKG1fc3Ry
ZWFtcywgc3RyZWFtc0NvcHkpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RyZWFtc0Nv
cHkuc2l6ZSgpOyBpKyspCi0gICAgICAgIHN0cmVhbXNDb3B5W2ldLT5zdG9wKCk7CisgICAgZm9y
IChhdXRvJiBzdHJlYW0gOiBjb3B5VG9WZWN0b3IobV9zdHJlYW1zLnZhbHVlcygpKSkKKyAgICAg
ICAgc3RyZWFtLT5zdG9wKCk7CiB9CiAKIHZvaWQgTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5
OjpjbGVhbnVwKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYlVzZXJNZWRpYUNsaWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQubW0JKHJldmlzaW9uIDIyMzA2
NSkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRp
YUNsaWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtMTA5LDggKzEwOSw3IEBAIFdlYlVzZXJNZWRp
YUNsaWVudDo6fldlYlVzZXJNZWRpYUNsaWVudCgKIHZvaWQgV2ViVXNlck1lZGlhQ2xpZW50Ojpw
YWdlRGVzdHJveWVkKCkKIHsKICAgICBhdXRvJiByZXF1ZXN0c01hcCA9IHVzZXJNZWRpYVJlcXVl
c3RzTWFwKCk7Ci0gICAgVmVjdG9yPFJldGFpblB0cjxXZWJVc2VyTWVkaWFQb2xpY3lMaXN0ZW5l
cj4+IHBlbmRpbmdSZXF1ZXN0czsKLSAgICBjb3B5VmFsdWVzVG9WZWN0b3IocmVxdWVzdHNNYXAs
IHBlbmRpbmdSZXF1ZXN0cyk7CisgICAgYXV0byBwZW5kaW5nUmVxdWVzdHMgPSBjb3B5VG9WZWN0
b3IocmVxdWVzdHNNYXAudmFsdWVzKCkpOwogICAgIHJlcXVlc3RzTWFwLmNsZWFyKCk7CiAKICAg
ICBmb3IgKGF1dG8mIHJlcXVlc3QgOiBwZW5kaW5nUmVxdWVzdHMpCkBAIC0xMTksOCArMTE4LDcg
QEAgdm9pZCBXZWJVc2VyTWVkaWFDbGllbnQ6OnBhZ2VEZXN0cm95ZWQoKQogICAgIEFTU0VSVCh1
c2VyTWVkaWFSZXF1ZXN0c01hcCgpLmlzRW1wdHkoKSk7CiAKICAgICBhdXRvJiBjaGVja01hcCA9
IHVzZXJNZWRpYUNoZWNrTWFwKCk7Ci0gICAgVmVjdG9yPFJldGFpblB0cjxXZWJVc2VyTWVkaWFQ
b2xpY3lDaGVja2VyTGlzdGVuZXI+PiBwZW5kaW5nQ2hlY2tzOwotICAgIGNvcHlWYWx1ZXNUb1Zl
Y3RvcihjaGVja01hcCwgcGVuZGluZ0NoZWNrcyk7CisgICAgYXV0byBwZW5kaW5nQ2hlY2tzID0g
Y29weVRvVmVjdG9yKGNoZWNrTWFwLnZhbHVlcygpKTsKICAgICBjaGVja01hcC5jbGVhcigpOwog
CiAgICAgZm9yIChhdXRvJiBjaGVjayA6IHBlbmRpbmdDaGVja3MpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>323273</attachid>
            <date>2017-10-09 20:01:57 -0700</date>
            <delta_ts>2017-10-09 20:25:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178102-20171009200156.patch</filename>
            <type>text/plain</type>
            <size>42071</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjIzMTE2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBA
CisyMDE3LTEwLTA5ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVw
bGFjZSBjb3B5S2V5c1RvVmVjdG9yL2NvcHlWYWx1ZXNUb1ZlY3RvciB3aXRoIGNvcHlUb1ZlY3Rv
cihtYXAua2V5cygpKS9jb3B5VG9WZWN0b3IobWFwLnZhbHVlcygpKQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4MTAyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50OjpjbGVhckluc3BlY3RvckJyZWFrcG9pbnRTdGF0ZSk6CisKIDIwMTctMTAtMDkg
IEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBKU0NlbGw6OmRpZEJl
Y29tZVByb3RvdHlwZSBpcyByYWN5CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50
LmNwcAkocmV2aXNpb24gMjIzMTE2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEw
NzEsOSArMTA3MSw3IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6YnJlYWtQcm9ncmEK
IHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y2xlYXJJbnNwZWN0b3JCcmVha3BvaW50U3Rh
dGUoKQogewogICAgIEVycm9yU3RyaW5nIGR1bW15RXJyb3I7Ci0gICAgVmVjdG9yPFN0cmluZz4g
YnJlYWtwb2ludElkZW50aWZpZXJzOwotICAgIGNvcHlLZXlzVG9WZWN0b3IobV9icmVha3BvaW50
SWRlbnRpZmllclRvRGVidWdTZXJ2ZXJCcmVha3BvaW50SURzLCBicmVha3BvaW50SWRlbnRpZmll
cnMpOwotICAgIGZvciAoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyIDogYnJlYWtwb2ludElkZW50
aWZpZXJzKQorICAgIGZvciAoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyIDogY29weVRvVmVjdG9y
KG1fYnJlYWtwb2ludElkZW50aWZpZXJUb0RlYnVnU2VydmVyQnJlYWtwb2ludElEcy5rZXlzKCkp
KQogICAgICAgICByZW1vdmVCcmVha3BvaW50KGR1bW15RXJyb3IsIGlkZW50aWZpZXIpOwogCiAg
ICAgbV9qYXZhU2NyaXB0QnJlYWtwb2ludHMuY2xlYXIoKTsKSW5kZXg6IFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjMx
MTYpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2
IEBACisyMDE3LTEwLTA5ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAg
UmVwbGFjZSBjb3B5S2V5c1RvVmVjdG9yL2NvcHlWYWx1ZXNUb1ZlY3RvciB3aXRoIGNvcHlUb1Zl
Y3RvcihtYXAua2V5cygpKS9jb3B5VG9WZWN0b3IobWFwLnZhbHVlcygpKQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4MTAyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvSGFzaE1hcC5oOgorICAg
ICAgICAoV1RGOjpjb3B5S2V5c1RvVmVjdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6Y29w
eVZhbHVlc1RvVmVjdG9yKTogRGVsZXRlZC4KKyAgICAgICAgCisgICAgICAgICAgICBSZW1vdmUg
Y29weUtleXNUb1ZlY3RvciBhbmQgY29weVZhbHVlc1RvVmVjdG9yIHdoaWNoIGFyZSBubyBsb25n
ZXIgdXNlZC4KKwogMjAxNy0xMC0wOSAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxl
LmNvbT4KIAogICAgICAgICBEaXNhYmxlIElOUFVUX1RZUEVfQ09MT1IgaW4gRmVhdHVyZURlZmlu
ZXMuaApJbmRleDogU291cmNlL1dURi93dGYvSGFzaE1hcC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XVEYvd3RmL0hhc2hNYXAuaAkocmV2aXNpb24gMjIzMTE2KQorKysgU291cmNlL1dURi93dGYv
SGFzaE1hcC5oCSh3b3JraW5nIGNvcHkpCkBAIC01ODksMzIgKzU4OSw2IEBAIGlubGluZSB2b2lk
IGNvcHlUb1ZlY3Rvcihjb25zdCBIYXNoTWFwPFQKICAgICAgICAgdmVjdG9yW2ldID0geyAoKml0
KS5rZXksICgqaXQpLnZhbHVlIH07CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFgsIHR5cGVuYW1lIFk+Ci1pbmxp
bmUgdm9pZCBjb3B5S2V5c1RvVmVjdG9yKGNvbnN0IEhhc2hNYXA8VCwgVSwgViwgVywgWD4mIGNv
bGxlY3Rpb24sIFkmIHZlY3RvcikKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEhhc2hNYXA8VCwg
VSwgViwgVywgWD46OmNvbnN0X2l0ZXJhdG9yOjpLZXlzIGl0ZXJhdG9yOwotICAgIAotICAgIHZl
Y3Rvci5yZXNpemUoY29sbGVjdGlvbi5zaXplKCkpOwotICAgIAotICAgIGl0ZXJhdG9yIGl0ID0g
Y29sbGVjdGlvbi5iZWdpbigpLmtleXMoKTsKLSAgICBpdGVyYXRvciBlbmQgPSBjb2xsZWN0aW9u
LmVuZCgpLmtleXMoKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpdCAhPSBlbmQ7ICsraXQs
ICsraSkKLSAgICAgICAgdmVjdG9yW2ldID0gKml0OwotfSAgCi0KLXRlbXBsYXRlPHR5cGVuYW1l
IFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFgsIHR5cGVu
YW1lIFk+Ci1pbmxpbmUgdm9pZCBjb3B5VmFsdWVzVG9WZWN0b3IoY29uc3QgSGFzaE1hcDxULCBV
LCBWLCBXLCBYPiYgY29sbGVjdGlvbiwgWSYgdmVjdG9yKQotewotICAgIHR5cGVkZWYgdHlwZW5h
bWUgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6Y29uc3RfaXRlcmF0b3I6OlZhbHVlcyBpdGVyYXRv
cjsKLSAgICAKLSAgICB2ZWN0b3IucmVzaXplKGNvbGxlY3Rpb24uc2l6ZSgpKTsKLSAgICAKLSAg
ICBpdGVyYXRvciBpdCA9IGNvbGxlY3Rpb24uYmVnaW4oKS52YWx1ZXMoKTsKLSAgICBpdGVyYXRv
ciBlbmQgPSBjb2xsZWN0aW9uLmVuZCgpLnZhbHVlcygpOwotICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGl0ICE9IGVuZDsgKytpdCwgKytpKQotICAgICAgICB2ZWN0b3JbaV0gPSAqaXQ7Ci19ICAg
Ci0KIH0gLy8gbmFtZXNwYWNlIFdURgogCiB1c2luZyBXVEY6Okhhc2hNYXA7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCShyZXZpc2lvbiAyMjMxMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSw0NyBAQAorMjAxNy0xMC0wOSAgU2FtIFdlaW5pZyAgPHNhbUB3
ZWJraXQub3JnPgorCisgICAgICAgIFJlcGxhY2UgY29weUtleXNUb1ZlY3Rvci9jb3B5VmFsdWVz
VG9WZWN0b3Igd2l0aCBjb3B5VG9WZWN0b3IobWFwLmtleXMoKSkvY29weVRvVmVjdG9yKG1hcC52
YWx1ZXMoKSkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE3ODEwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHZW9sb2NhdGlvbjo6V2F0Y2hlcnM6OmdldE5vdGlmaWVyc1ZlY3RvciBjb25zdCk6CisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SURCVHJhbnNhY3Rpb246OmNvbm5lY3Rpb25DbG9zZWRGcm9tU2VydmVyKToKKyAgICAg
ICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblByb3h5LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5Ojpjb25uZWN0aW9u
VG9TZXJ2ZXJMb3N0KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVl
SURCRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJE
YXRhYmFzZTo6aW1tZWRpYXRlQ2xvc2VGb3JVc2VyRGVsZXRlKToKKyAgICAgICAgKiBNb2R1bGVz
L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3Ry
ZWFtOjpnZXRUcmFja3MgY29uc3QpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdENvbnRy
b2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6d2luZG93UHJv
eGllcyk6CisgICAgICAgICogY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246Oml0ZW0gY29uc3Qp
OgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dDo6cHJlcGFyZUZvckRlc3RydWN0aW9uKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnRNYXJrZXJD
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TWFya2VyQ29udHJvbGxl
cjo6cmVtb3ZlTWFya2Vycyk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFn
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvcldvcmtlckFnZW50OjpkaXNjb25u
ZWN0RnJvbUFsbFdvcmtlckluc3BlY3RvclByb3hpZXMpOgorICAgICAgICAqIGluc3BlY3Rvci9O
ZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHA6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNhbmNlbEFsbCk6CisgICAgICAgIChXZWJDb3JlOjpz
ZXRBbGxEZWZlcnNMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OmFyZUFsbExvYWRlcnNQYWdl
Q2FjaGVBY2NlcHRhYmxlKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5Q2FjaGU6OmZvckVhY2hTZXNzaW9uUmVzb3VyY2Up
OgorICAgICAgICAqIGxvYWRlci9tYWMvRG9jdW1lbnRMb2FkZXJNYWMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6c2NoZWR1bGVBbGwpOgorICAgICAgICAoV2ViQ29yZTo6dW5zY2hlZHVsZUFsbCk6
CisgICAgICAgICogcGFnZS9SZXNvdXJjZVVzYWdlVGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlVXNhZ2VUaHJlYWQ6Om5vdGlmeU9ic2VydmVycyk6CisgICAgICAgICogcGxh
dGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Qcml2YXRlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhU3RyZWFtUHJpdmF0ZTo6dHJhY2tzIGNvbnN0KToKKworICAgICAgICAgICAgUmVw
bGFjZSBjb3B5S2V5c1RvVmVjdG9yIC8gY29weVZhbHVlc1RvVmVjdG9yIHdpdGggY29weVRvVmVj
dG9yKG1hcC5rZXlzKCkpIC8gY29weVRvVmVjdG9yKG1hcC52YWx1ZXMoKSkKKwogMjAxNy0xMC0w
OSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIERl
bGV0ZSBidXR0b24gZG9lc24ndCBmdWxseSBkZWxldGUgY2VydGFpbiBlbW9qaQpJbmRleDogU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHAJ
KHJldmlzaW9uIDIyMzExNikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24v
R2VvbG9jYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjcsNyArMTI3LDcgQEAgYm9vbCBH
ZW9sb2NhdGlvbjo6V2F0Y2hlcnM6OmlzRW1wdHkoKSBjbwogCiB2b2lkIEdlb2xvY2F0aW9uOjpX
YXRjaGVyczo6Z2V0Tm90aWZpZXJzVmVjdG9yKEdlb05vdGlmaWVyVmVjdG9yJiBjb3B5KSBjb25z
dAogewotICAgIGNvcHlWYWx1ZXNUb1ZlY3RvcihtX2lkVG9Ob3RpZmllck1hcCwgY29weSk7Cisg
ICAgY29weSA9IGNvcHlUb1ZlY3RvcihtX2lkVG9Ob3RpZmllck1hcC52YWx1ZXMoKSk7CiB9CiAK
IFJlZjxHZW9sb2NhdGlvbj4gR2VvbG9jYXRpb246OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0KQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
VHJhbnNhY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAkocmV2aXNpb24gMjIzMTE2KQorKysgU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMzY4LDkgKzEzNjgsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpjb25uZWN0aW9uQ2xv
c2VkRnJvCiAKICAgICBhYm9ydEluUHJvZ3Jlc3NPcGVyYXRpb25zKGVycm9yKTsKIAotICAgIFZl
Y3RvcjxSZWZQdHI8SURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbj4+IG9wZXJhdGlvbnM7
Ci0gICAgY29weVZhbHVlc1RvVmVjdG9yKG1fdHJhbnNhY3Rpb25PcGVyYXRpb25NYXAsIG9wZXJh
dGlvbnMpOwotCisgICAgYXV0byBvcGVyYXRpb25zID0gY29weVRvVmVjdG9yKG1fdHJhbnNhY3Rp
b25PcGVyYXRpb25NYXAudmFsdWVzKCkpOwogICAgIGZvciAoYXV0byYgb3BlcmF0aW9uIDogb3Bl
cmF0aW9ucykgewogICAgICAgICBtX2N1cnJlbnRseUNvbXBsZXRpbmdSZXF1ZXN0ID0gbnVsbHB0
cjsKICAgICAgICAgbV90cmFuc2FjdGlvbk9wZXJhdGlvbnNJblByb2dyZXNzUXVldWUuYXBwZW5k
KG9wZXJhdGlvbi5nZXQoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9jbGllbnQvSURCQ29ubmVjdGlvblByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblByb3h5LmNwcAkocmV2
aXNpb24gMjIzMTE2KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50
L0lEQkNvbm5lY3Rpb25Qcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyMiw3ICs0MjIsNyBA
QCB2b2lkIElEQkNvbm5lY3Rpb25Qcm94eTo6Y29ubmVjdGlvblRvU2VyCiAgICAgVmVjdG9yPHVp
bnQ2NF90PiBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyczsKICAgICB7CiAgICAgICAgIExv
Y2tlcjxMb2NrPiBsb2NrZXIobV9kYXRhYmFzZUNvbm5lY3Rpb25NYXBMb2NrKTsKLSAgICAgICAg
Y29weUtleXNUb1ZlY3RvcihtX2RhdGFiYXNlQ29ubmVjdGlvbk1hcCwgZGF0YWJhc2VDb25uZWN0
aW9uSWRlbnRpZmllcnMpOworICAgICAgICBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVycyA9
IGNvcHlUb1ZlY3RvcihtX2RhdGFiYXNlQ29ubmVjdGlvbk1hcC5rZXlzKCkpOwogICAgIH0KIAog
ICAgIGZvciAoYXV0byBjb25uZWN0aW9uSWRlbnRpZmllciA6IGRhdGFiYXNlQ29ubmVjdGlvbklk
ZW50aWZpZXJzKSB7CkBAIC00NDEsNyArNDQxLDcgQEAgdm9pZCBJREJDb25uZWN0aW9uUHJveHk6
OmNvbm5lY3Rpb25Ub1NlcgogICAgIFZlY3RvcjxJREJSZXNvdXJjZUlkZW50aWZpZXI+IG9wZW5E
QlJlcXVlc3RJZGVudGlmaWVyczsKICAgICB7CiAgICAgICAgIExvY2tlcjxMb2NrPiBsb2NrZXIo
bV9vcGVuREJSZXF1ZXN0TWFwTG9jayk7Ci0gICAgICAgIGNvcHlLZXlzVG9WZWN0b3IobV9vcGVu
REJSZXF1ZXN0TWFwLCBvcGVuREJSZXF1ZXN0SWRlbnRpZmllcnMpOworICAgICAgICBvcGVuREJS
ZXF1ZXN0SWRlbnRpZmllcnMgPSBjb3B5VG9WZWN0b3IobV9vcGVuREJSZXF1ZXN0TWFwLmtleXMo
KSk7CiAgICAgfQogCiAgICAgZm9yIChhdXRvJiByZXF1ZXN0SWRlbnRpZmllciA6IG9wZW5EQlJl
cXVlc3RJZGVudGlmaWVycykgewpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwCShyZXZp
c2lvbiAyMjMxMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
VW5pcXVlSURCRGF0YWJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODEzLDkgKzE4MTMsNyBA
QCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjppbW1lZGlhdGVDbG9zZUZvCiAgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKIAogICAgIC8vIEVycm9yIG91dCBhbGwgdHJhbnNhY3Rpb25zCi0gICAg
VmVjdG9yPElEQlJlc291cmNlSWRlbnRpZmllcj4gaW5Qcm9ncmVzc0lkZW50aWZpZXJzOwotICAg
IGNvcHlLZXlzVG9WZWN0b3IobV9pblByb2dyZXNzVHJhbnNhY3Rpb25zLCBpblByb2dyZXNzSWRl
bnRpZmllcnMpOwotICAgIGZvciAoYXV0byYgaWRlbnRpZmllciA6IGluUHJvZ3Jlc3NJZGVudGlm
aWVycykKKyAgICBmb3IgKGF1dG8mIGlkZW50aWZpZXIgOiBjb3B5VG9WZWN0b3IobV9pblByb2dy
ZXNzVHJhbnNhY3Rpb25zLmtleXMoKSkpCiAgICAgICAgIG1faW5Qcm9ncmVzc1RyYW5zYWN0aW9u
cy5nZXQoaWRlbnRpZmllciktPmFib3J0V2l0aG91dENhbGxiYWNrKCk7CiAKICAgICBBU1NFUlQo
bV9pblByb2dyZXNzVHJhbnNhY3Rpb25zLmlzRW1wdHkoKSk7CkBAIC0xODI1LDI4ICsxODIzLDIw
IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmltbWVkaWF0ZUNsb3NlRm8KICAgICBtX29iamVj
dFN0b3JlV3JpdGVUcmFuc2FjdGlvbnMuY2xlYXIoKTsKIAogICAgIC8vIEVycm9yIG91dCBhbGwg
cGVuZGluZyBjYWxsYmFja3MKLSAgICBWZWN0b3I8dWludDY0X3Q+IGNhbGxiYWNrSWRlbnRpZmll
cnM7CiAgICAgSURCRXJyb3IgZXJyb3IgPSBJREJFcnJvcjo6dXNlckRlbGV0ZUVycm9yKCk7CiAg
ICAgSURCS2V5RGF0YSBrZXlEYXRhOwogICAgIElEQkdldFJlc3VsdCBnZXRSZXN1bHQ7CiAKLSAg
ICBjb3B5S2V5c1RvVmVjdG9yKG1fZXJyb3JDYWxsYmFja3MsIGNhbGxiYWNrSWRlbnRpZmllcnMp
OwotICAgIGZvciAoYXV0byBpZGVudGlmaWVyIDogY2FsbGJhY2tJZGVudGlmaWVycykKKyAgICBm
b3IgKGF1dG8gaWRlbnRpZmllciA6IGNvcHlUb1ZlY3RvcihtX2Vycm9yQ2FsbGJhY2tzLmtleXMo
KSkpCiAgICAgICAgIHBlcmZvcm1FcnJvckNhbGxiYWNrKGlkZW50aWZpZXIsIGVycm9yKTsKIAot
ICAgIGNhbGxiYWNrSWRlbnRpZmllcnMuY2xlYXIoKTsKLSAgICBjb3B5S2V5c1RvVmVjdG9yKG1f
a2V5RGF0YUNhbGxiYWNrcywgY2FsbGJhY2tJZGVudGlmaWVycyk7Ci0gICAgZm9yIChhdXRvIGlk
ZW50aWZpZXIgOiBjYWxsYmFja0lkZW50aWZpZXJzKQorICAgIGZvciAoYXV0byBpZGVudGlmaWVy
IDogY29weVRvVmVjdG9yKG1fa2V5RGF0YUNhbGxiYWNrcy5rZXlzKCkpKQogICAgICAgICBwZXJm
b3JtS2V5RGF0YUNhbGxiYWNrKGlkZW50aWZpZXIsIGVycm9yLCBrZXlEYXRhKTsKIAotICAgIGNh
bGxiYWNrSWRlbnRpZmllcnMuY2xlYXIoKTsKLSAgICBjb3B5S2V5c1RvVmVjdG9yKG1fZ2V0UmVz
dWx0Q2FsbGJhY2tzLCBjYWxsYmFja0lkZW50aWZpZXJzKTsKLSAgICBmb3IgKGF1dG8gaWRlbnRp
ZmllciA6IGNhbGxiYWNrSWRlbnRpZmllcnMpCisgICAgZm9yIChhdXRvIGlkZW50aWZpZXIgOiBj
b3B5VG9WZWN0b3IobV9nZXRSZXN1bHRDYWxsYmFja3Mua2V5cygpKSkKICAgICAgICAgcGVyZm9y
bUdldFJlc3VsdENhbGxiYWNrKGlkZW50aWZpZXIsIGVycm9yLCBnZXRSZXN1bHQpOwogCi0gICAg
Y2FsbGJhY2tJZGVudGlmaWVycy5jbGVhcigpOwotICAgIGNvcHlLZXlzVG9WZWN0b3IobV9jb3Vu
dENhbGxiYWNrcywgY2FsbGJhY2tJZGVudGlmaWVycyk7Ci0gICAgZm9yIChhdXRvIGlkZW50aWZp
ZXIgOiBjYWxsYmFja0lkZW50aWZpZXJzKQorICAgIGZvciAoYXV0byBpZGVudGlmaWVyIDogY29w
eVRvVmVjdG9yKG1fY291bnRDYWxsYmFja3Mua2V5cygpKSkKICAgICAgICAgcGVyZm9ybUNvdW50
Q2FsbGJhY2soaWRlbnRpZmllciwgZXJyb3IsIDApOwogCiAgICAgLy8gRXJyb3Igb3V0IGFsbCBJ
REJPcGVuREJSZXF1ZXN0cwpAQCAtMTg2MSw3ICsxODUxLDcgQEAgdm9pZCBVbmlxdWVJREJEYXRh
YmFzZTo6aW1tZWRpYXRlQ2xvc2VGbwogICAgIG1fcGVuZGluZ09wZW5EQlJlcXVlc3RzLmNsZWFy
KCk7CiAKICAgICAvLyBDbG9zZSBhbGwgb3BlbiBjb25uZWN0aW9ucwotICAgIExpc3RIYXNoU2V0
PFJlZlB0cjxVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24+PiBvcGVuRGF0YWJhc2VDb25uZWN0
aW9ucyA9IG1fb3BlbkRhdGFiYXNlQ29ubmVjdGlvbnM7CisgICAgYXV0byBvcGVuRGF0YWJhc2VD
b25uZWN0aW9ucyA9IG1fb3BlbkRhdGFiYXNlQ29ubmVjdGlvbnM7CiAgICAgZm9yIChhdXRvJiBj
b25uZWN0aW9uIDogb3BlbkRhdGFiYXNlQ29ubmVjdGlvbnMpCiAgICAgICAgIGNvbm5lY3Rpb25D
bG9zZWRGcm9tU2VydmVyKCpjb25uZWN0aW9uKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHAJKHJldmlzaW9uIDIyMzEx
NikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNzcsMTEgKzE3Nyw3IEBAIE1lZGlhU3RyZWFtVHJhY2tWZWN0
b3IgTWVkaWFTdHJlYW06OmdldFYKIAogTWVkaWFTdHJlYW1UcmFja1ZlY3RvciBNZWRpYVN0cmVh
bTo6Z2V0VHJhY2tzKCkgY29uc3QKIHsKLSAgICBNZWRpYVN0cmVhbVRyYWNrVmVjdG9yIHRyYWNr
czsKLSAgICB0cmFja3MucmVzZXJ2ZUNhcGFjaXR5KG1fdHJhY2tTZXQuc2l6ZSgpKTsKLSAgICBj
b3B5VmFsdWVzVG9WZWN0b3IobV90cmFja1NldCwgdHJhY2tzKTsKLQotICAgIHJldHVybiB0cmFj
a3M7CisgICAgcmV0dXJuIGNvcHlUb1ZlY3RvcihtX3RyYWNrU2V0LnZhbHVlcygpKTsKIH0KIAog
dm9pZCBNZWRpYVN0cmVhbTo6dHJhY2tEaWRFbmQoKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDIyMzExNikKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yODEsOSArMjgxLDcgQEAgUmVmPERPTVdyYXBwZXJXb3JsZD4gU2NyaXB0Q29u
dHJvbGxlcjo6YwogCiBWZWN0b3I8SlNDOjpTdHJvbmc8SlNET01XaW5kb3dQcm94eT4+IFNjcmlw
dENvbnRyb2xsZXI6OndpbmRvd1Byb3hpZXMoKQogewotICAgIFZlY3RvcjxKU0M6OlN0cm9uZzxK
U0RPTVdpbmRvd1Byb3h5Pj4gd2luZG93UHJveGllczsKLSAgICBjb3B5VmFsdWVzVG9WZWN0b3Io
bV93aW5kb3dQcm94aWVzLCB3aW5kb3dQcm94aWVzKTsKLSAgICByZXR1cm4gd2luZG93UHJveGll
czsKKyAgICByZXR1cm4gY29weVRvVmVjdG9yKG1fd2luZG93UHJveGllcy52YWx1ZXMoKSk7CiB9
CiAKIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6Z2V0QWxsV29ybGRzKFZlY3RvcjxSZWY8RE9NV3Jh
cHBlcldvcmxkPj4mIHdvcmxkcykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRl
ZFN0eWxlRGVjbGFyYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCShyZXZpc2lvbiAyMjMxMTYpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDA5NSw5ICs0MDk1LDggQEAgU3RyaW5nIENTU0NvbXB1dGVkU3R5bGVEZWNsYXJh
dGlvbjo6aXRlbQogICAgIGNvbnN0IGF1dG8mIGN1c3RvbVByb3BlcnRpZXMgPSBzdHlsZS0+Y3Vz
dG9tUHJvcGVydGllcygpOwogICAgIGlmIChpbmRleCA+PSBjdXN0b21Qcm9wZXJ0aWVzLnNpemUo
KSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIAotICAgIFZlY3RvcjxTdHJpbmcsIDQ+
IHJlc3VsdHM7Ci0gICAgY29weUtleXNUb1ZlY3RvcihjdXN0b21Qcm9wZXJ0aWVzLCByZXN1bHRz
KTsKKworICAgIGF1dG8gcmVzdWx0cyA9IGNvcHlUb1ZlY3RvcihjdXN0b21Qcm9wZXJ0aWVzLmtl
eXMoKSk7CiAgICAgcmV0dXJuIHJlc3VsdHMuYXQoaW5kZXgpOwogfQogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDIyMzExNikKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzMzgsOSArMjMzOCw3IEBAIHZvaWQgRG9j
dW1lbnQ6OnByZXBhcmVGb3JEZXN0cnVjdGlvbigpCiAKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExB
WUJBQ0tfVEFSR0VUKQogICAgIGlmICghbV9jbGllbnRUb0lETWFwLmlzRW1wdHkoKSAmJiBwYWdl
KCkpIHsKLSAgICAgICAgVmVjdG9yPFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDbGllbnQq
PiBjbGllbnRzOwotICAgICAgICBjb3B5S2V5c1RvVmVjdG9yKG1fY2xpZW50VG9JRE1hcCwgY2xp
ZW50cyk7Ci0gICAgICAgIGZvciAoYXV0byogY2xpZW50IDogY2xpZW50cykKKyAgICAgICAgZm9y
IChhdXRvKiBjbGllbnQgOiBjb3B5VG9WZWN0b3IobV9jbGllbnRUb0lETWFwLmtleXMoKSkpCiAg
ICAgICAgICAgICByZW1vdmVQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudCgqY2xpZW50KTsKICAg
ICB9CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRy
b2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtl
ckNvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyMjMxMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTcyLDcgKzU3
Miw3IEBAIHZvaWQgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjpyZW1vdmVNYXIKICAgICAgICAg
cmV0dXJuOwogICAgIEFTU0VSVCghbV9tYXJrZXJzLmlzRW1wdHkoKSk7CiAgICAgCi0gICAgTWFy
a2VyTWFwOjppdGVyYXRvciBpdGVyYXRvciA9IG1fbWFya2Vycy5maW5kKG5vZGUpOworICAgIGF1
dG8gaXRlcmF0b3IgPSBtX21hcmtlcnMuZmluZChub2RlKTsKICAgICBpZiAoaXRlcmF0b3IgIT0g
bV9tYXJrZXJzLmVuZCgpKQogICAgICAgICByZW1vdmVNYXJrZXJzRnJvbUxpc3QoaXRlcmF0b3Is
IG1hcmtlclR5cGVzKTsKIH0KQEAgLTU4Myw5ICs1ODMsNyBAQCB2b2lkIERvY3VtZW50TWFya2Vy
Q29udHJvbGxlcjo6cmVtb3ZlTWFyCiAgICAgICAgIHJldHVybjsKICAgICBBU1NFUlQoIW1fbWFy
a2Vycy5pc0VtcHR5KCkpOwogCi0gICAgVmVjdG9yPFJlZlB0cjxOb2RlPj4gbm9kZXNXaXRoTWFy
a2VyczsKLSAgICBjb3B5S2V5c1RvVmVjdG9yKG1fbWFya2Vycywgbm9kZXNXaXRoTWFya2Vycyk7
Ci0gICAgZm9yIChhdXRvJiBub2RlIDogbm9kZXNXaXRoTWFya2VycykgeworICAgIGZvciAoYXV0
byYgbm9kZSA6IGNvcHlUb1ZlY3RvcihtX21hcmtlcnMua2V5cygpKSkgewogICAgICAgICBhdXRv
IGl0ZXJhdG9yID0gbV9tYXJrZXJzLmZpbmQobm9kZSk7CiAgICAgICAgIGlmIChpdGVyYXRvciAh
PSBtX21hcmtlcnMuZW5kKCkpCiAgICAgICAgICAgICByZW1vdmVNYXJrZXJzRnJvbUxpc3QoaXRl
cmF0b3IsIG1hcmtlclR5cGVzKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JXb3JrZXJBZ2VudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvcldvcmtlckFnZW50LmNwcAkocmV2aXNpb24gMjIzMTE2KQorKysgU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTQ1LDkgKzE0NSw3IEBAIHZvaWQgSW5zcGVjdG9yV29ya2VyQWdlbnQ6OmNvbm5lY3RU
b0FsbFcKIAogdm9pZCBJbnNwZWN0b3JXb3JrZXJBZ2VudDo6ZGlzY29ubmVjdEZyb21BbGxXb3Jr
ZXJJbnNwZWN0b3JQcm94aWVzKCkKIHsKLSAgICBWZWN0b3I8V29ya2VySW5zcGVjdG9yUHJveHkq
PiBwcm94aWVzOwotICAgIGNvcHlWYWx1ZXNUb1ZlY3RvcihtX2Nvbm5lY3RlZFByb3hpZXMsIHBy
b3hpZXMpOwotICAgIGZvciAoYXV0byogcHJveHkgOiBwcm94aWVzKQorICAgIGZvciAoYXV0byog
cHJveHkgOiBjb3B5VG9WZWN0b3IobV9jb25uZWN0ZWRQcm94aWVzLnZhbHVlcygpKSkKICAgICAg
ICAgcHJveHktPmRpc2Nvbm5lY3RGcm9tV29ya2VySW5zcGVjdG9yQ29udHJvbGxlcigpOwogCiAg
ICAgbV9jb25uZWN0ZWRQcm94aWVzLmNsZWFyKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAJKHJldmlzaW9uIDIyMzExNikK
KysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI2Miw5ICsyNjIsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRh
OjpjbGVhcihjb25zdCBTCiAKIFZlY3RvcjxOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VE
YXRhKj4gTmV0d29ya1Jlc291cmNlc0RhdGE6OnJlc291cmNlcygpCiB7Ci0gICAgVmVjdG9yPE5l
dHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGEqPiByZXNvdXJjZXM7Ci0gICAgY29weVZh
bHVlc1RvVmVjdG9yKG1fcmVxdWVzdElkVG9SZXNvdXJjZURhdGFNYXAsIHJlc291cmNlcyk7Ci0g
ICAgcmV0dXJuIHJlc291cmNlczsKKyAgICByZXR1cm4gY29weVRvVmVjdG9yKG1fcmVxdWVzdElk
VG9SZXNvdXJjZURhdGFNYXAudmFsdWVzKCkpOwogfQogCiBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6
UmVzb3VyY2VEYXRhKiBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6cmVzb3VyY2VEYXRhRm9yUmVxdWVz
dElkKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkKQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVy
L0RvY3VtZW50TG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RG9jdW1lbnRMb2FkZXIuY3BwCShyZXZpc2lvbiAyMjMxMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAsMjUgKzEwMCwx
OSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyB2b2lkIGNhbmNlbEFsbChjb25zdCBS
ZXNvdXJjZUxvYWRlck1hcCYgbG9hZGVycykKIHsKLSAgICBWZWN0b3I8UmVmUHRyPFJlc291cmNl
TG9hZGVyPj4gbG9hZGVyc0NvcHk7Ci0gICAgY29weVZhbHVlc1RvVmVjdG9yKGxvYWRlcnMsIGxv
YWRlcnNDb3B5KTsKLSAgICBmb3IgKGF1dG8mIGxvYWRlciA6IGxvYWRlcnNDb3B5KQorICAgIGZv
ciAoYXV0byYgbG9hZGVyIDogY29weVRvVmVjdG9yKGxvYWRlcnMudmFsdWVzKCkpKQogICAgICAg
ICBsb2FkZXItPmNhbmNlbCgpOwogfQogCiBzdGF0aWMgdm9pZCBzZXRBbGxEZWZlcnNMb2FkaW5n
KGNvbnN0IFJlc291cmNlTG9hZGVyTWFwJiBsb2FkZXJzLCBib29sIGRlZmVycykKIHsKLSAgICBW
ZWN0b3I8UmVmUHRyPFJlc291cmNlTG9hZGVyPj4gbG9hZGVyc0NvcHk7Ci0gICAgY29weVZhbHVl
c1RvVmVjdG9yKGxvYWRlcnMsIGxvYWRlcnNDb3B5KTsKLSAgICBmb3IgKGF1dG8mIGxvYWRlciA6
IGxvYWRlcnNDb3B5KQorICAgIGZvciAoYXV0byYgbG9hZGVyIDogY29weVRvVmVjdG9yKGxvYWRl
cnMudmFsdWVzKCkpKQogICAgICAgICBsb2FkZXItPnNldERlZmVyc0xvYWRpbmcoZGVmZXJzKTsK
IH0KIAogc3RhdGljIGJvb2wgYXJlQWxsTG9hZGVyc1BhZ2VDYWNoZUFjY2VwdGFibGUoY29uc3Qg
UmVzb3VyY2VMb2FkZXJNYXAmIGxvYWRlcnMpCiB7Ci0gICAgVmVjdG9yPFJlZlB0cjxSZXNvdXJj
ZUxvYWRlcj4+IGxvYWRlcnNDb3B5OwotICAgIGNvcHlWYWx1ZXNUb1ZlY3Rvcihsb2FkZXJzLCBs
b2FkZXJzQ29weSk7Ci0gICAgZm9yIChhdXRvJiBsb2FkZXIgOiBsb2FkZXJzQ29weSkgeworICAg
IGZvciAoYXV0byYgbG9hZGVyIDogY29weVRvVmVjdG9yKGxvYWRlcnMudmFsdWVzKCkpKSB7CiAg
ICAgICAgIGlmICghbG9hZGVyLT5mcmFtZUxvYWRlcigpIHx8ICFsb2FkZXItPmZyYW1lTG9hZGVy
KCktPmZyYW1lKCkucGFnZSgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAJKHJldmlzaW9uIDIy
MzExNikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI3OCwxMCArMjc4LDcgQEAgdm9pZCBNZW1vcnlDYWNoZTo6Zm9yRWFj
aFNlc3Npb25SZXNvdXJjZQogICAgIGlmIChpdCA9PSBtX3Nlc3Npb25SZXNvdXJjZXMuZW5kKCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIFZlY3RvcjxDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNo
ZWRSZXNvdXJjZT4+IHJlc291cmNlc0ZvclNlc3Npb247Ci0gICAgY29weVZhbHVlc1RvVmVjdG9y
KCppdC0+dmFsdWUsIHJlc291cmNlc0ZvclNlc3Npb24pOwotCi0gICAgZm9yIChhdXRvJiByZXNv
dXJjZSA6IHJlc291cmNlc0ZvclNlc3Npb24pCisgICAgZm9yIChhdXRvJiByZXNvdXJjZSA6IGNv
cHlUb1ZlY3RvcigqaXQtPnZhbHVlLT52YWx1ZXMoKSkpCiAgICAgICAgIGZ1bmN0aW9uKCpyZXNv
dXJjZSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9tYWMvRG9jdW1lbnRMb2Fk
ZXJNYWMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9tYWMvRG9jdW1l
bnRMb2FkZXJNYWMuY3BwCShyZXZpc2lvbiAyMjMxMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvbWFjL0RvY3VtZW50TG9hZGVyTWFjLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsMTcgKzM3
LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIHZvaWQgc2NoZWR1bGVBbGwoY29u
c3QgUmVzb3VyY2VMb2FkZXJNYXAmIGxvYWRlcnMsIFNjaGVkdWxlUGFpciYgcGFpcikKIHsKLSAg
ICBWZWN0b3I8UmVmUHRyPFJlc291cmNlTG9hZGVyPj4gbG9hZGVyc0NvcHk7Ci0gICAgY29weVZh
bHVlc1RvVmVjdG9yKGxvYWRlcnMsIGxvYWRlcnNDb3B5KTsKLSAgICBmb3IgKGF1dG8mIGxvYWRl
ciA6IGxvYWRlcnNDb3B5KQorICAgIGZvciAoYXV0byYgbG9hZGVyIDogY29weVRvVmVjdG9yKGxv
YWRlcnMudmFsdWVzKCkpKQogICAgICAgICBsb2FkZXItPnNjaGVkdWxlKHBhaXIpOwogfQogCiBz
dGF0aWMgdm9pZCB1bnNjaGVkdWxlQWxsKGNvbnN0IFJlc291cmNlTG9hZGVyTWFwJiBsb2FkZXJz
LCBTY2hlZHVsZVBhaXImIHBhaXIpCiB7Ci0gICAgVmVjdG9yPFJlZlB0cjxSZXNvdXJjZUxvYWRl
cj4+IGxvYWRlcnNDb3B5OwotICAgIGNvcHlWYWx1ZXNUb1ZlY3Rvcihsb2FkZXJzLCBsb2FkZXJz
Q29weSk7Ci0gICAgZm9yIChhdXRvJiBsb2FkZXIgOiBsb2FkZXJzQ29weSkKKyAgICBmb3IgKGF1
dG8mIGxvYWRlciA6IGNvcHlUb1ZlY3Rvcihsb2FkZXJzLnZhbHVlcygpKSkKICAgICAgICAgbG9h
ZGVyLT51bnNjaGVkdWxlKHBhaXIpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1Jl
c291cmNlVXNhZ2VUaHJlYWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
UmVzb3VyY2VVc2FnZVRocmVhZC5jcHAJKHJldmlzaW9uIDIyMzExNikKKysrIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvUmVzb3VyY2VVc2FnZVRocmVhZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg2LDcg
Kzg2LDcgQEAgdm9pZCBSZXNvdXJjZVVzYWdlVGhyZWFkOjpub3RpZnlPYnNlcnZlcgogICAgICAg
ICB7CiAgICAgICAgICAgICBhdXRvJiByZXNvdXJjZVVzYWdlVGhyZWFkID0gUmVzb3VyY2VVc2Fn
ZVRocmVhZDo6c2luZ2xldG9uKCk7CiAgICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihyZXNv
dXJjZVVzYWdlVGhyZWFkLm1fbG9jayk7Ci0gICAgICAgICAgICBjb3B5VmFsdWVzVG9WZWN0b3Io
cmVzb3VyY2VVc2FnZVRocmVhZC5tX29ic2VydmVycywgZnVuY3Rpb25zKTsKKyAgICAgICAgICAg
IGZ1bmN0aW9ucyA9IGNvcHlUb1ZlY3RvcihyZXNvdXJjZVVzYWdlVGhyZWFkLm1fb2JzZXJ2ZXJz
LnZhbHVlcygpKTsKICAgICAgICAgfQogCiAgICAgICAgIGZvciAoYXV0byYgZnVuY3Rpb24gOiBm
dW5jdGlvbnMpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbVByaXZhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUHJpdmF0ZS5jcHAJKHJldmlzaW9uIDIyMzExNikKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUHJpdmF0ZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTkxLDExICs5MSw3IEBAIHZvaWQgTWVkaWFTdHJlYW1Qcml2
YXRlOjpyZW1vdmVPYnNlcnZlcigKIAogTWVkaWFTdHJlYW1UcmFja1ByaXZhdGVWZWN0b3IgTWVk
aWFTdHJlYW1Qcml2YXRlOjp0cmFja3MoKSBjb25zdAogewotICAgIE1lZGlhU3RyZWFtVHJhY2tQ
cml2YXRlVmVjdG9yIHRyYWNrczsKLSAgICB0cmFja3MucmVzZXJ2ZUNhcGFjaXR5KG1fdHJhY2tT
ZXQuc2l6ZSgpKTsKLSAgICBjb3B5VmFsdWVzVG9WZWN0b3IobV90cmFja1NldCwgdHJhY2tzKTsK
LQotICAgIHJldHVybiB0cmFja3M7CisgICAgcmV0dXJuIGNvcHlUb1ZlY3RvcihtX3RyYWNrU2V0
LnZhbHVlcygpKTsKIH0KIAogdm9pZCBNZWRpYVN0cmVhbVByaXZhdGU6OnVwZGF0ZUFjdGl2ZVN0
YXRlKE5vdGlmeUNsaWVudE9wdGlvbiBub3RpZnlDbGllbnRPcHRpb24pCkluZGV4OiBTb3VyY2Uv
V2ViRHJpdmVyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViRHJpdmVyL0NoYW5n
ZUxvZwkocmV2aXNpb24gMjIzMTE2KQorKysgU291cmNlL1dlYkRyaXZlci9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxNy0xMC0wOSAgU2FtIFdlaW5pZyAgPHNh
bUB3ZWJraXQub3JnPgorCisgICAgICAgIFJlcGxhY2UgY29weUtleXNUb1ZlY3Rvci9jb3B5VmFs
dWVzVG9WZWN0b3Igd2l0aCBjb3B5VG9WZWN0b3IobWFwLmtleXMoKSkvY29weVRvVmVjdG9yKG1h
cC52YWx1ZXMoKSkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE3ODEwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogU2Vzc2lvbkhvc3QuY3BwOgorICAgICAgICAoV2ViRHJpdmVyOjpTZXNzaW9uSG9zdDo6
aW5zcGVjdG9yRGlzY29ubmVjdGVkKToKKwogMjAxNy0xMC0wMiAgQ2FybG9zIEdhcmNpYSBDYW1w
b3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgV2ViRHJpdmVyOiBIVFRQIHN0YXR1
cyBjb2RlIGlzIG5vdCBjb3JyZWN0IGZvciBzb21lIG9mIHRoZSBlcnJvcnMKSW5kZXg6IFNvdXJj
ZS9XZWJEcml2ZXIvU2Vzc2lvbkhvc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJEcml2
ZXIvU2Vzc2lvbkhvc3QuY3BwCShyZXZpc2lvbiAyMjMxMTYpCisrKyBTb3VyY2UvV2ViRHJpdmVy
L1Nlc3Npb25Ib3N0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsOSArMzYsNyBAQCBuYW1lc3Bh
Y2UgV2ViRHJpdmVyIHsKIHZvaWQgU2Vzc2lvbkhvc3Q6Omluc3BlY3RvckRpc2Nvbm5lY3RlZCgp
CiB7CiAgICAgLy8gQnJvd3NlciBjbG9zZWQgb3IgY3Jhc2hlZCwgZmluaXNoIGFsbCBwZW5kaW5n
IGNvbW1hbmRzIHdpdGggZXJyb3IuCi0gICAgVmVjdG9yPGxvbmc+IG1lc3NhZ2VzOwotICAgIGNv
cHlLZXlzVG9WZWN0b3IobV9jb21tYW5kUmVxdWVzdHMsIG1lc3NhZ2VzKTsKLSAgICBmb3IgKGF1
dG8gbWVzc2FnZUlEIDogbWVzc2FnZXMpIHsKKyAgICBmb3IgKGF1dG8gbWVzc2FnZUlEIDogY29w
eVRvVmVjdG9yKG1fY29tbWFuZFJlcXVlc3RzLmtleXMoKSkpIHsKICAgICAgICAgYXV0byByZXNw
b25zZUhhbmRsZXIgPSBtX2NvbW1hbmRSZXF1ZXN0cy50YWtlKG1lc3NhZ2VJRCk7CiAgICAgICAg
IHJlc3BvbnNlSGFuZGxlcih7IG51bGxwdHIsIHRydWUgfSk7CiAgICAgfQpJbmRleDogU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDIyMzExNikKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsNDMgQEAKKzIwMTctMTAtMDkgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0
Lm9yZz4KKworICAgICAgICBSZXBsYWNlIGNvcHlLZXlzVG9WZWN0b3IvY29weVZhbHVlc1RvVmVj
dG9yIHdpdGggY29weVRvVmVjdG9yKG1hcC5rZXlzKCkpL2NvcHlUb1ZlY3RvcihtYXAudmFsdWVz
KCkpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzgx
MDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZENsb3NlKToKKyAgICAg
ICAgKiBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1t
OgorICAgICAgICAoV2ViS2l0OjpkdW1wQ2hhbmdlZExheWVycyk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwOgorICAgICAgICAod2Via2l0V2ViQ29u
dGV4dEludmFsaWRhdGVDdXN0b21Qcm90b2NvbFJlcXVlc3RzKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHA6CisgICAgICAgICh3ZWJraXRXZWJWaWV3
QmFzZUNvbnRhaW5lckZvcmFsbCk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dLV2ViVmll
d0NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXdDb250ZW50
UHJvdmlkZXJSZWdpc3RyeSBfbWltZVR5cGVzV2l0aEN1c3RvbUNvbnRlbnRQcm92aWRlcnNdKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvR2VuZXJpY0NhbGxiYWNrLmg6CisgICAgICAgIChXZWJLaXQ6
OmludmFsaWRhdGVDYWxsYmFja01hcCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6c2h1dERvd24pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmRpZENsb3NlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpkaWRCZWNvbWVVbnJlc3BvbnNpdmUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmRpZEJlY29tZVJlc3BvbnNpdmUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OndpbGxDaGFuZ2VJc1Jlc3BvbnNpdmUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmRpZENoYW5nZUlzUmVzcG9uc2l2ZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6ZGlzY29ubmVjdEZyYW1lc0Zyb21QYWdlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpmcmFtZUNvdW50SW5QYWdlIGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpyZXF1ZXN0VGVybWluYXRpb24p
OgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUFJ1bnRpbWVPYmplY3RN
YXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpOUFJ1bnRpbWVPYmplY3RNYXA6OmludmFsaWRhdGUp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpzdG9wQWxsU3RyZWFtcyk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpQbHVnaW5WaWV3OjpjYW5jZWxBbGxTdHJlYW1zKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUNvbnRleHQubW06CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZUNvbnRleHQ6OmJ1aWxkVHJhbnNhY3Rpb24pOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3M6OmRpZENsb3NlKToKKwogMjAxNy0xMC0wOSAgSmVyZW15IEpvbmVzICA8amVyZW15
akBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IHR5cG8gb2YgdmlydHVhbCBrZXl3b3JkIGluIFBh
Z2VDbGllbnRJbXBsSU9TLmgKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCShyZXZp
c2lvbiAyMjMxMTYpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY4LDkgKzE2OCw3IEBA
IHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZEMKICAgICAvLyBQcm90ZWN0
IG91cnNlbGYgYXMgd2UgbWlnaHQgYmUgb3RoZXJ3aXNlIGJlIGRlbGV0ZWQgZHVyaW5nIHRoaXMg
ZnVuY3Rpb24uCiAgICAgUmVmPE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzPiBwcm90ZWN0
b3IoKnRoaXMpOwogCi0gICAgVmVjdG9yPFJlZlB0cjxOZXR3b3JrUmVzb3VyY2VMb2FkZXI+PiBs
b2FkZXJzOwotICAgIGNvcHlWYWx1ZXNUb1ZlY3RvcihtX25ldHdvcmtSZXNvdXJjZUxvYWRlcnMs
IGxvYWRlcnMpOwotICAgIGZvciAoYXV0byYgbG9hZGVyIDogbG9hZGVycykKKyAgICBmb3IgKGF1
dG8mIGxvYWRlciA6IGNvcHlUb1ZlY3RvcihtX25ldHdvcmtSZXNvdXJjZUxvYWRlcnMudmFsdWVz
KCkpKQogICAgICAgICBsb2FkZXItPmFib3J0KCk7CiAgICAgQVNTRVJUKG1fbmV0d29ya1Jlc291
cmNlTG9hZGVycy5pc0VtcHR5KCkpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1v
dGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5z
YWN0aW9uLm1tCShyZXZpc2lvbiAyMjMxMTYpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1v
dGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0JKHdvcmtpbmcgY29weSkK
QEAgLTc0NCw4ICs3NDQsNyBAQCBzdGF0aWMgdm9pZCBkdW1wQ2hhbmdlZExheWVycyhUZXh0U3Ry
ZWFtCiAgICAgdHMgPDwgImNoYW5nZWQtbGF5ZXJzIjsKIAogICAgIC8vIER1bXAgdGhlIGxheWVy
IHByb3BlcnRpZXMgc29ydGVkIGJ5IGxheWVyIElELgotICAgIFZlY3RvcjxHcmFwaGljc0xheWVy
OjpQbGF0Zm9ybUxheWVySUQ+IGxheWVySURzOwotICAgIGNvcHlLZXlzVG9WZWN0b3IoY2hhbmdl
ZExheWVyUHJvcGVydGllcywgbGF5ZXJJRHMpOworICAgIGF1dG8gbGF5ZXJJRHMgPSBjb3B5VG9W
ZWN0b3IoY2hhbmdlZExheWVyUHJvcGVydGllcy5rZXlzKCkpOwogICAgIHN0ZDo6c29ydChsYXll
cklEcy5iZWdpbigpLCBsYXllcklEcy5lbmQoKSk7CiAKICAgICBmb3IgKGF1dG8mIGxheWVySUQg
OiBsYXllcklEcykgewpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2VuZXJpY0NhbGxi
YWNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2VuZXJpY0NhbGxi
YWNrLmgJKHJldmlzaW9uIDIyMzExNikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dlbmVy
aWNDYWxsYmFjay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjMsOSArMTYzLDcgQEAgdHlwZWRlZiBH
ZW5lcmljQ2FsbGJhY2s8Y29uc3QgU2hhcmVhYmxlQgogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIHZv
aWQgaW52YWxpZGF0ZUNhbGxiYWNrTWFwKEhhc2hNYXA8dWludDY0X3QsIFQ+JiBjYWxsYmFja01h
cCwgQ2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikKIHsKLSAgICBWZWN0b3I8VD4gY2FsbGJhY2tz
OwotICAgIGNvcHlWYWx1ZXNUb1ZlY3RvcihjYWxsYmFja01hcCwgY2FsbGJhY2tzKTsKLSAgICBm
b3IgKGF1dG8mIGNhbGxiYWNrIDogY2FsbGJhY2tzKQorICAgIGZvciAoYXV0byYgY2FsbGJhY2sg
OiBjb3B5VG9WZWN0b3IoY2FsbGJhY2tNYXAudmFsdWVzKCkpKQogICAgICAgICBjYWxsYmFjay0+
aW52YWxpZGF0ZShlcnJvcik7CiAKICAgICBjYWxsYmFja01hcC5jbGVhcigpOwpJbmRleDogU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCShyZXZpc2lvbiAyMjMx
MTYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xODEsMTggKzE4MSwxNSBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6c2h1
dERvd24oKQogICAgIG1fYmFja2dyb3VuZFJlc3BvbnNpdmVuZXNzVGltZXIuaW52YWxpZGF0ZSgp
OwogICAgIG1fdG9rZW5Gb3JIb2xkaW5nTG9ja2VkRmlsZXMgPSBudWxscHRyOwogCi0gICAgVmVj
dG9yPFJlZlB0cjxXZWJGcmFtZVByb3h5Pj4gZnJhbWVzOwotICAgIGNvcHlWYWx1ZXNUb1ZlY3Rv
cihtX2ZyYW1lTWFwLCBmcmFtZXMpOwotCi0gICAgZm9yIChzaXplX3QgaSA9IDAsIHNpemUgPSBm
cmFtZXMuc2l6ZSgpOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICBmcmFtZXNbaV0tPndlYlByb2Nl
c3NXaWxsU2h1dERvd24oKTsKKyAgICBmb3IgKGF1dG8mIGZyYW1lIDogY29weVRvVmVjdG9yKG1f
ZnJhbWVNYXAudmFsdWVzKCkpKQorICAgICAgICBmcmFtZS0+d2ViUHJvY2Vzc1dpbGxTaHV0RG93
bigpOwogICAgIG1fZnJhbWVNYXAuY2xlYXIoKTsKIAotICAgIGZvciAoVmlzaXRlZExpbmtTdG9y
ZSogdmlzaXRlZExpbmtTdG9yZSA6IG1fdmlzaXRlZExpbmtTdG9yZXMpCisgICAgZm9yIChhdXRv
KiB2aXNpdGVkTGlua1N0b3JlIDogbV92aXNpdGVkTGlua1N0b3JlcykKICAgICAgICAgdmlzaXRl
ZExpbmtTdG9yZS0+cmVtb3ZlUHJvY2VzcygqdGhpcyk7CiAgICAgbV92aXNpdGVkTGlua1N0b3Jl
cy5jbGVhcigpOwogCi0gICAgZm9yIChXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSogd2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkgOiBtX3dlYlVzZXJDb250ZW50Q29udHJvbGxlclBy
b3hpZXMpCisgICAgZm9yIChhdXRvKiB3ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSA6IG1f
d2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveGllcykKICAgICAgICAgd2ViVXNlckNvbnRlbnRD
b250cm9sbGVyUHJveHktPnJlbW92ZVByb2Nlc3MoKnRoaXMpOwogICAgIG1fd2ViVXNlckNvbnRl
bnRDb250cm9sbGVyUHJveGllcy5jbGVhcigpOwogCkBAIC02MjUsMTMgKzYyMiwxMiBAQCB2b2lk
IFdlYlByb2Nlc3NQcm94eTo6ZGlkQ2xvc2UoSVBDOjpDb25uCiAKICAgICB3ZWJDb25uZWN0aW9u
KCktPmRpZENsb3NlKCk7CiAKLSAgICBWZWN0b3I8UmVmUHRyPFdlYlBhZ2VQcm94eT4+IHBhZ2Vz
OwotICAgIGNvcHlWYWx1ZXNUb1ZlY3RvcihtX3BhZ2VNYXAsIHBhZ2VzKTsKKyAgICBhdXRvIHBh
Z2VzID0gY29weVRvVmVjdG9yKG1fcGFnZU1hcC52YWx1ZXMoKSk7CiAKICAgICBzaHV0RG93bigp
OwogCi0gICAgZm9yIChzaXplX3QgaSA9IDAsIHNpemUgPSBwYWdlcy5zaXplKCk7IGkgPCBzaXpl
OyArK2kpCi0gICAgICAgIHBhZ2VzW2ldLT5wcm9jZXNzRGlkVGVybWluYXRlKFByb2Nlc3NUZXJt
aW5hdGlvblJlYXNvbjo6Q3Jhc2gpOworICAgIGZvciAoYXV0byYgcGFnZSA6IHBhZ2VzKQorICAg
ICAgICBwYWdlLT5wcm9jZXNzRGlkVGVybWluYXRlKFByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbjo6
Q3Jhc2gpOwogCiB9CiAKQEAgLTY1MywxMiArNjQ5LDkgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6
OmRpZEJlY29tZVVucmVzcG9ucwogewogICAgIG1faXNSZXNwb25zaXZlID0gTm9Pck1heWJlOjpO
bzsKIAotICAgIFZlY3RvcjxSZWZQdHI8V2ViUGFnZVByb3h5Pj4gcGFnZXM7Ci0gICAgY29weVZh
bHVlc1RvVmVjdG9yKG1fcGFnZU1hcCwgcGFnZXMpOwotCiAgICAgYXV0byBpc1Jlc3BvbnNpdmVD
YWxsYmFja3MgPSBXVEZNb3ZlKG1faXNSZXNwb25zaXZlQ2FsbGJhY2tzKTsKIAotICAgIGZvciAo
YXV0byYgcGFnZSA6IHBhZ2VzKQorICAgIGZvciAoYXV0byYgcGFnZSA6IGNvcHlUb1ZlY3Rvciht
X3BhZ2VNYXAudmFsdWVzKCkpKQogICAgICAgICBwYWdlLT5wcm9jZXNzRGlkQmVjb21lVW5yZXNw
b25zaXZlKCk7CiAKICAgICBib29sIGlzV2ViUHJvY2Vzc1Jlc3BvbnNpdmUgPSBmYWxzZTsKQEAg
LTY3MCwyNSArNjYzLDE5IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRCZWNvbWVSZXNwb25z
aXYKIHsKICAgICBtX2lzUmVzcG9uc2l2ZSA9IE5vT3JNYXliZTo6TWF5YmU7CiAKLSAgICBWZWN0
b3I8UmVmUHRyPFdlYlBhZ2VQcm94eT4+IHBhZ2VzOwotICAgIGNvcHlWYWx1ZXNUb1ZlY3Rvciht
X3BhZ2VNYXAsIHBhZ2VzKTsKLSAgICBmb3IgKGF1dG8mIHBhZ2UgOiBwYWdlcykKKyAgICBmb3Ig
KGF1dG8mIHBhZ2UgOiBjb3B5VG9WZWN0b3IobV9wYWdlTWFwLnZhbHVlcygpKSkKICAgICAgICAg
cGFnZS0+cHJvY2Vzc0RpZEJlY29tZVJlc3BvbnNpdmUoKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNz
UHJveHk6OndpbGxDaGFuZ2VJc1Jlc3BvbnNpdmUoKQogewotICAgIFZlY3RvcjxSZWZQdHI8V2Vi
UGFnZVByb3h5Pj4gcGFnZXM7Ci0gICAgY29weVZhbHVlc1RvVmVjdG9yKG1fcGFnZU1hcCwgcGFn
ZXMpOwotICAgIGZvciAoYXV0byYgcGFnZSA6IHBhZ2VzKQorICAgIGZvciAoYXV0byYgcGFnZSA6
IGNvcHlUb1ZlY3RvcihtX3BhZ2VNYXAudmFsdWVzKCkpKQogICAgICAgICBwYWdlLT53aWxsQ2hh
bmdlUHJvY2Vzc0lzUmVzcG9uc2l2ZSgpOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlk
Q2hhbmdlSXNSZXNwb25zaXZlKCkKIHsKLSAgICBWZWN0b3I8UmVmUHRyPFdlYlBhZ2VQcm94eT4+
IHBhZ2VzOwotICAgIGNvcHlWYWx1ZXNUb1ZlY3RvcihtX3BhZ2VNYXAsIHBhZ2VzKTsKLSAgICBm
b3IgKGF1dG8mIHBhZ2UgOiBwYWdlcykKKyAgICBmb3IgKGF1dG8mIHBhZ2UgOiBjb3B5VG9WZWN0
b3IobV9wYWdlTWFwLnZhbHVlcygpKSkKICAgICAgICAgcGFnZS0+ZGlkQ2hhbmdlUHJvY2Vzc0lz
UmVzcG9uc2l2ZSgpOwogfQogCkBAIC03NDgsMTkgKzczNSwxNyBAQCB2b2lkIFdlYlByb2Nlc3NQ
cm94eTo6ZGlkRGVzdHJveUZyYW1lKHVpCiAKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaXNjb25u
ZWN0RnJhbWVzRnJvbVBhZ2UoV2ViUGFnZVByb3h5KiBwYWdlKQogewotICAgIFZlY3RvcjxSZWZQ
dHI8V2ViRnJhbWVQcm94eT4+IGZyYW1lczsKLSAgICBjb3B5VmFsdWVzVG9WZWN0b3IobV9mcmFt
ZU1hcCwgZnJhbWVzKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IGZyYW1lcy5zaXpl
KCk7IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgaWYgKGZyYW1lc1tpXS0+cGFnZSgpID09IHBh
Z2UpCi0gICAgICAgICAgICBmcmFtZXNbaV0tPndlYlByb2Nlc3NXaWxsU2h1dERvd24oKTsKKyAg
ICBmb3IgKGF1dG8mIGZyYW1lIDogY29weVRvVmVjdG9yKG1fZnJhbWVNYXAudmFsdWVzKCkpKSB7
CisgICAgICAgIGlmIChmcmFtZS0+cGFnZSgpID09IHBhZ2UpCisgICAgICAgICAgICBmcmFtZS0+
d2ViUHJvY2Vzc1dpbGxTaHV0RG93bigpOwogICAgIH0KIH0KIAogc2l6ZV90IFdlYlByb2Nlc3NQ
cm94eTo6ZnJhbWVDb3VudEluUGFnZShXZWJQYWdlUHJveHkqIHBhZ2UpIGNvbnN0CiB7CiAgICAg
c2l6ZV90IHJlc3VsdCA9IDA7Ci0gICAgZm9yIChIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8V2Vi
RnJhbWVQcm94eT4+Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gbV9mcmFtZU1hcC5iZWdpbigpOyBp
dGVyICE9IG1fZnJhbWVNYXAuZW5kKCk7ICsraXRlcikgewotICAgICAgICBpZiAoaXRlci0+dmFs
dWUtPnBhZ2UoKSA9PSBwYWdlKQorICAgIGZvciAoYXV0byYgZnJhbWUgOiBtX2ZyYW1lTWFwLnZh
bHVlcygpKSB7CisgICAgICAgIGlmIChmcmFtZS0+cGFnZSgpID09IHBhZ2UpCiAgICAgICAgICAg
ICArK3Jlc3VsdDsKICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTg4OCwxMyArODczLDEy
IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpyZXF1ZXN0VGVybWluYXRpb24KICAgICBpZiAod2Vi
Q29ubmVjdGlvbigpKQogICAgICAgICB3ZWJDb25uZWN0aW9uKCktPmRpZENsb3NlKCk7CiAKLSAg
ICBWZWN0b3I8UmVmUHRyPFdlYlBhZ2VQcm94eT4+IHBhZ2VzOwotICAgIGNvcHlWYWx1ZXNUb1Zl
Y3RvcihtX3BhZ2VNYXAsIHBhZ2VzKTsKKyAgICBhdXRvIHBhZ2VzID0gY29weVRvVmVjdG9yKG1f
cGFnZU1hcC52YWx1ZXMoKSk7CiAKICAgICBzaHV0RG93bigpOwogCi0gICAgZm9yIChzaXplX3Qg
aSA9IDAsIHNpemUgPSBwYWdlcy5zaXplKCk7IGkgPCBzaXplOyArK2kpCi0gICAgICAgIHBhZ2Vz
W2ldLT5wcm9jZXNzRGlkVGVybWluYXRlKHJlYXNvbik7CisgICAgZm9yIChhdXRvJiBwYWdlIDog
cGFnZXMpCisgICAgICAgIHBhZ2UtPnByb2Nlc3NEaWRUZXJtaW5hdGUocmVhc29uKTsKIH0KIAog
dm9pZCBXZWJQcm9jZXNzUHJveHk6OnN0b3BSZXNwb25zaXZlbmVzc1RpbWVyKCkKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRl
eHQuY3BwCShyZXZpc2lvbiAyMjMxMTYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYxOCw5ICsxNjE4
LDcgQEAgdm9pZCB3ZWJraXRXZWJDb250ZXh0U3RvcExvYWRpbmdDdXN0b21QcgogCiB2b2lkIHdl
YmtpdFdlYkNvbnRleHRJbnZhbGlkYXRlQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0cyhXZWJLaXRXZWJD
b250ZXh0KiBjb250ZXh0LCBMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSYgbWFuYWdl
cikKIHsKLSAgICBWZWN0b3I8R1JlZlB0cjxXZWJLaXRVUklTY2hlbWVSZXF1ZXN0Pj4gcmVxdWVz
dHM7Ci0gICAgY29weVZhbHVlc1RvVmVjdG9yKGNvbnRleHQtPnByaXYtPnVyaVNjaGVtZVJlcXVl
c3RzLCByZXF1ZXN0cyk7Ci0gICAgZm9yIChhdXRvJiByZXF1ZXN0IDogcmVxdWVzdHMpIHsKKyAg
ICBmb3IgKGF1dG8mIHJlcXVlc3QgOiBjb3B5VG9WZWN0b3IoY29udGV4dC0+cHJpdi0+dXJpU2No
ZW1lUmVxdWVzdHMudmFsdWVzKCkpKSB7CiAgICAgICAgIGlmICh3ZWJraXRVUklTY2hlbWVSZXF1
ZXN0R2V0TWFuYWdlcihyZXF1ZXN0LmdldCgpKSA9PSAmbWFuYWdlcikKICAgICAgICAgICAgIHdl
YmtpdFVSSVNjaGVtZVJlcXVlc3RJbnZhbGlkYXRlKHJlcXVlc3QuZ2V0KCkpOwogICAgIH0KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vi
Vmlld0Jhc2UuY3BwCShyZXZpc2lvbiAyMjMxMTYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDc1LDkg
KzQ3NSw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlQ29udGFpbmVyRm8KICAgICBX
ZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlldyA9IFdFQktJVF9XRUJfVklFV19CQVNFKGNvbnRhaW5l
cik7CiAgICAgV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKiBwcml2ID0gd2ViVmlldy0+cHJpdjsK
IAotICAgIFZlY3RvcjxHdGtXaWRnZXQqPiBjaGlsZHJlbjsKLSAgICBjb3B5S2V5c1RvVmVjdG9y
KHByaXYtPmNoaWxkcmVuLCBjaGlsZHJlbik7Ci0gICAgZm9yIChjb25zdCBhdXRvJiBjaGlsZCA6
IGNoaWxkcmVuKSB7CisgICAgZm9yIChjb25zdCBhdXRvJiBjaGlsZCA6IGNvcHlUb1ZlY3Rvcihw
cml2LT5jaGlsZHJlbi5rZXlzKCkpKSB7CiAgICAgICAgIGlmIChwcml2LT5jaGlsZHJlbi5jb250
YWlucyhjaGlsZCkpCiAgICAgICAgICAgICAoKmNhbGxiYWNrKShjaGlsZCwgY2FsbGJhY2tEYXRh
KTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XS1dlYlZpZXdD
b250ZW50UHJvdmlkZXJSZWdpc3RyeS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9XS1dlYlZpZXdDb250ZW50UHJvdmlkZXJSZWdpc3RyeS5tbQkocmV2aXNp
b24gMjIzMTE2KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV0tXZWJWaWV3Q29u
dGVudFByb3ZpZGVyUmVnaXN0cnkubW0JKHdvcmtpbmcgY29weSkKQEAgLTg5LDkgKzg5LDcgQEAg
LSAoQ2xhc3MgPFdLV2ViVmlld0NvbnRlbnRQcm92aWRlcj4pcHJvdgogCiAtIChWZWN0b3I8U3Ry
aW5nPilfbWltZVR5cGVzV2l0aEN1c3RvbUNvbnRlbnRQcm92aWRlcnMKIHsKLSAgICBWZWN0b3I8
U3RyaW5nPiBtaW1lVHlwZXM7Ci0gICAgY29weUtleXNUb1ZlY3RvcihfY29udGVudFByb3ZpZGVy
Rm9yTUlNRVR5cGUsIG1pbWVUeXBlcyk7Ci0gICAgcmV0dXJuIG1pbWVUeXBlczsKKyAgICByZXR1
cm4gY29weVRvVmVjdG9yKF9jb250ZW50UHJvdmlkZXJGb3JNSU1FVHlwZS5rZXlzKCkpOwogfQog
CiBAZW5kCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCShyZXZp
c2lvbiAyMjMxMTYpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTY2NSwxMCArNjY1LDcgQEAgdm9pZCBXZWJQcm9jZXNzOjpkaWRS
ZWNlaXZlTWVzc2FnZShJUEM6Ogogdm9pZCBXZWJQcm9jZXNzOjpkaWRDbG9zZShJUEM6OkNvbm5l
Y3Rpb24mKQogewogI2lmbmRlZiBOREVCVUcKLSAgICAvLyBDbG9zZSBhbGwgdGhlIGxpdmUgcGFn
ZXMuCi0gICAgVmVjdG9yPFJlZlB0cjxXZWJQYWdlPj4gcGFnZXM7Ci0gICAgY29weVZhbHVlc1Rv
VmVjdG9yKG1fcGFnZU1hcCwgcGFnZXMpOwotICAgIGZvciAoYXV0byYgcGFnZSA6IHBhZ2VzKQor
ICAgIGZvciAoYXV0byYgcGFnZSA6IGNvcHlUb1ZlY3RvcihtX3BhZ2VNYXAudmFsdWVzKCkpKQog
ICAgICAgICBwYWdlLT5jbG9zZSgpOwogICAgIHBhZ2VzLmNsZWFyKCk7CiAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCShyZXZpc2lv
biAyMjMxMTYpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI4NCwxMSArMTI4NCw4IEBAIHZvaWQgUGx1Z2luVmll
dzo6cmVtb3ZlU3RyZWFtKFN0cmVhbSogc3QKIAogdm9pZCBQbHVnaW5WaWV3OjpjYW5jZWxBbGxT
dHJlYW1zKCkKIHsKLSAgICBWZWN0b3I8UmVmUHRyPFN0cmVhbT4+IHN0cmVhbXM7Ci0gICAgY29w
eVZhbHVlc1RvVmVjdG9yKG1fc3RyZWFtcywgc3RyZWFtcyk7Ci0gICAgCi0gICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBzdHJlYW1zLnNpemUoKTsgKytpKQotICAgICAgICBzdHJlYW1zW2ldLT5j
YW5jZWwoKTsKKyAgICBmb3IgKGF1dG8mIHN0cmVhbSA6IGNvcHlUb1ZlY3RvcihtX3N0cmVhbXMu
dmFsdWVzKCkpKQorICAgICAgICBzdHJlYW0tPmNhbmNlbCgpOwogCiAgICAgLy8gQ2FuY2VsbGlu
ZyBhIHN0cmVhbSByZW1vdmVzIGl0IGZyb20gdGhlIG1fc3RyZWFtcyBtYXAsIHNvIGlmIHdlIGNh
bmNlbCBhbGwgc3RyZWFtcyB0aGUgbWFwIHNob3VsZCBiZSBlbXB0eS4KICAgICBBU1NFUlQobV9z
dHJlYW1zLmlzRW1wdHkoKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9OZXRzY2FwZS9OUFJ1bnRpbWVPYmplY3RNYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QUnVudGltZU9iamVjdE1hcC5jcHAJ
KHJldmlzaW9uIDIyMzExNikKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05l
dHNjYXBlL05QUnVudGltZU9iamVjdE1hcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwMCwxMiAr
MjAwLDkgQEAgYm9vbCBOUFJ1bnRpbWVPYmplY3RNYXA6OmV2YWx1YXRlKE5QT2JqZQogCiB2b2lk
IE5QUnVudGltZU9iamVjdE1hcDo6aW52YWxpZGF0ZSgpCiB7Ci0gICAgVmVjdG9yPE5QSlNPYmpl
Y3QqPiBucEpTT2JqZWN0czsKLSAgICBjb3B5VmFsdWVzVG9WZWN0b3IobV9ucEpTT2JqZWN0cywg
bnBKU09iamVjdHMpOwotCiAgICAgLy8gRGVhbGxvY2F0ZSBhbGwgdGhlIG9iamVjdCB3cmFwcGVy
cyBzbyB3ZSB3b24ndCBsZWFrIGFueSBKYXZhU2NyaXB0IG9iamVjdHMuCi0gICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBucEpTT2JqZWN0cy5zaXplKCk7ICsraSkKLSAgICAgICAgZGVhbGxvY2F0
ZU5QT2JqZWN0KG5wSlNPYmplY3RzW2ldKTsKKyAgICBmb3IgKGF1dG8mIG5wSlNPYmplY3QgOiBj
b3B5VG9WZWN0b3IobV9ucEpTT2JqZWN0cy52YWx1ZXMoKSkpCisgICAgICAgIGRlYWxsb2NhdGVO
UE9iamVjdChucEpTT2JqZWN0KTsKICAgICAKICAgICAvLyBXZSBzaG91bGRuJ3QgaGF2ZSBhbnkg
TlBKU09iamVjdHMgbGVmdCBub3cuCiAgICAgQVNTRVJUKG1fbnBKU09iamVjdHMuaXNFbXB0eSgp
KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNj
YXBlUGx1Z2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAJKHJldmlzaW9uIDIyMzExNikKKysrIFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTY4LDExICs1NjgsOCBAQCBOZXRzY2FwZVBsdWdpblN0cmVh
bSogTmV0c2NhcGVQbHVnaW46OnN0CiAKIHZvaWQgTmV0c2NhcGVQbHVnaW46OnN0b3BBbGxTdHJl
YW1zKCkKIHsKLSAgICBWZWN0b3I8UmVmUHRyPE5ldHNjYXBlUGx1Z2luU3RyZWFtPj4gc3RyZWFt
czsKLSAgICBjb3B5VmFsdWVzVG9WZWN0b3IobV9zdHJlYW1zLCBzdHJlYW1zKTsKLQotICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RyZWFtcy5zaXplKCk7ICsraSkKLSAgICAgICAgc3RyZWFt
c1tpXS0+c3RvcChOUFJFU19VU0VSX0JSRUFLKTsKKyAgICBmb3IgKGF1dG8mIHN0cmVhbSA6IGNv
cHlUb1ZlY3RvcihtX3N0cmVhbXMudmFsdWVzKCkpKQorICAgICAgICBzdHJlYW0tPnN0b3AoTlBS
RVNfVVNFUl9CUkVBSyk7CiB9CiAKIGJvb2wgTmV0c2NhcGVQbHVnaW46OmFsbG93UG9wdXBzKCkg
Y29uc3QKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVy
VHJlZS9SZW1vdGVMYXllclRyZWVDb250ZXh0Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVDb250
ZXh0Lm1tCShyZXZpc2lvbiAyMjMxMTYpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlQ29udGV4dC5tbQkod29ya2luZyBj
b3B5KQpAQCAtMTI2LDkgKzEyNiw3IEBAIHZvaWQgUmVtb3RlTGF5ZXJUcmVlQ29udGV4dDo6YnVp
bGRUcmFuc2EKICAgICByb290TGF5ZXJSZW1vdGUucmVjdXJzaXZlQnVpbGRUcmFuc2FjdGlvbigq
dGhpcywgdHJhbnNhY3Rpb24pOwogICAgIG1fY3VycmVudFRyYW5zYWN0aW9uID0gbnVsbHB0cjsK
IAotICAgIFZlY3RvcjxSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJDcmVhdGlvblBy
b3BlcnRpZXM+IGNyZWF0ZWRMYXllclByb3BlcnRpZXM7Ci0gICAgY29weVZhbHVlc1RvVmVjdG9y
KG1fY3JlYXRlZExheWVycywgY3JlYXRlZExheWVyUHJvcGVydGllcyk7Ci0gICAgdHJhbnNhY3Rp
b24uc2V0Q3JlYXRlZExheWVycyhXVEZNb3ZlKGNyZWF0ZWRMYXllclByb3BlcnRpZXMpKTsKKyAg
ICB0cmFuc2FjdGlvbi5zZXRDcmVhdGVkTGF5ZXJzKGNvcHlUb1ZlY3RvcihtX2NyZWF0ZWRMYXll
cnMudmFsdWVzKCkpKTsKICAgICB0cmFuc2FjdGlvbi5zZXREZXN0cm95ZWRMYXllcklEcyhXVEZN
b3ZlKG1fZGVzdHJveWVkTGF5ZXJzKSk7CiAgICAgCiAgICAgbV9jcmVhdGVkTGF5ZXJzLmNsZWFy
KCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwkocmV2aXNpb24gMjIzMTE2KQorKysgU291cmNl
L1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAor
MjAxNy0xMC0wOSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIFJlcGxh
Y2UgY29weUtleXNUb1ZlY3Rvci9jb3B5VmFsdWVzVG9WZWN0b3Igd2l0aCBjb3B5VG9WZWN0b3Io
bWFwLmtleXMoKSkvY29weVRvVmVjdG9yKG1hcC52YWx1ZXMoKSkKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODEwMgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3Vy
Y2VMb2FkU2NoZWR1bGVyLmNwcDoKKyAgICAgICAgKFdlYlJlc291cmNlTG9hZFNjaGVkdWxlcjo6
c2VydmVQZW5kaW5nUmVxdWVzdHMpOgorCiAyMDE3LTEwLTA5ICBQZXIgQXJuZSBWb2xsYW4gIDxw
dm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2luXSBMaW5rIGVycm9yOiBjYW5ub3Qgb3Bl
biBpbnB1dCBmaWxlICdXZWJLaXRMZWdhY3lHVUlELmxpYicKSW5kZXg6IFNvdXJjZS9XZWJLaXRM
ZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9h
ZFNjaGVkdWxlci5jcHAJKHJldmlzaW9uIDIyMzExNikKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kv
V2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjIyLDEwICsyMjIsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFNjaGVkdWxlcjo6c2Vy
dmVQZW5kCiAgICAgCiAgICAgc2VydmVQZW5kaW5nUmVxdWVzdHMobV9ub25IVFRQUHJvdG9jb2xI
b3N0LCBtaW5pbXVtUHJpb3JpdHkpOwogCi0gICAgVmVjdG9yPEhvc3RJbmZvcm1hdGlvbio+IGhv
c3RzVG9TZXJ2ZTsKLSAgICBjb3B5VmFsdWVzVG9WZWN0b3IobV9ob3N0cywgaG9zdHNUb1NlcnZl
KTsKLQotICAgIGZvciAoYXV0byogaG9zdCA6IGhvc3RzVG9TZXJ2ZSkgeworICAgIGZvciAoYXV0
byogaG9zdCA6IGNvcHlUb1ZlY3RvcihtX2hvc3RzLnZhbHVlcygpKSkgewogICAgICAgICBpZiAo
aG9zdC0+aGFzUmVxdWVzdHMoKSkKICAgICAgICAgICAgIHNlcnZlUGVuZGluZ1JlcXVlc3RzKGhv
c3QsIG1pbmltdW1Qcmlvcml0eSk7CiAgICAgICAgIGVsc2UKSW5kZXg6IFNvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMzExNikKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDE3LTEwLTA5ICBT
YW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVwbGFjZSBjb3B5S2V5c1Rv
VmVjdG9yL2NvcHlWYWx1ZXNUb1ZlY3RvciB3aXRoIGNvcHlUb1ZlY3RvcihtYXAua2V5cygpKS9j
b3B5VG9WZWN0b3IobWFwLnZhbHVlcygpKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTc4MTAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBIaXN0b3J5L1dlYkhpc3RvcnkubW06CisgICAgICAgICgtW1dl
Ykhpc3RvcnlQcml2YXRlIHJlYnVpbGRIaXN0b3J5QnlEYXlJZk5lZWRlZDpdKToKKyAgICAgICAg
KiBQbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW06CisgICAgICAg
IChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6c3RvcEFsbFN0cmVhbXMpOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNsaWVudC5tbToKKyAgICAgICAg
KFdlYlVzZXJNZWRpYUNsaWVudDo6cGFnZURlc3Ryb3llZCk6CisKIDIwMTctMTAtMDkgIFJvYmlu
IE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtlIHRoZSBuYW1l
cyBvZiB0aGUgb3B0aW9ucyBjb25zaXN0ZW50CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9IaXN0b3J5L1dlYkhpc3RvcnkubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5Lm1tCShyZXZpc2lvbiAyMjMxMTYpCisrKyBTb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L1dlYkhpc3RvcnkubW0JKHdvcmtpbmcgY29weSkKQEAg
LTM2Niw4ICszNjYsNyBAQCAtICh2b2lkKXJlYnVpbGRIaXN0b3J5QnlEYXlJZk5lZWRlZDooV2Vi
CiB7CiAgICAgLy8gV2UgY2xlYXIgYWxsIHRoZSB2YWx1ZXMgdG8gcHJlc2VudCBhIGNvbnNpc3Rl
bnQgc3RhdGUgd2hlbiBzZW5kaW5nIHRoZSBub3RpZmljYXRpb25zLgogICAgIC8vIFdlIGtlZXAg
YSByZWZlcmVuY2UgdG8gdGhlIGVudHJpZXMgZm9yIHJlYnVpbGRpbmcgdGhlIGhpc3RvcnkgYWZ0
ZXIgdGhlIG5vdGlmaWNhdGlvbi4KLSAgICBWZWN0b3IgPFJldGFpblB0cjxOU011dGFibGVBcnJh
eT4+IGVudHJ5QXJyYXlzOwotICAgIGNvcHlWYWx1ZXNUb1ZlY3RvcigqX2VudHJpZXNCeURhdGUs
IGVudHJ5QXJyYXlzKTsKKyAgICBhdXRvIGVudHJ5QXJyYXlzID0gY29weVRvVmVjdG9yKF9lbnRy
aWVzQnlEYXRlLT52YWx1ZXMoKSk7CiAgICAgX2VudHJpZXNCeURhdGUtPmNsZWFyKCk7CiAgICAg
CiAgICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqZW50cmllc0J5VVJMID0gX2VudHJpZXNCeVVSTDsK
SW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1
Z2luSW5zdGFuY2VQcm94eS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0JKHJldmlzaW9u
IDIyMzExNikKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNj
YXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjkzLDEwICsyOTMs
OCBAQCB2b2lkIE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6bGF5ZXJICiAKIHZvaWQgTmV0
c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpzdG9wQWxsU3RyZWFtcygpCiB7Ci0gICAgVmVjdG9y
PFJlZlB0cjxIb3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbT4+IHN0cmVhbXNDb3B5OwotICAgIGNv
cHlWYWx1ZXNUb1ZlY3RvcihtX3N0cmVhbXMsIHN0cmVhbXNDb3B5KTsKLSAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHN0cmVhbXNDb3B5LnNpemUoKTsgaSsrKQotICAgICAgICBzdHJlYW1zQ29w
eVtpXS0+c3RvcCgpOworICAgIGZvciAoYXV0byYgc3RyZWFtIDogY29weVRvVmVjdG9yKG1fc3Ry
ZWFtcy52YWx1ZXMoKSkpCisgICAgICAgIHN0cmVhbS0+c3RvcCgpOwogfQogCiB2b2lkIE5ldHNj
YXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6Y2xlYW51cCgpCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViVXNlck1lZGlhQ2xp
ZW50Lm1tCShyZXZpc2lvbiAyMjMxMTYpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTEwOSw4
ICsxMDksNyBAQCBXZWJVc2VyTWVkaWFDbGllbnQ6On5XZWJVc2VyTWVkaWFDbGllbnQoCiB2b2lk
IFdlYlVzZXJNZWRpYUNsaWVudDo6cGFnZURlc3Ryb3llZCgpCiB7CiAgICAgYXV0byYgcmVxdWVz
dHNNYXAgPSB1c2VyTWVkaWFSZXF1ZXN0c01hcCgpOwotICAgIFZlY3RvcjxSZXRhaW5QdHI8V2Vi
VXNlck1lZGlhUG9saWN5TGlzdGVuZXI+PiBwZW5kaW5nUmVxdWVzdHM7Ci0gICAgY29weVZhbHVl
c1RvVmVjdG9yKHJlcXVlc3RzTWFwLCBwZW5kaW5nUmVxdWVzdHMpOworICAgIGF1dG8gcGVuZGlu
Z1JlcXVlc3RzID0gY29weVRvVmVjdG9yKHJlcXVlc3RzTWFwLnZhbHVlcygpKTsKICAgICByZXF1
ZXN0c01hcC5jbGVhcigpOwogCiAgICAgZm9yIChhdXRvJiByZXF1ZXN0IDogcGVuZGluZ1JlcXVl
c3RzKQpAQCAtMTE5LDggKzExOCw3IEBAIHZvaWQgV2ViVXNlck1lZGlhQ2xpZW50OjpwYWdlRGVz
dHJveWVkKCkKICAgICBBU1NFUlQodXNlck1lZGlhUmVxdWVzdHNNYXAoKS5pc0VtcHR5KCkpOwog
CiAgICAgYXV0byYgY2hlY2tNYXAgPSB1c2VyTWVkaWFDaGVja01hcCgpOwotICAgIFZlY3RvcjxS
ZXRhaW5QdHI8V2ViVXNlck1lZGlhUG9saWN5Q2hlY2tlckxpc3RlbmVyPj4gcGVuZGluZ0NoZWNr
czsKLSAgICBjb3B5VmFsdWVzVG9WZWN0b3IoY2hlY2tNYXAsIHBlbmRpbmdDaGVja3MpOworICAg
IGF1dG8gcGVuZGluZ0NoZWNrcyA9IGNvcHlUb1ZlY3RvcihjaGVja01hcC52YWx1ZXMoKSk7CiAg
ICAgY2hlY2tNYXAuY2xlYXIoKTsKIAogICAgIGZvciAoYXV0byYgY2hlY2sgOiBwZW5kaW5nQ2hl
Y2tzKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>323277</attachid>
            <date>2017-10-09 20:25:17 -0700</date>
            <delta_ts>2017-10-10 08:20:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178102-20171009202516.patch</filename>
            <type>text/plain</type>
            <size>42070</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjIzMTE2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBA
CisyMDE3LTEwLTA5ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVw
bGFjZSBjb3B5S2V5c1RvVmVjdG9yL2NvcHlWYWx1ZXNUb1ZlY3RvciB3aXRoIGNvcHlUb1ZlY3Rv
cihtYXAua2V5cygpKS9jb3B5VG9WZWN0b3IobWFwLnZhbHVlcygpKQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4MTAyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50OjpjbGVhckluc3BlY3RvckJyZWFrcG9pbnRTdGF0ZSk6CisKIDIwMTctMTAtMDkg
IEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBKU0NlbGw6OmRpZEJl
Y29tZVByb3RvdHlwZSBpcyByYWN5CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50
LmNwcAkocmV2aXNpb24gMjIzMTE2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEw
NzEsOSArMTA3MSw3IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6YnJlYWtQcm9ncmEK
IHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y2xlYXJJbnNwZWN0b3JCcmVha3BvaW50U3Rh
dGUoKQogewogICAgIEVycm9yU3RyaW5nIGR1bW15RXJyb3I7Ci0gICAgVmVjdG9yPFN0cmluZz4g
YnJlYWtwb2ludElkZW50aWZpZXJzOwotICAgIGNvcHlLZXlzVG9WZWN0b3IobV9icmVha3BvaW50
SWRlbnRpZmllclRvRGVidWdTZXJ2ZXJCcmVha3BvaW50SURzLCBicmVha3BvaW50SWRlbnRpZmll
cnMpOwotICAgIGZvciAoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyIDogYnJlYWtwb2ludElkZW50
aWZpZXJzKQorICAgIGZvciAoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyIDogY29weVRvVmVjdG9y
KG1fYnJlYWtwb2ludElkZW50aWZpZXJUb0RlYnVnU2VydmVyQnJlYWtwb2ludElEcy5rZXlzKCkp
KQogICAgICAgICByZW1vdmVCcmVha3BvaW50KGR1bW15RXJyb3IsIGlkZW50aWZpZXIpOwogCiAg
ICAgbV9qYXZhU2NyaXB0QnJlYWtwb2ludHMuY2xlYXIoKTsKSW5kZXg6IFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjMx
MTYpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2
IEBACisyMDE3LTEwLTA5ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAg
UmVwbGFjZSBjb3B5S2V5c1RvVmVjdG9yL2NvcHlWYWx1ZXNUb1ZlY3RvciB3aXRoIGNvcHlUb1Zl
Y3RvcihtYXAua2V5cygpKS9jb3B5VG9WZWN0b3IobWFwLnZhbHVlcygpKQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4MTAyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvSGFzaE1hcC5oOgorICAg
ICAgICAoV1RGOjpjb3B5S2V5c1RvVmVjdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6Y29w
eVZhbHVlc1RvVmVjdG9yKTogRGVsZXRlZC4KKyAgICAgICAgCisgICAgICAgICAgICBSZW1vdmUg
Y29weUtleXNUb1ZlY3RvciBhbmQgY29weVZhbHVlc1RvVmVjdG9yIHdoaWNoIGFyZSBubyBsb25n
ZXIgdXNlZC4KKwogMjAxNy0xMC0wOSAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxl
LmNvbT4KIAogICAgICAgICBEaXNhYmxlIElOUFVUX1RZUEVfQ09MT1IgaW4gRmVhdHVyZURlZmlu
ZXMuaApJbmRleDogU291cmNlL1dURi93dGYvSGFzaE1hcC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XVEYvd3RmL0hhc2hNYXAuaAkocmV2aXNpb24gMjIzMTE2KQorKysgU291cmNlL1dURi93dGYv
SGFzaE1hcC5oCSh3b3JraW5nIGNvcHkpCkBAIC01ODksMzIgKzU4OSw2IEBAIGlubGluZSB2b2lk
IGNvcHlUb1ZlY3Rvcihjb25zdCBIYXNoTWFwPFQKICAgICAgICAgdmVjdG9yW2ldID0geyAoKml0
KS5rZXksICgqaXQpLnZhbHVlIH07CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFgsIHR5cGVuYW1lIFk+Ci1pbmxp
bmUgdm9pZCBjb3B5S2V5c1RvVmVjdG9yKGNvbnN0IEhhc2hNYXA8VCwgVSwgViwgVywgWD4mIGNv
bGxlY3Rpb24sIFkmIHZlY3RvcikKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEhhc2hNYXA8VCwg
VSwgViwgVywgWD46OmNvbnN0X2l0ZXJhdG9yOjpLZXlzIGl0ZXJhdG9yOwotICAgIAotICAgIHZl
Y3Rvci5yZXNpemUoY29sbGVjdGlvbi5zaXplKCkpOwotICAgIAotICAgIGl0ZXJhdG9yIGl0ID0g
Y29sbGVjdGlvbi5iZWdpbigpLmtleXMoKTsKLSAgICBpdGVyYXRvciBlbmQgPSBjb2xsZWN0aW9u
LmVuZCgpLmtleXMoKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpdCAhPSBlbmQ7ICsraXQs
ICsraSkKLSAgICAgICAgdmVjdG9yW2ldID0gKml0OwotfSAgCi0KLXRlbXBsYXRlPHR5cGVuYW1l
IFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFgsIHR5cGVu
YW1lIFk+Ci1pbmxpbmUgdm9pZCBjb3B5VmFsdWVzVG9WZWN0b3IoY29uc3QgSGFzaE1hcDxULCBV
LCBWLCBXLCBYPiYgY29sbGVjdGlvbiwgWSYgdmVjdG9yKQotewotICAgIHR5cGVkZWYgdHlwZW5h
bWUgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6Y29uc3RfaXRlcmF0b3I6OlZhbHVlcyBpdGVyYXRv
cjsKLSAgICAKLSAgICB2ZWN0b3IucmVzaXplKGNvbGxlY3Rpb24uc2l6ZSgpKTsKLSAgICAKLSAg
ICBpdGVyYXRvciBpdCA9IGNvbGxlY3Rpb24uYmVnaW4oKS52YWx1ZXMoKTsKLSAgICBpdGVyYXRv
ciBlbmQgPSBjb2xsZWN0aW9uLmVuZCgpLnZhbHVlcygpOwotICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGl0ICE9IGVuZDsgKytpdCwgKytpKQotICAgICAgICB2ZWN0b3JbaV0gPSAqaXQ7Ci19ICAg
Ci0KIH0gLy8gbmFtZXNwYWNlIFdURgogCiB1c2luZyBXVEY6Okhhc2hNYXA7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCShyZXZpc2lvbiAyMjMxMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSw0NyBAQAorMjAxNy0xMC0wOSAgU2FtIFdlaW5pZyAgPHNhbUB3
ZWJraXQub3JnPgorCisgICAgICAgIFJlcGxhY2UgY29weUtleXNUb1ZlY3Rvci9jb3B5VmFsdWVz
VG9WZWN0b3Igd2l0aCBjb3B5VG9WZWN0b3IobWFwLmtleXMoKSkvY29weVRvVmVjdG9yKG1hcC52
YWx1ZXMoKSkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE3ODEwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHZW9sb2NhdGlvbjo6V2F0Y2hlcnM6OmdldE5vdGlmaWVyc1ZlY3RvciBjb25zdCk6CisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SURCVHJhbnNhY3Rpb246OmNvbm5lY3Rpb25DbG9zZWRGcm9tU2VydmVyKToKKyAgICAg
ICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblByb3h5LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5Ojpjb25uZWN0aW9u
VG9TZXJ2ZXJMb3N0KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVl
SURCRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJE
YXRhYmFzZTo6aW1tZWRpYXRlQ2xvc2VGb3JVc2VyRGVsZXRlKToKKyAgICAgICAgKiBNb2R1bGVz
L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3Ry
ZWFtOjpnZXRUcmFja3MgY29uc3QpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdENvbnRy
b2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6d2luZG93UHJv
eGllcyk6CisgICAgICAgICogY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246Oml0ZW0gY29uc3Qp
OgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dDo6cHJlcGFyZUZvckRlc3RydWN0aW9uKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnRNYXJrZXJD
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TWFya2VyQ29udHJvbGxl
cjo6cmVtb3ZlTWFya2Vycyk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFn
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvcldvcmtlckFnZW50OjpkaXNjb25u
ZWN0RnJvbUFsbFdvcmtlckluc3BlY3RvclByb3hpZXMpOgorICAgICAgICAqIGluc3BlY3Rvci9O
ZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHA6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNhbmNlbEFsbCk6CisgICAgICAgIChXZWJDb3JlOjpz
ZXRBbGxEZWZlcnNMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OmFyZUFsbExvYWRlcnNQYWdl
Q2FjaGVBY2NlcHRhYmxlKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5Q2FjaGU6OmZvckVhY2hTZXNzaW9uUmVzb3VyY2Up
OgorICAgICAgICAqIGxvYWRlci9tYWMvRG9jdW1lbnRMb2FkZXJNYWMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6c2NoZWR1bGVBbGwpOgorICAgICAgICAoV2ViQ29yZTo6dW5zY2hlZHVsZUFsbCk6
CisgICAgICAgICogcGFnZS9SZXNvdXJjZVVzYWdlVGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlVXNhZ2VUaHJlYWQ6Om5vdGlmeU9ic2VydmVycyk6CisgICAgICAgICogcGxh
dGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Qcml2YXRlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhU3RyZWFtUHJpdmF0ZTo6dHJhY2tzIGNvbnN0KToKKworICAgICAgICAgICAgUmVw
bGFjZSBjb3B5S2V5c1RvVmVjdG9yIC8gY29weVZhbHVlc1RvVmVjdG9yIHdpdGggY29weVRvVmVj
dG9yKG1hcC5rZXlzKCkpIC8gY29weVRvVmVjdG9yKG1hcC52YWx1ZXMoKSkKKwogMjAxNy0xMC0w
OSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIERl
bGV0ZSBidXR0b24gZG9lc24ndCBmdWxseSBkZWxldGUgY2VydGFpbiBlbW9qaQpJbmRleDogU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHAJ
KHJldmlzaW9uIDIyMzExNikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24v
R2VvbG9jYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjcsNyArMTI3LDcgQEAgYm9vbCBH
ZW9sb2NhdGlvbjo6V2F0Y2hlcnM6OmlzRW1wdHkoKSBjbwogCiB2b2lkIEdlb2xvY2F0aW9uOjpX
YXRjaGVyczo6Z2V0Tm90aWZpZXJzVmVjdG9yKEdlb05vdGlmaWVyVmVjdG9yJiBjb3B5KSBjb25z
dAogewotICAgIGNvcHlWYWx1ZXNUb1ZlY3RvcihtX2lkVG9Ob3RpZmllck1hcCwgY29weSk7Cisg
ICAgY29weSA9IGNvcHlUb1ZlY3RvcihtX2lkVG9Ob3RpZmllck1hcC52YWx1ZXMoKSk7CiB9CiAK
IFJlZjxHZW9sb2NhdGlvbj4gR2VvbG9jYXRpb246OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0KQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
VHJhbnNhY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAkocmV2aXNpb24gMjIzMTE2KQorKysgU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMzY4LDkgKzEzNjgsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpjb25uZWN0aW9uQ2xv
c2VkRnJvCiAKICAgICBhYm9ydEluUHJvZ3Jlc3NPcGVyYXRpb25zKGVycm9yKTsKIAotICAgIFZl
Y3RvcjxSZWZQdHI8SURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbj4+IG9wZXJhdGlvbnM7
Ci0gICAgY29weVZhbHVlc1RvVmVjdG9yKG1fdHJhbnNhY3Rpb25PcGVyYXRpb25NYXAsIG9wZXJh
dGlvbnMpOwotCisgICAgYXV0byBvcGVyYXRpb25zID0gY29weVRvVmVjdG9yKG1fdHJhbnNhY3Rp
b25PcGVyYXRpb25NYXAudmFsdWVzKCkpOwogICAgIGZvciAoYXV0byYgb3BlcmF0aW9uIDogb3Bl
cmF0aW9ucykgewogICAgICAgICBtX2N1cnJlbnRseUNvbXBsZXRpbmdSZXF1ZXN0ID0gbnVsbHB0
cjsKICAgICAgICAgbV90cmFuc2FjdGlvbk9wZXJhdGlvbnNJblByb2dyZXNzUXVldWUuYXBwZW5k
KG9wZXJhdGlvbi5nZXQoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9jbGllbnQvSURCQ29ubmVjdGlvblByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblByb3h5LmNwcAkocmV2
aXNpb24gMjIzMTE2KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50
L0lEQkNvbm5lY3Rpb25Qcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyMiw3ICs0MjIsNyBA
QCB2b2lkIElEQkNvbm5lY3Rpb25Qcm94eTo6Y29ubmVjdGlvblRvU2VyCiAgICAgVmVjdG9yPHVp
bnQ2NF90PiBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyczsKICAgICB7CiAgICAgICAgIExv
Y2tlcjxMb2NrPiBsb2NrZXIobV9kYXRhYmFzZUNvbm5lY3Rpb25NYXBMb2NrKTsKLSAgICAgICAg
Y29weUtleXNUb1ZlY3RvcihtX2RhdGFiYXNlQ29ubmVjdGlvbk1hcCwgZGF0YWJhc2VDb25uZWN0
aW9uSWRlbnRpZmllcnMpOworICAgICAgICBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVycyA9
IGNvcHlUb1ZlY3RvcihtX2RhdGFiYXNlQ29ubmVjdGlvbk1hcC5rZXlzKCkpOwogICAgIH0KIAog
ICAgIGZvciAoYXV0byBjb25uZWN0aW9uSWRlbnRpZmllciA6IGRhdGFiYXNlQ29ubmVjdGlvbklk
ZW50aWZpZXJzKSB7CkBAIC00NDEsNyArNDQxLDcgQEAgdm9pZCBJREJDb25uZWN0aW9uUHJveHk6
OmNvbm5lY3Rpb25Ub1NlcgogICAgIFZlY3RvcjxJREJSZXNvdXJjZUlkZW50aWZpZXI+IG9wZW5E
QlJlcXVlc3RJZGVudGlmaWVyczsKICAgICB7CiAgICAgICAgIExvY2tlcjxMb2NrPiBsb2NrZXIo
bV9vcGVuREJSZXF1ZXN0TWFwTG9jayk7Ci0gICAgICAgIGNvcHlLZXlzVG9WZWN0b3IobV9vcGVu
REJSZXF1ZXN0TWFwLCBvcGVuREJSZXF1ZXN0SWRlbnRpZmllcnMpOworICAgICAgICBvcGVuREJS
ZXF1ZXN0SWRlbnRpZmllcnMgPSBjb3B5VG9WZWN0b3IobV9vcGVuREJSZXF1ZXN0TWFwLmtleXMo
KSk7CiAgICAgfQogCiAgICAgZm9yIChhdXRvJiByZXF1ZXN0SWRlbnRpZmllciA6IG9wZW5EQlJl
cXVlc3RJZGVudGlmaWVycykgewpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwCShyZXZp
c2lvbiAyMjMxMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
VW5pcXVlSURCRGF0YWJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODEzLDkgKzE4MTMsNyBA
QCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjppbW1lZGlhdGVDbG9zZUZvCiAgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKIAogICAgIC8vIEVycm9yIG91dCBhbGwgdHJhbnNhY3Rpb25zCi0gICAg
VmVjdG9yPElEQlJlc291cmNlSWRlbnRpZmllcj4gaW5Qcm9ncmVzc0lkZW50aWZpZXJzOwotICAg
IGNvcHlLZXlzVG9WZWN0b3IobV9pblByb2dyZXNzVHJhbnNhY3Rpb25zLCBpblByb2dyZXNzSWRl
bnRpZmllcnMpOwotICAgIGZvciAoYXV0byYgaWRlbnRpZmllciA6IGluUHJvZ3Jlc3NJZGVudGlm
aWVycykKKyAgICBmb3IgKGF1dG8mIGlkZW50aWZpZXIgOiBjb3B5VG9WZWN0b3IobV9pblByb2dy
ZXNzVHJhbnNhY3Rpb25zLmtleXMoKSkpCiAgICAgICAgIG1faW5Qcm9ncmVzc1RyYW5zYWN0aW9u
cy5nZXQoaWRlbnRpZmllciktPmFib3J0V2l0aG91dENhbGxiYWNrKCk7CiAKICAgICBBU1NFUlQo
bV9pblByb2dyZXNzVHJhbnNhY3Rpb25zLmlzRW1wdHkoKSk7CkBAIC0xODI1LDI4ICsxODIzLDIw
IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmltbWVkaWF0ZUNsb3NlRm8KICAgICBtX29iamVj
dFN0b3JlV3JpdGVUcmFuc2FjdGlvbnMuY2xlYXIoKTsKIAogICAgIC8vIEVycm9yIG91dCBhbGwg
cGVuZGluZyBjYWxsYmFja3MKLSAgICBWZWN0b3I8dWludDY0X3Q+IGNhbGxiYWNrSWRlbnRpZmll
cnM7CiAgICAgSURCRXJyb3IgZXJyb3IgPSBJREJFcnJvcjo6dXNlckRlbGV0ZUVycm9yKCk7CiAg
ICAgSURCS2V5RGF0YSBrZXlEYXRhOwogICAgIElEQkdldFJlc3VsdCBnZXRSZXN1bHQ7CiAKLSAg
ICBjb3B5S2V5c1RvVmVjdG9yKG1fZXJyb3JDYWxsYmFja3MsIGNhbGxiYWNrSWRlbnRpZmllcnMp
OwotICAgIGZvciAoYXV0byBpZGVudGlmaWVyIDogY2FsbGJhY2tJZGVudGlmaWVycykKKyAgICBm
b3IgKGF1dG8gaWRlbnRpZmllciA6IGNvcHlUb1ZlY3RvcihtX2Vycm9yQ2FsbGJhY2tzLmtleXMo
KSkpCiAgICAgICAgIHBlcmZvcm1FcnJvckNhbGxiYWNrKGlkZW50aWZpZXIsIGVycm9yKTsKIAot
ICAgIGNhbGxiYWNrSWRlbnRpZmllcnMuY2xlYXIoKTsKLSAgICBjb3B5S2V5c1RvVmVjdG9yKG1f
a2V5RGF0YUNhbGxiYWNrcywgY2FsbGJhY2tJZGVudGlmaWVycyk7Ci0gICAgZm9yIChhdXRvIGlk
ZW50aWZpZXIgOiBjYWxsYmFja0lkZW50aWZpZXJzKQorICAgIGZvciAoYXV0byBpZGVudGlmaWVy
IDogY29weVRvVmVjdG9yKG1fa2V5RGF0YUNhbGxiYWNrcy5rZXlzKCkpKQogICAgICAgICBwZXJm
b3JtS2V5RGF0YUNhbGxiYWNrKGlkZW50aWZpZXIsIGVycm9yLCBrZXlEYXRhKTsKIAotICAgIGNh
bGxiYWNrSWRlbnRpZmllcnMuY2xlYXIoKTsKLSAgICBjb3B5S2V5c1RvVmVjdG9yKG1fZ2V0UmVz
dWx0Q2FsbGJhY2tzLCBjYWxsYmFja0lkZW50aWZpZXJzKTsKLSAgICBmb3IgKGF1dG8gaWRlbnRp
ZmllciA6IGNhbGxiYWNrSWRlbnRpZmllcnMpCisgICAgZm9yIChhdXRvIGlkZW50aWZpZXIgOiBj
b3B5VG9WZWN0b3IobV9nZXRSZXN1bHRDYWxsYmFja3Mua2V5cygpKSkKICAgICAgICAgcGVyZm9y
bUdldFJlc3VsdENhbGxiYWNrKGlkZW50aWZpZXIsIGVycm9yLCBnZXRSZXN1bHQpOwogCi0gICAg
Y2FsbGJhY2tJZGVudGlmaWVycy5jbGVhcigpOwotICAgIGNvcHlLZXlzVG9WZWN0b3IobV9jb3Vu
dENhbGxiYWNrcywgY2FsbGJhY2tJZGVudGlmaWVycyk7Ci0gICAgZm9yIChhdXRvIGlkZW50aWZp
ZXIgOiBjYWxsYmFja0lkZW50aWZpZXJzKQorICAgIGZvciAoYXV0byBpZGVudGlmaWVyIDogY29w
eVRvVmVjdG9yKG1fY291bnRDYWxsYmFja3Mua2V5cygpKSkKICAgICAgICAgcGVyZm9ybUNvdW50
Q2FsbGJhY2soaWRlbnRpZmllciwgZXJyb3IsIDApOwogCiAgICAgLy8gRXJyb3Igb3V0IGFsbCBJ
REJPcGVuREJSZXF1ZXN0cwpAQCAtMTg2MSw3ICsxODUxLDcgQEAgdm9pZCBVbmlxdWVJREJEYXRh
YmFzZTo6aW1tZWRpYXRlQ2xvc2VGbwogICAgIG1fcGVuZGluZ09wZW5EQlJlcXVlc3RzLmNsZWFy
KCk7CiAKICAgICAvLyBDbG9zZSBhbGwgb3BlbiBjb25uZWN0aW9ucwotICAgIExpc3RIYXNoU2V0
PFJlZlB0cjxVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24+PiBvcGVuRGF0YWJhc2VDb25uZWN0
aW9ucyA9IG1fb3BlbkRhdGFiYXNlQ29ubmVjdGlvbnM7CisgICAgYXV0byBvcGVuRGF0YWJhc2VD
b25uZWN0aW9ucyA9IG1fb3BlbkRhdGFiYXNlQ29ubmVjdGlvbnM7CiAgICAgZm9yIChhdXRvJiBj
b25uZWN0aW9uIDogb3BlbkRhdGFiYXNlQ29ubmVjdGlvbnMpCiAgICAgICAgIGNvbm5lY3Rpb25D
bG9zZWRGcm9tU2VydmVyKCpjb25uZWN0aW9uKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHAJKHJldmlzaW9uIDIyMzEx
NikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNzcsMTEgKzE3Nyw3IEBAIE1lZGlhU3RyZWFtVHJhY2tWZWN0
b3IgTWVkaWFTdHJlYW06OmdldFYKIAogTWVkaWFTdHJlYW1UcmFja1ZlY3RvciBNZWRpYVN0cmVh
bTo6Z2V0VHJhY2tzKCkgY29uc3QKIHsKLSAgICBNZWRpYVN0cmVhbVRyYWNrVmVjdG9yIHRyYWNr
czsKLSAgICB0cmFja3MucmVzZXJ2ZUNhcGFjaXR5KG1fdHJhY2tTZXQuc2l6ZSgpKTsKLSAgICBj
b3B5VmFsdWVzVG9WZWN0b3IobV90cmFja1NldCwgdHJhY2tzKTsKLQotICAgIHJldHVybiB0cmFj
a3M7CisgICAgcmV0dXJuIGNvcHlUb1ZlY3RvcihtX3RyYWNrU2V0LnZhbHVlcygpKTsKIH0KIAog
dm9pZCBNZWRpYVN0cmVhbTo6dHJhY2tEaWRFbmQoKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDIyMzExNikKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yODEsOSArMjgxLDcgQEAgUmVmPERPTVdyYXBwZXJXb3JsZD4gU2NyaXB0Q29u
dHJvbGxlcjo6YwogCiBWZWN0b3I8SlNDOjpTdHJvbmc8SlNET01XaW5kb3dQcm94eT4+IFNjcmlw
dENvbnRyb2xsZXI6OndpbmRvd1Byb3hpZXMoKQogewotICAgIFZlY3RvcjxKU0M6OlN0cm9uZzxK
U0RPTVdpbmRvd1Byb3h5Pj4gd2luZG93UHJveGllczsKLSAgICBjb3B5VmFsdWVzVG9WZWN0b3Io
bV93aW5kb3dQcm94aWVzLCB3aW5kb3dQcm94aWVzKTsKLSAgICByZXR1cm4gd2luZG93UHJveGll
czsKKyAgICByZXR1cm4gY29weVRvVmVjdG9yKG1fd2luZG93UHJveGllcy52YWx1ZXMoKSk7CiB9
CiAKIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6Z2V0QWxsV29ybGRzKFZlY3RvcjxSZWY8RE9NV3Jh
cHBlcldvcmxkPj4mIHdvcmxkcykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRl
ZFN0eWxlRGVjbGFyYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCShyZXZpc2lvbiAyMjMxMTYpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDA5NSw5ICs0MDk1LDggQEAgU3RyaW5nIENTU0NvbXB1dGVkU3R5bGVEZWNsYXJh
dGlvbjo6aXRlbQogICAgIGNvbnN0IGF1dG8mIGN1c3RvbVByb3BlcnRpZXMgPSBzdHlsZS0+Y3Vz
dG9tUHJvcGVydGllcygpOwogICAgIGlmIChpbmRleCA+PSBjdXN0b21Qcm9wZXJ0aWVzLnNpemUo
KSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIAotICAgIFZlY3RvcjxTdHJpbmcsIDQ+
IHJlc3VsdHM7Ci0gICAgY29weUtleXNUb1ZlY3RvcihjdXN0b21Qcm9wZXJ0aWVzLCByZXN1bHRz
KTsKKworICAgIGF1dG8gcmVzdWx0cyA9IGNvcHlUb1ZlY3RvcihjdXN0b21Qcm9wZXJ0aWVzLmtl
eXMoKSk7CiAgICAgcmV0dXJuIHJlc3VsdHMuYXQoaW5kZXgpOwogfQogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDIyMzExNikKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzMzgsOSArMjMzOCw3IEBAIHZvaWQgRG9j
dW1lbnQ6OnByZXBhcmVGb3JEZXN0cnVjdGlvbigpCiAKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExB
WUJBQ0tfVEFSR0VUKQogICAgIGlmICghbV9jbGllbnRUb0lETWFwLmlzRW1wdHkoKSAmJiBwYWdl
KCkpIHsKLSAgICAgICAgVmVjdG9yPFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDbGllbnQq
PiBjbGllbnRzOwotICAgICAgICBjb3B5S2V5c1RvVmVjdG9yKG1fY2xpZW50VG9JRE1hcCwgY2xp
ZW50cyk7Ci0gICAgICAgIGZvciAoYXV0byogY2xpZW50IDogY2xpZW50cykKKyAgICAgICAgZm9y
IChhdXRvKiBjbGllbnQgOiBjb3B5VG9WZWN0b3IobV9jbGllbnRUb0lETWFwLmtleXMoKSkpCiAg
ICAgICAgICAgICByZW1vdmVQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudCgqY2xpZW50KTsKICAg
ICB9CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRy
b2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtl
ckNvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyMjMxMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTcyLDcgKzU3
Miw3IEBAIHZvaWQgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjpyZW1vdmVNYXIKICAgICAgICAg
cmV0dXJuOwogICAgIEFTU0VSVCghbV9tYXJrZXJzLmlzRW1wdHkoKSk7CiAgICAgCi0gICAgTWFy
a2VyTWFwOjppdGVyYXRvciBpdGVyYXRvciA9IG1fbWFya2Vycy5maW5kKG5vZGUpOworICAgIGF1
dG8gaXRlcmF0b3IgPSBtX21hcmtlcnMuZmluZChub2RlKTsKICAgICBpZiAoaXRlcmF0b3IgIT0g
bV9tYXJrZXJzLmVuZCgpKQogICAgICAgICByZW1vdmVNYXJrZXJzRnJvbUxpc3QoaXRlcmF0b3Is
IG1hcmtlclR5cGVzKTsKIH0KQEAgLTU4Myw5ICs1ODMsNyBAQCB2b2lkIERvY3VtZW50TWFya2Vy
Q29udHJvbGxlcjo6cmVtb3ZlTWFyCiAgICAgICAgIHJldHVybjsKICAgICBBU1NFUlQoIW1fbWFy
a2Vycy5pc0VtcHR5KCkpOwogCi0gICAgVmVjdG9yPFJlZlB0cjxOb2RlPj4gbm9kZXNXaXRoTWFy
a2VyczsKLSAgICBjb3B5S2V5c1RvVmVjdG9yKG1fbWFya2Vycywgbm9kZXNXaXRoTWFya2Vycyk7
Ci0gICAgZm9yIChhdXRvJiBub2RlIDogbm9kZXNXaXRoTWFya2VycykgeworICAgIGZvciAoYXV0
byYgbm9kZSA6IGNvcHlUb1ZlY3RvcihtX21hcmtlcnMua2V5cygpKSkgewogICAgICAgICBhdXRv
IGl0ZXJhdG9yID0gbV9tYXJrZXJzLmZpbmQobm9kZSk7CiAgICAgICAgIGlmIChpdGVyYXRvciAh
PSBtX21hcmtlcnMuZW5kKCkpCiAgICAgICAgICAgICByZW1vdmVNYXJrZXJzRnJvbUxpc3QoaXRl
cmF0b3IsIG1hcmtlclR5cGVzKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JXb3JrZXJBZ2VudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvcldvcmtlckFnZW50LmNwcAkocmV2aXNpb24gMjIzMTE2KQorKysgU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTQ1LDkgKzE0NSw3IEBAIHZvaWQgSW5zcGVjdG9yV29ya2VyQWdlbnQ6OmNvbm5lY3RU
b0FsbFcKIAogdm9pZCBJbnNwZWN0b3JXb3JrZXJBZ2VudDo6ZGlzY29ubmVjdEZyb21BbGxXb3Jr
ZXJJbnNwZWN0b3JQcm94aWVzKCkKIHsKLSAgICBWZWN0b3I8V29ya2VySW5zcGVjdG9yUHJveHkq
PiBwcm94aWVzOwotICAgIGNvcHlWYWx1ZXNUb1ZlY3RvcihtX2Nvbm5lY3RlZFByb3hpZXMsIHBy
b3hpZXMpOwotICAgIGZvciAoYXV0byogcHJveHkgOiBwcm94aWVzKQorICAgIGZvciAoYXV0byog
cHJveHkgOiBjb3B5VG9WZWN0b3IobV9jb25uZWN0ZWRQcm94aWVzLnZhbHVlcygpKSkKICAgICAg
ICAgcHJveHktPmRpc2Nvbm5lY3RGcm9tV29ya2VySW5zcGVjdG9yQ29udHJvbGxlcigpOwogCiAg
ICAgbV9jb25uZWN0ZWRQcm94aWVzLmNsZWFyKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAJKHJldmlzaW9uIDIyMzExNikK
KysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI2Miw5ICsyNjIsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRh
OjpjbGVhcihjb25zdCBTCiAKIFZlY3RvcjxOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VE
YXRhKj4gTmV0d29ya1Jlc291cmNlc0RhdGE6OnJlc291cmNlcygpCiB7Ci0gICAgVmVjdG9yPE5l
dHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGEqPiByZXNvdXJjZXM7Ci0gICAgY29weVZh
bHVlc1RvVmVjdG9yKG1fcmVxdWVzdElkVG9SZXNvdXJjZURhdGFNYXAsIHJlc291cmNlcyk7Ci0g
ICAgcmV0dXJuIHJlc291cmNlczsKKyAgICByZXR1cm4gY29weVRvVmVjdG9yKG1fcmVxdWVzdElk
VG9SZXNvdXJjZURhdGFNYXAudmFsdWVzKCkpOwogfQogCiBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6
UmVzb3VyY2VEYXRhKiBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6cmVzb3VyY2VEYXRhRm9yUmVxdWVz
dElkKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkKQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVy
L0RvY3VtZW50TG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RG9jdW1lbnRMb2FkZXIuY3BwCShyZXZpc2lvbiAyMjMxMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAsMjUgKzEwMCwx
OSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyB2b2lkIGNhbmNlbEFsbChjb25zdCBS
ZXNvdXJjZUxvYWRlck1hcCYgbG9hZGVycykKIHsKLSAgICBWZWN0b3I8UmVmUHRyPFJlc291cmNl
TG9hZGVyPj4gbG9hZGVyc0NvcHk7Ci0gICAgY29weVZhbHVlc1RvVmVjdG9yKGxvYWRlcnMsIGxv
YWRlcnNDb3B5KTsKLSAgICBmb3IgKGF1dG8mIGxvYWRlciA6IGxvYWRlcnNDb3B5KQorICAgIGZv
ciAoYXV0byYgbG9hZGVyIDogY29weVRvVmVjdG9yKGxvYWRlcnMudmFsdWVzKCkpKQogICAgICAg
ICBsb2FkZXItPmNhbmNlbCgpOwogfQogCiBzdGF0aWMgdm9pZCBzZXRBbGxEZWZlcnNMb2FkaW5n
KGNvbnN0IFJlc291cmNlTG9hZGVyTWFwJiBsb2FkZXJzLCBib29sIGRlZmVycykKIHsKLSAgICBW
ZWN0b3I8UmVmUHRyPFJlc291cmNlTG9hZGVyPj4gbG9hZGVyc0NvcHk7Ci0gICAgY29weVZhbHVl
c1RvVmVjdG9yKGxvYWRlcnMsIGxvYWRlcnNDb3B5KTsKLSAgICBmb3IgKGF1dG8mIGxvYWRlciA6
IGxvYWRlcnNDb3B5KQorICAgIGZvciAoYXV0byYgbG9hZGVyIDogY29weVRvVmVjdG9yKGxvYWRl
cnMudmFsdWVzKCkpKQogICAgICAgICBsb2FkZXItPnNldERlZmVyc0xvYWRpbmcoZGVmZXJzKTsK
IH0KIAogc3RhdGljIGJvb2wgYXJlQWxsTG9hZGVyc1BhZ2VDYWNoZUFjY2VwdGFibGUoY29uc3Qg
UmVzb3VyY2VMb2FkZXJNYXAmIGxvYWRlcnMpCiB7Ci0gICAgVmVjdG9yPFJlZlB0cjxSZXNvdXJj
ZUxvYWRlcj4+IGxvYWRlcnNDb3B5OwotICAgIGNvcHlWYWx1ZXNUb1ZlY3Rvcihsb2FkZXJzLCBs
b2FkZXJzQ29weSk7Ci0gICAgZm9yIChhdXRvJiBsb2FkZXIgOiBsb2FkZXJzQ29weSkgeworICAg
IGZvciAoYXV0byYgbG9hZGVyIDogY29weVRvVmVjdG9yKGxvYWRlcnMudmFsdWVzKCkpKSB7CiAg
ICAgICAgIGlmICghbG9hZGVyLT5mcmFtZUxvYWRlcigpIHx8ICFsb2FkZXItPmZyYW1lTG9hZGVy
KCktPmZyYW1lKCkucGFnZSgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAJKHJldmlzaW9uIDIy
MzExNikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI3OCwxMCArMjc4LDcgQEAgdm9pZCBNZW1vcnlDYWNoZTo6Zm9yRWFj
aFNlc3Npb25SZXNvdXJjZQogICAgIGlmIChpdCA9PSBtX3Nlc3Npb25SZXNvdXJjZXMuZW5kKCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIFZlY3RvcjxDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNo
ZWRSZXNvdXJjZT4+IHJlc291cmNlc0ZvclNlc3Npb247Ci0gICAgY29weVZhbHVlc1RvVmVjdG9y
KCppdC0+dmFsdWUsIHJlc291cmNlc0ZvclNlc3Npb24pOwotCi0gICAgZm9yIChhdXRvJiByZXNv
dXJjZSA6IHJlc291cmNlc0ZvclNlc3Npb24pCisgICAgZm9yIChhdXRvJiByZXNvdXJjZSA6IGNv
cHlUb1ZlY3RvcihpdC0+dmFsdWUtPnZhbHVlcygpKSkKICAgICAgICAgZnVuY3Rpb24oKnJlc291
cmNlKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL21hYy9Eb2N1bWVudExvYWRl
ck1hYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL21hYy9Eb2N1bWVu
dExvYWRlck1hYy5jcHAJKHJldmlzaW9uIDIyMzExNikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9tYWMvRG9jdW1lbnRMb2FkZXJNYWMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNywxNyArMzcs
MTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgdm9pZCBzY2hlZHVsZUFsbChjb25z
dCBSZXNvdXJjZUxvYWRlck1hcCYgbG9hZGVycywgU2NoZWR1bGVQYWlyJiBwYWlyKQogewotICAg
IFZlY3RvcjxSZWZQdHI8UmVzb3VyY2VMb2FkZXI+PiBsb2FkZXJzQ29weTsKLSAgICBjb3B5VmFs
dWVzVG9WZWN0b3IobG9hZGVycywgbG9hZGVyc0NvcHkpOwotICAgIGZvciAoYXV0byYgbG9hZGVy
IDogbG9hZGVyc0NvcHkpCisgICAgZm9yIChhdXRvJiBsb2FkZXIgOiBjb3B5VG9WZWN0b3IobG9h
ZGVycy52YWx1ZXMoKSkpCiAgICAgICAgIGxvYWRlci0+c2NoZWR1bGUocGFpcik7CiB9CiAKIHN0
YXRpYyB2b2lkIHVuc2NoZWR1bGVBbGwoY29uc3QgUmVzb3VyY2VMb2FkZXJNYXAmIGxvYWRlcnMs
IFNjaGVkdWxlUGFpciYgcGFpcikKIHsKLSAgICBWZWN0b3I8UmVmUHRyPFJlc291cmNlTG9hZGVy
Pj4gbG9hZGVyc0NvcHk7Ci0gICAgY29weVZhbHVlc1RvVmVjdG9yKGxvYWRlcnMsIGxvYWRlcnND
b3B5KTsKLSAgICBmb3IgKGF1dG8mIGxvYWRlciA6IGxvYWRlcnNDb3B5KQorICAgIGZvciAoYXV0
byYgbG9hZGVyIDogY29weVRvVmVjdG9yKGxvYWRlcnMudmFsdWVzKCkpKQogICAgICAgICBsb2Fk
ZXItPnVuc2NoZWR1bGUocGFpcik7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUmVz
b3VyY2VVc2FnZVRocmVhZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9S
ZXNvdXJjZVVzYWdlVGhyZWFkLmNwcAkocmV2aXNpb24gMjIzMTE2KQorKysgU291cmNlL1dlYkNv
cmUvcGFnZS9SZXNvdXJjZVVzYWdlVGhyZWFkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODYsNyAr
ODYsNyBAQCB2b2lkIFJlc291cmNlVXNhZ2VUaHJlYWQ6Om5vdGlmeU9ic2VydmVyCiAgICAgICAg
IHsKICAgICAgICAgICAgIGF1dG8mIHJlc291cmNlVXNhZ2VUaHJlYWQgPSBSZXNvdXJjZVVzYWdl
VGhyZWFkOjpzaW5nbGV0b24oKTsKICAgICAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKHJlc291
cmNlVXNhZ2VUaHJlYWQubV9sb2NrKTsKLSAgICAgICAgICAgIGNvcHlWYWx1ZXNUb1ZlY3Rvcihy
ZXNvdXJjZVVzYWdlVGhyZWFkLm1fb2JzZXJ2ZXJzLCBmdW5jdGlvbnMpOworICAgICAgICAgICAg
ZnVuY3Rpb25zID0gY29weVRvVmVjdG9yKHJlc291cmNlVXNhZ2VUaHJlYWQubV9vYnNlcnZlcnMu
dmFsdWVzKCkpOwogICAgICAgICB9CiAKICAgICAgICAgZm9yIChhdXRvJiBmdW5jdGlvbiA6IGZ1
bmN0aW9ucykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlh
U3RyZWFtUHJpdmF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Qcml2YXRlLmNwcAkocmV2aXNpb24gMjIzMTE2KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Qcml2YXRlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtOTEsMTEgKzkxLDcgQEAgdm9pZCBNZWRpYVN0cmVhbVByaXZh
dGU6OnJlbW92ZU9ic2VydmVyKAogCiBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZVZlY3RvciBNZWRp
YVN0cmVhbVByaXZhdGU6OnRyYWNrcygpIGNvbnN0CiB7Ci0gICAgTWVkaWFTdHJlYW1UcmFja1By
aXZhdGVWZWN0b3IgdHJhY2tzOwotICAgIHRyYWNrcy5yZXNlcnZlQ2FwYWNpdHkobV90cmFja1Nl
dC5zaXplKCkpOwotICAgIGNvcHlWYWx1ZXNUb1ZlY3RvcihtX3RyYWNrU2V0LCB0cmFja3MpOwot
Ci0gICAgcmV0dXJuIHRyYWNrczsKKyAgICByZXR1cm4gY29weVRvVmVjdG9yKG1fdHJhY2tTZXQu
dmFsdWVzKCkpOwogfQogCiB2b2lkIE1lZGlhU3RyZWFtUHJpdmF0ZTo6dXBkYXRlQWN0aXZlU3Rh
dGUoTm90aWZ5Q2xpZW50T3B0aW9uIG5vdGlmeUNsaWVudE9wdGlvbikKSW5kZXg6IFNvdXJjZS9X
ZWJEcml2ZXIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJEcml2ZXIvQ2hhbmdl
TG9nCShyZXZpc2lvbiAyMjMxMTYpCisrKyBTb3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDE3LTEwLTA5ICBTYW0gV2VpbmlnICA8c2Ft
QHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVwbGFjZSBjb3B5S2V5c1RvVmVjdG9yL2NvcHlWYWx1
ZXNUb1ZlY3RvciB3aXRoIGNvcHlUb1ZlY3RvcihtYXAua2V5cygpKS9jb3B5VG9WZWN0b3IobWFw
LnZhbHVlcygpKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTc4MTAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBTZXNzaW9uSG9zdC5jcHA6CisgICAgICAgIChXZWJEcml2ZXI6OlNlc3Npb25Ib3N0Ojpp
bnNwZWN0b3JEaXNjb25uZWN0ZWQpOgorCiAyMDE3LTEwLTAyICBDYXJsb3MgR2FyY2lhIENhbXBv
cyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBXZWJEcml2ZXI6IEhUVFAgc3RhdHVz
IGNvZGUgaXMgbm90IGNvcnJlY3QgZm9yIHNvbWUgb2YgdGhlIGVycm9ycwpJbmRleDogU291cmNl
L1dlYkRyaXZlci9TZXNzaW9uSG9zdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkRyaXZl
ci9TZXNzaW9uSG9zdC5jcHAJKHJldmlzaW9uIDIyMzExNikKKysrIFNvdXJjZS9XZWJEcml2ZXIv
U2Vzc2lvbkhvc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw5ICszNiw3IEBAIG5hbWVzcGFj
ZSBXZWJEcml2ZXIgewogdm9pZCBTZXNzaW9uSG9zdDo6aW5zcGVjdG9yRGlzY29ubmVjdGVkKCkK
IHsKICAgICAvLyBCcm93c2VyIGNsb3NlZCBvciBjcmFzaGVkLCBmaW5pc2ggYWxsIHBlbmRpbmcg
Y29tbWFuZHMgd2l0aCBlcnJvci4KLSAgICBWZWN0b3I8bG9uZz4gbWVzc2FnZXM7Ci0gICAgY29w
eUtleXNUb1ZlY3RvcihtX2NvbW1hbmRSZXF1ZXN0cywgbWVzc2FnZXMpOwotICAgIGZvciAoYXV0
byBtZXNzYWdlSUQgOiBtZXNzYWdlcykgeworICAgIGZvciAoYXV0byBtZXNzYWdlSUQgOiBjb3B5
VG9WZWN0b3IobV9jb21tYW5kUmVxdWVzdHMua2V5cygpKSkgewogICAgICAgICBhdXRvIHJlc3Bv
bnNlSGFuZGxlciA9IG1fY29tbWFuZFJlcXVlc3RzLnRha2UobWVzc2FnZUlEKTsKICAgICAgICAg
cmVzcG9uc2VIYW5kbGVyKHsgbnVsbHB0ciwgdHJ1ZSB9KTsKICAgICB9CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwko
cmV2aXNpb24gMjIzMTE2KQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSw0MyBAQAorMjAxNy0xMC0wOSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQu
b3JnPgorCisgICAgICAgIFJlcGxhY2UgY29weUtleXNUb1ZlY3Rvci9jb3B5VmFsdWVzVG9WZWN0
b3Igd2l0aCBjb3B5VG9WZWN0b3IobWFwLmtleXMoKSkvY29weVRvVmVjdG9yKG1hcC52YWx1ZXMo
KSkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODEw
MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkQ2xvc2UpOgorICAgICAg
ICAqIFNoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW06
CisgICAgICAgIChXZWJLaXQ6OmR1bXBDaGFuZ2VkTGF5ZXJzKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHA6CisgICAgICAgICh3ZWJraXRXZWJDb250
ZXh0SW52YWxpZGF0ZUN1c3RvbVByb3RvY29sUmVxdWVzdHMpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdC
YXNlQ29udGFpbmVyRm9yYWxsKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV0tXZWJWaWV3
Q29udGVudFByb3ZpZGVyUmVnaXN0cnkubW06CisgICAgICAgICgtW1dLV2ViVmlld0NvbnRlbnRQ
cm92aWRlclJlZ2lzdHJ5IF9taW1lVHlwZXNXaXRoQ3VzdG9tQ29udGVudFByb3ZpZGVyc10pOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9HZW5lcmljQ2FsbGJhY2suaDoKKyAgICAgICAgKFdlYktpdDo6
aW52YWxpZGF0ZUNhbGxiYWNrTWFwKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1By
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpzaHV0RG93bik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6ZGlkQ2xvc2UpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzUHJveHk6OmRpZEJlY29tZVVucmVzcG9uc2l2ZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6ZGlkQmVjb21lUmVzcG9uc2l2ZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6d2lsbENoYW5nZUlzUmVzcG9uc2l2ZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6ZGlkQ2hhbmdlSXNSZXNwb25zaXZlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpkaXNjb25uZWN0RnJhbWVzRnJvbVBhZ2UpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmZyYW1lQ291bnRJblBhZ2UgY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnJlcXVlc3RUZXJtaW5hdGlvbik6
CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QUnVudGltZU9iamVjdE1h
cC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5QUnVudGltZU9iamVjdE1hcDo6aW52YWxpZGF0ZSk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OnN0b3BBbGxTdHJlYW1zKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlBsdWdpblZpZXc6OmNhbmNlbEFsbFN0cmVhbXMpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlQ29udGV4dC5tbToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlQ29udGV4dDo6YnVpbGRUcmFuc2FjdGlvbik6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzczo6ZGlkQ2xvc2UpOgorCiAyMDE3LTEwLTA5ICBKZXJlbXkgSm9uZXMgIDxqZXJlbXlq
QGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggdHlwbyBvZiB2aXJ0dWFsIGtleXdvcmQgaW4gUGFn
ZUNsaWVudEltcGxJT1MuaApJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAJKHJldmlz
aW9uIDIyMzExNikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjgsOSArMTY4LDcgQEAg
dm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkQwogICAgIC8vIFByb3RlY3Qg
b3Vyc2VsZiBhcyB3ZSBtaWdodCBiZSBvdGhlcndpc2UgYmUgZGVsZXRlZCBkdXJpbmcgdGhpcyBm
dW5jdGlvbi4KICAgICBSZWY8TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+IHByb3RlY3Rv
cigqdGhpcyk7CiAKLSAgICBWZWN0b3I8UmVmUHRyPE5ldHdvcmtSZXNvdXJjZUxvYWRlcj4+IGxv
YWRlcnM7Ci0gICAgY29weVZhbHVlc1RvVmVjdG9yKG1fbmV0d29ya1Jlc291cmNlTG9hZGVycywg
bG9hZGVycyk7Ci0gICAgZm9yIChhdXRvJiBsb2FkZXIgOiBsb2FkZXJzKQorICAgIGZvciAoYXV0
byYgbG9hZGVyIDogY29weVRvVmVjdG9yKG1fbmV0d29ya1Jlc291cmNlTG9hZGVycy52YWx1ZXMo
KSkpCiAgICAgICAgIGxvYWRlci0+YWJvcnQoKTsKICAgICBBU1NFUlQobV9uZXR3b3JrUmVzb3Vy
Y2VMb2FkZXJzLmlzRW1wdHkoKSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90
ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNh
Y3Rpb24ubW0JKHJldmlzaW9uIDIyMzExNikKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90
ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbQkod29ya2luZyBjb3B5KQpA
QCAtNzQ0LDggKzc0NCw3IEBAIHN0YXRpYyB2b2lkIGR1bXBDaGFuZ2VkTGF5ZXJzKFRleHRTdHJl
YW0KICAgICB0cyA8PCAiY2hhbmdlZC1sYXllcnMiOwogCiAgICAgLy8gRHVtcCB0aGUgbGF5ZXIg
cHJvcGVydGllcyBzb3J0ZWQgYnkgbGF5ZXIgSUQuCi0gICAgVmVjdG9yPEdyYXBoaWNzTGF5ZXI6
OlBsYXRmb3JtTGF5ZXJJRD4gbGF5ZXJJRHM7Ci0gICAgY29weUtleXNUb1ZlY3RvcihjaGFuZ2Vk
TGF5ZXJQcm9wZXJ0aWVzLCBsYXllcklEcyk7CisgICAgYXV0byBsYXllcklEcyA9IGNvcHlUb1Zl
Y3RvcihjaGFuZ2VkTGF5ZXJQcm9wZXJ0aWVzLmtleXMoKSk7CiAgICAgc3RkOjpzb3J0KGxheWVy
SURzLmJlZ2luKCksIGxheWVySURzLmVuZCgpKTsKIAogICAgIGZvciAoYXV0byYgbGF5ZXJJRCA6
IGxheWVySURzKSB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HZW5lcmljQ2FsbGJh
Y2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HZW5lcmljQ2FsbGJh
Y2suaAkocmV2aXNpb24gMjIzMTE2KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2VuZXJp
Y0NhbGxiYWNrLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2Myw5ICsxNjMsNyBAQCB0eXBlZGVmIEdl
bmVyaWNDYWxsYmFjazxjb25zdCBTaGFyZWFibGVCCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogdm9p
ZCBpbnZhbGlkYXRlQ2FsbGJhY2tNYXAoSGFzaE1hcDx1aW50NjRfdCwgVD4mIGNhbGxiYWNrTWFw
LCBDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKQogewotICAgIFZlY3RvcjxUPiBjYWxsYmFja3M7
Ci0gICAgY29weVZhbHVlc1RvVmVjdG9yKGNhbGxiYWNrTWFwLCBjYWxsYmFja3MpOwotICAgIGZv
ciAoYXV0byYgY2FsbGJhY2sgOiBjYWxsYmFja3MpCisgICAgZm9yIChhdXRvJiBjYWxsYmFjayA6
IGNvcHlUb1ZlY3RvcihjYWxsYmFja01hcC52YWx1ZXMoKSkpCiAgICAgICAgIGNhbGxiYWNrLT5p
bnZhbGlkYXRlKGVycm9yKTsKIAogICAgIGNhbGxiYWNrTWFwLmNsZWFyKCk7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAJKHJldmlzaW9uIDIyMzEx
NikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE4MSwxOCArMTgxLDE1IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpzaHV0
RG93bigpCiAgICAgbV9iYWNrZ3JvdW5kUmVzcG9uc2l2ZW5lc3NUaW1lci5pbnZhbGlkYXRlKCk7
CiAgICAgbV90b2tlbkZvckhvbGRpbmdMb2NrZWRGaWxlcyA9IG51bGxwdHI7CiAKLSAgICBWZWN0
b3I8UmVmUHRyPFdlYkZyYW1lUHJveHk+PiBmcmFtZXM7Ci0gICAgY29weVZhbHVlc1RvVmVjdG9y
KG1fZnJhbWVNYXAsIGZyYW1lcyk7Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IGZy
YW1lcy5zaXplKCk7IGkgPCBzaXplOyArK2kpCi0gICAgICAgIGZyYW1lc1tpXS0+d2ViUHJvY2Vz
c1dpbGxTaHV0RG93bigpOworICAgIGZvciAoYXV0byYgZnJhbWUgOiBjb3B5VG9WZWN0b3IobV9m
cmFtZU1hcC52YWx1ZXMoKSkpCisgICAgICAgIGZyYW1lLT53ZWJQcm9jZXNzV2lsbFNodXREb3du
KCk7CiAgICAgbV9mcmFtZU1hcC5jbGVhcigpOwogCi0gICAgZm9yIChWaXNpdGVkTGlua1N0b3Jl
KiB2aXNpdGVkTGlua1N0b3JlIDogbV92aXNpdGVkTGlua1N0b3JlcykKKyAgICBmb3IgKGF1dG8q
IHZpc2l0ZWRMaW5rU3RvcmUgOiBtX3Zpc2l0ZWRMaW5rU3RvcmVzKQogICAgICAgICB2aXNpdGVk
TGlua1N0b3JlLT5yZW1vdmVQcm9jZXNzKCp0aGlzKTsKICAgICBtX3Zpc2l0ZWRMaW5rU3RvcmVz
LmNsZWFyKCk7CiAKLSAgICBmb3IgKFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KiB3ZWJV
c2VyQ29udGVudENvbnRyb2xsZXJQcm94eSA6IG1fd2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJv
eGllcykKKyAgICBmb3IgKGF1dG8qIHdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5IDogbV93
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94aWVzKQogICAgICAgICB3ZWJVc2VyQ29udGVudENv
bnRyb2xsZXJQcm94eS0+cmVtb3ZlUHJvY2VzcygqdGhpcyk7CiAgICAgbV93ZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94aWVzLmNsZWFyKCk7CiAKQEAgLTYyNSwxMyArNjIyLDEyIEBAIHZvaWQg
V2ViUHJvY2Vzc1Byb3h5OjpkaWRDbG9zZShJUEM6OkNvbm4KIAogICAgIHdlYkNvbm5lY3Rpb24o
KS0+ZGlkQ2xvc2UoKTsKIAotICAgIFZlY3RvcjxSZWZQdHI8V2ViUGFnZVByb3h5Pj4gcGFnZXM7
Ci0gICAgY29weVZhbHVlc1RvVmVjdG9yKG1fcGFnZU1hcCwgcGFnZXMpOworICAgIGF1dG8gcGFn
ZXMgPSBjb3B5VG9WZWN0b3IobV9wYWdlTWFwLnZhbHVlcygpKTsKIAogICAgIHNodXREb3duKCk7
CiAKLSAgICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IHBhZ2VzLnNpemUoKTsgaSA8IHNpemU7
ICsraSkKLSAgICAgICAgcGFnZXNbaV0tPnByb2Nlc3NEaWRUZXJtaW5hdGUoUHJvY2Vzc1Rlcm1p
bmF0aW9uUmVhc29uOjpDcmFzaCk7CisgICAgZm9yIChhdXRvJiBwYWdlIDogcGFnZXMpCisgICAg
ICAgIHBhZ2UtPnByb2Nlc3NEaWRUZXJtaW5hdGUoUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uOjpD
cmFzaCk7CiAKIH0KIApAQCAtNjUzLDEyICs2NDksOSBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6
ZGlkQmVjb21lVW5yZXNwb25zCiB7CiAgICAgbV9pc1Jlc3BvbnNpdmUgPSBOb09yTWF5YmU6Ok5v
OwogCi0gICAgVmVjdG9yPFJlZlB0cjxXZWJQYWdlUHJveHk+PiBwYWdlczsKLSAgICBjb3B5VmFs
dWVzVG9WZWN0b3IobV9wYWdlTWFwLCBwYWdlcyk7Ci0KICAgICBhdXRvIGlzUmVzcG9uc2l2ZUNh
bGxiYWNrcyA9IFdURk1vdmUobV9pc1Jlc3BvbnNpdmVDYWxsYmFja3MpOwogCi0gICAgZm9yIChh
dXRvJiBwYWdlIDogcGFnZXMpCisgICAgZm9yIChhdXRvJiBwYWdlIDogY29weVRvVmVjdG9yKG1f
cGFnZU1hcC52YWx1ZXMoKSkpCiAgICAgICAgIHBhZ2UtPnByb2Nlc3NEaWRCZWNvbWVVbnJlc3Bv
bnNpdmUoKTsKIAogICAgIGJvb2wgaXNXZWJQcm9jZXNzUmVzcG9uc2l2ZSA9IGZhbHNlOwpAQCAt
NjcwLDI1ICs2NjMsMTkgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZEJlY29tZVJlc3BvbnNp
dgogewogICAgIG1faXNSZXNwb25zaXZlID0gTm9Pck1heWJlOjpNYXliZTsKIAotICAgIFZlY3Rv
cjxSZWZQdHI8V2ViUGFnZVByb3h5Pj4gcGFnZXM7Ci0gICAgY29weVZhbHVlc1RvVmVjdG9yKG1f
cGFnZU1hcCwgcGFnZXMpOwotICAgIGZvciAoYXV0byYgcGFnZSA6IHBhZ2VzKQorICAgIGZvciAo
YXV0byYgcGFnZSA6IGNvcHlUb1ZlY3RvcihtX3BhZ2VNYXAudmFsdWVzKCkpKQogICAgICAgICBw
YWdlLT5wcm9jZXNzRGlkQmVjb21lUmVzcG9uc2l2ZSgpOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQ
cm94eTo6d2lsbENoYW5nZUlzUmVzcG9uc2l2ZSgpCiB7Ci0gICAgVmVjdG9yPFJlZlB0cjxXZWJQ
YWdlUHJveHk+PiBwYWdlczsKLSAgICBjb3B5VmFsdWVzVG9WZWN0b3IobV9wYWdlTWFwLCBwYWdl
cyk7Ci0gICAgZm9yIChhdXRvJiBwYWdlIDogcGFnZXMpCisgICAgZm9yIChhdXRvJiBwYWdlIDog
Y29weVRvVmVjdG9yKG1fcGFnZU1hcC52YWx1ZXMoKSkpCiAgICAgICAgIHBhZ2UtPndpbGxDaGFu
Z2VQcm9jZXNzSXNSZXNwb25zaXZlKCk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRD
aGFuZ2VJc1Jlc3BvbnNpdmUoKQogewotICAgIFZlY3RvcjxSZWZQdHI8V2ViUGFnZVByb3h5Pj4g
cGFnZXM7Ci0gICAgY29weVZhbHVlc1RvVmVjdG9yKG1fcGFnZU1hcCwgcGFnZXMpOwotICAgIGZv
ciAoYXV0byYgcGFnZSA6IHBhZ2VzKQorICAgIGZvciAoYXV0byYgcGFnZSA6IGNvcHlUb1ZlY3Rv
cihtX3BhZ2VNYXAudmFsdWVzKCkpKQogICAgICAgICBwYWdlLT5kaWRDaGFuZ2VQcm9jZXNzSXNS
ZXNwb25zaXZlKCk7CiB9CiAKQEAgLTc0OCwxOSArNzM1LDE3IEBAIHZvaWQgV2ViUHJvY2Vzc1By
b3h5OjpkaWREZXN0cm95RnJhbWUodWkKIAogdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpc2Nvbm5l
Y3RGcmFtZXNGcm9tUGFnZShXZWJQYWdlUHJveHkqIHBhZ2UpCiB7Ci0gICAgVmVjdG9yPFJlZlB0
cjxXZWJGcmFtZVByb3h5Pj4gZnJhbWVzOwotICAgIGNvcHlWYWx1ZXNUb1ZlY3RvcihtX2ZyYW1l
TWFwLCBmcmFtZXMpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwLCBzaXplID0gZnJhbWVzLnNpemUo
KTsgaSA8IHNpemU7ICsraSkgewotICAgICAgICBpZiAoZnJhbWVzW2ldLT5wYWdlKCkgPT0gcGFn
ZSkKLSAgICAgICAgICAgIGZyYW1lc1tpXS0+d2ViUHJvY2Vzc1dpbGxTaHV0RG93bigpOworICAg
IGZvciAoYXV0byYgZnJhbWUgOiBjb3B5VG9WZWN0b3IobV9mcmFtZU1hcC52YWx1ZXMoKSkpIHsK
KyAgICAgICAgaWYgKGZyYW1lLT5wYWdlKCkgPT0gcGFnZSkKKyAgICAgICAgICAgIGZyYW1lLT53
ZWJQcm9jZXNzV2lsbFNodXREb3duKCk7CiAgICAgfQogfQogCiBzaXplX3QgV2ViUHJvY2Vzc1By
b3h5OjpmcmFtZUNvdW50SW5QYWdlKFdlYlBhZ2VQcm94eSogcGFnZSkgY29uc3QKIHsKICAgICBz
aXplX3QgcmVzdWx0ID0gMDsKLSAgICBmb3IgKEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxXZWJG
cmFtZVByb3h5Pj46OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBtX2ZyYW1lTWFwLmJlZ2luKCk7IGl0
ZXIgIT0gbV9mcmFtZU1hcC5lbmQoKTsgKytpdGVyKSB7Ci0gICAgICAgIGlmIChpdGVyLT52YWx1
ZS0+cGFnZSgpID09IHBhZ2UpCisgICAgZm9yIChhdXRvJiBmcmFtZSA6IG1fZnJhbWVNYXAudmFs
dWVzKCkpIHsKKyAgICAgICAgaWYgKGZyYW1lLT5wYWdlKCkgPT0gcGFnZSkKICAgICAgICAgICAg
ICsrcmVzdWx0OwogICAgIH0KICAgICByZXR1cm4gcmVzdWx0OwpAQCAtODg4LDEzICs4NzMsMTIg
QEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnJlcXVlc3RUZXJtaW5hdGlvbgogICAgIGlmICh3ZWJD
b25uZWN0aW9uKCkpCiAgICAgICAgIHdlYkNvbm5lY3Rpb24oKS0+ZGlkQ2xvc2UoKTsKIAotICAg
IFZlY3RvcjxSZWZQdHI8V2ViUGFnZVByb3h5Pj4gcGFnZXM7Ci0gICAgY29weVZhbHVlc1RvVmVj
dG9yKG1fcGFnZU1hcCwgcGFnZXMpOworICAgIGF1dG8gcGFnZXMgPSBjb3B5VG9WZWN0b3IobV9w
YWdlTWFwLnZhbHVlcygpKTsKIAogICAgIHNodXREb3duKCk7CiAKLSAgICBmb3IgKHNpemVfdCBp
ID0gMCwgc2l6ZSA9IHBhZ2VzLnNpemUoKTsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgcGFnZXNb
aV0tPnByb2Nlc3NEaWRUZXJtaW5hdGUocmVhc29uKTsKKyAgICBmb3IgKGF1dG8mIHBhZ2UgOiBw
YWdlcykKKyAgICAgICAgcGFnZS0+cHJvY2Vzc0RpZFRlcm1pbmF0ZShyZWFzb24pOwogfQogCiB2
b2lkIFdlYlByb2Nlc3NQcm94eTo6c3RvcFJlc3BvbnNpdmVuZXNzVGltZXIoKQpJbmRleDogU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4
dC5jcHAJKHJldmlzaW9uIDIyMzExNikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdFdlYkNvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjE4LDkgKzE2MTgs
NyBAQCB2b2lkIHdlYmtpdFdlYkNvbnRleHRTdG9wTG9hZGluZ0N1c3RvbVByCiAKIHZvaWQgd2Vi
a2l0V2ViQ29udGV4dEludmFsaWRhdGVDdXN0b21Qcm90b2NvbFJlcXVlc3RzKFdlYktpdFdlYkNv
bnRleHQqIGNvbnRleHQsIExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5JiBtYW5hZ2Vy
KQogewotICAgIFZlY3RvcjxHUmVmUHRyPFdlYktpdFVSSVNjaGVtZVJlcXVlc3Q+PiByZXF1ZXN0
czsKLSAgICBjb3B5VmFsdWVzVG9WZWN0b3IoY29udGV4dC0+cHJpdi0+dXJpU2NoZW1lUmVxdWVz
dHMsIHJlcXVlc3RzKTsKLSAgICBmb3IgKGF1dG8mIHJlcXVlc3QgOiByZXF1ZXN0cykgeworICAg
IGZvciAoYXV0byYgcmVxdWVzdCA6IGNvcHlUb1ZlY3Rvcihjb250ZXh0LT5wcml2LT51cmlTY2hl
bWVSZXF1ZXN0cy52YWx1ZXMoKSkpIHsKICAgICAgICAgaWYgKHdlYmtpdFVSSVNjaGVtZVJlcXVl
c3RHZXRNYW5hZ2VyKHJlcXVlc3QuZ2V0KCkpID09ICZtYW5hZ2VyKQogICAgICAgICAgICAgd2Vi
a2l0VVJJU2NoZW1lUmVxdWVzdEludmFsaWRhdGUocmVxdWVzdC5nZXQoKSk7CiAgICAgfQpJbmRl
eDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJW
aWV3QmFzZS5jcHAJKHJldmlzaW9uIDIyMzExNikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NzUsOSAr
NDc1LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VDb250YWluZXJGbwogICAgIFdl
YktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3ID0gV0VCS0lUX1dFQl9WSUVXX0JBU0UoY29udGFpbmVy
KTsKICAgICBXZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUqIHByaXYgPSB3ZWJWaWV3LT5wcml2Owog
Ci0gICAgVmVjdG9yPEd0a1dpZGdldCo+IGNoaWxkcmVuOwotICAgIGNvcHlLZXlzVG9WZWN0b3Io
cHJpdi0+Y2hpbGRyZW4sIGNoaWxkcmVuKTsKLSAgICBmb3IgKGNvbnN0IGF1dG8mIGNoaWxkIDog
Y2hpbGRyZW4pIHsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGNoaWxkIDogY29weVRvVmVjdG9yKHBy
aXYtPmNoaWxkcmVuLmtleXMoKSkpIHsKICAgICAgICAgaWYgKHByaXYtPmNoaWxkcmVuLmNvbnRh
aW5zKGNoaWxkKSkKICAgICAgICAgICAgICgqY2FsbGJhY2spKGNoaWxkLCBjYWxsYmFja0RhdGEp
OwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLV2ViVmlld0Nv
bnRlbnRQcm92aWRlclJlZ2lzdHJ5Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1dLV2ViVmlld0NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5Lm1tCShyZXZpc2lv
biAyMjMxMTYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XS1dlYlZpZXdDb250
ZW50UHJvdmlkZXJSZWdpc3RyeS5tbQkod29ya2luZyBjb3B5KQpAQCAtODksOSArODksNyBAQCAt
IChDbGFzcyA8V0tXZWJWaWV3Q29udGVudFByb3ZpZGVyPilwcm92CiAKIC0gKFZlY3RvcjxTdHJp
bmc+KV9taW1lVHlwZXNXaXRoQ3VzdG9tQ29udGVudFByb3ZpZGVycwogewotICAgIFZlY3RvcjxT
dHJpbmc+IG1pbWVUeXBlczsKLSAgICBjb3B5S2V5c1RvVmVjdG9yKF9jb250ZW50UHJvdmlkZXJG
b3JNSU1FVHlwZSwgbWltZVR5cGVzKTsKLSAgICByZXR1cm4gbWltZVR5cGVzOworICAgIHJldHVy
biBjb3B5VG9WZWN0b3IoX2NvbnRlbnRQcm92aWRlckZvck1JTUVUeXBlLmtleXMoKSk7CiB9CiAK
IEBlbmQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHJldmlz
aW9uIDIyMzExNikKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNjY1LDEwICs2NjUsNyBAQCB2b2lkIFdlYlByb2Nlc3M6OmRpZFJl
Y2VpdmVNZXNzYWdlKElQQzo6CiB2b2lkIFdlYlByb2Nlc3M6OmRpZENsb3NlKElQQzo6Q29ubmVj
dGlvbiYpCiB7CiAjaWZuZGVmIE5ERUJVRwotICAgIC8vIENsb3NlIGFsbCB0aGUgbGl2ZSBwYWdl
cy4KLSAgICBWZWN0b3I8UmVmUHRyPFdlYlBhZ2U+PiBwYWdlczsKLSAgICBjb3B5VmFsdWVzVG9W
ZWN0b3IobV9wYWdlTWFwLCBwYWdlcyk7Ci0gICAgZm9yIChhdXRvJiBwYWdlIDogcGFnZXMpCisg
ICAgZm9yIChhdXRvJiBwYWdlIDogY29weVRvVmVjdG9yKG1fcGFnZU1hcC52YWx1ZXMoKSkpCiAg
ICAgICAgIHBhZ2UtPmNsb3NlKCk7CiAgICAgcGFnZXMuY2xlYXIoKTsKIApJbmRleDogU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAJKHJldmlzaW9u
IDIyMzExNikKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjg0LDExICsxMjg0LDggQEAgdm9pZCBQbHVnaW5WaWV3
OjpyZW1vdmVTdHJlYW0oU3RyZWFtKiBzdAogCiB2b2lkIFBsdWdpblZpZXc6OmNhbmNlbEFsbFN0
cmVhbXMoKQogewotICAgIFZlY3RvcjxSZWZQdHI8U3RyZWFtPj4gc3RyZWFtczsKLSAgICBjb3B5
VmFsdWVzVG9WZWN0b3IobV9zdHJlYW1zLCBzdHJlYW1zKTsKLSAgICAKLSAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHN0cmVhbXMuc2l6ZSgpOyArK2kpCi0gICAgICAgIHN0cmVhbXNbaV0tPmNh
bmNlbCgpOworICAgIGZvciAoYXV0byYgc3RyZWFtIDogY29weVRvVmVjdG9yKG1fc3RyZWFtcy52
YWx1ZXMoKSkpCisgICAgICAgIHN0cmVhbS0+Y2FuY2VsKCk7CiAKICAgICAvLyBDYW5jZWxsaW5n
IGEgc3RyZWFtIHJlbW92ZXMgaXQgZnJvbSB0aGUgbV9zdHJlYW1zIG1hcCwgc28gaWYgd2UgY2Fu
Y2VsIGFsbCBzdHJlYW1zIHRoZSBtYXAgc2hvdWxkIGJlIGVtcHR5LgogICAgIEFTU0VSVChtX3N0
cmVhbXMuaXNFbXB0eSgpKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L05ldHNjYXBlL05QUnVudGltZU9iamVjdE1hcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBSdW50aW1lT2JqZWN0TWFwLmNwcAko
cmV2aXNpb24gMjIzMTE2KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0
c2NhcGUvTlBSdW50aW1lT2JqZWN0TWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjAwLDEyICsy
MDAsOSBAQCBib29sIE5QUnVudGltZU9iamVjdE1hcDo6ZXZhbHVhdGUoTlBPYmplCiAKIHZvaWQg
TlBSdW50aW1lT2JqZWN0TWFwOjppbnZhbGlkYXRlKCkKIHsKLSAgICBWZWN0b3I8TlBKU09iamVj
dCo+IG5wSlNPYmplY3RzOwotICAgIGNvcHlWYWx1ZXNUb1ZlY3RvcihtX25wSlNPYmplY3RzLCBu
cEpTT2JqZWN0cyk7Ci0KICAgICAvLyBEZWFsbG9jYXRlIGFsbCB0aGUgb2JqZWN0IHdyYXBwZXJz
IHNvIHdlIHdvbid0IGxlYWsgYW55IEphdmFTY3JpcHQgb2JqZWN0cy4KLSAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG5wSlNPYmplY3RzLnNpemUoKTsgKytpKQotICAgICAgICBkZWFsbG9jYXRl
TlBPYmplY3QobnBKU09iamVjdHNbaV0pOworICAgIGZvciAoYXV0byYgbnBKU09iamVjdCA6IGNv
cHlUb1ZlY3RvcihtX25wSlNPYmplY3RzLnZhbHVlcygpKSkKKyAgICAgICAgZGVhbGxvY2F0ZU5Q
T2JqZWN0KG5wSlNPYmplY3QpOwogICAgIAogICAgIC8vIFdlIHNob3VsZG4ndCBoYXZlIGFueSBO
UEpTT2JqZWN0cyBsZWZ0IG5vdy4KICAgICBBU1NFUlQobV9ucEpTT2JqZWN0cy5pc0VtcHR5KCkp
OwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2Nh
cGVQbHVnaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcAkocmV2aXNpb24gMjIzMTE2KQorKysgU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01NjgsMTEgKzU2OCw4IEBAIE5ldHNjYXBlUGx1Z2luU3RyZWFt
KiBOZXRzY2FwZVBsdWdpbjo6c3QKIAogdm9pZCBOZXRzY2FwZVBsdWdpbjo6c3RvcEFsbFN0cmVh
bXMoKQogewotICAgIFZlY3RvcjxSZWZQdHI8TmV0c2NhcGVQbHVnaW5TdHJlYW0+PiBzdHJlYW1z
OwotICAgIGNvcHlWYWx1ZXNUb1ZlY3RvcihtX3N0cmVhbXMsIHN0cmVhbXMpOwotCi0gICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBzdHJlYW1zLnNpemUoKTsgKytpKQotICAgICAgICBzdHJlYW1z
W2ldLT5zdG9wKE5QUkVTX1VTRVJfQlJFQUspOworICAgIGZvciAoYXV0byYgc3RyZWFtIDogY29w
eVRvVmVjdG9yKG1fc3RyZWFtcy52YWx1ZXMoKSkpCisgICAgICAgIHN0cmVhbS0+c3RvcChOUFJF
U19VU0VSX0JSRUFLKTsKIH0KIAogYm9vbCBOZXRzY2FwZVBsdWdpbjo6YWxsb3dQb3B1cHMoKSBj
b25zdApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJU
cmVlL1JlbW90ZUxheWVyVHJlZUNvbnRleHQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUNvbnRl
eHQubW0JKHJldmlzaW9uIDIyMzExNikKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVDb250ZXh0Lm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0xMjYsOSArMTI2LDcgQEAgdm9pZCBSZW1vdGVMYXllclRyZWVDb250ZXh0OjpidWls
ZFRyYW5zYQogICAgIHJvb3RMYXllclJlbW90ZS5yZWN1cnNpdmVCdWlsZFRyYW5zYWN0aW9uKCp0
aGlzLCB0cmFuc2FjdGlvbik7CiAgICAgbV9jdXJyZW50VHJhbnNhY3Rpb24gPSBudWxscHRyOwog
Ci0gICAgVmVjdG9yPFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpMYXllckNyZWF0aW9uUHJv
cGVydGllcz4gY3JlYXRlZExheWVyUHJvcGVydGllczsKLSAgICBjb3B5VmFsdWVzVG9WZWN0b3Io
bV9jcmVhdGVkTGF5ZXJzLCBjcmVhdGVkTGF5ZXJQcm9wZXJ0aWVzKTsKLSAgICB0cmFuc2FjdGlv
bi5zZXRDcmVhdGVkTGF5ZXJzKFdURk1vdmUoY3JlYXRlZExheWVyUHJvcGVydGllcykpOworICAg
IHRyYW5zYWN0aW9uLnNldENyZWF0ZWRMYXllcnMoY29weVRvVmVjdG9yKG1fY3JlYXRlZExheWVy
cy52YWx1ZXMoKSkpOwogICAgIHRyYW5zYWN0aW9uLnNldERlc3Ryb3llZExheWVySURzKFdURk1v
dmUobV9kZXN0cm95ZWRMYXllcnMpKTsKICAgICAKICAgICBtX2NyZWF0ZWRMYXllcnMuY2xlYXIo
KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjMxMTYpCisrKyBTb3VyY2Uv
V2ViS2l0TGVnYWN5L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisy
MDE3LTEwLTA5ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVwbGFj
ZSBjb3B5S2V5c1RvVmVjdG9yL2NvcHlWYWx1ZXNUb1ZlY3RvciB3aXRoIGNvcHlUb1ZlY3Rvciht
YXAua2V5cygpKS9jb3B5VG9WZWN0b3IobWFwLnZhbHVlcygpKQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4MTAyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJj
ZUxvYWRTY2hlZHVsZXIuY3BwOgorICAgICAgICAoV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpz
ZXJ2ZVBlbmRpbmdSZXF1ZXN0cyk6CisKIDIwMTctMTAtMDkgIFBlciBBcm5lIFZvbGxhbiAgPHB2
b2xsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtXaW5dIExpbmsgZXJyb3I6IGNhbm5vdCBvcGVu
IGlucHV0IGZpbGUgJ1dlYktpdExlZ2FjeUdVSUQubGliJwpJbmRleDogU291cmNlL1dlYktpdExl
Z2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2Fk
U2NoZWR1bGVyLmNwcAkocmV2aXNpb24gMjIzMTE2KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9X
ZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yMjIsMTAgKzIyMiw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpzZXJ2
ZVBlbmQKICAgICAKICAgICBzZXJ2ZVBlbmRpbmdSZXF1ZXN0cyhtX25vbkhUVFBQcm90b2NvbEhv
c3QsIG1pbmltdW1Qcmlvcml0eSk7CiAKLSAgICBWZWN0b3I8SG9zdEluZm9ybWF0aW9uKj4gaG9z
dHNUb1NlcnZlOwotICAgIGNvcHlWYWx1ZXNUb1ZlY3RvcihtX2hvc3RzLCBob3N0c1RvU2VydmUp
OwotCi0gICAgZm9yIChhdXRvKiBob3N0IDogaG9zdHNUb1NlcnZlKSB7CisgICAgZm9yIChhdXRv
KiBob3N0IDogY29weVRvVmVjdG9yKG1faG9zdHMudmFsdWVzKCkpKSB7CiAgICAgICAgIGlmICho
b3N0LT5oYXNSZXF1ZXN0cygpKQogICAgICAgICAgICAgc2VydmVQZW5kaW5nUmVxdWVzdHMoaG9z
dCwgbWluaW11bVByaW9yaXR5KTsKICAgICAgICAgZWxzZQpJbmRleDogU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0NoYW5nZUxvZwkocmV2aXNpb24gMjIzMTE2KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTctMTAtMDkgIFNh
bSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXBsYWNlIGNvcHlLZXlzVG9W
ZWN0b3IvY29weVZhbHVlc1RvVmVjdG9yIHdpdGggY29weVRvVmVjdG9yKG1hcC5rZXlzKCkpL2Nv
cHlUb1ZlY3RvcihtYXAudmFsdWVzKCkpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNzgxMDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIEhpc3RvcnkvV2ViSGlzdG9yeS5tbToKKyAgICAgICAgKC1bV2Vi
SGlzdG9yeVByaXZhdGUgcmVidWlsZEhpc3RvcnlCeURheUlmTmVlZGVkOl0pOgorICAgICAgICAq
IFBsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbToKKyAgICAgICAg
KFdlYktpdDo6TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpzdG9wQWxsU3RyZWFtcyk6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViVXNlck1lZGlhQ2xpZW50Lm1tOgorICAgICAgICAo
V2ViVXNlck1lZGlhQ2xpZW50OjpwYWdlRGVzdHJveWVkKToKKwogMjAxNy0xMC0wOSAgUm9iaW4g
TW9yaXNzZXQgIDxybW9yaXNzZXRAYXBwbGUuY29tPgogCiAgICAgICAgIE1ha2UgdGhlIG5hbWVz
IG9mIHRoZSBvcHRpb25zIGNvbnNpc3RlbnQKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0hpc3RvcnkvV2ViSGlzdG9yeS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9IaXN0b3J5L1dlYkhpc3RvcnkubW0JKHJldmlzaW9uIDIyMzExNikKKysrIFNvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvV2ViSGlzdG9yeS5tbQkod29ya2luZyBjb3B5KQpAQCAt
MzY2LDggKzM2Niw3IEBAIC0gKHZvaWQpcmVidWlsZEhpc3RvcnlCeURheUlmTmVlZGVkOihXZWIK
IHsKICAgICAvLyBXZSBjbGVhciBhbGwgdGhlIHZhbHVlcyB0byBwcmVzZW50IGEgY29uc2lzdGVu
dCBzdGF0ZSB3aGVuIHNlbmRpbmcgdGhlIG5vdGlmaWNhdGlvbnMuCiAgICAgLy8gV2Uga2VlcCBh
IHJlZmVyZW5jZSB0byB0aGUgZW50cmllcyBmb3IgcmVidWlsZGluZyB0aGUgaGlzdG9yeSBhZnRl
ciB0aGUgbm90aWZpY2F0aW9uLgotICAgIFZlY3RvciA8UmV0YWluUHRyPE5TTXV0YWJsZUFycmF5
Pj4gZW50cnlBcnJheXM7Ci0gICAgY29weVZhbHVlc1RvVmVjdG9yKCpfZW50cmllc0J5RGF0ZSwg
ZW50cnlBcnJheXMpOworICAgIGF1dG8gZW50cnlBcnJheXMgPSBjb3B5VG9WZWN0b3IoX2VudHJp
ZXNCeURhdGUtPnZhbHVlcygpKTsKICAgICBfZW50cmllc0J5RGF0ZS0+Y2xlYXIoKTsKICAgICAK
ICAgICBOU011dGFibGVEaWN0aW9uYXJ5ICplbnRyaWVzQnlVUkwgPSBfZW50cmllc0J5VVJMOwpJ
bmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVn
aW5JbnN0YW5jZVByb3h5Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQkocmV2aXNpb24g
MjIzMTE2KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2Nh
cGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOTMsMTAgKzI5Myw4
IEBAIHZvaWQgTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpsYXllckgKIAogdm9pZCBOZXRz
Y2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OnN0b3BBbGxTdHJlYW1zKCkKIHsKLSAgICBWZWN0b3I8
UmVmUHRyPEhvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtPj4gc3RyZWFtc0NvcHk7Ci0gICAgY29w
eVZhbHVlc1RvVmVjdG9yKG1fc3RyZWFtcywgc3RyZWFtc0NvcHkpOwotICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgc3RyZWFtc0NvcHkuc2l6ZSgpOyBpKyspCi0gICAgICAgIHN0cmVhbXNDb3B5
W2ldLT5zdG9wKCk7CisgICAgZm9yIChhdXRvJiBzdHJlYW0gOiBjb3B5VG9WZWN0b3IobV9zdHJl
YW1zLnZhbHVlcygpKSkKKyAgICAgICAgc3RyZWFtLT5zdG9wKCk7CiB9CiAKIHZvaWQgTmV0c2Nh
cGVQbHVnaW5JbnN0YW5jZVByb3h5OjpjbGVhbnVwKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNsaWVudC5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFDbGll
bnQubW0JKHJldmlzaW9uIDIyMzExNikKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNsaWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtMTA5LDgg
KzEwOSw3IEBAIFdlYlVzZXJNZWRpYUNsaWVudDo6fldlYlVzZXJNZWRpYUNsaWVudCgKIHZvaWQg
V2ViVXNlck1lZGlhQ2xpZW50OjpwYWdlRGVzdHJveWVkKCkKIHsKICAgICBhdXRvJiByZXF1ZXN0
c01hcCA9IHVzZXJNZWRpYVJlcXVlc3RzTWFwKCk7Ci0gICAgVmVjdG9yPFJldGFpblB0cjxXZWJV
c2VyTWVkaWFQb2xpY3lMaXN0ZW5lcj4+IHBlbmRpbmdSZXF1ZXN0czsKLSAgICBjb3B5VmFsdWVz
VG9WZWN0b3IocmVxdWVzdHNNYXAsIHBlbmRpbmdSZXF1ZXN0cyk7CisgICAgYXV0byBwZW5kaW5n
UmVxdWVzdHMgPSBjb3B5VG9WZWN0b3IocmVxdWVzdHNNYXAudmFsdWVzKCkpOwogICAgIHJlcXVl
c3RzTWFwLmNsZWFyKCk7CiAKICAgICBmb3IgKGF1dG8mIHJlcXVlc3QgOiBwZW5kaW5nUmVxdWVz
dHMpCkBAIC0xMTksOCArMTE4LDcgQEAgdm9pZCBXZWJVc2VyTWVkaWFDbGllbnQ6OnBhZ2VEZXN0
cm95ZWQoKQogICAgIEFTU0VSVCh1c2VyTWVkaWFSZXF1ZXN0c01hcCgpLmlzRW1wdHkoKSk7CiAK
ICAgICBhdXRvJiBjaGVja01hcCA9IHVzZXJNZWRpYUNoZWNrTWFwKCk7Ci0gICAgVmVjdG9yPFJl
dGFpblB0cjxXZWJVc2VyTWVkaWFQb2xpY3lDaGVja2VyTGlzdGVuZXI+PiBwZW5kaW5nQ2hlY2tz
OwotICAgIGNvcHlWYWx1ZXNUb1ZlY3RvcihjaGVja01hcCwgcGVuZGluZ0NoZWNrcyk7CisgICAg
YXV0byBwZW5kaW5nQ2hlY2tzID0gY29weVRvVmVjdG9yKGNoZWNrTWFwLnZhbHVlcygpKTsKICAg
ICBjaGVja01hcC5jbGVhcigpOwogCiAgICAgZm9yIChhdXRvJiBjaGVjayA6IHBlbmRpbmdDaGVj
a3MpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>323309</attachid>
            <date>2017-10-10 08:20:34 -0700</date>
            <delta_ts>2017-10-10 15:13:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178102-20171010082033.patch</filename>
            <type>text/plain</type>
            <size>42323</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjIzMTMxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBA
CisyMDE3LTEwLTEwICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVw
bGFjZSBjb3B5S2V5c1RvVmVjdG9yL2NvcHlWYWx1ZXNUb1ZlY3RvciB3aXRoIGNvcHlUb1ZlY3Rv
cihtYXAua2V5cygpKS9jb3B5VG9WZWN0b3IobWFwLnZhbHVlcygpKQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4MTAyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50OjpjbGVhckluc3BlY3RvckJyZWFrcG9pbnRTdGF0ZSk6CisKIDIwMTctMTAtMTAg
IFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAgVGhlIHByb3RvdHlw
ZSBjYWNoZSBzaG91bGQgYmUgYXdhcmUgb2YgdGhlIEV4ZWN1dGFibGUgaXQgZ2VuZXJhdGVzIGEg
U3RydWN0dXJlIGZvcgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAJKHJl
dmlzaW9uIDIyMzEzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDcxLDkgKzEw
NzEsNyBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmJyZWFrUHJvZ3JhCiB2b2lkIElu
c3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmNsZWFySW5zcGVjdG9yQnJlYWtwb2ludFN0YXRlKCkKIHsK
ICAgICBFcnJvclN0cmluZyBkdW1teUVycm9yOwotICAgIFZlY3RvcjxTdHJpbmc+IGJyZWFrcG9p
bnRJZGVudGlmaWVyczsKLSAgICBjb3B5S2V5c1RvVmVjdG9yKG1fYnJlYWtwb2ludElkZW50aWZp
ZXJUb0RlYnVnU2VydmVyQnJlYWtwb2ludElEcywgYnJlYWtwb2ludElkZW50aWZpZXJzKTsKLSAg
ICBmb3IgKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciA6IGJyZWFrcG9pbnRJZGVudGlmaWVycykK
KyAgICBmb3IgKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciA6IGNvcHlUb1ZlY3RvcihtX2JyZWFr
cG9pbnRJZGVudGlmaWVyVG9EZWJ1Z1NlcnZlckJyZWFrcG9pbnRJRHMua2V5cygpKSkKICAgICAg
ICAgcmVtb3ZlQnJlYWtwb2ludChkdW1teUVycm9yLCBpZGVudGlmaWVyKTsKIAogICAgIG1famF2
YVNjcmlwdEJyZWFrcG9pbnRzLmNsZWFyKCk7CkluZGV4OiBTb3VyY2UvV1RGL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL0NoYW5nZUxvZwkocmV2aXNpb24gMjIzMTMxKQorKysg
U291cmNlL1dURi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAx
Ny0xMC0xMCAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIFJlcGxhY2Ug
Y29weUtleXNUb1ZlY3Rvci9jb3B5VmFsdWVzVG9WZWN0b3Igd2l0aCBjb3B5VG9WZWN0b3IobWFw
LmtleXMoKSkvY29weVRvVmVjdG9yKG1hcC52YWx1ZXMoKSkKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODEwMgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL0hhc2hNYXAuaDoKKyAgICAgICAgKFdU
Rjo6Y29weUtleXNUb1ZlY3Rvcik6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OmNvcHlWYWx1ZXNU
b1ZlY3Rvcik6IERlbGV0ZWQuCisgICAgICAgIAorICAgICAgICAgICAgUmVtb3ZlIGNvcHlLZXlz
VG9WZWN0b3IgYW5kIGNvcHlWYWx1ZXNUb1ZlY3RvciB3aGljaCBhcmUgbm8gbG9uZ2VyIHVzZWQu
CisKIDIwMTctMTAtMDkgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAg
ICAgIFZlY3RvciBzaG91bGQgYmUgYWJsZSB0byBlYXNpbHkgY3JlYXRlIGZyb20gYSBsaXN0IG9m
IG1vdmFibGUgb25seSBpdGVtcwpJbmRleDogU291cmNlL1dURi93dGYvSGFzaE1hcC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0hhc2hNYXAuaAkocmV2aXNpb24gMjIzMTMxKQorKysg
U291cmNlL1dURi93dGYvSGFzaE1hcC5oCSh3b3JraW5nIGNvcHkpCkBAIC01ODksMzIgKzU4OSw2
IEBAIGlubGluZSB2b2lkIGNvcHlUb1ZlY3Rvcihjb25zdCBIYXNoTWFwPFQKICAgICAgICAgdmVj
dG9yW2ldID0geyAoKml0KS5rZXksICgqaXQpLnZhbHVlIH07CiB9CiAKLXRlbXBsYXRlPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFgsIHR5
cGVuYW1lIFk+Ci1pbmxpbmUgdm9pZCBjb3B5S2V5c1RvVmVjdG9yKGNvbnN0IEhhc2hNYXA8VCwg
VSwgViwgVywgWD4mIGNvbGxlY3Rpb24sIFkmIHZlY3RvcikKLXsKLSAgICB0eXBlZGVmIHR5cGVu
YW1lIEhhc2hNYXA8VCwgVSwgViwgVywgWD46OmNvbnN0X2l0ZXJhdG9yOjpLZXlzIGl0ZXJhdG9y
OwotICAgIAotICAgIHZlY3Rvci5yZXNpemUoY29sbGVjdGlvbi5zaXplKCkpOwotICAgIAotICAg
IGl0ZXJhdG9yIGl0ID0gY29sbGVjdGlvbi5iZWdpbigpLmtleXMoKTsKLSAgICBpdGVyYXRvciBl
bmQgPSBjb2xsZWN0aW9uLmVuZCgpLmtleXMoKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
dCAhPSBlbmQ7ICsraXQsICsraSkKLSAgICAgICAgdmVjdG9yW2ldID0gKml0OwotfSAgCi0KLXRl
bXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5
cGVuYW1lIFgsIHR5cGVuYW1lIFk+Ci1pbmxpbmUgdm9pZCBjb3B5VmFsdWVzVG9WZWN0b3IoY29u
c3QgSGFzaE1hcDxULCBVLCBWLCBXLCBYPiYgY29sbGVjdGlvbiwgWSYgdmVjdG9yKQotewotICAg
IHR5cGVkZWYgdHlwZW5hbWUgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6Y29uc3RfaXRlcmF0b3I6
OlZhbHVlcyBpdGVyYXRvcjsKLSAgICAKLSAgICB2ZWN0b3IucmVzaXplKGNvbGxlY3Rpb24uc2l6
ZSgpKTsKLSAgICAKLSAgICBpdGVyYXRvciBpdCA9IGNvbGxlY3Rpb24uYmVnaW4oKS52YWx1ZXMo
KTsKLSAgICBpdGVyYXRvciBlbmQgPSBjb2xsZWN0aW9uLmVuZCgpLnZhbHVlcygpOwotICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGl0ICE9IGVuZDsgKytpdCwgKytpKQotICAgICAgICB2ZWN0b3Jb
aV0gPSAqaXQ7Ci19ICAgCi0KIH0gLy8gbmFtZXNwYWNlIFdURgogCiB1c2luZyBXVEY6Okhhc2hN
YXA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjMxMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0NyBAQAorMjAxNy0xMC0xMCAgU2Ft
IFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIFJlcGxhY2UgY29weUtleXNUb1Zl
Y3Rvci9jb3B5VmFsdWVzVG9WZWN0b3Igd2l0aCBjb3B5VG9WZWN0b3IobWFwLmtleXMoKSkvY29w
eVRvVmVjdG9yKG1hcC52YWx1ZXMoKSkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE3ODEwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbjo6V2F0Y2hlcnM6OmdldE5vdGlmaWVyc1ZlY3Rv
ciBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmNvbm5lY3Rpb25DbG9zZWRGcm9t
U2VydmVyKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlv
blByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCQ29ubmVjdGlvblBy
b3h5Ojpjb25uZWN0aW9uVG9TZXJ2ZXJMb3N0KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2Vy
dmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6aW1tZWRpYXRlQ2xvc2VGb3JVc2VyRGVsZXRlKToKKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhU3RyZWFtOjpnZXRUcmFja3MgY29uc3QpOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJv
bGxlcjo6d2luZG93UHJveGllcyk6CisgICAgICAgICogY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNs
YXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRp
b246Oml0ZW0gY29uc3QpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudDo6cHJlcGFyZUZvckRlc3RydWN0aW9uKToKKyAgICAgICAgKiBkb20v
RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
TWFya2VyQ29udHJvbGxlcjo6cmVtb3ZlTWFya2Vycyk6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3RvcldvcmtlckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvcldvcmtl
ckFnZW50OjpkaXNjb25uZWN0RnJvbUFsbFdvcmtlckluc3BlY3RvclByb3hpZXMpOgorICAgICAg
ICAqIGluc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHA6CisgICAgICAgICogbG9hZGVy
L0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNhbmNlbEFsbCk6CisgICAg
ICAgIChXZWJDb3JlOjpzZXRBbGxEZWZlcnNMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OmFy
ZUFsbExvYWRlcnNQYWdlQ2FjaGVBY2NlcHRhYmxlKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
TWVtb3J5Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5Q2FjaGU6OmZvckVhY2hT
ZXNzaW9uUmVzb3VyY2UpOgorICAgICAgICAqIGxvYWRlci9tYWMvRG9jdW1lbnRMb2FkZXJNYWMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6c2NoZWR1bGVBbGwpOgorICAgICAgICAoV2ViQ29yZTo6
dW5zY2hlZHVsZUFsbCk6CisgICAgICAgICogcGFnZS9SZXNvdXJjZVVzYWdlVGhyZWFkLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlVXNhZ2VUaHJlYWQ6Om5vdGlmeU9ic2VydmVycyk6
CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Qcml2YXRlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtUHJpdmF0ZTo6dHJhY2tzIGNvbnN0KToKKwor
ICAgICAgICAgICAgUmVwbGFjZSBjb3B5S2V5c1RvVmVjdG9yIC8gY29weVZhbHVlc1RvVmVjdG9y
IHdpdGggY29weVRvVmVjdG9yKG1hcC5rZXlzKCkpIC8gY29weVRvVmVjdG9yKG1hcC52YWx1ZXMo
KSkKKwogMjAxNy0xMC0xMCAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAg
ICAgICAgUmVuZGVyT2JqZWN0OjpkZXN0cm95KCkgc2hvdWxkIG9ubHkgYmUgaW52b2tlZCBhZnRl
ciByZW5kZXJlciBoYXMgYmVlbiByZW1vdmVkIGZyb20gdGhlIHRyZWUKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uY3BwCShyZXZp
c2lvbiAyMjMxMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xv
Y2F0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI3LDcgKzEyNyw3IEBAIGJvb2wgR2VvbG9j
YXRpb246OldhdGNoZXJzOjppc0VtcHR5KCkgY28KIAogdm9pZCBHZW9sb2NhdGlvbjo6V2F0Y2hl
cnM6OmdldE5vdGlmaWVyc1ZlY3RvcihHZW9Ob3RpZmllclZlY3RvciYgY29weSkgY29uc3QKIHsK
LSAgICBjb3B5VmFsdWVzVG9WZWN0b3IobV9pZFRvTm90aWZpZXJNYXAsIGNvcHkpOworICAgIGNv
cHkgPSBjb3B5VG9WZWN0b3IobV9pZFRvTm90aWZpZXJNYXAudmFsdWVzKCkpOwogfQogCiBSZWY8
R2VvbG9jYXRpb24+IEdlb2xvY2F0aW9uOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5z
YWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJUcmFuc2FjdGlvbi5jcHAJKHJldmlzaW9uIDIyMzEzMSkKKysrIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTM2OCw5ICsxMzY4LDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6Y29ubmVjdGlvbkNsb3NlZEZy
bwogCiAgICAgYWJvcnRJblByb2dyZXNzT3BlcmF0aW9ucyhlcnJvcik7CiAKLSAgICBWZWN0b3I8
UmVmUHRyPElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24+PiBvcGVyYXRpb25zOwotICAg
IGNvcHlWYWx1ZXNUb1ZlY3RvcihtX3RyYW5zYWN0aW9uT3BlcmF0aW9uTWFwLCBvcGVyYXRpb25z
KTsKLQorICAgIGF1dG8gb3BlcmF0aW9ucyA9IGNvcHlUb1ZlY3RvcihtX3RyYW5zYWN0aW9uT3Bl
cmF0aW9uTWFwLnZhbHVlcygpKTsKICAgICBmb3IgKGF1dG8mIG9wZXJhdGlvbiA6IG9wZXJhdGlv
bnMpIHsKICAgICAgICAgbV9jdXJyZW50bHlDb21wbGV0aW5nUmVxdWVzdCA9IG51bGxwdHI7CiAg
ICAgICAgIG1fdHJhbnNhY3Rpb25PcGVyYXRpb25zSW5Qcm9ncmVzc1F1ZXVlLmFwcGVuZChvcGVy
YXRpb24uZ2V0KCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xp
ZW50L0lEQkNvbm5lY3Rpb25Qcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Qcm94eS5jcHAJKHJldmlzaW9u
IDIyMzEzMSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJD
b25uZWN0aW9uUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MjIsNyArNDIyLDcgQEAgdm9p
ZCBJREJDb25uZWN0aW9uUHJveHk6OmNvbm5lY3Rpb25Ub1NlcgogICAgIFZlY3Rvcjx1aW50NjRf
dD4gZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcnM7CiAgICAgewogICAgICAgICBMb2NrZXI8
TG9jaz4gbG9ja2VyKG1fZGF0YWJhc2VDb25uZWN0aW9uTWFwTG9jayk7Ci0gICAgICAgIGNvcHlL
ZXlzVG9WZWN0b3IobV9kYXRhYmFzZUNvbm5lY3Rpb25NYXAsIGRhdGFiYXNlQ29ubmVjdGlvbklk
ZW50aWZpZXJzKTsKKyAgICAgICAgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcnMgPSBjb3B5
VG9WZWN0b3IobV9kYXRhYmFzZUNvbm5lY3Rpb25NYXAua2V5cygpKTsKICAgICB9CiAKICAgICBm
b3IgKGF1dG8gY29ubmVjdGlvbklkZW50aWZpZXIgOiBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlm
aWVycykgewpAQCAtNDQxLDcgKzQ0MSw3IEBAIHZvaWQgSURCQ29ubmVjdGlvblByb3h5Ojpjb25u
ZWN0aW9uVG9TZXIKICAgICBWZWN0b3I8SURCUmVzb3VyY2VJZGVudGlmaWVyPiBvcGVuREJSZXF1
ZXN0SWRlbnRpZmllcnM7CiAgICAgewogICAgICAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKG1fb3Bl
bkRCUmVxdWVzdE1hcExvY2spOwotICAgICAgICBjb3B5S2V5c1RvVmVjdG9yKG1fb3BlbkRCUmVx
dWVzdE1hcCwgb3BlbkRCUmVxdWVzdElkZW50aWZpZXJzKTsKKyAgICAgICAgb3BlbkRCUmVxdWVz
dElkZW50aWZpZXJzID0gY29weVRvVmVjdG9yKG1fb3BlbkRCUmVxdWVzdE1hcC5rZXlzKCkpOwog
ICAgIH0KIAogICAgIGZvciAoYXV0byYgcmVxdWVzdElkZW50aWZpZXIgOiBvcGVuREJSZXF1ZXN0
SWRlbnRpZmllcnMpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcAkocmV2aXNpb24g
MjIzMTMxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1
ZUlEQkRhdGFiYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgxMyw5ICsxODEzLDcgQEAgdm9p
ZCBVbmlxdWVJREJEYXRhYmFzZTo6aW1tZWRpYXRlQ2xvc2VGbwogICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CiAKICAgICAvLyBFcnJvciBvdXQgYWxsIHRyYW5zYWN0aW9ucwotICAgIFZlY3Rv
cjxJREJSZXNvdXJjZUlkZW50aWZpZXI+IGluUHJvZ3Jlc3NJZGVudGlmaWVyczsKLSAgICBjb3B5
S2V5c1RvVmVjdG9yKG1faW5Qcm9ncmVzc1RyYW5zYWN0aW9ucywgaW5Qcm9ncmVzc0lkZW50aWZp
ZXJzKTsKLSAgICBmb3IgKGF1dG8mIGlkZW50aWZpZXIgOiBpblByb2dyZXNzSWRlbnRpZmllcnMp
CisgICAgZm9yIChhdXRvJiBpZGVudGlmaWVyIDogY29weVRvVmVjdG9yKG1faW5Qcm9ncmVzc1Ry
YW5zYWN0aW9ucy5rZXlzKCkpKQogICAgICAgICBtX2luUHJvZ3Jlc3NUcmFuc2FjdGlvbnMuZ2V0
KGlkZW50aWZpZXIpLT5hYm9ydFdpdGhvdXRDYWxsYmFjaygpOwogCiAgICAgQVNTRVJUKG1faW5Q
cm9ncmVzc1RyYW5zYWN0aW9ucy5pc0VtcHR5KCkpOwpAQCAtMTgyNSwyOCArMTgyMywyMCBAQCB2
b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjppbW1lZGlhdGVDbG9zZUZvCiAgICAgbV9vYmplY3RTdG9y
ZVdyaXRlVHJhbnNhY3Rpb25zLmNsZWFyKCk7CiAKICAgICAvLyBFcnJvciBvdXQgYWxsIHBlbmRp
bmcgY2FsbGJhY2tzCi0gICAgVmVjdG9yPHVpbnQ2NF90PiBjYWxsYmFja0lkZW50aWZpZXJzOwog
ICAgIElEQkVycm9yIGVycm9yID0gSURCRXJyb3I6OnVzZXJEZWxldGVFcnJvcigpOwogICAgIElE
QktleURhdGEga2V5RGF0YTsKICAgICBJREJHZXRSZXN1bHQgZ2V0UmVzdWx0OwogCi0gICAgY29w
eUtleXNUb1ZlY3RvcihtX2Vycm9yQ2FsbGJhY2tzLCBjYWxsYmFja0lkZW50aWZpZXJzKTsKLSAg
ICBmb3IgKGF1dG8gaWRlbnRpZmllciA6IGNhbGxiYWNrSWRlbnRpZmllcnMpCisgICAgZm9yIChh
dXRvIGlkZW50aWZpZXIgOiBjb3B5VG9WZWN0b3IobV9lcnJvckNhbGxiYWNrcy5rZXlzKCkpKQog
ICAgICAgICBwZXJmb3JtRXJyb3JDYWxsYmFjayhpZGVudGlmaWVyLCBlcnJvcik7CiAKLSAgICBj
YWxsYmFja0lkZW50aWZpZXJzLmNsZWFyKCk7Ci0gICAgY29weUtleXNUb1ZlY3RvcihtX2tleURh
dGFDYWxsYmFja3MsIGNhbGxiYWNrSWRlbnRpZmllcnMpOwotICAgIGZvciAoYXV0byBpZGVudGlm
aWVyIDogY2FsbGJhY2tJZGVudGlmaWVycykKKyAgICBmb3IgKGF1dG8gaWRlbnRpZmllciA6IGNv
cHlUb1ZlY3RvcihtX2tleURhdGFDYWxsYmFja3Mua2V5cygpKSkKICAgICAgICAgcGVyZm9ybUtl
eURhdGFDYWxsYmFjayhpZGVudGlmaWVyLCBlcnJvciwga2V5RGF0YSk7CiAKLSAgICBjYWxsYmFj
a0lkZW50aWZpZXJzLmNsZWFyKCk7Ci0gICAgY29weUtleXNUb1ZlY3RvcihtX2dldFJlc3VsdENh
bGxiYWNrcywgY2FsbGJhY2tJZGVudGlmaWVycyk7Ci0gICAgZm9yIChhdXRvIGlkZW50aWZpZXIg
OiBjYWxsYmFja0lkZW50aWZpZXJzKQorICAgIGZvciAoYXV0byBpZGVudGlmaWVyIDogY29weVRv
VmVjdG9yKG1fZ2V0UmVzdWx0Q2FsbGJhY2tzLmtleXMoKSkpCiAgICAgICAgIHBlcmZvcm1HZXRS
ZXN1bHRDYWxsYmFjayhpZGVudGlmaWVyLCBlcnJvciwgZ2V0UmVzdWx0KTsKIAotICAgIGNhbGxi
YWNrSWRlbnRpZmllcnMuY2xlYXIoKTsKLSAgICBjb3B5S2V5c1RvVmVjdG9yKG1fY291bnRDYWxs
YmFja3MsIGNhbGxiYWNrSWRlbnRpZmllcnMpOwotICAgIGZvciAoYXV0byBpZGVudGlmaWVyIDog
Y2FsbGJhY2tJZGVudGlmaWVycykKKyAgICBmb3IgKGF1dG8gaWRlbnRpZmllciA6IGNvcHlUb1Zl
Y3RvcihtX2NvdW50Q2FsbGJhY2tzLmtleXMoKSkpCiAgICAgICAgIHBlcmZvcm1Db3VudENhbGxi
YWNrKGlkZW50aWZpZXIsIGVycm9yLCAwKTsKIAogICAgIC8vIEVycm9yIG91dCBhbGwgSURCT3Bl
bkRCUmVxdWVzdHMKQEAgLTE4NjEsNyArMTg1MSw3IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6
OmltbWVkaWF0ZUNsb3NlRm8KICAgICBtX3BlbmRpbmdPcGVuREJSZXF1ZXN0cy5jbGVhcigpOwog
CiAgICAgLy8gQ2xvc2UgYWxsIG9wZW4gY29ubmVjdGlvbnMKLSAgICBMaXN0SGFzaFNldDxSZWZQ
dHI8VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uPj4gb3BlbkRhdGFiYXNlQ29ubmVjdGlvbnMg
PSBtX29wZW5EYXRhYmFzZUNvbm5lY3Rpb25zOworICAgIGF1dG8gb3BlbkRhdGFiYXNlQ29ubmVj
dGlvbnMgPSBtX29wZW5EYXRhYmFzZUNvbm5lY3Rpb25zOwogICAgIGZvciAoYXV0byYgY29ubmVj
dGlvbiA6IG9wZW5EYXRhYmFzZUNvbm5lY3Rpb25zKQogICAgICAgICBjb25uZWN0aW9uQ2xvc2Vk
RnJvbVNlcnZlcigqY29ubmVjdGlvbik7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uY3BwCShyZXZpc2lvbiAyMjMxMzEpCisr
KyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTc3LDExICsxNzcsNyBAQCBNZWRpYVN0cmVhbVRyYWNrVmVjdG9yIE1l
ZGlhU3RyZWFtOjpnZXRWCiAKIE1lZGlhU3RyZWFtVHJhY2tWZWN0b3IgTWVkaWFTdHJlYW06Omdl
dFRyYWNrcygpIGNvbnN0CiB7Ci0gICAgTWVkaWFTdHJlYW1UcmFja1ZlY3RvciB0cmFja3M7Ci0g
ICAgdHJhY2tzLnJlc2VydmVDYXBhY2l0eShtX3RyYWNrU2V0LnNpemUoKSk7Ci0gICAgY29weVZh
bHVlc1RvVmVjdG9yKG1fdHJhY2tTZXQsIHRyYWNrcyk7Ci0KLSAgICByZXR1cm4gdHJhY2tzOwor
ICAgIHJldHVybiBjb3B5VG9WZWN0b3IobV90cmFja1NldC52YWx1ZXMoKSk7CiB9CiAKIHZvaWQg
TWVkaWFTdHJlYW06OnRyYWNrRGlkRW5kKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyMjMxMzEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjgxLDkgKzI4MSw3IEBAIFJlZjxET01XcmFwcGVyV29ybGQ+IFNjcmlwdENvbnRyb2xs
ZXI6OmMKIAogVmVjdG9yPEpTQzo6U3Ryb25nPEpTRE9NV2luZG93UHJveHk+PiBTY3JpcHRDb250
cm9sbGVyOjp3aW5kb3dQcm94aWVzKCkKIHsKLSAgICBWZWN0b3I8SlNDOjpTdHJvbmc8SlNET01X
aW5kb3dQcm94eT4+IHdpbmRvd1Byb3hpZXM7Ci0gICAgY29weVZhbHVlc1RvVmVjdG9yKG1fd2lu
ZG93UHJveGllcywgd2luZG93UHJveGllcyk7Ci0gICAgcmV0dXJuIHdpbmRvd1Byb3hpZXM7Cisg
ICAgcmV0dXJuIGNvcHlUb1ZlY3RvcihtX3dpbmRvd1Byb3hpZXMudmFsdWVzKCkpOwogfQogCiB2
b2lkIFNjcmlwdENvbnRyb2xsZXI6OmdldEFsbFdvcmxkcyhWZWN0b3I8UmVmPERPTVdyYXBwZXJX
b3JsZD4+JiB3b3JsZHMpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHls
ZURlY2xhcmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29t
cHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAkocmV2aXNpb24gMjIzMTMxKQorKysgU291cmNlL1dl
YkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQwOTUsOSArNDA5NSw4IEBAIFN0cmluZyBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246
Oml0ZW0KICAgICBjb25zdCBhdXRvJiBjdXN0b21Qcm9wZXJ0aWVzID0gc3R5bGUtPmN1c3RvbVBy
b3BlcnRpZXMoKTsKICAgICBpZiAoaW5kZXggPj0gY3VzdG9tUHJvcGVydGllcy5zaXplKCkpCiAg
ICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICAKLSAgICBWZWN0b3I8U3RyaW5nLCA0PiByZXN1
bHRzOwotICAgIGNvcHlLZXlzVG9WZWN0b3IoY3VzdG9tUHJvcGVydGllcywgcmVzdWx0cyk7CisK
KyAgICBhdXRvIHJlc3VsdHMgPSBjb3B5VG9WZWN0b3IoY3VzdG9tUHJvcGVydGllcy5rZXlzKCkp
OwogICAgIHJldHVybiByZXN1bHRzLmF0KGluZGV4KTsKIH0KIApJbmRleDogU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwCShyZXZpc2lvbiAyMjMxMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzM4LDkgKzIzMzgsNyBAQCB2b2lkIERvY3VtZW50
OjpwcmVwYXJlRm9yRGVzdHJ1Y3Rpb24oKQogCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNL
X1RBUkdFVCkKICAgICBpZiAoIW1fY2xpZW50VG9JRE1hcC5pc0VtcHR5KCkgJiYgcGFnZSgpKSB7
Ci0gICAgICAgIFZlY3RvcjxXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q2xpZW50Kj4gY2xp
ZW50czsKLSAgICAgICAgY29weUtleXNUb1ZlY3RvcihtX2NsaWVudFRvSURNYXAsIGNsaWVudHMp
OwotICAgICAgICBmb3IgKGF1dG8qIGNsaWVudCA6IGNsaWVudHMpCisgICAgICAgIGZvciAoYXV0
byogY2xpZW50IDogY29weVRvVmVjdG9yKG1fY2xpZW50VG9JRE1hcC5rZXlzKCkpKQogICAgICAg
ICAgICAgcmVtb3ZlUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQoKmNsaWVudCk7CiAgICAgfQog
I2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250
cm9sbGVyLmNwcAkocmV2aXNpb24gMjIzMTMxKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50TWFya2VyQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU3Miw3ICs1NzIsNyBA
QCB2b2lkIERvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6cmVtb3ZlTWFyCiAgICAgICAgIHJldHVy
bjsKICAgICBBU1NFUlQoIW1fbWFya2Vycy5pc0VtcHR5KCkpOwogICAgIAotICAgIE1hcmtlck1h
cDo6aXRlcmF0b3IgaXRlcmF0b3IgPSBtX21hcmtlcnMuZmluZChub2RlKTsKKyAgICBhdXRvIGl0
ZXJhdG9yID0gbV9tYXJrZXJzLmZpbmQobm9kZSk7CiAgICAgaWYgKGl0ZXJhdG9yICE9IG1fbWFy
a2Vycy5lbmQoKSkKICAgICAgICAgcmVtb3ZlTWFya2Vyc0Zyb21MaXN0KGl0ZXJhdG9yLCBtYXJr
ZXJUeXBlcyk7CiB9CkBAIC01ODMsOSArNTgzLDcgQEAgdm9pZCBEb2N1bWVudE1hcmtlckNvbnRy
b2xsZXI6OnJlbW92ZU1hcgogICAgICAgICByZXR1cm47CiAgICAgQVNTRVJUKCFtX21hcmtlcnMu
aXNFbXB0eSgpKTsKIAotICAgIFZlY3RvcjxSZWZQdHI8Tm9kZT4+IG5vZGVzV2l0aE1hcmtlcnM7
Ci0gICAgY29weUtleXNUb1ZlY3RvcihtX21hcmtlcnMsIG5vZGVzV2l0aE1hcmtlcnMpOwotICAg
IGZvciAoYXV0byYgbm9kZSA6IG5vZGVzV2l0aE1hcmtlcnMpIHsKKyAgICBmb3IgKGF1dG8mIG5v
ZGUgOiBjb3B5VG9WZWN0b3IobV9tYXJrZXJzLmtleXMoKSkpIHsKICAgICAgICAgYXV0byBpdGVy
YXRvciA9IG1fbWFya2Vycy5maW5kKG5vZGUpOwogICAgICAgICBpZiAoaXRlcmF0b3IgIT0gbV9t
YXJrZXJzLmVuZCgpKQogICAgICAgICAgICAgcmVtb3ZlTWFya2Vyc0Zyb21MaXN0KGl0ZXJhdG9y
LCBtYXJrZXJUeXBlcyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
V29ya2VyQWdlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JXb3JrZXJBZ2VudC5jcHAJKHJldmlzaW9uIDIyMzEzMSkKKysrIFNvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE0NSw5ICsxNDUsNyBAQCB2b2lkIEluc3BlY3RvcldvcmtlckFnZW50Ojpjb25uZWN0VG9BbGxX
CiAKIHZvaWQgSW5zcGVjdG9yV29ya2VyQWdlbnQ6OmRpc2Nvbm5lY3RGcm9tQWxsV29ya2VySW5z
cGVjdG9yUHJveGllcygpCiB7Ci0gICAgVmVjdG9yPFdvcmtlckluc3BlY3RvclByb3h5Kj4gcHJv
eGllczsKLSAgICBjb3B5VmFsdWVzVG9WZWN0b3IobV9jb25uZWN0ZWRQcm94aWVzLCBwcm94aWVz
KTsKLSAgICBmb3IgKGF1dG8qIHByb3h5IDogcHJveGllcykKKyAgICBmb3IgKGF1dG8qIHByb3h5
IDogY29weVRvVmVjdG9yKG1fY29ubmVjdGVkUHJveGllcy52YWx1ZXMoKSkpCiAgICAgICAgIHBy
b3h5LT5kaXNjb25uZWN0RnJvbVdvcmtlckluc3BlY3RvckNvbnRyb2xsZXIoKTsKIAogICAgIG1f
Y29ubmVjdGVkUHJveGllcy5jbGVhcigpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCShyZXZpc2lvbiAyMjMxMzEpCisrKyBT
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNjIsOSArMjYyLDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6Y2xl
YXIoY29uc3QgUwogCiBWZWN0b3I8TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YSo+
IE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpyZXNvdXJjZXMoKQogewotICAgIFZlY3RvcjxOZXR3b3Jr
UmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhKj4gcmVzb3VyY2VzOwotICAgIGNvcHlWYWx1ZXNU
b1ZlY3RvcihtX3JlcXVlc3RJZFRvUmVzb3VyY2VEYXRhTWFwLCByZXNvdXJjZXMpOwotICAgIHJl
dHVybiByZXNvdXJjZXM7CisgICAgcmV0dXJuIGNvcHlUb1ZlY3RvcihtX3JlcXVlc3RJZFRvUmVz
b3VyY2VEYXRhTWFwLnZhbHVlcygpKTsKIH0KIAogTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291
cmNlRGF0YSogTmV0d29ya1Jlc291cmNlc0RhdGE6OnJlc291cmNlRGF0YUZvclJlcXVlc3RJZChj
b25zdCBTdHJpbmcmIHJlcXVlc3RJZCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudExvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3Vt
ZW50TG9hZGVyLmNwcAkocmV2aXNpb24gMjIzMTMxKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVy
L0RvY3VtZW50TG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAwLDI1ICsxMDAsMTkgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgdm9pZCBjYW5jZWxBbGwoY29uc3QgUmVzb3Vy
Y2VMb2FkZXJNYXAmIGxvYWRlcnMpCiB7Ci0gICAgVmVjdG9yPFJlZlB0cjxSZXNvdXJjZUxvYWRl
cj4+IGxvYWRlcnNDb3B5OwotICAgIGNvcHlWYWx1ZXNUb1ZlY3Rvcihsb2FkZXJzLCBsb2FkZXJz
Q29weSk7Ci0gICAgZm9yIChhdXRvJiBsb2FkZXIgOiBsb2FkZXJzQ29weSkKKyAgICBmb3IgKGF1
dG8mIGxvYWRlciA6IGNvcHlUb1ZlY3Rvcihsb2FkZXJzLnZhbHVlcygpKSkKICAgICAgICAgbG9h
ZGVyLT5jYW5jZWwoKTsKIH0KIAogc3RhdGljIHZvaWQgc2V0QWxsRGVmZXJzTG9hZGluZyhjb25z
dCBSZXNvdXJjZUxvYWRlck1hcCYgbG9hZGVycywgYm9vbCBkZWZlcnMpCiB7Ci0gICAgVmVjdG9y
PFJlZlB0cjxSZXNvdXJjZUxvYWRlcj4+IGxvYWRlcnNDb3B5OwotICAgIGNvcHlWYWx1ZXNUb1Zl
Y3Rvcihsb2FkZXJzLCBsb2FkZXJzQ29weSk7Ci0gICAgZm9yIChhdXRvJiBsb2FkZXIgOiBsb2Fk
ZXJzQ29weSkKKyAgICBmb3IgKGF1dG8mIGxvYWRlciA6IGNvcHlUb1ZlY3Rvcihsb2FkZXJzLnZh
bHVlcygpKSkKICAgICAgICAgbG9hZGVyLT5zZXREZWZlcnNMb2FkaW5nKGRlZmVycyk7CiB9CiAK
IHN0YXRpYyBib29sIGFyZUFsbExvYWRlcnNQYWdlQ2FjaGVBY2NlcHRhYmxlKGNvbnN0IFJlc291
cmNlTG9hZGVyTWFwJiBsb2FkZXJzKQogewotICAgIFZlY3RvcjxSZWZQdHI8UmVzb3VyY2VMb2Fk
ZXI+PiBsb2FkZXJzQ29weTsKLSAgICBjb3B5VmFsdWVzVG9WZWN0b3IobG9hZGVycywgbG9hZGVy
c0NvcHkpOwotICAgIGZvciAoYXV0byYgbG9hZGVyIDogbG9hZGVyc0NvcHkpIHsKKyAgICBmb3Ig
KGF1dG8mIGxvYWRlciA6IGNvcHlUb1ZlY3Rvcihsb2FkZXJzLnZhbHVlcygpKSkgewogICAgICAg
ICBpZiAoIWxvYWRlci0+ZnJhbWVMb2FkZXIoKSB8fCAhbG9hZGVyLT5mcmFtZUxvYWRlcigpLT5m
cmFtZSgpLnBhZ2UoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIApJbmRleDogU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwCShyZXZpc2lvbiAyMjMxMzEp
CisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNzgsMTAgKzI3OCw3IEBAIHZvaWQgTWVtb3J5Q2FjaGU6OmZvckVhY2hTZXNz
aW9uUmVzb3VyY2UKICAgICBpZiAoaXQgPT0gbV9zZXNzaW9uUmVzb3VyY2VzLmVuZCgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBWZWN0b3I8Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVz
b3VyY2U+PiByZXNvdXJjZXNGb3JTZXNzaW9uOwotICAgIGNvcHlWYWx1ZXNUb1ZlY3RvcigqaXQt
PnZhbHVlLCByZXNvdXJjZXNGb3JTZXNzaW9uKTsKLQotICAgIGZvciAoYXV0byYgcmVzb3VyY2Ug
OiByZXNvdXJjZXNGb3JTZXNzaW9uKQorICAgIGZvciAoYXV0byYgcmVzb3VyY2UgOiBjb3B5VG9W
ZWN0b3IoaXQtPnZhbHVlLT52YWx1ZXMoKSkpCiAgICAgICAgIGZ1bmN0aW9uKCpyZXNvdXJjZSk7
CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9tYWMvRG9jdW1lbnRMb2FkZXJNYWMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9tYWMvRG9jdW1lbnRMb2Fk
ZXJNYWMuY3BwCShyZXZpc2lvbiAyMjMxMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvbWFj
L0RvY3VtZW50TG9hZGVyTWFjLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsMTcgKzM3LDEzIEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIHZvaWQgc2NoZWR1bGVBbGwoY29uc3QgUmVz
b3VyY2VMb2FkZXJNYXAmIGxvYWRlcnMsIFNjaGVkdWxlUGFpciYgcGFpcikKIHsKLSAgICBWZWN0
b3I8UmVmUHRyPFJlc291cmNlTG9hZGVyPj4gbG9hZGVyc0NvcHk7Ci0gICAgY29weVZhbHVlc1Rv
VmVjdG9yKGxvYWRlcnMsIGxvYWRlcnNDb3B5KTsKLSAgICBmb3IgKGF1dG8mIGxvYWRlciA6IGxv
YWRlcnNDb3B5KQorICAgIGZvciAoYXV0byYgbG9hZGVyIDogY29weVRvVmVjdG9yKGxvYWRlcnMu
dmFsdWVzKCkpKQogICAgICAgICBsb2FkZXItPnNjaGVkdWxlKHBhaXIpOwogfQogCiBzdGF0aWMg
dm9pZCB1bnNjaGVkdWxlQWxsKGNvbnN0IFJlc291cmNlTG9hZGVyTWFwJiBsb2FkZXJzLCBTY2hl
ZHVsZVBhaXImIHBhaXIpCiB7Ci0gICAgVmVjdG9yPFJlZlB0cjxSZXNvdXJjZUxvYWRlcj4+IGxv
YWRlcnNDb3B5OwotICAgIGNvcHlWYWx1ZXNUb1ZlY3Rvcihsb2FkZXJzLCBsb2FkZXJzQ29weSk7
Ci0gICAgZm9yIChhdXRvJiBsb2FkZXIgOiBsb2FkZXJzQ29weSkKKyAgICBmb3IgKGF1dG8mIGxv
YWRlciA6IGNvcHlUb1ZlY3Rvcihsb2FkZXJzLnZhbHVlcygpKSkKICAgICAgICAgbG9hZGVyLT51
bnNjaGVkdWxlKHBhaXIpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1Jlc291cmNl
VXNhZ2VUaHJlYWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUmVzb3Vy
Y2VVc2FnZVRocmVhZC5jcHAJKHJldmlzaW9uIDIyMzEzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvUmVzb3VyY2VVc2FnZVRocmVhZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg2LDcgKzg2LDcg
QEAgdm9pZCBSZXNvdXJjZVVzYWdlVGhyZWFkOjpub3RpZnlPYnNlcnZlcgogICAgICAgICB7CiAg
ICAgICAgICAgICBhdXRvJiByZXNvdXJjZVVzYWdlVGhyZWFkID0gUmVzb3VyY2VVc2FnZVRocmVh
ZDo6c2luZ2xldG9uKCk7CiAgICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihyZXNvdXJjZVVz
YWdlVGhyZWFkLm1fbG9jayk7Ci0gICAgICAgICAgICBjb3B5VmFsdWVzVG9WZWN0b3IocmVzb3Vy
Y2VVc2FnZVRocmVhZC5tX29ic2VydmVycywgZnVuY3Rpb25zKTsKKyAgICAgICAgICAgIGZ1bmN0
aW9ucyA9IGNvcHlUb1ZlY3RvcihyZXNvdXJjZVVzYWdlVGhyZWFkLm1fb2JzZXJ2ZXJzLnZhbHVl
cygpKTsKICAgICAgICAgfQogCiAgICAgICAgIGZvciAoYXV0byYgZnVuY3Rpb24gOiBmdW5jdGlv
bnMpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVh
bVByaXZhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL01lZGlhU3RyZWFtUHJpdmF0ZS5jcHAJKHJldmlzaW9uIDIyMzEzMSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUHJpdmF0ZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTkxLDExICs5MSw3IEBAIHZvaWQgTWVkaWFTdHJlYW1Qcml2YXRlOjpy
ZW1vdmVPYnNlcnZlcigKIAogTWVkaWFTdHJlYW1UcmFja1ByaXZhdGVWZWN0b3IgTWVkaWFTdHJl
YW1Qcml2YXRlOjp0cmFja3MoKSBjb25zdAogewotICAgIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRl
VmVjdG9yIHRyYWNrczsKLSAgICB0cmFja3MucmVzZXJ2ZUNhcGFjaXR5KG1fdHJhY2tTZXQuc2l6
ZSgpKTsKLSAgICBjb3B5VmFsdWVzVG9WZWN0b3IobV90cmFja1NldCwgdHJhY2tzKTsKLQotICAg
IHJldHVybiB0cmFja3M7CisgICAgcmV0dXJuIGNvcHlUb1ZlY3RvcihtX3RyYWNrU2V0LnZhbHVl
cygpKTsKIH0KIAogdm9pZCBNZWRpYVN0cmVhbVByaXZhdGU6OnVwZGF0ZUFjdGl2ZVN0YXRlKE5v
dGlmeUNsaWVudE9wdGlvbiBub3RpZnlDbGllbnRPcHRpb24pCkluZGV4OiBTb3VyY2UvV2ViRHJp
dmVyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxvZwko
cmV2aXNpb24gMjIzMTMxKQorKysgU291cmNlL1dlYkRyaXZlci9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxNy0xMC0xMCAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJr
aXQub3JnPgorCisgICAgICAgIFJlcGxhY2UgY29weUtleXNUb1ZlY3Rvci9jb3B5VmFsdWVzVG9W
ZWN0b3Igd2l0aCBjb3B5VG9WZWN0b3IobWFwLmtleXMoKSkvY29weVRvVmVjdG9yKG1hcC52YWx1
ZXMoKSkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
ODEwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
U2Vzc2lvbkhvc3QuY3BwOgorICAgICAgICAoV2ViRHJpdmVyOjpTZXNzaW9uSG9zdDo6aW5zcGVj
dG9yRGlzY29ubmVjdGVkKToKKwogMjAxNy0xMC0wMiAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxj
Z2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgV2ViRHJpdmVyOiBIVFRQIHN0YXR1cyBjb2Rl
IGlzIG5vdCBjb3JyZWN0IGZvciBzb21lIG9mIHRoZSBlcnJvcnMKSW5kZXg6IFNvdXJjZS9XZWJE
cml2ZXIvU2Vzc2lvbkhvc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJEcml2ZXIvU2Vz
c2lvbkhvc3QuY3BwCShyZXZpc2lvbiAyMjMxMzEpCisrKyBTb3VyY2UvV2ViRHJpdmVyL1Nlc3Np
b25Ib3N0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsOSArMzYsNyBAQCBuYW1lc3BhY2UgV2Vi
RHJpdmVyIHsKIHZvaWQgU2Vzc2lvbkhvc3Q6Omluc3BlY3RvckRpc2Nvbm5lY3RlZCgpCiB7CiAg
ICAgLy8gQnJvd3NlciBjbG9zZWQgb3IgY3Jhc2hlZCwgZmluaXNoIGFsbCBwZW5kaW5nIGNvbW1h
bmRzIHdpdGggZXJyb3IuCi0gICAgVmVjdG9yPGxvbmc+IG1lc3NhZ2VzOwotICAgIGNvcHlLZXlz
VG9WZWN0b3IobV9jb21tYW5kUmVxdWVzdHMsIG1lc3NhZ2VzKTsKLSAgICBmb3IgKGF1dG8gbWVz
c2FnZUlEIDogbWVzc2FnZXMpIHsKKyAgICBmb3IgKGF1dG8gbWVzc2FnZUlEIDogY29weVRvVmVj
dG9yKG1fY29tbWFuZFJlcXVlc3RzLmtleXMoKSkpIHsKICAgICAgICAgYXV0byByZXNwb25zZUhh
bmRsZXIgPSBtX2NvbW1hbmRSZXF1ZXN0cy50YWtlKG1lc3NhZ2VJRCk7CiAgICAgICAgIHJlc3Bv
bnNlSGFuZGxlcih7IG51bGxwdHIsIHRydWUgfSk7CiAgICAgfQpJbmRleDogU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlz
aW9uIDIyMzEzMSkKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDMgQEAKKzIwMTctMTAtMTAgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4K
KworICAgICAgICBSZXBsYWNlIGNvcHlLZXlzVG9WZWN0b3IvY29weVZhbHVlc1RvVmVjdG9yIHdp
dGggY29weVRvVmVjdG9yKG1hcC5rZXlzKCkpL2NvcHlUb1ZlY3RvcihtYXAudmFsdWVzKCkpCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzgxMDIKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZENsb3NlKToKKyAgICAgICAgKiBT
aGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tOgorICAg
ICAgICAoV2ViS2l0OjpkdW1wQ2hhbmdlZExheWVycyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwOgorICAgICAgICAod2Via2l0V2ViQ29udGV4dElu
dmFsaWRhdGVDdXN0b21Qcm90b2NvbFJlcXVlc3RzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHA6CisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZUNv
bnRhaW5lckZvcmFsbCk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dLV2ViVmlld0NvbnRl
bnRQcm92aWRlclJlZ2lzdHJ5Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXdDb250ZW50UHJvdmlk
ZXJSZWdpc3RyeSBfbWltZVR5cGVzV2l0aEN1c3RvbUNvbnRlbnRQcm92aWRlcnNdKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvR2VuZXJpY0NhbGxiYWNrLmg6CisgICAgICAgIChXZWJLaXQ6OmludmFs
aWRhdGVDYWxsYmFja01hcCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6c2h1dERvd24pOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmRpZENsb3NlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc1Byb3h5OjpkaWRCZWNvbWVVbnJlc3BvbnNpdmUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzUHJveHk6OmRpZEJlY29tZVJlc3BvbnNpdmUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzUHJveHk6OndpbGxDaGFuZ2VJc1Jlc3BvbnNpdmUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzUHJveHk6OmRpZENoYW5nZUlzUmVzcG9uc2l2ZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6ZGlzY29ubmVjdEZyYW1lc0Zyb21QYWdlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpmcmFtZUNvdW50SW5QYWdlIGNvbnN0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpyZXF1ZXN0VGVybWluYXRpb24pOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUFJ1bnRpbWVPYmplY3RNYXAuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpOUFJ1bnRpbWVPYmplY3RNYXA6OmludmFsaWRhdGUpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpzdG9wQWxsU3RyZWFtcyk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0OjpQ
bHVnaW5WaWV3OjpjYW5jZWxBbGxTdHJlYW1zKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUNvbnRleHQubW06CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUxheWVyVHJlZUNvbnRleHQ6OmJ1aWxkVHJhbnNhY3Rpb24pOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3M6OmRpZENsb3NlKToKKwogMjAxNy0xMC0xMCAgQWRyaWFuIFBlcmV6IGRlIENhc3RybyAgPGFw
ZXJlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtXUEVdIEJ1aWxkIGZhaWx1cmUgZHVlIHRvIGlu
dmFsaWQgY2FzdCBvZiBFR0xOYXRpdmVXaW5kb3dUeXBlIHdoZW4gdGFyZ2V0dGluZyA2NC1iaXQg
QVJNCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAkocmV2aXNpb24gMjIzMTMxKQor
KysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2OCw5ICsxNjgsNyBAQCB2b2lkIE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRDCiAgICAgLy8gUHJvdGVjdCBvdXJzZWxmIGFzIHdl
IG1pZ2h0IGJlIG90aGVyd2lzZSBiZSBkZWxldGVkIGR1cmluZyB0aGlzIGZ1bmN0aW9uLgogICAg
IFJlZjxOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gcHJvdGVjdG9yKCp0aGlzKTsKIAot
ICAgIFZlY3RvcjxSZWZQdHI8TmV0d29ya1Jlc291cmNlTG9hZGVyPj4gbG9hZGVyczsKLSAgICBj
b3B5VmFsdWVzVG9WZWN0b3IobV9uZXR3b3JrUmVzb3VyY2VMb2FkZXJzLCBsb2FkZXJzKTsKLSAg
ICBmb3IgKGF1dG8mIGxvYWRlciA6IGxvYWRlcnMpCisgICAgZm9yIChhdXRvJiBsb2FkZXIgOiBj
b3B5VG9WZWN0b3IobV9uZXR3b3JrUmVzb3VyY2VMb2FkZXJzLnZhbHVlcygpKSkKICAgICAgICAg
bG9hZGVyLT5hYm9ydCgpOwogICAgIEFTU0VSVChtX25ldHdvcmtSZXNvdXJjZUxvYWRlcnMuaXNF
bXB0eSgpKTsKIApJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1Jl
bW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
U2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbQkocmV2
aXNpb24gMjIzMTMxKQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1Jl
bW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tCSh3b3JraW5nIGNvcHkpCkBAIC03NDQsOCArNzQ0
LDcgQEAgc3RhdGljIHZvaWQgZHVtcENoYW5nZWRMYXllcnMoVGV4dFN0cmVhbQogICAgIHRzIDw8
ICJjaGFuZ2VkLWxheWVycyI7CiAKICAgICAvLyBEdW1wIHRoZSBsYXllciBwcm9wZXJ0aWVzIHNv
cnRlZCBieSBsYXllciBJRC4KLSAgICBWZWN0b3I8R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXll
cklEPiBsYXllcklEczsKLSAgICBjb3B5S2V5c1RvVmVjdG9yKGNoYW5nZWRMYXllclByb3BlcnRp
ZXMsIGxheWVySURzKTsKKyAgICBhdXRvIGxheWVySURzID0gY29weVRvVmVjdG9yKGNoYW5nZWRM
YXllclByb3BlcnRpZXMua2V5cygpKTsKICAgICBzdGQ6OnNvcnQobGF5ZXJJRHMuYmVnaW4oKSwg
bGF5ZXJJRHMuZW5kKCkpOwogCiAgICAgZm9yIChhdXRvJiBsYXllcklEIDogbGF5ZXJJRHMpIHsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dlbmVyaWNDYWxsYmFjay5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dlbmVyaWNDYWxsYmFjay5oCShyZXZpc2lv
biAyMjMxMzEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HZW5lcmljQ2FsbGJhY2suaAko
d29ya2luZyBjb3B5KQpAQCAtMTYzLDkgKzE2Myw3IEBAIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNr
PGNvbnN0IFNoYXJlYWJsZUIKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiB2b2lkIGludmFsaWRhdGVD
YWxsYmFja01hcChIYXNoTWFwPHVpbnQ2NF90LCBUPiYgY2FsbGJhY2tNYXAsIENhbGxiYWNrQmFz
ZTo6RXJyb3IgZXJyb3IpCiB7Ci0gICAgVmVjdG9yPFQ+IGNhbGxiYWNrczsKLSAgICBjb3B5VmFs
dWVzVG9WZWN0b3IoY2FsbGJhY2tNYXAsIGNhbGxiYWNrcyk7Ci0gICAgZm9yIChhdXRvJiBjYWxs
YmFjayA6IGNhbGxiYWNrcykKKyAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDogY29weVRvVmVjdG9y
KGNhbGxiYWNrTWFwLnZhbHVlcygpKSkKICAgICAgICAgY2FsbGJhY2stPmludmFsaWRhdGUoZXJy
b3IpOwogCiAgICAgY2FsbGJhY2tNYXAuY2xlYXIoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAkocmV2aXNpb24gMjIzMTMxKQorKysgU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTgxLDE4ICsxODEsMTUgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnNodXREb3duKCkKICAgICBt
X2JhY2tncm91bmRSZXNwb25zaXZlbmVzc1RpbWVyLmludmFsaWRhdGUoKTsKICAgICBtX3Rva2Vu
Rm9ySG9sZGluZ0xvY2tlZEZpbGVzID0gbnVsbHB0cjsKIAotICAgIFZlY3RvcjxSZWZQdHI8V2Vi
RnJhbWVQcm94eT4+IGZyYW1lczsKLSAgICBjb3B5VmFsdWVzVG9WZWN0b3IobV9mcmFtZU1hcCwg
ZnJhbWVzKTsKLQotICAgIGZvciAoc2l6ZV90IGkgPSAwLCBzaXplID0gZnJhbWVzLnNpemUoKTsg
aSA8IHNpemU7ICsraSkKLSAgICAgICAgZnJhbWVzW2ldLT53ZWJQcm9jZXNzV2lsbFNodXREb3du
KCk7CisgICAgZm9yIChhdXRvJiBmcmFtZSA6IGNvcHlUb1ZlY3RvcihtX2ZyYW1lTWFwLnZhbHVl
cygpKSkKKyAgICAgICAgZnJhbWUtPndlYlByb2Nlc3NXaWxsU2h1dERvd24oKTsKICAgICBtX2Zy
YW1lTWFwLmNsZWFyKCk7CiAKLSAgICBmb3IgKFZpc2l0ZWRMaW5rU3RvcmUqIHZpc2l0ZWRMaW5r
U3RvcmUgOiBtX3Zpc2l0ZWRMaW5rU3RvcmVzKQorICAgIGZvciAoYXV0byogdmlzaXRlZExpbmtT
dG9yZSA6IG1fdmlzaXRlZExpbmtTdG9yZXMpCiAgICAgICAgIHZpc2l0ZWRMaW5rU3RvcmUtPnJl
bW92ZVByb2Nlc3MoKnRoaXMpOwogICAgIG1fdmlzaXRlZExpbmtTdG9yZXMuY2xlYXIoKTsKIAot
ICAgIGZvciAoV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkqIHdlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5IDogbV93ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94aWVzKQorICAgIGZv
ciAoYXV0byogd2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkgOiBtX3dlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3hpZXMpCiAgICAgICAgIHdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5
LT5yZW1vdmVQcm9jZXNzKCp0aGlzKTsKICAgICBtX3dlYlVzZXJDb250ZW50Q29udHJvbGxlclBy
b3hpZXMuY2xlYXIoKTsKIApAQCAtNjI1LDEzICs2MjIsMTIgQEAgdm9pZCBXZWJQcm9jZXNzUHJv
eHk6OmRpZENsb3NlKElQQzo6Q29ubgogCiAgICAgd2ViQ29ubmVjdGlvbigpLT5kaWRDbG9zZSgp
OwogCi0gICAgVmVjdG9yPFJlZlB0cjxXZWJQYWdlUHJveHk+PiBwYWdlczsKLSAgICBjb3B5VmFs
dWVzVG9WZWN0b3IobV9wYWdlTWFwLCBwYWdlcyk7CisgICAgYXV0byBwYWdlcyA9IGNvcHlUb1Zl
Y3RvcihtX3BhZ2VNYXAudmFsdWVzKCkpOwogCiAgICAgc2h1dERvd24oKTsKIAotICAgIGZvciAo
c2l6ZV90IGkgPSAwLCBzaXplID0gcGFnZXMuc2l6ZSgpOyBpIDwgc2l6ZTsgKytpKQotICAgICAg
ICBwYWdlc1tpXS0+cHJvY2Vzc0RpZFRlcm1pbmF0ZShQcm9jZXNzVGVybWluYXRpb25SZWFzb246
OkNyYXNoKTsKKyAgICBmb3IgKGF1dG8mIHBhZ2UgOiBwYWdlcykKKyAgICAgICAgcGFnZS0+cHJv
Y2Vzc0RpZFRlcm1pbmF0ZShQcm9jZXNzVGVybWluYXRpb25SZWFzb246OkNyYXNoKTsKIAogfQog
CkBAIC02NTMsMTIgKzY0OSw5IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRCZWNvbWVVbnJl
c3BvbnMKIHsKICAgICBtX2lzUmVzcG9uc2l2ZSA9IE5vT3JNYXliZTo6Tm87CiAKLSAgICBWZWN0
b3I8UmVmUHRyPFdlYlBhZ2VQcm94eT4+IHBhZ2VzOwotICAgIGNvcHlWYWx1ZXNUb1ZlY3Rvciht
X3BhZ2VNYXAsIHBhZ2VzKTsKLQogICAgIGF1dG8gaXNSZXNwb25zaXZlQ2FsbGJhY2tzID0gV1RG
TW92ZShtX2lzUmVzcG9uc2l2ZUNhbGxiYWNrcyk7CiAKLSAgICBmb3IgKGF1dG8mIHBhZ2UgOiBw
YWdlcykKKyAgICBmb3IgKGF1dG8mIHBhZ2UgOiBjb3B5VG9WZWN0b3IobV9wYWdlTWFwLnZhbHVl
cygpKSkKICAgICAgICAgcGFnZS0+cHJvY2Vzc0RpZEJlY29tZVVucmVzcG9uc2l2ZSgpOwogCiAg
ICAgYm9vbCBpc1dlYlByb2Nlc3NSZXNwb25zaXZlID0gZmFsc2U7CkBAIC02NzAsMjUgKzY2Mywx
OSBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkQmVjb21lUmVzcG9uc2l2CiB7CiAgICAgbV9p
c1Jlc3BvbnNpdmUgPSBOb09yTWF5YmU6Ok1heWJlOwogCi0gICAgVmVjdG9yPFJlZlB0cjxXZWJQ
YWdlUHJveHk+PiBwYWdlczsKLSAgICBjb3B5VmFsdWVzVG9WZWN0b3IobV9wYWdlTWFwLCBwYWdl
cyk7Ci0gICAgZm9yIChhdXRvJiBwYWdlIDogcGFnZXMpCisgICAgZm9yIChhdXRvJiBwYWdlIDog
Y29weVRvVmVjdG9yKG1fcGFnZU1hcC52YWx1ZXMoKSkpCiAgICAgICAgIHBhZ2UtPnByb2Nlc3NE
aWRCZWNvbWVSZXNwb25zaXZlKCk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojp3aWxsQ2hh
bmdlSXNSZXNwb25zaXZlKCkKIHsKLSAgICBWZWN0b3I8UmVmUHRyPFdlYlBhZ2VQcm94eT4+IHBh
Z2VzOwotICAgIGNvcHlWYWx1ZXNUb1ZlY3RvcihtX3BhZ2VNYXAsIHBhZ2VzKTsKLSAgICBmb3Ig
KGF1dG8mIHBhZ2UgOiBwYWdlcykKKyAgICBmb3IgKGF1dG8mIHBhZ2UgOiBjb3B5VG9WZWN0b3Io
bV9wYWdlTWFwLnZhbHVlcygpKSkKICAgICAgICAgcGFnZS0+d2lsbENoYW5nZVByb2Nlc3NJc1Jl
c3BvbnNpdmUoKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZENoYW5nZUlzUmVzcG9u
c2l2ZSgpCiB7Ci0gICAgVmVjdG9yPFJlZlB0cjxXZWJQYWdlUHJveHk+PiBwYWdlczsKLSAgICBj
b3B5VmFsdWVzVG9WZWN0b3IobV9wYWdlTWFwLCBwYWdlcyk7Ci0gICAgZm9yIChhdXRvJiBwYWdl
IDogcGFnZXMpCisgICAgZm9yIChhdXRvJiBwYWdlIDogY29weVRvVmVjdG9yKG1fcGFnZU1hcC52
YWx1ZXMoKSkpCiAgICAgICAgIHBhZ2UtPmRpZENoYW5nZVByb2Nlc3NJc1Jlc3BvbnNpdmUoKTsK
IH0KIApAQCAtNzQ4LDE5ICs3MzUsMTcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZERlc3Ry
b3lGcmFtZSh1aQogCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlzY29ubmVjdEZyYW1lc0Zyb21Q
YWdlKFdlYlBhZ2VQcm94eSogcGFnZSkKIHsKLSAgICBWZWN0b3I8UmVmUHRyPFdlYkZyYW1lUHJv
eHk+PiBmcmFtZXM7Ci0gICAgY29weVZhbHVlc1RvVmVjdG9yKG1fZnJhbWVNYXAsIGZyYW1lcyk7
Ci0gICAgZm9yIChzaXplX3QgaSA9IDAsIHNpemUgPSBmcmFtZXMuc2l6ZSgpOyBpIDwgc2l6ZTsg
KytpKSB7Ci0gICAgICAgIGlmIChmcmFtZXNbaV0tPnBhZ2UoKSA9PSBwYWdlKQotICAgICAgICAg
ICAgZnJhbWVzW2ldLT53ZWJQcm9jZXNzV2lsbFNodXREb3duKCk7CisgICAgZm9yIChhdXRvJiBm
cmFtZSA6IGNvcHlUb1ZlY3RvcihtX2ZyYW1lTWFwLnZhbHVlcygpKSkgeworICAgICAgICBpZiAo
ZnJhbWUtPnBhZ2UoKSA9PSBwYWdlKQorICAgICAgICAgICAgZnJhbWUtPndlYlByb2Nlc3NXaWxs
U2h1dERvd24oKTsKICAgICB9CiB9CiAKIHNpemVfdCBXZWJQcm9jZXNzUHJveHk6OmZyYW1lQ291
bnRJblBhZ2UoV2ViUGFnZVByb3h5KiBwYWdlKSBjb25zdAogewogICAgIHNpemVfdCByZXN1bHQg
PSAwOwotICAgIGZvciAoSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFdlYkZyYW1lUHJveHk+Pjo6
Y29uc3RfaXRlcmF0b3IgaXRlciA9IG1fZnJhbWVNYXAuYmVnaW4oKTsgaXRlciAhPSBtX2ZyYW1l
TWFwLmVuZCgpOyArK2l0ZXIpIHsKLSAgICAgICAgaWYgKGl0ZXItPnZhbHVlLT5wYWdlKCkgPT0g
cGFnZSkKKyAgICBmb3IgKGF1dG8mIGZyYW1lIDogbV9mcmFtZU1hcC52YWx1ZXMoKSkgeworICAg
ICAgICBpZiAoZnJhbWUtPnBhZ2UoKSA9PSBwYWdlKQogICAgICAgICAgICAgKytyZXN1bHQ7CiAg
ICAgfQogICAgIHJldHVybiByZXN1bHQ7CkBAIC04ODgsMTMgKzg3MywxMiBAQCB2b2lkIFdlYlBy
b2Nlc3NQcm94eTo6cmVxdWVzdFRlcm1pbmF0aW9uCiAgICAgaWYgKHdlYkNvbm5lY3Rpb24oKSkK
ICAgICAgICAgd2ViQ29ubmVjdGlvbigpLT5kaWRDbG9zZSgpOwogCi0gICAgVmVjdG9yPFJlZlB0
cjxXZWJQYWdlUHJveHk+PiBwYWdlczsKLSAgICBjb3B5VmFsdWVzVG9WZWN0b3IobV9wYWdlTWFw
LCBwYWdlcyk7CisgICAgYXV0byBwYWdlcyA9IGNvcHlUb1ZlY3RvcihtX3BhZ2VNYXAudmFsdWVz
KCkpOwogCiAgICAgc2h1dERvd24oKTsKIAotICAgIGZvciAoc2l6ZV90IGkgPSAwLCBzaXplID0g
cGFnZXMuc2l6ZSgpOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICBwYWdlc1tpXS0+cHJvY2Vzc0Rp
ZFRlcm1pbmF0ZShyZWFzb24pOworICAgIGZvciAoYXV0byYgcGFnZSA6IHBhZ2VzKQorICAgICAg
ICBwYWdlLT5wcm9jZXNzRGlkVGVybWluYXRlKHJlYXNvbik7CiB9CiAKIHZvaWQgV2ViUHJvY2Vz
c1Byb3h5OjpzdG9wUmVzcG9uc2l2ZW5lc3NUaW1lcigpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcAkocmV2aXNp
b24gMjIzMTMxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vi
Q29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2MTgsOSArMTYxOCw3IEBAIHZvaWQgd2Vi
a2l0V2ViQ29udGV4dFN0b3BMb2FkaW5nQ3VzdG9tUHIKIAogdm9pZCB3ZWJraXRXZWJDb250ZXh0
SW52YWxpZGF0ZUN1c3RvbVByb3RvY29sUmVxdWVzdHMoV2ViS2l0V2ViQ29udGV4dCogY29udGV4
dCwgTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkmIG1hbmFnZXIpCiB7Ci0gICAgVmVj
dG9yPEdSZWZQdHI8V2ViS2l0VVJJU2NoZW1lUmVxdWVzdD4+IHJlcXVlc3RzOwotICAgIGNvcHlW
YWx1ZXNUb1ZlY3Rvcihjb250ZXh0LT5wcml2LT51cmlTY2hlbWVSZXF1ZXN0cywgcmVxdWVzdHMp
OwotICAgIGZvciAoYXV0byYgcmVxdWVzdCA6IHJlcXVlc3RzKSB7CisgICAgZm9yIChhdXRvJiBy
ZXF1ZXN0IDogY29weVRvVmVjdG9yKGNvbnRleHQtPnByaXYtPnVyaVNjaGVtZVJlcXVlc3RzLnZh
bHVlcygpKSkgewogICAgICAgICBpZiAod2Via2l0VVJJU2NoZW1lUmVxdWVzdEdldE1hbmFnZXIo
cmVxdWVzdC5nZXQoKSkgPT0gJm1hbmFnZXIpCiAgICAgICAgICAgICB3ZWJraXRVUklTY2hlbWVS
ZXF1ZXN0SW52YWxpZGF0ZShyZXF1ZXN0LmdldCgpKTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcAko
cmV2aXNpb24gMjIzMTMxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJWaWV3QmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3NSw5ICs0NzUsNyBAQCBzdGF0
aWMgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZUNvbnRhaW5lckZvCiAgICAgV2ViS2l0V2ViVmlld0Jh
c2UqIHdlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVdfQkFTRShjb250YWluZXIpOwogICAgIFdlYktp
dFdlYlZpZXdCYXNlUHJpdmF0ZSogcHJpdiA9IHdlYlZpZXctPnByaXY7CiAKLSAgICBWZWN0b3I8
R3RrV2lkZ2V0Kj4gY2hpbGRyZW47Ci0gICAgY29weUtleXNUb1ZlY3Rvcihwcml2LT5jaGlsZHJl
biwgY2hpbGRyZW4pOwotICAgIGZvciAoY29uc3QgYXV0byYgY2hpbGQgOiBjaGlsZHJlbikgewor
ICAgIGZvciAoY29uc3QgYXV0byYgY2hpbGQgOiBjb3B5VG9WZWN0b3IocHJpdi0+Y2hpbGRyZW4u
a2V5cygpKSkgewogICAgICAgICBpZiAocHJpdi0+Y2hpbGRyZW4uY29udGFpbnMoY2hpbGQpKQog
ICAgICAgICAgICAgKCpjYWxsYmFjaykoY2hpbGQsIGNhbGxiYWNrRGF0YSk7CiAgICAgfQpJbmRl
eDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV0tXZWJWaWV3Q29udGVudFByb3ZpZGVy
UmVnaXN0cnkubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V0tXZWJWaWV3Q29udGVudFByb3ZpZGVyUmVnaXN0cnkubW0JKHJldmlzaW9uIDIyMzEzMSkKKysr
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLV2ViVmlld0NvbnRlbnRQcm92aWRlclJl
Z2lzdHJ5Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC04OSw5ICs4OSw3IEBAIC0gKENsYXNzIDxXS1dl
YlZpZXdDb250ZW50UHJvdmlkZXI+KXByb3YKIAogLSAoVmVjdG9yPFN0cmluZz4pX21pbWVUeXBl
c1dpdGhDdXN0b21Db250ZW50UHJvdmlkZXJzCiB7Ci0gICAgVmVjdG9yPFN0cmluZz4gbWltZVR5
cGVzOwotICAgIGNvcHlLZXlzVG9WZWN0b3IoX2NvbnRlbnRQcm92aWRlckZvck1JTUVUeXBlLCBt
aW1lVHlwZXMpOwotICAgIHJldHVybiBtaW1lVHlwZXM7CisgICAgcmV0dXJuIGNvcHlUb1ZlY3Rv
cihfY29udGVudFByb3ZpZGVyRm9yTUlNRVR5cGUua2V5cygpKTsKIH0KIAogQGVuZApJbmRleDog
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAkocmV2aXNpb24gMjIzMTMxKQor
KysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02NjUsMTIgKzY2NSw4IEBAIHZvaWQgV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2Uo
SVBDOjoKIHZvaWQgV2ViUHJvY2Vzczo6ZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJikKIHsKICNp
Zm5kZWYgTkRFQlVHCi0gICAgLy8gQ2xvc2UgYWxsIHRoZSBsaXZlIHBhZ2VzLgotICAgIFZlY3Rv
cjxSZWZQdHI8V2ViUGFnZT4+IHBhZ2VzOwotICAgIGNvcHlWYWx1ZXNUb1ZlY3RvcihtX3BhZ2VN
YXAsIHBhZ2VzKTsKLSAgICBmb3IgKGF1dG8mIHBhZ2UgOiBwYWdlcykKKyAgICBmb3IgKGF1dG8m
IHBhZ2UgOiBjb3B5VG9WZWN0b3IobV9wYWdlTWFwLnZhbHVlcygpKSkKICAgICAgICAgcGFnZS0+
Y2xvc2UoKTsKLSAgICBwYWdlcy5jbGVhcigpOwogCiAgICAgR0NDb250cm9sbGVyOjpzaW5nbGV0
b24oKS5nYXJiYWdlQ29sbGVjdFNvb24oKTsKICAgICBGb250Q2FjaGU6OnNpbmdsZXRvbigpLmlu
dmFsaWRhdGUoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblZpZXcuY3BwCShyZXZpc2lvbiAyMjMxMzEpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI4NCwxMSAr
MTI4NCw4IEBAIHZvaWQgUGx1Z2luVmlldzo6cmVtb3ZlU3RyZWFtKFN0cmVhbSogc3QKIAogdm9p
ZCBQbHVnaW5WaWV3OjpjYW5jZWxBbGxTdHJlYW1zKCkKIHsKLSAgICBWZWN0b3I8UmVmUHRyPFN0
cmVhbT4+IHN0cmVhbXM7Ci0gICAgY29weVZhbHVlc1RvVmVjdG9yKG1fc3RyZWFtcywgc3RyZWFt
cyk7Ci0gICAgCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHJlYW1zLnNpemUoKTsgKytp
KQotICAgICAgICBzdHJlYW1zW2ldLT5jYW5jZWwoKTsKKyAgICBmb3IgKGF1dG8mIHN0cmVhbSA6
IGNvcHlUb1ZlY3RvcihtX3N0cmVhbXMudmFsdWVzKCkpKQorICAgICAgICBzdHJlYW0tPmNhbmNl
bCgpOwogCiAgICAgLy8gQ2FuY2VsbGluZyBhIHN0cmVhbSByZW1vdmVzIGl0IGZyb20gdGhlIG1f
c3RyZWFtcyBtYXAsIHNvIGlmIHdlIGNhbmNlbCBhbGwgc3RyZWFtcyB0aGUgbWFwIHNob3VsZCBi
ZSBlbXB0eS4KICAgICBBU1NFUlQobV9zdHJlYW1zLmlzRW1wdHkoKSk7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUFJ1bnRpbWVPYmplY3RNYXAuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBl
L05QUnVudGltZU9iamVjdE1hcC5jcHAJKHJldmlzaW9uIDIyMzEzMSkKKysrIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QUnVudGltZU9iamVjdE1hcC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTIwMCwxMiArMjAwLDkgQEAgYm9vbCBOUFJ1bnRpbWVPYmplY3RNYXA6
OmV2YWx1YXRlKE5QT2JqZQogCiB2b2lkIE5QUnVudGltZU9iamVjdE1hcDo6aW52YWxpZGF0ZSgp
CiB7Ci0gICAgVmVjdG9yPE5QSlNPYmplY3QqPiBucEpTT2JqZWN0czsKLSAgICBjb3B5VmFsdWVz
VG9WZWN0b3IobV9ucEpTT2JqZWN0cywgbnBKU09iamVjdHMpOwotCiAgICAgLy8gRGVhbGxvY2F0
ZSBhbGwgdGhlIG9iamVjdCB3cmFwcGVycyBzbyB3ZSB3b24ndCBsZWFrIGFueSBKYXZhU2NyaXB0
IG9iamVjdHMuCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBucEpTT2JqZWN0cy5zaXplKCk7
ICsraSkKLSAgICAgICAgZGVhbGxvY2F0ZU5QT2JqZWN0KG5wSlNPYmplY3RzW2ldKTsKKyAgICBm
b3IgKGF1dG8mIG5wSlNPYmplY3QgOiBjb3B5VG9WZWN0b3IobV9ucEpTT2JqZWN0cy52YWx1ZXMo
KSkpCisgICAgICAgIGRlYWxsb2NhdGVOUE9iamVjdChucEpTT2JqZWN0KTsKICAgICAKICAgICAv
LyBXZSBzaG91bGRuJ3QgaGF2ZSBhbnkgTlBKU09iamVjdHMgbGVmdCBub3cuCiAgICAgQVNTRVJU
KG1fbnBKU09iamVjdHMuaXNFbXB0eSgpKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAJ
KHJldmlzaW9uIDIyMzEzMSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05l
dHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTY4LDExICs1Njgs
OCBAQCBOZXRzY2FwZVBsdWdpblN0cmVhbSogTmV0c2NhcGVQbHVnaW46OnN0CiAKIHZvaWQgTmV0
c2NhcGVQbHVnaW46OnN0b3BBbGxTdHJlYW1zKCkKIHsKLSAgICBWZWN0b3I8UmVmUHRyPE5ldHNj
YXBlUGx1Z2luU3RyZWFtPj4gc3RyZWFtczsKLSAgICBjb3B5VmFsdWVzVG9WZWN0b3IobV9zdHJl
YW1zLCBzdHJlYW1zKTsKLQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RyZWFtcy5zaXpl
KCk7ICsraSkKLSAgICAgICAgc3RyZWFtc1tpXS0+c3RvcChOUFJFU19VU0VSX0JSRUFLKTsKKyAg
ICBmb3IgKGF1dG8mIHN0cmVhbSA6IGNvcHlUb1ZlY3RvcihtX3N0cmVhbXMudmFsdWVzKCkpKQor
ICAgICAgICBzdHJlYW0tPnN0b3AoTlBSRVNfVVNFUl9CUkVBSyk7CiB9CiAKIGJvb2wgTmV0c2Nh
cGVQbHVnaW46OmFsbG93UG9wdXBzKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVDb250ZXh0Lm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVy
VHJlZS9SZW1vdGVMYXllclRyZWVDb250ZXh0Lm1tCShyZXZpc2lvbiAyMjMxMzEpCisrKyBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJU
cmVlQ29udGV4dC5tbQkod29ya2luZyBjb3B5KQpAQCAtMTI2LDkgKzEyNiw3IEBAIHZvaWQgUmVt
b3RlTGF5ZXJUcmVlQ29udGV4dDo6YnVpbGRUcmFuc2EKICAgICByb290TGF5ZXJSZW1vdGUucmVj
dXJzaXZlQnVpbGRUcmFuc2FjdGlvbigqdGhpcywgdHJhbnNhY3Rpb24pOwogICAgIG1fY3VycmVu
dFRyYW5zYWN0aW9uID0gbnVsbHB0cjsKIAotICAgIFZlY3RvcjxSZW1vdGVMYXllclRyZWVUcmFu
c2FjdGlvbjo6TGF5ZXJDcmVhdGlvblByb3BlcnRpZXM+IGNyZWF0ZWRMYXllclByb3BlcnRpZXM7
Ci0gICAgY29weVZhbHVlc1RvVmVjdG9yKG1fY3JlYXRlZExheWVycywgY3JlYXRlZExheWVyUHJv
cGVydGllcyk7Ci0gICAgdHJhbnNhY3Rpb24uc2V0Q3JlYXRlZExheWVycyhXVEZNb3ZlKGNyZWF0
ZWRMYXllclByb3BlcnRpZXMpKTsKKyAgICB0cmFuc2FjdGlvbi5zZXRDcmVhdGVkTGF5ZXJzKGNv
cHlUb1ZlY3RvcihtX2NyZWF0ZWRMYXllcnMudmFsdWVzKCkpKTsKICAgICB0cmFuc2FjdGlvbi5z
ZXREZXN0cm95ZWRMYXllcklEcyhXVEZNb3ZlKG1fZGVzdHJveWVkTGF5ZXJzKSk7CiAgICAgCiAg
ICAgbV9jcmVhdGVkTGF5ZXJzLmNsZWFyKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwkocmV2
aXNpb24gMjIzMTMxKQorKysgU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxNy0xMC0xMCAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJr
aXQub3JnPgorCisgICAgICAgIFJlcGxhY2UgY29weUtleXNUb1ZlY3Rvci9jb3B5VmFsdWVzVG9W
ZWN0b3Igd2l0aCBjb3B5VG9WZWN0b3IobWFwLmtleXMoKSkvY29weVRvVmVjdG9yKG1hcC52YWx1
ZXMoKSkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
ODEwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcDoKKyAgICAgICAgKFdl
YlJlc291cmNlTG9hZFNjaGVkdWxlcjo6c2VydmVQZW5kaW5nUmVxdWVzdHMpOgorCiAyMDE3LTEw
LTA5ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2lu
XSBMaW5rIGVycm9yOiBjYW5ub3Qgb3BlbiBpbnB1dCBmaWxlICdXZWJLaXRMZWdhY3lHVUlELmxp
YicKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VM
b2FkU2NoZWR1bGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNv
cmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAJKHJldmlzaW9uIDIyMzEzMSkK
KysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2No
ZWR1bGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjIyLDEwICsyMjIsNyBAQCB2b2lkIFdlYlJl
c291cmNlTG9hZFNjaGVkdWxlcjo6c2VydmVQZW5kCiAgICAgCiAgICAgc2VydmVQZW5kaW5nUmVx
dWVzdHMobV9ub25IVFRQUHJvdG9jb2xIb3N0LCBtaW5pbXVtUHJpb3JpdHkpOwogCi0gICAgVmVj
dG9yPEhvc3RJbmZvcm1hdGlvbio+IGhvc3RzVG9TZXJ2ZTsKLSAgICBjb3B5VmFsdWVzVG9WZWN0
b3IobV9ob3N0cywgaG9zdHNUb1NlcnZlKTsKLQotICAgIGZvciAoYXV0byogaG9zdCA6IGhvc3Rz
VG9TZXJ2ZSkgeworICAgIGZvciAoYXV0byogaG9zdCA6IGNvcHlUb1ZlY3RvcihtX2hvc3RzLnZh
bHVlcygpKSkgewogICAgICAgICBpZiAoaG9zdC0+aGFzUmVxdWVzdHMoKSkKICAgICAgICAgICAg
IHNlcnZlUGVuZGluZ1JlcXVlc3RzKGhvc3QsIG1pbmltdW1Qcmlvcml0eSk7CiAgICAgICAgIGVs
c2UKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMzEzMSkKKysr
IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE3IEBACisyMDE3LTEwLTEwICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgUmVwbGFjZSBjb3B5S2V5c1RvVmVjdG9yL2NvcHlWYWx1ZXNUb1ZlY3RvciB3aXRoIGNv
cHlUb1ZlY3RvcihtYXAua2V5cygpKS9jb3B5VG9WZWN0b3IobWFwLnZhbHVlcygpKQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4MTAyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBIaXN0b3J5L1dlYkhp
c3RvcnkubW06CisgICAgICAgICgtW1dlYkhpc3RvcnlQcml2YXRlIHJlYnVpbGRIaXN0b3J5QnlE
YXlJZk5lZWRlZDpdKToKKyAgICAgICAgKiBQbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbklu
c3RhbmNlUHJveHkubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQ
cm94eTo6c3RvcEFsbFN0cmVhbXMpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlVzZXJN
ZWRpYUNsaWVudC5tbToKKyAgICAgICAgKFdlYlVzZXJNZWRpYUNsaWVudDo6cGFnZURlc3Ryb3ll
ZCk6CisKIDIwMTctMTAtMDkgIFJvYmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4K
IAogICAgICAgICBNYWtlIHRoZSBuYW1lcyBvZiB0aGUgb3B0aW9ucyBjb25zaXN0ZW50CkluZGV4
OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L1dlYkhpc3RvcnkubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5Lm1tCShyZXZp
c2lvbiAyMjMxMzEpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L1dlYkhpc3Rv
cnkubW0JKHdvcmtpbmcgY29weSkKQEAgLTM2Niw4ICszNjYsNyBAQCAtICh2b2lkKXJlYnVpbGRI
aXN0b3J5QnlEYXlJZk5lZWRlZDooV2ViCiB7CiAgICAgLy8gV2UgY2xlYXIgYWxsIHRoZSB2YWx1
ZXMgdG8gcHJlc2VudCBhIGNvbnNpc3RlbnQgc3RhdGUgd2hlbiBzZW5kaW5nIHRoZSBub3RpZmlj
YXRpb25zLgogICAgIC8vIFdlIGtlZXAgYSByZWZlcmVuY2UgdG8gdGhlIGVudHJpZXMgZm9yIHJl
YnVpbGRpbmcgdGhlIGhpc3RvcnkgYWZ0ZXIgdGhlIG5vdGlmaWNhdGlvbi4KLSAgICBWZWN0b3Ig
PFJldGFpblB0cjxOU011dGFibGVBcnJheT4+IGVudHJ5QXJyYXlzOwotICAgIGNvcHlWYWx1ZXNU
b1ZlY3RvcigqX2VudHJpZXNCeURhdGUsIGVudHJ5QXJyYXlzKTsKKyAgICBhdXRvIGVudHJ5QXJy
YXlzID0gY29weVRvVmVjdG9yKF9lbnRyaWVzQnlEYXRlLT52YWx1ZXMoKSk7CiAgICAgX2VudHJp
ZXNCeURhdGUtPmNsZWFyKCk7CiAgICAgCiAgICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqZW50cmll
c0J5VVJMID0gX2VudHJpZXNCeVVSTDsKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1Bs
dWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbklu
c3RhbmNlUHJveHkubW0JKHJldmlzaW9uIDIyMzEzMSkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMjkzLDEwICsyOTMsOCBAQCB2b2lkIE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQ
cm94eTo6bGF5ZXJICiAKIHZvaWQgTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpzdG9wQWxs
U3RyZWFtcygpCiB7Ci0gICAgVmVjdG9yPFJlZlB0cjxIb3N0ZWROZXRzY2FwZVBsdWdpblN0cmVh
bT4+IHN0cmVhbXNDb3B5OwotICAgIGNvcHlWYWx1ZXNUb1ZlY3RvcihtX3N0cmVhbXMsIHN0cmVh
bXNDb3B5KTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0cmVhbXNDb3B5LnNpemUoKTsg
aSsrKQotICAgICAgICBzdHJlYW1zQ29weVtpXS0+c3RvcCgpOworICAgIGZvciAoYXV0byYgc3Ry
ZWFtIDogY29weVRvVmVjdG9yKG1fc3RyZWFtcy52YWx1ZXMoKSkpCisgICAgICAgIHN0cmVhbS0+
c3RvcCgpOwogfQogCiB2b2lkIE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6Y2xlYW51cCgp
CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVk
aWFDbGllbnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViVXNlck1lZGlhQ2xpZW50Lm1tCShyZXZpc2lvbiAyMjMxMzEpCisrKyBTb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQubW0J
KHdvcmtpbmcgY29weSkKQEAgLTEwOSw4ICsxMDksNyBAQCBXZWJVc2VyTWVkaWFDbGllbnQ6On5X
ZWJVc2VyTWVkaWFDbGllbnQoCiB2b2lkIFdlYlVzZXJNZWRpYUNsaWVudDo6cGFnZURlc3Ryb3ll
ZCgpCiB7CiAgICAgYXV0byYgcmVxdWVzdHNNYXAgPSB1c2VyTWVkaWFSZXF1ZXN0c01hcCgpOwot
ICAgIFZlY3RvcjxSZXRhaW5QdHI8V2ViVXNlck1lZGlhUG9saWN5TGlzdGVuZXI+PiBwZW5kaW5n
UmVxdWVzdHM7Ci0gICAgY29weVZhbHVlc1RvVmVjdG9yKHJlcXVlc3RzTWFwLCBwZW5kaW5nUmVx
dWVzdHMpOworICAgIGF1dG8gcGVuZGluZ1JlcXVlc3RzID0gY29weVRvVmVjdG9yKHJlcXVlc3Rz
TWFwLnZhbHVlcygpKTsKICAgICByZXF1ZXN0c01hcC5jbGVhcigpOwogCiAgICAgZm9yIChhdXRv
JiByZXF1ZXN0IDogcGVuZGluZ1JlcXVlc3RzKQpAQCAtMTE5LDggKzExOCw3IEBAIHZvaWQgV2Vi
VXNlck1lZGlhQ2xpZW50OjpwYWdlRGVzdHJveWVkKCkKICAgICBBU1NFUlQodXNlck1lZGlhUmVx
dWVzdHNNYXAoKS5pc0VtcHR5KCkpOwogCiAgICAgYXV0byYgY2hlY2tNYXAgPSB1c2VyTWVkaWFD
aGVja01hcCgpOwotICAgIFZlY3RvcjxSZXRhaW5QdHI8V2ViVXNlck1lZGlhUG9saWN5Q2hlY2tl
ckxpc3RlbmVyPj4gcGVuZGluZ0NoZWNrczsKLSAgICBjb3B5VmFsdWVzVG9WZWN0b3IoY2hlY2tN
YXAsIHBlbmRpbmdDaGVja3MpOworICAgIGF1dG8gcGVuZGluZ0NoZWNrcyA9IGNvcHlUb1ZlY3Rv
cihjaGVja01hcC52YWx1ZXMoKSk7CiAgICAgY2hlY2tNYXAuY2xlYXIoKTsKIAogICAgIGZvciAo
YXV0byYgY2hlY2sgOiBwZW5kaW5nQ2hlY2tzKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>