<?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>189169</bug_id>
          
          <creation_ts>2018-08-30 13:22:04 -0700</creation_ts>
          <short_desc>Replace OptionSet |= and -= operators with add() and remove() functions</short_desc>
          <delta_ts>2018-08-31 11:01:26 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Template Framework</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>andersca</cc>
    
    <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1455377</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-08-30 13:22:04 -0700</bug_when>
    <thetext>It makes code more readable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455411</commentid>
    <comment_count>1</comment_count>
      <attachid>348548</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-08-30 14:19:22 -0700</bug_when>
    <thetext>Created attachment 348548
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455412</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-08-30 14:22:48 -0700</bug_when>
    <thetext>Attachment 348548 did not pass style-queue:


ERROR: Source/WebCore/dom/UserActionElementSet.cpp:69:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 1 in 66 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455603</commentid>
    <comment_count>3</comment_count>
      <attachid>348618</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-08-31 00:50:10 -0700</bug_when>
    <thetext>Created attachment 348618
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455605</commentid>
    <comment_count>4</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-08-31 00:53:10 -0700</bug_when>
    <thetext>Attachment 348618 did not pass style-queue:


ERROR: Tools/TestWebKitAPI/Tests/WTF/OptionSet.cpp:111:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 1 in 68 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455609</commentid>
    <comment_count>5</comment_count>
      <attachid>348620</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-08-31 01:15:37 -0700</bug_when>
    <thetext>Created attachment 348620
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455617</commentid>
    <comment_count>6</comment_count>
      <attachid>348622</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-08-31 02:06:28 -0700</bug_when>
    <thetext>Created attachment 348622
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455627</commentid>
    <comment_count>7</comment_count>
      <attachid>348626</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-08-31 02:53:59 -0700</bug_when>
    <thetext>Created attachment 348626
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455633</commentid>
    <comment_count>8</comment_count>
      <attachid>348628</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-08-31 03:03:05 -0700</bug_when>
    <thetext>Created attachment 348628
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455637</commentid>
    <comment_count>9</comment_count>
      <attachid>348630</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-08-31 04:00:26 -0700</bug_when>
    <thetext>Created attachment 348630
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455646</commentid>
    <comment_count>10</comment_count>
      <attachid>348633</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-08-31 04:47:29 -0700</bug_when>
    <thetext>Created attachment 348633
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455678</commentid>
    <comment_count>11</comment_count>
      <attachid>348633</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2018-08-31 08:09:47 -0700</bug_when>
    <thetext>Comment on attachment 348633
patch

rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455679</commentid>
    <comment_count>12</comment_count>
      <attachid>348633</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2018-08-31 08:15:18 -0700</bug_when>
    <thetext>Comment on attachment 348633
patch

I love this change!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455768</commentid>
    <comment_count>13</comment_count>
      <attachid>348633</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-08-31 10:59:12 -0700</bug_when>
    <thetext>Comment on attachment 348633
patch

Clearing flags on attachment: 348633

Committed r235560: &lt;https://trac.webkit.org/changeset/235560&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455769</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-08-31 10:59:14 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455770</commentid>
    <comment_count>15</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-08-31 11:01:26 -0700</bug_when>
    <thetext>&lt;rdar://problem/43947059&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>348548</attachid>
            <date>2018-08-30 14:19:22 -0700</date>
            <delta_ts>2018-08-31 00:50:10 -0700</delta_ts>
            <desc>patch</desc>
            <filename>optionset-add-remove.patch</filename>
            <type>text/plain</type>
            <size>101797</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyMzU1MTQpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDE4LTA4LTMwICBBbnR0aSBLb2l2aXN0byAgPGFu
dHRpQGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIE9wdGlvblNldCB8PSBhbmQgLT0gb3Bl
cmF0b3JzIHdpdGggYWRkKCkgYW5kIHJlbW92ZSgpIGZ1bmN0aW9ucworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg5MTY5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wcm92ZSBjb2RlIHJlYWRhYmlsaXR5
LgorCisgICAgICAgICogd3RmL09wdGlvblNldC5oOgorICAgICAgICAoV1RGOjpPcHRpb25TZXQ6
OmFkZCk6CisgICAgICAgIChXVEY6Ok9wdGlvblNldDo6cmVtb3ZlKToKKyAgICAgICAgKFdURjo6
T3B0aW9uU2V0OjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdURjo6T3B0aW9uU2V0OjpvcGVyYXRv
ciE9KToKKyAgICAgICAgKFdURjo6T3B0aW9uU2V0OjpvcGVyYXRvcnw9KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdURjo6T3B0aW9uU2V0OjpvcGVyYXRvci09KTogRGVsZXRlZC4KKyAgICAgICAgKiB3
dGYvUHJvY2Vzc1ByaXZpbGVnZS5jcHA6CisgICAgICAgIChXVEY6OmFkZFByb2Nlc3NQcml2aWxl
Z2UpOgorICAgICAgICAoV1RGOjpyZW1vdmVQcm9jZXNzUHJpdmlsZWdlKToKKwogMjAxOC0wOC0y
OSAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFtZSB3
dGYvdGV4dC9tYWMvU3RyaW5nTWFjLm1tIHRvIHd0Zi90ZXh0L2NvY29jYS9TdHJpbmdDb2NvY2Eu
bW0KSW5kZXg6IFNvdXJjZS9XVEYvd3RmL09wdGlvblNldC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XVEYvd3RmL09wdGlvblNldC5oCShyZXZpc2lvbiAyMzU1MTQpCisrKyBTb3VyY2UvV1RGL3d0
Zi9PcHRpb25TZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMTExLDI2ICsxMTEsMjQgQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gKCp0aGlzICYgb3B0aW9uU2V0KSA9PSBvcHRpb25TZXQ7CiAgICAg
fQogCi0gICAgY29uc3RleHByIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oT3B0aW9uU2V0IGxocywg
T3B0aW9uU2V0IHJocykKKyAgICBjb25zdGV4cHIgdm9pZCBhZGQoT3B0aW9uU2V0IG9wdGlvblNl
dCkKICAgICB7Ci0gICAgICAgIHJldHVybiBsaHMubV9zdG9yYWdlID09IHJocy5tX3N0b3JhZ2U7
CisgICAgICAgIG1fc3RvcmFnZSB8PSBvcHRpb25TZXQubV9zdG9yYWdlOwogICAgIH0KIAotICAg
IGNvbnN0ZXhwciBmcmllbmQgYm9vbCBvcGVyYXRvciE9KE9wdGlvblNldCBsaHMsIE9wdGlvblNl
dCByaHMpCisgICAgY29uc3RleHByIHZvaWQgcmVtb3ZlKE9wdGlvblNldCBvcHRpb25TZXQpCiAg
ICAgewotICAgICAgICByZXR1cm4gbGhzLm1fc3RvcmFnZSAhPSByaHMubV9zdG9yYWdlOworICAg
ICAgICBtX3N0b3JhZ2UgJj0gfm9wdGlvblNldC5tX3N0b3JhZ2U7CiAgICAgfQogCi0gICAgZnJp
ZW5kIE9wdGlvblNldCYgb3BlcmF0b3J8PShPcHRpb25TZXQmIGxocywgT3B0aW9uU2V0IHJocykK
KyAgICBjb25zdGV4cHIgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShPcHRpb25TZXQgbGhzLCBPcHRp
b25TZXQgcmhzKQogICAgIHsKLSAgICAgICAgbGhzLm1fc3RvcmFnZSB8PSByaHMubV9zdG9yYWdl
OwotICAgICAgICByZXR1cm4gbGhzOworICAgICAgICByZXR1cm4gbGhzLm1fc3RvcmFnZSA9PSBy
aHMubV9zdG9yYWdlOwogICAgIH0KIAotICAgIGZyaWVuZCBPcHRpb25TZXQmIG9wZXJhdG9yLT0o
T3B0aW9uU2V0JiBsaHMsIE9wdGlvblNldCByaHMpCisgICAgY29uc3RleHByIGZyaWVuZCBib29s
IG9wZXJhdG9yIT0oT3B0aW9uU2V0IGxocywgT3B0aW9uU2V0IHJocykKICAgICB7Ci0gICAgICAg
IGxocy5tX3N0b3JhZ2UgJj0gfnJocy5tX3N0b3JhZ2U7Ci0gICAgICAgIHJldHVybiBsaHM7Cisg
ICAgICAgIHJldHVybiBsaHMubV9zdG9yYWdlICE9IHJocy5tX3N0b3JhZ2U7CiAgICAgfQogCiAg
ICAgY29uc3RleHByIGZyaWVuZCBPcHRpb25TZXQgb3BlcmF0b3J8KE9wdGlvblNldCBsaHMsIE9w
dGlvblNldCByaHMpCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9Qcm9jZXNzUHJpdmlsZWdlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9Qcm9jZXNzUHJpdmlsZWdlLmNwcAkocmV2aXNp
b24gMjM1NTE0KQorKysgU291cmNlL1dURi93dGYvUHJvY2Vzc1ByaXZpbGVnZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTU3LDEyICs1NywxMiBAQCBib29sIGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJv
Y2Vzc1ByaXZpbGVnCiAKIHZvaWQgYWRkUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdl
IHByaXZpbGVnZSkKIHsKLSAgICBwcm9jZXNzUHJpdmlsZWdlcygpIHw9IHByaXZpbGVnZTsKKyAg
ICBwcm9jZXNzUHJpdmlsZWdlcygpLmFkZChwcml2aWxlZ2UpOwogfQogCiB2b2lkIHJlbW92ZVBy
b2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZSBwcml2aWxlZ2UpCiB7Ci0gICAgcHJvY2Vz
c1ByaXZpbGVnZXMoKSA9IHByb2Nlc3NQcml2aWxlZ2VzKCkgLSBwcml2aWxlZ2U7CisgICAgcHJv
Y2Vzc1ByaXZpbGVnZXMoKS5yZW1vdmUocHJpdmlsZWdlKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V1RGCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzU1MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMTkgQEAKKzIwMTgtMDgtMzAgIEFu
dHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgorCisgICAgICAgIFJlcGxhY2UgT3B0aW9u
U2V0IHw9IGFuZCAtPSBvcGVyYXRvcnMgd2l0aCBhZGQoKSBhbmQgcmVtb3ZlKCkgZnVuY3Rpb25z
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODkxNjkK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGFjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpyYW5nZU9mU3RyaW5nQ2xvc2VzdFRvUmFuZ2VJbkRpcmVjdGlvbiBj
b25zdCk6CisgICAgICAgICogY3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VGV4dERlY29yYXRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VGV4dEVtcGhh
c2lzUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVyQ29udmVydGVyOjpj
b252ZXJ0VGV4dFVuZGVybGluZVBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVp
bGRlckNvbnZlcnRlcjo6Y29udmVydFRleHREZWNvcmF0aW9uU2tpcCk6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRTcGVha0FzKToKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEhhbmdpbmdQdW5jdHVhdGlvbik6
CisgICAgICAgICogY3NzL3BhcnNlci9DU1NQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTUGFyc2VyOjpwYXJzZVN5c3RlbUNvbG9yKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnN0eWxlQ29sb3JPcHRpb25zIGNvbnN0KToK
KyAgICAgICAgKiBkb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6YWRkTWFya2VyKToKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6cmVtb3ZlTWFya2Vycyk6CisgICAgICAg
ICogZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXI6OmFkZFRocm90dGxpbmdSZWFzb24pOgorICAg
ICAgICAoV2ViQ29yZTo6U2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyOjpyZW1vdmVUaHJvdHRs
aW5nUmVhc29uKToKKyAgICAgICAgKiBkb20vU2VjdXJpdHlDb250ZXh0Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpTZWN1cml0eUNvbnRleHQ6OnNldEZvdW5kTWl4ZWRDb250ZW50KToKKyAgICAgICAg
KiBkb20vVUlFdmVudFdpdGhLZXlTdGF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpVSUV2ZW50
V2l0aEtleVN0YXRlOjptb2RpZmllcnNGcm9tSW5pdGlhbGl6ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6VUlFdmVudFdpdGhLZXlTdGF0ZTo6c2V0TW9kaWZpZXJLZXlzKToKKyAgICAgICAgKiBkb20v
VXNlckFjdGlvbkVsZW1lbnRTZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VXNlckFjdGlvbkVs
ZW1lbnRTZXQ6OnNldEZsYWdzKToKKyAgICAgICAgKiBlZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21t
YW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0ZUVkaXRDb21tYW5kOjptb3ZlUGFy
YWdyYXBocyk6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RWRpdG9yOjpyZXBsYWNlU2VsZWN0aW9uV2l0aEZyYWdtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkVkaXRvcjo6YXBwbGllZEVkaXRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpt
YXJrTWlzc3BlbGxpbmdzQWZ0ZXJUeXBpbmdUb1dvcmQpOgorICAgICAgICAoV2ViQ29yZTo6RWRp
dG9yOjptYXJrTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hcik6CisgICAgICAgIChXZWJDb3JlOjpF
ZGl0b3I6OnJlc29sdmVUZXh0Q2hlY2tpbmdUeXBlTWFzayk6CisgICAgICAgICogZWRpdGluZy9G
cmFtZVNlbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6bW92
ZVdpdGhvdXRWYWxpZGF0aW9uVG8pOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246
OnNldFNlbGVjdGVkUmFuZ2UpOgorICAgICAgICAqIGVkaXRpbmcvRnJhbWVTZWxlY3Rpb24uaDoK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpkZWZhdWx0U2V0U2VsZWN0aW9uT3B0
aW9ucyk6CisgICAgICAgICogZWRpdGluZy9Nb3ZlU2VsZWN0aW9uQ29tbWFuZC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpNb3ZlU2VsZWN0aW9uQ29tbWFuZDo6ZG9BcHBseSk6CisgICAgICAgICog
ZWRpdGluZy9TcGVsbENoZWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3BlbGxDaGVja2Vy
OjpkaWRDaGVja1N1Y2NlZWQpOgorICAgICAgICAqIGVkaXRpbmcvVGV4dENoZWNraW5nSGVscGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0TWlz
c3BlbGxpbmdPckJhZEdyYW1tYXIpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENoZWNraW5nSGVs
cGVyOjpndWVzc2VzRm9yTWlzc3BlbGxlZE9yVW5ncmFtbWF0aWNhbFJhbmdlIGNvbnN0KToKKyAg
ICAgICAgKiBlZGl0aW5nL1RleHRJdGVyYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWFy
Y2hCdWZmZXI6OlNlYXJjaEJ1ZmZlcik6CisgICAgICAgICogaHRtbC9IVE1MQW5jaG9yRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQW5jaG9yRWxlbWVudDo6cGFyc2VBdHRyaWJ1
dGUpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6cmVsb2FkKToKKyAgICAgICAg
KiBwYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZXh0TWVudUNvbnRyb2xsZXI6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKToKKyAgICAgICAgKiBw
YWdlL0RPTVdpbmRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OmZpbmQgY29u
c3QpOgorICAgICAgICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RHJhZ0NvbnRyb2xsZXI6OmNvbmNsdWRlRWRpdERyYWcpOgorICAgICAgICAqIHBhZ2UvRnJh
bWVTbmFwc2hvdHRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c25hcHNob3RGcmFtZVJlY3RX
aXRoQ2xpcCk6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6dXBkYXRlTGF5ZXJQb3NpdGlvbkZsYWdzKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmll
dzo6d2lsbFBhaW50Q29udGVudHMpOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpQYWdlOjpzZXRJc1Zpc2libGUpOgorICAgICAgICAqIHBhZ2UvUGVyZm9ybWFu
Y2VPYnNlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQZXJmb3JtYW5jZU9ic2VydmVyOjpv
YnNlcnZlKToKKyAgICAgICAgKiBwYWdlL1RleHRJbmRpY2F0b3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dEluZGljYXRvcjo6Y3JlYXRlV2l0aFJhbmdlKToKKyAgICAgICAgKiBwYWdlL1dp
bmRvd0ZlYXR1cmVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlRGlzYWJsZWRBZGFwdGF0
aW9ucyk6CisgICAgICAgICogcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFkZEhhc2hBbGdvcml0aG1zRm9y
SW5saW5lU2NyaXB0cyk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k6
OmFkZEhhc2hBbGdvcml0aG1zRm9ySW5saW5lU3R5bGVzaGVldHMpOgorICAgICAgICAqIHBhZ2Uv
Y3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdDo6cGFyc2VIYXNoU291cmNlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybUV2ZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpQbGF0
Zm9ybUV2ZW50OjpQbGF0Zm9ybUV2ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUGxhdGZv
cm1FdmVudEZhY3RvcnlJT1MubW06CisgICAgICAgIChXZWJDb3JlOjptb2RpZmllcnNGb3JFdmVu
dCk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1BsYXRmb3JtRXZlbnRGYWN0b3J5TWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6bW9kaWZpZXJzRm9yRXZlbnQpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6dXBkYXRl
TGF5ZXJQb3NpdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnVwZGF0ZUxh
eWVyUG9zaXRpb25zQWZ0ZXJTY3JvbGwpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6
OnBhaW50TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJD
b250ZW50c0FuZFJlZmxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBh
aW50TGF5ZXJDb250ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFpbnRG
b3JlZ3JvdW5kRm9yRnJhZ21lbnRzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJC
YWNraW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6cGFpbnRJ
bnRvTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjpwYWludENv
bnRlbnRzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVhc29uc0ZvckNvbXBv
c2l0aW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6
dXBkYXRlU2Nyb2xsQ29vcmRpbmF0ZWRTdGF0dXMpOgorICAgICAgICAqIHJlbmRlcmluZy9UZXh0
RGVjb3JhdGlvblBhaW50ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29sbGVjdFN0eWxlc0Zv
clJlbmRlcmVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvVGV4dFBhaW50U3R5bGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Y29tcHV0ZVRleHRQYWludFN0eWxlKToKKyAgICAgICAgKiByZW5kZXJp
bmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6
OmNoYW5nZVJlcXVpcmVzTGF5b3V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0
eWxlOjpjaGFuZ2VSZXF1aXJlc0xheWVyUmVwYWludCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTdHlsZTo6Y2hhbmdlUmVxdWlyZXNSZXBhaW50IGNvbnN0KToKKyAgICAgICAgKiB0
ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUZpbmRPcHRpb25z
KToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6Zm9yY2VSZWxvYWQpOgorICAgICAgICAo
V2ViQ29yZTo6SW50ZXJuYWxzOjpzZXRQYWdlVmlzaWJpbGl0eSk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnRlcm5hbHM6OnNldFBhZ2VJc0ZvY3VzZWRBbmRBY3RpdmUpOgorCiAyMDE4LTA4LTMwICBF
cmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgogCiAgICAgICAgIE1vY2sgdmlk
ZW8gZGV2aWNlcyBzaG91bGQgb25seSBzdXBwb3J0IGRpc2NyZXRlIHNpemVzCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5j
cHAJKHJldmlzaW9uIDIzNTUxNCkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc1MSw5ICs3NTEsOSBAQCBS
ZWZQdHI8UmFuZ2U+IEFjY2Vzc2liaWxpdHlPYmplY3Q6OnJhbmdlCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIAogICAgIGJvb2wgaXNCYWNrd2FyZFNlYXJjaCA9IHNlYXJjaERpcmVjdGlv
biA9PSBBY2Nlc3NpYmlsaXR5U2VhcmNoRGlyZWN0aW9uOjpQcmV2aW91czsKLSAgICBGaW5kT3B0
aW9ucyBmaW5kT3B0aW9ucyB7IHsgQXRXb3JkU3RhcnRzLCBBdFdvcmRFbmRzLCBDYXNlSW5zZW5z
aXRpdmUsIFN0YXJ0SW5TZWxlY3Rpb24gfSB9OworICAgIEZpbmRPcHRpb25zIGZpbmRPcHRpb25z
IHsgQXRXb3JkU3RhcnRzLCBBdFdvcmRFbmRzLCBDYXNlSW5zZW5zaXRpdmUsIFN0YXJ0SW5TZWxl
Y3Rpb24gfTsKICAgICBpZiAoaXNCYWNrd2FyZFNlYXJjaCkKLSAgICAgICAgZmluZE9wdGlvbnMg
fD0gQmFja3dhcmRzOworICAgICAgICBmaW5kT3B0aW9ucy5hZGQoQmFja3dhcmRzKTsKICAgICAK
ICAgICBSZWZQdHI8UmFuZ2U+IGNsb3Nlc3RTdHJpbmdSYW5nZSA9IG51bGxwdHI7CiAgICAgZm9y
IChjb25zdCBhdXRvJiBzZWFyY2hTdHJpbmcgOiBzZWFyY2hTdHJpbmdzKSB7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oCShyZXZpc2lvbiAyMzU1MTQp
CisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM5NCw3ICszOTQsNyBAQCBpbmxpbmUgT3B0aW9uU2V0PFRleHREZWNvcmF0aW9u
PiBTdHlsZUJ1CiAgICAgYXV0byByZXN1bHQgPSBSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHREZWNv
cmF0aW9uKCk7CiAgICAgaWYgKGlzPENTU1ZhbHVlTGlzdD4odmFsdWUpKSB7CiAgICAgICAgIGZv
ciAoYXV0byYgY3VycmVudFZhbHVlIDogZG93bmNhc3Q8Q1NTVmFsdWVMaXN0Pih2YWx1ZSkpCi0g
ICAgICAgICAgICByZXN1bHQgfD0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KGN1cnJlbnRW
YWx1ZS5nZXQoKSk7CisgICAgICAgICAgICByZXN1bHQuYWRkKGRvd25jYXN0PENTU1ByaW1pdGl2
ZVZhbHVlPihjdXJyZW50VmFsdWUuZ2V0KCkpKTsKICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KQEAgLTQ5OCw3ICs0OTgsNyBAQCBpbmxpbmUgT3B0aW9uU2V0PFRleHRFbXBoYXNpc1Bvc2l0
aW9uPiBTCiAKICAgICBPcHRpb25TZXQ8VGV4dEVtcGhhc2lzUG9zaXRpb24+IHBvc2l0aW9uOwog
ICAgIGZvciAoYXV0byYgY3VycmVudFZhbHVlIDogZG93bmNhc3Q8Q1NTVmFsdWVMaXN0Pih2YWx1
ZSkpCi0gICAgICAgIHBvc2l0aW9uIHw9IHZhbHVlVG9FbXBoYXNpc1Bvc2l0aW9uKGRvd25jYXN0
PENTU1ByaW1pdGl2ZVZhbHVlPihjdXJyZW50VmFsdWUuZ2V0KCkpKTsKKyAgICAgICAgcG9zaXRp
b24uYWRkKHZhbHVlVG9FbXBoYXNpc1Bvc2l0aW9uKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVl
PihjdXJyZW50VmFsdWUuZ2V0KCkpKSk7CiAgICAgcmV0dXJuIHBvc2l0aW9uOwogfQogCkBAIC02
NDUsNyArNjQ1LDcgQEAgaW5saW5lIE9wdGlvblNldDxUZXh0VW5kZXJsaW5lUG9zaXRpb24+IAog
CiAgICAgT3B0aW9uU2V0PFRleHRVbmRlcmxpbmVQb3NpdGlvbj4gY29tYmluZWRQb3NpdGlvbjsK
ICAgICBmb3IgKGF1dG8mIGN1cnJlbnRWYWx1ZSA6IGRvd25jYXN0PENTU1ZhbHVlTGlzdD4odmFs
dWUpKQotICAgICAgICBjb21iaW5lZFBvc2l0aW9uIHw9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlPihjdXJyZW50VmFsdWUuZ2V0KCkpOworICAgICAgICBjb21iaW5lZFBvc2l0aW9uLmFkZChk
b3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oY3VycmVudFZhbHVlLmdldCgpKSk7CiAgICAgcmV0
dXJuIGNvbWJpbmVkUG9zaXRpb247CiB9CiAKQEAgLTc1Myw3ICs3NTMsNyBAQCBpbmxpbmUgT3B0
aW9uU2V0PFRleHREZWNvcmF0aW9uU2tpcD4gU3R5CiAKICAgICBPcHRpb25TZXQ8VGV4dERlY29y
YXRpb25Ta2lwPiBza2lwOwogICAgIGZvciAoYXV0byYgY3VycmVudFZhbHVlIDogZG93bmNhc3Q8
Q1NTVmFsdWVMaXN0Pih2YWx1ZSkpCi0gICAgICAgIHNraXAgfD0gdmFsdWVUb0RlY29yYXRpb25T
a2lwKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPihjdXJyZW50VmFsdWUuZ2V0KCkpKTsKKyAg
ICAgICAgc2tpcC5hZGQodmFsdWVUb0RlY29yYXRpb25Ta2lwKGRvd25jYXN0PENTU1ByaW1pdGl2
ZVZhbHVlPihjdXJyZW50VmFsdWUuZ2V0KCkpKSk7CiAgICAgcmV0dXJuIHNraXA7CiB9CiAKQEAg
LTE1MDQsNyArMTUwNCw3IEBAIGlubGluZSBPcHRpb25TZXQ8U3BlYWtBcz4gU3R5bGVCdWlsZGVy
Q28KICAgICBhdXRvIHJlc3VsdCA9IFJlbmRlclN0eWxlOjppbml0aWFsU3BlYWtBcygpOwogICAg
IGlmIChpczxDU1NWYWx1ZUxpc3Q+KHZhbHVlKSkgewogICAgICAgICBmb3IgKGF1dG8mIGN1cnJl
bnRWYWx1ZSA6IGRvd25jYXN0PENTU1ZhbHVlTGlzdD4odmFsdWUpKQotICAgICAgICAgICAgcmVz
dWx0IHw9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPihjdXJyZW50VmFsdWUuZ2V0KCkpOwor
ICAgICAgICAgICAgcmVzdWx0LmFkZChkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oY3VycmVu
dFZhbHVlLmdldCgpKSk7CiAgICAgfQogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC0xNTE0LDcg
KzE1MTQsNyBAQCBpbmxpbmUgT3B0aW9uU2V0PEhhbmdpbmdQdW5jdHVhdGlvbj4gU3R5CiAgICAg
YXV0byByZXN1bHQgPSBSZW5kZXJTdHlsZTo6aW5pdGlhbEhhbmdpbmdQdW5jdHVhdGlvbigpOwog
ICAgIGlmIChpczxDU1NWYWx1ZUxpc3Q+KHZhbHVlKSkgewogICAgICAgICBmb3IgKGF1dG8mIGN1
cnJlbnRWYWx1ZSA6IGRvd25jYXN0PENTU1ZhbHVlTGlzdD4odmFsdWUpKQotICAgICAgICAgICAg
cmVzdWx0IHw9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPihjdXJyZW50VmFsdWUuZ2V0KCkp
OworICAgICAgICAgICAgcmVzdWx0LmFkZChkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oY3Vy
cmVudFZhbHVlLmdldCgpKSk7CiAgICAgfQogICAgIHJldHVybiByZXN1bHQ7CiB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXIuY3BwCShyZXZpc2lvbiAyMzU1MTQpCisr
KyBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTExOSw3ICsxMTksNyBAQCBDb2xvciBDU1NQYXJzZXI6OnBhcnNlU3lzdGVtQ29sb3IoY29u
c3QgCiAKICAgICBPcHRpb25TZXQ8U3R5bGVDb2xvcjo6T3B0aW9ucz4gb3B0aW9uczsKICAgICBp
ZiAoY29udGV4dCAmJiBjb250ZXh0LT51c2VTeXN0ZW1BcHBlYXJhbmNlKQotICAgICAgICBvcHRp
b25zIHw9IFN0eWxlQ29sb3I6Ok9wdGlvbnM6OlVzZVN5c3RlbUFwcGVhcmFuY2U7CisgICAgICAg
IG9wdGlvbnMuYWRkKFN0eWxlQ29sb3I6Ok9wdGlvbnM6OlVzZVN5c3RlbUFwcGVhcmFuY2UpOwog
ICAgIHJldHVybiBSZW5kZXJUaGVtZTo6c2luZ2xldG9uKCkuc3lzdGVtQ29sb3IoaWQsIG9wdGlv
bnMpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDIzNTUxNCkK
KysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcx
NDIsOSArNzE0Miw5IEBAIE9wdGlvblNldDxTdHlsZUNvbG9yOjpPcHRpb25zPiBEb2N1bWVudDoK
IHsKICAgICBPcHRpb25TZXQ8U3R5bGVDb2xvcjo6T3B0aW9ucz4gb3B0aW9uczsKICAgICBpZiAo
dXNlU3lzdGVtQXBwZWFyYW5jZSgpKQotICAgICAgICBvcHRpb25zIHw9IFN0eWxlQ29sb3I6Ok9w
dGlvbnM6OlVzZVN5c3RlbUFwcGVhcmFuY2U7CisgICAgICAgIG9wdGlvbnMuYWRkKFN0eWxlQ29s
b3I6Ok9wdGlvbnM6OlVzZVN5c3RlbUFwcGVhcmFuY2UpOwogICAgIGlmICh1c2VEYXJrQXBwZWFy
YW5jZSgpKQotICAgICAgICBvcHRpb25zIHw9IFN0eWxlQ29sb3I6Ok9wdGlvbnM6OlVzZURhcmtB
cHBlYXJhbmNlOworICAgICAgICBvcHRpb25zLmFkZChTdHlsZUNvbG9yOjpPcHRpb25zOjpVc2VE
YXJrQXBwZWFyYW5jZSk7CiAgICAgcmV0dXJuIG9wdGlvbnM7CiB9CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAy
MzU1MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzMxLDcgKzMzMSw3IEBAIHZvaWQgRG9jdW1lbnRNYXJrZXJD
b250cm9sbGVyOjphZGRNYXJrZXIKICAgICAgICAgICAgIGRvd25jYXN0PFJlbmRlckJsb2NrRmxv
dz4oKnJlbmRlcmVyKS5lbnN1cmVMaW5lQm94ZXMoKTsKICAgICB9CiAKLSAgICBtX3Bvc3NpYmx5
RXhpc3RpbmdNYXJrZXJUeXBlcyB8PSBuZXdNYXJrZXIudHlwZSgpOworICAgIG1fcG9zc2libHlF
eGlzdGluZ01hcmtlclR5cGVzLmFkZChuZXdNYXJrZXIudHlwZSgpKTsKIAogICAgIHN0ZDo6dW5p
cXVlX3B0cjxNYXJrZXJMaXN0PiYgbGlzdCA9IG1fbWFya2Vycy5hZGQobm9kZSwgbnVsbHB0ciku
aXRlcmF0b3ItPnZhbHVlOwogCkBAIC01ODcsNyArNTg3LDcgQEAgdm9pZCBEb2N1bWVudE1hcmtl
ckNvbnRyb2xsZXI6OnJlbW92ZU1hcgogICAgICAgICAgICAgcmVtb3ZlTWFya2Vyc0Zyb21MaXN0
KGl0ZXJhdG9yLCBtYXJrZXJUeXBlcyk7CiAgICAgfQogCi0gICAgbV9wb3NzaWJseUV4aXN0aW5n
TWFya2VyVHlwZXMgLT0gbWFya2VyVHlwZXM7CisgICAgbV9wb3NzaWJseUV4aXN0aW5nTWFya2Vy
VHlwZXMucmVtb3ZlKG1hcmtlclR5cGVzKTsKIH0KIAogdm9pZCBEb2N1bWVudE1hcmtlckNvbnRy
b2xsZXI6OnJlbW92ZU1hcmtlcnNGcm9tTGlzdChNYXJrZXJNYXA6Oml0ZXJhdG9yIGl0ZXJhdG9y
LCBPcHRpb25TZXQ8RG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGU+IG1hcmtlclR5cGVzKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxl
ci5jcHAJKHJldmlzaW9uIDIzNTUxNCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRlZEFu
aW1hdGlvbkNvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjEsNyArMTIxLDcgQEAg
dm9pZCBTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXI6OmFkZFRocgogICAgIGlmIChtX3Rocm90
dGxpbmdSZWFzb25zLmNvbnRhaW5zKHJlYXNvbikpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1f
dGhyb3R0bGluZ1JlYXNvbnMgfD0gcmVhc29uOworICAgIG1fdGhyb3R0bGluZ1JlYXNvbnMuYWRk
KHJlYXNvbik7CiAKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJhZGRUaHJvdHRsaW5nUmVh
c29uKCVzKSAtPiAlcyIsIHRocm90dGxpbmdSZWFzb25Ub1N0cmluZyhyZWFzb24pLCB0aHJvdHRs
aW5nUmVhc29uc1RvU3RyaW5nKG1fdGhyb3R0bGluZ1JlYXNvbnMpLnV0ZjgoKS5kYXRhKCkpOwog
CkBAIC0xNDAsNyArMTQwLDcgQEAgdm9pZCBTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXI6OnJl
bW92ZQogICAgIGlmICghbV90aHJvdHRsaW5nUmVhc29ucy5jb250YWlucyhyZWFzb24pKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBtX3Rocm90dGxpbmdSZWFzb25zIC09IHJlYXNvbjsKKyAgICBt
X3Rocm90dGxpbmdSZWFzb25zLnJlbW92ZShyZWFzb24pOwogCiAgICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRCgicmVtb3ZlVGhyb3R0bGluZ1JlYXNvbiglcykgLT4gJXMiLCB0aHJvdHRsaW5nUmVh
c29uVG9TdHJpbmcocmVhc29uKSwgdGhyb3R0bGluZ1JlYXNvbnNUb1N0cmluZyhtX3Rocm90dGxp
bmdSZWFzb25zKS51dGY4KCkuZGF0YSgpKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1Nl
Y3VyaXR5Q29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9TZWN1cml0
eUNvbnRleHQuaAkocmV2aXNpb24gMjM1NTE0KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1NlY3Vy
aXR5Q29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC04OSw3ICs4OSw3IEBAIHB1YmxpYzoKICAg
ICB9OwogCiAgICAgY29uc3QgT3B0aW9uU2V0PE1peGVkQ29udGVudFR5cGU+JiBmb3VuZE1peGVk
Q29udGVudCgpIGNvbnN0IHsgcmV0dXJuIG1fbWl4ZWRDb250ZW50VHlwZXM7IH0KLSAgICB2b2lk
IHNldEZvdW5kTWl4ZWRDb250ZW50KE1peGVkQ29udGVudFR5cGUgdHlwZSkgeyBtX21peGVkQ29u
dGVudFR5cGVzIHw9IHR5cGU7IH0KKyAgICB2b2lkIHNldEZvdW5kTWl4ZWRDb250ZW50KE1peGVk
Q29udGVudFR5cGUgdHlwZSkgeyBtX21peGVkQ29udGVudFR5cGVzLmFkZCh0eXBlKTsgfQogICAg
IGJvb2wgZ2VvbG9jYXRpb25BY2Nlc3NlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZ2VvbG9jYXRpb25B
Y2Nlc3NlZDsgfQogICAgIHZvaWQgc2V0R2VvbG9jYXRpb25BY2Nlc3NlZCgpIHsgbV9nZW9sb2Nh
dGlvbkFjY2Vzc2VkID0gdHJ1ZTsgfQogICAgIGJvb2wgc2VjdXJlQ29va2llc0FjY2Vzc2VkKCkg
Y29uc3QgeyByZXR1cm4gbV9zZWN1cmVDb29raWVzQWNjZXNzZWQ7IH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2RvbS9VSUV2ZW50V2l0aEtleVN0YXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9kb20vVUlFdmVudFdpdGhLZXlTdGF0ZS5jcHAJKHJldmlzaW9uIDIzNTUxNCkKKysr
IFNvdXJjZS9XZWJDb3JlL2RvbS9VSUV2ZW50V2l0aEtleVN0YXRlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjcsMTcgKzI3LDE3IEBAIGF1dG8gVUlFdmVudFdpdGhLZXlTdGF0ZTo6bW9kaWZpZXJz
RnJvbUkKIHsKICAgICBPcHRpb25TZXQ8TW9kaWZpZXI+IHJlc3VsdDsKICAgICBpZiAoaW5pdGlh
bGl6ZXIuY3RybEtleSkKLSAgICAgICAgcmVzdWx0IHw9IE1vZGlmaWVyOjpDdHJsS2V5OworICAg
ICAgICByZXN1bHQuYWRkKE1vZGlmaWVyOjpDdHJsS2V5KTsKICAgICBpZiAoaW5pdGlhbGl6ZXIu
YWx0S2V5KQotICAgICAgICByZXN1bHQgfD0gTW9kaWZpZXI6OkFsdEtleTsKKyAgICAgICAgcmVz
dWx0LmFkZChNb2RpZmllcjo6QWx0S2V5KTsKICAgICBpZiAoaW5pdGlhbGl6ZXIuc2hpZnRLZXkp
Ci0gICAgICAgIHJlc3VsdCB8PSBNb2RpZmllcjo6U2hpZnRLZXk7CisgICAgICAgIHJlc3VsdC5h
ZGQoTW9kaWZpZXI6OlNoaWZ0S2V5KTsKICAgICBpZiAoaW5pdGlhbGl6ZXIubWV0YUtleSkKLSAg
ICAgICAgcmVzdWx0IHw9IE1vZGlmaWVyOjpNZXRhS2V5OworICAgICAgICByZXN1bHQuYWRkKE1v
ZGlmaWVyOjpNZXRhS2V5KTsKICAgICBpZiAoaW5pdGlhbGl6ZXIubW9kaWZpZXJBbHRHcmFwaCkK
LSAgICAgICAgcmVzdWx0IHw9IE1vZGlmaWVyOjpBbHRHcmFwaEtleTsKKyAgICAgICAgcmVzdWx0
LmFkZChNb2RpZmllcjo6QWx0R3JhcGhLZXkpOwogICAgIGlmIChpbml0aWFsaXplci5tb2RpZmll
ckNhcHNMb2NrKQotICAgICAgICByZXN1bHQgfD0gTW9kaWZpZXI6OkNhcHNMb2NrS2V5OworICAg
ICAgICByZXN1bHQuYWRkKE1vZGlmaWVyOjpDYXBzTG9ja0tleSk7CiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIApAQCAtNjMsMTUgKzYzLDE1IEBAIHZvaWQgVUlFdmVudFdpdGhLZXlTdGF0ZTo6c2V0
TW9kaWZpZXJLZXkKIHsKICAgICBPcHRpb25TZXQ8TW9kaWZpZXI+IHJlc3VsdDsKICAgICBpZiAo
Y3RybEtleSkKLSAgICAgICAgcmVzdWx0IHw9IE1vZGlmaWVyOjpDdHJsS2V5OworICAgICAgICBy
ZXN1bHQuYWRkKE1vZGlmaWVyOjpDdHJsS2V5KTsKICAgICBpZiAoYWx0S2V5KQotICAgICAgICBy
ZXN1bHQgfD0gTW9kaWZpZXI6OkFsdEtleTsKKyAgICAgICAgcmVzdWx0LmFkZChNb2RpZmllcjo6
QWx0S2V5KTsKICAgICBpZiAoc2hpZnRLZXkpCi0gICAgICAgIHJlc3VsdCB8PSBNb2RpZmllcjo6
U2hpZnRLZXk7CisgICAgICAgIHJlc3VsdC5hZGQoTW9kaWZpZXI6OlNoaWZ0S2V5KTsKICAgICBp
ZiAobWV0YUtleSkKLSAgICAgICAgcmVzdWx0IHw9IE1vZGlmaWVyOjpNZXRhS2V5OworICAgICAg
ICByZXN1bHQuYWRkKE1vZGlmaWVyOjpNZXRhS2V5KTsKICAgICBpZiAoYWx0R3JhcGhLZXkpCi0g
ICAgICAgIHJlc3VsdCB8PSBNb2RpZmllcjo6QWx0R3JhcGhLZXk7CisgICAgICAgIHJlc3VsdC5h
ZGQoTW9kaWZpZXI6OkFsdEdyYXBoS2V5KTsKICAgICBtX21vZGlmaWVycyA9IHJlc3VsdDsKIH0K
IApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1VzZXJBY3Rpb25FbGVtZW50U2V0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vVXNlckFjdGlvbkVsZW1lbnRTZXQuY3BwCShy
ZXZpc2lvbiAyMzU1MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vVXNlckFjdGlvbkVsZW1lbnRT
ZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Niw3ICs2Niw3IEBAIHZvaWQgVXNlckFjdGlvbkVs
ZW1lbnRTZXQ6OnNldEZsYWdzKEVsZW0KIHsKICAgICBBU1NFUlQoIWZsYWdzLmlzRW1wdHkoKSk7
CiAKLSAgICBtX2VsZW1lbnRzLmFkZCgmZWxlbWVudCwgT3B0aW9uU2V0PEZsYWc+IHsgfSkuaXRl
cmF0b3ItPnZhbHVlIHw9IGZsYWdzOworICAgIG1fZWxlbWVudHMuZW5zdXJlKCZlbGVtZW50LCBb
XSB7IHJldHVybiBPcHRpb25TZXQ8RmxhZz4oKTsgfSkuaXRlcmF0b3ItPnZhbHVlLmFkZChmbGFn
cyk7CiAgICAgZWxlbWVudC5zZXRVc2VyQWN0aW9uRWxlbWVudCh0cnVlKTsKIH0KIApJbmRleDog
U291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAJKHJl
dmlzaW9uIDIzNTUxNCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENv
bW1hbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDk0LDcgKzE0OTQsNyBAQCB2b2lkIENvbXBv
c2l0ZUVkaXRDb21tYW5kOjptb3ZlUGFyYWdyYXBoCiAgICAgQVNTRVJUKGVuZGluZ1NlbGVjdGlv
bigpLmlzQ2FyZXRPclJhbmdlKCkpOwogICAgIE9wdGlvblNldDxSZXBsYWNlU2VsZWN0aW9uQ29t
bWFuZDo6Q29tbWFuZE9wdGlvbj4gb3B0aW9ucyB7IFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpT
ZWxlY3RSZXBsYWNlbWVudCwgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6Ok1vdmluZ1BhcmFncmFw
aCB9OwogICAgIGlmICghcHJlc2VydmVTdHlsZSkKLSAgICAgICAgb3B0aW9ucyB8PSBSZXBsYWNl
U2VsZWN0aW9uQ29tbWFuZDo6TWF0Y2hTdHlsZTsKKyAgICAgICAgb3B0aW9ucy5hZGQoUmVwbGFj
ZVNlbGVjdGlvbkNvbW1hbmQ6Ok1hdGNoU3R5bGUpOwogICAgIGFwcGx5Q29tbWFuZFRvQ29tcG9z
aXRlKFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpjcmVhdGUoZG9jdW1lbnQoKSwgV1RGTW92ZShm
cmFnbWVudCksIG9wdGlvbnMpKTsKIAogICAgIGZyYW1lKCkuZWRpdG9yKCkubWFya01pc3NwZWxs
aW5nc0FuZEJhZEdyYW1tYXIoZW5kaW5nU2VsZWN0aW9uKCkpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdG9yLmNwcAkocmV2aXNpb24gMjM1NTE0KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MzQsMTMgKzYzNCwxMyBAQCB2b2lkIEVk
aXRvcjo6cmVwbGFjZVNlbGVjdGlvbldpdGhGcmFnbWVuCiAKICAgICBPcHRpb25TZXQ8UmVwbGFj
ZVNlbGVjdGlvbkNvbW1hbmQ6OkNvbW1hbmRPcHRpb24+IG9wdGlvbnMgeyBSZXBsYWNlU2VsZWN0
aW9uQ29tbWFuZDo6UHJldmVudE5lc3RpbmcsIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpTYW5p
dGl6ZUZyYWdtZW50IH07CiAgICAgaWYgKHNlbGVjdFJlcGxhY2VtZW50KQotICAgICAgICBvcHRp
b25zIHw9IFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpTZWxlY3RSZXBsYWNlbWVudDsKKyAgICAg
ICAgb3B0aW9ucy5hZGQoUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OlNlbGVjdFJlcGxhY2VtZW50
KTsKICAgICBpZiAoc21hcnRSZXBsYWNlKQotICAgICAgICBvcHRpb25zIHw9IFJlcGxhY2VTZWxl
Y3Rpb25Db21tYW5kOjpTbWFydFJlcGxhY2U7CisgICAgICAgIG9wdGlvbnMuYWRkKFJlcGxhY2VT
ZWxlY3Rpb25Db21tYW5kOjpTbWFydFJlcGxhY2UpOwogICAgIGlmIChtYXRjaFN0eWxlKQotICAg
ICAgICBvcHRpb25zIHw9IFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpNYXRjaFN0eWxlOworICAg
ICAgICBvcHRpb25zLmFkZChSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6TWF0Y2hTdHlsZSk7CiAg
ICAgaWYgKG1haWxCbG9ja3F1b3RlSGFuZGxpbmcgPT0gTWFpbEJsb2NrcXVvdGVIYW5kbGluZzo6
SWdub3JlQmxvY2txdW90ZSkKLSAgICAgICAgb3B0aW9ucyB8PSBSZXBsYWNlU2VsZWN0aW9uQ29t
bWFuZDo6SWdub3JlTWFpbEJsb2NrcXVvdGU7CisgICAgICAgIG9wdGlvbnMuYWRkKFJlcGxhY2VT
ZWxlY3Rpb25Db21tYW5kOjpJZ25vcmVNYWlsQmxvY2txdW90ZSk7CiAKICAgICBhdXRvIGNvbW1h
bmQgPSBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6Y3JlYXRlKGRvY3VtZW50KCksICZmcmFnbWVu
dCwgb3B0aW9ucywgZWRpdGluZ0FjdGlvbik7CiAgICAgY29tbWFuZC0+YXBwbHkoKTsKQEAgLTEw
NzMsNyArMTA3Myw3IEBAIHZvaWQgRWRpdG9yOjphcHBsaWVkRWRpdGluZyhDb21wb3NpdGVFZGkK
ICAgICAgICAgLy8gRG9uJ3QgY2xlYXIgdGhlIHR5cGluZyBzdHlsZSB3aXRoIHRoaXMgc2VsZWN0
aW9uIGNoYW5nZS4gV2UgZG8gdGhvc2UgdGhpbmdzIGVsc2V3aGVyZSBpZiBuZWNlc3NhcnkuCiAg
ICAgICAgIE9wdGlvblNldDxGcmFtZVNlbGVjdGlvbjo6U2V0U2VsZWN0aW9uT3B0aW9uPiBvcHRp
b25zOwogICAgICAgICBpZiAoY29tbWFuZC5pc0RpY3RhdGlvbkNvbW1hbmQoKSkKLSAgICAgICAg
ICAgIG9wdGlvbnMgfD0gRnJhbWVTZWxlY3Rpb246OkRpY3RhdGlvblRyaWdnZXJlZDsKKyAgICAg
ICAgICAgIG9wdGlvbnMuYWRkKEZyYW1lU2VsZWN0aW9uOjpEaWN0YXRpb25UcmlnZ2VyZWQpOwog
CiAgICAgICAgIGNoYW5nZVNlbGVjdGlvbkFmdGVyQ29tbWFuZChuZXdTZWxlY3Rpb24sIG9wdGlv
bnMpOwogICAgIH0KQEAgLTIzMzksNyArMjMzOSw3IEBAIHZvaWQgRWRpdG9yOjptYXJrTWlzc3Bl
bGxpbmdzQWZ0ZXJUeXBpbmcKICAgICBVTlVTRURfUEFSQU0oZG9SZXBsYWNlbWVudCk7CiAgICAg
T3B0aW9uU2V0PFRleHRDaGVja2luZ1R5cGU+IHRleHRDaGVja2luZ09wdGlvbnM7CiAgICAgaWYg
KGlzQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkpCi0gICAgICAgIHRleHRDaGVja2lu
Z09wdGlvbnMgfD0gVGV4dENoZWNraW5nVHlwZTo6U3BlbGxpbmc7CisgICAgICAgIHRleHRDaGVj
a2luZ09wdGlvbnMuYWRkKFRleHRDaGVja2luZ1R5cGU6OlNwZWxsaW5nKTsKICAgICBpZiAoIXRl
eHRDaGVja2luZ09wdGlvbnMuY29udGFpbnMoVGV4dENoZWNraW5nVHlwZTo6U3BlbGxpbmcpKQog
ICAgICAgICByZXR1cm47CiAKQEAgLTIzNTcsNyArMjM1Nyw3IEBAIHZvaWQgRWRpdG9yOjptYXJr
TWlzc3BlbGxpbmdzQWZ0ZXJUeXBpbmcKICAgICAgICAgT3B0aW9uU2V0PFRleHRDaGVja2luZ1R5
cGU+IHRleHRDaGVja2luZ09wdGlvbnM7CiAKICAgICAgICAgaWYgKGlzQ29udGludW91c1NwZWxs
Q2hlY2tpbmdFbmFibGVkKCkpCi0gICAgICAgICAgICB0ZXh0Q2hlY2tpbmdPcHRpb25zIHw9IFRl
eHRDaGVja2luZ1R5cGU6OlNwZWxsaW5nOworICAgICAgICAgICAgdGV4dENoZWNraW5nT3B0aW9u
cy5hZGQoVGV4dENoZWNraW5nVHlwZTo6U3BlbGxpbmcpOwogCiAjaWYgVVNFKEFVVE9NQVRJQ19U
RVhUX1JFUExBQ0VNRU5UKQogICAgICAgICBpZiAoZG9SZXBsYWNlbWVudApAQCAtMjM2NiwxMyAr
MjM2NiwxMyBAQCB2b2lkIEVkaXRvcjo6bWFya01pc3NwZWxsaW5nc0FmdGVyVHlwaW5nCiAgICAg
ICAgICAgICAgICAgfHwgaXNBdXRvbWF0aWNEYXNoU3Vic3RpdHV0aW9uRW5hYmxlZCgpCiAgICAg
ICAgICAgICAgICAgfHwgaXNBdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnRFbmFibGVkKCkKICAgICAg
ICAgICAgICAgICB8fCAodGV4dENoZWNraW5nT3B0aW9ucy5jb250YWlucyhUZXh0Q2hlY2tpbmdU
eXBlOjpTcGVsbGluZykgJiYgaXNBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb25FbmFibGVkKCkp
KSkKLSAgICAgICAgICAgIHRleHRDaGVja2luZ09wdGlvbnMgfD0gVGV4dENoZWNraW5nVHlwZTo6
UmVwbGFjZW1lbnQ7CisgICAgICAgICAgICB0ZXh0Q2hlY2tpbmdPcHRpb25zLmFkZChUZXh0Q2hl
Y2tpbmdUeXBlOjpSZXBsYWNlbWVudCk7CiAjZW5kaWYKICAgICAgICAgaWYgKCF0ZXh0Q2hlY2tp
bmdPcHRpb25zLmNvbnRhaW5zKFRleHRDaGVja2luZ1R5cGU6OlNwZWxsaW5nKSAmJiAhdGV4dENo
ZWNraW5nT3B0aW9ucy5jb250YWlucyhUZXh0Q2hlY2tpbmdUeXBlOjpSZXBsYWNlbWVudCkpCiAg
ICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgaWYgKGlzR3JhbW1hckNoZWNraW5nRW5hYmxl
ZCgpKQotICAgICAgICAgICAgdGV4dENoZWNraW5nT3B0aW9ucyB8PSBUZXh0Q2hlY2tpbmdUeXBl
OjpHcmFtbWFyOworICAgICAgICAgICAgdGV4dENoZWNraW5nT3B0aW9ucy5hZGQoVGV4dENoZWNr
aW5nVHlwZTo6R3JhbW1hcik7CiAKICAgICAgICAgYXV0byBzZW50ZW5jZVN0YXJ0ID0gc3RhcnRP
ZlNlbnRlbmNlKHdvcmRTdGFydCk7CiAgICAgICAgIGF1dG8gc2VudGVuY2VFbmQgPSBlbmRPZlNl
bnRlbmNlKHdvcmRTdGFydCk7CkBAIC0yODM4LDcgKzI4MzgsNyBAQCB2b2lkIEVkaXRvcjo6bWFy
a01pc3NwZWxsaW5nc0FuZEJhZEdyYW1tCiAgICAgICAgIC8vIG1hcmtNaXNzcGVsbGluZ3NBbmRC
YWRHcmFtbWFyKCkgaXMgdHJpZ2dlcmVkIGJ5IHNlbGVjdGlvbiBjaGFuZ2UsIGluIHdoaWNoIGNh
c2Ugd2UgY2hlY2sgc3BlbGxpbmcgYW5kIGdyYW1tYXIsIGJ1dCBkb24ndCBhdXRvY29ycmVjdCBt
aXNzcGVsbGluZ3MuCiAgICAgICAgIE9wdGlvblNldDxUZXh0Q2hlY2tpbmdUeXBlPiB0ZXh0Q2hl
Y2tpbmdPcHRpb25zIHsgVGV4dENoZWNraW5nVHlwZTo6U3BlbGxpbmcgfTsKICAgICAgICAgaWYg
KG1hcmtHcmFtbWFyICYmIGlzR3JhbW1hckNoZWNraW5nRW5hYmxlZCgpKQotICAgICAgICAgICAg
dGV4dENoZWNraW5nT3B0aW9ucyB8PSBUZXh0Q2hlY2tpbmdUeXBlOjpHcmFtbWFyOworICAgICAg
ICAgICAgdGV4dENoZWNraW5nT3B0aW9ucy5hZGQoVGV4dENoZWNraW5nVHlwZTo6R3JhbW1hcik7
CiAgICAgICAgIGF1dG8gc3BlbGxDaGVja2luZ1JhbmdlID0gc3BlbGxpbmdTZWxlY3Rpb24udG9O
b3JtYWxpemVkUmFuZ2UoKTsKICAgICAgICAgbWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1t
YXJJblJhbmdlcyh0ZXh0Q2hlY2tpbmdPcHRpb25zLCBzcGVsbENoZWNraW5nUmFuZ2UuY29weVJl
ZigpLCBzcGVsbENoZWNraW5nUmFuZ2UuY29weVJlZigpLCBncmFtbWFyU2VsZWN0aW9uLnRvTm9y
bWFsaXplZFJhbmdlKCkpOwogICAgICAgICByZXR1cm47CkBAIC0zNzMzLDMwICszNzMzLDMwIEBA
IE9wdGlvblNldDxUZXh0Q2hlY2tpbmdUeXBlPiBFZGl0b3I6OnJlc28KIAogICAgIE9wdGlvblNl
dDxUZXh0Q2hlY2tpbmdUeXBlPiBjaGVja2luZ1R5cGVzOwogICAgIGlmIChzaG91bGRNYXJrU3Bl
bGxpbmcpCi0gICAgICAgIGNoZWNraW5nVHlwZXMgfD0gVGV4dENoZWNraW5nVHlwZTo6U3BlbGxp
bmc7CisgICAgICAgIGNoZWNraW5nVHlwZXMuYWRkKFRleHRDaGVja2luZ1R5cGU6OlNwZWxsaW5n
KTsKICAgICBpZiAoc2hvdWxkTWFya0dyYW1tYXIpCi0gICAgICAgIGNoZWNraW5nVHlwZXMgfD0g
VGV4dENoZWNraW5nVHlwZTo6R3JhbW1hcjsKKyAgICAgICAgY2hlY2tpbmdUeXBlcy5hZGQoVGV4
dENoZWNraW5nVHlwZTo6R3JhbW1hcik7CiAjaWYgIVBMQVRGT1JNKElPUykKICAgICBpZiAoc2hv
dWxkQ2hlY2tGb3JDb3JyZWN0aW9uKQotICAgICAgICBjaGVja2luZ1R5cGVzIHw9IFRleHRDaGVj
a2luZ1R5cGU6OkNvcnJlY3Rpb247CisgICAgICAgIGNoZWNraW5nVHlwZXMuYWRkKFRleHRDaGVj
a2luZ1R5cGU6OkNvcnJlY3Rpb24pOwogICAgIGlmIChzaG91bGRTaG93Q29ycmVjdGlvblBhbmVs
KQotICAgICAgICBjaGVja2luZ1R5cGVzIHw9IFRleHRDaGVja2luZ1R5cGU6OlNob3dDb3JyZWN0
aW9uUGFuZWw7CisgICAgICAgIGNoZWNraW5nVHlwZXMuYWRkKFRleHRDaGVja2luZ1R5cGU6OlNo
b3dDb3JyZWN0aW9uUGFuZWwpOwogCiAjaWYgVVNFKEFVVE9NQVRJQ19URVhUX1JFUExBQ0VNRU5U
KQogICAgIGJvb2wgc2hvdWxkUGVyZm9ybVJlcGxhY2VtZW50ID0gdGV4dENoZWNraW5nT3B0aW9u
cy5jb250YWlucyhUZXh0Q2hlY2tpbmdUeXBlOjpSZXBsYWNlbWVudCk7CiAgICAgaWYgKHNob3Vs
ZFBlcmZvcm1SZXBsYWNlbWVudCkgewogICAgICAgICBpZiAoIW9ubHlBbGxvd3NUZXh0UmVwbGFj
ZW1lbnQpIHsKICAgICAgICAgICAgIGlmIChpc0F1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVk
KCkpCi0gICAgICAgICAgICAgICAgY2hlY2tpbmdUeXBlcyB8PSBUZXh0Q2hlY2tpbmdUeXBlOjpM
aW5rOworICAgICAgICAgICAgICAgIGNoZWNraW5nVHlwZXMuYWRkKFRleHRDaGVja2luZ1R5cGU6
OkxpbmspOwogICAgICAgICAgICAgaWYgKGlzQXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb25FbmFi
bGVkKCkpCi0gICAgICAgICAgICAgICAgY2hlY2tpbmdUeXBlcyB8PSBUZXh0Q2hlY2tpbmdUeXBl
OjpRdW90ZTsKKyAgICAgICAgICAgICAgICBjaGVja2luZ1R5cGVzLmFkZChUZXh0Q2hlY2tpbmdU
eXBlOjpRdW90ZSk7CiAgICAgICAgICAgICBpZiAoaXNBdXRvbWF0aWNEYXNoU3Vic3RpdHV0aW9u
RW5hYmxlZCgpKQotICAgICAgICAgICAgICAgIGNoZWNraW5nVHlwZXMgfD0gVGV4dENoZWNraW5n
VHlwZTo6RGFzaDsKKyAgICAgICAgICAgICAgICBjaGVja2luZ1R5cGVzLmFkZChUZXh0Q2hlY2tp
bmdUeXBlOjpEYXNoKTsKICAgICAgICAgICAgIGlmIChzaG91bGRNYXJrU3BlbGxpbmcgJiYgaXNB
dXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb25FbmFibGVkKCkpCi0gICAgICAgICAgICAgICAgY2hl
Y2tpbmdUeXBlcyB8PSBUZXh0Q2hlY2tpbmdUeXBlOjpDb3JyZWN0aW9uOworICAgICAgICAgICAg
ICAgIGNoZWNraW5nVHlwZXMuYWRkKFRleHRDaGVja2luZ1R5cGU6OkNvcnJlY3Rpb24pOwogICAg
ICAgICB9CiAgICAgICAgIGlmIChpc0F1dG9tYXRpY1RleHRSZXBsYWNlbWVudEVuYWJsZWQoKSkK
LSAgICAgICAgICAgIGNoZWNraW5nVHlwZXMgfD0gVGV4dENoZWNraW5nVHlwZTo6UmVwbGFjZW1l
bnQ7CisgICAgICAgICAgICBjaGVja2luZ1R5cGVzLmFkZChUZXh0Q2hlY2tpbmdUeXBlOjpSZXBs
YWNlbWVudCk7CiAgICAgfQogI2VuZGlmCiAjZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCShyZXZpc2lvbiAyMzU1
MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTg3LDE1ICsxODcsMTUgQEAgdm9pZCBGcmFtZVNlbGVjdGlvbjo6bW92ZVdp
dGhvdXRWYWxpZGF0aQogICAgIEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50IG5ld0ludGVudCA9IGlu
dGVudC50eXBlID09IEFYVGV4dFN0YXRlQ2hhbmdlVHlwZVVua25vd24gPyBBWFRleHRTdGF0ZUNo
YW5nZUludGVudChBWFRleHRTdGF0ZUNoYW5nZVR5cGVTZWxlY3Rpb25Nb3ZlLCBBWFRleHRTZWxl
Y3Rpb24geyBBWFRleHRTZWxlY3Rpb25EaXJlY3Rpb25EaXNjb250aWd1b3VzLCBBWFRleHRTZWxl
Y3Rpb25HcmFudWxhcml0eVVua25vd24sIGZhbHNlIH0pIDogaW50ZW50OwogICAgIGF1dG8gb3B0
aW9ucyA9IGRlZmF1bHRTZXRTZWxlY3Rpb25PcHRpb25zKCk7CiAgICAgaWYgKCFzaG91bGRTZXRG
b2N1cykKLSAgICAgICAgb3B0aW9ucyB8PSBEb05vdFNldEZvY3VzOworICAgICAgICBvcHRpb25z
LmFkZChEb05vdFNldEZvY3VzKTsKICAgICBzd2l0Y2ggKHJldmVhbE1vZGUpIHsKICAgICBjYXNl
IFNlbGVjdGlvblJldmVhbE1vZGU6OkRvTm90UmV2ZWFsOgogICAgICAgICBicmVhazsKICAgICBj
YXNlIFNlbGVjdGlvblJldmVhbE1vZGU6OlJldmVhbDoKLSAgICAgICAgb3B0aW9ucyB8PSBSZXZl
YWxTZWxlY3Rpb247CisgICAgICAgIG9wdGlvbnMuYWRkKFJldmVhbFNlbGVjdGlvbik7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgU2VsZWN0aW9uUmV2ZWFsTW9kZTo6UmV2ZWFsVXBUb01haW5G
cmFtZToKLSAgICAgICAgb3B0aW9ucyB8PSBSZXZlYWxTZWxlY3Rpb25VcFRvTWFpbkZyYW1lOwor
ICAgICAgICBvcHRpb25zLmFkZChSZXZlYWxTZWxlY3Rpb25VcFRvTWFpbkZyYW1lKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogICAgIHNldFNlbGVjdGlvbihuZXdTZWxlY3Rpb24sIG9wdGlvbnMs
IG5ld0ludGVudCk7CkBAIC0xOTk1LDcgKzE5OTUsNyBAQCBib29sIEZyYW1lU2VsZWN0aW9uOjpz
ZXRTZWxlY3RlZFJhbmdlKFJhCiAKICAgICBPcHRpb25TZXQ8U2V0U2VsZWN0aW9uT3B0aW9uPiBz
ZWxlY3Rpb25PcHRpb25zIHsgIENsZWFyVHlwaW5nU3R5bGUgfTsKICAgICBpZiAoY2xvc2VUeXBp
bmcpCi0gICAgICAgIHNlbGVjdGlvbk9wdGlvbnMgfD0gQ2xvc2VUeXBpbmc7CisgICAgICAgIHNl
bGVjdGlvbk9wdGlvbnMuYWRkKENsb3NlVHlwaW5nKTsKIAogICAgIGlmICh1c2VyVHJpZ2dlcmVk
ID09IFVzZXJUcmlnZ2VyZWQpIHsKICAgICAgICAgRnJhbWVTZWxlY3Rpb24gdHJpYWxGcmFtZVNl
bGVjdGlvbjsKQEAgLTIwMDUsNyArMjAwNSw3IEBAIGJvb2wgRnJhbWVTZWxlY3Rpb246OnNldFNl
bGVjdGVkUmFuZ2UoUmEKICAgICAgICAgaWYgKCFzaG91bGRDaGFuZ2VTZWxlY3Rpb24odHJpYWxG
cmFtZVNlbGVjdGlvbi5zZWxlY3Rpb24oKSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICAgICAgc2VsZWN0aW9uT3B0aW9ucyB8PSBJc1VzZXJUcmlnZ2VyZWQ7CisgICAgICAgIHNl
bGVjdGlvbk9wdGlvbnMuYWRkKElzVXNlclRyaWdnZXJlZCk7CiAgICAgfQogCiAgICAgc2V0U2Vs
ZWN0aW9uKG5ld1NlbGVjdGlvbiwgc2VsZWN0aW9uT3B0aW9ucyk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5oCShyZXZpc2lvbiAyMzU1MTQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzMyw3
ICsxMzMsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBPcHRpb25TZXQ8U2V0U2VsZWN0aW9u
T3B0aW9uPiBvcHRpb25zIHsgQ2xvc2VUeXBpbmcsIENsZWFyVHlwaW5nU3R5bGUgfTsKICAgICAg
ICAgaWYgKHVzZXJUcmlnZ2VyZWQgPT0gVXNlclRyaWdnZXJlZCkKLSAgICAgICAgICAgIG9wdGlv
bnMgfD0geyBSZXZlYWxTZWxlY3Rpb24sIEZpcmVTZWxlY3RFdmVudCwgSXNVc2VyVHJpZ2dlcmVk
IH07CisgICAgICAgICAgICBvcHRpb25zLmFkZCh7IFJldmVhbFNlbGVjdGlvbiwgRmlyZVNlbGVj
dEV2ZW50LCBJc1VzZXJUcmlnZ2VyZWQgfSk7CiAgICAgICAgIHJldHVybiBvcHRpb25zOwogICAg
IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9Nb3ZlU2VsZWN0aW9uQ29tbWFuZC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9Nb3ZlU2VsZWN0aW9uQ29t
bWFuZC5jcHAJKHJldmlzaW9uIDIzNTUxNCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTW92
ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NCw3ICs4NCw3IEBAIHZv
aWQgTW92ZVNlbGVjdGlvbkNvbW1hbmQ6OmRvQXBwbHkoKQogICAgIH0KICAgICBPcHRpb25TZXQ8
UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OkNvbW1hbmRPcHRpb24+IG9wdGlvbnMgeyBSZXBsYWNl
U2VsZWN0aW9uQ29tbWFuZDo6U2VsZWN0UmVwbGFjZW1lbnQsIFJlcGxhY2VTZWxlY3Rpb25Db21t
YW5kOjpQcmV2ZW50TmVzdGluZyB9OwogICAgIGlmIChtX3NtYXJ0SW5zZXJ0KQotICAgICAgICBv
cHRpb25zIHw9IFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpTbWFydFJlcGxhY2U7CisgICAgICAg
IG9wdGlvbnMuYWRkKFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpTbWFydFJlcGxhY2UpOwogCiAg
ICAgewogICAgICAgICBhdXRvIHJlcGxhY2VTZWxlY3Rpb24gPSBSZXBsYWNlU2VsZWN0aW9uQ29t
bWFuZDo6Y3JlYXRlKGRvY3VtZW50KCksIFdURk1vdmUobV9mcmFnbWVudCksIG9wdGlvbnMsIEVk
aXRBY3Rpb25JbnNlcnRGcm9tRHJvcCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Nw
ZWxsQ2hlY2tlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVs
bENoZWNrZXIuY3BwCShyZXZpc2lvbiAyMzU1MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1NwZWxsQ2hlY2tlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxOCw5ICsyMTgsOSBAQCB2b2lk
IFNwZWxsQ2hlY2tlcjo6ZGlkQ2hlY2tTdWNjZWVkKGludCBzCiAgICAgaWYgKHJlcXVlc3REYXRh
LnNlcXVlbmNlKCkgPT0gc2VxdWVuY2UpIHsKICAgICAgICAgT3B0aW9uU2V0PERvY3VtZW50TWFy
a2VyOjpNYXJrZXJUeXBlPiBtYXJrZXJUeXBlczsKICAgICAgICAgaWYgKHJlcXVlc3REYXRhLmNo
ZWNraW5nVHlwZXMoKS5jb250YWlucyhUZXh0Q2hlY2tpbmdUeXBlOjpTcGVsbGluZykpCi0gICAg
ICAgICAgICBtYXJrZXJUeXBlcyB8PSBEb2N1bWVudE1hcmtlcjo6U3BlbGxpbmc7CisgICAgICAg
ICAgICBtYXJrZXJUeXBlcy5hZGQoRG9jdW1lbnRNYXJrZXI6OlNwZWxsaW5nKTsKICAgICAgICAg
aWYgKHJlcXVlc3REYXRhLmNoZWNraW5nVHlwZXMoKS5jb250YWlucyhUZXh0Q2hlY2tpbmdUeXBl
OjpHcmFtbWFyKSkKLSAgICAgICAgICAgIG1hcmtlclR5cGVzIHw9IERvY3VtZW50TWFya2VyOjpH
cmFtbWFyOworICAgICAgICAgICAgbWFya2VyVHlwZXMuYWRkKERvY3VtZW50TWFya2VyOjpHcmFt
bWFyKTsKICAgICAgICAgaWYgKCFtYXJrZXJUeXBlcy5pc0VtcHR5KCkpCiAgICAgICAgICAgICBt
X2ZyYW1lLmRvY3VtZW50KCktPm1hcmtlcnMoKS5yZW1vdmVNYXJrZXJzKCZtX3Byb2Nlc3NpbmdS
ZXF1ZXN0LT5jaGVja2luZ1JhbmdlKCksIG1hcmtlclR5cGVzKTsKICAgICB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwCShyZXZpc2lvbiAy
MzU1MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM1Myw3ICszNTMsNyBAQCBTdHJpbmcgVGV4dENoZWNraW5nSGVs
cGVyOjpmaW5kRmlyc3RNaXNzCiAgICAgICAgICAgICAgICAgVmVjdG9yPFRleHRDaGVja2luZ1Jl
c3VsdD4gcmVzdWx0czsKICAgICAgICAgICAgICAgICBPcHRpb25TZXQ8VGV4dENoZWNraW5nVHlw
ZT4gY2hlY2tpbmdUeXBlcyB7IFRleHRDaGVja2luZ1R5cGU6OlNwZWxsaW5nIH07CiAgICAgICAg
ICAgICAgICAgaWYgKGNoZWNrR3JhbW1hcikKLSAgICAgICAgICAgICAgICAgICAgY2hlY2tpbmdU
eXBlcyB8PSBUZXh0Q2hlY2tpbmdUeXBlOjpHcmFtbWFyOworICAgICAgICAgICAgICAgICAgICBj
aGVja2luZ1R5cGVzLmFkZChUZXh0Q2hlY2tpbmdUeXBlOjpHcmFtbWFyKTsKICAgICAgICAgICAg
ICAgICBWaXNpYmxlU2VsZWN0aW9uIGN1cnJlbnRTZWxlY3Rpb247CiAgICAgICAgICAgICAgICAg
aWYgKEZyYW1lKiBmcmFtZSA9IHBhcmFncmFwaFJhbmdlLT5vd25lckRvY3VtZW50KCkuZnJhbWUo
KSkKICAgICAgICAgICAgICAgICAgICAgY3VycmVudFNlbGVjdGlvbiA9IGZyYW1lLT5zZWxlY3Rp
b24oKS5zZWxlY3Rpb24oKTsKQEAgLTU4Nyw3ICs1ODcsNyBAQCBWZWN0b3I8U3RyaW5nPiBUZXh0
Q2hlY2tpbmdIZWxwZXI6Omd1ZXNzCiAgICAgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4gcmVz
dWx0czsKICAgICBPcHRpb25TZXQ8VGV4dENoZWNraW5nVHlwZT4gY2hlY2tpbmdUeXBlcyB7IFRl
eHRDaGVja2luZ1R5cGU6OlNwZWxsaW5nIH07CiAgICAgaWYgKGNoZWNrR3JhbW1hcikKLSAgICAg
ICAgY2hlY2tpbmdUeXBlcyB8PSBUZXh0Q2hlY2tpbmdUeXBlOjpHcmFtbWFyOworICAgICAgICBj
aGVja2luZ1R5cGVzLmFkZChUZXh0Q2hlY2tpbmdUeXBlOjpHcmFtbWFyKTsKICAgICBWaXNpYmxl
U2VsZWN0aW9uIGN1cnJlbnRTZWxlY3Rpb247CiAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IG1fcmFu
Z2UtPm93bmVyRG9jdW1lbnQoKS5mcmFtZSgpKQogICAgICAgICBjdXJyZW50U2VsZWN0aW9uID0g
ZnJhbWUtPnNlbGVjdGlvbigpLnNlbGVjdGlvbigpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZWRp
dGluZy9UZXh0SXRlcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvVGV4dEl0ZXJhdG9yLmNwcAkocmV2aXNpb24gMjM1NTE0KQorKysgU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDk3LDcgKzIwOTcs
NyBAQCBpbmxpbmUgU2VhcmNoQnVmZmVyOjpTZWFyY2hCdWZmZXIoY29uc3QgCiAgICAgICAgIC8v
IENoYXJhY3RlcnMgaW4gdGhlIHNlcGFyYXRvciBjYXRlZ29yeSBuZXZlciByZWFsbHkgb2NjdXIg
YXQgdGhlIGJlZ2lubmluZyBvZiBhIHdvcmQsCiAgICAgICAgIC8vIHNvIGlmIHRoZSB0YXJnZXQg
YmVnaW5zIHdpdGggc3VjaCBhIGNoYXJhY3Rlciwgd2UganVzdCBpZ25vcmUgdGhlIEF0V29yZFN0
YXJ0IG9wdGlvbi4KICAgICAgICAgaWYgKGlzU2VwYXJhdG9yKHRhcmdldEZpcnN0Q2hhcmFjdGVy
KSkgewotICAgICAgICAgICAgbV9vcHRpb25zIC09IEF0V29yZFN0YXJ0czsKKyAgICAgICAgICAg
IG1fb3B0aW9ucy5yZW1vdmUoQXRXb3JkU3RhcnRzKTsKICAgICAgICAgICAgIG1fbmVlZHNNb3Jl
Q29udGV4dCA9IGZhbHNlOwogICAgICAgICB9CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAJKHJldmlzaW9uIDIzNTUxNCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTcs
OSArMjU3LDkgQEAgdm9pZCBIVE1MQW5jaG9yRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoYwogICAg
ICAgICBjb25zdCBib29sIHNob3VsZEZvbGRDYXNlID0gdHJ1ZTsKICAgICAgICAgU3BhY2VTcGxp
dFN0cmluZyByZWxWYWx1ZSh2YWx1ZSwgc2hvdWxkRm9sZENhc2UpOwogICAgICAgICBpZiAocmVs
VmFsdWUuY29udGFpbnMobm9SZWZlcnJlcikpCi0gICAgICAgICAgICBtX2xpbmtSZWxhdGlvbnMg
fD0gUmVsYXRpb246Ok5vUmVmZXJyZXI7CisgICAgICAgICAgICBtX2xpbmtSZWxhdGlvbnMuYWRk
KFJlbGF0aW9uOjpOb1JlZmVycmVyKTsKICAgICAgICAgaWYgKHJlbFZhbHVlLmNvbnRhaW5zKG5v
T3BlbmVyKSkKLSAgICAgICAgICAgIG1fbGlua1JlbGF0aW9ucyB8PSBSZWxhdGlvbjo6Tm9PcGVu
ZXI7CisgICAgICAgICAgICBtX2xpbmtSZWxhdGlvbnMuYWRkKFJlbGF0aW9uOjpOb09wZW5lcik7
CiAgICAgICAgIGlmIChtX3JlbExpc3QpCiAgICAgICAgICAgICBtX3JlbExpc3QtPmFzc29jaWF0
ZWRBdHRyaWJ1dGVWYWx1ZUNoYW5nZWQodmFsdWUpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAJ
KHJldmlzaW9uIDIzNTUxNCkKKysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yUGFnZUFnZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzE5LDkgKzMxOSw5IEBAIHZv
aWQgSW5zcGVjdG9yUGFnZUFnZW50OjpyZWxvYWQoRXJyb3JTdHIKIAogICAgIE9wdGlvblNldDxS
ZWxvYWRPcHRpb24+IHJlbG9hZE9wdGlvbnM7CiAgICAgaWYgKHJlbG9hZEZyb21PcmlnaW4pCi0g
ICAgICAgIHJlbG9hZE9wdGlvbnMgfD0gUmVsb2FkT3B0aW9uOjpGcm9tT3JpZ2luOworICAgICAg
ICByZWxvYWRPcHRpb25zLmFkZChSZWxvYWRPcHRpb246OkZyb21PcmlnaW4pOwogICAgIGlmICgh
cmV2YWxpZGF0ZUFsbFJlc291cmNlcykKLSAgICAgICAgcmVsb2FkT3B0aW9ucyB8PSBSZWxvYWRP
cHRpb246OkV4cGlyZWRPbmx5OworICAgICAgICByZWxvYWRPcHRpb25zLmFkZChSZWxvYWRPcHRp
b246OkV4cGlyZWRPbmx5KTsKIAogICAgIG1fcGFnZS5tYWluRnJhbWUoKS5sb2FkZXIoKS5yZWxv
YWQocmVsb2FkT3B0aW9ucyk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRN
ZW51Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9Db250
ZXh0TWVudUNvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyMzU1MTQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2OSw3
ICszNjksNyBAQCB2b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6Y29udGV4dE1lbnVJCiAgICAg
ICAgICAgICAgICAgZnJhbWUtPnNlbGVjdGlvbigpLnNldFNlbGVjdGlvbih3b3JkU2VsZWN0aW9u
KTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGZyYW1lLT5l
ZGl0b3IoKS5zZWxlY3RlZFRleHQoKS5sZW5ndGgoKSk7Ci0gICAgICAgICAgICAgICAgcmVwbGFj
ZU9wdGlvbnMgfD0gUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OlNlbGVjdFJlcGxhY2VtZW50Owor
ICAgICAgICAgICAgICAgIHJlcGxhY2VPcHRpb25zLmFkZChSZXBsYWNlU2VsZWN0aW9uQ29tbWFu
ZDo6U2VsZWN0UmVwbGFjZW1lbnQpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBEb2N1
bWVudCogZG9jdW1lbnQgPSBmcmFtZS0+ZG9jdW1lbnQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvRE9NV2luZG93LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RP
TVdpbmRvdy5jcHAJKHJldmlzaW9uIDIzNTUxNCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9N
V2luZG93LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIyMSwxNCArMTIyMSwxNCBAQCBib29sIERP
TVdpbmRvdzo6ZmluZChjb25zdCBTdHJpbmcmIHN0cmluCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgIC8vIEZJWE1FICgxMzAxNik6IFN1cHBvcnQgd2hvbGVXb3JkLCBzZWFyY2hJbkZyYW1l
cyBhbmQgc2hvd0RpYWxvZy4gICAgCi0gICAgRmluZE9wdGlvbnMgb3B0aW9uczsKKyAgICBGaW5k
T3B0aW9ucyBvcHRpb25zIHsgRG9Ob3RUcmF2ZXJzZUZsYXRUcmVlIH07CiAgICAgaWYgKGJhY2t3
YXJkcykKLSAgICAgICAgb3B0aW9ucyB8PSBCYWNrd2FyZHM7CisgICAgICAgIG9wdGlvbnMuYWRk
KEJhY2t3YXJkcyk7CiAgICAgaWYgKCFjYXNlU2Vuc2l0aXZlKQotICAgICAgICBvcHRpb25zIHw9
IENhc2VJbnNlbnNpdGl2ZTsKKyAgICAgICAgb3B0aW9ucy5hZGQoQ2FzZUluc2Vuc2l0aXZlKTsK
ICAgICBpZiAod3JhcCkKLSAgICAgICAgb3B0aW9ucyB8PSBXcmFwQXJvdW5kOwotICAgIHJldHVy
biBtX2ZyYW1lLT5lZGl0b3IoKS5maW5kU3RyaW5nKHN0cmluZywgb3B0aW9ucyB8IERvTm90VHJh
dmVyc2VGbGF0VHJlZSk7CisgICAgICAgIG9wdGlvbnMuYWRkKFdyYXBBcm91bmQpOworICAgIHJl
dHVybiBtX2ZyYW1lLT5lZGl0b3IoKS5maW5kU3RyaW5nKHN0cmluZywgb3B0aW9ucyk7CiB9CiAK
IGJvb2wgRE9NV2luZG93OjpvZmZzY3JlZW5CdWZmZXJpbmcoKSBjb25zdApJbmRleDogU291cmNl
L1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAJKHJldmlzaW9uIDIzNTUxNCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MTks
OSArNjE5LDkgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6Y29uY2x1ZGVFZGl0RHJhZyhjbwogICAg
ICAgICAgICAgaWYgKHNldFNlbGVjdGlvblRvRHJhZ0NhcmV0KGlubmVyRnJhbWUuZ2V0KCksIGRy
YWdDYXJldCwgcmFuZ2UsIHBvaW50KSkgewogICAgICAgICAgICAgICAgIE9wdGlvblNldDxSZXBs
YWNlU2VsZWN0aW9uQ29tbWFuZDo6Q29tbWFuZE9wdGlvbj4gb3B0aW9ucyB7IFJlcGxhY2VTZWxl
Y3Rpb25Db21tYW5kOjpTZWxlY3RSZXBsYWNlbWVudCwgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6
OlByZXZlbnROZXN0aW5nIH07CiAgICAgICAgICAgICAgICAgaWYgKGRyYWdEYXRhLmNhblNtYXJ0
UmVwbGFjZSgpKQotICAgICAgICAgICAgICAgICAgICBvcHRpb25zIHw9IFJlcGxhY2VTZWxlY3Rp
b25Db21tYW5kOjpTbWFydFJlcGxhY2U7CisgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMuYWRk
KFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpTbWFydFJlcGxhY2UpOwogICAgICAgICAgICAgICAg
IGlmIChjaG9zZVBsYWluVGV4dCkKLSAgICAgICAgICAgICAgICAgICAgb3B0aW9ucyB8PSBSZXBs
YWNlU2VsZWN0aW9uQ29tbWFuZDo6TWF0Y2hTdHlsZTsKKyAgICAgICAgICAgICAgICAgICAgb3B0
aW9ucy5hZGQoUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6Ok1hdGNoU3R5bGUpOwogICAgICAgICAg
ICAgICAgIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpjcmVhdGUoKm1fZG9jdW1lbnRVbmRlck1v
dXNlLCBmcmFnbWVudC5yZWxlYXNlTm9uTnVsbCgpLCBvcHRpb25zLCBFZGl0QWN0aW9uSW5zZXJ0
RnJvbURyb3ApLT5hcHBseSgpOwogICAgICAgICAgICAgfQogICAgICAgICB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lU25hcHNob3R0aW5nLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lU25hcHNob3R0aW5nLmNwcAkocmV2aXNpb24gMjM1NTE0KQor
KysgU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTkyLDEzICs5MiwxMyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IHNuYXBz
aG90RnJhCiAKICAgICBhdXRvIHBhaW50QmVoYXZpb3IgPSBzdGF0ZS5wYWludEJlaGF2aW9yOwog
ICAgIGlmIChvcHRpb25zICYgU25hcHNob3RPcHRpb25zRm9yY2VCbGFja1RleHQpCi0gICAgICAg
IHBhaW50QmVoYXZpb3IgfD0gUGFpbnRCZWhhdmlvcjo6Rm9yY2VCbGFja1RleHQ7CisgICAgICAg
IHBhaW50QmVoYXZpb3IuYWRkKFBhaW50QmVoYXZpb3I6OkZvcmNlQmxhY2tUZXh0KTsKICAgICBp
ZiAob3B0aW9ucyAmIFNuYXBzaG90T3B0aW9uc1BhaW50U2VsZWN0aW9uT25seSkKLSAgICAgICAg
cGFpbnRCZWhhdmlvciB8PSBQYWludEJlaGF2aW9yOjpTZWxlY3Rpb25Pbmx5OworICAgICAgICBw
YWludEJlaGF2aW9yLmFkZChQYWludEJlaGF2aW9yOjpTZWxlY3Rpb25Pbmx5KTsKICAgICBpZiAo
b3B0aW9ucyAmIFNuYXBzaG90T3B0aW9uc1BhaW50U2VsZWN0aW9uQW5kQmFja2dyb3VuZHNPbmx5
KQotICAgICAgICBwYWludEJlaGF2aW9yIHw9IFBhaW50QmVoYXZpb3I6OlNlbGVjdGlvbkFuZEJh
Y2tncm91bmRzT25seTsKKyAgICAgICAgcGFpbnRCZWhhdmlvci5hZGQoUGFpbnRCZWhhdmlvcjo6
U2VsZWN0aW9uQW5kQmFja2dyb3VuZHNPbmx5KTsKICAgICBpZiAob3B0aW9ucyAmIFNuYXBzaG90
T3B0aW9uc1BhaW50RXZlcnl0aGluZ0V4Y2x1ZGluZ1NlbGVjdGlvbikKLSAgICAgICAgcGFpbnRC
ZWhhdmlvciB8PSBQYWludEJlaGF2aW9yOjpFeGNsdWRlU2VsZWN0aW9uOworICAgICAgICBwYWlu
dEJlaGF2aW9yLmFkZChQYWludEJlaGF2aW9yOjpFeGNsdWRlU2VsZWN0aW9uKTsKIAogICAgIC8v
IE90aGVyIHBhaW50IGJlaGF2aW9ycyBhcmUgc2V0IGJ5IHBhaW50Q29udGVudHNGb3JTbmFwc2hv
dC4KICAgICBmcmFtZS52aWV3KCktPnNldFBhaW50QmVoYXZpb3IocGFpbnRCZWhhdmlvcik7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCShyZXZpc2lvbiAyMzU1MTQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MCwxMSAr
MTQwLDExIEBAIHN0YXRpYyBPcHRpb25TZXQ8UmVuZGVyTGF5ZXI6OlVwZGF0ZUxheWUKIHsKICAg
ICBhdXRvIGZsYWdzID0gUmVuZGVyTGF5ZXI6OnVwZGF0ZUxheWVyUG9zaXRpb25zRGVmYXVsdEZs
YWdzKCk7CiAgICAgaWYgKGRpZEZ1bGxSZXBhaW50KSB7Ci0gICAgICAgIGZsYWdzIC09IFJlbmRl
ckxheWVyOjpDaGVja0ZvclJlcGFpbnQ7Ci0gICAgICAgIGZsYWdzIHw9IFJlbmRlckxheWVyOjpO
ZWVkc0Z1bGxSZXBhaW50SW5CYWNraW5nOworICAgICAgICBmbGFncy5yZW1vdmUoUmVuZGVyTGF5
ZXI6OkNoZWNrRm9yUmVwYWludCk7CisgICAgICAgIGZsYWdzLmFkZChSZW5kZXJMYXllcjo6TmVl
ZHNGdWxsUmVwYWludEluQmFja2luZyk7CiAgICAgfQogICAgIGlmIChpc1JlbGF5b3V0aW5nU3Vi
dHJlZSAmJiBsYXllci0+ZW5jbG9zaW5nUGFnaW5hdGlvbkxheWVyKFJlbmRlckxheWVyOjpJbmNs
dWRlQ29tcG9zaXRlZFBhZ2luYXRlZExheWVycykpCi0gICAgICAgIGZsYWdzIHw9IFJlbmRlckxh
eWVyOjpVcGRhdGVQYWdpbmF0aW9uOworICAgICAgICBmbGFncy5hZGQoUmVuZGVyTGF5ZXI6OlVw
ZGF0ZVBhZ2luYXRpb24pOwogICAgIHJldHVybiBmbGFnczsKIH0KIApAQCAtNDA2OCwxOCArNDA2
OCwxOCBAQCB2b2lkIEZyYW1lVmlldzo6d2lsbFBhaW50Q29udGVudHMoR3JhcGhpCiAgICAgCiAg
ICAgaWYgKEZyYW1lVmlldyogcGFyZW50VmlldyA9IHBhcmVudEZyYW1lVmlldygpKSB7CiAgICAg
ICAgIGlmIChwYXJlbnRWaWV3LT5wYWludEJlaGF2aW9yKCkgJiBQYWludEJlaGF2aW9yOjpGbGF0
dGVuQ29tcG9zaXRpbmdMYXllcnMpCi0gICAgICAgICAgICBtX3BhaW50QmVoYXZpb3IgfD0gUGFp
bnRCZWhhdmlvcjo6RmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzOworICAgICAgICAgICAgbV9wYWlu
dEJlaGF2aW9yLmFkZChQYWludEJlaGF2aW9yOjpGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMpOwog
ICAgICAgICAKICAgICAgICAgaWYgKHBhcmVudFZpZXctPnBhaW50QmVoYXZpb3IoKSAmIFBhaW50
QmVoYXZpb3I6OlNuYXBzaG90dGluZykKLSAgICAgICAgICAgIG1fcGFpbnRCZWhhdmlvciB8PSBQ
YWludEJlaGF2aW9yOjpTbmFwc2hvdHRpbmc7CisgICAgICAgICAgICBtX3BhaW50QmVoYXZpb3Iu
YWRkKFBhaW50QmVoYXZpb3I6OlNuYXBzaG90dGluZyk7CiAgICAgICAgIAogICAgICAgICBpZiAo
cGFyZW50Vmlldy0+cGFpbnRCZWhhdmlvcigpICYgUGFpbnRCZWhhdmlvcjo6VGlsZUZpcnN0UGFp
bnQpCi0gICAgICAgICAgICBtX3BhaW50QmVoYXZpb3IgfD0gUGFpbnRCZWhhdmlvcjo6VGlsZUZp
cnN0UGFpbnQ7CisgICAgICAgICAgICBtX3BhaW50QmVoYXZpb3IuYWRkKFBhaW50QmVoYXZpb3I6
OlRpbGVGaXJzdFBhaW50KTsKICAgICB9CiAKICAgICBpZiAoZG9jdW1lbnQtPnByaW50aW5nKCkp
IHsKLSAgICAgICAgbV9wYWludEJlaGF2aW9yIHw9IFBhaW50QmVoYXZpb3I6OkZsYXR0ZW5Db21w
b3NpdGluZ0xheWVyczsKLSAgICAgICAgbV9wYWludEJlaGF2aW9yIHw9IFBhaW50QmVoYXZpb3I6
OlNuYXBzaG90dGluZzsKKyAgICAgICAgbV9wYWludEJlaGF2aW9yLmFkZChQYWludEJlaGF2aW9y
OjpGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMpOworICAgICAgICBtX3BhaW50QmVoYXZpb3IuYWRk
KFBhaW50QmVoYXZpb3I6OlNuYXBzaG90dGluZyk7CiAgICAgfQogCiAgICAgcGFpbnRpbmdTdGF0
ZS5pc0ZsYXR0ZW5pbmdQYWludE9mUm9vdEZyYW1lID0gKG1fcGFpbnRCZWhhdmlvciAmIFBhaW50
QmVoYXZpb3I6OkZsYXR0ZW5Db21wb3NpdGluZ0xheWVycykgJiYgIWZyYW1lKCkub3duZXJFbGVt
ZW50KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAJKHJldmlzaW9uIDIzNTUxNCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2NDMsMTEgKzE2NDMs
MTEgQEAgdm9pZCBQYWdlOjpzZXRJc1Zpc2libGUoYm9vbCBpc1Zpc2libGUpCiAgICAgYXV0byBz
dGF0ZSA9IG1fYWN0aXZpdHlTdGF0ZTsKIAogICAgIGlmIChpc1Zpc2libGUpIHsKLSAgICAgICAg
c3RhdGUgLT0gQWN0aXZpdHlTdGF0ZTo6SXNWaXN1YWxseUlkbGU7Ci0gICAgICAgIHN0YXRlIHw9
IHsgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlLCBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGVPck9j
Y2x1ZGVkIH07CisgICAgICAgIHN0YXRlLnJlbW92ZShBY3Rpdml0eVN0YXRlOjpJc1Zpc3VhbGx5
SWRsZSk7CisgICAgICAgIHN0YXRlLmFkZCh7IEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSwgQWN0
aXZpdHlTdGF0ZTo6SXNWaXNpYmxlT3JPY2NsdWRlZCB9KTsKICAgICB9IGVsc2UgewotICAgICAg
ICBzdGF0ZSB8PSBBY3Rpdml0eVN0YXRlOjpJc1Zpc3VhbGx5SWRsZTsKLSAgICAgICAgc3RhdGUg
LT0geyBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUsIEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZU9y
T2NjbHVkZWQgfTsKKyAgICAgICAgc3RhdGUuYWRkKEFjdGl2aXR5U3RhdGU6OklzVmlzdWFsbHlJ
ZGxlKTsKKyAgICAgICAgc3RhdGUucmVtb3ZlKHsgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlLCBB
Y3Rpdml0eVN0YXRlOjpJc1Zpc2libGVPck9jY2x1ZGVkIH0pOwogICAgIH0KICAgICBzZXRBY3Rp
dml0eVN0YXRlKHN0YXRlKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFu
Y2VPYnNlcnZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3Jt
YW5jZU9ic2VydmVyLmNwcAkocmV2aXNpb24gMjM1NTE0KQorKysgU291cmNlL1dlYkNvcmUvcGFn
ZS9QZXJmb3JtYW5jZU9ic2VydmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUsNyArNjUsNyBA
QCBFeGNlcHRpb25Pcjx2b2lkPiBQZXJmb3JtYW5jZU9ic2VydmVyOjpvCiAgICAgT3B0aW9uU2V0
PFBlcmZvcm1hbmNlRW50cnk6OlR5cGU+IGZpbHRlcjsKICAgICBmb3IgKGNvbnN0IFN0cmluZyYg
ZW50cnlUeXBlIDogaW5pdC5lbnRyeVR5cGVzKSB7CiAgICAgICAgIGlmIChhdXRvIHR5cGUgPSBQ
ZXJmb3JtYW5jZUVudHJ5OjpwYXJzZUVudHJ5VHlwZVN0cmluZyhlbnRyeVR5cGUpKQotICAgICAg
ICAgICAgZmlsdGVyIHw9ICp0eXBlOworICAgICAgICAgICAgZmlsdGVyLmFkZCgqdHlwZSk7CiAg
ICAgfQogCiAgICAgaWYgKGZpbHRlci5pc0VtcHR5KCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
YWdlL1RleHRJbmRpY2F0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
VGV4dEluZGljYXRvci5jcHAJKHJldmlzaW9uIDIzNTUxNCkKKysrIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvVGV4dEluZGljYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc4LDggKzc4LDggQEAgUmVm
UHRyPFRleHRJbmRpY2F0b3I+IFRleHRJbmRpY2F0b3I6OmNyZQogICAgIFZpc2libGVTZWxlY3Rp
b24gb2xkU2VsZWN0aW9uID0gZnJhbWUtPnNlbGVjdGlvbigpLnNlbGVjdGlvbigpOwogICAgIE9w
dGlvblNldDxUZW1wb3JhcnlTZWxlY3Rpb25PcHRpb24+IHRlbXBvcmFyeVNlbGVjdGlvbk9wdGlv
bnM7CiAjaWYgUExBVEZPUk0oSU9TKQotICAgIHRlbXBvcmFyeVNlbGVjdGlvbk9wdGlvbnMgfD0g
VGVtcG9yYXJ5U2VsZWN0aW9uT3B0aW9uSWdub3JlU2VsZWN0aW9uQ2hhbmdlczsKLSAgICB0ZW1w
b3JhcnlTZWxlY3Rpb25PcHRpb25zIHw9IFRlbXBvcmFyeVNlbGVjdGlvbk9wdGlvbkVuYWJsZUFw
cGVhcmFuY2VVcGRhdGVzOworICAgIHRlbXBvcmFyeVNlbGVjdGlvbk9wdGlvbnMuYWRkKFRlbXBv
cmFyeVNlbGVjdGlvbk9wdGlvbklnbm9yZVNlbGVjdGlvbkNoYW5nZXMpOworICAgIHRlbXBvcmFy
eVNlbGVjdGlvbk9wdGlvbnMuYWRkKFRlbXBvcmFyeVNlbGVjdGlvbk9wdGlvbkVuYWJsZUFwcGVh
cmFuY2VVcGRhdGVzKTsKICNlbmRpZgogICAgIFRlbXBvcmFyeVNlbGVjdGlvbkNoYW5nZSBzZWxl
Y3Rpb25DaGFuZ2UoKmZyYW1lLCB7IHJhbmdlIH0sIHRlbXBvcmFyeVNlbGVjdGlvbk9wdGlvbnMp
OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1dpbmRvd0ZlYXR1cmVzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1dpbmRvd0ZlYXR1cmVzLmNwcAkocmV2aXNpb24g
MjM1NTE0KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9XaW5kb3dGZWF0dXJlcy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEyMCw3ICsxMjAsNyBAQCBPcHRpb25TZXQ8RGlzYWJsZWRBZGFwdGF0aW9u
cz4gcGFyc2VEaXNhCiAgICAgZm9yIChhdXRvJiBuYW1lIDogZGlzYWJsZWRBZGFwdGF0aW9uc1N0
cmluZy5zcGxpdCgnLCcpKSB7CiAgICAgICAgIGF1dG8gbm9ybWFsaXplZE5hbWUgPSBuYW1lLnN0
cmlwV2hpdGVTcGFjZSgpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCk7CiAgICAgICAgIGlmIChu
b3JtYWxpemVkTmFtZSA9PSB3YXRjaEFkYXB0YXRpb25OYW1lKCkpCi0gICAgICAgICAgICBkaXNh
YmxlZEFkYXB0YXRpb25zIHw9IERpc2FibGVkQWRhcHRhdGlvbnM6OldhdGNoOworICAgICAgICAg
ICAgZGlzYWJsZWRBZGFwdGF0aW9ucy5hZGQoRGlzYWJsZWRBZGFwdGF0aW9uczo6V2F0Y2gpOwog
ICAgIH0KICAgICByZXR1cm4gZGlzYWJsZWRBZGFwdGF0aW9uczsKIH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5oCShyZXZpc2lvbiAy
MzU1MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3ku
aAkod29ya2luZyBjb3B5KQpAQCAtMTUxLDExICsxNTEsMTEgQEAgcHVibGljOgogICAgIHZvaWQg
ZW5mb3JjZVNhbmRib3hGbGFncyhTYW5kYm94RmxhZ3Mgc2FuZGJveEZsYWdzKSB7IG1fc2FuZGJv
eEZsYWdzIHw9IHNhbmRib3hGbGFnczsgfQogICAgIHZvaWQgYWRkSGFzaEFsZ29yaXRobXNGb3JJ
bmxpbmVTY3JpcHRzKE9wdGlvblNldDxDb250ZW50U2VjdXJpdHlQb2xpY3lIYXNoQWxnb3JpdGht
PiBoYXNoQWxnb3JpdGhtc0ZvcklubGluZVNjcmlwdHMpCiAgICAgewotICAgICAgICBtX2hhc2hB
bGdvcml0aG1zRm9ySW5saW5lU2NyaXB0cyB8PSBoYXNoQWxnb3JpdGhtc0ZvcklubGluZVNjcmlw
dHM7CisgICAgICAgIG1faGFzaEFsZ29yaXRobXNGb3JJbmxpbmVTY3JpcHRzLmFkZChoYXNoQWxn
b3JpdGhtc0ZvcklubGluZVNjcmlwdHMpOwogICAgIH0KICAgICB2b2lkIGFkZEhhc2hBbGdvcml0
aG1zRm9ySW5saW5lU3R5bGVzaGVldHMoT3B0aW9uU2V0PENvbnRlbnRTZWN1cml0eVBvbGljeUhh
c2hBbGdvcml0aG0+IGhhc2hBbGdvcml0aG1zRm9ySW5saW5lU3R5bGVzaGVldHMpCiAgICAgewot
ICAgICAgICBtX2hhc2hBbGdvcml0aG1zRm9ySW5saW5lU3R5bGVzaGVldHMgfD0gaGFzaEFsZ29y
aXRobXNGb3JJbmxpbmVTdHlsZXNoZWV0czsKKyAgICAgICAgbV9oYXNoQWxnb3JpdGhtc0Zvcklu
bGluZVN0eWxlc2hlZXRzLmFkZChoYXNoQWxnb3JpdGhtc0ZvcklubGluZVN0eWxlc2hlZXRzKTsK
ICAgICB9CiAKICAgICAvLyBVc2VkIGJ5IENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlz
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3Vy
aXR5UG9saWN5U291cmNlTGlzdC5jcHAJKHJldmlzaW9uIDIzNTUxNCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3QuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00NzMsNyArNDczLDcgQEAgYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3lTb3Vy
Y2VMaXN0OjpwYQogICAgIGlmIChkaWdlc3QtPnZhbHVlLnNpemUoKSA+IENvbnRlbnRTZWN1cml0
eVBvbGljeUhhc2g6Om1heGltdW1EaWdlc3RMZW5ndGgpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgIG1faGFzaEFsZ29yaXRobXNVc2VkIHw9IGRpZ2VzdC0+YWxnb3JpdGhtOworICAgIG1f
aGFzaEFsZ29yaXRobXNVc2VkLmFkZChkaWdlc3QtPmFsZ29yaXRobSk7CiAgICAgbV9oYXNoZXMu
YWRkKFdURk1vdmUoKmRpZ2VzdCkpOwogICAgIHJldHVybiB0cnVlOwogfQpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1FdmVudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtRXZlbnQuaAkocmV2aXNpb24gMjM1NTE0KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1FdmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MTUsMTMgKzExNSwxMyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgICwgbV90aW1lc3RhbXAodGltZXN0
YW1wKQogICAgIHsKICAgICAgICAgaWYgKHNoaWZ0S2V5KQotICAgICAgICAgICAgbV9tb2RpZmll
cnMgfD0gTW9kaWZpZXI6OlNoaWZ0S2V5OworICAgICAgICAgICAgbV9tb2RpZmllcnMuYWRkKE1v
ZGlmaWVyOjpTaGlmdEtleSk7CiAgICAgICAgIGlmIChjdHJsS2V5KQotICAgICAgICAgICAgbV9t
b2RpZmllcnMgfD0gTW9kaWZpZXI6OkN0cmxLZXk7CisgICAgICAgICAgICBtX21vZGlmaWVycy5h
ZGQoTW9kaWZpZXI6OkN0cmxLZXkpOwogICAgICAgICBpZiAoYWx0S2V5KQotICAgICAgICAgICAg
bV9tb2RpZmllcnMgfD0gTW9kaWZpZXI6OkFsdEtleTsKKyAgICAgICAgICAgIG1fbW9kaWZpZXJz
LmFkZChNb2RpZmllcjo6QWx0S2V5KTsKICAgICAgICAgaWYgKG1ldGFLZXkpCi0gICAgICAgICAg
ICBtX21vZGlmaWVycyB8PSBNb2RpZmllcjo6TWV0YUtleTsKKyAgICAgICAgICAgIG1fbW9kaWZp
ZXJzLmFkZChNb2RpZmllcjo6TWV0YUtleSk7CiAgICAgfQogCiAgICAgLy8gRXhwbGljaXQgcHJv
dGVjdGVkIGRlc3RydWN0b3Igc28gdGhhdCBwZW9wbGUgZG9uJ3QgYWNjaWRlbnRhbGx5CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1FdmVudEZhY3RvcnlJT1MubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtRXZlbnRG
YWN0b3J5SU9TLm1tCShyZXZpc2lvbiAyMzU1MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvUGxhdGZvcm1FdmVudEZhY3RvcnlJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTQzLDE1
ICs0MywxNSBAQCBzdGF0aWMgT3B0aW9uU2V0PFBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVyCiAgICAg
T3B0aW9uU2V0PFBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVyPiBtb2RpZmllcnM7CiAKICAgICBpZiAo
ZXZlbnQubW9kaWZpZXJGbGFncyAmIFdlYkV2ZW50RmxhZ01hc2tTaGlmdCkKLSAgICAgICAgbW9k
aWZpZXJzIHw9IFBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVyOjpTaGlmdEtleTsKKyAgICAgICAgbW9k
aWZpZXJzLmFkZChQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcjo6U2hpZnRLZXkpOwogICAgIGlmIChl
dmVudC5tb2RpZmllckZsYWdzICYgV2ViRXZlbnRGbGFnTWFza0NvbnRyb2wpCi0gICAgICAgIG1v
ZGlmaWVycyB8PSBQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcjo6Q3RybEtleTsKKyAgICAgICAgbW9k
aWZpZXJzLmFkZChQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcjo6Q3RybEtleSk7CiAgICAgaWYgKGV2
ZW50Lm1vZGlmaWVyRmxhZ3MgJiBXZWJFdmVudEZsYWdNYXNrQWx0ZXJuYXRlKQotICAgICAgICBt
b2RpZmllcnMgfD0gUGxhdGZvcm1FdmVudDo6TW9kaWZpZXI6OkFsdEtleTsKKyAgICAgICAgbW9k
aWZpZXJzLmFkZChQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcjo6QWx0S2V5KTsKICAgICBpZiAoZXZl
bnQubW9kaWZpZXJGbGFncyAmIFdlYkV2ZW50RmxhZ01hc2tDb21tYW5kKQotICAgICAgICBtb2Rp
ZmllcnMgfD0gUGxhdGZvcm1FdmVudDo6TW9kaWZpZXI6Ok1ldGFLZXk7CisgICAgICAgIG1vZGlm
aWVycy5hZGQoUGxhdGZvcm1FdmVudDo6TW9kaWZpZXI6Ok1ldGFLZXkpOwogICAgIGlmIChldmVu
dC5tb2RpZmllckZsYWdzICYgV2ViRXZlbnRGbGFnTWFza0FscGhhU2hpZnQpCi0gICAgICAgIG1v
ZGlmaWVycyB8PSBQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcjo6Q2Fwc0xvY2tLZXk7CisgICAgICAg
IG1vZGlmaWVycy5hZGQoUGxhdGZvcm1FdmVudDo6TW9kaWZpZXI6OkNhcHNMb2NrS2V5KTsKIAog
ICAgIHJldHVybiBtb2RpZmllcnM7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvUGxhdGZvcm1FdmVudEZhY3RvcnlNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtRXZlbnRGYWN0b3J5TWFjLm1tCShyZXZpc2lvbiAyMzU1
MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1FdmVudEZhY3RvcnlN
YWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTY2NiwxNSArNjY2LDE1IEBAIE9wdGlvblNldDxQbGF0
Zm9ybUV2ZW50OjpNb2RpZmllcj4gbW9kaWYKICAgICBPcHRpb25TZXQ8UGxhdGZvcm1FdmVudDo6
TW9kaWZpZXI+IG1vZGlmaWVyczsKIAogICAgIGlmIChldmVudC5tb2RpZmllckZsYWdzICYgTlNF
dmVudE1vZGlmaWVyRmxhZ1NoaWZ0KQotICAgICAgICBtb2RpZmllcnMgfD0gUGxhdGZvcm1FdmVu
dDo6TW9kaWZpZXI6OlNoaWZ0S2V5OworICAgICAgICBtb2RpZmllcnMuYWRkKFBsYXRmb3JtRXZl
bnQ6Ok1vZGlmaWVyOjpTaGlmdEtleSk7CiAgICAgaWYgKGV2ZW50Lm1vZGlmaWVyRmxhZ3MgJiBO
U0V2ZW50TW9kaWZpZXJGbGFnQ29udHJvbCkKLSAgICAgICAgbW9kaWZpZXJzIHw9IFBsYXRmb3Jt
RXZlbnQ6Ok1vZGlmaWVyOjpDdHJsS2V5OworICAgICAgICBtb2RpZmllcnMuYWRkKFBsYXRmb3Jt
RXZlbnQ6Ok1vZGlmaWVyOjpDdHJsS2V5KTsKICAgICBpZiAoZXZlbnQubW9kaWZpZXJGbGFncyAm
IE5TRXZlbnRNb2RpZmllckZsYWdPcHRpb24pCi0gICAgICAgIG1vZGlmaWVycyB8PSBQbGF0Zm9y
bUV2ZW50OjpNb2RpZmllcjo6QWx0S2V5OworICAgICAgICBtb2RpZmllcnMuYWRkKFBsYXRmb3Jt
RXZlbnQ6Ok1vZGlmaWVyOjpBbHRLZXkpOwogICAgIGlmIChldmVudC5tb2RpZmllckZsYWdzICYg
TlNFdmVudE1vZGlmaWVyRmxhZ0NvbW1hbmQpCi0gICAgICAgIG1vZGlmaWVycyB8PSBQbGF0Zm9y
bUV2ZW50OjpNb2RpZmllcjo6TWV0YUtleTsKKyAgICAgICAgbW9kaWZpZXJzLmFkZChQbGF0Zm9y
bUV2ZW50OjpNb2RpZmllcjo6TWV0YUtleSk7CiAgICAgaWYgKGV2ZW50Lm1vZGlmaWVyRmxhZ3Mg
JiBOU0V2ZW50TW9kaWZpZXJGbGFnQ2Fwc0xvY2spCi0gICAgICAgIG1vZGlmaWVycyB8PSBQbGF0
Zm9ybUV2ZW50OjpNb2RpZmllcjo6Q2Fwc0xvY2tLZXk7CisgICAgICAgIG1vZGlmaWVycy5hZGQo
UGxhdGZvcm1FdmVudDo6TW9kaWZpZXI6OkNhcHNMb2NrS2V5KTsKIAogICAgIHJldHVybiBtb2Rp
ZmllcnM7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAJ
KHJldmlzaW9uIDIzNTUxNCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1NywxNyArNTU3LDE3IEBAIHZvaWQgUmVuZGVyTGF5
ZXI6OnVwZGF0ZUxheWVyUG9zaXRpb25zKFIKICAgICAvLyBDbGVhciB0aGUgSXNDb21wb3NpdGlu
Z1VwZGF0ZVJvb3QgZmxhZyBvbmNlIHdlJ3ZlIGZvdW5kIHRoZSBmaXJzdCBjb21wb3NpdGluZyBs
YXllciBpbiB0aGlzIHVwZGF0ZS4KICAgICBib29sIGlzVXBkYXRlUm9vdCA9IGZsYWdzLmNvbnRh
aW5zKElzQ29tcG9zaXRpbmdVcGRhdGVSb290KTsKICAgICBpZiAoaXNDb21wb3NpdGVkKCkpCi0g
ICAgICAgIGZsYWdzIC09IElzQ29tcG9zaXRpbmdVcGRhdGVSb290OworICAgICAgICBmbGFncy5y
ZW1vdmUoSXNDb21wb3NpdGluZ1VwZGF0ZVJvb3QpOwogCiAgICAgaWYgKHJlbmRlcmVyKCkuaXNJ
bkZsb3dSZW5kZXJGcmFnbWVudGVkRmxvdygpKSB7CiAgICAgICAgIHVwZGF0ZVBhZ2luYXRpb24o
KTsKLSAgICAgICAgZmxhZ3MgfD0gVXBkYXRlUGFnaW5hdGlvbjsKKyAgICAgICAgZmxhZ3MuYWRk
KFVwZGF0ZVBhZ2luYXRpb24pOwogICAgIH0KIAogICAgIGlmICh0cmFuc2Zvcm0oKSkgewotICAg
ICAgICBmbGFncyB8PSBTZWVuVHJhbnNmb3JtZWRMYXllcjsKKyAgICAgICAgZmxhZ3MuYWRkKFNl
ZW5UcmFuc2Zvcm1lZExheWVyKTsKICAgICAgICAgaWYgKCF0cmFuc2Zvcm0oKS0+aXNBZmZpbmUo
KSkKLSAgICAgICAgICAgIGZsYWdzIHw9IFNlZW4zRFRyYW5zZm9ybWVkTGF5ZXI7CisgICAgICAg
ICAgICBmbGFncy5hZGQoU2VlbjNEVHJhbnNmb3JtZWRMYXllcik7CiAgICAgfQogCiAgICAgZm9y
IChSZW5kZXJMYXllciogY2hpbGQgPSBmaXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxk
LT5uZXh0U2libGluZygpKQpAQCAtNTc2LDkgKzU3Niw5IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnVw
ZGF0ZUxheWVyUG9zaXRpb25zKFIKICAgICBpZiAoKGZsYWdzICYgVXBkYXRlQ29tcG9zaXRpbmdM
YXllcnMpICYmIGlzQ29tcG9zaXRlZCgpKSB7CiAgICAgICAgIE9wdGlvblNldDxSZW5kZXJMYXll
ckJhY2tpbmc6OlVwZGF0ZUFmdGVyTGF5b3V0RmxhZ3M+IHVwZGF0ZUZsYWdzOwogICAgICAgICBp
ZiAoZmxhZ3MgJiBOZWVkc0Z1bGxSZXBhaW50SW5CYWNraW5nKQotICAgICAgICAgICAgdXBkYXRl
RmxhZ3MgfD0gUmVuZGVyTGF5ZXJCYWNraW5nOjpVcGRhdGVBZnRlckxheW91dEZsYWdzOjpOZWVk
c0Z1bGxSZXBhaW50OworICAgICAgICAgICAgdXBkYXRlRmxhZ3MuYWRkKFJlbmRlckxheWVyQmFj
a2luZzo6VXBkYXRlQWZ0ZXJMYXlvdXRGbGFnczo6TmVlZHNGdWxsUmVwYWludCk7CiAgICAgICAg
IGlmIChpc1VwZGF0ZVJvb3QpCi0gICAgICAgICAgICB1cGRhdGVGbGFncyB8PSBSZW5kZXJMYXll
ckJhY2tpbmc6OlVwZGF0ZUFmdGVyTGF5b3V0RmxhZ3M6OklzVXBkYXRlUm9vdDsKKyAgICAgICAg
ICAgIHVwZGF0ZUZsYWdzLmFkZChSZW5kZXJMYXllckJhY2tpbmc6OlVwZGF0ZUFmdGVyTGF5b3V0
RmxhZ3M6OklzVXBkYXRlUm9vdCk7CiAgICAgICAgIGJhY2tpbmcoKS0+dXBkYXRlQWZ0ZXJMYXlv
dXQodXBkYXRlRmxhZ3MpOwogICAgIH0KICAgICAgICAgCkBAIC04NTEsMTYgKzg1MSwxNiBAQCB2
b2lkIFJlbmRlckxheWVyOjp1cGRhdGVMYXllclBvc2l0aW9uc0FmCiAKICAgICBib29sIHBvc2l0
aW9uQ2hhbmdlZCA9IHVwZGF0ZUxheWVyUG9zaXRpb24oKTsKICAgICBpZiAocG9zaXRpb25DaGFu
Z2VkKQotICAgICAgICBmbGFncyB8PSBIYXNDaGFuZ2VkQW5jZXN0b3I7CisgICAgICAgIGZsYWdz
LmFkZChIYXNDaGFuZ2VkQW5jZXN0b3IpOwogCiAgICAgaWYgKGZsYWdzLmNvbnRhaW5zQW55KHsg
SGFzQ2hhbmdlZEFuY2VzdG9yLCBIYXNTZWVuVmlld3BvcnRDb25zdHJhaW5lZEFuY2VzdG9yLCBJ
c092ZXJmbG93U2Nyb2xsIH0pKQogICAgICAgICBjbGVhckNsaXBSZWN0cygpOwogCiAgICAgaWYg
KHJlbmRlcmVyKCkuc3R5bGUoKS5oYXNWaWV3cG9ydENvbnN0cmFpbmVkUG9zaXRpb24oKSkKLSAg
ICAgICAgZmxhZ3MgfD0gSGFzU2VlblZpZXdwb3J0Q29uc3RyYWluZWRBbmNlc3RvcjsKKyAgICAg
ICAgZmxhZ3MuYWRkKEhhc1NlZW5WaWV3cG9ydENvbnN0cmFpbmVkQW5jZXN0b3IpOwogCiAgICAg
aWYgKHJlbmRlcmVyKCkuaGFzT3ZlcmZsb3dDbGlwKCkpCi0gICAgICAgIGZsYWdzIHw9IEhhc1Nl
ZW5BbmNlc3RvcldpdGhPdmVyZmxvd0NsaXA7CisgICAgICAgIGZsYWdzLmFkZChIYXNTZWVuQW5j
ZXN0b3JXaXRoT3ZlcmZsb3dDbGlwKTsKICAgICAKICAgICBib29sIHNob3VsZENvbXB1dGVSZXBh
aW50UmVjdHMgPSAoZmxhZ3MuY29udGFpbnMoSGFzU2VlblZpZXdwb3J0Q29uc3RyYWluZWRBbmNl
c3RvcikgfHwgZmxhZ3MuY29udGFpbnNBbGwoeyBJc092ZXJmbG93U2Nyb2xsLCBIYXNTZWVuQW5j
ZXN0b3JXaXRoT3ZlcmZsb3dDbGlwIH0pKSAmJiBpc1NlbGZQYWludGluZ0xheWVyKCk7CiAgICAg
Ym9vbCBpc1Zpc3VhbGx5RW1wdHkgPSAhaXNWaXN1YWxseU5vbkVtcHR5KCk7CkBAIC0zOTczLDcg
KzM5NzMsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludExheWVyKEdyYXBoaWNzQ29uCiAgICAg
ICAgIC8vIFRoZSBwZXJmb3JtaW5nUGFpbnRJbnZhbGlkYXRpb24oKSBwYWludGluZyBwYXNzIGdv
ZXMgdGhyb3VnaCBjb21wb3NpdGluZyBsYXllcnMsCiAgICAgICAgIC8vIGJ1dCB3ZSBuZWVkIHRv
IGVuc3VyZSB0aGF0IHdlIGRvbid0IGNhY2hlIGNsaXAgcmVjdHMgY29tcHV0ZWQgd2l0aCB0aGUg
d3Jvbmcgcm9vdCBpbiB0aGlzIGNhc2UuCiAgICAgICAgIGlmIChjb250ZXh0LnBlcmZvcm1pbmdQ
YWludEludmFsaWRhdGlvbigpIHx8IChwYWludGluZ0luZm8ucGFpbnRCZWhhdmlvciAmIFBhaW50
QmVoYXZpb3I6OkZsYXR0ZW5Db21wb3NpdGluZ0xheWVycykpCi0gICAgICAgICAgICBwYWludEZs
YWdzIHw9IFBhaW50TGF5ZXJUZW1wb3JhcnlDbGlwUmVjdHM7CisgICAgICAgICAgICBwYWludEZs
YWdzLmFkZChQYWludExheWVyVGVtcG9yYXJ5Q2xpcFJlY3RzKTsKICAgICAgICAgZWxzZSBpZiAo
IWJhY2tpbmcoKS0+cGFpbnRzSW50b1dpbmRvdygpCiAgICAgICAgICAgICAmJiAhYmFja2luZygp
LT5wYWludHNJbnRvQ29tcG9zaXRlZEFuY2VzdG9yKCkKICAgICAgICAgICAgICYmICFzaG91bGRE
b1NvZnR3YXJlUGFpbnQodGhpcywgcGFpbnRGbGFncy5jb250YWlucyhQYWludExheWVyUGFpbnRp
bmdSZWZsZWN0aW9uKSkKQEAgLTQwMDAsNyArNDAwMCw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBh
aW50TGF5ZXIoR3JhcGhpY3NDb24KICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKHBhaW50c1dp
dGhUcmFuc3BhcmVuY3kocGFpbnRpbmdJbmZvLnBhaW50QmVoYXZpb3IpKQotICAgICAgICBwYWlu
dEZsYWdzIHw9IFBhaW50TGF5ZXJIYXZlVHJhbnNwYXJlbmN5OworICAgICAgICBwYWludEZsYWdz
LmFkZChQYWludExheWVySGF2ZVRyYW5zcGFyZW5jeSk7CiAKICAgICAvLyBQYWludExheWVyQXBw
bGllZFRyYW5zZm9ybSBpcyB1c2VkIGluIFJlbmRlclJlcGxpY2EsIHRvIGF2b2lkIGFwcGx5aW5n
IHRoZSB0cmFuc2Zvcm0gdHdpY2UuCiAgICAgaWYgKHBhaW50c1dpdGhUcmFuc2Zvcm0ocGFpbnRp
bmdJbmZvLnBhaW50QmVoYXZpb3IpICYmICEocGFpbnRGbGFncyAmIFBhaW50TGF5ZXJBcHBsaWVk
VHJhbnNmb3JtKSkgewpAQCAtNDA2MSw3ICs0MDYxLDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFp
bnRMYXllckNvbnRlbnRzQW5kUgogICAgICAgICBtX3BhaW50aW5nSW5zaWRlUmVmbGVjdGlvbiA9
IGZhbHNlOwogICAgIH0KIAotICAgIGxvY2FsUGFpbnRGbGFncyB8PSBwYWludExheWVyUGFpbnRp
bmdDb21wb3NpdGluZ0FsbFBoYXNlc0ZsYWdzKCk7CisgICAgbG9jYWxQYWludEZsYWdzLmFkZChw
YWludExheWVyUGFpbnRpbmdDb21wb3NpdGluZ0FsbFBoYXNlc0ZsYWdzKCkpOwogICAgIHBhaW50
TGF5ZXJDb250ZW50cyhjb250ZXh0LCBwYWludGluZ0luZm8sIGxvY2FsUGFpbnRGbGFncyk7CiB9
CiAKQEAgLTQzNTUsMjEgKzQzNTUsMjEgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMYXllckNv
bnRlbnRzKEdyYQogCiAgICAgICAgIE9wdGlvblNldDxQYWludEJlaGF2aW9yPiBwYWludEJlaGF2
aW9yID0gUGFpbnRCZWhhdmlvcjo6Tm9ybWFsOwogICAgICAgICBpZiAobG9jYWxQYWludEZsYWdz
ICYgUGFpbnRMYXllclBhaW50aW5nU2tpcFJvb3RCYWNrZ3JvdW5kKQotICAgICAgICAgICAgcGFp
bnRCZWhhdmlvciB8PSBQYWludEJlaGF2aW9yOjpTa2lwUm9vdEJhY2tncm91bmQ7CisgICAgICAg
ICAgICBwYWludEJlaGF2aW9yLmFkZChQYWludEJlaGF2aW9yOjpTa2lwUm9vdEJhY2tncm91bmQp
OwogICAgICAgICBlbHNlIGlmIChsb2NhbFBhaW50RmxhZ3MgJiBQYWludExheWVyUGFpbnRpbmdS
b290QmFja2dyb3VuZE9ubHkpCi0gICAgICAgICAgICBwYWludEJlaGF2aW9yIHw9IFBhaW50QmVo
YXZpb3I6OlJvb3RCYWNrZ3JvdW5kT25seTsKKyAgICAgICAgICAgIHBhaW50QmVoYXZpb3IuYWRk
KFBhaW50QmVoYXZpb3I6OlJvb3RCYWNrZ3JvdW5kT25seSk7CiAKICAgICAgICAgaWYgKHBhaW50
aW5nSW5mby5wYWludEJlaGF2aW9yICYgUGFpbnRCZWhhdmlvcjo6RmxhdHRlbkNvbXBvc2l0aW5n
TGF5ZXJzKQotICAgICAgICAgICAgcGFpbnRCZWhhdmlvciB8PSBQYWludEJlaGF2aW9yOjpGbGF0
dGVuQ29tcG9zaXRpbmdMYXllcnM7CisgICAgICAgICAgICBwYWludEJlaGF2aW9yLmFkZChQYWlu
dEJlaGF2aW9yOjpGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMpOwogICAgICAgICAKICAgICAgICAg
aWYgKHBhaW50aW5nSW5mby5wYWludEJlaGF2aW9yICYgUGFpbnRCZWhhdmlvcjo6U25hcHNob3R0
aW5nKQotICAgICAgICAgICAgcGFpbnRCZWhhdmlvciB8PSBQYWludEJlaGF2aW9yOjpTbmFwc2hv
dHRpbmc7CisgICAgICAgICAgICBwYWludEJlaGF2aW9yLmFkZChQYWludEJlaGF2aW9yOjpTbmFw
c2hvdHRpbmcpOwogICAgICAgICAKICAgICAgICAgaWYgKChwYWludGluZ0luZm8ucGFpbnRCZWhh
dmlvciAmIFBhaW50QmVoYXZpb3I6OlRpbGVGaXJzdFBhaW50KSAmJiBpc1JlbmRlclZpZXdMYXll
cigpKQotICAgICAgICAgICAgcGFpbnRCZWhhdmlvciB8PSBQYWludEJlaGF2aW9yOjpUaWxlRmly
c3RQYWludDsKKyAgICAgICAgICAgIHBhaW50QmVoYXZpb3IuYWRkKFBhaW50QmVoYXZpb3I6OlRp
bGVGaXJzdFBhaW50KTsKIAogICAgICAgICBpZiAocGFpbnRpbmdJbmZvLnBhaW50QmVoYXZpb3Ig
JiBQYWludEJlaGF2aW9yOjpFeGNsdWRlU2VsZWN0aW9uKQotICAgICAgICAgICAgcGFpbnRCZWhh
dmlvciB8PSBQYWludEJlaGF2aW9yOjpFeGNsdWRlU2VsZWN0aW9uOworICAgICAgICAgICAgcGFp
bnRCZWhhdmlvci5hZGQoUGFpbnRCZWhhdmlvcjo6RXhjbHVkZVNlbGVjdGlvbik7CiAKICAgICAg
ICAgTGF5b3V0UmVjdCBwYWludERpcnR5UmVjdCA9IGxvY2FsUGFpbnRpbmdJbmZvLnBhaW50RGly
dHlSZWN0OwogICAgICAgICBpZiAoc2hvdWxkUGFpbnRDb250ZW50IHx8IHNob3VsZFBhaW50T3V0
bGluZSB8fCBpc1BhaW50aW5nT3ZlcmxheVNjcm9sbGJhcnMpIHsKQEAgLTQ0MzgsMTMgKzQ0Mzgs
MTMgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMYXllckNvbnRlbnRzKEdyYQogICAgIGlmIChz
aG91bGRQYWludENvbnRlbnQgJiYgIShzZWxlY3Rpb25Pbmx5IHx8IHNlbGVjdGlvbkFuZEJhY2tn
cm91bmRzT25seSkpIHsKICAgICAgICAgT3B0aW9uU2V0PFBhaW50QmVoYXZpb3I+IHBhaW50QmVo
YXZpb3IgPSBQYWludEJlaGF2aW9yOjpOb3JtYWw7CiAgICAgICAgIGlmIChwYWludGluZ0luZm8u
cGFpbnRCZWhhdmlvciAmIFBhaW50QmVoYXZpb3I6OkZsYXR0ZW5Db21wb3NpdGluZ0xheWVycykK
LSAgICAgICAgICAgIHBhaW50QmVoYXZpb3IgfD0gUGFpbnRCZWhhdmlvcjo6RmxhdHRlbkNvbXBv
c2l0aW5nTGF5ZXJzOworICAgICAgICAgICAgcGFpbnRCZWhhdmlvci5hZGQoUGFpbnRCZWhhdmlv
cjo6RmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzKTsKICAgICAgICAgCiAgICAgICAgIGlmIChwYWlu
dGluZ0luZm8ucGFpbnRCZWhhdmlvciAmIFBhaW50QmVoYXZpb3I6OlNuYXBzaG90dGluZykKLSAg
ICAgICAgICAgIHBhaW50QmVoYXZpb3IgfD0gUGFpbnRCZWhhdmlvcjo6U25hcHNob3R0aW5nOwor
ICAgICAgICAgICAgcGFpbnRCZWhhdmlvci5hZGQoUGFpbnRCZWhhdmlvcjo6U25hcHNob3R0aW5n
KTsKICAgICAgICAgCiAgICAgICAgIGlmIChwYWludGluZ0luZm8ucGFpbnRCZWhhdmlvciAmIFBh
aW50QmVoYXZpb3I6OlRpbGVGaXJzdFBhaW50KQotICAgICAgICAgICAgcGFpbnRCZWhhdmlvciB8
PSBQYWludEJlaGF2aW9yOjpUaWxlRmlyc3RQYWludDsKKyAgICAgICAgICAgIHBhaW50QmVoYXZp
b3IuYWRkKFBhaW50QmVoYXZpb3I6OlRpbGVGaXJzdFBhaW50KTsKIAogICAgICAgICBpZiAoc2hv
dWxkUGFpbnRNYXNrKHBhaW50aW5nSW5mby5wYWludEJlaGF2aW9yLCBsb2NhbFBhaW50RmxhZ3Mp
KSB7CiAgICAgICAgICAgICAvLyBQYWludCB0aGUgbWFzayBmb3IgdGhlIGZyYWdtZW50cy4KQEAg
LTQ3NzAsMTMgKzQ3NzAsMTMgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRGb3JlZ3JvdW5kRm9y
RnJhZwogICAgICAgICBsb2NhbFBhaW50QmVoYXZpb3IgPSBwYWludEJlaGF2aW9yOwogCiAgICAg
aWYgKGxvY2FsUGFpbnRpbmdJbmZvLnBhaW50QmVoYXZpb3IgJiBQYWludEJlaGF2aW9yOjpFeGNs
dWRlU2VsZWN0aW9uKQotICAgICAgICBsb2NhbFBhaW50QmVoYXZpb3IgfD0gUGFpbnRCZWhhdmlv
cjo6RXhjbHVkZVNlbGVjdGlvbjsKKyAgICAgICAgbG9jYWxQYWludEJlaGF2aW9yLmFkZChQYWlu
dEJlaGF2aW9yOjpFeGNsdWRlU2VsZWN0aW9uKTsKICAgICAKICAgICBpZiAobG9jYWxQYWludGlu
Z0luZm8ucGFpbnRCZWhhdmlvciAmIFBhaW50QmVoYXZpb3I6OlNuYXBzaG90dGluZykKLSAgICAg
ICAgbG9jYWxQYWludEJlaGF2aW9yIHw9IFBhaW50QmVoYXZpb3I6OlNuYXBzaG90dGluZzsKKyAg
ICAgICAgbG9jYWxQYWludEJlaGF2aW9yLmFkZChQYWludEJlaGF2aW9yOjpTbmFwc2hvdHRpbmcp
OwogICAgIAogICAgIGlmIChsb2NhbFBhaW50aW5nSW5mby5wYWludEJlaGF2aW9yICYgUGFpbnRC
ZWhhdmlvcjo6VGlsZUZpcnN0UGFpbnQpCi0gICAgICAgIGxvY2FsUGFpbnRCZWhhdmlvciB8PSBQ
YWludEJlaGF2aW9yOjpUaWxlRmlyc3RQYWludDsKKyAgICAgICAgbG9jYWxQYWludEJlaGF2aW9y
LmFkZChQYWludEJlaGF2aW9yOjpUaWxlRmlyc3RQYWludCk7CiAKICAgICAvLyBPcHRpbWl6ZSBj
bGlwcGluZyBmb3IgdGhlIHNpbmdsZSBmcmFnbWVudCBjYXNlLgogICAgIGJvb2wgc2hvdWxkQ2xp
cCA9IGxvY2FsUGFpbnRpbmdJbmZvLmNsaXBUb0RpcnR5UmVjdCAmJiBsYXllckZyYWdtZW50cy5z
aXplKCkgPT0gMSAmJiBsYXllckZyYWdtZW50c1swXS5zaG91bGRQYWludENvbnRlbnQgJiYgIWxh
eWVyRnJhZ21lbnRzWzBdLmZvcmVncm91bmRSZWN0LmlzRW1wdHkoKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCShyZXZpc2lvbiAy
MzU1MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjUzNCwyNCArMjUzNCwyNCBAQCB2b2lkIFJlbmRlckxheWVy
QmFja2luZzo6cGFpbnRJbnRvTGF5ZXIoCiAKICAgICBPcHRpb25TZXQ8UmVuZGVyTGF5ZXI6OlBh
aW50TGF5ZXJGbGFnPiBwYWludEZsYWdzOwogICAgIGlmIChwYWludGluZ1BoYXNlICYgR3JhcGhp
Y3NMYXllclBhaW50QmFja2dyb3VuZCkKLSAgICAgICAgcGFpbnRGbGFncyB8PSBSZW5kZXJMYXll
cjo6UGFpbnRMYXllclBhaW50aW5nQ29tcG9zaXRpbmdCYWNrZ3JvdW5kUGhhc2U7CisgICAgICAg
IHBhaW50RmxhZ3MuYWRkKFJlbmRlckxheWVyOjpQYWludExheWVyUGFpbnRpbmdDb21wb3NpdGlu
Z0JhY2tncm91bmRQaGFzZSk7CiAgICAgaWYgKHBhaW50aW5nUGhhc2UgJiBHcmFwaGljc0xheWVy
UGFpbnRGb3JlZ3JvdW5kKQotICAgICAgICBwYWludEZsYWdzIHw9IFJlbmRlckxheWVyOjpQYWlu
dExheWVyUGFpbnRpbmdDb21wb3NpdGluZ0ZvcmVncm91bmRQaGFzZTsKKyAgICAgICAgcGFpbnRG
bGFncy5hZGQoUmVuZGVyTGF5ZXI6OlBhaW50TGF5ZXJQYWludGluZ0NvbXBvc2l0aW5nRm9yZWdy
b3VuZFBoYXNlKTsKICAgICBpZiAocGFpbnRpbmdQaGFzZSAmIEdyYXBoaWNzTGF5ZXJQYWludE1h
c2spCi0gICAgICAgIHBhaW50RmxhZ3MgfD0gUmVuZGVyTGF5ZXI6OlBhaW50TGF5ZXJQYWludGlu
Z0NvbXBvc2l0aW5nTWFza1BoYXNlOworICAgICAgICBwYWludEZsYWdzLmFkZChSZW5kZXJMYXll
cjo6UGFpbnRMYXllclBhaW50aW5nQ29tcG9zaXRpbmdNYXNrUGhhc2UpOwogICAgIGlmIChwYWlu
dGluZ1BoYXNlICYgR3JhcGhpY3NMYXllclBhaW50Q2xpcFBhdGgpCi0gICAgICAgIHBhaW50Rmxh
Z3MgfD0gUmVuZGVyTGF5ZXI6OlBhaW50TGF5ZXJQYWludGluZ0NvbXBvc2l0aW5nQ2xpcFBhdGhQ
aGFzZTsKKyAgICAgICAgcGFpbnRGbGFncy5hZGQoUmVuZGVyTGF5ZXI6OlBhaW50TGF5ZXJQYWlu
dGluZ0NvbXBvc2l0aW5nQ2xpcFBhdGhQaGFzZSk7CiAgICAgaWYgKHBhaW50aW5nUGhhc2UgJiBH
cmFwaGljc0xheWVyUGFpbnRDaGlsZENsaXBwaW5nTWFzaykKLSAgICAgICAgcGFpbnRGbGFncyB8
PSBSZW5kZXJMYXllcjo6UGFpbnRMYXllclBhaW50aW5nQ2hpbGRDbGlwcGluZ01hc2tQaGFzZTsK
KyAgICAgICAgcGFpbnRGbGFncy5hZGQoUmVuZGVyTGF5ZXI6OlBhaW50TGF5ZXJQYWludGluZ0No
aWxkQ2xpcHBpbmdNYXNrUGhhc2UpOwogICAgIGlmIChwYWludGluZ1BoYXNlICYgR3JhcGhpY3NM
YXllclBhaW50T3ZlcmZsb3dDb250ZW50cykKLSAgICAgICAgcGFpbnRGbGFncyB8PSBSZW5kZXJM
YXllcjo6UGFpbnRMYXllclBhaW50aW5nT3ZlcmZsb3dDb250ZW50czsKKyAgICAgICAgcGFpbnRG
bGFncy5hZGQoUmVuZGVyTGF5ZXI6OlBhaW50TGF5ZXJQYWludGluZ092ZXJmbG93Q29udGVudHMp
OwogICAgIGlmIChwYWludGluZ1BoYXNlICYgR3JhcGhpY3NMYXllclBhaW50Q29tcG9zaXRlZFNj
cm9sbCkKLSAgICAgICAgcGFpbnRGbGFncyB8PSBSZW5kZXJMYXllcjo6UGFpbnRMYXllclBhaW50
aW5nQ29tcG9zaXRpbmdTY3JvbGxpbmdQaGFzZTsKKyAgICAgICAgcGFpbnRGbGFncy5hZGQoUmVu
ZGVyTGF5ZXI6OlBhaW50TGF5ZXJQYWludGluZ0NvbXBvc2l0aW5nU2Nyb2xsaW5nUGhhc2UpOwog
CiAgICAgaWYgKGdyYXBoaWNzTGF5ZXIgPT0gbV9iYWNrZ3JvdW5kTGF5ZXIuZ2V0KCkgJiYgbV9i
YWNrZ3JvdW5kTGF5ZXJQYWludHNGaXhlZFJvb3RCYWNrZ3JvdW5kKQotICAgICAgICBwYWludEZs
YWdzIHw9IHsgUmVuZGVyTGF5ZXI6OlBhaW50TGF5ZXJQYWludGluZ1Jvb3RCYWNrZ3JvdW5kT25s
eSwgUmVuZGVyTGF5ZXI6OlBhaW50TGF5ZXJQYWludGluZ0NvbXBvc2l0aW5nRm9yZWdyb3VuZFBo
YXNlIH07IC8vIE5lZWQgUGFpbnRMYXllclBhaW50aW5nQ29tcG9zaXRpbmdGb3JlZ3JvdW5kUGhh
c2UgdG8gd2FsayBjaGlsZCBsYXllcnMuCisgICAgICAgIHBhaW50RmxhZ3MuYWRkKHsgUmVuZGVy
TGF5ZXI6OlBhaW50TGF5ZXJQYWludGluZ1Jvb3RCYWNrZ3JvdW5kT25seSwgUmVuZGVyTGF5ZXI6
OlBhaW50TGF5ZXJQYWludGluZ0NvbXBvc2l0aW5nRm9yZWdyb3VuZFBoYXNlIH0pOyAvLyBOZWVk
IFBhaW50TGF5ZXJQYWludGluZ0NvbXBvc2l0aW5nRm9yZWdyb3VuZFBoYXNlIHRvIHdhbGsgY2hp
bGQgbGF5ZXJzLgogICAgIGVsc2UgaWYgKGNvbXBvc2l0b3IoKS5maXhlZFJvb3RCYWNrZ3JvdW5k
TGF5ZXIoKSkKLSAgICAgICAgcGFpbnRGbGFncyB8PSBSZW5kZXJMYXllcjo6UGFpbnRMYXllclBh
aW50aW5nU2tpcFJvb3RCYWNrZ3JvdW5kOworICAgICAgICBwYWludEZsYWdzLmFkZChSZW5kZXJM
YXllcjo6UGFpbnRMYXllclBhaW50aW5nU2tpcFJvb3RCYWNrZ3JvdW5kKTsKIAogI2lmbmRlZiBO
REVCVUcKICAgICBSZW5kZXJFbGVtZW50OjpTZXRMYXlvdXROZWVkZWRGb3JiaWRkZW5TY29wZSBm
b3JiaWRTZXROZWVkc0xheW91dCgmcmVuZGVyZXIoKSk7CkBAIC0yNjA5LDEwICsyNjA5LDEwIEBA
IHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjpwYWludENvbnRlbnRzKGMKICAgICAgICAgLy8gV2Ug
aGF2ZSB0byB1c2UgdGhlIHNhbWUgcm9vdCBhcyBmb3IgaGl0IHRlc3RpbmcsIGJlY2F1c2UgYm90
aCBtZXRob2RzIGNhbiBjb21wdXRlIGFuZCBjYWNoZSBjbGlwUmVjdHMuCiAgICAgICAgIE9wdGlv
blNldDxQYWludEJlaGF2aW9yPiBiZWhhdmlvciA9IFBhaW50QmVoYXZpb3I6Ok5vcm1hbDsKICAg
ICAgICAgaWYgKGxheWVyUGFpbnRCZWhhdmlvciA9PSBHcmFwaGljc0xheWVyUGFpbnRTbmFwc2hv
dHRpbmcpCi0gICAgICAgICAgICBiZWhhdmlvciB8PSBQYWludEJlaGF2aW9yOjpTbmFwc2hvdHRp
bmc7CisgICAgICAgICAgICBiZWhhdmlvci5hZGQoUGFpbnRCZWhhdmlvcjo6U25hcHNob3R0aW5n
KTsKICAgICAgICAgCiAgICAgICAgIGlmIChsYXllclBhaW50QmVoYXZpb3IgPT0gR3JhcGhpY3NM
YXllclBhaW50Rmlyc3RUaWxlUGFpbnQpCi0gICAgICAgICAgICBiZWhhdmlvciB8PSBQYWludEJl
aGF2aW9yOjpUaWxlRmlyc3RQYWludDsKKyAgICAgICAgICAgIGJlaGF2aW9yLmFkZChQYWludEJl
aGF2aW9yOjpUaWxlRmlyc3RQYWludCk7CiAKICAgICAgICAgcGFpbnRJbnRvTGF5ZXIoZ3JhcGhp
Y3NMYXllciwgY29udGV4dCwgZGlydHlSZWN0LCBiZWhhdmlvciwgcGFpbnRpbmdQaGFzZSk7CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBv
c2l0b3IuY3BwCShyZXZpc2lvbiAyMzU1MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjE2NCw4OSArMjE2
NCw4OSBAQCBPcHRpb25TZXQ8Q29tcG9zaXRpbmdSZWFzb24+IFJlbmRlckxheWVyCiAgICAgYXV0
byYgcmVuZGVyZXIgPSByZW5kZXJlckZvckNvbXBvc2l0aW5nVGVzdHMobGF5ZXIpOwogCiAgICAg
aWYgKHJlcXVpcmVzQ29tcG9zaXRpbmdGb3JUcmFuc2Zvcm0ocmVuZGVyZXIpKQotICAgICAgICBy
ZWFzb25zIHw9IENvbXBvc2l0aW5nUmVhc29uOjpUcmFuc2Zvcm0zRDsKKyAgICAgICAgcmVhc29u
cy5hZGQoQ29tcG9zaXRpbmdSZWFzb246OlRyYW5zZm9ybTNEKTsKIAogICAgIGlmIChyZXF1aXJl
c0NvbXBvc2l0aW5nRm9yVmlkZW8ocmVuZGVyZXIpKQotICAgICAgICByZWFzb25zIHw9IENvbXBv
c2l0aW5nUmVhc29uOjpWaWRlbzsKKyAgICAgICAgcmVhc29ucy5hZGQoQ29tcG9zaXRpbmdSZWFz
b246OlZpZGVvKTsKICAgICBlbHNlIGlmIChyZXF1aXJlc0NvbXBvc2l0aW5nRm9yQ2FudmFzKHJl
bmRlcmVyKSkKLSAgICAgICAgcmVhc29ucyB8PSBDb21wb3NpdGluZ1JlYXNvbjo6Q2FudmFzOwor
ICAgICAgICByZWFzb25zLmFkZChDb21wb3NpdGluZ1JlYXNvbjo6Q2FudmFzKTsKICAgICBlbHNl
IGlmIChyZXF1aXJlc0NvbXBvc2l0aW5nRm9yUGx1Z2luKHJlbmRlcmVyKSkKLSAgICAgICAgcmVh
c29ucyB8PSBDb21wb3NpdGluZ1JlYXNvbjo6UGx1Z2luOworICAgICAgICByZWFzb25zLmFkZChD
b21wb3NpdGluZ1JlYXNvbjo6UGx1Z2luKTsKICAgICBlbHNlIGlmIChyZXF1aXJlc0NvbXBvc2l0
aW5nRm9yRnJhbWUocmVuZGVyZXIpKQotICAgICAgICByZWFzb25zIHw9IENvbXBvc2l0aW5nUmVh
c29uOjpJRnJhbWU7CisgICAgICAgIHJlYXNvbnMuYWRkKENvbXBvc2l0aW5nUmVhc29uOjpJRnJh
bWUpOwogCiAgICAgaWYgKChjYW5SZW5kZXIzRFRyYW5zZm9ybXMoKSAmJiByZW5kZXJlci5zdHls
ZSgpLmJhY2tmYWNlVmlzaWJpbGl0eSgpID09IEJhY2tmYWNlVmlzaWJpbGl0eTo6SGlkZGVuKSkK
LSAgICAgICAgcmVhc29ucyB8PSBDb21wb3NpdGluZ1JlYXNvbjo6QmFja2ZhY2VWaXNpYmlsaXR5
SGlkZGVuOworICAgICAgICByZWFzb25zLmFkZChDb21wb3NpdGluZ1JlYXNvbjo6QmFja2ZhY2VW
aXNpYmlsaXR5SGlkZGVuKTsKIAogICAgIGlmIChjbGlwc0NvbXBvc2l0aW5nRGVzY2VuZGFudHMo
KnJlbmRlcmVyLmxheWVyKCkpKQotICAgICAgICByZWFzb25zIHw9IENvbXBvc2l0aW5nUmVhc29u
OjpDbGlwc0NvbXBvc2l0aW5nRGVzY2VuZGFudHM7CisgICAgICAgIHJlYXNvbnMuYWRkKENvbXBv
c2l0aW5nUmVhc29uOjpDbGlwc0NvbXBvc2l0aW5nRGVzY2VuZGFudHMpOwogCiAgICAgaWYgKHJl
cXVpcmVzQ29tcG9zaXRpbmdGb3JBbmltYXRpb24ocmVuZGVyZXIpKQotICAgICAgICByZWFzb25z
IHw9IENvbXBvc2l0aW5nUmVhc29uOjpBbmltYXRpb247CisgICAgICAgIHJlYXNvbnMuYWRkKENv
bXBvc2l0aW5nUmVhc29uOjpBbmltYXRpb24pOwogCiAgICAgaWYgKHJlcXVpcmVzQ29tcG9zaXRp
bmdGb3JGaWx0ZXJzKHJlbmRlcmVyKSkKLSAgICAgICAgcmVhc29ucyB8PSBDb21wb3NpdGluZ1Jl
YXNvbjo6RmlsdGVyczsKKyAgICAgICAgcmVhc29ucy5hZGQoQ29tcG9zaXRpbmdSZWFzb246OkZp
bHRlcnMpOwogCiAgICAgaWYgKHJlcXVpcmVzQ29tcG9zaXRpbmdGb3JXaWxsQ2hhbmdlKHJlbmRl
cmVyKSkKLSAgICAgICAgcmVhc29ucyB8PSBDb21wb3NpdGluZ1JlYXNvbjo6V2lsbENoYW5nZTsK
KyAgICAgICAgcmVhc29ucy5hZGQoQ29tcG9zaXRpbmdSZWFzb246OldpbGxDaGFuZ2UpOwogCiAg
ICAgaWYgKHJlcXVpcmVzQ29tcG9zaXRpbmdGb3JQb3NpdGlvbihyZW5kZXJlciwgKnJlbmRlcmVy
LmxheWVyKCkpKQotICAgICAgICByZWFzb25zIHw9IHJlbmRlcmVyLmlzRml4ZWRQb3NpdGlvbmVk
KCkgPyBDb21wb3NpdGluZ1JlYXNvbjo6UG9zaXRpb25GaXhlZCA6IENvbXBvc2l0aW5nUmVhc29u
OjpQb3NpdGlvblN0aWNreTsKKyAgICAgICAgcmVhc29ucy5hZGQocmVuZGVyZXIuaXNGaXhlZFBv
c2l0aW9uZWQoKSA/IENvbXBvc2l0aW5nUmVhc29uOjpQb3NpdGlvbkZpeGVkIDogQ29tcG9zaXRp
bmdSZWFzb246OlBvc2l0aW9uU3RpY2t5KTsKIAogI2lmIFBMQVRGT1JNKElPUykKICAgICBpZiAo
cmVxdWlyZXNDb21wb3NpdGluZ0ZvclNjcm9sbGluZygqcmVuZGVyZXIubGF5ZXIoKSkpCi0gICAg
ICAgIHJlYXNvbnMgfD0gQ29tcG9zaXRpbmdSZWFzb246Ok92ZXJmbG93U2Nyb2xsaW5nVG91Y2g7
CisgICAgICAgIHJlYXNvbnMuYWRkKENvbXBvc2l0aW5nUmVhc29uOjpPdmVyZmxvd1Njcm9sbGlu
Z1RvdWNoKTsKICNlbmRpZgogCiAgICAgaWYgKHJlcXVpcmVzQ29tcG9zaXRpbmdGb3JPdmVyZmxv
d1Njcm9sbGluZygqcmVuZGVyZXIubGF5ZXIoKSkpCi0gICAgICAgIHJlYXNvbnMgfD0gQ29tcG9z
aXRpbmdSZWFzb246Ok92ZXJmbG93U2Nyb2xsaW5nVG91Y2g7CisgICAgICAgIHJlYXNvbnMuYWRk
KENvbXBvc2l0aW5nUmVhc29uOjpPdmVyZmxvd1Njcm9sbGluZ1RvdWNoKTsKIAogICAgIHN3aXRj
aCAocmVuZGVyZXIubGF5ZXIoKS0+aW5kaXJlY3RDb21wb3NpdGluZ1JlYXNvbigpKSB7CiAgICAg
Y2FzZSBSZW5kZXJMYXllcjo6SW5kaXJlY3RDb21wb3NpdGluZ1JlYXNvbjo6Tm9uZToKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBSZW5kZXJMYXllcjo6SW5kaXJlY3RDb21wb3NpdGluZ1JlYXNv
bjo6U3RhY2tpbmc6Ci0gICAgICAgIHJlYXNvbnMgfD0gQ29tcG9zaXRpbmdSZWFzb246OlN0YWNr
aW5nOworICAgICAgICByZWFzb25zLmFkZChDb21wb3NpdGluZ1JlYXNvbjo6U3RhY2tpbmcpOwog
ICAgICAgICBicmVhazsKICAgICBjYXNlIFJlbmRlckxheWVyOjpJbmRpcmVjdENvbXBvc2l0aW5n
UmVhc29uOjpPdmVybGFwOgotICAgICAgICByZWFzb25zIHw9IENvbXBvc2l0aW5nUmVhc29uOjpP
dmVybGFwOworICAgICAgICByZWFzb25zLmFkZChDb21wb3NpdGluZ1JlYXNvbjo6T3ZlcmxhcCk7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUmVuZGVyTGF5ZXI6OkluZGlyZWN0Q29tcG9zaXRp
bmdSZWFzb246OkJhY2tncm91bmRMYXllcjoKLSAgICAgICAgcmVhc29ucyB8PSBDb21wb3NpdGlu
Z1JlYXNvbjo6TmVnYXRpdmVaSW5kZXhDaGlsZHJlbjsKKyAgICAgICAgcmVhc29ucy5hZGQoQ29t
cG9zaXRpbmdSZWFzb246Ok5lZ2F0aXZlWkluZGV4Q2hpbGRyZW4pOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIFJlbmRlckxheWVyOjpJbmRpcmVjdENvbXBvc2l0aW5nUmVhc29uOjpHcmFwaGlj
YWxFZmZlY3Q6CiAgICAgICAgIGlmIChyZW5kZXJlci5oYXNUcmFuc2Zvcm0oKSkKLSAgICAgICAg
ICAgIHJlYXNvbnMgfD0gQ29tcG9zaXRpbmdSZWFzb246OlRyYW5zZm9ybVdpdGhDb21wb3NpdGVk
RGVzY2VuZGFudHM7CisgICAgICAgICAgICByZWFzb25zLmFkZChDb21wb3NpdGluZ1JlYXNvbjo6
VHJhbnNmb3JtV2l0aENvbXBvc2l0ZWREZXNjZW5kYW50cyk7CiAKICAgICAgICAgaWYgKHJlbmRl
cmVyLmlzVHJhbnNwYXJlbnQoKSkKLSAgICAgICAgICAgIHJlYXNvbnMgfD0gQ29tcG9zaXRpbmdS
ZWFzb246Ok9wYWNpdHlXaXRoQ29tcG9zaXRlZERlc2NlbmRhbnRzOworICAgICAgICAgICAgcmVh
c29ucy5hZGQoQ29tcG9zaXRpbmdSZWFzb246Ok9wYWNpdHlXaXRoQ29tcG9zaXRlZERlc2NlbmRh
bnRzKTsKIAogICAgICAgICBpZiAocmVuZGVyZXIuaGFzTWFzaygpKQotICAgICAgICAgICAgcmVh
c29ucyB8PSBDb21wb3NpdGluZ1JlYXNvbjo6TWFza1dpdGhDb21wb3NpdGVkRGVzY2VuZGFudHM7
CisgICAgICAgICAgICByZWFzb25zLmFkZChDb21wb3NpdGluZ1JlYXNvbjo6TWFza1dpdGhDb21w
b3NpdGVkRGVzY2VuZGFudHMpOwogCiAgICAgICAgIGlmIChyZW5kZXJlci5oYXNSZWZsZWN0aW9u
KCkpCi0gICAgICAgICAgICByZWFzb25zIHw9IENvbXBvc2l0aW5nUmVhc29uOjpSZWZsZWN0aW9u
V2l0aENvbXBvc2l0ZWREZXNjZW5kYW50czsKKyAgICAgICAgICAgIHJlYXNvbnMuYWRkKENvbXBv
c2l0aW5nUmVhc29uOjpSZWZsZWN0aW9uV2l0aENvbXBvc2l0ZWREZXNjZW5kYW50cyk7CiAKICAg
ICAgICAgaWYgKHJlbmRlcmVyLmhhc0ZpbHRlcigpIHx8IHJlbmRlcmVyLmhhc0JhY2tkcm9wRmls
dGVyKCkpCi0gICAgICAgICAgICByZWFzb25zIHw9IENvbXBvc2l0aW5nUmVhc29uOjpGaWx0ZXJX
aXRoQ29tcG9zaXRlZERlc2NlbmRhbnRzOworICAgICAgICAgICAgcmVhc29ucy5hZGQoQ29tcG9z
aXRpbmdSZWFzb246OkZpbHRlcldpdGhDb21wb3NpdGVkRGVzY2VuZGFudHMpOwogCiAjaWYgRU5B
QkxFKENTU19DT01QT1NJVElORykKICAgICAgICAgaWYgKGxheWVyLmlzb2xhdGVzQ29tcG9zaXRl
ZEJsZW5kaW5nKCkpCi0gICAgICAgICAgICByZWFzb25zIHw9IENvbXBvc2l0aW5nUmVhc29uOjpJ
c29sYXRlc0NvbXBvc2l0ZWRCbGVuZGluZ0Rlc2NlbmRhbnRzOworICAgICAgICAgICAgcmVhc29u
cy5hZGQoQ29tcG9zaXRpbmdSZWFzb246Oklzb2xhdGVzQ29tcG9zaXRlZEJsZW5kaW5nRGVzY2Vu
ZGFudHMpOwogCiAgICAgICAgIGlmIChsYXllci5oYXNCbGVuZE1vZGUoKSkKLSAgICAgICAgICAg
IHJlYXNvbnMgfD0gQ29tcG9zaXRpbmdSZWFzb246OkJsZW5kaW5nV2l0aENvbXBvc2l0ZWREZXNj
ZW5kYW50czsKKyAgICAgICAgICAgIHJlYXNvbnMuYWRkKENvbXBvc2l0aW5nUmVhc29uOjpCbGVu
ZGluZ1dpdGhDb21wb3NpdGVkRGVzY2VuZGFudHMpOwogI2VuZGlmCiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgUmVuZGVyTGF5ZXI6OkluZGlyZWN0Q29tcG9zaXRpbmdSZWFzb246OlBlcnNwZWN0
aXZlOgotICAgICAgICByZWFzb25zIHw9IENvbXBvc2l0aW5nUmVhc29uOjpQZXJzcGVjdGl2ZTsK
KyAgICAgICAgcmVhc29ucy5hZGQoQ29tcG9zaXRpbmdSZWFzb246OlBlcnNwZWN0aXZlKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBSZW5kZXJMYXllcjo6SW5kaXJlY3RDb21wb3NpdGluZ1Jl
YXNvbjo6UHJlc2VydmUzRDoKLSAgICAgICAgcmVhc29ucyB8PSBDb21wb3NpdGluZ1JlYXNvbjo6
UHJlc2VydmUzRDsKKyAgICAgICAgcmVhc29ucy5hZGQoQ29tcG9zaXRpbmdSZWFzb246OlByZXNl
cnZlM0QpOwogICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBpZiAoaW5Db21wb3NpdGluZ01v
ZGUoKSAmJiByZW5kZXJlci5sYXllcigpLT5pc1JlbmRlclZpZXdMYXllcigpKQotICAgICAgICBy
ZWFzb25zIHw9IENvbXBvc2l0aW5nUmVhc29uOjpSb290OworICAgICAgICByZWFzb25zLmFkZChD
b21wb3NpdGluZ1JlYXNvbjo6Um9vdCk7CiAKICAgICByZXR1cm4gcmVhc29uczsKIH0KQEAgLTM2
MjUsMTAgKzM2MjUsMTAgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZVNjcm9s
bAogewogICAgIE9wdGlvblNldDxMYXllclNjcm9sbENvb3JkaW5hdGlvblJvbGU+IGNvb3JkaW5h
dGlvblJvbGVzOwogICAgIGlmIChpc1ZpZXdwb3J0Q29uc3RyYWluZWRGaXhlZE9yU3RpY2t5TGF5
ZXIobGF5ZXIpKQotICAgICAgICBjb29yZGluYXRpb25Sb2xlcyB8PSBWaWV3cG9ydENvbnN0cmFp
bmVkOworICAgICAgICBjb29yZGluYXRpb25Sb2xlcy5hZGQoVmlld3BvcnRDb25zdHJhaW5lZCk7
CiAKICAgICBpZiAodXNlQ29vcmRpbmF0ZWRTY3JvbGxpbmdGb3JMYXllcihsYXllcikpCi0gICAg
ICAgIGNvb3JkaW5hdGlvblJvbGVzIHw9IFNjcm9sbGluZzsKKyAgICAgICAgY29vcmRpbmF0aW9u
Um9sZXMuYWRkKFNjcm9sbGluZyk7CiAKICAgICBpZiAobGF5ZXIuaXNDb21wb3NpdGVkKCkpCiAg
ICAgICAgIGxheWVyLmJhY2tpbmcoKS0+c2V0SXNTY3JvbGxDb29yZGluYXRlZFdpdGhWaWV3cG9y
dENvbnN0cmFpbmVkUm9sZShjb29yZGluYXRpb25Sb2xlcy5jb250YWlucyhWaWV3cG9ydENvbnN0
cmFpbmVkKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dERlY29yYXRpb25Q
YWludGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dERl
Y29yYXRpb25QYWludGVyLmNwcAkocmV2aXNpb24gMjM1NTE0KQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1RleHREZWNvcmF0aW9uUGFpbnRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4
MywxNyArMzgzLDE3IEBAIHN0YXRpYyB2b2lkIGNvbGxlY3RTdHlsZXNGb3JSZW5kZXJlcihUZXgK
ICAgICAgICAgYXV0byBkZWNvcmF0aW9uU3R5bGUgPSBzdHlsZS50ZXh0RGVjb3JhdGlvblN0eWxl
KCk7CiAKICAgICAgICAgaWYgKGRlY29yYXRpb25zLmNvbnRhaW5zKFRleHREZWNvcmF0aW9uOjpV
bmRlcmxpbmUpKSB7Ci0gICAgICAgICAgICByZW1haW5pbmdEZWNvcmF0aW9ucyAtPSBUZXh0RGVj
b3JhdGlvbjo6VW5kZXJsaW5lOworICAgICAgICAgICAgcmVtYWluaW5nRGVjb3JhdGlvbnMucmVt
b3ZlKFRleHREZWNvcmF0aW9uOjpVbmRlcmxpbmUpOwogICAgICAgICAgICAgcmVzdWx0LnVuZGVy
bGluZUNvbG9yID0gY29sb3I7CiAgICAgICAgICAgICByZXN1bHQudW5kZXJsaW5lU3R5bGUgPSBk
ZWNvcmF0aW9uU3R5bGU7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGRlY29yYXRpb25zLmNvbnRh
aW5zKFRleHREZWNvcmF0aW9uOjpPdmVybGluZSkpIHsKLSAgICAgICAgICAgIHJlbWFpbmluZ0Rl
Y29yYXRpb25zIC09IFRleHREZWNvcmF0aW9uOjpPdmVybGluZTsKKyAgICAgICAgICAgIHJlbWFp
bmluZ0RlY29yYXRpb25zLnJlbW92ZShUZXh0RGVjb3JhdGlvbjo6T3ZlcmxpbmUpOwogICAgICAg
ICAgICAgcmVzdWx0Lm92ZXJsaW5lQ29sb3IgPSBjb2xvcjsKICAgICAgICAgICAgIHJlc3VsdC5v
dmVybGluZVN0eWxlID0gZGVjb3JhdGlvblN0eWxlOwogICAgICAgICB9CiAgICAgICAgIGlmIChk
ZWNvcmF0aW9ucy5jb250YWlucyhUZXh0RGVjb3JhdGlvbjo6TGluZVRocm91Z2gpKSB7Ci0gICAg
ICAgICAgICByZW1haW5pbmdEZWNvcmF0aW9ucyAtPSBUZXh0RGVjb3JhdGlvbjo6TGluZVRocm91
Z2g7CisgICAgICAgICAgICByZW1haW5pbmdEZWNvcmF0aW9ucy5yZW1vdmUoVGV4dERlY29yYXRp
b246OkxpbmVUaHJvdWdoKTsKICAgICAgICAgICAgIHJlc3VsdC5saW5ldGhyb3VnaENvbG9yID0g
Y29sb3I7CiAgICAgICAgICAgICByZXN1bHQubGluZXRocm91Z2hTdHlsZSA9IGRlY29yYXRpb25T
dHlsZTsKICAgICAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWlu
dFN0eWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBh
aW50U3R5bGUuY3BwCShyZXZpc2lvbiAyMzU1MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvVGV4dFBhaW50U3R5bGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAsNyArMTAwLDcgQEAg
VGV4dFBhaW50U3R5bGUgY29tcHV0ZVRleHRQYWludFN0eWxlKGNvbgogICAgICAgICBpZiAocGFn
ZSAmJiBwYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5pc0FjdGl2ZSgpKSB7CiAgICAgICAgICAgICBP
cHRpb25TZXQ8U3R5bGVDb2xvcjo6T3B0aW9ucz4gb3B0aW9uczsKICAgICAgICAgICAgIGlmIChw
YWdlLT51c2VTeXN0ZW1BcHBlYXJhbmNlKCkpCi0gICAgICAgICAgICAgICAgb3B0aW9ucyB8PSBT
dHlsZUNvbG9yOjpPcHRpb25zOjpVc2VTeXN0ZW1BcHBlYXJhbmNlOworICAgICAgICAgICAgICAg
IG9wdGlvbnMuYWRkKFN0eWxlQ29sb3I6Ok9wdGlvbnM6OlVzZVN5c3RlbUFwcGVhcmFuY2UpOwog
ICAgICAgICAgICAgcGFpbnRTdHlsZS5maWxsQ29sb3IgPSBSZW5kZXJUaGVtZTo6c2luZ2xldG9u
KCkuc3lzdGVtQ29sb3IoQ1NTVmFsdWVBY3RpdmVidXR0b250ZXh0LCBvcHRpb25zKTsKICAgICAg
ICAgICAgIHJldHVybiBwYWludFN0eWxlOwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAJKHJldmlzaW9uIDIzNTUxNCkK
KysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTYxMyw3ICs2MTMsNyBAQCBib29sIFJlbmRlclN0eWxlOjpjaGFuZ2VSZXF1
aXJlc0xheW91dChjCiAgICAgICAgICAgICBpZiAobV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+dHJh
bnNmb3JtLT5oYXNUcmFuc2Zvcm0oKSAhPSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT50
cmFuc2Zvcm0tPmhhc1RyYW5zZm9ybSgpKQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgICAgICAgICAgaWYgKCptX3JhcmVOb25Jbmhlcml0ZWREYXRhLT50cmFuc2Zvcm0gIT0gKm90
aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnRyYW5zZm9ybSkgewotICAgICAgICAgICAgICAg
IGNoYW5nZWRDb250ZXh0U2Vuc2l0aXZlUHJvcGVydGllcyB8PSBTdHlsZURpZmZlcmVuY2VDb250
ZXh0U2Vuc2l0aXZlUHJvcGVydHk6OlRyYW5zZm9ybTsKKyAgICAgICAgICAgICAgICBjaGFuZ2Vk
Q29udGV4dFNlbnNpdGl2ZVByb3BlcnRpZXMuYWRkKFN0eWxlRGlmZmVyZW5jZUNvbnRleHRTZW5z
aXRpdmVQcm9wZXJ0eTo6VHJhbnNmb3JtKTsKICAgICAgICAgICAgICAgICAvLyBEb24ndCByZXR1
cm47IGtlZXAgbG9va2luZyBmb3IgYW5vdGhlciBjaGFuZ2UKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQpAQCAtNjI5LDcgKzYyOSw3IEBAIGJvb2wgUmVuZGVyU3R5bGU6OmNoYW5nZVJlcXVpcmVz
TGF5b3V0KGMKICNlbmRpZgogCiAgICAgICAgIGlmICghYXJlUG9pbnRpbmdUb0VxdWFsRGF0YSht
X3JhcmVOb25Jbmhlcml0ZWREYXRhLT53aWxsQ2hhbmdlLCBvdGhlci5tX3JhcmVOb25Jbmhlcml0
ZWREYXRhLT53aWxsQ2hhbmdlKSkgewotICAgICAgICAgICAgY2hhbmdlZENvbnRleHRTZW5zaXRp
dmVQcm9wZXJ0aWVzIHw9IFN0eWxlRGlmZmVyZW5jZUNvbnRleHRTZW5zaXRpdmVQcm9wZXJ0eTo6
V2lsbENoYW5nZTsKKyAgICAgICAgICAgIGNoYW5nZWRDb250ZXh0U2Vuc2l0aXZlUHJvcGVydGll
cy5hZGQoU3R5bGVEaWZmZXJlbmNlQ29udGV4dFNlbnNpdGl2ZVByb3BlcnR5OjpXaWxsQ2hhbmdl
KTsKICAgICAgICAgICAgIC8vIERvbid0IHJldHVybjsga2VlcCBsb29raW5nIGZvciBhbm90aGVy
IGNoYW5nZQogICAgICAgICB9CiAgICAgfQpAQCAtODQ5LDcgKzg0OSw3IEBAIGJvb2wgUmVuZGVy
U3R5bGU6OmNoYW5nZVJlcXVpcmVzTGF5ZXJSZXAKIAogICAgIGlmIChwb3NpdGlvbigpICE9IFBv
c2l0aW9uVHlwZTo6U3RhdGljKSB7CiAgICAgICAgIGlmIChtX3Zpc3VhbERhdGEtPmNsaXAgIT0g
b3RoZXIubV92aXN1YWxEYXRhLT5jbGlwIHx8IG1fdmlzdWFsRGF0YS0+aGFzQ2xpcCAhPSBvdGhl
ci5tX3Zpc3VhbERhdGEtPmhhc0NsaXApIHsKLSAgICAgICAgICAgIGNoYW5nZWRDb250ZXh0U2Vu
c2l0aXZlUHJvcGVydGllcyB8PSBTdHlsZURpZmZlcmVuY2VDb250ZXh0U2Vuc2l0aXZlUHJvcGVy
dHk6OkNsaXBSZWN0OworICAgICAgICAgICAgY2hhbmdlZENvbnRleHRTZW5zaXRpdmVQcm9wZXJ0
aWVzLmFkZChTdHlsZURpZmZlcmVuY2VDb250ZXh0U2Vuc2l0aXZlUHJvcGVydHk6OkNsaXBSZWN0
KTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgfQpAQCAtODYwLDE4
ICs4NjAsMTggQEAgYm9vbCBSZW5kZXJTdHlsZTo6Y2hhbmdlUmVxdWlyZXNMYXllclJlcAogI2Vu
ZGlmCiAKICAgICBpZiAobV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+b3BhY2l0eSAhPSBvdGhlci5t
X3JhcmVOb25Jbmhlcml0ZWREYXRhLT5vcGFjaXR5KSB7Ci0gICAgICAgIGNoYW5nZWRDb250ZXh0
U2Vuc2l0aXZlUHJvcGVydGllcyB8PSBTdHlsZURpZmZlcmVuY2VDb250ZXh0U2Vuc2l0aXZlUHJv
cGVydHk6Ok9wYWNpdHk7CisgICAgICAgIGNoYW5nZWRDb250ZXh0U2Vuc2l0aXZlUHJvcGVydGll
cy5hZGQoU3R5bGVEaWZmZXJlbmNlQ29udGV4dFNlbnNpdGl2ZVByb3BlcnR5OjpPcGFjaXR5KTsK
ICAgICAgICAgLy8gRG9uJ3QgcmV0dXJuOyBrZWVwIGxvb2tpbmcgZm9yIGFub3RoZXIgY2hhbmdl
LgogICAgIH0KIAogICAgIGlmIChtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5maWx0ZXIgIT0gb3Ro
ZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+ZmlsdGVyKSB7Ci0gICAgICAgIGNoYW5nZWRDb250
ZXh0U2Vuc2l0aXZlUHJvcGVydGllcyB8PSBTdHlsZURpZmZlcmVuY2VDb250ZXh0U2Vuc2l0aXZl
UHJvcGVydHk6OkZpbHRlcjsKKyAgICAgICAgY2hhbmdlZENvbnRleHRTZW5zaXRpdmVQcm9wZXJ0
aWVzLmFkZChTdHlsZURpZmZlcmVuY2VDb250ZXh0U2Vuc2l0aXZlUHJvcGVydHk6OkZpbHRlcik7
CiAgICAgICAgIC8vIERvbid0IHJldHVybjsga2VlcCBsb29raW5nIGZvciBhbm90aGVyIGNoYW5n
ZS4KICAgICB9CiAKICNpZiBFTkFCTEUoRklMVEVSU19MRVZFTF8yKQogICAgIGlmIChtX3JhcmVO
b25Jbmhlcml0ZWREYXRhLT5iYWNrZHJvcEZpbHRlciAhPSBvdGhlci5tX3JhcmVOb25Jbmhlcml0
ZWREYXRhLT5iYWNrZHJvcEZpbHRlcikgewotICAgICAgICBjaGFuZ2VkQ29udGV4dFNlbnNpdGl2
ZVByb3BlcnRpZXMgfD0gU3R5bGVEaWZmZXJlbmNlQ29udGV4dFNlbnNpdGl2ZVByb3BlcnR5OjpG
aWx0ZXI7CisgICAgICAgIGNoYW5nZWRDb250ZXh0U2Vuc2l0aXZlUHJvcGVydGllcy5hZGQoU3R5
bGVEaWZmZXJlbmNlQ29udGV4dFNlbnNpdGl2ZVByb3BlcnR5OjpGaWx0ZXIpOwogICAgICAgICAv
LyBEb24ndCByZXR1cm47IGtlZXAgbG9va2luZyBmb3IgYW5vdGhlciBjaGFuZ2UuCiAgICAgfQog
I2VuZGlmCkBAIC05MjEsNyArOTIxLDcgQEAgYm9vbCBSZW5kZXJTdHlsZTo6Y2hhbmdlUmVxdWly
ZXNSZXBhaW50KAogCiAgICAgLy8gRklYTUU6IHRoaXMgc2hvdWxkIHByb2JhYmx5IGJlIG1vdmVk
IHRvIGNoYW5nZVJlcXVpcmVzTGF5ZXJSZXBhaW50KCkuCiAgICAgaWYgKG1fcmFyZU5vbkluaGVy
aXRlZERhdGEtPmNsaXBQYXRoICE9IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmNsaXBQ
YXRoKSB7Ci0gICAgICAgIGNoYW5nZWRDb250ZXh0U2Vuc2l0aXZlUHJvcGVydGllcyB8PSBTdHls
ZURpZmZlcmVuY2VDb250ZXh0U2Vuc2l0aXZlUHJvcGVydHk6OkNsaXBQYXRoOworICAgICAgICBj
aGFuZ2VkQ29udGV4dFNlbnNpdGl2ZVByb3BlcnRpZXMuYWRkKFN0eWxlRGlmZmVyZW5jZUNvbnRl
eHRTZW5zaXRpdmVQcm9wZXJ0eTo6Q2xpcFBhdGgpOwogICAgICAgICAvLyBEb24ndCByZXR1cm47
IGtlZXAgbG9va2luZyBmb3IgYW5vdGhlciBjaGFuZ2UuCiAgICAgfQogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCShyZXZpc2lvbiAyMzU1MTQpCisrKyBTb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyNDIsNyArMjI0
Miw3IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxGaW5kT3B0aW9ucz4gcGFyc2VGaW4KICAgICAgICAg
Ym9vbCBmb3VuZCA9IGZhbHNlOwogICAgICAgICBmb3IgKGF1dG8mIGZsYWcgOiBmbGFnTGlzdCkg
ewogICAgICAgICAgICAgaWYgKGZsYWcubmFtZSA9PSBvcHRpb24pIHsKLSAgICAgICAgICAgICAg
ICByZXN1bHQgfD0gZmxhZy52YWx1ZTsKKyAgICAgICAgICAgICAgICByZXN1bHQuYWRkKGZsYWcu
dmFsdWUpOwogICAgICAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIH0KQEAgLTMxODksNyArMzE4OSw3IEBAIHZvaWQgSW50ZXJuYWxz
Ojpmb3JjZVJlbG9hZChib29sIGVuZFRvRW4KIHsKICAgICBPcHRpb25TZXQ8UmVsb2FkT3B0aW9u
PiByZWxvYWRPcHRpb25zOwogICAgIGlmIChlbmRUb0VuZCkKLSAgICAgICAgcmVsb2FkT3B0aW9u
cyB8PSBSZWxvYWRPcHRpb246OkZyb21PcmlnaW47CisgICAgICAgIHJlbG9hZE9wdGlvbnMuYWRk
KFJlbG9hZE9wdGlvbjo6RnJvbU9yaWdpbik7CiAKICAgICBmcmFtZSgpLT5sb2FkZXIoKS5yZWxv
YWQocmVsb2FkT3B0aW9ucyk7CiB9CkBAIC00MzQyLDkgKzQzNDIsOSBAQCB2b2lkIEludGVybmFs
czo6c2V0UGFnZVZpc2liaWxpdHkoYm9vbCBpCiAgICAgYXV0byBzdGF0ZSA9IHBhZ2UuYWN0aXZp
dHlTdGF0ZSgpOwogCiAgICAgaWYgKCFpc1Zpc2libGUpCi0gICAgICAgIHN0YXRlIC09IEFjdGl2
aXR5U3RhdGU6OklzVmlzaWJsZTsKKyAgICAgICAgc3RhdGUucmVtb3ZlKEFjdGl2aXR5U3RhdGU6
OklzVmlzaWJsZSk7CiAgICAgZWxzZQotICAgICAgICBzdGF0ZSB8PSBBY3Rpdml0eVN0YXRlOjpJ
c1Zpc2libGU7CisgICAgICAgIHN0YXRlLmFkZChBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUpOwog
CiAgICAgcGFnZS5zZXRBY3Rpdml0eVN0YXRlKHN0YXRlKTsKIH0KQEAgLTQzNTgsOSArNDM1OCw5
IEBAIHZvaWQgSW50ZXJuYWxzOjpzZXRQYWdlSXNGb2N1c2VkQW5kQWN0aXYKICAgICBhdXRvIHN0
YXRlID0gcGFnZS5hY3Rpdml0eVN0YXRlKCk7CiAKICAgICBpZiAoIWlzRm9jdXNlZEFuZEFjdGl2
ZSkKLSAgICAgICAgc3RhdGUgLT0geyBBY3Rpdml0eVN0YXRlOjpJc0ZvY3VzZWQsIEFjdGl2aXR5
U3RhdGU6OldpbmRvd0lzQWN0aXZlIH07CisgICAgICAgIHN0YXRlLnJlbW92ZSh7IEFjdGl2aXR5
U3RhdGU6OklzRm9jdXNlZCwgQWN0aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmUgfSk7CiAgICAg
ZWxzZQotICAgICAgICBzdGF0ZSB8PSB7IEFjdGl2aXR5U3RhdGU6OklzRm9jdXNlZCwgQWN0aXZp
dHlTdGF0ZTo6V2luZG93SXNBY3RpdmUgfTsKKyAgICAgICAgc3RhdGUuYWRkKHsgQWN0aXZpdHlT
dGF0ZTo6SXNGb2N1c2VkLCBBY3Rpdml0eVN0YXRlOjpXaW5kb3dJc0FjdGl2ZSB9KTsKIAogICAg
IHBhZ2Uuc2V0QWN0aXZpdHlTdGF0ZShzdGF0ZSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24g
MjM1NTIzKQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSw1OCBAQAorMjAxOC0wOC0zMCAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+
CisKKyAgICAgICAgUmVwbGFjZSBPcHRpb25TZXQgfD0gYW5kIC09IG9wZXJhdG9ycyB3aXRoIGFk
ZCgpIGFuZCByZW1vdmUoKSBmdW5jdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE4OTE2OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3ND
b2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtSW5pdGlh
bGl6ZU5ldHdvcmtQcm9jZXNzQ29jb2EpOgorICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRy
ZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24uaDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
TGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyUHJvcGVydGllczo6bm90ZVByb3BlcnRpZXNDaGFu
Z2VkKToKKyAgICAgICAgKiBTaGFyZWQvV2ViRXZlbnRDb252ZXJzaW9uLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViS2l0MlBsYXRmb3JtTW91c2VFdmVudDo6V2ViS2l0MlBsYXRmb3JtTW91c2VF
dmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYktpdDJQbGF0Zm9ybVdoZWVsRXZlbnQ6OldlYktp
dDJQbGF0Zm9ybVdoZWVsRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJLaXQyUGxhdGZvcm1L
ZXlib2FyZEV2ZW50OjpXZWJLaXQyUGxhdGZvcm1LZXlib2FyZEV2ZW50KToKKyAgICAgICAgKFdl
YktpdDo6V2ViS2l0MlBsYXRmb3JtVG91Y2hFdmVudDo6V2ViS2l0MlBsYXRmb3JtVG91Y2hFdmVu
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYktpdDJQbGF0Zm9ybUdlc3R1cmVFdmVudDo6V2ViS2l0
MlBsYXRmb3JtR2VzdHVyZUV2ZW50KToKKyAgICAgICAgKiBTaGFyZWQvV2Vic2l0ZVBvbGljaWVz
RGF0YS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVQb2xpY2llc0RhdGE6OmFwcGx5VG9E
b2N1bWVudExvYWRlcik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHA6Cisg
ICAgICAgIChXS1BhZ2VSZWxvYWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1Jlc291
cmNlQ2FjaGVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKHRvV2Vic2l0ZURhdGFUeXBlcyk6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZVBvbGljaWVzLmNwcDoKKyAgICAgICAgKFdL
V2Vic2l0ZVBvbGljaWVzU2V0QWxsb3dlZEF1dG9wbGF5UXVpcmtzKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IHJlbG9h
ZF0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZElu
dGVybmFsLmg6CisgICAgICAgIChXZWJLaXQ6OnRvV2Vic2l0ZURhdGFUeXBlcyk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW06CisgICAgICAgICgt
W1dLV2Vic2l0ZURhdGFTdG9yZSBfZmV0Y2hEYXRhUmVjb3Jkc09mVHlwZXM6d2l0aE9wdGlvbnM6
Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tX
ZWJzaXRlUG9saWNpZXMubW06CisgICAgICAgICgtW19XS1dlYnNpdGVQb2xpY2llcyBzZXRBbGxv
d2VkQXV0b3BsYXlRdWlya3M6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJ
bXBsLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6dmlld0RpZE1vdmVUb1dpbmRv
dyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6dXBkYXRlQWN0aXZpdHlTdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6YWN0aXZpdHlTdGF0ZURpZENoYW5nZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6ZGlzcGF0Y2hBY3Rpdml0eVN0YXRlQ2hhbmdlKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFSZWNvcmQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJzaXRlRGF0YVJlY29yZDo6YWRkKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURh
dGFSZWNvcmQ6OmFkZENvb2tpZUhvc3ROYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURh
dGFSZWNvcmQ6OmFkZFBsdWdpbkRhdGFIb3N0TmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNp
dGVEYXRhUmVjb3JkOjphZGRIU1RTQ2FjaGVIb3N0bmFtZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YnNpdGVEYXRhUmVjb3JkOjphZGRPcmlnaW5XaXRoQ3JlZGVudGlhbCk6CisgICAgICAgICogVUlQ
cm9jZXNzL21hYy9XS0luc3BlY3RvclZpZXdDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtXS0lu
c3BlY3RvclZpZXdDb250cm9sbGVyIGluc3BlY3RvcldLV2ViVmlld1JlbG9hZDpdKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5k
bGUuY3BwOgorICAgICAgICAoV2ViS2l0OjppbWFnZUZvclJlY3QpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlOjpyZW5kZXJlZEltYWdl
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuY3BwOgorICAg
ICAgICAoV2ViS2l0Ojpjb3JlKToKKyAgICAgICAgKFdlYktpdDo6RmluZENvbnRyb2xsZXI6OmZp
bmRTdHJpbmcpOgorCiAyMDE4LTA4LTMwICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBw
bGUuY29tPgogCiAgICAgICAgIEJ1bmRsZSB1bmlmaWVkIHNvdXJjZXMgbW9yZSB0aWdodGx5IGlu
IHByb2plY3RzIHdpdGggZGVlcCBkaXJlY3Rvcnkgc3RydWN0dXJlcwpJbmRleDogU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3ND
b2NvYS5tbQkocmV2aXNpb24gMjM1NTE0KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMTQsMTIg
KzExNCwxMiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVOCiAgICAg
U2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KHBhcmFtZXRlcnMuZGlza0NhY2hl
RGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKICAgICBPcHRpb25TZXQ8TmV0d29ya0NhY2hlOjpD
YWNoZTo6T3B0aW9uPiBjYWNoZU9wdGlvbnMgeyBOZXR3b3JrQ2FjaGU6OkNhY2hlOjpPcHRpb246
OlJlZ2lzdGVyTm90aWZ5IH07CiAgICAgaWYgKHBhcmFtZXRlcnMuc2hvdWxkRW5hYmxlTmV0d29y
a0NhY2hlRWZmaWNhY3lMb2dnaW5nKQotICAgICAgICBjYWNoZU9wdGlvbnMgfD0gTmV0d29ya0Nh
Y2hlOjpDYWNoZTo6T3B0aW9uOjpFZmZpY2FjeUxvZ2dpbmc7CisgICAgICAgIGNhY2hlT3B0aW9u
cy5hZGQoTmV0d29ya0NhY2hlOjpDYWNoZTo6T3B0aW9uOjpFZmZpY2FjeUxvZ2dpbmcpOwogICAg
IGlmIChwYXJhbWV0ZXJzLnNob3VsZFVzZVRlc3RpbmdOZXR3b3JrU2Vzc2lvbikKLSAgICAgICAg
Y2FjaGVPcHRpb25zIHw9IE5ldHdvcmtDYWNoZTo6Q2FjaGU6Ok9wdGlvbjo6VGVzdGluZ01vZGU7
CisgICAgICAgIGNhY2hlT3B0aW9ucy5hZGQoTmV0d29ya0NhY2hlOjpDYWNoZTo6T3B0aW9uOjpU
ZXN0aW5nTW9kZSk7CiAjaWYgRU5BQkxFKE5FVFdPUktfQ0FDSEVfU1BFQ1VMQVRJVkVfUkVWQUxJ
REFUSU9OKQogICAgIGlmIChwYXJhbWV0ZXJzLnNob3VsZEVuYWJsZU5ldHdvcmtDYWNoZVNwZWN1
bGF0aXZlUmV2YWxpZGF0aW9uKQotICAgICAgICBjYWNoZU9wdGlvbnMgfD0gTmV0d29ya0NhY2hl
OjpDYWNoZTo6T3B0aW9uOjpTcGVjdWxhdGl2ZVJldmFsaWRhdGlvbjsKKyAgICAgICAgY2FjaGVP
cHRpb25zLmFkZChOZXR3b3JrQ2FjaGU6OkNhY2hlOjpPcHRpb246OlNwZWN1bGF0aXZlUmV2YWxp
ZGF0aW9uKTsKICNlbmRpZgogCiAgICAgbV9jYWNoZSA9IE5ldHdvcmtDYWNoZTo6Q2FjaGU6Om9w
ZW4obV9kaXNrQ2FjaGVEaXJlY3RvcnksIGNhY2hlT3B0aW9ucyk7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJFdmVudENvbnZlcnNpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkV2ZW50Q29udmVyc2lvbi5jcHAJKHJldmlzaW9uIDIzNTUxNCkKKysr
IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkV2ZW50Q29udmVyc2lvbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTY5LDE1ICs2OSwxNSBAQCBwdWJsaWM6CiAgICAgICAgIH0KIAogICAgICAgICBpZiAo
d2ViRXZlbnQuc2hpZnRLZXkoKSkKLSAgICAgICAgICAgIG1fbW9kaWZpZXJzIHw9IE1vZGlmaWVy
OjpTaGlmdEtleTsKKyAgICAgICAgICAgIG1fbW9kaWZpZXJzLmFkZChNb2RpZmllcjo6U2hpZnRL
ZXkpOwogICAgICAgICBpZiAod2ViRXZlbnQuY29udHJvbEtleSgpKQotICAgICAgICAgICAgbV9t
b2RpZmllcnMgfD0gTW9kaWZpZXI6OkN0cmxLZXk7CisgICAgICAgICAgICBtX21vZGlmaWVycy5h
ZGQoTW9kaWZpZXI6OkN0cmxLZXkpOwogICAgICAgICBpZiAod2ViRXZlbnQuYWx0S2V5KCkpCi0g
ICAgICAgICAgICBtX21vZGlmaWVycyB8PSBNb2RpZmllcjo6QWx0S2V5OworICAgICAgICAgICAg
bV9tb2RpZmllcnMuYWRkKE1vZGlmaWVyOjpBbHRLZXkpOwogICAgICAgICBpZiAod2ViRXZlbnQu
bWV0YUtleSgpKQotICAgICAgICAgICAgbV9tb2RpZmllcnMgfD0gTW9kaWZpZXI6Ok1ldGFLZXk7
CisgICAgICAgICAgICBtX21vZGlmaWVycy5hZGQoTW9kaWZpZXI6Ok1ldGFLZXkpOwogICAgICAg
ICBpZiAod2ViRXZlbnQuY2Fwc0xvY2tLZXkoKSkKLSAgICAgICAgICAgIG1fbW9kaWZpZXJzIHw9
IE1vZGlmaWVyOjpDYXBzTG9ja0tleTsKKyAgICAgICAgICAgIG1fbW9kaWZpZXJzLmFkZChNb2Rp
Zmllcjo6Q2Fwc0xvY2tLZXkpOwogCiAgICAgICAgIG1fdGltZXN0YW1wID0gd2ViRXZlbnQudGlt
ZXN0YW1wKCk7CiAKQEAgLTEzNiwxNSArMTM2LDE1IEBAIHB1YmxpYzoKICAgICAgICAgbV90eXBl
ID0gUGxhdGZvcm1FdmVudDo6V2hlZWw7CiAKICAgICAgICAgaWYgKHdlYkV2ZW50LnNoaWZ0S2V5
KCkpCi0gICAgICAgICAgICBtX21vZGlmaWVycyB8PSBNb2RpZmllcjo6U2hpZnRLZXk7CisgICAg
ICAgICAgICBtX21vZGlmaWVycy5hZGQoTW9kaWZpZXI6OlNoaWZ0S2V5KTsKICAgICAgICAgaWYg
KHdlYkV2ZW50LmNvbnRyb2xLZXkoKSkKLSAgICAgICAgICAgIG1fbW9kaWZpZXJzIHw9IE1vZGlm
aWVyOjpDdHJsS2V5OworICAgICAgICAgICAgbV9tb2RpZmllcnMuYWRkKE1vZGlmaWVyOjpDdHJs
S2V5KTsKICAgICAgICAgaWYgKHdlYkV2ZW50LmFsdEtleSgpKQotICAgICAgICAgICAgbV9tb2Rp
ZmllcnMgfD0gTW9kaWZpZXI6OkFsdEtleTsKKyAgICAgICAgICAgIG1fbW9kaWZpZXJzLmFkZChN
b2RpZmllcjo6QWx0S2V5KTsKICAgICAgICAgaWYgKHdlYkV2ZW50Lm1ldGFLZXkoKSkKLSAgICAg
ICAgICAgIG1fbW9kaWZpZXJzIHw9IE1vZGlmaWVyOjpNZXRhS2V5OworICAgICAgICAgICAgbV9t
b2RpZmllcnMuYWRkKE1vZGlmaWVyOjpNZXRhS2V5KTsKICAgICAgICAgaWYgKHdlYkV2ZW50LmNh
cHNMb2NrS2V5KCkpCi0gICAgICAgICAgICBtX21vZGlmaWVycyB8PSBNb2RpZmllcjo6Q2Fwc0xv
Y2tLZXk7CisgICAgICAgICAgICBtX21vZGlmaWVycy5hZGQoTW9kaWZpZXI6OkNhcHNMb2NrS2V5
KTsKIAogICAgICAgICBtX3RpbWVzdGFtcCA9IHdlYkV2ZW50LnRpbWVzdGFtcCgpOwogCkBAIC0x
OTgsMTUgKzE5OCwxNSBAQCBwdWJsaWM6CiAgICAgICAgIH0KIAogICAgICAgICBpZiAod2ViRXZl
bnQuc2hpZnRLZXkoKSkKLSAgICAgICAgICAgIG1fbW9kaWZpZXJzIHw9IE1vZGlmaWVyOjpTaGlm
dEtleTsKKyAgICAgICAgICAgIG1fbW9kaWZpZXJzLmFkZChNb2RpZmllcjo6U2hpZnRLZXkpOwog
ICAgICAgICBpZiAod2ViRXZlbnQuY29udHJvbEtleSgpKQotICAgICAgICAgICAgbV9tb2RpZmll
cnMgfD0gTW9kaWZpZXI6OkN0cmxLZXk7CisgICAgICAgICAgICBtX21vZGlmaWVycy5hZGQoTW9k
aWZpZXI6OkN0cmxLZXkpOwogICAgICAgICBpZiAod2ViRXZlbnQuYWx0S2V5KCkpCi0gICAgICAg
ICAgICBtX21vZGlmaWVycyB8PSBNb2RpZmllcjo6QWx0S2V5OworICAgICAgICAgICAgbV9tb2Rp
ZmllcnMuYWRkKE1vZGlmaWVyOjpBbHRLZXkpOwogICAgICAgICBpZiAod2ViRXZlbnQubWV0YUtl
eSgpKQotICAgICAgICAgICAgbV9tb2RpZmllcnMgfD0gTW9kaWZpZXI6Ok1ldGFLZXk7CisgICAg
ICAgICAgICBtX21vZGlmaWVycy5hZGQoTW9kaWZpZXI6Ok1ldGFLZXkpOwogICAgICAgICBpZiAo
d2ViRXZlbnQuY2Fwc0xvY2tLZXkoKSkKLSAgICAgICAgICAgIG1fbW9kaWZpZXJzIHw9IE1vZGlm
aWVyOjpDYXBzTG9ja0tleTsKKyAgICAgICAgICAgIG1fbW9kaWZpZXJzLmFkZChNb2RpZmllcjo6
Q2Fwc0xvY2tLZXkpOwogCiAgICAgICAgIG1fdGltZXN0YW1wID0gd2ViRXZlbnQudGltZXN0YW1w
KCk7CiAKQEAgLTMzOSwxNSArMzM5LDE1IEBAIHB1YmxpYzoKICAgICAgICAgfQogCiAgICAgICAg
IGlmICh3ZWJFdmVudC5zaGlmdEtleSgpKQotICAgICAgICAgICAgbV9tb2RpZmllcnMgfD0gTW9k
aWZpZXI6OlNoaWZ0S2V5OworICAgICAgICAgICAgbV9tb2RpZmllcnMuYWRkKE1vZGlmaWVyOjpT
aGlmdEtleSk7CiAgICAgICAgIGlmICh3ZWJFdmVudC5jb250cm9sS2V5KCkpCi0gICAgICAgICAg
ICBtX21vZGlmaWVycyB8PSBNb2RpZmllcjo6Q3RybEtleTsKKyAgICAgICAgICAgIG1fbW9kaWZp
ZXJzLmFkZChNb2RpZmllcjo6Q3RybEtleSk7CiAgICAgICAgIGlmICh3ZWJFdmVudC5hbHRLZXko
KSkKLSAgICAgICAgICAgIG1fbW9kaWZpZXJzIHw9IE1vZGlmaWVyOjpBbHRLZXk7CisgICAgICAg
ICAgICBtX21vZGlmaWVycy5hZGQoTW9kaWZpZXI6OkFsdEtleSk7CiAgICAgICAgIGlmICh3ZWJF
dmVudC5tZXRhS2V5KCkpCi0gICAgICAgICAgICBtX21vZGlmaWVycyB8PSBNb2RpZmllcjo6TWV0
YUtleTsKKyAgICAgICAgICAgIG1fbW9kaWZpZXJzLmFkZChNb2RpZmllcjo6TWV0YUtleSk7CiAg
ICAgICAgIGlmICh3ZWJFdmVudC5jYXBzTG9ja0tleSgpKQotICAgICAgICAgICAgbV9tb2RpZmll
cnMgfD0gTW9kaWZpZXI6OkNhcHNMb2NrS2V5OworICAgICAgICAgICAgbV9tb2RpZmllcnMuYWRk
KE1vZGlmaWVyOjpDYXBzTG9ja0tleSk7CiAKICAgICAgICAgbV90aW1lc3RhbXAgPSB3ZWJFdmVu
dC50aW1lc3RhbXAoKTsKIApAQCAtMzk4LDE1ICszOTgsMTUgQEAgcHVibGljOgogICAgICAgICB9
CiAKICAgICAgICAgaWYgKHdlYkV2ZW50LnNoaWZ0S2V5KCkpCi0gICAgICAgICAgICBtX21vZGlm
aWVycyB8PSBNb2RpZmllcjo6U2hpZnRLZXk7CisgICAgICAgICAgICBtX21vZGlmaWVycy5hZGQo
TW9kaWZpZXI6OlNoaWZ0S2V5KTsKICAgICAgICAgaWYgKHdlYkV2ZW50LmNvbnRyb2xLZXkoKSkK
LSAgICAgICAgICAgIG1fbW9kaWZpZXJzIHw9IE1vZGlmaWVyOjpDdHJsS2V5OworICAgICAgICAg
ICAgbV9tb2RpZmllcnMuYWRkKE1vZGlmaWVyOjpDdHJsS2V5KTsKICAgICAgICAgaWYgKHdlYkV2
ZW50LmFsdEtleSgpKQotICAgICAgICAgICAgbV9tb2RpZmllcnMgfD0gTW9kaWZpZXI6OkFsdEtl
eTsKKyAgICAgICAgICAgIG1fbW9kaWZpZXJzLmFkZChNb2RpZmllcjo6QWx0S2V5KTsKICAgICAg
ICAgaWYgKHdlYkV2ZW50Lm1ldGFLZXkoKSkKLSAgICAgICAgICAgIG1fbW9kaWZpZXJzIHw9IE1v
ZGlmaWVyOjpNZXRhS2V5OworICAgICAgICAgICAgbV9tb2RpZmllcnMuYWRkKE1vZGlmaWVyOjpN
ZXRhS2V5KTsKICAgICAgICAgaWYgKHdlYkV2ZW50LmNhcHNMb2NrS2V5KCkpCi0gICAgICAgICAg
ICBtX21vZGlmaWVycyB8PSBNb2RpZmllcjo6Q2Fwc0xvY2tLZXk7CisgICAgICAgICAgICBtX21v
ZGlmaWVycy5hZGQoTW9kaWZpZXI6OkNhcHNMb2NrS2V5KTsKIAogICAgICAgICBtX3RpbWVzdGFt
cCA9IHdlYkV2ZW50LnRpbWVzdGFtcCgpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJzaXRlUG9saWNpZXNEYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJzaXRlUG9saWNpZXNEYXRhLmNwcAkocmV2aXNpb24gMjM1NTE0KQorKysgU291cmNlL1dl
YktpdC9TaGFyZWQvV2Vic2l0ZVBvbGljaWVzRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk4
LDEzICs5OCwxMyBAQCB2b2lkIFdlYnNpdGVQb2xpY2llc0RhdGE6OmFwcGx5VG9Eb2N1bWVuCiAg
ICAgY29uc3QgYXV0byYgYWxsb3dlZFF1aXJrcyA9IHdlYnNpdGVQb2xpY2llcy5hbGxvd2VkQXV0
b3BsYXlRdWlya3M7CiAgICAgCiAgICAgaWYgKGFsbG93ZWRRdWlya3MuY29udGFpbnMoV2Vic2l0
ZUF1dG9wbGF5UXVpcms6OkluaGVyaXRlZFVzZXJHZXN0dXJlcykpCi0gICAgICAgIHF1aXJrcyB8
PSBXZWJDb3JlOjpBdXRvcGxheVF1aXJrOjpJbmhlcml0ZWRVc2VyR2VzdHVyZXM7CisgICAgICAg
IHF1aXJrcy5hZGQoV2ViQ29yZTo6QXV0b3BsYXlRdWlyazo6SW5oZXJpdGVkVXNlckdlc3R1cmVz
KTsKICAgICAKICAgICBpZiAoYWxsb3dlZFF1aXJrcy5jb250YWlucyhXZWJzaXRlQXV0b3BsYXlR
dWlyazo6U3ludGhlc2l6ZWRQYXVzZUV2ZW50cykpCi0gICAgICAgIHF1aXJrcyB8PSBXZWJDb3Jl
OjpBdXRvcGxheVF1aXJrOjpTeW50aGVzaXplZFBhdXNlRXZlbnRzOworICAgICAgICBxdWlya3Mu
YWRkKFdlYkNvcmU6OkF1dG9wbGF5UXVpcms6OlN5bnRoZXNpemVkUGF1c2VFdmVudHMpOwogICAg
IAogICAgIGlmIChhbGxvd2VkUXVpcmtzLmNvbnRhaW5zKFdlYnNpdGVBdXRvcGxheVF1aXJrOjpB
cmJpdHJhcnlVc2VyR2VzdHVyZXMpKQotICAgICAgICBxdWlya3MgfD0gV2ViQ29yZTo6QXV0b3Bs
YXlRdWlyazo6QXJiaXRyYXJ5VXNlckdlc3R1cmVzOworICAgICAgICBxdWlya3MuYWRkKFdlYkNv
cmU6OkF1dG9wbGF5UXVpcms6OkFyYml0cmFyeVVzZXJHZXN0dXJlcyk7CiAKICAgICBkb2N1bWVu
dExvYWRlci5zZXRBbGxvd2VkQXV0b3BsYXlRdWlya3MocXVpcmtzKTsKIApJbmRleDogU291cmNl
L1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9u
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1Jl
bW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLmgJKHJldmlzaW9uIDIzNTUxNCkKKysrIFNvdXJjZS9X
ZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMTYsNyArMTE2LDcgQEAgcHVibGljOgogCiAgICAgICAgIHZv
aWQgbm90ZVByb3BlcnRpZXNDaGFuZ2VkKE9wdGlvblNldDxMYXllckNoYW5nZT4gY2hhbmdlRmxh
Z3MpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNoYW5nZWRQcm9wZXJ0aWVzIHw9IGNoYW5nZUZs
YWdzOworICAgICAgICAgICAgY2hhbmdlZFByb3BlcnRpZXMuYWRkKGNoYW5nZUZsYWdzKTsKICAg
ICAgICAgfQogCiAgICAgICAgIHZvaWQgcmVzZXRDaGFuZ2VkUHJvcGVydGllcygpCkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDIzNTUxNCkK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE0NDYsMzIgKzE0NDYsMzIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFN1cHByZXNz
VmlzaWJpbGl0eQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlQWN0aXZpdHlTdGF0ZShPcHRp
b25TZXQ8QWN0aXZpdHlTdGF0ZTo6RmxhZz4gZmxhZ3NUb1VwZGF0ZSkKIHsKLSAgICBtX2FjdGl2
aXR5U3RhdGUgPSBtX2FjdGl2aXR5U3RhdGUgLSBmbGFnc1RvVXBkYXRlOworICAgIG1fYWN0aXZp
dHlTdGF0ZS5yZW1vdmUoZmxhZ3NUb1VwZGF0ZSk7CiAgICAgaWYgKGZsYWdzVG9VcGRhdGUgJiBB
Y3Rpdml0eVN0YXRlOjpJc0ZvY3VzZWQgJiYgbV9wYWdlQ2xpZW50LmlzVmlld0ZvY3VzZWQoKSkK
LSAgICAgICAgbV9hY3Rpdml0eVN0YXRlIHw9IEFjdGl2aXR5U3RhdGU6OklzRm9jdXNlZDsKKyAg
ICAgICAgbV9hY3Rpdml0eVN0YXRlLmFkZChBY3Rpdml0eVN0YXRlOjpJc0ZvY3VzZWQpOwogICAg
IGlmIChmbGFnc1RvVXBkYXRlICYgQWN0aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmUgJiYgbV9w
YWdlQ2xpZW50LmlzVmlld1dpbmRvd0FjdGl2ZSgpKQotICAgICAgICBtX2FjdGl2aXR5U3RhdGUg
fD0gQWN0aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmU7CisgICAgICAgIG1fYWN0aXZpdHlTdGF0
ZS5hZGQoQWN0aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmUpOwogICAgIGlmIChmbGFnc1RvVXBk
YXRlICYgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlICYmIG1fcGFnZUNsaWVudC5pc1ZpZXdWaXNp
YmxlKCkpCi0gICAgICAgIG1fYWN0aXZpdHlTdGF0ZSB8PSBBY3Rpdml0eVN0YXRlOjpJc1Zpc2li
bGU7CisgICAgICAgIG1fYWN0aXZpdHlTdGF0ZS5hZGQoQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxl
KTsKICAgICBpZiAoZmxhZ3NUb1VwZGF0ZSAmIEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZU9yT2Nj
bHVkZWQgJiYgbV9wYWdlQ2xpZW50LmlzVmlld1Zpc2libGVPck9jY2x1ZGVkKCkpCi0gICAgICAg
IG1fYWN0aXZpdHlTdGF0ZSB8PSBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGVPck9jY2x1ZGVkOwor
ICAgICAgICBtX2FjdGl2aXR5U3RhdGUuYWRkKEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZU9yT2Nj
bHVkZWQpOwogICAgIGlmIChmbGFnc1RvVXBkYXRlICYgQWN0aXZpdHlTdGF0ZTo6SXNJbldpbmRv
dyAmJiBtX3BhZ2VDbGllbnQuaXNWaWV3SW5XaW5kb3coKSkKLSAgICAgICAgbV9hY3Rpdml0eVN0
YXRlIHw9IEFjdGl2aXR5U3RhdGU6OklzSW5XaW5kb3c7CisgICAgICAgIG1fYWN0aXZpdHlTdGF0
ZS5hZGQoQWN0aXZpdHlTdGF0ZTo6SXNJbldpbmRvdyk7CiAgICAgaWYgKGZsYWdzVG9VcGRhdGUg
JiBBY3Rpdml0eVN0YXRlOjpJc1Zpc3VhbGx5SWRsZSAmJiBtX3BhZ2VDbGllbnQuaXNWaXN1YWxs
eUlkbGUoKSkKLSAgICAgICAgbV9hY3Rpdml0eVN0YXRlIHw9IEFjdGl2aXR5U3RhdGU6OklzVmlz
dWFsbHlJZGxlOworICAgICAgICBtX2FjdGl2aXR5U3RhdGUuYWRkKEFjdGl2aXR5U3RhdGU6Oklz
VmlzdWFsbHlJZGxlKTsKICAgICBpZiAoZmxhZ3NUb1VwZGF0ZSAmIEFjdGl2aXR5U3RhdGU6Oklz
QXVkaWJsZSAmJiBtX21lZGlhU3RhdGUgJiBNZWRpYVByb2R1Y2VyOjpJc1BsYXlpbmdBdWRpbyAm
JiAhKG1fbXV0ZWRTdGF0ZSAmIE1lZGlhUHJvZHVjZXI6OkF1ZGlvSXNNdXRlZCkpCi0gICAgICAg
IG1fYWN0aXZpdHlTdGF0ZSB8PSBBY3Rpdml0eVN0YXRlOjpJc0F1ZGlibGU7CisgICAgICAgIG1f
YWN0aXZpdHlTdGF0ZS5hZGQoQWN0aXZpdHlTdGF0ZTo6SXNBdWRpYmxlKTsKICAgICBpZiAoZmxh
Z3NUb1VwZGF0ZSAmIEFjdGl2aXR5U3RhdGU6OklzTG9hZGluZyAmJiBtX3BhZ2VMb2FkU3RhdGUu
aXNMb2FkaW5nKCkpCi0gICAgICAgIG1fYWN0aXZpdHlTdGF0ZSB8PSBBY3Rpdml0eVN0YXRlOjpJ
c0xvYWRpbmc7CisgICAgICAgIG1fYWN0aXZpdHlTdGF0ZS5hZGQoQWN0aXZpdHlTdGF0ZTo6SXNM
b2FkaW5nKTsKICAgICBpZiAoZmxhZ3NUb1VwZGF0ZSAmIEFjdGl2aXR5U3RhdGU6OklzQ2FwdHVy
aW5nTWVkaWEgJiYgbV9tZWRpYVN0YXRlICYgKE1lZGlhUHJvZHVjZXI6Okhhc0FjdGl2ZUF1ZGlv
Q2FwdHVyZURldmljZSB8IE1lZGlhUHJvZHVjZXI6Okhhc0FjdGl2ZVZpZGVvQ2FwdHVyZURldmlj
ZSkpCi0gICAgICAgIG1fYWN0aXZpdHlTdGF0ZSB8PSBBY3Rpdml0eVN0YXRlOjpJc0NhcHR1cmlu
Z01lZGlhOworICAgICAgICBtX2FjdGl2aXR5U3RhdGUuYWRkKEFjdGl2aXR5U3RhdGU6OklzQ2Fw
dHVyaW5nTWVkaWEpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6YWN0aXZpdHlTdGF0ZURpZENo
YW5nZShPcHRpb25TZXQ8QWN0aXZpdHlTdGF0ZTo6RmxhZz4gbWF5SGF2ZUNoYW5nZWQsIGJvb2wg
d2FudHNTeW5jaHJvbm91c1JlcGx5LCBBY3Rpdml0eVN0YXRlQ2hhbmdlRGlzcGF0Y2hNb2RlIGRp
c3BhdGNoTW9kZSkKIHsKICAgICBMT0dfV0lUSF9TVFJFQU0oQWN0aXZpdHlTdGF0ZSwgc3RyZWFt
IDw8ICJXZWJQYWdlUHJveHkgIiA8PCBwYWdlSUQoKSA8PCAiIGFjdGl2aXR5U3RhdGVEaWRDaGFu
Z2UgLSBtYXlIYXZlQ2hhbmdlZCAiIDw8IG1heUhhdmVDaGFuZ2VkKTsKIAotICAgIG1fcG90ZW50
aWFsbHlDaGFuZ2VkQWN0aXZpdHlTdGF0ZUZsYWdzIHw9IG1heUhhdmVDaGFuZ2VkOworICAgIG1f
cG90ZW50aWFsbHlDaGFuZ2VkQWN0aXZpdHlTdGF0ZUZsYWdzLmFkZChtYXlIYXZlQ2hhbmdlZCk7
CiAgICAgbV9hY3Rpdml0eVN0YXRlQ2hhbmdlV2FudHNTeW5jaHJvbm91c1JlcGx5ID0gbV9hY3Rp
dml0eVN0YXRlQ2hhbmdlV2FudHNTeW5jaHJvbm91c1JlcGx5IHx8IHdhbnRzU3luY2hyb25vdXNS
ZXBseTsKIAogICAgIGlmIChtX3N1cHByZXNzVmlzaWJpbGl0eVVwZGF0ZXMgJiYgZGlzcGF0Y2hN
b2RlICE9IEFjdGl2aXR5U3RhdGVDaGFuZ2VEaXNwYXRjaE1vZGU6OkltbWVkaWF0ZSkKQEAgLTE1
MjIsNyArMTUyMiw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaXNwYXRjaEFjdGl2aXR5U3RhdGUK
IAogICAgIC8vIElmIHRoZSB2aXNpYmlsaXR5IHN0YXRlIG1heSBoYXZlIGNoYW5nZWQsIHRoZW4g
c28gbWF5IHRoZSB2aXN1YWxseSBpZGxlICYgb2NjbHVkZWQgYWdub3N0aWMgc3RhdGUuCiAgICAg
aWYgKG1fcG90ZW50aWFsbHlDaGFuZ2VkQWN0aXZpdHlTdGF0ZUZsYWdzICYgQWN0aXZpdHlTdGF0
ZTo6SXNWaXNpYmxlKQotICAgICAgICBtX3BvdGVudGlhbGx5Q2hhbmdlZEFjdGl2aXR5U3RhdGVG
bGFncyB8PSB7IEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZU9yT2NjbHVkZWQsIEFjdGl2aXR5U3Rh
dGU6OklzVmlzdWFsbHlJZGxlIH07CisgICAgICAgIG1fcG90ZW50aWFsbHlDaGFuZ2VkQWN0aXZp
dHlTdGF0ZUZsYWdzLmFkZCh7IEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZU9yT2NjbHVkZWQsIEFj
dGl2aXR5U3RhdGU6OklzVmlzdWFsbHlJZGxlIH0pOwogCiAgICAgLy8gUmVjb3JkIHRoZSBwcmlv
ciB2aWV3IHN0YXRlLCB1cGRhdGUgdGhlIGZsYWdzIHRoYXQgbWF5IGhhdmUgY2hhbmdlZCwKICAg
ICAvLyBhbmQgY2hlY2sgd2hpY2ggZmxhZ3MgaGF2ZSBhY3R1YWxseSBjaGFuZ2VkLgpJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCShyZXZpc2lvbiAyMzU1MTQp
CisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNzAsNyArMjcwLDcgQEAgdm9pZCBXS1BhZ2VSZWxvYWQoV0tQYWdlUmVmIHBhZ2VS
ZWYpCiAgICAgT3B0aW9uU2V0PFdlYkNvcmU6OlJlbG9hZE9wdGlvbj4gcmVsb2FkT3B0aW9uczsK
ICNpZiBQTEFURk9STShDT0NPQSkKICAgICBpZiAobGlua2VkT25PckFmdGVyKFdlYktpdDo6U0RL
VmVyc2lvbjo6Rmlyc3RXaXRoRXhwaXJlZE9ubHlSZWxvYWRCZWhhdmlvcikpCi0gICAgICAgIHJl
bG9hZE9wdGlvbnMgfD0gV2ViQ29yZTo6UmVsb2FkT3B0aW9uOjpFeHBpcmVkT25seTsKKyAgICAg
ICAgcmVsb2FkT3B0aW9ucy5hZGQoV2ViQ29yZTo6UmVsb2FkT3B0aW9uOjpFeHBpcmVkT25seSk7
CiAjZW5kaWYKIAogICAgIHRvSW1wbChwYWdlUmVmKS0+cmVsb2FkKHJlbG9hZE9wdGlvbnMpOwpJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tSZXNvdXJjZUNhY2hlTWFuYWdl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tSZXNv
dXJjZUNhY2hlTWFuYWdlci5jcHAJKHJldmlzaW9uIDIzNTUxNCkKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL1dLUmVzb3VyY2VDYWNoZU1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00MCwxMiArNDAsMTAgQEAgV0tUeXBlSUQgV0tSZXNvdXJjZUNhY2hlTWFuYWdlckdldFR5
cGVJRAogCiBzdGF0aWMgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gdG9XZWJzaXRlRGF0YVR5
cGVzKFdLUmVzb3VyY2VDYWNoZXNUb0NsZWFyIGNhY2hlc1RvQ2xlYXIpCiB7Ci0gICAgT3B0aW9u
U2V0PFdlYnNpdGVEYXRhVHlwZT4gd2Vic2l0ZURhdGFUeXBlczsKLQotICAgIHdlYnNpdGVEYXRh
VHlwZXMgfD0gV2Vic2l0ZURhdGFUeXBlOjpNZW1vcnlDYWNoZTsKKyAgICBPcHRpb25TZXQ8V2Vi
c2l0ZURhdGFUeXBlPiB3ZWJzaXRlRGF0YVR5cGVzIHsgV2Vic2l0ZURhdGFUeXBlOjpNZW1vcnlD
YWNoZSB9OwogCiAgICAgaWYgKGNhY2hlc1RvQ2xlYXIgPT0gV0tSZXNvdXJjZUNhY2hlc1RvQ2xl
YXJBbGwpCi0gICAgICAgIHdlYnNpdGVEYXRhVHlwZXMgfD0gV2Vic2l0ZURhdGFUeXBlOjpEaXNr
Q2FjaGU7CisgICAgICAgIHdlYnNpdGVEYXRhVHlwZXMuYWRkKFdlYnNpdGVEYXRhVHlwZTo6RGlz
a0NhY2hlKTsKIAogICAgIHJldHVybiB3ZWJzaXRlRGF0YVR5cGVzOwogfQpJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlUG9saWNpZXMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZVBvbGljaWVzLmNwcAko
cmV2aXNpb24gMjM1NTE0KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJz
aXRlUG9saWNpZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MywxMyArODMsMTMgQEAgdm9pZCBX
S1dlYnNpdGVQb2xpY2llc1NldEFsbG93ZWRBdXRvcGxheQogewogICAgIE9wdGlvblNldDxXZWJz
aXRlQXV0b3BsYXlRdWlyaz4gcXVpcmtzOwogICAgIGlmIChhbGxvd2VkUXVpcmtzICYga1dLV2Vi
c2l0ZUF1dG9wbGF5UXVpcmtJbmhlcml0ZWRVc2VyR2VzdHVyZXMpCi0gICAgICAgIHF1aXJrcyB8
PSBXZWJzaXRlQXV0b3BsYXlRdWlyazo6SW5oZXJpdGVkVXNlckdlc3R1cmVzOworICAgICAgICBx
dWlya3MuYWRkKFdlYnNpdGVBdXRvcGxheVF1aXJrOjpJbmhlcml0ZWRVc2VyR2VzdHVyZXMpOwog
CiAgICAgaWYgKGFsbG93ZWRRdWlya3MgJiBrV0tXZWJzaXRlQXV0b3BsYXlRdWlya1N5bnRoZXNp
emVkUGF1c2VFdmVudHMpCi0gICAgICAgIHF1aXJrcyB8PSBXZWJzaXRlQXV0b3BsYXlRdWlyazo6
U3ludGhlc2l6ZWRQYXVzZUV2ZW50czsKKyAgICAgICAgcXVpcmtzLmFkZChXZWJzaXRlQXV0b3Bs
YXlRdWlyazo6U3ludGhlc2l6ZWRQYXVzZUV2ZW50cyk7CiAKICAgICBpZiAoYWxsb3dlZFF1aXJr
cyAmIGtXS1dlYnNpdGVBdXRvcGxheVF1aXJrQXJiaXRyYXJ5VXNlckdlc3R1cmVzKQotICAgICAg
ICBxdWlya3MgfD0gV2Vic2l0ZUF1dG9wbGF5UXVpcms6OkFyYml0cmFyeVVzZXJHZXN0dXJlczsK
KyAgICAgICAgcXVpcmtzLmFkZChXZWJzaXRlQXV0b3BsYXlRdWlyazo6QXJiaXRyYXJ5VXNlckdl
c3R1cmVzKTsKIAogICAgIHRvSW1wbCh3ZWJzaXRlUG9saWNpZXMpLT5zZXRBbGxvd2VkQXV0b3Bs
YXlRdWlya3MocXVpcmtzKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlldy5tbQkocmV2aXNpb24gMjM1NTE0KQorKysgU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtOTYx
LDcgKzk2MSw3IEBAIC0gKFdLTmF2aWdhdGlvbiAqKXJlbG9hZAogewogICAgIE9wdGlvblNldDxX
ZWJDb3JlOjpSZWxvYWRPcHRpb24+IHJlbG9hZE9wdGlvbnM7CiAgICAgaWYgKGxpbmtlZE9uT3JB
ZnRlcihXZWJLaXQ6OlNES1ZlcnNpb246OkZpcnN0V2l0aEV4cGlyZWRPbmx5UmVsb2FkQmVoYXZp
b3IpKQotICAgICAgICByZWxvYWRPcHRpb25zIHw9IFdlYkNvcmU6OlJlbG9hZE9wdGlvbjo6RXhw
aXJlZE9ubHk7CisgICAgICAgIHJlbG9hZE9wdGlvbnMuYWRkKFdlYkNvcmU6OlJlbG9hZE9wdGlv
bjo6RXhwaXJlZE9ubHkpOwogCiAgICAgcmV0dXJuIHdyYXBwZXIoX3BhZ2UtPnJlbG9hZChyZWxv
YWRPcHRpb25zKSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJzaXRlRGF0YVJlY29yZEludGVybmFsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmRJbnRlcm5hbC5oCShyZXZp
c2lvbiAyMzU1MTQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJz
aXRlRGF0YVJlY29yZEludGVybmFsLmgJKHdvcmtpbmcgY29weSkKQEAgLTg1LDcgKzg1LDcgQEAg
c3RhdGljIGlubGluZSBPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlRAogCiAgICAgZm9yIChOU1N0
cmluZyAqd2Vic2l0ZURhdGFUeXBlIGluIHdlYnNpdGVEYXRhVHlwZXMpIHsKICAgICAgICAgaWYg
KGF1dG8gZGF0YVR5cGUgPSB0b1dlYnNpdGVEYXRhVHlwZSh3ZWJzaXRlRGF0YVR5cGUpKQotICAg
ICAgICAgICAgcmVzdWx0IHw9ICpkYXRhVHlwZTsKKyAgICAgICAgICAgIHJlc3VsdC5hZGQoKmRh
dGFUeXBlKTsKICAgICB9CiAKICAgICByZXR1cm4gcmVzdWx0OwpJbmRleDogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1t
CShyZXZpc2lvbiAyMzU1MTQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJzaXRlRGF0YVN0b3JlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMjMsNyArMjIzLDcgQEAg
LSAodm9pZClfZmV0Y2hEYXRhUmVjb3Jkc09mVHlwZXM6KE5TU2V0PAogCiAgICAgT3B0aW9uU2V0
PFdlYktpdDo6V2Vic2l0ZURhdGFGZXRjaE9wdGlvbj4gZmV0Y2hPcHRpb25zOwogICAgIGlmIChv
cHRpb25zICYgX1dLV2Vic2l0ZURhdGFTdG9yZUZldGNoT3B0aW9uQ29tcHV0ZVNpemVzKQotICAg
ICAgICBmZXRjaE9wdGlvbnMgfD0gV2ViS2l0OjpXZWJzaXRlRGF0YUZldGNoT3B0aW9uOjpDb21w
dXRlU2l6ZXM7CisgICAgICAgIGZldGNoT3B0aW9ucy5hZGQoV2ViS2l0OjpXZWJzaXRlRGF0YUZl
dGNoT3B0aW9uOjpDb21wdXRlU2l6ZXMpOwogCiAgICAgX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNp
dGVEYXRhU3RvcmUoKS5mZXRjaERhdGEoV2ViS2l0Ojp0b1dlYnNpdGVEYXRhVHlwZXMoZGF0YVR5
cGVzKSwgZmV0Y2hPcHRpb25zLCBbY29tcGxldGlvbkhhbmRsZXJDb3B5ID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlckNvcHkpXShhdXRvIHdlYnNpdGVEYXRhUmVjb3JkcykgewogICAgICAgICBW
ZWN0b3I8UmVmUHRyPEFQSTo6T2JqZWN0Pj4gZWxlbWVudHM7CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZVBvbGljaWVzLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlUG9saWNpZXMubW0J
KHJldmlzaW9uIDIzNTUxNCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tXZWJzaXRlUG9saWNpZXMubW0JKHdvcmtpbmcgY29weSkKQEAgLTY0LDEzICs2NCwxMyBAQCAt
ICh2b2lkKXNldEFsbG93ZWRBdXRvcGxheVF1aXJrczooX1dLV2ViCiAgICAgT3B0aW9uU2V0PFdl
YktpdDo6V2Vic2l0ZUF1dG9wbGF5UXVpcms+IHF1aXJrczsKIAogICAgIGlmIChhbGxvd2VkUXVp
cmtzICYgX1dLV2Vic2l0ZUF1dG9wbGF5UXVpcmtJbmhlcml0ZWRVc2VyR2VzdHVyZXMpCi0gICAg
ICAgIHF1aXJrcyB8PSBXZWJLaXQ6OldlYnNpdGVBdXRvcGxheVF1aXJrOjpJbmhlcml0ZWRVc2Vy
R2VzdHVyZXM7CisgICAgICAgIHF1aXJrcy5hZGQoV2ViS2l0OjpXZWJzaXRlQXV0b3BsYXlRdWly
azo6SW5oZXJpdGVkVXNlckdlc3R1cmVzKTsKIAogICAgIGlmIChhbGxvd2VkUXVpcmtzICYgX1dL
V2Vic2l0ZUF1dG9wbGF5UXVpcmtTeW50aGVzaXplZFBhdXNlRXZlbnRzKQotICAgICAgICBxdWly
a3MgfD0gV2ViS2l0OjpXZWJzaXRlQXV0b3BsYXlRdWlyazo6U3ludGhlc2l6ZWRQYXVzZUV2ZW50
czsKKyAgICAgICAgcXVpcmtzLmFkZChXZWJLaXQ6OldlYnNpdGVBdXRvcGxheVF1aXJrOjpTeW50
aGVzaXplZFBhdXNlRXZlbnRzKTsKIAogICAgIGlmIChhbGxvd2VkUXVpcmtzICYgX1dLV2Vic2l0
ZUF1dG9wbGF5UXVpcmtBcmJpdHJhcnlVc2VyR2VzdHVyZXMpCi0gICAgICAgIHF1aXJrcyB8PSBX
ZWJLaXQ6OldlYnNpdGVBdXRvcGxheVF1aXJrOjpBcmJpdHJhcnlVc2VyR2VzdHVyZXM7CisgICAg
ICAgIHF1aXJrcy5hZGQoV2ViS2l0OjpXZWJzaXRlQXV0b3BsYXlRdWlyazo6QXJiaXRyYXJ5VXNl
ckdlc3R1cmVzKTsKIAogICAgIF93ZWJzaXRlUG9saWNpZXMtPnNldEFsbG93ZWRBdXRvcGxheVF1
aXJrcyhxdWlya3MpOwogfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2Vi
Vmlld0ltcGwubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViVmlld0ltcGwubW0JKHJldmlzaW9uIDIzNTUxNCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMTE4LDcgKzIxMTgs
NyBAQCB2b2lkIFdlYlZpZXdJbXBsOjp2aWV3RGlkTW92ZVRvV2luZG93KCkKICAgICAgICAgaWYg
KG1fc2hvdWxkRGVmZXJWaWV3SW5XaW5kb3dDaGFuZ2VzKQogICAgICAgICAgICAgbV92aWV3SW5X
aW5kb3dDaGFuZ2VXYXNEZWZlcnJlZCA9IHRydWU7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
IGFjdGl2aXR5U3RhdGVDaGFuZ2VzIHw9IFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzSW5XaW5k
b3c7CisgICAgICAgICAgICBhY3Rpdml0eVN0YXRlQ2hhbmdlcy5hZGQoV2ViQ29yZTo6QWN0aXZp
dHlTdGF0ZTo6SXNJbldpbmRvdyk7CiAgICAgICAgIG1fcGFnZS0+YWN0aXZpdHlTdGF0ZURpZENo
YW5nZShhY3Rpdml0eVN0YXRlQ2hhbmdlcyk7CiAKICAgICAgICAgdXBkYXRlV2luZG93QW5kVmll
d0ZyYW1lcygpOwpAQCAtMjE0NCw3ICsyMTQ0LDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6dmlld0Rp
ZE1vdmVUb1dpbmRvdygpCiAgICAgICAgIGlmIChtX3Nob3VsZERlZmVyVmlld0luV2luZG93Q2hh
bmdlcykKICAgICAgICAgICAgIG1fdmlld0luV2luZG93Q2hhbmdlV2FzRGVmZXJyZWQgPSB0cnVl
OwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBhY3Rpdml0eVN0YXRlQ2hhbmdlcyB8PSBXZWJD
b3JlOjpBY3Rpdml0eVN0YXRlOjpJc0luV2luZG93OworICAgICAgICAgICAgYWN0aXZpdHlTdGF0
ZUNoYW5nZXMuYWRkKFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzSW5XaW5kb3cpOwogICAgICAg
ICBtX3BhZ2UtPmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoYWN0aXZpdHlTdGF0ZUNoYW5nZXMpOwog
CiAgICAgICAgIFtOU0V2ZW50IHJlbW92ZU1vbml0b3I6bV9mbGFnc0NoYW5nZWRFdmVudE1vbml0
b3JdOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURh
dGFSZWNvcmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNp
dGVEYXRhL1dlYnNpdGVEYXRhUmVjb3JkLmNwcAkocmV2aXNpb24gMjM1NTE0KQorKysgU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFSZWNvcmQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC03OSwzMCArNzksMjcgQEAgU3RyaW5nIFdlYnNpdGVEYXRhUmVjb3JkOjpk
aXNwbGF5TmFtZUZvcgogCiB2b2lkIFdlYnNpdGVEYXRhUmVjb3JkOjphZGQoV2Vic2l0ZURhdGFU
eXBlIHR5cGUsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luKQogewot
ICAgIHR5cGVzIHw9IHR5cGU7Ci0KKyAgICB0eXBlcy5hZGQodHlwZSk7CiAgICAgb3JpZ2lucy5h
ZGQob3JpZ2luKTsKIH0KIAogdm9pZCBXZWJzaXRlRGF0YVJlY29yZDo6YWRkQ29va2llSG9zdE5h
bWUoY29uc3QgU3RyaW5nJiBob3N0TmFtZSkKIHsKLSAgICB0eXBlcyB8PSBXZWJzaXRlRGF0YVR5
cGU6OkNvb2tpZXM7Ci0KKyAgICB0eXBlcy5hZGQoV2Vic2l0ZURhdGFUeXBlOjpDb29raWVzKTsK
ICAgICBjb29raWVIb3N0TmFtZXMuYWRkKGhvc3ROYW1lKTsKIH0KIAogI2lmIEVOQUJMRShORVRT
Q0FQRV9QTFVHSU5fQVBJKQogdm9pZCBXZWJzaXRlRGF0YVJlY29yZDo6YWRkUGx1Z2luRGF0YUhv
c3ROYW1lKGNvbnN0IFN0cmluZyYgaG9zdE5hbWUpCiB7Ci0gICAgdHlwZXMgfD0gV2Vic2l0ZURh
dGFUeXBlOjpQbHVnSW5EYXRhOwotCisgICAgdHlwZXMuYWRkKFdlYnNpdGVEYXRhVHlwZTo6UGx1
Z0luRGF0YSk7CiAgICAgcGx1Z2luRGF0YUhvc3ROYW1lcy5hZGQoaG9zdE5hbWUpOwogfQogI2Vu
ZGlmCiAKIHZvaWQgV2Vic2l0ZURhdGFSZWNvcmQ6OmFkZEhTVFNDYWNoZUhvc3RuYW1lKGNvbnN0
IFN0cmluZyYgaG9zdE5hbWUpCiB7Ci0gICAgdHlwZXMgfD0gV2Vic2l0ZURhdGFUeXBlOjpIU1RT
Q2FjaGU7CisgICAgdHlwZXMuYWRkKFdlYnNpdGVEYXRhVHlwZTo6SFNUU0NhY2hlKTsKICAgICBI
U1RTQ2FjaGVIb3N0TmFtZXMuYWRkKGhvc3ROYW1lKTsKIH0KIApAQCAtMTU3LDggKzE1NCw3IEBA
IFN0cmluZyBXZWJzaXRlRGF0YVJlY29yZDo6dG9wUHJpdmF0ZWx5Q28KIAogdm9pZCBXZWJzaXRl
RGF0YVJlY29yZDo6YWRkT3JpZ2luV2l0aENyZWRlbnRpYWwoY29uc3QgU3RyaW5nJiBvcmlnaW4p
CiB7Ci0gICAgdHlwZXMgfD0gV2Vic2l0ZURhdGFUeXBlOjpDcmVkZW50aWFsczsKLQorICAgIHR5
cGVzLmFkZChXZWJzaXRlRGF0YVR5cGU6OkNyZWRlbnRpYWxzKTsKICAgICBvcmlnaW5zV2l0aENy
ZWRlbnRpYWxzLmFkZChvcmlnaW4pOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9tYWMvV0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbQkocmV2aXNp
b24gMjM1NTE0KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLSW5zcGVjdG9yVmll
d0NvbnRyb2xsZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTIzOCw3ICsyMzgsNyBAQCAtICh2b2lk
KWluc3BlY3RvcldLV2ViVmlld1JlbG9hZDooV0tJbnNwCiAKICAgICBPcHRpb25TZXQ8V2ViQ29y
ZTo6UmVsb2FkT3B0aW9uPiByZWxvYWRPcHRpb25zOwogICAgIGlmIChXZWJLaXQ6OmxpbmtlZE9u
T3JBZnRlcihXZWJLaXQ6OlNES1ZlcnNpb246OkZpcnN0V2l0aEV4cGlyZWRPbmx5UmVsb2FkQmVo
YXZpb3IpKQotICAgICAgICByZWxvYWRPcHRpb25zIHw9IFdlYkNvcmU6OlJlbG9hZE9wdGlvbjo6
RXhwaXJlZE9ubHk7CisgICAgICAgIHJlbG9hZE9wdGlvbnMuYWRkKFdlYkNvcmU6OlJlbG9hZE9w
dGlvbjo6RXhwaXJlZE9ubHkpOwogCiAgICAgX2luc3BlY3RlZFBhZ2UtPnJlbG9hZChyZWxvYWRP
cHRpb25zKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9ET00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhh
bmRsZS5jcHAJKHJldmlzaW9uIDIzNTUxNCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTcwLDkgKzE3MCw5IEBAIHN0YXRpYyBSZWZQdHI8V2ViSW1hZ2U+IGltYWdlRm9y
UmVjdChGcmEKIAogICAgIGF1dG8gcGFpbnRCZWhhdmlvciA9IGZyYW1lVmlldy0+cGFpbnRCZWhh
dmlvcigpIHwgUGFpbnRCZWhhdmlvcjo6RmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzIHwgUGFpbnRC
ZWhhdmlvcjo6U25hcHNob3R0aW5nOwogICAgIGlmIChvcHRpb25zICYgU25hcHNob3RPcHRpb25z
Rm9yY2VCbGFja1RleHQpCi0gICAgICAgIHBhaW50QmVoYXZpb3IgfD0gUGFpbnRCZWhhdmlvcjo6
Rm9yY2VCbGFja1RleHQ7CisgICAgICAgIHBhaW50QmVoYXZpb3IuYWRkKFBhaW50QmVoYXZpb3I6
OkZvcmNlQmxhY2tUZXh0KTsKICAgICBpZiAob3B0aW9ucyAmIFNuYXBzaG90T3B0aW9uc0ZvcmNl
V2hpdGVUZXh0KQotICAgICAgICBwYWludEJlaGF2aW9yIHw9IFBhaW50QmVoYXZpb3I6OkZvcmNl
V2hpdGVUZXh0OworICAgICAgICBwYWludEJlaGF2aW9yLmFkZChQYWludEJlaGF2aW9yOjpGb3Jj
ZVdoaXRlVGV4dCk7CiAKICAgICBhdXRvIG9sZFBhaW50QmVoYXZpb3IgPSBmcmFtZVZpZXctPnBh
aW50QmVoYXZpb3IoKTsKICAgICBmcmFtZVZpZXctPnNldFBhaW50QmVoYXZpb3IocGFpbnRCZWhh
dmlvcik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9N
L0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRs
ZS5jcHAJKHJldmlzaW9uIDIzNTUxNCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE1MCwxMSArMTUwLDEyIEBAIFJlZlB0cjxXZWJJbWFnZT4gSW5qZWN0ZWRCdW5kbGVS
YW5nZUhhbmQKICAgICBncmFwaGljc0NvbnRleHQtPnRyYW5zbGF0ZSgtcGFpbnRSZWN0LmxvY2F0
aW9uKCkpOwogCiAgICAgT3B0aW9uU2V0PFBhaW50QmVoYXZpb3I+IG9sZFBhaW50QmVoYXZpb3Ig
PSBmcmFtZVZpZXctPnBhaW50QmVoYXZpb3IoKTsKLSAgICBPcHRpb25TZXQ8UGFpbnRCZWhhdmlv
cj4gcGFpbnRCZWhhdmlvciA9IG9sZFBhaW50QmVoYXZpb3IgfCBQYWludEJlaGF2aW9yOjpTZWxl
Y3Rpb25Pbmx5IHwgUGFpbnRCZWhhdmlvcjo6RmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzIHwgUGFp
bnRCZWhhdmlvcjo6U25hcHNob3R0aW5nOworICAgIE9wdGlvblNldDxQYWludEJlaGF2aW9yPiBw
YWludEJlaGF2aW9yID0gb2xkUGFpbnRCZWhhdmlvcjsKKyAgICBwYWludEJlaGF2aW9yLmFkZCh7
IFBhaW50QmVoYXZpb3I6OlNlbGVjdGlvbk9ubHksIFBhaW50QmVoYXZpb3I6OkZsYXR0ZW5Db21w
b3NpdGluZ0xheWVycywgUGFpbnRCZWhhdmlvcjo6U25hcHNob3R0aW5nIH0pOwogICAgIGlmIChv
cHRpb25zICYgU25hcHNob3RPcHRpb25zRm9yY2VCbGFja1RleHQpCi0gICAgICAgIHBhaW50QmVo
YXZpb3IgfD0gUGFpbnRCZWhhdmlvcjo6Rm9yY2VCbGFja1RleHQ7CisgICAgICAgIHBhaW50QmVo
YXZpb3IuYWRkKFBhaW50QmVoYXZpb3I6OkZvcmNlQmxhY2tUZXh0KTsKICAgICBpZiAob3B0aW9u
cyAmIFNuYXBzaG90T3B0aW9uc0ZvcmNlV2hpdGVUZXh0KQotICAgICAgICBwYWludEJlaGF2aW9y
IHw9IFBhaW50QmVoYXZpb3I6OkZvcmNlV2hpdGVUZXh0OworICAgICAgICBwYWludEJlaGF2aW9y
LmFkZChQYWludEJlaGF2aW9yOjpGb3JjZVdoaXRlVGV4dCk7CiAKICAgICBmcmFtZVZpZXctPnNl
dFBhaW50QmVoYXZpb3IocGFpbnRCZWhhdmlvcik7CiAgICAgb3duZXJEb2N1bWVudC51cGRhdGVM
YXlvdXQoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250
cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9GaW5kQ29udHJvbGxlci5jcHAJKHJldmlzaW9uIDIzNTUxNCkKKysrIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTYsMTUgKzU2LDE1IEBAIFdlYkNvcmU6OkZpbmRPcHRpb25zIGNvcmUoRmluZE9wdGlvbnMgb3AK
IHsKICAgICBXZWJDb3JlOjpGaW5kT3B0aW9ucyByZXN1bHQ7CiAgICAgaWYgKG9wdGlvbnMgJiBG
aW5kT3B0aW9uc0Nhc2VJbnNlbnNpdGl2ZSkKLSAgICAgICAgcmVzdWx0IHw9IFdlYkNvcmU6OkNh
c2VJbnNlbnNpdGl2ZTsKKyAgICAgICAgcmVzdWx0LmFkZChXZWJDb3JlOjpDYXNlSW5zZW5zaXRp
dmUpOwogICAgIGlmIChvcHRpb25zICYgRmluZE9wdGlvbnNBdFdvcmRTdGFydHMpCi0gICAgICAg
IHJlc3VsdCB8PSBXZWJDb3JlOjpBdFdvcmRTdGFydHM7CisgICAgICAgIHJlc3VsdC5hZGQoV2Vi
Q29yZTo6QXRXb3JkU3RhcnRzKTsKICAgICBpZiAob3B0aW9ucyAmIEZpbmRPcHRpb25zVHJlYXRN
ZWRpYWxDYXBpdGFsQXNXb3JkU3RhcnQpCi0gICAgICAgIHJlc3VsdCB8PSBXZWJDb3JlOjpUcmVh
dE1lZGlhbENhcGl0YWxBc1dvcmRTdGFydDsKKyAgICAgICAgcmVzdWx0LmFkZChXZWJDb3JlOjpU
cmVhdE1lZGlhbENhcGl0YWxBc1dvcmRTdGFydCk7CiAgICAgaWYgKG9wdGlvbnMgJiBGaW5kT3B0
aW9uc0JhY2t3YXJkcykKLSAgICAgICAgcmVzdWx0IHw9IFdlYkNvcmU6OkJhY2t3YXJkczsKKyAg
ICAgICAgcmVzdWx0LmFkZChXZWJDb3JlOjpCYWNrd2FyZHMpOwogICAgIGlmIChvcHRpb25zICYg
RmluZE9wdGlvbnNXcmFwQXJvdW5kKQotICAgICAgICByZXN1bHQgfD0gV2ViQ29yZTo6V3JhcEFy
b3VuZDsKKyAgICAgICAgcmVzdWx0LmFkZChXZWJDb3JlOjpXcmFwQXJvdW5kKTsKICAgICByZXR1
cm4gcmVzdWx0OwogfQogCkBAIC0yMDQsNyArMjA0LDcgQEAgdm9pZCBGaW5kQ29udHJvbGxlcjo6
ZmluZFN0cmluZyhjb25zdCBTdAogICAgIC8vIHdlIG5lZWQgdG8gYXZvaWQgc2VuZGluZyB0aGUg
bm9uLXBhaW50ZWQgc2VsZWN0aW9uIGNoYW5nZSB0byB0aGUgVUkgcHJvY2VzcwogICAgIC8vIHNv
IHRoYXQgaXQgZG9lcyBub3QgY2xlYXIgdGhlIHNlbGVjdGlvbiBvdXQgZnJvbSB1bmRlciB1cy4K
ICNpZiBQTEFURk9STShJT1MpCi0gICAgY29yZU9wdGlvbnMgfD0gRG9Ob3RSZXZlYWxTZWxlY3Rp
b247CisgICAgY29yZU9wdGlvbnMuYWRkKERvTm90UmV2ZWFsU2VsZWN0aW9uKTsKICNlbmRpZgog
CiAgICAgd2lsbEZpbmRTdHJpbmcoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDIzNTUxNCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDE4LTA4LTMwICBBbnR0aSBLb2l2aXN0
byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIE9wdGlvblNldCB8PSBhbmQg
LT0gb3BlcmF0b3JzIHdpdGggYWRkKCkgYW5kIHJlbW92ZSgpIGZ1bmN0aW9ucworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg5MTY5CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1l
Lm1tOgorICAgICAgICAoLVtXZWJGcmFtZSBfZHJhd1JlY3Q6Y29udGVudHNPbmx5Ol0pOgorICAg
ICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKGNvcmVPcHRpb25zKToKKwogMjAx
OC0wOC0yOSAgT2xpdmlhIEJhcm5ldHQgIDxvYmFybmV0dEBhcHBsZS5jb20+CiAKICAgICAgICAg
SW1wbGVtZW50IHRoZSBXZWIgU2hhcmUgQVBJCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYkZyYW1lLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViRnJhbWUubW0JKHJldmlzaW9uIDIzNTUxNCkKKysrIFNvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0JKHdvcmtpbmcgY29weSkKQEAgLTY0OSwx
NiArNjQ5LDE2IEBAIC0gKHZvaWQpX2RyYXdSZWN0OihOU1JlY3QpcmVjdCBjb250ZW50c08KICAg
ICAgICAgLy8gRm9yIHN1YmZyYW1lcywgd2UgbmVlZCB0byBpbmhlcml0IHRoZSBwYWludCBiZWhh
dmlvciBmcm9tIG91ciBwYXJlbnQKICAgICAgICAgaWYgKEZyYW1lVmlldyogcGFyZW50VmlldyA9
IHBhcmVudEZyYW1lID8gcGFyZW50RnJhbWUtPnZpZXcoKSA6IG51bGxwdHIpIHsKICAgICAgICAg
ICAgIGlmIChwYXJlbnRWaWV3LT5wYWludEJlaGF2aW9yKCkuY29udGFpbnMoUGFpbnRCZWhhdmlv
cjo6RmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzKSkKLSAgICAgICAgICAgICAgICBwYWludEJlaGF2
aW9yIHw9IFBhaW50QmVoYXZpb3I6OkZsYXR0ZW5Db21wb3NpdGluZ0xheWVyczsKKyAgICAgICAg
ICAgICAgICBwYWludEJlaGF2aW9yLmFkZChQYWludEJlaGF2aW9yOjpGbGF0dGVuQ29tcG9zaXRp
bmdMYXllcnMpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAocGFyZW50Vmlldy0+cGFp
bnRCZWhhdmlvcigpLmNvbnRhaW5zKFBhaW50QmVoYXZpb3I6OlNuYXBzaG90dGluZykpCi0gICAg
ICAgICAgICAgICAgcGFpbnRCZWhhdmlvciB8PSBQYWludEJlaGF2aW9yOjpTbmFwc2hvdHRpbmc7
CisgICAgICAgICAgICAgICAgcGFpbnRCZWhhdmlvci5hZGQoUGFpbnRCZWhhdmlvcjo6U25hcHNo
b3R0aW5nKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKHBhcmVudFZpZXctPnBhaW50
QmVoYXZpb3IoKS5jb250YWlucyhQYWludEJlaGF2aW9yOjpUaWxlRmlyc3RQYWludCkpCi0gICAg
ICAgICAgICAgICAgcGFpbnRCZWhhdmlvciB8PSBQYWludEJlaGF2aW9yOjpUaWxlRmlyc3RQYWlu
dDsKKyAgICAgICAgICAgICAgICBwYWludEJlaGF2aW9yLmFkZChQYWludEJlaGF2aW9yOjpUaWxl
Rmlyc3RQYWludCk7CiAgICAgICAgIH0KICAgICB9IGVsc2UKLSAgICAgICAgcGFpbnRCZWhhdmlv
ciB8PSBbc2VsZiBfcGFpbnRCZWhhdmlvckZvckRlc3RpbmF0aW9uQ29udGV4dDpjdHhdOworICAg
ICAgICBwYWludEJlaGF2aW9yLmFkZChbc2VsZiBfcGFpbnRCZWhhdmlvckZvckRlc3RpbmF0aW9u
Q29udGV4dDpjdHhdKTsKICAgICAgICAgCiAgICAgdmlldy0+c2V0UGFpbnRCZWhhdmlvcihwYWlu
dEJlaGF2aW9yKTsKIApJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJW
aWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
Vmlldy5tbQkocmV2aXNpb24gMjM1NTE0KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC01NzEsMTcgKzU3MSwxNyBAQCBGaW5k
T3B0aW9ucyBjb3JlT3B0aW9ucyhXZWJGaW5kT3B0aW9ucyBvCiB7CiAgICAgRmluZE9wdGlvbnMg
ZmluZE9wdGlvbnM7CiAgICAgaWYgKG9wdGlvbnMgJiBXZWJGaW5kT3B0aW9uc0Nhc2VJbnNlbnNp
dGl2ZSkKLSAgICAgICAgZmluZE9wdGlvbnMgfD0gQ2FzZUluc2Vuc2l0aXZlOworICAgICAgICBm
aW5kT3B0aW9ucy5hZGQoQ2FzZUluc2Vuc2l0aXZlKTsKICAgICBpZiAob3B0aW9ucyAmIFdlYkZp
bmRPcHRpb25zQXRXb3JkU3RhcnRzKQotICAgICAgICBmaW5kT3B0aW9ucyB8PSBBdFdvcmRTdGFy
dHM7CisgICAgICAgIGZpbmRPcHRpb25zLmFkZChBdFdvcmRTdGFydHMpOwogICAgIGlmIChvcHRp
b25zICYgV2ViRmluZE9wdGlvbnNUcmVhdE1lZGlhbENhcGl0YWxBc1dvcmRTdGFydCkKLSAgICAg
ICAgZmluZE9wdGlvbnMgfD0gVHJlYXRNZWRpYWxDYXBpdGFsQXNXb3JkU3RhcnQ7CisgICAgICAg
IGZpbmRPcHRpb25zLmFkZChUcmVhdE1lZGlhbENhcGl0YWxBc1dvcmRTdGFydCk7CiAgICAgaWYg
KG9wdGlvbnMgJiBXZWJGaW5kT3B0aW9uc0JhY2t3YXJkcykKLSAgICAgICAgZmluZE9wdGlvbnMg
fD0gQmFja3dhcmRzOworICAgICAgICBmaW5kT3B0aW9ucy5hZGQoQmFja3dhcmRzKTsKICAgICBp
ZiAob3B0aW9ucyAmIFdlYkZpbmRPcHRpb25zV3JhcEFyb3VuZCkKLSAgICAgICAgZmluZE9wdGlv
bnMgfD0gV3JhcEFyb3VuZDsKKyAgICAgICAgZmluZE9wdGlvbnMuYWRkKFdyYXBBcm91bmQpOwog
ICAgIGlmIChvcHRpb25zICYgV2ViRmluZE9wdGlvbnNTdGFydEluU2VsZWN0aW9uKQotICAgICAg
ICBmaW5kT3B0aW9ucyB8PSBTdGFydEluU2VsZWN0aW9uOworICAgICAgICBmaW5kT3B0aW9ucy5h
ZGQoU3RhcnRJblNlbGVjdGlvbik7CiAgICAgcmV0dXJuIGZpbmRPcHRpb25zOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>348618</attachid>
            <date>2018-08-31 00:50:10 -0700</date>
            <delta_ts>2018-08-31 01:15:37 -0700</delta_ts>
            <desc>patch</desc>
            <filename>optionset-add-remove-2.patch</filename>
            <type>text/plain</type>
            <size>105202</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyMzU1MTQpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDE4LTA4LTMwICBBbnR0aSBLb2l2aXN0byAgPGFu
dHRpQGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIE9wdGlvblNldCB8PSBhbmQgLT0gb3Bl
cmF0b3JzIHdpdGggYWRkKCkgYW5kIHJlbW92ZSgpIGZ1bmN0aW9ucworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg5MTY5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wcm92ZSBjb2RlIHJlYWRhYmlsaXR5
LgorCisgICAgICAgICogd3RmL09wdGlvblNldC5oOgorICAgICAgICAoV1RGOjpPcHRpb25TZXQ6
OmFkZCk6CisgICAgICAgIChXVEY6Ok9wdGlvblNldDo6cmVtb3ZlKToKKyAgICAgICAgKFdURjo6
T3B0aW9uU2V0OjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdURjo6T3B0aW9uU2V0OjpvcGVyYXRv
ciE9KToKKyAgICAgICAgKFdURjo6T3B0aW9uU2V0OjpvcGVyYXRvcnw9KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdURjo6T3B0aW9uU2V0OjpvcGVyYXRvci09KTogRGVsZXRlZC4KKyAgICAgICAgKiB3
dGYvUHJvY2Vzc1ByaXZpbGVnZS5jcHA6CisgICAgICAgIChXVEY6OmFkZFByb2Nlc3NQcml2aWxl
Z2UpOgorICAgICAgICAoV1RGOjpyZW1vdmVQcm9jZXNzUHJpdmlsZWdlKToKKwogMjAxOC0wOC0y
OSAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFtZSB3
dGYvdGV4dC9tYWMvU3RyaW5nTWFjLm1tIHRvIHd0Zi90ZXh0L2NvY29jYS9TdHJpbmdDb2NvY2Eu
bW0KSW5kZXg6IFNvdXJjZS9XVEYvd3RmL09wdGlvblNldC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XVEYvd3RmL09wdGlvblNldC5oCShyZXZpc2lvbiAyMzU1MTQpCisrKyBTb3VyY2UvV1RGL3d0
Zi9PcHRpb25TZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMTExLDI2ICsxMTEsMjQgQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gKCp0aGlzICYgb3B0aW9uU2V0KSA9PSBvcHRpb25TZXQ7CiAgICAg
fQogCi0gICAgY29uc3RleHByIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oT3B0aW9uU2V0IGxocywg
T3B0aW9uU2V0IHJocykKKyAgICBjb25zdGV4cHIgdm9pZCBhZGQoT3B0aW9uU2V0IG9wdGlvblNl
dCkKICAgICB7Ci0gICAgICAgIHJldHVybiBsaHMubV9zdG9yYWdlID09IHJocy5tX3N0b3JhZ2U7
CisgICAgICAgIG1fc3RvcmFnZSB8PSBvcHRpb25TZXQubV9zdG9yYWdlOwogICAgIH0KIAotICAg
IGNvbnN0ZXhwciBmcmllbmQgYm9vbCBvcGVyYXRvciE9KE9wdGlvblNldCBsaHMsIE9wdGlvblNl
dCByaHMpCisgICAgY29uc3RleHByIHZvaWQgcmVtb3ZlKE9wdGlvblNldCBvcHRpb25TZXQpCiAg
ICAgewotICAgICAgICByZXR1cm4gbGhzLm1fc3RvcmFnZSAhPSByaHMubV9zdG9yYWdlOworICAg
ICAgICBtX3N0b3JhZ2UgJj0gfm9wdGlvblNldC5tX3N0b3JhZ2U7CiAgICAgfQogCi0gICAgZnJp
ZW5kIE9wdGlvblNldCYgb3BlcmF0b3J8PShPcHRpb25TZXQmIGxocywgT3B0aW9uU2V0IHJocykK
KyAgICBjb25zdGV4cHIgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShPcHRpb25TZXQgbGhzLCBPcHRp
b25TZXQgcmhzKQogICAgIHsKLSAgICAgICAgbGhzLm1fc3RvcmFnZSB8PSByaHMubV9zdG9yYWdl
OwotICAgICAgICByZXR1cm4gbGhzOworICAgICAgICByZXR1cm4gbGhzLm1fc3RvcmFnZSA9PSBy
aHMubV9zdG9yYWdlOwogICAgIH0KIAotICAgIGZyaWVuZCBPcHRpb25TZXQmIG9wZXJhdG9yLT0o
T3B0aW9uU2V0JiBsaHMsIE9wdGlvblNldCByaHMpCisgICAgY29uc3RleHByIGZyaWVuZCBib29s
IG9wZXJhdG9yIT0oT3B0aW9uU2V0IGxocywgT3B0aW9uU2V0IHJocykKICAgICB7Ci0gICAgICAg
IGxocy5tX3N0b3JhZ2UgJj0gfnJocy5tX3N0b3JhZ2U7Ci0gICAgICAgIHJldHVybiBsaHM7Cisg
ICAgICAgIHJldHVybiBsaHMubV9zdG9yYWdlICE9IHJocy5tX3N0b3JhZ2U7CiAgICAgfQogCiAg
ICAgY29uc3RleHByIGZyaWVuZCBPcHRpb25TZXQgb3BlcmF0b3J8KE9wdGlvblNldCBsaHMsIE9w
dGlvblNldCByaHMpCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9Qcm9jZXNzUHJpdmlsZWdlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9Qcm9jZXNzUHJpdmlsZWdlLmNwcAkocmV2aXNp
b24gMjM1NTE0KQorKysgU291cmNlL1dURi93dGYvUHJvY2Vzc1ByaXZpbGVnZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTU3LDEyICs1NywxMiBAQCBib29sIGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJv
Y2Vzc1ByaXZpbGVnCiAKIHZvaWQgYWRkUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdl
IHByaXZpbGVnZSkKIHsKLSAgICBwcm9jZXNzUHJpdmlsZWdlcygpIHw9IHByaXZpbGVnZTsKKyAg
ICBwcm9jZXNzUHJpdmlsZWdlcygpLmFkZChwcml2aWxlZ2UpOwogfQogCiB2b2lkIHJlbW92ZVBy
b2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZSBwcml2aWxlZ2UpCiB7Ci0gICAgcHJvY2Vz
c1ByaXZpbGVnZXMoKSA9IHByb2Nlc3NQcml2aWxlZ2VzKCkgLSBwcml2aWxlZ2U7CisgICAgcHJv
Y2Vzc1ByaXZpbGVnZXMoKS5yZW1vdmUocHJpdmlsZWdlKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V1RGCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzU1MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMTkgQEAKKzIwMTgtMDgtMzAgIEFu
dHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgorCisgICAgICAgIFJlcGxhY2UgT3B0aW9u
U2V0IHw9IGFuZCAtPSBvcGVyYXRvcnMgd2l0aCBhZGQoKSBhbmQgcmVtb3ZlKCkgZnVuY3Rpb25z
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODkxNjkK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGFjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpyYW5nZU9mU3RyaW5nQ2xvc2VzdFRvUmFuZ2VJbkRpcmVjdGlvbiBj
b25zdCk6CisgICAgICAgICogY3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VGV4dERlY29yYXRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VGV4dEVtcGhh
c2lzUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVyQ29udmVydGVyOjpj
b252ZXJ0VGV4dFVuZGVybGluZVBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVp
bGRlckNvbnZlcnRlcjo6Y29udmVydFRleHREZWNvcmF0aW9uU2tpcCk6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRTcGVha0FzKToKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEhhbmdpbmdQdW5jdHVhdGlvbik6
CisgICAgICAgICogY3NzL3BhcnNlci9DU1NQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTUGFyc2VyOjpwYXJzZVN5c3RlbUNvbG9yKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnN0eWxlQ29sb3JPcHRpb25zIGNvbnN0KToK
KyAgICAgICAgKiBkb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6YWRkTWFya2VyKToKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6cmVtb3ZlTWFya2Vycyk6CisgICAgICAg
ICogZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXI6OmFkZFRocm90dGxpbmdSZWFzb24pOgorICAg
ICAgICAoV2ViQ29yZTo6U2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyOjpyZW1vdmVUaHJvdHRs
aW5nUmVhc29uKToKKyAgICAgICAgKiBkb20vU2VjdXJpdHlDb250ZXh0Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpTZWN1cml0eUNvbnRleHQ6OnNldEZvdW5kTWl4ZWRDb250ZW50KToKKyAgICAgICAg
KiBkb20vVUlFdmVudFdpdGhLZXlTdGF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpVSUV2ZW50
V2l0aEtleVN0YXRlOjptb2RpZmllcnNGcm9tSW5pdGlhbGl6ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6VUlFdmVudFdpdGhLZXlTdGF0ZTo6c2V0TW9kaWZpZXJLZXlzKToKKyAgICAgICAgKiBkb20v
VXNlckFjdGlvbkVsZW1lbnRTZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VXNlckFjdGlvbkVs
ZW1lbnRTZXQ6OnNldEZsYWdzKToKKyAgICAgICAgKiBlZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21t
YW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0ZUVkaXRDb21tYW5kOjptb3ZlUGFy
YWdyYXBocyk6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RWRpdG9yOjpyZXBsYWNlU2VsZWN0aW9uV2l0aEZyYWdtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkVkaXRvcjo6YXBwbGllZEVkaXRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpt
YXJrTWlzc3BlbGxpbmdzQWZ0ZXJUeXBpbmdUb1dvcmQpOgorICAgICAgICAoV2ViQ29yZTo6RWRp
dG9yOjptYXJrTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hcik6CisgICAgICAgIChXZWJDb3JlOjpF
ZGl0b3I6OnJlc29sdmVUZXh0Q2hlY2tpbmdUeXBlTWFzayk6CisgICAgICAgICogZWRpdGluZy9G
cmFtZVNlbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6bW92
ZVdpdGhvdXRWYWxpZGF0aW9uVG8pOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246
OnNldFNlbGVjdGVkUmFuZ2UpOgorICAgICAgICAqIGVkaXRpbmcvRnJhbWVTZWxlY3Rpb24uaDoK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpkZWZhdWx0U2V0U2VsZWN0aW9uT3B0
aW9ucyk6CisgICAgICAgICogZWRpdGluZy9Nb3ZlU2VsZWN0aW9uQ29tbWFuZC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpNb3ZlU2VsZWN0aW9uQ29tbWFuZDo6ZG9BcHBseSk6CisgICAgICAgICog
ZWRpdGluZy9TcGVsbENoZWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3BlbGxDaGVja2Vy
OjpkaWRDaGVja1N1Y2NlZWQpOgorICAgICAgICAqIGVkaXRpbmcvVGV4dENoZWNraW5nSGVscGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0TWlz
c3BlbGxpbmdPckJhZEdyYW1tYXIpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENoZWNraW5nSGVs
cGVyOjpndWVzc2VzRm9yTWlzc3BlbGxlZE9yVW5ncmFtbWF0aWNhbFJhbmdlIGNvbnN0KToKKyAg
ICAgICAgKiBlZGl0aW5nL1RleHRJdGVyYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWFy
Y2hCdWZmZXI6OlNlYXJjaEJ1ZmZlcik6CisgICAgICAgICogaHRtbC9IVE1MQW5jaG9yRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQW5jaG9yRWxlbWVudDo6cGFyc2VBdHRyaWJ1
dGUpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6cmVsb2FkKToKKyAgICAgICAg
KiBwYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZXh0TWVudUNvbnRyb2xsZXI6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKToKKyAgICAgICAgKiBw
YWdlL0RPTVdpbmRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OmZpbmQgY29u
c3QpOgorICAgICAgICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RHJhZ0NvbnRyb2xsZXI6OmNvbmNsdWRlRWRpdERyYWcpOgorICAgICAgICAqIHBhZ2UvRnJh
bWVTbmFwc2hvdHRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c25hcHNob3RGcmFtZVJlY3RX
aXRoQ2xpcCk6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6dXBkYXRlTGF5ZXJQb3NpdGlvbkZsYWdzKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmll
dzo6d2lsbFBhaW50Q29udGVudHMpOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpQYWdlOjpzZXRJc1Zpc2libGUpOgorICAgICAgICAqIHBhZ2UvUGVyZm9ybWFu
Y2VPYnNlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQZXJmb3JtYW5jZU9ic2VydmVyOjpv
YnNlcnZlKToKKyAgICAgICAgKiBwYWdlL1RleHRJbmRpY2F0b3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dEluZGljYXRvcjo6Y3JlYXRlV2l0aFJhbmdlKToKKyAgICAgICAgKiBwYWdlL1dp
bmRvd0ZlYXR1cmVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlRGlzYWJsZWRBZGFwdGF0
aW9ucyk6CisgICAgICAgICogcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFkZEhhc2hBbGdvcml0aG1zRm9y
SW5saW5lU2NyaXB0cyk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k6
OmFkZEhhc2hBbGdvcml0aG1zRm9ySW5saW5lU3R5bGVzaGVldHMpOgorICAgICAgICAqIHBhZ2Uv
Y3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdDo6cGFyc2VIYXNoU291cmNlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybUV2ZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpQbGF0
Zm9ybUV2ZW50OjpQbGF0Zm9ybUV2ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUGxhdGZv
cm1FdmVudEZhY3RvcnlJT1MubW06CisgICAgICAgIChXZWJDb3JlOjptb2RpZmllcnNGb3JFdmVu
dCk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1BsYXRmb3JtRXZlbnRGYWN0b3J5TWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6bW9kaWZpZXJzRm9yRXZlbnQpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6dXBkYXRl
TGF5ZXJQb3NpdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnVwZGF0ZUxh
eWVyUG9zaXRpb25zQWZ0ZXJTY3JvbGwpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6
OnBhaW50TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJD
b250ZW50c0FuZFJlZmxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBh
aW50TGF5ZXJDb250ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFpbnRG
b3JlZ3JvdW5kRm9yRnJhZ21lbnRzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJC
YWNraW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6cGFpbnRJ
bnRvTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjpwYWludENv
bnRlbnRzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVhc29uc0ZvckNvbXBv
c2l0aW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6
dXBkYXRlU2Nyb2xsQ29vcmRpbmF0ZWRTdGF0dXMpOgorICAgICAgICAqIHJlbmRlcmluZy9UZXh0
RGVjb3JhdGlvblBhaW50ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29sbGVjdFN0eWxlc0Zv
clJlbmRlcmVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvVGV4dFBhaW50U3R5bGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Y29tcHV0ZVRleHRQYWludFN0eWxlKToKKyAgICAgICAgKiByZW5kZXJp
bmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6
OmNoYW5nZVJlcXVpcmVzTGF5b3V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0
eWxlOjpjaGFuZ2VSZXF1aXJlc0xheWVyUmVwYWludCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTdHlsZTo6Y2hhbmdlUmVxdWlyZXNSZXBhaW50IGNvbnN0KToKKyAgICAgICAgKiB0
ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUZpbmRPcHRpb25z
KToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6Zm9yY2VSZWxvYWQpOgorICAgICAgICAo
V2ViQ29yZTo6SW50ZXJuYWxzOjpzZXRQYWdlVmlzaWJpbGl0eSk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnRlcm5hbHM6OnNldFBhZ2VJc0ZvY3VzZWRBbmRBY3RpdmUpOgorCiAyMDE4LTA4LTMwICBF
cmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgogCiAgICAgICAgIE1vY2sgdmlk
ZW8gZGV2aWNlcyBzaG91bGQgb25seSBzdXBwb3J0IGRpc2NyZXRlIHNpemVzCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5j
cHAJKHJldmlzaW9uIDIzNTUxNCkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc1MSw5ICs3NTEsOSBAQCBS
ZWZQdHI8UmFuZ2U+IEFjY2Vzc2liaWxpdHlPYmplY3Q6OnJhbmdlCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIAogICAgIGJvb2wgaXNCYWNrd2FyZFNlYXJjaCA9IHNlYXJjaERpcmVjdGlv
biA9PSBBY2Nlc3NpYmlsaXR5U2VhcmNoRGlyZWN0aW9uOjpQcmV2aW91czsKLSAgICBGaW5kT3B0
aW9ucyBmaW5kT3B0aW9ucyB7IHsgQXRXb3JkU3RhcnRzLCBBdFdvcmRFbmRzLCBDYXNlSW5zZW5z
aXRpdmUsIFN0YXJ0SW5TZWxlY3Rpb24gfSB9OworICAgIEZpbmRPcHRpb25zIGZpbmRPcHRpb25z
IHsgQXRXb3JkU3RhcnRzLCBBdFdvcmRFbmRzLCBDYXNlSW5zZW5zaXRpdmUsIFN0YXJ0SW5TZWxl
Y3Rpb24gfTsKICAgICBpZiAoaXNCYWNrd2FyZFNlYXJjaCkKLSAgICAgICAgZmluZE9wdGlvbnMg
fD0gQmFja3dhcmRzOworICAgICAgICBmaW5kT3B0aW9ucy5hZGQoQmFja3dhcmRzKTsKICAgICAK
ICAgICBSZWZQdHI8UmFuZ2U+IGNsb3Nlc3RTdHJpbmdSYW5nZSA9IG51bGxwdHI7CiAgICAgZm9y
IChjb25zdCBhdXRvJiBzZWFyY2hTdHJpbmcgOiBzZWFyY2hTdHJpbmdzKSB7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oCShyZXZpc2lvbiAyMzU1MTQp
CisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM5NCw3ICszOTQsNyBAQCBpbmxpbmUgT3B0aW9uU2V0PFRleHREZWNvcmF0aW9u
PiBTdHlsZUJ1CiAgICAgYXV0byByZXN1bHQgPSBSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHREZWNv
cmF0aW9uKCk7CiAgICAgaWYgKGlzPENTU1ZhbHVlTGlzdD4odmFsdWUpKSB7CiAgICAgICAgIGZv
ciAoYXV0byYgY3VycmVudFZhbHVlIDogZG93bmNhc3Q8Q1NTVmFsdWVMaXN0Pih2YWx1ZSkpCi0g
ICAgICAgICAgICByZXN1bHQgfD0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KGN1cnJlbnRW
YWx1ZS5nZXQoKSk7CisgICAgICAgICAgICByZXN1bHQuYWRkKGRvd25jYXN0PENTU1ByaW1pdGl2
ZVZhbHVlPihjdXJyZW50VmFsdWUuZ2V0KCkpKTsKICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KQEAgLTQ5OCw3ICs0OTgsNyBAQCBpbmxpbmUgT3B0aW9uU2V0PFRleHRFbXBoYXNpc1Bvc2l0
aW9uPiBTCiAKICAgICBPcHRpb25TZXQ8VGV4dEVtcGhhc2lzUG9zaXRpb24+IHBvc2l0aW9uOwog
ICAgIGZvciAoYXV0byYgY3VycmVudFZhbHVlIDogZG93bmNhc3Q8Q1NTVmFsdWVMaXN0Pih2YWx1
ZSkpCi0gICAgICAgIHBvc2l0aW9uIHw9IHZhbHVlVG9FbXBoYXNpc1Bvc2l0aW9uKGRvd25jYXN0
PENTU1ByaW1pdGl2ZVZhbHVlPihjdXJyZW50VmFsdWUuZ2V0KCkpKTsKKyAgICAgICAgcG9zaXRp
b24uYWRkKHZhbHVlVG9FbXBoYXNpc1Bvc2l0aW9uKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVl
PihjdXJyZW50VmFsdWUuZ2V0KCkpKSk7CiAgICAgcmV0dXJuIHBvc2l0aW9uOwogfQogCkBAIC02
NDUsNyArNjQ1LDcgQEAgaW5saW5lIE9wdGlvblNldDxUZXh0VW5kZXJsaW5lUG9zaXRpb24+IAog
CiAgICAgT3B0aW9uU2V0PFRleHRVbmRlcmxpbmVQb3NpdGlvbj4gY29tYmluZWRQb3NpdGlvbjsK
ICAgICBmb3IgKGF1dG8mIGN1cnJlbnRWYWx1ZSA6IGRvd25jYXN0PENTU1ZhbHVlTGlzdD4odmFs
dWUpKQotICAgICAgICBjb21iaW5lZFBvc2l0aW9uIHw9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlPihjdXJyZW50VmFsdWUuZ2V0KCkpOworICAgICAgICBjb21iaW5lZFBvc2l0aW9uLmFkZChk
b3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oY3VycmVudFZhbHVlLmdldCgpKSk7CiAgICAgcmV0
dXJuIGNvbWJpbmVkUG9zaXRpb247CiB9CiAKQEAgLTc1Myw3ICs3NTMsNyBAQCBpbmxpbmUgT3B0
aW9uU2V0PFRleHREZWNvcmF0aW9uU2tpcD4gU3R5CiAKICAgICBPcHRpb25TZXQ8VGV4dERlY29y
YXRpb25Ta2lwPiBza2lwOwogICAgIGZvciAoYXV0byYgY3VycmVudFZhbHVlIDogZG93bmNhc3Q8
Q1NTVmFsdWVMaXN0Pih2YWx1ZSkpCi0gICAgICAgIHNraXAgfD0gdmFsdWVUb0RlY29yYXRpb25T
a2lwKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPihjdXJyZW50VmFsdWUuZ2V0KCkpKTsKKyAg
ICAgICAgc2tpcC5hZGQodmFsdWVUb0RlY29yYXRpb25Ta2lwKGRvd25jYXN0PENTU1ByaW1pdGl2
ZVZhbHVlPihjdXJyZW50VmFsdWUuZ2V0KCkpKSk7CiAgICAgcmV0dXJuIHNraXA7CiB9CiAKQEAg
LTE1MDQsNyArMTUwNCw3IEBAIGlubGluZSBPcHRpb25TZXQ8U3BlYWtBcz4gU3R5bGVCdWlsZGVy
Q28KICAgICBhdXRvIHJlc3VsdCA9IFJlbmRlclN0eWxlOjppbml0aWFsU3BlYWtBcygpOwogICAg
IGlmIChpczxDU1NWYWx1ZUxpc3Q+KHZhbHVlKSkgewogICAgICAgICBmb3IgKGF1dG8mIGN1cnJl
bnRWYWx1ZSA6IGRvd25jYXN0PENTU1ZhbHVlTGlzdD4odmFsdWUpKQotICAgICAgICAgICAgcmVz
dWx0IHw9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPihjdXJyZW50VmFsdWUuZ2V0KCkpOwor
ICAgICAgICAgICAgcmVzdWx0LmFkZChkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oY3VycmVu
dFZhbHVlLmdldCgpKSk7CiAgICAgfQogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC0xNTE0LDcg
KzE1MTQsNyBAQCBpbmxpbmUgT3B0aW9uU2V0PEhhbmdpbmdQdW5jdHVhdGlvbj4gU3R5CiAgICAg
YXV0byByZXN1bHQgPSBSZW5kZXJTdHlsZTo6aW5pdGlhbEhhbmdpbmdQdW5jdHVhdGlvbigpOwog
ICAgIGlmIChpczxDU1NWYWx1ZUxpc3Q+KHZhbHVlKSkgewogICAgICAgICBmb3IgKGF1dG8mIGN1
cnJlbnRWYWx1ZSA6IGRvd25jYXN0PENTU1ZhbHVlTGlzdD4odmFsdWUpKQotICAgICAgICAgICAg
cmVzdWx0IHw9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPihjdXJyZW50VmFsdWUuZ2V0KCkp
OworICAgICAgICAgICAgcmVzdWx0LmFkZChkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oY3Vy
cmVudFZhbHVlLmdldCgpKSk7CiAgICAgfQogICAgIHJldHVybiByZXN1bHQ7CiB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXIuY3BwCShyZXZpc2lvbiAyMzU1MTQpCisr
KyBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTExOSw3ICsxMTksNyBAQCBDb2xvciBDU1NQYXJzZXI6OnBhcnNlU3lzdGVtQ29sb3IoY29u
c3QgCiAKICAgICBPcHRpb25TZXQ8U3R5bGVDb2xvcjo6T3B0aW9ucz4gb3B0aW9uczsKICAgICBp
ZiAoY29udGV4dCAmJiBjb250ZXh0LT51c2VTeXN0ZW1BcHBlYXJhbmNlKQotICAgICAgICBvcHRp
b25zIHw9IFN0eWxlQ29sb3I6Ok9wdGlvbnM6OlVzZVN5c3RlbUFwcGVhcmFuY2U7CisgICAgICAg
IG9wdGlvbnMuYWRkKFN0eWxlQ29sb3I6Ok9wdGlvbnM6OlVzZVN5c3RlbUFwcGVhcmFuY2UpOwog
ICAgIHJldHVybiBSZW5kZXJUaGVtZTo6c2luZ2xldG9uKCkuc3lzdGVtQ29sb3IoaWQsIG9wdGlv
bnMpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDIzNTUxNCkK
KysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcx
NDIsOSArNzE0Miw5IEBAIE9wdGlvblNldDxTdHlsZUNvbG9yOjpPcHRpb25zPiBEb2N1bWVudDoK
IHsKICAgICBPcHRpb25TZXQ8U3R5bGVDb2xvcjo6T3B0aW9ucz4gb3B0aW9uczsKICAgICBpZiAo
dXNlU3lzdGVtQXBwZWFyYW5jZSgpKQotICAgICAgICBvcHRpb25zIHw9IFN0eWxlQ29sb3I6Ok9w
dGlvbnM6OlVzZVN5c3RlbUFwcGVhcmFuY2U7CisgICAgICAgIG9wdGlvbnMuYWRkKFN0eWxlQ29s
b3I6Ok9wdGlvbnM6OlVzZVN5c3RlbUFwcGVhcmFuY2UpOwogICAgIGlmICh1c2VEYXJrQXBwZWFy
YW5jZSgpKQotICAgICAgICBvcHRpb25zIHw9IFN0eWxlQ29sb3I6Ok9wdGlvbnM6OlVzZURhcmtB
cHBlYXJhbmNlOworICAgICAgICBvcHRpb25zLmFkZChTdHlsZUNvbG9yOjpPcHRpb25zOjpVc2VE
YXJrQXBwZWFyYW5jZSk7CiAgICAgcmV0dXJuIG9wdGlvbnM7CiB9CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAy
MzU1MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzMxLDcgKzMzMSw3IEBAIHZvaWQgRG9jdW1lbnRNYXJrZXJD
b250cm9sbGVyOjphZGRNYXJrZXIKICAgICAgICAgICAgIGRvd25jYXN0PFJlbmRlckJsb2NrRmxv
dz4oKnJlbmRlcmVyKS5lbnN1cmVMaW5lQm94ZXMoKTsKICAgICB9CiAKLSAgICBtX3Bvc3NpYmx5
RXhpc3RpbmdNYXJrZXJUeXBlcyB8PSBuZXdNYXJrZXIudHlwZSgpOworICAgIG1fcG9zc2libHlF
eGlzdGluZ01hcmtlclR5cGVzLmFkZChuZXdNYXJrZXIudHlwZSgpKTsKIAogICAgIHN0ZDo6dW5p
cXVlX3B0cjxNYXJrZXJMaXN0PiYgbGlzdCA9IG1fbWFya2Vycy5hZGQobm9kZSwgbnVsbHB0ciku
aXRlcmF0b3ItPnZhbHVlOwogCkBAIC01ODcsNyArNTg3LDcgQEAgdm9pZCBEb2N1bWVudE1hcmtl
ckNvbnRyb2xsZXI6OnJlbW92ZU1hcgogICAgICAgICAgICAgcmVtb3ZlTWFya2Vyc0Zyb21MaXN0
KGl0ZXJhdG9yLCBtYXJrZXJUeXBlcyk7CiAgICAgfQogCi0gICAgbV9wb3NzaWJseUV4aXN0aW5n
TWFya2VyVHlwZXMgLT0gbWFya2VyVHlwZXM7CisgICAgbV9wb3NzaWJseUV4aXN0aW5nTWFya2Vy
VHlwZXMucmVtb3ZlKG1hcmtlclR5cGVzKTsKIH0KIAogdm9pZCBEb2N1bWVudE1hcmtlckNvbnRy
b2xsZXI6OnJlbW92ZU1hcmtlcnNGcm9tTGlzdChNYXJrZXJNYXA6Oml0ZXJhdG9yIGl0ZXJhdG9y
LCBPcHRpb25TZXQ8RG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGU+IG1hcmtlclR5cGVzKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxl
ci5jcHAJKHJldmlzaW9uIDIzNTUxNCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRlZEFu
aW1hdGlvbkNvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjEsNyArMTIxLDcgQEAg
dm9pZCBTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXI6OmFkZFRocgogICAgIGlmIChtX3Rocm90
dGxpbmdSZWFzb25zLmNvbnRhaW5zKHJlYXNvbikpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1f
dGhyb3R0bGluZ1JlYXNvbnMgfD0gcmVhc29uOworICAgIG1fdGhyb3R0bGluZ1JlYXNvbnMuYWRk
KHJlYXNvbik7CiAKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJhZGRUaHJvdHRsaW5nUmVh
c29uKCVzKSAtPiAlcyIsIHRocm90dGxpbmdSZWFzb25Ub1N0cmluZyhyZWFzb24pLCB0aHJvdHRs
aW5nUmVhc29uc1RvU3RyaW5nKG1fdGhyb3R0bGluZ1JlYXNvbnMpLnV0ZjgoKS5kYXRhKCkpOwog
CkBAIC0xNDAsNyArMTQwLDcgQEAgdm9pZCBTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXI6OnJl
bW92ZQogICAgIGlmICghbV90aHJvdHRsaW5nUmVhc29ucy5jb250YWlucyhyZWFzb24pKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBtX3Rocm90dGxpbmdSZWFzb25zIC09IHJlYXNvbjsKKyAgICBt
X3Rocm90dGxpbmdSZWFzb25zLnJlbW92ZShyZWFzb24pOwogCiAgICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRCgicmVtb3ZlVGhyb3R0bGluZ1JlYXNvbiglcykgLT4gJXMiLCB0aHJvdHRsaW5nUmVh
c29uVG9TdHJpbmcocmVhc29uKSwgdGhyb3R0bGluZ1JlYXNvbnNUb1N0cmluZyhtX3Rocm90dGxp
bmdSZWFzb25zKS51dGY4KCkuZGF0YSgpKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1Nl
Y3VyaXR5Q29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9TZWN1cml0
eUNvbnRleHQuaAkocmV2aXNpb24gMjM1NTE0KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1NlY3Vy
aXR5Q29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC04OSw3ICs4OSw3IEBAIHB1YmxpYzoKICAg
ICB9OwogCiAgICAgY29uc3QgT3B0aW9uU2V0PE1peGVkQ29udGVudFR5cGU+JiBmb3VuZE1peGVk
Q29udGVudCgpIGNvbnN0IHsgcmV0dXJuIG1fbWl4ZWRDb250ZW50VHlwZXM7IH0KLSAgICB2b2lk
IHNldEZvdW5kTWl4ZWRDb250ZW50KE1peGVkQ29udGVudFR5cGUgdHlwZSkgeyBtX21peGVkQ29u
dGVudFR5cGVzIHw9IHR5cGU7IH0KKyAgICB2b2lkIHNldEZvdW5kTWl4ZWRDb250ZW50KE1peGVk
Q29udGVudFR5cGUgdHlwZSkgeyBtX21peGVkQ29udGVudFR5cGVzLmFkZCh0eXBlKTsgfQogICAg
IGJvb2wgZ2VvbG9jYXRpb25BY2Nlc3NlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZ2VvbG9jYXRpb25B
Y2Nlc3NlZDsgfQogICAgIHZvaWQgc2V0R2VvbG9jYXRpb25BY2Nlc3NlZCgpIHsgbV9nZW9sb2Nh
dGlvbkFjY2Vzc2VkID0gdHJ1ZTsgfQogICAgIGJvb2wgc2VjdXJlQ29va2llc0FjY2Vzc2VkKCkg
Y29uc3QgeyByZXR1cm4gbV9zZWN1cmVDb29raWVzQWNjZXNzZWQ7IH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2RvbS9VSUV2ZW50V2l0aEtleVN0YXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9kb20vVUlFdmVudFdpdGhLZXlTdGF0ZS5jcHAJKHJldmlzaW9uIDIzNTUxNCkKKysr
IFNvdXJjZS9XZWJDb3JlL2RvbS9VSUV2ZW50V2l0aEtleVN0YXRlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjcsMTcgKzI3LDE3IEBAIGF1dG8gVUlFdmVudFdpdGhLZXlTdGF0ZTo6bW9kaWZpZXJz
RnJvbUkKIHsKICAgICBPcHRpb25TZXQ8TW9kaWZpZXI+IHJlc3VsdDsKICAgICBpZiAoaW5pdGlh
bGl6ZXIuY3RybEtleSkKLSAgICAgICAgcmVzdWx0IHw9IE1vZGlmaWVyOjpDdHJsS2V5OworICAg
ICAgICByZXN1bHQuYWRkKE1vZGlmaWVyOjpDdHJsS2V5KTsKICAgICBpZiAoaW5pdGlhbGl6ZXIu
YWx0S2V5KQotICAgICAgICByZXN1bHQgfD0gTW9kaWZpZXI6OkFsdEtleTsKKyAgICAgICAgcmVz
dWx0LmFkZChNb2RpZmllcjo6QWx0S2V5KTsKICAgICBpZiAoaW5pdGlhbGl6ZXIuc2hpZnRLZXkp
Ci0gICAgICAgIHJlc3VsdCB8PSBNb2RpZmllcjo6U2hpZnRLZXk7CisgICAgICAgIHJlc3VsdC5h
ZGQoTW9kaWZpZXI6OlNoaWZ0S2V5KTsKICAgICBpZiAoaW5pdGlhbGl6ZXIubWV0YUtleSkKLSAg
ICAgICAgcmVzdWx0IHw9IE1vZGlmaWVyOjpNZXRhS2V5OworICAgICAgICByZXN1bHQuYWRkKE1v
ZGlmaWVyOjpNZXRhS2V5KTsKICAgICBpZiAoaW5pdGlhbGl6ZXIubW9kaWZpZXJBbHRHcmFwaCkK
LSAgICAgICAgcmVzdWx0IHw9IE1vZGlmaWVyOjpBbHRHcmFwaEtleTsKKyAgICAgICAgcmVzdWx0
LmFkZChNb2RpZmllcjo6QWx0R3JhcGhLZXkpOwogICAgIGlmIChpbml0aWFsaXplci5tb2RpZmll
ckNhcHNMb2NrKQotICAgICAgICByZXN1bHQgfD0gTW9kaWZpZXI6OkNhcHNMb2NrS2V5OworICAg
ICAgICByZXN1bHQuYWRkKE1vZGlmaWVyOjpDYXBzTG9ja0tleSk7CiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIApAQCAtNjMsMTUgKzYzLDE1IEBAIHZvaWQgVUlFdmVudFdpdGhLZXlTdGF0ZTo6c2V0
TW9kaWZpZXJLZXkKIHsKICAgICBPcHRpb25TZXQ8TW9kaWZpZXI+IHJlc3VsdDsKICAgICBpZiAo
Y3RybEtleSkKLSAgICAgICAgcmVzdWx0IHw9IE1vZGlmaWVyOjpDdHJsS2V5OworICAgICAgICBy
ZXN1bHQuYWRkKE1vZGlmaWVyOjpDdHJsS2V5KTsKICAgICBpZiAoYWx0S2V5KQotICAgICAgICBy
ZXN1bHQgfD0gTW9kaWZpZXI6OkFsdEtleTsKKyAgICAgICAgcmVzdWx0LmFkZChNb2RpZmllcjo6
QWx0S2V5KTsKICAgICBpZiAoc2hpZnRLZXkpCi0gICAgICAgIHJlc3VsdCB8PSBNb2RpZmllcjo6
U2hpZnRLZXk7CisgICAgICAgIHJlc3VsdC5hZGQoTW9kaWZpZXI6OlNoaWZ0S2V5KTsKICAgICBp
ZiAobWV0YUtleSkKLSAgICAgICAgcmVzdWx0IHw9IE1vZGlmaWVyOjpNZXRhS2V5OworICAgICAg
ICByZXN1bHQuYWRkKE1vZGlmaWVyOjpNZXRhS2V5KTsKICAgICBpZiAoYWx0R3JhcGhLZXkpCi0g
ICAgICAgIHJlc3VsdCB8PSBNb2RpZmllcjo6QWx0R3JhcGhLZXk7CisgICAgICAgIHJlc3VsdC5h
ZGQoTW9kaWZpZXI6OkFsdEdyYXBoS2V5KTsKICAgICBtX21vZGlmaWVycyA9IHJlc3VsdDsKIH0K
IApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1VzZXJBY3Rpb25FbGVtZW50U2V0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vVXNlckFjdGlvbkVsZW1lbnRTZXQuY3BwCShy
ZXZpc2lvbiAyMzU1MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vVXNlckFjdGlvbkVsZW1lbnRT
ZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Niw3ICs2NiwxMCBAQCB2b2lkIFVzZXJBY3Rpb25F
bGVtZW50U2V0OjpzZXRGbGFncyhFbGVtCiB7CiAgICAgQVNTRVJUKCFmbGFncy5pc0VtcHR5KCkp
OwogCi0gICAgbV9lbGVtZW50cy5hZGQoJmVsZW1lbnQsIE9wdGlvblNldDxGbGFnPiB7IH0pLml0
ZXJhdG9yLT52YWx1ZSB8PSBmbGFnczsKKyAgICBtX2VsZW1lbnRzLmVuc3VyZSgmZWxlbWVudCwg
W10geworICAgICAgICByZXR1cm4gT3B0aW9uU2V0PEZsYWc+KCk7CisgICAgfSkuaXRlcmF0b3It
PnZhbHVlLmFkZChmbGFncyk7CisKICAgICBlbGVtZW50LnNldFVzZXJBY3Rpb25FbGVtZW50KHRy
dWUpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21t
YW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVk
aXRDb21tYW5kLmNwcAkocmV2aXNpb24gMjM1NTE0KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0OTQsNyArMTQ5
NCw3IEBAIHZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6Om1vdmVQYXJhZ3JhcGgKICAgICBBU1NF
UlQoZW5kaW5nU2VsZWN0aW9uKCkuaXNDYXJldE9yUmFuZ2UoKSk7CiAgICAgT3B0aW9uU2V0PFJl
cGxhY2VTZWxlY3Rpb25Db21tYW5kOjpDb21tYW5kT3B0aW9uPiBvcHRpb25zIHsgUmVwbGFjZVNl
bGVjdGlvbkNvbW1hbmQ6OlNlbGVjdFJlcGxhY2VtZW50LCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFu
ZDo6TW92aW5nUGFyYWdyYXBoIH07CiAgICAgaWYgKCFwcmVzZXJ2ZVN0eWxlKQotICAgICAgICBv
cHRpb25zIHw9IFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpNYXRjaFN0eWxlOworICAgICAgICBv
cHRpb25zLmFkZChSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6TWF0Y2hTdHlsZSk7CiAgICAgYXBw
bHlDb21tYW5kVG9Db21wb3NpdGUoUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmNyZWF0ZShkb2N1
bWVudCgpLCBXVEZNb3ZlKGZyYWdtZW50KSwgb3B0aW9ucykpOwogCiAgICAgZnJhbWUoKS5lZGl0
b3IoKS5tYXJrTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hcihlbmRpbmdTZWxlY3Rpb24oKSk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCShyZXZpc2lvbiAyMzU1MTQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYzNCwxMyAr
NjM0LDEzIEBAIHZvaWQgRWRpdG9yOjpyZXBsYWNlU2VsZWN0aW9uV2l0aEZyYWdtZW4KIAogICAg
IE9wdGlvblNldDxSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6Q29tbWFuZE9wdGlvbj4gb3B0aW9u
cyB7IFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpQcmV2ZW50TmVzdGluZywgUmVwbGFjZVNlbGVj
dGlvbkNvbW1hbmQ6OlNhbml0aXplRnJhZ21lbnQgfTsKICAgICBpZiAoc2VsZWN0UmVwbGFjZW1l
bnQpCi0gICAgICAgIG9wdGlvbnMgfD0gUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OlNlbGVjdFJl
cGxhY2VtZW50OworICAgICAgICBvcHRpb25zLmFkZChSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6
U2VsZWN0UmVwbGFjZW1lbnQpOwogICAgIGlmIChzbWFydFJlcGxhY2UpCi0gICAgICAgIG9wdGlv
bnMgfD0gUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OlNtYXJ0UmVwbGFjZTsKKyAgICAgICAgb3B0
aW9ucy5hZGQoUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OlNtYXJ0UmVwbGFjZSk7CiAgICAgaWYg
KG1hdGNoU3R5bGUpCi0gICAgICAgIG9wdGlvbnMgfD0gUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6
Ok1hdGNoU3R5bGU7CisgICAgICAgIG9wdGlvbnMuYWRkKFJlcGxhY2VTZWxlY3Rpb25Db21tYW5k
OjpNYXRjaFN0eWxlKTsKICAgICBpZiAobWFpbEJsb2NrcXVvdGVIYW5kbGluZyA9PSBNYWlsQmxv
Y2txdW90ZUhhbmRsaW5nOjpJZ25vcmVCbG9ja3F1b3RlKQotICAgICAgICBvcHRpb25zIHw9IFJl
cGxhY2VTZWxlY3Rpb25Db21tYW5kOjpJZ25vcmVNYWlsQmxvY2txdW90ZTsKKyAgICAgICAgb3B0
aW9ucy5hZGQoUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6Oklnbm9yZU1haWxCbG9ja3F1b3RlKTsK
IAogICAgIGF1dG8gY29tbWFuZCA9IFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpjcmVhdGUoZG9j
dW1lbnQoKSwgJmZyYWdtZW50LCBvcHRpb25zLCBlZGl0aW5nQWN0aW9uKTsKICAgICBjb21tYW5k
LT5hcHBseSgpOwpAQCAtMTA3Myw3ICsxMDczLDcgQEAgdm9pZCBFZGl0b3I6OmFwcGxpZWRFZGl0
aW5nKENvbXBvc2l0ZUVkaQogICAgICAgICAvLyBEb24ndCBjbGVhciB0aGUgdHlwaW5nIHN0eWxl
IHdpdGggdGhpcyBzZWxlY3Rpb24gY2hhbmdlLiBXZSBkbyB0aG9zZSB0aGluZ3MgZWxzZXdoZXJl
IGlmIG5lY2Vzc2FyeS4KICAgICAgICAgT3B0aW9uU2V0PEZyYW1lU2VsZWN0aW9uOjpTZXRTZWxl
Y3Rpb25PcHRpb24+IG9wdGlvbnM7CiAgICAgICAgIGlmIChjb21tYW5kLmlzRGljdGF0aW9uQ29t
bWFuZCgpKQotICAgICAgICAgICAgb3B0aW9ucyB8PSBGcmFtZVNlbGVjdGlvbjo6RGljdGF0aW9u
VHJpZ2dlcmVkOworICAgICAgICAgICAgb3B0aW9ucy5hZGQoRnJhbWVTZWxlY3Rpb246OkRpY3Rh
dGlvblRyaWdnZXJlZCk7CiAKICAgICAgICAgY2hhbmdlU2VsZWN0aW9uQWZ0ZXJDb21tYW5kKG5l
d1NlbGVjdGlvbiwgb3B0aW9ucyk7CiAgICAgfQpAQCAtMjMzOSw3ICsyMzM5LDcgQEAgdm9pZCBF
ZGl0b3I6Om1hcmtNaXNzcGVsbGluZ3NBZnRlclR5cGluZwogICAgIFVOVVNFRF9QQVJBTShkb1Jl
cGxhY2VtZW50KTsKICAgICBPcHRpb25TZXQ8VGV4dENoZWNraW5nVHlwZT4gdGV4dENoZWNraW5n
T3B0aW9uczsKICAgICBpZiAoaXNDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoKSkKLSAg
ICAgICAgdGV4dENoZWNraW5nT3B0aW9ucyB8PSBUZXh0Q2hlY2tpbmdUeXBlOjpTcGVsbGluZzsK
KyAgICAgICAgdGV4dENoZWNraW5nT3B0aW9ucy5hZGQoVGV4dENoZWNraW5nVHlwZTo6U3BlbGxp
bmcpOwogICAgIGlmICghdGV4dENoZWNraW5nT3B0aW9ucy5jb250YWlucyhUZXh0Q2hlY2tpbmdU
eXBlOjpTcGVsbGluZykpCiAgICAgICAgIHJldHVybjsKIApAQCAtMjM1Nyw3ICsyMzU3LDcgQEAg
dm9pZCBFZGl0b3I6Om1hcmtNaXNzcGVsbGluZ3NBZnRlclR5cGluZwogICAgICAgICBPcHRpb25T
ZXQ8VGV4dENoZWNraW5nVHlwZT4gdGV4dENoZWNraW5nT3B0aW9uczsKIAogICAgICAgICBpZiAo
aXNDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoKSkKLSAgICAgICAgICAgIHRleHRDaGVj
a2luZ09wdGlvbnMgfD0gVGV4dENoZWNraW5nVHlwZTo6U3BlbGxpbmc7CisgICAgICAgICAgICB0
ZXh0Q2hlY2tpbmdPcHRpb25zLmFkZChUZXh0Q2hlY2tpbmdUeXBlOjpTcGVsbGluZyk7CiAKICNp
ZiBVU0UoQVVUT01BVElDX1RFWFRfUkVQTEFDRU1FTlQpCiAgICAgICAgIGlmIChkb1JlcGxhY2Vt
ZW50CkBAIC0yMzY2LDEzICsyMzY2LDEzIEBAIHZvaWQgRWRpdG9yOjptYXJrTWlzc3BlbGxpbmdz
QWZ0ZXJUeXBpbmcKICAgICAgICAgICAgICAgICB8fCBpc0F1dG9tYXRpY0Rhc2hTdWJzdGl0dXRp
b25FbmFibGVkKCkKICAgICAgICAgICAgICAgICB8fCBpc0F1dG9tYXRpY1RleHRSZXBsYWNlbWVu
dEVuYWJsZWQoKQogICAgICAgICAgICAgICAgIHx8ICh0ZXh0Q2hlY2tpbmdPcHRpb25zLmNvbnRh
aW5zKFRleHRDaGVja2luZ1R5cGU6OlNwZWxsaW5nKSAmJiBpc0F1dG9tYXRpY1NwZWxsaW5nQ29y
cmVjdGlvbkVuYWJsZWQoKSkpKQotICAgICAgICAgICAgdGV4dENoZWNraW5nT3B0aW9ucyB8PSBU
ZXh0Q2hlY2tpbmdUeXBlOjpSZXBsYWNlbWVudDsKKyAgICAgICAgICAgIHRleHRDaGVja2luZ09w
dGlvbnMuYWRkKFRleHRDaGVja2luZ1R5cGU6OlJlcGxhY2VtZW50KTsKICNlbmRpZgogICAgICAg
ICBpZiAoIXRleHRDaGVja2luZ09wdGlvbnMuY29udGFpbnMoVGV4dENoZWNraW5nVHlwZTo6U3Bl
bGxpbmcpICYmICF0ZXh0Q2hlY2tpbmdPcHRpb25zLmNvbnRhaW5zKFRleHRDaGVja2luZ1R5cGU6
OlJlcGxhY2VtZW50KSkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBpZiAoaXNHcmFt
bWFyQ2hlY2tpbmdFbmFibGVkKCkpCi0gICAgICAgICAgICB0ZXh0Q2hlY2tpbmdPcHRpb25zIHw9
IFRleHRDaGVja2luZ1R5cGU6OkdyYW1tYXI7CisgICAgICAgICAgICB0ZXh0Q2hlY2tpbmdPcHRp
b25zLmFkZChUZXh0Q2hlY2tpbmdUeXBlOjpHcmFtbWFyKTsKIAogICAgICAgICBhdXRvIHNlbnRl
bmNlU3RhcnQgPSBzdGFydE9mU2VudGVuY2Uod29yZFN0YXJ0KTsKICAgICAgICAgYXV0byBzZW50
ZW5jZUVuZCA9IGVuZE9mU2VudGVuY2Uod29yZFN0YXJ0KTsKQEAgLTI4MzgsNyArMjgzOCw3IEBA
IHZvaWQgRWRpdG9yOjptYXJrTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW0KICAgICAgICAgLy8gbWFy
a01pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXIoKSBpcyB0cmlnZ2VyZWQgYnkgc2VsZWN0aW9uIGNo
YW5nZSwgaW4gd2hpY2ggY2FzZSB3ZSBjaGVjayBzcGVsbGluZyBhbmQgZ3JhbW1hciwgYnV0IGRv
bid0IGF1dG9jb3JyZWN0IG1pc3NwZWxsaW5ncy4KICAgICAgICAgT3B0aW9uU2V0PFRleHRDaGVj
a2luZ1R5cGU+IHRleHRDaGVja2luZ09wdGlvbnMgeyBUZXh0Q2hlY2tpbmdUeXBlOjpTcGVsbGlu
ZyB9OwogICAgICAgICBpZiAobWFya0dyYW1tYXIgJiYgaXNHcmFtbWFyQ2hlY2tpbmdFbmFibGVk
KCkpCi0gICAgICAgICAgICB0ZXh0Q2hlY2tpbmdPcHRpb25zIHw9IFRleHRDaGVja2luZ1R5cGU6
OkdyYW1tYXI7CisgICAgICAgICAgICB0ZXh0Q2hlY2tpbmdPcHRpb25zLmFkZChUZXh0Q2hlY2tp
bmdUeXBlOjpHcmFtbWFyKTsKICAgICAgICAgYXV0byBzcGVsbENoZWNraW5nUmFuZ2UgPSBzcGVs
bGluZ1NlbGVjdGlvbi50b05vcm1hbGl6ZWRSYW5nZSgpOwogICAgICAgICBtYXJrQWxsTWlzc3Bl
bGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKHRleHRDaGVja2luZ09wdGlvbnMsIHNwZWxsQ2hl
Y2tpbmdSYW5nZS5jb3B5UmVmKCksIHNwZWxsQ2hlY2tpbmdSYW5nZS5jb3B5UmVmKCksIGdyYW1t
YXJTZWxlY3Rpb24udG9Ob3JtYWxpemVkUmFuZ2UoKSk7CiAgICAgICAgIHJldHVybjsKQEAgLTM3
MzMsMzAgKzM3MzMsMzAgQEAgT3B0aW9uU2V0PFRleHRDaGVja2luZ1R5cGU+IEVkaXRvcjo6cmVz
bwogCiAgICAgT3B0aW9uU2V0PFRleHRDaGVja2luZ1R5cGU+IGNoZWNraW5nVHlwZXM7CiAgICAg
aWYgKHNob3VsZE1hcmtTcGVsbGluZykKLSAgICAgICAgY2hlY2tpbmdUeXBlcyB8PSBUZXh0Q2hl
Y2tpbmdUeXBlOjpTcGVsbGluZzsKKyAgICAgICAgY2hlY2tpbmdUeXBlcy5hZGQoVGV4dENoZWNr
aW5nVHlwZTo6U3BlbGxpbmcpOwogICAgIGlmIChzaG91bGRNYXJrR3JhbW1hcikKLSAgICAgICAg
Y2hlY2tpbmdUeXBlcyB8PSBUZXh0Q2hlY2tpbmdUeXBlOjpHcmFtbWFyOworICAgICAgICBjaGVj
a2luZ1R5cGVzLmFkZChUZXh0Q2hlY2tpbmdUeXBlOjpHcmFtbWFyKTsKICNpZiAhUExBVEZPUk0o
SU9TKQogICAgIGlmIChzaG91bGRDaGVja0ZvckNvcnJlY3Rpb24pCi0gICAgICAgIGNoZWNraW5n
VHlwZXMgfD0gVGV4dENoZWNraW5nVHlwZTo6Q29ycmVjdGlvbjsKKyAgICAgICAgY2hlY2tpbmdU
eXBlcy5hZGQoVGV4dENoZWNraW5nVHlwZTo6Q29ycmVjdGlvbik7CiAgICAgaWYgKHNob3VsZFNo
b3dDb3JyZWN0aW9uUGFuZWwpCi0gICAgICAgIGNoZWNraW5nVHlwZXMgfD0gVGV4dENoZWNraW5n
VHlwZTo6U2hvd0NvcnJlY3Rpb25QYW5lbDsKKyAgICAgICAgY2hlY2tpbmdUeXBlcy5hZGQoVGV4
dENoZWNraW5nVHlwZTo6U2hvd0NvcnJlY3Rpb25QYW5lbCk7CiAKICNpZiBVU0UoQVVUT01BVElD
X1RFWFRfUkVQTEFDRU1FTlQpCiAgICAgYm9vbCBzaG91bGRQZXJmb3JtUmVwbGFjZW1lbnQgPSB0
ZXh0Q2hlY2tpbmdPcHRpb25zLmNvbnRhaW5zKFRleHRDaGVja2luZ1R5cGU6OlJlcGxhY2VtZW50
KTsKICAgICBpZiAoc2hvdWxkUGVyZm9ybVJlcGxhY2VtZW50KSB7CiAgICAgICAgIGlmICghb25s
eUFsbG93c1RleHRSZXBsYWNlbWVudCkgewogICAgICAgICAgICAgaWYgKGlzQXV0b21hdGljTGlu
a0RldGVjdGlvbkVuYWJsZWQoKSkKLSAgICAgICAgICAgICAgICBjaGVja2luZ1R5cGVzIHw9IFRl
eHRDaGVja2luZ1R5cGU6Okxpbms7CisgICAgICAgICAgICAgICAgY2hlY2tpbmdUeXBlcy5hZGQo
VGV4dENoZWNraW5nVHlwZTo6TGluayk7CiAgICAgICAgICAgICBpZiAoaXNBdXRvbWF0aWNRdW90
ZVN1YnN0aXR1dGlvbkVuYWJsZWQoKSkKLSAgICAgICAgICAgICAgICBjaGVja2luZ1R5cGVzIHw9
IFRleHRDaGVja2luZ1R5cGU6OlF1b3RlOworICAgICAgICAgICAgICAgIGNoZWNraW5nVHlwZXMu
YWRkKFRleHRDaGVja2luZ1R5cGU6OlF1b3RlKTsKICAgICAgICAgICAgIGlmIChpc0F1dG9tYXRp
Y0Rhc2hTdWJzdGl0dXRpb25FbmFibGVkKCkpCi0gICAgICAgICAgICAgICAgY2hlY2tpbmdUeXBl
cyB8PSBUZXh0Q2hlY2tpbmdUeXBlOjpEYXNoOworICAgICAgICAgICAgICAgIGNoZWNraW5nVHlw
ZXMuYWRkKFRleHRDaGVja2luZ1R5cGU6OkRhc2gpOwogICAgICAgICAgICAgaWYgKHNob3VsZE1h
cmtTcGVsbGluZyAmJiBpc0F1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbkVuYWJsZWQoKSkKLSAg
ICAgICAgICAgICAgICBjaGVja2luZ1R5cGVzIHw9IFRleHRDaGVja2luZ1R5cGU6OkNvcnJlY3Rp
b247CisgICAgICAgICAgICAgICAgY2hlY2tpbmdUeXBlcy5hZGQoVGV4dENoZWNraW5nVHlwZTo6
Q29ycmVjdGlvbik7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGlzQXV0b21hdGljVGV4dFJlcGxh
Y2VtZW50RW5hYmxlZCgpKQotICAgICAgICAgICAgY2hlY2tpbmdUeXBlcyB8PSBUZXh0Q2hlY2tp
bmdUeXBlOjpSZXBsYWNlbWVudDsKKyAgICAgICAgICAgIGNoZWNraW5nVHlwZXMuYWRkKFRleHRD
aGVja2luZ1R5cGU6OlJlcGxhY2VtZW50KTsKICAgICB9CiAjZW5kaWYKICNlbmRpZiAvLyAhUExB
VEZPUk0oSU9TKQpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5j
cHAJKHJldmlzaW9uIDIzNTUxNCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxl
Y3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODcsMTUgKzE4NywxNSBAQCB2b2lkIEZyYW1l
U2VsZWN0aW9uOjptb3ZlV2l0aG91dFZhbGlkYXRpCiAgICAgQVhUZXh0U3RhdGVDaGFuZ2VJbnRl
bnQgbmV3SW50ZW50ID0gaW50ZW50LnR5cGUgPT0gQVhUZXh0U3RhdGVDaGFuZ2VUeXBlVW5rbm93
biA/IEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50KEFYVGV4dFN0YXRlQ2hhbmdlVHlwZVNlbGVjdGlv
bk1vdmUsIEFYVGV4dFNlbGVjdGlvbiB7IEFYVGV4dFNlbGVjdGlvbkRpcmVjdGlvbkRpc2NvbnRp
Z3VvdXMsIEFYVGV4dFNlbGVjdGlvbkdyYW51bGFyaXR5VW5rbm93biwgZmFsc2UgfSkgOiBpbnRl
bnQ7CiAgICAgYXV0byBvcHRpb25zID0gZGVmYXVsdFNldFNlbGVjdGlvbk9wdGlvbnMoKTsKICAg
ICBpZiAoIXNob3VsZFNldEZvY3VzKQotICAgICAgICBvcHRpb25zIHw9IERvTm90U2V0Rm9jdXM7
CisgICAgICAgIG9wdGlvbnMuYWRkKERvTm90U2V0Rm9jdXMpOwogICAgIHN3aXRjaCAocmV2ZWFs
TW9kZSkgewogICAgIGNhc2UgU2VsZWN0aW9uUmV2ZWFsTW9kZTo6RG9Ob3RSZXZlYWw6CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgU2VsZWN0aW9uUmV2ZWFsTW9kZTo6UmV2ZWFsOgotICAgICAg
ICBvcHRpb25zIHw9IFJldmVhbFNlbGVjdGlvbjsKKyAgICAgICAgb3B0aW9ucy5hZGQoUmV2ZWFs
U2VsZWN0aW9uKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTZWxlY3Rpb25SZXZlYWxNb2Rl
OjpSZXZlYWxVcFRvTWFpbkZyYW1lOgotICAgICAgICBvcHRpb25zIHw9IFJldmVhbFNlbGVjdGlv
blVwVG9NYWluRnJhbWU7CisgICAgICAgIG9wdGlvbnMuYWRkKFJldmVhbFNlbGVjdGlvblVwVG9N
YWluRnJhbWUpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgc2V0U2VsZWN0aW9uKG5ld1Nl
bGVjdGlvbiwgb3B0aW9ucywgbmV3SW50ZW50KTsKQEAgLTE5OTUsNyArMTk5NSw3IEBAIGJvb2wg
RnJhbWVTZWxlY3Rpb246OnNldFNlbGVjdGVkUmFuZ2UoUmEKIAogICAgIE9wdGlvblNldDxTZXRT
ZWxlY3Rpb25PcHRpb24+IHNlbGVjdGlvbk9wdGlvbnMgeyAgQ2xlYXJUeXBpbmdTdHlsZSB9Owog
ICAgIGlmIChjbG9zZVR5cGluZykKLSAgICAgICAgc2VsZWN0aW9uT3B0aW9ucyB8PSBDbG9zZVR5
cGluZzsKKyAgICAgICAgc2VsZWN0aW9uT3B0aW9ucy5hZGQoQ2xvc2VUeXBpbmcpOwogCiAgICAg
aWYgKHVzZXJUcmlnZ2VyZWQgPT0gVXNlclRyaWdnZXJlZCkgewogICAgICAgICBGcmFtZVNlbGVj
dGlvbiB0cmlhbEZyYW1lU2VsZWN0aW9uOwpAQCAtMjAwNSw3ICsyMDA1LDcgQEAgYm9vbCBGcmFt
ZVNlbGVjdGlvbjo6c2V0U2VsZWN0ZWRSYW5nZShSYQogICAgICAgICBpZiAoIXNob3VsZENoYW5n
ZVNlbGVjdGlvbih0cmlhbEZyYW1lU2VsZWN0aW9uLnNlbGVjdGlvbigpKSkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgICAgICBzZWxlY3Rpb25PcHRpb25zIHw9IElzVXNlclRyaWdn
ZXJlZDsKKyAgICAgICAgc2VsZWN0aW9uT3B0aW9ucy5hZGQoSXNVc2VyVHJpZ2dlcmVkKTsKICAg
ICB9CiAKICAgICBzZXRTZWxlY3Rpb24obmV3U2VsZWN0aW9uLCBzZWxlY3Rpb25PcHRpb25zKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmgJKHJldmlzaW9uIDIz
NTUxNCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTMzLDcgKzEzMyw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIE9wdGlv
blNldDxTZXRTZWxlY3Rpb25PcHRpb24+IG9wdGlvbnMgeyBDbG9zZVR5cGluZywgQ2xlYXJUeXBp
bmdTdHlsZSB9OwogICAgICAgICBpZiAodXNlclRyaWdnZXJlZCA9PSBVc2VyVHJpZ2dlcmVkKQot
ICAgICAgICAgICAgb3B0aW9ucyB8PSB7IFJldmVhbFNlbGVjdGlvbiwgRmlyZVNlbGVjdEV2ZW50
LCBJc1VzZXJUcmlnZ2VyZWQgfTsKKyAgICAgICAgICAgIG9wdGlvbnMuYWRkKHsgUmV2ZWFsU2Vs
ZWN0aW9uLCBGaXJlU2VsZWN0RXZlbnQsIElzVXNlclRyaWdnZXJlZCB9KTsKICAgICAgICAgcmV0
dXJuIG9wdGlvbnM7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01vdmVT
ZWxlY3Rpb25Db21tYW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L01vdmVTZWxlY3Rpb25Db21tYW5kLmNwcAkocmV2aXNpb24gMjM1NTE0KQorKysgU291cmNlL1dl
YkNvcmUvZWRpdGluZy9Nb3ZlU2VsZWN0aW9uQ29tbWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTg0LDcgKzg0LDcgQEAgdm9pZCBNb3ZlU2VsZWN0aW9uQ29tbWFuZDo6ZG9BcHBseSgpCiAgICAg
fQogICAgIE9wdGlvblNldDxSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6Q29tbWFuZE9wdGlvbj4g
b3B0aW9ucyB7IFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpTZWxlY3RSZXBsYWNlbWVudCwgUmVw
bGFjZVNlbGVjdGlvbkNvbW1hbmQ6OlByZXZlbnROZXN0aW5nIH07CiAgICAgaWYgKG1fc21hcnRJ
bnNlcnQpCi0gICAgICAgIG9wdGlvbnMgfD0gUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OlNtYXJ0
UmVwbGFjZTsKKyAgICAgICAgb3B0aW9ucy5hZGQoUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OlNt
YXJ0UmVwbGFjZSk7CiAKICAgICB7CiAgICAgICAgIGF1dG8gcmVwbGFjZVNlbGVjdGlvbiA9IFJl
cGxhY2VTZWxlY3Rpb25Db21tYW5kOjpjcmVhdGUoZG9jdW1lbnQoKSwgV1RGTW92ZShtX2ZyYWdt
ZW50KSwgb3B0aW9ucywgRWRpdEFjdGlvbkluc2VydEZyb21Ecm9wKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvU3BlbGxDaGVja2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1NwZWxsQ2hlY2tlci5jcHAJKHJldmlzaW9uIDIzNTUxNCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxDaGVja2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjE4
LDkgKzIxOCw5IEBAIHZvaWQgU3BlbGxDaGVja2VyOjpkaWRDaGVja1N1Y2NlZWQoaW50IHMKICAg
ICBpZiAocmVxdWVzdERhdGEuc2VxdWVuY2UoKSA9PSBzZXF1ZW5jZSkgewogICAgICAgICBPcHRp
b25TZXQ8RG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGU+IG1hcmtlclR5cGVzOwogICAgICAgICBp
ZiAocmVxdWVzdERhdGEuY2hlY2tpbmdUeXBlcygpLmNvbnRhaW5zKFRleHRDaGVja2luZ1R5cGU6
OlNwZWxsaW5nKSkKLSAgICAgICAgICAgIG1hcmtlclR5cGVzIHw9IERvY3VtZW50TWFya2VyOjpT
cGVsbGluZzsKKyAgICAgICAgICAgIG1hcmtlclR5cGVzLmFkZChEb2N1bWVudE1hcmtlcjo6U3Bl
bGxpbmcpOwogICAgICAgICBpZiAocmVxdWVzdERhdGEuY2hlY2tpbmdUeXBlcygpLmNvbnRhaW5z
KFRleHRDaGVja2luZ1R5cGU6OkdyYW1tYXIpKQotICAgICAgICAgICAgbWFya2VyVHlwZXMgfD0g
RG9jdW1lbnRNYXJrZXI6OkdyYW1tYXI7CisgICAgICAgICAgICBtYXJrZXJUeXBlcy5hZGQoRG9j
dW1lbnRNYXJrZXI6OkdyYW1tYXIpOwogICAgICAgICBpZiAoIW1hcmtlclR5cGVzLmlzRW1wdHko
KSkKICAgICAgICAgICAgIG1fZnJhbWUuZG9jdW1lbnQoKS0+bWFya2VycygpLnJlbW92ZU1hcmtl
cnMoJm1fcHJvY2Vzc2luZ1JlcXVlc3QtPmNoZWNraW5nUmFuZ2UoKSwgbWFya2VyVHlwZXMpOwog
ICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBl
ci5jcHAJKHJldmlzaW9uIDIzNTUxNCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENo
ZWNraW5nSGVscGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUzLDcgKzM1Myw3IEBAIFN0cmlu
ZyBUZXh0Q2hlY2tpbmdIZWxwZXI6OmZpbmRGaXJzdE1pc3MKICAgICAgICAgICAgICAgICBWZWN0
b3I8VGV4dENoZWNraW5nUmVzdWx0PiByZXN1bHRzOwogICAgICAgICAgICAgICAgIE9wdGlvblNl
dDxUZXh0Q2hlY2tpbmdUeXBlPiBjaGVja2luZ1R5cGVzIHsgVGV4dENoZWNraW5nVHlwZTo6U3Bl
bGxpbmcgfTsKICAgICAgICAgICAgICAgICBpZiAoY2hlY2tHcmFtbWFyKQotICAgICAgICAgICAg
ICAgICAgICBjaGVja2luZ1R5cGVzIHw9IFRleHRDaGVja2luZ1R5cGU6OkdyYW1tYXI7CisgICAg
ICAgICAgICAgICAgICAgIGNoZWNraW5nVHlwZXMuYWRkKFRleHRDaGVja2luZ1R5cGU6OkdyYW1t
YXIpOwogICAgICAgICAgICAgICAgIFZpc2libGVTZWxlY3Rpb24gY3VycmVudFNlbGVjdGlvbjsK
ICAgICAgICAgICAgICAgICBpZiAoRnJhbWUqIGZyYW1lID0gcGFyYWdyYXBoUmFuZ2UtPm93bmVy
RG9jdW1lbnQoKS5mcmFtZSgpKQogICAgICAgICAgICAgICAgICAgICBjdXJyZW50U2VsZWN0aW9u
ID0gZnJhbWUtPnNlbGVjdGlvbigpLnNlbGVjdGlvbigpOwpAQCAtNTg3LDcgKzU4Nyw3IEBAIFZl
Y3RvcjxTdHJpbmc+IFRleHRDaGVja2luZ0hlbHBlcjo6Z3Vlc3MKICAgICBWZWN0b3I8VGV4dENo
ZWNraW5nUmVzdWx0PiByZXN1bHRzOwogICAgIE9wdGlvblNldDxUZXh0Q2hlY2tpbmdUeXBlPiBj
aGVja2luZ1R5cGVzIHsgVGV4dENoZWNraW5nVHlwZTo6U3BlbGxpbmcgfTsKICAgICBpZiAoY2hl
Y2tHcmFtbWFyKQotICAgICAgICBjaGVja2luZ1R5cGVzIHw9IFRleHRDaGVja2luZ1R5cGU6Okdy
YW1tYXI7CisgICAgICAgIGNoZWNraW5nVHlwZXMuYWRkKFRleHRDaGVja2luZ1R5cGU6OkdyYW1t
YXIpOwogICAgIFZpc2libGVTZWxlY3Rpb24gY3VycmVudFNlbGVjdGlvbjsKICAgICBpZiAoRnJh
bWUqIGZyYW1lID0gbV9yYW5nZS0+b3duZXJEb2N1bWVudCgpLmZyYW1lKCkpCiAgICAgICAgIGN1
cnJlbnRTZWxlY3Rpb24gPSBmcmFtZS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCShyZXZpc2lvbiAyMzU1MTQpCisr
KyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTIwOTcsNyArMjA5Nyw3IEBAIGlubGluZSBTZWFyY2hCdWZmZXI6OlNlYXJjaEJ1ZmZlcihj
b25zdCAKICAgICAgICAgLy8gQ2hhcmFjdGVycyBpbiB0aGUgc2VwYXJhdG9yIGNhdGVnb3J5IG5l
dmVyIHJlYWxseSBvY2N1ciBhdCB0aGUgYmVnaW5uaW5nIG9mIGEgd29yZCwKICAgICAgICAgLy8g
c28gaWYgdGhlIHRhcmdldCBiZWdpbnMgd2l0aCBzdWNoIGEgY2hhcmFjdGVyLCB3ZSBqdXN0IGln
bm9yZSB0aGUgQXRXb3JkU3RhcnQgb3B0aW9uLgogICAgICAgICBpZiAoaXNTZXBhcmF0b3IodGFy
Z2V0Rmlyc3RDaGFyYWN0ZXIpKSB7Ci0gICAgICAgICAgICBtX29wdGlvbnMgLT0gQXRXb3JkU3Rh
cnRzOworICAgICAgICAgICAgbV9vcHRpb25zLnJlbW92ZShBdFdvcmRTdGFydHMpOwogICAgICAg
ICAgICAgbV9uZWVkc01vcmVDb250ZXh0ID0gZmFsc2U7CiAgICAgICAgIH0KICAgICB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcAkocmV2aXNpb24gMjM1
NTE0KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI1Nyw5ICsyNTcsOSBAQCB2b2lkIEhUTUxBbmNob3JFbGVtZW50OjpwYXJz
ZUF0dHJpYnV0ZShjCiAgICAgICAgIGNvbnN0IGJvb2wgc2hvdWxkRm9sZENhc2UgPSB0cnVlOwog
ICAgICAgICBTcGFjZVNwbGl0U3RyaW5nIHJlbFZhbHVlKHZhbHVlLCBzaG91bGRGb2xkQ2FzZSk7
CiAgICAgICAgIGlmIChyZWxWYWx1ZS5jb250YWlucyhub1JlZmVycmVyKSkKLSAgICAgICAgICAg
IG1fbGlua1JlbGF0aW9ucyB8PSBSZWxhdGlvbjo6Tm9SZWZlcnJlcjsKKyAgICAgICAgICAgIG1f
bGlua1JlbGF0aW9ucy5hZGQoUmVsYXRpb246Ok5vUmVmZXJyZXIpOwogICAgICAgICBpZiAocmVs
VmFsdWUuY29udGFpbnMobm9PcGVuZXIpKQotICAgICAgICAgICAgbV9saW5rUmVsYXRpb25zIHw9
IFJlbGF0aW9uOjpOb09wZW5lcjsKKyAgICAgICAgICAgIG1fbGlua1JlbGF0aW9ucy5hZGQoUmVs
YXRpb246Ok5vT3BlbmVyKTsKICAgICAgICAgaWYgKG1fcmVsTGlzdCkKICAgICAgICAgICAgIG1f
cmVsTGlzdC0+YXNzb2NpYXRlZEF0dHJpYnV0ZVZhbHVlQ2hhbmdlZCh2YWx1ZSk7CiAgICAgfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yUGFnZUFnZW50LmNwcAkocmV2aXNpb24gMjM1NTE0KQorKysgU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
MTksOSArMzE5LDkgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnJlbG9hZChFcnJvclN0cgog
CiAgICAgT3B0aW9uU2V0PFJlbG9hZE9wdGlvbj4gcmVsb2FkT3B0aW9uczsKICAgICBpZiAocmVs
b2FkRnJvbU9yaWdpbikKLSAgICAgICAgcmVsb2FkT3B0aW9ucyB8PSBSZWxvYWRPcHRpb246OkZy
b21PcmlnaW47CisgICAgICAgIHJlbG9hZE9wdGlvbnMuYWRkKFJlbG9hZE9wdGlvbjo6RnJvbU9y
aWdpbik7CiAgICAgaWYgKCFyZXZhbGlkYXRlQWxsUmVzb3VyY2VzKQotICAgICAgICByZWxvYWRP
cHRpb25zIHw9IFJlbG9hZE9wdGlvbjo6RXhwaXJlZE9ubHk7CisgICAgICAgIHJlbG9hZE9wdGlv
bnMuYWRkKFJlbG9hZE9wdGlvbjo6RXhwaXJlZE9ubHkpOwogCiAgICAgbV9wYWdlLm1haW5GcmFt
ZSgpLmxvYWRlcigpLnJlbG9hZChyZWxvYWRPcHRpb25zKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDIzNTUxNCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzY5LDcgKzM2OSw3IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpj
b250ZXh0TWVudUkKICAgICAgICAgICAgICAgICBmcmFtZS0+c2VsZWN0aW9uKCkuc2V0U2VsZWN0
aW9uKHdvcmRTZWxlY3Rpb24pOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAg
ICBBU1NFUlQoZnJhbWUtPmVkaXRvcigpLnNlbGVjdGVkVGV4dCgpLmxlbmd0aCgpKTsKLSAgICAg
ICAgICAgICAgICByZXBsYWNlT3B0aW9ucyB8PSBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6U2Vs
ZWN0UmVwbGFjZW1lbnQ7CisgICAgICAgICAgICAgICAgcmVwbGFjZU9wdGlvbnMuYWRkKFJlcGxh
Y2VTZWxlY3Rpb25Db21tYW5kOjpTZWxlY3RSZXBsYWNlbWVudCk7CiAgICAgICAgICAgICB9CiAK
ICAgICAgICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGZyYW1lLT5kb2N1bWVudCgpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAkocmV2aXNpb24gMjM1NTE0KQorKysgU291cmNl
L1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjIxLDE0ICsx
MjIxLDE0IEBAIGJvb2wgRE9NV2luZG93OjpmaW5kKGNvbnN0IFN0cmluZyYgc3RyaW4KICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gRklYTUUgKDEzMDE2KTogU3VwcG9ydCB3aG9sZVdv
cmQsIHNlYXJjaEluRnJhbWVzIGFuZCBzaG93RGlhbG9nLiAgICAKLSAgICBGaW5kT3B0aW9ucyBv
cHRpb25zOworICAgIEZpbmRPcHRpb25zIG9wdGlvbnMgeyBEb05vdFRyYXZlcnNlRmxhdFRyZWUg
fTsKICAgICBpZiAoYmFja3dhcmRzKQotICAgICAgICBvcHRpb25zIHw9IEJhY2t3YXJkczsKKyAg
ICAgICAgb3B0aW9ucy5hZGQoQmFja3dhcmRzKTsKICAgICBpZiAoIWNhc2VTZW5zaXRpdmUpCi0g
ICAgICAgIG9wdGlvbnMgfD0gQ2FzZUluc2Vuc2l0aXZlOworICAgICAgICBvcHRpb25zLmFkZChD
YXNlSW5zZW5zaXRpdmUpOwogICAgIGlmICh3cmFwKQotICAgICAgICBvcHRpb25zIHw9IFdyYXBB
cm91bmQ7Ci0gICAgcmV0dXJuIG1fZnJhbWUtPmVkaXRvcigpLmZpbmRTdHJpbmcoc3RyaW5nLCBv
cHRpb25zIHwgRG9Ob3RUcmF2ZXJzZUZsYXRUcmVlKTsKKyAgICAgICAgb3B0aW9ucy5hZGQoV3Jh
cEFyb3VuZCk7CisgICAgcmV0dXJuIG1fZnJhbWUtPmVkaXRvcigpLmZpbmRTdHJpbmcoc3RyaW5n
LCBvcHRpb25zKTsKIH0KIAogYm9vbCBET01XaW5kb3c6Om9mZnNjcmVlbkJ1ZmZlcmluZygpIGNv
bnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAkocmV2aXNpb24g
MjM1NTE0KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTYxOSw5ICs2MTksOSBAQCBib29sIERyYWdDb250cm9sbGVyOjpjb25jbHVk
ZUVkaXREcmFnKGNvCiAgICAgICAgICAgICBpZiAoc2V0U2VsZWN0aW9uVG9EcmFnQ2FyZXQoaW5u
ZXJGcmFtZS5nZXQoKSwgZHJhZ0NhcmV0LCByYW5nZSwgcG9pbnQpKSB7CiAgICAgICAgICAgICAg
ICAgT3B0aW9uU2V0PFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpDb21tYW5kT3B0aW9uPiBvcHRp
b25zIHsgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OlNlbGVjdFJlcGxhY2VtZW50LCBSZXBsYWNl
U2VsZWN0aW9uQ29tbWFuZDo6UHJldmVudE5lc3RpbmcgfTsKICAgICAgICAgICAgICAgICBpZiAo
ZHJhZ0RhdGEuY2FuU21hcnRSZXBsYWNlKCkpCi0gICAgICAgICAgICAgICAgICAgIG9wdGlvbnMg
fD0gUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OlNtYXJ0UmVwbGFjZTsKKyAgICAgICAgICAgICAg
ICAgICAgb3B0aW9ucy5hZGQoUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OlNtYXJ0UmVwbGFjZSk7
CiAgICAgICAgICAgICAgICAgaWYgKGNob3NlUGxhaW5UZXh0KQotICAgICAgICAgICAgICAgICAg
ICBvcHRpb25zIHw9IFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpNYXRjaFN0eWxlOworICAgICAg
ICAgICAgICAgICAgICBvcHRpb25zLmFkZChSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6TWF0Y2hT
dHlsZSk7CiAgICAgICAgICAgICAgICAgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmNyZWF0ZSgq
bV9kb2N1bWVudFVuZGVyTW91c2UsIGZyYWdtZW50LnJlbGVhc2VOb25OdWxsKCksIG9wdGlvbnMs
IEVkaXRBY3Rpb25JbnNlcnRGcm9tRHJvcCktPmFwcGx5KCk7CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVTbmFwc2hvdHRpbmcuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVTbmFwc2hvdHRpbmcuY3BwCShy
ZXZpc2lvbiAyMzU1MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lU25hcHNob3R0aW5n
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTIsMTMgKzkyLDEzIEBAIHN0ZDo6dW5pcXVlX3B0cjxJ
bWFnZUJ1ZmZlcj4gc25hcHNob3RGcmEKIAogICAgIGF1dG8gcGFpbnRCZWhhdmlvciA9IHN0YXRl
LnBhaW50QmVoYXZpb3I7CiAgICAgaWYgKG9wdGlvbnMgJiBTbmFwc2hvdE9wdGlvbnNGb3JjZUJs
YWNrVGV4dCkKLSAgICAgICAgcGFpbnRCZWhhdmlvciB8PSBQYWludEJlaGF2aW9yOjpGb3JjZUJs
YWNrVGV4dDsKKyAgICAgICAgcGFpbnRCZWhhdmlvci5hZGQoUGFpbnRCZWhhdmlvcjo6Rm9yY2VC
bGFja1RleHQpOwogICAgIGlmIChvcHRpb25zICYgU25hcHNob3RPcHRpb25zUGFpbnRTZWxlY3Rp
b25Pbmx5KQotICAgICAgICBwYWludEJlaGF2aW9yIHw9IFBhaW50QmVoYXZpb3I6OlNlbGVjdGlv
bk9ubHk7CisgICAgICAgIHBhaW50QmVoYXZpb3IuYWRkKFBhaW50QmVoYXZpb3I6OlNlbGVjdGlv
bk9ubHkpOwogICAgIGlmIChvcHRpb25zICYgU25hcHNob3RPcHRpb25zUGFpbnRTZWxlY3Rpb25B
bmRCYWNrZ3JvdW5kc09ubHkpCi0gICAgICAgIHBhaW50QmVoYXZpb3IgfD0gUGFpbnRCZWhhdmlv
cjo6U2VsZWN0aW9uQW5kQmFja2dyb3VuZHNPbmx5OworICAgICAgICBwYWludEJlaGF2aW9yLmFk
ZChQYWludEJlaGF2aW9yOjpTZWxlY3Rpb25BbmRCYWNrZ3JvdW5kc09ubHkpOwogICAgIGlmIChv
cHRpb25zICYgU25hcHNob3RPcHRpb25zUGFpbnRFdmVyeXRoaW5nRXhjbHVkaW5nU2VsZWN0aW9u
KQotICAgICAgICBwYWludEJlaGF2aW9yIHw9IFBhaW50QmVoYXZpb3I6OkV4Y2x1ZGVTZWxlY3Rp
b247CisgICAgICAgIHBhaW50QmVoYXZpb3IuYWRkKFBhaW50QmVoYXZpb3I6OkV4Y2x1ZGVTZWxl
Y3Rpb24pOwogCiAgICAgLy8gT3RoZXIgcGFpbnQgYmVoYXZpb3JzIGFyZSBzZXQgYnkgcGFpbnRD
b250ZW50c0ZvclNuYXBzaG90LgogICAgIGZyYW1lLnZpZXcoKS0+c2V0UGFpbnRCZWhhdmlvcihw
YWludEJlaGF2aW9yKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAJKHJldmlzaW9u
IDIzNTUxNCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTQwLDExICsxNDAsMTEgQEAgc3RhdGljIE9wdGlvblNldDxSZW5kZXJMYXllcjo6
VXBkYXRlTGF5ZQogewogICAgIGF1dG8gZmxhZ3MgPSBSZW5kZXJMYXllcjo6dXBkYXRlTGF5ZXJQ
b3NpdGlvbnNEZWZhdWx0RmxhZ3MoKTsKICAgICBpZiAoZGlkRnVsbFJlcGFpbnQpIHsKLSAgICAg
ICAgZmxhZ3MgLT0gUmVuZGVyTGF5ZXI6OkNoZWNrRm9yUmVwYWludDsKLSAgICAgICAgZmxhZ3Mg
fD0gUmVuZGVyTGF5ZXI6Ok5lZWRzRnVsbFJlcGFpbnRJbkJhY2tpbmc7CisgICAgICAgIGZsYWdz
LnJlbW92ZShSZW5kZXJMYXllcjo6Q2hlY2tGb3JSZXBhaW50KTsKKyAgICAgICAgZmxhZ3MuYWRk
KFJlbmRlckxheWVyOjpOZWVkc0Z1bGxSZXBhaW50SW5CYWNraW5nKTsKICAgICB9CiAgICAgaWYg
KGlzUmVsYXlvdXRpbmdTdWJ0cmVlICYmIGxheWVyLT5lbmNsb3NpbmdQYWdpbmF0aW9uTGF5ZXIo
UmVuZGVyTGF5ZXI6OkluY2x1ZGVDb21wb3NpdGVkUGFnaW5hdGVkTGF5ZXJzKSkKLSAgICAgICAg
ZmxhZ3MgfD0gUmVuZGVyTGF5ZXI6OlVwZGF0ZVBhZ2luYXRpb247CisgICAgICAgIGZsYWdzLmFk
ZChSZW5kZXJMYXllcjo6VXBkYXRlUGFnaW5hdGlvbik7CiAgICAgcmV0dXJuIGZsYWdzOwogfQog
CkBAIC00MDY4LDE4ICs0MDY4LDE4IEBAIHZvaWQgRnJhbWVWaWV3Ojp3aWxsUGFpbnRDb250ZW50
cyhHcmFwaGkKICAgICAKICAgICBpZiAoRnJhbWVWaWV3KiBwYXJlbnRWaWV3ID0gcGFyZW50RnJh
bWVWaWV3KCkpIHsKICAgICAgICAgaWYgKHBhcmVudFZpZXctPnBhaW50QmVoYXZpb3IoKSAmIFBh
aW50QmVoYXZpb3I6OkZsYXR0ZW5Db21wb3NpdGluZ0xheWVycykKLSAgICAgICAgICAgIG1fcGFp
bnRCZWhhdmlvciB8PSBQYWludEJlaGF2aW9yOjpGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnM7Cisg
ICAgICAgICAgICBtX3BhaW50QmVoYXZpb3IuYWRkKFBhaW50QmVoYXZpb3I6OkZsYXR0ZW5Db21w
b3NpdGluZ0xheWVycyk7CiAgICAgICAgIAogICAgICAgICBpZiAocGFyZW50Vmlldy0+cGFpbnRC
ZWhhdmlvcigpICYgUGFpbnRCZWhhdmlvcjo6U25hcHNob3R0aW5nKQotICAgICAgICAgICAgbV9w
YWludEJlaGF2aW9yIHw9IFBhaW50QmVoYXZpb3I6OlNuYXBzaG90dGluZzsKKyAgICAgICAgICAg
IG1fcGFpbnRCZWhhdmlvci5hZGQoUGFpbnRCZWhhdmlvcjo6U25hcHNob3R0aW5nKTsKICAgICAg
ICAgCiAgICAgICAgIGlmIChwYXJlbnRWaWV3LT5wYWludEJlaGF2aW9yKCkgJiBQYWludEJlaGF2
aW9yOjpUaWxlRmlyc3RQYWludCkKLSAgICAgICAgICAgIG1fcGFpbnRCZWhhdmlvciB8PSBQYWlu
dEJlaGF2aW9yOjpUaWxlRmlyc3RQYWludDsKKyAgICAgICAgICAgIG1fcGFpbnRCZWhhdmlvci5h
ZGQoUGFpbnRCZWhhdmlvcjo6VGlsZUZpcnN0UGFpbnQpOwogICAgIH0KIAogICAgIGlmIChkb2N1
bWVudC0+cHJpbnRpbmcoKSkgewotICAgICAgICBtX3BhaW50QmVoYXZpb3IgfD0gUGFpbnRCZWhh
dmlvcjo6RmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzOwotICAgICAgICBtX3BhaW50QmVoYXZpb3Ig
fD0gUGFpbnRCZWhhdmlvcjo6U25hcHNob3R0aW5nOworICAgICAgICBtX3BhaW50QmVoYXZpb3Iu
YWRkKFBhaW50QmVoYXZpb3I6OkZsYXR0ZW5Db21wb3NpdGluZ0xheWVycyk7CisgICAgICAgIG1f
cGFpbnRCZWhhdmlvci5hZGQoUGFpbnRCZWhhdmlvcjo6U25hcHNob3R0aW5nKTsKICAgICB9CiAK
ICAgICBwYWludGluZ1N0YXRlLmlzRmxhdHRlbmluZ1BhaW50T2ZSb290RnJhbWUgPSAobV9wYWlu
dEJlaGF2aW9yICYgUGFpbnRCZWhhdmlvcjo6RmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzKSAmJiAh
ZnJhbWUoKS5vd25lckVsZW1lbnQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAkocmV2aXNpb24g
MjM1NTE0KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTY0MywxMSArMTY0MywxMSBAQCB2b2lkIFBhZ2U6OnNldElzVmlzaWJsZShib29sIGlzVmlz
aWJsZSkKICAgICBhdXRvIHN0YXRlID0gbV9hY3Rpdml0eVN0YXRlOwogCiAgICAgaWYgKGlzVmlz
aWJsZSkgewotICAgICAgICBzdGF0ZSAtPSBBY3Rpdml0eVN0YXRlOjpJc1Zpc3VhbGx5SWRsZTsK
LSAgICAgICAgc3RhdGUgfD0geyBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUsIEFjdGl2aXR5U3Rh
dGU6OklzVmlzaWJsZU9yT2NjbHVkZWQgfTsKKyAgICAgICAgc3RhdGUucmVtb3ZlKEFjdGl2aXR5
U3RhdGU6OklzVmlzdWFsbHlJZGxlKTsKKyAgICAgICAgc3RhdGUuYWRkKHsgQWN0aXZpdHlTdGF0
ZTo6SXNWaXNpYmxlLCBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGVPck9jY2x1ZGVkIH0pOwogICAg
IH0gZWxzZSB7Ci0gICAgICAgIHN0YXRlIHw9IEFjdGl2aXR5U3RhdGU6OklzVmlzdWFsbHlJZGxl
OwotICAgICAgICBzdGF0ZSAtPSB7IEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSwgQWN0aXZpdHlT
dGF0ZTo6SXNWaXNpYmxlT3JPY2NsdWRlZCB9OworICAgICAgICBzdGF0ZS5hZGQoQWN0aXZpdHlT
dGF0ZTo6SXNWaXN1YWxseUlkbGUpOworICAgICAgICBzdGF0ZS5yZW1vdmUoeyBBY3Rpdml0eVN0
YXRlOjpJc1Zpc2libGUsIEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZU9yT2NjbHVkZWQgfSk7CiAg
ICAgfQogICAgIHNldEFjdGl2aXR5U3RhdGUoc3RhdGUpOwogfQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGFnZS9QZXJmb3JtYW5jZU9ic2VydmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wYWdlL1BlcmZvcm1hbmNlT2JzZXJ2ZXIuY3BwCShyZXZpc2lvbiAyMzU1MTQpCisrKyBT
b3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlT2JzZXJ2ZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02NSw3ICs2NSw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFBlcmZvcm1hbmNlT2JzZXJ2ZXI6
Om8KICAgICBPcHRpb25TZXQ8UGVyZm9ybWFuY2VFbnRyeTo6VHlwZT4gZmlsdGVyOwogICAgIGZv
ciAoY29uc3QgU3RyaW5nJiBlbnRyeVR5cGUgOiBpbml0LmVudHJ5VHlwZXMpIHsKICAgICAgICAg
aWYgKGF1dG8gdHlwZSA9IFBlcmZvcm1hbmNlRW50cnk6OnBhcnNlRW50cnlUeXBlU3RyaW5nKGVu
dHJ5VHlwZSkpCi0gICAgICAgICAgICBmaWx0ZXIgfD0gKnR5cGU7CisgICAgICAgICAgICBmaWx0
ZXIuYWRkKCp0eXBlKTsKICAgICB9CiAKICAgICBpZiAoZmlsdGVyLmlzRW1wdHkoKSkKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvVGV4dEluZGljYXRvci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGFnZS9UZXh0SW5kaWNhdG9yLmNwcAkocmV2aXNpb24gMjM1NTE0KQorKysg
U291cmNlL1dlYkNvcmUvcGFnZS9UZXh0SW5kaWNhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NzgsOCArNzgsOCBAQCBSZWZQdHI8VGV4dEluZGljYXRvcj4gVGV4dEluZGljYXRvcjo6Y3JlCiAg
ICAgVmlzaWJsZVNlbGVjdGlvbiBvbGRTZWxlY3Rpb24gPSBmcmFtZS0+c2VsZWN0aW9uKCkuc2Vs
ZWN0aW9uKCk7CiAgICAgT3B0aW9uU2V0PFRlbXBvcmFyeVNlbGVjdGlvbk9wdGlvbj4gdGVtcG9y
YXJ5U2VsZWN0aW9uT3B0aW9uczsKICNpZiBQTEFURk9STShJT1MpCi0gICAgdGVtcG9yYXJ5U2Vs
ZWN0aW9uT3B0aW9ucyB8PSBUZW1wb3JhcnlTZWxlY3Rpb25PcHRpb25JZ25vcmVTZWxlY3Rpb25D
aGFuZ2VzOwotICAgIHRlbXBvcmFyeVNlbGVjdGlvbk9wdGlvbnMgfD0gVGVtcG9yYXJ5U2VsZWN0
aW9uT3B0aW9uRW5hYmxlQXBwZWFyYW5jZVVwZGF0ZXM7CisgICAgdGVtcG9yYXJ5U2VsZWN0aW9u
T3B0aW9ucy5hZGQoVGVtcG9yYXJ5U2VsZWN0aW9uT3B0aW9uSWdub3JlU2VsZWN0aW9uQ2hhbmdl
cyk7CisgICAgdGVtcG9yYXJ5U2VsZWN0aW9uT3B0aW9ucy5hZGQoVGVtcG9yYXJ5U2VsZWN0aW9u
T3B0aW9uRW5hYmxlQXBwZWFyYW5jZVVwZGF0ZXMpOwogI2VuZGlmCiAgICAgVGVtcG9yYXJ5U2Vs
ZWN0aW9uQ2hhbmdlIHNlbGVjdGlvbkNoYW5nZSgqZnJhbWUsIHsgcmFuZ2UgfSwgdGVtcG9yYXJ5
U2VsZWN0aW9uT3B0aW9ucyk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvV2luZG93RmVh
dHVyZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvV2luZG93RmVhdHVy
ZXMuY3BwCShyZXZpc2lvbiAyMzU1MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1dpbmRvd0Zl
YXR1cmVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIwLDcgKzEyMCw3IEBAIE9wdGlvblNldDxE
aXNhYmxlZEFkYXB0YXRpb25zPiBwYXJzZURpc2EKICAgICBmb3IgKGF1dG8mIG5hbWUgOiBkaXNh
YmxlZEFkYXB0YXRpb25zU3RyaW5nLnNwbGl0KCcsJykpIHsKICAgICAgICAgYXV0byBub3JtYWxp
emVkTmFtZSA9IG5hbWUuc3RyaXBXaGl0ZVNwYWNlKCkuY29udmVydFRvQVNDSUlMb3dlcmNhc2Uo
KTsKICAgICAgICAgaWYgKG5vcm1hbGl6ZWROYW1lID09IHdhdGNoQWRhcHRhdGlvbk5hbWUoKSkK
LSAgICAgICAgICAgIGRpc2FibGVkQWRhcHRhdGlvbnMgfD0gRGlzYWJsZWRBZGFwdGF0aW9uczo6
V2F0Y2g7CisgICAgICAgICAgICBkaXNhYmxlZEFkYXB0YXRpb25zLmFkZChEaXNhYmxlZEFkYXB0
YXRpb25zOjpXYXRjaCk7CiAgICAgfQogICAgIHJldHVybiBkaXNhYmxlZEFkYXB0YXRpb25zOwog
fQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9s
aWN5LmgJKHJldmlzaW9uIDIzNTUxNCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRl
bnRTZWN1cml0eVBvbGljeS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTEsMTEgKzE1MSwxMSBAQCBw
dWJsaWM6CiAgICAgdm9pZCBlbmZvcmNlU2FuZGJveEZsYWdzKFNhbmRib3hGbGFncyBzYW5kYm94
RmxhZ3MpIHsgbV9zYW5kYm94RmxhZ3MgfD0gc2FuZGJveEZsYWdzOyB9CiAgICAgdm9pZCBhZGRI
YXNoQWxnb3JpdGhtc0ZvcklubGluZVNjcmlwdHMoT3B0aW9uU2V0PENvbnRlbnRTZWN1cml0eVBv
bGljeUhhc2hBbGdvcml0aG0+IGhhc2hBbGdvcml0aG1zRm9ySW5saW5lU2NyaXB0cykKICAgICB7
Ci0gICAgICAgIG1faGFzaEFsZ29yaXRobXNGb3JJbmxpbmVTY3JpcHRzIHw9IGhhc2hBbGdvcml0
aG1zRm9ySW5saW5lU2NyaXB0czsKKyAgICAgICAgbV9oYXNoQWxnb3JpdGhtc0ZvcklubGluZVNj
cmlwdHMuYWRkKGhhc2hBbGdvcml0aG1zRm9ySW5saW5lU2NyaXB0cyk7CiAgICAgfQogICAgIHZv
aWQgYWRkSGFzaEFsZ29yaXRobXNGb3JJbmxpbmVTdHlsZXNoZWV0cyhPcHRpb25TZXQ8Q29udGVu
dFNlY3VyaXR5UG9saWN5SGFzaEFsZ29yaXRobT4gaGFzaEFsZ29yaXRobXNGb3JJbmxpbmVTdHls
ZXNoZWV0cykKICAgICB7Ci0gICAgICAgIG1faGFzaEFsZ29yaXRobXNGb3JJbmxpbmVTdHlsZXNo
ZWV0cyB8PSBoYXNoQWxnb3JpdGhtc0ZvcklubGluZVN0eWxlc2hlZXRzOworICAgICAgICBtX2hh
c2hBbGdvcml0aG1zRm9ySW5saW5lU3R5bGVzaGVldHMuYWRkKGhhc2hBbGdvcml0aG1zRm9ySW5s
aW5lU3R5bGVzaGVldHMpOwogICAgIH0KIAogICAgIC8vIFVzZWQgYnkgQ29udGVudFNlY3VyaXR5
UG9saWN5U291cmNlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJp
dHlQb2xpY3lTb3VyY2VMaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdl
L2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0LmNwcAkocmV2aXNpb24gMjM1NTE0
KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNl
TGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3Myw3ICs0NzMsNyBAQCBib29sIENvbnRlbnRT
ZWN1cml0eVBvbGljeVNvdXJjZUxpc3Q6OnBhCiAgICAgaWYgKGRpZ2VzdC0+dmFsdWUuc2l6ZSgp
ID4gQ29udGVudFNlY3VyaXR5UG9saWN5SGFzaDo6bWF4aW11bURpZ2VzdExlbmd0aCkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgbV9oYXNoQWxnb3JpdGhtc1VzZWQgfD0gZGlnZXN0LT5h
bGdvcml0aG07CisgICAgbV9oYXNoQWxnb3JpdGhtc1VzZWQuYWRkKGRpZ2VzdC0+YWxnb3JpdGht
KTsKICAgICBtX2hhc2hlcy5hZGQoV1RGTW92ZSgqZGlnZXN0KSk7CiAgICAgcmV0dXJuIHRydWU7
CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUV2ZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1FdmVudC5oCShyZXZpc2lv
biAyMzU1MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUV2ZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTExNSwxMyArMTE1LDEzIEBAIHByb3RlY3RlZDoKICAgICAgICAgLCBt
X3RpbWVzdGFtcCh0aW1lc3RhbXApCiAgICAgewogICAgICAgICBpZiAoc2hpZnRLZXkpCi0gICAg
ICAgICAgICBtX21vZGlmaWVycyB8PSBNb2RpZmllcjo6U2hpZnRLZXk7CisgICAgICAgICAgICBt
X21vZGlmaWVycy5hZGQoTW9kaWZpZXI6OlNoaWZ0S2V5KTsKICAgICAgICAgaWYgKGN0cmxLZXkp
Ci0gICAgICAgICAgICBtX21vZGlmaWVycyB8PSBNb2RpZmllcjo6Q3RybEtleTsKKyAgICAgICAg
ICAgIG1fbW9kaWZpZXJzLmFkZChNb2RpZmllcjo6Q3RybEtleSk7CiAgICAgICAgIGlmIChhbHRL
ZXkpCi0gICAgICAgICAgICBtX21vZGlmaWVycyB8PSBNb2RpZmllcjo6QWx0S2V5OworICAgICAg
ICAgICAgbV9tb2RpZmllcnMuYWRkKE1vZGlmaWVyOjpBbHRLZXkpOwogICAgICAgICBpZiAobWV0
YUtleSkKLSAgICAgICAgICAgIG1fbW9kaWZpZXJzIHw9IE1vZGlmaWVyOjpNZXRhS2V5OworICAg
ICAgICAgICAgbV9tb2RpZmllcnMuYWRkKE1vZGlmaWVyOjpNZXRhS2V5KTsKICAgICB9CiAKICAg
ICAvLyBFeHBsaWNpdCBwcm90ZWN0ZWQgZGVzdHJ1Y3RvciBzbyB0aGF0IHBlb3BsZSBkb24ndCBh
Y2NpZGVudGFsbHkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybUV2
ZW50RmFjdG9yeUlPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvUGxhdGZvcm1FdmVudEZhY3RvcnlJT1MubW0JKHJldmlzaW9uIDIzNTUxNCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybUV2ZW50RmFjdG9yeUlPUy5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtNDMsMTUgKzQzLDE1IEBAIHN0YXRpYyBPcHRpb25TZXQ8UGxhdGZvcm1FdmVu
dDo6TW9kaWZpZXIKICAgICBPcHRpb25TZXQ8UGxhdGZvcm1FdmVudDo6TW9kaWZpZXI+IG1vZGlm
aWVyczsKIAogICAgIGlmIChldmVudC5tb2RpZmllckZsYWdzICYgV2ViRXZlbnRGbGFnTWFza1No
aWZ0KQotICAgICAgICBtb2RpZmllcnMgfD0gUGxhdGZvcm1FdmVudDo6TW9kaWZpZXI6OlNoaWZ0
S2V5OworICAgICAgICBtb2RpZmllcnMuYWRkKFBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVyOjpTaGlm
dEtleSk7CiAgICAgaWYgKGV2ZW50Lm1vZGlmaWVyRmxhZ3MgJiBXZWJFdmVudEZsYWdNYXNrQ29u
dHJvbCkKLSAgICAgICAgbW9kaWZpZXJzIHw9IFBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVyOjpDdHJs
S2V5OworICAgICAgICBtb2RpZmllcnMuYWRkKFBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVyOjpDdHJs
S2V5KTsKICAgICBpZiAoZXZlbnQubW9kaWZpZXJGbGFncyAmIFdlYkV2ZW50RmxhZ01hc2tBbHRl
cm5hdGUpCi0gICAgICAgIG1vZGlmaWVycyB8PSBQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcjo6QWx0
S2V5OworICAgICAgICBtb2RpZmllcnMuYWRkKFBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVyOjpBbHRL
ZXkpOwogICAgIGlmIChldmVudC5tb2RpZmllckZsYWdzICYgV2ViRXZlbnRGbGFnTWFza0NvbW1h
bmQpCi0gICAgICAgIG1vZGlmaWVycyB8PSBQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcjo6TWV0YUtl
eTsKKyAgICAgICAgbW9kaWZpZXJzLmFkZChQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcjo6TWV0YUtl
eSk7CiAgICAgaWYgKGV2ZW50Lm1vZGlmaWVyRmxhZ3MgJiBXZWJFdmVudEZsYWdNYXNrQWxwaGFT
aGlmdCkKLSAgICAgICAgbW9kaWZpZXJzIHw9IFBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVyOjpDYXBz
TG9ja0tleTsKKyAgICAgICAgbW9kaWZpZXJzLmFkZChQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcjo6
Q2Fwc0xvY2tLZXkpOwogCiAgICAgcmV0dXJuIG1vZGlmaWVyczsKIH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybUV2ZW50RmFjdG9yeU1hYy5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1FdmVudEZhY3RvcnlNYWMu
bW0JKHJldmlzaW9uIDIzNTUxNCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0
Zm9ybUV2ZW50RmFjdG9yeU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNjY2LDE1ICs2NjYsMTUg
QEAgT3B0aW9uU2V0PFBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVyPiBtb2RpZgogICAgIE9wdGlvblNl
dDxQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcj4gbW9kaWZpZXJzOwogCiAgICAgaWYgKGV2ZW50Lm1v
ZGlmaWVyRmxhZ3MgJiBOU0V2ZW50TW9kaWZpZXJGbGFnU2hpZnQpCi0gICAgICAgIG1vZGlmaWVy
cyB8PSBQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcjo6U2hpZnRLZXk7CisgICAgICAgIG1vZGlmaWVy
cy5hZGQoUGxhdGZvcm1FdmVudDo6TW9kaWZpZXI6OlNoaWZ0S2V5KTsKICAgICBpZiAoZXZlbnQu
bW9kaWZpZXJGbGFncyAmIE5TRXZlbnRNb2RpZmllckZsYWdDb250cm9sKQotICAgICAgICBtb2Rp
ZmllcnMgfD0gUGxhdGZvcm1FdmVudDo6TW9kaWZpZXI6OkN0cmxLZXk7CisgICAgICAgIG1vZGlm
aWVycy5hZGQoUGxhdGZvcm1FdmVudDo6TW9kaWZpZXI6OkN0cmxLZXkpOwogICAgIGlmIChldmVu
dC5tb2RpZmllckZsYWdzICYgTlNFdmVudE1vZGlmaWVyRmxhZ09wdGlvbikKLSAgICAgICAgbW9k
aWZpZXJzIHw9IFBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVyOjpBbHRLZXk7CisgICAgICAgIG1vZGlm
aWVycy5hZGQoUGxhdGZvcm1FdmVudDo6TW9kaWZpZXI6OkFsdEtleSk7CiAgICAgaWYgKGV2ZW50
Lm1vZGlmaWVyRmxhZ3MgJiBOU0V2ZW50TW9kaWZpZXJGbGFnQ29tbWFuZCkKLSAgICAgICAgbW9k
aWZpZXJzIHw9IFBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVyOjpNZXRhS2V5OworICAgICAgICBtb2Rp
ZmllcnMuYWRkKFBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVyOjpNZXRhS2V5KTsKICAgICBpZiAoZXZl
bnQubW9kaWZpZXJGbGFncyAmIE5TRXZlbnRNb2RpZmllckZsYWdDYXBzTG9jaykKLSAgICAgICAg
bW9kaWZpZXJzIHw9IFBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVyOjpDYXBzTG9ja0tleTsKKyAgICAg
ICAgbW9kaWZpZXJzLmFkZChQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcjo6Q2Fwc0xvY2tLZXkpOwog
CiAgICAgcmV0dXJuIG1vZGlmaWVyczsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyLmNwcAkocmV2aXNpb24gMjM1NTE0KQorKysgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTU3LDE3ICs1NTcsMTcg
QEAgdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlTGF5ZXJQb3NpdGlvbnMoUgogICAgIC8vIENsZWFy
IHRoZSBJc0NvbXBvc2l0aW5nVXBkYXRlUm9vdCBmbGFnIG9uY2Ugd2UndmUgZm91bmQgdGhlIGZp
cnN0IGNvbXBvc2l0aW5nIGxheWVyIGluIHRoaXMgdXBkYXRlLgogICAgIGJvb2wgaXNVcGRhdGVS
b290ID0gZmxhZ3MuY29udGFpbnMoSXNDb21wb3NpdGluZ1VwZGF0ZVJvb3QpOwogICAgIGlmIChp
c0NvbXBvc2l0ZWQoKSkKLSAgICAgICAgZmxhZ3MgLT0gSXNDb21wb3NpdGluZ1VwZGF0ZVJvb3Q7
CisgICAgICAgIGZsYWdzLnJlbW92ZShJc0NvbXBvc2l0aW5nVXBkYXRlUm9vdCk7CiAKICAgICBp
ZiAocmVuZGVyZXIoKS5pc0luRmxvd1JlbmRlckZyYWdtZW50ZWRGbG93KCkpIHsKICAgICAgICAg
dXBkYXRlUGFnaW5hdGlvbigpOwotICAgICAgICBmbGFncyB8PSBVcGRhdGVQYWdpbmF0aW9uOwor
ICAgICAgICBmbGFncy5hZGQoVXBkYXRlUGFnaW5hdGlvbik7CiAgICAgfQogCiAgICAgaWYgKHRy
YW5zZm9ybSgpKSB7Ci0gICAgICAgIGZsYWdzIHw9IFNlZW5UcmFuc2Zvcm1lZExheWVyOworICAg
ICAgICBmbGFncy5hZGQoU2VlblRyYW5zZm9ybWVkTGF5ZXIpOwogICAgICAgICBpZiAoIXRyYW5z
Zm9ybSgpLT5pc0FmZmluZSgpKQotICAgICAgICAgICAgZmxhZ3MgfD0gU2VlbjNEVHJhbnNmb3Jt
ZWRMYXllcjsKKyAgICAgICAgICAgIGZsYWdzLmFkZChTZWVuM0RUcmFuc2Zvcm1lZExheWVyKTsK
ICAgICB9CiAKICAgICBmb3IgKFJlbmRlckxheWVyKiBjaGlsZCA9IGZpcnN0Q2hpbGQoKTsgY2hp
bGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpCkBAIC01NzYsOSArNTc2LDkgQEAgdm9p
ZCBSZW5kZXJMYXllcjo6dXBkYXRlTGF5ZXJQb3NpdGlvbnMoUgogICAgIGlmICgoZmxhZ3MgJiBV
cGRhdGVDb21wb3NpdGluZ0xheWVycykgJiYgaXNDb21wb3NpdGVkKCkpIHsKICAgICAgICAgT3B0
aW9uU2V0PFJlbmRlckxheWVyQmFja2luZzo6VXBkYXRlQWZ0ZXJMYXlvdXRGbGFncz4gdXBkYXRl
RmxhZ3M7CiAgICAgICAgIGlmIChmbGFncyAmIE5lZWRzRnVsbFJlcGFpbnRJbkJhY2tpbmcpCi0g
ICAgICAgICAgICB1cGRhdGVGbGFncyB8PSBSZW5kZXJMYXllckJhY2tpbmc6OlVwZGF0ZUFmdGVy
TGF5b3V0RmxhZ3M6Ok5lZWRzRnVsbFJlcGFpbnQ7CisgICAgICAgICAgICB1cGRhdGVGbGFncy5h
ZGQoUmVuZGVyTGF5ZXJCYWNraW5nOjpVcGRhdGVBZnRlckxheW91dEZsYWdzOjpOZWVkc0Z1bGxS
ZXBhaW50KTsKICAgICAgICAgaWYgKGlzVXBkYXRlUm9vdCkKLSAgICAgICAgICAgIHVwZGF0ZUZs
YWdzIHw9IFJlbmRlckxheWVyQmFja2luZzo6VXBkYXRlQWZ0ZXJMYXlvdXRGbGFnczo6SXNVcGRh
dGVSb290OworICAgICAgICAgICAgdXBkYXRlRmxhZ3MuYWRkKFJlbmRlckxheWVyQmFja2luZzo6
VXBkYXRlQWZ0ZXJMYXlvdXRGbGFnczo6SXNVcGRhdGVSb290KTsKICAgICAgICAgYmFja2luZygp
LT51cGRhdGVBZnRlckxheW91dCh1cGRhdGVGbGFncyk7CiAgICAgfQogICAgICAgICAKQEAgLTg1
MSwxNiArODUxLDE2IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZUxheWVyUG9zaXRpb25zQWYK
IAogICAgIGJvb2wgcG9zaXRpb25DaGFuZ2VkID0gdXBkYXRlTGF5ZXJQb3NpdGlvbigpOwogICAg
IGlmIChwb3NpdGlvbkNoYW5nZWQpCi0gICAgICAgIGZsYWdzIHw9IEhhc0NoYW5nZWRBbmNlc3Rv
cjsKKyAgICAgICAgZmxhZ3MuYWRkKEhhc0NoYW5nZWRBbmNlc3Rvcik7CiAKICAgICBpZiAoZmxh
Z3MuY29udGFpbnNBbnkoeyBIYXNDaGFuZ2VkQW5jZXN0b3IsIEhhc1NlZW5WaWV3cG9ydENvbnN0
cmFpbmVkQW5jZXN0b3IsIElzT3ZlcmZsb3dTY3JvbGwgfSkpCiAgICAgICAgIGNsZWFyQ2xpcFJl
Y3RzKCk7CiAKICAgICBpZiAocmVuZGVyZXIoKS5zdHlsZSgpLmhhc1ZpZXdwb3J0Q29uc3RyYWlu
ZWRQb3NpdGlvbigpKQotICAgICAgICBmbGFncyB8PSBIYXNTZWVuVmlld3BvcnRDb25zdHJhaW5l
ZEFuY2VzdG9yOworICAgICAgICBmbGFncy5hZGQoSGFzU2VlblZpZXdwb3J0Q29uc3RyYWluZWRB
bmNlc3Rvcik7CiAKICAgICBpZiAocmVuZGVyZXIoKS5oYXNPdmVyZmxvd0NsaXAoKSkKLSAgICAg
ICAgZmxhZ3MgfD0gSGFzU2VlbkFuY2VzdG9yV2l0aE92ZXJmbG93Q2xpcDsKKyAgICAgICAgZmxh
Z3MuYWRkKEhhc1NlZW5BbmNlc3RvcldpdGhPdmVyZmxvd0NsaXApOwogICAgIAogICAgIGJvb2wg
c2hvdWxkQ29tcHV0ZVJlcGFpbnRSZWN0cyA9IChmbGFncy5jb250YWlucyhIYXNTZWVuVmlld3Bv
cnRDb25zdHJhaW5lZEFuY2VzdG9yKSB8fCBmbGFncy5jb250YWluc0FsbCh7IElzT3ZlcmZsb3dT
Y3JvbGwsIEhhc1NlZW5BbmNlc3RvcldpdGhPdmVyZmxvd0NsaXAgfSkpICYmIGlzU2VsZlBhaW50
aW5nTGF5ZXIoKTsKICAgICBib29sIGlzVmlzdWFsbHlFbXB0eSA9ICFpc1Zpc3VhbGx5Tm9uRW1w
dHkoKTsKQEAgLTM5NzMsNyArMzk3Myw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXIo
R3JhcGhpY3NDb24KICAgICAgICAgLy8gVGhlIHBlcmZvcm1pbmdQYWludEludmFsaWRhdGlvbigp
IHBhaW50aW5nIHBhc3MgZ29lcyB0aHJvdWdoIGNvbXBvc2l0aW5nIGxheWVycywKICAgICAgICAg
Ly8gYnV0IHdlIG5lZWQgdG8gZW5zdXJlIHRoYXQgd2UgZG9uJ3QgY2FjaGUgY2xpcCByZWN0cyBj
b21wdXRlZCB3aXRoIHRoZSB3cm9uZyByb290IGluIHRoaXMgY2FzZS4KICAgICAgICAgaWYgKGNv
bnRleHQucGVyZm9ybWluZ1BhaW50SW52YWxpZGF0aW9uKCkgfHwgKHBhaW50aW5nSW5mby5wYWlu
dEJlaGF2aW9yICYgUGFpbnRCZWhhdmlvcjo6RmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzKSkKLSAg
ICAgICAgICAgIHBhaW50RmxhZ3MgfD0gUGFpbnRMYXllclRlbXBvcmFyeUNsaXBSZWN0czsKKyAg
ICAgICAgICAgIHBhaW50RmxhZ3MuYWRkKFBhaW50TGF5ZXJUZW1wb3JhcnlDbGlwUmVjdHMpOwog
ICAgICAgICBlbHNlIGlmICghYmFja2luZygpLT5wYWludHNJbnRvV2luZG93KCkKICAgICAgICAg
ICAgICYmICFiYWNraW5nKCktPnBhaW50c0ludG9Db21wb3NpdGVkQW5jZXN0b3IoKQogICAgICAg
ICAgICAgJiYgIXNob3VsZERvU29mdHdhcmVQYWludCh0aGlzLCBwYWludEZsYWdzLmNvbnRhaW5z
KFBhaW50TGF5ZXJQYWludGluZ1JlZmxlY3Rpb24pKQpAQCAtNDAwMCw3ICs0MDAwLDcgQEAgdm9p
ZCBSZW5kZXJMYXllcjo6cGFpbnRMYXllcihHcmFwaGljc0NvbgogICAgICAgICByZXR1cm47CiAK
ICAgICBpZiAocGFpbnRzV2l0aFRyYW5zcGFyZW5jeShwYWludGluZ0luZm8ucGFpbnRCZWhhdmlv
cikpCi0gICAgICAgIHBhaW50RmxhZ3MgfD0gUGFpbnRMYXllckhhdmVUcmFuc3BhcmVuY3k7Cisg
ICAgICAgIHBhaW50RmxhZ3MuYWRkKFBhaW50TGF5ZXJIYXZlVHJhbnNwYXJlbmN5KTsKIAogICAg
IC8vIFBhaW50TGF5ZXJBcHBsaWVkVHJhbnNmb3JtIGlzIHVzZWQgaW4gUmVuZGVyUmVwbGljYSwg
dG8gYXZvaWQgYXBwbHlpbmcgdGhlIHRyYW5zZm9ybSB0d2ljZS4KICAgICBpZiAocGFpbnRzV2l0
aFRyYW5zZm9ybShwYWludGluZ0luZm8ucGFpbnRCZWhhdmlvcikgJiYgIShwYWludEZsYWdzICYg
UGFpbnRMYXllckFwcGxpZWRUcmFuc2Zvcm0pKSB7CkBAIC00MDYxLDcgKzQwNjEsNyBAQCB2b2lk
IFJlbmRlckxheWVyOjpwYWludExheWVyQ29udGVudHNBbmRSCiAgICAgICAgIG1fcGFpbnRpbmdJ
bnNpZGVSZWZsZWN0aW9uID0gZmFsc2U7CiAgICAgfQogCi0gICAgbG9jYWxQYWludEZsYWdzIHw9
IHBhaW50TGF5ZXJQYWludGluZ0NvbXBvc2l0aW5nQWxsUGhhc2VzRmxhZ3MoKTsKKyAgICBsb2Nh
bFBhaW50RmxhZ3MuYWRkKHBhaW50TGF5ZXJQYWludGluZ0NvbXBvc2l0aW5nQWxsUGhhc2VzRmxh
Z3MoKSk7CiAgICAgcGFpbnRMYXllckNvbnRlbnRzKGNvbnRleHQsIHBhaW50aW5nSW5mbywgbG9j
YWxQYWludEZsYWdzKTsKIH0KIApAQCAtNDM1NSwyMSArNDM1NSwyMSBAQCB2b2lkIFJlbmRlckxh
eWVyOjpwYWludExheWVyQ29udGVudHMoR3JhCiAKICAgICAgICAgT3B0aW9uU2V0PFBhaW50QmVo
YXZpb3I+IHBhaW50QmVoYXZpb3IgPSBQYWludEJlaGF2aW9yOjpOb3JtYWw7CiAgICAgICAgIGlm
IChsb2NhbFBhaW50RmxhZ3MgJiBQYWludExheWVyUGFpbnRpbmdTa2lwUm9vdEJhY2tncm91bmQp
Ci0gICAgICAgICAgICBwYWludEJlaGF2aW9yIHw9IFBhaW50QmVoYXZpb3I6OlNraXBSb290QmFj
a2dyb3VuZDsKKyAgICAgICAgICAgIHBhaW50QmVoYXZpb3IuYWRkKFBhaW50QmVoYXZpb3I6OlNr
aXBSb290QmFja2dyb3VuZCk7CiAgICAgICAgIGVsc2UgaWYgKGxvY2FsUGFpbnRGbGFncyAmIFBh
aW50TGF5ZXJQYWludGluZ1Jvb3RCYWNrZ3JvdW5kT25seSkKLSAgICAgICAgICAgIHBhaW50QmVo
YXZpb3IgfD0gUGFpbnRCZWhhdmlvcjo6Um9vdEJhY2tncm91bmRPbmx5OworICAgICAgICAgICAg
cGFpbnRCZWhhdmlvci5hZGQoUGFpbnRCZWhhdmlvcjo6Um9vdEJhY2tncm91bmRPbmx5KTsKIAog
ICAgICAgICBpZiAocGFpbnRpbmdJbmZvLnBhaW50QmVoYXZpb3IgJiBQYWludEJlaGF2aW9yOjpG
bGF0dGVuQ29tcG9zaXRpbmdMYXllcnMpCi0gICAgICAgICAgICBwYWludEJlaGF2aW9yIHw9IFBh
aW50QmVoYXZpb3I6OkZsYXR0ZW5Db21wb3NpdGluZ0xheWVyczsKKyAgICAgICAgICAgIHBhaW50
QmVoYXZpb3IuYWRkKFBhaW50QmVoYXZpb3I6OkZsYXR0ZW5Db21wb3NpdGluZ0xheWVycyk7CiAg
ICAgICAgIAogICAgICAgICBpZiAocGFpbnRpbmdJbmZvLnBhaW50QmVoYXZpb3IgJiBQYWludEJl
aGF2aW9yOjpTbmFwc2hvdHRpbmcpCi0gICAgICAgICAgICBwYWludEJlaGF2aW9yIHw9IFBhaW50
QmVoYXZpb3I6OlNuYXBzaG90dGluZzsKKyAgICAgICAgICAgIHBhaW50QmVoYXZpb3IuYWRkKFBh
aW50QmVoYXZpb3I6OlNuYXBzaG90dGluZyk7CiAgICAgICAgIAogICAgICAgICBpZiAoKHBhaW50
aW5nSW5mby5wYWludEJlaGF2aW9yICYgUGFpbnRCZWhhdmlvcjo6VGlsZUZpcnN0UGFpbnQpICYm
IGlzUmVuZGVyVmlld0xheWVyKCkpCi0gICAgICAgICAgICBwYWludEJlaGF2aW9yIHw9IFBhaW50
QmVoYXZpb3I6OlRpbGVGaXJzdFBhaW50OworICAgICAgICAgICAgcGFpbnRCZWhhdmlvci5hZGQo
UGFpbnRCZWhhdmlvcjo6VGlsZUZpcnN0UGFpbnQpOwogCiAgICAgICAgIGlmIChwYWludGluZ0lu
Zm8ucGFpbnRCZWhhdmlvciAmIFBhaW50QmVoYXZpb3I6OkV4Y2x1ZGVTZWxlY3Rpb24pCi0gICAg
ICAgICAgICBwYWludEJlaGF2aW9yIHw9IFBhaW50QmVoYXZpb3I6OkV4Y2x1ZGVTZWxlY3Rpb247
CisgICAgICAgICAgICBwYWludEJlaGF2aW9yLmFkZChQYWludEJlaGF2aW9yOjpFeGNsdWRlU2Vs
ZWN0aW9uKTsKIAogICAgICAgICBMYXlvdXRSZWN0IHBhaW50RGlydHlSZWN0ID0gbG9jYWxQYWlu
dGluZ0luZm8ucGFpbnREaXJ0eVJlY3Q7CiAgICAgICAgIGlmIChzaG91bGRQYWludENvbnRlbnQg
fHwgc2hvdWxkUGFpbnRPdXRsaW5lIHx8IGlzUGFpbnRpbmdPdmVybGF5U2Nyb2xsYmFycykgewpA
QCAtNDQzOCwxMyArNDQzOCwxMyBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludExheWVyQ29udGVu
dHMoR3JhCiAgICAgaWYgKHNob3VsZFBhaW50Q29udGVudCAmJiAhKHNlbGVjdGlvbk9ubHkgfHwg
c2VsZWN0aW9uQW5kQmFja2dyb3VuZHNPbmx5KSkgewogICAgICAgICBPcHRpb25TZXQ8UGFpbnRC
ZWhhdmlvcj4gcGFpbnRCZWhhdmlvciA9IFBhaW50QmVoYXZpb3I6Ok5vcm1hbDsKICAgICAgICAg
aWYgKHBhaW50aW5nSW5mby5wYWludEJlaGF2aW9yICYgUGFpbnRCZWhhdmlvcjo6RmxhdHRlbkNv
bXBvc2l0aW5nTGF5ZXJzKQotICAgICAgICAgICAgcGFpbnRCZWhhdmlvciB8PSBQYWludEJlaGF2
aW9yOjpGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnM7CisgICAgICAgICAgICBwYWludEJlaGF2aW9y
LmFkZChQYWludEJlaGF2aW9yOjpGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMpOwogICAgICAgICAK
ICAgICAgICAgaWYgKHBhaW50aW5nSW5mby5wYWludEJlaGF2aW9yICYgUGFpbnRCZWhhdmlvcjo6
U25hcHNob3R0aW5nKQotICAgICAgICAgICAgcGFpbnRCZWhhdmlvciB8PSBQYWludEJlaGF2aW9y
OjpTbmFwc2hvdHRpbmc7CisgICAgICAgICAgICBwYWludEJlaGF2aW9yLmFkZChQYWludEJlaGF2
aW9yOjpTbmFwc2hvdHRpbmcpOwogICAgICAgICAKICAgICAgICAgaWYgKHBhaW50aW5nSW5mby5w
YWludEJlaGF2aW9yICYgUGFpbnRCZWhhdmlvcjo6VGlsZUZpcnN0UGFpbnQpCi0gICAgICAgICAg
ICBwYWludEJlaGF2aW9yIHw9IFBhaW50QmVoYXZpb3I6OlRpbGVGaXJzdFBhaW50OworICAgICAg
ICAgICAgcGFpbnRCZWhhdmlvci5hZGQoUGFpbnRCZWhhdmlvcjo6VGlsZUZpcnN0UGFpbnQpOwog
CiAgICAgICAgIGlmIChzaG91bGRQYWludE1hc2socGFpbnRpbmdJbmZvLnBhaW50QmVoYXZpb3Is
IGxvY2FsUGFpbnRGbGFncykpIHsKICAgICAgICAgICAgIC8vIFBhaW50IHRoZSBtYXNrIGZvciB0
aGUgZnJhZ21lbnRzLgpAQCAtNDc3MCwxMyArNDc3MCwxMyBAQCB2b2lkIFJlbmRlckxheWVyOjpw
YWludEZvcmVncm91bmRGb3JGcmFnCiAgICAgICAgIGxvY2FsUGFpbnRCZWhhdmlvciA9IHBhaW50
QmVoYXZpb3I7CiAKICAgICBpZiAobG9jYWxQYWludGluZ0luZm8ucGFpbnRCZWhhdmlvciAmIFBh
aW50QmVoYXZpb3I6OkV4Y2x1ZGVTZWxlY3Rpb24pCi0gICAgICAgIGxvY2FsUGFpbnRCZWhhdmlv
ciB8PSBQYWludEJlaGF2aW9yOjpFeGNsdWRlU2VsZWN0aW9uOworICAgICAgICBsb2NhbFBhaW50
QmVoYXZpb3IuYWRkKFBhaW50QmVoYXZpb3I6OkV4Y2x1ZGVTZWxlY3Rpb24pOwogICAgIAogICAg
IGlmIChsb2NhbFBhaW50aW5nSW5mby5wYWludEJlaGF2aW9yICYgUGFpbnRCZWhhdmlvcjo6U25h
cHNob3R0aW5nKQotICAgICAgICBsb2NhbFBhaW50QmVoYXZpb3IgfD0gUGFpbnRCZWhhdmlvcjo6
U25hcHNob3R0aW5nOworICAgICAgICBsb2NhbFBhaW50QmVoYXZpb3IuYWRkKFBhaW50QmVoYXZp
b3I6OlNuYXBzaG90dGluZyk7CiAgICAgCiAgICAgaWYgKGxvY2FsUGFpbnRpbmdJbmZvLnBhaW50
QmVoYXZpb3IgJiBQYWludEJlaGF2aW9yOjpUaWxlRmlyc3RQYWludCkKLSAgICAgICAgbG9jYWxQ
YWludEJlaGF2aW9yIHw9IFBhaW50QmVoYXZpb3I6OlRpbGVGaXJzdFBhaW50OworICAgICAgICBs
b2NhbFBhaW50QmVoYXZpb3IuYWRkKFBhaW50QmVoYXZpb3I6OlRpbGVGaXJzdFBhaW50KTsKIAog
ICAgIC8vIE9wdGltaXplIGNsaXBwaW5nIGZvciB0aGUgc2luZ2xlIGZyYWdtZW50IGNhc2UuCiAg
ICAgYm9vbCBzaG91bGRDbGlwID0gbG9jYWxQYWludGluZ0luZm8uY2xpcFRvRGlydHlSZWN0ICYm
IGxheWVyRnJhZ21lbnRzLnNpemUoKSA9PSAxICYmIGxheWVyRnJhZ21lbnRzWzBdLnNob3VsZFBh
aW50Q29udGVudCAmJiAhbGF5ZXJGcmFnbWVudHNbMF0uZm9yZWdyb3VuZFJlY3QuaXNFbXB0eSgp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2lu
Zy5jcHAJKHJldmlzaW9uIDIzNTUxNCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllckJhY2tpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTM0LDI0ICsyNTM0LDI0IEBA
IHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjpwYWludEludG9MYXllcigKIAogICAgIE9wdGlvblNl
dDxSZW5kZXJMYXllcjo6UGFpbnRMYXllckZsYWc+IHBhaW50RmxhZ3M7CiAgICAgaWYgKHBhaW50
aW5nUGhhc2UgJiBHcmFwaGljc0xheWVyUGFpbnRCYWNrZ3JvdW5kKQotICAgICAgICBwYWludEZs
YWdzIHw9IFJlbmRlckxheWVyOjpQYWludExheWVyUGFpbnRpbmdDb21wb3NpdGluZ0JhY2tncm91
bmRQaGFzZTsKKyAgICAgICAgcGFpbnRGbGFncy5hZGQoUmVuZGVyTGF5ZXI6OlBhaW50TGF5ZXJQ
YWludGluZ0NvbXBvc2l0aW5nQmFja2dyb3VuZFBoYXNlKTsKICAgICBpZiAocGFpbnRpbmdQaGFz
ZSAmIEdyYXBoaWNzTGF5ZXJQYWludEZvcmVncm91bmQpCi0gICAgICAgIHBhaW50RmxhZ3MgfD0g
UmVuZGVyTGF5ZXI6OlBhaW50TGF5ZXJQYWludGluZ0NvbXBvc2l0aW5nRm9yZWdyb3VuZFBoYXNl
OworICAgICAgICBwYWludEZsYWdzLmFkZChSZW5kZXJMYXllcjo6UGFpbnRMYXllclBhaW50aW5n
Q29tcG9zaXRpbmdGb3JlZ3JvdW5kUGhhc2UpOwogICAgIGlmIChwYWludGluZ1BoYXNlICYgR3Jh
cGhpY3NMYXllclBhaW50TWFzaykKLSAgICAgICAgcGFpbnRGbGFncyB8PSBSZW5kZXJMYXllcjo6
UGFpbnRMYXllclBhaW50aW5nQ29tcG9zaXRpbmdNYXNrUGhhc2U7CisgICAgICAgIHBhaW50Rmxh
Z3MuYWRkKFJlbmRlckxheWVyOjpQYWludExheWVyUGFpbnRpbmdDb21wb3NpdGluZ01hc2tQaGFz
ZSk7CiAgICAgaWYgKHBhaW50aW5nUGhhc2UgJiBHcmFwaGljc0xheWVyUGFpbnRDbGlwUGF0aCkK
LSAgICAgICAgcGFpbnRGbGFncyB8PSBSZW5kZXJMYXllcjo6UGFpbnRMYXllclBhaW50aW5nQ29t
cG9zaXRpbmdDbGlwUGF0aFBoYXNlOworICAgICAgICBwYWludEZsYWdzLmFkZChSZW5kZXJMYXll
cjo6UGFpbnRMYXllclBhaW50aW5nQ29tcG9zaXRpbmdDbGlwUGF0aFBoYXNlKTsKICAgICBpZiAo
cGFpbnRpbmdQaGFzZSAmIEdyYXBoaWNzTGF5ZXJQYWludENoaWxkQ2xpcHBpbmdNYXNrKQotICAg
ICAgICBwYWludEZsYWdzIHw9IFJlbmRlckxheWVyOjpQYWludExheWVyUGFpbnRpbmdDaGlsZENs
aXBwaW5nTWFza1BoYXNlOworICAgICAgICBwYWludEZsYWdzLmFkZChSZW5kZXJMYXllcjo6UGFp
bnRMYXllclBhaW50aW5nQ2hpbGRDbGlwcGluZ01hc2tQaGFzZSk7CiAgICAgaWYgKHBhaW50aW5n
UGhhc2UgJiBHcmFwaGljc0xheWVyUGFpbnRPdmVyZmxvd0NvbnRlbnRzKQotICAgICAgICBwYWlu
dEZsYWdzIHw9IFJlbmRlckxheWVyOjpQYWludExheWVyUGFpbnRpbmdPdmVyZmxvd0NvbnRlbnRz
OworICAgICAgICBwYWludEZsYWdzLmFkZChSZW5kZXJMYXllcjo6UGFpbnRMYXllclBhaW50aW5n
T3ZlcmZsb3dDb250ZW50cyk7CiAgICAgaWYgKHBhaW50aW5nUGhhc2UgJiBHcmFwaGljc0xheWVy
UGFpbnRDb21wb3NpdGVkU2Nyb2xsKQotICAgICAgICBwYWludEZsYWdzIHw9IFJlbmRlckxheWVy
OjpQYWludExheWVyUGFpbnRpbmdDb21wb3NpdGluZ1Njcm9sbGluZ1BoYXNlOworICAgICAgICBw
YWludEZsYWdzLmFkZChSZW5kZXJMYXllcjo6UGFpbnRMYXllclBhaW50aW5nQ29tcG9zaXRpbmdT
Y3JvbGxpbmdQaGFzZSk7CiAKICAgICBpZiAoZ3JhcGhpY3NMYXllciA9PSBtX2JhY2tncm91bmRM
YXllci5nZXQoKSAmJiBtX2JhY2tncm91bmRMYXllclBhaW50c0ZpeGVkUm9vdEJhY2tncm91bmQp
Ci0gICAgICAgIHBhaW50RmxhZ3MgfD0geyBSZW5kZXJMYXllcjo6UGFpbnRMYXllclBhaW50aW5n
Um9vdEJhY2tncm91bmRPbmx5LCBSZW5kZXJMYXllcjo6UGFpbnRMYXllclBhaW50aW5nQ29tcG9z
aXRpbmdGb3JlZ3JvdW5kUGhhc2UgfTsgLy8gTmVlZCBQYWludExheWVyUGFpbnRpbmdDb21wb3Np
dGluZ0ZvcmVncm91bmRQaGFzZSB0byB3YWxrIGNoaWxkIGxheWVycy4KKyAgICAgICAgcGFpbnRG
bGFncy5hZGQoeyBSZW5kZXJMYXllcjo6UGFpbnRMYXllclBhaW50aW5nUm9vdEJhY2tncm91bmRP
bmx5LCBSZW5kZXJMYXllcjo6UGFpbnRMYXllclBhaW50aW5nQ29tcG9zaXRpbmdGb3JlZ3JvdW5k
UGhhc2UgfSk7IC8vIE5lZWQgUGFpbnRMYXllclBhaW50aW5nQ29tcG9zaXRpbmdGb3JlZ3JvdW5k
UGhhc2UgdG8gd2FsayBjaGlsZCBsYXllcnMuCiAgICAgZWxzZSBpZiAoY29tcG9zaXRvcigpLmZp
eGVkUm9vdEJhY2tncm91bmRMYXllcigpKQotICAgICAgICBwYWludEZsYWdzIHw9IFJlbmRlckxh
eWVyOjpQYWludExheWVyUGFpbnRpbmdTa2lwUm9vdEJhY2tncm91bmQ7CisgICAgICAgIHBhaW50
RmxhZ3MuYWRkKFJlbmRlckxheWVyOjpQYWludExheWVyUGFpbnRpbmdTa2lwUm9vdEJhY2tncm91
bmQpOwogCiAjaWZuZGVmIE5ERUJVRwogICAgIFJlbmRlckVsZW1lbnQ6OlNldExheW91dE5lZWRl
ZEZvcmJpZGRlblNjb3BlIGZvcmJpZFNldE5lZWRzTGF5b3V0KCZyZW5kZXJlcigpKTsKQEAgLTI2
MDksMTAgKzI2MDksMTAgQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnBhaW50Q29udGVudHMo
YwogICAgICAgICAvLyBXZSBoYXZlIHRvIHVzZSB0aGUgc2FtZSByb290IGFzIGZvciBoaXQgdGVz
dGluZywgYmVjYXVzZSBib3RoIG1ldGhvZHMgY2FuIGNvbXB1dGUgYW5kIGNhY2hlIGNsaXBSZWN0
cy4KICAgICAgICAgT3B0aW9uU2V0PFBhaW50QmVoYXZpb3I+IGJlaGF2aW9yID0gUGFpbnRCZWhh
dmlvcjo6Tm9ybWFsOwogICAgICAgICBpZiAobGF5ZXJQYWludEJlaGF2aW9yID09IEdyYXBoaWNz
TGF5ZXJQYWludFNuYXBzaG90dGluZykKLSAgICAgICAgICAgIGJlaGF2aW9yIHw9IFBhaW50QmVo
YXZpb3I6OlNuYXBzaG90dGluZzsKKyAgICAgICAgICAgIGJlaGF2aW9yLmFkZChQYWludEJlaGF2
aW9yOjpTbmFwc2hvdHRpbmcpOwogICAgICAgICAKICAgICAgICAgaWYgKGxheWVyUGFpbnRCZWhh
dmlvciA9PSBHcmFwaGljc0xheWVyUGFpbnRGaXJzdFRpbGVQYWludCkKLSAgICAgICAgICAgIGJl
aGF2aW9yIHw9IFBhaW50QmVoYXZpb3I6OlRpbGVGaXJzdFBhaW50OworICAgICAgICAgICAgYmVo
YXZpb3IuYWRkKFBhaW50QmVoYXZpb3I6OlRpbGVGaXJzdFBhaW50KTsKIAogICAgICAgICBwYWlu
dEludG9MYXllcihncmFwaGljc0xheWVyLCBjb250ZXh0LCBkaXJ0eVJlY3QsIGJlaGF2aW9yLCBw
YWludGluZ1BoYXNlKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyQ29tcG9zaXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAJKHJldmlzaW9uIDIzNTUxNCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yMTY0LDg5ICsyMTY0LDg5IEBAIE9wdGlvblNldDxDb21wb3NpdGluZ1JlYXNvbj4gUmVu
ZGVyTGF5ZXIKICAgICBhdXRvJiByZW5kZXJlciA9IHJlbmRlcmVyRm9yQ29tcG9zaXRpbmdUZXN0
cyhsYXllcik7CiAKICAgICBpZiAocmVxdWlyZXNDb21wb3NpdGluZ0ZvclRyYW5zZm9ybShyZW5k
ZXJlcikpCi0gICAgICAgIHJlYXNvbnMgfD0gQ29tcG9zaXRpbmdSZWFzb246OlRyYW5zZm9ybTNE
OworICAgICAgICByZWFzb25zLmFkZChDb21wb3NpdGluZ1JlYXNvbjo6VHJhbnNmb3JtM0QpOwog
CiAgICAgaWYgKHJlcXVpcmVzQ29tcG9zaXRpbmdGb3JWaWRlbyhyZW5kZXJlcikpCi0gICAgICAg
IHJlYXNvbnMgfD0gQ29tcG9zaXRpbmdSZWFzb246OlZpZGVvOworICAgICAgICByZWFzb25zLmFk
ZChDb21wb3NpdGluZ1JlYXNvbjo6VmlkZW8pOwogICAgIGVsc2UgaWYgKHJlcXVpcmVzQ29tcG9z
aXRpbmdGb3JDYW52YXMocmVuZGVyZXIpKQotICAgICAgICByZWFzb25zIHw9IENvbXBvc2l0aW5n
UmVhc29uOjpDYW52YXM7CisgICAgICAgIHJlYXNvbnMuYWRkKENvbXBvc2l0aW5nUmVhc29uOjpD
YW52YXMpOwogICAgIGVsc2UgaWYgKHJlcXVpcmVzQ29tcG9zaXRpbmdGb3JQbHVnaW4ocmVuZGVy
ZXIpKQotICAgICAgICByZWFzb25zIHw9IENvbXBvc2l0aW5nUmVhc29uOjpQbHVnaW47CisgICAg
ICAgIHJlYXNvbnMuYWRkKENvbXBvc2l0aW5nUmVhc29uOjpQbHVnaW4pOwogICAgIGVsc2UgaWYg
KHJlcXVpcmVzQ29tcG9zaXRpbmdGb3JGcmFtZShyZW5kZXJlcikpCi0gICAgICAgIHJlYXNvbnMg
fD0gQ29tcG9zaXRpbmdSZWFzb246OklGcmFtZTsKKyAgICAgICAgcmVhc29ucy5hZGQoQ29tcG9z
aXRpbmdSZWFzb246OklGcmFtZSk7CiAKICAgICBpZiAoKGNhblJlbmRlcjNEVHJhbnNmb3Jtcygp
ICYmIHJlbmRlcmVyLnN0eWxlKCkuYmFja2ZhY2VWaXNpYmlsaXR5KCkgPT0gQmFja2ZhY2VWaXNp
YmlsaXR5OjpIaWRkZW4pKQotICAgICAgICByZWFzb25zIHw9IENvbXBvc2l0aW5nUmVhc29uOjpC
YWNrZmFjZVZpc2liaWxpdHlIaWRkZW47CisgICAgICAgIHJlYXNvbnMuYWRkKENvbXBvc2l0aW5n
UmVhc29uOjpCYWNrZmFjZVZpc2liaWxpdHlIaWRkZW4pOwogCiAgICAgaWYgKGNsaXBzQ29tcG9z
aXRpbmdEZXNjZW5kYW50cygqcmVuZGVyZXIubGF5ZXIoKSkpCi0gICAgICAgIHJlYXNvbnMgfD0g
Q29tcG9zaXRpbmdSZWFzb246OkNsaXBzQ29tcG9zaXRpbmdEZXNjZW5kYW50czsKKyAgICAgICAg
cmVhc29ucy5hZGQoQ29tcG9zaXRpbmdSZWFzb246OkNsaXBzQ29tcG9zaXRpbmdEZXNjZW5kYW50
cyk7CiAKICAgICBpZiAocmVxdWlyZXNDb21wb3NpdGluZ0ZvckFuaW1hdGlvbihyZW5kZXJlcikp
Ci0gICAgICAgIHJlYXNvbnMgfD0gQ29tcG9zaXRpbmdSZWFzb246OkFuaW1hdGlvbjsKKyAgICAg
ICAgcmVhc29ucy5hZGQoQ29tcG9zaXRpbmdSZWFzb246OkFuaW1hdGlvbik7CiAKICAgICBpZiAo
cmVxdWlyZXNDb21wb3NpdGluZ0ZvckZpbHRlcnMocmVuZGVyZXIpKQotICAgICAgICByZWFzb25z
IHw9IENvbXBvc2l0aW5nUmVhc29uOjpGaWx0ZXJzOworICAgICAgICByZWFzb25zLmFkZChDb21w
b3NpdGluZ1JlYXNvbjo6RmlsdGVycyk7CiAKICAgICBpZiAocmVxdWlyZXNDb21wb3NpdGluZ0Zv
cldpbGxDaGFuZ2UocmVuZGVyZXIpKQotICAgICAgICByZWFzb25zIHw9IENvbXBvc2l0aW5nUmVh
c29uOjpXaWxsQ2hhbmdlOworICAgICAgICByZWFzb25zLmFkZChDb21wb3NpdGluZ1JlYXNvbjo6
V2lsbENoYW5nZSk7CiAKICAgICBpZiAocmVxdWlyZXNDb21wb3NpdGluZ0ZvclBvc2l0aW9uKHJl
bmRlcmVyLCAqcmVuZGVyZXIubGF5ZXIoKSkpCi0gICAgICAgIHJlYXNvbnMgfD0gcmVuZGVyZXIu
aXNGaXhlZFBvc2l0aW9uZWQoKSA/IENvbXBvc2l0aW5nUmVhc29uOjpQb3NpdGlvbkZpeGVkIDog
Q29tcG9zaXRpbmdSZWFzb246OlBvc2l0aW9uU3RpY2t5OworICAgICAgICByZWFzb25zLmFkZChy
ZW5kZXJlci5pc0ZpeGVkUG9zaXRpb25lZCgpID8gQ29tcG9zaXRpbmdSZWFzb246OlBvc2l0aW9u
Rml4ZWQgOiBDb21wb3NpdGluZ1JlYXNvbjo6UG9zaXRpb25TdGlja3kpOwogCiAjaWYgUExBVEZP
Uk0oSU9TKQogICAgIGlmIChyZXF1aXJlc0NvbXBvc2l0aW5nRm9yU2Nyb2xsaW5nKCpyZW5kZXJl
ci5sYXllcigpKSkKLSAgICAgICAgcmVhc29ucyB8PSBDb21wb3NpdGluZ1JlYXNvbjo6T3ZlcmZs
b3dTY3JvbGxpbmdUb3VjaDsKKyAgICAgICAgcmVhc29ucy5hZGQoQ29tcG9zaXRpbmdSZWFzb246
Ok92ZXJmbG93U2Nyb2xsaW5nVG91Y2gpOwogI2VuZGlmCiAKICAgICBpZiAocmVxdWlyZXNDb21w
b3NpdGluZ0Zvck92ZXJmbG93U2Nyb2xsaW5nKCpyZW5kZXJlci5sYXllcigpKSkKLSAgICAgICAg
cmVhc29ucyB8PSBDb21wb3NpdGluZ1JlYXNvbjo6T3ZlcmZsb3dTY3JvbGxpbmdUb3VjaDsKKyAg
ICAgICAgcmVhc29ucy5hZGQoQ29tcG9zaXRpbmdSZWFzb246Ok92ZXJmbG93U2Nyb2xsaW5nVG91
Y2gpOwogCiAgICAgc3dpdGNoIChyZW5kZXJlci5sYXllcigpLT5pbmRpcmVjdENvbXBvc2l0aW5n
UmVhc29uKCkpIHsKICAgICBjYXNlIFJlbmRlckxheWVyOjpJbmRpcmVjdENvbXBvc2l0aW5nUmVh
c29uOjpOb25lOgogICAgICAgICBicmVhazsKICAgICBjYXNlIFJlbmRlckxheWVyOjpJbmRpcmVj
dENvbXBvc2l0aW5nUmVhc29uOjpTdGFja2luZzoKLSAgICAgICAgcmVhc29ucyB8PSBDb21wb3Np
dGluZ1JlYXNvbjo6U3RhY2tpbmc7CisgICAgICAgIHJlYXNvbnMuYWRkKENvbXBvc2l0aW5nUmVh
c29uOjpTdGFja2luZyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUmVuZGVyTGF5ZXI6Oklu
ZGlyZWN0Q29tcG9zaXRpbmdSZWFzb246Ok92ZXJsYXA6Ci0gICAgICAgIHJlYXNvbnMgfD0gQ29t
cG9zaXRpbmdSZWFzb246Ok92ZXJsYXA7CisgICAgICAgIHJlYXNvbnMuYWRkKENvbXBvc2l0aW5n
UmVhc29uOjpPdmVybGFwKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBSZW5kZXJMYXllcjo6
SW5kaXJlY3RDb21wb3NpdGluZ1JlYXNvbjo6QmFja2dyb3VuZExheWVyOgotICAgICAgICByZWFz
b25zIHw9IENvbXBvc2l0aW5nUmVhc29uOjpOZWdhdGl2ZVpJbmRleENoaWxkcmVuOworICAgICAg
ICByZWFzb25zLmFkZChDb21wb3NpdGluZ1JlYXNvbjo6TmVnYXRpdmVaSW5kZXhDaGlsZHJlbik7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUmVuZGVyTGF5ZXI6OkluZGlyZWN0Q29tcG9zaXRp
bmdSZWFzb246OkdyYXBoaWNhbEVmZmVjdDoKICAgICAgICAgaWYgKHJlbmRlcmVyLmhhc1RyYW5z
Zm9ybSgpKQotICAgICAgICAgICAgcmVhc29ucyB8PSBDb21wb3NpdGluZ1JlYXNvbjo6VHJhbnNm
b3JtV2l0aENvbXBvc2l0ZWREZXNjZW5kYW50czsKKyAgICAgICAgICAgIHJlYXNvbnMuYWRkKENv
bXBvc2l0aW5nUmVhc29uOjpUcmFuc2Zvcm1XaXRoQ29tcG9zaXRlZERlc2NlbmRhbnRzKTsKIAog
ICAgICAgICBpZiAocmVuZGVyZXIuaXNUcmFuc3BhcmVudCgpKQotICAgICAgICAgICAgcmVhc29u
cyB8PSBDb21wb3NpdGluZ1JlYXNvbjo6T3BhY2l0eVdpdGhDb21wb3NpdGVkRGVzY2VuZGFudHM7
CisgICAgICAgICAgICByZWFzb25zLmFkZChDb21wb3NpdGluZ1JlYXNvbjo6T3BhY2l0eVdpdGhD
b21wb3NpdGVkRGVzY2VuZGFudHMpOwogCiAgICAgICAgIGlmIChyZW5kZXJlci5oYXNNYXNrKCkp
Ci0gICAgICAgICAgICByZWFzb25zIHw9IENvbXBvc2l0aW5nUmVhc29uOjpNYXNrV2l0aENvbXBv
c2l0ZWREZXNjZW5kYW50czsKKyAgICAgICAgICAgIHJlYXNvbnMuYWRkKENvbXBvc2l0aW5nUmVh
c29uOjpNYXNrV2l0aENvbXBvc2l0ZWREZXNjZW5kYW50cyk7CiAKICAgICAgICAgaWYgKHJlbmRl
cmVyLmhhc1JlZmxlY3Rpb24oKSkKLSAgICAgICAgICAgIHJlYXNvbnMgfD0gQ29tcG9zaXRpbmdS
ZWFzb246OlJlZmxlY3Rpb25XaXRoQ29tcG9zaXRlZERlc2NlbmRhbnRzOworICAgICAgICAgICAg
cmVhc29ucy5hZGQoQ29tcG9zaXRpbmdSZWFzb246OlJlZmxlY3Rpb25XaXRoQ29tcG9zaXRlZERl
c2NlbmRhbnRzKTsKIAogICAgICAgICBpZiAocmVuZGVyZXIuaGFzRmlsdGVyKCkgfHwgcmVuZGVy
ZXIuaGFzQmFja2Ryb3BGaWx0ZXIoKSkKLSAgICAgICAgICAgIHJlYXNvbnMgfD0gQ29tcG9zaXRp
bmdSZWFzb246OkZpbHRlcldpdGhDb21wb3NpdGVkRGVzY2VuZGFudHM7CisgICAgICAgICAgICBy
ZWFzb25zLmFkZChDb21wb3NpdGluZ1JlYXNvbjo6RmlsdGVyV2l0aENvbXBvc2l0ZWREZXNjZW5k
YW50cyk7CiAKICNpZiBFTkFCTEUoQ1NTX0NPTVBPU0lUSU5HKQogICAgICAgICBpZiAobGF5ZXIu
aXNvbGF0ZXNDb21wb3NpdGVkQmxlbmRpbmcoKSkKLSAgICAgICAgICAgIHJlYXNvbnMgfD0gQ29t
cG9zaXRpbmdSZWFzb246Oklzb2xhdGVzQ29tcG9zaXRlZEJsZW5kaW5nRGVzY2VuZGFudHM7Cisg
ICAgICAgICAgICByZWFzb25zLmFkZChDb21wb3NpdGluZ1JlYXNvbjo6SXNvbGF0ZXNDb21wb3Np
dGVkQmxlbmRpbmdEZXNjZW5kYW50cyk7CiAKICAgICAgICAgaWYgKGxheWVyLmhhc0JsZW5kTW9k
ZSgpKQotICAgICAgICAgICAgcmVhc29ucyB8PSBDb21wb3NpdGluZ1JlYXNvbjo6QmxlbmRpbmdX
aXRoQ29tcG9zaXRlZERlc2NlbmRhbnRzOworICAgICAgICAgICAgcmVhc29ucy5hZGQoQ29tcG9z
aXRpbmdSZWFzb246OkJsZW5kaW5nV2l0aENvbXBvc2l0ZWREZXNjZW5kYW50cyk7CiAjZW5kaWYK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBSZW5kZXJMYXllcjo6SW5kaXJlY3RDb21wb3NpdGlu
Z1JlYXNvbjo6UGVyc3BlY3RpdmU6Ci0gICAgICAgIHJlYXNvbnMgfD0gQ29tcG9zaXRpbmdSZWFz
b246OlBlcnNwZWN0aXZlOworICAgICAgICByZWFzb25zLmFkZChDb21wb3NpdGluZ1JlYXNvbjo6
UGVyc3BlY3RpdmUpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFJlbmRlckxheWVyOjpJbmRp
cmVjdENvbXBvc2l0aW5nUmVhc29uOjpQcmVzZXJ2ZTNEOgotICAgICAgICByZWFzb25zIHw9IENv
bXBvc2l0aW5nUmVhc29uOjpQcmVzZXJ2ZTNEOworICAgICAgICByZWFzb25zLmFkZChDb21wb3Np
dGluZ1JlYXNvbjo6UHJlc2VydmUzRCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIGlm
IChpbkNvbXBvc2l0aW5nTW9kZSgpICYmIHJlbmRlcmVyLmxheWVyKCktPmlzUmVuZGVyVmlld0xh
eWVyKCkpCi0gICAgICAgIHJlYXNvbnMgfD0gQ29tcG9zaXRpbmdSZWFzb246OlJvb3Q7CisgICAg
ICAgIHJlYXNvbnMuYWRkKENvbXBvc2l0aW5nUmVhc29uOjpSb290KTsKIAogICAgIHJldHVybiBy
ZWFzb25zOwogfQpAQCAtMzYyNSwxMCArMzYyNSwxMCBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9z
aXRvcjo6dXBkYXRlU2Nyb2xsCiB7CiAgICAgT3B0aW9uU2V0PExheWVyU2Nyb2xsQ29vcmRpbmF0
aW9uUm9sZT4gY29vcmRpbmF0aW9uUm9sZXM7CiAgICAgaWYgKGlzVmlld3BvcnRDb25zdHJhaW5l
ZEZpeGVkT3JTdGlja3lMYXllcihsYXllcikpCi0gICAgICAgIGNvb3JkaW5hdGlvblJvbGVzIHw9
IFZpZXdwb3J0Q29uc3RyYWluZWQ7CisgICAgICAgIGNvb3JkaW5hdGlvblJvbGVzLmFkZChWaWV3
cG9ydENvbnN0cmFpbmVkKTsKIAogICAgIGlmICh1c2VDb29yZGluYXRlZFNjcm9sbGluZ0Zvckxh
eWVyKGxheWVyKSkKLSAgICAgICAgY29vcmRpbmF0aW9uUm9sZXMgfD0gU2Nyb2xsaW5nOworICAg
ICAgICBjb29yZGluYXRpb25Sb2xlcy5hZGQoU2Nyb2xsaW5nKTsKIAogICAgIGlmIChsYXllci5p
c0NvbXBvc2l0ZWQoKSkKICAgICAgICAgbGF5ZXIuYmFja2luZygpLT5zZXRJc1Njcm9sbENvb3Jk
aW5hdGVkV2l0aFZpZXdwb3J0Q29uc3RyYWluZWRSb2xlKGNvb3JkaW5hdGlvblJvbGVzLmNvbnRh
aW5zKFZpZXdwb3J0Q29uc3RyYWluZWQpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9UZXh0RGVjb3JhdGlvblBhaW50ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBhaW50ZXIuY3BwCShyZXZpc2lvbiAyMzU1MTQpCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzgzLDE3ICszODMsMTcgQEAgc3RhdGljIHZvaWQgY29sbGVjdFN0eWxl
c0ZvclJlbmRlcmVyKFRleAogICAgICAgICBhdXRvIGRlY29yYXRpb25TdHlsZSA9IHN0eWxlLnRl
eHREZWNvcmF0aW9uU3R5bGUoKTsKIAogICAgICAgICBpZiAoZGVjb3JhdGlvbnMuY29udGFpbnMo
VGV4dERlY29yYXRpb246OlVuZGVybGluZSkpIHsKLSAgICAgICAgICAgIHJlbWFpbmluZ0RlY29y
YXRpb25zIC09IFRleHREZWNvcmF0aW9uOjpVbmRlcmxpbmU7CisgICAgICAgICAgICByZW1haW5p
bmdEZWNvcmF0aW9ucy5yZW1vdmUoVGV4dERlY29yYXRpb246OlVuZGVybGluZSk7CiAgICAgICAg
ICAgICByZXN1bHQudW5kZXJsaW5lQ29sb3IgPSBjb2xvcjsKICAgICAgICAgICAgIHJlc3VsdC51
bmRlcmxpbmVTdHlsZSA9IGRlY29yYXRpb25TdHlsZTsKICAgICAgICAgfQogICAgICAgICBpZiAo
ZGVjb3JhdGlvbnMuY29udGFpbnMoVGV4dERlY29yYXRpb246Ok92ZXJsaW5lKSkgewotICAgICAg
ICAgICAgcmVtYWluaW5nRGVjb3JhdGlvbnMgLT0gVGV4dERlY29yYXRpb246Ok92ZXJsaW5lOwor
ICAgICAgICAgICAgcmVtYWluaW5nRGVjb3JhdGlvbnMucmVtb3ZlKFRleHREZWNvcmF0aW9uOjpP
dmVybGluZSk7CiAgICAgICAgICAgICByZXN1bHQub3ZlcmxpbmVDb2xvciA9IGNvbG9yOwogICAg
ICAgICAgICAgcmVzdWx0Lm92ZXJsaW5lU3R5bGUgPSBkZWNvcmF0aW9uU3R5bGU7CiAgICAgICAg
IH0KICAgICAgICAgaWYgKGRlY29yYXRpb25zLmNvbnRhaW5zKFRleHREZWNvcmF0aW9uOjpMaW5l
VGhyb3VnaCkpIHsKLSAgICAgICAgICAgIHJlbWFpbmluZ0RlY29yYXRpb25zIC09IFRleHREZWNv
cmF0aW9uOjpMaW5lVGhyb3VnaDsKKyAgICAgICAgICAgIHJlbWFpbmluZ0RlY29yYXRpb25zLnJl
bW92ZShUZXh0RGVjb3JhdGlvbjo6TGluZVRocm91Z2gpOwogICAgICAgICAgICAgcmVzdWx0Lmxp
bmV0aHJvdWdoQ29sb3IgPSBjb2xvcjsKICAgICAgICAgICAgIHJlc3VsdC5saW5ldGhyb3VnaFN0
eWxlID0gZGVjb3JhdGlvblN0eWxlOwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvVGV4dFBhaW50U3R5bGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9UZXh0UGFpbnRTdHlsZS5jcHAJKHJldmlzaW9uIDIzNTUxNCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRTdHlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEwMCw3ICsxMDAsNyBAQCBUZXh0UGFpbnRTdHlsZSBjb21wdXRlVGV4dFBhaW50U3R5bGUoY29u
CiAgICAgICAgIGlmIChwYWdlICYmIHBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmlzQWN0aXZlKCkp
IHsKICAgICAgICAgICAgIE9wdGlvblNldDxTdHlsZUNvbG9yOjpPcHRpb25zPiBvcHRpb25zOwog
ICAgICAgICAgICAgaWYgKHBhZ2UtPnVzZVN5c3RlbUFwcGVhcmFuY2UoKSkKLSAgICAgICAgICAg
ICAgICBvcHRpb25zIHw9IFN0eWxlQ29sb3I6Ok9wdGlvbnM6OlVzZVN5c3RlbUFwcGVhcmFuY2U7
CisgICAgICAgICAgICAgICAgb3B0aW9ucy5hZGQoU3R5bGVDb2xvcjo6T3B0aW9uczo6VXNlU3lz
dGVtQXBwZWFyYW5jZSk7CiAgICAgICAgICAgICBwYWludFN0eWxlLmZpbGxDb2xvciA9IFJlbmRl
clRoZW1lOjpzaW5nbGV0b24oKS5zeXN0ZW1Db2xvcihDU1NWYWx1ZUFjdGl2ZWJ1dHRvbnRleHQs
IG9wdGlvbnMpOwogICAgICAgICAgICAgcmV0dXJuIHBhaW50U3R5bGU7CiAgICAgICAgIH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAko
cmV2aXNpb24gMjM1NTE0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRl
clN0eWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjEzLDcgKzYxMyw3IEBAIGJvb2wgUmVuZGVy
U3R5bGU6OmNoYW5nZVJlcXVpcmVzTGF5b3V0KGMKICAgICAgICAgICAgIGlmIChtX3JhcmVOb25J
bmhlcml0ZWREYXRhLT50cmFuc2Zvcm0tPmhhc1RyYW5zZm9ybSgpICE9IG90aGVyLm1fcmFyZU5v
bkluaGVyaXRlZERhdGEtPnRyYW5zZm9ybS0+aGFzVHJhbnNmb3JtKCkpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICBpZiAoKm1fcmFyZU5vbkluaGVyaXRlZERhdGEt
PnRyYW5zZm9ybSAhPSAqb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+dHJhbnNmb3JtKSB7
Ci0gICAgICAgICAgICAgICAgY2hhbmdlZENvbnRleHRTZW5zaXRpdmVQcm9wZXJ0aWVzIHw9IFN0
eWxlRGlmZmVyZW5jZUNvbnRleHRTZW5zaXRpdmVQcm9wZXJ0eTo6VHJhbnNmb3JtOworICAgICAg
ICAgICAgICAgIGNoYW5nZWRDb250ZXh0U2Vuc2l0aXZlUHJvcGVydGllcy5hZGQoU3R5bGVEaWZm
ZXJlbmNlQ29udGV4dFNlbnNpdGl2ZVByb3BlcnR5OjpUcmFuc2Zvcm0pOwogICAgICAgICAgICAg
ICAgIC8vIERvbid0IHJldHVybjsga2VlcCBsb29raW5nIGZvciBhbm90aGVyIGNoYW5nZQogICAg
ICAgICAgICAgfQogICAgICAgICB9CkBAIC02MjksNyArNjI5LDcgQEAgYm9vbCBSZW5kZXJTdHls
ZTo6Y2hhbmdlUmVxdWlyZXNMYXlvdXQoYwogI2VuZGlmCiAKICAgICAgICAgaWYgKCFhcmVQb2lu
dGluZ1RvRXF1YWxEYXRhKG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPndpbGxDaGFuZ2UsIG90aGVy
Lm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPndpbGxDaGFuZ2UpKSB7Ci0gICAgICAgICAgICBjaGFu
Z2VkQ29udGV4dFNlbnNpdGl2ZVByb3BlcnRpZXMgfD0gU3R5bGVEaWZmZXJlbmNlQ29udGV4dFNl
bnNpdGl2ZVByb3BlcnR5OjpXaWxsQ2hhbmdlOworICAgICAgICAgICAgY2hhbmdlZENvbnRleHRT
ZW5zaXRpdmVQcm9wZXJ0aWVzLmFkZChTdHlsZURpZmZlcmVuY2VDb250ZXh0U2Vuc2l0aXZlUHJv
cGVydHk6OldpbGxDaGFuZ2UpOwogICAgICAgICAgICAgLy8gRG9uJ3QgcmV0dXJuOyBrZWVwIGxv
b2tpbmcgZm9yIGFub3RoZXIgY2hhbmdlCiAgICAgICAgIH0KICAgICB9CkBAIC04NDksNyArODQ5
LDcgQEAgYm9vbCBSZW5kZXJTdHlsZTo6Y2hhbmdlUmVxdWlyZXNMYXllclJlcAogCiAgICAgaWYg
KHBvc2l0aW9uKCkgIT0gUG9zaXRpb25UeXBlOjpTdGF0aWMpIHsKICAgICAgICAgaWYgKG1fdmlz
dWFsRGF0YS0+Y2xpcCAhPSBvdGhlci5tX3Zpc3VhbERhdGEtPmNsaXAgfHwgbV92aXN1YWxEYXRh
LT5oYXNDbGlwICE9IG90aGVyLm1fdmlzdWFsRGF0YS0+aGFzQ2xpcCkgewotICAgICAgICAgICAg
Y2hhbmdlZENvbnRleHRTZW5zaXRpdmVQcm9wZXJ0aWVzIHw9IFN0eWxlRGlmZmVyZW5jZUNvbnRl
eHRTZW5zaXRpdmVQcm9wZXJ0eTo6Q2xpcFJlY3Q7CisgICAgICAgICAgICBjaGFuZ2VkQ29udGV4
dFNlbnNpdGl2ZVByb3BlcnRpZXMuYWRkKFN0eWxlRGlmZmVyZW5jZUNvbnRleHRTZW5zaXRpdmVQ
cm9wZXJ0eTo6Q2xpcFJlY3QpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0K
ICAgICB9CkBAIC04NjAsMTggKzg2MCwxOCBAQCBib29sIFJlbmRlclN0eWxlOjpjaGFuZ2VSZXF1
aXJlc0xheWVyUmVwCiAjZW5kaWYKIAogICAgIGlmIChtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5v
cGFjaXR5ICE9IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPm9wYWNpdHkpIHsKLSAgICAg
ICAgY2hhbmdlZENvbnRleHRTZW5zaXRpdmVQcm9wZXJ0aWVzIHw9IFN0eWxlRGlmZmVyZW5jZUNv
bnRleHRTZW5zaXRpdmVQcm9wZXJ0eTo6T3BhY2l0eTsKKyAgICAgICAgY2hhbmdlZENvbnRleHRT
ZW5zaXRpdmVQcm9wZXJ0aWVzLmFkZChTdHlsZURpZmZlcmVuY2VDb250ZXh0U2Vuc2l0aXZlUHJv
cGVydHk6Ok9wYWNpdHkpOwogICAgICAgICAvLyBEb24ndCByZXR1cm47IGtlZXAgbG9va2luZyBm
b3IgYW5vdGhlciBjaGFuZ2UuCiAgICAgfQogCiAgICAgaWYgKG1fcmFyZU5vbkluaGVyaXRlZERh
dGEtPmZpbHRlciAhPSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5maWx0ZXIpIHsKLSAg
ICAgICAgY2hhbmdlZENvbnRleHRTZW5zaXRpdmVQcm9wZXJ0aWVzIHw9IFN0eWxlRGlmZmVyZW5j
ZUNvbnRleHRTZW5zaXRpdmVQcm9wZXJ0eTo6RmlsdGVyOworICAgICAgICBjaGFuZ2VkQ29udGV4
dFNlbnNpdGl2ZVByb3BlcnRpZXMuYWRkKFN0eWxlRGlmZmVyZW5jZUNvbnRleHRTZW5zaXRpdmVQ
cm9wZXJ0eTo6RmlsdGVyKTsKICAgICAgICAgLy8gRG9uJ3QgcmV0dXJuOyBrZWVwIGxvb2tpbmcg
Zm9yIGFub3RoZXIgY2hhbmdlLgogICAgIH0KIAogI2lmIEVOQUJMRShGSUxURVJTX0xFVkVMXzIp
CiAgICAgaWYgKG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmJhY2tkcm9wRmlsdGVyICE9IG90aGVy
Lm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmJhY2tkcm9wRmlsdGVyKSB7Ci0gICAgICAgIGNoYW5n
ZWRDb250ZXh0U2Vuc2l0aXZlUHJvcGVydGllcyB8PSBTdHlsZURpZmZlcmVuY2VDb250ZXh0U2Vu
c2l0aXZlUHJvcGVydHk6OkZpbHRlcjsKKyAgICAgICAgY2hhbmdlZENvbnRleHRTZW5zaXRpdmVQ
cm9wZXJ0aWVzLmFkZChTdHlsZURpZmZlcmVuY2VDb250ZXh0U2Vuc2l0aXZlUHJvcGVydHk6OkZp
bHRlcik7CiAgICAgICAgIC8vIERvbid0IHJldHVybjsga2VlcCBsb29raW5nIGZvciBhbm90aGVy
IGNoYW5nZS4KICAgICB9CiAjZW5kaWYKQEAgLTkyMSw3ICs5MjEsNyBAQCBib29sIFJlbmRlclN0
eWxlOjpjaGFuZ2VSZXF1aXJlc1JlcGFpbnQoCiAKICAgICAvLyBGSVhNRTogdGhpcyBzaG91bGQg
cHJvYmFibHkgYmUgbW92ZWQgdG8gY2hhbmdlUmVxdWlyZXNMYXllclJlcGFpbnQoKS4KICAgICBp
ZiAobV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+Y2xpcFBhdGggIT0gb3RoZXIubV9yYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+Y2xpcFBhdGgpIHsKLSAgICAgICAgY2hhbmdlZENvbnRleHRTZW5zaXRpdmVQ
cm9wZXJ0aWVzIHw9IFN0eWxlRGlmZmVyZW5jZUNvbnRleHRTZW5zaXRpdmVQcm9wZXJ0eTo6Q2xp
cFBhdGg7CisgICAgICAgIGNoYW5nZWRDb250ZXh0U2Vuc2l0aXZlUHJvcGVydGllcy5hZGQoU3R5
bGVEaWZmZXJlbmNlQ29udGV4dFNlbnNpdGl2ZVByb3BlcnR5OjpDbGlwUGF0aCk7CiAgICAgICAg
IC8vIERvbid0IHJldHVybjsga2VlcCBsb29raW5nIGZvciBhbm90aGVyIGNoYW5nZS4KICAgICB9
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAJKHJldmlzaW9uIDIzNTUx
NCkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjI0Miw3ICsyMjQyLDcgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPEZpbmRPcHRpb25zPiBw
YXJzZUZpbgogICAgICAgICBib29sIGZvdW5kID0gZmFsc2U7CiAgICAgICAgIGZvciAoYXV0byYg
ZmxhZyA6IGZsYWdMaXN0KSB7CiAgICAgICAgICAgICBpZiAoZmxhZy5uYW1lID09IG9wdGlvbikg
ewotICAgICAgICAgICAgICAgIHJlc3VsdCB8PSBmbGFnLnZhbHVlOworICAgICAgICAgICAgICAg
IHJlc3VsdC5hZGQoZmxhZy52YWx1ZSk7CiAgICAgICAgICAgICAgICAgZm91bmQgPSB0cnVlOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQpAQCAtMzE4OSw3ICszMTg5LDcg
QEAgdm9pZCBJbnRlcm5hbHM6OmZvcmNlUmVsb2FkKGJvb2wgZW5kVG9FbgogewogICAgIE9wdGlv
blNldDxSZWxvYWRPcHRpb24+IHJlbG9hZE9wdGlvbnM7CiAgICAgaWYgKGVuZFRvRW5kKQotICAg
ICAgICByZWxvYWRPcHRpb25zIHw9IFJlbG9hZE9wdGlvbjo6RnJvbU9yaWdpbjsKKyAgICAgICAg
cmVsb2FkT3B0aW9ucy5hZGQoUmVsb2FkT3B0aW9uOjpGcm9tT3JpZ2luKTsKIAogICAgIGZyYW1l
KCktPmxvYWRlcigpLnJlbG9hZChyZWxvYWRPcHRpb25zKTsKIH0KQEAgLTQzNDIsOSArNDM0Miw5
IEBAIHZvaWQgSW50ZXJuYWxzOjpzZXRQYWdlVmlzaWJpbGl0eShib29sIGkKICAgICBhdXRvIHN0
YXRlID0gcGFnZS5hY3Rpdml0eVN0YXRlKCk7CiAKICAgICBpZiAoIWlzVmlzaWJsZSkKLSAgICAg
ICAgc3RhdGUgLT0gQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlOworICAgICAgICBzdGF0ZS5yZW1v
dmUoQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKTsKICAgICBlbHNlCi0gICAgICAgIHN0YXRlIHw9
IEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZTsKKyAgICAgICAgc3RhdGUuYWRkKEFjdGl2aXR5U3Rh
dGU6OklzVmlzaWJsZSk7CiAKICAgICBwYWdlLnNldEFjdGl2aXR5U3RhdGUoc3RhdGUpOwogfQpA
QCAtNDM1OCw5ICs0MzU4LDkgQEAgdm9pZCBJbnRlcm5hbHM6OnNldFBhZ2VJc0ZvY3VzZWRBbmRB
Y3RpdgogICAgIGF1dG8gc3RhdGUgPSBwYWdlLmFjdGl2aXR5U3RhdGUoKTsKIAogICAgIGlmICgh
aXNGb2N1c2VkQW5kQWN0aXZlKQotICAgICAgICBzdGF0ZSAtPSB7IEFjdGl2aXR5U3RhdGU6Oklz
Rm9jdXNlZCwgQWN0aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmUgfTsKKyAgICAgICAgc3RhdGUu
cmVtb3ZlKHsgQWN0aXZpdHlTdGF0ZTo6SXNGb2N1c2VkLCBBY3Rpdml0eVN0YXRlOjpXaW5kb3dJ
c0FjdGl2ZSB9KTsKICAgICBlbHNlCi0gICAgICAgIHN0YXRlIHw9IHsgQWN0aXZpdHlTdGF0ZTo6
SXNGb2N1c2VkLCBBY3Rpdml0eVN0YXRlOjpXaW5kb3dJc0FjdGl2ZSB9OworICAgICAgICBzdGF0
ZS5hZGQoeyBBY3Rpdml0eVN0YXRlOjpJc0ZvY3VzZWQsIEFjdGl2aXR5U3RhdGU6OldpbmRvd0lz
QWN0aXZlIH0pOwogCiAgICAgcGFnZS5zZXRBY3Rpdml0eVN0YXRlKHN0YXRlKTsKIH0KSW5kZXg6
IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyMzU1MjMpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDU4IEBACisyMDE4LTA4LTMwICBBbnR0aSBLb2l2aXN0byAg
PGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIE9wdGlvblNldCB8PSBhbmQgLT0g
b3BlcmF0b3JzIHdpdGggYWRkKCkgYW5kIHJlbW92ZSgpIGZ1bmN0aW9ucworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg5MTY5CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2Nv
YS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vz
czo6cGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3NDb2NvYSk6CisgICAgICAgICogU2hh
cmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5oOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJQcm9wZXJ0aWVzOjpu
b3RlUHJvcGVydGllc0NoYW5nZWQpOgorICAgICAgICAqIFNoYXJlZC9XZWJFdmVudENvbnZlcnNp
b24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJLaXQyUGxhdGZvcm1Nb3VzZUV2ZW50OjpXZWJL
aXQyUGxhdGZvcm1Nb3VzZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViS2l0MlBsYXRmb3Jt
V2hlZWxFdmVudDo6V2ViS2l0MlBsYXRmb3JtV2hlZWxFdmVudCk6CisgICAgICAgIChXZWJLaXQ6
OldlYktpdDJQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OldlYktpdDJQbGF0Zm9ybUtleWJvYXJkRXZl
bnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJLaXQyUGxhdGZvcm1Ub3VjaEV2ZW50OjpXZWJLaXQy
UGxhdGZvcm1Ub3VjaEV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViS2l0MlBsYXRmb3JtR2Vz
dHVyZUV2ZW50OjpXZWJLaXQyUGxhdGZvcm1HZXN0dXJlRXZlbnQpOgorICAgICAgICAqIFNoYXJl
ZC9XZWJzaXRlUG9saWNpZXNEYXRhLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZVBvbGlj
aWVzRGF0YTo6YXBwbHlUb0RvY3VtZW50TG9hZGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0MvV0tQYWdlLmNwcDoKKyAgICAgICAgKFdLUGFnZVJlbG9hZCk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9DL1dLUmVzb3VyY2VDYWNoZU1hbmFnZXIuY3BwOgorICAgICAgICAodG9XZWJzaXRl
RGF0YVR5cGVzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlUG9saWNpZXMu
Y3BwOgorICAgICAgICAoV0tXZWJzaXRlUG9saWNpZXNTZXRBbGxvd2VkQXV0b3BsYXlRdWlya3Mp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAo
LVtXS1dlYlZpZXcgcmVsb2FkXSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YnNpdGVEYXRhUmVjb3JkSW50ZXJuYWwuaDoKKyAgICAgICAgKFdlYktpdDo6dG9XZWJzaXRlRGF0
YVR5cGVzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9y
ZS5tbToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9mZXRjaERhdGFSZWNvcmRzT2ZU
eXBlczp3aXRoT3B0aW9uczpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL19XS1dlYnNpdGVQb2xpY2llcy5tbToKKyAgICAgICAgKC1bX1dLV2Vic2l0
ZVBvbGljaWVzIHNldEFsbG93ZWRBdXRvcGxheVF1aXJrczpdKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQ29jb2EvV2ViVmlld0ltcGwubW06CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjp2
aWV3RGlkTW92ZVRvV2luZG93KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp1cGRhdGVBY3Rpdml0eVN0YXRlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjphY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaXNwYXRjaEFjdGl2aXR5U3RhdGVDaGFu
Z2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVJlY29yZC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhUmVjb3JkOjphZGQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJzaXRlRGF0YVJlY29yZDo6YWRkQ29va2llSG9zdE5hbWUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJzaXRlRGF0YVJlY29yZDo6YWRkUGx1Z2luRGF0YUhvc3ROYW1lKToKKyAgICAg
ICAgKFdlYktpdDo6V2Vic2l0ZURhdGFSZWNvcmQ6OmFkZEhTVFNDYWNoZUhvc3RuYW1lKToKKyAg
ICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFSZWNvcmQ6OmFkZE9yaWdpbldpdGhDcmVkZW50aWFs
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dLSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW06
CisgICAgICAgICgtW1dLSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIgaW5zcGVjdG9yV0tXZWJWaWV3
UmVsb2FkOl0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVj
dGVkQnVuZGxlTm9kZUhhbmRsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OmltYWdlRm9yUmVjdCk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVS
YW5nZUhhbmRsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUmFuZ2VIYW5k
bGU6OnJlbmRlcmVkSW1hZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29u
dHJvbGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OmNvcmUpOgorICAgICAgICAoV2ViS2l0OjpG
aW5kQ29udHJvbGxlcjo6ZmluZFN0cmluZyk6CisKIDIwMTgtMDgtMzAgIFRpbSBIb3J0b24gIDx0
aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgQnVuZGxlIHVuaWZpZWQgc291cmNl
cyBtb3JlIHRpZ2h0bHkgaW4gcHJvamVjdHMgd2l0aCBkZWVwIGRpcmVjdG9yeSBzdHJ1Y3R1cmVz
CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9jZXNz
Q29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2Nv
YS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tCShyZXZpc2lvbiAyMzU1MTQpCisrKyBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTExNCwxMiArMTE0LDEyIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnBsYXRmb3Jt
SW5pdGlhbGl6ZU4KICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHkocGFy
YW1ldGVycy5kaXNrQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogICAgIE9wdGlvblNl
dDxOZXR3b3JrQ2FjaGU6OkNhY2hlOjpPcHRpb24+IGNhY2hlT3B0aW9ucyB7IE5ldHdvcmtDYWNo
ZTo6Q2FjaGU6Ok9wdGlvbjo6UmVnaXN0ZXJOb3RpZnkgfTsKICAgICBpZiAocGFyYW1ldGVycy5z
aG91bGRFbmFibGVOZXR3b3JrQ2FjaGVFZmZpY2FjeUxvZ2dpbmcpCi0gICAgICAgIGNhY2hlT3B0
aW9ucyB8PSBOZXR3b3JrQ2FjaGU6OkNhY2hlOjpPcHRpb246OkVmZmljYWN5TG9nZ2luZzsKKyAg
ICAgICAgY2FjaGVPcHRpb25zLmFkZChOZXR3b3JrQ2FjaGU6OkNhY2hlOjpPcHRpb246OkVmZmlj
YWN5TG9nZ2luZyk7CiAgICAgaWYgKHBhcmFtZXRlcnMuc2hvdWxkVXNlVGVzdGluZ05ldHdvcmtT
ZXNzaW9uKQotICAgICAgICBjYWNoZU9wdGlvbnMgfD0gTmV0d29ya0NhY2hlOjpDYWNoZTo6T3B0
aW9uOjpUZXN0aW5nTW9kZTsKKyAgICAgICAgY2FjaGVPcHRpb25zLmFkZChOZXR3b3JrQ2FjaGU6
OkNhY2hlOjpPcHRpb246OlRlc3RpbmdNb2RlKTsKICNpZiBFTkFCTEUoTkVUV09SS19DQUNIRV9T
UEVDVUxBVElWRV9SRVZBTElEQVRJT04pCiAgICAgaWYgKHBhcmFtZXRlcnMuc2hvdWxkRW5hYmxl
TmV0d29ya0NhY2hlU3BlY3VsYXRpdmVSZXZhbGlkYXRpb24pCi0gICAgICAgIGNhY2hlT3B0aW9u
cyB8PSBOZXR3b3JrQ2FjaGU6OkNhY2hlOjpPcHRpb246OlNwZWN1bGF0aXZlUmV2YWxpZGF0aW9u
OworICAgICAgICBjYWNoZU9wdGlvbnMuYWRkKE5ldHdvcmtDYWNoZTo6Q2FjaGU6Ok9wdGlvbjo6
U3BlY3VsYXRpdmVSZXZhbGlkYXRpb24pOwogI2VuZGlmCiAKICAgICBtX2NhY2hlID0gTmV0d29y
a0NhY2hlOjpDYWNoZTo6b3BlbihtX2Rpc2tDYWNoZURpcmVjdG9yeSwgY2FjaGVPcHRpb25zKTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkV2ZW50Q29udmVyc2lvbi5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvV2ViRXZlbnRDb252ZXJzaW9uLmNwcAkocmV2
aXNpb24gMjM1NTE0KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvV2ViRXZlbnRDb252ZXJzaW9u
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjksMTUgKzY5LDE1IEBAIHB1YmxpYzoKICAgICAgICAg
fQogCiAgICAgICAgIGlmICh3ZWJFdmVudC5zaGlmdEtleSgpKQotICAgICAgICAgICAgbV9tb2Rp
ZmllcnMgfD0gTW9kaWZpZXI6OlNoaWZ0S2V5OworICAgICAgICAgICAgbV9tb2RpZmllcnMuYWRk
KE1vZGlmaWVyOjpTaGlmdEtleSk7CiAgICAgICAgIGlmICh3ZWJFdmVudC5jb250cm9sS2V5KCkp
Ci0gICAgICAgICAgICBtX21vZGlmaWVycyB8PSBNb2RpZmllcjo6Q3RybEtleTsKKyAgICAgICAg
ICAgIG1fbW9kaWZpZXJzLmFkZChNb2RpZmllcjo6Q3RybEtleSk7CiAgICAgICAgIGlmICh3ZWJF
dmVudC5hbHRLZXkoKSkKLSAgICAgICAgICAgIG1fbW9kaWZpZXJzIHw9IE1vZGlmaWVyOjpBbHRL
ZXk7CisgICAgICAgICAgICBtX21vZGlmaWVycy5hZGQoTW9kaWZpZXI6OkFsdEtleSk7CiAgICAg
ICAgIGlmICh3ZWJFdmVudC5tZXRhS2V5KCkpCi0gICAgICAgICAgICBtX21vZGlmaWVycyB8PSBN
b2RpZmllcjo6TWV0YUtleTsKKyAgICAgICAgICAgIG1fbW9kaWZpZXJzLmFkZChNb2RpZmllcjo6
TWV0YUtleSk7CiAgICAgICAgIGlmICh3ZWJFdmVudC5jYXBzTG9ja0tleSgpKQotICAgICAgICAg
ICAgbV9tb2RpZmllcnMgfD0gTW9kaWZpZXI6OkNhcHNMb2NrS2V5OworICAgICAgICAgICAgbV9t
b2RpZmllcnMuYWRkKE1vZGlmaWVyOjpDYXBzTG9ja0tleSk7CiAKICAgICAgICAgbV90aW1lc3Rh
bXAgPSB3ZWJFdmVudC50aW1lc3RhbXAoKTsKIApAQCAtMTM2LDE1ICsxMzYsMTUgQEAgcHVibGlj
OgogICAgICAgICBtX3R5cGUgPSBQbGF0Zm9ybUV2ZW50OjpXaGVlbDsKIAogICAgICAgICBpZiAo
d2ViRXZlbnQuc2hpZnRLZXkoKSkKLSAgICAgICAgICAgIG1fbW9kaWZpZXJzIHw9IE1vZGlmaWVy
OjpTaGlmdEtleTsKKyAgICAgICAgICAgIG1fbW9kaWZpZXJzLmFkZChNb2RpZmllcjo6U2hpZnRL
ZXkpOwogICAgICAgICBpZiAod2ViRXZlbnQuY29udHJvbEtleSgpKQotICAgICAgICAgICAgbV9t
b2RpZmllcnMgfD0gTW9kaWZpZXI6OkN0cmxLZXk7CisgICAgICAgICAgICBtX21vZGlmaWVycy5h
ZGQoTW9kaWZpZXI6OkN0cmxLZXkpOwogICAgICAgICBpZiAod2ViRXZlbnQuYWx0S2V5KCkpCi0g
ICAgICAgICAgICBtX21vZGlmaWVycyB8PSBNb2RpZmllcjo6QWx0S2V5OworICAgICAgICAgICAg
bV9tb2RpZmllcnMuYWRkKE1vZGlmaWVyOjpBbHRLZXkpOwogICAgICAgICBpZiAod2ViRXZlbnQu
bWV0YUtleSgpKQotICAgICAgICAgICAgbV9tb2RpZmllcnMgfD0gTW9kaWZpZXI6Ok1ldGFLZXk7
CisgICAgICAgICAgICBtX21vZGlmaWVycy5hZGQoTW9kaWZpZXI6Ok1ldGFLZXkpOwogICAgICAg
ICBpZiAod2ViRXZlbnQuY2Fwc0xvY2tLZXkoKSkKLSAgICAgICAgICAgIG1fbW9kaWZpZXJzIHw9
IE1vZGlmaWVyOjpDYXBzTG9ja0tleTsKKyAgICAgICAgICAgIG1fbW9kaWZpZXJzLmFkZChNb2Rp
Zmllcjo6Q2Fwc0xvY2tLZXkpOwogCiAgICAgICAgIG1fdGltZXN0YW1wID0gd2ViRXZlbnQudGlt
ZXN0YW1wKCk7CiAKQEAgLTE5OCwxNSArMTk4LDE1IEBAIHB1YmxpYzoKICAgICAgICAgfQogCiAg
ICAgICAgIGlmICh3ZWJFdmVudC5zaGlmdEtleSgpKQotICAgICAgICAgICAgbV9tb2RpZmllcnMg
fD0gTW9kaWZpZXI6OlNoaWZ0S2V5OworICAgICAgICAgICAgbV9tb2RpZmllcnMuYWRkKE1vZGlm
aWVyOjpTaGlmdEtleSk7CiAgICAgICAgIGlmICh3ZWJFdmVudC5jb250cm9sS2V5KCkpCi0gICAg
ICAgICAgICBtX21vZGlmaWVycyB8PSBNb2RpZmllcjo6Q3RybEtleTsKKyAgICAgICAgICAgIG1f
bW9kaWZpZXJzLmFkZChNb2RpZmllcjo6Q3RybEtleSk7CiAgICAgICAgIGlmICh3ZWJFdmVudC5h
bHRLZXkoKSkKLSAgICAgICAgICAgIG1fbW9kaWZpZXJzIHw9IE1vZGlmaWVyOjpBbHRLZXk7Cisg
ICAgICAgICAgICBtX21vZGlmaWVycy5hZGQoTW9kaWZpZXI6OkFsdEtleSk7CiAgICAgICAgIGlm
ICh3ZWJFdmVudC5tZXRhS2V5KCkpCi0gICAgICAgICAgICBtX21vZGlmaWVycyB8PSBNb2RpZmll
cjo6TWV0YUtleTsKKyAgICAgICAgICAgIG1fbW9kaWZpZXJzLmFkZChNb2RpZmllcjo6TWV0YUtl
eSk7CiAgICAgICAgIGlmICh3ZWJFdmVudC5jYXBzTG9ja0tleSgpKQotICAgICAgICAgICAgbV9t
b2RpZmllcnMgfD0gTW9kaWZpZXI6OkNhcHNMb2NrS2V5OworICAgICAgICAgICAgbV9tb2RpZmll
cnMuYWRkKE1vZGlmaWVyOjpDYXBzTG9ja0tleSk7CiAKICAgICAgICAgbV90aW1lc3RhbXAgPSB3
ZWJFdmVudC50aW1lc3RhbXAoKTsKIApAQCAtMzM5LDE1ICszMzksMTUgQEAgcHVibGljOgogICAg
ICAgICB9CiAKICAgICAgICAgaWYgKHdlYkV2ZW50LnNoaWZ0S2V5KCkpCi0gICAgICAgICAgICBt
X21vZGlmaWVycyB8PSBNb2RpZmllcjo6U2hpZnRLZXk7CisgICAgICAgICAgICBtX21vZGlmaWVy
cy5hZGQoTW9kaWZpZXI6OlNoaWZ0S2V5KTsKICAgICAgICAgaWYgKHdlYkV2ZW50LmNvbnRyb2xL
ZXkoKSkKLSAgICAgICAgICAgIG1fbW9kaWZpZXJzIHw9IE1vZGlmaWVyOjpDdHJsS2V5OworICAg
ICAgICAgICAgbV9tb2RpZmllcnMuYWRkKE1vZGlmaWVyOjpDdHJsS2V5KTsKICAgICAgICAgaWYg
KHdlYkV2ZW50LmFsdEtleSgpKQotICAgICAgICAgICAgbV9tb2RpZmllcnMgfD0gTW9kaWZpZXI6
OkFsdEtleTsKKyAgICAgICAgICAgIG1fbW9kaWZpZXJzLmFkZChNb2RpZmllcjo6QWx0S2V5KTsK
ICAgICAgICAgaWYgKHdlYkV2ZW50Lm1ldGFLZXkoKSkKLSAgICAgICAgICAgIG1fbW9kaWZpZXJz
IHw9IE1vZGlmaWVyOjpNZXRhS2V5OworICAgICAgICAgICAgbV9tb2RpZmllcnMuYWRkKE1vZGlm
aWVyOjpNZXRhS2V5KTsKICAgICAgICAgaWYgKHdlYkV2ZW50LmNhcHNMb2NrS2V5KCkpCi0gICAg
ICAgICAgICBtX21vZGlmaWVycyB8PSBNb2RpZmllcjo6Q2Fwc0xvY2tLZXk7CisgICAgICAgICAg
ICBtX21vZGlmaWVycy5hZGQoTW9kaWZpZXI6OkNhcHNMb2NrS2V5KTsKIAogICAgICAgICBtX3Rp
bWVzdGFtcCA9IHdlYkV2ZW50LnRpbWVzdGFtcCgpOwogCkBAIC0zOTgsMTUgKzM5OCwxNSBAQCBw
dWJsaWM6CiAgICAgICAgIH0KIAogICAgICAgICBpZiAod2ViRXZlbnQuc2hpZnRLZXkoKSkKLSAg
ICAgICAgICAgIG1fbW9kaWZpZXJzIHw9IE1vZGlmaWVyOjpTaGlmdEtleTsKKyAgICAgICAgICAg
IG1fbW9kaWZpZXJzLmFkZChNb2RpZmllcjo6U2hpZnRLZXkpOwogICAgICAgICBpZiAod2ViRXZl
bnQuY29udHJvbEtleSgpKQotICAgICAgICAgICAgbV9tb2RpZmllcnMgfD0gTW9kaWZpZXI6OkN0
cmxLZXk7CisgICAgICAgICAgICBtX21vZGlmaWVycy5hZGQoTW9kaWZpZXI6OkN0cmxLZXkpOwog
ICAgICAgICBpZiAod2ViRXZlbnQuYWx0S2V5KCkpCi0gICAgICAgICAgICBtX21vZGlmaWVycyB8
PSBNb2RpZmllcjo6QWx0S2V5OworICAgICAgICAgICAgbV9tb2RpZmllcnMuYWRkKE1vZGlmaWVy
OjpBbHRLZXkpOwogICAgICAgICBpZiAod2ViRXZlbnQubWV0YUtleSgpKQotICAgICAgICAgICAg
bV9tb2RpZmllcnMgfD0gTW9kaWZpZXI6Ok1ldGFLZXk7CisgICAgICAgICAgICBtX21vZGlmaWVy
cy5hZGQoTW9kaWZpZXI6Ok1ldGFLZXkpOwogICAgICAgICBpZiAod2ViRXZlbnQuY2Fwc0xvY2tL
ZXkoKSkKLSAgICAgICAgICAgIG1fbW9kaWZpZXJzIHw9IE1vZGlmaWVyOjpDYXBzTG9ja0tleTsK
KyAgICAgICAgICAgIG1fbW9kaWZpZXJzLmFkZChNb2RpZmllcjo6Q2Fwc0xvY2tLZXkpOwogCiAg
ICAgICAgIG1fdGltZXN0YW1wID0gd2ViRXZlbnQudGltZXN0YW1wKCk7CiAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVQb2xpY2llc0RhdGEuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVQb2xpY2llc0RhdGEuY3BwCShyZXZpc2lvbiAyMzU1
MTQpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlUG9saWNpZXNEYXRhLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtOTgsMTMgKzk4LDEzIEBAIHZvaWQgV2Vic2l0ZVBvbGljaWVzRGF0YTo6
YXBwbHlUb0RvY3VtZW4KICAgICBjb25zdCBhdXRvJiBhbGxvd2VkUXVpcmtzID0gd2Vic2l0ZVBv
bGljaWVzLmFsbG93ZWRBdXRvcGxheVF1aXJrczsKICAgICAKICAgICBpZiAoYWxsb3dlZFF1aXJr
cy5jb250YWlucyhXZWJzaXRlQXV0b3BsYXlRdWlyazo6SW5oZXJpdGVkVXNlckdlc3R1cmVzKSkK
LSAgICAgICAgcXVpcmtzIHw9IFdlYkNvcmU6OkF1dG9wbGF5UXVpcms6OkluaGVyaXRlZFVzZXJH
ZXN0dXJlczsKKyAgICAgICAgcXVpcmtzLmFkZChXZWJDb3JlOjpBdXRvcGxheVF1aXJrOjpJbmhl
cml0ZWRVc2VyR2VzdHVyZXMpOwogICAgIAogICAgIGlmIChhbGxvd2VkUXVpcmtzLmNvbnRhaW5z
KFdlYnNpdGVBdXRvcGxheVF1aXJrOjpTeW50aGVzaXplZFBhdXNlRXZlbnRzKSkKLSAgICAgICAg
cXVpcmtzIHw9IFdlYkNvcmU6OkF1dG9wbGF5UXVpcms6OlN5bnRoZXNpemVkUGF1c2VFdmVudHM7
CisgICAgICAgIHF1aXJrcy5hZGQoV2ViQ29yZTo6QXV0b3BsYXlRdWlyazo6U3ludGhlc2l6ZWRQ
YXVzZUV2ZW50cyk7CiAgICAgCiAgICAgaWYgKGFsbG93ZWRRdWlya3MuY29udGFpbnMoV2Vic2l0
ZUF1dG9wbGF5UXVpcms6OkFyYml0cmFyeVVzZXJHZXN0dXJlcykpCi0gICAgICAgIHF1aXJrcyB8
PSBXZWJDb3JlOjpBdXRvcGxheVF1aXJrOjpBcmJpdHJhcnlVc2VyR2VzdHVyZXM7CisgICAgICAg
IHF1aXJrcy5hZGQoV2ViQ29yZTo6QXV0b3BsYXlRdWlyazo6QXJiaXRyYXJ5VXNlckdlc3R1cmVz
KTsKIAogICAgIGRvY3VtZW50TG9hZGVyLnNldEFsbG93ZWRBdXRvcGxheVF1aXJrcyhxdWlya3Mp
OwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5
ZXJUcmVlVHJhbnNhY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9S
ZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24uaAkocmV2aXNpb24gMjM1
NTE0KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVy
VHJlZVRyYW5zYWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTExNiw3ICsxMTYsNyBAQCBwdWJs
aWM6CiAKICAgICAgICAgdm9pZCBub3RlUHJvcGVydGllc0NoYW5nZWQoT3B0aW9uU2V0PExheWVy
Q2hhbmdlPiBjaGFuZ2VGbGFncykKICAgICAgICAgewotICAgICAgICAgICAgY2hhbmdlZFByb3Bl
cnRpZXMgfD0gY2hhbmdlRmxhZ3M7CisgICAgICAgICAgICBjaGFuZ2VkUHJvcGVydGllcy5hZGQo
Y2hhbmdlRmxhZ3MpOwogICAgICAgICB9CiAKICAgICAgICAgdm9pZCByZXNldENoYW5nZWRQcm9w
ZXJ0aWVzKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAko
cmV2aXNpb24gMjM1NTE0KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ0NiwzMiArMTQ0NiwzMiBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6c2V0U3VwcHJlc3NWaXNpYmlsaXR5CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVB
Y3Rpdml0eVN0YXRlKE9wdGlvblNldDxBY3Rpdml0eVN0YXRlOjpGbGFnPiBmbGFnc1RvVXBkYXRl
KQogewotICAgIG1fYWN0aXZpdHlTdGF0ZSA9IG1fYWN0aXZpdHlTdGF0ZSAtIGZsYWdzVG9VcGRh
dGU7CisgICAgbV9hY3Rpdml0eVN0YXRlLnJlbW92ZShmbGFnc1RvVXBkYXRlKTsKICAgICBpZiAo
ZmxhZ3NUb1VwZGF0ZSAmIEFjdGl2aXR5U3RhdGU6OklzRm9jdXNlZCAmJiBtX3BhZ2VDbGllbnQu
aXNWaWV3Rm9jdXNlZCgpKQotICAgICAgICBtX2FjdGl2aXR5U3RhdGUgfD0gQWN0aXZpdHlTdGF0
ZTo6SXNGb2N1c2VkOworICAgICAgICBtX2FjdGl2aXR5U3RhdGUuYWRkKEFjdGl2aXR5U3RhdGU6
OklzRm9jdXNlZCk7CiAgICAgaWYgKGZsYWdzVG9VcGRhdGUgJiBBY3Rpdml0eVN0YXRlOjpXaW5k
b3dJc0FjdGl2ZSAmJiBtX3BhZ2VDbGllbnQuaXNWaWV3V2luZG93QWN0aXZlKCkpCi0gICAgICAg
IG1fYWN0aXZpdHlTdGF0ZSB8PSBBY3Rpdml0eVN0YXRlOjpXaW5kb3dJc0FjdGl2ZTsKKyAgICAg
ICAgbV9hY3Rpdml0eVN0YXRlLmFkZChBY3Rpdml0eVN0YXRlOjpXaW5kb3dJc0FjdGl2ZSk7CiAg
ICAgaWYgKGZsYWdzVG9VcGRhdGUgJiBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUgJiYgbV9wYWdl
Q2xpZW50LmlzVmlld1Zpc2libGUoKSkKLSAgICAgICAgbV9hY3Rpdml0eVN0YXRlIHw9IEFjdGl2
aXR5U3RhdGU6OklzVmlzaWJsZTsKKyAgICAgICAgbV9hY3Rpdml0eVN0YXRlLmFkZChBY3Rpdml0
eVN0YXRlOjpJc1Zpc2libGUpOwogICAgIGlmIChmbGFnc1RvVXBkYXRlICYgQWN0aXZpdHlTdGF0
ZTo6SXNWaXNpYmxlT3JPY2NsdWRlZCAmJiBtX3BhZ2VDbGllbnQuaXNWaWV3VmlzaWJsZU9yT2Nj
bHVkZWQoKSkKLSAgICAgICAgbV9hY3Rpdml0eVN0YXRlIHw9IEFjdGl2aXR5U3RhdGU6OklzVmlz
aWJsZU9yT2NjbHVkZWQ7CisgICAgICAgIG1fYWN0aXZpdHlTdGF0ZS5hZGQoQWN0aXZpdHlTdGF0
ZTo6SXNWaXNpYmxlT3JPY2NsdWRlZCk7CiAgICAgaWYgKGZsYWdzVG9VcGRhdGUgJiBBY3Rpdml0
eVN0YXRlOjpJc0luV2luZG93ICYmIG1fcGFnZUNsaWVudC5pc1ZpZXdJbldpbmRvdygpKQotICAg
ICAgICBtX2FjdGl2aXR5U3RhdGUgfD0gQWN0aXZpdHlTdGF0ZTo6SXNJbldpbmRvdzsKKyAgICAg
ICAgbV9hY3Rpdml0eVN0YXRlLmFkZChBY3Rpdml0eVN0YXRlOjpJc0luV2luZG93KTsKICAgICBp
ZiAoZmxhZ3NUb1VwZGF0ZSAmIEFjdGl2aXR5U3RhdGU6OklzVmlzdWFsbHlJZGxlICYmIG1fcGFn
ZUNsaWVudC5pc1Zpc3VhbGx5SWRsZSgpKQotICAgICAgICBtX2FjdGl2aXR5U3RhdGUgfD0gQWN0
aXZpdHlTdGF0ZTo6SXNWaXN1YWxseUlkbGU7CisgICAgICAgIG1fYWN0aXZpdHlTdGF0ZS5hZGQo
QWN0aXZpdHlTdGF0ZTo6SXNWaXN1YWxseUlkbGUpOwogICAgIGlmIChmbGFnc1RvVXBkYXRlICYg
QWN0aXZpdHlTdGF0ZTo6SXNBdWRpYmxlICYmIG1fbWVkaWFTdGF0ZSAmIE1lZGlhUHJvZHVjZXI6
OklzUGxheWluZ0F1ZGlvICYmICEobV9tdXRlZFN0YXRlICYgTWVkaWFQcm9kdWNlcjo6QXVkaW9J
c011dGVkKSkKLSAgICAgICAgbV9hY3Rpdml0eVN0YXRlIHw9IEFjdGl2aXR5U3RhdGU6OklzQXVk
aWJsZTsKKyAgICAgICAgbV9hY3Rpdml0eVN0YXRlLmFkZChBY3Rpdml0eVN0YXRlOjpJc0F1ZGli
bGUpOwogICAgIGlmIChmbGFnc1RvVXBkYXRlICYgQWN0aXZpdHlTdGF0ZTo6SXNMb2FkaW5nICYm
IG1fcGFnZUxvYWRTdGF0ZS5pc0xvYWRpbmcoKSkKLSAgICAgICAgbV9hY3Rpdml0eVN0YXRlIHw9
IEFjdGl2aXR5U3RhdGU6OklzTG9hZGluZzsKKyAgICAgICAgbV9hY3Rpdml0eVN0YXRlLmFkZChB
Y3Rpdml0eVN0YXRlOjpJc0xvYWRpbmcpOwogICAgIGlmIChmbGFnc1RvVXBkYXRlICYgQWN0aXZp
dHlTdGF0ZTo6SXNDYXB0dXJpbmdNZWRpYSAmJiBtX21lZGlhU3RhdGUgJiAoTWVkaWFQcm9kdWNl
cjo6SGFzQWN0aXZlQXVkaW9DYXB0dXJlRGV2aWNlIHwgTWVkaWFQcm9kdWNlcjo6SGFzQWN0aXZl
VmlkZW9DYXB0dXJlRGV2aWNlKSkKLSAgICAgICAgbV9hY3Rpdml0eVN0YXRlIHw9IEFjdGl2aXR5
U3RhdGU6OklzQ2FwdHVyaW5nTWVkaWE7CisgICAgICAgIG1fYWN0aXZpdHlTdGF0ZS5hZGQoQWN0
aXZpdHlTdGF0ZTo6SXNDYXB0dXJpbmdNZWRpYSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojph
Y3Rpdml0eVN0YXRlRGlkQ2hhbmdlKE9wdGlvblNldDxBY3Rpdml0eVN0YXRlOjpGbGFnPiBtYXlI
YXZlQ2hhbmdlZCwgYm9vbCB3YW50c1N5bmNocm9ub3VzUmVwbHksIEFjdGl2aXR5U3RhdGVDaGFu
Z2VEaXNwYXRjaE1vZGUgZGlzcGF0Y2hNb2RlKQogewogICAgIExPR19XSVRIX1NUUkVBTShBY3Rp
dml0eVN0YXRlLCBzdHJlYW0gPDwgIldlYlBhZ2VQcm94eSAiIDw8IHBhZ2VJRCgpIDw8ICIgYWN0
aXZpdHlTdGF0ZURpZENoYW5nZSAtIG1heUhhdmVDaGFuZ2VkICIgPDwgbWF5SGF2ZUNoYW5nZWQp
OwogCi0gICAgbV9wb3RlbnRpYWxseUNoYW5nZWRBY3Rpdml0eVN0YXRlRmxhZ3MgfD0gbWF5SGF2
ZUNoYW5nZWQ7CisgICAgbV9wb3RlbnRpYWxseUNoYW5nZWRBY3Rpdml0eVN0YXRlRmxhZ3MuYWRk
KG1heUhhdmVDaGFuZ2VkKTsKICAgICBtX2FjdGl2aXR5U3RhdGVDaGFuZ2VXYW50c1N5bmNocm9u
b3VzUmVwbHkgPSBtX2FjdGl2aXR5U3RhdGVDaGFuZ2VXYW50c1N5bmNocm9ub3VzUmVwbHkgfHwg
d2FudHNTeW5jaHJvbm91c1JlcGx5OwogCiAgICAgaWYgKG1fc3VwcHJlc3NWaXNpYmlsaXR5VXBk
YXRlcyAmJiBkaXNwYXRjaE1vZGUgIT0gQWN0aXZpdHlTdGF0ZUNoYW5nZURpc3BhdGNoTW9kZTo6
SW1tZWRpYXRlKQpAQCAtMTUyMiw3ICsxNTIyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpc3Bh
dGNoQWN0aXZpdHlTdGF0ZQogCiAgICAgLy8gSWYgdGhlIHZpc2liaWxpdHkgc3RhdGUgbWF5IGhh
dmUgY2hhbmdlZCwgdGhlbiBzbyBtYXkgdGhlIHZpc3VhbGx5IGlkbGUgJiBvY2NsdWRlZCBhZ25v
c3RpYyBzdGF0ZS4KICAgICBpZiAobV9wb3RlbnRpYWxseUNoYW5nZWRBY3Rpdml0eVN0YXRlRmxh
Z3MgJiBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUpCi0gICAgICAgIG1fcG90ZW50aWFsbHlDaGFu
Z2VkQWN0aXZpdHlTdGF0ZUZsYWdzIHw9IHsgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlT3JPY2Ns
dWRlZCwgQWN0aXZpdHlTdGF0ZTo6SXNWaXN1YWxseUlkbGUgfTsKKyAgICAgICAgbV9wb3RlbnRp
YWxseUNoYW5nZWRBY3Rpdml0eVN0YXRlRmxhZ3MuYWRkKHsgQWN0aXZpdHlTdGF0ZTo6SXNWaXNp
YmxlT3JPY2NsdWRlZCwgQWN0aXZpdHlTdGF0ZTo6SXNWaXN1YWxseUlkbGUgfSk7CiAKICAgICAv
LyBSZWNvcmQgdGhlIHByaW9yIHZpZXcgc3RhdGUsIHVwZGF0ZSB0aGUgZmxhZ3MgdGhhdCBtYXkg
aGF2ZSBjaGFuZ2VkLAogICAgIC8vIGFuZCBjaGVjayB3aGljaCBmbGFncyBoYXZlIGFjdHVhbGx5
IGNoYW5nZWQuCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAJ
KHJldmlzaW9uIDIzNTUxNCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFn
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3MCw3ICsyNzAsNyBAQCB2b2lkIFdLUGFnZVJlbG9h
ZChXS1BhZ2VSZWYgcGFnZVJlZikKICAgICBPcHRpb25TZXQ8V2ViQ29yZTo6UmVsb2FkT3B0aW9u
PiByZWxvYWRPcHRpb25zOwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGlmIChsaW5rZWRPbk9y
QWZ0ZXIoV2ViS2l0OjpTREtWZXJzaW9uOjpGaXJzdFdpdGhFeHBpcmVkT25seVJlbG9hZEJlaGF2
aW9yKSkKLSAgICAgICAgcmVsb2FkT3B0aW9ucyB8PSBXZWJDb3JlOjpSZWxvYWRPcHRpb246OkV4
cGlyZWRPbmx5OworICAgICAgICByZWxvYWRPcHRpb25zLmFkZChXZWJDb3JlOjpSZWxvYWRPcHRp
b246OkV4cGlyZWRPbmx5KTsKICNlbmRpZgogCiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5yZWxvYWQo
cmVsb2FkT3B0aW9ucyk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1Jl
c291cmNlQ2FjaGVNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9XS1Jlc291cmNlQ2FjaGVNYW5hZ2VyLmNwcAkocmV2aXNpb24gMjM1NTE0KQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tSZXNvdXJjZUNhY2hlTWFuYWdlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDEyICs0MCwxMCBAQCBXS1R5cGVJRCBXS1Jlc291cmNl
Q2FjaGVNYW5hZ2VyR2V0VHlwZUlECiAKIHN0YXRpYyBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBl
PiB0b1dlYnNpdGVEYXRhVHlwZXMoV0tSZXNvdXJjZUNhY2hlc1RvQ2xlYXIgY2FjaGVzVG9DbGVh
cikKIHsKLSAgICBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiB3ZWJzaXRlRGF0YVR5cGVzOwot
Ci0gICAgd2Vic2l0ZURhdGFUeXBlcyB8PSBXZWJzaXRlRGF0YVR5cGU6Ok1lbW9yeUNhY2hlOwor
ICAgIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IHdlYnNpdGVEYXRhVHlwZXMgeyBXZWJzaXRl
RGF0YVR5cGU6Ok1lbW9yeUNhY2hlIH07CiAKICAgICBpZiAoY2FjaGVzVG9DbGVhciA9PSBXS1Jl
c291cmNlQ2FjaGVzVG9DbGVhckFsbCkKLSAgICAgICAgd2Vic2l0ZURhdGFUeXBlcyB8PSBXZWJz
aXRlRGF0YVR5cGU6OkRpc2tDYWNoZTsKKyAgICAgICAgd2Vic2l0ZURhdGFUeXBlcy5hZGQoV2Vi
c2l0ZURhdGFUeXBlOjpEaXNrQ2FjaGUpOwogCiAgICAgcmV0dXJuIHdlYnNpdGVEYXRhVHlwZXM7
CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVQb2xpY2ll
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJz
aXRlUG9saWNpZXMuY3BwCShyZXZpc2lvbiAyMzU1MTQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9XS1dlYnNpdGVQb2xpY2llcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgzLDEz
ICs4MywxMyBAQCB2b2lkIFdLV2Vic2l0ZVBvbGljaWVzU2V0QWxsb3dlZEF1dG9wbGF5CiB7CiAg
ICAgT3B0aW9uU2V0PFdlYnNpdGVBdXRvcGxheVF1aXJrPiBxdWlya3M7CiAgICAgaWYgKGFsbG93
ZWRRdWlya3MgJiBrV0tXZWJzaXRlQXV0b3BsYXlRdWlya0luaGVyaXRlZFVzZXJHZXN0dXJlcykK
LSAgICAgICAgcXVpcmtzIHw9IFdlYnNpdGVBdXRvcGxheVF1aXJrOjpJbmhlcml0ZWRVc2VyR2Vz
dHVyZXM7CisgICAgICAgIHF1aXJrcy5hZGQoV2Vic2l0ZUF1dG9wbGF5UXVpcms6OkluaGVyaXRl
ZFVzZXJHZXN0dXJlcyk7CiAKICAgICBpZiAoYWxsb3dlZFF1aXJrcyAmIGtXS1dlYnNpdGVBdXRv
cGxheVF1aXJrU3ludGhlc2l6ZWRQYXVzZUV2ZW50cykKLSAgICAgICAgcXVpcmtzIHw9IFdlYnNp
dGVBdXRvcGxheVF1aXJrOjpTeW50aGVzaXplZFBhdXNlRXZlbnRzOworICAgICAgICBxdWlya3Mu
YWRkKFdlYnNpdGVBdXRvcGxheVF1aXJrOjpTeW50aGVzaXplZFBhdXNlRXZlbnRzKTsKIAogICAg
IGlmIChhbGxvd2VkUXVpcmtzICYga1dLV2Vic2l0ZUF1dG9wbGF5UXVpcmtBcmJpdHJhcnlVc2Vy
R2VzdHVyZXMpCi0gICAgICAgIHF1aXJrcyB8PSBXZWJzaXRlQXV0b3BsYXlRdWlyazo6QXJiaXRy
YXJ5VXNlckdlc3R1cmVzOworICAgICAgICBxdWlya3MuYWRkKFdlYnNpdGVBdXRvcGxheVF1aXJr
OjpBcmJpdHJhcnlVc2VyR2VzdHVyZXMpOwogCiAgICAgdG9JbXBsKHdlYnNpdGVQb2xpY2llcykt
PnNldEFsbG93ZWRBdXRvcGxheVF1aXJrcyhxdWlya3MpOwogfQpJbmRleDogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCShyZXZpc2lvbiAyMzU1MTQp
CisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC05NjEsNyArOTYxLDcgQEAgLSAoV0tOYXZpZ2F0aW9uICopcmVsb2FkCiB7
CiAgICAgT3B0aW9uU2V0PFdlYkNvcmU6OlJlbG9hZE9wdGlvbj4gcmVsb2FkT3B0aW9uczsKICAg
ICBpZiAobGlua2VkT25PckFmdGVyKFdlYktpdDo6U0RLVmVyc2lvbjo6Rmlyc3RXaXRoRXhwaXJl
ZE9ubHlSZWxvYWRCZWhhdmlvcikpCi0gICAgICAgIHJlbG9hZE9wdGlvbnMgfD0gV2ViQ29yZTo6
UmVsb2FkT3B0aW9uOjpFeHBpcmVkT25seTsKKyAgICAgICAgcmVsb2FkT3B0aW9ucy5hZGQoV2Vi
Q29yZTo6UmVsb2FkT3B0aW9uOjpFeHBpcmVkT25seSk7CiAKICAgICByZXR1cm4gd3JhcHBlcihf
cGFnZS0+cmVsb2FkKHJlbG9hZE9wdGlvbnMpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkSW50ZXJuYWwuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29y
ZEludGVybmFsLmgJKHJldmlzaW9uIDIzNTUxNCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkSW50ZXJuYWwuaAkod29ya2luZyBjb3B5KQpA
QCAtODUsNyArODUsNyBAQCBzdGF0aWMgaW5saW5lIE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVE
CiAKICAgICBmb3IgKE5TU3RyaW5nICp3ZWJzaXRlRGF0YVR5cGUgaW4gd2Vic2l0ZURhdGFUeXBl
cykgewogICAgICAgICBpZiAoYXV0byBkYXRhVHlwZSA9IHRvV2Vic2l0ZURhdGFUeXBlKHdlYnNp
dGVEYXRhVHlwZSkpCi0gICAgICAgICAgICByZXN1bHQgfD0gKmRhdGFUeXBlOworICAgICAgICAg
ICAgcmVzdWx0LmFkZCgqZGF0YVR5cGUpOwogICAgIH0KIAogICAgIHJldHVybiByZXN1bHQ7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3Jl
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YnNpdGVEYXRhU3RvcmUubW0JKHJldmlzaW9uIDIzNTUxNCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0JKHdvcmtpbmcgY29weSkKQEAg
LTIyMyw3ICsyMjMsNyBAQCAtICh2b2lkKV9mZXRjaERhdGFSZWNvcmRzT2ZUeXBlczooTlNTZXQ8
CiAKICAgICBPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlRGF0YUZldGNoT3B0aW9uPiBmZXRjaE9w
dGlvbnM7CiAgICAgaWYgKG9wdGlvbnMgJiBfV0tXZWJzaXRlRGF0YVN0b3JlRmV0Y2hPcHRpb25D
b21wdXRlU2l6ZXMpCi0gICAgICAgIGZldGNoT3B0aW9ucyB8PSBXZWJLaXQ6OldlYnNpdGVEYXRh
RmV0Y2hPcHRpb246OkNvbXB1dGVTaXplczsKKyAgICAgICAgZmV0Y2hPcHRpb25zLmFkZChXZWJL
aXQ6OldlYnNpdGVEYXRhRmV0Y2hPcHRpb246OkNvbXB1dGVTaXplcyk7CiAKICAgICBfd2Vic2l0
ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLmZldGNoRGF0YShXZWJLaXQ6OnRvV2Vic2l0
ZURhdGFUeXBlcyhkYXRhVHlwZXMpLCBmZXRjaE9wdGlvbnMsIFtjb21wbGV0aW9uSGFuZGxlckNv
cHkgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyQ29weSldKGF1dG8gd2Vic2l0ZURhdGFSZWNv
cmRzKSB7CiAgICAgICAgIFZlY3RvcjxSZWZQdHI8QVBJOjpPYmplY3Q+PiBlbGVtZW50czsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlUG9saWNpZXMu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dl
YnNpdGVQb2xpY2llcy5tbQkocmV2aXNpb24gMjM1NTE0KQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVQb2xpY2llcy5tbQkod29ya2luZyBjb3B5KQpAQCAt
NjQsMTMgKzY0LDEzIEBAIC0gKHZvaWQpc2V0QWxsb3dlZEF1dG9wbGF5UXVpcmtzOihfV0tXZWIK
ICAgICBPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlQXV0b3BsYXlRdWlyaz4gcXVpcmtzOwogCiAg
ICAgaWYgKGFsbG93ZWRRdWlya3MgJiBfV0tXZWJzaXRlQXV0b3BsYXlRdWlya0luaGVyaXRlZFVz
ZXJHZXN0dXJlcykKLSAgICAgICAgcXVpcmtzIHw9IFdlYktpdDo6V2Vic2l0ZUF1dG9wbGF5UXVp
cms6OkluaGVyaXRlZFVzZXJHZXN0dXJlczsKKyAgICAgICAgcXVpcmtzLmFkZChXZWJLaXQ6Oldl
YnNpdGVBdXRvcGxheVF1aXJrOjpJbmhlcml0ZWRVc2VyR2VzdHVyZXMpOwogCiAgICAgaWYgKGFs
bG93ZWRRdWlya3MgJiBfV0tXZWJzaXRlQXV0b3BsYXlRdWlya1N5bnRoZXNpemVkUGF1c2VFdmVu
dHMpCi0gICAgICAgIHF1aXJrcyB8PSBXZWJLaXQ6OldlYnNpdGVBdXRvcGxheVF1aXJrOjpTeW50
aGVzaXplZFBhdXNlRXZlbnRzOworICAgICAgICBxdWlya3MuYWRkKFdlYktpdDo6V2Vic2l0ZUF1
dG9wbGF5UXVpcms6OlN5bnRoZXNpemVkUGF1c2VFdmVudHMpOwogCiAgICAgaWYgKGFsbG93ZWRR
dWlya3MgJiBfV0tXZWJzaXRlQXV0b3BsYXlRdWlya0FyYml0cmFyeVVzZXJHZXN0dXJlcykKLSAg
ICAgICAgcXVpcmtzIHw9IFdlYktpdDo6V2Vic2l0ZUF1dG9wbGF5UXVpcms6OkFyYml0cmFyeVVz
ZXJHZXN0dXJlczsKKyAgICAgICAgcXVpcmtzLmFkZChXZWJLaXQ6OldlYnNpdGVBdXRvcGxheVF1
aXJrOjpBcmJpdHJhcnlVc2VyR2VzdHVyZXMpOwogCiAgICAgX3dlYnNpdGVQb2xpY2llcy0+c2V0
QWxsb3dlZEF1dG9wbGF5UXVpcmtzKHF1aXJrcyk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQkocmV2aXNpb24gMjM1NTE0KQorKysgU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0JKHdvcmtpbmcgY29weSkK
QEAgLTIxMTgsNyArMjExOCw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnZpZXdEaWRNb3ZlVG9XaW5k
b3coKQogICAgICAgICBpZiAobV9zaG91bGREZWZlclZpZXdJbldpbmRvd0NoYW5nZXMpCiAgICAg
ICAgICAgICBtX3ZpZXdJbldpbmRvd0NoYW5nZVdhc0RlZmVycmVkID0gdHJ1ZTsKICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgYWN0aXZpdHlTdGF0ZUNoYW5nZXMgfD0gV2ViQ29yZTo6QWN0aXZp
dHlTdGF0ZTo6SXNJbldpbmRvdzsKKyAgICAgICAgICAgIGFjdGl2aXR5U3RhdGVDaGFuZ2VzLmFk
ZChXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc0luV2luZG93KTsKICAgICAgICAgbV9wYWdlLT5h
Y3Rpdml0eVN0YXRlRGlkQ2hhbmdlKGFjdGl2aXR5U3RhdGVDaGFuZ2VzKTsKIAogICAgICAgICB1
cGRhdGVXaW5kb3dBbmRWaWV3RnJhbWVzKCk7CkBAIC0yMTQ0LDcgKzIxNDQsNyBAQCB2b2lkIFdl
YlZpZXdJbXBsOjp2aWV3RGlkTW92ZVRvV2luZG93KCkKICAgICAgICAgaWYgKG1fc2hvdWxkRGVm
ZXJWaWV3SW5XaW5kb3dDaGFuZ2VzKQogICAgICAgICAgICAgbV92aWV3SW5XaW5kb3dDaGFuZ2VX
YXNEZWZlcnJlZCA9IHRydWU7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGFjdGl2aXR5U3Rh
dGVDaGFuZ2VzIHw9IFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzSW5XaW5kb3c7CisgICAgICAg
ICAgICBhY3Rpdml0eVN0YXRlQ2hhbmdlcy5hZGQoV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNJ
bldpbmRvdyk7CiAgICAgICAgIG1fcGFnZS0+YWN0aXZpdHlTdGF0ZURpZENoYW5nZShhY3Rpdml0
eVN0YXRlQ2hhbmdlcyk7CiAKICAgICAgICAgW05TRXZlbnQgcmVtb3ZlTW9uaXRvcjptX2ZsYWdz
Q2hhbmdlZEV2ZW50TW9uaXRvcl07CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YVJlY29yZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFSZWNvcmQuY3BwCShyZXZpc2lvbiAy
MzU1MTQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YVJlY29yZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc5LDMwICs3OSwyNyBAQCBTdHJpbmcgV2Vi
c2l0ZURhdGFSZWNvcmQ6OmRpc3BsYXlOYW1lRm9yCiAKIHZvaWQgV2Vic2l0ZURhdGFSZWNvcmQ6
OmFkZChXZWJzaXRlRGF0YVR5cGUgdHlwZSwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhJiBvcmlnaW4pCiB7Ci0gICAgdHlwZXMgfD0gdHlwZTsKLQorICAgIHR5cGVzLmFkZCh0eXBl
KTsKICAgICBvcmlnaW5zLmFkZChvcmlnaW4pOwogfQogCiB2b2lkIFdlYnNpdGVEYXRhUmVjb3Jk
OjphZGRDb29raWVIb3N0TmFtZShjb25zdCBTdHJpbmcmIGhvc3ROYW1lKQogewotICAgIHR5cGVz
IHw9IFdlYnNpdGVEYXRhVHlwZTo6Q29va2llczsKLQorICAgIHR5cGVzLmFkZChXZWJzaXRlRGF0
YVR5cGU6OkNvb2tpZXMpOwogICAgIGNvb2tpZUhvc3ROYW1lcy5hZGQoaG9zdE5hbWUpOwogfQog
CiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiB2b2lkIFdlYnNpdGVEYXRhUmVjb3Jk
OjphZGRQbHVnaW5EYXRhSG9zdE5hbWUoY29uc3QgU3RyaW5nJiBob3N0TmFtZSkKIHsKLSAgICB0
eXBlcyB8PSBXZWJzaXRlRGF0YVR5cGU6OlBsdWdJbkRhdGE7Ci0KKyAgICB0eXBlcy5hZGQoV2Vi
c2l0ZURhdGFUeXBlOjpQbHVnSW5EYXRhKTsKICAgICBwbHVnaW5EYXRhSG9zdE5hbWVzLmFkZCho
b3N0TmFtZSk7CiB9CiAjZW5kaWYKIAogdm9pZCBXZWJzaXRlRGF0YVJlY29yZDo6YWRkSFNUU0Nh
Y2hlSG9zdG5hbWUoY29uc3QgU3RyaW5nJiBob3N0TmFtZSkKIHsKLSAgICB0eXBlcyB8PSBXZWJz
aXRlRGF0YVR5cGU6OkhTVFNDYWNoZTsKKyAgICB0eXBlcy5hZGQoV2Vic2l0ZURhdGFUeXBlOjpI
U1RTQ2FjaGUpOwogICAgIEhTVFNDYWNoZUhvc3ROYW1lcy5hZGQoaG9zdE5hbWUpOwogfQogCkBA
IC0xNTcsOCArMTU0LDcgQEAgU3RyaW5nIFdlYnNpdGVEYXRhUmVjb3JkOjp0b3BQcml2YXRlbHlD
bwogCiB2b2lkIFdlYnNpdGVEYXRhUmVjb3JkOjphZGRPcmlnaW5XaXRoQ3JlZGVudGlhbChjb25z
dCBTdHJpbmcmIG9yaWdpbikKIHsKLSAgICB0eXBlcyB8PSBXZWJzaXRlRGF0YVR5cGU6OkNyZWRl
bnRpYWxzOwotCisgICAgdHlwZXMuYWRkKFdlYnNpdGVEYXRhVHlwZTo6Q3JlZGVudGlhbHMpOwog
ICAgIG9yaWdpbnNXaXRoQ3JlZGVudGlhbHMuYWRkKG9yaWdpbik7CiB9CiAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS0luc3BlY3RvclZpZXdDb250cm9sbGVyLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS0luc3BlY3RvclZpZXdDb250
cm9sbGVyLm1tCShyZXZpc2lvbiAyMzU1MTQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9t
YWMvV0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbQkod29ya2luZyBjb3B5KQpAQCAtMjM4LDcg
KzIzOCw3IEBAIC0gKHZvaWQpaW5zcGVjdG9yV0tXZWJWaWV3UmVsb2FkOihXS0luc3AKIAogICAg
IE9wdGlvblNldDxXZWJDb3JlOjpSZWxvYWRPcHRpb24+IHJlbG9hZE9wdGlvbnM7CiAgICAgaWYg
KFdlYktpdDo6bGlua2VkT25PckFmdGVyKFdlYktpdDo6U0RLVmVyc2lvbjo6Rmlyc3RXaXRoRXhw
aXJlZE9ubHlSZWxvYWRCZWhhdmlvcikpCi0gICAgICAgIHJlbG9hZE9wdGlvbnMgfD0gV2ViQ29y
ZTo6UmVsb2FkT3B0aW9uOjpFeHBpcmVkT25seTsKKyAgICAgICAgcmVsb2FkT3B0aW9ucy5hZGQo
V2ViQ29yZTo6UmVsb2FkT3B0aW9uOjpFeHBpcmVkT25seSk7CiAKICAgICBfaW5zcGVjdGVkUGFn
ZS0+cmVsb2FkKHJlbG9hZE9wdGlvbnMpOwogfQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5q
ZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmNwcAkocmV2aXNpb24gMjM1NTE0KQorKysgU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5k
bGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzAsOSArMTcwLDkgQEAgc3RhdGljIFJlZlB0cjxX
ZWJJbWFnZT4gaW1hZ2VGb3JSZWN0KEZyYQogCiAgICAgYXV0byBwYWludEJlaGF2aW9yID0gZnJh
bWVWaWV3LT5wYWludEJlaGF2aW9yKCkgfCBQYWludEJlaGF2aW9yOjpGbGF0dGVuQ29tcG9zaXRp
bmdMYXllcnMgfCBQYWludEJlaGF2aW9yOjpTbmFwc2hvdHRpbmc7CiAgICAgaWYgKG9wdGlvbnMg
JiBTbmFwc2hvdE9wdGlvbnNGb3JjZUJsYWNrVGV4dCkKLSAgICAgICAgcGFpbnRCZWhhdmlvciB8
PSBQYWludEJlaGF2aW9yOjpGb3JjZUJsYWNrVGV4dDsKKyAgICAgICAgcGFpbnRCZWhhdmlvci5h
ZGQoUGFpbnRCZWhhdmlvcjo6Rm9yY2VCbGFja1RleHQpOwogICAgIGlmIChvcHRpb25zICYgU25h
cHNob3RPcHRpb25zRm9yY2VXaGl0ZVRleHQpCi0gICAgICAgIHBhaW50QmVoYXZpb3IgfD0gUGFp
bnRCZWhhdmlvcjo6Rm9yY2VXaGl0ZVRleHQ7CisgICAgICAgIHBhaW50QmVoYXZpb3IuYWRkKFBh
aW50QmVoYXZpb3I6OkZvcmNlV2hpdGVUZXh0KTsKIAogICAgIGF1dG8gb2xkUGFpbnRCZWhhdmlv
ciA9IGZyYW1lVmlldy0+cGFpbnRCZWhhdmlvcigpOwogICAgIGZyYW1lVmlldy0+c2V0UGFpbnRC
ZWhhdmlvcihwYWludEJlaGF2aW9yKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3Rl
ZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcAkocmV2aXNpb24gMjM1NTE0KQorKysgU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUwLDExICsxNTAsMTIgQEAgUmVmUHRyPFdlYkltYWdl
PiBJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZAogICAgIGdyYXBoaWNzQ29udGV4dC0+dHJhbnNsYXRl
KC1wYWludFJlY3QubG9jYXRpb24oKSk7CiAKICAgICBPcHRpb25TZXQ8UGFpbnRCZWhhdmlvcj4g
b2xkUGFpbnRCZWhhdmlvciA9IGZyYW1lVmlldy0+cGFpbnRCZWhhdmlvcigpOwotICAgIE9wdGlv
blNldDxQYWludEJlaGF2aW9yPiBwYWludEJlaGF2aW9yID0gb2xkUGFpbnRCZWhhdmlvciB8IFBh
aW50QmVoYXZpb3I6OlNlbGVjdGlvbk9ubHkgfCBQYWludEJlaGF2aW9yOjpGbGF0dGVuQ29tcG9z
aXRpbmdMYXllcnMgfCBQYWludEJlaGF2aW9yOjpTbmFwc2hvdHRpbmc7CisgICAgT3B0aW9uU2V0
PFBhaW50QmVoYXZpb3I+IHBhaW50QmVoYXZpb3IgPSBvbGRQYWludEJlaGF2aW9yOworICAgIHBh
aW50QmVoYXZpb3IuYWRkKHsgUGFpbnRCZWhhdmlvcjo6U2VsZWN0aW9uT25seSwgUGFpbnRCZWhh
dmlvcjo6RmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzLCBQYWludEJlaGF2aW9yOjpTbmFwc2hvdHRp
bmcgfSk7CiAgICAgaWYgKG9wdGlvbnMgJiBTbmFwc2hvdE9wdGlvbnNGb3JjZUJsYWNrVGV4dCkK
LSAgICAgICAgcGFpbnRCZWhhdmlvciB8PSBQYWludEJlaGF2aW9yOjpGb3JjZUJsYWNrVGV4dDsK
KyAgICAgICAgcGFpbnRCZWhhdmlvci5hZGQoUGFpbnRCZWhhdmlvcjo6Rm9yY2VCbGFja1RleHQp
OwogICAgIGlmIChvcHRpb25zICYgU25hcHNob3RPcHRpb25zRm9yY2VXaGl0ZVRleHQpCi0gICAg
ICAgIHBhaW50QmVoYXZpb3IgfD0gUGFpbnRCZWhhdmlvcjo6Rm9yY2VXaGl0ZVRleHQ7CisgICAg
ICAgIHBhaW50QmVoYXZpb3IuYWRkKFBhaW50QmVoYXZpb3I6OkZvcmNlV2hpdGVUZXh0KTsKIAog
ICAgIGZyYW1lVmlldy0+c2V0UGFpbnRCZWhhdmlvcihwYWludEJlaGF2aW9yKTsKICAgICBvd25l
ckRvY3VtZW50LnVwZGF0ZUxheW91dCgpOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMjM1NTE0KQor
KysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01NiwxNSArNTYsMTUgQEAgV2ViQ29yZTo6RmluZE9wdGlvbnMgY29y
ZShGaW5kT3B0aW9ucyBvcAogewogICAgIFdlYkNvcmU6OkZpbmRPcHRpb25zIHJlc3VsdDsKICAg
ICBpZiAob3B0aW9ucyAmIEZpbmRPcHRpb25zQ2FzZUluc2Vuc2l0aXZlKQotICAgICAgICByZXN1
bHQgfD0gV2ViQ29yZTo6Q2FzZUluc2Vuc2l0aXZlOworICAgICAgICByZXN1bHQuYWRkKFdlYkNv
cmU6OkNhc2VJbnNlbnNpdGl2ZSk7CiAgICAgaWYgKG9wdGlvbnMgJiBGaW5kT3B0aW9uc0F0V29y
ZFN0YXJ0cykKLSAgICAgICAgcmVzdWx0IHw9IFdlYkNvcmU6OkF0V29yZFN0YXJ0czsKKyAgICAg
ICAgcmVzdWx0LmFkZChXZWJDb3JlOjpBdFdvcmRTdGFydHMpOwogICAgIGlmIChvcHRpb25zICYg
RmluZE9wdGlvbnNUcmVhdE1lZGlhbENhcGl0YWxBc1dvcmRTdGFydCkKLSAgICAgICAgcmVzdWx0
IHw9IFdlYkNvcmU6OlRyZWF0TWVkaWFsQ2FwaXRhbEFzV29yZFN0YXJ0OworICAgICAgICByZXN1
bHQuYWRkKFdlYkNvcmU6OlRyZWF0TWVkaWFsQ2FwaXRhbEFzV29yZFN0YXJ0KTsKICAgICBpZiAo
b3B0aW9ucyAmIEZpbmRPcHRpb25zQmFja3dhcmRzKQotICAgICAgICByZXN1bHQgfD0gV2ViQ29y
ZTo6QmFja3dhcmRzOworICAgICAgICByZXN1bHQuYWRkKFdlYkNvcmU6OkJhY2t3YXJkcyk7CiAg
ICAgaWYgKG9wdGlvbnMgJiBGaW5kT3B0aW9uc1dyYXBBcm91bmQpCi0gICAgICAgIHJlc3VsdCB8
PSBXZWJDb3JlOjpXcmFwQXJvdW5kOworICAgICAgICByZXN1bHQuYWRkKFdlYkNvcmU6OldyYXBB
cm91bmQpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTIwNCw3ICsyMDQsNyBAQCB2b2lk
IEZpbmRDb250cm9sbGVyOjpmaW5kU3RyaW5nKGNvbnN0IFN0CiAgICAgLy8gd2UgbmVlZCB0byBh
dm9pZCBzZW5kaW5nIHRoZSBub24tcGFpbnRlZCBzZWxlY3Rpb24gY2hhbmdlIHRvIHRoZSBVSSBw
cm9jZXNzCiAgICAgLy8gc28gdGhhdCBpdCBkb2VzIG5vdCBjbGVhciB0aGUgc2VsZWN0aW9uIG91
dCBmcm9tIHVuZGVyIHVzLgogI2lmIFBMQVRGT1JNKElPUykKLSAgICBjb3JlT3B0aW9ucyB8PSBE
b05vdFJldmVhbFNlbGVjdGlvbjsKKyAgICBjb3JlT3B0aW9ucy5hZGQoRG9Ob3RSZXZlYWxTZWxl
Y3Rpb24pOwogI2VuZGlmCiAKICAgICB3aWxsRmluZFN0cmluZygpOwpJbmRleDogU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMjM1NTE0KQorKysgU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTgtMDgt
MzAgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgorCisgICAgICAgIFJlcGxhY2Ug
T3B0aW9uU2V0IHw9IGFuZCAtPSBvcGVyYXRvcnMgd2l0aCBhZGQoKSBhbmQgcmVtb3ZlKCkgZnVu
Y3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
ODkxNjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZyYW1lIF9kcmF3UmVjdDpjb250
ZW50c09ubHk6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoY29y
ZU9wdGlvbnMpOgorCiAyMDE4LTA4LTI5ICBPbGl2aWEgQmFybmV0dCAgPG9iYXJuZXR0QGFwcGxl
LmNvbT4KIAogICAgICAgICBJbXBsZW1lbnQgdGhlIFdlYiBTaGFyZSBBUEkKSW5kZXg6IFNvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQkocmV2aXNpb24gMjM1NTE0
KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtNjQ5LDE2ICs2NDksMTYgQEAgLSAodm9pZClfZHJhd1JlY3Q6KE5TUmVjdCly
ZWN0IGNvbnRlbnRzTwogICAgICAgICAvLyBGb3Igc3ViZnJhbWVzLCB3ZSBuZWVkIHRvIGluaGVy
aXQgdGhlIHBhaW50IGJlaGF2aW9yIGZyb20gb3VyIHBhcmVudAogICAgICAgICBpZiAoRnJhbWVW
aWV3KiBwYXJlbnRWaWV3ID0gcGFyZW50RnJhbWUgPyBwYXJlbnRGcmFtZS0+dmlldygpIDogbnVs
bHB0cikgewogICAgICAgICAgICAgaWYgKHBhcmVudFZpZXctPnBhaW50QmVoYXZpb3IoKS5jb250
YWlucyhQYWludEJlaGF2aW9yOjpGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMpKQotICAgICAgICAg
ICAgICAgIHBhaW50QmVoYXZpb3IgfD0gUGFpbnRCZWhhdmlvcjo6RmxhdHRlbkNvbXBvc2l0aW5n
TGF5ZXJzOworICAgICAgICAgICAgICAgIHBhaW50QmVoYXZpb3IuYWRkKFBhaW50QmVoYXZpb3I6
OkZsYXR0ZW5Db21wb3NpdGluZ0xheWVycyk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlm
IChwYXJlbnRWaWV3LT5wYWludEJlaGF2aW9yKCkuY29udGFpbnMoUGFpbnRCZWhhdmlvcjo6U25h
cHNob3R0aW5nKSkKLSAgICAgICAgICAgICAgICBwYWludEJlaGF2aW9yIHw9IFBhaW50QmVoYXZp
b3I6OlNuYXBzaG90dGluZzsKKyAgICAgICAgICAgICAgICBwYWludEJlaGF2aW9yLmFkZChQYWlu
dEJlaGF2aW9yOjpTbmFwc2hvdHRpbmcpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAo
cGFyZW50Vmlldy0+cGFpbnRCZWhhdmlvcigpLmNvbnRhaW5zKFBhaW50QmVoYXZpb3I6OlRpbGVG
aXJzdFBhaW50KSkKLSAgICAgICAgICAgICAgICBwYWludEJlaGF2aW9yIHw9IFBhaW50QmVoYXZp
b3I6OlRpbGVGaXJzdFBhaW50OworICAgICAgICAgICAgICAgIHBhaW50QmVoYXZpb3IuYWRkKFBh
aW50QmVoYXZpb3I6OlRpbGVGaXJzdFBhaW50KTsKICAgICAgICAgfQogICAgIH0gZWxzZQotICAg
ICAgICBwYWludEJlaGF2aW9yIHw9IFtzZWxmIF9wYWludEJlaGF2aW9yRm9yRGVzdGluYXRpb25D
b250ZXh0OmN0eF07CisgICAgICAgIHBhaW50QmVoYXZpb3IuYWRkKFtzZWxmIF9wYWludEJlaGF2
aW9yRm9yRGVzdGluYXRpb25Db250ZXh0OmN0eF0pOwogICAgICAgICAKICAgICB2aWV3LT5zZXRQ
YWludEJlaGF2aW9yKHBhaW50QmVoYXZpb3IpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCShyZXZpc2lvbiAyMzU1MTQpCisrKyBTb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTU3MSwx
NyArNTcxLDE3IEBAIEZpbmRPcHRpb25zIGNvcmVPcHRpb25zKFdlYkZpbmRPcHRpb25zIG8KIHsK
ICAgICBGaW5kT3B0aW9ucyBmaW5kT3B0aW9uczsKICAgICBpZiAob3B0aW9ucyAmIFdlYkZpbmRP
cHRpb25zQ2FzZUluc2Vuc2l0aXZlKQotICAgICAgICBmaW5kT3B0aW9ucyB8PSBDYXNlSW5zZW5z
aXRpdmU7CisgICAgICAgIGZpbmRPcHRpb25zLmFkZChDYXNlSW5zZW5zaXRpdmUpOwogICAgIGlm
IChvcHRpb25zICYgV2ViRmluZE9wdGlvbnNBdFdvcmRTdGFydHMpCi0gICAgICAgIGZpbmRPcHRp
b25zIHw9IEF0V29yZFN0YXJ0czsKKyAgICAgICAgZmluZE9wdGlvbnMuYWRkKEF0V29yZFN0YXJ0
cyk7CiAgICAgaWYgKG9wdGlvbnMgJiBXZWJGaW5kT3B0aW9uc1RyZWF0TWVkaWFsQ2FwaXRhbEFz
V29yZFN0YXJ0KQotICAgICAgICBmaW5kT3B0aW9ucyB8PSBUcmVhdE1lZGlhbENhcGl0YWxBc1dv
cmRTdGFydDsKKyAgICAgICAgZmluZE9wdGlvbnMuYWRkKFRyZWF0TWVkaWFsQ2FwaXRhbEFzV29y
ZFN0YXJ0KTsKICAgICBpZiAob3B0aW9ucyAmIFdlYkZpbmRPcHRpb25zQmFja3dhcmRzKQotICAg
ICAgICBmaW5kT3B0aW9ucyB8PSBCYWNrd2FyZHM7CisgICAgICAgIGZpbmRPcHRpb25zLmFkZChC
YWNrd2FyZHMpOwogICAgIGlmIChvcHRpb25zICYgV2ViRmluZE9wdGlvbnNXcmFwQXJvdW5kKQot
ICAgICAgICBmaW5kT3B0aW9ucyB8PSBXcmFwQXJvdW5kOworICAgICAgICBmaW5kT3B0aW9ucy5h
ZGQoV3JhcEFyb3VuZCk7CiAgICAgaWYgKG9wdGlvbnMgJiBXZWJGaW5kT3B0aW9uc1N0YXJ0SW5T
ZWxlY3Rpb24pCi0gICAgICAgIGZpbmRPcHRpb25zIHw9IFN0YXJ0SW5TZWxlY3Rpb247CisgICAg
ICAgIGZpbmRPcHRpb25zLmFkZChTdGFydEluU2VsZWN0aW9uKTsKICAgICByZXR1cm4gZmluZE9w
dGlvbnM7CiB9CiAKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDIzNTUzOCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDE4LTA4LTMxICBBbnR0aSBLb2l2aXN0byAgPGFudHRp
QGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIE9wdGlvblNldCB8PSBhbmQgLT0gb3BlcmF0
b3JzIHdpdGggYWRkKCkgYW5kIHJlbW92ZSgpIGZ1bmN0aW9ucworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg5MTY5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9P
cHRpb25TZXQuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisKIDIwMTgtMDgt
MzAgIFRob21hcyBEZW5uZXkgIDx0ZGVubmV5QGFwcGxlLmNvbT4KIAogICAgICAgICBbV0hMU0xd
IEZpeCBhcnJheSBpbmRleGluZyBiZWhhdmlvcgpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvT3B0aW9uU2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dURi9PcHRpb25TZXQuY3BwCShyZXZpc2lvbiAyMzU1MTQpCisrKyBUb29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dURi9PcHRpb25TZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Niwx
NiArOTYsMjkgQEAgVEVTVChXVEZfT3B0aW9uU2V0LCBNaW51cykKICAgICBFWFBFQ1RfVFJVRSgo
c2V0IC0gc2V0KS5pc0VtcHR5KCkpOwogfQogCi1URVNUKFdURl9PcHRpb25TZXQsIE1pbnVzRXF1
YWwpCitURVNUKFdURl9PcHRpb25TZXQsIEFkZEFuZFJlbW92ZSkKIHsKLSAgICBPcHRpb25TZXQ8
RXhhbXBsZUZsYWdzPiBzZXQgeyBFeGFtcGxlRmxhZ3M6OkEsIEV4YW1wbGVGbGFnczo6QiwgRXhh
bXBsZUZsYWdzOjpDIH07CisgICAgT3B0aW9uU2V0PEV4YW1wbGVGbGFncz4gc2V0OwogCi0gICAg
RVhQRUNUX1RSVUUoKChzZXQgLT0gRXhhbXBsZUZsYWdzOjpBKSA9PSBPcHRpb25TZXQ8RXhhbXBs
ZUZsYWdzPiB7IEV4YW1wbGVGbGFnczo6QiwgRXhhbXBsZUZsYWdzOjpDIH0pKTsKLSAgICBFWFBF
Q1RfVFJVRSgoc2V0ID09IE9wdGlvblNldDxFeGFtcGxlRmxhZ3M+IHsgRXhhbXBsZUZsYWdzOjpC
LCBFeGFtcGxlRmxhZ3M6OkMgfSkpOwotICAgIEVYUEVDVF9UUlVFKCgoc2V0IC09IEV4YW1wbGVG
bGFnczo6RCkgPT0gT3B0aW9uU2V0PEV4YW1wbGVGbGFncz4geyBFeGFtcGxlRmxhZ3M6OkIsIEV4
YW1wbGVGbGFnczo6QyB9KSk7Ci0gICAgRVhQRUNUX1RSVUUoKHNldCA9PSBPcHRpb25TZXQ8RXhh
bXBsZUZsYWdzPiB7IEV4YW1wbGVGbGFnczo6QiwgRXhhbXBsZUZsYWdzOjpDIH0pKTsKLSAgICBF
WFBFQ1RfVFJVRSgoc2V0IC09IHNldCkuaXNFbXB0eSgpKTsKLSAgICBFWFBFQ1RfVFJVRShzZXQu
aXNFbXB0eSgpKTsKKyAgICBzZXQuYWRkKEV4YW1wbGVGbGFnczo6QSk7CisgICAgRVhQRUNUX1RS
VUUoc2V0LmNvbnRhaW5zKEV4YW1wbGVGbGFnczo6QSkpOworICAgIEVYUEVDVF9GQUxTRShzZXQu
Y29udGFpbnMoRXhhbXBsZUZsYWdzOjpCKSk7CisgICAgRVhQRUNUX0ZBTFNFKHNldC5jb250YWlu
cyhFeGFtcGxlRmxhZ3M6OkMpKTsKKworICAgIHNldC5hZGQoeyBFeGFtcGxlRmxhZ3M6OkIsIEV4
YW1wbGVGbGFnczo6QyB9KTsKKyAgICBFWFBFQ1RfVFJVRShzZXQuY29udGFpbnMoRXhhbXBsZUZs
YWdzOjpBKSk7CisgICAgRVhQRUNUX1RSVUUoc2V0LmNvbnRhaW5zKEV4YW1wbGVGbGFnczo6Qikp
OworICAgIEVYUEVDVF9UUlVFKHNldC5jb250YWlucyhFeGFtcGxlRmxhZ3M6OkMpKTs7CisKKyAg
ICBzZXQucmVtb3ZlKEV4YW1wbGVGbGFnczo6Qik7CisgICAgRVhQRUNUX1RSVUUoc2V0LmNvbnRh
aW5zKEV4YW1wbGVGbGFnczo6QSkpOworICAgIEVYUEVDVF9GQUxTRShzZXQuY29udGFpbnMoRXhh
bXBsZUZsYWdzOjpCKSk7CisgICAgRVhQRUNUX1RSVUUoc2V0LmNvbnRhaW5zKEV4YW1wbGVGbGFn
czo6QykpOworCisgICAgc2V0LnJlbW92ZSh7IEV4YW1wbGVGbGFnczo6QSwgRXhhbXBsZUZsYWdz
OjpDIH0pOworICAgIEVYUEVDVF9GQUxTRShzZXQuY29udGFpbnMoRXhhbXBsZUZsYWdzOjpBKSk7
CisgICAgRVhQRUNUX0ZBTFNFKHNldC5jb250YWlucyhFeGFtcGxlRmxhZ3M6OkIpKTsKKyAgICBF
WFBFQ1RfRkFMU0Uoc2V0LmNvbnRhaW5zKEV4YW1wbGVGbGFnczo6QykpOwogfQogCiBURVNUKFdU
Rl9PcHRpb25TZXQsIENvbnRhaW5zVHdvRmxhZ3MpCkBAIC0xNDEsMTUgKzE1NCw2IEBAIFRFU1Qo
V1RGX09wdGlvblNldCwgQ29udGFpbnNUd29GbGFnczMpCiAgICAgRVhQRUNUX0ZBTFNFKHNldC5j
b250YWlucyhFeGFtcGxlRmxhZ3M6OkMpKTsKIH0KIAotVEVTVChXVEZfT3B0aW9uU2V0LCBPcGVy
YXRvckJpdHdpc2VPcikKLXsKLSAgICBPcHRpb25TZXQ8RXhhbXBsZUZsYWdzPiBzZXQgPSBFeGFt
cGxlRmxhZ3M6OkE7Ci0gICAgc2V0IHw9IEV4YW1wbGVGbGFnczo6QzsKLSAgICBFWFBFQ1RfVFJV
RShzZXQuY29udGFpbnMoRXhhbXBsZUZsYWdzOjpBKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKHNldC5j
b250YWlucyhFeGFtcGxlRmxhZ3M6OkIpKTsKLSAgICBFWFBFQ1RfVFJVRShzZXQuY29udGFpbnMo
RXhhbXBsZUZsYWdzOjpDKSk7Ci19Ci0KIFRFU1QoV1RGX09wdGlvblNldCwgRW1wdHlPcHRpb25T
ZXRUb1Jhd1ZhbHVlVG9PcHRpb25TZXQpCiB7CiAgICAgT3B0aW9uU2V0PEV4YW1wbGVGbGFncz4g
c2V0OwpAQCAtMzAyLDEwICszMDYsMTAgQEAgVEVTVChXVEZfT3B0aW9uU2V0LCBOZXh0SXRlbUFm
dGVyTGFyZ2VzdAogVEVTVChXVEZfT3B0aW9uU2V0LCBJdGVyYXRpb25PcmRlclRoZVNhbWVSZWdh
cmRsZXNzT2ZJbnNlcnRpb25PcmRlcikKIHsKICAgICBPcHRpb25TZXQ8RXhhbXBsZUZsYWdzPiBz
ZXQxID0gRXhhbXBsZUZsYWdzOjpDOwotICAgIHNldDEgfD0gRXhhbXBsZUZsYWdzOjpBOworICAg
IHNldDEuYWRkKEV4YW1wbGVGbGFnczo6QSk7CiAKICAgICBPcHRpb25TZXQ8RXhhbXBsZUZsYWdz
PiBzZXQyID0gRXhhbXBsZUZsYWdzOjpBOwotICAgIHNldDIgfD0gRXhhbXBsZUZsYWdzOjpDOwor
ICAgIHNldDIuYWRkKEV4YW1wbGVGbGFnczo6Qyk7CiAKICAgICBPcHRpb25TZXQ8RXhhbXBsZUZs
YWdzPjo6aXRlcmF0b3IgaXQxID0gc2V0MS5iZWdpbigpOwogICAgIE9wdGlvblNldDxFeGFtcGxl
RmxhZ3M+OjppdGVyYXRvciBpdDIgPSBzZXQyLmJlZ2luKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>348620</attachid>
            <date>2018-08-31 01:15:37 -0700</date>
            <delta_ts>2018-08-31 02:06:28 -0700</delta_ts>
            <desc>patch</desc>
            <filename>optionset-add-remove-3.patch</filename>
            <type>text/plain</type>
            <size>106151</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyMzU1MTQpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDE4LTA4LTMwICBBbnR0aSBLb2l2aXN0byAgPGFu
dHRpQGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIE9wdGlvblNldCB8PSBhbmQgLT0gb3Bl
cmF0b3JzIHdpdGggYWRkKCkgYW5kIHJlbW92ZSgpIGZ1bmN0aW9ucworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg5MTY5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wcm92ZSBjb2RlIHJlYWRhYmlsaXR5
LgorCisgICAgICAgICogd3RmL09wdGlvblNldC5oOgorICAgICAgICAoV1RGOjpPcHRpb25TZXQ6
OmFkZCk6CisgICAgICAgIChXVEY6Ok9wdGlvblNldDo6cmVtb3ZlKToKKyAgICAgICAgKFdURjo6
T3B0aW9uU2V0OjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdURjo6T3B0aW9uU2V0OjpvcGVyYXRv
ciE9KToKKyAgICAgICAgKFdURjo6T3B0aW9uU2V0OjpvcGVyYXRvcnw9KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdURjo6T3B0aW9uU2V0OjpvcGVyYXRvci09KTogRGVsZXRlZC4KKyAgICAgICAgKiB3
dGYvUHJvY2Vzc1ByaXZpbGVnZS5jcHA6CisgICAgICAgIChXVEY6OmFkZFByb2Nlc3NQcml2aWxl
Z2UpOgorICAgICAgICAoV1RGOjpyZW1vdmVQcm9jZXNzUHJpdmlsZWdlKToKKwogMjAxOC0wOC0y
OSAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFtZSB3
dGYvdGV4dC9tYWMvU3RyaW5nTWFjLm1tIHRvIHd0Zi90ZXh0L2NvY29jYS9TdHJpbmdDb2NvY2Eu
bW0KSW5kZXg6IFNvdXJjZS9XVEYvd3RmL09wdGlvblNldC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XVEYvd3RmL09wdGlvblNldC5oCShyZXZpc2lvbiAyMzU1MTQpCisrKyBTb3VyY2UvV1RGL3d0
Zi9PcHRpb25TZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMTExLDI2ICsxMTEsMjQgQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gKCp0aGlzICYgb3B0aW9uU2V0KSA9PSBvcHRpb25TZXQ7CiAgICAg
fQogCi0gICAgY29uc3RleHByIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oT3B0aW9uU2V0IGxocywg
T3B0aW9uU2V0IHJocykKKyAgICBjb25zdGV4cHIgdm9pZCBhZGQoT3B0aW9uU2V0IG9wdGlvblNl
dCkKICAgICB7Ci0gICAgICAgIHJldHVybiBsaHMubV9zdG9yYWdlID09IHJocy5tX3N0b3JhZ2U7
CisgICAgICAgIG1fc3RvcmFnZSB8PSBvcHRpb25TZXQubV9zdG9yYWdlOwogICAgIH0KIAotICAg
IGNvbnN0ZXhwciBmcmllbmQgYm9vbCBvcGVyYXRvciE9KE9wdGlvblNldCBsaHMsIE9wdGlvblNl
dCByaHMpCisgICAgY29uc3RleHByIHZvaWQgcmVtb3ZlKE9wdGlvblNldCBvcHRpb25TZXQpCiAg
ICAgewotICAgICAgICByZXR1cm4gbGhzLm1fc3RvcmFnZSAhPSByaHMubV9zdG9yYWdlOworICAg
ICAgICBtX3N0b3JhZ2UgJj0gfm9wdGlvblNldC5tX3N0b3JhZ2U7CiAgICAgfQogCi0gICAgZnJp
ZW5kIE9wdGlvblNldCYgb3BlcmF0b3J8PShPcHRpb25TZXQmIGxocywgT3B0aW9uU2V0IHJocykK
KyAgICBjb25zdGV4cHIgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShPcHRpb25TZXQgbGhzLCBPcHRp
b25TZXQgcmhzKQogICAgIHsKLSAgICAgICAgbGhzLm1fc3RvcmFnZSB8PSByaHMubV9zdG9yYWdl
OwotICAgICAgICByZXR1cm4gbGhzOworICAgICAgICByZXR1cm4gbGhzLm1fc3RvcmFnZSA9PSBy
aHMubV9zdG9yYWdlOwogICAgIH0KIAotICAgIGZyaWVuZCBPcHRpb25TZXQmIG9wZXJhdG9yLT0o
T3B0aW9uU2V0JiBsaHMsIE9wdGlvblNldCByaHMpCisgICAgY29uc3RleHByIGZyaWVuZCBib29s
IG9wZXJhdG9yIT0oT3B0aW9uU2V0IGxocywgT3B0aW9uU2V0IHJocykKICAgICB7Ci0gICAgICAg
IGxocy5tX3N0b3JhZ2UgJj0gfnJocy5tX3N0b3JhZ2U7Ci0gICAgICAgIHJldHVybiBsaHM7Cisg
ICAgICAgIHJldHVybiBsaHMubV9zdG9yYWdlICE9IHJocy5tX3N0b3JhZ2U7CiAgICAgfQogCiAg
ICAgY29uc3RleHByIGZyaWVuZCBPcHRpb25TZXQgb3BlcmF0b3J8KE9wdGlvblNldCBsaHMsIE9w
dGlvblNldCByaHMpCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9Qcm9jZXNzUHJpdmlsZWdlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9Qcm9jZXNzUHJpdmlsZWdlLmNwcAkocmV2aXNp
b24gMjM1NTE0KQorKysgU291cmNlL1dURi93dGYvUHJvY2Vzc1ByaXZpbGVnZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTU3LDEyICs1NywxMiBAQCBib29sIGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJv
Y2Vzc1ByaXZpbGVnCiAKIHZvaWQgYWRkUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdl
IHByaXZpbGVnZSkKIHsKLSAgICBwcm9jZXNzUHJpdmlsZWdlcygpIHw9IHByaXZpbGVnZTsKKyAg
ICBwcm9jZXNzUHJpdmlsZWdlcygpLmFkZChwcml2aWxlZ2UpOwogfQogCiB2b2lkIHJlbW92ZVBy
b2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZSBwcml2aWxlZ2UpCiB7Ci0gICAgcHJvY2Vz
c1ByaXZpbGVnZXMoKSA9IHByb2Nlc3NQcml2aWxlZ2VzKCkgLSBwcml2aWxlZ2U7CisgICAgcHJv
Y2Vzc1ByaXZpbGVnZXMoKS5yZW1vdmUocHJpdmlsZWdlKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V1RGCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzU1MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMTkgQEAKKzIwMTgtMDgtMzAgIEFu
dHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgorCisgICAgICAgIFJlcGxhY2UgT3B0aW9u
U2V0IHw9IGFuZCAtPSBvcGVyYXRvcnMgd2l0aCBhZGQoKSBhbmQgcmVtb3ZlKCkgZnVuY3Rpb25z
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODkxNjkK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGFjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpyYW5nZU9mU3RyaW5nQ2xvc2VzdFRvUmFuZ2VJbkRpcmVjdGlvbiBj
b25zdCk6CisgICAgICAgICogY3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VGV4dERlY29yYXRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VGV4dEVtcGhh
c2lzUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVyQ29udmVydGVyOjpj
b252ZXJ0VGV4dFVuZGVybGluZVBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVp
bGRlckNvbnZlcnRlcjo6Y29udmVydFRleHREZWNvcmF0aW9uU2tpcCk6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRTcGVha0FzKToKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEhhbmdpbmdQdW5jdHVhdGlvbik6
CisgICAgICAgICogY3NzL3BhcnNlci9DU1NQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTUGFyc2VyOjpwYXJzZVN5c3RlbUNvbG9yKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnN0eWxlQ29sb3JPcHRpb25zIGNvbnN0KToK
KyAgICAgICAgKiBkb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6YWRkTWFya2VyKToKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6cmVtb3ZlTWFya2Vycyk6CisgICAgICAg
ICogZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXI6OmFkZFRocm90dGxpbmdSZWFzb24pOgorICAg
ICAgICAoV2ViQ29yZTo6U2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyOjpyZW1vdmVUaHJvdHRs
aW5nUmVhc29uKToKKyAgICAgICAgKiBkb20vU2VjdXJpdHlDb250ZXh0Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpTZWN1cml0eUNvbnRleHQ6OnNldEZvdW5kTWl4ZWRDb250ZW50KToKKyAgICAgICAg
KiBkb20vVUlFdmVudFdpdGhLZXlTdGF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpVSUV2ZW50
V2l0aEtleVN0YXRlOjptb2RpZmllcnNGcm9tSW5pdGlhbGl6ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6VUlFdmVudFdpdGhLZXlTdGF0ZTo6c2V0TW9kaWZpZXJLZXlzKToKKyAgICAgICAgKiBkb20v
VXNlckFjdGlvbkVsZW1lbnRTZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VXNlckFjdGlvbkVs
ZW1lbnRTZXQ6OnNldEZsYWdzKToKKyAgICAgICAgKiBlZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21t
YW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0ZUVkaXRDb21tYW5kOjptb3ZlUGFy
YWdyYXBocyk6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RWRpdG9yOjpyZXBsYWNlU2VsZWN0aW9uV2l0aEZyYWdtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkVkaXRvcjo6YXBwbGllZEVkaXRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpt
YXJrTWlzc3BlbGxpbmdzQWZ0ZXJUeXBpbmdUb1dvcmQpOgorICAgICAgICAoV2ViQ29yZTo6RWRp
dG9yOjptYXJrTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hcik6CisgICAgICAgIChXZWJDb3JlOjpF
ZGl0b3I6OnJlc29sdmVUZXh0Q2hlY2tpbmdUeXBlTWFzayk6CisgICAgICAgICogZWRpdGluZy9G
cmFtZVNlbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6bW92
ZVdpdGhvdXRWYWxpZGF0aW9uVG8pOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246
OnNldFNlbGVjdGVkUmFuZ2UpOgorICAgICAgICAqIGVkaXRpbmcvRnJhbWVTZWxlY3Rpb24uaDoK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpkZWZhdWx0U2V0U2VsZWN0aW9uT3B0
aW9ucyk6CisgICAgICAgICogZWRpdGluZy9Nb3ZlU2VsZWN0aW9uQ29tbWFuZC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpNb3ZlU2VsZWN0aW9uQ29tbWFuZDo6ZG9BcHBseSk6CisgICAgICAgICog
ZWRpdGluZy9TcGVsbENoZWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3BlbGxDaGVja2Vy
OjpkaWRDaGVja1N1Y2NlZWQpOgorICAgICAgICAqIGVkaXRpbmcvVGV4dENoZWNraW5nSGVscGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0TWlz
c3BlbGxpbmdPckJhZEdyYW1tYXIpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENoZWNraW5nSGVs
cGVyOjpndWVzc2VzRm9yTWlzc3BlbGxlZE9yVW5ncmFtbWF0aWNhbFJhbmdlIGNvbnN0KToKKyAg
ICAgICAgKiBlZGl0aW5nL1RleHRJdGVyYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWFy
Y2hCdWZmZXI6OlNlYXJjaEJ1ZmZlcik6CisgICAgICAgICogaHRtbC9IVE1MQW5jaG9yRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQW5jaG9yRWxlbWVudDo6cGFyc2VBdHRyaWJ1
dGUpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6cmVsb2FkKToKKyAgICAgICAg
KiBwYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZXh0TWVudUNvbnRyb2xsZXI6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKToKKyAgICAgICAgKiBw
YWdlL0RPTVdpbmRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OmZpbmQgY29u
c3QpOgorICAgICAgICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RHJhZ0NvbnRyb2xsZXI6OmNvbmNsdWRlRWRpdERyYWcpOgorICAgICAgICAqIHBhZ2UvRnJh
bWVTbmFwc2hvdHRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c25hcHNob3RGcmFtZVJlY3RX
aXRoQ2xpcCk6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6dXBkYXRlTGF5ZXJQb3NpdGlvbkZsYWdzKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmll
dzo6d2lsbFBhaW50Q29udGVudHMpOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpQYWdlOjpzZXRJc1Zpc2libGUpOgorICAgICAgICAqIHBhZ2UvUGVyZm9ybWFu
Y2VPYnNlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQZXJmb3JtYW5jZU9ic2VydmVyOjpv
YnNlcnZlKToKKyAgICAgICAgKiBwYWdlL1RleHRJbmRpY2F0b3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dEluZGljYXRvcjo6Y3JlYXRlV2l0aFJhbmdlKToKKyAgICAgICAgKiBwYWdlL1dp
bmRvd0ZlYXR1cmVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlRGlzYWJsZWRBZGFwdGF0
aW9ucyk6CisgICAgICAgICogcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFkZEhhc2hBbGdvcml0aG1zRm9y
SW5saW5lU2NyaXB0cyk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k6
OmFkZEhhc2hBbGdvcml0aG1zRm9ySW5saW5lU3R5bGVzaGVldHMpOgorICAgICAgICAqIHBhZ2Uv
Y3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdDo6cGFyc2VIYXNoU291cmNlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybUV2ZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpQbGF0
Zm9ybUV2ZW50OjpQbGF0Zm9ybUV2ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUGxhdGZv
cm1FdmVudEZhY3RvcnlJT1MubW06CisgICAgICAgIChXZWJDb3JlOjptb2RpZmllcnNGb3JFdmVu
dCk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1BsYXRmb3JtRXZlbnRGYWN0b3J5TWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6bW9kaWZpZXJzRm9yRXZlbnQpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6dXBkYXRl
TGF5ZXJQb3NpdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnVwZGF0ZUxh
eWVyUG9zaXRpb25zQWZ0ZXJTY3JvbGwpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6
OnBhaW50TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJD
b250ZW50c0FuZFJlZmxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBh
aW50TGF5ZXJDb250ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFpbnRG
b3JlZ3JvdW5kRm9yRnJhZ21lbnRzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJC
YWNraW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6cGFpbnRJ
bnRvTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjpwYWludENv
bnRlbnRzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVhc29uc0ZvckNvbXBv
c2l0aW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6
dXBkYXRlU2Nyb2xsQ29vcmRpbmF0ZWRTdGF0dXMpOgorICAgICAgICAqIHJlbmRlcmluZy9UZXh0
RGVjb3JhdGlvblBhaW50ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29sbGVjdFN0eWxlc0Zv
clJlbmRlcmVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvVGV4dFBhaW50U3R5bGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Y29tcHV0ZVRleHRQYWludFN0eWxlKToKKyAgICAgICAgKiByZW5kZXJp
bmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6
OmNoYW5nZVJlcXVpcmVzTGF5b3V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0
eWxlOjpjaGFuZ2VSZXF1aXJlc0xheWVyUmVwYWludCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTdHlsZTo6Y2hhbmdlUmVxdWlyZXNSZXBhaW50IGNvbnN0KToKKyAgICAgICAgKiB0
ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUZpbmRPcHRpb25z
KToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6Zm9yY2VSZWxvYWQpOgorICAgICAgICAo
V2ViQ29yZTo6SW50ZXJuYWxzOjpzZXRQYWdlVmlzaWJpbGl0eSk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnRlcm5hbHM6OnNldFBhZ2VJc0ZvY3VzZWRBbmRBY3RpdmUpOgorCiAyMDE4LTA4LTMwICBF
cmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgogCiAgICAgICAgIE1vY2sgdmlk
ZW8gZGV2aWNlcyBzaG91bGQgb25seSBzdXBwb3J0IGRpc2NyZXRlIHNpemVzCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5j
cHAJKHJldmlzaW9uIDIzNTUxNCkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc1MSw5ICs3NTEsOSBAQCBS
ZWZQdHI8UmFuZ2U+IEFjY2Vzc2liaWxpdHlPYmplY3Q6OnJhbmdlCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIAogICAgIGJvb2wgaXNCYWNrd2FyZFNlYXJjaCA9IHNlYXJjaERpcmVjdGlv
biA9PSBBY2Nlc3NpYmlsaXR5U2VhcmNoRGlyZWN0aW9uOjpQcmV2aW91czsKLSAgICBGaW5kT3B0
aW9ucyBmaW5kT3B0aW9ucyB7IHsgQXRXb3JkU3RhcnRzLCBBdFdvcmRFbmRzLCBDYXNlSW5zZW5z
aXRpdmUsIFN0YXJ0SW5TZWxlY3Rpb24gfSB9OworICAgIEZpbmRPcHRpb25zIGZpbmRPcHRpb25z
IHsgQXRXb3JkU3RhcnRzLCBBdFdvcmRFbmRzLCBDYXNlSW5zZW5zaXRpdmUsIFN0YXJ0SW5TZWxl
Y3Rpb24gfTsKICAgICBpZiAoaXNCYWNrd2FyZFNlYXJjaCkKLSAgICAgICAgZmluZE9wdGlvbnMg
fD0gQmFja3dhcmRzOworICAgICAgICBmaW5kT3B0aW9ucy5hZGQoQmFja3dhcmRzKTsKICAgICAK
ICAgICBSZWZQdHI8UmFuZ2U+IGNsb3Nlc3RTdHJpbmdSYW5nZSA9IG51bGxwdHI7CiAgICAgZm9y
IChjb25zdCBhdXRvJiBzZWFyY2hTdHJpbmcgOiBzZWFyY2hTdHJpbmdzKSB7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oCShyZXZpc2lvbiAyMzU1MTQp
CisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM5NCw3ICszOTQsNyBAQCBpbmxpbmUgT3B0aW9uU2V0PFRleHREZWNvcmF0aW9u
PiBTdHlsZUJ1CiAgICAgYXV0byByZXN1bHQgPSBSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHREZWNv
cmF0aW9uKCk7CiAgICAgaWYgKGlzPENTU1ZhbHVlTGlzdD4odmFsdWUpKSB7CiAgICAgICAgIGZv
ciAoYXV0byYgY3VycmVudFZhbHVlIDogZG93bmNhc3Q8Q1NTVmFsdWVMaXN0Pih2YWx1ZSkpCi0g
ICAgICAgICAgICByZXN1bHQgfD0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KGN1cnJlbnRW
YWx1ZS5nZXQoKSk7CisgICAgICAgICAgICByZXN1bHQuYWRkKGRvd25jYXN0PENTU1ByaW1pdGl2
ZVZhbHVlPihjdXJyZW50VmFsdWUuZ2V0KCkpKTsKICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KQEAgLTQ5OCw3ICs0OTgsNyBAQCBpbmxpbmUgT3B0aW9uU2V0PFRleHRFbXBoYXNpc1Bvc2l0
aW9uPiBTCiAKICAgICBPcHRpb25TZXQ8VGV4dEVtcGhhc2lzUG9zaXRpb24+IHBvc2l0aW9uOwog
ICAgIGZvciAoYXV0byYgY3VycmVudFZhbHVlIDogZG93bmNhc3Q8Q1NTVmFsdWVMaXN0Pih2YWx1
ZSkpCi0gICAgICAgIHBvc2l0aW9uIHw9IHZhbHVlVG9FbXBoYXNpc1Bvc2l0aW9uKGRvd25jYXN0
PENTU1ByaW1pdGl2ZVZhbHVlPihjdXJyZW50VmFsdWUuZ2V0KCkpKTsKKyAgICAgICAgcG9zaXRp
b24uYWRkKHZhbHVlVG9FbXBoYXNpc1Bvc2l0aW9uKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVl
PihjdXJyZW50VmFsdWUuZ2V0KCkpKSk7CiAgICAgcmV0dXJuIHBvc2l0aW9uOwogfQogCkBAIC02
NDUsNyArNjQ1LDcgQEAgaW5saW5lIE9wdGlvblNldDxUZXh0VW5kZXJsaW5lUG9zaXRpb24+IAog
CiAgICAgT3B0aW9uU2V0PFRleHRVbmRlcmxpbmVQb3NpdGlvbj4gY29tYmluZWRQb3NpdGlvbjsK
ICAgICBmb3IgKGF1dG8mIGN1cnJlbnRWYWx1ZSA6IGRvd25jYXN0PENTU1ZhbHVlTGlzdD4odmFs
dWUpKQotICAgICAgICBjb21iaW5lZFBvc2l0aW9uIHw9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlPihjdXJyZW50VmFsdWUuZ2V0KCkpOworICAgICAgICBjb21iaW5lZFBvc2l0aW9uLmFkZChk
b3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oY3VycmVudFZhbHVlLmdldCgpKSk7CiAgICAgcmV0
dXJuIGNvbWJpbmVkUG9zaXRpb247CiB9CiAKQEAgLTc1Myw3ICs3NTMsNyBAQCBpbmxpbmUgT3B0
aW9uU2V0PFRleHREZWNvcmF0aW9uU2tpcD4gU3R5CiAKICAgICBPcHRpb25TZXQ8VGV4dERlY29y
YXRpb25Ta2lwPiBza2lwOwogICAgIGZvciAoYXV0byYgY3VycmVudFZhbHVlIDogZG93bmNhc3Q8
Q1NTVmFsdWVMaXN0Pih2YWx1ZSkpCi0gICAgICAgIHNraXAgfD0gdmFsdWVUb0RlY29yYXRpb25T
a2lwKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPihjdXJyZW50VmFsdWUuZ2V0KCkpKTsKKyAg
ICAgICAgc2tpcC5hZGQodmFsdWVUb0RlY29yYXRpb25Ta2lwKGRvd25jYXN0PENTU1ByaW1pdGl2
ZVZhbHVlPihjdXJyZW50VmFsdWUuZ2V0KCkpKSk7CiAgICAgcmV0dXJuIHNraXA7CiB9CiAKQEAg
LTE1MDQsNyArMTUwNCw3IEBAIGlubGluZSBPcHRpb25TZXQ8U3BlYWtBcz4gU3R5bGVCdWlsZGVy
Q28KICAgICBhdXRvIHJlc3VsdCA9IFJlbmRlclN0eWxlOjppbml0aWFsU3BlYWtBcygpOwogICAg
IGlmIChpczxDU1NWYWx1ZUxpc3Q+KHZhbHVlKSkgewogICAgICAgICBmb3IgKGF1dG8mIGN1cnJl
bnRWYWx1ZSA6IGRvd25jYXN0PENTU1ZhbHVlTGlzdD4odmFsdWUpKQotICAgICAgICAgICAgcmVz
dWx0IHw9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPihjdXJyZW50VmFsdWUuZ2V0KCkpOwor
ICAgICAgICAgICAgcmVzdWx0LmFkZChkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oY3VycmVu
dFZhbHVlLmdldCgpKSk7CiAgICAgfQogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC0xNTE0LDcg
KzE1MTQsNyBAQCBpbmxpbmUgT3B0aW9uU2V0PEhhbmdpbmdQdW5jdHVhdGlvbj4gU3R5CiAgICAg
YXV0byByZXN1bHQgPSBSZW5kZXJTdHlsZTo6aW5pdGlhbEhhbmdpbmdQdW5jdHVhdGlvbigpOwog
ICAgIGlmIChpczxDU1NWYWx1ZUxpc3Q+KHZhbHVlKSkgewogICAgICAgICBmb3IgKGF1dG8mIGN1
cnJlbnRWYWx1ZSA6IGRvd25jYXN0PENTU1ZhbHVlTGlzdD4odmFsdWUpKQotICAgICAgICAgICAg
cmVzdWx0IHw9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPihjdXJyZW50VmFsdWUuZ2V0KCkp
OworICAgICAgICAgICAgcmVzdWx0LmFkZChkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oY3Vy
cmVudFZhbHVlLmdldCgpKSk7CiAgICAgfQogICAgIHJldHVybiByZXN1bHQ7CiB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXIuY3BwCShyZXZpc2lvbiAyMzU1MTQpCisr
KyBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTExOSw3ICsxMTksNyBAQCBDb2xvciBDU1NQYXJzZXI6OnBhcnNlU3lzdGVtQ29sb3IoY29u
c3QgCiAKICAgICBPcHRpb25TZXQ8U3R5bGVDb2xvcjo6T3B0aW9ucz4gb3B0aW9uczsKICAgICBp
ZiAoY29udGV4dCAmJiBjb250ZXh0LT51c2VTeXN0ZW1BcHBlYXJhbmNlKQotICAgICAgICBvcHRp
b25zIHw9IFN0eWxlQ29sb3I6Ok9wdGlvbnM6OlVzZVN5c3RlbUFwcGVhcmFuY2U7CisgICAgICAg
IG9wdGlvbnMuYWRkKFN0eWxlQ29sb3I6Ok9wdGlvbnM6OlVzZVN5c3RlbUFwcGVhcmFuY2UpOwog
ICAgIHJldHVybiBSZW5kZXJUaGVtZTo6c2luZ2xldG9uKCkuc3lzdGVtQ29sb3IoaWQsIG9wdGlv
bnMpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDIzNTUxNCkK
KysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcx
NDIsOSArNzE0Miw5IEBAIE9wdGlvblNldDxTdHlsZUNvbG9yOjpPcHRpb25zPiBEb2N1bWVudDoK
IHsKICAgICBPcHRpb25TZXQ8U3R5bGVDb2xvcjo6T3B0aW9ucz4gb3B0aW9uczsKICAgICBpZiAo
dXNlU3lzdGVtQXBwZWFyYW5jZSgpKQotICAgICAgICBvcHRpb25zIHw9IFN0eWxlQ29sb3I6Ok9w
dGlvbnM6OlVzZVN5c3RlbUFwcGVhcmFuY2U7CisgICAgICAgIG9wdGlvbnMuYWRkKFN0eWxlQ29s
b3I6Ok9wdGlvbnM6OlVzZVN5c3RlbUFwcGVhcmFuY2UpOwogICAgIGlmICh1c2VEYXJrQXBwZWFy
YW5jZSgpKQotICAgICAgICBvcHRpb25zIHw9IFN0eWxlQ29sb3I6Ok9wdGlvbnM6OlVzZURhcmtB
cHBlYXJhbmNlOworICAgICAgICBvcHRpb25zLmFkZChTdHlsZUNvbG9yOjpPcHRpb25zOjpVc2VE
YXJrQXBwZWFyYW5jZSk7CiAgICAgcmV0dXJuIG9wdGlvbnM7CiB9CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAy
MzU1MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzMxLDcgKzMzMSw3IEBAIHZvaWQgRG9jdW1lbnRNYXJrZXJD
b250cm9sbGVyOjphZGRNYXJrZXIKICAgICAgICAgICAgIGRvd25jYXN0PFJlbmRlckJsb2NrRmxv
dz4oKnJlbmRlcmVyKS5lbnN1cmVMaW5lQm94ZXMoKTsKICAgICB9CiAKLSAgICBtX3Bvc3NpYmx5
RXhpc3RpbmdNYXJrZXJUeXBlcyB8PSBuZXdNYXJrZXIudHlwZSgpOworICAgIG1fcG9zc2libHlF
eGlzdGluZ01hcmtlclR5cGVzLmFkZChuZXdNYXJrZXIudHlwZSgpKTsKIAogICAgIHN0ZDo6dW5p
cXVlX3B0cjxNYXJrZXJMaXN0PiYgbGlzdCA9IG1fbWFya2Vycy5hZGQobm9kZSwgbnVsbHB0ciku
aXRlcmF0b3ItPnZhbHVlOwogCkBAIC01ODcsNyArNTg3LDcgQEAgdm9pZCBEb2N1bWVudE1hcmtl
ckNvbnRyb2xsZXI6OnJlbW92ZU1hcgogICAgICAgICAgICAgcmVtb3ZlTWFya2Vyc0Zyb21MaXN0
KGl0ZXJhdG9yLCBtYXJrZXJUeXBlcyk7CiAgICAgfQogCi0gICAgbV9wb3NzaWJseUV4aXN0aW5n
TWFya2VyVHlwZXMgLT0gbWFya2VyVHlwZXM7CisgICAgbV9wb3NzaWJseUV4aXN0aW5nTWFya2Vy
VHlwZXMucmVtb3ZlKG1hcmtlclR5cGVzKTsKIH0KIAogdm9pZCBEb2N1bWVudE1hcmtlckNvbnRy
b2xsZXI6OnJlbW92ZU1hcmtlcnNGcm9tTGlzdChNYXJrZXJNYXA6Oml0ZXJhdG9yIGl0ZXJhdG9y
LCBPcHRpb25TZXQ8RG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGU+IG1hcmtlclR5cGVzKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxl
ci5jcHAJKHJldmlzaW9uIDIzNTUxNCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRlZEFu
aW1hdGlvbkNvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjEsNyArMTIxLDcgQEAg
dm9pZCBTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXI6OmFkZFRocgogICAgIGlmIChtX3Rocm90
dGxpbmdSZWFzb25zLmNvbnRhaW5zKHJlYXNvbikpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1f
dGhyb3R0bGluZ1JlYXNvbnMgfD0gcmVhc29uOworICAgIG1fdGhyb3R0bGluZ1JlYXNvbnMuYWRk
KHJlYXNvbik7CiAKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJhZGRUaHJvdHRsaW5nUmVh
c29uKCVzKSAtPiAlcyIsIHRocm90dGxpbmdSZWFzb25Ub1N0cmluZyhyZWFzb24pLCB0aHJvdHRs
aW5nUmVhc29uc1RvU3RyaW5nKG1fdGhyb3R0bGluZ1JlYXNvbnMpLnV0ZjgoKS5kYXRhKCkpOwog
CkBAIC0xNDAsNyArMTQwLDcgQEAgdm9pZCBTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXI6OnJl
bW92ZQogICAgIGlmICghbV90aHJvdHRsaW5nUmVhc29ucy5jb250YWlucyhyZWFzb24pKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBtX3Rocm90dGxpbmdSZWFzb25zIC09IHJlYXNvbjsKKyAgICBt
X3Rocm90dGxpbmdSZWFzb25zLnJlbW92ZShyZWFzb24pOwogCiAgICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRCgicmVtb3ZlVGhyb3R0bGluZ1JlYXNvbiglcykgLT4gJXMiLCB0aHJvdHRsaW5nUmVh
c29uVG9TdHJpbmcocmVhc29uKSwgdGhyb3R0bGluZ1JlYXNvbnNUb1N0cmluZyhtX3Rocm90dGxp
bmdSZWFzb25zKS51dGY4KCkuZGF0YSgpKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1Nl
Y3VyaXR5Q29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9TZWN1cml0
eUNvbnRleHQuaAkocmV2aXNpb24gMjM1NTE0KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1NlY3Vy
aXR5Q29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC04OSw3ICs4OSw3IEBAIHB1YmxpYzoKICAg
ICB9OwogCiAgICAgY29uc3QgT3B0aW9uU2V0PE1peGVkQ29udGVudFR5cGU+JiBmb3VuZE1peGVk
Q29udGVudCgpIGNvbnN0IHsgcmV0dXJuIG1fbWl4ZWRDb250ZW50VHlwZXM7IH0KLSAgICB2b2lk
IHNldEZvdW5kTWl4ZWRDb250ZW50KE1peGVkQ29udGVudFR5cGUgdHlwZSkgeyBtX21peGVkQ29u
dGVudFR5cGVzIHw9IHR5cGU7IH0KKyAgICB2b2lkIHNldEZvdW5kTWl4ZWRDb250ZW50KE1peGVk
Q29udGVudFR5cGUgdHlwZSkgeyBtX21peGVkQ29udGVudFR5cGVzLmFkZCh0eXBlKTsgfQogICAg
IGJvb2wgZ2VvbG9jYXRpb25BY2Nlc3NlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZ2VvbG9jYXRpb25B
Y2Nlc3NlZDsgfQogICAgIHZvaWQgc2V0R2VvbG9jYXRpb25BY2Nlc3NlZCgpIHsgbV9nZW9sb2Nh
dGlvbkFjY2Vzc2VkID0gdHJ1ZTsgfQogICAgIGJvb2wgc2VjdXJlQ29va2llc0FjY2Vzc2VkKCkg
Y29uc3QgeyByZXR1cm4gbV9zZWN1cmVDb29raWVzQWNjZXNzZWQ7IH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2RvbS9VSUV2ZW50V2l0aEtleVN0YXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9kb20vVUlFdmVudFdpdGhLZXlTdGF0ZS5jcHAJKHJldmlzaW9uIDIzNTUxNCkKKysr
IFNvdXJjZS9XZWJDb3JlL2RvbS9VSUV2ZW50V2l0aEtleVN0YXRlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjcsMTcgKzI3LDE3IEBAIGF1dG8gVUlFdmVudFdpdGhLZXlTdGF0ZTo6bW9kaWZpZXJz
RnJvbUkKIHsKICAgICBPcHRpb25TZXQ8TW9kaWZpZXI+IHJlc3VsdDsKICAgICBpZiAoaW5pdGlh
bGl6ZXIuY3RybEtleSkKLSAgICAgICAgcmVzdWx0IHw9IE1vZGlmaWVyOjpDdHJsS2V5OworICAg
ICAgICByZXN1bHQuYWRkKE1vZGlmaWVyOjpDdHJsS2V5KTsKICAgICBpZiAoaW5pdGlhbGl6ZXIu
YWx0S2V5KQotICAgICAgICByZXN1bHQgfD0gTW9kaWZpZXI6OkFsdEtleTsKKyAgICAgICAgcmVz
dWx0LmFkZChNb2RpZmllcjo6QWx0S2V5KTsKICAgICBpZiAoaW5pdGlhbGl6ZXIuc2hpZnRLZXkp
Ci0gICAgICAgIHJlc3VsdCB8PSBNb2RpZmllcjo6U2hpZnRLZXk7CisgICAgICAgIHJlc3VsdC5h
ZGQoTW9kaWZpZXI6OlNoaWZ0S2V5KTsKICAgICBpZiAoaW5pdGlhbGl6ZXIubWV0YUtleSkKLSAg
ICAgICAgcmVzdWx0IHw9IE1vZGlmaWVyOjpNZXRhS2V5OworICAgICAgICByZXN1bHQuYWRkKE1v
ZGlmaWVyOjpNZXRhS2V5KTsKICAgICBpZiAoaW5pdGlhbGl6ZXIubW9kaWZpZXJBbHRHcmFwaCkK
LSAgICAgICAgcmVzdWx0IHw9IE1vZGlmaWVyOjpBbHRHcmFwaEtleTsKKyAgICAgICAgcmVzdWx0
LmFkZChNb2RpZmllcjo6QWx0R3JhcGhLZXkpOwogICAgIGlmIChpbml0aWFsaXplci5tb2RpZmll
ckNhcHNMb2NrKQotICAgICAgICByZXN1bHQgfD0gTW9kaWZpZXI6OkNhcHNMb2NrS2V5OworICAg
ICAgICByZXN1bHQuYWRkKE1vZGlmaWVyOjpDYXBzTG9ja0tleSk7CiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIApAQCAtNjMsMTUgKzYzLDE1IEBAIHZvaWQgVUlFdmVudFdpdGhLZXlTdGF0ZTo6c2V0
TW9kaWZpZXJLZXkKIHsKICAgICBPcHRpb25TZXQ8TW9kaWZpZXI+IHJlc3VsdDsKICAgICBpZiAo
Y3RybEtleSkKLSAgICAgICAgcmVzdWx0IHw9IE1vZGlmaWVyOjpDdHJsS2V5OworICAgICAgICBy
ZXN1bHQuYWRkKE1vZGlmaWVyOjpDdHJsS2V5KTsKICAgICBpZiAoYWx0S2V5KQotICAgICAgICBy
ZXN1bHQgfD0gTW9kaWZpZXI6OkFsdEtleTsKKyAgICAgICAgcmVzdWx0LmFkZChNb2RpZmllcjo6
QWx0S2V5KTsKICAgICBpZiAoc2hpZnRLZXkpCi0gICAgICAgIHJlc3VsdCB8PSBNb2RpZmllcjo6
U2hpZnRLZXk7CisgICAgICAgIHJlc3VsdC5hZGQoTW9kaWZpZXI6OlNoaWZ0S2V5KTsKICAgICBp
ZiAobWV0YUtleSkKLSAgICAgICAgcmVzdWx0IHw9IE1vZGlmaWVyOjpNZXRhS2V5OworICAgICAg
ICByZXN1bHQuYWRkKE1vZGlmaWVyOjpNZXRhS2V5KTsKICAgICBpZiAoYWx0R3JhcGhLZXkpCi0g
ICAgICAgIHJlc3VsdCB8PSBNb2RpZmllcjo6QWx0R3JhcGhLZXk7CisgICAgICAgIHJlc3VsdC5h
ZGQoTW9kaWZpZXI6OkFsdEdyYXBoS2V5KTsKICAgICBtX21vZGlmaWVycyA9IHJlc3VsdDsKIH0K
IApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1VzZXJBY3Rpb25FbGVtZW50U2V0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vVXNlckFjdGlvbkVsZW1lbnRTZXQuY3BwCShy
ZXZpc2lvbiAyMzU1MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vVXNlckFjdGlvbkVsZW1lbnRT
ZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Niw3ICs2NiwxMCBAQCB2b2lkIFVzZXJBY3Rpb25F
bGVtZW50U2V0OjpzZXRGbGFncyhFbGVtCiB7CiAgICAgQVNTRVJUKCFmbGFncy5pc0VtcHR5KCkp
OwogCi0gICAgbV9lbGVtZW50cy5hZGQoJmVsZW1lbnQsIE9wdGlvblNldDxGbGFnPiB7IH0pLml0
ZXJhdG9yLT52YWx1ZSB8PSBmbGFnczsKKyAgICBtX2VsZW1lbnRzLmVuc3VyZSgmZWxlbWVudCwg
W10geworICAgICAgICByZXR1cm4gT3B0aW9uU2V0PEZsYWc+KCk7CisgICAgfSkuaXRlcmF0b3It
PnZhbHVlLmFkZChmbGFncyk7CisKICAgICBlbGVtZW50LnNldFVzZXJBY3Rpb25FbGVtZW50KHRy
dWUpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21t
YW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVk
aXRDb21tYW5kLmNwcAkocmV2aXNpb24gMjM1NTE0KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0OTQsNyArMTQ5
NCw3IEBAIHZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6Om1vdmVQYXJhZ3JhcGgKICAgICBBU1NF
UlQoZW5kaW5nU2VsZWN0aW9uKCkuaXNDYXJldE9yUmFuZ2UoKSk7CiAgICAgT3B0aW9uU2V0PFJl
cGxhY2VTZWxlY3Rpb25Db21tYW5kOjpDb21tYW5kT3B0aW9uPiBvcHRpb25zIHsgUmVwbGFjZVNl
bGVjdGlvbkNvbW1hbmQ6OlNlbGVjdFJlcGxhY2VtZW50LCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFu
ZDo6TW92aW5nUGFyYWdyYXBoIH07CiAgICAgaWYgKCFwcmVzZXJ2ZVN0eWxlKQotICAgICAgICBv
cHRpb25zIHw9IFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpNYXRjaFN0eWxlOworICAgICAgICBv
cHRpb25zLmFkZChSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6TWF0Y2hTdHlsZSk7CiAgICAgYXBw
bHlDb21tYW5kVG9Db21wb3NpdGUoUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmNyZWF0ZShkb2N1
bWVudCgpLCBXVEZNb3ZlKGZyYWdtZW50KSwgb3B0aW9ucykpOwogCiAgICAgZnJhbWUoKS5lZGl0
b3IoKS5tYXJrTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hcihlbmRpbmdTZWxlY3Rpb24oKSk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCShyZXZpc2lvbiAyMzU1MTQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYzNCwxMyAr
NjM0LDEzIEBAIHZvaWQgRWRpdG9yOjpyZXBsYWNlU2VsZWN0aW9uV2l0aEZyYWdtZW4KIAogICAg
IE9wdGlvblNldDxSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6Q29tbWFuZE9wdGlvbj4gb3B0aW9u
cyB7IFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpQcmV2ZW50TmVzdGluZywgUmVwbGFjZVNlbGVj
dGlvbkNvbW1hbmQ6OlNhbml0aXplRnJhZ21lbnQgfTsKICAgICBpZiAoc2VsZWN0UmVwbGFjZW1l
bnQpCi0gICAgICAgIG9wdGlvbnMgfD0gUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OlNlbGVjdFJl
cGxhY2VtZW50OworICAgICAgICBvcHRpb25zLmFkZChSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6
U2VsZWN0UmVwbGFjZW1lbnQpOwogICAgIGlmIChzbWFydFJlcGxhY2UpCi0gICAgICAgIG9wdGlv
bnMgfD0gUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OlNtYXJ0UmVwbGFjZTsKKyAgICAgICAgb3B0
aW9ucy5hZGQoUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OlNtYXJ0UmVwbGFjZSk7CiAgICAgaWYg
KG1hdGNoU3R5bGUpCi0gICAgICAgIG9wdGlvbnMgfD0gUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6
Ok1hdGNoU3R5bGU7CisgICAgICAgIG9wdGlvbnMuYWRkKFJlcGxhY2VTZWxlY3Rpb25Db21tYW5k
OjpNYXRjaFN0eWxlKTsKICAgICBpZiAobWFpbEJsb2NrcXVvdGVIYW5kbGluZyA9PSBNYWlsQmxv
Y2txdW90ZUhhbmRsaW5nOjpJZ25vcmVCbG9ja3F1b3RlKQotICAgICAgICBvcHRpb25zIHw9IFJl
cGxhY2VTZWxlY3Rpb25Db21tYW5kOjpJZ25vcmVNYWlsQmxvY2txdW90ZTsKKyAgICAgICAgb3B0
aW9ucy5hZGQoUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6Oklnbm9yZU1haWxCbG9ja3F1b3RlKTsK
IAogICAgIGF1dG8gY29tbWFuZCA9IFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpjcmVhdGUoZG9j
dW1lbnQoKSwgJmZyYWdtZW50LCBvcHRpb25zLCBlZGl0aW5nQWN0aW9uKTsKICAgICBjb21tYW5k
LT5hcHBseSgpOwpAQCAtMTA3Myw3ICsxMDczLDcgQEAgdm9pZCBFZGl0b3I6OmFwcGxpZWRFZGl0
aW5nKENvbXBvc2l0ZUVkaQogICAgICAgICAvLyBEb24ndCBjbGVhciB0aGUgdHlwaW5nIHN0eWxl
IHdpdGggdGhpcyBzZWxlY3Rpb24gY2hhbmdlLiBXZSBkbyB0aG9zZSB0aGluZ3MgZWxzZXdoZXJl
IGlmIG5lY2Vzc2FyeS4KICAgICAgICAgT3B0aW9uU2V0PEZyYW1lU2VsZWN0aW9uOjpTZXRTZWxl
Y3Rpb25PcHRpb24+IG9wdGlvbnM7CiAgICAgICAgIGlmIChjb21tYW5kLmlzRGljdGF0aW9uQ29t
bWFuZCgpKQotICAgICAgICAgICAgb3B0aW9ucyB8PSBGcmFtZVNlbGVjdGlvbjo6RGljdGF0aW9u
VHJpZ2dlcmVkOworICAgICAgICAgICAgb3B0aW9ucy5hZGQoRnJhbWVTZWxlY3Rpb246OkRpY3Rh
dGlvblRyaWdnZXJlZCk7CiAKICAgICAgICAgY2hhbmdlU2VsZWN0aW9uQWZ0ZXJDb21tYW5kKG5l
d1NlbGVjdGlvbiwgb3B0aW9ucyk7CiAgICAgfQpAQCAtMjMzOSw3ICsyMzM5LDcgQEAgdm9pZCBF
ZGl0b3I6Om1hcmtNaXNzcGVsbGluZ3NBZnRlclR5cGluZwogICAgIFVOVVNFRF9QQVJBTShkb1Jl
cGxhY2VtZW50KTsKICAgICBPcHRpb25TZXQ8VGV4dENoZWNraW5nVHlwZT4gdGV4dENoZWNraW5n
T3B0aW9uczsKICAgICBpZiAoaXNDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoKSkKLSAg
ICAgICAgdGV4dENoZWNraW5nT3B0aW9ucyB8PSBUZXh0Q2hlY2tpbmdUeXBlOjpTcGVsbGluZzsK
KyAgICAgICAgdGV4dENoZWNraW5nT3B0aW9ucy5hZGQoVGV4dENoZWNraW5nVHlwZTo6U3BlbGxp
bmcpOwogICAgIGlmICghdGV4dENoZWNraW5nT3B0aW9ucy5jb250YWlucyhUZXh0Q2hlY2tpbmdU
eXBlOjpTcGVsbGluZykpCiAgICAgICAgIHJldHVybjsKIApAQCAtMjM1Nyw3ICsyMzU3LDcgQEAg
dm9pZCBFZGl0b3I6Om1hcmtNaXNzcGVsbGluZ3NBZnRlclR5cGluZwogICAgICAgICBPcHRpb25T
ZXQ8VGV4dENoZWNraW5nVHlwZT4gdGV4dENoZWNraW5nT3B0aW9uczsKIAogICAgICAgICBpZiAo
aXNDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoKSkKLSAgICAgICAgICAgIHRleHRDaGVj
a2luZ09wdGlvbnMgfD0gVGV4dENoZWNraW5nVHlwZTo6U3BlbGxpbmc7CisgICAgICAgICAgICB0
ZXh0Q2hlY2tpbmdPcHRpb25zLmFkZChUZXh0Q2hlY2tpbmdUeXBlOjpTcGVsbGluZyk7CiAKICNp
ZiBVU0UoQVVUT01BVElDX1RFWFRfUkVQTEFDRU1FTlQpCiAgICAgICAgIGlmIChkb1JlcGxhY2Vt
ZW50CkBAIC0yMzY2LDEzICsyMzY2LDEzIEBAIHZvaWQgRWRpdG9yOjptYXJrTWlzc3BlbGxpbmdz
QWZ0ZXJUeXBpbmcKICAgICAgICAgICAgICAgICB8fCBpc0F1dG9tYXRpY0Rhc2hTdWJzdGl0dXRp
b25FbmFibGVkKCkKICAgICAgICAgICAgICAgICB8fCBpc0F1dG9tYXRpY1RleHRSZXBsYWNlbWVu
dEVuYWJsZWQoKQogICAgICAgICAgICAgICAgIHx8ICh0ZXh0Q2hlY2tpbmdPcHRpb25zLmNvbnRh
aW5zKFRleHRDaGVja2luZ1R5cGU6OlNwZWxsaW5nKSAmJiBpc0F1dG9tYXRpY1NwZWxsaW5nQ29y
cmVjdGlvbkVuYWJsZWQoKSkpKQotICAgICAgICAgICAgdGV4dENoZWNraW5nT3B0aW9ucyB8PSBU
ZXh0Q2hlY2tpbmdUeXBlOjpSZXBsYWNlbWVudDsKKyAgICAgICAgICAgIHRleHRDaGVja2luZ09w
dGlvbnMuYWRkKFRleHRDaGVja2luZ1R5cGU6OlJlcGxhY2VtZW50KTsKICNlbmRpZgogICAgICAg
ICBpZiAoIXRleHRDaGVja2luZ09wdGlvbnMuY29udGFpbnMoVGV4dENoZWNraW5nVHlwZTo6U3Bl
bGxpbmcpICYmICF0ZXh0Q2hlY2tpbmdPcHRpb25zLmNvbnRhaW5zKFRleHRDaGVja2luZ1R5cGU6
OlJlcGxhY2VtZW50KSkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBpZiAoaXNHcmFt
bWFyQ2hlY2tpbmdFbmFibGVkKCkpCi0gICAgICAgICAgICB0ZXh0Q2hlY2tpbmdPcHRpb25zIHw9
IFRleHRDaGVja2luZ1R5cGU6OkdyYW1tYXI7CisgICAgICAgICAgICB0ZXh0Q2hlY2tpbmdPcHRp
b25zLmFkZChUZXh0Q2hlY2tpbmdUeXBlOjpHcmFtbWFyKTsKIAogICAgICAgICBhdXRvIHNlbnRl
bmNlU3RhcnQgPSBzdGFydE9mU2VudGVuY2Uod29yZFN0YXJ0KTsKICAgICAgICAgYXV0byBzZW50
ZW5jZUVuZCA9IGVuZE9mU2VudGVuY2Uod29yZFN0YXJ0KTsKQEAgLTI4MzgsNyArMjgzOCw3IEBA
IHZvaWQgRWRpdG9yOjptYXJrTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW0KICAgICAgICAgLy8gbWFy
a01pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXIoKSBpcyB0cmlnZ2VyZWQgYnkgc2VsZWN0aW9uIGNo
YW5nZSwgaW4gd2hpY2ggY2FzZSB3ZSBjaGVjayBzcGVsbGluZyBhbmQgZ3JhbW1hciwgYnV0IGRv
bid0IGF1dG9jb3JyZWN0IG1pc3NwZWxsaW5ncy4KICAgICAgICAgT3B0aW9uU2V0PFRleHRDaGVj
a2luZ1R5cGU+IHRleHRDaGVja2luZ09wdGlvbnMgeyBUZXh0Q2hlY2tpbmdUeXBlOjpTcGVsbGlu
ZyB9OwogICAgICAgICBpZiAobWFya0dyYW1tYXIgJiYgaXNHcmFtbWFyQ2hlY2tpbmdFbmFibGVk
KCkpCi0gICAgICAgICAgICB0ZXh0Q2hlY2tpbmdPcHRpb25zIHw9IFRleHRDaGVja2luZ1R5cGU6
OkdyYW1tYXI7CisgICAgICAgICAgICB0ZXh0Q2hlY2tpbmdPcHRpb25zLmFkZChUZXh0Q2hlY2tp
bmdUeXBlOjpHcmFtbWFyKTsKICAgICAgICAgYXV0byBzcGVsbENoZWNraW5nUmFuZ2UgPSBzcGVs
bGluZ1NlbGVjdGlvbi50b05vcm1hbGl6ZWRSYW5nZSgpOwogICAgICAgICBtYXJrQWxsTWlzc3Bl
bGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKHRleHRDaGVja2luZ09wdGlvbnMsIHNwZWxsQ2hl
Y2tpbmdSYW5nZS5jb3B5UmVmKCksIHNwZWxsQ2hlY2tpbmdSYW5nZS5jb3B5UmVmKCksIGdyYW1t
YXJTZWxlY3Rpb24udG9Ob3JtYWxpemVkUmFuZ2UoKSk7CiAgICAgICAgIHJldHVybjsKQEAgLTM3
MzMsMzAgKzM3MzMsMzAgQEAgT3B0aW9uU2V0PFRleHRDaGVja2luZ1R5cGU+IEVkaXRvcjo6cmVz
bwogCiAgICAgT3B0aW9uU2V0PFRleHRDaGVja2luZ1R5cGU+IGNoZWNraW5nVHlwZXM7CiAgICAg
aWYgKHNob3VsZE1hcmtTcGVsbGluZykKLSAgICAgICAgY2hlY2tpbmdUeXBlcyB8PSBUZXh0Q2hl
Y2tpbmdUeXBlOjpTcGVsbGluZzsKKyAgICAgICAgY2hlY2tpbmdUeXBlcy5hZGQoVGV4dENoZWNr
aW5nVHlwZTo6U3BlbGxpbmcpOwogICAgIGlmIChzaG91bGRNYXJrR3JhbW1hcikKLSAgICAgICAg
Y2hlY2tpbmdUeXBlcyB8PSBUZXh0Q2hlY2tpbmdUeXBlOjpHcmFtbWFyOworICAgICAgICBjaGVj
a2luZ1R5cGVzLmFkZChUZXh0Q2hlY2tpbmdUeXBlOjpHcmFtbWFyKTsKICNpZiAhUExBVEZPUk0o
SU9TKQogICAgIGlmIChzaG91bGRDaGVja0ZvckNvcnJlY3Rpb24pCi0gICAgICAgIGNoZWNraW5n
VHlwZXMgfD0gVGV4dENoZWNraW5nVHlwZTo6Q29ycmVjdGlvbjsKKyAgICAgICAgY2hlY2tpbmdU
eXBlcy5hZGQoVGV4dENoZWNraW5nVHlwZTo6Q29ycmVjdGlvbik7CiAgICAgaWYgKHNob3VsZFNo
b3dDb3JyZWN0aW9uUGFuZWwpCi0gICAgICAgIGNoZWNraW5nVHlwZXMgfD0gVGV4dENoZWNraW5n
VHlwZTo6U2hvd0NvcnJlY3Rpb25QYW5lbDsKKyAgICAgICAgY2hlY2tpbmdUeXBlcy5hZGQoVGV4
dENoZWNraW5nVHlwZTo6U2hvd0NvcnJlY3Rpb25QYW5lbCk7CiAKICNpZiBVU0UoQVVUT01BVElD
X1RFWFRfUkVQTEFDRU1FTlQpCiAgICAgYm9vbCBzaG91bGRQZXJmb3JtUmVwbGFjZW1lbnQgPSB0
ZXh0Q2hlY2tpbmdPcHRpb25zLmNvbnRhaW5zKFRleHRDaGVja2luZ1R5cGU6OlJlcGxhY2VtZW50
KTsKICAgICBpZiAoc2hvdWxkUGVyZm9ybVJlcGxhY2VtZW50KSB7CiAgICAgICAgIGlmICghb25s
eUFsbG93c1RleHRSZXBsYWNlbWVudCkgewogICAgICAgICAgICAgaWYgKGlzQXV0b21hdGljTGlu
a0RldGVjdGlvbkVuYWJsZWQoKSkKLSAgICAgICAgICAgICAgICBjaGVja2luZ1R5cGVzIHw9IFRl
eHRDaGVja2luZ1R5cGU6Okxpbms7CisgICAgICAgICAgICAgICAgY2hlY2tpbmdUeXBlcy5hZGQo
VGV4dENoZWNraW5nVHlwZTo6TGluayk7CiAgICAgICAgICAgICBpZiAoaXNBdXRvbWF0aWNRdW90
ZVN1YnN0aXR1dGlvbkVuYWJsZWQoKSkKLSAgICAgICAgICAgICAgICBjaGVja2luZ1R5cGVzIHw9
IFRleHRDaGVja2luZ1R5cGU6OlF1b3RlOworICAgICAgICAgICAgICAgIGNoZWNraW5nVHlwZXMu
YWRkKFRleHRDaGVja2luZ1R5cGU6OlF1b3RlKTsKICAgICAgICAgICAgIGlmIChpc0F1dG9tYXRp
Y0Rhc2hTdWJzdGl0dXRpb25FbmFibGVkKCkpCi0gICAgICAgICAgICAgICAgY2hlY2tpbmdUeXBl
cyB8PSBUZXh0Q2hlY2tpbmdUeXBlOjpEYXNoOworICAgICAgICAgICAgICAgIGNoZWNraW5nVHlw
ZXMuYWRkKFRleHRDaGVja2luZ1R5cGU6OkRhc2gpOwogICAgICAgICAgICAgaWYgKHNob3VsZE1h
cmtTcGVsbGluZyAmJiBpc0F1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbkVuYWJsZWQoKSkKLSAg
ICAgICAgICAgICAgICBjaGVja2luZ1R5cGVzIHw9IFRleHRDaGVja2luZ1R5cGU6OkNvcnJlY3Rp
b247CisgICAgICAgICAgICAgICAgY2hlY2tpbmdUeXBlcy5hZGQoVGV4dENoZWNraW5nVHlwZTo6
Q29ycmVjdGlvbik7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGlzQXV0b21hdGljVGV4dFJlcGxh
Y2VtZW50RW5hYmxlZCgpKQotICAgICAgICAgICAgY2hlY2tpbmdUeXBlcyB8PSBUZXh0Q2hlY2tp
bmdUeXBlOjpSZXBsYWNlbWVudDsKKyAgICAgICAgICAgIGNoZWNraW5nVHlwZXMuYWRkKFRleHRD
aGVja2luZ1R5cGU6OlJlcGxhY2VtZW50KTsKICAgICB9CiAjZW5kaWYKICNlbmRpZiAvLyAhUExB
VEZPUk0oSU9TKQpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5j
cHAJKHJldmlzaW9uIDIzNTUxNCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxl
Y3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODcsMTUgKzE4NywxNSBAQCB2b2lkIEZyYW1l
U2VsZWN0aW9uOjptb3ZlV2l0aG91dFZhbGlkYXRpCiAgICAgQVhUZXh0U3RhdGVDaGFuZ2VJbnRl
bnQgbmV3SW50ZW50ID0gaW50ZW50LnR5cGUgPT0gQVhUZXh0U3RhdGVDaGFuZ2VUeXBlVW5rbm93
biA/IEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50KEFYVGV4dFN0YXRlQ2hhbmdlVHlwZVNlbGVjdGlv
bk1vdmUsIEFYVGV4dFNlbGVjdGlvbiB7IEFYVGV4dFNlbGVjdGlvbkRpcmVjdGlvbkRpc2NvbnRp
Z3VvdXMsIEFYVGV4dFNlbGVjdGlvbkdyYW51bGFyaXR5VW5rbm93biwgZmFsc2UgfSkgOiBpbnRl
bnQ7CiAgICAgYXV0byBvcHRpb25zID0gZGVmYXVsdFNldFNlbGVjdGlvbk9wdGlvbnMoKTsKICAg
ICBpZiAoIXNob3VsZFNldEZvY3VzKQotICAgICAgICBvcHRpb25zIHw9IERvTm90U2V0Rm9jdXM7
CisgICAgICAgIG9wdGlvbnMuYWRkKERvTm90U2V0Rm9jdXMpOwogICAgIHN3aXRjaCAocmV2ZWFs
TW9kZSkgewogICAgIGNhc2UgU2VsZWN0aW9uUmV2ZWFsTW9kZTo6RG9Ob3RSZXZlYWw6CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgU2VsZWN0aW9uUmV2ZWFsTW9kZTo6UmV2ZWFsOgotICAgICAg
ICBvcHRpb25zIHw9IFJldmVhbFNlbGVjdGlvbjsKKyAgICAgICAgb3B0aW9ucy5hZGQoUmV2ZWFs
U2VsZWN0aW9uKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTZWxlY3Rpb25SZXZlYWxNb2Rl
OjpSZXZlYWxVcFRvTWFpbkZyYW1lOgotICAgICAgICBvcHRpb25zIHw9IFJldmVhbFNlbGVjdGlv
blVwVG9NYWluRnJhbWU7CisgICAgICAgIG9wdGlvbnMuYWRkKFJldmVhbFNlbGVjdGlvblVwVG9N
YWluRnJhbWUpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgc2V0U2VsZWN0aW9uKG5ld1Nl
bGVjdGlvbiwgb3B0aW9ucywgbmV3SW50ZW50KTsKQEAgLTE5OTUsNyArMTk5NSw3IEBAIGJvb2wg
RnJhbWVTZWxlY3Rpb246OnNldFNlbGVjdGVkUmFuZ2UoUmEKIAogICAgIE9wdGlvblNldDxTZXRT
ZWxlY3Rpb25PcHRpb24+IHNlbGVjdGlvbk9wdGlvbnMgeyAgQ2xlYXJUeXBpbmdTdHlsZSB9Owog
ICAgIGlmIChjbG9zZVR5cGluZykKLSAgICAgICAgc2VsZWN0aW9uT3B0aW9ucyB8PSBDbG9zZVR5
cGluZzsKKyAgICAgICAgc2VsZWN0aW9uT3B0aW9ucy5hZGQoQ2xvc2VUeXBpbmcpOwogCiAgICAg
aWYgKHVzZXJUcmlnZ2VyZWQgPT0gVXNlclRyaWdnZXJlZCkgewogICAgICAgICBGcmFtZVNlbGVj
dGlvbiB0cmlhbEZyYW1lU2VsZWN0aW9uOwpAQCAtMjAwNSw3ICsyMDA1LDcgQEAgYm9vbCBGcmFt
ZVNlbGVjdGlvbjo6c2V0U2VsZWN0ZWRSYW5nZShSYQogICAgICAgICBpZiAoIXNob3VsZENoYW5n
ZVNlbGVjdGlvbih0cmlhbEZyYW1lU2VsZWN0aW9uLnNlbGVjdGlvbigpKSkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgICAgICBzZWxlY3Rpb25PcHRpb25zIHw9IElzVXNlclRyaWdn
ZXJlZDsKKyAgICAgICAgc2VsZWN0aW9uT3B0aW9ucy5hZGQoSXNVc2VyVHJpZ2dlcmVkKTsKICAg
ICB9CiAKICAgICBzZXRTZWxlY3Rpb24obmV3U2VsZWN0aW9uLCBzZWxlY3Rpb25PcHRpb25zKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmgJKHJldmlzaW9uIDIz
NTUxNCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTMzLDcgKzEzMyw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIE9wdGlv
blNldDxTZXRTZWxlY3Rpb25PcHRpb24+IG9wdGlvbnMgeyBDbG9zZVR5cGluZywgQ2xlYXJUeXBp
bmdTdHlsZSB9OwogICAgICAgICBpZiAodXNlclRyaWdnZXJlZCA9PSBVc2VyVHJpZ2dlcmVkKQot
ICAgICAgICAgICAgb3B0aW9ucyB8PSB7IFJldmVhbFNlbGVjdGlvbiwgRmlyZVNlbGVjdEV2ZW50
LCBJc1VzZXJUcmlnZ2VyZWQgfTsKKyAgICAgICAgICAgIG9wdGlvbnMuYWRkKHsgUmV2ZWFsU2Vs
ZWN0aW9uLCBGaXJlU2VsZWN0RXZlbnQsIElzVXNlclRyaWdnZXJlZCB9KTsKICAgICAgICAgcmV0
dXJuIG9wdGlvbnM7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01vdmVT
ZWxlY3Rpb25Db21tYW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L01vdmVTZWxlY3Rpb25Db21tYW5kLmNwcAkocmV2aXNpb24gMjM1NTE0KQorKysgU291cmNlL1dl
YkNvcmUvZWRpdGluZy9Nb3ZlU2VsZWN0aW9uQ29tbWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTg0LDcgKzg0LDcgQEAgdm9pZCBNb3ZlU2VsZWN0aW9uQ29tbWFuZDo6ZG9BcHBseSgpCiAgICAg
fQogICAgIE9wdGlvblNldDxSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6Q29tbWFuZE9wdGlvbj4g
b3B0aW9ucyB7IFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpTZWxlY3RSZXBsYWNlbWVudCwgUmVw
bGFjZVNlbGVjdGlvbkNvbW1hbmQ6OlByZXZlbnROZXN0aW5nIH07CiAgICAgaWYgKG1fc21hcnRJ
bnNlcnQpCi0gICAgICAgIG9wdGlvbnMgfD0gUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OlNtYXJ0
UmVwbGFjZTsKKyAgICAgICAgb3B0aW9ucy5hZGQoUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OlNt
YXJ0UmVwbGFjZSk7CiAKICAgICB7CiAgICAgICAgIGF1dG8gcmVwbGFjZVNlbGVjdGlvbiA9IFJl
cGxhY2VTZWxlY3Rpb25Db21tYW5kOjpjcmVhdGUoZG9jdW1lbnQoKSwgV1RGTW92ZShtX2ZyYWdt
ZW50KSwgb3B0aW9ucywgRWRpdEFjdGlvbkluc2VydEZyb21Ecm9wKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvU3BlbGxDaGVja2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1NwZWxsQ2hlY2tlci5jcHAJKHJldmlzaW9uIDIzNTUxNCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxDaGVja2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjE4
LDkgKzIxOCw5IEBAIHZvaWQgU3BlbGxDaGVja2VyOjpkaWRDaGVja1N1Y2NlZWQoaW50IHMKICAg
ICBpZiAocmVxdWVzdERhdGEuc2VxdWVuY2UoKSA9PSBzZXF1ZW5jZSkgewogICAgICAgICBPcHRp
b25TZXQ8RG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGU+IG1hcmtlclR5cGVzOwogICAgICAgICBp
ZiAocmVxdWVzdERhdGEuY2hlY2tpbmdUeXBlcygpLmNvbnRhaW5zKFRleHRDaGVja2luZ1R5cGU6
OlNwZWxsaW5nKSkKLSAgICAgICAgICAgIG1hcmtlclR5cGVzIHw9IERvY3VtZW50TWFya2VyOjpT
cGVsbGluZzsKKyAgICAgICAgICAgIG1hcmtlclR5cGVzLmFkZChEb2N1bWVudE1hcmtlcjo6U3Bl
bGxpbmcpOwogICAgICAgICBpZiAocmVxdWVzdERhdGEuY2hlY2tpbmdUeXBlcygpLmNvbnRhaW5z
KFRleHRDaGVja2luZ1R5cGU6OkdyYW1tYXIpKQotICAgICAgICAgICAgbWFya2VyVHlwZXMgfD0g
RG9jdW1lbnRNYXJrZXI6OkdyYW1tYXI7CisgICAgICAgICAgICBtYXJrZXJUeXBlcy5hZGQoRG9j
dW1lbnRNYXJrZXI6OkdyYW1tYXIpOwogICAgICAgICBpZiAoIW1hcmtlclR5cGVzLmlzRW1wdHko
KSkKICAgICAgICAgICAgIG1fZnJhbWUuZG9jdW1lbnQoKS0+bWFya2VycygpLnJlbW92ZU1hcmtl
cnMoJm1fcHJvY2Vzc2luZ1JlcXVlc3QtPmNoZWNraW5nUmFuZ2UoKSwgbWFya2VyVHlwZXMpOwog
ICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBl
ci5jcHAJKHJldmlzaW9uIDIzNTUxNCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENo
ZWNraW5nSGVscGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUzLDcgKzM1Myw3IEBAIFN0cmlu
ZyBUZXh0Q2hlY2tpbmdIZWxwZXI6OmZpbmRGaXJzdE1pc3MKICAgICAgICAgICAgICAgICBWZWN0
b3I8VGV4dENoZWNraW5nUmVzdWx0PiByZXN1bHRzOwogICAgICAgICAgICAgICAgIE9wdGlvblNl
dDxUZXh0Q2hlY2tpbmdUeXBlPiBjaGVja2luZ1R5cGVzIHsgVGV4dENoZWNraW5nVHlwZTo6U3Bl
bGxpbmcgfTsKICAgICAgICAgICAgICAgICBpZiAoY2hlY2tHcmFtbWFyKQotICAgICAgICAgICAg
ICAgICAgICBjaGVja2luZ1R5cGVzIHw9IFRleHRDaGVja2luZ1R5cGU6OkdyYW1tYXI7CisgICAg
ICAgICAgICAgICAgICAgIGNoZWNraW5nVHlwZXMuYWRkKFRleHRDaGVja2luZ1R5cGU6OkdyYW1t
YXIpOwogICAgICAgICAgICAgICAgIFZpc2libGVTZWxlY3Rpb24gY3VycmVudFNlbGVjdGlvbjsK
ICAgICAgICAgICAgICAgICBpZiAoRnJhbWUqIGZyYW1lID0gcGFyYWdyYXBoUmFuZ2UtPm93bmVy
RG9jdW1lbnQoKS5mcmFtZSgpKQogICAgICAgICAgICAgICAgICAgICBjdXJyZW50U2VsZWN0aW9u
ID0gZnJhbWUtPnNlbGVjdGlvbigpLnNlbGVjdGlvbigpOwpAQCAtNTg3LDcgKzU4Nyw3IEBAIFZl
Y3RvcjxTdHJpbmc+IFRleHRDaGVja2luZ0hlbHBlcjo6Z3Vlc3MKICAgICBWZWN0b3I8VGV4dENo
ZWNraW5nUmVzdWx0PiByZXN1bHRzOwogICAgIE9wdGlvblNldDxUZXh0Q2hlY2tpbmdUeXBlPiBj
aGVja2luZ1R5cGVzIHsgVGV4dENoZWNraW5nVHlwZTo6U3BlbGxpbmcgfTsKICAgICBpZiAoY2hl
Y2tHcmFtbWFyKQotICAgICAgICBjaGVja2luZ1R5cGVzIHw9IFRleHRDaGVja2luZ1R5cGU6Okdy
YW1tYXI7CisgICAgICAgIGNoZWNraW5nVHlwZXMuYWRkKFRleHRDaGVja2luZ1R5cGU6OkdyYW1t
YXIpOwogICAgIFZpc2libGVTZWxlY3Rpb24gY3VycmVudFNlbGVjdGlvbjsKICAgICBpZiAoRnJh
bWUqIGZyYW1lID0gbV9yYW5nZS0+b3duZXJEb2N1bWVudCgpLmZyYW1lKCkpCiAgICAgICAgIGN1
cnJlbnRTZWxlY3Rpb24gPSBmcmFtZS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCShyZXZpc2lvbiAyMzU1MTQpCisr
KyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTIwOTcsNyArMjA5Nyw3IEBAIGlubGluZSBTZWFyY2hCdWZmZXI6OlNlYXJjaEJ1ZmZlcihj
b25zdCAKICAgICAgICAgLy8gQ2hhcmFjdGVycyBpbiB0aGUgc2VwYXJhdG9yIGNhdGVnb3J5IG5l
dmVyIHJlYWxseSBvY2N1ciBhdCB0aGUgYmVnaW5uaW5nIG9mIGEgd29yZCwKICAgICAgICAgLy8g
c28gaWYgdGhlIHRhcmdldCBiZWdpbnMgd2l0aCBzdWNoIGEgY2hhcmFjdGVyLCB3ZSBqdXN0IGln
bm9yZSB0aGUgQXRXb3JkU3RhcnQgb3B0aW9uLgogICAgICAgICBpZiAoaXNTZXBhcmF0b3IodGFy
Z2V0Rmlyc3RDaGFyYWN0ZXIpKSB7Ci0gICAgICAgICAgICBtX29wdGlvbnMgLT0gQXRXb3JkU3Rh
cnRzOworICAgICAgICAgICAgbV9vcHRpb25zLnJlbW92ZShBdFdvcmRTdGFydHMpOwogICAgICAg
ICAgICAgbV9uZWVkc01vcmVDb250ZXh0ID0gZmFsc2U7CiAgICAgICAgIH0KICAgICB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcAkocmV2aXNpb24gMjM1
NTE0KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI1Nyw5ICsyNTcsOSBAQCB2b2lkIEhUTUxBbmNob3JFbGVtZW50OjpwYXJz
ZUF0dHJpYnV0ZShjCiAgICAgICAgIGNvbnN0IGJvb2wgc2hvdWxkRm9sZENhc2UgPSB0cnVlOwog
ICAgICAgICBTcGFjZVNwbGl0U3RyaW5nIHJlbFZhbHVlKHZhbHVlLCBzaG91bGRGb2xkQ2FzZSk7
CiAgICAgICAgIGlmIChyZWxWYWx1ZS5jb250YWlucyhub1JlZmVycmVyKSkKLSAgICAgICAgICAg
IG1fbGlua1JlbGF0aW9ucyB8PSBSZWxhdGlvbjo6Tm9SZWZlcnJlcjsKKyAgICAgICAgICAgIG1f
bGlua1JlbGF0aW9ucy5hZGQoUmVsYXRpb246Ok5vUmVmZXJyZXIpOwogICAgICAgICBpZiAocmVs
VmFsdWUuY29udGFpbnMobm9PcGVuZXIpKQotICAgICAgICAgICAgbV9saW5rUmVsYXRpb25zIHw9
IFJlbGF0aW9uOjpOb09wZW5lcjsKKyAgICAgICAgICAgIG1fbGlua1JlbGF0aW9ucy5hZGQoUmVs
YXRpb246Ok5vT3BlbmVyKTsKICAgICAgICAgaWYgKG1fcmVsTGlzdCkKICAgICAgICAgICAgIG1f
cmVsTGlzdC0+YXNzb2NpYXRlZEF0dHJpYnV0ZVZhbHVlQ2hhbmdlZCh2YWx1ZSk7CiAgICAgfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yUGFnZUFnZW50LmNwcAkocmV2aXNpb24gMjM1NTE0KQorKysgU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
MTksOSArMzE5LDkgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnJlbG9hZChFcnJvclN0cgog
CiAgICAgT3B0aW9uU2V0PFJlbG9hZE9wdGlvbj4gcmVsb2FkT3B0aW9uczsKICAgICBpZiAocmVs
b2FkRnJvbU9yaWdpbikKLSAgICAgICAgcmVsb2FkT3B0aW9ucyB8PSBSZWxvYWRPcHRpb246OkZy
b21PcmlnaW47CisgICAgICAgIHJlbG9hZE9wdGlvbnMuYWRkKFJlbG9hZE9wdGlvbjo6RnJvbU9y
aWdpbik7CiAgICAgaWYgKCFyZXZhbGlkYXRlQWxsUmVzb3VyY2VzKQotICAgICAgICByZWxvYWRP
cHRpb25zIHw9IFJlbG9hZE9wdGlvbjo6RXhwaXJlZE9ubHk7CisgICAgICAgIHJlbG9hZE9wdGlv
bnMuYWRkKFJlbG9hZE9wdGlvbjo6RXhwaXJlZE9ubHkpOwogCiAgICAgbV9wYWdlLm1haW5GcmFt
ZSgpLmxvYWRlcigpLnJlbG9hZChyZWxvYWRPcHRpb25zKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDIzNTUxNCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzY5LDcgKzM2OSw3IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpj
b250ZXh0TWVudUkKICAgICAgICAgICAgICAgICBmcmFtZS0+c2VsZWN0aW9uKCkuc2V0U2VsZWN0
aW9uKHdvcmRTZWxlY3Rpb24pOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAg
ICBBU1NFUlQoZnJhbWUtPmVkaXRvcigpLnNlbGVjdGVkVGV4dCgpLmxlbmd0aCgpKTsKLSAgICAg
ICAgICAgICAgICByZXBsYWNlT3B0aW9ucyB8PSBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6U2Vs
ZWN0UmVwbGFjZW1lbnQ7CisgICAgICAgICAgICAgICAgcmVwbGFjZU9wdGlvbnMuYWRkKFJlcGxh
Y2VTZWxlY3Rpb25Db21tYW5kOjpTZWxlY3RSZXBsYWNlbWVudCk7CiAgICAgICAgICAgICB9CiAK
ICAgICAgICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGZyYW1lLT5kb2N1bWVudCgpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAkocmV2aXNpb24gMjM1NTE0KQorKysgU291cmNl
L1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjIxLDE0ICsx
MjIxLDE0IEBAIGJvb2wgRE9NV2luZG93OjpmaW5kKGNvbnN0IFN0cmluZyYgc3RyaW4KICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gRklYTUUgKDEzMDE2KTogU3VwcG9ydCB3aG9sZVdv
cmQsIHNlYXJjaEluRnJhbWVzIGFuZCBzaG93RGlhbG9nLiAgICAKLSAgICBGaW5kT3B0aW9ucyBv
cHRpb25zOworICAgIEZpbmRPcHRpb25zIG9wdGlvbnMgeyBEb05vdFRyYXZlcnNlRmxhdFRyZWUg
fTsKICAgICBpZiAoYmFja3dhcmRzKQotICAgICAgICBvcHRpb25zIHw9IEJhY2t3YXJkczsKKyAg
ICAgICAgb3B0aW9ucy5hZGQoQmFja3dhcmRzKTsKICAgICBpZiAoIWNhc2VTZW5zaXRpdmUpCi0g
ICAgICAgIG9wdGlvbnMgfD0gQ2FzZUluc2Vuc2l0aXZlOworICAgICAgICBvcHRpb25zLmFkZChD
YXNlSW5zZW5zaXRpdmUpOwogICAgIGlmICh3cmFwKQotICAgICAgICBvcHRpb25zIHw9IFdyYXBB
cm91bmQ7Ci0gICAgcmV0dXJuIG1fZnJhbWUtPmVkaXRvcigpLmZpbmRTdHJpbmcoc3RyaW5nLCBv
cHRpb25zIHwgRG9Ob3RUcmF2ZXJzZUZsYXRUcmVlKTsKKyAgICAgICAgb3B0aW9ucy5hZGQoV3Jh
cEFyb3VuZCk7CisgICAgcmV0dXJuIG1fZnJhbWUtPmVkaXRvcigpLmZpbmRTdHJpbmcoc3RyaW5n
LCBvcHRpb25zKTsKIH0KIAogYm9vbCBET01XaW5kb3c6Om9mZnNjcmVlbkJ1ZmZlcmluZygpIGNv
bnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAkocmV2aXNpb24g
MjM1NTE0KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTYxOSw5ICs2MTksOSBAQCBib29sIERyYWdDb250cm9sbGVyOjpjb25jbHVk
ZUVkaXREcmFnKGNvCiAgICAgICAgICAgICBpZiAoc2V0U2VsZWN0aW9uVG9EcmFnQ2FyZXQoaW5u
ZXJGcmFtZS5nZXQoKSwgZHJhZ0NhcmV0LCByYW5nZSwgcG9pbnQpKSB7CiAgICAgICAgICAgICAg
ICAgT3B0aW9uU2V0PFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpDb21tYW5kT3B0aW9uPiBvcHRp
b25zIHsgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OlNlbGVjdFJlcGxhY2VtZW50LCBSZXBsYWNl
U2VsZWN0aW9uQ29tbWFuZDo6UHJldmVudE5lc3RpbmcgfTsKICAgICAgICAgICAgICAgICBpZiAo
ZHJhZ0RhdGEuY2FuU21hcnRSZXBsYWNlKCkpCi0gICAgICAgICAgICAgICAgICAgIG9wdGlvbnMg
fD0gUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OlNtYXJ0UmVwbGFjZTsKKyAgICAgICAgICAgICAg
ICAgICAgb3B0aW9ucy5hZGQoUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OlNtYXJ0UmVwbGFjZSk7
CiAgICAgICAgICAgICAgICAgaWYgKGNob3NlUGxhaW5UZXh0KQotICAgICAgICAgICAgICAgICAg
ICBvcHRpb25zIHw9IFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpNYXRjaFN0eWxlOworICAgICAg
ICAgICAgICAgICAgICBvcHRpb25zLmFkZChSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6TWF0Y2hT
dHlsZSk7CiAgICAgICAgICAgICAgICAgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmNyZWF0ZSgq
bV9kb2N1bWVudFVuZGVyTW91c2UsIGZyYWdtZW50LnJlbGVhc2VOb25OdWxsKCksIG9wdGlvbnMs
IEVkaXRBY3Rpb25JbnNlcnRGcm9tRHJvcCktPmFwcGx5KCk7CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVTbmFwc2hvdHRpbmcuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVTbmFwc2hvdHRpbmcuY3BwCShy
ZXZpc2lvbiAyMzU1MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lU25hcHNob3R0aW5n
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTIsMTMgKzkyLDEzIEBAIHN0ZDo6dW5pcXVlX3B0cjxJ
bWFnZUJ1ZmZlcj4gc25hcHNob3RGcmEKIAogICAgIGF1dG8gcGFpbnRCZWhhdmlvciA9IHN0YXRl
LnBhaW50QmVoYXZpb3I7CiAgICAgaWYgKG9wdGlvbnMgJiBTbmFwc2hvdE9wdGlvbnNGb3JjZUJs
YWNrVGV4dCkKLSAgICAgICAgcGFpbnRCZWhhdmlvciB8PSBQYWludEJlaGF2aW9yOjpGb3JjZUJs
YWNrVGV4dDsKKyAgICAgICAgcGFpbnRCZWhhdmlvci5hZGQoUGFpbnRCZWhhdmlvcjo6Rm9yY2VC
bGFja1RleHQpOwogICAgIGlmIChvcHRpb25zICYgU25hcHNob3RPcHRpb25zUGFpbnRTZWxlY3Rp
b25Pbmx5KQotICAgICAgICBwYWludEJlaGF2aW9yIHw9IFBhaW50QmVoYXZpb3I6OlNlbGVjdGlv
bk9ubHk7CisgICAgICAgIHBhaW50QmVoYXZpb3IuYWRkKFBhaW50QmVoYXZpb3I6OlNlbGVjdGlv
bk9ubHkpOwogICAgIGlmIChvcHRpb25zICYgU25hcHNob3RPcHRpb25zUGFpbnRTZWxlY3Rpb25B
bmRCYWNrZ3JvdW5kc09ubHkpCi0gICAgICAgIHBhaW50QmVoYXZpb3IgfD0gUGFpbnRCZWhhdmlv
cjo6U2VsZWN0aW9uQW5kQmFja2dyb3VuZHNPbmx5OworICAgICAgICBwYWludEJlaGF2aW9yLmFk
ZChQYWludEJlaGF2aW9yOjpTZWxlY3Rpb25BbmRCYWNrZ3JvdW5kc09ubHkpOwogICAgIGlmIChv
cHRpb25zICYgU25hcHNob3RPcHRpb25zUGFpbnRFdmVyeXRoaW5nRXhjbHVkaW5nU2VsZWN0aW9u
KQotICAgICAgICBwYWludEJlaGF2aW9yIHw9IFBhaW50QmVoYXZpb3I6OkV4Y2x1ZGVTZWxlY3Rp
b247CisgICAgICAgIHBhaW50QmVoYXZpb3IuYWRkKFBhaW50QmVoYXZpb3I6OkV4Y2x1ZGVTZWxl
Y3Rpb24pOwogCiAgICAgLy8gT3RoZXIgcGFpbnQgYmVoYXZpb3JzIGFyZSBzZXQgYnkgcGFpbnRD
b250ZW50c0ZvclNuYXBzaG90LgogICAgIGZyYW1lLnZpZXcoKS0+c2V0UGFpbnRCZWhhdmlvcihw
YWludEJlaGF2aW9yKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAJKHJldmlzaW9u
IDIzNTUxNCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTQwLDExICsxNDAsMTEgQEAgc3RhdGljIE9wdGlvblNldDxSZW5kZXJMYXllcjo6
VXBkYXRlTGF5ZQogewogICAgIGF1dG8gZmxhZ3MgPSBSZW5kZXJMYXllcjo6dXBkYXRlTGF5ZXJQ
b3NpdGlvbnNEZWZhdWx0RmxhZ3MoKTsKICAgICBpZiAoZGlkRnVsbFJlcGFpbnQpIHsKLSAgICAg
ICAgZmxhZ3MgLT0gUmVuZGVyTGF5ZXI6OkNoZWNrRm9yUmVwYWludDsKLSAgICAgICAgZmxhZ3Mg
fD0gUmVuZGVyTGF5ZXI6Ok5lZWRzRnVsbFJlcGFpbnRJbkJhY2tpbmc7CisgICAgICAgIGZsYWdz
LnJlbW92ZShSZW5kZXJMYXllcjo6Q2hlY2tGb3JSZXBhaW50KTsKKyAgICAgICAgZmxhZ3MuYWRk
KFJlbmRlckxheWVyOjpOZWVkc0Z1bGxSZXBhaW50SW5CYWNraW5nKTsKICAgICB9CiAgICAgaWYg
KGlzUmVsYXlvdXRpbmdTdWJ0cmVlICYmIGxheWVyLT5lbmNsb3NpbmdQYWdpbmF0aW9uTGF5ZXIo
UmVuZGVyTGF5ZXI6OkluY2x1ZGVDb21wb3NpdGVkUGFnaW5hdGVkTGF5ZXJzKSkKLSAgICAgICAg
ZmxhZ3MgfD0gUmVuZGVyTGF5ZXI6OlVwZGF0ZVBhZ2luYXRpb247CisgICAgICAgIGZsYWdzLmFk
ZChSZW5kZXJMYXllcjo6VXBkYXRlUGFnaW5hdGlvbik7CiAgICAgcmV0dXJuIGZsYWdzOwogfQog
CkBAIC00MDY4LDE4ICs0MDY4LDE4IEBAIHZvaWQgRnJhbWVWaWV3Ojp3aWxsUGFpbnRDb250ZW50
cyhHcmFwaGkKICAgICAKICAgICBpZiAoRnJhbWVWaWV3KiBwYXJlbnRWaWV3ID0gcGFyZW50RnJh
bWVWaWV3KCkpIHsKICAgICAgICAgaWYgKHBhcmVudFZpZXctPnBhaW50QmVoYXZpb3IoKSAmIFBh
aW50QmVoYXZpb3I6OkZsYXR0ZW5Db21wb3NpdGluZ0xheWVycykKLSAgICAgICAgICAgIG1fcGFp
bnRCZWhhdmlvciB8PSBQYWludEJlaGF2aW9yOjpGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnM7Cisg
ICAgICAgICAgICBtX3BhaW50QmVoYXZpb3IuYWRkKFBhaW50QmVoYXZpb3I6OkZsYXR0ZW5Db21w
b3NpdGluZ0xheWVycyk7CiAgICAgICAgIAogICAgICAgICBpZiAocGFyZW50Vmlldy0+cGFpbnRC
ZWhhdmlvcigpICYgUGFpbnRCZWhhdmlvcjo6U25hcHNob3R0aW5nKQotICAgICAgICAgICAgbV9w
YWludEJlaGF2aW9yIHw9IFBhaW50QmVoYXZpb3I6OlNuYXBzaG90dGluZzsKKyAgICAgICAgICAg
IG1fcGFpbnRCZWhhdmlvci5hZGQoUGFpbnRCZWhhdmlvcjo6U25hcHNob3R0aW5nKTsKICAgICAg
ICAgCiAgICAgICAgIGlmIChwYXJlbnRWaWV3LT5wYWludEJlaGF2aW9yKCkgJiBQYWludEJlaGF2
aW9yOjpUaWxlRmlyc3RQYWludCkKLSAgICAgICAgICAgIG1fcGFpbnRCZWhhdmlvciB8PSBQYWlu
dEJlaGF2aW9yOjpUaWxlRmlyc3RQYWludDsKKyAgICAgICAgICAgIG1fcGFpbnRCZWhhdmlvci5h
ZGQoUGFpbnRCZWhhdmlvcjo6VGlsZUZpcnN0UGFpbnQpOwogICAgIH0KIAogICAgIGlmIChkb2N1
bWVudC0+cHJpbnRpbmcoKSkgewotICAgICAgICBtX3BhaW50QmVoYXZpb3IgfD0gUGFpbnRCZWhh
dmlvcjo6RmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzOwotICAgICAgICBtX3BhaW50QmVoYXZpb3Ig
fD0gUGFpbnRCZWhhdmlvcjo6U25hcHNob3R0aW5nOworICAgICAgICBtX3BhaW50QmVoYXZpb3Iu
YWRkKFBhaW50QmVoYXZpb3I6OkZsYXR0ZW5Db21wb3NpdGluZ0xheWVycyk7CisgICAgICAgIG1f
cGFpbnRCZWhhdmlvci5hZGQoUGFpbnRCZWhhdmlvcjo6U25hcHNob3R0aW5nKTsKICAgICB9CiAK
ICAgICBwYWludGluZ1N0YXRlLmlzRmxhdHRlbmluZ1BhaW50T2ZSb290RnJhbWUgPSAobV9wYWlu
dEJlaGF2aW9yICYgUGFpbnRCZWhhdmlvcjo6RmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzKSAmJiAh
ZnJhbWUoKS5vd25lckVsZW1lbnQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAkocmV2aXNpb24g
MjM1NTE0KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTY0MywxMSArMTY0MywxMSBAQCB2b2lkIFBhZ2U6OnNldElzVmlzaWJsZShib29sIGlzVmlz
aWJsZSkKICAgICBhdXRvIHN0YXRlID0gbV9hY3Rpdml0eVN0YXRlOwogCiAgICAgaWYgKGlzVmlz
aWJsZSkgewotICAgICAgICBzdGF0ZSAtPSBBY3Rpdml0eVN0YXRlOjpJc1Zpc3VhbGx5SWRsZTsK
LSAgICAgICAgc3RhdGUgfD0geyBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUsIEFjdGl2aXR5U3Rh
dGU6OklzVmlzaWJsZU9yT2NjbHVkZWQgfTsKKyAgICAgICAgc3RhdGUucmVtb3ZlKEFjdGl2aXR5
U3RhdGU6OklzVmlzdWFsbHlJZGxlKTsKKyAgICAgICAgc3RhdGUuYWRkKHsgQWN0aXZpdHlTdGF0
ZTo6SXNWaXNpYmxlLCBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGVPck9jY2x1ZGVkIH0pOwogICAg
IH0gZWxzZSB7Ci0gICAgICAgIHN0YXRlIHw9IEFjdGl2aXR5U3RhdGU6OklzVmlzdWFsbHlJZGxl
OwotICAgICAgICBzdGF0ZSAtPSB7IEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSwgQWN0aXZpdHlT
dGF0ZTo6SXNWaXNpYmxlT3JPY2NsdWRlZCB9OworICAgICAgICBzdGF0ZS5hZGQoQWN0aXZpdHlT
dGF0ZTo6SXNWaXN1YWxseUlkbGUpOworICAgICAgICBzdGF0ZS5yZW1vdmUoeyBBY3Rpdml0eVN0
YXRlOjpJc1Zpc2libGUsIEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZU9yT2NjbHVkZWQgfSk7CiAg
ICAgfQogICAgIHNldEFjdGl2aXR5U3RhdGUoc3RhdGUpOwogfQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGFnZS9QZXJmb3JtYW5jZU9ic2VydmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wYWdlL1BlcmZvcm1hbmNlT2JzZXJ2ZXIuY3BwCShyZXZpc2lvbiAyMzU1MTQpCisrKyBT
b3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlT2JzZXJ2ZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02NSw3ICs2NSw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFBlcmZvcm1hbmNlT2JzZXJ2ZXI6
Om8KICAgICBPcHRpb25TZXQ8UGVyZm9ybWFuY2VFbnRyeTo6VHlwZT4gZmlsdGVyOwogICAgIGZv
ciAoY29uc3QgU3RyaW5nJiBlbnRyeVR5cGUgOiBpbml0LmVudHJ5VHlwZXMpIHsKICAgICAgICAg
aWYgKGF1dG8gdHlwZSA9IFBlcmZvcm1hbmNlRW50cnk6OnBhcnNlRW50cnlUeXBlU3RyaW5nKGVu
dHJ5VHlwZSkpCi0gICAgICAgICAgICBmaWx0ZXIgfD0gKnR5cGU7CisgICAgICAgICAgICBmaWx0
ZXIuYWRkKCp0eXBlKTsKICAgICB9CiAKICAgICBpZiAoZmlsdGVyLmlzRW1wdHkoKSkKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvVGV4dEluZGljYXRvci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGFnZS9UZXh0SW5kaWNhdG9yLmNwcAkocmV2aXNpb24gMjM1NTE0KQorKysg
U291cmNlL1dlYkNvcmUvcGFnZS9UZXh0SW5kaWNhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NzgsOCArNzgsOCBAQCBSZWZQdHI8VGV4dEluZGljYXRvcj4gVGV4dEluZGljYXRvcjo6Y3JlCiAg
ICAgVmlzaWJsZVNlbGVjdGlvbiBvbGRTZWxlY3Rpb24gPSBmcmFtZS0+c2VsZWN0aW9uKCkuc2Vs
ZWN0aW9uKCk7CiAgICAgT3B0aW9uU2V0PFRlbXBvcmFyeVNlbGVjdGlvbk9wdGlvbj4gdGVtcG9y
YXJ5U2VsZWN0aW9uT3B0aW9uczsKICNpZiBQTEFURk9STShJT1MpCi0gICAgdGVtcG9yYXJ5U2Vs
ZWN0aW9uT3B0aW9ucyB8PSBUZW1wb3JhcnlTZWxlY3Rpb25PcHRpb25JZ25vcmVTZWxlY3Rpb25D
aGFuZ2VzOwotICAgIHRlbXBvcmFyeVNlbGVjdGlvbk9wdGlvbnMgfD0gVGVtcG9yYXJ5U2VsZWN0
aW9uT3B0aW9uRW5hYmxlQXBwZWFyYW5jZVVwZGF0ZXM7CisgICAgdGVtcG9yYXJ5U2VsZWN0aW9u
T3B0aW9ucy5hZGQoVGVtcG9yYXJ5U2VsZWN0aW9uT3B0aW9uSWdub3JlU2VsZWN0aW9uQ2hhbmdl
cyk7CisgICAgdGVtcG9yYXJ5U2VsZWN0aW9uT3B0aW9ucy5hZGQoVGVtcG9yYXJ5U2VsZWN0aW9u
T3B0aW9uRW5hYmxlQXBwZWFyYW5jZVVwZGF0ZXMpOwogI2VuZGlmCiAgICAgVGVtcG9yYXJ5U2Vs
ZWN0aW9uQ2hhbmdlIHNlbGVjdGlvbkNoYW5nZSgqZnJhbWUsIHsgcmFuZ2UgfSwgdGVtcG9yYXJ5
U2VsZWN0aW9uT3B0aW9ucyk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvV2luZG93RmVh
dHVyZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvV2luZG93RmVhdHVy
ZXMuY3BwCShyZXZpc2lvbiAyMzU1MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1dpbmRvd0Zl
YXR1cmVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIwLDcgKzEyMCw3IEBAIE9wdGlvblNldDxE
aXNhYmxlZEFkYXB0YXRpb25zPiBwYXJzZURpc2EKICAgICBmb3IgKGF1dG8mIG5hbWUgOiBkaXNh
YmxlZEFkYXB0YXRpb25zU3RyaW5nLnNwbGl0KCcsJykpIHsKICAgICAgICAgYXV0byBub3JtYWxp
emVkTmFtZSA9IG5hbWUuc3RyaXBXaGl0ZVNwYWNlKCkuY29udmVydFRvQVNDSUlMb3dlcmNhc2Uo
KTsKICAgICAgICAgaWYgKG5vcm1hbGl6ZWROYW1lID09IHdhdGNoQWRhcHRhdGlvbk5hbWUoKSkK
LSAgICAgICAgICAgIGRpc2FibGVkQWRhcHRhdGlvbnMgfD0gRGlzYWJsZWRBZGFwdGF0aW9uczo6
V2F0Y2g7CisgICAgICAgICAgICBkaXNhYmxlZEFkYXB0YXRpb25zLmFkZChEaXNhYmxlZEFkYXB0
YXRpb25zOjpXYXRjaCk7CiAgICAgfQogICAgIHJldHVybiBkaXNhYmxlZEFkYXB0YXRpb25zOwog
fQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9s
aWN5LmgJKHJldmlzaW9uIDIzNTUxNCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRl
bnRTZWN1cml0eVBvbGljeS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTEsMTEgKzE1MSwxMSBAQCBw
dWJsaWM6CiAgICAgdm9pZCBlbmZvcmNlU2FuZGJveEZsYWdzKFNhbmRib3hGbGFncyBzYW5kYm94
RmxhZ3MpIHsgbV9zYW5kYm94RmxhZ3MgfD0gc2FuZGJveEZsYWdzOyB9CiAgICAgdm9pZCBhZGRI
YXNoQWxnb3JpdGhtc0ZvcklubGluZVNjcmlwdHMoT3B0aW9uU2V0PENvbnRlbnRTZWN1cml0eVBv
bGljeUhhc2hBbGdvcml0aG0+IGhhc2hBbGdvcml0aG1zRm9ySW5saW5lU2NyaXB0cykKICAgICB7
Ci0gICAgICAgIG1faGFzaEFsZ29yaXRobXNGb3JJbmxpbmVTY3JpcHRzIHw9IGhhc2hBbGdvcml0
aG1zRm9ySW5saW5lU2NyaXB0czsKKyAgICAgICAgbV9oYXNoQWxnb3JpdGhtc0ZvcklubGluZVNj
cmlwdHMuYWRkKGhhc2hBbGdvcml0aG1zRm9ySW5saW5lU2NyaXB0cyk7CiAgICAgfQogICAgIHZv
aWQgYWRkSGFzaEFsZ29yaXRobXNGb3JJbmxpbmVTdHlsZXNoZWV0cyhPcHRpb25TZXQ8Q29udGVu
dFNlY3VyaXR5UG9saWN5SGFzaEFsZ29yaXRobT4gaGFzaEFsZ29yaXRobXNGb3JJbmxpbmVTdHls
ZXNoZWV0cykKICAgICB7Ci0gICAgICAgIG1faGFzaEFsZ29yaXRobXNGb3JJbmxpbmVTdHlsZXNo
ZWV0cyB8PSBoYXNoQWxnb3JpdGhtc0ZvcklubGluZVN0eWxlc2hlZXRzOworICAgICAgICBtX2hh
c2hBbGdvcml0aG1zRm9ySW5saW5lU3R5bGVzaGVldHMuYWRkKGhhc2hBbGdvcml0aG1zRm9ySW5s
aW5lU3R5bGVzaGVldHMpOwogICAgIH0KIAogICAgIC8vIFVzZWQgYnkgQ29udGVudFNlY3VyaXR5
UG9saWN5U291cmNlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJp
dHlQb2xpY3lTb3VyY2VMaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdl
L2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0LmNwcAkocmV2aXNpb24gMjM1NTE0
KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNl
TGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3Myw3ICs0NzMsNyBAQCBib29sIENvbnRlbnRT
ZWN1cml0eVBvbGljeVNvdXJjZUxpc3Q6OnBhCiAgICAgaWYgKGRpZ2VzdC0+dmFsdWUuc2l6ZSgp
ID4gQ29udGVudFNlY3VyaXR5UG9saWN5SGFzaDo6bWF4aW11bURpZ2VzdExlbmd0aCkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgbV9oYXNoQWxnb3JpdGhtc1VzZWQgfD0gZGlnZXN0LT5h
bGdvcml0aG07CisgICAgbV9oYXNoQWxnb3JpdGhtc1VzZWQuYWRkKGRpZ2VzdC0+YWxnb3JpdGht
KTsKICAgICBtX2hhc2hlcy5hZGQoV1RGTW92ZSgqZGlnZXN0KSk7CiAgICAgcmV0dXJuIHRydWU7
CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUV2ZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1FdmVudC5oCShyZXZpc2lv
biAyMzU1MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUV2ZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTExNSwxMyArMTE1LDEzIEBAIHByb3RlY3RlZDoKICAgICAgICAgLCBt
X3RpbWVzdGFtcCh0aW1lc3RhbXApCiAgICAgewogICAgICAgICBpZiAoc2hpZnRLZXkpCi0gICAg
ICAgICAgICBtX21vZGlmaWVycyB8PSBNb2RpZmllcjo6U2hpZnRLZXk7CisgICAgICAgICAgICBt
X21vZGlmaWVycy5hZGQoTW9kaWZpZXI6OlNoaWZ0S2V5KTsKICAgICAgICAgaWYgKGN0cmxLZXkp
Ci0gICAgICAgICAgICBtX21vZGlmaWVycyB8PSBNb2RpZmllcjo6Q3RybEtleTsKKyAgICAgICAg
ICAgIG1fbW9kaWZpZXJzLmFkZChNb2RpZmllcjo6Q3RybEtleSk7CiAgICAgICAgIGlmIChhbHRL
ZXkpCi0gICAgICAgICAgICBtX21vZGlmaWVycyB8PSBNb2RpZmllcjo6QWx0S2V5OworICAgICAg
ICAgICAgbV9tb2RpZmllcnMuYWRkKE1vZGlmaWVyOjpBbHRLZXkpOwogICAgICAgICBpZiAobWV0
YUtleSkKLSAgICAgICAgICAgIG1fbW9kaWZpZXJzIHw9IE1vZGlmaWVyOjpNZXRhS2V5OworICAg
ICAgICAgICAgbV9tb2RpZmllcnMuYWRkKE1vZGlmaWVyOjpNZXRhS2V5KTsKICAgICB9CiAKICAg
ICAvLyBFeHBsaWNpdCBwcm90ZWN0ZWQgZGVzdHJ1Y3RvciBzbyB0aGF0IHBlb3BsZSBkb24ndCBh
Y2NpZGVudGFsbHkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybUV2
ZW50RmFjdG9yeUlPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvUGxhdGZvcm1FdmVudEZhY3RvcnlJT1MubW0JKHJldmlzaW9uIDIzNTUxNCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybUV2ZW50RmFjdG9yeUlPUy5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtNDMsMTUgKzQzLDE1IEBAIHN0YXRpYyBPcHRpb25TZXQ8UGxhdGZvcm1FdmVu
dDo6TW9kaWZpZXIKICAgICBPcHRpb25TZXQ8UGxhdGZvcm1FdmVudDo6TW9kaWZpZXI+IG1vZGlm
aWVyczsKIAogICAgIGlmIChldmVudC5tb2RpZmllckZsYWdzICYgV2ViRXZlbnRGbGFnTWFza1No
aWZ0KQotICAgICAgICBtb2RpZmllcnMgfD0gUGxhdGZvcm1FdmVudDo6TW9kaWZpZXI6OlNoaWZ0
S2V5OworICAgICAgICBtb2RpZmllcnMuYWRkKFBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVyOjpTaGlm
dEtleSk7CiAgICAgaWYgKGV2ZW50Lm1vZGlmaWVyRmxhZ3MgJiBXZWJFdmVudEZsYWdNYXNrQ29u
dHJvbCkKLSAgICAgICAgbW9kaWZpZXJzIHw9IFBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVyOjpDdHJs
S2V5OworICAgICAgICBtb2RpZmllcnMuYWRkKFBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVyOjpDdHJs
S2V5KTsKICAgICBpZiAoZXZlbnQubW9kaWZpZXJGbGFncyAmIFdlYkV2ZW50RmxhZ01hc2tBbHRl
cm5hdGUpCi0gICAgICAgIG1vZGlmaWVycyB8PSBQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcjo6QWx0
S2V5OworICAgICAgICBtb2RpZmllcnMuYWRkKFBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVyOjpBbHRL
ZXkpOwogICAgIGlmIChldmVudC5tb2RpZmllckZsYWdzICYgV2ViRXZlbnRGbGFnTWFza0NvbW1h
bmQpCi0gICAgICAgIG1vZGlmaWVycyB8PSBQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcjo6TWV0YUtl
eTsKKyAgICAgICAgbW9kaWZpZXJzLmFkZChQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcjo6TWV0YUtl
eSk7CiAgICAgaWYgKGV2ZW50Lm1vZGlmaWVyRmxhZ3MgJiBXZWJFdmVudEZsYWdNYXNrQWxwaGFT
aGlmdCkKLSAgICAgICAgbW9kaWZpZXJzIHw9IFBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVyOjpDYXBz
TG9ja0tleTsKKyAgICAgICAgbW9kaWZpZXJzLmFkZChQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcjo6
Q2Fwc0xvY2tLZXkpOwogCiAgICAgcmV0dXJuIG1vZGlmaWVyczsKIH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybUV2ZW50RmFjdG9yeU1hYy5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1FdmVudEZhY3RvcnlNYWMu
bW0JKHJldmlzaW9uIDIzNTUxNCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0
Zm9ybUV2ZW50RmFjdG9yeU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNjY2LDE1ICs2NjYsMTUg
QEAgT3B0aW9uU2V0PFBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVyPiBtb2RpZgogICAgIE9wdGlvblNl
dDxQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcj4gbW9kaWZpZXJzOwogCiAgICAgaWYgKGV2ZW50Lm1v
ZGlmaWVyRmxhZ3MgJiBOU0V2ZW50TW9kaWZpZXJGbGFnU2hpZnQpCi0gICAgICAgIG1vZGlmaWVy
cyB8PSBQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcjo6U2hpZnRLZXk7CisgICAgICAgIG1vZGlmaWVy
cy5hZGQoUGxhdGZvcm1FdmVudDo6TW9kaWZpZXI6OlNoaWZ0S2V5KTsKICAgICBpZiAoZXZlbnQu
bW9kaWZpZXJGbGFncyAmIE5TRXZlbnRNb2RpZmllckZsYWdDb250cm9sKQotICAgICAgICBtb2Rp
ZmllcnMgfD0gUGxhdGZvcm1FdmVudDo6TW9kaWZpZXI6OkN0cmxLZXk7CisgICAgICAgIG1vZGlm
aWVycy5hZGQoUGxhdGZvcm1FdmVudDo6TW9kaWZpZXI6OkN0cmxLZXkpOwogICAgIGlmIChldmVu
dC5tb2RpZmllckZsYWdzICYgTlNFdmVudE1vZGlmaWVyRmxhZ09wdGlvbikKLSAgICAgICAgbW9k
aWZpZXJzIHw9IFBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVyOjpBbHRLZXk7CisgICAgICAgIG1vZGlm
aWVycy5hZGQoUGxhdGZvcm1FdmVudDo6TW9kaWZpZXI6OkFsdEtleSk7CiAgICAgaWYgKGV2ZW50
Lm1vZGlmaWVyRmxhZ3MgJiBOU0V2ZW50TW9kaWZpZXJGbGFnQ29tbWFuZCkKLSAgICAgICAgbW9k
aWZpZXJzIHw9IFBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVyOjpNZXRhS2V5OworICAgICAgICBtb2Rp
ZmllcnMuYWRkKFBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVyOjpNZXRhS2V5KTsKICAgICBpZiAoZXZl
bnQubW9kaWZpZXJGbGFncyAmIE5TRXZlbnRNb2RpZmllckZsYWdDYXBzTG9jaykKLSAgICAgICAg
bW9kaWZpZXJzIHw9IFBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVyOjpDYXBzTG9ja0tleTsKKyAgICAg
ICAgbW9kaWZpZXJzLmFkZChQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcjo6Q2Fwc0xvY2tLZXkpOwog
CiAgICAgcmV0dXJuIG1vZGlmaWVyczsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyLmNwcAkocmV2aXNpb24gMjM1NTE0KQorKysgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTU3LDE3ICs1NTcsMTcg
QEAgdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlTGF5ZXJQb3NpdGlvbnMoUgogICAgIC8vIENsZWFy
IHRoZSBJc0NvbXBvc2l0aW5nVXBkYXRlUm9vdCBmbGFnIG9uY2Ugd2UndmUgZm91bmQgdGhlIGZp
cnN0IGNvbXBvc2l0aW5nIGxheWVyIGluIHRoaXMgdXBkYXRlLgogICAgIGJvb2wgaXNVcGRhdGVS
b290ID0gZmxhZ3MuY29udGFpbnMoSXNDb21wb3NpdGluZ1VwZGF0ZVJvb3QpOwogICAgIGlmIChp
c0NvbXBvc2l0ZWQoKSkKLSAgICAgICAgZmxhZ3MgLT0gSXNDb21wb3NpdGluZ1VwZGF0ZVJvb3Q7
CisgICAgICAgIGZsYWdzLnJlbW92ZShJc0NvbXBvc2l0aW5nVXBkYXRlUm9vdCk7CiAKICAgICBp
ZiAocmVuZGVyZXIoKS5pc0luRmxvd1JlbmRlckZyYWdtZW50ZWRGbG93KCkpIHsKICAgICAgICAg
dXBkYXRlUGFnaW5hdGlvbigpOwotICAgICAgICBmbGFncyB8PSBVcGRhdGVQYWdpbmF0aW9uOwor
ICAgICAgICBmbGFncy5hZGQoVXBkYXRlUGFnaW5hdGlvbik7CiAgICAgfQogCiAgICAgaWYgKHRy
YW5zZm9ybSgpKSB7Ci0gICAgICAgIGZsYWdzIHw9IFNlZW5UcmFuc2Zvcm1lZExheWVyOworICAg
ICAgICBmbGFncy5hZGQoU2VlblRyYW5zZm9ybWVkTGF5ZXIpOwogICAgICAgICBpZiAoIXRyYW5z
Zm9ybSgpLT5pc0FmZmluZSgpKQotICAgICAgICAgICAgZmxhZ3MgfD0gU2VlbjNEVHJhbnNmb3Jt
ZWRMYXllcjsKKyAgICAgICAgICAgIGZsYWdzLmFkZChTZWVuM0RUcmFuc2Zvcm1lZExheWVyKTsK
ICAgICB9CiAKICAgICBmb3IgKFJlbmRlckxheWVyKiBjaGlsZCA9IGZpcnN0Q2hpbGQoKTsgY2hp
bGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpCkBAIC01NzYsOSArNTc2LDkgQEAgdm9p
ZCBSZW5kZXJMYXllcjo6dXBkYXRlTGF5ZXJQb3NpdGlvbnMoUgogICAgIGlmICgoZmxhZ3MgJiBV
cGRhdGVDb21wb3NpdGluZ0xheWVycykgJiYgaXNDb21wb3NpdGVkKCkpIHsKICAgICAgICAgT3B0
aW9uU2V0PFJlbmRlckxheWVyQmFja2luZzo6VXBkYXRlQWZ0ZXJMYXlvdXRGbGFncz4gdXBkYXRl
RmxhZ3M7CiAgICAgICAgIGlmIChmbGFncyAmIE5lZWRzRnVsbFJlcGFpbnRJbkJhY2tpbmcpCi0g
ICAgICAgICAgICB1cGRhdGVGbGFncyB8PSBSZW5kZXJMYXllckJhY2tpbmc6OlVwZGF0ZUFmdGVy
TGF5b3V0RmxhZ3M6Ok5lZWRzRnVsbFJlcGFpbnQ7CisgICAgICAgICAgICB1cGRhdGVGbGFncy5h
ZGQoUmVuZGVyTGF5ZXJCYWNraW5nOjpVcGRhdGVBZnRlckxheW91dEZsYWdzOjpOZWVkc0Z1bGxS
ZXBhaW50KTsKICAgICAgICAgaWYgKGlzVXBkYXRlUm9vdCkKLSAgICAgICAgICAgIHVwZGF0ZUZs
YWdzIHw9IFJlbmRlckxheWVyQmFja2luZzo6VXBkYXRlQWZ0ZXJMYXlvdXRGbGFnczo6SXNVcGRh
dGVSb290OworICAgICAgICAgICAgdXBkYXRlRmxhZ3MuYWRkKFJlbmRlckxheWVyQmFja2luZzo6
VXBkYXRlQWZ0ZXJMYXlvdXRGbGFnczo6SXNVcGRhdGVSb290KTsKICAgICAgICAgYmFja2luZygp
LT51cGRhdGVBZnRlckxheW91dCh1cGRhdGVGbGFncyk7CiAgICAgfQogICAgICAgICAKQEAgLTg1
MSwxNiArODUxLDE2IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZUxheWVyUG9zaXRpb25zQWYK
IAogICAgIGJvb2wgcG9zaXRpb25DaGFuZ2VkID0gdXBkYXRlTGF5ZXJQb3NpdGlvbigpOwogICAg
IGlmIChwb3NpdGlvbkNoYW5nZWQpCi0gICAgICAgIGZsYWdzIHw9IEhhc0NoYW5nZWRBbmNlc3Rv
cjsKKyAgICAgICAgZmxhZ3MuYWRkKEhhc0NoYW5nZWRBbmNlc3Rvcik7CiAKICAgICBpZiAoZmxh
Z3MuY29udGFpbnNBbnkoeyBIYXNDaGFuZ2VkQW5jZXN0b3IsIEhhc1NlZW5WaWV3cG9ydENvbnN0
cmFpbmVkQW5jZXN0b3IsIElzT3ZlcmZsb3dTY3JvbGwgfSkpCiAgICAgICAgIGNsZWFyQ2xpcFJl
Y3RzKCk7CiAKICAgICBpZiAocmVuZGVyZXIoKS5zdHlsZSgpLmhhc1ZpZXdwb3J0Q29uc3RyYWlu
ZWRQb3NpdGlvbigpKQotICAgICAgICBmbGFncyB8PSBIYXNTZWVuVmlld3BvcnRDb25zdHJhaW5l
ZEFuY2VzdG9yOworICAgICAgICBmbGFncy5hZGQoSGFzU2VlblZpZXdwb3J0Q29uc3RyYWluZWRB
bmNlc3Rvcik7CiAKICAgICBpZiAocmVuZGVyZXIoKS5oYXNPdmVyZmxvd0NsaXAoKSkKLSAgICAg
ICAgZmxhZ3MgfD0gSGFzU2VlbkFuY2VzdG9yV2l0aE92ZXJmbG93Q2xpcDsKKyAgICAgICAgZmxh
Z3MuYWRkKEhhc1NlZW5BbmNlc3RvcldpdGhPdmVyZmxvd0NsaXApOwogICAgIAogICAgIGJvb2wg
c2hvdWxkQ29tcHV0ZVJlcGFpbnRSZWN0cyA9IChmbGFncy5jb250YWlucyhIYXNTZWVuVmlld3Bv
cnRDb25zdHJhaW5lZEFuY2VzdG9yKSB8fCBmbGFncy5jb250YWluc0FsbCh7IElzT3ZlcmZsb3dT
Y3JvbGwsIEhhc1NlZW5BbmNlc3RvcldpdGhPdmVyZmxvd0NsaXAgfSkpICYmIGlzU2VsZlBhaW50
aW5nTGF5ZXIoKTsKICAgICBib29sIGlzVmlzdWFsbHlFbXB0eSA9ICFpc1Zpc3VhbGx5Tm9uRW1w
dHkoKTsKQEAgLTM5NzMsNyArMzk3Myw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXIo
R3JhcGhpY3NDb24KICAgICAgICAgLy8gVGhlIHBlcmZvcm1pbmdQYWludEludmFsaWRhdGlvbigp
IHBhaW50aW5nIHBhc3MgZ29lcyB0aHJvdWdoIGNvbXBvc2l0aW5nIGxheWVycywKICAgICAgICAg
Ly8gYnV0IHdlIG5lZWQgdG8gZW5zdXJlIHRoYXQgd2UgZG9uJ3QgY2FjaGUgY2xpcCByZWN0cyBj
b21wdXRlZCB3aXRoIHRoZSB3cm9uZyByb290IGluIHRoaXMgY2FzZS4KICAgICAgICAgaWYgKGNv
bnRleHQucGVyZm9ybWluZ1BhaW50SW52YWxpZGF0aW9uKCkgfHwgKHBhaW50aW5nSW5mby5wYWlu
dEJlaGF2aW9yICYgUGFpbnRCZWhhdmlvcjo6RmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzKSkKLSAg
ICAgICAgICAgIHBhaW50RmxhZ3MgfD0gUGFpbnRMYXllclRlbXBvcmFyeUNsaXBSZWN0czsKKyAg
ICAgICAgICAgIHBhaW50RmxhZ3MuYWRkKFBhaW50TGF5ZXJUZW1wb3JhcnlDbGlwUmVjdHMpOwog
ICAgICAgICBlbHNlIGlmICghYmFja2luZygpLT5wYWludHNJbnRvV2luZG93KCkKICAgICAgICAg
ICAgICYmICFiYWNraW5nKCktPnBhaW50c0ludG9Db21wb3NpdGVkQW5jZXN0b3IoKQogICAgICAg
ICAgICAgJiYgIXNob3VsZERvU29mdHdhcmVQYWludCh0aGlzLCBwYWludEZsYWdzLmNvbnRhaW5z
KFBhaW50TGF5ZXJQYWludGluZ1JlZmxlY3Rpb24pKQpAQCAtNDAwMCw3ICs0MDAwLDcgQEAgdm9p
ZCBSZW5kZXJMYXllcjo6cGFpbnRMYXllcihHcmFwaGljc0NvbgogICAgICAgICByZXR1cm47CiAK
ICAgICBpZiAocGFpbnRzV2l0aFRyYW5zcGFyZW5jeShwYWludGluZ0luZm8ucGFpbnRCZWhhdmlv
cikpCi0gICAgICAgIHBhaW50RmxhZ3MgfD0gUGFpbnRMYXllckhhdmVUcmFuc3BhcmVuY3k7Cisg
ICAgICAgIHBhaW50RmxhZ3MuYWRkKFBhaW50TGF5ZXJIYXZlVHJhbnNwYXJlbmN5KTsKIAogICAg
IC8vIFBhaW50TGF5ZXJBcHBsaWVkVHJhbnNmb3JtIGlzIHVzZWQgaW4gUmVuZGVyUmVwbGljYSwg
dG8gYXZvaWQgYXBwbHlpbmcgdGhlIHRyYW5zZm9ybSB0d2ljZS4KICAgICBpZiAocGFpbnRzV2l0
aFRyYW5zZm9ybShwYWludGluZ0luZm8ucGFpbnRCZWhhdmlvcikgJiYgIShwYWludEZsYWdzICYg
UGFpbnRMYXllckFwcGxpZWRUcmFuc2Zvcm0pKSB7CkBAIC00MDYxLDcgKzQwNjEsNyBAQCB2b2lk
IFJlbmRlckxheWVyOjpwYWludExheWVyQ29udGVudHNBbmRSCiAgICAgICAgIG1fcGFpbnRpbmdJ
bnNpZGVSZWZsZWN0aW9uID0gZmFsc2U7CiAgICAgfQogCi0gICAgbG9jYWxQYWludEZsYWdzIHw9
IHBhaW50TGF5ZXJQYWludGluZ0NvbXBvc2l0aW5nQWxsUGhhc2VzRmxhZ3MoKTsKKyAgICBsb2Nh
bFBhaW50RmxhZ3MuYWRkKHBhaW50TGF5ZXJQYWludGluZ0NvbXBvc2l0aW5nQWxsUGhhc2VzRmxh
Z3MoKSk7CiAgICAgcGFpbnRMYXllckNvbnRlbnRzKGNvbnRleHQsIHBhaW50aW5nSW5mbywgbG9j
YWxQYWludEZsYWdzKTsKIH0KIApAQCAtNDM1NSwyMSArNDM1NSwyMSBAQCB2b2lkIFJlbmRlckxh
eWVyOjpwYWludExheWVyQ29udGVudHMoR3JhCiAKICAgICAgICAgT3B0aW9uU2V0PFBhaW50QmVo
YXZpb3I+IHBhaW50QmVoYXZpb3IgPSBQYWludEJlaGF2aW9yOjpOb3JtYWw7CiAgICAgICAgIGlm
IChsb2NhbFBhaW50RmxhZ3MgJiBQYWludExheWVyUGFpbnRpbmdTa2lwUm9vdEJhY2tncm91bmQp
Ci0gICAgICAgICAgICBwYWludEJlaGF2aW9yIHw9IFBhaW50QmVoYXZpb3I6OlNraXBSb290QmFj
a2dyb3VuZDsKKyAgICAgICAgICAgIHBhaW50QmVoYXZpb3IuYWRkKFBhaW50QmVoYXZpb3I6OlNr
aXBSb290QmFja2dyb3VuZCk7CiAgICAgICAgIGVsc2UgaWYgKGxvY2FsUGFpbnRGbGFncyAmIFBh
aW50TGF5ZXJQYWludGluZ1Jvb3RCYWNrZ3JvdW5kT25seSkKLSAgICAgICAgICAgIHBhaW50QmVo
YXZpb3IgfD0gUGFpbnRCZWhhdmlvcjo6Um9vdEJhY2tncm91bmRPbmx5OworICAgICAgICAgICAg
cGFpbnRCZWhhdmlvci5hZGQoUGFpbnRCZWhhdmlvcjo6Um9vdEJhY2tncm91bmRPbmx5KTsKIAog
ICAgICAgICBpZiAocGFpbnRpbmdJbmZvLnBhaW50QmVoYXZpb3IgJiBQYWludEJlaGF2aW9yOjpG
bGF0dGVuQ29tcG9zaXRpbmdMYXllcnMpCi0gICAgICAgICAgICBwYWludEJlaGF2aW9yIHw9IFBh
aW50QmVoYXZpb3I6OkZsYXR0ZW5Db21wb3NpdGluZ0xheWVyczsKKyAgICAgICAgICAgIHBhaW50
QmVoYXZpb3IuYWRkKFBhaW50QmVoYXZpb3I6OkZsYXR0ZW5Db21wb3NpdGluZ0xheWVycyk7CiAg
ICAgICAgIAogICAgICAgICBpZiAocGFpbnRpbmdJbmZvLnBhaW50QmVoYXZpb3IgJiBQYWludEJl
aGF2aW9yOjpTbmFwc2hvdHRpbmcpCi0gICAgICAgICAgICBwYWludEJlaGF2aW9yIHw9IFBhaW50
QmVoYXZpb3I6OlNuYXBzaG90dGluZzsKKyAgICAgICAgICAgIHBhaW50QmVoYXZpb3IuYWRkKFBh
aW50QmVoYXZpb3I6OlNuYXBzaG90dGluZyk7CiAgICAgICAgIAogICAgICAgICBpZiAoKHBhaW50
aW5nSW5mby5wYWludEJlaGF2aW9yICYgUGFpbnRCZWhhdmlvcjo6VGlsZUZpcnN0UGFpbnQpICYm
IGlzUmVuZGVyVmlld0xheWVyKCkpCi0gICAgICAgICAgICBwYWludEJlaGF2aW9yIHw9IFBhaW50
QmVoYXZpb3I6OlRpbGVGaXJzdFBhaW50OworICAgICAgICAgICAgcGFpbnRCZWhhdmlvci5hZGQo
UGFpbnRCZWhhdmlvcjo6VGlsZUZpcnN0UGFpbnQpOwogCiAgICAgICAgIGlmIChwYWludGluZ0lu
Zm8ucGFpbnRCZWhhdmlvciAmIFBhaW50QmVoYXZpb3I6OkV4Y2x1ZGVTZWxlY3Rpb24pCi0gICAg
ICAgICAgICBwYWludEJlaGF2aW9yIHw9IFBhaW50QmVoYXZpb3I6OkV4Y2x1ZGVTZWxlY3Rpb247
CisgICAgICAgICAgICBwYWludEJlaGF2aW9yLmFkZChQYWludEJlaGF2aW9yOjpFeGNsdWRlU2Vs
ZWN0aW9uKTsKIAogICAgICAgICBMYXlvdXRSZWN0IHBhaW50RGlydHlSZWN0ID0gbG9jYWxQYWlu
dGluZ0luZm8ucGFpbnREaXJ0eVJlY3Q7CiAgICAgICAgIGlmIChzaG91bGRQYWludENvbnRlbnQg
fHwgc2hvdWxkUGFpbnRPdXRsaW5lIHx8IGlzUGFpbnRpbmdPdmVybGF5U2Nyb2xsYmFycykgewpA
QCAtNDQzOCwxMyArNDQzOCwxMyBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludExheWVyQ29udGVu
dHMoR3JhCiAgICAgaWYgKHNob3VsZFBhaW50Q29udGVudCAmJiAhKHNlbGVjdGlvbk9ubHkgfHwg
c2VsZWN0aW9uQW5kQmFja2dyb3VuZHNPbmx5KSkgewogICAgICAgICBPcHRpb25TZXQ8UGFpbnRC
ZWhhdmlvcj4gcGFpbnRCZWhhdmlvciA9IFBhaW50QmVoYXZpb3I6Ok5vcm1hbDsKICAgICAgICAg
aWYgKHBhaW50aW5nSW5mby5wYWludEJlaGF2aW9yICYgUGFpbnRCZWhhdmlvcjo6RmxhdHRlbkNv
bXBvc2l0aW5nTGF5ZXJzKQotICAgICAgICAgICAgcGFpbnRCZWhhdmlvciB8PSBQYWludEJlaGF2
aW9yOjpGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnM7CisgICAgICAgICAgICBwYWludEJlaGF2aW9y
LmFkZChQYWludEJlaGF2aW9yOjpGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMpOwogICAgICAgICAK
ICAgICAgICAgaWYgKHBhaW50aW5nSW5mby5wYWludEJlaGF2aW9yICYgUGFpbnRCZWhhdmlvcjo6
U25hcHNob3R0aW5nKQotICAgICAgICAgICAgcGFpbnRCZWhhdmlvciB8PSBQYWludEJlaGF2aW9y
OjpTbmFwc2hvdHRpbmc7CisgICAgICAgICAgICBwYWludEJlaGF2aW9yLmFkZChQYWludEJlaGF2
aW9yOjpTbmFwc2hvdHRpbmcpOwogICAgICAgICAKICAgICAgICAgaWYgKHBhaW50aW5nSW5mby5w
YWludEJlaGF2aW9yICYgUGFpbnRCZWhhdmlvcjo6VGlsZUZpcnN0UGFpbnQpCi0gICAgICAgICAg
ICBwYWludEJlaGF2aW9yIHw9IFBhaW50QmVoYXZpb3I6OlRpbGVGaXJzdFBhaW50OworICAgICAg
ICAgICAgcGFpbnRCZWhhdmlvci5hZGQoUGFpbnRCZWhhdmlvcjo6VGlsZUZpcnN0UGFpbnQpOwog
CiAgICAgICAgIGlmIChzaG91bGRQYWludE1hc2socGFpbnRpbmdJbmZvLnBhaW50QmVoYXZpb3Is
IGxvY2FsUGFpbnRGbGFncykpIHsKICAgICAgICAgICAgIC8vIFBhaW50IHRoZSBtYXNrIGZvciB0
aGUgZnJhZ21lbnRzLgpAQCAtNDc3MCwxMyArNDc3MCwxMyBAQCB2b2lkIFJlbmRlckxheWVyOjpw
YWludEZvcmVncm91bmRGb3JGcmFnCiAgICAgICAgIGxvY2FsUGFpbnRCZWhhdmlvciA9IHBhaW50
QmVoYXZpb3I7CiAKICAgICBpZiAobG9jYWxQYWludGluZ0luZm8ucGFpbnRCZWhhdmlvciAmIFBh
aW50QmVoYXZpb3I6OkV4Y2x1ZGVTZWxlY3Rpb24pCi0gICAgICAgIGxvY2FsUGFpbnRCZWhhdmlv
ciB8PSBQYWludEJlaGF2aW9yOjpFeGNsdWRlU2VsZWN0aW9uOworICAgICAgICBsb2NhbFBhaW50
QmVoYXZpb3IuYWRkKFBhaW50QmVoYXZpb3I6OkV4Y2x1ZGVTZWxlY3Rpb24pOwogICAgIAogICAg
IGlmIChsb2NhbFBhaW50aW5nSW5mby5wYWludEJlaGF2aW9yICYgUGFpbnRCZWhhdmlvcjo6U25h
cHNob3R0aW5nKQotICAgICAgICBsb2NhbFBhaW50QmVoYXZpb3IgfD0gUGFpbnRCZWhhdmlvcjo6
U25hcHNob3R0aW5nOworICAgICAgICBsb2NhbFBhaW50QmVoYXZpb3IuYWRkKFBhaW50QmVoYXZp
b3I6OlNuYXBzaG90dGluZyk7CiAgICAgCiAgICAgaWYgKGxvY2FsUGFpbnRpbmdJbmZvLnBhaW50
QmVoYXZpb3IgJiBQYWludEJlaGF2aW9yOjpUaWxlRmlyc3RQYWludCkKLSAgICAgICAgbG9jYWxQ
YWludEJlaGF2aW9yIHw9IFBhaW50QmVoYXZpb3I6OlRpbGVGaXJzdFBhaW50OworICAgICAgICBs
b2NhbFBhaW50QmVoYXZpb3IuYWRkKFBhaW50QmVoYXZpb3I6OlRpbGVGaXJzdFBhaW50KTsKIAog
ICAgIC8vIE9wdGltaXplIGNsaXBwaW5nIGZvciB0aGUgc2luZ2xlIGZyYWdtZW50IGNhc2UuCiAg
ICAgYm9vbCBzaG91bGRDbGlwID0gbG9jYWxQYWludGluZ0luZm8uY2xpcFRvRGlydHlSZWN0ICYm
IGxheWVyRnJhZ21lbnRzLnNpemUoKSA9PSAxICYmIGxheWVyRnJhZ21lbnRzWzBdLnNob3VsZFBh
aW50Q29udGVudCAmJiAhbGF5ZXJGcmFnbWVudHNbMF0uZm9yZWdyb3VuZFJlY3QuaXNFbXB0eSgp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2lu
Zy5jcHAJKHJldmlzaW9uIDIzNTUxNCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllckJhY2tpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTM0LDI0ICsyNTM0LDI0IEBA
IHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjpwYWludEludG9MYXllcigKIAogICAgIE9wdGlvblNl
dDxSZW5kZXJMYXllcjo6UGFpbnRMYXllckZsYWc+IHBhaW50RmxhZ3M7CiAgICAgaWYgKHBhaW50
aW5nUGhhc2UgJiBHcmFwaGljc0xheWVyUGFpbnRCYWNrZ3JvdW5kKQotICAgICAgICBwYWludEZs
YWdzIHw9IFJlbmRlckxheWVyOjpQYWludExheWVyUGFpbnRpbmdDb21wb3NpdGluZ0JhY2tncm91
bmRQaGFzZTsKKyAgICAgICAgcGFpbnRGbGFncy5hZGQoUmVuZGVyTGF5ZXI6OlBhaW50TGF5ZXJQ
YWludGluZ0NvbXBvc2l0aW5nQmFja2dyb3VuZFBoYXNlKTsKICAgICBpZiAocGFpbnRpbmdQaGFz
ZSAmIEdyYXBoaWNzTGF5ZXJQYWludEZvcmVncm91bmQpCi0gICAgICAgIHBhaW50RmxhZ3MgfD0g
UmVuZGVyTGF5ZXI6OlBhaW50TGF5ZXJQYWludGluZ0NvbXBvc2l0aW5nRm9yZWdyb3VuZFBoYXNl
OworICAgICAgICBwYWludEZsYWdzLmFkZChSZW5kZXJMYXllcjo6UGFpbnRMYXllclBhaW50aW5n
Q29tcG9zaXRpbmdGb3JlZ3JvdW5kUGhhc2UpOwogICAgIGlmIChwYWludGluZ1BoYXNlICYgR3Jh
cGhpY3NMYXllclBhaW50TWFzaykKLSAgICAgICAgcGFpbnRGbGFncyB8PSBSZW5kZXJMYXllcjo6
UGFpbnRMYXllclBhaW50aW5nQ29tcG9zaXRpbmdNYXNrUGhhc2U7CisgICAgICAgIHBhaW50Rmxh
Z3MuYWRkKFJlbmRlckxheWVyOjpQYWludExheWVyUGFpbnRpbmdDb21wb3NpdGluZ01hc2tQaGFz
ZSk7CiAgICAgaWYgKHBhaW50aW5nUGhhc2UgJiBHcmFwaGljc0xheWVyUGFpbnRDbGlwUGF0aCkK
LSAgICAgICAgcGFpbnRGbGFncyB8PSBSZW5kZXJMYXllcjo6UGFpbnRMYXllclBhaW50aW5nQ29t
cG9zaXRpbmdDbGlwUGF0aFBoYXNlOworICAgICAgICBwYWludEZsYWdzLmFkZChSZW5kZXJMYXll
cjo6UGFpbnRMYXllclBhaW50aW5nQ29tcG9zaXRpbmdDbGlwUGF0aFBoYXNlKTsKICAgICBpZiAo
cGFpbnRpbmdQaGFzZSAmIEdyYXBoaWNzTGF5ZXJQYWludENoaWxkQ2xpcHBpbmdNYXNrKQotICAg
ICAgICBwYWludEZsYWdzIHw9IFJlbmRlckxheWVyOjpQYWludExheWVyUGFpbnRpbmdDaGlsZENs
aXBwaW5nTWFza1BoYXNlOworICAgICAgICBwYWludEZsYWdzLmFkZChSZW5kZXJMYXllcjo6UGFp
bnRMYXllclBhaW50aW5nQ2hpbGRDbGlwcGluZ01hc2tQaGFzZSk7CiAgICAgaWYgKHBhaW50aW5n
UGhhc2UgJiBHcmFwaGljc0xheWVyUGFpbnRPdmVyZmxvd0NvbnRlbnRzKQotICAgICAgICBwYWlu
dEZsYWdzIHw9IFJlbmRlckxheWVyOjpQYWludExheWVyUGFpbnRpbmdPdmVyZmxvd0NvbnRlbnRz
OworICAgICAgICBwYWludEZsYWdzLmFkZChSZW5kZXJMYXllcjo6UGFpbnRMYXllclBhaW50aW5n
T3ZlcmZsb3dDb250ZW50cyk7CiAgICAgaWYgKHBhaW50aW5nUGhhc2UgJiBHcmFwaGljc0xheWVy
UGFpbnRDb21wb3NpdGVkU2Nyb2xsKQotICAgICAgICBwYWludEZsYWdzIHw9IFJlbmRlckxheWVy
OjpQYWludExheWVyUGFpbnRpbmdDb21wb3NpdGluZ1Njcm9sbGluZ1BoYXNlOworICAgICAgICBw
YWludEZsYWdzLmFkZChSZW5kZXJMYXllcjo6UGFpbnRMYXllclBhaW50aW5nQ29tcG9zaXRpbmdT
Y3JvbGxpbmdQaGFzZSk7CiAKICAgICBpZiAoZ3JhcGhpY3NMYXllciA9PSBtX2JhY2tncm91bmRM
YXllci5nZXQoKSAmJiBtX2JhY2tncm91bmRMYXllclBhaW50c0ZpeGVkUm9vdEJhY2tncm91bmQp
Ci0gICAgICAgIHBhaW50RmxhZ3MgfD0geyBSZW5kZXJMYXllcjo6UGFpbnRMYXllclBhaW50aW5n
Um9vdEJhY2tncm91bmRPbmx5LCBSZW5kZXJMYXllcjo6UGFpbnRMYXllclBhaW50aW5nQ29tcG9z
aXRpbmdGb3JlZ3JvdW5kUGhhc2UgfTsgLy8gTmVlZCBQYWludExheWVyUGFpbnRpbmdDb21wb3Np
dGluZ0ZvcmVncm91bmRQaGFzZSB0byB3YWxrIGNoaWxkIGxheWVycy4KKyAgICAgICAgcGFpbnRG
bGFncy5hZGQoeyBSZW5kZXJMYXllcjo6UGFpbnRMYXllclBhaW50aW5nUm9vdEJhY2tncm91bmRP
bmx5LCBSZW5kZXJMYXllcjo6UGFpbnRMYXllclBhaW50aW5nQ29tcG9zaXRpbmdGb3JlZ3JvdW5k
UGhhc2UgfSk7IC8vIE5lZWQgUGFpbnRMYXllclBhaW50aW5nQ29tcG9zaXRpbmdGb3JlZ3JvdW5k
UGhhc2UgdG8gd2FsayBjaGlsZCBsYXllcnMuCiAgICAgZWxzZSBpZiAoY29tcG9zaXRvcigpLmZp
eGVkUm9vdEJhY2tncm91bmRMYXllcigpKQotICAgICAgICBwYWludEZsYWdzIHw9IFJlbmRlckxh
eWVyOjpQYWludExheWVyUGFpbnRpbmdTa2lwUm9vdEJhY2tncm91bmQ7CisgICAgICAgIHBhaW50
RmxhZ3MuYWRkKFJlbmRlckxheWVyOjpQYWludExheWVyUGFpbnRpbmdTa2lwUm9vdEJhY2tncm91
bmQpOwogCiAjaWZuZGVmIE5ERUJVRwogICAgIFJlbmRlckVsZW1lbnQ6OlNldExheW91dE5lZWRl
ZEZvcmJpZGRlblNjb3BlIGZvcmJpZFNldE5lZWRzTGF5b3V0KCZyZW5kZXJlcigpKTsKQEAgLTI2
MDksMTAgKzI2MDksMTAgQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnBhaW50Q29udGVudHMo
YwogICAgICAgICAvLyBXZSBoYXZlIHRvIHVzZSB0aGUgc2FtZSByb290IGFzIGZvciBoaXQgdGVz
dGluZywgYmVjYXVzZSBib3RoIG1ldGhvZHMgY2FuIGNvbXB1dGUgYW5kIGNhY2hlIGNsaXBSZWN0
cy4KICAgICAgICAgT3B0aW9uU2V0PFBhaW50QmVoYXZpb3I+IGJlaGF2aW9yID0gUGFpbnRCZWhh
dmlvcjo6Tm9ybWFsOwogICAgICAgICBpZiAobGF5ZXJQYWludEJlaGF2aW9yID09IEdyYXBoaWNz
TGF5ZXJQYWludFNuYXBzaG90dGluZykKLSAgICAgICAgICAgIGJlaGF2aW9yIHw9IFBhaW50QmVo
YXZpb3I6OlNuYXBzaG90dGluZzsKKyAgICAgICAgICAgIGJlaGF2aW9yLmFkZChQYWludEJlaGF2
aW9yOjpTbmFwc2hvdHRpbmcpOwogICAgICAgICAKICAgICAgICAgaWYgKGxheWVyUGFpbnRCZWhh
dmlvciA9PSBHcmFwaGljc0xheWVyUGFpbnRGaXJzdFRpbGVQYWludCkKLSAgICAgICAgICAgIGJl
aGF2aW9yIHw9IFBhaW50QmVoYXZpb3I6OlRpbGVGaXJzdFBhaW50OworICAgICAgICAgICAgYmVo
YXZpb3IuYWRkKFBhaW50QmVoYXZpb3I6OlRpbGVGaXJzdFBhaW50KTsKIAogICAgICAgICBwYWlu
dEludG9MYXllcihncmFwaGljc0xheWVyLCBjb250ZXh0LCBkaXJ0eVJlY3QsIGJlaGF2aW9yLCBw
YWludGluZ1BoYXNlKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyQ29tcG9zaXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAJKHJldmlzaW9uIDIzNTUxNCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yMTY0LDg5ICsyMTY0LDg5IEBAIE9wdGlvblNldDxDb21wb3NpdGluZ1JlYXNvbj4gUmVu
ZGVyTGF5ZXIKICAgICBhdXRvJiByZW5kZXJlciA9IHJlbmRlcmVyRm9yQ29tcG9zaXRpbmdUZXN0
cyhsYXllcik7CiAKICAgICBpZiAocmVxdWlyZXNDb21wb3NpdGluZ0ZvclRyYW5zZm9ybShyZW5k
ZXJlcikpCi0gICAgICAgIHJlYXNvbnMgfD0gQ29tcG9zaXRpbmdSZWFzb246OlRyYW5zZm9ybTNE
OworICAgICAgICByZWFzb25zLmFkZChDb21wb3NpdGluZ1JlYXNvbjo6VHJhbnNmb3JtM0QpOwog
CiAgICAgaWYgKHJlcXVpcmVzQ29tcG9zaXRpbmdGb3JWaWRlbyhyZW5kZXJlcikpCi0gICAgICAg
IHJlYXNvbnMgfD0gQ29tcG9zaXRpbmdSZWFzb246OlZpZGVvOworICAgICAgICByZWFzb25zLmFk
ZChDb21wb3NpdGluZ1JlYXNvbjo6VmlkZW8pOwogICAgIGVsc2UgaWYgKHJlcXVpcmVzQ29tcG9z
aXRpbmdGb3JDYW52YXMocmVuZGVyZXIpKQotICAgICAgICByZWFzb25zIHw9IENvbXBvc2l0aW5n
UmVhc29uOjpDYW52YXM7CisgICAgICAgIHJlYXNvbnMuYWRkKENvbXBvc2l0aW5nUmVhc29uOjpD
YW52YXMpOwogICAgIGVsc2UgaWYgKHJlcXVpcmVzQ29tcG9zaXRpbmdGb3JQbHVnaW4ocmVuZGVy
ZXIpKQotICAgICAgICByZWFzb25zIHw9IENvbXBvc2l0aW5nUmVhc29uOjpQbHVnaW47CisgICAg
ICAgIHJlYXNvbnMuYWRkKENvbXBvc2l0aW5nUmVhc29uOjpQbHVnaW4pOwogICAgIGVsc2UgaWYg
KHJlcXVpcmVzQ29tcG9zaXRpbmdGb3JGcmFtZShyZW5kZXJlcikpCi0gICAgICAgIHJlYXNvbnMg
fD0gQ29tcG9zaXRpbmdSZWFzb246OklGcmFtZTsKKyAgICAgICAgcmVhc29ucy5hZGQoQ29tcG9z
aXRpbmdSZWFzb246OklGcmFtZSk7CiAKICAgICBpZiAoKGNhblJlbmRlcjNEVHJhbnNmb3Jtcygp
ICYmIHJlbmRlcmVyLnN0eWxlKCkuYmFja2ZhY2VWaXNpYmlsaXR5KCkgPT0gQmFja2ZhY2VWaXNp
YmlsaXR5OjpIaWRkZW4pKQotICAgICAgICByZWFzb25zIHw9IENvbXBvc2l0aW5nUmVhc29uOjpC
YWNrZmFjZVZpc2liaWxpdHlIaWRkZW47CisgICAgICAgIHJlYXNvbnMuYWRkKENvbXBvc2l0aW5n
UmVhc29uOjpCYWNrZmFjZVZpc2liaWxpdHlIaWRkZW4pOwogCiAgICAgaWYgKGNsaXBzQ29tcG9z
aXRpbmdEZXNjZW5kYW50cygqcmVuZGVyZXIubGF5ZXIoKSkpCi0gICAgICAgIHJlYXNvbnMgfD0g
Q29tcG9zaXRpbmdSZWFzb246OkNsaXBzQ29tcG9zaXRpbmdEZXNjZW5kYW50czsKKyAgICAgICAg
cmVhc29ucy5hZGQoQ29tcG9zaXRpbmdSZWFzb246OkNsaXBzQ29tcG9zaXRpbmdEZXNjZW5kYW50
cyk7CiAKICAgICBpZiAocmVxdWlyZXNDb21wb3NpdGluZ0ZvckFuaW1hdGlvbihyZW5kZXJlcikp
Ci0gICAgICAgIHJlYXNvbnMgfD0gQ29tcG9zaXRpbmdSZWFzb246OkFuaW1hdGlvbjsKKyAgICAg
ICAgcmVhc29ucy5hZGQoQ29tcG9zaXRpbmdSZWFzb246OkFuaW1hdGlvbik7CiAKICAgICBpZiAo
cmVxdWlyZXNDb21wb3NpdGluZ0ZvckZpbHRlcnMocmVuZGVyZXIpKQotICAgICAgICByZWFzb25z
IHw9IENvbXBvc2l0aW5nUmVhc29uOjpGaWx0ZXJzOworICAgICAgICByZWFzb25zLmFkZChDb21w
b3NpdGluZ1JlYXNvbjo6RmlsdGVycyk7CiAKICAgICBpZiAocmVxdWlyZXNDb21wb3NpdGluZ0Zv
cldpbGxDaGFuZ2UocmVuZGVyZXIpKQotICAgICAgICByZWFzb25zIHw9IENvbXBvc2l0aW5nUmVh
c29uOjpXaWxsQ2hhbmdlOworICAgICAgICByZWFzb25zLmFkZChDb21wb3NpdGluZ1JlYXNvbjo6
V2lsbENoYW5nZSk7CiAKICAgICBpZiAocmVxdWlyZXNDb21wb3NpdGluZ0ZvclBvc2l0aW9uKHJl
bmRlcmVyLCAqcmVuZGVyZXIubGF5ZXIoKSkpCi0gICAgICAgIHJlYXNvbnMgfD0gcmVuZGVyZXIu
aXNGaXhlZFBvc2l0aW9uZWQoKSA/IENvbXBvc2l0aW5nUmVhc29uOjpQb3NpdGlvbkZpeGVkIDog
Q29tcG9zaXRpbmdSZWFzb246OlBvc2l0aW9uU3RpY2t5OworICAgICAgICByZWFzb25zLmFkZChy
ZW5kZXJlci5pc0ZpeGVkUG9zaXRpb25lZCgpID8gQ29tcG9zaXRpbmdSZWFzb246OlBvc2l0aW9u
Rml4ZWQgOiBDb21wb3NpdGluZ1JlYXNvbjo6UG9zaXRpb25TdGlja3kpOwogCiAjaWYgUExBVEZP
Uk0oSU9TKQogICAgIGlmIChyZXF1aXJlc0NvbXBvc2l0aW5nRm9yU2Nyb2xsaW5nKCpyZW5kZXJl
ci5sYXllcigpKSkKLSAgICAgICAgcmVhc29ucyB8PSBDb21wb3NpdGluZ1JlYXNvbjo6T3ZlcmZs
b3dTY3JvbGxpbmdUb3VjaDsKKyAgICAgICAgcmVhc29ucy5hZGQoQ29tcG9zaXRpbmdSZWFzb246
Ok92ZXJmbG93U2Nyb2xsaW5nVG91Y2gpOwogI2VuZGlmCiAKICAgICBpZiAocmVxdWlyZXNDb21w
b3NpdGluZ0Zvck92ZXJmbG93U2Nyb2xsaW5nKCpyZW5kZXJlci5sYXllcigpKSkKLSAgICAgICAg
cmVhc29ucyB8PSBDb21wb3NpdGluZ1JlYXNvbjo6T3ZlcmZsb3dTY3JvbGxpbmdUb3VjaDsKKyAg
ICAgICAgcmVhc29ucy5hZGQoQ29tcG9zaXRpbmdSZWFzb246Ok92ZXJmbG93U2Nyb2xsaW5nVG91
Y2gpOwogCiAgICAgc3dpdGNoIChyZW5kZXJlci5sYXllcigpLT5pbmRpcmVjdENvbXBvc2l0aW5n
UmVhc29uKCkpIHsKICAgICBjYXNlIFJlbmRlckxheWVyOjpJbmRpcmVjdENvbXBvc2l0aW5nUmVh
c29uOjpOb25lOgogICAgICAgICBicmVhazsKICAgICBjYXNlIFJlbmRlckxheWVyOjpJbmRpcmVj
dENvbXBvc2l0aW5nUmVhc29uOjpTdGFja2luZzoKLSAgICAgICAgcmVhc29ucyB8PSBDb21wb3Np
dGluZ1JlYXNvbjo6U3RhY2tpbmc7CisgICAgICAgIHJlYXNvbnMuYWRkKENvbXBvc2l0aW5nUmVh
c29uOjpTdGFja2luZyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUmVuZGVyTGF5ZXI6Oklu
ZGlyZWN0Q29tcG9zaXRpbmdSZWFzb246Ok92ZXJsYXA6Ci0gICAgICAgIHJlYXNvbnMgfD0gQ29t
cG9zaXRpbmdSZWFzb246Ok92ZXJsYXA7CisgICAgICAgIHJlYXNvbnMuYWRkKENvbXBvc2l0aW5n
UmVhc29uOjpPdmVybGFwKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBSZW5kZXJMYXllcjo6
SW5kaXJlY3RDb21wb3NpdGluZ1JlYXNvbjo6QmFja2dyb3VuZExheWVyOgotICAgICAgICByZWFz
b25zIHw9IENvbXBvc2l0aW5nUmVhc29uOjpOZWdhdGl2ZVpJbmRleENoaWxkcmVuOworICAgICAg
ICByZWFzb25zLmFkZChDb21wb3NpdGluZ1JlYXNvbjo6TmVnYXRpdmVaSW5kZXhDaGlsZHJlbik7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUmVuZGVyTGF5ZXI6OkluZGlyZWN0Q29tcG9zaXRp
bmdSZWFzb246OkdyYXBoaWNhbEVmZmVjdDoKICAgICAgICAgaWYgKHJlbmRlcmVyLmhhc1RyYW5z
Zm9ybSgpKQotICAgICAgICAgICAgcmVhc29ucyB8PSBDb21wb3NpdGluZ1JlYXNvbjo6VHJhbnNm
b3JtV2l0aENvbXBvc2l0ZWREZXNjZW5kYW50czsKKyAgICAgICAgICAgIHJlYXNvbnMuYWRkKENv
bXBvc2l0aW5nUmVhc29uOjpUcmFuc2Zvcm1XaXRoQ29tcG9zaXRlZERlc2NlbmRhbnRzKTsKIAog
ICAgICAgICBpZiAocmVuZGVyZXIuaXNUcmFuc3BhcmVudCgpKQotICAgICAgICAgICAgcmVhc29u
cyB8PSBDb21wb3NpdGluZ1JlYXNvbjo6T3BhY2l0eVdpdGhDb21wb3NpdGVkRGVzY2VuZGFudHM7
CisgICAgICAgICAgICByZWFzb25zLmFkZChDb21wb3NpdGluZ1JlYXNvbjo6T3BhY2l0eVdpdGhD
b21wb3NpdGVkRGVzY2VuZGFudHMpOwogCiAgICAgICAgIGlmIChyZW5kZXJlci5oYXNNYXNrKCkp
Ci0gICAgICAgICAgICByZWFzb25zIHw9IENvbXBvc2l0aW5nUmVhc29uOjpNYXNrV2l0aENvbXBv
c2l0ZWREZXNjZW5kYW50czsKKyAgICAgICAgICAgIHJlYXNvbnMuYWRkKENvbXBvc2l0aW5nUmVh
c29uOjpNYXNrV2l0aENvbXBvc2l0ZWREZXNjZW5kYW50cyk7CiAKICAgICAgICAgaWYgKHJlbmRl
cmVyLmhhc1JlZmxlY3Rpb24oKSkKLSAgICAgICAgICAgIHJlYXNvbnMgfD0gQ29tcG9zaXRpbmdS
ZWFzb246OlJlZmxlY3Rpb25XaXRoQ29tcG9zaXRlZERlc2NlbmRhbnRzOworICAgICAgICAgICAg
cmVhc29ucy5hZGQoQ29tcG9zaXRpbmdSZWFzb246OlJlZmxlY3Rpb25XaXRoQ29tcG9zaXRlZERl
c2NlbmRhbnRzKTsKIAogICAgICAgICBpZiAocmVuZGVyZXIuaGFzRmlsdGVyKCkgfHwgcmVuZGVy
ZXIuaGFzQmFja2Ryb3BGaWx0ZXIoKSkKLSAgICAgICAgICAgIHJlYXNvbnMgfD0gQ29tcG9zaXRp
bmdSZWFzb246OkZpbHRlcldpdGhDb21wb3NpdGVkRGVzY2VuZGFudHM7CisgICAgICAgICAgICBy
ZWFzb25zLmFkZChDb21wb3NpdGluZ1JlYXNvbjo6RmlsdGVyV2l0aENvbXBvc2l0ZWREZXNjZW5k
YW50cyk7CiAKICNpZiBFTkFCTEUoQ1NTX0NPTVBPU0lUSU5HKQogICAgICAgICBpZiAobGF5ZXIu
aXNvbGF0ZXNDb21wb3NpdGVkQmxlbmRpbmcoKSkKLSAgICAgICAgICAgIHJlYXNvbnMgfD0gQ29t
cG9zaXRpbmdSZWFzb246Oklzb2xhdGVzQ29tcG9zaXRlZEJsZW5kaW5nRGVzY2VuZGFudHM7Cisg
ICAgICAgICAgICByZWFzb25zLmFkZChDb21wb3NpdGluZ1JlYXNvbjo6SXNvbGF0ZXNDb21wb3Np
dGVkQmxlbmRpbmdEZXNjZW5kYW50cyk7CiAKICAgICAgICAgaWYgKGxheWVyLmhhc0JsZW5kTW9k
ZSgpKQotICAgICAgICAgICAgcmVhc29ucyB8PSBDb21wb3NpdGluZ1JlYXNvbjo6QmxlbmRpbmdX
aXRoQ29tcG9zaXRlZERlc2NlbmRhbnRzOworICAgICAgICAgICAgcmVhc29ucy5hZGQoQ29tcG9z
aXRpbmdSZWFzb246OkJsZW5kaW5nV2l0aENvbXBvc2l0ZWREZXNjZW5kYW50cyk7CiAjZW5kaWYK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBSZW5kZXJMYXllcjo6SW5kaXJlY3RDb21wb3NpdGlu
Z1JlYXNvbjo6UGVyc3BlY3RpdmU6Ci0gICAgICAgIHJlYXNvbnMgfD0gQ29tcG9zaXRpbmdSZWFz
b246OlBlcnNwZWN0aXZlOworICAgICAgICByZWFzb25zLmFkZChDb21wb3NpdGluZ1JlYXNvbjo6
UGVyc3BlY3RpdmUpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFJlbmRlckxheWVyOjpJbmRp
cmVjdENvbXBvc2l0aW5nUmVhc29uOjpQcmVzZXJ2ZTNEOgotICAgICAgICByZWFzb25zIHw9IENv
bXBvc2l0aW5nUmVhc29uOjpQcmVzZXJ2ZTNEOworICAgICAgICByZWFzb25zLmFkZChDb21wb3Np
dGluZ1JlYXNvbjo6UHJlc2VydmUzRCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIGlm
IChpbkNvbXBvc2l0aW5nTW9kZSgpICYmIHJlbmRlcmVyLmxheWVyKCktPmlzUmVuZGVyVmlld0xh
eWVyKCkpCi0gICAgICAgIHJlYXNvbnMgfD0gQ29tcG9zaXRpbmdSZWFzb246OlJvb3Q7CisgICAg
ICAgIHJlYXNvbnMuYWRkKENvbXBvc2l0aW5nUmVhc29uOjpSb290KTsKIAogICAgIHJldHVybiBy
ZWFzb25zOwogfQpAQCAtMzYyNSwxMCArMzYyNSwxMCBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9z
aXRvcjo6dXBkYXRlU2Nyb2xsCiB7CiAgICAgT3B0aW9uU2V0PExheWVyU2Nyb2xsQ29vcmRpbmF0
aW9uUm9sZT4gY29vcmRpbmF0aW9uUm9sZXM7CiAgICAgaWYgKGlzVmlld3BvcnRDb25zdHJhaW5l
ZEZpeGVkT3JTdGlja3lMYXllcihsYXllcikpCi0gICAgICAgIGNvb3JkaW5hdGlvblJvbGVzIHw9
IFZpZXdwb3J0Q29uc3RyYWluZWQ7CisgICAgICAgIGNvb3JkaW5hdGlvblJvbGVzLmFkZChWaWV3
cG9ydENvbnN0cmFpbmVkKTsKIAogICAgIGlmICh1c2VDb29yZGluYXRlZFNjcm9sbGluZ0Zvckxh
eWVyKGxheWVyKSkKLSAgICAgICAgY29vcmRpbmF0aW9uUm9sZXMgfD0gU2Nyb2xsaW5nOworICAg
ICAgICBjb29yZGluYXRpb25Sb2xlcy5hZGQoU2Nyb2xsaW5nKTsKIAogICAgIGlmIChsYXllci5p
c0NvbXBvc2l0ZWQoKSkKICAgICAgICAgbGF5ZXIuYmFja2luZygpLT5zZXRJc1Njcm9sbENvb3Jk
aW5hdGVkV2l0aFZpZXdwb3J0Q29uc3RyYWluZWRSb2xlKGNvb3JkaW5hdGlvblJvbGVzLmNvbnRh
aW5zKFZpZXdwb3J0Q29uc3RyYWluZWQpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9UZXh0RGVjb3JhdGlvblBhaW50ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBhaW50ZXIuY3BwCShyZXZpc2lvbiAyMzU1MTQpCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzgzLDE3ICszODMsMTcgQEAgc3RhdGljIHZvaWQgY29sbGVjdFN0eWxl
c0ZvclJlbmRlcmVyKFRleAogICAgICAgICBhdXRvIGRlY29yYXRpb25TdHlsZSA9IHN0eWxlLnRl
eHREZWNvcmF0aW9uU3R5bGUoKTsKIAogICAgICAgICBpZiAoZGVjb3JhdGlvbnMuY29udGFpbnMo
VGV4dERlY29yYXRpb246OlVuZGVybGluZSkpIHsKLSAgICAgICAgICAgIHJlbWFpbmluZ0RlY29y
YXRpb25zIC09IFRleHREZWNvcmF0aW9uOjpVbmRlcmxpbmU7CisgICAgICAgICAgICByZW1haW5p
bmdEZWNvcmF0aW9ucy5yZW1vdmUoVGV4dERlY29yYXRpb246OlVuZGVybGluZSk7CiAgICAgICAg
ICAgICByZXN1bHQudW5kZXJsaW5lQ29sb3IgPSBjb2xvcjsKICAgICAgICAgICAgIHJlc3VsdC51
bmRlcmxpbmVTdHlsZSA9IGRlY29yYXRpb25TdHlsZTsKICAgICAgICAgfQogICAgICAgICBpZiAo
ZGVjb3JhdGlvbnMuY29udGFpbnMoVGV4dERlY29yYXRpb246Ok92ZXJsaW5lKSkgewotICAgICAg
ICAgICAgcmVtYWluaW5nRGVjb3JhdGlvbnMgLT0gVGV4dERlY29yYXRpb246Ok92ZXJsaW5lOwor
ICAgICAgICAgICAgcmVtYWluaW5nRGVjb3JhdGlvbnMucmVtb3ZlKFRleHREZWNvcmF0aW9uOjpP
dmVybGluZSk7CiAgICAgICAgICAgICByZXN1bHQub3ZlcmxpbmVDb2xvciA9IGNvbG9yOwogICAg
ICAgICAgICAgcmVzdWx0Lm92ZXJsaW5lU3R5bGUgPSBkZWNvcmF0aW9uU3R5bGU7CiAgICAgICAg
IH0KICAgICAgICAgaWYgKGRlY29yYXRpb25zLmNvbnRhaW5zKFRleHREZWNvcmF0aW9uOjpMaW5l
VGhyb3VnaCkpIHsKLSAgICAgICAgICAgIHJlbWFpbmluZ0RlY29yYXRpb25zIC09IFRleHREZWNv
cmF0aW9uOjpMaW5lVGhyb3VnaDsKKyAgICAgICAgICAgIHJlbWFpbmluZ0RlY29yYXRpb25zLnJl
bW92ZShUZXh0RGVjb3JhdGlvbjo6TGluZVRocm91Z2gpOwogICAgICAgICAgICAgcmVzdWx0Lmxp
bmV0aHJvdWdoQ29sb3IgPSBjb2xvcjsKICAgICAgICAgICAgIHJlc3VsdC5saW5ldGhyb3VnaFN0
eWxlID0gZGVjb3JhdGlvblN0eWxlOwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvVGV4dFBhaW50U3R5bGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9UZXh0UGFpbnRTdHlsZS5jcHAJKHJldmlzaW9uIDIzNTUxNCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRTdHlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEwMCw3ICsxMDAsNyBAQCBUZXh0UGFpbnRTdHlsZSBjb21wdXRlVGV4dFBhaW50U3R5bGUoY29u
CiAgICAgICAgIGlmIChwYWdlICYmIHBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmlzQWN0aXZlKCkp
IHsKICAgICAgICAgICAgIE9wdGlvblNldDxTdHlsZUNvbG9yOjpPcHRpb25zPiBvcHRpb25zOwog
ICAgICAgICAgICAgaWYgKHBhZ2UtPnVzZVN5c3RlbUFwcGVhcmFuY2UoKSkKLSAgICAgICAgICAg
ICAgICBvcHRpb25zIHw9IFN0eWxlQ29sb3I6Ok9wdGlvbnM6OlVzZVN5c3RlbUFwcGVhcmFuY2U7
CisgICAgICAgICAgICAgICAgb3B0aW9ucy5hZGQoU3R5bGVDb2xvcjo6T3B0aW9uczo6VXNlU3lz
dGVtQXBwZWFyYW5jZSk7CiAgICAgICAgICAgICBwYWludFN0eWxlLmZpbGxDb2xvciA9IFJlbmRl
clRoZW1lOjpzaW5nbGV0b24oKS5zeXN0ZW1Db2xvcihDU1NWYWx1ZUFjdGl2ZWJ1dHRvbnRleHQs
IG9wdGlvbnMpOwogICAgICAgICAgICAgcmV0dXJuIHBhaW50U3R5bGU7CiAgICAgICAgIH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAko
cmV2aXNpb24gMjM1NTE0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRl
clN0eWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjEzLDcgKzYxMyw3IEBAIGJvb2wgUmVuZGVy
U3R5bGU6OmNoYW5nZVJlcXVpcmVzTGF5b3V0KGMKICAgICAgICAgICAgIGlmIChtX3JhcmVOb25J
bmhlcml0ZWREYXRhLT50cmFuc2Zvcm0tPmhhc1RyYW5zZm9ybSgpICE9IG90aGVyLm1fcmFyZU5v
bkluaGVyaXRlZERhdGEtPnRyYW5zZm9ybS0+aGFzVHJhbnNmb3JtKCkpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICBpZiAoKm1fcmFyZU5vbkluaGVyaXRlZERhdGEt
PnRyYW5zZm9ybSAhPSAqb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+dHJhbnNmb3JtKSB7
Ci0gICAgICAgICAgICAgICAgY2hhbmdlZENvbnRleHRTZW5zaXRpdmVQcm9wZXJ0aWVzIHw9IFN0
eWxlRGlmZmVyZW5jZUNvbnRleHRTZW5zaXRpdmVQcm9wZXJ0eTo6VHJhbnNmb3JtOworICAgICAg
ICAgICAgICAgIGNoYW5nZWRDb250ZXh0U2Vuc2l0aXZlUHJvcGVydGllcy5hZGQoU3R5bGVEaWZm
ZXJlbmNlQ29udGV4dFNlbnNpdGl2ZVByb3BlcnR5OjpUcmFuc2Zvcm0pOwogICAgICAgICAgICAg
ICAgIC8vIERvbid0IHJldHVybjsga2VlcCBsb29raW5nIGZvciBhbm90aGVyIGNoYW5nZQogICAg
ICAgICAgICAgfQogICAgICAgICB9CkBAIC02MjksNyArNjI5LDcgQEAgYm9vbCBSZW5kZXJTdHls
ZTo6Y2hhbmdlUmVxdWlyZXNMYXlvdXQoYwogI2VuZGlmCiAKICAgICAgICAgaWYgKCFhcmVQb2lu
dGluZ1RvRXF1YWxEYXRhKG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPndpbGxDaGFuZ2UsIG90aGVy
Lm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPndpbGxDaGFuZ2UpKSB7Ci0gICAgICAgICAgICBjaGFu
Z2VkQ29udGV4dFNlbnNpdGl2ZVByb3BlcnRpZXMgfD0gU3R5bGVEaWZmZXJlbmNlQ29udGV4dFNl
bnNpdGl2ZVByb3BlcnR5OjpXaWxsQ2hhbmdlOworICAgICAgICAgICAgY2hhbmdlZENvbnRleHRT
ZW5zaXRpdmVQcm9wZXJ0aWVzLmFkZChTdHlsZURpZmZlcmVuY2VDb250ZXh0U2Vuc2l0aXZlUHJv
cGVydHk6OldpbGxDaGFuZ2UpOwogICAgICAgICAgICAgLy8gRG9uJ3QgcmV0dXJuOyBrZWVwIGxv
b2tpbmcgZm9yIGFub3RoZXIgY2hhbmdlCiAgICAgICAgIH0KICAgICB9CkBAIC04NDksNyArODQ5
LDcgQEAgYm9vbCBSZW5kZXJTdHlsZTo6Y2hhbmdlUmVxdWlyZXNMYXllclJlcAogCiAgICAgaWYg
KHBvc2l0aW9uKCkgIT0gUG9zaXRpb25UeXBlOjpTdGF0aWMpIHsKICAgICAgICAgaWYgKG1fdmlz
dWFsRGF0YS0+Y2xpcCAhPSBvdGhlci5tX3Zpc3VhbERhdGEtPmNsaXAgfHwgbV92aXN1YWxEYXRh
LT5oYXNDbGlwICE9IG90aGVyLm1fdmlzdWFsRGF0YS0+aGFzQ2xpcCkgewotICAgICAgICAgICAg
Y2hhbmdlZENvbnRleHRTZW5zaXRpdmVQcm9wZXJ0aWVzIHw9IFN0eWxlRGlmZmVyZW5jZUNvbnRl
eHRTZW5zaXRpdmVQcm9wZXJ0eTo6Q2xpcFJlY3Q7CisgICAgICAgICAgICBjaGFuZ2VkQ29udGV4
dFNlbnNpdGl2ZVByb3BlcnRpZXMuYWRkKFN0eWxlRGlmZmVyZW5jZUNvbnRleHRTZW5zaXRpdmVQ
cm9wZXJ0eTo6Q2xpcFJlY3QpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0K
ICAgICB9CkBAIC04NjAsMTggKzg2MCwxOCBAQCBib29sIFJlbmRlclN0eWxlOjpjaGFuZ2VSZXF1
aXJlc0xheWVyUmVwCiAjZW5kaWYKIAogICAgIGlmIChtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5v
cGFjaXR5ICE9IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPm9wYWNpdHkpIHsKLSAgICAg
ICAgY2hhbmdlZENvbnRleHRTZW5zaXRpdmVQcm9wZXJ0aWVzIHw9IFN0eWxlRGlmZmVyZW5jZUNv
bnRleHRTZW5zaXRpdmVQcm9wZXJ0eTo6T3BhY2l0eTsKKyAgICAgICAgY2hhbmdlZENvbnRleHRT
ZW5zaXRpdmVQcm9wZXJ0aWVzLmFkZChTdHlsZURpZmZlcmVuY2VDb250ZXh0U2Vuc2l0aXZlUHJv
cGVydHk6Ok9wYWNpdHkpOwogICAgICAgICAvLyBEb24ndCByZXR1cm47IGtlZXAgbG9va2luZyBm
b3IgYW5vdGhlciBjaGFuZ2UuCiAgICAgfQogCiAgICAgaWYgKG1fcmFyZU5vbkluaGVyaXRlZERh
dGEtPmZpbHRlciAhPSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5maWx0ZXIpIHsKLSAg
ICAgICAgY2hhbmdlZENvbnRleHRTZW5zaXRpdmVQcm9wZXJ0aWVzIHw9IFN0eWxlRGlmZmVyZW5j
ZUNvbnRleHRTZW5zaXRpdmVQcm9wZXJ0eTo6RmlsdGVyOworICAgICAgICBjaGFuZ2VkQ29udGV4
dFNlbnNpdGl2ZVByb3BlcnRpZXMuYWRkKFN0eWxlRGlmZmVyZW5jZUNvbnRleHRTZW5zaXRpdmVQ
cm9wZXJ0eTo6RmlsdGVyKTsKICAgICAgICAgLy8gRG9uJ3QgcmV0dXJuOyBrZWVwIGxvb2tpbmcg
Zm9yIGFub3RoZXIgY2hhbmdlLgogICAgIH0KIAogI2lmIEVOQUJMRShGSUxURVJTX0xFVkVMXzIp
CiAgICAgaWYgKG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmJhY2tkcm9wRmlsdGVyICE9IG90aGVy
Lm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmJhY2tkcm9wRmlsdGVyKSB7Ci0gICAgICAgIGNoYW5n
ZWRDb250ZXh0U2Vuc2l0aXZlUHJvcGVydGllcyB8PSBTdHlsZURpZmZlcmVuY2VDb250ZXh0U2Vu
c2l0aXZlUHJvcGVydHk6OkZpbHRlcjsKKyAgICAgICAgY2hhbmdlZENvbnRleHRTZW5zaXRpdmVQ
cm9wZXJ0aWVzLmFkZChTdHlsZURpZmZlcmVuY2VDb250ZXh0U2Vuc2l0aXZlUHJvcGVydHk6OkZp
bHRlcik7CiAgICAgICAgIC8vIERvbid0IHJldHVybjsga2VlcCBsb29raW5nIGZvciBhbm90aGVy
IGNoYW5nZS4KICAgICB9CiAjZW5kaWYKQEAgLTkyMSw3ICs5MjEsNyBAQCBib29sIFJlbmRlclN0
eWxlOjpjaGFuZ2VSZXF1aXJlc1JlcGFpbnQoCiAKICAgICAvLyBGSVhNRTogdGhpcyBzaG91bGQg
cHJvYmFibHkgYmUgbW92ZWQgdG8gY2hhbmdlUmVxdWlyZXNMYXllclJlcGFpbnQoKS4KICAgICBp
ZiAobV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+Y2xpcFBhdGggIT0gb3RoZXIubV9yYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+Y2xpcFBhdGgpIHsKLSAgICAgICAgY2hhbmdlZENvbnRleHRTZW5zaXRpdmVQ
cm9wZXJ0aWVzIHw9IFN0eWxlRGlmZmVyZW5jZUNvbnRleHRTZW5zaXRpdmVQcm9wZXJ0eTo6Q2xp
cFBhdGg7CisgICAgICAgIGNoYW5nZWRDb250ZXh0U2Vuc2l0aXZlUHJvcGVydGllcy5hZGQoU3R5
bGVEaWZmZXJlbmNlQ29udGV4dFNlbnNpdGl2ZVByb3BlcnR5OjpDbGlwUGF0aCk7CiAgICAgICAg
IC8vIERvbid0IHJldHVybjsga2VlcCBsb29raW5nIGZvciBhbm90aGVyIGNoYW5nZS4KICAgICB9
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAJKHJldmlzaW9uIDIzNTUx
NCkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjI0Miw3ICsyMjQyLDcgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPEZpbmRPcHRpb25zPiBw
YXJzZUZpbgogICAgICAgICBib29sIGZvdW5kID0gZmFsc2U7CiAgICAgICAgIGZvciAoYXV0byYg
ZmxhZyA6IGZsYWdMaXN0KSB7CiAgICAgICAgICAgICBpZiAoZmxhZy5uYW1lID09IG9wdGlvbikg
ewotICAgICAgICAgICAgICAgIHJlc3VsdCB8PSBmbGFnLnZhbHVlOworICAgICAgICAgICAgICAg
IHJlc3VsdC5hZGQoZmxhZy52YWx1ZSk7CiAgICAgICAgICAgICAgICAgZm91bmQgPSB0cnVlOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQpAQCAtMzE4OSw3ICszMTg5LDcg
QEAgdm9pZCBJbnRlcm5hbHM6OmZvcmNlUmVsb2FkKGJvb2wgZW5kVG9FbgogewogICAgIE9wdGlv
blNldDxSZWxvYWRPcHRpb24+IHJlbG9hZE9wdGlvbnM7CiAgICAgaWYgKGVuZFRvRW5kKQotICAg
ICAgICByZWxvYWRPcHRpb25zIHw9IFJlbG9hZE9wdGlvbjo6RnJvbU9yaWdpbjsKKyAgICAgICAg
cmVsb2FkT3B0aW9ucy5hZGQoUmVsb2FkT3B0aW9uOjpGcm9tT3JpZ2luKTsKIAogICAgIGZyYW1l
KCktPmxvYWRlcigpLnJlbG9hZChyZWxvYWRPcHRpb25zKTsKIH0KQEAgLTQzNDIsOSArNDM0Miw5
IEBAIHZvaWQgSW50ZXJuYWxzOjpzZXRQYWdlVmlzaWJpbGl0eShib29sIGkKICAgICBhdXRvIHN0
YXRlID0gcGFnZS5hY3Rpdml0eVN0YXRlKCk7CiAKICAgICBpZiAoIWlzVmlzaWJsZSkKLSAgICAg
ICAgc3RhdGUgLT0gQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlOworICAgICAgICBzdGF0ZS5yZW1v
dmUoQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKTsKICAgICBlbHNlCi0gICAgICAgIHN0YXRlIHw9
IEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZTsKKyAgICAgICAgc3RhdGUuYWRkKEFjdGl2aXR5U3Rh
dGU6OklzVmlzaWJsZSk7CiAKICAgICBwYWdlLnNldEFjdGl2aXR5U3RhdGUoc3RhdGUpOwogfQpA
QCAtNDM1OCw5ICs0MzU4LDkgQEAgdm9pZCBJbnRlcm5hbHM6OnNldFBhZ2VJc0ZvY3VzZWRBbmRB
Y3RpdgogICAgIGF1dG8gc3RhdGUgPSBwYWdlLmFjdGl2aXR5U3RhdGUoKTsKIAogICAgIGlmICgh
aXNGb2N1c2VkQW5kQWN0aXZlKQotICAgICAgICBzdGF0ZSAtPSB7IEFjdGl2aXR5U3RhdGU6Oklz
Rm9jdXNlZCwgQWN0aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmUgfTsKKyAgICAgICAgc3RhdGUu
cmVtb3ZlKHsgQWN0aXZpdHlTdGF0ZTo6SXNGb2N1c2VkLCBBY3Rpdml0eVN0YXRlOjpXaW5kb3dJ
c0FjdGl2ZSB9KTsKICAgICBlbHNlCi0gICAgICAgIHN0YXRlIHw9IHsgQWN0aXZpdHlTdGF0ZTo6
SXNGb2N1c2VkLCBBY3Rpdml0eVN0YXRlOjpXaW5kb3dJc0FjdGl2ZSB9OworICAgICAgICBzdGF0
ZS5hZGQoeyBBY3Rpdml0eVN0YXRlOjpJc0ZvY3VzZWQsIEFjdGl2aXR5U3RhdGU6OldpbmRvd0lz
QWN0aXZlIH0pOwogCiAgICAgcGFnZS5zZXRBY3Rpdml0eVN0YXRlKHN0YXRlKTsKIH0KSW5kZXg6
IFNvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkRy
aXZlci9TZXNzaW9uLmNwcAkocmV2aXNpb24gMjM1NTE0KQorKysgU291cmNlL1dlYkRyaXZlci9T
ZXNzaW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUxNCw4ICsxNTE0LDcgQEAgdm9pZCBTZXNz
aW9uOjplbGVtZW50Q2xpY2soY29uc3QgU3RyaW5nJgogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgT3B0aW9uU2V0PEVsZW1lbnRMYXlvdXRPcHRpb24+IG9wdGlvbnMgPSBFbGVtZW50TGF5
b3V0T3B0aW9uOjpTY3JvbGxJbnRvVmlld0lmTmVlZGVkOwotICAgIG9wdGlvbnMgfD0gRWxlbWVu
dExheW91dE9wdGlvbjo6VXNlVmlld3BvcnRDb29yZGluYXRlczsKKyAgICBPcHRpb25TZXQ8RWxl
bWVudExheW91dE9wdGlvbj4gb3B0aW9ucyA9IHsgRWxlbWVudExheW91dE9wdGlvbjo6U2Nyb2xs
SW50b1ZpZXdJZk5lZWRlZCwgRWxlbWVudExheW91dE9wdGlvbjo6VXNlVmlld3BvcnRDb29yZGlu
YXRlcyB9OwogICAgIGNvbXB1dGVFbGVtZW50TGF5b3V0KGVsZW1lbnRJRCwgb3B0aW9ucywgW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZWxlbWVudElELCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShzdGQ6Om9wdGlvbmFsPFJlY3Q+
JiYgcmVjdCwgc3RkOjpvcHRpb25hbDxQb2ludD4mJiBpblZpZXdDZW50ZXIsIGJvb2wgaXNPYnNj
dXJlZCwgUmVmUHRyPEpTT046Ok9iamVjdD4mJiBlcnJvcikgbXV0YWJsZSB7CiAgICAgICAgIGlm
ICghcmVjdCB8fCBlcnJvcikgewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoQ29tbWFu
ZFJlc3VsdDo6ZmFpbChXVEZNb3ZlKGVycm9yKSkpOwpJbmRleDogU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDIz
NTUyMykKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsNTggQEAKKzIwMTgtMDgtMzAgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgor
CisgICAgICAgIFJlcGxhY2UgT3B0aW9uU2V0IHw9IGFuZCAtPSBvcGVyYXRvcnMgd2l0aCBhZGQo
KSBhbmQgcmVtb3ZlKCkgZnVuY3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xODkxNjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29j
b2EubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxp
emVOZXR3b3JrUHJvY2Vzc0NvY29hKToKKyAgICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVl
L1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLmg6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxh
eWVyVHJlZVRyYW5zYWN0aW9uOjpMYXllclByb3BlcnRpZXM6Om5vdGVQcm9wZXJ0aWVzQ2hhbmdl
ZCk6CisgICAgICAgICogU2hhcmVkL1dlYkV2ZW50Q29udmVyc2lvbi5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYktpdDJQbGF0Zm9ybU1vdXNlRXZlbnQ6OldlYktpdDJQbGF0Zm9ybU1vdXNlRXZl
bnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJLaXQyUGxhdGZvcm1XaGVlbEV2ZW50OjpXZWJLaXQy
UGxhdGZvcm1XaGVlbEV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViS2l0MlBsYXRmb3JtS2V5
Ym9hcmRFdmVudDo6V2ViS2l0MlBsYXRmb3JtS2V5Ym9hcmRFdmVudCk6CisgICAgICAgIChXZWJL
aXQ6OldlYktpdDJQbGF0Zm9ybVRvdWNoRXZlbnQ6OldlYktpdDJQbGF0Zm9ybVRvdWNoRXZlbnQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJLaXQyUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OldlYktpdDJQ
bGF0Zm9ybUdlc3R1cmVFdmVudCk6CisgICAgICAgICogU2hhcmVkL1dlYnNpdGVQb2xpY2llc0Rh
dGEuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlUG9saWNpZXNEYXRhOjphcHBseVRvRG9j
dW1lbnRMb2FkZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwOgorICAg
ICAgICAoV0tQYWdlUmVsb2FkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tSZXNvdXJj
ZUNhY2hlTWFuYWdlci5jcHA6CisgICAgICAgICh0b1dlYnNpdGVEYXRhVHlwZXMpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVQb2xpY2llcy5jcHA6CisgICAgICAgIChXS1dl
YnNpdGVQb2xpY2llc1NldEFsbG93ZWRBdXRvcGxheVF1aXJrcyk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyByZWxvYWRd
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmRJbnRl
cm5hbC5oOgorICAgICAgICAoV2ViS2l0Ojp0b1dlYnNpdGVEYXRhVHlwZXMpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tOgorICAgICAgICAoLVtX
S1dlYnNpdGVEYXRhU3RvcmUgX2ZldGNoRGF0YVJlY29yZHNPZlR5cGVzOndpdGhPcHRpb25zOmNv
bXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vi
c2l0ZVBvbGljaWVzLm1tOgorICAgICAgICAoLVtfV0tXZWJzaXRlUG9saWNpZXMgc2V0QWxsb3dl
ZEF1dG9wbGF5UXVpcmtzOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1w
bC5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnZpZXdEaWRNb3ZlVG9XaW5kb3cp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OnVwZGF0ZUFjdGl2aXR5U3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmRpc3BhdGNoQWN0aXZpdHlTdGF0ZUNoYW5nZSk6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhUmVjb3JkLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2Vic2l0ZURhdGFSZWNvcmQ6OmFkZCk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRh
UmVjb3JkOjphZGRDb29raWVIb3N0TmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRh
UmVjb3JkOjphZGRQbHVnaW5EYXRhSG9zdE5hbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRl
RGF0YVJlY29yZDo6YWRkSFNUU0NhY2hlSG9zdG5hbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJz
aXRlRGF0YVJlY29yZDo6YWRkT3JpZ2luV2l0aENyZWRlbnRpYWwpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9tYWMvV0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbToKKyAgICAgICAgKC1bV0tJbnNw
ZWN0b3JWaWV3Q29udHJvbGxlciBpbnNwZWN0b3JXS1dlYlZpZXdSZWxvYWQ6XSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxl
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6aW1hZ2VGb3JSZWN0KToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZTo6cmVuZGVyZWRJbWFnZSk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6Y29yZSk6CisgICAgICAgIChXZWJLaXQ6OkZpbmRDb250cm9sbGVyOjpmaW5k
U3RyaW5nKToKKwogMjAxOC0wOC0zMCAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxl
LmNvbT4KIAogICAgICAgICBCdW5kbGUgdW5pZmllZCBzb3VyY2VzIG1vcmUgdGlnaHRseSBpbiBw
cm9qZWN0cyB3aXRoIGRlZXAgZGlyZWN0b3J5IHN0cnVjdHVyZXMKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29j
b2EubW0JKHJldmlzaW9uIDIzNTUxNCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTE0LDEyICsx
MTQsMTIgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplTgogICAgIFNh
bmRib3hFeHRlbnNpb246OmNvbnN1bWVQZXJtYW5lbnRseShwYXJhbWV0ZXJzLmRpc2tDYWNoZURp
cmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAgICAgT3B0aW9uU2V0PE5ldHdvcmtDYWNoZTo6Q2Fj
aGU6Ok9wdGlvbj4gY2FjaGVPcHRpb25zIHsgTmV0d29ya0NhY2hlOjpDYWNoZTo6T3B0aW9uOjpS
ZWdpc3Rlck5vdGlmeSB9OwogICAgIGlmIChwYXJhbWV0ZXJzLnNob3VsZEVuYWJsZU5ldHdvcmtD
YWNoZUVmZmljYWN5TG9nZ2luZykKLSAgICAgICAgY2FjaGVPcHRpb25zIHw9IE5ldHdvcmtDYWNo
ZTo6Q2FjaGU6Ok9wdGlvbjo6RWZmaWNhY3lMb2dnaW5nOworICAgICAgICBjYWNoZU9wdGlvbnMu
YWRkKE5ldHdvcmtDYWNoZTo6Q2FjaGU6Ok9wdGlvbjo6RWZmaWNhY3lMb2dnaW5nKTsKICAgICBp
ZiAocGFyYW1ldGVycy5zaG91bGRVc2VUZXN0aW5nTmV0d29ya1Nlc3Npb24pCi0gICAgICAgIGNh
Y2hlT3B0aW9ucyB8PSBOZXR3b3JrQ2FjaGU6OkNhY2hlOjpPcHRpb246OlRlc3RpbmdNb2RlOwor
ICAgICAgICBjYWNoZU9wdGlvbnMuYWRkKE5ldHdvcmtDYWNoZTo6Q2FjaGU6Ok9wdGlvbjo6VGVz
dGluZ01vZGUpOwogI2lmIEVOQUJMRShORVRXT1JLX0NBQ0hFX1NQRUNVTEFUSVZFX1JFVkFMSURB
VElPTikKICAgICBpZiAocGFyYW1ldGVycy5zaG91bGRFbmFibGVOZXR3b3JrQ2FjaGVTcGVjdWxh
dGl2ZVJldmFsaWRhdGlvbikKLSAgICAgICAgY2FjaGVPcHRpb25zIHw9IE5ldHdvcmtDYWNoZTo6
Q2FjaGU6Ok9wdGlvbjo6U3BlY3VsYXRpdmVSZXZhbGlkYXRpb247CisgICAgICAgIGNhY2hlT3B0
aW9ucy5hZGQoTmV0d29ya0NhY2hlOjpDYWNoZTo6T3B0aW9uOjpTcGVjdWxhdGl2ZVJldmFsaWRh
dGlvbik7CiAjZW5kaWYKIAogICAgIG1fY2FjaGUgPSBOZXR3b3JrQ2FjaGU6OkNhY2hlOjpvcGVu
KG1fZGlza0NhY2hlRGlyZWN0b3J5LCBjYWNoZU9wdGlvbnMpOwpJbmRleDogU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViRXZlbnRDb252ZXJzaW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJFdmVudENvbnZlcnNpb24uY3BwCShyZXZpc2lvbiAyMzU1MTQpCisrKyBT
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJFdmVudENvbnZlcnNpb24uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02OSwxNSArNjksMTUgQEAgcHVibGljOgogICAgICAgICB9CiAKICAgICAgICAgaWYgKHdl
YkV2ZW50LnNoaWZ0S2V5KCkpCi0gICAgICAgICAgICBtX21vZGlmaWVycyB8PSBNb2RpZmllcjo6
U2hpZnRLZXk7CisgICAgICAgICAgICBtX21vZGlmaWVycy5hZGQoTW9kaWZpZXI6OlNoaWZ0S2V5
KTsKICAgICAgICAgaWYgKHdlYkV2ZW50LmNvbnRyb2xLZXkoKSkKLSAgICAgICAgICAgIG1fbW9k
aWZpZXJzIHw9IE1vZGlmaWVyOjpDdHJsS2V5OworICAgICAgICAgICAgbV9tb2RpZmllcnMuYWRk
KE1vZGlmaWVyOjpDdHJsS2V5KTsKICAgICAgICAgaWYgKHdlYkV2ZW50LmFsdEtleSgpKQotICAg
ICAgICAgICAgbV9tb2RpZmllcnMgfD0gTW9kaWZpZXI6OkFsdEtleTsKKyAgICAgICAgICAgIG1f
bW9kaWZpZXJzLmFkZChNb2RpZmllcjo6QWx0S2V5KTsKICAgICAgICAgaWYgKHdlYkV2ZW50Lm1l
dGFLZXkoKSkKLSAgICAgICAgICAgIG1fbW9kaWZpZXJzIHw9IE1vZGlmaWVyOjpNZXRhS2V5Owor
ICAgICAgICAgICAgbV9tb2RpZmllcnMuYWRkKE1vZGlmaWVyOjpNZXRhS2V5KTsKICAgICAgICAg
aWYgKHdlYkV2ZW50LmNhcHNMb2NrS2V5KCkpCi0gICAgICAgICAgICBtX21vZGlmaWVycyB8PSBN
b2RpZmllcjo6Q2Fwc0xvY2tLZXk7CisgICAgICAgICAgICBtX21vZGlmaWVycy5hZGQoTW9kaWZp
ZXI6OkNhcHNMb2NrS2V5KTsKIAogICAgICAgICBtX3RpbWVzdGFtcCA9IHdlYkV2ZW50LnRpbWVz
dGFtcCgpOwogCkBAIC0xMzYsMTUgKzEzNiwxNSBAQCBwdWJsaWM6CiAgICAgICAgIG1fdHlwZSA9
IFBsYXRmb3JtRXZlbnQ6OldoZWVsOwogCiAgICAgICAgIGlmICh3ZWJFdmVudC5zaGlmdEtleSgp
KQotICAgICAgICAgICAgbV9tb2RpZmllcnMgfD0gTW9kaWZpZXI6OlNoaWZ0S2V5OworICAgICAg
ICAgICAgbV9tb2RpZmllcnMuYWRkKE1vZGlmaWVyOjpTaGlmdEtleSk7CiAgICAgICAgIGlmICh3
ZWJFdmVudC5jb250cm9sS2V5KCkpCi0gICAgICAgICAgICBtX21vZGlmaWVycyB8PSBNb2RpZmll
cjo6Q3RybEtleTsKKyAgICAgICAgICAgIG1fbW9kaWZpZXJzLmFkZChNb2RpZmllcjo6Q3RybEtl
eSk7CiAgICAgICAgIGlmICh3ZWJFdmVudC5hbHRLZXkoKSkKLSAgICAgICAgICAgIG1fbW9kaWZp
ZXJzIHw9IE1vZGlmaWVyOjpBbHRLZXk7CisgICAgICAgICAgICBtX21vZGlmaWVycy5hZGQoTW9k
aWZpZXI6OkFsdEtleSk7CiAgICAgICAgIGlmICh3ZWJFdmVudC5tZXRhS2V5KCkpCi0gICAgICAg
ICAgICBtX21vZGlmaWVycyB8PSBNb2RpZmllcjo6TWV0YUtleTsKKyAgICAgICAgICAgIG1fbW9k
aWZpZXJzLmFkZChNb2RpZmllcjo6TWV0YUtleSk7CiAgICAgICAgIGlmICh3ZWJFdmVudC5jYXBz
TG9ja0tleSgpKQotICAgICAgICAgICAgbV9tb2RpZmllcnMgfD0gTW9kaWZpZXI6OkNhcHNMb2Nr
S2V5OworICAgICAgICAgICAgbV9tb2RpZmllcnMuYWRkKE1vZGlmaWVyOjpDYXBzTG9ja0tleSk7
CiAKICAgICAgICAgbV90aW1lc3RhbXAgPSB3ZWJFdmVudC50aW1lc3RhbXAoKTsKIApAQCAtMTk4
LDE1ICsxOTgsMTUgQEAgcHVibGljOgogICAgICAgICB9CiAKICAgICAgICAgaWYgKHdlYkV2ZW50
LnNoaWZ0S2V5KCkpCi0gICAgICAgICAgICBtX21vZGlmaWVycyB8PSBNb2RpZmllcjo6U2hpZnRL
ZXk7CisgICAgICAgICAgICBtX21vZGlmaWVycy5hZGQoTW9kaWZpZXI6OlNoaWZ0S2V5KTsKICAg
ICAgICAgaWYgKHdlYkV2ZW50LmNvbnRyb2xLZXkoKSkKLSAgICAgICAgICAgIG1fbW9kaWZpZXJz
IHw9IE1vZGlmaWVyOjpDdHJsS2V5OworICAgICAgICAgICAgbV9tb2RpZmllcnMuYWRkKE1vZGlm
aWVyOjpDdHJsS2V5KTsKICAgICAgICAgaWYgKHdlYkV2ZW50LmFsdEtleSgpKQotICAgICAgICAg
ICAgbV9tb2RpZmllcnMgfD0gTW9kaWZpZXI6OkFsdEtleTsKKyAgICAgICAgICAgIG1fbW9kaWZp
ZXJzLmFkZChNb2RpZmllcjo6QWx0S2V5KTsKICAgICAgICAgaWYgKHdlYkV2ZW50Lm1ldGFLZXko
KSkKLSAgICAgICAgICAgIG1fbW9kaWZpZXJzIHw9IE1vZGlmaWVyOjpNZXRhS2V5OworICAgICAg
ICAgICAgbV9tb2RpZmllcnMuYWRkKE1vZGlmaWVyOjpNZXRhS2V5KTsKICAgICAgICAgaWYgKHdl
YkV2ZW50LmNhcHNMb2NrS2V5KCkpCi0gICAgICAgICAgICBtX21vZGlmaWVycyB8PSBNb2RpZmll
cjo6Q2Fwc0xvY2tLZXk7CisgICAgICAgICAgICBtX21vZGlmaWVycy5hZGQoTW9kaWZpZXI6OkNh
cHNMb2NrS2V5KTsKIAogICAgICAgICBtX3RpbWVzdGFtcCA9IHdlYkV2ZW50LnRpbWVzdGFtcCgp
OwogCkBAIC0zMzksMTUgKzMzOSwxNSBAQCBwdWJsaWM6CiAgICAgICAgIH0KIAogICAgICAgICBp
ZiAod2ViRXZlbnQuc2hpZnRLZXkoKSkKLSAgICAgICAgICAgIG1fbW9kaWZpZXJzIHw9IE1vZGlm
aWVyOjpTaGlmdEtleTsKKyAgICAgICAgICAgIG1fbW9kaWZpZXJzLmFkZChNb2RpZmllcjo6U2hp
ZnRLZXkpOwogICAgICAgICBpZiAod2ViRXZlbnQuY29udHJvbEtleSgpKQotICAgICAgICAgICAg
bV9tb2RpZmllcnMgfD0gTW9kaWZpZXI6OkN0cmxLZXk7CisgICAgICAgICAgICBtX21vZGlmaWVy
cy5hZGQoTW9kaWZpZXI6OkN0cmxLZXkpOwogICAgICAgICBpZiAod2ViRXZlbnQuYWx0S2V5KCkp
Ci0gICAgICAgICAgICBtX21vZGlmaWVycyB8PSBNb2RpZmllcjo6QWx0S2V5OworICAgICAgICAg
ICAgbV9tb2RpZmllcnMuYWRkKE1vZGlmaWVyOjpBbHRLZXkpOwogICAgICAgICBpZiAod2ViRXZl
bnQubWV0YUtleSgpKQotICAgICAgICAgICAgbV9tb2RpZmllcnMgfD0gTW9kaWZpZXI6Ok1ldGFL
ZXk7CisgICAgICAgICAgICBtX21vZGlmaWVycy5hZGQoTW9kaWZpZXI6Ok1ldGFLZXkpOwogICAg
ICAgICBpZiAod2ViRXZlbnQuY2Fwc0xvY2tLZXkoKSkKLSAgICAgICAgICAgIG1fbW9kaWZpZXJz
IHw9IE1vZGlmaWVyOjpDYXBzTG9ja0tleTsKKyAgICAgICAgICAgIG1fbW9kaWZpZXJzLmFkZChN
b2RpZmllcjo6Q2Fwc0xvY2tLZXkpOwogCiAgICAgICAgIG1fdGltZXN0YW1wID0gd2ViRXZlbnQu
dGltZXN0YW1wKCk7CiAKQEAgLTM5OCwxNSArMzk4LDE1IEBAIHB1YmxpYzoKICAgICAgICAgfQog
CiAgICAgICAgIGlmICh3ZWJFdmVudC5zaGlmdEtleSgpKQotICAgICAgICAgICAgbV9tb2RpZmll
cnMgfD0gTW9kaWZpZXI6OlNoaWZ0S2V5OworICAgICAgICAgICAgbV9tb2RpZmllcnMuYWRkKE1v
ZGlmaWVyOjpTaGlmdEtleSk7CiAgICAgICAgIGlmICh3ZWJFdmVudC5jb250cm9sS2V5KCkpCi0g
ICAgICAgICAgICBtX21vZGlmaWVycyB8PSBNb2RpZmllcjo6Q3RybEtleTsKKyAgICAgICAgICAg
IG1fbW9kaWZpZXJzLmFkZChNb2RpZmllcjo6Q3RybEtleSk7CiAgICAgICAgIGlmICh3ZWJFdmVu
dC5hbHRLZXkoKSkKLSAgICAgICAgICAgIG1fbW9kaWZpZXJzIHw9IE1vZGlmaWVyOjpBbHRLZXk7
CisgICAgICAgICAgICBtX21vZGlmaWVycy5hZGQoTW9kaWZpZXI6OkFsdEtleSk7CiAgICAgICAg
IGlmICh3ZWJFdmVudC5tZXRhS2V5KCkpCi0gICAgICAgICAgICBtX21vZGlmaWVycyB8PSBNb2Rp
Zmllcjo6TWV0YUtleTsKKyAgICAgICAgICAgIG1fbW9kaWZpZXJzLmFkZChNb2RpZmllcjo6TWV0
YUtleSk7CiAgICAgICAgIGlmICh3ZWJFdmVudC5jYXBzTG9ja0tleSgpKQotICAgICAgICAgICAg
bV9tb2RpZmllcnMgfD0gTW9kaWZpZXI6OkNhcHNMb2NrS2V5OworICAgICAgICAgICAgbV9tb2Rp
ZmllcnMuYWRkKE1vZGlmaWVyOjpDYXBzTG9ja0tleSk7CiAKICAgICAgICAgbV90aW1lc3RhbXAg
PSB3ZWJFdmVudC50aW1lc3RhbXAoKTsKIApJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
c2l0ZVBvbGljaWVzRGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQv
V2Vic2l0ZVBvbGljaWVzRGF0YS5jcHAJKHJldmlzaW9uIDIzNTUxNCkKKysrIFNvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYnNpdGVQb2xpY2llc0RhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05OCwx
MyArOTgsMTMgQEAgdm9pZCBXZWJzaXRlUG9saWNpZXNEYXRhOjphcHBseVRvRG9jdW1lbgogICAg
IGNvbnN0IGF1dG8mIGFsbG93ZWRRdWlya3MgPSB3ZWJzaXRlUG9saWNpZXMuYWxsb3dlZEF1dG9w
bGF5UXVpcmtzOwogICAgIAogICAgIGlmIChhbGxvd2VkUXVpcmtzLmNvbnRhaW5zKFdlYnNpdGVB
dXRvcGxheVF1aXJrOjpJbmhlcml0ZWRVc2VyR2VzdHVyZXMpKQotICAgICAgICBxdWlya3MgfD0g
V2ViQ29yZTo6QXV0b3BsYXlRdWlyazo6SW5oZXJpdGVkVXNlckdlc3R1cmVzOworICAgICAgICBx
dWlya3MuYWRkKFdlYkNvcmU6OkF1dG9wbGF5UXVpcms6OkluaGVyaXRlZFVzZXJHZXN0dXJlcyk7
CiAgICAgCiAgICAgaWYgKGFsbG93ZWRRdWlya3MuY29udGFpbnMoV2Vic2l0ZUF1dG9wbGF5UXVp
cms6OlN5bnRoZXNpemVkUGF1c2VFdmVudHMpKQotICAgICAgICBxdWlya3MgfD0gV2ViQ29yZTo6
QXV0b3BsYXlRdWlyazo6U3ludGhlc2l6ZWRQYXVzZUV2ZW50czsKKyAgICAgICAgcXVpcmtzLmFk
ZChXZWJDb3JlOjpBdXRvcGxheVF1aXJrOjpTeW50aGVzaXplZFBhdXNlRXZlbnRzKTsKICAgICAK
ICAgICBpZiAoYWxsb3dlZFF1aXJrcy5jb250YWlucyhXZWJzaXRlQXV0b3BsYXlRdWlyazo6QXJi
aXRyYXJ5VXNlckdlc3R1cmVzKSkKLSAgICAgICAgcXVpcmtzIHw9IFdlYkNvcmU6OkF1dG9wbGF5
UXVpcms6OkFyYml0cmFyeVVzZXJHZXN0dXJlczsKKyAgICAgICAgcXVpcmtzLmFkZChXZWJDb3Jl
OjpBdXRvcGxheVF1aXJrOjpBcmJpdHJhcnlVc2VyR2VzdHVyZXMpOwogCiAgICAgZG9jdW1lbnRM
b2FkZXIuc2V0QWxsb3dlZEF1dG9wbGF5UXVpcmtzKHF1aXJrcyk7CiAKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1v
dGVMYXllclRyZWVUcmFuc2FjdGlvbi5oCShyZXZpc2lvbiAyMzU1MTQpCisrKyBTb3VyY2UvV2Vi
S2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24uaAko
d29ya2luZyBjb3B5KQpAQCAtMTE2LDcgKzExNiw3IEBAIHB1YmxpYzoKIAogICAgICAgICB2b2lk
IG5vdGVQcm9wZXJ0aWVzQ2hhbmdlZChPcHRpb25TZXQ8TGF5ZXJDaGFuZ2U+IGNoYW5nZUZsYWdz
KQogICAgICAgICB7Ci0gICAgICAgICAgICBjaGFuZ2VkUHJvcGVydGllcyB8PSBjaGFuZ2VGbGFn
czsKKyAgICAgICAgICAgIGNoYW5nZWRQcm9wZXJ0aWVzLmFkZChjaGFuZ2VGbGFncyk7CiAgICAg
ICAgIH0KIAogICAgICAgICB2b2lkIHJlc2V0Q2hhbmdlZFByb3BlcnRpZXMoKQpJbmRleDogU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAyMzU1MTQpCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNDQ2LDMyICsxNDQ2LDMyIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRTdXBwcmVzc1Zp
c2liaWxpdHkKIAogdm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZUFjdGl2aXR5U3RhdGUoT3B0aW9u
U2V0PEFjdGl2aXR5U3RhdGU6OkZsYWc+IGZsYWdzVG9VcGRhdGUpCiB7Ci0gICAgbV9hY3Rpdml0
eVN0YXRlID0gbV9hY3Rpdml0eVN0YXRlIC0gZmxhZ3NUb1VwZGF0ZTsKKyAgICBtX2FjdGl2aXR5
U3RhdGUucmVtb3ZlKGZsYWdzVG9VcGRhdGUpOwogICAgIGlmIChmbGFnc1RvVXBkYXRlICYgQWN0
aXZpdHlTdGF0ZTo6SXNGb2N1c2VkICYmIG1fcGFnZUNsaWVudC5pc1ZpZXdGb2N1c2VkKCkpCi0g
ICAgICAgIG1fYWN0aXZpdHlTdGF0ZSB8PSBBY3Rpdml0eVN0YXRlOjpJc0ZvY3VzZWQ7CisgICAg
ICAgIG1fYWN0aXZpdHlTdGF0ZS5hZGQoQWN0aXZpdHlTdGF0ZTo6SXNGb2N1c2VkKTsKICAgICBp
ZiAoZmxhZ3NUb1VwZGF0ZSAmIEFjdGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZlICYmIG1fcGFn
ZUNsaWVudC5pc1ZpZXdXaW5kb3dBY3RpdmUoKSkKLSAgICAgICAgbV9hY3Rpdml0eVN0YXRlIHw9
IEFjdGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZlOworICAgICAgICBtX2FjdGl2aXR5U3RhdGUu
YWRkKEFjdGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZlKTsKICAgICBpZiAoZmxhZ3NUb1VwZGF0
ZSAmIEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSAmJiBtX3BhZ2VDbGllbnQuaXNWaWV3VmlzaWJs
ZSgpKQotICAgICAgICBtX2FjdGl2aXR5U3RhdGUgfD0gQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxl
OworICAgICAgICBtX2FjdGl2aXR5U3RhdGUuYWRkKEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSk7
CiAgICAgaWYgKGZsYWdzVG9VcGRhdGUgJiBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGVPck9jY2x1
ZGVkICYmIG1fcGFnZUNsaWVudC5pc1ZpZXdWaXNpYmxlT3JPY2NsdWRlZCgpKQotICAgICAgICBt
X2FjdGl2aXR5U3RhdGUgfD0gQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlT3JPY2NsdWRlZDsKKyAg
ICAgICAgbV9hY3Rpdml0eVN0YXRlLmFkZChBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGVPck9jY2x1
ZGVkKTsKICAgICBpZiAoZmxhZ3NUb1VwZGF0ZSAmIEFjdGl2aXR5U3RhdGU6OklzSW5XaW5kb3cg
JiYgbV9wYWdlQ2xpZW50LmlzVmlld0luV2luZG93KCkpCi0gICAgICAgIG1fYWN0aXZpdHlTdGF0
ZSB8PSBBY3Rpdml0eVN0YXRlOjpJc0luV2luZG93OworICAgICAgICBtX2FjdGl2aXR5U3RhdGUu
YWRkKEFjdGl2aXR5U3RhdGU6OklzSW5XaW5kb3cpOwogICAgIGlmIChmbGFnc1RvVXBkYXRlICYg
QWN0aXZpdHlTdGF0ZTo6SXNWaXN1YWxseUlkbGUgJiYgbV9wYWdlQ2xpZW50LmlzVmlzdWFsbHlJ
ZGxlKCkpCi0gICAgICAgIG1fYWN0aXZpdHlTdGF0ZSB8PSBBY3Rpdml0eVN0YXRlOjpJc1Zpc3Vh
bGx5SWRsZTsKKyAgICAgICAgbV9hY3Rpdml0eVN0YXRlLmFkZChBY3Rpdml0eVN0YXRlOjpJc1Zp
c3VhbGx5SWRsZSk7CiAgICAgaWYgKGZsYWdzVG9VcGRhdGUgJiBBY3Rpdml0eVN0YXRlOjpJc0F1
ZGlibGUgJiYgbV9tZWRpYVN0YXRlICYgTWVkaWFQcm9kdWNlcjo6SXNQbGF5aW5nQXVkaW8gJiYg
IShtX211dGVkU3RhdGUgJiBNZWRpYVByb2R1Y2VyOjpBdWRpb0lzTXV0ZWQpKQotICAgICAgICBt
X2FjdGl2aXR5U3RhdGUgfD0gQWN0aXZpdHlTdGF0ZTo6SXNBdWRpYmxlOworICAgICAgICBtX2Fj
dGl2aXR5U3RhdGUuYWRkKEFjdGl2aXR5U3RhdGU6OklzQXVkaWJsZSk7CiAgICAgaWYgKGZsYWdz
VG9VcGRhdGUgJiBBY3Rpdml0eVN0YXRlOjpJc0xvYWRpbmcgJiYgbV9wYWdlTG9hZFN0YXRlLmlz
TG9hZGluZygpKQotICAgICAgICBtX2FjdGl2aXR5U3RhdGUgfD0gQWN0aXZpdHlTdGF0ZTo6SXNM
b2FkaW5nOworICAgICAgICBtX2FjdGl2aXR5U3RhdGUuYWRkKEFjdGl2aXR5U3RhdGU6OklzTG9h
ZGluZyk7CiAgICAgaWYgKGZsYWdzVG9VcGRhdGUgJiBBY3Rpdml0eVN0YXRlOjpJc0NhcHR1cmlu
Z01lZGlhICYmIG1fbWVkaWFTdGF0ZSAmIChNZWRpYVByb2R1Y2VyOjpIYXNBY3RpdmVBdWRpb0Nh
cHR1cmVEZXZpY2UgfCBNZWRpYVByb2R1Y2VyOjpIYXNBY3RpdmVWaWRlb0NhcHR1cmVEZXZpY2Up
KQotICAgICAgICBtX2FjdGl2aXR5U3RhdGUgfD0gQWN0aXZpdHlTdGF0ZTo6SXNDYXB0dXJpbmdN
ZWRpYTsKKyAgICAgICAgbV9hY3Rpdml0eVN0YXRlLmFkZChBY3Rpdml0eVN0YXRlOjpJc0NhcHR1
cmluZ01lZGlhKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmFjdGl2aXR5U3RhdGVEaWRDaGFu
Z2UoT3B0aW9uU2V0PEFjdGl2aXR5U3RhdGU6OkZsYWc+IG1heUhhdmVDaGFuZ2VkLCBib29sIHdh
bnRzU3luY2hyb25vdXNSZXBseSwgQWN0aXZpdHlTdGF0ZUNoYW5nZURpc3BhdGNoTW9kZSBkaXNw
YXRjaE1vZGUpCiB7CiAgICAgTE9HX1dJVEhfU1RSRUFNKEFjdGl2aXR5U3RhdGUsIHN0cmVhbSA8
PCAiV2ViUGFnZVByb3h5ICIgPDwgcGFnZUlEKCkgPDwgIiBhY3Rpdml0eVN0YXRlRGlkQ2hhbmdl
IC0gbWF5SGF2ZUNoYW5nZWQgIiA8PCBtYXlIYXZlQ2hhbmdlZCk7CiAKLSAgICBtX3BvdGVudGlh
bGx5Q2hhbmdlZEFjdGl2aXR5U3RhdGVGbGFncyB8PSBtYXlIYXZlQ2hhbmdlZDsKKyAgICBtX3Bv
dGVudGlhbGx5Q2hhbmdlZEFjdGl2aXR5U3RhdGVGbGFncy5hZGQobWF5SGF2ZUNoYW5nZWQpOwog
ICAgIG1fYWN0aXZpdHlTdGF0ZUNoYW5nZVdhbnRzU3luY2hyb25vdXNSZXBseSA9IG1fYWN0aXZp
dHlTdGF0ZUNoYW5nZVdhbnRzU3luY2hyb25vdXNSZXBseSB8fCB3YW50c1N5bmNocm9ub3VzUmVw
bHk7CiAKICAgICBpZiAobV9zdXBwcmVzc1Zpc2liaWxpdHlVcGRhdGVzICYmIGRpc3BhdGNoTW9k
ZSAhPSBBY3Rpdml0eVN0YXRlQ2hhbmdlRGlzcGF0Y2hNb2RlOjpJbW1lZGlhdGUpCkBAIC0xNTIy
LDcgKzE1MjIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlzcGF0Y2hBY3Rpdml0eVN0YXRlCiAK
ICAgICAvLyBJZiB0aGUgdmlzaWJpbGl0eSBzdGF0ZSBtYXkgaGF2ZSBjaGFuZ2VkLCB0aGVuIHNv
IG1heSB0aGUgdmlzdWFsbHkgaWRsZSAmIG9jY2x1ZGVkIGFnbm9zdGljIHN0YXRlLgogICAgIGlm
IChtX3BvdGVudGlhbGx5Q2hhbmdlZEFjdGl2aXR5U3RhdGVGbGFncyAmIEFjdGl2aXR5U3RhdGU6
OklzVmlzaWJsZSkKLSAgICAgICAgbV9wb3RlbnRpYWxseUNoYW5nZWRBY3Rpdml0eVN0YXRlRmxh
Z3MgfD0geyBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGVPck9jY2x1ZGVkLCBBY3Rpdml0eVN0YXRl
OjpJc1Zpc3VhbGx5SWRsZSB9OworICAgICAgICBtX3BvdGVudGlhbGx5Q2hhbmdlZEFjdGl2aXR5
U3RhdGVGbGFncy5hZGQoeyBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGVPck9jY2x1ZGVkLCBBY3Rp
dml0eVN0YXRlOjpJc1Zpc3VhbGx5SWRsZSB9KTsKIAogICAgIC8vIFJlY29yZCB0aGUgcHJpb3Ig
dmlldyBzdGF0ZSwgdXBkYXRlIHRoZSBmbGFncyB0aGF0IG1heSBoYXZlIGNoYW5nZWQsCiAgICAg
Ly8gYW5kIGNoZWNrIHdoaWNoIGZsYWdzIGhhdmUgYWN0dWFsbHkgY2hhbmdlZC4KSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAkocmV2aXNpb24gMjM1NTE0KQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjcwLDcgKzI3MCw3IEBAIHZvaWQgV0tQYWdlUmVsb2FkKFdLUGFnZVJlZiBwYWdlUmVm
KQogICAgIE9wdGlvblNldDxXZWJDb3JlOjpSZWxvYWRPcHRpb24+IHJlbG9hZE9wdGlvbnM7CiAj
aWYgUExBVEZPUk0oQ09DT0EpCiAgICAgaWYgKGxpbmtlZE9uT3JBZnRlcihXZWJLaXQ6OlNES1Zl
cnNpb246OkZpcnN0V2l0aEV4cGlyZWRPbmx5UmVsb2FkQmVoYXZpb3IpKQotICAgICAgICByZWxv
YWRPcHRpb25zIHw9IFdlYkNvcmU6OlJlbG9hZE9wdGlvbjo6RXhwaXJlZE9ubHk7CisgICAgICAg
IHJlbG9hZE9wdGlvbnMuYWRkKFdlYkNvcmU6OlJlbG9hZE9wdGlvbjo6RXhwaXJlZE9ubHkpOwog
I2VuZGlmCiAKICAgICB0b0ltcGwocGFnZVJlZiktPnJlbG9hZChyZWxvYWRPcHRpb25zKTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUmVzb3VyY2VDYWNoZU1hbmFnZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUmVzb3Vy
Y2VDYWNoZU1hbmFnZXIuY3BwCShyZXZpc2lvbiAyMzU1MTQpCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQy9XS1Jlc291cmNlQ2FjaGVNYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDAsMTIgKzQwLDEwIEBAIFdLVHlwZUlEIFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJHZXRUeXBl
SUQKIAogc3RhdGljIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IHRvV2Vic2l0ZURhdGFUeXBl
cyhXS1Jlc291cmNlQ2FjaGVzVG9DbGVhciBjYWNoZXNUb0NsZWFyKQogewotICAgIE9wdGlvblNl
dDxXZWJzaXRlRGF0YVR5cGU+IHdlYnNpdGVEYXRhVHlwZXM7Ci0KLSAgICB3ZWJzaXRlRGF0YVR5
cGVzIHw9IFdlYnNpdGVEYXRhVHlwZTo6TWVtb3J5Q2FjaGU7CisgICAgT3B0aW9uU2V0PFdlYnNp
dGVEYXRhVHlwZT4gd2Vic2l0ZURhdGFUeXBlcyB7IFdlYnNpdGVEYXRhVHlwZTo6TWVtb3J5Q2Fj
aGUgfTsKIAogICAgIGlmIChjYWNoZXNUb0NsZWFyID09IFdLUmVzb3VyY2VDYWNoZXNUb0NsZWFy
QWxsKQotICAgICAgICB3ZWJzaXRlRGF0YVR5cGVzIHw9IFdlYnNpdGVEYXRhVHlwZTo6RGlza0Nh
Y2hlOworICAgICAgICB3ZWJzaXRlRGF0YVR5cGVzLmFkZChXZWJzaXRlRGF0YVR5cGU6OkRpc2tD
YWNoZSk7CiAKICAgICByZXR1cm4gd2Vic2l0ZURhdGFUeXBlczsKIH0KSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZVBvbGljaWVzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVQb2xpY2llcy5jcHAJKHJl
dmlzaW9uIDIzNTUxNCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0
ZVBvbGljaWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODMsMTMgKzgzLDEzIEBAIHZvaWQgV0tX
ZWJzaXRlUG9saWNpZXNTZXRBbGxvd2VkQXV0b3BsYXkKIHsKICAgICBPcHRpb25TZXQ8V2Vic2l0
ZUF1dG9wbGF5UXVpcms+IHF1aXJrczsKICAgICBpZiAoYWxsb3dlZFF1aXJrcyAmIGtXS1dlYnNp
dGVBdXRvcGxheVF1aXJrSW5oZXJpdGVkVXNlckdlc3R1cmVzKQotICAgICAgICBxdWlya3MgfD0g
V2Vic2l0ZUF1dG9wbGF5UXVpcms6OkluaGVyaXRlZFVzZXJHZXN0dXJlczsKKyAgICAgICAgcXVp
cmtzLmFkZChXZWJzaXRlQXV0b3BsYXlRdWlyazo6SW5oZXJpdGVkVXNlckdlc3R1cmVzKTsKIAog
ICAgIGlmIChhbGxvd2VkUXVpcmtzICYga1dLV2Vic2l0ZUF1dG9wbGF5UXVpcmtTeW50aGVzaXpl
ZFBhdXNlRXZlbnRzKQotICAgICAgICBxdWlya3MgfD0gV2Vic2l0ZUF1dG9wbGF5UXVpcms6OlN5
bnRoZXNpemVkUGF1c2VFdmVudHM7CisgICAgICAgIHF1aXJrcy5hZGQoV2Vic2l0ZUF1dG9wbGF5
UXVpcms6OlN5bnRoZXNpemVkUGF1c2VFdmVudHMpOwogCiAgICAgaWYgKGFsbG93ZWRRdWlya3Mg
JiBrV0tXZWJzaXRlQXV0b3BsYXlRdWlya0FyYml0cmFyeVVzZXJHZXN0dXJlcykKLSAgICAgICAg
cXVpcmtzIHw9IFdlYnNpdGVBdXRvcGxheVF1aXJrOjpBcmJpdHJhcnlVc2VyR2VzdHVyZXM7Cisg
ICAgICAgIHF1aXJrcy5hZGQoV2Vic2l0ZUF1dG9wbGF5UXVpcms6OkFyYml0cmFyeVVzZXJHZXN0
dXJlcyk7CiAKICAgICB0b0ltcGwod2Vic2l0ZVBvbGljaWVzKS0+c2V0QWxsb3dlZEF1dG9wbGF5
UXVpcmtzKHF1aXJrcyk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXcubW0JKHJldmlzaW9uIDIzNTUxNCkKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTk2MSw3
ICs5NjEsNyBAQCAtIChXS05hdmlnYXRpb24gKilyZWxvYWQKIHsKICAgICBPcHRpb25TZXQ8V2Vi
Q29yZTo6UmVsb2FkT3B0aW9uPiByZWxvYWRPcHRpb25zOwogICAgIGlmIChsaW5rZWRPbk9yQWZ0
ZXIoV2ViS2l0OjpTREtWZXJzaW9uOjpGaXJzdFdpdGhFeHBpcmVkT25seVJlbG9hZEJlaGF2aW9y
KSkKLSAgICAgICAgcmVsb2FkT3B0aW9ucyB8PSBXZWJDb3JlOjpSZWxvYWRPcHRpb246OkV4cGly
ZWRPbmx5OworICAgICAgICByZWxvYWRPcHRpb25zLmFkZChXZWJDb3JlOjpSZWxvYWRPcHRpb246
OkV4cGlyZWRPbmx5KTsKIAogICAgIHJldHVybiB3cmFwcGVyKF9wYWdlLT5yZWxvYWQocmVsb2Fk
T3B0aW9ucykpOwogfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2Vic2l0ZURhdGFSZWNvcmRJbnRlcm5hbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkSW50ZXJuYWwuaAkocmV2aXNp
b24gMjM1NTE0KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0
ZURhdGFSZWNvcmRJbnRlcm5hbC5oCSh3b3JraW5nIGNvcHkpCkBAIC04NSw3ICs4NSw3IEBAIHN0
YXRpYyBpbmxpbmUgT3B0aW9uU2V0PFdlYktpdDo6V2Vic2l0ZUQKIAogICAgIGZvciAoTlNTdHJp
bmcgKndlYnNpdGVEYXRhVHlwZSBpbiB3ZWJzaXRlRGF0YVR5cGVzKSB7CiAgICAgICAgIGlmIChh
dXRvIGRhdGFUeXBlID0gdG9XZWJzaXRlRGF0YVR5cGUod2Vic2l0ZURhdGFUeXBlKSkKLSAgICAg
ICAgICAgIHJlc3VsdCB8PSAqZGF0YVR5cGU7CisgICAgICAgICAgICByZXN1bHQuYWRkKCpkYXRh
VHlwZSk7CiAgICAgfQogCiAgICAgcmV0dXJuIHJlc3VsdDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQko
cmV2aXNpb24gMjM1NTE0KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2Vic2l0ZURhdGFTdG9yZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjIzLDcgKzIyMyw3IEBAIC0g
KHZvaWQpX2ZldGNoRGF0YVJlY29yZHNPZlR5cGVzOihOU1NldDwKIAogICAgIE9wdGlvblNldDxX
ZWJLaXQ6OldlYnNpdGVEYXRhRmV0Y2hPcHRpb24+IGZldGNoT3B0aW9uczsKICAgICBpZiAob3B0
aW9ucyAmIF9XS1dlYnNpdGVEYXRhU3RvcmVGZXRjaE9wdGlvbkNvbXB1dGVTaXplcykKLSAgICAg
ICAgZmV0Y2hPcHRpb25zIHw9IFdlYktpdDo6V2Vic2l0ZURhdGFGZXRjaE9wdGlvbjo6Q29tcHV0
ZVNpemVzOworICAgICAgICBmZXRjaE9wdGlvbnMuYWRkKFdlYktpdDo6V2Vic2l0ZURhdGFGZXRj
aE9wdGlvbjo6Q29tcHV0ZVNpemVzKTsKIAogICAgIF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRl
RGF0YVN0b3JlKCkuZmV0Y2hEYXRhKFdlYktpdDo6dG9XZWJzaXRlRGF0YVR5cGVzKGRhdGFUeXBl
cyksIGZldGNoT3B0aW9ucywgW2NvbXBsZXRpb25IYW5kbGVyQ29weSA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXJDb3B5KV0oYXV0byB3ZWJzaXRlRGF0YVJlY29yZHMpIHsKICAgICAgICAgVmVj
dG9yPFJlZlB0cjxBUEk6Ok9iamVjdD4+IGVsZW1lbnRzOwpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVQb2xpY2llcy5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZVBvbGljaWVzLm1tCShy
ZXZpc2lvbiAyMzU1MTQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
V2Vic2l0ZVBvbGljaWVzLm1tCSh3b3JraW5nIGNvcHkpCkBAIC02NCwxMyArNjQsMTMgQEAgLSAo
dm9pZClzZXRBbGxvd2VkQXV0b3BsYXlRdWlya3M6KF9XS1dlYgogICAgIE9wdGlvblNldDxXZWJL
aXQ6OldlYnNpdGVBdXRvcGxheVF1aXJrPiBxdWlya3M7CiAKICAgICBpZiAoYWxsb3dlZFF1aXJr
cyAmIF9XS1dlYnNpdGVBdXRvcGxheVF1aXJrSW5oZXJpdGVkVXNlckdlc3R1cmVzKQotICAgICAg
ICBxdWlya3MgfD0gV2ViS2l0OjpXZWJzaXRlQXV0b3BsYXlRdWlyazo6SW5oZXJpdGVkVXNlckdl
c3R1cmVzOworICAgICAgICBxdWlya3MuYWRkKFdlYktpdDo6V2Vic2l0ZUF1dG9wbGF5UXVpcms6
OkluaGVyaXRlZFVzZXJHZXN0dXJlcyk7CiAKICAgICBpZiAoYWxsb3dlZFF1aXJrcyAmIF9XS1dl
YnNpdGVBdXRvcGxheVF1aXJrU3ludGhlc2l6ZWRQYXVzZUV2ZW50cykKLSAgICAgICAgcXVpcmtz
IHw9IFdlYktpdDo6V2Vic2l0ZUF1dG9wbGF5UXVpcms6OlN5bnRoZXNpemVkUGF1c2VFdmVudHM7
CisgICAgICAgIHF1aXJrcy5hZGQoV2ViS2l0OjpXZWJzaXRlQXV0b3BsYXlRdWlyazo6U3ludGhl
c2l6ZWRQYXVzZUV2ZW50cyk7CiAKICAgICBpZiAoYWxsb3dlZFF1aXJrcyAmIF9XS1dlYnNpdGVB
dXRvcGxheVF1aXJrQXJiaXRyYXJ5VXNlckdlc3R1cmVzKQotICAgICAgICBxdWlya3MgfD0gV2Vi
S2l0OjpXZWJzaXRlQXV0b3BsYXlRdWlyazo6QXJiaXRyYXJ5VXNlckdlc3R1cmVzOworICAgICAg
ICBxdWlya3MuYWRkKFdlYktpdDo6V2Vic2l0ZUF1dG9wbGF5UXVpcms6OkFyYml0cmFyeVVzZXJH
ZXN0dXJlcyk7CiAKICAgICBfd2Vic2l0ZVBvbGljaWVzLT5zZXRBbGxvd2VkQXV0b3BsYXlRdWly
a3MocXVpcmtzKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZp
ZXdJbXBsLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dl
YlZpZXdJbXBsLm1tCShyZXZpc2lvbiAyMzU1MTQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9XZWJWaWV3SW1wbC5tbQkod29ya2luZyBjb3B5KQpAQCAtMjExOCw3ICsyMTE4LDcg
QEAgdm9pZCBXZWJWaWV3SW1wbDo6dmlld0RpZE1vdmVUb1dpbmRvdygpCiAgICAgICAgIGlmICht
X3Nob3VsZERlZmVyVmlld0luV2luZG93Q2hhbmdlcykKICAgICAgICAgICAgIG1fdmlld0luV2lu
ZG93Q2hhbmdlV2FzRGVmZXJyZWQgPSB0cnVlOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBh
Y3Rpdml0eVN0YXRlQ2hhbmdlcyB8PSBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc0luV2luZG93
OworICAgICAgICAgICAgYWN0aXZpdHlTdGF0ZUNoYW5nZXMuYWRkKFdlYkNvcmU6OkFjdGl2aXR5
U3RhdGU6OklzSW5XaW5kb3cpOwogICAgICAgICBtX3BhZ2UtPmFjdGl2aXR5U3RhdGVEaWRDaGFu
Z2UoYWN0aXZpdHlTdGF0ZUNoYW5nZXMpOwogCiAgICAgICAgIHVwZGF0ZVdpbmRvd0FuZFZpZXdG
cmFtZXMoKTsKQEAgLTIxNDQsNyArMjE0NCw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnZpZXdEaWRN
b3ZlVG9XaW5kb3coKQogICAgICAgICBpZiAobV9zaG91bGREZWZlclZpZXdJbldpbmRvd0NoYW5n
ZXMpCiAgICAgICAgICAgICBtX3ZpZXdJbldpbmRvd0NoYW5nZVdhc0RlZmVycmVkID0gdHJ1ZTsK
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgYWN0aXZpdHlTdGF0ZUNoYW5nZXMgfD0gV2ViQ29y
ZTo6QWN0aXZpdHlTdGF0ZTo6SXNJbldpbmRvdzsKKyAgICAgICAgICAgIGFjdGl2aXR5U3RhdGVD
aGFuZ2VzLmFkZChXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc0luV2luZG93KTsKICAgICAgICAg
bV9wYWdlLT5hY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKGFjdGl2aXR5U3RhdGVDaGFuZ2VzKTsKIAog
ICAgICAgICBbTlNFdmVudCByZW1vdmVNb25pdG9yOm1fZmxhZ3NDaGFuZ2VkRXZlbnRNb25pdG9y
XTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
UmVjb3JkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YVJlY29yZC5jcHAJKHJldmlzaW9uIDIzNTUxNCkKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhUmVjb3JkLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNzksMzAgKzc5LDI3IEBAIFN0cmluZyBXZWJzaXRlRGF0YVJlY29yZDo6ZGlz
cGxheU5hbWVGb3IKIAogdm9pZCBXZWJzaXRlRGF0YVJlY29yZDo6YWRkKFdlYnNpdGVEYXRhVHlw
ZSB0eXBlLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbikKIHsKLSAg
ICB0eXBlcyB8PSB0eXBlOwotCisgICAgdHlwZXMuYWRkKHR5cGUpOwogICAgIG9yaWdpbnMuYWRk
KG9yaWdpbik7CiB9CiAKIHZvaWQgV2Vic2l0ZURhdGFSZWNvcmQ6OmFkZENvb2tpZUhvc3ROYW1l
KGNvbnN0IFN0cmluZyYgaG9zdE5hbWUpCiB7Ci0gICAgdHlwZXMgfD0gV2Vic2l0ZURhdGFUeXBl
OjpDb29raWVzOwotCisgICAgdHlwZXMuYWRkKFdlYnNpdGVEYXRhVHlwZTo6Q29va2llcyk7CiAg
ICAgY29va2llSG9zdE5hbWVzLmFkZChob3N0TmFtZSk7CiB9CiAKICNpZiBFTkFCTEUoTkVUU0NB
UEVfUExVR0lOX0FQSSkKIHZvaWQgV2Vic2l0ZURhdGFSZWNvcmQ6OmFkZFBsdWdpbkRhdGFIb3N0
TmFtZShjb25zdCBTdHJpbmcmIGhvc3ROYW1lKQogewotICAgIHR5cGVzIHw9IFdlYnNpdGVEYXRh
VHlwZTo6UGx1Z0luRGF0YTsKLQorICAgIHR5cGVzLmFkZChXZWJzaXRlRGF0YVR5cGU6OlBsdWdJ
bkRhdGEpOwogICAgIHBsdWdpbkRhdGFIb3N0TmFtZXMuYWRkKGhvc3ROYW1lKTsKIH0KICNlbmRp
ZgogCiB2b2lkIFdlYnNpdGVEYXRhUmVjb3JkOjphZGRIU1RTQ2FjaGVIb3N0bmFtZShjb25zdCBT
dHJpbmcmIGhvc3ROYW1lKQogewotICAgIHR5cGVzIHw9IFdlYnNpdGVEYXRhVHlwZTo6SFNUU0Nh
Y2hlOworICAgIHR5cGVzLmFkZChXZWJzaXRlRGF0YVR5cGU6OkhTVFNDYWNoZSk7CiAgICAgSFNU
U0NhY2hlSG9zdE5hbWVzLmFkZChob3N0TmFtZSk7CiB9CiAKQEAgLTE1Nyw4ICsxNTQsNyBAQCBT
dHJpbmcgV2Vic2l0ZURhdGFSZWNvcmQ6OnRvcFByaXZhdGVseUNvCiAKIHZvaWQgV2Vic2l0ZURh
dGFSZWNvcmQ6OmFkZE9yaWdpbldpdGhDcmVkZW50aWFsKGNvbnN0IFN0cmluZyYgb3JpZ2luKQog
ewotICAgIHR5cGVzIHw9IFdlYnNpdGVEYXRhVHlwZTo6Q3JlZGVudGlhbHM7Ci0KKyAgICB0eXBl
cy5hZGQoV2Vic2l0ZURhdGFUeXBlOjpDcmVkZW50aWFscyk7CiAgICAgb3JpZ2luc1dpdGhDcmVk
ZW50aWFscy5hZGQob3JpZ2luKTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
bWFjL1dLSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvbWFjL1dLSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW0JKHJldmlzaW9u
IDIzNTUxNCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS0luc3BlY3RvclZpZXdD
b250cm9sbGVyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMzgsNyArMjM4LDcgQEAgLSAodm9pZClp
bnNwZWN0b3JXS1dlYlZpZXdSZWxvYWQ6KFdLSW5zcAogCiAgICAgT3B0aW9uU2V0PFdlYkNvcmU6
OlJlbG9hZE9wdGlvbj4gcmVsb2FkT3B0aW9uczsKICAgICBpZiAoV2ViS2l0OjpsaW5rZWRPbk9y
QWZ0ZXIoV2ViS2l0OjpTREtWZXJzaW9uOjpGaXJzdFdpdGhFeHBpcmVkT25seVJlbG9hZEJlaGF2
aW9yKSkKLSAgICAgICAgcmVsb2FkT3B0aW9ucyB8PSBXZWJDb3JlOjpSZWxvYWRPcHRpb246OkV4
cGlyZWRPbmx5OworICAgICAgICByZWxvYWRPcHRpb25zLmFkZChXZWJDb3JlOjpSZWxvYWRPcHRp
b246OkV4cGlyZWRPbmx5KTsKIAogICAgIF9pbnNwZWN0ZWRQYWdlLT5yZWxvYWQocmVsb2FkT3B0
aW9ucyk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
RE9NL0luamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5k
bGUuY3BwCShyZXZpc2lvbiAyMzU1MTQpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE3MCw5ICsxNzAsOSBAQCBzdGF0aWMgUmVmUHRyPFdlYkltYWdlPiBpbWFnZUZvclJl
Y3QoRnJhCiAKICAgICBhdXRvIHBhaW50QmVoYXZpb3IgPSBmcmFtZVZpZXctPnBhaW50QmVoYXZp
b3IoKSB8IFBhaW50QmVoYXZpb3I6OkZsYXR0ZW5Db21wb3NpdGluZ0xheWVycyB8IFBhaW50QmVo
YXZpb3I6OlNuYXBzaG90dGluZzsKICAgICBpZiAob3B0aW9ucyAmIFNuYXBzaG90T3B0aW9uc0Zv
cmNlQmxhY2tUZXh0KQotICAgICAgICBwYWludEJlaGF2aW9yIHw9IFBhaW50QmVoYXZpb3I6OkZv
cmNlQmxhY2tUZXh0OworICAgICAgICBwYWludEJlaGF2aW9yLmFkZChQYWludEJlaGF2aW9yOjpG
b3JjZUJsYWNrVGV4dCk7CiAgICAgaWYgKG9wdGlvbnMgJiBTbmFwc2hvdE9wdGlvbnNGb3JjZVdo
aXRlVGV4dCkKLSAgICAgICAgcGFpbnRCZWhhdmlvciB8PSBQYWludEJlaGF2aW9yOjpGb3JjZVdo
aXRlVGV4dDsKKyAgICAgICAgcGFpbnRCZWhhdmlvci5hZGQoUGFpbnRCZWhhdmlvcjo6Rm9yY2VX
aGl0ZVRleHQpOwogCiAgICAgYXV0byBvbGRQYWludEJlaGF2aW9yID0gZnJhbWVWaWV3LT5wYWlu
dEJlaGF2aW9yKCk7CiAgICAgZnJhbWVWaWV3LT5zZXRQYWludEJlaGF2aW9yKHBhaW50QmVoYXZp
b3IpOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9J
bmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUu
Y3BwCShyZXZpc2lvbiAyMzU1MTQpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNTAsMTEgKzE1MCwxMiBAQCBSZWZQdHI8V2ViSW1hZ2U+IEluamVjdGVkQnVuZGxlUmFu
Z2VIYW5kCiAgICAgZ3JhcGhpY3NDb250ZXh0LT50cmFuc2xhdGUoLXBhaW50UmVjdC5sb2NhdGlv
bigpKTsKIAogICAgIE9wdGlvblNldDxQYWludEJlaGF2aW9yPiBvbGRQYWludEJlaGF2aW9yID0g
ZnJhbWVWaWV3LT5wYWludEJlaGF2aW9yKCk7Ci0gICAgT3B0aW9uU2V0PFBhaW50QmVoYXZpb3I+
IHBhaW50QmVoYXZpb3IgPSBvbGRQYWludEJlaGF2aW9yIHwgUGFpbnRCZWhhdmlvcjo6U2VsZWN0
aW9uT25seSB8IFBhaW50QmVoYXZpb3I6OkZsYXR0ZW5Db21wb3NpdGluZ0xheWVycyB8IFBhaW50
QmVoYXZpb3I6OlNuYXBzaG90dGluZzsKKyAgICBPcHRpb25TZXQ8UGFpbnRCZWhhdmlvcj4gcGFp
bnRCZWhhdmlvciA9IG9sZFBhaW50QmVoYXZpb3I7CisgICAgcGFpbnRCZWhhdmlvci5hZGQoeyBQ
YWludEJlaGF2aW9yOjpTZWxlY3Rpb25Pbmx5LCBQYWludEJlaGF2aW9yOjpGbGF0dGVuQ29tcG9z
aXRpbmdMYXllcnMsIFBhaW50QmVoYXZpb3I6OlNuYXBzaG90dGluZyB9KTsKICAgICBpZiAob3B0
aW9ucyAmIFNuYXBzaG90T3B0aW9uc0ZvcmNlQmxhY2tUZXh0KQotICAgICAgICBwYWludEJlaGF2
aW9yIHw9IFBhaW50QmVoYXZpb3I6OkZvcmNlQmxhY2tUZXh0OworICAgICAgICBwYWludEJlaGF2
aW9yLmFkZChQYWludEJlaGF2aW9yOjpGb3JjZUJsYWNrVGV4dCk7CiAgICAgaWYgKG9wdGlvbnMg
JiBTbmFwc2hvdE9wdGlvbnNGb3JjZVdoaXRlVGV4dCkKLSAgICAgICAgcGFpbnRCZWhhdmlvciB8
PSBQYWludEJlaGF2aW9yOjpGb3JjZVdoaXRlVGV4dDsKKyAgICAgICAgcGFpbnRCZWhhdmlvci5h
ZGQoUGFpbnRCZWhhdmlvcjo6Rm9yY2VXaGl0ZVRleHQpOwogCiAgICAgZnJhbWVWaWV3LT5zZXRQ
YWludEJlaGF2aW9yKHBhaW50QmVoYXZpb3IpOwogICAgIG93bmVyRG9jdW1lbnQudXBkYXRlTGF5
b3V0KCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJv
bGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
RmluZENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyMzU1MTQpCisrKyBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2
LDE1ICs1NiwxNSBAQCBXZWJDb3JlOjpGaW5kT3B0aW9ucyBjb3JlKEZpbmRPcHRpb25zIG9wCiB7
CiAgICAgV2ViQ29yZTo6RmluZE9wdGlvbnMgcmVzdWx0OwogICAgIGlmIChvcHRpb25zICYgRmlu
ZE9wdGlvbnNDYXNlSW5zZW5zaXRpdmUpCi0gICAgICAgIHJlc3VsdCB8PSBXZWJDb3JlOjpDYXNl
SW5zZW5zaXRpdmU7CisgICAgICAgIHJlc3VsdC5hZGQoV2ViQ29yZTo6Q2FzZUluc2Vuc2l0aXZl
KTsKICAgICBpZiAob3B0aW9ucyAmIEZpbmRPcHRpb25zQXRXb3JkU3RhcnRzKQotICAgICAgICBy
ZXN1bHQgfD0gV2ViQ29yZTo6QXRXb3JkU3RhcnRzOworICAgICAgICByZXN1bHQuYWRkKFdlYkNv
cmU6OkF0V29yZFN0YXJ0cyk7CiAgICAgaWYgKG9wdGlvbnMgJiBGaW5kT3B0aW9uc1RyZWF0TWVk
aWFsQ2FwaXRhbEFzV29yZFN0YXJ0KQotICAgICAgICByZXN1bHQgfD0gV2ViQ29yZTo6VHJlYXRN
ZWRpYWxDYXBpdGFsQXNXb3JkU3RhcnQ7CisgICAgICAgIHJlc3VsdC5hZGQoV2ViQ29yZTo6VHJl
YXRNZWRpYWxDYXBpdGFsQXNXb3JkU3RhcnQpOwogICAgIGlmIChvcHRpb25zICYgRmluZE9wdGlv
bnNCYWNrd2FyZHMpCi0gICAgICAgIHJlc3VsdCB8PSBXZWJDb3JlOjpCYWNrd2FyZHM7CisgICAg
ICAgIHJlc3VsdC5hZGQoV2ViQ29yZTo6QmFja3dhcmRzKTsKICAgICBpZiAob3B0aW9ucyAmIEZp
bmRPcHRpb25zV3JhcEFyb3VuZCkKLSAgICAgICAgcmVzdWx0IHw9IFdlYkNvcmU6OldyYXBBcm91
bmQ7CisgICAgICAgIHJlc3VsdC5hZGQoV2ViQ29yZTo6V3JhcEFyb3VuZCk7CiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIApAQCAtMjA0LDcgKzIwNCw3IEBAIHZvaWQgRmluZENvbnRyb2xsZXI6OmZp
bmRTdHJpbmcoY29uc3QgU3QKICAgICAvLyB3ZSBuZWVkIHRvIGF2b2lkIHNlbmRpbmcgdGhlIG5v
bi1wYWludGVkIHNlbGVjdGlvbiBjaGFuZ2UgdG8gdGhlIFVJIHByb2Nlc3MKICAgICAvLyBzbyB0
aGF0IGl0IGRvZXMgbm90IGNsZWFyIHRoZSBzZWxlY3Rpb24gb3V0IGZyb20gdW5kZXIgdXMuCiAj
aWYgUExBVEZPUk0oSU9TKQotICAgIGNvcmVPcHRpb25zIHw9IERvTm90UmV2ZWFsU2VsZWN0aW9u
OworICAgIGNvcmVPcHRpb25zLmFkZChEb05vdFJldmVhbFNlbGVjdGlvbik7CiAjZW5kaWYKIAog
ICAgIHdpbGxGaW5kU3RyaW5nKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAyMzU1MTQpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxOC0wOC0zMCAgQW50dGkgS29pdmlzdG8g
IDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVwbGFjZSBPcHRpb25TZXQgfD0gYW5kIC09
IG9wZXJhdG9ycyB3aXRoIGFkZCgpIGFuZCByZW1vdmUoKSBmdW5jdGlvbnMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4OTE2OQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZS5t
bToKKyAgICAgICAgKC1bV2ViRnJhbWUgX2RyYXdSZWN0OmNvbnRlbnRzT25seTpdKToKKyAgICAg
ICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgIChjb3JlT3B0aW9ucyk6CisKIDIwMTgt
MDgtMjkgIE9saXZpYSBCYXJuZXR0ICA8b2Jhcm5ldHRAYXBwbGUuY29tPgogCiAgICAgICAgIElt
cGxlbWVudCB0aGUgV2ViIFNoYXJlIEFQSQpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJGcmFtZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYkZyYW1lLm1tCShyZXZpc2lvbiAyMzU1MTQpCisrKyBTb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCSh3b3JraW5nIGNvcHkpCkBAIC02NDksMTYg
KzY0OSwxNiBAQCAtICh2b2lkKV9kcmF3UmVjdDooTlNSZWN0KXJlY3QgY29udGVudHNPCiAgICAg
ICAgIC8vIEZvciBzdWJmcmFtZXMsIHdlIG5lZWQgdG8gaW5oZXJpdCB0aGUgcGFpbnQgYmVoYXZp
b3IgZnJvbSBvdXIgcGFyZW50CiAgICAgICAgIGlmIChGcmFtZVZpZXcqIHBhcmVudFZpZXcgPSBw
YXJlbnRGcmFtZSA/IHBhcmVudEZyYW1lLT52aWV3KCkgOiBudWxscHRyKSB7CiAgICAgICAgICAg
ICBpZiAocGFyZW50Vmlldy0+cGFpbnRCZWhhdmlvcigpLmNvbnRhaW5zKFBhaW50QmVoYXZpb3I6
OkZsYXR0ZW5Db21wb3NpdGluZ0xheWVycykpCi0gICAgICAgICAgICAgICAgcGFpbnRCZWhhdmlv
ciB8PSBQYWludEJlaGF2aW9yOjpGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnM7CisgICAgICAgICAg
ICAgICAgcGFpbnRCZWhhdmlvci5hZGQoUGFpbnRCZWhhdmlvcjo6RmxhdHRlbkNvbXBvc2l0aW5n
TGF5ZXJzKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKHBhcmVudFZpZXctPnBhaW50
QmVoYXZpb3IoKS5jb250YWlucyhQYWludEJlaGF2aW9yOjpTbmFwc2hvdHRpbmcpKQotICAgICAg
ICAgICAgICAgIHBhaW50QmVoYXZpb3IgfD0gUGFpbnRCZWhhdmlvcjo6U25hcHNob3R0aW5nOwor
ICAgICAgICAgICAgICAgIHBhaW50QmVoYXZpb3IuYWRkKFBhaW50QmVoYXZpb3I6OlNuYXBzaG90
dGluZyk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChwYXJlbnRWaWV3LT5wYWludEJl
aGF2aW9yKCkuY29udGFpbnMoUGFpbnRCZWhhdmlvcjo6VGlsZUZpcnN0UGFpbnQpKQotICAgICAg
ICAgICAgICAgIHBhaW50QmVoYXZpb3IgfD0gUGFpbnRCZWhhdmlvcjo6VGlsZUZpcnN0UGFpbnQ7
CisgICAgICAgICAgICAgICAgcGFpbnRCZWhhdmlvci5hZGQoUGFpbnRCZWhhdmlvcjo6VGlsZUZp
cnN0UGFpbnQpOwogICAgICAgICB9CiAgICAgfSBlbHNlCi0gICAgICAgIHBhaW50QmVoYXZpb3Ig
fD0gW3NlbGYgX3BhaW50QmVoYXZpb3JGb3JEZXN0aW5hdGlvbkNvbnRleHQ6Y3R4XTsKKyAgICAg
ICAgcGFpbnRCZWhhdmlvci5hZGQoW3NlbGYgX3BhaW50QmVoYXZpb3JGb3JEZXN0aW5hdGlvbkNv
bnRleHQ6Y3R4XSk7CiAgICAgICAgIAogICAgIHZpZXctPnNldFBhaW50QmVoYXZpb3IocGFpbnRC
ZWhhdmlvcik7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmll
dy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZp
ZXcubW0JKHJldmlzaW9uIDIzNTUxNCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtNTcxLDE3ICs1NzEsMTcgQEAgRmluZE9w
dGlvbnMgY29yZU9wdGlvbnMoV2ViRmluZE9wdGlvbnMgbwogewogICAgIEZpbmRPcHRpb25zIGZp
bmRPcHRpb25zOwogICAgIGlmIChvcHRpb25zICYgV2ViRmluZE9wdGlvbnNDYXNlSW5zZW5zaXRp
dmUpCi0gICAgICAgIGZpbmRPcHRpb25zIHw9IENhc2VJbnNlbnNpdGl2ZTsKKyAgICAgICAgZmlu
ZE9wdGlvbnMuYWRkKENhc2VJbnNlbnNpdGl2ZSk7CiAgICAgaWYgKG9wdGlvbnMgJiBXZWJGaW5k
T3B0aW9uc0F0V29yZFN0YXJ0cykKLSAgICAgICAgZmluZE9wdGlvbnMgfD0gQXRXb3JkU3RhcnRz
OworICAgICAgICBmaW5kT3B0aW9ucy5hZGQoQXRXb3JkU3RhcnRzKTsKICAgICBpZiAob3B0aW9u
cyAmIFdlYkZpbmRPcHRpb25zVHJlYXRNZWRpYWxDYXBpdGFsQXNXb3JkU3RhcnQpCi0gICAgICAg
IGZpbmRPcHRpb25zIHw9IFRyZWF0TWVkaWFsQ2FwaXRhbEFzV29yZFN0YXJ0OworICAgICAgICBm
aW5kT3B0aW9ucy5hZGQoVHJlYXRNZWRpYWxDYXBpdGFsQXNXb3JkU3RhcnQpOwogICAgIGlmIChv
cHRpb25zICYgV2ViRmluZE9wdGlvbnNCYWNrd2FyZHMpCi0gICAgICAgIGZpbmRPcHRpb25zIHw9
IEJhY2t3YXJkczsKKyAgICAgICAgZmluZE9wdGlvbnMuYWRkKEJhY2t3YXJkcyk7CiAgICAgaWYg
KG9wdGlvbnMgJiBXZWJGaW5kT3B0aW9uc1dyYXBBcm91bmQpCi0gICAgICAgIGZpbmRPcHRpb25z
IHw9IFdyYXBBcm91bmQ7CisgICAgICAgIGZpbmRPcHRpb25zLmFkZChXcmFwQXJvdW5kKTsKICAg
ICBpZiAob3B0aW9ucyAmIFdlYkZpbmRPcHRpb25zU3RhcnRJblNlbGVjdGlvbikKLSAgICAgICAg
ZmluZE9wdGlvbnMgfD0gU3RhcnRJblNlbGVjdGlvbjsKKyAgICAgICAgZmluZE9wdGlvbnMuYWRk
KFN0YXJ0SW5TZWxlY3Rpb24pOwogICAgIHJldHVybiBmaW5kT3B0aW9uczsKIH0KIApJbmRleDog
VG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24g
MjM1NTM4KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMg
QEAKKzIwMTgtMDgtMzEgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgorCisgICAg
ICAgIFJlcGxhY2UgT3B0aW9uU2V0IHw9IGFuZCAtPSBvcGVyYXRvcnMgd2l0aCBhZGQoKSBhbmQg
cmVtb3ZlKCkgZnVuY3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xODkxNjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL09wdGlvblNldC5jcHA6CisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKwogMjAxOC0wOC0zMCAgVGhvbWFzIERlbm5leSAg
PHRkZW5uZXlAYXBwbGUuY29tPgogCiAgICAgICAgIFtXSExTTF0gRml4IGFycmF5IGluZGV4aW5n
IGJlaGF2aW9yCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9PcHRpb25TZXQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL09wdGlvblNl
dC5jcHAJKHJldmlzaW9uIDIzNTUxNCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L09wdGlvblNldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk2LDE2ICs5NiwyOSBAQCBURVNUKFdU
Rl9PcHRpb25TZXQsIE1pbnVzKQogICAgIEVYUEVDVF9UUlVFKChzZXQgLSBzZXQpLmlzRW1wdHko
KSk7CiB9CiAKLVRFU1QoV1RGX09wdGlvblNldCwgTWludXNFcXVhbCkKK1RFU1QoV1RGX09wdGlv
blNldCwgQWRkQW5kUmVtb3ZlKQogewotICAgIE9wdGlvblNldDxFeGFtcGxlRmxhZ3M+IHNldCB7
IEV4YW1wbGVGbGFnczo6QSwgRXhhbXBsZUZsYWdzOjpCLCBFeGFtcGxlRmxhZ3M6OkMgfTsKKyAg
ICBPcHRpb25TZXQ8RXhhbXBsZUZsYWdzPiBzZXQ7CiAKLSAgICBFWFBFQ1RfVFJVRSgoKHNldCAt
PSBFeGFtcGxlRmxhZ3M6OkEpID09IE9wdGlvblNldDxFeGFtcGxlRmxhZ3M+IHsgRXhhbXBsZUZs
YWdzOjpCLCBFeGFtcGxlRmxhZ3M6OkMgfSkpOwotICAgIEVYUEVDVF9UUlVFKChzZXQgPT0gT3B0
aW9uU2V0PEV4YW1wbGVGbGFncz4geyBFeGFtcGxlRmxhZ3M6OkIsIEV4YW1wbGVGbGFnczo6QyB9
KSk7Ci0gICAgRVhQRUNUX1RSVUUoKChzZXQgLT0gRXhhbXBsZUZsYWdzOjpEKSA9PSBPcHRpb25T
ZXQ8RXhhbXBsZUZsYWdzPiB7IEV4YW1wbGVGbGFnczo6QiwgRXhhbXBsZUZsYWdzOjpDIH0pKTsK
LSAgICBFWFBFQ1RfVFJVRSgoc2V0ID09IE9wdGlvblNldDxFeGFtcGxlRmxhZ3M+IHsgRXhhbXBs
ZUZsYWdzOjpCLCBFeGFtcGxlRmxhZ3M6OkMgfSkpOwotICAgIEVYUEVDVF9UUlVFKChzZXQgLT0g
c2V0KS5pc0VtcHR5KCkpOwotICAgIEVYUEVDVF9UUlVFKHNldC5pc0VtcHR5KCkpOworICAgIHNl
dC5hZGQoRXhhbXBsZUZsYWdzOjpBKTsKKyAgICBFWFBFQ1RfVFJVRShzZXQuY29udGFpbnMoRXhh
bXBsZUZsYWdzOjpBKSk7CisgICAgRVhQRUNUX0ZBTFNFKHNldC5jb250YWlucyhFeGFtcGxlRmxh
Z3M6OkIpKTsKKyAgICBFWFBFQ1RfRkFMU0Uoc2V0LmNvbnRhaW5zKEV4YW1wbGVGbGFnczo6Qykp
OworCisgICAgc2V0LmFkZCh7IEV4YW1wbGVGbGFnczo6QiwgRXhhbXBsZUZsYWdzOjpDIH0pOwor
ICAgIEVYUEVDVF9UUlVFKHNldC5jb250YWlucyhFeGFtcGxlRmxhZ3M6OkEpKTsKKyAgICBFWFBF
Q1RfVFJVRShzZXQuY29udGFpbnMoRXhhbXBsZUZsYWdzOjpCKSk7CisgICAgRVhQRUNUX1RSVUUo
c2V0LmNvbnRhaW5zKEV4YW1wbGVGbGFnczo6QykpOworCisgICAgc2V0LnJlbW92ZShFeGFtcGxl
RmxhZ3M6OkIpOworICAgIEVYUEVDVF9UUlVFKHNldC5jb250YWlucyhFeGFtcGxlRmxhZ3M6OkEp
KTsKKyAgICBFWFBFQ1RfRkFMU0Uoc2V0LmNvbnRhaW5zKEV4YW1wbGVGbGFnczo6QikpOworICAg
IEVYUEVDVF9UUlVFKHNldC5jb250YWlucyhFeGFtcGxlRmxhZ3M6OkMpKTsKKworICAgIHNldC5y
ZW1vdmUoeyBFeGFtcGxlRmxhZ3M6OkEsIEV4YW1wbGVGbGFnczo6QyB9KTsKKyAgICBFWFBFQ1Rf
RkFMU0Uoc2V0LmNvbnRhaW5zKEV4YW1wbGVGbGFnczo6QSkpOworICAgIEVYUEVDVF9GQUxTRShz
ZXQuY29udGFpbnMoRXhhbXBsZUZsYWdzOjpCKSk7CisgICAgRVhQRUNUX0ZBTFNFKHNldC5jb250
YWlucyhFeGFtcGxlRmxhZ3M6OkMpKTsKIH0KIAogVEVTVChXVEZfT3B0aW9uU2V0LCBDb250YWlu
c1R3b0ZsYWdzKQpAQCAtMTQxLDE1ICsxNTQsNiBAQCBURVNUKFdURl9PcHRpb25TZXQsIENvbnRh
aW5zVHdvRmxhZ3MzKQogICAgIEVYUEVDVF9GQUxTRShzZXQuY29udGFpbnMoRXhhbXBsZUZsYWdz
OjpDKSk7CiB9CiAKLVRFU1QoV1RGX09wdGlvblNldCwgT3BlcmF0b3JCaXR3aXNlT3IpCi17Ci0g
ICAgT3B0aW9uU2V0PEV4YW1wbGVGbGFncz4gc2V0ID0gRXhhbXBsZUZsYWdzOjpBOwotICAgIHNl
dCB8PSBFeGFtcGxlRmxhZ3M6OkM7Ci0gICAgRVhQRUNUX1RSVUUoc2V0LmNvbnRhaW5zKEV4YW1w
bGVGbGFnczo6QSkpOwotICAgIEVYUEVDVF9GQUxTRShzZXQuY29udGFpbnMoRXhhbXBsZUZsYWdz
OjpCKSk7Ci0gICAgRVhQRUNUX1RSVUUoc2V0LmNvbnRhaW5zKEV4YW1wbGVGbGFnczo6QykpOwot
fQotCiBURVNUKFdURl9PcHRpb25TZXQsIEVtcHR5T3B0aW9uU2V0VG9SYXdWYWx1ZVRvT3B0aW9u
U2V0KQogewogICAgIE9wdGlvblNldDxFeGFtcGxlRmxhZ3M+IHNldDsKQEAgLTMwMiwxMCArMzA2
LDEwIEBAIFRFU1QoV1RGX09wdGlvblNldCwgTmV4dEl0ZW1BZnRlckxhcmdlc3QKIFRFU1QoV1RG
X09wdGlvblNldCwgSXRlcmF0aW9uT3JkZXJUaGVTYW1lUmVnYXJkbGVzc09mSW5zZXJ0aW9uT3Jk
ZXIpCiB7CiAgICAgT3B0aW9uU2V0PEV4YW1wbGVGbGFncz4gc2V0MSA9IEV4YW1wbGVGbGFnczo6
QzsKLSAgICBzZXQxIHw9IEV4YW1wbGVGbGFnczo6QTsKKyAgICBzZXQxLmFkZChFeGFtcGxlRmxh
Z3M6OkEpOwogCiAgICAgT3B0aW9uU2V0PEV4YW1wbGVGbGFncz4gc2V0MiA9IEV4YW1wbGVGbGFn
czo6QTsKLSAgICBzZXQyIHw9IEV4YW1wbGVGbGFnczo6QzsKKyAgICBzZXQyLmFkZChFeGFtcGxl
RmxhZ3M6OkMpOwogCiAgICAgT3B0aW9uU2V0PEV4YW1wbGVGbGFncz46Oml0ZXJhdG9yIGl0MSA9
IHNldDEuYmVnaW4oKTsKICAgICBPcHRpb25TZXQ8RXhhbXBsZUZsYWdzPjo6aXRlcmF0b3IgaXQy
ID0gc2V0Mi5iZWdpbigpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>348622</attachid>
            <date>2018-08-31 02:06:28 -0700</date>
            <delta_ts>2018-08-31 02:53:59 -0700</delta_ts>
            <desc>patch</desc>
            <filename>optionset-add-remove-4.patch</filename>
            <type>text/plain</type>
            <size>106991</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyMzU1MzkpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDE4LTA4LTMxICBBbnR0aSBLb2l2aXN0byAgPGFu
dHRpQGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIE9wdGlvblNldCB8PSBhbmQgLT0gb3Bl
cmF0b3JzIHdpdGggYWRkKCkgYW5kIHJlbW92ZSgpIGZ1bmN0aW9ucworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg5MTY5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wcm92ZSBjb2RlIHJlYWRhYmlsaXR5
LgorCisgICAgICAgICogd3RmL09wdGlvblNldC5oOgorICAgICAgICAoV1RGOjpPcHRpb25TZXQ6
OmFkZCk6CisgICAgICAgIChXVEY6Ok9wdGlvblNldDo6cmVtb3ZlKToKKyAgICAgICAgKFdURjo6
T3B0aW9uU2V0OjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdURjo6T3B0aW9uU2V0OjpvcGVyYXRv
ciE9KToKKyAgICAgICAgKFdURjo6T3B0aW9uU2V0OjpvcGVyYXRvcnw9KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdURjo6T3B0aW9uU2V0OjpvcGVyYXRvci09KTogRGVsZXRlZC4KKyAgICAgICAgKiB3
dGYvUHJvY2Vzc1ByaXZpbGVnZS5jcHA6CisgICAgICAgIChXVEY6OmFkZFByb2Nlc3NQcml2aWxl
Z2UpOgorICAgICAgICAoV1RGOjpyZW1vdmVQcm9jZXNzUHJpdmlsZWdlKToKKwogMjAxOC0wOC0z
MCAgRG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgogCiAgICAgICAgIFtDTWFr
ZV0gUmVwbGFjZSBBVkZvdW5kYXRpb25TdXBwb3J0LnB5IHVzaW5nIENNYWtlCkluZGV4OiBTb3Vy
Y2UvV1RGL3d0Zi9PcHRpb25TZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9PcHRp
b25TZXQuaAkocmV2aXNpb24gMjM1NTM5KQorKysgU291cmNlL1dURi93dGYvT3B0aW9uU2V0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTExMSwyNiArMTExLDI0IEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuICgqdGhpcyAmIG9wdGlvblNldCkgPT0gb3B0aW9uU2V0OwogICAgIH0KIAotICAgIGNvbnN0
ZXhwciBmcmllbmQgYm9vbCBvcGVyYXRvcj09KE9wdGlvblNldCBsaHMsIE9wdGlvblNldCByaHMp
CisgICAgY29uc3RleHByIHZvaWQgYWRkKE9wdGlvblNldCBvcHRpb25TZXQpCiAgICAgewotICAg
ICAgICByZXR1cm4gbGhzLm1fc3RvcmFnZSA9PSByaHMubV9zdG9yYWdlOworICAgICAgICBtX3N0
b3JhZ2UgfD0gb3B0aW9uU2V0Lm1fc3RvcmFnZTsKICAgICB9CiAKLSAgICBjb25zdGV4cHIgZnJp
ZW5kIGJvb2wgb3BlcmF0b3IhPShPcHRpb25TZXQgbGhzLCBPcHRpb25TZXQgcmhzKQorICAgIGNv
bnN0ZXhwciB2b2lkIHJlbW92ZShPcHRpb25TZXQgb3B0aW9uU2V0KQogICAgIHsKLSAgICAgICAg
cmV0dXJuIGxocy5tX3N0b3JhZ2UgIT0gcmhzLm1fc3RvcmFnZTsKKyAgICAgICAgbV9zdG9yYWdl
ICY9IH5vcHRpb25TZXQubV9zdG9yYWdlOwogICAgIH0KIAotICAgIGZyaWVuZCBPcHRpb25TZXQm
IG9wZXJhdG9yfD0oT3B0aW9uU2V0JiBsaHMsIE9wdGlvblNldCByaHMpCisgICAgY29uc3RleHBy
IGZyaWVuZCBib29sIG9wZXJhdG9yPT0oT3B0aW9uU2V0IGxocywgT3B0aW9uU2V0IHJocykKICAg
ICB7Ci0gICAgICAgIGxocy5tX3N0b3JhZ2UgfD0gcmhzLm1fc3RvcmFnZTsKLSAgICAgICAgcmV0
dXJuIGxoczsKKyAgICAgICAgcmV0dXJuIGxocy5tX3N0b3JhZ2UgPT0gcmhzLm1fc3RvcmFnZTsK
ICAgICB9CiAKLSAgICBmcmllbmQgT3B0aW9uU2V0JiBvcGVyYXRvci09KE9wdGlvblNldCYgbGhz
LCBPcHRpb25TZXQgcmhzKQorICAgIGNvbnN0ZXhwciBmcmllbmQgYm9vbCBvcGVyYXRvciE9KE9w
dGlvblNldCBsaHMsIE9wdGlvblNldCByaHMpCiAgICAgewotICAgICAgICBsaHMubV9zdG9yYWdl
ICY9IH5yaHMubV9zdG9yYWdlOwotICAgICAgICByZXR1cm4gbGhzOworICAgICAgICByZXR1cm4g
bGhzLm1fc3RvcmFnZSAhPSByaHMubV9zdG9yYWdlOwogICAgIH0KIAogICAgIGNvbnN0ZXhwciBm
cmllbmQgT3B0aW9uU2V0IG9wZXJhdG9yfChPcHRpb25TZXQgbGhzLCBPcHRpb25TZXQgcmhzKQpJ
bmRleDogU291cmNlL1dURi93dGYvUHJvY2Vzc1ByaXZpbGVnZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dURi93dGYvUHJvY2Vzc1ByaXZpbGVnZS5jcHAJKHJldmlzaW9uIDIzNTUzOSkKKysr
IFNvdXJjZS9XVEYvd3RmL1Byb2Nlc3NQcml2aWxlZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
NywxMiArNTcsMTIgQEAgYm9vbCBoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZwog
CiB2b2lkIGFkZFByb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZSBwcml2aWxlZ2UpCiB7
Ci0gICAgcHJvY2Vzc1ByaXZpbGVnZXMoKSB8PSBwcml2aWxlZ2U7CisgICAgcHJvY2Vzc1ByaXZp
bGVnZXMoKS5hZGQocHJpdmlsZWdlKTsKIH0KIAogdm9pZCByZW1vdmVQcm9jZXNzUHJpdmlsZWdl
KFByb2Nlc3NQcml2aWxlZ2UgcHJpdmlsZWdlKQogewotICAgIHByb2Nlc3NQcml2aWxlZ2VzKCkg
PSBwcm9jZXNzUHJpdmlsZWdlcygpIC0gcHJpdmlsZWdlOworICAgIHByb2Nlc3NQcml2aWxlZ2Vz
KCkucmVtb3ZlKHByaXZpbGVnZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdURgpJbmRleDogU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkocmV2aXNpb24gMjM1NTM5KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTE5IEBACisyMDE4LTA4LTMxICBBbnR0aSBLb2l2aXN0byAg
PGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIE9wdGlvblNldCB8PSBhbmQgLT0g
b3BlcmF0b3JzIHdpdGggYWRkKCkgYW5kIHJlbW92ZSgpIGZ1bmN0aW9ucworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg5MTY5CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVj
dDo6cmFuZ2VPZlN0cmluZ0Nsb3Nlc3RUb1JhbmdlSW5EaXJlY3Rpb24gY29uc3QpOgorICAgICAg
ICAqIGNzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRleHREZWNvcmF0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRleHRFbXBoYXNpc1Bvc2l0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRleHRVbmRl
cmxpbmVQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6
OmNvbnZlcnRUZXh0RGVjb3JhdGlvblNraXApOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWls
ZGVyQ29udmVydGVyOjpjb252ZXJ0U3BlYWtBcyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1
aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRIYW5naW5nUHVuY3R1YXRpb24pOgorICAgICAgICAqIGNz
cy9wYXJzZXIvQ1NTUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFy
c2VTeXN0ZW1Db2xvcik6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50OjpzdHlsZUNvbG9yT3B0aW9ucyBjb25zdCk6CisgICAgICAgICogZG9t
L0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dE1hcmtlckNvbnRyb2xsZXI6OmFkZE1hcmtlcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dE1hcmtlckNvbnRyb2xsZXI6OnJlbW92ZU1hcmtlcnMpOgorICAgICAgICAqIGRvbS9TY3JpcHRl
ZEFuaW1hdGlvbkNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0ZWRBbmlt
YXRpb25Db250cm9sbGVyOjphZGRUaHJvdHRsaW5nUmVhc29uKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcjo6cmVtb3ZlVGhyb3R0bGluZ1JlYXNvbik6Cisg
ICAgICAgICogZG9tL1NlY3VyaXR5Q29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJp
dHlDb250ZXh0OjpzZXRGb3VuZE1peGVkQ29udGVudCk6CisgICAgICAgICogZG9tL1VJRXZlbnRX
aXRoS2V5U3RhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VUlFdmVudFdpdGhLZXlTdGF0ZTo6
bW9kaWZpZXJzRnJvbUluaXRpYWxpemVyKToKKyAgICAgICAgKFdlYkNvcmU6OlVJRXZlbnRXaXRo
S2V5U3RhdGU6OnNldE1vZGlmaWVyS2V5cyk6CisgICAgICAgICogZG9tL1VzZXJBY3Rpb25FbGVt
ZW50U2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJBY3Rpb25FbGVtZW50U2V0OjpzZXRG
bGFncyk6CisgICAgICAgICogZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDb21wb3NpdGVFZGl0Q29tbWFuZDo6bW92ZVBhcmFncmFwaHMpOgorICAg
ICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cmVw
bGFjZVNlbGVjdGlvbldpdGhGcmFnbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmFw
cGxpZWRFZGl0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6bWFya01pc3NwZWxsaW5n
c0FmdGVyVHlwaW5nVG9Xb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6bWFya01pc3Nw
ZWxsaW5nc0FuZEJhZEdyYW1tYXIpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpyZXNvbHZl
VGV4dENoZWNraW5nVHlwZU1hc2spOgorICAgICAgICAqIGVkaXRpbmcvRnJhbWVTZWxlY3Rpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246Om1vdmVXaXRob3V0VmFsaWRh
dGlvblRvKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpzZXRTZWxlY3RlZFJh
bmdlKToKKyAgICAgICAgKiBlZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmg6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZVNlbGVjdGlvbjo6ZGVmYXVsdFNldFNlbGVjdGlvbk9wdGlvbnMpOgorICAgICAg
ICAqIGVkaXRpbmcvTW92ZVNlbGVjdGlvbkNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TW92ZVNlbGVjdGlvbkNvbW1hbmQ6OmRvQXBwbHkpOgorICAgICAgICAqIGVkaXRpbmcvU3BlbGxD
aGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWxsQ2hlY2tlcjo6ZGlkQ2hlY2tTdWNj
ZWVkKToKKyAgICAgICAgKiBlZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0Q2hlY2tpbmdIZWxwZXI6OmZpbmRGaXJzdE1pc3NwZWxsaW5nT3JCYWRH
cmFtbWFyKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDaGVja2luZ0hlbHBlcjo6Z3Vlc3Nlc0Zv
ck1pc3NwZWxsZWRPclVuZ3JhbW1hdGljYWxSYW5nZSBjb25zdCk6CisgICAgICAgICogZWRpdGlu
Zy9UZXh0SXRlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VhcmNoQnVmZmVyOjpTZWFy
Y2hCdWZmZXIpOgorICAgICAgICAqIGh0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTEFuY2hvckVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OnJlbG9hZCk6CisgICAgICAgICogcGFnZS9Db250ZXh0
TWVudUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVDb250cm9s
bGVyOjpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZCk6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpmaW5kIGNvbnN0KToKKyAgICAgICAg
KiBwYWdlL0RyYWdDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9s
bGVyOjpjb25jbHVkZUVkaXREcmFnKToKKyAgICAgICAgKiBwYWdlL0ZyYW1lU25hcHNob3R0aW5n
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNuYXBzaG90RnJhbWVSZWN0V2l0aENsaXApOgorICAg
ICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnVwZGF0ZUxheWVy
UG9zaXRpb25GbGFncyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OndpbGxQYWludENv
bnRlbnRzKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFn
ZTo6c2V0SXNWaXNpYmxlKToKKyAgICAgICAgKiBwYWdlL1BlcmZvcm1hbmNlT2JzZXJ2ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybWFuY2VPYnNlcnZlcjo6b2JzZXJ2ZSk6CisgICAg
ICAgICogcGFnZS9UZXh0SW5kaWNhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRJbmRp
Y2F0b3I6OmNyZWF0ZVdpdGhSYW5nZSk6CisgICAgICAgICogcGFnZS9XaW5kb3dGZWF0dXJlcy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZURpc2FibGVkQWRhcHRhdGlvbnMpOgorICAgICAg
ICAqIHBhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5oOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGVudFNlY3VyaXR5UG9saWN5OjphZGRIYXNoQWxnb3JpdGhtc0ZvcklubGluZVNjcmlwdHMp
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5OjphZGRIYXNoQWxnb3Jp
dGhtc0ZvcklubGluZVN0eWxlc2hlZXRzKToKKyAgICAgICAgKiBwYWdlL2NzcC9Db250ZW50U2Vj
dXJpdHlQb2xpY3lTb3VyY2VMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1
cml0eVBvbGljeVNvdXJjZUxpc3Q6OnBhcnNlSGFzaFNvdXJjZSk6CisgICAgICAgICogcGxhdGZv
cm0vUGxhdGZvcm1FdmVudC5oOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6UGxh
dGZvcm1FdmVudCk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1BsYXRmb3JtRXZlbnRGYWN0b3J5
SU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6bW9kaWZpZXJzRm9yRXZlbnQpOgorICAgICAgICAq
IHBsYXRmb3JtL21hYy9QbGF0Zm9ybUV2ZW50RmFjdG9yeU1hYy5tbToKKyAgICAgICAgKFdlYkNv
cmU6Om1vZGlmaWVyc0ZvckV2ZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnVwZGF0ZUxheWVyUG9zaXRpb25z
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjp1cGRhdGVMYXllclBvc2l0aW9uc0Fm
dGVyU2Nyb2xsKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWludExheWVyKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWludExheWVyQ29udGVudHNBbmRSZWZs
ZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWludExheWVyQ29udGVu
dHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50Rm9yZWdyb3VuZEZvckZy
YWdtZW50cyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnBhaW50SW50b0xheWVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6cGFpbnRDb250ZW50cyk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlYXNvbnNGb3JDb21wb3NpdGluZyBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZVNjcm9sbENv
b3JkaW5hdGVkU3RhdHVzKToKKyAgICAgICAgKiByZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWlu
dGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbGxlY3RTdHlsZXNGb3JSZW5kZXJlcik6Cisg
ICAgICAgICogcmVuZGVyaW5nL1RleHRQYWludFN0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNvbXB1dGVUZXh0UGFpbnRTdHlsZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRl
clN0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpjaGFuZ2VSZXF1aXJl
c0xheW91dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Y2hhbmdlUmVx
dWlyZXNMYXllclJlcGFpbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6
OmNoYW5nZVJlcXVpcmVzUmVwYWludCBjb25zdCk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5h
bHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VGaW5kT3B0aW9ucyk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnRlcm5hbHM6OmZvcmNlUmVsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVy
bmFsczo6c2V0UGFnZVZpc2liaWxpdHkpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpz
ZXRQYWdlSXNGb2N1c2VkQW5kQWN0aXZlKToKKwogMjAxOC0wOC0zMSAgRnJlZGVyaWMgV2FuZyAg
PGZ3YW5nQGlnYWxpYS5jb20+CiAKICAgICAgICAgQnVnIDE4MjA1MyAtIFtDU1NPTSBWaWV3XSBJ
bXBsZW1lbnQgc3RhbmRhcmQgYmVoYXZpb3IgZm9yIHNjcm9sbGluZ0VsZW1lbnQKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0
LmNwcAkocmV2aXNpb24gMjM1NTM5KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzUxLDkgKzc1MSw5IEBA
IFJlZlB0cjxSYW5nZT4gQWNjZXNzaWJpbGl0eU9iamVjdDo6cmFuZ2UKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgCiAgICAgYm9vbCBpc0JhY2t3YXJkU2VhcmNoID0gc2VhcmNoRGlyZWN0
aW9uID09IEFjY2Vzc2liaWxpdHlTZWFyY2hEaXJlY3Rpb246OlByZXZpb3VzOwotICAgIEZpbmRP
cHRpb25zIGZpbmRPcHRpb25zIHsgeyBBdFdvcmRTdGFydHMsIEF0V29yZEVuZHMsIENhc2VJbnNl
bnNpdGl2ZSwgU3RhcnRJblNlbGVjdGlvbiB9IH07CisgICAgRmluZE9wdGlvbnMgZmluZE9wdGlv
bnMgeyBBdFdvcmRTdGFydHMsIEF0V29yZEVuZHMsIENhc2VJbnNlbnNpdGl2ZSwgU3RhcnRJblNl
bGVjdGlvbiB9OwogICAgIGlmIChpc0JhY2t3YXJkU2VhcmNoKQotICAgICAgICBmaW5kT3B0aW9u
cyB8PSBCYWNrd2FyZHM7CisgICAgICAgIGZpbmRPcHRpb25zLmFkZChCYWNrd2FyZHMpOwogICAg
IAogICAgIFJlZlB0cjxSYW5nZT4gY2xvc2VzdFN0cmluZ1JhbmdlID0gbnVsbHB0cjsKICAgICBm
b3IgKGNvbnN0IGF1dG8mIHNlYXJjaFN0cmluZyA6IHNlYXJjaFN0cmluZ3MpIHsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgJKHJldmlzaW9uIDIzNTUz
OSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzk0LDcgKzM5NCw3IEBAIGlubGluZSBPcHRpb25TZXQ8VGV4dERlY29yYXRp
b24+IFN0eWxlQnUKICAgICBhdXRvIHJlc3VsdCA9IFJlbmRlclN0eWxlOjppbml0aWFsVGV4dERl
Y29yYXRpb24oKTsKICAgICBpZiAoaXM8Q1NTVmFsdWVMaXN0Pih2YWx1ZSkpIHsKICAgICAgICAg
Zm9yIChhdXRvJiBjdXJyZW50VmFsdWUgOiBkb3duY2FzdDxDU1NWYWx1ZUxpc3Q+KHZhbHVlKSkK
LSAgICAgICAgICAgIHJlc3VsdCB8PSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oY3VycmVu
dFZhbHVlLmdldCgpKTsKKyAgICAgICAgICAgIHJlc3VsdC5hZGQoZG93bmNhc3Q8Q1NTUHJpbWl0
aXZlVmFsdWU+KGN1cnJlbnRWYWx1ZS5nZXQoKSkpOwogICAgIH0KICAgICByZXR1cm4gcmVzdWx0
OwogfQpAQCAtNDk4LDcgKzQ5OCw3IEBAIGlubGluZSBPcHRpb25TZXQ8VGV4dEVtcGhhc2lzUG9z
aXRpb24+IFMKIAogICAgIE9wdGlvblNldDxUZXh0RW1waGFzaXNQb3NpdGlvbj4gcG9zaXRpb247
CiAgICAgZm9yIChhdXRvJiBjdXJyZW50VmFsdWUgOiBkb3duY2FzdDxDU1NWYWx1ZUxpc3Q+KHZh
bHVlKSkKLSAgICAgICAgcG9zaXRpb24gfD0gdmFsdWVUb0VtcGhhc2lzUG9zaXRpb24oZG93bmNh
c3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KGN1cnJlbnRWYWx1ZS5nZXQoKSkpOworICAgICAgICBwb3Np
dGlvbi5hZGQodmFsdWVUb0VtcGhhc2lzUG9zaXRpb24oZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFs
dWU+KGN1cnJlbnRWYWx1ZS5nZXQoKSkpKTsKICAgICByZXR1cm4gcG9zaXRpb247CiB9CiAKQEAg
LTY0NSw3ICs2NDUsNyBAQCBpbmxpbmUgT3B0aW9uU2V0PFRleHRVbmRlcmxpbmVQb3NpdGlvbj4g
CiAKICAgICBPcHRpb25TZXQ8VGV4dFVuZGVybGluZVBvc2l0aW9uPiBjb21iaW5lZFBvc2l0aW9u
OwogICAgIGZvciAoYXV0byYgY3VycmVudFZhbHVlIDogZG93bmNhc3Q8Q1NTVmFsdWVMaXN0Pih2
YWx1ZSkpCi0gICAgICAgIGNvbWJpbmVkUG9zaXRpb24gfD0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZl
VmFsdWU+KGN1cnJlbnRWYWx1ZS5nZXQoKSk7CisgICAgICAgIGNvbWJpbmVkUG9zaXRpb24uYWRk
KGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPihjdXJyZW50VmFsdWUuZ2V0KCkpKTsKICAgICBy
ZXR1cm4gY29tYmluZWRQb3NpdGlvbjsKIH0KIApAQCAtNzUzLDcgKzc1Myw3IEBAIGlubGluZSBP
cHRpb25TZXQ8VGV4dERlY29yYXRpb25Ta2lwPiBTdHkKIAogICAgIE9wdGlvblNldDxUZXh0RGVj
b3JhdGlvblNraXA+IHNraXA7CiAgICAgZm9yIChhdXRvJiBjdXJyZW50VmFsdWUgOiBkb3duY2Fz
dDxDU1NWYWx1ZUxpc3Q+KHZhbHVlKSkKLSAgICAgICAgc2tpcCB8PSB2YWx1ZVRvRGVjb3JhdGlv
blNraXAoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KGN1cnJlbnRWYWx1ZS5nZXQoKSkpOwor
ICAgICAgICBza2lwLmFkZCh2YWx1ZVRvRGVjb3JhdGlvblNraXAoZG93bmNhc3Q8Q1NTUHJpbWl0
aXZlVmFsdWU+KGN1cnJlbnRWYWx1ZS5nZXQoKSkpKTsKICAgICByZXR1cm4gc2tpcDsKIH0KIApA
QCAtMTUwNCw3ICsxNTA0LDcgQEAgaW5saW5lIE9wdGlvblNldDxTcGVha0FzPiBTdHlsZUJ1aWxk
ZXJDbwogICAgIGF1dG8gcmVzdWx0ID0gUmVuZGVyU3R5bGU6OmluaXRpYWxTcGVha0FzKCk7CiAg
ICAgaWYgKGlzPENTU1ZhbHVlTGlzdD4odmFsdWUpKSB7CiAgICAgICAgIGZvciAoYXV0byYgY3Vy
cmVudFZhbHVlIDogZG93bmNhc3Q8Q1NTVmFsdWVMaXN0Pih2YWx1ZSkpCi0gICAgICAgICAgICBy
ZXN1bHQgfD0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KGN1cnJlbnRWYWx1ZS5nZXQoKSk7
CisgICAgICAgICAgICByZXN1bHQuYWRkKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPihjdXJy
ZW50VmFsdWUuZ2V0KCkpKTsKICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTE1MTQs
NyArMTUxNCw3IEBAIGlubGluZSBPcHRpb25TZXQ8SGFuZ2luZ1B1bmN0dWF0aW9uPiBTdHkKICAg
ICBhdXRvIHJlc3VsdCA9IFJlbmRlclN0eWxlOjppbml0aWFsSGFuZ2luZ1B1bmN0dWF0aW9uKCk7
CiAgICAgaWYgKGlzPENTU1ZhbHVlTGlzdD4odmFsdWUpKSB7CiAgICAgICAgIGZvciAoYXV0byYg
Y3VycmVudFZhbHVlIDogZG93bmNhc3Q8Q1NTVmFsdWVMaXN0Pih2YWx1ZSkpCi0gICAgICAgICAg
ICByZXN1bHQgfD0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KGN1cnJlbnRWYWx1ZS5nZXQo
KSk7CisgICAgICAgICAgICByZXN1bHQuYWRkKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPihj
dXJyZW50VmFsdWUuZ2V0KCkpKTsKICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlci5jcHAJKHJldmlzaW9uIDIzNTUzOSkK
KysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTE5LDcgKzExOSw3IEBAIENvbG9yIENTU1BhcnNlcjo6cGFyc2VTeXN0ZW1Db2xvcihj
b25zdCAKIAogICAgIE9wdGlvblNldDxTdHlsZUNvbG9yOjpPcHRpb25zPiBvcHRpb25zOwogICAg
IGlmIChjb250ZXh0ICYmIGNvbnRleHQtPnVzZVN5c3RlbUFwcGVhcmFuY2UpCi0gICAgICAgIG9w
dGlvbnMgfD0gU3R5bGVDb2xvcjo6T3B0aW9uczo6VXNlU3lzdGVtQXBwZWFyYW5jZTsKKyAgICAg
ICAgb3B0aW9ucy5hZGQoU3R5bGVDb2xvcjo6T3B0aW9uczo6VXNlU3lzdGVtQXBwZWFyYW5jZSk7
CiAgICAgcmV0dXJuIFJlbmRlclRoZW1lOjpzaW5nbGV0b24oKS5zeXN0ZW1Db2xvcihpZCwgb3B0
aW9ucyk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gMjM1NTM5
KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NzE3OCw5ICs3MTc4LDkgQEAgT3B0aW9uU2V0PFN0eWxlQ29sb3I6Ok9wdGlvbnM+IERvY3VtZW50
OgogewogICAgIE9wdGlvblNldDxTdHlsZUNvbG9yOjpPcHRpb25zPiBvcHRpb25zOwogICAgIGlm
ICh1c2VTeXN0ZW1BcHBlYXJhbmNlKCkpCi0gICAgICAgIG9wdGlvbnMgfD0gU3R5bGVDb2xvcjo6
T3B0aW9uczo6VXNlU3lzdGVtQXBwZWFyYW5jZTsKKyAgICAgICAgb3B0aW9ucy5hZGQoU3R5bGVD
b2xvcjo6T3B0aW9uczo6VXNlU3lzdGVtQXBwZWFyYW5jZSk7CiAgICAgaWYgKHVzZURhcmtBcHBl
YXJhbmNlKCkpCi0gICAgICAgIG9wdGlvbnMgfD0gU3R5bGVDb2xvcjo6T3B0aW9uczo6VXNlRGFy
a0FwcGVhcmFuY2U7CisgICAgICAgIG9wdGlvbnMuYWRkKFN0eWxlQ29sb3I6Ok9wdGlvbnM6OlVz
ZURhcmtBcHBlYXJhbmNlKTsKICAgICByZXR1cm4gb3B0aW9uczsKIH0KIApJbmRleDogU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAJKHJldmlzaW9u
IDIzNTUzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzEsNyArMzMxLDcgQEAgdm9pZCBEb2N1bWVudE1hcmtl
ckNvbnRyb2xsZXI6OmFkZE1hcmtlcgogICAgICAgICAgICAgZG93bmNhc3Q8UmVuZGVyQmxvY2tG
bG93PigqcmVuZGVyZXIpLmVuc3VyZUxpbmVCb3hlcygpOwogICAgIH0KIAotICAgIG1fcG9zc2li
bHlFeGlzdGluZ01hcmtlclR5cGVzIHw9IG5ld01hcmtlci50eXBlKCk7CisgICAgbV9wb3NzaWJs
eUV4aXN0aW5nTWFya2VyVHlwZXMuYWRkKG5ld01hcmtlci50eXBlKCkpOwogCiAgICAgc3RkOjp1
bmlxdWVfcHRyPE1hcmtlckxpc3Q+JiBsaXN0ID0gbV9tYXJrZXJzLmFkZChub2RlLCBudWxscHRy
KS5pdGVyYXRvci0+dmFsdWU7CiAKQEAgLTU4Nyw3ICs1ODcsNyBAQCB2b2lkIERvY3VtZW50TWFy
a2VyQ29udHJvbGxlcjo6cmVtb3ZlTWFyCiAgICAgICAgICAgICByZW1vdmVNYXJrZXJzRnJvbUxp
c3QoaXRlcmF0b3IsIG1hcmtlclR5cGVzKTsKICAgICB9CiAKLSAgICBtX3Bvc3NpYmx5RXhpc3Rp
bmdNYXJrZXJUeXBlcyAtPSBtYXJrZXJUeXBlczsKKyAgICBtX3Bvc3NpYmx5RXhpc3RpbmdNYXJr
ZXJUeXBlcy5yZW1vdmUobWFya2VyVHlwZXMpOwogfQogCiB2b2lkIERvY3VtZW50TWFya2VyQ29u
dHJvbGxlcjo6cmVtb3ZlTWFya2Vyc0Zyb21MaXN0KE1hcmtlck1hcDo6aXRlcmF0b3IgaXRlcmF0
b3IsIE9wdGlvblNldDxEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZT4gbWFya2VyVHlwZXMpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0ZWRBbmltYXRpb25Db250cm9s
bGVyLmNwcAkocmV2aXNpb24gMjM1NTM5KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdGVk
QW5pbWF0aW9uQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMSw3ICsxMjEsNyBA
QCB2b2lkIFNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcjo6YWRkVGhyCiAgICAgaWYgKG1fdGhy
b3R0bGluZ1JlYXNvbnMuY29udGFpbnMocmVhc29uKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
bV90aHJvdHRsaW5nUmVhc29ucyB8PSByZWFzb247CisgICAgbV90aHJvdHRsaW5nUmVhc29ucy5h
ZGQocmVhc29uKTsKIAogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImFkZFRocm90dGxpbmdS
ZWFzb24oJXMpIC0+ICVzIiwgdGhyb3R0bGluZ1JlYXNvblRvU3RyaW5nKHJlYXNvbiksIHRocm90
dGxpbmdSZWFzb25zVG9TdHJpbmcobV90aHJvdHRsaW5nUmVhc29ucykudXRmOCgpLmRhdGEoKSk7
CiAKQEAgLTE0MCw3ICsxNDAsNyBAQCB2b2lkIFNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcjo6
cmVtb3ZlCiAgICAgaWYgKCFtX3Rocm90dGxpbmdSZWFzb25zLmNvbnRhaW5zKHJlYXNvbikpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIG1fdGhyb3R0bGluZ1JlYXNvbnMgLT0gcmVhc29uOworICAg
IG1fdGhyb3R0bGluZ1JlYXNvbnMucmVtb3ZlKHJlYXNvbik7CiAKICAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKCJyZW1vdmVUaHJvdHRsaW5nUmVhc29uKCVzKSAtPiAlcyIsIHRocm90dGxpbmdS
ZWFzb25Ub1N0cmluZyhyZWFzb24pLCB0aHJvdHRsaW5nUmVhc29uc1RvU3RyaW5nKG1fdGhyb3R0
bGluZ1JlYXNvbnMpLnV0ZjgoKS5kYXRhKCkpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20v
U2VjdXJpdHlDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1NlY3Vy
aXR5Q29udGV4dC5oCShyZXZpc2lvbiAyMzU1MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vU2Vj
dXJpdHlDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTg5LDcgKzg5LDcgQEAgcHVibGljOgog
ICAgIH07CiAKICAgICBjb25zdCBPcHRpb25TZXQ8TWl4ZWRDb250ZW50VHlwZT4mIGZvdW5kTWl4
ZWRDb250ZW50KCkgY29uc3QgeyByZXR1cm4gbV9taXhlZENvbnRlbnRUeXBlczsgfQotICAgIHZv
aWQgc2V0Rm91bmRNaXhlZENvbnRlbnQoTWl4ZWRDb250ZW50VHlwZSB0eXBlKSB7IG1fbWl4ZWRD
b250ZW50VHlwZXMgfD0gdHlwZTsgfQorICAgIHZvaWQgc2V0Rm91bmRNaXhlZENvbnRlbnQoTWl4
ZWRDb250ZW50VHlwZSB0eXBlKSB7IG1fbWl4ZWRDb250ZW50VHlwZXMuYWRkKHR5cGUpOyB9CiAg
ICAgYm9vbCBnZW9sb2NhdGlvbkFjY2Vzc2VkKCkgY29uc3QgeyByZXR1cm4gbV9nZW9sb2NhdGlv
bkFjY2Vzc2VkOyB9CiAgICAgdm9pZCBzZXRHZW9sb2NhdGlvbkFjY2Vzc2VkKCkgeyBtX2dlb2xv
Y2F0aW9uQWNjZXNzZWQgPSB0cnVlOyB9CiAgICAgYm9vbCBzZWN1cmVDb29raWVzQWNjZXNzZWQo
KSBjb25zdCB7IHJldHVybiBtX3NlY3VyZUNvb2tpZXNBY2Nlc3NlZDsgfQpJbmRleDogU291cmNl
L1dlYkNvcmUvZG9tL1VJRXZlbnRXaXRoS2V5U3RhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2RvbS9VSUV2ZW50V2l0aEtleVN0YXRlLmNwcAkocmV2aXNpb24gMjM1NTM5KQor
KysgU291cmNlL1dlYkNvcmUvZG9tL1VJRXZlbnRXaXRoS2V5U3RhdGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNywxNyArMjcsMTcgQEAgYXV0byBVSUV2ZW50V2l0aEtleVN0YXRlOjptb2RpZmll
cnNGcm9tSQogewogICAgIE9wdGlvblNldDxNb2RpZmllcj4gcmVzdWx0OwogICAgIGlmIChpbml0
aWFsaXplci5jdHJsS2V5KQotICAgICAgICByZXN1bHQgfD0gTW9kaWZpZXI6OkN0cmxLZXk7Cisg
ICAgICAgIHJlc3VsdC5hZGQoTW9kaWZpZXI6OkN0cmxLZXkpOwogICAgIGlmIChpbml0aWFsaXpl
ci5hbHRLZXkpCi0gICAgICAgIHJlc3VsdCB8PSBNb2RpZmllcjo6QWx0S2V5OworICAgICAgICBy
ZXN1bHQuYWRkKE1vZGlmaWVyOjpBbHRLZXkpOwogICAgIGlmIChpbml0aWFsaXplci5zaGlmdEtl
eSkKLSAgICAgICAgcmVzdWx0IHw9IE1vZGlmaWVyOjpTaGlmdEtleTsKKyAgICAgICAgcmVzdWx0
LmFkZChNb2RpZmllcjo6U2hpZnRLZXkpOwogICAgIGlmIChpbml0aWFsaXplci5tZXRhS2V5KQot
ICAgICAgICByZXN1bHQgfD0gTW9kaWZpZXI6Ok1ldGFLZXk7CisgICAgICAgIHJlc3VsdC5hZGQo
TW9kaWZpZXI6Ok1ldGFLZXkpOwogICAgIGlmIChpbml0aWFsaXplci5tb2RpZmllckFsdEdyYXBo
KQotICAgICAgICByZXN1bHQgfD0gTW9kaWZpZXI6OkFsdEdyYXBoS2V5OworICAgICAgICByZXN1
bHQuYWRkKE1vZGlmaWVyOjpBbHRHcmFwaEtleSk7CiAgICAgaWYgKGluaXRpYWxpemVyLm1vZGlm
aWVyQ2Fwc0xvY2spCi0gICAgICAgIHJlc3VsdCB8PSBNb2RpZmllcjo6Q2Fwc0xvY2tLZXk7Cisg
ICAgICAgIHJlc3VsdC5hZGQoTW9kaWZpZXI6OkNhcHNMb2NrS2V5KTsKICAgICByZXR1cm4gcmVz
dWx0OwogfQogCkBAIC02MywxNSArNjMsMTUgQEAgdm9pZCBVSUV2ZW50V2l0aEtleVN0YXRlOjpz
ZXRNb2RpZmllcktleQogewogICAgIE9wdGlvblNldDxNb2RpZmllcj4gcmVzdWx0OwogICAgIGlm
IChjdHJsS2V5KQotICAgICAgICByZXN1bHQgfD0gTW9kaWZpZXI6OkN0cmxLZXk7CisgICAgICAg
IHJlc3VsdC5hZGQoTW9kaWZpZXI6OkN0cmxLZXkpOwogICAgIGlmIChhbHRLZXkpCi0gICAgICAg
IHJlc3VsdCB8PSBNb2RpZmllcjo6QWx0S2V5OworICAgICAgICByZXN1bHQuYWRkKE1vZGlmaWVy
OjpBbHRLZXkpOwogICAgIGlmIChzaGlmdEtleSkKLSAgICAgICAgcmVzdWx0IHw9IE1vZGlmaWVy
OjpTaGlmdEtleTsKKyAgICAgICAgcmVzdWx0LmFkZChNb2RpZmllcjo6U2hpZnRLZXkpOwogICAg
IGlmIChtZXRhS2V5KQotICAgICAgICByZXN1bHQgfD0gTW9kaWZpZXI6Ok1ldGFLZXk7CisgICAg
ICAgIHJlc3VsdC5hZGQoTW9kaWZpZXI6Ok1ldGFLZXkpOwogICAgIGlmIChhbHRHcmFwaEtleSkK
LSAgICAgICAgcmVzdWx0IHw9IE1vZGlmaWVyOjpBbHRHcmFwaEtleTsKKyAgICAgICAgcmVzdWx0
LmFkZChNb2RpZmllcjo6QWx0R3JhcGhLZXkpOwogICAgIG1fbW9kaWZpZXJzID0gcmVzdWx0Owog
fQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vVXNlckFjdGlvbkVsZW1lbnRTZXQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Vc2VyQWN0aW9uRWxlbWVudFNldC5jcHAJ
KHJldmlzaW9uIDIzNTUzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Vc2VyQWN0aW9uRWxlbWVu
dFNldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2LDcgKzY2LDEwIEBAIHZvaWQgVXNlckFjdGlv
bkVsZW1lbnRTZXQ6OnNldEZsYWdzKEVsZW0KIHsKICAgICBBU1NFUlQoIWZsYWdzLmlzRW1wdHko
KSk7CiAKLSAgICBtX2VsZW1lbnRzLmFkZCgmZWxlbWVudCwgT3B0aW9uU2V0PEZsYWc+IHsgfSku
aXRlcmF0b3ItPnZhbHVlIHw9IGZsYWdzOworICAgIG1fZWxlbWVudHMuZW5zdXJlKCZlbGVtZW50
LCBbXSB7CisgICAgICAgIHJldHVybiBPcHRpb25TZXQ8RmxhZz4oKTsKKyAgICB9KS5pdGVyYXRv
ci0+dmFsdWUuYWRkKGZsYWdzKTsKKwogICAgIGVsZW1lbnQuc2V0VXNlckFjdGlvbkVsZW1lbnQo
dHJ1ZSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENv
bW1hbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRl
RWRpdENvbW1hbmQuY3BwCShyZXZpc2lvbiAyMzU1MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ5NCw3ICsx
NDk0LDcgQEAgdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6bW92ZVBhcmFncmFwaAogICAgIEFT
U0VSVChlbmRpbmdTZWxlY3Rpb24oKS5pc0NhcmV0T3JSYW5nZSgpKTsKICAgICBPcHRpb25TZXQ8
UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OkNvbW1hbmRPcHRpb24+IG9wdGlvbnMgeyBSZXBsYWNl
U2VsZWN0aW9uQ29tbWFuZDo6U2VsZWN0UmVwbGFjZW1lbnQsIFJlcGxhY2VTZWxlY3Rpb25Db21t
YW5kOjpNb3ZpbmdQYXJhZ3JhcGggfTsKICAgICBpZiAoIXByZXNlcnZlU3R5bGUpCi0gICAgICAg
IG9wdGlvbnMgfD0gUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6Ok1hdGNoU3R5bGU7CisgICAgICAg
IG9wdGlvbnMuYWRkKFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpNYXRjaFN0eWxlKTsKICAgICBh
cHBseUNvbW1hbmRUb0NvbXBvc2l0ZShSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6Y3JlYXRlKGRv
Y3VtZW50KCksIFdURk1vdmUoZnJhZ21lbnQpLCBvcHRpb25zKSk7CiAKICAgICBmcmFtZSgpLmVk
aXRvcigpLm1hcmtNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFyKGVuZGluZ1NlbGVjdGlvbigpKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAJKHJldmlzaW9uIDIzNTUzOSkKKysrIFNv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjM0LDEz
ICs2MzQsMTMgQEAgdm9pZCBFZGl0b3I6OnJlcGxhY2VTZWxlY3Rpb25XaXRoRnJhZ21lbgogCiAg
ICAgT3B0aW9uU2V0PFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpDb21tYW5kT3B0aW9uPiBvcHRp
b25zIHsgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OlByZXZlbnROZXN0aW5nLCBSZXBsYWNlU2Vs
ZWN0aW9uQ29tbWFuZDo6U2FuaXRpemVGcmFnbWVudCB9OwogICAgIGlmIChzZWxlY3RSZXBsYWNl
bWVudCkKLSAgICAgICAgb3B0aW9ucyB8PSBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6U2VsZWN0
UmVwbGFjZW1lbnQ7CisgICAgICAgIG9wdGlvbnMuYWRkKFJlcGxhY2VTZWxlY3Rpb25Db21tYW5k
OjpTZWxlY3RSZXBsYWNlbWVudCk7CiAgICAgaWYgKHNtYXJ0UmVwbGFjZSkKLSAgICAgICAgb3B0
aW9ucyB8PSBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6U21hcnRSZXBsYWNlOworICAgICAgICBv
cHRpb25zLmFkZChSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6U21hcnRSZXBsYWNlKTsKICAgICBp
ZiAobWF0Y2hTdHlsZSkKLSAgICAgICAgb3B0aW9ucyB8PSBSZXBsYWNlU2VsZWN0aW9uQ29tbWFu
ZDo6TWF0Y2hTdHlsZTsKKyAgICAgICAgb3B0aW9ucy5hZGQoUmVwbGFjZVNlbGVjdGlvbkNvbW1h
bmQ6Ok1hdGNoU3R5bGUpOwogICAgIGlmIChtYWlsQmxvY2txdW90ZUhhbmRsaW5nID09IE1haWxC
bG9ja3F1b3RlSGFuZGxpbmc6Oklnbm9yZUJsb2NrcXVvdGUpCi0gICAgICAgIG9wdGlvbnMgfD0g
UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6Oklnbm9yZU1haWxCbG9ja3F1b3RlOworICAgICAgICBv
cHRpb25zLmFkZChSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6SWdub3JlTWFpbEJsb2NrcXVvdGUp
OwogCiAgICAgYXV0byBjb21tYW5kID0gUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmNyZWF0ZShk
b2N1bWVudCgpLCAmZnJhZ21lbnQsIG9wdGlvbnMsIGVkaXRpbmdBY3Rpb24pOwogICAgIGNvbW1h
bmQtPmFwcGx5KCk7CkBAIC0xMDczLDcgKzEwNzMsNyBAQCB2b2lkIEVkaXRvcjo6YXBwbGllZEVk
aXRpbmcoQ29tcG9zaXRlRWRpCiAgICAgICAgIC8vIERvbid0IGNsZWFyIHRoZSB0eXBpbmcgc3R5
bGUgd2l0aCB0aGlzIHNlbGVjdGlvbiBjaGFuZ2UuIFdlIGRvIHRob3NlIHRoaW5ncyBlbHNld2hl
cmUgaWYgbmVjZXNzYXJ5LgogICAgICAgICBPcHRpb25TZXQ8RnJhbWVTZWxlY3Rpb246OlNldFNl
bGVjdGlvbk9wdGlvbj4gb3B0aW9uczsKICAgICAgICAgaWYgKGNvbW1hbmQuaXNEaWN0YXRpb25D
b21tYW5kKCkpCi0gICAgICAgICAgICBvcHRpb25zIHw9IEZyYW1lU2VsZWN0aW9uOjpEaWN0YXRp
b25UcmlnZ2VyZWQ7CisgICAgICAgICAgICBvcHRpb25zLmFkZChGcmFtZVNlbGVjdGlvbjo6RGlj
dGF0aW9uVHJpZ2dlcmVkKTsKIAogICAgICAgICBjaGFuZ2VTZWxlY3Rpb25BZnRlckNvbW1hbmQo
bmV3U2VsZWN0aW9uLCBvcHRpb25zKTsKICAgICB9CkBAIC0yMzM5LDcgKzIzMzksNyBAQCB2b2lk
IEVkaXRvcjo6bWFya01pc3NwZWxsaW5nc0FmdGVyVHlwaW5nCiAgICAgVU5VU0VEX1BBUkFNKGRv
UmVwbGFjZW1lbnQpOwogICAgIE9wdGlvblNldDxUZXh0Q2hlY2tpbmdUeXBlPiB0ZXh0Q2hlY2tp
bmdPcHRpb25zOwogICAgIGlmIChpc0NvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZCgpKQot
ICAgICAgICB0ZXh0Q2hlY2tpbmdPcHRpb25zIHw9IFRleHRDaGVja2luZ1R5cGU6OlNwZWxsaW5n
OworICAgICAgICB0ZXh0Q2hlY2tpbmdPcHRpb25zLmFkZChUZXh0Q2hlY2tpbmdUeXBlOjpTcGVs
bGluZyk7CiAgICAgaWYgKCF0ZXh0Q2hlY2tpbmdPcHRpb25zLmNvbnRhaW5zKFRleHRDaGVja2lu
Z1R5cGU6OlNwZWxsaW5nKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0yMzU3LDcgKzIzNTcsNyBA
QCB2b2lkIEVkaXRvcjo6bWFya01pc3NwZWxsaW5nc0FmdGVyVHlwaW5nCiAgICAgICAgIE9wdGlv
blNldDxUZXh0Q2hlY2tpbmdUeXBlPiB0ZXh0Q2hlY2tpbmdPcHRpb25zOwogCiAgICAgICAgIGlm
IChpc0NvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZCgpKQotICAgICAgICAgICAgdGV4dENo
ZWNraW5nT3B0aW9ucyB8PSBUZXh0Q2hlY2tpbmdUeXBlOjpTcGVsbGluZzsKKyAgICAgICAgICAg
IHRleHRDaGVja2luZ09wdGlvbnMuYWRkKFRleHRDaGVja2luZ1R5cGU6OlNwZWxsaW5nKTsKIAog
I2lmIFVTRShBVVRPTUFUSUNfVEVYVF9SRVBMQUNFTUVOVCkKICAgICAgICAgaWYgKGRvUmVwbGFj
ZW1lbnQKQEAgLTIzNjYsMTMgKzIzNjYsMTMgQEAgdm9pZCBFZGl0b3I6Om1hcmtNaXNzcGVsbGlu
Z3NBZnRlclR5cGluZwogICAgICAgICAgICAgICAgIHx8IGlzQXV0b21hdGljRGFzaFN1YnN0aXR1
dGlvbkVuYWJsZWQoKQogICAgICAgICAgICAgICAgIHx8IGlzQXV0b21hdGljVGV4dFJlcGxhY2Vt
ZW50RW5hYmxlZCgpCiAgICAgICAgICAgICAgICAgfHwgKHRleHRDaGVja2luZ09wdGlvbnMuY29u
dGFpbnMoVGV4dENoZWNraW5nVHlwZTo6U3BlbGxpbmcpICYmIGlzQXV0b21hdGljU3BlbGxpbmdD
b3JyZWN0aW9uRW5hYmxlZCgpKSkpCi0gICAgICAgICAgICB0ZXh0Q2hlY2tpbmdPcHRpb25zIHw9
IFRleHRDaGVja2luZ1R5cGU6OlJlcGxhY2VtZW50OworICAgICAgICAgICAgdGV4dENoZWNraW5n
T3B0aW9ucy5hZGQoVGV4dENoZWNraW5nVHlwZTo6UmVwbGFjZW1lbnQpOwogI2VuZGlmCiAgICAg
ICAgIGlmICghdGV4dENoZWNraW5nT3B0aW9ucy5jb250YWlucyhUZXh0Q2hlY2tpbmdUeXBlOjpT
cGVsbGluZykgJiYgIXRleHRDaGVja2luZ09wdGlvbnMuY29udGFpbnMoVGV4dENoZWNraW5nVHlw
ZTo6UmVwbGFjZW1lbnQpKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlmIChpc0dy
YW1tYXJDaGVja2luZ0VuYWJsZWQoKSkKLSAgICAgICAgICAgIHRleHRDaGVja2luZ09wdGlvbnMg
fD0gVGV4dENoZWNraW5nVHlwZTo6R3JhbW1hcjsKKyAgICAgICAgICAgIHRleHRDaGVja2luZ09w
dGlvbnMuYWRkKFRleHRDaGVja2luZ1R5cGU6OkdyYW1tYXIpOwogCiAgICAgICAgIGF1dG8gc2Vu
dGVuY2VTdGFydCA9IHN0YXJ0T2ZTZW50ZW5jZSh3b3JkU3RhcnQpOwogICAgICAgICBhdXRvIHNl
bnRlbmNlRW5kID0gZW5kT2ZTZW50ZW5jZSh3b3JkU3RhcnQpOwpAQCAtMjgzOCw3ICsyODM4LDcg
QEAgdm9pZCBFZGl0b3I6Om1hcmtNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbQogICAgICAgICAvLyBt
YXJrTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hcigpIGlzIHRyaWdnZXJlZCBieSBzZWxlY3Rpb24g
Y2hhbmdlLCBpbiB3aGljaCBjYXNlIHdlIGNoZWNrIHNwZWxsaW5nIGFuZCBncmFtbWFyLCBidXQg
ZG9uJ3QgYXV0b2NvcnJlY3QgbWlzc3BlbGxpbmdzLgogICAgICAgICBPcHRpb25TZXQ8VGV4dENo
ZWNraW5nVHlwZT4gdGV4dENoZWNraW5nT3B0aW9ucyB7IFRleHRDaGVja2luZ1R5cGU6OlNwZWxs
aW5nIH07CiAgICAgICAgIGlmIChtYXJrR3JhbW1hciAmJiBpc0dyYW1tYXJDaGVja2luZ0VuYWJs
ZWQoKSkKLSAgICAgICAgICAgIHRleHRDaGVja2luZ09wdGlvbnMgfD0gVGV4dENoZWNraW5nVHlw
ZTo6R3JhbW1hcjsKKyAgICAgICAgICAgIHRleHRDaGVja2luZ09wdGlvbnMuYWRkKFRleHRDaGVj
a2luZ1R5cGU6OkdyYW1tYXIpOwogICAgICAgICBhdXRvIHNwZWxsQ2hlY2tpbmdSYW5nZSA9IHNw
ZWxsaW5nU2VsZWN0aW9uLnRvTm9ybWFsaXplZFJhbmdlKCk7CiAgICAgICAgIG1hcmtBbGxNaXNz
cGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXModGV4dENoZWNraW5nT3B0aW9ucywgc3BlbGxD
aGVja2luZ1JhbmdlLmNvcHlSZWYoKSwgc3BlbGxDaGVja2luZ1JhbmdlLmNvcHlSZWYoKSwgZ3Jh
bW1hclNlbGVjdGlvbi50b05vcm1hbGl6ZWRSYW5nZSgpKTsKICAgICAgICAgcmV0dXJuOwpAQCAt
MzczMywzMCArMzczMywzMCBAQCBPcHRpb25TZXQ8VGV4dENoZWNraW5nVHlwZT4gRWRpdG9yOjpy
ZXNvCiAKICAgICBPcHRpb25TZXQ8VGV4dENoZWNraW5nVHlwZT4gY2hlY2tpbmdUeXBlczsKICAg
ICBpZiAoc2hvdWxkTWFya1NwZWxsaW5nKQotICAgICAgICBjaGVja2luZ1R5cGVzIHw9IFRleHRD
aGVja2luZ1R5cGU6OlNwZWxsaW5nOworICAgICAgICBjaGVja2luZ1R5cGVzLmFkZChUZXh0Q2hl
Y2tpbmdUeXBlOjpTcGVsbGluZyk7CiAgICAgaWYgKHNob3VsZE1hcmtHcmFtbWFyKQotICAgICAg
ICBjaGVja2luZ1R5cGVzIHw9IFRleHRDaGVja2luZ1R5cGU6OkdyYW1tYXI7CisgICAgICAgIGNo
ZWNraW5nVHlwZXMuYWRkKFRleHRDaGVja2luZ1R5cGU6OkdyYW1tYXIpOwogI2lmICFQTEFURk9S
TShJT1MpCiAgICAgaWYgKHNob3VsZENoZWNrRm9yQ29ycmVjdGlvbikKLSAgICAgICAgY2hlY2tp
bmdUeXBlcyB8PSBUZXh0Q2hlY2tpbmdUeXBlOjpDb3JyZWN0aW9uOworICAgICAgICBjaGVja2lu
Z1R5cGVzLmFkZChUZXh0Q2hlY2tpbmdUeXBlOjpDb3JyZWN0aW9uKTsKICAgICBpZiAoc2hvdWxk
U2hvd0NvcnJlY3Rpb25QYW5lbCkKLSAgICAgICAgY2hlY2tpbmdUeXBlcyB8PSBUZXh0Q2hlY2tp
bmdUeXBlOjpTaG93Q29ycmVjdGlvblBhbmVsOworICAgICAgICBjaGVja2luZ1R5cGVzLmFkZChU
ZXh0Q2hlY2tpbmdUeXBlOjpTaG93Q29ycmVjdGlvblBhbmVsKTsKIAogI2lmIFVTRShBVVRPTUFU
SUNfVEVYVF9SRVBMQUNFTUVOVCkKICAgICBib29sIHNob3VsZFBlcmZvcm1SZXBsYWNlbWVudCA9
IHRleHRDaGVja2luZ09wdGlvbnMuY29udGFpbnMoVGV4dENoZWNraW5nVHlwZTo6UmVwbGFjZW1l
bnQpOwogICAgIGlmIChzaG91bGRQZXJmb3JtUmVwbGFjZW1lbnQpIHsKICAgICAgICAgaWYgKCFv
bmx5QWxsb3dzVGV4dFJlcGxhY2VtZW50KSB7CiAgICAgICAgICAgICBpZiAoaXNBdXRvbWF0aWNM
aW5rRGV0ZWN0aW9uRW5hYmxlZCgpKQotICAgICAgICAgICAgICAgIGNoZWNraW5nVHlwZXMgfD0g
VGV4dENoZWNraW5nVHlwZTo6TGluazsKKyAgICAgICAgICAgICAgICBjaGVja2luZ1R5cGVzLmFk
ZChUZXh0Q2hlY2tpbmdUeXBlOjpMaW5rKTsKICAgICAgICAgICAgIGlmIChpc0F1dG9tYXRpY1F1
b3RlU3Vic3RpdHV0aW9uRW5hYmxlZCgpKQotICAgICAgICAgICAgICAgIGNoZWNraW5nVHlwZXMg
fD0gVGV4dENoZWNraW5nVHlwZTo6UXVvdGU7CisgICAgICAgICAgICAgICAgY2hlY2tpbmdUeXBl
cy5hZGQoVGV4dENoZWNraW5nVHlwZTo6UXVvdGUpOwogICAgICAgICAgICAgaWYgKGlzQXV0b21h
dGljRGFzaFN1YnN0aXR1dGlvbkVuYWJsZWQoKSkKLSAgICAgICAgICAgICAgICBjaGVja2luZ1R5
cGVzIHw9IFRleHRDaGVja2luZ1R5cGU6OkRhc2g7CisgICAgICAgICAgICAgICAgY2hlY2tpbmdU
eXBlcy5hZGQoVGV4dENoZWNraW5nVHlwZTo6RGFzaCk7CiAgICAgICAgICAgICBpZiAoc2hvdWxk
TWFya1NwZWxsaW5nICYmIGlzQXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uRW5hYmxlZCgpKQot
ICAgICAgICAgICAgICAgIGNoZWNraW5nVHlwZXMgfD0gVGV4dENoZWNraW5nVHlwZTo6Q29ycmVj
dGlvbjsKKyAgICAgICAgICAgICAgICBjaGVja2luZ1R5cGVzLmFkZChUZXh0Q2hlY2tpbmdUeXBl
OjpDb3JyZWN0aW9uKTsKICAgICAgICAgfQogICAgICAgICBpZiAoaXNBdXRvbWF0aWNUZXh0UmVw
bGFjZW1lbnRFbmFibGVkKCkpCi0gICAgICAgICAgICBjaGVja2luZ1R5cGVzIHw9IFRleHRDaGVj
a2luZ1R5cGU6OlJlcGxhY2VtZW50OworICAgICAgICAgICAgY2hlY2tpbmdUeXBlcy5hZGQoVGV4
dENoZWNraW5nVHlwZTo6UmVwbGFjZW1lbnQpOwogICAgIH0KICNlbmRpZgogI2VuZGlmIC8vICFQ
TEFURk9STShJT1MpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9u
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9u
LmNwcAkocmV2aXNpb24gMjM1NTM5KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNl
bGVjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4NywxNSArMTg3LDE1IEBAIHZvaWQgRnJh
bWVTZWxlY3Rpb246Om1vdmVXaXRob3V0VmFsaWRhdGkKICAgICBBWFRleHRTdGF0ZUNoYW5nZUlu
dGVudCBuZXdJbnRlbnQgPSBpbnRlbnQudHlwZSA9PSBBWFRleHRTdGF0ZUNoYW5nZVR5cGVVbmtu
b3duID8gQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQoQVhUZXh0U3RhdGVDaGFuZ2VUeXBlU2VsZWN0
aW9uTW92ZSwgQVhUZXh0U2VsZWN0aW9uIHsgQVhUZXh0U2VsZWN0aW9uRGlyZWN0aW9uRGlzY29u
dGlndW91cywgQVhUZXh0U2VsZWN0aW9uR3JhbnVsYXJpdHlVbmtub3duLCBmYWxzZSB9KSA6IGlu
dGVudDsKICAgICBhdXRvIG9wdGlvbnMgPSBkZWZhdWx0U2V0U2VsZWN0aW9uT3B0aW9ucygpOwog
ICAgIGlmICghc2hvdWxkU2V0Rm9jdXMpCi0gICAgICAgIG9wdGlvbnMgfD0gRG9Ob3RTZXRGb2N1
czsKKyAgICAgICAgb3B0aW9ucy5hZGQoRG9Ob3RTZXRGb2N1cyk7CiAgICAgc3dpdGNoIChyZXZl
YWxNb2RlKSB7CiAgICAgY2FzZSBTZWxlY3Rpb25SZXZlYWxNb2RlOjpEb05vdFJldmVhbDoKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBTZWxlY3Rpb25SZXZlYWxNb2RlOjpSZXZlYWw6Ci0gICAg
ICAgIG9wdGlvbnMgfD0gUmV2ZWFsU2VsZWN0aW9uOworICAgICAgICBvcHRpb25zLmFkZChSZXZl
YWxTZWxlY3Rpb24pOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFNlbGVjdGlvblJldmVhbE1v
ZGU6OlJldmVhbFVwVG9NYWluRnJhbWU6Ci0gICAgICAgIG9wdGlvbnMgfD0gUmV2ZWFsU2VsZWN0
aW9uVXBUb01haW5GcmFtZTsKKyAgICAgICAgb3B0aW9ucy5hZGQoUmV2ZWFsU2VsZWN0aW9uVXBU
b01haW5GcmFtZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBzZXRTZWxlY3Rpb24obmV3
U2VsZWN0aW9uLCBvcHRpb25zLCBuZXdJbnRlbnQpOwpAQCAtMTk5NSw3ICsxOTk1LDcgQEAgYm9v
bCBGcmFtZVNlbGVjdGlvbjo6c2V0U2VsZWN0ZWRSYW5nZShSYQogCiAgICAgT3B0aW9uU2V0PFNl
dFNlbGVjdGlvbk9wdGlvbj4gc2VsZWN0aW9uT3B0aW9ucyB7ICBDbGVhclR5cGluZ1N0eWxlIH07
CiAgICAgaWYgKGNsb3NlVHlwaW5nKQotICAgICAgICBzZWxlY3Rpb25PcHRpb25zIHw9IENsb3Nl
VHlwaW5nOworICAgICAgICBzZWxlY3Rpb25PcHRpb25zLmFkZChDbG9zZVR5cGluZyk7CiAKICAg
ICBpZiAodXNlclRyaWdnZXJlZCA9PSBVc2VyVHJpZ2dlcmVkKSB7CiAgICAgICAgIEZyYW1lU2Vs
ZWN0aW9uIHRyaWFsRnJhbWVTZWxlY3Rpb247CkBAIC0yMDA1LDcgKzIwMDUsNyBAQCBib29sIEZy
YW1lU2VsZWN0aW9uOjpzZXRTZWxlY3RlZFJhbmdlKFJhCiAgICAgICAgIGlmICghc2hvdWxkQ2hh
bmdlU2VsZWN0aW9uKHRyaWFsRnJhbWVTZWxlY3Rpb24uc2VsZWN0aW9uKCkpKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIHNlbGVjdGlvbk9wdGlvbnMgfD0gSXNVc2VyVHJp
Z2dlcmVkOworICAgICAgICBzZWxlY3Rpb25PcHRpb25zLmFkZChJc1VzZXJUcmlnZ2VyZWQpOwog
ICAgIH0KIAogICAgIHNldFNlbGVjdGlvbihuZXdTZWxlY3Rpb24sIHNlbGVjdGlvbk9wdGlvbnMp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uaAkocmV2aXNpb24g
MjM1NTM5KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMzMsNyArMTMzLDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgT3B0
aW9uU2V0PFNldFNlbGVjdGlvbk9wdGlvbj4gb3B0aW9ucyB7IENsb3NlVHlwaW5nLCBDbGVhclR5
cGluZ1N0eWxlIH07CiAgICAgICAgIGlmICh1c2VyVHJpZ2dlcmVkID09IFVzZXJUcmlnZ2VyZWQp
Ci0gICAgICAgICAgICBvcHRpb25zIHw9IHsgUmV2ZWFsU2VsZWN0aW9uLCBGaXJlU2VsZWN0RXZl
bnQsIElzVXNlclRyaWdnZXJlZCB9OworICAgICAgICAgICAgb3B0aW9ucy5hZGQoeyBSZXZlYWxT
ZWxlY3Rpb24sIEZpcmVTZWxlY3RFdmVudCwgSXNVc2VyVHJpZ2dlcmVkIH0pOwogICAgICAgICBy
ZXR1cm4gb3B0aW9uczsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTW92
ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvTW92ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCShyZXZpc2lvbiAyMzU1MzkpCisrKyBTb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL01vdmVTZWxlY3Rpb25Db21tYW5kLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtODQsNyArODQsNyBAQCB2b2lkIE1vdmVTZWxlY3Rpb25Db21tYW5kOjpkb0FwcGx5KCkKICAg
ICB9CiAgICAgT3B0aW9uU2V0PFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpDb21tYW5kT3B0aW9u
PiBvcHRpb25zIHsgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OlNlbGVjdFJlcGxhY2VtZW50LCBS
ZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6UHJldmVudE5lc3RpbmcgfTsKICAgICBpZiAobV9zbWFy
dEluc2VydCkKLSAgICAgICAgb3B0aW9ucyB8PSBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6U21h
cnRSZXBsYWNlOworICAgICAgICBvcHRpb25zLmFkZChSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6
U21hcnRSZXBsYWNlKTsKIAogICAgIHsKICAgICAgICAgYXV0byByZXBsYWNlU2VsZWN0aW9uID0g
UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmNyZWF0ZShkb2N1bWVudCgpLCBXVEZNb3ZlKG1fZnJh
Z21lbnQpLCBvcHRpb25zLCBFZGl0QWN0aW9uSW5zZXJ0RnJvbURyb3ApOwpJbmRleDogU291cmNl
L1dlYkNvcmUvZWRpdGluZy9TcGVsbENoZWNrZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvU3BlbGxDaGVja2VyLmNwcAkocmV2aXNpb24gMjM1NTM5KQorKysgU291
cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbENoZWNrZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
MTgsOSArMjE4LDkgQEAgdm9pZCBTcGVsbENoZWNrZXI6OmRpZENoZWNrU3VjY2VlZChpbnQgcwog
ICAgIGlmIChyZXF1ZXN0RGF0YS5zZXF1ZW5jZSgpID09IHNlcXVlbmNlKSB7CiAgICAgICAgIE9w
dGlvblNldDxEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZT4gbWFya2VyVHlwZXM7CiAgICAgICAg
IGlmIChyZXF1ZXN0RGF0YS5jaGVja2luZ1R5cGVzKCkuY29udGFpbnMoVGV4dENoZWNraW5nVHlw
ZTo6U3BlbGxpbmcpKQotICAgICAgICAgICAgbWFya2VyVHlwZXMgfD0gRG9jdW1lbnRNYXJrZXI6
OlNwZWxsaW5nOworICAgICAgICAgICAgbWFya2VyVHlwZXMuYWRkKERvY3VtZW50TWFya2VyOjpT
cGVsbGluZyk7CiAgICAgICAgIGlmIChyZXF1ZXN0RGF0YS5jaGVja2luZ1R5cGVzKCkuY29udGFp
bnMoVGV4dENoZWNraW5nVHlwZTo6R3JhbW1hcikpCi0gICAgICAgICAgICBtYXJrZXJUeXBlcyB8
PSBEb2N1bWVudE1hcmtlcjo6R3JhbW1hcjsKKyAgICAgICAgICAgIG1hcmtlclR5cGVzLmFkZChE
b2N1bWVudE1hcmtlcjo6R3JhbW1hcik7CiAgICAgICAgIGlmICghbWFya2VyVHlwZXMuaXNFbXB0
eSgpKQogICAgICAgICAgICAgbV9mcmFtZS5kb2N1bWVudCgpLT5tYXJrZXJzKCkucmVtb3ZlTWFy
a2VycygmbV9wcm9jZXNzaW5nUmVxdWVzdC0+Y2hlY2tpbmdSYW5nZSgpLCBtYXJrZXJUeXBlcyk7
CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVs
cGVyLmNwcAkocmV2aXNpb24gMjM1NTM5KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0
Q2hlY2tpbmdIZWxwZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNTMsNyArMzUzLDcgQEAgU3Ry
aW5nIFRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0TWlzcwogICAgICAgICAgICAgICAgIFZl
Y3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IHJlc3VsdHM7CiAgICAgICAgICAgICAgICAgT3B0aW9u
U2V0PFRleHRDaGVja2luZ1R5cGU+IGNoZWNraW5nVHlwZXMgeyBUZXh0Q2hlY2tpbmdUeXBlOjpT
cGVsbGluZyB9OwogICAgICAgICAgICAgICAgIGlmIChjaGVja0dyYW1tYXIpCi0gICAgICAgICAg
ICAgICAgICAgIGNoZWNraW5nVHlwZXMgfD0gVGV4dENoZWNraW5nVHlwZTo6R3JhbW1hcjsKKyAg
ICAgICAgICAgICAgICAgICAgY2hlY2tpbmdUeXBlcy5hZGQoVGV4dENoZWNraW5nVHlwZTo6R3Jh
bW1hcik7CiAgICAgICAgICAgICAgICAgVmlzaWJsZVNlbGVjdGlvbiBjdXJyZW50U2VsZWN0aW9u
OwogICAgICAgICAgICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBwYXJhZ3JhcGhSYW5nZS0+b3du
ZXJEb2N1bWVudCgpLmZyYW1lKCkpCiAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTZWxlY3Rp
b24gPSBmcmFtZS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCk7CkBAIC01ODcsNyArNTg3LDcgQEAg
VmVjdG9yPFN0cmluZz4gVGV4dENoZWNraW5nSGVscGVyOjpndWVzcwogICAgIFZlY3RvcjxUZXh0
Q2hlY2tpbmdSZXN1bHQ+IHJlc3VsdHM7CiAgICAgT3B0aW9uU2V0PFRleHRDaGVja2luZ1R5cGU+
IGNoZWNraW5nVHlwZXMgeyBUZXh0Q2hlY2tpbmdUeXBlOjpTcGVsbGluZyB9OwogICAgIGlmIChj
aGVja0dyYW1tYXIpCi0gICAgICAgIGNoZWNraW5nVHlwZXMgfD0gVGV4dENoZWNraW5nVHlwZTo6
R3JhbW1hcjsKKyAgICAgICAgY2hlY2tpbmdUeXBlcy5hZGQoVGV4dENoZWNraW5nVHlwZTo6R3Jh
bW1hcik7CiAgICAgVmlzaWJsZVNlbGVjdGlvbiBjdXJyZW50U2VsZWN0aW9uOwogICAgIGlmIChG
cmFtZSogZnJhbWUgPSBtX3JhbmdlLT5vd25lckRvY3VtZW50KCkuZnJhbWUoKSkKICAgICAgICAg
Y3VycmVudFNlbGVjdGlvbiA9IGZyYW1lLT5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAJKHJldmlzaW9uIDIzNTUzOSkK
KysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjA5Nyw3ICsyMDk3LDcgQEAgaW5saW5lIFNlYXJjaEJ1ZmZlcjo6U2VhcmNoQnVmZmVy
KGNvbnN0IAogICAgICAgICAvLyBDaGFyYWN0ZXJzIGluIHRoZSBzZXBhcmF0b3IgY2F0ZWdvcnkg
bmV2ZXIgcmVhbGx5IG9jY3VyIGF0IHRoZSBiZWdpbm5pbmcgb2YgYSB3b3JkLAogICAgICAgICAv
LyBzbyBpZiB0aGUgdGFyZ2V0IGJlZ2lucyB3aXRoIHN1Y2ggYSBjaGFyYWN0ZXIsIHdlIGp1c3Qg
aWdub3JlIHRoZSBBdFdvcmRTdGFydCBvcHRpb24uCiAgICAgICAgIGlmIChpc1NlcGFyYXRvcih0
YXJnZXRGaXJzdENoYXJhY3RlcikpIHsKLSAgICAgICAgICAgIG1fb3B0aW9ucyAtPSBBdFdvcmRT
dGFydHM7CisgICAgICAgICAgICBtX29wdGlvbnMucmVtb3ZlKEF0V29yZFN0YXJ0cyk7CiAgICAg
ICAgICAgICBtX25lZWRzTW9yZUNvbnRleHQgPSBmYWxzZTsKICAgICAgICAgfQogICAgIH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCShyZXZpc2lvbiAy
MzU1MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjU3LDkgKzI1Nyw5IEBAIHZvaWQgSFRNTEFuY2hvckVsZW1lbnQ6OnBh
cnNlQXR0cmlidXRlKGMKICAgICAgICAgY29uc3QgYm9vbCBzaG91bGRGb2xkQ2FzZSA9IHRydWU7
CiAgICAgICAgIFNwYWNlU3BsaXRTdHJpbmcgcmVsVmFsdWUodmFsdWUsIHNob3VsZEZvbGRDYXNl
KTsKICAgICAgICAgaWYgKHJlbFZhbHVlLmNvbnRhaW5zKG5vUmVmZXJyZXIpKQotICAgICAgICAg
ICAgbV9saW5rUmVsYXRpb25zIHw9IFJlbGF0aW9uOjpOb1JlZmVycmVyOworICAgICAgICAgICAg
bV9saW5rUmVsYXRpb25zLmFkZChSZWxhdGlvbjo6Tm9SZWZlcnJlcik7CiAgICAgICAgIGlmIChy
ZWxWYWx1ZS5jb250YWlucyhub09wZW5lcikpCi0gICAgICAgICAgICBtX2xpbmtSZWxhdGlvbnMg
fD0gUmVsYXRpb246Ok5vT3BlbmVyOworICAgICAgICAgICAgbV9saW5rUmVsYXRpb25zLmFkZChS
ZWxhdGlvbjo6Tm9PcGVuZXIpOwogICAgICAgICBpZiAobV9yZWxMaXN0KQogICAgICAgICAgICAg
bV9yZWxMaXN0LT5hc3NvY2lhdGVkQXR0cmlidXRlVmFsdWVDaGFuZ2VkKHZhbHVlKTsKICAgICB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2Vu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JQYWdlQWdlbnQuY3BwCShyZXZpc2lvbiAyMzU1MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMxOSw5ICszMTksOSBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6cmVsb2FkKEVycm9yU3Ry
CiAKICAgICBPcHRpb25TZXQ8UmVsb2FkT3B0aW9uPiByZWxvYWRPcHRpb25zOwogICAgIGlmIChy
ZWxvYWRGcm9tT3JpZ2luKQotICAgICAgICByZWxvYWRPcHRpb25zIHw9IFJlbG9hZE9wdGlvbjo6
RnJvbU9yaWdpbjsKKyAgICAgICAgcmVsb2FkT3B0aW9ucy5hZGQoUmVsb2FkT3B0aW9uOjpGcm9t
T3JpZ2luKTsKICAgICBpZiAoIXJldmFsaWRhdGVBbGxSZXNvdXJjZXMpCi0gICAgICAgIHJlbG9h
ZE9wdGlvbnMgfD0gUmVsb2FkT3B0aW9uOjpFeHBpcmVkT25seTsKKyAgICAgICAgcmVsb2FkT3B0
aW9ucy5hZGQoUmVsb2FkT3B0aW9uOjpFeHBpcmVkT25seSk7CiAKICAgICBtX3BhZ2UubWFpbkZy
YW1lKCkubG9hZGVyKCkucmVsb2FkKHJlbG9hZE9wdGlvbnMpOwogfQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMjM1NTM5
KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNjksNyArMzY5LDcgQEAgdm9pZCBDb250ZXh0TWVudUNvbnRyb2xsZXI6
OmNvbnRleHRNZW51SQogICAgICAgICAgICAgICAgIGZyYW1lLT5zZWxlY3Rpb24oKS5zZXRTZWxl
Y3Rpb24od29yZFNlbGVjdGlvbik7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
ICAgIEFTU0VSVChmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0ZWRUZXh0KCkubGVuZ3RoKCkpOwotICAg
ICAgICAgICAgICAgIHJlcGxhY2VPcHRpb25zIHw9IFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpT
ZWxlY3RSZXBsYWNlbWVudDsKKyAgICAgICAgICAgICAgICByZXBsYWNlT3B0aW9ucy5hZGQoUmVw
bGFjZVNlbGVjdGlvbkNvbW1hbmQ6OlNlbGVjdFJlcGxhY2VtZW50KTsKICAgICAgICAgICAgIH0K
IAogICAgICAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gZnJhbWUtPmRvY3VtZW50KCk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCShyZXZpc2lvbiAyMzU1MzkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMjEsMTQg
KzEyMjEsMTQgQEAgYm9vbCBET01XaW5kb3c6OmZpbmQoY29uc3QgU3RyaW5nJiBzdHJpbgogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBGSVhNRSAoMTMwMTYpOiBTdXBwb3J0IHdob2xl
V29yZCwgc2VhcmNoSW5GcmFtZXMgYW5kIHNob3dEaWFsb2cuICAgIAotICAgIEZpbmRPcHRpb25z
IG9wdGlvbnM7CisgICAgRmluZE9wdGlvbnMgb3B0aW9ucyB7IERvTm90VHJhdmVyc2VGbGF0VHJl
ZSB9OwogICAgIGlmIChiYWNrd2FyZHMpCi0gICAgICAgIG9wdGlvbnMgfD0gQmFja3dhcmRzOwor
ICAgICAgICBvcHRpb25zLmFkZChCYWNrd2FyZHMpOwogICAgIGlmICghY2FzZVNlbnNpdGl2ZSkK
LSAgICAgICAgb3B0aW9ucyB8PSBDYXNlSW5zZW5zaXRpdmU7CisgICAgICAgIG9wdGlvbnMuYWRk
KENhc2VJbnNlbnNpdGl2ZSk7CiAgICAgaWYgKHdyYXApCi0gICAgICAgIG9wdGlvbnMgfD0gV3Jh
cEFyb3VuZDsKLSAgICByZXR1cm4gbV9mcmFtZS0+ZWRpdG9yKCkuZmluZFN0cmluZyhzdHJpbmcs
IG9wdGlvbnMgfCBEb05vdFRyYXZlcnNlRmxhdFRyZWUpOworICAgICAgICBvcHRpb25zLmFkZChX
cmFwQXJvdW5kKTsKKyAgICByZXR1cm4gbV9mcmFtZS0+ZWRpdG9yKCkuZmluZFN0cmluZyhzdHJp
bmcsIG9wdGlvbnMpOwogfQogCiBib29sIERPTVdpbmRvdzo6b2Zmc2NyZWVuQnVmZmVyaW5nKCkg
Y29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCShyZXZpc2lv
biAyMzU1MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNjE5LDkgKzYxOSw5IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OmNvbmNs
dWRlRWRpdERyYWcoY28KICAgICAgICAgICAgIGlmIChzZXRTZWxlY3Rpb25Ub0RyYWdDYXJldChp
bm5lckZyYW1lLmdldCgpLCBkcmFnQ2FyZXQsIHJhbmdlLCBwb2ludCkpIHsKICAgICAgICAgICAg
ICAgICBPcHRpb25TZXQ8UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OkNvbW1hbmRPcHRpb24+IG9w
dGlvbnMgeyBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6U2VsZWN0UmVwbGFjZW1lbnQsIFJlcGxh
Y2VTZWxlY3Rpb25Db21tYW5kOjpQcmV2ZW50TmVzdGluZyB9OwogICAgICAgICAgICAgICAgIGlm
IChkcmFnRGF0YS5jYW5TbWFydFJlcGxhY2UoKSkKLSAgICAgICAgICAgICAgICAgICAgb3B0aW9u
cyB8PSBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6U21hcnRSZXBsYWNlOworICAgICAgICAgICAg
ICAgICAgICBvcHRpb25zLmFkZChSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6U21hcnRSZXBsYWNl
KTsKICAgICAgICAgICAgICAgICBpZiAoY2hvc2VQbGFpblRleHQpCi0gICAgICAgICAgICAgICAg
ICAgIG9wdGlvbnMgfD0gUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6Ok1hdGNoU3R5bGU7CisgICAg
ICAgICAgICAgICAgICAgIG9wdGlvbnMuYWRkKFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpNYXRj
aFN0eWxlKTsKICAgICAgICAgICAgICAgICBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6Y3JlYXRl
KCptX2RvY3VtZW50VW5kZXJNb3VzZSwgZnJhZ21lbnQucmVsZWFzZU5vbk51bGwoKSwgb3B0aW9u
cywgRWRpdEFjdGlvbkluc2VydEZyb21Ecm9wKS0+YXBwbHkoKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5jcHAJ
KHJldmlzaW9uIDIzNTUzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVTbmFwc2hvdHRp
bmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MiwxMyArOTIsMTMgQEAgc3RkOjp1bmlxdWVfcHRy
PEltYWdlQnVmZmVyPiBzbmFwc2hvdEZyYQogCiAgICAgYXV0byBwYWludEJlaGF2aW9yID0gc3Rh
dGUucGFpbnRCZWhhdmlvcjsKICAgICBpZiAob3B0aW9ucyAmIFNuYXBzaG90T3B0aW9uc0ZvcmNl
QmxhY2tUZXh0KQotICAgICAgICBwYWludEJlaGF2aW9yIHw9IFBhaW50QmVoYXZpb3I6OkZvcmNl
QmxhY2tUZXh0OworICAgICAgICBwYWludEJlaGF2aW9yLmFkZChQYWludEJlaGF2aW9yOjpGb3Jj
ZUJsYWNrVGV4dCk7CiAgICAgaWYgKG9wdGlvbnMgJiBTbmFwc2hvdE9wdGlvbnNQYWludFNlbGVj
dGlvbk9ubHkpCi0gICAgICAgIHBhaW50QmVoYXZpb3IgfD0gUGFpbnRCZWhhdmlvcjo6U2VsZWN0
aW9uT25seTsKKyAgICAgICAgcGFpbnRCZWhhdmlvci5hZGQoUGFpbnRCZWhhdmlvcjo6U2VsZWN0
aW9uT25seSk7CiAgICAgaWYgKG9wdGlvbnMgJiBTbmFwc2hvdE9wdGlvbnNQYWludFNlbGVjdGlv
bkFuZEJhY2tncm91bmRzT25seSkKLSAgICAgICAgcGFpbnRCZWhhdmlvciB8PSBQYWludEJlaGF2
aW9yOjpTZWxlY3Rpb25BbmRCYWNrZ3JvdW5kc09ubHk7CisgICAgICAgIHBhaW50QmVoYXZpb3Iu
YWRkKFBhaW50QmVoYXZpb3I6OlNlbGVjdGlvbkFuZEJhY2tncm91bmRzT25seSk7CiAgICAgaWYg
KG9wdGlvbnMgJiBTbmFwc2hvdE9wdGlvbnNQYWludEV2ZXJ5dGhpbmdFeGNsdWRpbmdTZWxlY3Rp
b24pCi0gICAgICAgIHBhaW50QmVoYXZpb3IgfD0gUGFpbnRCZWhhdmlvcjo6RXhjbHVkZVNlbGVj
dGlvbjsKKyAgICAgICAgcGFpbnRCZWhhdmlvci5hZGQoUGFpbnRCZWhhdmlvcjo6RXhjbHVkZVNl
bGVjdGlvbik7CiAKICAgICAvLyBPdGhlciBwYWludCBiZWhhdmlvcnMgYXJlIHNldCBieSBwYWlu
dENvbnRlbnRzRm9yU25hcHNob3QuCiAgICAgZnJhbWUudmlldygpLT5zZXRQYWludEJlaGF2aW9y
KHBhaW50QmVoYXZpb3IpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAkocmV2aXNp
b24gMjM1NTM5KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNDAsMTEgKzE0MCwxMSBAQCBzdGF0aWMgT3B0aW9uU2V0PFJlbmRlckxheWVy
OjpVcGRhdGVMYXllCiB7CiAgICAgYXV0byBmbGFncyA9IFJlbmRlckxheWVyOjp1cGRhdGVMYXll
clBvc2l0aW9uc0RlZmF1bHRGbGFncygpOwogICAgIGlmIChkaWRGdWxsUmVwYWludCkgewotICAg
ICAgICBmbGFncyAtPSBSZW5kZXJMYXllcjo6Q2hlY2tGb3JSZXBhaW50OwotICAgICAgICBmbGFn
cyB8PSBSZW5kZXJMYXllcjo6TmVlZHNGdWxsUmVwYWludEluQmFja2luZzsKKyAgICAgICAgZmxh
Z3MucmVtb3ZlKFJlbmRlckxheWVyOjpDaGVja0ZvclJlcGFpbnQpOworICAgICAgICBmbGFncy5h
ZGQoUmVuZGVyTGF5ZXI6Ok5lZWRzRnVsbFJlcGFpbnRJbkJhY2tpbmcpOwogICAgIH0KICAgICBp
ZiAoaXNSZWxheW91dGluZ1N1YnRyZWUgJiYgbGF5ZXItPmVuY2xvc2luZ1BhZ2luYXRpb25MYXll
cihSZW5kZXJMYXllcjo6SW5jbHVkZUNvbXBvc2l0ZWRQYWdpbmF0ZWRMYXllcnMpKQotICAgICAg
ICBmbGFncyB8PSBSZW5kZXJMYXllcjo6VXBkYXRlUGFnaW5hdGlvbjsKKyAgICAgICAgZmxhZ3Mu
YWRkKFJlbmRlckxheWVyOjpVcGRhdGVQYWdpbmF0aW9uKTsKICAgICByZXR1cm4gZmxhZ3M7CiB9
CiAKQEAgLTQwNjgsMTggKzQwNjgsMTggQEAgdm9pZCBGcmFtZVZpZXc6OndpbGxQYWludENvbnRl
bnRzKEdyYXBoaQogICAgIAogICAgIGlmIChGcmFtZVZpZXcqIHBhcmVudFZpZXcgPSBwYXJlbnRG
cmFtZVZpZXcoKSkgewogICAgICAgICBpZiAocGFyZW50Vmlldy0+cGFpbnRCZWhhdmlvcigpICYg
UGFpbnRCZWhhdmlvcjo6RmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzKQotICAgICAgICAgICAgbV9w
YWludEJlaGF2aW9yIHw9IFBhaW50QmVoYXZpb3I6OkZsYXR0ZW5Db21wb3NpdGluZ0xheWVyczsK
KyAgICAgICAgICAgIG1fcGFpbnRCZWhhdmlvci5hZGQoUGFpbnRCZWhhdmlvcjo6RmxhdHRlbkNv
bXBvc2l0aW5nTGF5ZXJzKTsKICAgICAgICAgCiAgICAgICAgIGlmIChwYXJlbnRWaWV3LT5wYWlu
dEJlaGF2aW9yKCkgJiBQYWludEJlaGF2aW9yOjpTbmFwc2hvdHRpbmcpCi0gICAgICAgICAgICBt
X3BhaW50QmVoYXZpb3IgfD0gUGFpbnRCZWhhdmlvcjo6U25hcHNob3R0aW5nOworICAgICAgICAg
ICAgbV9wYWludEJlaGF2aW9yLmFkZChQYWludEJlaGF2aW9yOjpTbmFwc2hvdHRpbmcpOwogICAg
ICAgICAKICAgICAgICAgaWYgKHBhcmVudFZpZXctPnBhaW50QmVoYXZpb3IoKSAmIFBhaW50QmVo
YXZpb3I6OlRpbGVGaXJzdFBhaW50KQotICAgICAgICAgICAgbV9wYWludEJlaGF2aW9yIHw9IFBh
aW50QmVoYXZpb3I6OlRpbGVGaXJzdFBhaW50OworICAgICAgICAgICAgbV9wYWludEJlaGF2aW9y
LmFkZChQYWludEJlaGF2aW9yOjpUaWxlRmlyc3RQYWludCk7CiAgICAgfQogCiAgICAgaWYgKGRv
Y3VtZW50LT5wcmludGluZygpKSB7Ci0gICAgICAgIG1fcGFpbnRCZWhhdmlvciB8PSBQYWludEJl
aGF2aW9yOjpGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnM7Ci0gICAgICAgIG1fcGFpbnRCZWhhdmlv
ciB8PSBQYWludEJlaGF2aW9yOjpTbmFwc2hvdHRpbmc7CisgICAgICAgIG1fcGFpbnRCZWhhdmlv
ci5hZGQoUGFpbnRCZWhhdmlvcjo6RmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzKTsKKyAgICAgICAg
bV9wYWludEJlaGF2aW9yLmFkZChQYWludEJlaGF2aW9yOjpTbmFwc2hvdHRpbmcpOwogICAgIH0K
IAogICAgIHBhaW50aW5nU3RhdGUuaXNGbGF0dGVuaW5nUGFpbnRPZlJvb3RGcmFtZSA9IChtX3Bh
aW50QmVoYXZpb3IgJiBQYWludEJlaGF2aW9yOjpGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMpICYm
ICFmcmFtZSgpLm93bmVyRWxlbWVudCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCShyZXZpc2lv
biAyMzU1MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNjQzLDExICsxNjQzLDExIEBAIHZvaWQgUGFnZTo6c2V0SXNWaXNpYmxlKGJvb2wgaXNW
aXNpYmxlKQogICAgIGF1dG8gc3RhdGUgPSBtX2FjdGl2aXR5U3RhdGU7CiAKICAgICBpZiAoaXNW
aXNpYmxlKSB7Ci0gICAgICAgIHN0YXRlIC09IEFjdGl2aXR5U3RhdGU6OklzVmlzdWFsbHlJZGxl
OwotICAgICAgICBzdGF0ZSB8PSB7IEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSwgQWN0aXZpdHlT
dGF0ZTo6SXNWaXNpYmxlT3JPY2NsdWRlZCB9OworICAgICAgICBzdGF0ZS5yZW1vdmUoQWN0aXZp
dHlTdGF0ZTo6SXNWaXN1YWxseUlkbGUpOworICAgICAgICBzdGF0ZS5hZGQoeyBBY3Rpdml0eVN0
YXRlOjpJc1Zpc2libGUsIEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZU9yT2NjbHVkZWQgfSk7CiAg
ICAgfSBlbHNlIHsKLSAgICAgICAgc3RhdGUgfD0gQWN0aXZpdHlTdGF0ZTo6SXNWaXN1YWxseUlk
bGU7Ci0gICAgICAgIHN0YXRlIC09IHsgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlLCBBY3Rpdml0
eVN0YXRlOjpJc1Zpc2libGVPck9jY2x1ZGVkIH07CisgICAgICAgIHN0YXRlLmFkZChBY3Rpdml0
eVN0YXRlOjpJc1Zpc3VhbGx5SWRsZSk7CisgICAgICAgIHN0YXRlLnJlbW92ZSh7IEFjdGl2aXR5
U3RhdGU6OklzVmlzaWJsZSwgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlT3JPY2NsdWRlZCB9KTsK
ICAgICB9CiAgICAgc2V0QWN0aXZpdHlTdGF0ZShzdGF0ZSk7CiB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wYWdlL1BlcmZvcm1hbmNlT2JzZXJ2ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VPYnNlcnZlci5jcHAJKHJldmlzaW9uIDIzNTUzOSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VPYnNlcnZlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTY1LDcgKzY1LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gUGVyZm9ybWFuY2VPYnNlcnZl
cjo6bwogICAgIE9wdGlvblNldDxQZXJmb3JtYW5jZUVudHJ5OjpUeXBlPiBmaWx0ZXI7CiAgICAg
Zm9yIChjb25zdCBTdHJpbmcmIGVudHJ5VHlwZSA6IGluaXQuZW50cnlUeXBlcykgewogICAgICAg
ICBpZiAoYXV0byB0eXBlID0gUGVyZm9ybWFuY2VFbnRyeTo6cGFyc2VFbnRyeVR5cGVTdHJpbmco
ZW50cnlUeXBlKSkKLSAgICAgICAgICAgIGZpbHRlciB8PSAqdHlwZTsKKyAgICAgICAgICAgIGZp
bHRlci5hZGQoKnR5cGUpOwogICAgIH0KIAogICAgIGlmIChmaWx0ZXIuaXNFbXB0eSgpKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGFnZS9UZXh0SW5kaWNhdG9yLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wYWdlL1RleHRJbmRpY2F0b3IuY3BwCShyZXZpc2lvbiAyMzU1MzkpCisr
KyBTb3VyY2UvV2ViQ29yZS9wYWdlL1RleHRJbmRpY2F0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC03OCw4ICs3OCw4IEBAIFJlZlB0cjxUZXh0SW5kaWNhdG9yPiBUZXh0SW5kaWNhdG9yOjpjcmUK
ICAgICBWaXNpYmxlU2VsZWN0aW9uIG9sZFNlbGVjdGlvbiA9IGZyYW1lLT5zZWxlY3Rpb24oKS5z
ZWxlY3Rpb24oKTsKICAgICBPcHRpb25TZXQ8VGVtcG9yYXJ5U2VsZWN0aW9uT3B0aW9uPiB0ZW1w
b3JhcnlTZWxlY3Rpb25PcHRpb25zOwogI2lmIFBMQVRGT1JNKElPUykKLSAgICB0ZW1wb3JhcnlT
ZWxlY3Rpb25PcHRpb25zIHw9IFRlbXBvcmFyeVNlbGVjdGlvbk9wdGlvbklnbm9yZVNlbGVjdGlv
bkNoYW5nZXM7Ci0gICAgdGVtcG9yYXJ5U2VsZWN0aW9uT3B0aW9ucyB8PSBUZW1wb3JhcnlTZWxl
Y3Rpb25PcHRpb25FbmFibGVBcHBlYXJhbmNlVXBkYXRlczsKKyAgICB0ZW1wb3JhcnlTZWxlY3Rp
b25PcHRpb25zLmFkZChUZW1wb3JhcnlTZWxlY3Rpb25PcHRpb25JZ25vcmVTZWxlY3Rpb25DaGFu
Z2VzKTsKKyAgICB0ZW1wb3JhcnlTZWxlY3Rpb25PcHRpb25zLmFkZChUZW1wb3JhcnlTZWxlY3Rp
b25PcHRpb25FbmFibGVBcHBlYXJhbmNlVXBkYXRlcyk7CiAjZW5kaWYKICAgICBUZW1wb3JhcnlT
ZWxlY3Rpb25DaGFuZ2Ugc2VsZWN0aW9uQ2hhbmdlKCpmcmFtZSwgeyByYW5nZSB9LCB0ZW1wb3Jh
cnlTZWxlY3Rpb25PcHRpb25zKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9XaW5kb3dG
ZWF0dXJlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9XaW5kb3dGZWF0
dXJlcy5jcHAJKHJldmlzaW9uIDIzNTUzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvV2luZG93
RmVhdHVyZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjAsNyArMTIwLDcgQEAgT3B0aW9uU2V0
PERpc2FibGVkQWRhcHRhdGlvbnM+IHBhcnNlRGlzYQogICAgIGZvciAoYXV0byYgbmFtZSA6IGRp
c2FibGVkQWRhcHRhdGlvbnNTdHJpbmcuc3BsaXQoJywnKSkgewogICAgICAgICBhdXRvIG5vcm1h
bGl6ZWROYW1lID0gbmFtZS5zdHJpcFdoaXRlU3BhY2UoKS5jb252ZXJ0VG9BU0NJSUxvd2VyY2Fz
ZSgpOwogICAgICAgICBpZiAobm9ybWFsaXplZE5hbWUgPT0gd2F0Y2hBZGFwdGF0aW9uTmFtZSgp
KQotICAgICAgICAgICAgZGlzYWJsZWRBZGFwdGF0aW9ucyB8PSBEaXNhYmxlZEFkYXB0YXRpb25z
OjpXYXRjaDsKKyAgICAgICAgICAgIGRpc2FibGVkQWRhcHRhdGlvbnMuYWRkKERpc2FibGVkQWRh
cHRhdGlvbnM6OldhdGNoKTsKICAgICB9CiAgICAgcmV0dXJuIGRpc2FibGVkQWRhcHRhdGlvbnM7
CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3ku
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQ
b2xpY3kuaAkocmV2aXNpb24gMjM1NTM5KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29u
dGVudFNlY3VyaXR5UG9saWN5LmgJKHdvcmtpbmcgY29weSkKQEAgLTE1MSwxMSArMTUxLDExIEBA
IHB1YmxpYzoKICAgICB2b2lkIGVuZm9yY2VTYW5kYm94RmxhZ3MoU2FuZGJveEZsYWdzIHNhbmRi
b3hGbGFncykgeyBtX3NhbmRib3hGbGFncyB8PSBzYW5kYm94RmxhZ3M7IH0KICAgICB2b2lkIGFk
ZEhhc2hBbGdvcml0aG1zRm9ySW5saW5lU2NyaXB0cyhPcHRpb25TZXQ8Q29udGVudFNlY3VyaXR5
UG9saWN5SGFzaEFsZ29yaXRobT4gaGFzaEFsZ29yaXRobXNGb3JJbmxpbmVTY3JpcHRzKQogICAg
IHsKLSAgICAgICAgbV9oYXNoQWxnb3JpdGhtc0ZvcklubGluZVNjcmlwdHMgfD0gaGFzaEFsZ29y
aXRobXNGb3JJbmxpbmVTY3JpcHRzOworICAgICAgICBtX2hhc2hBbGdvcml0aG1zRm9ySW5saW5l
U2NyaXB0cy5hZGQoaGFzaEFsZ29yaXRobXNGb3JJbmxpbmVTY3JpcHRzKTsKICAgICB9CiAgICAg
dm9pZCBhZGRIYXNoQWxnb3JpdGhtc0ZvcklubGluZVN0eWxlc2hlZXRzKE9wdGlvblNldDxDb250
ZW50U2VjdXJpdHlQb2xpY3lIYXNoQWxnb3JpdGhtPiBoYXNoQWxnb3JpdGhtc0ZvcklubGluZVN0
eWxlc2hlZXRzKQogICAgIHsKLSAgICAgICAgbV9oYXNoQWxnb3JpdGhtc0ZvcklubGluZVN0eWxl
c2hlZXRzIHw9IGhhc2hBbGdvcml0aG1zRm9ySW5saW5lU3R5bGVzaGVldHM7CisgICAgICAgIG1f
aGFzaEFsZ29yaXRobXNGb3JJbmxpbmVTdHlsZXNoZWV0cy5hZGQoaGFzaEFsZ29yaXRobXNGb3JJ
bmxpbmVTdHlsZXNoZWV0cyk7CiAgICAgfQogCiAgICAgLy8gVXNlZCBieSBDb250ZW50U2VjdXJp
dHlQb2xpY3lTb3VyY2UKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1
cml0eVBvbGljeVNvdXJjZUxpc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3QuY3BwCShyZXZpc2lvbiAyMzU1
MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3Vy
Y2VMaXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDczLDcgKzQ3Myw3IEBAIGJvb2wgQ29udGVu
dFNlY3VyaXR5UG9saWN5U291cmNlTGlzdDo6cGEKICAgICBpZiAoZGlnZXN0LT52YWx1ZS5zaXpl
KCkgPiBDb250ZW50U2VjdXJpdHlQb2xpY3lIYXNoOjptYXhpbXVtRGlnZXN0TGVuZ3RoKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBtX2hhc2hBbGdvcml0aG1zVXNlZCB8PSBkaWdlc3Qt
PmFsZ29yaXRobTsKKyAgICBtX2hhc2hBbGdvcml0aG1zVXNlZC5hZGQoZGlnZXN0LT5hbGdvcml0
aG0pOwogICAgIG1faGFzaGVzLmFkZChXVEZNb3ZlKCpkaWdlc3QpKTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtRXZlbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUV2ZW50LmgJKHJldmlz
aW9uIDIzNTUzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtRXZlbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtMTE1LDEzICsxMTUsMTMgQEAgcHJvdGVjdGVkOgogICAgICAgICAs
IG1fdGltZXN0YW1wKHRpbWVzdGFtcCkKICAgICB7CiAgICAgICAgIGlmIChzaGlmdEtleSkKLSAg
ICAgICAgICAgIG1fbW9kaWZpZXJzIHw9IE1vZGlmaWVyOjpTaGlmdEtleTsKKyAgICAgICAgICAg
IG1fbW9kaWZpZXJzLmFkZChNb2RpZmllcjo6U2hpZnRLZXkpOwogICAgICAgICBpZiAoY3RybEtl
eSkKLSAgICAgICAgICAgIG1fbW9kaWZpZXJzIHw9IE1vZGlmaWVyOjpDdHJsS2V5OworICAgICAg
ICAgICAgbV9tb2RpZmllcnMuYWRkKE1vZGlmaWVyOjpDdHJsS2V5KTsKICAgICAgICAgaWYgKGFs
dEtleSkKLSAgICAgICAgICAgIG1fbW9kaWZpZXJzIHw9IE1vZGlmaWVyOjpBbHRLZXk7CisgICAg
ICAgICAgICBtX21vZGlmaWVycy5hZGQoTW9kaWZpZXI6OkFsdEtleSk7CiAgICAgICAgIGlmICht
ZXRhS2V5KQotICAgICAgICAgICAgbV9tb2RpZmllcnMgfD0gTW9kaWZpZXI6Ok1ldGFLZXk7Cisg
ICAgICAgICAgICBtX21vZGlmaWVycy5hZGQoTW9kaWZpZXI6Ok1ldGFLZXkpOwogICAgIH0KIAog
ICAgIC8vIEV4cGxpY2l0IHByb3RlY3RlZCBkZXN0cnVjdG9yIHNvIHRoYXQgcGVvcGxlIGRvbid0
IGFjY2lkZW50YWxseQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3Jt
RXZlbnRGYWN0b3J5SU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9QbGF0Zm9ybUV2ZW50RmFjdG9yeUlPUy5tbQkocmV2aXNpb24gMjM1NTM5KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtRXZlbnRGYWN0b3J5SU9TLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MywxNSArNDMsMTUgQEAgc3RhdGljIE9wdGlvblNldDxQbGF0Zm9ybUV2
ZW50OjpNb2RpZmllcgogICAgIE9wdGlvblNldDxQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcj4gbW9k
aWZpZXJzOwogCiAgICAgaWYgKGV2ZW50Lm1vZGlmaWVyRmxhZ3MgJiBXZWJFdmVudEZsYWdNYXNr
U2hpZnQpCi0gICAgICAgIG1vZGlmaWVycyB8PSBQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcjo6U2hp
ZnRLZXk7CisgICAgICAgIG1vZGlmaWVycy5hZGQoUGxhdGZvcm1FdmVudDo6TW9kaWZpZXI6OlNo
aWZ0S2V5KTsKICAgICBpZiAoZXZlbnQubW9kaWZpZXJGbGFncyAmIFdlYkV2ZW50RmxhZ01hc2tD
b250cm9sKQotICAgICAgICBtb2RpZmllcnMgfD0gUGxhdGZvcm1FdmVudDo6TW9kaWZpZXI6OkN0
cmxLZXk7CisgICAgICAgIG1vZGlmaWVycy5hZGQoUGxhdGZvcm1FdmVudDo6TW9kaWZpZXI6OkN0
cmxLZXkpOwogICAgIGlmIChldmVudC5tb2RpZmllckZsYWdzICYgV2ViRXZlbnRGbGFnTWFza0Fs
dGVybmF0ZSkKLSAgICAgICAgbW9kaWZpZXJzIHw9IFBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVyOjpB
bHRLZXk7CisgICAgICAgIG1vZGlmaWVycy5hZGQoUGxhdGZvcm1FdmVudDo6TW9kaWZpZXI6OkFs
dEtleSk7CiAgICAgaWYgKGV2ZW50Lm1vZGlmaWVyRmxhZ3MgJiBXZWJFdmVudEZsYWdNYXNrQ29t
bWFuZCkKLSAgICAgICAgbW9kaWZpZXJzIHw9IFBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVyOjpNZXRh
S2V5OworICAgICAgICBtb2RpZmllcnMuYWRkKFBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVyOjpNZXRh
S2V5KTsKICAgICBpZiAoZXZlbnQubW9kaWZpZXJGbGFncyAmIFdlYkV2ZW50RmxhZ01hc2tBbHBo
YVNoaWZ0KQotICAgICAgICBtb2RpZmllcnMgfD0gUGxhdGZvcm1FdmVudDo6TW9kaWZpZXI6OkNh
cHNMb2NrS2V5OworICAgICAgICBtb2RpZmllcnMuYWRkKFBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVy
OjpDYXBzTG9ja0tleSk7CiAKICAgICByZXR1cm4gbW9kaWZpZXJzOwogfQpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtRXZlbnRGYWN0b3J5TWFjLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybUV2ZW50RmFjdG9yeU1h
Yy5tbQkocmV2aXNpb24gMjM1NTM5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bs
YXRmb3JtRXZlbnRGYWN0b3J5TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC02NjYsMTUgKzY2Niwx
NSBAQCBPcHRpb25TZXQ8UGxhdGZvcm1FdmVudDo6TW9kaWZpZXI+IG1vZGlmCiAgICAgT3B0aW9u
U2V0PFBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVyPiBtb2RpZmllcnM7CiAKICAgICBpZiAoZXZlbnQu
bW9kaWZpZXJGbGFncyAmIE5TRXZlbnRNb2RpZmllckZsYWdTaGlmdCkKLSAgICAgICAgbW9kaWZp
ZXJzIHw9IFBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVyOjpTaGlmdEtleTsKKyAgICAgICAgbW9kaWZp
ZXJzLmFkZChQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcjo6U2hpZnRLZXkpOwogICAgIGlmIChldmVu
dC5tb2RpZmllckZsYWdzICYgTlNFdmVudE1vZGlmaWVyRmxhZ0NvbnRyb2wpCi0gICAgICAgIG1v
ZGlmaWVycyB8PSBQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcjo6Q3RybEtleTsKKyAgICAgICAgbW9k
aWZpZXJzLmFkZChQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcjo6Q3RybEtleSk7CiAgICAgaWYgKGV2
ZW50Lm1vZGlmaWVyRmxhZ3MgJiBOU0V2ZW50TW9kaWZpZXJGbGFnT3B0aW9uKQotICAgICAgICBt
b2RpZmllcnMgfD0gUGxhdGZvcm1FdmVudDo6TW9kaWZpZXI6OkFsdEtleTsKKyAgICAgICAgbW9k
aWZpZXJzLmFkZChQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcjo6QWx0S2V5KTsKICAgICBpZiAoZXZl
bnQubW9kaWZpZXJGbGFncyAmIE5TRXZlbnRNb2RpZmllckZsYWdDb21tYW5kKQotICAgICAgICBt
b2RpZmllcnMgfD0gUGxhdGZvcm1FdmVudDo6TW9kaWZpZXI6Ok1ldGFLZXk7CisgICAgICAgIG1v
ZGlmaWVycy5hZGQoUGxhdGZvcm1FdmVudDo6TW9kaWZpZXI6Ok1ldGFLZXkpOwogICAgIGlmIChl
dmVudC5tb2RpZmllckZsYWdzICYgTlNFdmVudE1vZGlmaWVyRmxhZ0NhcHNMb2NrKQotICAgICAg
ICBtb2RpZmllcnMgfD0gUGxhdGZvcm1FdmVudDo6TW9kaWZpZXI6OkNhcHNMb2NrS2V5OworICAg
ICAgICBtb2RpZmllcnMuYWRkKFBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVyOjpDYXBzTG9ja0tleSk7
CiAKICAgICByZXR1cm4gbW9kaWZpZXJzOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXIuY3BwCShyZXZpc2lvbiAyMzU1MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NTcsMTcgKzU1Nywx
NyBAQCB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVMYXllclBvc2l0aW9ucyhSCiAgICAgLy8gQ2xl
YXIgdGhlIElzQ29tcG9zaXRpbmdVcGRhdGVSb290IGZsYWcgb25jZSB3ZSd2ZSBmb3VuZCB0aGUg
Zmlyc3QgY29tcG9zaXRpbmcgbGF5ZXIgaW4gdGhpcyB1cGRhdGUuCiAgICAgYm9vbCBpc1VwZGF0
ZVJvb3QgPSBmbGFncy5jb250YWlucyhJc0NvbXBvc2l0aW5nVXBkYXRlUm9vdCk7CiAgICAgaWYg
KGlzQ29tcG9zaXRlZCgpKQotICAgICAgICBmbGFncyAtPSBJc0NvbXBvc2l0aW5nVXBkYXRlUm9v
dDsKKyAgICAgICAgZmxhZ3MucmVtb3ZlKElzQ29tcG9zaXRpbmdVcGRhdGVSb290KTsKIAogICAg
IGlmIChyZW5kZXJlcigpLmlzSW5GbG93UmVuZGVyRnJhZ21lbnRlZEZsb3coKSkgewogICAgICAg
ICB1cGRhdGVQYWdpbmF0aW9uKCk7Ci0gICAgICAgIGZsYWdzIHw9IFVwZGF0ZVBhZ2luYXRpb247
CisgICAgICAgIGZsYWdzLmFkZChVcGRhdGVQYWdpbmF0aW9uKTsKICAgICB9CiAKICAgICBpZiAo
dHJhbnNmb3JtKCkpIHsKLSAgICAgICAgZmxhZ3MgfD0gU2VlblRyYW5zZm9ybWVkTGF5ZXI7Cisg
ICAgICAgIGZsYWdzLmFkZChTZWVuVHJhbnNmb3JtZWRMYXllcik7CiAgICAgICAgIGlmICghdHJh
bnNmb3JtKCktPmlzQWZmaW5lKCkpCi0gICAgICAgICAgICBmbGFncyB8PSBTZWVuM0RUcmFuc2Zv
cm1lZExheWVyOworICAgICAgICAgICAgZmxhZ3MuYWRkKFNlZW4zRFRyYW5zZm9ybWVkTGF5ZXIp
OwogICAgIH0KIAogICAgIGZvciAoUmVuZGVyTGF5ZXIqIGNoaWxkID0gZmlyc3RDaGlsZCgpOyBj
aGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkKQEAgLTU3Niw5ICs1NzYsOSBAQCB2
b2lkIFJlbmRlckxheWVyOjp1cGRhdGVMYXllclBvc2l0aW9ucyhSCiAgICAgaWYgKChmbGFncyAm
IFVwZGF0ZUNvbXBvc2l0aW5nTGF5ZXJzKSAmJiBpc0NvbXBvc2l0ZWQoKSkgewogICAgICAgICBP
cHRpb25TZXQ8UmVuZGVyTGF5ZXJCYWNraW5nOjpVcGRhdGVBZnRlckxheW91dEZsYWdzPiB1cGRh
dGVGbGFnczsKICAgICAgICAgaWYgKGZsYWdzICYgTmVlZHNGdWxsUmVwYWludEluQmFja2luZykK
LSAgICAgICAgICAgIHVwZGF0ZUZsYWdzIHw9IFJlbmRlckxheWVyQmFja2luZzo6VXBkYXRlQWZ0
ZXJMYXlvdXRGbGFnczo6TmVlZHNGdWxsUmVwYWludDsKKyAgICAgICAgICAgIHVwZGF0ZUZsYWdz
LmFkZChSZW5kZXJMYXllckJhY2tpbmc6OlVwZGF0ZUFmdGVyTGF5b3V0RmxhZ3M6Ok5lZWRzRnVs
bFJlcGFpbnQpOwogICAgICAgICBpZiAoaXNVcGRhdGVSb290KQotICAgICAgICAgICAgdXBkYXRl
RmxhZ3MgfD0gUmVuZGVyTGF5ZXJCYWNraW5nOjpVcGRhdGVBZnRlckxheW91dEZsYWdzOjpJc1Vw
ZGF0ZVJvb3Q7CisgICAgICAgICAgICB1cGRhdGVGbGFncy5hZGQoUmVuZGVyTGF5ZXJCYWNraW5n
OjpVcGRhdGVBZnRlckxheW91dEZsYWdzOjpJc1VwZGF0ZVJvb3QpOwogICAgICAgICBiYWNraW5n
KCktPnVwZGF0ZUFmdGVyTGF5b3V0KHVwZGF0ZUZsYWdzKTsKICAgICB9CiAgICAgICAgIApAQCAt
ODUxLDE2ICs4NTEsMTYgQEAgdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlTGF5ZXJQb3NpdGlvbnNB
ZgogCiAgICAgYm9vbCBwb3NpdGlvbkNoYW5nZWQgPSB1cGRhdGVMYXllclBvc2l0aW9uKCk7CiAg
ICAgaWYgKHBvc2l0aW9uQ2hhbmdlZCkKLSAgICAgICAgZmxhZ3MgfD0gSGFzQ2hhbmdlZEFuY2Vz
dG9yOworICAgICAgICBmbGFncy5hZGQoSGFzQ2hhbmdlZEFuY2VzdG9yKTsKIAogICAgIGlmIChm
bGFncy5jb250YWluc0FueSh7IEhhc0NoYW5nZWRBbmNlc3RvciwgSGFzU2VlblZpZXdwb3J0Q29u
c3RyYWluZWRBbmNlc3RvciwgSXNPdmVyZmxvd1Njcm9sbCB9KSkKICAgICAgICAgY2xlYXJDbGlw
UmVjdHMoKTsKIAogICAgIGlmIChyZW5kZXJlcigpLnN0eWxlKCkuaGFzVmlld3BvcnRDb25zdHJh
aW5lZFBvc2l0aW9uKCkpCi0gICAgICAgIGZsYWdzIHw9IEhhc1NlZW5WaWV3cG9ydENvbnN0cmFp
bmVkQW5jZXN0b3I7CisgICAgICAgIGZsYWdzLmFkZChIYXNTZWVuVmlld3BvcnRDb25zdHJhaW5l
ZEFuY2VzdG9yKTsKIAogICAgIGlmIChyZW5kZXJlcigpLmhhc092ZXJmbG93Q2xpcCgpKQotICAg
ICAgICBmbGFncyB8PSBIYXNTZWVuQW5jZXN0b3JXaXRoT3ZlcmZsb3dDbGlwOworICAgICAgICBm
bGFncy5hZGQoSGFzU2VlbkFuY2VzdG9yV2l0aE92ZXJmbG93Q2xpcCk7CiAgICAgCiAgICAgYm9v
bCBzaG91bGRDb21wdXRlUmVwYWludFJlY3RzID0gKGZsYWdzLmNvbnRhaW5zKEhhc1NlZW5WaWV3
cG9ydENvbnN0cmFpbmVkQW5jZXN0b3IpIHx8IGZsYWdzLmNvbnRhaW5zQWxsKHsgSXNPdmVyZmxv
d1Njcm9sbCwgSGFzU2VlbkFuY2VzdG9yV2l0aE92ZXJmbG93Q2xpcCB9KSkgJiYgaXNTZWxmUGFp
bnRpbmdMYXllcigpOwogICAgIGJvb2wgaXNWaXN1YWxseUVtcHR5ID0gIWlzVmlzdWFsbHlOb25F
bXB0eSgpOwpAQCAtMzk3Myw3ICszOTczLDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMYXll
cihHcmFwaGljc0NvbgogICAgICAgICAvLyBUaGUgcGVyZm9ybWluZ1BhaW50SW52YWxpZGF0aW9u
KCkgcGFpbnRpbmcgcGFzcyBnb2VzIHRocm91Z2ggY29tcG9zaXRpbmcgbGF5ZXJzLAogICAgICAg
ICAvLyBidXQgd2UgbmVlZCB0byBlbnN1cmUgdGhhdCB3ZSBkb24ndCBjYWNoZSBjbGlwIHJlY3Rz
IGNvbXB1dGVkIHdpdGggdGhlIHdyb25nIHJvb3QgaW4gdGhpcyBjYXNlLgogICAgICAgICBpZiAo
Y29udGV4dC5wZXJmb3JtaW5nUGFpbnRJbnZhbGlkYXRpb24oKSB8fCAocGFpbnRpbmdJbmZvLnBh
aW50QmVoYXZpb3IgJiBQYWludEJlaGF2aW9yOjpGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMpKQot
ICAgICAgICAgICAgcGFpbnRGbGFncyB8PSBQYWludExheWVyVGVtcG9yYXJ5Q2xpcFJlY3RzOwor
ICAgICAgICAgICAgcGFpbnRGbGFncy5hZGQoUGFpbnRMYXllclRlbXBvcmFyeUNsaXBSZWN0cyk7
CiAgICAgICAgIGVsc2UgaWYgKCFiYWNraW5nKCktPnBhaW50c0ludG9XaW5kb3coKQogICAgICAg
ICAgICAgJiYgIWJhY2tpbmcoKS0+cGFpbnRzSW50b0NvbXBvc2l0ZWRBbmNlc3RvcigpCiAgICAg
ICAgICAgICAmJiAhc2hvdWxkRG9Tb2Z0d2FyZVBhaW50KHRoaXMsIHBhaW50RmxhZ3MuY29udGFp
bnMoUGFpbnRMYXllclBhaW50aW5nUmVmbGVjdGlvbikpCkBAIC00MDAwLDcgKzQwMDAsNyBAQCB2
b2lkIFJlbmRlckxheWVyOjpwYWludExheWVyKEdyYXBoaWNzQ29uCiAgICAgICAgIHJldHVybjsK
IAogICAgIGlmIChwYWludHNXaXRoVHJhbnNwYXJlbmN5KHBhaW50aW5nSW5mby5wYWludEJlaGF2
aW9yKSkKLSAgICAgICAgcGFpbnRGbGFncyB8PSBQYWludExheWVySGF2ZVRyYW5zcGFyZW5jeTsK
KyAgICAgICAgcGFpbnRGbGFncy5hZGQoUGFpbnRMYXllckhhdmVUcmFuc3BhcmVuY3kpOwogCiAg
ICAgLy8gUGFpbnRMYXllckFwcGxpZWRUcmFuc2Zvcm0gaXMgdXNlZCBpbiBSZW5kZXJSZXBsaWNh
LCB0byBhdm9pZCBhcHBseWluZyB0aGUgdHJhbnNmb3JtIHR3aWNlLgogICAgIGlmIChwYWludHNX
aXRoVHJhbnNmb3JtKHBhaW50aW5nSW5mby5wYWludEJlaGF2aW9yKSAmJiAhKHBhaW50RmxhZ3Mg
JiBQYWludExheWVyQXBwbGllZFRyYW5zZm9ybSkpIHsKQEAgLTQwNjEsNyArNDA2MSw3IEBAIHZv
aWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJDb250ZW50c0FuZFIKICAgICAgICAgbV9wYWludGlu
Z0luc2lkZVJlZmxlY3Rpb24gPSBmYWxzZTsKICAgICB9CiAKLSAgICBsb2NhbFBhaW50RmxhZ3Mg
fD0gcGFpbnRMYXllclBhaW50aW5nQ29tcG9zaXRpbmdBbGxQaGFzZXNGbGFncygpOworICAgIGxv
Y2FsUGFpbnRGbGFncy5hZGQocGFpbnRMYXllclBhaW50aW5nQ29tcG9zaXRpbmdBbGxQaGFzZXNG
bGFncygpKTsKICAgICBwYWludExheWVyQ29udGVudHMoY29udGV4dCwgcGFpbnRpbmdJbmZvLCBs
b2NhbFBhaW50RmxhZ3MpOwogfQogCkBAIC00MzU1LDIxICs0MzU1LDIxIEBAIHZvaWQgUmVuZGVy
TGF5ZXI6OnBhaW50TGF5ZXJDb250ZW50cyhHcmEKIAogICAgICAgICBPcHRpb25TZXQ8UGFpbnRC
ZWhhdmlvcj4gcGFpbnRCZWhhdmlvciA9IFBhaW50QmVoYXZpb3I6Ok5vcm1hbDsKICAgICAgICAg
aWYgKGxvY2FsUGFpbnRGbGFncyAmIFBhaW50TGF5ZXJQYWludGluZ1NraXBSb290QmFja2dyb3Vu
ZCkKLSAgICAgICAgICAgIHBhaW50QmVoYXZpb3IgfD0gUGFpbnRCZWhhdmlvcjo6U2tpcFJvb3RC
YWNrZ3JvdW5kOworICAgICAgICAgICAgcGFpbnRCZWhhdmlvci5hZGQoUGFpbnRCZWhhdmlvcjo6
U2tpcFJvb3RCYWNrZ3JvdW5kKTsKICAgICAgICAgZWxzZSBpZiAobG9jYWxQYWludEZsYWdzICYg
UGFpbnRMYXllclBhaW50aW5nUm9vdEJhY2tncm91bmRPbmx5KQotICAgICAgICAgICAgcGFpbnRC
ZWhhdmlvciB8PSBQYWludEJlaGF2aW9yOjpSb290QmFja2dyb3VuZE9ubHk7CisgICAgICAgICAg
ICBwYWludEJlaGF2aW9yLmFkZChQYWludEJlaGF2aW9yOjpSb290QmFja2dyb3VuZE9ubHkpOwog
CiAgICAgICAgIGlmIChwYWludGluZ0luZm8ucGFpbnRCZWhhdmlvciAmIFBhaW50QmVoYXZpb3I6
OkZsYXR0ZW5Db21wb3NpdGluZ0xheWVycykKLSAgICAgICAgICAgIHBhaW50QmVoYXZpb3IgfD0g
UGFpbnRCZWhhdmlvcjo6RmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzOworICAgICAgICAgICAgcGFp
bnRCZWhhdmlvci5hZGQoUGFpbnRCZWhhdmlvcjo6RmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzKTsK
ICAgICAgICAgCiAgICAgICAgIGlmIChwYWludGluZ0luZm8ucGFpbnRCZWhhdmlvciAmIFBhaW50
QmVoYXZpb3I6OlNuYXBzaG90dGluZykKLSAgICAgICAgICAgIHBhaW50QmVoYXZpb3IgfD0gUGFp
bnRCZWhhdmlvcjo6U25hcHNob3R0aW5nOworICAgICAgICAgICAgcGFpbnRCZWhhdmlvci5hZGQo
UGFpbnRCZWhhdmlvcjo6U25hcHNob3R0aW5nKTsKICAgICAgICAgCiAgICAgICAgIGlmICgocGFp
bnRpbmdJbmZvLnBhaW50QmVoYXZpb3IgJiBQYWludEJlaGF2aW9yOjpUaWxlRmlyc3RQYWludCkg
JiYgaXNSZW5kZXJWaWV3TGF5ZXIoKSkKLSAgICAgICAgICAgIHBhaW50QmVoYXZpb3IgfD0gUGFp
bnRCZWhhdmlvcjo6VGlsZUZpcnN0UGFpbnQ7CisgICAgICAgICAgICBwYWludEJlaGF2aW9yLmFk
ZChQYWludEJlaGF2aW9yOjpUaWxlRmlyc3RQYWludCk7CiAKICAgICAgICAgaWYgKHBhaW50aW5n
SW5mby5wYWludEJlaGF2aW9yICYgUGFpbnRCZWhhdmlvcjo6RXhjbHVkZVNlbGVjdGlvbikKLSAg
ICAgICAgICAgIHBhaW50QmVoYXZpb3IgfD0gUGFpbnRCZWhhdmlvcjo6RXhjbHVkZVNlbGVjdGlv
bjsKKyAgICAgICAgICAgIHBhaW50QmVoYXZpb3IuYWRkKFBhaW50QmVoYXZpb3I6OkV4Y2x1ZGVT
ZWxlY3Rpb24pOwogCiAgICAgICAgIExheW91dFJlY3QgcGFpbnREaXJ0eVJlY3QgPSBsb2NhbFBh
aW50aW5nSW5mby5wYWludERpcnR5UmVjdDsKICAgICAgICAgaWYgKHNob3VsZFBhaW50Q29udGVu
dCB8fCBzaG91bGRQYWludE91dGxpbmUgfHwgaXNQYWludGluZ092ZXJsYXlTY3JvbGxiYXJzKSB7
CkBAIC00NDM4LDEzICs0NDM4LDEzIEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJDb250
ZW50cyhHcmEKICAgICBpZiAoc2hvdWxkUGFpbnRDb250ZW50ICYmICEoc2VsZWN0aW9uT25seSB8
fCBzZWxlY3Rpb25BbmRCYWNrZ3JvdW5kc09ubHkpKSB7CiAgICAgICAgIE9wdGlvblNldDxQYWlu
dEJlaGF2aW9yPiBwYWludEJlaGF2aW9yID0gUGFpbnRCZWhhdmlvcjo6Tm9ybWFsOwogICAgICAg
ICBpZiAocGFpbnRpbmdJbmZvLnBhaW50QmVoYXZpb3IgJiBQYWludEJlaGF2aW9yOjpGbGF0dGVu
Q29tcG9zaXRpbmdMYXllcnMpCi0gICAgICAgICAgICBwYWludEJlaGF2aW9yIHw9IFBhaW50QmVo
YXZpb3I6OkZsYXR0ZW5Db21wb3NpdGluZ0xheWVyczsKKyAgICAgICAgICAgIHBhaW50QmVoYXZp
b3IuYWRkKFBhaW50QmVoYXZpb3I6OkZsYXR0ZW5Db21wb3NpdGluZ0xheWVycyk7CiAgICAgICAg
IAogICAgICAgICBpZiAocGFpbnRpbmdJbmZvLnBhaW50QmVoYXZpb3IgJiBQYWludEJlaGF2aW9y
OjpTbmFwc2hvdHRpbmcpCi0gICAgICAgICAgICBwYWludEJlaGF2aW9yIHw9IFBhaW50QmVoYXZp
b3I6OlNuYXBzaG90dGluZzsKKyAgICAgICAgICAgIHBhaW50QmVoYXZpb3IuYWRkKFBhaW50QmVo
YXZpb3I6OlNuYXBzaG90dGluZyk7CiAgICAgICAgIAogICAgICAgICBpZiAocGFpbnRpbmdJbmZv
LnBhaW50QmVoYXZpb3IgJiBQYWludEJlaGF2aW9yOjpUaWxlRmlyc3RQYWludCkKLSAgICAgICAg
ICAgIHBhaW50QmVoYXZpb3IgfD0gUGFpbnRCZWhhdmlvcjo6VGlsZUZpcnN0UGFpbnQ7CisgICAg
ICAgICAgICBwYWludEJlaGF2aW9yLmFkZChQYWludEJlaGF2aW9yOjpUaWxlRmlyc3RQYWludCk7
CiAKICAgICAgICAgaWYgKHNob3VsZFBhaW50TWFzayhwYWludGluZ0luZm8ucGFpbnRCZWhhdmlv
ciwgbG9jYWxQYWludEZsYWdzKSkgewogICAgICAgICAgICAgLy8gUGFpbnQgdGhlIG1hc2sgZm9y
IHRoZSBmcmFnbWVudHMuCkBAIC00NzcwLDEzICs0NzcwLDEzIEBAIHZvaWQgUmVuZGVyTGF5ZXI6
OnBhaW50Rm9yZWdyb3VuZEZvckZyYWcKICAgICAgICAgbG9jYWxQYWludEJlaGF2aW9yID0gcGFp
bnRCZWhhdmlvcjsKIAogICAgIGlmIChsb2NhbFBhaW50aW5nSW5mby5wYWludEJlaGF2aW9yICYg
UGFpbnRCZWhhdmlvcjo6RXhjbHVkZVNlbGVjdGlvbikKLSAgICAgICAgbG9jYWxQYWludEJlaGF2
aW9yIHw9IFBhaW50QmVoYXZpb3I6OkV4Y2x1ZGVTZWxlY3Rpb247CisgICAgICAgIGxvY2FsUGFp
bnRCZWhhdmlvci5hZGQoUGFpbnRCZWhhdmlvcjo6RXhjbHVkZVNlbGVjdGlvbik7CiAgICAgCiAg
ICAgaWYgKGxvY2FsUGFpbnRpbmdJbmZvLnBhaW50QmVoYXZpb3IgJiBQYWludEJlaGF2aW9yOjpT
bmFwc2hvdHRpbmcpCi0gICAgICAgIGxvY2FsUGFpbnRCZWhhdmlvciB8PSBQYWludEJlaGF2aW9y
OjpTbmFwc2hvdHRpbmc7CisgICAgICAgIGxvY2FsUGFpbnRCZWhhdmlvci5hZGQoUGFpbnRCZWhh
dmlvcjo6U25hcHNob3R0aW5nKTsKICAgICAKICAgICBpZiAobG9jYWxQYWludGluZ0luZm8ucGFp
bnRCZWhhdmlvciAmIFBhaW50QmVoYXZpb3I6OlRpbGVGaXJzdFBhaW50KQotICAgICAgICBsb2Nh
bFBhaW50QmVoYXZpb3IgfD0gUGFpbnRCZWhhdmlvcjo6VGlsZUZpcnN0UGFpbnQ7CisgICAgICAg
IGxvY2FsUGFpbnRCZWhhdmlvci5hZGQoUGFpbnRCZWhhdmlvcjo6VGlsZUZpcnN0UGFpbnQpOwog
CiAgICAgLy8gT3B0aW1pemUgY2xpcHBpbmcgZm9yIHRoZSBzaW5nbGUgZnJhZ21lbnQgY2FzZS4K
ICAgICBib29sIHNob3VsZENsaXAgPSBsb2NhbFBhaW50aW5nSW5mby5jbGlwVG9EaXJ0eVJlY3Qg
JiYgbGF5ZXJGcmFnbWVudHMuc2l6ZSgpID09IDEgJiYgbGF5ZXJGcmFnbWVudHNbMF0uc2hvdWxk
UGFpbnRDb250ZW50ICYmICFsYXllckZyYWdtZW50c1swXS5mb3JlZ3JvdW5kUmVjdC5pc0VtcHR5
KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNr
aW5nLmNwcAkocmV2aXNpb24gMjM1NTM5KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyQmFja2luZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1MzQsMjQgKzI1MzQsMjQg
QEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnBhaW50SW50b0xheWVyKAogCiAgICAgT3B0aW9u
U2V0PFJlbmRlckxheWVyOjpQYWludExheWVyRmxhZz4gcGFpbnRGbGFnczsKICAgICBpZiAocGFp
bnRpbmdQaGFzZSAmIEdyYXBoaWNzTGF5ZXJQYWludEJhY2tncm91bmQpCi0gICAgICAgIHBhaW50
RmxhZ3MgfD0gUmVuZGVyTGF5ZXI6OlBhaW50TGF5ZXJQYWludGluZ0NvbXBvc2l0aW5nQmFja2dy
b3VuZFBoYXNlOworICAgICAgICBwYWludEZsYWdzLmFkZChSZW5kZXJMYXllcjo6UGFpbnRMYXll
clBhaW50aW5nQ29tcG9zaXRpbmdCYWNrZ3JvdW5kUGhhc2UpOwogICAgIGlmIChwYWludGluZ1Bo
YXNlICYgR3JhcGhpY3NMYXllclBhaW50Rm9yZWdyb3VuZCkKLSAgICAgICAgcGFpbnRGbGFncyB8
PSBSZW5kZXJMYXllcjo6UGFpbnRMYXllclBhaW50aW5nQ29tcG9zaXRpbmdGb3JlZ3JvdW5kUGhh
c2U7CisgICAgICAgIHBhaW50RmxhZ3MuYWRkKFJlbmRlckxheWVyOjpQYWludExheWVyUGFpbnRp
bmdDb21wb3NpdGluZ0ZvcmVncm91bmRQaGFzZSk7CiAgICAgaWYgKHBhaW50aW5nUGhhc2UgJiBH
cmFwaGljc0xheWVyUGFpbnRNYXNrKQotICAgICAgICBwYWludEZsYWdzIHw9IFJlbmRlckxheWVy
OjpQYWludExheWVyUGFpbnRpbmdDb21wb3NpdGluZ01hc2tQaGFzZTsKKyAgICAgICAgcGFpbnRG
bGFncy5hZGQoUmVuZGVyTGF5ZXI6OlBhaW50TGF5ZXJQYWludGluZ0NvbXBvc2l0aW5nTWFza1Bo
YXNlKTsKICAgICBpZiAocGFpbnRpbmdQaGFzZSAmIEdyYXBoaWNzTGF5ZXJQYWludENsaXBQYXRo
KQotICAgICAgICBwYWludEZsYWdzIHw9IFJlbmRlckxheWVyOjpQYWludExheWVyUGFpbnRpbmdD
b21wb3NpdGluZ0NsaXBQYXRoUGhhc2U7CisgICAgICAgIHBhaW50RmxhZ3MuYWRkKFJlbmRlckxh
eWVyOjpQYWludExheWVyUGFpbnRpbmdDb21wb3NpdGluZ0NsaXBQYXRoUGhhc2UpOwogICAgIGlm
IChwYWludGluZ1BoYXNlICYgR3JhcGhpY3NMYXllclBhaW50Q2hpbGRDbGlwcGluZ01hc2spCi0g
ICAgICAgIHBhaW50RmxhZ3MgfD0gUmVuZGVyTGF5ZXI6OlBhaW50TGF5ZXJQYWludGluZ0NoaWxk
Q2xpcHBpbmdNYXNrUGhhc2U7CisgICAgICAgIHBhaW50RmxhZ3MuYWRkKFJlbmRlckxheWVyOjpQ
YWludExheWVyUGFpbnRpbmdDaGlsZENsaXBwaW5nTWFza1BoYXNlKTsKICAgICBpZiAocGFpbnRp
bmdQaGFzZSAmIEdyYXBoaWNzTGF5ZXJQYWludE92ZXJmbG93Q29udGVudHMpCi0gICAgICAgIHBh
aW50RmxhZ3MgfD0gUmVuZGVyTGF5ZXI6OlBhaW50TGF5ZXJQYWludGluZ092ZXJmbG93Q29udGVu
dHM7CisgICAgICAgIHBhaW50RmxhZ3MuYWRkKFJlbmRlckxheWVyOjpQYWludExheWVyUGFpbnRp
bmdPdmVyZmxvd0NvbnRlbnRzKTsKICAgICBpZiAocGFpbnRpbmdQaGFzZSAmIEdyYXBoaWNzTGF5
ZXJQYWludENvbXBvc2l0ZWRTY3JvbGwpCi0gICAgICAgIHBhaW50RmxhZ3MgfD0gUmVuZGVyTGF5
ZXI6OlBhaW50TGF5ZXJQYWludGluZ0NvbXBvc2l0aW5nU2Nyb2xsaW5nUGhhc2U7CisgICAgICAg
IHBhaW50RmxhZ3MuYWRkKFJlbmRlckxheWVyOjpQYWludExheWVyUGFpbnRpbmdDb21wb3NpdGlu
Z1Njcm9sbGluZ1BoYXNlKTsKIAogICAgIGlmIChncmFwaGljc0xheWVyID09IG1fYmFja2dyb3Vu
ZExheWVyLmdldCgpICYmIG1fYmFja2dyb3VuZExheWVyUGFpbnRzRml4ZWRSb290QmFja2dyb3Vu
ZCkKLSAgICAgICAgcGFpbnRGbGFncyB8PSB7IFJlbmRlckxheWVyOjpQYWludExheWVyUGFpbnRp
bmdSb290QmFja2dyb3VuZE9ubHksIFJlbmRlckxheWVyOjpQYWludExheWVyUGFpbnRpbmdDb21w
b3NpdGluZ0ZvcmVncm91bmRQaGFzZSB9OyAvLyBOZWVkIFBhaW50TGF5ZXJQYWludGluZ0NvbXBv
c2l0aW5nRm9yZWdyb3VuZFBoYXNlIHRvIHdhbGsgY2hpbGQgbGF5ZXJzLgorICAgICAgICBwYWlu
dEZsYWdzLmFkZCh7IFJlbmRlckxheWVyOjpQYWludExheWVyUGFpbnRpbmdSb290QmFja2dyb3Vu
ZE9ubHksIFJlbmRlckxheWVyOjpQYWludExheWVyUGFpbnRpbmdDb21wb3NpdGluZ0ZvcmVncm91
bmRQaGFzZSB9KTsgLy8gTmVlZCBQYWludExheWVyUGFpbnRpbmdDb21wb3NpdGluZ0ZvcmVncm91
bmRQaGFzZSB0byB3YWxrIGNoaWxkIGxheWVycy4KICAgICBlbHNlIGlmIChjb21wb3NpdG9yKCku
Zml4ZWRSb290QmFja2dyb3VuZExheWVyKCkpCi0gICAgICAgIHBhaW50RmxhZ3MgfD0gUmVuZGVy
TGF5ZXI6OlBhaW50TGF5ZXJQYWludGluZ1NraXBSb290QmFja2dyb3VuZDsKKyAgICAgICAgcGFp
bnRGbGFncy5hZGQoUmVuZGVyTGF5ZXI6OlBhaW50TGF5ZXJQYWludGluZ1NraXBSb290QmFja2dy
b3VuZCk7CiAKICNpZm5kZWYgTkRFQlVHCiAgICAgUmVuZGVyRWxlbWVudDo6U2V0TGF5b3V0TmVl
ZGVkRm9yYmlkZGVuU2NvcGUgZm9yYmlkU2V0TmVlZHNMYXlvdXQoJnJlbmRlcmVyKCkpOwpAQCAt
MjYwOSwxMCArMjYwOSwxMCBAQCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6cGFpbnRDb250ZW50
cyhjCiAgICAgICAgIC8vIFdlIGhhdmUgdG8gdXNlIHRoZSBzYW1lIHJvb3QgYXMgZm9yIGhpdCB0
ZXN0aW5nLCBiZWNhdXNlIGJvdGggbWV0aG9kcyBjYW4gY29tcHV0ZSBhbmQgY2FjaGUgY2xpcFJl
Y3RzLgogICAgICAgICBPcHRpb25TZXQ8UGFpbnRCZWhhdmlvcj4gYmVoYXZpb3IgPSBQYWludEJl
aGF2aW9yOjpOb3JtYWw7CiAgICAgICAgIGlmIChsYXllclBhaW50QmVoYXZpb3IgPT0gR3JhcGhp
Y3NMYXllclBhaW50U25hcHNob3R0aW5nKQotICAgICAgICAgICAgYmVoYXZpb3IgfD0gUGFpbnRC
ZWhhdmlvcjo6U25hcHNob3R0aW5nOworICAgICAgICAgICAgYmVoYXZpb3IuYWRkKFBhaW50QmVo
YXZpb3I6OlNuYXBzaG90dGluZyk7CiAgICAgICAgIAogICAgICAgICBpZiAobGF5ZXJQYWludEJl
aGF2aW9yID09IEdyYXBoaWNzTGF5ZXJQYWludEZpcnN0VGlsZVBhaW50KQotICAgICAgICAgICAg
YmVoYXZpb3IgfD0gUGFpbnRCZWhhdmlvcjo6VGlsZUZpcnN0UGFpbnQ7CisgICAgICAgICAgICBi
ZWhhdmlvci5hZGQoUGFpbnRCZWhhdmlvcjo6VGlsZUZpcnN0UGFpbnQpOwogCiAgICAgICAgIHBh
aW50SW50b0xheWVyKGdyYXBoaWNzTGF5ZXIsIGNvbnRleHQsIGRpcnR5UmVjdCwgYmVoYXZpb3Is
IHBhaW50aW5nUGhhc2UpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXJDb21wb3NpdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAkocmV2aXNpb24gMjM1NTM5KQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTIxNjQsODkgKzIxNjQsODkgQEAgT3B0aW9uU2V0PENvbXBvc2l0aW5nUmVhc29uPiBS
ZW5kZXJMYXllcgogICAgIGF1dG8mIHJlbmRlcmVyID0gcmVuZGVyZXJGb3JDb21wb3NpdGluZ1Rl
c3RzKGxheWVyKTsKIAogICAgIGlmIChyZXF1aXJlc0NvbXBvc2l0aW5nRm9yVHJhbnNmb3JtKHJl
bmRlcmVyKSkKLSAgICAgICAgcmVhc29ucyB8PSBDb21wb3NpdGluZ1JlYXNvbjo6VHJhbnNmb3Jt
M0Q7CisgICAgICAgIHJlYXNvbnMuYWRkKENvbXBvc2l0aW5nUmVhc29uOjpUcmFuc2Zvcm0zRCk7
CiAKICAgICBpZiAocmVxdWlyZXNDb21wb3NpdGluZ0ZvclZpZGVvKHJlbmRlcmVyKSkKLSAgICAg
ICAgcmVhc29ucyB8PSBDb21wb3NpdGluZ1JlYXNvbjo6VmlkZW87CisgICAgICAgIHJlYXNvbnMu
YWRkKENvbXBvc2l0aW5nUmVhc29uOjpWaWRlbyk7CiAgICAgZWxzZSBpZiAocmVxdWlyZXNDb21w
b3NpdGluZ0ZvckNhbnZhcyhyZW5kZXJlcikpCi0gICAgICAgIHJlYXNvbnMgfD0gQ29tcG9zaXRp
bmdSZWFzb246OkNhbnZhczsKKyAgICAgICAgcmVhc29ucy5hZGQoQ29tcG9zaXRpbmdSZWFzb246
OkNhbnZhcyk7CiAgICAgZWxzZSBpZiAocmVxdWlyZXNDb21wb3NpdGluZ0ZvclBsdWdpbihyZW5k
ZXJlcikpCi0gICAgICAgIHJlYXNvbnMgfD0gQ29tcG9zaXRpbmdSZWFzb246OlBsdWdpbjsKKyAg
ICAgICAgcmVhc29ucy5hZGQoQ29tcG9zaXRpbmdSZWFzb246OlBsdWdpbik7CiAgICAgZWxzZSBp
ZiAocmVxdWlyZXNDb21wb3NpdGluZ0ZvckZyYW1lKHJlbmRlcmVyKSkKLSAgICAgICAgcmVhc29u
cyB8PSBDb21wb3NpdGluZ1JlYXNvbjo6SUZyYW1lOworICAgICAgICByZWFzb25zLmFkZChDb21w
b3NpdGluZ1JlYXNvbjo6SUZyYW1lKTsKIAogICAgIGlmICgoY2FuUmVuZGVyM0RUcmFuc2Zvcm1z
KCkgJiYgcmVuZGVyZXIuc3R5bGUoKS5iYWNrZmFjZVZpc2liaWxpdHkoKSA9PSBCYWNrZmFjZVZp
c2liaWxpdHk6OkhpZGRlbikpCi0gICAgICAgIHJlYXNvbnMgfD0gQ29tcG9zaXRpbmdSZWFzb246
OkJhY2tmYWNlVmlzaWJpbGl0eUhpZGRlbjsKKyAgICAgICAgcmVhc29ucy5hZGQoQ29tcG9zaXRp
bmdSZWFzb246OkJhY2tmYWNlVmlzaWJpbGl0eUhpZGRlbik7CiAKICAgICBpZiAoY2xpcHNDb21w
b3NpdGluZ0Rlc2NlbmRhbnRzKCpyZW5kZXJlci5sYXllcigpKSkKLSAgICAgICAgcmVhc29ucyB8
PSBDb21wb3NpdGluZ1JlYXNvbjo6Q2xpcHNDb21wb3NpdGluZ0Rlc2NlbmRhbnRzOworICAgICAg
ICByZWFzb25zLmFkZChDb21wb3NpdGluZ1JlYXNvbjo6Q2xpcHNDb21wb3NpdGluZ0Rlc2NlbmRh
bnRzKTsKIAogICAgIGlmIChyZXF1aXJlc0NvbXBvc2l0aW5nRm9yQW5pbWF0aW9uKHJlbmRlcmVy
KSkKLSAgICAgICAgcmVhc29ucyB8PSBDb21wb3NpdGluZ1JlYXNvbjo6QW5pbWF0aW9uOworICAg
ICAgICByZWFzb25zLmFkZChDb21wb3NpdGluZ1JlYXNvbjo6QW5pbWF0aW9uKTsKIAogICAgIGlm
IChyZXF1aXJlc0NvbXBvc2l0aW5nRm9yRmlsdGVycyhyZW5kZXJlcikpCi0gICAgICAgIHJlYXNv
bnMgfD0gQ29tcG9zaXRpbmdSZWFzb246OkZpbHRlcnM7CisgICAgICAgIHJlYXNvbnMuYWRkKENv
bXBvc2l0aW5nUmVhc29uOjpGaWx0ZXJzKTsKIAogICAgIGlmIChyZXF1aXJlc0NvbXBvc2l0aW5n
Rm9yV2lsbENoYW5nZShyZW5kZXJlcikpCi0gICAgICAgIHJlYXNvbnMgfD0gQ29tcG9zaXRpbmdS
ZWFzb246OldpbGxDaGFuZ2U7CisgICAgICAgIHJlYXNvbnMuYWRkKENvbXBvc2l0aW5nUmVhc29u
OjpXaWxsQ2hhbmdlKTsKIAogICAgIGlmIChyZXF1aXJlc0NvbXBvc2l0aW5nRm9yUG9zaXRpb24o
cmVuZGVyZXIsICpyZW5kZXJlci5sYXllcigpKSkKLSAgICAgICAgcmVhc29ucyB8PSByZW5kZXJl
ci5pc0ZpeGVkUG9zaXRpb25lZCgpID8gQ29tcG9zaXRpbmdSZWFzb246OlBvc2l0aW9uRml4ZWQg
OiBDb21wb3NpdGluZ1JlYXNvbjo6UG9zaXRpb25TdGlja3k7CisgICAgICAgIHJlYXNvbnMuYWRk
KHJlbmRlcmVyLmlzRml4ZWRQb3NpdGlvbmVkKCkgPyBDb21wb3NpdGluZ1JlYXNvbjo6UG9zaXRp
b25GaXhlZCA6IENvbXBvc2l0aW5nUmVhc29uOjpQb3NpdGlvblN0aWNreSk7CiAKICNpZiBQTEFU
Rk9STShJT1MpCiAgICAgaWYgKHJlcXVpcmVzQ29tcG9zaXRpbmdGb3JTY3JvbGxpbmcoKnJlbmRl
cmVyLmxheWVyKCkpKQotICAgICAgICByZWFzb25zIHw9IENvbXBvc2l0aW5nUmVhc29uOjpPdmVy
Zmxvd1Njcm9sbGluZ1RvdWNoOworICAgICAgICByZWFzb25zLmFkZChDb21wb3NpdGluZ1JlYXNv
bjo6T3ZlcmZsb3dTY3JvbGxpbmdUb3VjaCk7CiAjZW5kaWYKIAogICAgIGlmIChyZXF1aXJlc0Nv
bXBvc2l0aW5nRm9yT3ZlcmZsb3dTY3JvbGxpbmcoKnJlbmRlcmVyLmxheWVyKCkpKQotICAgICAg
ICByZWFzb25zIHw9IENvbXBvc2l0aW5nUmVhc29uOjpPdmVyZmxvd1Njcm9sbGluZ1RvdWNoOwor
ICAgICAgICByZWFzb25zLmFkZChDb21wb3NpdGluZ1JlYXNvbjo6T3ZlcmZsb3dTY3JvbGxpbmdU
b3VjaCk7CiAKICAgICBzd2l0Y2ggKHJlbmRlcmVyLmxheWVyKCktPmluZGlyZWN0Q29tcG9zaXRp
bmdSZWFzb24oKSkgewogICAgIGNhc2UgUmVuZGVyTGF5ZXI6OkluZGlyZWN0Q29tcG9zaXRpbmdS
ZWFzb246Ok5vbmU6CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUmVuZGVyTGF5ZXI6OkluZGly
ZWN0Q29tcG9zaXRpbmdSZWFzb246OlN0YWNraW5nOgotICAgICAgICByZWFzb25zIHw9IENvbXBv
c2l0aW5nUmVhc29uOjpTdGFja2luZzsKKyAgICAgICAgcmVhc29ucy5hZGQoQ29tcG9zaXRpbmdS
ZWFzb246OlN0YWNraW5nKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBSZW5kZXJMYXllcjo6
SW5kaXJlY3RDb21wb3NpdGluZ1JlYXNvbjo6T3ZlcmxhcDoKLSAgICAgICAgcmVhc29ucyB8PSBD
b21wb3NpdGluZ1JlYXNvbjo6T3ZlcmxhcDsKKyAgICAgICAgcmVhc29ucy5hZGQoQ29tcG9zaXRp
bmdSZWFzb246Ok92ZXJsYXApOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFJlbmRlckxheWVy
OjpJbmRpcmVjdENvbXBvc2l0aW5nUmVhc29uOjpCYWNrZ3JvdW5kTGF5ZXI6Ci0gICAgICAgIHJl
YXNvbnMgfD0gQ29tcG9zaXRpbmdSZWFzb246Ok5lZ2F0aXZlWkluZGV4Q2hpbGRyZW47CisgICAg
ICAgIHJlYXNvbnMuYWRkKENvbXBvc2l0aW5nUmVhc29uOjpOZWdhdGl2ZVpJbmRleENoaWxkcmVu
KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBSZW5kZXJMYXllcjo6SW5kaXJlY3RDb21wb3Np
dGluZ1JlYXNvbjo6R3JhcGhpY2FsRWZmZWN0OgogICAgICAgICBpZiAocmVuZGVyZXIuaGFzVHJh
bnNmb3JtKCkpCi0gICAgICAgICAgICByZWFzb25zIHw9IENvbXBvc2l0aW5nUmVhc29uOjpUcmFu
c2Zvcm1XaXRoQ29tcG9zaXRlZERlc2NlbmRhbnRzOworICAgICAgICAgICAgcmVhc29ucy5hZGQo
Q29tcG9zaXRpbmdSZWFzb246OlRyYW5zZm9ybVdpdGhDb21wb3NpdGVkRGVzY2VuZGFudHMpOwog
CiAgICAgICAgIGlmIChyZW5kZXJlci5pc1RyYW5zcGFyZW50KCkpCi0gICAgICAgICAgICByZWFz
b25zIHw9IENvbXBvc2l0aW5nUmVhc29uOjpPcGFjaXR5V2l0aENvbXBvc2l0ZWREZXNjZW5kYW50
czsKKyAgICAgICAgICAgIHJlYXNvbnMuYWRkKENvbXBvc2l0aW5nUmVhc29uOjpPcGFjaXR5V2l0
aENvbXBvc2l0ZWREZXNjZW5kYW50cyk7CiAKICAgICAgICAgaWYgKHJlbmRlcmVyLmhhc01hc2so
KSkKLSAgICAgICAgICAgIHJlYXNvbnMgfD0gQ29tcG9zaXRpbmdSZWFzb246Ok1hc2tXaXRoQ29t
cG9zaXRlZERlc2NlbmRhbnRzOworICAgICAgICAgICAgcmVhc29ucy5hZGQoQ29tcG9zaXRpbmdS
ZWFzb246Ok1hc2tXaXRoQ29tcG9zaXRlZERlc2NlbmRhbnRzKTsKIAogICAgICAgICBpZiAocmVu
ZGVyZXIuaGFzUmVmbGVjdGlvbigpKQotICAgICAgICAgICAgcmVhc29ucyB8PSBDb21wb3NpdGlu
Z1JlYXNvbjo6UmVmbGVjdGlvbldpdGhDb21wb3NpdGVkRGVzY2VuZGFudHM7CisgICAgICAgICAg
ICByZWFzb25zLmFkZChDb21wb3NpdGluZ1JlYXNvbjo6UmVmbGVjdGlvbldpdGhDb21wb3NpdGVk
RGVzY2VuZGFudHMpOwogCiAgICAgICAgIGlmIChyZW5kZXJlci5oYXNGaWx0ZXIoKSB8fCByZW5k
ZXJlci5oYXNCYWNrZHJvcEZpbHRlcigpKQotICAgICAgICAgICAgcmVhc29ucyB8PSBDb21wb3Np
dGluZ1JlYXNvbjo6RmlsdGVyV2l0aENvbXBvc2l0ZWREZXNjZW5kYW50czsKKyAgICAgICAgICAg
IHJlYXNvbnMuYWRkKENvbXBvc2l0aW5nUmVhc29uOjpGaWx0ZXJXaXRoQ29tcG9zaXRlZERlc2Nl
bmRhbnRzKTsKIAogI2lmIEVOQUJMRShDU1NfQ09NUE9TSVRJTkcpCiAgICAgICAgIGlmIChsYXll
ci5pc29sYXRlc0NvbXBvc2l0ZWRCbGVuZGluZygpKQotICAgICAgICAgICAgcmVhc29ucyB8PSBD
b21wb3NpdGluZ1JlYXNvbjo6SXNvbGF0ZXNDb21wb3NpdGVkQmxlbmRpbmdEZXNjZW5kYW50czsK
KyAgICAgICAgICAgIHJlYXNvbnMuYWRkKENvbXBvc2l0aW5nUmVhc29uOjpJc29sYXRlc0NvbXBv
c2l0ZWRCbGVuZGluZ0Rlc2NlbmRhbnRzKTsKIAogICAgICAgICBpZiAobGF5ZXIuaGFzQmxlbmRN
b2RlKCkpCi0gICAgICAgICAgICByZWFzb25zIHw9IENvbXBvc2l0aW5nUmVhc29uOjpCbGVuZGlu
Z1dpdGhDb21wb3NpdGVkRGVzY2VuZGFudHM7CisgICAgICAgICAgICByZWFzb25zLmFkZChDb21w
b3NpdGluZ1JlYXNvbjo6QmxlbmRpbmdXaXRoQ29tcG9zaXRlZERlc2NlbmRhbnRzKTsKICNlbmRp
ZgogICAgICAgICBicmVhazsKICAgICBjYXNlIFJlbmRlckxheWVyOjpJbmRpcmVjdENvbXBvc2l0
aW5nUmVhc29uOjpQZXJzcGVjdGl2ZToKLSAgICAgICAgcmVhc29ucyB8PSBDb21wb3NpdGluZ1Jl
YXNvbjo6UGVyc3BlY3RpdmU7CisgICAgICAgIHJlYXNvbnMuYWRkKENvbXBvc2l0aW5nUmVhc29u
OjpQZXJzcGVjdGl2ZSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUmVuZGVyTGF5ZXI6Oklu
ZGlyZWN0Q29tcG9zaXRpbmdSZWFzb246OlByZXNlcnZlM0Q6Ci0gICAgICAgIHJlYXNvbnMgfD0g
Q29tcG9zaXRpbmdSZWFzb246OlByZXNlcnZlM0Q7CisgICAgICAgIHJlYXNvbnMuYWRkKENvbXBv
c2l0aW5nUmVhc29uOjpQcmVzZXJ2ZTNEKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAg
aWYgKGluQ29tcG9zaXRpbmdNb2RlKCkgJiYgcmVuZGVyZXIubGF5ZXIoKS0+aXNSZW5kZXJWaWV3
TGF5ZXIoKSkKLSAgICAgICAgcmVhc29ucyB8PSBDb21wb3NpdGluZ1JlYXNvbjo6Um9vdDsKKyAg
ICAgICAgcmVhc29ucy5hZGQoQ29tcG9zaXRpbmdSZWFzb246OlJvb3QpOwogCiAgICAgcmV0dXJu
IHJlYXNvbnM7CiB9CkBAIC0zNjI1LDEwICszNjI1LDEwIEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21w
b3NpdG9yOjp1cGRhdGVTY3JvbGwKIHsKICAgICBPcHRpb25TZXQ8TGF5ZXJTY3JvbGxDb29yZGlu
YXRpb25Sb2xlPiBjb29yZGluYXRpb25Sb2xlczsKICAgICBpZiAoaXNWaWV3cG9ydENvbnN0cmFp
bmVkRml4ZWRPclN0aWNreUxheWVyKGxheWVyKSkKLSAgICAgICAgY29vcmRpbmF0aW9uUm9sZXMg
fD0gVmlld3BvcnRDb25zdHJhaW5lZDsKKyAgICAgICAgY29vcmRpbmF0aW9uUm9sZXMuYWRkKFZp
ZXdwb3J0Q29uc3RyYWluZWQpOwogCiAgICAgaWYgKHVzZUNvb3JkaW5hdGVkU2Nyb2xsaW5nRm9y
TGF5ZXIobGF5ZXIpKQotICAgICAgICBjb29yZGluYXRpb25Sb2xlcyB8PSBTY3JvbGxpbmc7Cisg
ICAgICAgIGNvb3JkaW5hdGlvblJvbGVzLmFkZChTY3JvbGxpbmcpOwogCiAgICAgaWYgKGxheWVy
LmlzQ29tcG9zaXRlZCgpKQogICAgICAgICBsYXllci5iYWNraW5nKCktPnNldElzU2Nyb2xsQ29v
cmRpbmF0ZWRXaXRoVmlld3BvcnRDb25zdHJhaW5lZFJvbGUoY29vcmRpbmF0aW9uUm9sZXMuY29u
dGFpbnMoVmlld3BvcnRDb25zdHJhaW5lZCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1RleHREZWNvcmF0aW9uUGFpbnRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1RleHREZWNvcmF0aW9uUGFpbnRlci5jcHAJKHJldmlzaW9uIDIzNTUzOSkK
KysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBhaW50ZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zODMsMTcgKzM4MywxNyBAQCBzdGF0aWMgdm9pZCBjb2xsZWN0U3R5
bGVzRm9yUmVuZGVyZXIoVGV4CiAgICAgICAgIGF1dG8gZGVjb3JhdGlvblN0eWxlID0gc3R5bGUu
dGV4dERlY29yYXRpb25TdHlsZSgpOwogCiAgICAgICAgIGlmIChkZWNvcmF0aW9ucy5jb250YWlu
cyhUZXh0RGVjb3JhdGlvbjo6VW5kZXJsaW5lKSkgewotICAgICAgICAgICAgcmVtYWluaW5nRGVj
b3JhdGlvbnMgLT0gVGV4dERlY29yYXRpb246OlVuZGVybGluZTsKKyAgICAgICAgICAgIHJlbWFp
bmluZ0RlY29yYXRpb25zLnJlbW92ZShUZXh0RGVjb3JhdGlvbjo6VW5kZXJsaW5lKTsKICAgICAg
ICAgICAgIHJlc3VsdC51bmRlcmxpbmVDb2xvciA9IGNvbG9yOwogICAgICAgICAgICAgcmVzdWx0
LnVuZGVybGluZVN0eWxlID0gZGVjb3JhdGlvblN0eWxlOwogICAgICAgICB9CiAgICAgICAgIGlm
IChkZWNvcmF0aW9ucy5jb250YWlucyhUZXh0RGVjb3JhdGlvbjo6T3ZlcmxpbmUpKSB7Ci0gICAg
ICAgICAgICByZW1haW5pbmdEZWNvcmF0aW9ucyAtPSBUZXh0RGVjb3JhdGlvbjo6T3ZlcmxpbmU7
CisgICAgICAgICAgICByZW1haW5pbmdEZWNvcmF0aW9ucy5yZW1vdmUoVGV4dERlY29yYXRpb246
Ok92ZXJsaW5lKTsKICAgICAgICAgICAgIHJlc3VsdC5vdmVybGluZUNvbG9yID0gY29sb3I7CiAg
ICAgICAgICAgICByZXN1bHQub3ZlcmxpbmVTdHlsZSA9IGRlY29yYXRpb25TdHlsZTsKICAgICAg
ICAgfQogICAgICAgICBpZiAoZGVjb3JhdGlvbnMuY29udGFpbnMoVGV4dERlY29yYXRpb246Okxp
bmVUaHJvdWdoKSkgewotICAgICAgICAgICAgcmVtYWluaW5nRGVjb3JhdGlvbnMgLT0gVGV4dERl
Y29yYXRpb246OkxpbmVUaHJvdWdoOworICAgICAgICAgICAgcmVtYWluaW5nRGVjb3JhdGlvbnMu
cmVtb3ZlKFRleHREZWNvcmF0aW9uOjpMaW5lVGhyb3VnaCk7CiAgICAgICAgICAgICByZXN1bHQu
bGluZXRocm91Z2hDb2xvciA9IGNvbG9yOwogICAgICAgICAgICAgcmVzdWx0LmxpbmV0aHJvdWdo
U3R5bGUgPSBkZWNvcmF0aW9uU3R5bGU7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9UZXh0UGFpbnRTdHlsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1RleHRQYWludFN0eWxlLmNwcAkocmV2aXNpb24gMjM1NTM5KQorKysgU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWludFN0eWxlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTAwLDcgKzEwMCw3IEBAIFRleHRQYWludFN0eWxlIGNvbXB1dGVUZXh0UGFpbnRTdHlsZShj
b24KICAgICAgICAgaWYgKHBhZ2UgJiYgcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuaXNBY3RpdmUo
KSkgewogICAgICAgICAgICAgT3B0aW9uU2V0PFN0eWxlQ29sb3I6Ok9wdGlvbnM+IG9wdGlvbnM7
CiAgICAgICAgICAgICBpZiAocGFnZS0+dXNlU3lzdGVtQXBwZWFyYW5jZSgpKQotICAgICAgICAg
ICAgICAgIG9wdGlvbnMgfD0gU3R5bGVDb2xvcjo6T3B0aW9uczo6VXNlU3lzdGVtQXBwZWFyYW5j
ZTsKKyAgICAgICAgICAgICAgICBvcHRpb25zLmFkZChTdHlsZUNvbG9yOjpPcHRpb25zOjpVc2VT
eXN0ZW1BcHBlYXJhbmNlKTsKICAgICAgICAgICAgIHBhaW50U3R5bGUuZmlsbENvbG9yID0gUmVu
ZGVyVGhlbWU6OnNpbmdsZXRvbigpLnN5c3RlbUNvbG9yKENTU1ZhbHVlQWN0aXZlYnV0dG9udGV4
dCwgb3B0aW9ucyk7CiAgICAgICAgICAgICByZXR1cm4gcGFpbnRTdHlsZTsKICAgICAgICAgfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3Bw
CShyZXZpc2lvbiAyMzU1MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVu
ZGVyU3R5bGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MTMsNyArNjEzLDcgQEAgYm9vbCBSZW5k
ZXJTdHlsZTo6Y2hhbmdlUmVxdWlyZXNMYXlvdXQoYwogICAgICAgICAgICAgaWYgKG1fcmFyZU5v
bkluaGVyaXRlZERhdGEtPnRyYW5zZm9ybS0+aGFzVHJhbnNmb3JtKCkgIT0gb3RoZXIubV9yYXJl
Tm9uSW5oZXJpdGVkRGF0YS0+dHJhbnNmb3JtLT5oYXNUcmFuc2Zvcm0oKSkKICAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIGlmICgqbV9yYXJlTm9uSW5oZXJpdGVkRGF0
YS0+dHJhbnNmb3JtICE9ICpvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT50cmFuc2Zvcm0p
IHsKLSAgICAgICAgICAgICAgICBjaGFuZ2VkQ29udGV4dFNlbnNpdGl2ZVByb3BlcnRpZXMgfD0g
U3R5bGVEaWZmZXJlbmNlQ29udGV4dFNlbnNpdGl2ZVByb3BlcnR5OjpUcmFuc2Zvcm07CisgICAg
ICAgICAgICAgICAgY2hhbmdlZENvbnRleHRTZW5zaXRpdmVQcm9wZXJ0aWVzLmFkZChTdHlsZURp
ZmZlcmVuY2VDb250ZXh0U2Vuc2l0aXZlUHJvcGVydHk6OlRyYW5zZm9ybSk7CiAgICAgICAgICAg
ICAgICAgLy8gRG9uJ3QgcmV0dXJuOyBrZWVwIGxvb2tpbmcgZm9yIGFub3RoZXIgY2hhbmdlCiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTYyOSw3ICs2MjksNyBAQCBib29sIFJlbmRlclN0
eWxlOjpjaGFuZ2VSZXF1aXJlc0xheW91dChjCiAjZW5kaWYKIAogICAgICAgICBpZiAoIWFyZVBv
aW50aW5nVG9FcXVhbERhdGEobV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+d2lsbENoYW5nZSwgb3Ro
ZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+d2lsbENoYW5nZSkpIHsKLSAgICAgICAgICAgIGNo
YW5nZWRDb250ZXh0U2Vuc2l0aXZlUHJvcGVydGllcyB8PSBTdHlsZURpZmZlcmVuY2VDb250ZXh0
U2Vuc2l0aXZlUHJvcGVydHk6OldpbGxDaGFuZ2U7CisgICAgICAgICAgICBjaGFuZ2VkQ29udGV4
dFNlbnNpdGl2ZVByb3BlcnRpZXMuYWRkKFN0eWxlRGlmZmVyZW5jZUNvbnRleHRTZW5zaXRpdmVQ
cm9wZXJ0eTo6V2lsbENoYW5nZSk7CiAgICAgICAgICAgICAvLyBEb24ndCByZXR1cm47IGtlZXAg
bG9va2luZyBmb3IgYW5vdGhlciBjaGFuZ2UKICAgICAgICAgfQogICAgIH0KQEAgLTg0OSw3ICs4
NDksNyBAQCBib29sIFJlbmRlclN0eWxlOjpjaGFuZ2VSZXF1aXJlc0xheWVyUmVwCiAKICAgICBp
ZiAocG9zaXRpb24oKSAhPSBQb3NpdGlvblR5cGU6OlN0YXRpYykgewogICAgICAgICBpZiAobV92
aXN1YWxEYXRhLT5jbGlwICE9IG90aGVyLm1fdmlzdWFsRGF0YS0+Y2xpcCB8fCBtX3Zpc3VhbERh
dGEtPmhhc0NsaXAgIT0gb3RoZXIubV92aXN1YWxEYXRhLT5oYXNDbGlwKSB7Ci0gICAgICAgICAg
ICBjaGFuZ2VkQ29udGV4dFNlbnNpdGl2ZVByb3BlcnRpZXMgfD0gU3R5bGVEaWZmZXJlbmNlQ29u
dGV4dFNlbnNpdGl2ZVByb3BlcnR5OjpDbGlwUmVjdDsKKyAgICAgICAgICAgIGNoYW5nZWRDb250
ZXh0U2Vuc2l0aXZlUHJvcGVydGllcy5hZGQoU3R5bGVEaWZmZXJlbmNlQ29udGV4dFNlbnNpdGl2
ZVByb3BlcnR5OjpDbGlwUmVjdCk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAg
fQogICAgIH0KQEAgLTg2MCwxOCArODYwLDE4IEBAIGJvb2wgUmVuZGVyU3R5bGU6OmNoYW5nZVJl
cXVpcmVzTGF5ZXJSZXAKICNlbmRpZgogCiAgICAgaWYgKG1fcmFyZU5vbkluaGVyaXRlZERhdGEt
Pm9wYWNpdHkgIT0gb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+b3BhY2l0eSkgewotICAg
ICAgICBjaGFuZ2VkQ29udGV4dFNlbnNpdGl2ZVByb3BlcnRpZXMgfD0gU3R5bGVEaWZmZXJlbmNl
Q29udGV4dFNlbnNpdGl2ZVByb3BlcnR5OjpPcGFjaXR5OworICAgICAgICBjaGFuZ2VkQ29udGV4
dFNlbnNpdGl2ZVByb3BlcnRpZXMuYWRkKFN0eWxlRGlmZmVyZW5jZUNvbnRleHRTZW5zaXRpdmVQ
cm9wZXJ0eTo6T3BhY2l0eSk7CiAgICAgICAgIC8vIERvbid0IHJldHVybjsga2VlcCBsb29raW5n
IGZvciBhbm90aGVyIGNoYW5nZS4KICAgICB9CiAKICAgICBpZiAobV9yYXJlTm9uSW5oZXJpdGVk
RGF0YS0+ZmlsdGVyICE9IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmZpbHRlcikgewot
ICAgICAgICBjaGFuZ2VkQ29udGV4dFNlbnNpdGl2ZVByb3BlcnRpZXMgfD0gU3R5bGVEaWZmZXJl
bmNlQ29udGV4dFNlbnNpdGl2ZVByb3BlcnR5OjpGaWx0ZXI7CisgICAgICAgIGNoYW5nZWRDb250
ZXh0U2Vuc2l0aXZlUHJvcGVydGllcy5hZGQoU3R5bGVEaWZmZXJlbmNlQ29udGV4dFNlbnNpdGl2
ZVByb3BlcnR5OjpGaWx0ZXIpOwogICAgICAgICAvLyBEb24ndCByZXR1cm47IGtlZXAgbG9va2lu
ZyBmb3IgYW5vdGhlciBjaGFuZ2UuCiAgICAgfQogCiAjaWYgRU5BQkxFKEZJTFRFUlNfTEVWRUxf
MikKICAgICBpZiAobV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+YmFja2Ryb3BGaWx0ZXIgIT0gb3Ro
ZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+YmFja2Ryb3BGaWx0ZXIpIHsKLSAgICAgICAgY2hh
bmdlZENvbnRleHRTZW5zaXRpdmVQcm9wZXJ0aWVzIHw9IFN0eWxlRGlmZmVyZW5jZUNvbnRleHRT
ZW5zaXRpdmVQcm9wZXJ0eTo6RmlsdGVyOworICAgICAgICBjaGFuZ2VkQ29udGV4dFNlbnNpdGl2
ZVByb3BlcnRpZXMuYWRkKFN0eWxlRGlmZmVyZW5jZUNvbnRleHRTZW5zaXRpdmVQcm9wZXJ0eTo6
RmlsdGVyKTsKICAgICAgICAgLy8gRG9uJ3QgcmV0dXJuOyBrZWVwIGxvb2tpbmcgZm9yIGFub3Ro
ZXIgY2hhbmdlLgogICAgIH0KICNlbmRpZgpAQCAtOTIxLDcgKzkyMSw3IEBAIGJvb2wgUmVuZGVy
U3R5bGU6OmNoYW5nZVJlcXVpcmVzUmVwYWludCgKIAogICAgIC8vIEZJWE1FOiB0aGlzIHNob3Vs
ZCBwcm9iYWJseSBiZSBtb3ZlZCB0byBjaGFuZ2VSZXF1aXJlc0xheWVyUmVwYWludCgpLgogICAg
IGlmIChtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5jbGlwUGF0aCAhPSBvdGhlci5tX3JhcmVOb25J
bmhlcml0ZWREYXRhLT5jbGlwUGF0aCkgewotICAgICAgICBjaGFuZ2VkQ29udGV4dFNlbnNpdGl2
ZVByb3BlcnRpZXMgfD0gU3R5bGVEaWZmZXJlbmNlQ29udGV4dFNlbnNpdGl2ZVByb3BlcnR5OjpD
bGlwUGF0aDsKKyAgICAgICAgY2hhbmdlZENvbnRleHRTZW5zaXRpdmVQcm9wZXJ0aWVzLmFkZChT
dHlsZURpZmZlcmVuY2VDb250ZXh0U2Vuc2l0aXZlUHJvcGVydHk6OkNsaXBQYXRoKTsKICAgICAg
ICAgLy8gRG9uJ3QgcmV0dXJuOyBrZWVwIGxvb2tpbmcgZm9yIGFub3RoZXIgY2hhbmdlLgogICAg
IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAkocmV2aXNpb24gMjM1
NTM5KQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yMjQyLDcgKzIyNDIsNyBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8RmluZE9wdGlvbnM+
IHBhcnNlRmluCiAgICAgICAgIGJvb2wgZm91bmQgPSBmYWxzZTsKICAgICAgICAgZm9yIChhdXRv
JiBmbGFnIDogZmxhZ0xpc3QpIHsKICAgICAgICAgICAgIGlmIChmbGFnLm5hbWUgPT0gb3B0aW9u
KSB7Ci0gICAgICAgICAgICAgICAgcmVzdWx0IHw9IGZsYWcudmFsdWU7CisgICAgICAgICAgICAg
ICAgcmVzdWx0LmFkZChmbGFnLnZhbHVlKTsKICAgICAgICAgICAgICAgICBmb3VuZCA9IHRydWU7
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkBAIC0zMTg5LDcgKzMxODks
NyBAQCB2b2lkIEludGVybmFsczo6Zm9yY2VSZWxvYWQoYm9vbCBlbmRUb0VuCiB7CiAgICAgT3B0
aW9uU2V0PFJlbG9hZE9wdGlvbj4gcmVsb2FkT3B0aW9uczsKICAgICBpZiAoZW5kVG9FbmQpCi0g
ICAgICAgIHJlbG9hZE9wdGlvbnMgfD0gUmVsb2FkT3B0aW9uOjpGcm9tT3JpZ2luOworICAgICAg
ICByZWxvYWRPcHRpb25zLmFkZChSZWxvYWRPcHRpb246OkZyb21PcmlnaW4pOwogCiAgICAgZnJh
bWUoKS0+bG9hZGVyKCkucmVsb2FkKHJlbG9hZE9wdGlvbnMpOwogfQpAQCAtNDM0Miw5ICs0MzQy
LDkgQEAgdm9pZCBJbnRlcm5hbHM6OnNldFBhZ2VWaXNpYmlsaXR5KGJvb2wgaQogICAgIGF1dG8g
c3RhdGUgPSBwYWdlLmFjdGl2aXR5U3RhdGUoKTsKIAogICAgIGlmICghaXNWaXNpYmxlKQotICAg
ICAgICBzdGF0ZSAtPSBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGU7CisgICAgICAgIHN0YXRlLnJl
bW92ZShBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUpOwogICAgIGVsc2UKLSAgICAgICAgc3RhdGUg
fD0gQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlOworICAgICAgICBzdGF0ZS5hZGQoQWN0aXZpdHlT
dGF0ZTo6SXNWaXNpYmxlKTsKIAogICAgIHBhZ2Uuc2V0QWN0aXZpdHlTdGF0ZShzdGF0ZSk7CiB9
CkBAIC00MzU4LDkgKzQzNTgsOSBAQCB2b2lkIEludGVybmFsczo6c2V0UGFnZUlzRm9jdXNlZEFu
ZEFjdGl2CiAgICAgYXV0byBzdGF0ZSA9IHBhZ2UuYWN0aXZpdHlTdGF0ZSgpOwogCiAgICAgaWYg
KCFpc0ZvY3VzZWRBbmRBY3RpdmUpCi0gICAgICAgIHN0YXRlIC09IHsgQWN0aXZpdHlTdGF0ZTo6
SXNGb2N1c2VkLCBBY3Rpdml0eVN0YXRlOjpXaW5kb3dJc0FjdGl2ZSB9OworICAgICAgICBzdGF0
ZS5yZW1vdmUoeyBBY3Rpdml0eVN0YXRlOjpJc0ZvY3VzZWQsIEFjdGl2aXR5U3RhdGU6OldpbmRv
d0lzQWN0aXZlIH0pOwogICAgIGVsc2UKLSAgICAgICAgc3RhdGUgfD0geyBBY3Rpdml0eVN0YXRl
OjpJc0ZvY3VzZWQsIEFjdGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZlIH07CisgICAgICAgIHN0
YXRlLmFkZCh7IEFjdGl2aXR5U3RhdGU6OklzRm9jdXNlZCwgQWN0aXZpdHlTdGF0ZTo6V2luZG93
SXNBY3RpdmUgfSk7CiAKICAgICBwYWdlLnNldEFjdGl2aXR5U3RhdGUoc3RhdGUpOwogfQpJbmRl
eDogU291cmNlL1dlYkRyaXZlci9TZXNzaW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
RHJpdmVyL1Nlc3Npb24uY3BwCShyZXZpc2lvbiAyMzU1MzkpCisrKyBTb3VyY2UvV2ViRHJpdmVy
L1Nlc3Npb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTE0LDggKzE1MTQsNyBAQCB2b2lkIFNl
c3Npb246OmVsZW1lbnRDbGljayhjb25zdCBTdHJpbmcmCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBPcHRpb25TZXQ8RWxlbWVudExheW91dE9wdGlvbj4gb3B0aW9ucyA9IEVsZW1lbnRM
YXlvdXRPcHRpb246OlNjcm9sbEludG9WaWV3SWZOZWVkZWQ7Ci0gICAgb3B0aW9ucyB8PSBFbGVt
ZW50TGF5b3V0T3B0aW9uOjpVc2VWaWV3cG9ydENvb3JkaW5hdGVzOworICAgIE9wdGlvblNldDxF
bGVtZW50TGF5b3V0T3B0aW9uPiBvcHRpb25zID0geyBFbGVtZW50TGF5b3V0T3B0aW9uOjpTY3Jv
bGxJbnRvVmlld0lmTmVlZGVkLCBFbGVtZW50TGF5b3V0T3B0aW9uOjpVc2VWaWV3cG9ydENvb3Jk
aW5hdGVzIH07CiAgICAgY29tcHV0ZUVsZW1lbnRMYXlvdXQoZWxlbWVudElELCBvcHRpb25zLCBb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBlbGVtZW50SUQsIGNvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKHN0ZDo6b3B0aW9uYWw8UmVj
dD4mJiByZWN0LCBzdGQ6Om9wdGlvbmFsPFBvaW50PiYmIGluVmlld0NlbnRlciwgYm9vbCBpc09i
c2N1cmVkLCBSZWZQdHI8SlNPTjo6T2JqZWN0PiYmIGVycm9yKSBtdXRhYmxlIHsKICAgICAgICAg
aWYgKCFyZWN0IHx8IGVycm9yKSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihDb21t
YW5kUmVzdWx0OjpmYWlsKFdURk1vdmUoZXJyb3IpKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24g
MjM1NTM5KQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSw1OCBAQAorMjAxOC0wOC0zMSAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+
CisKKyAgICAgICAgUmVwbGFjZSBPcHRpb25TZXQgfD0gYW5kIC09IG9wZXJhdG9ycyB3aXRoIGFk
ZCgpIGFuZCByZW1vdmUoKSBmdW5jdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE4OTE2OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3ND
b2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtSW5pdGlh
bGl6ZU5ldHdvcmtQcm9jZXNzQ29jb2EpOgorICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRy
ZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24uaDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
TGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyUHJvcGVydGllczo6bm90ZVByb3BlcnRpZXNDaGFu
Z2VkKToKKyAgICAgICAgKiBTaGFyZWQvV2ViRXZlbnRDb252ZXJzaW9uLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViS2l0MlBsYXRmb3JtTW91c2VFdmVudDo6V2ViS2l0MlBsYXRmb3JtTW91c2VF
dmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYktpdDJQbGF0Zm9ybVdoZWVsRXZlbnQ6OldlYktp
dDJQbGF0Zm9ybVdoZWVsRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJLaXQyUGxhdGZvcm1L
ZXlib2FyZEV2ZW50OjpXZWJLaXQyUGxhdGZvcm1LZXlib2FyZEV2ZW50KToKKyAgICAgICAgKFdl
YktpdDo6V2ViS2l0MlBsYXRmb3JtVG91Y2hFdmVudDo6V2ViS2l0MlBsYXRmb3JtVG91Y2hFdmVu
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYktpdDJQbGF0Zm9ybUdlc3R1cmVFdmVudDo6V2ViS2l0
MlBsYXRmb3JtR2VzdHVyZUV2ZW50KToKKyAgICAgICAgKiBTaGFyZWQvV2Vic2l0ZVBvbGljaWVz
RGF0YS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVQb2xpY2llc0RhdGE6OmFwcGx5VG9E
b2N1bWVudExvYWRlcik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHA6Cisg
ICAgICAgIChXS1BhZ2VSZWxvYWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1Jlc291
cmNlQ2FjaGVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKHRvV2Vic2l0ZURhdGFUeXBlcyk6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZVBvbGljaWVzLmNwcDoKKyAgICAgICAgKFdL
V2Vic2l0ZVBvbGljaWVzU2V0QWxsb3dlZEF1dG9wbGF5UXVpcmtzKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IHJlbG9h
ZF0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZElu
dGVybmFsLmg6CisgICAgICAgIChXZWJLaXQ6OnRvV2Vic2l0ZURhdGFUeXBlcyk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW06CisgICAgICAgICgt
W1dLV2Vic2l0ZURhdGFTdG9yZSBfZmV0Y2hEYXRhUmVjb3Jkc09mVHlwZXM6d2l0aE9wdGlvbnM6
Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tX
ZWJzaXRlUG9saWNpZXMubW06CisgICAgICAgICgtW19XS1dlYnNpdGVQb2xpY2llcyBzZXRBbGxv
d2VkQXV0b3BsYXlRdWlya3M6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJ
bXBsLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6dmlld0RpZE1vdmVUb1dpbmRv
dyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6dXBkYXRlQWN0aXZpdHlTdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6YWN0aXZpdHlTdGF0ZURpZENoYW5nZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6ZGlzcGF0Y2hBY3Rpdml0eVN0YXRlQ2hhbmdlKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFSZWNvcmQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJzaXRlRGF0YVJlY29yZDo6YWRkKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURh
dGFSZWNvcmQ6OmFkZENvb2tpZUhvc3ROYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURh
dGFSZWNvcmQ6OmFkZFBsdWdpbkRhdGFIb3N0TmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNp
dGVEYXRhUmVjb3JkOjphZGRIU1RTQ2FjaGVIb3N0bmFtZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YnNpdGVEYXRhUmVjb3JkOjphZGRPcmlnaW5XaXRoQ3JlZGVudGlhbCk6CisgICAgICAgICogVUlQ
cm9jZXNzL21hYy9XS0luc3BlY3RvclZpZXdDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtXS0lu
c3BlY3RvclZpZXdDb250cm9sbGVyIGluc3BlY3RvcldLV2ViVmlld1JlbG9hZDpdKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5k
bGUuY3BwOgorICAgICAgICAoV2ViS2l0OjppbWFnZUZvclJlY3QpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlOjpyZW5kZXJlZEltYWdl
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuY3BwOgorICAg
ICAgICAoV2ViS2l0Ojpjb3JlKToKKyAgICAgICAgKFdlYktpdDo6RmluZENvbnRyb2xsZXI6OmZp
bmRTdHJpbmcpOgorCiAyMDE4LTA4LTMxICBGcmVkZXJpYyBXYW5nICA8ZndhbmdAaWdhbGlhLmNv
bT4KIAogICAgICAgICBCdWcgMTgyMDUzIC0gW0NTU09NIFZpZXddIEltcGxlbWVudCBzdGFuZGFy
ZCBiZWhhdmlvciBmb3Igc2Nyb2xsaW5nRWxlbWVudApJbmRleDogU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5tbQko
cmV2aXNpb24gMjM1NTM5KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9O
ZXR3b3JrUHJvY2Vzc0NvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMTQsMTIgKzExNCwxMiBA
QCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVOCiAgICAgU2FuZGJveEV4
dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KHBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5
RXh0ZW5zaW9uSGFuZGxlKTsKICAgICBPcHRpb25TZXQ8TmV0d29ya0NhY2hlOjpDYWNoZTo6T3B0
aW9uPiBjYWNoZU9wdGlvbnMgeyBOZXR3b3JrQ2FjaGU6OkNhY2hlOjpPcHRpb246OlJlZ2lzdGVy
Tm90aWZ5IH07CiAgICAgaWYgKHBhcmFtZXRlcnMuc2hvdWxkRW5hYmxlTmV0d29ya0NhY2hlRWZm
aWNhY3lMb2dnaW5nKQotICAgICAgICBjYWNoZU9wdGlvbnMgfD0gTmV0d29ya0NhY2hlOjpDYWNo
ZTo6T3B0aW9uOjpFZmZpY2FjeUxvZ2dpbmc7CisgICAgICAgIGNhY2hlT3B0aW9ucy5hZGQoTmV0
d29ya0NhY2hlOjpDYWNoZTo6T3B0aW9uOjpFZmZpY2FjeUxvZ2dpbmcpOwogICAgIGlmIChwYXJh
bWV0ZXJzLnNob3VsZFVzZVRlc3RpbmdOZXR3b3JrU2Vzc2lvbikKLSAgICAgICAgY2FjaGVPcHRp
b25zIHw9IE5ldHdvcmtDYWNoZTo6Q2FjaGU6Ok9wdGlvbjo6VGVzdGluZ01vZGU7CisgICAgICAg
IGNhY2hlT3B0aW9ucy5hZGQoTmV0d29ya0NhY2hlOjpDYWNoZTo6T3B0aW9uOjpUZXN0aW5nTW9k
ZSk7CiAjaWYgRU5BQkxFKE5FVFdPUktfQ0FDSEVfU1BFQ1VMQVRJVkVfUkVWQUxJREFUSU9OKQog
ICAgIGlmIChwYXJhbWV0ZXJzLnNob3VsZEVuYWJsZU5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlUmV2
YWxpZGF0aW9uKQotICAgICAgICBjYWNoZU9wdGlvbnMgfD0gTmV0d29ya0NhY2hlOjpDYWNoZTo6
T3B0aW9uOjpTcGVjdWxhdGl2ZVJldmFsaWRhdGlvbjsKKyAgICAgICAgY2FjaGVPcHRpb25zLmFk
ZChOZXR3b3JrQ2FjaGU6OkNhY2hlOjpPcHRpb246OlNwZWN1bGF0aXZlUmV2YWxpZGF0aW9uKTsK
ICNlbmRpZgogCiAgICAgbV9jYWNoZSA9IE5ldHdvcmtDYWNoZTo6Q2FjaGU6Om9wZW4obV9kaXNr
Q2FjaGVEaXJlY3RvcnksIGNhY2hlT3B0aW9ucyk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJFdmVudENvbnZlcnNpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkV2ZW50Q29udmVyc2lvbi5jcHAJKHJldmlzaW9uIDIzNTUzOSkKKysrIFNvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkV2ZW50Q29udmVyc2lvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5
LDE1ICs2OSwxNSBAQCBwdWJsaWM6CiAgICAgICAgIH0KIAogICAgICAgICBpZiAod2ViRXZlbnQu
c2hpZnRLZXkoKSkKLSAgICAgICAgICAgIG1fbW9kaWZpZXJzIHw9IE1vZGlmaWVyOjpTaGlmdEtl
eTsKKyAgICAgICAgICAgIG1fbW9kaWZpZXJzLmFkZChNb2RpZmllcjo6U2hpZnRLZXkpOwogICAg
ICAgICBpZiAod2ViRXZlbnQuY29udHJvbEtleSgpKQotICAgICAgICAgICAgbV9tb2RpZmllcnMg
fD0gTW9kaWZpZXI6OkN0cmxLZXk7CisgICAgICAgICAgICBtX21vZGlmaWVycy5hZGQoTW9kaWZp
ZXI6OkN0cmxLZXkpOwogICAgICAgICBpZiAod2ViRXZlbnQuYWx0S2V5KCkpCi0gICAgICAgICAg
ICBtX21vZGlmaWVycyB8PSBNb2RpZmllcjo6QWx0S2V5OworICAgICAgICAgICAgbV9tb2RpZmll
cnMuYWRkKE1vZGlmaWVyOjpBbHRLZXkpOwogICAgICAgICBpZiAod2ViRXZlbnQubWV0YUtleSgp
KQotICAgICAgICAgICAgbV9tb2RpZmllcnMgfD0gTW9kaWZpZXI6Ok1ldGFLZXk7CisgICAgICAg
ICAgICBtX21vZGlmaWVycy5hZGQoTW9kaWZpZXI6Ok1ldGFLZXkpOwogICAgICAgICBpZiAod2Vi
RXZlbnQuY2Fwc0xvY2tLZXkoKSkKLSAgICAgICAgICAgIG1fbW9kaWZpZXJzIHw9IE1vZGlmaWVy
OjpDYXBzTG9ja0tleTsKKyAgICAgICAgICAgIG1fbW9kaWZpZXJzLmFkZChNb2RpZmllcjo6Q2Fw
c0xvY2tLZXkpOwogCiAgICAgICAgIG1fdGltZXN0YW1wID0gd2ViRXZlbnQudGltZXN0YW1wKCk7
CiAKQEAgLTEzNiwxNSArMTM2LDE1IEBAIHB1YmxpYzoKICAgICAgICAgbV90eXBlID0gUGxhdGZv
cm1FdmVudDo6V2hlZWw7CiAKICAgICAgICAgaWYgKHdlYkV2ZW50LnNoaWZ0S2V5KCkpCi0gICAg
ICAgICAgICBtX21vZGlmaWVycyB8PSBNb2RpZmllcjo6U2hpZnRLZXk7CisgICAgICAgICAgICBt
X21vZGlmaWVycy5hZGQoTW9kaWZpZXI6OlNoaWZ0S2V5KTsKICAgICAgICAgaWYgKHdlYkV2ZW50
LmNvbnRyb2xLZXkoKSkKLSAgICAgICAgICAgIG1fbW9kaWZpZXJzIHw9IE1vZGlmaWVyOjpDdHJs
S2V5OworICAgICAgICAgICAgbV9tb2RpZmllcnMuYWRkKE1vZGlmaWVyOjpDdHJsS2V5KTsKICAg
ICAgICAgaWYgKHdlYkV2ZW50LmFsdEtleSgpKQotICAgICAgICAgICAgbV9tb2RpZmllcnMgfD0g
TW9kaWZpZXI6OkFsdEtleTsKKyAgICAgICAgICAgIG1fbW9kaWZpZXJzLmFkZChNb2RpZmllcjo6
QWx0S2V5KTsKICAgICAgICAgaWYgKHdlYkV2ZW50Lm1ldGFLZXkoKSkKLSAgICAgICAgICAgIG1f
bW9kaWZpZXJzIHw9IE1vZGlmaWVyOjpNZXRhS2V5OworICAgICAgICAgICAgbV9tb2RpZmllcnMu
YWRkKE1vZGlmaWVyOjpNZXRhS2V5KTsKICAgICAgICAgaWYgKHdlYkV2ZW50LmNhcHNMb2NrS2V5
KCkpCi0gICAgICAgICAgICBtX21vZGlmaWVycyB8PSBNb2RpZmllcjo6Q2Fwc0xvY2tLZXk7Cisg
ICAgICAgICAgICBtX21vZGlmaWVycy5hZGQoTW9kaWZpZXI6OkNhcHNMb2NrS2V5KTsKIAogICAg
ICAgICBtX3RpbWVzdGFtcCA9IHdlYkV2ZW50LnRpbWVzdGFtcCgpOwogCkBAIC0xOTgsMTUgKzE5
OCwxNSBAQCBwdWJsaWM6CiAgICAgICAgIH0KIAogICAgICAgICBpZiAod2ViRXZlbnQuc2hpZnRL
ZXkoKSkKLSAgICAgICAgICAgIG1fbW9kaWZpZXJzIHw9IE1vZGlmaWVyOjpTaGlmdEtleTsKKyAg
ICAgICAgICAgIG1fbW9kaWZpZXJzLmFkZChNb2RpZmllcjo6U2hpZnRLZXkpOwogICAgICAgICBp
ZiAod2ViRXZlbnQuY29udHJvbEtleSgpKQotICAgICAgICAgICAgbV9tb2RpZmllcnMgfD0gTW9k
aWZpZXI6OkN0cmxLZXk7CisgICAgICAgICAgICBtX21vZGlmaWVycy5hZGQoTW9kaWZpZXI6OkN0
cmxLZXkpOwogICAgICAgICBpZiAod2ViRXZlbnQuYWx0S2V5KCkpCi0gICAgICAgICAgICBtX21v
ZGlmaWVycyB8PSBNb2RpZmllcjo6QWx0S2V5OworICAgICAgICAgICAgbV9tb2RpZmllcnMuYWRk
KE1vZGlmaWVyOjpBbHRLZXkpOwogICAgICAgICBpZiAod2ViRXZlbnQubWV0YUtleSgpKQotICAg
ICAgICAgICAgbV9tb2RpZmllcnMgfD0gTW9kaWZpZXI6Ok1ldGFLZXk7CisgICAgICAgICAgICBt
X21vZGlmaWVycy5hZGQoTW9kaWZpZXI6Ok1ldGFLZXkpOwogICAgICAgICBpZiAod2ViRXZlbnQu
Y2Fwc0xvY2tLZXkoKSkKLSAgICAgICAgICAgIG1fbW9kaWZpZXJzIHw9IE1vZGlmaWVyOjpDYXBz
TG9ja0tleTsKKyAgICAgICAgICAgIG1fbW9kaWZpZXJzLmFkZChNb2RpZmllcjo6Q2Fwc0xvY2tL
ZXkpOwogCiAgICAgICAgIG1fdGltZXN0YW1wID0gd2ViRXZlbnQudGltZXN0YW1wKCk7CiAKQEAg
LTMzOSwxNSArMzM5LDE1IEBAIHB1YmxpYzoKICAgICAgICAgfQogCiAgICAgICAgIGlmICh3ZWJF
dmVudC5zaGlmdEtleSgpKQotICAgICAgICAgICAgbV9tb2RpZmllcnMgfD0gTW9kaWZpZXI6OlNo
aWZ0S2V5OworICAgICAgICAgICAgbV9tb2RpZmllcnMuYWRkKE1vZGlmaWVyOjpTaGlmdEtleSk7
CiAgICAgICAgIGlmICh3ZWJFdmVudC5jb250cm9sS2V5KCkpCi0gICAgICAgICAgICBtX21vZGlm
aWVycyB8PSBNb2RpZmllcjo6Q3RybEtleTsKKyAgICAgICAgICAgIG1fbW9kaWZpZXJzLmFkZChN
b2RpZmllcjo6Q3RybEtleSk7CiAgICAgICAgIGlmICh3ZWJFdmVudC5hbHRLZXkoKSkKLSAgICAg
ICAgICAgIG1fbW9kaWZpZXJzIHw9IE1vZGlmaWVyOjpBbHRLZXk7CisgICAgICAgICAgICBtX21v
ZGlmaWVycy5hZGQoTW9kaWZpZXI6OkFsdEtleSk7CiAgICAgICAgIGlmICh3ZWJFdmVudC5tZXRh
S2V5KCkpCi0gICAgICAgICAgICBtX21vZGlmaWVycyB8PSBNb2RpZmllcjo6TWV0YUtleTsKKyAg
ICAgICAgICAgIG1fbW9kaWZpZXJzLmFkZChNb2RpZmllcjo6TWV0YUtleSk7CiAgICAgICAgIGlm
ICh3ZWJFdmVudC5jYXBzTG9ja0tleSgpKQotICAgICAgICAgICAgbV9tb2RpZmllcnMgfD0gTW9k
aWZpZXI6OkNhcHNMb2NrS2V5OworICAgICAgICAgICAgbV9tb2RpZmllcnMuYWRkKE1vZGlmaWVy
OjpDYXBzTG9ja0tleSk7CiAKICAgICAgICAgbV90aW1lc3RhbXAgPSB3ZWJFdmVudC50aW1lc3Rh
bXAoKTsKIApAQCAtMzk4LDE1ICszOTgsMTUgQEAgcHVibGljOgogICAgICAgICB9CiAKICAgICAg
ICAgaWYgKHdlYkV2ZW50LnNoaWZ0S2V5KCkpCi0gICAgICAgICAgICBtX21vZGlmaWVycyB8PSBN
b2RpZmllcjo6U2hpZnRLZXk7CisgICAgICAgICAgICBtX21vZGlmaWVycy5hZGQoTW9kaWZpZXI6
OlNoaWZ0S2V5KTsKICAgICAgICAgaWYgKHdlYkV2ZW50LmNvbnRyb2xLZXkoKSkKLSAgICAgICAg
ICAgIG1fbW9kaWZpZXJzIHw9IE1vZGlmaWVyOjpDdHJsS2V5OworICAgICAgICAgICAgbV9tb2Rp
ZmllcnMuYWRkKE1vZGlmaWVyOjpDdHJsS2V5KTsKICAgICAgICAgaWYgKHdlYkV2ZW50LmFsdEtl
eSgpKQotICAgICAgICAgICAgbV9tb2RpZmllcnMgfD0gTW9kaWZpZXI6OkFsdEtleTsKKyAgICAg
ICAgICAgIG1fbW9kaWZpZXJzLmFkZChNb2RpZmllcjo6QWx0S2V5KTsKICAgICAgICAgaWYgKHdl
YkV2ZW50Lm1ldGFLZXkoKSkKLSAgICAgICAgICAgIG1fbW9kaWZpZXJzIHw9IE1vZGlmaWVyOjpN
ZXRhS2V5OworICAgICAgICAgICAgbV9tb2RpZmllcnMuYWRkKE1vZGlmaWVyOjpNZXRhS2V5KTsK
ICAgICAgICAgaWYgKHdlYkV2ZW50LmNhcHNMb2NrS2V5KCkpCi0gICAgICAgICAgICBtX21vZGlm
aWVycyB8PSBNb2RpZmllcjo6Q2Fwc0xvY2tLZXk7CisgICAgICAgICAgICBtX21vZGlmaWVycy5h
ZGQoTW9kaWZpZXI6OkNhcHNMb2NrS2V5KTsKIAogICAgICAgICBtX3RpbWVzdGFtcCA9IHdlYkV2
ZW50LnRpbWVzdGFtcCgpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlUG9s
aWNpZXNEYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRl
UG9saWNpZXNEYXRhLmNwcAkocmV2aXNpb24gMjM1NTM5KQorKysgU291cmNlL1dlYktpdC9TaGFy
ZWQvV2Vic2l0ZVBvbGljaWVzRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk4LDEzICs5OCwx
MyBAQCB2b2lkIFdlYnNpdGVQb2xpY2llc0RhdGE6OmFwcGx5VG9Eb2N1bWVuCiAgICAgY29uc3Qg
YXV0byYgYWxsb3dlZFF1aXJrcyA9IHdlYnNpdGVQb2xpY2llcy5hbGxvd2VkQXV0b3BsYXlRdWly
a3M7CiAgICAgCiAgICAgaWYgKGFsbG93ZWRRdWlya3MuY29udGFpbnMoV2Vic2l0ZUF1dG9wbGF5
UXVpcms6OkluaGVyaXRlZFVzZXJHZXN0dXJlcykpCi0gICAgICAgIHF1aXJrcyB8PSBXZWJDb3Jl
OjpBdXRvcGxheVF1aXJrOjpJbmhlcml0ZWRVc2VyR2VzdHVyZXM7CisgICAgICAgIHF1aXJrcy5h
ZGQoV2ViQ29yZTo6QXV0b3BsYXlRdWlyazo6SW5oZXJpdGVkVXNlckdlc3R1cmVzKTsKICAgICAK
ICAgICBpZiAoYWxsb3dlZFF1aXJrcy5jb250YWlucyhXZWJzaXRlQXV0b3BsYXlRdWlyazo6U3lu
dGhlc2l6ZWRQYXVzZUV2ZW50cykpCi0gICAgICAgIHF1aXJrcyB8PSBXZWJDb3JlOjpBdXRvcGxh
eVF1aXJrOjpTeW50aGVzaXplZFBhdXNlRXZlbnRzOworICAgICAgICBxdWlya3MuYWRkKFdlYkNv
cmU6OkF1dG9wbGF5UXVpcms6OlN5bnRoZXNpemVkUGF1c2VFdmVudHMpOwogICAgIAogICAgIGlm
IChhbGxvd2VkUXVpcmtzLmNvbnRhaW5zKFdlYnNpdGVBdXRvcGxheVF1aXJrOjpBcmJpdHJhcnlV
c2VyR2VzdHVyZXMpKQotICAgICAgICBxdWlya3MgfD0gV2ViQ29yZTo6QXV0b3BsYXlRdWlyazo6
QXJiaXRyYXJ5VXNlckdlc3R1cmVzOworICAgICAgICBxdWlya3MuYWRkKFdlYkNvcmU6OkF1dG9w
bGF5UXVpcms6OkFyYml0cmFyeVVzZXJHZXN0dXJlcyk7CiAKICAgICBkb2N1bWVudExvYWRlci5z
ZXRBbGxvd2VkQXV0b3BsYXlRdWlya3MocXVpcmtzKTsKIApJbmRleDogU291cmNlL1dlYktpdC9T
aGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVy
VHJlZVRyYW5zYWN0aW9uLmgJKHJldmlzaW9uIDIzNTUzOSkKKysrIFNvdXJjZS9XZWJLaXQvU2hh
cmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xMTYsNyArMTE2LDcgQEAgcHVibGljOgogCiAgICAgICAgIHZvaWQgbm90ZVBy
b3BlcnRpZXNDaGFuZ2VkKE9wdGlvblNldDxMYXllckNoYW5nZT4gY2hhbmdlRmxhZ3MpCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIGNoYW5nZWRQcm9wZXJ0aWVzIHw9IGNoYW5nZUZsYWdzOworICAg
ICAgICAgICAgY2hhbmdlZFByb3BlcnRpZXMuYWRkKGNoYW5nZUZsYWdzKTsKICAgICAgICAgfQog
CiAgICAgICAgIHZvaWQgcmVzZXRDaGFuZ2VkUHJvcGVydGllcygpCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDIzNTUzOSkKKysrIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0
NDYsMzIgKzE0NDYsMzIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFN1cHByZXNzVmlzaWJpbGl0
eQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlQWN0aXZpdHlTdGF0ZShPcHRpb25TZXQ8QWN0
aXZpdHlTdGF0ZTo6RmxhZz4gZmxhZ3NUb1VwZGF0ZSkKIHsKLSAgICBtX2FjdGl2aXR5U3RhdGUg
PSBtX2FjdGl2aXR5U3RhdGUgLSBmbGFnc1RvVXBkYXRlOworICAgIG1fYWN0aXZpdHlTdGF0ZS5y
ZW1vdmUoZmxhZ3NUb1VwZGF0ZSk7CiAgICAgaWYgKGZsYWdzVG9VcGRhdGUgJiBBY3Rpdml0eVN0
YXRlOjpJc0ZvY3VzZWQgJiYgbV9wYWdlQ2xpZW50LmlzVmlld0ZvY3VzZWQoKSkKLSAgICAgICAg
bV9hY3Rpdml0eVN0YXRlIHw9IEFjdGl2aXR5U3RhdGU6OklzRm9jdXNlZDsKKyAgICAgICAgbV9h
Y3Rpdml0eVN0YXRlLmFkZChBY3Rpdml0eVN0YXRlOjpJc0ZvY3VzZWQpOwogICAgIGlmIChmbGFn
c1RvVXBkYXRlICYgQWN0aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmUgJiYgbV9wYWdlQ2xpZW50
LmlzVmlld1dpbmRvd0FjdGl2ZSgpKQotICAgICAgICBtX2FjdGl2aXR5U3RhdGUgfD0gQWN0aXZp
dHlTdGF0ZTo6V2luZG93SXNBY3RpdmU7CisgICAgICAgIG1fYWN0aXZpdHlTdGF0ZS5hZGQoQWN0
aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmUpOwogICAgIGlmIChmbGFnc1RvVXBkYXRlICYgQWN0
aXZpdHlTdGF0ZTo6SXNWaXNpYmxlICYmIG1fcGFnZUNsaWVudC5pc1ZpZXdWaXNpYmxlKCkpCi0g
ICAgICAgIG1fYWN0aXZpdHlTdGF0ZSB8PSBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGU7CisgICAg
ICAgIG1fYWN0aXZpdHlTdGF0ZS5hZGQoQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKTsKICAgICBp
ZiAoZmxhZ3NUb1VwZGF0ZSAmIEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZU9yT2NjbHVkZWQgJiYg
bV9wYWdlQ2xpZW50LmlzVmlld1Zpc2libGVPck9jY2x1ZGVkKCkpCi0gICAgICAgIG1fYWN0aXZp
dHlTdGF0ZSB8PSBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGVPck9jY2x1ZGVkOworICAgICAgICBt
X2FjdGl2aXR5U3RhdGUuYWRkKEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZU9yT2NjbHVkZWQpOwog
ICAgIGlmIChmbGFnc1RvVXBkYXRlICYgQWN0aXZpdHlTdGF0ZTo6SXNJbldpbmRvdyAmJiBtX3Bh
Z2VDbGllbnQuaXNWaWV3SW5XaW5kb3coKSkKLSAgICAgICAgbV9hY3Rpdml0eVN0YXRlIHw9IEFj
dGl2aXR5U3RhdGU6OklzSW5XaW5kb3c7CisgICAgICAgIG1fYWN0aXZpdHlTdGF0ZS5hZGQoQWN0
aXZpdHlTdGF0ZTo6SXNJbldpbmRvdyk7CiAgICAgaWYgKGZsYWdzVG9VcGRhdGUgJiBBY3Rpdml0
eVN0YXRlOjpJc1Zpc3VhbGx5SWRsZSAmJiBtX3BhZ2VDbGllbnQuaXNWaXN1YWxseUlkbGUoKSkK
LSAgICAgICAgbV9hY3Rpdml0eVN0YXRlIHw9IEFjdGl2aXR5U3RhdGU6OklzVmlzdWFsbHlJZGxl
OworICAgICAgICBtX2FjdGl2aXR5U3RhdGUuYWRkKEFjdGl2aXR5U3RhdGU6OklzVmlzdWFsbHlJ
ZGxlKTsKICAgICBpZiAoZmxhZ3NUb1VwZGF0ZSAmIEFjdGl2aXR5U3RhdGU6OklzQXVkaWJsZSAm
JiBtX21lZGlhU3RhdGUgJiBNZWRpYVByb2R1Y2VyOjpJc1BsYXlpbmdBdWRpbyAmJiAhKG1fbXV0
ZWRTdGF0ZSAmIE1lZGlhUHJvZHVjZXI6OkF1ZGlvSXNNdXRlZCkpCi0gICAgICAgIG1fYWN0aXZp
dHlTdGF0ZSB8PSBBY3Rpdml0eVN0YXRlOjpJc0F1ZGlibGU7CisgICAgICAgIG1fYWN0aXZpdHlT
dGF0ZS5hZGQoQWN0aXZpdHlTdGF0ZTo6SXNBdWRpYmxlKTsKICAgICBpZiAoZmxhZ3NUb1VwZGF0
ZSAmIEFjdGl2aXR5U3RhdGU6OklzTG9hZGluZyAmJiBtX3BhZ2VMb2FkU3RhdGUuaXNMb2FkaW5n
KCkpCi0gICAgICAgIG1fYWN0aXZpdHlTdGF0ZSB8PSBBY3Rpdml0eVN0YXRlOjpJc0xvYWRpbmc7
CisgICAgICAgIG1fYWN0aXZpdHlTdGF0ZS5hZGQoQWN0aXZpdHlTdGF0ZTo6SXNMb2FkaW5nKTsK
ICAgICBpZiAoZmxhZ3NUb1VwZGF0ZSAmIEFjdGl2aXR5U3RhdGU6OklzQ2FwdHVyaW5nTWVkaWEg
JiYgbV9tZWRpYVN0YXRlICYgKE1lZGlhUHJvZHVjZXI6Okhhc0FjdGl2ZUF1ZGlvQ2FwdHVyZURl
dmljZSB8IE1lZGlhUHJvZHVjZXI6Okhhc0FjdGl2ZVZpZGVvQ2FwdHVyZURldmljZSkpCi0gICAg
ICAgIG1fYWN0aXZpdHlTdGF0ZSB8PSBBY3Rpdml0eVN0YXRlOjpJc0NhcHR1cmluZ01lZGlhOwor
ICAgICAgICBtX2FjdGl2aXR5U3RhdGUuYWRkKEFjdGl2aXR5U3RhdGU6OklzQ2FwdHVyaW5nTWVk
aWEpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6YWN0aXZpdHlTdGF0ZURpZENoYW5nZShPcHRp
b25TZXQ8QWN0aXZpdHlTdGF0ZTo6RmxhZz4gbWF5SGF2ZUNoYW5nZWQsIGJvb2wgd2FudHNTeW5j
aHJvbm91c1JlcGx5LCBBY3Rpdml0eVN0YXRlQ2hhbmdlRGlzcGF0Y2hNb2RlIGRpc3BhdGNoTW9k
ZSkKIHsKICAgICBMT0dfV0lUSF9TVFJFQU0oQWN0aXZpdHlTdGF0ZSwgc3RyZWFtIDw8ICJXZWJQ
YWdlUHJveHkgIiA8PCBwYWdlSUQoKSA8PCAiIGFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UgLSBtYXlI
YXZlQ2hhbmdlZCAiIDw8IG1heUhhdmVDaGFuZ2VkKTsKIAotICAgIG1fcG90ZW50aWFsbHlDaGFu
Z2VkQWN0aXZpdHlTdGF0ZUZsYWdzIHw9IG1heUhhdmVDaGFuZ2VkOworICAgIG1fcG90ZW50aWFs
bHlDaGFuZ2VkQWN0aXZpdHlTdGF0ZUZsYWdzLmFkZChtYXlIYXZlQ2hhbmdlZCk7CiAgICAgbV9h
Y3Rpdml0eVN0YXRlQ2hhbmdlV2FudHNTeW5jaHJvbm91c1JlcGx5ID0gbV9hY3Rpdml0eVN0YXRl
Q2hhbmdlV2FudHNTeW5jaHJvbm91c1JlcGx5IHx8IHdhbnRzU3luY2hyb25vdXNSZXBseTsKIAog
ICAgIGlmIChtX3N1cHByZXNzVmlzaWJpbGl0eVVwZGF0ZXMgJiYgZGlzcGF0Y2hNb2RlICE9IEFj
dGl2aXR5U3RhdGVDaGFuZ2VEaXNwYXRjaE1vZGU6OkltbWVkaWF0ZSkKQEAgLTE1MjIsNyArMTUy
Miw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaXNwYXRjaEFjdGl2aXR5U3RhdGUKIAogICAgIC8v
IElmIHRoZSB2aXNpYmlsaXR5IHN0YXRlIG1heSBoYXZlIGNoYW5nZWQsIHRoZW4gc28gbWF5IHRo
ZSB2aXN1YWxseSBpZGxlICYgb2NjbHVkZWQgYWdub3N0aWMgc3RhdGUuCiAgICAgaWYgKG1fcG90
ZW50aWFsbHlDaGFuZ2VkQWN0aXZpdHlTdGF0ZUZsYWdzICYgQWN0aXZpdHlTdGF0ZTo6SXNWaXNp
YmxlKQotICAgICAgICBtX3BvdGVudGlhbGx5Q2hhbmdlZEFjdGl2aXR5U3RhdGVGbGFncyB8PSB7
IEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZU9yT2NjbHVkZWQsIEFjdGl2aXR5U3RhdGU6OklzVmlz
dWFsbHlJZGxlIH07CisgICAgICAgIG1fcG90ZW50aWFsbHlDaGFuZ2VkQWN0aXZpdHlTdGF0ZUZs
YWdzLmFkZCh7IEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZU9yT2NjbHVkZWQsIEFjdGl2aXR5U3Rh
dGU6OklzVmlzdWFsbHlJZGxlIH0pOwogCiAgICAgLy8gUmVjb3JkIHRoZSBwcmlvciB2aWV3IHN0
YXRlLCB1cGRhdGUgdGhlIGZsYWdzIHRoYXQgbWF5IGhhdmUgY2hhbmdlZCwKICAgICAvLyBhbmQg
Y2hlY2sgd2hpY2ggZmxhZ3MgaGF2ZSBhY3R1YWxseSBjaGFuZ2VkLgpJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCShyZXZpc2lvbiAyMzU1MzkpCisrKyBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
NzAsNyArMjcwLDcgQEAgdm9pZCBXS1BhZ2VSZWxvYWQoV0tQYWdlUmVmIHBhZ2VSZWYpCiAgICAg
T3B0aW9uU2V0PFdlYkNvcmU6OlJlbG9hZE9wdGlvbj4gcmVsb2FkT3B0aW9uczsKICNpZiBQTEFU
Rk9STShDT0NPQSkKICAgICBpZiAobGlua2VkT25PckFmdGVyKFdlYktpdDo6U0RLVmVyc2lvbjo6
Rmlyc3RXaXRoRXhwaXJlZE9ubHlSZWxvYWRCZWhhdmlvcikpCi0gICAgICAgIHJlbG9hZE9wdGlv
bnMgfD0gV2ViQ29yZTo6UmVsb2FkT3B0aW9uOjpFeHBpcmVkT25seTsKKyAgICAgICAgcmVsb2Fk
T3B0aW9ucy5hZGQoV2ViQ29yZTo6UmVsb2FkT3B0aW9uOjpFeHBpcmVkT25seSk7CiAjZW5kaWYK
IAogICAgIHRvSW1wbChwYWdlUmVmKS0+cmVsb2FkKHJlbG9hZE9wdGlvbnMpOwpJbmRleDogU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tSZXNvdXJjZUNhY2hlTWFuYWdlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tSZXNvdXJjZUNhY2hl
TWFuYWdlci5jcHAJKHJldmlzaW9uIDIzNTUzOSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL1dLUmVzb3VyY2VDYWNoZU1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCwx
MiArNDAsMTAgQEAgV0tUeXBlSUQgV0tSZXNvdXJjZUNhY2hlTWFuYWdlckdldFR5cGVJRAogCiBz
dGF0aWMgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gdG9XZWJzaXRlRGF0YVR5cGVzKFdLUmVz
b3VyY2VDYWNoZXNUb0NsZWFyIGNhY2hlc1RvQ2xlYXIpCiB7Ci0gICAgT3B0aW9uU2V0PFdlYnNp
dGVEYXRhVHlwZT4gd2Vic2l0ZURhdGFUeXBlczsKLQotICAgIHdlYnNpdGVEYXRhVHlwZXMgfD0g
V2Vic2l0ZURhdGFUeXBlOjpNZW1vcnlDYWNoZTsKKyAgICBPcHRpb25TZXQ8V2Vic2l0ZURhdGFU
eXBlPiB3ZWJzaXRlRGF0YVR5cGVzIHsgV2Vic2l0ZURhdGFUeXBlOjpNZW1vcnlDYWNoZSB9Owog
CiAgICAgaWYgKGNhY2hlc1RvQ2xlYXIgPT0gV0tSZXNvdXJjZUNhY2hlc1RvQ2xlYXJBbGwpCi0g
ICAgICAgIHdlYnNpdGVEYXRhVHlwZXMgfD0gV2Vic2l0ZURhdGFUeXBlOjpEaXNrQ2FjaGU7Cisg
ICAgICAgIHdlYnNpdGVEYXRhVHlwZXMuYWRkKFdlYnNpdGVEYXRhVHlwZTo6RGlza0NhY2hlKTsK
IAogICAgIHJldHVybiB3ZWJzaXRlRGF0YVR5cGVzOwogfQpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlUG9saWNpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZVBvbGljaWVzLmNwcAkocmV2aXNpb24g
MjM1NTM5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlUG9saWNp
ZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MywxMyArODMsMTMgQEAgdm9pZCBXS1dlYnNpdGVQ
b2xpY2llc1NldEFsbG93ZWRBdXRvcGxheQogewogICAgIE9wdGlvblNldDxXZWJzaXRlQXV0b3Bs
YXlRdWlyaz4gcXVpcmtzOwogICAgIGlmIChhbGxvd2VkUXVpcmtzICYga1dLV2Vic2l0ZUF1dG9w
bGF5UXVpcmtJbmhlcml0ZWRVc2VyR2VzdHVyZXMpCi0gICAgICAgIHF1aXJrcyB8PSBXZWJzaXRl
QXV0b3BsYXlRdWlyazo6SW5oZXJpdGVkVXNlckdlc3R1cmVzOworICAgICAgICBxdWlya3MuYWRk
KFdlYnNpdGVBdXRvcGxheVF1aXJrOjpJbmhlcml0ZWRVc2VyR2VzdHVyZXMpOwogCiAgICAgaWYg
KGFsbG93ZWRRdWlya3MgJiBrV0tXZWJzaXRlQXV0b3BsYXlRdWlya1N5bnRoZXNpemVkUGF1c2VF
dmVudHMpCi0gICAgICAgIHF1aXJrcyB8PSBXZWJzaXRlQXV0b3BsYXlRdWlyazo6U3ludGhlc2l6
ZWRQYXVzZUV2ZW50czsKKyAgICAgICAgcXVpcmtzLmFkZChXZWJzaXRlQXV0b3BsYXlRdWlyazo6
U3ludGhlc2l6ZWRQYXVzZUV2ZW50cyk7CiAKICAgICBpZiAoYWxsb3dlZFF1aXJrcyAmIGtXS1dl
YnNpdGVBdXRvcGxheVF1aXJrQXJiaXRyYXJ5VXNlckdlc3R1cmVzKQotICAgICAgICBxdWlya3Mg
fD0gV2Vic2l0ZUF1dG9wbGF5UXVpcms6OkFyYml0cmFyeVVzZXJHZXN0dXJlczsKKyAgICAgICAg
cXVpcmtzLmFkZChXZWJzaXRlQXV0b3BsYXlRdWlyazo6QXJiaXRyYXJ5VXNlckdlc3R1cmVzKTsK
IAogICAgIHRvSW1wbCh3ZWJzaXRlUG9saWNpZXMpLT5zZXRBbGxvd2VkQXV0b3BsYXlRdWlya3Mo
cXVpcmtzKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL3dwZS9XS0FQ
SUNhc3RXUEUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy93
cGUvV0tBUElDYXN0V1BFLmgJKHJldmlzaW9uIDIzNTUzOSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL3dwZS9XS0FQSUNhc3RXUEUuaAkod29ya2luZyBjb3B5KQpAQCAtNTMsOSAr
NTMsOSBAQCBpbmxpbmUgT3B0aW9uU2V0PFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6CiAgICAgT3B0
aW9uU2V0PFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWc+IHZpZXdTdGF0ZUZsYWdzOwogCiAg
ICAgaWYgKHdrVmlld1N0YXRlICYga1dLVmlld1N0YXRlSXNJbldpbmRvdykKLSAgICAgICAgdmll
d1N0YXRlRmxhZ3MgfD0gV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNJbldpbmRvdzsKKyAgICAg
ICAgdmlld1N0YXRlRmxhZ3MuYWRkKFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzSW5XaW5kb3cp
OwogICAgIGlmICh3a1ZpZXdTdGF0ZSAmIGtXS1ZpZXdTdGF0ZUlzVmlzaWJsZSkKLSAgICAgICAg
dmlld1N0YXRlRmxhZ3MgfD0gV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlOworICAg
ICAgICB2aWV3U3RhdGVGbGFncy5hZGQoV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxl
KTsKIAogICAgIHJldHVybiB2aWV3U3RhdGVGbGFnczsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQkocmV2aXNpb24gMjM1NTM5KQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtOTYxLDcgKzk2MSw3IEBAIC0gKFdLTmF2aWdhdGlvbiAqKXJlbG9hZAogewog
ICAgIE9wdGlvblNldDxXZWJDb3JlOjpSZWxvYWRPcHRpb24+IHJlbG9hZE9wdGlvbnM7CiAgICAg
aWYgKGxpbmtlZE9uT3JBZnRlcihXZWJLaXQ6OlNES1ZlcnNpb246OkZpcnN0V2l0aEV4cGlyZWRP
bmx5UmVsb2FkQmVoYXZpb3IpKQotICAgICAgICByZWxvYWRPcHRpb25zIHw9IFdlYkNvcmU6OlJl
bG9hZE9wdGlvbjo6RXhwaXJlZE9ubHk7CisgICAgICAgIHJlbG9hZE9wdGlvbnMuYWRkKFdlYkNv
cmU6OlJlbG9hZE9wdGlvbjo6RXhwaXJlZE9ubHkpOwogCiAgICAgcmV0dXJuIHdyYXBwZXIoX3Bh
Z2UtPnJlbG9hZChyZWxvYWRPcHRpb25zKSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZEludGVybmFsLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmRJ
bnRlcm5hbC5oCShyZXZpc2lvbiAyMzU1MzkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZEludGVybmFsLmgJKHdvcmtpbmcgY29weSkKQEAg
LTg1LDcgKzg1LDcgQEAgc3RhdGljIGlubGluZSBPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlRAog
CiAgICAgZm9yIChOU1N0cmluZyAqd2Vic2l0ZURhdGFUeXBlIGluIHdlYnNpdGVEYXRhVHlwZXMp
IHsKICAgICAgICAgaWYgKGF1dG8gZGF0YVR5cGUgPSB0b1dlYnNpdGVEYXRhVHlwZSh3ZWJzaXRl
RGF0YVR5cGUpKQotICAgICAgICAgICAgcmVzdWx0IHw9ICpkYXRhVHlwZTsKKyAgICAgICAgICAg
IHJlc3VsdC5hZGQoKmRhdGFUeXBlKTsKICAgICB9CiAKICAgICByZXR1cm4gcmVzdWx0OwpJbmRl
eDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJz
aXRlRGF0YVN0b3JlLm1tCShyZXZpc2lvbiAyMzU1MzkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0y
MjMsNyArMjIzLDcgQEAgLSAodm9pZClfZmV0Y2hEYXRhUmVjb3Jkc09mVHlwZXM6KE5TU2V0PAog
CiAgICAgT3B0aW9uU2V0PFdlYktpdDo6V2Vic2l0ZURhdGFGZXRjaE9wdGlvbj4gZmV0Y2hPcHRp
b25zOwogICAgIGlmIChvcHRpb25zICYgX1dLV2Vic2l0ZURhdGFTdG9yZUZldGNoT3B0aW9uQ29t
cHV0ZVNpemVzKQotICAgICAgICBmZXRjaE9wdGlvbnMgfD0gV2ViS2l0OjpXZWJzaXRlRGF0YUZl
dGNoT3B0aW9uOjpDb21wdXRlU2l6ZXM7CisgICAgICAgIGZldGNoT3B0aW9ucy5hZGQoV2ViS2l0
OjpXZWJzaXRlRGF0YUZldGNoT3B0aW9uOjpDb21wdXRlU2l6ZXMpOwogCiAgICAgX3dlYnNpdGVE
YXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5mZXRjaERhdGEoV2ViS2l0Ojp0b1dlYnNpdGVE
YXRhVHlwZXMoZGF0YVR5cGVzKSwgZmV0Y2hPcHRpb25zLCBbY29tcGxldGlvbkhhbmRsZXJDb3B5
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlckNvcHkpXShhdXRvIHdlYnNpdGVEYXRhUmVjb3Jk
cykgewogICAgICAgICBWZWN0b3I8UmVmUHRyPEFQSTo6T2JqZWN0Pj4gZWxlbWVudHM7CkluZGV4
OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZVBvbGljaWVzLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJz
aXRlUG9saWNpZXMubW0JKHJldmlzaW9uIDIzNTUzOSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlUG9saWNpZXMubW0JKHdvcmtpbmcgY29weSkKQEAgLTY0
LDEzICs2NCwxMyBAQCAtICh2b2lkKXNldEFsbG93ZWRBdXRvcGxheVF1aXJrczooX1dLV2ViCiAg
ICAgT3B0aW9uU2V0PFdlYktpdDo6V2Vic2l0ZUF1dG9wbGF5UXVpcms+IHF1aXJrczsKIAogICAg
IGlmIChhbGxvd2VkUXVpcmtzICYgX1dLV2Vic2l0ZUF1dG9wbGF5UXVpcmtJbmhlcml0ZWRVc2Vy
R2VzdHVyZXMpCi0gICAgICAgIHF1aXJrcyB8PSBXZWJLaXQ6OldlYnNpdGVBdXRvcGxheVF1aXJr
OjpJbmhlcml0ZWRVc2VyR2VzdHVyZXM7CisgICAgICAgIHF1aXJrcy5hZGQoV2ViS2l0OjpXZWJz
aXRlQXV0b3BsYXlRdWlyazo6SW5oZXJpdGVkVXNlckdlc3R1cmVzKTsKIAogICAgIGlmIChhbGxv
d2VkUXVpcmtzICYgX1dLV2Vic2l0ZUF1dG9wbGF5UXVpcmtTeW50aGVzaXplZFBhdXNlRXZlbnRz
KQotICAgICAgICBxdWlya3MgfD0gV2ViS2l0OjpXZWJzaXRlQXV0b3BsYXlRdWlyazo6U3ludGhl
c2l6ZWRQYXVzZUV2ZW50czsKKyAgICAgICAgcXVpcmtzLmFkZChXZWJLaXQ6OldlYnNpdGVBdXRv
cGxheVF1aXJrOjpTeW50aGVzaXplZFBhdXNlRXZlbnRzKTsKIAogICAgIGlmIChhbGxvd2VkUXVp
cmtzICYgX1dLV2Vic2l0ZUF1dG9wbGF5UXVpcmtBcmJpdHJhcnlVc2VyR2VzdHVyZXMpCi0gICAg
ICAgIHF1aXJrcyB8PSBXZWJLaXQ6OldlYnNpdGVBdXRvcGxheVF1aXJrOjpBcmJpdHJhcnlVc2Vy
R2VzdHVyZXM7CisgICAgICAgIHF1aXJrcy5hZGQoV2ViS2l0OjpXZWJzaXRlQXV0b3BsYXlRdWly
azo6QXJiaXRyYXJ5VXNlckdlc3R1cmVzKTsKIAogICAgIF93ZWJzaXRlUG9saWNpZXMtPnNldEFs
bG93ZWRBdXRvcGxheVF1aXJrcyhxdWlya3MpOwogfQpJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0JKHJldmlzaW9uIDIzNTUzOSkKKysrIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0yMTE4LDcgKzIxMTgsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjp2aWV3RGlkTW92ZVRvV2luZG93
KCkKICAgICAgICAgaWYgKG1fc2hvdWxkRGVmZXJWaWV3SW5XaW5kb3dDaGFuZ2VzKQogICAgICAg
ICAgICAgbV92aWV3SW5XaW5kb3dDaGFuZ2VXYXNEZWZlcnJlZCA9IHRydWU7CiAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgIGFjdGl2aXR5U3RhdGVDaGFuZ2VzIHw9IFdlYkNvcmU6OkFjdGl2aXR5
U3RhdGU6OklzSW5XaW5kb3c7CisgICAgICAgICAgICBhY3Rpdml0eVN0YXRlQ2hhbmdlcy5hZGQo
V2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNJbldpbmRvdyk7CiAgICAgICAgIG1fcGFnZS0+YWN0
aXZpdHlTdGF0ZURpZENoYW5nZShhY3Rpdml0eVN0YXRlQ2hhbmdlcyk7CiAKICAgICAgICAgdXBk
YXRlV2luZG93QW5kVmlld0ZyYW1lcygpOwpAQCAtMjE0NCw3ICsyMTQ0LDcgQEAgdm9pZCBXZWJW
aWV3SW1wbDo6dmlld0RpZE1vdmVUb1dpbmRvdygpCiAgICAgICAgIGlmIChtX3Nob3VsZERlZmVy
Vmlld0luV2luZG93Q2hhbmdlcykKICAgICAgICAgICAgIG1fdmlld0luV2luZG93Q2hhbmdlV2Fz
RGVmZXJyZWQgPSB0cnVlOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBhY3Rpdml0eVN0YXRl
Q2hhbmdlcyB8PSBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc0luV2luZG93OworICAgICAgICAg
ICAgYWN0aXZpdHlTdGF0ZUNoYW5nZXMuYWRkKFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzSW5X
aW5kb3cpOwogICAgICAgICBtX3BhZ2UtPmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoYWN0aXZpdHlT
dGF0ZUNoYW5nZXMpOwogCiAgICAgICAgIFtOU0V2ZW50IHJlbW92ZU1vbml0b3I6bV9mbGFnc0No
YW5nZWRFdmVudE1vbml0b3JdOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFSZWNvcmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhUmVjb3JkLmNwcAkocmV2aXNpb24gMjM1
NTM5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFS
ZWNvcmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OSwzMCArNzksMjcgQEAgU3RyaW5nIFdlYnNp
dGVEYXRhUmVjb3JkOjpkaXNwbGF5TmFtZUZvcgogCiB2b2lkIFdlYnNpdGVEYXRhUmVjb3JkOjph
ZGQoV2Vic2l0ZURhdGFUeXBlIHR5cGUsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0
YSYgb3JpZ2luKQogewotICAgIHR5cGVzIHw9IHR5cGU7Ci0KKyAgICB0eXBlcy5hZGQodHlwZSk7
CiAgICAgb3JpZ2lucy5hZGQob3JpZ2luKTsKIH0KIAogdm9pZCBXZWJzaXRlRGF0YVJlY29yZDo6
YWRkQ29va2llSG9zdE5hbWUoY29uc3QgU3RyaW5nJiBob3N0TmFtZSkKIHsKLSAgICB0eXBlcyB8
PSBXZWJzaXRlRGF0YVR5cGU6OkNvb2tpZXM7Ci0KKyAgICB0eXBlcy5hZGQoV2Vic2l0ZURhdGFU
eXBlOjpDb29raWVzKTsKICAgICBjb29raWVIb3N0TmFtZXMuYWRkKGhvc3ROYW1lKTsKIH0KIAog
I2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogdm9pZCBXZWJzaXRlRGF0YVJlY29yZDo6
YWRkUGx1Z2luRGF0YUhvc3ROYW1lKGNvbnN0IFN0cmluZyYgaG9zdE5hbWUpCiB7Ci0gICAgdHlw
ZXMgfD0gV2Vic2l0ZURhdGFUeXBlOjpQbHVnSW5EYXRhOwotCisgICAgdHlwZXMuYWRkKFdlYnNp
dGVEYXRhVHlwZTo6UGx1Z0luRGF0YSk7CiAgICAgcGx1Z2luRGF0YUhvc3ROYW1lcy5hZGQoaG9z
dE5hbWUpOwogfQogI2VuZGlmCiAKIHZvaWQgV2Vic2l0ZURhdGFSZWNvcmQ6OmFkZEhTVFNDYWNo
ZUhvc3RuYW1lKGNvbnN0IFN0cmluZyYgaG9zdE5hbWUpCiB7Ci0gICAgdHlwZXMgfD0gV2Vic2l0
ZURhdGFUeXBlOjpIU1RTQ2FjaGU7CisgICAgdHlwZXMuYWRkKFdlYnNpdGVEYXRhVHlwZTo6SFNU
U0NhY2hlKTsKICAgICBIU1RTQ2FjaGVIb3N0TmFtZXMuYWRkKGhvc3ROYW1lKTsKIH0KIApAQCAt
MTU3LDggKzE1NCw3IEBAIFN0cmluZyBXZWJzaXRlRGF0YVJlY29yZDo6dG9wUHJpdmF0ZWx5Q28K
IAogdm9pZCBXZWJzaXRlRGF0YVJlY29yZDo6YWRkT3JpZ2luV2l0aENyZWRlbnRpYWwoY29uc3Qg
U3RyaW5nJiBvcmlnaW4pCiB7Ci0gICAgdHlwZXMgfD0gV2Vic2l0ZURhdGFUeXBlOjpDcmVkZW50
aWFsczsKLQorICAgIHR5cGVzLmFkZChXZWJzaXRlRGF0YVR5cGU6OkNyZWRlbnRpYWxzKTsKICAg
ICBvcmlnaW5zV2l0aENyZWRlbnRpYWxzLmFkZChvcmlnaW4pOwogfQogCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tJbnNwZWN0b3JWaWV3Q29udHJv
bGxlci5tbQkocmV2aXNpb24gMjM1NTM5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFj
L1dLSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTIzOCw3ICsy
MzgsNyBAQCAtICh2b2lkKWluc3BlY3RvcldLV2ViVmlld1JlbG9hZDooV0tJbnNwCiAKICAgICBP
cHRpb25TZXQ8V2ViQ29yZTo6UmVsb2FkT3B0aW9uPiByZWxvYWRPcHRpb25zOwogICAgIGlmIChX
ZWJLaXQ6OmxpbmtlZE9uT3JBZnRlcihXZWJLaXQ6OlNES1ZlcnNpb246OkZpcnN0V2l0aEV4cGly
ZWRPbmx5UmVsb2FkQmVoYXZpb3IpKQotICAgICAgICByZWxvYWRPcHRpb25zIHw9IFdlYkNvcmU6
OlJlbG9hZE9wdGlvbjo6RXhwaXJlZE9ubHk7CisgICAgICAgIHJlbG9hZE9wdGlvbnMuYWRkKFdl
YkNvcmU6OlJlbG9hZE9wdGlvbjo6RXhwaXJlZE9ubHkpOwogCiAgICAgX2luc3BlY3RlZFBhZ2Ut
PnJlbG9hZChyZWxvYWRPcHRpb25zKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVj
dGVkQnVuZGxlTm9kZUhhbmRsZS5jcHAJKHJldmlzaW9uIDIzNTUzOSkKKysrIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcwLDkgKzE3MCw5IEBAIHN0YXRpYyBSZWZQdHI8V2Vi
SW1hZ2U+IGltYWdlRm9yUmVjdChGcmEKIAogICAgIGF1dG8gcGFpbnRCZWhhdmlvciA9IGZyYW1l
Vmlldy0+cGFpbnRCZWhhdmlvcigpIHwgUGFpbnRCZWhhdmlvcjo6RmxhdHRlbkNvbXBvc2l0aW5n
TGF5ZXJzIHwgUGFpbnRCZWhhdmlvcjo6U25hcHNob3R0aW5nOwogICAgIGlmIChvcHRpb25zICYg
U25hcHNob3RPcHRpb25zRm9yY2VCbGFja1RleHQpCi0gICAgICAgIHBhaW50QmVoYXZpb3IgfD0g
UGFpbnRCZWhhdmlvcjo6Rm9yY2VCbGFja1RleHQ7CisgICAgICAgIHBhaW50QmVoYXZpb3IuYWRk
KFBhaW50QmVoYXZpb3I6OkZvcmNlQmxhY2tUZXh0KTsKICAgICBpZiAob3B0aW9ucyAmIFNuYXBz
aG90T3B0aW9uc0ZvcmNlV2hpdGVUZXh0KQotICAgICAgICBwYWludEJlaGF2aW9yIHw9IFBhaW50
QmVoYXZpb3I6OkZvcmNlV2hpdGVUZXh0OworICAgICAgICBwYWludEJlaGF2aW9yLmFkZChQYWlu
dEJlaGF2aW9yOjpGb3JjZVdoaXRlVGV4dCk7CiAKICAgICBhdXRvIG9sZFBhaW50QmVoYXZpb3Ig
PSBmcmFtZVZpZXctPnBhaW50QmVoYXZpb3IoKTsKICAgICBmcmFtZVZpZXctPnNldFBhaW50QmVo
YXZpb3IocGFpbnRCZWhhdmlvcik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRC
dW5kbGVSYW5nZUhhbmRsZS5jcHAJKHJldmlzaW9uIDIzNTUzOSkKKysrIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MCwxMSArMTUwLDEyIEBAIFJlZlB0cjxXZWJJbWFnZT4g
SW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmQKICAgICBncmFwaGljc0NvbnRleHQtPnRyYW5zbGF0ZSgt
cGFpbnRSZWN0LmxvY2F0aW9uKCkpOwogCiAgICAgT3B0aW9uU2V0PFBhaW50QmVoYXZpb3I+IG9s
ZFBhaW50QmVoYXZpb3IgPSBmcmFtZVZpZXctPnBhaW50QmVoYXZpb3IoKTsKLSAgICBPcHRpb25T
ZXQ8UGFpbnRCZWhhdmlvcj4gcGFpbnRCZWhhdmlvciA9IG9sZFBhaW50QmVoYXZpb3IgfCBQYWlu
dEJlaGF2aW9yOjpTZWxlY3Rpb25Pbmx5IHwgUGFpbnRCZWhhdmlvcjo6RmxhdHRlbkNvbXBvc2l0
aW5nTGF5ZXJzIHwgUGFpbnRCZWhhdmlvcjo6U25hcHNob3R0aW5nOworICAgIE9wdGlvblNldDxQ
YWludEJlaGF2aW9yPiBwYWludEJlaGF2aW9yID0gb2xkUGFpbnRCZWhhdmlvcjsKKyAgICBwYWlu
dEJlaGF2aW9yLmFkZCh7IFBhaW50QmVoYXZpb3I6OlNlbGVjdGlvbk9ubHksIFBhaW50QmVoYXZp
b3I6OkZsYXR0ZW5Db21wb3NpdGluZ0xheWVycywgUGFpbnRCZWhhdmlvcjo6U25hcHNob3R0aW5n
IH0pOwogICAgIGlmIChvcHRpb25zICYgU25hcHNob3RPcHRpb25zRm9yY2VCbGFja1RleHQpCi0g
ICAgICAgIHBhaW50QmVoYXZpb3IgfD0gUGFpbnRCZWhhdmlvcjo6Rm9yY2VCbGFja1RleHQ7Cisg
ICAgICAgIHBhaW50QmVoYXZpb3IuYWRkKFBhaW50QmVoYXZpb3I6OkZvcmNlQmxhY2tUZXh0KTsK
ICAgICBpZiAob3B0aW9ucyAmIFNuYXBzaG90T3B0aW9uc0ZvcmNlV2hpdGVUZXh0KQotICAgICAg
ICBwYWludEJlaGF2aW9yIHw9IFBhaW50QmVoYXZpb3I6OkZvcmNlV2hpdGVUZXh0OworICAgICAg
ICBwYWludEJlaGF2aW9yLmFkZChQYWludEJlaGF2aW9yOjpGb3JjZVdoaXRlVGV4dCk7CiAKICAg
ICBmcmFtZVZpZXctPnNldFBhaW50QmVoYXZpb3IocGFpbnRCZWhhdmlvcik7CiAgICAgb3duZXJE
b2N1bWVudC51cGRhdGVMYXlvdXQoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0ZpbmRDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5jcHAJKHJldmlzaW9uIDIzNTUzOSkKKysr
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTYsMTUgKzU2LDE1IEBAIFdlYkNvcmU6OkZpbmRPcHRpb25zIGNvcmUo
RmluZE9wdGlvbnMgb3AKIHsKICAgICBXZWJDb3JlOjpGaW5kT3B0aW9ucyByZXN1bHQ7CiAgICAg
aWYgKG9wdGlvbnMgJiBGaW5kT3B0aW9uc0Nhc2VJbnNlbnNpdGl2ZSkKLSAgICAgICAgcmVzdWx0
IHw9IFdlYkNvcmU6OkNhc2VJbnNlbnNpdGl2ZTsKKyAgICAgICAgcmVzdWx0LmFkZChXZWJDb3Jl
OjpDYXNlSW5zZW5zaXRpdmUpOwogICAgIGlmIChvcHRpb25zICYgRmluZE9wdGlvbnNBdFdvcmRT
dGFydHMpCi0gICAgICAgIHJlc3VsdCB8PSBXZWJDb3JlOjpBdFdvcmRTdGFydHM7CisgICAgICAg
IHJlc3VsdC5hZGQoV2ViQ29yZTo6QXRXb3JkU3RhcnRzKTsKICAgICBpZiAob3B0aW9ucyAmIEZp
bmRPcHRpb25zVHJlYXRNZWRpYWxDYXBpdGFsQXNXb3JkU3RhcnQpCi0gICAgICAgIHJlc3VsdCB8
PSBXZWJDb3JlOjpUcmVhdE1lZGlhbENhcGl0YWxBc1dvcmRTdGFydDsKKyAgICAgICAgcmVzdWx0
LmFkZChXZWJDb3JlOjpUcmVhdE1lZGlhbENhcGl0YWxBc1dvcmRTdGFydCk7CiAgICAgaWYgKG9w
dGlvbnMgJiBGaW5kT3B0aW9uc0JhY2t3YXJkcykKLSAgICAgICAgcmVzdWx0IHw9IFdlYkNvcmU6
OkJhY2t3YXJkczsKKyAgICAgICAgcmVzdWx0LmFkZChXZWJDb3JlOjpCYWNrd2FyZHMpOwogICAg
IGlmIChvcHRpb25zICYgRmluZE9wdGlvbnNXcmFwQXJvdW5kKQotICAgICAgICByZXN1bHQgfD0g
V2ViQ29yZTo6V3JhcEFyb3VuZDsKKyAgICAgICAgcmVzdWx0LmFkZChXZWJDb3JlOjpXcmFwQXJv
dW5kKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0yMDQsNyArMjA0LDcgQEAgdm9pZCBG
aW5kQ29udHJvbGxlcjo6ZmluZFN0cmluZyhjb25zdCBTdAogICAgIC8vIHdlIG5lZWQgdG8gYXZv
aWQgc2VuZGluZyB0aGUgbm9uLXBhaW50ZWQgc2VsZWN0aW9uIGNoYW5nZSB0byB0aGUgVUkgcHJv
Y2VzcwogICAgIC8vIHNvIHRoYXQgaXQgZG9lcyBub3QgY2xlYXIgdGhlIHNlbGVjdGlvbiBvdXQg
ZnJvbSB1bmRlciB1cy4KICNpZiBQTEFURk9STShJT1MpCi0gICAgY29yZU9wdGlvbnMgfD0gRG9O
b3RSZXZlYWxTZWxlY3Rpb247CisgICAgY29yZU9wdGlvbnMuYWRkKERvTm90UmV2ZWFsU2VsZWN0
aW9uKTsKICNlbmRpZgogCiAgICAgd2lsbEZpbmRTdHJpbmcoKTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzNTUzOSkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDE4LTA4LTMx
ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIE9w
dGlvblNldCB8PSBhbmQgLT0gb3BlcmF0b3JzIHdpdGggYWRkKCkgYW5kIHJlbW92ZSgpIGZ1bmN0
aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg5
MTY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBX
ZWJWaWV3L1dlYkZyYW1lLm1tOgorICAgICAgICAoLVtXZWJGcmFtZSBfZHJhd1JlY3Q6Y29udGVu
dHNPbmx5Ol0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKGNvcmVP
cHRpb25zKToKKwogMjAxOC0wOC0zMSAgRnJlZGVyaWMgV2FuZyAgPGZ3YW5nQGlnYWxpYS5jb20+
CiAKICAgICAgICAgQnVnIDE4MjA1MyAtIFtDU1NPTSBWaWV3XSBJbXBsZW1lbnQgc3RhbmRhcmQg
YmVoYXZpb3IgZm9yIHNjcm9sbGluZ0VsZW1lbnQKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQkocmV2aXNpb24gMjM1NTM5KQorKysgU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQkod29ya2luZyBjb3B5KQpAQCAtNjQ5
LDE2ICs2NDksMTYgQEAgLSAodm9pZClfZHJhd1JlY3Q6KE5TUmVjdClyZWN0IGNvbnRlbnRzTwog
ICAgICAgICAvLyBGb3Igc3ViZnJhbWVzLCB3ZSBuZWVkIHRvIGluaGVyaXQgdGhlIHBhaW50IGJl
aGF2aW9yIGZyb20gb3VyIHBhcmVudAogICAgICAgICBpZiAoRnJhbWVWaWV3KiBwYXJlbnRWaWV3
ID0gcGFyZW50RnJhbWUgPyBwYXJlbnRGcmFtZS0+dmlldygpIDogbnVsbHB0cikgewogICAgICAg
ICAgICAgaWYgKHBhcmVudFZpZXctPnBhaW50QmVoYXZpb3IoKS5jb250YWlucyhQYWludEJlaGF2
aW9yOjpGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMpKQotICAgICAgICAgICAgICAgIHBhaW50QmVo
YXZpb3IgfD0gUGFpbnRCZWhhdmlvcjo6RmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzOworICAgICAg
ICAgICAgICAgIHBhaW50QmVoYXZpb3IuYWRkKFBhaW50QmVoYXZpb3I6OkZsYXR0ZW5Db21wb3Np
dGluZ0xheWVycyk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChwYXJlbnRWaWV3LT5w
YWludEJlaGF2aW9yKCkuY29udGFpbnMoUGFpbnRCZWhhdmlvcjo6U25hcHNob3R0aW5nKSkKLSAg
ICAgICAgICAgICAgICBwYWludEJlaGF2aW9yIHw9IFBhaW50QmVoYXZpb3I6OlNuYXBzaG90dGlu
ZzsKKyAgICAgICAgICAgICAgICBwYWludEJlaGF2aW9yLmFkZChQYWludEJlaGF2aW9yOjpTbmFw
c2hvdHRpbmcpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAocGFyZW50Vmlldy0+cGFp
bnRCZWhhdmlvcigpLmNvbnRhaW5zKFBhaW50QmVoYXZpb3I6OlRpbGVGaXJzdFBhaW50KSkKLSAg
ICAgICAgICAgICAgICBwYWludEJlaGF2aW9yIHw9IFBhaW50QmVoYXZpb3I6OlRpbGVGaXJzdFBh
aW50OworICAgICAgICAgICAgICAgIHBhaW50QmVoYXZpb3IuYWRkKFBhaW50QmVoYXZpb3I6OlRp
bGVGaXJzdFBhaW50KTsKICAgICAgICAgfQogICAgIH0gZWxzZQotICAgICAgICBwYWludEJlaGF2
aW9yIHw9IFtzZWxmIF9wYWludEJlaGF2aW9yRm9yRGVzdGluYXRpb25Db250ZXh0OmN0eF07Cisg
ICAgICAgIHBhaW50QmVoYXZpb3IuYWRkKFtzZWxmIF9wYWludEJlaGF2aW9yRm9yRGVzdGluYXRp
b25Db250ZXh0OmN0eF0pOwogICAgICAgICAKICAgICB2aWV3LT5zZXRQYWludEJlaGF2aW9yKHBh
aW50QmVoYXZpb3IpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJWaWV3Lm1tCShyZXZpc2lvbiAyMzU1MzkpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYlZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTU3MSwxNyArNTcxLDE3IEBAIEZp
bmRPcHRpb25zIGNvcmVPcHRpb25zKFdlYkZpbmRPcHRpb25zIG8KIHsKICAgICBGaW5kT3B0aW9u
cyBmaW5kT3B0aW9uczsKICAgICBpZiAob3B0aW9ucyAmIFdlYkZpbmRPcHRpb25zQ2FzZUluc2Vu
c2l0aXZlKQotICAgICAgICBmaW5kT3B0aW9ucyB8PSBDYXNlSW5zZW5zaXRpdmU7CisgICAgICAg
IGZpbmRPcHRpb25zLmFkZChDYXNlSW5zZW5zaXRpdmUpOwogICAgIGlmIChvcHRpb25zICYgV2Vi
RmluZE9wdGlvbnNBdFdvcmRTdGFydHMpCi0gICAgICAgIGZpbmRPcHRpb25zIHw9IEF0V29yZFN0
YXJ0czsKKyAgICAgICAgZmluZE9wdGlvbnMuYWRkKEF0V29yZFN0YXJ0cyk7CiAgICAgaWYgKG9w
dGlvbnMgJiBXZWJGaW5kT3B0aW9uc1RyZWF0TWVkaWFsQ2FwaXRhbEFzV29yZFN0YXJ0KQotICAg
ICAgICBmaW5kT3B0aW9ucyB8PSBUcmVhdE1lZGlhbENhcGl0YWxBc1dvcmRTdGFydDsKKyAgICAg
ICAgZmluZE9wdGlvbnMuYWRkKFRyZWF0TWVkaWFsQ2FwaXRhbEFzV29yZFN0YXJ0KTsKICAgICBp
ZiAob3B0aW9ucyAmIFdlYkZpbmRPcHRpb25zQmFja3dhcmRzKQotICAgICAgICBmaW5kT3B0aW9u
cyB8PSBCYWNrd2FyZHM7CisgICAgICAgIGZpbmRPcHRpb25zLmFkZChCYWNrd2FyZHMpOwogICAg
IGlmIChvcHRpb25zICYgV2ViRmluZE9wdGlvbnNXcmFwQXJvdW5kKQotICAgICAgICBmaW5kT3B0
aW9ucyB8PSBXcmFwQXJvdW5kOworICAgICAgICBmaW5kT3B0aW9ucy5hZGQoV3JhcEFyb3VuZCk7
CiAgICAgaWYgKG9wdGlvbnMgJiBXZWJGaW5kT3B0aW9uc1N0YXJ0SW5TZWxlY3Rpb24pCi0gICAg
ICAgIGZpbmRPcHRpb25zIHw9IFN0YXJ0SW5TZWxlY3Rpb247CisgICAgICAgIGZpbmRPcHRpb25z
LmFkZChTdGFydEluU2VsZWN0aW9uKTsKICAgICByZXR1cm4gZmluZE9wdGlvbnM7CiB9CiAKSW5k
ZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlz
aW9uIDIzNTUzOSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDEzIEBACisyMDE4LTA4LTMxICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKwor
ICAgICAgICBSZXBsYWNlIE9wdGlvblNldCB8PSBhbmQgLT0gb3BlcmF0b3JzIHdpdGggYWRkKCkg
YW5kIHJlbW92ZSgpIGZ1bmN0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTg5MTY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9PcHRpb25TZXQuY3BwOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisKIDIwMTgtMDgtMzEgIEZyZWRlcmljIFdh
bmcgIDxmd2FuZ0BpZ2FsaWEuY29tPgogCiAgICAgICAgIEJ1ZyAxODIwNTMgLSBbQ1NTT00gVmll
d10gSW1wbGVtZW50IHN0YW5kYXJkIGJlaGF2aW9yIGZvciBzY3JvbGxpbmdFbGVtZW50CkluZGV4
OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9PcHRpb25TZXQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL09wdGlvblNldC5jcHAJKHJldmlzaW9u
IDIzNTUzOSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL09wdGlvblNldC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTk2LDE2ICs5NiwyOSBAQCBURVNUKFdURl9PcHRpb25TZXQsIE1p
bnVzKQogICAgIEVYUEVDVF9UUlVFKChzZXQgLSBzZXQpLmlzRW1wdHkoKSk7CiB9CiAKLVRFU1Qo
V1RGX09wdGlvblNldCwgTWludXNFcXVhbCkKK1RFU1QoV1RGX09wdGlvblNldCwgQWRkQW5kUmVt
b3ZlKQogewotICAgIE9wdGlvblNldDxFeGFtcGxlRmxhZ3M+IHNldCB7IEV4YW1wbGVGbGFnczo6
QSwgRXhhbXBsZUZsYWdzOjpCLCBFeGFtcGxlRmxhZ3M6OkMgfTsKKyAgICBPcHRpb25TZXQ8RXhh
bXBsZUZsYWdzPiBzZXQ7CiAKLSAgICBFWFBFQ1RfVFJVRSgoKHNldCAtPSBFeGFtcGxlRmxhZ3M6
OkEpID09IE9wdGlvblNldDxFeGFtcGxlRmxhZ3M+IHsgRXhhbXBsZUZsYWdzOjpCLCBFeGFtcGxl
RmxhZ3M6OkMgfSkpOwotICAgIEVYUEVDVF9UUlVFKChzZXQgPT0gT3B0aW9uU2V0PEV4YW1wbGVG
bGFncz4geyBFeGFtcGxlRmxhZ3M6OkIsIEV4YW1wbGVGbGFnczo6QyB9KSk7Ci0gICAgRVhQRUNU
X1RSVUUoKChzZXQgLT0gRXhhbXBsZUZsYWdzOjpEKSA9PSBPcHRpb25TZXQ8RXhhbXBsZUZsYWdz
PiB7IEV4YW1wbGVGbGFnczo6QiwgRXhhbXBsZUZsYWdzOjpDIH0pKTsKLSAgICBFWFBFQ1RfVFJV
RSgoc2V0ID09IE9wdGlvblNldDxFeGFtcGxlRmxhZ3M+IHsgRXhhbXBsZUZsYWdzOjpCLCBFeGFt
cGxlRmxhZ3M6OkMgfSkpOwotICAgIEVYUEVDVF9UUlVFKChzZXQgLT0gc2V0KS5pc0VtcHR5KCkp
OwotICAgIEVYUEVDVF9UUlVFKHNldC5pc0VtcHR5KCkpOworICAgIHNldC5hZGQoRXhhbXBsZUZs
YWdzOjpBKTsKKyAgICBFWFBFQ1RfVFJVRShzZXQuY29udGFpbnMoRXhhbXBsZUZsYWdzOjpBKSk7
CisgICAgRVhQRUNUX0ZBTFNFKHNldC5jb250YWlucyhFeGFtcGxlRmxhZ3M6OkIpKTsKKyAgICBF
WFBFQ1RfRkFMU0Uoc2V0LmNvbnRhaW5zKEV4YW1wbGVGbGFnczo6QykpOworCisgICAgc2V0LmFk
ZCh7IEV4YW1wbGVGbGFnczo6QiwgRXhhbXBsZUZsYWdzOjpDIH0pOworICAgIEVYUEVDVF9UUlVF
KHNldC5jb250YWlucyhFeGFtcGxlRmxhZ3M6OkEpKTsKKyAgICBFWFBFQ1RfVFJVRShzZXQuY29u
dGFpbnMoRXhhbXBsZUZsYWdzOjpCKSk7CisgICAgRVhQRUNUX1RSVUUoc2V0LmNvbnRhaW5zKEV4
YW1wbGVGbGFnczo6QykpOworCisgICAgc2V0LnJlbW92ZShFeGFtcGxlRmxhZ3M6OkIpOworICAg
IEVYUEVDVF9UUlVFKHNldC5jb250YWlucyhFeGFtcGxlRmxhZ3M6OkEpKTsKKyAgICBFWFBFQ1Rf
RkFMU0Uoc2V0LmNvbnRhaW5zKEV4YW1wbGVGbGFnczo6QikpOworICAgIEVYUEVDVF9UUlVFKHNl
dC5jb250YWlucyhFeGFtcGxlRmxhZ3M6OkMpKTsKKworICAgIHNldC5yZW1vdmUoeyBFeGFtcGxl
RmxhZ3M6OkEsIEV4YW1wbGVGbGFnczo6QyB9KTsKKyAgICBFWFBFQ1RfRkFMU0Uoc2V0LmNvbnRh
aW5zKEV4YW1wbGVGbGFnczo6QSkpOworICAgIEVYUEVDVF9GQUxTRShzZXQuY29udGFpbnMoRXhh
bXBsZUZsYWdzOjpCKSk7CisgICAgRVhQRUNUX0ZBTFNFKHNldC5jb250YWlucyhFeGFtcGxlRmxh
Z3M6OkMpKTsKIH0KIAogVEVTVChXVEZfT3B0aW9uU2V0LCBDb250YWluc1R3b0ZsYWdzKQpAQCAt
MTQxLDE1ICsxNTQsNiBAQCBURVNUKFdURl9PcHRpb25TZXQsIENvbnRhaW5zVHdvRmxhZ3MzKQog
ICAgIEVYUEVDVF9GQUxTRShzZXQuY29udGFpbnMoRXhhbXBsZUZsYWdzOjpDKSk7CiB9CiAKLVRF
U1QoV1RGX09wdGlvblNldCwgT3BlcmF0b3JCaXR3aXNlT3IpCi17Ci0gICAgT3B0aW9uU2V0PEV4
YW1wbGVGbGFncz4gc2V0ID0gRXhhbXBsZUZsYWdzOjpBOwotICAgIHNldCB8PSBFeGFtcGxlRmxh
Z3M6OkM7Ci0gICAgRVhQRUNUX1RSVUUoc2V0LmNvbnRhaW5zKEV4YW1wbGVGbGFnczo6QSkpOwot
ICAgIEVYUEVDVF9GQUxTRShzZXQuY29udGFpbnMoRXhhbXBsZUZsYWdzOjpCKSk7Ci0gICAgRVhQ
RUNUX1RSVUUoc2V0LmNvbnRhaW5zKEV4YW1wbGVGbGFnczo6QykpOwotfQotCiBURVNUKFdURl9P
cHRpb25TZXQsIEVtcHR5T3B0aW9uU2V0VG9SYXdWYWx1ZVRvT3B0aW9uU2V0KQogewogICAgIE9w
dGlvblNldDxFeGFtcGxlRmxhZ3M+IHNldDsKQEAgLTMwMiwxMCArMzA2LDEwIEBAIFRFU1QoV1RG
X09wdGlvblNldCwgTmV4dEl0ZW1BZnRlckxhcmdlc3QKIFRFU1QoV1RGX09wdGlvblNldCwgSXRl
cmF0aW9uT3JkZXJUaGVTYW1lUmVnYXJkbGVzc09mSW5zZXJ0aW9uT3JkZXIpCiB7CiAgICAgT3B0
aW9uU2V0PEV4YW1wbGVGbGFncz4gc2V0MSA9IEV4YW1wbGVGbGFnczo6QzsKLSAgICBzZXQxIHw9
IEV4YW1wbGVGbGFnczo6QTsKKyAgICBzZXQxLmFkZChFeGFtcGxlRmxhZ3M6OkEpOwogCiAgICAg
T3B0aW9uU2V0PEV4YW1wbGVGbGFncz4gc2V0MiA9IEV4YW1wbGVGbGFnczo6QTsKLSAgICBzZXQy
IHw9IEV4YW1wbGVGbGFnczo6QzsKKyAgICBzZXQyLmFkZChFeGFtcGxlRmxhZ3M6OkMpOwogCiAg
ICAgT3B0aW9uU2V0PEV4YW1wbGVGbGFncz46Oml0ZXJhdG9yIGl0MSA9IHNldDEuYmVnaW4oKTsK
ICAgICBPcHRpb25TZXQ8RXhhbXBsZUZsYWdzPjo6aXRlcmF0b3IgaXQyID0gc2V0Mi5iZWdpbigp
Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>348626</attachid>
            <date>2018-08-31 02:53:59 -0700</date>
            <delta_ts>2018-08-31 03:03:05 -0700</delta_ts>
            <desc>patch</desc>
            <filename>optionset-add-remove-5.patch</filename>
            <type>text/plain</type>
            <size>111508</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyMzU1MzkpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDE4LTA4LTMxICBBbnR0aSBLb2l2aXN0byAgPGFu
dHRpQGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIE9wdGlvblNldCB8PSBhbmQgLT0gb3Bl
cmF0b3JzIHdpdGggYWRkKCkgYW5kIHJlbW92ZSgpIGZ1bmN0aW9ucworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg5MTY5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wcm92ZSBjb2RlIHJlYWRhYmlsaXR5
LgorCisgICAgICAgICogd3RmL09wdGlvblNldC5oOgorICAgICAgICAoV1RGOjpPcHRpb25TZXQ6
OmFkZCk6CisgICAgICAgIChXVEY6Ok9wdGlvblNldDo6cmVtb3ZlKToKKyAgICAgICAgKFdURjo6
T3B0aW9uU2V0OjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdURjo6T3B0aW9uU2V0OjpvcGVyYXRv
ciE9KToKKyAgICAgICAgKFdURjo6T3B0aW9uU2V0OjpvcGVyYXRvcnw9KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdURjo6T3B0aW9uU2V0OjpvcGVyYXRvci09KTogRGVsZXRlZC4KKyAgICAgICAgKiB3
dGYvUHJvY2Vzc1ByaXZpbGVnZS5jcHA6CisgICAgICAgIChXVEY6OmFkZFByb2Nlc3NQcml2aWxl
Z2UpOgorICAgICAgICAoV1RGOjpyZW1vdmVQcm9jZXNzUHJpdmlsZWdlKToKKwogMjAxOC0wOC0z
MCAgRG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgogCiAgICAgICAgIFtDTWFr
ZV0gUmVwbGFjZSBBVkZvdW5kYXRpb25TdXBwb3J0LnB5IHVzaW5nIENNYWtlCkluZGV4OiBTb3Vy
Y2UvV1RGL3d0Zi9PcHRpb25TZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9PcHRp
b25TZXQuaAkocmV2aXNpb24gMjM1NTM5KQorKysgU291cmNlL1dURi93dGYvT3B0aW9uU2V0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTExMSwyNiArMTExLDI0IEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuICgqdGhpcyAmIG9wdGlvblNldCkgPT0gb3B0aW9uU2V0OwogICAgIH0KIAotICAgIGNvbnN0
ZXhwciBmcmllbmQgYm9vbCBvcGVyYXRvcj09KE9wdGlvblNldCBsaHMsIE9wdGlvblNldCByaHMp
CisgICAgY29uc3RleHByIHZvaWQgYWRkKE9wdGlvblNldCBvcHRpb25TZXQpCiAgICAgewotICAg
ICAgICByZXR1cm4gbGhzLm1fc3RvcmFnZSA9PSByaHMubV9zdG9yYWdlOworICAgICAgICBtX3N0
b3JhZ2UgfD0gb3B0aW9uU2V0Lm1fc3RvcmFnZTsKICAgICB9CiAKLSAgICBjb25zdGV4cHIgZnJp
ZW5kIGJvb2wgb3BlcmF0b3IhPShPcHRpb25TZXQgbGhzLCBPcHRpb25TZXQgcmhzKQorICAgIGNv
bnN0ZXhwciB2b2lkIHJlbW92ZShPcHRpb25TZXQgb3B0aW9uU2V0KQogICAgIHsKLSAgICAgICAg
cmV0dXJuIGxocy5tX3N0b3JhZ2UgIT0gcmhzLm1fc3RvcmFnZTsKKyAgICAgICAgbV9zdG9yYWdl
ICY9IH5vcHRpb25TZXQubV9zdG9yYWdlOwogICAgIH0KIAotICAgIGZyaWVuZCBPcHRpb25TZXQm
IG9wZXJhdG9yfD0oT3B0aW9uU2V0JiBsaHMsIE9wdGlvblNldCByaHMpCisgICAgY29uc3RleHBy
IGZyaWVuZCBib29sIG9wZXJhdG9yPT0oT3B0aW9uU2V0IGxocywgT3B0aW9uU2V0IHJocykKICAg
ICB7Ci0gICAgICAgIGxocy5tX3N0b3JhZ2UgfD0gcmhzLm1fc3RvcmFnZTsKLSAgICAgICAgcmV0
dXJuIGxoczsKKyAgICAgICAgcmV0dXJuIGxocy5tX3N0b3JhZ2UgPT0gcmhzLm1fc3RvcmFnZTsK
ICAgICB9CiAKLSAgICBmcmllbmQgT3B0aW9uU2V0JiBvcGVyYXRvci09KE9wdGlvblNldCYgbGhz
LCBPcHRpb25TZXQgcmhzKQorICAgIGNvbnN0ZXhwciBmcmllbmQgYm9vbCBvcGVyYXRvciE9KE9w
dGlvblNldCBsaHMsIE9wdGlvblNldCByaHMpCiAgICAgewotICAgICAgICBsaHMubV9zdG9yYWdl
ICY9IH5yaHMubV9zdG9yYWdlOwotICAgICAgICByZXR1cm4gbGhzOworICAgICAgICByZXR1cm4g
bGhzLm1fc3RvcmFnZSAhPSByaHMubV9zdG9yYWdlOwogICAgIH0KIAogICAgIGNvbnN0ZXhwciBm
cmllbmQgT3B0aW9uU2V0IG9wZXJhdG9yfChPcHRpb25TZXQgbGhzLCBPcHRpb25TZXQgcmhzKQpJ
bmRleDogU291cmNlL1dURi93dGYvUHJvY2Vzc1ByaXZpbGVnZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dURi93dGYvUHJvY2Vzc1ByaXZpbGVnZS5jcHAJKHJldmlzaW9uIDIzNTUzOSkKKysr
IFNvdXJjZS9XVEYvd3RmL1Byb2Nlc3NQcml2aWxlZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
NywxMiArNTcsMTIgQEAgYm9vbCBoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZwog
CiB2b2lkIGFkZFByb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZSBwcml2aWxlZ2UpCiB7
Ci0gICAgcHJvY2Vzc1ByaXZpbGVnZXMoKSB8PSBwcml2aWxlZ2U7CisgICAgcHJvY2Vzc1ByaXZp
bGVnZXMoKS5hZGQocHJpdmlsZWdlKTsKIH0KIAogdm9pZCByZW1vdmVQcm9jZXNzUHJpdmlsZWdl
KFByb2Nlc3NQcml2aWxlZ2UgcHJpdmlsZWdlKQogewotICAgIHByb2Nlc3NQcml2aWxlZ2VzKCkg
PSBwcm9jZXNzUHJpdmlsZWdlcygpIC0gcHJpdmlsZWdlOworICAgIHByb2Nlc3NQcml2aWxlZ2Vz
KCkucmVtb3ZlKHByaXZpbGVnZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdURgpJbmRleDogU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkocmV2aXNpb24gMjM1NTM5KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTE5IEBACisyMDE4LTA4LTMxICBBbnR0aSBLb2l2aXN0byAg
PGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIE9wdGlvblNldCB8PSBhbmQgLT0g
b3BlcmF0b3JzIHdpdGggYWRkKCkgYW5kIHJlbW92ZSgpIGZ1bmN0aW9ucworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg5MTY5CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVj
dDo6cmFuZ2VPZlN0cmluZ0Nsb3Nlc3RUb1JhbmdlSW5EaXJlY3Rpb24gY29uc3QpOgorICAgICAg
ICAqIGNzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRleHREZWNvcmF0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRleHRFbXBoYXNpc1Bvc2l0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRleHRVbmRl
cmxpbmVQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6
OmNvbnZlcnRUZXh0RGVjb3JhdGlvblNraXApOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWls
ZGVyQ29udmVydGVyOjpjb252ZXJ0U3BlYWtBcyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1
aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRIYW5naW5nUHVuY3R1YXRpb24pOgorICAgICAgICAqIGNz
cy9wYXJzZXIvQ1NTUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFy
c2VTeXN0ZW1Db2xvcik6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50OjpzdHlsZUNvbG9yT3B0aW9ucyBjb25zdCk6CisgICAgICAgICogZG9t
L0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dE1hcmtlckNvbnRyb2xsZXI6OmFkZE1hcmtlcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dE1hcmtlckNvbnRyb2xsZXI6OnJlbW92ZU1hcmtlcnMpOgorICAgICAgICAqIGRvbS9TY3JpcHRl
ZEFuaW1hdGlvbkNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0ZWRBbmlt
YXRpb25Db250cm9sbGVyOjphZGRUaHJvdHRsaW5nUmVhc29uKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcjo6cmVtb3ZlVGhyb3R0bGluZ1JlYXNvbik6Cisg
ICAgICAgICogZG9tL1NlY3VyaXR5Q29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJp
dHlDb250ZXh0OjpzZXRGb3VuZE1peGVkQ29udGVudCk6CisgICAgICAgICogZG9tL1VJRXZlbnRX
aXRoS2V5U3RhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VUlFdmVudFdpdGhLZXlTdGF0ZTo6
bW9kaWZpZXJzRnJvbUluaXRpYWxpemVyKToKKyAgICAgICAgKFdlYkNvcmU6OlVJRXZlbnRXaXRo
S2V5U3RhdGU6OnNldE1vZGlmaWVyS2V5cyk6CisgICAgICAgICogZG9tL1VzZXJBY3Rpb25FbGVt
ZW50U2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJBY3Rpb25FbGVtZW50U2V0OjpzZXRG
bGFncyk6CisgICAgICAgICogZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDb21wb3NpdGVFZGl0Q29tbWFuZDo6bW92ZVBhcmFncmFwaHMpOgorICAg
ICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cmVw
bGFjZVNlbGVjdGlvbldpdGhGcmFnbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmFw
cGxpZWRFZGl0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6bWFya01pc3NwZWxsaW5n
c0FmdGVyVHlwaW5nVG9Xb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6bWFya01pc3Nw
ZWxsaW5nc0FuZEJhZEdyYW1tYXIpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpyZXNvbHZl
VGV4dENoZWNraW5nVHlwZU1hc2spOgorICAgICAgICAqIGVkaXRpbmcvRnJhbWVTZWxlY3Rpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246Om1vdmVXaXRob3V0VmFsaWRh
dGlvblRvKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpzZXRTZWxlY3RlZFJh
bmdlKToKKyAgICAgICAgKiBlZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmg6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZVNlbGVjdGlvbjo6ZGVmYXVsdFNldFNlbGVjdGlvbk9wdGlvbnMpOgorICAgICAg
ICAqIGVkaXRpbmcvTW92ZVNlbGVjdGlvbkNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TW92ZVNlbGVjdGlvbkNvbW1hbmQ6OmRvQXBwbHkpOgorICAgICAgICAqIGVkaXRpbmcvU3BlbGxD
aGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWxsQ2hlY2tlcjo6ZGlkQ2hlY2tTdWNj
ZWVkKToKKyAgICAgICAgKiBlZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0Q2hlY2tpbmdIZWxwZXI6OmZpbmRGaXJzdE1pc3NwZWxsaW5nT3JCYWRH
cmFtbWFyKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDaGVja2luZ0hlbHBlcjo6Z3Vlc3Nlc0Zv
ck1pc3NwZWxsZWRPclVuZ3JhbW1hdGljYWxSYW5nZSBjb25zdCk6CisgICAgICAgICogZWRpdGlu
Zy9UZXh0SXRlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VhcmNoQnVmZmVyOjpTZWFy
Y2hCdWZmZXIpOgorICAgICAgICAqIGh0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTEFuY2hvckVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OnJlbG9hZCk6CisgICAgICAgICogcGFnZS9Db250ZXh0
TWVudUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVDb250cm9s
bGVyOjpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZCk6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpmaW5kIGNvbnN0KToKKyAgICAgICAg
KiBwYWdlL0RyYWdDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9s
bGVyOjpjb25jbHVkZUVkaXREcmFnKToKKyAgICAgICAgKiBwYWdlL0ZyYW1lU25hcHNob3R0aW5n
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNuYXBzaG90RnJhbWVSZWN0V2l0aENsaXApOgorICAg
ICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnVwZGF0ZUxheWVy
UG9zaXRpb25GbGFncyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OndpbGxQYWludENv
bnRlbnRzKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFn
ZTo6c2V0SXNWaXNpYmxlKToKKyAgICAgICAgKiBwYWdlL1BlcmZvcm1hbmNlT2JzZXJ2ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybWFuY2VPYnNlcnZlcjo6b2JzZXJ2ZSk6CisgICAg
ICAgICogcGFnZS9UZXh0SW5kaWNhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRJbmRp
Y2F0b3I6OmNyZWF0ZVdpdGhSYW5nZSk6CisgICAgICAgICogcGFnZS9XaW5kb3dGZWF0dXJlcy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZURpc2FibGVkQWRhcHRhdGlvbnMpOgorICAgICAg
ICAqIHBhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5oOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGVudFNlY3VyaXR5UG9saWN5OjphZGRIYXNoQWxnb3JpdGhtc0ZvcklubGluZVNjcmlwdHMp
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5OjphZGRIYXNoQWxnb3Jp
dGhtc0ZvcklubGluZVN0eWxlc2hlZXRzKToKKyAgICAgICAgKiBwYWdlL2NzcC9Db250ZW50U2Vj
dXJpdHlQb2xpY3lTb3VyY2VMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1
cml0eVBvbGljeVNvdXJjZUxpc3Q6OnBhcnNlSGFzaFNvdXJjZSk6CisgICAgICAgICogcGxhdGZv
cm0vUGxhdGZvcm1FdmVudC5oOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6UGxh
dGZvcm1FdmVudCk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1BsYXRmb3JtRXZlbnRGYWN0b3J5
SU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6bW9kaWZpZXJzRm9yRXZlbnQpOgorICAgICAgICAq
IHBsYXRmb3JtL21hYy9QbGF0Zm9ybUV2ZW50RmFjdG9yeU1hYy5tbToKKyAgICAgICAgKFdlYkNv
cmU6Om1vZGlmaWVyc0ZvckV2ZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnVwZGF0ZUxheWVyUG9zaXRpb25z
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjp1cGRhdGVMYXllclBvc2l0aW9uc0Fm
dGVyU2Nyb2xsKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWludExheWVyKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWludExheWVyQ29udGVudHNBbmRSZWZs
ZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWludExheWVyQ29udGVu
dHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50Rm9yZWdyb3VuZEZvckZy
YWdtZW50cyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnBhaW50SW50b0xheWVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6cGFpbnRDb250ZW50cyk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlYXNvbnNGb3JDb21wb3NpdGluZyBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZVNjcm9sbENv
b3JkaW5hdGVkU3RhdHVzKToKKyAgICAgICAgKiByZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWlu
dGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbGxlY3RTdHlsZXNGb3JSZW5kZXJlcik6Cisg
ICAgICAgICogcmVuZGVyaW5nL1RleHRQYWludFN0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNvbXB1dGVUZXh0UGFpbnRTdHlsZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRl
clN0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpjaGFuZ2VSZXF1aXJl
c0xheW91dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Y2hhbmdlUmVx
dWlyZXNMYXllclJlcGFpbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6
OmNoYW5nZVJlcXVpcmVzUmVwYWludCBjb25zdCk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5h
bHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VGaW5kT3B0aW9ucyk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnRlcm5hbHM6OmZvcmNlUmVsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVy
bmFsczo6c2V0UGFnZVZpc2liaWxpdHkpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpz
ZXRQYWdlSXNGb2N1c2VkQW5kQWN0aXZlKToKKwogMjAxOC0wOC0zMSAgRnJlZGVyaWMgV2FuZyAg
PGZ3YW5nQGlnYWxpYS5jb20+CiAKICAgICAgICAgQnVnIDE4MjA1MyAtIFtDU1NPTSBWaWV3XSBJ
bXBsZW1lbnQgc3RhbmRhcmQgYmVoYXZpb3IgZm9yIHNjcm9sbGluZ0VsZW1lbnQKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0
LmNwcAkocmV2aXNpb24gMjM1NTM5KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzUxLDkgKzc1MSw5IEBA
IFJlZlB0cjxSYW5nZT4gQWNjZXNzaWJpbGl0eU9iamVjdDo6cmFuZ2UKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgCiAgICAgYm9vbCBpc0JhY2t3YXJkU2VhcmNoID0gc2VhcmNoRGlyZWN0
aW9uID09IEFjY2Vzc2liaWxpdHlTZWFyY2hEaXJlY3Rpb246OlByZXZpb3VzOwotICAgIEZpbmRP
cHRpb25zIGZpbmRPcHRpb25zIHsgeyBBdFdvcmRTdGFydHMsIEF0V29yZEVuZHMsIENhc2VJbnNl
bnNpdGl2ZSwgU3RhcnRJblNlbGVjdGlvbiB9IH07CisgICAgRmluZE9wdGlvbnMgZmluZE9wdGlv
bnMgeyBBdFdvcmRTdGFydHMsIEF0V29yZEVuZHMsIENhc2VJbnNlbnNpdGl2ZSwgU3RhcnRJblNl
bGVjdGlvbiB9OwogICAgIGlmIChpc0JhY2t3YXJkU2VhcmNoKQotICAgICAgICBmaW5kT3B0aW9u
cyB8PSBCYWNrd2FyZHM7CisgICAgICAgIGZpbmRPcHRpb25zLmFkZChCYWNrd2FyZHMpOwogICAg
IAogICAgIFJlZlB0cjxSYW5nZT4gY2xvc2VzdFN0cmluZ1JhbmdlID0gbnVsbHB0cjsKICAgICBm
b3IgKGNvbnN0IGF1dG8mIHNlYXJjaFN0cmluZyA6IHNlYXJjaFN0cmluZ3MpIHsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgJKHJldmlzaW9uIDIzNTUz
OSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzk0LDcgKzM5NCw3IEBAIGlubGluZSBPcHRpb25TZXQ8VGV4dERlY29yYXRp
b24+IFN0eWxlQnUKICAgICBhdXRvIHJlc3VsdCA9IFJlbmRlclN0eWxlOjppbml0aWFsVGV4dERl
Y29yYXRpb24oKTsKICAgICBpZiAoaXM8Q1NTVmFsdWVMaXN0Pih2YWx1ZSkpIHsKICAgICAgICAg
Zm9yIChhdXRvJiBjdXJyZW50VmFsdWUgOiBkb3duY2FzdDxDU1NWYWx1ZUxpc3Q+KHZhbHVlKSkK
LSAgICAgICAgICAgIHJlc3VsdCB8PSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oY3VycmVu
dFZhbHVlLmdldCgpKTsKKyAgICAgICAgICAgIHJlc3VsdC5hZGQoZG93bmNhc3Q8Q1NTUHJpbWl0
aXZlVmFsdWU+KGN1cnJlbnRWYWx1ZS5nZXQoKSkpOwogICAgIH0KICAgICByZXR1cm4gcmVzdWx0
OwogfQpAQCAtNDk4LDcgKzQ5OCw3IEBAIGlubGluZSBPcHRpb25TZXQ8VGV4dEVtcGhhc2lzUG9z
aXRpb24+IFMKIAogICAgIE9wdGlvblNldDxUZXh0RW1waGFzaXNQb3NpdGlvbj4gcG9zaXRpb247
CiAgICAgZm9yIChhdXRvJiBjdXJyZW50VmFsdWUgOiBkb3duY2FzdDxDU1NWYWx1ZUxpc3Q+KHZh
bHVlKSkKLSAgICAgICAgcG9zaXRpb24gfD0gdmFsdWVUb0VtcGhhc2lzUG9zaXRpb24oZG93bmNh
c3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KGN1cnJlbnRWYWx1ZS5nZXQoKSkpOworICAgICAgICBwb3Np
dGlvbi5hZGQodmFsdWVUb0VtcGhhc2lzUG9zaXRpb24oZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFs
dWU+KGN1cnJlbnRWYWx1ZS5nZXQoKSkpKTsKICAgICByZXR1cm4gcG9zaXRpb247CiB9CiAKQEAg
LTY0NSw3ICs2NDUsNyBAQCBpbmxpbmUgT3B0aW9uU2V0PFRleHRVbmRlcmxpbmVQb3NpdGlvbj4g
CiAKICAgICBPcHRpb25TZXQ8VGV4dFVuZGVybGluZVBvc2l0aW9uPiBjb21iaW5lZFBvc2l0aW9u
OwogICAgIGZvciAoYXV0byYgY3VycmVudFZhbHVlIDogZG93bmNhc3Q8Q1NTVmFsdWVMaXN0Pih2
YWx1ZSkpCi0gICAgICAgIGNvbWJpbmVkUG9zaXRpb24gfD0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZl
VmFsdWU+KGN1cnJlbnRWYWx1ZS5nZXQoKSk7CisgICAgICAgIGNvbWJpbmVkUG9zaXRpb24uYWRk
KGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPihjdXJyZW50VmFsdWUuZ2V0KCkpKTsKICAgICBy
ZXR1cm4gY29tYmluZWRQb3NpdGlvbjsKIH0KIApAQCAtNzUzLDcgKzc1Myw3IEBAIGlubGluZSBP
cHRpb25TZXQ8VGV4dERlY29yYXRpb25Ta2lwPiBTdHkKIAogICAgIE9wdGlvblNldDxUZXh0RGVj
b3JhdGlvblNraXA+IHNraXA7CiAgICAgZm9yIChhdXRvJiBjdXJyZW50VmFsdWUgOiBkb3duY2Fz
dDxDU1NWYWx1ZUxpc3Q+KHZhbHVlKSkKLSAgICAgICAgc2tpcCB8PSB2YWx1ZVRvRGVjb3JhdGlv
blNraXAoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KGN1cnJlbnRWYWx1ZS5nZXQoKSkpOwor
ICAgICAgICBza2lwLmFkZCh2YWx1ZVRvRGVjb3JhdGlvblNraXAoZG93bmNhc3Q8Q1NTUHJpbWl0
aXZlVmFsdWU+KGN1cnJlbnRWYWx1ZS5nZXQoKSkpKTsKICAgICByZXR1cm4gc2tpcDsKIH0KIApA
QCAtMTUwNCw3ICsxNTA0LDcgQEAgaW5saW5lIE9wdGlvblNldDxTcGVha0FzPiBTdHlsZUJ1aWxk
ZXJDbwogICAgIGF1dG8gcmVzdWx0ID0gUmVuZGVyU3R5bGU6OmluaXRpYWxTcGVha0FzKCk7CiAg
ICAgaWYgKGlzPENTU1ZhbHVlTGlzdD4odmFsdWUpKSB7CiAgICAgICAgIGZvciAoYXV0byYgY3Vy
cmVudFZhbHVlIDogZG93bmNhc3Q8Q1NTVmFsdWVMaXN0Pih2YWx1ZSkpCi0gICAgICAgICAgICBy
ZXN1bHQgfD0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KGN1cnJlbnRWYWx1ZS5nZXQoKSk7
CisgICAgICAgICAgICByZXN1bHQuYWRkKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPihjdXJy
ZW50VmFsdWUuZ2V0KCkpKTsKICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTE1MTQs
NyArMTUxNCw3IEBAIGlubGluZSBPcHRpb25TZXQ8SGFuZ2luZ1B1bmN0dWF0aW9uPiBTdHkKICAg
ICBhdXRvIHJlc3VsdCA9IFJlbmRlclN0eWxlOjppbml0aWFsSGFuZ2luZ1B1bmN0dWF0aW9uKCk7
CiAgICAgaWYgKGlzPENTU1ZhbHVlTGlzdD4odmFsdWUpKSB7CiAgICAgICAgIGZvciAoYXV0byYg
Y3VycmVudFZhbHVlIDogZG93bmNhc3Q8Q1NTVmFsdWVMaXN0Pih2YWx1ZSkpCi0gICAgICAgICAg
ICByZXN1bHQgfD0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KGN1cnJlbnRWYWx1ZS5nZXQo
KSk7CisgICAgICAgICAgICByZXN1bHQuYWRkKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPihj
dXJyZW50VmFsdWUuZ2V0KCkpKTsKICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlci5jcHAJKHJldmlzaW9uIDIzNTUzOSkK
KysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTE5LDcgKzExOSw3IEBAIENvbG9yIENTU1BhcnNlcjo6cGFyc2VTeXN0ZW1Db2xvcihj
b25zdCAKIAogICAgIE9wdGlvblNldDxTdHlsZUNvbG9yOjpPcHRpb25zPiBvcHRpb25zOwogICAg
IGlmIChjb250ZXh0ICYmIGNvbnRleHQtPnVzZVN5c3RlbUFwcGVhcmFuY2UpCi0gICAgICAgIG9w
dGlvbnMgfD0gU3R5bGVDb2xvcjo6T3B0aW9uczo6VXNlU3lzdGVtQXBwZWFyYW5jZTsKKyAgICAg
ICAgb3B0aW9ucy5hZGQoU3R5bGVDb2xvcjo6T3B0aW9uczo6VXNlU3lzdGVtQXBwZWFyYW5jZSk7
CiAgICAgcmV0dXJuIFJlbmRlclRoZW1lOjpzaW5nbGV0b24oKS5zeXN0ZW1Db2xvcihpZCwgb3B0
aW9ucyk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gMjM1NTM5
KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NzE3OCw5ICs3MTc4LDkgQEAgT3B0aW9uU2V0PFN0eWxlQ29sb3I6Ok9wdGlvbnM+IERvY3VtZW50
OgogewogICAgIE9wdGlvblNldDxTdHlsZUNvbG9yOjpPcHRpb25zPiBvcHRpb25zOwogICAgIGlm
ICh1c2VTeXN0ZW1BcHBlYXJhbmNlKCkpCi0gICAgICAgIG9wdGlvbnMgfD0gU3R5bGVDb2xvcjo6
T3B0aW9uczo6VXNlU3lzdGVtQXBwZWFyYW5jZTsKKyAgICAgICAgb3B0aW9ucy5hZGQoU3R5bGVD
b2xvcjo6T3B0aW9uczo6VXNlU3lzdGVtQXBwZWFyYW5jZSk7CiAgICAgaWYgKHVzZURhcmtBcHBl
YXJhbmNlKCkpCi0gICAgICAgIG9wdGlvbnMgfD0gU3R5bGVDb2xvcjo6T3B0aW9uczo6VXNlRGFy
a0FwcGVhcmFuY2U7CisgICAgICAgIG9wdGlvbnMuYWRkKFN0eWxlQ29sb3I6Ok9wdGlvbnM6OlVz
ZURhcmtBcHBlYXJhbmNlKTsKICAgICByZXR1cm4gb3B0aW9uczsKIH0KIApJbmRleDogU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAJKHJldmlzaW9u
IDIzNTUzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzEsNyArMzMxLDcgQEAgdm9pZCBEb2N1bWVudE1hcmtl
ckNvbnRyb2xsZXI6OmFkZE1hcmtlcgogICAgICAgICAgICAgZG93bmNhc3Q8UmVuZGVyQmxvY2tG
bG93PigqcmVuZGVyZXIpLmVuc3VyZUxpbmVCb3hlcygpOwogICAgIH0KIAotICAgIG1fcG9zc2li
bHlFeGlzdGluZ01hcmtlclR5cGVzIHw9IG5ld01hcmtlci50eXBlKCk7CisgICAgbV9wb3NzaWJs
eUV4aXN0aW5nTWFya2VyVHlwZXMuYWRkKG5ld01hcmtlci50eXBlKCkpOwogCiAgICAgc3RkOjp1
bmlxdWVfcHRyPE1hcmtlckxpc3Q+JiBsaXN0ID0gbV9tYXJrZXJzLmFkZChub2RlLCBudWxscHRy
KS5pdGVyYXRvci0+dmFsdWU7CiAKQEAgLTU4Nyw3ICs1ODcsNyBAQCB2b2lkIERvY3VtZW50TWFy
a2VyQ29udHJvbGxlcjo6cmVtb3ZlTWFyCiAgICAgICAgICAgICByZW1vdmVNYXJrZXJzRnJvbUxp
c3QoaXRlcmF0b3IsIG1hcmtlclR5cGVzKTsKICAgICB9CiAKLSAgICBtX3Bvc3NpYmx5RXhpc3Rp
bmdNYXJrZXJUeXBlcyAtPSBtYXJrZXJUeXBlczsKKyAgICBtX3Bvc3NpYmx5RXhpc3RpbmdNYXJr
ZXJUeXBlcy5yZW1vdmUobWFya2VyVHlwZXMpOwogfQogCiB2b2lkIERvY3VtZW50TWFya2VyQ29u
dHJvbGxlcjo6cmVtb3ZlTWFya2Vyc0Zyb21MaXN0KE1hcmtlck1hcDo6aXRlcmF0b3IgaXRlcmF0
b3IsIE9wdGlvblNldDxEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZT4gbWFya2VyVHlwZXMpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0ZWRBbmltYXRpb25Db250cm9s
bGVyLmNwcAkocmV2aXNpb24gMjM1NTM5KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdGVk
QW5pbWF0aW9uQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMSw3ICsxMjEsNyBA
QCB2b2lkIFNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcjo6YWRkVGhyCiAgICAgaWYgKG1fdGhy
b3R0bGluZ1JlYXNvbnMuY29udGFpbnMocmVhc29uKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
bV90aHJvdHRsaW5nUmVhc29ucyB8PSByZWFzb247CisgICAgbV90aHJvdHRsaW5nUmVhc29ucy5h
ZGQocmVhc29uKTsKIAogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImFkZFRocm90dGxpbmdS
ZWFzb24oJXMpIC0+ICVzIiwgdGhyb3R0bGluZ1JlYXNvblRvU3RyaW5nKHJlYXNvbiksIHRocm90
dGxpbmdSZWFzb25zVG9TdHJpbmcobV90aHJvdHRsaW5nUmVhc29ucykudXRmOCgpLmRhdGEoKSk7
CiAKQEAgLTE0MCw3ICsxNDAsNyBAQCB2b2lkIFNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcjo6
cmVtb3ZlCiAgICAgaWYgKCFtX3Rocm90dGxpbmdSZWFzb25zLmNvbnRhaW5zKHJlYXNvbikpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIG1fdGhyb3R0bGluZ1JlYXNvbnMgLT0gcmVhc29uOworICAg
IG1fdGhyb3R0bGluZ1JlYXNvbnMucmVtb3ZlKHJlYXNvbik7CiAKICAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKCJyZW1vdmVUaHJvdHRsaW5nUmVhc29uKCVzKSAtPiAlcyIsIHRocm90dGxpbmdS
ZWFzb25Ub1N0cmluZyhyZWFzb24pLCB0aHJvdHRsaW5nUmVhc29uc1RvU3RyaW5nKG1fdGhyb3R0
bGluZ1JlYXNvbnMpLnV0ZjgoKS5kYXRhKCkpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20v
U2VjdXJpdHlDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1NlY3Vy
aXR5Q29udGV4dC5oCShyZXZpc2lvbiAyMzU1MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vU2Vj
dXJpdHlDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTg5LDcgKzg5LDcgQEAgcHVibGljOgog
ICAgIH07CiAKICAgICBjb25zdCBPcHRpb25TZXQ8TWl4ZWRDb250ZW50VHlwZT4mIGZvdW5kTWl4
ZWRDb250ZW50KCkgY29uc3QgeyByZXR1cm4gbV9taXhlZENvbnRlbnRUeXBlczsgfQotICAgIHZv
aWQgc2V0Rm91bmRNaXhlZENvbnRlbnQoTWl4ZWRDb250ZW50VHlwZSB0eXBlKSB7IG1fbWl4ZWRD
b250ZW50VHlwZXMgfD0gdHlwZTsgfQorICAgIHZvaWQgc2V0Rm91bmRNaXhlZENvbnRlbnQoTWl4
ZWRDb250ZW50VHlwZSB0eXBlKSB7IG1fbWl4ZWRDb250ZW50VHlwZXMuYWRkKHR5cGUpOyB9CiAg
ICAgYm9vbCBnZW9sb2NhdGlvbkFjY2Vzc2VkKCkgY29uc3QgeyByZXR1cm4gbV9nZW9sb2NhdGlv
bkFjY2Vzc2VkOyB9CiAgICAgdm9pZCBzZXRHZW9sb2NhdGlvbkFjY2Vzc2VkKCkgeyBtX2dlb2xv
Y2F0aW9uQWNjZXNzZWQgPSB0cnVlOyB9CiAgICAgYm9vbCBzZWN1cmVDb29raWVzQWNjZXNzZWQo
KSBjb25zdCB7IHJldHVybiBtX3NlY3VyZUNvb2tpZXNBY2Nlc3NlZDsgfQpJbmRleDogU291cmNl
L1dlYkNvcmUvZG9tL1VJRXZlbnRXaXRoS2V5U3RhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2RvbS9VSUV2ZW50V2l0aEtleVN0YXRlLmNwcAkocmV2aXNpb24gMjM1NTM5KQor
KysgU291cmNlL1dlYkNvcmUvZG9tL1VJRXZlbnRXaXRoS2V5U3RhdGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNywxNyArMjcsMTcgQEAgYXV0byBVSUV2ZW50V2l0aEtleVN0YXRlOjptb2RpZmll
cnNGcm9tSQogewogICAgIE9wdGlvblNldDxNb2RpZmllcj4gcmVzdWx0OwogICAgIGlmIChpbml0
aWFsaXplci5jdHJsS2V5KQotICAgICAgICByZXN1bHQgfD0gTW9kaWZpZXI6OkN0cmxLZXk7Cisg
ICAgICAgIHJlc3VsdC5hZGQoTW9kaWZpZXI6OkN0cmxLZXkpOwogICAgIGlmIChpbml0aWFsaXpl
ci5hbHRLZXkpCi0gICAgICAgIHJlc3VsdCB8PSBNb2RpZmllcjo6QWx0S2V5OworICAgICAgICBy
ZXN1bHQuYWRkKE1vZGlmaWVyOjpBbHRLZXkpOwogICAgIGlmIChpbml0aWFsaXplci5zaGlmdEtl
eSkKLSAgICAgICAgcmVzdWx0IHw9IE1vZGlmaWVyOjpTaGlmdEtleTsKKyAgICAgICAgcmVzdWx0
LmFkZChNb2RpZmllcjo6U2hpZnRLZXkpOwogICAgIGlmIChpbml0aWFsaXplci5tZXRhS2V5KQot
ICAgICAgICByZXN1bHQgfD0gTW9kaWZpZXI6Ok1ldGFLZXk7CisgICAgICAgIHJlc3VsdC5hZGQo
TW9kaWZpZXI6Ok1ldGFLZXkpOwogICAgIGlmIChpbml0aWFsaXplci5tb2RpZmllckFsdEdyYXBo
KQotICAgICAgICByZXN1bHQgfD0gTW9kaWZpZXI6OkFsdEdyYXBoS2V5OworICAgICAgICByZXN1
bHQuYWRkKE1vZGlmaWVyOjpBbHRHcmFwaEtleSk7CiAgICAgaWYgKGluaXRpYWxpemVyLm1vZGlm
aWVyQ2Fwc0xvY2spCi0gICAgICAgIHJlc3VsdCB8PSBNb2RpZmllcjo6Q2Fwc0xvY2tLZXk7Cisg
ICAgICAgIHJlc3VsdC5hZGQoTW9kaWZpZXI6OkNhcHNMb2NrS2V5KTsKICAgICByZXR1cm4gcmVz
dWx0OwogfQogCkBAIC02MywxNSArNjMsMTUgQEAgdm9pZCBVSUV2ZW50V2l0aEtleVN0YXRlOjpz
ZXRNb2RpZmllcktleQogewogICAgIE9wdGlvblNldDxNb2RpZmllcj4gcmVzdWx0OwogICAgIGlm
IChjdHJsS2V5KQotICAgICAgICByZXN1bHQgfD0gTW9kaWZpZXI6OkN0cmxLZXk7CisgICAgICAg
IHJlc3VsdC5hZGQoTW9kaWZpZXI6OkN0cmxLZXkpOwogICAgIGlmIChhbHRLZXkpCi0gICAgICAg
IHJlc3VsdCB8PSBNb2RpZmllcjo6QWx0S2V5OworICAgICAgICByZXN1bHQuYWRkKE1vZGlmaWVy
OjpBbHRLZXkpOwogICAgIGlmIChzaGlmdEtleSkKLSAgICAgICAgcmVzdWx0IHw9IE1vZGlmaWVy
OjpTaGlmdEtleTsKKyAgICAgICAgcmVzdWx0LmFkZChNb2RpZmllcjo6U2hpZnRLZXkpOwogICAg
IGlmIChtZXRhS2V5KQotICAgICAgICByZXN1bHQgfD0gTW9kaWZpZXI6Ok1ldGFLZXk7CisgICAg
ICAgIHJlc3VsdC5hZGQoTW9kaWZpZXI6Ok1ldGFLZXkpOwogICAgIGlmIChhbHRHcmFwaEtleSkK
LSAgICAgICAgcmVzdWx0IHw9IE1vZGlmaWVyOjpBbHRHcmFwaEtleTsKKyAgICAgICAgcmVzdWx0
LmFkZChNb2RpZmllcjo6QWx0R3JhcGhLZXkpOwogICAgIG1fbW9kaWZpZXJzID0gcmVzdWx0Owog
fQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vVXNlckFjdGlvbkVsZW1lbnRTZXQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Vc2VyQWN0aW9uRWxlbWVudFNldC5jcHAJ
KHJldmlzaW9uIDIzNTUzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Vc2VyQWN0aW9uRWxlbWVu
dFNldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2LDcgKzY2LDEwIEBAIHZvaWQgVXNlckFjdGlv
bkVsZW1lbnRTZXQ6OnNldEZsYWdzKEVsZW0KIHsKICAgICBBU1NFUlQoIWZsYWdzLmlzRW1wdHko
KSk7CiAKLSAgICBtX2VsZW1lbnRzLmFkZCgmZWxlbWVudCwgT3B0aW9uU2V0PEZsYWc+IHsgfSku
aXRlcmF0b3ItPnZhbHVlIHw9IGZsYWdzOworICAgIG1fZWxlbWVudHMuZW5zdXJlKCZlbGVtZW50
LCBbXSB7CisgICAgICAgIHJldHVybiBPcHRpb25TZXQ8RmxhZz4oKTsKKyAgICB9KS5pdGVyYXRv
ci0+dmFsdWUuYWRkKGZsYWdzKTsKKwogICAgIGVsZW1lbnQuc2V0VXNlckFjdGlvbkVsZW1lbnQo
dHJ1ZSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENv
bW1hbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRl
RWRpdENvbW1hbmQuY3BwCShyZXZpc2lvbiAyMzU1MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ5NCw3ICsx
NDk0LDcgQEAgdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6bW92ZVBhcmFncmFwaAogICAgIEFT
U0VSVChlbmRpbmdTZWxlY3Rpb24oKS5pc0NhcmV0T3JSYW5nZSgpKTsKICAgICBPcHRpb25TZXQ8
UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OkNvbW1hbmRPcHRpb24+IG9wdGlvbnMgeyBSZXBsYWNl
U2VsZWN0aW9uQ29tbWFuZDo6U2VsZWN0UmVwbGFjZW1lbnQsIFJlcGxhY2VTZWxlY3Rpb25Db21t
YW5kOjpNb3ZpbmdQYXJhZ3JhcGggfTsKICAgICBpZiAoIXByZXNlcnZlU3R5bGUpCi0gICAgICAg
IG9wdGlvbnMgfD0gUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6Ok1hdGNoU3R5bGU7CisgICAgICAg
IG9wdGlvbnMuYWRkKFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpNYXRjaFN0eWxlKTsKICAgICBh
cHBseUNvbW1hbmRUb0NvbXBvc2l0ZShSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6Y3JlYXRlKGRv
Y3VtZW50KCksIFdURk1vdmUoZnJhZ21lbnQpLCBvcHRpb25zKSk7CiAKICAgICBmcmFtZSgpLmVk
aXRvcigpLm1hcmtNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFyKGVuZGluZ1NlbGVjdGlvbigpKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAJKHJldmlzaW9uIDIzNTUzOSkKKysrIFNv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjM0LDEz
ICs2MzQsMTMgQEAgdm9pZCBFZGl0b3I6OnJlcGxhY2VTZWxlY3Rpb25XaXRoRnJhZ21lbgogCiAg
ICAgT3B0aW9uU2V0PFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpDb21tYW5kT3B0aW9uPiBvcHRp
b25zIHsgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OlByZXZlbnROZXN0aW5nLCBSZXBsYWNlU2Vs
ZWN0aW9uQ29tbWFuZDo6U2FuaXRpemVGcmFnbWVudCB9OwogICAgIGlmIChzZWxlY3RSZXBsYWNl
bWVudCkKLSAgICAgICAgb3B0aW9ucyB8PSBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6U2VsZWN0
UmVwbGFjZW1lbnQ7CisgICAgICAgIG9wdGlvbnMuYWRkKFJlcGxhY2VTZWxlY3Rpb25Db21tYW5k
OjpTZWxlY3RSZXBsYWNlbWVudCk7CiAgICAgaWYgKHNtYXJ0UmVwbGFjZSkKLSAgICAgICAgb3B0
aW9ucyB8PSBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6U21hcnRSZXBsYWNlOworICAgICAgICBv
cHRpb25zLmFkZChSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6U21hcnRSZXBsYWNlKTsKICAgICBp
ZiAobWF0Y2hTdHlsZSkKLSAgICAgICAgb3B0aW9ucyB8PSBSZXBsYWNlU2VsZWN0aW9uQ29tbWFu
ZDo6TWF0Y2hTdHlsZTsKKyAgICAgICAgb3B0aW9ucy5hZGQoUmVwbGFjZVNlbGVjdGlvbkNvbW1h
bmQ6Ok1hdGNoU3R5bGUpOwogICAgIGlmIChtYWlsQmxvY2txdW90ZUhhbmRsaW5nID09IE1haWxC
bG9ja3F1b3RlSGFuZGxpbmc6Oklnbm9yZUJsb2NrcXVvdGUpCi0gICAgICAgIG9wdGlvbnMgfD0g
UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6Oklnbm9yZU1haWxCbG9ja3F1b3RlOworICAgICAgICBv
cHRpb25zLmFkZChSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6SWdub3JlTWFpbEJsb2NrcXVvdGUp
OwogCiAgICAgYXV0byBjb21tYW5kID0gUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmNyZWF0ZShk
b2N1bWVudCgpLCAmZnJhZ21lbnQsIG9wdGlvbnMsIGVkaXRpbmdBY3Rpb24pOwogICAgIGNvbW1h
bmQtPmFwcGx5KCk7CkBAIC0xMDczLDcgKzEwNzMsNyBAQCB2b2lkIEVkaXRvcjo6YXBwbGllZEVk
aXRpbmcoQ29tcG9zaXRlRWRpCiAgICAgICAgIC8vIERvbid0IGNsZWFyIHRoZSB0eXBpbmcgc3R5
bGUgd2l0aCB0aGlzIHNlbGVjdGlvbiBjaGFuZ2UuIFdlIGRvIHRob3NlIHRoaW5ncyBlbHNld2hl
cmUgaWYgbmVjZXNzYXJ5LgogICAgICAgICBPcHRpb25TZXQ8RnJhbWVTZWxlY3Rpb246OlNldFNl
bGVjdGlvbk9wdGlvbj4gb3B0aW9uczsKICAgICAgICAgaWYgKGNvbW1hbmQuaXNEaWN0YXRpb25D
b21tYW5kKCkpCi0gICAgICAgICAgICBvcHRpb25zIHw9IEZyYW1lU2VsZWN0aW9uOjpEaWN0YXRp
b25UcmlnZ2VyZWQ7CisgICAgICAgICAgICBvcHRpb25zLmFkZChGcmFtZVNlbGVjdGlvbjo6RGlj
dGF0aW9uVHJpZ2dlcmVkKTsKIAogICAgICAgICBjaGFuZ2VTZWxlY3Rpb25BZnRlckNvbW1hbmQo
bmV3U2VsZWN0aW9uLCBvcHRpb25zKTsKICAgICB9CkBAIC0yMzM5LDcgKzIzMzksNyBAQCB2b2lk
IEVkaXRvcjo6bWFya01pc3NwZWxsaW5nc0FmdGVyVHlwaW5nCiAgICAgVU5VU0VEX1BBUkFNKGRv
UmVwbGFjZW1lbnQpOwogICAgIE9wdGlvblNldDxUZXh0Q2hlY2tpbmdUeXBlPiB0ZXh0Q2hlY2tp
bmdPcHRpb25zOwogICAgIGlmIChpc0NvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZCgpKQot
ICAgICAgICB0ZXh0Q2hlY2tpbmdPcHRpb25zIHw9IFRleHRDaGVja2luZ1R5cGU6OlNwZWxsaW5n
OworICAgICAgICB0ZXh0Q2hlY2tpbmdPcHRpb25zLmFkZChUZXh0Q2hlY2tpbmdUeXBlOjpTcGVs
bGluZyk7CiAgICAgaWYgKCF0ZXh0Q2hlY2tpbmdPcHRpb25zLmNvbnRhaW5zKFRleHRDaGVja2lu
Z1R5cGU6OlNwZWxsaW5nKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0yMzU3LDcgKzIzNTcsNyBA
QCB2b2lkIEVkaXRvcjo6bWFya01pc3NwZWxsaW5nc0FmdGVyVHlwaW5nCiAgICAgICAgIE9wdGlv
blNldDxUZXh0Q2hlY2tpbmdUeXBlPiB0ZXh0Q2hlY2tpbmdPcHRpb25zOwogCiAgICAgICAgIGlm
IChpc0NvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZCgpKQotICAgICAgICAgICAgdGV4dENo
ZWNraW5nT3B0aW9ucyB8PSBUZXh0Q2hlY2tpbmdUeXBlOjpTcGVsbGluZzsKKyAgICAgICAgICAg
IHRleHRDaGVja2luZ09wdGlvbnMuYWRkKFRleHRDaGVja2luZ1R5cGU6OlNwZWxsaW5nKTsKIAog
I2lmIFVTRShBVVRPTUFUSUNfVEVYVF9SRVBMQUNFTUVOVCkKICAgICAgICAgaWYgKGRvUmVwbGFj
ZW1lbnQKQEAgLTIzNjYsMTMgKzIzNjYsMTMgQEAgdm9pZCBFZGl0b3I6Om1hcmtNaXNzcGVsbGlu
Z3NBZnRlclR5cGluZwogICAgICAgICAgICAgICAgIHx8IGlzQXV0b21hdGljRGFzaFN1YnN0aXR1
dGlvbkVuYWJsZWQoKQogICAgICAgICAgICAgICAgIHx8IGlzQXV0b21hdGljVGV4dFJlcGxhY2Vt
ZW50RW5hYmxlZCgpCiAgICAgICAgICAgICAgICAgfHwgKHRleHRDaGVja2luZ09wdGlvbnMuY29u
dGFpbnMoVGV4dENoZWNraW5nVHlwZTo6U3BlbGxpbmcpICYmIGlzQXV0b21hdGljU3BlbGxpbmdD
b3JyZWN0aW9uRW5hYmxlZCgpKSkpCi0gICAgICAgICAgICB0ZXh0Q2hlY2tpbmdPcHRpb25zIHw9
IFRleHRDaGVja2luZ1R5cGU6OlJlcGxhY2VtZW50OworICAgICAgICAgICAgdGV4dENoZWNraW5n
T3B0aW9ucy5hZGQoVGV4dENoZWNraW5nVHlwZTo6UmVwbGFjZW1lbnQpOwogI2VuZGlmCiAgICAg
ICAgIGlmICghdGV4dENoZWNraW5nT3B0aW9ucy5jb250YWlucyhUZXh0Q2hlY2tpbmdUeXBlOjpT
cGVsbGluZykgJiYgIXRleHRDaGVja2luZ09wdGlvbnMuY29udGFpbnMoVGV4dENoZWNraW5nVHlw
ZTo6UmVwbGFjZW1lbnQpKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlmIChpc0dy
YW1tYXJDaGVja2luZ0VuYWJsZWQoKSkKLSAgICAgICAgICAgIHRleHRDaGVja2luZ09wdGlvbnMg
fD0gVGV4dENoZWNraW5nVHlwZTo6R3JhbW1hcjsKKyAgICAgICAgICAgIHRleHRDaGVja2luZ09w
dGlvbnMuYWRkKFRleHRDaGVja2luZ1R5cGU6OkdyYW1tYXIpOwogCiAgICAgICAgIGF1dG8gc2Vu
dGVuY2VTdGFydCA9IHN0YXJ0T2ZTZW50ZW5jZSh3b3JkU3RhcnQpOwogICAgICAgICBhdXRvIHNl
bnRlbmNlRW5kID0gZW5kT2ZTZW50ZW5jZSh3b3JkU3RhcnQpOwpAQCAtMjgzOCw3ICsyODM4LDcg
QEAgdm9pZCBFZGl0b3I6Om1hcmtNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbQogICAgICAgICAvLyBt
YXJrTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hcigpIGlzIHRyaWdnZXJlZCBieSBzZWxlY3Rpb24g
Y2hhbmdlLCBpbiB3aGljaCBjYXNlIHdlIGNoZWNrIHNwZWxsaW5nIGFuZCBncmFtbWFyLCBidXQg
ZG9uJ3QgYXV0b2NvcnJlY3QgbWlzc3BlbGxpbmdzLgogICAgICAgICBPcHRpb25TZXQ8VGV4dENo
ZWNraW5nVHlwZT4gdGV4dENoZWNraW5nT3B0aW9ucyB7IFRleHRDaGVja2luZ1R5cGU6OlNwZWxs
aW5nIH07CiAgICAgICAgIGlmIChtYXJrR3JhbW1hciAmJiBpc0dyYW1tYXJDaGVja2luZ0VuYWJs
ZWQoKSkKLSAgICAgICAgICAgIHRleHRDaGVja2luZ09wdGlvbnMgfD0gVGV4dENoZWNraW5nVHlw
ZTo6R3JhbW1hcjsKKyAgICAgICAgICAgIHRleHRDaGVja2luZ09wdGlvbnMuYWRkKFRleHRDaGVj
a2luZ1R5cGU6OkdyYW1tYXIpOwogICAgICAgICBhdXRvIHNwZWxsQ2hlY2tpbmdSYW5nZSA9IHNw
ZWxsaW5nU2VsZWN0aW9uLnRvTm9ybWFsaXplZFJhbmdlKCk7CiAgICAgICAgIG1hcmtBbGxNaXNz
cGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXModGV4dENoZWNraW5nT3B0aW9ucywgc3BlbGxD
aGVja2luZ1JhbmdlLmNvcHlSZWYoKSwgc3BlbGxDaGVja2luZ1JhbmdlLmNvcHlSZWYoKSwgZ3Jh
bW1hclNlbGVjdGlvbi50b05vcm1hbGl6ZWRSYW5nZSgpKTsKICAgICAgICAgcmV0dXJuOwpAQCAt
MzczMywzMCArMzczMywzMCBAQCBPcHRpb25TZXQ8VGV4dENoZWNraW5nVHlwZT4gRWRpdG9yOjpy
ZXNvCiAKICAgICBPcHRpb25TZXQ8VGV4dENoZWNraW5nVHlwZT4gY2hlY2tpbmdUeXBlczsKICAg
ICBpZiAoc2hvdWxkTWFya1NwZWxsaW5nKQotICAgICAgICBjaGVja2luZ1R5cGVzIHw9IFRleHRD
aGVja2luZ1R5cGU6OlNwZWxsaW5nOworICAgICAgICBjaGVja2luZ1R5cGVzLmFkZChUZXh0Q2hl
Y2tpbmdUeXBlOjpTcGVsbGluZyk7CiAgICAgaWYgKHNob3VsZE1hcmtHcmFtbWFyKQotICAgICAg
ICBjaGVja2luZ1R5cGVzIHw9IFRleHRDaGVja2luZ1R5cGU6OkdyYW1tYXI7CisgICAgICAgIGNo
ZWNraW5nVHlwZXMuYWRkKFRleHRDaGVja2luZ1R5cGU6OkdyYW1tYXIpOwogI2lmICFQTEFURk9S
TShJT1MpCiAgICAgaWYgKHNob3VsZENoZWNrRm9yQ29ycmVjdGlvbikKLSAgICAgICAgY2hlY2tp
bmdUeXBlcyB8PSBUZXh0Q2hlY2tpbmdUeXBlOjpDb3JyZWN0aW9uOworICAgICAgICBjaGVja2lu
Z1R5cGVzLmFkZChUZXh0Q2hlY2tpbmdUeXBlOjpDb3JyZWN0aW9uKTsKICAgICBpZiAoc2hvdWxk
U2hvd0NvcnJlY3Rpb25QYW5lbCkKLSAgICAgICAgY2hlY2tpbmdUeXBlcyB8PSBUZXh0Q2hlY2tp
bmdUeXBlOjpTaG93Q29ycmVjdGlvblBhbmVsOworICAgICAgICBjaGVja2luZ1R5cGVzLmFkZChU
ZXh0Q2hlY2tpbmdUeXBlOjpTaG93Q29ycmVjdGlvblBhbmVsKTsKIAogI2lmIFVTRShBVVRPTUFU
SUNfVEVYVF9SRVBMQUNFTUVOVCkKICAgICBib29sIHNob3VsZFBlcmZvcm1SZXBsYWNlbWVudCA9
IHRleHRDaGVja2luZ09wdGlvbnMuY29udGFpbnMoVGV4dENoZWNraW5nVHlwZTo6UmVwbGFjZW1l
bnQpOwogICAgIGlmIChzaG91bGRQZXJmb3JtUmVwbGFjZW1lbnQpIHsKICAgICAgICAgaWYgKCFv
bmx5QWxsb3dzVGV4dFJlcGxhY2VtZW50KSB7CiAgICAgICAgICAgICBpZiAoaXNBdXRvbWF0aWNM
aW5rRGV0ZWN0aW9uRW5hYmxlZCgpKQotICAgICAgICAgICAgICAgIGNoZWNraW5nVHlwZXMgfD0g
VGV4dENoZWNraW5nVHlwZTo6TGluazsKKyAgICAgICAgICAgICAgICBjaGVja2luZ1R5cGVzLmFk
ZChUZXh0Q2hlY2tpbmdUeXBlOjpMaW5rKTsKICAgICAgICAgICAgIGlmIChpc0F1dG9tYXRpY1F1
b3RlU3Vic3RpdHV0aW9uRW5hYmxlZCgpKQotICAgICAgICAgICAgICAgIGNoZWNraW5nVHlwZXMg
fD0gVGV4dENoZWNraW5nVHlwZTo6UXVvdGU7CisgICAgICAgICAgICAgICAgY2hlY2tpbmdUeXBl
cy5hZGQoVGV4dENoZWNraW5nVHlwZTo6UXVvdGUpOwogICAgICAgICAgICAgaWYgKGlzQXV0b21h
dGljRGFzaFN1YnN0aXR1dGlvbkVuYWJsZWQoKSkKLSAgICAgICAgICAgICAgICBjaGVja2luZ1R5
cGVzIHw9IFRleHRDaGVja2luZ1R5cGU6OkRhc2g7CisgICAgICAgICAgICAgICAgY2hlY2tpbmdU
eXBlcy5hZGQoVGV4dENoZWNraW5nVHlwZTo6RGFzaCk7CiAgICAgICAgICAgICBpZiAoc2hvdWxk
TWFya1NwZWxsaW5nICYmIGlzQXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uRW5hYmxlZCgpKQot
ICAgICAgICAgICAgICAgIGNoZWNraW5nVHlwZXMgfD0gVGV4dENoZWNraW5nVHlwZTo6Q29ycmVj
dGlvbjsKKyAgICAgICAgICAgICAgICBjaGVja2luZ1R5cGVzLmFkZChUZXh0Q2hlY2tpbmdUeXBl
OjpDb3JyZWN0aW9uKTsKICAgICAgICAgfQogICAgICAgICBpZiAoaXNBdXRvbWF0aWNUZXh0UmVw
bGFjZW1lbnRFbmFibGVkKCkpCi0gICAgICAgICAgICBjaGVja2luZ1R5cGVzIHw9IFRleHRDaGVj
a2luZ1R5cGU6OlJlcGxhY2VtZW50OworICAgICAgICAgICAgY2hlY2tpbmdUeXBlcy5hZGQoVGV4
dENoZWNraW5nVHlwZTo6UmVwbGFjZW1lbnQpOwogICAgIH0KICNlbmRpZgogI2VuZGlmIC8vICFQ
TEFURk9STShJT1MpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9u
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9u
LmNwcAkocmV2aXNpb24gMjM1NTM5KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNl
bGVjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4NywxNSArMTg3LDE1IEBAIHZvaWQgRnJh
bWVTZWxlY3Rpb246Om1vdmVXaXRob3V0VmFsaWRhdGkKICAgICBBWFRleHRTdGF0ZUNoYW5nZUlu
dGVudCBuZXdJbnRlbnQgPSBpbnRlbnQudHlwZSA9PSBBWFRleHRTdGF0ZUNoYW5nZVR5cGVVbmtu
b3duID8gQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQoQVhUZXh0U3RhdGVDaGFuZ2VUeXBlU2VsZWN0
aW9uTW92ZSwgQVhUZXh0U2VsZWN0aW9uIHsgQVhUZXh0U2VsZWN0aW9uRGlyZWN0aW9uRGlzY29u
dGlndW91cywgQVhUZXh0U2VsZWN0aW9uR3JhbnVsYXJpdHlVbmtub3duLCBmYWxzZSB9KSA6IGlu
dGVudDsKICAgICBhdXRvIG9wdGlvbnMgPSBkZWZhdWx0U2V0U2VsZWN0aW9uT3B0aW9ucygpOwog
ICAgIGlmICghc2hvdWxkU2V0Rm9jdXMpCi0gICAgICAgIG9wdGlvbnMgfD0gRG9Ob3RTZXRGb2N1
czsKKyAgICAgICAgb3B0aW9ucy5hZGQoRG9Ob3RTZXRGb2N1cyk7CiAgICAgc3dpdGNoIChyZXZl
YWxNb2RlKSB7CiAgICAgY2FzZSBTZWxlY3Rpb25SZXZlYWxNb2RlOjpEb05vdFJldmVhbDoKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBTZWxlY3Rpb25SZXZlYWxNb2RlOjpSZXZlYWw6Ci0gICAg
ICAgIG9wdGlvbnMgfD0gUmV2ZWFsU2VsZWN0aW9uOworICAgICAgICBvcHRpb25zLmFkZChSZXZl
YWxTZWxlY3Rpb24pOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFNlbGVjdGlvblJldmVhbE1v
ZGU6OlJldmVhbFVwVG9NYWluRnJhbWU6Ci0gICAgICAgIG9wdGlvbnMgfD0gUmV2ZWFsU2VsZWN0
aW9uVXBUb01haW5GcmFtZTsKKyAgICAgICAgb3B0aW9ucy5hZGQoUmV2ZWFsU2VsZWN0aW9uVXBU
b01haW5GcmFtZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBzZXRTZWxlY3Rpb24obmV3
U2VsZWN0aW9uLCBvcHRpb25zLCBuZXdJbnRlbnQpOwpAQCAtMTk5NSw3ICsxOTk1LDcgQEAgYm9v
bCBGcmFtZVNlbGVjdGlvbjo6c2V0U2VsZWN0ZWRSYW5nZShSYQogCiAgICAgT3B0aW9uU2V0PFNl
dFNlbGVjdGlvbk9wdGlvbj4gc2VsZWN0aW9uT3B0aW9ucyB7ICBDbGVhclR5cGluZ1N0eWxlIH07
CiAgICAgaWYgKGNsb3NlVHlwaW5nKQotICAgICAgICBzZWxlY3Rpb25PcHRpb25zIHw9IENsb3Nl
VHlwaW5nOworICAgICAgICBzZWxlY3Rpb25PcHRpb25zLmFkZChDbG9zZVR5cGluZyk7CiAKICAg
ICBpZiAodXNlclRyaWdnZXJlZCA9PSBVc2VyVHJpZ2dlcmVkKSB7CiAgICAgICAgIEZyYW1lU2Vs
ZWN0aW9uIHRyaWFsRnJhbWVTZWxlY3Rpb247CkBAIC0yMDA1LDcgKzIwMDUsNyBAQCBib29sIEZy
YW1lU2VsZWN0aW9uOjpzZXRTZWxlY3RlZFJhbmdlKFJhCiAgICAgICAgIGlmICghc2hvdWxkQ2hh
bmdlU2VsZWN0aW9uKHRyaWFsRnJhbWVTZWxlY3Rpb24uc2VsZWN0aW9uKCkpKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIHNlbGVjdGlvbk9wdGlvbnMgfD0gSXNVc2VyVHJp
Z2dlcmVkOworICAgICAgICBzZWxlY3Rpb25PcHRpb25zLmFkZChJc1VzZXJUcmlnZ2VyZWQpOwog
ICAgIH0KIAogICAgIHNldFNlbGVjdGlvbihuZXdTZWxlY3Rpb24sIHNlbGVjdGlvbk9wdGlvbnMp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uaAkocmV2aXNpb24g
MjM1NTM5KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMzMsNyArMTMzLDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgT3B0
aW9uU2V0PFNldFNlbGVjdGlvbk9wdGlvbj4gb3B0aW9ucyB7IENsb3NlVHlwaW5nLCBDbGVhclR5
cGluZ1N0eWxlIH07CiAgICAgICAgIGlmICh1c2VyVHJpZ2dlcmVkID09IFVzZXJUcmlnZ2VyZWQp
Ci0gICAgICAgICAgICBvcHRpb25zIHw9IHsgUmV2ZWFsU2VsZWN0aW9uLCBGaXJlU2VsZWN0RXZl
bnQsIElzVXNlclRyaWdnZXJlZCB9OworICAgICAgICAgICAgb3B0aW9ucy5hZGQoeyBSZXZlYWxT
ZWxlY3Rpb24sIEZpcmVTZWxlY3RFdmVudCwgSXNVc2VyVHJpZ2dlcmVkIH0pOwogICAgICAgICBy
ZXR1cm4gb3B0aW9uczsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTW92
ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvTW92ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCShyZXZpc2lvbiAyMzU1MzkpCisrKyBTb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL01vdmVTZWxlY3Rpb25Db21tYW5kLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtODQsNyArODQsNyBAQCB2b2lkIE1vdmVTZWxlY3Rpb25Db21tYW5kOjpkb0FwcGx5KCkKICAg
ICB9CiAgICAgT3B0aW9uU2V0PFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpDb21tYW5kT3B0aW9u
PiBvcHRpb25zIHsgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OlNlbGVjdFJlcGxhY2VtZW50LCBS
ZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6UHJldmVudE5lc3RpbmcgfTsKICAgICBpZiAobV9zbWFy
dEluc2VydCkKLSAgICAgICAgb3B0aW9ucyB8PSBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6U21h
cnRSZXBsYWNlOworICAgICAgICBvcHRpb25zLmFkZChSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6
U21hcnRSZXBsYWNlKTsKIAogICAgIHsKICAgICAgICAgYXV0byByZXBsYWNlU2VsZWN0aW9uID0g
UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmNyZWF0ZShkb2N1bWVudCgpLCBXVEZNb3ZlKG1fZnJh
Z21lbnQpLCBvcHRpb25zLCBFZGl0QWN0aW9uSW5zZXJ0RnJvbURyb3ApOwpJbmRleDogU291cmNl
L1dlYkNvcmUvZWRpdGluZy9TcGVsbENoZWNrZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvU3BlbGxDaGVja2VyLmNwcAkocmV2aXNpb24gMjM1NTM5KQorKysgU291
cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbENoZWNrZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
MTgsOSArMjE4LDkgQEAgdm9pZCBTcGVsbENoZWNrZXI6OmRpZENoZWNrU3VjY2VlZChpbnQgcwog
ICAgIGlmIChyZXF1ZXN0RGF0YS5zZXF1ZW5jZSgpID09IHNlcXVlbmNlKSB7CiAgICAgICAgIE9w
dGlvblNldDxEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZT4gbWFya2VyVHlwZXM7CiAgICAgICAg
IGlmIChyZXF1ZXN0RGF0YS5jaGVja2luZ1R5cGVzKCkuY29udGFpbnMoVGV4dENoZWNraW5nVHlw
ZTo6U3BlbGxpbmcpKQotICAgICAgICAgICAgbWFya2VyVHlwZXMgfD0gRG9jdW1lbnRNYXJrZXI6
OlNwZWxsaW5nOworICAgICAgICAgICAgbWFya2VyVHlwZXMuYWRkKERvY3VtZW50TWFya2VyOjpT
cGVsbGluZyk7CiAgICAgICAgIGlmIChyZXF1ZXN0RGF0YS5jaGVja2luZ1R5cGVzKCkuY29udGFp
bnMoVGV4dENoZWNraW5nVHlwZTo6R3JhbW1hcikpCi0gICAgICAgICAgICBtYXJrZXJUeXBlcyB8
PSBEb2N1bWVudE1hcmtlcjo6R3JhbW1hcjsKKyAgICAgICAgICAgIG1hcmtlclR5cGVzLmFkZChE
b2N1bWVudE1hcmtlcjo6R3JhbW1hcik7CiAgICAgICAgIGlmICghbWFya2VyVHlwZXMuaXNFbXB0
eSgpKQogICAgICAgICAgICAgbV9mcmFtZS5kb2N1bWVudCgpLT5tYXJrZXJzKCkucmVtb3ZlTWFy
a2VycygmbV9wcm9jZXNzaW5nUmVxdWVzdC0+Y2hlY2tpbmdSYW5nZSgpLCBtYXJrZXJUeXBlcyk7
CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVs
cGVyLmNwcAkocmV2aXNpb24gMjM1NTM5KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0
Q2hlY2tpbmdIZWxwZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNTMsNyArMzUzLDcgQEAgU3Ry
aW5nIFRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0TWlzcwogICAgICAgICAgICAgICAgIFZl
Y3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IHJlc3VsdHM7CiAgICAgICAgICAgICAgICAgT3B0aW9u
U2V0PFRleHRDaGVja2luZ1R5cGU+IGNoZWNraW5nVHlwZXMgeyBUZXh0Q2hlY2tpbmdUeXBlOjpT
cGVsbGluZyB9OwogICAgICAgICAgICAgICAgIGlmIChjaGVja0dyYW1tYXIpCi0gICAgICAgICAg
ICAgICAgICAgIGNoZWNraW5nVHlwZXMgfD0gVGV4dENoZWNraW5nVHlwZTo6R3JhbW1hcjsKKyAg
ICAgICAgICAgICAgICAgICAgY2hlY2tpbmdUeXBlcy5hZGQoVGV4dENoZWNraW5nVHlwZTo6R3Jh
bW1hcik7CiAgICAgICAgICAgICAgICAgVmlzaWJsZVNlbGVjdGlvbiBjdXJyZW50U2VsZWN0aW9u
OwogICAgICAgICAgICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBwYXJhZ3JhcGhSYW5nZS0+b3du
ZXJEb2N1bWVudCgpLmZyYW1lKCkpCiAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTZWxlY3Rp
b24gPSBmcmFtZS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCk7CkBAIC01ODcsNyArNTg3LDcgQEAg
VmVjdG9yPFN0cmluZz4gVGV4dENoZWNraW5nSGVscGVyOjpndWVzcwogICAgIFZlY3RvcjxUZXh0
Q2hlY2tpbmdSZXN1bHQ+IHJlc3VsdHM7CiAgICAgT3B0aW9uU2V0PFRleHRDaGVja2luZ1R5cGU+
IGNoZWNraW5nVHlwZXMgeyBUZXh0Q2hlY2tpbmdUeXBlOjpTcGVsbGluZyB9OwogICAgIGlmIChj
aGVja0dyYW1tYXIpCi0gICAgICAgIGNoZWNraW5nVHlwZXMgfD0gVGV4dENoZWNraW5nVHlwZTo6
R3JhbW1hcjsKKyAgICAgICAgY2hlY2tpbmdUeXBlcy5hZGQoVGV4dENoZWNraW5nVHlwZTo6R3Jh
bW1hcik7CiAgICAgVmlzaWJsZVNlbGVjdGlvbiBjdXJyZW50U2VsZWN0aW9uOwogICAgIGlmIChG
cmFtZSogZnJhbWUgPSBtX3JhbmdlLT5vd25lckRvY3VtZW50KCkuZnJhbWUoKSkKICAgICAgICAg
Y3VycmVudFNlbGVjdGlvbiA9IGZyYW1lLT5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAJKHJldmlzaW9uIDIzNTUzOSkK
KysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjA5Nyw3ICsyMDk3LDcgQEAgaW5saW5lIFNlYXJjaEJ1ZmZlcjo6U2VhcmNoQnVmZmVy
KGNvbnN0IAogICAgICAgICAvLyBDaGFyYWN0ZXJzIGluIHRoZSBzZXBhcmF0b3IgY2F0ZWdvcnkg
bmV2ZXIgcmVhbGx5IG9jY3VyIGF0IHRoZSBiZWdpbm5pbmcgb2YgYSB3b3JkLAogICAgICAgICAv
LyBzbyBpZiB0aGUgdGFyZ2V0IGJlZ2lucyB3aXRoIHN1Y2ggYSBjaGFyYWN0ZXIsIHdlIGp1c3Qg
aWdub3JlIHRoZSBBdFdvcmRTdGFydCBvcHRpb24uCiAgICAgICAgIGlmIChpc1NlcGFyYXRvcih0
YXJnZXRGaXJzdENoYXJhY3RlcikpIHsKLSAgICAgICAgICAgIG1fb3B0aW9ucyAtPSBBdFdvcmRT
dGFydHM7CisgICAgICAgICAgICBtX29wdGlvbnMucmVtb3ZlKEF0V29yZFN0YXJ0cyk7CiAgICAg
ICAgICAgICBtX25lZWRzTW9yZUNvbnRleHQgPSBmYWxzZTsKICAgICAgICAgfQogICAgIH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCShyZXZpc2lvbiAy
MzU1MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjU3LDkgKzI1Nyw5IEBAIHZvaWQgSFRNTEFuY2hvckVsZW1lbnQ6OnBh
cnNlQXR0cmlidXRlKGMKICAgICAgICAgY29uc3QgYm9vbCBzaG91bGRGb2xkQ2FzZSA9IHRydWU7
CiAgICAgICAgIFNwYWNlU3BsaXRTdHJpbmcgcmVsVmFsdWUodmFsdWUsIHNob3VsZEZvbGRDYXNl
KTsKICAgICAgICAgaWYgKHJlbFZhbHVlLmNvbnRhaW5zKG5vUmVmZXJyZXIpKQotICAgICAgICAg
ICAgbV9saW5rUmVsYXRpb25zIHw9IFJlbGF0aW9uOjpOb1JlZmVycmVyOworICAgICAgICAgICAg
bV9saW5rUmVsYXRpb25zLmFkZChSZWxhdGlvbjo6Tm9SZWZlcnJlcik7CiAgICAgICAgIGlmIChy
ZWxWYWx1ZS5jb250YWlucyhub09wZW5lcikpCi0gICAgICAgICAgICBtX2xpbmtSZWxhdGlvbnMg
fD0gUmVsYXRpb246Ok5vT3BlbmVyOworICAgICAgICAgICAgbV9saW5rUmVsYXRpb25zLmFkZChS
ZWxhdGlvbjo6Tm9PcGVuZXIpOwogICAgICAgICBpZiAobV9yZWxMaXN0KQogICAgICAgICAgICAg
bV9yZWxMaXN0LT5hc3NvY2lhdGVkQXR0cmlidXRlVmFsdWVDaGFuZ2VkKHZhbHVlKTsKICAgICB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2Vu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JQYWdlQWdlbnQuY3BwCShyZXZpc2lvbiAyMzU1MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMxOSw5ICszMTksOSBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6cmVsb2FkKEVycm9yU3Ry
CiAKICAgICBPcHRpb25TZXQ8UmVsb2FkT3B0aW9uPiByZWxvYWRPcHRpb25zOwogICAgIGlmIChy
ZWxvYWRGcm9tT3JpZ2luKQotICAgICAgICByZWxvYWRPcHRpb25zIHw9IFJlbG9hZE9wdGlvbjo6
RnJvbU9yaWdpbjsKKyAgICAgICAgcmVsb2FkT3B0aW9ucy5hZGQoUmVsb2FkT3B0aW9uOjpGcm9t
T3JpZ2luKTsKICAgICBpZiAoIXJldmFsaWRhdGVBbGxSZXNvdXJjZXMpCi0gICAgICAgIHJlbG9h
ZE9wdGlvbnMgfD0gUmVsb2FkT3B0aW9uOjpFeHBpcmVkT25seTsKKyAgICAgICAgcmVsb2FkT3B0
aW9ucy5hZGQoUmVsb2FkT3B0aW9uOjpFeHBpcmVkT25seSk7CiAKICAgICBtX3BhZ2UubWFpbkZy
YW1lKCkubG9hZGVyKCkucmVsb2FkKHJlbG9hZE9wdGlvbnMpOwogfQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMjM1NTM5
KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNjksNyArMzY5LDcgQEAgdm9pZCBDb250ZXh0TWVudUNvbnRyb2xsZXI6
OmNvbnRleHRNZW51SQogICAgICAgICAgICAgICAgIGZyYW1lLT5zZWxlY3Rpb24oKS5zZXRTZWxl
Y3Rpb24od29yZFNlbGVjdGlvbik7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
ICAgIEFTU0VSVChmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0ZWRUZXh0KCkubGVuZ3RoKCkpOwotICAg
ICAgICAgICAgICAgIHJlcGxhY2VPcHRpb25zIHw9IFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpT
ZWxlY3RSZXBsYWNlbWVudDsKKyAgICAgICAgICAgICAgICByZXBsYWNlT3B0aW9ucy5hZGQoUmVw
bGFjZVNlbGVjdGlvbkNvbW1hbmQ6OlNlbGVjdFJlcGxhY2VtZW50KTsKICAgICAgICAgICAgIH0K
IAogICAgICAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gZnJhbWUtPmRvY3VtZW50KCk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCShyZXZpc2lvbiAyMzU1MzkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMjEsMTQg
KzEyMjEsMTQgQEAgYm9vbCBET01XaW5kb3c6OmZpbmQoY29uc3QgU3RyaW5nJiBzdHJpbgogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBGSVhNRSAoMTMwMTYpOiBTdXBwb3J0IHdob2xl
V29yZCwgc2VhcmNoSW5GcmFtZXMgYW5kIHNob3dEaWFsb2cuICAgIAotICAgIEZpbmRPcHRpb25z
IG9wdGlvbnM7CisgICAgRmluZE9wdGlvbnMgb3B0aW9ucyB7IERvTm90VHJhdmVyc2VGbGF0VHJl
ZSB9OwogICAgIGlmIChiYWNrd2FyZHMpCi0gICAgICAgIG9wdGlvbnMgfD0gQmFja3dhcmRzOwor
ICAgICAgICBvcHRpb25zLmFkZChCYWNrd2FyZHMpOwogICAgIGlmICghY2FzZVNlbnNpdGl2ZSkK
LSAgICAgICAgb3B0aW9ucyB8PSBDYXNlSW5zZW5zaXRpdmU7CisgICAgICAgIG9wdGlvbnMuYWRk
KENhc2VJbnNlbnNpdGl2ZSk7CiAgICAgaWYgKHdyYXApCi0gICAgICAgIG9wdGlvbnMgfD0gV3Jh
cEFyb3VuZDsKLSAgICByZXR1cm4gbV9mcmFtZS0+ZWRpdG9yKCkuZmluZFN0cmluZyhzdHJpbmcs
IG9wdGlvbnMgfCBEb05vdFRyYXZlcnNlRmxhdFRyZWUpOworICAgICAgICBvcHRpb25zLmFkZChX
cmFwQXJvdW5kKTsKKyAgICByZXR1cm4gbV9mcmFtZS0+ZWRpdG9yKCkuZmluZFN0cmluZyhzdHJp
bmcsIG9wdGlvbnMpOwogfQogCiBib29sIERPTVdpbmRvdzo6b2Zmc2NyZWVuQnVmZmVyaW5nKCkg
Y29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCShyZXZpc2lv
biAyMzU1MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNjE5LDkgKzYxOSw5IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OmNvbmNs
dWRlRWRpdERyYWcoY28KICAgICAgICAgICAgIGlmIChzZXRTZWxlY3Rpb25Ub0RyYWdDYXJldChp
bm5lckZyYW1lLmdldCgpLCBkcmFnQ2FyZXQsIHJhbmdlLCBwb2ludCkpIHsKICAgICAgICAgICAg
ICAgICBPcHRpb25TZXQ8UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OkNvbW1hbmRPcHRpb24+IG9w
dGlvbnMgeyBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6U2VsZWN0UmVwbGFjZW1lbnQsIFJlcGxh
Y2VTZWxlY3Rpb25Db21tYW5kOjpQcmV2ZW50TmVzdGluZyB9OwogICAgICAgICAgICAgICAgIGlm
IChkcmFnRGF0YS5jYW5TbWFydFJlcGxhY2UoKSkKLSAgICAgICAgICAgICAgICAgICAgb3B0aW9u
cyB8PSBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6U21hcnRSZXBsYWNlOworICAgICAgICAgICAg
ICAgICAgICBvcHRpb25zLmFkZChSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6U21hcnRSZXBsYWNl
KTsKICAgICAgICAgICAgICAgICBpZiAoY2hvc2VQbGFpblRleHQpCi0gICAgICAgICAgICAgICAg
ICAgIG9wdGlvbnMgfD0gUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6Ok1hdGNoU3R5bGU7CisgICAg
ICAgICAgICAgICAgICAgIG9wdGlvbnMuYWRkKFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpNYXRj
aFN0eWxlKTsKICAgICAgICAgICAgICAgICBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6Y3JlYXRl
KCptX2RvY3VtZW50VW5kZXJNb3VzZSwgZnJhZ21lbnQucmVsZWFzZU5vbk51bGwoKSwgb3B0aW9u
cywgRWRpdEFjdGlvbkluc2VydEZyb21Ecm9wKS0+YXBwbHkoKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5jcHAJ
KHJldmlzaW9uIDIzNTUzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVTbmFwc2hvdHRp
bmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MiwxMyArOTIsMTMgQEAgc3RkOjp1bmlxdWVfcHRy
PEltYWdlQnVmZmVyPiBzbmFwc2hvdEZyYQogCiAgICAgYXV0byBwYWludEJlaGF2aW9yID0gc3Rh
dGUucGFpbnRCZWhhdmlvcjsKICAgICBpZiAob3B0aW9ucyAmIFNuYXBzaG90T3B0aW9uc0ZvcmNl
QmxhY2tUZXh0KQotICAgICAgICBwYWludEJlaGF2aW9yIHw9IFBhaW50QmVoYXZpb3I6OkZvcmNl
QmxhY2tUZXh0OworICAgICAgICBwYWludEJlaGF2aW9yLmFkZChQYWludEJlaGF2aW9yOjpGb3Jj
ZUJsYWNrVGV4dCk7CiAgICAgaWYgKG9wdGlvbnMgJiBTbmFwc2hvdE9wdGlvbnNQYWludFNlbGVj
dGlvbk9ubHkpCi0gICAgICAgIHBhaW50QmVoYXZpb3IgfD0gUGFpbnRCZWhhdmlvcjo6U2VsZWN0
aW9uT25seTsKKyAgICAgICAgcGFpbnRCZWhhdmlvci5hZGQoUGFpbnRCZWhhdmlvcjo6U2VsZWN0
aW9uT25seSk7CiAgICAgaWYgKG9wdGlvbnMgJiBTbmFwc2hvdE9wdGlvbnNQYWludFNlbGVjdGlv
bkFuZEJhY2tncm91bmRzT25seSkKLSAgICAgICAgcGFpbnRCZWhhdmlvciB8PSBQYWludEJlaGF2
aW9yOjpTZWxlY3Rpb25BbmRCYWNrZ3JvdW5kc09ubHk7CisgICAgICAgIHBhaW50QmVoYXZpb3Iu
YWRkKFBhaW50QmVoYXZpb3I6OlNlbGVjdGlvbkFuZEJhY2tncm91bmRzT25seSk7CiAgICAgaWYg
KG9wdGlvbnMgJiBTbmFwc2hvdE9wdGlvbnNQYWludEV2ZXJ5dGhpbmdFeGNsdWRpbmdTZWxlY3Rp
b24pCi0gICAgICAgIHBhaW50QmVoYXZpb3IgfD0gUGFpbnRCZWhhdmlvcjo6RXhjbHVkZVNlbGVj
dGlvbjsKKyAgICAgICAgcGFpbnRCZWhhdmlvci5hZGQoUGFpbnRCZWhhdmlvcjo6RXhjbHVkZVNl
bGVjdGlvbik7CiAKICAgICAvLyBPdGhlciBwYWludCBiZWhhdmlvcnMgYXJlIHNldCBieSBwYWlu
dENvbnRlbnRzRm9yU25hcHNob3QuCiAgICAgZnJhbWUudmlldygpLT5zZXRQYWludEJlaGF2aW9y
KHBhaW50QmVoYXZpb3IpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAkocmV2aXNp
b24gMjM1NTM5KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNDAsMTEgKzE0MCwxMSBAQCBzdGF0aWMgT3B0aW9uU2V0PFJlbmRlckxheWVy
OjpVcGRhdGVMYXllCiB7CiAgICAgYXV0byBmbGFncyA9IFJlbmRlckxheWVyOjp1cGRhdGVMYXll
clBvc2l0aW9uc0RlZmF1bHRGbGFncygpOwogICAgIGlmIChkaWRGdWxsUmVwYWludCkgewotICAg
ICAgICBmbGFncyAtPSBSZW5kZXJMYXllcjo6Q2hlY2tGb3JSZXBhaW50OwotICAgICAgICBmbGFn
cyB8PSBSZW5kZXJMYXllcjo6TmVlZHNGdWxsUmVwYWludEluQmFja2luZzsKKyAgICAgICAgZmxh
Z3MucmVtb3ZlKFJlbmRlckxheWVyOjpDaGVja0ZvclJlcGFpbnQpOworICAgICAgICBmbGFncy5h
ZGQoUmVuZGVyTGF5ZXI6Ok5lZWRzRnVsbFJlcGFpbnRJbkJhY2tpbmcpOwogICAgIH0KICAgICBp
ZiAoaXNSZWxheW91dGluZ1N1YnRyZWUgJiYgbGF5ZXItPmVuY2xvc2luZ1BhZ2luYXRpb25MYXll
cihSZW5kZXJMYXllcjo6SW5jbHVkZUNvbXBvc2l0ZWRQYWdpbmF0ZWRMYXllcnMpKQotICAgICAg
ICBmbGFncyB8PSBSZW5kZXJMYXllcjo6VXBkYXRlUGFnaW5hdGlvbjsKKyAgICAgICAgZmxhZ3Mu
YWRkKFJlbmRlckxheWVyOjpVcGRhdGVQYWdpbmF0aW9uKTsKICAgICByZXR1cm4gZmxhZ3M7CiB9
CiAKQEAgLTQwNjgsMTggKzQwNjgsMTggQEAgdm9pZCBGcmFtZVZpZXc6OndpbGxQYWludENvbnRl
bnRzKEdyYXBoaQogICAgIAogICAgIGlmIChGcmFtZVZpZXcqIHBhcmVudFZpZXcgPSBwYXJlbnRG
cmFtZVZpZXcoKSkgewogICAgICAgICBpZiAocGFyZW50Vmlldy0+cGFpbnRCZWhhdmlvcigpICYg
UGFpbnRCZWhhdmlvcjo6RmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzKQotICAgICAgICAgICAgbV9w
YWludEJlaGF2aW9yIHw9IFBhaW50QmVoYXZpb3I6OkZsYXR0ZW5Db21wb3NpdGluZ0xheWVyczsK
KyAgICAgICAgICAgIG1fcGFpbnRCZWhhdmlvci5hZGQoUGFpbnRCZWhhdmlvcjo6RmxhdHRlbkNv
bXBvc2l0aW5nTGF5ZXJzKTsKICAgICAgICAgCiAgICAgICAgIGlmIChwYXJlbnRWaWV3LT5wYWlu
dEJlaGF2aW9yKCkgJiBQYWludEJlaGF2aW9yOjpTbmFwc2hvdHRpbmcpCi0gICAgICAgICAgICBt
X3BhaW50QmVoYXZpb3IgfD0gUGFpbnRCZWhhdmlvcjo6U25hcHNob3R0aW5nOworICAgICAgICAg
ICAgbV9wYWludEJlaGF2aW9yLmFkZChQYWludEJlaGF2aW9yOjpTbmFwc2hvdHRpbmcpOwogICAg
ICAgICAKICAgICAgICAgaWYgKHBhcmVudFZpZXctPnBhaW50QmVoYXZpb3IoKSAmIFBhaW50QmVo
YXZpb3I6OlRpbGVGaXJzdFBhaW50KQotICAgICAgICAgICAgbV9wYWludEJlaGF2aW9yIHw9IFBh
aW50QmVoYXZpb3I6OlRpbGVGaXJzdFBhaW50OworICAgICAgICAgICAgbV9wYWludEJlaGF2aW9y
LmFkZChQYWludEJlaGF2aW9yOjpUaWxlRmlyc3RQYWludCk7CiAgICAgfQogCiAgICAgaWYgKGRv
Y3VtZW50LT5wcmludGluZygpKSB7Ci0gICAgICAgIG1fcGFpbnRCZWhhdmlvciB8PSBQYWludEJl
aGF2aW9yOjpGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnM7Ci0gICAgICAgIG1fcGFpbnRCZWhhdmlv
ciB8PSBQYWludEJlaGF2aW9yOjpTbmFwc2hvdHRpbmc7CisgICAgICAgIG1fcGFpbnRCZWhhdmlv
ci5hZGQoUGFpbnRCZWhhdmlvcjo6RmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzKTsKKyAgICAgICAg
bV9wYWludEJlaGF2aW9yLmFkZChQYWludEJlaGF2aW9yOjpTbmFwc2hvdHRpbmcpOwogICAgIH0K
IAogICAgIHBhaW50aW5nU3RhdGUuaXNGbGF0dGVuaW5nUGFpbnRPZlJvb3RGcmFtZSA9IChtX3Bh
aW50QmVoYXZpb3IgJiBQYWludEJlaGF2aW9yOjpGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMpICYm
ICFmcmFtZSgpLm93bmVyRWxlbWVudCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCShyZXZpc2lv
biAyMzU1MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNjQzLDExICsxNjQzLDExIEBAIHZvaWQgUGFnZTo6c2V0SXNWaXNpYmxlKGJvb2wgaXNW
aXNpYmxlKQogICAgIGF1dG8gc3RhdGUgPSBtX2FjdGl2aXR5U3RhdGU7CiAKICAgICBpZiAoaXNW
aXNpYmxlKSB7Ci0gICAgICAgIHN0YXRlIC09IEFjdGl2aXR5U3RhdGU6OklzVmlzdWFsbHlJZGxl
OwotICAgICAgICBzdGF0ZSB8PSB7IEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSwgQWN0aXZpdHlT
dGF0ZTo6SXNWaXNpYmxlT3JPY2NsdWRlZCB9OworICAgICAgICBzdGF0ZS5yZW1vdmUoQWN0aXZp
dHlTdGF0ZTo6SXNWaXN1YWxseUlkbGUpOworICAgICAgICBzdGF0ZS5hZGQoeyBBY3Rpdml0eVN0
YXRlOjpJc1Zpc2libGUsIEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZU9yT2NjbHVkZWQgfSk7CiAg
ICAgfSBlbHNlIHsKLSAgICAgICAgc3RhdGUgfD0gQWN0aXZpdHlTdGF0ZTo6SXNWaXN1YWxseUlk
bGU7Ci0gICAgICAgIHN0YXRlIC09IHsgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlLCBBY3Rpdml0
eVN0YXRlOjpJc1Zpc2libGVPck9jY2x1ZGVkIH07CisgICAgICAgIHN0YXRlLmFkZChBY3Rpdml0
eVN0YXRlOjpJc1Zpc3VhbGx5SWRsZSk7CisgICAgICAgIHN0YXRlLnJlbW92ZSh7IEFjdGl2aXR5
U3RhdGU6OklzVmlzaWJsZSwgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlT3JPY2NsdWRlZCB9KTsK
ICAgICB9CiAgICAgc2V0QWN0aXZpdHlTdGF0ZShzdGF0ZSk7CiB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wYWdlL1BlcmZvcm1hbmNlT2JzZXJ2ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VPYnNlcnZlci5jcHAJKHJldmlzaW9uIDIzNTUzOSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VPYnNlcnZlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTY1LDcgKzY1LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gUGVyZm9ybWFuY2VPYnNlcnZl
cjo6bwogICAgIE9wdGlvblNldDxQZXJmb3JtYW5jZUVudHJ5OjpUeXBlPiBmaWx0ZXI7CiAgICAg
Zm9yIChjb25zdCBTdHJpbmcmIGVudHJ5VHlwZSA6IGluaXQuZW50cnlUeXBlcykgewogICAgICAg
ICBpZiAoYXV0byB0eXBlID0gUGVyZm9ybWFuY2VFbnRyeTo6cGFyc2VFbnRyeVR5cGVTdHJpbmco
ZW50cnlUeXBlKSkKLSAgICAgICAgICAgIGZpbHRlciB8PSAqdHlwZTsKKyAgICAgICAgICAgIGZp
bHRlci5hZGQoKnR5cGUpOwogICAgIH0KIAogICAgIGlmIChmaWx0ZXIuaXNFbXB0eSgpKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGFnZS9UZXh0SW5kaWNhdG9yLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wYWdlL1RleHRJbmRpY2F0b3IuY3BwCShyZXZpc2lvbiAyMzU1MzkpCisr
KyBTb3VyY2UvV2ViQ29yZS9wYWdlL1RleHRJbmRpY2F0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC03OCw4ICs3OCw4IEBAIFJlZlB0cjxUZXh0SW5kaWNhdG9yPiBUZXh0SW5kaWNhdG9yOjpjcmUK
ICAgICBWaXNpYmxlU2VsZWN0aW9uIG9sZFNlbGVjdGlvbiA9IGZyYW1lLT5zZWxlY3Rpb24oKS5z
ZWxlY3Rpb24oKTsKICAgICBPcHRpb25TZXQ8VGVtcG9yYXJ5U2VsZWN0aW9uT3B0aW9uPiB0ZW1w
b3JhcnlTZWxlY3Rpb25PcHRpb25zOwogI2lmIFBMQVRGT1JNKElPUykKLSAgICB0ZW1wb3JhcnlT
ZWxlY3Rpb25PcHRpb25zIHw9IFRlbXBvcmFyeVNlbGVjdGlvbk9wdGlvbklnbm9yZVNlbGVjdGlv
bkNoYW5nZXM7Ci0gICAgdGVtcG9yYXJ5U2VsZWN0aW9uT3B0aW9ucyB8PSBUZW1wb3JhcnlTZWxl
Y3Rpb25PcHRpb25FbmFibGVBcHBlYXJhbmNlVXBkYXRlczsKKyAgICB0ZW1wb3JhcnlTZWxlY3Rp
b25PcHRpb25zLmFkZChUZW1wb3JhcnlTZWxlY3Rpb25PcHRpb25JZ25vcmVTZWxlY3Rpb25DaGFu
Z2VzKTsKKyAgICB0ZW1wb3JhcnlTZWxlY3Rpb25PcHRpb25zLmFkZChUZW1wb3JhcnlTZWxlY3Rp
b25PcHRpb25FbmFibGVBcHBlYXJhbmNlVXBkYXRlcyk7CiAjZW5kaWYKICAgICBUZW1wb3JhcnlT
ZWxlY3Rpb25DaGFuZ2Ugc2VsZWN0aW9uQ2hhbmdlKCpmcmFtZSwgeyByYW5nZSB9LCB0ZW1wb3Jh
cnlTZWxlY3Rpb25PcHRpb25zKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9XaW5kb3dG
ZWF0dXJlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9XaW5kb3dGZWF0
dXJlcy5jcHAJKHJldmlzaW9uIDIzNTUzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvV2luZG93
RmVhdHVyZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjAsNyArMTIwLDcgQEAgT3B0aW9uU2V0
PERpc2FibGVkQWRhcHRhdGlvbnM+IHBhcnNlRGlzYQogICAgIGZvciAoYXV0byYgbmFtZSA6IGRp
c2FibGVkQWRhcHRhdGlvbnNTdHJpbmcuc3BsaXQoJywnKSkgewogICAgICAgICBhdXRvIG5vcm1h
bGl6ZWROYW1lID0gbmFtZS5zdHJpcFdoaXRlU3BhY2UoKS5jb252ZXJ0VG9BU0NJSUxvd2VyY2Fz
ZSgpOwogICAgICAgICBpZiAobm9ybWFsaXplZE5hbWUgPT0gd2F0Y2hBZGFwdGF0aW9uTmFtZSgp
KQotICAgICAgICAgICAgZGlzYWJsZWRBZGFwdGF0aW9ucyB8PSBEaXNhYmxlZEFkYXB0YXRpb25z
OjpXYXRjaDsKKyAgICAgICAgICAgIGRpc2FibGVkQWRhcHRhdGlvbnMuYWRkKERpc2FibGVkQWRh
cHRhdGlvbnM6OldhdGNoKTsKICAgICB9CiAgICAgcmV0dXJuIGRpc2FibGVkQWRhcHRhdGlvbnM7
CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3ku
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQ
b2xpY3kuaAkocmV2aXNpb24gMjM1NTM5KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29u
dGVudFNlY3VyaXR5UG9saWN5LmgJKHdvcmtpbmcgY29weSkKQEAgLTE1MSwxMSArMTUxLDExIEBA
IHB1YmxpYzoKICAgICB2b2lkIGVuZm9yY2VTYW5kYm94RmxhZ3MoU2FuZGJveEZsYWdzIHNhbmRi
b3hGbGFncykgeyBtX3NhbmRib3hGbGFncyB8PSBzYW5kYm94RmxhZ3M7IH0KICAgICB2b2lkIGFk
ZEhhc2hBbGdvcml0aG1zRm9ySW5saW5lU2NyaXB0cyhPcHRpb25TZXQ8Q29udGVudFNlY3VyaXR5
UG9saWN5SGFzaEFsZ29yaXRobT4gaGFzaEFsZ29yaXRobXNGb3JJbmxpbmVTY3JpcHRzKQogICAg
IHsKLSAgICAgICAgbV9oYXNoQWxnb3JpdGhtc0ZvcklubGluZVNjcmlwdHMgfD0gaGFzaEFsZ29y
aXRobXNGb3JJbmxpbmVTY3JpcHRzOworICAgICAgICBtX2hhc2hBbGdvcml0aG1zRm9ySW5saW5l
U2NyaXB0cy5hZGQoaGFzaEFsZ29yaXRobXNGb3JJbmxpbmVTY3JpcHRzKTsKICAgICB9CiAgICAg
dm9pZCBhZGRIYXNoQWxnb3JpdGhtc0ZvcklubGluZVN0eWxlc2hlZXRzKE9wdGlvblNldDxDb250
ZW50U2VjdXJpdHlQb2xpY3lIYXNoQWxnb3JpdGhtPiBoYXNoQWxnb3JpdGhtc0ZvcklubGluZVN0
eWxlc2hlZXRzKQogICAgIHsKLSAgICAgICAgbV9oYXNoQWxnb3JpdGhtc0ZvcklubGluZVN0eWxl
c2hlZXRzIHw9IGhhc2hBbGdvcml0aG1zRm9ySW5saW5lU3R5bGVzaGVldHM7CisgICAgICAgIG1f
aGFzaEFsZ29yaXRobXNGb3JJbmxpbmVTdHlsZXNoZWV0cy5hZGQoaGFzaEFsZ29yaXRobXNGb3JJ
bmxpbmVTdHlsZXNoZWV0cyk7CiAgICAgfQogCiAgICAgLy8gVXNlZCBieSBDb250ZW50U2VjdXJp
dHlQb2xpY3lTb3VyY2UKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1
cml0eVBvbGljeVNvdXJjZUxpc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3QuY3BwCShyZXZpc2lvbiAyMzU1
MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3Vy
Y2VMaXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDczLDcgKzQ3Myw3IEBAIGJvb2wgQ29udGVu
dFNlY3VyaXR5UG9saWN5U291cmNlTGlzdDo6cGEKICAgICBpZiAoZGlnZXN0LT52YWx1ZS5zaXpl
KCkgPiBDb250ZW50U2VjdXJpdHlQb2xpY3lIYXNoOjptYXhpbXVtRGlnZXN0TGVuZ3RoKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBtX2hhc2hBbGdvcml0aG1zVXNlZCB8PSBkaWdlc3Qt
PmFsZ29yaXRobTsKKyAgICBtX2hhc2hBbGdvcml0aG1zVXNlZC5hZGQoZGlnZXN0LT5hbGdvcml0
aG0pOwogICAgIG1faGFzaGVzLmFkZChXVEZNb3ZlKCpkaWdlc3QpKTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtRXZlbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUV2ZW50LmgJKHJldmlz
aW9uIDIzNTUzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtRXZlbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtMTE1LDEzICsxMTUsMTMgQEAgcHJvdGVjdGVkOgogICAgICAgICAs
IG1fdGltZXN0YW1wKHRpbWVzdGFtcCkKICAgICB7CiAgICAgICAgIGlmIChzaGlmdEtleSkKLSAg
ICAgICAgICAgIG1fbW9kaWZpZXJzIHw9IE1vZGlmaWVyOjpTaGlmdEtleTsKKyAgICAgICAgICAg
IG1fbW9kaWZpZXJzLmFkZChNb2RpZmllcjo6U2hpZnRLZXkpOwogICAgICAgICBpZiAoY3RybEtl
eSkKLSAgICAgICAgICAgIG1fbW9kaWZpZXJzIHw9IE1vZGlmaWVyOjpDdHJsS2V5OworICAgICAg
ICAgICAgbV9tb2RpZmllcnMuYWRkKE1vZGlmaWVyOjpDdHJsS2V5KTsKICAgICAgICAgaWYgKGFs
dEtleSkKLSAgICAgICAgICAgIG1fbW9kaWZpZXJzIHw9IE1vZGlmaWVyOjpBbHRLZXk7CisgICAg
ICAgICAgICBtX21vZGlmaWVycy5hZGQoTW9kaWZpZXI6OkFsdEtleSk7CiAgICAgICAgIGlmICht
ZXRhS2V5KQotICAgICAgICAgICAgbV9tb2RpZmllcnMgfD0gTW9kaWZpZXI6Ok1ldGFLZXk7Cisg
ICAgICAgICAgICBtX21vZGlmaWVycy5hZGQoTW9kaWZpZXI6Ok1ldGFLZXkpOwogICAgIH0KIAog
ICAgIC8vIEV4cGxpY2l0IHByb3RlY3RlZCBkZXN0cnVjdG9yIHNvIHRoYXQgcGVvcGxlIGRvbid0
IGFjY2lkZW50YWxseQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1BsYXRmb3Jt
TW91c2VFdmVudEd0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL1BsYXRmb3JtTW91c2VFdmVudEd0ay5jcHAJKHJldmlzaW9uIDIzNTUzOSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybU1vdXNlRXZlbnRHdGsuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00NywxNSArNDcsMTUgQEAgUGxhdGZvcm1Nb3VzZUV2ZW50OjpQbGF0Zm9ybU1v
dXNlRXZlbnQoRwogICAgIG1fbW9kaWZpZXJGbGFncyA9IDA7CiAKICAgICBpZiAoZXZlbnQtPnN0
YXRlICYgR0RLX1NISUZUX01BU0spCi0gICAgICAgIG1fbW9kaWZpZXJzIHw9IFBsYXRmb3JtRXZl
bnQ6Ok1vZGlmaWVyOjpTaGlmdEtleTsKKyAgICAgICAgbV9tb2RpZmllcnMuYWRkKFBsYXRmb3Jt
RXZlbnQ6Ok1vZGlmaWVyOjpTaGlmdEtleSk7CiAgICAgaWYgKGV2ZW50LT5zdGF0ZSAmIEdES19D
T05UUk9MX01BU0spCi0gICAgICAgIG1fbW9kaWZpZXJzIHw9IFBsYXRmb3JtRXZlbnQ6Ok1vZGlm
aWVyOjpDdHJsS2V5OworICAgICAgICBtX21vZGlmaWVycy5hZGQoUGxhdGZvcm1FdmVudDo6TW9k
aWZpZXI6OkN0cmxLZXkpOwogICAgIGlmIChldmVudC0+c3RhdGUgJiBHREtfTU9EMV9NQVNLKQot
ICAgICAgICBtX21vZGlmaWVycyB8PSBQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcjo6QWx0S2V5Owor
ICAgICAgICBtX21vZGlmaWVycy5hZGQoUGxhdGZvcm1FdmVudDo6TW9kaWZpZXI6OkFsdEtleSk7
CiAgICAgaWYgKGV2ZW50LT5zdGF0ZSAmIEdES19NRVRBX01BU0spCi0gICAgICAgIG1fbW9kaWZp
ZXJzIHw9IFBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVyOjpNZXRhS2V5OworICAgICAgICBtX21vZGlm
aWVycy5hZGQoUGxhdGZvcm1FdmVudDo6TW9kaWZpZXI6Ok1ldGFLZXkpOwogICAgIGlmIChQbGF0
Zm9ybUtleWJvYXJkRXZlbnQ6Om1vZGlmaWVyc0NvbnRhaW5DYXBzTG9jayhldmVudC0+c3RhdGUp
KQotICAgICAgICBtX21vZGlmaWVycyB8PSBQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcjo6Q2Fwc0xv
Y2tLZXk7CisgICAgICAgIG1fbW9kaWZpZXJzLmFkZChQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcjo6
Q2Fwc0xvY2tLZXkpOwogCiAgICAgc3dpdGNoIChldmVudC0+dHlwZSkgewogICAgIGNhc2UgR0RL
X0JVVFRPTl9QUkVTUzoKQEAgLTk2LDE1ICs5NiwxNSBAQCBQbGF0Zm9ybU1vdXNlRXZlbnQ6OlBs
YXRmb3JtTW91c2VFdmVudChHCiAgICAgbV9tb2RpZmllckZsYWdzID0gMDsKIAogICAgIGlmICht
b3Rpb24tPnN0YXRlICYgR0RLX1NISUZUX01BU0spCi0gICAgICAgIG1fbW9kaWZpZXJzIHw9IFBs
YXRmb3JtRXZlbnQ6Ok1vZGlmaWVyOjpTaGlmdEtleTsKKyAgICAgICAgbV9tb2RpZmllcnMuYWRk
KFBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVyOjpTaGlmdEtleSk7CiAgICAgaWYgKG1vdGlvbi0+c3Rh
dGUgJiBHREtfQ09OVFJPTF9NQVNLKQotICAgICAgICBtX21vZGlmaWVycyB8PSBQbGF0Zm9ybUV2
ZW50OjpNb2RpZmllcjo6Q3RybEtleTsKKyAgICAgICAgbV9tb2RpZmllcnMuYWRkKFBsYXRmb3Jt
RXZlbnQ6Ok1vZGlmaWVyOjpDdHJsS2V5KTsKICAgICBpZiAobW90aW9uLT5zdGF0ZSAmIEdES19N
T0QxX01BU0spCi0gICAgICAgIG1fbW9kaWZpZXJzIHw9IFBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVy
OjpBbHRLZXk7CisgICAgICAgIG1fbW9kaWZpZXJzLmFkZChQbGF0Zm9ybUV2ZW50OjpNb2RpZmll
cjo6QWx0S2V5KTsKICAgICBpZiAobW90aW9uLT5zdGF0ZSAmIEdES19NRVRBX01BU0spCi0gICAg
ICAgIG1fbW9kaWZpZXJzIHw9IFBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVyOjpNZXRhS2V5OworICAg
ICAgICBtX21vZGlmaWVycy5hZGQoUGxhdGZvcm1FdmVudDo6TW9kaWZpZXI6Ok1ldGFLZXkpOwog
ICAgIGlmIChQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6Om1vZGlmaWVyc0NvbnRhaW5DYXBzTG9jayht
b3Rpb24tPnN0YXRlKSkKLSAgICAgICAgbV9tb2RpZmllcnMgfD0gUGxhdGZvcm1FdmVudDo6TW9k
aWZpZXI6OkNhcHNMb2NrS2V5OworICAgICAgICBtX21vZGlmaWVycy5hZGQoUGxhdGZvcm1FdmVu
dDo6TW9kaWZpZXI6OkNhcHNMb2NrS2V5KTsKIAogICAgIHN3aXRjaCAobW90aW9uLT50eXBlKSB7
CiAgICAgY2FzZSBHREtfTU9USU9OX05PVElGWToKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9SZW5kZXJUaGVtZUdhZGdldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR2FkZ2V0LmNwcAkocmV2aXNpb24gMjM1NTM5KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR2FkZ2V0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzU4LDEzICszNTgsMTMgQEAgUmVuZGVyVGhlbWVTY3JvbGxiYXJHYWRn
ZXQ6OlJlbmRlclRoZW1lUwogICAgIGd0a19zdHlsZV9jb250ZXh0X2dldF9zdHlsZShtX2NvbnRl
eHQuZ2V0KCksICJoYXMtYmFja3dhcmQtc3RlcHBlciIsICZoYXNCYWNrd2FyZCwgImhhcy1mb3J3
YXJkLXN0ZXBwZXIiLCAmaGFzRm9yd2FyZCwKICAgICAgICAgImhhcy1zZWNvbmRhcnktYmFja3dh
cmQtc3RlcHBlciIsICZoYXNTZWNvbmRhcnlCYWNrd2FyZCwgImhhcy1zZWNvbmRhcnktZm9yd2Fy
ZC1zdGVwcGVyIiwgJmhhc1NlY29uZGFyeUZvcndhcmQsIG51bGxwdHIpOwogICAgIGlmIChoYXNC
YWNrd2FyZCkKLSAgICAgICAgbV9zdGVwcGVycyB8PSBTdGVwcGVyczo6QmFja3dhcmQ7CisgICAg
ICAgIG1fc3RlcHBlcnMuYWRkKFN0ZXBwZXJzOjpCYWNrd2FyZCk7CiAgICAgaWYgKGhhc0Zvcndh
cmQpCi0gICAgICAgIG1fc3RlcHBlcnMgfD0gU3RlcHBlcnM6OkZvcndhcmQ7CisgICAgICAgIG1f
c3RlcHBlcnMuYWRkKFN0ZXBwZXJzOjpGb3J3YXJkKTsKICAgICBpZiAoaGFzU2Vjb25kYXJ5QmFj
a3dhcmQpCi0gICAgICAgIG1fc3RlcHBlcnMgfD0gU3RlcHBlcnM6OlNlY29uZGFyeUJhY2t3YXJk
OworICAgICAgICBtX3N0ZXBwZXJzLmFkZChTdGVwcGVyczo6U2Vjb25kYXJ5QmFja3dhcmQpOwog
ICAgIGlmIChoYXNTZWNvbmRhcnlGb3J3YXJkKQotICAgICAgICBtX3N0ZXBwZXJzIHw9IFN0ZXBw
ZXJzOjpTZWNvbmRhcnlGb3J3YXJkOworICAgICAgICBtX3N0ZXBwZXJzLmFkZChTdGVwcGVyczo6
U2Vjb25kYXJ5Rm9yd2FyZCk7CiB9CiAKIHZvaWQgUmVuZGVyVGhlbWVTY3JvbGxiYXJHYWRnZXQ6
OnJlbmRlclN0ZXBwZXIoY2Fpcm9fdCogY3IsIGNvbnN0IEZsb2F0UmVjdCYgcGFpbnRSZWN0LCBS
ZW5kZXJUaGVtZUdhZGdldCogc3RlcHBlckdhZGdldCwgR3RrT3JpZW50YXRpb24gb3JpZW50YXRp
b24sIFN0ZXBwZXJzIHN0ZXBwZXIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
UGxhdGZvcm1FdmVudEZhY3RvcnlJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1BsYXRmb3JtRXZlbnRGYWN0b3J5SU9TLm1tCShyZXZpc2lvbiAyMzU1Mzkp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1FdmVudEZhY3RvcnlJT1Mu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTQzLDE1ICs0MywxNSBAQCBzdGF0aWMgT3B0aW9uU2V0PFBs
YXRmb3JtRXZlbnQ6Ok1vZGlmaWVyCiAgICAgT3B0aW9uU2V0PFBsYXRmb3JtRXZlbnQ6Ok1vZGlm
aWVyPiBtb2RpZmllcnM7CiAKICAgICBpZiAoZXZlbnQubW9kaWZpZXJGbGFncyAmIFdlYkV2ZW50
RmxhZ01hc2tTaGlmdCkKLSAgICAgICAgbW9kaWZpZXJzIHw9IFBsYXRmb3JtRXZlbnQ6Ok1vZGlm
aWVyOjpTaGlmdEtleTsKKyAgICAgICAgbW9kaWZpZXJzLmFkZChQbGF0Zm9ybUV2ZW50OjpNb2Rp
Zmllcjo6U2hpZnRLZXkpOwogICAgIGlmIChldmVudC5tb2RpZmllckZsYWdzICYgV2ViRXZlbnRG
bGFnTWFza0NvbnRyb2wpCi0gICAgICAgIG1vZGlmaWVycyB8PSBQbGF0Zm9ybUV2ZW50OjpNb2Rp
Zmllcjo6Q3RybEtleTsKKyAgICAgICAgbW9kaWZpZXJzLmFkZChQbGF0Zm9ybUV2ZW50OjpNb2Rp
Zmllcjo6Q3RybEtleSk7CiAgICAgaWYgKGV2ZW50Lm1vZGlmaWVyRmxhZ3MgJiBXZWJFdmVudEZs
YWdNYXNrQWx0ZXJuYXRlKQotICAgICAgICBtb2RpZmllcnMgfD0gUGxhdGZvcm1FdmVudDo6TW9k
aWZpZXI6OkFsdEtleTsKKyAgICAgICAgbW9kaWZpZXJzLmFkZChQbGF0Zm9ybUV2ZW50OjpNb2Rp
Zmllcjo6QWx0S2V5KTsKICAgICBpZiAoZXZlbnQubW9kaWZpZXJGbGFncyAmIFdlYkV2ZW50Rmxh
Z01hc2tDb21tYW5kKQotICAgICAgICBtb2RpZmllcnMgfD0gUGxhdGZvcm1FdmVudDo6TW9kaWZp
ZXI6Ok1ldGFLZXk7CisgICAgICAgIG1vZGlmaWVycy5hZGQoUGxhdGZvcm1FdmVudDo6TW9kaWZp
ZXI6Ok1ldGFLZXkpOwogICAgIGlmIChldmVudC5tb2RpZmllckZsYWdzICYgV2ViRXZlbnRGbGFn
TWFza0FscGhhU2hpZnQpCi0gICAgICAgIG1vZGlmaWVycyB8PSBQbGF0Zm9ybUV2ZW50OjpNb2Rp
Zmllcjo6Q2Fwc0xvY2tLZXk7CisgICAgICAgIG1vZGlmaWVycy5hZGQoUGxhdGZvcm1FdmVudDo6
TW9kaWZpZXI6OkNhcHNMb2NrS2V5KTsKIAogICAgIHJldHVybiBtb2RpZmllcnM7CiB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1FdmVudEZhY3RvcnlNYWMubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtRXZlbnRG
YWN0b3J5TWFjLm1tCShyZXZpc2lvbiAyMzU1MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvUGxhdGZvcm1FdmVudEZhY3RvcnlNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTY2Niwx
NSArNjY2LDE1IEBAIE9wdGlvblNldDxQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcj4gbW9kaWYKICAg
ICBPcHRpb25TZXQ8UGxhdGZvcm1FdmVudDo6TW9kaWZpZXI+IG1vZGlmaWVyczsKIAogICAgIGlm
IChldmVudC5tb2RpZmllckZsYWdzICYgTlNFdmVudE1vZGlmaWVyRmxhZ1NoaWZ0KQotICAgICAg
ICBtb2RpZmllcnMgfD0gUGxhdGZvcm1FdmVudDo6TW9kaWZpZXI6OlNoaWZ0S2V5OworICAgICAg
ICBtb2RpZmllcnMuYWRkKFBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVyOjpTaGlmdEtleSk7CiAgICAg
aWYgKGV2ZW50Lm1vZGlmaWVyRmxhZ3MgJiBOU0V2ZW50TW9kaWZpZXJGbGFnQ29udHJvbCkKLSAg
ICAgICAgbW9kaWZpZXJzIHw9IFBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVyOjpDdHJsS2V5OworICAg
ICAgICBtb2RpZmllcnMuYWRkKFBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVyOjpDdHJsS2V5KTsKICAg
ICBpZiAoZXZlbnQubW9kaWZpZXJGbGFncyAmIE5TRXZlbnRNb2RpZmllckZsYWdPcHRpb24pCi0g
ICAgICAgIG1vZGlmaWVycyB8PSBQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcjo6QWx0S2V5OworICAg
ICAgICBtb2RpZmllcnMuYWRkKFBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVyOjpBbHRLZXkpOwogICAg
IGlmIChldmVudC5tb2RpZmllckZsYWdzICYgTlNFdmVudE1vZGlmaWVyRmxhZ0NvbW1hbmQpCi0g
ICAgICAgIG1vZGlmaWVycyB8PSBQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcjo6TWV0YUtleTsKKyAg
ICAgICAgbW9kaWZpZXJzLmFkZChQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcjo6TWV0YUtleSk7CiAg
ICAgaWYgKGV2ZW50Lm1vZGlmaWVyRmxhZ3MgJiBOU0V2ZW50TW9kaWZpZXJGbGFnQ2Fwc0xvY2sp
Ci0gICAgICAgIG1vZGlmaWVycyB8PSBQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcjo6Q2Fwc0xvY2tL
ZXk7CisgICAgICAgIG1vZGlmaWVycy5hZGQoUGxhdGZvcm1FdmVudDo6TW9kaWZpZXI6OkNhcHNM
b2NrS2V5KTsKIAogICAgIHJldHVybiBtb2RpZmllcnM7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAJKHJldmlzaW9uIDIzNTUzOSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1Nywx
NyArNTU3LDE3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZUxheWVyUG9zaXRpb25zKFIKICAg
ICAvLyBDbGVhciB0aGUgSXNDb21wb3NpdGluZ1VwZGF0ZVJvb3QgZmxhZyBvbmNlIHdlJ3ZlIGZv
dW5kIHRoZSBmaXJzdCBjb21wb3NpdGluZyBsYXllciBpbiB0aGlzIHVwZGF0ZS4KICAgICBib29s
IGlzVXBkYXRlUm9vdCA9IGZsYWdzLmNvbnRhaW5zKElzQ29tcG9zaXRpbmdVcGRhdGVSb290KTsK
ICAgICBpZiAoaXNDb21wb3NpdGVkKCkpCi0gICAgICAgIGZsYWdzIC09IElzQ29tcG9zaXRpbmdV
cGRhdGVSb290OworICAgICAgICBmbGFncy5yZW1vdmUoSXNDb21wb3NpdGluZ1VwZGF0ZVJvb3Qp
OwogCiAgICAgaWYgKHJlbmRlcmVyKCkuaXNJbkZsb3dSZW5kZXJGcmFnbWVudGVkRmxvdygpKSB7
CiAgICAgICAgIHVwZGF0ZVBhZ2luYXRpb24oKTsKLSAgICAgICAgZmxhZ3MgfD0gVXBkYXRlUGFn
aW5hdGlvbjsKKyAgICAgICAgZmxhZ3MuYWRkKFVwZGF0ZVBhZ2luYXRpb24pOwogICAgIH0KIAog
ICAgIGlmICh0cmFuc2Zvcm0oKSkgewotICAgICAgICBmbGFncyB8PSBTZWVuVHJhbnNmb3JtZWRM
YXllcjsKKyAgICAgICAgZmxhZ3MuYWRkKFNlZW5UcmFuc2Zvcm1lZExheWVyKTsKICAgICAgICAg
aWYgKCF0cmFuc2Zvcm0oKS0+aXNBZmZpbmUoKSkKLSAgICAgICAgICAgIGZsYWdzIHw9IFNlZW4z
RFRyYW5zZm9ybWVkTGF5ZXI7CisgICAgICAgICAgICBmbGFncy5hZGQoU2VlbjNEVHJhbnNmb3Jt
ZWRMYXllcik7CiAgICAgfQogCiAgICAgZm9yIChSZW5kZXJMYXllciogY2hpbGQgPSBmaXJzdENo
aWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKQpAQCAtNTc2LDkgKzU3
Niw5IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZUxheWVyUG9zaXRpb25zKFIKICAgICBpZiAo
KGZsYWdzICYgVXBkYXRlQ29tcG9zaXRpbmdMYXllcnMpICYmIGlzQ29tcG9zaXRlZCgpKSB7CiAg
ICAgICAgIE9wdGlvblNldDxSZW5kZXJMYXllckJhY2tpbmc6OlVwZGF0ZUFmdGVyTGF5b3V0Rmxh
Z3M+IHVwZGF0ZUZsYWdzOwogICAgICAgICBpZiAoZmxhZ3MgJiBOZWVkc0Z1bGxSZXBhaW50SW5C
YWNraW5nKQotICAgICAgICAgICAgdXBkYXRlRmxhZ3MgfD0gUmVuZGVyTGF5ZXJCYWNraW5nOjpV
cGRhdGVBZnRlckxheW91dEZsYWdzOjpOZWVkc0Z1bGxSZXBhaW50OworICAgICAgICAgICAgdXBk
YXRlRmxhZ3MuYWRkKFJlbmRlckxheWVyQmFja2luZzo6VXBkYXRlQWZ0ZXJMYXlvdXRGbGFnczo6
TmVlZHNGdWxsUmVwYWludCk7CiAgICAgICAgIGlmIChpc1VwZGF0ZVJvb3QpCi0gICAgICAgICAg
ICB1cGRhdGVGbGFncyB8PSBSZW5kZXJMYXllckJhY2tpbmc6OlVwZGF0ZUFmdGVyTGF5b3V0Rmxh
Z3M6OklzVXBkYXRlUm9vdDsKKyAgICAgICAgICAgIHVwZGF0ZUZsYWdzLmFkZChSZW5kZXJMYXll
ckJhY2tpbmc6OlVwZGF0ZUFmdGVyTGF5b3V0RmxhZ3M6OklzVXBkYXRlUm9vdCk7CiAgICAgICAg
IGJhY2tpbmcoKS0+dXBkYXRlQWZ0ZXJMYXlvdXQodXBkYXRlRmxhZ3MpOwogICAgIH0KICAgICAg
ICAgCkBAIC04NTEsMTYgKzg1MSwxNiBAQCB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVMYXllclBv
c2l0aW9uc0FmCiAKICAgICBib29sIHBvc2l0aW9uQ2hhbmdlZCA9IHVwZGF0ZUxheWVyUG9zaXRp
b24oKTsKICAgICBpZiAocG9zaXRpb25DaGFuZ2VkKQotICAgICAgICBmbGFncyB8PSBIYXNDaGFu
Z2VkQW5jZXN0b3I7CisgICAgICAgIGZsYWdzLmFkZChIYXNDaGFuZ2VkQW5jZXN0b3IpOwogCiAg
ICAgaWYgKGZsYWdzLmNvbnRhaW5zQW55KHsgSGFzQ2hhbmdlZEFuY2VzdG9yLCBIYXNTZWVuVmll
d3BvcnRDb25zdHJhaW5lZEFuY2VzdG9yLCBJc092ZXJmbG93U2Nyb2xsIH0pKQogICAgICAgICBj
bGVhckNsaXBSZWN0cygpOwogCiAgICAgaWYgKHJlbmRlcmVyKCkuc3R5bGUoKS5oYXNWaWV3cG9y
dENvbnN0cmFpbmVkUG9zaXRpb24oKSkKLSAgICAgICAgZmxhZ3MgfD0gSGFzU2VlblZpZXdwb3J0
Q29uc3RyYWluZWRBbmNlc3RvcjsKKyAgICAgICAgZmxhZ3MuYWRkKEhhc1NlZW5WaWV3cG9ydENv
bnN0cmFpbmVkQW5jZXN0b3IpOwogCiAgICAgaWYgKHJlbmRlcmVyKCkuaGFzT3ZlcmZsb3dDbGlw
KCkpCi0gICAgICAgIGZsYWdzIHw9IEhhc1NlZW5BbmNlc3RvcldpdGhPdmVyZmxvd0NsaXA7Cisg
ICAgICAgIGZsYWdzLmFkZChIYXNTZWVuQW5jZXN0b3JXaXRoT3ZlcmZsb3dDbGlwKTsKICAgICAK
ICAgICBib29sIHNob3VsZENvbXB1dGVSZXBhaW50UmVjdHMgPSAoZmxhZ3MuY29udGFpbnMoSGFz
U2VlblZpZXdwb3J0Q29uc3RyYWluZWRBbmNlc3RvcikgfHwgZmxhZ3MuY29udGFpbnNBbGwoeyBJ
c092ZXJmbG93U2Nyb2xsLCBIYXNTZWVuQW5jZXN0b3JXaXRoT3ZlcmZsb3dDbGlwIH0pKSAmJiBp
c1NlbGZQYWludGluZ0xheWVyKCk7CiAgICAgYm9vbCBpc1Zpc3VhbGx5RW1wdHkgPSAhaXNWaXN1
YWxseU5vbkVtcHR5KCk7CkBAIC0zOTczLDcgKzM5NzMsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpw
YWludExheWVyKEdyYXBoaWNzQ29uCiAgICAgICAgIC8vIFRoZSBwZXJmb3JtaW5nUGFpbnRJbnZh
bGlkYXRpb24oKSBwYWludGluZyBwYXNzIGdvZXMgdGhyb3VnaCBjb21wb3NpdGluZyBsYXllcnMs
CiAgICAgICAgIC8vIGJ1dCB3ZSBuZWVkIHRvIGVuc3VyZSB0aGF0IHdlIGRvbid0IGNhY2hlIGNs
aXAgcmVjdHMgY29tcHV0ZWQgd2l0aCB0aGUgd3Jvbmcgcm9vdCBpbiB0aGlzIGNhc2UuCiAgICAg
ICAgIGlmIChjb250ZXh0LnBlcmZvcm1pbmdQYWludEludmFsaWRhdGlvbigpIHx8IChwYWludGlu
Z0luZm8ucGFpbnRCZWhhdmlvciAmIFBhaW50QmVoYXZpb3I6OkZsYXR0ZW5Db21wb3NpdGluZ0xh
eWVycykpCi0gICAgICAgICAgICBwYWludEZsYWdzIHw9IFBhaW50TGF5ZXJUZW1wb3JhcnlDbGlw
UmVjdHM7CisgICAgICAgICAgICBwYWludEZsYWdzLmFkZChQYWludExheWVyVGVtcG9yYXJ5Q2xp
cFJlY3RzKTsKICAgICAgICAgZWxzZSBpZiAoIWJhY2tpbmcoKS0+cGFpbnRzSW50b1dpbmRvdygp
CiAgICAgICAgICAgICAmJiAhYmFja2luZygpLT5wYWludHNJbnRvQ29tcG9zaXRlZEFuY2VzdG9y
KCkKICAgICAgICAgICAgICYmICFzaG91bGREb1NvZnR3YXJlUGFpbnQodGhpcywgcGFpbnRGbGFn
cy5jb250YWlucyhQYWludExheWVyUGFpbnRpbmdSZWZsZWN0aW9uKSkKQEAgLTQwMDAsNyArNDAw
MCw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXIoR3JhcGhpY3NDb24KICAgICAgICAg
cmV0dXJuOwogCiAgICAgaWYgKHBhaW50c1dpdGhUcmFuc3BhcmVuY3kocGFpbnRpbmdJbmZvLnBh
aW50QmVoYXZpb3IpKQotICAgICAgICBwYWludEZsYWdzIHw9IFBhaW50TGF5ZXJIYXZlVHJhbnNw
YXJlbmN5OworICAgICAgICBwYWludEZsYWdzLmFkZChQYWludExheWVySGF2ZVRyYW5zcGFyZW5j
eSk7CiAKICAgICAvLyBQYWludExheWVyQXBwbGllZFRyYW5zZm9ybSBpcyB1c2VkIGluIFJlbmRl
clJlcGxpY2EsIHRvIGF2b2lkIGFwcGx5aW5nIHRoZSB0cmFuc2Zvcm0gdHdpY2UuCiAgICAgaWYg
KHBhaW50c1dpdGhUcmFuc2Zvcm0ocGFpbnRpbmdJbmZvLnBhaW50QmVoYXZpb3IpICYmICEocGFp
bnRGbGFncyAmIFBhaW50TGF5ZXJBcHBsaWVkVHJhbnNmb3JtKSkgewpAQCAtNDA2MSw3ICs0MDYx
LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMYXllckNvbnRlbnRzQW5kUgogICAgICAgICBt
X3BhaW50aW5nSW5zaWRlUmVmbGVjdGlvbiA9IGZhbHNlOwogICAgIH0KIAotICAgIGxvY2FsUGFp
bnRGbGFncyB8PSBwYWludExheWVyUGFpbnRpbmdDb21wb3NpdGluZ0FsbFBoYXNlc0ZsYWdzKCk7
CisgICAgbG9jYWxQYWludEZsYWdzLmFkZChwYWludExheWVyUGFpbnRpbmdDb21wb3NpdGluZ0Fs
bFBoYXNlc0ZsYWdzKCkpOwogICAgIHBhaW50TGF5ZXJDb250ZW50cyhjb250ZXh0LCBwYWludGlu
Z0luZm8sIGxvY2FsUGFpbnRGbGFncyk7CiB9CiAKQEAgLTQzNTUsMjEgKzQzNTUsMjEgQEAgdm9p
ZCBSZW5kZXJMYXllcjo6cGFpbnRMYXllckNvbnRlbnRzKEdyYQogCiAgICAgICAgIE9wdGlvblNl
dDxQYWludEJlaGF2aW9yPiBwYWludEJlaGF2aW9yID0gUGFpbnRCZWhhdmlvcjo6Tm9ybWFsOwog
ICAgICAgICBpZiAobG9jYWxQYWludEZsYWdzICYgUGFpbnRMYXllclBhaW50aW5nU2tpcFJvb3RC
YWNrZ3JvdW5kKQotICAgICAgICAgICAgcGFpbnRCZWhhdmlvciB8PSBQYWludEJlaGF2aW9yOjpT
a2lwUm9vdEJhY2tncm91bmQ7CisgICAgICAgICAgICBwYWludEJlaGF2aW9yLmFkZChQYWludEJl
aGF2aW9yOjpTa2lwUm9vdEJhY2tncm91bmQpOwogICAgICAgICBlbHNlIGlmIChsb2NhbFBhaW50
RmxhZ3MgJiBQYWludExheWVyUGFpbnRpbmdSb290QmFja2dyb3VuZE9ubHkpCi0gICAgICAgICAg
ICBwYWludEJlaGF2aW9yIHw9IFBhaW50QmVoYXZpb3I6OlJvb3RCYWNrZ3JvdW5kT25seTsKKyAg
ICAgICAgICAgIHBhaW50QmVoYXZpb3IuYWRkKFBhaW50QmVoYXZpb3I6OlJvb3RCYWNrZ3JvdW5k
T25seSk7CiAKICAgICAgICAgaWYgKHBhaW50aW5nSW5mby5wYWludEJlaGF2aW9yICYgUGFpbnRC
ZWhhdmlvcjo6RmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzKQotICAgICAgICAgICAgcGFpbnRCZWhh
dmlvciB8PSBQYWludEJlaGF2aW9yOjpGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnM7CisgICAgICAg
ICAgICBwYWludEJlaGF2aW9yLmFkZChQYWludEJlaGF2aW9yOjpGbGF0dGVuQ29tcG9zaXRpbmdM
YXllcnMpOwogICAgICAgICAKICAgICAgICAgaWYgKHBhaW50aW5nSW5mby5wYWludEJlaGF2aW9y
ICYgUGFpbnRCZWhhdmlvcjo6U25hcHNob3R0aW5nKQotICAgICAgICAgICAgcGFpbnRCZWhhdmlv
ciB8PSBQYWludEJlaGF2aW9yOjpTbmFwc2hvdHRpbmc7CisgICAgICAgICAgICBwYWludEJlaGF2
aW9yLmFkZChQYWludEJlaGF2aW9yOjpTbmFwc2hvdHRpbmcpOwogICAgICAgICAKICAgICAgICAg
aWYgKChwYWludGluZ0luZm8ucGFpbnRCZWhhdmlvciAmIFBhaW50QmVoYXZpb3I6OlRpbGVGaXJz
dFBhaW50KSAmJiBpc1JlbmRlclZpZXdMYXllcigpKQotICAgICAgICAgICAgcGFpbnRCZWhhdmlv
ciB8PSBQYWludEJlaGF2aW9yOjpUaWxlRmlyc3RQYWludDsKKyAgICAgICAgICAgIHBhaW50QmVo
YXZpb3IuYWRkKFBhaW50QmVoYXZpb3I6OlRpbGVGaXJzdFBhaW50KTsKIAogICAgICAgICBpZiAo
cGFpbnRpbmdJbmZvLnBhaW50QmVoYXZpb3IgJiBQYWludEJlaGF2aW9yOjpFeGNsdWRlU2VsZWN0
aW9uKQotICAgICAgICAgICAgcGFpbnRCZWhhdmlvciB8PSBQYWludEJlaGF2aW9yOjpFeGNsdWRl
U2VsZWN0aW9uOworICAgICAgICAgICAgcGFpbnRCZWhhdmlvci5hZGQoUGFpbnRCZWhhdmlvcjo6
RXhjbHVkZVNlbGVjdGlvbik7CiAKICAgICAgICAgTGF5b3V0UmVjdCBwYWludERpcnR5UmVjdCA9
IGxvY2FsUGFpbnRpbmdJbmZvLnBhaW50RGlydHlSZWN0OwogICAgICAgICBpZiAoc2hvdWxkUGFp
bnRDb250ZW50IHx8IHNob3VsZFBhaW50T3V0bGluZSB8fCBpc1BhaW50aW5nT3ZlcmxheVNjcm9s
bGJhcnMpIHsKQEAgLTQ0MzgsMTMgKzQ0MzgsMTMgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRM
YXllckNvbnRlbnRzKEdyYQogICAgIGlmIChzaG91bGRQYWludENvbnRlbnQgJiYgIShzZWxlY3Rp
b25Pbmx5IHx8IHNlbGVjdGlvbkFuZEJhY2tncm91bmRzT25seSkpIHsKICAgICAgICAgT3B0aW9u
U2V0PFBhaW50QmVoYXZpb3I+IHBhaW50QmVoYXZpb3IgPSBQYWludEJlaGF2aW9yOjpOb3JtYWw7
CiAgICAgICAgIGlmIChwYWludGluZ0luZm8ucGFpbnRCZWhhdmlvciAmIFBhaW50QmVoYXZpb3I6
OkZsYXR0ZW5Db21wb3NpdGluZ0xheWVycykKLSAgICAgICAgICAgIHBhaW50QmVoYXZpb3IgfD0g
UGFpbnRCZWhhdmlvcjo6RmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzOworICAgICAgICAgICAgcGFp
bnRCZWhhdmlvci5hZGQoUGFpbnRCZWhhdmlvcjo6RmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzKTsK
ICAgICAgICAgCiAgICAgICAgIGlmIChwYWludGluZ0luZm8ucGFpbnRCZWhhdmlvciAmIFBhaW50
QmVoYXZpb3I6OlNuYXBzaG90dGluZykKLSAgICAgICAgICAgIHBhaW50QmVoYXZpb3IgfD0gUGFp
bnRCZWhhdmlvcjo6U25hcHNob3R0aW5nOworICAgICAgICAgICAgcGFpbnRCZWhhdmlvci5hZGQo
UGFpbnRCZWhhdmlvcjo6U25hcHNob3R0aW5nKTsKICAgICAgICAgCiAgICAgICAgIGlmIChwYWlu
dGluZ0luZm8ucGFpbnRCZWhhdmlvciAmIFBhaW50QmVoYXZpb3I6OlRpbGVGaXJzdFBhaW50KQot
ICAgICAgICAgICAgcGFpbnRCZWhhdmlvciB8PSBQYWludEJlaGF2aW9yOjpUaWxlRmlyc3RQYWlu
dDsKKyAgICAgICAgICAgIHBhaW50QmVoYXZpb3IuYWRkKFBhaW50QmVoYXZpb3I6OlRpbGVGaXJz
dFBhaW50KTsKIAogICAgICAgICBpZiAoc2hvdWxkUGFpbnRNYXNrKHBhaW50aW5nSW5mby5wYWlu
dEJlaGF2aW9yLCBsb2NhbFBhaW50RmxhZ3MpKSB7CiAgICAgICAgICAgICAvLyBQYWludCB0aGUg
bWFzayBmb3IgdGhlIGZyYWdtZW50cy4KQEAgLTQ3NzAsMTMgKzQ3NzAsMTMgQEAgdm9pZCBSZW5k
ZXJMYXllcjo6cGFpbnRGb3JlZ3JvdW5kRm9yRnJhZwogICAgICAgICBsb2NhbFBhaW50QmVoYXZp
b3IgPSBwYWludEJlaGF2aW9yOwogCiAgICAgaWYgKGxvY2FsUGFpbnRpbmdJbmZvLnBhaW50QmVo
YXZpb3IgJiBQYWludEJlaGF2aW9yOjpFeGNsdWRlU2VsZWN0aW9uKQotICAgICAgICBsb2NhbFBh
aW50QmVoYXZpb3IgfD0gUGFpbnRCZWhhdmlvcjo6RXhjbHVkZVNlbGVjdGlvbjsKKyAgICAgICAg
bG9jYWxQYWludEJlaGF2aW9yLmFkZChQYWludEJlaGF2aW9yOjpFeGNsdWRlU2VsZWN0aW9uKTsK
ICAgICAKICAgICBpZiAobG9jYWxQYWludGluZ0luZm8ucGFpbnRCZWhhdmlvciAmIFBhaW50QmVo
YXZpb3I6OlNuYXBzaG90dGluZykKLSAgICAgICAgbG9jYWxQYWludEJlaGF2aW9yIHw9IFBhaW50
QmVoYXZpb3I6OlNuYXBzaG90dGluZzsKKyAgICAgICAgbG9jYWxQYWludEJlaGF2aW9yLmFkZChQ
YWludEJlaGF2aW9yOjpTbmFwc2hvdHRpbmcpOwogICAgIAogICAgIGlmIChsb2NhbFBhaW50aW5n
SW5mby5wYWludEJlaGF2aW9yICYgUGFpbnRCZWhhdmlvcjo6VGlsZUZpcnN0UGFpbnQpCi0gICAg
ICAgIGxvY2FsUGFpbnRCZWhhdmlvciB8PSBQYWludEJlaGF2aW9yOjpUaWxlRmlyc3RQYWludDsK
KyAgICAgICAgbG9jYWxQYWludEJlaGF2aW9yLmFkZChQYWludEJlaGF2aW9yOjpUaWxlRmlyc3RQ
YWludCk7CiAKICAgICAvLyBPcHRpbWl6ZSBjbGlwcGluZyBmb3IgdGhlIHNpbmdsZSBmcmFnbWVu
dCBjYXNlLgogICAgIGJvb2wgc2hvdWxkQ2xpcCA9IGxvY2FsUGFpbnRpbmdJbmZvLmNsaXBUb0Rp
cnR5UmVjdCAmJiBsYXllckZyYWdtZW50cy5zaXplKCkgPT0gMSAmJiBsYXllckZyYWdtZW50c1sw
XS5zaG91bGRQYWludENvbnRlbnQgJiYgIWxheWVyRnJhZ21lbnRzWzBdLmZvcmVncm91bmRSZWN0
LmlzRW1wdHkoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJh
Y2tpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllckJhY2tpbmcuY3BwCShyZXZpc2lvbiAyMzU1MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUzNCwyNCAr
MjUzNCwyNCBAQCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6cGFpbnRJbnRvTGF5ZXIoCiAKICAg
ICBPcHRpb25TZXQ8UmVuZGVyTGF5ZXI6OlBhaW50TGF5ZXJGbGFnPiBwYWludEZsYWdzOwogICAg
IGlmIChwYWludGluZ1BoYXNlICYgR3JhcGhpY3NMYXllclBhaW50QmFja2dyb3VuZCkKLSAgICAg
ICAgcGFpbnRGbGFncyB8PSBSZW5kZXJMYXllcjo6UGFpbnRMYXllclBhaW50aW5nQ29tcG9zaXRp
bmdCYWNrZ3JvdW5kUGhhc2U7CisgICAgICAgIHBhaW50RmxhZ3MuYWRkKFJlbmRlckxheWVyOjpQ
YWludExheWVyUGFpbnRpbmdDb21wb3NpdGluZ0JhY2tncm91bmRQaGFzZSk7CiAgICAgaWYgKHBh
aW50aW5nUGhhc2UgJiBHcmFwaGljc0xheWVyUGFpbnRGb3JlZ3JvdW5kKQotICAgICAgICBwYWlu
dEZsYWdzIHw9IFJlbmRlckxheWVyOjpQYWludExheWVyUGFpbnRpbmdDb21wb3NpdGluZ0ZvcmVn
cm91bmRQaGFzZTsKKyAgICAgICAgcGFpbnRGbGFncy5hZGQoUmVuZGVyTGF5ZXI6OlBhaW50TGF5
ZXJQYWludGluZ0NvbXBvc2l0aW5nRm9yZWdyb3VuZFBoYXNlKTsKICAgICBpZiAocGFpbnRpbmdQ
aGFzZSAmIEdyYXBoaWNzTGF5ZXJQYWludE1hc2spCi0gICAgICAgIHBhaW50RmxhZ3MgfD0gUmVu
ZGVyTGF5ZXI6OlBhaW50TGF5ZXJQYWludGluZ0NvbXBvc2l0aW5nTWFza1BoYXNlOworICAgICAg
ICBwYWludEZsYWdzLmFkZChSZW5kZXJMYXllcjo6UGFpbnRMYXllclBhaW50aW5nQ29tcG9zaXRp
bmdNYXNrUGhhc2UpOwogICAgIGlmIChwYWludGluZ1BoYXNlICYgR3JhcGhpY3NMYXllclBhaW50
Q2xpcFBhdGgpCi0gICAgICAgIHBhaW50RmxhZ3MgfD0gUmVuZGVyTGF5ZXI6OlBhaW50TGF5ZXJQ
YWludGluZ0NvbXBvc2l0aW5nQ2xpcFBhdGhQaGFzZTsKKyAgICAgICAgcGFpbnRGbGFncy5hZGQo
UmVuZGVyTGF5ZXI6OlBhaW50TGF5ZXJQYWludGluZ0NvbXBvc2l0aW5nQ2xpcFBhdGhQaGFzZSk7
CiAgICAgaWYgKHBhaW50aW5nUGhhc2UgJiBHcmFwaGljc0xheWVyUGFpbnRDaGlsZENsaXBwaW5n
TWFzaykKLSAgICAgICAgcGFpbnRGbGFncyB8PSBSZW5kZXJMYXllcjo6UGFpbnRMYXllclBhaW50
aW5nQ2hpbGRDbGlwcGluZ01hc2tQaGFzZTsKKyAgICAgICAgcGFpbnRGbGFncy5hZGQoUmVuZGVy
TGF5ZXI6OlBhaW50TGF5ZXJQYWludGluZ0NoaWxkQ2xpcHBpbmdNYXNrUGhhc2UpOwogICAgIGlm
IChwYWludGluZ1BoYXNlICYgR3JhcGhpY3NMYXllclBhaW50T3ZlcmZsb3dDb250ZW50cykKLSAg
ICAgICAgcGFpbnRGbGFncyB8PSBSZW5kZXJMYXllcjo6UGFpbnRMYXllclBhaW50aW5nT3ZlcmZs
b3dDb250ZW50czsKKyAgICAgICAgcGFpbnRGbGFncy5hZGQoUmVuZGVyTGF5ZXI6OlBhaW50TGF5
ZXJQYWludGluZ092ZXJmbG93Q29udGVudHMpOwogICAgIGlmIChwYWludGluZ1BoYXNlICYgR3Jh
cGhpY3NMYXllclBhaW50Q29tcG9zaXRlZFNjcm9sbCkKLSAgICAgICAgcGFpbnRGbGFncyB8PSBS
ZW5kZXJMYXllcjo6UGFpbnRMYXllclBhaW50aW5nQ29tcG9zaXRpbmdTY3JvbGxpbmdQaGFzZTsK
KyAgICAgICAgcGFpbnRGbGFncy5hZGQoUmVuZGVyTGF5ZXI6OlBhaW50TGF5ZXJQYWludGluZ0Nv
bXBvc2l0aW5nU2Nyb2xsaW5nUGhhc2UpOwogCiAgICAgaWYgKGdyYXBoaWNzTGF5ZXIgPT0gbV9i
YWNrZ3JvdW5kTGF5ZXIuZ2V0KCkgJiYgbV9iYWNrZ3JvdW5kTGF5ZXJQYWludHNGaXhlZFJvb3RC
YWNrZ3JvdW5kKQotICAgICAgICBwYWludEZsYWdzIHw9IHsgUmVuZGVyTGF5ZXI6OlBhaW50TGF5
ZXJQYWludGluZ1Jvb3RCYWNrZ3JvdW5kT25seSwgUmVuZGVyTGF5ZXI6OlBhaW50TGF5ZXJQYWlu
dGluZ0NvbXBvc2l0aW5nRm9yZWdyb3VuZFBoYXNlIH07IC8vIE5lZWQgUGFpbnRMYXllclBhaW50
aW5nQ29tcG9zaXRpbmdGb3JlZ3JvdW5kUGhhc2UgdG8gd2FsayBjaGlsZCBsYXllcnMuCisgICAg
ICAgIHBhaW50RmxhZ3MuYWRkKHsgUmVuZGVyTGF5ZXI6OlBhaW50TGF5ZXJQYWludGluZ1Jvb3RC
YWNrZ3JvdW5kT25seSwgUmVuZGVyTGF5ZXI6OlBhaW50TGF5ZXJQYWludGluZ0NvbXBvc2l0aW5n
Rm9yZWdyb3VuZFBoYXNlIH0pOyAvLyBOZWVkIFBhaW50TGF5ZXJQYWludGluZ0NvbXBvc2l0aW5n
Rm9yZWdyb3VuZFBoYXNlIHRvIHdhbGsgY2hpbGQgbGF5ZXJzLgogICAgIGVsc2UgaWYgKGNvbXBv
c2l0b3IoKS5maXhlZFJvb3RCYWNrZ3JvdW5kTGF5ZXIoKSkKLSAgICAgICAgcGFpbnRGbGFncyB8
PSBSZW5kZXJMYXllcjo6UGFpbnRMYXllclBhaW50aW5nU2tpcFJvb3RCYWNrZ3JvdW5kOworICAg
ICAgICBwYWludEZsYWdzLmFkZChSZW5kZXJMYXllcjo6UGFpbnRMYXllclBhaW50aW5nU2tpcFJv
b3RCYWNrZ3JvdW5kKTsKIAogI2lmbmRlZiBOREVCVUcKICAgICBSZW5kZXJFbGVtZW50OjpTZXRM
YXlvdXROZWVkZWRGb3JiaWRkZW5TY29wZSBmb3JiaWRTZXROZWVkc0xheW91dCgmcmVuZGVyZXIo
KSk7CkBAIC0yNjA5LDEwICsyNjA5LDEwIEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjpwYWlu
dENvbnRlbnRzKGMKICAgICAgICAgLy8gV2UgaGF2ZSB0byB1c2UgdGhlIHNhbWUgcm9vdCBhcyBm
b3IgaGl0IHRlc3RpbmcsIGJlY2F1c2UgYm90aCBtZXRob2RzIGNhbiBjb21wdXRlIGFuZCBjYWNo
ZSBjbGlwUmVjdHMuCiAgICAgICAgIE9wdGlvblNldDxQYWludEJlaGF2aW9yPiBiZWhhdmlvciA9
IFBhaW50QmVoYXZpb3I6Ok5vcm1hbDsKICAgICAgICAgaWYgKGxheWVyUGFpbnRCZWhhdmlvciA9
PSBHcmFwaGljc0xheWVyUGFpbnRTbmFwc2hvdHRpbmcpCi0gICAgICAgICAgICBiZWhhdmlvciB8
PSBQYWludEJlaGF2aW9yOjpTbmFwc2hvdHRpbmc7CisgICAgICAgICAgICBiZWhhdmlvci5hZGQo
UGFpbnRCZWhhdmlvcjo6U25hcHNob3R0aW5nKTsKICAgICAgICAgCiAgICAgICAgIGlmIChsYXll
clBhaW50QmVoYXZpb3IgPT0gR3JhcGhpY3NMYXllclBhaW50Rmlyc3RUaWxlUGFpbnQpCi0gICAg
ICAgICAgICBiZWhhdmlvciB8PSBQYWludEJlaGF2aW9yOjpUaWxlRmlyc3RQYWludDsKKyAgICAg
ICAgICAgIGJlaGF2aW9yLmFkZChQYWludEJlaGF2aW9yOjpUaWxlRmlyc3RQYWludCk7CiAKICAg
ICAgICAgcGFpbnRJbnRvTGF5ZXIoZ3JhcGhpY3NMYXllciwgY29udGV4dCwgZGlydHlSZWN0LCBi
ZWhhdmlvciwgcGFpbnRpbmdQaGFzZSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCShyZXZpc2lvbiAyMzU1MzkpCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjE2NCw4OSArMjE2NCw4OSBAQCBPcHRpb25TZXQ8Q29tcG9zaXRpbmdS
ZWFzb24+IFJlbmRlckxheWVyCiAgICAgYXV0byYgcmVuZGVyZXIgPSByZW5kZXJlckZvckNvbXBv
c2l0aW5nVGVzdHMobGF5ZXIpOwogCiAgICAgaWYgKHJlcXVpcmVzQ29tcG9zaXRpbmdGb3JUcmFu
c2Zvcm0ocmVuZGVyZXIpKQotICAgICAgICByZWFzb25zIHw9IENvbXBvc2l0aW5nUmVhc29uOjpU
cmFuc2Zvcm0zRDsKKyAgICAgICAgcmVhc29ucy5hZGQoQ29tcG9zaXRpbmdSZWFzb246OlRyYW5z
Zm9ybTNEKTsKIAogICAgIGlmIChyZXF1aXJlc0NvbXBvc2l0aW5nRm9yVmlkZW8ocmVuZGVyZXIp
KQotICAgICAgICByZWFzb25zIHw9IENvbXBvc2l0aW5nUmVhc29uOjpWaWRlbzsKKyAgICAgICAg
cmVhc29ucy5hZGQoQ29tcG9zaXRpbmdSZWFzb246OlZpZGVvKTsKICAgICBlbHNlIGlmIChyZXF1
aXJlc0NvbXBvc2l0aW5nRm9yQ2FudmFzKHJlbmRlcmVyKSkKLSAgICAgICAgcmVhc29ucyB8PSBD
b21wb3NpdGluZ1JlYXNvbjo6Q2FudmFzOworICAgICAgICByZWFzb25zLmFkZChDb21wb3NpdGlu
Z1JlYXNvbjo6Q2FudmFzKTsKICAgICBlbHNlIGlmIChyZXF1aXJlc0NvbXBvc2l0aW5nRm9yUGx1
Z2luKHJlbmRlcmVyKSkKLSAgICAgICAgcmVhc29ucyB8PSBDb21wb3NpdGluZ1JlYXNvbjo6UGx1
Z2luOworICAgICAgICByZWFzb25zLmFkZChDb21wb3NpdGluZ1JlYXNvbjo6UGx1Z2luKTsKICAg
ICBlbHNlIGlmIChyZXF1aXJlc0NvbXBvc2l0aW5nRm9yRnJhbWUocmVuZGVyZXIpKQotICAgICAg
ICByZWFzb25zIHw9IENvbXBvc2l0aW5nUmVhc29uOjpJRnJhbWU7CisgICAgICAgIHJlYXNvbnMu
YWRkKENvbXBvc2l0aW5nUmVhc29uOjpJRnJhbWUpOwogCiAgICAgaWYgKChjYW5SZW5kZXIzRFRy
YW5zZm9ybXMoKSAmJiByZW5kZXJlci5zdHlsZSgpLmJhY2tmYWNlVmlzaWJpbGl0eSgpID09IEJh
Y2tmYWNlVmlzaWJpbGl0eTo6SGlkZGVuKSkKLSAgICAgICAgcmVhc29ucyB8PSBDb21wb3NpdGlu
Z1JlYXNvbjo6QmFja2ZhY2VWaXNpYmlsaXR5SGlkZGVuOworICAgICAgICByZWFzb25zLmFkZChD
b21wb3NpdGluZ1JlYXNvbjo6QmFja2ZhY2VWaXNpYmlsaXR5SGlkZGVuKTsKIAogICAgIGlmIChj
bGlwc0NvbXBvc2l0aW5nRGVzY2VuZGFudHMoKnJlbmRlcmVyLmxheWVyKCkpKQotICAgICAgICBy
ZWFzb25zIHw9IENvbXBvc2l0aW5nUmVhc29uOjpDbGlwc0NvbXBvc2l0aW5nRGVzY2VuZGFudHM7
CisgICAgICAgIHJlYXNvbnMuYWRkKENvbXBvc2l0aW5nUmVhc29uOjpDbGlwc0NvbXBvc2l0aW5n
RGVzY2VuZGFudHMpOwogCiAgICAgaWYgKHJlcXVpcmVzQ29tcG9zaXRpbmdGb3JBbmltYXRpb24o
cmVuZGVyZXIpKQotICAgICAgICByZWFzb25zIHw9IENvbXBvc2l0aW5nUmVhc29uOjpBbmltYXRp
b247CisgICAgICAgIHJlYXNvbnMuYWRkKENvbXBvc2l0aW5nUmVhc29uOjpBbmltYXRpb24pOwog
CiAgICAgaWYgKHJlcXVpcmVzQ29tcG9zaXRpbmdGb3JGaWx0ZXJzKHJlbmRlcmVyKSkKLSAgICAg
ICAgcmVhc29ucyB8PSBDb21wb3NpdGluZ1JlYXNvbjo6RmlsdGVyczsKKyAgICAgICAgcmVhc29u
cy5hZGQoQ29tcG9zaXRpbmdSZWFzb246OkZpbHRlcnMpOwogCiAgICAgaWYgKHJlcXVpcmVzQ29t
cG9zaXRpbmdGb3JXaWxsQ2hhbmdlKHJlbmRlcmVyKSkKLSAgICAgICAgcmVhc29ucyB8PSBDb21w
b3NpdGluZ1JlYXNvbjo6V2lsbENoYW5nZTsKKyAgICAgICAgcmVhc29ucy5hZGQoQ29tcG9zaXRp
bmdSZWFzb246OldpbGxDaGFuZ2UpOwogCiAgICAgaWYgKHJlcXVpcmVzQ29tcG9zaXRpbmdGb3JQ
b3NpdGlvbihyZW5kZXJlciwgKnJlbmRlcmVyLmxheWVyKCkpKQotICAgICAgICByZWFzb25zIHw9
IHJlbmRlcmVyLmlzRml4ZWRQb3NpdGlvbmVkKCkgPyBDb21wb3NpdGluZ1JlYXNvbjo6UG9zaXRp
b25GaXhlZCA6IENvbXBvc2l0aW5nUmVhc29uOjpQb3NpdGlvblN0aWNreTsKKyAgICAgICAgcmVh
c29ucy5hZGQocmVuZGVyZXIuaXNGaXhlZFBvc2l0aW9uZWQoKSA/IENvbXBvc2l0aW5nUmVhc29u
OjpQb3NpdGlvbkZpeGVkIDogQ29tcG9zaXRpbmdSZWFzb246OlBvc2l0aW9uU3RpY2t5KTsKIAog
I2lmIFBMQVRGT1JNKElPUykKICAgICBpZiAocmVxdWlyZXNDb21wb3NpdGluZ0ZvclNjcm9sbGlu
ZygqcmVuZGVyZXIubGF5ZXIoKSkpCi0gICAgICAgIHJlYXNvbnMgfD0gQ29tcG9zaXRpbmdSZWFz
b246Ok92ZXJmbG93U2Nyb2xsaW5nVG91Y2g7CisgICAgICAgIHJlYXNvbnMuYWRkKENvbXBvc2l0
aW5nUmVhc29uOjpPdmVyZmxvd1Njcm9sbGluZ1RvdWNoKTsKICNlbmRpZgogCiAgICAgaWYgKHJl
cXVpcmVzQ29tcG9zaXRpbmdGb3JPdmVyZmxvd1Njcm9sbGluZygqcmVuZGVyZXIubGF5ZXIoKSkp
Ci0gICAgICAgIHJlYXNvbnMgfD0gQ29tcG9zaXRpbmdSZWFzb246Ok92ZXJmbG93U2Nyb2xsaW5n
VG91Y2g7CisgICAgICAgIHJlYXNvbnMuYWRkKENvbXBvc2l0aW5nUmVhc29uOjpPdmVyZmxvd1Nj
cm9sbGluZ1RvdWNoKTsKIAogICAgIHN3aXRjaCAocmVuZGVyZXIubGF5ZXIoKS0+aW5kaXJlY3RD
b21wb3NpdGluZ1JlYXNvbigpKSB7CiAgICAgY2FzZSBSZW5kZXJMYXllcjo6SW5kaXJlY3RDb21w
b3NpdGluZ1JlYXNvbjo6Tm9uZToKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBSZW5kZXJMYXll
cjo6SW5kaXJlY3RDb21wb3NpdGluZ1JlYXNvbjo6U3RhY2tpbmc6Ci0gICAgICAgIHJlYXNvbnMg
fD0gQ29tcG9zaXRpbmdSZWFzb246OlN0YWNraW5nOworICAgICAgICByZWFzb25zLmFkZChDb21w
b3NpdGluZ1JlYXNvbjo6U3RhY2tpbmcpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFJlbmRl
ckxheWVyOjpJbmRpcmVjdENvbXBvc2l0aW5nUmVhc29uOjpPdmVybGFwOgotICAgICAgICByZWFz
b25zIHw9IENvbXBvc2l0aW5nUmVhc29uOjpPdmVybGFwOworICAgICAgICByZWFzb25zLmFkZChD
b21wb3NpdGluZ1JlYXNvbjo6T3ZlcmxhcCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUmVu
ZGVyTGF5ZXI6OkluZGlyZWN0Q29tcG9zaXRpbmdSZWFzb246OkJhY2tncm91bmRMYXllcjoKLSAg
ICAgICAgcmVhc29ucyB8PSBDb21wb3NpdGluZ1JlYXNvbjo6TmVnYXRpdmVaSW5kZXhDaGlsZHJl
bjsKKyAgICAgICAgcmVhc29ucy5hZGQoQ29tcG9zaXRpbmdSZWFzb246Ok5lZ2F0aXZlWkluZGV4
Q2hpbGRyZW4pOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFJlbmRlckxheWVyOjpJbmRpcmVj
dENvbXBvc2l0aW5nUmVhc29uOjpHcmFwaGljYWxFZmZlY3Q6CiAgICAgICAgIGlmIChyZW5kZXJl
ci5oYXNUcmFuc2Zvcm0oKSkKLSAgICAgICAgICAgIHJlYXNvbnMgfD0gQ29tcG9zaXRpbmdSZWFz
b246OlRyYW5zZm9ybVdpdGhDb21wb3NpdGVkRGVzY2VuZGFudHM7CisgICAgICAgICAgICByZWFz
b25zLmFkZChDb21wb3NpdGluZ1JlYXNvbjo6VHJhbnNmb3JtV2l0aENvbXBvc2l0ZWREZXNjZW5k
YW50cyk7CiAKICAgICAgICAgaWYgKHJlbmRlcmVyLmlzVHJhbnNwYXJlbnQoKSkKLSAgICAgICAg
ICAgIHJlYXNvbnMgfD0gQ29tcG9zaXRpbmdSZWFzb246Ok9wYWNpdHlXaXRoQ29tcG9zaXRlZERl
c2NlbmRhbnRzOworICAgICAgICAgICAgcmVhc29ucy5hZGQoQ29tcG9zaXRpbmdSZWFzb246Ok9w
YWNpdHlXaXRoQ29tcG9zaXRlZERlc2NlbmRhbnRzKTsKIAogICAgICAgICBpZiAocmVuZGVyZXIu
aGFzTWFzaygpKQotICAgICAgICAgICAgcmVhc29ucyB8PSBDb21wb3NpdGluZ1JlYXNvbjo6TWFz
a1dpdGhDb21wb3NpdGVkRGVzY2VuZGFudHM7CisgICAgICAgICAgICByZWFzb25zLmFkZChDb21w
b3NpdGluZ1JlYXNvbjo6TWFza1dpdGhDb21wb3NpdGVkRGVzY2VuZGFudHMpOwogCiAgICAgICAg
IGlmIChyZW5kZXJlci5oYXNSZWZsZWN0aW9uKCkpCi0gICAgICAgICAgICByZWFzb25zIHw9IENv
bXBvc2l0aW5nUmVhc29uOjpSZWZsZWN0aW9uV2l0aENvbXBvc2l0ZWREZXNjZW5kYW50czsKKyAg
ICAgICAgICAgIHJlYXNvbnMuYWRkKENvbXBvc2l0aW5nUmVhc29uOjpSZWZsZWN0aW9uV2l0aENv
bXBvc2l0ZWREZXNjZW5kYW50cyk7CiAKICAgICAgICAgaWYgKHJlbmRlcmVyLmhhc0ZpbHRlcigp
IHx8IHJlbmRlcmVyLmhhc0JhY2tkcm9wRmlsdGVyKCkpCi0gICAgICAgICAgICByZWFzb25zIHw9
IENvbXBvc2l0aW5nUmVhc29uOjpGaWx0ZXJXaXRoQ29tcG9zaXRlZERlc2NlbmRhbnRzOworICAg
ICAgICAgICAgcmVhc29ucy5hZGQoQ29tcG9zaXRpbmdSZWFzb246OkZpbHRlcldpdGhDb21wb3Np
dGVkRGVzY2VuZGFudHMpOwogCiAjaWYgRU5BQkxFKENTU19DT01QT1NJVElORykKICAgICAgICAg
aWYgKGxheWVyLmlzb2xhdGVzQ29tcG9zaXRlZEJsZW5kaW5nKCkpCi0gICAgICAgICAgICByZWFz
b25zIHw9IENvbXBvc2l0aW5nUmVhc29uOjpJc29sYXRlc0NvbXBvc2l0ZWRCbGVuZGluZ0Rlc2Nl
bmRhbnRzOworICAgICAgICAgICAgcmVhc29ucy5hZGQoQ29tcG9zaXRpbmdSZWFzb246Oklzb2xh
dGVzQ29tcG9zaXRlZEJsZW5kaW5nRGVzY2VuZGFudHMpOwogCiAgICAgICAgIGlmIChsYXllci5o
YXNCbGVuZE1vZGUoKSkKLSAgICAgICAgICAgIHJlYXNvbnMgfD0gQ29tcG9zaXRpbmdSZWFzb246
OkJsZW5kaW5nV2l0aENvbXBvc2l0ZWREZXNjZW5kYW50czsKKyAgICAgICAgICAgIHJlYXNvbnMu
YWRkKENvbXBvc2l0aW5nUmVhc29uOjpCbGVuZGluZ1dpdGhDb21wb3NpdGVkRGVzY2VuZGFudHMp
OwogI2VuZGlmCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUmVuZGVyTGF5ZXI6OkluZGlyZWN0
Q29tcG9zaXRpbmdSZWFzb246OlBlcnNwZWN0aXZlOgotICAgICAgICByZWFzb25zIHw9IENvbXBv
c2l0aW5nUmVhc29uOjpQZXJzcGVjdGl2ZTsKKyAgICAgICAgcmVhc29ucy5hZGQoQ29tcG9zaXRp
bmdSZWFzb246OlBlcnNwZWN0aXZlKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBSZW5kZXJM
YXllcjo6SW5kaXJlY3RDb21wb3NpdGluZ1JlYXNvbjo6UHJlc2VydmUzRDoKLSAgICAgICAgcmVh
c29ucyB8PSBDb21wb3NpdGluZ1JlYXNvbjo6UHJlc2VydmUzRDsKKyAgICAgICAgcmVhc29ucy5h
ZGQoQ29tcG9zaXRpbmdSZWFzb246OlByZXNlcnZlM0QpOwogICAgICAgICBicmVhazsKICAgICB9
CiAKICAgICBpZiAoaW5Db21wb3NpdGluZ01vZGUoKSAmJiByZW5kZXJlci5sYXllcigpLT5pc1Jl
bmRlclZpZXdMYXllcigpKQotICAgICAgICByZWFzb25zIHw9IENvbXBvc2l0aW5nUmVhc29uOjpS
b290OworICAgICAgICByZWFzb25zLmFkZChDb21wb3NpdGluZ1JlYXNvbjo6Um9vdCk7CiAKICAg
ICByZXR1cm4gcmVhc29uczsKIH0KQEAgLTM2MjUsMTAgKzM2MjUsMTAgQEAgdm9pZCBSZW5kZXJM
YXllckNvbXBvc2l0b3I6OnVwZGF0ZVNjcm9sbAogewogICAgIE9wdGlvblNldDxMYXllclNjcm9s
bENvb3JkaW5hdGlvblJvbGU+IGNvb3JkaW5hdGlvblJvbGVzOwogICAgIGlmIChpc1ZpZXdwb3J0
Q29uc3RyYWluZWRGaXhlZE9yU3RpY2t5TGF5ZXIobGF5ZXIpKQotICAgICAgICBjb29yZGluYXRp
b25Sb2xlcyB8PSBWaWV3cG9ydENvbnN0cmFpbmVkOworICAgICAgICBjb29yZGluYXRpb25Sb2xl
cy5hZGQoVmlld3BvcnRDb25zdHJhaW5lZCk7CiAKICAgICBpZiAodXNlQ29vcmRpbmF0ZWRTY3Jv
bGxpbmdGb3JMYXllcihsYXllcikpCi0gICAgICAgIGNvb3JkaW5hdGlvblJvbGVzIHw9IFNjcm9s
bGluZzsKKyAgICAgICAgY29vcmRpbmF0aW9uUm9sZXMuYWRkKFNjcm9sbGluZyk7CiAKICAgICBp
ZiAobGF5ZXIuaXNDb21wb3NpdGVkKCkpCiAgICAgICAgIGxheWVyLmJhY2tpbmcoKS0+c2V0SXNT
Y3JvbGxDb29yZGluYXRlZFdpdGhWaWV3cG9ydENvbnN0cmFpbmVkUm9sZShjb29yZGluYXRpb25S
b2xlcy5jb250YWlucyhWaWV3cG9ydENvbnN0cmFpbmVkKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVyLmNwcAkocmV2aXNpb24g
MjM1NTM5KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHREZWNvcmF0aW9uUGFpbnRl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4MywxNyArMzgzLDE3IEBAIHN0YXRpYyB2b2lkIGNv
bGxlY3RTdHlsZXNGb3JSZW5kZXJlcihUZXgKICAgICAgICAgYXV0byBkZWNvcmF0aW9uU3R5bGUg
PSBzdHlsZS50ZXh0RGVjb3JhdGlvblN0eWxlKCk7CiAKICAgICAgICAgaWYgKGRlY29yYXRpb25z
LmNvbnRhaW5zKFRleHREZWNvcmF0aW9uOjpVbmRlcmxpbmUpKSB7Ci0gICAgICAgICAgICByZW1h
aW5pbmdEZWNvcmF0aW9ucyAtPSBUZXh0RGVjb3JhdGlvbjo6VW5kZXJsaW5lOworICAgICAgICAg
ICAgcmVtYWluaW5nRGVjb3JhdGlvbnMucmVtb3ZlKFRleHREZWNvcmF0aW9uOjpVbmRlcmxpbmUp
OwogICAgICAgICAgICAgcmVzdWx0LnVuZGVybGluZUNvbG9yID0gY29sb3I7CiAgICAgICAgICAg
ICByZXN1bHQudW5kZXJsaW5lU3R5bGUgPSBkZWNvcmF0aW9uU3R5bGU7CiAgICAgICAgIH0KICAg
ICAgICAgaWYgKGRlY29yYXRpb25zLmNvbnRhaW5zKFRleHREZWNvcmF0aW9uOjpPdmVybGluZSkp
IHsKLSAgICAgICAgICAgIHJlbWFpbmluZ0RlY29yYXRpb25zIC09IFRleHREZWNvcmF0aW9uOjpP
dmVybGluZTsKKyAgICAgICAgICAgIHJlbWFpbmluZ0RlY29yYXRpb25zLnJlbW92ZShUZXh0RGVj
b3JhdGlvbjo6T3ZlcmxpbmUpOwogICAgICAgICAgICAgcmVzdWx0Lm92ZXJsaW5lQ29sb3IgPSBj
b2xvcjsKICAgICAgICAgICAgIHJlc3VsdC5vdmVybGluZVN0eWxlID0gZGVjb3JhdGlvblN0eWxl
OwogICAgICAgICB9CiAgICAgICAgIGlmIChkZWNvcmF0aW9ucy5jb250YWlucyhUZXh0RGVjb3Jh
dGlvbjo6TGluZVRocm91Z2gpKSB7Ci0gICAgICAgICAgICByZW1haW5pbmdEZWNvcmF0aW9ucyAt
PSBUZXh0RGVjb3JhdGlvbjo6TGluZVRocm91Z2g7CisgICAgICAgICAgICByZW1haW5pbmdEZWNv
cmF0aW9ucy5yZW1vdmUoVGV4dERlY29yYXRpb246OkxpbmVUaHJvdWdoKTsKICAgICAgICAgICAg
IHJlc3VsdC5saW5ldGhyb3VnaENvbG9yID0gY29sb3I7CiAgICAgICAgICAgICByZXN1bHQubGlu
ZXRocm91Z2hTdHlsZSA9IGRlY29yYXRpb25TdHlsZTsKICAgICAgICAgfQpJbmRleDogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWludFN0eWxlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBhaW50U3R5bGUuY3BwCShyZXZpc2lvbiAyMzU1Mzkp
CisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBhaW50U3R5bGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMDAsNyArMTAwLDcgQEAgVGV4dFBhaW50U3R5bGUgY29tcHV0ZVRleHRQYWlu
dFN0eWxlKGNvbgogICAgICAgICBpZiAocGFnZSAmJiBwYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5p
c0FjdGl2ZSgpKSB7CiAgICAgICAgICAgICBPcHRpb25TZXQ8U3R5bGVDb2xvcjo6T3B0aW9ucz4g
b3B0aW9uczsKICAgICAgICAgICAgIGlmIChwYWdlLT51c2VTeXN0ZW1BcHBlYXJhbmNlKCkpCi0g
ICAgICAgICAgICAgICAgb3B0aW9ucyB8PSBTdHlsZUNvbG9yOjpPcHRpb25zOjpVc2VTeXN0ZW1B
cHBlYXJhbmNlOworICAgICAgICAgICAgICAgIG9wdGlvbnMuYWRkKFN0eWxlQ29sb3I6Ok9wdGlv
bnM6OlVzZVN5c3RlbUFwcGVhcmFuY2UpOwogICAgICAgICAgICAgcGFpbnRTdHlsZS5maWxsQ29s
b3IgPSBSZW5kZXJUaGVtZTo6c2luZ2xldG9uKCkuc3lzdGVtQ29sb3IoQ1NTVmFsdWVBY3RpdmVi
dXR0b250ZXh0LCBvcHRpb25zKTsKICAgICAgICAgICAgIHJldHVybiBwYWludFN0eWxlOwogICAg
ICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJT
dHlsZS5jcHAJKHJldmlzaW9uIDIzNTUzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9SZW5kZXJTdHlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYxMyw3ICs2MTMsNyBAQCBi
b29sIFJlbmRlclN0eWxlOjpjaGFuZ2VSZXF1aXJlc0xheW91dChjCiAgICAgICAgICAgICBpZiAo
bV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+dHJhbnNmb3JtLT5oYXNUcmFuc2Zvcm0oKSAhPSBvdGhl
ci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT50cmFuc2Zvcm0tPmhhc1RyYW5zZm9ybSgpKQogICAg
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgaWYgKCptX3JhcmVOb25Jbmhl
cml0ZWREYXRhLT50cmFuc2Zvcm0gIT0gKm90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnRy
YW5zZm9ybSkgewotICAgICAgICAgICAgICAgIGNoYW5nZWRDb250ZXh0U2Vuc2l0aXZlUHJvcGVy
dGllcyB8PSBTdHlsZURpZmZlcmVuY2VDb250ZXh0U2Vuc2l0aXZlUHJvcGVydHk6OlRyYW5zZm9y
bTsKKyAgICAgICAgICAgICAgICBjaGFuZ2VkQ29udGV4dFNlbnNpdGl2ZVByb3BlcnRpZXMuYWRk
KFN0eWxlRGlmZmVyZW5jZUNvbnRleHRTZW5zaXRpdmVQcm9wZXJ0eTo6VHJhbnNmb3JtKTsKICAg
ICAgICAgICAgICAgICAvLyBEb24ndCByZXR1cm47IGtlZXAgbG9va2luZyBmb3IgYW5vdGhlciBj
aGFuZ2UKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtNjI5LDcgKzYyOSw3IEBAIGJvb2wg
UmVuZGVyU3R5bGU6OmNoYW5nZVJlcXVpcmVzTGF5b3V0KGMKICNlbmRpZgogCiAgICAgICAgIGlm
ICghYXJlUG9pbnRpbmdUb0VxdWFsRGF0YShtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT53aWxsQ2hh
bmdlLCBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT53aWxsQ2hhbmdlKSkgewotICAgICAg
ICAgICAgY2hhbmdlZENvbnRleHRTZW5zaXRpdmVQcm9wZXJ0aWVzIHw9IFN0eWxlRGlmZmVyZW5j
ZUNvbnRleHRTZW5zaXRpdmVQcm9wZXJ0eTo6V2lsbENoYW5nZTsKKyAgICAgICAgICAgIGNoYW5n
ZWRDb250ZXh0U2Vuc2l0aXZlUHJvcGVydGllcy5hZGQoU3R5bGVEaWZmZXJlbmNlQ29udGV4dFNl
bnNpdGl2ZVByb3BlcnR5OjpXaWxsQ2hhbmdlKTsKICAgICAgICAgICAgIC8vIERvbid0IHJldHVy
bjsga2VlcCBsb29raW5nIGZvciBhbm90aGVyIGNoYW5nZQogICAgICAgICB9CiAgICAgfQpAQCAt
ODQ5LDcgKzg0OSw3IEBAIGJvb2wgUmVuZGVyU3R5bGU6OmNoYW5nZVJlcXVpcmVzTGF5ZXJSZXAK
IAogICAgIGlmIChwb3NpdGlvbigpICE9IFBvc2l0aW9uVHlwZTo6U3RhdGljKSB7CiAgICAgICAg
IGlmIChtX3Zpc3VhbERhdGEtPmNsaXAgIT0gb3RoZXIubV92aXN1YWxEYXRhLT5jbGlwIHx8IG1f
dmlzdWFsRGF0YS0+aGFzQ2xpcCAhPSBvdGhlci5tX3Zpc3VhbERhdGEtPmhhc0NsaXApIHsKLSAg
ICAgICAgICAgIGNoYW5nZWRDb250ZXh0U2Vuc2l0aXZlUHJvcGVydGllcyB8PSBTdHlsZURpZmZl
cmVuY2VDb250ZXh0U2Vuc2l0aXZlUHJvcGVydHk6OkNsaXBSZWN0OworICAgICAgICAgICAgY2hh
bmdlZENvbnRleHRTZW5zaXRpdmVQcm9wZXJ0aWVzLmFkZChTdHlsZURpZmZlcmVuY2VDb250ZXh0
U2Vuc2l0aXZlUHJvcGVydHk6OkNsaXBSZWN0KTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgICAgICB9CiAgICAgfQpAQCAtODYwLDE4ICs4NjAsMTggQEAgYm9vbCBSZW5kZXJTdHlsZTo6
Y2hhbmdlUmVxdWlyZXNMYXllclJlcAogI2VuZGlmCiAKICAgICBpZiAobV9yYXJlTm9uSW5oZXJp
dGVkRGF0YS0+b3BhY2l0eSAhPSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5vcGFjaXR5
KSB7Ci0gICAgICAgIGNoYW5nZWRDb250ZXh0U2Vuc2l0aXZlUHJvcGVydGllcyB8PSBTdHlsZURp
ZmZlcmVuY2VDb250ZXh0U2Vuc2l0aXZlUHJvcGVydHk6Ok9wYWNpdHk7CisgICAgICAgIGNoYW5n
ZWRDb250ZXh0U2Vuc2l0aXZlUHJvcGVydGllcy5hZGQoU3R5bGVEaWZmZXJlbmNlQ29udGV4dFNl
bnNpdGl2ZVByb3BlcnR5OjpPcGFjaXR5KTsKICAgICAgICAgLy8gRG9uJ3QgcmV0dXJuOyBrZWVw
IGxvb2tpbmcgZm9yIGFub3RoZXIgY2hhbmdlLgogICAgIH0KIAogICAgIGlmIChtX3JhcmVOb25J
bmhlcml0ZWREYXRhLT5maWx0ZXIgIT0gb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+Zmls
dGVyKSB7Ci0gICAgICAgIGNoYW5nZWRDb250ZXh0U2Vuc2l0aXZlUHJvcGVydGllcyB8PSBTdHls
ZURpZmZlcmVuY2VDb250ZXh0U2Vuc2l0aXZlUHJvcGVydHk6OkZpbHRlcjsKKyAgICAgICAgY2hh
bmdlZENvbnRleHRTZW5zaXRpdmVQcm9wZXJ0aWVzLmFkZChTdHlsZURpZmZlcmVuY2VDb250ZXh0
U2Vuc2l0aXZlUHJvcGVydHk6OkZpbHRlcik7CiAgICAgICAgIC8vIERvbid0IHJldHVybjsga2Vl
cCBsb29raW5nIGZvciBhbm90aGVyIGNoYW5nZS4KICAgICB9CiAKICNpZiBFTkFCTEUoRklMVEVS
U19MRVZFTF8yKQogICAgIGlmIChtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5iYWNrZHJvcEZpbHRl
ciAhPSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5iYWNrZHJvcEZpbHRlcikgewotICAg
ICAgICBjaGFuZ2VkQ29udGV4dFNlbnNpdGl2ZVByb3BlcnRpZXMgfD0gU3R5bGVEaWZmZXJlbmNl
Q29udGV4dFNlbnNpdGl2ZVByb3BlcnR5OjpGaWx0ZXI7CisgICAgICAgIGNoYW5nZWRDb250ZXh0
U2Vuc2l0aXZlUHJvcGVydGllcy5hZGQoU3R5bGVEaWZmZXJlbmNlQ29udGV4dFNlbnNpdGl2ZVBy
b3BlcnR5OjpGaWx0ZXIpOwogICAgICAgICAvLyBEb24ndCByZXR1cm47IGtlZXAgbG9va2luZyBm
b3IgYW5vdGhlciBjaGFuZ2UuCiAgICAgfQogI2VuZGlmCkBAIC05MjEsNyArOTIxLDcgQEAgYm9v
bCBSZW5kZXJTdHlsZTo6Y2hhbmdlUmVxdWlyZXNSZXBhaW50KAogCiAgICAgLy8gRklYTUU6IHRo
aXMgc2hvdWxkIHByb2JhYmx5IGJlIG1vdmVkIHRvIGNoYW5nZVJlcXVpcmVzTGF5ZXJSZXBhaW50
KCkuCiAgICAgaWYgKG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmNsaXBQYXRoICE9IG90aGVyLm1f
cmFyZU5vbkluaGVyaXRlZERhdGEtPmNsaXBQYXRoKSB7Ci0gICAgICAgIGNoYW5nZWRDb250ZXh0
U2Vuc2l0aXZlUHJvcGVydGllcyB8PSBTdHlsZURpZmZlcmVuY2VDb250ZXh0U2Vuc2l0aXZlUHJv
cGVydHk6OkNsaXBQYXRoOworICAgICAgICBjaGFuZ2VkQ29udGV4dFNlbnNpdGl2ZVByb3BlcnRp
ZXMuYWRkKFN0eWxlRGlmZmVyZW5jZUNvbnRleHRTZW5zaXRpdmVQcm9wZXJ0eTo6Q2xpcFBhdGgp
OwogICAgICAgICAvLyBEb24ndCByZXR1cm47IGtlZXAgbG9va2luZyBmb3IgYW5vdGhlciBjaGFu
Z2UuCiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCShyZXZp
c2lvbiAyMzU1MzkpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTIyNDIsNyArMjI0Miw3IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxGaW5k
T3B0aW9ucz4gcGFyc2VGaW4KICAgICAgICAgYm9vbCBmb3VuZCA9IGZhbHNlOwogICAgICAgICBm
b3IgKGF1dG8mIGZsYWcgOiBmbGFnTGlzdCkgewogICAgICAgICAgICAgaWYgKGZsYWcubmFtZSA9
PSBvcHRpb24pIHsKLSAgICAgICAgICAgICAgICByZXN1bHQgfD0gZmxhZy52YWx1ZTsKKyAgICAg
ICAgICAgICAgICByZXN1bHQuYWRkKGZsYWcudmFsdWUpOwogICAgICAgICAgICAgICAgIGZvdW5k
ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAgLTMxODks
NyArMzE4OSw3IEBAIHZvaWQgSW50ZXJuYWxzOjpmb3JjZVJlbG9hZChib29sIGVuZFRvRW4KIHsK
ICAgICBPcHRpb25TZXQ8UmVsb2FkT3B0aW9uPiByZWxvYWRPcHRpb25zOwogICAgIGlmIChlbmRU
b0VuZCkKLSAgICAgICAgcmVsb2FkT3B0aW9ucyB8PSBSZWxvYWRPcHRpb246OkZyb21PcmlnaW47
CisgICAgICAgIHJlbG9hZE9wdGlvbnMuYWRkKFJlbG9hZE9wdGlvbjo6RnJvbU9yaWdpbik7CiAK
ICAgICBmcmFtZSgpLT5sb2FkZXIoKS5yZWxvYWQocmVsb2FkT3B0aW9ucyk7CiB9CkBAIC00MzQy
LDkgKzQzNDIsOSBAQCB2b2lkIEludGVybmFsczo6c2V0UGFnZVZpc2liaWxpdHkoYm9vbCBpCiAg
ICAgYXV0byBzdGF0ZSA9IHBhZ2UuYWN0aXZpdHlTdGF0ZSgpOwogCiAgICAgaWYgKCFpc1Zpc2li
bGUpCi0gICAgICAgIHN0YXRlIC09IEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZTsKKyAgICAgICAg
c3RhdGUucmVtb3ZlKEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSk7CiAgICAgZWxzZQotICAgICAg
ICBzdGF0ZSB8PSBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGU7CisgICAgICAgIHN0YXRlLmFkZChB
Y3Rpdml0eVN0YXRlOjpJc1Zpc2libGUpOwogCiAgICAgcGFnZS5zZXRBY3Rpdml0eVN0YXRlKHN0
YXRlKTsKIH0KQEAgLTQzNTgsOSArNDM1OCw5IEBAIHZvaWQgSW50ZXJuYWxzOjpzZXRQYWdlSXNG
b2N1c2VkQW5kQWN0aXYKICAgICBhdXRvIHN0YXRlID0gcGFnZS5hY3Rpdml0eVN0YXRlKCk7CiAK
ICAgICBpZiAoIWlzRm9jdXNlZEFuZEFjdGl2ZSkKLSAgICAgICAgc3RhdGUgLT0geyBBY3Rpdml0
eVN0YXRlOjpJc0ZvY3VzZWQsIEFjdGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZlIH07CisgICAg
ICAgIHN0YXRlLnJlbW92ZSh7IEFjdGl2aXR5U3RhdGU6OklzRm9jdXNlZCwgQWN0aXZpdHlTdGF0
ZTo6V2luZG93SXNBY3RpdmUgfSk7CiAgICAgZWxzZQotICAgICAgICBzdGF0ZSB8PSB7IEFjdGl2
aXR5U3RhdGU6OklzRm9jdXNlZCwgQWN0aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmUgfTsKKyAg
ICAgICAgc3RhdGUuYWRkKHsgQWN0aXZpdHlTdGF0ZTo6SXNGb2N1c2VkLCBBY3Rpdml0eVN0YXRl
OjpXaW5kb3dJc0FjdGl2ZSB9KTsKIAogICAgIHBhZ2Uuc2V0QWN0aXZpdHlTdGF0ZShzdGF0ZSk7
CiB9CkluZGV4OiBTb3VyY2UvV2ViRHJpdmVyL1Nlc3Npb24uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAJKHJldmlzaW9uIDIzNTUzOSkKKysrIFNvdXJjZS9X
ZWJEcml2ZXIvU2Vzc2lvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MTQsOCArMTUxNCw3IEBA
IHZvaWQgU2Vzc2lvbjo6ZWxlbWVudENsaWNrKGNvbnN0IFN0cmluZyYKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIE9wdGlvblNldDxFbGVtZW50TGF5b3V0T3B0aW9uPiBvcHRpb25zID0g
RWxlbWVudExheW91dE9wdGlvbjo6U2Nyb2xsSW50b1ZpZXdJZk5lZWRlZDsKLSAgICBvcHRpb25z
IHw9IEVsZW1lbnRMYXlvdXRPcHRpb246OlVzZVZpZXdwb3J0Q29vcmRpbmF0ZXM7CisgICAgT3B0
aW9uU2V0PEVsZW1lbnRMYXlvdXRPcHRpb24+IG9wdGlvbnMgPSB7IEVsZW1lbnRMYXlvdXRPcHRp
b246OlNjcm9sbEludG9WaWV3SWZOZWVkZWQsIEVsZW1lbnRMYXlvdXRPcHRpb246OlVzZVZpZXdw
b3J0Q29vcmRpbmF0ZXMgfTsKICAgICBjb21wdXRlRWxlbWVudExheW91dChlbGVtZW50SUQsIG9w
dGlvbnMsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGVsZW1lbnRJRCwg
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oc3RkOjpvcHRp
b25hbDxSZWN0PiYmIHJlY3QsIHN0ZDo6b3B0aW9uYWw8UG9pbnQ+JiYgaW5WaWV3Q2VudGVyLCBi
b29sIGlzT2JzY3VyZWQsIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgZXJyb3IpIG11dGFibGUgewog
ICAgICAgICBpZiAoIXJlY3QgfHwgZXJyb3IpIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwoV1RGTW92ZShlcnJvcikpKTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAyMzU1MzkpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDU4IEBACisyMDE4LTA4LTMxICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFw
cGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIE9wdGlvblNldCB8PSBhbmQgLT0gb3BlcmF0b3Jz
IHdpdGggYWRkKCkgYW5kIHJlbW92ZSgpIGZ1bmN0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg5MTY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3Jr
UHJvY2Vzc0NvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cGxhdGZv
cm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3NDb2NvYSk6CisgICAgICAgICogU2hhcmVkL1JlbW90
ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5oOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJQcm9wZXJ0aWVzOjpub3RlUHJvcGVy
dGllc0NoYW5nZWQpOgorICAgICAgICAqIFNoYXJlZC9XZWJFdmVudENvbnZlcnNpb24uY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJLaXQyUGxhdGZvcm1Nb3VzZUV2ZW50OjpXZWJLaXQyUGxhdGZv
cm1Nb3VzZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViS2l0MlBsYXRmb3JtV2hlZWxFdmVu
dDo6V2ViS2l0MlBsYXRmb3JtV2hlZWxFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYktpdDJQ
bGF0Zm9ybUtleWJvYXJkRXZlbnQ6OldlYktpdDJQbGF0Zm9ybUtleWJvYXJkRXZlbnQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJLaXQyUGxhdGZvcm1Ub3VjaEV2ZW50OjpXZWJLaXQyUGxhdGZvcm1U
b3VjaEV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViS2l0MlBsYXRmb3JtR2VzdHVyZUV2ZW50
OjpXZWJLaXQyUGxhdGZvcm1HZXN0dXJlRXZlbnQpOgorICAgICAgICAqIFNoYXJlZC9XZWJzaXRl
UG9saWNpZXNEYXRhLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZVBvbGljaWVzRGF0YTo6
YXBwbHlUb0RvY3VtZW50TG9hZGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdl
LmNwcDoKKyAgICAgICAgKFdLUGFnZVJlbG9hZCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
L1dLUmVzb3VyY2VDYWNoZU1hbmFnZXIuY3BwOgorICAgICAgICAodG9XZWJzaXRlRGF0YVR5cGVz
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlUG9saWNpZXMuY3BwOgorICAg
ICAgICAoV0tXZWJzaXRlUG9saWNpZXNTZXRBbGxvd2VkQXV0b3BsYXlRdWlya3MpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZp
ZXcgcmVsb2FkXSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRh
UmVjb3JkSW50ZXJuYWwuaDoKKyAgICAgICAgKFdlYktpdDo6dG9XZWJzaXRlRGF0YVR5cGVzKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbToKKyAg
ICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9mZXRjaERhdGFSZWNvcmRzT2ZUeXBlczp3aXRo
T3B0aW9uczpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS1dlYnNpdGVQb2xpY2llcy5tbToKKyAgICAgICAgKC1bX1dLV2Vic2l0ZVBvbGljaWVz
IHNldEFsbG93ZWRBdXRvcGxheVF1aXJrczpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2Ev
V2ViVmlld0ltcGwubW06CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjp2aWV3RGlkTW92
ZVRvV2luZG93KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp1cGRhdGVBY3Rpdml0eVN0YXRlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjphY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaXNwYXRjaEFjdGl2aXR5U3RhdGVDaGFuZ2UpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVJlY29yZC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhUmVjb3JkOjphZGQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJzaXRlRGF0YVJlY29yZDo6YWRkQ29va2llSG9zdE5hbWUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJzaXRlRGF0YVJlY29yZDo6YWRkUGx1Z2luRGF0YUhvc3ROYW1lKToKKyAgICAgICAgKFdlYktp
dDo6V2Vic2l0ZURhdGFSZWNvcmQ6OmFkZEhTVFNDYWNoZUhvc3RuYW1lKToKKyAgICAgICAgKFdl
YktpdDo6V2Vic2l0ZURhdGFSZWNvcmQ6OmFkZE9yaWdpbldpdGhDcmVkZW50aWFsKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvbWFjL1dLSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW06CisgICAgICAg
ICgtW1dLSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIgaW5zcGVjdG9yV0tXZWJWaWV3UmVsb2FkOl0p
OgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxl
Tm9kZUhhbmRsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OmltYWdlRm9yUmVjdCk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRs
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OnJlbmRl
cmVkSW1hZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5j
cHA6CisgICAgICAgIChXZWJLaXQ6OmNvcmUpOgorICAgICAgICAoV2ViS2l0OjpGaW5kQ29udHJv
bGxlcjo6ZmluZFN0cmluZyk6CisKIDIwMTgtMDgtMzEgIEZyZWRlcmljIFdhbmcgIDxmd2FuZ0Bp
Z2FsaWEuY29tPgogCiAgICAgICAgIEJ1ZyAxODIwNTMgLSBbQ1NTT00gVmlld10gSW1wbGVtZW50
IHN0YW5kYXJkIGJlaGF2aW9yIGZvciBzY3JvbGxpbmdFbGVtZW50CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0Nv
Y29hLm1tCShyZXZpc2lvbiAyMzU1MzkpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTExNCwxMiAr
MTE0LDEyIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZU4KICAgICBT
YW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHkocGFyYW1ldGVycy5kaXNrQ2FjaGVE
aXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogICAgIE9wdGlvblNldDxOZXR3b3JrQ2FjaGU6OkNh
Y2hlOjpPcHRpb24+IGNhY2hlT3B0aW9ucyB7IE5ldHdvcmtDYWNoZTo6Q2FjaGU6Ok9wdGlvbjo6
UmVnaXN0ZXJOb3RpZnkgfTsKICAgICBpZiAocGFyYW1ldGVycy5zaG91bGRFbmFibGVOZXR3b3Jr
Q2FjaGVFZmZpY2FjeUxvZ2dpbmcpCi0gICAgICAgIGNhY2hlT3B0aW9ucyB8PSBOZXR3b3JrQ2Fj
aGU6OkNhY2hlOjpPcHRpb246OkVmZmljYWN5TG9nZ2luZzsKKyAgICAgICAgY2FjaGVPcHRpb25z
LmFkZChOZXR3b3JrQ2FjaGU6OkNhY2hlOjpPcHRpb246OkVmZmljYWN5TG9nZ2luZyk7CiAgICAg
aWYgKHBhcmFtZXRlcnMuc2hvdWxkVXNlVGVzdGluZ05ldHdvcmtTZXNzaW9uKQotICAgICAgICBj
YWNoZU9wdGlvbnMgfD0gTmV0d29ya0NhY2hlOjpDYWNoZTo6T3B0aW9uOjpUZXN0aW5nTW9kZTsK
KyAgICAgICAgY2FjaGVPcHRpb25zLmFkZChOZXR3b3JrQ2FjaGU6OkNhY2hlOjpPcHRpb246OlRl
c3RpbmdNb2RlKTsKICNpZiBFTkFCTEUoTkVUV09SS19DQUNIRV9TUEVDVUxBVElWRV9SRVZBTElE
QVRJT04pCiAgICAgaWYgKHBhcmFtZXRlcnMuc2hvdWxkRW5hYmxlTmV0d29ya0NhY2hlU3BlY3Vs
YXRpdmVSZXZhbGlkYXRpb24pCi0gICAgICAgIGNhY2hlT3B0aW9ucyB8PSBOZXR3b3JrQ2FjaGU6
OkNhY2hlOjpPcHRpb246OlNwZWN1bGF0aXZlUmV2YWxpZGF0aW9uOworICAgICAgICBjYWNoZU9w
dGlvbnMuYWRkKE5ldHdvcmtDYWNoZTo6Q2FjaGU6Ok9wdGlvbjo6U3BlY3VsYXRpdmVSZXZhbGlk
YXRpb24pOwogI2VuZGlmCiAKICAgICBtX2NhY2hlID0gTmV0d29ya0NhY2hlOjpDYWNoZTo6b3Bl
bihtX2Rpc2tDYWNoZURpcmVjdG9yeSwgY2FjaGVPcHRpb25zKTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAu
Y3BwCShyZXZpc2lvbiAyMzU1MzkpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3Nv
dXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEzLDEwICsxMTMs
MTAgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplTgogCiAgICAgT3B0
aW9uU2V0PE5ldHdvcmtDYWNoZTo6Q2FjaGU6Ok9wdGlvbj4gY2FjaGVPcHRpb25zIHsgTmV0d29y
a0NhY2hlOjpDYWNoZTo6T3B0aW9uOjpSZWdpc3Rlck5vdGlmeSB9OwogICAgIGlmIChwYXJhbWV0
ZXJzLnNob3VsZEVuYWJsZU5ldHdvcmtDYWNoZUVmZmljYWN5TG9nZ2luZykKLSAgICAgICAgY2Fj
aGVPcHRpb25zIHw9IE5ldHdvcmtDYWNoZTo6Q2FjaGU6Ok9wdGlvbjo6RWZmaWNhY3lMb2dnaW5n
OworICAgICAgICBjYWNoZU9wdGlvbnMuYWRkKE5ldHdvcmtDYWNoZTo6Q2FjaGU6Ok9wdGlvbjo6
RWZmaWNhY3lMb2dnaW5nKTsKICNpZiBFTkFCTEUoTkVUV09SS19DQUNIRV9TUEVDVUxBVElWRV9S
RVZBTElEQVRJT04pCiAgICAgaWYgKHBhcmFtZXRlcnMuc2hvdWxkRW5hYmxlTmV0d29ya0NhY2hl
U3BlY3VsYXRpdmVSZXZhbGlkYXRpb24pCi0gICAgICAgIGNhY2hlT3B0aW9ucyB8PSBOZXR3b3Jr
Q2FjaGU6OkNhY2hlOjpPcHRpb246OlNwZWN1bGF0aXZlUmV2YWxpZGF0aW9uOworICAgICAgICBj
YWNoZU9wdGlvbnMuYWRkKE5ldHdvcmtDYWNoZTo6Q2FjaGU6Ok9wdGlvbjo6U3BlY3VsYXRpdmVS
ZXZhbGlkYXRpb24pOwogI2VuZGlmCiAKICAgICBtX2NhY2hlID0gTmV0d29ya0NhY2hlOjpDYWNo
ZTo6b3BlbihtX2Rpc2tDYWNoZURpcmVjdG9yeSwgY2FjaGVPcHRpb25zKTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkV2ZW50Q29udmVyc2lvbi5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViRXZlbnRDb252ZXJzaW9uLmNwcAkocmV2aXNpb24gMjM1NTM5
KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvV2ViRXZlbnRDb252ZXJzaW9uLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNjksMTUgKzY5LDE1IEBAIHB1YmxpYzoKICAgICAgICAgfQogCiAgICAgICAg
IGlmICh3ZWJFdmVudC5zaGlmdEtleSgpKQotICAgICAgICAgICAgbV9tb2RpZmllcnMgfD0gTW9k
aWZpZXI6OlNoaWZ0S2V5OworICAgICAgICAgICAgbV9tb2RpZmllcnMuYWRkKE1vZGlmaWVyOjpT
aGlmdEtleSk7CiAgICAgICAgIGlmICh3ZWJFdmVudC5jb250cm9sS2V5KCkpCi0gICAgICAgICAg
ICBtX21vZGlmaWVycyB8PSBNb2RpZmllcjo6Q3RybEtleTsKKyAgICAgICAgICAgIG1fbW9kaWZp
ZXJzLmFkZChNb2RpZmllcjo6Q3RybEtleSk7CiAgICAgICAgIGlmICh3ZWJFdmVudC5hbHRLZXko
KSkKLSAgICAgICAgICAgIG1fbW9kaWZpZXJzIHw9IE1vZGlmaWVyOjpBbHRLZXk7CisgICAgICAg
ICAgICBtX21vZGlmaWVycy5hZGQoTW9kaWZpZXI6OkFsdEtleSk7CiAgICAgICAgIGlmICh3ZWJF
dmVudC5tZXRhS2V5KCkpCi0gICAgICAgICAgICBtX21vZGlmaWVycyB8PSBNb2RpZmllcjo6TWV0
YUtleTsKKyAgICAgICAgICAgIG1fbW9kaWZpZXJzLmFkZChNb2RpZmllcjo6TWV0YUtleSk7CiAg
ICAgICAgIGlmICh3ZWJFdmVudC5jYXBzTG9ja0tleSgpKQotICAgICAgICAgICAgbV9tb2RpZmll
cnMgfD0gTW9kaWZpZXI6OkNhcHNMb2NrS2V5OworICAgICAgICAgICAgbV9tb2RpZmllcnMuYWRk
KE1vZGlmaWVyOjpDYXBzTG9ja0tleSk7CiAKICAgICAgICAgbV90aW1lc3RhbXAgPSB3ZWJFdmVu
dC50aW1lc3RhbXAoKTsKIApAQCAtMTM2LDE1ICsxMzYsMTUgQEAgcHVibGljOgogICAgICAgICBt
X3R5cGUgPSBQbGF0Zm9ybUV2ZW50OjpXaGVlbDsKIAogICAgICAgICBpZiAod2ViRXZlbnQuc2hp
ZnRLZXkoKSkKLSAgICAgICAgICAgIG1fbW9kaWZpZXJzIHw9IE1vZGlmaWVyOjpTaGlmdEtleTsK
KyAgICAgICAgICAgIG1fbW9kaWZpZXJzLmFkZChNb2RpZmllcjo6U2hpZnRLZXkpOwogICAgICAg
ICBpZiAod2ViRXZlbnQuY29udHJvbEtleSgpKQotICAgICAgICAgICAgbV9tb2RpZmllcnMgfD0g
TW9kaWZpZXI6OkN0cmxLZXk7CisgICAgICAgICAgICBtX21vZGlmaWVycy5hZGQoTW9kaWZpZXI6
OkN0cmxLZXkpOwogICAgICAgICBpZiAod2ViRXZlbnQuYWx0S2V5KCkpCi0gICAgICAgICAgICBt
X21vZGlmaWVycyB8PSBNb2RpZmllcjo6QWx0S2V5OworICAgICAgICAgICAgbV9tb2RpZmllcnMu
YWRkKE1vZGlmaWVyOjpBbHRLZXkpOwogICAgICAgICBpZiAod2ViRXZlbnQubWV0YUtleSgpKQot
ICAgICAgICAgICAgbV9tb2RpZmllcnMgfD0gTW9kaWZpZXI6Ok1ldGFLZXk7CisgICAgICAgICAg
ICBtX21vZGlmaWVycy5hZGQoTW9kaWZpZXI6Ok1ldGFLZXkpOwogICAgICAgICBpZiAod2ViRXZl
bnQuY2Fwc0xvY2tLZXkoKSkKLSAgICAgICAgICAgIG1fbW9kaWZpZXJzIHw9IE1vZGlmaWVyOjpD
YXBzTG9ja0tleTsKKyAgICAgICAgICAgIG1fbW9kaWZpZXJzLmFkZChNb2RpZmllcjo6Q2Fwc0xv
Y2tLZXkpOwogCiAgICAgICAgIG1fdGltZXN0YW1wID0gd2ViRXZlbnQudGltZXN0YW1wKCk7CiAK
QEAgLTE5OCwxNSArMTk4LDE1IEBAIHB1YmxpYzoKICAgICAgICAgfQogCiAgICAgICAgIGlmICh3
ZWJFdmVudC5zaGlmdEtleSgpKQotICAgICAgICAgICAgbV9tb2RpZmllcnMgfD0gTW9kaWZpZXI6
OlNoaWZ0S2V5OworICAgICAgICAgICAgbV9tb2RpZmllcnMuYWRkKE1vZGlmaWVyOjpTaGlmdEtl
eSk7CiAgICAgICAgIGlmICh3ZWJFdmVudC5jb250cm9sS2V5KCkpCi0gICAgICAgICAgICBtX21v
ZGlmaWVycyB8PSBNb2RpZmllcjo6Q3RybEtleTsKKyAgICAgICAgICAgIG1fbW9kaWZpZXJzLmFk
ZChNb2RpZmllcjo6Q3RybEtleSk7CiAgICAgICAgIGlmICh3ZWJFdmVudC5hbHRLZXkoKSkKLSAg
ICAgICAgICAgIG1fbW9kaWZpZXJzIHw9IE1vZGlmaWVyOjpBbHRLZXk7CisgICAgICAgICAgICBt
X21vZGlmaWVycy5hZGQoTW9kaWZpZXI6OkFsdEtleSk7CiAgICAgICAgIGlmICh3ZWJFdmVudC5t
ZXRhS2V5KCkpCi0gICAgICAgICAgICBtX21vZGlmaWVycyB8PSBNb2RpZmllcjo6TWV0YUtleTsK
KyAgICAgICAgICAgIG1fbW9kaWZpZXJzLmFkZChNb2RpZmllcjo6TWV0YUtleSk7CiAgICAgICAg
IGlmICh3ZWJFdmVudC5jYXBzTG9ja0tleSgpKQotICAgICAgICAgICAgbV9tb2RpZmllcnMgfD0g
TW9kaWZpZXI6OkNhcHNMb2NrS2V5OworICAgICAgICAgICAgbV9tb2RpZmllcnMuYWRkKE1vZGlm
aWVyOjpDYXBzTG9ja0tleSk7CiAKICAgICAgICAgbV90aW1lc3RhbXAgPSB3ZWJFdmVudC50aW1l
c3RhbXAoKTsKIApAQCAtMzM5LDE1ICszMzksMTUgQEAgcHVibGljOgogICAgICAgICB9CiAKICAg
ICAgICAgaWYgKHdlYkV2ZW50LnNoaWZ0S2V5KCkpCi0gICAgICAgICAgICBtX21vZGlmaWVycyB8
PSBNb2RpZmllcjo6U2hpZnRLZXk7CisgICAgICAgICAgICBtX21vZGlmaWVycy5hZGQoTW9kaWZp
ZXI6OlNoaWZ0S2V5KTsKICAgICAgICAgaWYgKHdlYkV2ZW50LmNvbnRyb2xLZXkoKSkKLSAgICAg
ICAgICAgIG1fbW9kaWZpZXJzIHw9IE1vZGlmaWVyOjpDdHJsS2V5OworICAgICAgICAgICAgbV9t
b2RpZmllcnMuYWRkKE1vZGlmaWVyOjpDdHJsS2V5KTsKICAgICAgICAgaWYgKHdlYkV2ZW50LmFs
dEtleSgpKQotICAgICAgICAgICAgbV9tb2RpZmllcnMgfD0gTW9kaWZpZXI6OkFsdEtleTsKKyAg
ICAgICAgICAgIG1fbW9kaWZpZXJzLmFkZChNb2RpZmllcjo6QWx0S2V5KTsKICAgICAgICAgaWYg
KHdlYkV2ZW50Lm1ldGFLZXkoKSkKLSAgICAgICAgICAgIG1fbW9kaWZpZXJzIHw9IE1vZGlmaWVy
OjpNZXRhS2V5OworICAgICAgICAgICAgbV9tb2RpZmllcnMuYWRkKE1vZGlmaWVyOjpNZXRhS2V5
KTsKICAgICAgICAgaWYgKHdlYkV2ZW50LmNhcHNMb2NrS2V5KCkpCi0gICAgICAgICAgICBtX21v
ZGlmaWVycyB8PSBNb2RpZmllcjo6Q2Fwc0xvY2tLZXk7CisgICAgICAgICAgICBtX21vZGlmaWVy
cy5hZGQoTW9kaWZpZXI6OkNhcHNMb2NrS2V5KTsKIAogICAgICAgICBtX3RpbWVzdGFtcCA9IHdl
YkV2ZW50LnRpbWVzdGFtcCgpOwogCkBAIC0zOTgsMTUgKzM5OCwxNSBAQCBwdWJsaWM6CiAgICAg
ICAgIH0KIAogICAgICAgICBpZiAod2ViRXZlbnQuc2hpZnRLZXkoKSkKLSAgICAgICAgICAgIG1f
bW9kaWZpZXJzIHw9IE1vZGlmaWVyOjpTaGlmdEtleTsKKyAgICAgICAgICAgIG1fbW9kaWZpZXJz
LmFkZChNb2RpZmllcjo6U2hpZnRLZXkpOwogICAgICAgICBpZiAod2ViRXZlbnQuY29udHJvbEtl
eSgpKQotICAgICAgICAgICAgbV9tb2RpZmllcnMgfD0gTW9kaWZpZXI6OkN0cmxLZXk7CisgICAg
ICAgICAgICBtX21vZGlmaWVycy5hZGQoTW9kaWZpZXI6OkN0cmxLZXkpOwogICAgICAgICBpZiAo
d2ViRXZlbnQuYWx0S2V5KCkpCi0gICAgICAgICAgICBtX21vZGlmaWVycyB8PSBNb2RpZmllcjo6
QWx0S2V5OworICAgICAgICAgICAgbV9tb2RpZmllcnMuYWRkKE1vZGlmaWVyOjpBbHRLZXkpOwog
ICAgICAgICBpZiAod2ViRXZlbnQubWV0YUtleSgpKQotICAgICAgICAgICAgbV9tb2RpZmllcnMg
fD0gTW9kaWZpZXI6Ok1ldGFLZXk7CisgICAgICAgICAgICBtX21vZGlmaWVycy5hZGQoTW9kaWZp
ZXI6Ok1ldGFLZXkpOwogICAgICAgICBpZiAod2ViRXZlbnQuY2Fwc0xvY2tLZXkoKSkKLSAgICAg
ICAgICAgIG1fbW9kaWZpZXJzIHw9IE1vZGlmaWVyOjpDYXBzTG9ja0tleTsKKyAgICAgICAgICAg
IG1fbW9kaWZpZXJzLmFkZChNb2RpZmllcjo6Q2Fwc0xvY2tLZXkpOwogCiAgICAgICAgIG1fdGlt
ZXN0YW1wID0gd2ViRXZlbnQudGltZXN0YW1wKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYnNpdGVQb2xpY2llc0RhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYnNpdGVQb2xpY2llc0RhdGEuY3BwCShyZXZpc2lvbiAyMzU1MzkpCisrKyBTb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlUG9saWNpZXNEYXRhLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtOTgsMTMgKzk4LDEzIEBAIHZvaWQgV2Vic2l0ZVBvbGljaWVzRGF0YTo6YXBwbHlUb0RvY3Vt
ZW4KICAgICBjb25zdCBhdXRvJiBhbGxvd2VkUXVpcmtzID0gd2Vic2l0ZVBvbGljaWVzLmFsbG93
ZWRBdXRvcGxheVF1aXJrczsKICAgICAKICAgICBpZiAoYWxsb3dlZFF1aXJrcy5jb250YWlucyhX
ZWJzaXRlQXV0b3BsYXlRdWlyazo6SW5oZXJpdGVkVXNlckdlc3R1cmVzKSkKLSAgICAgICAgcXVp
cmtzIHw9IFdlYkNvcmU6OkF1dG9wbGF5UXVpcms6OkluaGVyaXRlZFVzZXJHZXN0dXJlczsKKyAg
ICAgICAgcXVpcmtzLmFkZChXZWJDb3JlOjpBdXRvcGxheVF1aXJrOjpJbmhlcml0ZWRVc2VyR2Vz
dHVyZXMpOwogICAgIAogICAgIGlmIChhbGxvd2VkUXVpcmtzLmNvbnRhaW5zKFdlYnNpdGVBdXRv
cGxheVF1aXJrOjpTeW50aGVzaXplZFBhdXNlRXZlbnRzKSkKLSAgICAgICAgcXVpcmtzIHw9IFdl
YkNvcmU6OkF1dG9wbGF5UXVpcms6OlN5bnRoZXNpemVkUGF1c2VFdmVudHM7CisgICAgICAgIHF1
aXJrcy5hZGQoV2ViQ29yZTo6QXV0b3BsYXlRdWlyazo6U3ludGhlc2l6ZWRQYXVzZUV2ZW50cyk7
CiAgICAgCiAgICAgaWYgKGFsbG93ZWRRdWlya3MuY29udGFpbnMoV2Vic2l0ZUF1dG9wbGF5UXVp
cms6OkFyYml0cmFyeVVzZXJHZXN0dXJlcykpCi0gICAgICAgIHF1aXJrcyB8PSBXZWJDb3JlOjpB
dXRvcGxheVF1aXJrOjpBcmJpdHJhcnlVc2VyR2VzdHVyZXM7CisgICAgICAgIHF1aXJrcy5hZGQo
V2ViQ29yZTo6QXV0b3BsYXlRdWlyazo6QXJiaXRyYXJ5VXNlckdlc3R1cmVzKTsKIAogICAgIGRv
Y3VtZW50TG9hZGVyLnNldEFsbG93ZWRBdXRvcGxheVF1aXJrcyhxdWlya3MpOwogCkluZGV4OiBT
b3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNh
Y3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRy
ZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24uaAkocmV2aXNpb24gMjM1NTM5KQorKysgU291
cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0
aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTExNiw3ICsxMTYsNyBAQCBwdWJsaWM6CiAKICAgICAg
ICAgdm9pZCBub3RlUHJvcGVydGllc0NoYW5nZWQoT3B0aW9uU2V0PExheWVyQ2hhbmdlPiBjaGFu
Z2VGbGFncykKICAgICAgICAgewotICAgICAgICAgICAgY2hhbmdlZFByb3BlcnRpZXMgfD0gY2hh
bmdlRmxhZ3M7CisgICAgICAgICAgICBjaGFuZ2VkUHJvcGVydGllcy5hZGQoY2hhbmdlRmxhZ3Mp
OwogICAgICAgICB9CiAKICAgICAgICAgdm9pZCByZXNldENoYW5nZWRQcm9wZXJ0aWVzKCkKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24gMjM1
NTM5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTQ0NiwzMiArMTQ0NiwzMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0U3Vw
cHJlc3NWaXNpYmlsaXR5CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVBY3Rpdml0eVN0YXRl
KE9wdGlvblNldDxBY3Rpdml0eVN0YXRlOjpGbGFnPiBmbGFnc1RvVXBkYXRlKQogewotICAgIG1f
YWN0aXZpdHlTdGF0ZSA9IG1fYWN0aXZpdHlTdGF0ZSAtIGZsYWdzVG9VcGRhdGU7CisgICAgbV9h
Y3Rpdml0eVN0YXRlLnJlbW92ZShmbGFnc1RvVXBkYXRlKTsKICAgICBpZiAoZmxhZ3NUb1VwZGF0
ZSAmIEFjdGl2aXR5U3RhdGU6OklzRm9jdXNlZCAmJiBtX3BhZ2VDbGllbnQuaXNWaWV3Rm9jdXNl
ZCgpKQotICAgICAgICBtX2FjdGl2aXR5U3RhdGUgfD0gQWN0aXZpdHlTdGF0ZTo6SXNGb2N1c2Vk
OworICAgICAgICBtX2FjdGl2aXR5U3RhdGUuYWRkKEFjdGl2aXR5U3RhdGU6OklzRm9jdXNlZCk7
CiAgICAgaWYgKGZsYWdzVG9VcGRhdGUgJiBBY3Rpdml0eVN0YXRlOjpXaW5kb3dJc0FjdGl2ZSAm
JiBtX3BhZ2VDbGllbnQuaXNWaWV3V2luZG93QWN0aXZlKCkpCi0gICAgICAgIG1fYWN0aXZpdHlT
dGF0ZSB8PSBBY3Rpdml0eVN0YXRlOjpXaW5kb3dJc0FjdGl2ZTsKKyAgICAgICAgbV9hY3Rpdml0
eVN0YXRlLmFkZChBY3Rpdml0eVN0YXRlOjpXaW5kb3dJc0FjdGl2ZSk7CiAgICAgaWYgKGZsYWdz
VG9VcGRhdGUgJiBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUgJiYgbV9wYWdlQ2xpZW50LmlzVmll
d1Zpc2libGUoKSkKLSAgICAgICAgbV9hY3Rpdml0eVN0YXRlIHw9IEFjdGl2aXR5U3RhdGU6Oklz
VmlzaWJsZTsKKyAgICAgICAgbV9hY3Rpdml0eVN0YXRlLmFkZChBY3Rpdml0eVN0YXRlOjpJc1Zp
c2libGUpOwogICAgIGlmIChmbGFnc1RvVXBkYXRlICYgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxl
T3JPY2NsdWRlZCAmJiBtX3BhZ2VDbGllbnQuaXNWaWV3VmlzaWJsZU9yT2NjbHVkZWQoKSkKLSAg
ICAgICAgbV9hY3Rpdml0eVN0YXRlIHw9IEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZU9yT2NjbHVk
ZWQ7CisgICAgICAgIG1fYWN0aXZpdHlTdGF0ZS5hZGQoQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxl
T3JPY2NsdWRlZCk7CiAgICAgaWYgKGZsYWdzVG9VcGRhdGUgJiBBY3Rpdml0eVN0YXRlOjpJc0lu
V2luZG93ICYmIG1fcGFnZUNsaWVudC5pc1ZpZXdJbldpbmRvdygpKQotICAgICAgICBtX2FjdGl2
aXR5U3RhdGUgfD0gQWN0aXZpdHlTdGF0ZTo6SXNJbldpbmRvdzsKKyAgICAgICAgbV9hY3Rpdml0
eVN0YXRlLmFkZChBY3Rpdml0eVN0YXRlOjpJc0luV2luZG93KTsKICAgICBpZiAoZmxhZ3NUb1Vw
ZGF0ZSAmIEFjdGl2aXR5U3RhdGU6OklzVmlzdWFsbHlJZGxlICYmIG1fcGFnZUNsaWVudC5pc1Zp
c3VhbGx5SWRsZSgpKQotICAgICAgICBtX2FjdGl2aXR5U3RhdGUgfD0gQWN0aXZpdHlTdGF0ZTo6
SXNWaXN1YWxseUlkbGU7CisgICAgICAgIG1fYWN0aXZpdHlTdGF0ZS5hZGQoQWN0aXZpdHlTdGF0
ZTo6SXNWaXN1YWxseUlkbGUpOwogICAgIGlmIChmbGFnc1RvVXBkYXRlICYgQWN0aXZpdHlTdGF0
ZTo6SXNBdWRpYmxlICYmIG1fbWVkaWFTdGF0ZSAmIE1lZGlhUHJvZHVjZXI6OklzUGxheWluZ0F1
ZGlvICYmICEobV9tdXRlZFN0YXRlICYgTWVkaWFQcm9kdWNlcjo6QXVkaW9Jc011dGVkKSkKLSAg
ICAgICAgbV9hY3Rpdml0eVN0YXRlIHw9IEFjdGl2aXR5U3RhdGU6OklzQXVkaWJsZTsKKyAgICAg
ICAgbV9hY3Rpdml0eVN0YXRlLmFkZChBY3Rpdml0eVN0YXRlOjpJc0F1ZGlibGUpOwogICAgIGlm
IChmbGFnc1RvVXBkYXRlICYgQWN0aXZpdHlTdGF0ZTo6SXNMb2FkaW5nICYmIG1fcGFnZUxvYWRT
dGF0ZS5pc0xvYWRpbmcoKSkKLSAgICAgICAgbV9hY3Rpdml0eVN0YXRlIHw9IEFjdGl2aXR5U3Rh
dGU6OklzTG9hZGluZzsKKyAgICAgICAgbV9hY3Rpdml0eVN0YXRlLmFkZChBY3Rpdml0eVN0YXRl
OjpJc0xvYWRpbmcpOwogICAgIGlmIChmbGFnc1RvVXBkYXRlICYgQWN0aXZpdHlTdGF0ZTo6SXND
YXB0dXJpbmdNZWRpYSAmJiBtX21lZGlhU3RhdGUgJiAoTWVkaWFQcm9kdWNlcjo6SGFzQWN0aXZl
QXVkaW9DYXB0dXJlRGV2aWNlIHwgTWVkaWFQcm9kdWNlcjo6SGFzQWN0aXZlVmlkZW9DYXB0dXJl
RGV2aWNlKSkKLSAgICAgICAgbV9hY3Rpdml0eVN0YXRlIHw9IEFjdGl2aXR5U3RhdGU6OklzQ2Fw
dHVyaW5nTWVkaWE7CisgICAgICAgIG1fYWN0aXZpdHlTdGF0ZS5hZGQoQWN0aXZpdHlTdGF0ZTo6
SXNDYXB0dXJpbmdNZWRpYSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjphY3Rpdml0eVN0YXRl
RGlkQ2hhbmdlKE9wdGlvblNldDxBY3Rpdml0eVN0YXRlOjpGbGFnPiBtYXlIYXZlQ2hhbmdlZCwg
Ym9vbCB3YW50c1N5bmNocm9ub3VzUmVwbHksIEFjdGl2aXR5U3RhdGVDaGFuZ2VEaXNwYXRjaE1v
ZGUgZGlzcGF0Y2hNb2RlKQogewogICAgIExPR19XSVRIX1NUUkVBTShBY3Rpdml0eVN0YXRlLCBz
dHJlYW0gPDwgIldlYlBhZ2VQcm94eSAiIDw8IHBhZ2VJRCgpIDw8ICIgYWN0aXZpdHlTdGF0ZURp
ZENoYW5nZSAtIG1heUhhdmVDaGFuZ2VkICIgPDwgbWF5SGF2ZUNoYW5nZWQpOwogCi0gICAgbV9w
b3RlbnRpYWxseUNoYW5nZWRBY3Rpdml0eVN0YXRlRmxhZ3MgfD0gbWF5SGF2ZUNoYW5nZWQ7Cisg
ICAgbV9wb3RlbnRpYWxseUNoYW5nZWRBY3Rpdml0eVN0YXRlRmxhZ3MuYWRkKG1heUhhdmVDaGFu
Z2VkKTsKICAgICBtX2FjdGl2aXR5U3RhdGVDaGFuZ2VXYW50c1N5bmNocm9ub3VzUmVwbHkgPSBt
X2FjdGl2aXR5U3RhdGVDaGFuZ2VXYW50c1N5bmNocm9ub3VzUmVwbHkgfHwgd2FudHNTeW5jaHJv
bm91c1JlcGx5OwogCiAgICAgaWYgKG1fc3VwcHJlc3NWaXNpYmlsaXR5VXBkYXRlcyAmJiBkaXNw
YXRjaE1vZGUgIT0gQWN0aXZpdHlTdGF0ZUNoYW5nZURpc3BhdGNoTW9kZTo6SW1tZWRpYXRlKQpA
QCAtMTUyMiw3ICsxNTIyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpc3BhdGNoQWN0aXZpdHlT
dGF0ZQogCiAgICAgLy8gSWYgdGhlIHZpc2liaWxpdHkgc3RhdGUgbWF5IGhhdmUgY2hhbmdlZCwg
dGhlbiBzbyBtYXkgdGhlIHZpc3VhbGx5IGlkbGUgJiBvY2NsdWRlZCBhZ25vc3RpYyBzdGF0ZS4K
ICAgICBpZiAobV9wb3RlbnRpYWxseUNoYW5nZWRBY3Rpdml0eVN0YXRlRmxhZ3MgJiBBY3Rpdml0
eVN0YXRlOjpJc1Zpc2libGUpCi0gICAgICAgIG1fcG90ZW50aWFsbHlDaGFuZ2VkQWN0aXZpdHlT
dGF0ZUZsYWdzIHw9IHsgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlT3JPY2NsdWRlZCwgQWN0aXZp
dHlTdGF0ZTo6SXNWaXN1YWxseUlkbGUgfTsKKyAgICAgICAgbV9wb3RlbnRpYWxseUNoYW5nZWRB
Y3Rpdml0eVN0YXRlRmxhZ3MuYWRkKHsgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlT3JPY2NsdWRl
ZCwgQWN0aXZpdHlTdGF0ZTo6SXNWaXN1YWxseUlkbGUgfSk7CiAKICAgICAvLyBSZWNvcmQgdGhl
IHByaW9yIHZpZXcgc3RhdGUsIHVwZGF0ZSB0aGUgZmxhZ3MgdGhhdCBtYXkgaGF2ZSBjaGFuZ2Vk
LAogICAgIC8vIGFuZCBjaGVjayB3aGljaCBmbGFncyBoYXZlIGFjdHVhbGx5IGNoYW5nZWQuCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAJKHJldmlzaW9uIDIz
NTUzOSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI3MCw3ICsyNzAsNyBAQCB2b2lkIFdLUGFnZVJlbG9hZChXS1BhZ2VSZWYg
cGFnZVJlZikKICAgICBPcHRpb25TZXQ8V2ViQ29yZTo6UmVsb2FkT3B0aW9uPiByZWxvYWRPcHRp
b25zOwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGlmIChsaW5rZWRPbk9yQWZ0ZXIoV2ViS2l0
OjpTREtWZXJzaW9uOjpGaXJzdFdpdGhFeHBpcmVkT25seVJlbG9hZEJlaGF2aW9yKSkKLSAgICAg
ICAgcmVsb2FkT3B0aW9ucyB8PSBXZWJDb3JlOjpSZWxvYWRPcHRpb246OkV4cGlyZWRPbmx5Owor
ICAgICAgICByZWxvYWRPcHRpb25zLmFkZChXZWJDb3JlOjpSZWxvYWRPcHRpb246OkV4cGlyZWRP
bmx5KTsKICNlbmRpZgogCiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5yZWxvYWQocmVsb2FkT3B0aW9u
cyk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1Jlc291cmNlQ2FjaGVN
YW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S1Jlc291cmNlQ2FjaGVNYW5hZ2VyLmNwcAkocmV2aXNpb24gMjM1NTM5KQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0MvV0tSZXNvdXJjZUNhY2hlTWFuYWdlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQwLDEyICs0MCwxMCBAQCBXS1R5cGVJRCBXS1Jlc291cmNlQ2FjaGVNYW5hZ2Vy
R2V0VHlwZUlECiAKIHN0YXRpYyBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiB0b1dlYnNpdGVE
YXRhVHlwZXMoV0tSZXNvdXJjZUNhY2hlc1RvQ2xlYXIgY2FjaGVzVG9DbGVhcikKIHsKLSAgICBP
cHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiB3ZWJzaXRlRGF0YVR5cGVzOwotCi0gICAgd2Vic2l0
ZURhdGFUeXBlcyB8PSBXZWJzaXRlRGF0YVR5cGU6Ok1lbW9yeUNhY2hlOworICAgIE9wdGlvblNl
dDxXZWJzaXRlRGF0YVR5cGU+IHdlYnNpdGVEYXRhVHlwZXMgeyBXZWJzaXRlRGF0YVR5cGU6Ok1l
bW9yeUNhY2hlIH07CiAKICAgICBpZiAoY2FjaGVzVG9DbGVhciA9PSBXS1Jlc291cmNlQ2FjaGVz
VG9DbGVhckFsbCkKLSAgICAgICAgd2Vic2l0ZURhdGFUeXBlcyB8PSBXZWJzaXRlRGF0YVR5cGU6
OkRpc2tDYWNoZTsKKyAgICAgICAgd2Vic2l0ZURhdGFUeXBlcy5hZGQoV2Vic2l0ZURhdGFUeXBl
OjpEaXNrQ2FjaGUpOwogCiAgICAgcmV0dXJuIHdlYnNpdGVEYXRhVHlwZXM7CiB9CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVQb2xpY2llcy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlUG9saWNpZXMu
Y3BwCShyZXZpc2lvbiAyMzU1MzkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S1dlYnNpdGVQb2xpY2llcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgzLDEzICs4MywxMyBAQCB2
b2lkIFdLV2Vic2l0ZVBvbGljaWVzU2V0QWxsb3dlZEF1dG9wbGF5CiB7CiAgICAgT3B0aW9uU2V0
PFdlYnNpdGVBdXRvcGxheVF1aXJrPiBxdWlya3M7CiAgICAgaWYgKGFsbG93ZWRRdWlya3MgJiBr
V0tXZWJzaXRlQXV0b3BsYXlRdWlya0luaGVyaXRlZFVzZXJHZXN0dXJlcykKLSAgICAgICAgcXVp
cmtzIHw9IFdlYnNpdGVBdXRvcGxheVF1aXJrOjpJbmhlcml0ZWRVc2VyR2VzdHVyZXM7CisgICAg
ICAgIHF1aXJrcy5hZGQoV2Vic2l0ZUF1dG9wbGF5UXVpcms6OkluaGVyaXRlZFVzZXJHZXN0dXJl
cyk7CiAKICAgICBpZiAoYWxsb3dlZFF1aXJrcyAmIGtXS1dlYnNpdGVBdXRvcGxheVF1aXJrU3lu
dGhlc2l6ZWRQYXVzZUV2ZW50cykKLSAgICAgICAgcXVpcmtzIHw9IFdlYnNpdGVBdXRvcGxheVF1
aXJrOjpTeW50aGVzaXplZFBhdXNlRXZlbnRzOworICAgICAgICBxdWlya3MuYWRkKFdlYnNpdGVB
dXRvcGxheVF1aXJrOjpTeW50aGVzaXplZFBhdXNlRXZlbnRzKTsKIAogICAgIGlmIChhbGxvd2Vk
UXVpcmtzICYga1dLV2Vic2l0ZUF1dG9wbGF5UXVpcmtBcmJpdHJhcnlVc2VyR2VzdHVyZXMpCi0g
ICAgICAgIHF1aXJrcyB8PSBXZWJzaXRlQXV0b3BsYXlRdWlyazo6QXJiaXRyYXJ5VXNlckdlc3R1
cmVzOworICAgICAgICBxdWlya3MuYWRkKFdlYnNpdGVBdXRvcGxheVF1aXJrOjpBcmJpdHJhcnlV
c2VyR2VzdHVyZXMpOwogCiAgICAgdG9JbXBsKHdlYnNpdGVQb2xpY2llcyktPnNldEFsbG93ZWRB
dXRvcGxheVF1aXJrcyhxdWlya3MpOwogfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0Mvd3BlL1dLQVBJQ2FzdFdQRS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL3dwZS9XS0FQSUNhc3RXUEUuaAkocmV2aXNpb24gMjM1NTM5KQorKysgU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mvd3BlL1dLQVBJQ2FzdFdQRS5oCSh3b3JraW5nIGNv
cHkpCkBAIC01Myw5ICs1Myw5IEBAIGlubGluZSBPcHRpb25TZXQ8V2ViQ29yZTo6QWN0aXZpdHlT
dGF0ZToKICAgICBPcHRpb25TZXQ8V2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZz4gdmlld1N0
YXRlRmxhZ3M7CiAKICAgICBpZiAod2tWaWV3U3RhdGUgJiBrV0tWaWV3U3RhdGVJc0luV2luZG93
KQotICAgICAgICB2aWV3U3RhdGVGbGFncyB8PSBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc0lu
V2luZG93OworICAgICAgICB2aWV3U3RhdGVGbGFncy5hZGQoV2ViQ29yZTo6QWN0aXZpdHlTdGF0
ZTo6SXNJbldpbmRvdyk7CiAgICAgaWYgKHdrVmlld1N0YXRlICYga1dLVmlld1N0YXRlSXNWaXNp
YmxlKQotICAgICAgICB2aWV3U3RhdGVGbGFncyB8PSBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJ
c1Zpc2libGU7CisgICAgICAgIHZpZXdTdGF0ZUZsYWdzLmFkZChXZWJDb3JlOjpBY3Rpdml0eVN0
YXRlOjpJc1Zpc2libGUpOwogCiAgICAgcmV0dXJuIHZpZXdTdGF0ZUZsYWdzOwogfQpJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCShyZXZp
c2lvbiAyMzU1MzkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC05NjEsNyArOTYxLDcgQEAgLSAoV0tOYXZpZ2F0aW9u
ICopcmVsb2FkCiB7CiAgICAgT3B0aW9uU2V0PFdlYkNvcmU6OlJlbG9hZE9wdGlvbj4gcmVsb2Fk
T3B0aW9uczsKICAgICBpZiAobGlua2VkT25PckFmdGVyKFdlYktpdDo6U0RLVmVyc2lvbjo6Rmly
c3RXaXRoRXhwaXJlZE9ubHlSZWxvYWRCZWhhdmlvcikpCi0gICAgICAgIHJlbG9hZE9wdGlvbnMg
fD0gV2ViQ29yZTo6UmVsb2FkT3B0aW9uOjpFeHBpcmVkT25seTsKKyAgICAgICAgcmVsb2FkT3B0
aW9ucy5hZGQoV2ViQ29yZTo6UmVsb2FkT3B0aW9uOjpFeHBpcmVkT25seSk7CiAKICAgICByZXR1
cm4gd3JhcHBlcihfcGFnZS0+cmVsb2FkKHJlbG9hZE9wdGlvbnMpKTsKIH0KSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkSW50ZXJuYWwu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJz
aXRlRGF0YVJlY29yZEludGVybmFsLmgJKHJldmlzaW9uIDIzNTUzOSkKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkSW50ZXJuYWwuaAkod29y
a2luZyBjb3B5KQpAQCAtODUsNyArODUsNyBAQCBzdGF0aWMgaW5saW5lIE9wdGlvblNldDxXZWJL
aXQ6OldlYnNpdGVECiAKICAgICBmb3IgKE5TU3RyaW5nICp3ZWJzaXRlRGF0YVR5cGUgaW4gd2Vi
c2l0ZURhdGFUeXBlcykgewogICAgICAgICBpZiAoYXV0byBkYXRhVHlwZSA9IHRvV2Vic2l0ZURh
dGFUeXBlKHdlYnNpdGVEYXRhVHlwZSkpCi0gICAgICAgICAgICByZXN1bHQgfD0gKmRhdGFUeXBl
OworICAgICAgICAgICAgcmVzdWx0LmFkZCgqZGF0YVR5cGUpOwogICAgIH0KIAogICAgIHJldHVy
biByZXN1bHQ7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJz
aXRlRGF0YVN0b3JlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0JKHJldmlzaW9uIDIzNTUzOSkKKysrIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0JKHdvcmtp
bmcgY29weSkKQEAgLTIyMyw3ICsyMjMsNyBAQCAtICh2b2lkKV9mZXRjaERhdGFSZWNvcmRzT2ZU
eXBlczooTlNTZXQ8CiAKICAgICBPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlRGF0YUZldGNoT3B0
aW9uPiBmZXRjaE9wdGlvbnM7CiAgICAgaWYgKG9wdGlvbnMgJiBfV0tXZWJzaXRlRGF0YVN0b3Jl
RmV0Y2hPcHRpb25Db21wdXRlU2l6ZXMpCi0gICAgICAgIGZldGNoT3B0aW9ucyB8PSBXZWJLaXQ6
OldlYnNpdGVEYXRhRmV0Y2hPcHRpb246OkNvbXB1dGVTaXplczsKKyAgICAgICAgZmV0Y2hPcHRp
b25zLmFkZChXZWJLaXQ6OldlYnNpdGVEYXRhRmV0Y2hPcHRpb246OkNvbXB1dGVTaXplcyk7CiAK
ICAgICBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLmZldGNoRGF0YShXZWJL
aXQ6OnRvV2Vic2l0ZURhdGFUeXBlcyhkYXRhVHlwZXMpLCBmZXRjaE9wdGlvbnMsIFtjb21wbGV0
aW9uSGFuZGxlckNvcHkgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyQ29weSldKGF1dG8gd2Vi
c2l0ZURhdGFSZWNvcmRzKSB7CiAgICAgICAgIFZlY3RvcjxSZWZQdHI8QVBJOjpPYmplY3Q+PiBl
bGVtZW50czsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJz
aXRlUG9saWNpZXMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS1dlYnNpdGVQb2xpY2llcy5tbQkocmV2aXNpb24gMjM1NTM5KQorKysgU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVQb2xpY2llcy5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtNjQsMTMgKzY0LDEzIEBAIC0gKHZvaWQpc2V0QWxsb3dlZEF1dG9wbGF5UXVp
cmtzOihfV0tXZWIKICAgICBPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlQXV0b3BsYXlRdWlyaz4g
cXVpcmtzOwogCiAgICAgaWYgKGFsbG93ZWRRdWlya3MgJiBfV0tXZWJzaXRlQXV0b3BsYXlRdWly
a0luaGVyaXRlZFVzZXJHZXN0dXJlcykKLSAgICAgICAgcXVpcmtzIHw9IFdlYktpdDo6V2Vic2l0
ZUF1dG9wbGF5UXVpcms6OkluaGVyaXRlZFVzZXJHZXN0dXJlczsKKyAgICAgICAgcXVpcmtzLmFk
ZChXZWJLaXQ6OldlYnNpdGVBdXRvcGxheVF1aXJrOjpJbmhlcml0ZWRVc2VyR2VzdHVyZXMpOwog
CiAgICAgaWYgKGFsbG93ZWRRdWlya3MgJiBfV0tXZWJzaXRlQXV0b3BsYXlRdWlya1N5bnRoZXNp
emVkUGF1c2VFdmVudHMpCi0gICAgICAgIHF1aXJrcyB8PSBXZWJLaXQ6OldlYnNpdGVBdXRvcGxh
eVF1aXJrOjpTeW50aGVzaXplZFBhdXNlRXZlbnRzOworICAgICAgICBxdWlya3MuYWRkKFdlYktp
dDo6V2Vic2l0ZUF1dG9wbGF5UXVpcms6OlN5bnRoZXNpemVkUGF1c2VFdmVudHMpOwogCiAgICAg
aWYgKGFsbG93ZWRRdWlya3MgJiBfV0tXZWJzaXRlQXV0b3BsYXlRdWlya0FyYml0cmFyeVVzZXJH
ZXN0dXJlcykKLSAgICAgICAgcXVpcmtzIHw9IFdlYktpdDo6V2Vic2l0ZUF1dG9wbGF5UXVpcms6
OkFyYml0cmFyeVVzZXJHZXN0dXJlczsKKyAgICAgICAgcXVpcmtzLmFkZChXZWJLaXQ6OldlYnNp
dGVBdXRvcGxheVF1aXJrOjpBcmJpdHJhcnlVc2VyR2VzdHVyZXMpOwogCiAgICAgX3dlYnNpdGVQ
b2xpY2llcy0+c2V0QWxsb3dlZEF1dG9wbGF5UXVpcmtzKHF1aXJrcyk7CiB9CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQkocmV2aXNpb24gMjM1
NTM5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0JKHdv
cmtpbmcgY29weSkKQEAgLTIxMTgsNyArMjExOCw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnZpZXdE
aWRNb3ZlVG9XaW5kb3coKQogICAgICAgICBpZiAobV9zaG91bGREZWZlclZpZXdJbldpbmRvd0No
YW5nZXMpCiAgICAgICAgICAgICBtX3ZpZXdJbldpbmRvd0NoYW5nZVdhc0RlZmVycmVkID0gdHJ1
ZTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgYWN0aXZpdHlTdGF0ZUNoYW5nZXMgfD0gV2Vi
Q29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNJbldpbmRvdzsKKyAgICAgICAgICAgIGFjdGl2aXR5U3Rh
dGVDaGFuZ2VzLmFkZChXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc0luV2luZG93KTsKICAgICAg
ICAgbV9wYWdlLT5hY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKGFjdGl2aXR5U3RhdGVDaGFuZ2VzKTsK
IAogICAgICAgICB1cGRhdGVXaW5kb3dBbmRWaWV3RnJhbWVzKCk7CkBAIC0yMTQ0LDcgKzIxNDQs
NyBAQCB2b2lkIFdlYlZpZXdJbXBsOjp2aWV3RGlkTW92ZVRvV2luZG93KCkKICAgICAgICAgaWYg
KG1fc2hvdWxkRGVmZXJWaWV3SW5XaW5kb3dDaGFuZ2VzKQogICAgICAgICAgICAgbV92aWV3SW5X
aW5kb3dDaGFuZ2VXYXNEZWZlcnJlZCA9IHRydWU7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
IGFjdGl2aXR5U3RhdGVDaGFuZ2VzIHw9IFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzSW5XaW5k
b3c7CisgICAgICAgICAgICBhY3Rpdml0eVN0YXRlQ2hhbmdlcy5hZGQoV2ViQ29yZTo6QWN0aXZp
dHlTdGF0ZTo6SXNJbldpbmRvdyk7CiAgICAgICAgIG1fcGFnZS0+YWN0aXZpdHlTdGF0ZURpZENo
YW5nZShhY3Rpdml0eVN0YXRlQ2hhbmdlcyk7CiAKICAgICAgICAgW05TRXZlbnQgcmVtb3ZlTW9u
aXRvcjptX2ZsYWdzQ2hhbmdlZEV2ZW50TW9uaXRvcl07CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVJlY29yZC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFSZWNvcmQuY3Bw
CShyZXZpc2lvbiAyMzU1MzkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YVJlY29yZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc5LDMwICs3OSwyNyBA
QCBTdHJpbmcgV2Vic2l0ZURhdGFSZWNvcmQ6OmRpc3BsYXlOYW1lRm9yCiAKIHZvaWQgV2Vic2l0
ZURhdGFSZWNvcmQ6OmFkZChXZWJzaXRlRGF0YVR5cGUgdHlwZSwgY29uc3QgV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4pCiB7Ci0gICAgdHlwZXMgfD0gdHlwZTsKLQorICAgIHR5
cGVzLmFkZCh0eXBlKTsKICAgICBvcmlnaW5zLmFkZChvcmlnaW4pOwogfQogCiB2b2lkIFdlYnNp
dGVEYXRhUmVjb3JkOjphZGRDb29raWVIb3N0TmFtZShjb25zdCBTdHJpbmcmIGhvc3ROYW1lKQog
ewotICAgIHR5cGVzIHw9IFdlYnNpdGVEYXRhVHlwZTo6Q29va2llczsKLQorICAgIHR5cGVzLmFk
ZChXZWJzaXRlRGF0YVR5cGU6OkNvb2tpZXMpOwogICAgIGNvb2tpZUhvc3ROYW1lcy5hZGQoaG9z
dE5hbWUpOwogfQogCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiB2b2lkIFdlYnNp
dGVEYXRhUmVjb3JkOjphZGRQbHVnaW5EYXRhSG9zdE5hbWUoY29uc3QgU3RyaW5nJiBob3N0TmFt
ZSkKIHsKLSAgICB0eXBlcyB8PSBXZWJzaXRlRGF0YVR5cGU6OlBsdWdJbkRhdGE7Ci0KKyAgICB0
eXBlcy5hZGQoV2Vic2l0ZURhdGFUeXBlOjpQbHVnSW5EYXRhKTsKICAgICBwbHVnaW5EYXRhSG9z
dE5hbWVzLmFkZChob3N0TmFtZSk7CiB9CiAjZW5kaWYKIAogdm9pZCBXZWJzaXRlRGF0YVJlY29y
ZDo6YWRkSFNUU0NhY2hlSG9zdG5hbWUoY29uc3QgU3RyaW5nJiBob3N0TmFtZSkKIHsKLSAgICB0
eXBlcyB8PSBXZWJzaXRlRGF0YVR5cGU6OkhTVFNDYWNoZTsKKyAgICB0eXBlcy5hZGQoV2Vic2l0
ZURhdGFUeXBlOjpIU1RTQ2FjaGUpOwogICAgIEhTVFNDYWNoZUhvc3ROYW1lcy5hZGQoaG9zdE5h
bWUpOwogfQogCkBAIC0xNTcsOCArMTU0LDcgQEAgU3RyaW5nIFdlYnNpdGVEYXRhUmVjb3JkOjp0
b3BQcml2YXRlbHlDbwogCiB2b2lkIFdlYnNpdGVEYXRhUmVjb3JkOjphZGRPcmlnaW5XaXRoQ3Jl
ZGVudGlhbChjb25zdCBTdHJpbmcmIG9yaWdpbikKIHsKLSAgICB0eXBlcyB8PSBXZWJzaXRlRGF0
YVR5cGU6OkNyZWRlbnRpYWxzOwotCisgICAgdHlwZXMuYWRkKFdlYnNpdGVEYXRhVHlwZTo6Q3Jl
ZGVudGlhbHMpOwogICAgIG9yaWdpbnNXaXRoQ3JlZGVudGlhbHMuYWRkKG9yaWdpbik7CiB9CiAK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS0luc3BlY3RvclZpZXdDb250cm9s
bGVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS0luc3Bl
Y3RvclZpZXdDb250cm9sbGVyLm1tCShyZXZpc2lvbiAyMzU1MzkpCisrKyBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9tYWMvV0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbQkod29ya2luZyBjb3B5
KQpAQCAtMjM4LDcgKzIzOCw3IEBAIC0gKHZvaWQpaW5zcGVjdG9yV0tXZWJWaWV3UmVsb2FkOihX
S0luc3AKIAogICAgIE9wdGlvblNldDxXZWJDb3JlOjpSZWxvYWRPcHRpb24+IHJlbG9hZE9wdGlv
bnM7CiAgICAgaWYgKFdlYktpdDo6bGlua2VkT25PckFmdGVyKFdlYktpdDo6U0RLVmVyc2lvbjo6
Rmlyc3RXaXRoRXhwaXJlZE9ubHlSZWxvYWRCZWhhdmlvcikpCi0gICAgICAgIHJlbG9hZE9wdGlv
bnMgfD0gV2ViQ29yZTo6UmVsb2FkT3B0aW9uOjpFeHBpcmVkT25seTsKKyAgICAgICAgcmVsb2Fk
T3B0aW9ucy5hZGQoV2ViQ29yZTo6UmVsb2FkT3B0aW9uOjpFeHBpcmVkT25seSk7CiAKICAgICBf
aW5zcGVjdGVkUGFnZS0+cmVsb2FkKHJlbG9hZE9wdGlvbnMpOwogfQpJbmRleDogU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5k
bGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmNwcAkocmV2aXNpb24gMjM1NTM5KQor
KysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1
bmRsZU5vZGVIYW5kbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzAsOSArMTcwLDkgQEAgc3Rh
dGljIFJlZlB0cjxXZWJJbWFnZT4gaW1hZ2VGb3JSZWN0KEZyYQogCiAgICAgYXV0byBwYWludEJl
aGF2aW9yID0gZnJhbWVWaWV3LT5wYWludEJlaGF2aW9yKCkgfCBQYWludEJlaGF2aW9yOjpGbGF0
dGVuQ29tcG9zaXRpbmdMYXllcnMgfCBQYWludEJlaGF2aW9yOjpTbmFwc2hvdHRpbmc7CiAgICAg
aWYgKG9wdGlvbnMgJiBTbmFwc2hvdE9wdGlvbnNGb3JjZUJsYWNrVGV4dCkKLSAgICAgICAgcGFp
bnRCZWhhdmlvciB8PSBQYWludEJlaGF2aW9yOjpGb3JjZUJsYWNrVGV4dDsKKyAgICAgICAgcGFp
bnRCZWhhdmlvci5hZGQoUGFpbnRCZWhhdmlvcjo6Rm9yY2VCbGFja1RleHQpOwogICAgIGlmIChv
cHRpb25zICYgU25hcHNob3RPcHRpb25zRm9yY2VXaGl0ZVRleHQpCi0gICAgICAgIHBhaW50QmVo
YXZpb3IgfD0gUGFpbnRCZWhhdmlvcjo6Rm9yY2VXaGl0ZVRleHQ7CisgICAgICAgIHBhaW50QmVo
YXZpb3IuYWRkKFBhaW50QmVoYXZpb3I6OkZvcmNlV2hpdGVUZXh0KTsKIAogICAgIGF1dG8gb2xk
UGFpbnRCZWhhdmlvciA9IGZyYW1lVmlldy0+cGFpbnRCZWhhdmlvcigpOwogICAgIGZyYW1lVmll
dy0+c2V0UGFpbnRCZWhhdmlvcihwYWludEJlaGF2aW9yKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcAkocmV2aXNpb24gMjM1NTM5KQorKysg
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRs
ZVJhbmdlSGFuZGxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUwLDExICsxNTAsMTIgQEAgUmVm
UHRyPFdlYkltYWdlPiBJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZAogICAgIGdyYXBoaWNzQ29udGV4
dC0+dHJhbnNsYXRlKC1wYWludFJlY3QubG9jYXRpb24oKSk7CiAKICAgICBPcHRpb25TZXQ8UGFp
bnRCZWhhdmlvcj4gb2xkUGFpbnRCZWhhdmlvciA9IGZyYW1lVmlldy0+cGFpbnRCZWhhdmlvcigp
OwotICAgIE9wdGlvblNldDxQYWludEJlaGF2aW9yPiBwYWludEJlaGF2aW9yID0gb2xkUGFpbnRC
ZWhhdmlvciB8IFBhaW50QmVoYXZpb3I6OlNlbGVjdGlvbk9ubHkgfCBQYWludEJlaGF2aW9yOjpG
bGF0dGVuQ29tcG9zaXRpbmdMYXllcnMgfCBQYWludEJlaGF2aW9yOjpTbmFwc2hvdHRpbmc7Cisg
ICAgT3B0aW9uU2V0PFBhaW50QmVoYXZpb3I+IHBhaW50QmVoYXZpb3IgPSBvbGRQYWludEJlaGF2
aW9yOworICAgIHBhaW50QmVoYXZpb3IuYWRkKHsgUGFpbnRCZWhhdmlvcjo6U2VsZWN0aW9uT25s
eSwgUGFpbnRCZWhhdmlvcjo6RmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzLCBQYWludEJlaGF2aW9y
OjpTbmFwc2hvdHRpbmcgfSk7CiAgICAgaWYgKG9wdGlvbnMgJiBTbmFwc2hvdE9wdGlvbnNGb3Jj
ZUJsYWNrVGV4dCkKLSAgICAgICAgcGFpbnRCZWhhdmlvciB8PSBQYWludEJlaGF2aW9yOjpGb3Jj
ZUJsYWNrVGV4dDsKKyAgICAgICAgcGFpbnRCZWhhdmlvci5hZGQoUGFpbnRCZWhhdmlvcjo6Rm9y
Y2VCbGFja1RleHQpOwogICAgIGlmIChvcHRpb25zICYgU25hcHNob3RPcHRpb25zRm9yY2VXaGl0
ZVRleHQpCi0gICAgICAgIHBhaW50QmVoYXZpb3IgfD0gUGFpbnRCZWhhdmlvcjo6Rm9yY2VXaGl0
ZVRleHQ7CisgICAgICAgIHBhaW50QmVoYXZpb3IuYWRkKFBhaW50QmVoYXZpb3I6OkZvcmNlV2hp
dGVUZXh0KTsKIAogICAgIGZyYW1lVmlldy0+c2V0UGFpbnRCZWhhdmlvcihwYWludEJlaGF2aW9y
KTsKICAgICBvd25lckRvY3VtZW50LnVwZGF0ZUxheW91dCgpOwpJbmRleDogU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmNwcAkocmV2aXNp
b24gMjM1NTM5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRy
b2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NiwxNSArNTYsMTUgQEAgV2ViQ29yZTo6Rmlu
ZE9wdGlvbnMgY29yZShGaW5kT3B0aW9ucyBvcAogewogICAgIFdlYkNvcmU6OkZpbmRPcHRpb25z
IHJlc3VsdDsKICAgICBpZiAob3B0aW9ucyAmIEZpbmRPcHRpb25zQ2FzZUluc2Vuc2l0aXZlKQot
ICAgICAgICByZXN1bHQgfD0gV2ViQ29yZTo6Q2FzZUluc2Vuc2l0aXZlOworICAgICAgICByZXN1
bHQuYWRkKFdlYkNvcmU6OkNhc2VJbnNlbnNpdGl2ZSk7CiAgICAgaWYgKG9wdGlvbnMgJiBGaW5k
T3B0aW9uc0F0V29yZFN0YXJ0cykKLSAgICAgICAgcmVzdWx0IHw9IFdlYkNvcmU6OkF0V29yZFN0
YXJ0czsKKyAgICAgICAgcmVzdWx0LmFkZChXZWJDb3JlOjpBdFdvcmRTdGFydHMpOwogICAgIGlm
IChvcHRpb25zICYgRmluZE9wdGlvbnNUcmVhdE1lZGlhbENhcGl0YWxBc1dvcmRTdGFydCkKLSAg
ICAgICAgcmVzdWx0IHw9IFdlYkNvcmU6OlRyZWF0TWVkaWFsQ2FwaXRhbEFzV29yZFN0YXJ0Owor
ICAgICAgICByZXN1bHQuYWRkKFdlYkNvcmU6OlRyZWF0TWVkaWFsQ2FwaXRhbEFzV29yZFN0YXJ0
KTsKICAgICBpZiAob3B0aW9ucyAmIEZpbmRPcHRpb25zQmFja3dhcmRzKQotICAgICAgICByZXN1
bHQgfD0gV2ViQ29yZTo6QmFja3dhcmRzOworICAgICAgICByZXN1bHQuYWRkKFdlYkNvcmU6OkJh
Y2t3YXJkcyk7CiAgICAgaWYgKG9wdGlvbnMgJiBGaW5kT3B0aW9uc1dyYXBBcm91bmQpCi0gICAg
ICAgIHJlc3VsdCB8PSBXZWJDb3JlOjpXcmFwQXJvdW5kOworICAgICAgICByZXN1bHQuYWRkKFdl
YkNvcmU6OldyYXBBcm91bmQpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTIwNCw3ICsy
MDQsNyBAQCB2b2lkIEZpbmRDb250cm9sbGVyOjpmaW5kU3RyaW5nKGNvbnN0IFN0CiAgICAgLy8g
d2UgbmVlZCB0byBhdm9pZCBzZW5kaW5nIHRoZSBub24tcGFpbnRlZCBzZWxlY3Rpb24gY2hhbmdl
IHRvIHRoZSBVSSBwcm9jZXNzCiAgICAgLy8gc28gdGhhdCBpdCBkb2VzIG5vdCBjbGVhciB0aGUg
c2VsZWN0aW9uIG91dCBmcm9tIHVuZGVyIHVzLgogI2lmIFBMQVRGT1JNKElPUykKLSAgICBjb3Jl
T3B0aW9ucyB8PSBEb05vdFJldmVhbFNlbGVjdGlvbjsKKyAgICBjb3JlT3B0aW9ucy5hZGQoRG9O
b3RSZXZlYWxTZWxlY3Rpb24pOwogI2VuZGlmCiAKICAgICB3aWxsRmluZFN0cmluZygpOwpJbmRl
eDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMjM1NTM5KQorKysgU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUg
QEAKKzIwMTgtMDgtMzEgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgorCisgICAg
ICAgIFJlcGxhY2UgT3B0aW9uU2V0IHw9IGFuZCAtPSBvcGVyYXRvcnMgd2l0aCBhZGQoKSBhbmQg
cmVtb3ZlKCkgZnVuY3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xODkxNjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZyYW1lIF9k
cmF3UmVjdDpjb250ZW50c09ubHk6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgor
ICAgICAgICAoY29yZU9wdGlvbnMpOgorCiAyMDE4LTA4LTMxICBGcmVkZXJpYyBXYW5nICA8Zndh
bmdAaWdhbGlhLmNvbT4KIAogICAgICAgICBCdWcgMTgyMDUzIC0gW0NTU09NIFZpZXddIEltcGxl
bWVudCBzdGFuZGFyZCBiZWhhdmlvciBmb3Igc2Nyb2xsaW5nRWxlbWVudApJbmRleDogU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCShyZXZpc2lvbiAyMzU1Mzkp
CisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC02NDksMTYgKzY0OSwxNiBAQCAtICh2b2lkKV9kcmF3UmVjdDooTlNSZWN0KXJl
Y3QgY29udGVudHNPCiAgICAgICAgIC8vIEZvciBzdWJmcmFtZXMsIHdlIG5lZWQgdG8gaW5oZXJp
dCB0aGUgcGFpbnQgYmVoYXZpb3IgZnJvbSBvdXIgcGFyZW50CiAgICAgICAgIGlmIChGcmFtZVZp
ZXcqIHBhcmVudFZpZXcgPSBwYXJlbnRGcmFtZSA/IHBhcmVudEZyYW1lLT52aWV3KCkgOiBudWxs
cHRyKSB7CiAgICAgICAgICAgICBpZiAocGFyZW50Vmlldy0+cGFpbnRCZWhhdmlvcigpLmNvbnRh
aW5zKFBhaW50QmVoYXZpb3I6OkZsYXR0ZW5Db21wb3NpdGluZ0xheWVycykpCi0gICAgICAgICAg
ICAgICAgcGFpbnRCZWhhdmlvciB8PSBQYWludEJlaGF2aW9yOjpGbGF0dGVuQ29tcG9zaXRpbmdM
YXllcnM7CisgICAgICAgICAgICAgICAgcGFpbnRCZWhhdmlvci5hZGQoUGFpbnRCZWhhdmlvcjo6
RmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYg
KHBhcmVudFZpZXctPnBhaW50QmVoYXZpb3IoKS5jb250YWlucyhQYWludEJlaGF2aW9yOjpTbmFw
c2hvdHRpbmcpKQotICAgICAgICAgICAgICAgIHBhaW50QmVoYXZpb3IgfD0gUGFpbnRCZWhhdmlv
cjo6U25hcHNob3R0aW5nOworICAgICAgICAgICAgICAgIHBhaW50QmVoYXZpb3IuYWRkKFBhaW50
QmVoYXZpb3I6OlNuYXBzaG90dGluZyk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChw
YXJlbnRWaWV3LT5wYWludEJlaGF2aW9yKCkuY29udGFpbnMoUGFpbnRCZWhhdmlvcjo6VGlsZUZp
cnN0UGFpbnQpKQotICAgICAgICAgICAgICAgIHBhaW50QmVoYXZpb3IgfD0gUGFpbnRCZWhhdmlv
cjo6VGlsZUZpcnN0UGFpbnQ7CisgICAgICAgICAgICAgICAgcGFpbnRCZWhhdmlvci5hZGQoUGFp
bnRCZWhhdmlvcjo6VGlsZUZpcnN0UGFpbnQpOwogICAgICAgICB9CiAgICAgfSBlbHNlCi0gICAg
ICAgIHBhaW50QmVoYXZpb3IgfD0gW3NlbGYgX3BhaW50QmVoYXZpb3JGb3JEZXN0aW5hdGlvbkNv
bnRleHQ6Y3R4XTsKKyAgICAgICAgcGFpbnRCZWhhdmlvci5hZGQoW3NlbGYgX3BhaW50QmVoYXZp
b3JGb3JEZXN0aW5hdGlvbkNvbnRleHQ6Y3R4XSk7CiAgICAgICAgIAogICAgIHZpZXctPnNldFBh
aW50QmVoYXZpb3IocGFpbnRCZWhhdmlvcik7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHJldmlzaW9uIDIzNTUzOSkKKysrIFNvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtNTcxLDE3
ICs1NzEsMTcgQEAgRmluZE9wdGlvbnMgY29yZU9wdGlvbnMoV2ViRmluZE9wdGlvbnMgbwogewog
ICAgIEZpbmRPcHRpb25zIGZpbmRPcHRpb25zOwogICAgIGlmIChvcHRpb25zICYgV2ViRmluZE9w
dGlvbnNDYXNlSW5zZW5zaXRpdmUpCi0gICAgICAgIGZpbmRPcHRpb25zIHw9IENhc2VJbnNlbnNp
dGl2ZTsKKyAgICAgICAgZmluZE9wdGlvbnMuYWRkKENhc2VJbnNlbnNpdGl2ZSk7CiAgICAgaWYg
KG9wdGlvbnMgJiBXZWJGaW5kT3B0aW9uc0F0V29yZFN0YXJ0cykKLSAgICAgICAgZmluZE9wdGlv
bnMgfD0gQXRXb3JkU3RhcnRzOworICAgICAgICBmaW5kT3B0aW9ucy5hZGQoQXRXb3JkU3RhcnRz
KTsKICAgICBpZiAob3B0aW9ucyAmIFdlYkZpbmRPcHRpb25zVHJlYXRNZWRpYWxDYXBpdGFsQXNX
b3JkU3RhcnQpCi0gICAgICAgIGZpbmRPcHRpb25zIHw9IFRyZWF0TWVkaWFsQ2FwaXRhbEFzV29y
ZFN0YXJ0OworICAgICAgICBmaW5kT3B0aW9ucy5hZGQoVHJlYXRNZWRpYWxDYXBpdGFsQXNXb3Jk
U3RhcnQpOwogICAgIGlmIChvcHRpb25zICYgV2ViRmluZE9wdGlvbnNCYWNrd2FyZHMpCi0gICAg
ICAgIGZpbmRPcHRpb25zIHw9IEJhY2t3YXJkczsKKyAgICAgICAgZmluZE9wdGlvbnMuYWRkKEJh
Y2t3YXJkcyk7CiAgICAgaWYgKG9wdGlvbnMgJiBXZWJGaW5kT3B0aW9uc1dyYXBBcm91bmQpCi0g
ICAgICAgIGZpbmRPcHRpb25zIHw9IFdyYXBBcm91bmQ7CisgICAgICAgIGZpbmRPcHRpb25zLmFk
ZChXcmFwQXJvdW5kKTsKICAgICBpZiAob3B0aW9ucyAmIFdlYkZpbmRPcHRpb25zU3RhcnRJblNl
bGVjdGlvbikKLSAgICAgICAgZmluZE9wdGlvbnMgfD0gU3RhcnRJblNlbGVjdGlvbjsKKyAgICAg
ICAgZmluZE9wdGlvbnMuYWRkKFN0YXJ0SW5TZWxlY3Rpb24pOwogICAgIHJldHVybiBmaW5kT3B0
aW9uczsKIH0KIApJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0No
YW5nZUxvZwkocmV2aXNpb24gMjM1NTM5KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTgtMDgtMzEgIEFudHRpIEtvaXZpc3RvICA8YW50dGlA
YXBwbGUuY29tPgorCisgICAgICAgIFJlcGxhY2UgT3B0aW9uU2V0IHw9IGFuZCAtPSBvcGVyYXRv
cnMgd2l0aCBhZGQoKSBhbmQgcmVtb3ZlKCkgZnVuY3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODkxNjkKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL09w
dGlvblNldC5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKwogMjAxOC0wOC0z
MSAgRnJlZGVyaWMgV2FuZyAgPGZ3YW5nQGlnYWxpYS5jb20+CiAKICAgICAgICAgQnVnIDE4MjA1
MyAtIFtDU1NPTSBWaWV3XSBJbXBsZW1lbnQgc3RhbmRhcmQgYmVoYXZpb3IgZm9yIHNjcm9sbGlu
Z0VsZW1lbnQKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL09wdGlvblNldC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvT3B0aW9uU2V0
LmNwcAkocmV2aXNpb24gMjM1NTM5KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
T3B0aW9uU2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTYsMTYgKzk2LDI5IEBAIFRFU1QoV1RG
X09wdGlvblNldCwgTWludXMpCiAgICAgRVhQRUNUX1RSVUUoKHNldCAtIHNldCkuaXNFbXB0eSgp
KTsKIH0KIAotVEVTVChXVEZfT3B0aW9uU2V0LCBNaW51c0VxdWFsKQorVEVTVChXVEZfT3B0aW9u
U2V0LCBBZGRBbmRSZW1vdmUpCiB7Ci0gICAgT3B0aW9uU2V0PEV4YW1wbGVGbGFncz4gc2V0IHsg
RXhhbXBsZUZsYWdzOjpBLCBFeGFtcGxlRmxhZ3M6OkIsIEV4YW1wbGVGbGFnczo6QyB9OworICAg
IE9wdGlvblNldDxFeGFtcGxlRmxhZ3M+IHNldDsKIAotICAgIEVYUEVDVF9UUlVFKCgoc2V0IC09
IEV4YW1wbGVGbGFnczo6QSkgPT0gT3B0aW9uU2V0PEV4YW1wbGVGbGFncz4geyBFeGFtcGxlRmxh
Z3M6OkIsIEV4YW1wbGVGbGFnczo6QyB9KSk7Ci0gICAgRVhQRUNUX1RSVUUoKHNldCA9PSBPcHRp
b25TZXQ8RXhhbXBsZUZsYWdzPiB7IEV4YW1wbGVGbGFnczo6QiwgRXhhbXBsZUZsYWdzOjpDIH0p
KTsKLSAgICBFWFBFQ1RfVFJVRSgoKHNldCAtPSBFeGFtcGxlRmxhZ3M6OkQpID09IE9wdGlvblNl
dDxFeGFtcGxlRmxhZ3M+IHsgRXhhbXBsZUZsYWdzOjpCLCBFeGFtcGxlRmxhZ3M6OkMgfSkpOwot
ICAgIEVYUEVDVF9UUlVFKChzZXQgPT0gT3B0aW9uU2V0PEV4YW1wbGVGbGFncz4geyBFeGFtcGxl
RmxhZ3M6OkIsIEV4YW1wbGVGbGFnczo6QyB9KSk7Ci0gICAgRVhQRUNUX1RSVUUoKHNldCAtPSBz
ZXQpLmlzRW1wdHkoKSk7Ci0gICAgRVhQRUNUX1RSVUUoc2V0LmlzRW1wdHkoKSk7CisgICAgc2V0
LmFkZChFeGFtcGxlRmxhZ3M6OkEpOworICAgIEVYUEVDVF9UUlVFKHNldC5jb250YWlucyhFeGFt
cGxlRmxhZ3M6OkEpKTsKKyAgICBFWFBFQ1RfRkFMU0Uoc2V0LmNvbnRhaW5zKEV4YW1wbGVGbGFn
czo6QikpOworICAgIEVYUEVDVF9GQUxTRShzZXQuY29udGFpbnMoRXhhbXBsZUZsYWdzOjpDKSk7
CisKKyAgICBzZXQuYWRkKHsgRXhhbXBsZUZsYWdzOjpCLCBFeGFtcGxlRmxhZ3M6OkMgfSk7Cisg
ICAgRVhQRUNUX1RSVUUoc2V0LmNvbnRhaW5zKEV4YW1wbGVGbGFnczo6QSkpOworICAgIEVYUEVD
VF9UUlVFKHNldC5jb250YWlucyhFeGFtcGxlRmxhZ3M6OkIpKTsKKyAgICBFWFBFQ1RfVFJVRShz
ZXQuY29udGFpbnMoRXhhbXBsZUZsYWdzOjpDKSk7CisKKyAgICBzZXQucmVtb3ZlKEV4YW1wbGVG
bGFnczo6Qik7CisgICAgRVhQRUNUX1RSVUUoc2V0LmNvbnRhaW5zKEV4YW1wbGVGbGFnczo6QSkp
OworICAgIEVYUEVDVF9GQUxTRShzZXQuY29udGFpbnMoRXhhbXBsZUZsYWdzOjpCKSk7CisgICAg
RVhQRUNUX1RSVUUoc2V0LmNvbnRhaW5zKEV4YW1wbGVGbGFnczo6QykpOworCisgICAgc2V0LnJl
bW92ZSh7IEV4YW1wbGVGbGFnczo6QSwgRXhhbXBsZUZsYWdzOjpDIH0pOworICAgIEVYUEVDVF9G
QUxTRShzZXQuY29udGFpbnMoRXhhbXBsZUZsYWdzOjpBKSk7CisgICAgRVhQRUNUX0ZBTFNFKHNl
dC5jb250YWlucyhFeGFtcGxlRmxhZ3M6OkIpKTsKKyAgICBFWFBFQ1RfRkFMU0Uoc2V0LmNvbnRh
aW5zKEV4YW1wbGVGbGFnczo6QykpOwogfQogCiBURVNUKFdURl9PcHRpb25TZXQsIENvbnRhaW5z
VHdvRmxhZ3MpCkBAIC0xNDEsMTUgKzE1NCw2IEBAIFRFU1QoV1RGX09wdGlvblNldCwgQ29udGFp
bnNUd29GbGFnczMpCiAgICAgRVhQRUNUX0ZBTFNFKHNldC5jb250YWlucyhFeGFtcGxlRmxhZ3M6
OkMpKTsKIH0KIAotVEVTVChXVEZfT3B0aW9uU2V0LCBPcGVyYXRvckJpdHdpc2VPcikKLXsKLSAg
ICBPcHRpb25TZXQ8RXhhbXBsZUZsYWdzPiBzZXQgPSBFeGFtcGxlRmxhZ3M6OkE7Ci0gICAgc2V0
IHw9IEV4YW1wbGVGbGFnczo6QzsKLSAgICBFWFBFQ1RfVFJVRShzZXQuY29udGFpbnMoRXhhbXBs
ZUZsYWdzOjpBKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKHNldC5jb250YWlucyhFeGFtcGxlRmxhZ3M6
OkIpKTsKLSAgICBFWFBFQ1RfVFJVRShzZXQuY29udGFpbnMoRXhhbXBsZUZsYWdzOjpDKSk7Ci19
Ci0KIFRFU1QoV1RGX09wdGlvblNldCwgRW1wdHlPcHRpb25TZXRUb1Jhd1ZhbHVlVG9PcHRpb25T
ZXQpCiB7CiAgICAgT3B0aW9uU2V0PEV4YW1wbGVGbGFncz4gc2V0OwpAQCAtMzAyLDEwICszMDYs
MTAgQEAgVEVTVChXVEZfT3B0aW9uU2V0LCBOZXh0SXRlbUFmdGVyTGFyZ2VzdAogVEVTVChXVEZf
T3B0aW9uU2V0LCBJdGVyYXRpb25PcmRlclRoZVNhbWVSZWdhcmRsZXNzT2ZJbnNlcnRpb25PcmRl
cikKIHsKICAgICBPcHRpb25TZXQ8RXhhbXBsZUZsYWdzPiBzZXQxID0gRXhhbXBsZUZsYWdzOjpD
OwotICAgIHNldDEgfD0gRXhhbXBsZUZsYWdzOjpBOworICAgIHNldDEuYWRkKEV4YW1wbGVGbGFn
czo6QSk7CiAKICAgICBPcHRpb25TZXQ8RXhhbXBsZUZsYWdzPiBzZXQyID0gRXhhbXBsZUZsYWdz
OjpBOwotICAgIHNldDIgfD0gRXhhbXBsZUZsYWdzOjpDOworICAgIHNldDIuYWRkKEV4YW1wbGVG
bGFnczo6Qyk7CiAKICAgICBPcHRpb25TZXQ8RXhhbXBsZUZsYWdzPjo6aXRlcmF0b3IgaXQxID0g
c2V0MS5iZWdpbigpOwogICAgIE9wdGlvblNldDxFeGFtcGxlRmxhZ3M+OjppdGVyYXRvciBpdDIg
PSBzZXQyLmJlZ2luKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>348628</attachid>
            <date>2018-08-31 03:03:05 -0700</date>
            <delta_ts>2018-08-31 04:00:26 -0700</delta_ts>
            <desc>patch</desc>
            <filename>optionset-add-remove-6.patch</filename>
            <type>text/plain</type>
            <size>116914</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyMzU1MzkpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDE4LTA4LTMxICBBbnR0aSBLb2l2aXN0byAgPGFu
dHRpQGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIE9wdGlvblNldCB8PSBhbmQgLT0gb3Bl
cmF0b3JzIHdpdGggYWRkKCkgYW5kIHJlbW92ZSgpIGZ1bmN0aW9ucworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg5MTY5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wcm92ZSBjb2RlIHJlYWRhYmlsaXR5
LgorCisgICAgICAgICogd3RmL09wdGlvblNldC5oOgorICAgICAgICAoV1RGOjpPcHRpb25TZXQ6
OmFkZCk6CisgICAgICAgIChXVEY6Ok9wdGlvblNldDo6cmVtb3ZlKToKKyAgICAgICAgKFdURjo6
T3B0aW9uU2V0OjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdURjo6T3B0aW9uU2V0OjpvcGVyYXRv
ciE9KToKKyAgICAgICAgKFdURjo6T3B0aW9uU2V0OjpvcGVyYXRvcnw9KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdURjo6T3B0aW9uU2V0OjpvcGVyYXRvci09KTogRGVsZXRlZC4KKyAgICAgICAgKiB3
dGYvUHJvY2Vzc1ByaXZpbGVnZS5jcHA6CisgICAgICAgIChXVEY6OmFkZFByb2Nlc3NQcml2aWxl
Z2UpOgorICAgICAgICAoV1RGOjpyZW1vdmVQcm9jZXNzUHJpdmlsZWdlKToKKwogMjAxOC0wOC0z
MCAgRG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgogCiAgICAgICAgIFtDTWFr
ZV0gUmVwbGFjZSBBVkZvdW5kYXRpb25TdXBwb3J0LnB5IHVzaW5nIENNYWtlCkluZGV4OiBTb3Vy
Y2UvV1RGL3d0Zi9PcHRpb25TZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9PcHRp
b25TZXQuaAkocmV2aXNpb24gMjM1NTM5KQorKysgU291cmNlL1dURi93dGYvT3B0aW9uU2V0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTExMSwyNiArMTExLDI0IEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuICgqdGhpcyAmIG9wdGlvblNldCkgPT0gb3B0aW9uU2V0OwogICAgIH0KIAotICAgIGNvbnN0
ZXhwciBmcmllbmQgYm9vbCBvcGVyYXRvcj09KE9wdGlvblNldCBsaHMsIE9wdGlvblNldCByaHMp
CisgICAgY29uc3RleHByIHZvaWQgYWRkKE9wdGlvblNldCBvcHRpb25TZXQpCiAgICAgewotICAg
ICAgICByZXR1cm4gbGhzLm1fc3RvcmFnZSA9PSByaHMubV9zdG9yYWdlOworICAgICAgICBtX3N0
b3JhZ2UgfD0gb3B0aW9uU2V0Lm1fc3RvcmFnZTsKICAgICB9CiAKLSAgICBjb25zdGV4cHIgZnJp
ZW5kIGJvb2wgb3BlcmF0b3IhPShPcHRpb25TZXQgbGhzLCBPcHRpb25TZXQgcmhzKQorICAgIGNv
bnN0ZXhwciB2b2lkIHJlbW92ZShPcHRpb25TZXQgb3B0aW9uU2V0KQogICAgIHsKLSAgICAgICAg
cmV0dXJuIGxocy5tX3N0b3JhZ2UgIT0gcmhzLm1fc3RvcmFnZTsKKyAgICAgICAgbV9zdG9yYWdl
ICY9IH5vcHRpb25TZXQubV9zdG9yYWdlOwogICAgIH0KIAotICAgIGZyaWVuZCBPcHRpb25TZXQm
IG9wZXJhdG9yfD0oT3B0aW9uU2V0JiBsaHMsIE9wdGlvblNldCByaHMpCisgICAgY29uc3RleHBy
IGZyaWVuZCBib29sIG9wZXJhdG9yPT0oT3B0aW9uU2V0IGxocywgT3B0aW9uU2V0IHJocykKICAg
ICB7Ci0gICAgICAgIGxocy5tX3N0b3JhZ2UgfD0gcmhzLm1fc3RvcmFnZTsKLSAgICAgICAgcmV0
dXJuIGxoczsKKyAgICAgICAgcmV0dXJuIGxocy5tX3N0b3JhZ2UgPT0gcmhzLm1fc3RvcmFnZTsK
ICAgICB9CiAKLSAgICBmcmllbmQgT3B0aW9uU2V0JiBvcGVyYXRvci09KE9wdGlvblNldCYgbGhz
LCBPcHRpb25TZXQgcmhzKQorICAgIGNvbnN0ZXhwciBmcmllbmQgYm9vbCBvcGVyYXRvciE9KE9w
dGlvblNldCBsaHMsIE9wdGlvblNldCByaHMpCiAgICAgewotICAgICAgICBsaHMubV9zdG9yYWdl
ICY9IH5yaHMubV9zdG9yYWdlOwotICAgICAgICByZXR1cm4gbGhzOworICAgICAgICByZXR1cm4g
bGhzLm1fc3RvcmFnZSAhPSByaHMubV9zdG9yYWdlOwogICAgIH0KIAogICAgIGNvbnN0ZXhwciBm
cmllbmQgT3B0aW9uU2V0IG9wZXJhdG9yfChPcHRpb25TZXQgbGhzLCBPcHRpb25TZXQgcmhzKQpJ
bmRleDogU291cmNlL1dURi93dGYvUHJvY2Vzc1ByaXZpbGVnZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dURi93dGYvUHJvY2Vzc1ByaXZpbGVnZS5jcHAJKHJldmlzaW9uIDIzNTUzOSkKKysr
IFNvdXJjZS9XVEYvd3RmL1Byb2Nlc3NQcml2aWxlZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
NywxMiArNTcsMTIgQEAgYm9vbCBoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZwog
CiB2b2lkIGFkZFByb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZSBwcml2aWxlZ2UpCiB7
Ci0gICAgcHJvY2Vzc1ByaXZpbGVnZXMoKSB8PSBwcml2aWxlZ2U7CisgICAgcHJvY2Vzc1ByaXZp
bGVnZXMoKS5hZGQocHJpdmlsZWdlKTsKIH0KIAogdm9pZCByZW1vdmVQcm9jZXNzUHJpdmlsZWdl
KFByb2Nlc3NQcml2aWxlZ2UgcHJpdmlsZWdlKQogewotICAgIHByb2Nlc3NQcml2aWxlZ2VzKCkg
PSBwcm9jZXNzUHJpdmlsZWdlcygpIC0gcHJpdmlsZWdlOworICAgIHByb2Nlc3NQcml2aWxlZ2Vz
KCkucmVtb3ZlKHByaXZpbGVnZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdURgpJbmRleDogU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkocmV2aXNpb24gMjM1NTM5KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTE5IEBACisyMDE4LTA4LTMxICBBbnR0aSBLb2l2aXN0byAg
PGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIE9wdGlvblNldCB8PSBhbmQgLT0g
b3BlcmF0b3JzIHdpdGggYWRkKCkgYW5kIHJlbW92ZSgpIGZ1bmN0aW9ucworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg5MTY5CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVj
dDo6cmFuZ2VPZlN0cmluZ0Nsb3Nlc3RUb1JhbmdlSW5EaXJlY3Rpb24gY29uc3QpOgorICAgICAg
ICAqIGNzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRleHREZWNvcmF0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRleHRFbXBoYXNpc1Bvc2l0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRleHRVbmRl
cmxpbmVQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6
OmNvbnZlcnRUZXh0RGVjb3JhdGlvblNraXApOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWls
ZGVyQ29udmVydGVyOjpjb252ZXJ0U3BlYWtBcyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1
aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRIYW5naW5nUHVuY3R1YXRpb24pOgorICAgICAgICAqIGNz
cy9wYXJzZXIvQ1NTUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFy
c2VTeXN0ZW1Db2xvcik6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50OjpzdHlsZUNvbG9yT3B0aW9ucyBjb25zdCk6CisgICAgICAgICogZG9t
L0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dE1hcmtlckNvbnRyb2xsZXI6OmFkZE1hcmtlcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dE1hcmtlckNvbnRyb2xsZXI6OnJlbW92ZU1hcmtlcnMpOgorICAgICAgICAqIGRvbS9TY3JpcHRl
ZEFuaW1hdGlvbkNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0ZWRBbmlt
YXRpb25Db250cm9sbGVyOjphZGRUaHJvdHRsaW5nUmVhc29uKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcjo6cmVtb3ZlVGhyb3R0bGluZ1JlYXNvbik6Cisg
ICAgICAgICogZG9tL1NlY3VyaXR5Q29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJp
dHlDb250ZXh0OjpzZXRGb3VuZE1peGVkQ29udGVudCk6CisgICAgICAgICogZG9tL1VJRXZlbnRX
aXRoS2V5U3RhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VUlFdmVudFdpdGhLZXlTdGF0ZTo6
bW9kaWZpZXJzRnJvbUluaXRpYWxpemVyKToKKyAgICAgICAgKFdlYkNvcmU6OlVJRXZlbnRXaXRo
S2V5U3RhdGU6OnNldE1vZGlmaWVyS2V5cyk6CisgICAgICAgICogZG9tL1VzZXJBY3Rpb25FbGVt
ZW50U2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJBY3Rpb25FbGVtZW50U2V0OjpzZXRG
bGFncyk6CisgICAgICAgICogZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDb21wb3NpdGVFZGl0Q29tbWFuZDo6bW92ZVBhcmFncmFwaHMpOgorICAg
ICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cmVw
bGFjZVNlbGVjdGlvbldpdGhGcmFnbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmFw
cGxpZWRFZGl0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6bWFya01pc3NwZWxsaW5n
c0FmdGVyVHlwaW5nVG9Xb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6bWFya01pc3Nw
ZWxsaW5nc0FuZEJhZEdyYW1tYXIpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpyZXNvbHZl
VGV4dENoZWNraW5nVHlwZU1hc2spOgorICAgICAgICAqIGVkaXRpbmcvRnJhbWVTZWxlY3Rpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246Om1vdmVXaXRob3V0VmFsaWRh
dGlvblRvKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpzZXRTZWxlY3RlZFJh
bmdlKToKKyAgICAgICAgKiBlZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmg6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZVNlbGVjdGlvbjo6ZGVmYXVsdFNldFNlbGVjdGlvbk9wdGlvbnMpOgorICAgICAg
ICAqIGVkaXRpbmcvTW92ZVNlbGVjdGlvbkNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TW92ZVNlbGVjdGlvbkNvbW1hbmQ6OmRvQXBwbHkpOgorICAgICAgICAqIGVkaXRpbmcvU3BlbGxD
aGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWxsQ2hlY2tlcjo6ZGlkQ2hlY2tTdWNj
ZWVkKToKKyAgICAgICAgKiBlZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0Q2hlY2tpbmdIZWxwZXI6OmZpbmRGaXJzdE1pc3NwZWxsaW5nT3JCYWRH
cmFtbWFyKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDaGVja2luZ0hlbHBlcjo6Z3Vlc3Nlc0Zv
ck1pc3NwZWxsZWRPclVuZ3JhbW1hdGljYWxSYW5nZSBjb25zdCk6CisgICAgICAgICogZWRpdGlu
Zy9UZXh0SXRlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VhcmNoQnVmZmVyOjpTZWFy
Y2hCdWZmZXIpOgorICAgICAgICAqIGh0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTEFuY2hvckVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OnJlbG9hZCk6CisgICAgICAgICogcGFnZS9Db250ZXh0
TWVudUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVDb250cm9s
bGVyOjpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZCk6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpmaW5kIGNvbnN0KToKKyAgICAgICAg
KiBwYWdlL0RyYWdDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9s
bGVyOjpjb25jbHVkZUVkaXREcmFnKToKKyAgICAgICAgKiBwYWdlL0ZyYW1lU25hcHNob3R0aW5n
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNuYXBzaG90RnJhbWVSZWN0V2l0aENsaXApOgorICAg
ICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnVwZGF0ZUxheWVy
UG9zaXRpb25GbGFncyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OndpbGxQYWludENv
bnRlbnRzKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFn
ZTo6c2V0SXNWaXNpYmxlKToKKyAgICAgICAgKiBwYWdlL1BlcmZvcm1hbmNlT2JzZXJ2ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybWFuY2VPYnNlcnZlcjo6b2JzZXJ2ZSk6CisgICAg
ICAgICogcGFnZS9UZXh0SW5kaWNhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRJbmRp
Y2F0b3I6OmNyZWF0ZVdpdGhSYW5nZSk6CisgICAgICAgICogcGFnZS9XaW5kb3dGZWF0dXJlcy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZURpc2FibGVkQWRhcHRhdGlvbnMpOgorICAgICAg
ICAqIHBhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5oOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGVudFNlY3VyaXR5UG9saWN5OjphZGRIYXNoQWxnb3JpdGhtc0ZvcklubGluZVNjcmlwdHMp
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5OjphZGRIYXNoQWxnb3Jp
dGhtc0ZvcklubGluZVN0eWxlc2hlZXRzKToKKyAgICAgICAgKiBwYWdlL2NzcC9Db250ZW50U2Vj
dXJpdHlQb2xpY3lTb3VyY2VMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1
cml0eVBvbGljeVNvdXJjZUxpc3Q6OnBhcnNlSGFzaFNvdXJjZSk6CisgICAgICAgICogcGxhdGZv
cm0vUGxhdGZvcm1FdmVudC5oOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6UGxh
dGZvcm1FdmVudCk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1BsYXRmb3JtRXZlbnRGYWN0b3J5
SU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6bW9kaWZpZXJzRm9yRXZlbnQpOgorICAgICAgICAq
IHBsYXRmb3JtL21hYy9QbGF0Zm9ybUV2ZW50RmFjdG9yeU1hYy5tbToKKyAgICAgICAgKFdlYkNv
cmU6Om1vZGlmaWVyc0ZvckV2ZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnVwZGF0ZUxheWVyUG9zaXRpb25z
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjp1cGRhdGVMYXllclBvc2l0aW9uc0Fm
dGVyU2Nyb2xsKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWludExheWVyKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWludExheWVyQ29udGVudHNBbmRSZWZs
ZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWludExheWVyQ29udGVu
dHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50Rm9yZWdyb3VuZEZvckZy
YWdtZW50cyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnBhaW50SW50b0xheWVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6cGFpbnRDb250ZW50cyk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlYXNvbnNGb3JDb21wb3NpdGluZyBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZVNjcm9sbENv
b3JkaW5hdGVkU3RhdHVzKToKKyAgICAgICAgKiByZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWlu
dGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbGxlY3RTdHlsZXNGb3JSZW5kZXJlcik6Cisg
ICAgICAgICogcmVuZGVyaW5nL1RleHRQYWludFN0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNvbXB1dGVUZXh0UGFpbnRTdHlsZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRl
clN0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpjaGFuZ2VSZXF1aXJl
c0xheW91dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Y2hhbmdlUmVx
dWlyZXNMYXllclJlcGFpbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6
OmNoYW5nZVJlcXVpcmVzUmVwYWludCBjb25zdCk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5h
bHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VGaW5kT3B0aW9ucyk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnRlcm5hbHM6OmZvcmNlUmVsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVy
bmFsczo6c2V0UGFnZVZpc2liaWxpdHkpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpz
ZXRQYWdlSXNGb2N1c2VkQW5kQWN0aXZlKToKKwogMjAxOC0wOC0zMSAgRnJlZGVyaWMgV2FuZyAg
PGZ3YW5nQGlnYWxpYS5jb20+CiAKICAgICAgICAgQnVnIDE4MjA1MyAtIFtDU1NPTSBWaWV3XSBJ
bXBsZW1lbnQgc3RhbmRhcmQgYmVoYXZpb3IgZm9yIHNjcm9sbGluZ0VsZW1lbnQKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0
LmNwcAkocmV2aXNpb24gMjM1NTM5KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzUxLDkgKzc1MSw5IEBA
IFJlZlB0cjxSYW5nZT4gQWNjZXNzaWJpbGl0eU9iamVjdDo6cmFuZ2UKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgCiAgICAgYm9vbCBpc0JhY2t3YXJkU2VhcmNoID0gc2VhcmNoRGlyZWN0
aW9uID09IEFjY2Vzc2liaWxpdHlTZWFyY2hEaXJlY3Rpb246OlByZXZpb3VzOwotICAgIEZpbmRP
cHRpb25zIGZpbmRPcHRpb25zIHsgeyBBdFdvcmRTdGFydHMsIEF0V29yZEVuZHMsIENhc2VJbnNl
bnNpdGl2ZSwgU3RhcnRJblNlbGVjdGlvbiB9IH07CisgICAgRmluZE9wdGlvbnMgZmluZE9wdGlv
bnMgeyBBdFdvcmRTdGFydHMsIEF0V29yZEVuZHMsIENhc2VJbnNlbnNpdGl2ZSwgU3RhcnRJblNl
bGVjdGlvbiB9OwogICAgIGlmIChpc0JhY2t3YXJkU2VhcmNoKQotICAgICAgICBmaW5kT3B0aW9u
cyB8PSBCYWNrd2FyZHM7CisgICAgICAgIGZpbmRPcHRpb25zLmFkZChCYWNrd2FyZHMpOwogICAg
IAogICAgIFJlZlB0cjxSYW5nZT4gY2xvc2VzdFN0cmluZ1JhbmdlID0gbnVsbHB0cjsKICAgICBm
b3IgKGNvbnN0IGF1dG8mIHNlYXJjaFN0cmluZyA6IHNlYXJjaFN0cmluZ3MpIHsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgJKHJldmlzaW9uIDIzNTUz
OSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzk0LDcgKzM5NCw3IEBAIGlubGluZSBPcHRpb25TZXQ8VGV4dERlY29yYXRp
b24+IFN0eWxlQnUKICAgICBhdXRvIHJlc3VsdCA9IFJlbmRlclN0eWxlOjppbml0aWFsVGV4dERl
Y29yYXRpb24oKTsKICAgICBpZiAoaXM8Q1NTVmFsdWVMaXN0Pih2YWx1ZSkpIHsKICAgICAgICAg
Zm9yIChhdXRvJiBjdXJyZW50VmFsdWUgOiBkb3duY2FzdDxDU1NWYWx1ZUxpc3Q+KHZhbHVlKSkK
LSAgICAgICAgICAgIHJlc3VsdCB8PSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oY3VycmVu
dFZhbHVlLmdldCgpKTsKKyAgICAgICAgICAgIHJlc3VsdC5hZGQoZG93bmNhc3Q8Q1NTUHJpbWl0
aXZlVmFsdWU+KGN1cnJlbnRWYWx1ZS5nZXQoKSkpOwogICAgIH0KICAgICByZXR1cm4gcmVzdWx0
OwogfQpAQCAtNDk4LDcgKzQ5OCw3IEBAIGlubGluZSBPcHRpb25TZXQ8VGV4dEVtcGhhc2lzUG9z
aXRpb24+IFMKIAogICAgIE9wdGlvblNldDxUZXh0RW1waGFzaXNQb3NpdGlvbj4gcG9zaXRpb247
CiAgICAgZm9yIChhdXRvJiBjdXJyZW50VmFsdWUgOiBkb3duY2FzdDxDU1NWYWx1ZUxpc3Q+KHZh
bHVlKSkKLSAgICAgICAgcG9zaXRpb24gfD0gdmFsdWVUb0VtcGhhc2lzUG9zaXRpb24oZG93bmNh
c3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KGN1cnJlbnRWYWx1ZS5nZXQoKSkpOworICAgICAgICBwb3Np
dGlvbi5hZGQodmFsdWVUb0VtcGhhc2lzUG9zaXRpb24oZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFs
dWU+KGN1cnJlbnRWYWx1ZS5nZXQoKSkpKTsKICAgICByZXR1cm4gcG9zaXRpb247CiB9CiAKQEAg
LTY0NSw3ICs2NDUsNyBAQCBpbmxpbmUgT3B0aW9uU2V0PFRleHRVbmRlcmxpbmVQb3NpdGlvbj4g
CiAKICAgICBPcHRpb25TZXQ8VGV4dFVuZGVybGluZVBvc2l0aW9uPiBjb21iaW5lZFBvc2l0aW9u
OwogICAgIGZvciAoYXV0byYgY3VycmVudFZhbHVlIDogZG93bmNhc3Q8Q1NTVmFsdWVMaXN0Pih2
YWx1ZSkpCi0gICAgICAgIGNvbWJpbmVkUG9zaXRpb24gfD0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZl
VmFsdWU+KGN1cnJlbnRWYWx1ZS5nZXQoKSk7CisgICAgICAgIGNvbWJpbmVkUG9zaXRpb24uYWRk
KGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPihjdXJyZW50VmFsdWUuZ2V0KCkpKTsKICAgICBy
ZXR1cm4gY29tYmluZWRQb3NpdGlvbjsKIH0KIApAQCAtNzUzLDcgKzc1Myw3IEBAIGlubGluZSBP
cHRpb25TZXQ8VGV4dERlY29yYXRpb25Ta2lwPiBTdHkKIAogICAgIE9wdGlvblNldDxUZXh0RGVj
b3JhdGlvblNraXA+IHNraXA7CiAgICAgZm9yIChhdXRvJiBjdXJyZW50VmFsdWUgOiBkb3duY2Fz
dDxDU1NWYWx1ZUxpc3Q+KHZhbHVlKSkKLSAgICAgICAgc2tpcCB8PSB2YWx1ZVRvRGVjb3JhdGlv
blNraXAoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KGN1cnJlbnRWYWx1ZS5nZXQoKSkpOwor
ICAgICAgICBza2lwLmFkZCh2YWx1ZVRvRGVjb3JhdGlvblNraXAoZG93bmNhc3Q8Q1NTUHJpbWl0
aXZlVmFsdWU+KGN1cnJlbnRWYWx1ZS5nZXQoKSkpKTsKICAgICByZXR1cm4gc2tpcDsKIH0KIApA
QCAtMTUwNCw3ICsxNTA0LDcgQEAgaW5saW5lIE9wdGlvblNldDxTcGVha0FzPiBTdHlsZUJ1aWxk
ZXJDbwogICAgIGF1dG8gcmVzdWx0ID0gUmVuZGVyU3R5bGU6OmluaXRpYWxTcGVha0FzKCk7CiAg
ICAgaWYgKGlzPENTU1ZhbHVlTGlzdD4odmFsdWUpKSB7CiAgICAgICAgIGZvciAoYXV0byYgY3Vy
cmVudFZhbHVlIDogZG93bmNhc3Q8Q1NTVmFsdWVMaXN0Pih2YWx1ZSkpCi0gICAgICAgICAgICBy
ZXN1bHQgfD0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KGN1cnJlbnRWYWx1ZS5nZXQoKSk7
CisgICAgICAgICAgICByZXN1bHQuYWRkKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPihjdXJy
ZW50VmFsdWUuZ2V0KCkpKTsKICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTE1MTQs
NyArMTUxNCw3IEBAIGlubGluZSBPcHRpb25TZXQ8SGFuZ2luZ1B1bmN0dWF0aW9uPiBTdHkKICAg
ICBhdXRvIHJlc3VsdCA9IFJlbmRlclN0eWxlOjppbml0aWFsSGFuZ2luZ1B1bmN0dWF0aW9uKCk7
CiAgICAgaWYgKGlzPENTU1ZhbHVlTGlzdD4odmFsdWUpKSB7CiAgICAgICAgIGZvciAoYXV0byYg
Y3VycmVudFZhbHVlIDogZG93bmNhc3Q8Q1NTVmFsdWVMaXN0Pih2YWx1ZSkpCi0gICAgICAgICAg
ICByZXN1bHQgfD0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KGN1cnJlbnRWYWx1ZS5nZXQo
KSk7CisgICAgICAgICAgICByZXN1bHQuYWRkKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPihj
dXJyZW50VmFsdWUuZ2V0KCkpKTsKICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlci5jcHAJKHJldmlzaW9uIDIzNTUzOSkK
KysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTE5LDcgKzExOSw3IEBAIENvbG9yIENTU1BhcnNlcjo6cGFyc2VTeXN0ZW1Db2xvcihj
b25zdCAKIAogICAgIE9wdGlvblNldDxTdHlsZUNvbG9yOjpPcHRpb25zPiBvcHRpb25zOwogICAg
IGlmIChjb250ZXh0ICYmIGNvbnRleHQtPnVzZVN5c3RlbUFwcGVhcmFuY2UpCi0gICAgICAgIG9w
dGlvbnMgfD0gU3R5bGVDb2xvcjo6T3B0aW9uczo6VXNlU3lzdGVtQXBwZWFyYW5jZTsKKyAgICAg
ICAgb3B0aW9ucy5hZGQoU3R5bGVDb2xvcjo6T3B0aW9uczo6VXNlU3lzdGVtQXBwZWFyYW5jZSk7
CiAgICAgcmV0dXJuIFJlbmRlclRoZW1lOjpzaW5nbGV0b24oKS5zeXN0ZW1Db2xvcihpZCwgb3B0
aW9ucyk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gMjM1NTM5
KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NzE3OCw5ICs3MTc4LDkgQEAgT3B0aW9uU2V0PFN0eWxlQ29sb3I6Ok9wdGlvbnM+IERvY3VtZW50
OgogewogICAgIE9wdGlvblNldDxTdHlsZUNvbG9yOjpPcHRpb25zPiBvcHRpb25zOwogICAgIGlm
ICh1c2VTeXN0ZW1BcHBlYXJhbmNlKCkpCi0gICAgICAgIG9wdGlvbnMgfD0gU3R5bGVDb2xvcjo6
T3B0aW9uczo6VXNlU3lzdGVtQXBwZWFyYW5jZTsKKyAgICAgICAgb3B0aW9ucy5hZGQoU3R5bGVD
b2xvcjo6T3B0aW9uczo6VXNlU3lzdGVtQXBwZWFyYW5jZSk7CiAgICAgaWYgKHVzZURhcmtBcHBl
YXJhbmNlKCkpCi0gICAgICAgIG9wdGlvbnMgfD0gU3R5bGVDb2xvcjo6T3B0aW9uczo6VXNlRGFy
a0FwcGVhcmFuY2U7CisgICAgICAgIG9wdGlvbnMuYWRkKFN0eWxlQ29sb3I6Ok9wdGlvbnM6OlVz
ZURhcmtBcHBlYXJhbmNlKTsKICAgICByZXR1cm4gb3B0aW9uczsKIH0KIApJbmRleDogU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAJKHJldmlzaW9u
IDIzNTUzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzEsNyArMzMxLDcgQEAgdm9pZCBEb2N1bWVudE1hcmtl
ckNvbnRyb2xsZXI6OmFkZE1hcmtlcgogICAgICAgICAgICAgZG93bmNhc3Q8UmVuZGVyQmxvY2tG
bG93PigqcmVuZGVyZXIpLmVuc3VyZUxpbmVCb3hlcygpOwogICAgIH0KIAotICAgIG1fcG9zc2li
bHlFeGlzdGluZ01hcmtlclR5cGVzIHw9IG5ld01hcmtlci50eXBlKCk7CisgICAgbV9wb3NzaWJs
eUV4aXN0aW5nTWFya2VyVHlwZXMuYWRkKG5ld01hcmtlci50eXBlKCkpOwogCiAgICAgc3RkOjp1
bmlxdWVfcHRyPE1hcmtlckxpc3Q+JiBsaXN0ID0gbV9tYXJrZXJzLmFkZChub2RlLCBudWxscHRy
KS5pdGVyYXRvci0+dmFsdWU7CiAKQEAgLTU4Nyw3ICs1ODcsNyBAQCB2b2lkIERvY3VtZW50TWFy
a2VyQ29udHJvbGxlcjo6cmVtb3ZlTWFyCiAgICAgICAgICAgICByZW1vdmVNYXJrZXJzRnJvbUxp
c3QoaXRlcmF0b3IsIG1hcmtlclR5cGVzKTsKICAgICB9CiAKLSAgICBtX3Bvc3NpYmx5RXhpc3Rp
bmdNYXJrZXJUeXBlcyAtPSBtYXJrZXJUeXBlczsKKyAgICBtX3Bvc3NpYmx5RXhpc3RpbmdNYXJr
ZXJUeXBlcy5yZW1vdmUobWFya2VyVHlwZXMpOwogfQogCiB2b2lkIERvY3VtZW50TWFya2VyQ29u
dHJvbGxlcjo6cmVtb3ZlTWFya2Vyc0Zyb21MaXN0KE1hcmtlck1hcDo6aXRlcmF0b3IgaXRlcmF0
b3IsIE9wdGlvblNldDxEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZT4gbWFya2VyVHlwZXMpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0ZWRBbmltYXRpb25Db250cm9s
bGVyLmNwcAkocmV2aXNpb24gMjM1NTM5KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdGVk
QW5pbWF0aW9uQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMSw3ICsxMjEsNyBA
QCB2b2lkIFNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcjo6YWRkVGhyCiAgICAgaWYgKG1fdGhy
b3R0bGluZ1JlYXNvbnMuY29udGFpbnMocmVhc29uKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
bV90aHJvdHRsaW5nUmVhc29ucyB8PSByZWFzb247CisgICAgbV90aHJvdHRsaW5nUmVhc29ucy5h
ZGQocmVhc29uKTsKIAogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImFkZFRocm90dGxpbmdS
ZWFzb24oJXMpIC0+ICVzIiwgdGhyb3R0bGluZ1JlYXNvblRvU3RyaW5nKHJlYXNvbiksIHRocm90
dGxpbmdSZWFzb25zVG9TdHJpbmcobV90aHJvdHRsaW5nUmVhc29ucykudXRmOCgpLmRhdGEoKSk7
CiAKQEAgLTE0MCw3ICsxNDAsNyBAQCB2b2lkIFNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcjo6
cmVtb3ZlCiAgICAgaWYgKCFtX3Rocm90dGxpbmdSZWFzb25zLmNvbnRhaW5zKHJlYXNvbikpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIG1fdGhyb3R0bGluZ1JlYXNvbnMgLT0gcmVhc29uOworICAg
IG1fdGhyb3R0bGluZ1JlYXNvbnMucmVtb3ZlKHJlYXNvbik7CiAKICAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKCJyZW1vdmVUaHJvdHRsaW5nUmVhc29uKCVzKSAtPiAlcyIsIHRocm90dGxpbmdS
ZWFzb25Ub1N0cmluZyhyZWFzb24pLCB0aHJvdHRsaW5nUmVhc29uc1RvU3RyaW5nKG1fdGhyb3R0
bGluZ1JlYXNvbnMpLnV0ZjgoKS5kYXRhKCkpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20v
U2VjdXJpdHlDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1NlY3Vy
aXR5Q29udGV4dC5oCShyZXZpc2lvbiAyMzU1MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vU2Vj
dXJpdHlDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTg5LDcgKzg5LDcgQEAgcHVibGljOgog
ICAgIH07CiAKICAgICBjb25zdCBPcHRpb25TZXQ8TWl4ZWRDb250ZW50VHlwZT4mIGZvdW5kTWl4
ZWRDb250ZW50KCkgY29uc3QgeyByZXR1cm4gbV9taXhlZENvbnRlbnRUeXBlczsgfQotICAgIHZv
aWQgc2V0Rm91bmRNaXhlZENvbnRlbnQoTWl4ZWRDb250ZW50VHlwZSB0eXBlKSB7IG1fbWl4ZWRD
b250ZW50VHlwZXMgfD0gdHlwZTsgfQorICAgIHZvaWQgc2V0Rm91bmRNaXhlZENvbnRlbnQoTWl4
ZWRDb250ZW50VHlwZSB0eXBlKSB7IG1fbWl4ZWRDb250ZW50VHlwZXMuYWRkKHR5cGUpOyB9CiAg
ICAgYm9vbCBnZW9sb2NhdGlvbkFjY2Vzc2VkKCkgY29uc3QgeyByZXR1cm4gbV9nZW9sb2NhdGlv
bkFjY2Vzc2VkOyB9CiAgICAgdm9pZCBzZXRHZW9sb2NhdGlvbkFjY2Vzc2VkKCkgeyBtX2dlb2xv
Y2F0aW9uQWNjZXNzZWQgPSB0cnVlOyB9CiAgICAgYm9vbCBzZWN1cmVDb29raWVzQWNjZXNzZWQo
KSBjb25zdCB7IHJldHVybiBtX3NlY3VyZUNvb2tpZXNBY2Nlc3NlZDsgfQpJbmRleDogU291cmNl
L1dlYkNvcmUvZG9tL1VJRXZlbnRXaXRoS2V5U3RhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2RvbS9VSUV2ZW50V2l0aEtleVN0YXRlLmNwcAkocmV2aXNpb24gMjM1NTM5KQor
KysgU291cmNlL1dlYkNvcmUvZG9tL1VJRXZlbnRXaXRoS2V5U3RhdGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNywxNyArMjcsMTcgQEAgYXV0byBVSUV2ZW50V2l0aEtleVN0YXRlOjptb2RpZmll
cnNGcm9tSQogewogICAgIE9wdGlvblNldDxNb2RpZmllcj4gcmVzdWx0OwogICAgIGlmIChpbml0
aWFsaXplci5jdHJsS2V5KQotICAgICAgICByZXN1bHQgfD0gTW9kaWZpZXI6OkN0cmxLZXk7Cisg
ICAgICAgIHJlc3VsdC5hZGQoTW9kaWZpZXI6OkN0cmxLZXkpOwogICAgIGlmIChpbml0aWFsaXpl
ci5hbHRLZXkpCi0gICAgICAgIHJlc3VsdCB8PSBNb2RpZmllcjo6QWx0S2V5OworICAgICAgICBy
ZXN1bHQuYWRkKE1vZGlmaWVyOjpBbHRLZXkpOwogICAgIGlmIChpbml0aWFsaXplci5zaGlmdEtl
eSkKLSAgICAgICAgcmVzdWx0IHw9IE1vZGlmaWVyOjpTaGlmdEtleTsKKyAgICAgICAgcmVzdWx0
LmFkZChNb2RpZmllcjo6U2hpZnRLZXkpOwogICAgIGlmIChpbml0aWFsaXplci5tZXRhS2V5KQot
ICAgICAgICByZXN1bHQgfD0gTW9kaWZpZXI6Ok1ldGFLZXk7CisgICAgICAgIHJlc3VsdC5hZGQo
TW9kaWZpZXI6Ok1ldGFLZXkpOwogICAgIGlmIChpbml0aWFsaXplci5tb2RpZmllckFsdEdyYXBo
KQotICAgICAgICByZXN1bHQgfD0gTW9kaWZpZXI6OkFsdEdyYXBoS2V5OworICAgICAgICByZXN1
bHQuYWRkKE1vZGlmaWVyOjpBbHRHcmFwaEtleSk7CiAgICAgaWYgKGluaXRpYWxpemVyLm1vZGlm
aWVyQ2Fwc0xvY2spCi0gICAgICAgIHJlc3VsdCB8PSBNb2RpZmllcjo6Q2Fwc0xvY2tLZXk7Cisg
ICAgICAgIHJlc3VsdC5hZGQoTW9kaWZpZXI6OkNhcHNMb2NrS2V5KTsKICAgICByZXR1cm4gcmVz
dWx0OwogfQogCkBAIC02MywxNSArNjMsMTUgQEAgdm9pZCBVSUV2ZW50V2l0aEtleVN0YXRlOjpz
ZXRNb2RpZmllcktleQogewogICAgIE9wdGlvblNldDxNb2RpZmllcj4gcmVzdWx0OwogICAgIGlm
IChjdHJsS2V5KQotICAgICAgICByZXN1bHQgfD0gTW9kaWZpZXI6OkN0cmxLZXk7CisgICAgICAg
IHJlc3VsdC5hZGQoTW9kaWZpZXI6OkN0cmxLZXkpOwogICAgIGlmIChhbHRLZXkpCi0gICAgICAg
IHJlc3VsdCB8PSBNb2RpZmllcjo6QWx0S2V5OworICAgICAgICByZXN1bHQuYWRkKE1vZGlmaWVy
OjpBbHRLZXkpOwogICAgIGlmIChzaGlmdEtleSkKLSAgICAgICAgcmVzdWx0IHw9IE1vZGlmaWVy
OjpTaGlmdEtleTsKKyAgICAgICAgcmVzdWx0LmFkZChNb2RpZmllcjo6U2hpZnRLZXkpOwogICAg
IGlmIChtZXRhS2V5KQotICAgICAgICByZXN1bHQgfD0gTW9kaWZpZXI6Ok1ldGFLZXk7CisgICAg
ICAgIHJlc3VsdC5hZGQoTW9kaWZpZXI6Ok1ldGFLZXkpOwogICAgIGlmIChhbHRHcmFwaEtleSkK
LSAgICAgICAgcmVzdWx0IHw9IE1vZGlmaWVyOjpBbHRHcmFwaEtleTsKKyAgICAgICAgcmVzdWx0
LmFkZChNb2RpZmllcjo6QWx0R3JhcGhLZXkpOwogICAgIG1fbW9kaWZpZXJzID0gcmVzdWx0Owog
fQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vVXNlckFjdGlvbkVsZW1lbnRTZXQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Vc2VyQWN0aW9uRWxlbWVudFNldC5jcHAJ
KHJldmlzaW9uIDIzNTUzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Vc2VyQWN0aW9uRWxlbWVu
dFNldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2LDcgKzY2LDEwIEBAIHZvaWQgVXNlckFjdGlv
bkVsZW1lbnRTZXQ6OnNldEZsYWdzKEVsZW0KIHsKICAgICBBU1NFUlQoIWZsYWdzLmlzRW1wdHko
KSk7CiAKLSAgICBtX2VsZW1lbnRzLmFkZCgmZWxlbWVudCwgT3B0aW9uU2V0PEZsYWc+IHsgfSku
aXRlcmF0b3ItPnZhbHVlIHw9IGZsYWdzOworICAgIG1fZWxlbWVudHMuZW5zdXJlKCZlbGVtZW50
LCBbXSB7CisgICAgICAgIHJldHVybiBPcHRpb25TZXQ8RmxhZz4oKTsKKyAgICB9KS5pdGVyYXRv
ci0+dmFsdWUuYWRkKGZsYWdzKTsKKwogICAgIGVsZW1lbnQuc2V0VXNlckFjdGlvbkVsZW1lbnQo
dHJ1ZSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENv
bW1hbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRl
RWRpdENvbW1hbmQuY3BwCShyZXZpc2lvbiAyMzU1MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ5NCw3ICsx
NDk0LDcgQEAgdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6bW92ZVBhcmFncmFwaAogICAgIEFT
U0VSVChlbmRpbmdTZWxlY3Rpb24oKS5pc0NhcmV0T3JSYW5nZSgpKTsKICAgICBPcHRpb25TZXQ8
UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OkNvbW1hbmRPcHRpb24+IG9wdGlvbnMgeyBSZXBsYWNl
U2VsZWN0aW9uQ29tbWFuZDo6U2VsZWN0UmVwbGFjZW1lbnQsIFJlcGxhY2VTZWxlY3Rpb25Db21t
YW5kOjpNb3ZpbmdQYXJhZ3JhcGggfTsKICAgICBpZiAoIXByZXNlcnZlU3R5bGUpCi0gICAgICAg
IG9wdGlvbnMgfD0gUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6Ok1hdGNoU3R5bGU7CisgICAgICAg
IG9wdGlvbnMuYWRkKFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpNYXRjaFN0eWxlKTsKICAgICBh
cHBseUNvbW1hbmRUb0NvbXBvc2l0ZShSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6Y3JlYXRlKGRv
Y3VtZW50KCksIFdURk1vdmUoZnJhZ21lbnQpLCBvcHRpb25zKSk7CiAKICAgICBmcmFtZSgpLmVk
aXRvcigpLm1hcmtNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFyKGVuZGluZ1NlbGVjdGlvbigpKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAJKHJldmlzaW9uIDIzNTUzOSkKKysrIFNv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjM0LDEz
ICs2MzQsMTMgQEAgdm9pZCBFZGl0b3I6OnJlcGxhY2VTZWxlY3Rpb25XaXRoRnJhZ21lbgogCiAg
ICAgT3B0aW9uU2V0PFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpDb21tYW5kT3B0aW9uPiBvcHRp
b25zIHsgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OlByZXZlbnROZXN0aW5nLCBSZXBsYWNlU2Vs
ZWN0aW9uQ29tbWFuZDo6U2FuaXRpemVGcmFnbWVudCB9OwogICAgIGlmIChzZWxlY3RSZXBsYWNl
bWVudCkKLSAgICAgICAgb3B0aW9ucyB8PSBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6U2VsZWN0
UmVwbGFjZW1lbnQ7CisgICAgICAgIG9wdGlvbnMuYWRkKFJlcGxhY2VTZWxlY3Rpb25Db21tYW5k
OjpTZWxlY3RSZXBsYWNlbWVudCk7CiAgICAgaWYgKHNtYXJ0UmVwbGFjZSkKLSAgICAgICAgb3B0
aW9ucyB8PSBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6U21hcnRSZXBsYWNlOworICAgICAgICBv
cHRpb25zLmFkZChSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6U21hcnRSZXBsYWNlKTsKICAgICBp
ZiAobWF0Y2hTdHlsZSkKLSAgICAgICAgb3B0aW9ucyB8PSBSZXBsYWNlU2VsZWN0aW9uQ29tbWFu
ZDo6TWF0Y2hTdHlsZTsKKyAgICAgICAgb3B0aW9ucy5hZGQoUmVwbGFjZVNlbGVjdGlvbkNvbW1h
bmQ6Ok1hdGNoU3R5bGUpOwogICAgIGlmIChtYWlsQmxvY2txdW90ZUhhbmRsaW5nID09IE1haWxC
bG9ja3F1b3RlSGFuZGxpbmc6Oklnbm9yZUJsb2NrcXVvdGUpCi0gICAgICAgIG9wdGlvbnMgfD0g
UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6Oklnbm9yZU1haWxCbG9ja3F1b3RlOworICAgICAgICBv
cHRpb25zLmFkZChSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6SWdub3JlTWFpbEJsb2NrcXVvdGUp
OwogCiAgICAgYXV0byBjb21tYW5kID0gUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmNyZWF0ZShk
b2N1bWVudCgpLCAmZnJhZ21lbnQsIG9wdGlvbnMsIGVkaXRpbmdBY3Rpb24pOwogICAgIGNvbW1h
bmQtPmFwcGx5KCk7CkBAIC0xMDczLDcgKzEwNzMsNyBAQCB2b2lkIEVkaXRvcjo6YXBwbGllZEVk
aXRpbmcoQ29tcG9zaXRlRWRpCiAgICAgICAgIC8vIERvbid0IGNsZWFyIHRoZSB0eXBpbmcgc3R5
bGUgd2l0aCB0aGlzIHNlbGVjdGlvbiBjaGFuZ2UuIFdlIGRvIHRob3NlIHRoaW5ncyBlbHNld2hl
cmUgaWYgbmVjZXNzYXJ5LgogICAgICAgICBPcHRpb25TZXQ8RnJhbWVTZWxlY3Rpb246OlNldFNl
bGVjdGlvbk9wdGlvbj4gb3B0aW9uczsKICAgICAgICAgaWYgKGNvbW1hbmQuaXNEaWN0YXRpb25D
b21tYW5kKCkpCi0gICAgICAgICAgICBvcHRpb25zIHw9IEZyYW1lU2VsZWN0aW9uOjpEaWN0YXRp
b25UcmlnZ2VyZWQ7CisgICAgICAgICAgICBvcHRpb25zLmFkZChGcmFtZVNlbGVjdGlvbjo6RGlj
dGF0aW9uVHJpZ2dlcmVkKTsKIAogICAgICAgICBjaGFuZ2VTZWxlY3Rpb25BZnRlckNvbW1hbmQo
bmV3U2VsZWN0aW9uLCBvcHRpb25zKTsKICAgICB9CkBAIC0yMzM5LDcgKzIzMzksNyBAQCB2b2lk
IEVkaXRvcjo6bWFya01pc3NwZWxsaW5nc0FmdGVyVHlwaW5nCiAgICAgVU5VU0VEX1BBUkFNKGRv
UmVwbGFjZW1lbnQpOwogICAgIE9wdGlvblNldDxUZXh0Q2hlY2tpbmdUeXBlPiB0ZXh0Q2hlY2tp
bmdPcHRpb25zOwogICAgIGlmIChpc0NvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZCgpKQot
ICAgICAgICB0ZXh0Q2hlY2tpbmdPcHRpb25zIHw9IFRleHRDaGVja2luZ1R5cGU6OlNwZWxsaW5n
OworICAgICAgICB0ZXh0Q2hlY2tpbmdPcHRpb25zLmFkZChUZXh0Q2hlY2tpbmdUeXBlOjpTcGVs
bGluZyk7CiAgICAgaWYgKCF0ZXh0Q2hlY2tpbmdPcHRpb25zLmNvbnRhaW5zKFRleHRDaGVja2lu
Z1R5cGU6OlNwZWxsaW5nKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0yMzU3LDcgKzIzNTcsNyBA
QCB2b2lkIEVkaXRvcjo6bWFya01pc3NwZWxsaW5nc0FmdGVyVHlwaW5nCiAgICAgICAgIE9wdGlv
blNldDxUZXh0Q2hlY2tpbmdUeXBlPiB0ZXh0Q2hlY2tpbmdPcHRpb25zOwogCiAgICAgICAgIGlm
IChpc0NvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZCgpKQotICAgICAgICAgICAgdGV4dENo
ZWNraW5nT3B0aW9ucyB8PSBUZXh0Q2hlY2tpbmdUeXBlOjpTcGVsbGluZzsKKyAgICAgICAgICAg
IHRleHRDaGVja2luZ09wdGlvbnMuYWRkKFRleHRDaGVja2luZ1R5cGU6OlNwZWxsaW5nKTsKIAog
I2lmIFVTRShBVVRPTUFUSUNfVEVYVF9SRVBMQUNFTUVOVCkKICAgICAgICAgaWYgKGRvUmVwbGFj
ZW1lbnQKQEAgLTIzNjYsMTMgKzIzNjYsMTMgQEAgdm9pZCBFZGl0b3I6Om1hcmtNaXNzcGVsbGlu
Z3NBZnRlclR5cGluZwogICAgICAgICAgICAgICAgIHx8IGlzQXV0b21hdGljRGFzaFN1YnN0aXR1
dGlvbkVuYWJsZWQoKQogICAgICAgICAgICAgICAgIHx8IGlzQXV0b21hdGljVGV4dFJlcGxhY2Vt
ZW50RW5hYmxlZCgpCiAgICAgICAgICAgICAgICAgfHwgKHRleHRDaGVja2luZ09wdGlvbnMuY29u
dGFpbnMoVGV4dENoZWNraW5nVHlwZTo6U3BlbGxpbmcpICYmIGlzQXV0b21hdGljU3BlbGxpbmdD
b3JyZWN0aW9uRW5hYmxlZCgpKSkpCi0gICAgICAgICAgICB0ZXh0Q2hlY2tpbmdPcHRpb25zIHw9
IFRleHRDaGVja2luZ1R5cGU6OlJlcGxhY2VtZW50OworICAgICAgICAgICAgdGV4dENoZWNraW5n
T3B0aW9ucy5hZGQoVGV4dENoZWNraW5nVHlwZTo6UmVwbGFjZW1lbnQpOwogI2VuZGlmCiAgICAg
ICAgIGlmICghdGV4dENoZWNraW5nT3B0aW9ucy5jb250YWlucyhUZXh0Q2hlY2tpbmdUeXBlOjpT
cGVsbGluZykgJiYgIXRleHRDaGVja2luZ09wdGlvbnMuY29udGFpbnMoVGV4dENoZWNraW5nVHlw
ZTo6UmVwbGFjZW1lbnQpKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlmIChpc0dy
YW1tYXJDaGVja2luZ0VuYWJsZWQoKSkKLSAgICAgICAgICAgIHRleHRDaGVja2luZ09wdGlvbnMg
fD0gVGV4dENoZWNraW5nVHlwZTo6R3JhbW1hcjsKKyAgICAgICAgICAgIHRleHRDaGVja2luZ09w
dGlvbnMuYWRkKFRleHRDaGVja2luZ1R5cGU6OkdyYW1tYXIpOwogCiAgICAgICAgIGF1dG8gc2Vu
dGVuY2VTdGFydCA9IHN0YXJ0T2ZTZW50ZW5jZSh3b3JkU3RhcnQpOwogICAgICAgICBhdXRvIHNl
bnRlbmNlRW5kID0gZW5kT2ZTZW50ZW5jZSh3b3JkU3RhcnQpOwpAQCAtMjgzOCw3ICsyODM4LDcg
QEAgdm9pZCBFZGl0b3I6Om1hcmtNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbQogICAgICAgICAvLyBt
YXJrTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hcigpIGlzIHRyaWdnZXJlZCBieSBzZWxlY3Rpb24g
Y2hhbmdlLCBpbiB3aGljaCBjYXNlIHdlIGNoZWNrIHNwZWxsaW5nIGFuZCBncmFtbWFyLCBidXQg
ZG9uJ3QgYXV0b2NvcnJlY3QgbWlzc3BlbGxpbmdzLgogICAgICAgICBPcHRpb25TZXQ8VGV4dENo
ZWNraW5nVHlwZT4gdGV4dENoZWNraW5nT3B0aW9ucyB7IFRleHRDaGVja2luZ1R5cGU6OlNwZWxs
aW5nIH07CiAgICAgICAgIGlmIChtYXJrR3JhbW1hciAmJiBpc0dyYW1tYXJDaGVja2luZ0VuYWJs
ZWQoKSkKLSAgICAgICAgICAgIHRleHRDaGVja2luZ09wdGlvbnMgfD0gVGV4dENoZWNraW5nVHlw
ZTo6R3JhbW1hcjsKKyAgICAgICAgICAgIHRleHRDaGVja2luZ09wdGlvbnMuYWRkKFRleHRDaGVj
a2luZ1R5cGU6OkdyYW1tYXIpOwogICAgICAgICBhdXRvIHNwZWxsQ2hlY2tpbmdSYW5nZSA9IHNw
ZWxsaW5nU2VsZWN0aW9uLnRvTm9ybWFsaXplZFJhbmdlKCk7CiAgICAgICAgIG1hcmtBbGxNaXNz
cGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXModGV4dENoZWNraW5nT3B0aW9ucywgc3BlbGxD
aGVja2luZ1JhbmdlLmNvcHlSZWYoKSwgc3BlbGxDaGVja2luZ1JhbmdlLmNvcHlSZWYoKSwgZ3Jh
bW1hclNlbGVjdGlvbi50b05vcm1hbGl6ZWRSYW5nZSgpKTsKICAgICAgICAgcmV0dXJuOwpAQCAt
MzczMywzMCArMzczMywzMCBAQCBPcHRpb25TZXQ8VGV4dENoZWNraW5nVHlwZT4gRWRpdG9yOjpy
ZXNvCiAKICAgICBPcHRpb25TZXQ8VGV4dENoZWNraW5nVHlwZT4gY2hlY2tpbmdUeXBlczsKICAg
ICBpZiAoc2hvdWxkTWFya1NwZWxsaW5nKQotICAgICAgICBjaGVja2luZ1R5cGVzIHw9IFRleHRD
aGVja2luZ1R5cGU6OlNwZWxsaW5nOworICAgICAgICBjaGVja2luZ1R5cGVzLmFkZChUZXh0Q2hl
Y2tpbmdUeXBlOjpTcGVsbGluZyk7CiAgICAgaWYgKHNob3VsZE1hcmtHcmFtbWFyKQotICAgICAg
ICBjaGVja2luZ1R5cGVzIHw9IFRleHRDaGVja2luZ1R5cGU6OkdyYW1tYXI7CisgICAgICAgIGNo
ZWNraW5nVHlwZXMuYWRkKFRleHRDaGVja2luZ1R5cGU6OkdyYW1tYXIpOwogI2lmICFQTEFURk9S
TShJT1MpCiAgICAgaWYgKHNob3VsZENoZWNrRm9yQ29ycmVjdGlvbikKLSAgICAgICAgY2hlY2tp
bmdUeXBlcyB8PSBUZXh0Q2hlY2tpbmdUeXBlOjpDb3JyZWN0aW9uOworICAgICAgICBjaGVja2lu
Z1R5cGVzLmFkZChUZXh0Q2hlY2tpbmdUeXBlOjpDb3JyZWN0aW9uKTsKICAgICBpZiAoc2hvdWxk
U2hvd0NvcnJlY3Rpb25QYW5lbCkKLSAgICAgICAgY2hlY2tpbmdUeXBlcyB8PSBUZXh0Q2hlY2tp
bmdUeXBlOjpTaG93Q29ycmVjdGlvblBhbmVsOworICAgICAgICBjaGVja2luZ1R5cGVzLmFkZChU
ZXh0Q2hlY2tpbmdUeXBlOjpTaG93Q29ycmVjdGlvblBhbmVsKTsKIAogI2lmIFVTRShBVVRPTUFU
SUNfVEVYVF9SRVBMQUNFTUVOVCkKICAgICBib29sIHNob3VsZFBlcmZvcm1SZXBsYWNlbWVudCA9
IHRleHRDaGVja2luZ09wdGlvbnMuY29udGFpbnMoVGV4dENoZWNraW5nVHlwZTo6UmVwbGFjZW1l
bnQpOwogICAgIGlmIChzaG91bGRQZXJmb3JtUmVwbGFjZW1lbnQpIHsKICAgICAgICAgaWYgKCFv
bmx5QWxsb3dzVGV4dFJlcGxhY2VtZW50KSB7CiAgICAgICAgICAgICBpZiAoaXNBdXRvbWF0aWNM
aW5rRGV0ZWN0aW9uRW5hYmxlZCgpKQotICAgICAgICAgICAgICAgIGNoZWNraW5nVHlwZXMgfD0g
VGV4dENoZWNraW5nVHlwZTo6TGluazsKKyAgICAgICAgICAgICAgICBjaGVja2luZ1R5cGVzLmFk
ZChUZXh0Q2hlY2tpbmdUeXBlOjpMaW5rKTsKICAgICAgICAgICAgIGlmIChpc0F1dG9tYXRpY1F1
b3RlU3Vic3RpdHV0aW9uRW5hYmxlZCgpKQotICAgICAgICAgICAgICAgIGNoZWNraW5nVHlwZXMg
fD0gVGV4dENoZWNraW5nVHlwZTo6UXVvdGU7CisgICAgICAgICAgICAgICAgY2hlY2tpbmdUeXBl
cy5hZGQoVGV4dENoZWNraW5nVHlwZTo6UXVvdGUpOwogICAgICAgICAgICAgaWYgKGlzQXV0b21h
dGljRGFzaFN1YnN0aXR1dGlvbkVuYWJsZWQoKSkKLSAgICAgICAgICAgICAgICBjaGVja2luZ1R5
cGVzIHw9IFRleHRDaGVja2luZ1R5cGU6OkRhc2g7CisgICAgICAgICAgICAgICAgY2hlY2tpbmdU
eXBlcy5hZGQoVGV4dENoZWNraW5nVHlwZTo6RGFzaCk7CiAgICAgICAgICAgICBpZiAoc2hvdWxk
TWFya1NwZWxsaW5nICYmIGlzQXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uRW5hYmxlZCgpKQot
ICAgICAgICAgICAgICAgIGNoZWNraW5nVHlwZXMgfD0gVGV4dENoZWNraW5nVHlwZTo6Q29ycmVj
dGlvbjsKKyAgICAgICAgICAgICAgICBjaGVja2luZ1R5cGVzLmFkZChUZXh0Q2hlY2tpbmdUeXBl
OjpDb3JyZWN0aW9uKTsKICAgICAgICAgfQogICAgICAgICBpZiAoaXNBdXRvbWF0aWNUZXh0UmVw
bGFjZW1lbnRFbmFibGVkKCkpCi0gICAgICAgICAgICBjaGVja2luZ1R5cGVzIHw9IFRleHRDaGVj
a2luZ1R5cGU6OlJlcGxhY2VtZW50OworICAgICAgICAgICAgY2hlY2tpbmdUeXBlcy5hZGQoVGV4
dENoZWNraW5nVHlwZTo6UmVwbGFjZW1lbnQpOwogICAgIH0KICNlbmRpZgogI2VuZGlmIC8vICFQ
TEFURk9STShJT1MpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9u
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9u
LmNwcAkocmV2aXNpb24gMjM1NTM5KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNl
bGVjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4NywxNSArMTg3LDE1IEBAIHZvaWQgRnJh
bWVTZWxlY3Rpb246Om1vdmVXaXRob3V0VmFsaWRhdGkKICAgICBBWFRleHRTdGF0ZUNoYW5nZUlu
dGVudCBuZXdJbnRlbnQgPSBpbnRlbnQudHlwZSA9PSBBWFRleHRTdGF0ZUNoYW5nZVR5cGVVbmtu
b3duID8gQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQoQVhUZXh0U3RhdGVDaGFuZ2VUeXBlU2VsZWN0
aW9uTW92ZSwgQVhUZXh0U2VsZWN0aW9uIHsgQVhUZXh0U2VsZWN0aW9uRGlyZWN0aW9uRGlzY29u
dGlndW91cywgQVhUZXh0U2VsZWN0aW9uR3JhbnVsYXJpdHlVbmtub3duLCBmYWxzZSB9KSA6IGlu
dGVudDsKICAgICBhdXRvIG9wdGlvbnMgPSBkZWZhdWx0U2V0U2VsZWN0aW9uT3B0aW9ucygpOwog
ICAgIGlmICghc2hvdWxkU2V0Rm9jdXMpCi0gICAgICAgIG9wdGlvbnMgfD0gRG9Ob3RTZXRGb2N1
czsKKyAgICAgICAgb3B0aW9ucy5hZGQoRG9Ob3RTZXRGb2N1cyk7CiAgICAgc3dpdGNoIChyZXZl
YWxNb2RlKSB7CiAgICAgY2FzZSBTZWxlY3Rpb25SZXZlYWxNb2RlOjpEb05vdFJldmVhbDoKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBTZWxlY3Rpb25SZXZlYWxNb2RlOjpSZXZlYWw6Ci0gICAg
ICAgIG9wdGlvbnMgfD0gUmV2ZWFsU2VsZWN0aW9uOworICAgICAgICBvcHRpb25zLmFkZChSZXZl
YWxTZWxlY3Rpb24pOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFNlbGVjdGlvblJldmVhbE1v
ZGU6OlJldmVhbFVwVG9NYWluRnJhbWU6Ci0gICAgICAgIG9wdGlvbnMgfD0gUmV2ZWFsU2VsZWN0
aW9uVXBUb01haW5GcmFtZTsKKyAgICAgICAgb3B0aW9ucy5hZGQoUmV2ZWFsU2VsZWN0aW9uVXBU
b01haW5GcmFtZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBzZXRTZWxlY3Rpb24obmV3
U2VsZWN0aW9uLCBvcHRpb25zLCBuZXdJbnRlbnQpOwpAQCAtMTk5NSw3ICsxOTk1LDcgQEAgYm9v
bCBGcmFtZVNlbGVjdGlvbjo6c2V0U2VsZWN0ZWRSYW5nZShSYQogCiAgICAgT3B0aW9uU2V0PFNl
dFNlbGVjdGlvbk9wdGlvbj4gc2VsZWN0aW9uT3B0aW9ucyB7ICBDbGVhclR5cGluZ1N0eWxlIH07
CiAgICAgaWYgKGNsb3NlVHlwaW5nKQotICAgICAgICBzZWxlY3Rpb25PcHRpb25zIHw9IENsb3Nl
VHlwaW5nOworICAgICAgICBzZWxlY3Rpb25PcHRpb25zLmFkZChDbG9zZVR5cGluZyk7CiAKICAg
ICBpZiAodXNlclRyaWdnZXJlZCA9PSBVc2VyVHJpZ2dlcmVkKSB7CiAgICAgICAgIEZyYW1lU2Vs
ZWN0aW9uIHRyaWFsRnJhbWVTZWxlY3Rpb247CkBAIC0yMDA1LDcgKzIwMDUsNyBAQCBib29sIEZy
YW1lU2VsZWN0aW9uOjpzZXRTZWxlY3RlZFJhbmdlKFJhCiAgICAgICAgIGlmICghc2hvdWxkQ2hh
bmdlU2VsZWN0aW9uKHRyaWFsRnJhbWVTZWxlY3Rpb24uc2VsZWN0aW9uKCkpKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIHNlbGVjdGlvbk9wdGlvbnMgfD0gSXNVc2VyVHJp
Z2dlcmVkOworICAgICAgICBzZWxlY3Rpb25PcHRpb25zLmFkZChJc1VzZXJUcmlnZ2VyZWQpOwog
ICAgIH0KIAogICAgIHNldFNlbGVjdGlvbihuZXdTZWxlY3Rpb24sIHNlbGVjdGlvbk9wdGlvbnMp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uaAkocmV2aXNpb24g
MjM1NTM5KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMzMsNyArMTMzLDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgT3B0
aW9uU2V0PFNldFNlbGVjdGlvbk9wdGlvbj4gb3B0aW9ucyB7IENsb3NlVHlwaW5nLCBDbGVhclR5
cGluZ1N0eWxlIH07CiAgICAgICAgIGlmICh1c2VyVHJpZ2dlcmVkID09IFVzZXJUcmlnZ2VyZWQp
Ci0gICAgICAgICAgICBvcHRpb25zIHw9IHsgUmV2ZWFsU2VsZWN0aW9uLCBGaXJlU2VsZWN0RXZl
bnQsIElzVXNlclRyaWdnZXJlZCB9OworICAgICAgICAgICAgb3B0aW9ucy5hZGQoeyBSZXZlYWxT
ZWxlY3Rpb24sIEZpcmVTZWxlY3RFdmVudCwgSXNVc2VyVHJpZ2dlcmVkIH0pOwogICAgICAgICBy
ZXR1cm4gb3B0aW9uczsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTW92
ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvTW92ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCShyZXZpc2lvbiAyMzU1MzkpCisrKyBTb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL01vdmVTZWxlY3Rpb25Db21tYW5kLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtODQsNyArODQsNyBAQCB2b2lkIE1vdmVTZWxlY3Rpb25Db21tYW5kOjpkb0FwcGx5KCkKICAg
ICB9CiAgICAgT3B0aW9uU2V0PFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpDb21tYW5kT3B0aW9u
PiBvcHRpb25zIHsgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OlNlbGVjdFJlcGxhY2VtZW50LCBS
ZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6UHJldmVudE5lc3RpbmcgfTsKICAgICBpZiAobV9zbWFy
dEluc2VydCkKLSAgICAgICAgb3B0aW9ucyB8PSBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6U21h
cnRSZXBsYWNlOworICAgICAgICBvcHRpb25zLmFkZChSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6
U21hcnRSZXBsYWNlKTsKIAogICAgIHsKICAgICAgICAgYXV0byByZXBsYWNlU2VsZWN0aW9uID0g
UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmNyZWF0ZShkb2N1bWVudCgpLCBXVEZNb3ZlKG1fZnJh
Z21lbnQpLCBvcHRpb25zLCBFZGl0QWN0aW9uSW5zZXJ0RnJvbURyb3ApOwpJbmRleDogU291cmNl
L1dlYkNvcmUvZWRpdGluZy9TcGVsbENoZWNrZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvU3BlbGxDaGVja2VyLmNwcAkocmV2aXNpb24gMjM1NTM5KQorKysgU291
cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbENoZWNrZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
MTgsOSArMjE4LDkgQEAgdm9pZCBTcGVsbENoZWNrZXI6OmRpZENoZWNrU3VjY2VlZChpbnQgcwog
ICAgIGlmIChyZXF1ZXN0RGF0YS5zZXF1ZW5jZSgpID09IHNlcXVlbmNlKSB7CiAgICAgICAgIE9w
dGlvblNldDxEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZT4gbWFya2VyVHlwZXM7CiAgICAgICAg
IGlmIChyZXF1ZXN0RGF0YS5jaGVja2luZ1R5cGVzKCkuY29udGFpbnMoVGV4dENoZWNraW5nVHlw
ZTo6U3BlbGxpbmcpKQotICAgICAgICAgICAgbWFya2VyVHlwZXMgfD0gRG9jdW1lbnRNYXJrZXI6
OlNwZWxsaW5nOworICAgICAgICAgICAgbWFya2VyVHlwZXMuYWRkKERvY3VtZW50TWFya2VyOjpT
cGVsbGluZyk7CiAgICAgICAgIGlmIChyZXF1ZXN0RGF0YS5jaGVja2luZ1R5cGVzKCkuY29udGFp
bnMoVGV4dENoZWNraW5nVHlwZTo6R3JhbW1hcikpCi0gICAgICAgICAgICBtYXJrZXJUeXBlcyB8
PSBEb2N1bWVudE1hcmtlcjo6R3JhbW1hcjsKKyAgICAgICAgICAgIG1hcmtlclR5cGVzLmFkZChE
b2N1bWVudE1hcmtlcjo6R3JhbW1hcik7CiAgICAgICAgIGlmICghbWFya2VyVHlwZXMuaXNFbXB0
eSgpKQogICAgICAgICAgICAgbV9mcmFtZS5kb2N1bWVudCgpLT5tYXJrZXJzKCkucmVtb3ZlTWFy
a2VycygmbV9wcm9jZXNzaW5nUmVxdWVzdC0+Y2hlY2tpbmdSYW5nZSgpLCBtYXJrZXJUeXBlcyk7
CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVs
cGVyLmNwcAkocmV2aXNpb24gMjM1NTM5KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0
Q2hlY2tpbmdIZWxwZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNTMsNyArMzUzLDcgQEAgU3Ry
aW5nIFRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0TWlzcwogICAgICAgICAgICAgICAgIFZl
Y3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IHJlc3VsdHM7CiAgICAgICAgICAgICAgICAgT3B0aW9u
U2V0PFRleHRDaGVja2luZ1R5cGU+IGNoZWNraW5nVHlwZXMgeyBUZXh0Q2hlY2tpbmdUeXBlOjpT
cGVsbGluZyB9OwogICAgICAgICAgICAgICAgIGlmIChjaGVja0dyYW1tYXIpCi0gICAgICAgICAg
ICAgICAgICAgIGNoZWNraW5nVHlwZXMgfD0gVGV4dENoZWNraW5nVHlwZTo6R3JhbW1hcjsKKyAg
ICAgICAgICAgICAgICAgICAgY2hlY2tpbmdUeXBlcy5hZGQoVGV4dENoZWNraW5nVHlwZTo6R3Jh
bW1hcik7CiAgICAgICAgICAgICAgICAgVmlzaWJsZVNlbGVjdGlvbiBjdXJyZW50U2VsZWN0aW9u
OwogICAgICAgICAgICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBwYXJhZ3JhcGhSYW5nZS0+b3du
ZXJEb2N1bWVudCgpLmZyYW1lKCkpCiAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTZWxlY3Rp
b24gPSBmcmFtZS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCk7CkBAIC01ODcsNyArNTg3LDcgQEAg
VmVjdG9yPFN0cmluZz4gVGV4dENoZWNraW5nSGVscGVyOjpndWVzcwogICAgIFZlY3RvcjxUZXh0
Q2hlY2tpbmdSZXN1bHQ+IHJlc3VsdHM7CiAgICAgT3B0aW9uU2V0PFRleHRDaGVja2luZ1R5cGU+
IGNoZWNraW5nVHlwZXMgeyBUZXh0Q2hlY2tpbmdUeXBlOjpTcGVsbGluZyB9OwogICAgIGlmIChj
aGVja0dyYW1tYXIpCi0gICAgICAgIGNoZWNraW5nVHlwZXMgfD0gVGV4dENoZWNraW5nVHlwZTo6
R3JhbW1hcjsKKyAgICAgICAgY2hlY2tpbmdUeXBlcy5hZGQoVGV4dENoZWNraW5nVHlwZTo6R3Jh
bW1hcik7CiAgICAgVmlzaWJsZVNlbGVjdGlvbiBjdXJyZW50U2VsZWN0aW9uOwogICAgIGlmIChG
cmFtZSogZnJhbWUgPSBtX3JhbmdlLT5vd25lckRvY3VtZW50KCkuZnJhbWUoKSkKICAgICAgICAg
Y3VycmVudFNlbGVjdGlvbiA9IGZyYW1lLT5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAJKHJldmlzaW9uIDIzNTUzOSkK
KysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjA5Nyw3ICsyMDk3LDcgQEAgaW5saW5lIFNlYXJjaEJ1ZmZlcjo6U2VhcmNoQnVmZmVy
KGNvbnN0IAogICAgICAgICAvLyBDaGFyYWN0ZXJzIGluIHRoZSBzZXBhcmF0b3IgY2F0ZWdvcnkg
bmV2ZXIgcmVhbGx5IG9jY3VyIGF0IHRoZSBiZWdpbm5pbmcgb2YgYSB3b3JkLAogICAgICAgICAv
LyBzbyBpZiB0aGUgdGFyZ2V0IGJlZ2lucyB3aXRoIHN1Y2ggYSBjaGFyYWN0ZXIsIHdlIGp1c3Qg
aWdub3JlIHRoZSBBdFdvcmRTdGFydCBvcHRpb24uCiAgICAgICAgIGlmIChpc1NlcGFyYXRvcih0
YXJnZXRGaXJzdENoYXJhY3RlcikpIHsKLSAgICAgICAgICAgIG1fb3B0aW9ucyAtPSBBdFdvcmRT
dGFydHM7CisgICAgICAgICAgICBtX29wdGlvbnMucmVtb3ZlKEF0V29yZFN0YXJ0cyk7CiAgICAg
ICAgICAgICBtX25lZWRzTW9yZUNvbnRleHQgPSBmYWxzZTsKICAgICAgICAgfQogICAgIH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCShyZXZpc2lvbiAy
MzU1MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjU3LDkgKzI1Nyw5IEBAIHZvaWQgSFRNTEFuY2hvckVsZW1lbnQ6OnBh
cnNlQXR0cmlidXRlKGMKICAgICAgICAgY29uc3QgYm9vbCBzaG91bGRGb2xkQ2FzZSA9IHRydWU7
CiAgICAgICAgIFNwYWNlU3BsaXRTdHJpbmcgcmVsVmFsdWUodmFsdWUsIHNob3VsZEZvbGRDYXNl
KTsKICAgICAgICAgaWYgKHJlbFZhbHVlLmNvbnRhaW5zKG5vUmVmZXJyZXIpKQotICAgICAgICAg
ICAgbV9saW5rUmVsYXRpb25zIHw9IFJlbGF0aW9uOjpOb1JlZmVycmVyOworICAgICAgICAgICAg
bV9saW5rUmVsYXRpb25zLmFkZChSZWxhdGlvbjo6Tm9SZWZlcnJlcik7CiAgICAgICAgIGlmIChy
ZWxWYWx1ZS5jb250YWlucyhub09wZW5lcikpCi0gICAgICAgICAgICBtX2xpbmtSZWxhdGlvbnMg
fD0gUmVsYXRpb246Ok5vT3BlbmVyOworICAgICAgICAgICAgbV9saW5rUmVsYXRpb25zLmFkZChS
ZWxhdGlvbjo6Tm9PcGVuZXIpOwogICAgICAgICBpZiAobV9yZWxMaXN0KQogICAgICAgICAgICAg
bV9yZWxMaXN0LT5hc3NvY2lhdGVkQXR0cmlidXRlVmFsdWVDaGFuZ2VkKHZhbHVlKTsKICAgICB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2Vu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JQYWdlQWdlbnQuY3BwCShyZXZpc2lvbiAyMzU1MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMxOSw5ICszMTksOSBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6cmVsb2FkKEVycm9yU3Ry
CiAKICAgICBPcHRpb25TZXQ8UmVsb2FkT3B0aW9uPiByZWxvYWRPcHRpb25zOwogICAgIGlmIChy
ZWxvYWRGcm9tT3JpZ2luKQotICAgICAgICByZWxvYWRPcHRpb25zIHw9IFJlbG9hZE9wdGlvbjo6
RnJvbU9yaWdpbjsKKyAgICAgICAgcmVsb2FkT3B0aW9ucy5hZGQoUmVsb2FkT3B0aW9uOjpGcm9t
T3JpZ2luKTsKICAgICBpZiAoIXJldmFsaWRhdGVBbGxSZXNvdXJjZXMpCi0gICAgICAgIHJlbG9h
ZE9wdGlvbnMgfD0gUmVsb2FkT3B0aW9uOjpFeHBpcmVkT25seTsKKyAgICAgICAgcmVsb2FkT3B0
aW9ucy5hZGQoUmVsb2FkT3B0aW9uOjpFeHBpcmVkT25seSk7CiAKICAgICBtX3BhZ2UubWFpbkZy
YW1lKCkubG9hZGVyKCkucmVsb2FkKHJlbG9hZE9wdGlvbnMpOwogfQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMjM1NTM5
KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNjksNyArMzY5LDcgQEAgdm9pZCBDb250ZXh0TWVudUNvbnRyb2xsZXI6
OmNvbnRleHRNZW51SQogICAgICAgICAgICAgICAgIGZyYW1lLT5zZWxlY3Rpb24oKS5zZXRTZWxl
Y3Rpb24od29yZFNlbGVjdGlvbik7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
ICAgIEFTU0VSVChmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0ZWRUZXh0KCkubGVuZ3RoKCkpOwotICAg
ICAgICAgICAgICAgIHJlcGxhY2VPcHRpb25zIHw9IFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpT
ZWxlY3RSZXBsYWNlbWVudDsKKyAgICAgICAgICAgICAgICByZXBsYWNlT3B0aW9ucy5hZGQoUmVw
bGFjZVNlbGVjdGlvbkNvbW1hbmQ6OlNlbGVjdFJlcGxhY2VtZW50KTsKICAgICAgICAgICAgIH0K
IAogICAgICAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gZnJhbWUtPmRvY3VtZW50KCk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCShyZXZpc2lvbiAyMzU1MzkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMjEsMTQg
KzEyMjEsMTQgQEAgYm9vbCBET01XaW5kb3c6OmZpbmQoY29uc3QgU3RyaW5nJiBzdHJpbgogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBGSVhNRSAoMTMwMTYpOiBTdXBwb3J0IHdob2xl
V29yZCwgc2VhcmNoSW5GcmFtZXMgYW5kIHNob3dEaWFsb2cuICAgIAotICAgIEZpbmRPcHRpb25z
IG9wdGlvbnM7CisgICAgRmluZE9wdGlvbnMgb3B0aW9ucyB7IERvTm90VHJhdmVyc2VGbGF0VHJl
ZSB9OwogICAgIGlmIChiYWNrd2FyZHMpCi0gICAgICAgIG9wdGlvbnMgfD0gQmFja3dhcmRzOwor
ICAgICAgICBvcHRpb25zLmFkZChCYWNrd2FyZHMpOwogICAgIGlmICghY2FzZVNlbnNpdGl2ZSkK
LSAgICAgICAgb3B0aW9ucyB8PSBDYXNlSW5zZW5zaXRpdmU7CisgICAgICAgIG9wdGlvbnMuYWRk
KENhc2VJbnNlbnNpdGl2ZSk7CiAgICAgaWYgKHdyYXApCi0gICAgICAgIG9wdGlvbnMgfD0gV3Jh
cEFyb3VuZDsKLSAgICByZXR1cm4gbV9mcmFtZS0+ZWRpdG9yKCkuZmluZFN0cmluZyhzdHJpbmcs
IG9wdGlvbnMgfCBEb05vdFRyYXZlcnNlRmxhdFRyZWUpOworICAgICAgICBvcHRpb25zLmFkZChX
cmFwQXJvdW5kKTsKKyAgICByZXR1cm4gbV9mcmFtZS0+ZWRpdG9yKCkuZmluZFN0cmluZyhzdHJp
bmcsIG9wdGlvbnMpOwogfQogCiBib29sIERPTVdpbmRvdzo6b2Zmc2NyZWVuQnVmZmVyaW5nKCkg
Y29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCShyZXZpc2lv
biAyMzU1MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNjE5LDkgKzYxOSw5IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OmNvbmNs
dWRlRWRpdERyYWcoY28KICAgICAgICAgICAgIGlmIChzZXRTZWxlY3Rpb25Ub0RyYWdDYXJldChp
bm5lckZyYW1lLmdldCgpLCBkcmFnQ2FyZXQsIHJhbmdlLCBwb2ludCkpIHsKICAgICAgICAgICAg
ICAgICBPcHRpb25TZXQ8UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OkNvbW1hbmRPcHRpb24+IG9w
dGlvbnMgeyBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6U2VsZWN0UmVwbGFjZW1lbnQsIFJlcGxh
Y2VTZWxlY3Rpb25Db21tYW5kOjpQcmV2ZW50TmVzdGluZyB9OwogICAgICAgICAgICAgICAgIGlm
IChkcmFnRGF0YS5jYW5TbWFydFJlcGxhY2UoKSkKLSAgICAgICAgICAgICAgICAgICAgb3B0aW9u
cyB8PSBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6U21hcnRSZXBsYWNlOworICAgICAgICAgICAg
ICAgICAgICBvcHRpb25zLmFkZChSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6U21hcnRSZXBsYWNl
KTsKICAgICAgICAgICAgICAgICBpZiAoY2hvc2VQbGFpblRleHQpCi0gICAgICAgICAgICAgICAg
ICAgIG9wdGlvbnMgfD0gUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6Ok1hdGNoU3R5bGU7CisgICAg
ICAgICAgICAgICAgICAgIG9wdGlvbnMuYWRkKFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpNYXRj
aFN0eWxlKTsKICAgICAgICAgICAgICAgICBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6Y3JlYXRl
KCptX2RvY3VtZW50VW5kZXJNb3VzZSwgZnJhZ21lbnQucmVsZWFzZU5vbk51bGwoKSwgb3B0aW9u
cywgRWRpdEFjdGlvbkluc2VydEZyb21Ecm9wKS0+YXBwbHkoKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5jcHAJ
KHJldmlzaW9uIDIzNTUzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVTbmFwc2hvdHRp
bmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MiwxMyArOTIsMTMgQEAgc3RkOjp1bmlxdWVfcHRy
PEltYWdlQnVmZmVyPiBzbmFwc2hvdEZyYQogCiAgICAgYXV0byBwYWludEJlaGF2aW9yID0gc3Rh
dGUucGFpbnRCZWhhdmlvcjsKICAgICBpZiAob3B0aW9ucyAmIFNuYXBzaG90T3B0aW9uc0ZvcmNl
QmxhY2tUZXh0KQotICAgICAgICBwYWludEJlaGF2aW9yIHw9IFBhaW50QmVoYXZpb3I6OkZvcmNl
QmxhY2tUZXh0OworICAgICAgICBwYWludEJlaGF2aW9yLmFkZChQYWludEJlaGF2aW9yOjpGb3Jj
ZUJsYWNrVGV4dCk7CiAgICAgaWYgKG9wdGlvbnMgJiBTbmFwc2hvdE9wdGlvbnNQYWludFNlbGVj
dGlvbk9ubHkpCi0gICAgICAgIHBhaW50QmVoYXZpb3IgfD0gUGFpbnRCZWhhdmlvcjo6U2VsZWN0
aW9uT25seTsKKyAgICAgICAgcGFpbnRCZWhhdmlvci5hZGQoUGFpbnRCZWhhdmlvcjo6U2VsZWN0
aW9uT25seSk7CiAgICAgaWYgKG9wdGlvbnMgJiBTbmFwc2hvdE9wdGlvbnNQYWludFNlbGVjdGlv
bkFuZEJhY2tncm91bmRzT25seSkKLSAgICAgICAgcGFpbnRCZWhhdmlvciB8PSBQYWludEJlaGF2
aW9yOjpTZWxlY3Rpb25BbmRCYWNrZ3JvdW5kc09ubHk7CisgICAgICAgIHBhaW50QmVoYXZpb3Iu
YWRkKFBhaW50QmVoYXZpb3I6OlNlbGVjdGlvbkFuZEJhY2tncm91bmRzT25seSk7CiAgICAgaWYg
KG9wdGlvbnMgJiBTbmFwc2hvdE9wdGlvbnNQYWludEV2ZXJ5dGhpbmdFeGNsdWRpbmdTZWxlY3Rp
b24pCi0gICAgICAgIHBhaW50QmVoYXZpb3IgfD0gUGFpbnRCZWhhdmlvcjo6RXhjbHVkZVNlbGVj
dGlvbjsKKyAgICAgICAgcGFpbnRCZWhhdmlvci5hZGQoUGFpbnRCZWhhdmlvcjo6RXhjbHVkZVNl
bGVjdGlvbik7CiAKICAgICAvLyBPdGhlciBwYWludCBiZWhhdmlvcnMgYXJlIHNldCBieSBwYWlu
dENvbnRlbnRzRm9yU25hcHNob3QuCiAgICAgZnJhbWUudmlldygpLT5zZXRQYWludEJlaGF2aW9y
KHBhaW50QmVoYXZpb3IpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAkocmV2aXNp
b24gMjM1NTM5KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNDAsMTEgKzE0MCwxMSBAQCBzdGF0aWMgT3B0aW9uU2V0PFJlbmRlckxheWVy
OjpVcGRhdGVMYXllCiB7CiAgICAgYXV0byBmbGFncyA9IFJlbmRlckxheWVyOjp1cGRhdGVMYXll
clBvc2l0aW9uc0RlZmF1bHRGbGFncygpOwogICAgIGlmIChkaWRGdWxsUmVwYWludCkgewotICAg
ICAgICBmbGFncyAtPSBSZW5kZXJMYXllcjo6Q2hlY2tGb3JSZXBhaW50OwotICAgICAgICBmbGFn
cyB8PSBSZW5kZXJMYXllcjo6TmVlZHNGdWxsUmVwYWludEluQmFja2luZzsKKyAgICAgICAgZmxh
Z3MucmVtb3ZlKFJlbmRlckxheWVyOjpDaGVja0ZvclJlcGFpbnQpOworICAgICAgICBmbGFncy5h
ZGQoUmVuZGVyTGF5ZXI6Ok5lZWRzRnVsbFJlcGFpbnRJbkJhY2tpbmcpOwogICAgIH0KICAgICBp
ZiAoaXNSZWxheW91dGluZ1N1YnRyZWUgJiYgbGF5ZXItPmVuY2xvc2luZ1BhZ2luYXRpb25MYXll
cihSZW5kZXJMYXllcjo6SW5jbHVkZUNvbXBvc2l0ZWRQYWdpbmF0ZWRMYXllcnMpKQotICAgICAg
ICBmbGFncyB8PSBSZW5kZXJMYXllcjo6VXBkYXRlUGFnaW5hdGlvbjsKKyAgICAgICAgZmxhZ3Mu
YWRkKFJlbmRlckxheWVyOjpVcGRhdGVQYWdpbmF0aW9uKTsKICAgICByZXR1cm4gZmxhZ3M7CiB9
CiAKQEAgLTQwNjgsMTggKzQwNjgsMTggQEAgdm9pZCBGcmFtZVZpZXc6OndpbGxQYWludENvbnRl
bnRzKEdyYXBoaQogICAgIAogICAgIGlmIChGcmFtZVZpZXcqIHBhcmVudFZpZXcgPSBwYXJlbnRG
cmFtZVZpZXcoKSkgewogICAgICAgICBpZiAocGFyZW50Vmlldy0+cGFpbnRCZWhhdmlvcigpICYg
UGFpbnRCZWhhdmlvcjo6RmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzKQotICAgICAgICAgICAgbV9w
YWludEJlaGF2aW9yIHw9IFBhaW50QmVoYXZpb3I6OkZsYXR0ZW5Db21wb3NpdGluZ0xheWVyczsK
KyAgICAgICAgICAgIG1fcGFpbnRCZWhhdmlvci5hZGQoUGFpbnRCZWhhdmlvcjo6RmxhdHRlbkNv
bXBvc2l0aW5nTGF5ZXJzKTsKICAgICAgICAgCiAgICAgICAgIGlmIChwYXJlbnRWaWV3LT5wYWlu
dEJlaGF2aW9yKCkgJiBQYWludEJlaGF2aW9yOjpTbmFwc2hvdHRpbmcpCi0gICAgICAgICAgICBt
X3BhaW50QmVoYXZpb3IgfD0gUGFpbnRCZWhhdmlvcjo6U25hcHNob3R0aW5nOworICAgICAgICAg
ICAgbV9wYWludEJlaGF2aW9yLmFkZChQYWludEJlaGF2aW9yOjpTbmFwc2hvdHRpbmcpOwogICAg
ICAgICAKICAgICAgICAgaWYgKHBhcmVudFZpZXctPnBhaW50QmVoYXZpb3IoKSAmIFBhaW50QmVo
YXZpb3I6OlRpbGVGaXJzdFBhaW50KQotICAgICAgICAgICAgbV9wYWludEJlaGF2aW9yIHw9IFBh
aW50QmVoYXZpb3I6OlRpbGVGaXJzdFBhaW50OworICAgICAgICAgICAgbV9wYWludEJlaGF2aW9y
LmFkZChQYWludEJlaGF2aW9yOjpUaWxlRmlyc3RQYWludCk7CiAgICAgfQogCiAgICAgaWYgKGRv
Y3VtZW50LT5wcmludGluZygpKSB7Ci0gICAgICAgIG1fcGFpbnRCZWhhdmlvciB8PSBQYWludEJl
aGF2aW9yOjpGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnM7Ci0gICAgICAgIG1fcGFpbnRCZWhhdmlv
ciB8PSBQYWludEJlaGF2aW9yOjpTbmFwc2hvdHRpbmc7CisgICAgICAgIG1fcGFpbnRCZWhhdmlv
ci5hZGQoUGFpbnRCZWhhdmlvcjo6RmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzKTsKKyAgICAgICAg
bV9wYWludEJlaGF2aW9yLmFkZChQYWludEJlaGF2aW9yOjpTbmFwc2hvdHRpbmcpOwogICAgIH0K
IAogICAgIHBhaW50aW5nU3RhdGUuaXNGbGF0dGVuaW5nUGFpbnRPZlJvb3RGcmFtZSA9IChtX3Bh
aW50QmVoYXZpb3IgJiBQYWludEJlaGF2aW9yOjpGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMpICYm
ICFmcmFtZSgpLm93bmVyRWxlbWVudCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCShyZXZpc2lv
biAyMzU1MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNjQzLDExICsxNjQzLDExIEBAIHZvaWQgUGFnZTo6c2V0SXNWaXNpYmxlKGJvb2wgaXNW
aXNpYmxlKQogICAgIGF1dG8gc3RhdGUgPSBtX2FjdGl2aXR5U3RhdGU7CiAKICAgICBpZiAoaXNW
aXNpYmxlKSB7Ci0gICAgICAgIHN0YXRlIC09IEFjdGl2aXR5U3RhdGU6OklzVmlzdWFsbHlJZGxl
OwotICAgICAgICBzdGF0ZSB8PSB7IEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSwgQWN0aXZpdHlT
dGF0ZTo6SXNWaXNpYmxlT3JPY2NsdWRlZCB9OworICAgICAgICBzdGF0ZS5yZW1vdmUoQWN0aXZp
dHlTdGF0ZTo6SXNWaXN1YWxseUlkbGUpOworICAgICAgICBzdGF0ZS5hZGQoeyBBY3Rpdml0eVN0
YXRlOjpJc1Zpc2libGUsIEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZU9yT2NjbHVkZWQgfSk7CiAg
ICAgfSBlbHNlIHsKLSAgICAgICAgc3RhdGUgfD0gQWN0aXZpdHlTdGF0ZTo6SXNWaXN1YWxseUlk
bGU7Ci0gICAgICAgIHN0YXRlIC09IHsgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlLCBBY3Rpdml0
eVN0YXRlOjpJc1Zpc2libGVPck9jY2x1ZGVkIH07CisgICAgICAgIHN0YXRlLmFkZChBY3Rpdml0
eVN0YXRlOjpJc1Zpc3VhbGx5SWRsZSk7CisgICAgICAgIHN0YXRlLnJlbW92ZSh7IEFjdGl2aXR5
U3RhdGU6OklzVmlzaWJsZSwgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlT3JPY2NsdWRlZCB9KTsK
ICAgICB9CiAgICAgc2V0QWN0aXZpdHlTdGF0ZShzdGF0ZSk7CiB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wYWdlL1BlcmZvcm1hbmNlT2JzZXJ2ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VPYnNlcnZlci5jcHAJKHJldmlzaW9uIDIzNTUzOSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VPYnNlcnZlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTY1LDcgKzY1LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gUGVyZm9ybWFuY2VPYnNlcnZl
cjo6bwogICAgIE9wdGlvblNldDxQZXJmb3JtYW5jZUVudHJ5OjpUeXBlPiBmaWx0ZXI7CiAgICAg
Zm9yIChjb25zdCBTdHJpbmcmIGVudHJ5VHlwZSA6IGluaXQuZW50cnlUeXBlcykgewogICAgICAg
ICBpZiAoYXV0byB0eXBlID0gUGVyZm9ybWFuY2VFbnRyeTo6cGFyc2VFbnRyeVR5cGVTdHJpbmco
ZW50cnlUeXBlKSkKLSAgICAgICAgICAgIGZpbHRlciB8PSAqdHlwZTsKKyAgICAgICAgICAgIGZp
bHRlci5hZGQoKnR5cGUpOwogICAgIH0KIAogICAgIGlmIChmaWx0ZXIuaXNFbXB0eSgpKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGFnZS9UZXh0SW5kaWNhdG9yLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wYWdlL1RleHRJbmRpY2F0b3IuY3BwCShyZXZpc2lvbiAyMzU1MzkpCisr
KyBTb3VyY2UvV2ViQ29yZS9wYWdlL1RleHRJbmRpY2F0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC03OCw4ICs3OCw4IEBAIFJlZlB0cjxUZXh0SW5kaWNhdG9yPiBUZXh0SW5kaWNhdG9yOjpjcmUK
ICAgICBWaXNpYmxlU2VsZWN0aW9uIG9sZFNlbGVjdGlvbiA9IGZyYW1lLT5zZWxlY3Rpb24oKS5z
ZWxlY3Rpb24oKTsKICAgICBPcHRpb25TZXQ8VGVtcG9yYXJ5U2VsZWN0aW9uT3B0aW9uPiB0ZW1w
b3JhcnlTZWxlY3Rpb25PcHRpb25zOwogI2lmIFBMQVRGT1JNKElPUykKLSAgICB0ZW1wb3JhcnlT
ZWxlY3Rpb25PcHRpb25zIHw9IFRlbXBvcmFyeVNlbGVjdGlvbk9wdGlvbklnbm9yZVNlbGVjdGlv
bkNoYW5nZXM7Ci0gICAgdGVtcG9yYXJ5U2VsZWN0aW9uT3B0aW9ucyB8PSBUZW1wb3JhcnlTZWxl
Y3Rpb25PcHRpb25FbmFibGVBcHBlYXJhbmNlVXBkYXRlczsKKyAgICB0ZW1wb3JhcnlTZWxlY3Rp
b25PcHRpb25zLmFkZChUZW1wb3JhcnlTZWxlY3Rpb25PcHRpb25JZ25vcmVTZWxlY3Rpb25DaGFu
Z2VzKTsKKyAgICB0ZW1wb3JhcnlTZWxlY3Rpb25PcHRpb25zLmFkZChUZW1wb3JhcnlTZWxlY3Rp
b25PcHRpb25FbmFibGVBcHBlYXJhbmNlVXBkYXRlcyk7CiAjZW5kaWYKICAgICBUZW1wb3JhcnlT
ZWxlY3Rpb25DaGFuZ2Ugc2VsZWN0aW9uQ2hhbmdlKCpmcmFtZSwgeyByYW5nZSB9LCB0ZW1wb3Jh
cnlTZWxlY3Rpb25PcHRpb25zKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9XaW5kb3dG
ZWF0dXJlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9XaW5kb3dGZWF0
dXJlcy5jcHAJKHJldmlzaW9uIDIzNTUzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvV2luZG93
RmVhdHVyZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjAsNyArMTIwLDcgQEAgT3B0aW9uU2V0
PERpc2FibGVkQWRhcHRhdGlvbnM+IHBhcnNlRGlzYQogICAgIGZvciAoYXV0byYgbmFtZSA6IGRp
c2FibGVkQWRhcHRhdGlvbnNTdHJpbmcuc3BsaXQoJywnKSkgewogICAgICAgICBhdXRvIG5vcm1h
bGl6ZWROYW1lID0gbmFtZS5zdHJpcFdoaXRlU3BhY2UoKS5jb252ZXJ0VG9BU0NJSUxvd2VyY2Fz
ZSgpOwogICAgICAgICBpZiAobm9ybWFsaXplZE5hbWUgPT0gd2F0Y2hBZGFwdGF0aW9uTmFtZSgp
KQotICAgICAgICAgICAgZGlzYWJsZWRBZGFwdGF0aW9ucyB8PSBEaXNhYmxlZEFkYXB0YXRpb25z
OjpXYXRjaDsKKyAgICAgICAgICAgIGRpc2FibGVkQWRhcHRhdGlvbnMuYWRkKERpc2FibGVkQWRh
cHRhdGlvbnM6OldhdGNoKTsKICAgICB9CiAgICAgcmV0dXJuIGRpc2FibGVkQWRhcHRhdGlvbnM7
CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3ku
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQ
b2xpY3kuaAkocmV2aXNpb24gMjM1NTM5KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29u
dGVudFNlY3VyaXR5UG9saWN5LmgJKHdvcmtpbmcgY29weSkKQEAgLTE1MSwxMSArMTUxLDExIEBA
IHB1YmxpYzoKICAgICB2b2lkIGVuZm9yY2VTYW5kYm94RmxhZ3MoU2FuZGJveEZsYWdzIHNhbmRi
b3hGbGFncykgeyBtX3NhbmRib3hGbGFncyB8PSBzYW5kYm94RmxhZ3M7IH0KICAgICB2b2lkIGFk
ZEhhc2hBbGdvcml0aG1zRm9ySW5saW5lU2NyaXB0cyhPcHRpb25TZXQ8Q29udGVudFNlY3VyaXR5
UG9saWN5SGFzaEFsZ29yaXRobT4gaGFzaEFsZ29yaXRobXNGb3JJbmxpbmVTY3JpcHRzKQogICAg
IHsKLSAgICAgICAgbV9oYXNoQWxnb3JpdGhtc0ZvcklubGluZVNjcmlwdHMgfD0gaGFzaEFsZ29y
aXRobXNGb3JJbmxpbmVTY3JpcHRzOworICAgICAgICBtX2hhc2hBbGdvcml0aG1zRm9ySW5saW5l
U2NyaXB0cy5hZGQoaGFzaEFsZ29yaXRobXNGb3JJbmxpbmVTY3JpcHRzKTsKICAgICB9CiAgICAg
dm9pZCBhZGRIYXNoQWxnb3JpdGhtc0ZvcklubGluZVN0eWxlc2hlZXRzKE9wdGlvblNldDxDb250
ZW50U2VjdXJpdHlQb2xpY3lIYXNoQWxnb3JpdGhtPiBoYXNoQWxnb3JpdGhtc0ZvcklubGluZVN0
eWxlc2hlZXRzKQogICAgIHsKLSAgICAgICAgbV9oYXNoQWxnb3JpdGhtc0ZvcklubGluZVN0eWxl
c2hlZXRzIHw9IGhhc2hBbGdvcml0aG1zRm9ySW5saW5lU3R5bGVzaGVldHM7CisgICAgICAgIG1f
aGFzaEFsZ29yaXRobXNGb3JJbmxpbmVTdHlsZXNoZWV0cy5hZGQoaGFzaEFsZ29yaXRobXNGb3JJ
bmxpbmVTdHlsZXNoZWV0cyk7CiAgICAgfQogCiAgICAgLy8gVXNlZCBieSBDb250ZW50U2VjdXJp
dHlQb2xpY3lTb3VyY2UKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1
cml0eVBvbGljeVNvdXJjZUxpc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3QuY3BwCShyZXZpc2lvbiAyMzU1
MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3Vy
Y2VMaXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDczLDcgKzQ3Myw3IEBAIGJvb2wgQ29udGVu
dFNlY3VyaXR5UG9saWN5U291cmNlTGlzdDo6cGEKICAgICBpZiAoZGlnZXN0LT52YWx1ZS5zaXpl
KCkgPiBDb250ZW50U2VjdXJpdHlQb2xpY3lIYXNoOjptYXhpbXVtRGlnZXN0TGVuZ3RoKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBtX2hhc2hBbGdvcml0aG1zVXNlZCB8PSBkaWdlc3Qt
PmFsZ29yaXRobTsKKyAgICBtX2hhc2hBbGdvcml0aG1zVXNlZC5hZGQoZGlnZXN0LT5hbGdvcml0
aG0pOwogICAgIG1faGFzaGVzLmFkZChXVEZNb3ZlKCpkaWdlc3QpKTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtRXZlbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUV2ZW50LmgJKHJldmlz
aW9uIDIzNTUzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtRXZlbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtMTE1LDEzICsxMTUsMTMgQEAgcHJvdGVjdGVkOgogICAgICAgICAs
IG1fdGltZXN0YW1wKHRpbWVzdGFtcCkKICAgICB7CiAgICAgICAgIGlmIChzaGlmdEtleSkKLSAg
ICAgICAgICAgIG1fbW9kaWZpZXJzIHw9IE1vZGlmaWVyOjpTaGlmdEtleTsKKyAgICAgICAgICAg
IG1fbW9kaWZpZXJzLmFkZChNb2RpZmllcjo6U2hpZnRLZXkpOwogICAgICAgICBpZiAoY3RybEtl
eSkKLSAgICAgICAgICAgIG1fbW9kaWZpZXJzIHw9IE1vZGlmaWVyOjpDdHJsS2V5OworICAgICAg
ICAgICAgbV9tb2RpZmllcnMuYWRkKE1vZGlmaWVyOjpDdHJsS2V5KTsKICAgICAgICAgaWYgKGFs
dEtleSkKLSAgICAgICAgICAgIG1fbW9kaWZpZXJzIHw9IE1vZGlmaWVyOjpBbHRLZXk7CisgICAg
ICAgICAgICBtX21vZGlmaWVycy5hZGQoTW9kaWZpZXI6OkFsdEtleSk7CiAgICAgICAgIGlmICht
ZXRhS2V5KQotICAgICAgICAgICAgbV9tb2RpZmllcnMgfD0gTW9kaWZpZXI6Ok1ldGFLZXk7Cisg
ICAgICAgICAgICBtX21vZGlmaWVycy5hZGQoTW9kaWZpZXI6Ok1ldGFLZXkpOwogICAgIH0KIAog
ICAgIC8vIEV4cGxpY2l0IHByb3RlY3RlZCBkZXN0cnVjdG9yIHNvIHRoYXQgcGVvcGxlIGRvbid0
IGFjY2lkZW50YWxseQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1BsYXRmb3Jt
TW91c2VFdmVudEd0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL1BsYXRmb3JtTW91c2VFdmVudEd0ay5jcHAJKHJldmlzaW9uIDIzNTUzOSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybU1vdXNlRXZlbnRHdGsuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00NywxNSArNDcsMTUgQEAgUGxhdGZvcm1Nb3VzZUV2ZW50OjpQbGF0Zm9ybU1v
dXNlRXZlbnQoRwogICAgIG1fbW9kaWZpZXJGbGFncyA9IDA7CiAKICAgICBpZiAoZXZlbnQtPnN0
YXRlICYgR0RLX1NISUZUX01BU0spCi0gICAgICAgIG1fbW9kaWZpZXJzIHw9IFBsYXRmb3JtRXZl
bnQ6Ok1vZGlmaWVyOjpTaGlmdEtleTsKKyAgICAgICAgbV9tb2RpZmllcnMuYWRkKFBsYXRmb3Jt
RXZlbnQ6Ok1vZGlmaWVyOjpTaGlmdEtleSk7CiAgICAgaWYgKGV2ZW50LT5zdGF0ZSAmIEdES19D
T05UUk9MX01BU0spCi0gICAgICAgIG1fbW9kaWZpZXJzIHw9IFBsYXRmb3JtRXZlbnQ6Ok1vZGlm
aWVyOjpDdHJsS2V5OworICAgICAgICBtX21vZGlmaWVycy5hZGQoUGxhdGZvcm1FdmVudDo6TW9k
aWZpZXI6OkN0cmxLZXkpOwogICAgIGlmIChldmVudC0+c3RhdGUgJiBHREtfTU9EMV9NQVNLKQot
ICAgICAgICBtX21vZGlmaWVycyB8PSBQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcjo6QWx0S2V5Owor
ICAgICAgICBtX21vZGlmaWVycy5hZGQoUGxhdGZvcm1FdmVudDo6TW9kaWZpZXI6OkFsdEtleSk7
CiAgICAgaWYgKGV2ZW50LT5zdGF0ZSAmIEdES19NRVRBX01BU0spCi0gICAgICAgIG1fbW9kaWZp
ZXJzIHw9IFBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVyOjpNZXRhS2V5OworICAgICAgICBtX21vZGlm
aWVycy5hZGQoUGxhdGZvcm1FdmVudDo6TW9kaWZpZXI6Ok1ldGFLZXkpOwogICAgIGlmIChQbGF0
Zm9ybUtleWJvYXJkRXZlbnQ6Om1vZGlmaWVyc0NvbnRhaW5DYXBzTG9jayhldmVudC0+c3RhdGUp
KQotICAgICAgICBtX21vZGlmaWVycyB8PSBQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcjo6Q2Fwc0xv
Y2tLZXk7CisgICAgICAgIG1fbW9kaWZpZXJzLmFkZChQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcjo6
Q2Fwc0xvY2tLZXkpOwogCiAgICAgc3dpdGNoIChldmVudC0+dHlwZSkgewogICAgIGNhc2UgR0RL
X0JVVFRPTl9QUkVTUzoKQEAgLTk2LDE1ICs5NiwxNSBAQCBQbGF0Zm9ybU1vdXNlRXZlbnQ6OlBs
YXRmb3JtTW91c2VFdmVudChHCiAgICAgbV9tb2RpZmllckZsYWdzID0gMDsKIAogICAgIGlmICht
b3Rpb24tPnN0YXRlICYgR0RLX1NISUZUX01BU0spCi0gICAgICAgIG1fbW9kaWZpZXJzIHw9IFBs
YXRmb3JtRXZlbnQ6Ok1vZGlmaWVyOjpTaGlmdEtleTsKKyAgICAgICAgbV9tb2RpZmllcnMuYWRk
KFBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVyOjpTaGlmdEtleSk7CiAgICAgaWYgKG1vdGlvbi0+c3Rh
dGUgJiBHREtfQ09OVFJPTF9NQVNLKQotICAgICAgICBtX21vZGlmaWVycyB8PSBQbGF0Zm9ybUV2
ZW50OjpNb2RpZmllcjo6Q3RybEtleTsKKyAgICAgICAgbV9tb2RpZmllcnMuYWRkKFBsYXRmb3Jt
RXZlbnQ6Ok1vZGlmaWVyOjpDdHJsS2V5KTsKICAgICBpZiAobW90aW9uLT5zdGF0ZSAmIEdES19N
T0QxX01BU0spCi0gICAgICAgIG1fbW9kaWZpZXJzIHw9IFBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVy
OjpBbHRLZXk7CisgICAgICAgIG1fbW9kaWZpZXJzLmFkZChQbGF0Zm9ybUV2ZW50OjpNb2RpZmll
cjo6QWx0S2V5KTsKICAgICBpZiAobW90aW9uLT5zdGF0ZSAmIEdES19NRVRBX01BU0spCi0gICAg
ICAgIG1fbW9kaWZpZXJzIHw9IFBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVyOjpNZXRhS2V5OworICAg
ICAgICBtX21vZGlmaWVycy5hZGQoUGxhdGZvcm1FdmVudDo6TW9kaWZpZXI6Ok1ldGFLZXkpOwog
ICAgIGlmIChQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6Om1vZGlmaWVyc0NvbnRhaW5DYXBzTG9jayht
b3Rpb24tPnN0YXRlKSkKLSAgICAgICAgbV9tb2RpZmllcnMgfD0gUGxhdGZvcm1FdmVudDo6TW9k
aWZpZXI6OkNhcHNMb2NrS2V5OworICAgICAgICBtX21vZGlmaWVycy5hZGQoUGxhdGZvcm1FdmVu
dDo6TW9kaWZpZXI6OkNhcHNMb2NrS2V5KTsKIAogICAgIHN3aXRjaCAobW90aW9uLT50eXBlKSB7
CiAgICAgY2FzZSBHREtfTU9USU9OX05PVElGWToKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9SZW5kZXJUaGVtZUdhZGdldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR2FkZ2V0LmNwcAkocmV2aXNpb24gMjM1NTM5KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR2FkZ2V0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzU4LDEzICszNTgsMTMgQEAgUmVuZGVyVGhlbWVTY3JvbGxiYXJHYWRn
ZXQ6OlJlbmRlclRoZW1lUwogICAgIGd0a19zdHlsZV9jb250ZXh0X2dldF9zdHlsZShtX2NvbnRl
eHQuZ2V0KCksICJoYXMtYmFja3dhcmQtc3RlcHBlciIsICZoYXNCYWNrd2FyZCwgImhhcy1mb3J3
YXJkLXN0ZXBwZXIiLCAmaGFzRm9yd2FyZCwKICAgICAgICAgImhhcy1zZWNvbmRhcnktYmFja3dh
cmQtc3RlcHBlciIsICZoYXNTZWNvbmRhcnlCYWNrd2FyZCwgImhhcy1zZWNvbmRhcnktZm9yd2Fy
ZC1zdGVwcGVyIiwgJmhhc1NlY29uZGFyeUZvcndhcmQsIG51bGxwdHIpOwogICAgIGlmIChoYXNC
YWNrd2FyZCkKLSAgICAgICAgbV9zdGVwcGVycyB8PSBTdGVwcGVyczo6QmFja3dhcmQ7CisgICAg
ICAgIG1fc3RlcHBlcnMuYWRkKFN0ZXBwZXJzOjpCYWNrd2FyZCk7CiAgICAgaWYgKGhhc0Zvcndh
cmQpCi0gICAgICAgIG1fc3RlcHBlcnMgfD0gU3RlcHBlcnM6OkZvcndhcmQ7CisgICAgICAgIG1f
c3RlcHBlcnMuYWRkKFN0ZXBwZXJzOjpGb3J3YXJkKTsKICAgICBpZiAoaGFzU2Vjb25kYXJ5QmFj
a3dhcmQpCi0gICAgICAgIG1fc3RlcHBlcnMgfD0gU3RlcHBlcnM6OlNlY29uZGFyeUJhY2t3YXJk
OworICAgICAgICBtX3N0ZXBwZXJzLmFkZChTdGVwcGVyczo6U2Vjb25kYXJ5QmFja3dhcmQpOwog
ICAgIGlmIChoYXNTZWNvbmRhcnlGb3J3YXJkKQotICAgICAgICBtX3N0ZXBwZXJzIHw9IFN0ZXBw
ZXJzOjpTZWNvbmRhcnlGb3J3YXJkOworICAgICAgICBtX3N0ZXBwZXJzLmFkZChTdGVwcGVyczo6
U2Vjb25kYXJ5Rm9yd2FyZCk7CiB9CiAKIHZvaWQgUmVuZGVyVGhlbWVTY3JvbGxiYXJHYWRnZXQ6
OnJlbmRlclN0ZXBwZXIoY2Fpcm9fdCogY3IsIGNvbnN0IEZsb2F0UmVjdCYgcGFpbnRSZWN0LCBS
ZW5kZXJUaGVtZUdhZGdldCogc3RlcHBlckdhZGdldCwgR3RrT3JpZW50YXRpb24gb3JpZW50YXRp
b24sIFN0ZXBwZXJzIHN0ZXBwZXIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
UGxhdGZvcm1FdmVudEZhY3RvcnlJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1BsYXRmb3JtRXZlbnRGYWN0b3J5SU9TLm1tCShyZXZpc2lvbiAyMzU1Mzkp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1FdmVudEZhY3RvcnlJT1Mu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTQzLDE1ICs0MywxNSBAQCBzdGF0aWMgT3B0aW9uU2V0PFBs
YXRmb3JtRXZlbnQ6Ok1vZGlmaWVyCiAgICAgT3B0aW9uU2V0PFBsYXRmb3JtRXZlbnQ6Ok1vZGlm
aWVyPiBtb2RpZmllcnM7CiAKICAgICBpZiAoZXZlbnQubW9kaWZpZXJGbGFncyAmIFdlYkV2ZW50
RmxhZ01hc2tTaGlmdCkKLSAgICAgICAgbW9kaWZpZXJzIHw9IFBsYXRmb3JtRXZlbnQ6Ok1vZGlm
aWVyOjpTaGlmdEtleTsKKyAgICAgICAgbW9kaWZpZXJzLmFkZChQbGF0Zm9ybUV2ZW50OjpNb2Rp
Zmllcjo6U2hpZnRLZXkpOwogICAgIGlmIChldmVudC5tb2RpZmllckZsYWdzICYgV2ViRXZlbnRG
bGFnTWFza0NvbnRyb2wpCi0gICAgICAgIG1vZGlmaWVycyB8PSBQbGF0Zm9ybUV2ZW50OjpNb2Rp
Zmllcjo6Q3RybEtleTsKKyAgICAgICAgbW9kaWZpZXJzLmFkZChQbGF0Zm9ybUV2ZW50OjpNb2Rp
Zmllcjo6Q3RybEtleSk7CiAgICAgaWYgKGV2ZW50Lm1vZGlmaWVyRmxhZ3MgJiBXZWJFdmVudEZs
YWdNYXNrQWx0ZXJuYXRlKQotICAgICAgICBtb2RpZmllcnMgfD0gUGxhdGZvcm1FdmVudDo6TW9k
aWZpZXI6OkFsdEtleTsKKyAgICAgICAgbW9kaWZpZXJzLmFkZChQbGF0Zm9ybUV2ZW50OjpNb2Rp
Zmllcjo6QWx0S2V5KTsKICAgICBpZiAoZXZlbnQubW9kaWZpZXJGbGFncyAmIFdlYkV2ZW50Rmxh
Z01hc2tDb21tYW5kKQotICAgICAgICBtb2RpZmllcnMgfD0gUGxhdGZvcm1FdmVudDo6TW9kaWZp
ZXI6Ok1ldGFLZXk7CisgICAgICAgIG1vZGlmaWVycy5hZGQoUGxhdGZvcm1FdmVudDo6TW9kaWZp
ZXI6Ok1ldGFLZXkpOwogICAgIGlmIChldmVudC5tb2RpZmllckZsYWdzICYgV2ViRXZlbnRGbGFn
TWFza0FscGhhU2hpZnQpCi0gICAgICAgIG1vZGlmaWVycyB8PSBQbGF0Zm9ybUV2ZW50OjpNb2Rp
Zmllcjo6Q2Fwc0xvY2tLZXk7CisgICAgICAgIG1vZGlmaWVycy5hZGQoUGxhdGZvcm1FdmVudDo6
TW9kaWZpZXI6OkNhcHNMb2NrS2V5KTsKIAogICAgIHJldHVybiBtb2RpZmllcnM7CiB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1FdmVudEZhY3RvcnlNYWMubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtRXZlbnRG
YWN0b3J5TWFjLm1tCShyZXZpc2lvbiAyMzU1MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvUGxhdGZvcm1FdmVudEZhY3RvcnlNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTY2Niwx
NSArNjY2LDE1IEBAIE9wdGlvblNldDxQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcj4gbW9kaWYKICAg
ICBPcHRpb25TZXQ8UGxhdGZvcm1FdmVudDo6TW9kaWZpZXI+IG1vZGlmaWVyczsKIAogICAgIGlm
IChldmVudC5tb2RpZmllckZsYWdzICYgTlNFdmVudE1vZGlmaWVyRmxhZ1NoaWZ0KQotICAgICAg
ICBtb2RpZmllcnMgfD0gUGxhdGZvcm1FdmVudDo6TW9kaWZpZXI6OlNoaWZ0S2V5OworICAgICAg
ICBtb2RpZmllcnMuYWRkKFBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVyOjpTaGlmdEtleSk7CiAgICAg
aWYgKGV2ZW50Lm1vZGlmaWVyRmxhZ3MgJiBOU0V2ZW50TW9kaWZpZXJGbGFnQ29udHJvbCkKLSAg
ICAgICAgbW9kaWZpZXJzIHw9IFBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVyOjpDdHJsS2V5OworICAg
ICAgICBtb2RpZmllcnMuYWRkKFBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVyOjpDdHJsS2V5KTsKICAg
ICBpZiAoZXZlbnQubW9kaWZpZXJGbGFncyAmIE5TRXZlbnRNb2RpZmllckZsYWdPcHRpb24pCi0g
ICAgICAgIG1vZGlmaWVycyB8PSBQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcjo6QWx0S2V5OworICAg
ICAgICBtb2RpZmllcnMuYWRkKFBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVyOjpBbHRLZXkpOwogICAg
IGlmIChldmVudC5tb2RpZmllckZsYWdzICYgTlNFdmVudE1vZGlmaWVyRmxhZ0NvbW1hbmQpCi0g
ICAgICAgIG1vZGlmaWVycyB8PSBQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcjo6TWV0YUtleTsKKyAg
ICAgICAgbW9kaWZpZXJzLmFkZChQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcjo6TWV0YUtleSk7CiAg
ICAgaWYgKGV2ZW50Lm1vZGlmaWVyRmxhZ3MgJiBOU0V2ZW50TW9kaWZpZXJGbGFnQ2Fwc0xvY2sp
Ci0gICAgICAgIG1vZGlmaWVycyB8PSBQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcjo6Q2Fwc0xvY2tL
ZXk7CisgICAgICAgIG1vZGlmaWVycy5hZGQoUGxhdGZvcm1FdmVudDo6TW9kaWZpZXI6OkNhcHNM
b2NrS2V5KTsKIAogICAgIHJldHVybiBtb2RpZmllcnM7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAJKHJldmlzaW9uIDIzNTUzOSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1Nywx
NyArNTU3LDE3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZUxheWVyUG9zaXRpb25zKFIKICAg
ICAvLyBDbGVhciB0aGUgSXNDb21wb3NpdGluZ1VwZGF0ZVJvb3QgZmxhZyBvbmNlIHdlJ3ZlIGZv
dW5kIHRoZSBmaXJzdCBjb21wb3NpdGluZyBsYXllciBpbiB0aGlzIHVwZGF0ZS4KICAgICBib29s
IGlzVXBkYXRlUm9vdCA9IGZsYWdzLmNvbnRhaW5zKElzQ29tcG9zaXRpbmdVcGRhdGVSb290KTsK
ICAgICBpZiAoaXNDb21wb3NpdGVkKCkpCi0gICAgICAgIGZsYWdzIC09IElzQ29tcG9zaXRpbmdV
cGRhdGVSb290OworICAgICAgICBmbGFncy5yZW1vdmUoSXNDb21wb3NpdGluZ1VwZGF0ZVJvb3Qp
OwogCiAgICAgaWYgKHJlbmRlcmVyKCkuaXNJbkZsb3dSZW5kZXJGcmFnbWVudGVkRmxvdygpKSB7
CiAgICAgICAgIHVwZGF0ZVBhZ2luYXRpb24oKTsKLSAgICAgICAgZmxhZ3MgfD0gVXBkYXRlUGFn
aW5hdGlvbjsKKyAgICAgICAgZmxhZ3MuYWRkKFVwZGF0ZVBhZ2luYXRpb24pOwogICAgIH0KIAog
ICAgIGlmICh0cmFuc2Zvcm0oKSkgewotICAgICAgICBmbGFncyB8PSBTZWVuVHJhbnNmb3JtZWRM
YXllcjsKKyAgICAgICAgZmxhZ3MuYWRkKFNlZW5UcmFuc2Zvcm1lZExheWVyKTsKICAgICAgICAg
aWYgKCF0cmFuc2Zvcm0oKS0+aXNBZmZpbmUoKSkKLSAgICAgICAgICAgIGZsYWdzIHw9IFNlZW4z
RFRyYW5zZm9ybWVkTGF5ZXI7CisgICAgICAgICAgICBmbGFncy5hZGQoU2VlbjNEVHJhbnNmb3Jt
ZWRMYXllcik7CiAgICAgfQogCiAgICAgZm9yIChSZW5kZXJMYXllciogY2hpbGQgPSBmaXJzdENo
aWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKQpAQCAtNTc2LDkgKzU3
Niw5IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZUxheWVyUG9zaXRpb25zKFIKICAgICBpZiAo
KGZsYWdzICYgVXBkYXRlQ29tcG9zaXRpbmdMYXllcnMpICYmIGlzQ29tcG9zaXRlZCgpKSB7CiAg
ICAgICAgIE9wdGlvblNldDxSZW5kZXJMYXllckJhY2tpbmc6OlVwZGF0ZUFmdGVyTGF5b3V0Rmxh
Z3M+IHVwZGF0ZUZsYWdzOwogICAgICAgICBpZiAoZmxhZ3MgJiBOZWVkc0Z1bGxSZXBhaW50SW5C
YWNraW5nKQotICAgICAgICAgICAgdXBkYXRlRmxhZ3MgfD0gUmVuZGVyTGF5ZXJCYWNraW5nOjpV
cGRhdGVBZnRlckxheW91dEZsYWdzOjpOZWVkc0Z1bGxSZXBhaW50OworICAgICAgICAgICAgdXBk
YXRlRmxhZ3MuYWRkKFJlbmRlckxheWVyQmFja2luZzo6VXBkYXRlQWZ0ZXJMYXlvdXRGbGFnczo6
TmVlZHNGdWxsUmVwYWludCk7CiAgICAgICAgIGlmIChpc1VwZGF0ZVJvb3QpCi0gICAgICAgICAg
ICB1cGRhdGVGbGFncyB8PSBSZW5kZXJMYXllckJhY2tpbmc6OlVwZGF0ZUFmdGVyTGF5b3V0Rmxh
Z3M6OklzVXBkYXRlUm9vdDsKKyAgICAgICAgICAgIHVwZGF0ZUZsYWdzLmFkZChSZW5kZXJMYXll
ckJhY2tpbmc6OlVwZGF0ZUFmdGVyTGF5b3V0RmxhZ3M6OklzVXBkYXRlUm9vdCk7CiAgICAgICAg
IGJhY2tpbmcoKS0+dXBkYXRlQWZ0ZXJMYXlvdXQodXBkYXRlRmxhZ3MpOwogICAgIH0KICAgICAg
ICAgCkBAIC04NTEsMTYgKzg1MSwxNiBAQCB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVMYXllclBv
c2l0aW9uc0FmCiAKICAgICBib29sIHBvc2l0aW9uQ2hhbmdlZCA9IHVwZGF0ZUxheWVyUG9zaXRp
b24oKTsKICAgICBpZiAocG9zaXRpb25DaGFuZ2VkKQotICAgICAgICBmbGFncyB8PSBIYXNDaGFu
Z2VkQW5jZXN0b3I7CisgICAgICAgIGZsYWdzLmFkZChIYXNDaGFuZ2VkQW5jZXN0b3IpOwogCiAg
ICAgaWYgKGZsYWdzLmNvbnRhaW5zQW55KHsgSGFzQ2hhbmdlZEFuY2VzdG9yLCBIYXNTZWVuVmll
d3BvcnRDb25zdHJhaW5lZEFuY2VzdG9yLCBJc092ZXJmbG93U2Nyb2xsIH0pKQogICAgICAgICBj
bGVhckNsaXBSZWN0cygpOwogCiAgICAgaWYgKHJlbmRlcmVyKCkuc3R5bGUoKS5oYXNWaWV3cG9y
dENvbnN0cmFpbmVkUG9zaXRpb24oKSkKLSAgICAgICAgZmxhZ3MgfD0gSGFzU2VlblZpZXdwb3J0
Q29uc3RyYWluZWRBbmNlc3RvcjsKKyAgICAgICAgZmxhZ3MuYWRkKEhhc1NlZW5WaWV3cG9ydENv
bnN0cmFpbmVkQW5jZXN0b3IpOwogCiAgICAgaWYgKHJlbmRlcmVyKCkuaGFzT3ZlcmZsb3dDbGlw
KCkpCi0gICAgICAgIGZsYWdzIHw9IEhhc1NlZW5BbmNlc3RvcldpdGhPdmVyZmxvd0NsaXA7Cisg
ICAgICAgIGZsYWdzLmFkZChIYXNTZWVuQW5jZXN0b3JXaXRoT3ZlcmZsb3dDbGlwKTsKICAgICAK
ICAgICBib29sIHNob3VsZENvbXB1dGVSZXBhaW50UmVjdHMgPSAoZmxhZ3MuY29udGFpbnMoSGFz
U2VlblZpZXdwb3J0Q29uc3RyYWluZWRBbmNlc3RvcikgfHwgZmxhZ3MuY29udGFpbnNBbGwoeyBJ
c092ZXJmbG93U2Nyb2xsLCBIYXNTZWVuQW5jZXN0b3JXaXRoT3ZlcmZsb3dDbGlwIH0pKSAmJiBp
c1NlbGZQYWludGluZ0xheWVyKCk7CiAgICAgYm9vbCBpc1Zpc3VhbGx5RW1wdHkgPSAhaXNWaXN1
YWxseU5vbkVtcHR5KCk7CkBAIC0zOTczLDcgKzM5NzMsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpw
YWludExheWVyKEdyYXBoaWNzQ29uCiAgICAgICAgIC8vIFRoZSBwZXJmb3JtaW5nUGFpbnRJbnZh
bGlkYXRpb24oKSBwYWludGluZyBwYXNzIGdvZXMgdGhyb3VnaCBjb21wb3NpdGluZyBsYXllcnMs
CiAgICAgICAgIC8vIGJ1dCB3ZSBuZWVkIHRvIGVuc3VyZSB0aGF0IHdlIGRvbid0IGNhY2hlIGNs
aXAgcmVjdHMgY29tcHV0ZWQgd2l0aCB0aGUgd3Jvbmcgcm9vdCBpbiB0aGlzIGNhc2UuCiAgICAg
ICAgIGlmIChjb250ZXh0LnBlcmZvcm1pbmdQYWludEludmFsaWRhdGlvbigpIHx8IChwYWludGlu
Z0luZm8ucGFpbnRCZWhhdmlvciAmIFBhaW50QmVoYXZpb3I6OkZsYXR0ZW5Db21wb3NpdGluZ0xh
eWVycykpCi0gICAgICAgICAgICBwYWludEZsYWdzIHw9IFBhaW50TGF5ZXJUZW1wb3JhcnlDbGlw
UmVjdHM7CisgICAgICAgICAgICBwYWludEZsYWdzLmFkZChQYWludExheWVyVGVtcG9yYXJ5Q2xp
cFJlY3RzKTsKICAgICAgICAgZWxzZSBpZiAoIWJhY2tpbmcoKS0+cGFpbnRzSW50b1dpbmRvdygp
CiAgICAgICAgICAgICAmJiAhYmFja2luZygpLT5wYWludHNJbnRvQ29tcG9zaXRlZEFuY2VzdG9y
KCkKICAgICAgICAgICAgICYmICFzaG91bGREb1NvZnR3YXJlUGFpbnQodGhpcywgcGFpbnRGbGFn
cy5jb250YWlucyhQYWludExheWVyUGFpbnRpbmdSZWZsZWN0aW9uKSkKQEAgLTQwMDAsNyArNDAw
MCw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXIoR3JhcGhpY3NDb24KICAgICAgICAg
cmV0dXJuOwogCiAgICAgaWYgKHBhaW50c1dpdGhUcmFuc3BhcmVuY3kocGFpbnRpbmdJbmZvLnBh
aW50QmVoYXZpb3IpKQotICAgICAgICBwYWludEZsYWdzIHw9IFBhaW50TGF5ZXJIYXZlVHJhbnNw
YXJlbmN5OworICAgICAgICBwYWludEZsYWdzLmFkZChQYWludExheWVySGF2ZVRyYW5zcGFyZW5j
eSk7CiAKICAgICAvLyBQYWludExheWVyQXBwbGllZFRyYW5zZm9ybSBpcyB1c2VkIGluIFJlbmRl
clJlcGxpY2EsIHRvIGF2b2lkIGFwcGx5aW5nIHRoZSB0cmFuc2Zvcm0gdHdpY2UuCiAgICAgaWYg
KHBhaW50c1dpdGhUcmFuc2Zvcm0ocGFpbnRpbmdJbmZvLnBhaW50QmVoYXZpb3IpICYmICEocGFp
bnRGbGFncyAmIFBhaW50TGF5ZXJBcHBsaWVkVHJhbnNmb3JtKSkgewpAQCAtNDA2MSw3ICs0MDYx
LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMYXllckNvbnRlbnRzQW5kUgogICAgICAgICBt
X3BhaW50aW5nSW5zaWRlUmVmbGVjdGlvbiA9IGZhbHNlOwogICAgIH0KIAotICAgIGxvY2FsUGFp
bnRGbGFncyB8PSBwYWludExheWVyUGFpbnRpbmdDb21wb3NpdGluZ0FsbFBoYXNlc0ZsYWdzKCk7
CisgICAgbG9jYWxQYWludEZsYWdzLmFkZChwYWludExheWVyUGFpbnRpbmdDb21wb3NpdGluZ0Fs
bFBoYXNlc0ZsYWdzKCkpOwogICAgIHBhaW50TGF5ZXJDb250ZW50cyhjb250ZXh0LCBwYWludGlu
Z0luZm8sIGxvY2FsUGFpbnRGbGFncyk7CiB9CiAKQEAgLTQzNTUsMjEgKzQzNTUsMjEgQEAgdm9p
ZCBSZW5kZXJMYXllcjo6cGFpbnRMYXllckNvbnRlbnRzKEdyYQogCiAgICAgICAgIE9wdGlvblNl
dDxQYWludEJlaGF2aW9yPiBwYWludEJlaGF2aW9yID0gUGFpbnRCZWhhdmlvcjo6Tm9ybWFsOwog
ICAgICAgICBpZiAobG9jYWxQYWludEZsYWdzICYgUGFpbnRMYXllclBhaW50aW5nU2tpcFJvb3RC
YWNrZ3JvdW5kKQotICAgICAgICAgICAgcGFpbnRCZWhhdmlvciB8PSBQYWludEJlaGF2aW9yOjpT
a2lwUm9vdEJhY2tncm91bmQ7CisgICAgICAgICAgICBwYWludEJlaGF2aW9yLmFkZChQYWludEJl
aGF2aW9yOjpTa2lwUm9vdEJhY2tncm91bmQpOwogICAgICAgICBlbHNlIGlmIChsb2NhbFBhaW50
RmxhZ3MgJiBQYWludExheWVyUGFpbnRpbmdSb290QmFja2dyb3VuZE9ubHkpCi0gICAgICAgICAg
ICBwYWludEJlaGF2aW9yIHw9IFBhaW50QmVoYXZpb3I6OlJvb3RCYWNrZ3JvdW5kT25seTsKKyAg
ICAgICAgICAgIHBhaW50QmVoYXZpb3IuYWRkKFBhaW50QmVoYXZpb3I6OlJvb3RCYWNrZ3JvdW5k
T25seSk7CiAKICAgICAgICAgaWYgKHBhaW50aW5nSW5mby5wYWludEJlaGF2aW9yICYgUGFpbnRC
ZWhhdmlvcjo6RmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzKQotICAgICAgICAgICAgcGFpbnRCZWhh
dmlvciB8PSBQYWludEJlaGF2aW9yOjpGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnM7CisgICAgICAg
ICAgICBwYWludEJlaGF2aW9yLmFkZChQYWludEJlaGF2aW9yOjpGbGF0dGVuQ29tcG9zaXRpbmdM
YXllcnMpOwogICAgICAgICAKICAgICAgICAgaWYgKHBhaW50aW5nSW5mby5wYWludEJlaGF2aW9y
ICYgUGFpbnRCZWhhdmlvcjo6U25hcHNob3R0aW5nKQotICAgICAgICAgICAgcGFpbnRCZWhhdmlv
ciB8PSBQYWludEJlaGF2aW9yOjpTbmFwc2hvdHRpbmc7CisgICAgICAgICAgICBwYWludEJlaGF2
aW9yLmFkZChQYWludEJlaGF2aW9yOjpTbmFwc2hvdHRpbmcpOwogICAgICAgICAKICAgICAgICAg
aWYgKChwYWludGluZ0luZm8ucGFpbnRCZWhhdmlvciAmIFBhaW50QmVoYXZpb3I6OlRpbGVGaXJz
dFBhaW50KSAmJiBpc1JlbmRlclZpZXdMYXllcigpKQotICAgICAgICAgICAgcGFpbnRCZWhhdmlv
ciB8PSBQYWludEJlaGF2aW9yOjpUaWxlRmlyc3RQYWludDsKKyAgICAgICAgICAgIHBhaW50QmVo
YXZpb3IuYWRkKFBhaW50QmVoYXZpb3I6OlRpbGVGaXJzdFBhaW50KTsKIAogICAgICAgICBpZiAo
cGFpbnRpbmdJbmZvLnBhaW50QmVoYXZpb3IgJiBQYWludEJlaGF2aW9yOjpFeGNsdWRlU2VsZWN0
aW9uKQotICAgICAgICAgICAgcGFpbnRCZWhhdmlvciB8PSBQYWludEJlaGF2aW9yOjpFeGNsdWRl
U2VsZWN0aW9uOworICAgICAgICAgICAgcGFpbnRCZWhhdmlvci5hZGQoUGFpbnRCZWhhdmlvcjo6
RXhjbHVkZVNlbGVjdGlvbik7CiAKICAgICAgICAgTGF5b3V0UmVjdCBwYWludERpcnR5UmVjdCA9
IGxvY2FsUGFpbnRpbmdJbmZvLnBhaW50RGlydHlSZWN0OwogICAgICAgICBpZiAoc2hvdWxkUGFp
bnRDb250ZW50IHx8IHNob3VsZFBhaW50T3V0bGluZSB8fCBpc1BhaW50aW5nT3ZlcmxheVNjcm9s
bGJhcnMpIHsKQEAgLTQ0MzgsMTMgKzQ0MzgsMTMgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRM
YXllckNvbnRlbnRzKEdyYQogICAgIGlmIChzaG91bGRQYWludENvbnRlbnQgJiYgIShzZWxlY3Rp
b25Pbmx5IHx8IHNlbGVjdGlvbkFuZEJhY2tncm91bmRzT25seSkpIHsKICAgICAgICAgT3B0aW9u
U2V0PFBhaW50QmVoYXZpb3I+IHBhaW50QmVoYXZpb3IgPSBQYWludEJlaGF2aW9yOjpOb3JtYWw7
CiAgICAgICAgIGlmIChwYWludGluZ0luZm8ucGFpbnRCZWhhdmlvciAmIFBhaW50QmVoYXZpb3I6
OkZsYXR0ZW5Db21wb3NpdGluZ0xheWVycykKLSAgICAgICAgICAgIHBhaW50QmVoYXZpb3IgfD0g
UGFpbnRCZWhhdmlvcjo6RmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzOworICAgICAgICAgICAgcGFp
bnRCZWhhdmlvci5hZGQoUGFpbnRCZWhhdmlvcjo6RmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzKTsK
ICAgICAgICAgCiAgICAgICAgIGlmIChwYWludGluZ0luZm8ucGFpbnRCZWhhdmlvciAmIFBhaW50
QmVoYXZpb3I6OlNuYXBzaG90dGluZykKLSAgICAgICAgICAgIHBhaW50QmVoYXZpb3IgfD0gUGFp
bnRCZWhhdmlvcjo6U25hcHNob3R0aW5nOworICAgICAgICAgICAgcGFpbnRCZWhhdmlvci5hZGQo
UGFpbnRCZWhhdmlvcjo6U25hcHNob3R0aW5nKTsKICAgICAgICAgCiAgICAgICAgIGlmIChwYWlu
dGluZ0luZm8ucGFpbnRCZWhhdmlvciAmIFBhaW50QmVoYXZpb3I6OlRpbGVGaXJzdFBhaW50KQot
ICAgICAgICAgICAgcGFpbnRCZWhhdmlvciB8PSBQYWludEJlaGF2aW9yOjpUaWxlRmlyc3RQYWlu
dDsKKyAgICAgICAgICAgIHBhaW50QmVoYXZpb3IuYWRkKFBhaW50QmVoYXZpb3I6OlRpbGVGaXJz
dFBhaW50KTsKIAogICAgICAgICBpZiAoc2hvdWxkUGFpbnRNYXNrKHBhaW50aW5nSW5mby5wYWlu
dEJlaGF2aW9yLCBsb2NhbFBhaW50RmxhZ3MpKSB7CiAgICAgICAgICAgICAvLyBQYWludCB0aGUg
bWFzayBmb3IgdGhlIGZyYWdtZW50cy4KQEAgLTQ3NzAsMTMgKzQ3NzAsMTMgQEAgdm9pZCBSZW5k
ZXJMYXllcjo6cGFpbnRGb3JlZ3JvdW5kRm9yRnJhZwogICAgICAgICBsb2NhbFBhaW50QmVoYXZp
b3IgPSBwYWludEJlaGF2aW9yOwogCiAgICAgaWYgKGxvY2FsUGFpbnRpbmdJbmZvLnBhaW50QmVo
YXZpb3IgJiBQYWludEJlaGF2aW9yOjpFeGNsdWRlU2VsZWN0aW9uKQotICAgICAgICBsb2NhbFBh
aW50QmVoYXZpb3IgfD0gUGFpbnRCZWhhdmlvcjo6RXhjbHVkZVNlbGVjdGlvbjsKKyAgICAgICAg
bG9jYWxQYWludEJlaGF2aW9yLmFkZChQYWludEJlaGF2aW9yOjpFeGNsdWRlU2VsZWN0aW9uKTsK
ICAgICAKICAgICBpZiAobG9jYWxQYWludGluZ0luZm8ucGFpbnRCZWhhdmlvciAmIFBhaW50QmVo
YXZpb3I6OlNuYXBzaG90dGluZykKLSAgICAgICAgbG9jYWxQYWludEJlaGF2aW9yIHw9IFBhaW50
QmVoYXZpb3I6OlNuYXBzaG90dGluZzsKKyAgICAgICAgbG9jYWxQYWludEJlaGF2aW9yLmFkZChQ
YWludEJlaGF2aW9yOjpTbmFwc2hvdHRpbmcpOwogICAgIAogICAgIGlmIChsb2NhbFBhaW50aW5n
SW5mby5wYWludEJlaGF2aW9yICYgUGFpbnRCZWhhdmlvcjo6VGlsZUZpcnN0UGFpbnQpCi0gICAg
ICAgIGxvY2FsUGFpbnRCZWhhdmlvciB8PSBQYWludEJlaGF2aW9yOjpUaWxlRmlyc3RQYWludDsK
KyAgICAgICAgbG9jYWxQYWludEJlaGF2aW9yLmFkZChQYWludEJlaGF2aW9yOjpUaWxlRmlyc3RQ
YWludCk7CiAKICAgICAvLyBPcHRpbWl6ZSBjbGlwcGluZyBmb3IgdGhlIHNpbmdsZSBmcmFnbWVu
dCBjYXNlLgogICAgIGJvb2wgc2hvdWxkQ2xpcCA9IGxvY2FsUGFpbnRpbmdJbmZvLmNsaXBUb0Rp
cnR5UmVjdCAmJiBsYXllckZyYWdtZW50cy5zaXplKCkgPT0gMSAmJiBsYXllckZyYWdtZW50c1sw
XS5zaG91bGRQYWludENvbnRlbnQgJiYgIWxheWVyRnJhZ21lbnRzWzBdLmZvcmVncm91bmRSZWN0
LmlzRW1wdHkoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJh
Y2tpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllckJhY2tpbmcuY3BwCShyZXZpc2lvbiAyMzU1MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUzNCwyNCAr
MjUzNCwyNCBAQCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6cGFpbnRJbnRvTGF5ZXIoCiAKICAg
ICBPcHRpb25TZXQ8UmVuZGVyTGF5ZXI6OlBhaW50TGF5ZXJGbGFnPiBwYWludEZsYWdzOwogICAg
IGlmIChwYWludGluZ1BoYXNlICYgR3JhcGhpY3NMYXllclBhaW50QmFja2dyb3VuZCkKLSAgICAg
ICAgcGFpbnRGbGFncyB8PSBSZW5kZXJMYXllcjo6UGFpbnRMYXllclBhaW50aW5nQ29tcG9zaXRp
bmdCYWNrZ3JvdW5kUGhhc2U7CisgICAgICAgIHBhaW50RmxhZ3MuYWRkKFJlbmRlckxheWVyOjpQ
YWludExheWVyUGFpbnRpbmdDb21wb3NpdGluZ0JhY2tncm91bmRQaGFzZSk7CiAgICAgaWYgKHBh
aW50aW5nUGhhc2UgJiBHcmFwaGljc0xheWVyUGFpbnRGb3JlZ3JvdW5kKQotICAgICAgICBwYWlu
dEZsYWdzIHw9IFJlbmRlckxheWVyOjpQYWludExheWVyUGFpbnRpbmdDb21wb3NpdGluZ0ZvcmVn
cm91bmRQaGFzZTsKKyAgICAgICAgcGFpbnRGbGFncy5hZGQoUmVuZGVyTGF5ZXI6OlBhaW50TGF5
ZXJQYWludGluZ0NvbXBvc2l0aW5nRm9yZWdyb3VuZFBoYXNlKTsKICAgICBpZiAocGFpbnRpbmdQ
aGFzZSAmIEdyYXBoaWNzTGF5ZXJQYWludE1hc2spCi0gICAgICAgIHBhaW50RmxhZ3MgfD0gUmVu
ZGVyTGF5ZXI6OlBhaW50TGF5ZXJQYWludGluZ0NvbXBvc2l0aW5nTWFza1BoYXNlOworICAgICAg
ICBwYWludEZsYWdzLmFkZChSZW5kZXJMYXllcjo6UGFpbnRMYXllclBhaW50aW5nQ29tcG9zaXRp
bmdNYXNrUGhhc2UpOwogICAgIGlmIChwYWludGluZ1BoYXNlICYgR3JhcGhpY3NMYXllclBhaW50
Q2xpcFBhdGgpCi0gICAgICAgIHBhaW50RmxhZ3MgfD0gUmVuZGVyTGF5ZXI6OlBhaW50TGF5ZXJQ
YWludGluZ0NvbXBvc2l0aW5nQ2xpcFBhdGhQaGFzZTsKKyAgICAgICAgcGFpbnRGbGFncy5hZGQo
UmVuZGVyTGF5ZXI6OlBhaW50TGF5ZXJQYWludGluZ0NvbXBvc2l0aW5nQ2xpcFBhdGhQaGFzZSk7
CiAgICAgaWYgKHBhaW50aW5nUGhhc2UgJiBHcmFwaGljc0xheWVyUGFpbnRDaGlsZENsaXBwaW5n
TWFzaykKLSAgICAgICAgcGFpbnRGbGFncyB8PSBSZW5kZXJMYXllcjo6UGFpbnRMYXllclBhaW50
aW5nQ2hpbGRDbGlwcGluZ01hc2tQaGFzZTsKKyAgICAgICAgcGFpbnRGbGFncy5hZGQoUmVuZGVy
TGF5ZXI6OlBhaW50TGF5ZXJQYWludGluZ0NoaWxkQ2xpcHBpbmdNYXNrUGhhc2UpOwogICAgIGlm
IChwYWludGluZ1BoYXNlICYgR3JhcGhpY3NMYXllclBhaW50T3ZlcmZsb3dDb250ZW50cykKLSAg
ICAgICAgcGFpbnRGbGFncyB8PSBSZW5kZXJMYXllcjo6UGFpbnRMYXllclBhaW50aW5nT3ZlcmZs
b3dDb250ZW50czsKKyAgICAgICAgcGFpbnRGbGFncy5hZGQoUmVuZGVyTGF5ZXI6OlBhaW50TGF5
ZXJQYWludGluZ092ZXJmbG93Q29udGVudHMpOwogICAgIGlmIChwYWludGluZ1BoYXNlICYgR3Jh
cGhpY3NMYXllclBhaW50Q29tcG9zaXRlZFNjcm9sbCkKLSAgICAgICAgcGFpbnRGbGFncyB8PSBS
ZW5kZXJMYXllcjo6UGFpbnRMYXllclBhaW50aW5nQ29tcG9zaXRpbmdTY3JvbGxpbmdQaGFzZTsK
KyAgICAgICAgcGFpbnRGbGFncy5hZGQoUmVuZGVyTGF5ZXI6OlBhaW50TGF5ZXJQYWludGluZ0Nv
bXBvc2l0aW5nU2Nyb2xsaW5nUGhhc2UpOwogCiAgICAgaWYgKGdyYXBoaWNzTGF5ZXIgPT0gbV9i
YWNrZ3JvdW5kTGF5ZXIuZ2V0KCkgJiYgbV9iYWNrZ3JvdW5kTGF5ZXJQYWludHNGaXhlZFJvb3RC
YWNrZ3JvdW5kKQotICAgICAgICBwYWludEZsYWdzIHw9IHsgUmVuZGVyTGF5ZXI6OlBhaW50TGF5
ZXJQYWludGluZ1Jvb3RCYWNrZ3JvdW5kT25seSwgUmVuZGVyTGF5ZXI6OlBhaW50TGF5ZXJQYWlu
dGluZ0NvbXBvc2l0aW5nRm9yZWdyb3VuZFBoYXNlIH07IC8vIE5lZWQgUGFpbnRMYXllclBhaW50
aW5nQ29tcG9zaXRpbmdGb3JlZ3JvdW5kUGhhc2UgdG8gd2FsayBjaGlsZCBsYXllcnMuCisgICAg
ICAgIHBhaW50RmxhZ3MuYWRkKHsgUmVuZGVyTGF5ZXI6OlBhaW50TGF5ZXJQYWludGluZ1Jvb3RC
YWNrZ3JvdW5kT25seSwgUmVuZGVyTGF5ZXI6OlBhaW50TGF5ZXJQYWludGluZ0NvbXBvc2l0aW5n
Rm9yZWdyb3VuZFBoYXNlIH0pOyAvLyBOZWVkIFBhaW50TGF5ZXJQYWludGluZ0NvbXBvc2l0aW5n
Rm9yZWdyb3VuZFBoYXNlIHRvIHdhbGsgY2hpbGQgbGF5ZXJzLgogICAgIGVsc2UgaWYgKGNvbXBv
c2l0b3IoKS5maXhlZFJvb3RCYWNrZ3JvdW5kTGF5ZXIoKSkKLSAgICAgICAgcGFpbnRGbGFncyB8
PSBSZW5kZXJMYXllcjo6UGFpbnRMYXllclBhaW50aW5nU2tpcFJvb3RCYWNrZ3JvdW5kOworICAg
ICAgICBwYWludEZsYWdzLmFkZChSZW5kZXJMYXllcjo6UGFpbnRMYXllclBhaW50aW5nU2tpcFJv
b3RCYWNrZ3JvdW5kKTsKIAogI2lmbmRlZiBOREVCVUcKICAgICBSZW5kZXJFbGVtZW50OjpTZXRM
YXlvdXROZWVkZWRGb3JiaWRkZW5TY29wZSBmb3JiaWRTZXROZWVkc0xheW91dCgmcmVuZGVyZXIo
KSk7CkBAIC0yNjA5LDEwICsyNjA5LDEwIEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjpwYWlu
dENvbnRlbnRzKGMKICAgICAgICAgLy8gV2UgaGF2ZSB0byB1c2UgdGhlIHNhbWUgcm9vdCBhcyBm
b3IgaGl0IHRlc3RpbmcsIGJlY2F1c2UgYm90aCBtZXRob2RzIGNhbiBjb21wdXRlIGFuZCBjYWNo
ZSBjbGlwUmVjdHMuCiAgICAgICAgIE9wdGlvblNldDxQYWludEJlaGF2aW9yPiBiZWhhdmlvciA9
IFBhaW50QmVoYXZpb3I6Ok5vcm1hbDsKICAgICAgICAgaWYgKGxheWVyUGFpbnRCZWhhdmlvciA9
PSBHcmFwaGljc0xheWVyUGFpbnRTbmFwc2hvdHRpbmcpCi0gICAgICAgICAgICBiZWhhdmlvciB8
PSBQYWludEJlaGF2aW9yOjpTbmFwc2hvdHRpbmc7CisgICAgICAgICAgICBiZWhhdmlvci5hZGQo
UGFpbnRCZWhhdmlvcjo6U25hcHNob3R0aW5nKTsKICAgICAgICAgCiAgICAgICAgIGlmIChsYXll
clBhaW50QmVoYXZpb3IgPT0gR3JhcGhpY3NMYXllclBhaW50Rmlyc3RUaWxlUGFpbnQpCi0gICAg
ICAgICAgICBiZWhhdmlvciB8PSBQYWludEJlaGF2aW9yOjpUaWxlRmlyc3RQYWludDsKKyAgICAg
ICAgICAgIGJlaGF2aW9yLmFkZChQYWludEJlaGF2aW9yOjpUaWxlRmlyc3RQYWludCk7CiAKICAg
ICAgICAgcGFpbnRJbnRvTGF5ZXIoZ3JhcGhpY3NMYXllciwgY29udGV4dCwgZGlydHlSZWN0LCBi
ZWhhdmlvciwgcGFpbnRpbmdQaGFzZSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCShyZXZpc2lvbiAyMzU1MzkpCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjE2NCw4OSArMjE2NCw4OSBAQCBPcHRpb25TZXQ8Q29tcG9zaXRpbmdS
ZWFzb24+IFJlbmRlckxheWVyCiAgICAgYXV0byYgcmVuZGVyZXIgPSByZW5kZXJlckZvckNvbXBv
c2l0aW5nVGVzdHMobGF5ZXIpOwogCiAgICAgaWYgKHJlcXVpcmVzQ29tcG9zaXRpbmdGb3JUcmFu
c2Zvcm0ocmVuZGVyZXIpKQotICAgICAgICByZWFzb25zIHw9IENvbXBvc2l0aW5nUmVhc29uOjpU
cmFuc2Zvcm0zRDsKKyAgICAgICAgcmVhc29ucy5hZGQoQ29tcG9zaXRpbmdSZWFzb246OlRyYW5z
Zm9ybTNEKTsKIAogICAgIGlmIChyZXF1aXJlc0NvbXBvc2l0aW5nRm9yVmlkZW8ocmVuZGVyZXIp
KQotICAgICAgICByZWFzb25zIHw9IENvbXBvc2l0aW5nUmVhc29uOjpWaWRlbzsKKyAgICAgICAg
cmVhc29ucy5hZGQoQ29tcG9zaXRpbmdSZWFzb246OlZpZGVvKTsKICAgICBlbHNlIGlmIChyZXF1
aXJlc0NvbXBvc2l0aW5nRm9yQ2FudmFzKHJlbmRlcmVyKSkKLSAgICAgICAgcmVhc29ucyB8PSBD
b21wb3NpdGluZ1JlYXNvbjo6Q2FudmFzOworICAgICAgICByZWFzb25zLmFkZChDb21wb3NpdGlu
Z1JlYXNvbjo6Q2FudmFzKTsKICAgICBlbHNlIGlmIChyZXF1aXJlc0NvbXBvc2l0aW5nRm9yUGx1
Z2luKHJlbmRlcmVyKSkKLSAgICAgICAgcmVhc29ucyB8PSBDb21wb3NpdGluZ1JlYXNvbjo6UGx1
Z2luOworICAgICAgICByZWFzb25zLmFkZChDb21wb3NpdGluZ1JlYXNvbjo6UGx1Z2luKTsKICAg
ICBlbHNlIGlmIChyZXF1aXJlc0NvbXBvc2l0aW5nRm9yRnJhbWUocmVuZGVyZXIpKQotICAgICAg
ICByZWFzb25zIHw9IENvbXBvc2l0aW5nUmVhc29uOjpJRnJhbWU7CisgICAgICAgIHJlYXNvbnMu
YWRkKENvbXBvc2l0aW5nUmVhc29uOjpJRnJhbWUpOwogCiAgICAgaWYgKChjYW5SZW5kZXIzRFRy
YW5zZm9ybXMoKSAmJiByZW5kZXJlci5zdHlsZSgpLmJhY2tmYWNlVmlzaWJpbGl0eSgpID09IEJh
Y2tmYWNlVmlzaWJpbGl0eTo6SGlkZGVuKSkKLSAgICAgICAgcmVhc29ucyB8PSBDb21wb3NpdGlu
Z1JlYXNvbjo6QmFja2ZhY2VWaXNpYmlsaXR5SGlkZGVuOworICAgICAgICByZWFzb25zLmFkZChD
b21wb3NpdGluZ1JlYXNvbjo6QmFja2ZhY2VWaXNpYmlsaXR5SGlkZGVuKTsKIAogICAgIGlmIChj
bGlwc0NvbXBvc2l0aW5nRGVzY2VuZGFudHMoKnJlbmRlcmVyLmxheWVyKCkpKQotICAgICAgICBy
ZWFzb25zIHw9IENvbXBvc2l0aW5nUmVhc29uOjpDbGlwc0NvbXBvc2l0aW5nRGVzY2VuZGFudHM7
CisgICAgICAgIHJlYXNvbnMuYWRkKENvbXBvc2l0aW5nUmVhc29uOjpDbGlwc0NvbXBvc2l0aW5n
RGVzY2VuZGFudHMpOwogCiAgICAgaWYgKHJlcXVpcmVzQ29tcG9zaXRpbmdGb3JBbmltYXRpb24o
cmVuZGVyZXIpKQotICAgICAgICByZWFzb25zIHw9IENvbXBvc2l0aW5nUmVhc29uOjpBbmltYXRp
b247CisgICAgICAgIHJlYXNvbnMuYWRkKENvbXBvc2l0aW5nUmVhc29uOjpBbmltYXRpb24pOwog
CiAgICAgaWYgKHJlcXVpcmVzQ29tcG9zaXRpbmdGb3JGaWx0ZXJzKHJlbmRlcmVyKSkKLSAgICAg
ICAgcmVhc29ucyB8PSBDb21wb3NpdGluZ1JlYXNvbjo6RmlsdGVyczsKKyAgICAgICAgcmVhc29u
cy5hZGQoQ29tcG9zaXRpbmdSZWFzb246OkZpbHRlcnMpOwogCiAgICAgaWYgKHJlcXVpcmVzQ29t
cG9zaXRpbmdGb3JXaWxsQ2hhbmdlKHJlbmRlcmVyKSkKLSAgICAgICAgcmVhc29ucyB8PSBDb21w
b3NpdGluZ1JlYXNvbjo6V2lsbENoYW5nZTsKKyAgICAgICAgcmVhc29ucy5hZGQoQ29tcG9zaXRp
bmdSZWFzb246OldpbGxDaGFuZ2UpOwogCiAgICAgaWYgKHJlcXVpcmVzQ29tcG9zaXRpbmdGb3JQ
b3NpdGlvbihyZW5kZXJlciwgKnJlbmRlcmVyLmxheWVyKCkpKQotICAgICAgICByZWFzb25zIHw9
IHJlbmRlcmVyLmlzRml4ZWRQb3NpdGlvbmVkKCkgPyBDb21wb3NpdGluZ1JlYXNvbjo6UG9zaXRp
b25GaXhlZCA6IENvbXBvc2l0aW5nUmVhc29uOjpQb3NpdGlvblN0aWNreTsKKyAgICAgICAgcmVh
c29ucy5hZGQocmVuZGVyZXIuaXNGaXhlZFBvc2l0aW9uZWQoKSA/IENvbXBvc2l0aW5nUmVhc29u
OjpQb3NpdGlvbkZpeGVkIDogQ29tcG9zaXRpbmdSZWFzb246OlBvc2l0aW9uU3RpY2t5KTsKIAog
I2lmIFBMQVRGT1JNKElPUykKICAgICBpZiAocmVxdWlyZXNDb21wb3NpdGluZ0ZvclNjcm9sbGlu
ZygqcmVuZGVyZXIubGF5ZXIoKSkpCi0gICAgICAgIHJlYXNvbnMgfD0gQ29tcG9zaXRpbmdSZWFz
b246Ok92ZXJmbG93U2Nyb2xsaW5nVG91Y2g7CisgICAgICAgIHJlYXNvbnMuYWRkKENvbXBvc2l0
aW5nUmVhc29uOjpPdmVyZmxvd1Njcm9sbGluZ1RvdWNoKTsKICNlbmRpZgogCiAgICAgaWYgKHJl
cXVpcmVzQ29tcG9zaXRpbmdGb3JPdmVyZmxvd1Njcm9sbGluZygqcmVuZGVyZXIubGF5ZXIoKSkp
Ci0gICAgICAgIHJlYXNvbnMgfD0gQ29tcG9zaXRpbmdSZWFzb246Ok92ZXJmbG93U2Nyb2xsaW5n
VG91Y2g7CisgICAgICAgIHJlYXNvbnMuYWRkKENvbXBvc2l0aW5nUmVhc29uOjpPdmVyZmxvd1Nj
cm9sbGluZ1RvdWNoKTsKIAogICAgIHN3aXRjaCAocmVuZGVyZXIubGF5ZXIoKS0+aW5kaXJlY3RD
b21wb3NpdGluZ1JlYXNvbigpKSB7CiAgICAgY2FzZSBSZW5kZXJMYXllcjo6SW5kaXJlY3RDb21w
b3NpdGluZ1JlYXNvbjo6Tm9uZToKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBSZW5kZXJMYXll
cjo6SW5kaXJlY3RDb21wb3NpdGluZ1JlYXNvbjo6U3RhY2tpbmc6Ci0gICAgICAgIHJlYXNvbnMg
fD0gQ29tcG9zaXRpbmdSZWFzb246OlN0YWNraW5nOworICAgICAgICByZWFzb25zLmFkZChDb21w
b3NpdGluZ1JlYXNvbjo6U3RhY2tpbmcpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFJlbmRl
ckxheWVyOjpJbmRpcmVjdENvbXBvc2l0aW5nUmVhc29uOjpPdmVybGFwOgotICAgICAgICByZWFz
b25zIHw9IENvbXBvc2l0aW5nUmVhc29uOjpPdmVybGFwOworICAgICAgICByZWFzb25zLmFkZChD
b21wb3NpdGluZ1JlYXNvbjo6T3ZlcmxhcCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUmVu
ZGVyTGF5ZXI6OkluZGlyZWN0Q29tcG9zaXRpbmdSZWFzb246OkJhY2tncm91bmRMYXllcjoKLSAg
ICAgICAgcmVhc29ucyB8PSBDb21wb3NpdGluZ1JlYXNvbjo6TmVnYXRpdmVaSW5kZXhDaGlsZHJl
bjsKKyAgICAgICAgcmVhc29ucy5hZGQoQ29tcG9zaXRpbmdSZWFzb246Ok5lZ2F0aXZlWkluZGV4
Q2hpbGRyZW4pOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFJlbmRlckxheWVyOjpJbmRpcmVj
dENvbXBvc2l0aW5nUmVhc29uOjpHcmFwaGljYWxFZmZlY3Q6CiAgICAgICAgIGlmIChyZW5kZXJl
ci5oYXNUcmFuc2Zvcm0oKSkKLSAgICAgICAgICAgIHJlYXNvbnMgfD0gQ29tcG9zaXRpbmdSZWFz
b246OlRyYW5zZm9ybVdpdGhDb21wb3NpdGVkRGVzY2VuZGFudHM7CisgICAgICAgICAgICByZWFz
b25zLmFkZChDb21wb3NpdGluZ1JlYXNvbjo6VHJhbnNmb3JtV2l0aENvbXBvc2l0ZWREZXNjZW5k
YW50cyk7CiAKICAgICAgICAgaWYgKHJlbmRlcmVyLmlzVHJhbnNwYXJlbnQoKSkKLSAgICAgICAg
ICAgIHJlYXNvbnMgfD0gQ29tcG9zaXRpbmdSZWFzb246Ok9wYWNpdHlXaXRoQ29tcG9zaXRlZERl
c2NlbmRhbnRzOworICAgICAgICAgICAgcmVhc29ucy5hZGQoQ29tcG9zaXRpbmdSZWFzb246Ok9w
YWNpdHlXaXRoQ29tcG9zaXRlZERlc2NlbmRhbnRzKTsKIAogICAgICAgICBpZiAocmVuZGVyZXIu
aGFzTWFzaygpKQotICAgICAgICAgICAgcmVhc29ucyB8PSBDb21wb3NpdGluZ1JlYXNvbjo6TWFz
a1dpdGhDb21wb3NpdGVkRGVzY2VuZGFudHM7CisgICAgICAgICAgICByZWFzb25zLmFkZChDb21w
b3NpdGluZ1JlYXNvbjo6TWFza1dpdGhDb21wb3NpdGVkRGVzY2VuZGFudHMpOwogCiAgICAgICAg
IGlmIChyZW5kZXJlci5oYXNSZWZsZWN0aW9uKCkpCi0gICAgICAgICAgICByZWFzb25zIHw9IENv
bXBvc2l0aW5nUmVhc29uOjpSZWZsZWN0aW9uV2l0aENvbXBvc2l0ZWREZXNjZW5kYW50czsKKyAg
ICAgICAgICAgIHJlYXNvbnMuYWRkKENvbXBvc2l0aW5nUmVhc29uOjpSZWZsZWN0aW9uV2l0aENv
bXBvc2l0ZWREZXNjZW5kYW50cyk7CiAKICAgICAgICAgaWYgKHJlbmRlcmVyLmhhc0ZpbHRlcigp
IHx8IHJlbmRlcmVyLmhhc0JhY2tkcm9wRmlsdGVyKCkpCi0gICAgICAgICAgICByZWFzb25zIHw9
IENvbXBvc2l0aW5nUmVhc29uOjpGaWx0ZXJXaXRoQ29tcG9zaXRlZERlc2NlbmRhbnRzOworICAg
ICAgICAgICAgcmVhc29ucy5hZGQoQ29tcG9zaXRpbmdSZWFzb246OkZpbHRlcldpdGhDb21wb3Np
dGVkRGVzY2VuZGFudHMpOwogCiAjaWYgRU5BQkxFKENTU19DT01QT1NJVElORykKICAgICAgICAg
aWYgKGxheWVyLmlzb2xhdGVzQ29tcG9zaXRlZEJsZW5kaW5nKCkpCi0gICAgICAgICAgICByZWFz
b25zIHw9IENvbXBvc2l0aW5nUmVhc29uOjpJc29sYXRlc0NvbXBvc2l0ZWRCbGVuZGluZ0Rlc2Nl
bmRhbnRzOworICAgICAgICAgICAgcmVhc29ucy5hZGQoQ29tcG9zaXRpbmdSZWFzb246Oklzb2xh
dGVzQ29tcG9zaXRlZEJsZW5kaW5nRGVzY2VuZGFudHMpOwogCiAgICAgICAgIGlmIChsYXllci5o
YXNCbGVuZE1vZGUoKSkKLSAgICAgICAgICAgIHJlYXNvbnMgfD0gQ29tcG9zaXRpbmdSZWFzb246
OkJsZW5kaW5nV2l0aENvbXBvc2l0ZWREZXNjZW5kYW50czsKKyAgICAgICAgICAgIHJlYXNvbnMu
YWRkKENvbXBvc2l0aW5nUmVhc29uOjpCbGVuZGluZ1dpdGhDb21wb3NpdGVkRGVzY2VuZGFudHMp
OwogI2VuZGlmCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUmVuZGVyTGF5ZXI6OkluZGlyZWN0
Q29tcG9zaXRpbmdSZWFzb246OlBlcnNwZWN0aXZlOgotICAgICAgICByZWFzb25zIHw9IENvbXBv
c2l0aW5nUmVhc29uOjpQZXJzcGVjdGl2ZTsKKyAgICAgICAgcmVhc29ucy5hZGQoQ29tcG9zaXRp
bmdSZWFzb246OlBlcnNwZWN0aXZlKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBSZW5kZXJM
YXllcjo6SW5kaXJlY3RDb21wb3NpdGluZ1JlYXNvbjo6UHJlc2VydmUzRDoKLSAgICAgICAgcmVh
c29ucyB8PSBDb21wb3NpdGluZ1JlYXNvbjo6UHJlc2VydmUzRDsKKyAgICAgICAgcmVhc29ucy5h
ZGQoQ29tcG9zaXRpbmdSZWFzb246OlByZXNlcnZlM0QpOwogICAgICAgICBicmVhazsKICAgICB9
CiAKICAgICBpZiAoaW5Db21wb3NpdGluZ01vZGUoKSAmJiByZW5kZXJlci5sYXllcigpLT5pc1Jl
bmRlclZpZXdMYXllcigpKQotICAgICAgICByZWFzb25zIHw9IENvbXBvc2l0aW5nUmVhc29uOjpS
b290OworICAgICAgICByZWFzb25zLmFkZChDb21wb3NpdGluZ1JlYXNvbjo6Um9vdCk7CiAKICAg
ICByZXR1cm4gcmVhc29uczsKIH0KQEAgLTM2MjUsMTAgKzM2MjUsMTAgQEAgdm9pZCBSZW5kZXJM
YXllckNvbXBvc2l0b3I6OnVwZGF0ZVNjcm9sbAogewogICAgIE9wdGlvblNldDxMYXllclNjcm9s
bENvb3JkaW5hdGlvblJvbGU+IGNvb3JkaW5hdGlvblJvbGVzOwogICAgIGlmIChpc1ZpZXdwb3J0
Q29uc3RyYWluZWRGaXhlZE9yU3RpY2t5TGF5ZXIobGF5ZXIpKQotICAgICAgICBjb29yZGluYXRp
b25Sb2xlcyB8PSBWaWV3cG9ydENvbnN0cmFpbmVkOworICAgICAgICBjb29yZGluYXRpb25Sb2xl
cy5hZGQoVmlld3BvcnRDb25zdHJhaW5lZCk7CiAKICAgICBpZiAodXNlQ29vcmRpbmF0ZWRTY3Jv
bGxpbmdGb3JMYXllcihsYXllcikpCi0gICAgICAgIGNvb3JkaW5hdGlvblJvbGVzIHw9IFNjcm9s
bGluZzsKKyAgICAgICAgY29vcmRpbmF0aW9uUm9sZXMuYWRkKFNjcm9sbGluZyk7CiAKICAgICBp
ZiAobGF5ZXIuaXNDb21wb3NpdGVkKCkpCiAgICAgICAgIGxheWVyLmJhY2tpbmcoKS0+c2V0SXNT
Y3JvbGxDb29yZGluYXRlZFdpdGhWaWV3cG9ydENvbnN0cmFpbmVkUm9sZShjb29yZGluYXRpb25S
b2xlcy5jb250YWlucyhWaWV3cG9ydENvbnN0cmFpbmVkKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVyLmNwcAkocmV2aXNpb24g
MjM1NTM5KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHREZWNvcmF0aW9uUGFpbnRl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4MywxNyArMzgzLDE3IEBAIHN0YXRpYyB2b2lkIGNv
bGxlY3RTdHlsZXNGb3JSZW5kZXJlcihUZXgKICAgICAgICAgYXV0byBkZWNvcmF0aW9uU3R5bGUg
PSBzdHlsZS50ZXh0RGVjb3JhdGlvblN0eWxlKCk7CiAKICAgICAgICAgaWYgKGRlY29yYXRpb25z
LmNvbnRhaW5zKFRleHREZWNvcmF0aW9uOjpVbmRlcmxpbmUpKSB7Ci0gICAgICAgICAgICByZW1h
aW5pbmdEZWNvcmF0aW9ucyAtPSBUZXh0RGVjb3JhdGlvbjo6VW5kZXJsaW5lOworICAgICAgICAg
ICAgcmVtYWluaW5nRGVjb3JhdGlvbnMucmVtb3ZlKFRleHREZWNvcmF0aW9uOjpVbmRlcmxpbmUp
OwogICAgICAgICAgICAgcmVzdWx0LnVuZGVybGluZUNvbG9yID0gY29sb3I7CiAgICAgICAgICAg
ICByZXN1bHQudW5kZXJsaW5lU3R5bGUgPSBkZWNvcmF0aW9uU3R5bGU7CiAgICAgICAgIH0KICAg
ICAgICAgaWYgKGRlY29yYXRpb25zLmNvbnRhaW5zKFRleHREZWNvcmF0aW9uOjpPdmVybGluZSkp
IHsKLSAgICAgICAgICAgIHJlbWFpbmluZ0RlY29yYXRpb25zIC09IFRleHREZWNvcmF0aW9uOjpP
dmVybGluZTsKKyAgICAgICAgICAgIHJlbWFpbmluZ0RlY29yYXRpb25zLnJlbW92ZShUZXh0RGVj
b3JhdGlvbjo6T3ZlcmxpbmUpOwogICAgICAgICAgICAgcmVzdWx0Lm92ZXJsaW5lQ29sb3IgPSBj
b2xvcjsKICAgICAgICAgICAgIHJlc3VsdC5vdmVybGluZVN0eWxlID0gZGVjb3JhdGlvblN0eWxl
OwogICAgICAgICB9CiAgICAgICAgIGlmIChkZWNvcmF0aW9ucy5jb250YWlucyhUZXh0RGVjb3Jh
dGlvbjo6TGluZVRocm91Z2gpKSB7Ci0gICAgICAgICAgICByZW1haW5pbmdEZWNvcmF0aW9ucyAt
PSBUZXh0RGVjb3JhdGlvbjo6TGluZVRocm91Z2g7CisgICAgICAgICAgICByZW1haW5pbmdEZWNv
cmF0aW9ucy5yZW1vdmUoVGV4dERlY29yYXRpb246OkxpbmVUaHJvdWdoKTsKICAgICAgICAgICAg
IHJlc3VsdC5saW5ldGhyb3VnaENvbG9yID0gY29sb3I7CiAgICAgICAgICAgICByZXN1bHQubGlu
ZXRocm91Z2hTdHlsZSA9IGRlY29yYXRpb25TdHlsZTsKICAgICAgICAgfQpJbmRleDogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWludFN0eWxlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBhaW50U3R5bGUuY3BwCShyZXZpc2lvbiAyMzU1Mzkp
CisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBhaW50U3R5bGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMDAsNyArMTAwLDcgQEAgVGV4dFBhaW50U3R5bGUgY29tcHV0ZVRleHRQYWlu
dFN0eWxlKGNvbgogICAgICAgICBpZiAocGFnZSAmJiBwYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5p
c0FjdGl2ZSgpKSB7CiAgICAgICAgICAgICBPcHRpb25TZXQ8U3R5bGVDb2xvcjo6T3B0aW9ucz4g
b3B0aW9uczsKICAgICAgICAgICAgIGlmIChwYWdlLT51c2VTeXN0ZW1BcHBlYXJhbmNlKCkpCi0g
ICAgICAgICAgICAgICAgb3B0aW9ucyB8PSBTdHlsZUNvbG9yOjpPcHRpb25zOjpVc2VTeXN0ZW1B
cHBlYXJhbmNlOworICAgICAgICAgICAgICAgIG9wdGlvbnMuYWRkKFN0eWxlQ29sb3I6Ok9wdGlv
bnM6OlVzZVN5c3RlbUFwcGVhcmFuY2UpOwogICAgICAgICAgICAgcGFpbnRTdHlsZS5maWxsQ29s
b3IgPSBSZW5kZXJUaGVtZTo6c2luZ2xldG9uKCkuc3lzdGVtQ29sb3IoQ1NTVmFsdWVBY3RpdmVi
dXR0b250ZXh0LCBvcHRpb25zKTsKICAgICAgICAgICAgIHJldHVybiBwYWludFN0eWxlOwogICAg
ICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJT
dHlsZS5jcHAJKHJldmlzaW9uIDIzNTUzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9SZW5kZXJTdHlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYxMyw3ICs2MTMsNyBAQCBi
b29sIFJlbmRlclN0eWxlOjpjaGFuZ2VSZXF1aXJlc0xheW91dChjCiAgICAgICAgICAgICBpZiAo
bV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+dHJhbnNmb3JtLT5oYXNUcmFuc2Zvcm0oKSAhPSBvdGhl
ci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT50cmFuc2Zvcm0tPmhhc1RyYW5zZm9ybSgpKQogICAg
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgaWYgKCptX3JhcmVOb25Jbmhl
cml0ZWREYXRhLT50cmFuc2Zvcm0gIT0gKm90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnRy
YW5zZm9ybSkgewotICAgICAgICAgICAgICAgIGNoYW5nZWRDb250ZXh0U2Vuc2l0aXZlUHJvcGVy
dGllcyB8PSBTdHlsZURpZmZlcmVuY2VDb250ZXh0U2Vuc2l0aXZlUHJvcGVydHk6OlRyYW5zZm9y
bTsKKyAgICAgICAgICAgICAgICBjaGFuZ2VkQ29udGV4dFNlbnNpdGl2ZVByb3BlcnRpZXMuYWRk
KFN0eWxlRGlmZmVyZW5jZUNvbnRleHRTZW5zaXRpdmVQcm9wZXJ0eTo6VHJhbnNmb3JtKTsKICAg
ICAgICAgICAgICAgICAvLyBEb24ndCByZXR1cm47IGtlZXAgbG9va2luZyBmb3IgYW5vdGhlciBj
aGFuZ2UKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtNjI5LDcgKzYyOSw3IEBAIGJvb2wg
UmVuZGVyU3R5bGU6OmNoYW5nZVJlcXVpcmVzTGF5b3V0KGMKICNlbmRpZgogCiAgICAgICAgIGlm
ICghYXJlUG9pbnRpbmdUb0VxdWFsRGF0YShtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT53aWxsQ2hh
bmdlLCBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT53aWxsQ2hhbmdlKSkgewotICAgICAg
ICAgICAgY2hhbmdlZENvbnRleHRTZW5zaXRpdmVQcm9wZXJ0aWVzIHw9IFN0eWxlRGlmZmVyZW5j
ZUNvbnRleHRTZW5zaXRpdmVQcm9wZXJ0eTo6V2lsbENoYW5nZTsKKyAgICAgICAgICAgIGNoYW5n
ZWRDb250ZXh0U2Vuc2l0aXZlUHJvcGVydGllcy5hZGQoU3R5bGVEaWZmZXJlbmNlQ29udGV4dFNl
bnNpdGl2ZVByb3BlcnR5OjpXaWxsQ2hhbmdlKTsKICAgICAgICAgICAgIC8vIERvbid0IHJldHVy
bjsga2VlcCBsb29raW5nIGZvciBhbm90aGVyIGNoYW5nZQogICAgICAgICB9CiAgICAgfQpAQCAt
ODQ5LDcgKzg0OSw3IEBAIGJvb2wgUmVuZGVyU3R5bGU6OmNoYW5nZVJlcXVpcmVzTGF5ZXJSZXAK
IAogICAgIGlmIChwb3NpdGlvbigpICE9IFBvc2l0aW9uVHlwZTo6U3RhdGljKSB7CiAgICAgICAg
IGlmIChtX3Zpc3VhbERhdGEtPmNsaXAgIT0gb3RoZXIubV92aXN1YWxEYXRhLT5jbGlwIHx8IG1f
dmlzdWFsRGF0YS0+aGFzQ2xpcCAhPSBvdGhlci5tX3Zpc3VhbERhdGEtPmhhc0NsaXApIHsKLSAg
ICAgICAgICAgIGNoYW5nZWRDb250ZXh0U2Vuc2l0aXZlUHJvcGVydGllcyB8PSBTdHlsZURpZmZl
cmVuY2VDb250ZXh0U2Vuc2l0aXZlUHJvcGVydHk6OkNsaXBSZWN0OworICAgICAgICAgICAgY2hh
bmdlZENvbnRleHRTZW5zaXRpdmVQcm9wZXJ0aWVzLmFkZChTdHlsZURpZmZlcmVuY2VDb250ZXh0
U2Vuc2l0aXZlUHJvcGVydHk6OkNsaXBSZWN0KTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgICAgICB9CiAgICAgfQpAQCAtODYwLDE4ICs4NjAsMTggQEAgYm9vbCBSZW5kZXJTdHlsZTo6
Y2hhbmdlUmVxdWlyZXNMYXllclJlcAogI2VuZGlmCiAKICAgICBpZiAobV9yYXJlTm9uSW5oZXJp
dGVkRGF0YS0+b3BhY2l0eSAhPSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5vcGFjaXR5
KSB7Ci0gICAgICAgIGNoYW5nZWRDb250ZXh0U2Vuc2l0aXZlUHJvcGVydGllcyB8PSBTdHlsZURp
ZmZlcmVuY2VDb250ZXh0U2Vuc2l0aXZlUHJvcGVydHk6Ok9wYWNpdHk7CisgICAgICAgIGNoYW5n
ZWRDb250ZXh0U2Vuc2l0aXZlUHJvcGVydGllcy5hZGQoU3R5bGVEaWZmZXJlbmNlQ29udGV4dFNl
bnNpdGl2ZVByb3BlcnR5OjpPcGFjaXR5KTsKICAgICAgICAgLy8gRG9uJ3QgcmV0dXJuOyBrZWVw
IGxvb2tpbmcgZm9yIGFub3RoZXIgY2hhbmdlLgogICAgIH0KIAogICAgIGlmIChtX3JhcmVOb25J
bmhlcml0ZWREYXRhLT5maWx0ZXIgIT0gb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+Zmls
dGVyKSB7Ci0gICAgICAgIGNoYW5nZWRDb250ZXh0U2Vuc2l0aXZlUHJvcGVydGllcyB8PSBTdHls
ZURpZmZlcmVuY2VDb250ZXh0U2Vuc2l0aXZlUHJvcGVydHk6OkZpbHRlcjsKKyAgICAgICAgY2hh
bmdlZENvbnRleHRTZW5zaXRpdmVQcm9wZXJ0aWVzLmFkZChTdHlsZURpZmZlcmVuY2VDb250ZXh0
U2Vuc2l0aXZlUHJvcGVydHk6OkZpbHRlcik7CiAgICAgICAgIC8vIERvbid0IHJldHVybjsga2Vl
cCBsb29raW5nIGZvciBhbm90aGVyIGNoYW5nZS4KICAgICB9CiAKICNpZiBFTkFCTEUoRklMVEVS
U19MRVZFTF8yKQogICAgIGlmIChtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5iYWNrZHJvcEZpbHRl
ciAhPSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5iYWNrZHJvcEZpbHRlcikgewotICAg
ICAgICBjaGFuZ2VkQ29udGV4dFNlbnNpdGl2ZVByb3BlcnRpZXMgfD0gU3R5bGVEaWZmZXJlbmNl
Q29udGV4dFNlbnNpdGl2ZVByb3BlcnR5OjpGaWx0ZXI7CisgICAgICAgIGNoYW5nZWRDb250ZXh0
U2Vuc2l0aXZlUHJvcGVydGllcy5hZGQoU3R5bGVEaWZmZXJlbmNlQ29udGV4dFNlbnNpdGl2ZVBy
b3BlcnR5OjpGaWx0ZXIpOwogICAgICAgICAvLyBEb24ndCByZXR1cm47IGtlZXAgbG9va2luZyBm
b3IgYW5vdGhlciBjaGFuZ2UuCiAgICAgfQogI2VuZGlmCkBAIC05MjEsNyArOTIxLDcgQEAgYm9v
bCBSZW5kZXJTdHlsZTo6Y2hhbmdlUmVxdWlyZXNSZXBhaW50KAogCiAgICAgLy8gRklYTUU6IHRo
aXMgc2hvdWxkIHByb2JhYmx5IGJlIG1vdmVkIHRvIGNoYW5nZVJlcXVpcmVzTGF5ZXJSZXBhaW50
KCkuCiAgICAgaWYgKG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmNsaXBQYXRoICE9IG90aGVyLm1f
cmFyZU5vbkluaGVyaXRlZERhdGEtPmNsaXBQYXRoKSB7Ci0gICAgICAgIGNoYW5nZWRDb250ZXh0
U2Vuc2l0aXZlUHJvcGVydGllcyB8PSBTdHlsZURpZmZlcmVuY2VDb250ZXh0U2Vuc2l0aXZlUHJv
cGVydHk6OkNsaXBQYXRoOworICAgICAgICBjaGFuZ2VkQ29udGV4dFNlbnNpdGl2ZVByb3BlcnRp
ZXMuYWRkKFN0eWxlRGlmZmVyZW5jZUNvbnRleHRTZW5zaXRpdmVQcm9wZXJ0eTo6Q2xpcFBhdGgp
OwogICAgICAgICAvLyBEb24ndCByZXR1cm47IGtlZXAgbG9va2luZyBmb3IgYW5vdGhlciBjaGFu
Z2UuCiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCShyZXZp
c2lvbiAyMzU1MzkpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTIyNDIsNyArMjI0Miw3IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxGaW5k
T3B0aW9ucz4gcGFyc2VGaW4KICAgICAgICAgYm9vbCBmb3VuZCA9IGZhbHNlOwogICAgICAgICBm
b3IgKGF1dG8mIGZsYWcgOiBmbGFnTGlzdCkgewogICAgICAgICAgICAgaWYgKGZsYWcubmFtZSA9
PSBvcHRpb24pIHsKLSAgICAgICAgICAgICAgICByZXN1bHQgfD0gZmxhZy52YWx1ZTsKKyAgICAg
ICAgICAgICAgICByZXN1bHQuYWRkKGZsYWcudmFsdWUpOwogICAgICAgICAgICAgICAgIGZvdW5k
ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAgLTMxODks
NyArMzE4OSw3IEBAIHZvaWQgSW50ZXJuYWxzOjpmb3JjZVJlbG9hZChib29sIGVuZFRvRW4KIHsK
ICAgICBPcHRpb25TZXQ8UmVsb2FkT3B0aW9uPiByZWxvYWRPcHRpb25zOwogICAgIGlmIChlbmRU
b0VuZCkKLSAgICAgICAgcmVsb2FkT3B0aW9ucyB8PSBSZWxvYWRPcHRpb246OkZyb21PcmlnaW47
CisgICAgICAgIHJlbG9hZE9wdGlvbnMuYWRkKFJlbG9hZE9wdGlvbjo6RnJvbU9yaWdpbik7CiAK
ICAgICBmcmFtZSgpLT5sb2FkZXIoKS5yZWxvYWQocmVsb2FkT3B0aW9ucyk7CiB9CkBAIC00MzQy
LDkgKzQzNDIsOSBAQCB2b2lkIEludGVybmFsczo6c2V0UGFnZVZpc2liaWxpdHkoYm9vbCBpCiAg
ICAgYXV0byBzdGF0ZSA9IHBhZ2UuYWN0aXZpdHlTdGF0ZSgpOwogCiAgICAgaWYgKCFpc1Zpc2li
bGUpCi0gICAgICAgIHN0YXRlIC09IEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZTsKKyAgICAgICAg
c3RhdGUucmVtb3ZlKEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSk7CiAgICAgZWxzZQotICAgICAg
ICBzdGF0ZSB8PSBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGU7CisgICAgICAgIHN0YXRlLmFkZChB
Y3Rpdml0eVN0YXRlOjpJc1Zpc2libGUpOwogCiAgICAgcGFnZS5zZXRBY3Rpdml0eVN0YXRlKHN0
YXRlKTsKIH0KQEAgLTQzNTgsOSArNDM1OCw5IEBAIHZvaWQgSW50ZXJuYWxzOjpzZXRQYWdlSXNG
b2N1c2VkQW5kQWN0aXYKICAgICBhdXRvIHN0YXRlID0gcGFnZS5hY3Rpdml0eVN0YXRlKCk7CiAK
ICAgICBpZiAoIWlzRm9jdXNlZEFuZEFjdGl2ZSkKLSAgICAgICAgc3RhdGUgLT0geyBBY3Rpdml0
eVN0YXRlOjpJc0ZvY3VzZWQsIEFjdGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZlIH07CisgICAg
ICAgIHN0YXRlLnJlbW92ZSh7IEFjdGl2aXR5U3RhdGU6OklzRm9jdXNlZCwgQWN0aXZpdHlTdGF0
ZTo6V2luZG93SXNBY3RpdmUgfSk7CiAgICAgZWxzZQotICAgICAgICBzdGF0ZSB8PSB7IEFjdGl2
aXR5U3RhdGU6OklzRm9jdXNlZCwgQWN0aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmUgfTsKKyAg
ICAgICAgc3RhdGUuYWRkKHsgQWN0aXZpdHlTdGF0ZTo6SXNGb2N1c2VkLCBBY3Rpdml0eVN0YXRl
OjpXaW5kb3dJc0FjdGl2ZSB9KTsKIAogICAgIHBhZ2Uuc2V0QWN0aXZpdHlTdGF0ZShzdGF0ZSk7
CiB9CkluZGV4OiBTb3VyY2UvV2ViRHJpdmVyL1Nlc3Npb24uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAJKHJldmlzaW9uIDIzNTUzOSkKKysrIFNvdXJjZS9X
ZWJEcml2ZXIvU2Vzc2lvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MTQsOCArMTUxNCw3IEBA
IHZvaWQgU2Vzc2lvbjo6ZWxlbWVudENsaWNrKGNvbnN0IFN0cmluZyYKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIE9wdGlvblNldDxFbGVtZW50TGF5b3V0T3B0aW9uPiBvcHRpb25zID0g
RWxlbWVudExheW91dE9wdGlvbjo6U2Nyb2xsSW50b1ZpZXdJZk5lZWRlZDsKLSAgICBvcHRpb25z
IHw9IEVsZW1lbnRMYXlvdXRPcHRpb246OlVzZVZpZXdwb3J0Q29vcmRpbmF0ZXM7CisgICAgT3B0
aW9uU2V0PEVsZW1lbnRMYXlvdXRPcHRpb24+IG9wdGlvbnMgPSB7IEVsZW1lbnRMYXlvdXRPcHRp
b246OlNjcm9sbEludG9WaWV3SWZOZWVkZWQsIEVsZW1lbnRMYXlvdXRPcHRpb246OlVzZVZpZXdw
b3J0Q29vcmRpbmF0ZXMgfTsKICAgICBjb21wdXRlRWxlbWVudExheW91dChlbGVtZW50SUQsIG9w
dGlvbnMsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGVsZW1lbnRJRCwg
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oc3RkOjpvcHRp
b25hbDxSZWN0PiYmIHJlY3QsIHN0ZDo6b3B0aW9uYWw8UG9pbnQ+JiYgaW5WaWV3Q2VudGVyLCBi
b29sIGlzT2JzY3VyZWQsIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgZXJyb3IpIG11dGFibGUgewog
ICAgICAgICBpZiAoIXJlY3QgfHwgZXJyb3IpIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwoV1RGTW92ZShlcnJvcikpKTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAyMzU1MzkpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDU4IEBACisyMDE4LTA4LTMxICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFw
cGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIE9wdGlvblNldCB8PSBhbmQgLT0gb3BlcmF0b3Jz
IHdpdGggYWRkKCkgYW5kIHJlbW92ZSgpIGZ1bmN0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg5MTY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3Jr
UHJvY2Vzc0NvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cGxhdGZv
cm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3NDb2NvYSk6CisgICAgICAgICogU2hhcmVkL1JlbW90
ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5oOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJQcm9wZXJ0aWVzOjpub3RlUHJvcGVy
dGllc0NoYW5nZWQpOgorICAgICAgICAqIFNoYXJlZC9XZWJFdmVudENvbnZlcnNpb24uY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJLaXQyUGxhdGZvcm1Nb3VzZUV2ZW50OjpXZWJLaXQyUGxhdGZv
cm1Nb3VzZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViS2l0MlBsYXRmb3JtV2hlZWxFdmVu
dDo6V2ViS2l0MlBsYXRmb3JtV2hlZWxFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYktpdDJQ
bGF0Zm9ybUtleWJvYXJkRXZlbnQ6OldlYktpdDJQbGF0Zm9ybUtleWJvYXJkRXZlbnQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJLaXQyUGxhdGZvcm1Ub3VjaEV2ZW50OjpXZWJLaXQyUGxhdGZvcm1U
b3VjaEV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViS2l0MlBsYXRmb3JtR2VzdHVyZUV2ZW50
OjpXZWJLaXQyUGxhdGZvcm1HZXN0dXJlRXZlbnQpOgorICAgICAgICAqIFNoYXJlZC9XZWJzaXRl
UG9saWNpZXNEYXRhLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZVBvbGljaWVzRGF0YTo6
YXBwbHlUb0RvY3VtZW50TG9hZGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdl
LmNwcDoKKyAgICAgICAgKFdLUGFnZVJlbG9hZCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
L1dLUmVzb3VyY2VDYWNoZU1hbmFnZXIuY3BwOgorICAgICAgICAodG9XZWJzaXRlRGF0YVR5cGVz
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlUG9saWNpZXMuY3BwOgorICAg
ICAgICAoV0tXZWJzaXRlUG9saWNpZXNTZXRBbGxvd2VkQXV0b3BsYXlRdWlya3MpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZp
ZXcgcmVsb2FkXSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRh
UmVjb3JkSW50ZXJuYWwuaDoKKyAgICAgICAgKFdlYktpdDo6dG9XZWJzaXRlRGF0YVR5cGVzKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbToKKyAg
ICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9mZXRjaERhdGFSZWNvcmRzT2ZUeXBlczp3aXRo
T3B0aW9uczpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS1dlYnNpdGVQb2xpY2llcy5tbToKKyAgICAgICAgKC1bX1dLV2Vic2l0ZVBvbGljaWVz
IHNldEFsbG93ZWRBdXRvcGxheVF1aXJrczpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2Ev
V2ViVmlld0ltcGwubW06CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjp2aWV3RGlkTW92
ZVRvV2luZG93KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp1cGRhdGVBY3Rpdml0eVN0YXRlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjphY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaXNwYXRjaEFjdGl2aXR5U3RhdGVDaGFuZ2UpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVJlY29yZC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhUmVjb3JkOjphZGQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJzaXRlRGF0YVJlY29yZDo6YWRkQ29va2llSG9zdE5hbWUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJzaXRlRGF0YVJlY29yZDo6YWRkUGx1Z2luRGF0YUhvc3ROYW1lKToKKyAgICAgICAgKFdlYktp
dDo6V2Vic2l0ZURhdGFSZWNvcmQ6OmFkZEhTVFNDYWNoZUhvc3RuYW1lKToKKyAgICAgICAgKFdl
YktpdDo6V2Vic2l0ZURhdGFSZWNvcmQ6OmFkZE9yaWdpbldpdGhDcmVkZW50aWFsKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvbWFjL1dLSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW06CisgICAgICAg
ICgtW1dLSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIgaW5zcGVjdG9yV0tXZWJWaWV3UmVsb2FkOl0p
OgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxl
Tm9kZUhhbmRsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OmltYWdlRm9yUmVjdCk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRs
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OnJlbmRl
cmVkSW1hZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5j
cHA6CisgICAgICAgIChXZWJLaXQ6OmNvcmUpOgorICAgICAgICAoV2ViS2l0OjpGaW5kQ29udHJv
bGxlcjo6ZmluZFN0cmluZyk6CisKIDIwMTgtMDgtMzEgIEZyZWRlcmljIFdhbmcgIDxmd2FuZ0Bp
Z2FsaWEuY29tPgogCiAgICAgICAgIEJ1ZyAxODIwNTMgLSBbQ1NTT00gVmlld10gSW1wbGVtZW50
IHN0YW5kYXJkIGJlaGF2aW9yIGZvciBzY3JvbGxpbmdFbGVtZW50CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0Nv
Y29hLm1tCShyZXZpc2lvbiAyMzU1MzkpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTExNCwxMiAr
MTE0LDEyIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZU4KICAgICBT
YW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHkocGFyYW1ldGVycy5kaXNrQ2FjaGVE
aXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogICAgIE9wdGlvblNldDxOZXR3b3JrQ2FjaGU6OkNh
Y2hlOjpPcHRpb24+IGNhY2hlT3B0aW9ucyB7IE5ldHdvcmtDYWNoZTo6Q2FjaGU6Ok9wdGlvbjo6
UmVnaXN0ZXJOb3RpZnkgfTsKICAgICBpZiAocGFyYW1ldGVycy5zaG91bGRFbmFibGVOZXR3b3Jr
Q2FjaGVFZmZpY2FjeUxvZ2dpbmcpCi0gICAgICAgIGNhY2hlT3B0aW9ucyB8PSBOZXR3b3JrQ2Fj
aGU6OkNhY2hlOjpPcHRpb246OkVmZmljYWN5TG9nZ2luZzsKKyAgICAgICAgY2FjaGVPcHRpb25z
LmFkZChOZXR3b3JrQ2FjaGU6OkNhY2hlOjpPcHRpb246OkVmZmljYWN5TG9nZ2luZyk7CiAgICAg
aWYgKHBhcmFtZXRlcnMuc2hvdWxkVXNlVGVzdGluZ05ldHdvcmtTZXNzaW9uKQotICAgICAgICBj
YWNoZU9wdGlvbnMgfD0gTmV0d29ya0NhY2hlOjpDYWNoZTo6T3B0aW9uOjpUZXN0aW5nTW9kZTsK
KyAgICAgICAgY2FjaGVPcHRpb25zLmFkZChOZXR3b3JrQ2FjaGU6OkNhY2hlOjpPcHRpb246OlRl
c3RpbmdNb2RlKTsKICNpZiBFTkFCTEUoTkVUV09SS19DQUNIRV9TUEVDVUxBVElWRV9SRVZBTElE
QVRJT04pCiAgICAgaWYgKHBhcmFtZXRlcnMuc2hvdWxkRW5hYmxlTmV0d29ya0NhY2hlU3BlY3Vs
YXRpdmVSZXZhbGlkYXRpb24pCi0gICAgICAgIGNhY2hlT3B0aW9ucyB8PSBOZXR3b3JrQ2FjaGU6
OkNhY2hlOjpPcHRpb246OlNwZWN1bGF0aXZlUmV2YWxpZGF0aW9uOworICAgICAgICBjYWNoZU9w
dGlvbnMuYWRkKE5ldHdvcmtDYWNoZTo6Q2FjaGU6Ok9wdGlvbjo6U3BlY3VsYXRpdmVSZXZhbGlk
YXRpb24pOwogI2VuZGlmCiAKICAgICBtX2NhY2hlID0gTmV0d29ya0NhY2hlOjpDYWNoZTo6b3Bl
bihtX2Rpc2tDYWNoZURpcmVjdG9yeSwgY2FjaGVPcHRpb25zKTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAu
Y3BwCShyZXZpc2lvbiAyMzU1MzkpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3Nv
dXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEzLDEwICsxMTMs
MTAgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplTgogCiAgICAgT3B0
aW9uU2V0PE5ldHdvcmtDYWNoZTo6Q2FjaGU6Ok9wdGlvbj4gY2FjaGVPcHRpb25zIHsgTmV0d29y
a0NhY2hlOjpDYWNoZTo6T3B0aW9uOjpSZWdpc3Rlck5vdGlmeSB9OwogICAgIGlmIChwYXJhbWV0
ZXJzLnNob3VsZEVuYWJsZU5ldHdvcmtDYWNoZUVmZmljYWN5TG9nZ2luZykKLSAgICAgICAgY2Fj
aGVPcHRpb25zIHw9IE5ldHdvcmtDYWNoZTo6Q2FjaGU6Ok9wdGlvbjo6RWZmaWNhY3lMb2dnaW5n
OworICAgICAgICBjYWNoZU9wdGlvbnMuYWRkKE5ldHdvcmtDYWNoZTo6Q2FjaGU6Ok9wdGlvbjo6
RWZmaWNhY3lMb2dnaW5nKTsKICNpZiBFTkFCTEUoTkVUV09SS19DQUNIRV9TUEVDVUxBVElWRV9S
RVZBTElEQVRJT04pCiAgICAgaWYgKHBhcmFtZXRlcnMuc2hvdWxkRW5hYmxlTmV0d29ya0NhY2hl
U3BlY3VsYXRpdmVSZXZhbGlkYXRpb24pCi0gICAgICAgIGNhY2hlT3B0aW9ucyB8PSBOZXR3b3Jr
Q2FjaGU6OkNhY2hlOjpPcHRpb246OlNwZWN1bGF0aXZlUmV2YWxpZGF0aW9uOworICAgICAgICBj
YWNoZU9wdGlvbnMuYWRkKE5ldHdvcmtDYWNoZTo6Q2FjaGU6Ok9wdGlvbjo6U3BlY3VsYXRpdmVS
ZXZhbGlkYXRpb24pOwogI2VuZGlmCiAKICAgICBtX2NhY2hlID0gTmV0d29ya0NhY2hlOjpDYWNo
ZTo6b3BlbihtX2Rpc2tDYWNoZURpcmVjdG9yeSwgY2FjaGVPcHRpb25zKTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkV2ZW50Q29udmVyc2lvbi5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViRXZlbnRDb252ZXJzaW9uLmNwcAkocmV2aXNpb24gMjM1NTM5
KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvV2ViRXZlbnRDb252ZXJzaW9uLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNjksMTUgKzY5LDE1IEBAIHB1YmxpYzoKICAgICAgICAgfQogCiAgICAgICAg
IGlmICh3ZWJFdmVudC5zaGlmdEtleSgpKQotICAgICAgICAgICAgbV9tb2RpZmllcnMgfD0gTW9k
aWZpZXI6OlNoaWZ0S2V5OworICAgICAgICAgICAgbV9tb2RpZmllcnMuYWRkKE1vZGlmaWVyOjpT
aGlmdEtleSk7CiAgICAgICAgIGlmICh3ZWJFdmVudC5jb250cm9sS2V5KCkpCi0gICAgICAgICAg
ICBtX21vZGlmaWVycyB8PSBNb2RpZmllcjo6Q3RybEtleTsKKyAgICAgICAgICAgIG1fbW9kaWZp
ZXJzLmFkZChNb2RpZmllcjo6Q3RybEtleSk7CiAgICAgICAgIGlmICh3ZWJFdmVudC5hbHRLZXko
KSkKLSAgICAgICAgICAgIG1fbW9kaWZpZXJzIHw9IE1vZGlmaWVyOjpBbHRLZXk7CisgICAgICAg
ICAgICBtX21vZGlmaWVycy5hZGQoTW9kaWZpZXI6OkFsdEtleSk7CiAgICAgICAgIGlmICh3ZWJF
dmVudC5tZXRhS2V5KCkpCi0gICAgICAgICAgICBtX21vZGlmaWVycyB8PSBNb2RpZmllcjo6TWV0
YUtleTsKKyAgICAgICAgICAgIG1fbW9kaWZpZXJzLmFkZChNb2RpZmllcjo6TWV0YUtleSk7CiAg
ICAgICAgIGlmICh3ZWJFdmVudC5jYXBzTG9ja0tleSgpKQotICAgICAgICAgICAgbV9tb2RpZmll
cnMgfD0gTW9kaWZpZXI6OkNhcHNMb2NrS2V5OworICAgICAgICAgICAgbV9tb2RpZmllcnMuYWRk
KE1vZGlmaWVyOjpDYXBzTG9ja0tleSk7CiAKICAgICAgICAgbV90aW1lc3RhbXAgPSB3ZWJFdmVu
dC50aW1lc3RhbXAoKTsKIApAQCAtMTM2LDE1ICsxMzYsMTUgQEAgcHVibGljOgogICAgICAgICBt
X3R5cGUgPSBQbGF0Zm9ybUV2ZW50OjpXaGVlbDsKIAogICAgICAgICBpZiAod2ViRXZlbnQuc2hp
ZnRLZXkoKSkKLSAgICAgICAgICAgIG1fbW9kaWZpZXJzIHw9IE1vZGlmaWVyOjpTaGlmdEtleTsK
KyAgICAgICAgICAgIG1fbW9kaWZpZXJzLmFkZChNb2RpZmllcjo6U2hpZnRLZXkpOwogICAgICAg
ICBpZiAod2ViRXZlbnQuY29udHJvbEtleSgpKQotICAgICAgICAgICAgbV9tb2RpZmllcnMgfD0g
TW9kaWZpZXI6OkN0cmxLZXk7CisgICAgICAgICAgICBtX21vZGlmaWVycy5hZGQoTW9kaWZpZXI6
OkN0cmxLZXkpOwogICAgICAgICBpZiAod2ViRXZlbnQuYWx0S2V5KCkpCi0gICAgICAgICAgICBt
X21vZGlmaWVycyB8PSBNb2RpZmllcjo6QWx0S2V5OworICAgICAgICAgICAgbV9tb2RpZmllcnMu
YWRkKE1vZGlmaWVyOjpBbHRLZXkpOwogICAgICAgICBpZiAod2ViRXZlbnQubWV0YUtleSgpKQot
ICAgICAgICAgICAgbV9tb2RpZmllcnMgfD0gTW9kaWZpZXI6Ok1ldGFLZXk7CisgICAgICAgICAg
ICBtX21vZGlmaWVycy5hZGQoTW9kaWZpZXI6Ok1ldGFLZXkpOwogICAgICAgICBpZiAod2ViRXZl
bnQuY2Fwc0xvY2tLZXkoKSkKLSAgICAgICAgICAgIG1fbW9kaWZpZXJzIHw9IE1vZGlmaWVyOjpD
YXBzTG9ja0tleTsKKyAgICAgICAgICAgIG1fbW9kaWZpZXJzLmFkZChNb2RpZmllcjo6Q2Fwc0xv
Y2tLZXkpOwogCiAgICAgICAgIG1fdGltZXN0YW1wID0gd2ViRXZlbnQudGltZXN0YW1wKCk7CiAK
QEAgLTE5OCwxNSArMTk4LDE1IEBAIHB1YmxpYzoKICAgICAgICAgfQogCiAgICAgICAgIGlmICh3
ZWJFdmVudC5zaGlmdEtleSgpKQotICAgICAgICAgICAgbV9tb2RpZmllcnMgfD0gTW9kaWZpZXI6
OlNoaWZ0S2V5OworICAgICAgICAgICAgbV9tb2RpZmllcnMuYWRkKE1vZGlmaWVyOjpTaGlmdEtl
eSk7CiAgICAgICAgIGlmICh3ZWJFdmVudC5jb250cm9sS2V5KCkpCi0gICAgICAgICAgICBtX21v
ZGlmaWVycyB8PSBNb2RpZmllcjo6Q3RybEtleTsKKyAgICAgICAgICAgIG1fbW9kaWZpZXJzLmFk
ZChNb2RpZmllcjo6Q3RybEtleSk7CiAgICAgICAgIGlmICh3ZWJFdmVudC5hbHRLZXkoKSkKLSAg
ICAgICAgICAgIG1fbW9kaWZpZXJzIHw9IE1vZGlmaWVyOjpBbHRLZXk7CisgICAgICAgICAgICBt
X21vZGlmaWVycy5hZGQoTW9kaWZpZXI6OkFsdEtleSk7CiAgICAgICAgIGlmICh3ZWJFdmVudC5t
ZXRhS2V5KCkpCi0gICAgICAgICAgICBtX21vZGlmaWVycyB8PSBNb2RpZmllcjo6TWV0YUtleTsK
KyAgICAgICAgICAgIG1fbW9kaWZpZXJzLmFkZChNb2RpZmllcjo6TWV0YUtleSk7CiAgICAgICAg
IGlmICh3ZWJFdmVudC5jYXBzTG9ja0tleSgpKQotICAgICAgICAgICAgbV9tb2RpZmllcnMgfD0g
TW9kaWZpZXI6OkNhcHNMb2NrS2V5OworICAgICAgICAgICAgbV9tb2RpZmllcnMuYWRkKE1vZGlm
aWVyOjpDYXBzTG9ja0tleSk7CiAKICAgICAgICAgbV90aW1lc3RhbXAgPSB3ZWJFdmVudC50aW1l
c3RhbXAoKTsKIApAQCAtMzM5LDE1ICszMzksMTUgQEAgcHVibGljOgogICAgICAgICB9CiAKICAg
ICAgICAgaWYgKHdlYkV2ZW50LnNoaWZ0S2V5KCkpCi0gICAgICAgICAgICBtX21vZGlmaWVycyB8
PSBNb2RpZmllcjo6U2hpZnRLZXk7CisgICAgICAgICAgICBtX21vZGlmaWVycy5hZGQoTW9kaWZp
ZXI6OlNoaWZ0S2V5KTsKICAgICAgICAgaWYgKHdlYkV2ZW50LmNvbnRyb2xLZXkoKSkKLSAgICAg
ICAgICAgIG1fbW9kaWZpZXJzIHw9IE1vZGlmaWVyOjpDdHJsS2V5OworICAgICAgICAgICAgbV9t
b2RpZmllcnMuYWRkKE1vZGlmaWVyOjpDdHJsS2V5KTsKICAgICAgICAgaWYgKHdlYkV2ZW50LmFs
dEtleSgpKQotICAgICAgICAgICAgbV9tb2RpZmllcnMgfD0gTW9kaWZpZXI6OkFsdEtleTsKKyAg
ICAgICAgICAgIG1fbW9kaWZpZXJzLmFkZChNb2RpZmllcjo6QWx0S2V5KTsKICAgICAgICAgaWYg
KHdlYkV2ZW50Lm1ldGFLZXkoKSkKLSAgICAgICAgICAgIG1fbW9kaWZpZXJzIHw9IE1vZGlmaWVy
OjpNZXRhS2V5OworICAgICAgICAgICAgbV9tb2RpZmllcnMuYWRkKE1vZGlmaWVyOjpNZXRhS2V5
KTsKICAgICAgICAgaWYgKHdlYkV2ZW50LmNhcHNMb2NrS2V5KCkpCi0gICAgICAgICAgICBtX21v
ZGlmaWVycyB8PSBNb2RpZmllcjo6Q2Fwc0xvY2tLZXk7CisgICAgICAgICAgICBtX21vZGlmaWVy
cy5hZGQoTW9kaWZpZXI6OkNhcHNMb2NrS2V5KTsKIAogICAgICAgICBtX3RpbWVzdGFtcCA9IHdl
YkV2ZW50LnRpbWVzdGFtcCgpOwogCkBAIC0zOTgsMTUgKzM5OCwxNSBAQCBwdWJsaWM6CiAgICAg
ICAgIH0KIAogICAgICAgICBpZiAod2ViRXZlbnQuc2hpZnRLZXkoKSkKLSAgICAgICAgICAgIG1f
bW9kaWZpZXJzIHw9IE1vZGlmaWVyOjpTaGlmdEtleTsKKyAgICAgICAgICAgIG1fbW9kaWZpZXJz
LmFkZChNb2RpZmllcjo6U2hpZnRLZXkpOwogICAgICAgICBpZiAod2ViRXZlbnQuY29udHJvbEtl
eSgpKQotICAgICAgICAgICAgbV9tb2RpZmllcnMgfD0gTW9kaWZpZXI6OkN0cmxLZXk7CisgICAg
ICAgICAgICBtX21vZGlmaWVycy5hZGQoTW9kaWZpZXI6OkN0cmxLZXkpOwogICAgICAgICBpZiAo
d2ViRXZlbnQuYWx0S2V5KCkpCi0gICAgICAgICAgICBtX21vZGlmaWVycyB8PSBNb2RpZmllcjo6
QWx0S2V5OworICAgICAgICAgICAgbV9tb2RpZmllcnMuYWRkKE1vZGlmaWVyOjpBbHRLZXkpOwog
ICAgICAgICBpZiAod2ViRXZlbnQubWV0YUtleSgpKQotICAgICAgICAgICAgbV9tb2RpZmllcnMg
fD0gTW9kaWZpZXI6Ok1ldGFLZXk7CisgICAgICAgICAgICBtX21vZGlmaWVycy5hZGQoTW9kaWZp
ZXI6Ok1ldGFLZXkpOwogICAgICAgICBpZiAod2ViRXZlbnQuY2Fwc0xvY2tLZXkoKSkKLSAgICAg
ICAgICAgIG1fbW9kaWZpZXJzIHw9IE1vZGlmaWVyOjpDYXBzTG9ja0tleTsKKyAgICAgICAgICAg
IG1fbW9kaWZpZXJzLmFkZChNb2RpZmllcjo6Q2Fwc0xvY2tLZXkpOwogCiAgICAgICAgIG1fdGlt
ZXN0YW1wID0gd2ViRXZlbnQudGltZXN0YW1wKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYnNpdGVQb2xpY2llc0RhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYnNpdGVQb2xpY2llc0RhdGEuY3BwCShyZXZpc2lvbiAyMzU1MzkpCisrKyBTb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlUG9saWNpZXNEYXRhLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtOTgsMTMgKzk4LDEzIEBAIHZvaWQgV2Vic2l0ZVBvbGljaWVzRGF0YTo6YXBwbHlUb0RvY3Vt
ZW4KICAgICBjb25zdCBhdXRvJiBhbGxvd2VkUXVpcmtzID0gd2Vic2l0ZVBvbGljaWVzLmFsbG93
ZWRBdXRvcGxheVF1aXJrczsKICAgICAKICAgICBpZiAoYWxsb3dlZFF1aXJrcy5jb250YWlucyhX
ZWJzaXRlQXV0b3BsYXlRdWlyazo6SW5oZXJpdGVkVXNlckdlc3R1cmVzKSkKLSAgICAgICAgcXVp
cmtzIHw9IFdlYkNvcmU6OkF1dG9wbGF5UXVpcms6OkluaGVyaXRlZFVzZXJHZXN0dXJlczsKKyAg
ICAgICAgcXVpcmtzLmFkZChXZWJDb3JlOjpBdXRvcGxheVF1aXJrOjpJbmhlcml0ZWRVc2VyR2Vz
dHVyZXMpOwogICAgIAogICAgIGlmIChhbGxvd2VkUXVpcmtzLmNvbnRhaW5zKFdlYnNpdGVBdXRv
cGxheVF1aXJrOjpTeW50aGVzaXplZFBhdXNlRXZlbnRzKSkKLSAgICAgICAgcXVpcmtzIHw9IFdl
YkNvcmU6OkF1dG9wbGF5UXVpcms6OlN5bnRoZXNpemVkUGF1c2VFdmVudHM7CisgICAgICAgIHF1
aXJrcy5hZGQoV2ViQ29yZTo6QXV0b3BsYXlRdWlyazo6U3ludGhlc2l6ZWRQYXVzZUV2ZW50cyk7
CiAgICAgCiAgICAgaWYgKGFsbG93ZWRRdWlya3MuY29udGFpbnMoV2Vic2l0ZUF1dG9wbGF5UXVp
cms6OkFyYml0cmFyeVVzZXJHZXN0dXJlcykpCi0gICAgICAgIHF1aXJrcyB8PSBXZWJDb3JlOjpB
dXRvcGxheVF1aXJrOjpBcmJpdHJhcnlVc2VyR2VzdHVyZXM7CisgICAgICAgIHF1aXJrcy5hZGQo
V2ViQ29yZTo6QXV0b3BsYXlRdWlyazo6QXJiaXRyYXJ5VXNlckdlc3R1cmVzKTsKIAogICAgIGRv
Y3VtZW50TG9hZGVyLnNldEFsbG93ZWRBdXRvcGxheVF1aXJrcyhxdWlya3MpOwogCkluZGV4OiBT
b3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNh
Y3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRy
ZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24uaAkocmV2aXNpb24gMjM1NTM5KQorKysgU291
cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0
aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTExNiw3ICsxMTYsNyBAQCBwdWJsaWM6CiAKICAgICAg
ICAgdm9pZCBub3RlUHJvcGVydGllc0NoYW5nZWQoT3B0aW9uU2V0PExheWVyQ2hhbmdlPiBjaGFu
Z2VGbGFncykKICAgICAgICAgewotICAgICAgICAgICAgY2hhbmdlZFByb3BlcnRpZXMgfD0gY2hh
bmdlRmxhZ3M7CisgICAgICAgICAgICBjaGFuZ2VkUHJvcGVydGllcy5hZGQoY2hhbmdlRmxhZ3Mp
OwogICAgICAgICB9CiAKICAgICAgICAgdm9pZCByZXNldENoYW5nZWRQcm9wZXJ0aWVzKCkKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24gMjM1
NTM5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTQ0NiwzMiArMTQ0NiwzMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0U3Vw
cHJlc3NWaXNpYmlsaXR5CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVBY3Rpdml0eVN0YXRl
KE9wdGlvblNldDxBY3Rpdml0eVN0YXRlOjpGbGFnPiBmbGFnc1RvVXBkYXRlKQogewotICAgIG1f
YWN0aXZpdHlTdGF0ZSA9IG1fYWN0aXZpdHlTdGF0ZSAtIGZsYWdzVG9VcGRhdGU7CisgICAgbV9h
Y3Rpdml0eVN0YXRlLnJlbW92ZShmbGFnc1RvVXBkYXRlKTsKICAgICBpZiAoZmxhZ3NUb1VwZGF0
ZSAmIEFjdGl2aXR5U3RhdGU6OklzRm9jdXNlZCAmJiBtX3BhZ2VDbGllbnQuaXNWaWV3Rm9jdXNl
ZCgpKQotICAgICAgICBtX2FjdGl2aXR5U3RhdGUgfD0gQWN0aXZpdHlTdGF0ZTo6SXNGb2N1c2Vk
OworICAgICAgICBtX2FjdGl2aXR5U3RhdGUuYWRkKEFjdGl2aXR5U3RhdGU6OklzRm9jdXNlZCk7
CiAgICAgaWYgKGZsYWdzVG9VcGRhdGUgJiBBY3Rpdml0eVN0YXRlOjpXaW5kb3dJc0FjdGl2ZSAm
JiBtX3BhZ2VDbGllbnQuaXNWaWV3V2luZG93QWN0aXZlKCkpCi0gICAgICAgIG1fYWN0aXZpdHlT
dGF0ZSB8PSBBY3Rpdml0eVN0YXRlOjpXaW5kb3dJc0FjdGl2ZTsKKyAgICAgICAgbV9hY3Rpdml0
eVN0YXRlLmFkZChBY3Rpdml0eVN0YXRlOjpXaW5kb3dJc0FjdGl2ZSk7CiAgICAgaWYgKGZsYWdz
VG9VcGRhdGUgJiBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUgJiYgbV9wYWdlQ2xpZW50LmlzVmll
d1Zpc2libGUoKSkKLSAgICAgICAgbV9hY3Rpdml0eVN0YXRlIHw9IEFjdGl2aXR5U3RhdGU6Oklz
VmlzaWJsZTsKKyAgICAgICAgbV9hY3Rpdml0eVN0YXRlLmFkZChBY3Rpdml0eVN0YXRlOjpJc1Zp
c2libGUpOwogICAgIGlmIChmbGFnc1RvVXBkYXRlICYgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxl
T3JPY2NsdWRlZCAmJiBtX3BhZ2VDbGllbnQuaXNWaWV3VmlzaWJsZU9yT2NjbHVkZWQoKSkKLSAg
ICAgICAgbV9hY3Rpdml0eVN0YXRlIHw9IEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZU9yT2NjbHVk
ZWQ7CisgICAgICAgIG1fYWN0aXZpdHlTdGF0ZS5hZGQoQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxl
T3JPY2NsdWRlZCk7CiAgICAgaWYgKGZsYWdzVG9VcGRhdGUgJiBBY3Rpdml0eVN0YXRlOjpJc0lu
V2luZG93ICYmIG1fcGFnZUNsaWVudC5pc1ZpZXdJbldpbmRvdygpKQotICAgICAgICBtX2FjdGl2
aXR5U3RhdGUgfD0gQWN0aXZpdHlTdGF0ZTo6SXNJbldpbmRvdzsKKyAgICAgICAgbV9hY3Rpdml0
eVN0YXRlLmFkZChBY3Rpdml0eVN0YXRlOjpJc0luV2luZG93KTsKICAgICBpZiAoZmxhZ3NUb1Vw
ZGF0ZSAmIEFjdGl2aXR5U3RhdGU6OklzVmlzdWFsbHlJZGxlICYmIG1fcGFnZUNsaWVudC5pc1Zp
c3VhbGx5SWRsZSgpKQotICAgICAgICBtX2FjdGl2aXR5U3RhdGUgfD0gQWN0aXZpdHlTdGF0ZTo6
SXNWaXN1YWxseUlkbGU7CisgICAgICAgIG1fYWN0aXZpdHlTdGF0ZS5hZGQoQWN0aXZpdHlTdGF0
ZTo6SXNWaXN1YWxseUlkbGUpOwogICAgIGlmIChmbGFnc1RvVXBkYXRlICYgQWN0aXZpdHlTdGF0
ZTo6SXNBdWRpYmxlICYmIG1fbWVkaWFTdGF0ZSAmIE1lZGlhUHJvZHVjZXI6OklzUGxheWluZ0F1
ZGlvICYmICEobV9tdXRlZFN0YXRlICYgTWVkaWFQcm9kdWNlcjo6QXVkaW9Jc011dGVkKSkKLSAg
ICAgICAgbV9hY3Rpdml0eVN0YXRlIHw9IEFjdGl2aXR5U3RhdGU6OklzQXVkaWJsZTsKKyAgICAg
ICAgbV9hY3Rpdml0eVN0YXRlLmFkZChBY3Rpdml0eVN0YXRlOjpJc0F1ZGlibGUpOwogICAgIGlm
IChmbGFnc1RvVXBkYXRlICYgQWN0aXZpdHlTdGF0ZTo6SXNMb2FkaW5nICYmIG1fcGFnZUxvYWRT
dGF0ZS5pc0xvYWRpbmcoKSkKLSAgICAgICAgbV9hY3Rpdml0eVN0YXRlIHw9IEFjdGl2aXR5U3Rh
dGU6OklzTG9hZGluZzsKKyAgICAgICAgbV9hY3Rpdml0eVN0YXRlLmFkZChBY3Rpdml0eVN0YXRl
OjpJc0xvYWRpbmcpOwogICAgIGlmIChmbGFnc1RvVXBkYXRlICYgQWN0aXZpdHlTdGF0ZTo6SXND
YXB0dXJpbmdNZWRpYSAmJiBtX21lZGlhU3RhdGUgJiAoTWVkaWFQcm9kdWNlcjo6SGFzQWN0aXZl
QXVkaW9DYXB0dXJlRGV2aWNlIHwgTWVkaWFQcm9kdWNlcjo6SGFzQWN0aXZlVmlkZW9DYXB0dXJl
RGV2aWNlKSkKLSAgICAgICAgbV9hY3Rpdml0eVN0YXRlIHw9IEFjdGl2aXR5U3RhdGU6OklzQ2Fw
dHVyaW5nTWVkaWE7CisgICAgICAgIG1fYWN0aXZpdHlTdGF0ZS5hZGQoQWN0aXZpdHlTdGF0ZTo6
SXNDYXB0dXJpbmdNZWRpYSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjphY3Rpdml0eVN0YXRl
RGlkQ2hhbmdlKE9wdGlvblNldDxBY3Rpdml0eVN0YXRlOjpGbGFnPiBtYXlIYXZlQ2hhbmdlZCwg
Ym9vbCB3YW50c1N5bmNocm9ub3VzUmVwbHksIEFjdGl2aXR5U3RhdGVDaGFuZ2VEaXNwYXRjaE1v
ZGUgZGlzcGF0Y2hNb2RlKQogewogICAgIExPR19XSVRIX1NUUkVBTShBY3Rpdml0eVN0YXRlLCBz
dHJlYW0gPDwgIldlYlBhZ2VQcm94eSAiIDw8IHBhZ2VJRCgpIDw8ICIgYWN0aXZpdHlTdGF0ZURp
ZENoYW5nZSAtIG1heUhhdmVDaGFuZ2VkICIgPDwgbWF5SGF2ZUNoYW5nZWQpOwogCi0gICAgbV9w
b3RlbnRpYWxseUNoYW5nZWRBY3Rpdml0eVN0YXRlRmxhZ3MgfD0gbWF5SGF2ZUNoYW5nZWQ7Cisg
ICAgbV9wb3RlbnRpYWxseUNoYW5nZWRBY3Rpdml0eVN0YXRlRmxhZ3MuYWRkKG1heUhhdmVDaGFu
Z2VkKTsKICAgICBtX2FjdGl2aXR5U3RhdGVDaGFuZ2VXYW50c1N5bmNocm9ub3VzUmVwbHkgPSBt
X2FjdGl2aXR5U3RhdGVDaGFuZ2VXYW50c1N5bmNocm9ub3VzUmVwbHkgfHwgd2FudHNTeW5jaHJv
bm91c1JlcGx5OwogCiAgICAgaWYgKG1fc3VwcHJlc3NWaXNpYmlsaXR5VXBkYXRlcyAmJiBkaXNw
YXRjaE1vZGUgIT0gQWN0aXZpdHlTdGF0ZUNoYW5nZURpc3BhdGNoTW9kZTo6SW1tZWRpYXRlKQpA
QCAtMTUyMiw3ICsxNTIyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpc3BhdGNoQWN0aXZpdHlT
dGF0ZQogCiAgICAgLy8gSWYgdGhlIHZpc2liaWxpdHkgc3RhdGUgbWF5IGhhdmUgY2hhbmdlZCwg
dGhlbiBzbyBtYXkgdGhlIHZpc3VhbGx5IGlkbGUgJiBvY2NsdWRlZCBhZ25vc3RpYyBzdGF0ZS4K
ICAgICBpZiAobV9wb3RlbnRpYWxseUNoYW5nZWRBY3Rpdml0eVN0YXRlRmxhZ3MgJiBBY3Rpdml0
eVN0YXRlOjpJc1Zpc2libGUpCi0gICAgICAgIG1fcG90ZW50aWFsbHlDaGFuZ2VkQWN0aXZpdHlT
dGF0ZUZsYWdzIHw9IHsgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlT3JPY2NsdWRlZCwgQWN0aXZp
dHlTdGF0ZTo6SXNWaXN1YWxseUlkbGUgfTsKKyAgICAgICAgbV9wb3RlbnRpYWxseUNoYW5nZWRB
Y3Rpdml0eVN0YXRlRmxhZ3MuYWRkKHsgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlT3JPY2NsdWRl
ZCwgQWN0aXZpdHlTdGF0ZTo6SXNWaXN1YWxseUlkbGUgfSk7CiAKICAgICAvLyBSZWNvcmQgdGhl
IHByaW9yIHZpZXcgc3RhdGUsIHVwZGF0ZSB0aGUgZmxhZ3MgdGhhdCBtYXkgaGF2ZSBjaGFuZ2Vk
LAogICAgIC8vIGFuZCBjaGVjayB3aGljaCBmbGFncyBoYXZlIGFjdHVhbGx5IGNoYW5nZWQuCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAJKHJldmlzaW9uIDIz
NTUzOSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI3MCw3ICsyNzAsNyBAQCB2b2lkIFdLUGFnZVJlbG9hZChXS1BhZ2VSZWYg
cGFnZVJlZikKICAgICBPcHRpb25TZXQ8V2ViQ29yZTo6UmVsb2FkT3B0aW9uPiByZWxvYWRPcHRp
b25zOwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGlmIChsaW5rZWRPbk9yQWZ0ZXIoV2ViS2l0
OjpTREtWZXJzaW9uOjpGaXJzdFdpdGhFeHBpcmVkT25seVJlbG9hZEJlaGF2aW9yKSkKLSAgICAg
ICAgcmVsb2FkT3B0aW9ucyB8PSBXZWJDb3JlOjpSZWxvYWRPcHRpb246OkV4cGlyZWRPbmx5Owor
ICAgICAgICByZWxvYWRPcHRpb25zLmFkZChXZWJDb3JlOjpSZWxvYWRPcHRpb246OkV4cGlyZWRP
bmx5KTsKICNlbmRpZgogCiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5yZWxvYWQocmVsb2FkT3B0aW9u
cyk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1Jlc291cmNlQ2FjaGVN
YW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S1Jlc291cmNlQ2FjaGVNYW5hZ2VyLmNwcAkocmV2aXNpb24gMjM1NTM5KQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0MvV0tSZXNvdXJjZUNhY2hlTWFuYWdlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQwLDEyICs0MCwxMCBAQCBXS1R5cGVJRCBXS1Jlc291cmNlQ2FjaGVNYW5hZ2Vy
R2V0VHlwZUlECiAKIHN0YXRpYyBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiB0b1dlYnNpdGVE
YXRhVHlwZXMoV0tSZXNvdXJjZUNhY2hlc1RvQ2xlYXIgY2FjaGVzVG9DbGVhcikKIHsKLSAgICBP
cHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiB3ZWJzaXRlRGF0YVR5cGVzOwotCi0gICAgd2Vic2l0
ZURhdGFUeXBlcyB8PSBXZWJzaXRlRGF0YVR5cGU6Ok1lbW9yeUNhY2hlOworICAgIE9wdGlvblNl
dDxXZWJzaXRlRGF0YVR5cGU+IHdlYnNpdGVEYXRhVHlwZXMgeyBXZWJzaXRlRGF0YVR5cGU6Ok1l
bW9yeUNhY2hlIH07CiAKICAgICBpZiAoY2FjaGVzVG9DbGVhciA9PSBXS1Jlc291cmNlQ2FjaGVz
VG9DbGVhckFsbCkKLSAgICAgICAgd2Vic2l0ZURhdGFUeXBlcyB8PSBXZWJzaXRlRGF0YVR5cGU6
OkRpc2tDYWNoZTsKKyAgICAgICAgd2Vic2l0ZURhdGFUeXBlcy5hZGQoV2Vic2l0ZURhdGFUeXBl
OjpEaXNrQ2FjaGUpOwogCiAgICAgcmV0dXJuIHdlYnNpdGVEYXRhVHlwZXM7CiB9CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVQb2xpY2llcy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlUG9saWNpZXMu
Y3BwCShyZXZpc2lvbiAyMzU1MzkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S1dlYnNpdGVQb2xpY2llcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgzLDEzICs4MywxMyBAQCB2
b2lkIFdLV2Vic2l0ZVBvbGljaWVzU2V0QWxsb3dlZEF1dG9wbGF5CiB7CiAgICAgT3B0aW9uU2V0
PFdlYnNpdGVBdXRvcGxheVF1aXJrPiBxdWlya3M7CiAgICAgaWYgKGFsbG93ZWRRdWlya3MgJiBr
V0tXZWJzaXRlQXV0b3BsYXlRdWlya0luaGVyaXRlZFVzZXJHZXN0dXJlcykKLSAgICAgICAgcXVp
cmtzIHw9IFdlYnNpdGVBdXRvcGxheVF1aXJrOjpJbmhlcml0ZWRVc2VyR2VzdHVyZXM7CisgICAg
ICAgIHF1aXJrcy5hZGQoV2Vic2l0ZUF1dG9wbGF5UXVpcms6OkluaGVyaXRlZFVzZXJHZXN0dXJl
cyk7CiAKICAgICBpZiAoYWxsb3dlZFF1aXJrcyAmIGtXS1dlYnNpdGVBdXRvcGxheVF1aXJrU3lu
dGhlc2l6ZWRQYXVzZUV2ZW50cykKLSAgICAgICAgcXVpcmtzIHw9IFdlYnNpdGVBdXRvcGxheVF1
aXJrOjpTeW50aGVzaXplZFBhdXNlRXZlbnRzOworICAgICAgICBxdWlya3MuYWRkKFdlYnNpdGVB
dXRvcGxheVF1aXJrOjpTeW50aGVzaXplZFBhdXNlRXZlbnRzKTsKIAogICAgIGlmIChhbGxvd2Vk
UXVpcmtzICYga1dLV2Vic2l0ZUF1dG9wbGF5UXVpcmtBcmJpdHJhcnlVc2VyR2VzdHVyZXMpCi0g
ICAgICAgIHF1aXJrcyB8PSBXZWJzaXRlQXV0b3BsYXlRdWlyazo6QXJiaXRyYXJ5VXNlckdlc3R1
cmVzOworICAgICAgICBxdWlya3MuYWRkKFdlYnNpdGVBdXRvcGxheVF1aXJrOjpBcmJpdHJhcnlV
c2VyR2VzdHVyZXMpOwogCiAgICAgdG9JbXBsKHdlYnNpdGVQb2xpY2llcyktPnNldEFsbG93ZWRB
dXRvcGxheVF1aXJrcyhxdWlya3MpOwogfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0Mvd3BlL1dLQVBJQ2FzdFdQRS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL3dwZS9XS0FQSUNhc3RXUEUuaAkocmV2aXNpb24gMjM1NTM5KQorKysgU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mvd3BlL1dLQVBJQ2FzdFdQRS5oCSh3b3JraW5nIGNv
cHkpCkBAIC01Myw5ICs1Myw5IEBAIGlubGluZSBPcHRpb25TZXQ8V2ViQ29yZTo6QWN0aXZpdHlT
dGF0ZToKICAgICBPcHRpb25TZXQ8V2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZz4gdmlld1N0
YXRlRmxhZ3M7CiAKICAgICBpZiAod2tWaWV3U3RhdGUgJiBrV0tWaWV3U3RhdGVJc0luV2luZG93
KQotICAgICAgICB2aWV3U3RhdGVGbGFncyB8PSBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc0lu
V2luZG93OworICAgICAgICB2aWV3U3RhdGVGbGFncy5hZGQoV2ViQ29yZTo6QWN0aXZpdHlTdGF0
ZTo6SXNJbldpbmRvdyk7CiAgICAgaWYgKHdrVmlld1N0YXRlICYga1dLVmlld1N0YXRlSXNWaXNp
YmxlKQotICAgICAgICB2aWV3U3RhdGVGbGFncyB8PSBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJ
c1Zpc2libGU7CisgICAgICAgIHZpZXdTdGF0ZUZsYWdzLmFkZChXZWJDb3JlOjpBY3Rpdml0eVN0
YXRlOjpJc1Zpc2libGUpOwogCiAgICAgcmV0dXJuIHZpZXdTdGF0ZUZsYWdzOwogfQpJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCShyZXZp
c2lvbiAyMzU1MzkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC05NjEsNyArOTYxLDcgQEAgLSAoV0tOYXZpZ2F0aW9u
ICopcmVsb2FkCiB7CiAgICAgT3B0aW9uU2V0PFdlYkNvcmU6OlJlbG9hZE9wdGlvbj4gcmVsb2Fk
T3B0aW9uczsKICAgICBpZiAobGlua2VkT25PckFmdGVyKFdlYktpdDo6U0RLVmVyc2lvbjo6Rmly
c3RXaXRoRXhwaXJlZE9ubHlSZWxvYWRCZWhhdmlvcikpCi0gICAgICAgIHJlbG9hZE9wdGlvbnMg
fD0gV2ViQ29yZTo6UmVsb2FkT3B0aW9uOjpFeHBpcmVkT25seTsKKyAgICAgICAgcmVsb2FkT3B0
aW9ucy5hZGQoV2ViQ29yZTo6UmVsb2FkT3B0aW9uOjpFeHBpcmVkT25seSk7CiAKICAgICByZXR1
cm4gd3JhcHBlcihfcGFnZS0+cmVsb2FkKHJlbG9hZE9wdGlvbnMpKTsKIH0KSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkSW50ZXJuYWwu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJz
aXRlRGF0YVJlY29yZEludGVybmFsLmgJKHJldmlzaW9uIDIzNTUzOSkKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkSW50ZXJuYWwuaAkod29y
a2luZyBjb3B5KQpAQCAtODUsNyArODUsNyBAQCBzdGF0aWMgaW5saW5lIE9wdGlvblNldDxXZWJL
aXQ6OldlYnNpdGVECiAKICAgICBmb3IgKE5TU3RyaW5nICp3ZWJzaXRlRGF0YVR5cGUgaW4gd2Vi
c2l0ZURhdGFUeXBlcykgewogICAgICAgICBpZiAoYXV0byBkYXRhVHlwZSA9IHRvV2Vic2l0ZURh
dGFUeXBlKHdlYnNpdGVEYXRhVHlwZSkpCi0gICAgICAgICAgICByZXN1bHQgfD0gKmRhdGFUeXBl
OworICAgICAgICAgICAgcmVzdWx0LmFkZCgqZGF0YVR5cGUpOwogICAgIH0KIAogICAgIHJldHVy
biByZXN1bHQ7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJz
aXRlRGF0YVN0b3JlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0JKHJldmlzaW9uIDIzNTUzOSkKKysrIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0JKHdvcmtp
bmcgY29weSkKQEAgLTIyMyw3ICsyMjMsNyBAQCAtICh2b2lkKV9mZXRjaERhdGFSZWNvcmRzT2ZU
eXBlczooTlNTZXQ8CiAKICAgICBPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlRGF0YUZldGNoT3B0
aW9uPiBmZXRjaE9wdGlvbnM7CiAgICAgaWYgKG9wdGlvbnMgJiBfV0tXZWJzaXRlRGF0YVN0b3Jl
RmV0Y2hPcHRpb25Db21wdXRlU2l6ZXMpCi0gICAgICAgIGZldGNoT3B0aW9ucyB8PSBXZWJLaXQ6
OldlYnNpdGVEYXRhRmV0Y2hPcHRpb246OkNvbXB1dGVTaXplczsKKyAgICAgICAgZmV0Y2hPcHRp
b25zLmFkZChXZWJLaXQ6OldlYnNpdGVEYXRhRmV0Y2hPcHRpb246OkNvbXB1dGVTaXplcyk7CiAK
ICAgICBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLmZldGNoRGF0YShXZWJL
aXQ6OnRvV2Vic2l0ZURhdGFUeXBlcyhkYXRhVHlwZXMpLCBmZXRjaE9wdGlvbnMsIFtjb21wbGV0
aW9uSGFuZGxlckNvcHkgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyQ29weSldKGF1dG8gd2Vi
c2l0ZURhdGFSZWNvcmRzKSB7CiAgICAgICAgIFZlY3RvcjxSZWZQdHI8QVBJOjpPYmplY3Q+PiBl
bGVtZW50czsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJz
aXRlUG9saWNpZXMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS1dlYnNpdGVQb2xpY2llcy5tbQkocmV2aXNpb24gMjM1NTM5KQorKysgU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVQb2xpY2llcy5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtNjQsMTMgKzY0LDEzIEBAIC0gKHZvaWQpc2V0QWxsb3dlZEF1dG9wbGF5UXVp
cmtzOihfV0tXZWIKICAgICBPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlQXV0b3BsYXlRdWlyaz4g
cXVpcmtzOwogCiAgICAgaWYgKGFsbG93ZWRRdWlya3MgJiBfV0tXZWJzaXRlQXV0b3BsYXlRdWly
a0luaGVyaXRlZFVzZXJHZXN0dXJlcykKLSAgICAgICAgcXVpcmtzIHw9IFdlYktpdDo6V2Vic2l0
ZUF1dG9wbGF5UXVpcms6OkluaGVyaXRlZFVzZXJHZXN0dXJlczsKKyAgICAgICAgcXVpcmtzLmFk
ZChXZWJLaXQ6OldlYnNpdGVBdXRvcGxheVF1aXJrOjpJbmhlcml0ZWRVc2VyR2VzdHVyZXMpOwog
CiAgICAgaWYgKGFsbG93ZWRRdWlya3MgJiBfV0tXZWJzaXRlQXV0b3BsYXlRdWlya1N5bnRoZXNp
emVkUGF1c2VFdmVudHMpCi0gICAgICAgIHF1aXJrcyB8PSBXZWJLaXQ6OldlYnNpdGVBdXRvcGxh
eVF1aXJrOjpTeW50aGVzaXplZFBhdXNlRXZlbnRzOworICAgICAgICBxdWlya3MuYWRkKFdlYktp
dDo6V2Vic2l0ZUF1dG9wbGF5UXVpcms6OlN5bnRoZXNpemVkUGF1c2VFdmVudHMpOwogCiAgICAg
aWYgKGFsbG93ZWRRdWlya3MgJiBfV0tXZWJzaXRlQXV0b3BsYXlRdWlya0FyYml0cmFyeVVzZXJH
ZXN0dXJlcykKLSAgICAgICAgcXVpcmtzIHw9IFdlYktpdDo6V2Vic2l0ZUF1dG9wbGF5UXVpcms6
OkFyYml0cmFyeVVzZXJHZXN0dXJlczsKKyAgICAgICAgcXVpcmtzLmFkZChXZWJLaXQ6OldlYnNp
dGVBdXRvcGxheVF1aXJrOjpBcmJpdHJhcnlVc2VyR2VzdHVyZXMpOwogCiAgICAgX3dlYnNpdGVQ
b2xpY2llcy0+c2V0QWxsb3dlZEF1dG9wbGF5UXVpcmtzKHF1aXJrcyk7CiB9CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0
LmNwcAkocmV2aXNpb24gMjM1NTM5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0V2ViQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc3NSw4ICs3NzUsOCBA
QCB2b2lkIHdlYmtpdF93ZWJfY29udGV4dF9jbGVhcl9jYWNoZShXZWJLCiAgICAgZ19yZXR1cm5f
aWZfZmFpbChXRUJLSVRfSVNfV0VCX0NPTlRFWFQoY29udGV4dCkpOwogCiAgICAgT3B0aW9uU2V0
PFdlYnNpdGVEYXRhVHlwZT4gd2Vic2l0ZURhdGFUeXBlczsKLSAgICB3ZWJzaXRlRGF0YVR5cGVz
IHw9IFdlYnNpdGVEYXRhVHlwZTo6TWVtb3J5Q2FjaGU7Ci0gICAgd2Vic2l0ZURhdGFUeXBlcyB8
PSBXZWJzaXRlRGF0YVR5cGU6OkRpc2tDYWNoZTsKKyAgICB3ZWJzaXRlRGF0YVR5cGVzLmFkZChX
ZWJzaXRlRGF0YVR5cGU6Ok1lbW9yeUNhY2hlKTsKKyAgICB3ZWJzaXRlRGF0YVR5cGVzLmFkZChX
ZWJzaXRlRGF0YVR5cGU6OkRpc2tDYWNoZSk7CiAgICAgYXV0byYgd2Vic2l0ZURhdGFTdG9yZSA9
IHdlYmtpdFdlYnNpdGVEYXRhTWFuYWdlckdldERhdGFTdG9yZShjb250ZXh0LT5wcml2LT53ZWJz
aXRlRGF0YU1hbmFnZXIuZ2V0KCkpLndlYnNpdGVEYXRhU3RvcmUoKTsKICAgICB3ZWJzaXRlRGF0
YVN0b3JlLnJlbW92ZURhdGEod2Vic2l0ZURhdGFUeXBlcywgLVdhbGxUaW1lOjppbmZpbml0eSgp
LCBbXSB7IH0pOwogfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0V2Vic2l0ZURhdGFNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIuY3BwCShyZXZpc2lvbiAy
MzU1MzkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJzaXRl
RGF0YU1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MzAsMjUgKzYzMCwyNSBAQCBzdGF0
aWMgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gdG9XZWJzCiB7CiAgICAgT3B0aW9uU2V0PFdl
YnNpdGVEYXRhVHlwZT4gcmV0dXJuVmFsdWU7CiAgICAgaWYgKHR5cGVzICYgV0VCS0lUX1dFQlNJ
VEVfREFUQV9NRU1PUllfQ0FDSEUpCi0gICAgICAgIHJldHVyblZhbHVlIHw9IFdlYnNpdGVEYXRh
VHlwZTo6TWVtb3J5Q2FjaGU7CisgICAgICAgIHJldHVyblZhbHVlLmFkZChXZWJzaXRlRGF0YVR5
cGU6Ok1lbW9yeUNhY2hlKTsKICAgICBpZiAodHlwZXMgJiBXRUJLSVRfV0VCU0lURV9EQVRBX0RJ
U0tfQ0FDSEUpCi0gICAgICAgIHJldHVyblZhbHVlIHw9IFdlYnNpdGVEYXRhVHlwZTo6RGlza0Nh
Y2hlOworICAgICAgICByZXR1cm5WYWx1ZS5hZGQoV2Vic2l0ZURhdGFUeXBlOjpEaXNrQ2FjaGUp
OwogICAgIGlmICh0eXBlcyAmIFdFQktJVF9XRUJTSVRFX0RBVEFfT0ZGTElORV9BUFBMSUNBVElP
Tl9DQUNIRSkKLSAgICAgICAgcmV0dXJuVmFsdWUgfD0gV2Vic2l0ZURhdGFUeXBlOjpPZmZsaW5l
V2ViQXBwbGljYXRpb25DYWNoZTsKKyAgICAgICAgcmV0dXJuVmFsdWUuYWRkKFdlYnNpdGVEYXRh
VHlwZTo6T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGUpOwogICAgIGlmICh0eXBlcyAmIFdFQktJ
VF9XRUJTSVRFX0RBVEFfU0VTU0lPTl9TVE9SQUdFKQotICAgICAgICByZXR1cm5WYWx1ZSB8PSBX
ZWJzaXRlRGF0YVR5cGU6OlNlc3Npb25TdG9yYWdlOworICAgICAgICByZXR1cm5WYWx1ZS5hZGQo
V2Vic2l0ZURhdGFUeXBlOjpTZXNzaW9uU3RvcmFnZSk7CiAgICAgaWYgKHR5cGVzICYgV0VCS0lU
X1dFQlNJVEVfREFUQV9MT0NBTF9TVE9SQUdFKQotICAgICAgICByZXR1cm5WYWx1ZSB8PSBXZWJz
aXRlRGF0YVR5cGU6OkxvY2FsU3RvcmFnZTsKKyAgICAgICAgcmV0dXJuVmFsdWUuYWRkKFdlYnNp
dGVEYXRhVHlwZTo6TG9jYWxTdG9yYWdlKTsKICAgICBpZiAodHlwZXMgJiBXRUJLSVRfV0VCU0lU
RV9EQVRBX1dFQlNRTF9EQVRBQkFTRVMpCi0gICAgICAgIHJldHVyblZhbHVlIHw9IFdlYnNpdGVE
YXRhVHlwZTo6V2ViU1FMRGF0YWJhc2VzOworICAgICAgICByZXR1cm5WYWx1ZS5hZGQoV2Vic2l0
ZURhdGFUeXBlOjpXZWJTUUxEYXRhYmFzZXMpOwogICAgIGlmICh0eXBlcyAmIFdFQktJVF9XRUJT
SVRFX0RBVEFfSU5ERVhFRERCX0RBVEFCQVNFUykKLSAgICAgICAgcmV0dXJuVmFsdWUgfD0gV2Vi
c2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXM7CisgICAgICAgIHJldHVyblZhbHVlLmFk
ZChXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNlcyk7CiAjaWYgRU5BQkxFKE5FVFND
QVBFX1BMVUdJTl9BUEkpCiAgICAgaWYgKHR5cGVzICYgV0VCS0lUX1dFQlNJVEVfREFUQV9QTFVH
SU5fREFUQSkKLSAgICAgICAgcmV0dXJuVmFsdWUgfD0gV2Vic2l0ZURhdGFUeXBlOjpQbHVnSW5E
YXRhOworICAgICAgICByZXR1cm5WYWx1ZS5hZGQoV2Vic2l0ZURhdGFUeXBlOjpQbHVnSW5EYXRh
KTsKICNlbmRpZgogICAgIGlmICh0eXBlcyAmIFdFQktJVF9XRUJTSVRFX0RBVEFfQ09PS0lFUykK
LSAgICAgICAgcmV0dXJuVmFsdWUgfD0gV2Vic2l0ZURhdGFUeXBlOjpDb29raWVzOworICAgICAg
ICByZXR1cm5WYWx1ZS5hZGQoV2Vic2l0ZURhdGFUeXBlOjpDb29raWVzKTsKICAgICByZXR1cm4g
cmV0dXJuVmFsdWU7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dl
YlZpZXdJbXBsLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dlYlZpZXdJbXBsLm1tCShyZXZpc2lvbiAyMzU1MzkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQkod29ya2luZyBjb3B5KQpAQCAtMjExOCw3ICsyMTE4
LDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6dmlld0RpZE1vdmVUb1dpbmRvdygpCiAgICAgICAgIGlm
IChtX3Nob3VsZERlZmVyVmlld0luV2luZG93Q2hhbmdlcykKICAgICAgICAgICAgIG1fdmlld0lu
V2luZG93Q2hhbmdlV2FzRGVmZXJyZWQgPSB0cnVlOwogICAgICAgICBlbHNlCi0gICAgICAgICAg
ICBhY3Rpdml0eVN0YXRlQ2hhbmdlcyB8PSBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc0luV2lu
ZG93OworICAgICAgICAgICAgYWN0aXZpdHlTdGF0ZUNoYW5nZXMuYWRkKFdlYkNvcmU6OkFjdGl2
aXR5U3RhdGU6OklzSW5XaW5kb3cpOwogICAgICAgICBtX3BhZ2UtPmFjdGl2aXR5U3RhdGVEaWRD
aGFuZ2UoYWN0aXZpdHlTdGF0ZUNoYW5nZXMpOwogCiAgICAgICAgIHVwZGF0ZVdpbmRvd0FuZFZp
ZXdGcmFtZXMoKTsKQEAgLTIxNDQsNyArMjE0NCw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnZpZXdE
aWRNb3ZlVG9XaW5kb3coKQogICAgICAgICBpZiAobV9zaG91bGREZWZlclZpZXdJbldpbmRvd0No
YW5nZXMpCiAgICAgICAgICAgICBtX3ZpZXdJbldpbmRvd0NoYW5nZVdhc0RlZmVycmVkID0gdHJ1
ZTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgYWN0aXZpdHlTdGF0ZUNoYW5nZXMgfD0gV2Vi
Q29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNJbldpbmRvdzsKKyAgICAgICAgICAgIGFjdGl2aXR5U3Rh
dGVDaGFuZ2VzLmFkZChXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc0luV2luZG93KTsKICAgICAg
ICAgbV9wYWdlLT5hY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKGFjdGl2aXR5U3RhdGVDaGFuZ2VzKTsK
IAogICAgICAgICBbTlNFdmVudCByZW1vdmVNb25pdG9yOm1fZmxhZ3NDaGFuZ2VkRXZlbnRNb25p
dG9yXTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhUmVjb3JkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YVJlY29yZC5jcHAJKHJldmlzaW9uIDIzNTUzOSkKKysrIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhUmVjb3JkLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNzksMzAgKzc5LDI3IEBAIFN0cmluZyBXZWJzaXRlRGF0YVJlY29yZDo6
ZGlzcGxheU5hbWVGb3IKIAogdm9pZCBXZWJzaXRlRGF0YVJlY29yZDo6YWRkKFdlYnNpdGVEYXRh
VHlwZSB0eXBlLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbikKIHsK
LSAgICB0eXBlcyB8PSB0eXBlOwotCisgICAgdHlwZXMuYWRkKHR5cGUpOwogICAgIG9yaWdpbnMu
YWRkKG9yaWdpbik7CiB9CiAKIHZvaWQgV2Vic2l0ZURhdGFSZWNvcmQ6OmFkZENvb2tpZUhvc3RO
YW1lKGNvbnN0IFN0cmluZyYgaG9zdE5hbWUpCiB7Ci0gICAgdHlwZXMgfD0gV2Vic2l0ZURhdGFU
eXBlOjpDb29raWVzOwotCisgICAgdHlwZXMuYWRkKFdlYnNpdGVEYXRhVHlwZTo6Q29va2llcyk7
CiAgICAgY29va2llSG9zdE5hbWVzLmFkZChob3N0TmFtZSk7CiB9CiAKICNpZiBFTkFCTEUoTkVU
U0NBUEVfUExVR0lOX0FQSSkKIHZvaWQgV2Vic2l0ZURhdGFSZWNvcmQ6OmFkZFBsdWdpbkRhdGFI
b3N0TmFtZShjb25zdCBTdHJpbmcmIGhvc3ROYW1lKQogewotICAgIHR5cGVzIHw9IFdlYnNpdGVE
YXRhVHlwZTo6UGx1Z0luRGF0YTsKLQorICAgIHR5cGVzLmFkZChXZWJzaXRlRGF0YVR5cGU6OlBs
dWdJbkRhdGEpOwogICAgIHBsdWdpbkRhdGFIb3N0TmFtZXMuYWRkKGhvc3ROYW1lKTsKIH0KICNl
bmRpZgogCiB2b2lkIFdlYnNpdGVEYXRhUmVjb3JkOjphZGRIU1RTQ2FjaGVIb3N0bmFtZShjb25z
dCBTdHJpbmcmIGhvc3ROYW1lKQogewotICAgIHR5cGVzIHw9IFdlYnNpdGVEYXRhVHlwZTo6SFNU
U0NhY2hlOworICAgIHR5cGVzLmFkZChXZWJzaXRlRGF0YVR5cGU6OkhTVFNDYWNoZSk7CiAgICAg
SFNUU0NhY2hlSG9zdE5hbWVzLmFkZChob3N0TmFtZSk7CiB9CiAKQEAgLTE1Nyw4ICsxNTQsNyBA
QCBTdHJpbmcgV2Vic2l0ZURhdGFSZWNvcmQ6OnRvcFByaXZhdGVseUNvCiAKIHZvaWQgV2Vic2l0
ZURhdGFSZWNvcmQ6OmFkZE9yaWdpbldpdGhDcmVkZW50aWFsKGNvbnN0IFN0cmluZyYgb3JpZ2lu
KQogewotICAgIHR5cGVzIHw9IFdlYnNpdGVEYXRhVHlwZTo6Q3JlZGVudGlhbHM7Ci0KKyAgICB0
eXBlcy5hZGQoV2Vic2l0ZURhdGFUeXBlOjpDcmVkZW50aWFscyk7CiAgICAgb3JpZ2luc1dpdGhD
cmVkZW50aWFscy5hZGQob3JpZ2luKTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL1dLSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW0JKHJldmlz
aW9uIDIzNTUzOSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS0luc3BlY3RvclZp
ZXdDb250cm9sbGVyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMzgsNyArMjM4LDcgQEAgLSAodm9p
ZClpbnNwZWN0b3JXS1dlYlZpZXdSZWxvYWQ6KFdLSW5zcAogCiAgICAgT3B0aW9uU2V0PFdlYkNv
cmU6OlJlbG9hZE9wdGlvbj4gcmVsb2FkT3B0aW9uczsKICAgICBpZiAoV2ViS2l0OjpsaW5rZWRP
bk9yQWZ0ZXIoV2ViS2l0OjpTREtWZXJzaW9uOjpGaXJzdFdpdGhFeHBpcmVkT25seVJlbG9hZEJl
aGF2aW9yKSkKLSAgICAgICAgcmVsb2FkT3B0aW9ucyB8PSBXZWJDb3JlOjpSZWxvYWRPcHRpb246
OkV4cGlyZWRPbmx5OworICAgICAgICByZWxvYWRPcHRpb25zLmFkZChXZWJDb3JlOjpSZWxvYWRP
cHRpb246OkV4cGlyZWRPbmx5KTsKIAogICAgIF9pbnNwZWN0ZWRQYWdlLT5yZWxvYWQocmVsb2Fk
T3B0aW9ucyk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZU5vZGVI
YW5kbGUuY3BwCShyZXZpc2lvbiAyMzU1MzkpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE3MCw5ICsxNzAsOSBAQCBzdGF0aWMgUmVmUHRyPFdlYkltYWdlPiBpbWFnZUZv
clJlY3QoRnJhCiAKICAgICBhdXRvIHBhaW50QmVoYXZpb3IgPSBmcmFtZVZpZXctPnBhaW50QmVo
YXZpb3IoKSB8IFBhaW50QmVoYXZpb3I6OkZsYXR0ZW5Db21wb3NpdGluZ0xheWVycyB8IFBhaW50
QmVoYXZpb3I6OlNuYXBzaG90dGluZzsKICAgICBpZiAob3B0aW9ucyAmIFNuYXBzaG90T3B0aW9u
c0ZvcmNlQmxhY2tUZXh0KQotICAgICAgICBwYWludEJlaGF2aW9yIHw9IFBhaW50QmVoYXZpb3I6
OkZvcmNlQmxhY2tUZXh0OworICAgICAgICBwYWludEJlaGF2aW9yLmFkZChQYWludEJlaGF2aW9y
OjpGb3JjZUJsYWNrVGV4dCk7CiAgICAgaWYgKG9wdGlvbnMgJiBTbmFwc2hvdE9wdGlvbnNGb3Jj
ZVdoaXRlVGV4dCkKLSAgICAgICAgcGFpbnRCZWhhdmlvciB8PSBQYWludEJlaGF2aW9yOjpGb3Jj
ZVdoaXRlVGV4dDsKKyAgICAgICAgcGFpbnRCZWhhdmlvci5hZGQoUGFpbnRCZWhhdmlvcjo6Rm9y
Y2VXaGl0ZVRleHQpOwogCiAgICAgYXV0byBvbGRQYWludEJlaGF2aW9yID0gZnJhbWVWaWV3LT5w
YWludEJlaGF2aW9yKCk7CiAgICAgZnJhbWVWaWV3LT5zZXRQYWludEJlaGF2aW9yKHBhaW50QmVo
YXZpb3IpOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RP
TS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5k
bGUuY3BwCShyZXZpc2lvbiAyMzU1MzkpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNTAsMTEgKzE1MCwxMiBAQCBSZWZQdHI8V2ViSW1hZ2U+IEluamVjdGVkQnVuZGxl
UmFuZ2VIYW5kCiAgICAgZ3JhcGhpY3NDb250ZXh0LT50cmFuc2xhdGUoLXBhaW50UmVjdC5sb2Nh
dGlvbigpKTsKIAogICAgIE9wdGlvblNldDxQYWludEJlaGF2aW9yPiBvbGRQYWludEJlaGF2aW9y
ID0gZnJhbWVWaWV3LT5wYWludEJlaGF2aW9yKCk7Ci0gICAgT3B0aW9uU2V0PFBhaW50QmVoYXZp
b3I+IHBhaW50QmVoYXZpb3IgPSBvbGRQYWludEJlaGF2aW9yIHwgUGFpbnRCZWhhdmlvcjo6U2Vs
ZWN0aW9uT25seSB8IFBhaW50QmVoYXZpb3I6OkZsYXR0ZW5Db21wb3NpdGluZ0xheWVycyB8IFBh
aW50QmVoYXZpb3I6OlNuYXBzaG90dGluZzsKKyAgICBPcHRpb25TZXQ8UGFpbnRCZWhhdmlvcj4g
cGFpbnRCZWhhdmlvciA9IG9sZFBhaW50QmVoYXZpb3I7CisgICAgcGFpbnRCZWhhdmlvci5hZGQo
eyBQYWludEJlaGF2aW9yOjpTZWxlY3Rpb25Pbmx5LCBQYWludEJlaGF2aW9yOjpGbGF0dGVuQ29t
cG9zaXRpbmdMYXllcnMsIFBhaW50QmVoYXZpb3I6OlNuYXBzaG90dGluZyB9KTsKICAgICBpZiAo
b3B0aW9ucyAmIFNuYXBzaG90T3B0aW9uc0ZvcmNlQmxhY2tUZXh0KQotICAgICAgICBwYWludEJl
aGF2aW9yIHw9IFBhaW50QmVoYXZpb3I6OkZvcmNlQmxhY2tUZXh0OworICAgICAgICBwYWludEJl
aGF2aW9yLmFkZChQYWludEJlaGF2aW9yOjpGb3JjZUJsYWNrVGV4dCk7CiAgICAgaWYgKG9wdGlv
bnMgJiBTbmFwc2hvdE9wdGlvbnNGb3JjZVdoaXRlVGV4dCkKLSAgICAgICAgcGFpbnRCZWhhdmlv
ciB8PSBQYWludEJlaGF2aW9yOjpGb3JjZVdoaXRlVGV4dDsKKyAgICAgICAgcGFpbnRCZWhhdmlv
ci5hZGQoUGFpbnRCZWhhdmlvcjo6Rm9yY2VXaGl0ZVRleHQpOwogCiAgICAgZnJhbWVWaWV3LT5z
ZXRQYWludEJlaGF2aW9yKHBhaW50QmVoYXZpb3IpOwogICAgIG93bmVyRG9jdW1lbnQudXBkYXRl
TGF5b3V0KCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29u
dHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvRmluZENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyMzU1MzkpCisrKyBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTU2LDE1ICs1NiwxNSBAQCBXZWJDb3JlOjpGaW5kT3B0aW9ucyBjb3JlKEZpbmRPcHRpb25zIG9w
CiB7CiAgICAgV2ViQ29yZTo6RmluZE9wdGlvbnMgcmVzdWx0OwogICAgIGlmIChvcHRpb25zICYg
RmluZE9wdGlvbnNDYXNlSW5zZW5zaXRpdmUpCi0gICAgICAgIHJlc3VsdCB8PSBXZWJDb3JlOjpD
YXNlSW5zZW5zaXRpdmU7CisgICAgICAgIHJlc3VsdC5hZGQoV2ViQ29yZTo6Q2FzZUluc2Vuc2l0
aXZlKTsKICAgICBpZiAob3B0aW9ucyAmIEZpbmRPcHRpb25zQXRXb3JkU3RhcnRzKQotICAgICAg
ICByZXN1bHQgfD0gV2ViQ29yZTo6QXRXb3JkU3RhcnRzOworICAgICAgICByZXN1bHQuYWRkKFdl
YkNvcmU6OkF0V29yZFN0YXJ0cyk7CiAgICAgaWYgKG9wdGlvbnMgJiBGaW5kT3B0aW9uc1RyZWF0
TWVkaWFsQ2FwaXRhbEFzV29yZFN0YXJ0KQotICAgICAgICByZXN1bHQgfD0gV2ViQ29yZTo6VHJl
YXRNZWRpYWxDYXBpdGFsQXNXb3JkU3RhcnQ7CisgICAgICAgIHJlc3VsdC5hZGQoV2ViQ29yZTo6
VHJlYXRNZWRpYWxDYXBpdGFsQXNXb3JkU3RhcnQpOwogICAgIGlmIChvcHRpb25zICYgRmluZE9w
dGlvbnNCYWNrd2FyZHMpCi0gICAgICAgIHJlc3VsdCB8PSBXZWJDb3JlOjpCYWNrd2FyZHM7Cisg
ICAgICAgIHJlc3VsdC5hZGQoV2ViQ29yZTo6QmFja3dhcmRzKTsKICAgICBpZiAob3B0aW9ucyAm
IEZpbmRPcHRpb25zV3JhcEFyb3VuZCkKLSAgICAgICAgcmVzdWx0IHw9IFdlYkNvcmU6OldyYXBB
cm91bmQ7CisgICAgICAgIHJlc3VsdC5hZGQoV2ViQ29yZTo6V3JhcEFyb3VuZCk7CiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KIApAQCAtMjA0LDcgKzIwNCw3IEBAIHZvaWQgRmluZENvbnRyb2xsZXI6
OmZpbmRTdHJpbmcoY29uc3QgU3QKICAgICAvLyB3ZSBuZWVkIHRvIGF2b2lkIHNlbmRpbmcgdGhl
IG5vbi1wYWludGVkIHNlbGVjdGlvbiBjaGFuZ2UgdG8gdGhlIFVJIHByb2Nlc3MKICAgICAvLyBz
byB0aGF0IGl0IGRvZXMgbm90IGNsZWFyIHRoZSBzZWxlY3Rpb24gb3V0IGZyb20gdW5kZXIgdXMu
CiAjaWYgUExBVEZPUk0oSU9TKQotICAgIGNvcmVPcHRpb25zIHw9IERvTm90UmV2ZWFsU2VsZWN0
aW9uOworICAgIGNvcmVPcHRpb25zLmFkZChEb05vdFJldmVhbFNlbGVjdGlvbik7CiAjZW5kaWYK
IAogICAgIHdpbGxGaW5kU3RyaW5nKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9D
b29yZGluYXRlZEdyYXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcAko
cmV2aXNpb24gMjM1NTM5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29v
cmRpbmF0ZWRHcmFwaGljcy9UaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE1Niw3ICsxNTYsNyBAQCB2b2lkIFRocmVhZGVkQ29vcmRpbmF0ZWRM
YXllclRyZWVIb3N0OjpzCiAKICAgICBtX3ZpZXdwb3J0Q29udHJvbGxlci5kaWRTY3JvbGwocmVj
dC5sb2NhdGlvbigpKTsKICAgICBpZiAobV9pc0Rpc2NhcmRhYmxlKQotICAgICAgICBtX2Rpc2Nh
cmRhYmxlU3luY0FjdGlvbnMgfD0gRGlzY2FyZGFibGVTeW5jQWN0aW9uczo6VXBkYXRlVmlld3Bv
cnQ7CisgICAgICAgIG1fZGlzY2FyZGFibGVTeW5jQWN0aW9ucy5hZGQoRGlzY2FyZGFibGVTeW5j
QWN0aW9uczo6VXBkYXRlVmlld3BvcnQpOwogICAgIGVsc2UKICAgICAgICAgZGlkQ2hhbmdlVmll
d3BvcnQoKTsKIH0KQEAgLTE2NSw3ICsxNjUsNyBAQCB2b2lkIFRocmVhZGVkQ29vcmRpbmF0ZWRM
YXllclRyZWVIb3N0OjpjCiB7CiAgICAgbV92aWV3cG9ydENvbnRyb2xsZXIuZGlkQ2hhbmdlQ29u
dGVudHNTaXplKG5ld1NpemUpOwogICAgIGlmIChtX2lzRGlzY2FyZGFibGUpCi0gICAgICAgIG1f
ZGlzY2FyZGFibGVTeW5jQWN0aW9ucyB8PSBEaXNjYXJkYWJsZVN5bmNBY3Rpb25zOjpVcGRhdGVW
aWV3cG9ydDsKKyAgICAgICAgbV9kaXNjYXJkYWJsZVN5bmNBY3Rpb25zLmFkZChEaXNjYXJkYWJs
ZVN5bmNBY3Rpb25zOjpVcGRhdGVWaWV3cG9ydCk7CiAgICAgZWxzZQogICAgICAgICBkaWRDaGFu
Z2VWaWV3cG9ydCgpOwogfQpAQCAtMTczLDcgKzE3Myw3IEBAIHZvaWQgVGhyZWFkZWRDb29yZGlu
YXRlZExheWVyVHJlZUhvc3Q6OmMKIHZvaWQgVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhv
c3Q6OmRldmljZU9yUGFnZVNjYWxlRmFjdG9yQ2hhbmdlZCgpCiB7CiAgICAgaWYgKG1faXNEaXNj
YXJkYWJsZSkgewotICAgICAgICBtX2Rpc2NhcmRhYmxlU3luY0FjdGlvbnMgfD0gRGlzY2FyZGFi
bGVTeW5jQWN0aW9uczo6VXBkYXRlU2NhbGU7CisgICAgICAgIG1fZGlzY2FyZGFibGVTeW5jQWN0
aW9ucy5hZGQoRGlzY2FyZGFibGVTeW5jQWN0aW9uczo6VXBkYXRlU2NhbGUpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCkBAIC0xODcsNyArMTg3LDcgQEAgdm9pZCBUaHJlYWRlZENvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdDo6ZAogdm9pZCBUaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9z
dDo6cGFnZUJhY2tncm91bmRUcmFuc3BhcmVuY3lDaGFuZ2VkKCkKIHsKICAgICBpZiAobV9pc0Rp
c2NhcmRhYmxlKSB7Ci0gICAgICAgIG1fZGlzY2FyZGFibGVTeW5jQWN0aW9ucyB8PSBEaXNjYXJk
YWJsZVN5bmNBY3Rpb25zOjpVcGRhdGVCYWNrZ3JvdW5kOworICAgICAgICBtX2Rpc2NhcmRhYmxl
U3luY0FjdGlvbnMuYWRkKERpc2NhcmRhYmxlU3luY0FjdGlvbnM6OlVwZGF0ZUJhY2tncm91bmQp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xOTgsNyArMTk4LDcgQEAgdm9pZCBUaHJl
YWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6cAogdm9pZCBUaHJlYWRlZENvb3JkaW5hdGVk
TGF5ZXJUcmVlSG9zdDo6c2l6ZURpZENoYW5nZShjb25zdCBJbnRTaXplJiBzaXplKQogewogICAg
IGlmIChtX2lzRGlzY2FyZGFibGUpIHsKLSAgICAgICAgbV9kaXNjYXJkYWJsZVN5bmNBY3Rpb25z
IHw9IERpc2NhcmRhYmxlU3luY0FjdGlvbnM6OlVwZGF0ZVNpemU7CisgICAgICAgIG1fZGlzY2Fy
ZGFibGVTeW5jQWN0aW9ucy5hZGQoRGlzY2FyZGFibGVTeW5jQWN0aW9uczo6VXBkYXRlU2l6ZSk7
CiAgICAgICAgIG1fdmlld3BvcnRDb250cm9sbGVyLmRpZENoYW5nZVZpZXdwb3J0U2l6ZShzaXpl
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTIxOCw3ICsyMTgsNyBAQCB2b2lkIFRocmVh
ZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpkCiB7CiAgICAgbV92aWV3cG9ydENvbnRyb2xs
ZXIuZGlkQ2hhbmdlVmlld3BvcnRBdHRyaWJ1dGVzKFdURk1vdmUoYXR0cikpOwogICAgIGlmICht
X2lzRGlzY2FyZGFibGUpCi0gICAgICAgIG1fZGlzY2FyZGFibGVTeW5jQWN0aW9ucyB8PSBEaXNj
YXJkYWJsZVN5bmNBY3Rpb25zOjpVcGRhdGVWaWV3cG9ydDsKKyAgICAgICAgbV9kaXNjYXJkYWJs
ZVN5bmNBY3Rpb25zLmFkZChEaXNjYXJkYWJsZVN5bmNBY3Rpb25zOjpVcGRhdGVWaWV3cG9ydCk7
CiAgICAgZWxzZQogICAgICAgICBkaWRDaGFuZ2VWaWV3cG9ydCgpOwogfQpJbmRleDogU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMjM1NTM5KQorKysgU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTgt
MDgtMzEgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgorCisgICAgICAgIFJlcGxh
Y2UgT3B0aW9uU2V0IHw9IGFuZCAtPSBvcGVyYXRvcnMgd2l0aCBhZGQoKSBhbmQgcmVtb3ZlKCkg
ZnVuY3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xODkxNjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZyYW1lIF9kcmF3UmVjdDpj
b250ZW50c09ubHk6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAo
Y29yZU9wdGlvbnMpOgorCiAyMDE4LTA4LTMxICBGcmVkZXJpYyBXYW5nICA8ZndhbmdAaWdhbGlh
LmNvbT4KIAogICAgICAgICBCdWcgMTgyMDUzIC0gW0NTU09NIFZpZXddIEltcGxlbWVudCBzdGFu
ZGFyZCBiZWhhdmlvciBmb3Igc2Nyb2xsaW5nRWxlbWVudApJbmRleDogU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCShyZXZpc2lvbiAyMzU1MzkpCisrKyBTb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC02NDksMTYgKzY0OSwxNiBAQCAtICh2b2lkKV9kcmF3UmVjdDooTlNSZWN0KXJlY3QgY29udGVu
dHNPCiAgICAgICAgIC8vIEZvciBzdWJmcmFtZXMsIHdlIG5lZWQgdG8gaW5oZXJpdCB0aGUgcGFp
bnQgYmVoYXZpb3IgZnJvbSBvdXIgcGFyZW50CiAgICAgICAgIGlmIChGcmFtZVZpZXcqIHBhcmVu
dFZpZXcgPSBwYXJlbnRGcmFtZSA/IHBhcmVudEZyYW1lLT52aWV3KCkgOiBudWxscHRyKSB7CiAg
ICAgICAgICAgICBpZiAocGFyZW50Vmlldy0+cGFpbnRCZWhhdmlvcigpLmNvbnRhaW5zKFBhaW50
QmVoYXZpb3I6OkZsYXR0ZW5Db21wb3NpdGluZ0xheWVycykpCi0gICAgICAgICAgICAgICAgcGFp
bnRCZWhhdmlvciB8PSBQYWludEJlaGF2aW9yOjpGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnM7Cisg
ICAgICAgICAgICAgICAgcGFpbnRCZWhhdmlvci5hZGQoUGFpbnRCZWhhdmlvcjo6RmxhdHRlbkNv
bXBvc2l0aW5nTGF5ZXJzKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKHBhcmVudFZp
ZXctPnBhaW50QmVoYXZpb3IoKS5jb250YWlucyhQYWludEJlaGF2aW9yOjpTbmFwc2hvdHRpbmcp
KQotICAgICAgICAgICAgICAgIHBhaW50QmVoYXZpb3IgfD0gUGFpbnRCZWhhdmlvcjo6U25hcHNo
b3R0aW5nOworICAgICAgICAgICAgICAgIHBhaW50QmVoYXZpb3IuYWRkKFBhaW50QmVoYXZpb3I6
OlNuYXBzaG90dGluZyk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChwYXJlbnRWaWV3
LT5wYWludEJlaGF2aW9yKCkuY29udGFpbnMoUGFpbnRCZWhhdmlvcjo6VGlsZUZpcnN0UGFpbnQp
KQotICAgICAgICAgICAgICAgIHBhaW50QmVoYXZpb3IgfD0gUGFpbnRCZWhhdmlvcjo6VGlsZUZp
cnN0UGFpbnQ7CisgICAgICAgICAgICAgICAgcGFpbnRCZWhhdmlvci5hZGQoUGFpbnRCZWhhdmlv
cjo6VGlsZUZpcnN0UGFpbnQpOwogICAgICAgICB9CiAgICAgfSBlbHNlCi0gICAgICAgIHBhaW50
QmVoYXZpb3IgfD0gW3NlbGYgX3BhaW50QmVoYXZpb3JGb3JEZXN0aW5hdGlvbkNvbnRleHQ6Y3R4
XTsKKyAgICAgICAgcGFpbnRCZWhhdmlvci5hZGQoW3NlbGYgX3BhaW50QmVoYXZpb3JGb3JEZXN0
aW5hdGlvbkNvbnRleHQ6Y3R4XSk7CiAgICAgICAgIAogICAgIHZpZXctPnNldFBhaW50QmVoYXZp
b3IocGFpbnRCZWhhdmlvcik7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYlZpZXcubW0JKHJldmlzaW9uIDIzNTUzOSkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtNTcxLDE3ICs1NzEsMTcg
QEAgRmluZE9wdGlvbnMgY29yZU9wdGlvbnMoV2ViRmluZE9wdGlvbnMgbwogewogICAgIEZpbmRP
cHRpb25zIGZpbmRPcHRpb25zOwogICAgIGlmIChvcHRpb25zICYgV2ViRmluZE9wdGlvbnNDYXNl
SW5zZW5zaXRpdmUpCi0gICAgICAgIGZpbmRPcHRpb25zIHw9IENhc2VJbnNlbnNpdGl2ZTsKKyAg
ICAgICAgZmluZE9wdGlvbnMuYWRkKENhc2VJbnNlbnNpdGl2ZSk7CiAgICAgaWYgKG9wdGlvbnMg
JiBXZWJGaW5kT3B0aW9uc0F0V29yZFN0YXJ0cykKLSAgICAgICAgZmluZE9wdGlvbnMgfD0gQXRX
b3JkU3RhcnRzOworICAgICAgICBmaW5kT3B0aW9ucy5hZGQoQXRXb3JkU3RhcnRzKTsKICAgICBp
ZiAob3B0aW9ucyAmIFdlYkZpbmRPcHRpb25zVHJlYXRNZWRpYWxDYXBpdGFsQXNXb3JkU3RhcnQp
Ci0gICAgICAgIGZpbmRPcHRpb25zIHw9IFRyZWF0TWVkaWFsQ2FwaXRhbEFzV29yZFN0YXJ0Owor
ICAgICAgICBmaW5kT3B0aW9ucy5hZGQoVHJlYXRNZWRpYWxDYXBpdGFsQXNXb3JkU3RhcnQpOwog
ICAgIGlmIChvcHRpb25zICYgV2ViRmluZE9wdGlvbnNCYWNrd2FyZHMpCi0gICAgICAgIGZpbmRP
cHRpb25zIHw9IEJhY2t3YXJkczsKKyAgICAgICAgZmluZE9wdGlvbnMuYWRkKEJhY2t3YXJkcyk7
CiAgICAgaWYgKG9wdGlvbnMgJiBXZWJGaW5kT3B0aW9uc1dyYXBBcm91bmQpCi0gICAgICAgIGZp
bmRPcHRpb25zIHw9IFdyYXBBcm91bmQ7CisgICAgICAgIGZpbmRPcHRpb25zLmFkZChXcmFwQXJv
dW5kKTsKICAgICBpZiAob3B0aW9ucyAmIFdlYkZpbmRPcHRpb25zU3RhcnRJblNlbGVjdGlvbikK
LSAgICAgICAgZmluZE9wdGlvbnMgfD0gU3RhcnRJblNlbGVjdGlvbjsKKyAgICAgICAgZmluZE9w
dGlvbnMuYWRkKFN0YXJ0SW5TZWxlY3Rpb24pOwogICAgIHJldHVybiBmaW5kT3B0aW9uczsKIH0K
IApJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwko
cmV2aXNpb24gMjM1NTM5KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMTMgQEAKKzIwMTgtMDgtMzEgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29t
PgorCisgICAgICAgIFJlcGxhY2UgT3B0aW9uU2V0IHw9IGFuZCAtPSBvcGVyYXRvcnMgd2l0aCBh
ZGQoKSBhbmQgcmVtb3ZlKCkgZnVuY3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xODkxNjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL09wdGlvblNldC5j
cHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKwogMjAxOC0wOC0zMSAgRnJlZGVy
aWMgV2FuZyAgPGZ3YW5nQGlnYWxpYS5jb20+CiAKICAgICAgICAgQnVnIDE4MjA1MyAtIFtDU1NP
TSBWaWV3XSBJbXBsZW1lbnQgc3RhbmRhcmQgYmVoYXZpb3IgZm9yIHNjcm9sbGluZ0VsZW1lbnQK
SW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL09wdGlvblNldC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvT3B0aW9uU2V0LmNwcAkocmV2
aXNpb24gMjM1NTM5KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvT3B0aW9uU2V0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTYsMTYgKzk2LDI5IEBAIFRFU1QoV1RGX09wdGlvblNl
dCwgTWludXMpCiAgICAgRVhQRUNUX1RSVUUoKHNldCAtIHNldCkuaXNFbXB0eSgpKTsKIH0KIAot
VEVTVChXVEZfT3B0aW9uU2V0LCBNaW51c0VxdWFsKQorVEVTVChXVEZfT3B0aW9uU2V0LCBBZGRB
bmRSZW1vdmUpCiB7Ci0gICAgT3B0aW9uU2V0PEV4YW1wbGVGbGFncz4gc2V0IHsgRXhhbXBsZUZs
YWdzOjpBLCBFeGFtcGxlRmxhZ3M6OkIsIEV4YW1wbGVGbGFnczo6QyB9OworICAgIE9wdGlvblNl
dDxFeGFtcGxlRmxhZ3M+IHNldDsKIAotICAgIEVYUEVDVF9UUlVFKCgoc2V0IC09IEV4YW1wbGVG
bGFnczo6QSkgPT0gT3B0aW9uU2V0PEV4YW1wbGVGbGFncz4geyBFeGFtcGxlRmxhZ3M6OkIsIEV4
YW1wbGVGbGFnczo6QyB9KSk7Ci0gICAgRVhQRUNUX1RSVUUoKHNldCA9PSBPcHRpb25TZXQ8RXhh
bXBsZUZsYWdzPiB7IEV4YW1wbGVGbGFnczo6QiwgRXhhbXBsZUZsYWdzOjpDIH0pKTsKLSAgICBF
WFBFQ1RfVFJVRSgoKHNldCAtPSBFeGFtcGxlRmxhZ3M6OkQpID09IE9wdGlvblNldDxFeGFtcGxl
RmxhZ3M+IHsgRXhhbXBsZUZsYWdzOjpCLCBFeGFtcGxlRmxhZ3M6OkMgfSkpOwotICAgIEVYUEVD
VF9UUlVFKChzZXQgPT0gT3B0aW9uU2V0PEV4YW1wbGVGbGFncz4geyBFeGFtcGxlRmxhZ3M6OkIs
IEV4YW1wbGVGbGFnczo6QyB9KSk7Ci0gICAgRVhQRUNUX1RSVUUoKHNldCAtPSBzZXQpLmlzRW1w
dHkoKSk7Ci0gICAgRVhQRUNUX1RSVUUoc2V0LmlzRW1wdHkoKSk7CisgICAgc2V0LmFkZChFeGFt
cGxlRmxhZ3M6OkEpOworICAgIEVYUEVDVF9UUlVFKHNldC5jb250YWlucyhFeGFtcGxlRmxhZ3M6
OkEpKTsKKyAgICBFWFBFQ1RfRkFMU0Uoc2V0LmNvbnRhaW5zKEV4YW1wbGVGbGFnczo6QikpOwor
ICAgIEVYUEVDVF9GQUxTRShzZXQuY29udGFpbnMoRXhhbXBsZUZsYWdzOjpDKSk7CisKKyAgICBz
ZXQuYWRkKHsgRXhhbXBsZUZsYWdzOjpCLCBFeGFtcGxlRmxhZ3M6OkMgfSk7CisgICAgRVhQRUNU
X1RSVUUoc2V0LmNvbnRhaW5zKEV4YW1wbGVGbGFnczo6QSkpOworICAgIEVYUEVDVF9UUlVFKHNl
dC5jb250YWlucyhFeGFtcGxlRmxhZ3M6OkIpKTsKKyAgICBFWFBFQ1RfVFJVRShzZXQuY29udGFp
bnMoRXhhbXBsZUZsYWdzOjpDKSk7CisKKyAgICBzZXQucmVtb3ZlKEV4YW1wbGVGbGFnczo6Qik7
CisgICAgRVhQRUNUX1RSVUUoc2V0LmNvbnRhaW5zKEV4YW1wbGVGbGFnczo6QSkpOworICAgIEVY
UEVDVF9GQUxTRShzZXQuY29udGFpbnMoRXhhbXBsZUZsYWdzOjpCKSk7CisgICAgRVhQRUNUX1RS
VUUoc2V0LmNvbnRhaW5zKEV4YW1wbGVGbGFnczo6QykpOworCisgICAgc2V0LnJlbW92ZSh7IEV4
YW1wbGVGbGFnczo6QSwgRXhhbXBsZUZsYWdzOjpDIH0pOworICAgIEVYUEVDVF9GQUxTRShzZXQu
Y29udGFpbnMoRXhhbXBsZUZsYWdzOjpBKSk7CisgICAgRVhQRUNUX0ZBTFNFKHNldC5jb250YWlu
cyhFeGFtcGxlRmxhZ3M6OkIpKTsKKyAgICBFWFBFQ1RfRkFMU0Uoc2V0LmNvbnRhaW5zKEV4YW1w
bGVGbGFnczo6QykpOwogfQogCiBURVNUKFdURl9PcHRpb25TZXQsIENvbnRhaW5zVHdvRmxhZ3Mp
CkBAIC0xNDEsMTUgKzE1NCw2IEBAIFRFU1QoV1RGX09wdGlvblNldCwgQ29udGFpbnNUd29GbGFn
czMpCiAgICAgRVhQRUNUX0ZBTFNFKHNldC5jb250YWlucyhFeGFtcGxlRmxhZ3M6OkMpKTsKIH0K
IAotVEVTVChXVEZfT3B0aW9uU2V0LCBPcGVyYXRvckJpdHdpc2VPcikKLXsKLSAgICBPcHRpb25T
ZXQ8RXhhbXBsZUZsYWdzPiBzZXQgPSBFeGFtcGxlRmxhZ3M6OkE7Ci0gICAgc2V0IHw9IEV4YW1w
bGVGbGFnczo6QzsKLSAgICBFWFBFQ1RfVFJVRShzZXQuY29udGFpbnMoRXhhbXBsZUZsYWdzOjpB
KSk7Ci0gICAgRVhQRUNUX0ZBTFNFKHNldC5jb250YWlucyhFeGFtcGxlRmxhZ3M6OkIpKTsKLSAg
ICBFWFBFQ1RfVFJVRShzZXQuY29udGFpbnMoRXhhbXBsZUZsYWdzOjpDKSk7Ci19Ci0KIFRFU1Qo
V1RGX09wdGlvblNldCwgRW1wdHlPcHRpb25TZXRUb1Jhd1ZhbHVlVG9PcHRpb25TZXQpCiB7CiAg
ICAgT3B0aW9uU2V0PEV4YW1wbGVGbGFncz4gc2V0OwpAQCAtMzAyLDEwICszMDYsMTAgQEAgVEVT
VChXVEZfT3B0aW9uU2V0LCBOZXh0SXRlbUFmdGVyTGFyZ2VzdAogVEVTVChXVEZfT3B0aW9uU2V0
LCBJdGVyYXRpb25PcmRlclRoZVNhbWVSZWdhcmRsZXNzT2ZJbnNlcnRpb25PcmRlcikKIHsKICAg
ICBPcHRpb25TZXQ8RXhhbXBsZUZsYWdzPiBzZXQxID0gRXhhbXBsZUZsYWdzOjpDOwotICAgIHNl
dDEgfD0gRXhhbXBsZUZsYWdzOjpBOworICAgIHNldDEuYWRkKEV4YW1wbGVGbGFnczo6QSk7CiAK
ICAgICBPcHRpb25TZXQ8RXhhbXBsZUZsYWdzPiBzZXQyID0gRXhhbXBsZUZsYWdzOjpBOwotICAg
IHNldDIgfD0gRXhhbXBsZUZsYWdzOjpDOworICAgIHNldDIuYWRkKEV4YW1wbGVGbGFnczo6Qyk7
CiAKICAgICBPcHRpb25TZXQ8RXhhbXBsZUZsYWdzPjo6aXRlcmF0b3IgaXQxID0gc2V0MS5iZWdp
bigpOwogICAgIE9wdGlvblNldDxFeGFtcGxlRmxhZ3M+OjppdGVyYXRvciBpdDIgPSBzZXQyLmJl
Z2luKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>348630</attachid>
            <date>2018-08-31 04:00:26 -0700</date>
            <delta_ts>2018-08-31 04:47:29 -0700</delta_ts>
            <desc>patch</desc>
            <filename>optionset-add-remove-8.patch</filename>
            <type>text/plain</type>
            <size>121391</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyMzU1MzkpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDE4LTA4LTMxICBBbnR0aSBLb2l2aXN0byAgPGFu
dHRpQGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIE9wdGlvblNldCB8PSBhbmQgLT0gb3Bl
cmF0b3JzIHdpdGggYWRkKCkgYW5kIHJlbW92ZSgpIGZ1bmN0aW9ucworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg5MTY5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wcm92ZSBjb2RlIHJlYWRhYmlsaXR5
LgorCisgICAgICAgICogd3RmL09wdGlvblNldC5oOgorICAgICAgICAoV1RGOjpPcHRpb25TZXQ6
OmFkZCk6CisgICAgICAgIChXVEY6Ok9wdGlvblNldDo6cmVtb3ZlKToKKyAgICAgICAgKFdURjo6
T3B0aW9uU2V0OjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdURjo6T3B0aW9uU2V0OjpvcGVyYXRv
ciE9KToKKyAgICAgICAgKFdURjo6T3B0aW9uU2V0OjpvcGVyYXRvcnw9KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdURjo6T3B0aW9uU2V0OjpvcGVyYXRvci09KTogRGVsZXRlZC4KKyAgICAgICAgKiB3
dGYvUHJvY2Vzc1ByaXZpbGVnZS5jcHA6CisgICAgICAgIChXVEY6OmFkZFByb2Nlc3NQcml2aWxl
Z2UpOgorICAgICAgICAoV1RGOjpyZW1vdmVQcm9jZXNzUHJpdmlsZWdlKToKKwogMjAxOC0wOC0z
MCAgRG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgogCiAgICAgICAgIFtDTWFr
ZV0gUmVwbGFjZSBBVkZvdW5kYXRpb25TdXBwb3J0LnB5IHVzaW5nIENNYWtlCkluZGV4OiBTb3Vy
Y2UvV1RGL3d0Zi9PcHRpb25TZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9PcHRp
b25TZXQuaAkocmV2aXNpb24gMjM1NTM5KQorKysgU291cmNlL1dURi93dGYvT3B0aW9uU2V0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTExMSwyNiArMTExLDI0IEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuICgqdGhpcyAmIG9wdGlvblNldCkgPT0gb3B0aW9uU2V0OwogICAgIH0KIAotICAgIGNvbnN0
ZXhwciBmcmllbmQgYm9vbCBvcGVyYXRvcj09KE9wdGlvblNldCBsaHMsIE9wdGlvblNldCByaHMp
CisgICAgY29uc3RleHByIHZvaWQgYWRkKE9wdGlvblNldCBvcHRpb25TZXQpCiAgICAgewotICAg
ICAgICByZXR1cm4gbGhzLm1fc3RvcmFnZSA9PSByaHMubV9zdG9yYWdlOworICAgICAgICBtX3N0
b3JhZ2UgfD0gb3B0aW9uU2V0Lm1fc3RvcmFnZTsKICAgICB9CiAKLSAgICBjb25zdGV4cHIgZnJp
ZW5kIGJvb2wgb3BlcmF0b3IhPShPcHRpb25TZXQgbGhzLCBPcHRpb25TZXQgcmhzKQorICAgIGNv
bnN0ZXhwciB2b2lkIHJlbW92ZShPcHRpb25TZXQgb3B0aW9uU2V0KQogICAgIHsKLSAgICAgICAg
cmV0dXJuIGxocy5tX3N0b3JhZ2UgIT0gcmhzLm1fc3RvcmFnZTsKKyAgICAgICAgbV9zdG9yYWdl
ICY9IH5vcHRpb25TZXQubV9zdG9yYWdlOwogICAgIH0KIAotICAgIGZyaWVuZCBPcHRpb25TZXQm
IG9wZXJhdG9yfD0oT3B0aW9uU2V0JiBsaHMsIE9wdGlvblNldCByaHMpCisgICAgY29uc3RleHBy
IGZyaWVuZCBib29sIG9wZXJhdG9yPT0oT3B0aW9uU2V0IGxocywgT3B0aW9uU2V0IHJocykKICAg
ICB7Ci0gICAgICAgIGxocy5tX3N0b3JhZ2UgfD0gcmhzLm1fc3RvcmFnZTsKLSAgICAgICAgcmV0
dXJuIGxoczsKKyAgICAgICAgcmV0dXJuIGxocy5tX3N0b3JhZ2UgPT0gcmhzLm1fc3RvcmFnZTsK
ICAgICB9CiAKLSAgICBmcmllbmQgT3B0aW9uU2V0JiBvcGVyYXRvci09KE9wdGlvblNldCYgbGhz
LCBPcHRpb25TZXQgcmhzKQorICAgIGNvbnN0ZXhwciBmcmllbmQgYm9vbCBvcGVyYXRvciE9KE9w
dGlvblNldCBsaHMsIE9wdGlvblNldCByaHMpCiAgICAgewotICAgICAgICBsaHMubV9zdG9yYWdl
ICY9IH5yaHMubV9zdG9yYWdlOwotICAgICAgICByZXR1cm4gbGhzOworICAgICAgICByZXR1cm4g
bGhzLm1fc3RvcmFnZSAhPSByaHMubV9zdG9yYWdlOwogICAgIH0KIAogICAgIGNvbnN0ZXhwciBm
cmllbmQgT3B0aW9uU2V0IG9wZXJhdG9yfChPcHRpb25TZXQgbGhzLCBPcHRpb25TZXQgcmhzKQpJ
bmRleDogU291cmNlL1dURi93dGYvUHJvY2Vzc1ByaXZpbGVnZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dURi93dGYvUHJvY2Vzc1ByaXZpbGVnZS5jcHAJKHJldmlzaW9uIDIzNTUzOSkKKysr
IFNvdXJjZS9XVEYvd3RmL1Byb2Nlc3NQcml2aWxlZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
NywxMiArNTcsMTIgQEAgYm9vbCBoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZwog
CiB2b2lkIGFkZFByb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZSBwcml2aWxlZ2UpCiB7
Ci0gICAgcHJvY2Vzc1ByaXZpbGVnZXMoKSB8PSBwcml2aWxlZ2U7CisgICAgcHJvY2Vzc1ByaXZp
bGVnZXMoKS5hZGQocHJpdmlsZWdlKTsKIH0KIAogdm9pZCByZW1vdmVQcm9jZXNzUHJpdmlsZWdl
KFByb2Nlc3NQcml2aWxlZ2UgcHJpdmlsZWdlKQogewotICAgIHByb2Nlc3NQcml2aWxlZ2VzKCkg
PSBwcm9jZXNzUHJpdmlsZWdlcygpIC0gcHJpdmlsZWdlOworICAgIHByb2Nlc3NQcml2aWxlZ2Vz
KCkucmVtb3ZlKHByaXZpbGVnZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdURgpJbmRleDogU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkocmV2aXNpb24gMjM1NTM5KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTE5IEBACisyMDE4LTA4LTMxICBBbnR0aSBLb2l2aXN0byAg
PGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIE9wdGlvblNldCB8PSBhbmQgLT0g
b3BlcmF0b3JzIHdpdGggYWRkKCkgYW5kIHJlbW92ZSgpIGZ1bmN0aW9ucworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg5MTY5CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVj
dDo6cmFuZ2VPZlN0cmluZ0Nsb3Nlc3RUb1JhbmdlSW5EaXJlY3Rpb24gY29uc3QpOgorICAgICAg
ICAqIGNzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRleHREZWNvcmF0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRleHRFbXBoYXNpc1Bvc2l0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRleHRVbmRl
cmxpbmVQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6
OmNvbnZlcnRUZXh0RGVjb3JhdGlvblNraXApOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWls
ZGVyQ29udmVydGVyOjpjb252ZXJ0U3BlYWtBcyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1
aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRIYW5naW5nUHVuY3R1YXRpb24pOgorICAgICAgICAqIGNz
cy9wYXJzZXIvQ1NTUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFy
c2VTeXN0ZW1Db2xvcik6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50OjpzdHlsZUNvbG9yT3B0aW9ucyBjb25zdCk6CisgICAgICAgICogZG9t
L0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dE1hcmtlckNvbnRyb2xsZXI6OmFkZE1hcmtlcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dE1hcmtlckNvbnRyb2xsZXI6OnJlbW92ZU1hcmtlcnMpOgorICAgICAgICAqIGRvbS9TY3JpcHRl
ZEFuaW1hdGlvbkNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0ZWRBbmlt
YXRpb25Db250cm9sbGVyOjphZGRUaHJvdHRsaW5nUmVhc29uKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcjo6cmVtb3ZlVGhyb3R0bGluZ1JlYXNvbik6Cisg
ICAgICAgICogZG9tL1NlY3VyaXR5Q29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJp
dHlDb250ZXh0OjpzZXRGb3VuZE1peGVkQ29udGVudCk6CisgICAgICAgICogZG9tL1VJRXZlbnRX
aXRoS2V5U3RhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VUlFdmVudFdpdGhLZXlTdGF0ZTo6
bW9kaWZpZXJzRnJvbUluaXRpYWxpemVyKToKKyAgICAgICAgKFdlYkNvcmU6OlVJRXZlbnRXaXRo
S2V5U3RhdGU6OnNldE1vZGlmaWVyS2V5cyk6CisgICAgICAgICogZG9tL1VzZXJBY3Rpb25FbGVt
ZW50U2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJBY3Rpb25FbGVtZW50U2V0OjpzZXRG
bGFncyk6CisgICAgICAgICogZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDb21wb3NpdGVFZGl0Q29tbWFuZDo6bW92ZVBhcmFncmFwaHMpOgorICAg
ICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cmVw
bGFjZVNlbGVjdGlvbldpdGhGcmFnbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmFw
cGxpZWRFZGl0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6bWFya01pc3NwZWxsaW5n
c0FmdGVyVHlwaW5nVG9Xb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6bWFya01pc3Nw
ZWxsaW5nc0FuZEJhZEdyYW1tYXIpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpyZXNvbHZl
VGV4dENoZWNraW5nVHlwZU1hc2spOgorICAgICAgICAqIGVkaXRpbmcvRnJhbWVTZWxlY3Rpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246Om1vdmVXaXRob3V0VmFsaWRh
dGlvblRvKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpzZXRTZWxlY3RlZFJh
bmdlKToKKyAgICAgICAgKiBlZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmg6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZVNlbGVjdGlvbjo6ZGVmYXVsdFNldFNlbGVjdGlvbk9wdGlvbnMpOgorICAgICAg
ICAqIGVkaXRpbmcvTW92ZVNlbGVjdGlvbkNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TW92ZVNlbGVjdGlvbkNvbW1hbmQ6OmRvQXBwbHkpOgorICAgICAgICAqIGVkaXRpbmcvU3BlbGxD
aGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWxsQ2hlY2tlcjo6ZGlkQ2hlY2tTdWNj
ZWVkKToKKyAgICAgICAgKiBlZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0Q2hlY2tpbmdIZWxwZXI6OmZpbmRGaXJzdE1pc3NwZWxsaW5nT3JCYWRH
cmFtbWFyKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDaGVja2luZ0hlbHBlcjo6Z3Vlc3Nlc0Zv
ck1pc3NwZWxsZWRPclVuZ3JhbW1hdGljYWxSYW5nZSBjb25zdCk6CisgICAgICAgICogZWRpdGlu
Zy9UZXh0SXRlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VhcmNoQnVmZmVyOjpTZWFy
Y2hCdWZmZXIpOgorICAgICAgICAqIGh0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTEFuY2hvckVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OnJlbG9hZCk6CisgICAgICAgICogcGFnZS9Db250ZXh0
TWVudUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVDb250cm9s
bGVyOjpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZCk6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpmaW5kIGNvbnN0KToKKyAgICAgICAg
KiBwYWdlL0RyYWdDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9s
bGVyOjpjb25jbHVkZUVkaXREcmFnKToKKyAgICAgICAgKiBwYWdlL0ZyYW1lU25hcHNob3R0aW5n
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNuYXBzaG90RnJhbWVSZWN0V2l0aENsaXApOgorICAg
ICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnVwZGF0ZUxheWVy
UG9zaXRpb25GbGFncyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OndpbGxQYWludENv
bnRlbnRzKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFn
ZTo6c2V0SXNWaXNpYmxlKToKKyAgICAgICAgKiBwYWdlL1BlcmZvcm1hbmNlT2JzZXJ2ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybWFuY2VPYnNlcnZlcjo6b2JzZXJ2ZSk6CisgICAg
ICAgICogcGFnZS9UZXh0SW5kaWNhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRJbmRp
Y2F0b3I6OmNyZWF0ZVdpdGhSYW5nZSk6CisgICAgICAgICogcGFnZS9XaW5kb3dGZWF0dXJlcy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZURpc2FibGVkQWRhcHRhdGlvbnMpOgorICAgICAg
ICAqIHBhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5oOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGVudFNlY3VyaXR5UG9saWN5OjphZGRIYXNoQWxnb3JpdGhtc0ZvcklubGluZVNjcmlwdHMp
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5OjphZGRIYXNoQWxnb3Jp
dGhtc0ZvcklubGluZVN0eWxlc2hlZXRzKToKKyAgICAgICAgKiBwYWdlL2NzcC9Db250ZW50U2Vj
dXJpdHlQb2xpY3lTb3VyY2VMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1
cml0eVBvbGljeVNvdXJjZUxpc3Q6OnBhcnNlSGFzaFNvdXJjZSk6CisgICAgICAgICogcGxhdGZv
cm0vUGxhdGZvcm1FdmVudC5oOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6UGxh
dGZvcm1FdmVudCk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1BsYXRmb3JtRXZlbnRGYWN0b3J5
SU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6bW9kaWZpZXJzRm9yRXZlbnQpOgorICAgICAgICAq
IHBsYXRmb3JtL21hYy9QbGF0Zm9ybUV2ZW50RmFjdG9yeU1hYy5tbToKKyAgICAgICAgKFdlYkNv
cmU6Om1vZGlmaWVyc0ZvckV2ZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnVwZGF0ZUxheWVyUG9zaXRpb25z
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjp1cGRhdGVMYXllclBvc2l0aW9uc0Fm
dGVyU2Nyb2xsKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWludExheWVyKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWludExheWVyQ29udGVudHNBbmRSZWZs
ZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWludExheWVyQ29udGVu
dHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50Rm9yZWdyb3VuZEZvckZy
YWdtZW50cyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnBhaW50SW50b0xheWVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6cGFpbnRDb250ZW50cyk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlYXNvbnNGb3JDb21wb3NpdGluZyBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZVNjcm9sbENv
b3JkaW5hdGVkU3RhdHVzKToKKyAgICAgICAgKiByZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWlu
dGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbGxlY3RTdHlsZXNGb3JSZW5kZXJlcik6Cisg
ICAgICAgICogcmVuZGVyaW5nL1RleHRQYWludFN0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNvbXB1dGVUZXh0UGFpbnRTdHlsZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRl
clN0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpjaGFuZ2VSZXF1aXJl
c0xheW91dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Y2hhbmdlUmVx
dWlyZXNMYXllclJlcGFpbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6
OmNoYW5nZVJlcXVpcmVzUmVwYWludCBjb25zdCk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5h
bHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VGaW5kT3B0aW9ucyk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnRlcm5hbHM6OmZvcmNlUmVsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVy
bmFsczo6c2V0UGFnZVZpc2liaWxpdHkpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpz
ZXRQYWdlSXNGb2N1c2VkQW5kQWN0aXZlKToKKwogMjAxOC0wOC0zMSAgRnJlZGVyaWMgV2FuZyAg
PGZ3YW5nQGlnYWxpYS5jb20+CiAKICAgICAgICAgQnVnIDE4MjA1MyAtIFtDU1NPTSBWaWV3XSBJ
bXBsZW1lbnQgc3RhbmRhcmQgYmVoYXZpb3IgZm9yIHNjcm9sbGluZ0VsZW1lbnQKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0
LmNwcAkocmV2aXNpb24gMjM1NTM5KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzUxLDkgKzc1MSw5IEBA
IFJlZlB0cjxSYW5nZT4gQWNjZXNzaWJpbGl0eU9iamVjdDo6cmFuZ2UKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgCiAgICAgYm9vbCBpc0JhY2t3YXJkU2VhcmNoID0gc2VhcmNoRGlyZWN0
aW9uID09IEFjY2Vzc2liaWxpdHlTZWFyY2hEaXJlY3Rpb246OlByZXZpb3VzOwotICAgIEZpbmRP
cHRpb25zIGZpbmRPcHRpb25zIHsgeyBBdFdvcmRTdGFydHMsIEF0V29yZEVuZHMsIENhc2VJbnNl
bnNpdGl2ZSwgU3RhcnRJblNlbGVjdGlvbiB9IH07CisgICAgRmluZE9wdGlvbnMgZmluZE9wdGlv
bnMgeyBBdFdvcmRTdGFydHMsIEF0V29yZEVuZHMsIENhc2VJbnNlbnNpdGl2ZSwgU3RhcnRJblNl
bGVjdGlvbiB9OwogICAgIGlmIChpc0JhY2t3YXJkU2VhcmNoKQotICAgICAgICBmaW5kT3B0aW9u
cyB8PSBCYWNrd2FyZHM7CisgICAgICAgIGZpbmRPcHRpb25zLmFkZChCYWNrd2FyZHMpOwogICAg
IAogICAgIFJlZlB0cjxSYW5nZT4gY2xvc2VzdFN0cmluZ1JhbmdlID0gbnVsbHB0cjsKICAgICBm
b3IgKGNvbnN0IGF1dG8mIHNlYXJjaFN0cmluZyA6IHNlYXJjaFN0cmluZ3MpIHsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgJKHJldmlzaW9uIDIzNTUz
OSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzk0LDcgKzM5NCw3IEBAIGlubGluZSBPcHRpb25TZXQ8VGV4dERlY29yYXRp
b24+IFN0eWxlQnUKICAgICBhdXRvIHJlc3VsdCA9IFJlbmRlclN0eWxlOjppbml0aWFsVGV4dERl
Y29yYXRpb24oKTsKICAgICBpZiAoaXM8Q1NTVmFsdWVMaXN0Pih2YWx1ZSkpIHsKICAgICAgICAg
Zm9yIChhdXRvJiBjdXJyZW50VmFsdWUgOiBkb3duY2FzdDxDU1NWYWx1ZUxpc3Q+KHZhbHVlKSkK
LSAgICAgICAgICAgIHJlc3VsdCB8PSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oY3VycmVu
dFZhbHVlLmdldCgpKTsKKyAgICAgICAgICAgIHJlc3VsdC5hZGQoZG93bmNhc3Q8Q1NTUHJpbWl0
aXZlVmFsdWU+KGN1cnJlbnRWYWx1ZS5nZXQoKSkpOwogICAgIH0KICAgICByZXR1cm4gcmVzdWx0
OwogfQpAQCAtNDk4LDcgKzQ5OCw3IEBAIGlubGluZSBPcHRpb25TZXQ8VGV4dEVtcGhhc2lzUG9z
aXRpb24+IFMKIAogICAgIE9wdGlvblNldDxUZXh0RW1waGFzaXNQb3NpdGlvbj4gcG9zaXRpb247
CiAgICAgZm9yIChhdXRvJiBjdXJyZW50VmFsdWUgOiBkb3duY2FzdDxDU1NWYWx1ZUxpc3Q+KHZh
bHVlKSkKLSAgICAgICAgcG9zaXRpb24gfD0gdmFsdWVUb0VtcGhhc2lzUG9zaXRpb24oZG93bmNh
c3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KGN1cnJlbnRWYWx1ZS5nZXQoKSkpOworICAgICAgICBwb3Np
dGlvbi5hZGQodmFsdWVUb0VtcGhhc2lzUG9zaXRpb24oZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFs
dWU+KGN1cnJlbnRWYWx1ZS5nZXQoKSkpKTsKICAgICByZXR1cm4gcG9zaXRpb247CiB9CiAKQEAg
LTY0NSw3ICs2NDUsNyBAQCBpbmxpbmUgT3B0aW9uU2V0PFRleHRVbmRlcmxpbmVQb3NpdGlvbj4g
CiAKICAgICBPcHRpb25TZXQ8VGV4dFVuZGVybGluZVBvc2l0aW9uPiBjb21iaW5lZFBvc2l0aW9u
OwogICAgIGZvciAoYXV0byYgY3VycmVudFZhbHVlIDogZG93bmNhc3Q8Q1NTVmFsdWVMaXN0Pih2
YWx1ZSkpCi0gICAgICAgIGNvbWJpbmVkUG9zaXRpb24gfD0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZl
VmFsdWU+KGN1cnJlbnRWYWx1ZS5nZXQoKSk7CisgICAgICAgIGNvbWJpbmVkUG9zaXRpb24uYWRk
KGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPihjdXJyZW50VmFsdWUuZ2V0KCkpKTsKICAgICBy
ZXR1cm4gY29tYmluZWRQb3NpdGlvbjsKIH0KIApAQCAtNzUzLDcgKzc1Myw3IEBAIGlubGluZSBP
cHRpb25TZXQ8VGV4dERlY29yYXRpb25Ta2lwPiBTdHkKIAogICAgIE9wdGlvblNldDxUZXh0RGVj
b3JhdGlvblNraXA+IHNraXA7CiAgICAgZm9yIChhdXRvJiBjdXJyZW50VmFsdWUgOiBkb3duY2Fz
dDxDU1NWYWx1ZUxpc3Q+KHZhbHVlKSkKLSAgICAgICAgc2tpcCB8PSB2YWx1ZVRvRGVjb3JhdGlv
blNraXAoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KGN1cnJlbnRWYWx1ZS5nZXQoKSkpOwor
ICAgICAgICBza2lwLmFkZCh2YWx1ZVRvRGVjb3JhdGlvblNraXAoZG93bmNhc3Q8Q1NTUHJpbWl0
aXZlVmFsdWU+KGN1cnJlbnRWYWx1ZS5nZXQoKSkpKTsKICAgICByZXR1cm4gc2tpcDsKIH0KIApA
QCAtMTUwNCw3ICsxNTA0LDcgQEAgaW5saW5lIE9wdGlvblNldDxTcGVha0FzPiBTdHlsZUJ1aWxk
ZXJDbwogICAgIGF1dG8gcmVzdWx0ID0gUmVuZGVyU3R5bGU6OmluaXRpYWxTcGVha0FzKCk7CiAg
ICAgaWYgKGlzPENTU1ZhbHVlTGlzdD4odmFsdWUpKSB7CiAgICAgICAgIGZvciAoYXV0byYgY3Vy
cmVudFZhbHVlIDogZG93bmNhc3Q8Q1NTVmFsdWVMaXN0Pih2YWx1ZSkpCi0gICAgICAgICAgICBy
ZXN1bHQgfD0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KGN1cnJlbnRWYWx1ZS5nZXQoKSk7
CisgICAgICAgICAgICByZXN1bHQuYWRkKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPihjdXJy
ZW50VmFsdWUuZ2V0KCkpKTsKICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTE1MTQs
NyArMTUxNCw3IEBAIGlubGluZSBPcHRpb25TZXQ8SGFuZ2luZ1B1bmN0dWF0aW9uPiBTdHkKICAg
ICBhdXRvIHJlc3VsdCA9IFJlbmRlclN0eWxlOjppbml0aWFsSGFuZ2luZ1B1bmN0dWF0aW9uKCk7
CiAgICAgaWYgKGlzPENTU1ZhbHVlTGlzdD4odmFsdWUpKSB7CiAgICAgICAgIGZvciAoYXV0byYg
Y3VycmVudFZhbHVlIDogZG93bmNhc3Q8Q1NTVmFsdWVMaXN0Pih2YWx1ZSkpCi0gICAgICAgICAg
ICByZXN1bHQgfD0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KGN1cnJlbnRWYWx1ZS5nZXQo
KSk7CisgICAgICAgICAgICByZXN1bHQuYWRkKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPihj
dXJyZW50VmFsdWUuZ2V0KCkpKTsKICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlci5jcHAJKHJldmlzaW9uIDIzNTUzOSkK
KysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTE5LDcgKzExOSw3IEBAIENvbG9yIENTU1BhcnNlcjo6cGFyc2VTeXN0ZW1Db2xvcihj
b25zdCAKIAogICAgIE9wdGlvblNldDxTdHlsZUNvbG9yOjpPcHRpb25zPiBvcHRpb25zOwogICAg
IGlmIChjb250ZXh0ICYmIGNvbnRleHQtPnVzZVN5c3RlbUFwcGVhcmFuY2UpCi0gICAgICAgIG9w
dGlvbnMgfD0gU3R5bGVDb2xvcjo6T3B0aW9uczo6VXNlU3lzdGVtQXBwZWFyYW5jZTsKKyAgICAg
ICAgb3B0aW9ucy5hZGQoU3R5bGVDb2xvcjo6T3B0aW9uczo6VXNlU3lzdGVtQXBwZWFyYW5jZSk7
CiAgICAgcmV0dXJuIFJlbmRlclRoZW1lOjpzaW5nbGV0b24oKS5zeXN0ZW1Db2xvcihpZCwgb3B0
aW9ucyk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gMjM1NTM5
KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NzE3OCw5ICs3MTc4LDkgQEAgT3B0aW9uU2V0PFN0eWxlQ29sb3I6Ok9wdGlvbnM+IERvY3VtZW50
OgogewogICAgIE9wdGlvblNldDxTdHlsZUNvbG9yOjpPcHRpb25zPiBvcHRpb25zOwogICAgIGlm
ICh1c2VTeXN0ZW1BcHBlYXJhbmNlKCkpCi0gICAgICAgIG9wdGlvbnMgfD0gU3R5bGVDb2xvcjo6
T3B0aW9uczo6VXNlU3lzdGVtQXBwZWFyYW5jZTsKKyAgICAgICAgb3B0aW9ucy5hZGQoU3R5bGVD
b2xvcjo6T3B0aW9uczo6VXNlU3lzdGVtQXBwZWFyYW5jZSk7CiAgICAgaWYgKHVzZURhcmtBcHBl
YXJhbmNlKCkpCi0gICAgICAgIG9wdGlvbnMgfD0gU3R5bGVDb2xvcjo6T3B0aW9uczo6VXNlRGFy
a0FwcGVhcmFuY2U7CisgICAgICAgIG9wdGlvbnMuYWRkKFN0eWxlQ29sb3I6Ok9wdGlvbnM6OlVz
ZURhcmtBcHBlYXJhbmNlKTsKICAgICByZXR1cm4gb3B0aW9uczsKIH0KIApJbmRleDogU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAJKHJldmlzaW9u
IDIzNTUzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzEsNyArMzMxLDcgQEAgdm9pZCBEb2N1bWVudE1hcmtl
ckNvbnRyb2xsZXI6OmFkZE1hcmtlcgogICAgICAgICAgICAgZG93bmNhc3Q8UmVuZGVyQmxvY2tG
bG93PigqcmVuZGVyZXIpLmVuc3VyZUxpbmVCb3hlcygpOwogICAgIH0KIAotICAgIG1fcG9zc2li
bHlFeGlzdGluZ01hcmtlclR5cGVzIHw9IG5ld01hcmtlci50eXBlKCk7CisgICAgbV9wb3NzaWJs
eUV4aXN0aW5nTWFya2VyVHlwZXMuYWRkKG5ld01hcmtlci50eXBlKCkpOwogCiAgICAgc3RkOjp1
bmlxdWVfcHRyPE1hcmtlckxpc3Q+JiBsaXN0ID0gbV9tYXJrZXJzLmFkZChub2RlLCBudWxscHRy
KS5pdGVyYXRvci0+dmFsdWU7CiAKQEAgLTU4Nyw3ICs1ODcsNyBAQCB2b2lkIERvY3VtZW50TWFy
a2VyQ29udHJvbGxlcjo6cmVtb3ZlTWFyCiAgICAgICAgICAgICByZW1vdmVNYXJrZXJzRnJvbUxp
c3QoaXRlcmF0b3IsIG1hcmtlclR5cGVzKTsKICAgICB9CiAKLSAgICBtX3Bvc3NpYmx5RXhpc3Rp
bmdNYXJrZXJUeXBlcyAtPSBtYXJrZXJUeXBlczsKKyAgICBtX3Bvc3NpYmx5RXhpc3RpbmdNYXJr
ZXJUeXBlcy5yZW1vdmUobWFya2VyVHlwZXMpOwogfQogCiB2b2lkIERvY3VtZW50TWFya2VyQ29u
dHJvbGxlcjo6cmVtb3ZlTWFya2Vyc0Zyb21MaXN0KE1hcmtlck1hcDo6aXRlcmF0b3IgaXRlcmF0
b3IsIE9wdGlvblNldDxEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZT4gbWFya2VyVHlwZXMpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0ZWRBbmltYXRpb25Db250cm9s
bGVyLmNwcAkocmV2aXNpb24gMjM1NTM5KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdGVk
QW5pbWF0aW9uQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMSw3ICsxMjEsNyBA
QCB2b2lkIFNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcjo6YWRkVGhyCiAgICAgaWYgKG1fdGhy
b3R0bGluZ1JlYXNvbnMuY29udGFpbnMocmVhc29uKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
bV90aHJvdHRsaW5nUmVhc29ucyB8PSByZWFzb247CisgICAgbV90aHJvdHRsaW5nUmVhc29ucy5h
ZGQocmVhc29uKTsKIAogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImFkZFRocm90dGxpbmdS
ZWFzb24oJXMpIC0+ICVzIiwgdGhyb3R0bGluZ1JlYXNvblRvU3RyaW5nKHJlYXNvbiksIHRocm90
dGxpbmdSZWFzb25zVG9TdHJpbmcobV90aHJvdHRsaW5nUmVhc29ucykudXRmOCgpLmRhdGEoKSk7
CiAKQEAgLTE0MCw3ICsxNDAsNyBAQCB2b2lkIFNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcjo6
cmVtb3ZlCiAgICAgaWYgKCFtX3Rocm90dGxpbmdSZWFzb25zLmNvbnRhaW5zKHJlYXNvbikpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIG1fdGhyb3R0bGluZ1JlYXNvbnMgLT0gcmVhc29uOworICAg
IG1fdGhyb3R0bGluZ1JlYXNvbnMucmVtb3ZlKHJlYXNvbik7CiAKICAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKCJyZW1vdmVUaHJvdHRsaW5nUmVhc29uKCVzKSAtPiAlcyIsIHRocm90dGxpbmdS
ZWFzb25Ub1N0cmluZyhyZWFzb24pLCB0aHJvdHRsaW5nUmVhc29uc1RvU3RyaW5nKG1fdGhyb3R0
bGluZ1JlYXNvbnMpLnV0ZjgoKS5kYXRhKCkpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20v
U2VjdXJpdHlDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1NlY3Vy
aXR5Q29udGV4dC5oCShyZXZpc2lvbiAyMzU1MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vU2Vj
dXJpdHlDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTg5LDcgKzg5LDcgQEAgcHVibGljOgog
ICAgIH07CiAKICAgICBjb25zdCBPcHRpb25TZXQ8TWl4ZWRDb250ZW50VHlwZT4mIGZvdW5kTWl4
ZWRDb250ZW50KCkgY29uc3QgeyByZXR1cm4gbV9taXhlZENvbnRlbnRUeXBlczsgfQotICAgIHZv
aWQgc2V0Rm91bmRNaXhlZENvbnRlbnQoTWl4ZWRDb250ZW50VHlwZSB0eXBlKSB7IG1fbWl4ZWRD
b250ZW50VHlwZXMgfD0gdHlwZTsgfQorICAgIHZvaWQgc2V0Rm91bmRNaXhlZENvbnRlbnQoTWl4
ZWRDb250ZW50VHlwZSB0eXBlKSB7IG1fbWl4ZWRDb250ZW50VHlwZXMuYWRkKHR5cGUpOyB9CiAg
ICAgYm9vbCBnZW9sb2NhdGlvbkFjY2Vzc2VkKCkgY29uc3QgeyByZXR1cm4gbV9nZW9sb2NhdGlv
bkFjY2Vzc2VkOyB9CiAgICAgdm9pZCBzZXRHZW9sb2NhdGlvbkFjY2Vzc2VkKCkgeyBtX2dlb2xv
Y2F0aW9uQWNjZXNzZWQgPSB0cnVlOyB9CiAgICAgYm9vbCBzZWN1cmVDb29raWVzQWNjZXNzZWQo
KSBjb25zdCB7IHJldHVybiBtX3NlY3VyZUNvb2tpZXNBY2Nlc3NlZDsgfQpJbmRleDogU291cmNl
L1dlYkNvcmUvZG9tL1VJRXZlbnRXaXRoS2V5U3RhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2RvbS9VSUV2ZW50V2l0aEtleVN0YXRlLmNwcAkocmV2aXNpb24gMjM1NTM5KQor
KysgU291cmNlL1dlYkNvcmUvZG9tL1VJRXZlbnRXaXRoS2V5U3RhdGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNywxNyArMjcsMTcgQEAgYXV0byBVSUV2ZW50V2l0aEtleVN0YXRlOjptb2RpZmll
cnNGcm9tSQogewogICAgIE9wdGlvblNldDxNb2RpZmllcj4gcmVzdWx0OwogICAgIGlmIChpbml0
aWFsaXplci5jdHJsS2V5KQotICAgICAgICByZXN1bHQgfD0gTW9kaWZpZXI6OkN0cmxLZXk7Cisg
ICAgICAgIHJlc3VsdC5hZGQoTW9kaWZpZXI6OkN0cmxLZXkpOwogICAgIGlmIChpbml0aWFsaXpl
ci5hbHRLZXkpCi0gICAgICAgIHJlc3VsdCB8PSBNb2RpZmllcjo6QWx0S2V5OworICAgICAgICBy
ZXN1bHQuYWRkKE1vZGlmaWVyOjpBbHRLZXkpOwogICAgIGlmIChpbml0aWFsaXplci5zaGlmdEtl
eSkKLSAgICAgICAgcmVzdWx0IHw9IE1vZGlmaWVyOjpTaGlmdEtleTsKKyAgICAgICAgcmVzdWx0
LmFkZChNb2RpZmllcjo6U2hpZnRLZXkpOwogICAgIGlmIChpbml0aWFsaXplci5tZXRhS2V5KQot
ICAgICAgICByZXN1bHQgfD0gTW9kaWZpZXI6Ok1ldGFLZXk7CisgICAgICAgIHJlc3VsdC5hZGQo
TW9kaWZpZXI6Ok1ldGFLZXkpOwogICAgIGlmIChpbml0aWFsaXplci5tb2RpZmllckFsdEdyYXBo
KQotICAgICAgICByZXN1bHQgfD0gTW9kaWZpZXI6OkFsdEdyYXBoS2V5OworICAgICAgICByZXN1
bHQuYWRkKE1vZGlmaWVyOjpBbHRHcmFwaEtleSk7CiAgICAgaWYgKGluaXRpYWxpemVyLm1vZGlm
aWVyQ2Fwc0xvY2spCi0gICAgICAgIHJlc3VsdCB8PSBNb2RpZmllcjo6Q2Fwc0xvY2tLZXk7Cisg
ICAgICAgIHJlc3VsdC5hZGQoTW9kaWZpZXI6OkNhcHNMb2NrS2V5KTsKICAgICByZXR1cm4gcmVz
dWx0OwogfQogCkBAIC02MywxNSArNjMsMTUgQEAgdm9pZCBVSUV2ZW50V2l0aEtleVN0YXRlOjpz
ZXRNb2RpZmllcktleQogewogICAgIE9wdGlvblNldDxNb2RpZmllcj4gcmVzdWx0OwogICAgIGlm
IChjdHJsS2V5KQotICAgICAgICByZXN1bHQgfD0gTW9kaWZpZXI6OkN0cmxLZXk7CisgICAgICAg
IHJlc3VsdC5hZGQoTW9kaWZpZXI6OkN0cmxLZXkpOwogICAgIGlmIChhbHRLZXkpCi0gICAgICAg
IHJlc3VsdCB8PSBNb2RpZmllcjo6QWx0S2V5OworICAgICAgICByZXN1bHQuYWRkKE1vZGlmaWVy
OjpBbHRLZXkpOwogICAgIGlmIChzaGlmdEtleSkKLSAgICAgICAgcmVzdWx0IHw9IE1vZGlmaWVy
OjpTaGlmdEtleTsKKyAgICAgICAgcmVzdWx0LmFkZChNb2RpZmllcjo6U2hpZnRLZXkpOwogICAg
IGlmIChtZXRhS2V5KQotICAgICAgICByZXN1bHQgfD0gTW9kaWZpZXI6Ok1ldGFLZXk7CisgICAg
ICAgIHJlc3VsdC5hZGQoTW9kaWZpZXI6Ok1ldGFLZXkpOwogICAgIGlmIChhbHRHcmFwaEtleSkK
LSAgICAgICAgcmVzdWx0IHw9IE1vZGlmaWVyOjpBbHRHcmFwaEtleTsKKyAgICAgICAgcmVzdWx0
LmFkZChNb2RpZmllcjo6QWx0R3JhcGhLZXkpOwogICAgIG1fbW9kaWZpZXJzID0gcmVzdWx0Owog
fQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vVXNlckFjdGlvbkVsZW1lbnRTZXQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Vc2VyQWN0aW9uRWxlbWVudFNldC5jcHAJ
KHJldmlzaW9uIDIzNTUzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Vc2VyQWN0aW9uRWxlbWVu
dFNldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2LDcgKzY2LDEwIEBAIHZvaWQgVXNlckFjdGlv
bkVsZW1lbnRTZXQ6OnNldEZsYWdzKEVsZW0KIHsKICAgICBBU1NFUlQoIWZsYWdzLmlzRW1wdHko
KSk7CiAKLSAgICBtX2VsZW1lbnRzLmFkZCgmZWxlbWVudCwgT3B0aW9uU2V0PEZsYWc+IHsgfSku
aXRlcmF0b3ItPnZhbHVlIHw9IGZsYWdzOworICAgIG1fZWxlbWVudHMuZW5zdXJlKCZlbGVtZW50
LCBbXSB7CisgICAgICAgIHJldHVybiBPcHRpb25TZXQ8RmxhZz4oKTsKKyAgICB9KS5pdGVyYXRv
ci0+dmFsdWUuYWRkKGZsYWdzKTsKKwogICAgIGVsZW1lbnQuc2V0VXNlckFjdGlvbkVsZW1lbnQo
dHJ1ZSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENv
bW1hbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRl
RWRpdENvbW1hbmQuY3BwCShyZXZpc2lvbiAyMzU1MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ5NCw3ICsx
NDk0LDcgQEAgdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6bW92ZVBhcmFncmFwaAogICAgIEFT
U0VSVChlbmRpbmdTZWxlY3Rpb24oKS5pc0NhcmV0T3JSYW5nZSgpKTsKICAgICBPcHRpb25TZXQ8
UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OkNvbW1hbmRPcHRpb24+IG9wdGlvbnMgeyBSZXBsYWNl
U2VsZWN0aW9uQ29tbWFuZDo6U2VsZWN0UmVwbGFjZW1lbnQsIFJlcGxhY2VTZWxlY3Rpb25Db21t
YW5kOjpNb3ZpbmdQYXJhZ3JhcGggfTsKICAgICBpZiAoIXByZXNlcnZlU3R5bGUpCi0gICAgICAg
IG9wdGlvbnMgfD0gUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6Ok1hdGNoU3R5bGU7CisgICAgICAg
IG9wdGlvbnMuYWRkKFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpNYXRjaFN0eWxlKTsKICAgICBh
cHBseUNvbW1hbmRUb0NvbXBvc2l0ZShSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6Y3JlYXRlKGRv
Y3VtZW50KCksIFdURk1vdmUoZnJhZ21lbnQpLCBvcHRpb25zKSk7CiAKICAgICBmcmFtZSgpLmVk
aXRvcigpLm1hcmtNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFyKGVuZGluZ1NlbGVjdGlvbigpKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAJKHJldmlzaW9uIDIzNTUzOSkKKysrIFNv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjM0LDEz
ICs2MzQsMTMgQEAgdm9pZCBFZGl0b3I6OnJlcGxhY2VTZWxlY3Rpb25XaXRoRnJhZ21lbgogCiAg
ICAgT3B0aW9uU2V0PFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpDb21tYW5kT3B0aW9uPiBvcHRp
b25zIHsgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OlByZXZlbnROZXN0aW5nLCBSZXBsYWNlU2Vs
ZWN0aW9uQ29tbWFuZDo6U2FuaXRpemVGcmFnbWVudCB9OwogICAgIGlmIChzZWxlY3RSZXBsYWNl
bWVudCkKLSAgICAgICAgb3B0aW9ucyB8PSBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6U2VsZWN0
UmVwbGFjZW1lbnQ7CisgICAgICAgIG9wdGlvbnMuYWRkKFJlcGxhY2VTZWxlY3Rpb25Db21tYW5k
OjpTZWxlY3RSZXBsYWNlbWVudCk7CiAgICAgaWYgKHNtYXJ0UmVwbGFjZSkKLSAgICAgICAgb3B0
aW9ucyB8PSBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6U21hcnRSZXBsYWNlOworICAgICAgICBv
cHRpb25zLmFkZChSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6U21hcnRSZXBsYWNlKTsKICAgICBp
ZiAobWF0Y2hTdHlsZSkKLSAgICAgICAgb3B0aW9ucyB8PSBSZXBsYWNlU2VsZWN0aW9uQ29tbWFu
ZDo6TWF0Y2hTdHlsZTsKKyAgICAgICAgb3B0aW9ucy5hZGQoUmVwbGFjZVNlbGVjdGlvbkNvbW1h
bmQ6Ok1hdGNoU3R5bGUpOwogICAgIGlmIChtYWlsQmxvY2txdW90ZUhhbmRsaW5nID09IE1haWxC
bG9ja3F1b3RlSGFuZGxpbmc6Oklnbm9yZUJsb2NrcXVvdGUpCi0gICAgICAgIG9wdGlvbnMgfD0g
UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6Oklnbm9yZU1haWxCbG9ja3F1b3RlOworICAgICAgICBv
cHRpb25zLmFkZChSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6SWdub3JlTWFpbEJsb2NrcXVvdGUp
OwogCiAgICAgYXV0byBjb21tYW5kID0gUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmNyZWF0ZShk
b2N1bWVudCgpLCAmZnJhZ21lbnQsIG9wdGlvbnMsIGVkaXRpbmdBY3Rpb24pOwogICAgIGNvbW1h
bmQtPmFwcGx5KCk7CkBAIC0xMDczLDcgKzEwNzMsNyBAQCB2b2lkIEVkaXRvcjo6YXBwbGllZEVk
aXRpbmcoQ29tcG9zaXRlRWRpCiAgICAgICAgIC8vIERvbid0IGNsZWFyIHRoZSB0eXBpbmcgc3R5
bGUgd2l0aCB0aGlzIHNlbGVjdGlvbiBjaGFuZ2UuIFdlIGRvIHRob3NlIHRoaW5ncyBlbHNld2hl
cmUgaWYgbmVjZXNzYXJ5LgogICAgICAgICBPcHRpb25TZXQ8RnJhbWVTZWxlY3Rpb246OlNldFNl
bGVjdGlvbk9wdGlvbj4gb3B0aW9uczsKICAgICAgICAgaWYgKGNvbW1hbmQuaXNEaWN0YXRpb25D
b21tYW5kKCkpCi0gICAgICAgICAgICBvcHRpb25zIHw9IEZyYW1lU2VsZWN0aW9uOjpEaWN0YXRp
b25UcmlnZ2VyZWQ7CisgICAgICAgICAgICBvcHRpb25zLmFkZChGcmFtZVNlbGVjdGlvbjo6RGlj
dGF0aW9uVHJpZ2dlcmVkKTsKIAogICAgICAgICBjaGFuZ2VTZWxlY3Rpb25BZnRlckNvbW1hbmQo
bmV3U2VsZWN0aW9uLCBvcHRpb25zKTsKICAgICB9CkBAIC0yMzM5LDcgKzIzMzksNyBAQCB2b2lk
IEVkaXRvcjo6bWFya01pc3NwZWxsaW5nc0FmdGVyVHlwaW5nCiAgICAgVU5VU0VEX1BBUkFNKGRv
UmVwbGFjZW1lbnQpOwogICAgIE9wdGlvblNldDxUZXh0Q2hlY2tpbmdUeXBlPiB0ZXh0Q2hlY2tp
bmdPcHRpb25zOwogICAgIGlmIChpc0NvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZCgpKQot
ICAgICAgICB0ZXh0Q2hlY2tpbmdPcHRpb25zIHw9IFRleHRDaGVja2luZ1R5cGU6OlNwZWxsaW5n
OworICAgICAgICB0ZXh0Q2hlY2tpbmdPcHRpb25zLmFkZChUZXh0Q2hlY2tpbmdUeXBlOjpTcGVs
bGluZyk7CiAgICAgaWYgKCF0ZXh0Q2hlY2tpbmdPcHRpb25zLmNvbnRhaW5zKFRleHRDaGVja2lu
Z1R5cGU6OlNwZWxsaW5nKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0yMzU3LDcgKzIzNTcsNyBA
QCB2b2lkIEVkaXRvcjo6bWFya01pc3NwZWxsaW5nc0FmdGVyVHlwaW5nCiAgICAgICAgIE9wdGlv
blNldDxUZXh0Q2hlY2tpbmdUeXBlPiB0ZXh0Q2hlY2tpbmdPcHRpb25zOwogCiAgICAgICAgIGlm
IChpc0NvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZCgpKQotICAgICAgICAgICAgdGV4dENo
ZWNraW5nT3B0aW9ucyB8PSBUZXh0Q2hlY2tpbmdUeXBlOjpTcGVsbGluZzsKKyAgICAgICAgICAg
IHRleHRDaGVja2luZ09wdGlvbnMuYWRkKFRleHRDaGVja2luZ1R5cGU6OlNwZWxsaW5nKTsKIAog
I2lmIFVTRShBVVRPTUFUSUNfVEVYVF9SRVBMQUNFTUVOVCkKICAgICAgICAgaWYgKGRvUmVwbGFj
ZW1lbnQKQEAgLTIzNjYsMTMgKzIzNjYsMTMgQEAgdm9pZCBFZGl0b3I6Om1hcmtNaXNzcGVsbGlu
Z3NBZnRlclR5cGluZwogICAgICAgICAgICAgICAgIHx8IGlzQXV0b21hdGljRGFzaFN1YnN0aXR1
dGlvbkVuYWJsZWQoKQogICAgICAgICAgICAgICAgIHx8IGlzQXV0b21hdGljVGV4dFJlcGxhY2Vt
ZW50RW5hYmxlZCgpCiAgICAgICAgICAgICAgICAgfHwgKHRleHRDaGVja2luZ09wdGlvbnMuY29u
dGFpbnMoVGV4dENoZWNraW5nVHlwZTo6U3BlbGxpbmcpICYmIGlzQXV0b21hdGljU3BlbGxpbmdD
b3JyZWN0aW9uRW5hYmxlZCgpKSkpCi0gICAgICAgICAgICB0ZXh0Q2hlY2tpbmdPcHRpb25zIHw9
IFRleHRDaGVja2luZ1R5cGU6OlJlcGxhY2VtZW50OworICAgICAgICAgICAgdGV4dENoZWNraW5n
T3B0aW9ucy5hZGQoVGV4dENoZWNraW5nVHlwZTo6UmVwbGFjZW1lbnQpOwogI2VuZGlmCiAgICAg
ICAgIGlmICghdGV4dENoZWNraW5nT3B0aW9ucy5jb250YWlucyhUZXh0Q2hlY2tpbmdUeXBlOjpT
cGVsbGluZykgJiYgIXRleHRDaGVja2luZ09wdGlvbnMuY29udGFpbnMoVGV4dENoZWNraW5nVHlw
ZTo6UmVwbGFjZW1lbnQpKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlmIChpc0dy
YW1tYXJDaGVja2luZ0VuYWJsZWQoKSkKLSAgICAgICAgICAgIHRleHRDaGVja2luZ09wdGlvbnMg
fD0gVGV4dENoZWNraW5nVHlwZTo6R3JhbW1hcjsKKyAgICAgICAgICAgIHRleHRDaGVja2luZ09w
dGlvbnMuYWRkKFRleHRDaGVja2luZ1R5cGU6OkdyYW1tYXIpOwogCiAgICAgICAgIGF1dG8gc2Vu
dGVuY2VTdGFydCA9IHN0YXJ0T2ZTZW50ZW5jZSh3b3JkU3RhcnQpOwogICAgICAgICBhdXRvIHNl
bnRlbmNlRW5kID0gZW5kT2ZTZW50ZW5jZSh3b3JkU3RhcnQpOwpAQCAtMjgzOCw3ICsyODM4LDcg
QEAgdm9pZCBFZGl0b3I6Om1hcmtNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbQogICAgICAgICAvLyBt
YXJrTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hcigpIGlzIHRyaWdnZXJlZCBieSBzZWxlY3Rpb24g
Y2hhbmdlLCBpbiB3aGljaCBjYXNlIHdlIGNoZWNrIHNwZWxsaW5nIGFuZCBncmFtbWFyLCBidXQg
ZG9uJ3QgYXV0b2NvcnJlY3QgbWlzc3BlbGxpbmdzLgogICAgICAgICBPcHRpb25TZXQ8VGV4dENo
ZWNraW5nVHlwZT4gdGV4dENoZWNraW5nT3B0aW9ucyB7IFRleHRDaGVja2luZ1R5cGU6OlNwZWxs
aW5nIH07CiAgICAgICAgIGlmIChtYXJrR3JhbW1hciAmJiBpc0dyYW1tYXJDaGVja2luZ0VuYWJs
ZWQoKSkKLSAgICAgICAgICAgIHRleHRDaGVja2luZ09wdGlvbnMgfD0gVGV4dENoZWNraW5nVHlw
ZTo6R3JhbW1hcjsKKyAgICAgICAgICAgIHRleHRDaGVja2luZ09wdGlvbnMuYWRkKFRleHRDaGVj
a2luZ1R5cGU6OkdyYW1tYXIpOwogICAgICAgICBhdXRvIHNwZWxsQ2hlY2tpbmdSYW5nZSA9IHNw
ZWxsaW5nU2VsZWN0aW9uLnRvTm9ybWFsaXplZFJhbmdlKCk7CiAgICAgICAgIG1hcmtBbGxNaXNz
cGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXModGV4dENoZWNraW5nT3B0aW9ucywgc3BlbGxD
aGVja2luZ1JhbmdlLmNvcHlSZWYoKSwgc3BlbGxDaGVja2luZ1JhbmdlLmNvcHlSZWYoKSwgZ3Jh
bW1hclNlbGVjdGlvbi50b05vcm1hbGl6ZWRSYW5nZSgpKTsKICAgICAgICAgcmV0dXJuOwpAQCAt
MzczMywzMCArMzczMywzMCBAQCBPcHRpb25TZXQ8VGV4dENoZWNraW5nVHlwZT4gRWRpdG9yOjpy
ZXNvCiAKICAgICBPcHRpb25TZXQ8VGV4dENoZWNraW5nVHlwZT4gY2hlY2tpbmdUeXBlczsKICAg
ICBpZiAoc2hvdWxkTWFya1NwZWxsaW5nKQotICAgICAgICBjaGVja2luZ1R5cGVzIHw9IFRleHRD
aGVja2luZ1R5cGU6OlNwZWxsaW5nOworICAgICAgICBjaGVja2luZ1R5cGVzLmFkZChUZXh0Q2hl
Y2tpbmdUeXBlOjpTcGVsbGluZyk7CiAgICAgaWYgKHNob3VsZE1hcmtHcmFtbWFyKQotICAgICAg
ICBjaGVja2luZ1R5cGVzIHw9IFRleHRDaGVja2luZ1R5cGU6OkdyYW1tYXI7CisgICAgICAgIGNo
ZWNraW5nVHlwZXMuYWRkKFRleHRDaGVja2luZ1R5cGU6OkdyYW1tYXIpOwogI2lmICFQTEFURk9S
TShJT1MpCiAgICAgaWYgKHNob3VsZENoZWNrRm9yQ29ycmVjdGlvbikKLSAgICAgICAgY2hlY2tp
bmdUeXBlcyB8PSBUZXh0Q2hlY2tpbmdUeXBlOjpDb3JyZWN0aW9uOworICAgICAgICBjaGVja2lu
Z1R5cGVzLmFkZChUZXh0Q2hlY2tpbmdUeXBlOjpDb3JyZWN0aW9uKTsKICAgICBpZiAoc2hvdWxk
U2hvd0NvcnJlY3Rpb25QYW5lbCkKLSAgICAgICAgY2hlY2tpbmdUeXBlcyB8PSBUZXh0Q2hlY2tp
bmdUeXBlOjpTaG93Q29ycmVjdGlvblBhbmVsOworICAgICAgICBjaGVja2luZ1R5cGVzLmFkZChU
ZXh0Q2hlY2tpbmdUeXBlOjpTaG93Q29ycmVjdGlvblBhbmVsKTsKIAogI2lmIFVTRShBVVRPTUFU
SUNfVEVYVF9SRVBMQUNFTUVOVCkKICAgICBib29sIHNob3VsZFBlcmZvcm1SZXBsYWNlbWVudCA9
IHRleHRDaGVja2luZ09wdGlvbnMuY29udGFpbnMoVGV4dENoZWNraW5nVHlwZTo6UmVwbGFjZW1l
bnQpOwogICAgIGlmIChzaG91bGRQZXJmb3JtUmVwbGFjZW1lbnQpIHsKICAgICAgICAgaWYgKCFv
bmx5QWxsb3dzVGV4dFJlcGxhY2VtZW50KSB7CiAgICAgICAgICAgICBpZiAoaXNBdXRvbWF0aWNM
aW5rRGV0ZWN0aW9uRW5hYmxlZCgpKQotICAgICAgICAgICAgICAgIGNoZWNraW5nVHlwZXMgfD0g
VGV4dENoZWNraW5nVHlwZTo6TGluazsKKyAgICAgICAgICAgICAgICBjaGVja2luZ1R5cGVzLmFk
ZChUZXh0Q2hlY2tpbmdUeXBlOjpMaW5rKTsKICAgICAgICAgICAgIGlmIChpc0F1dG9tYXRpY1F1
b3RlU3Vic3RpdHV0aW9uRW5hYmxlZCgpKQotICAgICAgICAgICAgICAgIGNoZWNraW5nVHlwZXMg
fD0gVGV4dENoZWNraW5nVHlwZTo6UXVvdGU7CisgICAgICAgICAgICAgICAgY2hlY2tpbmdUeXBl
cy5hZGQoVGV4dENoZWNraW5nVHlwZTo6UXVvdGUpOwogICAgICAgICAgICAgaWYgKGlzQXV0b21h
dGljRGFzaFN1YnN0aXR1dGlvbkVuYWJsZWQoKSkKLSAgICAgICAgICAgICAgICBjaGVja2luZ1R5
cGVzIHw9IFRleHRDaGVja2luZ1R5cGU6OkRhc2g7CisgICAgICAgICAgICAgICAgY2hlY2tpbmdU
eXBlcy5hZGQoVGV4dENoZWNraW5nVHlwZTo6RGFzaCk7CiAgICAgICAgICAgICBpZiAoc2hvdWxk
TWFya1NwZWxsaW5nICYmIGlzQXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uRW5hYmxlZCgpKQot
ICAgICAgICAgICAgICAgIGNoZWNraW5nVHlwZXMgfD0gVGV4dENoZWNraW5nVHlwZTo6Q29ycmVj
dGlvbjsKKyAgICAgICAgICAgICAgICBjaGVja2luZ1R5cGVzLmFkZChUZXh0Q2hlY2tpbmdUeXBl
OjpDb3JyZWN0aW9uKTsKICAgICAgICAgfQogICAgICAgICBpZiAoaXNBdXRvbWF0aWNUZXh0UmVw
bGFjZW1lbnRFbmFibGVkKCkpCi0gICAgICAgICAgICBjaGVja2luZ1R5cGVzIHw9IFRleHRDaGVj
a2luZ1R5cGU6OlJlcGxhY2VtZW50OworICAgICAgICAgICAgY2hlY2tpbmdUeXBlcy5hZGQoVGV4
dENoZWNraW5nVHlwZTo6UmVwbGFjZW1lbnQpOwogICAgIH0KICNlbmRpZgogI2VuZGlmIC8vICFQ
TEFURk9STShJT1MpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9u
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9u
LmNwcAkocmV2aXNpb24gMjM1NTM5KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNl
bGVjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4NywxNSArMTg3LDE1IEBAIHZvaWQgRnJh
bWVTZWxlY3Rpb246Om1vdmVXaXRob3V0VmFsaWRhdGkKICAgICBBWFRleHRTdGF0ZUNoYW5nZUlu
dGVudCBuZXdJbnRlbnQgPSBpbnRlbnQudHlwZSA9PSBBWFRleHRTdGF0ZUNoYW5nZVR5cGVVbmtu
b3duID8gQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQoQVhUZXh0U3RhdGVDaGFuZ2VUeXBlU2VsZWN0
aW9uTW92ZSwgQVhUZXh0U2VsZWN0aW9uIHsgQVhUZXh0U2VsZWN0aW9uRGlyZWN0aW9uRGlzY29u
dGlndW91cywgQVhUZXh0U2VsZWN0aW9uR3JhbnVsYXJpdHlVbmtub3duLCBmYWxzZSB9KSA6IGlu
dGVudDsKICAgICBhdXRvIG9wdGlvbnMgPSBkZWZhdWx0U2V0U2VsZWN0aW9uT3B0aW9ucygpOwog
ICAgIGlmICghc2hvdWxkU2V0Rm9jdXMpCi0gICAgICAgIG9wdGlvbnMgfD0gRG9Ob3RTZXRGb2N1
czsKKyAgICAgICAgb3B0aW9ucy5hZGQoRG9Ob3RTZXRGb2N1cyk7CiAgICAgc3dpdGNoIChyZXZl
YWxNb2RlKSB7CiAgICAgY2FzZSBTZWxlY3Rpb25SZXZlYWxNb2RlOjpEb05vdFJldmVhbDoKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBTZWxlY3Rpb25SZXZlYWxNb2RlOjpSZXZlYWw6Ci0gICAg
ICAgIG9wdGlvbnMgfD0gUmV2ZWFsU2VsZWN0aW9uOworICAgICAgICBvcHRpb25zLmFkZChSZXZl
YWxTZWxlY3Rpb24pOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFNlbGVjdGlvblJldmVhbE1v
ZGU6OlJldmVhbFVwVG9NYWluRnJhbWU6Ci0gICAgICAgIG9wdGlvbnMgfD0gUmV2ZWFsU2VsZWN0
aW9uVXBUb01haW5GcmFtZTsKKyAgICAgICAgb3B0aW9ucy5hZGQoUmV2ZWFsU2VsZWN0aW9uVXBU
b01haW5GcmFtZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBzZXRTZWxlY3Rpb24obmV3
U2VsZWN0aW9uLCBvcHRpb25zLCBuZXdJbnRlbnQpOwpAQCAtMTk5NSw3ICsxOTk1LDcgQEAgYm9v
bCBGcmFtZVNlbGVjdGlvbjo6c2V0U2VsZWN0ZWRSYW5nZShSYQogCiAgICAgT3B0aW9uU2V0PFNl
dFNlbGVjdGlvbk9wdGlvbj4gc2VsZWN0aW9uT3B0aW9ucyB7ICBDbGVhclR5cGluZ1N0eWxlIH07
CiAgICAgaWYgKGNsb3NlVHlwaW5nKQotICAgICAgICBzZWxlY3Rpb25PcHRpb25zIHw9IENsb3Nl
VHlwaW5nOworICAgICAgICBzZWxlY3Rpb25PcHRpb25zLmFkZChDbG9zZVR5cGluZyk7CiAKICAg
ICBpZiAodXNlclRyaWdnZXJlZCA9PSBVc2VyVHJpZ2dlcmVkKSB7CiAgICAgICAgIEZyYW1lU2Vs
ZWN0aW9uIHRyaWFsRnJhbWVTZWxlY3Rpb247CkBAIC0yMDA1LDcgKzIwMDUsNyBAQCBib29sIEZy
YW1lU2VsZWN0aW9uOjpzZXRTZWxlY3RlZFJhbmdlKFJhCiAgICAgICAgIGlmICghc2hvdWxkQ2hh
bmdlU2VsZWN0aW9uKHRyaWFsRnJhbWVTZWxlY3Rpb24uc2VsZWN0aW9uKCkpKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIHNlbGVjdGlvbk9wdGlvbnMgfD0gSXNVc2VyVHJp
Z2dlcmVkOworICAgICAgICBzZWxlY3Rpb25PcHRpb25zLmFkZChJc1VzZXJUcmlnZ2VyZWQpOwog
ICAgIH0KIAogICAgIHNldFNlbGVjdGlvbihuZXdTZWxlY3Rpb24sIHNlbGVjdGlvbk9wdGlvbnMp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uaAkocmV2aXNpb24g
MjM1NTM5KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMzMsNyArMTMzLDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgT3B0
aW9uU2V0PFNldFNlbGVjdGlvbk9wdGlvbj4gb3B0aW9ucyB7IENsb3NlVHlwaW5nLCBDbGVhclR5
cGluZ1N0eWxlIH07CiAgICAgICAgIGlmICh1c2VyVHJpZ2dlcmVkID09IFVzZXJUcmlnZ2VyZWQp
Ci0gICAgICAgICAgICBvcHRpb25zIHw9IHsgUmV2ZWFsU2VsZWN0aW9uLCBGaXJlU2VsZWN0RXZl
bnQsIElzVXNlclRyaWdnZXJlZCB9OworICAgICAgICAgICAgb3B0aW9ucy5hZGQoeyBSZXZlYWxT
ZWxlY3Rpb24sIEZpcmVTZWxlY3RFdmVudCwgSXNVc2VyVHJpZ2dlcmVkIH0pOwogICAgICAgICBy
ZXR1cm4gb3B0aW9uczsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTW92
ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvTW92ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCShyZXZpc2lvbiAyMzU1MzkpCisrKyBTb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL01vdmVTZWxlY3Rpb25Db21tYW5kLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtODQsNyArODQsNyBAQCB2b2lkIE1vdmVTZWxlY3Rpb25Db21tYW5kOjpkb0FwcGx5KCkKICAg
ICB9CiAgICAgT3B0aW9uU2V0PFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpDb21tYW5kT3B0aW9u
PiBvcHRpb25zIHsgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OlNlbGVjdFJlcGxhY2VtZW50LCBS
ZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6UHJldmVudE5lc3RpbmcgfTsKICAgICBpZiAobV9zbWFy
dEluc2VydCkKLSAgICAgICAgb3B0aW9ucyB8PSBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6U21h
cnRSZXBsYWNlOworICAgICAgICBvcHRpb25zLmFkZChSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6
U21hcnRSZXBsYWNlKTsKIAogICAgIHsKICAgICAgICAgYXV0byByZXBsYWNlU2VsZWN0aW9uID0g
UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmNyZWF0ZShkb2N1bWVudCgpLCBXVEZNb3ZlKG1fZnJh
Z21lbnQpLCBvcHRpb25zLCBFZGl0QWN0aW9uSW5zZXJ0RnJvbURyb3ApOwpJbmRleDogU291cmNl
L1dlYkNvcmUvZWRpdGluZy9TcGVsbENoZWNrZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvU3BlbGxDaGVja2VyLmNwcAkocmV2aXNpb24gMjM1NTM5KQorKysgU291
cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbENoZWNrZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
MTgsOSArMjE4LDkgQEAgdm9pZCBTcGVsbENoZWNrZXI6OmRpZENoZWNrU3VjY2VlZChpbnQgcwog
ICAgIGlmIChyZXF1ZXN0RGF0YS5zZXF1ZW5jZSgpID09IHNlcXVlbmNlKSB7CiAgICAgICAgIE9w
dGlvblNldDxEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZT4gbWFya2VyVHlwZXM7CiAgICAgICAg
IGlmIChyZXF1ZXN0RGF0YS5jaGVja2luZ1R5cGVzKCkuY29udGFpbnMoVGV4dENoZWNraW5nVHlw
ZTo6U3BlbGxpbmcpKQotICAgICAgICAgICAgbWFya2VyVHlwZXMgfD0gRG9jdW1lbnRNYXJrZXI6
OlNwZWxsaW5nOworICAgICAgICAgICAgbWFya2VyVHlwZXMuYWRkKERvY3VtZW50TWFya2VyOjpT
cGVsbGluZyk7CiAgICAgICAgIGlmIChyZXF1ZXN0RGF0YS5jaGVja2luZ1R5cGVzKCkuY29udGFp
bnMoVGV4dENoZWNraW5nVHlwZTo6R3JhbW1hcikpCi0gICAgICAgICAgICBtYXJrZXJUeXBlcyB8
PSBEb2N1bWVudE1hcmtlcjo6R3JhbW1hcjsKKyAgICAgICAgICAgIG1hcmtlclR5cGVzLmFkZChE
b2N1bWVudE1hcmtlcjo6R3JhbW1hcik7CiAgICAgICAgIGlmICghbWFya2VyVHlwZXMuaXNFbXB0
eSgpKQogICAgICAgICAgICAgbV9mcmFtZS5kb2N1bWVudCgpLT5tYXJrZXJzKCkucmVtb3ZlTWFy
a2VycygmbV9wcm9jZXNzaW5nUmVxdWVzdC0+Y2hlY2tpbmdSYW5nZSgpLCBtYXJrZXJUeXBlcyk7
CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVs
cGVyLmNwcAkocmV2aXNpb24gMjM1NTM5KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0
Q2hlY2tpbmdIZWxwZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNTMsNyArMzUzLDcgQEAgU3Ry
aW5nIFRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0TWlzcwogICAgICAgICAgICAgICAgIFZl
Y3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IHJlc3VsdHM7CiAgICAgICAgICAgICAgICAgT3B0aW9u
U2V0PFRleHRDaGVja2luZ1R5cGU+IGNoZWNraW5nVHlwZXMgeyBUZXh0Q2hlY2tpbmdUeXBlOjpT
cGVsbGluZyB9OwogICAgICAgICAgICAgICAgIGlmIChjaGVja0dyYW1tYXIpCi0gICAgICAgICAg
ICAgICAgICAgIGNoZWNraW5nVHlwZXMgfD0gVGV4dENoZWNraW5nVHlwZTo6R3JhbW1hcjsKKyAg
ICAgICAgICAgICAgICAgICAgY2hlY2tpbmdUeXBlcy5hZGQoVGV4dENoZWNraW5nVHlwZTo6R3Jh
bW1hcik7CiAgICAgICAgICAgICAgICAgVmlzaWJsZVNlbGVjdGlvbiBjdXJyZW50U2VsZWN0aW9u
OwogICAgICAgICAgICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBwYXJhZ3JhcGhSYW5nZS0+b3du
ZXJEb2N1bWVudCgpLmZyYW1lKCkpCiAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTZWxlY3Rp
b24gPSBmcmFtZS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCk7CkBAIC01ODcsNyArNTg3LDcgQEAg
VmVjdG9yPFN0cmluZz4gVGV4dENoZWNraW5nSGVscGVyOjpndWVzcwogICAgIFZlY3RvcjxUZXh0
Q2hlY2tpbmdSZXN1bHQ+IHJlc3VsdHM7CiAgICAgT3B0aW9uU2V0PFRleHRDaGVja2luZ1R5cGU+
IGNoZWNraW5nVHlwZXMgeyBUZXh0Q2hlY2tpbmdUeXBlOjpTcGVsbGluZyB9OwogICAgIGlmIChj
aGVja0dyYW1tYXIpCi0gICAgICAgIGNoZWNraW5nVHlwZXMgfD0gVGV4dENoZWNraW5nVHlwZTo6
R3JhbW1hcjsKKyAgICAgICAgY2hlY2tpbmdUeXBlcy5hZGQoVGV4dENoZWNraW5nVHlwZTo6R3Jh
bW1hcik7CiAgICAgVmlzaWJsZVNlbGVjdGlvbiBjdXJyZW50U2VsZWN0aW9uOwogICAgIGlmIChG
cmFtZSogZnJhbWUgPSBtX3JhbmdlLT5vd25lckRvY3VtZW50KCkuZnJhbWUoKSkKICAgICAgICAg
Y3VycmVudFNlbGVjdGlvbiA9IGZyYW1lLT5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAJKHJldmlzaW9uIDIzNTUzOSkK
KysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjA5Nyw3ICsyMDk3LDcgQEAgaW5saW5lIFNlYXJjaEJ1ZmZlcjo6U2VhcmNoQnVmZmVy
KGNvbnN0IAogICAgICAgICAvLyBDaGFyYWN0ZXJzIGluIHRoZSBzZXBhcmF0b3IgY2F0ZWdvcnkg
bmV2ZXIgcmVhbGx5IG9jY3VyIGF0IHRoZSBiZWdpbm5pbmcgb2YgYSB3b3JkLAogICAgICAgICAv
LyBzbyBpZiB0aGUgdGFyZ2V0IGJlZ2lucyB3aXRoIHN1Y2ggYSBjaGFyYWN0ZXIsIHdlIGp1c3Qg
aWdub3JlIHRoZSBBdFdvcmRTdGFydCBvcHRpb24uCiAgICAgICAgIGlmIChpc1NlcGFyYXRvcih0
YXJnZXRGaXJzdENoYXJhY3RlcikpIHsKLSAgICAgICAgICAgIG1fb3B0aW9ucyAtPSBBdFdvcmRT
dGFydHM7CisgICAgICAgICAgICBtX29wdGlvbnMucmVtb3ZlKEF0V29yZFN0YXJ0cyk7CiAgICAg
ICAgICAgICBtX25lZWRzTW9yZUNvbnRleHQgPSBmYWxzZTsKICAgICAgICAgfQogICAgIH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCShyZXZpc2lvbiAy
MzU1MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjU3LDkgKzI1Nyw5IEBAIHZvaWQgSFRNTEFuY2hvckVsZW1lbnQ6OnBh
cnNlQXR0cmlidXRlKGMKICAgICAgICAgY29uc3QgYm9vbCBzaG91bGRGb2xkQ2FzZSA9IHRydWU7
CiAgICAgICAgIFNwYWNlU3BsaXRTdHJpbmcgcmVsVmFsdWUodmFsdWUsIHNob3VsZEZvbGRDYXNl
KTsKICAgICAgICAgaWYgKHJlbFZhbHVlLmNvbnRhaW5zKG5vUmVmZXJyZXIpKQotICAgICAgICAg
ICAgbV9saW5rUmVsYXRpb25zIHw9IFJlbGF0aW9uOjpOb1JlZmVycmVyOworICAgICAgICAgICAg
bV9saW5rUmVsYXRpb25zLmFkZChSZWxhdGlvbjo6Tm9SZWZlcnJlcik7CiAgICAgICAgIGlmIChy
ZWxWYWx1ZS5jb250YWlucyhub09wZW5lcikpCi0gICAgICAgICAgICBtX2xpbmtSZWxhdGlvbnMg
fD0gUmVsYXRpb246Ok5vT3BlbmVyOworICAgICAgICAgICAgbV9saW5rUmVsYXRpb25zLmFkZChS
ZWxhdGlvbjo6Tm9PcGVuZXIpOwogICAgICAgICBpZiAobV9yZWxMaXN0KQogICAgICAgICAgICAg
bV9yZWxMaXN0LT5hc3NvY2lhdGVkQXR0cmlidXRlVmFsdWVDaGFuZ2VkKHZhbHVlKTsKICAgICB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2Vu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JQYWdlQWdlbnQuY3BwCShyZXZpc2lvbiAyMzU1MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMxOSw5ICszMTksOSBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6cmVsb2FkKEVycm9yU3Ry
CiAKICAgICBPcHRpb25TZXQ8UmVsb2FkT3B0aW9uPiByZWxvYWRPcHRpb25zOwogICAgIGlmIChy
ZWxvYWRGcm9tT3JpZ2luKQotICAgICAgICByZWxvYWRPcHRpb25zIHw9IFJlbG9hZE9wdGlvbjo6
RnJvbU9yaWdpbjsKKyAgICAgICAgcmVsb2FkT3B0aW9ucy5hZGQoUmVsb2FkT3B0aW9uOjpGcm9t
T3JpZ2luKTsKICAgICBpZiAoIXJldmFsaWRhdGVBbGxSZXNvdXJjZXMpCi0gICAgICAgIHJlbG9h
ZE9wdGlvbnMgfD0gUmVsb2FkT3B0aW9uOjpFeHBpcmVkT25seTsKKyAgICAgICAgcmVsb2FkT3B0
aW9ucy5hZGQoUmVsb2FkT3B0aW9uOjpFeHBpcmVkT25seSk7CiAKICAgICBtX3BhZ2UubWFpbkZy
YW1lKCkubG9hZGVyKCkucmVsb2FkKHJlbG9hZE9wdGlvbnMpOwogfQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMjM1NTM5
KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNjksNyArMzY5LDcgQEAgdm9pZCBDb250ZXh0TWVudUNvbnRyb2xsZXI6
OmNvbnRleHRNZW51SQogICAgICAgICAgICAgICAgIGZyYW1lLT5zZWxlY3Rpb24oKS5zZXRTZWxl
Y3Rpb24od29yZFNlbGVjdGlvbik7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
ICAgIEFTU0VSVChmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0ZWRUZXh0KCkubGVuZ3RoKCkpOwotICAg
ICAgICAgICAgICAgIHJlcGxhY2VPcHRpb25zIHw9IFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpT
ZWxlY3RSZXBsYWNlbWVudDsKKyAgICAgICAgICAgICAgICByZXBsYWNlT3B0aW9ucy5hZGQoUmVw
bGFjZVNlbGVjdGlvbkNvbW1hbmQ6OlNlbGVjdFJlcGxhY2VtZW50KTsKICAgICAgICAgICAgIH0K
IAogICAgICAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gZnJhbWUtPmRvY3VtZW50KCk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCShyZXZpc2lvbiAyMzU1MzkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMjEsMTQg
KzEyMjEsMTQgQEAgYm9vbCBET01XaW5kb3c6OmZpbmQoY29uc3QgU3RyaW5nJiBzdHJpbgogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBGSVhNRSAoMTMwMTYpOiBTdXBwb3J0IHdob2xl
V29yZCwgc2VhcmNoSW5GcmFtZXMgYW5kIHNob3dEaWFsb2cuICAgIAotICAgIEZpbmRPcHRpb25z
IG9wdGlvbnM7CisgICAgRmluZE9wdGlvbnMgb3B0aW9ucyB7IERvTm90VHJhdmVyc2VGbGF0VHJl
ZSB9OwogICAgIGlmIChiYWNrd2FyZHMpCi0gICAgICAgIG9wdGlvbnMgfD0gQmFja3dhcmRzOwor
ICAgICAgICBvcHRpb25zLmFkZChCYWNrd2FyZHMpOwogICAgIGlmICghY2FzZVNlbnNpdGl2ZSkK
LSAgICAgICAgb3B0aW9ucyB8PSBDYXNlSW5zZW5zaXRpdmU7CisgICAgICAgIG9wdGlvbnMuYWRk
KENhc2VJbnNlbnNpdGl2ZSk7CiAgICAgaWYgKHdyYXApCi0gICAgICAgIG9wdGlvbnMgfD0gV3Jh
cEFyb3VuZDsKLSAgICByZXR1cm4gbV9mcmFtZS0+ZWRpdG9yKCkuZmluZFN0cmluZyhzdHJpbmcs
IG9wdGlvbnMgfCBEb05vdFRyYXZlcnNlRmxhdFRyZWUpOworICAgICAgICBvcHRpb25zLmFkZChX
cmFwQXJvdW5kKTsKKyAgICByZXR1cm4gbV9mcmFtZS0+ZWRpdG9yKCkuZmluZFN0cmluZyhzdHJp
bmcsIG9wdGlvbnMpOwogfQogCiBib29sIERPTVdpbmRvdzo6b2Zmc2NyZWVuQnVmZmVyaW5nKCkg
Y29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCShyZXZpc2lv
biAyMzU1MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNjE5LDkgKzYxOSw5IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OmNvbmNs
dWRlRWRpdERyYWcoY28KICAgICAgICAgICAgIGlmIChzZXRTZWxlY3Rpb25Ub0RyYWdDYXJldChp
bm5lckZyYW1lLmdldCgpLCBkcmFnQ2FyZXQsIHJhbmdlLCBwb2ludCkpIHsKICAgICAgICAgICAg
ICAgICBPcHRpb25TZXQ8UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OkNvbW1hbmRPcHRpb24+IG9w
dGlvbnMgeyBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6U2VsZWN0UmVwbGFjZW1lbnQsIFJlcGxh
Y2VTZWxlY3Rpb25Db21tYW5kOjpQcmV2ZW50TmVzdGluZyB9OwogICAgICAgICAgICAgICAgIGlm
IChkcmFnRGF0YS5jYW5TbWFydFJlcGxhY2UoKSkKLSAgICAgICAgICAgICAgICAgICAgb3B0aW9u
cyB8PSBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6U21hcnRSZXBsYWNlOworICAgICAgICAgICAg
ICAgICAgICBvcHRpb25zLmFkZChSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6U21hcnRSZXBsYWNl
KTsKICAgICAgICAgICAgICAgICBpZiAoY2hvc2VQbGFpblRleHQpCi0gICAgICAgICAgICAgICAg
ICAgIG9wdGlvbnMgfD0gUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6Ok1hdGNoU3R5bGU7CisgICAg
ICAgICAgICAgICAgICAgIG9wdGlvbnMuYWRkKFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpNYXRj
aFN0eWxlKTsKICAgICAgICAgICAgICAgICBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6Y3JlYXRl
KCptX2RvY3VtZW50VW5kZXJNb3VzZSwgZnJhZ21lbnQucmVsZWFzZU5vbk51bGwoKSwgb3B0aW9u
cywgRWRpdEFjdGlvbkluc2VydEZyb21Ecm9wKS0+YXBwbHkoKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5jcHAJ
KHJldmlzaW9uIDIzNTUzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVTbmFwc2hvdHRp
bmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MiwxMyArOTIsMTMgQEAgc3RkOjp1bmlxdWVfcHRy
PEltYWdlQnVmZmVyPiBzbmFwc2hvdEZyYQogCiAgICAgYXV0byBwYWludEJlaGF2aW9yID0gc3Rh
dGUucGFpbnRCZWhhdmlvcjsKICAgICBpZiAob3B0aW9ucyAmIFNuYXBzaG90T3B0aW9uc0ZvcmNl
QmxhY2tUZXh0KQotICAgICAgICBwYWludEJlaGF2aW9yIHw9IFBhaW50QmVoYXZpb3I6OkZvcmNl
QmxhY2tUZXh0OworICAgICAgICBwYWludEJlaGF2aW9yLmFkZChQYWludEJlaGF2aW9yOjpGb3Jj
ZUJsYWNrVGV4dCk7CiAgICAgaWYgKG9wdGlvbnMgJiBTbmFwc2hvdE9wdGlvbnNQYWludFNlbGVj
dGlvbk9ubHkpCi0gICAgICAgIHBhaW50QmVoYXZpb3IgfD0gUGFpbnRCZWhhdmlvcjo6U2VsZWN0
aW9uT25seTsKKyAgICAgICAgcGFpbnRCZWhhdmlvci5hZGQoUGFpbnRCZWhhdmlvcjo6U2VsZWN0
aW9uT25seSk7CiAgICAgaWYgKG9wdGlvbnMgJiBTbmFwc2hvdE9wdGlvbnNQYWludFNlbGVjdGlv
bkFuZEJhY2tncm91bmRzT25seSkKLSAgICAgICAgcGFpbnRCZWhhdmlvciB8PSBQYWludEJlaGF2
aW9yOjpTZWxlY3Rpb25BbmRCYWNrZ3JvdW5kc09ubHk7CisgICAgICAgIHBhaW50QmVoYXZpb3Iu
YWRkKFBhaW50QmVoYXZpb3I6OlNlbGVjdGlvbkFuZEJhY2tncm91bmRzT25seSk7CiAgICAgaWYg
KG9wdGlvbnMgJiBTbmFwc2hvdE9wdGlvbnNQYWludEV2ZXJ5dGhpbmdFeGNsdWRpbmdTZWxlY3Rp
b24pCi0gICAgICAgIHBhaW50QmVoYXZpb3IgfD0gUGFpbnRCZWhhdmlvcjo6RXhjbHVkZVNlbGVj
dGlvbjsKKyAgICAgICAgcGFpbnRCZWhhdmlvci5hZGQoUGFpbnRCZWhhdmlvcjo6RXhjbHVkZVNl
bGVjdGlvbik7CiAKICAgICAvLyBPdGhlciBwYWludCBiZWhhdmlvcnMgYXJlIHNldCBieSBwYWlu
dENvbnRlbnRzRm9yU25hcHNob3QuCiAgICAgZnJhbWUudmlldygpLT5zZXRQYWludEJlaGF2aW9y
KHBhaW50QmVoYXZpb3IpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAkocmV2aXNp
b24gMjM1NTM5KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNDAsMTEgKzE0MCwxMSBAQCBzdGF0aWMgT3B0aW9uU2V0PFJlbmRlckxheWVy
OjpVcGRhdGVMYXllCiB7CiAgICAgYXV0byBmbGFncyA9IFJlbmRlckxheWVyOjp1cGRhdGVMYXll
clBvc2l0aW9uc0RlZmF1bHRGbGFncygpOwogICAgIGlmIChkaWRGdWxsUmVwYWludCkgewotICAg
ICAgICBmbGFncyAtPSBSZW5kZXJMYXllcjo6Q2hlY2tGb3JSZXBhaW50OwotICAgICAgICBmbGFn
cyB8PSBSZW5kZXJMYXllcjo6TmVlZHNGdWxsUmVwYWludEluQmFja2luZzsKKyAgICAgICAgZmxh
Z3MucmVtb3ZlKFJlbmRlckxheWVyOjpDaGVja0ZvclJlcGFpbnQpOworICAgICAgICBmbGFncy5h
ZGQoUmVuZGVyTGF5ZXI6Ok5lZWRzRnVsbFJlcGFpbnRJbkJhY2tpbmcpOwogICAgIH0KICAgICBp
ZiAoaXNSZWxheW91dGluZ1N1YnRyZWUgJiYgbGF5ZXItPmVuY2xvc2luZ1BhZ2luYXRpb25MYXll
cihSZW5kZXJMYXllcjo6SW5jbHVkZUNvbXBvc2l0ZWRQYWdpbmF0ZWRMYXllcnMpKQotICAgICAg
ICBmbGFncyB8PSBSZW5kZXJMYXllcjo6VXBkYXRlUGFnaW5hdGlvbjsKKyAgICAgICAgZmxhZ3Mu
YWRkKFJlbmRlckxheWVyOjpVcGRhdGVQYWdpbmF0aW9uKTsKICAgICByZXR1cm4gZmxhZ3M7CiB9
CiAKQEAgLTQwNjgsMTggKzQwNjgsMTggQEAgdm9pZCBGcmFtZVZpZXc6OndpbGxQYWludENvbnRl
bnRzKEdyYXBoaQogICAgIAogICAgIGlmIChGcmFtZVZpZXcqIHBhcmVudFZpZXcgPSBwYXJlbnRG
cmFtZVZpZXcoKSkgewogICAgICAgICBpZiAocGFyZW50Vmlldy0+cGFpbnRCZWhhdmlvcigpICYg
UGFpbnRCZWhhdmlvcjo6RmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzKQotICAgICAgICAgICAgbV9w
YWludEJlaGF2aW9yIHw9IFBhaW50QmVoYXZpb3I6OkZsYXR0ZW5Db21wb3NpdGluZ0xheWVyczsK
KyAgICAgICAgICAgIG1fcGFpbnRCZWhhdmlvci5hZGQoUGFpbnRCZWhhdmlvcjo6RmxhdHRlbkNv
bXBvc2l0aW5nTGF5ZXJzKTsKICAgICAgICAgCiAgICAgICAgIGlmIChwYXJlbnRWaWV3LT5wYWlu
dEJlaGF2aW9yKCkgJiBQYWludEJlaGF2aW9yOjpTbmFwc2hvdHRpbmcpCi0gICAgICAgICAgICBt
X3BhaW50QmVoYXZpb3IgfD0gUGFpbnRCZWhhdmlvcjo6U25hcHNob3R0aW5nOworICAgICAgICAg
ICAgbV9wYWludEJlaGF2aW9yLmFkZChQYWludEJlaGF2aW9yOjpTbmFwc2hvdHRpbmcpOwogICAg
ICAgICAKICAgICAgICAgaWYgKHBhcmVudFZpZXctPnBhaW50QmVoYXZpb3IoKSAmIFBhaW50QmVo
YXZpb3I6OlRpbGVGaXJzdFBhaW50KQotICAgICAgICAgICAgbV9wYWludEJlaGF2aW9yIHw9IFBh
aW50QmVoYXZpb3I6OlRpbGVGaXJzdFBhaW50OworICAgICAgICAgICAgbV9wYWludEJlaGF2aW9y
LmFkZChQYWludEJlaGF2aW9yOjpUaWxlRmlyc3RQYWludCk7CiAgICAgfQogCiAgICAgaWYgKGRv
Y3VtZW50LT5wcmludGluZygpKSB7Ci0gICAgICAgIG1fcGFpbnRCZWhhdmlvciB8PSBQYWludEJl
aGF2aW9yOjpGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnM7Ci0gICAgICAgIG1fcGFpbnRCZWhhdmlv
ciB8PSBQYWludEJlaGF2aW9yOjpTbmFwc2hvdHRpbmc7CisgICAgICAgIG1fcGFpbnRCZWhhdmlv
ci5hZGQoUGFpbnRCZWhhdmlvcjo6RmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzKTsKKyAgICAgICAg
bV9wYWludEJlaGF2aW9yLmFkZChQYWludEJlaGF2aW9yOjpTbmFwc2hvdHRpbmcpOwogICAgIH0K
IAogICAgIHBhaW50aW5nU3RhdGUuaXNGbGF0dGVuaW5nUGFpbnRPZlJvb3RGcmFtZSA9IChtX3Bh
aW50QmVoYXZpb3IgJiBQYWludEJlaGF2aW9yOjpGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMpICYm
ICFmcmFtZSgpLm93bmVyRWxlbWVudCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCShyZXZpc2lv
biAyMzU1MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNjQzLDExICsxNjQzLDExIEBAIHZvaWQgUGFnZTo6c2V0SXNWaXNpYmxlKGJvb2wgaXNW
aXNpYmxlKQogICAgIGF1dG8gc3RhdGUgPSBtX2FjdGl2aXR5U3RhdGU7CiAKICAgICBpZiAoaXNW
aXNpYmxlKSB7Ci0gICAgICAgIHN0YXRlIC09IEFjdGl2aXR5U3RhdGU6OklzVmlzdWFsbHlJZGxl
OwotICAgICAgICBzdGF0ZSB8PSB7IEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSwgQWN0aXZpdHlT
dGF0ZTo6SXNWaXNpYmxlT3JPY2NsdWRlZCB9OworICAgICAgICBzdGF0ZS5yZW1vdmUoQWN0aXZp
dHlTdGF0ZTo6SXNWaXN1YWxseUlkbGUpOworICAgICAgICBzdGF0ZS5hZGQoeyBBY3Rpdml0eVN0
YXRlOjpJc1Zpc2libGUsIEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZU9yT2NjbHVkZWQgfSk7CiAg
ICAgfSBlbHNlIHsKLSAgICAgICAgc3RhdGUgfD0gQWN0aXZpdHlTdGF0ZTo6SXNWaXN1YWxseUlk
bGU7Ci0gICAgICAgIHN0YXRlIC09IHsgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlLCBBY3Rpdml0
eVN0YXRlOjpJc1Zpc2libGVPck9jY2x1ZGVkIH07CisgICAgICAgIHN0YXRlLmFkZChBY3Rpdml0
eVN0YXRlOjpJc1Zpc3VhbGx5SWRsZSk7CisgICAgICAgIHN0YXRlLnJlbW92ZSh7IEFjdGl2aXR5
U3RhdGU6OklzVmlzaWJsZSwgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlT3JPY2NsdWRlZCB9KTsK
ICAgICB9CiAgICAgc2V0QWN0aXZpdHlTdGF0ZShzdGF0ZSk7CiB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wYWdlL1BlcmZvcm1hbmNlT2JzZXJ2ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VPYnNlcnZlci5jcHAJKHJldmlzaW9uIDIzNTUzOSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VPYnNlcnZlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTY1LDcgKzY1LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gUGVyZm9ybWFuY2VPYnNlcnZl
cjo6bwogICAgIE9wdGlvblNldDxQZXJmb3JtYW5jZUVudHJ5OjpUeXBlPiBmaWx0ZXI7CiAgICAg
Zm9yIChjb25zdCBTdHJpbmcmIGVudHJ5VHlwZSA6IGluaXQuZW50cnlUeXBlcykgewogICAgICAg
ICBpZiAoYXV0byB0eXBlID0gUGVyZm9ybWFuY2VFbnRyeTo6cGFyc2VFbnRyeVR5cGVTdHJpbmco
ZW50cnlUeXBlKSkKLSAgICAgICAgICAgIGZpbHRlciB8PSAqdHlwZTsKKyAgICAgICAgICAgIGZp
bHRlci5hZGQoKnR5cGUpOwogICAgIH0KIAogICAgIGlmIChmaWx0ZXIuaXNFbXB0eSgpKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGFnZS9UZXh0SW5kaWNhdG9yLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wYWdlL1RleHRJbmRpY2F0b3IuY3BwCShyZXZpc2lvbiAyMzU1MzkpCisr
KyBTb3VyY2UvV2ViQ29yZS9wYWdlL1RleHRJbmRpY2F0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC03OCw4ICs3OCw4IEBAIFJlZlB0cjxUZXh0SW5kaWNhdG9yPiBUZXh0SW5kaWNhdG9yOjpjcmUK
ICAgICBWaXNpYmxlU2VsZWN0aW9uIG9sZFNlbGVjdGlvbiA9IGZyYW1lLT5zZWxlY3Rpb24oKS5z
ZWxlY3Rpb24oKTsKICAgICBPcHRpb25TZXQ8VGVtcG9yYXJ5U2VsZWN0aW9uT3B0aW9uPiB0ZW1w
b3JhcnlTZWxlY3Rpb25PcHRpb25zOwogI2lmIFBMQVRGT1JNKElPUykKLSAgICB0ZW1wb3JhcnlT
ZWxlY3Rpb25PcHRpb25zIHw9IFRlbXBvcmFyeVNlbGVjdGlvbk9wdGlvbklnbm9yZVNlbGVjdGlv
bkNoYW5nZXM7Ci0gICAgdGVtcG9yYXJ5U2VsZWN0aW9uT3B0aW9ucyB8PSBUZW1wb3JhcnlTZWxl
Y3Rpb25PcHRpb25FbmFibGVBcHBlYXJhbmNlVXBkYXRlczsKKyAgICB0ZW1wb3JhcnlTZWxlY3Rp
b25PcHRpb25zLmFkZChUZW1wb3JhcnlTZWxlY3Rpb25PcHRpb25JZ25vcmVTZWxlY3Rpb25DaGFu
Z2VzKTsKKyAgICB0ZW1wb3JhcnlTZWxlY3Rpb25PcHRpb25zLmFkZChUZW1wb3JhcnlTZWxlY3Rp
b25PcHRpb25FbmFibGVBcHBlYXJhbmNlVXBkYXRlcyk7CiAjZW5kaWYKICAgICBUZW1wb3JhcnlT
ZWxlY3Rpb25DaGFuZ2Ugc2VsZWN0aW9uQ2hhbmdlKCpmcmFtZSwgeyByYW5nZSB9LCB0ZW1wb3Jh
cnlTZWxlY3Rpb25PcHRpb25zKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9XaW5kb3dG
ZWF0dXJlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9XaW5kb3dGZWF0
dXJlcy5jcHAJKHJldmlzaW9uIDIzNTUzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvV2luZG93
RmVhdHVyZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjAsNyArMTIwLDcgQEAgT3B0aW9uU2V0
PERpc2FibGVkQWRhcHRhdGlvbnM+IHBhcnNlRGlzYQogICAgIGZvciAoYXV0byYgbmFtZSA6IGRp
c2FibGVkQWRhcHRhdGlvbnNTdHJpbmcuc3BsaXQoJywnKSkgewogICAgICAgICBhdXRvIG5vcm1h
bGl6ZWROYW1lID0gbmFtZS5zdHJpcFdoaXRlU3BhY2UoKS5jb252ZXJ0VG9BU0NJSUxvd2VyY2Fz
ZSgpOwogICAgICAgICBpZiAobm9ybWFsaXplZE5hbWUgPT0gd2F0Y2hBZGFwdGF0aW9uTmFtZSgp
KQotICAgICAgICAgICAgZGlzYWJsZWRBZGFwdGF0aW9ucyB8PSBEaXNhYmxlZEFkYXB0YXRpb25z
OjpXYXRjaDsKKyAgICAgICAgICAgIGRpc2FibGVkQWRhcHRhdGlvbnMuYWRkKERpc2FibGVkQWRh
cHRhdGlvbnM6OldhdGNoKTsKICAgICB9CiAgICAgcmV0dXJuIGRpc2FibGVkQWRhcHRhdGlvbnM7
CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3ku
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQ
b2xpY3kuaAkocmV2aXNpb24gMjM1NTM5KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29u
dGVudFNlY3VyaXR5UG9saWN5LmgJKHdvcmtpbmcgY29weSkKQEAgLTE1MSwxMSArMTUxLDExIEBA
IHB1YmxpYzoKICAgICB2b2lkIGVuZm9yY2VTYW5kYm94RmxhZ3MoU2FuZGJveEZsYWdzIHNhbmRi
b3hGbGFncykgeyBtX3NhbmRib3hGbGFncyB8PSBzYW5kYm94RmxhZ3M7IH0KICAgICB2b2lkIGFk
ZEhhc2hBbGdvcml0aG1zRm9ySW5saW5lU2NyaXB0cyhPcHRpb25TZXQ8Q29udGVudFNlY3VyaXR5
UG9saWN5SGFzaEFsZ29yaXRobT4gaGFzaEFsZ29yaXRobXNGb3JJbmxpbmVTY3JpcHRzKQogICAg
IHsKLSAgICAgICAgbV9oYXNoQWxnb3JpdGhtc0ZvcklubGluZVNjcmlwdHMgfD0gaGFzaEFsZ29y
aXRobXNGb3JJbmxpbmVTY3JpcHRzOworICAgICAgICBtX2hhc2hBbGdvcml0aG1zRm9ySW5saW5l
U2NyaXB0cy5hZGQoaGFzaEFsZ29yaXRobXNGb3JJbmxpbmVTY3JpcHRzKTsKICAgICB9CiAgICAg
dm9pZCBhZGRIYXNoQWxnb3JpdGhtc0ZvcklubGluZVN0eWxlc2hlZXRzKE9wdGlvblNldDxDb250
ZW50U2VjdXJpdHlQb2xpY3lIYXNoQWxnb3JpdGhtPiBoYXNoQWxnb3JpdGhtc0ZvcklubGluZVN0
eWxlc2hlZXRzKQogICAgIHsKLSAgICAgICAgbV9oYXNoQWxnb3JpdGhtc0ZvcklubGluZVN0eWxl
c2hlZXRzIHw9IGhhc2hBbGdvcml0aG1zRm9ySW5saW5lU3R5bGVzaGVldHM7CisgICAgICAgIG1f
aGFzaEFsZ29yaXRobXNGb3JJbmxpbmVTdHlsZXNoZWV0cy5hZGQoaGFzaEFsZ29yaXRobXNGb3JJ
bmxpbmVTdHlsZXNoZWV0cyk7CiAgICAgfQogCiAgICAgLy8gVXNlZCBieSBDb250ZW50U2VjdXJp
dHlQb2xpY3lTb3VyY2UKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1
cml0eVBvbGljeVNvdXJjZUxpc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3QuY3BwCShyZXZpc2lvbiAyMzU1
MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3Vy
Y2VMaXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDczLDcgKzQ3Myw3IEBAIGJvb2wgQ29udGVu
dFNlY3VyaXR5UG9saWN5U291cmNlTGlzdDo6cGEKICAgICBpZiAoZGlnZXN0LT52YWx1ZS5zaXpl
KCkgPiBDb250ZW50U2VjdXJpdHlQb2xpY3lIYXNoOjptYXhpbXVtRGlnZXN0TGVuZ3RoKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBtX2hhc2hBbGdvcml0aG1zVXNlZCB8PSBkaWdlc3Qt
PmFsZ29yaXRobTsKKyAgICBtX2hhc2hBbGdvcml0aG1zVXNlZC5hZGQoZGlnZXN0LT5hbGdvcml0
aG0pOwogICAgIG1faGFzaGVzLmFkZChXVEZNb3ZlKCpkaWdlc3QpKTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtRXZlbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUV2ZW50LmgJKHJldmlz
aW9uIDIzNTUzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtRXZlbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtMTE1LDEzICsxMTUsMTMgQEAgcHJvdGVjdGVkOgogICAgICAgICAs
IG1fdGltZXN0YW1wKHRpbWVzdGFtcCkKICAgICB7CiAgICAgICAgIGlmIChzaGlmdEtleSkKLSAg
ICAgICAgICAgIG1fbW9kaWZpZXJzIHw9IE1vZGlmaWVyOjpTaGlmdEtleTsKKyAgICAgICAgICAg
IG1fbW9kaWZpZXJzLmFkZChNb2RpZmllcjo6U2hpZnRLZXkpOwogICAgICAgICBpZiAoY3RybEtl
eSkKLSAgICAgICAgICAgIG1fbW9kaWZpZXJzIHw9IE1vZGlmaWVyOjpDdHJsS2V5OworICAgICAg
ICAgICAgbV9tb2RpZmllcnMuYWRkKE1vZGlmaWVyOjpDdHJsS2V5KTsKICAgICAgICAgaWYgKGFs
dEtleSkKLSAgICAgICAgICAgIG1fbW9kaWZpZXJzIHw9IE1vZGlmaWVyOjpBbHRLZXk7CisgICAg
ICAgICAgICBtX21vZGlmaWVycy5hZGQoTW9kaWZpZXI6OkFsdEtleSk7CiAgICAgICAgIGlmICht
ZXRhS2V5KQotICAgICAgICAgICAgbV9tb2RpZmllcnMgfD0gTW9kaWZpZXI6Ok1ldGFLZXk7Cisg
ICAgICAgICAgICBtX21vZGlmaWVycy5hZGQoTW9kaWZpZXI6Ok1ldGFLZXkpOwogICAgIH0KIAog
ICAgIC8vIEV4cGxpY2l0IHByb3RlY3RlZCBkZXN0cnVjdG9yIHNvIHRoYXQgcGVvcGxlIGRvbid0
IGFjY2lkZW50YWxseQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1BsYXRmb3Jt
S2V5Ym9hcmRFdmVudEd0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3RrL1BsYXRmb3JtS2V5Ym9hcmRFdmVudEd0ay5jcHAJKHJldmlzaW9uIDIzNTUzOSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybUtleWJvYXJkRXZlbnRHdGsuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMzMwLDE1ICsxMzMwLDE1IEBAIHN0YXRpYyBPcHRpb25TZXQ8
UGxhdGZvcm1FdmVudDo6TW9kaWZpZXIKIHsKICAgICBPcHRpb25TZXQ8UGxhdGZvcm1FdmVudDo6
TW9kaWZpZXI+IG1vZGlmaWVyczsKICAgICBpZiAoZXZlbnQtPnN0YXRlICYgR0RLX1NISUZUX01B
U0sgfHwgZXZlbnQtPmtleXZhbCA9PSBHREtfMzI3MF9CYWNrVGFiKQotICAgICAgICBtb2RpZmll
cnMgfD0gUGxhdGZvcm1FdmVudDo6TW9kaWZpZXI6OlNoaWZ0S2V5OworICAgICAgICBtb2RpZmll
cnMuYWRkKFBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVyOjpTaGlmdEtleSk7CiAgICAgaWYgKGV2ZW50
LT5zdGF0ZSAmIEdES19DT05UUk9MX01BU0spCi0gICAgICAgIG1vZGlmaWVycyB8PSBQbGF0Zm9y
bUV2ZW50OjpNb2RpZmllcjo6Q3RybEtleTsKKyAgICAgICAgbW9kaWZpZXJzLmFkZChQbGF0Zm9y
bUV2ZW50OjpNb2RpZmllcjo6Q3RybEtleSk7CiAgICAgaWYgKGV2ZW50LT5zdGF0ZSAmIEdES19N
T0QxX01BU0spCi0gICAgICAgIG1vZGlmaWVycyB8PSBQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcjo6
QWx0S2V5OworICAgICAgICBtb2RpZmllcnMuYWRkKFBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVyOjpB
bHRLZXkpOwogICAgIGlmIChldmVudC0+c3RhdGUgJiBHREtfTUVUQV9NQVNLKQotICAgICAgICBt
b2RpZmllcnMgfD0gUGxhdGZvcm1FdmVudDo6TW9kaWZpZXI6Ok1ldGFLZXk7CisgICAgICAgIG1v
ZGlmaWVycy5hZGQoUGxhdGZvcm1FdmVudDo6TW9kaWZpZXI6Ok1ldGFLZXkpOwogICAgIGlmIChl
dmVudC0+c3RhdGUgJiBHREtfTE9DS19NQVNLKQotICAgICAgICBtb2RpZmllcnMgfD0gUGxhdGZv
cm1FdmVudDo6TW9kaWZpZXI6OkNhcHNMb2NrS2V5OworICAgICAgICBtb2RpZmllcnMuYWRkKFBs
YXRmb3JtRXZlbnQ6Ok1vZGlmaWVyOjpDYXBzTG9ja0tleSk7CiAgICAgcmV0dXJuIG1vZGlmaWVy
czsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1BsYXRmb3JtTW91c2VF
dmVudEd0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bs
YXRmb3JtTW91c2VFdmVudEd0ay5jcHAJKHJldmlzaW9uIDIzNTUzOSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybU1vdXNlRXZlbnRHdGsuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00NywxNSArNDcsMTUgQEAgUGxhdGZvcm1Nb3VzZUV2ZW50OjpQbGF0Zm9ybU1vdXNlRXZl
bnQoRwogICAgIG1fbW9kaWZpZXJGbGFncyA9IDA7CiAKICAgICBpZiAoZXZlbnQtPnN0YXRlICYg
R0RLX1NISUZUX01BU0spCi0gICAgICAgIG1fbW9kaWZpZXJzIHw9IFBsYXRmb3JtRXZlbnQ6Ok1v
ZGlmaWVyOjpTaGlmdEtleTsKKyAgICAgICAgbV9tb2RpZmllcnMuYWRkKFBsYXRmb3JtRXZlbnQ6
Ok1vZGlmaWVyOjpTaGlmdEtleSk7CiAgICAgaWYgKGV2ZW50LT5zdGF0ZSAmIEdES19DT05UUk9M
X01BU0spCi0gICAgICAgIG1fbW9kaWZpZXJzIHw9IFBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVyOjpD
dHJsS2V5OworICAgICAgICBtX21vZGlmaWVycy5hZGQoUGxhdGZvcm1FdmVudDo6TW9kaWZpZXI6
OkN0cmxLZXkpOwogICAgIGlmIChldmVudC0+c3RhdGUgJiBHREtfTU9EMV9NQVNLKQotICAgICAg
ICBtX21vZGlmaWVycyB8PSBQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcjo6QWx0S2V5OworICAgICAg
ICBtX21vZGlmaWVycy5hZGQoUGxhdGZvcm1FdmVudDo6TW9kaWZpZXI6OkFsdEtleSk7CiAgICAg
aWYgKGV2ZW50LT5zdGF0ZSAmIEdES19NRVRBX01BU0spCi0gICAgICAgIG1fbW9kaWZpZXJzIHw9
IFBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVyOjpNZXRhS2V5OworICAgICAgICBtX21vZGlmaWVycy5h
ZGQoUGxhdGZvcm1FdmVudDo6TW9kaWZpZXI6Ok1ldGFLZXkpOwogICAgIGlmIChQbGF0Zm9ybUtl
eWJvYXJkRXZlbnQ6Om1vZGlmaWVyc0NvbnRhaW5DYXBzTG9jayhldmVudC0+c3RhdGUpKQotICAg
ICAgICBtX21vZGlmaWVycyB8PSBQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcjo6Q2Fwc0xvY2tLZXk7
CisgICAgICAgIG1fbW9kaWZpZXJzLmFkZChQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcjo6Q2Fwc0xv
Y2tLZXkpOwogCiAgICAgc3dpdGNoIChldmVudC0+dHlwZSkgewogICAgIGNhc2UgR0RLX0JVVFRP
Tl9QUkVTUzoKQEAgLTk2LDE1ICs5NiwxNSBAQCBQbGF0Zm9ybU1vdXNlRXZlbnQ6OlBsYXRmb3Jt
TW91c2VFdmVudChHCiAgICAgbV9tb2RpZmllckZsYWdzID0gMDsKIAogICAgIGlmIChtb3Rpb24t
PnN0YXRlICYgR0RLX1NISUZUX01BU0spCi0gICAgICAgIG1fbW9kaWZpZXJzIHw9IFBsYXRmb3Jt
RXZlbnQ6Ok1vZGlmaWVyOjpTaGlmdEtleTsKKyAgICAgICAgbV9tb2RpZmllcnMuYWRkKFBsYXRm
b3JtRXZlbnQ6Ok1vZGlmaWVyOjpTaGlmdEtleSk7CiAgICAgaWYgKG1vdGlvbi0+c3RhdGUgJiBH
REtfQ09OVFJPTF9NQVNLKQotICAgICAgICBtX21vZGlmaWVycyB8PSBQbGF0Zm9ybUV2ZW50OjpN
b2RpZmllcjo6Q3RybEtleTsKKyAgICAgICAgbV9tb2RpZmllcnMuYWRkKFBsYXRmb3JtRXZlbnQ6
Ok1vZGlmaWVyOjpDdHJsS2V5KTsKICAgICBpZiAobW90aW9uLT5zdGF0ZSAmIEdES19NT0QxX01B
U0spCi0gICAgICAgIG1fbW9kaWZpZXJzIHw9IFBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVyOjpBbHRL
ZXk7CisgICAgICAgIG1fbW9kaWZpZXJzLmFkZChQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcjo6QWx0
S2V5KTsKICAgICBpZiAobW90aW9uLT5zdGF0ZSAmIEdES19NRVRBX01BU0spCi0gICAgICAgIG1f
bW9kaWZpZXJzIHw9IFBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVyOjpNZXRhS2V5OworICAgICAgICBt
X21vZGlmaWVycy5hZGQoUGxhdGZvcm1FdmVudDo6TW9kaWZpZXI6Ok1ldGFLZXkpOwogICAgIGlm
IChQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6Om1vZGlmaWVyc0NvbnRhaW5DYXBzTG9jayhtb3Rpb24t
PnN0YXRlKSkKLSAgICAgICAgbV9tb2RpZmllcnMgfD0gUGxhdGZvcm1FdmVudDo6TW9kaWZpZXI6
OkNhcHNMb2NrS2V5OworICAgICAgICBtX21vZGlmaWVycy5hZGQoUGxhdGZvcm1FdmVudDo6TW9k
aWZpZXI6OkNhcHNMb2NrS2V5KTsKIAogICAgIHN3aXRjaCAobW90aW9uLT50eXBlKSB7CiAgICAg
Y2FzZSBHREtfTU9USU9OX05PVElGWToKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9QbGF0Zm9ybVdoZWVsRXZlbnRHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2d0ay9QbGF0Zm9ybVdoZWVsRXZlbnRHdGsuY3BwCShyZXZpc2lvbiAyMzU1Mzkp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1XaGVlbEV2ZW50R3RrLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDcsMTUgKzQ3LDE1IEBAIFBsYXRmb3JtV2hlZWxFdmVudDo6
UGxhdGZvcm1XaGVlbEV2ZW50KEcKICAgICBtX3RpbWVzdGFtcCA9IHdhbGxUaW1lRm9yRXZlbnQo
ZXZlbnQpOwogCiAgICAgaWYgKGV2ZW50LT5zdGF0ZSAmIEdES19TSElGVF9NQVNLKQotICAgICAg
ICBtX21vZGlmaWVycyB8PSBNb2RpZmllcjo6U2hpZnRLZXk7CisgICAgICAgIG1fbW9kaWZpZXJz
LmFkZChNb2RpZmllcjo6U2hpZnRLZXkpOwogICAgIGlmIChldmVudC0+c3RhdGUgJiBHREtfQ09O
VFJPTF9NQVNLKQotICAgICAgICBtX21vZGlmaWVycyB8PSBNb2RpZmllcjo6Q3RybEtleTsKKyAg
ICAgICAgbV9tb2RpZmllcnMuYWRkKE1vZGlmaWVyOjpDdHJsS2V5KTsKICAgICBpZiAoZXZlbnQt
PnN0YXRlICYgR0RLX01PRDFfTUFTSykKLSAgICAgICAgbV9tb2RpZmllcnMgfD0gTW9kaWZpZXI6
OkFsdEtleTsKKyAgICAgICAgbV9tb2RpZmllcnMuYWRkKE1vZGlmaWVyOjpBbHRLZXkpOwogICAg
IGlmIChldmVudC0+c3RhdGUgJiBHREtfTUVUQV9NQVNLKQotICAgICAgICBtX21vZGlmaWVycyB8
PSBNb2RpZmllcjo6TWV0YUtleTsKKyAgICAgICAgbV9tb2RpZmllcnMuYWRkKE1vZGlmaWVyOjpN
ZXRhS2V5KTsKICAgICBpZiAoUGxhdGZvcm1LZXlib2FyZEV2ZW50Ojptb2RpZmllcnNDb250YWlu
Q2Fwc0xvY2soZXZlbnQtPnN0YXRlKSkKLSAgICAgICAgbV9tb2RpZmllcnMgfD0gUGxhdGZvcm1F
dmVudDo6TW9kaWZpZXI6OkNhcHNMb2NrS2V5OworICAgICAgICBtX21vZGlmaWVycy5hZGQoUGxh
dGZvcm1FdmVudDo6TW9kaWZpZXI6OkNhcHNMb2NrS2V5KTsKIAogICAgIG1fZGVsdGFYID0gMDsK
ICAgICBtX2RlbHRhWSA9IDA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVu
ZGVyVGhlbWVHYWRnZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9SZW5kZXJUaGVtZUdhZGdldC5jcHAJKHJldmlzaW9uIDIzNTUzOSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUdhZGdldC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM1OCwxMyArMzU4LDEzIEBAIFJlbmRlclRoZW1lU2Nyb2xsYmFyR2FkZ2V0OjpSZW5kZXJU
aGVtZVMKICAgICBndGtfc3R5bGVfY29udGV4dF9nZXRfc3R5bGUobV9jb250ZXh0LmdldCgpLCAi
aGFzLWJhY2t3YXJkLXN0ZXBwZXIiLCAmaGFzQmFja3dhcmQsICJoYXMtZm9yd2FyZC1zdGVwcGVy
IiwgJmhhc0ZvcndhcmQsCiAgICAgICAgICJoYXMtc2Vjb25kYXJ5LWJhY2t3YXJkLXN0ZXBwZXIi
LCAmaGFzU2Vjb25kYXJ5QmFja3dhcmQsICJoYXMtc2Vjb25kYXJ5LWZvcndhcmQtc3RlcHBlciIs
ICZoYXNTZWNvbmRhcnlGb3J3YXJkLCBudWxscHRyKTsKICAgICBpZiAoaGFzQmFja3dhcmQpCi0g
ICAgICAgIG1fc3RlcHBlcnMgfD0gU3RlcHBlcnM6OkJhY2t3YXJkOworICAgICAgICBtX3N0ZXBw
ZXJzLmFkZChTdGVwcGVyczo6QmFja3dhcmQpOwogICAgIGlmIChoYXNGb3J3YXJkKQotICAgICAg
ICBtX3N0ZXBwZXJzIHw9IFN0ZXBwZXJzOjpGb3J3YXJkOworICAgICAgICBtX3N0ZXBwZXJzLmFk
ZChTdGVwcGVyczo6Rm9yd2FyZCk7CiAgICAgaWYgKGhhc1NlY29uZGFyeUJhY2t3YXJkKQotICAg
ICAgICBtX3N0ZXBwZXJzIHw9IFN0ZXBwZXJzOjpTZWNvbmRhcnlCYWNrd2FyZDsKKyAgICAgICAg
bV9zdGVwcGVycy5hZGQoU3RlcHBlcnM6OlNlY29uZGFyeUJhY2t3YXJkKTsKICAgICBpZiAoaGFz
U2Vjb25kYXJ5Rm9yd2FyZCkKLSAgICAgICAgbV9zdGVwcGVycyB8PSBTdGVwcGVyczo6U2Vjb25k
YXJ5Rm9yd2FyZDsKKyAgICAgICAgbV9zdGVwcGVycy5hZGQoU3RlcHBlcnM6OlNlY29uZGFyeUZv
cndhcmQpOwogfQogCiB2b2lkIFJlbmRlclRoZW1lU2Nyb2xsYmFyR2FkZ2V0OjpyZW5kZXJTdGVw
cGVyKGNhaXJvX3QqIGNyLCBjb25zdCBGbG9hdFJlY3QmIHBhaW50UmVjdCwgUmVuZGVyVGhlbWVH
YWRnZXQqIHN0ZXBwZXJHYWRnZXQsIEd0a09yaWVudGF0aW9uIG9yaWVudGF0aW9uLCBTdGVwcGVy
cyBzdGVwcGVyKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtRXZl
bnRGYWN0b3J5SU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9QbGF0Zm9ybUV2ZW50RmFjdG9yeUlPUy5tbQkocmV2aXNpb24gMjM1NTM5KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtRXZlbnRGYWN0b3J5SU9TLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC00MywxNSArNDMsMTUgQEAgc3RhdGljIE9wdGlvblNldDxQbGF0Zm9ybUV2ZW50
OjpNb2RpZmllcgogICAgIE9wdGlvblNldDxQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcj4gbW9kaWZp
ZXJzOwogCiAgICAgaWYgKGV2ZW50Lm1vZGlmaWVyRmxhZ3MgJiBXZWJFdmVudEZsYWdNYXNrU2hp
ZnQpCi0gICAgICAgIG1vZGlmaWVycyB8PSBQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcjo6U2hpZnRL
ZXk7CisgICAgICAgIG1vZGlmaWVycy5hZGQoUGxhdGZvcm1FdmVudDo6TW9kaWZpZXI6OlNoaWZ0
S2V5KTsKICAgICBpZiAoZXZlbnQubW9kaWZpZXJGbGFncyAmIFdlYkV2ZW50RmxhZ01hc2tDb250
cm9sKQotICAgICAgICBtb2RpZmllcnMgfD0gUGxhdGZvcm1FdmVudDo6TW9kaWZpZXI6OkN0cmxL
ZXk7CisgICAgICAgIG1vZGlmaWVycy5hZGQoUGxhdGZvcm1FdmVudDo6TW9kaWZpZXI6OkN0cmxL
ZXkpOwogICAgIGlmIChldmVudC5tb2RpZmllckZsYWdzICYgV2ViRXZlbnRGbGFnTWFza0FsdGVy
bmF0ZSkKLSAgICAgICAgbW9kaWZpZXJzIHw9IFBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVyOjpBbHRL
ZXk7CisgICAgICAgIG1vZGlmaWVycy5hZGQoUGxhdGZvcm1FdmVudDo6TW9kaWZpZXI6OkFsdEtl
eSk7CiAgICAgaWYgKGV2ZW50Lm1vZGlmaWVyRmxhZ3MgJiBXZWJFdmVudEZsYWdNYXNrQ29tbWFu
ZCkKLSAgICAgICAgbW9kaWZpZXJzIHw9IFBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVyOjpNZXRhS2V5
OworICAgICAgICBtb2RpZmllcnMuYWRkKFBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVyOjpNZXRhS2V5
KTsKICAgICBpZiAoZXZlbnQubW9kaWZpZXJGbGFncyAmIFdlYkV2ZW50RmxhZ01hc2tBbHBoYVNo
aWZ0KQotICAgICAgICBtb2RpZmllcnMgfD0gUGxhdGZvcm1FdmVudDo6TW9kaWZpZXI6OkNhcHNM
b2NrS2V5OworICAgICAgICBtb2RpZmllcnMuYWRkKFBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVyOjpD
YXBzTG9ja0tleSk7CiAKICAgICByZXR1cm4gbW9kaWZpZXJzOwogfQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtRXZlbnRGYWN0b3J5TWFjLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybUV2ZW50RmFjdG9yeU1hYy5t
bQkocmV2aXNpb24gMjM1NTM5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRm
b3JtRXZlbnRGYWN0b3J5TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC02NjYsMTUgKzY2NiwxNSBA
QCBPcHRpb25TZXQ8UGxhdGZvcm1FdmVudDo6TW9kaWZpZXI+IG1vZGlmCiAgICAgT3B0aW9uU2V0
PFBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVyPiBtb2RpZmllcnM7CiAKICAgICBpZiAoZXZlbnQubW9k
aWZpZXJGbGFncyAmIE5TRXZlbnRNb2RpZmllckZsYWdTaGlmdCkKLSAgICAgICAgbW9kaWZpZXJz
IHw9IFBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVyOjpTaGlmdEtleTsKKyAgICAgICAgbW9kaWZpZXJz
LmFkZChQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcjo6U2hpZnRLZXkpOwogICAgIGlmIChldmVudC5t
b2RpZmllckZsYWdzICYgTlNFdmVudE1vZGlmaWVyRmxhZ0NvbnRyb2wpCi0gICAgICAgIG1vZGlm
aWVycyB8PSBQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcjo6Q3RybEtleTsKKyAgICAgICAgbW9kaWZp
ZXJzLmFkZChQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcjo6Q3RybEtleSk7CiAgICAgaWYgKGV2ZW50
Lm1vZGlmaWVyRmxhZ3MgJiBOU0V2ZW50TW9kaWZpZXJGbGFnT3B0aW9uKQotICAgICAgICBtb2Rp
ZmllcnMgfD0gUGxhdGZvcm1FdmVudDo6TW9kaWZpZXI6OkFsdEtleTsKKyAgICAgICAgbW9kaWZp
ZXJzLmFkZChQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcjo6QWx0S2V5KTsKICAgICBpZiAoZXZlbnQu
bW9kaWZpZXJGbGFncyAmIE5TRXZlbnRNb2RpZmllckZsYWdDb21tYW5kKQotICAgICAgICBtb2Rp
ZmllcnMgfD0gUGxhdGZvcm1FdmVudDo6TW9kaWZpZXI6Ok1ldGFLZXk7CisgICAgICAgIG1vZGlm
aWVycy5hZGQoUGxhdGZvcm1FdmVudDo6TW9kaWZpZXI6Ok1ldGFLZXkpOwogICAgIGlmIChldmVu
dC5tb2RpZmllckZsYWdzICYgTlNFdmVudE1vZGlmaWVyRmxhZ0NhcHNMb2NrKQotICAgICAgICBt
b2RpZmllcnMgfD0gUGxhdGZvcm1FdmVudDo6TW9kaWZpZXI6OkNhcHNMb2NrS2V5OworICAgICAg
ICBtb2RpZmllcnMuYWRkKFBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVyOjpDYXBzTG9ja0tleSk7CiAK
ICAgICByZXR1cm4gbW9kaWZpZXJzOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXIuY3BwCShyZXZpc2lvbiAyMzU1MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NTcsMTcgKzU1NywxNyBA
QCB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVMYXllclBvc2l0aW9ucyhSCiAgICAgLy8gQ2xlYXIg
dGhlIElzQ29tcG9zaXRpbmdVcGRhdGVSb290IGZsYWcgb25jZSB3ZSd2ZSBmb3VuZCB0aGUgZmly
c3QgY29tcG9zaXRpbmcgbGF5ZXIgaW4gdGhpcyB1cGRhdGUuCiAgICAgYm9vbCBpc1VwZGF0ZVJv
b3QgPSBmbGFncy5jb250YWlucyhJc0NvbXBvc2l0aW5nVXBkYXRlUm9vdCk7CiAgICAgaWYgKGlz
Q29tcG9zaXRlZCgpKQotICAgICAgICBmbGFncyAtPSBJc0NvbXBvc2l0aW5nVXBkYXRlUm9vdDsK
KyAgICAgICAgZmxhZ3MucmVtb3ZlKElzQ29tcG9zaXRpbmdVcGRhdGVSb290KTsKIAogICAgIGlm
IChyZW5kZXJlcigpLmlzSW5GbG93UmVuZGVyRnJhZ21lbnRlZEZsb3coKSkgewogICAgICAgICB1
cGRhdGVQYWdpbmF0aW9uKCk7Ci0gICAgICAgIGZsYWdzIHw9IFVwZGF0ZVBhZ2luYXRpb247Cisg
ICAgICAgIGZsYWdzLmFkZChVcGRhdGVQYWdpbmF0aW9uKTsKICAgICB9CiAKICAgICBpZiAodHJh
bnNmb3JtKCkpIHsKLSAgICAgICAgZmxhZ3MgfD0gU2VlblRyYW5zZm9ybWVkTGF5ZXI7CisgICAg
ICAgIGZsYWdzLmFkZChTZWVuVHJhbnNmb3JtZWRMYXllcik7CiAgICAgICAgIGlmICghdHJhbnNm
b3JtKCktPmlzQWZmaW5lKCkpCi0gICAgICAgICAgICBmbGFncyB8PSBTZWVuM0RUcmFuc2Zvcm1l
ZExheWVyOworICAgICAgICAgICAgZmxhZ3MuYWRkKFNlZW4zRFRyYW5zZm9ybWVkTGF5ZXIpOwog
ICAgIH0KIAogICAgIGZvciAoUmVuZGVyTGF5ZXIqIGNoaWxkID0gZmlyc3RDaGlsZCgpOyBjaGls
ZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkKQEAgLTU3Niw5ICs1NzYsOSBAQCB2b2lk
IFJlbmRlckxheWVyOjp1cGRhdGVMYXllclBvc2l0aW9ucyhSCiAgICAgaWYgKChmbGFncyAmIFVw
ZGF0ZUNvbXBvc2l0aW5nTGF5ZXJzKSAmJiBpc0NvbXBvc2l0ZWQoKSkgewogICAgICAgICBPcHRp
b25TZXQ8UmVuZGVyTGF5ZXJCYWNraW5nOjpVcGRhdGVBZnRlckxheW91dEZsYWdzPiB1cGRhdGVG
bGFnczsKICAgICAgICAgaWYgKGZsYWdzICYgTmVlZHNGdWxsUmVwYWludEluQmFja2luZykKLSAg
ICAgICAgICAgIHVwZGF0ZUZsYWdzIHw9IFJlbmRlckxheWVyQmFja2luZzo6VXBkYXRlQWZ0ZXJM
YXlvdXRGbGFnczo6TmVlZHNGdWxsUmVwYWludDsKKyAgICAgICAgICAgIHVwZGF0ZUZsYWdzLmFk
ZChSZW5kZXJMYXllckJhY2tpbmc6OlVwZGF0ZUFmdGVyTGF5b3V0RmxhZ3M6Ok5lZWRzRnVsbFJl
cGFpbnQpOwogICAgICAgICBpZiAoaXNVcGRhdGVSb290KQotICAgICAgICAgICAgdXBkYXRlRmxh
Z3MgfD0gUmVuZGVyTGF5ZXJCYWNraW5nOjpVcGRhdGVBZnRlckxheW91dEZsYWdzOjpJc1VwZGF0
ZVJvb3Q7CisgICAgICAgICAgICB1cGRhdGVGbGFncy5hZGQoUmVuZGVyTGF5ZXJCYWNraW5nOjpV
cGRhdGVBZnRlckxheW91dEZsYWdzOjpJc1VwZGF0ZVJvb3QpOwogICAgICAgICBiYWNraW5nKCkt
PnVwZGF0ZUFmdGVyTGF5b3V0KHVwZGF0ZUZsYWdzKTsKICAgICB9CiAgICAgICAgIApAQCAtODUx
LDE2ICs4NTEsMTYgQEAgdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlTGF5ZXJQb3NpdGlvbnNBZgog
CiAgICAgYm9vbCBwb3NpdGlvbkNoYW5nZWQgPSB1cGRhdGVMYXllclBvc2l0aW9uKCk7CiAgICAg
aWYgKHBvc2l0aW9uQ2hhbmdlZCkKLSAgICAgICAgZmxhZ3MgfD0gSGFzQ2hhbmdlZEFuY2VzdG9y
OworICAgICAgICBmbGFncy5hZGQoSGFzQ2hhbmdlZEFuY2VzdG9yKTsKIAogICAgIGlmIChmbGFn
cy5jb250YWluc0FueSh7IEhhc0NoYW5nZWRBbmNlc3RvciwgSGFzU2VlblZpZXdwb3J0Q29uc3Ry
YWluZWRBbmNlc3RvciwgSXNPdmVyZmxvd1Njcm9sbCB9KSkKICAgICAgICAgY2xlYXJDbGlwUmVj
dHMoKTsKIAogICAgIGlmIChyZW5kZXJlcigpLnN0eWxlKCkuaGFzVmlld3BvcnRDb25zdHJhaW5l
ZFBvc2l0aW9uKCkpCi0gICAgICAgIGZsYWdzIHw9IEhhc1NlZW5WaWV3cG9ydENvbnN0cmFpbmVk
QW5jZXN0b3I7CisgICAgICAgIGZsYWdzLmFkZChIYXNTZWVuVmlld3BvcnRDb25zdHJhaW5lZEFu
Y2VzdG9yKTsKIAogICAgIGlmIChyZW5kZXJlcigpLmhhc092ZXJmbG93Q2xpcCgpKQotICAgICAg
ICBmbGFncyB8PSBIYXNTZWVuQW5jZXN0b3JXaXRoT3ZlcmZsb3dDbGlwOworICAgICAgICBmbGFn
cy5hZGQoSGFzU2VlbkFuY2VzdG9yV2l0aE92ZXJmbG93Q2xpcCk7CiAgICAgCiAgICAgYm9vbCBz
aG91bGRDb21wdXRlUmVwYWludFJlY3RzID0gKGZsYWdzLmNvbnRhaW5zKEhhc1NlZW5WaWV3cG9y
dENvbnN0cmFpbmVkQW5jZXN0b3IpIHx8IGZsYWdzLmNvbnRhaW5zQWxsKHsgSXNPdmVyZmxvd1Nj
cm9sbCwgSGFzU2VlbkFuY2VzdG9yV2l0aE92ZXJmbG93Q2xpcCB9KSkgJiYgaXNTZWxmUGFpbnRp
bmdMYXllcigpOwogICAgIGJvb2wgaXNWaXN1YWxseUVtcHR5ID0gIWlzVmlzdWFsbHlOb25FbXB0
eSgpOwpAQCAtMzk3Myw3ICszOTczLDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMYXllcihH
cmFwaGljc0NvbgogICAgICAgICAvLyBUaGUgcGVyZm9ybWluZ1BhaW50SW52YWxpZGF0aW9uKCkg
cGFpbnRpbmcgcGFzcyBnb2VzIHRocm91Z2ggY29tcG9zaXRpbmcgbGF5ZXJzLAogICAgICAgICAv
LyBidXQgd2UgbmVlZCB0byBlbnN1cmUgdGhhdCB3ZSBkb24ndCBjYWNoZSBjbGlwIHJlY3RzIGNv
bXB1dGVkIHdpdGggdGhlIHdyb25nIHJvb3QgaW4gdGhpcyBjYXNlLgogICAgICAgICBpZiAoY29u
dGV4dC5wZXJmb3JtaW5nUGFpbnRJbnZhbGlkYXRpb24oKSB8fCAocGFpbnRpbmdJbmZvLnBhaW50
QmVoYXZpb3IgJiBQYWludEJlaGF2aW9yOjpGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMpKQotICAg
ICAgICAgICAgcGFpbnRGbGFncyB8PSBQYWludExheWVyVGVtcG9yYXJ5Q2xpcFJlY3RzOworICAg
ICAgICAgICAgcGFpbnRGbGFncy5hZGQoUGFpbnRMYXllclRlbXBvcmFyeUNsaXBSZWN0cyk7CiAg
ICAgICAgIGVsc2UgaWYgKCFiYWNraW5nKCktPnBhaW50c0ludG9XaW5kb3coKQogICAgICAgICAg
ICAgJiYgIWJhY2tpbmcoKS0+cGFpbnRzSW50b0NvbXBvc2l0ZWRBbmNlc3RvcigpCiAgICAgICAg
ICAgICAmJiAhc2hvdWxkRG9Tb2Z0d2FyZVBhaW50KHRoaXMsIHBhaW50RmxhZ3MuY29udGFpbnMo
UGFpbnRMYXllclBhaW50aW5nUmVmbGVjdGlvbikpCkBAIC00MDAwLDcgKzQwMDAsNyBAQCB2b2lk
IFJlbmRlckxheWVyOjpwYWludExheWVyKEdyYXBoaWNzQ29uCiAgICAgICAgIHJldHVybjsKIAog
ICAgIGlmIChwYWludHNXaXRoVHJhbnNwYXJlbmN5KHBhaW50aW5nSW5mby5wYWludEJlaGF2aW9y
KSkKLSAgICAgICAgcGFpbnRGbGFncyB8PSBQYWludExheWVySGF2ZVRyYW5zcGFyZW5jeTsKKyAg
ICAgICAgcGFpbnRGbGFncy5hZGQoUGFpbnRMYXllckhhdmVUcmFuc3BhcmVuY3kpOwogCiAgICAg
Ly8gUGFpbnRMYXllckFwcGxpZWRUcmFuc2Zvcm0gaXMgdXNlZCBpbiBSZW5kZXJSZXBsaWNhLCB0
byBhdm9pZCBhcHBseWluZyB0aGUgdHJhbnNmb3JtIHR3aWNlLgogICAgIGlmIChwYWludHNXaXRo
VHJhbnNmb3JtKHBhaW50aW5nSW5mby5wYWludEJlaGF2aW9yKSAmJiAhKHBhaW50RmxhZ3MgJiBQ
YWludExheWVyQXBwbGllZFRyYW5zZm9ybSkpIHsKQEAgLTQwNjEsNyArNDA2MSw3IEBAIHZvaWQg
UmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJDb250ZW50c0FuZFIKICAgICAgICAgbV9wYWludGluZ0lu
c2lkZVJlZmxlY3Rpb24gPSBmYWxzZTsKICAgICB9CiAKLSAgICBsb2NhbFBhaW50RmxhZ3MgfD0g
cGFpbnRMYXllclBhaW50aW5nQ29tcG9zaXRpbmdBbGxQaGFzZXNGbGFncygpOworICAgIGxvY2Fs
UGFpbnRGbGFncy5hZGQocGFpbnRMYXllclBhaW50aW5nQ29tcG9zaXRpbmdBbGxQaGFzZXNGbGFn
cygpKTsKICAgICBwYWludExheWVyQ29udGVudHMoY29udGV4dCwgcGFpbnRpbmdJbmZvLCBsb2Nh
bFBhaW50RmxhZ3MpOwogfQogCkBAIC00MzU1LDIxICs0MzU1LDIxIEBAIHZvaWQgUmVuZGVyTGF5
ZXI6OnBhaW50TGF5ZXJDb250ZW50cyhHcmEKIAogICAgICAgICBPcHRpb25TZXQ8UGFpbnRCZWhh
dmlvcj4gcGFpbnRCZWhhdmlvciA9IFBhaW50QmVoYXZpb3I6Ok5vcm1hbDsKICAgICAgICAgaWYg
KGxvY2FsUGFpbnRGbGFncyAmIFBhaW50TGF5ZXJQYWludGluZ1NraXBSb290QmFja2dyb3VuZCkK
LSAgICAgICAgICAgIHBhaW50QmVoYXZpb3IgfD0gUGFpbnRCZWhhdmlvcjo6U2tpcFJvb3RCYWNr
Z3JvdW5kOworICAgICAgICAgICAgcGFpbnRCZWhhdmlvci5hZGQoUGFpbnRCZWhhdmlvcjo6U2tp
cFJvb3RCYWNrZ3JvdW5kKTsKICAgICAgICAgZWxzZSBpZiAobG9jYWxQYWludEZsYWdzICYgUGFp
bnRMYXllclBhaW50aW5nUm9vdEJhY2tncm91bmRPbmx5KQotICAgICAgICAgICAgcGFpbnRCZWhh
dmlvciB8PSBQYWludEJlaGF2aW9yOjpSb290QmFja2dyb3VuZE9ubHk7CisgICAgICAgICAgICBw
YWludEJlaGF2aW9yLmFkZChQYWludEJlaGF2aW9yOjpSb290QmFja2dyb3VuZE9ubHkpOwogCiAg
ICAgICAgIGlmIChwYWludGluZ0luZm8ucGFpbnRCZWhhdmlvciAmIFBhaW50QmVoYXZpb3I6OkZs
YXR0ZW5Db21wb3NpdGluZ0xheWVycykKLSAgICAgICAgICAgIHBhaW50QmVoYXZpb3IgfD0gUGFp
bnRCZWhhdmlvcjo6RmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzOworICAgICAgICAgICAgcGFpbnRC
ZWhhdmlvci5hZGQoUGFpbnRCZWhhdmlvcjo6RmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzKTsKICAg
ICAgICAgCiAgICAgICAgIGlmIChwYWludGluZ0luZm8ucGFpbnRCZWhhdmlvciAmIFBhaW50QmVo
YXZpb3I6OlNuYXBzaG90dGluZykKLSAgICAgICAgICAgIHBhaW50QmVoYXZpb3IgfD0gUGFpbnRC
ZWhhdmlvcjo6U25hcHNob3R0aW5nOworICAgICAgICAgICAgcGFpbnRCZWhhdmlvci5hZGQoUGFp
bnRCZWhhdmlvcjo6U25hcHNob3R0aW5nKTsKICAgICAgICAgCiAgICAgICAgIGlmICgocGFpbnRp
bmdJbmZvLnBhaW50QmVoYXZpb3IgJiBQYWludEJlaGF2aW9yOjpUaWxlRmlyc3RQYWludCkgJiYg
aXNSZW5kZXJWaWV3TGF5ZXIoKSkKLSAgICAgICAgICAgIHBhaW50QmVoYXZpb3IgfD0gUGFpbnRC
ZWhhdmlvcjo6VGlsZUZpcnN0UGFpbnQ7CisgICAgICAgICAgICBwYWludEJlaGF2aW9yLmFkZChQ
YWludEJlaGF2aW9yOjpUaWxlRmlyc3RQYWludCk7CiAKICAgICAgICAgaWYgKHBhaW50aW5nSW5m
by5wYWludEJlaGF2aW9yICYgUGFpbnRCZWhhdmlvcjo6RXhjbHVkZVNlbGVjdGlvbikKLSAgICAg
ICAgICAgIHBhaW50QmVoYXZpb3IgfD0gUGFpbnRCZWhhdmlvcjo6RXhjbHVkZVNlbGVjdGlvbjsK
KyAgICAgICAgICAgIHBhaW50QmVoYXZpb3IuYWRkKFBhaW50QmVoYXZpb3I6OkV4Y2x1ZGVTZWxl
Y3Rpb24pOwogCiAgICAgICAgIExheW91dFJlY3QgcGFpbnREaXJ0eVJlY3QgPSBsb2NhbFBhaW50
aW5nSW5mby5wYWludERpcnR5UmVjdDsKICAgICAgICAgaWYgKHNob3VsZFBhaW50Q29udGVudCB8
fCBzaG91bGRQYWludE91dGxpbmUgfHwgaXNQYWludGluZ092ZXJsYXlTY3JvbGxiYXJzKSB7CkBA
IC00NDM4LDEzICs0NDM4LDEzIEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJDb250ZW50
cyhHcmEKICAgICBpZiAoc2hvdWxkUGFpbnRDb250ZW50ICYmICEoc2VsZWN0aW9uT25seSB8fCBz
ZWxlY3Rpb25BbmRCYWNrZ3JvdW5kc09ubHkpKSB7CiAgICAgICAgIE9wdGlvblNldDxQYWludEJl
aGF2aW9yPiBwYWludEJlaGF2aW9yID0gUGFpbnRCZWhhdmlvcjo6Tm9ybWFsOwogICAgICAgICBp
ZiAocGFpbnRpbmdJbmZvLnBhaW50QmVoYXZpb3IgJiBQYWludEJlaGF2aW9yOjpGbGF0dGVuQ29t
cG9zaXRpbmdMYXllcnMpCi0gICAgICAgICAgICBwYWludEJlaGF2aW9yIHw9IFBhaW50QmVoYXZp
b3I6OkZsYXR0ZW5Db21wb3NpdGluZ0xheWVyczsKKyAgICAgICAgICAgIHBhaW50QmVoYXZpb3Iu
YWRkKFBhaW50QmVoYXZpb3I6OkZsYXR0ZW5Db21wb3NpdGluZ0xheWVycyk7CiAgICAgICAgIAog
ICAgICAgICBpZiAocGFpbnRpbmdJbmZvLnBhaW50QmVoYXZpb3IgJiBQYWludEJlaGF2aW9yOjpT
bmFwc2hvdHRpbmcpCi0gICAgICAgICAgICBwYWludEJlaGF2aW9yIHw9IFBhaW50QmVoYXZpb3I6
OlNuYXBzaG90dGluZzsKKyAgICAgICAgICAgIHBhaW50QmVoYXZpb3IuYWRkKFBhaW50QmVoYXZp
b3I6OlNuYXBzaG90dGluZyk7CiAgICAgICAgIAogICAgICAgICBpZiAocGFpbnRpbmdJbmZvLnBh
aW50QmVoYXZpb3IgJiBQYWludEJlaGF2aW9yOjpUaWxlRmlyc3RQYWludCkKLSAgICAgICAgICAg
IHBhaW50QmVoYXZpb3IgfD0gUGFpbnRCZWhhdmlvcjo6VGlsZUZpcnN0UGFpbnQ7CisgICAgICAg
ICAgICBwYWludEJlaGF2aW9yLmFkZChQYWludEJlaGF2aW9yOjpUaWxlRmlyc3RQYWludCk7CiAK
ICAgICAgICAgaWYgKHNob3VsZFBhaW50TWFzayhwYWludGluZ0luZm8ucGFpbnRCZWhhdmlvciwg
bG9jYWxQYWludEZsYWdzKSkgewogICAgICAgICAgICAgLy8gUGFpbnQgdGhlIG1hc2sgZm9yIHRo
ZSBmcmFnbWVudHMuCkBAIC00NzcwLDEzICs0NzcwLDEzIEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBh
aW50Rm9yZWdyb3VuZEZvckZyYWcKICAgICAgICAgbG9jYWxQYWludEJlaGF2aW9yID0gcGFpbnRC
ZWhhdmlvcjsKIAogICAgIGlmIChsb2NhbFBhaW50aW5nSW5mby5wYWludEJlaGF2aW9yICYgUGFp
bnRCZWhhdmlvcjo6RXhjbHVkZVNlbGVjdGlvbikKLSAgICAgICAgbG9jYWxQYWludEJlaGF2aW9y
IHw9IFBhaW50QmVoYXZpb3I6OkV4Y2x1ZGVTZWxlY3Rpb247CisgICAgICAgIGxvY2FsUGFpbnRC
ZWhhdmlvci5hZGQoUGFpbnRCZWhhdmlvcjo6RXhjbHVkZVNlbGVjdGlvbik7CiAgICAgCiAgICAg
aWYgKGxvY2FsUGFpbnRpbmdJbmZvLnBhaW50QmVoYXZpb3IgJiBQYWludEJlaGF2aW9yOjpTbmFw
c2hvdHRpbmcpCi0gICAgICAgIGxvY2FsUGFpbnRCZWhhdmlvciB8PSBQYWludEJlaGF2aW9yOjpT
bmFwc2hvdHRpbmc7CisgICAgICAgIGxvY2FsUGFpbnRCZWhhdmlvci5hZGQoUGFpbnRCZWhhdmlv
cjo6U25hcHNob3R0aW5nKTsKICAgICAKICAgICBpZiAobG9jYWxQYWludGluZ0luZm8ucGFpbnRC
ZWhhdmlvciAmIFBhaW50QmVoYXZpb3I6OlRpbGVGaXJzdFBhaW50KQotICAgICAgICBsb2NhbFBh
aW50QmVoYXZpb3IgfD0gUGFpbnRCZWhhdmlvcjo6VGlsZUZpcnN0UGFpbnQ7CisgICAgICAgIGxv
Y2FsUGFpbnRCZWhhdmlvci5hZGQoUGFpbnRCZWhhdmlvcjo6VGlsZUZpcnN0UGFpbnQpOwogCiAg
ICAgLy8gT3B0aW1pemUgY2xpcHBpbmcgZm9yIHRoZSBzaW5nbGUgZnJhZ21lbnQgY2FzZS4KICAg
ICBib29sIHNob3VsZENsaXAgPSBsb2NhbFBhaW50aW5nSW5mby5jbGlwVG9EaXJ0eVJlY3QgJiYg
bGF5ZXJGcmFnbWVudHMuc2l6ZSgpID09IDEgJiYgbGF5ZXJGcmFnbWVudHNbMF0uc2hvdWxkUGFp
bnRDb250ZW50ICYmICFsYXllckZyYWdtZW50c1swXS5mb3JlZ3JvdW5kUmVjdC5pc0VtcHR5KCk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5n
LmNwcAkocmV2aXNpb24gMjM1NTM5KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyQmFja2luZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1MzQsMjQgKzI1MzQsMjQgQEAg
dm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnBhaW50SW50b0xheWVyKAogCiAgICAgT3B0aW9uU2V0
PFJlbmRlckxheWVyOjpQYWludExheWVyRmxhZz4gcGFpbnRGbGFnczsKICAgICBpZiAocGFpbnRp
bmdQaGFzZSAmIEdyYXBoaWNzTGF5ZXJQYWludEJhY2tncm91bmQpCi0gICAgICAgIHBhaW50Rmxh
Z3MgfD0gUmVuZGVyTGF5ZXI6OlBhaW50TGF5ZXJQYWludGluZ0NvbXBvc2l0aW5nQmFja2dyb3Vu
ZFBoYXNlOworICAgICAgICBwYWludEZsYWdzLmFkZChSZW5kZXJMYXllcjo6UGFpbnRMYXllclBh
aW50aW5nQ29tcG9zaXRpbmdCYWNrZ3JvdW5kUGhhc2UpOwogICAgIGlmIChwYWludGluZ1BoYXNl
ICYgR3JhcGhpY3NMYXllclBhaW50Rm9yZWdyb3VuZCkKLSAgICAgICAgcGFpbnRGbGFncyB8PSBS
ZW5kZXJMYXllcjo6UGFpbnRMYXllclBhaW50aW5nQ29tcG9zaXRpbmdGb3JlZ3JvdW5kUGhhc2U7
CisgICAgICAgIHBhaW50RmxhZ3MuYWRkKFJlbmRlckxheWVyOjpQYWludExheWVyUGFpbnRpbmdD
b21wb3NpdGluZ0ZvcmVncm91bmRQaGFzZSk7CiAgICAgaWYgKHBhaW50aW5nUGhhc2UgJiBHcmFw
aGljc0xheWVyUGFpbnRNYXNrKQotICAgICAgICBwYWludEZsYWdzIHw9IFJlbmRlckxheWVyOjpQ
YWludExheWVyUGFpbnRpbmdDb21wb3NpdGluZ01hc2tQaGFzZTsKKyAgICAgICAgcGFpbnRGbGFn
cy5hZGQoUmVuZGVyTGF5ZXI6OlBhaW50TGF5ZXJQYWludGluZ0NvbXBvc2l0aW5nTWFza1BoYXNl
KTsKICAgICBpZiAocGFpbnRpbmdQaGFzZSAmIEdyYXBoaWNzTGF5ZXJQYWludENsaXBQYXRoKQot
ICAgICAgICBwYWludEZsYWdzIHw9IFJlbmRlckxheWVyOjpQYWludExheWVyUGFpbnRpbmdDb21w
b3NpdGluZ0NsaXBQYXRoUGhhc2U7CisgICAgICAgIHBhaW50RmxhZ3MuYWRkKFJlbmRlckxheWVy
OjpQYWludExheWVyUGFpbnRpbmdDb21wb3NpdGluZ0NsaXBQYXRoUGhhc2UpOwogICAgIGlmIChw
YWludGluZ1BoYXNlICYgR3JhcGhpY3NMYXllclBhaW50Q2hpbGRDbGlwcGluZ01hc2spCi0gICAg
ICAgIHBhaW50RmxhZ3MgfD0gUmVuZGVyTGF5ZXI6OlBhaW50TGF5ZXJQYWludGluZ0NoaWxkQ2xp
cHBpbmdNYXNrUGhhc2U7CisgICAgICAgIHBhaW50RmxhZ3MuYWRkKFJlbmRlckxheWVyOjpQYWlu
dExheWVyUGFpbnRpbmdDaGlsZENsaXBwaW5nTWFza1BoYXNlKTsKICAgICBpZiAocGFpbnRpbmdQ
aGFzZSAmIEdyYXBoaWNzTGF5ZXJQYWludE92ZXJmbG93Q29udGVudHMpCi0gICAgICAgIHBhaW50
RmxhZ3MgfD0gUmVuZGVyTGF5ZXI6OlBhaW50TGF5ZXJQYWludGluZ092ZXJmbG93Q29udGVudHM7
CisgICAgICAgIHBhaW50RmxhZ3MuYWRkKFJlbmRlckxheWVyOjpQYWludExheWVyUGFpbnRpbmdP
dmVyZmxvd0NvbnRlbnRzKTsKICAgICBpZiAocGFpbnRpbmdQaGFzZSAmIEdyYXBoaWNzTGF5ZXJQ
YWludENvbXBvc2l0ZWRTY3JvbGwpCi0gICAgICAgIHBhaW50RmxhZ3MgfD0gUmVuZGVyTGF5ZXI6
OlBhaW50TGF5ZXJQYWludGluZ0NvbXBvc2l0aW5nU2Nyb2xsaW5nUGhhc2U7CisgICAgICAgIHBh
aW50RmxhZ3MuYWRkKFJlbmRlckxheWVyOjpQYWludExheWVyUGFpbnRpbmdDb21wb3NpdGluZ1Nj
cm9sbGluZ1BoYXNlKTsKIAogICAgIGlmIChncmFwaGljc0xheWVyID09IG1fYmFja2dyb3VuZExh
eWVyLmdldCgpICYmIG1fYmFja2dyb3VuZExheWVyUGFpbnRzRml4ZWRSb290QmFja2dyb3VuZCkK
LSAgICAgICAgcGFpbnRGbGFncyB8PSB7IFJlbmRlckxheWVyOjpQYWludExheWVyUGFpbnRpbmdS
b290QmFja2dyb3VuZE9ubHksIFJlbmRlckxheWVyOjpQYWludExheWVyUGFpbnRpbmdDb21wb3Np
dGluZ0ZvcmVncm91bmRQaGFzZSB9OyAvLyBOZWVkIFBhaW50TGF5ZXJQYWludGluZ0NvbXBvc2l0
aW5nRm9yZWdyb3VuZFBoYXNlIHRvIHdhbGsgY2hpbGQgbGF5ZXJzLgorICAgICAgICBwYWludEZs
YWdzLmFkZCh7IFJlbmRlckxheWVyOjpQYWludExheWVyUGFpbnRpbmdSb290QmFja2dyb3VuZE9u
bHksIFJlbmRlckxheWVyOjpQYWludExheWVyUGFpbnRpbmdDb21wb3NpdGluZ0ZvcmVncm91bmRQ
aGFzZSB9KTsgLy8gTmVlZCBQYWludExheWVyUGFpbnRpbmdDb21wb3NpdGluZ0ZvcmVncm91bmRQ
aGFzZSB0byB3YWxrIGNoaWxkIGxheWVycy4KICAgICBlbHNlIGlmIChjb21wb3NpdG9yKCkuZml4
ZWRSb290QmFja2dyb3VuZExheWVyKCkpCi0gICAgICAgIHBhaW50RmxhZ3MgfD0gUmVuZGVyTGF5
ZXI6OlBhaW50TGF5ZXJQYWludGluZ1NraXBSb290QmFja2dyb3VuZDsKKyAgICAgICAgcGFpbnRG
bGFncy5hZGQoUmVuZGVyTGF5ZXI6OlBhaW50TGF5ZXJQYWludGluZ1NraXBSb290QmFja2dyb3Vu
ZCk7CiAKICNpZm5kZWYgTkRFQlVHCiAgICAgUmVuZGVyRWxlbWVudDo6U2V0TGF5b3V0TmVlZGVk
Rm9yYmlkZGVuU2NvcGUgZm9yYmlkU2V0TmVlZHNMYXlvdXQoJnJlbmRlcmVyKCkpOwpAQCAtMjYw
OSwxMCArMjYwOSwxMCBAQCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6cGFpbnRDb250ZW50cyhj
CiAgICAgICAgIC8vIFdlIGhhdmUgdG8gdXNlIHRoZSBzYW1lIHJvb3QgYXMgZm9yIGhpdCB0ZXN0
aW5nLCBiZWNhdXNlIGJvdGggbWV0aG9kcyBjYW4gY29tcHV0ZSBhbmQgY2FjaGUgY2xpcFJlY3Rz
LgogICAgICAgICBPcHRpb25TZXQ8UGFpbnRCZWhhdmlvcj4gYmVoYXZpb3IgPSBQYWludEJlaGF2
aW9yOjpOb3JtYWw7CiAgICAgICAgIGlmIChsYXllclBhaW50QmVoYXZpb3IgPT0gR3JhcGhpY3NM
YXllclBhaW50U25hcHNob3R0aW5nKQotICAgICAgICAgICAgYmVoYXZpb3IgfD0gUGFpbnRCZWhh
dmlvcjo6U25hcHNob3R0aW5nOworICAgICAgICAgICAgYmVoYXZpb3IuYWRkKFBhaW50QmVoYXZp
b3I6OlNuYXBzaG90dGluZyk7CiAgICAgICAgIAogICAgICAgICBpZiAobGF5ZXJQYWludEJlaGF2
aW9yID09IEdyYXBoaWNzTGF5ZXJQYWludEZpcnN0VGlsZVBhaW50KQotICAgICAgICAgICAgYmVo
YXZpb3IgfD0gUGFpbnRCZWhhdmlvcjo6VGlsZUZpcnN0UGFpbnQ7CisgICAgICAgICAgICBiZWhh
dmlvci5hZGQoUGFpbnRCZWhhdmlvcjo6VGlsZUZpcnN0UGFpbnQpOwogCiAgICAgICAgIHBhaW50
SW50b0xheWVyKGdyYXBoaWNzTGF5ZXIsIGNvbnRleHQsIGRpcnR5UmVjdCwgYmVoYXZpb3IsIHBh
aW50aW5nUGhhc2UpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXJDb21wb3NpdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAkocmV2aXNpb24gMjM1NTM5KQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTIxNjQsODkgKzIxNjQsODkgQEAgT3B0aW9uU2V0PENvbXBvc2l0aW5nUmVhc29uPiBSZW5k
ZXJMYXllcgogICAgIGF1dG8mIHJlbmRlcmVyID0gcmVuZGVyZXJGb3JDb21wb3NpdGluZ1Rlc3Rz
KGxheWVyKTsKIAogICAgIGlmIChyZXF1aXJlc0NvbXBvc2l0aW5nRm9yVHJhbnNmb3JtKHJlbmRl
cmVyKSkKLSAgICAgICAgcmVhc29ucyB8PSBDb21wb3NpdGluZ1JlYXNvbjo6VHJhbnNmb3JtM0Q7
CisgICAgICAgIHJlYXNvbnMuYWRkKENvbXBvc2l0aW5nUmVhc29uOjpUcmFuc2Zvcm0zRCk7CiAK
ICAgICBpZiAocmVxdWlyZXNDb21wb3NpdGluZ0ZvclZpZGVvKHJlbmRlcmVyKSkKLSAgICAgICAg
cmVhc29ucyB8PSBDb21wb3NpdGluZ1JlYXNvbjo6VmlkZW87CisgICAgICAgIHJlYXNvbnMuYWRk
KENvbXBvc2l0aW5nUmVhc29uOjpWaWRlbyk7CiAgICAgZWxzZSBpZiAocmVxdWlyZXNDb21wb3Np
dGluZ0ZvckNhbnZhcyhyZW5kZXJlcikpCi0gICAgICAgIHJlYXNvbnMgfD0gQ29tcG9zaXRpbmdS
ZWFzb246OkNhbnZhczsKKyAgICAgICAgcmVhc29ucy5hZGQoQ29tcG9zaXRpbmdSZWFzb246OkNh
bnZhcyk7CiAgICAgZWxzZSBpZiAocmVxdWlyZXNDb21wb3NpdGluZ0ZvclBsdWdpbihyZW5kZXJl
cikpCi0gICAgICAgIHJlYXNvbnMgfD0gQ29tcG9zaXRpbmdSZWFzb246OlBsdWdpbjsKKyAgICAg
ICAgcmVhc29ucy5hZGQoQ29tcG9zaXRpbmdSZWFzb246OlBsdWdpbik7CiAgICAgZWxzZSBpZiAo
cmVxdWlyZXNDb21wb3NpdGluZ0ZvckZyYW1lKHJlbmRlcmVyKSkKLSAgICAgICAgcmVhc29ucyB8
PSBDb21wb3NpdGluZ1JlYXNvbjo6SUZyYW1lOworICAgICAgICByZWFzb25zLmFkZChDb21wb3Np
dGluZ1JlYXNvbjo6SUZyYW1lKTsKIAogICAgIGlmICgoY2FuUmVuZGVyM0RUcmFuc2Zvcm1zKCkg
JiYgcmVuZGVyZXIuc3R5bGUoKS5iYWNrZmFjZVZpc2liaWxpdHkoKSA9PSBCYWNrZmFjZVZpc2li
aWxpdHk6OkhpZGRlbikpCi0gICAgICAgIHJlYXNvbnMgfD0gQ29tcG9zaXRpbmdSZWFzb246OkJh
Y2tmYWNlVmlzaWJpbGl0eUhpZGRlbjsKKyAgICAgICAgcmVhc29ucy5hZGQoQ29tcG9zaXRpbmdS
ZWFzb246OkJhY2tmYWNlVmlzaWJpbGl0eUhpZGRlbik7CiAKICAgICBpZiAoY2xpcHNDb21wb3Np
dGluZ0Rlc2NlbmRhbnRzKCpyZW5kZXJlci5sYXllcigpKSkKLSAgICAgICAgcmVhc29ucyB8PSBD
b21wb3NpdGluZ1JlYXNvbjo6Q2xpcHNDb21wb3NpdGluZ0Rlc2NlbmRhbnRzOworICAgICAgICBy
ZWFzb25zLmFkZChDb21wb3NpdGluZ1JlYXNvbjo6Q2xpcHNDb21wb3NpdGluZ0Rlc2NlbmRhbnRz
KTsKIAogICAgIGlmIChyZXF1aXJlc0NvbXBvc2l0aW5nRm9yQW5pbWF0aW9uKHJlbmRlcmVyKSkK
LSAgICAgICAgcmVhc29ucyB8PSBDb21wb3NpdGluZ1JlYXNvbjo6QW5pbWF0aW9uOworICAgICAg
ICByZWFzb25zLmFkZChDb21wb3NpdGluZ1JlYXNvbjo6QW5pbWF0aW9uKTsKIAogICAgIGlmIChy
ZXF1aXJlc0NvbXBvc2l0aW5nRm9yRmlsdGVycyhyZW5kZXJlcikpCi0gICAgICAgIHJlYXNvbnMg
fD0gQ29tcG9zaXRpbmdSZWFzb246OkZpbHRlcnM7CisgICAgICAgIHJlYXNvbnMuYWRkKENvbXBv
c2l0aW5nUmVhc29uOjpGaWx0ZXJzKTsKIAogICAgIGlmIChyZXF1aXJlc0NvbXBvc2l0aW5nRm9y
V2lsbENoYW5nZShyZW5kZXJlcikpCi0gICAgICAgIHJlYXNvbnMgfD0gQ29tcG9zaXRpbmdSZWFz
b246OldpbGxDaGFuZ2U7CisgICAgICAgIHJlYXNvbnMuYWRkKENvbXBvc2l0aW5nUmVhc29uOjpX
aWxsQ2hhbmdlKTsKIAogICAgIGlmIChyZXF1aXJlc0NvbXBvc2l0aW5nRm9yUG9zaXRpb24ocmVu
ZGVyZXIsICpyZW5kZXJlci5sYXllcigpKSkKLSAgICAgICAgcmVhc29ucyB8PSByZW5kZXJlci5p
c0ZpeGVkUG9zaXRpb25lZCgpID8gQ29tcG9zaXRpbmdSZWFzb246OlBvc2l0aW9uRml4ZWQgOiBD
b21wb3NpdGluZ1JlYXNvbjo6UG9zaXRpb25TdGlja3k7CisgICAgICAgIHJlYXNvbnMuYWRkKHJl
bmRlcmVyLmlzRml4ZWRQb3NpdGlvbmVkKCkgPyBDb21wb3NpdGluZ1JlYXNvbjo6UG9zaXRpb25G
aXhlZCA6IENvbXBvc2l0aW5nUmVhc29uOjpQb3NpdGlvblN0aWNreSk7CiAKICNpZiBQTEFURk9S
TShJT1MpCiAgICAgaWYgKHJlcXVpcmVzQ29tcG9zaXRpbmdGb3JTY3JvbGxpbmcoKnJlbmRlcmVy
LmxheWVyKCkpKQotICAgICAgICByZWFzb25zIHw9IENvbXBvc2l0aW5nUmVhc29uOjpPdmVyZmxv
d1Njcm9sbGluZ1RvdWNoOworICAgICAgICByZWFzb25zLmFkZChDb21wb3NpdGluZ1JlYXNvbjo6
T3ZlcmZsb3dTY3JvbGxpbmdUb3VjaCk7CiAjZW5kaWYKIAogICAgIGlmIChyZXF1aXJlc0NvbXBv
c2l0aW5nRm9yT3ZlcmZsb3dTY3JvbGxpbmcoKnJlbmRlcmVyLmxheWVyKCkpKQotICAgICAgICBy
ZWFzb25zIHw9IENvbXBvc2l0aW5nUmVhc29uOjpPdmVyZmxvd1Njcm9sbGluZ1RvdWNoOworICAg
ICAgICByZWFzb25zLmFkZChDb21wb3NpdGluZ1JlYXNvbjo6T3ZlcmZsb3dTY3JvbGxpbmdUb3Vj
aCk7CiAKICAgICBzd2l0Y2ggKHJlbmRlcmVyLmxheWVyKCktPmluZGlyZWN0Q29tcG9zaXRpbmdS
ZWFzb24oKSkgewogICAgIGNhc2UgUmVuZGVyTGF5ZXI6OkluZGlyZWN0Q29tcG9zaXRpbmdSZWFz
b246Ok5vbmU6CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUmVuZGVyTGF5ZXI6OkluZGlyZWN0
Q29tcG9zaXRpbmdSZWFzb246OlN0YWNraW5nOgotICAgICAgICByZWFzb25zIHw9IENvbXBvc2l0
aW5nUmVhc29uOjpTdGFja2luZzsKKyAgICAgICAgcmVhc29ucy5hZGQoQ29tcG9zaXRpbmdSZWFz
b246OlN0YWNraW5nKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBSZW5kZXJMYXllcjo6SW5k
aXJlY3RDb21wb3NpdGluZ1JlYXNvbjo6T3ZlcmxhcDoKLSAgICAgICAgcmVhc29ucyB8PSBDb21w
b3NpdGluZ1JlYXNvbjo6T3ZlcmxhcDsKKyAgICAgICAgcmVhc29ucy5hZGQoQ29tcG9zaXRpbmdS
ZWFzb246Ok92ZXJsYXApOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFJlbmRlckxheWVyOjpJ
bmRpcmVjdENvbXBvc2l0aW5nUmVhc29uOjpCYWNrZ3JvdW5kTGF5ZXI6Ci0gICAgICAgIHJlYXNv
bnMgfD0gQ29tcG9zaXRpbmdSZWFzb246Ok5lZ2F0aXZlWkluZGV4Q2hpbGRyZW47CisgICAgICAg
IHJlYXNvbnMuYWRkKENvbXBvc2l0aW5nUmVhc29uOjpOZWdhdGl2ZVpJbmRleENoaWxkcmVuKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBSZW5kZXJMYXllcjo6SW5kaXJlY3RDb21wb3NpdGlu
Z1JlYXNvbjo6R3JhcGhpY2FsRWZmZWN0OgogICAgICAgICBpZiAocmVuZGVyZXIuaGFzVHJhbnNm
b3JtKCkpCi0gICAgICAgICAgICByZWFzb25zIHw9IENvbXBvc2l0aW5nUmVhc29uOjpUcmFuc2Zv
cm1XaXRoQ29tcG9zaXRlZERlc2NlbmRhbnRzOworICAgICAgICAgICAgcmVhc29ucy5hZGQoQ29t
cG9zaXRpbmdSZWFzb246OlRyYW5zZm9ybVdpdGhDb21wb3NpdGVkRGVzY2VuZGFudHMpOwogCiAg
ICAgICAgIGlmIChyZW5kZXJlci5pc1RyYW5zcGFyZW50KCkpCi0gICAgICAgICAgICByZWFzb25z
IHw9IENvbXBvc2l0aW5nUmVhc29uOjpPcGFjaXR5V2l0aENvbXBvc2l0ZWREZXNjZW5kYW50czsK
KyAgICAgICAgICAgIHJlYXNvbnMuYWRkKENvbXBvc2l0aW5nUmVhc29uOjpPcGFjaXR5V2l0aENv
bXBvc2l0ZWREZXNjZW5kYW50cyk7CiAKICAgICAgICAgaWYgKHJlbmRlcmVyLmhhc01hc2soKSkK
LSAgICAgICAgICAgIHJlYXNvbnMgfD0gQ29tcG9zaXRpbmdSZWFzb246Ok1hc2tXaXRoQ29tcG9z
aXRlZERlc2NlbmRhbnRzOworICAgICAgICAgICAgcmVhc29ucy5hZGQoQ29tcG9zaXRpbmdSZWFz
b246Ok1hc2tXaXRoQ29tcG9zaXRlZERlc2NlbmRhbnRzKTsKIAogICAgICAgICBpZiAocmVuZGVy
ZXIuaGFzUmVmbGVjdGlvbigpKQotICAgICAgICAgICAgcmVhc29ucyB8PSBDb21wb3NpdGluZ1Jl
YXNvbjo6UmVmbGVjdGlvbldpdGhDb21wb3NpdGVkRGVzY2VuZGFudHM7CisgICAgICAgICAgICBy
ZWFzb25zLmFkZChDb21wb3NpdGluZ1JlYXNvbjo6UmVmbGVjdGlvbldpdGhDb21wb3NpdGVkRGVz
Y2VuZGFudHMpOwogCiAgICAgICAgIGlmIChyZW5kZXJlci5oYXNGaWx0ZXIoKSB8fCByZW5kZXJl
ci5oYXNCYWNrZHJvcEZpbHRlcigpKQotICAgICAgICAgICAgcmVhc29ucyB8PSBDb21wb3NpdGlu
Z1JlYXNvbjo6RmlsdGVyV2l0aENvbXBvc2l0ZWREZXNjZW5kYW50czsKKyAgICAgICAgICAgIHJl
YXNvbnMuYWRkKENvbXBvc2l0aW5nUmVhc29uOjpGaWx0ZXJXaXRoQ29tcG9zaXRlZERlc2NlbmRh
bnRzKTsKIAogI2lmIEVOQUJMRShDU1NfQ09NUE9TSVRJTkcpCiAgICAgICAgIGlmIChsYXllci5p
c29sYXRlc0NvbXBvc2l0ZWRCbGVuZGluZygpKQotICAgICAgICAgICAgcmVhc29ucyB8PSBDb21w
b3NpdGluZ1JlYXNvbjo6SXNvbGF0ZXNDb21wb3NpdGVkQmxlbmRpbmdEZXNjZW5kYW50czsKKyAg
ICAgICAgICAgIHJlYXNvbnMuYWRkKENvbXBvc2l0aW5nUmVhc29uOjpJc29sYXRlc0NvbXBvc2l0
ZWRCbGVuZGluZ0Rlc2NlbmRhbnRzKTsKIAogICAgICAgICBpZiAobGF5ZXIuaGFzQmxlbmRNb2Rl
KCkpCi0gICAgICAgICAgICByZWFzb25zIHw9IENvbXBvc2l0aW5nUmVhc29uOjpCbGVuZGluZ1dp
dGhDb21wb3NpdGVkRGVzY2VuZGFudHM7CisgICAgICAgICAgICByZWFzb25zLmFkZChDb21wb3Np
dGluZ1JlYXNvbjo6QmxlbmRpbmdXaXRoQ29tcG9zaXRlZERlc2NlbmRhbnRzKTsKICNlbmRpZgog
ICAgICAgICBicmVhazsKICAgICBjYXNlIFJlbmRlckxheWVyOjpJbmRpcmVjdENvbXBvc2l0aW5n
UmVhc29uOjpQZXJzcGVjdGl2ZToKLSAgICAgICAgcmVhc29ucyB8PSBDb21wb3NpdGluZ1JlYXNv
bjo6UGVyc3BlY3RpdmU7CisgICAgICAgIHJlYXNvbnMuYWRkKENvbXBvc2l0aW5nUmVhc29uOjpQ
ZXJzcGVjdGl2ZSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUmVuZGVyTGF5ZXI6OkluZGly
ZWN0Q29tcG9zaXRpbmdSZWFzb246OlByZXNlcnZlM0Q6Ci0gICAgICAgIHJlYXNvbnMgfD0gQ29t
cG9zaXRpbmdSZWFzb246OlByZXNlcnZlM0Q7CisgICAgICAgIHJlYXNvbnMuYWRkKENvbXBvc2l0
aW5nUmVhc29uOjpQcmVzZXJ2ZTNEKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgaWYg
KGluQ29tcG9zaXRpbmdNb2RlKCkgJiYgcmVuZGVyZXIubGF5ZXIoKS0+aXNSZW5kZXJWaWV3TGF5
ZXIoKSkKLSAgICAgICAgcmVhc29ucyB8PSBDb21wb3NpdGluZ1JlYXNvbjo6Um9vdDsKKyAgICAg
ICAgcmVhc29ucy5hZGQoQ29tcG9zaXRpbmdSZWFzb246OlJvb3QpOwogCiAgICAgcmV0dXJuIHJl
YXNvbnM7CiB9CkBAIC0zNjI1LDEwICszNjI1LDEwIEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3Np
dG9yOjp1cGRhdGVTY3JvbGwKIHsKICAgICBPcHRpb25TZXQ8TGF5ZXJTY3JvbGxDb29yZGluYXRp
b25Sb2xlPiBjb29yZGluYXRpb25Sb2xlczsKICAgICBpZiAoaXNWaWV3cG9ydENvbnN0cmFpbmVk
Rml4ZWRPclN0aWNreUxheWVyKGxheWVyKSkKLSAgICAgICAgY29vcmRpbmF0aW9uUm9sZXMgfD0g
Vmlld3BvcnRDb25zdHJhaW5lZDsKKyAgICAgICAgY29vcmRpbmF0aW9uUm9sZXMuYWRkKFZpZXdw
b3J0Q29uc3RyYWluZWQpOwogCiAgICAgaWYgKHVzZUNvb3JkaW5hdGVkU2Nyb2xsaW5nRm9yTGF5
ZXIobGF5ZXIpKQotICAgICAgICBjb29yZGluYXRpb25Sb2xlcyB8PSBTY3JvbGxpbmc7CisgICAg
ICAgIGNvb3JkaW5hdGlvblJvbGVzLmFkZChTY3JvbGxpbmcpOwogCiAgICAgaWYgKGxheWVyLmlz
Q29tcG9zaXRlZCgpKQogICAgICAgICBsYXllci5iYWNraW5nKCktPnNldElzU2Nyb2xsQ29vcmRp
bmF0ZWRXaXRoVmlld3BvcnRDb25zdHJhaW5lZFJvbGUoY29vcmRpbmF0aW9uUm9sZXMuY29udGFp
bnMoVmlld3BvcnRDb25zdHJhaW5lZCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1RleHREZWNvcmF0aW9uUGFpbnRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1RleHREZWNvcmF0aW9uUGFpbnRlci5jcHAJKHJldmlzaW9uIDIzNTUzOSkKKysr
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBhaW50ZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zODMsMTcgKzM4MywxNyBAQCBzdGF0aWMgdm9pZCBjb2xsZWN0U3R5bGVz
Rm9yUmVuZGVyZXIoVGV4CiAgICAgICAgIGF1dG8gZGVjb3JhdGlvblN0eWxlID0gc3R5bGUudGV4
dERlY29yYXRpb25TdHlsZSgpOwogCiAgICAgICAgIGlmIChkZWNvcmF0aW9ucy5jb250YWlucyhU
ZXh0RGVjb3JhdGlvbjo6VW5kZXJsaW5lKSkgewotICAgICAgICAgICAgcmVtYWluaW5nRGVjb3Jh
dGlvbnMgLT0gVGV4dERlY29yYXRpb246OlVuZGVybGluZTsKKyAgICAgICAgICAgIHJlbWFpbmlu
Z0RlY29yYXRpb25zLnJlbW92ZShUZXh0RGVjb3JhdGlvbjo6VW5kZXJsaW5lKTsKICAgICAgICAg
ICAgIHJlc3VsdC51bmRlcmxpbmVDb2xvciA9IGNvbG9yOwogICAgICAgICAgICAgcmVzdWx0LnVu
ZGVybGluZVN0eWxlID0gZGVjb3JhdGlvblN0eWxlOwogICAgICAgICB9CiAgICAgICAgIGlmIChk
ZWNvcmF0aW9ucy5jb250YWlucyhUZXh0RGVjb3JhdGlvbjo6T3ZlcmxpbmUpKSB7Ci0gICAgICAg
ICAgICByZW1haW5pbmdEZWNvcmF0aW9ucyAtPSBUZXh0RGVjb3JhdGlvbjo6T3ZlcmxpbmU7Cisg
ICAgICAgICAgICByZW1haW5pbmdEZWNvcmF0aW9ucy5yZW1vdmUoVGV4dERlY29yYXRpb246Ok92
ZXJsaW5lKTsKICAgICAgICAgICAgIHJlc3VsdC5vdmVybGluZUNvbG9yID0gY29sb3I7CiAgICAg
ICAgICAgICByZXN1bHQub3ZlcmxpbmVTdHlsZSA9IGRlY29yYXRpb25TdHlsZTsKICAgICAgICAg
fQogICAgICAgICBpZiAoZGVjb3JhdGlvbnMuY29udGFpbnMoVGV4dERlY29yYXRpb246OkxpbmVU
aHJvdWdoKSkgewotICAgICAgICAgICAgcmVtYWluaW5nRGVjb3JhdGlvbnMgLT0gVGV4dERlY29y
YXRpb246OkxpbmVUaHJvdWdoOworICAgICAgICAgICAgcmVtYWluaW5nRGVjb3JhdGlvbnMucmVt
b3ZlKFRleHREZWNvcmF0aW9uOjpMaW5lVGhyb3VnaCk7CiAgICAgICAgICAgICByZXN1bHQubGlu
ZXRocm91Z2hDb2xvciA9IGNvbG9yOwogICAgICAgICAgICAgcmVzdWx0LmxpbmV0aHJvdWdoU3R5
bGUgPSBkZWNvcmF0aW9uU3R5bGU7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9UZXh0UGFpbnRTdHlsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1RleHRQYWludFN0eWxlLmNwcAkocmV2aXNpb24gMjM1NTM5KQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWludFN0eWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTAwLDcgKzEwMCw3IEBAIFRleHRQYWludFN0eWxlIGNvbXB1dGVUZXh0UGFpbnRTdHlsZShjb24K
ICAgICAgICAgaWYgKHBhZ2UgJiYgcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuaXNBY3RpdmUoKSkg
ewogICAgICAgICAgICAgT3B0aW9uU2V0PFN0eWxlQ29sb3I6Ok9wdGlvbnM+IG9wdGlvbnM7CiAg
ICAgICAgICAgICBpZiAocGFnZS0+dXNlU3lzdGVtQXBwZWFyYW5jZSgpKQotICAgICAgICAgICAg
ICAgIG9wdGlvbnMgfD0gU3R5bGVDb2xvcjo6T3B0aW9uczo6VXNlU3lzdGVtQXBwZWFyYW5jZTsK
KyAgICAgICAgICAgICAgICBvcHRpb25zLmFkZChTdHlsZUNvbG9yOjpPcHRpb25zOjpVc2VTeXN0
ZW1BcHBlYXJhbmNlKTsKICAgICAgICAgICAgIHBhaW50U3R5bGUuZmlsbENvbG9yID0gUmVuZGVy
VGhlbWU6OnNpbmdsZXRvbigpLnN5c3RlbUNvbG9yKENTU1ZhbHVlQWN0aXZlYnV0dG9udGV4dCwg
b3B0aW9ucyk7CiAgICAgICAgICAgICByZXR1cm4gcGFpbnRTdHlsZTsKICAgICAgICAgfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCShy
ZXZpc2lvbiAyMzU1MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVy
U3R5bGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MTMsNyArNjEzLDcgQEAgYm9vbCBSZW5kZXJT
dHlsZTo6Y2hhbmdlUmVxdWlyZXNMYXlvdXQoYwogICAgICAgICAgICAgaWYgKG1fcmFyZU5vbklu
aGVyaXRlZERhdGEtPnRyYW5zZm9ybS0+aGFzVHJhbnNmb3JtKCkgIT0gb3RoZXIubV9yYXJlTm9u
SW5oZXJpdGVkRGF0YS0+dHJhbnNmb3JtLT5oYXNUcmFuc2Zvcm0oKSkKICAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIGlmICgqbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+
dHJhbnNmb3JtICE9ICpvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT50cmFuc2Zvcm0pIHsK
LSAgICAgICAgICAgICAgICBjaGFuZ2VkQ29udGV4dFNlbnNpdGl2ZVByb3BlcnRpZXMgfD0gU3R5
bGVEaWZmZXJlbmNlQ29udGV4dFNlbnNpdGl2ZVByb3BlcnR5OjpUcmFuc2Zvcm07CisgICAgICAg
ICAgICAgICAgY2hhbmdlZENvbnRleHRTZW5zaXRpdmVQcm9wZXJ0aWVzLmFkZChTdHlsZURpZmZl
cmVuY2VDb250ZXh0U2Vuc2l0aXZlUHJvcGVydHk6OlRyYW5zZm9ybSk7CiAgICAgICAgICAgICAg
ICAgLy8gRG9uJ3QgcmV0dXJuOyBrZWVwIGxvb2tpbmcgZm9yIGFub3RoZXIgY2hhbmdlCiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KQEAgLTYyOSw3ICs2MjksNyBAQCBib29sIFJlbmRlclN0eWxl
OjpjaGFuZ2VSZXF1aXJlc0xheW91dChjCiAjZW5kaWYKIAogICAgICAgICBpZiAoIWFyZVBvaW50
aW5nVG9FcXVhbERhdGEobV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+d2lsbENoYW5nZSwgb3RoZXIu
bV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+d2lsbENoYW5nZSkpIHsKLSAgICAgICAgICAgIGNoYW5n
ZWRDb250ZXh0U2Vuc2l0aXZlUHJvcGVydGllcyB8PSBTdHlsZURpZmZlcmVuY2VDb250ZXh0U2Vu
c2l0aXZlUHJvcGVydHk6OldpbGxDaGFuZ2U7CisgICAgICAgICAgICBjaGFuZ2VkQ29udGV4dFNl
bnNpdGl2ZVByb3BlcnRpZXMuYWRkKFN0eWxlRGlmZmVyZW5jZUNvbnRleHRTZW5zaXRpdmVQcm9w
ZXJ0eTo6V2lsbENoYW5nZSk7CiAgICAgICAgICAgICAvLyBEb24ndCByZXR1cm47IGtlZXAgbG9v
a2luZyBmb3IgYW5vdGhlciBjaGFuZ2UKICAgICAgICAgfQogICAgIH0KQEAgLTg0OSw3ICs4NDks
NyBAQCBib29sIFJlbmRlclN0eWxlOjpjaGFuZ2VSZXF1aXJlc0xheWVyUmVwCiAKICAgICBpZiAo
cG9zaXRpb24oKSAhPSBQb3NpdGlvblR5cGU6OlN0YXRpYykgewogICAgICAgICBpZiAobV92aXN1
YWxEYXRhLT5jbGlwICE9IG90aGVyLm1fdmlzdWFsRGF0YS0+Y2xpcCB8fCBtX3Zpc3VhbERhdGEt
Pmhhc0NsaXAgIT0gb3RoZXIubV92aXN1YWxEYXRhLT5oYXNDbGlwKSB7Ci0gICAgICAgICAgICBj
aGFuZ2VkQ29udGV4dFNlbnNpdGl2ZVByb3BlcnRpZXMgfD0gU3R5bGVEaWZmZXJlbmNlQ29udGV4
dFNlbnNpdGl2ZVByb3BlcnR5OjpDbGlwUmVjdDsKKyAgICAgICAgICAgIGNoYW5nZWRDb250ZXh0
U2Vuc2l0aXZlUHJvcGVydGllcy5hZGQoU3R5bGVEaWZmZXJlbmNlQ29udGV4dFNlbnNpdGl2ZVBy
b3BlcnR5OjpDbGlwUmVjdCk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQog
ICAgIH0KQEAgLTg2MCwxOCArODYwLDE4IEBAIGJvb2wgUmVuZGVyU3R5bGU6OmNoYW5nZVJlcXVp
cmVzTGF5ZXJSZXAKICNlbmRpZgogCiAgICAgaWYgKG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPm9w
YWNpdHkgIT0gb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+b3BhY2l0eSkgewotICAgICAg
ICBjaGFuZ2VkQ29udGV4dFNlbnNpdGl2ZVByb3BlcnRpZXMgfD0gU3R5bGVEaWZmZXJlbmNlQ29u
dGV4dFNlbnNpdGl2ZVByb3BlcnR5OjpPcGFjaXR5OworICAgICAgICBjaGFuZ2VkQ29udGV4dFNl
bnNpdGl2ZVByb3BlcnRpZXMuYWRkKFN0eWxlRGlmZmVyZW5jZUNvbnRleHRTZW5zaXRpdmVQcm9w
ZXJ0eTo6T3BhY2l0eSk7CiAgICAgICAgIC8vIERvbid0IHJldHVybjsga2VlcCBsb29raW5nIGZv
ciBhbm90aGVyIGNoYW5nZS4KICAgICB9CiAKICAgICBpZiAobV9yYXJlTm9uSW5oZXJpdGVkRGF0
YS0+ZmlsdGVyICE9IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmZpbHRlcikgewotICAg
ICAgICBjaGFuZ2VkQ29udGV4dFNlbnNpdGl2ZVByb3BlcnRpZXMgfD0gU3R5bGVEaWZmZXJlbmNl
Q29udGV4dFNlbnNpdGl2ZVByb3BlcnR5OjpGaWx0ZXI7CisgICAgICAgIGNoYW5nZWRDb250ZXh0
U2Vuc2l0aXZlUHJvcGVydGllcy5hZGQoU3R5bGVEaWZmZXJlbmNlQ29udGV4dFNlbnNpdGl2ZVBy
b3BlcnR5OjpGaWx0ZXIpOwogICAgICAgICAvLyBEb24ndCByZXR1cm47IGtlZXAgbG9va2luZyBm
b3IgYW5vdGhlciBjaGFuZ2UuCiAgICAgfQogCiAjaWYgRU5BQkxFKEZJTFRFUlNfTEVWRUxfMikK
ICAgICBpZiAobV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+YmFja2Ryb3BGaWx0ZXIgIT0gb3RoZXIu
bV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+YmFja2Ryb3BGaWx0ZXIpIHsKLSAgICAgICAgY2hhbmdl
ZENvbnRleHRTZW5zaXRpdmVQcm9wZXJ0aWVzIHw9IFN0eWxlRGlmZmVyZW5jZUNvbnRleHRTZW5z
aXRpdmVQcm9wZXJ0eTo6RmlsdGVyOworICAgICAgICBjaGFuZ2VkQ29udGV4dFNlbnNpdGl2ZVBy
b3BlcnRpZXMuYWRkKFN0eWxlRGlmZmVyZW5jZUNvbnRleHRTZW5zaXRpdmVQcm9wZXJ0eTo6Rmls
dGVyKTsKICAgICAgICAgLy8gRG9uJ3QgcmV0dXJuOyBrZWVwIGxvb2tpbmcgZm9yIGFub3RoZXIg
Y2hhbmdlLgogICAgIH0KICNlbmRpZgpAQCAtOTIxLDcgKzkyMSw3IEBAIGJvb2wgUmVuZGVyU3R5
bGU6OmNoYW5nZVJlcXVpcmVzUmVwYWludCgKIAogICAgIC8vIEZJWE1FOiB0aGlzIHNob3VsZCBw
cm9iYWJseSBiZSBtb3ZlZCB0byBjaGFuZ2VSZXF1aXJlc0xheWVyUmVwYWludCgpLgogICAgIGlm
IChtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5jbGlwUGF0aCAhPSBvdGhlci5tX3JhcmVOb25Jbmhl
cml0ZWREYXRhLT5jbGlwUGF0aCkgewotICAgICAgICBjaGFuZ2VkQ29udGV4dFNlbnNpdGl2ZVBy
b3BlcnRpZXMgfD0gU3R5bGVEaWZmZXJlbmNlQ29udGV4dFNlbnNpdGl2ZVByb3BlcnR5OjpDbGlw
UGF0aDsKKyAgICAgICAgY2hhbmdlZENvbnRleHRTZW5zaXRpdmVQcm9wZXJ0aWVzLmFkZChTdHls
ZURpZmZlcmVuY2VDb250ZXh0U2Vuc2l0aXZlUHJvcGVydHk6OkNsaXBQYXRoKTsKICAgICAgICAg
Ly8gRG9uJ3QgcmV0dXJuOyBrZWVwIGxvb2tpbmcgZm9yIGFub3RoZXIgY2hhbmdlLgogICAgIH0K
IApJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAkocmV2aXNpb24gMjM1NTM5
KQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yMjQyLDcgKzIyNDIsNyBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8RmluZE9wdGlvbnM+IHBh
cnNlRmluCiAgICAgICAgIGJvb2wgZm91bmQgPSBmYWxzZTsKICAgICAgICAgZm9yIChhdXRvJiBm
bGFnIDogZmxhZ0xpc3QpIHsKICAgICAgICAgICAgIGlmIChmbGFnLm5hbWUgPT0gb3B0aW9uKSB7
Ci0gICAgICAgICAgICAgICAgcmVzdWx0IHw9IGZsYWcudmFsdWU7CisgICAgICAgICAgICAgICAg
cmVzdWx0LmFkZChmbGFnLnZhbHVlKTsKICAgICAgICAgICAgICAgICBmb3VuZCA9IHRydWU7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkBAIC0zMTg5LDcgKzMxODksNyBA
QCB2b2lkIEludGVybmFsczo6Zm9yY2VSZWxvYWQoYm9vbCBlbmRUb0VuCiB7CiAgICAgT3B0aW9u
U2V0PFJlbG9hZE9wdGlvbj4gcmVsb2FkT3B0aW9uczsKICAgICBpZiAoZW5kVG9FbmQpCi0gICAg
ICAgIHJlbG9hZE9wdGlvbnMgfD0gUmVsb2FkT3B0aW9uOjpGcm9tT3JpZ2luOworICAgICAgICBy
ZWxvYWRPcHRpb25zLmFkZChSZWxvYWRPcHRpb246OkZyb21PcmlnaW4pOwogCiAgICAgZnJhbWUo
KS0+bG9hZGVyKCkucmVsb2FkKHJlbG9hZE9wdGlvbnMpOwogfQpAQCAtNDM0Miw5ICs0MzQyLDkg
QEAgdm9pZCBJbnRlcm5hbHM6OnNldFBhZ2VWaXNpYmlsaXR5KGJvb2wgaQogICAgIGF1dG8gc3Rh
dGUgPSBwYWdlLmFjdGl2aXR5U3RhdGUoKTsKIAogICAgIGlmICghaXNWaXNpYmxlKQotICAgICAg
ICBzdGF0ZSAtPSBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGU7CisgICAgICAgIHN0YXRlLnJlbW92
ZShBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUpOwogICAgIGVsc2UKLSAgICAgICAgc3RhdGUgfD0g
QWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlOworICAgICAgICBzdGF0ZS5hZGQoQWN0aXZpdHlTdGF0
ZTo6SXNWaXNpYmxlKTsKIAogICAgIHBhZ2Uuc2V0QWN0aXZpdHlTdGF0ZShzdGF0ZSk7CiB9CkBA
IC00MzU4LDkgKzQzNTgsOSBAQCB2b2lkIEludGVybmFsczo6c2V0UGFnZUlzRm9jdXNlZEFuZEFj
dGl2CiAgICAgYXV0byBzdGF0ZSA9IHBhZ2UuYWN0aXZpdHlTdGF0ZSgpOwogCiAgICAgaWYgKCFp
c0ZvY3VzZWRBbmRBY3RpdmUpCi0gICAgICAgIHN0YXRlIC09IHsgQWN0aXZpdHlTdGF0ZTo6SXNG
b2N1c2VkLCBBY3Rpdml0eVN0YXRlOjpXaW5kb3dJc0FjdGl2ZSB9OworICAgICAgICBzdGF0ZS5y
ZW1vdmUoeyBBY3Rpdml0eVN0YXRlOjpJc0ZvY3VzZWQsIEFjdGl2aXR5U3RhdGU6OldpbmRvd0lz
QWN0aXZlIH0pOwogICAgIGVsc2UKLSAgICAgICAgc3RhdGUgfD0geyBBY3Rpdml0eVN0YXRlOjpJ
c0ZvY3VzZWQsIEFjdGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZlIH07CisgICAgICAgIHN0YXRl
LmFkZCh7IEFjdGl2aXR5U3RhdGU6OklzRm9jdXNlZCwgQWN0aXZpdHlTdGF0ZTo6V2luZG93SXNB
Y3RpdmUgfSk7CiAKICAgICBwYWdlLnNldEFjdGl2aXR5U3RhdGUoc3RhdGUpOwogfQpJbmRleDog
U291cmNlL1dlYkRyaXZlci9TZXNzaW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViRHJp
dmVyL1Nlc3Npb24uY3BwCShyZXZpc2lvbiAyMzU1MzkpCisrKyBTb3VyY2UvV2ViRHJpdmVyL1Nl
c3Npb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTE0LDggKzE1MTQsNyBAQCB2b2lkIFNlc3Np
b246OmVsZW1lbnRDbGljayhjb25zdCBTdHJpbmcmCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBPcHRpb25TZXQ8RWxlbWVudExheW91dE9wdGlvbj4gb3B0aW9ucyA9IEVsZW1lbnRMYXlv
dXRPcHRpb246OlNjcm9sbEludG9WaWV3SWZOZWVkZWQ7Ci0gICAgb3B0aW9ucyB8PSBFbGVtZW50
TGF5b3V0T3B0aW9uOjpVc2VWaWV3cG9ydENvb3JkaW5hdGVzOworICAgIE9wdGlvblNldDxFbGVt
ZW50TGF5b3V0T3B0aW9uPiBvcHRpb25zID0geyBFbGVtZW50TGF5b3V0T3B0aW9uOjpTY3JvbGxJ
bnRvVmlld0lmTmVlZGVkLCBFbGVtZW50TGF5b3V0T3B0aW9uOjpVc2VWaWV3cG9ydENvb3JkaW5h
dGVzIH07CiAgICAgY29tcHV0ZUVsZW1lbnRMYXlvdXQoZWxlbWVudElELCBvcHRpb25zLCBbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBlbGVtZW50SUQsIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKHN0ZDo6b3B0aW9uYWw8UmVjdD4m
JiByZWN0LCBzdGQ6Om9wdGlvbmFsPFBvaW50PiYmIGluVmlld0NlbnRlciwgYm9vbCBpc09ic2N1
cmVkLCBSZWZQdHI8SlNPTjo6T2JqZWN0PiYmIGVycm9yKSBtdXRhYmxlIHsKICAgICAgICAgaWYg
KCFyZWN0IHx8IGVycm9yKSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihDb21tYW5k
UmVzdWx0OjpmYWlsKFdURk1vdmUoZXJyb3IpKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjM1
NTM5KQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSw1OCBAQAorMjAxOC0wOC0zMSAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CisK
KyAgICAgICAgUmVwbGFjZSBPcHRpb25TZXQgfD0gYW5kIC09IG9wZXJhdG9ycyB3aXRoIGFkZCgp
IGFuZCByZW1vdmUoKSBmdW5jdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE4OTE2OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2Nv
YS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6
ZU5ldHdvcmtQcm9jZXNzQ29jb2EpOgorICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRyZWUv
UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24uaDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5
ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyUHJvcGVydGllczo6bm90ZVByb3BlcnRpZXNDaGFuZ2Vk
KToKKyAgICAgICAgKiBTaGFyZWQvV2ViRXZlbnRDb252ZXJzaW9uLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViS2l0MlBsYXRmb3JtTW91c2VFdmVudDo6V2ViS2l0MlBsYXRmb3JtTW91c2VFdmVu
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYktpdDJQbGF0Zm9ybVdoZWVsRXZlbnQ6OldlYktpdDJQ
bGF0Zm9ybVdoZWVsRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJLaXQyUGxhdGZvcm1LZXli
b2FyZEV2ZW50OjpXZWJLaXQyUGxhdGZvcm1LZXlib2FyZEV2ZW50KToKKyAgICAgICAgKFdlYktp
dDo6V2ViS2l0MlBsYXRmb3JtVG91Y2hFdmVudDo6V2ViS2l0MlBsYXRmb3JtVG91Y2hFdmVudCk6
CisgICAgICAgIChXZWJLaXQ6OldlYktpdDJQbGF0Zm9ybUdlc3R1cmVFdmVudDo6V2ViS2l0MlBs
YXRmb3JtR2VzdHVyZUV2ZW50KToKKyAgICAgICAgKiBTaGFyZWQvV2Vic2l0ZVBvbGljaWVzRGF0
YS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVQb2xpY2llc0RhdGE6OmFwcGx5VG9Eb2N1
bWVudExvYWRlcik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHA6CisgICAg
ICAgIChXS1BhZ2VSZWxvYWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1Jlc291cmNl
Q2FjaGVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKHRvV2Vic2l0ZURhdGFUeXBlcyk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZVBvbGljaWVzLmNwcDoKKyAgICAgICAgKFdLV2Vi
c2l0ZVBvbGljaWVzU2V0QWxsb3dlZEF1dG9wbGF5UXVpcmtzKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IHJlbG9hZF0p
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZEludGVy
bmFsLmg6CisgICAgICAgIChXZWJLaXQ6OnRvV2Vic2l0ZURhdGFUeXBlcyk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW06CisgICAgICAgICgtW1dL
V2Vic2l0ZURhdGFTdG9yZSBfZmV0Y2hEYXRhUmVjb3Jkc09mVHlwZXM6d2l0aE9wdGlvbnM6Y29t
cGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJz
aXRlUG9saWNpZXMubW06CisgICAgICAgICgtW19XS1dlYnNpdGVQb2xpY2llcyBzZXRBbGxvd2Vk
QXV0b3BsYXlRdWlya3M6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBs
Lm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6dmlld0RpZE1vdmVUb1dpbmRvdyk6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6dXBkYXRlQWN0aXZpdHlTdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6YWN0aXZpdHlTdGF0ZURpZENoYW5nZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6ZGlzcGF0Y2hBY3Rpdml0eVN0YXRlQ2hhbmdlKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFSZWNvcmQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJzaXRlRGF0YVJlY29yZDo6YWRkKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFS
ZWNvcmQ6OmFkZENvb2tpZUhvc3ROYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFS
ZWNvcmQ6OmFkZFBsdWdpbkRhdGFIb3N0TmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVE
YXRhUmVjb3JkOjphZGRIU1RTQ2FjaGVIb3N0bmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNp
dGVEYXRhUmVjb3JkOjphZGRPcmlnaW5XaXRoQ3JlZGVudGlhbCk6CisgICAgICAgICogVUlQcm9j
ZXNzL21hYy9XS0luc3BlY3RvclZpZXdDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtXS0luc3Bl
Y3RvclZpZXdDb250cm9sbGVyIGluc3BlY3RvcldLV2ViVmlld1JlbG9hZDpdKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUu
Y3BwOgorICAgICAgICAoV2ViS2l0OjppbWFnZUZvclJlY3QpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlOjpyZW5kZXJlZEltYWdlKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAoV2ViS2l0Ojpjb3JlKToKKyAgICAgICAgKFdlYktpdDo6RmluZENvbnRyb2xsZXI6OmZpbmRT
dHJpbmcpOgorCiAyMDE4LTA4LTMxICBGcmVkZXJpYyBXYW5nICA8ZndhbmdAaWdhbGlhLmNvbT4K
IAogICAgICAgICBCdWcgMTgyMDUzIC0gW0NTU09NIFZpZXddIEltcGxlbWVudCBzdGFuZGFyZCBi
ZWhhdmlvciBmb3Igc2Nyb2xsaW5nRWxlbWVudApJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5tbQkocmV2
aXNpb24gMjM1NTM5KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3
b3JrUHJvY2Vzc0NvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMTQsMTIgKzExNCwxMiBAQCB2
b2lkIE5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVOCiAgICAgU2FuZGJveEV4dGVu
c2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KHBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5RXh0
ZW5zaW9uSGFuZGxlKTsKICAgICBPcHRpb25TZXQ8TmV0d29ya0NhY2hlOjpDYWNoZTo6T3B0aW9u
PiBjYWNoZU9wdGlvbnMgeyBOZXR3b3JrQ2FjaGU6OkNhY2hlOjpPcHRpb246OlJlZ2lzdGVyTm90
aWZ5IH07CiAgICAgaWYgKHBhcmFtZXRlcnMuc2hvdWxkRW5hYmxlTmV0d29ya0NhY2hlRWZmaWNh
Y3lMb2dnaW5nKQotICAgICAgICBjYWNoZU9wdGlvbnMgfD0gTmV0d29ya0NhY2hlOjpDYWNoZTo6
T3B0aW9uOjpFZmZpY2FjeUxvZ2dpbmc7CisgICAgICAgIGNhY2hlT3B0aW9ucy5hZGQoTmV0d29y
a0NhY2hlOjpDYWNoZTo6T3B0aW9uOjpFZmZpY2FjeUxvZ2dpbmcpOwogICAgIGlmIChwYXJhbWV0
ZXJzLnNob3VsZFVzZVRlc3RpbmdOZXR3b3JrU2Vzc2lvbikKLSAgICAgICAgY2FjaGVPcHRpb25z
IHw9IE5ldHdvcmtDYWNoZTo6Q2FjaGU6Ok9wdGlvbjo6VGVzdGluZ01vZGU7CisgICAgICAgIGNh
Y2hlT3B0aW9ucy5hZGQoTmV0d29ya0NhY2hlOjpDYWNoZTo6T3B0aW9uOjpUZXN0aW5nTW9kZSk7
CiAjaWYgRU5BQkxFKE5FVFdPUktfQ0FDSEVfU1BFQ1VMQVRJVkVfUkVWQUxJREFUSU9OKQogICAg
IGlmIChwYXJhbWV0ZXJzLnNob3VsZEVuYWJsZU5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlUmV2YWxp
ZGF0aW9uKQotICAgICAgICBjYWNoZU9wdGlvbnMgfD0gTmV0d29ya0NhY2hlOjpDYWNoZTo6T3B0
aW9uOjpTcGVjdWxhdGl2ZVJldmFsaWRhdGlvbjsKKyAgICAgICAgY2FjaGVPcHRpb25zLmFkZChO
ZXR3b3JrQ2FjaGU6OkNhY2hlOjpPcHRpb246OlNwZWN1bGF0aXZlUmV2YWxpZGF0aW9uKTsKICNl
bmRpZgogCiAgICAgbV9jYWNoZSA9IE5ldHdvcmtDYWNoZTo6Q2FjaGU6Om9wZW4obV9kaXNrQ2Fj
aGVEaXJlY3RvcnksIGNhY2hlT3B0aW9ucyk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcAkocmV2aXNp
b24gMjM1NTM5KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQ
cm9jZXNzU291cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMywxMCArMTEzLDEwIEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZU4KIAogICAgIE9wdGlvblNldDxOZXR3
b3JrQ2FjaGU6OkNhY2hlOjpPcHRpb24+IGNhY2hlT3B0aW9ucyB7IE5ldHdvcmtDYWNoZTo6Q2Fj
aGU6Ok9wdGlvbjo6UmVnaXN0ZXJOb3RpZnkgfTsKICAgICBpZiAocGFyYW1ldGVycy5zaG91bGRF
bmFibGVOZXR3b3JrQ2FjaGVFZmZpY2FjeUxvZ2dpbmcpCi0gICAgICAgIGNhY2hlT3B0aW9ucyB8
PSBOZXR3b3JrQ2FjaGU6OkNhY2hlOjpPcHRpb246OkVmZmljYWN5TG9nZ2luZzsKKyAgICAgICAg
Y2FjaGVPcHRpb25zLmFkZChOZXR3b3JrQ2FjaGU6OkNhY2hlOjpPcHRpb246OkVmZmljYWN5TG9n
Z2luZyk7CiAjaWYgRU5BQkxFKE5FVFdPUktfQ0FDSEVfU1BFQ1VMQVRJVkVfUkVWQUxJREFUSU9O
KQogICAgIGlmIChwYXJhbWV0ZXJzLnNob3VsZEVuYWJsZU5ldHdvcmtDYWNoZVNwZWN1bGF0aXZl
UmV2YWxpZGF0aW9uKQotICAgICAgICBjYWNoZU9wdGlvbnMgfD0gTmV0d29ya0NhY2hlOjpDYWNo
ZTo6T3B0aW9uOjpTcGVjdWxhdGl2ZVJldmFsaWRhdGlvbjsKKyAgICAgICAgY2FjaGVPcHRpb25z
LmFkZChOZXR3b3JrQ2FjaGU6OkNhY2hlOjpPcHRpb246OlNwZWN1bGF0aXZlUmV2YWxpZGF0aW9u
KTsKICNlbmRpZgogCiAgICAgbV9jYWNoZSA9IE5ldHdvcmtDYWNoZTo6Q2FjaGU6Om9wZW4obV9k
aXNrQ2FjaGVEaXJlY3RvcnksIGNhY2hlT3B0aW9ucyk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJFdmVudENvbnZlcnNpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkV2ZW50Q29udmVyc2lvbi5jcHAJKHJldmlzaW9uIDIzNTUzOSkKKysrIFNvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkV2ZW50Q29udmVyc2lvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTY5LDE1ICs2OSwxNSBAQCBwdWJsaWM6CiAgICAgICAgIH0KIAogICAgICAgICBpZiAod2ViRXZl
bnQuc2hpZnRLZXkoKSkKLSAgICAgICAgICAgIG1fbW9kaWZpZXJzIHw9IE1vZGlmaWVyOjpTaGlm
dEtleTsKKyAgICAgICAgICAgIG1fbW9kaWZpZXJzLmFkZChNb2RpZmllcjo6U2hpZnRLZXkpOwog
ICAgICAgICBpZiAod2ViRXZlbnQuY29udHJvbEtleSgpKQotICAgICAgICAgICAgbV9tb2RpZmll
cnMgfD0gTW9kaWZpZXI6OkN0cmxLZXk7CisgICAgICAgICAgICBtX21vZGlmaWVycy5hZGQoTW9k
aWZpZXI6OkN0cmxLZXkpOwogICAgICAgICBpZiAod2ViRXZlbnQuYWx0S2V5KCkpCi0gICAgICAg
ICAgICBtX21vZGlmaWVycyB8PSBNb2RpZmllcjo6QWx0S2V5OworICAgICAgICAgICAgbV9tb2Rp
ZmllcnMuYWRkKE1vZGlmaWVyOjpBbHRLZXkpOwogICAgICAgICBpZiAod2ViRXZlbnQubWV0YUtl
eSgpKQotICAgICAgICAgICAgbV9tb2RpZmllcnMgfD0gTW9kaWZpZXI6Ok1ldGFLZXk7CisgICAg
ICAgICAgICBtX21vZGlmaWVycy5hZGQoTW9kaWZpZXI6Ok1ldGFLZXkpOwogICAgICAgICBpZiAo
d2ViRXZlbnQuY2Fwc0xvY2tLZXkoKSkKLSAgICAgICAgICAgIG1fbW9kaWZpZXJzIHw9IE1vZGlm
aWVyOjpDYXBzTG9ja0tleTsKKyAgICAgICAgICAgIG1fbW9kaWZpZXJzLmFkZChNb2RpZmllcjo6
Q2Fwc0xvY2tLZXkpOwogCiAgICAgICAgIG1fdGltZXN0YW1wID0gd2ViRXZlbnQudGltZXN0YW1w
KCk7CiAKQEAgLTEzNiwxNSArMTM2LDE1IEBAIHB1YmxpYzoKICAgICAgICAgbV90eXBlID0gUGxh
dGZvcm1FdmVudDo6V2hlZWw7CiAKICAgICAgICAgaWYgKHdlYkV2ZW50LnNoaWZ0S2V5KCkpCi0g
ICAgICAgICAgICBtX21vZGlmaWVycyB8PSBNb2RpZmllcjo6U2hpZnRLZXk7CisgICAgICAgICAg
ICBtX21vZGlmaWVycy5hZGQoTW9kaWZpZXI6OlNoaWZ0S2V5KTsKICAgICAgICAgaWYgKHdlYkV2
ZW50LmNvbnRyb2xLZXkoKSkKLSAgICAgICAgICAgIG1fbW9kaWZpZXJzIHw9IE1vZGlmaWVyOjpD
dHJsS2V5OworICAgICAgICAgICAgbV9tb2RpZmllcnMuYWRkKE1vZGlmaWVyOjpDdHJsS2V5KTsK
ICAgICAgICAgaWYgKHdlYkV2ZW50LmFsdEtleSgpKQotICAgICAgICAgICAgbV9tb2RpZmllcnMg
fD0gTW9kaWZpZXI6OkFsdEtleTsKKyAgICAgICAgICAgIG1fbW9kaWZpZXJzLmFkZChNb2RpZmll
cjo6QWx0S2V5KTsKICAgICAgICAgaWYgKHdlYkV2ZW50Lm1ldGFLZXkoKSkKLSAgICAgICAgICAg
IG1fbW9kaWZpZXJzIHw9IE1vZGlmaWVyOjpNZXRhS2V5OworICAgICAgICAgICAgbV9tb2RpZmll
cnMuYWRkKE1vZGlmaWVyOjpNZXRhS2V5KTsKICAgICAgICAgaWYgKHdlYkV2ZW50LmNhcHNMb2Nr
S2V5KCkpCi0gICAgICAgICAgICBtX21vZGlmaWVycyB8PSBNb2RpZmllcjo6Q2Fwc0xvY2tLZXk7
CisgICAgICAgICAgICBtX21vZGlmaWVycy5hZGQoTW9kaWZpZXI6OkNhcHNMb2NrS2V5KTsKIAog
ICAgICAgICBtX3RpbWVzdGFtcCA9IHdlYkV2ZW50LnRpbWVzdGFtcCgpOwogCkBAIC0xOTgsMTUg
KzE5OCwxNSBAQCBwdWJsaWM6CiAgICAgICAgIH0KIAogICAgICAgICBpZiAod2ViRXZlbnQuc2hp
ZnRLZXkoKSkKLSAgICAgICAgICAgIG1fbW9kaWZpZXJzIHw9IE1vZGlmaWVyOjpTaGlmdEtleTsK
KyAgICAgICAgICAgIG1fbW9kaWZpZXJzLmFkZChNb2RpZmllcjo6U2hpZnRLZXkpOwogICAgICAg
ICBpZiAod2ViRXZlbnQuY29udHJvbEtleSgpKQotICAgICAgICAgICAgbV9tb2RpZmllcnMgfD0g
TW9kaWZpZXI6OkN0cmxLZXk7CisgICAgICAgICAgICBtX21vZGlmaWVycy5hZGQoTW9kaWZpZXI6
OkN0cmxLZXkpOwogICAgICAgICBpZiAod2ViRXZlbnQuYWx0S2V5KCkpCi0gICAgICAgICAgICBt
X21vZGlmaWVycyB8PSBNb2RpZmllcjo6QWx0S2V5OworICAgICAgICAgICAgbV9tb2RpZmllcnMu
YWRkKE1vZGlmaWVyOjpBbHRLZXkpOwogICAgICAgICBpZiAod2ViRXZlbnQubWV0YUtleSgpKQot
ICAgICAgICAgICAgbV9tb2RpZmllcnMgfD0gTW9kaWZpZXI6Ok1ldGFLZXk7CisgICAgICAgICAg
ICBtX21vZGlmaWVycy5hZGQoTW9kaWZpZXI6Ok1ldGFLZXkpOwogICAgICAgICBpZiAod2ViRXZl
bnQuY2Fwc0xvY2tLZXkoKSkKLSAgICAgICAgICAgIG1fbW9kaWZpZXJzIHw9IE1vZGlmaWVyOjpD
YXBzTG9ja0tleTsKKyAgICAgICAgICAgIG1fbW9kaWZpZXJzLmFkZChNb2RpZmllcjo6Q2Fwc0xv
Y2tLZXkpOwogCiAgICAgICAgIG1fdGltZXN0YW1wID0gd2ViRXZlbnQudGltZXN0YW1wKCk7CiAK
QEAgLTMzOSwxNSArMzM5LDE1IEBAIHB1YmxpYzoKICAgICAgICAgfQogCiAgICAgICAgIGlmICh3
ZWJFdmVudC5zaGlmdEtleSgpKQotICAgICAgICAgICAgbV9tb2RpZmllcnMgfD0gTW9kaWZpZXI6
OlNoaWZ0S2V5OworICAgICAgICAgICAgbV9tb2RpZmllcnMuYWRkKE1vZGlmaWVyOjpTaGlmdEtl
eSk7CiAgICAgICAgIGlmICh3ZWJFdmVudC5jb250cm9sS2V5KCkpCi0gICAgICAgICAgICBtX21v
ZGlmaWVycyB8PSBNb2RpZmllcjo6Q3RybEtleTsKKyAgICAgICAgICAgIG1fbW9kaWZpZXJzLmFk
ZChNb2RpZmllcjo6Q3RybEtleSk7CiAgICAgICAgIGlmICh3ZWJFdmVudC5hbHRLZXkoKSkKLSAg
ICAgICAgICAgIG1fbW9kaWZpZXJzIHw9IE1vZGlmaWVyOjpBbHRLZXk7CisgICAgICAgICAgICBt
X21vZGlmaWVycy5hZGQoTW9kaWZpZXI6OkFsdEtleSk7CiAgICAgICAgIGlmICh3ZWJFdmVudC5t
ZXRhS2V5KCkpCi0gICAgICAgICAgICBtX21vZGlmaWVycyB8PSBNb2RpZmllcjo6TWV0YUtleTsK
KyAgICAgICAgICAgIG1fbW9kaWZpZXJzLmFkZChNb2RpZmllcjo6TWV0YUtleSk7CiAgICAgICAg
IGlmICh3ZWJFdmVudC5jYXBzTG9ja0tleSgpKQotICAgICAgICAgICAgbV9tb2RpZmllcnMgfD0g
TW9kaWZpZXI6OkNhcHNMb2NrS2V5OworICAgICAgICAgICAgbV9tb2RpZmllcnMuYWRkKE1vZGlm
aWVyOjpDYXBzTG9ja0tleSk7CiAKICAgICAgICAgbV90aW1lc3RhbXAgPSB3ZWJFdmVudC50aW1l
c3RhbXAoKTsKIApAQCAtMzk4LDE1ICszOTgsMTUgQEAgcHVibGljOgogICAgICAgICB9CiAKICAg
ICAgICAgaWYgKHdlYkV2ZW50LnNoaWZ0S2V5KCkpCi0gICAgICAgICAgICBtX21vZGlmaWVycyB8
PSBNb2RpZmllcjo6U2hpZnRLZXk7CisgICAgICAgICAgICBtX21vZGlmaWVycy5hZGQoTW9kaWZp
ZXI6OlNoaWZ0S2V5KTsKICAgICAgICAgaWYgKHdlYkV2ZW50LmNvbnRyb2xLZXkoKSkKLSAgICAg
ICAgICAgIG1fbW9kaWZpZXJzIHw9IE1vZGlmaWVyOjpDdHJsS2V5OworICAgICAgICAgICAgbV9t
b2RpZmllcnMuYWRkKE1vZGlmaWVyOjpDdHJsS2V5KTsKICAgICAgICAgaWYgKHdlYkV2ZW50LmFs
dEtleSgpKQotICAgICAgICAgICAgbV9tb2RpZmllcnMgfD0gTW9kaWZpZXI6OkFsdEtleTsKKyAg
ICAgICAgICAgIG1fbW9kaWZpZXJzLmFkZChNb2RpZmllcjo6QWx0S2V5KTsKICAgICAgICAgaWYg
KHdlYkV2ZW50Lm1ldGFLZXkoKSkKLSAgICAgICAgICAgIG1fbW9kaWZpZXJzIHw9IE1vZGlmaWVy
OjpNZXRhS2V5OworICAgICAgICAgICAgbV9tb2RpZmllcnMuYWRkKE1vZGlmaWVyOjpNZXRhS2V5
KTsKICAgICAgICAgaWYgKHdlYkV2ZW50LmNhcHNMb2NrS2V5KCkpCi0gICAgICAgICAgICBtX21v
ZGlmaWVycyB8PSBNb2RpZmllcjo6Q2Fwc0xvY2tLZXk7CisgICAgICAgICAgICBtX21vZGlmaWVy
cy5hZGQoTW9kaWZpZXI6OkNhcHNMb2NrS2V5KTsKIAogICAgICAgICBtX3RpbWVzdGFtcCA9IHdl
YkV2ZW50LnRpbWVzdGFtcCgpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRl
UG9saWNpZXNEYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJz
aXRlUG9saWNpZXNEYXRhLmNwcAkocmV2aXNpb24gMjM1NTM5KQorKysgU291cmNlL1dlYktpdC9T
aGFyZWQvV2Vic2l0ZVBvbGljaWVzRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk4LDEzICs5
OCwxMyBAQCB2b2lkIFdlYnNpdGVQb2xpY2llc0RhdGE6OmFwcGx5VG9Eb2N1bWVuCiAgICAgY29u
c3QgYXV0byYgYWxsb3dlZFF1aXJrcyA9IHdlYnNpdGVQb2xpY2llcy5hbGxvd2VkQXV0b3BsYXlR
dWlya3M7CiAgICAgCiAgICAgaWYgKGFsbG93ZWRRdWlya3MuY29udGFpbnMoV2Vic2l0ZUF1dG9w
bGF5UXVpcms6OkluaGVyaXRlZFVzZXJHZXN0dXJlcykpCi0gICAgICAgIHF1aXJrcyB8PSBXZWJD
b3JlOjpBdXRvcGxheVF1aXJrOjpJbmhlcml0ZWRVc2VyR2VzdHVyZXM7CisgICAgICAgIHF1aXJr
cy5hZGQoV2ViQ29yZTo6QXV0b3BsYXlRdWlyazo6SW5oZXJpdGVkVXNlckdlc3R1cmVzKTsKICAg
ICAKICAgICBpZiAoYWxsb3dlZFF1aXJrcy5jb250YWlucyhXZWJzaXRlQXV0b3BsYXlRdWlyazo6
U3ludGhlc2l6ZWRQYXVzZUV2ZW50cykpCi0gICAgICAgIHF1aXJrcyB8PSBXZWJDb3JlOjpBdXRv
cGxheVF1aXJrOjpTeW50aGVzaXplZFBhdXNlRXZlbnRzOworICAgICAgICBxdWlya3MuYWRkKFdl
YkNvcmU6OkF1dG9wbGF5UXVpcms6OlN5bnRoZXNpemVkUGF1c2VFdmVudHMpOwogICAgIAogICAg
IGlmIChhbGxvd2VkUXVpcmtzLmNvbnRhaW5zKFdlYnNpdGVBdXRvcGxheVF1aXJrOjpBcmJpdHJh
cnlVc2VyR2VzdHVyZXMpKQotICAgICAgICBxdWlya3MgfD0gV2ViQ29yZTo6QXV0b3BsYXlRdWly
azo6QXJiaXRyYXJ5VXNlckdlc3R1cmVzOworICAgICAgICBxdWlya3MuYWRkKFdlYkNvcmU6OkF1
dG9wbGF5UXVpcms6OkFyYml0cmFyeVVzZXJHZXN0dXJlcyk7CiAKICAgICBkb2N1bWVudExvYWRl
ci5zZXRBbGxvd2VkQXV0b3BsYXlRdWlya3MocXVpcmtzKTsKIApJbmRleDogU291cmNlL1dlYktp
dC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxh
eWVyVHJlZVRyYW5zYWN0aW9uLmgJKHJldmlzaW9uIDIzNTUzOSkKKysrIFNvdXJjZS9XZWJLaXQv
U2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMTYsNyArMTE2LDcgQEAgcHVibGljOgogCiAgICAgICAgIHZvaWQgbm90
ZVByb3BlcnRpZXNDaGFuZ2VkKE9wdGlvblNldDxMYXllckNoYW5nZT4gY2hhbmdlRmxhZ3MpCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIGNoYW5nZWRQcm9wZXJ0aWVzIHw9IGNoYW5nZUZsYWdzOwor
ICAgICAgICAgICAgY2hhbmdlZFByb3BlcnRpZXMuYWRkKGNoYW5nZUZsYWdzKTsKICAgICAgICAg
fQogCiAgICAgICAgIHZvaWQgcmVzZXRDaGFuZ2VkUHJvcGVydGllcygpCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDIzNTUzOSkKKysrIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE0NDYsMzIgKzE0NDYsMzIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFN1cHByZXNzVmlzaWJp
bGl0eQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlQWN0aXZpdHlTdGF0ZShPcHRpb25TZXQ8
QWN0aXZpdHlTdGF0ZTo6RmxhZz4gZmxhZ3NUb1VwZGF0ZSkKIHsKLSAgICBtX2FjdGl2aXR5U3Rh
dGUgPSBtX2FjdGl2aXR5U3RhdGUgLSBmbGFnc1RvVXBkYXRlOworICAgIG1fYWN0aXZpdHlTdGF0
ZS5yZW1vdmUoZmxhZ3NUb1VwZGF0ZSk7CiAgICAgaWYgKGZsYWdzVG9VcGRhdGUgJiBBY3Rpdml0
eVN0YXRlOjpJc0ZvY3VzZWQgJiYgbV9wYWdlQ2xpZW50LmlzVmlld0ZvY3VzZWQoKSkKLSAgICAg
ICAgbV9hY3Rpdml0eVN0YXRlIHw9IEFjdGl2aXR5U3RhdGU6OklzRm9jdXNlZDsKKyAgICAgICAg
bV9hY3Rpdml0eVN0YXRlLmFkZChBY3Rpdml0eVN0YXRlOjpJc0ZvY3VzZWQpOwogICAgIGlmIChm
bGFnc1RvVXBkYXRlICYgQWN0aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmUgJiYgbV9wYWdlQ2xp
ZW50LmlzVmlld1dpbmRvd0FjdGl2ZSgpKQotICAgICAgICBtX2FjdGl2aXR5U3RhdGUgfD0gQWN0
aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmU7CisgICAgICAgIG1fYWN0aXZpdHlTdGF0ZS5hZGQo
QWN0aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmUpOwogICAgIGlmIChmbGFnc1RvVXBkYXRlICYg
QWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlICYmIG1fcGFnZUNsaWVudC5pc1ZpZXdWaXNpYmxlKCkp
Ci0gICAgICAgIG1fYWN0aXZpdHlTdGF0ZSB8PSBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGU7Cisg
ICAgICAgIG1fYWN0aXZpdHlTdGF0ZS5hZGQoQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKTsKICAg
ICBpZiAoZmxhZ3NUb1VwZGF0ZSAmIEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZU9yT2NjbHVkZWQg
JiYgbV9wYWdlQ2xpZW50LmlzVmlld1Zpc2libGVPck9jY2x1ZGVkKCkpCi0gICAgICAgIG1fYWN0
aXZpdHlTdGF0ZSB8PSBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGVPck9jY2x1ZGVkOworICAgICAg
ICBtX2FjdGl2aXR5U3RhdGUuYWRkKEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZU9yT2NjbHVkZWQp
OwogICAgIGlmIChmbGFnc1RvVXBkYXRlICYgQWN0aXZpdHlTdGF0ZTo6SXNJbldpbmRvdyAmJiBt
X3BhZ2VDbGllbnQuaXNWaWV3SW5XaW5kb3coKSkKLSAgICAgICAgbV9hY3Rpdml0eVN0YXRlIHw9
IEFjdGl2aXR5U3RhdGU6OklzSW5XaW5kb3c7CisgICAgICAgIG1fYWN0aXZpdHlTdGF0ZS5hZGQo
QWN0aXZpdHlTdGF0ZTo6SXNJbldpbmRvdyk7CiAgICAgaWYgKGZsYWdzVG9VcGRhdGUgJiBBY3Rp
dml0eVN0YXRlOjpJc1Zpc3VhbGx5SWRsZSAmJiBtX3BhZ2VDbGllbnQuaXNWaXN1YWxseUlkbGUo
KSkKLSAgICAgICAgbV9hY3Rpdml0eVN0YXRlIHw9IEFjdGl2aXR5U3RhdGU6OklzVmlzdWFsbHlJ
ZGxlOworICAgICAgICBtX2FjdGl2aXR5U3RhdGUuYWRkKEFjdGl2aXR5U3RhdGU6OklzVmlzdWFs
bHlJZGxlKTsKICAgICBpZiAoZmxhZ3NUb1VwZGF0ZSAmIEFjdGl2aXR5U3RhdGU6OklzQXVkaWJs
ZSAmJiBtX21lZGlhU3RhdGUgJiBNZWRpYVByb2R1Y2VyOjpJc1BsYXlpbmdBdWRpbyAmJiAhKG1f
bXV0ZWRTdGF0ZSAmIE1lZGlhUHJvZHVjZXI6OkF1ZGlvSXNNdXRlZCkpCi0gICAgICAgIG1fYWN0
aXZpdHlTdGF0ZSB8PSBBY3Rpdml0eVN0YXRlOjpJc0F1ZGlibGU7CisgICAgICAgIG1fYWN0aXZp
dHlTdGF0ZS5hZGQoQWN0aXZpdHlTdGF0ZTo6SXNBdWRpYmxlKTsKICAgICBpZiAoZmxhZ3NUb1Vw
ZGF0ZSAmIEFjdGl2aXR5U3RhdGU6OklzTG9hZGluZyAmJiBtX3BhZ2VMb2FkU3RhdGUuaXNMb2Fk
aW5nKCkpCi0gICAgICAgIG1fYWN0aXZpdHlTdGF0ZSB8PSBBY3Rpdml0eVN0YXRlOjpJc0xvYWRp
bmc7CisgICAgICAgIG1fYWN0aXZpdHlTdGF0ZS5hZGQoQWN0aXZpdHlTdGF0ZTo6SXNMb2FkaW5n
KTsKICAgICBpZiAoZmxhZ3NUb1VwZGF0ZSAmIEFjdGl2aXR5U3RhdGU6OklzQ2FwdHVyaW5nTWVk
aWEgJiYgbV9tZWRpYVN0YXRlICYgKE1lZGlhUHJvZHVjZXI6Okhhc0FjdGl2ZUF1ZGlvQ2FwdHVy
ZURldmljZSB8IE1lZGlhUHJvZHVjZXI6Okhhc0FjdGl2ZVZpZGVvQ2FwdHVyZURldmljZSkpCi0g
ICAgICAgIG1fYWN0aXZpdHlTdGF0ZSB8PSBBY3Rpdml0eVN0YXRlOjpJc0NhcHR1cmluZ01lZGlh
OworICAgICAgICBtX2FjdGl2aXR5U3RhdGUuYWRkKEFjdGl2aXR5U3RhdGU6OklzQ2FwdHVyaW5n
TWVkaWEpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6YWN0aXZpdHlTdGF0ZURpZENoYW5nZShP
cHRpb25TZXQ8QWN0aXZpdHlTdGF0ZTo6RmxhZz4gbWF5SGF2ZUNoYW5nZWQsIGJvb2wgd2FudHNT
eW5jaHJvbm91c1JlcGx5LCBBY3Rpdml0eVN0YXRlQ2hhbmdlRGlzcGF0Y2hNb2RlIGRpc3BhdGNo
TW9kZSkKIHsKICAgICBMT0dfV0lUSF9TVFJFQU0oQWN0aXZpdHlTdGF0ZSwgc3RyZWFtIDw8ICJX
ZWJQYWdlUHJveHkgIiA8PCBwYWdlSUQoKSA8PCAiIGFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UgLSBt
YXlIYXZlQ2hhbmdlZCAiIDw8IG1heUhhdmVDaGFuZ2VkKTsKIAotICAgIG1fcG90ZW50aWFsbHlD
aGFuZ2VkQWN0aXZpdHlTdGF0ZUZsYWdzIHw9IG1heUhhdmVDaGFuZ2VkOworICAgIG1fcG90ZW50
aWFsbHlDaGFuZ2VkQWN0aXZpdHlTdGF0ZUZsYWdzLmFkZChtYXlIYXZlQ2hhbmdlZCk7CiAgICAg
bV9hY3Rpdml0eVN0YXRlQ2hhbmdlV2FudHNTeW5jaHJvbm91c1JlcGx5ID0gbV9hY3Rpdml0eVN0
YXRlQ2hhbmdlV2FudHNTeW5jaHJvbm91c1JlcGx5IHx8IHdhbnRzU3luY2hyb25vdXNSZXBseTsK
IAogICAgIGlmIChtX3N1cHByZXNzVmlzaWJpbGl0eVVwZGF0ZXMgJiYgZGlzcGF0Y2hNb2RlICE9
IEFjdGl2aXR5U3RhdGVDaGFuZ2VEaXNwYXRjaE1vZGU6OkltbWVkaWF0ZSkKQEAgLTE1MjIsNyAr
MTUyMiw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaXNwYXRjaEFjdGl2aXR5U3RhdGUKIAogICAg
IC8vIElmIHRoZSB2aXNpYmlsaXR5IHN0YXRlIG1heSBoYXZlIGNoYW5nZWQsIHRoZW4gc28gbWF5
IHRoZSB2aXN1YWxseSBpZGxlICYgb2NjbHVkZWQgYWdub3N0aWMgc3RhdGUuCiAgICAgaWYgKG1f
cG90ZW50aWFsbHlDaGFuZ2VkQWN0aXZpdHlTdGF0ZUZsYWdzICYgQWN0aXZpdHlTdGF0ZTo6SXNW
aXNpYmxlKQotICAgICAgICBtX3BvdGVudGlhbGx5Q2hhbmdlZEFjdGl2aXR5U3RhdGVGbGFncyB8
PSB7IEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZU9yT2NjbHVkZWQsIEFjdGl2aXR5U3RhdGU6Oklz
VmlzdWFsbHlJZGxlIH07CisgICAgICAgIG1fcG90ZW50aWFsbHlDaGFuZ2VkQWN0aXZpdHlTdGF0
ZUZsYWdzLmFkZCh7IEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZU9yT2NjbHVkZWQsIEFjdGl2aXR5
U3RhdGU6OklzVmlzdWFsbHlJZGxlIH0pOwogCiAgICAgLy8gUmVjb3JkIHRoZSBwcmlvciB2aWV3
IHN0YXRlLCB1cGRhdGUgdGhlIGZsYWdzIHRoYXQgbWF5IGhhdmUgY2hhbmdlZCwKICAgICAvLyBh
bmQgY2hlY2sgd2hpY2ggZmxhZ3MgaGF2ZSBhY3R1YWxseSBjaGFuZ2VkLgpJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCShyZXZpc2lvbiAyMzU1MzkpCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yNzAsNyArMjcwLDcgQEAgdm9pZCBXS1BhZ2VSZWxvYWQoV0tQYWdlUmVmIHBhZ2VSZWYpCiAg
ICAgT3B0aW9uU2V0PFdlYkNvcmU6OlJlbG9hZE9wdGlvbj4gcmVsb2FkT3B0aW9uczsKICNpZiBQ
TEFURk9STShDT0NPQSkKICAgICBpZiAobGlua2VkT25PckFmdGVyKFdlYktpdDo6U0RLVmVyc2lv
bjo6Rmlyc3RXaXRoRXhwaXJlZE9ubHlSZWxvYWRCZWhhdmlvcikpCi0gICAgICAgIHJlbG9hZE9w
dGlvbnMgfD0gV2ViQ29yZTo6UmVsb2FkT3B0aW9uOjpFeHBpcmVkT25seTsKKyAgICAgICAgcmVs
b2FkT3B0aW9ucy5hZGQoV2ViQ29yZTo6UmVsb2FkT3B0aW9uOjpFeHBpcmVkT25seSk7CiAjZW5k
aWYKIAogICAgIHRvSW1wbChwYWdlUmVmKS0+cmVsb2FkKHJlbG9hZE9wdGlvbnMpOwpJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tSZXNvdXJjZUNhY2hlTWFuYWdlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tSZXNvdXJjZUNh
Y2hlTWFuYWdlci5jcHAJKHJldmlzaW9uIDIzNTUzOSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLUmVzb3VyY2VDYWNoZU1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
MCwxMiArNDAsMTAgQEAgV0tUeXBlSUQgV0tSZXNvdXJjZUNhY2hlTWFuYWdlckdldFR5cGVJRAog
CiBzdGF0aWMgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gdG9XZWJzaXRlRGF0YVR5cGVzKFdL
UmVzb3VyY2VDYWNoZXNUb0NsZWFyIGNhY2hlc1RvQ2xlYXIpCiB7Ci0gICAgT3B0aW9uU2V0PFdl
YnNpdGVEYXRhVHlwZT4gd2Vic2l0ZURhdGFUeXBlczsKLQotICAgIHdlYnNpdGVEYXRhVHlwZXMg
fD0gV2Vic2l0ZURhdGFUeXBlOjpNZW1vcnlDYWNoZTsKKyAgICBPcHRpb25TZXQ8V2Vic2l0ZURh
dGFUeXBlPiB3ZWJzaXRlRGF0YVR5cGVzIHsgV2Vic2l0ZURhdGFUeXBlOjpNZW1vcnlDYWNoZSB9
OwogCiAgICAgaWYgKGNhY2hlc1RvQ2xlYXIgPT0gV0tSZXNvdXJjZUNhY2hlc1RvQ2xlYXJBbGwp
Ci0gICAgICAgIHdlYnNpdGVEYXRhVHlwZXMgfD0gV2Vic2l0ZURhdGFUeXBlOjpEaXNrQ2FjaGU7
CisgICAgICAgIHdlYnNpdGVEYXRhVHlwZXMuYWRkKFdlYnNpdGVEYXRhVHlwZTo6RGlza0NhY2hl
KTsKIAogICAgIHJldHVybiB3ZWJzaXRlRGF0YVR5cGVzOwogfQpJbmRleDogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlUG9saWNpZXMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZVBvbGljaWVzLmNwcAkocmV2aXNp
b24gMjM1NTM5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlUG9s
aWNpZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MywxMyArODMsMTMgQEAgdm9pZCBXS1dlYnNp
dGVQb2xpY2llc1NldEFsbG93ZWRBdXRvcGxheQogewogICAgIE9wdGlvblNldDxXZWJzaXRlQXV0
b3BsYXlRdWlyaz4gcXVpcmtzOwogICAgIGlmIChhbGxvd2VkUXVpcmtzICYga1dLV2Vic2l0ZUF1
dG9wbGF5UXVpcmtJbmhlcml0ZWRVc2VyR2VzdHVyZXMpCi0gICAgICAgIHF1aXJrcyB8PSBXZWJz
aXRlQXV0b3BsYXlRdWlyazo6SW5oZXJpdGVkVXNlckdlc3R1cmVzOworICAgICAgICBxdWlya3Mu
YWRkKFdlYnNpdGVBdXRvcGxheVF1aXJrOjpJbmhlcml0ZWRVc2VyR2VzdHVyZXMpOwogCiAgICAg
aWYgKGFsbG93ZWRRdWlya3MgJiBrV0tXZWJzaXRlQXV0b3BsYXlRdWlya1N5bnRoZXNpemVkUGF1
c2VFdmVudHMpCi0gICAgICAgIHF1aXJrcyB8PSBXZWJzaXRlQXV0b3BsYXlRdWlyazo6U3ludGhl
c2l6ZWRQYXVzZUV2ZW50czsKKyAgICAgICAgcXVpcmtzLmFkZChXZWJzaXRlQXV0b3BsYXlRdWly
azo6U3ludGhlc2l6ZWRQYXVzZUV2ZW50cyk7CiAKICAgICBpZiAoYWxsb3dlZFF1aXJrcyAmIGtX
S1dlYnNpdGVBdXRvcGxheVF1aXJrQXJiaXRyYXJ5VXNlckdlc3R1cmVzKQotICAgICAgICBxdWly
a3MgfD0gV2Vic2l0ZUF1dG9wbGF5UXVpcms6OkFyYml0cmFyeVVzZXJHZXN0dXJlczsKKyAgICAg
ICAgcXVpcmtzLmFkZChXZWJzaXRlQXV0b3BsYXlRdWlyazo6QXJiaXRyYXJ5VXNlckdlc3R1cmVz
KTsKIAogICAgIHRvSW1wbCh3ZWJzaXRlUG9saWNpZXMpLT5zZXRBbGxvd2VkQXV0b3BsYXlRdWly
a3MocXVpcmtzKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL3dwZS9X
S0FQSUNhc3RXUEUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy93cGUvV0tBUElDYXN0V1BFLmgJKHJldmlzaW9uIDIzNTUzOSkKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL3dwZS9XS0FQSUNhc3RXUEUuaAkod29ya2luZyBjb3B5KQpAQCAtNTMs
OSArNTMsOSBAQCBpbmxpbmUgT3B0aW9uU2V0PFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6CiAgICAg
T3B0aW9uU2V0PFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWc+IHZpZXdTdGF0ZUZsYWdzOwog
CiAgICAgaWYgKHdrVmlld1N0YXRlICYga1dLVmlld1N0YXRlSXNJbldpbmRvdykKLSAgICAgICAg
dmlld1N0YXRlRmxhZ3MgfD0gV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNJbldpbmRvdzsKKyAg
ICAgICAgdmlld1N0YXRlRmxhZ3MuYWRkKFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzSW5XaW5k
b3cpOwogICAgIGlmICh3a1ZpZXdTdGF0ZSAmIGtXS1ZpZXdTdGF0ZUlzVmlzaWJsZSkKLSAgICAg
ICAgdmlld1N0YXRlRmxhZ3MgfD0gV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlOwor
ICAgICAgICB2aWV3U3RhdGVGbGFncy5hZGQoV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNWaXNp
YmxlKTsKIAogICAgIHJldHVybiB2aWV3U3RhdGVGbGFnczsKIH0KSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQkocmV2aXNpb24gMjM1NTM5
KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQkod29y
a2luZyBjb3B5KQpAQCAtOTYxLDcgKzk2MSw3IEBAIC0gKFdLTmF2aWdhdGlvbiAqKXJlbG9hZAog
ewogICAgIE9wdGlvblNldDxXZWJDb3JlOjpSZWxvYWRPcHRpb24+IHJlbG9hZE9wdGlvbnM7CiAg
ICAgaWYgKGxpbmtlZE9uT3JBZnRlcihXZWJLaXQ6OlNES1ZlcnNpb246OkZpcnN0V2l0aEV4cGly
ZWRPbmx5UmVsb2FkQmVoYXZpb3IpKQotICAgICAgICByZWxvYWRPcHRpb25zIHw9IFdlYkNvcmU6
OlJlbG9hZE9wdGlvbjo6RXhwaXJlZE9ubHk7CisgICAgICAgIHJlbG9hZE9wdGlvbnMuYWRkKFdl
YkNvcmU6OlJlbG9hZE9wdGlvbjo6RXhwaXJlZE9ubHkpOwogCiAgICAgcmV0dXJuIHdyYXBwZXIo
X3BhZ2UtPnJlbG9hZChyZWxvYWRPcHRpb25zKSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZEludGVybmFsLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNv
cmRJbnRlcm5hbC5oCShyZXZpc2lvbiAyMzU1MzkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZEludGVybmFsLmgJKHdvcmtpbmcgY29weSkK
QEAgLTg1LDcgKzg1LDcgQEAgc3RhdGljIGlubGluZSBPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRl
RAogCiAgICAgZm9yIChOU1N0cmluZyAqd2Vic2l0ZURhdGFUeXBlIGluIHdlYnNpdGVEYXRhVHlw
ZXMpIHsKICAgICAgICAgaWYgKGF1dG8gZGF0YVR5cGUgPSB0b1dlYnNpdGVEYXRhVHlwZSh3ZWJz
aXRlRGF0YVR5cGUpKQotICAgICAgICAgICAgcmVzdWx0IHw9ICpkYXRhVHlwZTsKKyAgICAgICAg
ICAgIHJlc3VsdC5hZGQoKmRhdGFUeXBlKTsKICAgICB9CiAKICAgICByZXR1cm4gcmVzdWx0OwpJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9y
ZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJzaXRlRGF0YVN0b3JlLm1tCShyZXZpc2lvbiAyMzU1MzkpCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0yMjMsNyArMjIzLDcgQEAgLSAodm9pZClfZmV0Y2hEYXRhUmVjb3Jkc09mVHlwZXM6KE5TU2V0
PAogCiAgICAgT3B0aW9uU2V0PFdlYktpdDo6V2Vic2l0ZURhdGFGZXRjaE9wdGlvbj4gZmV0Y2hP
cHRpb25zOwogICAgIGlmIChvcHRpb25zICYgX1dLV2Vic2l0ZURhdGFTdG9yZUZldGNoT3B0aW9u
Q29tcHV0ZVNpemVzKQotICAgICAgICBmZXRjaE9wdGlvbnMgfD0gV2ViS2l0OjpXZWJzaXRlRGF0
YUZldGNoT3B0aW9uOjpDb21wdXRlU2l6ZXM7CisgICAgICAgIGZldGNoT3B0aW9ucy5hZGQoV2Vi
S2l0OjpXZWJzaXRlRGF0YUZldGNoT3B0aW9uOjpDb21wdXRlU2l6ZXMpOwogCiAgICAgX3dlYnNp
dGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5mZXRjaERhdGEoV2ViS2l0Ojp0b1dlYnNp
dGVEYXRhVHlwZXMoZGF0YVR5cGVzKSwgZmV0Y2hPcHRpb25zLCBbY29tcGxldGlvbkhhbmRsZXJD
b3B5ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlckNvcHkpXShhdXRvIHdlYnNpdGVEYXRhUmVj
b3JkcykgewogICAgICAgICBWZWN0b3I8UmVmUHRyPEFQSTo6T2JqZWN0Pj4gZWxlbWVudHM7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZVBvbGljaWVz
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tX
ZWJzaXRlUG9saWNpZXMubW0JKHJldmlzaW9uIDIzNTUzOSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlUG9saWNpZXMubW0JKHdvcmtpbmcgY29weSkKQEAg
LTY0LDEzICs2NCwxMyBAQCAtICh2b2lkKXNldEFsbG93ZWRBdXRvcGxheVF1aXJrczooX1dLV2Vi
CiAgICAgT3B0aW9uU2V0PFdlYktpdDo6V2Vic2l0ZUF1dG9wbGF5UXVpcms+IHF1aXJrczsKIAog
ICAgIGlmIChhbGxvd2VkUXVpcmtzICYgX1dLV2Vic2l0ZUF1dG9wbGF5UXVpcmtJbmhlcml0ZWRV
c2VyR2VzdHVyZXMpCi0gICAgICAgIHF1aXJrcyB8PSBXZWJLaXQ6OldlYnNpdGVBdXRvcGxheVF1
aXJrOjpJbmhlcml0ZWRVc2VyR2VzdHVyZXM7CisgICAgICAgIHF1aXJrcy5hZGQoV2ViS2l0OjpX
ZWJzaXRlQXV0b3BsYXlRdWlyazo6SW5oZXJpdGVkVXNlckdlc3R1cmVzKTsKIAogICAgIGlmIChh
bGxvd2VkUXVpcmtzICYgX1dLV2Vic2l0ZUF1dG9wbGF5UXVpcmtTeW50aGVzaXplZFBhdXNlRXZl
bnRzKQotICAgICAgICBxdWlya3MgfD0gV2ViS2l0OjpXZWJzaXRlQXV0b3BsYXlRdWlyazo6U3lu
dGhlc2l6ZWRQYXVzZUV2ZW50czsKKyAgICAgICAgcXVpcmtzLmFkZChXZWJLaXQ6OldlYnNpdGVB
dXRvcGxheVF1aXJrOjpTeW50aGVzaXplZFBhdXNlRXZlbnRzKTsKIAogICAgIGlmIChhbGxvd2Vk
UXVpcmtzICYgX1dLV2Vic2l0ZUF1dG9wbGF5UXVpcmtBcmJpdHJhcnlVc2VyR2VzdHVyZXMpCi0g
ICAgICAgIHF1aXJrcyB8PSBXZWJLaXQ6OldlYnNpdGVBdXRvcGxheVF1aXJrOjpBcmJpdHJhcnlV
c2VyR2VzdHVyZXM7CisgICAgICAgIHF1aXJrcy5hZGQoV2ViS2l0OjpXZWJzaXRlQXV0b3BsYXlR
dWlyazo6QXJiaXRyYXJ5VXNlckdlc3R1cmVzKTsKIAogICAgIF93ZWJzaXRlUG9saWNpZXMtPnNl
dEFsbG93ZWRBdXRvcGxheVF1aXJrcyhxdWlya3MpOwogfQpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAJKHJldmlz
aW9uIDIzNTUzOSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdl
YkNvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NzUsOCArNzc1LDggQEAgdm9pZCB3ZWJr
aXRfd2ViX2NvbnRleHRfY2xlYXJfY2FjaGUoV2ViSwogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VC
S0lUX0lTX1dFQl9DT05URVhUKGNvbnRleHQpKTsKIAogICAgIE9wdGlvblNldDxXZWJzaXRlRGF0
YVR5cGU+IHdlYnNpdGVEYXRhVHlwZXM7Ci0gICAgd2Vic2l0ZURhdGFUeXBlcyB8PSBXZWJzaXRl
RGF0YVR5cGU6Ok1lbW9yeUNhY2hlOwotICAgIHdlYnNpdGVEYXRhVHlwZXMgfD0gV2Vic2l0ZURh
dGFUeXBlOjpEaXNrQ2FjaGU7CisgICAgd2Vic2l0ZURhdGFUeXBlcy5hZGQoV2Vic2l0ZURhdGFU
eXBlOjpNZW1vcnlDYWNoZSk7CisgICAgd2Vic2l0ZURhdGFUeXBlcy5hZGQoV2Vic2l0ZURhdGFU
eXBlOjpEaXNrQ2FjaGUpOwogICAgIGF1dG8mIHdlYnNpdGVEYXRhU3RvcmUgPSB3ZWJraXRXZWJz
aXRlRGF0YU1hbmFnZXJHZXREYXRhU3RvcmUoY29udGV4dC0+cHJpdi0+d2Vic2l0ZURhdGFNYW5h
Z2VyLmdldCgpKS53ZWJzaXRlRGF0YVN0b3JlKCk7CiAgICAgd2Vic2l0ZURhdGFTdG9yZS5yZW1v
dmVEYXRhKHdlYnNpdGVEYXRhVHlwZXMsIC1XYWxsVGltZTo6aW5maW5pdHkoKSwgW10geyB9KTsK
IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYnNpdGVE
YXRhTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyLmNwcAkocmV2aXNpb24gMjM1NTM5KQorKysg
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2Vy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjMwLDI1ICs2MzAsMjUgQEAgc3RhdGljIE9wdGlvblNl
dDxXZWJzaXRlRGF0YVR5cGU+IHRvV2VicwogewogICAgIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5
cGU+IHJldHVyblZhbHVlOwogICAgIGlmICh0eXBlcyAmIFdFQktJVF9XRUJTSVRFX0RBVEFfTUVN
T1JZX0NBQ0hFKQotICAgICAgICByZXR1cm5WYWx1ZSB8PSBXZWJzaXRlRGF0YVR5cGU6Ok1lbW9y
eUNhY2hlOworICAgICAgICByZXR1cm5WYWx1ZS5hZGQoV2Vic2l0ZURhdGFUeXBlOjpNZW1vcnlD
YWNoZSk7CiAgICAgaWYgKHR5cGVzICYgV0VCS0lUX1dFQlNJVEVfREFUQV9ESVNLX0NBQ0hFKQot
ICAgICAgICByZXR1cm5WYWx1ZSB8PSBXZWJzaXRlRGF0YVR5cGU6OkRpc2tDYWNoZTsKKyAgICAg
ICAgcmV0dXJuVmFsdWUuYWRkKFdlYnNpdGVEYXRhVHlwZTo6RGlza0NhY2hlKTsKICAgICBpZiAo
dHlwZXMgJiBXRUJLSVRfV0VCU0lURV9EQVRBX09GRkxJTkVfQVBQTElDQVRJT05fQ0FDSEUpCi0g
ICAgICAgIHJldHVyblZhbHVlIHw9IFdlYnNpdGVEYXRhVHlwZTo6T2ZmbGluZVdlYkFwcGxpY2F0
aW9uQ2FjaGU7CisgICAgICAgIHJldHVyblZhbHVlLmFkZChXZWJzaXRlRGF0YVR5cGU6Ok9mZmxp
bmVXZWJBcHBsaWNhdGlvbkNhY2hlKTsKICAgICBpZiAodHlwZXMgJiBXRUJLSVRfV0VCU0lURV9E
QVRBX1NFU1NJT05fU1RPUkFHRSkKLSAgICAgICAgcmV0dXJuVmFsdWUgfD0gV2Vic2l0ZURhdGFU
eXBlOjpTZXNzaW9uU3RvcmFnZTsKKyAgICAgICAgcmV0dXJuVmFsdWUuYWRkKFdlYnNpdGVEYXRh
VHlwZTo6U2Vzc2lvblN0b3JhZ2UpOwogICAgIGlmICh0eXBlcyAmIFdFQktJVF9XRUJTSVRFX0RB
VEFfTE9DQUxfU1RPUkFHRSkKLSAgICAgICAgcmV0dXJuVmFsdWUgfD0gV2Vic2l0ZURhdGFUeXBl
OjpMb2NhbFN0b3JhZ2U7CisgICAgICAgIHJldHVyblZhbHVlLmFkZChXZWJzaXRlRGF0YVR5cGU6
OkxvY2FsU3RvcmFnZSk7CiAgICAgaWYgKHR5cGVzICYgV0VCS0lUX1dFQlNJVEVfREFUQV9XRUJT
UUxfREFUQUJBU0VTKQotICAgICAgICByZXR1cm5WYWx1ZSB8PSBXZWJzaXRlRGF0YVR5cGU6Oldl
YlNRTERhdGFiYXNlczsKKyAgICAgICAgcmV0dXJuVmFsdWUuYWRkKFdlYnNpdGVEYXRhVHlwZTo6
V2ViU1FMRGF0YWJhc2VzKTsKICAgICBpZiAodHlwZXMgJiBXRUJLSVRfV0VCU0lURV9EQVRBX0lO
REVYRUREQl9EQVRBQkFTRVMpCi0gICAgICAgIHJldHVyblZhbHVlIHw9IFdlYnNpdGVEYXRhVHlw
ZTo6SW5kZXhlZERCRGF0YWJhc2VzOworICAgICAgICByZXR1cm5WYWx1ZS5hZGQoV2Vic2l0ZURh
dGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXMpOwogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5f
QVBJKQogICAgIGlmICh0eXBlcyAmIFdFQktJVF9XRUJTSVRFX0RBVEFfUExVR0lOX0RBVEEpCi0g
ICAgICAgIHJldHVyblZhbHVlIHw9IFdlYnNpdGVEYXRhVHlwZTo6UGx1Z0luRGF0YTsKKyAgICAg
ICAgcmV0dXJuVmFsdWUuYWRkKFdlYnNpdGVEYXRhVHlwZTo6UGx1Z0luRGF0YSk7CiAjZW5kaWYK
ICAgICBpZiAodHlwZXMgJiBXRUJLSVRfV0VCU0lURV9EQVRBX0NPT0tJRVMpCi0gICAgICAgIHJl
dHVyblZhbHVlIHw9IFdlYnNpdGVEYXRhVHlwZTo6Q29va2llczsKKyAgICAgICAgcmV0dXJuVmFs
dWUuYWRkKFdlYnNpdGVEYXRhVHlwZTo6Q29va2llcyk7CiAgICAgcmV0dXJuIHJldHVyblZhbHVl
OwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1w
bC5tbQkocmV2aXNpb24gMjM1NTM5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViVmlld0ltcGwubW0JKHdvcmtpbmcgY29weSkKQEAgLTIxMTgsNyArMjExOCw3IEBAIHZvaWQg
V2ViVmlld0ltcGw6OnZpZXdEaWRNb3ZlVG9XaW5kb3coKQogICAgICAgICBpZiAobV9zaG91bGRE
ZWZlclZpZXdJbldpbmRvd0NoYW5nZXMpCiAgICAgICAgICAgICBtX3ZpZXdJbldpbmRvd0NoYW5n
ZVdhc0RlZmVycmVkID0gdHJ1ZTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgYWN0aXZpdHlT
dGF0ZUNoYW5nZXMgfD0gV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNJbldpbmRvdzsKKyAgICAg
ICAgICAgIGFjdGl2aXR5U3RhdGVDaGFuZ2VzLmFkZChXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJ
c0luV2luZG93KTsKICAgICAgICAgbV9wYWdlLT5hY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKGFjdGl2
aXR5U3RhdGVDaGFuZ2VzKTsKIAogICAgICAgICB1cGRhdGVXaW5kb3dBbmRWaWV3RnJhbWVzKCk7
CkBAIC0yMTQ0LDcgKzIxNDQsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjp2aWV3RGlkTW92ZVRvV2lu
ZG93KCkKICAgICAgICAgaWYgKG1fc2hvdWxkRGVmZXJWaWV3SW5XaW5kb3dDaGFuZ2VzKQogICAg
ICAgICAgICAgbV92aWV3SW5XaW5kb3dDaGFuZ2VXYXNEZWZlcnJlZCA9IHRydWU7CiAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgIGFjdGl2aXR5U3RhdGVDaGFuZ2VzIHw9IFdlYkNvcmU6OkFjdGl2
aXR5U3RhdGU6OklzSW5XaW5kb3c7CisgICAgICAgICAgICBhY3Rpdml0eVN0YXRlQ2hhbmdlcy5h
ZGQoV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNJbldpbmRvdyk7CiAgICAgICAgIG1fcGFnZS0+
YWN0aXZpdHlTdGF0ZURpZENoYW5nZShhY3Rpdml0eVN0YXRlQ2hhbmdlcyk7CiAKICAgICAgICAg
W05TRXZlbnQgcmVtb3ZlTW9uaXRvcjptX2ZsYWdzQ2hhbmdlZEV2ZW50TW9uaXRvcl07CkluZGV4
OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVJlY29yZC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFSZWNvcmQuY3BwCShyZXZpc2lvbiAyMzU1MzkpCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVJlY29yZC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTc5LDMwICs3OSwyNyBAQCBTdHJpbmcgV2Vic2l0ZURhdGFSZWNvcmQ6OmRpc3BsYXlOYW1l
Rm9yCiAKIHZvaWQgV2Vic2l0ZURhdGFSZWNvcmQ6OmFkZChXZWJzaXRlRGF0YVR5cGUgdHlwZSwg
Y29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4pCiB7Ci0gICAgdHlwZXMg
fD0gdHlwZTsKLQorICAgIHR5cGVzLmFkZCh0eXBlKTsKICAgICBvcmlnaW5zLmFkZChvcmlnaW4p
OwogfQogCiB2b2lkIFdlYnNpdGVEYXRhUmVjb3JkOjphZGRDb29raWVIb3N0TmFtZShjb25zdCBT
dHJpbmcmIGhvc3ROYW1lKQogewotICAgIHR5cGVzIHw9IFdlYnNpdGVEYXRhVHlwZTo6Q29va2ll
czsKLQorICAgIHR5cGVzLmFkZChXZWJzaXRlRGF0YVR5cGU6OkNvb2tpZXMpOwogICAgIGNvb2tp
ZUhvc3ROYW1lcy5hZGQoaG9zdE5hbWUpOwogfQogCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJ
Tl9BUEkpCiB2b2lkIFdlYnNpdGVEYXRhUmVjb3JkOjphZGRQbHVnaW5EYXRhSG9zdE5hbWUoY29u
c3QgU3RyaW5nJiBob3N0TmFtZSkKIHsKLSAgICB0eXBlcyB8PSBXZWJzaXRlRGF0YVR5cGU6OlBs
dWdJbkRhdGE7Ci0KKyAgICB0eXBlcy5hZGQoV2Vic2l0ZURhdGFUeXBlOjpQbHVnSW5EYXRhKTsK
ICAgICBwbHVnaW5EYXRhSG9zdE5hbWVzLmFkZChob3N0TmFtZSk7CiB9CiAjZW5kaWYKIAogdm9p
ZCBXZWJzaXRlRGF0YVJlY29yZDo6YWRkSFNUU0NhY2hlSG9zdG5hbWUoY29uc3QgU3RyaW5nJiBo
b3N0TmFtZSkKIHsKLSAgICB0eXBlcyB8PSBXZWJzaXRlRGF0YVR5cGU6OkhTVFNDYWNoZTsKKyAg
ICB0eXBlcy5hZGQoV2Vic2l0ZURhdGFUeXBlOjpIU1RTQ2FjaGUpOwogICAgIEhTVFNDYWNoZUhv
c3ROYW1lcy5hZGQoaG9zdE5hbWUpOwogfQogCkBAIC0xNTcsOCArMTU0LDcgQEAgU3RyaW5nIFdl
YnNpdGVEYXRhUmVjb3JkOjp0b3BQcml2YXRlbHlDbwogCiB2b2lkIFdlYnNpdGVEYXRhUmVjb3Jk
OjphZGRPcmlnaW5XaXRoQ3JlZGVudGlhbChjb25zdCBTdHJpbmcmIG9yaWdpbikKIHsKLSAgICB0
eXBlcyB8PSBXZWJzaXRlRGF0YVR5cGU6OkNyZWRlbnRpYWxzOwotCisgICAgdHlwZXMuYWRkKFdl
YnNpdGVEYXRhVHlwZTo6Q3JlZGVudGlhbHMpOwogICAgIG9yaWdpbnNXaXRoQ3JlZGVudGlhbHMu
YWRkKG9yaWdpbik7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS0lu
c3BlY3RvclZpZXdDb250cm9sbGVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL21hYy9XS0luc3BlY3RvclZpZXdDb250cm9sbGVyLm1tCShyZXZpc2lvbiAyMzU1Mzkp
CisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tJbnNwZWN0b3JWaWV3Q29udHJvbGxl
ci5tbQkod29ya2luZyBjb3B5KQpAQCAtMjM4LDcgKzIzOCw3IEBAIC0gKHZvaWQpaW5zcGVjdG9y
V0tXZWJWaWV3UmVsb2FkOihXS0luc3AKIAogICAgIE9wdGlvblNldDxXZWJDb3JlOjpSZWxvYWRP
cHRpb24+IHJlbG9hZE9wdGlvbnM7CiAgICAgaWYgKFdlYktpdDo6bGlua2VkT25PckFmdGVyKFdl
YktpdDo6U0RLVmVyc2lvbjo6Rmlyc3RXaXRoRXhwaXJlZE9ubHlSZWxvYWRCZWhhdmlvcikpCi0g
ICAgICAgIHJlbG9hZE9wdGlvbnMgfD0gV2ViQ29yZTo6UmVsb2FkT3B0aW9uOjpFeHBpcmVkT25s
eTsKKyAgICAgICAgcmVsb2FkT3B0aW9ucy5hZGQoV2ViQ29yZTo6UmVsb2FkT3B0aW9uOjpFeHBp
cmVkT25seSk7CiAKICAgICBfaW5zcGVjdGVkUGFnZS0+cmVsb2FkKHJlbG9hZE9wdGlvbnMpOwog
fQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9Jbmpl
Y3RlZEJ1bmRsZU5vZGVIYW5kbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmNwcAko
cmV2aXNpb24gMjM1NTM5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0RPTS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NzAsOSArMTcwLDkgQEAgc3RhdGljIFJlZlB0cjxXZWJJbWFnZT4gaW1hZ2VGb3JSZWN0KEZyYQog
CiAgICAgYXV0byBwYWludEJlaGF2aW9yID0gZnJhbWVWaWV3LT5wYWludEJlaGF2aW9yKCkgfCBQ
YWludEJlaGF2aW9yOjpGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMgfCBQYWludEJlaGF2aW9yOjpT
bmFwc2hvdHRpbmc7CiAgICAgaWYgKG9wdGlvbnMgJiBTbmFwc2hvdE9wdGlvbnNGb3JjZUJsYWNr
VGV4dCkKLSAgICAgICAgcGFpbnRCZWhhdmlvciB8PSBQYWludEJlaGF2aW9yOjpGb3JjZUJsYWNr
VGV4dDsKKyAgICAgICAgcGFpbnRCZWhhdmlvci5hZGQoUGFpbnRCZWhhdmlvcjo6Rm9yY2VCbGFj
a1RleHQpOwogICAgIGlmIChvcHRpb25zICYgU25hcHNob3RPcHRpb25zRm9yY2VXaGl0ZVRleHQp
Ci0gICAgICAgIHBhaW50QmVoYXZpb3IgfD0gUGFpbnRCZWhhdmlvcjo6Rm9yY2VXaGl0ZVRleHQ7
CisgICAgICAgIHBhaW50QmVoYXZpb3IuYWRkKFBhaW50QmVoYXZpb3I6OkZvcmNlV2hpdGVUZXh0
KTsKIAogICAgIGF1dG8gb2xkUGFpbnRCZWhhdmlvciA9IGZyYW1lVmlldy0+cGFpbnRCZWhhdmlv
cigpOwogICAgIGZyYW1lVmlldy0+c2V0UGFpbnRCZWhhdmlvcihwYWludEJlaGF2aW9yKTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRC
dW5kbGVSYW5nZUhhbmRsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcAkocmV2
aXNpb24gMjM1NTM5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUw
LDExICsxNTAsMTIgQEAgUmVmUHRyPFdlYkltYWdlPiBJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZAog
ICAgIGdyYXBoaWNzQ29udGV4dC0+dHJhbnNsYXRlKC1wYWludFJlY3QubG9jYXRpb24oKSk7CiAK
ICAgICBPcHRpb25TZXQ8UGFpbnRCZWhhdmlvcj4gb2xkUGFpbnRCZWhhdmlvciA9IGZyYW1lVmll
dy0+cGFpbnRCZWhhdmlvcigpOwotICAgIE9wdGlvblNldDxQYWludEJlaGF2aW9yPiBwYWludEJl
aGF2aW9yID0gb2xkUGFpbnRCZWhhdmlvciB8IFBhaW50QmVoYXZpb3I6OlNlbGVjdGlvbk9ubHkg
fCBQYWludEJlaGF2aW9yOjpGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMgfCBQYWludEJlaGF2aW9y
OjpTbmFwc2hvdHRpbmc7CisgICAgT3B0aW9uU2V0PFBhaW50QmVoYXZpb3I+IHBhaW50QmVoYXZp
b3IgPSBvbGRQYWludEJlaGF2aW9yOworICAgIHBhaW50QmVoYXZpb3IuYWRkKHsgUGFpbnRCZWhh
dmlvcjo6U2VsZWN0aW9uT25seSwgUGFpbnRCZWhhdmlvcjo6RmxhdHRlbkNvbXBvc2l0aW5nTGF5
ZXJzLCBQYWludEJlaGF2aW9yOjpTbmFwc2hvdHRpbmcgfSk7CiAgICAgaWYgKG9wdGlvbnMgJiBT
bmFwc2hvdE9wdGlvbnNGb3JjZUJsYWNrVGV4dCkKLSAgICAgICAgcGFpbnRCZWhhdmlvciB8PSBQ
YWludEJlaGF2aW9yOjpGb3JjZUJsYWNrVGV4dDsKKyAgICAgICAgcGFpbnRCZWhhdmlvci5hZGQo
UGFpbnRCZWhhdmlvcjo6Rm9yY2VCbGFja1RleHQpOwogICAgIGlmIChvcHRpb25zICYgU25hcHNo
b3RPcHRpb25zRm9yY2VXaGl0ZVRleHQpCi0gICAgICAgIHBhaW50QmVoYXZpb3IgfD0gUGFpbnRC
ZWhhdmlvcjo6Rm9yY2VXaGl0ZVRleHQ7CisgICAgICAgIHBhaW50QmVoYXZpb3IuYWRkKFBhaW50
QmVoYXZpb3I6OkZvcmNlV2hpdGVUZXh0KTsKIAogICAgIGZyYW1lVmlldy0+c2V0UGFpbnRCZWhh
dmlvcihwYWludEJlaGF2aW9yKTsKICAgICBvd25lckRvY3VtZW50LnVwZGF0ZUxheW91dCgpOwpJ
bmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250
cm9sbGVyLmNwcAkocmV2aXNpb24gMjM1NTM5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NiwxNSArNTYs
MTUgQEAgV2ViQ29yZTo6RmluZE9wdGlvbnMgY29yZShGaW5kT3B0aW9ucyBvcAogewogICAgIFdl
YkNvcmU6OkZpbmRPcHRpb25zIHJlc3VsdDsKICAgICBpZiAob3B0aW9ucyAmIEZpbmRPcHRpb25z
Q2FzZUluc2Vuc2l0aXZlKQotICAgICAgICByZXN1bHQgfD0gV2ViQ29yZTo6Q2FzZUluc2Vuc2l0
aXZlOworICAgICAgICByZXN1bHQuYWRkKFdlYkNvcmU6OkNhc2VJbnNlbnNpdGl2ZSk7CiAgICAg
aWYgKG9wdGlvbnMgJiBGaW5kT3B0aW9uc0F0V29yZFN0YXJ0cykKLSAgICAgICAgcmVzdWx0IHw9
IFdlYkNvcmU6OkF0V29yZFN0YXJ0czsKKyAgICAgICAgcmVzdWx0LmFkZChXZWJDb3JlOjpBdFdv
cmRTdGFydHMpOwogICAgIGlmIChvcHRpb25zICYgRmluZE9wdGlvbnNUcmVhdE1lZGlhbENhcGl0
YWxBc1dvcmRTdGFydCkKLSAgICAgICAgcmVzdWx0IHw9IFdlYkNvcmU6OlRyZWF0TWVkaWFsQ2Fw
aXRhbEFzV29yZFN0YXJ0OworICAgICAgICByZXN1bHQuYWRkKFdlYkNvcmU6OlRyZWF0TWVkaWFs
Q2FwaXRhbEFzV29yZFN0YXJ0KTsKICAgICBpZiAob3B0aW9ucyAmIEZpbmRPcHRpb25zQmFja3dh
cmRzKQotICAgICAgICByZXN1bHQgfD0gV2ViQ29yZTo6QmFja3dhcmRzOworICAgICAgICByZXN1
bHQuYWRkKFdlYkNvcmU6OkJhY2t3YXJkcyk7CiAgICAgaWYgKG9wdGlvbnMgJiBGaW5kT3B0aW9u
c1dyYXBBcm91bmQpCi0gICAgICAgIHJlc3VsdCB8PSBXZWJDb3JlOjpXcmFwQXJvdW5kOworICAg
ICAgICByZXN1bHQuYWRkKFdlYkNvcmU6OldyYXBBcm91bmQpOwogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKQEAgLTIwNCw3ICsyMDQsNyBAQCB2b2lkIEZpbmRDb250cm9sbGVyOjpmaW5kU3RyaW5n
KGNvbnN0IFN0CiAgICAgLy8gd2UgbmVlZCB0byBhdm9pZCBzZW5kaW5nIHRoZSBub24tcGFpbnRl
ZCBzZWxlY3Rpb24gY2hhbmdlIHRvIHRoZSBVSSBwcm9jZXNzCiAgICAgLy8gc28gdGhhdCBpdCBk
b2VzIG5vdCBjbGVhciB0aGUgc2VsZWN0aW9uIG91dCBmcm9tIHVuZGVyIHVzLgogI2lmIFBMQVRG
T1JNKElPUykKLSAgICBjb3JlT3B0aW9ucyB8PSBEb05vdFJldmVhbFNlbGVjdGlvbjsKKyAgICBj
b3JlT3B0aW9ucy5hZGQoRG9Ob3RSZXZlYWxTZWxlY3Rpb24pOwogI2VuZGlmCiAKICAgICB3aWxs
RmluZFN0cmluZygpOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29v
cmRpbmF0ZWRHcmFwaGljcy9UaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRH
cmFwaGljcy9UaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAJKHJldmlzaW9uIDIz
NTUzOSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3QuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNTYsNyArMTU2LDcgQEAgdm9pZCBUaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9z
dDo6cwogCiAgICAgbV92aWV3cG9ydENvbnRyb2xsZXIuZGlkU2Nyb2xsKHJlY3QubG9jYXRpb24o
KSk7CiAgICAgaWYgKG1faXNEaXNjYXJkYWJsZSkKLSAgICAgICAgbV9kaXNjYXJkYWJsZVN5bmNB
Y3Rpb25zIHw9IERpc2NhcmRhYmxlU3luY0FjdGlvbnM6OlVwZGF0ZVZpZXdwb3J0OworICAgICAg
ICBtX2Rpc2NhcmRhYmxlU3luY0FjdGlvbnMuYWRkKERpc2NhcmRhYmxlU3luY0FjdGlvbnM6OlVw
ZGF0ZVZpZXdwb3J0KTsKICAgICBlbHNlCiAgICAgICAgIGRpZENoYW5nZVZpZXdwb3J0KCk7CiB9
CkBAIC0xNjUsNyArMTY1LDcgQEAgdm9pZCBUaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9z
dDo6YwogewogICAgIG1fdmlld3BvcnRDb250cm9sbGVyLmRpZENoYW5nZUNvbnRlbnRzU2l6ZShu
ZXdTaXplKTsKICAgICBpZiAobV9pc0Rpc2NhcmRhYmxlKQotICAgICAgICBtX2Rpc2NhcmRhYmxl
U3luY0FjdGlvbnMgfD0gRGlzY2FyZGFibGVTeW5jQWN0aW9uczo6VXBkYXRlVmlld3BvcnQ7Cisg
ICAgICAgIG1fZGlzY2FyZGFibGVTeW5jQWN0aW9ucy5hZGQoRGlzY2FyZGFibGVTeW5jQWN0aW9u
czo6VXBkYXRlVmlld3BvcnQpOwogICAgIGVsc2UKICAgICAgICAgZGlkQ2hhbmdlVmlld3BvcnQo
KTsKIH0KQEAgLTE3Myw3ICsxNzMsNyBAQCB2b2lkIFRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRy
ZWVIb3N0OjpjCiB2b2lkIFRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpkZXZpY2VP
clBhZ2VTY2FsZUZhY3RvckNoYW5nZWQoKQogewogICAgIGlmIChtX2lzRGlzY2FyZGFibGUpIHsK
LSAgICAgICAgbV9kaXNjYXJkYWJsZVN5bmNBY3Rpb25zIHw9IERpc2NhcmRhYmxlU3luY0FjdGlv
bnM6OlVwZGF0ZVNjYWxlOworICAgICAgICBtX2Rpc2NhcmRhYmxlU3luY0FjdGlvbnMuYWRkKERp
c2NhcmRhYmxlU3luY0FjdGlvbnM6OlVwZGF0ZVNjYWxlKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIApAQCAtMTg3LDcgKzE4Nyw3IEBAIHZvaWQgVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJl
ZUhvc3Q6OmQKIHZvaWQgVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnBhZ2VCYWNr
Z3JvdW5kVHJhbnNwYXJlbmN5Q2hhbmdlZCgpCiB7CiAgICAgaWYgKG1faXNEaXNjYXJkYWJsZSkg
ewotICAgICAgICBtX2Rpc2NhcmRhYmxlU3luY0FjdGlvbnMgfD0gRGlzY2FyZGFibGVTeW5jQWN0
aW9uczo6VXBkYXRlQmFja2dyb3VuZDsKKyAgICAgICAgbV9kaXNjYXJkYWJsZVN5bmNBY3Rpb25z
LmFkZChEaXNjYXJkYWJsZVN5bmNBY3Rpb25zOjpVcGRhdGVCYWNrZ3JvdW5kKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIApAQCAtMTk4LDcgKzE5OCw3IEBAIHZvaWQgVGhyZWFkZWRDb29yZGlu
YXRlZExheWVyVHJlZUhvc3Q6OnAKIHZvaWQgVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhv
c3Q6OnNpemVEaWRDaGFuZ2UoY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKICAgICBpZiAobV9pc0Rp
c2NhcmRhYmxlKSB7Ci0gICAgICAgIG1fZGlzY2FyZGFibGVTeW5jQWN0aW9ucyB8PSBEaXNjYXJk
YWJsZVN5bmNBY3Rpb25zOjpVcGRhdGVTaXplOworICAgICAgICBtX2Rpc2NhcmRhYmxlU3luY0Fj
dGlvbnMuYWRkKERpc2NhcmRhYmxlU3luY0FjdGlvbnM6OlVwZGF0ZVNpemUpOwogICAgICAgICBt
X3ZpZXdwb3J0Q29udHJvbGxlci5kaWRDaGFuZ2VWaWV3cG9ydFNpemUoc2l6ZSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CkBAIC0yMTgsNyArMjE4LDcgQEAgdm9pZCBUaHJlYWRlZENvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdDo6ZAogewogICAgIG1fdmlld3BvcnRDb250cm9sbGVyLmRpZENoYW5n
ZVZpZXdwb3J0QXR0cmlidXRlcyhXVEZNb3ZlKGF0dHIpKTsKICAgICBpZiAobV9pc0Rpc2NhcmRh
YmxlKQotICAgICAgICBtX2Rpc2NhcmRhYmxlU3luY0FjdGlvbnMgfD0gRGlzY2FyZGFibGVTeW5j
QWN0aW9uczo6VXBkYXRlVmlld3BvcnQ7CisgICAgICAgIG1fZGlzY2FyZGFibGVTeW5jQWN0aW9u
cy5hZGQoRGlzY2FyZGFibGVTeW5jQWN0aW9uczo6VXBkYXRlVmlld3BvcnQpOwogICAgIGVsc2UK
ICAgICAgICAgZGlkQ2hhbmdlVmlld3BvcnQoKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDIzNTUzOSkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDE4LTA4LTMxICBBbnR0
aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIE9wdGlvblNl
dCB8PSBhbmQgLT0gb3BlcmF0b3JzIHdpdGggYWRkKCkgYW5kIHJlbW92ZSgpIGZ1bmN0aW9ucwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg5MTY5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJWaWV3
L1dlYkZyYW1lLm1tOgorICAgICAgICAoLVtXZWJGcmFtZSBfZHJhd1JlY3Q6Y29udGVudHNPbmx5
Ol0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKGNvcmVPcHRpb25z
KToKKwogMjAxOC0wOC0zMSAgRnJlZGVyaWMgV2FuZyAgPGZ3YW5nQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgQnVnIDE4MjA1MyAtIFtDU1NPTSBWaWV3XSBJbXBsZW1lbnQgc3RhbmRhcmQgYmVoYXZp
b3IgZm9yIHNjcm9sbGluZ0VsZW1lbnQKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViRnJhbWUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJGcmFtZS5tbQkocmV2aXNpb24gMjM1NTM5KQorKysgU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQkod29ya2luZyBjb3B5KQpAQCAtNjQ5LDE2ICs2
NDksMTYgQEAgLSAodm9pZClfZHJhd1JlY3Q6KE5TUmVjdClyZWN0IGNvbnRlbnRzTwogICAgICAg
ICAvLyBGb3Igc3ViZnJhbWVzLCB3ZSBuZWVkIHRvIGluaGVyaXQgdGhlIHBhaW50IGJlaGF2aW9y
IGZyb20gb3VyIHBhcmVudAogICAgICAgICBpZiAoRnJhbWVWaWV3KiBwYXJlbnRWaWV3ID0gcGFy
ZW50RnJhbWUgPyBwYXJlbnRGcmFtZS0+dmlldygpIDogbnVsbHB0cikgewogICAgICAgICAgICAg
aWYgKHBhcmVudFZpZXctPnBhaW50QmVoYXZpb3IoKS5jb250YWlucyhQYWludEJlaGF2aW9yOjpG
bGF0dGVuQ29tcG9zaXRpbmdMYXllcnMpKQotICAgICAgICAgICAgICAgIHBhaW50QmVoYXZpb3Ig
fD0gUGFpbnRCZWhhdmlvcjo6RmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzOworICAgICAgICAgICAg
ICAgIHBhaW50QmVoYXZpb3IuYWRkKFBhaW50QmVoYXZpb3I6OkZsYXR0ZW5Db21wb3NpdGluZ0xh
eWVycyk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChwYXJlbnRWaWV3LT5wYWludEJl
aGF2aW9yKCkuY29udGFpbnMoUGFpbnRCZWhhdmlvcjo6U25hcHNob3R0aW5nKSkKLSAgICAgICAg
ICAgICAgICBwYWludEJlaGF2aW9yIHw9IFBhaW50QmVoYXZpb3I6OlNuYXBzaG90dGluZzsKKyAg
ICAgICAgICAgICAgICBwYWludEJlaGF2aW9yLmFkZChQYWludEJlaGF2aW9yOjpTbmFwc2hvdHRp
bmcpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAocGFyZW50Vmlldy0+cGFpbnRCZWhh
dmlvcigpLmNvbnRhaW5zKFBhaW50QmVoYXZpb3I6OlRpbGVGaXJzdFBhaW50KSkKLSAgICAgICAg
ICAgICAgICBwYWludEJlaGF2aW9yIHw9IFBhaW50QmVoYXZpb3I6OlRpbGVGaXJzdFBhaW50Owor
ICAgICAgICAgICAgICAgIHBhaW50QmVoYXZpb3IuYWRkKFBhaW50QmVoYXZpb3I6OlRpbGVGaXJz
dFBhaW50KTsKICAgICAgICAgfQogICAgIH0gZWxzZQotICAgICAgICBwYWludEJlaGF2aW9yIHw9
IFtzZWxmIF9wYWludEJlaGF2aW9yRm9yRGVzdGluYXRpb25Db250ZXh0OmN0eF07CisgICAgICAg
IHBhaW50QmVoYXZpb3IuYWRkKFtzZWxmIF9wYWludEJlaGF2aW9yRm9yRGVzdGluYXRpb25Db250
ZXh0OmN0eF0pOwogICAgICAgICAKICAgICB2aWV3LT5zZXRQYWludEJlaGF2aW9yKHBhaW50QmVo
YXZpb3IpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3
Lm1tCShyZXZpc2lvbiAyMzU1MzkpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYlZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTU3MSwxNyArNTcxLDE3IEBAIEZpbmRPcHRp
b25zIGNvcmVPcHRpb25zKFdlYkZpbmRPcHRpb25zIG8KIHsKICAgICBGaW5kT3B0aW9ucyBmaW5k
T3B0aW9uczsKICAgICBpZiAob3B0aW9ucyAmIFdlYkZpbmRPcHRpb25zQ2FzZUluc2Vuc2l0aXZl
KQotICAgICAgICBmaW5kT3B0aW9ucyB8PSBDYXNlSW5zZW5zaXRpdmU7CisgICAgICAgIGZpbmRP
cHRpb25zLmFkZChDYXNlSW5zZW5zaXRpdmUpOwogICAgIGlmIChvcHRpb25zICYgV2ViRmluZE9w
dGlvbnNBdFdvcmRTdGFydHMpCi0gICAgICAgIGZpbmRPcHRpb25zIHw9IEF0V29yZFN0YXJ0czsK
KyAgICAgICAgZmluZE9wdGlvbnMuYWRkKEF0V29yZFN0YXJ0cyk7CiAgICAgaWYgKG9wdGlvbnMg
JiBXZWJGaW5kT3B0aW9uc1RyZWF0TWVkaWFsQ2FwaXRhbEFzV29yZFN0YXJ0KQotICAgICAgICBm
aW5kT3B0aW9ucyB8PSBUcmVhdE1lZGlhbENhcGl0YWxBc1dvcmRTdGFydDsKKyAgICAgICAgZmlu
ZE9wdGlvbnMuYWRkKFRyZWF0TWVkaWFsQ2FwaXRhbEFzV29yZFN0YXJ0KTsKICAgICBpZiAob3B0
aW9ucyAmIFdlYkZpbmRPcHRpb25zQmFja3dhcmRzKQotICAgICAgICBmaW5kT3B0aW9ucyB8PSBC
YWNrd2FyZHM7CisgICAgICAgIGZpbmRPcHRpb25zLmFkZChCYWNrd2FyZHMpOwogICAgIGlmIChv
cHRpb25zICYgV2ViRmluZE9wdGlvbnNXcmFwQXJvdW5kKQotICAgICAgICBmaW5kT3B0aW9ucyB8
PSBXcmFwQXJvdW5kOworICAgICAgICBmaW5kT3B0aW9ucy5hZGQoV3JhcEFyb3VuZCk7CiAgICAg
aWYgKG9wdGlvbnMgJiBXZWJGaW5kT3B0aW9uc1N0YXJ0SW5TZWxlY3Rpb24pCi0gICAgICAgIGZp
bmRPcHRpb25zIHw9IFN0YXJ0SW5TZWxlY3Rpb247CisgICAgICAgIGZpbmRPcHRpb25zLmFkZChT
dGFydEluU2VsZWN0aW9uKTsKICAgICByZXR1cm4gZmluZE9wdGlvbnM7CiB9CiAKSW5kZXg6IFNv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCShyZXZpc2lvbiAyMzU1MzkpCisrKyBTb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgzMiwxMSAr
MzgzMiwxMSBAQCBIUkVTVUxUIFdlYlZpZXc6OnNlYXJjaEZvcihfSW5fIEJTVFIgc3RyCiAKICAg
ICBGaW5kT3B0aW9ucyBvcHRpb25zOwogICAgIGlmICghY2FzZUZsYWcpCi0gICAgICAgIG9wdGlv
bnMgfD0gQ2FzZUluc2Vuc2l0aXZlOworICAgICAgICBvcHRpb25zLmFkZChDYXNlSW5zZW5zaXRp
dmUpOwogICAgIGlmICghZm9yd2FyZCkKLSAgICAgICAgb3B0aW9ucyB8PSBCYWNrd2FyZHM7Cisg
ICAgICAgIG9wdGlvbnMuYWRkKEJhY2t3YXJkcyk7CiAgICAgaWYgKHdyYXBGbGFnKQotICAgICAg
ICBvcHRpb25zIHw9IFdyYXBBcm91bmQ7CisgICAgICAgIG9wdGlvbnMuYWRkKFdyYXBBcm91bmQp
OwogICAgICpmb3VuZCA9IG1fcGFnZS0+ZmluZFN0cmluZyh0b1N0cmluZyhzdHIpLCBvcHRpb25z
KTsKICAgICByZXR1cm4gU19PSzsKIH0KQEAgLTM5MDEsNyArMzkwMSw3IEBAIEhSRVNVTFQgV2Vi
Vmlldzo6bWFya0FsbE1hdGNoZXNGb3JUZXh0KF8KIAogICAgIFdlYkNvcmU6OkZpbmRPcHRpb25z
IG9wdGlvbnM7CiAgICAgaWYgKCFjYXNlU2Vuc2l0aXZlKQotICAgICAgICBvcHRpb25zIHw9IFdl
YkNvcmU6OkNhc2VJbnNlbnNpdGl2ZTsKKyAgICAgICAgb3B0aW9ucy5hZGQoV2ViQ29yZTo6Q2Fz
ZUluc2Vuc2l0aXZlKTsKIAogICAgICptYXRjaGVzID0gbV9wYWdlLT5tYXJrQWxsTWF0Y2hlc0Zv
clRleHQodG9TdHJpbmcoc3RyKSwgb3B0aW9ucywgaGlnaGxpZ2h0LCBsaW1pdCk7CiAgICAgcmV0
dXJuIFNfT0s7CkBAIC03ODQwLDE3ICs3ODQwLDE3IEBAIEhSRVNVTFQgV2ViVmlldzo6ZmluZFN0
cmluZyhfSW5fIEJTVFIgc3QKICAgICBXZWJDb3JlOjpGaW5kT3B0aW9ucyBjb3JlT3B0aW9uczsK
IAogICAgIGlmIChvcHRpb25zICYgV2ViRmluZE9wdGlvbnNDYXNlSW5zZW5zaXRpdmUpCi0gICAg
ICAgIGNvcmVPcHRpb25zIHw9IFdlYkNvcmU6OkNhc2VJbnNlbnNpdGl2ZTsKKyAgICAgICAgY29y
ZU9wdGlvbnMuYWRkKFdlYkNvcmU6OkNhc2VJbnNlbnNpdGl2ZSk7CiAgICAgaWYgKG9wdGlvbnMg
JiBXZWJGaW5kT3B0aW9uc0F0V29yZFN0YXJ0cykKLSAgICAgICAgY29yZU9wdGlvbnMgfD0gV2Vi
Q29yZTo6QXRXb3JkU3RhcnRzOworICAgICAgICBjb3JlT3B0aW9ucy5hZGQoV2ViQ29yZTo6QXRX
b3JkU3RhcnRzKTsKICAgICBpZiAob3B0aW9ucyAmIFdlYkZpbmRPcHRpb25zVHJlYXRNZWRpYWxD
YXBpdGFsQXNXb3JkU3RhcnQpCi0gICAgICAgIGNvcmVPcHRpb25zIHw9IFdlYkNvcmU6OlRyZWF0
TWVkaWFsQ2FwaXRhbEFzV29yZFN0YXJ0OworICAgICAgICBjb3JlT3B0aW9ucy5hZGQoV2ViQ29y
ZTo6VHJlYXRNZWRpYWxDYXBpdGFsQXNXb3JkU3RhcnQpOwogICAgIGlmIChvcHRpb25zICYgV2Vi
RmluZE9wdGlvbnNCYWNrd2FyZHMpCi0gICAgICAgIGNvcmVPcHRpb25zIHw9IFdlYkNvcmU6OkJh
Y2t3YXJkczsKKyAgICAgICAgY29yZU9wdGlvbnMuYWRkKFdlYkNvcmU6OkJhY2t3YXJkcyk7CiAg
ICAgaWYgKG9wdGlvbnMgJiBXZWJGaW5kT3B0aW9uc1dyYXBBcm91bmQpCi0gICAgICAgIGNvcmVP
cHRpb25zIHw9IFdlYkNvcmU6OldyYXBBcm91bmQ7CisgICAgICAgIGNvcmVPcHRpb25zLmFkZChX
ZWJDb3JlOjpXcmFwQXJvdW5kKTsKICAgICBpZiAob3B0aW9ucyAmIFdlYkZpbmRPcHRpb25zU3Rh
cnRJblNlbGVjdGlvbikKLSAgICAgICAgY29yZU9wdGlvbnMgfD0gV2ViQ29yZTo6U3RhcnRJblNl
bGVjdGlvbjsKKyAgICAgICAgY29yZU9wdGlvbnMuYWRkKFdlYkNvcmU6OlN0YXJ0SW5TZWxlY3Rp
b24pOwogCiAgICAgKmZvdW5kID0gbV9wYWdlLT5maW5kU3RyaW5nKHRvU3RyaW5nKHN0cmluZyks
IGNvcmVPcHRpb25zKTsKICAgICByZXR1cm4gU19PSzsKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzNTUzOSkKKysrIFRvb2xz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDE4LTA4LTMxICBB
bnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIE9wdGlv
blNldCB8PSBhbmQgLT0gb3BlcmF0b3JzIHdpdGggYWRkKCkgYW5kIHJlbW92ZSgpIGZ1bmN0aW9u
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg5MTY5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dURi9PcHRpb25TZXQuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6VEVTVCk6CisKIDIwMTgtMDgtMzEgIEZyZWRlcmljIFdhbmcgIDxmd2FuZ0BpZ2FsaWEuY29t
PgogCiAgICAgICAgIEJ1ZyAxODIwNTMgLSBbQ1NTT00gVmlld10gSW1wbGVtZW50IHN0YW5kYXJk
IGJlaGF2aW9yIGZvciBzY3JvbGxpbmdFbGVtZW50CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dURi9PcHRpb25TZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL09wdGlvblNldC5jcHAJKHJldmlzaW9uIDIzNTUzOSkKKysrIFRvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL09wdGlvblNldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk2
LDE2ICs5NiwyOSBAQCBURVNUKFdURl9PcHRpb25TZXQsIE1pbnVzKQogICAgIEVYUEVDVF9UUlVF
KChzZXQgLSBzZXQpLmlzRW1wdHkoKSk7CiB9CiAKLVRFU1QoV1RGX09wdGlvblNldCwgTWludXNF
cXVhbCkKK1RFU1QoV1RGX09wdGlvblNldCwgQWRkQW5kUmVtb3ZlKQogewotICAgIE9wdGlvblNl
dDxFeGFtcGxlRmxhZ3M+IHNldCB7IEV4YW1wbGVGbGFnczo6QSwgRXhhbXBsZUZsYWdzOjpCLCBF
eGFtcGxlRmxhZ3M6OkMgfTsKKyAgICBPcHRpb25TZXQ8RXhhbXBsZUZsYWdzPiBzZXQ7CiAKLSAg
ICBFWFBFQ1RfVFJVRSgoKHNldCAtPSBFeGFtcGxlRmxhZ3M6OkEpID09IE9wdGlvblNldDxFeGFt
cGxlRmxhZ3M+IHsgRXhhbXBsZUZsYWdzOjpCLCBFeGFtcGxlRmxhZ3M6OkMgfSkpOwotICAgIEVY
UEVDVF9UUlVFKChzZXQgPT0gT3B0aW9uU2V0PEV4YW1wbGVGbGFncz4geyBFeGFtcGxlRmxhZ3M6
OkIsIEV4YW1wbGVGbGFnczo6QyB9KSk7Ci0gICAgRVhQRUNUX1RSVUUoKChzZXQgLT0gRXhhbXBs
ZUZsYWdzOjpEKSA9PSBPcHRpb25TZXQ8RXhhbXBsZUZsYWdzPiB7IEV4YW1wbGVGbGFnczo6Qiwg
RXhhbXBsZUZsYWdzOjpDIH0pKTsKLSAgICBFWFBFQ1RfVFJVRSgoc2V0ID09IE9wdGlvblNldDxF
eGFtcGxlRmxhZ3M+IHsgRXhhbXBsZUZsYWdzOjpCLCBFeGFtcGxlRmxhZ3M6OkMgfSkpOwotICAg
IEVYUEVDVF9UUlVFKChzZXQgLT0gc2V0KS5pc0VtcHR5KCkpOwotICAgIEVYUEVDVF9UUlVFKHNl
dC5pc0VtcHR5KCkpOworICAgIHNldC5hZGQoRXhhbXBsZUZsYWdzOjpBKTsKKyAgICBFWFBFQ1Rf
VFJVRShzZXQuY29udGFpbnMoRXhhbXBsZUZsYWdzOjpBKSk7CisgICAgRVhQRUNUX0ZBTFNFKHNl
dC5jb250YWlucyhFeGFtcGxlRmxhZ3M6OkIpKTsKKyAgICBFWFBFQ1RfRkFMU0Uoc2V0LmNvbnRh
aW5zKEV4YW1wbGVGbGFnczo6QykpOworCisgICAgc2V0LmFkZCh7IEV4YW1wbGVGbGFnczo6Qiwg
RXhhbXBsZUZsYWdzOjpDIH0pOworICAgIEVYUEVDVF9UUlVFKHNldC5jb250YWlucyhFeGFtcGxl
RmxhZ3M6OkEpKTsKKyAgICBFWFBFQ1RfVFJVRShzZXQuY29udGFpbnMoRXhhbXBsZUZsYWdzOjpC
KSk7CisgICAgRVhQRUNUX1RSVUUoc2V0LmNvbnRhaW5zKEV4YW1wbGVGbGFnczo6QykpOworCisg
ICAgc2V0LnJlbW92ZShFeGFtcGxlRmxhZ3M6OkIpOworICAgIEVYUEVDVF9UUlVFKHNldC5jb250
YWlucyhFeGFtcGxlRmxhZ3M6OkEpKTsKKyAgICBFWFBFQ1RfRkFMU0Uoc2V0LmNvbnRhaW5zKEV4
YW1wbGVGbGFnczo6QikpOworICAgIEVYUEVDVF9UUlVFKHNldC5jb250YWlucyhFeGFtcGxlRmxh
Z3M6OkMpKTsKKworICAgIHNldC5yZW1vdmUoeyBFeGFtcGxlRmxhZ3M6OkEsIEV4YW1wbGVGbGFn
czo6QyB9KTsKKyAgICBFWFBFQ1RfRkFMU0Uoc2V0LmNvbnRhaW5zKEV4YW1wbGVGbGFnczo6QSkp
OworICAgIEVYUEVDVF9GQUxTRShzZXQuY29udGFpbnMoRXhhbXBsZUZsYWdzOjpCKSk7CisgICAg
RVhQRUNUX0ZBTFNFKHNldC5jb250YWlucyhFeGFtcGxlRmxhZ3M6OkMpKTsKIH0KIAogVEVTVChX
VEZfT3B0aW9uU2V0LCBDb250YWluc1R3b0ZsYWdzKQpAQCAtMTQxLDE1ICsxNTQsNiBAQCBURVNU
KFdURl9PcHRpb25TZXQsIENvbnRhaW5zVHdvRmxhZ3MzKQogICAgIEVYUEVDVF9GQUxTRShzZXQu
Y29udGFpbnMoRXhhbXBsZUZsYWdzOjpDKSk7CiB9CiAKLVRFU1QoV1RGX09wdGlvblNldCwgT3Bl
cmF0b3JCaXR3aXNlT3IpCi17Ci0gICAgT3B0aW9uU2V0PEV4YW1wbGVGbGFncz4gc2V0ID0gRXhh
bXBsZUZsYWdzOjpBOwotICAgIHNldCB8PSBFeGFtcGxlRmxhZ3M6OkM7Ci0gICAgRVhQRUNUX1RS
VUUoc2V0LmNvbnRhaW5zKEV4YW1wbGVGbGFnczo6QSkpOwotICAgIEVYUEVDVF9GQUxTRShzZXQu
Y29udGFpbnMoRXhhbXBsZUZsYWdzOjpCKSk7Ci0gICAgRVhQRUNUX1RSVUUoc2V0LmNvbnRhaW5z
KEV4YW1wbGVGbGFnczo6QykpOwotfQotCiBURVNUKFdURl9PcHRpb25TZXQsIEVtcHR5T3B0aW9u
U2V0VG9SYXdWYWx1ZVRvT3B0aW9uU2V0KQogewogICAgIE9wdGlvblNldDxFeGFtcGxlRmxhZ3M+
IHNldDsKQEAgLTMwMiwxMCArMzA2LDEwIEBAIFRFU1QoV1RGX09wdGlvblNldCwgTmV4dEl0ZW1B
ZnRlckxhcmdlc3QKIFRFU1QoV1RGX09wdGlvblNldCwgSXRlcmF0aW9uT3JkZXJUaGVTYW1lUmVn
YXJkbGVzc09mSW5zZXJ0aW9uT3JkZXIpCiB7CiAgICAgT3B0aW9uU2V0PEV4YW1wbGVGbGFncz4g
c2V0MSA9IEV4YW1wbGVGbGFnczo6QzsKLSAgICBzZXQxIHw9IEV4YW1wbGVGbGFnczo6QTsKKyAg
ICBzZXQxLmFkZChFeGFtcGxlRmxhZ3M6OkEpOwogCiAgICAgT3B0aW9uU2V0PEV4YW1wbGVGbGFn
cz4gc2V0MiA9IEV4YW1wbGVGbGFnczo6QTsKLSAgICBzZXQyIHw9IEV4YW1wbGVGbGFnczo6QzsK
KyAgICBzZXQyLmFkZChFeGFtcGxlRmxhZ3M6OkMpOwogCiAgICAgT3B0aW9uU2V0PEV4YW1wbGVG
bGFncz46Oml0ZXJhdG9yIGl0MSA9IHNldDEuYmVnaW4oKTsKICAgICBPcHRpb25TZXQ8RXhhbXBs
ZUZsYWdzPjo6aXRlcmF0b3IgaXQyID0gc2V0Mi5iZWdpbigpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>348633</attachid>
            <date>2018-08-31 04:47:29 -0700</date>
            <delta_ts>2018-08-31 10:59:12 -0700</delta_ts>
            <desc>patch</desc>
            <filename>optionset-add-remove-9.patch</filename>
            <type>text/plain</type>
            <size>126832</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyMzU1MzkpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDE4LTA4LTMxICBBbnR0aSBLb2l2aXN0byAgPGFu
dHRpQGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIE9wdGlvblNldCB8PSBhbmQgLT0gb3Bl
cmF0b3JzIHdpdGggYWRkKCkgYW5kIHJlbW92ZSgpIGZ1bmN0aW9ucworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg5MTY5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wcm92ZSBjb2RlIHJlYWRhYmlsaXR5
LgorCisgICAgICAgICogd3RmL09wdGlvblNldC5oOgorICAgICAgICAoV1RGOjpPcHRpb25TZXQ6
OmFkZCk6CisgICAgICAgIChXVEY6Ok9wdGlvblNldDo6cmVtb3ZlKToKKyAgICAgICAgKFdURjo6
T3B0aW9uU2V0OjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdURjo6T3B0aW9uU2V0OjpvcGVyYXRv
ciE9KToKKyAgICAgICAgKFdURjo6T3B0aW9uU2V0OjpvcGVyYXRvcnw9KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdURjo6T3B0aW9uU2V0OjpvcGVyYXRvci09KTogRGVsZXRlZC4KKyAgICAgICAgKiB3
dGYvUHJvY2Vzc1ByaXZpbGVnZS5jcHA6CisgICAgICAgIChXVEY6OmFkZFByb2Nlc3NQcml2aWxl
Z2UpOgorICAgICAgICAoV1RGOjpyZW1vdmVQcm9jZXNzUHJpdmlsZWdlKToKKwogMjAxOC0wOC0z
MCAgRG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgogCiAgICAgICAgIFtDTWFr
ZV0gUmVwbGFjZSBBVkZvdW5kYXRpb25TdXBwb3J0LnB5IHVzaW5nIENNYWtlCkluZGV4OiBTb3Vy
Y2UvV1RGL3d0Zi9PcHRpb25TZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9PcHRp
b25TZXQuaAkocmV2aXNpb24gMjM1NTM5KQorKysgU291cmNlL1dURi93dGYvT3B0aW9uU2V0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTExMSwyNiArMTExLDI0IEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuICgqdGhpcyAmIG9wdGlvblNldCkgPT0gb3B0aW9uU2V0OwogICAgIH0KIAotICAgIGNvbnN0
ZXhwciBmcmllbmQgYm9vbCBvcGVyYXRvcj09KE9wdGlvblNldCBsaHMsIE9wdGlvblNldCByaHMp
CisgICAgY29uc3RleHByIHZvaWQgYWRkKE9wdGlvblNldCBvcHRpb25TZXQpCiAgICAgewotICAg
ICAgICByZXR1cm4gbGhzLm1fc3RvcmFnZSA9PSByaHMubV9zdG9yYWdlOworICAgICAgICBtX3N0
b3JhZ2UgfD0gb3B0aW9uU2V0Lm1fc3RvcmFnZTsKICAgICB9CiAKLSAgICBjb25zdGV4cHIgZnJp
ZW5kIGJvb2wgb3BlcmF0b3IhPShPcHRpb25TZXQgbGhzLCBPcHRpb25TZXQgcmhzKQorICAgIGNv
bnN0ZXhwciB2b2lkIHJlbW92ZShPcHRpb25TZXQgb3B0aW9uU2V0KQogICAgIHsKLSAgICAgICAg
cmV0dXJuIGxocy5tX3N0b3JhZ2UgIT0gcmhzLm1fc3RvcmFnZTsKKyAgICAgICAgbV9zdG9yYWdl
ICY9IH5vcHRpb25TZXQubV9zdG9yYWdlOwogICAgIH0KIAotICAgIGZyaWVuZCBPcHRpb25TZXQm
IG9wZXJhdG9yfD0oT3B0aW9uU2V0JiBsaHMsIE9wdGlvblNldCByaHMpCisgICAgY29uc3RleHBy
IGZyaWVuZCBib29sIG9wZXJhdG9yPT0oT3B0aW9uU2V0IGxocywgT3B0aW9uU2V0IHJocykKICAg
ICB7Ci0gICAgICAgIGxocy5tX3N0b3JhZ2UgfD0gcmhzLm1fc3RvcmFnZTsKLSAgICAgICAgcmV0
dXJuIGxoczsKKyAgICAgICAgcmV0dXJuIGxocy5tX3N0b3JhZ2UgPT0gcmhzLm1fc3RvcmFnZTsK
ICAgICB9CiAKLSAgICBmcmllbmQgT3B0aW9uU2V0JiBvcGVyYXRvci09KE9wdGlvblNldCYgbGhz
LCBPcHRpb25TZXQgcmhzKQorICAgIGNvbnN0ZXhwciBmcmllbmQgYm9vbCBvcGVyYXRvciE9KE9w
dGlvblNldCBsaHMsIE9wdGlvblNldCByaHMpCiAgICAgewotICAgICAgICBsaHMubV9zdG9yYWdl
ICY9IH5yaHMubV9zdG9yYWdlOwotICAgICAgICByZXR1cm4gbGhzOworICAgICAgICByZXR1cm4g
bGhzLm1fc3RvcmFnZSAhPSByaHMubV9zdG9yYWdlOwogICAgIH0KIAogICAgIGNvbnN0ZXhwciBm
cmllbmQgT3B0aW9uU2V0IG9wZXJhdG9yfChPcHRpb25TZXQgbGhzLCBPcHRpb25TZXQgcmhzKQpJ
bmRleDogU291cmNlL1dURi93dGYvUHJvY2Vzc1ByaXZpbGVnZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dURi93dGYvUHJvY2Vzc1ByaXZpbGVnZS5jcHAJKHJldmlzaW9uIDIzNTUzOSkKKysr
IFNvdXJjZS9XVEYvd3RmL1Byb2Nlc3NQcml2aWxlZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
NywxMiArNTcsMTIgQEAgYm9vbCBoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZwog
CiB2b2lkIGFkZFByb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZSBwcml2aWxlZ2UpCiB7
Ci0gICAgcHJvY2Vzc1ByaXZpbGVnZXMoKSB8PSBwcml2aWxlZ2U7CisgICAgcHJvY2Vzc1ByaXZp
bGVnZXMoKS5hZGQocHJpdmlsZWdlKTsKIH0KIAogdm9pZCByZW1vdmVQcm9jZXNzUHJpdmlsZWdl
KFByb2Nlc3NQcml2aWxlZ2UgcHJpdmlsZWdlKQogewotICAgIHByb2Nlc3NQcml2aWxlZ2VzKCkg
PSBwcm9jZXNzUHJpdmlsZWdlcygpIC0gcHJpdmlsZWdlOworICAgIHByb2Nlc3NQcml2aWxlZ2Vz
KCkucmVtb3ZlKHByaXZpbGVnZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdURgpJbmRleDogU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkocmV2aXNpb24gMjM1NTM5KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTE5IEBACisyMDE4LTA4LTMxICBBbnR0aSBLb2l2aXN0byAg
PGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIE9wdGlvblNldCB8PSBhbmQgLT0g
b3BlcmF0b3JzIHdpdGggYWRkKCkgYW5kIHJlbW92ZSgpIGZ1bmN0aW9ucworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg5MTY5CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVj
dDo6cmFuZ2VPZlN0cmluZ0Nsb3Nlc3RUb1JhbmdlSW5EaXJlY3Rpb24gY29uc3QpOgorICAgICAg
ICAqIGNzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRleHREZWNvcmF0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRleHRFbXBoYXNpc1Bvc2l0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRleHRVbmRl
cmxpbmVQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6
OmNvbnZlcnRUZXh0RGVjb3JhdGlvblNraXApOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWls
ZGVyQ29udmVydGVyOjpjb252ZXJ0U3BlYWtBcyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1
aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRIYW5naW5nUHVuY3R1YXRpb24pOgorICAgICAgICAqIGNz
cy9wYXJzZXIvQ1NTUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFy
c2VTeXN0ZW1Db2xvcik6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50OjpzdHlsZUNvbG9yT3B0aW9ucyBjb25zdCk6CisgICAgICAgICogZG9t
L0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dE1hcmtlckNvbnRyb2xsZXI6OmFkZE1hcmtlcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dE1hcmtlckNvbnRyb2xsZXI6OnJlbW92ZU1hcmtlcnMpOgorICAgICAgICAqIGRvbS9TY3JpcHRl
ZEFuaW1hdGlvbkNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0ZWRBbmlt
YXRpb25Db250cm9sbGVyOjphZGRUaHJvdHRsaW5nUmVhc29uKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcjo6cmVtb3ZlVGhyb3R0bGluZ1JlYXNvbik6Cisg
ICAgICAgICogZG9tL1NlY3VyaXR5Q29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJp
dHlDb250ZXh0OjpzZXRGb3VuZE1peGVkQ29udGVudCk6CisgICAgICAgICogZG9tL1VJRXZlbnRX
aXRoS2V5U3RhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VUlFdmVudFdpdGhLZXlTdGF0ZTo6
bW9kaWZpZXJzRnJvbUluaXRpYWxpemVyKToKKyAgICAgICAgKFdlYkNvcmU6OlVJRXZlbnRXaXRo
S2V5U3RhdGU6OnNldE1vZGlmaWVyS2V5cyk6CisgICAgICAgICogZG9tL1VzZXJBY3Rpb25FbGVt
ZW50U2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJBY3Rpb25FbGVtZW50U2V0OjpzZXRG
bGFncyk6CisgICAgICAgICogZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDb21wb3NpdGVFZGl0Q29tbWFuZDo6bW92ZVBhcmFncmFwaHMpOgorICAg
ICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cmVw
bGFjZVNlbGVjdGlvbldpdGhGcmFnbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmFw
cGxpZWRFZGl0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6bWFya01pc3NwZWxsaW5n
c0FmdGVyVHlwaW5nVG9Xb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6bWFya01pc3Nw
ZWxsaW5nc0FuZEJhZEdyYW1tYXIpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpyZXNvbHZl
VGV4dENoZWNraW5nVHlwZU1hc2spOgorICAgICAgICAqIGVkaXRpbmcvRnJhbWVTZWxlY3Rpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246Om1vdmVXaXRob3V0VmFsaWRh
dGlvblRvKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpzZXRTZWxlY3RlZFJh
bmdlKToKKyAgICAgICAgKiBlZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmg6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZVNlbGVjdGlvbjo6ZGVmYXVsdFNldFNlbGVjdGlvbk9wdGlvbnMpOgorICAgICAg
ICAqIGVkaXRpbmcvTW92ZVNlbGVjdGlvbkNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TW92ZVNlbGVjdGlvbkNvbW1hbmQ6OmRvQXBwbHkpOgorICAgICAgICAqIGVkaXRpbmcvU3BlbGxD
aGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWxsQ2hlY2tlcjo6ZGlkQ2hlY2tTdWNj
ZWVkKToKKyAgICAgICAgKiBlZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0Q2hlY2tpbmdIZWxwZXI6OmZpbmRGaXJzdE1pc3NwZWxsaW5nT3JCYWRH
cmFtbWFyKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDaGVja2luZ0hlbHBlcjo6Z3Vlc3Nlc0Zv
ck1pc3NwZWxsZWRPclVuZ3JhbW1hdGljYWxSYW5nZSBjb25zdCk6CisgICAgICAgICogZWRpdGlu
Zy9UZXh0SXRlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VhcmNoQnVmZmVyOjpTZWFy
Y2hCdWZmZXIpOgorICAgICAgICAqIGh0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTEFuY2hvckVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OnJlbG9hZCk6CisgICAgICAgICogcGFnZS9Db250ZXh0
TWVudUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVDb250cm9s
bGVyOjpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZCk6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpmaW5kIGNvbnN0KToKKyAgICAgICAg
KiBwYWdlL0RyYWdDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9s
bGVyOjpjb25jbHVkZUVkaXREcmFnKToKKyAgICAgICAgKiBwYWdlL0ZyYW1lU25hcHNob3R0aW5n
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNuYXBzaG90RnJhbWVSZWN0V2l0aENsaXApOgorICAg
ICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnVwZGF0ZUxheWVy
UG9zaXRpb25GbGFncyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OndpbGxQYWludENv
bnRlbnRzKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFn
ZTo6c2V0SXNWaXNpYmxlKToKKyAgICAgICAgKiBwYWdlL1BlcmZvcm1hbmNlT2JzZXJ2ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybWFuY2VPYnNlcnZlcjo6b2JzZXJ2ZSk6CisgICAg
ICAgICogcGFnZS9UZXh0SW5kaWNhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRJbmRp
Y2F0b3I6OmNyZWF0ZVdpdGhSYW5nZSk6CisgICAgICAgICogcGFnZS9XaW5kb3dGZWF0dXJlcy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZURpc2FibGVkQWRhcHRhdGlvbnMpOgorICAgICAg
ICAqIHBhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5oOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGVudFNlY3VyaXR5UG9saWN5OjphZGRIYXNoQWxnb3JpdGhtc0ZvcklubGluZVNjcmlwdHMp
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5OjphZGRIYXNoQWxnb3Jp
dGhtc0ZvcklubGluZVN0eWxlc2hlZXRzKToKKyAgICAgICAgKiBwYWdlL2NzcC9Db250ZW50U2Vj
dXJpdHlQb2xpY3lTb3VyY2VMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1
cml0eVBvbGljeVNvdXJjZUxpc3Q6OnBhcnNlSGFzaFNvdXJjZSk6CisgICAgICAgICogcGxhdGZv
cm0vUGxhdGZvcm1FdmVudC5oOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6UGxh
dGZvcm1FdmVudCk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1BsYXRmb3JtRXZlbnRGYWN0b3J5
SU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6bW9kaWZpZXJzRm9yRXZlbnQpOgorICAgICAgICAq
IHBsYXRmb3JtL21hYy9QbGF0Zm9ybUV2ZW50RmFjdG9yeU1hYy5tbToKKyAgICAgICAgKFdlYkNv
cmU6Om1vZGlmaWVyc0ZvckV2ZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnVwZGF0ZUxheWVyUG9zaXRpb25z
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjp1cGRhdGVMYXllclBvc2l0aW9uc0Fm
dGVyU2Nyb2xsKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWludExheWVyKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWludExheWVyQ29udGVudHNBbmRSZWZs
ZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWludExheWVyQ29udGVu
dHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50Rm9yZWdyb3VuZEZvckZy
YWdtZW50cyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnBhaW50SW50b0xheWVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6cGFpbnRDb250ZW50cyk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlYXNvbnNGb3JDb21wb3NpdGluZyBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZVNjcm9sbENv
b3JkaW5hdGVkU3RhdHVzKToKKyAgICAgICAgKiByZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWlu
dGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbGxlY3RTdHlsZXNGb3JSZW5kZXJlcik6Cisg
ICAgICAgICogcmVuZGVyaW5nL1RleHRQYWludFN0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNvbXB1dGVUZXh0UGFpbnRTdHlsZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRl
clN0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpjaGFuZ2VSZXF1aXJl
c0xheW91dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Y2hhbmdlUmVx
dWlyZXNMYXllclJlcGFpbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6
OmNoYW5nZVJlcXVpcmVzUmVwYWludCBjb25zdCk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5h
bHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VGaW5kT3B0aW9ucyk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnRlcm5hbHM6OmZvcmNlUmVsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVy
bmFsczo6c2V0UGFnZVZpc2liaWxpdHkpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpz
ZXRQYWdlSXNGb2N1c2VkQW5kQWN0aXZlKToKKwogMjAxOC0wOC0zMSAgRnJlZGVyaWMgV2FuZyAg
PGZ3YW5nQGlnYWxpYS5jb20+CiAKICAgICAgICAgQnVnIDE4MjA1MyAtIFtDU1NPTSBWaWV3XSBJ
bXBsZW1lbnQgc3RhbmRhcmQgYmVoYXZpb3IgZm9yIHNjcm9sbGluZ0VsZW1lbnQKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0
LmNwcAkocmV2aXNpb24gMjM1NTM5KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzUxLDkgKzc1MSw5IEBA
IFJlZlB0cjxSYW5nZT4gQWNjZXNzaWJpbGl0eU9iamVjdDo6cmFuZ2UKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgCiAgICAgYm9vbCBpc0JhY2t3YXJkU2VhcmNoID0gc2VhcmNoRGlyZWN0
aW9uID09IEFjY2Vzc2liaWxpdHlTZWFyY2hEaXJlY3Rpb246OlByZXZpb3VzOwotICAgIEZpbmRP
cHRpb25zIGZpbmRPcHRpb25zIHsgeyBBdFdvcmRTdGFydHMsIEF0V29yZEVuZHMsIENhc2VJbnNl
bnNpdGl2ZSwgU3RhcnRJblNlbGVjdGlvbiB9IH07CisgICAgRmluZE9wdGlvbnMgZmluZE9wdGlv
bnMgeyBBdFdvcmRTdGFydHMsIEF0V29yZEVuZHMsIENhc2VJbnNlbnNpdGl2ZSwgU3RhcnRJblNl
bGVjdGlvbiB9OwogICAgIGlmIChpc0JhY2t3YXJkU2VhcmNoKQotICAgICAgICBmaW5kT3B0aW9u
cyB8PSBCYWNrd2FyZHM7CisgICAgICAgIGZpbmRPcHRpb25zLmFkZChCYWNrd2FyZHMpOwogICAg
IAogICAgIFJlZlB0cjxSYW5nZT4gY2xvc2VzdFN0cmluZ1JhbmdlID0gbnVsbHB0cjsKICAgICBm
b3IgKGNvbnN0IGF1dG8mIHNlYXJjaFN0cmluZyA6IHNlYXJjaFN0cmluZ3MpIHsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgJKHJldmlzaW9uIDIzNTUz
OSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzk0LDcgKzM5NCw3IEBAIGlubGluZSBPcHRpb25TZXQ8VGV4dERlY29yYXRp
b24+IFN0eWxlQnUKICAgICBhdXRvIHJlc3VsdCA9IFJlbmRlclN0eWxlOjppbml0aWFsVGV4dERl
Y29yYXRpb24oKTsKICAgICBpZiAoaXM8Q1NTVmFsdWVMaXN0Pih2YWx1ZSkpIHsKICAgICAgICAg
Zm9yIChhdXRvJiBjdXJyZW50VmFsdWUgOiBkb3duY2FzdDxDU1NWYWx1ZUxpc3Q+KHZhbHVlKSkK
LSAgICAgICAgICAgIHJlc3VsdCB8PSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oY3VycmVu
dFZhbHVlLmdldCgpKTsKKyAgICAgICAgICAgIHJlc3VsdC5hZGQoZG93bmNhc3Q8Q1NTUHJpbWl0
aXZlVmFsdWU+KGN1cnJlbnRWYWx1ZS5nZXQoKSkpOwogICAgIH0KICAgICByZXR1cm4gcmVzdWx0
OwogfQpAQCAtNDk4LDcgKzQ5OCw3IEBAIGlubGluZSBPcHRpb25TZXQ8VGV4dEVtcGhhc2lzUG9z
aXRpb24+IFMKIAogICAgIE9wdGlvblNldDxUZXh0RW1waGFzaXNQb3NpdGlvbj4gcG9zaXRpb247
CiAgICAgZm9yIChhdXRvJiBjdXJyZW50VmFsdWUgOiBkb3duY2FzdDxDU1NWYWx1ZUxpc3Q+KHZh
bHVlKSkKLSAgICAgICAgcG9zaXRpb24gfD0gdmFsdWVUb0VtcGhhc2lzUG9zaXRpb24oZG93bmNh
c3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KGN1cnJlbnRWYWx1ZS5nZXQoKSkpOworICAgICAgICBwb3Np
dGlvbi5hZGQodmFsdWVUb0VtcGhhc2lzUG9zaXRpb24oZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFs
dWU+KGN1cnJlbnRWYWx1ZS5nZXQoKSkpKTsKICAgICByZXR1cm4gcG9zaXRpb247CiB9CiAKQEAg
LTY0NSw3ICs2NDUsNyBAQCBpbmxpbmUgT3B0aW9uU2V0PFRleHRVbmRlcmxpbmVQb3NpdGlvbj4g
CiAKICAgICBPcHRpb25TZXQ8VGV4dFVuZGVybGluZVBvc2l0aW9uPiBjb21iaW5lZFBvc2l0aW9u
OwogICAgIGZvciAoYXV0byYgY3VycmVudFZhbHVlIDogZG93bmNhc3Q8Q1NTVmFsdWVMaXN0Pih2
YWx1ZSkpCi0gICAgICAgIGNvbWJpbmVkUG9zaXRpb24gfD0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZl
VmFsdWU+KGN1cnJlbnRWYWx1ZS5nZXQoKSk7CisgICAgICAgIGNvbWJpbmVkUG9zaXRpb24uYWRk
KGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPihjdXJyZW50VmFsdWUuZ2V0KCkpKTsKICAgICBy
ZXR1cm4gY29tYmluZWRQb3NpdGlvbjsKIH0KIApAQCAtNzUzLDcgKzc1Myw3IEBAIGlubGluZSBP
cHRpb25TZXQ8VGV4dERlY29yYXRpb25Ta2lwPiBTdHkKIAogICAgIE9wdGlvblNldDxUZXh0RGVj
b3JhdGlvblNraXA+IHNraXA7CiAgICAgZm9yIChhdXRvJiBjdXJyZW50VmFsdWUgOiBkb3duY2Fz
dDxDU1NWYWx1ZUxpc3Q+KHZhbHVlKSkKLSAgICAgICAgc2tpcCB8PSB2YWx1ZVRvRGVjb3JhdGlv
blNraXAoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KGN1cnJlbnRWYWx1ZS5nZXQoKSkpOwor
ICAgICAgICBza2lwLmFkZCh2YWx1ZVRvRGVjb3JhdGlvblNraXAoZG93bmNhc3Q8Q1NTUHJpbWl0
aXZlVmFsdWU+KGN1cnJlbnRWYWx1ZS5nZXQoKSkpKTsKICAgICByZXR1cm4gc2tpcDsKIH0KIApA
QCAtMTUwNCw3ICsxNTA0LDcgQEAgaW5saW5lIE9wdGlvblNldDxTcGVha0FzPiBTdHlsZUJ1aWxk
ZXJDbwogICAgIGF1dG8gcmVzdWx0ID0gUmVuZGVyU3R5bGU6OmluaXRpYWxTcGVha0FzKCk7CiAg
ICAgaWYgKGlzPENTU1ZhbHVlTGlzdD4odmFsdWUpKSB7CiAgICAgICAgIGZvciAoYXV0byYgY3Vy
cmVudFZhbHVlIDogZG93bmNhc3Q8Q1NTVmFsdWVMaXN0Pih2YWx1ZSkpCi0gICAgICAgICAgICBy
ZXN1bHQgfD0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KGN1cnJlbnRWYWx1ZS5nZXQoKSk7
CisgICAgICAgICAgICByZXN1bHQuYWRkKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPihjdXJy
ZW50VmFsdWUuZ2V0KCkpKTsKICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTE1MTQs
NyArMTUxNCw3IEBAIGlubGluZSBPcHRpb25TZXQ8SGFuZ2luZ1B1bmN0dWF0aW9uPiBTdHkKICAg
ICBhdXRvIHJlc3VsdCA9IFJlbmRlclN0eWxlOjppbml0aWFsSGFuZ2luZ1B1bmN0dWF0aW9uKCk7
CiAgICAgaWYgKGlzPENTU1ZhbHVlTGlzdD4odmFsdWUpKSB7CiAgICAgICAgIGZvciAoYXV0byYg
Y3VycmVudFZhbHVlIDogZG93bmNhc3Q8Q1NTVmFsdWVMaXN0Pih2YWx1ZSkpCi0gICAgICAgICAg
ICByZXN1bHQgfD0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KGN1cnJlbnRWYWx1ZS5nZXQo
KSk7CisgICAgICAgICAgICByZXN1bHQuYWRkKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPihj
dXJyZW50VmFsdWUuZ2V0KCkpKTsKICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlci5jcHAJKHJldmlzaW9uIDIzNTUzOSkK
KysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTE5LDcgKzExOSw3IEBAIENvbG9yIENTU1BhcnNlcjo6cGFyc2VTeXN0ZW1Db2xvcihj
b25zdCAKIAogICAgIE9wdGlvblNldDxTdHlsZUNvbG9yOjpPcHRpb25zPiBvcHRpb25zOwogICAg
IGlmIChjb250ZXh0ICYmIGNvbnRleHQtPnVzZVN5c3RlbUFwcGVhcmFuY2UpCi0gICAgICAgIG9w
dGlvbnMgfD0gU3R5bGVDb2xvcjo6T3B0aW9uczo6VXNlU3lzdGVtQXBwZWFyYW5jZTsKKyAgICAg
ICAgb3B0aW9ucy5hZGQoU3R5bGVDb2xvcjo6T3B0aW9uczo6VXNlU3lzdGVtQXBwZWFyYW5jZSk7
CiAgICAgcmV0dXJuIFJlbmRlclRoZW1lOjpzaW5nbGV0b24oKS5zeXN0ZW1Db2xvcihpZCwgb3B0
aW9ucyk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gMjM1NTM5
KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NzE3OCw5ICs3MTc4LDkgQEAgT3B0aW9uU2V0PFN0eWxlQ29sb3I6Ok9wdGlvbnM+IERvY3VtZW50
OgogewogICAgIE9wdGlvblNldDxTdHlsZUNvbG9yOjpPcHRpb25zPiBvcHRpb25zOwogICAgIGlm
ICh1c2VTeXN0ZW1BcHBlYXJhbmNlKCkpCi0gICAgICAgIG9wdGlvbnMgfD0gU3R5bGVDb2xvcjo6
T3B0aW9uczo6VXNlU3lzdGVtQXBwZWFyYW5jZTsKKyAgICAgICAgb3B0aW9ucy5hZGQoU3R5bGVD
b2xvcjo6T3B0aW9uczo6VXNlU3lzdGVtQXBwZWFyYW5jZSk7CiAgICAgaWYgKHVzZURhcmtBcHBl
YXJhbmNlKCkpCi0gICAgICAgIG9wdGlvbnMgfD0gU3R5bGVDb2xvcjo6T3B0aW9uczo6VXNlRGFy
a0FwcGVhcmFuY2U7CisgICAgICAgIG9wdGlvbnMuYWRkKFN0eWxlQ29sb3I6Ok9wdGlvbnM6OlVz
ZURhcmtBcHBlYXJhbmNlKTsKICAgICByZXR1cm4gb3B0aW9uczsKIH0KIApJbmRleDogU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAJKHJldmlzaW9u
IDIzNTUzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzEsNyArMzMxLDcgQEAgdm9pZCBEb2N1bWVudE1hcmtl
ckNvbnRyb2xsZXI6OmFkZE1hcmtlcgogICAgICAgICAgICAgZG93bmNhc3Q8UmVuZGVyQmxvY2tG
bG93PigqcmVuZGVyZXIpLmVuc3VyZUxpbmVCb3hlcygpOwogICAgIH0KIAotICAgIG1fcG9zc2li
bHlFeGlzdGluZ01hcmtlclR5cGVzIHw9IG5ld01hcmtlci50eXBlKCk7CisgICAgbV9wb3NzaWJs
eUV4aXN0aW5nTWFya2VyVHlwZXMuYWRkKG5ld01hcmtlci50eXBlKCkpOwogCiAgICAgc3RkOjp1
bmlxdWVfcHRyPE1hcmtlckxpc3Q+JiBsaXN0ID0gbV9tYXJrZXJzLmFkZChub2RlLCBudWxscHRy
KS5pdGVyYXRvci0+dmFsdWU7CiAKQEAgLTU4Nyw3ICs1ODcsNyBAQCB2b2lkIERvY3VtZW50TWFy
a2VyQ29udHJvbGxlcjo6cmVtb3ZlTWFyCiAgICAgICAgICAgICByZW1vdmVNYXJrZXJzRnJvbUxp
c3QoaXRlcmF0b3IsIG1hcmtlclR5cGVzKTsKICAgICB9CiAKLSAgICBtX3Bvc3NpYmx5RXhpc3Rp
bmdNYXJrZXJUeXBlcyAtPSBtYXJrZXJUeXBlczsKKyAgICBtX3Bvc3NpYmx5RXhpc3RpbmdNYXJr
ZXJUeXBlcy5yZW1vdmUobWFya2VyVHlwZXMpOwogfQogCiB2b2lkIERvY3VtZW50TWFya2VyQ29u
dHJvbGxlcjo6cmVtb3ZlTWFya2Vyc0Zyb21MaXN0KE1hcmtlck1hcDo6aXRlcmF0b3IgaXRlcmF0
b3IsIE9wdGlvblNldDxEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZT4gbWFya2VyVHlwZXMpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0ZWRBbmltYXRpb25Db250cm9s
bGVyLmNwcAkocmV2aXNpb24gMjM1NTM5KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdGVk
QW5pbWF0aW9uQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMSw3ICsxMjEsNyBA
QCB2b2lkIFNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcjo6YWRkVGhyCiAgICAgaWYgKG1fdGhy
b3R0bGluZ1JlYXNvbnMuY29udGFpbnMocmVhc29uKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
bV90aHJvdHRsaW5nUmVhc29ucyB8PSByZWFzb247CisgICAgbV90aHJvdHRsaW5nUmVhc29ucy5h
ZGQocmVhc29uKTsKIAogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImFkZFRocm90dGxpbmdS
ZWFzb24oJXMpIC0+ICVzIiwgdGhyb3R0bGluZ1JlYXNvblRvU3RyaW5nKHJlYXNvbiksIHRocm90
dGxpbmdSZWFzb25zVG9TdHJpbmcobV90aHJvdHRsaW5nUmVhc29ucykudXRmOCgpLmRhdGEoKSk7
CiAKQEAgLTE0MCw3ICsxNDAsNyBAQCB2b2lkIFNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcjo6
cmVtb3ZlCiAgICAgaWYgKCFtX3Rocm90dGxpbmdSZWFzb25zLmNvbnRhaW5zKHJlYXNvbikpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIG1fdGhyb3R0bGluZ1JlYXNvbnMgLT0gcmVhc29uOworICAg
IG1fdGhyb3R0bGluZ1JlYXNvbnMucmVtb3ZlKHJlYXNvbik7CiAKICAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKCJyZW1vdmVUaHJvdHRsaW5nUmVhc29uKCVzKSAtPiAlcyIsIHRocm90dGxpbmdS
ZWFzb25Ub1N0cmluZyhyZWFzb24pLCB0aHJvdHRsaW5nUmVhc29uc1RvU3RyaW5nKG1fdGhyb3R0
bGluZ1JlYXNvbnMpLnV0ZjgoKS5kYXRhKCkpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20v
U2VjdXJpdHlDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1NlY3Vy
aXR5Q29udGV4dC5oCShyZXZpc2lvbiAyMzU1MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vU2Vj
dXJpdHlDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTg5LDcgKzg5LDcgQEAgcHVibGljOgog
ICAgIH07CiAKICAgICBjb25zdCBPcHRpb25TZXQ8TWl4ZWRDb250ZW50VHlwZT4mIGZvdW5kTWl4
ZWRDb250ZW50KCkgY29uc3QgeyByZXR1cm4gbV9taXhlZENvbnRlbnRUeXBlczsgfQotICAgIHZv
aWQgc2V0Rm91bmRNaXhlZENvbnRlbnQoTWl4ZWRDb250ZW50VHlwZSB0eXBlKSB7IG1fbWl4ZWRD
b250ZW50VHlwZXMgfD0gdHlwZTsgfQorICAgIHZvaWQgc2V0Rm91bmRNaXhlZENvbnRlbnQoTWl4
ZWRDb250ZW50VHlwZSB0eXBlKSB7IG1fbWl4ZWRDb250ZW50VHlwZXMuYWRkKHR5cGUpOyB9CiAg
ICAgYm9vbCBnZW9sb2NhdGlvbkFjY2Vzc2VkKCkgY29uc3QgeyByZXR1cm4gbV9nZW9sb2NhdGlv
bkFjY2Vzc2VkOyB9CiAgICAgdm9pZCBzZXRHZW9sb2NhdGlvbkFjY2Vzc2VkKCkgeyBtX2dlb2xv
Y2F0aW9uQWNjZXNzZWQgPSB0cnVlOyB9CiAgICAgYm9vbCBzZWN1cmVDb29raWVzQWNjZXNzZWQo
KSBjb25zdCB7IHJldHVybiBtX3NlY3VyZUNvb2tpZXNBY2Nlc3NlZDsgfQpJbmRleDogU291cmNl
L1dlYkNvcmUvZG9tL1VJRXZlbnRXaXRoS2V5U3RhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2RvbS9VSUV2ZW50V2l0aEtleVN0YXRlLmNwcAkocmV2aXNpb24gMjM1NTM5KQor
KysgU291cmNlL1dlYkNvcmUvZG9tL1VJRXZlbnRXaXRoS2V5U3RhdGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNywxNyArMjcsMTcgQEAgYXV0byBVSUV2ZW50V2l0aEtleVN0YXRlOjptb2RpZmll
cnNGcm9tSQogewogICAgIE9wdGlvblNldDxNb2RpZmllcj4gcmVzdWx0OwogICAgIGlmIChpbml0
aWFsaXplci5jdHJsS2V5KQotICAgICAgICByZXN1bHQgfD0gTW9kaWZpZXI6OkN0cmxLZXk7Cisg
ICAgICAgIHJlc3VsdC5hZGQoTW9kaWZpZXI6OkN0cmxLZXkpOwogICAgIGlmIChpbml0aWFsaXpl
ci5hbHRLZXkpCi0gICAgICAgIHJlc3VsdCB8PSBNb2RpZmllcjo6QWx0S2V5OworICAgICAgICBy
ZXN1bHQuYWRkKE1vZGlmaWVyOjpBbHRLZXkpOwogICAgIGlmIChpbml0aWFsaXplci5zaGlmdEtl
eSkKLSAgICAgICAgcmVzdWx0IHw9IE1vZGlmaWVyOjpTaGlmdEtleTsKKyAgICAgICAgcmVzdWx0
LmFkZChNb2RpZmllcjo6U2hpZnRLZXkpOwogICAgIGlmIChpbml0aWFsaXplci5tZXRhS2V5KQot
ICAgICAgICByZXN1bHQgfD0gTW9kaWZpZXI6Ok1ldGFLZXk7CisgICAgICAgIHJlc3VsdC5hZGQo
TW9kaWZpZXI6Ok1ldGFLZXkpOwogICAgIGlmIChpbml0aWFsaXplci5tb2RpZmllckFsdEdyYXBo
KQotICAgICAgICByZXN1bHQgfD0gTW9kaWZpZXI6OkFsdEdyYXBoS2V5OworICAgICAgICByZXN1
bHQuYWRkKE1vZGlmaWVyOjpBbHRHcmFwaEtleSk7CiAgICAgaWYgKGluaXRpYWxpemVyLm1vZGlm
aWVyQ2Fwc0xvY2spCi0gICAgICAgIHJlc3VsdCB8PSBNb2RpZmllcjo6Q2Fwc0xvY2tLZXk7Cisg
ICAgICAgIHJlc3VsdC5hZGQoTW9kaWZpZXI6OkNhcHNMb2NrS2V5KTsKICAgICByZXR1cm4gcmVz
dWx0OwogfQogCkBAIC02MywxNSArNjMsMTUgQEAgdm9pZCBVSUV2ZW50V2l0aEtleVN0YXRlOjpz
ZXRNb2RpZmllcktleQogewogICAgIE9wdGlvblNldDxNb2RpZmllcj4gcmVzdWx0OwogICAgIGlm
IChjdHJsS2V5KQotICAgICAgICByZXN1bHQgfD0gTW9kaWZpZXI6OkN0cmxLZXk7CisgICAgICAg
IHJlc3VsdC5hZGQoTW9kaWZpZXI6OkN0cmxLZXkpOwogICAgIGlmIChhbHRLZXkpCi0gICAgICAg
IHJlc3VsdCB8PSBNb2RpZmllcjo6QWx0S2V5OworICAgICAgICByZXN1bHQuYWRkKE1vZGlmaWVy
OjpBbHRLZXkpOwogICAgIGlmIChzaGlmdEtleSkKLSAgICAgICAgcmVzdWx0IHw9IE1vZGlmaWVy
OjpTaGlmdEtleTsKKyAgICAgICAgcmVzdWx0LmFkZChNb2RpZmllcjo6U2hpZnRLZXkpOwogICAg
IGlmIChtZXRhS2V5KQotICAgICAgICByZXN1bHQgfD0gTW9kaWZpZXI6Ok1ldGFLZXk7CisgICAg
ICAgIHJlc3VsdC5hZGQoTW9kaWZpZXI6Ok1ldGFLZXkpOwogICAgIGlmIChhbHRHcmFwaEtleSkK
LSAgICAgICAgcmVzdWx0IHw9IE1vZGlmaWVyOjpBbHRHcmFwaEtleTsKKyAgICAgICAgcmVzdWx0
LmFkZChNb2RpZmllcjo6QWx0R3JhcGhLZXkpOwogICAgIG1fbW9kaWZpZXJzID0gcmVzdWx0Owog
fQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vVXNlckFjdGlvbkVsZW1lbnRTZXQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Vc2VyQWN0aW9uRWxlbWVudFNldC5jcHAJ
KHJldmlzaW9uIDIzNTUzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Vc2VyQWN0aW9uRWxlbWVu
dFNldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2LDcgKzY2LDEwIEBAIHZvaWQgVXNlckFjdGlv
bkVsZW1lbnRTZXQ6OnNldEZsYWdzKEVsZW0KIHsKICAgICBBU1NFUlQoIWZsYWdzLmlzRW1wdHko
KSk7CiAKLSAgICBtX2VsZW1lbnRzLmFkZCgmZWxlbWVudCwgT3B0aW9uU2V0PEZsYWc+IHsgfSku
aXRlcmF0b3ItPnZhbHVlIHw9IGZsYWdzOworICAgIG1fZWxlbWVudHMuZW5zdXJlKCZlbGVtZW50
LCBbXSB7CisgICAgICAgIHJldHVybiBPcHRpb25TZXQ8RmxhZz4oKTsKKyAgICB9KS5pdGVyYXRv
ci0+dmFsdWUuYWRkKGZsYWdzKTsKKwogICAgIGVsZW1lbnQuc2V0VXNlckFjdGlvbkVsZW1lbnQo
dHJ1ZSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENv
bW1hbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRl
RWRpdENvbW1hbmQuY3BwCShyZXZpc2lvbiAyMzU1MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ5NCw3ICsx
NDk0LDcgQEAgdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6bW92ZVBhcmFncmFwaAogICAgIEFT
U0VSVChlbmRpbmdTZWxlY3Rpb24oKS5pc0NhcmV0T3JSYW5nZSgpKTsKICAgICBPcHRpb25TZXQ8
UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OkNvbW1hbmRPcHRpb24+IG9wdGlvbnMgeyBSZXBsYWNl
U2VsZWN0aW9uQ29tbWFuZDo6U2VsZWN0UmVwbGFjZW1lbnQsIFJlcGxhY2VTZWxlY3Rpb25Db21t
YW5kOjpNb3ZpbmdQYXJhZ3JhcGggfTsKICAgICBpZiAoIXByZXNlcnZlU3R5bGUpCi0gICAgICAg
IG9wdGlvbnMgfD0gUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6Ok1hdGNoU3R5bGU7CisgICAgICAg
IG9wdGlvbnMuYWRkKFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpNYXRjaFN0eWxlKTsKICAgICBh
cHBseUNvbW1hbmRUb0NvbXBvc2l0ZShSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6Y3JlYXRlKGRv
Y3VtZW50KCksIFdURk1vdmUoZnJhZ21lbnQpLCBvcHRpb25zKSk7CiAKICAgICBmcmFtZSgpLmVk
aXRvcigpLm1hcmtNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFyKGVuZGluZ1NlbGVjdGlvbigpKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAJKHJldmlzaW9uIDIzNTUzOSkKKysrIFNv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjM0LDEz
ICs2MzQsMTMgQEAgdm9pZCBFZGl0b3I6OnJlcGxhY2VTZWxlY3Rpb25XaXRoRnJhZ21lbgogCiAg
ICAgT3B0aW9uU2V0PFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpDb21tYW5kT3B0aW9uPiBvcHRp
b25zIHsgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OlByZXZlbnROZXN0aW5nLCBSZXBsYWNlU2Vs
ZWN0aW9uQ29tbWFuZDo6U2FuaXRpemVGcmFnbWVudCB9OwogICAgIGlmIChzZWxlY3RSZXBsYWNl
bWVudCkKLSAgICAgICAgb3B0aW9ucyB8PSBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6U2VsZWN0
UmVwbGFjZW1lbnQ7CisgICAgICAgIG9wdGlvbnMuYWRkKFJlcGxhY2VTZWxlY3Rpb25Db21tYW5k
OjpTZWxlY3RSZXBsYWNlbWVudCk7CiAgICAgaWYgKHNtYXJ0UmVwbGFjZSkKLSAgICAgICAgb3B0
aW9ucyB8PSBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6U21hcnRSZXBsYWNlOworICAgICAgICBv
cHRpb25zLmFkZChSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6U21hcnRSZXBsYWNlKTsKICAgICBp
ZiAobWF0Y2hTdHlsZSkKLSAgICAgICAgb3B0aW9ucyB8PSBSZXBsYWNlU2VsZWN0aW9uQ29tbWFu
ZDo6TWF0Y2hTdHlsZTsKKyAgICAgICAgb3B0aW9ucy5hZGQoUmVwbGFjZVNlbGVjdGlvbkNvbW1h
bmQ6Ok1hdGNoU3R5bGUpOwogICAgIGlmIChtYWlsQmxvY2txdW90ZUhhbmRsaW5nID09IE1haWxC
bG9ja3F1b3RlSGFuZGxpbmc6Oklnbm9yZUJsb2NrcXVvdGUpCi0gICAgICAgIG9wdGlvbnMgfD0g
UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6Oklnbm9yZU1haWxCbG9ja3F1b3RlOworICAgICAgICBv
cHRpb25zLmFkZChSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6SWdub3JlTWFpbEJsb2NrcXVvdGUp
OwogCiAgICAgYXV0byBjb21tYW5kID0gUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmNyZWF0ZShk
b2N1bWVudCgpLCAmZnJhZ21lbnQsIG9wdGlvbnMsIGVkaXRpbmdBY3Rpb24pOwogICAgIGNvbW1h
bmQtPmFwcGx5KCk7CkBAIC0xMDczLDcgKzEwNzMsNyBAQCB2b2lkIEVkaXRvcjo6YXBwbGllZEVk
aXRpbmcoQ29tcG9zaXRlRWRpCiAgICAgICAgIC8vIERvbid0IGNsZWFyIHRoZSB0eXBpbmcgc3R5
bGUgd2l0aCB0aGlzIHNlbGVjdGlvbiBjaGFuZ2UuIFdlIGRvIHRob3NlIHRoaW5ncyBlbHNld2hl
cmUgaWYgbmVjZXNzYXJ5LgogICAgICAgICBPcHRpb25TZXQ8RnJhbWVTZWxlY3Rpb246OlNldFNl
bGVjdGlvbk9wdGlvbj4gb3B0aW9uczsKICAgICAgICAgaWYgKGNvbW1hbmQuaXNEaWN0YXRpb25D
b21tYW5kKCkpCi0gICAgICAgICAgICBvcHRpb25zIHw9IEZyYW1lU2VsZWN0aW9uOjpEaWN0YXRp
b25UcmlnZ2VyZWQ7CisgICAgICAgICAgICBvcHRpb25zLmFkZChGcmFtZVNlbGVjdGlvbjo6RGlj
dGF0aW9uVHJpZ2dlcmVkKTsKIAogICAgICAgICBjaGFuZ2VTZWxlY3Rpb25BZnRlckNvbW1hbmQo
bmV3U2VsZWN0aW9uLCBvcHRpb25zKTsKICAgICB9CkBAIC0yMzM5LDcgKzIzMzksNyBAQCB2b2lk
IEVkaXRvcjo6bWFya01pc3NwZWxsaW5nc0FmdGVyVHlwaW5nCiAgICAgVU5VU0VEX1BBUkFNKGRv
UmVwbGFjZW1lbnQpOwogICAgIE9wdGlvblNldDxUZXh0Q2hlY2tpbmdUeXBlPiB0ZXh0Q2hlY2tp
bmdPcHRpb25zOwogICAgIGlmIChpc0NvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZCgpKQot
ICAgICAgICB0ZXh0Q2hlY2tpbmdPcHRpb25zIHw9IFRleHRDaGVja2luZ1R5cGU6OlNwZWxsaW5n
OworICAgICAgICB0ZXh0Q2hlY2tpbmdPcHRpb25zLmFkZChUZXh0Q2hlY2tpbmdUeXBlOjpTcGVs
bGluZyk7CiAgICAgaWYgKCF0ZXh0Q2hlY2tpbmdPcHRpb25zLmNvbnRhaW5zKFRleHRDaGVja2lu
Z1R5cGU6OlNwZWxsaW5nKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0yMzU3LDcgKzIzNTcsNyBA
QCB2b2lkIEVkaXRvcjo6bWFya01pc3NwZWxsaW5nc0FmdGVyVHlwaW5nCiAgICAgICAgIE9wdGlv
blNldDxUZXh0Q2hlY2tpbmdUeXBlPiB0ZXh0Q2hlY2tpbmdPcHRpb25zOwogCiAgICAgICAgIGlm
IChpc0NvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZCgpKQotICAgICAgICAgICAgdGV4dENo
ZWNraW5nT3B0aW9ucyB8PSBUZXh0Q2hlY2tpbmdUeXBlOjpTcGVsbGluZzsKKyAgICAgICAgICAg
IHRleHRDaGVja2luZ09wdGlvbnMuYWRkKFRleHRDaGVja2luZ1R5cGU6OlNwZWxsaW5nKTsKIAog
I2lmIFVTRShBVVRPTUFUSUNfVEVYVF9SRVBMQUNFTUVOVCkKICAgICAgICAgaWYgKGRvUmVwbGFj
ZW1lbnQKQEAgLTIzNjYsMTMgKzIzNjYsMTMgQEAgdm9pZCBFZGl0b3I6Om1hcmtNaXNzcGVsbGlu
Z3NBZnRlclR5cGluZwogICAgICAgICAgICAgICAgIHx8IGlzQXV0b21hdGljRGFzaFN1YnN0aXR1
dGlvbkVuYWJsZWQoKQogICAgICAgICAgICAgICAgIHx8IGlzQXV0b21hdGljVGV4dFJlcGxhY2Vt
ZW50RW5hYmxlZCgpCiAgICAgICAgICAgICAgICAgfHwgKHRleHRDaGVja2luZ09wdGlvbnMuY29u
dGFpbnMoVGV4dENoZWNraW5nVHlwZTo6U3BlbGxpbmcpICYmIGlzQXV0b21hdGljU3BlbGxpbmdD
b3JyZWN0aW9uRW5hYmxlZCgpKSkpCi0gICAgICAgICAgICB0ZXh0Q2hlY2tpbmdPcHRpb25zIHw9
IFRleHRDaGVja2luZ1R5cGU6OlJlcGxhY2VtZW50OworICAgICAgICAgICAgdGV4dENoZWNraW5n
T3B0aW9ucy5hZGQoVGV4dENoZWNraW5nVHlwZTo6UmVwbGFjZW1lbnQpOwogI2VuZGlmCiAgICAg
ICAgIGlmICghdGV4dENoZWNraW5nT3B0aW9ucy5jb250YWlucyhUZXh0Q2hlY2tpbmdUeXBlOjpT
cGVsbGluZykgJiYgIXRleHRDaGVja2luZ09wdGlvbnMuY29udGFpbnMoVGV4dENoZWNraW5nVHlw
ZTo6UmVwbGFjZW1lbnQpKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlmIChpc0dy
YW1tYXJDaGVja2luZ0VuYWJsZWQoKSkKLSAgICAgICAgICAgIHRleHRDaGVja2luZ09wdGlvbnMg
fD0gVGV4dENoZWNraW5nVHlwZTo6R3JhbW1hcjsKKyAgICAgICAgICAgIHRleHRDaGVja2luZ09w
dGlvbnMuYWRkKFRleHRDaGVja2luZ1R5cGU6OkdyYW1tYXIpOwogCiAgICAgICAgIGF1dG8gc2Vu
dGVuY2VTdGFydCA9IHN0YXJ0T2ZTZW50ZW5jZSh3b3JkU3RhcnQpOwogICAgICAgICBhdXRvIHNl
bnRlbmNlRW5kID0gZW5kT2ZTZW50ZW5jZSh3b3JkU3RhcnQpOwpAQCAtMjgzOCw3ICsyODM4LDcg
QEAgdm9pZCBFZGl0b3I6Om1hcmtNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbQogICAgICAgICAvLyBt
YXJrTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hcigpIGlzIHRyaWdnZXJlZCBieSBzZWxlY3Rpb24g
Y2hhbmdlLCBpbiB3aGljaCBjYXNlIHdlIGNoZWNrIHNwZWxsaW5nIGFuZCBncmFtbWFyLCBidXQg
ZG9uJ3QgYXV0b2NvcnJlY3QgbWlzc3BlbGxpbmdzLgogICAgICAgICBPcHRpb25TZXQ8VGV4dENo
ZWNraW5nVHlwZT4gdGV4dENoZWNraW5nT3B0aW9ucyB7IFRleHRDaGVja2luZ1R5cGU6OlNwZWxs
aW5nIH07CiAgICAgICAgIGlmIChtYXJrR3JhbW1hciAmJiBpc0dyYW1tYXJDaGVja2luZ0VuYWJs
ZWQoKSkKLSAgICAgICAgICAgIHRleHRDaGVja2luZ09wdGlvbnMgfD0gVGV4dENoZWNraW5nVHlw
ZTo6R3JhbW1hcjsKKyAgICAgICAgICAgIHRleHRDaGVja2luZ09wdGlvbnMuYWRkKFRleHRDaGVj
a2luZ1R5cGU6OkdyYW1tYXIpOwogICAgICAgICBhdXRvIHNwZWxsQ2hlY2tpbmdSYW5nZSA9IHNw
ZWxsaW5nU2VsZWN0aW9uLnRvTm9ybWFsaXplZFJhbmdlKCk7CiAgICAgICAgIG1hcmtBbGxNaXNz
cGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXModGV4dENoZWNraW5nT3B0aW9ucywgc3BlbGxD
aGVja2luZ1JhbmdlLmNvcHlSZWYoKSwgc3BlbGxDaGVja2luZ1JhbmdlLmNvcHlSZWYoKSwgZ3Jh
bW1hclNlbGVjdGlvbi50b05vcm1hbGl6ZWRSYW5nZSgpKTsKICAgICAgICAgcmV0dXJuOwpAQCAt
MzczMywzMCArMzczMywzMCBAQCBPcHRpb25TZXQ8VGV4dENoZWNraW5nVHlwZT4gRWRpdG9yOjpy
ZXNvCiAKICAgICBPcHRpb25TZXQ8VGV4dENoZWNraW5nVHlwZT4gY2hlY2tpbmdUeXBlczsKICAg
ICBpZiAoc2hvdWxkTWFya1NwZWxsaW5nKQotICAgICAgICBjaGVja2luZ1R5cGVzIHw9IFRleHRD
aGVja2luZ1R5cGU6OlNwZWxsaW5nOworICAgICAgICBjaGVja2luZ1R5cGVzLmFkZChUZXh0Q2hl
Y2tpbmdUeXBlOjpTcGVsbGluZyk7CiAgICAgaWYgKHNob3VsZE1hcmtHcmFtbWFyKQotICAgICAg
ICBjaGVja2luZ1R5cGVzIHw9IFRleHRDaGVja2luZ1R5cGU6OkdyYW1tYXI7CisgICAgICAgIGNo
ZWNraW5nVHlwZXMuYWRkKFRleHRDaGVja2luZ1R5cGU6OkdyYW1tYXIpOwogI2lmICFQTEFURk9S
TShJT1MpCiAgICAgaWYgKHNob3VsZENoZWNrRm9yQ29ycmVjdGlvbikKLSAgICAgICAgY2hlY2tp
bmdUeXBlcyB8PSBUZXh0Q2hlY2tpbmdUeXBlOjpDb3JyZWN0aW9uOworICAgICAgICBjaGVja2lu
Z1R5cGVzLmFkZChUZXh0Q2hlY2tpbmdUeXBlOjpDb3JyZWN0aW9uKTsKICAgICBpZiAoc2hvdWxk
U2hvd0NvcnJlY3Rpb25QYW5lbCkKLSAgICAgICAgY2hlY2tpbmdUeXBlcyB8PSBUZXh0Q2hlY2tp
bmdUeXBlOjpTaG93Q29ycmVjdGlvblBhbmVsOworICAgICAgICBjaGVja2luZ1R5cGVzLmFkZChU
ZXh0Q2hlY2tpbmdUeXBlOjpTaG93Q29ycmVjdGlvblBhbmVsKTsKIAogI2lmIFVTRShBVVRPTUFU
SUNfVEVYVF9SRVBMQUNFTUVOVCkKICAgICBib29sIHNob3VsZFBlcmZvcm1SZXBsYWNlbWVudCA9
IHRleHRDaGVja2luZ09wdGlvbnMuY29udGFpbnMoVGV4dENoZWNraW5nVHlwZTo6UmVwbGFjZW1l
bnQpOwogICAgIGlmIChzaG91bGRQZXJmb3JtUmVwbGFjZW1lbnQpIHsKICAgICAgICAgaWYgKCFv
bmx5QWxsb3dzVGV4dFJlcGxhY2VtZW50KSB7CiAgICAgICAgICAgICBpZiAoaXNBdXRvbWF0aWNM
aW5rRGV0ZWN0aW9uRW5hYmxlZCgpKQotICAgICAgICAgICAgICAgIGNoZWNraW5nVHlwZXMgfD0g
VGV4dENoZWNraW5nVHlwZTo6TGluazsKKyAgICAgICAgICAgICAgICBjaGVja2luZ1R5cGVzLmFk
ZChUZXh0Q2hlY2tpbmdUeXBlOjpMaW5rKTsKICAgICAgICAgICAgIGlmIChpc0F1dG9tYXRpY1F1
b3RlU3Vic3RpdHV0aW9uRW5hYmxlZCgpKQotICAgICAgICAgICAgICAgIGNoZWNraW5nVHlwZXMg
fD0gVGV4dENoZWNraW5nVHlwZTo6UXVvdGU7CisgICAgICAgICAgICAgICAgY2hlY2tpbmdUeXBl
cy5hZGQoVGV4dENoZWNraW5nVHlwZTo6UXVvdGUpOwogICAgICAgICAgICAgaWYgKGlzQXV0b21h
dGljRGFzaFN1YnN0aXR1dGlvbkVuYWJsZWQoKSkKLSAgICAgICAgICAgICAgICBjaGVja2luZ1R5
cGVzIHw9IFRleHRDaGVja2luZ1R5cGU6OkRhc2g7CisgICAgICAgICAgICAgICAgY2hlY2tpbmdU
eXBlcy5hZGQoVGV4dENoZWNraW5nVHlwZTo6RGFzaCk7CiAgICAgICAgICAgICBpZiAoc2hvdWxk
TWFya1NwZWxsaW5nICYmIGlzQXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uRW5hYmxlZCgpKQot
ICAgICAgICAgICAgICAgIGNoZWNraW5nVHlwZXMgfD0gVGV4dENoZWNraW5nVHlwZTo6Q29ycmVj
dGlvbjsKKyAgICAgICAgICAgICAgICBjaGVja2luZ1R5cGVzLmFkZChUZXh0Q2hlY2tpbmdUeXBl
OjpDb3JyZWN0aW9uKTsKICAgICAgICAgfQogICAgICAgICBpZiAoaXNBdXRvbWF0aWNUZXh0UmVw
bGFjZW1lbnRFbmFibGVkKCkpCi0gICAgICAgICAgICBjaGVja2luZ1R5cGVzIHw9IFRleHRDaGVj
a2luZ1R5cGU6OlJlcGxhY2VtZW50OworICAgICAgICAgICAgY2hlY2tpbmdUeXBlcy5hZGQoVGV4
dENoZWNraW5nVHlwZTo6UmVwbGFjZW1lbnQpOwogICAgIH0KICNlbmRpZgogI2VuZGlmIC8vICFQ
TEFURk9STShJT1MpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9u
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9u
LmNwcAkocmV2aXNpb24gMjM1NTM5KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNl
bGVjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4NywxNSArMTg3LDE1IEBAIHZvaWQgRnJh
bWVTZWxlY3Rpb246Om1vdmVXaXRob3V0VmFsaWRhdGkKICAgICBBWFRleHRTdGF0ZUNoYW5nZUlu
dGVudCBuZXdJbnRlbnQgPSBpbnRlbnQudHlwZSA9PSBBWFRleHRTdGF0ZUNoYW5nZVR5cGVVbmtu
b3duID8gQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQoQVhUZXh0U3RhdGVDaGFuZ2VUeXBlU2VsZWN0
aW9uTW92ZSwgQVhUZXh0U2VsZWN0aW9uIHsgQVhUZXh0U2VsZWN0aW9uRGlyZWN0aW9uRGlzY29u
dGlndW91cywgQVhUZXh0U2VsZWN0aW9uR3JhbnVsYXJpdHlVbmtub3duLCBmYWxzZSB9KSA6IGlu
dGVudDsKICAgICBhdXRvIG9wdGlvbnMgPSBkZWZhdWx0U2V0U2VsZWN0aW9uT3B0aW9ucygpOwog
ICAgIGlmICghc2hvdWxkU2V0Rm9jdXMpCi0gICAgICAgIG9wdGlvbnMgfD0gRG9Ob3RTZXRGb2N1
czsKKyAgICAgICAgb3B0aW9ucy5hZGQoRG9Ob3RTZXRGb2N1cyk7CiAgICAgc3dpdGNoIChyZXZl
YWxNb2RlKSB7CiAgICAgY2FzZSBTZWxlY3Rpb25SZXZlYWxNb2RlOjpEb05vdFJldmVhbDoKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBTZWxlY3Rpb25SZXZlYWxNb2RlOjpSZXZlYWw6Ci0gICAg
ICAgIG9wdGlvbnMgfD0gUmV2ZWFsU2VsZWN0aW9uOworICAgICAgICBvcHRpb25zLmFkZChSZXZl
YWxTZWxlY3Rpb24pOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFNlbGVjdGlvblJldmVhbE1v
ZGU6OlJldmVhbFVwVG9NYWluRnJhbWU6Ci0gICAgICAgIG9wdGlvbnMgfD0gUmV2ZWFsU2VsZWN0
aW9uVXBUb01haW5GcmFtZTsKKyAgICAgICAgb3B0aW9ucy5hZGQoUmV2ZWFsU2VsZWN0aW9uVXBU
b01haW5GcmFtZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBzZXRTZWxlY3Rpb24obmV3
U2VsZWN0aW9uLCBvcHRpb25zLCBuZXdJbnRlbnQpOwpAQCAtMTk5NSw3ICsxOTk1LDcgQEAgYm9v
bCBGcmFtZVNlbGVjdGlvbjo6c2V0U2VsZWN0ZWRSYW5nZShSYQogCiAgICAgT3B0aW9uU2V0PFNl
dFNlbGVjdGlvbk9wdGlvbj4gc2VsZWN0aW9uT3B0aW9ucyB7ICBDbGVhclR5cGluZ1N0eWxlIH07
CiAgICAgaWYgKGNsb3NlVHlwaW5nKQotICAgICAgICBzZWxlY3Rpb25PcHRpb25zIHw9IENsb3Nl
VHlwaW5nOworICAgICAgICBzZWxlY3Rpb25PcHRpb25zLmFkZChDbG9zZVR5cGluZyk7CiAKICAg
ICBpZiAodXNlclRyaWdnZXJlZCA9PSBVc2VyVHJpZ2dlcmVkKSB7CiAgICAgICAgIEZyYW1lU2Vs
ZWN0aW9uIHRyaWFsRnJhbWVTZWxlY3Rpb247CkBAIC0yMDA1LDcgKzIwMDUsNyBAQCBib29sIEZy
YW1lU2VsZWN0aW9uOjpzZXRTZWxlY3RlZFJhbmdlKFJhCiAgICAgICAgIGlmICghc2hvdWxkQ2hh
bmdlU2VsZWN0aW9uKHRyaWFsRnJhbWVTZWxlY3Rpb24uc2VsZWN0aW9uKCkpKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIHNlbGVjdGlvbk9wdGlvbnMgfD0gSXNVc2VyVHJp
Z2dlcmVkOworICAgICAgICBzZWxlY3Rpb25PcHRpb25zLmFkZChJc1VzZXJUcmlnZ2VyZWQpOwog
ICAgIH0KIAogICAgIHNldFNlbGVjdGlvbihuZXdTZWxlY3Rpb24sIHNlbGVjdGlvbk9wdGlvbnMp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uaAkocmV2aXNpb24g
MjM1NTM5KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMzMsNyArMTMzLDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgT3B0
aW9uU2V0PFNldFNlbGVjdGlvbk9wdGlvbj4gb3B0aW9ucyB7IENsb3NlVHlwaW5nLCBDbGVhclR5
cGluZ1N0eWxlIH07CiAgICAgICAgIGlmICh1c2VyVHJpZ2dlcmVkID09IFVzZXJUcmlnZ2VyZWQp
Ci0gICAgICAgICAgICBvcHRpb25zIHw9IHsgUmV2ZWFsU2VsZWN0aW9uLCBGaXJlU2VsZWN0RXZl
bnQsIElzVXNlclRyaWdnZXJlZCB9OworICAgICAgICAgICAgb3B0aW9ucy5hZGQoeyBSZXZlYWxT
ZWxlY3Rpb24sIEZpcmVTZWxlY3RFdmVudCwgSXNVc2VyVHJpZ2dlcmVkIH0pOwogICAgICAgICBy
ZXR1cm4gb3B0aW9uczsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTW92
ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvTW92ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCShyZXZpc2lvbiAyMzU1MzkpCisrKyBTb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL01vdmVTZWxlY3Rpb25Db21tYW5kLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtODQsNyArODQsNyBAQCB2b2lkIE1vdmVTZWxlY3Rpb25Db21tYW5kOjpkb0FwcGx5KCkKICAg
ICB9CiAgICAgT3B0aW9uU2V0PFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpDb21tYW5kT3B0aW9u
PiBvcHRpb25zIHsgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OlNlbGVjdFJlcGxhY2VtZW50LCBS
ZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6UHJldmVudE5lc3RpbmcgfTsKICAgICBpZiAobV9zbWFy
dEluc2VydCkKLSAgICAgICAgb3B0aW9ucyB8PSBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6U21h
cnRSZXBsYWNlOworICAgICAgICBvcHRpb25zLmFkZChSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6
U21hcnRSZXBsYWNlKTsKIAogICAgIHsKICAgICAgICAgYXV0byByZXBsYWNlU2VsZWN0aW9uID0g
UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmNyZWF0ZShkb2N1bWVudCgpLCBXVEZNb3ZlKG1fZnJh
Z21lbnQpLCBvcHRpb25zLCBFZGl0QWN0aW9uSW5zZXJ0RnJvbURyb3ApOwpJbmRleDogU291cmNl
L1dlYkNvcmUvZWRpdGluZy9TcGVsbENoZWNrZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvU3BlbGxDaGVja2VyLmNwcAkocmV2aXNpb24gMjM1NTM5KQorKysgU291
cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbENoZWNrZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
MTgsOSArMjE4LDkgQEAgdm9pZCBTcGVsbENoZWNrZXI6OmRpZENoZWNrU3VjY2VlZChpbnQgcwog
ICAgIGlmIChyZXF1ZXN0RGF0YS5zZXF1ZW5jZSgpID09IHNlcXVlbmNlKSB7CiAgICAgICAgIE9w
dGlvblNldDxEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZT4gbWFya2VyVHlwZXM7CiAgICAgICAg
IGlmIChyZXF1ZXN0RGF0YS5jaGVja2luZ1R5cGVzKCkuY29udGFpbnMoVGV4dENoZWNraW5nVHlw
ZTo6U3BlbGxpbmcpKQotICAgICAgICAgICAgbWFya2VyVHlwZXMgfD0gRG9jdW1lbnRNYXJrZXI6
OlNwZWxsaW5nOworICAgICAgICAgICAgbWFya2VyVHlwZXMuYWRkKERvY3VtZW50TWFya2VyOjpT
cGVsbGluZyk7CiAgICAgICAgIGlmIChyZXF1ZXN0RGF0YS5jaGVja2luZ1R5cGVzKCkuY29udGFp
bnMoVGV4dENoZWNraW5nVHlwZTo6R3JhbW1hcikpCi0gICAgICAgICAgICBtYXJrZXJUeXBlcyB8
PSBEb2N1bWVudE1hcmtlcjo6R3JhbW1hcjsKKyAgICAgICAgICAgIG1hcmtlclR5cGVzLmFkZChE
b2N1bWVudE1hcmtlcjo6R3JhbW1hcik7CiAgICAgICAgIGlmICghbWFya2VyVHlwZXMuaXNFbXB0
eSgpKQogICAgICAgICAgICAgbV9mcmFtZS5kb2N1bWVudCgpLT5tYXJrZXJzKCkucmVtb3ZlTWFy
a2VycygmbV9wcm9jZXNzaW5nUmVxdWVzdC0+Y2hlY2tpbmdSYW5nZSgpLCBtYXJrZXJUeXBlcyk7
CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVs
cGVyLmNwcAkocmV2aXNpb24gMjM1NTM5KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0
Q2hlY2tpbmdIZWxwZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNTMsNyArMzUzLDcgQEAgU3Ry
aW5nIFRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0TWlzcwogICAgICAgICAgICAgICAgIFZl
Y3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IHJlc3VsdHM7CiAgICAgICAgICAgICAgICAgT3B0aW9u
U2V0PFRleHRDaGVja2luZ1R5cGU+IGNoZWNraW5nVHlwZXMgeyBUZXh0Q2hlY2tpbmdUeXBlOjpT
cGVsbGluZyB9OwogICAgICAgICAgICAgICAgIGlmIChjaGVja0dyYW1tYXIpCi0gICAgICAgICAg
ICAgICAgICAgIGNoZWNraW5nVHlwZXMgfD0gVGV4dENoZWNraW5nVHlwZTo6R3JhbW1hcjsKKyAg
ICAgICAgICAgICAgICAgICAgY2hlY2tpbmdUeXBlcy5hZGQoVGV4dENoZWNraW5nVHlwZTo6R3Jh
bW1hcik7CiAgICAgICAgICAgICAgICAgVmlzaWJsZVNlbGVjdGlvbiBjdXJyZW50U2VsZWN0aW9u
OwogICAgICAgICAgICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBwYXJhZ3JhcGhSYW5nZS0+b3du
ZXJEb2N1bWVudCgpLmZyYW1lKCkpCiAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTZWxlY3Rp
b24gPSBmcmFtZS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCk7CkBAIC01ODcsNyArNTg3LDcgQEAg
VmVjdG9yPFN0cmluZz4gVGV4dENoZWNraW5nSGVscGVyOjpndWVzcwogICAgIFZlY3RvcjxUZXh0
Q2hlY2tpbmdSZXN1bHQ+IHJlc3VsdHM7CiAgICAgT3B0aW9uU2V0PFRleHRDaGVja2luZ1R5cGU+
IGNoZWNraW5nVHlwZXMgeyBUZXh0Q2hlY2tpbmdUeXBlOjpTcGVsbGluZyB9OwogICAgIGlmIChj
aGVja0dyYW1tYXIpCi0gICAgICAgIGNoZWNraW5nVHlwZXMgfD0gVGV4dENoZWNraW5nVHlwZTo6
R3JhbW1hcjsKKyAgICAgICAgY2hlY2tpbmdUeXBlcy5hZGQoVGV4dENoZWNraW5nVHlwZTo6R3Jh
bW1hcik7CiAgICAgVmlzaWJsZVNlbGVjdGlvbiBjdXJyZW50U2VsZWN0aW9uOwogICAgIGlmIChG
cmFtZSogZnJhbWUgPSBtX3JhbmdlLT5vd25lckRvY3VtZW50KCkuZnJhbWUoKSkKICAgICAgICAg
Y3VycmVudFNlbGVjdGlvbiA9IGZyYW1lLT5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAJKHJldmlzaW9uIDIzNTUzOSkK
KysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjA5Nyw3ICsyMDk3LDcgQEAgaW5saW5lIFNlYXJjaEJ1ZmZlcjo6U2VhcmNoQnVmZmVy
KGNvbnN0IAogICAgICAgICAvLyBDaGFyYWN0ZXJzIGluIHRoZSBzZXBhcmF0b3IgY2F0ZWdvcnkg
bmV2ZXIgcmVhbGx5IG9jY3VyIGF0IHRoZSBiZWdpbm5pbmcgb2YgYSB3b3JkLAogICAgICAgICAv
LyBzbyBpZiB0aGUgdGFyZ2V0IGJlZ2lucyB3aXRoIHN1Y2ggYSBjaGFyYWN0ZXIsIHdlIGp1c3Qg
aWdub3JlIHRoZSBBdFdvcmRTdGFydCBvcHRpb24uCiAgICAgICAgIGlmIChpc1NlcGFyYXRvcih0
YXJnZXRGaXJzdENoYXJhY3RlcikpIHsKLSAgICAgICAgICAgIG1fb3B0aW9ucyAtPSBBdFdvcmRT
dGFydHM7CisgICAgICAgICAgICBtX29wdGlvbnMucmVtb3ZlKEF0V29yZFN0YXJ0cyk7CiAgICAg
ICAgICAgICBtX25lZWRzTW9yZUNvbnRleHQgPSBmYWxzZTsKICAgICAgICAgfQogICAgIH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCShyZXZpc2lvbiAy
MzU1MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjU3LDkgKzI1Nyw5IEBAIHZvaWQgSFRNTEFuY2hvckVsZW1lbnQ6OnBh
cnNlQXR0cmlidXRlKGMKICAgICAgICAgY29uc3QgYm9vbCBzaG91bGRGb2xkQ2FzZSA9IHRydWU7
CiAgICAgICAgIFNwYWNlU3BsaXRTdHJpbmcgcmVsVmFsdWUodmFsdWUsIHNob3VsZEZvbGRDYXNl
KTsKICAgICAgICAgaWYgKHJlbFZhbHVlLmNvbnRhaW5zKG5vUmVmZXJyZXIpKQotICAgICAgICAg
ICAgbV9saW5rUmVsYXRpb25zIHw9IFJlbGF0aW9uOjpOb1JlZmVycmVyOworICAgICAgICAgICAg
bV9saW5rUmVsYXRpb25zLmFkZChSZWxhdGlvbjo6Tm9SZWZlcnJlcik7CiAgICAgICAgIGlmIChy
ZWxWYWx1ZS5jb250YWlucyhub09wZW5lcikpCi0gICAgICAgICAgICBtX2xpbmtSZWxhdGlvbnMg
fD0gUmVsYXRpb246Ok5vT3BlbmVyOworICAgICAgICAgICAgbV9saW5rUmVsYXRpb25zLmFkZChS
ZWxhdGlvbjo6Tm9PcGVuZXIpOwogICAgICAgICBpZiAobV9yZWxMaXN0KQogICAgICAgICAgICAg
bV9yZWxMaXN0LT5hc3NvY2lhdGVkQXR0cmlidXRlVmFsdWVDaGFuZ2VkKHZhbHVlKTsKICAgICB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2Vu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JQYWdlQWdlbnQuY3BwCShyZXZpc2lvbiAyMzU1MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMxOSw5ICszMTksOSBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6cmVsb2FkKEVycm9yU3Ry
CiAKICAgICBPcHRpb25TZXQ8UmVsb2FkT3B0aW9uPiByZWxvYWRPcHRpb25zOwogICAgIGlmIChy
ZWxvYWRGcm9tT3JpZ2luKQotICAgICAgICByZWxvYWRPcHRpb25zIHw9IFJlbG9hZE9wdGlvbjo6
RnJvbU9yaWdpbjsKKyAgICAgICAgcmVsb2FkT3B0aW9ucy5hZGQoUmVsb2FkT3B0aW9uOjpGcm9t
T3JpZ2luKTsKICAgICBpZiAoIXJldmFsaWRhdGVBbGxSZXNvdXJjZXMpCi0gICAgICAgIHJlbG9h
ZE9wdGlvbnMgfD0gUmVsb2FkT3B0aW9uOjpFeHBpcmVkT25seTsKKyAgICAgICAgcmVsb2FkT3B0
aW9ucy5hZGQoUmVsb2FkT3B0aW9uOjpFeHBpcmVkT25seSk7CiAKICAgICBtX3BhZ2UubWFpbkZy
YW1lKCkubG9hZGVyKCkucmVsb2FkKHJlbG9hZE9wdGlvbnMpOwogfQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMjM1NTM5
KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNjksNyArMzY5LDcgQEAgdm9pZCBDb250ZXh0TWVudUNvbnRyb2xsZXI6
OmNvbnRleHRNZW51SQogICAgICAgICAgICAgICAgIGZyYW1lLT5zZWxlY3Rpb24oKS5zZXRTZWxl
Y3Rpb24od29yZFNlbGVjdGlvbik7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
ICAgIEFTU0VSVChmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0ZWRUZXh0KCkubGVuZ3RoKCkpOwotICAg
ICAgICAgICAgICAgIHJlcGxhY2VPcHRpb25zIHw9IFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpT
ZWxlY3RSZXBsYWNlbWVudDsKKyAgICAgICAgICAgICAgICByZXBsYWNlT3B0aW9ucy5hZGQoUmVw
bGFjZVNlbGVjdGlvbkNvbW1hbmQ6OlNlbGVjdFJlcGxhY2VtZW50KTsKICAgICAgICAgICAgIH0K
IAogICAgICAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gZnJhbWUtPmRvY3VtZW50KCk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCShyZXZpc2lvbiAyMzU1MzkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMjEsMTQg
KzEyMjEsMTQgQEAgYm9vbCBET01XaW5kb3c6OmZpbmQoY29uc3QgU3RyaW5nJiBzdHJpbgogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBGSVhNRSAoMTMwMTYpOiBTdXBwb3J0IHdob2xl
V29yZCwgc2VhcmNoSW5GcmFtZXMgYW5kIHNob3dEaWFsb2cuICAgIAotICAgIEZpbmRPcHRpb25z
IG9wdGlvbnM7CisgICAgRmluZE9wdGlvbnMgb3B0aW9ucyB7IERvTm90VHJhdmVyc2VGbGF0VHJl
ZSB9OwogICAgIGlmIChiYWNrd2FyZHMpCi0gICAgICAgIG9wdGlvbnMgfD0gQmFja3dhcmRzOwor
ICAgICAgICBvcHRpb25zLmFkZChCYWNrd2FyZHMpOwogICAgIGlmICghY2FzZVNlbnNpdGl2ZSkK
LSAgICAgICAgb3B0aW9ucyB8PSBDYXNlSW5zZW5zaXRpdmU7CisgICAgICAgIG9wdGlvbnMuYWRk
KENhc2VJbnNlbnNpdGl2ZSk7CiAgICAgaWYgKHdyYXApCi0gICAgICAgIG9wdGlvbnMgfD0gV3Jh
cEFyb3VuZDsKLSAgICByZXR1cm4gbV9mcmFtZS0+ZWRpdG9yKCkuZmluZFN0cmluZyhzdHJpbmcs
IG9wdGlvbnMgfCBEb05vdFRyYXZlcnNlRmxhdFRyZWUpOworICAgICAgICBvcHRpb25zLmFkZChX
cmFwQXJvdW5kKTsKKyAgICByZXR1cm4gbV9mcmFtZS0+ZWRpdG9yKCkuZmluZFN0cmluZyhzdHJp
bmcsIG9wdGlvbnMpOwogfQogCiBib29sIERPTVdpbmRvdzo6b2Zmc2NyZWVuQnVmZmVyaW5nKCkg
Y29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCShyZXZpc2lv
biAyMzU1MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNjE5LDkgKzYxOSw5IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OmNvbmNs
dWRlRWRpdERyYWcoY28KICAgICAgICAgICAgIGlmIChzZXRTZWxlY3Rpb25Ub0RyYWdDYXJldChp
bm5lckZyYW1lLmdldCgpLCBkcmFnQ2FyZXQsIHJhbmdlLCBwb2ludCkpIHsKICAgICAgICAgICAg
ICAgICBPcHRpb25TZXQ8UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OkNvbW1hbmRPcHRpb24+IG9w
dGlvbnMgeyBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6U2VsZWN0UmVwbGFjZW1lbnQsIFJlcGxh
Y2VTZWxlY3Rpb25Db21tYW5kOjpQcmV2ZW50TmVzdGluZyB9OwogICAgICAgICAgICAgICAgIGlm
IChkcmFnRGF0YS5jYW5TbWFydFJlcGxhY2UoKSkKLSAgICAgICAgICAgICAgICAgICAgb3B0aW9u
cyB8PSBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6U21hcnRSZXBsYWNlOworICAgICAgICAgICAg
ICAgICAgICBvcHRpb25zLmFkZChSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6U21hcnRSZXBsYWNl
KTsKICAgICAgICAgICAgICAgICBpZiAoY2hvc2VQbGFpblRleHQpCi0gICAgICAgICAgICAgICAg
ICAgIG9wdGlvbnMgfD0gUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6Ok1hdGNoU3R5bGU7CisgICAg
ICAgICAgICAgICAgICAgIG9wdGlvbnMuYWRkKFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpNYXRj
aFN0eWxlKTsKICAgICAgICAgICAgICAgICBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6Y3JlYXRl
KCptX2RvY3VtZW50VW5kZXJNb3VzZSwgZnJhZ21lbnQucmVsZWFzZU5vbk51bGwoKSwgb3B0aW9u
cywgRWRpdEFjdGlvbkluc2VydEZyb21Ecm9wKS0+YXBwbHkoKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5jcHAJ
KHJldmlzaW9uIDIzNTUzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVTbmFwc2hvdHRp
bmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MiwxMyArOTIsMTMgQEAgc3RkOjp1bmlxdWVfcHRy
PEltYWdlQnVmZmVyPiBzbmFwc2hvdEZyYQogCiAgICAgYXV0byBwYWludEJlaGF2aW9yID0gc3Rh
dGUucGFpbnRCZWhhdmlvcjsKICAgICBpZiAob3B0aW9ucyAmIFNuYXBzaG90T3B0aW9uc0ZvcmNl
QmxhY2tUZXh0KQotICAgICAgICBwYWludEJlaGF2aW9yIHw9IFBhaW50QmVoYXZpb3I6OkZvcmNl
QmxhY2tUZXh0OworICAgICAgICBwYWludEJlaGF2aW9yLmFkZChQYWludEJlaGF2aW9yOjpGb3Jj
ZUJsYWNrVGV4dCk7CiAgICAgaWYgKG9wdGlvbnMgJiBTbmFwc2hvdE9wdGlvbnNQYWludFNlbGVj
dGlvbk9ubHkpCi0gICAgICAgIHBhaW50QmVoYXZpb3IgfD0gUGFpbnRCZWhhdmlvcjo6U2VsZWN0
aW9uT25seTsKKyAgICAgICAgcGFpbnRCZWhhdmlvci5hZGQoUGFpbnRCZWhhdmlvcjo6U2VsZWN0
aW9uT25seSk7CiAgICAgaWYgKG9wdGlvbnMgJiBTbmFwc2hvdE9wdGlvbnNQYWludFNlbGVjdGlv
bkFuZEJhY2tncm91bmRzT25seSkKLSAgICAgICAgcGFpbnRCZWhhdmlvciB8PSBQYWludEJlaGF2
aW9yOjpTZWxlY3Rpb25BbmRCYWNrZ3JvdW5kc09ubHk7CisgICAgICAgIHBhaW50QmVoYXZpb3Iu
YWRkKFBhaW50QmVoYXZpb3I6OlNlbGVjdGlvbkFuZEJhY2tncm91bmRzT25seSk7CiAgICAgaWYg
KG9wdGlvbnMgJiBTbmFwc2hvdE9wdGlvbnNQYWludEV2ZXJ5dGhpbmdFeGNsdWRpbmdTZWxlY3Rp
b24pCi0gICAgICAgIHBhaW50QmVoYXZpb3IgfD0gUGFpbnRCZWhhdmlvcjo6RXhjbHVkZVNlbGVj
dGlvbjsKKyAgICAgICAgcGFpbnRCZWhhdmlvci5hZGQoUGFpbnRCZWhhdmlvcjo6RXhjbHVkZVNl
bGVjdGlvbik7CiAKICAgICAvLyBPdGhlciBwYWludCBiZWhhdmlvcnMgYXJlIHNldCBieSBwYWlu
dENvbnRlbnRzRm9yU25hcHNob3QuCiAgICAgZnJhbWUudmlldygpLT5zZXRQYWludEJlaGF2aW9y
KHBhaW50QmVoYXZpb3IpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAkocmV2aXNp
b24gMjM1NTM5KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNDAsMTEgKzE0MCwxMSBAQCBzdGF0aWMgT3B0aW9uU2V0PFJlbmRlckxheWVy
OjpVcGRhdGVMYXllCiB7CiAgICAgYXV0byBmbGFncyA9IFJlbmRlckxheWVyOjp1cGRhdGVMYXll
clBvc2l0aW9uc0RlZmF1bHRGbGFncygpOwogICAgIGlmIChkaWRGdWxsUmVwYWludCkgewotICAg
ICAgICBmbGFncyAtPSBSZW5kZXJMYXllcjo6Q2hlY2tGb3JSZXBhaW50OwotICAgICAgICBmbGFn
cyB8PSBSZW5kZXJMYXllcjo6TmVlZHNGdWxsUmVwYWludEluQmFja2luZzsKKyAgICAgICAgZmxh
Z3MucmVtb3ZlKFJlbmRlckxheWVyOjpDaGVja0ZvclJlcGFpbnQpOworICAgICAgICBmbGFncy5h
ZGQoUmVuZGVyTGF5ZXI6Ok5lZWRzRnVsbFJlcGFpbnRJbkJhY2tpbmcpOwogICAgIH0KICAgICBp
ZiAoaXNSZWxheW91dGluZ1N1YnRyZWUgJiYgbGF5ZXItPmVuY2xvc2luZ1BhZ2luYXRpb25MYXll
cihSZW5kZXJMYXllcjo6SW5jbHVkZUNvbXBvc2l0ZWRQYWdpbmF0ZWRMYXllcnMpKQotICAgICAg
ICBmbGFncyB8PSBSZW5kZXJMYXllcjo6VXBkYXRlUGFnaW5hdGlvbjsKKyAgICAgICAgZmxhZ3Mu
YWRkKFJlbmRlckxheWVyOjpVcGRhdGVQYWdpbmF0aW9uKTsKICAgICByZXR1cm4gZmxhZ3M7CiB9
CiAKQEAgLTQwNjgsMTggKzQwNjgsMTggQEAgdm9pZCBGcmFtZVZpZXc6OndpbGxQYWludENvbnRl
bnRzKEdyYXBoaQogICAgIAogICAgIGlmIChGcmFtZVZpZXcqIHBhcmVudFZpZXcgPSBwYXJlbnRG
cmFtZVZpZXcoKSkgewogICAgICAgICBpZiAocGFyZW50Vmlldy0+cGFpbnRCZWhhdmlvcigpICYg
UGFpbnRCZWhhdmlvcjo6RmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzKQotICAgICAgICAgICAgbV9w
YWludEJlaGF2aW9yIHw9IFBhaW50QmVoYXZpb3I6OkZsYXR0ZW5Db21wb3NpdGluZ0xheWVyczsK
KyAgICAgICAgICAgIG1fcGFpbnRCZWhhdmlvci5hZGQoUGFpbnRCZWhhdmlvcjo6RmxhdHRlbkNv
bXBvc2l0aW5nTGF5ZXJzKTsKICAgICAgICAgCiAgICAgICAgIGlmIChwYXJlbnRWaWV3LT5wYWlu
dEJlaGF2aW9yKCkgJiBQYWludEJlaGF2aW9yOjpTbmFwc2hvdHRpbmcpCi0gICAgICAgICAgICBt
X3BhaW50QmVoYXZpb3IgfD0gUGFpbnRCZWhhdmlvcjo6U25hcHNob3R0aW5nOworICAgICAgICAg
ICAgbV9wYWludEJlaGF2aW9yLmFkZChQYWludEJlaGF2aW9yOjpTbmFwc2hvdHRpbmcpOwogICAg
ICAgICAKICAgICAgICAgaWYgKHBhcmVudFZpZXctPnBhaW50QmVoYXZpb3IoKSAmIFBhaW50QmVo
YXZpb3I6OlRpbGVGaXJzdFBhaW50KQotICAgICAgICAgICAgbV9wYWludEJlaGF2aW9yIHw9IFBh
aW50QmVoYXZpb3I6OlRpbGVGaXJzdFBhaW50OworICAgICAgICAgICAgbV9wYWludEJlaGF2aW9y
LmFkZChQYWludEJlaGF2aW9yOjpUaWxlRmlyc3RQYWludCk7CiAgICAgfQogCiAgICAgaWYgKGRv
Y3VtZW50LT5wcmludGluZygpKSB7Ci0gICAgICAgIG1fcGFpbnRCZWhhdmlvciB8PSBQYWludEJl
aGF2aW9yOjpGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnM7Ci0gICAgICAgIG1fcGFpbnRCZWhhdmlv
ciB8PSBQYWludEJlaGF2aW9yOjpTbmFwc2hvdHRpbmc7CisgICAgICAgIG1fcGFpbnRCZWhhdmlv
ci5hZGQoUGFpbnRCZWhhdmlvcjo6RmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzKTsKKyAgICAgICAg
bV9wYWludEJlaGF2aW9yLmFkZChQYWludEJlaGF2aW9yOjpTbmFwc2hvdHRpbmcpOwogICAgIH0K
IAogICAgIHBhaW50aW5nU3RhdGUuaXNGbGF0dGVuaW5nUGFpbnRPZlJvb3RGcmFtZSA9IChtX3Bh
aW50QmVoYXZpb3IgJiBQYWludEJlaGF2aW9yOjpGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMpICYm
ICFmcmFtZSgpLm93bmVyRWxlbWVudCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCShyZXZpc2lv
biAyMzU1MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNjQzLDExICsxNjQzLDExIEBAIHZvaWQgUGFnZTo6c2V0SXNWaXNpYmxlKGJvb2wgaXNW
aXNpYmxlKQogICAgIGF1dG8gc3RhdGUgPSBtX2FjdGl2aXR5U3RhdGU7CiAKICAgICBpZiAoaXNW
aXNpYmxlKSB7Ci0gICAgICAgIHN0YXRlIC09IEFjdGl2aXR5U3RhdGU6OklzVmlzdWFsbHlJZGxl
OwotICAgICAgICBzdGF0ZSB8PSB7IEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSwgQWN0aXZpdHlT
dGF0ZTo6SXNWaXNpYmxlT3JPY2NsdWRlZCB9OworICAgICAgICBzdGF0ZS5yZW1vdmUoQWN0aXZp
dHlTdGF0ZTo6SXNWaXN1YWxseUlkbGUpOworICAgICAgICBzdGF0ZS5hZGQoeyBBY3Rpdml0eVN0
YXRlOjpJc1Zpc2libGUsIEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZU9yT2NjbHVkZWQgfSk7CiAg
ICAgfSBlbHNlIHsKLSAgICAgICAgc3RhdGUgfD0gQWN0aXZpdHlTdGF0ZTo6SXNWaXN1YWxseUlk
bGU7Ci0gICAgICAgIHN0YXRlIC09IHsgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlLCBBY3Rpdml0
eVN0YXRlOjpJc1Zpc2libGVPck9jY2x1ZGVkIH07CisgICAgICAgIHN0YXRlLmFkZChBY3Rpdml0
eVN0YXRlOjpJc1Zpc3VhbGx5SWRsZSk7CisgICAgICAgIHN0YXRlLnJlbW92ZSh7IEFjdGl2aXR5
U3RhdGU6OklzVmlzaWJsZSwgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlT3JPY2NsdWRlZCB9KTsK
ICAgICB9CiAgICAgc2V0QWN0aXZpdHlTdGF0ZShzdGF0ZSk7CiB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wYWdlL1BlcmZvcm1hbmNlT2JzZXJ2ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VPYnNlcnZlci5jcHAJKHJldmlzaW9uIDIzNTUzOSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VPYnNlcnZlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTY1LDcgKzY1LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gUGVyZm9ybWFuY2VPYnNlcnZl
cjo6bwogICAgIE9wdGlvblNldDxQZXJmb3JtYW5jZUVudHJ5OjpUeXBlPiBmaWx0ZXI7CiAgICAg
Zm9yIChjb25zdCBTdHJpbmcmIGVudHJ5VHlwZSA6IGluaXQuZW50cnlUeXBlcykgewogICAgICAg
ICBpZiAoYXV0byB0eXBlID0gUGVyZm9ybWFuY2VFbnRyeTo6cGFyc2VFbnRyeVR5cGVTdHJpbmco
ZW50cnlUeXBlKSkKLSAgICAgICAgICAgIGZpbHRlciB8PSAqdHlwZTsKKyAgICAgICAgICAgIGZp
bHRlci5hZGQoKnR5cGUpOwogICAgIH0KIAogICAgIGlmIChmaWx0ZXIuaXNFbXB0eSgpKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGFnZS9UZXh0SW5kaWNhdG9yLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wYWdlL1RleHRJbmRpY2F0b3IuY3BwCShyZXZpc2lvbiAyMzU1MzkpCisr
KyBTb3VyY2UvV2ViQ29yZS9wYWdlL1RleHRJbmRpY2F0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC03OCw4ICs3OCw4IEBAIFJlZlB0cjxUZXh0SW5kaWNhdG9yPiBUZXh0SW5kaWNhdG9yOjpjcmUK
ICAgICBWaXNpYmxlU2VsZWN0aW9uIG9sZFNlbGVjdGlvbiA9IGZyYW1lLT5zZWxlY3Rpb24oKS5z
ZWxlY3Rpb24oKTsKICAgICBPcHRpb25TZXQ8VGVtcG9yYXJ5U2VsZWN0aW9uT3B0aW9uPiB0ZW1w
b3JhcnlTZWxlY3Rpb25PcHRpb25zOwogI2lmIFBMQVRGT1JNKElPUykKLSAgICB0ZW1wb3JhcnlT
ZWxlY3Rpb25PcHRpb25zIHw9IFRlbXBvcmFyeVNlbGVjdGlvbk9wdGlvbklnbm9yZVNlbGVjdGlv
bkNoYW5nZXM7Ci0gICAgdGVtcG9yYXJ5U2VsZWN0aW9uT3B0aW9ucyB8PSBUZW1wb3JhcnlTZWxl
Y3Rpb25PcHRpb25FbmFibGVBcHBlYXJhbmNlVXBkYXRlczsKKyAgICB0ZW1wb3JhcnlTZWxlY3Rp
b25PcHRpb25zLmFkZChUZW1wb3JhcnlTZWxlY3Rpb25PcHRpb25JZ25vcmVTZWxlY3Rpb25DaGFu
Z2VzKTsKKyAgICB0ZW1wb3JhcnlTZWxlY3Rpb25PcHRpb25zLmFkZChUZW1wb3JhcnlTZWxlY3Rp
b25PcHRpb25FbmFibGVBcHBlYXJhbmNlVXBkYXRlcyk7CiAjZW5kaWYKICAgICBUZW1wb3JhcnlT
ZWxlY3Rpb25DaGFuZ2Ugc2VsZWN0aW9uQ2hhbmdlKCpmcmFtZSwgeyByYW5nZSB9LCB0ZW1wb3Jh
cnlTZWxlY3Rpb25PcHRpb25zKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9XaW5kb3dG
ZWF0dXJlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9XaW5kb3dGZWF0
dXJlcy5jcHAJKHJldmlzaW9uIDIzNTUzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvV2luZG93
RmVhdHVyZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjAsNyArMTIwLDcgQEAgT3B0aW9uU2V0
PERpc2FibGVkQWRhcHRhdGlvbnM+IHBhcnNlRGlzYQogICAgIGZvciAoYXV0byYgbmFtZSA6IGRp
c2FibGVkQWRhcHRhdGlvbnNTdHJpbmcuc3BsaXQoJywnKSkgewogICAgICAgICBhdXRvIG5vcm1h
bGl6ZWROYW1lID0gbmFtZS5zdHJpcFdoaXRlU3BhY2UoKS5jb252ZXJ0VG9BU0NJSUxvd2VyY2Fz
ZSgpOwogICAgICAgICBpZiAobm9ybWFsaXplZE5hbWUgPT0gd2F0Y2hBZGFwdGF0aW9uTmFtZSgp
KQotICAgICAgICAgICAgZGlzYWJsZWRBZGFwdGF0aW9ucyB8PSBEaXNhYmxlZEFkYXB0YXRpb25z
OjpXYXRjaDsKKyAgICAgICAgICAgIGRpc2FibGVkQWRhcHRhdGlvbnMuYWRkKERpc2FibGVkQWRh
cHRhdGlvbnM6OldhdGNoKTsKICAgICB9CiAgICAgcmV0dXJuIGRpc2FibGVkQWRhcHRhdGlvbnM7
CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3ku
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQ
b2xpY3kuaAkocmV2aXNpb24gMjM1NTM5KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29u
dGVudFNlY3VyaXR5UG9saWN5LmgJKHdvcmtpbmcgY29weSkKQEAgLTE1MSwxMSArMTUxLDExIEBA
IHB1YmxpYzoKICAgICB2b2lkIGVuZm9yY2VTYW5kYm94RmxhZ3MoU2FuZGJveEZsYWdzIHNhbmRi
b3hGbGFncykgeyBtX3NhbmRib3hGbGFncyB8PSBzYW5kYm94RmxhZ3M7IH0KICAgICB2b2lkIGFk
ZEhhc2hBbGdvcml0aG1zRm9ySW5saW5lU2NyaXB0cyhPcHRpb25TZXQ8Q29udGVudFNlY3VyaXR5
UG9saWN5SGFzaEFsZ29yaXRobT4gaGFzaEFsZ29yaXRobXNGb3JJbmxpbmVTY3JpcHRzKQogICAg
IHsKLSAgICAgICAgbV9oYXNoQWxnb3JpdGhtc0ZvcklubGluZVNjcmlwdHMgfD0gaGFzaEFsZ29y
aXRobXNGb3JJbmxpbmVTY3JpcHRzOworICAgICAgICBtX2hhc2hBbGdvcml0aG1zRm9ySW5saW5l
U2NyaXB0cy5hZGQoaGFzaEFsZ29yaXRobXNGb3JJbmxpbmVTY3JpcHRzKTsKICAgICB9CiAgICAg
dm9pZCBhZGRIYXNoQWxnb3JpdGhtc0ZvcklubGluZVN0eWxlc2hlZXRzKE9wdGlvblNldDxDb250
ZW50U2VjdXJpdHlQb2xpY3lIYXNoQWxnb3JpdGhtPiBoYXNoQWxnb3JpdGhtc0ZvcklubGluZVN0
eWxlc2hlZXRzKQogICAgIHsKLSAgICAgICAgbV9oYXNoQWxnb3JpdGhtc0ZvcklubGluZVN0eWxl
c2hlZXRzIHw9IGhhc2hBbGdvcml0aG1zRm9ySW5saW5lU3R5bGVzaGVldHM7CisgICAgICAgIG1f
aGFzaEFsZ29yaXRobXNGb3JJbmxpbmVTdHlsZXNoZWV0cy5hZGQoaGFzaEFsZ29yaXRobXNGb3JJ
bmxpbmVTdHlsZXNoZWV0cyk7CiAgICAgfQogCiAgICAgLy8gVXNlZCBieSBDb250ZW50U2VjdXJp
dHlQb2xpY3lTb3VyY2UKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1
cml0eVBvbGljeVNvdXJjZUxpc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3QuY3BwCShyZXZpc2lvbiAyMzU1
MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3Vy
Y2VMaXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDczLDcgKzQ3Myw3IEBAIGJvb2wgQ29udGVu
dFNlY3VyaXR5UG9saWN5U291cmNlTGlzdDo6cGEKICAgICBpZiAoZGlnZXN0LT52YWx1ZS5zaXpl
KCkgPiBDb250ZW50U2VjdXJpdHlQb2xpY3lIYXNoOjptYXhpbXVtRGlnZXN0TGVuZ3RoKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBtX2hhc2hBbGdvcml0aG1zVXNlZCB8PSBkaWdlc3Qt
PmFsZ29yaXRobTsKKyAgICBtX2hhc2hBbGdvcml0aG1zVXNlZC5hZGQoZGlnZXN0LT5hbGdvcml0
aG0pOwogICAgIG1faGFzaGVzLmFkZChXVEZNb3ZlKCpkaWdlc3QpKTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtRXZlbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUV2ZW50LmgJKHJldmlz
aW9uIDIzNTUzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtRXZlbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtMTE1LDEzICsxMTUsMTMgQEAgcHJvdGVjdGVkOgogICAgICAgICAs
IG1fdGltZXN0YW1wKHRpbWVzdGFtcCkKICAgICB7CiAgICAgICAgIGlmIChzaGlmdEtleSkKLSAg
ICAgICAgICAgIG1fbW9kaWZpZXJzIHw9IE1vZGlmaWVyOjpTaGlmdEtleTsKKyAgICAgICAgICAg
IG1fbW9kaWZpZXJzLmFkZChNb2RpZmllcjo6U2hpZnRLZXkpOwogICAgICAgICBpZiAoY3RybEtl
eSkKLSAgICAgICAgICAgIG1fbW9kaWZpZXJzIHw9IE1vZGlmaWVyOjpDdHJsS2V5OworICAgICAg
ICAgICAgbV9tb2RpZmllcnMuYWRkKE1vZGlmaWVyOjpDdHJsS2V5KTsKICAgICAgICAgaWYgKGFs
dEtleSkKLSAgICAgICAgICAgIG1fbW9kaWZpZXJzIHw9IE1vZGlmaWVyOjpBbHRLZXk7CisgICAg
ICAgICAgICBtX21vZGlmaWVycy5hZGQoTW9kaWZpZXI6OkFsdEtleSk7CiAgICAgICAgIGlmICht
ZXRhS2V5KQotICAgICAgICAgICAgbV9tb2RpZmllcnMgfD0gTW9kaWZpZXI6Ok1ldGFLZXk7Cisg
ICAgICAgICAgICBtX21vZGlmaWVycy5hZGQoTW9kaWZpZXI6Ok1ldGFLZXkpOwogICAgIH0KIAog
ICAgIC8vIEV4cGxpY2l0IHByb3RlY3RlZCBkZXN0cnVjdG9yIHNvIHRoYXQgcGVvcGxlIGRvbid0
IGFjY2lkZW50YWxseQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1BsYXRmb3Jt
S2V5Ym9hcmRFdmVudEd0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3RrL1BsYXRmb3JtS2V5Ym9hcmRFdmVudEd0ay5jcHAJKHJldmlzaW9uIDIzNTUzOSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybUtleWJvYXJkRXZlbnRHdGsuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMzMwLDE1ICsxMzMwLDE1IEBAIHN0YXRpYyBPcHRpb25TZXQ8
UGxhdGZvcm1FdmVudDo6TW9kaWZpZXIKIHsKICAgICBPcHRpb25TZXQ8UGxhdGZvcm1FdmVudDo6
TW9kaWZpZXI+IG1vZGlmaWVyczsKICAgICBpZiAoZXZlbnQtPnN0YXRlICYgR0RLX1NISUZUX01B
U0sgfHwgZXZlbnQtPmtleXZhbCA9PSBHREtfMzI3MF9CYWNrVGFiKQotICAgICAgICBtb2RpZmll
cnMgfD0gUGxhdGZvcm1FdmVudDo6TW9kaWZpZXI6OlNoaWZ0S2V5OworICAgICAgICBtb2RpZmll
cnMuYWRkKFBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVyOjpTaGlmdEtleSk7CiAgICAgaWYgKGV2ZW50
LT5zdGF0ZSAmIEdES19DT05UUk9MX01BU0spCi0gICAgICAgIG1vZGlmaWVycyB8PSBQbGF0Zm9y
bUV2ZW50OjpNb2RpZmllcjo6Q3RybEtleTsKKyAgICAgICAgbW9kaWZpZXJzLmFkZChQbGF0Zm9y
bUV2ZW50OjpNb2RpZmllcjo6Q3RybEtleSk7CiAgICAgaWYgKGV2ZW50LT5zdGF0ZSAmIEdES19N
T0QxX01BU0spCi0gICAgICAgIG1vZGlmaWVycyB8PSBQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcjo6
QWx0S2V5OworICAgICAgICBtb2RpZmllcnMuYWRkKFBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVyOjpB
bHRLZXkpOwogICAgIGlmIChldmVudC0+c3RhdGUgJiBHREtfTUVUQV9NQVNLKQotICAgICAgICBt
b2RpZmllcnMgfD0gUGxhdGZvcm1FdmVudDo6TW9kaWZpZXI6Ok1ldGFLZXk7CisgICAgICAgIG1v
ZGlmaWVycy5hZGQoUGxhdGZvcm1FdmVudDo6TW9kaWZpZXI6Ok1ldGFLZXkpOwogICAgIGlmIChl
dmVudC0+c3RhdGUgJiBHREtfTE9DS19NQVNLKQotICAgICAgICBtb2RpZmllcnMgfD0gUGxhdGZv
cm1FdmVudDo6TW9kaWZpZXI6OkNhcHNMb2NrS2V5OworICAgICAgICBtb2RpZmllcnMuYWRkKFBs
YXRmb3JtRXZlbnQ6Ok1vZGlmaWVyOjpDYXBzTG9ja0tleSk7CiAgICAgcmV0dXJuIG1vZGlmaWVy
czsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1BsYXRmb3JtTW91c2VF
dmVudEd0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bs
YXRmb3JtTW91c2VFdmVudEd0ay5jcHAJKHJldmlzaW9uIDIzNTUzOSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybU1vdXNlRXZlbnRHdGsuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00NywxNSArNDcsMTUgQEAgUGxhdGZvcm1Nb3VzZUV2ZW50OjpQbGF0Zm9ybU1vdXNlRXZl
bnQoRwogICAgIG1fbW9kaWZpZXJGbGFncyA9IDA7CiAKICAgICBpZiAoZXZlbnQtPnN0YXRlICYg
R0RLX1NISUZUX01BU0spCi0gICAgICAgIG1fbW9kaWZpZXJzIHw9IFBsYXRmb3JtRXZlbnQ6Ok1v
ZGlmaWVyOjpTaGlmdEtleTsKKyAgICAgICAgbV9tb2RpZmllcnMuYWRkKFBsYXRmb3JtRXZlbnQ6
Ok1vZGlmaWVyOjpTaGlmdEtleSk7CiAgICAgaWYgKGV2ZW50LT5zdGF0ZSAmIEdES19DT05UUk9M
X01BU0spCi0gICAgICAgIG1fbW9kaWZpZXJzIHw9IFBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVyOjpD
dHJsS2V5OworICAgICAgICBtX21vZGlmaWVycy5hZGQoUGxhdGZvcm1FdmVudDo6TW9kaWZpZXI6
OkN0cmxLZXkpOwogICAgIGlmIChldmVudC0+c3RhdGUgJiBHREtfTU9EMV9NQVNLKQotICAgICAg
ICBtX21vZGlmaWVycyB8PSBQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcjo6QWx0S2V5OworICAgICAg
ICBtX21vZGlmaWVycy5hZGQoUGxhdGZvcm1FdmVudDo6TW9kaWZpZXI6OkFsdEtleSk7CiAgICAg
aWYgKGV2ZW50LT5zdGF0ZSAmIEdES19NRVRBX01BU0spCi0gICAgICAgIG1fbW9kaWZpZXJzIHw9
IFBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVyOjpNZXRhS2V5OworICAgICAgICBtX21vZGlmaWVycy5h
ZGQoUGxhdGZvcm1FdmVudDo6TW9kaWZpZXI6Ok1ldGFLZXkpOwogICAgIGlmIChQbGF0Zm9ybUtl
eWJvYXJkRXZlbnQ6Om1vZGlmaWVyc0NvbnRhaW5DYXBzTG9jayhldmVudC0+c3RhdGUpKQotICAg
ICAgICBtX21vZGlmaWVycyB8PSBQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcjo6Q2Fwc0xvY2tLZXk7
CisgICAgICAgIG1fbW9kaWZpZXJzLmFkZChQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcjo6Q2Fwc0xv
Y2tLZXkpOwogCiAgICAgc3dpdGNoIChldmVudC0+dHlwZSkgewogICAgIGNhc2UgR0RLX0JVVFRP
Tl9QUkVTUzoKQEAgLTk2LDE1ICs5NiwxNSBAQCBQbGF0Zm9ybU1vdXNlRXZlbnQ6OlBsYXRmb3Jt
TW91c2VFdmVudChHCiAgICAgbV9tb2RpZmllckZsYWdzID0gMDsKIAogICAgIGlmIChtb3Rpb24t
PnN0YXRlICYgR0RLX1NISUZUX01BU0spCi0gICAgICAgIG1fbW9kaWZpZXJzIHw9IFBsYXRmb3Jt
RXZlbnQ6Ok1vZGlmaWVyOjpTaGlmdEtleTsKKyAgICAgICAgbV9tb2RpZmllcnMuYWRkKFBsYXRm
b3JtRXZlbnQ6Ok1vZGlmaWVyOjpTaGlmdEtleSk7CiAgICAgaWYgKG1vdGlvbi0+c3RhdGUgJiBH
REtfQ09OVFJPTF9NQVNLKQotICAgICAgICBtX21vZGlmaWVycyB8PSBQbGF0Zm9ybUV2ZW50OjpN
b2RpZmllcjo6Q3RybEtleTsKKyAgICAgICAgbV9tb2RpZmllcnMuYWRkKFBsYXRmb3JtRXZlbnQ6
Ok1vZGlmaWVyOjpDdHJsS2V5KTsKICAgICBpZiAobW90aW9uLT5zdGF0ZSAmIEdES19NT0QxX01B
U0spCi0gICAgICAgIG1fbW9kaWZpZXJzIHw9IFBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVyOjpBbHRL
ZXk7CisgICAgICAgIG1fbW9kaWZpZXJzLmFkZChQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcjo6QWx0
S2V5KTsKICAgICBpZiAobW90aW9uLT5zdGF0ZSAmIEdES19NRVRBX01BU0spCi0gICAgICAgIG1f
bW9kaWZpZXJzIHw9IFBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVyOjpNZXRhS2V5OworICAgICAgICBt
X21vZGlmaWVycy5hZGQoUGxhdGZvcm1FdmVudDo6TW9kaWZpZXI6Ok1ldGFLZXkpOwogICAgIGlm
IChQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6Om1vZGlmaWVyc0NvbnRhaW5DYXBzTG9jayhtb3Rpb24t
PnN0YXRlKSkKLSAgICAgICAgbV9tb2RpZmllcnMgfD0gUGxhdGZvcm1FdmVudDo6TW9kaWZpZXI6
OkNhcHNMb2NrS2V5OworICAgICAgICBtX21vZGlmaWVycy5hZGQoUGxhdGZvcm1FdmVudDo6TW9k
aWZpZXI6OkNhcHNMb2NrS2V5KTsKIAogICAgIHN3aXRjaCAobW90aW9uLT50eXBlKSB7CiAgICAg
Y2FzZSBHREtfTU9USU9OX05PVElGWToKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9QbGF0Zm9ybVdoZWVsRXZlbnRHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2d0ay9QbGF0Zm9ybVdoZWVsRXZlbnRHdGsuY3BwCShyZXZpc2lvbiAyMzU1Mzkp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1XaGVlbEV2ZW50R3RrLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDcsMTUgKzQ3LDE1IEBAIFBsYXRmb3JtV2hlZWxFdmVudDo6
UGxhdGZvcm1XaGVlbEV2ZW50KEcKICAgICBtX3RpbWVzdGFtcCA9IHdhbGxUaW1lRm9yRXZlbnQo
ZXZlbnQpOwogCiAgICAgaWYgKGV2ZW50LT5zdGF0ZSAmIEdES19TSElGVF9NQVNLKQotICAgICAg
ICBtX21vZGlmaWVycyB8PSBNb2RpZmllcjo6U2hpZnRLZXk7CisgICAgICAgIG1fbW9kaWZpZXJz
LmFkZChNb2RpZmllcjo6U2hpZnRLZXkpOwogICAgIGlmIChldmVudC0+c3RhdGUgJiBHREtfQ09O
VFJPTF9NQVNLKQotICAgICAgICBtX21vZGlmaWVycyB8PSBNb2RpZmllcjo6Q3RybEtleTsKKyAg
ICAgICAgbV9tb2RpZmllcnMuYWRkKE1vZGlmaWVyOjpDdHJsS2V5KTsKICAgICBpZiAoZXZlbnQt
PnN0YXRlICYgR0RLX01PRDFfTUFTSykKLSAgICAgICAgbV9tb2RpZmllcnMgfD0gTW9kaWZpZXI6
OkFsdEtleTsKKyAgICAgICAgbV9tb2RpZmllcnMuYWRkKE1vZGlmaWVyOjpBbHRLZXkpOwogICAg
IGlmIChldmVudC0+c3RhdGUgJiBHREtfTUVUQV9NQVNLKQotICAgICAgICBtX21vZGlmaWVycyB8
PSBNb2RpZmllcjo6TWV0YUtleTsKKyAgICAgICAgbV9tb2RpZmllcnMuYWRkKE1vZGlmaWVyOjpN
ZXRhS2V5KTsKICAgICBpZiAoUGxhdGZvcm1LZXlib2FyZEV2ZW50Ojptb2RpZmllcnNDb250YWlu
Q2Fwc0xvY2soZXZlbnQtPnN0YXRlKSkKLSAgICAgICAgbV9tb2RpZmllcnMgfD0gUGxhdGZvcm1F
dmVudDo6TW9kaWZpZXI6OkNhcHNMb2NrS2V5OworICAgICAgICBtX21vZGlmaWVycy5hZGQoUGxh
dGZvcm1FdmVudDo6TW9kaWZpZXI6OkNhcHNMb2NrS2V5KTsKIAogICAgIG1fZGVsdGFYID0gMDsK
ICAgICBtX2RlbHRhWSA9IDA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVu
ZGVyVGhlbWVHYWRnZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9SZW5kZXJUaGVtZUdhZGdldC5jcHAJKHJldmlzaW9uIDIzNTUzOSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUdhZGdldC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM1OCwxMyArMzU4LDEzIEBAIFJlbmRlclRoZW1lU2Nyb2xsYmFyR2FkZ2V0OjpSZW5kZXJU
aGVtZVMKICAgICBndGtfc3R5bGVfY29udGV4dF9nZXRfc3R5bGUobV9jb250ZXh0LmdldCgpLCAi
aGFzLWJhY2t3YXJkLXN0ZXBwZXIiLCAmaGFzQmFja3dhcmQsICJoYXMtZm9yd2FyZC1zdGVwcGVy
IiwgJmhhc0ZvcndhcmQsCiAgICAgICAgICJoYXMtc2Vjb25kYXJ5LWJhY2t3YXJkLXN0ZXBwZXIi
LCAmaGFzU2Vjb25kYXJ5QmFja3dhcmQsICJoYXMtc2Vjb25kYXJ5LWZvcndhcmQtc3RlcHBlciIs
ICZoYXNTZWNvbmRhcnlGb3J3YXJkLCBudWxscHRyKTsKICAgICBpZiAoaGFzQmFja3dhcmQpCi0g
ICAgICAgIG1fc3RlcHBlcnMgfD0gU3RlcHBlcnM6OkJhY2t3YXJkOworICAgICAgICBtX3N0ZXBw
ZXJzLmFkZChTdGVwcGVyczo6QmFja3dhcmQpOwogICAgIGlmIChoYXNGb3J3YXJkKQotICAgICAg
ICBtX3N0ZXBwZXJzIHw9IFN0ZXBwZXJzOjpGb3J3YXJkOworICAgICAgICBtX3N0ZXBwZXJzLmFk
ZChTdGVwcGVyczo6Rm9yd2FyZCk7CiAgICAgaWYgKGhhc1NlY29uZGFyeUJhY2t3YXJkKQotICAg
ICAgICBtX3N0ZXBwZXJzIHw9IFN0ZXBwZXJzOjpTZWNvbmRhcnlCYWNrd2FyZDsKKyAgICAgICAg
bV9zdGVwcGVycy5hZGQoU3RlcHBlcnM6OlNlY29uZGFyeUJhY2t3YXJkKTsKICAgICBpZiAoaGFz
U2Vjb25kYXJ5Rm9yd2FyZCkKLSAgICAgICAgbV9zdGVwcGVycyB8PSBTdGVwcGVyczo6U2Vjb25k
YXJ5Rm9yd2FyZDsKKyAgICAgICAgbV9zdGVwcGVycy5hZGQoU3RlcHBlcnM6OlNlY29uZGFyeUZv
cndhcmQpOwogfQogCiB2b2lkIFJlbmRlclRoZW1lU2Nyb2xsYmFyR2FkZ2V0OjpyZW5kZXJTdGVw
cGVyKGNhaXJvX3QqIGNyLCBjb25zdCBGbG9hdFJlY3QmIHBhaW50UmVjdCwgUmVuZGVyVGhlbWVH
YWRnZXQqIHN0ZXBwZXJHYWRnZXQsIEd0a09yaWVudGF0aW9uIG9yaWVudGF0aW9uLCBTdGVwcGVy
cyBzdGVwcGVyKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtRXZl
bnRGYWN0b3J5SU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9QbGF0Zm9ybUV2ZW50RmFjdG9yeUlPUy5tbQkocmV2aXNpb24gMjM1NTM5KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtRXZlbnRGYWN0b3J5SU9TLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC00MywxNSArNDMsMTUgQEAgc3RhdGljIE9wdGlvblNldDxQbGF0Zm9ybUV2ZW50
OjpNb2RpZmllcgogICAgIE9wdGlvblNldDxQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcj4gbW9kaWZp
ZXJzOwogCiAgICAgaWYgKGV2ZW50Lm1vZGlmaWVyRmxhZ3MgJiBXZWJFdmVudEZsYWdNYXNrU2hp
ZnQpCi0gICAgICAgIG1vZGlmaWVycyB8PSBQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcjo6U2hpZnRL
ZXk7CisgICAgICAgIG1vZGlmaWVycy5hZGQoUGxhdGZvcm1FdmVudDo6TW9kaWZpZXI6OlNoaWZ0
S2V5KTsKICAgICBpZiAoZXZlbnQubW9kaWZpZXJGbGFncyAmIFdlYkV2ZW50RmxhZ01hc2tDb250
cm9sKQotICAgICAgICBtb2RpZmllcnMgfD0gUGxhdGZvcm1FdmVudDo6TW9kaWZpZXI6OkN0cmxL
ZXk7CisgICAgICAgIG1vZGlmaWVycy5hZGQoUGxhdGZvcm1FdmVudDo6TW9kaWZpZXI6OkN0cmxL
ZXkpOwogICAgIGlmIChldmVudC5tb2RpZmllckZsYWdzICYgV2ViRXZlbnRGbGFnTWFza0FsdGVy
bmF0ZSkKLSAgICAgICAgbW9kaWZpZXJzIHw9IFBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVyOjpBbHRL
ZXk7CisgICAgICAgIG1vZGlmaWVycy5hZGQoUGxhdGZvcm1FdmVudDo6TW9kaWZpZXI6OkFsdEtl
eSk7CiAgICAgaWYgKGV2ZW50Lm1vZGlmaWVyRmxhZ3MgJiBXZWJFdmVudEZsYWdNYXNrQ29tbWFu
ZCkKLSAgICAgICAgbW9kaWZpZXJzIHw9IFBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVyOjpNZXRhS2V5
OworICAgICAgICBtb2RpZmllcnMuYWRkKFBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVyOjpNZXRhS2V5
KTsKICAgICBpZiAoZXZlbnQubW9kaWZpZXJGbGFncyAmIFdlYkV2ZW50RmxhZ01hc2tBbHBoYVNo
aWZ0KQotICAgICAgICBtb2RpZmllcnMgfD0gUGxhdGZvcm1FdmVudDo6TW9kaWZpZXI6OkNhcHNM
b2NrS2V5OworICAgICAgICBtb2RpZmllcnMuYWRkKFBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVyOjpD
YXBzTG9ja0tleSk7CiAKICAgICByZXR1cm4gbW9kaWZpZXJzOwogfQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtRXZlbnRGYWN0b3J5TWFjLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybUV2ZW50RmFjdG9yeU1hYy5t
bQkocmV2aXNpb24gMjM1NTM5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRm
b3JtRXZlbnRGYWN0b3J5TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC02NjYsMTUgKzY2NiwxNSBA
QCBPcHRpb25TZXQ8UGxhdGZvcm1FdmVudDo6TW9kaWZpZXI+IG1vZGlmCiAgICAgT3B0aW9uU2V0
PFBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVyPiBtb2RpZmllcnM7CiAKICAgICBpZiAoZXZlbnQubW9k
aWZpZXJGbGFncyAmIE5TRXZlbnRNb2RpZmllckZsYWdTaGlmdCkKLSAgICAgICAgbW9kaWZpZXJz
IHw9IFBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVyOjpTaGlmdEtleTsKKyAgICAgICAgbW9kaWZpZXJz
LmFkZChQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcjo6U2hpZnRLZXkpOwogICAgIGlmIChldmVudC5t
b2RpZmllckZsYWdzICYgTlNFdmVudE1vZGlmaWVyRmxhZ0NvbnRyb2wpCi0gICAgICAgIG1vZGlm
aWVycyB8PSBQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcjo6Q3RybEtleTsKKyAgICAgICAgbW9kaWZp
ZXJzLmFkZChQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcjo6Q3RybEtleSk7CiAgICAgaWYgKGV2ZW50
Lm1vZGlmaWVyRmxhZ3MgJiBOU0V2ZW50TW9kaWZpZXJGbGFnT3B0aW9uKQotICAgICAgICBtb2Rp
ZmllcnMgfD0gUGxhdGZvcm1FdmVudDo6TW9kaWZpZXI6OkFsdEtleTsKKyAgICAgICAgbW9kaWZp
ZXJzLmFkZChQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcjo6QWx0S2V5KTsKICAgICBpZiAoZXZlbnQu
bW9kaWZpZXJGbGFncyAmIE5TRXZlbnRNb2RpZmllckZsYWdDb21tYW5kKQotICAgICAgICBtb2Rp
ZmllcnMgfD0gUGxhdGZvcm1FdmVudDo6TW9kaWZpZXI6Ok1ldGFLZXk7CisgICAgICAgIG1vZGlm
aWVycy5hZGQoUGxhdGZvcm1FdmVudDo6TW9kaWZpZXI6Ok1ldGFLZXkpOwogICAgIGlmIChldmVu
dC5tb2RpZmllckZsYWdzICYgTlNFdmVudE1vZGlmaWVyRmxhZ0NhcHNMb2NrKQotICAgICAgICBt
b2RpZmllcnMgfD0gUGxhdGZvcm1FdmVudDo6TW9kaWZpZXI6OkNhcHNMb2NrS2V5OworICAgICAg
ICBtb2RpZmllcnMuYWRkKFBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVyOjpDYXBzTG9ja0tleSk7CiAK
ICAgICByZXR1cm4gbW9kaWZpZXJzOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXIuY3BwCShyZXZpc2lvbiAyMzU1MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NTcsMTcgKzU1NywxNyBA
QCB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVMYXllclBvc2l0aW9ucyhSCiAgICAgLy8gQ2xlYXIg
dGhlIElzQ29tcG9zaXRpbmdVcGRhdGVSb290IGZsYWcgb25jZSB3ZSd2ZSBmb3VuZCB0aGUgZmly
c3QgY29tcG9zaXRpbmcgbGF5ZXIgaW4gdGhpcyB1cGRhdGUuCiAgICAgYm9vbCBpc1VwZGF0ZVJv
b3QgPSBmbGFncy5jb250YWlucyhJc0NvbXBvc2l0aW5nVXBkYXRlUm9vdCk7CiAgICAgaWYgKGlz
Q29tcG9zaXRlZCgpKQotICAgICAgICBmbGFncyAtPSBJc0NvbXBvc2l0aW5nVXBkYXRlUm9vdDsK
KyAgICAgICAgZmxhZ3MucmVtb3ZlKElzQ29tcG9zaXRpbmdVcGRhdGVSb290KTsKIAogICAgIGlm
IChyZW5kZXJlcigpLmlzSW5GbG93UmVuZGVyRnJhZ21lbnRlZEZsb3coKSkgewogICAgICAgICB1
cGRhdGVQYWdpbmF0aW9uKCk7Ci0gICAgICAgIGZsYWdzIHw9IFVwZGF0ZVBhZ2luYXRpb247Cisg
ICAgICAgIGZsYWdzLmFkZChVcGRhdGVQYWdpbmF0aW9uKTsKICAgICB9CiAKICAgICBpZiAodHJh
bnNmb3JtKCkpIHsKLSAgICAgICAgZmxhZ3MgfD0gU2VlblRyYW5zZm9ybWVkTGF5ZXI7CisgICAg
ICAgIGZsYWdzLmFkZChTZWVuVHJhbnNmb3JtZWRMYXllcik7CiAgICAgICAgIGlmICghdHJhbnNm
b3JtKCktPmlzQWZmaW5lKCkpCi0gICAgICAgICAgICBmbGFncyB8PSBTZWVuM0RUcmFuc2Zvcm1l
ZExheWVyOworICAgICAgICAgICAgZmxhZ3MuYWRkKFNlZW4zRFRyYW5zZm9ybWVkTGF5ZXIpOwog
ICAgIH0KIAogICAgIGZvciAoUmVuZGVyTGF5ZXIqIGNoaWxkID0gZmlyc3RDaGlsZCgpOyBjaGls
ZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkKQEAgLTU3Niw5ICs1NzYsOSBAQCB2b2lk
IFJlbmRlckxheWVyOjp1cGRhdGVMYXllclBvc2l0aW9ucyhSCiAgICAgaWYgKChmbGFncyAmIFVw
ZGF0ZUNvbXBvc2l0aW5nTGF5ZXJzKSAmJiBpc0NvbXBvc2l0ZWQoKSkgewogICAgICAgICBPcHRp
b25TZXQ8UmVuZGVyTGF5ZXJCYWNraW5nOjpVcGRhdGVBZnRlckxheW91dEZsYWdzPiB1cGRhdGVG
bGFnczsKICAgICAgICAgaWYgKGZsYWdzICYgTmVlZHNGdWxsUmVwYWludEluQmFja2luZykKLSAg
ICAgICAgICAgIHVwZGF0ZUZsYWdzIHw9IFJlbmRlckxheWVyQmFja2luZzo6VXBkYXRlQWZ0ZXJM
YXlvdXRGbGFnczo6TmVlZHNGdWxsUmVwYWludDsKKyAgICAgICAgICAgIHVwZGF0ZUZsYWdzLmFk
ZChSZW5kZXJMYXllckJhY2tpbmc6OlVwZGF0ZUFmdGVyTGF5b3V0RmxhZ3M6Ok5lZWRzRnVsbFJl
cGFpbnQpOwogICAgICAgICBpZiAoaXNVcGRhdGVSb290KQotICAgICAgICAgICAgdXBkYXRlRmxh
Z3MgfD0gUmVuZGVyTGF5ZXJCYWNraW5nOjpVcGRhdGVBZnRlckxheW91dEZsYWdzOjpJc1VwZGF0
ZVJvb3Q7CisgICAgICAgICAgICB1cGRhdGVGbGFncy5hZGQoUmVuZGVyTGF5ZXJCYWNraW5nOjpV
cGRhdGVBZnRlckxheW91dEZsYWdzOjpJc1VwZGF0ZVJvb3QpOwogICAgICAgICBiYWNraW5nKCkt
PnVwZGF0ZUFmdGVyTGF5b3V0KHVwZGF0ZUZsYWdzKTsKICAgICB9CiAgICAgICAgIApAQCAtODUx
LDE2ICs4NTEsMTYgQEAgdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlTGF5ZXJQb3NpdGlvbnNBZgog
CiAgICAgYm9vbCBwb3NpdGlvbkNoYW5nZWQgPSB1cGRhdGVMYXllclBvc2l0aW9uKCk7CiAgICAg
aWYgKHBvc2l0aW9uQ2hhbmdlZCkKLSAgICAgICAgZmxhZ3MgfD0gSGFzQ2hhbmdlZEFuY2VzdG9y
OworICAgICAgICBmbGFncy5hZGQoSGFzQ2hhbmdlZEFuY2VzdG9yKTsKIAogICAgIGlmIChmbGFn
cy5jb250YWluc0FueSh7IEhhc0NoYW5nZWRBbmNlc3RvciwgSGFzU2VlblZpZXdwb3J0Q29uc3Ry
YWluZWRBbmNlc3RvciwgSXNPdmVyZmxvd1Njcm9sbCB9KSkKICAgICAgICAgY2xlYXJDbGlwUmVj
dHMoKTsKIAogICAgIGlmIChyZW5kZXJlcigpLnN0eWxlKCkuaGFzVmlld3BvcnRDb25zdHJhaW5l
ZFBvc2l0aW9uKCkpCi0gICAgICAgIGZsYWdzIHw9IEhhc1NlZW5WaWV3cG9ydENvbnN0cmFpbmVk
QW5jZXN0b3I7CisgICAgICAgIGZsYWdzLmFkZChIYXNTZWVuVmlld3BvcnRDb25zdHJhaW5lZEFu
Y2VzdG9yKTsKIAogICAgIGlmIChyZW5kZXJlcigpLmhhc092ZXJmbG93Q2xpcCgpKQotICAgICAg
ICBmbGFncyB8PSBIYXNTZWVuQW5jZXN0b3JXaXRoT3ZlcmZsb3dDbGlwOworICAgICAgICBmbGFn
cy5hZGQoSGFzU2VlbkFuY2VzdG9yV2l0aE92ZXJmbG93Q2xpcCk7CiAgICAgCiAgICAgYm9vbCBz
aG91bGRDb21wdXRlUmVwYWludFJlY3RzID0gKGZsYWdzLmNvbnRhaW5zKEhhc1NlZW5WaWV3cG9y
dENvbnN0cmFpbmVkQW5jZXN0b3IpIHx8IGZsYWdzLmNvbnRhaW5zQWxsKHsgSXNPdmVyZmxvd1Nj
cm9sbCwgSGFzU2VlbkFuY2VzdG9yV2l0aE92ZXJmbG93Q2xpcCB9KSkgJiYgaXNTZWxmUGFpbnRp
bmdMYXllcigpOwogICAgIGJvb2wgaXNWaXN1YWxseUVtcHR5ID0gIWlzVmlzdWFsbHlOb25FbXB0
eSgpOwpAQCAtMzk3Myw3ICszOTczLDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMYXllcihH
cmFwaGljc0NvbgogICAgICAgICAvLyBUaGUgcGVyZm9ybWluZ1BhaW50SW52YWxpZGF0aW9uKCkg
cGFpbnRpbmcgcGFzcyBnb2VzIHRocm91Z2ggY29tcG9zaXRpbmcgbGF5ZXJzLAogICAgICAgICAv
LyBidXQgd2UgbmVlZCB0byBlbnN1cmUgdGhhdCB3ZSBkb24ndCBjYWNoZSBjbGlwIHJlY3RzIGNv
bXB1dGVkIHdpdGggdGhlIHdyb25nIHJvb3QgaW4gdGhpcyBjYXNlLgogICAgICAgICBpZiAoY29u
dGV4dC5wZXJmb3JtaW5nUGFpbnRJbnZhbGlkYXRpb24oKSB8fCAocGFpbnRpbmdJbmZvLnBhaW50
QmVoYXZpb3IgJiBQYWludEJlaGF2aW9yOjpGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMpKQotICAg
ICAgICAgICAgcGFpbnRGbGFncyB8PSBQYWludExheWVyVGVtcG9yYXJ5Q2xpcFJlY3RzOworICAg
ICAgICAgICAgcGFpbnRGbGFncy5hZGQoUGFpbnRMYXllclRlbXBvcmFyeUNsaXBSZWN0cyk7CiAg
ICAgICAgIGVsc2UgaWYgKCFiYWNraW5nKCktPnBhaW50c0ludG9XaW5kb3coKQogICAgICAgICAg
ICAgJiYgIWJhY2tpbmcoKS0+cGFpbnRzSW50b0NvbXBvc2l0ZWRBbmNlc3RvcigpCiAgICAgICAg
ICAgICAmJiAhc2hvdWxkRG9Tb2Z0d2FyZVBhaW50KHRoaXMsIHBhaW50RmxhZ3MuY29udGFpbnMo
UGFpbnRMYXllclBhaW50aW5nUmVmbGVjdGlvbikpCkBAIC00MDAwLDcgKzQwMDAsNyBAQCB2b2lk
IFJlbmRlckxheWVyOjpwYWludExheWVyKEdyYXBoaWNzQ29uCiAgICAgICAgIHJldHVybjsKIAog
ICAgIGlmIChwYWludHNXaXRoVHJhbnNwYXJlbmN5KHBhaW50aW5nSW5mby5wYWludEJlaGF2aW9y
KSkKLSAgICAgICAgcGFpbnRGbGFncyB8PSBQYWludExheWVySGF2ZVRyYW5zcGFyZW5jeTsKKyAg
ICAgICAgcGFpbnRGbGFncy5hZGQoUGFpbnRMYXllckhhdmVUcmFuc3BhcmVuY3kpOwogCiAgICAg
Ly8gUGFpbnRMYXllckFwcGxpZWRUcmFuc2Zvcm0gaXMgdXNlZCBpbiBSZW5kZXJSZXBsaWNhLCB0
byBhdm9pZCBhcHBseWluZyB0aGUgdHJhbnNmb3JtIHR3aWNlLgogICAgIGlmIChwYWludHNXaXRo
VHJhbnNmb3JtKHBhaW50aW5nSW5mby5wYWludEJlaGF2aW9yKSAmJiAhKHBhaW50RmxhZ3MgJiBQ
YWludExheWVyQXBwbGllZFRyYW5zZm9ybSkpIHsKQEAgLTQwNjEsNyArNDA2MSw3IEBAIHZvaWQg
UmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJDb250ZW50c0FuZFIKICAgICAgICAgbV9wYWludGluZ0lu
c2lkZVJlZmxlY3Rpb24gPSBmYWxzZTsKICAgICB9CiAKLSAgICBsb2NhbFBhaW50RmxhZ3MgfD0g
cGFpbnRMYXllclBhaW50aW5nQ29tcG9zaXRpbmdBbGxQaGFzZXNGbGFncygpOworICAgIGxvY2Fs
UGFpbnRGbGFncy5hZGQocGFpbnRMYXllclBhaW50aW5nQ29tcG9zaXRpbmdBbGxQaGFzZXNGbGFn
cygpKTsKICAgICBwYWludExheWVyQ29udGVudHMoY29udGV4dCwgcGFpbnRpbmdJbmZvLCBsb2Nh
bFBhaW50RmxhZ3MpOwogfQogCkBAIC00MzU1LDIxICs0MzU1LDIxIEBAIHZvaWQgUmVuZGVyTGF5
ZXI6OnBhaW50TGF5ZXJDb250ZW50cyhHcmEKIAogICAgICAgICBPcHRpb25TZXQ8UGFpbnRCZWhh
dmlvcj4gcGFpbnRCZWhhdmlvciA9IFBhaW50QmVoYXZpb3I6Ok5vcm1hbDsKICAgICAgICAgaWYg
KGxvY2FsUGFpbnRGbGFncyAmIFBhaW50TGF5ZXJQYWludGluZ1NraXBSb290QmFja2dyb3VuZCkK
LSAgICAgICAgICAgIHBhaW50QmVoYXZpb3IgfD0gUGFpbnRCZWhhdmlvcjo6U2tpcFJvb3RCYWNr
Z3JvdW5kOworICAgICAgICAgICAgcGFpbnRCZWhhdmlvci5hZGQoUGFpbnRCZWhhdmlvcjo6U2tp
cFJvb3RCYWNrZ3JvdW5kKTsKICAgICAgICAgZWxzZSBpZiAobG9jYWxQYWludEZsYWdzICYgUGFp
bnRMYXllclBhaW50aW5nUm9vdEJhY2tncm91bmRPbmx5KQotICAgICAgICAgICAgcGFpbnRCZWhh
dmlvciB8PSBQYWludEJlaGF2aW9yOjpSb290QmFja2dyb3VuZE9ubHk7CisgICAgICAgICAgICBw
YWludEJlaGF2aW9yLmFkZChQYWludEJlaGF2aW9yOjpSb290QmFja2dyb3VuZE9ubHkpOwogCiAg
ICAgICAgIGlmIChwYWludGluZ0luZm8ucGFpbnRCZWhhdmlvciAmIFBhaW50QmVoYXZpb3I6OkZs
YXR0ZW5Db21wb3NpdGluZ0xheWVycykKLSAgICAgICAgICAgIHBhaW50QmVoYXZpb3IgfD0gUGFp
bnRCZWhhdmlvcjo6RmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzOworICAgICAgICAgICAgcGFpbnRC
ZWhhdmlvci5hZGQoUGFpbnRCZWhhdmlvcjo6RmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzKTsKICAg
ICAgICAgCiAgICAgICAgIGlmIChwYWludGluZ0luZm8ucGFpbnRCZWhhdmlvciAmIFBhaW50QmVo
YXZpb3I6OlNuYXBzaG90dGluZykKLSAgICAgICAgICAgIHBhaW50QmVoYXZpb3IgfD0gUGFpbnRC
ZWhhdmlvcjo6U25hcHNob3R0aW5nOworICAgICAgICAgICAgcGFpbnRCZWhhdmlvci5hZGQoUGFp
bnRCZWhhdmlvcjo6U25hcHNob3R0aW5nKTsKICAgICAgICAgCiAgICAgICAgIGlmICgocGFpbnRp
bmdJbmZvLnBhaW50QmVoYXZpb3IgJiBQYWludEJlaGF2aW9yOjpUaWxlRmlyc3RQYWludCkgJiYg
aXNSZW5kZXJWaWV3TGF5ZXIoKSkKLSAgICAgICAgICAgIHBhaW50QmVoYXZpb3IgfD0gUGFpbnRC
ZWhhdmlvcjo6VGlsZUZpcnN0UGFpbnQ7CisgICAgICAgICAgICBwYWludEJlaGF2aW9yLmFkZChQ
YWludEJlaGF2aW9yOjpUaWxlRmlyc3RQYWludCk7CiAKICAgICAgICAgaWYgKHBhaW50aW5nSW5m
by5wYWludEJlaGF2aW9yICYgUGFpbnRCZWhhdmlvcjo6RXhjbHVkZVNlbGVjdGlvbikKLSAgICAg
ICAgICAgIHBhaW50QmVoYXZpb3IgfD0gUGFpbnRCZWhhdmlvcjo6RXhjbHVkZVNlbGVjdGlvbjsK
KyAgICAgICAgICAgIHBhaW50QmVoYXZpb3IuYWRkKFBhaW50QmVoYXZpb3I6OkV4Y2x1ZGVTZWxl
Y3Rpb24pOwogCiAgICAgICAgIExheW91dFJlY3QgcGFpbnREaXJ0eVJlY3QgPSBsb2NhbFBhaW50
aW5nSW5mby5wYWludERpcnR5UmVjdDsKICAgICAgICAgaWYgKHNob3VsZFBhaW50Q29udGVudCB8
fCBzaG91bGRQYWludE91dGxpbmUgfHwgaXNQYWludGluZ092ZXJsYXlTY3JvbGxiYXJzKSB7CkBA
IC00NDM4LDEzICs0NDM4LDEzIEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJDb250ZW50
cyhHcmEKICAgICBpZiAoc2hvdWxkUGFpbnRDb250ZW50ICYmICEoc2VsZWN0aW9uT25seSB8fCBz
ZWxlY3Rpb25BbmRCYWNrZ3JvdW5kc09ubHkpKSB7CiAgICAgICAgIE9wdGlvblNldDxQYWludEJl
aGF2aW9yPiBwYWludEJlaGF2aW9yID0gUGFpbnRCZWhhdmlvcjo6Tm9ybWFsOwogICAgICAgICBp
ZiAocGFpbnRpbmdJbmZvLnBhaW50QmVoYXZpb3IgJiBQYWludEJlaGF2aW9yOjpGbGF0dGVuQ29t
cG9zaXRpbmdMYXllcnMpCi0gICAgICAgICAgICBwYWludEJlaGF2aW9yIHw9IFBhaW50QmVoYXZp
b3I6OkZsYXR0ZW5Db21wb3NpdGluZ0xheWVyczsKKyAgICAgICAgICAgIHBhaW50QmVoYXZpb3Iu
YWRkKFBhaW50QmVoYXZpb3I6OkZsYXR0ZW5Db21wb3NpdGluZ0xheWVycyk7CiAgICAgICAgIAog
ICAgICAgICBpZiAocGFpbnRpbmdJbmZvLnBhaW50QmVoYXZpb3IgJiBQYWludEJlaGF2aW9yOjpT
bmFwc2hvdHRpbmcpCi0gICAgICAgICAgICBwYWludEJlaGF2aW9yIHw9IFBhaW50QmVoYXZpb3I6
OlNuYXBzaG90dGluZzsKKyAgICAgICAgICAgIHBhaW50QmVoYXZpb3IuYWRkKFBhaW50QmVoYXZp
b3I6OlNuYXBzaG90dGluZyk7CiAgICAgICAgIAogICAgICAgICBpZiAocGFpbnRpbmdJbmZvLnBh
aW50QmVoYXZpb3IgJiBQYWludEJlaGF2aW9yOjpUaWxlRmlyc3RQYWludCkKLSAgICAgICAgICAg
IHBhaW50QmVoYXZpb3IgfD0gUGFpbnRCZWhhdmlvcjo6VGlsZUZpcnN0UGFpbnQ7CisgICAgICAg
ICAgICBwYWludEJlaGF2aW9yLmFkZChQYWludEJlaGF2aW9yOjpUaWxlRmlyc3RQYWludCk7CiAK
ICAgICAgICAgaWYgKHNob3VsZFBhaW50TWFzayhwYWludGluZ0luZm8ucGFpbnRCZWhhdmlvciwg
bG9jYWxQYWludEZsYWdzKSkgewogICAgICAgICAgICAgLy8gUGFpbnQgdGhlIG1hc2sgZm9yIHRo
ZSBmcmFnbWVudHMuCkBAIC00NzcwLDEzICs0NzcwLDEzIEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBh
aW50Rm9yZWdyb3VuZEZvckZyYWcKICAgICAgICAgbG9jYWxQYWludEJlaGF2aW9yID0gcGFpbnRC
ZWhhdmlvcjsKIAogICAgIGlmIChsb2NhbFBhaW50aW5nSW5mby5wYWludEJlaGF2aW9yICYgUGFp
bnRCZWhhdmlvcjo6RXhjbHVkZVNlbGVjdGlvbikKLSAgICAgICAgbG9jYWxQYWludEJlaGF2aW9y
IHw9IFBhaW50QmVoYXZpb3I6OkV4Y2x1ZGVTZWxlY3Rpb247CisgICAgICAgIGxvY2FsUGFpbnRC
ZWhhdmlvci5hZGQoUGFpbnRCZWhhdmlvcjo6RXhjbHVkZVNlbGVjdGlvbik7CiAgICAgCiAgICAg
aWYgKGxvY2FsUGFpbnRpbmdJbmZvLnBhaW50QmVoYXZpb3IgJiBQYWludEJlaGF2aW9yOjpTbmFw
c2hvdHRpbmcpCi0gICAgICAgIGxvY2FsUGFpbnRCZWhhdmlvciB8PSBQYWludEJlaGF2aW9yOjpT
bmFwc2hvdHRpbmc7CisgICAgICAgIGxvY2FsUGFpbnRCZWhhdmlvci5hZGQoUGFpbnRCZWhhdmlv
cjo6U25hcHNob3R0aW5nKTsKICAgICAKICAgICBpZiAobG9jYWxQYWludGluZ0luZm8ucGFpbnRC
ZWhhdmlvciAmIFBhaW50QmVoYXZpb3I6OlRpbGVGaXJzdFBhaW50KQotICAgICAgICBsb2NhbFBh
aW50QmVoYXZpb3IgfD0gUGFpbnRCZWhhdmlvcjo6VGlsZUZpcnN0UGFpbnQ7CisgICAgICAgIGxv
Y2FsUGFpbnRCZWhhdmlvci5hZGQoUGFpbnRCZWhhdmlvcjo6VGlsZUZpcnN0UGFpbnQpOwogCiAg
ICAgLy8gT3B0aW1pemUgY2xpcHBpbmcgZm9yIHRoZSBzaW5nbGUgZnJhZ21lbnQgY2FzZS4KICAg
ICBib29sIHNob3VsZENsaXAgPSBsb2NhbFBhaW50aW5nSW5mby5jbGlwVG9EaXJ0eVJlY3QgJiYg
bGF5ZXJGcmFnbWVudHMuc2l6ZSgpID09IDEgJiYgbGF5ZXJGcmFnbWVudHNbMF0uc2hvdWxkUGFp
bnRDb250ZW50ICYmICFsYXllckZyYWdtZW50c1swXS5mb3JlZ3JvdW5kUmVjdC5pc0VtcHR5KCk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5n
LmNwcAkocmV2aXNpb24gMjM1NTM5KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyQmFja2luZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1MzQsMjQgKzI1MzQsMjQgQEAg
dm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnBhaW50SW50b0xheWVyKAogCiAgICAgT3B0aW9uU2V0
PFJlbmRlckxheWVyOjpQYWludExheWVyRmxhZz4gcGFpbnRGbGFnczsKICAgICBpZiAocGFpbnRp
bmdQaGFzZSAmIEdyYXBoaWNzTGF5ZXJQYWludEJhY2tncm91bmQpCi0gICAgICAgIHBhaW50Rmxh
Z3MgfD0gUmVuZGVyTGF5ZXI6OlBhaW50TGF5ZXJQYWludGluZ0NvbXBvc2l0aW5nQmFja2dyb3Vu
ZFBoYXNlOworICAgICAgICBwYWludEZsYWdzLmFkZChSZW5kZXJMYXllcjo6UGFpbnRMYXllclBh
aW50aW5nQ29tcG9zaXRpbmdCYWNrZ3JvdW5kUGhhc2UpOwogICAgIGlmIChwYWludGluZ1BoYXNl
ICYgR3JhcGhpY3NMYXllclBhaW50Rm9yZWdyb3VuZCkKLSAgICAgICAgcGFpbnRGbGFncyB8PSBS
ZW5kZXJMYXllcjo6UGFpbnRMYXllclBhaW50aW5nQ29tcG9zaXRpbmdGb3JlZ3JvdW5kUGhhc2U7
CisgICAgICAgIHBhaW50RmxhZ3MuYWRkKFJlbmRlckxheWVyOjpQYWludExheWVyUGFpbnRpbmdD
b21wb3NpdGluZ0ZvcmVncm91bmRQaGFzZSk7CiAgICAgaWYgKHBhaW50aW5nUGhhc2UgJiBHcmFw
aGljc0xheWVyUGFpbnRNYXNrKQotICAgICAgICBwYWludEZsYWdzIHw9IFJlbmRlckxheWVyOjpQ
YWludExheWVyUGFpbnRpbmdDb21wb3NpdGluZ01hc2tQaGFzZTsKKyAgICAgICAgcGFpbnRGbGFn
cy5hZGQoUmVuZGVyTGF5ZXI6OlBhaW50TGF5ZXJQYWludGluZ0NvbXBvc2l0aW5nTWFza1BoYXNl
KTsKICAgICBpZiAocGFpbnRpbmdQaGFzZSAmIEdyYXBoaWNzTGF5ZXJQYWludENsaXBQYXRoKQot
ICAgICAgICBwYWludEZsYWdzIHw9IFJlbmRlckxheWVyOjpQYWludExheWVyUGFpbnRpbmdDb21w
b3NpdGluZ0NsaXBQYXRoUGhhc2U7CisgICAgICAgIHBhaW50RmxhZ3MuYWRkKFJlbmRlckxheWVy
OjpQYWludExheWVyUGFpbnRpbmdDb21wb3NpdGluZ0NsaXBQYXRoUGhhc2UpOwogICAgIGlmIChw
YWludGluZ1BoYXNlICYgR3JhcGhpY3NMYXllclBhaW50Q2hpbGRDbGlwcGluZ01hc2spCi0gICAg
ICAgIHBhaW50RmxhZ3MgfD0gUmVuZGVyTGF5ZXI6OlBhaW50TGF5ZXJQYWludGluZ0NoaWxkQ2xp
cHBpbmdNYXNrUGhhc2U7CisgICAgICAgIHBhaW50RmxhZ3MuYWRkKFJlbmRlckxheWVyOjpQYWlu
dExheWVyUGFpbnRpbmdDaGlsZENsaXBwaW5nTWFza1BoYXNlKTsKICAgICBpZiAocGFpbnRpbmdQ
aGFzZSAmIEdyYXBoaWNzTGF5ZXJQYWludE92ZXJmbG93Q29udGVudHMpCi0gICAgICAgIHBhaW50
RmxhZ3MgfD0gUmVuZGVyTGF5ZXI6OlBhaW50TGF5ZXJQYWludGluZ092ZXJmbG93Q29udGVudHM7
CisgICAgICAgIHBhaW50RmxhZ3MuYWRkKFJlbmRlckxheWVyOjpQYWludExheWVyUGFpbnRpbmdP
dmVyZmxvd0NvbnRlbnRzKTsKICAgICBpZiAocGFpbnRpbmdQaGFzZSAmIEdyYXBoaWNzTGF5ZXJQ
YWludENvbXBvc2l0ZWRTY3JvbGwpCi0gICAgICAgIHBhaW50RmxhZ3MgfD0gUmVuZGVyTGF5ZXI6
OlBhaW50TGF5ZXJQYWludGluZ0NvbXBvc2l0aW5nU2Nyb2xsaW5nUGhhc2U7CisgICAgICAgIHBh
aW50RmxhZ3MuYWRkKFJlbmRlckxheWVyOjpQYWludExheWVyUGFpbnRpbmdDb21wb3NpdGluZ1Nj
cm9sbGluZ1BoYXNlKTsKIAogICAgIGlmIChncmFwaGljc0xheWVyID09IG1fYmFja2dyb3VuZExh
eWVyLmdldCgpICYmIG1fYmFja2dyb3VuZExheWVyUGFpbnRzRml4ZWRSb290QmFja2dyb3VuZCkK
LSAgICAgICAgcGFpbnRGbGFncyB8PSB7IFJlbmRlckxheWVyOjpQYWludExheWVyUGFpbnRpbmdS
b290QmFja2dyb3VuZE9ubHksIFJlbmRlckxheWVyOjpQYWludExheWVyUGFpbnRpbmdDb21wb3Np
dGluZ0ZvcmVncm91bmRQaGFzZSB9OyAvLyBOZWVkIFBhaW50TGF5ZXJQYWludGluZ0NvbXBvc2l0
aW5nRm9yZWdyb3VuZFBoYXNlIHRvIHdhbGsgY2hpbGQgbGF5ZXJzLgorICAgICAgICBwYWludEZs
YWdzLmFkZCh7IFJlbmRlckxheWVyOjpQYWludExheWVyUGFpbnRpbmdSb290QmFja2dyb3VuZE9u
bHksIFJlbmRlckxheWVyOjpQYWludExheWVyUGFpbnRpbmdDb21wb3NpdGluZ0ZvcmVncm91bmRQ
aGFzZSB9KTsgLy8gTmVlZCBQYWludExheWVyUGFpbnRpbmdDb21wb3NpdGluZ0ZvcmVncm91bmRQ
aGFzZSB0byB3YWxrIGNoaWxkIGxheWVycy4KICAgICBlbHNlIGlmIChjb21wb3NpdG9yKCkuZml4
ZWRSb290QmFja2dyb3VuZExheWVyKCkpCi0gICAgICAgIHBhaW50RmxhZ3MgfD0gUmVuZGVyTGF5
ZXI6OlBhaW50TGF5ZXJQYWludGluZ1NraXBSb290QmFja2dyb3VuZDsKKyAgICAgICAgcGFpbnRG
bGFncy5hZGQoUmVuZGVyTGF5ZXI6OlBhaW50TGF5ZXJQYWludGluZ1NraXBSb290QmFja2dyb3Vu
ZCk7CiAKICNpZm5kZWYgTkRFQlVHCiAgICAgUmVuZGVyRWxlbWVudDo6U2V0TGF5b3V0TmVlZGVk
Rm9yYmlkZGVuU2NvcGUgZm9yYmlkU2V0TmVlZHNMYXlvdXQoJnJlbmRlcmVyKCkpOwpAQCAtMjYw
OSwxMCArMjYwOSwxMCBAQCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6cGFpbnRDb250ZW50cyhj
CiAgICAgICAgIC8vIFdlIGhhdmUgdG8gdXNlIHRoZSBzYW1lIHJvb3QgYXMgZm9yIGhpdCB0ZXN0
aW5nLCBiZWNhdXNlIGJvdGggbWV0aG9kcyBjYW4gY29tcHV0ZSBhbmQgY2FjaGUgY2xpcFJlY3Rz
LgogICAgICAgICBPcHRpb25TZXQ8UGFpbnRCZWhhdmlvcj4gYmVoYXZpb3IgPSBQYWludEJlaGF2
aW9yOjpOb3JtYWw7CiAgICAgICAgIGlmIChsYXllclBhaW50QmVoYXZpb3IgPT0gR3JhcGhpY3NM
YXllclBhaW50U25hcHNob3R0aW5nKQotICAgICAgICAgICAgYmVoYXZpb3IgfD0gUGFpbnRCZWhh
dmlvcjo6U25hcHNob3R0aW5nOworICAgICAgICAgICAgYmVoYXZpb3IuYWRkKFBhaW50QmVoYXZp
b3I6OlNuYXBzaG90dGluZyk7CiAgICAgICAgIAogICAgICAgICBpZiAobGF5ZXJQYWludEJlaGF2
aW9yID09IEdyYXBoaWNzTGF5ZXJQYWludEZpcnN0VGlsZVBhaW50KQotICAgICAgICAgICAgYmVo
YXZpb3IgfD0gUGFpbnRCZWhhdmlvcjo6VGlsZUZpcnN0UGFpbnQ7CisgICAgICAgICAgICBiZWhh
dmlvci5hZGQoUGFpbnRCZWhhdmlvcjo6VGlsZUZpcnN0UGFpbnQpOwogCiAgICAgICAgIHBhaW50
SW50b0xheWVyKGdyYXBoaWNzTGF5ZXIsIGNvbnRleHQsIGRpcnR5UmVjdCwgYmVoYXZpb3IsIHBh
aW50aW5nUGhhc2UpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXJDb21wb3NpdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAkocmV2aXNpb24gMjM1NTM5KQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTIxNjQsODkgKzIxNjQsODkgQEAgT3B0aW9uU2V0PENvbXBvc2l0aW5nUmVhc29uPiBSZW5k
ZXJMYXllcgogICAgIGF1dG8mIHJlbmRlcmVyID0gcmVuZGVyZXJGb3JDb21wb3NpdGluZ1Rlc3Rz
KGxheWVyKTsKIAogICAgIGlmIChyZXF1aXJlc0NvbXBvc2l0aW5nRm9yVHJhbnNmb3JtKHJlbmRl
cmVyKSkKLSAgICAgICAgcmVhc29ucyB8PSBDb21wb3NpdGluZ1JlYXNvbjo6VHJhbnNmb3JtM0Q7
CisgICAgICAgIHJlYXNvbnMuYWRkKENvbXBvc2l0aW5nUmVhc29uOjpUcmFuc2Zvcm0zRCk7CiAK
ICAgICBpZiAocmVxdWlyZXNDb21wb3NpdGluZ0ZvclZpZGVvKHJlbmRlcmVyKSkKLSAgICAgICAg
cmVhc29ucyB8PSBDb21wb3NpdGluZ1JlYXNvbjo6VmlkZW87CisgICAgICAgIHJlYXNvbnMuYWRk
KENvbXBvc2l0aW5nUmVhc29uOjpWaWRlbyk7CiAgICAgZWxzZSBpZiAocmVxdWlyZXNDb21wb3Np
dGluZ0ZvckNhbnZhcyhyZW5kZXJlcikpCi0gICAgICAgIHJlYXNvbnMgfD0gQ29tcG9zaXRpbmdS
ZWFzb246OkNhbnZhczsKKyAgICAgICAgcmVhc29ucy5hZGQoQ29tcG9zaXRpbmdSZWFzb246OkNh
bnZhcyk7CiAgICAgZWxzZSBpZiAocmVxdWlyZXNDb21wb3NpdGluZ0ZvclBsdWdpbihyZW5kZXJl
cikpCi0gICAgICAgIHJlYXNvbnMgfD0gQ29tcG9zaXRpbmdSZWFzb246OlBsdWdpbjsKKyAgICAg
ICAgcmVhc29ucy5hZGQoQ29tcG9zaXRpbmdSZWFzb246OlBsdWdpbik7CiAgICAgZWxzZSBpZiAo
cmVxdWlyZXNDb21wb3NpdGluZ0ZvckZyYW1lKHJlbmRlcmVyKSkKLSAgICAgICAgcmVhc29ucyB8
PSBDb21wb3NpdGluZ1JlYXNvbjo6SUZyYW1lOworICAgICAgICByZWFzb25zLmFkZChDb21wb3Np
dGluZ1JlYXNvbjo6SUZyYW1lKTsKIAogICAgIGlmICgoY2FuUmVuZGVyM0RUcmFuc2Zvcm1zKCkg
JiYgcmVuZGVyZXIuc3R5bGUoKS5iYWNrZmFjZVZpc2liaWxpdHkoKSA9PSBCYWNrZmFjZVZpc2li
aWxpdHk6OkhpZGRlbikpCi0gICAgICAgIHJlYXNvbnMgfD0gQ29tcG9zaXRpbmdSZWFzb246OkJh
Y2tmYWNlVmlzaWJpbGl0eUhpZGRlbjsKKyAgICAgICAgcmVhc29ucy5hZGQoQ29tcG9zaXRpbmdS
ZWFzb246OkJhY2tmYWNlVmlzaWJpbGl0eUhpZGRlbik7CiAKICAgICBpZiAoY2xpcHNDb21wb3Np
dGluZ0Rlc2NlbmRhbnRzKCpyZW5kZXJlci5sYXllcigpKSkKLSAgICAgICAgcmVhc29ucyB8PSBD
b21wb3NpdGluZ1JlYXNvbjo6Q2xpcHNDb21wb3NpdGluZ0Rlc2NlbmRhbnRzOworICAgICAgICBy
ZWFzb25zLmFkZChDb21wb3NpdGluZ1JlYXNvbjo6Q2xpcHNDb21wb3NpdGluZ0Rlc2NlbmRhbnRz
KTsKIAogICAgIGlmIChyZXF1aXJlc0NvbXBvc2l0aW5nRm9yQW5pbWF0aW9uKHJlbmRlcmVyKSkK
LSAgICAgICAgcmVhc29ucyB8PSBDb21wb3NpdGluZ1JlYXNvbjo6QW5pbWF0aW9uOworICAgICAg
ICByZWFzb25zLmFkZChDb21wb3NpdGluZ1JlYXNvbjo6QW5pbWF0aW9uKTsKIAogICAgIGlmIChy
ZXF1aXJlc0NvbXBvc2l0aW5nRm9yRmlsdGVycyhyZW5kZXJlcikpCi0gICAgICAgIHJlYXNvbnMg
fD0gQ29tcG9zaXRpbmdSZWFzb246OkZpbHRlcnM7CisgICAgICAgIHJlYXNvbnMuYWRkKENvbXBv
c2l0aW5nUmVhc29uOjpGaWx0ZXJzKTsKIAogICAgIGlmIChyZXF1aXJlc0NvbXBvc2l0aW5nRm9y
V2lsbENoYW5nZShyZW5kZXJlcikpCi0gICAgICAgIHJlYXNvbnMgfD0gQ29tcG9zaXRpbmdSZWFz
b246OldpbGxDaGFuZ2U7CisgICAgICAgIHJlYXNvbnMuYWRkKENvbXBvc2l0aW5nUmVhc29uOjpX
aWxsQ2hhbmdlKTsKIAogICAgIGlmIChyZXF1aXJlc0NvbXBvc2l0aW5nRm9yUG9zaXRpb24ocmVu
ZGVyZXIsICpyZW5kZXJlci5sYXllcigpKSkKLSAgICAgICAgcmVhc29ucyB8PSByZW5kZXJlci5p
c0ZpeGVkUG9zaXRpb25lZCgpID8gQ29tcG9zaXRpbmdSZWFzb246OlBvc2l0aW9uRml4ZWQgOiBD
b21wb3NpdGluZ1JlYXNvbjo6UG9zaXRpb25TdGlja3k7CisgICAgICAgIHJlYXNvbnMuYWRkKHJl
bmRlcmVyLmlzRml4ZWRQb3NpdGlvbmVkKCkgPyBDb21wb3NpdGluZ1JlYXNvbjo6UG9zaXRpb25G
aXhlZCA6IENvbXBvc2l0aW5nUmVhc29uOjpQb3NpdGlvblN0aWNreSk7CiAKICNpZiBQTEFURk9S
TShJT1MpCiAgICAgaWYgKHJlcXVpcmVzQ29tcG9zaXRpbmdGb3JTY3JvbGxpbmcoKnJlbmRlcmVy
LmxheWVyKCkpKQotICAgICAgICByZWFzb25zIHw9IENvbXBvc2l0aW5nUmVhc29uOjpPdmVyZmxv
d1Njcm9sbGluZ1RvdWNoOworICAgICAgICByZWFzb25zLmFkZChDb21wb3NpdGluZ1JlYXNvbjo6
T3ZlcmZsb3dTY3JvbGxpbmdUb3VjaCk7CiAjZW5kaWYKIAogICAgIGlmIChyZXF1aXJlc0NvbXBv
c2l0aW5nRm9yT3ZlcmZsb3dTY3JvbGxpbmcoKnJlbmRlcmVyLmxheWVyKCkpKQotICAgICAgICBy
ZWFzb25zIHw9IENvbXBvc2l0aW5nUmVhc29uOjpPdmVyZmxvd1Njcm9sbGluZ1RvdWNoOworICAg
ICAgICByZWFzb25zLmFkZChDb21wb3NpdGluZ1JlYXNvbjo6T3ZlcmZsb3dTY3JvbGxpbmdUb3Vj
aCk7CiAKICAgICBzd2l0Y2ggKHJlbmRlcmVyLmxheWVyKCktPmluZGlyZWN0Q29tcG9zaXRpbmdS
ZWFzb24oKSkgewogICAgIGNhc2UgUmVuZGVyTGF5ZXI6OkluZGlyZWN0Q29tcG9zaXRpbmdSZWFz
b246Ok5vbmU6CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUmVuZGVyTGF5ZXI6OkluZGlyZWN0
Q29tcG9zaXRpbmdSZWFzb246OlN0YWNraW5nOgotICAgICAgICByZWFzb25zIHw9IENvbXBvc2l0
aW5nUmVhc29uOjpTdGFja2luZzsKKyAgICAgICAgcmVhc29ucy5hZGQoQ29tcG9zaXRpbmdSZWFz
b246OlN0YWNraW5nKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBSZW5kZXJMYXllcjo6SW5k
aXJlY3RDb21wb3NpdGluZ1JlYXNvbjo6T3ZlcmxhcDoKLSAgICAgICAgcmVhc29ucyB8PSBDb21w
b3NpdGluZ1JlYXNvbjo6T3ZlcmxhcDsKKyAgICAgICAgcmVhc29ucy5hZGQoQ29tcG9zaXRpbmdS
ZWFzb246Ok92ZXJsYXApOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFJlbmRlckxheWVyOjpJ
bmRpcmVjdENvbXBvc2l0aW5nUmVhc29uOjpCYWNrZ3JvdW5kTGF5ZXI6Ci0gICAgICAgIHJlYXNv
bnMgfD0gQ29tcG9zaXRpbmdSZWFzb246Ok5lZ2F0aXZlWkluZGV4Q2hpbGRyZW47CisgICAgICAg
IHJlYXNvbnMuYWRkKENvbXBvc2l0aW5nUmVhc29uOjpOZWdhdGl2ZVpJbmRleENoaWxkcmVuKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBSZW5kZXJMYXllcjo6SW5kaXJlY3RDb21wb3NpdGlu
Z1JlYXNvbjo6R3JhcGhpY2FsRWZmZWN0OgogICAgICAgICBpZiAocmVuZGVyZXIuaGFzVHJhbnNm
b3JtKCkpCi0gICAgICAgICAgICByZWFzb25zIHw9IENvbXBvc2l0aW5nUmVhc29uOjpUcmFuc2Zv
cm1XaXRoQ29tcG9zaXRlZERlc2NlbmRhbnRzOworICAgICAgICAgICAgcmVhc29ucy5hZGQoQ29t
cG9zaXRpbmdSZWFzb246OlRyYW5zZm9ybVdpdGhDb21wb3NpdGVkRGVzY2VuZGFudHMpOwogCiAg
ICAgICAgIGlmIChyZW5kZXJlci5pc1RyYW5zcGFyZW50KCkpCi0gICAgICAgICAgICByZWFzb25z
IHw9IENvbXBvc2l0aW5nUmVhc29uOjpPcGFjaXR5V2l0aENvbXBvc2l0ZWREZXNjZW5kYW50czsK
KyAgICAgICAgICAgIHJlYXNvbnMuYWRkKENvbXBvc2l0aW5nUmVhc29uOjpPcGFjaXR5V2l0aENv
bXBvc2l0ZWREZXNjZW5kYW50cyk7CiAKICAgICAgICAgaWYgKHJlbmRlcmVyLmhhc01hc2soKSkK
LSAgICAgICAgICAgIHJlYXNvbnMgfD0gQ29tcG9zaXRpbmdSZWFzb246Ok1hc2tXaXRoQ29tcG9z
aXRlZERlc2NlbmRhbnRzOworICAgICAgICAgICAgcmVhc29ucy5hZGQoQ29tcG9zaXRpbmdSZWFz
b246Ok1hc2tXaXRoQ29tcG9zaXRlZERlc2NlbmRhbnRzKTsKIAogICAgICAgICBpZiAocmVuZGVy
ZXIuaGFzUmVmbGVjdGlvbigpKQotICAgICAgICAgICAgcmVhc29ucyB8PSBDb21wb3NpdGluZ1Jl
YXNvbjo6UmVmbGVjdGlvbldpdGhDb21wb3NpdGVkRGVzY2VuZGFudHM7CisgICAgICAgICAgICBy
ZWFzb25zLmFkZChDb21wb3NpdGluZ1JlYXNvbjo6UmVmbGVjdGlvbldpdGhDb21wb3NpdGVkRGVz
Y2VuZGFudHMpOwogCiAgICAgICAgIGlmIChyZW5kZXJlci5oYXNGaWx0ZXIoKSB8fCByZW5kZXJl
ci5oYXNCYWNrZHJvcEZpbHRlcigpKQotICAgICAgICAgICAgcmVhc29ucyB8PSBDb21wb3NpdGlu
Z1JlYXNvbjo6RmlsdGVyV2l0aENvbXBvc2l0ZWREZXNjZW5kYW50czsKKyAgICAgICAgICAgIHJl
YXNvbnMuYWRkKENvbXBvc2l0aW5nUmVhc29uOjpGaWx0ZXJXaXRoQ29tcG9zaXRlZERlc2NlbmRh
bnRzKTsKIAogI2lmIEVOQUJMRShDU1NfQ09NUE9TSVRJTkcpCiAgICAgICAgIGlmIChsYXllci5p
c29sYXRlc0NvbXBvc2l0ZWRCbGVuZGluZygpKQotICAgICAgICAgICAgcmVhc29ucyB8PSBDb21w
b3NpdGluZ1JlYXNvbjo6SXNvbGF0ZXNDb21wb3NpdGVkQmxlbmRpbmdEZXNjZW5kYW50czsKKyAg
ICAgICAgICAgIHJlYXNvbnMuYWRkKENvbXBvc2l0aW5nUmVhc29uOjpJc29sYXRlc0NvbXBvc2l0
ZWRCbGVuZGluZ0Rlc2NlbmRhbnRzKTsKIAogICAgICAgICBpZiAobGF5ZXIuaGFzQmxlbmRNb2Rl
KCkpCi0gICAgICAgICAgICByZWFzb25zIHw9IENvbXBvc2l0aW5nUmVhc29uOjpCbGVuZGluZ1dp
dGhDb21wb3NpdGVkRGVzY2VuZGFudHM7CisgICAgICAgICAgICByZWFzb25zLmFkZChDb21wb3Np
dGluZ1JlYXNvbjo6QmxlbmRpbmdXaXRoQ29tcG9zaXRlZERlc2NlbmRhbnRzKTsKICNlbmRpZgog
ICAgICAgICBicmVhazsKICAgICBjYXNlIFJlbmRlckxheWVyOjpJbmRpcmVjdENvbXBvc2l0aW5n
UmVhc29uOjpQZXJzcGVjdGl2ZToKLSAgICAgICAgcmVhc29ucyB8PSBDb21wb3NpdGluZ1JlYXNv
bjo6UGVyc3BlY3RpdmU7CisgICAgICAgIHJlYXNvbnMuYWRkKENvbXBvc2l0aW5nUmVhc29uOjpQ
ZXJzcGVjdGl2ZSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUmVuZGVyTGF5ZXI6OkluZGly
ZWN0Q29tcG9zaXRpbmdSZWFzb246OlByZXNlcnZlM0Q6Ci0gICAgICAgIHJlYXNvbnMgfD0gQ29t
cG9zaXRpbmdSZWFzb246OlByZXNlcnZlM0Q7CisgICAgICAgIHJlYXNvbnMuYWRkKENvbXBvc2l0
aW5nUmVhc29uOjpQcmVzZXJ2ZTNEKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgaWYg
KGluQ29tcG9zaXRpbmdNb2RlKCkgJiYgcmVuZGVyZXIubGF5ZXIoKS0+aXNSZW5kZXJWaWV3TGF5
ZXIoKSkKLSAgICAgICAgcmVhc29ucyB8PSBDb21wb3NpdGluZ1JlYXNvbjo6Um9vdDsKKyAgICAg
ICAgcmVhc29ucy5hZGQoQ29tcG9zaXRpbmdSZWFzb246OlJvb3QpOwogCiAgICAgcmV0dXJuIHJl
YXNvbnM7CiB9CkBAIC0zNjI1LDEwICszNjI1LDEwIEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3Np
dG9yOjp1cGRhdGVTY3JvbGwKIHsKICAgICBPcHRpb25TZXQ8TGF5ZXJTY3JvbGxDb29yZGluYXRp
b25Sb2xlPiBjb29yZGluYXRpb25Sb2xlczsKICAgICBpZiAoaXNWaWV3cG9ydENvbnN0cmFpbmVk
Rml4ZWRPclN0aWNreUxheWVyKGxheWVyKSkKLSAgICAgICAgY29vcmRpbmF0aW9uUm9sZXMgfD0g
Vmlld3BvcnRDb25zdHJhaW5lZDsKKyAgICAgICAgY29vcmRpbmF0aW9uUm9sZXMuYWRkKFZpZXdw
b3J0Q29uc3RyYWluZWQpOwogCiAgICAgaWYgKHVzZUNvb3JkaW5hdGVkU2Nyb2xsaW5nRm9yTGF5
ZXIobGF5ZXIpKQotICAgICAgICBjb29yZGluYXRpb25Sb2xlcyB8PSBTY3JvbGxpbmc7CisgICAg
ICAgIGNvb3JkaW5hdGlvblJvbGVzLmFkZChTY3JvbGxpbmcpOwogCiAgICAgaWYgKGxheWVyLmlz
Q29tcG9zaXRlZCgpKQogICAgICAgICBsYXllci5iYWNraW5nKCktPnNldElzU2Nyb2xsQ29vcmRp
bmF0ZWRXaXRoVmlld3BvcnRDb25zdHJhaW5lZFJvbGUoY29vcmRpbmF0aW9uUm9sZXMuY29udGFp
bnMoVmlld3BvcnRDb25zdHJhaW5lZCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1RleHREZWNvcmF0aW9uUGFpbnRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1RleHREZWNvcmF0aW9uUGFpbnRlci5jcHAJKHJldmlzaW9uIDIzNTUzOSkKKysr
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBhaW50ZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zODMsMTcgKzM4MywxNyBAQCBzdGF0aWMgdm9pZCBjb2xsZWN0U3R5bGVz
Rm9yUmVuZGVyZXIoVGV4CiAgICAgICAgIGF1dG8gZGVjb3JhdGlvblN0eWxlID0gc3R5bGUudGV4
dERlY29yYXRpb25TdHlsZSgpOwogCiAgICAgICAgIGlmIChkZWNvcmF0aW9ucy5jb250YWlucyhU
ZXh0RGVjb3JhdGlvbjo6VW5kZXJsaW5lKSkgewotICAgICAgICAgICAgcmVtYWluaW5nRGVjb3Jh
dGlvbnMgLT0gVGV4dERlY29yYXRpb246OlVuZGVybGluZTsKKyAgICAgICAgICAgIHJlbWFpbmlu
Z0RlY29yYXRpb25zLnJlbW92ZShUZXh0RGVjb3JhdGlvbjo6VW5kZXJsaW5lKTsKICAgICAgICAg
ICAgIHJlc3VsdC51bmRlcmxpbmVDb2xvciA9IGNvbG9yOwogICAgICAgICAgICAgcmVzdWx0LnVu
ZGVybGluZVN0eWxlID0gZGVjb3JhdGlvblN0eWxlOwogICAgICAgICB9CiAgICAgICAgIGlmIChk
ZWNvcmF0aW9ucy5jb250YWlucyhUZXh0RGVjb3JhdGlvbjo6T3ZlcmxpbmUpKSB7Ci0gICAgICAg
ICAgICByZW1haW5pbmdEZWNvcmF0aW9ucyAtPSBUZXh0RGVjb3JhdGlvbjo6T3ZlcmxpbmU7Cisg
ICAgICAgICAgICByZW1haW5pbmdEZWNvcmF0aW9ucy5yZW1vdmUoVGV4dERlY29yYXRpb246Ok92
ZXJsaW5lKTsKICAgICAgICAgICAgIHJlc3VsdC5vdmVybGluZUNvbG9yID0gY29sb3I7CiAgICAg
ICAgICAgICByZXN1bHQub3ZlcmxpbmVTdHlsZSA9IGRlY29yYXRpb25TdHlsZTsKICAgICAgICAg
fQogICAgICAgICBpZiAoZGVjb3JhdGlvbnMuY29udGFpbnMoVGV4dERlY29yYXRpb246OkxpbmVU
aHJvdWdoKSkgewotICAgICAgICAgICAgcmVtYWluaW5nRGVjb3JhdGlvbnMgLT0gVGV4dERlY29y
YXRpb246OkxpbmVUaHJvdWdoOworICAgICAgICAgICAgcmVtYWluaW5nRGVjb3JhdGlvbnMucmVt
b3ZlKFRleHREZWNvcmF0aW9uOjpMaW5lVGhyb3VnaCk7CiAgICAgICAgICAgICByZXN1bHQubGlu
ZXRocm91Z2hDb2xvciA9IGNvbG9yOwogICAgICAgICAgICAgcmVzdWx0LmxpbmV0aHJvdWdoU3R5
bGUgPSBkZWNvcmF0aW9uU3R5bGU7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9UZXh0UGFpbnRTdHlsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1RleHRQYWludFN0eWxlLmNwcAkocmV2aXNpb24gMjM1NTM5KQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWludFN0eWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTAwLDcgKzEwMCw3IEBAIFRleHRQYWludFN0eWxlIGNvbXB1dGVUZXh0UGFpbnRTdHlsZShjb24K
ICAgICAgICAgaWYgKHBhZ2UgJiYgcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuaXNBY3RpdmUoKSkg
ewogICAgICAgICAgICAgT3B0aW9uU2V0PFN0eWxlQ29sb3I6Ok9wdGlvbnM+IG9wdGlvbnM7CiAg
ICAgICAgICAgICBpZiAocGFnZS0+dXNlU3lzdGVtQXBwZWFyYW5jZSgpKQotICAgICAgICAgICAg
ICAgIG9wdGlvbnMgfD0gU3R5bGVDb2xvcjo6T3B0aW9uczo6VXNlU3lzdGVtQXBwZWFyYW5jZTsK
KyAgICAgICAgICAgICAgICBvcHRpb25zLmFkZChTdHlsZUNvbG9yOjpPcHRpb25zOjpVc2VTeXN0
ZW1BcHBlYXJhbmNlKTsKICAgICAgICAgICAgIHBhaW50U3R5bGUuZmlsbENvbG9yID0gUmVuZGVy
VGhlbWU6OnNpbmdsZXRvbigpLnN5c3RlbUNvbG9yKENTU1ZhbHVlQWN0aXZlYnV0dG9udGV4dCwg
b3B0aW9ucyk7CiAgICAgICAgICAgICByZXR1cm4gcGFpbnRTdHlsZTsKICAgICAgICAgfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCShy
ZXZpc2lvbiAyMzU1MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVy
U3R5bGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MTMsNyArNjEzLDcgQEAgYm9vbCBSZW5kZXJT
dHlsZTo6Y2hhbmdlUmVxdWlyZXNMYXlvdXQoYwogICAgICAgICAgICAgaWYgKG1fcmFyZU5vbklu
aGVyaXRlZERhdGEtPnRyYW5zZm9ybS0+aGFzVHJhbnNmb3JtKCkgIT0gb3RoZXIubV9yYXJlTm9u
SW5oZXJpdGVkRGF0YS0+dHJhbnNmb3JtLT5oYXNUcmFuc2Zvcm0oKSkKICAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIGlmICgqbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+
dHJhbnNmb3JtICE9ICpvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT50cmFuc2Zvcm0pIHsK
LSAgICAgICAgICAgICAgICBjaGFuZ2VkQ29udGV4dFNlbnNpdGl2ZVByb3BlcnRpZXMgfD0gU3R5
bGVEaWZmZXJlbmNlQ29udGV4dFNlbnNpdGl2ZVByb3BlcnR5OjpUcmFuc2Zvcm07CisgICAgICAg
ICAgICAgICAgY2hhbmdlZENvbnRleHRTZW5zaXRpdmVQcm9wZXJ0aWVzLmFkZChTdHlsZURpZmZl
cmVuY2VDb250ZXh0U2Vuc2l0aXZlUHJvcGVydHk6OlRyYW5zZm9ybSk7CiAgICAgICAgICAgICAg
ICAgLy8gRG9uJ3QgcmV0dXJuOyBrZWVwIGxvb2tpbmcgZm9yIGFub3RoZXIgY2hhbmdlCiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KQEAgLTYyOSw3ICs2MjksNyBAQCBib29sIFJlbmRlclN0eWxl
OjpjaGFuZ2VSZXF1aXJlc0xheW91dChjCiAjZW5kaWYKIAogICAgICAgICBpZiAoIWFyZVBvaW50
aW5nVG9FcXVhbERhdGEobV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+d2lsbENoYW5nZSwgb3RoZXIu
bV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+d2lsbENoYW5nZSkpIHsKLSAgICAgICAgICAgIGNoYW5n
ZWRDb250ZXh0U2Vuc2l0aXZlUHJvcGVydGllcyB8PSBTdHlsZURpZmZlcmVuY2VDb250ZXh0U2Vu
c2l0aXZlUHJvcGVydHk6OldpbGxDaGFuZ2U7CisgICAgICAgICAgICBjaGFuZ2VkQ29udGV4dFNl
bnNpdGl2ZVByb3BlcnRpZXMuYWRkKFN0eWxlRGlmZmVyZW5jZUNvbnRleHRTZW5zaXRpdmVQcm9w
ZXJ0eTo6V2lsbENoYW5nZSk7CiAgICAgICAgICAgICAvLyBEb24ndCByZXR1cm47IGtlZXAgbG9v
a2luZyBmb3IgYW5vdGhlciBjaGFuZ2UKICAgICAgICAgfQogICAgIH0KQEAgLTg0OSw3ICs4NDks
NyBAQCBib29sIFJlbmRlclN0eWxlOjpjaGFuZ2VSZXF1aXJlc0xheWVyUmVwCiAKICAgICBpZiAo
cG9zaXRpb24oKSAhPSBQb3NpdGlvblR5cGU6OlN0YXRpYykgewogICAgICAgICBpZiAobV92aXN1
YWxEYXRhLT5jbGlwICE9IG90aGVyLm1fdmlzdWFsRGF0YS0+Y2xpcCB8fCBtX3Zpc3VhbERhdGEt
Pmhhc0NsaXAgIT0gb3RoZXIubV92aXN1YWxEYXRhLT5oYXNDbGlwKSB7Ci0gICAgICAgICAgICBj
aGFuZ2VkQ29udGV4dFNlbnNpdGl2ZVByb3BlcnRpZXMgfD0gU3R5bGVEaWZmZXJlbmNlQ29udGV4
dFNlbnNpdGl2ZVByb3BlcnR5OjpDbGlwUmVjdDsKKyAgICAgICAgICAgIGNoYW5nZWRDb250ZXh0
U2Vuc2l0aXZlUHJvcGVydGllcy5hZGQoU3R5bGVEaWZmZXJlbmNlQ29udGV4dFNlbnNpdGl2ZVBy
b3BlcnR5OjpDbGlwUmVjdCk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQog
ICAgIH0KQEAgLTg2MCwxOCArODYwLDE4IEBAIGJvb2wgUmVuZGVyU3R5bGU6OmNoYW5nZVJlcXVp
cmVzTGF5ZXJSZXAKICNlbmRpZgogCiAgICAgaWYgKG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPm9w
YWNpdHkgIT0gb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+b3BhY2l0eSkgewotICAgICAg
ICBjaGFuZ2VkQ29udGV4dFNlbnNpdGl2ZVByb3BlcnRpZXMgfD0gU3R5bGVEaWZmZXJlbmNlQ29u
dGV4dFNlbnNpdGl2ZVByb3BlcnR5OjpPcGFjaXR5OworICAgICAgICBjaGFuZ2VkQ29udGV4dFNl
bnNpdGl2ZVByb3BlcnRpZXMuYWRkKFN0eWxlRGlmZmVyZW5jZUNvbnRleHRTZW5zaXRpdmVQcm9w
ZXJ0eTo6T3BhY2l0eSk7CiAgICAgICAgIC8vIERvbid0IHJldHVybjsga2VlcCBsb29raW5nIGZv
ciBhbm90aGVyIGNoYW5nZS4KICAgICB9CiAKICAgICBpZiAobV9yYXJlTm9uSW5oZXJpdGVkRGF0
YS0+ZmlsdGVyICE9IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmZpbHRlcikgewotICAg
ICAgICBjaGFuZ2VkQ29udGV4dFNlbnNpdGl2ZVByb3BlcnRpZXMgfD0gU3R5bGVEaWZmZXJlbmNl
Q29udGV4dFNlbnNpdGl2ZVByb3BlcnR5OjpGaWx0ZXI7CisgICAgICAgIGNoYW5nZWRDb250ZXh0
U2Vuc2l0aXZlUHJvcGVydGllcy5hZGQoU3R5bGVEaWZmZXJlbmNlQ29udGV4dFNlbnNpdGl2ZVBy
b3BlcnR5OjpGaWx0ZXIpOwogICAgICAgICAvLyBEb24ndCByZXR1cm47IGtlZXAgbG9va2luZyBm
b3IgYW5vdGhlciBjaGFuZ2UuCiAgICAgfQogCiAjaWYgRU5BQkxFKEZJTFRFUlNfTEVWRUxfMikK
ICAgICBpZiAobV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+YmFja2Ryb3BGaWx0ZXIgIT0gb3RoZXIu
bV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+YmFja2Ryb3BGaWx0ZXIpIHsKLSAgICAgICAgY2hhbmdl
ZENvbnRleHRTZW5zaXRpdmVQcm9wZXJ0aWVzIHw9IFN0eWxlRGlmZmVyZW5jZUNvbnRleHRTZW5z
aXRpdmVQcm9wZXJ0eTo6RmlsdGVyOworICAgICAgICBjaGFuZ2VkQ29udGV4dFNlbnNpdGl2ZVBy
b3BlcnRpZXMuYWRkKFN0eWxlRGlmZmVyZW5jZUNvbnRleHRTZW5zaXRpdmVQcm9wZXJ0eTo6Rmls
dGVyKTsKICAgICAgICAgLy8gRG9uJ3QgcmV0dXJuOyBrZWVwIGxvb2tpbmcgZm9yIGFub3RoZXIg
Y2hhbmdlLgogICAgIH0KICNlbmRpZgpAQCAtOTIxLDcgKzkyMSw3IEBAIGJvb2wgUmVuZGVyU3R5
bGU6OmNoYW5nZVJlcXVpcmVzUmVwYWludCgKIAogICAgIC8vIEZJWE1FOiB0aGlzIHNob3VsZCBw
cm9iYWJseSBiZSBtb3ZlZCB0byBjaGFuZ2VSZXF1aXJlc0xheWVyUmVwYWludCgpLgogICAgIGlm
IChtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5jbGlwUGF0aCAhPSBvdGhlci5tX3JhcmVOb25Jbmhl
cml0ZWREYXRhLT5jbGlwUGF0aCkgewotICAgICAgICBjaGFuZ2VkQ29udGV4dFNlbnNpdGl2ZVBy
b3BlcnRpZXMgfD0gU3R5bGVEaWZmZXJlbmNlQ29udGV4dFNlbnNpdGl2ZVByb3BlcnR5OjpDbGlw
UGF0aDsKKyAgICAgICAgY2hhbmdlZENvbnRleHRTZW5zaXRpdmVQcm9wZXJ0aWVzLmFkZChTdHls
ZURpZmZlcmVuY2VDb250ZXh0U2Vuc2l0aXZlUHJvcGVydHk6OkNsaXBQYXRoKTsKICAgICAgICAg
Ly8gRG9uJ3QgcmV0dXJuOyBrZWVwIGxvb2tpbmcgZm9yIGFub3RoZXIgY2hhbmdlLgogICAgIH0K
IApJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAkocmV2aXNpb24gMjM1NTM5
KQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yMjQyLDcgKzIyNDIsNyBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8RmluZE9wdGlvbnM+IHBh
cnNlRmluCiAgICAgICAgIGJvb2wgZm91bmQgPSBmYWxzZTsKICAgICAgICAgZm9yIChhdXRvJiBm
bGFnIDogZmxhZ0xpc3QpIHsKICAgICAgICAgICAgIGlmIChmbGFnLm5hbWUgPT0gb3B0aW9uKSB7
Ci0gICAgICAgICAgICAgICAgcmVzdWx0IHw9IGZsYWcudmFsdWU7CisgICAgICAgICAgICAgICAg
cmVzdWx0LmFkZChmbGFnLnZhbHVlKTsKICAgICAgICAgICAgICAgICBmb3VuZCA9IHRydWU7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkBAIC0zMTg5LDcgKzMxODksNyBA
QCB2b2lkIEludGVybmFsczo6Zm9yY2VSZWxvYWQoYm9vbCBlbmRUb0VuCiB7CiAgICAgT3B0aW9u
U2V0PFJlbG9hZE9wdGlvbj4gcmVsb2FkT3B0aW9uczsKICAgICBpZiAoZW5kVG9FbmQpCi0gICAg
ICAgIHJlbG9hZE9wdGlvbnMgfD0gUmVsb2FkT3B0aW9uOjpGcm9tT3JpZ2luOworICAgICAgICBy
ZWxvYWRPcHRpb25zLmFkZChSZWxvYWRPcHRpb246OkZyb21PcmlnaW4pOwogCiAgICAgZnJhbWUo
KS0+bG9hZGVyKCkucmVsb2FkKHJlbG9hZE9wdGlvbnMpOwogfQpAQCAtNDM0Miw5ICs0MzQyLDkg
QEAgdm9pZCBJbnRlcm5hbHM6OnNldFBhZ2VWaXNpYmlsaXR5KGJvb2wgaQogICAgIGF1dG8gc3Rh
dGUgPSBwYWdlLmFjdGl2aXR5U3RhdGUoKTsKIAogICAgIGlmICghaXNWaXNpYmxlKQotICAgICAg
ICBzdGF0ZSAtPSBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGU7CisgICAgICAgIHN0YXRlLnJlbW92
ZShBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUpOwogICAgIGVsc2UKLSAgICAgICAgc3RhdGUgfD0g
QWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlOworICAgICAgICBzdGF0ZS5hZGQoQWN0aXZpdHlTdGF0
ZTo6SXNWaXNpYmxlKTsKIAogICAgIHBhZ2Uuc2V0QWN0aXZpdHlTdGF0ZShzdGF0ZSk7CiB9CkBA
IC00MzU4LDkgKzQzNTgsOSBAQCB2b2lkIEludGVybmFsczo6c2V0UGFnZUlzRm9jdXNlZEFuZEFj
dGl2CiAgICAgYXV0byBzdGF0ZSA9IHBhZ2UuYWN0aXZpdHlTdGF0ZSgpOwogCiAgICAgaWYgKCFp
c0ZvY3VzZWRBbmRBY3RpdmUpCi0gICAgICAgIHN0YXRlIC09IHsgQWN0aXZpdHlTdGF0ZTo6SXNG
b2N1c2VkLCBBY3Rpdml0eVN0YXRlOjpXaW5kb3dJc0FjdGl2ZSB9OworICAgICAgICBzdGF0ZS5y
ZW1vdmUoeyBBY3Rpdml0eVN0YXRlOjpJc0ZvY3VzZWQsIEFjdGl2aXR5U3RhdGU6OldpbmRvd0lz
QWN0aXZlIH0pOwogICAgIGVsc2UKLSAgICAgICAgc3RhdGUgfD0geyBBY3Rpdml0eVN0YXRlOjpJ
c0ZvY3VzZWQsIEFjdGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZlIH07CisgICAgICAgIHN0YXRl
LmFkZCh7IEFjdGl2aXR5U3RhdGU6OklzRm9jdXNlZCwgQWN0aXZpdHlTdGF0ZTo6V2luZG93SXNB
Y3RpdmUgfSk7CiAKICAgICBwYWdlLnNldEFjdGl2aXR5U3RhdGUoc3RhdGUpOwogfQpJbmRleDog
U291cmNlL1dlYkRyaXZlci9TZXNzaW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViRHJp
dmVyL1Nlc3Npb24uY3BwCShyZXZpc2lvbiAyMzU1MzkpCisrKyBTb3VyY2UvV2ViRHJpdmVyL1Nl
c3Npb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTE0LDggKzE1MTQsNyBAQCB2b2lkIFNlc3Np
b246OmVsZW1lbnRDbGljayhjb25zdCBTdHJpbmcmCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBPcHRpb25TZXQ8RWxlbWVudExheW91dE9wdGlvbj4gb3B0aW9ucyA9IEVsZW1lbnRMYXlv
dXRPcHRpb246OlNjcm9sbEludG9WaWV3SWZOZWVkZWQ7Ci0gICAgb3B0aW9ucyB8PSBFbGVtZW50
TGF5b3V0T3B0aW9uOjpVc2VWaWV3cG9ydENvb3JkaW5hdGVzOworICAgIE9wdGlvblNldDxFbGVt
ZW50TGF5b3V0T3B0aW9uPiBvcHRpb25zID0geyBFbGVtZW50TGF5b3V0T3B0aW9uOjpTY3JvbGxJ
bnRvVmlld0lmTmVlZGVkLCBFbGVtZW50TGF5b3V0T3B0aW9uOjpVc2VWaWV3cG9ydENvb3JkaW5h
dGVzIH07CiAgICAgY29tcHV0ZUVsZW1lbnRMYXlvdXQoZWxlbWVudElELCBvcHRpb25zLCBbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBlbGVtZW50SUQsIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKHN0ZDo6b3B0aW9uYWw8UmVjdD4m
JiByZWN0LCBzdGQ6Om9wdGlvbmFsPFBvaW50PiYmIGluVmlld0NlbnRlciwgYm9vbCBpc09ic2N1
cmVkLCBSZWZQdHI8SlNPTjo6T2JqZWN0PiYmIGVycm9yKSBtdXRhYmxlIHsKICAgICAgICAgaWYg
KCFyZWN0IHx8IGVycm9yKSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihDb21tYW5k
UmVzdWx0OjpmYWlsKFdURk1vdmUoZXJyb3IpKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjM1
NTM5KQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSw1OCBAQAorMjAxOC0wOC0zMSAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CisK
KyAgICAgICAgUmVwbGFjZSBPcHRpb25TZXQgfD0gYW5kIC09IG9wZXJhdG9ycyB3aXRoIGFkZCgp
IGFuZCByZW1vdmUoKSBmdW5jdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE4OTE2OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2Nv
YS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6
ZU5ldHdvcmtQcm9jZXNzQ29jb2EpOgorICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRyZWUv
UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24uaDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5
ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyUHJvcGVydGllczo6bm90ZVByb3BlcnRpZXNDaGFuZ2Vk
KToKKyAgICAgICAgKiBTaGFyZWQvV2ViRXZlbnRDb252ZXJzaW9uLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViS2l0MlBsYXRmb3JtTW91c2VFdmVudDo6V2ViS2l0MlBsYXRmb3JtTW91c2VFdmVu
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYktpdDJQbGF0Zm9ybVdoZWVsRXZlbnQ6OldlYktpdDJQ
bGF0Zm9ybVdoZWVsRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJLaXQyUGxhdGZvcm1LZXli
b2FyZEV2ZW50OjpXZWJLaXQyUGxhdGZvcm1LZXlib2FyZEV2ZW50KToKKyAgICAgICAgKFdlYktp
dDo6V2ViS2l0MlBsYXRmb3JtVG91Y2hFdmVudDo6V2ViS2l0MlBsYXRmb3JtVG91Y2hFdmVudCk6
CisgICAgICAgIChXZWJLaXQ6OldlYktpdDJQbGF0Zm9ybUdlc3R1cmVFdmVudDo6V2ViS2l0MlBs
YXRmb3JtR2VzdHVyZUV2ZW50KToKKyAgICAgICAgKiBTaGFyZWQvV2Vic2l0ZVBvbGljaWVzRGF0
YS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVQb2xpY2llc0RhdGE6OmFwcGx5VG9Eb2N1
bWVudExvYWRlcik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHA6CisgICAg
ICAgIChXS1BhZ2VSZWxvYWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1Jlc291cmNl
Q2FjaGVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKHRvV2Vic2l0ZURhdGFUeXBlcyk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZVBvbGljaWVzLmNwcDoKKyAgICAgICAgKFdLV2Vi
c2l0ZVBvbGljaWVzU2V0QWxsb3dlZEF1dG9wbGF5UXVpcmtzKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IHJlbG9hZF0p
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZEludGVy
bmFsLmg6CisgICAgICAgIChXZWJLaXQ6OnRvV2Vic2l0ZURhdGFUeXBlcyk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW06CisgICAgICAgICgtW1dL
V2Vic2l0ZURhdGFTdG9yZSBfZmV0Y2hEYXRhUmVjb3Jkc09mVHlwZXM6d2l0aE9wdGlvbnM6Y29t
cGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJz
aXRlUG9saWNpZXMubW06CisgICAgICAgICgtW19XS1dlYnNpdGVQb2xpY2llcyBzZXRBbGxvd2Vk
QXV0b3BsYXlRdWlya3M6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBs
Lm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6dmlld0RpZE1vdmVUb1dpbmRvdyk6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6dXBkYXRlQWN0aXZpdHlTdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6YWN0aXZpdHlTdGF0ZURpZENoYW5nZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6ZGlzcGF0Y2hBY3Rpdml0eVN0YXRlQ2hhbmdlKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFSZWNvcmQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJzaXRlRGF0YVJlY29yZDo6YWRkKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFS
ZWNvcmQ6OmFkZENvb2tpZUhvc3ROYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFS
ZWNvcmQ6OmFkZFBsdWdpbkRhdGFIb3N0TmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVE
YXRhUmVjb3JkOjphZGRIU1RTQ2FjaGVIb3N0bmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNp
dGVEYXRhUmVjb3JkOjphZGRPcmlnaW5XaXRoQ3JlZGVudGlhbCk6CisgICAgICAgICogVUlQcm9j
ZXNzL21hYy9XS0luc3BlY3RvclZpZXdDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtXS0luc3Bl
Y3RvclZpZXdDb250cm9sbGVyIGluc3BlY3RvcldLV2ViVmlld1JlbG9hZDpdKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUu
Y3BwOgorICAgICAgICAoV2ViS2l0OjppbWFnZUZvclJlY3QpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlOjpyZW5kZXJlZEltYWdlKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAoV2ViS2l0Ojpjb3JlKToKKyAgICAgICAgKFdlYktpdDo6RmluZENvbnRyb2xsZXI6OmZpbmRT
dHJpbmcpOgorCiAyMDE4LTA4LTMxICBGcmVkZXJpYyBXYW5nICA8ZndhbmdAaWdhbGlhLmNvbT4K
IAogICAgICAgICBCdWcgMTgyMDUzIC0gW0NTU09NIFZpZXddIEltcGxlbWVudCBzdGFuZGFyZCBi
ZWhhdmlvciBmb3Igc2Nyb2xsaW5nRWxlbWVudApJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5tbQkocmV2
aXNpb24gMjM1NTM5KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3
b3JrUHJvY2Vzc0NvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMTQsMTIgKzExNCwxMiBAQCB2
b2lkIE5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVOCiAgICAgU2FuZGJveEV4dGVu
c2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KHBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5RXh0
ZW5zaW9uSGFuZGxlKTsKICAgICBPcHRpb25TZXQ8TmV0d29ya0NhY2hlOjpDYWNoZTo6T3B0aW9u
PiBjYWNoZU9wdGlvbnMgeyBOZXR3b3JrQ2FjaGU6OkNhY2hlOjpPcHRpb246OlJlZ2lzdGVyTm90
aWZ5IH07CiAgICAgaWYgKHBhcmFtZXRlcnMuc2hvdWxkRW5hYmxlTmV0d29ya0NhY2hlRWZmaWNh
Y3lMb2dnaW5nKQotICAgICAgICBjYWNoZU9wdGlvbnMgfD0gTmV0d29ya0NhY2hlOjpDYWNoZTo6
T3B0aW9uOjpFZmZpY2FjeUxvZ2dpbmc7CisgICAgICAgIGNhY2hlT3B0aW9ucy5hZGQoTmV0d29y
a0NhY2hlOjpDYWNoZTo6T3B0aW9uOjpFZmZpY2FjeUxvZ2dpbmcpOwogICAgIGlmIChwYXJhbWV0
ZXJzLnNob3VsZFVzZVRlc3RpbmdOZXR3b3JrU2Vzc2lvbikKLSAgICAgICAgY2FjaGVPcHRpb25z
IHw9IE5ldHdvcmtDYWNoZTo6Q2FjaGU6Ok9wdGlvbjo6VGVzdGluZ01vZGU7CisgICAgICAgIGNh
Y2hlT3B0aW9ucy5hZGQoTmV0d29ya0NhY2hlOjpDYWNoZTo6T3B0aW9uOjpUZXN0aW5nTW9kZSk7
CiAjaWYgRU5BQkxFKE5FVFdPUktfQ0FDSEVfU1BFQ1VMQVRJVkVfUkVWQUxJREFUSU9OKQogICAg
IGlmIChwYXJhbWV0ZXJzLnNob3VsZEVuYWJsZU5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlUmV2YWxp
ZGF0aW9uKQotICAgICAgICBjYWNoZU9wdGlvbnMgfD0gTmV0d29ya0NhY2hlOjpDYWNoZTo6T3B0
aW9uOjpTcGVjdWxhdGl2ZVJldmFsaWRhdGlvbjsKKyAgICAgICAgY2FjaGVPcHRpb25zLmFkZChO
ZXR3b3JrQ2FjaGU6OkNhY2hlOjpPcHRpb246OlNwZWN1bGF0aXZlUmV2YWxpZGF0aW9uKTsKICNl
bmRpZgogCiAgICAgbV9jYWNoZSA9IE5ldHdvcmtDYWNoZTo6Q2FjaGU6Om9wZW4obV9kaXNrQ2Fj
aGVEaXJlY3RvcnksIGNhY2hlT3B0aW9ucyk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcAkocmV2aXNp
b24gMjM1NTM5KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQ
cm9jZXNzU291cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMywxMCArMTEzLDEwIEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZU4KIAogICAgIE9wdGlvblNldDxOZXR3
b3JrQ2FjaGU6OkNhY2hlOjpPcHRpb24+IGNhY2hlT3B0aW9ucyB7IE5ldHdvcmtDYWNoZTo6Q2Fj
aGU6Ok9wdGlvbjo6UmVnaXN0ZXJOb3RpZnkgfTsKICAgICBpZiAocGFyYW1ldGVycy5zaG91bGRF
bmFibGVOZXR3b3JrQ2FjaGVFZmZpY2FjeUxvZ2dpbmcpCi0gICAgICAgIGNhY2hlT3B0aW9ucyB8
PSBOZXR3b3JrQ2FjaGU6OkNhY2hlOjpPcHRpb246OkVmZmljYWN5TG9nZ2luZzsKKyAgICAgICAg
Y2FjaGVPcHRpb25zLmFkZChOZXR3b3JrQ2FjaGU6OkNhY2hlOjpPcHRpb246OkVmZmljYWN5TG9n
Z2luZyk7CiAjaWYgRU5BQkxFKE5FVFdPUktfQ0FDSEVfU1BFQ1VMQVRJVkVfUkVWQUxJREFUSU9O
KQogICAgIGlmIChwYXJhbWV0ZXJzLnNob3VsZEVuYWJsZU5ldHdvcmtDYWNoZVNwZWN1bGF0aXZl
UmV2YWxpZGF0aW9uKQotICAgICAgICBjYWNoZU9wdGlvbnMgfD0gTmV0d29ya0NhY2hlOjpDYWNo
ZTo6T3B0aW9uOjpTcGVjdWxhdGl2ZVJldmFsaWRhdGlvbjsKKyAgICAgICAgY2FjaGVPcHRpb25z
LmFkZChOZXR3b3JrQ2FjaGU6OkNhY2hlOjpPcHRpb246OlNwZWN1bGF0aXZlUmV2YWxpZGF0aW9u
KTsKICNlbmRpZgogCiAgICAgbV9jYWNoZSA9IE5ldHdvcmtDYWNoZTo6Q2FjaGU6Om9wZW4obV9k
aXNrQ2FjaGVEaXJlY3RvcnksIGNhY2hlT3B0aW9ucyk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJFdmVudENvbnZlcnNpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkV2ZW50Q29udmVyc2lvbi5jcHAJKHJldmlzaW9uIDIzNTUzOSkKKysrIFNvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkV2ZW50Q29udmVyc2lvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTY5LDE1ICs2OSwxNSBAQCBwdWJsaWM6CiAgICAgICAgIH0KIAogICAgICAgICBpZiAod2ViRXZl
bnQuc2hpZnRLZXkoKSkKLSAgICAgICAgICAgIG1fbW9kaWZpZXJzIHw9IE1vZGlmaWVyOjpTaGlm
dEtleTsKKyAgICAgICAgICAgIG1fbW9kaWZpZXJzLmFkZChNb2RpZmllcjo6U2hpZnRLZXkpOwog
ICAgICAgICBpZiAod2ViRXZlbnQuY29udHJvbEtleSgpKQotICAgICAgICAgICAgbV9tb2RpZmll
cnMgfD0gTW9kaWZpZXI6OkN0cmxLZXk7CisgICAgICAgICAgICBtX21vZGlmaWVycy5hZGQoTW9k
aWZpZXI6OkN0cmxLZXkpOwogICAgICAgICBpZiAod2ViRXZlbnQuYWx0S2V5KCkpCi0gICAgICAg
ICAgICBtX21vZGlmaWVycyB8PSBNb2RpZmllcjo6QWx0S2V5OworICAgICAgICAgICAgbV9tb2Rp
ZmllcnMuYWRkKE1vZGlmaWVyOjpBbHRLZXkpOwogICAgICAgICBpZiAod2ViRXZlbnQubWV0YUtl
eSgpKQotICAgICAgICAgICAgbV9tb2RpZmllcnMgfD0gTW9kaWZpZXI6Ok1ldGFLZXk7CisgICAg
ICAgICAgICBtX21vZGlmaWVycy5hZGQoTW9kaWZpZXI6Ok1ldGFLZXkpOwogICAgICAgICBpZiAo
d2ViRXZlbnQuY2Fwc0xvY2tLZXkoKSkKLSAgICAgICAgICAgIG1fbW9kaWZpZXJzIHw9IE1vZGlm
aWVyOjpDYXBzTG9ja0tleTsKKyAgICAgICAgICAgIG1fbW9kaWZpZXJzLmFkZChNb2RpZmllcjo6
Q2Fwc0xvY2tLZXkpOwogCiAgICAgICAgIG1fdGltZXN0YW1wID0gd2ViRXZlbnQudGltZXN0YW1w
KCk7CiAKQEAgLTEzNiwxNSArMTM2LDE1IEBAIHB1YmxpYzoKICAgICAgICAgbV90eXBlID0gUGxh
dGZvcm1FdmVudDo6V2hlZWw7CiAKICAgICAgICAgaWYgKHdlYkV2ZW50LnNoaWZ0S2V5KCkpCi0g
ICAgICAgICAgICBtX21vZGlmaWVycyB8PSBNb2RpZmllcjo6U2hpZnRLZXk7CisgICAgICAgICAg
ICBtX21vZGlmaWVycy5hZGQoTW9kaWZpZXI6OlNoaWZ0S2V5KTsKICAgICAgICAgaWYgKHdlYkV2
ZW50LmNvbnRyb2xLZXkoKSkKLSAgICAgICAgICAgIG1fbW9kaWZpZXJzIHw9IE1vZGlmaWVyOjpD
dHJsS2V5OworICAgICAgICAgICAgbV9tb2RpZmllcnMuYWRkKE1vZGlmaWVyOjpDdHJsS2V5KTsK
ICAgICAgICAgaWYgKHdlYkV2ZW50LmFsdEtleSgpKQotICAgICAgICAgICAgbV9tb2RpZmllcnMg
fD0gTW9kaWZpZXI6OkFsdEtleTsKKyAgICAgICAgICAgIG1fbW9kaWZpZXJzLmFkZChNb2RpZmll
cjo6QWx0S2V5KTsKICAgICAgICAgaWYgKHdlYkV2ZW50Lm1ldGFLZXkoKSkKLSAgICAgICAgICAg
IG1fbW9kaWZpZXJzIHw9IE1vZGlmaWVyOjpNZXRhS2V5OworICAgICAgICAgICAgbV9tb2RpZmll
cnMuYWRkKE1vZGlmaWVyOjpNZXRhS2V5KTsKICAgICAgICAgaWYgKHdlYkV2ZW50LmNhcHNMb2Nr
S2V5KCkpCi0gICAgICAgICAgICBtX21vZGlmaWVycyB8PSBNb2RpZmllcjo6Q2Fwc0xvY2tLZXk7
CisgICAgICAgICAgICBtX21vZGlmaWVycy5hZGQoTW9kaWZpZXI6OkNhcHNMb2NrS2V5KTsKIAog
ICAgICAgICBtX3RpbWVzdGFtcCA9IHdlYkV2ZW50LnRpbWVzdGFtcCgpOwogCkBAIC0xOTgsMTUg
KzE5OCwxNSBAQCBwdWJsaWM6CiAgICAgICAgIH0KIAogICAgICAgICBpZiAod2ViRXZlbnQuc2hp
ZnRLZXkoKSkKLSAgICAgICAgICAgIG1fbW9kaWZpZXJzIHw9IE1vZGlmaWVyOjpTaGlmdEtleTsK
KyAgICAgICAgICAgIG1fbW9kaWZpZXJzLmFkZChNb2RpZmllcjo6U2hpZnRLZXkpOwogICAgICAg
ICBpZiAod2ViRXZlbnQuY29udHJvbEtleSgpKQotICAgICAgICAgICAgbV9tb2RpZmllcnMgfD0g
TW9kaWZpZXI6OkN0cmxLZXk7CisgICAgICAgICAgICBtX21vZGlmaWVycy5hZGQoTW9kaWZpZXI6
OkN0cmxLZXkpOwogICAgICAgICBpZiAod2ViRXZlbnQuYWx0S2V5KCkpCi0gICAgICAgICAgICBt
X21vZGlmaWVycyB8PSBNb2RpZmllcjo6QWx0S2V5OworICAgICAgICAgICAgbV9tb2RpZmllcnMu
YWRkKE1vZGlmaWVyOjpBbHRLZXkpOwogICAgICAgICBpZiAod2ViRXZlbnQubWV0YUtleSgpKQot
ICAgICAgICAgICAgbV9tb2RpZmllcnMgfD0gTW9kaWZpZXI6Ok1ldGFLZXk7CisgICAgICAgICAg
ICBtX21vZGlmaWVycy5hZGQoTW9kaWZpZXI6Ok1ldGFLZXkpOwogICAgICAgICBpZiAod2ViRXZl
bnQuY2Fwc0xvY2tLZXkoKSkKLSAgICAgICAgICAgIG1fbW9kaWZpZXJzIHw9IE1vZGlmaWVyOjpD
YXBzTG9ja0tleTsKKyAgICAgICAgICAgIG1fbW9kaWZpZXJzLmFkZChNb2RpZmllcjo6Q2Fwc0xv
Y2tLZXkpOwogCiAgICAgICAgIG1fdGltZXN0YW1wID0gd2ViRXZlbnQudGltZXN0YW1wKCk7CiAK
QEAgLTMzOSwxNSArMzM5LDE1IEBAIHB1YmxpYzoKICAgICAgICAgfQogCiAgICAgICAgIGlmICh3
ZWJFdmVudC5zaGlmdEtleSgpKQotICAgICAgICAgICAgbV9tb2RpZmllcnMgfD0gTW9kaWZpZXI6
OlNoaWZ0S2V5OworICAgICAgICAgICAgbV9tb2RpZmllcnMuYWRkKE1vZGlmaWVyOjpTaGlmdEtl
eSk7CiAgICAgICAgIGlmICh3ZWJFdmVudC5jb250cm9sS2V5KCkpCi0gICAgICAgICAgICBtX21v
ZGlmaWVycyB8PSBNb2RpZmllcjo6Q3RybEtleTsKKyAgICAgICAgICAgIG1fbW9kaWZpZXJzLmFk
ZChNb2RpZmllcjo6Q3RybEtleSk7CiAgICAgICAgIGlmICh3ZWJFdmVudC5hbHRLZXkoKSkKLSAg
ICAgICAgICAgIG1fbW9kaWZpZXJzIHw9IE1vZGlmaWVyOjpBbHRLZXk7CisgICAgICAgICAgICBt
X21vZGlmaWVycy5hZGQoTW9kaWZpZXI6OkFsdEtleSk7CiAgICAgICAgIGlmICh3ZWJFdmVudC5t
ZXRhS2V5KCkpCi0gICAgICAgICAgICBtX21vZGlmaWVycyB8PSBNb2RpZmllcjo6TWV0YUtleTsK
KyAgICAgICAgICAgIG1fbW9kaWZpZXJzLmFkZChNb2RpZmllcjo6TWV0YUtleSk7CiAgICAgICAg
IGlmICh3ZWJFdmVudC5jYXBzTG9ja0tleSgpKQotICAgICAgICAgICAgbV9tb2RpZmllcnMgfD0g
TW9kaWZpZXI6OkNhcHNMb2NrS2V5OworICAgICAgICAgICAgbV9tb2RpZmllcnMuYWRkKE1vZGlm
aWVyOjpDYXBzTG9ja0tleSk7CiAKICAgICAgICAgbV90aW1lc3RhbXAgPSB3ZWJFdmVudC50aW1l
c3RhbXAoKTsKIApAQCAtMzk4LDE1ICszOTgsMTUgQEAgcHVibGljOgogICAgICAgICB9CiAKICAg
ICAgICAgaWYgKHdlYkV2ZW50LnNoaWZ0S2V5KCkpCi0gICAgICAgICAgICBtX21vZGlmaWVycyB8
PSBNb2RpZmllcjo6U2hpZnRLZXk7CisgICAgICAgICAgICBtX21vZGlmaWVycy5hZGQoTW9kaWZp
ZXI6OlNoaWZ0S2V5KTsKICAgICAgICAgaWYgKHdlYkV2ZW50LmNvbnRyb2xLZXkoKSkKLSAgICAg
ICAgICAgIG1fbW9kaWZpZXJzIHw9IE1vZGlmaWVyOjpDdHJsS2V5OworICAgICAgICAgICAgbV9t
b2RpZmllcnMuYWRkKE1vZGlmaWVyOjpDdHJsS2V5KTsKICAgICAgICAgaWYgKHdlYkV2ZW50LmFs
dEtleSgpKQotICAgICAgICAgICAgbV9tb2RpZmllcnMgfD0gTW9kaWZpZXI6OkFsdEtleTsKKyAg
ICAgICAgICAgIG1fbW9kaWZpZXJzLmFkZChNb2RpZmllcjo6QWx0S2V5KTsKICAgICAgICAgaWYg
KHdlYkV2ZW50Lm1ldGFLZXkoKSkKLSAgICAgICAgICAgIG1fbW9kaWZpZXJzIHw9IE1vZGlmaWVy
OjpNZXRhS2V5OworICAgICAgICAgICAgbV9tb2RpZmllcnMuYWRkKE1vZGlmaWVyOjpNZXRhS2V5
KTsKICAgICAgICAgaWYgKHdlYkV2ZW50LmNhcHNMb2NrS2V5KCkpCi0gICAgICAgICAgICBtX21v
ZGlmaWVycyB8PSBNb2RpZmllcjo6Q2Fwc0xvY2tLZXk7CisgICAgICAgICAgICBtX21vZGlmaWVy
cy5hZGQoTW9kaWZpZXI6OkNhcHNMb2NrS2V5KTsKIAogICAgICAgICBtX3RpbWVzdGFtcCA9IHdl
YkV2ZW50LnRpbWVzdGFtcCgpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRl
UG9saWNpZXNEYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJz
aXRlUG9saWNpZXNEYXRhLmNwcAkocmV2aXNpb24gMjM1NTM5KQorKysgU291cmNlL1dlYktpdC9T
aGFyZWQvV2Vic2l0ZVBvbGljaWVzRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk4LDEzICs5
OCwxMyBAQCB2b2lkIFdlYnNpdGVQb2xpY2llc0RhdGE6OmFwcGx5VG9Eb2N1bWVuCiAgICAgY29u
c3QgYXV0byYgYWxsb3dlZFF1aXJrcyA9IHdlYnNpdGVQb2xpY2llcy5hbGxvd2VkQXV0b3BsYXlR
dWlya3M7CiAgICAgCiAgICAgaWYgKGFsbG93ZWRRdWlya3MuY29udGFpbnMoV2Vic2l0ZUF1dG9w
bGF5UXVpcms6OkluaGVyaXRlZFVzZXJHZXN0dXJlcykpCi0gICAgICAgIHF1aXJrcyB8PSBXZWJD
b3JlOjpBdXRvcGxheVF1aXJrOjpJbmhlcml0ZWRVc2VyR2VzdHVyZXM7CisgICAgICAgIHF1aXJr
cy5hZGQoV2ViQ29yZTo6QXV0b3BsYXlRdWlyazo6SW5oZXJpdGVkVXNlckdlc3R1cmVzKTsKICAg
ICAKICAgICBpZiAoYWxsb3dlZFF1aXJrcy5jb250YWlucyhXZWJzaXRlQXV0b3BsYXlRdWlyazo6
U3ludGhlc2l6ZWRQYXVzZUV2ZW50cykpCi0gICAgICAgIHF1aXJrcyB8PSBXZWJDb3JlOjpBdXRv
cGxheVF1aXJrOjpTeW50aGVzaXplZFBhdXNlRXZlbnRzOworICAgICAgICBxdWlya3MuYWRkKFdl
YkNvcmU6OkF1dG9wbGF5UXVpcms6OlN5bnRoZXNpemVkUGF1c2VFdmVudHMpOwogICAgIAogICAg
IGlmIChhbGxvd2VkUXVpcmtzLmNvbnRhaW5zKFdlYnNpdGVBdXRvcGxheVF1aXJrOjpBcmJpdHJh
cnlVc2VyR2VzdHVyZXMpKQotICAgICAgICBxdWlya3MgfD0gV2ViQ29yZTo6QXV0b3BsYXlRdWly
azo6QXJiaXRyYXJ5VXNlckdlc3R1cmVzOworICAgICAgICBxdWlya3MuYWRkKFdlYkNvcmU6OkF1
dG9wbGF5UXVpcms6OkFyYml0cmFyeVVzZXJHZXN0dXJlcyk7CiAKICAgICBkb2N1bWVudExvYWRl
ci5zZXRBbGxvd2VkQXV0b3BsYXlRdWlya3MocXVpcmtzKTsKIApJbmRleDogU291cmNlL1dlYktp
dC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxh
eWVyVHJlZVRyYW5zYWN0aW9uLmgJKHJldmlzaW9uIDIzNTUzOSkKKysrIFNvdXJjZS9XZWJLaXQv
U2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMTYsNyArMTE2LDcgQEAgcHVibGljOgogCiAgICAgICAgIHZvaWQgbm90
ZVByb3BlcnRpZXNDaGFuZ2VkKE9wdGlvblNldDxMYXllckNoYW5nZT4gY2hhbmdlRmxhZ3MpCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIGNoYW5nZWRQcm9wZXJ0aWVzIHw9IGNoYW5nZUZsYWdzOwor
ICAgICAgICAgICAgY2hhbmdlZFByb3BlcnRpZXMuYWRkKGNoYW5nZUZsYWdzKTsKICAgICAgICAg
fQogCiAgICAgICAgIHZvaWQgcmVzZXRDaGFuZ2VkUHJvcGVydGllcygpCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDIzNTUzOSkKKysrIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE0NDYsMzIgKzE0NDYsMzIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFN1cHByZXNzVmlzaWJp
bGl0eQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlQWN0aXZpdHlTdGF0ZShPcHRpb25TZXQ8
QWN0aXZpdHlTdGF0ZTo6RmxhZz4gZmxhZ3NUb1VwZGF0ZSkKIHsKLSAgICBtX2FjdGl2aXR5U3Rh
dGUgPSBtX2FjdGl2aXR5U3RhdGUgLSBmbGFnc1RvVXBkYXRlOworICAgIG1fYWN0aXZpdHlTdGF0
ZS5yZW1vdmUoZmxhZ3NUb1VwZGF0ZSk7CiAgICAgaWYgKGZsYWdzVG9VcGRhdGUgJiBBY3Rpdml0
eVN0YXRlOjpJc0ZvY3VzZWQgJiYgbV9wYWdlQ2xpZW50LmlzVmlld0ZvY3VzZWQoKSkKLSAgICAg
ICAgbV9hY3Rpdml0eVN0YXRlIHw9IEFjdGl2aXR5U3RhdGU6OklzRm9jdXNlZDsKKyAgICAgICAg
bV9hY3Rpdml0eVN0YXRlLmFkZChBY3Rpdml0eVN0YXRlOjpJc0ZvY3VzZWQpOwogICAgIGlmIChm
bGFnc1RvVXBkYXRlICYgQWN0aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmUgJiYgbV9wYWdlQ2xp
ZW50LmlzVmlld1dpbmRvd0FjdGl2ZSgpKQotICAgICAgICBtX2FjdGl2aXR5U3RhdGUgfD0gQWN0
aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmU7CisgICAgICAgIG1fYWN0aXZpdHlTdGF0ZS5hZGQo
QWN0aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmUpOwogICAgIGlmIChmbGFnc1RvVXBkYXRlICYg
QWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlICYmIG1fcGFnZUNsaWVudC5pc1ZpZXdWaXNpYmxlKCkp
Ci0gICAgICAgIG1fYWN0aXZpdHlTdGF0ZSB8PSBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGU7Cisg
ICAgICAgIG1fYWN0aXZpdHlTdGF0ZS5hZGQoQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKTsKICAg
ICBpZiAoZmxhZ3NUb1VwZGF0ZSAmIEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZU9yT2NjbHVkZWQg
JiYgbV9wYWdlQ2xpZW50LmlzVmlld1Zpc2libGVPck9jY2x1ZGVkKCkpCi0gICAgICAgIG1fYWN0
aXZpdHlTdGF0ZSB8PSBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGVPck9jY2x1ZGVkOworICAgICAg
ICBtX2FjdGl2aXR5U3RhdGUuYWRkKEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZU9yT2NjbHVkZWQp
OwogICAgIGlmIChmbGFnc1RvVXBkYXRlICYgQWN0aXZpdHlTdGF0ZTo6SXNJbldpbmRvdyAmJiBt
X3BhZ2VDbGllbnQuaXNWaWV3SW5XaW5kb3coKSkKLSAgICAgICAgbV9hY3Rpdml0eVN0YXRlIHw9
IEFjdGl2aXR5U3RhdGU6OklzSW5XaW5kb3c7CisgICAgICAgIG1fYWN0aXZpdHlTdGF0ZS5hZGQo
QWN0aXZpdHlTdGF0ZTo6SXNJbldpbmRvdyk7CiAgICAgaWYgKGZsYWdzVG9VcGRhdGUgJiBBY3Rp
dml0eVN0YXRlOjpJc1Zpc3VhbGx5SWRsZSAmJiBtX3BhZ2VDbGllbnQuaXNWaXN1YWxseUlkbGUo
KSkKLSAgICAgICAgbV9hY3Rpdml0eVN0YXRlIHw9IEFjdGl2aXR5U3RhdGU6OklzVmlzdWFsbHlJ
ZGxlOworICAgICAgICBtX2FjdGl2aXR5U3RhdGUuYWRkKEFjdGl2aXR5U3RhdGU6OklzVmlzdWFs
bHlJZGxlKTsKICAgICBpZiAoZmxhZ3NUb1VwZGF0ZSAmIEFjdGl2aXR5U3RhdGU6OklzQXVkaWJs
ZSAmJiBtX21lZGlhU3RhdGUgJiBNZWRpYVByb2R1Y2VyOjpJc1BsYXlpbmdBdWRpbyAmJiAhKG1f
bXV0ZWRTdGF0ZSAmIE1lZGlhUHJvZHVjZXI6OkF1ZGlvSXNNdXRlZCkpCi0gICAgICAgIG1fYWN0
aXZpdHlTdGF0ZSB8PSBBY3Rpdml0eVN0YXRlOjpJc0F1ZGlibGU7CisgICAgICAgIG1fYWN0aXZp
dHlTdGF0ZS5hZGQoQWN0aXZpdHlTdGF0ZTo6SXNBdWRpYmxlKTsKICAgICBpZiAoZmxhZ3NUb1Vw
ZGF0ZSAmIEFjdGl2aXR5U3RhdGU6OklzTG9hZGluZyAmJiBtX3BhZ2VMb2FkU3RhdGUuaXNMb2Fk
aW5nKCkpCi0gICAgICAgIG1fYWN0aXZpdHlTdGF0ZSB8PSBBY3Rpdml0eVN0YXRlOjpJc0xvYWRp
bmc7CisgICAgICAgIG1fYWN0aXZpdHlTdGF0ZS5hZGQoQWN0aXZpdHlTdGF0ZTo6SXNMb2FkaW5n
KTsKICAgICBpZiAoZmxhZ3NUb1VwZGF0ZSAmIEFjdGl2aXR5U3RhdGU6OklzQ2FwdHVyaW5nTWVk
aWEgJiYgbV9tZWRpYVN0YXRlICYgKE1lZGlhUHJvZHVjZXI6Okhhc0FjdGl2ZUF1ZGlvQ2FwdHVy
ZURldmljZSB8IE1lZGlhUHJvZHVjZXI6Okhhc0FjdGl2ZVZpZGVvQ2FwdHVyZURldmljZSkpCi0g
ICAgICAgIG1fYWN0aXZpdHlTdGF0ZSB8PSBBY3Rpdml0eVN0YXRlOjpJc0NhcHR1cmluZ01lZGlh
OworICAgICAgICBtX2FjdGl2aXR5U3RhdGUuYWRkKEFjdGl2aXR5U3RhdGU6OklzQ2FwdHVyaW5n
TWVkaWEpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6YWN0aXZpdHlTdGF0ZURpZENoYW5nZShP
cHRpb25TZXQ8QWN0aXZpdHlTdGF0ZTo6RmxhZz4gbWF5SGF2ZUNoYW5nZWQsIGJvb2wgd2FudHNT
eW5jaHJvbm91c1JlcGx5LCBBY3Rpdml0eVN0YXRlQ2hhbmdlRGlzcGF0Y2hNb2RlIGRpc3BhdGNo
TW9kZSkKIHsKICAgICBMT0dfV0lUSF9TVFJFQU0oQWN0aXZpdHlTdGF0ZSwgc3RyZWFtIDw8ICJX
ZWJQYWdlUHJveHkgIiA8PCBwYWdlSUQoKSA8PCAiIGFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UgLSBt
YXlIYXZlQ2hhbmdlZCAiIDw8IG1heUhhdmVDaGFuZ2VkKTsKIAotICAgIG1fcG90ZW50aWFsbHlD
aGFuZ2VkQWN0aXZpdHlTdGF0ZUZsYWdzIHw9IG1heUhhdmVDaGFuZ2VkOworICAgIG1fcG90ZW50
aWFsbHlDaGFuZ2VkQWN0aXZpdHlTdGF0ZUZsYWdzLmFkZChtYXlIYXZlQ2hhbmdlZCk7CiAgICAg
bV9hY3Rpdml0eVN0YXRlQ2hhbmdlV2FudHNTeW5jaHJvbm91c1JlcGx5ID0gbV9hY3Rpdml0eVN0
YXRlQ2hhbmdlV2FudHNTeW5jaHJvbm91c1JlcGx5IHx8IHdhbnRzU3luY2hyb25vdXNSZXBseTsK
IAogICAgIGlmIChtX3N1cHByZXNzVmlzaWJpbGl0eVVwZGF0ZXMgJiYgZGlzcGF0Y2hNb2RlICE9
IEFjdGl2aXR5U3RhdGVDaGFuZ2VEaXNwYXRjaE1vZGU6OkltbWVkaWF0ZSkKQEAgLTE1MjIsNyAr
MTUyMiw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaXNwYXRjaEFjdGl2aXR5U3RhdGUKIAogICAg
IC8vIElmIHRoZSB2aXNpYmlsaXR5IHN0YXRlIG1heSBoYXZlIGNoYW5nZWQsIHRoZW4gc28gbWF5
IHRoZSB2aXN1YWxseSBpZGxlICYgb2NjbHVkZWQgYWdub3N0aWMgc3RhdGUuCiAgICAgaWYgKG1f
cG90ZW50aWFsbHlDaGFuZ2VkQWN0aXZpdHlTdGF0ZUZsYWdzICYgQWN0aXZpdHlTdGF0ZTo6SXNW
aXNpYmxlKQotICAgICAgICBtX3BvdGVudGlhbGx5Q2hhbmdlZEFjdGl2aXR5U3RhdGVGbGFncyB8
PSB7IEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZU9yT2NjbHVkZWQsIEFjdGl2aXR5U3RhdGU6Oklz
VmlzdWFsbHlJZGxlIH07CisgICAgICAgIG1fcG90ZW50aWFsbHlDaGFuZ2VkQWN0aXZpdHlTdGF0
ZUZsYWdzLmFkZCh7IEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZU9yT2NjbHVkZWQsIEFjdGl2aXR5
U3RhdGU6OklzVmlzdWFsbHlJZGxlIH0pOwogCiAgICAgLy8gUmVjb3JkIHRoZSBwcmlvciB2aWV3
IHN0YXRlLCB1cGRhdGUgdGhlIGZsYWdzIHRoYXQgbWF5IGhhdmUgY2hhbmdlZCwKICAgICAvLyBh
bmQgY2hlY2sgd2hpY2ggZmxhZ3MgaGF2ZSBhY3R1YWxseSBjaGFuZ2VkLgpJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCShyZXZpc2lvbiAyMzU1MzkpCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yNzAsNyArMjcwLDcgQEAgdm9pZCBXS1BhZ2VSZWxvYWQoV0tQYWdlUmVmIHBhZ2VSZWYpCiAg
ICAgT3B0aW9uU2V0PFdlYkNvcmU6OlJlbG9hZE9wdGlvbj4gcmVsb2FkT3B0aW9uczsKICNpZiBQ
TEFURk9STShDT0NPQSkKICAgICBpZiAobGlua2VkT25PckFmdGVyKFdlYktpdDo6U0RLVmVyc2lv
bjo6Rmlyc3RXaXRoRXhwaXJlZE9ubHlSZWxvYWRCZWhhdmlvcikpCi0gICAgICAgIHJlbG9hZE9w
dGlvbnMgfD0gV2ViQ29yZTo6UmVsb2FkT3B0aW9uOjpFeHBpcmVkT25seTsKKyAgICAgICAgcmVs
b2FkT3B0aW9ucy5hZGQoV2ViQ29yZTo6UmVsb2FkT3B0aW9uOjpFeHBpcmVkT25seSk7CiAjZW5k
aWYKIAogICAgIHRvSW1wbChwYWdlUmVmKS0+cmVsb2FkKHJlbG9hZE9wdGlvbnMpOwpJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tSZXNvdXJjZUNhY2hlTWFuYWdlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tSZXNvdXJjZUNh
Y2hlTWFuYWdlci5jcHAJKHJldmlzaW9uIDIzNTUzOSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLUmVzb3VyY2VDYWNoZU1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
MCwxMiArNDAsMTAgQEAgV0tUeXBlSUQgV0tSZXNvdXJjZUNhY2hlTWFuYWdlckdldFR5cGVJRAog
CiBzdGF0aWMgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gdG9XZWJzaXRlRGF0YVR5cGVzKFdL
UmVzb3VyY2VDYWNoZXNUb0NsZWFyIGNhY2hlc1RvQ2xlYXIpCiB7Ci0gICAgT3B0aW9uU2V0PFdl
YnNpdGVEYXRhVHlwZT4gd2Vic2l0ZURhdGFUeXBlczsKLQotICAgIHdlYnNpdGVEYXRhVHlwZXMg
fD0gV2Vic2l0ZURhdGFUeXBlOjpNZW1vcnlDYWNoZTsKKyAgICBPcHRpb25TZXQ8V2Vic2l0ZURh
dGFUeXBlPiB3ZWJzaXRlRGF0YVR5cGVzIHsgV2Vic2l0ZURhdGFUeXBlOjpNZW1vcnlDYWNoZSB9
OwogCiAgICAgaWYgKGNhY2hlc1RvQ2xlYXIgPT0gV0tSZXNvdXJjZUNhY2hlc1RvQ2xlYXJBbGwp
Ci0gICAgICAgIHdlYnNpdGVEYXRhVHlwZXMgfD0gV2Vic2l0ZURhdGFUeXBlOjpEaXNrQ2FjaGU7
CisgICAgICAgIHdlYnNpdGVEYXRhVHlwZXMuYWRkKFdlYnNpdGVEYXRhVHlwZTo6RGlza0NhY2hl
KTsKIAogICAgIHJldHVybiB3ZWJzaXRlRGF0YVR5cGVzOwogfQpJbmRleDogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlUG9saWNpZXMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZVBvbGljaWVzLmNwcAkocmV2aXNp
b24gMjM1NTM5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlUG9s
aWNpZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MywxMyArODMsMTMgQEAgdm9pZCBXS1dlYnNp
dGVQb2xpY2llc1NldEFsbG93ZWRBdXRvcGxheQogewogICAgIE9wdGlvblNldDxXZWJzaXRlQXV0
b3BsYXlRdWlyaz4gcXVpcmtzOwogICAgIGlmIChhbGxvd2VkUXVpcmtzICYga1dLV2Vic2l0ZUF1
dG9wbGF5UXVpcmtJbmhlcml0ZWRVc2VyR2VzdHVyZXMpCi0gICAgICAgIHF1aXJrcyB8PSBXZWJz
aXRlQXV0b3BsYXlRdWlyazo6SW5oZXJpdGVkVXNlckdlc3R1cmVzOworICAgICAgICBxdWlya3Mu
YWRkKFdlYnNpdGVBdXRvcGxheVF1aXJrOjpJbmhlcml0ZWRVc2VyR2VzdHVyZXMpOwogCiAgICAg
aWYgKGFsbG93ZWRRdWlya3MgJiBrV0tXZWJzaXRlQXV0b3BsYXlRdWlya1N5bnRoZXNpemVkUGF1
c2VFdmVudHMpCi0gICAgICAgIHF1aXJrcyB8PSBXZWJzaXRlQXV0b3BsYXlRdWlyazo6U3ludGhl
c2l6ZWRQYXVzZUV2ZW50czsKKyAgICAgICAgcXVpcmtzLmFkZChXZWJzaXRlQXV0b3BsYXlRdWly
azo6U3ludGhlc2l6ZWRQYXVzZUV2ZW50cyk7CiAKICAgICBpZiAoYWxsb3dlZFF1aXJrcyAmIGtX
S1dlYnNpdGVBdXRvcGxheVF1aXJrQXJiaXRyYXJ5VXNlckdlc3R1cmVzKQotICAgICAgICBxdWly
a3MgfD0gV2Vic2l0ZUF1dG9wbGF5UXVpcms6OkFyYml0cmFyeVVzZXJHZXN0dXJlczsKKyAgICAg
ICAgcXVpcmtzLmFkZChXZWJzaXRlQXV0b3BsYXlRdWlyazo6QXJiaXRyYXJ5VXNlckdlc3R1cmVz
KTsKIAogICAgIHRvSW1wbCh3ZWJzaXRlUG9saWNpZXMpLT5zZXRBbGxvd2VkQXV0b3BsYXlRdWly
a3MocXVpcmtzKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL3dwZS9X
S0FQSUNhc3RXUEUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy93cGUvV0tBUElDYXN0V1BFLmgJKHJldmlzaW9uIDIzNTUzOSkKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL3dwZS9XS0FQSUNhc3RXUEUuaAkod29ya2luZyBjb3B5KQpAQCAtNTMs
OSArNTMsOSBAQCBpbmxpbmUgT3B0aW9uU2V0PFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6CiAgICAg
T3B0aW9uU2V0PFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWc+IHZpZXdTdGF0ZUZsYWdzOwog
CiAgICAgaWYgKHdrVmlld1N0YXRlICYga1dLVmlld1N0YXRlSXNJbldpbmRvdykKLSAgICAgICAg
dmlld1N0YXRlRmxhZ3MgfD0gV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNJbldpbmRvdzsKKyAg
ICAgICAgdmlld1N0YXRlRmxhZ3MuYWRkKFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzSW5XaW5k
b3cpOwogICAgIGlmICh3a1ZpZXdTdGF0ZSAmIGtXS1ZpZXdTdGF0ZUlzVmlzaWJsZSkKLSAgICAg
ICAgdmlld1N0YXRlRmxhZ3MgfD0gV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlOwor
ICAgICAgICB2aWV3U3RhdGVGbGFncy5hZGQoV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNWaXNp
YmxlKTsKIAogICAgIHJldHVybiB2aWV3U3RhdGVGbGFnczsKIH0KSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQkocmV2aXNpb24gMjM1NTM5
KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQkod29y
a2luZyBjb3B5KQpAQCAtOTYxLDcgKzk2MSw3IEBAIC0gKFdLTmF2aWdhdGlvbiAqKXJlbG9hZAog
ewogICAgIE9wdGlvblNldDxXZWJDb3JlOjpSZWxvYWRPcHRpb24+IHJlbG9hZE9wdGlvbnM7CiAg
ICAgaWYgKGxpbmtlZE9uT3JBZnRlcihXZWJLaXQ6OlNES1ZlcnNpb246OkZpcnN0V2l0aEV4cGly
ZWRPbmx5UmVsb2FkQmVoYXZpb3IpKQotICAgICAgICByZWxvYWRPcHRpb25zIHw9IFdlYkNvcmU6
OlJlbG9hZE9wdGlvbjo6RXhwaXJlZE9ubHk7CisgICAgICAgIHJlbG9hZE9wdGlvbnMuYWRkKFdl
YkNvcmU6OlJlbG9hZE9wdGlvbjo6RXhwaXJlZE9ubHkpOwogCiAgICAgcmV0dXJuIHdyYXBwZXIo
X3BhZ2UtPnJlbG9hZChyZWxvYWRPcHRpb25zKSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZEludGVybmFsLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNv
cmRJbnRlcm5hbC5oCShyZXZpc2lvbiAyMzU1MzkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZEludGVybmFsLmgJKHdvcmtpbmcgY29weSkK
QEAgLTg1LDcgKzg1LDcgQEAgc3RhdGljIGlubGluZSBPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRl
RAogCiAgICAgZm9yIChOU1N0cmluZyAqd2Vic2l0ZURhdGFUeXBlIGluIHdlYnNpdGVEYXRhVHlw
ZXMpIHsKICAgICAgICAgaWYgKGF1dG8gZGF0YVR5cGUgPSB0b1dlYnNpdGVEYXRhVHlwZSh3ZWJz
aXRlRGF0YVR5cGUpKQotICAgICAgICAgICAgcmVzdWx0IHw9ICpkYXRhVHlwZTsKKyAgICAgICAg
ICAgIHJlc3VsdC5hZGQoKmRhdGFUeXBlKTsKICAgICB9CiAKICAgICByZXR1cm4gcmVzdWx0OwpJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9y
ZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJzaXRlRGF0YVN0b3JlLm1tCShyZXZpc2lvbiAyMzU1MzkpCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0yMjMsNyArMjIzLDcgQEAgLSAodm9pZClfZmV0Y2hEYXRhUmVjb3Jkc09mVHlwZXM6KE5TU2V0
PAogCiAgICAgT3B0aW9uU2V0PFdlYktpdDo6V2Vic2l0ZURhdGFGZXRjaE9wdGlvbj4gZmV0Y2hP
cHRpb25zOwogICAgIGlmIChvcHRpb25zICYgX1dLV2Vic2l0ZURhdGFTdG9yZUZldGNoT3B0aW9u
Q29tcHV0ZVNpemVzKQotICAgICAgICBmZXRjaE9wdGlvbnMgfD0gV2ViS2l0OjpXZWJzaXRlRGF0
YUZldGNoT3B0aW9uOjpDb21wdXRlU2l6ZXM7CisgICAgICAgIGZldGNoT3B0aW9ucy5hZGQoV2Vi
S2l0OjpXZWJzaXRlRGF0YUZldGNoT3B0aW9uOjpDb21wdXRlU2l6ZXMpOwogCiAgICAgX3dlYnNp
dGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5mZXRjaERhdGEoV2ViS2l0Ojp0b1dlYnNp
dGVEYXRhVHlwZXMoZGF0YVR5cGVzKSwgZmV0Y2hPcHRpb25zLCBbY29tcGxldGlvbkhhbmRsZXJD
b3B5ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlckNvcHkpXShhdXRvIHdlYnNpdGVEYXRhUmVj
b3JkcykgewogICAgICAgICBWZWN0b3I8UmVmUHRyPEFQSTo6T2JqZWN0Pj4gZWxlbWVudHM7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZVBvbGljaWVz
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tX
ZWJzaXRlUG9saWNpZXMubW0JKHJldmlzaW9uIDIzNTUzOSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlUG9saWNpZXMubW0JKHdvcmtpbmcgY29weSkKQEAg
LTY0LDEzICs2NCwxMyBAQCAtICh2b2lkKXNldEFsbG93ZWRBdXRvcGxheVF1aXJrczooX1dLV2Vi
CiAgICAgT3B0aW9uU2V0PFdlYktpdDo6V2Vic2l0ZUF1dG9wbGF5UXVpcms+IHF1aXJrczsKIAog
ICAgIGlmIChhbGxvd2VkUXVpcmtzICYgX1dLV2Vic2l0ZUF1dG9wbGF5UXVpcmtJbmhlcml0ZWRV
c2VyR2VzdHVyZXMpCi0gICAgICAgIHF1aXJrcyB8PSBXZWJLaXQ6OldlYnNpdGVBdXRvcGxheVF1
aXJrOjpJbmhlcml0ZWRVc2VyR2VzdHVyZXM7CisgICAgICAgIHF1aXJrcy5hZGQoV2ViS2l0OjpX
ZWJzaXRlQXV0b3BsYXlRdWlyazo6SW5oZXJpdGVkVXNlckdlc3R1cmVzKTsKIAogICAgIGlmIChh
bGxvd2VkUXVpcmtzICYgX1dLV2Vic2l0ZUF1dG9wbGF5UXVpcmtTeW50aGVzaXplZFBhdXNlRXZl
bnRzKQotICAgICAgICBxdWlya3MgfD0gV2ViS2l0OjpXZWJzaXRlQXV0b3BsYXlRdWlyazo6U3lu
dGhlc2l6ZWRQYXVzZUV2ZW50czsKKyAgICAgICAgcXVpcmtzLmFkZChXZWJLaXQ6OldlYnNpdGVB
dXRvcGxheVF1aXJrOjpTeW50aGVzaXplZFBhdXNlRXZlbnRzKTsKIAogICAgIGlmIChhbGxvd2Vk
UXVpcmtzICYgX1dLV2Vic2l0ZUF1dG9wbGF5UXVpcmtBcmJpdHJhcnlVc2VyR2VzdHVyZXMpCi0g
ICAgICAgIHF1aXJrcyB8PSBXZWJLaXQ6OldlYnNpdGVBdXRvcGxheVF1aXJrOjpBcmJpdHJhcnlV
c2VyR2VzdHVyZXM7CisgICAgICAgIHF1aXJrcy5hZGQoV2ViS2l0OjpXZWJzaXRlQXV0b3BsYXlR
dWlyazo6QXJiaXRyYXJ5VXNlckdlc3R1cmVzKTsKIAogICAgIF93ZWJzaXRlUG9saWNpZXMtPnNl
dEFsbG93ZWRBdXRvcGxheVF1aXJrcyhxdWlya3MpOwogfQpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAJKHJldmlz
aW9uIDIzNTUzOSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdl
YkNvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NzUsOCArNzc1LDggQEAgdm9pZCB3ZWJr
aXRfd2ViX2NvbnRleHRfY2xlYXJfY2FjaGUoV2ViSwogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VC
S0lUX0lTX1dFQl9DT05URVhUKGNvbnRleHQpKTsKIAogICAgIE9wdGlvblNldDxXZWJzaXRlRGF0
YVR5cGU+IHdlYnNpdGVEYXRhVHlwZXM7Ci0gICAgd2Vic2l0ZURhdGFUeXBlcyB8PSBXZWJzaXRl
RGF0YVR5cGU6Ok1lbW9yeUNhY2hlOwotICAgIHdlYnNpdGVEYXRhVHlwZXMgfD0gV2Vic2l0ZURh
dGFUeXBlOjpEaXNrQ2FjaGU7CisgICAgd2Vic2l0ZURhdGFUeXBlcy5hZGQoV2Vic2l0ZURhdGFU
eXBlOjpNZW1vcnlDYWNoZSk7CisgICAgd2Vic2l0ZURhdGFUeXBlcy5hZGQoV2Vic2l0ZURhdGFU
eXBlOjpEaXNrQ2FjaGUpOwogICAgIGF1dG8mIHdlYnNpdGVEYXRhU3RvcmUgPSB3ZWJraXRXZWJz
aXRlRGF0YU1hbmFnZXJHZXREYXRhU3RvcmUoY29udGV4dC0+cHJpdi0+d2Vic2l0ZURhdGFNYW5h
Z2VyLmdldCgpKS53ZWJzaXRlRGF0YVN0b3JlKCk7CiAgICAgd2Vic2l0ZURhdGFTdG9yZS5yZW1v
dmVEYXRhKHdlYnNpdGVEYXRhVHlwZXMsIC1XYWxsVGltZTo6aW5maW5pdHkoKSwgW10geyB9KTsK
IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYnNpdGVE
YXRhTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyLmNwcAkocmV2aXNpb24gMjM1NTM5KQorKysg
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2Vy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjMwLDI1ICs2MzAsMjUgQEAgc3RhdGljIE9wdGlvblNl
dDxXZWJzaXRlRGF0YVR5cGU+IHRvV2VicwogewogICAgIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5
cGU+IHJldHVyblZhbHVlOwogICAgIGlmICh0eXBlcyAmIFdFQktJVF9XRUJTSVRFX0RBVEFfTUVN
T1JZX0NBQ0hFKQotICAgICAgICByZXR1cm5WYWx1ZSB8PSBXZWJzaXRlRGF0YVR5cGU6Ok1lbW9y
eUNhY2hlOworICAgICAgICByZXR1cm5WYWx1ZS5hZGQoV2Vic2l0ZURhdGFUeXBlOjpNZW1vcnlD
YWNoZSk7CiAgICAgaWYgKHR5cGVzICYgV0VCS0lUX1dFQlNJVEVfREFUQV9ESVNLX0NBQ0hFKQot
ICAgICAgICByZXR1cm5WYWx1ZSB8PSBXZWJzaXRlRGF0YVR5cGU6OkRpc2tDYWNoZTsKKyAgICAg
ICAgcmV0dXJuVmFsdWUuYWRkKFdlYnNpdGVEYXRhVHlwZTo6RGlza0NhY2hlKTsKICAgICBpZiAo
dHlwZXMgJiBXRUJLSVRfV0VCU0lURV9EQVRBX09GRkxJTkVfQVBQTElDQVRJT05fQ0FDSEUpCi0g
ICAgICAgIHJldHVyblZhbHVlIHw9IFdlYnNpdGVEYXRhVHlwZTo6T2ZmbGluZVdlYkFwcGxpY2F0
aW9uQ2FjaGU7CisgICAgICAgIHJldHVyblZhbHVlLmFkZChXZWJzaXRlRGF0YVR5cGU6Ok9mZmxp
bmVXZWJBcHBsaWNhdGlvbkNhY2hlKTsKICAgICBpZiAodHlwZXMgJiBXRUJLSVRfV0VCU0lURV9E
QVRBX1NFU1NJT05fU1RPUkFHRSkKLSAgICAgICAgcmV0dXJuVmFsdWUgfD0gV2Vic2l0ZURhdGFU
eXBlOjpTZXNzaW9uU3RvcmFnZTsKKyAgICAgICAgcmV0dXJuVmFsdWUuYWRkKFdlYnNpdGVEYXRh
VHlwZTo6U2Vzc2lvblN0b3JhZ2UpOwogICAgIGlmICh0eXBlcyAmIFdFQktJVF9XRUJTSVRFX0RB
VEFfTE9DQUxfU1RPUkFHRSkKLSAgICAgICAgcmV0dXJuVmFsdWUgfD0gV2Vic2l0ZURhdGFUeXBl
OjpMb2NhbFN0b3JhZ2U7CisgICAgICAgIHJldHVyblZhbHVlLmFkZChXZWJzaXRlRGF0YVR5cGU6
OkxvY2FsU3RvcmFnZSk7CiAgICAgaWYgKHR5cGVzICYgV0VCS0lUX1dFQlNJVEVfREFUQV9XRUJT
UUxfREFUQUJBU0VTKQotICAgICAgICByZXR1cm5WYWx1ZSB8PSBXZWJzaXRlRGF0YVR5cGU6Oldl
YlNRTERhdGFiYXNlczsKKyAgICAgICAgcmV0dXJuVmFsdWUuYWRkKFdlYnNpdGVEYXRhVHlwZTo6
V2ViU1FMRGF0YWJhc2VzKTsKICAgICBpZiAodHlwZXMgJiBXRUJLSVRfV0VCU0lURV9EQVRBX0lO
REVYRUREQl9EQVRBQkFTRVMpCi0gICAgICAgIHJldHVyblZhbHVlIHw9IFdlYnNpdGVEYXRhVHlw
ZTo6SW5kZXhlZERCRGF0YWJhc2VzOworICAgICAgICByZXR1cm5WYWx1ZS5hZGQoV2Vic2l0ZURh
dGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXMpOwogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5f
QVBJKQogICAgIGlmICh0eXBlcyAmIFdFQktJVF9XRUJTSVRFX0RBVEFfUExVR0lOX0RBVEEpCi0g
ICAgICAgIHJldHVyblZhbHVlIHw9IFdlYnNpdGVEYXRhVHlwZTo6UGx1Z0luRGF0YTsKKyAgICAg
ICAgcmV0dXJuVmFsdWUuYWRkKFdlYnNpdGVEYXRhVHlwZTo6UGx1Z0luRGF0YSk7CiAjZW5kaWYK
ICAgICBpZiAodHlwZXMgJiBXRUJLSVRfV0VCU0lURV9EQVRBX0NPT0tJRVMpCi0gICAgICAgIHJl
dHVyblZhbHVlIHw9IFdlYnNpdGVEYXRhVHlwZTo6Q29va2llczsKKyAgICAgICAgcmV0dXJuVmFs
dWUuYWRkKFdlYnNpdGVEYXRhVHlwZTo6Q29va2llcyk7CiAgICAgcmV0dXJuIHJldHVyblZhbHVl
OwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZp
ZXdCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYlZpZXdCYXNlLmNwcAkocmV2aXNpb24gMjM1NTM5KQorKysgU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTIxMCw3ICsyMTAsNyBAQCBXRUJLSVRfREVGSU5FX1RZUEUoV2ViS2l0V2ViVmlld0Jhc2Us
IHdlCiBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZVNjaGVkdWxlVXBkYXRlQWN0aXZpdHlT
dGF0ZShXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlld0Jhc2UsIE9wdGlvblNldDxBY3Rpdml0eVN0
YXRlOjpGbGFnPiBmbGFnc1RvVXBkYXRlKQogewogICAgIFdlYktpdFdlYlZpZXdCYXNlUHJpdmF0
ZSogcHJpdiA9IHdlYlZpZXdCYXNlLT5wcml2OwotICAgIHByaXYtPmFjdGl2aXR5U3RhdGVGbGFn
c1RvVXBkYXRlIHw9IGZsYWdzVG9VcGRhdGU7CisgICAgcHJpdi0+YWN0aXZpdHlTdGF0ZUZsYWdz
VG9VcGRhdGUuYWRkKGZsYWdzVG9VcGRhdGUpOwogICAgIGlmIChwcml2LT51cGRhdGVBY3Rpdml0
eVN0YXRlVGltZXIuaXNBY3RpdmUoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0yMjcsNyArMjI3
LDcgQEAgc3RhdGljIGdib29sZWFuIHRvcGxldmVsV2luZG93Rm9jdXNJbkV2ZQogICAgIGlmIChw
cml2LT5hY3Rpdml0eVN0YXRlICYgQWN0aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmUpCiAgICAg
ICAgIHJldHVybiBGQUxTRTsKIAotICAgIHByaXYtPmFjdGl2aXR5U3RhdGUgfD0gQWN0aXZpdHlT
dGF0ZTo6V2luZG93SXNBY3RpdmU7CisgICAgcHJpdi0+YWN0aXZpdHlTdGF0ZS5hZGQoQWN0aXZp
dHlTdGF0ZTo6V2luZG93SXNBY3RpdmUpOwogICAgIHdlYmtpdFdlYlZpZXdCYXNlU2NoZWR1bGVV
cGRhdGVBY3Rpdml0eVN0YXRlKHdlYlZpZXdCYXNlLCBBY3Rpdml0eVN0YXRlOjpXaW5kb3dJc0Fj
dGl2ZSk7CiAKICAgICByZXR1cm4gRkFMU0U7CkBAIC0yMzksNyArMjM5LDcgQEAgc3RhdGljIGdi
b29sZWFuIHRvcGxldmVsV2luZG93Rm9jdXNPdXRFdgogICAgIGlmICghKHByaXYtPmFjdGl2aXR5
U3RhdGUgJiBBY3Rpdml0eVN0YXRlOjpXaW5kb3dJc0FjdGl2ZSkpCiAgICAgICAgIHJldHVybiBG
QUxTRTsKIAotICAgIHByaXYtPmFjdGl2aXR5U3RhdGUgLT0gQWN0aXZpdHlTdGF0ZTo6V2luZG93
SXNBY3RpdmU7CisgICAgcHJpdi0+YWN0aXZpdHlTdGF0ZS5yZW1vdmUoQWN0aXZpdHlTdGF0ZTo6
V2luZG93SXNBY3RpdmUpOwogICAgIHdlYmtpdFdlYlZpZXdCYXNlU2NoZWR1bGVVcGRhdGVBY3Rp
dml0eVN0YXRlKHdlYlZpZXdCYXNlLCBBY3Rpdml0eVN0YXRlOjpXaW5kb3dJc0FjdGl2ZSk7CiAK
ICAgICByZXR1cm4gRkFMU0U7CkBAIC0yNTYsOSArMjU2LDkgQEAgc3RhdGljIGdib29sZWFuIHRv
cGxldmVsV2luZG93U3RhdGVFdmVudAogICAgICAgICByZXR1cm4gRkFMU0U7CiAKICAgICBpZiAo
dmlzaWJsZSkKLSAgICAgICAgcHJpdi0+YWN0aXZpdHlTdGF0ZSB8PSBBY3Rpdml0eVN0YXRlOjpJ
c1Zpc2libGU7CisgICAgICAgIHByaXYtPmFjdGl2aXR5U3RhdGUuYWRkKEFjdGl2aXR5U3RhdGU6
OklzVmlzaWJsZSk7CiAgICAgZWxzZQotICAgICAgICBwcml2LT5hY3Rpdml0eVN0YXRlIC09IEFj
dGl2aXR5U3RhdGU6OklzVmlzaWJsZTsKKyAgICAgICAgcHJpdi0+YWN0aXZpdHlTdGF0ZS5yZW1v
dmUoQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKTsKICAgICB3ZWJraXRXZWJWaWV3QmFzZVNjaGVk
dWxlVXBkYXRlQWN0aXZpdHlTdGF0ZSh3ZWJWaWV3QmFzZSwgQWN0aXZpdHlTdGF0ZTo6SXNWaXNp
YmxlKTsKIAogICAgIHJldHVybiBGQUxTRTsKQEAgLTMwMywxMiArMzAzLDEyIEBAIHN0YXRpYyB2
b2lkIHdlYmtpdFdlYlZpZXdCYXNlU2V0VG9wbGV2ZWwKICAgICBpZiAoIXByaXYtPnRvcGxldmVs
T25TY3JlZW5XaW5kb3cpIHsKICAgICAgICAgT3B0aW9uU2V0PEFjdGl2aXR5U3RhdGU6OkZsYWc+
IGZsYWdzVG9VcGRhdGU7CiAgICAgICAgIGlmIChwcml2LT5hY3Rpdml0eVN0YXRlICYgQWN0aXZp
dHlTdGF0ZTo6SXNJbldpbmRvdykgewotICAgICAgICAgICAgcHJpdi0+YWN0aXZpdHlTdGF0ZSAt
PSBBY3Rpdml0eVN0YXRlOjpJc0luV2luZG93OwotICAgICAgICAgICAgZmxhZ3NUb1VwZGF0ZSB8
PSBBY3Rpdml0eVN0YXRlOjpJc0luV2luZG93OworICAgICAgICAgICAgcHJpdi0+YWN0aXZpdHlT
dGF0ZS5yZW1vdmUoQWN0aXZpdHlTdGF0ZTo6SXNJbldpbmRvdyk7CisgICAgICAgICAgICBmbGFn
c1RvVXBkYXRlLmFkZChBY3Rpdml0eVN0YXRlOjpJc0luV2luZG93KTsKICAgICAgICAgfQogICAg
ICAgICBpZiAocHJpdi0+YWN0aXZpdHlTdGF0ZSAmIEFjdGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0
aXZlKSB7Ci0gICAgICAgICAgICBwcml2LT5hY3Rpdml0eVN0YXRlIC09IEFjdGl2aXR5U3RhdGU6
OldpbmRvd0lzQWN0aXZlOwotICAgICAgICAgICAgZmxhZ3NUb1VwZGF0ZSB8PSBBY3Rpdml0eVN0
YXRlOjpJc0luV2luZG93OworICAgICAgICAgICAgcHJpdi0+YWN0aXZpdHlTdGF0ZS5yZW1vdmUo
QWN0aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmUpOworICAgICAgICAgICAgZmxhZ3NUb1VwZGF0
ZS5hZGQoQWN0aXZpdHlTdGF0ZTo6SXNJbldpbmRvdyk7CiAgICAgICAgIH0KICAgICAgICAgaWYg
KGZsYWdzVG9VcGRhdGUpCiAgICAgICAgICAgICB3ZWJraXRXZWJWaWV3QmFzZVNjaGVkdWxlVXBk
YXRlQWN0aXZpdHlTdGF0ZSh3ZWJWaWV3QmFzZSwgZmxhZ3NUb1VwZGF0ZSk7CkBAIC02MjYsMTcg
KzYyNiwxNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZU1hcChHdGtXaWRnCiAgICAg
V2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKiBwcml2ID0gd2ViVmlld0Jhc2UtPnByaXY7CiAgICAg
T3B0aW9uU2V0PEFjdGl2aXR5U3RhdGU6OkZsYWc+IGZsYWdzVG9VcGRhdGU7CiAgICAgaWYgKCEo
cHJpdi0+YWN0aXZpdHlTdGF0ZSAmIEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSkpCi0gICAgICAg
IGZsYWdzVG9VcGRhdGUgfD0gQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlOworICAgICAgICBmbGFn
c1RvVXBkYXRlLmFkZChBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUpOwogICAgIGlmIChwcml2LT50
b3BsZXZlbE9uU2NyZWVuV2luZG93KSB7CiAgICAgICAgIGlmICghKHByaXYtPmFjdGl2aXR5U3Rh
dGUgJiBBY3Rpdml0eVN0YXRlOjpJc0luV2luZG93KSkKLSAgICAgICAgICAgIGZsYWdzVG9VcGRh
dGUgfD0gQWN0aXZpdHlTdGF0ZTo6SXNJbldpbmRvdzsKKyAgICAgICAgICAgIGZsYWdzVG9VcGRh
dGUuYWRkKEFjdGl2aXR5U3RhdGU6OklzSW5XaW5kb3cpOwogICAgICAgICBpZiAoZ3RrX3dpbmRv
d19pc19hY3RpdmUoR1RLX1dJTkRPVyhwcml2LT50b3BsZXZlbE9uU2NyZWVuV2luZG93KSkgJiYg
IShwcml2LT5hY3Rpdml0eVN0YXRlICYgQWN0aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmUpKQot
ICAgICAgICAgICAgZmxhZ3NUb1VwZGF0ZSB8PSBBY3Rpdml0eVN0YXRlOjpXaW5kb3dJc0FjdGl2
ZTsKKyAgICAgICAgICAgIGZsYWdzVG9VcGRhdGUuYWRkKEFjdGl2aXR5U3RhdGU6OldpbmRvd0lz
QWN0aXZlKTsKICAgICB9CiAgICAgaWYgKCFmbGFnc1RvVXBkYXRlKQogICAgICAgICByZXR1cm47
CiAKLSAgICBwcml2LT5hY3Rpdml0eVN0YXRlIHw9IGZsYWdzVG9VcGRhdGU7CisgICAgcHJpdi0+
YWN0aXZpdHlTdGF0ZS5hZGQoZmxhZ3NUb1VwZGF0ZSk7CiAgICAgd2Via2l0V2ViVmlld0Jhc2VT
Y2hlZHVsZVVwZGF0ZUFjdGl2aXR5U3RhdGUod2ViVmlld0Jhc2UsIGZsYWdzVG9VcGRhdGUpOwog
fQogCkBAIC02NDksNyArNjQ5LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VVbm1h
cChHdGtXaQogICAgIGlmICghKHByaXYtPmFjdGl2aXR5U3RhdGUgJiBBY3Rpdml0eVN0YXRlOjpJ
c1Zpc2libGUpKQogICAgICAgICByZXR1cm47CiAKLSAgICBwcml2LT5hY3Rpdml0eVN0YXRlIC09
IEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZTsKKyAgICBwcml2LT5hY3Rpdml0eVN0YXRlLnJlbW92
ZShBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUpOwogICAgIHdlYmtpdFdlYlZpZXdCYXNlU2NoZWR1
bGVVcGRhdGVBY3Rpdml0eVN0YXRlKHdlYlZpZXdCYXNlLCBBY3Rpdml0eVN0YXRlOjpJc1Zpc2li
bGUpOwogfQogCkBAIC0xNDk4LDcgKzE0OTgsNyBAQCB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlU2V0
Rm9jdXMoV2ViS2l0V2ViCiAKICAgICBPcHRpb25TZXQ8QWN0aXZpdHlTdGF0ZTo6RmxhZz4gZmxh
Z3NUb1VwZGF0ZSB7IEFjdGl2aXR5U3RhdGU6OklzRm9jdXNlZCB9OwogICAgIGlmIChmb2N1c2Vk
KSB7Ci0gICAgICAgIHByaXYtPmFjdGl2aXR5U3RhdGUgfD0gQWN0aXZpdHlTdGF0ZTo6SXNGb2N1
c2VkOworICAgICAgICBwcml2LT5hY3Rpdml0eVN0YXRlLmFkZChBY3Rpdml0eVN0YXRlOjpJc0Zv
Y3VzZWQpOwogCiAgICAgICAgIC8vIElmIHRoZSB2aWV3IGhhcyByZWNlaXZlZCB0aGUgZm9jdXMg
YW5kIHRoZSB3aW5kb3cgaXMgbm90IGFjdGl2ZQogICAgICAgICAvLyBtYXJrIHRoZSBjdXJyZW50
IHdpbmRvdyBhcyBhY3RpdmUgbm93LiBUaGlzIGNhbiBoYXBwZW4gaWYgdGhlCkBAIC0xNTA2LDEx
ICsxNTA2LDExIEBAIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VTZXRGb2N1cyhXZWJLaXRXZWIKICAg
ICAgICAgLy8gc2V0IHByb2dyYW1hdGljYWxseSBsaWtlIFdlYktpdFRlc3RSdW5uZXIgZG9lcywg
YmVjYXVzZSBQT1BVUAogICAgICAgICAvLyBjYW4ndCBiZSBmb2N1c2VkLgogICAgICAgICBpZiAo
IShwcml2LT5hY3Rpdml0eVN0YXRlICYgQWN0aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmUpKSB7
Ci0gICAgICAgICAgICBwcml2LT5hY3Rpdml0eVN0YXRlIHw9IEFjdGl2aXR5U3RhdGU6OldpbmRv
d0lzQWN0aXZlOwotICAgICAgICAgICAgZmxhZ3NUb1VwZGF0ZSB8PSBBY3Rpdml0eVN0YXRlOjpX
aW5kb3dJc0FjdGl2ZTsKKyAgICAgICAgICAgIHByaXYtPmFjdGl2aXR5U3RhdGUuYWRkKEFjdGl2
aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZlKTsKKyAgICAgICAgICAgIGZsYWdzVG9VcGRhdGUuYWRk
KEFjdGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZlKTsKICAgICAgICAgfQogICAgIH0gZWxzZQot
ICAgICAgICBwcml2LT5hY3Rpdml0eVN0YXRlIC09IEFjdGl2aXR5U3RhdGU6OklzRm9jdXNlZDsK
KyAgICAgICAgcHJpdi0+YWN0aXZpdHlTdGF0ZS5yZW1vdmUoQWN0aXZpdHlTdGF0ZTo6SXNGb2N1
c2VkKTsKIAogICAgIHdlYmtpdFdlYlZpZXdCYXNlU2NoZWR1bGVVcGRhdGVBY3Rpdml0eVN0YXRl
KHdlYlZpZXdCYXNlLCBmbGFnc1RvVXBkYXRlKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCShyZXZpc2lvbiAyMzU1MzkpCisrKyBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQkod29ya2luZyBjb3B5KQpA
QCAtMjExOCw3ICsyMTE4LDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6dmlld0RpZE1vdmVUb1dpbmRv
dygpCiAgICAgICAgIGlmIChtX3Nob3VsZERlZmVyVmlld0luV2luZG93Q2hhbmdlcykKICAgICAg
ICAgICAgIG1fdmlld0luV2luZG93Q2hhbmdlV2FzRGVmZXJyZWQgPSB0cnVlOwogICAgICAgICBl
bHNlCi0gICAgICAgICAgICBhY3Rpdml0eVN0YXRlQ2hhbmdlcyB8PSBXZWJDb3JlOjpBY3Rpdml0
eVN0YXRlOjpJc0luV2luZG93OworICAgICAgICAgICAgYWN0aXZpdHlTdGF0ZUNoYW5nZXMuYWRk
KFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzSW5XaW5kb3cpOwogICAgICAgICBtX3BhZ2UtPmFj
dGl2aXR5U3RhdGVEaWRDaGFuZ2UoYWN0aXZpdHlTdGF0ZUNoYW5nZXMpOwogCiAgICAgICAgIHVw
ZGF0ZVdpbmRvd0FuZFZpZXdGcmFtZXMoKTsKQEAgLTIxNDQsNyArMjE0NCw3IEBAIHZvaWQgV2Vi
Vmlld0ltcGw6OnZpZXdEaWRNb3ZlVG9XaW5kb3coKQogICAgICAgICBpZiAobV9zaG91bGREZWZl
clZpZXdJbldpbmRvd0NoYW5nZXMpCiAgICAgICAgICAgICBtX3ZpZXdJbldpbmRvd0NoYW5nZVdh
c0RlZmVycmVkID0gdHJ1ZTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgYWN0aXZpdHlTdGF0
ZUNoYW5nZXMgfD0gV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNJbldpbmRvdzsKKyAgICAgICAg
ICAgIGFjdGl2aXR5U3RhdGVDaGFuZ2VzLmFkZChXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc0lu
V2luZG93KTsKICAgICAgICAgbV9wYWdlLT5hY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKGFjdGl2aXR5
U3RhdGVDaGFuZ2VzKTsKIAogICAgICAgICBbTlNFdmVudCByZW1vdmVNb25pdG9yOm1fZmxhZ3ND
aGFuZ2VkRXZlbnRNb25pdG9yXTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNp
dGVEYXRhL1dlYnNpdGVEYXRhUmVjb3JkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVJlY29yZC5jcHAJKHJldmlzaW9uIDIz
NTUzOSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
UmVjb3JkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzksMzAgKzc5LDI3IEBAIFN0cmluZyBXZWJz
aXRlRGF0YVJlY29yZDo6ZGlzcGxheU5hbWVGb3IKIAogdm9pZCBXZWJzaXRlRGF0YVJlY29yZDo6
YWRkKFdlYnNpdGVEYXRhVHlwZSB0eXBlLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGEmIG9yaWdpbikKIHsKLSAgICB0eXBlcyB8PSB0eXBlOwotCisgICAgdHlwZXMuYWRkKHR5cGUp
OwogICAgIG9yaWdpbnMuYWRkKG9yaWdpbik7CiB9CiAKIHZvaWQgV2Vic2l0ZURhdGFSZWNvcmQ6
OmFkZENvb2tpZUhvc3ROYW1lKGNvbnN0IFN0cmluZyYgaG9zdE5hbWUpCiB7Ci0gICAgdHlwZXMg
fD0gV2Vic2l0ZURhdGFUeXBlOjpDb29raWVzOwotCisgICAgdHlwZXMuYWRkKFdlYnNpdGVEYXRh
VHlwZTo6Q29va2llcyk7CiAgICAgY29va2llSG9zdE5hbWVzLmFkZChob3N0TmFtZSk7CiB9CiAK
ICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKIHZvaWQgV2Vic2l0ZURhdGFSZWNvcmQ6
OmFkZFBsdWdpbkRhdGFIb3N0TmFtZShjb25zdCBTdHJpbmcmIGhvc3ROYW1lKQogewotICAgIHR5
cGVzIHw9IFdlYnNpdGVEYXRhVHlwZTo6UGx1Z0luRGF0YTsKLQorICAgIHR5cGVzLmFkZChXZWJz
aXRlRGF0YVR5cGU6OlBsdWdJbkRhdGEpOwogICAgIHBsdWdpbkRhdGFIb3N0TmFtZXMuYWRkKGhv
c3ROYW1lKTsKIH0KICNlbmRpZgogCiB2b2lkIFdlYnNpdGVEYXRhUmVjb3JkOjphZGRIU1RTQ2Fj
aGVIb3N0bmFtZShjb25zdCBTdHJpbmcmIGhvc3ROYW1lKQogewotICAgIHR5cGVzIHw9IFdlYnNp
dGVEYXRhVHlwZTo6SFNUU0NhY2hlOworICAgIHR5cGVzLmFkZChXZWJzaXRlRGF0YVR5cGU6OkhT
VFNDYWNoZSk7CiAgICAgSFNUU0NhY2hlSG9zdE5hbWVzLmFkZChob3N0TmFtZSk7CiB9CiAKQEAg
LTE1Nyw4ICsxNTQsNyBAQCBTdHJpbmcgV2Vic2l0ZURhdGFSZWNvcmQ6OnRvcFByaXZhdGVseUNv
CiAKIHZvaWQgV2Vic2l0ZURhdGFSZWNvcmQ6OmFkZE9yaWdpbldpdGhDcmVkZW50aWFsKGNvbnN0
IFN0cmluZyYgb3JpZ2luKQogewotICAgIHR5cGVzIHw9IFdlYnNpdGVEYXRhVHlwZTo6Q3JlZGVu
dGlhbHM7Ci0KKyAgICB0eXBlcy5hZGQoV2Vic2l0ZURhdGFUeXBlOjpDcmVkZW50aWFscyk7CiAg
ICAgb3JpZ2luc1dpdGhDcmVkZW50aWFscy5hZGQob3JpZ2luKTsKIH0KIApJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLSW5zcGVjdG9yVmlld0NvbnRy
b2xsZXIubW0JKHJldmlzaW9uIDIzNTUzOSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21h
Yy9XS0luc3BlY3RvclZpZXdDb250cm9sbGVyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMzgsNyAr
MjM4LDcgQEAgLSAodm9pZClpbnNwZWN0b3JXS1dlYlZpZXdSZWxvYWQ6KFdLSW5zcAogCiAgICAg
T3B0aW9uU2V0PFdlYkNvcmU6OlJlbG9hZE9wdGlvbj4gcmVsb2FkT3B0aW9uczsKICAgICBpZiAo
V2ViS2l0OjpsaW5rZWRPbk9yQWZ0ZXIoV2ViS2l0OjpTREtWZXJzaW9uOjpGaXJzdFdpdGhFeHBp
cmVkT25seVJlbG9hZEJlaGF2aW9yKSkKLSAgICAgICAgcmVsb2FkT3B0aW9ucyB8PSBXZWJDb3Jl
OjpSZWxvYWRPcHRpb246OkV4cGlyZWRPbmx5OworICAgICAgICByZWxvYWRPcHRpb25zLmFkZChX
ZWJDb3JlOjpSZWxvYWRPcHRpb246OkV4cGlyZWRPbmx5KTsKIAogICAgIF9pbnNwZWN0ZWRQYWdl
LT5yZWxvYWQocmVsb2FkT3B0aW9ucyk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9Jbmpl
Y3RlZEJ1bmRsZU5vZGVIYW5kbGUuY3BwCShyZXZpc2lvbiAyMzU1MzkpCisrKyBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhhbmRs
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3MCw5ICsxNzAsOSBAQCBzdGF0aWMgUmVmUHRyPFdl
YkltYWdlPiBpbWFnZUZvclJlY3QoRnJhCiAKICAgICBhdXRvIHBhaW50QmVoYXZpb3IgPSBmcmFt
ZVZpZXctPnBhaW50QmVoYXZpb3IoKSB8IFBhaW50QmVoYXZpb3I6OkZsYXR0ZW5Db21wb3NpdGlu
Z0xheWVycyB8IFBhaW50QmVoYXZpb3I6OlNuYXBzaG90dGluZzsKICAgICBpZiAob3B0aW9ucyAm
IFNuYXBzaG90T3B0aW9uc0ZvcmNlQmxhY2tUZXh0KQotICAgICAgICBwYWludEJlaGF2aW9yIHw9
IFBhaW50QmVoYXZpb3I6OkZvcmNlQmxhY2tUZXh0OworICAgICAgICBwYWludEJlaGF2aW9yLmFk
ZChQYWludEJlaGF2aW9yOjpGb3JjZUJsYWNrVGV4dCk7CiAgICAgaWYgKG9wdGlvbnMgJiBTbmFw
c2hvdE9wdGlvbnNGb3JjZVdoaXRlVGV4dCkKLSAgICAgICAgcGFpbnRCZWhhdmlvciB8PSBQYWlu
dEJlaGF2aW9yOjpGb3JjZVdoaXRlVGV4dDsKKyAgICAgICAgcGFpbnRCZWhhdmlvci5hZGQoUGFp
bnRCZWhhdmlvcjo6Rm9yY2VXaGl0ZVRleHQpOwogCiAgICAgYXV0byBvbGRQYWludEJlaGF2aW9y
ID0gZnJhbWVWaWV3LT5wYWludEJlaGF2aW9yKCk7CiAgICAgZnJhbWVWaWV3LT5zZXRQYWludEJl
aGF2aW9yKHBhaW50QmVoYXZpb3IpOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVk
QnVuZGxlUmFuZ2VIYW5kbGUuY3BwCShyZXZpc2lvbiAyMzU1MzkpCisrKyBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTAsMTEgKzE1MCwxMiBAQCBSZWZQdHI8V2ViSW1hZ2U+
IEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kCiAgICAgZ3JhcGhpY3NDb250ZXh0LT50cmFuc2xhdGUo
LXBhaW50UmVjdC5sb2NhdGlvbigpKTsKIAogICAgIE9wdGlvblNldDxQYWludEJlaGF2aW9yPiBv
bGRQYWludEJlaGF2aW9yID0gZnJhbWVWaWV3LT5wYWludEJlaGF2aW9yKCk7Ci0gICAgT3B0aW9u
U2V0PFBhaW50QmVoYXZpb3I+IHBhaW50QmVoYXZpb3IgPSBvbGRQYWludEJlaGF2aW9yIHwgUGFp
bnRCZWhhdmlvcjo6U2VsZWN0aW9uT25seSB8IFBhaW50QmVoYXZpb3I6OkZsYXR0ZW5Db21wb3Np
dGluZ0xheWVycyB8IFBhaW50QmVoYXZpb3I6OlNuYXBzaG90dGluZzsKKyAgICBPcHRpb25TZXQ8
UGFpbnRCZWhhdmlvcj4gcGFpbnRCZWhhdmlvciA9IG9sZFBhaW50QmVoYXZpb3I7CisgICAgcGFp
bnRCZWhhdmlvci5hZGQoeyBQYWludEJlaGF2aW9yOjpTZWxlY3Rpb25Pbmx5LCBQYWludEJlaGF2
aW9yOjpGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMsIFBhaW50QmVoYXZpb3I6OlNuYXBzaG90dGlu
ZyB9KTsKICAgICBpZiAob3B0aW9ucyAmIFNuYXBzaG90T3B0aW9uc0ZvcmNlQmxhY2tUZXh0KQot
ICAgICAgICBwYWludEJlaGF2aW9yIHw9IFBhaW50QmVoYXZpb3I6OkZvcmNlQmxhY2tUZXh0Owor
ICAgICAgICBwYWludEJlaGF2aW9yLmFkZChQYWludEJlaGF2aW9yOjpGb3JjZUJsYWNrVGV4dCk7
CiAgICAgaWYgKG9wdGlvbnMgJiBTbmFwc2hvdE9wdGlvbnNGb3JjZVdoaXRlVGV4dCkKLSAgICAg
ICAgcGFpbnRCZWhhdmlvciB8PSBQYWludEJlaGF2aW9yOjpGb3JjZVdoaXRlVGV4dDsKKyAgICAg
ICAgcGFpbnRCZWhhdmlvci5hZGQoUGFpbnRCZWhhdmlvcjo6Rm9yY2VXaGl0ZVRleHQpOwogCiAg
ICAgZnJhbWVWaWV3LT5zZXRQYWludEJlaGF2aW9yKHBhaW50QmVoYXZpb3IpOwogICAgIG93bmVy
RG9jdW1lbnQudXBkYXRlTGF5b3V0KCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9GaW5kQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyMzU1MzkpCisr
KyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTU2LDE1ICs1NiwxNSBAQCBXZWJDb3JlOjpGaW5kT3B0aW9ucyBjb3Jl
KEZpbmRPcHRpb25zIG9wCiB7CiAgICAgV2ViQ29yZTo6RmluZE9wdGlvbnMgcmVzdWx0OwogICAg
IGlmIChvcHRpb25zICYgRmluZE9wdGlvbnNDYXNlSW5zZW5zaXRpdmUpCi0gICAgICAgIHJlc3Vs
dCB8PSBXZWJDb3JlOjpDYXNlSW5zZW5zaXRpdmU7CisgICAgICAgIHJlc3VsdC5hZGQoV2ViQ29y
ZTo6Q2FzZUluc2Vuc2l0aXZlKTsKICAgICBpZiAob3B0aW9ucyAmIEZpbmRPcHRpb25zQXRXb3Jk
U3RhcnRzKQotICAgICAgICByZXN1bHQgfD0gV2ViQ29yZTo6QXRXb3JkU3RhcnRzOworICAgICAg
ICByZXN1bHQuYWRkKFdlYkNvcmU6OkF0V29yZFN0YXJ0cyk7CiAgICAgaWYgKG9wdGlvbnMgJiBG
aW5kT3B0aW9uc1RyZWF0TWVkaWFsQ2FwaXRhbEFzV29yZFN0YXJ0KQotICAgICAgICByZXN1bHQg
fD0gV2ViQ29yZTo6VHJlYXRNZWRpYWxDYXBpdGFsQXNXb3JkU3RhcnQ7CisgICAgICAgIHJlc3Vs
dC5hZGQoV2ViQ29yZTo6VHJlYXRNZWRpYWxDYXBpdGFsQXNXb3JkU3RhcnQpOwogICAgIGlmIChv
cHRpb25zICYgRmluZE9wdGlvbnNCYWNrd2FyZHMpCi0gICAgICAgIHJlc3VsdCB8PSBXZWJDb3Jl
OjpCYWNrd2FyZHM7CisgICAgICAgIHJlc3VsdC5hZGQoV2ViQ29yZTo6QmFja3dhcmRzKTsKICAg
ICBpZiAob3B0aW9ucyAmIEZpbmRPcHRpb25zV3JhcEFyb3VuZCkKLSAgICAgICAgcmVzdWx0IHw9
IFdlYkNvcmU6OldyYXBBcm91bmQ7CisgICAgICAgIHJlc3VsdC5hZGQoV2ViQ29yZTo6V3JhcEFy
b3VuZCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMjA0LDcgKzIwNCw3IEBAIHZvaWQg
RmluZENvbnRyb2xsZXI6OmZpbmRTdHJpbmcoY29uc3QgU3QKICAgICAvLyB3ZSBuZWVkIHRvIGF2
b2lkIHNlbmRpbmcgdGhlIG5vbi1wYWludGVkIHNlbGVjdGlvbiBjaGFuZ2UgdG8gdGhlIFVJIHBy
b2Nlc3MKICAgICAvLyBzbyB0aGF0IGl0IGRvZXMgbm90IGNsZWFyIHRoZSBzZWxlY3Rpb24gb3V0
IGZyb20gdW5kZXIgdXMuCiAjaWYgUExBVEZPUk0oSU9TKQotICAgIGNvcmVPcHRpb25zIHw9IERv
Tm90UmV2ZWFsU2VsZWN0aW9uOworICAgIGNvcmVPcHRpb25zLmFkZChEb05vdFJldmVhbFNlbGVj
dGlvbik7CiAjZW5kaWYKIAogICAgIHdpbGxGaW5kU3RyaW5nKCk7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1RocmVhZGVkQ29vcmRp
bmF0ZWRMYXllclRyZWVIb3N0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRMYXll
clRyZWVIb3N0LmNwcAkocmV2aXNpb24gMjM1NTM5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9UaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJU
cmVlSG9zdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1Niw3ICsxNTYsNyBAQCB2b2lkIFRocmVh
ZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpzCiAKICAgICBtX3ZpZXdwb3J0Q29udHJvbGxl
ci5kaWRTY3JvbGwocmVjdC5sb2NhdGlvbigpKTsKICAgICBpZiAobV9pc0Rpc2NhcmRhYmxlKQot
ICAgICAgICBtX2Rpc2NhcmRhYmxlU3luY0FjdGlvbnMgfD0gRGlzY2FyZGFibGVTeW5jQWN0aW9u
czo6VXBkYXRlVmlld3BvcnQ7CisgICAgICAgIG1fZGlzY2FyZGFibGVTeW5jQWN0aW9ucy5hZGQo
RGlzY2FyZGFibGVTeW5jQWN0aW9uczo6VXBkYXRlVmlld3BvcnQpOwogICAgIGVsc2UKICAgICAg
ICAgZGlkQ2hhbmdlVmlld3BvcnQoKTsKIH0KQEAgLTE2NSw3ICsxNjUsNyBAQCB2b2lkIFRocmVh
ZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpjCiB7CiAgICAgbV92aWV3cG9ydENvbnRyb2xs
ZXIuZGlkQ2hhbmdlQ29udGVudHNTaXplKG5ld1NpemUpOwogICAgIGlmIChtX2lzRGlzY2FyZGFi
bGUpCi0gICAgICAgIG1fZGlzY2FyZGFibGVTeW5jQWN0aW9ucyB8PSBEaXNjYXJkYWJsZVN5bmNB
Y3Rpb25zOjpVcGRhdGVWaWV3cG9ydDsKKyAgICAgICAgbV9kaXNjYXJkYWJsZVN5bmNBY3Rpb25z
LmFkZChEaXNjYXJkYWJsZVN5bmNBY3Rpb25zOjpVcGRhdGVWaWV3cG9ydCk7CiAgICAgZWxzZQog
ICAgICAgICBkaWRDaGFuZ2VWaWV3cG9ydCgpOwogfQpAQCAtMTczLDcgKzE3Myw3IEBAIHZvaWQg
VGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmMKIHZvaWQgVGhyZWFkZWRDb29yZGlu
YXRlZExheWVyVHJlZUhvc3Q6OmRldmljZU9yUGFnZVNjYWxlRmFjdG9yQ2hhbmdlZCgpCiB7CiAg
ICAgaWYgKG1faXNEaXNjYXJkYWJsZSkgewotICAgICAgICBtX2Rpc2NhcmRhYmxlU3luY0FjdGlv
bnMgfD0gRGlzY2FyZGFibGVTeW5jQWN0aW9uczo6VXBkYXRlU2NhbGU7CisgICAgICAgIG1fZGlz
Y2FyZGFibGVTeW5jQWN0aW9ucy5hZGQoRGlzY2FyZGFibGVTeW5jQWN0aW9uczo6VXBkYXRlU2Nh
bGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xODcsNyArMTg3LDcgQEAgdm9pZCBU
aHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6ZAogdm9pZCBUaHJlYWRlZENvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdDo6cGFnZUJhY2tncm91bmRUcmFuc3BhcmVuY3lDaGFuZ2VkKCkKIHsK
ICAgICBpZiAobV9pc0Rpc2NhcmRhYmxlKSB7Ci0gICAgICAgIG1fZGlzY2FyZGFibGVTeW5jQWN0
aW9ucyB8PSBEaXNjYXJkYWJsZVN5bmNBY3Rpb25zOjpVcGRhdGVCYWNrZ3JvdW5kOworICAgICAg
ICBtX2Rpc2NhcmRhYmxlU3luY0FjdGlvbnMuYWRkKERpc2NhcmRhYmxlU3luY0FjdGlvbnM6OlVw
ZGF0ZUJhY2tncm91bmQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xOTgsNyArMTk4
LDcgQEAgdm9pZCBUaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6cAogdm9pZCBUaHJl
YWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6c2l6ZURpZENoYW5nZShjb25zdCBJbnRTaXpl
JiBzaXplKQogewogICAgIGlmIChtX2lzRGlzY2FyZGFibGUpIHsKLSAgICAgICAgbV9kaXNjYXJk
YWJsZVN5bmNBY3Rpb25zIHw9IERpc2NhcmRhYmxlU3luY0FjdGlvbnM6OlVwZGF0ZVNpemU7Cisg
ICAgICAgIG1fZGlzY2FyZGFibGVTeW5jQWN0aW9ucy5hZGQoRGlzY2FyZGFibGVTeW5jQWN0aW9u
czo6VXBkYXRlU2l6ZSk7CiAgICAgICAgIG1fdmlld3BvcnRDb250cm9sbGVyLmRpZENoYW5nZVZp
ZXdwb3J0U2l6ZShzaXplKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTIxOCw3ICsyMTgs
NyBAQCB2b2lkIFRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpkCiB7CiAgICAgbV92
aWV3cG9ydENvbnRyb2xsZXIuZGlkQ2hhbmdlVmlld3BvcnRBdHRyaWJ1dGVzKFdURk1vdmUoYXR0
cikpOwogICAgIGlmIChtX2lzRGlzY2FyZGFibGUpCi0gICAgICAgIG1fZGlzY2FyZGFibGVTeW5j
QWN0aW9ucyB8PSBEaXNjYXJkYWJsZVN5bmNBY3Rpb25zOjpVcGRhdGVWaWV3cG9ydDsKKyAgICAg
ICAgbV9kaXNjYXJkYWJsZVN5bmNBY3Rpb25zLmFkZChEaXNjYXJkYWJsZVN5bmNBY3Rpb25zOjpV
cGRhdGVWaWV3cG9ydCk7CiAgICAgZWxzZQogICAgICAgICBkaWRDaGFuZ2VWaWV3cG9ydCgpOwog
fQpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMjM1NTM5KQorKysg
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTUgQEAKKzIwMTgtMDgtMzEgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgor
CisgICAgICAgIFJlcGxhY2UgT3B0aW9uU2V0IHw9IGFuZCAtPSBvcGVyYXRvcnMgd2l0aCBhZGQo
KSBhbmQgcmVtb3ZlKCkgZnVuY3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xODkxNjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZy
YW1lIF9kcmF3UmVjdDpjb250ZW50c09ubHk6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3
Lm1tOgorICAgICAgICAoY29yZU9wdGlvbnMpOgorCiAyMDE4LTA4LTMxICBGcmVkZXJpYyBXYW5n
ICA8ZndhbmdAaWdhbGlhLmNvbT4KIAogICAgICAgICBCdWcgMTgyMDUzIC0gW0NTU09NIFZpZXdd
IEltcGxlbWVudCBzdGFuZGFyZCBiZWhhdmlvciBmb3Igc2Nyb2xsaW5nRWxlbWVudApJbmRleDog
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCShyZXZpc2lvbiAy
MzU1MzkpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC02NDksMTYgKzY0OSwxNiBAQCAtICh2b2lkKV9kcmF3UmVjdDooTlNS
ZWN0KXJlY3QgY29udGVudHNPCiAgICAgICAgIC8vIEZvciBzdWJmcmFtZXMsIHdlIG5lZWQgdG8g
aW5oZXJpdCB0aGUgcGFpbnQgYmVoYXZpb3IgZnJvbSBvdXIgcGFyZW50CiAgICAgICAgIGlmIChG
cmFtZVZpZXcqIHBhcmVudFZpZXcgPSBwYXJlbnRGcmFtZSA/IHBhcmVudEZyYW1lLT52aWV3KCkg
OiBudWxscHRyKSB7CiAgICAgICAgICAgICBpZiAocGFyZW50Vmlldy0+cGFpbnRCZWhhdmlvcigp
LmNvbnRhaW5zKFBhaW50QmVoYXZpb3I6OkZsYXR0ZW5Db21wb3NpdGluZ0xheWVycykpCi0gICAg
ICAgICAgICAgICAgcGFpbnRCZWhhdmlvciB8PSBQYWludEJlaGF2aW9yOjpGbGF0dGVuQ29tcG9z
aXRpbmdMYXllcnM7CisgICAgICAgICAgICAgICAgcGFpbnRCZWhhdmlvci5hZGQoUGFpbnRCZWhh
dmlvcjo6RmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzKTsKICAgICAgICAgICAgIAogICAgICAgICAg
ICAgaWYgKHBhcmVudFZpZXctPnBhaW50QmVoYXZpb3IoKS5jb250YWlucyhQYWludEJlaGF2aW9y
OjpTbmFwc2hvdHRpbmcpKQotICAgICAgICAgICAgICAgIHBhaW50QmVoYXZpb3IgfD0gUGFpbnRC
ZWhhdmlvcjo6U25hcHNob3R0aW5nOworICAgICAgICAgICAgICAgIHBhaW50QmVoYXZpb3IuYWRk
KFBhaW50QmVoYXZpb3I6OlNuYXBzaG90dGluZyk7CiAgICAgICAgICAgICAKICAgICAgICAgICAg
IGlmIChwYXJlbnRWaWV3LT5wYWludEJlaGF2aW9yKCkuY29udGFpbnMoUGFpbnRCZWhhdmlvcjo6
VGlsZUZpcnN0UGFpbnQpKQotICAgICAgICAgICAgICAgIHBhaW50QmVoYXZpb3IgfD0gUGFpbnRC
ZWhhdmlvcjo6VGlsZUZpcnN0UGFpbnQ7CisgICAgICAgICAgICAgICAgcGFpbnRCZWhhdmlvci5h
ZGQoUGFpbnRCZWhhdmlvcjo6VGlsZUZpcnN0UGFpbnQpOwogICAgICAgICB9CiAgICAgfSBlbHNl
Ci0gICAgICAgIHBhaW50QmVoYXZpb3IgfD0gW3NlbGYgX3BhaW50QmVoYXZpb3JGb3JEZXN0aW5h
dGlvbkNvbnRleHQ6Y3R4XTsKKyAgICAgICAgcGFpbnRCZWhhdmlvci5hZGQoW3NlbGYgX3BhaW50
QmVoYXZpb3JGb3JEZXN0aW5hdGlvbkNvbnRleHQ6Y3R4XSk7CiAgICAgICAgIAogICAgIHZpZXct
PnNldFBhaW50QmVoYXZpb3IocGFpbnRCZWhhdmlvcik7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHJldmlzaW9uIDIzNTUzOSkKKysrIFNvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAt
NTcxLDE3ICs1NzEsMTcgQEAgRmluZE9wdGlvbnMgY29yZU9wdGlvbnMoV2ViRmluZE9wdGlvbnMg
bwogewogICAgIEZpbmRPcHRpb25zIGZpbmRPcHRpb25zOwogICAgIGlmIChvcHRpb25zICYgV2Vi
RmluZE9wdGlvbnNDYXNlSW5zZW5zaXRpdmUpCi0gICAgICAgIGZpbmRPcHRpb25zIHw9IENhc2VJ
bnNlbnNpdGl2ZTsKKyAgICAgICAgZmluZE9wdGlvbnMuYWRkKENhc2VJbnNlbnNpdGl2ZSk7CiAg
ICAgaWYgKG9wdGlvbnMgJiBXZWJGaW5kT3B0aW9uc0F0V29yZFN0YXJ0cykKLSAgICAgICAgZmlu
ZE9wdGlvbnMgfD0gQXRXb3JkU3RhcnRzOworICAgICAgICBmaW5kT3B0aW9ucy5hZGQoQXRXb3Jk
U3RhcnRzKTsKICAgICBpZiAob3B0aW9ucyAmIFdlYkZpbmRPcHRpb25zVHJlYXRNZWRpYWxDYXBp
dGFsQXNXb3JkU3RhcnQpCi0gICAgICAgIGZpbmRPcHRpb25zIHw9IFRyZWF0TWVkaWFsQ2FwaXRh
bEFzV29yZFN0YXJ0OworICAgICAgICBmaW5kT3B0aW9ucy5hZGQoVHJlYXRNZWRpYWxDYXBpdGFs
QXNXb3JkU3RhcnQpOwogICAgIGlmIChvcHRpb25zICYgV2ViRmluZE9wdGlvbnNCYWNrd2FyZHMp
Ci0gICAgICAgIGZpbmRPcHRpb25zIHw9IEJhY2t3YXJkczsKKyAgICAgICAgZmluZE9wdGlvbnMu
YWRkKEJhY2t3YXJkcyk7CiAgICAgaWYgKG9wdGlvbnMgJiBXZWJGaW5kT3B0aW9uc1dyYXBBcm91
bmQpCi0gICAgICAgIGZpbmRPcHRpb25zIHw9IFdyYXBBcm91bmQ7CisgICAgICAgIGZpbmRPcHRp
b25zLmFkZChXcmFwQXJvdW5kKTsKICAgICBpZiAob3B0aW9ucyAmIFdlYkZpbmRPcHRpb25zU3Rh
cnRJblNlbGVjdGlvbikKLSAgICAgICAgZmluZE9wdGlvbnMgfD0gU3RhcnRJblNlbGVjdGlvbjsK
KyAgICAgICAgZmluZE9wdGlvbnMuYWRkKFN0YXJ0SW5TZWxlY3Rpb24pOwogICAgIHJldHVybiBm
aW5kT3B0aW9uczsKIH0KIApJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAJKHJl
dmlzaW9uIDIzNTUzOSkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zODMyLDExICszODMyLDExIEBAIEhSRVNVTFQgV2ViVmlldzo6c2Vh
cmNoRm9yKF9Jbl8gQlNUUiBzdHIKIAogICAgIEZpbmRPcHRpb25zIG9wdGlvbnM7CiAgICAgaWYg
KCFjYXNlRmxhZykKLSAgICAgICAgb3B0aW9ucyB8PSBDYXNlSW5zZW5zaXRpdmU7CisgICAgICAg
IG9wdGlvbnMuYWRkKENhc2VJbnNlbnNpdGl2ZSk7CiAgICAgaWYgKCFmb3J3YXJkKQotICAgICAg
ICBvcHRpb25zIHw9IEJhY2t3YXJkczsKKyAgICAgICAgb3B0aW9ucy5hZGQoQmFja3dhcmRzKTsK
ICAgICBpZiAod3JhcEZsYWcpCi0gICAgICAgIG9wdGlvbnMgfD0gV3JhcEFyb3VuZDsKKyAgICAg
ICAgb3B0aW9ucy5hZGQoV3JhcEFyb3VuZCk7CiAgICAgKmZvdW5kID0gbV9wYWdlLT5maW5kU3Ry
aW5nKHRvU3RyaW5nKHN0ciksIG9wdGlvbnMpOwogICAgIHJldHVybiBTX09LOwogfQpAQCAtMzkw
MSw3ICszOTAxLDcgQEAgSFJFU1VMVCBXZWJWaWV3OjptYXJrQWxsTWF0Y2hlc0ZvclRleHQoXwog
CiAgICAgV2ViQ29yZTo6RmluZE9wdGlvbnMgb3B0aW9uczsKICAgICBpZiAoIWNhc2VTZW5zaXRp
dmUpCi0gICAgICAgIG9wdGlvbnMgfD0gV2ViQ29yZTo6Q2FzZUluc2Vuc2l0aXZlOworICAgICAg
ICBvcHRpb25zLmFkZChXZWJDb3JlOjpDYXNlSW5zZW5zaXRpdmUpOwogCiAgICAgKm1hdGNoZXMg
PSBtX3BhZ2UtPm1hcmtBbGxNYXRjaGVzRm9yVGV4dCh0b1N0cmluZyhzdHIpLCBvcHRpb25zLCBo
aWdobGlnaHQsIGxpbWl0KTsKICAgICByZXR1cm4gU19PSzsKQEAgLTc4NDAsMTcgKzc4NDAsMTcg
QEAgSFJFU1VMVCBXZWJWaWV3OjpmaW5kU3RyaW5nKF9Jbl8gQlNUUiBzdAogICAgIFdlYkNvcmU6
OkZpbmRPcHRpb25zIGNvcmVPcHRpb25zOwogCiAgICAgaWYgKG9wdGlvbnMgJiBXZWJGaW5kT3B0
aW9uc0Nhc2VJbnNlbnNpdGl2ZSkKLSAgICAgICAgY29yZU9wdGlvbnMgfD0gV2ViQ29yZTo6Q2Fz
ZUluc2Vuc2l0aXZlOworICAgICAgICBjb3JlT3B0aW9ucy5hZGQoV2ViQ29yZTo6Q2FzZUluc2Vu
c2l0aXZlKTsKICAgICBpZiAob3B0aW9ucyAmIFdlYkZpbmRPcHRpb25zQXRXb3JkU3RhcnRzKQot
ICAgICAgICBjb3JlT3B0aW9ucyB8PSBXZWJDb3JlOjpBdFdvcmRTdGFydHM7CisgICAgICAgIGNv
cmVPcHRpb25zLmFkZChXZWJDb3JlOjpBdFdvcmRTdGFydHMpOwogICAgIGlmIChvcHRpb25zICYg
V2ViRmluZE9wdGlvbnNUcmVhdE1lZGlhbENhcGl0YWxBc1dvcmRTdGFydCkKLSAgICAgICAgY29y
ZU9wdGlvbnMgfD0gV2ViQ29yZTo6VHJlYXRNZWRpYWxDYXBpdGFsQXNXb3JkU3RhcnQ7CisgICAg
ICAgIGNvcmVPcHRpb25zLmFkZChXZWJDb3JlOjpUcmVhdE1lZGlhbENhcGl0YWxBc1dvcmRTdGFy
dCk7CiAgICAgaWYgKG9wdGlvbnMgJiBXZWJGaW5kT3B0aW9uc0JhY2t3YXJkcykKLSAgICAgICAg
Y29yZU9wdGlvbnMgfD0gV2ViQ29yZTo6QmFja3dhcmRzOworICAgICAgICBjb3JlT3B0aW9ucy5h
ZGQoV2ViQ29yZTo6QmFja3dhcmRzKTsKICAgICBpZiAob3B0aW9ucyAmIFdlYkZpbmRPcHRpb25z
V3JhcEFyb3VuZCkKLSAgICAgICAgY29yZU9wdGlvbnMgfD0gV2ViQ29yZTo6V3JhcEFyb3VuZDsK
KyAgICAgICAgY29yZU9wdGlvbnMuYWRkKFdlYkNvcmU6OldyYXBBcm91bmQpOwogICAgIGlmIChv
cHRpb25zICYgV2ViRmluZE9wdGlvbnNTdGFydEluU2VsZWN0aW9uKQotICAgICAgICBjb3JlT3B0
aW9ucyB8PSBXZWJDb3JlOjpTdGFydEluU2VsZWN0aW9uOworICAgICAgICBjb3JlT3B0aW9ucy5h
ZGQoV2ViQ29yZTo6U3RhcnRJblNlbGVjdGlvbik7CiAKICAgICAqZm91bmQgPSBtX3BhZ2UtPmZp
bmRTdHJpbmcodG9TdHJpbmcoc3RyaW5nKSwgY29yZU9wdGlvbnMpOwogICAgIHJldHVybiBTX09L
OwpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwko
cmV2aXNpb24gMjM1NTM5KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMTMgQEAKKzIwMTgtMDgtMzEgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29t
PgorCisgICAgICAgIFJlcGxhY2UgT3B0aW9uU2V0IHw9IGFuZCAtPSBvcGVyYXRvcnMgd2l0aCBh
ZGQoKSBhbmQgcmVtb3ZlKCkgZnVuY3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xODkxNjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL09wdGlvblNldC5j
cHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKwogMjAxOC0wOC0zMSAgRnJlZGVy
aWMgV2FuZyAgPGZ3YW5nQGlnYWxpYS5jb20+CiAKICAgICAgICAgQnVnIDE4MjA1MyAtIFtDU1NP
TSBWaWV3XSBJbXBsZW1lbnQgc3RhbmRhcmQgYmVoYXZpb3IgZm9yIHNjcm9sbGluZ0VsZW1lbnQK
SW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL09wdGlvblNldC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvT3B0aW9uU2V0LmNwcAkocmV2
aXNpb24gMjM1NTM5KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvT3B0aW9uU2V0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTYsMTYgKzk2LDI5IEBAIFRFU1QoV1RGX09wdGlvblNl
dCwgTWludXMpCiAgICAgRVhQRUNUX1RSVUUoKHNldCAtIHNldCkuaXNFbXB0eSgpKTsKIH0KIAot
VEVTVChXVEZfT3B0aW9uU2V0LCBNaW51c0VxdWFsKQorVEVTVChXVEZfT3B0aW9uU2V0LCBBZGRB
bmRSZW1vdmUpCiB7Ci0gICAgT3B0aW9uU2V0PEV4YW1wbGVGbGFncz4gc2V0IHsgRXhhbXBsZUZs
YWdzOjpBLCBFeGFtcGxlRmxhZ3M6OkIsIEV4YW1wbGVGbGFnczo6QyB9OworICAgIE9wdGlvblNl
dDxFeGFtcGxlRmxhZ3M+IHNldDsKIAotICAgIEVYUEVDVF9UUlVFKCgoc2V0IC09IEV4YW1wbGVG
bGFnczo6QSkgPT0gT3B0aW9uU2V0PEV4YW1wbGVGbGFncz4geyBFeGFtcGxlRmxhZ3M6OkIsIEV4
YW1wbGVGbGFnczo6QyB9KSk7Ci0gICAgRVhQRUNUX1RSVUUoKHNldCA9PSBPcHRpb25TZXQ8RXhh
bXBsZUZsYWdzPiB7IEV4YW1wbGVGbGFnczo6QiwgRXhhbXBsZUZsYWdzOjpDIH0pKTsKLSAgICBF
WFBFQ1RfVFJVRSgoKHNldCAtPSBFeGFtcGxlRmxhZ3M6OkQpID09IE9wdGlvblNldDxFeGFtcGxl
RmxhZ3M+IHsgRXhhbXBsZUZsYWdzOjpCLCBFeGFtcGxlRmxhZ3M6OkMgfSkpOwotICAgIEVYUEVD
VF9UUlVFKChzZXQgPT0gT3B0aW9uU2V0PEV4YW1wbGVGbGFncz4geyBFeGFtcGxlRmxhZ3M6OkIs
IEV4YW1wbGVGbGFnczo6QyB9KSk7Ci0gICAgRVhQRUNUX1RSVUUoKHNldCAtPSBzZXQpLmlzRW1w
dHkoKSk7Ci0gICAgRVhQRUNUX1RSVUUoc2V0LmlzRW1wdHkoKSk7CisgICAgc2V0LmFkZChFeGFt
cGxlRmxhZ3M6OkEpOworICAgIEVYUEVDVF9UUlVFKHNldC5jb250YWlucyhFeGFtcGxlRmxhZ3M6
OkEpKTsKKyAgICBFWFBFQ1RfRkFMU0Uoc2V0LmNvbnRhaW5zKEV4YW1wbGVGbGFnczo6QikpOwor
ICAgIEVYUEVDVF9GQUxTRShzZXQuY29udGFpbnMoRXhhbXBsZUZsYWdzOjpDKSk7CisKKyAgICBz
ZXQuYWRkKHsgRXhhbXBsZUZsYWdzOjpCLCBFeGFtcGxlRmxhZ3M6OkMgfSk7CisgICAgRVhQRUNU
X1RSVUUoc2V0LmNvbnRhaW5zKEV4YW1wbGVGbGFnczo6QSkpOworICAgIEVYUEVDVF9UUlVFKHNl
dC5jb250YWlucyhFeGFtcGxlRmxhZ3M6OkIpKTsKKyAgICBFWFBFQ1RfVFJVRShzZXQuY29udGFp
bnMoRXhhbXBsZUZsYWdzOjpDKSk7CisKKyAgICBzZXQucmVtb3ZlKEV4YW1wbGVGbGFnczo6Qik7
CisgICAgRVhQRUNUX1RSVUUoc2V0LmNvbnRhaW5zKEV4YW1wbGVGbGFnczo6QSkpOworICAgIEVY
UEVDVF9GQUxTRShzZXQuY29udGFpbnMoRXhhbXBsZUZsYWdzOjpCKSk7CisgICAgRVhQRUNUX1RS
VUUoc2V0LmNvbnRhaW5zKEV4YW1wbGVGbGFnczo6QykpOworCisgICAgc2V0LnJlbW92ZSh7IEV4
YW1wbGVGbGFnczo6QSwgRXhhbXBsZUZsYWdzOjpDIH0pOworICAgIEVYUEVDVF9GQUxTRShzZXQu
Y29udGFpbnMoRXhhbXBsZUZsYWdzOjpBKSk7CisgICAgRVhQRUNUX0ZBTFNFKHNldC5jb250YWlu
cyhFeGFtcGxlRmxhZ3M6OkIpKTsKKyAgICBFWFBFQ1RfRkFMU0Uoc2V0LmNvbnRhaW5zKEV4YW1w
bGVGbGFnczo6QykpOwogfQogCiBURVNUKFdURl9PcHRpb25TZXQsIENvbnRhaW5zVHdvRmxhZ3Mp
CkBAIC0xNDEsMTUgKzE1NCw2IEBAIFRFU1QoV1RGX09wdGlvblNldCwgQ29udGFpbnNUd29GbGFn
czMpCiAgICAgRVhQRUNUX0ZBTFNFKHNldC5jb250YWlucyhFeGFtcGxlRmxhZ3M6OkMpKTsKIH0K
IAotVEVTVChXVEZfT3B0aW9uU2V0LCBPcGVyYXRvckJpdHdpc2VPcikKLXsKLSAgICBPcHRpb25T
ZXQ8RXhhbXBsZUZsYWdzPiBzZXQgPSBFeGFtcGxlRmxhZ3M6OkE7Ci0gICAgc2V0IHw9IEV4YW1w
bGVGbGFnczo6QzsKLSAgICBFWFBFQ1RfVFJVRShzZXQuY29udGFpbnMoRXhhbXBsZUZsYWdzOjpB
KSk7Ci0gICAgRVhQRUNUX0ZBTFNFKHNldC5jb250YWlucyhFeGFtcGxlRmxhZ3M6OkIpKTsKLSAg
ICBFWFBFQ1RfVFJVRShzZXQuY29udGFpbnMoRXhhbXBsZUZsYWdzOjpDKSk7Ci19Ci0KIFRFU1Qo
V1RGX09wdGlvblNldCwgRW1wdHlPcHRpb25TZXRUb1Jhd1ZhbHVlVG9PcHRpb25TZXQpCiB7CiAg
ICAgT3B0aW9uU2V0PEV4YW1wbGVGbGFncz4gc2V0OwpAQCAtMzAyLDEwICszMDYsMTAgQEAgVEVT
VChXVEZfT3B0aW9uU2V0LCBOZXh0SXRlbUFmdGVyTGFyZ2VzdAogVEVTVChXVEZfT3B0aW9uU2V0
LCBJdGVyYXRpb25PcmRlclRoZVNhbWVSZWdhcmRsZXNzT2ZJbnNlcnRpb25PcmRlcikKIHsKICAg
ICBPcHRpb25TZXQ8RXhhbXBsZUZsYWdzPiBzZXQxID0gRXhhbXBsZUZsYWdzOjpDOwotICAgIHNl
dDEgfD0gRXhhbXBsZUZsYWdzOjpBOworICAgIHNldDEuYWRkKEV4YW1wbGVGbGFnczo6QSk7CiAK
ICAgICBPcHRpb25TZXQ8RXhhbXBsZUZsYWdzPiBzZXQyID0gRXhhbXBsZUZsYWdzOjpBOwotICAg
IHNldDIgfD0gRXhhbXBsZUZsYWdzOjpDOworICAgIHNldDIuYWRkKEV4YW1wbGVGbGFnczo6Qyk7
CiAKICAgICBPcHRpb25TZXQ8RXhhbXBsZUZsYWdzPjo6aXRlcmF0b3IgaXQxID0gc2V0MS5iZWdp
bigpOwogICAgIE9wdGlvblNldDxFeGFtcGxlRmxhZ3M+OjppdGVyYXRvciBpdDIgPSBzZXQyLmJl
Z2luKCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>