<?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>229757</bug_id>
          
          <creation_ts>2021-09-01 03:35:03 -0700</creation_ts>
          <short_desc>Implement libwebrtc network manager GetMdnsResponder</short_desc>
          <delta_ts>2021-09-08 00:08:59 -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>WebRTC</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=230021</see_also>
          <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="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>annulen</cc>
    
    <cc>cdumez</cc>
    
    <cc>crzwdjk</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hta</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kangil.han</cc>
    
    <cc>philipj</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>tommyw</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1789283</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-09-01 03:35:03 -0700</bug_when>
    <thetext>Implement libwebrtc network manager GetMdnsResponder.
This allows to integrate mDNS handling directly in libwebrtc backend</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1789290</commentid>
    <comment_count>1</comment_count>
      <attachid>437014</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-09-01 04:42:25 -0700</bug_when>
    <thetext>Created attachment 437014
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1789295</commentid>
    <comment_count>2</comment_count>
      <attachid>437016</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-09-01 04:55:29 -0700</bug_when>
    <thetext>Created attachment 437016
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1789296</commentid>
    <comment_count>3</comment_count>
      <attachid>437017</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-09-01 04:59:37 -0700</bug_when>
    <thetext>Created attachment 437017
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1789306</commentid>
    <comment_count>4</comment_count>
      <attachid>437023</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-09-01 06:21:00 -0700</bug_when>
    <thetext>Created attachment 437023
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1789308</commentid>
    <comment_count>5</comment_count>
      <attachid>437024</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-09-01 06:28:45 -0700</bug_when>
    <thetext>Created attachment 437024
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1789309</commentid>
    <comment_count>6</comment_count>
      <attachid>437025</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-09-01 06:47:25 -0700</bug_when>
    <thetext>Created attachment 437025
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1789313</commentid>
    <comment_count>7</comment_count>
      <attachid>437026</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-09-01 07:05:45 -0700</bug_when>
    <thetext>Created attachment 437026
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1789382</commentid>
    <comment_count>8</comment_count>
      <attachid>437046</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-09-01 11:31:55 -0700</bug_when>
    <thetext>Created attachment 437046
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1789454</commentid>
    <comment_count>9</comment_count>
      <attachid>437063</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-09-01 13:23:48 -0700</bug_when>
    <thetext>Created attachment 437063
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1789607</commentid>
    <comment_count>10</comment_count>
      <attachid>437117</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-09-02 00:00:42 -0700</bug_when>
    <thetext>Created attachment 437117
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1790615</commentid>
    <comment_count>11</comment_count>
      <attachid>437388</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-09-05 23:39:14 -0700</bug_when>
    <thetext>Created attachment 437388
Rebasing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1790616</commentid>
    <comment_count>12</comment_count>
      <attachid>437389</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-09-05 23:40:41 -0700</bug_when>
    <thetext>Created attachment 437389
Rebasing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1790634</commentid>
    <comment_count>13</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-09-06 01:49:10 -0700</bug_when>
    <thetext>Committed r282054 (241354@main): &lt;https://commits.webkit.org/241354@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 437389.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1790636</commentid>
    <comment_count>14</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-09-06 01:50:21 -0700</bug_when>
    <thetext>&lt;rdar://problem/82786787&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1791176</commentid>
    <comment_count>15</comment_count>
    <who name="Arcady Goldmints-Orlov">crzwdjk</who>
    <bug_when>2021-09-07 13:03:29 -0700</bug_when>
    <thetext>Looks like this has caused the test webrtc/ephemeral-certificates-and-cnames.html to become flaky, I think on all platforms. When it fails on GTK it fails like this:

--- /home/buildbot/worker/gtk-linux-64-release-tests/build/layout-test-results/webrtc/ephemeral-certificates-and-cnames-expected.txt
+++ /home/buildbot/worker/gtk-linux-64-release-tests/build/layout-test-results/webrtc/ephemeral-certificates-and-cnames-actual.txt
@@ -1,3 +1,7 @@
+CONSOLE MESSAGE: addIceCandidate error: OperationError: Error processing ICE candidate
+CONSOLE MESSAGE: Unhandled Promise Rejection: Error: assert_unreached: Reached unreachable code
+
+Harness Error (FAIL), message = assert_unreached: Reached unreachable code
 
 PASS Ensuring certificates and cnames are ephemerals</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1791388</commentid>
    <comment_count>16</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-09-08 00:08:59 -0700</bug_when>
    <thetext>(In reply to Arcady Goldmints-Orlov from comment #15)
&gt; Looks like this has caused the test
&gt; webrtc/ephemeral-certificates-and-cnames.html to become flaky, I think on
&gt; all platforms. When it fails on GTK it fails like this:
&gt; 
&gt; ---
&gt; /home/buildbot/worker/gtk-linux-64-release-tests/build/layout-test-results/
&gt; webrtc/ephemeral-certificates-and-cnames-expected.txt
&gt; +++
&gt; /home/buildbot/worker/gtk-linux-64-release-tests/build/layout-test-results/
&gt; webrtc/ephemeral-certificates-and-cnames-actual.txt
&gt; @@ -1,3 +1,7 @@
&gt; +CONSOLE MESSAGE: addIceCandidate error: OperationError: Error processing
&gt; ICE candidate
&gt; +CONSOLE MESSAGE: Unhandled Promise Rejection: Error: assert_unreached:
&gt; Reached unreachable code
&gt; +
&gt; +Harness Error (FAIL), message = assert_unreached: Reached unreachable code
&gt;  
&gt;  PASS Ensuring certificates and cnames are ephemerals

This should be handled by https://bugs.webkit.org/show_bug.cgi?id=229931</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>437014</attachid>
            <date>2021-09-01 04:42:25 -0700</date>
            <delta_ts>2021-09-01 05:11:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229757-20210901134223.patch</filename>
            <type>text/plain</type>
            <size>83242</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxNzkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWIwNDFiMmIwMGZmNmU4
Y2YwNTI3MjZmMWQ1NmUzMzQwNGM1NjAwNy4uNThjOWY3ZDhmZTMwZDZlNWYwZTY1OTkyNzFkNTgy
NDJhZmFlYmRlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDIxLTA5LTAxICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgbGlid2Vi
cnRjIG5ldHdvcmsgbWFuYWdlciBHZXRNZG5zUmVzcG9uZGVyCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjk3NTcKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgbGlid2VicnRjIG1ETlMgc3VwcG9ydCBp
bnN0ZWFkIG9mIGFwcGx5aW5nIGl0IHdpdGhpbiBQZWVyQ29ubmVjdGlvbkJhY2tlbmQuCisgICAg
ICAgIFRoaXMgYWxsb3dzIGEgYmV0dGVyIGludGVncmF0aW9uIGFuZCBpcyBtb3JlIGNvbnNpc3Rl
bnQgd2l0aCB0aGUgQVBJIGFuZCBvdGhlciBicm93c2Vycy4KKyAgICAgICAgRm9yIGluc3RhbmNl
IG1ETlMgY2FuZGlkYXRlcyBub3cgc2hvdyB1cCBpbiBsb2NhbCBkZXNjcmlwdGlvbnMuCisgICAg
ICAgIFdlIGludHJvZHVjZSBSVENOZXR3b3JrTWFuYWdlciB3aGljaCBpcyByZXNwb25zaWJsZSBm
b3IgV2ViUlRDIG5ldHdvcmsuCisgICAgICAgIFJUQ05ldHdvcmtNYW5hZ2VyIGlzIHJlc3BvbnNp
YmxlIG9mIGFsbCBwZWVyIGNvbm5lY3Rpb25zIG9mIGEgZG9jdW1lbnQuIEl0IGNhbiB0aHVzIHJl
dXNlIG1ETlMgbmFtZXMgZnJvbSBvbmUgY29ubmVjdGlvbiB0byBhbm90aGVyLgorICAgICAgICBX
aGVuIGRvY3VtZW50IGdvZXMgYXdheSwgUlRDTmV0d29ya01hbmFnZXIgbmVlZHMgdG8gdW5yZWdp
c3RlciBhbGwgbUROUyBuYW1lcy4KKyAgICAgICAgVXBkYXRlIGV4aXN0aW5nIFNEUCBhbmQgSUNF
IGNhbmRpZGF0ZSBmaWx0ZXJpbmcgY29kZSBieSBvbmx5IGtlZXBpbmcgZGVidWcgYXNzZXJ0IHRo
YXQgd2UgZG8gbm90IGxlYWsgcHJpdmF0ZSBJUCBhZGRyZXNzZXMgaW4gY2FzZSBJQ0UgZmlsdGVy
aW5nIGlzIG9uLgorICAgICAgICBDb3ZlcmVkIGJ5IHVwZGF0ZWQgYW5kIGV4aXN0aW5nIHRlc3Rz
LgorCisgICAgICAgICogSGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3Ry
ZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29u
bmVjdGlvbkJhY2tlbmQ6OmNyZWF0ZU9mZmVyU3VjY2VlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6
OlBlZXJDb25uZWN0aW9uQmFja2VuZDo6ZW5hYmxlSUNFQ2FuZGlkYXRlRmlsdGVyaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uQmFja2VuZDo6ZGlzYWJsZUlDRUNhbmRpZGF0
ZUZpbHRlcmluZyk6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OnZh
bGlkYXRlU0RQIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uQmFja2Vu
ZDo6bmV3SUNFQ2FuZGlkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uQmFj
a2VuZDo6ZG9uZUdhdGhlcmluZ0NhbmRpZGF0ZXMpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
dHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0NvbnRyb2xsZXI6
OmFkZCk6CisgICAgICAgIChXZWJDb3JlOjpSVENDb250cm9sbGVyOjpkaXNhYmxlSUNFQ2FuZGlk
YXRlRmlsdGVyaW5nRm9yQWxsT3JpZ2lucyk6CisgICAgICAgIChXZWJDb3JlOjpSVENDb250cm9s
bGVyOjpkaXNhYmxlSUNFQ2FuZGlkYXRlRmlsdGVyaW5nRm9yRG9jdW1lbnQpOgorICAgICAgICAo
V2ViQ29yZTo6UlRDQ29udHJvbGxlcjo6ZW5hYmxlSUNFQ2FuZGlkYXRlRmlsdGVyaW5nKToKKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ05ldHdvcmtNYW5hZ2VyLmg6IEFkZGVkLgor
ICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5k
cG9pbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6c2V0
Q29uZmlndXJhdGlvbik6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMv
TGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okxp
YldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6Y3VycmVudExvY2FsRGVzY3JpcHRpb24gY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpw
ZW5kaW5nTG9jYWxEZXNjcmlwdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJS
VENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmxvY2FsRGVzY3JpcHRpb24gY29uc3QpOgorICAgICAg
ICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBkb20vRG9j
dW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OndpbGxCZVJlbW92ZWRGcm9t
RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnN1c3BlbmQpOgorICAgICAgICAq
IGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJ0Y05ldHdvcmtN
YW5hZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzZXRSVENOZXR3b3JrTWFuYWdl
cik6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vTUROU1JlZ2lzdGVyRXJyb3IuaDog
QWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJU
Q1Byb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ1Byb3ZpZGVyOjpjcmVh
dGVQZWVyQ29ubmVjdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2Vi
cnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmg6CisKIDIwMjEtMDgtMzEgIFlvdWVubiBGYWJsZXQgIDx5
b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBzdXBwb3J0IGZvciBSVENTY3RwVHJhbnNw
b3J0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCmluZGV4IDYxZjdhZDFjYTg4N2Q1YmZkMjEyZjQzOTNkMGM1MmFlYWFjMGI1N2Iu
LmU0N2ZiZDg2N2JmZjk0YjI0NGM3YTU5MWU0YzEyZWViNmZjMTdhYzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNTYgQEAKKzIwMjEtMDktMDEgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29t
PgorCisgICAgICAgIEltcGxlbWVudCBsaWJ3ZWJydGMgbmV0d29yayBtYW5hZ2VyIEdldE1kbnNS
ZXNwb25kZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyOTc1NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEltcGxlbWVudCBSVENOZXR3b3JrTWFuYWdlciBBUEkgaW4gTGliV2ViUlRDTmV0d29ya01hbmFn
ZXIgdG8gaGFuZGxlIHBlci1kb2N1bWVudCBtRE5TIHJlZ2lzdHJhdGlvbnMuCisgICAgICAgIE1v
dmUgcGFydCBvZiBXZWJSVENNb25pdG9yIHRvIExpYldlYlJUQ05ldHdvcmtNYW5hZ2VyLgorICAg
ICAgICBMaWJXZWJSVENOZXR3b3JrTWFuYWdlciBpcyBhIFdlYlJUQ01vbml0b3Igb2JzZXJ2ZXIg
dG8gZ2V0IHRoZSBsaXN0IG9mIG5ldHdvcmtzLgorICAgICAgICBTaW5jZSBsaWJ3ZWJydGMgaXMg
bm93IGRvaW5nIHRoZSBtRE5TIHJlZ2lzdHJhdGlvbiwgd2UgbmVlZCB0byByZXR1cm4gYSBtRE5T
IG5hbWUgZXZlbiBpZiByZWdpc3RyYXRpb24gZmFpbGVkLgorICAgICAgICBXZSB1cGRhdGUgV2Vi
TUROU1JlZ2lzdGVyIGFuZCBOZXR3b3JrTUROU1JlZ2lzdGVyIGFjY29yZGluZ2x5LgorCisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtNRE5TUmVnaXN0ZXIuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpyZWdpc3Rlck1ETlNOYW1lQ2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrTUROU1JlZ2lzdGVyOjpyZWdpc3Rlck1ETlNOYW1lKToKKyAgICAgICAgKiBTb3Vy
Y2VzLnR4dDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ05ldHdvcmtNYW5hZ2Vy
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ05ldHdvcmtNYW5hZ2VyOjpn
ZXRPckNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ05ldHdvcmtNYW5hZ2VyOjpM
aWJXZWJSVENOZXR3b3JrTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ05ldHdv
cmtNYW5hZ2VyOjp+TGliV2ViUlRDTmV0d29ya01hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpM
aWJXZWJSVENOZXR3b3JrTWFuYWdlcjo6dW5yZWdpc3Rlck1ETlNOYW1lcyk6CisgICAgICAgIChX
ZWJLaXQ6OkxpYldlYlJUQ05ldHdvcmtNYW5hZ2VyOjpTdGFydFVwZGF0aW5nKToKKyAgICAgICAg
KFdlYktpdDo6TGliV2ViUlRDTmV0d29ya01hbmFnZXI6OlN0b3BVcGRhdGluZyk6CisgICAgICAg
IChXZWJLaXQ6OkxpYldlYlJUQ05ldHdvcmtNYW5hZ2VyOjpHZXRNZG5zUmVzcG9uZGVyIGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDTmV0d29ya01hbmFnZXI6Om5ldHdvcmtzQ2hh
bmdlZCk6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ05ldHdvcmtNYW5hZ2VyOjpuZXR3b3Jr
UHJvY2Vzc0NyYXNoZWQpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENOZXR3b3JrTWFuYWdl
cjo6Q3JlYXRlTmFtZUZvckFkZHJlc3MpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENOZXR3
b3JrTWFuYWdlcjo6UmVtb3ZlTmFtZUZvckFkZHJlc3MpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
TmV0d29yay93ZWJydGMvTGliV2ViUlRDTmV0d29ya01hbmFnZXIuaDogQWRkZWQuCisgICAgICAg
ICogV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkxpYldlYlJUQ1Byb3ZpZGVyOjpjcmVhdGVQZWVyQ29ubmVjdGlvbik6Cisg
ICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ1Byb3ZpZGVyOjpkaXNhYmxlTm9uTG9jYWxob3N0Q29u
bmVjdGlvbnMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRD
UHJvdmlkZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1dlYk1ETlNS
ZWdpc3Rlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYk1ETlNSZWdpc3Rlcjo6ZmluaXNoZWRS
ZWdpc3RlcmluZ01ETlNOYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViTUROU1JlZ2lzdGVyOjpy
ZWdpc3Rlck1ETlNOYW1lKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1dl
Yk1ETlNSZWdpc3Rlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvV2Vi
TUROU1JlZ2lzdGVyLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay93
ZWJydGMvV2ViUlRDTW9uaXRvci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJUQ01vbml0b3I6
OnN0YXJ0VXBkYXRpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJSVENNb25pdG9yOjpzdG9wVXBk
YXRpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJSVENNb25pdG9yOjpuZXR3b3Jrc0NoYW5nZWQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJSVENNb25pdG9yOjpuZXR3b3JrUHJvY2Vzc0NyYXNoZWQp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvV2ViUlRDTW9uaXRvci5oOgor
ICAgICAgICAoV2ViS2l0OjpXZWJSVENNb25pdG9yOjphZGRPYnNlcnZlcik6CisgICAgICAgIChX
ZWJLaXQ6OldlYlJUQ01vbml0b3I6OnJlbW92ZU9ic2VydmVyKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUlRDTW9uaXRvcjo6ZGlkUmVjZWl2ZU5ldHdvcmtMaXN0IGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViUlRDTW9uaXRvcjo6bmV0d29ya0xpc3QgY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpXZWJSVENNb25pdG9yOjppcHY0IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUlRDTW9u
aXRvcjo6aXB2NiBjb25zdCk6CisKIDIwMjEtMDgtMjYgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBw
bGUuY29tPgogCiAgICAgICAgIEN1dCBkb3duIG9uIHVzZSBvZiBDRkdldFR5cGVJRCwgdXNpbmcg
ZHluYW1pY19jZl9jYXN0IGluc3RlYWQ7IHJlbGF0ZWQgc3RyZWFtbGluaW5nCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5j
bWFrZQppbmRleCA3NmNlMGM2NjFmZWU4MzBkMTc2ZTM2MWY1Nzk4NzM1YzdhZTFlMGNlLi5mZDJk
MjhlZTA5ZjQwM2U2OTc3NTU3MWMzNGZiYTIzYTc2MjdjZDk5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UK
QEAgLTE0MzksNiArMTQzOSw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURF
UlMKICAgICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDTWFjcm9zLmgK
ICAgICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuaAog
ICAgIHBsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENTb2NrZXRJZGVudGlm
aWVyLmgKKyAgICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDVXRpbHMu
aAogCiAgICAgcGxhdGZvcm0vbW9jay9EZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suaAogICAg
IHBsYXRmb3JtL21vY2svTWVkaWFQbGF5YmFja1RhcmdldE1vY2suaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tl
bmQuY3BwCmluZGV4IDc5OWUxZDNkYWNjNDgxMDcyYzFiNTdiYWQxZTk1ZTA2ZDBhMDRjODEuLmVh
YjUxMTY4YTkwYjAxMDExZmJlNTI3ZTJkOGI1YWM3ZjllOGUwMWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFj
a2VuZC5jcHAKQEAgLTEwMiw3ICsxMDIsOCBAQCB2b2lkIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6
Y3JlYXRlT2ZmZXJTdWNjZWVkZWQoU3RyaW5nJiYgc2RwKQogICAgIEFMV0FZU19MT0coTE9HSURF
TlRJRklFUiwgIkNyZWF0ZSBvZmZlciBzdWNjZWVkZWQ6XG4iLCBzZHApOwogCiAgICAgQVNTRVJU
KG1fb2ZmZXJBbnN3ZXJQcm9taXNlKTsKLSAgICBtX3BlZXJDb25uZWN0aW9uLmRvVGFzayhbdGhp
cywgcHJvbWlzZSA9IFdURk1vdmUobV9vZmZlckFuc3dlclByb21pc2UpLCBzZHAgPSBmaWx0ZXJT
RFAoV1RGTW92ZShzZHApKV0oKSBtdXRhYmxlIHsKKyAgICB2YWxpZGF0ZVNEUChzZHApOworICAg
IG1fcGVlckNvbm5lY3Rpb24uZG9UYXNrKFt0aGlzLCBwcm9taXNlID0gV1RGTW92ZShtX29mZmVy
QW5zd2VyUHJvbWlzZSksIHNkcCA9IFdURk1vdmUoc2RwKV0oKSBtdXRhYmxlIHsKICAgICAgICAg
aWYgKG1fcGVlckNvbm5lY3Rpb24uaXNDbG9zZWQoKSkKICAgICAgICAgICAgIHJldHVybjsKIApA
QCAtMzcwLDg3ICszNzEsMjcgQEAgdm9pZCBQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmZpcmVJQ0VD
YW5kaWRhdGVFdmVudChSZWZQdHI8UlRDSWNlQ2FuZGlkYXRlPiYmIGNhbmQKIAogdm9pZCBQZWVy
Q29ubmVjdGlvbkJhY2tlbmQ6OmVuYWJsZUlDRUNhbmRpZGF0ZUZpbHRlcmluZygpCiB7CisjaWZu
ZGVmIE5ERUJVRwogICAgIG1fc2hvdWxkRmlsdGVySUNFQ2FuZGlkYXRlcyA9IHRydWU7CisjZW5k
aWYKIH0KIAogdm9pZCBQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmRpc2FibGVJQ0VDYW5kaWRhdGVG
aWx0ZXJpbmcoKQogeworI2lmbmRlZiBOREVCVUcKICAgICBtX3Nob3VsZEZpbHRlcklDRUNhbmRp
ZGF0ZXMgPSBmYWxzZTsKLSAgICBmb3IgKGF1dG8mIHBlbmRpbmdJQ0VDYW5kaWRhdGUgOiBtX3Bl
bmRpbmdJQ0VDYW5kaWRhdGVzKQotICAgICAgICBmaXJlSUNFQ2FuZGlkYXRlRXZlbnQoUlRDSWNl
Q2FuZGlkYXRlOjpjcmVhdGUoV1RGTW92ZShwZW5kaW5nSUNFQ2FuZGlkYXRlLnNkcCksIFdURk1v
dmUocGVuZGluZ0lDRUNhbmRpZGF0ZS5taWQpLCBwZW5kaW5nSUNFQ2FuZGlkYXRlLnNkcE1MaW5l
SW5kZXgpLCBXVEZNb3ZlKHBlbmRpbmdJQ0VDYW5kaWRhdGUuc2VydmVyVVJMKSk7Ci0gICAgbV9w
ZW5kaW5nSUNFQ2FuZGlkYXRlcy5jbGVhcigpOwotfQotCi1zdGF0aWMgU3RyaW5nIGZpbHRlcklD
RUNhbmRpZGF0ZShTdHJpbmcmJiBzZHApCi17Ci0gICAgQVNTRVJUKCFzZHAuY29udGFpbnMoIiBo
b3N0ICIpKTsKLQotICAgIGlmICghc2RwLmNvbnRhaW5zKCIgcmFkZHIgIikpCi0gICAgICAgIHJl
dHVybiBXVEZNb3ZlKHNkcCk7Ci0KLSAgICBib29sIHNraXBOZXh0SXRlbSA9IGZhbHNlOwotICAg
IGJvb2wgaXNGaXJzdCA9IHRydWU7Ci0gICAgU3RyaW5nQnVpbGRlciBmaWx0ZXJlZFNEUDsKLSAg
ICBzZHAuc3BsaXQoJyAnLCBbJl0oU3RyaW5nVmlldyBpdGVtKSB7Ci0gICAgICAgIGlmIChza2lw
TmV4dEl0ZW0pIHsKLSAgICAgICAgICAgIHNraXBOZXh0SXRlbSA9IGZhbHNlOwotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGlmIChpdGVtID09ICJyYWRkciIpIHsKLSAg
ICAgICAgICAgIGZpbHRlcmVkU0RQLmFwcGVuZCgiIHJhZGRyIDAuMC4wLjAiKTsKLSAgICAgICAg
ICAgIHNraXBOZXh0SXRlbSA9IHRydWU7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0K
LSAgICAgICAgaWYgKGl0ZW0gPT0gInJwb3J0IikgewotICAgICAgICAgICAgZmlsdGVyZWRTRFAu
YXBwZW5kKCIgcnBvcnQgMCIpOwotICAgICAgICAgICAgc2tpcE5leHRJdGVtID0gdHJ1ZTsKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBpZiAoaXNGaXJzdCkKLSAgICAg
ICAgICAgIGlzRmlyc3QgPSBmYWxzZTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgZmlsdGVy
ZWRTRFAuYXBwZW5kKCcgJyk7Ci0gICAgICAgIGZpbHRlcmVkU0RQLmFwcGVuZChpdGVtKTsKLSAg
ICB9KTsKLSAgICByZXR1cm4gZmlsdGVyZWRTRFAudG9TdHJpbmcoKTsKKyNlbmRpZgogfQogCi1T
dHJpbmcgUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpmaWx0ZXJTRFAoU3RyaW5nJiYgc2RwKSBjb25z
dAordm9pZCBQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OnZhbGlkYXRlU0RQKGNvbnN0IFN0cmluZyYg
c2RwKSBjb25zdAogeworI2lmbmRlZiBOREVCVUcKICAgICBpZiAoIW1fc2hvdWxkRmlsdGVySUNF
Q2FuZGlkYXRlcykKLSAgICAgICAgcmV0dXJuIFdURk1vdmUoc2RwKTsKLQotICAgIFN0cmluZ0J1
aWxkZXIgZmlsdGVyZWRTRFA7Ci0gICAgc2RwLnNwbGl0KCdcbicsIFt0aGlzLCAmZmlsdGVyZWRT
RFBdKFN0cmluZ1ZpZXcgbGluZSkgewotICAgICAgICBpZiAobGluZS5zdGFydHNXaXRoKCJjPUlO
IElQNCIpKSB7Ci0gICAgICAgICAgICBmaWx0ZXJlZFNEUC5hcHBlbmQoImM9SU4gSVA0IDAuMC4w
LjBcclxuIik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGxp
bmUuc3RhcnRzV2l0aCgiYz1JTiBJUDYiKSkgewotICAgICAgICAgICAgZmlsdGVyZWRTRFAuYXBw
ZW5kKCJjPUlOIElQNiA6OlxyXG4iKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQot
ICAgICAgICBpZiAoIWxpbmUuc3RhcnRzV2l0aCgiYT1jYW5kaWRhdGUiKSkgewotICAgICAgICAg
ICAgZmlsdGVyZWRTRFAuYXBwZW5kKGxpbmUpOwotICAgICAgICAgICAgZmlsdGVyZWRTRFAuYXBw
ZW5kKCdcbicpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGlmIChs
aW5lLmZpbmQoIiBob3N0ICIsIDExKSA9PSBub3RGb3VuZCkgewotICAgICAgICAgICAgZmlsdGVy
ZWRTRFAuYXBwZW5kKGZpbHRlcklDRUNhbmRpZGF0ZShsaW5lLnRvU3RyaW5nKCkpKTsKLSAgICAg
ICAgICAgIGZpbHRlcmVkU0RQLmFwcGVuZCgnXG4nKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgfQotCi0gICAgICAgIGF1dG8gaXBBZGRyZXNzID0gZXh0cmFjdElQQWRkcmVzcyhsaW5l
KTsKLSAgICAgICAgYXV0byBtZG5zTmFtZSA9IG1faXBBZGRyZXNzVG9NRE5TTmFtZU1hcC5nZXQo
aXBBZGRyZXNzKTsKLSAgICAgICAgaWYgKG1kbnNOYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgYXV0byBzZHAgPSBsaW5lLnRvU3RyaW5nKCk7Ci0gICAgICAgIHNk
cC5yZXBsYWNlKGlwQWRkcmVzcywgbWRuc05hbWUpOwotICAgICAgICBmaWx0ZXJlZFNEUC5hcHBl
bmQoc2RwKTsKLSAgICAgICAgZmlsdGVyZWRTRFAuYXBwZW5kKCdcbicpOworICAgICAgICByZXR1
cm47CisgICAgc2RwLnNwbGl0KCdcbicsIFtdKGF1dG8gbGluZSkgeworICAgICAgICBBU1NFUlQo
IWxpbmUuc3RhcnRzV2l0aCgiYT1jYW5kaWRhdGUiKSB8fCBsaW5lLmNvbnRhaW5zKCIubG9jYWwi
KSk7CiAgICAgfSk7Ci0gICAgcmV0dXJuIGZpbHRlcmVkU0RQLnRvU3RyaW5nKCk7CisjZW5kaWYK
IH0KIAogdm9pZCBQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6Om5ld0lDRUNhbmRpZGF0ZShTdHJpbmcm
JiBzZHAsIFN0cmluZyYmIG1pZCwgdW5zaWduZWQgc2hvcnQgc2RwTUxpbmVJbmRleCwgU3RyaW5n
JiYgc2VydmVyVVJMKQpAQCAtNDYwLDIyICs0MDEsOCBAQCB2b2lkIFBlZXJDb25uZWN0aW9uQmFj
a2VuZDo6bmV3SUNFQ2FuZGlkYXRlKFN0cmluZyYmIHNkcCwgU3RyaW5nJiYgbWlkLCB1bnNpZ25l
ZAogICAgICAgICBBTFdBWVNfTE9HKGxvZ1NpdGVJZGVudGlmaWVyLCAiR2F0aGVyZWQgaWNlIGNh
bmRpZGF0ZToiLCBzZHApOwogICAgICAgICBtX2ZpbmlzaGVkR2F0aGVyaW5nQ2FuZGlkYXRlcyA9
IGZhbHNlOwogCi0gICAgICAgIGlmICghbV9zaG91bGRGaWx0ZXJJQ0VDYW5kaWRhdGVzKSB7Ci0g
ICAgICAgICAgICBmaXJlSUNFQ2FuZGlkYXRlRXZlbnQoUlRDSWNlQ2FuZGlkYXRlOjpjcmVhdGUo
V1RGTW92ZShzZHApLCBXVEZNb3ZlKG1pZCksIHNkcE1MaW5lSW5kZXgpLCBXVEZNb3ZlKHNlcnZl
clVSTCkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGlmIChzZHAu
ZmluZCgiIGhvc3QgIiwgMCkgIT0gbm90Rm91bmQpIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBX
ZSBtaWdodCBuZWVkIHRvIGNsZWFyIGFsbCBwZW5kaW5nIGNhbmRpZGF0ZXMgd2hlbiBzZXR0aW5n
IGFnYWluIGxvY2FsIGRlc2NyaXB0aW9uLgotICAgICAgICAgICAgbV9wZW5kaW5nSUNFQ2FuZGlk
YXRlcy5hcHBlbmQoUGVuZGluZ0lDRUNhbmRpZGF0ZSB7IFN0cmluZyB7IHNkcCB9LCBXVEZNb3Zl
KG1pZCksIHNkcE1MaW5lSW5kZXgsIFdURk1vdmUoc2VydmVyVVJMKSB9KTsKLSAgICAgICAgICAg
IGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYlJUQ01ETlNJ
Q0VDYW5kaWRhdGVzRW5hYmxlZCgpKSB7Ci0gICAgICAgICAgICAgICAgYXV0byBpcEFkZHJlc3Mg
PSBleHRyYWN0SVBBZGRyZXNzKHNkcCk7Ci0gICAgICAgICAgICAgICAgLy8gV2UgcmVzdHJpY3Qg
dG8gSVB2NCBjYW5kaWRhdGVzIGZvciBub3cuCi0gICAgICAgICAgICAgICAgaWYgKGlwQWRkcmVz
cy5jb250YWlucygnLicpKQotICAgICAgICAgICAgICAgICAgICByZWdpc3Rlck1ETlNOYW1lKGlw
QWRkcmVzcyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0K
LSAgICAgICAgZmlyZUlDRUNhbmRpZGF0ZUV2ZW50KFJUQ0ljZUNhbmRpZGF0ZTo6Y3JlYXRlKGZp
bHRlcklDRUNhbmRpZGF0ZShXVEZNb3ZlKHNkcCkpLCBXVEZNb3ZlKG1pZCksIHNkcE1MaW5lSW5k
ZXgpLCBXVEZNb3ZlKHNlcnZlclVSTCkpOworICAgICAgICBBU1NFUlQoIW1fc2hvdWxkRmlsdGVy
SUNFQ2FuZGlkYXRlcyB8fCBzZHAuY29udGFpbnMoIi5sb2NhbCIpKTsKKyAgICAgICAgZmlyZUlD
RUNhbmRpZGF0ZUV2ZW50KFJUQ0ljZUNhbmRpZGF0ZTo6Y3JlYXRlKFdURk1vdmUoc2RwKSwgV1RG
TW92ZShtaWQpLCBzZHBNTGluZUluZGV4KSwgV1RGTW92ZShzZXJ2ZXJVUkwpKTsKICAgICB9KTsK
IH0KIApAQCAtNDg1LDEyICs0MTIsOCBAQCB2b2lkIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6ZG9u
ZUdhdGhlcmluZ0NhbmRpZGF0ZXMoKQogICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgIkZp
bmlzaGVkIGljZSBjYW5kaWRhdGUgZ2F0aGVyaW5nIik7CiAgICAgbV9maW5pc2hlZEdhdGhlcmlu
Z0NhbmRpZGF0ZXMgPSB0cnVlOwogCi0gICAgaWYgKG1fd2FpdGluZ0Zvck1ETlNSZWdpc3RyYXRp
b24pCi0gICAgICAgIHJldHVybjsKLQogICAgIG1fcGVlckNvbm5lY3Rpb24uZGlzcGF0Y2hFdmVu
dFdoZW5GZWFzaWJsZShSVENQZWVyQ29ubmVjdGlvbkljZUV2ZW50OjpjcmVhdGUoRXZlbnQ6OkNh
bkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vLCBudWxscHRyLCB7IH0pKTsKICAg
ICBtX3BlZXJDb25uZWN0aW9uLnVwZGF0ZUljZUdhdGhlcmluZ1N0YXRlKFJUQ0ljZUdhdGhlcmlu
Z1N0YXRlOjpDb21wbGV0ZSk7Ci0gICAgbV9wZW5kaW5nSUNFQ2FuZGlkYXRlcy5jbGVhcigpOwog
fQogCiB2b2lkIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6ZW5kT2ZJY2VDYW5kaWRhdGVzKERPTVBy
b21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UpCkBAIC00OTgsNDUgKzQyMSw2IEBAIHZvaWQg
UGVlckNvbm5lY3Rpb25CYWNrZW5kOjplbmRPZkljZUNhbmRpZGF0ZXMoRE9NUHJvbWlzZURlZmVy
cmVkPHZvaWQ+JiYgcHJvbWlzCiAgICAgcHJvbWlzZS5yZXNvbHZlKCk7CiB9CiAKLXZvaWQgUGVl
ckNvbm5lY3Rpb25CYWNrZW5kOjpyZWdpc3Rlck1ETlNOYW1lKGNvbnN0IFN0cmluZyYgaXBBZGRy
ZXNzKQotewotICAgICsrbV93YWl0aW5nRm9yTUROU1JlZ2lzdHJhdGlvbjsKLSAgICBhdXRvJiBk
b2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50PigqbV9wZWVyQ29ubmVjdGlvbi5zY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkpOwotICAgIGF1dG8mIHByb3ZpZGVyID0gZG9jdW1lbnQucGFnZSgpLT5s
aWJXZWJSVENQcm92aWRlcigpOwotICAgIHByb3ZpZGVyLnJlZ2lzdGVyTUROU05hbWUoZG9jdW1l
bnQuaWRlbnRpZmllcigpLCBpcEFkZHJlc3MsIFtwZWVyQ29ubmVjdGlvbiA9IG1ha2VSZWYobV9w
ZWVyQ29ubmVjdGlvbiksIHRoaXMsIGlwQWRkcmVzc10gKExpYldlYlJUQ1Byb3ZpZGVyOjpNRE5T
TmFtZU9yRXJyb3ImJiByZXN1bHQpIHsKLSAgICAgICAgaWYgKHBlZXJDb25uZWN0aW9uLT5pc1N0
b3BwZWQoKSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAtLW1fd2FpdGluZ0Zvck1E
TlNSZWdpc3RyYXRpb247Ci0gICAgICAgIGlmICghcmVzdWx0Lmhhc192YWx1ZSgpKSB7Ci0gICAg
ICAgICAgICBtX3BlZXJDb25uZWN0aW9uLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+YWRkQ29u
c29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgbWFr
ZVN0cmluZygiTUROUyByZWdpc3RyYXRpb24gb2YgYSBob3N0IGNhbmRpZGF0ZSBmYWlsZWQgd2l0
aCBlcnJvciAiLCAodW5zaWduZWQpcmVzdWx0LmVycm9yKCkpKTsKLSAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgfQotCi0gICAgICAgIHRoaXMtPmZpbmlzaGVkUmVnaXN0ZXJpbmdNRE5TTmFt
ZShpcEFkZHJlc3MsIHJlc3VsdC52YWx1ZSgpKTsKLSAgICB9KTsKLX0KLQotdm9pZCBQZWVyQ29u
bmVjdGlvbkJhY2tlbmQ6OmZpbmlzaGVkUmVnaXN0ZXJpbmdNRE5TTmFtZShjb25zdCBTdHJpbmcm
IGlwQWRkcmVzcywgY29uc3QgU3RyaW5nJiBuYW1lKQotewotICAgIG1faXBBZGRyZXNzVG9NRE5T
TmFtZU1hcC5hZGQoaXBBZGRyZXNzLCBuYW1lKTsKLSAgICBWZWN0b3I8UGVuZGluZ0lDRUNhbmRp
ZGF0ZSo+IGNhbmRpZGF0ZXM7Ci0gICAgZm9yIChhdXRvJiBjYW5kaWRhdGUgOiBtX3BlbmRpbmdJ
Q0VDYW5kaWRhdGVzKSB7Ci0gICAgICAgIGlmIChjYW5kaWRhdGUuc2RwLmZpbmQoaXBBZGRyZXNz
KSAhPSBub3RGb3VuZCkgewotICAgICAgICAgICAgYXV0byBzZHAgPSBjYW5kaWRhdGUuc2RwOwot
ICAgICAgICAgICAgc2RwLnJlcGxhY2UoaXBBZGRyZXNzLCBuYW1lKTsKLSAgICAgICAgICAgIGZp
cmVJQ0VDYW5kaWRhdGVFdmVudChSVENJY2VDYW5kaWRhdGU6OmNyZWF0ZShXVEZNb3ZlKHNkcCks
IFdURk1vdmUoY2FuZGlkYXRlLm1pZCksIGNhbmRpZGF0ZS5zZHBNTGluZUluZGV4KSwgV1RGTW92
ZShjYW5kaWRhdGUuc2VydmVyVVJMKSk7Ci0gICAgICAgICAgICBjYW5kaWRhdGVzLmFwcGVuZCgm
Y2FuZGlkYXRlKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBtX3BlbmRpbmdJQ0VDYW5kaWRhdGVz
LnJlbW92ZUFsbE1hdGNoaW5nKFsmXSAoY29uc3QgYXV0byYgY2FuZGlkYXRlKSB7Ci0gICAgICAg
IHJldHVybiBjYW5kaWRhdGVzLmNvbnRhaW5zKCZjYW5kaWRhdGUpOwotICAgIH0pOwotCi0gICAg
aWYgKCFtX3dhaXRpbmdGb3JNRE5TUmVnaXN0cmF0aW9uICYmIG1fZmluaXNoZWRHYXRoZXJpbmdD
YW5kaWRhdGVzKQotICAgICAgICBkb25lR2F0aGVyaW5nQ2FuZGlkYXRlcygpOwotfQotCiB2b2lk
IFBlZXJDb25uZWN0aW9uQmFja2VuZDo6dXBkYXRlU2lnbmFsaW5nU3RhdGUoUlRDU2lnbmFsaW5n
U3RhdGUgbmV3U2lnbmFsaW5nU3RhdGUpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5l
Y3Rpb25CYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJD
b25uZWN0aW9uQmFja2VuZC5oCmluZGV4IDFjMjU1NjYyNWVlYmMyZjc3NjIzOGE4MzVkMzc0OGIw
MTZhM2Y1NjQuLmZkZjVlNmM0M2Y0N2UwM2Q1NWFmYWUxMjU4M2UwZjRlZjA0MGFlMmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25C
YWNrZW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29u
bmVjdGlvbkJhY2tlbmQuaApAQCAtMjA5LDcgKzIwOSw3IEBAIHByb3RlY3RlZDoKICAgICB2b2lk
IGFkZEljZUNhbmRpZGF0ZVN1Y2NlZWRlZCgpOwogICAgIHZvaWQgYWRkSWNlQ2FuZGlkYXRlRmFp
bGVkKEV4Y2VwdGlvbiYmKTsKIAotICAgIFN0cmluZyBmaWx0ZXJTRFAoU3RyaW5nJiYpIGNvbnN0
OworICAgIHZvaWQgdmFsaWRhdGVTRFAoY29uc3QgU3RyaW5nJikgY29uc3Q7CiAKICAgICBzdHJ1
Y3QgUGVuZGluZ1RyYWNrRXZlbnQgewogICAgICAgICBSZWY8UlRDUnRwUmVjZWl2ZXI+IHJlY2Vp
dmVyOwpAQCAtMjI4LDggKzIyOCw2IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGVuZE9m
SWNlQ2FuZGlkYXRlcyhET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJik7CiAgICAgdmlydHVhbCB2
b2lkIGRvU3RvcCgpID0gMDsKIAotICAgIHZvaWQgcmVnaXN0ZXJNRE5TTmFtZShjb25zdCBTdHJp
bmcmIGlwQWRkcmVzcyk7Ci0KIHByb3RlY3RlZDoKICAgICBSVENQZWVyQ29ubmVjdGlvbiYgbV9w
ZWVyQ29ubmVjdGlvbjsKIApAQCAtMjM3LDI2ICsyMzUsMTggQEAgcHJpdmF0ZToKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8UGVlckNvbm5lY3Rpb246OlNlc3Npb25EZXNjcmlwdGlvblByb21pc2U+IG1f
b2ZmZXJBbnN3ZXJQcm9taXNlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxET01Qcm9taXNlRGVmZXJy
ZWQ8dm9pZD4+IG1fc2V0RGVzY3JpcHRpb25Qcm9taXNlOwogCi0gICAgYm9vbCBtX3Nob3VsZEZp
bHRlcklDRUNhbmRpZGF0ZXMgeyB0cnVlIH07Ci0gICAgc3RydWN0IFBlbmRpbmdJQ0VDYW5kaWRh
dGUgewotICAgICAgICAvLyBGaWVsZHMgZGVzY3JpYmVkIGluIGh0dHBzOi8vd3d3LnczLm9yZy9U
Ui93ZWJydGMvI2lkbC1kZWYtcnRjaWNlY2FuZGlkYXRlaW5pdC4KLSAgICAgICAgU3RyaW5nIHNk
cDsKLSAgICAgICAgU3RyaW5nIG1pZDsKLSAgICAgICAgdW5zaWduZWQgc2hvcnQgc2RwTUxpbmVJ
bmRleDsKLSAgICAgICAgU3RyaW5nIHNlcnZlclVSTDsKLSAgICB9OwotICAgIFZlY3RvcjxQZW5k
aW5nSUNFQ2FuZGlkYXRlPiBtX3BlbmRpbmdJQ0VDYW5kaWRhdGVzOworI2lmbmRlZiBOREVCVUcK
KyAgICBib29sIG1fc2hvdWxkRmlsdGVySUNFQ2FuZGlkYXRlcyB7IGZhbHNlIH07CisjZW5kaWYK
IAogICAgIFZlY3RvcjxQZW5kaW5nVHJhY2tFdmVudD4gbV9wZW5kaW5nVHJhY2tFdmVudHM7CiAK
LSAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBtX2lwQWRkcmVzc1RvTUROU05hbWVNYXA7CiAj
aWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgUmVmPGNvbnN0IExvZ2dlcj4gbV9sb2dnZXI7
CiAgICAgY29uc3Qgdm9pZCogbV9sb2dJZGVudGlmaWVyOwogI2VuZGlmCiAgICAgYm9vbCBtX25l
Z290aWF0aW9uTmVlZGVkIHsgZmFsc2UgfTsKICAgICBib29sIG1fZmluaXNoZWRHYXRoZXJpbmdD
YW5kaWRhdGVzIHsgZmFsc2UgfTsKLSAgICB1aW50NjRfdCBtX3dhaXRpbmdGb3JNRE5TUmVnaXN0
cmF0aW9uIHsgMCB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENDb250cm9sbGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDQ29udHJvbGxlci5jcHAKaW5kZXgg
NzBkNDBjNmJkNWIzMjYyZjJjZmU2MTVmYmMyYjQ1YzYyOWNjZjQzZS4uY2YzNDVhNDYyZmNkYjIx
MTlmN2ZiZGY1ZWJkZGYwMTQ1ZWJhNzZiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ0NvbnRyb2xsZXIuY3BwCkBAIC03Myw2ICs3MywxMCBAQCBi
b29sIFJUQ0NvbnRyb2xsZXI6OnNob3VsZERpc2FibGVJQ0VDYW5kaWRhdGVGaWx0ZXJpbmcoRG9j
dW1lbnQmIGRvY3VtZW50KQogCiB2b2lkIFJUQ0NvbnRyb2xsZXI6OmFkZChSVENQZWVyQ29ubmVj
dGlvbiYgY29ubmVjdGlvbikKIHsKKyAgICBhdXRvJiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3Vt
ZW50PigqY29ubmVjdGlvbi5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOworICAgIGlmIChhdXRv
KiBuZXR3b3JrTWFuYWdlciA9IGRvY3VtZW50LnJ0Y05ldHdvcmtNYW5hZ2VyKCkpCisgICAgICAg
IG5ldHdvcmtNYW5hZ2VyLT5zZXRJQ0VDYW5kaWRhdGVGaWx0ZXJpbmcoIXNob3VsZERpc2FibGVJ
Q0VDYW5kaWRhdGVGaWx0ZXJpbmcoZG9jdW1lbnQpKTsKKwogICAgIG1fcGVlckNvbm5lY3Rpb25z
LmFwcGVuZChjb25uZWN0aW9uKTsKICAgICBpZiAoc2hvdWxkRGlzYWJsZUlDRUNhbmRpZGF0ZUZp
bHRlcmluZyhkb3duY2FzdDxEb2N1bWVudD4oKmNvbm5lY3Rpb24uc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpKSkpCiAgICAgICAgIGNvbm5lY3Rpb24uZGlzYWJsZUlDRUNhbmRpZGF0ZUZpbHRlcmlu
ZygpOwpAQCAtODQsOCArODgsMTMgQEAgdm9pZCBSVENDb250cm9sbGVyOjpkaXNhYmxlSUNFQ2Fu
ZGlkYXRlRmlsdGVyaW5nRm9yQWxsT3JpZ2lucygpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1f
c2hvdWxkRmlsdGVySUNFQ2FuZGlkYXRlcyA9IGZhbHNlOwotICAgIGZvciAoUlRDUGVlckNvbm5l
Y3Rpb24mIGNvbm5lY3Rpb24gOiBtX3BlZXJDb25uZWN0aW9ucykKKyAgICBmb3IgKFJUQ1BlZXJD
b25uZWN0aW9uJiBjb25uZWN0aW9uIDogbV9wZWVyQ29ubmVjdGlvbnMpIHsKKyAgICAgICAgaWYg
KGF1dG8qIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbm5lY3Rpb24uc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpKSkgeworICAgICAgICAgICAgaWYgKGF1dG8qIG5ldHdvcmtNYW5hZ2Vy
ID0gZG9jdW1lbnQtPnJ0Y05ldHdvcmtNYW5hZ2VyKCkpCisgICAgICAgICAgICAgICAgbmV0d29y
a01hbmFnZXItPnNldElDRUNhbmRpZGF0ZUZpbHRlcmluZyhmYWxzZSk7CisgICAgICAgIH0KICAg
ICAgICAgY29ubmVjdGlvbi5kaXNhYmxlSUNFQ2FuZGlkYXRlRmlsdGVyaW5nKCk7CisgICAgfQog
fQogCiB2b2lkIFJUQ0NvbnRyb2xsZXI6OmRpc2FibGVJQ0VDYW5kaWRhdGVGaWx0ZXJpbmdGb3JE
b2N1bWVudChEb2N1bWVudCYgZG9jdW1lbnQpCkBAIC05MywxMSArMTAyLDE3IEBAIHZvaWQgUlRD
Q29udHJvbGxlcjo6ZGlzYWJsZUlDRUNhbmRpZGF0ZUZpbHRlcmluZ0ZvckRvY3VtZW50KERvY3Vt
ZW50JiBkb2N1bWVudCkKICAgICBpZiAoIUxpYldlYlJUQ1Byb3ZpZGVyOjp3ZWJSVENBdmFpbGFi
bGUoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgaWYgKGF1dG8qIG5ldHdvcmtNYW5hZ2VyID0g
ZG9jdW1lbnQucnRjTmV0d29ya01hbmFnZXIoKSkKKyAgICAgICAgbmV0d29ya01hbmFnZXItPnNl
dElDRUNhbmRpZGF0ZUZpbHRlcmluZyhmYWxzZSk7CisKICAgICBtX2ZpbHRlcmluZ0Rpc2FibGVk
T3JpZ2lucy5hcHBlbmQoUGVlckNvbm5lY3Rpb25PcmlnaW4geyBkb2N1bWVudC50b3BPcmlnaW4o
KSwgZG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4oKSB9KTsKICAgICBmb3IgKFJUQ1BlZXJDb25uZWN0
aW9uJiBjb25uZWN0aW9uIDogbV9wZWVyQ29ubmVjdGlvbnMpIHsKICAgICAgICAgaWYgKGF1dG8q
IHBlZXJDb25uZWN0aW9uRG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oY29ubmVjdGlvbi5z
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkpKSB7Ci0gICAgICAgICAgICBpZiAobWF0Y2hEb2N1bWVu
dE9yaWdpbigqcGVlckNvbm5lY3Rpb25Eb2N1bWVudCwgZG9jdW1lbnQudG9wT3JpZ2luKCksIGRv
Y3VtZW50LnNlY3VyaXR5T3JpZ2luKCkpKQorICAgICAgICAgICAgaWYgKG1hdGNoRG9jdW1lbnRP
cmlnaW4oKnBlZXJDb25uZWN0aW9uRG9jdW1lbnQsIGRvY3VtZW50LnRvcE9yaWdpbigpLCBkb2N1
bWVudC5zZWN1cml0eU9yaWdpbigpKSkgeworICAgICAgICAgICAgICAgIGlmIChhdXRvKiBuZXR3
b3JrTWFuYWdlciA9IHBlZXJDb25uZWN0aW9uRG9jdW1lbnQtPnJ0Y05ldHdvcmtNYW5hZ2VyKCkp
CisgICAgICAgICAgICAgICAgICAgIG5ldHdvcmtNYW5hZ2VyLT5zZXRJQ0VDYW5kaWRhdGVGaWx0
ZXJpbmcoZmFsc2UpOwogICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24uZGlzYWJsZUlDRUNhbmRp
ZGF0ZUZpbHRlcmluZygpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogfQpAQCAt
MTA5LDggKzEyNCwxMyBAQCB2b2lkIFJUQ0NvbnRyb2xsZXI6OmVuYWJsZUlDRUNhbmRpZGF0ZUZp
bHRlcmluZygpCiAKICAgICBtX2ZpbHRlcmluZ0Rpc2FibGVkT3JpZ2lucy5jbGVhcigpOwogICAg
IG1fc2hvdWxkRmlsdGVySUNFQ2FuZGlkYXRlcyA9IHRydWU7Ci0gICAgZm9yIChSVENQZWVyQ29u
bmVjdGlvbiYgY29ubmVjdGlvbiA6IG1fcGVlckNvbm5lY3Rpb25zKQorICAgIGZvciAoUlRDUGVl
ckNvbm5lY3Rpb24mIGNvbm5lY3Rpb24gOiBtX3BlZXJDb25uZWN0aW9ucykgewogICAgICAgICBj
b25uZWN0aW9uLmVuYWJsZUlDRUNhbmRpZGF0ZUZpbHRlcmluZygpOworICAgICAgICBpZiAoYXV0
byogZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oY29ubmVjdGlvbi5zY3JpcHRFeGVjdXRp
b25Db250ZXh0KCkpKSB7CisgICAgICAgICAgICBpZiAoYXV0byogbmV0d29ya01hbmFnZXIgPSBk
b2N1bWVudC0+cnRjTmV0d29ya01hbmFnZXIoKSkKKyAgICAgICAgICAgICAgICBuZXR3b3JrTWFu
YWdlci0+c2V0SUNFQ2FuZGlkYXRlRmlsdGVyaW5nKHRydWUpOworICAgICAgICB9CisgICAgfQog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ05ldHdvcmtNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ05ldHdvcmtNYW5hZ2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWYzNmZk
NDYxZjgxYWJiYTJjMDJiYjgxZjFmYjVmOTk3ODAyNWZkMAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDTmV0d29ya01hbmFnZXIuaApAQCAt
MCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwor
ICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdF
Ql9SVEMpCisKKyNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBSVENOZXR3b3JrTWFuYWdlciA6IHB1YmxpYyBUaHJlYWRT
YWZlUmVmQ291bnRlZDxSVENOZXR3b3JrTWFuYWdlciwgV1RGOjpEZXN0cnVjdGlvblRocmVhZDo6
TWFpblJ1bkxvb3A+IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5SVENOZXR3b3JrTWFuYWdlcigp
ID0gZGVmYXVsdDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0SUNFQ2FuZGlkYXRlRmlsdGVyaW5nKGJv
b2wpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3Rlck1ETlNOYW1lcygpID0gMDsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfUlRDKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMv
TGliV2ViUlRDTWVkaWFFbmRwb2ludC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmNwcAppbmRleCA1M2M0NGFk
ZjEyYTliZWQ3NGNhNWRiOGE5NTY4MDIzZDg5OTI2NjU1Li4yMjA4N2EzNjJkZjZjODkwYjU5OWIx
MWZkMWQ0NDU4ZTllYjhhMTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVu
ZHBvaW50LmNwcApAQCAtOTMsMTUgKzkzLDE1IEBAIGJvb2wgTGliV2ViUlRDTWVkaWFFbmRwb2lu
dDo6c2V0Q29uZmlndXJhdGlvbihMaWJXZWJSVENQcm92aWRlciYgY2xpZW50LCB3ZWJydGM6CiAg
ICAgY29uZmlndXJhdGlvbi5zZHBfc2VtYW50aWNzID0gd2VicnRjOjpTZHBTZW1hbnRpY3M6OmtV
bmlmaWVkUGxhbjsKIAogICAgIGlmICghbV9iYWNrZW5kKSB7CisgICAgICAgIGF1dG8mIGRvY3Vt
ZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KCptX3BlZXJDb25uZWN0aW9uQmFja2VuZC5jb25uZWN0
aW9uKCkuc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICAgICAgaWYgKCFtX3J0Y1NvY2tl
dEZhY3RvcnkpIHsKLSAgICAgICAgICAgIGF1dG8mIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1l
bnQ+KCptX3BlZXJDb25uZWN0aW9uQmFja2VuZC5jb25uZWN0aW9uKCkuc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpKTsKICAgICAgICAgICAgIFJlZ2lzdHJhYmxlRG9tYWluIGRvbWFpbiB7IGRvY3Vt
ZW50LnVybCgpIH07CiAgICAgICAgICAgICBib29sIGlzRmlyc3RQYXJ0eSA9IGRvbWFpbiA9PSBS
ZWdpc3RyYWJsZURvbWFpbihkb2N1bWVudC5maXJzdFBhcnR5Rm9yQ29va2llcygpKTsKICAgICAg
ICAgICAgIG1fcnRjU29ja2V0RmFjdG9yeSA9IGNsaWVudC5jcmVhdGVTb2NrZXRGYWN0b3J5KGRv
Y3VtZW50LnVzZXJBZ2VudChkb2N1bWVudC51cmwoKSksIGlzRmlyc3RQYXJ0eSwgV1RGTW92ZShk
b21haW4pKTsKICAgICAgICAgICAgIGlmICghbV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQuc2hvdWxk
RmlsdGVySUNFQ2FuZGlkYXRlcygpKQogICAgICAgICAgICAgICAgIG1fcnRjU29ja2V0RmFjdG9y
eS0+ZGlzYWJsZVJlbGF5KCk7CiAgICAgICAgIH0KLSAgICAgICAgbV9iYWNrZW5kID0gY2xpZW50
LmNyZWF0ZVBlZXJDb25uZWN0aW9uKCp0aGlzLCBtX3J0Y1NvY2tldEZhY3RvcnkuZ2V0KCksIFdU
Rk1vdmUoY29uZmlndXJhdGlvbikpOworICAgICAgICBtX2JhY2tlbmQgPSBjbGllbnQuY3JlYXRl
UGVlckNvbm5lY3Rpb24oZG9jdW1lbnQuaWRlbnRpZmllcigpLCAqdGhpcywgbV9ydGNTb2NrZXRG
YWN0b3J5LmdldCgpLCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKTsKICAgICAgICAgcmV0dXJuICEh
bV9iYWNrZW5kOwogICAgIH0KICAgICBhdXRvIG9sZENvbmZpZ3VyYXRpb24gPSBtX2JhY2tlbmQt
PkdldENvbmZpZ3VyYXRpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQ
ZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwCmluZGV4IDU5NjAyYjA5YWVjOWUwYWJiM2QyMjdjMzBm
OTI4OTRkNGJhNmQ2MjQuLmM2OWUwYzZkN2JlNzBiZTFkNzAxMzA4MTM3ZDhlMzVjZmUyYmUzYmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRj
L0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNr
ZW5kLmNwcApAQCAtMzEwLDcgKzMxMCw3IEBAIFJlZlB0cjxSVENTZXNzaW9uRGVzY3JpcHRpb24+
IExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6Y3VycmVudExvY2FsRGVzY3JpCiB7CiAg
ICAgYXV0byBkZXNjcmlwdGlvbiA9IG1fZW5kcG9pbnQtPmN1cnJlbnRMb2NhbERlc2NyaXB0aW9u
KCk7CiAgICAgaWYgKGRlc2NyaXB0aW9uKQotICAgICAgICBkZXNjcmlwdGlvbi0+c2V0U2RwKGZp
bHRlclNEUChTdHJpbmcoZGVzY3JpcHRpb24tPnNkcCgpKSkpOworICAgICAgICB2YWxpZGF0ZVNE
UChkZXNjcmlwdGlvbi0+c2RwKCkpOwogICAgIHJldHVybiBkZXNjcmlwdGlvbjsKIH0KIApAQCAt
MzIzLDcgKzMyMyw3IEBAIFJlZlB0cjxSVENTZXNzaW9uRGVzY3JpcHRpb24+IExpYldlYlJUQ1Bl
ZXJDb25uZWN0aW9uQmFja2VuZDo6cGVuZGluZ0xvY2FsRGVzY3JpCiB7CiAgICAgYXV0byBkZXNj
cmlwdGlvbiA9IG1fZW5kcG9pbnQtPnBlbmRpbmdMb2NhbERlc2NyaXB0aW9uKCk7CiAgICAgaWYg
KGRlc2NyaXB0aW9uKQotICAgICAgICBkZXNjcmlwdGlvbi0+c2V0U2RwKGZpbHRlclNEUChTdHJp
bmcoZGVzY3JpcHRpb24tPnNkcCgpKSkpOworICAgICAgICB2YWxpZGF0ZVNEUChkZXNjcmlwdGlv
bi0+c2RwKCkpOwogICAgIHJldHVybiBkZXNjcmlwdGlvbjsKIH0KIApAQCAtMzM2LDcgKzMzNiw3
IEBAIFJlZlB0cjxSVENTZXNzaW9uRGVzY3JpcHRpb24+IExpYldlYlJUQ1BlZXJDb25uZWN0aW9u
QmFja2VuZDo6bG9jYWxEZXNjcmlwdGlvbigpCiB7CiAgICAgYXV0byBkZXNjcmlwdGlvbiA9IG1f
ZW5kcG9pbnQtPmxvY2FsRGVzY3JpcHRpb24oKTsKICAgICBpZiAoZGVzY3JpcHRpb24pCi0gICAg
ICAgIGRlc2NyaXB0aW9uLT5zZXRTZHAoZmlsdGVyU0RQKFN0cmluZyhkZXNjcmlwdGlvbi0+c2Rw
KCkpKSk7CisgICAgICAgIHZhbGlkYXRlU0RQKGRlc2NyaXB0aW9uLT5zZHAoKSk7CiAgICAgcmV0
dXJuIGRlc2NyaXB0aW9uOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOWNmYzVmMjVkMDRmZWJkMjliMmMxZjRmZTBkYjE4
OGMwNGExMTUwNi4uNWIyYjU5MTMxY2NhYmE4MWZmZjYyMjAyNTlhNWI5MDQ1NWUyOTU3YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtMTE3Miw2ICsxMTcyLDkgQEAKIAkJNDFCODc3NjIyM0RFMTA0NTAwMzYzOEI4IC8qIFJlYWx0
aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0MUI4Nzc2MDIzREUxMDQyMDAzNjM4QjggLyogUmVhbHRpbWVNZWRp
YVNvdXJjZUlkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk0MUJCQTg2NjI1N0UzNzNCMDBBQzdGNkQgLyogU0ZyYW1lVXRpbHMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMjA5RTI0MjU3
QTJGQkIwMDEyMEFDQSAvKiBTRnJhbWVVdGlscy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxQkYyMDQ5MjJCQTdCRTgwMDA0RjgxMiAvKiBSZWFs
dGltZVZpZGVvU291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0MUJGMjA0MDIyQjk0NzE2MDAwNEY4MTIgLyogUmVhbHRpbWVWaWRlb1NvdXJjZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQxQzE0
QkM2MjZERTZERTgwMDY4NUJGNSAvKiBSVENOZXR3b3JrTWFuYWdlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFDMTRCQzQyNkRFNkRFODAwNjg1QkY1
IC8qIFJUQ05ldHdvcmtNYW5hZ2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJNDFDMTRCQzcyNkRFODU4NDAwNjg1QkY1IC8qIExpYldlYlJUQ1V0
aWxzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUQx
QTA0QzIxM0VEREZGMDA2M0ZCNkIgLyogTGliV2ViUlRDVXRpbHMuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0MUMxNEJDOTI2REY3OUQ3MDA2ODVC
RjUgLyogTUROU1JlZ2lzdGVyRXJyb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQxQzE0QkM4MjZERjc5RDYwMDY4NUJGNSAvKiBNRE5TUmVnaXN0ZXJF
cnJvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTQxQzNCOEExMjY0OUIxRTAwMDRFRDRERSAvKiBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJl
ckludGVybmFsVW5pdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDFDM0I4OUYyNjQ5QjFCNzAwNEVENERFIC8qIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVySW50ZXJuYWxVbml0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNDFDM0I4QTIyNjQ5QjFFNTAwNEVENERFIC8qIEF1ZGlvTWVkaWFTdHJl
YW1UcmFja1JlbmRlcmVyVW5pdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDFDM0I4OUIyNjQ5QjFCNjAwNEVENERFIC8qIEF1ZGlvTWVkaWFTdHJlYW1U
cmFja1JlbmRlcmVyVW5pdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTQxQzc2MEIxMEVERTAzRDMwMEMxNjU1RiAvKiBTY3JpcHRTdGF0ZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFDNzYwQjAwRURF
MDNEMzAwQzE2NTVGIC8qIFNjcmlwdFN0YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTgwNDQsNiArODA0Nyw4IEBACiAJCTQxQkNFODc3MjVG
N0E2N0EwMDQ2QzJFNSAvKiBSVENUcmFuc2Zvcm1FdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBSVENUcmFuc2Zvcm1FdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0MUJGMjA0MDIyQjk0NzE2MDAwNEY4MTIgLyogUmVhbHRpbWVWaWRlb1NvdXJjZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBSZWFsdGltZVZpZGVvU291cmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQxQkYyMDQyMjJCOTQ3MTcwMDA0RjgxMiAvKiBSZWFsdGltZVZpZGVvU291
cmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUMxNEJDNDI2REU2REU4MDA2ODVCRjUgLyogUlRD
TmV0d29ya01hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUlRDTmV0
d29ya01hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFDMTRCQzgyNkRG
NzlENjAwNjg1QkY1IC8qIE1ETlNSZWdpc3RlckVycm9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IE1ETlNSZWdpc3RlckVycm9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQxQzNCODlCMjY0OUIxQjYwMDRFRDRERSAvKiBBdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlclVuaXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVy
ZXJVbml0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQzNCODlDMjY0OUIxQjYw
MDRFRDRERSAvKiBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29hLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2EuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDFDM0I4OUQyNjQ5QjFCNjAwNEVENERFIC8qIEF1ZGlvTWVkaWFT
dHJlYW1UcmFja1JlbmRlcmVyQ29jb2EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0xNzI1NCw2ICsxNzI1OSw3IEBACiAJCQkJMzE2RENCODkxRTdBNjk5NjAwMUI1Rjg3IC8q
IFJUQ0ljZVRyYW5zcG9ydC5pZGwgKi8sCiAJCQkJNDE0NTE2RTAyNkNDMDQyMTAwQUFBQkUwIC8q
IFJUQ0ljZVRyYW5zcG9ydEJhY2tlbmQuaCAqLywKIAkJCQkzMTZEQ0I4RTFFN0E2Qzc5MDAxQjVG
ODcgLyogUlRDSWNlVHJhbnNwb3J0U3RhdGUuaWRsICovLAorCQkJCTQxQzE0QkM0MjZERTZERTgw
MDY4NUJGNSAvKiBSVENOZXR3b3JrTWFuYWdlci5oICovLAogCQkJCTA3Mzc5NERDMTlFRTJDNTIw
MEU1QTA0NSAvKiBSVENPZmZlckFuc3dlck9wdGlvbnMuaCAqLywKIAkJCQkzMTZEQ0IxMjFFNzhC
RTQzMDAxQjVGODcgLyogUlRDT2ZmZXJBbnN3ZXJPcHRpb25zLmlkbCAqLywKIAkJCQkzMTZEQ0Iy
ODFFNzhGMzk1MDAxQjVGODcgLyogUlRDT2ZmZXJPcHRpb25zLmggKi8sCkBAIC0xNzM4MSw2ICsx
NzM4Nyw3IEBACiAJCQkJMDdCNzExNkIxRDg5OUU2MzAwOUYwRkZCIC8qIENhcHR1cmVEZXZpY2VN
YW5hZ2VyLmNwcCAqLywKIAkJCQkwN0I3MTE2QzFEODk5RTYzMDA5RjBGRkIgLyogQ2FwdHVyZURl
dmljZU1hbmFnZXIuaCAqLywKIAkJCQk1RUJCODkzMDFDNzc3N0UxMDBDNjVENDEgLyogSWNlQ2Fu
ZGlkYXRlLmggKi8sCisJCQkJNDFDMTRCQzgyNkRGNzlENjAwNjg1QkY1IC8qIE1ETlNSZWdpc3Rl
ckVycm9yLmggKi8sCiAJCQkJMUJFNUJGQzExRDUxNTcxNTAwMTY2NkQ5IC8qIE1lZGlhQ29uc3Ry
YWludHMuY3BwICovLAogCQkJCTA3MjIxQjk5MTdDRjBBRDQwMDg0OEU1MSAvKiBNZWRpYUNvbnN0
cmFpbnRzLmggKi8sCiAJCQkJNDFCMjhCMTMxRjg1MDFBNDAwRkI1MkFDIC8qIE1lZGlhRW5kcG9p
bnRDb25maWd1cmF0aW9uLmNwcCAqLywKQEAgLTMxMjk2LDYgKzMxMzAzLDcgQEAKIAkJCQk0MUQx
MjlEMDFGM0QwRjA1MDBEMTVFNDcgLyogQ2FjaGVRdWVyeU9wdGlvbnMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTQxRDEyOUQzMUYzRDBGMTYwMEQxNUU0NyAvKiBDYWNoZVN0b3JhZ2VDb25uZWN0aW9u
LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUQxMjlENTFGM0QwRjY5MDBEMTVFNDcgLyogQ2FjaGVT
dG9yYWdlUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxQzE0QkM3MjZERTg1ODQwMDY4
NUJGNSAvKiBMaWJXZWJSVENVdGlscy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQzQUY4RTcxQUM1
QjdFQzAwQ0E3MTdFIC8qIENhY2hlVmFsaWRhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNG
MTY0OEEyNjYyQUQ1MjAwMDJGN0VGIC8qIENhbGNFeHByZXNzaW9uQmxlbmRMZW5ndGguaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDRjE2NDgyMjY2MkFDNTEwMDAyRjdFRiAvKiBDYWxjRXhwcmVzc2lv
bkludmVyc2lvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNTM5Niw2ICszNTQwNCw3IEBACiAJCQkJ
NURGRUJBQjcxODU5MkI2RDAwQzc1QkVCIC8qIFdlYktpdEF2YWlsYWJpbGl0eS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMkQwNjIxNDUxREE2MzlCQTAwQTdGQjI2IC8qIFdlYktpdE1lZGlhS2V5TWVz
c2FnZUV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDA2MjE1MTFEQTYzQTlGMDBBN0ZCMjYg
LyogV2ViS2l0TWVkaWFLZXlOZWVkZWRFdmVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDFDMTRC
QzYyNkRFNkRFODAwNjg1QkY1IC8qIFJUQ05ldHdvcmtNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywK
IAkJCQkyRDA2MjE0RTFEQTYzQThFMDBBN0ZCMjYgLyogV2ViS2l0TWVkaWFLZXlzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkyRDA2MjE1MDFEQTYzQTk0MDBBN0ZCMjYgLyogV2ViS2l0TWVkaWFLZXlT
ZXNzaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QzQ4QTZEMTE5MUM5RDY1MDAwMjY2NzQgLyog
V2ViS2l0TmFtZXNwYWNlLmggaW4gSGVhZGVycyAqLywKQEAgLTM1NDc3LDYgKzM1NDg2LDcgQEAK
IAkJCQlBMTQ4MzJCRjE4N0Y2NTJDMDBEQTYzQTYgLyogV0tHcmFwaGljcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTE0ODMyQzExODdGNjU3QTAwREE2M0E2IC8qIFdLVHlwZXMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUExNDgzMkMzMTg3RjY1REYwMERBNjNBNiAvKiBXS1V0aWxpdGllcy5oIGluIEhl
YWRlcnMgKi8sCisJCQkJNDFDMTRCQzkyNkRGNzlENzAwNjg1QkY1IC8qIE1ETlNSZWdpc3RlckVy
cm9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTQ4MzJDNDE4N0Y2NjNDMDBEQTYzQTYgLyogV0tW
aWV3LmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTQ4MzJDNjE4N0Y2NjhGMDBEQTYzQTYgLyogV0tW
aWV3UHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzc5OTE5OTcxMjAwRERGNDAwRUEwNDFD
IC8qIFdPRkZGaWxlRm9ybWF0LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
CmluZGV4IDk0NjZmZDlmN2Y1NDdmZGQ5YmVmMDRlZjg1N2EyYTZlY2EyYjFmZDguLjk2NDlhNDU2
YzJiMDgyMDBkYTVkN2Y3ODk4MGZhYTY2ZWQxMmFhY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cApAQCAtMjU5NSwxMiArMjU5NSw5IEBAIHZvaWQgRG9jdW1lbnQ6OndpbGxCZVJlbW92ZWRGcm9t
RnJhbWUoKQogICAgIGlmIChtX2hhc1ByZXBhcmVkRm9yRGVzdHJ1Y3Rpb24pCiAgICAgICAgIHJl
dHVybjsKIAotI2lmIFVTRShMSUJXRUJSVEMpCi0gICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJl
IG1vdmVkIHRvIE1vZHVsZXMvbWVkaWFzdHJlYW0uCi0gICAgaWYgKExpYldlYlJUQ1Byb3ZpZGVy
Ojp3ZWJSVENBdmFpbGFibGUoKSkgewotICAgICAgICBpZiAoYXV0byogcGFnZSA9IHRoaXMtPnBh
Z2UoKSkKLSAgICAgICAgICAgIHBhZ2UtPmxpYldlYlJUQ1Byb3ZpZGVyKCkudW5yZWdpc3Rlck1E
TlNOYW1lcyhpZGVudGlmaWVyKCkpOwotICAgIH0KKyNpZiBFTkFCTEUoV0VCX1JUQykKKyAgICBp
ZiAobV9ydGNOZXR3b3JrTWFuYWdlcikKKyAgICAgICAgbV9ydGNOZXR3b3JrTWFuYWdlci0+dW5y
ZWdpc3Rlck1ETlNOYW1lcygpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIp
CkBAIC01NjE3LDEyICs1NjE0LDkgQEAgdm9pZCBEb2N1bWVudDo6c3VzcGVuZChSZWFzb25Gb3JT
dXNwZW5zaW9uIHJlYXNvbikKICAgICAgICAgICAgIHZpZXctPmNvbXBvc2l0b3IoKS5jYW5jZWxD
b21wb3NpdGluZ0xheWVyVXBkYXRlKCk7CiAgICAgfQogCi0jaWYgVVNFKExJQldFQlJUQykKLSAg
ICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgbW92ZWQgdG8gTW9kdWxlcy9tZWRpYXN0cmVhbS4K
LSAgICBpZiAoTGliV2ViUlRDUHJvdmlkZXI6OndlYlJUQ0F2YWlsYWJsZSgpKSB7Ci0gICAgICAg
IGlmIChhdXRvKiBwYWdlID0gdGhpcy0+cGFnZSgpKQotICAgICAgICAgICAgcGFnZS0+bGliV2Vi
UlRDUHJvdmlkZXIoKS51bnJlZ2lzdGVyTUROU05hbWVzKGlkZW50aWZpZXIoKSk7Ci0gICAgfQor
I2lmIEVOQUJMRShXRUJfUlRDKQorICAgIGlmIChtX3J0Y05ldHdvcmtNYW5hZ2VyKQorICAgICAg
ICBtX3J0Y05ldHdvcmtNYW5hZ2VyLT51bnJlZ2lzdGVyTUROU05hbWVzKCk7CiAjZW5kaWYKIAog
I2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggYWY1ZTc4
NTBjYTkyMTVmMjI5MWQ1MDRiMmRmOGU5YzJkMGQ1M2I5Ni4uODIzMDk4M2E2YTYxZjE5ZjliOTFh
MjcxZDQwMTA0MzU0Nzk0YzNiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTQ5LDYgKzQ5LDcg
QEAKICNpbmNsdWRlICJQYWdlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlBsYXRmb3JtRXZlbnQu
aCIKICNpbmNsdWRlICJQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyLmgiCisj
aW5jbHVkZSAiUlRDTmV0d29ya01hbmFnZXIuaCIKICNpbmNsdWRlICJSZWZlcnJlclBvbGljeS5o
IgogI2luY2x1ZGUgIlJlZ2lvbi5oIgogI2luY2x1ZGUgIlJlZ2lzdHJhYmxlRG9tYWluLmgiCkBA
IC03MDgsNiArNzA5LDExIEBAIHB1YmxpYzoKICAgICBTb2NrZXRQcm92aWRlciogc29ja2V0UHJv
dmlkZXIoKSBmaW5hbDsKICAgICBSZWZQdHI8UlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyQ29u
bmVjdGlvbj4gY3JlYXRlUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyQ29ubmVjdGlvbigpIGZp
bmFsOwogCisjaWYgRU5BQkxFKFdFQl9SVEMpCisgICAgUlRDTmV0d29ya01hbmFnZXIqIHJ0Y05l
dHdvcmtNYW5hZ2VyKCkgeyByZXR1cm4gbV9ydGNOZXR3b3JrTWFuYWdlci5nZXQoKTsgfQorICAg
IHZvaWQgc2V0UlRDTmV0d29ya01hbmFnZXIoUmVmPFJUQ05ldHdvcmtNYW5hZ2VyPiYmIHJ0Y05l
dHdvcmtNYW5hZ2VyKSB7IG1fcnRjTmV0d29ya01hbmFnZXIgPSBXVEZNb3ZlKHJ0Y05ldHdvcmtN
YW5hZ2VyKTsgfQorI2VuZGlmCisKICAgICBib29sIGNhbk5hdmlnYXRlKEZyYW1lKiB0YXJnZXRG
cmFtZSwgY29uc3QgVVJMJiBkZXN0aW5hdGlvblVSTCA9IFVSTCgpKTsKIAogICAgIGJvb2wgdXNl
c1N0eWxlQmFzZWRFZGl0YWJpbGl0eSgpIGNvbnN0OwpAQCAtMjIyMSw2ICsyMjI3LDEwIEBAIHBy
aXZhdGU6CiAKICAgICBMaXN0SGFzaFNldDxSZWY8RWxlbWVudD4+IG1fdG9wTGF5ZXJFbGVtZW50
czsKICAgICBVbmlxdWVSZWY8V2hpdGVzcGFjZUNhY2hlPiBtX3doaXRlc3BhY2VDYWNoZTsKKwor
I2lmIEVOQUJMRShXRUJfUlRDKQorICAgIFJlZlB0cjxSVENOZXR3b3JrTWFuYWdlcj4gbV9ydGNO
ZXR3b3JrTWFuYWdlcjsKKyNlbmRpZgogfTsKIAogRWxlbWVudCogZXZlbnRUYXJnZXRFbGVtZW50
Rm9yRG9jdW1lbnQoRG9jdW1lbnQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL01ETlNSZWdpc3RlckVycm9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9NRE5TUmVnaXN0ZXJFcnJvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc3YzVkYWZl
MzNmYmU2NGU3YTgyNmMxNTFiNmJlM2NhNTJmYTU1NWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NRE5TUmVnaXN0ZXJFcnJvci5oCkBAIC0w
LDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9F
bnVtVHJhaXRzLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworZW51bSBjbGFzcyBNRE5TUmVn
aXN0ZXJFcnJvciB7IE5vdEltcGxlbWVudGVkLCBCYWRQYXJhbWV0ZXIsIEROU1NELCBJbnRlcm5h
bCwgVGltZW91dCB9OworCit9CisKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTw+IHN0cnVj
dCBFbnVtVHJhaXRzPFdlYkNvcmU6Ok1ETlNSZWdpc3RlckVycm9yPiB7CisgICAgdXNpbmcgdmFs
dWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViQ29yZTo6TUROU1JlZ2lzdGVyRXJyb3IsCisg
ICAgICAgIFdlYkNvcmU6Ok1ETlNSZWdpc3RlckVycm9yOjpOb3RJbXBsZW1lbnRlZCwKKyAgICAg
ICAgV2ViQ29yZTo6TUROU1JlZ2lzdGVyRXJyb3I6OkJhZFBhcmFtZXRlciwKKyAgICAgICAgV2Vi
Q29yZTo6TUROU1JlZ2lzdGVyRXJyb3I6OkROU1NELAorICAgICAgICBXZWJDb3JlOjpNRE5TUmVn
aXN0ZXJFcnJvcjo6SW50ZXJuYWwsCisgICAgICAgIFdlYkNvcmU6Ok1ETlNSZWdpc3RlckVycm9y
OjpUaW1lb3V0CisgICAgPjsKK307CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlk
ZXIuY3BwCmluZGV4IGM1OTU2MTc4NzJiMjJiOWVjM2Y1MzJkMzQ1YjA4YzE2ZmU2YmZkNmQuLjVh
Zjc5YWQ0ODU4Njg0MGY0ODc1N2RlZmU4YTNhNjZlNTZkM2JlY2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRj
L0xpYldlYlJUQ1Byb3ZpZGVyLmNwcApAQCAtMjk5LDcgKzI5OSw3IEBAIHZvaWQgTGliV2ViUlRD
UHJvdmlkZXI6OmVuYWJsZUVudW1lcmF0aW5nQWxsTmV0d29ya0ludGVyZmFjZXMoKQogICAgIG1f
ZW5hYmxlRW51bWVyYXRpbmdBbGxOZXR3b3JrSW50ZXJmYWNlcyA9IHRydWU7CiB9CiAKLXJ0Yzo6
c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlPiBMaWJXZWJSVENQ
cm92aWRlcjo6Y3JlYXRlUGVlckNvbm5lY3Rpb24od2VicnRjOjpQZWVyQ29ubmVjdGlvbk9ic2Vy
dmVyJiBvYnNlcnZlciwgcnRjOjpQYWNrZXRTb2NrZXRGYWN0b3J5Kiwgd2VicnRjOjpQZWVyQ29u
bmVjdGlvbkludGVyZmFjZTo6UlRDQ29uZmlndXJhdGlvbiYmIGNvbmZpZ3VyYXRpb24pCitydGM6
OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZT4gTGliV2ViUlRD
UHJvdmlkZXI6OmNyZWF0ZVBlZXJDb25uZWN0aW9uKERvY3VtZW50SWRlbnRpZmllciwgd2VicnRj
OjpQZWVyQ29ubmVjdGlvbk9ic2VydmVyJiBvYnNlcnZlciwgcnRjOjpQYWNrZXRTb2NrZXRGYWN0
b3J5Kiwgd2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6UlRDQ29uZmlndXJhdGlvbiYm
IGNvbmZpZ3VyYXRpb24pCiB7CiAgICAgLy8gRGVmYXVsdCBXSzEgaW1wbGVtZW50YXRpb24uCiAg
ICAgQVNTRVJUKG1fdXNlTmV0d29ya1RocmVhZFdpdGhTb2NrZXRTZXJ2ZXIpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJU
Q1Byb3ZpZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJy
dGMvTGliV2ViUlRDUHJvdmlkZXIuaAppbmRleCAxODYyN2VlNTdmNzU4YTA0NzIyZDE2MTZmMGY4
NzYyODQzNDExNWI3Li45NDIwNzNiMzJlMTdlNTQ2NjllN2VkMjM4YTVmMTkxMTUxNGIyNDc2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMv
TGliV2ViUlRDUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuaApAQCAtMjcsNiArMjcsNyBAQAogCiAj
aW5jbHVkZSAiRG9jdW1lbnRJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiTGliV2ViUlRDTWFjcm9z
LmgiCisjaW5jbHVkZSAiTUROU1JlZ2lzdGVyRXJyb3IuaCIKICNpbmNsdWRlICJSVENEYXRhQ2hh
bm5lbFJlbW90ZUhhbmRsZXJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25I
YW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL0V4cGVjdGVkLmg+CkBAIC02Niw4ICs2Nyw2IEBAIGNs
YXNzIFJlZ2lzdHJhYmxlRG9tYWluOwogc3RydWN0IFBlZXJDb25uZWN0aW9uRmFjdG9yeUFuZFRo
cmVhZHM7CiBzdHJ1Y3QgUlRDUnRwQ2FwYWJpbGl0aWVzOwogCi1lbnVtIGNsYXNzIE1ETlNSZWdp
c3RlckVycm9yIHsgTm90SW1wbGVtZW50ZWQsIEJhZFBhcmFtZXRlciwgRE5TU0QsIEludGVybmFs
LCBUaW1lb3V0IH07Ci0KIGNsYXNzIFdFQkNPUkVfRVhQT1JUIExpYldlYlJUQ1Byb3ZpZGVyIHsK
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKQEAgLTg2LDE4ICs4NSwxMCBA
QCBwdWJsaWM6CiAgICAgdXNpbmcgSVBBZGRyZXNzT3JFcnJvciA9IEV4cGVjdGVkPFN0cmluZywg
TUROU1JlZ2lzdGVyRXJyb3I+OwogICAgIHVzaW5nIE1ETlNOYW1lT3JFcnJvciA9IEV4cGVjdGVk
PFN0cmluZywgTUROU1JlZ2lzdGVyRXJyb3I+OwogCi0gICAgdmlydHVhbCB2b2lkIHVucmVnaXN0
ZXJNRE5TTmFtZXMoRG9jdW1lbnRJZGVudGlmaWVyKSB7IH0KLQotICAgIHZpcnR1YWwgdm9pZCBy
ZWdpc3Rlck1ETlNOYW1lKERvY3VtZW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBpcEFkZHJl
c3MsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoTUROU05hbWVPckVycm9yJiYpPiYmIGNhbGxiYWNr
KQotICAgIHsKLSAgICAgICAgVU5VU0VEX1BBUkFNKGlwQWRkcmVzcyk7Ci0gICAgICAgIGNhbGxi
YWNrKG1ha2VVbmV4cGVjdGVkKE1ETlNSZWdpc3RlckVycm9yOjpOb3RJbXBsZW1lbnRlZCkpOwot
ICAgIH0KLQogICAgIHZpcnR1YWwgUmVmUHRyPFJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlckNv
bm5lY3Rpb24+IGNyZWF0ZVJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlckNvbm5lY3Rpb24oKSB7
IHJldHVybiBudWxscHRyOyB9CiAKICNpZiBVU0UoTElCV0VCUlRDKQotICAgIHZpcnR1YWwgcnRj
OjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U+IGNyZWF0ZVBl
ZXJDb25uZWN0aW9uKHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25PYnNlcnZlciYsIHJ0Yzo6UGFja2V0
U29ja2V0RmFjdG9yeSosIHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OlJUQ0NvbmZp
Z3VyYXRpb24mJik7CisgICAgdmlydHVhbCBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpQZWVy
Q29ubmVjdGlvbkludGVyZmFjZT4gY3JlYXRlUGVlckNvbm5lY3Rpb24oRG9jdW1lbnRJZGVudGlm
aWVyLCB3ZWJydGM6OlBlZXJDb25uZWN0aW9uT2JzZXJ2ZXImLCBydGM6OlBhY2tldFNvY2tldEZh
Y3RvcnkqLCB3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpSVENDb25maWd1cmF0aW9u
JiYpOwogCiAgICAgd2VicnRjOjpQZWVyQ29ubmVjdGlvbkZhY3RvcnlJbnRlcmZhY2UqIGZhY3Rv
cnkoKTsKIApAQCAtMTgwLDE2ICsxNzEsMyBAQCBpbmxpbmUgdm9pZCBMaWJXZWJSVENQcm92aWRl
cjo6c2V0VlA5U3VwcG9ydChib29sIHN1cHBvcnRzVlA5UHJvZmlsZTAsIGJvb2wgc3VwcAogI2Vu
ZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotbmFtZXNwYWNlIFdURiB7Ci10ZW1wbGF0
ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6Ok1ETlNSZWdpc3RlckVycm9yPiB7Ci0gICAg
dXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKLSAgICAgICAgV2ViQ29yZTo6TUROU1JlZ2lzdGVy
RXJyb3IsCi0gICAgICAgIFdlYkNvcmU6Ok1ETlNSZWdpc3RlckVycm9yOjpOb3RJbXBsZW1lbnRl
ZCwKLSAgICAgICAgV2ViQ29yZTo6TUROU1JlZ2lzdGVyRXJyb3I6OkJhZFBhcmFtZXRlciwKLSAg
ICAgICAgV2ViQ29yZTo6TUROU1JlZ2lzdGVyRXJyb3I6OkROU1NELAotICAgICAgICBXZWJDb3Jl
OjpNRE5TUmVnaXN0ZXJFcnJvcjo6SW50ZXJuYWwsCi0gICAgICAgIFdlYkNvcmU6Ok1ETlNSZWdp
c3RlckVycm9yOjpUaW1lb3V0Ci0gICAgPjsKLX07Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrTUROU1JlZ2lzdGVyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtNRE5TUmVnaXN0ZXIuY3BwCmlu
ZGV4IGZjNDM1MTEyZjViY2UwYWEzMTIyMGU0MTJmY2U0YzU5ODNmMjhiMDcuLjdhYTE3YzEzMWYx
NjI2ODRjZDI4M2E3YTBlNGMxZDEzMWJlZTg2MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtNRE5TUmVnaXN0ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtNRE5TUmVnaXN0ZXIuY3BwCkBA
IC05OCwyNyArOTgsMjkgQEAgc3RhdGljIHZvaWQgcmVnaXN0ZXJNRE5TTmFtZUNhbGxiYWNrKERO
U1NlcnZpY2VSZWYsIEROU1JlY29yZFJlZiByZWNvcmQsIEROU1NlcnYKICAgICBNRE5TX1JFTEVB
U0VfTE9HX0lOX0NBTExCQUNLKHJlcXVlc3QtPnNlc3Npb25JRCwgInJlZ2lzdGVyTUROU05hbWVD
YWxsYmFjayB3aXRoIGVycm9yICVkIiwgZXJyb3JDb2RlKTsKIAogICAgIGlmIChlcnJvckNvZGUp
IHsKLSAgICAgICAgcmVxdWVzdC0+Y29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6V2ViTUROU1Jl
Z2lzdGVyOjpGaW5pc2hlZFJlZ2lzdGVyaW5nTUROU05hbWUgeyByZXF1ZXN0LT5yZXF1ZXN0SWRl
bnRpZmllciwgbWFrZVVuZXhwZWN0ZWQoV2ViQ29yZTo6TUROU1JlZ2lzdGVyRXJyb3I6OkROU1NE
KSB9LCAwKTsKKyAgICAgICAgcmVxdWVzdC0+Y29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6V2Vi
TUROU1JlZ2lzdGVyOjpGaW5pc2hlZFJlZ2lzdGVyaW5nTUROU05hbWUgeyByZXF1ZXN0LT5yZXF1
ZXN0SWRlbnRpZmllciwgcmVxdWVzdC0+bmFtZSwgV2ViQ29yZTo6TUROU1JlZ2lzdGVyRXJyb3I6
OkROU1NEIH0sIDApOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIHJlcXVlc3QtPmNvbm5l
Y3Rpb24tPnNlbmQoTWVzc2FnZXM6OldlYk1ETlNSZWdpc3Rlcjo6RmluaXNoZWRSZWdpc3Rlcmlu
Z01ETlNOYW1lIHsgcmVxdWVzdC0+cmVxdWVzdElkZW50aWZpZXIsIHJlcXVlc3QtPm5hbWUgfSwg
MCk7CisgICAgcmVxdWVzdC0+Y29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6V2ViTUROU1JlZ2lz
dGVyOjpGaW5pc2hlZFJlZ2lzdGVyaW5nTUROU05hbWUgeyByZXF1ZXN0LT5yZXF1ZXN0SWRlbnRp
ZmllciwgcmVxdWVzdC0+bmFtZSwgeyB9IH0sIDApOwogfQogCiB2b2lkIE5ldHdvcmtNRE5TUmVn
aXN0ZXI6OnJlZ2lzdGVyTUROU05hbWUoTUROU1JlZ2lzdGVySWRlbnRpZmllciByZXF1ZXN0SWRl
bnRpZmllciwgV2ViQ29yZTo6RG9jdW1lbnRJZGVudGlmaWVyIGRvY3VtZW50SWRlbnRpZmllciwg
Y29uc3QgU3RyaW5nJiBpcEFkZHJlc3MpCiB7CisgICAgYXV0byBuYW1lID0gbWFrZVN0cmluZyhj
cmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCksICIubG9jYWwiKTsKKwogICAgIEROU1NlcnZpY2VS
ZWYgc2VydmljZTsKICAgICBhdXRvIGl0ZXJhdG9yID0gbV9zZXJ2aWNlcy5maW5kKGRvY3VtZW50
SWRlbnRpZmllcik7CiAgICAgaWYgKGl0ZXJhdG9yID09IG1fc2VydmljZXMuZW5kKCkpIHsKICAg
ICAgICAgYXV0byBlcnJvciA9IEROU1NlcnZpY2VDcmVhdGVDb25uZWN0aW9uKCZzZXJ2aWNlKTsK
ICAgICAgICAgaWYgKGVycm9yKSB7CiAgICAgICAgICAgICBNRE5TX1JFTEVBU0VfTE9HKCJyZWdp
c3Rlck1ETlNOYW1lIEROU1NlcnZpY2VDcmVhdGVDb25uZWN0aW9uIGVycm9yICVkIiwgZXJyb3Ip
OwotICAgICAgICAgICAgbV9jb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpX
ZWJNRE5TUmVnaXN0ZXI6OkZpbmlzaGVkUmVnaXN0ZXJpbmdNRE5TTmFtZSB7IHJlcXVlc3RJZGVu
dGlmaWVyLCBtYWtlVW5leHBlY3RlZChXZWJDb3JlOjpNRE5TUmVnaXN0ZXJFcnJvcjo6RE5TU0Qp
IH0sIDApOworICAgICAgICAgICAgbV9jb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3Nh
Z2VzOjpXZWJNRE5TUmVnaXN0ZXI6OkZpbmlzaGVkUmVnaXN0ZXJpbmdNRE5TTmFtZSB7IHJlcXVl
c3RJZGVudGlmaWVyLCBuYW1lLCBXZWJDb3JlOjpNRE5TUmVnaXN0ZXJFcnJvcjo6RE5TU0QgfSwg
MCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgZXJyb3IgPSBETlNT
ZXJ2aWNlU2V0RGlzcGF0Y2hRdWV1ZShzZXJ2aWNlLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgp
KTsKICAgICAgICAgaWYgKGVycm9yKSB7CiAgICAgICAgICAgICBNRE5TX1JFTEVBU0VfTE9HKCJy
ZWdpc3Rlck1ETlNOYW1lIEROU1NlcnZpY2VDcmVhdGVDb25uZWN0aW9uIGVycm9yICVkIiwgZXJy
b3IpOwotICAgICAgICAgICAgbV9jb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2Vz
OjpXZWJNRE5TUmVnaXN0ZXI6OkZpbmlzaGVkUmVnaXN0ZXJpbmdNRE5TTmFtZSB7IHJlcXVlc3RJ
ZGVudGlmaWVyLCBtYWtlVW5leHBlY3RlZChXZWJDb3JlOjpNRE5TUmVnaXN0ZXJFcnJvcjo6RE5T
U0QpIH0sIDApOworICAgICAgICAgICAgbV9jb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5zZW5kKE1l
c3NhZ2VzOjpXZWJNRE5TUmVnaXN0ZXI6OkZpbmlzaGVkUmVnaXN0ZXJpbmdNRE5TTmFtZSB7IHJl
cXVlc3RJZGVudGlmaWVyLCBuYW1lLCBXZWJDb3JlOjpNRE5TUmVnaXN0ZXJFcnJvcjo6RE5TU0Qg
fSwgMCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgQVNTRVJUKHNl
cnZpY2UpOwpAQCAtMTI2LDEzICsxMjgsMTIgQEAgdm9pZCBOZXR3b3JrTUROU1JlZ2lzdGVyOjpy
ZWdpc3Rlck1ETlNOYW1lKE1ETlNSZWdpc3RlcklkZW50aWZpZXIgcmVxdWVzdElkZW50aWYKICAg
ICB9IGVsc2UKICAgICAgICAgc2VydmljZSA9IGl0ZXJhdG9yLT52YWx1ZTsKIAotICAgIGF1dG8g
bmFtZSA9IG1ha2VTdHJpbmcoY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpLCAiLmxvY2FsIik7
Ci0KICAgICBhdXRvIGlwID0gaW5ldF9hZGRyKGlwQWRkcmVzcy51dGY4KCkuZGF0YSgpKTsKIAor
ICAgIC8vIEZJWE1FOiBBZGQgSVB2NiBzdXBwb3J0LgogICAgIGlmIChpcCA9PSAoIGluX2FkZHJf
dCkoLTEpKSB7CiAgICAgICAgIE1ETlNfUkVMRUFTRV9MT0coInJlZ2lzdGVyTUROU05hbWUgaW5l
dF9hZGRyIGVycm9yIik7Ci0gICAgICAgIG1fY29ubmVjdGlvbi5jb25uZWN0aW9uKCkuc2VuZChN
ZXNzYWdlczo6V2ViTUROU1JlZ2lzdGVyOjpGaW5pc2hlZFJlZ2lzdGVyaW5nTUROU05hbWUgeyBy
ZXF1ZXN0SWRlbnRpZmllciwgbWFrZVVuZXhwZWN0ZWQoV2ViQ29yZTo6TUROU1JlZ2lzdGVyRXJy
b3I6OkJhZFBhcmFtZXRlcikgfSwgMCk7CisgICAgICAgIG1fY29ubmVjdGlvbi5jb25uZWN0aW9u
KCkuc2VuZChNZXNzYWdlczo6V2ViTUROU1JlZ2lzdGVyOjpGaW5pc2hlZFJlZ2lzdGVyaW5nTURO
U05hbWUgeyByZXF1ZXN0SWRlbnRpZmllciwgbmFtZSwgV2ViQ29yZTo6TUROU1JlZ2lzdGVyRXJy
b3I6OkJhZFBhcmFtZXRlciB9LCAwKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTU2
LDcgKzE1Nyw3IEBAIHZvaWQgTmV0d29ya01ETlNSZWdpc3Rlcjo6cmVnaXN0ZXJNRE5TTmFtZShN
RE5TUmVnaXN0ZXJJZGVudGlmaWVyIHJlcXVlc3RJZGVudGlmCiAgICAgICAgIHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZCo+KHBlbmRpbmdSZWdpc3RyYXRpb25SZXF1ZXN0Q291bnQpKTsKICAgICBpZiAo
ZXJyb3IpIHsKICAgICAgICAgTUROU19SRUxFQVNFX0xPRygicmVnaXN0ZXJNRE5TTmFtZSBETlNT
ZXJ2aWNlUmVnaXN0ZXJSZWNvcmQgZXJyb3IgJWQiLCBlcnJvcik7Ci0gICAgICAgIG1fY29ubmVj
dGlvbi5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6V2ViTUROU1JlZ2lzdGVyOjpGaW5pc2hl
ZFJlZ2lzdGVyaW5nTUROU05hbWUgeyByZXF1ZXN0SWRlbnRpZmllciwgbWFrZVVuZXhwZWN0ZWQo
V2ViQ29yZTo6TUROU1JlZ2lzdGVyRXJyb3I6OkROU1NEKSB9LCAwKTsKKyAgICAgICAgbV9jb25u
ZWN0aW9uLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpXZWJNRE5TUmVnaXN0ZXI6OkZpbmlz
aGVkUmVnaXN0ZXJpbmdNRE5TTmFtZSB7IHJlcXVlc3RJZGVudGlmaWVyLCBwZW5kaW5nUmVxdWVz
dC0+bmFtZSwgV2ViQ29yZTo6TUROU1JlZ2lzdGVyRXJyb3I6OkROU1NEIH0sIDApOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogICAgIHBlbmRpbmdSZWdpc3RyYXRpb25SZXF1ZXN0cygpLmFkZChw
ZW5kaW5nUmVnaXN0cmF0aW9uUmVxdWVzdENvdW50KyssIFdURk1vdmUocGVuZGluZ1JlcXVlc3Qp
KTsKQEAgLTE3MSw3ICsxNzIsOSBAQCB2b2lkIE5ldHdvcmtNRE5TUmVnaXN0ZXI6OnVucmVnaXN0
ZXJNRE5TTmFtZXMoV2ViQ29yZTo6RG9jdW1lbnRJZGVudGlmaWVyKQogdm9pZCBOZXR3b3JrTURO
U1JlZ2lzdGVyOjpyZWdpc3Rlck1ETlNOYW1lKE1ETlNSZWdpc3RlcklkZW50aWZpZXIgcmVxdWVz
dElkZW50aWZpZXIsIFdlYkNvcmU6OkRvY3VtZW50SWRlbnRpZmllciBkb2N1bWVudElkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgaXBBZGRyZXNzKQogewogICAgIE1ETlNfUkVMRUFTRV9MT0coInJl
Z2lzdGVyTUROU05hbWUgbm90IGltcGxlbWVudGVkIik7Ci0gICAgbV9jb25uZWN0aW9uLmNvbm5l
Y3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpXZWJNRE5TUmVnaXN0ZXI6OkZpbmlzaGVkUmVnaXN0ZXJp
bmdNRE5TTmFtZSB7IHJlcXVlc3RJZGVudGlmaWVyLCBtYWtlVW5leHBlY3RlZChXZWJDb3JlOjpN
RE5TUmVnaXN0ZXJFcnJvcjo6Tm90SW1wbGVtZW50ZWQpIH0sIDApOworICAgIGF1dG8gbmFtZSA9
IG1ha2VTdHJpbmcoY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpLCAiLmxvY2FsIik7CisKKyAg
ICBtX2Nvbm5lY3Rpb24uY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OldlYk1ETlNSZWdpc3Rl
cjo6RmluaXNoZWRSZWdpc3RlcmluZ01ETlNOYW1lIHsgcmVxdWVzdElkZW50aWZpZXIsIG5hbWUs
IFdlYkNvcmU6Ok1ETlNSZWdpc3RlckVycm9yOjpOb3RJbXBsZW1lbnRlZCB9LCAwKTsKIH0KIAog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dl
YktpdC9Tb3VyY2VzLnR4dAppbmRleCA3ZGJhY2QxOGMwYzIxOGYyOGQ4Y2Q0NDA1MDI3OGU0ODk4
ZGYxYzVjLi40ZTVlNTE0ZDY1NjM4NjI2NWI5YjM3OTU3ODQ4MjRlZTJlOWY1NjNmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNl
cy50eHQKQEAgLTYzOSw2ICs2MzksNyBAQCBXZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0UHJv
dmlkZXIuY3BwCiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0U3RyZWFtLmNwcAogCiBXZWJQ
cm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ05ldHdvcmsuY3BwCitXZWJQcm9jZXNzL05l
dHdvcmsvd2VicnRjL0xpYldlYlJUQ05ldHdvcmtNYW5hZ2VyLmNwcAogV2ViUHJvY2Vzcy9OZXR3
b3JrL3dlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHAKIFdlYlByb2Nlc3MvTmV0d29yay93ZWJy
dGMvTGliV2ViUlRDUmVzb2x2ZXIuY3BwCiBXZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldl
YlJUQ1NvY2tldC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IDllNDE2ZWYzNzQ0NGU0MmViZTY4YzBlMTAwMjRiY2VjZmZiMjdmODgu
LjI3MTRmZmFlZmIzODA1ODVkNzVmNzY1MGM0MGMwN2NlM2I1ZGRmY2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzg1NCw2ICszODU0
LDggQEAKIAkJNDFCN0VENkYyMDY5NjU5MDAwODdEODUzIC8qIE5ldHdvcmtNRE5TUmVnaXN0ZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmV0d29ya01ETlNSZWdp
c3Rlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQjdFRDcwMjA2OTY1OTAw
MDg3RDg1MyAvKiBOZXR3b3JrTUROU1JlZ2lzdGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IE5ldHdvcmtNRE5TUmVnaXN0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDFCN0VENzEyMDY5NjU5MDAwODdEODUzIC8qIE5ldHdvcmtNRE5TUmVnaXN0ZXIubWVz
c2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gTmV0d29ya01ETlNSZWdpc3Rlci5tZXNz
YWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFDMTRCQzIyNkRFNkEyRjAw
Njg1QkY1IC8qIExpYldlYlJUQ05ldHdvcmtNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IExpYldlYlJUQ05ldHdvcmtNYW5hZ2VyLmNwcDsgcGF0aCA9IE5ldHdvcmsvd2VicnRjL0xpYldl
YlJUQ05ldHdvcmtNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFD
MTRCQzMyNkRFNkEyRjAwNjg1QkY1IC8qIExpYldlYlJUQ05ldHdvcmtNYW5hZ2VyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IExpYldlYlJUQ05ldHdvcmtNYW5hZ2VyLmg7IHBhdGggPSBOZXR3b3JrL3dlYnJ0
Yy9MaWJXZWJSVENOZXR3b3JrTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0MUMzQjg4NTI2NDQ0QUFCMDA0RUQ0REUgLyogQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVy
ZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvTWVkaWFTdHJlYW1U
cmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0MUMzQjg4NjI2NDQ0QUFDMDA0RUQ0REUgLyogQXVkaW9NZWRpYVN0cmVhbVRyYWNr
UmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF1ZGlv
TWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQzNCODg3MjY0NDRBRDMwMDRFRDRERSAvKiBBdWRpb01l
ZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdElkZW50aWZpZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRJZGVudGlmaWVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04NTE4LDYgKzg1MjAsOCBAQAogCQkJ
CTQxNkY4MDg5MjQ1QzdGRjUwMEI2OEYwMiAvKiBMaWJXZWJSVENOZXR3b3JrLmNwcCAqLywKIAkJ
CQk0MTFCMjI2MjFFMzcxMjQ0MDA0RjczNjMgLyogTGliV2ViUlRDTmV0d29yay5oICovLAogCQkJ
CTQxNkY4MDg2MjQ1QjM5NzQwMEI2OEYwMiAvKiBMaWJXZWJSVENOZXR3b3JrLm1lc3NhZ2VzLmlu
ICovLAorCQkJCTQxQzE0QkMyMjZERTZBMkYwMDY4NUJGNSAvKiBMaWJXZWJSVENOZXR3b3JrTWFu
YWdlci5jcHAgKi8sCisJCQkJNDFDMTRCQzMyNkRFNkEyRjAwNjg1QkY1IC8qIExpYldlYlJUQ05l
dHdvcmtNYW5hZ2VyLmggKi8sCiAJCQkJNDEzMDc1QTcxREU4NUVFNzAwMzlFQzY5IC8qIExpYldl
YlJUQ1Byb3ZpZGVyLmNwcCAqLywKIAkJCQk0MTMwNzVBODFERTg1RUU3MDAzOUVDNjkgLyogTGli
V2ViUlRDUHJvdmlkZXIuaCAqLywKIAkJCQk0MUZBRjVGNzFFM0MwQjQ3MDAxQUU2NzggLyogTGli
V2ViUlRDUmVzb2x2ZXIuY3BwICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ05ldHdvcmtNYW5hZ2VyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENOZXR3b3JrTWFuYWdlci5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNDFiNDE5OWMyNjUxNzRiZDE0MmY1MWU3MDkxZTJiMDIwYzY5Mzg2OAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0
Yy9MaWJXZWJSVENOZXR3b3JrTWFuYWdlci5jcHAKQEAgLTAsMCArMSwxNTYgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTGliV2ViUlRDTmV0d29ya01hbmFn
ZXIuaCIKKworI2lmIFVTRShMSUJXRUJSVEMpCisKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisj
aW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTGliV2ViUlRD
VXRpbHMuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
KworTGliV2ViUlRDTmV0d29ya01hbmFnZXIqIExpYldlYlJUQ05ldHdvcmtNYW5hZ2VyOjpnZXRP
ckNyZWF0ZShXZWJDb3JlOjpEb2N1bWVudElkZW50aWZpZXIgaWRlbnRpZmllcikKK3sKKyAgICBh
dXRvKiBkb2N1bWVudCA9IERvY3VtZW50OjphbGxEb2N1bWVudHNNYXAoKS5nZXQoaWRlbnRpZmll
cik7CisgICAgaWYgKCFkb2N1bWVudCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBh
dXRvKiBuZXR3b3JrTWFuYWdlciA9IHN0YXRpY19jYXN0PExpYldlYlJUQ05ldHdvcmtNYW5hZ2Vy
Kj4oZG9jdW1lbnQtPnJ0Y05ldHdvcmtNYW5hZ2VyKCkpOworICAgIGlmICghbmV0d29ya01hbmFn
ZXIpIHsKKyAgICAgICAgYXV0byBuZXdOZXR3b3JrTWFuYWdlciA9IGFkb3B0UmVmKCpuZXcgTGli
V2ViUlRDTmV0d29ya01hbmFnZXIoaWRlbnRpZmllcikpOworICAgICAgICBuZXR3b3JrTWFuYWdl
ciA9IG5ld05ldHdvcmtNYW5hZ2VyLnB0cigpOworICAgICAgICBkb2N1bWVudC0+c2V0UlRDTmV0
d29ya01hbmFnZXIoV1RGTW92ZShuZXdOZXR3b3JrTWFuYWdlcikpOworICAgIH0KKworICAgIHJl
dHVybiBuZXR3b3JrTWFuYWdlcjsKK30KKworTGliV2ViUlRDTmV0d29ya01hbmFnZXI6OkxpYldl
YlJUQ05ldHdvcmtNYW5hZ2VyKFdlYkNvcmU6OkRvY3VtZW50SWRlbnRpZmllciBkb2N1bWVudElk
ZW50aWZpZXIpCisgICAgOiBtX2RvY3VtZW50SWRlbnRpZmllcihkb2N1bWVudElkZW50aWZpZXIp
Cit7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkubGliV2ViUlRDTmV0d29yaygpLm1vbml0
b3IoKS5hZGRPYnNlcnZlcigqdGhpcyk7Cit9CisKK0xpYldlYlJUQ05ldHdvcmtNYW5hZ2VyOjp+
TGliV2ViUlRDTmV0d29ya01hbmFnZXIoKQoreworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LmxpYldlYlJUQ05ldHdvcmsoKS5tb25pdG9yKCkucmVtb3ZlT2JzZXJ2ZXIoKnRoaXMpOworfQor
Cit2b2lkIExpYldlYlJUQ05ldHdvcmtNYW5hZ2VyOjp1bnJlZ2lzdGVyTUROU05hbWVzKCkKK3sK
KyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5saWJXZWJSVENOZXR3b3JrKCkubWRuc1JlZ2lz
dGVyKCkudW5yZWdpc3Rlck1ETlNOYW1lcyhtX2RvY3VtZW50SWRlbnRpZmllcik7Cit9CisKK3Zv
aWQgTGliV2ViUlRDTmV0d29ya01hbmFnZXI6OlN0YXJ0VXBkYXRpbmcoKQoreworICAgIGNhbGxP
bk1haW5SdW5Mb29wKFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXSB7CisgICAg
ICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgYXV0byYg
bW9uaXRvciA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmxpYldlYlJUQ05ldHdvcmsoKS5tb25p
dG9yKCk7CisgICAgICAgIGlmIChtX3JlY2VpdmVkTmV0d29ya0xpc3QpIHsKKyAgICAgICAgICAg
IFdlYkNvcmU6OkxpYldlYlJUQ1Byb3ZpZGVyOjpjYWxsT25XZWJSVENOZXR3b3JrVGhyZWFkKFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKKyAgICAgICAgICAgICAgICBT
aWduYWxOZXR3b3Jrc0NoYW5nZWQoKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9IGVsc2Ug
aWYgKG1vbml0b3IuZGlkUmVjZWl2ZU5ldHdvcmtMaXN0KCkpCisgICAgICAgICAgICBuZXR3b3Jr
c0NoYW5nZWQobW9uaXRvci5uZXR3b3JrTGlzdCgpICwgbW9uaXRvci5pcHY0KCksIG1vbml0b3Iu
aXB2NigpKTsKKyAgICAgICAgbW9uaXRvci5zdGFydFVwZGF0aW5nKCk7CisgICAgfSk7Cit9CisK
K3ZvaWQgTGliV2ViUlRDTmV0d29ya01hbmFnZXI6OlN0b3BVcGRhdGluZygpCit7CisgICAgY2Fs
bE9uTWFpblJ1bkxvb3AoW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldIHsKKyAgICAgICAg
aWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkubGliV2ViUlRDTmV0d29yaygpLm1vbml0b3IoKS5zdG9wVXBkYXRpbmcoKTsK
KyAgICB9KTsKK30KKword2VicnRjOjpNZG5zUmVzcG9uZGVySW50ZXJmYWNlKiBMaWJXZWJSVENO
ZXR3b3JrTWFuYWdlcjo6R2V0TWRuc1Jlc3BvbmRlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
dXNlTUROU0NhbmRpZGF0ZXMgPyBjb25zdF9jYXN0PExpYldlYlJUQ05ldHdvcmtNYW5hZ2VyKj4o
dGhpcykgOiBudWxscHRyOworfQorCit2b2lkIExpYldlYlJUQ05ldHdvcmtNYW5hZ2VyOjpuZXR3
b3Jrc0NoYW5nZWQoY29uc3QgVmVjdG9yPFJUQ05ldHdvcms+JiBuZXR3b3JrcywgY29uc3QgUlRD
TmV0d29yazo6SVBBZGRyZXNzJiBpcHY0LCBjb25zdCBSVENOZXR3b3JrOjpJUEFkZHJlc3MmIGlw
djYpCit7CisgICAgYm9vbCBmb3JjZVNpZ25hbGluZyA9ICFtX3JlY2VpdmVkTmV0d29ya0xpc3Q7
CisgICAgbV9yZWNlaXZlZE5ldHdvcmtMaXN0ID0gdHJ1ZTsKKworICAgIFdlYkNvcmU6OkxpYldl
YlJUQ1Byb3ZpZGVyOjpjYWxsT25XZWJSVENOZXR3b3JrVGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyksIG5ldHdvcmtzLCBpcHY0LCBpcHY2LCBmb3JjZVNpZ25hbGlu
Z10geworICAgICAgICBzdGQ6OnZlY3RvcjxydGM6Ok5ldHdvcmsqPiBuZXR3b3JrTGlzdChuZXR3
b3Jrcy5zaXplKCkpOworICAgICAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgbmV0
d29ya3Muc2l6ZSgpOyArK2luZGV4KQorICAgICAgICAgICAgbmV0d29ya0xpc3RbaW5kZXhdID0g
bmV3IHJ0Yzo6TmV0d29yayhuZXR3b3Jrc1tpbmRleF0udmFsdWUoKSk7CisKKyAgICAgICAgYm9v
bCBoYXNDaGFuZ2VkOworICAgICAgICBzZXRfZGVmYXVsdF9sb2NhbF9hZGRyZXNzZXMoaXB2NC52
YWx1ZSwgaXB2Ni52YWx1ZSk7CisgICAgICAgIE1lcmdlTmV0d29ya0xpc3QobmV0d29ya0xpc3Qs
ICZoYXNDaGFuZ2VkKTsKKyAgICAgICAgaWYgKGhhc0NoYW5nZWQgfHwgZm9yY2VTaWduYWxpbmcp
CisgICAgICAgICAgICBTaWduYWxOZXR3b3Jrc0NoYW5nZWQoKTsKKyAgICB9KTsKKworfQorCit2
b2lkIExpYldlYlJUQ05ldHdvcmtNYW5hZ2VyOjpuZXR3b3JrUHJvY2Vzc0NyYXNoZWQoKQorewor
ICAgIG1fcmVjZWl2ZWROZXR3b3JrTGlzdCA9IGZhbHNlOworICAgIGlmICghV2ViQ29yZTo6TGli
V2ViUlRDUHJvdmlkZXI6Omhhc1dlYlJUQ1RocmVhZHMoKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgLy8gSW4gY2FzZSB3ZSBoYXZlIGNsaWVudHMgd2FpdGluZyBmb3IgbmV0d29ya3NDaGFuZ2Vk
LCB3ZSBjYWxsIFNpZ25hbE5ldHdvcmtzQ2hhbmdlZCB0byBtYWtlIHN1cmUgdGhleSBkbyBub3Qg
d2FpdCBmb3Igbm90aGluZy4KKyAgICBXZWJDb3JlOjpMaWJXZWJSVENQcm92aWRlcjo6Y2FsbE9u
V2ViUlRDTmV0d29ya1RocmVhZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
XSB7CisgICAgICAgIFNpZ25hbE5ldHdvcmtzQ2hhbmdlZCgpOworICAgIH0pOworfQorCit2b2lk
IExpYldlYlJUQ05ldHdvcmtNYW5hZ2VyOjpDcmVhdGVOYW1lRm9yQWRkcmVzcyhjb25zdCBydGM6
OklQQWRkcmVzcyYgYWRkcmVzcywgTmFtZUNyZWF0ZWRDYWxsYmFjayBjYWxsYmFjaykKK3sKKyAg
ICBjYWxsT25NYWluUnVuTG9vcChbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwg
YWRkcmVzcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKKyAgICAg
ICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5saWJXZWJSVENOZXR3b3JrKCkubWRuc1JlZ2lzdGVyKCkucmVnaXN0
ZXJNRE5TTmFtZShtX2RvY3VtZW50SWRlbnRpZmllciwgZnJvbVN0ZFN0cmluZyhhZGRyZXNzLlRv
U3RyaW5nKCkpLCBbYWRkcmVzcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYXV0byBu
YW1lLCBhdXRvIGVycm9yKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIFdlYkNvcmU6OkxpYldlYlJU
Q1Byb3ZpZGVyOjpjYWxsT25XZWJSVENOZXR3b3JrVGhyZWFkKFthZGRyZXNzLCBjYWxsYmFjayA9
IFdURk1vdmUoY2FsbGJhY2spLCBuYW1lID0gV1RGTW92ZShuYW1lKS5pc29sYXRlZENvcHkoKSwg
ZXJyb3JdIHsKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRihlcnJvciwgV2Vi
UlRDLCAiTUROUyByZWdpc3RyYXRpb24gb2YgYSBob3N0IGNhbmRpZGF0ZSBmYWlsZWQgd2l0aCBl
cnJvciAlZCIsICplcnJvcik7CisgICAgICAgICAgICAgICAgLy8gSW4gY2FzZSBvZiBlcnJvciwg
d2UgcHJvdmlkZSB0aGUgbmFtZSB0byBsZXQgZ2F0aGVyaW5nIGNvbXBsZXRlLgorICAgICAgICAg
ICAgICAgIGNhbGxiYWNrKGFkZHJlc3MsIG5hbWUudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAg
ICB9KTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9CisKK3ZvaWQgTGliV2ViUlRDTmV0d29ya01h
bmFnZXI6OlJlbW92ZU5hbWVGb3JBZGRyZXNzKGNvbnN0IHJ0Yzo6SVBBZGRyZXNzJiwgTmFtZVJl
bW92ZWRDYWxsYmFjaykKK3sKKyAgICAvLyBMaWJXZWJSVEMgYmFja2VuZCBkZWZpbmVzIHRoaXMg
bWV0aG9kIGJ1dCBkb2VzIG5vdCBjYWxsIGl0LgorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFVTRShMSUJXRUJSVEMpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2Vi
UlRDTmV0d29ya01hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dl
YnJ0Yy9MaWJXZWJSVENOZXR3b3JrTWFuYWdlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdhMjBlNGVjZjg2MjRh
ZDdmNjI2OTVlMzViYThhNTdiODdjMmYwNjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDTmV0d29ya01hbmFnZXIuaApA
QCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBVU0UoTElC
V0VCUlRDKQorCisjaW5jbHVkZSAiV2ViUlRDTW9uaXRvci5oIgorI2luY2x1ZGUgPFdlYkNvcmUv
TGliV2ViUlRDUHJvdmlkZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1JUQ05ldHdvcmtNYW5hZ2Vy
Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBMaWJXZWJSVENOZXR3b3JrTWFuYWdl
ciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpSVENOZXR3b3JrTWFuYWdlciwgcHVibGljIHJ0Yzo6
TmV0d29ya01hbmFnZXJCYXNlLCBwdWJsaWMgd2VicnRjOjpNZG5zUmVzcG9uZGVySW50ZXJmYWNl
LCBwdWJsaWMgV2ViUlRDTW9uaXRvcjo6T2JzZXJ2ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOworcHVibGljOgorICAgIHN0YXRpYyBMaWJXZWJSVENOZXR3b3JrTWFuYWdlciogZ2V0
T3JDcmVhdGUoV2ViQ29yZTo6RG9jdW1lbnRJZGVudGlmaWVyKTsKKyAgICB+TGliV2ViUlRDTmV0
d29ya01hbmFnZXIoKTsKKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBMaWJXZWJSVENOZXR3b3Jr
TWFuYWdlcihXZWJDb3JlOjpEb2N1bWVudElkZW50aWZpZXIpOworCisgICAgLy8gV2ViQ29yZTo6
UlRDTmV0d29ya01hbmFnZXIKKyAgICB2b2lkIHNldElDRUNhbmRpZGF0ZUZpbHRlcmluZyhib29s
IGRvRmlsdGVyaW5nKSBmaW5hbCB7IG1fdXNlTUROU0NhbmRpZGF0ZXMgPSBkb0ZpbHRlcmluZzsg
fQorICAgIHZvaWQgdW5yZWdpc3Rlck1ETlNOYW1lcygpIGZpbmFsOworCisgICAgLy8gd2VicnRj
OjpOZXR3b3JrTWFuYWdlckJhc2UKKyAgICB2b2lkIFN0YXJ0VXBkYXRpbmcoKSBmaW5hbDsKKyAg
ICB2b2lkIFN0b3BVcGRhdGluZygpIGZpbmFsOworICAgIHdlYnJ0Yzo6TWRuc1Jlc3BvbmRlcklu
dGVyZmFjZSogR2V0TWRuc1Jlc3BvbmRlcigpIGNvbnN0IGZpbmFsOworCisgICAgLy8gd2VicnRj
OjpNZG5zUmVzcG9uZGVySW50ZXJmYWNlCisgICAgdm9pZCBDcmVhdGVOYW1lRm9yQWRkcmVzcyhj
b25zdCBydGM6OklQQWRkcmVzcyYsIE5hbWVDcmVhdGVkQ2FsbGJhY2spOworICAgIHZvaWQgUmVt
b3ZlTmFtZUZvckFkZHJlc3MoY29uc3QgcnRjOjpJUEFkZHJlc3MmLCBOYW1lUmVtb3ZlZENhbGxi
YWNrKTsKKworICAgIC8vIFdlYlJUQ01vbml0b3I6Ok9ic2VydmVyCisgICAgdm9pZCBuZXR3b3Jr
c0NoYW5nZWQoY29uc3QgVmVjdG9yPFJUQ05ldHdvcms+JiwgY29uc3QgUlRDTmV0d29yazo6SVBB
ZGRyZXNzJiwgY29uc3QgUlRDTmV0d29yazo6SVBBZGRyZXNzJikgZmluYWw7CisgICAgdm9pZCBu
ZXR3b3JrUHJvY2Vzc0NyYXNoZWQoKSBmaW5hbDsKKworICAgIERvY3VtZW50SWRlbnRpZmllciBt
X2RvY3VtZW50SWRlbnRpZmllcjsKKyAgICBib29sIG1fdXNlTUROU0NhbmRpZGF0ZXMgeyB0cnVl
IH07CisgICAgYm9vbCBtX3JlY2VpdmVkTmV0d29ya0xpc3QgeyBmYWxzZSB9OworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHAKaW5k
ZXggOTY4YzlmMzA0YjY1NDgwOWY5OTI2MjU2YzEwMDU1MDdjOTcxMmY1NS4uZjljNGE5MGQ4MjFk
YWY3YThhYjM5YWZkZDMxNjQyMDU4NTE2M2I3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuY3Bw
CkBAIC0zMyw2ICszMyw3IEBACiAjZW5kaWYKIAogI2luY2x1ZGUgIkxpYldlYlJUQ05ldHdvcmsu
aCIKKyNpbmNsdWRlICJMaWJXZWJSVENOZXR3b3JrTWFuYWdlci5oIgogI2luY2x1ZGUgIlJUQ0Rh
dGFDaGFubmVsUmVtb3RlTWFuYWdlci5oIgogI2luY2x1ZGUgIldlYlBhZ2UuaCIKICNpbmNsdWRl
ICJXZWJQcm9jZXNzLmgiCkBAIC01NCw3ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgfQogfTsKIAot
cnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U+IExpYldl
YlJUQ1Byb3ZpZGVyOjpjcmVhdGVQZWVyQ29ubmVjdGlvbih3ZWJydGM6OlBlZXJDb25uZWN0aW9u
T2JzZXJ2ZXImIG9ic2VydmVyLCBydGM6OlBhY2tldFNvY2tldEZhY3RvcnkqIHNvY2tldEZhY3Rv
cnksIHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OlJUQ0NvbmZpZ3VyYXRpb24mJiBj
b25maWd1cmF0aW9uKQorcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25J
bnRlcmZhY2U+IExpYldlYlJUQ1Byb3ZpZGVyOjpjcmVhdGVQZWVyQ29ubmVjdGlvbihEb2N1bWVu
dElkZW50aWZpZXIgaWRlbnRpZmllciwgd2VicnRjOjpQZWVyQ29ubmVjdGlvbk9ic2VydmVyJiBv
YnNlcnZlciwgcnRjOjpQYWNrZXRTb2NrZXRGYWN0b3J5KiBzb2NrZXRGYWN0b3J5LCB3ZWJydGM6
OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpSVENDb25maWd1cmF0aW9uJiYgY29uZmlndXJhdGlv
bikKIHsKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIFBMQVRGT1JNKENPQ09BKSAmJiAhUExB
VEZPUk0oTUFDQ0FUQUxZU1QpCiAgICAgaWYgKCFtX2RpZEluaXRpYWxpemVDYWxsYmFjaykgewpA
QCAtNjcsMjIgKzY4LDE3IEBAIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlBlZXJDb25uZWN0
aW9uSW50ZXJmYWNlPiBMaWJXZWJSVENQcm92aWRlcjo6Y3JlYXRlUGVlCiAKICAgICBhdXRvJiBu
ZXR3b3JrTW9uaXRvciA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmxpYldlYlJUQ05ldHdvcmso
KS5tb25pdG9yKCk7CiAgICAgbmV0d29ya01vbml0b3Iuc2V0RW51bWVyYXRpbmdBbGxOZXR3b3Jr
SW50ZXJmYWNlc0VuYWJsZWQoaXNFbnVtZXJhdGluZ0FsbE5ldHdvcmtJbnRlcmZhY2VzRW5hYmxl
ZCgpKTsKLSAgICByZXR1cm4gV2ViQ29yZTo6TGliV2ViUlRDUHJvdmlkZXI6OmNyZWF0ZVBlZXJD
b25uZWN0aW9uKG9ic2VydmVyLCBuZXR3b3JrTW9uaXRvciwgKnNvY2tldEZhY3RvcnksIFdURk1v
dmUoY29uZmlndXJhdGlvbiksIG1ha2VVbmlxdWU8QXN5bmNSZXNvbHZlckZhY3Rvcnk+KCkpOwot
fQogCi12b2lkIExpYldlYlJUQ1Byb3ZpZGVyOjpkaXNhYmxlTm9uTG9jYWxob3N0Q29ubmVjdGlv
bnMoKQotewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmxpYldlYlJUQ05ldHdvcmsoKS5k
aXNhYmxlTm9uTG9jYWxob3N0Q29ubmVjdGlvbnMoKTsKLX0KKyAgICBhdXRvKiBuZXR3b3JrTWFu
YWdlciA9IExpYldlYlJUQ05ldHdvcmtNYW5hZ2VyOjpnZXRPckNyZWF0ZShpZGVudGlmaWVyKTsK
KyAgICBpZiAoIW5ldHdvcmtNYW5hZ2VyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotdm9p
ZCBMaWJXZWJSVENQcm92aWRlcjo6dW5yZWdpc3Rlck1ETlNOYW1lcyhEb2N1bWVudElkZW50aWZp
ZXIgZG9jdW1lbnRJZGVudGlmaWVyKQotewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmxp
YldlYlJUQ05ldHdvcmsoKS5tZG5zUmVnaXN0ZXIoKS51bnJlZ2lzdGVyTUROU05hbWVzKGRvY3Vt
ZW50SWRlbnRpZmllcik7CisgICAgcmV0dXJuIFdlYkNvcmU6OkxpYldlYlJUQ1Byb3ZpZGVyOjpj
cmVhdGVQZWVyQ29ubmVjdGlvbihvYnNlcnZlciwgKm5ldHdvcmtNYW5hZ2VyLCAqc29ja2V0RmFj
dG9yeSwgV1RGTW92ZShjb25maWd1cmF0aW9uKSwgbWFrZVVuaXF1ZTxBc3luY1Jlc29sdmVyRmFj
dG9yeT4oKSk7CiB9CiAKLXZvaWQgTGliV2ViUlRDUHJvdmlkZXI6OnJlZ2lzdGVyTUROU05hbWUo
RG9jdW1lbnRJZGVudGlmaWVyIGRvY3VtZW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBpcEFk
ZHJlc3MsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoTUROU05hbWVPckVycm9yJiYpPiYmIGNhbGxi
YWNrKQordm9pZCBMaWJXZWJSVENQcm92aWRlcjo6ZGlzYWJsZU5vbkxvY2FsaG9zdENvbm5lY3Rp
b25zKCkKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5saWJXZWJSVENOZXR3b3JrKCku
bWRuc1JlZ2lzdGVyKCkucmVnaXN0ZXJNRE5TTmFtZShkb2N1bWVudElkZW50aWZpZXIsIGlwQWRk
cmVzcywgV1RGTW92ZShjYWxsYmFjaykpOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmxp
YldlYlJUQ05ldHdvcmsoKS5kaXNhYmxlTm9uTG9jYWxob3N0Q29ubmVjdGlvbnMoKTsKIH0KIAog
Y2xhc3MgUlRDU29ja2V0RmFjdG9yeSBmaW5hbCA6IHB1YmxpYyBMaWJXZWJSVENQcm92aWRlcjo6
U3VzcGVuZGFibGVTb2NrZXRGYWN0b3J5IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmgKaW5kZXggNzJh
ZDNhNDI5ZmVmYmZhMWQ0Y2FlZjVjMmJmN2M5NTczMDFlMTIwMS4uODgzYWRmY2FjOTMwYzA2ZDk1
OGQyMzk4ZjI3MGM3NWYxYzY0NGU4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmgKQEAgLTU0LDEw
ICs1NCw4IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPFN1c3BlbmRh
YmxlU29ja2V0RmFjdG9yeT4gY3JlYXRlU29ja2V0RmFjdG9yeShTdHJpbmcmJiAvKiB1c2VyQWdl
bnQgKi8sIGJvb2wgLyogaXNGaXJzdFBhcnR5ICovLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biYmKSBmaW5hbDsKIAotICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlBlZXJDb25uZWN0
aW9uSW50ZXJmYWNlPiBjcmVhdGVQZWVyQ29ubmVjdGlvbih3ZWJydGM6OlBlZXJDb25uZWN0aW9u
T2JzZXJ2ZXImLCBydGM6OlBhY2tldFNvY2tldEZhY3RvcnkqLCB3ZWJydGM6OlBlZXJDb25uZWN0
aW9uSW50ZXJmYWNlOjpSVENDb25maWd1cmF0aW9uJiYpIGZpbmFsOworICAgIHJ0Yzo6c2NvcGVk
X3JlZnB0cjx3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlPiBjcmVhdGVQZWVyQ29ubmVj
dGlvbihXZWJDb3JlOjpEb2N1bWVudElkZW50aWZpZXIsIHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25P
YnNlcnZlciYsIHJ0Yzo6UGFja2V0U29ja2V0RmFjdG9yeSosIHdlYnJ0Yzo6UGVlckNvbm5lY3Rp
b25JbnRlcmZhY2U6OlJUQ0NvbmZpZ3VyYXRpb24mJikgZmluYWw7CiAKLSAgICB2b2lkIHVucmVn
aXN0ZXJNRE5TTmFtZXMoV2ViQ29yZTo6RG9jdW1lbnRJZGVudGlmaWVyKSBmaW5hbDsKLSAgICB2
b2lkIHJlZ2lzdGVyTUROU05hbWUoV2ViQ29yZTo6RG9jdW1lbnRJZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIGlwQWRkcmVzcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChNRE5TTmFtZU9yRXJyb3Im
Jik+JiYpIGZpbmFsOwogICAgIHZvaWQgZGlzYWJsZU5vbkxvY2FsaG9zdENvbm5lY3Rpb25zKCkg
ZmluYWw7CiAgICAgdm9pZCBzdGFydGVkTmV0d29ya1RocmVhZCgpIGZpbmFsOwogICAgIFJlZlB0
cjxXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXJDb25uZWN0aW9uPiBjcmVhdGVS
VENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXJDb25uZWN0aW9uKCkgZmluYWw7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvV2ViTUROU1JlZ2lzdGVy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJNRE5TUmVn
aXN0ZXIuY3BwCmluZGV4IDUxNTkwZjlhY2NlNjI0NDA2OGIxNDdjZTZhOWM3YzE4MjU3NTc3NjEu
Ljc2MDIwN2VhNTliY2EyNTQ1MjJmNTZjNTlhNTI0NWU1OTVhOGRlMmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJNRE5TUmVnaXN0ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJNRE5TUmVn
aXN0ZXIuY3BwCkBAIC0zNiwyMiArMzYsMjIgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CiAKLXZvaWQgV2ViTUROU1JlZ2lzdGVyOjpmaW5pc2hlZFJlZ2lz
dGVyaW5nTUROU05hbWUoTUROU1JlZ2lzdGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBMaWJXZWJS
VENQcm92aWRlcjo6TUROU05hbWVPckVycm9yJiYgcmVzdWx0KQordm9pZCBXZWJNRE5TUmVnaXN0
ZXI6OmZpbmlzaGVkUmVnaXN0ZXJpbmdNRE5TTmFtZShNRE5TUmVnaXN0ZXJJZGVudGlmaWVyIGlk
ZW50aWZpZXIsIFN0cmluZyYmIG5hbWUsIHN0ZDo6b3B0aW9uYWw8TUROU1JlZ2lzdGVyRXJyb3I+
IGVycm9yKQogewogICAgIGF1dG8gcGVuZGluZ1JlZ2lzdHJhdGlvbiA9IG1fcGVuZGluZ1JlZ2lz
dHJhdGlvbnMudGFrZShpZGVudGlmaWVyKTsKICAgICBpZiAoIXBlbmRpbmdSZWdpc3RyYXRpb24u
Y2FsbGJhY2spCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChyZXN1bHQuaGFzX3ZhbHVlKCkp
IHsKKyAgICBpZiAoIWVycm9yKSB7CiAgICAgICAgIGF1dG8gaXRlcmF0b3IgPSBtX3JlZ2lzdGVy
aW5nRG9jdW1lbnRzLmZpbmQocGVuZGluZ1JlZ2lzdHJhdGlvbi5kb2N1bWVudElkZW50aWZpZXIp
OwogICAgICAgICBpZiAoaXRlcmF0b3IgPT0gbV9yZWdpc3RlcmluZ0RvY3VtZW50cy5lbmQoKSkg
ewotICAgICAgICAgICAgcGVuZGluZ1JlZ2lzdHJhdGlvbi5jYWxsYmFjayhtYWtlVW5leHBlY3Rl
ZChXZWJDb3JlOjpNRE5TUmVnaXN0ZXJFcnJvcjo6RE5TU0QpKTsKKyAgICAgICAgICAgIHBlbmRp
bmdSZWdpc3RyYXRpb24uY2FsbGJhY2sobmFtZSwgV2ViQ29yZTo6TUROU1JlZ2lzdGVyRXJyb3I6
OkROU1NEKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBpdGVyYXRv
ci0+dmFsdWUuYWRkKHBlbmRpbmdSZWdpc3RyYXRpb24uaXBBZGRyZXNzLCByZXN1bHQudmFsdWUo
KSk7CisgICAgICAgIGl0ZXJhdG9yLT52YWx1ZS5hZGQocGVuZGluZ1JlZ2lzdHJhdGlvbi5pcEFk
ZHJlc3MsIG5hbWUpOwogICAgIH0KIAotICAgIHBlbmRpbmdSZWdpc3RyYXRpb24uY2FsbGJhY2so
V1RGTW92ZShyZXN1bHQpKTsKKyAgICBwZW5kaW5nUmVnaXN0cmF0aW9uLmNhbGxiYWNrKG5hbWUs
IGVycm9yKTsKIH0KIAogdm9pZCBXZWJNRE5TUmVnaXN0ZXI6OnVucmVnaXN0ZXJNRE5TTmFtZXMo
RG9jdW1lbnRJZGVudGlmaWVyIGlkZW50aWZpZXIpCkBAIC02Myw3ICs2Myw3IEBAIHZvaWQgV2Vi
TUROU1JlZ2lzdGVyOjp1bnJlZ2lzdGVyTUROU05hbWVzKERvY3VtZW50SWRlbnRpZmllciBpZGVu
dGlmaWVyKQogICAgIGNvbm5lY3Rpb24uc2VuZChNZXNzYWdlczo6TmV0d29ya01ETlNSZWdpc3Rl
cjo6VW5yZWdpc3Rlck1ETlNOYW1lcyB7IGlkZW50aWZpZXIgfSwgMCk7CiB9CiAKLXZvaWQgV2Vi
TUROU1JlZ2lzdGVyOjpyZWdpc3Rlck1ETlNOYW1lKERvY3VtZW50SWRlbnRpZmllciBpZGVudGlm
aWVyLCBjb25zdCBTdHJpbmcmIGlwQWRkcmVzcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChMaWJX
ZWJSVENQcm92aWRlcjo6TUROU05hbWVPckVycm9yJiYpPiYmIGNhbGxiYWNrKQordm9pZCBXZWJN
RE5TUmVnaXN0ZXI6OnJlZ2lzdGVyTUROU05hbWUoRG9jdW1lbnRJZGVudGlmaWVyIGlkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgaXBBZGRyZXNzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0
IFN0cmluZyYsIHN0ZDo6b3B0aW9uYWw8TUROU1JlZ2lzdGVyRXJyb3I+KT4mJiBjYWxsYmFjaykK
IHsKICAgICBhdXRvJiBtYXAgPSBtX3JlZ2lzdGVyaW5nRG9jdW1lbnRzLmVuc3VyZShpZGVudGlm
aWVyLCBbXSB7CiAgICAgICAgIHJldHVybiBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiB7IH07CkBA
IC03MSwxNiArNzEsMTcgQEAgdm9pZCBXZWJNRE5TUmVnaXN0ZXI6OnJlZ2lzdGVyTUROU05hbWUo
RG9jdW1lbnRJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFN0cmkKIAogICAgIGF1dG8gaXRl
cmF0b3IgPSBtYXAuZmluZChpcEFkZHJlc3MpOwogICAgIGlmIChpdGVyYXRvciAhPSBtYXAuZW5k
KCkpIHsKLSAgICAgICAgY2FsbGJhY2soaXRlcmF0b3ItPnZhbHVlKTsKKyAgICAgICAgY2FsbGJh
Y2soaXRlcmF0b3ItPnZhbHVlLCB7IH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAg
YXV0byByZXF1ZXN0SWRlbnRpZmllciA9IE1ETlNSZWdpc3RlcklkZW50aWZpZXI6OmdlbmVyYXRl
KCk7CiAgICAgbV9wZW5kaW5nUmVnaXN0cmF0aW9ucy5hZGQocmVxdWVzdElkZW50aWZpZXIsIFBl
bmRpbmdSZWdpc3RyYXRpb24geyBXVEZNb3ZlKGNhbGxiYWNrKSwgaWRlbnRpZmllciwgaXBBZGRy
ZXNzIH0pOwogCisgICAgLy8gRklYTUU6IFVzZSBhc3luYyByZXBseS4KICAgICBhdXRvJiBjb25u
ZWN0aW9uID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uKCkuY29ubmVjdGlvbigpOwogICAgIGlmICghY29ubmVjdGlvbi5zZW5kKE1lc3NhZ2Vz
OjpOZXR3b3JrTUROU1JlZ2lzdGVyOjpSZWdpc3Rlck1ETlNOYW1lIHsgcmVxdWVzdElkZW50aWZp
ZXIsIGlkZW50aWZpZXIsIGlwQWRkcmVzcyB9LCAwKSkKLSAgICAgICAgZmluaXNoZWRSZWdpc3Rl
cmluZ01ETlNOYW1lKHJlcXVlc3RJZGVudGlmaWVyLCBtYWtlVW5leHBlY3RlZChNRE5TUmVnaXN0
ZXJFcnJvcjo6SW50ZXJuYWwpKTsKKyAgICAgICAgZmluaXNoZWRSZWdpc3RlcmluZ01ETlNOYW1l
KHJlcXVlc3RJZGVudGlmaWVyLCB7IH0sIE1ETlNSZWdpc3RlckVycm9yOjpJbnRlcm5hbCk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvd2VicnRjL1dlYk1ETlNSZWdpc3Rlci5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1dlYk1ETlNSZWdpc3Rlci5oCmluZGV4IDBjMGY2MTMz
YWY0NjhjOWViYjhjNjdhMmFlNGU4YzlhNzMzZWU2YWQuLjJjMGZmMGU0NjY1MTFmOTc4ZmI4MDky
NzIwYWYwNzNkYmY1MzhmYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL3dlYnJ0Yy9XZWJNRE5TUmVnaXN0ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay93ZWJydGMvV2ViTUROU1JlZ2lzdGVyLmgKQEAgLTQ2LDE1ICs0NiwxNSBA
QCBwdWJsaWM6CiAgICAgV2ViTUROU1JlZ2lzdGVyKCkgPSBkZWZhdWx0OwogCiAgICAgdm9pZCB1
bnJlZ2lzdGVyTUROU05hbWVzKFdlYkNvcmU6OkRvY3VtZW50SWRlbnRpZmllcik7Ci0gICAgdm9p
ZCByZWdpc3Rlck1ETlNOYW1lKFdlYkNvcmU6OkRvY3VtZW50SWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiBpcEFkZHJlc3MsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6TGliV2ViUlRD
UHJvdmlkZXI6Ok1ETlNOYW1lT3JFcnJvciYmKT4mJik7CisgICAgdm9pZCByZWdpc3Rlck1ETlNO
YW1lKFdlYkNvcmU6OkRvY3VtZW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBpcEFkZHJlc3Ms
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJiwgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpNRE5TUmVnaXN0ZXJFcnJvcj4pPiYmKTsKIAogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CiAKIHByaXZhdGU6Ci0gICAgdm9p
ZCBmaW5pc2hlZFJlZ2lzdGVyaW5nTUROU05hbWUoTUROU1JlZ2lzdGVySWRlbnRpZmllciwgV2Vi
Q29yZTo6TGliV2ViUlRDUHJvdmlkZXI6Ok1ETlNOYW1lT3JFcnJvciYmKTsKKyAgICB2b2lkIGZp
bmlzaGVkUmVnaXN0ZXJpbmdNRE5TTmFtZShNRE5TUmVnaXN0ZXJJZGVudGlmaWVyLCBTdHJpbmcm
Jiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpNRE5TUmVnaXN0ZXJFcnJvcj4pOwogCiAgICAgc3Ry
dWN0IFBlbmRpbmdSZWdpc3RyYXRpb24gewotICAgICAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFdlYkNvcmU6OkxpYldlYlJUQ1Byb3ZpZGVyOjpNRE5TTmFtZU9yRXJyb3ImJik+IGNhbGxiYWNr
OworICAgICAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYsIHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6TUROU1JlZ2lzdGVyRXJyb3I+KT4gY2FsbGJhY2s7CiAgICAgICAgIFdl
YkNvcmU6OkRvY3VtZW50SWRlbnRpZmllciBkb2N1bWVudElkZW50aWZpZXI7CiAgICAgICAgIFN0
cmluZyBpcEFkZHJlc3M7CiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJNRE5TUmVnaXN0ZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvV2ViTUROU1JlZ2lzdGVyLm1lc3NhZ2Vz
LmluCmluZGV4IGFiMTJhMWUwMTkyNmQ2YWZjYjRjMjQ3OGVkNTNmNWMzNjJhODhiOWIuLmYxZWE1
YzczMDZkMmEwYzZkZTlmMWI4MTIwNzYzZTlmZDkzMWRhNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJNRE5TUmVnaXN0ZXIubWVzc2FnZXMu
aW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1dlYk1ETlNS
ZWdpc3Rlci5tZXNzYWdlcy5pbgpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDE4LTIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0yMyw3ICsyMyw3IEBACiAjaWYgRU5BQkxFKFdFQl9SVEMpCiAKIG1lc3NhZ2Vz
IC0+IFdlYk1ETlNSZWdpc3RlciBOb3RSZWZDb3VudGVkIHsKLSAgICB2b2lkIEZpbmlzaGVkUmVn
aXN0ZXJpbmdNRE5TTmFtZShXZWJLaXQ6Ok1ETlNSZWdpc3RlcklkZW50aWZpZXIgaWRlbnRpZmll
ciwgV2ViQ29yZTo6TGliV2ViUlRDUHJvdmlkZXI6Ok1ETlNOYW1lT3JFcnJvciByZXN1bHQpCisg
ICAgdm9pZCBGaW5pc2hlZFJlZ2lzdGVyaW5nTUROU05hbWUoV2ViS2l0OjpNRE5TUmVnaXN0ZXJJ
ZGVudGlmaWVyIGlkZW50aWZpZXIsIFN0cmluZyBtZG5zTmFtZSwgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpNRE5TUmVnaXN0ZXJFcnJvcj4gZXJyb3IpCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoV0VC
X1JUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0
Yy9XZWJSVENNb25pdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dl
YnJ0Yy9XZWJSVENNb25pdG9yLmNwcAppbmRleCAwZjlkYWQyZDFkMjlkMGIzMDc5ZDM4NzFiN2Ux
NDU0MTUyOTA0OTM2Li5kMGNiOThiZTg4MGJiNjEzZmRhMjMxNTAyZTY3MDJjMDRhZjIwMjM3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvV2ViUlRD
TW9uaXRvci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRj
L1dlYlJUQ01vbml0b3IuY3BwCkBAIC0zMyw4ICszMyw2IEBACiAjaW5jbHVkZSAiTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiTmV0d29ya1JUQ01vbml0b3JNZXNzYWdlcy5o
IgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0xpYldlYlJUQ01h
Y3Jvcy5oPgotI2luY2x1ZGUgPHdlYnJ0Yy9ydGNfYmFzZS9uZXRfaGVscGVycy5oPgogI2luY2x1
ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTMsNjcgKzUx
LDQzIEBAIHZvaWQgV2ViUlRDTW9uaXRvcjo6c2V0RW51bWVyYXRpbmdBbGxOZXR3b3JrSW50ZXJm
YWNlc0VuYWJsZWQoYm9vbCBlbmFibGVkKQogICAgIG1fZW5hYmxlRW51bWVyYXRpbmdBbGxOZXR3
b3JrSW50ZXJmYWNlcyA9IGVuYWJsZWQ7CiB9CiAKLXZvaWQgV2ViUlRDTW9uaXRvcjo6U3RhcnRV
cGRhdGluZygpCit2b2lkIFdlYlJUQ01vbml0b3I6OnN0YXJ0VXBkYXRpbmcoKQogewotICAgIFdF
QlJUQ19SRUxFQVNFX0xPRygiU3RhcnRVcGRhdGluZyIpOwotICAgIGlmIChtX3JlY2VpdmVkTmV0
d29ya0xpc3QpIHsKLSAgICAgICAgV2ViQ29yZTo6TGliV2ViUlRDUHJvdmlkZXI6OmNhbGxPbldl
YlJUQ05ldHdvcmtUaHJlYWQoW3RoaXNdIHsKLSAgICAgICAgICAgIFNpZ25hbE5ldHdvcmtzQ2hh
bmdlZCgpOwotICAgICAgICB9KTsKLSAgICB9Ci0KLSAgICBzZW5kT25NYWluVGhyZWFkKFt0aGlz
XShhdXRvJiBjb25uZWN0aW9uKSB7Ci0gICAgICAgIFdFQlJUQ19SRUxFQVNFX0xPRygiU3RhcnRV
cGRhdGluZyAtIEFza2luZyBuZXR3b3JrIHByb2Nlc3MgdG8gc3RhcnQgdXBkYXRpbmciKTsKLSAg
ICAgICAgY29ubmVjdGlvbi5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUlRDTW9uaXRvcjo6U3RhcnRV
cGRhdGluZ0lmTmVlZGVkKG1fZW5hYmxlRW51bWVyYXRpbmdBbGxOZXR3b3JrSW50ZXJmYWNlcyks
IDApOwotICAgIH0pOworICAgIFdFQlJUQ19SRUxFQVNFX0xPRygiU3RhcnRVcGRhdGluZyAtIEFz
a2luZyBuZXR3b3JrIHByb2Nlc3MgdG8gc3RhcnQgdXBkYXRpbmciKTsKKworICAgIFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rp
b24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUlRDTW9uaXRvcjo6U3RhcnRVcGRhdGluZ0lmTmVl
ZGVkKG1fZW5hYmxlRW51bWVyYXRpbmdBbGxOZXR3b3JrSW50ZXJmYWNlcyksIDApOwogICAgICsr
bV9jbGllbnRDb3VudDsKIH0KIAotdm9pZCBXZWJSVENNb25pdG9yOjpTdG9wVXBkYXRpbmcoKQor
dm9pZCBXZWJSVENNb25pdG9yOjpzdG9wVXBkYXRpbmcoKQogewogICAgIFdFQlJUQ19SRUxFQVNF
X0xPRygiU3RvcFVwZGF0aW5nIik7CisKICAgICBBU1NFUlQobV9jbGllbnRDb3VudCk7CiAgICAg
aWYgKC0tbV9jbGllbnRDb3VudCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgc2VuZE9uTWFpblRo
cmVhZChbdGhpc10oYXV0byYgY29ubmVjdGlvbikgewotICAgICAgICBXRUJSVENfUkVMRUFTRV9M
T0coIlN0b3BVcGRhdGluZyAtIEFza2luZyBuZXR3b3JrIHByb2Nlc3MgdG8gc3RvcCB1cGRhdGlu
ZyIpOwotICAgICAgICBjb25uZWN0aW9uLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtSVENNb25pdG9y
OjpTdG9wVXBkYXRpbmcoKSwgMCk7Ci0gICAgfSk7CisgICAgV0VCUlRDX1JFTEVBU0VfTE9HKCJT
dG9wVXBkYXRpbmcgLSBBc2tpbmcgbmV0d29yayBwcm9jZXNzIHRvIHN0b3AgdXBkYXRpbmciKTsK
KyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya1JUQ01vbml0b3I6OlN0b3BV
cGRhdGluZygpLCAwKTsKIH0KIAotdm9pZCBXZWJSVENNb25pdG9yOjpuZXR3b3Jrc0NoYW5nZWQo
Y29uc3QgVmVjdG9yPFJUQ05ldHdvcms+JiBuZXR3b3JrcywgY29uc3QgUlRDTmV0d29yazo6SVBB
ZGRyZXNzJiBpcHY0LCBjb25zdCBSVENOZXR3b3JrOjpJUEFkZHJlc3MmIGlwdjYpCit2b2lkIFdl
YlJUQ01vbml0b3I6Om5ldHdvcmtzQ2hhbmdlZChWZWN0b3I8UlRDTmV0d29yaz4mJiBuZXR3b3Jr
TGlzdCwgUlRDTmV0d29yazo6SVBBZGRyZXNzJiYgaXB2NCwgUlRDTmV0d29yazo6SVBBZGRyZXNz
JiYgaXB2NikKIHsKICAgICBXRUJSVENfUkVMRUFTRV9MT0coIm5ldHdvcmtzQ2hhbmdlZCIpOwot
ICAgIC8vIE5vIG5lZWQgdG8gcHJvdGVjdCAndGhpcycgYXMgaXQgaGFzIHRoZSBsaWZldGltZSBv
ZiBMaWJXZWJSVEMgd2hpY2ggaGFzIHRoZSBsaWZldGltZSBvZiB0aGUgd2ViIHByb2Nlc3MuCi0g
ICAgV2ViQ29yZTo6TGliV2ViUlRDUHJvdmlkZXI6OmNhbGxPbldlYlJUQ05ldHdvcmtUaHJlYWQo
W3RoaXMsIG5ldHdvcmtzLCBpcHY0LCBpcHY2XSB7Ci0gICAgICAgIFdFQlJUQ19SRUxFQVNFX0xP
RygibmV0d29ya3NDaGFuZ2VkIC0gU2lnbmFsaW5nIik7Ci0gICAgICAgIHN0ZDo6dmVjdG9yPHJ0
Yzo6TmV0d29yayo+IG5ldHdvcmtMaXN0KG5ldHdvcmtzLnNpemUoKSk7Ci0gICAgICAgIGZvciAo
c2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBuZXR3b3Jrcy5zaXplKCk7ICsraW5kZXgpCi0gICAg
ICAgICAgICBuZXR3b3JrTGlzdFtpbmRleF0gPSBuZXcgcnRjOjpOZXR3b3JrKG5ldHdvcmtzW2lu
ZGV4XS52YWx1ZSgpKTsKLQotICAgICAgICBib29sIGZvcmNlU2lnbmFsaW5nID0gIW1fcmVjZWl2
ZWROZXR3b3JrTGlzdDsKLSAgICAgICAgbV9yZWNlaXZlZE5ldHdvcmtMaXN0ID0gdHJ1ZTsKLQot
ICAgICAgICBib29sIGhhc0NoYW5nZWQ7Ci0gICAgICAgIHNldF9kZWZhdWx0X2xvY2FsX2FkZHJl
c3NlcyhpcHY0LnZhbHVlLCBpcHY2LnZhbHVlKTsKLSAgICAgICAgTWVyZ2VOZXR3b3JrTGlzdChu
ZXR3b3JrTGlzdCwgJmhhc0NoYW5nZWQpOwotICAgICAgICBpZiAoaGFzQ2hhbmdlZCB8fCBmb3Jj
ZVNpZ25hbGluZykKLSAgICAgICAgICAgIFNpZ25hbE5ldHdvcmtzQ2hhbmdlZCgpOwogCi0gICAg
fSk7CisgICAgbV9kaWRSZWNlaXZlTmV0d29ya0xpc3QgPSB0cnVlOworICAgIG1fbmV0d29ya0xp
c3QgPSBXVEZNb3ZlKG5ldHdvcmtMaXN0KTsKKyAgICBtX2lwdjQgPSBXVEZNb3ZlKGlwdjQpOwor
ICAgIG1faXB2NiA9IFdURk1vdmUoaXB2Nik7CisKKyAgICBmb3IgKGF1dG8mIG9ic2VydmVyIDog
bV9vYnNlcnZlcnMpCisgICAgICAgIG9ic2VydmVyLm5ldHdvcmtzQ2hhbmdlZChtX25ldHdvcmtM
aXN0LCBtX2lwdjQsIG1faXB2Nik7CiB9CiAKIHZvaWQgV2ViUlRDTW9uaXRvcjo6bmV0d29ya1By
b2Nlc3NDcmFzaGVkKCkKIHsKLSAgICBtX3JlY2VpdmVkTmV0d29ya0xpc3QgPSBmYWxzZTsKLSAg
ICBpZiAoIVdlYkNvcmU6OkxpYldlYlJUQ1Byb3ZpZGVyOjpoYXNXZWJSVENUaHJlYWRzKCkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIC8vIEluIGNhc2Ugd2UgaGF2ZSBjbGllbnRzIHdhaXRpbmcg
Zm9yIG5ldHdvcmtzQ2hhbmdlZCwgd2UgY2FsbCBTaWduYWxOZXR3b3Jrc0NoYW5nZWQgdG8gbWFr
ZSBzdXJlIHRoZXkgZG8gbm90IHdhaXQgZm9yIG5vdGhpbmcuICAgIAotICAgIFdlYkNvcmU6Okxp
YldlYlJUQ1Byb3ZpZGVyOjpjYWxsT25XZWJSVENOZXR3b3JrVGhyZWFkKFt0aGlzXSB7Ci0gICAg
ICAgIFNpZ25hbE5ldHdvcmtzQ2hhbmdlZCgpOwotICAgIH0pOworICAgIGZvciAoYXV0byYgb2Jz
ZXJ2ZXIgOiBtX29ic2VydmVycykKKyAgICAgICAgb2JzZXJ2ZXIubmV0d29ya1Byb2Nlc3NDcmFz
aGVkKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1dlYlJUQ01vbml0b3IuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJSVENNb25pdG9yLmgKaW5kZXggZjZi
OTczOWZhZGRjMzgyY2Q0MjJlNWJhYThlYTI4NTZlNWY0ZmIwZi4uMDY4NTkwZTUzMjY0MWExZmRh
MzU3YWFjMTJhZDIzMjRiMjA0NDI0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvd2VicnRjL1dlYlJUQ01vbml0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay93ZWJydGMvV2ViUlRDTW9uaXRvci5oCkBAIC0zMCw2ICszMCw3IEBA
CiAjaW5jbHVkZSAiUlRDTmV0d29yay5oIgogI2luY2x1ZGUgPFdlYkNvcmUvTGliV2ViUlRDUHJv
dmlkZXIuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrSGFz
aFNldC5oPgogCiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIENvbm5lY3Rpb247CkBAIC00MCwyNiAr
NDEsNDIgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHN0cnVjdCBOZXR3b3Jrc0NoYW5nZWREYXRh
OwogCi1jbGFzcyBXZWJSVENNb25pdG9yIGZpbmFsIDogcHVibGljIHJ0Yzo6TmV0d29ya01hbmFn
ZXJCYXNlIHsKK2NsYXNzIFdlYlJUQ01vbml0b3IgewogcHVibGljOgogICAgIFdlYlJUQ01vbml0
b3IoKSA9IGRlZmF1bHQ7CiAKKyAgICBjbGFzcyBPYnNlcnZlciA6IHB1YmxpYyBDYW5NYWtlV2Vh
a1B0cjxPYnNlcnZlcj4geworICAgIHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCB+T2JzZXJ2ZXIo
KSA9IGRlZmF1bHQ7CisgICAgICAgIHZpcnR1YWwgdm9pZCBuZXR3b3Jrc0NoYW5nZWQoY29uc3Qg
VmVjdG9yPFJUQ05ldHdvcms+JiwgY29uc3QgUlRDTmV0d29yazo6SVBBZGRyZXNzJiwgY29uc3Qg
UlRDTmV0d29yazo6SVBBZGRyZXNzJikgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgbmV0d29y
a1Byb2Nlc3NDcmFzaGVkKCkgPSAwOworICAgIH07CisgICAgdm9pZCBhZGRPYnNlcnZlcihPYnNl
cnZlciYgb2JzZXJ2ZXIpIHsgbV9vYnNlcnZlcnMuYWRkKG9ic2VydmVyKTsgfQorICAgIHZvaWQg
cmVtb3ZlT2JzZXJ2ZXIoT2JzZXJ2ZXImIG9ic2VydmVyKSB7IG1fb2JzZXJ2ZXJzLnJlbW92ZShv
YnNlcnZlcik7IH0KKyAgICB2b2lkIHN0YXJ0VXBkYXRpbmcoKTsKKyAgICB2b2lkIHN0b3BVcGRh
dGluZygpOworCiAgICAgdm9pZCBuZXR3b3JrUHJvY2Vzc0NyYXNoZWQoKTsKICAgICB2b2lkIGRp
ZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwogICAgIHZv
aWQgc2V0RW51bWVyYXRpbmdBbGxOZXR3b3JrSW50ZXJmYWNlc0VuYWJsZWQoYm9vbCk7CiAKLXBy
aXZhdGU6Ci0gICAgdm9pZCBuZXR3b3Jrc0NoYW5nZWQoY29uc3QgVmVjdG9yPFJUQ05ldHdvcms+
JiBuZXR3b3JrTGlzdCwgY29uc3QgUlRDTmV0d29yazo6SVBBZGRyZXNzJiwgY29uc3QgUlRDTmV0
d29yazo6SVBBZGRyZXNzJik7CisgICAgYm9vbCBkaWRSZWNlaXZlTmV0d29ya0xpc3QoKSBjb25z
dCB7IHJldHVybiBtX2RpZFJlY2VpdmVOZXR3b3JrTGlzdDsgfQorICAgIGNvbnN0IFZlY3RvcjxS
VENOZXR3b3JrPiYgbmV0d29ya0xpc3QoKSBjb25zdCB7IHJldHVybiBtX25ldHdvcmtMaXN0OyB9
CisgICAgY29uc3QgUlRDTmV0d29yazo6SVBBZGRyZXNzJiBpcHY0KCkgY29uc3QgeyByZXR1cm4g
bV9pcHY0OyB9CisgICAgY29uc3QgUlRDTmV0d29yazo6SVBBZGRyZXNzJiBpcHY2KCkgY29uc3Qg
eyByZXR1cm4gbV9pcHY2OyB9CiAKLSAgICB2b2lkIFN0YXJ0VXBkYXRpbmcoKSBmaW5hbDsKLSAg
ICB2b2lkIFN0b3BVcGRhdGluZygpIGZpbmFsOwotICAgIHdlYnJ0Yzo6TWRuc1Jlc3BvbmRlcklu
dGVyZmFjZSogR2V0TWRuc1Jlc3BvbmRlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG51bGxwdHI7
IH0KK3ByaXZhdGU6CisgICAgdm9pZCBuZXR3b3Jrc0NoYW5nZWQoVmVjdG9yPFJUQ05ldHdvcms+
JiYsIFJUQ05ldHdvcms6OklQQWRkcmVzcyYmLCBSVENOZXR3b3JrOjpJUEFkZHJlc3MmJik7CiAK
ICAgICBzdGF0aWMgdm9pZCBzZW5kT25NYWluVGhyZWFkKEZ1bmN0aW9uPHZvaWQoSVBDOjpDb25u
ZWN0aW9uJik+JiYpOwogCiAgICAgdW5zaWduZWQgbV9jbGllbnRDb3VudCB7IDAgfTsKLSAgICBi
b29sIG1fcmVjZWl2ZWROZXR3b3JrTGlzdCB7IGZhbHNlIH07CisgICAgV2Vha0hhc2hTZXQ8T2Jz
ZXJ2ZXI+IG1fb2JzZXJ2ZXJzOwogICAgIGJvb2wgbV9lbmFibGVFbnVtZXJhdGluZ0FsbE5ldHdv
cmtJbnRlcmZhY2VzIHsgZmFsc2UgfTsKKyAgICBib29sIG1fZGlkUmVjZWl2ZU5ldHdvcmtMaXN0
IHsgZmFsc2UgfTsKKyAgICBWZWN0b3I8UlRDTmV0d29yaz4gbV9uZXR3b3JrTGlzdDsKKyAgICBS
VENOZXR3b3JrOjpJUEFkZHJlc3MgbV9pcHY0OworICAgIFJUQ05ldHdvcms6OklQQWRkcmVzcyBt
X2lwdjY7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA4ZDliNGE1Y2M1ZTYy
ZDY4YTAzYmI5NGNiNjE3MTA2YTIzMGYxMWVmLi5jOThkNDFkYzMzMjcwMWYxZWNjYTBkNDBlYTVj
YTcxNmVlYzQ0ZmFkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMDktMDEgIFlvdWVubiBG
YWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBsaWJ3ZWJydGMg
bmV0d29yayBtYW5hZ2VyIEdldE1kbnNSZXNwb25kZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyOTc1NworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogd2VicnRjL2RhdGFjaGFubmVsL2ZpbHRlci1pY2Ut
Y2FuZGlkYXRlLmh0bWw6CisgICAgICAgICogd2VicnRjL2ZpbHRlcmluZy1pY2UtY2FuZGlkYXRl
LWFmdGVyLXJlbG9hZC5odG1sOgorICAgICAgICBVcGRhdGUgdGVzdHMgZ2l2ZW4gbUROUyBJQ0Ug
Y2FuZGlkYXRlcyBhcmUgbm93IHNob3dpbmcgdXAgaW4gZGVzY3JpcHRpb25zLgorCiAyMDIxLTA4
LTMxICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBNaWdyYXRl
IHRvIGxhdGVzdCBsaWJ3ZWJydGMgQWRkSWNlQ2FuZGlkYXRlCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJydGMvZGF0YWNoYW5uZWwvZmlsdGVyLWljZS1jYW5kaWRhdGUuaHRtbCBiL0xheW91
dFRlc3RzL3dlYnJ0Yy9kYXRhY2hhbm5lbC9maWx0ZXItaWNlLWNhbmRpZGF0ZS5odG1sCmluZGV4
IGNjYzQ2OWExNzdlMDA5MmI2NzU3YjViYzRkMTc3NTNhYjFmYjk1M2IuLjc0ZTc4ZjQ5MzI1ODU5
ZmZiNTY4NDE2NTUxZDU0MWY4MDI3NmIzNjcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3dlYnJ0
Yy9kYXRhY2hhbm5lbC9maWx0ZXItaWNlLWNhbmRpZGF0ZS5odG1sCisrKyBiL0xheW91dFRlc3Rz
L3dlYnJ0Yy9kYXRhY2hhbm5lbC9maWx0ZXItaWNlLWNhbmRpZGF0ZS5odG1sCkBAIC04LDY4ICs4
LDkxIEBACiAgIDwvaGVhZD4KICAgPGJvZHk+CiAgICAgPHNjcmlwdD4KLXByb21pc2VfdGVzdCgo
dGVzdCkgPT4gewotICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7
Ci0gICAgICAgIHNldFRpbWVvdXQoKCkgPT4geyByZWplY3QoIlRlc3QgdGltZWQgb3V0Iik7IH0s
IDUwMDApOwotCi0gICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQotICAgICAgICAgICAgaW50
ZXJuYWxzLnNldElDRUNhbmRpZGF0ZUZpbHRlcmluZyh0cnVlKTsKLQotICAgICAgICB2YXIgY291
bnRlciA9IDA7Ci0gICAgICAgIHZhciBwYyA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOwotICAg
ICAgICBwYy5jcmVhdGVEYXRhQ2hhbm5lbCgnc2VuZERhdGFDaGFubmVsJyk7Ci0gICAgICAgIHBj
Lm9uaWNlY2FuZGlkYXRlID0gKGV2ZW50KSA9PiB7Ci0gICAgICAgICAgICBpZiAoZXZlbnQuY2Fu
ZGlkYXRlKSB7Ci0gICAgICAgICAgICAgICAgY291bnRlcisrOwotICAgICAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocGMubG9jYWxE
ZXNjcmlwdGlvbi5zZHAuaW5kZXhPZigiYT1jYW5kaWRhdGUiKSwgLTEpOwotICAgICAgICAgICAg
YXNzZXJ0X3RydWUocGMubG9jYWxEZXNjcmlwdGlvbi5zZHAuaW5kZXhPZigiYz1JTiBJUDQgMC4w
LjAuMFxyXG4iKSAhPSAtMSB8fCBwYy5sb2NhbERlc2NyaXB0aW9uLnNkcC5pbmRleE9mKCJjPUlO
IElQNiA6OlxyXG4iKSAhPSAtMSk7Ci0gICAgICAgICAgICBpZiAoY291bnRlciA9PT0gMCkgewot
ICAgICAgICAgICAgICAgIHBjLmNyZWF0ZU9mZmVyKCkudGhlbigob2ZmZXIpID0+IHsKLSAgICAg
ICAgICAgICAgICAgICAgYXNzZXJ0X3RydWUob2ZmZXIuc2RwLmluZGV4T2YoImM9SU4gSVA0IDAu
MC4wLjBcclxuIikgIT0gLTEgfHwgcGMubG9jYWxEZXNjcmlwdGlvbi5zZHAuaW5kZXhPZigiYz1J
TiBJUDYgOjpcclxuIikgIT0gLTEpOwotICAgICAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxz
KG9mZmVyLnNkcC5pbmRleE9mKCJhPWNhbmRpZGF0ZSIpLCAtMSk7Ci0gICAgICAgICAgICAgICAg
ICAgIHJlc29sdmUoKTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIH0gZWxzZQot
ICAgICAgICAgICAgICAgIHJlamVjdCgiTm8gY2FuZGlkYXRlIHNob3VsZCBiZSBmb3VuZCIpOwot
ICAgICAgICB9OwotICAgICAgICBwYy5jcmVhdGVPZmZlcigpLnRoZW4oKG9mZmVyKSA9PiB7Ci0g
ICAgICAgICAgICBhc3NlcnRfZXF1YWxzKG9mZmVyLnNkcC5pbmRleE9mKCJhPWNhbmRpZGF0ZSIp
LCAtMSk7Ci0gICAgICAgICAgICBwYy5zZXRMb2NhbERlc2NyaXB0aW9uKG9mZmVyKTsKLSAgICAg
ICAgfSk7CitmdW5jdGlvbiBlbnN1cmVDYW5kaWRhdGVzQXJlTUROUyhzZHApCit7CisgICAgYXNz
ZXJ0X3RydWUoc2RwLmluZGV4T2YoImM9SU4gSVA0IDAuMC4wLjBcclxuIikgIT0gLTEgfHwgc2Rw
LmluZGV4T2YoImM9SU4gSVA2IDo6XHJcbiIpICE9IC0xKTsKKyAgICBjb25zdCBjYW5kaWRhdGVz
ID0gc2RwLnNwbGl0KCdcclxuJykuZmlsdGVyKGxpbmUgPT4geworICAgICAgICByZXR1cm4gbGlu
ZS5pbmRleE9mKCdhPWNhbmRpZGF0ZScpICE9PSAtMTsKKyAgICB9KTsKKyAgICBmb3IgKGNvbnN0
IGNhbmRpZGF0ZSBvZiBjYW5kaWRhdGVzKQorICAgICAgICBhc3NlcnRfbm90X2VxdWFscyhjYW5k
aWRhdGUuaW5kZXhPZignLmxvY2FsJyksIC0xKTsKK30KKworZnVuY3Rpb24gZW5zdXJlQ2FuZGlk
YXRlc0FyZU5vdE1ETlMoc2RwKQoreworICAgIGNvbnN0IGNhbmRpZGF0ZXMgPSBzZHAuc3BsaXQo
J1xyXG4nKS5maWx0ZXIobGluZSA9PiB7CisgICAgICAgIHJldHVybiBsaW5lLmluZGV4T2YoJ2E9
Y2FuZGlkYXRlJykgIT09IC0xOwogICAgIH0pOworICAgIGZvciAoY29uc3QgY2FuZGlkYXRlIG9m
IGNhbmRpZGF0ZXMpCisgICAgICAgIGFzc2VydF9lcXVhbHMoY2FuZGlkYXRlLmluZGV4T2YoJy5s
b2NhbCcpLCAtMSk7Cit9CisKK3Byb21pc2VfdGVzdChhc3luYyAodGVzdCkgPT4geworICAgIGxl
dCByZXNvbHZlLCByZWplY3Q7CisgICAgY29uc3QgcHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXMs
IHJlaikgPT4geyByZXNvbHZlID0gcmVzOyByZWplY3QgPSByZWo7IH0pOworICAgIHNldFRpbWVv
dXQoKCkgPT4geyByZWplY3QoIlRlc3QgdGltZWQgb3V0Iik7IH0sIDUwMDApOworCisgICAgaWYg
KHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgIGludGVybmFscy5zZXRJQ0VDYW5kaWRhdGVGaWx0
ZXJpbmcodHJ1ZSk7CisKKyAgICBsZXQgY291bnRlciA9IDA7CisgICAgbGV0IHBjID0gbmV3IFJU
Q1BlZXJDb25uZWN0aW9uKCk7CisgICAgcGMuY3JlYXRlRGF0YUNoYW5uZWwoJ3NlbmREYXRhQ2hh
bm5lbCcpOworICAgIHBjLm9uaWNlY2FuZGlkYXRlID0gYXN5bmMgKGV2ZW50KSA9PiB7CisgICAg
ICAgIGlmIChldmVudC5jYW5kaWRhdGUpIHsKKyAgICAgICAgICAgIGFzc2VydF9ub3RfZXF1YWxz
KGV2ZW50LmNhbmRpZGF0ZS5jYW5kaWRhdGUuaW5kZXhPZignLmxvY2FsJyksIC0xKTsKKyAgICAg
ICAgICAgIGNvdW50ZXIrKzsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAg
ICBlbnN1cmVDYW5kaWRhdGVzQXJlTUROUyhwYy5sb2NhbERlc2NyaXB0aW9uLnNkcCk7CisgICAg
ICAgIGlmIChjb3VudGVyID09PSAwKSB7CisgICAgICAgICAgICBjb25zdCBvZmZlciA9IGF3YWl0
IHBjLmNyZWF0ZU9mZmVyKCk7CisgICAgICAgICAgICBhd2FpdCBwYy5zZXRMb2NhbERlc2NyaXB0
aW9uKG9mZmVyKTsKKyAgICAgICAgICAgIGVuc3VyZUNhbmRpZGF0ZXNBcmVNRE5TKHBjLmxvY2Fs
RGVzY3JpcHRpb24uc2RwKTsKKyAgICAgICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorICAgICAgICByZXNvbHZlKCk7CisgICAgfTsKKyAgICBjb25zdCBv
ZmZlciA9IGF3YWl0IHBjLmNyZWF0ZU9mZmVyKCk7CisgICAgYXNzZXJ0X2VxdWFscyhvZmZlci5z
ZHAuaW5kZXhPZigiYT1jYW5kaWRhdGUiKSwgLTEpOworICAgIGF3YWl0IHBjLnNldExvY2FsRGVz
Y3JpcHRpb24ob2ZmZXIpOworCisgICAgcmV0dXJuIHByb21pc2U7CiB9LCAiR2F0aGVyaW5nIElD
RSBjYW5kaWRhdGVzIGZyb20gYSBkYXRhIGNoYW5uZWwgcGVlciBjb25uZWN0aW9uIHdpdGggSUNF
IGNhbmRpZGF0ZSBmaWx0ZXJpbmcgb24iKTsKIAotcHJvbWlzZV90ZXN0KCh0ZXN0KSA9PiB7Ci0g
ICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKLSAgICAgICAgc2V0
VGltZW91dCgoKSA9PiB7IHJlamVjdCgiVGVzdCB0aW1lZCBvdXQiKTsgfSwgNTAwMCk7Citwcm9t
aXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKKyAgICBsZXQgcmVzb2x2ZSwgcmVqZWN0OworICAg
IGNvbnN0IHByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzLCByZWopID0+IHsgcmVzb2x2ZSA9IHJl
czsgcmVqZWN0ID0gcmVqOyB9KTsKKyAgICBzZXRUaW1lb3V0KCgpID0+IHsgcmVqZWN0KCJUZXN0
IHRpbWVkIG91dCIpOyB9LCA1MDAwKTsKIAotCWlmICh3aW5kb3cuaW50ZXJuYWxzKQotICAgICAg
ICAgICAgaW50ZXJuYWxzLnNldElDRUNhbmRpZGF0ZUZpbHRlcmluZyhmYWxzZSk7CisgICAgaWYg
KHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgIGludGVybmFscy5zZXRJQ0VDYW5kaWRhdGVGaWx0
ZXJpbmcoZmFsc2UpOworIAorICAgIGxldCBjb3VudGVyID0gMDsKKyAgICBsZXQgcGMgPSBuZXcg
UlRDUGVlckNvbm5lY3Rpb24oKTsKKyAgICBwYy5jcmVhdGVEYXRhQ2hhbm5lbCgnc2VuZERhdGFD
aGFubmVsJyk7CiAKLSAgICAgICAgdmFyIGNvdW50ZXIgPSAwOwotICAgICAgICB2YXIgcGMgPSBu
ZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsKLSAgICAgICAgcGMuY3JlYXRlRGF0YUNoYW5uZWwoJ3Nl
bmREYXRhQ2hhbm5lbCcpOwotICAgICAgICBwYy5vbmljZWNhbmRpZGF0ZSA9IChldmVudCkgPT4g
ewotICAgICAgICAgICAgaWYgKGV2ZW50LmNhbmRpZGF0ZSkgewotICAgICAgICAgICAgICAgIGNv
dW50ZXIrKzsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBhc3NlcnRfdHJ1ZShwYy5sb2NhbERlc2NyaXB0aW9uLnNkcC5pbmRleE9mKCJjPUlOIElQ
NCAwLjAuMC4wXHJcbiIpID09PSAtMSAmJiBwYy5sb2NhbERlc2NyaXB0aW9uLnNkcC5pbmRleE9m
KCJjPUlOIElQNiA6OlxyXG4iKSA9PT0gLTEpOwotICAgICAgICAgICAgYXNzZXJ0X2ZhbHNlKHBj
LmxvY2FsRGVzY3JpcHRpb24uc2RwLmluZGV4T2YoImE9Y2FuZGlkYXRlIikgPT09IC0xKTsKLSAg
ICAgICAgICAgIGlmIChjb3VudGVyICE9PSAwKSB7Ci0gICAgICAgICAgICAgICAgLy8gUmVkb2lu
ZyBhbiBvZmZlciBub3cgdGhhdCB3ZSBoYXZlIHNvbWUgY2FuZGlkYXRlcy4KLSAgICAgICAgICAg
ICAgICBwYy5jcmVhdGVPZmZlcigpLnRoZW4oKG9mZmVyKSA9PiB7Ci0gICAgICAgICAgICAgICAg
ICAgIGFzc2VydF90cnVlKG9mZmVyLnNkcC5pbmRleE9mKCJjPUlOIElQNCAwLjAuMC4wXHJcbiIp
ID09PSAtMSAmJiBwYy5sb2NhbERlc2NyaXB0aW9uLnNkcC5pbmRleE9mKCJjPUlOIElQNiA6Olxy
XG4iKSA9PT0gLTEpOwotICAgICAgICAgICAgICAgICAgICBhc3NlcnRfZmFsc2Uob2ZmZXIuc2Rw
LmluZGV4T2YoImE9Y2FuZGlkYXRlIikgPT09IC0xKTsKLSAgICAgICAgICAgICAgICAgICAgcmVz
b2x2ZSgpOwotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAg
ICAgICAgICAgcmVqZWN0KCJIb3N0IGNhbmRpZGF0ZXMgc2hvdWxkIGJlIGZvdW5kIik7Ci0gICAg
ICAgIH07Ci0gICAgICAgIHBjLmNyZWF0ZU9mZmVyKCkudGhlbigob2ZmZXIpID0+IHsgcGMuc2V0
TG9jYWxEZXNjcmlwdGlvbihvZmZlcik7IH0pOwotICAgIH0pOworICAgIHBjLm9uaWNlY2FuZGlk
YXRlID0gYXN5bmMgKGV2ZW50KSA9PiB7CisgICAgICAgIGlmIChldmVudC5jYW5kaWRhdGUpIHsK
KyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoZXZlbnQuY2FuZGlkYXRlLmNhbmRpZGF0ZS5pbmRl
eE9mKCcubG9jYWwnKSwgLTEpOworICAgICAgICAgICAgY291bnRlcisrOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisgICAgICAgIGVuc3VyZUNhbmRpZGF0ZXNBcmVOb3RNRE5TKHBj
LmxvY2FsRGVzY3JpcHRpb24uc2RwKTsKKyAgICAgICAgaWYgKGNvdW50ZXIgIT09IDApIHsKKyAg
ICAgICAgICAgIC8vIFJlZG9pbmcgYW4gb2ZmZXIgbm93IHRoYXQgd2UgaGF2ZSBzb21lIGNhbmRp
ZGF0ZXMuCisgICAgICAgICAgICBjb25zdCBvZmZlciA9IGF3YWl0IHBjLmNyZWF0ZU9mZmVyKCk7
CisgICAgICAgICAgICBhd2FpdCBwYy5zZXRMb2NhbERlc2NyaXB0aW9uKG9mZmVyKTsKKyAgICAg
ICAgICAgIGVuc3VyZUNhbmRpZGF0ZXNBcmVOb3RNRE5TKHBjLmxvY2FsRGVzY3JpcHRpb24uc2Rw
KTsKKyAgICAgICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBy
ZWplY3QoIkhvc3QgY2FuZGlkYXRlcyBzaG91bGQgYmUgZm91bmQiKTsKKyAgICB9OworICAgIGNv
bnN0IG9mZmVyID0gYXdhaXQgcGMuY3JlYXRlT2ZmZXIoKTsKKyAgICBhd2FpdCBwYy5zZXRMb2Nh
bERlc2NyaXB0aW9uKG9mZmVyKTsKKworICAgIHJldHVybiBwcm9taXNlOwogfSwgIkdhdGhlcmlu
ZyBJQ0UgY2FuZGlkYXRlcyBmcm9tIGEgZGF0YSBjaGFubmVsIHBlZXIgY29ubmVjdGlvbiB3aXRo
IElDRSBjYW5kaWRhdGUgZmlsdGVyaW5nIG9mZiIpOwogCiBwcm9taXNlX3Rlc3QoYXN5bmMgKHRl
c3QpID0+IHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYnJ0Yy9maWx0ZXJpbmctaWNlLWNh
bmRpZGF0ZS1hZnRlci1yZWxvYWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYnJ0Yy9maWx0ZXJpbmct
aWNlLWNhbmRpZGF0ZS1hZnRlci1yZWxvYWQuaHRtbAppbmRleCBjODc1NWY3MWYxOWYxYTMwM2My
M2IwYmFhZjE2NjNiZDY4YmQ1YjlkLi41MjVkZTg0ZjlkMzJiYjE0NjJkZTk3YzJmMjBlNTVmZmNj
MTVlNGIyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy93ZWJydGMvZmlsdGVyaW5nLWljZS1jYW5k
aWRhdGUtYWZ0ZXItcmVsb2FkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvd2VicnRjL2ZpbHRlcmlu
Zy1pY2UtY2FuZGlkYXRlLWFmdGVyLXJlbG9hZC5odG1sCkBAIC03LDI0ICs3LDI4IEBAIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikgewogICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogfQog
Ci1mdW5jdGlvbiBpc0ZpbHRlcmluZ0VuYWJsZWQoKQorYXN5bmMgZnVuY3Rpb24gaXNGaWx0ZXJp
bmdFbmFibGVkKCkKIHsKKyAgICBsZXQgcmVzb2x2ZSwgcmVqZWN0OworICAgIGNvbnN0IHByb21p
c2UgPSBuZXcgUHJvbWlzZSgocmVzLCByZWopID0+IHsgcmVzb2x2ZSA9IHJlczsgcmVqZWN0ID0g
cmVqOyB9KTsKKyAgICBzZXRUaW1lb3V0KCgpID0+IHsgcmVqZWN0KCJUZXN0IHRpbWVkIG91dCIp
OyB9LCA1MDAwKTsKKwogICAgIHZhciBwYyA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOwogICAg
IHBjLmNyZWF0ZURhdGFDaGFubmVsKCIiKTsKIAogICAgIHZhciBjYW5kaWRhdGVzID0gW107Ci0g
ICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKLSAgICAgICAgcGMu
b25pY2VjYW5kaWRhdGUgPSAoZXZlbnQpID0+IHsKLSAgICAgICAgICAgIGlmIChldmVudC5jYW5k
aWRhdGUgPT09IG51bGwpIHsKLSAgICAgICAgICAgICAgICByZXNvbHZlKCFjYW5kaWRhdGVzLmxl
bmd0aCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQorICAgIHBjLm9u
aWNlY2FuZGlkYXRlID0gKGV2ZW50KSA9PiB7CisgICAgICAgIGlmIChldmVudC5jYW5kaWRhdGUg
PT09IG51bGwpIHsKKyAgICAgICAgICAgIHJlc29sdmUoIWNhbmRpZGF0ZXMubGVuZ3RoKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAoZXZlbnQuY2FuZGlkYXRl
LmNhbmRpZGF0ZS5pbmRleE9mKCcubG9jYWwnKSA9PT0gLTEpCiAgICAgICAgICAgICBjYW5kaWRh
dGVzLnB1c2goZXZlbnQuY2FuZGlkYXRlLmNhbmRpZGF0ZSk7Ci0gICAgICAgIH07Ci0gICAgICAg
IHBjLmNyZWF0ZU9mZmVyKCkudGhlbigob2ZmZXIpID0+IHsKLSAgICAgICAgICAgIHBjLnNldExv
Y2FsRGVzY3JpcHRpb24ob2ZmZXIpOwotICAgICAgICB9KTsKLSAgICB9KTsKKyAgICB9OworCisg
ICAgY29uc3Qgb2ZmZXIgPSBhd2FpdCBwYy5jcmVhdGVPZmZlcigpOworICAgIGF3YWl0IHBjLnNl
dExvY2FsRGVzY3JpcHRpb24ob2ZmZXIpOworICAgIHJldHVybiBwcm9taXNlOwogfQogCiBmdW5j
dGlvbiBlbmRUZXN0KG1lc3NhZ2UpCg==
</data>
<flag name="commit-queue"
          id="460126"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>437016</attachid>
            <date>2021-09-01 04:55:29 -0700</date>
            <delta_ts>2021-09-01 04:59:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229757-20210901135527.patch</filename>
            <type>text/plain</type>
            <size>84649</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxNzkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWIwNDFiMmIwMGZmNmU4
Y2YwNTI3MjZmMWQ1NmUzMzQwNGM1NjAwNy4uNThjOWY3ZDhmZTMwZDZlNWYwZTY1OTkyNzFkNTgy
NDJhZmFlYmRlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDIxLTA5LTAxICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgbGlid2Vi
cnRjIG5ldHdvcmsgbWFuYWdlciBHZXRNZG5zUmVzcG9uZGVyCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjk3NTcKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgbGlid2VicnRjIG1ETlMgc3VwcG9ydCBp
bnN0ZWFkIG9mIGFwcGx5aW5nIGl0IHdpdGhpbiBQZWVyQ29ubmVjdGlvbkJhY2tlbmQuCisgICAg
ICAgIFRoaXMgYWxsb3dzIGEgYmV0dGVyIGludGVncmF0aW9uIGFuZCBpcyBtb3JlIGNvbnNpc3Rl
bnQgd2l0aCB0aGUgQVBJIGFuZCBvdGhlciBicm93c2Vycy4KKyAgICAgICAgRm9yIGluc3RhbmNl
IG1ETlMgY2FuZGlkYXRlcyBub3cgc2hvdyB1cCBpbiBsb2NhbCBkZXNjcmlwdGlvbnMuCisgICAg
ICAgIFdlIGludHJvZHVjZSBSVENOZXR3b3JrTWFuYWdlciB3aGljaCBpcyByZXNwb25zaWJsZSBm
b3IgV2ViUlRDIG5ldHdvcmsuCisgICAgICAgIFJUQ05ldHdvcmtNYW5hZ2VyIGlzIHJlc3BvbnNp
YmxlIG9mIGFsbCBwZWVyIGNvbm5lY3Rpb25zIG9mIGEgZG9jdW1lbnQuIEl0IGNhbiB0aHVzIHJl
dXNlIG1ETlMgbmFtZXMgZnJvbSBvbmUgY29ubmVjdGlvbiB0byBhbm90aGVyLgorICAgICAgICBX
aGVuIGRvY3VtZW50IGdvZXMgYXdheSwgUlRDTmV0d29ya01hbmFnZXIgbmVlZHMgdG8gdW5yZWdp
c3RlciBhbGwgbUROUyBuYW1lcy4KKyAgICAgICAgVXBkYXRlIGV4aXN0aW5nIFNEUCBhbmQgSUNF
IGNhbmRpZGF0ZSBmaWx0ZXJpbmcgY29kZSBieSBvbmx5IGtlZXBpbmcgZGVidWcgYXNzZXJ0IHRo
YXQgd2UgZG8gbm90IGxlYWsgcHJpdmF0ZSBJUCBhZGRyZXNzZXMgaW4gY2FzZSBJQ0UgZmlsdGVy
aW5nIGlzIG9uLgorICAgICAgICBDb3ZlcmVkIGJ5IHVwZGF0ZWQgYW5kIGV4aXN0aW5nIHRlc3Rz
LgorCisgICAgICAgICogSGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3Ry
ZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29u
bmVjdGlvbkJhY2tlbmQ6OmNyZWF0ZU9mZmVyU3VjY2VlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6
OlBlZXJDb25uZWN0aW9uQmFja2VuZDo6ZW5hYmxlSUNFQ2FuZGlkYXRlRmlsdGVyaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uQmFja2VuZDo6ZGlzYWJsZUlDRUNhbmRpZGF0
ZUZpbHRlcmluZyk6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OnZh
bGlkYXRlU0RQIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uQmFja2Vu
ZDo6bmV3SUNFQ2FuZGlkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uQmFj
a2VuZDo6ZG9uZUdhdGhlcmluZ0NhbmRpZGF0ZXMpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
dHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0NvbnRyb2xsZXI6
OmFkZCk6CisgICAgICAgIChXZWJDb3JlOjpSVENDb250cm9sbGVyOjpkaXNhYmxlSUNFQ2FuZGlk
YXRlRmlsdGVyaW5nRm9yQWxsT3JpZ2lucyk6CisgICAgICAgIChXZWJDb3JlOjpSVENDb250cm9s
bGVyOjpkaXNhYmxlSUNFQ2FuZGlkYXRlRmlsdGVyaW5nRm9yRG9jdW1lbnQpOgorICAgICAgICAo
V2ViQ29yZTo6UlRDQ29udHJvbGxlcjo6ZW5hYmxlSUNFQ2FuZGlkYXRlRmlsdGVyaW5nKToKKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ05ldHdvcmtNYW5hZ2VyLmg6IEFkZGVkLgor
ICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5k
cG9pbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6c2V0
Q29uZmlndXJhdGlvbik6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMv
TGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okxp
YldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6Y3VycmVudExvY2FsRGVzY3JpcHRpb24gY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpw
ZW5kaW5nTG9jYWxEZXNjcmlwdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJS
VENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmxvY2FsRGVzY3JpcHRpb24gY29uc3QpOgorICAgICAg
ICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBkb20vRG9j
dW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OndpbGxCZVJlbW92ZWRGcm9t
RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnN1c3BlbmQpOgorICAgICAgICAq
IGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJ0Y05ldHdvcmtN
YW5hZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzZXRSVENOZXR3b3JrTWFuYWdl
cik6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vTUROU1JlZ2lzdGVyRXJyb3IuaDog
QWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJU
Q1Byb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ1Byb3ZpZGVyOjpjcmVh
dGVQZWVyQ29ubmVjdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2Vi
cnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmg6CisKIDIwMjEtMDgtMzEgIFlvdWVubiBGYWJsZXQgIDx5
b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBzdXBwb3J0IGZvciBSVENTY3RwVHJhbnNw
b3J0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCmluZGV4IDYxZjdhZDFjYTg4N2Q1YmZkMjEyZjQzOTNkMGM1MmFlYWFjMGI1N2Iu
LmU0N2ZiZDg2N2JmZjk0YjI0NGM3YTU5MWU0YzEyZWViNmZjMTdhYzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNTYgQEAKKzIwMjEtMDktMDEgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29t
PgorCisgICAgICAgIEltcGxlbWVudCBsaWJ3ZWJydGMgbmV0d29yayBtYW5hZ2VyIEdldE1kbnNS
ZXNwb25kZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyOTc1NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEltcGxlbWVudCBSVENOZXR3b3JrTWFuYWdlciBBUEkgaW4gTGliV2ViUlRDTmV0d29ya01hbmFn
ZXIgdG8gaGFuZGxlIHBlci1kb2N1bWVudCBtRE5TIHJlZ2lzdHJhdGlvbnMuCisgICAgICAgIE1v
dmUgcGFydCBvZiBXZWJSVENNb25pdG9yIHRvIExpYldlYlJUQ05ldHdvcmtNYW5hZ2VyLgorICAg
ICAgICBMaWJXZWJSVENOZXR3b3JrTWFuYWdlciBpcyBhIFdlYlJUQ01vbml0b3Igb2JzZXJ2ZXIg
dG8gZ2V0IHRoZSBsaXN0IG9mIG5ldHdvcmtzLgorICAgICAgICBTaW5jZSBsaWJ3ZWJydGMgaXMg
bm93IGRvaW5nIHRoZSBtRE5TIHJlZ2lzdHJhdGlvbiwgd2UgbmVlZCB0byByZXR1cm4gYSBtRE5T
IG5hbWUgZXZlbiBpZiByZWdpc3RyYXRpb24gZmFpbGVkLgorICAgICAgICBXZSB1cGRhdGUgV2Vi
TUROU1JlZ2lzdGVyIGFuZCBOZXR3b3JrTUROU1JlZ2lzdGVyIGFjY29yZGluZ2x5LgorCisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtNRE5TUmVnaXN0ZXIuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpyZWdpc3Rlck1ETlNOYW1lQ2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrTUROU1JlZ2lzdGVyOjpyZWdpc3Rlck1ETlNOYW1lKToKKyAgICAgICAgKiBTb3Vy
Y2VzLnR4dDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ05ldHdvcmtNYW5hZ2Vy
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ05ldHdvcmtNYW5hZ2VyOjpn
ZXRPckNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ05ldHdvcmtNYW5hZ2VyOjpM
aWJXZWJSVENOZXR3b3JrTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ05ldHdv
cmtNYW5hZ2VyOjp+TGliV2ViUlRDTmV0d29ya01hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpM
aWJXZWJSVENOZXR3b3JrTWFuYWdlcjo6dW5yZWdpc3Rlck1ETlNOYW1lcyk6CisgICAgICAgIChX
ZWJLaXQ6OkxpYldlYlJUQ05ldHdvcmtNYW5hZ2VyOjpTdGFydFVwZGF0aW5nKToKKyAgICAgICAg
KFdlYktpdDo6TGliV2ViUlRDTmV0d29ya01hbmFnZXI6OlN0b3BVcGRhdGluZyk6CisgICAgICAg
IChXZWJLaXQ6OkxpYldlYlJUQ05ldHdvcmtNYW5hZ2VyOjpHZXRNZG5zUmVzcG9uZGVyIGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDTmV0d29ya01hbmFnZXI6Om5ldHdvcmtzQ2hh
bmdlZCk6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ05ldHdvcmtNYW5hZ2VyOjpuZXR3b3Jr
UHJvY2Vzc0NyYXNoZWQpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENOZXR3b3JrTWFuYWdl
cjo6Q3JlYXRlTmFtZUZvckFkZHJlc3MpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENOZXR3
b3JrTWFuYWdlcjo6UmVtb3ZlTmFtZUZvckFkZHJlc3MpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
TmV0d29yay93ZWJydGMvTGliV2ViUlRDTmV0d29ya01hbmFnZXIuaDogQWRkZWQuCisgICAgICAg
ICogV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkxpYldlYlJUQ1Byb3ZpZGVyOjpjcmVhdGVQZWVyQ29ubmVjdGlvbik6Cisg
ICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ1Byb3ZpZGVyOjpkaXNhYmxlTm9uTG9jYWxob3N0Q29u
bmVjdGlvbnMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRD
UHJvdmlkZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1dlYk1ETlNS
ZWdpc3Rlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYk1ETlNSZWdpc3Rlcjo6ZmluaXNoZWRS
ZWdpc3RlcmluZ01ETlNOYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViTUROU1JlZ2lzdGVyOjpy
ZWdpc3Rlck1ETlNOYW1lKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1dl
Yk1ETlNSZWdpc3Rlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvV2Vi
TUROU1JlZ2lzdGVyLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay93
ZWJydGMvV2ViUlRDTW9uaXRvci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJUQ01vbml0b3I6
OnN0YXJ0VXBkYXRpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJSVENNb25pdG9yOjpzdG9wVXBk
YXRpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJSVENNb25pdG9yOjpuZXR3b3Jrc0NoYW5nZWQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJSVENNb25pdG9yOjpuZXR3b3JrUHJvY2Vzc0NyYXNoZWQp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvV2ViUlRDTW9uaXRvci5oOgor
ICAgICAgICAoV2ViS2l0OjpXZWJSVENNb25pdG9yOjphZGRPYnNlcnZlcik6CisgICAgICAgIChX
ZWJLaXQ6OldlYlJUQ01vbml0b3I6OnJlbW92ZU9ic2VydmVyKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUlRDTW9uaXRvcjo6ZGlkUmVjZWl2ZU5ldHdvcmtMaXN0IGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViUlRDTW9uaXRvcjo6bmV0d29ya0xpc3QgY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpXZWJSVENNb25pdG9yOjppcHY0IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUlRDTW9u
aXRvcjo6aXB2NiBjb25zdCk6CisKIDIwMjEtMDgtMjYgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBw
bGUuY29tPgogCiAgICAgICAgIEN1dCBkb3duIG9uIHVzZSBvZiBDRkdldFR5cGVJRCwgdXNpbmcg
ZHluYW1pY19jZl9jYXN0IGluc3RlYWQ7IHJlbGF0ZWQgc3RyZWFtbGluaW5nCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5j
bWFrZQppbmRleCA3NmNlMGM2NjFmZWU4MzBkMTc2ZTM2MWY1Nzk4NzM1YzdhZTFlMGNlLi45OTY5
NDUzNjMzN2U5MWQyOWViZDRkZWY0MDJkYjZiZmZmZjMxYjlkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UK
QEAgLTEyMCw2ICsxMjAsOCBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJT
CiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFDb250cm9sbGVyLmgKICAgICBNb2R1
bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuaAogCisgICAgTW9kdWxlcy9tZWRpYXN0
cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDVXRpbHMuaAorCiAgICAgTW9kdWxlcy9tb2RlbC1lbGVt
ZW50L0hUTUxNb2RlbEVsZW1lbnQuaAogCiAgICAgTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlm
aWNhdGlvbi5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAKaW5kZXggNzk5ZTFkM2RhY2M0ODEwNzJj
MWI1N2JhZDFlOTVlMDZkMGEwNGM4MS4uZDFkMWY2YWVjZDE5ZTI1MmIyMTBjNzUwOWRhYjQ3ZjY0
NWQ4ZmNjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Q
ZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcApAQCAtMTAyLDcgKzEwMiw4IEBAIHZv
aWQgUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpjcmVhdGVPZmZlclN1Y2NlZWRlZChTdHJpbmcmJiBz
ZHApCiAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAiQ3JlYXRlIG9mZmVyIHN1Y2NlZWRl
ZDpcbiIsIHNkcCk7CiAKICAgICBBU1NFUlQobV9vZmZlckFuc3dlclByb21pc2UpOwotICAgIG1f
cGVlckNvbm5lY3Rpb24uZG9UYXNrKFt0aGlzLCBwcm9taXNlID0gV1RGTW92ZShtX29mZmVyQW5z
d2VyUHJvbWlzZSksIHNkcCA9IGZpbHRlclNEUChXVEZNb3ZlKHNkcCkpXSgpIG11dGFibGUgewor
ICAgIHZhbGlkYXRlU0RQKHNkcCk7CisgICAgbV9wZWVyQ29ubmVjdGlvbi5kb1Rhc2soW3RoaXMs
IHByb21pc2UgPSBXVEZNb3ZlKG1fb2ZmZXJBbnN3ZXJQcm9taXNlKSwgc2RwID0gV1RGTW92ZShz
ZHApXSgpIG11dGFibGUgewogICAgICAgICBpZiAobV9wZWVyQ29ubmVjdGlvbi5pc0Nsb3NlZCgp
KQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0zNzYsODEgKzM3NywxNyBAQCB2b2lkIFBlZXJD
b25uZWN0aW9uQmFja2VuZDo6ZW5hYmxlSUNFQ2FuZGlkYXRlRmlsdGVyaW5nKCkKIHZvaWQgUGVl
ckNvbm5lY3Rpb25CYWNrZW5kOjpkaXNhYmxlSUNFQ2FuZGlkYXRlRmlsdGVyaW5nKCkKIHsKICAg
ICBtX3Nob3VsZEZpbHRlcklDRUNhbmRpZGF0ZXMgPSBmYWxzZTsKLSAgICBmb3IgKGF1dG8mIHBl
bmRpbmdJQ0VDYW5kaWRhdGUgOiBtX3BlbmRpbmdJQ0VDYW5kaWRhdGVzKQotICAgICAgICBmaXJl
SUNFQ2FuZGlkYXRlRXZlbnQoUlRDSWNlQ2FuZGlkYXRlOjpjcmVhdGUoV1RGTW92ZShwZW5kaW5n
SUNFQ2FuZGlkYXRlLnNkcCksIFdURk1vdmUocGVuZGluZ0lDRUNhbmRpZGF0ZS5taWQpLCBwZW5k
aW5nSUNFQ2FuZGlkYXRlLnNkcE1MaW5lSW5kZXgpLCBXVEZNb3ZlKHBlbmRpbmdJQ0VDYW5kaWRh
dGUuc2VydmVyVVJMKSk7Ci0gICAgbV9wZW5kaW5nSUNFQ2FuZGlkYXRlcy5jbGVhcigpOwotfQot
Ci1zdGF0aWMgU3RyaW5nIGZpbHRlcklDRUNhbmRpZGF0ZShTdHJpbmcmJiBzZHApCi17Ci0gICAg
QVNTRVJUKCFzZHAuY29udGFpbnMoIiBob3N0ICIpKTsKLQotICAgIGlmICghc2RwLmNvbnRhaW5z
KCIgcmFkZHIgIikpCi0gICAgICAgIHJldHVybiBXVEZNb3ZlKHNkcCk7Ci0KLSAgICBib29sIHNr
aXBOZXh0SXRlbSA9IGZhbHNlOwotICAgIGJvb2wgaXNGaXJzdCA9IHRydWU7Ci0gICAgU3RyaW5n
QnVpbGRlciBmaWx0ZXJlZFNEUDsKLSAgICBzZHAuc3BsaXQoJyAnLCBbJl0oU3RyaW5nVmlldyBp
dGVtKSB7Ci0gICAgICAgIGlmIChza2lwTmV4dEl0ZW0pIHsKLSAgICAgICAgICAgIHNraXBOZXh0
SXRlbSA9IGZhbHNlOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGlm
IChpdGVtID09ICJyYWRkciIpIHsKLSAgICAgICAgICAgIGZpbHRlcmVkU0RQLmFwcGVuZCgiIHJh
ZGRyIDAuMC4wLjAiKTsKLSAgICAgICAgICAgIHNraXBOZXh0SXRlbSA9IHRydWU7Ci0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGl0ZW0gPT0gInJwb3J0Iikgewot
ICAgICAgICAgICAgZmlsdGVyZWRTRFAuYXBwZW5kKCIgcnBvcnQgMCIpOwotICAgICAgICAgICAg
c2tpcE5leHRJdGVtID0gdHJ1ZTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAg
ICAgICBpZiAoaXNGaXJzdCkKLSAgICAgICAgICAgIGlzRmlyc3QgPSBmYWxzZTsKLSAgICAgICAg
ZWxzZQotICAgICAgICAgICAgZmlsdGVyZWRTRFAuYXBwZW5kKCcgJyk7Ci0gICAgICAgIGZpbHRl
cmVkU0RQLmFwcGVuZChpdGVtKTsKLSAgICB9KTsKLSAgICByZXR1cm4gZmlsdGVyZWRTRFAudG9T
dHJpbmcoKTsKIH0KIAotU3RyaW5nIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6ZmlsdGVyU0RQKFN0
cmluZyYmIHNkcCkgY29uc3QKK3ZvaWQgUGVlckNvbm5lY3Rpb25CYWNrZW5kOjp2YWxpZGF0ZVNE
UChjb25zdCBTdHJpbmcmIHNkcCkgY29uc3QKIHsKKyNpZm5kZWYgTkRFQlVHCiAgICAgaWYgKCFt
X3Nob3VsZEZpbHRlcklDRUNhbmRpZGF0ZXMpCi0gICAgICAgIHJldHVybiBXVEZNb3ZlKHNkcCk7
Ci0KLSAgICBTdHJpbmdCdWlsZGVyIGZpbHRlcmVkU0RQOwotICAgIHNkcC5zcGxpdCgnXG4nLCBb
dGhpcywgJmZpbHRlcmVkU0RQXShTdHJpbmdWaWV3IGxpbmUpIHsKLSAgICAgICAgaWYgKGxpbmUu
c3RhcnRzV2l0aCgiYz1JTiBJUDQiKSkgewotICAgICAgICAgICAgZmlsdGVyZWRTRFAuYXBwZW5k
KCJjPUlOIElQNCAwLjAuMC4wXHJcbiIpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9
Ci0gICAgICAgIGlmIChsaW5lLnN0YXJ0c1dpdGgoImM9SU4gSVA2IikpIHsKLSAgICAgICAgICAg
IGZpbHRlcmVkU0RQLmFwcGVuZCgiYz1JTiBJUDYgOjpcclxuIik7Ci0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCFsaW5lLnN0YXJ0c1dpdGgoImE9Y2FuZGlkYXRl
IikpIHsKLSAgICAgICAgICAgIGZpbHRlcmVkU0RQLmFwcGVuZChsaW5lKTsKLSAgICAgICAgICAg
IGZpbHRlcmVkU0RQLmFwcGVuZCgnXG4nKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
fQotICAgICAgICBpZiAobGluZS5maW5kKCIgaG9zdCAiLCAxMSkgPT0gbm90Rm91bmQpIHsKLSAg
ICAgICAgICAgIGZpbHRlcmVkU0RQLmFwcGVuZChmaWx0ZXJJQ0VDYW5kaWRhdGUobGluZS50b1N0
cmluZygpKSk7Ci0gICAgICAgICAgICBmaWx0ZXJlZFNEUC5hcHBlbmQoJ1xuJyk7Ci0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBhdXRvIGlwQWRkcmVzcyA9IGV4dHJh
Y3RJUEFkZHJlc3MobGluZSk7Ci0gICAgICAgIGF1dG8gbWRuc05hbWUgPSBtX2lwQWRkcmVzc1Rv
TUROU05hbWVNYXAuZ2V0KGlwQWRkcmVzcyk7Ci0gICAgICAgIGlmIChtZG5zTmFtZS5pc0VtcHR5
KCkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGF1dG8gc2RwID0gbGluZS50b1N0cmlu
ZygpOwotICAgICAgICBzZHAucmVwbGFjZShpcEFkZHJlc3MsIG1kbnNOYW1lKTsKLSAgICAgICAg
ZmlsdGVyZWRTRFAuYXBwZW5kKHNkcCk7Ci0gICAgICAgIGZpbHRlcmVkU0RQLmFwcGVuZCgnXG4n
KTsKKyAgICAgICAgcmV0dXJuOworICAgIHNkcC5zcGxpdCgnXG4nLCBbXShhdXRvIGxpbmUpIHsK
KyAgICAgICAgQVNTRVJUKCFsaW5lLnN0YXJ0c1dpdGgoImE9Y2FuZGlkYXRlIikgfHwgbGluZS5j
b250YWlucygiLmxvY2FsIikpOwogICAgIH0pOwotICAgIHJldHVybiBmaWx0ZXJlZFNEUC50b1N0
cmluZygpOworI2VuZGlmCiB9CiAKIHZvaWQgUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpuZXdJQ0VD
YW5kaWRhdGUoU3RyaW5nJiYgc2RwLCBTdHJpbmcmJiBtaWQsIHVuc2lnbmVkIHNob3J0IHNkcE1M
aW5lSW5kZXgsIFN0cmluZyYmIHNlcnZlclVSTCkKQEAgLTQ2MCwyMiArMzk3LDggQEAgdm9pZCBQ
ZWVyQ29ubmVjdGlvbkJhY2tlbmQ6Om5ld0lDRUNhbmRpZGF0ZShTdHJpbmcmJiBzZHAsIFN0cmlu
ZyYmIG1pZCwgdW5zaWduZWQKICAgICAgICAgQUxXQVlTX0xPRyhsb2dTaXRlSWRlbnRpZmllciwg
IkdhdGhlcmVkIGljZSBjYW5kaWRhdGU6Iiwgc2RwKTsKICAgICAgICAgbV9maW5pc2hlZEdhdGhl
cmluZ0NhbmRpZGF0ZXMgPSBmYWxzZTsKIAotICAgICAgICBpZiAoIW1fc2hvdWxkRmlsdGVySUNF
Q2FuZGlkYXRlcykgewotICAgICAgICAgICAgZmlyZUlDRUNhbmRpZGF0ZUV2ZW50KFJUQ0ljZUNh
bmRpZGF0ZTo6Y3JlYXRlKFdURk1vdmUoc2RwKSwgV1RGTW92ZShtaWQpLCBzZHBNTGluZUluZGV4
KSwgV1RGTW92ZShzZXJ2ZXJVUkwpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQot
ICAgICAgICBpZiAoc2RwLmZpbmQoIiBob3N0ICIsIDApICE9IG5vdEZvdW5kKSB7Ci0gICAgICAg
ICAgICAvLyBGSVhNRTogV2UgbWlnaHQgbmVlZCB0byBjbGVhciBhbGwgcGVuZGluZyBjYW5kaWRh
dGVzIHdoZW4gc2V0dGluZyBhZ2FpbiBsb2NhbCBkZXNjcmlwdGlvbi4KLSAgICAgICAgICAgIG1f
cGVuZGluZ0lDRUNhbmRpZGF0ZXMuYXBwZW5kKFBlbmRpbmdJQ0VDYW5kaWRhdGUgeyBTdHJpbmcg
eyBzZHAgfSwgV1RGTW92ZShtaWQpLCBzZHBNTGluZUluZGV4LCBXVEZNb3ZlKHNlcnZlclVSTCkg
fSk7Ci0gICAgICAgICAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVy
ZXMoKS53ZWJSVENNRE5TSUNFQ2FuZGlkYXRlc0VuYWJsZWQoKSkgewotICAgICAgICAgICAgICAg
IGF1dG8gaXBBZGRyZXNzID0gZXh0cmFjdElQQWRkcmVzcyhzZHApOwotICAgICAgICAgICAgICAg
IC8vIFdlIHJlc3RyaWN0IHRvIElQdjQgY2FuZGlkYXRlcyBmb3Igbm93LgotICAgICAgICAgICAg
ICAgIGlmIChpcEFkZHJlc3MuY29udGFpbnMoJy4nKSkKLSAgICAgICAgICAgICAgICAgICAgcmVn
aXN0ZXJNRE5TTmFtZShpcEFkZHJlc3MpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICB9Ci0gICAgICAgIGZpcmVJQ0VDYW5kaWRhdGVFdmVudChSVENJY2VDYW5k
aWRhdGU6OmNyZWF0ZShmaWx0ZXJJQ0VDYW5kaWRhdGUoV1RGTW92ZShzZHApKSwgV1RGTW92ZSht
aWQpLCBzZHBNTGluZUluZGV4KSwgV1RGTW92ZShzZXJ2ZXJVUkwpKTsKKyAgICAgICAgQVNTRVJU
KCFtX3Nob3VsZEZpbHRlcklDRUNhbmRpZGF0ZXMgfHwgc2RwLmNvbnRhaW5zKCIubG9jYWwiKSk7
CisgICAgICAgIGZpcmVJQ0VDYW5kaWRhdGVFdmVudChSVENJY2VDYW5kaWRhdGU6OmNyZWF0ZShX
VEZNb3ZlKHNkcCksIFdURk1vdmUobWlkKSwgc2RwTUxpbmVJbmRleCksIFdURk1vdmUoc2VydmVy
VVJMKSk7CiAgICAgfSk7CiB9CiAKQEAgLTQ4NSwxMiArNDA4LDggQEAgdm9pZCBQZWVyQ29ubmVj
dGlvbkJhY2tlbmQ6OmRvbmVHYXRoZXJpbmdDYW5kaWRhdGVzKCkKICAgICBBTFdBWVNfTE9HKExP
R0lERU5USUZJRVIsICJGaW5pc2hlZCBpY2UgY2FuZGlkYXRlIGdhdGhlcmluZyIpOwogICAgIG1f
ZmluaXNoZWRHYXRoZXJpbmdDYW5kaWRhdGVzID0gdHJ1ZTsKIAotICAgIGlmIChtX3dhaXRpbmdG
b3JNRE5TUmVnaXN0cmF0aW9uKQotICAgICAgICByZXR1cm47Ci0KICAgICBtX3BlZXJDb25uZWN0
aW9uLmRpc3BhdGNoRXZlbnRXaGVuRmVhc2libGUoUlRDUGVlckNvbm5lY3Rpb25JY2VFdmVudDo6
Y3JlYXRlKEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObywgbnVs
bHB0ciwgeyB9KSk7CiAgICAgbV9wZWVyQ29ubmVjdGlvbi51cGRhdGVJY2VHYXRoZXJpbmdTdGF0
ZShSVENJY2VHYXRoZXJpbmdTdGF0ZTo6Q29tcGxldGUpOwotICAgIG1fcGVuZGluZ0lDRUNhbmRp
ZGF0ZXMuY2xlYXIoKTsKIH0KIAogdm9pZCBQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmVuZE9mSWNl
Q2FuZGlkYXRlcyhET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlKQpAQCAtNDk4LDQ1
ICs0MTcsNiBAQCB2b2lkIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6ZW5kT2ZJY2VDYW5kaWRhdGVz
KERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pcwogICAgIHByb21pc2UucmVzb2x2ZSgp
OwogfQogCi12b2lkIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6cmVnaXN0ZXJNRE5TTmFtZShjb25z
dCBTdHJpbmcmIGlwQWRkcmVzcykKLXsKLSAgICArK21fd2FpdGluZ0Zvck1ETlNSZWdpc3RyYXRp
b247Ci0gICAgYXV0byYgZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oKm1fcGVlckNvbm5l
Y3Rpb24uc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKLSAgICBhdXRvJiBwcm92aWRlciA9IGRv
Y3VtZW50LnBhZ2UoKS0+bGliV2ViUlRDUHJvdmlkZXIoKTsKLSAgICBwcm92aWRlci5yZWdpc3Rl
ck1ETlNOYW1lKGRvY3VtZW50LmlkZW50aWZpZXIoKSwgaXBBZGRyZXNzLCBbcGVlckNvbm5lY3Rp
b24gPSBtYWtlUmVmKG1fcGVlckNvbm5lY3Rpb24pLCB0aGlzLCBpcEFkZHJlc3NdIChMaWJXZWJS
VENQcm92aWRlcjo6TUROU05hbWVPckVycm9yJiYgcmVzdWx0KSB7Ci0gICAgICAgIGlmIChwZWVy
Q29ubmVjdGlvbi0+aXNTdG9wcGVkKCkpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAg
LS1tX3dhaXRpbmdGb3JNRE5TUmVnaXN0cmF0aW9uOwotICAgICAgICBpZiAoIXJlc3VsdC5oYXNf
dmFsdWUoKSkgewotICAgICAgICAgICAgbV9wZWVyQ29ubmVjdGlvbi5zY3JpcHRFeGVjdXRpb25D
b250ZXh0KCktPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2
ZWw6Oldhcm5pbmcsIG1ha2VTdHJpbmcoIk1ETlMgcmVnaXN0cmF0aW9uIG9mIGEgaG9zdCBjYW5k
aWRhdGUgZmFpbGVkIHdpdGggZXJyb3IgIiwgKHVuc2lnbmVkKXJlc3VsdC5lcnJvcigpKSk7Ci0g
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICB0aGlzLT5maW5pc2hlZFJl
Z2lzdGVyaW5nTUROU05hbWUoaXBBZGRyZXNzLCByZXN1bHQudmFsdWUoKSk7Ci0gICAgfSk7Ci19
Ci0KLXZvaWQgUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpmaW5pc2hlZFJlZ2lzdGVyaW5nTUROU05h
bWUoY29uc3QgU3RyaW5nJiBpcEFkZHJlc3MsIGNvbnN0IFN0cmluZyYgbmFtZSkKLXsKLSAgICBt
X2lwQWRkcmVzc1RvTUROU05hbWVNYXAuYWRkKGlwQWRkcmVzcywgbmFtZSk7Ci0gICAgVmVjdG9y
PFBlbmRpbmdJQ0VDYW5kaWRhdGUqPiBjYW5kaWRhdGVzOwotICAgIGZvciAoYXV0byYgY2FuZGlk
YXRlIDogbV9wZW5kaW5nSUNFQ2FuZGlkYXRlcykgewotICAgICAgICBpZiAoY2FuZGlkYXRlLnNk
cC5maW5kKGlwQWRkcmVzcykgIT0gbm90Rm91bmQpIHsKLSAgICAgICAgICAgIGF1dG8gc2RwID0g
Y2FuZGlkYXRlLnNkcDsKLSAgICAgICAgICAgIHNkcC5yZXBsYWNlKGlwQWRkcmVzcywgbmFtZSk7
Ci0gICAgICAgICAgICBmaXJlSUNFQ2FuZGlkYXRlRXZlbnQoUlRDSWNlQ2FuZGlkYXRlOjpjcmVh
dGUoV1RGTW92ZShzZHApLCBXVEZNb3ZlKGNhbmRpZGF0ZS5taWQpLCBjYW5kaWRhdGUuc2RwTUxp
bmVJbmRleCksIFdURk1vdmUoY2FuZGlkYXRlLnNlcnZlclVSTCkpOwotICAgICAgICAgICAgY2Fu
ZGlkYXRlcy5hcHBlbmQoJmNhbmRpZGF0ZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgbV9wZW5k
aW5nSUNFQ2FuZGlkYXRlcy5yZW1vdmVBbGxNYXRjaGluZyhbJl0gKGNvbnN0IGF1dG8mIGNhbmRp
ZGF0ZSkgewotICAgICAgICByZXR1cm4gY2FuZGlkYXRlcy5jb250YWlucygmY2FuZGlkYXRlKTsK
LSAgICB9KTsKLQotICAgIGlmICghbV93YWl0aW5nRm9yTUROU1JlZ2lzdHJhdGlvbiAmJiBtX2Zp
bmlzaGVkR2F0aGVyaW5nQ2FuZGlkYXRlcykKLSAgICAgICAgZG9uZUdhdGhlcmluZ0NhbmRpZGF0
ZXMoKTsKLX0KLQogdm9pZCBQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OnVwZGF0ZVNpZ25hbGluZ1N0
YXRlKFJUQ1NpZ25hbGluZ1N0YXRlIG5ld1NpZ25hbGluZ1N0YXRlKQogewogICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuaAppbmRleCAxYzI1NTY2MjVlZWJjMmY3
NzYyMzhhODM1ZDM3NDhiMDE2YTNmNTY0Li42ZjNmYjQyYTgwZTJlYzYyZWNhNDE3NDUwZWQ1YmY1
OTJkZDZhYTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1BlZXJDb25uZWN0aW9uQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmgKQEAgLTIwOSw3ICsyMDksNyBAQCBwcm90
ZWN0ZWQ6CiAgICAgdm9pZCBhZGRJY2VDYW5kaWRhdGVTdWNjZWVkZWQoKTsKICAgICB2b2lkIGFk
ZEljZUNhbmRpZGF0ZUZhaWxlZChFeGNlcHRpb24mJik7CiAKLSAgICBTdHJpbmcgZmlsdGVyU0RQ
KFN0cmluZyYmKSBjb25zdDsKKyAgICB2b2lkIHZhbGlkYXRlU0RQKGNvbnN0IFN0cmluZyYpIGNv
bnN0OwogCiAgICAgc3RydWN0IFBlbmRpbmdUcmFja0V2ZW50IHsKICAgICAgICAgUmVmPFJUQ1J0
cFJlY2VpdmVyPiByZWNlaXZlcjsKQEAgLTIyOCw4ICsyMjgsNiBAQCBwcml2YXRlOgogICAgIHZp
cnR1YWwgdm9pZCBlbmRPZkljZUNhbmRpZGF0ZXMoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYp
OwogICAgIHZpcnR1YWwgdm9pZCBkb1N0b3AoKSA9IDA7CiAKLSAgICB2b2lkIHJlZ2lzdGVyTURO
U05hbWUoY29uc3QgU3RyaW5nJiBpcEFkZHJlc3MpOwotCiBwcm90ZWN0ZWQ6CiAgICAgUlRDUGVl
ckNvbm5lY3Rpb24mIG1fcGVlckNvbm5lY3Rpb247CiAKQEAgLTIzNywyNiArMjM1LDE2IEBAIHBy
aXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPFBlZXJDb25uZWN0aW9uOjpTZXNzaW9uRGVzY3Jp
cHRpb25Qcm9taXNlPiBtX29mZmVyQW5zd2VyUHJvbWlzZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
RE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+PiBtX3NldERlc2NyaXB0aW9uUHJvbWlzZTsKIAotICAg
IGJvb2wgbV9zaG91bGRGaWx0ZXJJQ0VDYW5kaWRhdGVzIHsgdHJ1ZSB9OwotICAgIHN0cnVjdCBQ
ZW5kaW5nSUNFQ2FuZGlkYXRlIHsKLSAgICAgICAgLy8gRmllbGRzIGRlc2NyaWJlZCBpbiBodHRw
czovL3d3dy53My5vcmcvVFIvd2VicnRjLyNpZGwtZGVmLXJ0Y2ljZWNhbmRpZGF0ZWluaXQuCi0g
ICAgICAgIFN0cmluZyBzZHA7Ci0gICAgICAgIFN0cmluZyBtaWQ7Ci0gICAgICAgIHVuc2lnbmVk
IHNob3J0IHNkcE1MaW5lSW5kZXg7Ci0gICAgICAgIFN0cmluZyBzZXJ2ZXJVUkw7Ci0gICAgfTsK
LSAgICBWZWN0b3I8UGVuZGluZ0lDRUNhbmRpZGF0ZT4gbV9wZW5kaW5nSUNFQ2FuZGlkYXRlczsK
KyAgICBib29sIG1fc2hvdWxkRmlsdGVySUNFQ2FuZGlkYXRlcyB7IGZhbHNlIH07CiAKICAgICBW
ZWN0b3I8UGVuZGluZ1RyYWNrRXZlbnQ+IG1fcGVuZGluZ1RyYWNrRXZlbnRzOwogCi0gICAgSGFz
aE1hcDxTdHJpbmcsIFN0cmluZz4gbV9pcEFkZHJlc3NUb01ETlNOYW1lTWFwOwogI2lmICFSRUxF
QVNFX0xPR19ESVNBQkxFRAogICAgIFJlZjxjb25zdCBMb2dnZXI+IG1fbG9nZ2VyOwogICAgIGNv
bnN0IHZvaWQqIG1fbG9nSWRlbnRpZmllcjsKICNlbmRpZgogICAgIGJvb2wgbV9uZWdvdGlhdGlv
bk5lZWRlZCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2ZpbmlzaGVkR2F0aGVyaW5nQ2FuZGlkYXRl
cyB7IGZhbHNlIH07Ci0gICAgdWludDY0X3QgbV93YWl0aW5nRm9yTUROU1JlZ2lzdHJhdGlvbiB7
IDAgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0NvbnRyb2xsZXIuY3BwCmluZGV4IDcwZDQwYzZi
ZDViMzI2MmYyY2ZlNjE1ZmJjMmI0NWM2MjljY2Y0M2UuLmNmMzQ1YTQ2MmZjZGIyMTE5ZjdmYmRm
NWViZGRmMDE0NWViYTc2YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENDb250cm9sbGVyLmNwcApAQCAtNzMsNiArNzMsMTAgQEAgYm9vbCBSVEND
b250cm9sbGVyOjpzaG91bGREaXNhYmxlSUNFQ2FuZGlkYXRlRmlsdGVyaW5nKERvY3VtZW50JiBk
b2N1bWVudCkKIAogdm9pZCBSVENDb250cm9sbGVyOjphZGQoUlRDUGVlckNvbm5lY3Rpb24mIGNv
bm5lY3Rpb24pCiB7CisgICAgYXV0byYgZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oKmNv
bm5lY3Rpb24uc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICBpZiAoYXV0byogbmV0d29y
a01hbmFnZXIgPSBkb2N1bWVudC5ydGNOZXR3b3JrTWFuYWdlcigpKQorICAgICAgICBuZXR3b3Jr
TWFuYWdlci0+c2V0SUNFQ2FuZGlkYXRlRmlsdGVyaW5nKCFzaG91bGREaXNhYmxlSUNFQ2FuZGlk
YXRlRmlsdGVyaW5nKGRvY3VtZW50KSk7CisKICAgICBtX3BlZXJDb25uZWN0aW9ucy5hcHBlbmQo
Y29ubmVjdGlvbik7CiAgICAgaWYgKHNob3VsZERpc2FibGVJQ0VDYW5kaWRhdGVGaWx0ZXJpbmco
ZG93bmNhc3Q8RG9jdW1lbnQ+KCpjb25uZWN0aW9uLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkp
KQogICAgICAgICBjb25uZWN0aW9uLmRpc2FibGVJQ0VDYW5kaWRhdGVGaWx0ZXJpbmcoKTsKQEAg
LTg0LDggKzg4LDEzIEBAIHZvaWQgUlRDQ29udHJvbGxlcjo6ZGlzYWJsZUlDRUNhbmRpZGF0ZUZp
bHRlcmluZ0ZvckFsbE9yaWdpbnMoKQogICAgICAgICByZXR1cm47CiAKICAgICBtX3Nob3VsZEZp
bHRlcklDRUNhbmRpZGF0ZXMgPSBmYWxzZTsKLSAgICBmb3IgKFJUQ1BlZXJDb25uZWN0aW9uJiBj
b25uZWN0aW9uIDogbV9wZWVyQ29ubmVjdGlvbnMpCisgICAgZm9yIChSVENQZWVyQ29ubmVjdGlv
biYgY29ubmVjdGlvbiA6IG1fcGVlckNvbm5lY3Rpb25zKSB7CisgICAgICAgIGlmIChhdXRvKiBk
b2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50Pihjb25uZWN0aW9uLnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSkpIHsKKyAgICAgICAgICAgIGlmIChhdXRvKiBuZXR3b3JrTWFuYWdlciA9IGRvY3Vt
ZW50LT5ydGNOZXR3b3JrTWFuYWdlcigpKQorICAgICAgICAgICAgICAgIG5ldHdvcmtNYW5hZ2Vy
LT5zZXRJQ0VDYW5kaWRhdGVGaWx0ZXJpbmcoZmFsc2UpOworICAgICAgICB9CiAgICAgICAgIGNv
bm5lY3Rpb24uZGlzYWJsZUlDRUNhbmRpZGF0ZUZpbHRlcmluZygpOworICAgIH0KIH0KIAogdm9p
ZCBSVENDb250cm9sbGVyOjpkaXNhYmxlSUNFQ2FuZGlkYXRlRmlsdGVyaW5nRm9yRG9jdW1lbnQo
RG9jdW1lbnQmIGRvY3VtZW50KQpAQCAtOTMsMTEgKzEwMiwxNyBAQCB2b2lkIFJUQ0NvbnRyb2xs
ZXI6OmRpc2FibGVJQ0VDYW5kaWRhdGVGaWx0ZXJpbmdGb3JEb2N1bWVudChEb2N1bWVudCYgZG9j
dW1lbnQpCiAgICAgaWYgKCFMaWJXZWJSVENQcm92aWRlcjo6d2ViUlRDQXZhaWxhYmxlKCkpCiAg
ICAgICAgIHJldHVybjsKIAorICAgIGlmIChhdXRvKiBuZXR3b3JrTWFuYWdlciA9IGRvY3VtZW50
LnJ0Y05ldHdvcmtNYW5hZ2VyKCkpCisgICAgICAgIG5ldHdvcmtNYW5hZ2VyLT5zZXRJQ0VDYW5k
aWRhdGVGaWx0ZXJpbmcoZmFsc2UpOworCiAgICAgbV9maWx0ZXJpbmdEaXNhYmxlZE9yaWdpbnMu
YXBwZW5kKFBlZXJDb25uZWN0aW9uT3JpZ2luIHsgZG9jdW1lbnQudG9wT3JpZ2luKCksIGRvY3Vt
ZW50LnNlY3VyaXR5T3JpZ2luKCkgfSk7CiAgICAgZm9yIChSVENQZWVyQ29ubmVjdGlvbiYgY29u
bmVjdGlvbiA6IG1fcGVlckNvbm5lY3Rpb25zKSB7CiAgICAgICAgIGlmIChhdXRvKiBwZWVyQ29u
bmVjdGlvbkRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbm5lY3Rpb24uc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpKSkgewotICAgICAgICAgICAgaWYgKG1hdGNoRG9jdW1lbnRPcmlnaW4o
KnBlZXJDb25uZWN0aW9uRG9jdW1lbnQsIGRvY3VtZW50LnRvcE9yaWdpbigpLCBkb2N1bWVudC5z
ZWN1cml0eU9yaWdpbigpKSkKKyAgICAgICAgICAgIGlmIChtYXRjaERvY3VtZW50T3JpZ2luKCpw
ZWVyQ29ubmVjdGlvbkRvY3VtZW50LCBkb2N1bWVudC50b3BPcmlnaW4oKSwgZG9jdW1lbnQuc2Vj
dXJpdHlPcmlnaW4oKSkpIHsKKyAgICAgICAgICAgICAgICBpZiAoYXV0byogbmV0d29ya01hbmFn
ZXIgPSBwZWVyQ29ubmVjdGlvbkRvY3VtZW50LT5ydGNOZXR3b3JrTWFuYWdlcigpKQorICAgICAg
ICAgICAgICAgICAgICBuZXR3b3JrTWFuYWdlci0+c2V0SUNFQ2FuZGlkYXRlRmlsdGVyaW5nKGZh
bHNlKTsKICAgICAgICAgICAgICAgICBjb25uZWN0aW9uLmRpc2FibGVJQ0VDYW5kaWRhdGVGaWx0
ZXJpbmcoKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIH0KQEAgLTEwOSw4ICsx
MjQsMTMgQEAgdm9pZCBSVENDb250cm9sbGVyOjplbmFibGVJQ0VDYW5kaWRhdGVGaWx0ZXJpbmco
KQogCiAgICAgbV9maWx0ZXJpbmdEaXNhYmxlZE9yaWdpbnMuY2xlYXIoKTsKICAgICBtX3Nob3Vs
ZEZpbHRlcklDRUNhbmRpZGF0ZXMgPSB0cnVlOwotICAgIGZvciAoUlRDUGVlckNvbm5lY3Rpb24m
IGNvbm5lY3Rpb24gOiBtX3BlZXJDb25uZWN0aW9ucykKKyAgICBmb3IgKFJUQ1BlZXJDb25uZWN0
aW9uJiBjb25uZWN0aW9uIDogbV9wZWVyQ29ubmVjdGlvbnMpIHsKICAgICAgICAgY29ubmVjdGlv
bi5lbmFibGVJQ0VDYW5kaWRhdGVGaWx0ZXJpbmcoKTsKKyAgICAgICAgaWYgKGF1dG8qIGRvY3Vt
ZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbm5lY3Rpb24uc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpKSkgeworICAgICAgICAgICAgaWYgKGF1dG8qIG5ldHdvcmtNYW5hZ2VyID0gZG9jdW1lbnQt
PnJ0Y05ldHdvcmtNYW5hZ2VyKCkpCisgICAgICAgICAgICAgICAgbmV0d29ya01hbmFnZXItPnNl
dElDRUNhbmRpZGF0ZUZpbHRlcmluZyh0cnVlKTsKKyAgICAgICAgfQorICAgIH0KIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENOZXR3b3JrTWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENOZXR3b3JrTWFuYWdlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVmMzZmZDQ2MWY4MWFi
YmEyYzAyYmI4MWYxZmI1Zjk5NzgwMjVmZDAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ05ldHdvcmtNYW5hZ2VyLmgKQEAgLTAsMCArMSw0
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJfUlRDKQor
CisjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgUlRDTmV0d29ya01hbmFnZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNv
dW50ZWQ8UlRDTmV0d29ya01hbmFnZXIsIFdURjo6RGVzdHJ1Y3Rpb25UaHJlYWQ6Ok1haW5SdW5M
b29wPiB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+UlRDTmV0d29ya01hbmFnZXIoKSA9IGRlZmF1
bHQ7CisgICAgdmlydHVhbCB2b2lkIHNldElDRUNhbmRpZGF0ZUZpbHRlcmluZyhib29sKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJNRE5TTmFtZXMoKSA9IDA7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX1JUQykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJU
Q01lZGlhRW5kcG9pbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9s
aWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRwb2ludC5jcHAKaW5kZXggNTNjNDRhZGYxMmE5YmVk
NzRjYTVkYjhhOTU2ODAyM2Q4OTkyNjY1NS4uMjIwODdhMzYyZGY2Yzg5MGI1OTliMTFmZDFkNDQ1
OGU5ZWI4YTEzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9saWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRwb2ludC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRwb2ludC5j
cHAKQEAgLTkzLDE1ICs5MywxNSBAQCBib29sIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OnNldENv
bmZpZ3VyYXRpb24oTGliV2ViUlRDUHJvdmlkZXImIGNsaWVudCwgd2VicnRjOgogICAgIGNvbmZp
Z3VyYXRpb24uc2RwX3NlbWFudGljcyA9IHdlYnJ0Yzo6U2RwU2VtYW50aWNzOjprVW5pZmllZFBs
YW47CiAKICAgICBpZiAoIW1fYmFja2VuZCkgeworICAgICAgICBhdXRvJiBkb2N1bWVudCA9IGRv
d25jYXN0PERvY3VtZW50PigqbV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQuY29ubmVjdGlvbigpLnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgICAgIGlmICghbV9ydGNTb2NrZXRGYWN0b3J5
KSB7Ci0gICAgICAgICAgICBhdXRvJiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50PigqbV9w
ZWVyQ29ubmVjdGlvbkJhY2tlbmQuY29ubmVjdGlvbigpLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSk7CiAgICAgICAgICAgICBSZWdpc3RyYWJsZURvbWFpbiBkb21haW4geyBkb2N1bWVudC51cmwo
KSB9OwogICAgICAgICAgICAgYm9vbCBpc0ZpcnN0UGFydHkgPSBkb21haW4gPT0gUmVnaXN0cmFi
bGVEb21haW4oZG9jdW1lbnQuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSk7CiAgICAgICAgICAgICBt
X3J0Y1NvY2tldEZhY3RvcnkgPSBjbGllbnQuY3JlYXRlU29ja2V0RmFjdG9yeShkb2N1bWVudC51
c2VyQWdlbnQoZG9jdW1lbnQudXJsKCkpLCBpc0ZpcnN0UGFydHksIFdURk1vdmUoZG9tYWluKSk7
CiAgICAgICAgICAgICBpZiAoIW1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLnNob3VsZEZpbHRlcklD
RUNhbmRpZGF0ZXMoKSkKICAgICAgICAgICAgICAgICBtX3J0Y1NvY2tldEZhY3RvcnktPmRpc2Fi
bGVSZWxheSgpOwogICAgICAgICB9Ci0gICAgICAgIG1fYmFja2VuZCA9IGNsaWVudC5jcmVhdGVQ
ZWVyQ29ubmVjdGlvbigqdGhpcywgbV9ydGNTb2NrZXRGYWN0b3J5LmdldCgpLCBXVEZNb3ZlKGNv
bmZpZ3VyYXRpb24pKTsKKyAgICAgICAgbV9iYWNrZW5kID0gY2xpZW50LmNyZWF0ZVBlZXJDb25u
ZWN0aW9uKGRvY3VtZW50LmlkZW50aWZpZXIoKSwgKnRoaXMsIG1fcnRjU29ja2V0RmFjdG9yeS5n
ZXQoKSwgV1RGTW92ZShjb25maWd1cmF0aW9uKSk7CiAgICAgICAgIHJldHVybiAhIW1fYmFja2Vu
ZDsKICAgICB9CiAgICAgYXV0byBvbGRDb25maWd1cmF0aW9uID0gbV9iYWNrZW5kLT5HZXRDb25m
aWd1cmF0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5l
Y3Rpb25CYWNrZW5kLmNwcAppbmRleCA1OTYwMmIwOWFlYzllMGFiYjNkMjI3YzMwZjkyODk0ZDRi
YTZkNjI0Li5jNjllMGM2ZDdiZTcwYmUxZDcwMTMwODEzN2Q4ZTM1Y2ZlMmJlM2JkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJS
VENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAK
QEAgLTMxMCw3ICszMTAsNyBAQCBSZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uPiBMaWJXZWJS
VENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmN1cnJlbnRMb2NhbERlc2NyaQogewogICAgIGF1dG8g
ZGVzY3JpcHRpb24gPSBtX2VuZHBvaW50LT5jdXJyZW50TG9jYWxEZXNjcmlwdGlvbigpOwogICAg
IGlmIChkZXNjcmlwdGlvbikKLSAgICAgICAgZGVzY3JpcHRpb24tPnNldFNkcChmaWx0ZXJTRFAo
U3RyaW5nKGRlc2NyaXB0aW9uLT5zZHAoKSkpKTsKKyAgICAgICAgdmFsaWRhdGVTRFAoZGVzY3Jp
cHRpb24tPnNkcCgpKTsKICAgICByZXR1cm4gZGVzY3JpcHRpb247CiB9CiAKQEAgLTMyMyw3ICsz
MjMsNyBAQCBSZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uPiBMaWJXZWJSVENQZWVyQ29ubmVj
dGlvbkJhY2tlbmQ6OnBlbmRpbmdMb2NhbERlc2NyaQogewogICAgIGF1dG8gZGVzY3JpcHRpb24g
PSBtX2VuZHBvaW50LT5wZW5kaW5nTG9jYWxEZXNjcmlwdGlvbigpOwogICAgIGlmIChkZXNjcmlw
dGlvbikKLSAgICAgICAgZGVzY3JpcHRpb24tPnNldFNkcChmaWx0ZXJTRFAoU3RyaW5nKGRlc2Ny
aXB0aW9uLT5zZHAoKSkpKTsKKyAgICAgICAgdmFsaWRhdGVTRFAoZGVzY3JpcHRpb24tPnNkcCgp
KTsKICAgICByZXR1cm4gZGVzY3JpcHRpb247CiB9CiAKQEAgLTMzNiw3ICszMzYsNyBAQCBSZWZQ
dHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uPiBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6
OmxvY2FsRGVzY3JpcHRpb24oKQogewogICAgIGF1dG8gZGVzY3JpcHRpb24gPSBtX2VuZHBvaW50
LT5sb2NhbERlc2NyaXB0aW9uKCk7CiAgICAgaWYgKGRlc2NyaXB0aW9uKQotICAgICAgICBkZXNj
cmlwdGlvbi0+c2V0U2RwKGZpbHRlclNEUChTdHJpbmcoZGVzY3JpcHRpb24tPnNkcCgpKSkpOwor
ICAgICAgICB2YWxpZGF0ZVNEUChkZXNjcmlwdGlvbi0+c2RwKCkpOwogICAgIHJldHVybiBkZXNj
cmlwdGlvbjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IDljZmM1ZjI1ZDA0ZmViZDI5YjJjMWY0ZmUwZGIxODhjMDRhMTE1
MDYuLjg0N2E1MDg5MDcxNzg2NmZiODlkMWU0NDBhMmY3OWQyMDYwZTFhODIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTExNzIs
NiArMTE3Miw5IEBACiAJCTQxQjg3NzYyMjNERTEwNDUwMDM2MzhCOCAvKiBSZWFsdGltZU1lZGlh
U291cmNlSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDFCODc3NjAyM0RFMTA0MjAwMzYzOEI4IC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VJ
ZGVudGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNDFCQkE4NjYyNTdFMzczQjAwQUM3RjZEIC8qIFNGcmFtZVV0aWxzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTIwOUUyNDI1N0EyRkJCMDAx
MjBBQ0EgLyogU0ZyYW1lVXRpbHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk0MUJGMjA0OTIyQkE3QkU4MDAwNEY4MTIgLyogUmVhbHRpbWVWaWRl
b1NvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDFCRjIwNDAyMkI5NDcxNjAwMDRGODEyIC8qIFJlYWx0aW1lVmlkZW9Tb3VyY2UuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0MUMxNEJDNjI2REU2
REU4MDA2ODVCRjUgLyogUlRDTmV0d29ya01hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQzE0QkM0MjZERTZERTgwMDY4NUJGNSAvKiBSVENO
ZXR3b3JrTWFuYWdlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTQxQzE0QkM3MjZERTg1ODQwMDY4NUJGNSAvKiBMaWJXZWJSVENVdGlscy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFEMUEwNEMyMTNF
RERGRjAwNjNGQjZCIC8qIExpYldlYlJUQ1V0aWxzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDFDMTRCQzkyNkRGNzlENzAwNjg1QkY1IC8qIE1E
TlNSZWdpc3RlckVycm9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0MUMxNEJDODI2REY3OUQ2MDA2ODVCRjUgLyogTUROU1JlZ2lzdGVyRXJyb3IuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MUMzQjhB
MTI2NDlCMUUwMDA0RUQ0REUgLyogQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5h
bFVuaXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQx
QzNCODlGMjY0OUIxQjcwMDRFRDRERSAvKiBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcklu
dGVybmFsVW5pdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTQxQzNCOEEyMjY0OUIxRTUwMDRFRDRERSAvKiBBdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlclVuaXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQxQzNCODlCMjY0OUIxQjYwMDRFRDRERSAvKiBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5k
ZXJlclVuaXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk0MUM3NjBCMTBFREUwM0QzMDBDMTY1NUYgLyogU2NyaXB0U3RhdGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQzc2MEIwMEVERTAzRDMwMEMx
NjU1RiAvKiBTY3JpcHRTdGF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CkBAIC04MDQ0LDYgKzgwNDcsOCBAQAogCQk0MUJDRTg3NzI1RjdBNjdBMDA0
NkMyRTUgLyogUlRDVHJhbnNmb3JtRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUlRDVHJhbnNmb3JtRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDFCRjIwNDAyMkI5NDcxNjAwMDRGODEyIC8qIFJlYWx0aW1lVmlkZW9Tb3VyY2UuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUmVhbHRpbWVWaWRlb1NvdXJjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0MUJGMjA0MjIyQjk0NzE3MDAwNEY4MTIgLyogUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBSZWFsdGltZVZpZGVvU291cmNlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNDFDMTRCQzQyNkRFNkRFODAwNjg1QkY1IC8qIFJUQ05ldHdvcmtN
YW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJUQ05ldHdvcmtNYW5h
Z2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxQzE0QkM4MjZERjc5RDYwMDY4
NUJGNSAvKiBNRE5TUmVnaXN0ZXJFcnJvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBNRE5TUmVnaXN0ZXJFcnJvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
MUMzQjg5QjI2NDlCMUI2MDA0RUQ0REUgLyogQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJV
bml0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUMzQjg5QzI2NDlCMUI2MDA0RUQ0REUg
LyogQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBB
dWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29hLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQxQzNCODlEMjY0OUIxQjYwMDRFRDRERSAvKiBBdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlckNvY29hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF1ZGlvTWVkaWFTdHJlYW1U
cmFja1JlbmRlcmVyQ29jb2EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTcy
NTQsNiArMTcyNTksNyBAQAogCQkJCTMxNkRDQjg5MUU3QTY5OTYwMDFCNUY4NyAvKiBSVENJY2VU
cmFuc3BvcnQuaWRsICovLAogCQkJCTQxNDUxNkUwMjZDQzA0MjEwMEFBQUJFMCAvKiBSVENJY2VU
cmFuc3BvcnRCYWNrZW5kLmggKi8sCiAJCQkJMzE2RENCOEUxRTdBNkM3OTAwMUI1Rjg3IC8qIFJU
Q0ljZVRyYW5zcG9ydFN0YXRlLmlkbCAqLywKKwkJCQk0MUMxNEJDNDI2REU2REU4MDA2ODVCRjUg
LyogUlRDTmV0d29ya01hbmFnZXIuaCAqLywKIAkJCQkwNzM3OTREQzE5RUUyQzUyMDBFNUEwNDUg
LyogUlRDT2ZmZXJBbnN3ZXJPcHRpb25zLmggKi8sCiAJCQkJMzE2RENCMTIxRTc4QkU0MzAwMUI1
Rjg3IC8qIFJUQ09mZmVyQW5zd2VyT3B0aW9ucy5pZGwgKi8sCiAJCQkJMzE2RENCMjgxRTc4RjM5
NTAwMUI1Rjg3IC8qIFJUQ09mZmVyT3B0aW9ucy5oICovLApAQCAtMTczMzUsOSArMTczNDEsOSBA
QAogCQkJCTQxNDUxNkU4MjZDRTUyNTMwMEFBQUJFMCAvKiBSVENTY3RwVHJhbnNwb3J0LmNwcCAq
LywKIAkJCQk0MTQ1MTZFQTI2Q0U1MjU0MDBBQUFCRTAgLyogUlRDU2N0cFRyYW5zcG9ydC5oICov
LAogCQkJCTQxNDUxNkU5MjZDRTUyNTQwMEFBQUJFMCAvKiBSVENTY3RwVHJhbnNwb3J0LmlkbCAq
LywKKwkJCQk0MTQ1MTZFQjI2Q0U1MjY2MDBBQUFCRTAgLyogUlRDU2N0cFRyYW5zcG9ydEJhY2tl
bmQuaCAqLywKIAkJCQk0MTQ1MTZFRTI2Q0U1NTZDMDBBQUFCRTAgLyogUlRDU2N0cFRyYW5zcG9y
dFN0YXRlLmggKi8sCiAJCQkJNDE0NTE2RUQyNkNFNTU2QjAwQUFBQkUwIC8qIFJUQ1NjdHBUcmFu
c3BvcnRTdGF0ZS5pZGwgKi8sCi0JCQkJNDE0NTE2RUIyNkNFNTI2NjAwQUFBQkUwIC8qIFJUQ1Nj
dHBUcmFuc3BvcnRCYWNrZW5kLmggKi8sCiAJCQkJNDEwRjU2NTgyNEZDRjg1NDAwQTJFNTBDIC8q
IFJUQ1NkcFR5cGUuaWRsICovLAogCQkJCTA3MjIxQjdBMTdDRUMzMjcwMDg0OEU1MSAvKiBSVENT
ZXNzaW9uRGVzY3JpcHRpb24uY3BwICovLAogCQkJCTA3MjIxQjdCMTdDRUMzMjcwMDg0OEU1MSAv
KiBSVENTZXNzaW9uRGVzY3JpcHRpb24uaCAqLywKQEAgLTE3MzgxLDYgKzE3Mzg3LDcgQEAKIAkJ
CQkwN0I3MTE2QjFEODk5RTYzMDA5RjBGRkIgLyogQ2FwdHVyZURldmljZU1hbmFnZXIuY3BwICov
LAogCQkJCTA3QjcxMTZDMUQ4OTlFNjMwMDlGMEZGQiAvKiBDYXB0dXJlRGV2aWNlTWFuYWdlci5o
ICovLAogCQkJCTVFQkI4OTMwMUM3Nzc3RTEwMEM2NUQ0MSAvKiBJY2VDYW5kaWRhdGUuaCAqLywK
KwkJCQk0MUMxNEJDODI2REY3OUQ2MDA2ODVCRjUgLyogTUROU1JlZ2lzdGVyRXJyb3IuaCAqLywK
IAkJCQkxQkU1QkZDMTFENTE1NzE1MDAxNjY2RDkgLyogTWVkaWFDb25zdHJhaW50cy5jcHAgKi8s
CiAJCQkJMDcyMjFCOTkxN0NGMEFENDAwODQ4RTUxIC8qIE1lZGlhQ29uc3RyYWludHMuaCAqLywK
IAkJCQk0MUIyOEIxMzFGODUwMUE0MDBGQjUyQUMgLyogTWVkaWFFbmRwb2ludENvbmZpZ3VyYXRp
b24uY3BwICovLApAQCAtMzM1ODMsNiArMzM1OTAsNyBAQAogCQkJCTQxODFDNUNEMjU1NTgzNjkw
MEFFQjBGRiAvKiBMaWJXZWJSVENSdHBUcmFuc2Zvcm1hYmxlRnJhbWUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTQxODFDNUQxMjU1NTg5NTYwMEFFQjBGRiAvKiBMaWJXZWJSVENSdHBUcmFuc2Zvcm1C
YWNrZW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTBFNDQ2MTIzNDM3M0U5MDAwMTczRDQgLyog
TGliV2ViUlRDU29ja2V0SWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDFDMTRCQzcy
NkRFODU4NDAwNjg1QkY1IC8qIExpYldlYlJUQ1V0aWxzLmggaW4gSGVhZGVycyAqLywKIAkJCQk4
NDczMEQ5MTEyNDhGMEIzMDBEM0E5QzkgLyogTGlnaHRTb3VyY2UuaCBpbiBIZWFkZXJzICovLAog
CQkJCUIyMjI3OTY1MEQwMEJGMjIwMDcxQjc4MiAvKiBMaW5lYXJHcmFkaWVudEF0dHJpYnV0ZXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCUFCMzFDOTFFMTBBRTFCOEUwMDBDN0I5MiAvKiBMaW5lQ2xh
bXBWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMzY0Niw2ICszMzY1NCw3IEBACiAJCQkJNDM5
MDQ2RUExMkRBMjVFODEyQUY4MEFDIC8qIE1hdGhPcGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNDlENURDMkMwRjQyM0E3MzAwOEYyMEZEIC8qIE1hdHJpeDNEVHJhbnNmb3JtT3BlcmF0aW9u
LmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUU5MTFDNzBFRjg2RDQ3MDA5RDBDQUYgLyogTWF0cml4
VHJhbnNmb3JtT3BlcmF0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk0MUMxNEJDOTI2REY3OUQ3
MDA2ODVCRjUgLyogTUROU1JlZ2lzdGVyRXJyb3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDQkM4
REFEMUFBQTMwMjIwMEUxQzgwMyAvKiBNZWRpYUFjY2Vzc2liaWxpdHlTb2Z0TGluay5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJOTMxQkNDNjExMTI0REZDQjAwQkU3MEREIC8qIE1lZGlhQ2FuU3RhcnRM
aXN0ZW5lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RDQzlCQ0YyMjM4N0U5QTAwRkZCNTFDIC8q
IE1lZGlhQ2FwYWJpbGl0aWVzRGVjb2RpbmdJbmZvLmggaW4gSGVhZGVycyAqLywKQEAgLTM0NDYx
LDYgKzM0NDcwLDcgQEAKIAkJCQkwN0FCOTk2QjE4REEzQzAxMDAxODc3MUUgLyogUlRDSWNlU2Vy
dmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMTM1OTEwODFFN0REQzczMDBGMzA2MzAgLyogUlRD
SWNlVHJhbnNwb3J0UG9saWN5LmggaW4gSGVhZGVycyAqLywKIAkJCQkzMTM1OTEwOTFFN0REQzcz
MDBGMzA2MzAgLyogUlRDSWNlVHJhbnNwb3J0U3RhdGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTQx
QzE0QkM2MjZERTZERTgwMDY4NUJGNSAvKiBSVENOZXR3b3JrTWFuYWdlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMDczNzk0RkUxOUY1ODY0RTAwRTVBMDQ1IC8qIFJUQ05vdGlmaWVyc01vY2suaCBp
biBIZWFkZXJzICovLAogCQkJCTA3Mzc5NERFMTlFRTJDNTIwMEU1QTA0NSAvKiBSVENPZmZlckFu
c3dlck9wdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3OEUwOTI1MTdEMTREMUMwMDQyMEFB
MSAvKiBSVENQZWVyQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNDQ4MSw2ICszNDQ5
MSw3IEBACiAJCQkJNDEzQzhCMzQyNTUyRjI3RDAwRTY1MDU1IC8qIFJUQ1J0cFRyYW5zZm9ybS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNDE4MUM1Q0IyNTU1ODJFNDAwQUVCMEZGIC8qIFJUQ1J0cFRy
YW5zZm9ybWFibGVGcmFtZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE4MUM1QzkyNTU1NzNERjAw
QUVCMEZGIC8qIFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQuaCBpbiBIZWFkZXJzICovLAorCQkJCTQx
NDUxNkVDMjZDRTUyNjYwMEFBQUJFMCAvKiBSVENTY3RwVHJhbnNwb3J0QmFja2VuZC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMzEzNTkxMEExRTdEREM3MzAwRjMwNjMwIC8qIFJUQ1NkcFR5cGUuaCBp
biBIZWFkZXJzICovLAogCQkJCTA3OEUwOTI2MTdEMTREMUMwMDQyMEFBMSAvKiBSVENTZXNzaW9u
RGVzY3JpcHRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTA3OEUwOTQzMTdEMTZFMUMwMDQyMEFB
MSAvKiBSVENTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLywKQEAg
LTM1Mjg1LDcgKzM1Mjk2LDYgQEAKIAkJCQk3QUY5QjIwNjE4Q0ZCMkRGMDBDNjRCRUYgLyogVlRU
UmVnaW9uTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0E5Mzg2ODYxOERDQzE0NTAwQjgyNjNE
IC8qIFZUVFNjYW5uZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUExNDgzMkIwMTg3RjYxOEQwMERB
NjNBNiAvKiBXQUtBcHBLaXRTdHVicy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDE0NTE2RUMyNkNF
NTI2NjAwQUFBQkUwIC8qIFJUQ1NjdHBUcmFuc3BvcnRCYWNrZW5kLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBMTQ4MzJCMjE4N0Y2MUVEMDBEQTYzQTYgLyogV0FLQ2xpcFZpZXcuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUExNDgzMkI0MTg3RjYyOUEwMERBNjNBNiAvKiBXQUtSZXNwb25kZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUExNDgzMkI2MTg3RjYzMUYwMERBNjNBNiAvKiBXQUtTY3JvbGxWaWV3
LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDk0NjZmZDlmN2Y1
NDdmZGQ5YmVmMDRlZjg1N2EyYTZlY2EyYjFmZDguLjk2NDlhNDU2YzJiMDgyMDBkYTVkN2Y3ODk4
MGZhYTY2ZWQxMmFhY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMjU5NSwxMiArMjU5
NSw5IEBAIHZvaWQgRG9jdW1lbnQ6OndpbGxCZVJlbW92ZWRGcm9tRnJhbWUoKQogICAgIGlmICht
X2hhc1ByZXBhcmVkRm9yRGVzdHJ1Y3Rpb24pCiAgICAgICAgIHJldHVybjsKIAotI2lmIFVTRShM
SUJXRUJSVEMpCi0gICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIG1vdmVkIHRvIE1vZHVsZXMv
bWVkaWFzdHJlYW0uCi0gICAgaWYgKExpYldlYlJUQ1Byb3ZpZGVyOjp3ZWJSVENBdmFpbGFibGUo
KSkgewotICAgICAgICBpZiAoYXV0byogcGFnZSA9IHRoaXMtPnBhZ2UoKSkKLSAgICAgICAgICAg
IHBhZ2UtPmxpYldlYlJUQ1Byb3ZpZGVyKCkudW5yZWdpc3Rlck1ETlNOYW1lcyhpZGVudGlmaWVy
KCkpOwotICAgIH0KKyNpZiBFTkFCTEUoV0VCX1JUQykKKyAgICBpZiAobV9ydGNOZXR3b3JrTWFu
YWdlcikKKyAgICAgICAgbV9ydGNOZXR3b3JrTWFuYWdlci0+dW5yZWdpc3Rlck1ETlNOYW1lcygp
OwogI2VuZGlmCiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCkBAIC01NjE3LDEyICs1NjE0
LDkgQEAgdm9pZCBEb2N1bWVudDo6c3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uIHJlYXNvbikK
ICAgICAgICAgICAgIHZpZXctPmNvbXBvc2l0b3IoKS5jYW5jZWxDb21wb3NpdGluZ0xheWVyVXBk
YXRlKCk7CiAgICAgfQogCi0jaWYgVVNFKExJQldFQlJUQykKLSAgICAvLyBGSVhNRTogVGhpcyBz
aG91bGQgYmUgbW92ZWQgdG8gTW9kdWxlcy9tZWRpYXN0cmVhbS4KLSAgICBpZiAoTGliV2ViUlRD
UHJvdmlkZXI6OndlYlJUQ0F2YWlsYWJsZSgpKSB7Ci0gICAgICAgIGlmIChhdXRvKiBwYWdlID0g
dGhpcy0+cGFnZSgpKQotICAgICAgICAgICAgcGFnZS0+bGliV2ViUlRDUHJvdmlkZXIoKS51bnJl
Z2lzdGVyTUROU05hbWVzKGlkZW50aWZpZXIoKSk7Ci0gICAgfQorI2lmIEVOQUJMRShXRUJfUlRD
KQorICAgIGlmIChtX3J0Y05ldHdvcmtNYW5hZ2VyKQorICAgICAgICBtX3J0Y05ldHdvcmtNYW5h
Z2VyLT51bnJlZ2lzdGVyTUROU05hbWVzKCk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggYWY1ZTc4NTBjYTkyMTVmMjI5MWQ1MDRi
MmRmOGU5YzJkMGQ1M2I5Ni4uODIzMDk4M2E2YTYxZjE5ZjliOTFhMjcxZDQwMTA0MzU0Nzk0YzNi
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTQ5LDYgKzQ5LDcgQEAKICNpbmNsdWRlICJQYWdl
SWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlBsYXRmb3JtRXZlbnQuaCIKICNpbmNsdWRlICJQbGF5
YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiUlRDTmV0d29y
a01hbmFnZXIuaCIKICNpbmNsdWRlICJSZWZlcnJlclBvbGljeS5oIgogI2luY2x1ZGUgIlJlZ2lv
bi5oIgogI2luY2x1ZGUgIlJlZ2lzdHJhYmxlRG9tYWluLmgiCkBAIC03MDgsNiArNzA5LDExIEBA
IHB1YmxpYzoKICAgICBTb2NrZXRQcm92aWRlciogc29ja2V0UHJvdmlkZXIoKSBmaW5hbDsKICAg
ICBSZWZQdHI8UlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyQ29ubmVjdGlvbj4gY3JlYXRlUlRD
RGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyQ29ubmVjdGlvbigpIGZpbmFsOwogCisjaWYgRU5BQkxF
KFdFQl9SVEMpCisgICAgUlRDTmV0d29ya01hbmFnZXIqIHJ0Y05ldHdvcmtNYW5hZ2VyKCkgeyBy
ZXR1cm4gbV9ydGNOZXR3b3JrTWFuYWdlci5nZXQoKTsgfQorICAgIHZvaWQgc2V0UlRDTmV0d29y
a01hbmFnZXIoUmVmPFJUQ05ldHdvcmtNYW5hZ2VyPiYmIHJ0Y05ldHdvcmtNYW5hZ2VyKSB7IG1f
cnRjTmV0d29ya01hbmFnZXIgPSBXVEZNb3ZlKHJ0Y05ldHdvcmtNYW5hZ2VyKTsgfQorI2VuZGlm
CisKICAgICBib29sIGNhbk5hdmlnYXRlKEZyYW1lKiB0YXJnZXRGcmFtZSwgY29uc3QgVVJMJiBk
ZXN0aW5hdGlvblVSTCA9IFVSTCgpKTsKIAogICAgIGJvb2wgdXNlc1N0eWxlQmFzZWRFZGl0YWJp
bGl0eSgpIGNvbnN0OwpAQCAtMjIyMSw2ICsyMjI3LDEwIEBAIHByaXZhdGU6CiAKICAgICBMaXN0
SGFzaFNldDxSZWY8RWxlbWVudD4+IG1fdG9wTGF5ZXJFbGVtZW50czsKICAgICBVbmlxdWVSZWY8
V2hpdGVzcGFjZUNhY2hlPiBtX3doaXRlc3BhY2VDYWNoZTsKKworI2lmIEVOQUJMRShXRUJfUlRD
KQorICAgIFJlZlB0cjxSVENOZXR3b3JrTWFuYWdlcj4gbV9ydGNOZXR3b3JrTWFuYWdlcjsKKyNl
bmRpZgogfTsKIAogRWxlbWVudCogZXZlbnRUYXJnZXRFbGVtZW50Rm9yRG9jdW1lbnQoRG9jdW1l
bnQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01E
TlNSZWdpc3RlckVycm9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9N
RE5TUmVnaXN0ZXJFcnJvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc3YzVkYWZlMzNmYmU2NGU3YTgyNmMxNTFi
NmJlM2NhNTJmYTU1NWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9NRE5TUmVnaXN0ZXJFcnJvci5oCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworZW51bSBjbGFzcyBNRE5TUmVnaXN0ZXJFcnJvciB7IE5vdElt
cGxlbWVudGVkLCBCYWRQYXJhbWV0ZXIsIEROU1NELCBJbnRlcm5hbCwgVGltZW91dCB9OworCit9
CisKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNv
cmU6Ok1ETlNSZWdpc3RlckVycm9yPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwK
KyAgICAgICAgV2ViQ29yZTo6TUROU1JlZ2lzdGVyRXJyb3IsCisgICAgICAgIFdlYkNvcmU6Ok1E
TlNSZWdpc3RlckVycm9yOjpOb3RJbXBsZW1lbnRlZCwKKyAgICAgICAgV2ViQ29yZTo6TUROU1Jl
Z2lzdGVyRXJyb3I6OkJhZFBhcmFtZXRlciwKKyAgICAgICAgV2ViQ29yZTo6TUROU1JlZ2lzdGVy
RXJyb3I6OkROU1NELAorICAgICAgICBXZWJDb3JlOjpNRE5TUmVnaXN0ZXJFcnJvcjo6SW50ZXJu
YWwsCisgICAgICAgIFdlYkNvcmU6Ok1ETlNSZWdpc3RlckVycm9yOjpUaW1lb3V0CisgICAgPjsK
K307CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuY3BwCmluZGV4IGM1OTU2
MTc4NzJiMjJiOWVjM2Y1MzJkMzQ1YjA4YzE2ZmU2YmZkNmQuLjVhZjc5YWQ0ODU4Njg0MGY0ODc1
N2RlZmU4YTNhNjZlNTZkM2JlY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVy
LmNwcApAQCAtMjk5LDcgKzI5OSw3IEBAIHZvaWQgTGliV2ViUlRDUHJvdmlkZXI6OmVuYWJsZUVu
dW1lcmF0aW5nQWxsTmV0d29ya0ludGVyZmFjZXMoKQogICAgIG1fZW5hYmxlRW51bWVyYXRpbmdB
bGxOZXR3b3JrSW50ZXJmYWNlcyA9IHRydWU7CiB9CiAKLXJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJy
dGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlPiBMaWJXZWJSVENQcm92aWRlcjo6Y3JlYXRlUGVl
ckNvbm5lY3Rpb24od2VicnRjOjpQZWVyQ29ubmVjdGlvbk9ic2VydmVyJiBvYnNlcnZlciwgcnRj
OjpQYWNrZXRTb2NrZXRGYWN0b3J5Kiwgd2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6
UlRDQ29uZmlndXJhdGlvbiYmIGNvbmZpZ3VyYXRpb24pCitydGM6OnNjb3BlZF9yZWZwdHI8d2Vi
cnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZT4gTGliV2ViUlRDUHJvdmlkZXI6OmNyZWF0ZVBl
ZXJDb25uZWN0aW9uKERvY3VtZW50SWRlbnRpZmllciwgd2VicnRjOjpQZWVyQ29ubmVjdGlvbk9i
c2VydmVyJiBvYnNlcnZlciwgcnRjOjpQYWNrZXRTb2NrZXRGYWN0b3J5Kiwgd2VicnRjOjpQZWVy
Q29ubmVjdGlvbkludGVyZmFjZTo6UlRDQ29uZmlndXJhdGlvbiYmIGNvbmZpZ3VyYXRpb24pCiB7
CiAgICAgLy8gRGVmYXVsdCBXSzEgaW1wbGVtZW50YXRpb24uCiAgICAgQVNTRVJUKG1fdXNlTmV0
d29ya1RocmVhZFdpdGhTb2NrZXRTZXJ2ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlk
ZXIuaAppbmRleCAxODYyN2VlNTdmNzU4YTA0NzIyZDE2MTZmMGY4NzYyODQzNDExNWI3Li45NDIw
NzNiMzJlMTdlNTQ2NjllN2VkMjM4YTVmMTkxMTUxNGIyNDc2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGli
V2ViUlRDUHJvdmlkZXIuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiRG9jdW1lbnRJ
ZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiTGliV2ViUlRDTWFjcm9zLmgiCisjaW5jbHVkZSAiTURO
U1JlZ2lzdGVyRXJyb3IuaCIKICNpbmNsdWRlICJSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXJD
b25uZWN0aW9uLmgiCiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVk
ZSA8d3RmL0V4cGVjdGVkLmg+CkBAIC02Niw4ICs2Nyw2IEBAIGNsYXNzIFJlZ2lzdHJhYmxlRG9t
YWluOwogc3RydWN0IFBlZXJDb25uZWN0aW9uRmFjdG9yeUFuZFRocmVhZHM7CiBzdHJ1Y3QgUlRD
UnRwQ2FwYWJpbGl0aWVzOwogCi1lbnVtIGNsYXNzIE1ETlNSZWdpc3RlckVycm9yIHsgTm90SW1w
bGVtZW50ZWQsIEJhZFBhcmFtZXRlciwgRE5TU0QsIEludGVybmFsLCBUaW1lb3V0IH07Ci0KIGNs
YXNzIFdFQkNPUkVfRVhQT1JUIExpYldlYlJUQ1Byb3ZpZGVyIHsKICAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKQEAgLTg2LDE4ICs4NSwxMCBAQCBwdWJsaWM6CiAgICAgdXNp
bmcgSVBBZGRyZXNzT3JFcnJvciA9IEV4cGVjdGVkPFN0cmluZywgTUROU1JlZ2lzdGVyRXJyb3I+
OwogICAgIHVzaW5nIE1ETlNOYW1lT3JFcnJvciA9IEV4cGVjdGVkPFN0cmluZywgTUROU1JlZ2lz
dGVyRXJyb3I+OwogCi0gICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJNRE5TTmFtZXMoRG9jdW1l
bnRJZGVudGlmaWVyKSB7IH0KLQotICAgIHZpcnR1YWwgdm9pZCByZWdpc3Rlck1ETlNOYW1lKERv
Y3VtZW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBpcEFkZHJlc3MsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoTUROU05hbWVPckVycm9yJiYpPiYmIGNhbGxiYWNrKQotICAgIHsKLSAgICAgICAg
VU5VU0VEX1BBUkFNKGlwQWRkcmVzcyk7Ci0gICAgICAgIGNhbGxiYWNrKG1ha2VVbmV4cGVjdGVk
KE1ETlNSZWdpc3RlckVycm9yOjpOb3RJbXBsZW1lbnRlZCkpOwotICAgIH0KLQogICAgIHZpcnR1
YWwgUmVmUHRyPFJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlckNvbm5lY3Rpb24+IGNyZWF0ZVJU
Q0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlckNvbm5lY3Rpb24oKSB7IHJldHVybiBudWxscHRyOyB9
CiAKICNpZiBVU0UoTElCV0VCUlRDKQotICAgIHZpcnR1YWwgcnRjOjpzY29wZWRfcmVmcHRyPHdl
YnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U+IGNyZWF0ZVBlZXJDb25uZWN0aW9uKHdlYnJ0
Yzo6UGVlckNvbm5lY3Rpb25PYnNlcnZlciYsIHJ0Yzo6UGFja2V0U29ja2V0RmFjdG9yeSosIHdl
YnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OlJUQ0NvbmZpZ3VyYXRpb24mJik7CisgICAg
dmlydHVhbCBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFj
ZT4gY3JlYXRlUGVlckNvbm5lY3Rpb24oRG9jdW1lbnRJZGVudGlmaWVyLCB3ZWJydGM6OlBlZXJD
b25uZWN0aW9uT2JzZXJ2ZXImLCBydGM6OlBhY2tldFNvY2tldEZhY3RvcnkqLCB3ZWJydGM6OlBl
ZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpSVENDb25maWd1cmF0aW9uJiYpOwogCiAgICAgd2VicnRj
OjpQZWVyQ29ubmVjdGlvbkZhY3RvcnlJbnRlcmZhY2UqIGZhY3RvcnkoKTsKIApAQCAtMTgwLDE2
ICsxNzEsMyBAQCBpbmxpbmUgdm9pZCBMaWJXZWJSVENQcm92aWRlcjo6c2V0VlA5U3VwcG9ydChi
b29sIHN1cHBvcnRzVlA5UHJvZmlsZTAsIGJvb2wgc3VwcAogI2VuZGlmCiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotbmFtZXNwYWNlIFdURiB7Ci10ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJh
aXRzPFdlYkNvcmU6Ok1ETlNSZWdpc3RlckVycm9yPiB7Ci0gICAgdXNpbmcgdmFsdWVzID0gRW51
bVZhbHVlczwKLSAgICAgICAgV2ViQ29yZTo6TUROU1JlZ2lzdGVyRXJyb3IsCi0gICAgICAgIFdl
YkNvcmU6Ok1ETlNSZWdpc3RlckVycm9yOjpOb3RJbXBsZW1lbnRlZCwKLSAgICAgICAgV2ViQ29y
ZTo6TUROU1JlZ2lzdGVyRXJyb3I6OkJhZFBhcmFtZXRlciwKLSAgICAgICAgV2ViQ29yZTo6TURO
U1JlZ2lzdGVyRXJyb3I6OkROU1NELAotICAgICAgICBXZWJDb3JlOjpNRE5TUmVnaXN0ZXJFcnJv
cjo6SW50ZXJuYWwsCi0gICAgICAgIFdlYkNvcmU6Ok1ETlNSZWdpc3RlckVycm9yOjpUaW1lb3V0
Ci0gICAgPjsKLX07Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L3dlYnJ0Yy9OZXR3b3JrTUROU1JlZ2lzdGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvd2VicnRjL05ldHdvcmtNRE5TUmVnaXN0ZXIuY3BwCmluZGV4IGZjNDM1MTEyZjViY2Uw
YWEzMTIyMGU0MTJmY2U0YzU5ODNmMjhiMDcuLjdhYTE3YzEzMWYxNjI2ODRjZDI4M2E3YTBlNGMx
ZDEzMWJlZTg2MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2Vi
cnRjL05ldHdvcmtNRE5TUmVnaXN0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvd2VicnRjL05ldHdvcmtNRE5TUmVnaXN0ZXIuY3BwCkBAIC05OCwyNyArOTgsMjkgQEAg
c3RhdGljIHZvaWQgcmVnaXN0ZXJNRE5TTmFtZUNhbGxiYWNrKEROU1NlcnZpY2VSZWYsIEROU1Jl
Y29yZFJlZiByZWNvcmQsIEROU1NlcnYKICAgICBNRE5TX1JFTEVBU0VfTE9HX0lOX0NBTExCQUNL
KHJlcXVlc3QtPnNlc3Npb25JRCwgInJlZ2lzdGVyTUROU05hbWVDYWxsYmFjayB3aXRoIGVycm9y
ICVkIiwgZXJyb3JDb2RlKTsKIAogICAgIGlmIChlcnJvckNvZGUpIHsKLSAgICAgICAgcmVxdWVz
dC0+Y29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6V2ViTUROU1JlZ2lzdGVyOjpGaW5pc2hlZFJl
Z2lzdGVyaW5nTUROU05hbWUgeyByZXF1ZXN0LT5yZXF1ZXN0SWRlbnRpZmllciwgbWFrZVVuZXhw
ZWN0ZWQoV2ViQ29yZTo6TUROU1JlZ2lzdGVyRXJyb3I6OkROU1NEKSB9LCAwKTsKKyAgICAgICAg
cmVxdWVzdC0+Y29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6V2ViTUROU1JlZ2lzdGVyOjpGaW5p
c2hlZFJlZ2lzdGVyaW5nTUROU05hbWUgeyByZXF1ZXN0LT5yZXF1ZXN0SWRlbnRpZmllciwgcmVx
dWVzdC0+bmFtZSwgV2ViQ29yZTo6TUROU1JlZ2lzdGVyRXJyb3I6OkROU1NEIH0sIDApOwogICAg
ICAgICByZXR1cm47CiAgICAgfQotICAgIHJlcXVlc3QtPmNvbm5lY3Rpb24tPnNlbmQoTWVzc2Fn
ZXM6OldlYk1ETlNSZWdpc3Rlcjo6RmluaXNoZWRSZWdpc3RlcmluZ01ETlNOYW1lIHsgcmVxdWVz
dC0+cmVxdWVzdElkZW50aWZpZXIsIHJlcXVlc3QtPm5hbWUgfSwgMCk7CisgICAgcmVxdWVzdC0+
Y29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6V2ViTUROU1JlZ2lzdGVyOjpGaW5pc2hlZFJlZ2lz
dGVyaW5nTUROU05hbWUgeyByZXF1ZXN0LT5yZXF1ZXN0SWRlbnRpZmllciwgcmVxdWVzdC0+bmFt
ZSwgeyB9IH0sIDApOwogfQogCiB2b2lkIE5ldHdvcmtNRE5TUmVnaXN0ZXI6OnJlZ2lzdGVyTURO
U05hbWUoTUROU1JlZ2lzdGVySWRlbnRpZmllciByZXF1ZXN0SWRlbnRpZmllciwgV2ViQ29yZTo6
RG9jdW1lbnRJZGVudGlmaWVyIGRvY3VtZW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBpcEFk
ZHJlc3MpCiB7CisgICAgYXV0byBuYW1lID0gbWFrZVN0cmluZyhjcmVhdGVDYW5vbmljYWxVVUlE
U3RyaW5nKCksICIubG9jYWwiKTsKKwogICAgIEROU1NlcnZpY2VSZWYgc2VydmljZTsKICAgICBh
dXRvIGl0ZXJhdG9yID0gbV9zZXJ2aWNlcy5maW5kKGRvY3VtZW50SWRlbnRpZmllcik7CiAgICAg
aWYgKGl0ZXJhdG9yID09IG1fc2VydmljZXMuZW5kKCkpIHsKICAgICAgICAgYXV0byBlcnJvciA9
IEROU1NlcnZpY2VDcmVhdGVDb25uZWN0aW9uKCZzZXJ2aWNlKTsKICAgICAgICAgaWYgKGVycm9y
KSB7CiAgICAgICAgICAgICBNRE5TX1JFTEVBU0VfTE9HKCJyZWdpc3Rlck1ETlNOYW1lIEROU1Nl
cnZpY2VDcmVhdGVDb25uZWN0aW9uIGVycm9yICVkIiwgZXJyb3IpOwotICAgICAgICAgICAgbV9j
b25uZWN0aW9uLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpXZWJNRE5TUmVnaXN0ZXI6OkZp
bmlzaGVkUmVnaXN0ZXJpbmdNRE5TTmFtZSB7IHJlcXVlc3RJZGVudGlmaWVyLCBtYWtlVW5leHBl
Y3RlZChXZWJDb3JlOjpNRE5TUmVnaXN0ZXJFcnJvcjo6RE5TU0QpIH0sIDApOworICAgICAgICAg
ICAgbV9jb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpXZWJNRE5TUmVnaXN0
ZXI6OkZpbmlzaGVkUmVnaXN0ZXJpbmdNRE5TTmFtZSB7IHJlcXVlc3RJZGVudGlmaWVyLCBuYW1l
LCBXZWJDb3JlOjpNRE5TUmVnaXN0ZXJFcnJvcjo6RE5TU0QgfSwgMCk7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgZXJyb3IgPSBETlNTZXJ2aWNlU2V0RGlzcGF0Y2hR
dWV1ZShzZXJ2aWNlLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpKTsKICAgICAgICAgaWYgKGVy
cm9yKSB7CiAgICAgICAgICAgICBNRE5TX1JFTEVBU0VfTE9HKCJyZWdpc3Rlck1ETlNOYW1lIERO
U1NlcnZpY2VDcmVhdGVDb25uZWN0aW9uIGVycm9yICVkIiwgZXJyb3IpOwotICAgICAgICAgICAg
bV9jb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpXZWJNRE5TUmVnaXN0ZXI6
OkZpbmlzaGVkUmVnaXN0ZXJpbmdNRE5TTmFtZSB7IHJlcXVlc3RJZGVudGlmaWVyLCBtYWtlVW5l
eHBlY3RlZChXZWJDb3JlOjpNRE5TUmVnaXN0ZXJFcnJvcjo6RE5TU0QpIH0sIDApOworICAgICAg
ICAgICAgbV9jb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpXZWJNRE5TUmVn
aXN0ZXI6OkZpbmlzaGVkUmVnaXN0ZXJpbmdNRE5TTmFtZSB7IHJlcXVlc3RJZGVudGlmaWVyLCBu
YW1lLCBXZWJDb3JlOjpNRE5TUmVnaXN0ZXJFcnJvcjo6RE5TU0QgfSwgMCk7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgQVNTRVJUKHNlcnZpY2UpOwpAQCAtMTI2LDEz
ICsxMjgsMTIgQEAgdm9pZCBOZXR3b3JrTUROU1JlZ2lzdGVyOjpyZWdpc3Rlck1ETlNOYW1lKE1E
TlNSZWdpc3RlcklkZW50aWZpZXIgcmVxdWVzdElkZW50aWYKICAgICB9IGVsc2UKICAgICAgICAg
c2VydmljZSA9IGl0ZXJhdG9yLT52YWx1ZTsKIAotICAgIGF1dG8gbmFtZSA9IG1ha2VTdHJpbmco
Y3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpLCAiLmxvY2FsIik7Ci0KICAgICBhdXRvIGlwID0g
aW5ldF9hZGRyKGlwQWRkcmVzcy51dGY4KCkuZGF0YSgpKTsKIAorICAgIC8vIEZJWE1FOiBBZGQg
SVB2NiBzdXBwb3J0LgogICAgIGlmIChpcCA9PSAoIGluX2FkZHJfdCkoLTEpKSB7CiAgICAgICAg
IE1ETlNfUkVMRUFTRV9MT0coInJlZ2lzdGVyTUROU05hbWUgaW5ldF9hZGRyIGVycm9yIik7Ci0g
ICAgICAgIG1fY29ubmVjdGlvbi5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6V2ViTUROU1Jl
Z2lzdGVyOjpGaW5pc2hlZFJlZ2lzdGVyaW5nTUROU05hbWUgeyByZXF1ZXN0SWRlbnRpZmllciwg
bWFrZVVuZXhwZWN0ZWQoV2ViQ29yZTo6TUROU1JlZ2lzdGVyRXJyb3I6OkJhZFBhcmFtZXRlcikg
fSwgMCk7CisgICAgICAgIG1fY29ubmVjdGlvbi5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6
V2ViTUROU1JlZ2lzdGVyOjpGaW5pc2hlZFJlZ2lzdGVyaW5nTUROU05hbWUgeyByZXF1ZXN0SWRl
bnRpZmllciwgbmFtZSwgV2ViQ29yZTo6TUROU1JlZ2lzdGVyRXJyb3I6OkJhZFBhcmFtZXRlciB9
LCAwKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTU2LDcgKzE1Nyw3IEBAIHZvaWQg
TmV0d29ya01ETlNSZWdpc3Rlcjo6cmVnaXN0ZXJNRE5TTmFtZShNRE5TUmVnaXN0ZXJJZGVudGlm
aWVyIHJlcXVlc3RJZGVudGlmCiAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHBlbmRp
bmdSZWdpc3RyYXRpb25SZXF1ZXN0Q291bnQpKTsKICAgICBpZiAoZXJyb3IpIHsKICAgICAgICAg
TUROU19SRUxFQVNFX0xPRygicmVnaXN0ZXJNRE5TTmFtZSBETlNTZXJ2aWNlUmVnaXN0ZXJSZWNv
cmQgZXJyb3IgJWQiLCBlcnJvcik7Ci0gICAgICAgIG1fY29ubmVjdGlvbi5jb25uZWN0aW9uKCku
c2VuZChNZXNzYWdlczo6V2ViTUROU1JlZ2lzdGVyOjpGaW5pc2hlZFJlZ2lzdGVyaW5nTUROU05h
bWUgeyByZXF1ZXN0SWRlbnRpZmllciwgbWFrZVVuZXhwZWN0ZWQoV2ViQ29yZTo6TUROU1JlZ2lz
dGVyRXJyb3I6OkROU1NEKSB9LCAwKTsKKyAgICAgICAgbV9jb25uZWN0aW9uLmNvbm5lY3Rpb24o
KS5zZW5kKE1lc3NhZ2VzOjpXZWJNRE5TUmVnaXN0ZXI6OkZpbmlzaGVkUmVnaXN0ZXJpbmdNRE5T
TmFtZSB7IHJlcXVlc3RJZGVudGlmaWVyLCBwZW5kaW5nUmVxdWVzdC0+bmFtZSwgV2ViQ29yZTo6
TUROU1JlZ2lzdGVyRXJyb3I6OkROU1NEIH0sIDApOwogICAgICAgICByZXR1cm47CiAgICAgfQog
ICAgIHBlbmRpbmdSZWdpc3RyYXRpb25SZXF1ZXN0cygpLmFkZChwZW5kaW5nUmVnaXN0cmF0aW9u
UmVxdWVzdENvdW50KyssIFdURk1vdmUocGVuZGluZ1JlcXVlc3QpKTsKQEAgLTE3MSw3ICsxNzIs
OSBAQCB2b2lkIE5ldHdvcmtNRE5TUmVnaXN0ZXI6OnVucmVnaXN0ZXJNRE5TTmFtZXMoV2ViQ29y
ZTo6RG9jdW1lbnRJZGVudGlmaWVyKQogdm9pZCBOZXR3b3JrTUROU1JlZ2lzdGVyOjpyZWdpc3Rl
ck1ETlNOYW1lKE1ETlNSZWdpc3RlcklkZW50aWZpZXIgcmVxdWVzdElkZW50aWZpZXIsIFdlYkNv
cmU6OkRvY3VtZW50SWRlbnRpZmllciBkb2N1bWVudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
aXBBZGRyZXNzKQogewogICAgIE1ETlNfUkVMRUFTRV9MT0coInJlZ2lzdGVyTUROU05hbWUgbm90
IGltcGxlbWVudGVkIik7Ci0gICAgbV9jb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3Nh
Z2VzOjpXZWJNRE5TUmVnaXN0ZXI6OkZpbmlzaGVkUmVnaXN0ZXJpbmdNRE5TTmFtZSB7IHJlcXVl
c3RJZGVudGlmaWVyLCBtYWtlVW5leHBlY3RlZChXZWJDb3JlOjpNRE5TUmVnaXN0ZXJFcnJvcjo6
Tm90SW1wbGVtZW50ZWQpIH0sIDApOworICAgIGF1dG8gbmFtZSA9IG1ha2VTdHJpbmcoY3JlYXRl
Q2Fub25pY2FsVVVJRFN0cmluZygpLCAiLmxvY2FsIik7CisKKyAgICBtX2Nvbm5lY3Rpb24uY29u
bmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OldlYk1ETlNSZWdpc3Rlcjo6RmluaXNoZWRSZWdpc3Rl
cmluZ01ETlNOYW1lIHsgcmVxdWVzdElkZW50aWZpZXIsIG5hbWUsIFdlYkNvcmU6Ok1ETlNSZWdp
c3RlckVycm9yOjpOb3RJbXBsZW1lbnRlZCB9LCAwKTsKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApp
bmRleCA3ZGJhY2QxOGMwYzIxOGYyOGQ4Y2Q0NDA1MDI3OGU0ODk4ZGYxYzVjLi40ZTVlNTE0ZDY1
NjM4NjI2NWI5YjM3OTU3ODQ4MjRlZTJlOWY1NjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTYzOSw2ICs2
MzksNyBAQCBXZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0UHJvdmlkZXIuY3BwCiBXZWJQcm9j
ZXNzL05ldHdvcmsvV2ViU29ja2V0U3RyZWFtLmNwcAogCiBXZWJQcm9jZXNzL05ldHdvcmsvd2Vi
cnRjL0xpYldlYlJUQ05ldHdvcmsuY3BwCitXZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldl
YlJUQ05ldHdvcmtNYW5hZ2VyLmNwcAogV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJS
VENQcm92aWRlci5jcHAKIFdlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDUmVzb2x2
ZXIuY3BwCiBXZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1NvY2tldC5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDll
NDE2ZWYzNzQ0NGU0MmViZTY4YzBlMTAwMjRiY2VjZmZiMjdmODguLjI3MTRmZmFlZmIzODA1ODVk
NzVmNzY1MGM0MGMwN2NlM2I1ZGRmY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzg1NCw2ICszODU0LDggQEAKIAkJNDFCN0VENkYy
MDY5NjU5MDAwODdEODUzIC8qIE5ldHdvcmtNRE5TUmVnaXN0ZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmV0d29ya01ETlNSZWdpc3Rlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQjdFRDcwMjA2OTY1OTAwMDg3RDg1MyAvKiBOZXR3b3Jr
TUROU1JlZ2lzdGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtN
RE5TUmVnaXN0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFCN0VENzEyMDY5
NjU5MDAwODdEODUzIC8qIE5ldHdvcmtNRE5TUmVnaXN0ZXIubWVzc2FnZXMuaW4gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0OyBwYXRoID0gTmV0d29ya01ETlNSZWdpc3Rlci5tZXNzYWdlcy5pbjsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFDMTRCQzIyNkRFNkEyRjAwNjg1QkY1IC8qIExpYldlYlJU
Q05ldHdvcmtNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExpYldlYlJUQ05ldHdvcmtN
YW5hZ2VyLmNwcDsgcGF0aCA9IE5ldHdvcmsvd2VicnRjL0xpYldlYlJUQ05ldHdvcmtNYW5hZ2Vy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFDMTRCQzMyNkRFNkEyRjAwNjg1
QkY1IC8qIExpYldlYlJUQ05ldHdvcmtNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExpYldlYlJU
Q05ldHdvcmtNYW5hZ2VyLmg7IHBhdGggPSBOZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENOZXR3b3Jr
TWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUMzQjg4NTI2NDQ0QUFC
MDA0RUQ0REUgLyogQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5h
Z2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJu
YWxVbml0TWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUMzQjg4NjI2
NDQ0QUFDMDA0RUQ0REUgLyogQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVu
aXRNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVySW50ZXJuYWxVbml0TWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQxQzNCODg3MjY0NDRBRDMwMDRFRDRERSAvKiBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5k
ZXJlckludGVybmFsVW5pdElkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXVkaW9NZWRpYVN0
cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC04NTE4LDYgKzg1MjAsOCBAQAogCQkJCTQxNkY4MDg5MjQ1QzdGRjUw
MEI2OEYwMiAvKiBMaWJXZWJSVENOZXR3b3JrLmNwcCAqLywKIAkJCQk0MTFCMjI2MjFFMzcxMjQ0
MDA0RjczNjMgLyogTGliV2ViUlRDTmV0d29yay5oICovLAogCQkJCTQxNkY4MDg2MjQ1QjM5NzQw
MEI2OEYwMiAvKiBMaWJXZWJSVENOZXR3b3JrLm1lc3NhZ2VzLmluICovLAorCQkJCTQxQzE0QkMy
MjZERTZBMkYwMDY4NUJGNSAvKiBMaWJXZWJSVENOZXR3b3JrTWFuYWdlci5jcHAgKi8sCisJCQkJ
NDFDMTRCQzMyNkRFNkEyRjAwNjg1QkY1IC8qIExpYldlYlJUQ05ldHdvcmtNYW5hZ2VyLmggKi8s
CiAJCQkJNDEzMDc1QTcxREU4NUVFNzAwMzlFQzY5IC8qIExpYldlYlJUQ1Byb3ZpZGVyLmNwcCAq
LywKIAkJCQk0MTMwNzVBODFERTg1RUU3MDAzOUVDNjkgLyogTGliV2ViUlRDUHJvdmlkZXIuaCAq
LywKIAkJCQk0MUZBRjVGNzFFM0MwQjQ3MDAxQUU2NzggLyogTGliV2ViUlRDUmVzb2x2ZXIuY3Bw
ICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRj
L0xpYldlYlJUQ05ldHdvcmtNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENOZXR3b3JrTWFuYWdlci5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDFi
NDE5OWMyNjUxNzRiZDE0MmY1MWU3MDkxZTJiMDIwYzY5Mzg2OAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENOZXR3b3Jr
TWFuYWdlci5jcHAKQEAgLTAsMCArMSwxNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiTGliV2ViUlRDTmV0d29ya01hbmFnZXIuaCIKKworI2lmIFVTRShM
SUJXRUJSVEMpCisKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9E
b2N1bWVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTGliV2ViUlRDVXRpbHMuaD4KKworbmFtZXNw
YWNlIFdlYktpdCB7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworTGliV2ViUlRDTmV0d29y
a01hbmFnZXIqIExpYldlYlJUQ05ldHdvcmtNYW5hZ2VyOjpnZXRPckNyZWF0ZShXZWJDb3JlOjpE
b2N1bWVudElkZW50aWZpZXIgaWRlbnRpZmllcikKK3sKKyAgICBhdXRvKiBkb2N1bWVudCA9IERv
Y3VtZW50OjphbGxEb2N1bWVudHNNYXAoKS5nZXQoaWRlbnRpZmllcik7CisgICAgaWYgKCFkb2N1
bWVudCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvKiBuZXR3b3JrTWFuYWdl
ciA9IHN0YXRpY19jYXN0PExpYldlYlJUQ05ldHdvcmtNYW5hZ2VyKj4oZG9jdW1lbnQtPnJ0Y05l
dHdvcmtNYW5hZ2VyKCkpOworICAgIGlmICghbmV0d29ya01hbmFnZXIpIHsKKyAgICAgICAgYXV0
byBuZXdOZXR3b3JrTWFuYWdlciA9IGFkb3B0UmVmKCpuZXcgTGliV2ViUlRDTmV0d29ya01hbmFn
ZXIoaWRlbnRpZmllcikpOworICAgICAgICBuZXR3b3JrTWFuYWdlciA9IG5ld05ldHdvcmtNYW5h
Z2VyLnB0cigpOworICAgICAgICBkb2N1bWVudC0+c2V0UlRDTmV0d29ya01hbmFnZXIoV1RGTW92
ZShuZXdOZXR3b3JrTWFuYWdlcikpOworICAgIH0KKworICAgIHJldHVybiBuZXR3b3JrTWFuYWdl
cjsKK30KKworTGliV2ViUlRDTmV0d29ya01hbmFnZXI6OkxpYldlYlJUQ05ldHdvcmtNYW5hZ2Vy
KFdlYkNvcmU6OkRvY3VtZW50SWRlbnRpZmllciBkb2N1bWVudElkZW50aWZpZXIpCisgICAgOiBt
X2RvY3VtZW50SWRlbnRpZmllcihkb2N1bWVudElkZW50aWZpZXIpCit7CisgICAgV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkubGliV2ViUlRDTmV0d29yaygpLm1vbml0b3IoKS5hZGRPYnNlcnZlcigq
dGhpcyk7Cit9CisKK0xpYldlYlJUQ05ldHdvcmtNYW5hZ2VyOjp+TGliV2ViUlRDTmV0d29ya01h
bmFnZXIoKQoreworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmxpYldlYlJUQ05ldHdvcmso
KS5tb25pdG9yKCkucmVtb3ZlT2JzZXJ2ZXIoKnRoaXMpOworfQorCit2b2lkIExpYldlYlJUQ05l
dHdvcmtNYW5hZ2VyOjp1bnJlZ2lzdGVyTUROU05hbWVzKCkKK3sKKyAgICBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5saWJXZWJSVENOZXR3b3JrKCkubWRuc1JlZ2lzdGVyKCkudW5yZWdpc3Rlck1E
TlNOYW1lcyhtX2RvY3VtZW50SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgTGliV2ViUlRDTmV0d29y
a01hbmFnZXI6OlN0YXJ0VXBkYXRpbmcoKQoreworICAgIGNhbGxPbk1haW5SdW5Mb29wKFt0aGlz
LCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXSB7CisgICAgICAgIGlmICghd2Vha1RoaXMp
CisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgYXV0byYgbW9uaXRvciA9IFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLmxpYldlYlJUQ05ldHdvcmsoKS5tb25pdG9yKCk7CisgICAgICAgIGlm
IChtX3JlY2VpdmVkTmV0d29ya0xpc3QpIHsKKyAgICAgICAgICAgIFdlYkNvcmU6OkxpYldlYlJU
Q1Byb3ZpZGVyOjpjYWxsT25XZWJSVENOZXR3b3JrVGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyldIHsKKyAgICAgICAgICAgICAgICBTaWduYWxOZXR3b3Jrc0NoYW5n
ZWQoKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9IGVsc2UgaWYgKG1vbml0b3IuZGlkUmVj
ZWl2ZU5ldHdvcmtMaXN0KCkpCisgICAgICAgICAgICBuZXR3b3Jrc0NoYW5nZWQobW9uaXRvci5u
ZXR3b3JrTGlzdCgpICwgbW9uaXRvci5pcHY0KCksIG1vbml0b3IuaXB2NigpKTsKKyAgICAgICAg
bW9uaXRvci5zdGFydFVwZGF0aW5nKCk7CisgICAgfSk7Cit9CisKK3ZvaWQgTGliV2ViUlRDTmV0
d29ya01hbmFnZXI6OlN0b3BVcGRhdGluZygpCit7CisgICAgY2FsbE9uTWFpblJ1bkxvb3AoW3dl
YWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkubGliV2Vi
UlRDTmV0d29yaygpLm1vbml0b3IoKS5zdG9wVXBkYXRpbmcoKTsKKyAgICB9KTsKK30KKword2Vi
cnRjOjpNZG5zUmVzcG9uZGVySW50ZXJmYWNlKiBMaWJXZWJSVENOZXR3b3JrTWFuYWdlcjo6R2V0
TWRuc1Jlc3BvbmRlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fdXNlTUROU0NhbmRpZGF0ZXMg
PyBjb25zdF9jYXN0PExpYldlYlJUQ05ldHdvcmtNYW5hZ2VyKj4odGhpcykgOiBudWxscHRyOwor
fQorCit2b2lkIExpYldlYlJUQ05ldHdvcmtNYW5hZ2VyOjpuZXR3b3Jrc0NoYW5nZWQoY29uc3Qg
VmVjdG9yPFJUQ05ldHdvcms+JiBuZXR3b3JrcywgY29uc3QgUlRDTmV0d29yazo6SVBBZGRyZXNz
JiBpcHY0LCBjb25zdCBSVENOZXR3b3JrOjpJUEFkZHJlc3MmIGlwdjYpCit7CisgICAgYm9vbCBm
b3JjZVNpZ25hbGluZyA9ICFtX3JlY2VpdmVkTmV0d29ya0xpc3Q7CisgICAgbV9yZWNlaXZlZE5l
dHdvcmtMaXN0ID0gdHJ1ZTsKKworICAgIFdlYkNvcmU6OkxpYldlYlJUQ1Byb3ZpZGVyOjpjYWxs
T25XZWJSVENOZXR3b3JrVGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyksIG5ldHdvcmtzLCBpcHY0LCBpcHY2LCBmb3JjZVNpZ25hbGluZ10geworICAgICAgICBzdGQ6
OnZlY3RvcjxydGM6Ok5ldHdvcmsqPiBuZXR3b3JrTGlzdChuZXR3b3Jrcy5zaXplKCkpOworICAg
ICAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgbmV0d29ya3Muc2l6ZSgpOyArK2lu
ZGV4KQorICAgICAgICAgICAgbmV0d29ya0xpc3RbaW5kZXhdID0gbmV3IHJ0Yzo6TmV0d29yayhu
ZXR3b3Jrc1tpbmRleF0udmFsdWUoKSk7CisKKyAgICAgICAgYm9vbCBoYXNDaGFuZ2VkOworICAg
ICAgICBzZXRfZGVmYXVsdF9sb2NhbF9hZGRyZXNzZXMoaXB2NC52YWx1ZSwgaXB2Ni52YWx1ZSk7
CisgICAgICAgIE1lcmdlTmV0d29ya0xpc3QobmV0d29ya0xpc3QsICZoYXNDaGFuZ2VkKTsKKyAg
ICAgICAgaWYgKGhhc0NoYW5nZWQgfHwgZm9yY2VTaWduYWxpbmcpCisgICAgICAgICAgICBTaWdu
YWxOZXR3b3Jrc0NoYW5nZWQoKTsKKyAgICB9KTsKKworfQorCit2b2lkIExpYldlYlJUQ05ldHdv
cmtNYW5hZ2VyOjpuZXR3b3JrUHJvY2Vzc0NyYXNoZWQoKQoreworICAgIG1fcmVjZWl2ZWROZXR3
b3JrTGlzdCA9IGZhbHNlOworICAgIGlmICghV2ViQ29yZTo6TGliV2ViUlRDUHJvdmlkZXI6Omhh
c1dlYlJUQ1RocmVhZHMoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gSW4gY2FzZSB3ZSBo
YXZlIGNsaWVudHMgd2FpdGluZyBmb3IgbmV0d29ya3NDaGFuZ2VkLCB3ZSBjYWxsIFNpZ25hbE5l
dHdvcmtzQ2hhbmdlZCB0byBtYWtlIHN1cmUgdGhleSBkbyBub3Qgd2FpdCBmb3Igbm90aGluZy4K
KyAgICBXZWJDb3JlOjpMaWJXZWJSVENQcm92aWRlcjo6Y2FsbE9uV2ViUlRDTmV0d29ya1RocmVh
ZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7CisgICAgICAgIFNpZ25h
bE5ldHdvcmtzQ2hhbmdlZCgpOworICAgIH0pOworfQorCit2b2lkIExpYldlYlJUQ05ldHdvcmtN
YW5hZ2VyOjpDcmVhdGVOYW1lRm9yQWRkcmVzcyhjb25zdCBydGM6OklQQWRkcmVzcyYgYWRkcmVz
cywgTmFtZUNyZWF0ZWRDYWxsYmFjayBjYWxsYmFjaykKK3sKKyAgICBjYWxsT25NYWluUnVuTG9v
cChbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgYWRkcmVzcywgY2FsbGJhY2sg
PSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykK
KyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5s
aWJXZWJSVENOZXR3b3JrKCkubWRuc1JlZ2lzdGVyKCkucmVnaXN0ZXJNRE5TTmFtZShtX2RvY3Vt
ZW50SWRlbnRpZmllciwgZnJvbVN0ZFN0cmluZyhhZGRyZXNzLlRvU3RyaW5nKCkpLCBbYWRkcmVz
cywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYXV0byBuYW1lLCBhdXRvIGVycm9yKSBt
dXRhYmxlIHsKKyAgICAgICAgICAgIFdlYkNvcmU6OkxpYldlYlJUQ1Byb3ZpZGVyOjpjYWxsT25X
ZWJSVENOZXR3b3JrVGhyZWFkKFthZGRyZXNzLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2sp
LCBuYW1lID0gV1RGTW92ZShuYW1lKS5pc29sYXRlZENvcHkoKSwgZXJyb3JdIHsKKyAgICAgICAg
ICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRihlcnJvciwgV2ViUlRDLCAiTUROUyByZWdpc3Ry
YXRpb24gb2YgYSBob3N0IGNhbmRpZGF0ZSBmYWlsZWQgd2l0aCBlcnJvciAlZCIsICplcnJvcik7
CisgICAgICAgICAgICAgICAgLy8gSW4gY2FzZSBvZiBlcnJvciwgd2UgcHJvdmlkZSB0aGUgbmFt
ZSB0byBsZXQgZ2F0aGVyaW5nIGNvbXBsZXRlLgorICAgICAgICAgICAgICAgIGNhbGxiYWNrKGFk
ZHJlc3MsIG5hbWUudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7
CisgICAgfSk7Cit9CisKK3ZvaWQgTGliV2ViUlRDTmV0d29ya01hbmFnZXI6OlJlbW92ZU5hbWVG
b3JBZGRyZXNzKGNvbnN0IHJ0Yzo6SVBBZGRyZXNzJiwgTmFtZVJlbW92ZWRDYWxsYmFjaykKK3sK
KyAgICAvLyBMaWJXZWJSVEMgYmFja2VuZCBkZWZpbmVzIHRoaXMgbWV0aG9kIGJ1dCBkb2VzIG5v
dCBjYWxsIGl0LgorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKKworI2VuZGlmIC8vIFVTRShMSUJXRUJSVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDTmV0d29ya01hbmFnZXIu
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENOZXR3
b3JrTWFuYWdlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdhMjBlNGVjZjg2MjRhZDdmNjI2OTVlMzViYThhNTdi
ODdjMmYwNjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay93ZWJydGMvTGliV2ViUlRDTmV0d29ya01hbmFnZXIuaApAQCAtMCwwICsxLDY5IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBVU0UoTElCV0VCUlRDKQorCisjaW5jbHVk
ZSAiV2ViUlRDTW9uaXRvci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvTGliV2ViUlRDUHJvdmlkZXIu
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL1JUQ05ldHdvcmtNYW5hZ2VyLmg+CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitjbGFzcyBMaWJXZWJSVENOZXR3b3JrTWFuYWdlciBmaW5hbCA6IHB1YmxpYyBX
ZWJDb3JlOjpSVENOZXR3b3JrTWFuYWdlciwgcHVibGljIHJ0Yzo6TmV0d29ya01hbmFnZXJCYXNl
LCBwdWJsaWMgd2VicnRjOjpNZG5zUmVzcG9uZGVySW50ZXJmYWNlLCBwdWJsaWMgV2ViUlRDTW9u
aXRvcjo6T2JzZXJ2ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgor
ICAgIHN0YXRpYyBMaWJXZWJSVENOZXR3b3JrTWFuYWdlciogZ2V0T3JDcmVhdGUoV2ViQ29yZTo6
RG9jdW1lbnRJZGVudGlmaWVyKTsKKyAgICB+TGliV2ViUlRDTmV0d29ya01hbmFnZXIoKTsKKwor
cHJpdmF0ZToKKyAgICBleHBsaWNpdCBMaWJXZWJSVENOZXR3b3JrTWFuYWdlcihXZWJDb3JlOjpE
b2N1bWVudElkZW50aWZpZXIpOworCisgICAgLy8gV2ViQ29yZTo6UlRDTmV0d29ya01hbmFnZXIK
KyAgICB2b2lkIHNldElDRUNhbmRpZGF0ZUZpbHRlcmluZyhib29sIGRvRmlsdGVyaW5nKSBmaW5h
bCB7IG1fdXNlTUROU0NhbmRpZGF0ZXMgPSBkb0ZpbHRlcmluZzsgfQorICAgIHZvaWQgdW5yZWdp
c3Rlck1ETlNOYW1lcygpIGZpbmFsOworCisgICAgLy8gd2VicnRjOjpOZXR3b3JrTWFuYWdlckJh
c2UKKyAgICB2b2lkIFN0YXJ0VXBkYXRpbmcoKSBmaW5hbDsKKyAgICB2b2lkIFN0b3BVcGRhdGlu
ZygpIGZpbmFsOworICAgIHdlYnJ0Yzo6TWRuc1Jlc3BvbmRlckludGVyZmFjZSogR2V0TWRuc1Jl
c3BvbmRlcigpIGNvbnN0IGZpbmFsOworCisgICAgLy8gd2VicnRjOjpNZG5zUmVzcG9uZGVySW50
ZXJmYWNlCisgICAgdm9pZCBDcmVhdGVOYW1lRm9yQWRkcmVzcyhjb25zdCBydGM6OklQQWRkcmVz
cyYsIE5hbWVDcmVhdGVkQ2FsbGJhY2spOworICAgIHZvaWQgUmVtb3ZlTmFtZUZvckFkZHJlc3Mo
Y29uc3QgcnRjOjpJUEFkZHJlc3MmLCBOYW1lUmVtb3ZlZENhbGxiYWNrKTsKKworICAgIC8vIFdl
YlJUQ01vbml0b3I6Ok9ic2VydmVyCisgICAgdm9pZCBuZXR3b3Jrc0NoYW5nZWQoY29uc3QgVmVj
dG9yPFJUQ05ldHdvcms+JiwgY29uc3QgUlRDTmV0d29yazo6SVBBZGRyZXNzJiwgY29uc3QgUlRD
TmV0d29yazo6SVBBZGRyZXNzJikgZmluYWw7CisgICAgdm9pZCBuZXR3b3JrUHJvY2Vzc0NyYXNo
ZWQoKSBmaW5hbDsKKworICAgIERvY3VtZW50SWRlbnRpZmllciBtX2RvY3VtZW50SWRlbnRpZmll
cjsKKyAgICBib29sIG1fdXNlTUROU0NhbmRpZGF0ZXMgeyB0cnVlIH07CisgICAgYm9vbCBtX3Jl
Y2VpdmVkTmV0d29ya0xpc3QgeyBmYWxzZSB9OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
d2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHAKaW5kZXggOTY4YzlmMzA0YjY1NDgw
OWY5OTI2MjU2YzEwMDU1MDdjOTcxMmY1NS4uZjljNGE5MGQ4MjFkYWY3YThhYjM5YWZkZDMxNjQy
MDU4NTE2M2I3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
d2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuY3BwCkBAIC0zMyw2ICszMyw3IEBA
CiAjZW5kaWYKIAogI2luY2x1ZGUgIkxpYldlYlJUQ05ldHdvcmsuaCIKKyNpbmNsdWRlICJMaWJX
ZWJSVENOZXR3b3JrTWFuYWdlci5oIgogI2luY2x1ZGUgIlJUQ0RhdGFDaGFubmVsUmVtb3RlTWFu
YWdlci5oIgogI2luY2x1ZGUgIldlYlBhZ2UuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCkBA
IC01NCw3ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgfQogfTsKIAotcnRjOjpzY29wZWRfcmVmcHRy
PHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U+IExpYldlYlJUQ1Byb3ZpZGVyOjpjcmVh
dGVQZWVyQ29ubmVjdGlvbih3ZWJydGM6OlBlZXJDb25uZWN0aW9uT2JzZXJ2ZXImIG9ic2VydmVy
LCBydGM6OlBhY2tldFNvY2tldEZhY3RvcnkqIHNvY2tldEZhY3RvcnksIHdlYnJ0Yzo6UGVlckNv
bm5lY3Rpb25JbnRlcmZhY2U6OlJUQ0NvbmZpZ3VyYXRpb24mJiBjb25maWd1cmF0aW9uKQorcnRj
OjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U+IExpYldlYlJU
Q1Byb3ZpZGVyOjpjcmVhdGVQZWVyQ29ubmVjdGlvbihEb2N1bWVudElkZW50aWZpZXIgaWRlbnRp
Zmllciwgd2VicnRjOjpQZWVyQ29ubmVjdGlvbk9ic2VydmVyJiBvYnNlcnZlciwgcnRjOjpQYWNr
ZXRTb2NrZXRGYWN0b3J5KiBzb2NrZXRGYWN0b3J5LCB3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50
ZXJmYWNlOjpSVENDb25maWd1cmF0aW9uJiYgY29uZmlndXJhdGlvbikKIHsKICNpZiBFTkFCTEUo
R1BVX1BST0NFU1MpICYmIFBMQVRGT1JNKENPQ09BKSAmJiAhUExBVEZPUk0oTUFDQ0FUQUxZU1Qp
CiAgICAgaWYgKCFtX2RpZEluaXRpYWxpemVDYWxsYmFjaykgewpAQCAtNjcsMjIgKzY4LDE3IEBA
IHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlPiBMaWJX
ZWJSVENQcm92aWRlcjo6Y3JlYXRlUGVlCiAKICAgICBhdXRvJiBuZXR3b3JrTW9uaXRvciA9IFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLmxpYldlYlJUQ05ldHdvcmsoKS5tb25pdG9yKCk7CiAgICAg
bmV0d29ya01vbml0b3Iuc2V0RW51bWVyYXRpbmdBbGxOZXR3b3JrSW50ZXJmYWNlc0VuYWJsZWQo
aXNFbnVtZXJhdGluZ0FsbE5ldHdvcmtJbnRlcmZhY2VzRW5hYmxlZCgpKTsKLSAgICByZXR1cm4g
V2ViQ29yZTo6TGliV2ViUlRDUHJvdmlkZXI6OmNyZWF0ZVBlZXJDb25uZWN0aW9uKG9ic2VydmVy
LCBuZXR3b3JrTW9uaXRvciwgKnNvY2tldEZhY3RvcnksIFdURk1vdmUoY29uZmlndXJhdGlvbiks
IG1ha2VVbmlxdWU8QXN5bmNSZXNvbHZlckZhY3Rvcnk+KCkpOwotfQogCi12b2lkIExpYldlYlJU
Q1Byb3ZpZGVyOjpkaXNhYmxlTm9uTG9jYWxob3N0Q29ubmVjdGlvbnMoKQotewotICAgIFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLmxpYldlYlJUQ05ldHdvcmsoKS5kaXNhYmxlTm9uTG9jYWxob3N0
Q29ubmVjdGlvbnMoKTsKLX0KKyAgICBhdXRvKiBuZXR3b3JrTWFuYWdlciA9IExpYldlYlJUQ05l
dHdvcmtNYW5hZ2VyOjpnZXRPckNyZWF0ZShpZGVudGlmaWVyKTsKKyAgICBpZiAoIW5ldHdvcmtN
YW5hZ2VyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotdm9pZCBMaWJXZWJSVENQcm92aWRl
cjo6dW5yZWdpc3Rlck1ETlNOYW1lcyhEb2N1bWVudElkZW50aWZpZXIgZG9jdW1lbnRJZGVudGlm
aWVyKQotewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmxpYldlYlJUQ05ldHdvcmsoKS5t
ZG5zUmVnaXN0ZXIoKS51bnJlZ2lzdGVyTUROU05hbWVzKGRvY3VtZW50SWRlbnRpZmllcik7Cisg
ICAgcmV0dXJuIFdlYkNvcmU6OkxpYldlYlJUQ1Byb3ZpZGVyOjpjcmVhdGVQZWVyQ29ubmVjdGlv
bihvYnNlcnZlciwgKm5ldHdvcmtNYW5hZ2VyLCAqc29ja2V0RmFjdG9yeSwgV1RGTW92ZShjb25m
aWd1cmF0aW9uKSwgbWFrZVVuaXF1ZTxBc3luY1Jlc29sdmVyRmFjdG9yeT4oKSk7CiB9CiAKLXZv
aWQgTGliV2ViUlRDUHJvdmlkZXI6OnJlZ2lzdGVyTUROU05hbWUoRG9jdW1lbnRJZGVudGlmaWVy
IGRvY3VtZW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBpcEFkZHJlc3MsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoTUROU05hbWVPckVycm9yJiYpPiYmIGNhbGxiYWNrKQordm9pZCBMaWJXZWJS
VENQcm92aWRlcjo6ZGlzYWJsZU5vbkxvY2FsaG9zdENvbm5lY3Rpb25zKCkKIHsKLSAgICBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5saWJXZWJSVENOZXR3b3JrKCkubWRuc1JlZ2lzdGVyKCkucmVn
aXN0ZXJNRE5TTmFtZShkb2N1bWVudElkZW50aWZpZXIsIGlwQWRkcmVzcywgV1RGTW92ZShjYWxs
YmFjaykpOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmxpYldlYlJUQ05ldHdvcmsoKS5k
aXNhYmxlTm9uTG9jYWxob3N0Q29ubmVjdGlvbnMoKTsKIH0KIAogY2xhc3MgUlRDU29ja2V0RmFj
dG9yeSBmaW5hbCA6IHB1YmxpYyBMaWJXZWJSVENQcm92aWRlcjo6U3VzcGVuZGFibGVTb2NrZXRG
YWN0b3J5IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dl
YnJ0Yy9MaWJXZWJSVENQcm92aWRlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvd2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmgKaW5kZXggNzJhZDNhNDI5ZmVmYmZhMWQ0Y2Fl
ZjVjMmJmN2M5NTczMDFlMTIwMS4uODgzYWRmY2FjOTMwYzA2ZDk1OGQyMzk4ZjI3MGM3NWYxYzY0
NGU4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRj
L0xpYldlYlJUQ1Byb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvd2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmgKQEAgLTU0LDEwICs1NCw4IEBAIHB1YmxpYzoK
IHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPFN1c3BlbmRhYmxlU29ja2V0RmFjdG9yeT4g
Y3JlYXRlU29ja2V0RmFjdG9yeShTdHJpbmcmJiAvKiB1c2VyQWdlbnQgKi8sIGJvb2wgLyogaXNG
aXJzdFBhcnR5ICovLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmKSBmaW5hbDsKIAotICAg
IHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlPiBjcmVh
dGVQZWVyQ29ubmVjdGlvbih3ZWJydGM6OlBlZXJDb25uZWN0aW9uT2JzZXJ2ZXImLCBydGM6OlBh
Y2tldFNvY2tldEZhY3RvcnkqLCB3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpSVEND
b25maWd1cmF0aW9uJiYpIGZpbmFsOworICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlBl
ZXJDb25uZWN0aW9uSW50ZXJmYWNlPiBjcmVhdGVQZWVyQ29ubmVjdGlvbihXZWJDb3JlOjpEb2N1
bWVudElkZW50aWZpZXIsIHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25PYnNlcnZlciYsIHJ0Yzo6UGFj
a2V0U29ja2V0RmFjdG9yeSosIHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OlJUQ0Nv
bmZpZ3VyYXRpb24mJikgZmluYWw7CiAKLSAgICB2b2lkIHVucmVnaXN0ZXJNRE5TTmFtZXMoV2Vi
Q29yZTo6RG9jdW1lbnRJZGVudGlmaWVyKSBmaW5hbDsKLSAgICB2b2lkIHJlZ2lzdGVyTUROU05h
bWUoV2ViQ29yZTo6RG9jdW1lbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGlwQWRkcmVzcywg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChNRE5TTmFtZU9yRXJyb3ImJik+JiYpIGZpbmFsOwogICAg
IHZvaWQgZGlzYWJsZU5vbkxvY2FsaG9zdENvbm5lY3Rpb25zKCkgZmluYWw7CiAgICAgdm9pZCBz
dGFydGVkTmV0d29ya1RocmVhZCgpIGZpbmFsOwogICAgIFJlZlB0cjxXZWJDb3JlOjpSVENEYXRh
Q2hhbm5lbFJlbW90ZUhhbmRsZXJDb25uZWN0aW9uPiBjcmVhdGVSVENEYXRhQ2hhbm5lbFJlbW90
ZUhhbmRsZXJDb25uZWN0aW9uKCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay93ZWJydGMvV2ViTUROU1JlZ2lzdGVyLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJNRE5TUmVnaXN0ZXIuY3BwCmluZGV4IDUx
NTkwZjlhY2NlNjI0NDA2OGIxNDdjZTZhOWM3YzE4MjU3NTc3NjEuLjc2MDIwN2VhNTliY2EyNTQ1
MjJmNTZjNTlhNTI0NWU1OTVhOGRlMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJNRE5TUmVnaXN0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJNRE5TUmVnaXN0ZXIuY3BwCkBAIC0zNiwy
MiArMzYsMjIgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAKLXZvaWQgV2ViTUROU1JlZ2lzdGVyOjpmaW5pc2hlZFJlZ2lzdGVyaW5nTUROU05hbWUoTURO
U1JlZ2lzdGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBMaWJXZWJSVENQcm92aWRlcjo6TUROU05h
bWVPckVycm9yJiYgcmVzdWx0KQordm9pZCBXZWJNRE5TUmVnaXN0ZXI6OmZpbmlzaGVkUmVnaXN0
ZXJpbmdNRE5TTmFtZShNRE5TUmVnaXN0ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFN0cmluZyYm
IG5hbWUsIHN0ZDo6b3B0aW9uYWw8TUROU1JlZ2lzdGVyRXJyb3I+IGVycm9yKQogewogICAgIGF1
dG8gcGVuZGluZ1JlZ2lzdHJhdGlvbiA9IG1fcGVuZGluZ1JlZ2lzdHJhdGlvbnMudGFrZShpZGVu
dGlmaWVyKTsKICAgICBpZiAoIXBlbmRpbmdSZWdpc3RyYXRpb24uY2FsbGJhY2spCiAgICAgICAg
IHJldHVybjsKIAotICAgIGlmIChyZXN1bHQuaGFzX3ZhbHVlKCkpIHsKKyAgICBpZiAoIWVycm9y
KSB7CiAgICAgICAgIGF1dG8gaXRlcmF0b3IgPSBtX3JlZ2lzdGVyaW5nRG9jdW1lbnRzLmZpbmQo
cGVuZGluZ1JlZ2lzdHJhdGlvbi5kb2N1bWVudElkZW50aWZpZXIpOwogICAgICAgICBpZiAoaXRl
cmF0b3IgPT0gbV9yZWdpc3RlcmluZ0RvY3VtZW50cy5lbmQoKSkgewotICAgICAgICAgICAgcGVu
ZGluZ1JlZ2lzdHJhdGlvbi5jYWxsYmFjayhtYWtlVW5leHBlY3RlZChXZWJDb3JlOjpNRE5TUmVn
aXN0ZXJFcnJvcjo6RE5TU0QpKTsKKyAgICAgICAgICAgIHBlbmRpbmdSZWdpc3RyYXRpb24uY2Fs
bGJhY2sobmFtZSwgV2ViQ29yZTo6TUROU1JlZ2lzdGVyRXJyb3I6OkROU1NEKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBpdGVyYXRvci0+dmFsdWUuYWRkKHBlbmRp
bmdSZWdpc3RyYXRpb24uaXBBZGRyZXNzLCByZXN1bHQudmFsdWUoKSk7CisgICAgICAgIGl0ZXJh
dG9yLT52YWx1ZS5hZGQocGVuZGluZ1JlZ2lzdHJhdGlvbi5pcEFkZHJlc3MsIG5hbWUpOwogICAg
IH0KIAotICAgIHBlbmRpbmdSZWdpc3RyYXRpb24uY2FsbGJhY2soV1RGTW92ZShyZXN1bHQpKTsK
KyAgICBwZW5kaW5nUmVnaXN0cmF0aW9uLmNhbGxiYWNrKG5hbWUsIGVycm9yKTsKIH0KIAogdm9p
ZCBXZWJNRE5TUmVnaXN0ZXI6OnVucmVnaXN0ZXJNRE5TTmFtZXMoRG9jdW1lbnRJZGVudGlmaWVy
IGlkZW50aWZpZXIpCkBAIC02Myw3ICs2Myw3IEBAIHZvaWQgV2ViTUROU1JlZ2lzdGVyOjp1bnJl
Z2lzdGVyTUROU05hbWVzKERvY3VtZW50SWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIGNvbm5l
Y3Rpb24uc2VuZChNZXNzYWdlczo6TmV0d29ya01ETlNSZWdpc3Rlcjo6VW5yZWdpc3Rlck1ETlNO
YW1lcyB7IGlkZW50aWZpZXIgfSwgMCk7CiB9CiAKLXZvaWQgV2ViTUROU1JlZ2lzdGVyOjpyZWdp
c3Rlck1ETlNOYW1lKERvY3VtZW50SWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IGlwQWRkcmVzcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChMaWJXZWJSVENQcm92aWRlcjo6TURO
U05hbWVPckVycm9yJiYpPiYmIGNhbGxiYWNrKQordm9pZCBXZWJNRE5TUmVnaXN0ZXI6OnJlZ2lz
dGVyTUROU05hbWUoRG9jdW1lbnRJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
aXBBZGRyZXNzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYsIHN0ZDo6b3B0
aW9uYWw8TUROU1JlZ2lzdGVyRXJyb3I+KT4mJiBjYWxsYmFjaykKIHsKICAgICBhdXRvJiBtYXAg
PSBtX3JlZ2lzdGVyaW5nRG9jdW1lbnRzLmVuc3VyZShpZGVudGlmaWVyLCBbXSB7CiAgICAgICAg
IHJldHVybiBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiB7IH07CkBAIC03MSwxNiArNzEsMTcgQEAg
dm9pZCBXZWJNRE5TUmVnaXN0ZXI6OnJlZ2lzdGVyTUROU05hbWUoRG9jdW1lbnRJZGVudGlmaWVy
IGlkZW50aWZpZXIsIGNvbnN0IFN0cmkKIAogICAgIGF1dG8gaXRlcmF0b3IgPSBtYXAuZmluZChp
cEFkZHJlc3MpOwogICAgIGlmIChpdGVyYXRvciAhPSBtYXAuZW5kKCkpIHsKLSAgICAgICAgY2Fs
bGJhY2soaXRlcmF0b3ItPnZhbHVlKTsKKyAgICAgICAgY2FsbGJhY2soaXRlcmF0b3ItPnZhbHVl
LCB7IH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgYXV0byByZXF1ZXN0SWRlbnRp
ZmllciA9IE1ETlNSZWdpc3RlcklkZW50aWZpZXI6OmdlbmVyYXRlKCk7CiAgICAgbV9wZW5kaW5n
UmVnaXN0cmF0aW9ucy5hZGQocmVxdWVzdElkZW50aWZpZXIsIFBlbmRpbmdSZWdpc3RyYXRpb24g
eyBXVEZNb3ZlKGNhbGxiYWNrKSwgaWRlbnRpZmllciwgaXBBZGRyZXNzIH0pOwogCisgICAgLy8g
RklYTUU6IFVzZSBhc3luYyByZXBseS4KICAgICBhdXRvJiBjb25uZWN0aW9uID0gV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlv
bigpOwogICAgIGlmICghY29ubmVjdGlvbi5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrTUROU1JlZ2lz
dGVyOjpSZWdpc3Rlck1ETlNOYW1lIHsgcmVxdWVzdElkZW50aWZpZXIsIGlkZW50aWZpZXIsIGlw
QWRkcmVzcyB9LCAwKSkKLSAgICAgICAgZmluaXNoZWRSZWdpc3RlcmluZ01ETlNOYW1lKHJlcXVl
c3RJZGVudGlmaWVyLCBtYWtlVW5leHBlY3RlZChNRE5TUmVnaXN0ZXJFcnJvcjo6SW50ZXJuYWwp
KTsKKyAgICAgICAgZmluaXNoZWRSZWdpc3RlcmluZ01ETlNOYW1lKHJlcXVlc3RJZGVudGlmaWVy
LCB7IH0sIE1ETlNSZWdpc3RlckVycm9yOjpJbnRlcm5hbCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2Vi
cnRjL1dlYk1ETlNSZWdpc3Rlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
d2VicnRjL1dlYk1ETlNSZWdpc3Rlci5oCmluZGV4IDBjMGY2MTMzYWY0NjhjOWViYjhjNjdhMmFl
NGU4YzlhNzMzZWU2YWQuLjJjMGZmMGU0NjY1MTFmOTc4ZmI4MDkyNzIwYWYwNzNkYmY1MzhmYmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJN
RE5TUmVnaXN0ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJy
dGMvV2ViTUROU1JlZ2lzdGVyLmgKQEAgLTQ2LDE1ICs0NiwxNSBAQCBwdWJsaWM6CiAgICAgV2Vi
TUROU1JlZ2lzdGVyKCkgPSBkZWZhdWx0OwogCiAgICAgdm9pZCB1bnJlZ2lzdGVyTUROU05hbWVz
KFdlYkNvcmU6OkRvY3VtZW50SWRlbnRpZmllcik7Ci0gICAgdm9pZCByZWdpc3Rlck1ETlNOYW1l
KFdlYkNvcmU6OkRvY3VtZW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBpcEFkZHJlc3MsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6TGliV2ViUlRDUHJvdmlkZXI6Ok1ETlNOYW1l
T3JFcnJvciYmKT4mJik7CisgICAgdm9pZCByZWdpc3Rlck1ETlNOYW1lKFdlYkNvcmU6OkRvY3Vt
ZW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBpcEFkZHJlc3MsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgU3RyaW5nJiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpNRE5TUmVnaXN0ZXJF
cnJvcj4pPiYmKTsKIAogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiwgSVBDOjpEZWNvZGVyJik7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBmaW5pc2hlZFJlZ2lzdGVy
aW5nTUROU05hbWUoTUROU1JlZ2lzdGVySWRlbnRpZmllciwgV2ViQ29yZTo6TGliV2ViUlRDUHJv
dmlkZXI6Ok1ETlNOYW1lT3JFcnJvciYmKTsKKyAgICB2b2lkIGZpbmlzaGVkUmVnaXN0ZXJpbmdN
RE5TTmFtZShNRE5TUmVnaXN0ZXJJZGVudGlmaWVyLCBTdHJpbmcmJiwgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpNRE5TUmVnaXN0ZXJFcnJvcj4pOwogCiAgICAgc3RydWN0IFBlbmRpbmdSZWdpc3Ry
YXRpb24gewotICAgICAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OkxpYldlYlJU
Q1Byb3ZpZGVyOjpNRE5TTmFtZU9yRXJyb3ImJik+IGNhbGxiYWNrOworICAgICAgICBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6TURO
U1JlZ2lzdGVyRXJyb3I+KT4gY2FsbGJhY2s7CiAgICAgICAgIFdlYkNvcmU6OkRvY3VtZW50SWRl
bnRpZmllciBkb2N1bWVudElkZW50aWZpZXI7CiAgICAgICAgIFN0cmluZyBpcEFkZHJlc3M7CiAg
ICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0
Yy9XZWJNRE5TUmVnaXN0ZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay93ZWJydGMvV2ViTUROU1JlZ2lzdGVyLm1lc3NhZ2VzLmluCmluZGV4IGFiMTJhMWUw
MTkyNmQ2YWZjYjRjMjQ3OGVkNTNmNWMzNjJhODhiOWIuLmYxZWE1YzczMDZkMmEwYzZkZTlmMWI4
MTIwNzYzZTlmZDkzMWRhNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL3dlYnJ0Yy9XZWJNRE5TUmVnaXN0ZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1dlYk1ETlNSZWdpc3Rlci5tZXNzYWdlcy5p
bgpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDE4LTIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMyw3ICsy
Myw3IEBACiAjaWYgRU5BQkxFKFdFQl9SVEMpCiAKIG1lc3NhZ2VzIC0+IFdlYk1ETlNSZWdpc3Rl
ciBOb3RSZWZDb3VudGVkIHsKLSAgICB2b2lkIEZpbmlzaGVkUmVnaXN0ZXJpbmdNRE5TTmFtZShX
ZWJLaXQ6Ok1ETlNSZWdpc3RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViQ29yZTo6TGliV2Vi
UlRDUHJvdmlkZXI6Ok1ETlNOYW1lT3JFcnJvciByZXN1bHQpCisgICAgdm9pZCBGaW5pc2hlZFJl
Z2lzdGVyaW5nTUROU05hbWUoV2ViS2l0OjpNRE5TUmVnaXN0ZXJJZGVudGlmaWVyIGlkZW50aWZp
ZXIsIFN0cmluZyBtZG5zTmFtZSwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpNRE5TUmVnaXN0ZXJF
cnJvcj4gZXJyb3IpCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCX1JUQykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJSVENNb25pdG9yLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJSVENNb25pdG9y
LmNwcAppbmRleCAwZjlkYWQyZDFkMjlkMGIzMDc5ZDM4NzFiN2UxNDU0MTUyOTA0OTM2Li5kMGNi
OThiZTg4MGJiNjEzZmRhMjMxNTAyZTY3MDJjMDRhZjIwMjM3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvV2ViUlRDTW9uaXRvci5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1dlYlJUQ01vbml0b3IuY3Bw
CkBAIC0zMyw4ICszMyw2IEBACiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgi
CiAjaW5jbHVkZSAiTmV0d29ya1JUQ01vbml0b3JNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlBy
b2Nlc3MuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0xpYldlYlJUQ01hY3Jvcy5oPgotI2luY2x1ZGUg
PHdlYnJ0Yy9ydGNfYmFzZS9uZXRfaGVscGVycy5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFk
Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTMsNjcgKzUxLDQzIEBAIHZvaWQgV2ViUlRD
TW9uaXRvcjo6c2V0RW51bWVyYXRpbmdBbGxOZXR3b3JrSW50ZXJmYWNlc0VuYWJsZWQoYm9vbCBl
bmFibGVkKQogICAgIG1fZW5hYmxlRW51bWVyYXRpbmdBbGxOZXR3b3JrSW50ZXJmYWNlcyA9IGVu
YWJsZWQ7CiB9CiAKLXZvaWQgV2ViUlRDTW9uaXRvcjo6U3RhcnRVcGRhdGluZygpCit2b2lkIFdl
YlJUQ01vbml0b3I6OnN0YXJ0VXBkYXRpbmcoKQogewotICAgIFdFQlJUQ19SRUxFQVNFX0xPRygi
U3RhcnRVcGRhdGluZyIpOwotICAgIGlmIChtX3JlY2VpdmVkTmV0d29ya0xpc3QpIHsKLSAgICAg
ICAgV2ViQ29yZTo6TGliV2ViUlRDUHJvdmlkZXI6OmNhbGxPbldlYlJUQ05ldHdvcmtUaHJlYWQo
W3RoaXNdIHsKLSAgICAgICAgICAgIFNpZ25hbE5ldHdvcmtzQ2hhbmdlZCgpOwotICAgICAgICB9
KTsKLSAgICB9Ci0KLSAgICBzZW5kT25NYWluVGhyZWFkKFt0aGlzXShhdXRvJiBjb25uZWN0aW9u
KSB7Ci0gICAgICAgIFdFQlJUQ19SRUxFQVNFX0xPRygiU3RhcnRVcGRhdGluZyAtIEFza2luZyBu
ZXR3b3JrIHByb2Nlc3MgdG8gc3RhcnQgdXBkYXRpbmciKTsKLSAgICAgICAgY29ubmVjdGlvbi5z
ZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUlRDTW9uaXRvcjo6U3RhcnRVcGRhdGluZ0lmTmVlZGVkKG1f
ZW5hYmxlRW51bWVyYXRpbmdBbGxOZXR3b3JrSW50ZXJmYWNlcyksIDApOwotICAgIH0pOworICAg
IFdFQlJUQ19SRUxFQVNFX0xPRygiU3RhcnRVcGRhdGluZyAtIEFza2luZyBuZXR3b3JrIHByb2Nl
c3MgdG8gc3RhcnQgdXBkYXRpbmciKTsKKworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVu
c3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2Vz
OjpOZXR3b3JrUlRDTW9uaXRvcjo6U3RhcnRVcGRhdGluZ0lmTmVlZGVkKG1fZW5hYmxlRW51bWVy
YXRpbmdBbGxOZXR3b3JrSW50ZXJmYWNlcyksIDApOwogICAgICsrbV9jbGllbnRDb3VudDsKIH0K
IAotdm9pZCBXZWJSVENNb25pdG9yOjpTdG9wVXBkYXRpbmcoKQordm9pZCBXZWJSVENNb25pdG9y
OjpzdG9wVXBkYXRpbmcoKQogewogICAgIFdFQlJUQ19SRUxFQVNFX0xPRygiU3RvcFVwZGF0aW5n
Iik7CisKICAgICBBU1NFUlQobV9jbGllbnRDb3VudCk7CiAgICAgaWYgKC0tbV9jbGllbnRDb3Vu
dCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgc2VuZE9uTWFpblRocmVhZChbdGhpc10oYXV0byYg
Y29ubmVjdGlvbikgewotICAgICAgICBXRUJSVENfUkVMRUFTRV9MT0coIlN0b3BVcGRhdGluZyAt
IEFza2luZyBuZXR3b3JrIHByb2Nlc3MgdG8gc3RvcCB1cGRhdGluZyIpOwotICAgICAgICBjb25u
ZWN0aW9uLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtSVENNb25pdG9yOjpTdG9wVXBkYXRpbmcoKSwg
MCk7Ci0gICAgfSk7CisgICAgV0VCUlRDX1JFTEVBU0VfTE9HKCJTdG9wVXBkYXRpbmcgLSBBc2tp
bmcgbmV0d29yayBwcm9jZXNzIHRvIHN0b3AgdXBkYXRpbmciKTsKKyAgICBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCku
c2VuZChNZXNzYWdlczo6TmV0d29ya1JUQ01vbml0b3I6OlN0b3BVcGRhdGluZygpLCAwKTsKIH0K
IAotdm9pZCBXZWJSVENNb25pdG9yOjpuZXR3b3Jrc0NoYW5nZWQoY29uc3QgVmVjdG9yPFJUQ05l
dHdvcms+JiBuZXR3b3JrcywgY29uc3QgUlRDTmV0d29yazo6SVBBZGRyZXNzJiBpcHY0LCBjb25z
dCBSVENOZXR3b3JrOjpJUEFkZHJlc3MmIGlwdjYpCit2b2lkIFdlYlJUQ01vbml0b3I6Om5ldHdv
cmtzQ2hhbmdlZChWZWN0b3I8UlRDTmV0d29yaz4mJiBuZXR3b3JrTGlzdCwgUlRDTmV0d29yazo6
SVBBZGRyZXNzJiYgaXB2NCwgUlRDTmV0d29yazo6SVBBZGRyZXNzJiYgaXB2NikKIHsKICAgICBX
RUJSVENfUkVMRUFTRV9MT0coIm5ldHdvcmtzQ2hhbmdlZCIpOwotICAgIC8vIE5vIG5lZWQgdG8g
cHJvdGVjdCAndGhpcycgYXMgaXQgaGFzIHRoZSBsaWZldGltZSBvZiBMaWJXZWJSVEMgd2hpY2gg
aGFzIHRoZSBsaWZldGltZSBvZiB0aGUgd2ViIHByb2Nlc3MuCi0gICAgV2ViQ29yZTo6TGliV2Vi
UlRDUHJvdmlkZXI6OmNhbGxPbldlYlJUQ05ldHdvcmtUaHJlYWQoW3RoaXMsIG5ldHdvcmtzLCBp
cHY0LCBpcHY2XSB7Ci0gICAgICAgIFdFQlJUQ19SRUxFQVNFX0xPRygibmV0d29ya3NDaGFuZ2Vk
IC0gU2lnbmFsaW5nIik7Ci0gICAgICAgIHN0ZDo6dmVjdG9yPHJ0Yzo6TmV0d29yayo+IG5ldHdv
cmtMaXN0KG5ldHdvcmtzLnNpemUoKSk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsg
aW5kZXggPCBuZXR3b3Jrcy5zaXplKCk7ICsraW5kZXgpCi0gICAgICAgICAgICBuZXR3b3JrTGlz
dFtpbmRleF0gPSBuZXcgcnRjOjpOZXR3b3JrKG5ldHdvcmtzW2luZGV4XS52YWx1ZSgpKTsKLQot
ICAgICAgICBib29sIGZvcmNlU2lnbmFsaW5nID0gIW1fcmVjZWl2ZWROZXR3b3JrTGlzdDsKLSAg
ICAgICAgbV9yZWNlaXZlZE5ldHdvcmtMaXN0ID0gdHJ1ZTsKLQotICAgICAgICBib29sIGhhc0No
YW5nZWQ7Ci0gICAgICAgIHNldF9kZWZhdWx0X2xvY2FsX2FkZHJlc3NlcyhpcHY0LnZhbHVlLCBp
cHY2LnZhbHVlKTsKLSAgICAgICAgTWVyZ2VOZXR3b3JrTGlzdChuZXR3b3JrTGlzdCwgJmhhc0No
YW5nZWQpOwotICAgICAgICBpZiAoaGFzQ2hhbmdlZCB8fCBmb3JjZVNpZ25hbGluZykKLSAgICAg
ICAgICAgIFNpZ25hbE5ldHdvcmtzQ2hhbmdlZCgpOwogCi0gICAgfSk7CisgICAgbV9kaWRSZWNl
aXZlTmV0d29ya0xpc3QgPSB0cnVlOworICAgIG1fbmV0d29ya0xpc3QgPSBXVEZNb3ZlKG5ldHdv
cmtMaXN0KTsKKyAgICBtX2lwdjQgPSBXVEZNb3ZlKGlwdjQpOworICAgIG1faXB2NiA9IFdURk1v
dmUoaXB2Nik7CisKKyAgICBmb3IgKGF1dG8mIG9ic2VydmVyIDogbV9vYnNlcnZlcnMpCisgICAg
ICAgIG9ic2VydmVyLm5ldHdvcmtzQ2hhbmdlZChtX25ldHdvcmtMaXN0LCBtX2lwdjQsIG1faXB2
Nik7CiB9CiAKIHZvaWQgV2ViUlRDTW9uaXRvcjo6bmV0d29ya1Byb2Nlc3NDcmFzaGVkKCkKIHsK
LSAgICBtX3JlY2VpdmVkTmV0d29ya0xpc3QgPSBmYWxzZTsKLSAgICBpZiAoIVdlYkNvcmU6Okxp
YldlYlJUQ1Byb3ZpZGVyOjpoYXNXZWJSVENUaHJlYWRzKCkpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIC8vIEluIGNhc2Ugd2UgaGF2ZSBjbGllbnRzIHdhaXRpbmcgZm9yIG5ldHdvcmtzQ2hhbmdl
ZCwgd2UgY2FsbCBTaWduYWxOZXR3b3Jrc0NoYW5nZWQgdG8gbWFrZSBzdXJlIHRoZXkgZG8gbm90
IHdhaXQgZm9yIG5vdGhpbmcuICAgIAotICAgIFdlYkNvcmU6OkxpYldlYlJUQ1Byb3ZpZGVyOjpj
YWxsT25XZWJSVENOZXR3b3JrVGhyZWFkKFt0aGlzXSB7Ci0gICAgICAgIFNpZ25hbE5ldHdvcmtz
Q2hhbmdlZCgpOwotICAgIH0pOworICAgIGZvciAoYXV0byYgb2JzZXJ2ZXIgOiBtX29ic2VydmVy
cykKKyAgICAgICAgb2JzZXJ2ZXIubmV0d29ya1Byb2Nlc3NDcmFzaGVkKCk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvd2VicnRjL1dlYlJUQ01vbml0b3IuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL3dlYnJ0Yy9XZWJSVENNb25pdG9yLmgKaW5kZXggZjZiOTczOWZhZGRjMzgyY2Q0MjJl
NWJhYThlYTI4NTZlNWY0ZmIwZi4uMDY4NTkwZTUzMjY0MWExZmRhMzU3YWFjMTJhZDIzMjRiMjA0
NDI0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRj
L1dlYlJUQ01vbml0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93
ZWJydGMvV2ViUlRDTW9uaXRvci5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiUlRDTmV0
d29yay5oIgogI2luY2x1ZGUgPFdlYkNvcmUvTGliV2ViUlRDUHJvdmlkZXIuaD4KICNpbmNsdWRl
IDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrSGFzaFNldC5oPgogCiBuYW1lc3Bh
Y2UgSVBDIHsKIGNsYXNzIENvbm5lY3Rpb247CkBAIC00MCwyNiArNDEsNDIgQEAgbmFtZXNwYWNl
IFdlYktpdCB7CiAKIHN0cnVjdCBOZXR3b3Jrc0NoYW5nZWREYXRhOwogCi1jbGFzcyBXZWJSVENN
b25pdG9yIGZpbmFsIDogcHVibGljIHJ0Yzo6TmV0d29ya01hbmFnZXJCYXNlIHsKK2NsYXNzIFdl
YlJUQ01vbml0b3IgewogcHVibGljOgogICAgIFdlYlJUQ01vbml0b3IoKSA9IGRlZmF1bHQ7CiAK
KyAgICBjbGFzcyBPYnNlcnZlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxPYnNlcnZlcj4gewor
ICAgIHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCB+T2JzZXJ2ZXIoKSA9IGRlZmF1bHQ7CisgICAg
ICAgIHZpcnR1YWwgdm9pZCBuZXR3b3Jrc0NoYW5nZWQoY29uc3QgVmVjdG9yPFJUQ05ldHdvcms+
JiwgY29uc3QgUlRDTmV0d29yazo6SVBBZGRyZXNzJiwgY29uc3QgUlRDTmV0d29yazo6SVBBZGRy
ZXNzJikgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgbmV0d29ya1Byb2Nlc3NDcmFzaGVkKCkg
PSAwOworICAgIH07CisgICAgdm9pZCBhZGRPYnNlcnZlcihPYnNlcnZlciYgb2JzZXJ2ZXIpIHsg
bV9vYnNlcnZlcnMuYWRkKG9ic2VydmVyKTsgfQorICAgIHZvaWQgcmVtb3ZlT2JzZXJ2ZXIoT2Jz
ZXJ2ZXImIG9ic2VydmVyKSB7IG1fb2JzZXJ2ZXJzLnJlbW92ZShvYnNlcnZlcik7IH0KKyAgICB2
b2lkIHN0YXJ0VXBkYXRpbmcoKTsKKyAgICB2b2lkIHN0b3BVcGRhdGluZygpOworCiAgICAgdm9p
ZCBuZXR3b3JrUHJvY2Vzc0NyYXNoZWQoKTsKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwogICAgIHZvaWQgc2V0RW51bWVyYXRpbmdB
bGxOZXR3b3JrSW50ZXJmYWNlc0VuYWJsZWQoYm9vbCk7CiAKLXByaXZhdGU6Ci0gICAgdm9pZCBu
ZXR3b3Jrc0NoYW5nZWQoY29uc3QgVmVjdG9yPFJUQ05ldHdvcms+JiBuZXR3b3JrTGlzdCwgY29u
c3QgUlRDTmV0d29yazo6SVBBZGRyZXNzJiwgY29uc3QgUlRDTmV0d29yazo6SVBBZGRyZXNzJik7
CisgICAgYm9vbCBkaWRSZWNlaXZlTmV0d29ya0xpc3QoKSBjb25zdCB7IHJldHVybiBtX2RpZFJl
Y2VpdmVOZXR3b3JrTGlzdDsgfQorICAgIGNvbnN0IFZlY3RvcjxSVENOZXR3b3JrPiYgbmV0d29y
a0xpc3QoKSBjb25zdCB7IHJldHVybiBtX25ldHdvcmtMaXN0OyB9CisgICAgY29uc3QgUlRDTmV0
d29yazo6SVBBZGRyZXNzJiBpcHY0KCkgY29uc3QgeyByZXR1cm4gbV9pcHY0OyB9CisgICAgY29u
c3QgUlRDTmV0d29yazo6SVBBZGRyZXNzJiBpcHY2KCkgY29uc3QgeyByZXR1cm4gbV9pcHY2OyB9
CiAKLSAgICB2b2lkIFN0YXJ0VXBkYXRpbmcoKSBmaW5hbDsKLSAgICB2b2lkIFN0b3BVcGRhdGlu
ZygpIGZpbmFsOwotICAgIHdlYnJ0Yzo6TWRuc1Jlc3BvbmRlckludGVyZmFjZSogR2V0TWRuc1Jl
c3BvbmRlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG51bGxwdHI7IH0KK3ByaXZhdGU6CisgICAg
dm9pZCBuZXR3b3Jrc0NoYW5nZWQoVmVjdG9yPFJUQ05ldHdvcms+JiYsIFJUQ05ldHdvcms6OklQ
QWRkcmVzcyYmLCBSVENOZXR3b3JrOjpJUEFkZHJlc3MmJik7CiAKICAgICBzdGF0aWMgdm9pZCBz
ZW5kT25NYWluVGhyZWFkKEZ1bmN0aW9uPHZvaWQoSVBDOjpDb25uZWN0aW9uJik+JiYpOwogCiAg
ICAgdW5zaWduZWQgbV9jbGllbnRDb3VudCB7IDAgfTsKLSAgICBib29sIG1fcmVjZWl2ZWROZXR3
b3JrTGlzdCB7IGZhbHNlIH07CisgICAgV2Vha0hhc2hTZXQ8T2JzZXJ2ZXI+IG1fb2JzZXJ2ZXJz
OwogICAgIGJvb2wgbV9lbmFibGVFbnVtZXJhdGluZ0FsbE5ldHdvcmtJbnRlcmZhY2VzIHsgZmFs
c2UgfTsKKyAgICBib29sIG1fZGlkUmVjZWl2ZU5ldHdvcmtMaXN0IHsgZmFsc2UgfTsKKyAgICBW
ZWN0b3I8UlRDTmV0d29yaz4gbV9uZXR3b3JrTGlzdDsKKyAgICBSVENOZXR3b3JrOjpJUEFkZHJl
c3MgbV9pcHY0OworICAgIFJUQ05ldHdvcms6OklQQWRkcmVzcyBtX2lwdjY7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA4ZDliNGE1Y2M1ZTYyZDY4YTAzYmI5NGNiNjE3MTA2
YTIzMGYxMWVmLi5jOThkNDFkYzMzMjcwMWYxZWNjYTBkNDBlYTVjYTcxNmVlYzQ0ZmFkIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMDktMDEgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBw
bGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBsaWJ3ZWJydGMgbmV0d29yayBtYW5hZ2VyIEdl
dE1kbnNSZXNwb25kZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIyOTc1NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogd2VicnRjL2RhdGFjaGFubmVsL2ZpbHRlci1pY2UtY2FuZGlkYXRlLmh0bWw6Cisg
ICAgICAgICogd2VicnRjL2ZpbHRlcmluZy1pY2UtY2FuZGlkYXRlLWFmdGVyLXJlbG9hZC5odG1s
OgorICAgICAgICBVcGRhdGUgdGVzdHMgZ2l2ZW4gbUROUyBJQ0UgY2FuZGlkYXRlcyBhcmUgbm93
IHNob3dpbmcgdXAgaW4gZGVzY3JpcHRpb25zLgorCiAyMDIxLTA4LTMxICBZb3Vlbm4gRmFibGV0
ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBNaWdyYXRlIHRvIGxhdGVzdCBsaWJ3ZWJy
dGMgQWRkSWNlQ2FuZGlkYXRlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJydGMvZGF0YWNo
YW5uZWwvZmlsdGVyLWljZS1jYW5kaWRhdGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYnJ0Yy9kYXRh
Y2hhbm5lbC9maWx0ZXItaWNlLWNhbmRpZGF0ZS5odG1sCmluZGV4IGNjYzQ2OWExNzdlMDA5MmI2
NzU3YjViYzRkMTc3NTNhYjFmYjk1M2IuLjc0ZTc4ZjQ5MzI1ODU5ZmZiNTY4NDE2NTUxZDU0MWY4
MDI3NmIzNjcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3dlYnJ0Yy9kYXRhY2hhbm5lbC9maWx0
ZXItaWNlLWNhbmRpZGF0ZS5odG1sCisrKyBiL0xheW91dFRlc3RzL3dlYnJ0Yy9kYXRhY2hhbm5l
bC9maWx0ZXItaWNlLWNhbmRpZGF0ZS5odG1sCkBAIC04LDY4ICs4LDkxIEBACiAgIDwvaGVhZD4K
ICAgPGJvZHk+CiAgICAgPHNjcmlwdD4KLXByb21pc2VfdGVzdCgodGVzdCkgPT4gewotICAgIHJl
dHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7Ci0gICAgICAgIHNldFRpbWVv
dXQoKCkgPT4geyByZWplY3QoIlRlc3QgdGltZWQgb3V0Iik7IH0sIDUwMDApOwotCi0gICAgICAg
IGlmICh3aW5kb3cuaW50ZXJuYWxzKQotICAgICAgICAgICAgaW50ZXJuYWxzLnNldElDRUNhbmRp
ZGF0ZUZpbHRlcmluZyh0cnVlKTsKLQotICAgICAgICB2YXIgY291bnRlciA9IDA7Ci0gICAgICAg
IHZhciBwYyA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOwotICAgICAgICBwYy5jcmVhdGVEYXRh
Q2hhbm5lbCgnc2VuZERhdGFDaGFubmVsJyk7Ci0gICAgICAgIHBjLm9uaWNlY2FuZGlkYXRlID0g
KGV2ZW50KSA9PiB7Ci0gICAgICAgICAgICBpZiAoZXZlbnQuY2FuZGlkYXRlKSB7Ci0gICAgICAg
ICAgICAgICAgY291bnRlcisrOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocGMubG9jYWxEZXNjcmlwdGlvbi5zZHAuaW5k
ZXhPZigiYT1jYW5kaWRhdGUiKSwgLTEpOwotICAgICAgICAgICAgYXNzZXJ0X3RydWUocGMubG9j
YWxEZXNjcmlwdGlvbi5zZHAuaW5kZXhPZigiYz1JTiBJUDQgMC4wLjAuMFxyXG4iKSAhPSAtMSB8
fCBwYy5sb2NhbERlc2NyaXB0aW9uLnNkcC5pbmRleE9mKCJjPUlOIElQNiA6OlxyXG4iKSAhPSAt
MSk7Ci0gICAgICAgICAgICBpZiAoY291bnRlciA9PT0gMCkgewotICAgICAgICAgICAgICAgIHBj
LmNyZWF0ZU9mZmVyKCkudGhlbigob2ZmZXIpID0+IHsKLSAgICAgICAgICAgICAgICAgICAgYXNz
ZXJ0X3RydWUob2ZmZXIuc2RwLmluZGV4T2YoImM9SU4gSVA0IDAuMC4wLjBcclxuIikgIT0gLTEg
fHwgcGMubG9jYWxEZXNjcmlwdGlvbi5zZHAuaW5kZXhPZigiYz1JTiBJUDYgOjpcclxuIikgIT0g
LTEpOwotICAgICAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKG9mZmVyLnNkcC5pbmRleE9m
KCJhPWNhbmRpZGF0ZSIpLCAtMSk7Ci0gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKLSAg
ICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHJl
amVjdCgiTm8gY2FuZGlkYXRlIHNob3VsZCBiZSBmb3VuZCIpOwotICAgICAgICB9OwotICAgICAg
ICBwYy5jcmVhdGVPZmZlcigpLnRoZW4oKG9mZmVyKSA9PiB7Ci0gICAgICAgICAgICBhc3NlcnRf
ZXF1YWxzKG9mZmVyLnNkcC5pbmRleE9mKCJhPWNhbmRpZGF0ZSIpLCAtMSk7Ci0gICAgICAgICAg
ICBwYy5zZXRMb2NhbERlc2NyaXB0aW9uKG9mZmVyKTsKLSAgICAgICAgfSk7CitmdW5jdGlvbiBl
bnN1cmVDYW5kaWRhdGVzQXJlTUROUyhzZHApCit7CisgICAgYXNzZXJ0X3RydWUoc2RwLmluZGV4
T2YoImM9SU4gSVA0IDAuMC4wLjBcclxuIikgIT0gLTEgfHwgc2RwLmluZGV4T2YoImM9SU4gSVA2
IDo6XHJcbiIpICE9IC0xKTsKKyAgICBjb25zdCBjYW5kaWRhdGVzID0gc2RwLnNwbGl0KCdcclxu
JykuZmlsdGVyKGxpbmUgPT4geworICAgICAgICByZXR1cm4gbGluZS5pbmRleE9mKCdhPWNhbmRp
ZGF0ZScpICE9PSAtMTsKKyAgICB9KTsKKyAgICBmb3IgKGNvbnN0IGNhbmRpZGF0ZSBvZiBjYW5k
aWRhdGVzKQorICAgICAgICBhc3NlcnRfbm90X2VxdWFscyhjYW5kaWRhdGUuaW5kZXhPZignLmxv
Y2FsJyksIC0xKTsKK30KKworZnVuY3Rpb24gZW5zdXJlQ2FuZGlkYXRlc0FyZU5vdE1ETlMoc2Rw
KQoreworICAgIGNvbnN0IGNhbmRpZGF0ZXMgPSBzZHAuc3BsaXQoJ1xyXG4nKS5maWx0ZXIobGlu
ZSA9PiB7CisgICAgICAgIHJldHVybiBsaW5lLmluZGV4T2YoJ2E9Y2FuZGlkYXRlJykgIT09IC0x
OwogICAgIH0pOworICAgIGZvciAoY29uc3QgY2FuZGlkYXRlIG9mIGNhbmRpZGF0ZXMpCisgICAg
ICAgIGFzc2VydF9lcXVhbHMoY2FuZGlkYXRlLmluZGV4T2YoJy5sb2NhbCcpLCAtMSk7Cit9CisK
K3Byb21pc2VfdGVzdChhc3luYyAodGVzdCkgPT4geworICAgIGxldCByZXNvbHZlLCByZWplY3Q7
CisgICAgY29uc3QgcHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXMsIHJlaikgPT4geyByZXNvbHZl
ID0gcmVzOyByZWplY3QgPSByZWo7IH0pOworICAgIHNldFRpbWVvdXQoKCkgPT4geyByZWplY3Qo
IlRlc3QgdGltZWQgb3V0Iik7IH0sIDUwMDApOworCisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMp
CisgICAgICAgIGludGVybmFscy5zZXRJQ0VDYW5kaWRhdGVGaWx0ZXJpbmcodHJ1ZSk7CisKKyAg
ICBsZXQgY291bnRlciA9IDA7CisgICAgbGV0IHBjID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7
CisgICAgcGMuY3JlYXRlRGF0YUNoYW5uZWwoJ3NlbmREYXRhQ2hhbm5lbCcpOworICAgIHBjLm9u
aWNlY2FuZGlkYXRlID0gYXN5bmMgKGV2ZW50KSA9PiB7CisgICAgICAgIGlmIChldmVudC5jYW5k
aWRhdGUpIHsKKyAgICAgICAgICAgIGFzc2VydF9ub3RfZXF1YWxzKGV2ZW50LmNhbmRpZGF0ZS5j
YW5kaWRhdGUuaW5kZXhPZignLmxvY2FsJyksIC0xKTsKKyAgICAgICAgICAgIGNvdW50ZXIrKzsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBlbnN1cmVDYW5kaWRhdGVz
QXJlTUROUyhwYy5sb2NhbERlc2NyaXB0aW9uLnNkcCk7CisgICAgICAgIGlmIChjb3VudGVyID09
PSAwKSB7CisgICAgICAgICAgICBjb25zdCBvZmZlciA9IGF3YWl0IHBjLmNyZWF0ZU9mZmVyKCk7
CisgICAgICAgICAgICBhd2FpdCBwYy5zZXRMb2NhbERlc2NyaXB0aW9uKG9mZmVyKTsKKyAgICAg
ICAgICAgIGVuc3VyZUNhbmRpZGF0ZXNBcmVNRE5TKHBjLmxvY2FsRGVzY3JpcHRpb24uc2RwKTsK
KyAgICAgICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
ICAgICAgICByZXNvbHZlKCk7CisgICAgfTsKKyAgICBjb25zdCBvZmZlciA9IGF3YWl0IHBjLmNy
ZWF0ZU9mZmVyKCk7CisgICAgYXNzZXJ0X2VxdWFscyhvZmZlci5zZHAuaW5kZXhPZigiYT1jYW5k
aWRhdGUiKSwgLTEpOworICAgIGF3YWl0IHBjLnNldExvY2FsRGVzY3JpcHRpb24ob2ZmZXIpOwor
CisgICAgcmV0dXJuIHByb21pc2U7CiB9LCAiR2F0aGVyaW5nIElDRSBjYW5kaWRhdGVzIGZyb20g
YSBkYXRhIGNoYW5uZWwgcGVlciBjb25uZWN0aW9uIHdpdGggSUNFIGNhbmRpZGF0ZSBmaWx0ZXJp
bmcgb24iKTsKIAotcHJvbWlzZV90ZXN0KCh0ZXN0KSA9PiB7Ci0gICAgcmV0dXJuIG5ldyBQcm9t
aXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKLSAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7IHJl
amVjdCgiVGVzdCB0aW1lZCBvdXQiKTsgfSwgNTAwMCk7Citwcm9taXNlX3Rlc3QoYXN5bmMgKHRl
c3QpID0+IHsKKyAgICBsZXQgcmVzb2x2ZSwgcmVqZWN0OworICAgIGNvbnN0IHByb21pc2UgPSBu
ZXcgUHJvbWlzZSgocmVzLCByZWopID0+IHsgcmVzb2x2ZSA9IHJlczsgcmVqZWN0ID0gcmVqOyB9
KTsKKyAgICBzZXRUaW1lb3V0KCgpID0+IHsgcmVqZWN0KCJUZXN0IHRpbWVkIG91dCIpOyB9LCA1
MDAwKTsKIAotCWlmICh3aW5kb3cuaW50ZXJuYWxzKQotICAgICAgICAgICAgaW50ZXJuYWxzLnNl
dElDRUNhbmRpZGF0ZUZpbHRlcmluZyhmYWxzZSk7CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMp
CisgICAgICAgIGludGVybmFscy5zZXRJQ0VDYW5kaWRhdGVGaWx0ZXJpbmcoZmFsc2UpOworIAor
ICAgIGxldCBjb3VudGVyID0gMDsKKyAgICBsZXQgcGMgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24o
KTsKKyAgICBwYy5jcmVhdGVEYXRhQ2hhbm5lbCgnc2VuZERhdGFDaGFubmVsJyk7CiAKLSAgICAg
ICAgdmFyIGNvdW50ZXIgPSAwOwotICAgICAgICB2YXIgcGMgPSBuZXcgUlRDUGVlckNvbm5lY3Rp
b24oKTsKLSAgICAgICAgcGMuY3JlYXRlRGF0YUNoYW5uZWwoJ3NlbmREYXRhQ2hhbm5lbCcpOwot
ICAgICAgICBwYy5vbmljZWNhbmRpZGF0ZSA9IChldmVudCkgPT4gewotICAgICAgICAgICAgaWYg
KGV2ZW50LmNhbmRpZGF0ZSkgewotICAgICAgICAgICAgICAgIGNvdW50ZXIrKzsKLSAgICAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBhc3NlcnRfdHJ1ZShw
Yy5sb2NhbERlc2NyaXB0aW9uLnNkcC5pbmRleE9mKCJjPUlOIElQNCAwLjAuMC4wXHJcbiIpID09
PSAtMSAmJiBwYy5sb2NhbERlc2NyaXB0aW9uLnNkcC5pbmRleE9mKCJjPUlOIElQNiA6OlxyXG4i
KSA9PT0gLTEpOwotICAgICAgICAgICAgYXNzZXJ0X2ZhbHNlKHBjLmxvY2FsRGVzY3JpcHRpb24u
c2RwLmluZGV4T2YoImE9Y2FuZGlkYXRlIikgPT09IC0xKTsKLSAgICAgICAgICAgIGlmIChjb3Vu
dGVyICE9PSAwKSB7Ci0gICAgICAgICAgICAgICAgLy8gUmVkb2luZyBhbiBvZmZlciBub3cgdGhh
dCB3ZSBoYXZlIHNvbWUgY2FuZGlkYXRlcy4KLSAgICAgICAgICAgICAgICBwYy5jcmVhdGVPZmZl
cigpLnRoZW4oKG9mZmVyKSA9PiB7Ci0gICAgICAgICAgICAgICAgICAgIGFzc2VydF90cnVlKG9m
ZmVyLnNkcC5pbmRleE9mKCJjPUlOIElQNCAwLjAuMC4wXHJcbiIpID09PSAtMSAmJiBwYy5sb2Nh
bERlc2NyaXB0aW9uLnNkcC5pbmRleE9mKCJjPUlOIElQNiA6OlxyXG4iKSA9PT0gLTEpOwotICAg
ICAgICAgICAgICAgICAgICBhc3NlcnRfZmFsc2Uob2ZmZXIuc2RwLmluZGV4T2YoImE9Y2FuZGlk
YXRlIikgPT09IC0xKTsKLSAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOwotICAgICAgICAg
ICAgICAgIH0pOwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgcmVqZWN0KCJI
b3N0IGNhbmRpZGF0ZXMgc2hvdWxkIGJlIGZvdW5kIik7Ci0gICAgICAgIH07Ci0gICAgICAgIHBj
LmNyZWF0ZU9mZmVyKCkudGhlbigob2ZmZXIpID0+IHsgcGMuc2V0TG9jYWxEZXNjcmlwdGlvbihv
ZmZlcik7IH0pOwotICAgIH0pOworICAgIHBjLm9uaWNlY2FuZGlkYXRlID0gYXN5bmMgKGV2ZW50
KSA9PiB7CisgICAgICAgIGlmIChldmVudC5jYW5kaWRhdGUpIHsKKyAgICAgICAgICAgIGFzc2Vy
dF9lcXVhbHMoZXZlbnQuY2FuZGlkYXRlLmNhbmRpZGF0ZS5pbmRleE9mKCcubG9jYWwnKSwgLTEp
OworICAgICAgICAgICAgY291bnRlcisrOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisgICAgICAgIGVuc3VyZUNhbmRpZGF0ZXNBcmVOb3RNRE5TKHBjLmxvY2FsRGVzY3JpcHRpb24u
c2RwKTsKKyAgICAgICAgaWYgKGNvdW50ZXIgIT09IDApIHsKKyAgICAgICAgICAgIC8vIFJlZG9p
bmcgYW4gb2ZmZXIgbm93IHRoYXQgd2UgaGF2ZSBzb21lIGNhbmRpZGF0ZXMuCisgICAgICAgICAg
ICBjb25zdCBvZmZlciA9IGF3YWl0IHBjLmNyZWF0ZU9mZmVyKCk7CisgICAgICAgICAgICBhd2Fp
dCBwYy5zZXRMb2NhbERlc2NyaXB0aW9uKG9mZmVyKTsKKyAgICAgICAgICAgIGVuc3VyZUNhbmRp
ZGF0ZXNBcmVOb3RNRE5TKHBjLmxvY2FsRGVzY3JpcHRpb24uc2RwKTsKKyAgICAgICAgICAgIHJl
c29sdmUoKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICByZWplY3QoIkhvc3QgY2FuZGlk
YXRlcyBzaG91bGQgYmUgZm91bmQiKTsKKyAgICB9OworICAgIGNvbnN0IG9mZmVyID0gYXdhaXQg
cGMuY3JlYXRlT2ZmZXIoKTsKKyAgICBhd2FpdCBwYy5zZXRMb2NhbERlc2NyaXB0aW9uKG9mZmVy
KTsKKworICAgIHJldHVybiBwcm9taXNlOwogfSwgIkdhdGhlcmluZyBJQ0UgY2FuZGlkYXRlcyBm
cm9tIGEgZGF0YSBjaGFubmVsIHBlZXIgY29ubmVjdGlvbiB3aXRoIElDRSBjYW5kaWRhdGUgZmls
dGVyaW5nIG9mZiIpOwogCiBwcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYnJ0Yy9maWx0ZXJpbmctaWNlLWNhbmRpZGF0ZS1hZnRlci1yZWxv
YWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYnJ0Yy9maWx0ZXJpbmctaWNlLWNhbmRpZGF0ZS1hZnRl
ci1yZWxvYWQuaHRtbAppbmRleCBjODc1NWY3MWYxOWYxYTMwM2MyM2IwYmFhZjE2NjNiZDY4YmQ1
YjlkLi41MjVkZTg0ZjlkMzJiYjE0NjJkZTk3YzJmMjBlNTVmZmNjMTVlNGIyIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy93ZWJydGMvZmlsdGVyaW5nLWljZS1jYW5kaWRhdGUtYWZ0ZXItcmVsb2Fk
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvd2VicnRjL2ZpbHRlcmluZy1pY2UtY2FuZGlkYXRlLWFm
dGVyLXJlbG9hZC5odG1sCkBAIC03LDI0ICs3LDI4IEBAIGlmICh3aW5kb3cudGVzdFJ1bm5lcikg
ewogICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogfQogCi1mdW5jdGlvbiBpc0ZpbHRl
cmluZ0VuYWJsZWQoKQorYXN5bmMgZnVuY3Rpb24gaXNGaWx0ZXJpbmdFbmFibGVkKCkKIHsKKyAg
ICBsZXQgcmVzb2x2ZSwgcmVqZWN0OworICAgIGNvbnN0IHByb21pc2UgPSBuZXcgUHJvbWlzZSgo
cmVzLCByZWopID0+IHsgcmVzb2x2ZSA9IHJlczsgcmVqZWN0ID0gcmVqOyB9KTsKKyAgICBzZXRU
aW1lb3V0KCgpID0+IHsgcmVqZWN0KCJUZXN0IHRpbWVkIG91dCIpOyB9LCA1MDAwKTsKKwogICAg
IHZhciBwYyA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOwogICAgIHBjLmNyZWF0ZURhdGFDaGFu
bmVsKCIiKTsKIAogICAgIHZhciBjYW5kaWRhdGVzID0gW107Ci0gICAgcmV0dXJuIG5ldyBQcm9t
aXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKLSAgICAgICAgcGMub25pY2VjYW5kaWRhdGUgPSAo
ZXZlbnQpID0+IHsKLSAgICAgICAgICAgIGlmIChldmVudC5jYW5kaWRhdGUgPT09IG51bGwpIHsK
LSAgICAgICAgICAgICAgICByZXNvbHZlKCFjYW5kaWRhdGVzLmxlbmd0aCk7Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQorICAgIHBjLm9uaWNlY2FuZGlkYXRlID0gKGV2
ZW50KSA9PiB7CisgICAgICAgIGlmIChldmVudC5jYW5kaWRhdGUgPT09IG51bGwpIHsKKyAgICAg
ICAgICAgIHJlc29sdmUoIWNhbmRpZGF0ZXMubGVuZ3RoKTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorICAgICAgICBpZiAoZXZlbnQuY2FuZGlkYXRlLmNhbmRpZGF0ZS5pbmRleE9m
KCcubG9jYWwnKSA9PT0gLTEpCiAgICAgICAgICAgICBjYW5kaWRhdGVzLnB1c2goZXZlbnQuY2Fu
ZGlkYXRlLmNhbmRpZGF0ZSk7Ci0gICAgICAgIH07Ci0gICAgICAgIHBjLmNyZWF0ZU9mZmVyKCku
dGhlbigob2ZmZXIpID0+IHsKLSAgICAgICAgICAgIHBjLnNldExvY2FsRGVzY3JpcHRpb24ob2Zm
ZXIpOwotICAgICAgICB9KTsKLSAgICB9KTsKKyAgICB9OworCisgICAgY29uc3Qgb2ZmZXIgPSBh
d2FpdCBwYy5jcmVhdGVPZmZlcigpOworICAgIGF3YWl0IHBjLnNldExvY2FsRGVzY3JpcHRpb24o
b2ZmZXIpOworICAgIHJldHVybiBwcm9taXNlOwogfQogCiBmdW5jdGlvbiBlbmRUZXN0KG1lc3Nh
Z2UpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>437017</attachid>
            <date>2021-09-01 04:59:37 -0700</date>
            <delta_ts>2021-09-01 06:20:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229757-20210901135934.patch</filename>
            <type>text/plain</type>
            <size>83023</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxNzkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWIwNDFiMmIwMGZmNmU4
Y2YwNTI3MjZmMWQ1NmUzMzQwNGM1NjAwNy4uNThjOWY3ZDhmZTMwZDZlNWYwZTY1OTkyNzFkNTgy
NDJhZmFlYmRlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDIxLTA5LTAxICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgbGlid2Vi
cnRjIG5ldHdvcmsgbWFuYWdlciBHZXRNZG5zUmVzcG9uZGVyCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjk3NTcKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgbGlid2VicnRjIG1ETlMgc3VwcG9ydCBp
bnN0ZWFkIG9mIGFwcGx5aW5nIGl0IHdpdGhpbiBQZWVyQ29ubmVjdGlvbkJhY2tlbmQuCisgICAg
ICAgIFRoaXMgYWxsb3dzIGEgYmV0dGVyIGludGVncmF0aW9uIGFuZCBpcyBtb3JlIGNvbnNpc3Rl
bnQgd2l0aCB0aGUgQVBJIGFuZCBvdGhlciBicm93c2Vycy4KKyAgICAgICAgRm9yIGluc3RhbmNl
IG1ETlMgY2FuZGlkYXRlcyBub3cgc2hvdyB1cCBpbiBsb2NhbCBkZXNjcmlwdGlvbnMuCisgICAg
ICAgIFdlIGludHJvZHVjZSBSVENOZXR3b3JrTWFuYWdlciB3aGljaCBpcyByZXNwb25zaWJsZSBm
b3IgV2ViUlRDIG5ldHdvcmsuCisgICAgICAgIFJUQ05ldHdvcmtNYW5hZ2VyIGlzIHJlc3BvbnNp
YmxlIG9mIGFsbCBwZWVyIGNvbm5lY3Rpb25zIG9mIGEgZG9jdW1lbnQuIEl0IGNhbiB0aHVzIHJl
dXNlIG1ETlMgbmFtZXMgZnJvbSBvbmUgY29ubmVjdGlvbiB0byBhbm90aGVyLgorICAgICAgICBX
aGVuIGRvY3VtZW50IGdvZXMgYXdheSwgUlRDTmV0d29ya01hbmFnZXIgbmVlZHMgdG8gdW5yZWdp
c3RlciBhbGwgbUROUyBuYW1lcy4KKyAgICAgICAgVXBkYXRlIGV4aXN0aW5nIFNEUCBhbmQgSUNF
IGNhbmRpZGF0ZSBmaWx0ZXJpbmcgY29kZSBieSBvbmx5IGtlZXBpbmcgZGVidWcgYXNzZXJ0IHRo
YXQgd2UgZG8gbm90IGxlYWsgcHJpdmF0ZSBJUCBhZGRyZXNzZXMgaW4gY2FzZSBJQ0UgZmlsdGVy
aW5nIGlzIG9uLgorICAgICAgICBDb3ZlcmVkIGJ5IHVwZGF0ZWQgYW5kIGV4aXN0aW5nIHRlc3Rz
LgorCisgICAgICAgICogSGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3Ry
ZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29u
bmVjdGlvbkJhY2tlbmQ6OmNyZWF0ZU9mZmVyU3VjY2VlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6
OlBlZXJDb25uZWN0aW9uQmFja2VuZDo6ZW5hYmxlSUNFQ2FuZGlkYXRlRmlsdGVyaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uQmFja2VuZDo6ZGlzYWJsZUlDRUNhbmRpZGF0
ZUZpbHRlcmluZyk6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OnZh
bGlkYXRlU0RQIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uQmFja2Vu
ZDo6bmV3SUNFQ2FuZGlkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uQmFj
a2VuZDo6ZG9uZUdhdGhlcmluZ0NhbmRpZGF0ZXMpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
dHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0NvbnRyb2xsZXI6
OmFkZCk6CisgICAgICAgIChXZWJDb3JlOjpSVENDb250cm9sbGVyOjpkaXNhYmxlSUNFQ2FuZGlk
YXRlRmlsdGVyaW5nRm9yQWxsT3JpZ2lucyk6CisgICAgICAgIChXZWJDb3JlOjpSVENDb250cm9s
bGVyOjpkaXNhYmxlSUNFQ2FuZGlkYXRlRmlsdGVyaW5nRm9yRG9jdW1lbnQpOgorICAgICAgICAo
V2ViQ29yZTo6UlRDQ29udHJvbGxlcjo6ZW5hYmxlSUNFQ2FuZGlkYXRlRmlsdGVyaW5nKToKKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ05ldHdvcmtNYW5hZ2VyLmg6IEFkZGVkLgor
ICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5k
cG9pbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6c2V0
Q29uZmlndXJhdGlvbik6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMv
TGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okxp
YldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6Y3VycmVudExvY2FsRGVzY3JpcHRpb24gY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpw
ZW5kaW5nTG9jYWxEZXNjcmlwdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJS
VENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmxvY2FsRGVzY3JpcHRpb24gY29uc3QpOgorICAgICAg
ICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBkb20vRG9j
dW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OndpbGxCZVJlbW92ZWRGcm9t
RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnN1c3BlbmQpOgorICAgICAgICAq
IGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJ0Y05ldHdvcmtN
YW5hZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzZXRSVENOZXR3b3JrTWFuYWdl
cik6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vTUROU1JlZ2lzdGVyRXJyb3IuaDog
QWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJU
Q1Byb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ1Byb3ZpZGVyOjpjcmVh
dGVQZWVyQ29ubmVjdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2Vi
cnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmg6CisKIDIwMjEtMDgtMzEgIFlvdWVubiBGYWJsZXQgIDx5
b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBzdXBwb3J0IGZvciBSVENTY3RwVHJhbnNw
b3J0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCmluZGV4IDYxZjdhZDFjYTg4N2Q1YmZkMjEyZjQzOTNkMGM1MmFlYWFjMGI1N2Iu
LmU0N2ZiZDg2N2JmZjk0YjI0NGM3YTU5MWU0YzEyZWViNmZjMTdhYzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNTYgQEAKKzIwMjEtMDktMDEgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29t
PgorCisgICAgICAgIEltcGxlbWVudCBsaWJ3ZWJydGMgbmV0d29yayBtYW5hZ2VyIEdldE1kbnNS
ZXNwb25kZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyOTc1NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEltcGxlbWVudCBSVENOZXR3b3JrTWFuYWdlciBBUEkgaW4gTGliV2ViUlRDTmV0d29ya01hbmFn
ZXIgdG8gaGFuZGxlIHBlci1kb2N1bWVudCBtRE5TIHJlZ2lzdHJhdGlvbnMuCisgICAgICAgIE1v
dmUgcGFydCBvZiBXZWJSVENNb25pdG9yIHRvIExpYldlYlJUQ05ldHdvcmtNYW5hZ2VyLgorICAg
ICAgICBMaWJXZWJSVENOZXR3b3JrTWFuYWdlciBpcyBhIFdlYlJUQ01vbml0b3Igb2JzZXJ2ZXIg
dG8gZ2V0IHRoZSBsaXN0IG9mIG5ldHdvcmtzLgorICAgICAgICBTaW5jZSBsaWJ3ZWJydGMgaXMg
bm93IGRvaW5nIHRoZSBtRE5TIHJlZ2lzdHJhdGlvbiwgd2UgbmVlZCB0byByZXR1cm4gYSBtRE5T
IG5hbWUgZXZlbiBpZiByZWdpc3RyYXRpb24gZmFpbGVkLgorICAgICAgICBXZSB1cGRhdGUgV2Vi
TUROU1JlZ2lzdGVyIGFuZCBOZXR3b3JrTUROU1JlZ2lzdGVyIGFjY29yZGluZ2x5LgorCisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtNRE5TUmVnaXN0ZXIuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpyZWdpc3Rlck1ETlNOYW1lQ2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrTUROU1JlZ2lzdGVyOjpyZWdpc3Rlck1ETlNOYW1lKToKKyAgICAgICAgKiBTb3Vy
Y2VzLnR4dDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ05ldHdvcmtNYW5hZ2Vy
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ05ldHdvcmtNYW5hZ2VyOjpn
ZXRPckNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ05ldHdvcmtNYW5hZ2VyOjpM
aWJXZWJSVENOZXR3b3JrTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ05ldHdv
cmtNYW5hZ2VyOjp+TGliV2ViUlRDTmV0d29ya01hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpM
aWJXZWJSVENOZXR3b3JrTWFuYWdlcjo6dW5yZWdpc3Rlck1ETlNOYW1lcyk6CisgICAgICAgIChX
ZWJLaXQ6OkxpYldlYlJUQ05ldHdvcmtNYW5hZ2VyOjpTdGFydFVwZGF0aW5nKToKKyAgICAgICAg
KFdlYktpdDo6TGliV2ViUlRDTmV0d29ya01hbmFnZXI6OlN0b3BVcGRhdGluZyk6CisgICAgICAg
IChXZWJLaXQ6OkxpYldlYlJUQ05ldHdvcmtNYW5hZ2VyOjpHZXRNZG5zUmVzcG9uZGVyIGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDTmV0d29ya01hbmFnZXI6Om5ldHdvcmtzQ2hh
bmdlZCk6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ05ldHdvcmtNYW5hZ2VyOjpuZXR3b3Jr
UHJvY2Vzc0NyYXNoZWQpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENOZXR3b3JrTWFuYWdl
cjo6Q3JlYXRlTmFtZUZvckFkZHJlc3MpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENOZXR3
b3JrTWFuYWdlcjo6UmVtb3ZlTmFtZUZvckFkZHJlc3MpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
TmV0d29yay93ZWJydGMvTGliV2ViUlRDTmV0d29ya01hbmFnZXIuaDogQWRkZWQuCisgICAgICAg
ICogV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkxpYldlYlJUQ1Byb3ZpZGVyOjpjcmVhdGVQZWVyQ29ubmVjdGlvbik6Cisg
ICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ1Byb3ZpZGVyOjpkaXNhYmxlTm9uTG9jYWxob3N0Q29u
bmVjdGlvbnMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRD
UHJvdmlkZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1dlYk1ETlNS
ZWdpc3Rlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYk1ETlNSZWdpc3Rlcjo6ZmluaXNoZWRS
ZWdpc3RlcmluZ01ETlNOYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViTUROU1JlZ2lzdGVyOjpy
ZWdpc3Rlck1ETlNOYW1lKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1dl
Yk1ETlNSZWdpc3Rlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvV2Vi
TUROU1JlZ2lzdGVyLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay93
ZWJydGMvV2ViUlRDTW9uaXRvci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJUQ01vbml0b3I6
OnN0YXJ0VXBkYXRpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJSVENNb25pdG9yOjpzdG9wVXBk
YXRpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJSVENNb25pdG9yOjpuZXR3b3Jrc0NoYW5nZWQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJSVENNb25pdG9yOjpuZXR3b3JrUHJvY2Vzc0NyYXNoZWQp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvV2ViUlRDTW9uaXRvci5oOgor
ICAgICAgICAoV2ViS2l0OjpXZWJSVENNb25pdG9yOjphZGRPYnNlcnZlcik6CisgICAgICAgIChX
ZWJLaXQ6OldlYlJUQ01vbml0b3I6OnJlbW92ZU9ic2VydmVyKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUlRDTW9uaXRvcjo6ZGlkUmVjZWl2ZU5ldHdvcmtMaXN0IGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViUlRDTW9uaXRvcjo6bmV0d29ya0xpc3QgY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpXZWJSVENNb25pdG9yOjppcHY0IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUlRDTW9u
aXRvcjo6aXB2NiBjb25zdCk6CisKIDIwMjEtMDgtMjYgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBw
bGUuY29tPgogCiAgICAgICAgIEN1dCBkb3duIG9uIHVzZSBvZiBDRkdldFR5cGVJRCwgdXNpbmcg
ZHluYW1pY19jZl9jYXN0IGluc3RlYWQ7IHJlbGF0ZWQgc3RyZWFtbGluaW5nCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5j
bWFrZQppbmRleCA3NmNlMGM2NjFmZWU4MzBkMTc2ZTM2MWY1Nzk4NzM1YzdhZTFlMGNlLi45OTY5
NDUzNjMzN2U5MWQyOWViZDRkZWY0MDJkYjZiZmZmZjMxYjlkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UK
QEAgLTEyMCw2ICsxMjAsOCBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJT
CiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFDb250cm9sbGVyLmgKICAgICBNb2R1
bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuaAogCisgICAgTW9kdWxlcy9tZWRpYXN0
cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDVXRpbHMuaAorCiAgICAgTW9kdWxlcy9tb2RlbC1lbGVt
ZW50L0hUTUxNb2RlbEVsZW1lbnQuaAogCiAgICAgTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlm
aWNhdGlvbi5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAKaW5kZXggNzk5ZTFkM2RhY2M0ODEwNzJj
MWI1N2JhZDFlOTVlMDZkMGEwNGM4MS4uZDFkMWY2YWVjZDE5ZTI1MmIyMTBjNzUwOWRhYjQ3ZjY0
NWQ4ZmNjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Q
ZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcApAQCAtMTAyLDcgKzEwMiw4IEBAIHZv
aWQgUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpjcmVhdGVPZmZlclN1Y2NlZWRlZChTdHJpbmcmJiBz
ZHApCiAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAiQ3JlYXRlIG9mZmVyIHN1Y2NlZWRl
ZDpcbiIsIHNkcCk7CiAKICAgICBBU1NFUlQobV9vZmZlckFuc3dlclByb21pc2UpOwotICAgIG1f
cGVlckNvbm5lY3Rpb24uZG9UYXNrKFt0aGlzLCBwcm9taXNlID0gV1RGTW92ZShtX29mZmVyQW5z
d2VyUHJvbWlzZSksIHNkcCA9IGZpbHRlclNEUChXVEZNb3ZlKHNkcCkpXSgpIG11dGFibGUgewor
ICAgIHZhbGlkYXRlU0RQKHNkcCk7CisgICAgbV9wZWVyQ29ubmVjdGlvbi5kb1Rhc2soW3RoaXMs
IHByb21pc2UgPSBXVEZNb3ZlKG1fb2ZmZXJBbnN3ZXJQcm9taXNlKSwgc2RwID0gV1RGTW92ZShz
ZHApXSgpIG11dGFibGUgewogICAgICAgICBpZiAobV9wZWVyQ29ubmVjdGlvbi5pc0Nsb3NlZCgp
KQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0zNzYsODEgKzM3NywxNyBAQCB2b2lkIFBlZXJD
b25uZWN0aW9uQmFja2VuZDo6ZW5hYmxlSUNFQ2FuZGlkYXRlRmlsdGVyaW5nKCkKIHZvaWQgUGVl
ckNvbm5lY3Rpb25CYWNrZW5kOjpkaXNhYmxlSUNFQ2FuZGlkYXRlRmlsdGVyaW5nKCkKIHsKICAg
ICBtX3Nob3VsZEZpbHRlcklDRUNhbmRpZGF0ZXMgPSBmYWxzZTsKLSAgICBmb3IgKGF1dG8mIHBl
bmRpbmdJQ0VDYW5kaWRhdGUgOiBtX3BlbmRpbmdJQ0VDYW5kaWRhdGVzKQotICAgICAgICBmaXJl
SUNFQ2FuZGlkYXRlRXZlbnQoUlRDSWNlQ2FuZGlkYXRlOjpjcmVhdGUoV1RGTW92ZShwZW5kaW5n
SUNFQ2FuZGlkYXRlLnNkcCksIFdURk1vdmUocGVuZGluZ0lDRUNhbmRpZGF0ZS5taWQpLCBwZW5k
aW5nSUNFQ2FuZGlkYXRlLnNkcE1MaW5lSW5kZXgpLCBXVEZNb3ZlKHBlbmRpbmdJQ0VDYW5kaWRh
dGUuc2VydmVyVVJMKSk7Ci0gICAgbV9wZW5kaW5nSUNFQ2FuZGlkYXRlcy5jbGVhcigpOwotfQot
Ci1zdGF0aWMgU3RyaW5nIGZpbHRlcklDRUNhbmRpZGF0ZShTdHJpbmcmJiBzZHApCi17Ci0gICAg
QVNTRVJUKCFzZHAuY29udGFpbnMoIiBob3N0ICIpKTsKLQotICAgIGlmICghc2RwLmNvbnRhaW5z
KCIgcmFkZHIgIikpCi0gICAgICAgIHJldHVybiBXVEZNb3ZlKHNkcCk7Ci0KLSAgICBib29sIHNr
aXBOZXh0SXRlbSA9IGZhbHNlOwotICAgIGJvb2wgaXNGaXJzdCA9IHRydWU7Ci0gICAgU3RyaW5n
QnVpbGRlciBmaWx0ZXJlZFNEUDsKLSAgICBzZHAuc3BsaXQoJyAnLCBbJl0oU3RyaW5nVmlldyBp
dGVtKSB7Ci0gICAgICAgIGlmIChza2lwTmV4dEl0ZW0pIHsKLSAgICAgICAgICAgIHNraXBOZXh0
SXRlbSA9IGZhbHNlOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGlm
IChpdGVtID09ICJyYWRkciIpIHsKLSAgICAgICAgICAgIGZpbHRlcmVkU0RQLmFwcGVuZCgiIHJh
ZGRyIDAuMC4wLjAiKTsKLSAgICAgICAgICAgIHNraXBOZXh0SXRlbSA9IHRydWU7Ci0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGl0ZW0gPT0gInJwb3J0Iikgewot
ICAgICAgICAgICAgZmlsdGVyZWRTRFAuYXBwZW5kKCIgcnBvcnQgMCIpOwotICAgICAgICAgICAg
c2tpcE5leHRJdGVtID0gdHJ1ZTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAg
ICAgICBpZiAoaXNGaXJzdCkKLSAgICAgICAgICAgIGlzRmlyc3QgPSBmYWxzZTsKLSAgICAgICAg
ZWxzZQotICAgICAgICAgICAgZmlsdGVyZWRTRFAuYXBwZW5kKCcgJyk7Ci0gICAgICAgIGZpbHRl
cmVkU0RQLmFwcGVuZChpdGVtKTsKLSAgICB9KTsKLSAgICByZXR1cm4gZmlsdGVyZWRTRFAudG9T
dHJpbmcoKTsKIH0KIAotU3RyaW5nIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6ZmlsdGVyU0RQKFN0
cmluZyYmIHNkcCkgY29uc3QKK3ZvaWQgUGVlckNvbm5lY3Rpb25CYWNrZW5kOjp2YWxpZGF0ZVNE
UChjb25zdCBTdHJpbmcmIHNkcCkgY29uc3QKIHsKKyNpZm5kZWYgTkRFQlVHCiAgICAgaWYgKCFt
X3Nob3VsZEZpbHRlcklDRUNhbmRpZGF0ZXMpCi0gICAgICAgIHJldHVybiBXVEZNb3ZlKHNkcCk7
Ci0KLSAgICBTdHJpbmdCdWlsZGVyIGZpbHRlcmVkU0RQOwotICAgIHNkcC5zcGxpdCgnXG4nLCBb
dGhpcywgJmZpbHRlcmVkU0RQXShTdHJpbmdWaWV3IGxpbmUpIHsKLSAgICAgICAgaWYgKGxpbmUu
c3RhcnRzV2l0aCgiYz1JTiBJUDQiKSkgewotICAgICAgICAgICAgZmlsdGVyZWRTRFAuYXBwZW5k
KCJjPUlOIElQNCAwLjAuMC4wXHJcbiIpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9
Ci0gICAgICAgIGlmIChsaW5lLnN0YXJ0c1dpdGgoImM9SU4gSVA2IikpIHsKLSAgICAgICAgICAg
IGZpbHRlcmVkU0RQLmFwcGVuZCgiYz1JTiBJUDYgOjpcclxuIik7Ci0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCFsaW5lLnN0YXJ0c1dpdGgoImE9Y2FuZGlkYXRl
IikpIHsKLSAgICAgICAgICAgIGZpbHRlcmVkU0RQLmFwcGVuZChsaW5lKTsKLSAgICAgICAgICAg
IGZpbHRlcmVkU0RQLmFwcGVuZCgnXG4nKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
fQotICAgICAgICBpZiAobGluZS5maW5kKCIgaG9zdCAiLCAxMSkgPT0gbm90Rm91bmQpIHsKLSAg
ICAgICAgICAgIGZpbHRlcmVkU0RQLmFwcGVuZChmaWx0ZXJJQ0VDYW5kaWRhdGUobGluZS50b1N0
cmluZygpKSk7Ci0gICAgICAgICAgICBmaWx0ZXJlZFNEUC5hcHBlbmQoJ1xuJyk7Ci0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBhdXRvIGlwQWRkcmVzcyA9IGV4dHJh
Y3RJUEFkZHJlc3MobGluZSk7Ci0gICAgICAgIGF1dG8gbWRuc05hbWUgPSBtX2lwQWRkcmVzc1Rv
TUROU05hbWVNYXAuZ2V0KGlwQWRkcmVzcyk7Ci0gICAgICAgIGlmIChtZG5zTmFtZS5pc0VtcHR5
KCkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGF1dG8gc2RwID0gbGluZS50b1N0cmlu
ZygpOwotICAgICAgICBzZHAucmVwbGFjZShpcEFkZHJlc3MsIG1kbnNOYW1lKTsKLSAgICAgICAg
ZmlsdGVyZWRTRFAuYXBwZW5kKHNkcCk7Ci0gICAgICAgIGZpbHRlcmVkU0RQLmFwcGVuZCgnXG4n
KTsKKyAgICAgICAgcmV0dXJuOworICAgIHNkcC5zcGxpdCgnXG4nLCBbXShhdXRvIGxpbmUpIHsK
KyAgICAgICAgQVNTRVJUKCFsaW5lLnN0YXJ0c1dpdGgoImE9Y2FuZGlkYXRlIikgfHwgbGluZS5j
b250YWlucygiLmxvY2FsIikpOwogICAgIH0pOwotICAgIHJldHVybiBmaWx0ZXJlZFNEUC50b1N0
cmluZygpOworI2VuZGlmCiB9CiAKIHZvaWQgUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpuZXdJQ0VD
YW5kaWRhdGUoU3RyaW5nJiYgc2RwLCBTdHJpbmcmJiBtaWQsIHVuc2lnbmVkIHNob3J0IHNkcE1M
aW5lSW5kZXgsIFN0cmluZyYmIHNlcnZlclVSTCkKQEAgLTQ2MCwyMiArMzk3LDggQEAgdm9pZCBQ
ZWVyQ29ubmVjdGlvbkJhY2tlbmQ6Om5ld0lDRUNhbmRpZGF0ZShTdHJpbmcmJiBzZHAsIFN0cmlu
ZyYmIG1pZCwgdW5zaWduZWQKICAgICAgICAgQUxXQVlTX0xPRyhsb2dTaXRlSWRlbnRpZmllciwg
IkdhdGhlcmVkIGljZSBjYW5kaWRhdGU6Iiwgc2RwKTsKICAgICAgICAgbV9maW5pc2hlZEdhdGhl
cmluZ0NhbmRpZGF0ZXMgPSBmYWxzZTsKIAotICAgICAgICBpZiAoIW1fc2hvdWxkRmlsdGVySUNF
Q2FuZGlkYXRlcykgewotICAgICAgICAgICAgZmlyZUlDRUNhbmRpZGF0ZUV2ZW50KFJUQ0ljZUNh
bmRpZGF0ZTo6Y3JlYXRlKFdURk1vdmUoc2RwKSwgV1RGTW92ZShtaWQpLCBzZHBNTGluZUluZGV4
KSwgV1RGTW92ZShzZXJ2ZXJVUkwpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQot
ICAgICAgICBpZiAoc2RwLmZpbmQoIiBob3N0ICIsIDApICE9IG5vdEZvdW5kKSB7Ci0gICAgICAg
ICAgICAvLyBGSVhNRTogV2UgbWlnaHQgbmVlZCB0byBjbGVhciBhbGwgcGVuZGluZyBjYW5kaWRh
dGVzIHdoZW4gc2V0dGluZyBhZ2FpbiBsb2NhbCBkZXNjcmlwdGlvbi4KLSAgICAgICAgICAgIG1f
cGVuZGluZ0lDRUNhbmRpZGF0ZXMuYXBwZW5kKFBlbmRpbmdJQ0VDYW5kaWRhdGUgeyBTdHJpbmcg
eyBzZHAgfSwgV1RGTW92ZShtaWQpLCBzZHBNTGluZUluZGV4LCBXVEZNb3ZlKHNlcnZlclVSTCkg
fSk7Ci0gICAgICAgICAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVy
ZXMoKS53ZWJSVENNRE5TSUNFQ2FuZGlkYXRlc0VuYWJsZWQoKSkgewotICAgICAgICAgICAgICAg
IGF1dG8gaXBBZGRyZXNzID0gZXh0cmFjdElQQWRkcmVzcyhzZHApOwotICAgICAgICAgICAgICAg
IC8vIFdlIHJlc3RyaWN0IHRvIElQdjQgY2FuZGlkYXRlcyBmb3Igbm93LgotICAgICAgICAgICAg
ICAgIGlmIChpcEFkZHJlc3MuY29udGFpbnMoJy4nKSkKLSAgICAgICAgICAgICAgICAgICAgcmVn
aXN0ZXJNRE5TTmFtZShpcEFkZHJlc3MpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICB9Ci0gICAgICAgIGZpcmVJQ0VDYW5kaWRhdGVFdmVudChSVENJY2VDYW5k
aWRhdGU6OmNyZWF0ZShmaWx0ZXJJQ0VDYW5kaWRhdGUoV1RGTW92ZShzZHApKSwgV1RGTW92ZSht
aWQpLCBzZHBNTGluZUluZGV4KSwgV1RGTW92ZShzZXJ2ZXJVUkwpKTsKKyAgICAgICAgQVNTRVJU
KCFtX3Nob3VsZEZpbHRlcklDRUNhbmRpZGF0ZXMgfHwgc2RwLmNvbnRhaW5zKCIubG9jYWwiKSk7
CisgICAgICAgIGZpcmVJQ0VDYW5kaWRhdGVFdmVudChSVENJY2VDYW5kaWRhdGU6OmNyZWF0ZShX
VEZNb3ZlKHNkcCksIFdURk1vdmUobWlkKSwgc2RwTUxpbmVJbmRleCksIFdURk1vdmUoc2VydmVy
VVJMKSk7CiAgICAgfSk7CiB9CiAKQEAgLTQ4NSwxMiArNDA4LDggQEAgdm9pZCBQZWVyQ29ubmVj
dGlvbkJhY2tlbmQ6OmRvbmVHYXRoZXJpbmdDYW5kaWRhdGVzKCkKICAgICBBTFdBWVNfTE9HKExP
R0lERU5USUZJRVIsICJGaW5pc2hlZCBpY2UgY2FuZGlkYXRlIGdhdGhlcmluZyIpOwogICAgIG1f
ZmluaXNoZWRHYXRoZXJpbmdDYW5kaWRhdGVzID0gdHJ1ZTsKIAotICAgIGlmIChtX3dhaXRpbmdG
b3JNRE5TUmVnaXN0cmF0aW9uKQotICAgICAgICByZXR1cm47Ci0KICAgICBtX3BlZXJDb25uZWN0
aW9uLmRpc3BhdGNoRXZlbnRXaGVuRmVhc2libGUoUlRDUGVlckNvbm5lY3Rpb25JY2VFdmVudDo6
Y3JlYXRlKEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObywgbnVs
bHB0ciwgeyB9KSk7CiAgICAgbV9wZWVyQ29ubmVjdGlvbi51cGRhdGVJY2VHYXRoZXJpbmdTdGF0
ZShSVENJY2VHYXRoZXJpbmdTdGF0ZTo6Q29tcGxldGUpOwotICAgIG1fcGVuZGluZ0lDRUNhbmRp
ZGF0ZXMuY2xlYXIoKTsKIH0KIAogdm9pZCBQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmVuZE9mSWNl
Q2FuZGlkYXRlcyhET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlKQpAQCAtNDk4LDQ1
ICs0MTcsNiBAQCB2b2lkIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6ZW5kT2ZJY2VDYW5kaWRhdGVz
KERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pcwogICAgIHByb21pc2UucmVzb2x2ZSgp
OwogfQogCi12b2lkIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6cmVnaXN0ZXJNRE5TTmFtZShjb25z
dCBTdHJpbmcmIGlwQWRkcmVzcykKLXsKLSAgICArK21fd2FpdGluZ0Zvck1ETlNSZWdpc3RyYXRp
b247Ci0gICAgYXV0byYgZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oKm1fcGVlckNvbm5l
Y3Rpb24uc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKLSAgICBhdXRvJiBwcm92aWRlciA9IGRv
Y3VtZW50LnBhZ2UoKS0+bGliV2ViUlRDUHJvdmlkZXIoKTsKLSAgICBwcm92aWRlci5yZWdpc3Rl
ck1ETlNOYW1lKGRvY3VtZW50LmlkZW50aWZpZXIoKSwgaXBBZGRyZXNzLCBbcGVlckNvbm5lY3Rp
b24gPSBtYWtlUmVmKG1fcGVlckNvbm5lY3Rpb24pLCB0aGlzLCBpcEFkZHJlc3NdIChMaWJXZWJS
VENQcm92aWRlcjo6TUROU05hbWVPckVycm9yJiYgcmVzdWx0KSB7Ci0gICAgICAgIGlmIChwZWVy
Q29ubmVjdGlvbi0+aXNTdG9wcGVkKCkpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAg
LS1tX3dhaXRpbmdGb3JNRE5TUmVnaXN0cmF0aW9uOwotICAgICAgICBpZiAoIXJlc3VsdC5oYXNf
dmFsdWUoKSkgewotICAgICAgICAgICAgbV9wZWVyQ29ubmVjdGlvbi5zY3JpcHRFeGVjdXRpb25D
b250ZXh0KCktPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2
ZWw6Oldhcm5pbmcsIG1ha2VTdHJpbmcoIk1ETlMgcmVnaXN0cmF0aW9uIG9mIGEgaG9zdCBjYW5k
aWRhdGUgZmFpbGVkIHdpdGggZXJyb3IgIiwgKHVuc2lnbmVkKXJlc3VsdC5lcnJvcigpKSk7Ci0g
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICB0aGlzLT5maW5pc2hlZFJl
Z2lzdGVyaW5nTUROU05hbWUoaXBBZGRyZXNzLCByZXN1bHQudmFsdWUoKSk7Ci0gICAgfSk7Ci19
Ci0KLXZvaWQgUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpmaW5pc2hlZFJlZ2lzdGVyaW5nTUROU05h
bWUoY29uc3QgU3RyaW5nJiBpcEFkZHJlc3MsIGNvbnN0IFN0cmluZyYgbmFtZSkKLXsKLSAgICBt
X2lwQWRkcmVzc1RvTUROU05hbWVNYXAuYWRkKGlwQWRkcmVzcywgbmFtZSk7Ci0gICAgVmVjdG9y
PFBlbmRpbmdJQ0VDYW5kaWRhdGUqPiBjYW5kaWRhdGVzOwotICAgIGZvciAoYXV0byYgY2FuZGlk
YXRlIDogbV9wZW5kaW5nSUNFQ2FuZGlkYXRlcykgewotICAgICAgICBpZiAoY2FuZGlkYXRlLnNk
cC5maW5kKGlwQWRkcmVzcykgIT0gbm90Rm91bmQpIHsKLSAgICAgICAgICAgIGF1dG8gc2RwID0g
Y2FuZGlkYXRlLnNkcDsKLSAgICAgICAgICAgIHNkcC5yZXBsYWNlKGlwQWRkcmVzcywgbmFtZSk7
Ci0gICAgICAgICAgICBmaXJlSUNFQ2FuZGlkYXRlRXZlbnQoUlRDSWNlQ2FuZGlkYXRlOjpjcmVh
dGUoV1RGTW92ZShzZHApLCBXVEZNb3ZlKGNhbmRpZGF0ZS5taWQpLCBjYW5kaWRhdGUuc2RwTUxp
bmVJbmRleCksIFdURk1vdmUoY2FuZGlkYXRlLnNlcnZlclVSTCkpOwotICAgICAgICAgICAgY2Fu
ZGlkYXRlcy5hcHBlbmQoJmNhbmRpZGF0ZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgbV9wZW5k
aW5nSUNFQ2FuZGlkYXRlcy5yZW1vdmVBbGxNYXRjaGluZyhbJl0gKGNvbnN0IGF1dG8mIGNhbmRp
ZGF0ZSkgewotICAgICAgICByZXR1cm4gY2FuZGlkYXRlcy5jb250YWlucygmY2FuZGlkYXRlKTsK
LSAgICB9KTsKLQotICAgIGlmICghbV93YWl0aW5nRm9yTUROU1JlZ2lzdHJhdGlvbiAmJiBtX2Zp
bmlzaGVkR2F0aGVyaW5nQ2FuZGlkYXRlcykKLSAgICAgICAgZG9uZUdhdGhlcmluZ0NhbmRpZGF0
ZXMoKTsKLX0KLQogdm9pZCBQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OnVwZGF0ZVNpZ25hbGluZ1N0
YXRlKFJUQ1NpZ25hbGluZ1N0YXRlIG5ld1NpZ25hbGluZ1N0YXRlKQogewogICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuaAppbmRleCAxYzI1NTY2MjVlZWJjMmY3
NzYyMzhhODM1ZDM3NDhiMDE2YTNmNTY0Li42ZjNmYjQyYTgwZTJlYzYyZWNhNDE3NDUwZWQ1YmY1
OTJkZDZhYTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1BlZXJDb25uZWN0aW9uQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmgKQEAgLTIwOSw3ICsyMDksNyBAQCBwcm90
ZWN0ZWQ6CiAgICAgdm9pZCBhZGRJY2VDYW5kaWRhdGVTdWNjZWVkZWQoKTsKICAgICB2b2lkIGFk
ZEljZUNhbmRpZGF0ZUZhaWxlZChFeGNlcHRpb24mJik7CiAKLSAgICBTdHJpbmcgZmlsdGVyU0RQ
KFN0cmluZyYmKSBjb25zdDsKKyAgICB2b2lkIHZhbGlkYXRlU0RQKGNvbnN0IFN0cmluZyYpIGNv
bnN0OwogCiAgICAgc3RydWN0IFBlbmRpbmdUcmFja0V2ZW50IHsKICAgICAgICAgUmVmPFJUQ1J0
cFJlY2VpdmVyPiByZWNlaXZlcjsKQEAgLTIyOCw4ICsyMjgsNiBAQCBwcml2YXRlOgogICAgIHZp
cnR1YWwgdm9pZCBlbmRPZkljZUNhbmRpZGF0ZXMoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYp
OwogICAgIHZpcnR1YWwgdm9pZCBkb1N0b3AoKSA9IDA7CiAKLSAgICB2b2lkIHJlZ2lzdGVyTURO
U05hbWUoY29uc3QgU3RyaW5nJiBpcEFkZHJlc3MpOwotCiBwcm90ZWN0ZWQ6CiAgICAgUlRDUGVl
ckNvbm5lY3Rpb24mIG1fcGVlckNvbm5lY3Rpb247CiAKQEAgLTIzNywyNiArMjM1LDE2IEBAIHBy
aXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPFBlZXJDb25uZWN0aW9uOjpTZXNzaW9uRGVzY3Jp
cHRpb25Qcm9taXNlPiBtX29mZmVyQW5zd2VyUHJvbWlzZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
RE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+PiBtX3NldERlc2NyaXB0aW9uUHJvbWlzZTsKIAotICAg
IGJvb2wgbV9zaG91bGRGaWx0ZXJJQ0VDYW5kaWRhdGVzIHsgdHJ1ZSB9OwotICAgIHN0cnVjdCBQ
ZW5kaW5nSUNFQ2FuZGlkYXRlIHsKLSAgICAgICAgLy8gRmllbGRzIGRlc2NyaWJlZCBpbiBodHRw
czovL3d3dy53My5vcmcvVFIvd2VicnRjLyNpZGwtZGVmLXJ0Y2ljZWNhbmRpZGF0ZWluaXQuCi0g
ICAgICAgIFN0cmluZyBzZHA7Ci0gICAgICAgIFN0cmluZyBtaWQ7Ci0gICAgICAgIHVuc2lnbmVk
IHNob3J0IHNkcE1MaW5lSW5kZXg7Ci0gICAgICAgIFN0cmluZyBzZXJ2ZXJVUkw7Ci0gICAgfTsK
LSAgICBWZWN0b3I8UGVuZGluZ0lDRUNhbmRpZGF0ZT4gbV9wZW5kaW5nSUNFQ2FuZGlkYXRlczsK
KyAgICBib29sIG1fc2hvdWxkRmlsdGVySUNFQ2FuZGlkYXRlcyB7IGZhbHNlIH07CiAKICAgICBW
ZWN0b3I8UGVuZGluZ1RyYWNrRXZlbnQ+IG1fcGVuZGluZ1RyYWNrRXZlbnRzOwogCi0gICAgSGFz
aE1hcDxTdHJpbmcsIFN0cmluZz4gbV9pcEFkZHJlc3NUb01ETlNOYW1lTWFwOwogI2lmICFSRUxF
QVNFX0xPR19ESVNBQkxFRAogICAgIFJlZjxjb25zdCBMb2dnZXI+IG1fbG9nZ2VyOwogICAgIGNv
bnN0IHZvaWQqIG1fbG9nSWRlbnRpZmllcjsKICNlbmRpZgogICAgIGJvb2wgbV9uZWdvdGlhdGlv
bk5lZWRlZCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2ZpbmlzaGVkR2F0aGVyaW5nQ2FuZGlkYXRl
cyB7IGZhbHNlIH07Ci0gICAgdWludDY0X3QgbV93YWl0aW5nRm9yTUROU1JlZ2lzdHJhdGlvbiB7
IDAgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0NvbnRyb2xsZXIuY3BwCmluZGV4IDcwZDQwYzZi
ZDViMzI2MmYyY2ZlNjE1ZmJjMmI0NWM2MjljY2Y0M2UuLmNmMzQ1YTQ2MmZjZGIyMTE5ZjdmYmRm
NWViZGRmMDE0NWViYTc2YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENDb250cm9sbGVyLmNwcApAQCAtNzMsNiArNzMsMTAgQEAgYm9vbCBSVEND
b250cm9sbGVyOjpzaG91bGREaXNhYmxlSUNFQ2FuZGlkYXRlRmlsdGVyaW5nKERvY3VtZW50JiBk
b2N1bWVudCkKIAogdm9pZCBSVENDb250cm9sbGVyOjphZGQoUlRDUGVlckNvbm5lY3Rpb24mIGNv
bm5lY3Rpb24pCiB7CisgICAgYXV0byYgZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oKmNv
bm5lY3Rpb24uc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICBpZiAoYXV0byogbmV0d29y
a01hbmFnZXIgPSBkb2N1bWVudC5ydGNOZXR3b3JrTWFuYWdlcigpKQorICAgICAgICBuZXR3b3Jr
TWFuYWdlci0+c2V0SUNFQ2FuZGlkYXRlRmlsdGVyaW5nKCFzaG91bGREaXNhYmxlSUNFQ2FuZGlk
YXRlRmlsdGVyaW5nKGRvY3VtZW50KSk7CisKICAgICBtX3BlZXJDb25uZWN0aW9ucy5hcHBlbmQo
Y29ubmVjdGlvbik7CiAgICAgaWYgKHNob3VsZERpc2FibGVJQ0VDYW5kaWRhdGVGaWx0ZXJpbmco
ZG93bmNhc3Q8RG9jdW1lbnQ+KCpjb25uZWN0aW9uLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkp
KQogICAgICAgICBjb25uZWN0aW9uLmRpc2FibGVJQ0VDYW5kaWRhdGVGaWx0ZXJpbmcoKTsKQEAg
LTg0LDggKzg4LDEzIEBAIHZvaWQgUlRDQ29udHJvbGxlcjo6ZGlzYWJsZUlDRUNhbmRpZGF0ZUZp
bHRlcmluZ0ZvckFsbE9yaWdpbnMoKQogICAgICAgICByZXR1cm47CiAKICAgICBtX3Nob3VsZEZp
bHRlcklDRUNhbmRpZGF0ZXMgPSBmYWxzZTsKLSAgICBmb3IgKFJUQ1BlZXJDb25uZWN0aW9uJiBj
b25uZWN0aW9uIDogbV9wZWVyQ29ubmVjdGlvbnMpCisgICAgZm9yIChSVENQZWVyQ29ubmVjdGlv
biYgY29ubmVjdGlvbiA6IG1fcGVlckNvbm5lY3Rpb25zKSB7CisgICAgICAgIGlmIChhdXRvKiBk
b2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50Pihjb25uZWN0aW9uLnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSkpIHsKKyAgICAgICAgICAgIGlmIChhdXRvKiBuZXR3b3JrTWFuYWdlciA9IGRvY3Vt
ZW50LT5ydGNOZXR3b3JrTWFuYWdlcigpKQorICAgICAgICAgICAgICAgIG5ldHdvcmtNYW5hZ2Vy
LT5zZXRJQ0VDYW5kaWRhdGVGaWx0ZXJpbmcoZmFsc2UpOworICAgICAgICB9CiAgICAgICAgIGNv
bm5lY3Rpb24uZGlzYWJsZUlDRUNhbmRpZGF0ZUZpbHRlcmluZygpOworICAgIH0KIH0KIAogdm9p
ZCBSVENDb250cm9sbGVyOjpkaXNhYmxlSUNFQ2FuZGlkYXRlRmlsdGVyaW5nRm9yRG9jdW1lbnQo
RG9jdW1lbnQmIGRvY3VtZW50KQpAQCAtOTMsMTEgKzEwMiwxNyBAQCB2b2lkIFJUQ0NvbnRyb2xs
ZXI6OmRpc2FibGVJQ0VDYW5kaWRhdGVGaWx0ZXJpbmdGb3JEb2N1bWVudChEb2N1bWVudCYgZG9j
dW1lbnQpCiAgICAgaWYgKCFMaWJXZWJSVENQcm92aWRlcjo6d2ViUlRDQXZhaWxhYmxlKCkpCiAg
ICAgICAgIHJldHVybjsKIAorICAgIGlmIChhdXRvKiBuZXR3b3JrTWFuYWdlciA9IGRvY3VtZW50
LnJ0Y05ldHdvcmtNYW5hZ2VyKCkpCisgICAgICAgIG5ldHdvcmtNYW5hZ2VyLT5zZXRJQ0VDYW5k
aWRhdGVGaWx0ZXJpbmcoZmFsc2UpOworCiAgICAgbV9maWx0ZXJpbmdEaXNhYmxlZE9yaWdpbnMu
YXBwZW5kKFBlZXJDb25uZWN0aW9uT3JpZ2luIHsgZG9jdW1lbnQudG9wT3JpZ2luKCksIGRvY3Vt
ZW50LnNlY3VyaXR5T3JpZ2luKCkgfSk7CiAgICAgZm9yIChSVENQZWVyQ29ubmVjdGlvbiYgY29u
bmVjdGlvbiA6IG1fcGVlckNvbm5lY3Rpb25zKSB7CiAgICAgICAgIGlmIChhdXRvKiBwZWVyQ29u
bmVjdGlvbkRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbm5lY3Rpb24uc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpKSkgewotICAgICAgICAgICAgaWYgKG1hdGNoRG9jdW1lbnRPcmlnaW4o
KnBlZXJDb25uZWN0aW9uRG9jdW1lbnQsIGRvY3VtZW50LnRvcE9yaWdpbigpLCBkb2N1bWVudC5z
ZWN1cml0eU9yaWdpbigpKSkKKyAgICAgICAgICAgIGlmIChtYXRjaERvY3VtZW50T3JpZ2luKCpw
ZWVyQ29ubmVjdGlvbkRvY3VtZW50LCBkb2N1bWVudC50b3BPcmlnaW4oKSwgZG9jdW1lbnQuc2Vj
dXJpdHlPcmlnaW4oKSkpIHsKKyAgICAgICAgICAgICAgICBpZiAoYXV0byogbmV0d29ya01hbmFn
ZXIgPSBwZWVyQ29ubmVjdGlvbkRvY3VtZW50LT5ydGNOZXR3b3JrTWFuYWdlcigpKQorICAgICAg
ICAgICAgICAgICAgICBuZXR3b3JrTWFuYWdlci0+c2V0SUNFQ2FuZGlkYXRlRmlsdGVyaW5nKGZh
bHNlKTsKICAgICAgICAgICAgICAgICBjb25uZWN0aW9uLmRpc2FibGVJQ0VDYW5kaWRhdGVGaWx0
ZXJpbmcoKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIH0KQEAgLTEwOSw4ICsx
MjQsMTMgQEAgdm9pZCBSVENDb250cm9sbGVyOjplbmFibGVJQ0VDYW5kaWRhdGVGaWx0ZXJpbmco
KQogCiAgICAgbV9maWx0ZXJpbmdEaXNhYmxlZE9yaWdpbnMuY2xlYXIoKTsKICAgICBtX3Nob3Vs
ZEZpbHRlcklDRUNhbmRpZGF0ZXMgPSB0cnVlOwotICAgIGZvciAoUlRDUGVlckNvbm5lY3Rpb24m
IGNvbm5lY3Rpb24gOiBtX3BlZXJDb25uZWN0aW9ucykKKyAgICBmb3IgKFJUQ1BlZXJDb25uZWN0
aW9uJiBjb25uZWN0aW9uIDogbV9wZWVyQ29ubmVjdGlvbnMpIHsKICAgICAgICAgY29ubmVjdGlv
bi5lbmFibGVJQ0VDYW5kaWRhdGVGaWx0ZXJpbmcoKTsKKyAgICAgICAgaWYgKGF1dG8qIGRvY3Vt
ZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbm5lY3Rpb24uc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpKSkgeworICAgICAgICAgICAgaWYgKGF1dG8qIG5ldHdvcmtNYW5hZ2VyID0gZG9jdW1lbnQt
PnJ0Y05ldHdvcmtNYW5hZ2VyKCkpCisgICAgICAgICAgICAgICAgbmV0d29ya01hbmFnZXItPnNl
dElDRUNhbmRpZGF0ZUZpbHRlcmluZyh0cnVlKTsKKyAgICAgICAgfQorICAgIH0KIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENOZXR3b3JrTWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENOZXR3b3JrTWFuYWdlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVmMzZmZDQ2MWY4MWFi
YmEyYzAyYmI4MWYxZmI1Zjk5NzgwMjVmZDAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ05ldHdvcmtNYW5hZ2VyLmgKQEAgLTAsMCArMSw0
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJfUlRDKQor
CisjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgUlRDTmV0d29ya01hbmFnZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNv
dW50ZWQ8UlRDTmV0d29ya01hbmFnZXIsIFdURjo6RGVzdHJ1Y3Rpb25UaHJlYWQ6Ok1haW5SdW5M
b29wPiB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+UlRDTmV0d29ya01hbmFnZXIoKSA9IGRlZmF1
bHQ7CisgICAgdmlydHVhbCB2b2lkIHNldElDRUNhbmRpZGF0ZUZpbHRlcmluZyhib29sKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJNRE5TTmFtZXMoKSA9IDA7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX1JUQykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJU
Q01lZGlhRW5kcG9pbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9s
aWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRwb2ludC5jcHAKaW5kZXggNTNjNDRhZGYxMmE5YmVk
NzRjYTVkYjhhOTU2ODAyM2Q4OTkyNjY1NS4uMjIwODdhMzYyZGY2Yzg5MGI1OTliMTFmZDFkNDQ1
OGU5ZWI4YTEzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9saWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRwb2ludC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRwb2ludC5j
cHAKQEAgLTkzLDE1ICs5MywxNSBAQCBib29sIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OnNldENv
bmZpZ3VyYXRpb24oTGliV2ViUlRDUHJvdmlkZXImIGNsaWVudCwgd2VicnRjOgogICAgIGNvbmZp
Z3VyYXRpb24uc2RwX3NlbWFudGljcyA9IHdlYnJ0Yzo6U2RwU2VtYW50aWNzOjprVW5pZmllZFBs
YW47CiAKICAgICBpZiAoIW1fYmFja2VuZCkgeworICAgICAgICBhdXRvJiBkb2N1bWVudCA9IGRv
d25jYXN0PERvY3VtZW50PigqbV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQuY29ubmVjdGlvbigpLnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgICAgIGlmICghbV9ydGNTb2NrZXRGYWN0b3J5
KSB7Ci0gICAgICAgICAgICBhdXRvJiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50PigqbV9w
ZWVyQ29ubmVjdGlvbkJhY2tlbmQuY29ubmVjdGlvbigpLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSk7CiAgICAgICAgICAgICBSZWdpc3RyYWJsZURvbWFpbiBkb21haW4geyBkb2N1bWVudC51cmwo
KSB9OwogICAgICAgICAgICAgYm9vbCBpc0ZpcnN0UGFydHkgPSBkb21haW4gPT0gUmVnaXN0cmFi
bGVEb21haW4oZG9jdW1lbnQuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSk7CiAgICAgICAgICAgICBt
X3J0Y1NvY2tldEZhY3RvcnkgPSBjbGllbnQuY3JlYXRlU29ja2V0RmFjdG9yeShkb2N1bWVudC51
c2VyQWdlbnQoZG9jdW1lbnQudXJsKCkpLCBpc0ZpcnN0UGFydHksIFdURk1vdmUoZG9tYWluKSk7
CiAgICAgICAgICAgICBpZiAoIW1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLnNob3VsZEZpbHRlcklD
RUNhbmRpZGF0ZXMoKSkKICAgICAgICAgICAgICAgICBtX3J0Y1NvY2tldEZhY3RvcnktPmRpc2Fi
bGVSZWxheSgpOwogICAgICAgICB9Ci0gICAgICAgIG1fYmFja2VuZCA9IGNsaWVudC5jcmVhdGVQ
ZWVyQ29ubmVjdGlvbigqdGhpcywgbV9ydGNTb2NrZXRGYWN0b3J5LmdldCgpLCBXVEZNb3ZlKGNv
bmZpZ3VyYXRpb24pKTsKKyAgICAgICAgbV9iYWNrZW5kID0gY2xpZW50LmNyZWF0ZVBlZXJDb25u
ZWN0aW9uKGRvY3VtZW50LmlkZW50aWZpZXIoKSwgKnRoaXMsIG1fcnRjU29ja2V0RmFjdG9yeS5n
ZXQoKSwgV1RGTW92ZShjb25maWd1cmF0aW9uKSk7CiAgICAgICAgIHJldHVybiAhIW1fYmFja2Vu
ZDsKICAgICB9CiAgICAgYXV0byBvbGRDb25maWd1cmF0aW9uID0gbV9iYWNrZW5kLT5HZXRDb25m
aWd1cmF0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5l
Y3Rpb25CYWNrZW5kLmNwcAppbmRleCA1OTYwMmIwOWFlYzllMGFiYjNkMjI3YzMwZjkyODk0ZDRi
YTZkNjI0Li5jNjllMGM2ZDdiZTcwYmUxZDcwMTMwODEzN2Q4ZTM1Y2ZlMmJlM2JkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJS
VENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAK
QEAgLTMxMCw3ICszMTAsNyBAQCBSZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uPiBMaWJXZWJS
VENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmN1cnJlbnRMb2NhbERlc2NyaQogewogICAgIGF1dG8g
ZGVzY3JpcHRpb24gPSBtX2VuZHBvaW50LT5jdXJyZW50TG9jYWxEZXNjcmlwdGlvbigpOwogICAg
IGlmIChkZXNjcmlwdGlvbikKLSAgICAgICAgZGVzY3JpcHRpb24tPnNldFNkcChmaWx0ZXJTRFAo
U3RyaW5nKGRlc2NyaXB0aW9uLT5zZHAoKSkpKTsKKyAgICAgICAgdmFsaWRhdGVTRFAoZGVzY3Jp
cHRpb24tPnNkcCgpKTsKICAgICByZXR1cm4gZGVzY3JpcHRpb247CiB9CiAKQEAgLTMyMyw3ICsz
MjMsNyBAQCBSZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uPiBMaWJXZWJSVENQZWVyQ29ubmVj
dGlvbkJhY2tlbmQ6OnBlbmRpbmdMb2NhbERlc2NyaQogewogICAgIGF1dG8gZGVzY3JpcHRpb24g
PSBtX2VuZHBvaW50LT5wZW5kaW5nTG9jYWxEZXNjcmlwdGlvbigpOwogICAgIGlmIChkZXNjcmlw
dGlvbikKLSAgICAgICAgZGVzY3JpcHRpb24tPnNldFNkcChmaWx0ZXJTRFAoU3RyaW5nKGRlc2Ny
aXB0aW9uLT5zZHAoKSkpKTsKKyAgICAgICAgdmFsaWRhdGVTRFAoZGVzY3JpcHRpb24tPnNkcCgp
KTsKICAgICByZXR1cm4gZGVzY3JpcHRpb247CiB9CiAKQEAgLTMzNiw3ICszMzYsNyBAQCBSZWZQ
dHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uPiBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6
OmxvY2FsRGVzY3JpcHRpb24oKQogewogICAgIGF1dG8gZGVzY3JpcHRpb24gPSBtX2VuZHBvaW50
LT5sb2NhbERlc2NyaXB0aW9uKCk7CiAgICAgaWYgKGRlc2NyaXB0aW9uKQotICAgICAgICBkZXNj
cmlwdGlvbi0+c2V0U2RwKGZpbHRlclNEUChTdHJpbmcoZGVzY3JpcHRpb24tPnNkcCgpKSkpOwor
ICAgICAgICB2YWxpZGF0ZVNEUChkZXNjcmlwdGlvbi0+c2RwKCkpOwogICAgIHJldHVybiBkZXNj
cmlwdGlvbjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IDljZmM1ZjI1ZDA0ZmViZDI5YjJjMWY0ZmUwZGIxODhjMDRhMTE1
MDYuLmU0OWJjZmFmZmY3NGU3YjUxNjg1Njg4NDNmMzNmMDg3MjEyMWM4NGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTExNzIs
NiArMTE3Miw5IEBACiAJCTQxQjg3NzYyMjNERTEwNDUwMDM2MzhCOCAvKiBSZWFsdGltZU1lZGlh
U291cmNlSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDFCODc3NjAyM0RFMTA0MjAwMzYzOEI4IC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VJ
ZGVudGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNDFCQkE4NjYyNTdFMzczQjAwQUM3RjZEIC8qIFNGcmFtZVV0aWxzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTIwOUUyNDI1N0EyRkJCMDAx
MjBBQ0EgLyogU0ZyYW1lVXRpbHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk0MUJGMjA0OTIyQkE3QkU4MDAwNEY4MTIgLyogUmVhbHRpbWVWaWRl
b1NvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDFCRjIwNDAyMkI5NDcxNjAwMDRGODEyIC8qIFJlYWx0aW1lVmlkZW9Tb3VyY2UuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0MUMxNEJDNjI2REU2
REU4MDA2ODVCRjUgLyogUlRDTmV0d29ya01hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQzE0QkM0MjZERTZERTgwMDY4NUJGNSAvKiBSVENO
ZXR3b3JrTWFuYWdlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTQxQzE0QkM3MjZERTg1ODQwMDY4NUJGNSAvKiBMaWJXZWJSVENVdGlscy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFEMUEwNEMyMTNF
RERGRjAwNjNGQjZCIC8qIExpYldlYlJUQ1V0aWxzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDFDMTRCQzkyNkRGNzlENzAwNjg1QkY1IC8qIE1E
TlNSZWdpc3RlckVycm9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0MUMxNEJDODI2REY3OUQ2MDA2ODVCRjUgLyogTUROU1JlZ2lzdGVyRXJyb3IuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MUMzQjhB
MTI2NDlCMUUwMDA0RUQ0REUgLyogQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5h
bFVuaXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQx
QzNCODlGMjY0OUIxQjcwMDRFRDRERSAvKiBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcklu
dGVybmFsVW5pdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTQxQzNCOEEyMjY0OUIxRTUwMDRFRDRERSAvKiBBdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlclVuaXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQxQzNCODlCMjY0OUIxQjYwMDRFRDRERSAvKiBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5k
ZXJlclVuaXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk0MUM3NjBCMTBFREUwM0QzMDBDMTY1NUYgLyogU2NyaXB0U3RhdGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQzc2MEIwMEVERTAzRDMwMEMx
NjU1RiAvKiBTY3JpcHRTdGF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CkBAIC04MDQ0LDYgKzgwNDcsOCBAQAogCQk0MUJDRTg3NzI1RjdBNjdBMDA0
NkMyRTUgLyogUlRDVHJhbnNmb3JtRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUlRDVHJhbnNmb3JtRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDFCRjIwNDAyMkI5NDcxNjAwMDRGODEyIC8qIFJlYWx0aW1lVmlkZW9Tb3VyY2UuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUmVhbHRpbWVWaWRlb1NvdXJjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0MUJGMjA0MjIyQjk0NzE3MDAwNEY4MTIgLyogUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBSZWFsdGltZVZpZGVvU291cmNlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNDFDMTRCQzQyNkRFNkRFODAwNjg1QkY1IC8qIFJUQ05ldHdvcmtN
YW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJUQ05ldHdvcmtNYW5h
Z2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxQzE0QkM4MjZERjc5RDYwMDY4
NUJGNSAvKiBNRE5TUmVnaXN0ZXJFcnJvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBNRE5TUmVnaXN0ZXJFcnJvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
MUMzQjg5QjI2NDlCMUI2MDA0RUQ0REUgLyogQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJV
bml0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUMzQjg5QzI2NDlCMUI2MDA0RUQ0REUg
LyogQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBB
dWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29hLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQxQzNCODlEMjY0OUIxQjYwMDRFRDRERSAvKiBBdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlckNvY29hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF1ZGlvTWVkaWFTdHJlYW1U
cmFja1JlbmRlcmVyQ29jb2EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTcy
NTQsNiArMTcyNTksNyBAQAogCQkJCTMxNkRDQjg5MUU3QTY5OTYwMDFCNUY4NyAvKiBSVENJY2VU
cmFuc3BvcnQuaWRsICovLAogCQkJCTQxNDUxNkUwMjZDQzA0MjEwMEFBQUJFMCAvKiBSVENJY2VU
cmFuc3BvcnRCYWNrZW5kLmggKi8sCiAJCQkJMzE2RENCOEUxRTdBNkM3OTAwMUI1Rjg3IC8qIFJU
Q0ljZVRyYW5zcG9ydFN0YXRlLmlkbCAqLywKKwkJCQk0MUMxNEJDNDI2REU2REU4MDA2ODVCRjUg
LyogUlRDTmV0d29ya01hbmFnZXIuaCAqLywKIAkJCQkwNzM3OTREQzE5RUUyQzUyMDBFNUEwNDUg
LyogUlRDT2ZmZXJBbnN3ZXJPcHRpb25zLmggKi8sCiAJCQkJMzE2RENCMTIxRTc4QkU0MzAwMUI1
Rjg3IC8qIFJUQ09mZmVyQW5zd2VyT3B0aW9ucy5pZGwgKi8sCiAJCQkJMzE2RENCMjgxRTc4RjM5
NTAwMUI1Rjg3IC8qIFJUQ09mZmVyT3B0aW9ucy5oICovLApAQCAtMTczODEsNiArMTczODcsNyBA
QAogCQkJCTA3QjcxMTZCMUQ4OTlFNjMwMDlGMEZGQiAvKiBDYXB0dXJlRGV2aWNlTWFuYWdlci5j
cHAgKi8sCiAJCQkJMDdCNzExNkMxRDg5OUU2MzAwOUYwRkZCIC8qIENhcHR1cmVEZXZpY2VNYW5h
Z2VyLmggKi8sCiAJCQkJNUVCQjg5MzAxQzc3NzdFMTAwQzY1RDQxIC8qIEljZUNhbmRpZGF0ZS5o
ICovLAorCQkJCTQxQzE0QkM4MjZERjc5RDYwMDY4NUJGNSAvKiBNRE5TUmVnaXN0ZXJFcnJvci5o
ICovLAogCQkJCTFCRTVCRkMxMUQ1MTU3MTUwMDE2NjZEOSAvKiBNZWRpYUNvbnN0cmFpbnRzLmNw
cCAqLywKIAkJCQkwNzIyMUI5OTE3Q0YwQUQ0MDA4NDhFNTEgLyogTWVkaWFDb25zdHJhaW50cy5o
ICovLAogCQkJCTQxQjI4QjEzMUY4NTAxQTQwMEZCNTJBQyAvKiBNZWRpYUVuZHBvaW50Q29uZmln
dXJhdGlvbi5jcHAgKi8sCkBAIC0zMzU4Myw2ICszMzU5MCw3IEBACiAJCQkJNDE4MUM1Q0QyNTU1
ODM2OTAwQUVCMEZGIC8qIExpYldlYlJUQ1J0cFRyYW5zZm9ybWFibGVGcmFtZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNDE4MUM1RDEyNTU1ODk1NjAwQUVCMEZGIC8qIExpYldlYlJUQ1J0cFRyYW5z
Zm9ybUJhY2tlbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxMEU0NDYxMjM0MzczRTkwMDAxNzNE
NCAvKiBMaWJXZWJSVENTb2NrZXRJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk0MUMx
NEJDNzI2REU4NTg0MDA2ODVCRjUgLyogTGliV2ViUlRDVXRpbHMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTg0NzMwRDkxMTI0OEYwQjMwMEQzQTlDOSAvKiBMaWdodFNvdXJjZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQjIyMjc5NjUwRDAwQkYyMjAwNzFCNzgyIC8qIExpbmVhckdyYWRpZW50QXR0cmli
dXRlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUIzMUM5MUUxMEFFMUI4RTAwMEM3QjkyIC8qIExp
bmVDbGFtcFZhbHVlLmggaW4gSGVhZGVycyAqLywKQEAgLTMzNjQ2LDYgKzMzNjU0LDcgQEAKIAkJ
CQk0MzkwNDZFQTEyREEyNUU4MTJBRjgwQUMgLyogTWF0aE9wZXJhdG9yLmggaW4gSGVhZGVycyAq
LywKIAkJCQk0OUQ1REMyQzBGNDIzQTczMDA4RjIwRkQgLyogTWF0cml4M0RUcmFuc2Zvcm1PcGVy
YXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5RTkxMUM3MEVGODZENDcwMDlEMENBRiAvKiBN
YXRyaXhUcmFuc2Zvcm1PcGVyYXRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTQxQzE0QkM5MjZE
Rjc5RDcwMDY4NUJGNSAvKiBNRE5TUmVnaXN0ZXJFcnJvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NUNCQzhEQUQxQUFBMzAyMjAwRTFDODAzIC8qIE1lZGlhQWNjZXNzaWJpbGl0eVNvZnRMaW5rLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk5MzFCQ0M2MTExMjRERkNCMDBCRTcwREQgLyogTWVkaWFDYW5T
dGFydExpc3RlbmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRENDOUJDRjIyMzg3RTlBMDBGRkI1
MUMgLyogTWVkaWFDYXBhYmlsaXRpZXNEZWNvZGluZ0luZm8uaCBpbiBIZWFkZXJzICovLApAQCAt
MzQ0NjEsNiArMzQ0NzAsNyBAQAogCQkJCTA3QUI5OTZCMThEQTNDMDEwMDE4NzcxRSAvKiBSVENJ
Y2VTZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxMzU5MTA4MUU3RERDNzMwMEYzMDYzMCAv
KiBSVENJY2VUcmFuc3BvcnRQb2xpY3kuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxMzU5MTA5MUU3
RERDNzMwMEYzMDYzMCAvKiBSVENJY2VUcmFuc3BvcnRTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJNDFDMTRCQzYyNkRFNkRFODAwNjg1QkY1IC8qIFJUQ05ldHdvcmtNYW5hZ2VyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwNzM3OTRGRTE5RjU4NjRFMDBFNUEwNDUgLyogUlRDTm90aWZpZXJzTW9j
ay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDczNzk0REUxOUVFMkM1MjAwRTVBMDQ1IC8qIFJUQ09m
ZmVyQW5zd2VyT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDc4RTA5MjUxN0QxNEQxQzAw
NDIwQUExIC8qIFJUQ1BlZXJDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwCmluZGV4IDk0NjZmZDlmN2Y1NDdmZGQ5YmVmMDRlZjg1N2EyYTZlY2EyYjFmZDgu
Ljk2NDlhNDU2YzJiMDgyMDBkYTVkN2Y3ODk4MGZhYTY2ZWQxMmFhY2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcApAQCAtMjU5NSwxMiArMjU5NSw5IEBAIHZvaWQgRG9jdW1lbnQ6OndpbGxCZVJl
bW92ZWRGcm9tRnJhbWUoKQogICAgIGlmIChtX2hhc1ByZXBhcmVkRm9yRGVzdHJ1Y3Rpb24pCiAg
ICAgICAgIHJldHVybjsKIAotI2lmIFVTRShMSUJXRUJSVEMpCi0gICAgLy8gRklYTUU6IFRoaXMg
c2hvdWxkIGJlIG1vdmVkIHRvIE1vZHVsZXMvbWVkaWFzdHJlYW0uCi0gICAgaWYgKExpYldlYlJU
Q1Byb3ZpZGVyOjp3ZWJSVENBdmFpbGFibGUoKSkgewotICAgICAgICBpZiAoYXV0byogcGFnZSA9
IHRoaXMtPnBhZ2UoKSkKLSAgICAgICAgICAgIHBhZ2UtPmxpYldlYlJUQ1Byb3ZpZGVyKCkudW5y
ZWdpc3Rlck1ETlNOYW1lcyhpZGVudGlmaWVyKCkpOwotICAgIH0KKyNpZiBFTkFCTEUoV0VCX1JU
QykKKyAgICBpZiAobV9ydGNOZXR3b3JrTWFuYWdlcikKKyAgICAgICAgbV9ydGNOZXR3b3JrTWFu
YWdlci0+dW5yZWdpc3Rlck1ETlNOYW1lcygpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoU0VSVklD
RV9XT1JLRVIpCkBAIC01NjE3LDEyICs1NjE0LDkgQEAgdm9pZCBEb2N1bWVudDo6c3VzcGVuZChS
ZWFzb25Gb3JTdXNwZW5zaW9uIHJlYXNvbikKICAgICAgICAgICAgIHZpZXctPmNvbXBvc2l0b3Io
KS5jYW5jZWxDb21wb3NpdGluZ0xheWVyVXBkYXRlKCk7CiAgICAgfQogCi0jaWYgVVNFKExJQldF
QlJUQykKLSAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgbW92ZWQgdG8gTW9kdWxlcy9tZWRp
YXN0cmVhbS4KLSAgICBpZiAoTGliV2ViUlRDUHJvdmlkZXI6OndlYlJUQ0F2YWlsYWJsZSgpKSB7
Ci0gICAgICAgIGlmIChhdXRvKiBwYWdlID0gdGhpcy0+cGFnZSgpKQotICAgICAgICAgICAgcGFn
ZS0+bGliV2ViUlRDUHJvdmlkZXIoKS51bnJlZ2lzdGVyTUROU05hbWVzKGlkZW50aWZpZXIoKSk7
Ci0gICAgfQorI2lmIEVOQUJMRShXRUJfUlRDKQorICAgIGlmIChtX3J0Y05ldHdvcmtNYW5hZ2Vy
KQorICAgICAgICBtX3J0Y05ldHdvcmtNYW5hZ2VyLT51bnJlZ2lzdGVyTUROU05hbWVzKCk7CiAj
ZW5kaWYKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5k
ZXggYWY1ZTc4NTBjYTkyMTVmMjI5MWQ1MDRiMmRmOGU5YzJkMGQ1M2I5Ni4uODIzMDk4M2E2YTYx
ZjE5ZjliOTFhMjcxZDQwMTA0MzU0Nzk0YzNiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTQ5
LDYgKzQ5LDcgQEAKICNpbmNsdWRlICJQYWdlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlBsYXRm
b3JtRXZlbnQuaCIKICNpbmNsdWRlICJQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlm
aWVyLmgiCisjaW5jbHVkZSAiUlRDTmV0d29ya01hbmFnZXIuaCIKICNpbmNsdWRlICJSZWZlcnJl
clBvbGljeS5oIgogI2luY2x1ZGUgIlJlZ2lvbi5oIgogI2luY2x1ZGUgIlJlZ2lzdHJhYmxlRG9t
YWluLmgiCkBAIC03MDgsNiArNzA5LDExIEBAIHB1YmxpYzoKICAgICBTb2NrZXRQcm92aWRlciog
c29ja2V0UHJvdmlkZXIoKSBmaW5hbDsKICAgICBSZWZQdHI8UlRDRGF0YUNoYW5uZWxSZW1vdGVI
YW5kbGVyQ29ubmVjdGlvbj4gY3JlYXRlUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyQ29ubmVj
dGlvbigpIGZpbmFsOwogCisjaWYgRU5BQkxFKFdFQl9SVEMpCisgICAgUlRDTmV0d29ya01hbmFn
ZXIqIHJ0Y05ldHdvcmtNYW5hZ2VyKCkgeyByZXR1cm4gbV9ydGNOZXR3b3JrTWFuYWdlci5nZXQo
KTsgfQorICAgIHZvaWQgc2V0UlRDTmV0d29ya01hbmFnZXIoUmVmPFJUQ05ldHdvcmtNYW5hZ2Vy
PiYmIHJ0Y05ldHdvcmtNYW5hZ2VyKSB7IG1fcnRjTmV0d29ya01hbmFnZXIgPSBXVEZNb3ZlKHJ0
Y05ldHdvcmtNYW5hZ2VyKTsgfQorI2VuZGlmCisKICAgICBib29sIGNhbk5hdmlnYXRlKEZyYW1l
KiB0YXJnZXRGcmFtZSwgY29uc3QgVVJMJiBkZXN0aW5hdGlvblVSTCA9IFVSTCgpKTsKIAogICAg
IGJvb2wgdXNlc1N0eWxlQmFzZWRFZGl0YWJpbGl0eSgpIGNvbnN0OwpAQCAtMjIyMSw2ICsyMjI3
LDEwIEBAIHByaXZhdGU6CiAKICAgICBMaXN0SGFzaFNldDxSZWY8RWxlbWVudD4+IG1fdG9wTGF5
ZXJFbGVtZW50czsKICAgICBVbmlxdWVSZWY8V2hpdGVzcGFjZUNhY2hlPiBtX3doaXRlc3BhY2VD
YWNoZTsKKworI2lmIEVOQUJMRShXRUJfUlRDKQorICAgIFJlZlB0cjxSVENOZXR3b3JrTWFuYWdl
cj4gbV9ydGNOZXR3b3JrTWFuYWdlcjsKKyNlbmRpZgogfTsKIAogRWxlbWVudCogZXZlbnRUYXJn
ZXRFbGVtZW50Rm9yRG9jdW1lbnQoRG9jdW1lbnQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01ETlNSZWdpc3RlckVycm9yLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NRE5TUmVnaXN0ZXJFcnJvci5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
Ljc3YzVkYWZlMzNmYmU2NGU3YTgyNmMxNTFiNmJlM2NhNTJmYTU1NWQKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NRE5TUmVnaXN0ZXJFcnJv
ci5oCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1
ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworZW51bSBjbGFz
cyBNRE5TUmVnaXN0ZXJFcnJvciB7IE5vdEltcGxlbWVudGVkLCBCYWRQYXJhbWV0ZXIsIEROU1NE
LCBJbnRlcm5hbCwgVGltZW91dCB9OworCit9CisKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0
ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6Ok1ETlNSZWdpc3RlckVycm9yPiB7CisgICAg
dXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViQ29yZTo6TUROU1JlZ2lzdGVy
RXJyb3IsCisgICAgICAgIFdlYkNvcmU6Ok1ETlNSZWdpc3RlckVycm9yOjpOb3RJbXBsZW1lbnRl
ZCwKKyAgICAgICAgV2ViQ29yZTo6TUROU1JlZ2lzdGVyRXJyb3I6OkJhZFBhcmFtZXRlciwKKyAg
ICAgICAgV2ViQ29yZTo6TUROU1JlZ2lzdGVyRXJyb3I6OkROU1NELAorICAgICAgICBXZWJDb3Jl
OjpNRE5TUmVnaXN0ZXJFcnJvcjo6SW50ZXJuYWwsCisgICAgICAgIFdlYkNvcmU6Ok1ETlNSZWdp
c3RlckVycm9yOjpUaW1lb3V0CisgICAgPjsKK307CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2Vi
UlRDUHJvdmlkZXIuY3BwCmluZGV4IGM1OTU2MTc4NzJiMjJiOWVjM2Y1MzJkMzQ1YjA4YzE2ZmU2
YmZkNmQuLjVhZjc5YWQ0ODU4Njg0MGY0ODc1N2RlZmU4YTNhNjZlNTZkM2JlY2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJS
VENQcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcApAQCAtMjk5LDcgKzI5OSw3IEBAIHZvaWQg
TGliV2ViUlRDUHJvdmlkZXI6OmVuYWJsZUVudW1lcmF0aW5nQWxsTmV0d29ya0ludGVyZmFjZXMo
KQogICAgIG1fZW5hYmxlRW51bWVyYXRpbmdBbGxOZXR3b3JrSW50ZXJmYWNlcyA9IHRydWU7CiB9
CiAKLXJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlPiBM
aWJXZWJSVENQcm92aWRlcjo6Y3JlYXRlUGVlckNvbm5lY3Rpb24od2VicnRjOjpQZWVyQ29ubmVj
dGlvbk9ic2VydmVyJiBvYnNlcnZlciwgcnRjOjpQYWNrZXRTb2NrZXRGYWN0b3J5Kiwgd2VicnRj
OjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6UlRDQ29uZmlndXJhdGlvbiYmIGNvbmZpZ3VyYXRp
b24pCitydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZT4g
TGliV2ViUlRDUHJvdmlkZXI6OmNyZWF0ZVBlZXJDb25uZWN0aW9uKERvY3VtZW50SWRlbnRpZmll
ciwgd2VicnRjOjpQZWVyQ29ubmVjdGlvbk9ic2VydmVyJiBvYnNlcnZlciwgcnRjOjpQYWNrZXRT
b2NrZXRGYWN0b3J5Kiwgd2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6UlRDQ29uZmln
dXJhdGlvbiYmIGNvbmZpZ3VyYXRpb24pCiB7CiAgICAgLy8gRGVmYXVsdCBXSzEgaW1wbGVtZW50
YXRpb24uCiAgICAgQVNTRVJUKG1fdXNlTmV0d29ya1RocmVhZFdpdGhTb2NrZXRTZXJ2ZXIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRj
L0xpYldlYlJUQ1Byb3ZpZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuaAppbmRleCAxODYyN2VlNTdmNzU4YTA0NzIy
ZDE2MTZmMGY4NzYyODQzNDExNWI3Li45NDIwNzNiMzJlMTdlNTQ2NjllN2VkMjM4YTVmMTkxMTUx
NGIyNDc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9s
aWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuaApAQCAtMjcsNiArMjcs
NyBAQAogCiAjaW5jbHVkZSAiRG9jdW1lbnRJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiTGliV2Vi
UlRDTWFjcm9zLmgiCisjaW5jbHVkZSAiTUROU1JlZ2lzdGVyRXJyb3IuaCIKICNpbmNsdWRlICJS
VENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSA8d3RmL0Nv
bXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL0V4cGVjdGVkLmg+CkBAIC02Niw4ICs2
Nyw2IEBAIGNsYXNzIFJlZ2lzdHJhYmxlRG9tYWluOwogc3RydWN0IFBlZXJDb25uZWN0aW9uRmFj
dG9yeUFuZFRocmVhZHM7CiBzdHJ1Y3QgUlRDUnRwQ2FwYWJpbGl0aWVzOwogCi1lbnVtIGNsYXNz
IE1ETlNSZWdpc3RlckVycm9yIHsgTm90SW1wbGVtZW50ZWQsIEJhZFBhcmFtZXRlciwgRE5TU0Qs
IEludGVybmFsLCBUaW1lb3V0IH07Ci0KIGNsYXNzIFdFQkNPUkVfRVhQT1JUIExpYldlYlJUQ1By
b3ZpZGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKQEAgLTg2LDE4
ICs4NSwxMCBAQCBwdWJsaWM6CiAgICAgdXNpbmcgSVBBZGRyZXNzT3JFcnJvciA9IEV4cGVjdGVk
PFN0cmluZywgTUROU1JlZ2lzdGVyRXJyb3I+OwogICAgIHVzaW5nIE1ETlNOYW1lT3JFcnJvciA9
IEV4cGVjdGVkPFN0cmluZywgTUROU1JlZ2lzdGVyRXJyb3I+OwogCi0gICAgdmlydHVhbCB2b2lk
IHVucmVnaXN0ZXJNRE5TTmFtZXMoRG9jdW1lbnRJZGVudGlmaWVyKSB7IH0KLQotICAgIHZpcnR1
YWwgdm9pZCByZWdpc3Rlck1ETlNOYW1lKERvY3VtZW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5n
JiBpcEFkZHJlc3MsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoTUROU05hbWVPckVycm9yJiYpPiYm
IGNhbGxiYWNrKQotICAgIHsKLSAgICAgICAgVU5VU0VEX1BBUkFNKGlwQWRkcmVzcyk7Ci0gICAg
ICAgIGNhbGxiYWNrKG1ha2VVbmV4cGVjdGVkKE1ETlNSZWdpc3RlckVycm9yOjpOb3RJbXBsZW1l
bnRlZCkpOwotICAgIH0KLQogICAgIHZpcnR1YWwgUmVmUHRyPFJUQ0RhdGFDaGFubmVsUmVtb3Rl
SGFuZGxlckNvbm5lY3Rpb24+IGNyZWF0ZVJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlckNvbm5l
Y3Rpb24oKSB7IHJldHVybiBudWxscHRyOyB9CiAKICNpZiBVU0UoTElCV0VCUlRDKQotICAgIHZp
cnR1YWwgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U+
IGNyZWF0ZVBlZXJDb25uZWN0aW9uKHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25PYnNlcnZlciYsIHJ0
Yzo6UGFja2V0U29ja2V0RmFjdG9yeSosIHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6
OlJUQ0NvbmZpZ3VyYXRpb24mJik7CisgICAgdmlydHVhbCBydGM6OnNjb3BlZF9yZWZwdHI8d2Vi
cnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZT4gY3JlYXRlUGVlckNvbm5lY3Rpb24oRG9jdW1l
bnRJZGVudGlmaWVyLCB3ZWJydGM6OlBlZXJDb25uZWN0aW9uT2JzZXJ2ZXImLCBydGM6OlBhY2tl
dFNvY2tldEZhY3RvcnkqLCB3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpSVENDb25m
aWd1cmF0aW9uJiYpOwogCiAgICAgd2VicnRjOjpQZWVyQ29ubmVjdGlvbkZhY3RvcnlJbnRlcmZh
Y2UqIGZhY3RvcnkoKTsKIApAQCAtMTgwLDE2ICsxNzEsMyBAQCBpbmxpbmUgdm9pZCBMaWJXZWJS
VENQcm92aWRlcjo6c2V0VlA5U3VwcG9ydChib29sIHN1cHBvcnRzVlA5UHJvZmlsZTAsIGJvb2wg
c3VwcAogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotbmFtZXNwYWNlIFdURiB7
Ci10ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6Ok1ETlNSZWdpc3RlckVycm9y
PiB7Ci0gICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKLSAgICAgICAgV2ViQ29yZTo6TURO
U1JlZ2lzdGVyRXJyb3IsCi0gICAgICAgIFdlYkNvcmU6Ok1ETlNSZWdpc3RlckVycm9yOjpOb3RJ
bXBsZW1lbnRlZCwKLSAgICAgICAgV2ViQ29yZTo6TUROU1JlZ2lzdGVyRXJyb3I6OkJhZFBhcmFt
ZXRlciwKLSAgICAgICAgV2ViQ29yZTo6TUROU1JlZ2lzdGVyRXJyb3I6OkROU1NELAotICAgICAg
ICBXZWJDb3JlOjpNRE5TUmVnaXN0ZXJFcnJvcjo6SW50ZXJuYWwsCi0gICAgICAgIFdlYkNvcmU6
Ok1ETlNSZWdpc3RlckVycm9yOjpUaW1lb3V0Ci0gICAgPjsKLX07Ci19CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrTUROU1JlZ2lzdGVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtNRE5TUmVnaXN0
ZXIuY3BwCmluZGV4IGZjNDM1MTEyZjViY2UwYWEzMTIyMGU0MTJmY2U0YzU5ODNmMjhiMDcuLjdh
YTE3YzEzMWYxNjI2ODRjZDI4M2E3YTBlNGMxZDEzMWJlZTg2MWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtNRE5TUmVnaXN0ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtNRE5TUmVnaXN0
ZXIuY3BwCkBAIC05OCwyNyArOTgsMjkgQEAgc3RhdGljIHZvaWQgcmVnaXN0ZXJNRE5TTmFtZUNh
bGxiYWNrKEROU1NlcnZpY2VSZWYsIEROU1JlY29yZFJlZiByZWNvcmQsIEROU1NlcnYKICAgICBN
RE5TX1JFTEVBU0VfTE9HX0lOX0NBTExCQUNLKHJlcXVlc3QtPnNlc3Npb25JRCwgInJlZ2lzdGVy
TUROU05hbWVDYWxsYmFjayB3aXRoIGVycm9yICVkIiwgZXJyb3JDb2RlKTsKIAogICAgIGlmIChl
cnJvckNvZGUpIHsKLSAgICAgICAgcmVxdWVzdC0+Y29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6
V2ViTUROU1JlZ2lzdGVyOjpGaW5pc2hlZFJlZ2lzdGVyaW5nTUROU05hbWUgeyByZXF1ZXN0LT5y
ZXF1ZXN0SWRlbnRpZmllciwgbWFrZVVuZXhwZWN0ZWQoV2ViQ29yZTo6TUROU1JlZ2lzdGVyRXJy
b3I6OkROU1NEKSB9LCAwKTsKKyAgICAgICAgcmVxdWVzdC0+Y29ubmVjdGlvbi0+c2VuZChNZXNz
YWdlczo6V2ViTUROU1JlZ2lzdGVyOjpGaW5pc2hlZFJlZ2lzdGVyaW5nTUROU05hbWUgeyByZXF1
ZXN0LT5yZXF1ZXN0SWRlbnRpZmllciwgcmVxdWVzdC0+bmFtZSwgV2ViQ29yZTo6TUROU1JlZ2lz
dGVyRXJyb3I6OkROU1NEIH0sIDApOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIHJlcXVl
c3QtPmNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OldlYk1ETlNSZWdpc3Rlcjo6RmluaXNoZWRS
ZWdpc3RlcmluZ01ETlNOYW1lIHsgcmVxdWVzdC0+cmVxdWVzdElkZW50aWZpZXIsIHJlcXVlc3Qt
Pm5hbWUgfSwgMCk7CisgICAgcmVxdWVzdC0+Y29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6V2Vi
TUROU1JlZ2lzdGVyOjpGaW5pc2hlZFJlZ2lzdGVyaW5nTUROU05hbWUgeyByZXF1ZXN0LT5yZXF1
ZXN0SWRlbnRpZmllciwgcmVxdWVzdC0+bmFtZSwgeyB9IH0sIDApOwogfQogCiB2b2lkIE5ldHdv
cmtNRE5TUmVnaXN0ZXI6OnJlZ2lzdGVyTUROU05hbWUoTUROU1JlZ2lzdGVySWRlbnRpZmllciBy
ZXF1ZXN0SWRlbnRpZmllciwgV2ViQ29yZTo6RG9jdW1lbnRJZGVudGlmaWVyIGRvY3VtZW50SWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiBpcEFkZHJlc3MpCiB7CisgICAgYXV0byBuYW1lID0gbWFr
ZVN0cmluZyhjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCksICIubG9jYWwiKTsKKwogICAgIERO
U1NlcnZpY2VSZWYgc2VydmljZTsKICAgICBhdXRvIGl0ZXJhdG9yID0gbV9zZXJ2aWNlcy5maW5k
KGRvY3VtZW50SWRlbnRpZmllcik7CiAgICAgaWYgKGl0ZXJhdG9yID09IG1fc2VydmljZXMuZW5k
KCkpIHsKICAgICAgICAgYXV0byBlcnJvciA9IEROU1NlcnZpY2VDcmVhdGVDb25uZWN0aW9uKCZz
ZXJ2aWNlKTsKICAgICAgICAgaWYgKGVycm9yKSB7CiAgICAgICAgICAgICBNRE5TX1JFTEVBU0Vf
TE9HKCJyZWdpc3Rlck1ETlNOYW1lIEROU1NlcnZpY2VDcmVhdGVDb25uZWN0aW9uIGVycm9yICVk
IiwgZXJyb3IpOwotICAgICAgICAgICAgbV9jb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5zZW5kKE1l
c3NhZ2VzOjpXZWJNRE5TUmVnaXN0ZXI6OkZpbmlzaGVkUmVnaXN0ZXJpbmdNRE5TTmFtZSB7IHJl
cXVlc3RJZGVudGlmaWVyLCBtYWtlVW5leHBlY3RlZChXZWJDb3JlOjpNRE5TUmVnaXN0ZXJFcnJv
cjo6RE5TU0QpIH0sIDApOworICAgICAgICAgICAgbV9jb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5z
ZW5kKE1lc3NhZ2VzOjpXZWJNRE5TUmVnaXN0ZXI6OkZpbmlzaGVkUmVnaXN0ZXJpbmdNRE5TTmFt
ZSB7IHJlcXVlc3RJZGVudGlmaWVyLCBuYW1lLCBXZWJDb3JlOjpNRE5TUmVnaXN0ZXJFcnJvcjo6
RE5TU0QgfSwgMCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgZXJy
b3IgPSBETlNTZXJ2aWNlU2V0RGlzcGF0Y2hRdWV1ZShzZXJ2aWNlLCBkaXNwYXRjaF9nZXRfbWFp
bl9xdWV1ZSgpKTsKICAgICAgICAgaWYgKGVycm9yKSB7CiAgICAgICAgICAgICBNRE5TX1JFTEVB
U0VfTE9HKCJyZWdpc3Rlck1ETlNOYW1lIEROU1NlcnZpY2VDcmVhdGVDb25uZWN0aW9uIGVycm9y
ICVkIiwgZXJyb3IpOwotICAgICAgICAgICAgbV9jb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5zZW5k
KE1lc3NhZ2VzOjpXZWJNRE5TUmVnaXN0ZXI6OkZpbmlzaGVkUmVnaXN0ZXJpbmdNRE5TTmFtZSB7
IHJlcXVlc3RJZGVudGlmaWVyLCBtYWtlVW5leHBlY3RlZChXZWJDb3JlOjpNRE5TUmVnaXN0ZXJF
cnJvcjo6RE5TU0QpIH0sIDApOworICAgICAgICAgICAgbV9jb25uZWN0aW9uLmNvbm5lY3Rpb24o
KS5zZW5kKE1lc3NhZ2VzOjpXZWJNRE5TUmVnaXN0ZXI6OkZpbmlzaGVkUmVnaXN0ZXJpbmdNRE5T
TmFtZSB7IHJlcXVlc3RJZGVudGlmaWVyLCBuYW1lLCBXZWJDb3JlOjpNRE5TUmVnaXN0ZXJFcnJv
cjo6RE5TU0QgfSwgMCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAg
QVNTRVJUKHNlcnZpY2UpOwpAQCAtMTI2LDEzICsxMjgsMTIgQEAgdm9pZCBOZXR3b3JrTUROU1Jl
Z2lzdGVyOjpyZWdpc3Rlck1ETlNOYW1lKE1ETlNSZWdpc3RlcklkZW50aWZpZXIgcmVxdWVzdElk
ZW50aWYKICAgICB9IGVsc2UKICAgICAgICAgc2VydmljZSA9IGl0ZXJhdG9yLT52YWx1ZTsKIAot
ICAgIGF1dG8gbmFtZSA9IG1ha2VTdHJpbmcoY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpLCAi
LmxvY2FsIik7Ci0KICAgICBhdXRvIGlwID0gaW5ldF9hZGRyKGlwQWRkcmVzcy51dGY4KCkuZGF0
YSgpKTsKIAorICAgIC8vIEZJWE1FOiBBZGQgSVB2NiBzdXBwb3J0LgogICAgIGlmIChpcCA9PSAo
IGluX2FkZHJfdCkoLTEpKSB7CiAgICAgICAgIE1ETlNfUkVMRUFTRV9MT0coInJlZ2lzdGVyTURO
U05hbWUgaW5ldF9hZGRyIGVycm9yIik7Ci0gICAgICAgIG1fY29ubmVjdGlvbi5jb25uZWN0aW9u
KCkuc2VuZChNZXNzYWdlczo6V2ViTUROU1JlZ2lzdGVyOjpGaW5pc2hlZFJlZ2lzdGVyaW5nTURO
U05hbWUgeyByZXF1ZXN0SWRlbnRpZmllciwgbWFrZVVuZXhwZWN0ZWQoV2ViQ29yZTo6TUROU1Jl
Z2lzdGVyRXJyb3I6OkJhZFBhcmFtZXRlcikgfSwgMCk7CisgICAgICAgIG1fY29ubmVjdGlvbi5j
b25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6V2ViTUROU1JlZ2lzdGVyOjpGaW5pc2hlZFJlZ2lz
dGVyaW5nTUROU05hbWUgeyByZXF1ZXN0SWRlbnRpZmllciwgbmFtZSwgV2ViQ29yZTo6TUROU1Jl
Z2lzdGVyRXJyb3I6OkJhZFBhcmFtZXRlciB9LCAwKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IApAQCAtMTU2LDcgKzE1Nyw3IEBAIHZvaWQgTmV0d29ya01ETlNSZWdpc3Rlcjo6cmVnaXN0ZXJN
RE5TTmFtZShNRE5TUmVnaXN0ZXJJZGVudGlmaWVyIHJlcXVlc3RJZGVudGlmCiAgICAgICAgIHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHBlbmRpbmdSZWdpc3RyYXRpb25SZXF1ZXN0Q291bnQpKTsK
ICAgICBpZiAoZXJyb3IpIHsKICAgICAgICAgTUROU19SRUxFQVNFX0xPRygicmVnaXN0ZXJNRE5T
TmFtZSBETlNTZXJ2aWNlUmVnaXN0ZXJSZWNvcmQgZXJyb3IgJWQiLCBlcnJvcik7Ci0gICAgICAg
IG1fY29ubmVjdGlvbi5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6V2ViTUROU1JlZ2lzdGVy
OjpGaW5pc2hlZFJlZ2lzdGVyaW5nTUROU05hbWUgeyByZXF1ZXN0SWRlbnRpZmllciwgbWFrZVVu
ZXhwZWN0ZWQoV2ViQ29yZTo6TUROU1JlZ2lzdGVyRXJyb3I6OkROU1NEKSB9LCAwKTsKKyAgICAg
ICAgbV9jb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpXZWJNRE5TUmVnaXN0
ZXI6OkZpbmlzaGVkUmVnaXN0ZXJpbmdNRE5TTmFtZSB7IHJlcXVlc3RJZGVudGlmaWVyLCBwZW5k
aW5nUmVxdWVzdC0+bmFtZSwgV2ViQ29yZTo6TUROU1JlZ2lzdGVyRXJyb3I6OkROU1NEIH0sIDAp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIHBlbmRpbmdSZWdpc3RyYXRpb25SZXF1ZXN0
cygpLmFkZChwZW5kaW5nUmVnaXN0cmF0aW9uUmVxdWVzdENvdW50KyssIFdURk1vdmUocGVuZGlu
Z1JlcXVlc3QpKTsKQEAgLTE3MSw3ICsxNzIsOSBAQCB2b2lkIE5ldHdvcmtNRE5TUmVnaXN0ZXI6
OnVucmVnaXN0ZXJNRE5TTmFtZXMoV2ViQ29yZTo6RG9jdW1lbnRJZGVudGlmaWVyKQogdm9pZCBO
ZXR3b3JrTUROU1JlZ2lzdGVyOjpyZWdpc3Rlck1ETlNOYW1lKE1ETlNSZWdpc3RlcklkZW50aWZp
ZXIgcmVxdWVzdElkZW50aWZpZXIsIFdlYkNvcmU6OkRvY3VtZW50SWRlbnRpZmllciBkb2N1bWVu
dElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgaXBBZGRyZXNzKQogewogICAgIE1ETlNfUkVMRUFT
RV9MT0coInJlZ2lzdGVyTUROU05hbWUgbm90IGltcGxlbWVudGVkIik7Ci0gICAgbV9jb25uZWN0
aW9uLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpXZWJNRE5TUmVnaXN0ZXI6OkZpbmlzaGVk
UmVnaXN0ZXJpbmdNRE5TTmFtZSB7IHJlcXVlc3RJZGVudGlmaWVyLCBtYWtlVW5leHBlY3RlZChX
ZWJDb3JlOjpNRE5TUmVnaXN0ZXJFcnJvcjo6Tm90SW1wbGVtZW50ZWQpIH0sIDApOworICAgIGF1
dG8gbmFtZSA9IG1ha2VTdHJpbmcoY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpLCAiLmxvY2Fs
Iik7CisKKyAgICBtX2Nvbm5lY3Rpb24uY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OldlYk1E
TlNSZWdpc3Rlcjo6RmluaXNoZWRSZWdpc3RlcmluZ01ETlNOYW1lIHsgcmVxdWVzdElkZW50aWZp
ZXIsIG5hbWUsIFdlYkNvcmU6Ok1ETlNSZWdpc3RlckVycm9yOjpOb3RJbXBsZW1lbnRlZCB9LCAw
KTsKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIv
U291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCA3ZGJhY2QxOGMwYzIxOGYyOGQ4Y2Q0NDA1
MDI3OGU0ODk4ZGYxYzVjLi40ZTVlNTE0ZDY1NjM4NjI2NWI5YjM3OTU3ODQ4MjRlZTJlOWY1NjNm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJL
aXQvU291cmNlcy50eHQKQEAgLTYzOSw2ICs2MzksNyBAQCBXZWJQcm9jZXNzL05ldHdvcmsvV2Vi
U29ja2V0UHJvdmlkZXIuY3BwCiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0U3RyZWFtLmNw
cAogCiBXZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ05ldHdvcmsuY3BwCitXZWJQ
cm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ05ldHdvcmtNYW5hZ2VyLmNwcAogV2ViUHJv
Y2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHAKIFdlYlByb2Nlc3MvTmV0
d29yay93ZWJydGMvTGliV2ViUlRDUmVzb2x2ZXIuY3BwCiBXZWJQcm9jZXNzL05ldHdvcmsvd2Vi
cnRjL0xpYldlYlJUQ1NvY2tldC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDllNDE2ZWYzNzQ0NGU0MmViZTY4YzBlMTAwMjRiY2Vj
ZmZiMjdmODguLjI3MTRmZmFlZmIzODA1ODVkNzVmNzY1MGM0MGMwN2NlM2I1ZGRmY2QgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzg1
NCw2ICszODU0LDggQEAKIAkJNDFCN0VENkYyMDY5NjU5MDAwODdEODUzIC8qIE5ldHdvcmtNRE5T
UmVnaXN0ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmV0d29y
a01ETlNSZWdpc3Rlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQjdFRDcw
MjA2OTY1OTAwMDg3RDg1MyAvKiBOZXR3b3JrTUROU1JlZ2lzdGVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtNRE5TUmVnaXN0ZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDFCN0VENzEyMDY5NjU5MDAwODdEODUzIC8qIE5ldHdvcmtNRE5TUmVn
aXN0ZXIubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gTmV0d29ya01ETlNSZWdp
c3Rlci5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFDMTRCQzIy
NkRFNkEyRjAwNjg1QkY1IC8qIExpYldlYlJUQ05ldHdvcmtNYW5hZ2VyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IExpYldlYlJUQ05ldHdvcmtNYW5hZ2VyLmNwcDsgcGF0aCA9IE5ldHdvcmsvd2Vi
cnRjL0xpYldlYlJUQ05ldHdvcmtNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNDFDMTRCQzMyNkRFNkEyRjAwNjg1QkY1IC8qIExpYldlYlJUQ05ldHdvcmtNYW5hZ2Vy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IExpYldlYlJUQ05ldHdvcmtNYW5hZ2VyLmg7IHBhdGggPSBOZXR3
b3JrL3dlYnJ0Yy9MaWJXZWJSVENOZXR3b3JrTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0MUMzQjg4NTI2NDQ0QUFCMDA0RUQ0REUgLyogQXVkaW9NZWRpYVN0cmVhbVRy
YWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0MUMzQjg4NjI2NDQ0QUFDMDA0RUQ0REUgLyogQXVkaW9NZWRpYVN0
cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQzNCODg3MjY0NDRBRDMwMDRFRDRERSAv
KiBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdElkZW50aWZpZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRJ
ZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04NTE4LDYgKzg1MjAs
OCBAQAogCQkJCTQxNkY4MDg5MjQ1QzdGRjUwMEI2OEYwMiAvKiBMaWJXZWJSVENOZXR3b3JrLmNw
cCAqLywKIAkJCQk0MTFCMjI2MjFFMzcxMjQ0MDA0RjczNjMgLyogTGliV2ViUlRDTmV0d29yay5o
ICovLAogCQkJCTQxNkY4MDg2MjQ1QjM5NzQwMEI2OEYwMiAvKiBMaWJXZWJSVENOZXR3b3JrLm1l
c3NhZ2VzLmluICovLAorCQkJCTQxQzE0QkMyMjZERTZBMkYwMDY4NUJGNSAvKiBMaWJXZWJSVENO
ZXR3b3JrTWFuYWdlci5jcHAgKi8sCisJCQkJNDFDMTRCQzMyNkRFNkEyRjAwNjg1QkY1IC8qIExp
YldlYlJUQ05ldHdvcmtNYW5hZ2VyLmggKi8sCiAJCQkJNDEzMDc1QTcxREU4NUVFNzAwMzlFQzY5
IC8qIExpYldlYlJUQ1Byb3ZpZGVyLmNwcCAqLywKIAkJCQk0MTMwNzVBODFERTg1RUU3MDAzOUVD
NjkgLyogTGliV2ViUlRDUHJvdmlkZXIuaCAqLywKIAkJCQk0MUZBRjVGNzFFM0MwQjQ3MDAxQUU2
NzggLyogTGliV2ViUlRDUmVzb2x2ZXIuY3BwICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ05ldHdvcmtNYW5hZ2VyLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENOZXR3b3Jr
TWFuYWdlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDFiNDE5OWMyNjUxNzRiZDE0MmY1MWU3MDkxZTJiMDIw
YzY5Mzg2OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL3dlYnJ0Yy9MaWJXZWJSVENOZXR3b3JrTWFuYWdlci5jcHAKQEAgLTAsMCArMSwxNTYgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTGliV2ViUlRDTmV0
d29ya01hbmFnZXIuaCIKKworI2lmIFVTRShMSUJXRUJSVEMpCisKKyNpbmNsdWRlICJXZWJQcm9j
ZXNzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
TGliV2ViUlRDVXRpbHMuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7Cit1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKKworTGliV2ViUlRDTmV0d29ya01hbmFnZXIqIExpYldlYlJUQ05ldHdvcmtNYW5h
Z2VyOjpnZXRPckNyZWF0ZShXZWJDb3JlOjpEb2N1bWVudElkZW50aWZpZXIgaWRlbnRpZmllcikK
K3sKKyAgICBhdXRvKiBkb2N1bWVudCA9IERvY3VtZW50OjphbGxEb2N1bWVudHNNYXAoKS5nZXQo
aWRlbnRpZmllcik7CisgICAgaWYgKCFkb2N1bWVudCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisKKyAgICBhdXRvKiBuZXR3b3JrTWFuYWdlciA9IHN0YXRpY19jYXN0PExpYldlYlJUQ05ldHdv
cmtNYW5hZ2VyKj4oZG9jdW1lbnQtPnJ0Y05ldHdvcmtNYW5hZ2VyKCkpOworICAgIGlmICghbmV0
d29ya01hbmFnZXIpIHsKKyAgICAgICAgYXV0byBuZXdOZXR3b3JrTWFuYWdlciA9IGFkb3B0UmVm
KCpuZXcgTGliV2ViUlRDTmV0d29ya01hbmFnZXIoaWRlbnRpZmllcikpOworICAgICAgICBuZXR3
b3JrTWFuYWdlciA9IG5ld05ldHdvcmtNYW5hZ2VyLnB0cigpOworICAgICAgICBkb2N1bWVudC0+
c2V0UlRDTmV0d29ya01hbmFnZXIoV1RGTW92ZShuZXdOZXR3b3JrTWFuYWdlcikpOworICAgIH0K
KworICAgIHJldHVybiBuZXR3b3JrTWFuYWdlcjsKK30KKworTGliV2ViUlRDTmV0d29ya01hbmFn
ZXI6OkxpYldlYlJUQ05ldHdvcmtNYW5hZ2VyKFdlYkNvcmU6OkRvY3VtZW50SWRlbnRpZmllciBk
b2N1bWVudElkZW50aWZpZXIpCisgICAgOiBtX2RvY3VtZW50SWRlbnRpZmllcihkb2N1bWVudElk
ZW50aWZpZXIpCit7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkubGliV2ViUlRDTmV0d29y
aygpLm1vbml0b3IoKS5hZGRPYnNlcnZlcigqdGhpcyk7Cit9CisKK0xpYldlYlJUQ05ldHdvcmtN
YW5hZ2VyOjp+TGliV2ViUlRDTmV0d29ya01hbmFnZXIoKQoreworICAgIFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLmxpYldlYlJUQ05ldHdvcmsoKS5tb25pdG9yKCkucmVtb3ZlT2JzZXJ2ZXIoKnRo
aXMpOworfQorCit2b2lkIExpYldlYlJUQ05ldHdvcmtNYW5hZ2VyOjp1bnJlZ2lzdGVyTUROU05h
bWVzKCkKK3sKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5saWJXZWJSVENOZXR3b3JrKCku
bWRuc1JlZ2lzdGVyKCkudW5yZWdpc3Rlck1ETlNOYW1lcyhtX2RvY3VtZW50SWRlbnRpZmllcik7
Cit9CisKK3ZvaWQgTGliV2ViUlRDTmV0d29ya01hbmFnZXI6OlN0YXJ0VXBkYXRpbmcoKQorewor
ICAgIGNhbGxPbk1haW5SdW5Mb29wKFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMp
XSB7CisgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAg
ICAgYXV0byYgbW9uaXRvciA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmxpYldlYlJUQ05ldHdv
cmsoKS5tb25pdG9yKCk7CisgICAgICAgIGlmIChtX3JlY2VpdmVkTmV0d29ya0xpc3QpIHsKKyAg
ICAgICAgICAgIFdlYkNvcmU6OkxpYldlYlJUQ1Byb3ZpZGVyOjpjYWxsT25XZWJSVENOZXR3b3Jr
VGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKKyAgICAgICAg
ICAgICAgICBTaWduYWxOZXR3b3Jrc0NoYW5nZWQoKTsKKyAgICAgICAgICAgIH0pOworICAgICAg
ICB9IGVsc2UgaWYgKG1vbml0b3IuZGlkUmVjZWl2ZU5ldHdvcmtMaXN0KCkpCisgICAgICAgICAg
ICBuZXR3b3Jrc0NoYW5nZWQobW9uaXRvci5uZXR3b3JrTGlzdCgpICwgbW9uaXRvci5pcHY0KCks
IG1vbml0b3IuaXB2NigpKTsKKyAgICAgICAgbW9uaXRvci5zdGFydFVwZGF0aW5nKCk7CisgICAg
fSk7Cit9CisKK3ZvaWQgTGliV2ViUlRDTmV0d29ya01hbmFnZXI6OlN0b3BVcGRhdGluZygpCit7
CisgICAgY2FsbE9uTWFpblJ1bkxvb3AoW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldIHsK
KyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkubGliV2ViUlRDTmV0d29yaygpLm1vbml0b3IoKS5zdG9wVXBk
YXRpbmcoKTsKKyAgICB9KTsKK30KKword2VicnRjOjpNZG5zUmVzcG9uZGVySW50ZXJmYWNlKiBM
aWJXZWJSVENOZXR3b3JrTWFuYWdlcjo6R2V0TWRuc1Jlc3BvbmRlcigpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fdXNlTUROU0NhbmRpZGF0ZXMgPyBjb25zdF9jYXN0PExpYldlYlJUQ05ldHdvcmtN
YW5hZ2VyKj4odGhpcykgOiBudWxscHRyOworfQorCit2b2lkIExpYldlYlJUQ05ldHdvcmtNYW5h
Z2VyOjpuZXR3b3Jrc0NoYW5nZWQoY29uc3QgVmVjdG9yPFJUQ05ldHdvcms+JiBuZXR3b3Jrcywg
Y29uc3QgUlRDTmV0d29yazo6SVBBZGRyZXNzJiBpcHY0LCBjb25zdCBSVENOZXR3b3JrOjpJUEFk
ZHJlc3MmIGlwdjYpCit7CisgICAgYm9vbCBmb3JjZVNpZ25hbGluZyA9ICFtX3JlY2VpdmVkTmV0
d29ya0xpc3Q7CisgICAgbV9yZWNlaXZlZE5ldHdvcmtMaXN0ID0gdHJ1ZTsKKworICAgIFdlYkNv
cmU6OkxpYldlYlJUQ1Byb3ZpZGVyOjpjYWxsT25XZWJSVENOZXR3b3JrVGhyZWFkKFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIG5ldHdvcmtzLCBpcHY0LCBpcHY2LCBmb3Jj
ZVNpZ25hbGluZ10geworICAgICAgICBzdGQ6OnZlY3RvcjxydGM6Ok5ldHdvcmsqPiBuZXR3b3Jr
TGlzdChuZXR3b3Jrcy5zaXplKCkpOworICAgICAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGlu
ZGV4IDwgbmV0d29ya3Muc2l6ZSgpOyArK2luZGV4KQorICAgICAgICAgICAgbmV0d29ya0xpc3Rb
aW5kZXhdID0gbmV3IHJ0Yzo6TmV0d29yayhuZXR3b3Jrc1tpbmRleF0udmFsdWUoKSk7CisKKyAg
ICAgICAgYm9vbCBoYXNDaGFuZ2VkOworICAgICAgICBzZXRfZGVmYXVsdF9sb2NhbF9hZGRyZXNz
ZXMoaXB2NC52YWx1ZSwgaXB2Ni52YWx1ZSk7CisgICAgICAgIE1lcmdlTmV0d29ya0xpc3QobmV0
d29ya0xpc3QsICZoYXNDaGFuZ2VkKTsKKyAgICAgICAgaWYgKGhhc0NoYW5nZWQgfHwgZm9yY2VT
aWduYWxpbmcpCisgICAgICAgICAgICBTaWduYWxOZXR3b3Jrc0NoYW5nZWQoKTsKKyAgICB9KTsK
KworfQorCit2b2lkIExpYldlYlJUQ05ldHdvcmtNYW5hZ2VyOjpuZXR3b3JrUHJvY2Vzc0NyYXNo
ZWQoKQoreworICAgIG1fcmVjZWl2ZWROZXR3b3JrTGlzdCA9IGZhbHNlOworICAgIGlmICghV2Vi
Q29yZTo6TGliV2ViUlRDUHJvdmlkZXI6Omhhc1dlYlJUQ1RocmVhZHMoKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgLy8gSW4gY2FzZSB3ZSBoYXZlIGNsaWVudHMgd2FpdGluZyBmb3IgbmV0d29y
a3NDaGFuZ2VkLCB3ZSBjYWxsIFNpZ25hbE5ldHdvcmtzQ2hhbmdlZCB0byBtYWtlIHN1cmUgdGhl
eSBkbyBub3Qgd2FpdCBmb3Igbm90aGluZy4KKyAgICBXZWJDb3JlOjpMaWJXZWJSVENQcm92aWRl
cjo6Y2FsbE9uV2ViUlRDTmV0d29ya1RocmVhZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpXSB7CisgICAgICAgIFNpZ25hbE5ldHdvcmtzQ2hhbmdlZCgpOworICAgIH0pOwor
fQorCit2b2lkIExpYldlYlJUQ05ldHdvcmtNYW5hZ2VyOjpDcmVhdGVOYW1lRm9yQWRkcmVzcyhj
b25zdCBydGM6OklQQWRkcmVzcyYgYWRkcmVzcywgTmFtZUNyZWF0ZWRDYWxsYmFjayBjYWxsYmFj
aykKK3sKKyAgICBjYWxsT25NYWluUnVuTG9vcChbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0
cih0aGlzKSwgYWRkcmVzcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxl
IHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAg
ICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5saWJXZWJSVENOZXR3b3JrKCkubWRuc1JlZ2lzdGVy
KCkucmVnaXN0ZXJNRE5TTmFtZShtX2RvY3VtZW50SWRlbnRpZmllciwgZnJvbVN0ZFN0cmluZyhh
ZGRyZXNzLlRvU3RyaW5nKCkpLCBbYWRkcmVzcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNr
KV0oYXV0byBuYW1lLCBhdXRvIGVycm9yKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIFdlYkNvcmU6
OkxpYldlYlJUQ1Byb3ZpZGVyOjpjYWxsT25XZWJSVENOZXR3b3JrVGhyZWFkKFthZGRyZXNzLCBj
YWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBuYW1lID0gV1RGTW92ZShuYW1lKS5pc29sYXRl
ZENvcHkoKSwgZXJyb3JdIHsKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRihl
cnJvciwgV2ViUlRDLCAiTUROUyByZWdpc3RyYXRpb24gb2YgYSBob3N0IGNhbmRpZGF0ZSBmYWls
ZWQgd2l0aCBlcnJvciAlZCIsICplcnJvcik7CisgICAgICAgICAgICAgICAgLy8gSW4gY2FzZSBv
ZiBlcnJvciwgd2UgcHJvdmlkZSB0aGUgbmFtZSB0byBsZXQgZ2F0aGVyaW5nIGNvbXBsZXRlLgor
ICAgICAgICAgICAgICAgIGNhbGxiYWNrKGFkZHJlc3MsIG5hbWUudXRmOCgpLmRhdGEoKSk7Cisg
ICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9CisKK3ZvaWQgTGliV2ViUlRD
TmV0d29ya01hbmFnZXI6OlJlbW92ZU5hbWVGb3JBZGRyZXNzKGNvbnN0IHJ0Yzo6SVBBZGRyZXNz
JiwgTmFtZVJlbW92ZWRDYWxsYmFjaykKK3sKKyAgICAvLyBMaWJXZWJSVEMgYmFja2VuZCBkZWZp
bmVzIHRoaXMgbWV0aG9kIGJ1dCBkb2VzIG5vdCBjYWxsIGl0LgorICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFVTRShMSUJX
RUJSVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJy
dGMvTGliV2ViUlRDTmV0d29ya01hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENOZXR3b3JrTWFuYWdlci5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdhMjBl
NGVjZjg2MjRhZDdmNjI2OTVlMzViYThhNTdiODdjMmYwNjgKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDTmV0d29ya01h
bmFnZXIuaApAQCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
ZiBVU0UoTElCV0VCUlRDKQorCisjaW5jbHVkZSAiV2ViUlRDTW9uaXRvci5oIgorI2luY2x1ZGUg
PFdlYkNvcmUvTGliV2ViUlRDUHJvdmlkZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1JUQ05ldHdv
cmtNYW5hZ2VyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBMaWJXZWJSVENOZXR3
b3JrTWFuYWdlciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpSVENOZXR3b3JrTWFuYWdlciwgcHVi
bGljIHJ0Yzo6TmV0d29ya01hbmFnZXJCYXNlLCBwdWJsaWMgd2VicnRjOjpNZG5zUmVzcG9uZGVy
SW50ZXJmYWNlLCBwdWJsaWMgV2ViUlRDTW9uaXRvcjo6T2JzZXJ2ZXIgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIHN0YXRpYyBMaWJXZWJSVENOZXR3b3JrTWFu
YWdlciogZ2V0T3JDcmVhdGUoV2ViQ29yZTo6RG9jdW1lbnRJZGVudGlmaWVyKTsKKyAgICB+TGli
V2ViUlRDTmV0d29ya01hbmFnZXIoKTsKKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBMaWJXZWJS
VENOZXR3b3JrTWFuYWdlcihXZWJDb3JlOjpEb2N1bWVudElkZW50aWZpZXIpOworCisgICAgLy8g
V2ViQ29yZTo6UlRDTmV0d29ya01hbmFnZXIKKyAgICB2b2lkIHNldElDRUNhbmRpZGF0ZUZpbHRl
cmluZyhib29sIGRvRmlsdGVyaW5nKSBmaW5hbCB7IG1fdXNlTUROU0NhbmRpZGF0ZXMgPSBkb0Zp
bHRlcmluZzsgfQorICAgIHZvaWQgdW5yZWdpc3Rlck1ETlNOYW1lcygpIGZpbmFsOworCisgICAg
Ly8gd2VicnRjOjpOZXR3b3JrTWFuYWdlckJhc2UKKyAgICB2b2lkIFN0YXJ0VXBkYXRpbmcoKSBm
aW5hbDsKKyAgICB2b2lkIFN0b3BVcGRhdGluZygpIGZpbmFsOworICAgIHdlYnJ0Yzo6TWRuc1Jl
c3BvbmRlckludGVyZmFjZSogR2V0TWRuc1Jlc3BvbmRlcigpIGNvbnN0IGZpbmFsOworCisgICAg
Ly8gd2VicnRjOjpNZG5zUmVzcG9uZGVySW50ZXJmYWNlCisgICAgdm9pZCBDcmVhdGVOYW1lRm9y
QWRkcmVzcyhjb25zdCBydGM6OklQQWRkcmVzcyYsIE5hbWVDcmVhdGVkQ2FsbGJhY2spOworICAg
IHZvaWQgUmVtb3ZlTmFtZUZvckFkZHJlc3MoY29uc3QgcnRjOjpJUEFkZHJlc3MmLCBOYW1lUmVt
b3ZlZENhbGxiYWNrKTsKKworICAgIC8vIFdlYlJUQ01vbml0b3I6Ok9ic2VydmVyCisgICAgdm9p
ZCBuZXR3b3Jrc0NoYW5nZWQoY29uc3QgVmVjdG9yPFJUQ05ldHdvcms+JiwgY29uc3QgUlRDTmV0
d29yazo6SVBBZGRyZXNzJiwgY29uc3QgUlRDTmV0d29yazo6SVBBZGRyZXNzJikgZmluYWw7Cisg
ICAgdm9pZCBuZXR3b3JrUHJvY2Vzc0NyYXNoZWQoKSBmaW5hbDsKKworICAgIERvY3VtZW50SWRl
bnRpZmllciBtX2RvY3VtZW50SWRlbnRpZmllcjsKKyAgICBib29sIG1fdXNlTUROU0NhbmRpZGF0
ZXMgeyB0cnVlIH07CisgICAgYm9vbCBtX3JlY2VpdmVkTmV0d29ya0xpc3QgeyBmYWxzZSB9Owor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQcm92aWRl
ci5jcHAKaW5kZXggOTY4YzlmMzA0YjY1NDgwOWY5OTI2MjU2YzEwMDU1MDdjOTcxMmY1NS4uZjlj
NGE5MGQ4MjFkYWY3YThhYjM5YWZkZDMxNjQyMDU4NTE2M2I3NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDUHJv
dmlkZXIuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjZW5kaWYKIAogI2luY2x1ZGUgIkxpYldlYlJU
Q05ldHdvcmsuaCIKKyNpbmNsdWRlICJMaWJXZWJSVENOZXR3b3JrTWFuYWdlci5oIgogI2luY2x1
ZGUgIlJUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlci5oIgogI2luY2x1ZGUgIldlYlBhZ2UuaCIK
ICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCkBAIC01NCw3ICs1NSw3IEBAIHByaXZhdGU6CiAgICAg
fQogfTsKIAotcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZh
Y2U+IExpYldlYlJUQ1Byb3ZpZGVyOjpjcmVhdGVQZWVyQ29ubmVjdGlvbih3ZWJydGM6OlBlZXJD
b25uZWN0aW9uT2JzZXJ2ZXImIG9ic2VydmVyLCBydGM6OlBhY2tldFNvY2tldEZhY3RvcnkqIHNv
Y2tldEZhY3RvcnksIHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OlJUQ0NvbmZpZ3Vy
YXRpb24mJiBjb25maWd1cmF0aW9uKQorcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6UGVlckNv
bm5lY3Rpb25JbnRlcmZhY2U+IExpYldlYlJUQ1Byb3ZpZGVyOjpjcmVhdGVQZWVyQ29ubmVjdGlv
bihEb2N1bWVudElkZW50aWZpZXIgaWRlbnRpZmllciwgd2VicnRjOjpQZWVyQ29ubmVjdGlvbk9i
c2VydmVyJiBvYnNlcnZlciwgcnRjOjpQYWNrZXRTb2NrZXRGYWN0b3J5KiBzb2NrZXRGYWN0b3J5
LCB3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpSVENDb25maWd1cmF0aW9uJiYgY29u
ZmlndXJhdGlvbikKIHsKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIFBMQVRGT1JNKENPQ09B
KSAmJiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAgICAgaWYgKCFtX2RpZEluaXRpYWxpemVDYWxs
YmFjaykgewpAQCAtNjcsMjIgKzY4LDE3IEBAIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlBl
ZXJDb25uZWN0aW9uSW50ZXJmYWNlPiBMaWJXZWJSVENQcm92aWRlcjo6Y3JlYXRlUGVlCiAKICAg
ICBhdXRvJiBuZXR3b3JrTW9uaXRvciA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmxpYldlYlJU
Q05ldHdvcmsoKS5tb25pdG9yKCk7CiAgICAgbmV0d29ya01vbml0b3Iuc2V0RW51bWVyYXRpbmdB
bGxOZXR3b3JrSW50ZXJmYWNlc0VuYWJsZWQoaXNFbnVtZXJhdGluZ0FsbE5ldHdvcmtJbnRlcmZh
Y2VzRW5hYmxlZCgpKTsKLSAgICByZXR1cm4gV2ViQ29yZTo6TGliV2ViUlRDUHJvdmlkZXI6OmNy
ZWF0ZVBlZXJDb25uZWN0aW9uKG9ic2VydmVyLCBuZXR3b3JrTW9uaXRvciwgKnNvY2tldEZhY3Rv
cnksIFdURk1vdmUoY29uZmlndXJhdGlvbiksIG1ha2VVbmlxdWU8QXN5bmNSZXNvbHZlckZhY3Rv
cnk+KCkpOwotfQogCi12b2lkIExpYldlYlJUQ1Byb3ZpZGVyOjpkaXNhYmxlTm9uTG9jYWxob3N0
Q29ubmVjdGlvbnMoKQotewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmxpYldlYlJUQ05l
dHdvcmsoKS5kaXNhYmxlTm9uTG9jYWxob3N0Q29ubmVjdGlvbnMoKTsKLX0KKyAgICBhdXRvKiBu
ZXR3b3JrTWFuYWdlciA9IExpYldlYlJUQ05ldHdvcmtNYW5hZ2VyOjpnZXRPckNyZWF0ZShpZGVu
dGlmaWVyKTsKKyAgICBpZiAoIW5ldHdvcmtNYW5hZ2VyKQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAotdm9pZCBMaWJXZWJSVENQcm92aWRlcjo6dW5yZWdpc3Rlck1ETlNOYW1lcyhEb2N1bWVu
dElkZW50aWZpZXIgZG9jdW1lbnRJZGVudGlmaWVyKQotewotICAgIFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLmxpYldlYlJUQ05ldHdvcmsoKS5tZG5zUmVnaXN0ZXIoKS51bnJlZ2lzdGVyTUROU05h
bWVzKGRvY3VtZW50SWRlbnRpZmllcik7CisgICAgcmV0dXJuIFdlYkNvcmU6OkxpYldlYlJUQ1By
b3ZpZGVyOjpjcmVhdGVQZWVyQ29ubmVjdGlvbihvYnNlcnZlciwgKm5ldHdvcmtNYW5hZ2VyLCAq
c29ja2V0RmFjdG9yeSwgV1RGTW92ZShjb25maWd1cmF0aW9uKSwgbWFrZVVuaXF1ZTxBc3luY1Jl
c29sdmVyRmFjdG9yeT4oKSk7CiB9CiAKLXZvaWQgTGliV2ViUlRDUHJvdmlkZXI6OnJlZ2lzdGVy
TUROU05hbWUoRG9jdW1lbnRJZGVudGlmaWVyIGRvY3VtZW50SWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiBpcEFkZHJlc3MsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoTUROU05hbWVPckVycm9yJiYp
PiYmIGNhbGxiYWNrKQordm9pZCBMaWJXZWJSVENQcm92aWRlcjo6ZGlzYWJsZU5vbkxvY2FsaG9z
dENvbm5lY3Rpb25zKCkKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5saWJXZWJSVENO
ZXR3b3JrKCkubWRuc1JlZ2lzdGVyKCkucmVnaXN0ZXJNRE5TTmFtZShkb2N1bWVudElkZW50aWZp
ZXIsIGlwQWRkcmVzcywgV1RGTW92ZShjYWxsYmFjaykpOworICAgIFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLmxpYldlYlJUQ05ldHdvcmsoKS5kaXNhYmxlTm9uTG9jYWxob3N0Q29ubmVjdGlvbnMo
KTsKIH0KIAogY2xhc3MgUlRDU29ja2V0RmFjdG9yeSBmaW5hbCA6IHB1YmxpYyBMaWJXZWJSVENQ
cm92aWRlcjo6U3VzcGVuZGFibGVTb2NrZXRGYWN0b3J5IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmgK
aW5kZXggNzJhZDNhNDI5ZmVmYmZhMWQ0Y2FlZjVjMmJmN2M5NTczMDFlMTIwMS4uODgzYWRmY2Fj
OTMwYzA2ZDk1OGQyMzk4ZjI3MGM3NWYxYzY0NGU4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmgK
QEAgLTU0LDEwICs1NCw4IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRy
PFN1c3BlbmRhYmxlU29ja2V0RmFjdG9yeT4gY3JlYXRlU29ja2V0RmFjdG9yeShTdHJpbmcmJiAv
KiB1c2VyQWdlbnQgKi8sIGJvb2wgLyogaXNGaXJzdFBhcnR5ICovLCBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiYmKSBmaW5hbDsKIAotICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlBl
ZXJDb25uZWN0aW9uSW50ZXJmYWNlPiBjcmVhdGVQZWVyQ29ubmVjdGlvbih3ZWJydGM6OlBlZXJD
b25uZWN0aW9uT2JzZXJ2ZXImLCBydGM6OlBhY2tldFNvY2tldEZhY3RvcnkqLCB3ZWJydGM6OlBl
ZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpSVENDb25maWd1cmF0aW9uJiYpIGZpbmFsOworICAgIHJ0
Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlPiBjcmVhdGVQ
ZWVyQ29ubmVjdGlvbihXZWJDb3JlOjpEb2N1bWVudElkZW50aWZpZXIsIHdlYnJ0Yzo6UGVlckNv
bm5lY3Rpb25PYnNlcnZlciYsIHJ0Yzo6UGFja2V0U29ja2V0RmFjdG9yeSosIHdlYnJ0Yzo6UGVl
ckNvbm5lY3Rpb25JbnRlcmZhY2U6OlJUQ0NvbmZpZ3VyYXRpb24mJikgZmluYWw7CiAKLSAgICB2
b2lkIHVucmVnaXN0ZXJNRE5TTmFtZXMoV2ViQ29yZTo6RG9jdW1lbnRJZGVudGlmaWVyKSBmaW5h
bDsKLSAgICB2b2lkIHJlZ2lzdGVyTUROU05hbWUoV2ViQ29yZTo6RG9jdW1lbnRJZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmIGlwQWRkcmVzcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChNRE5TTmFt
ZU9yRXJyb3ImJik+JiYpIGZpbmFsOwogICAgIHZvaWQgZGlzYWJsZU5vbkxvY2FsaG9zdENvbm5l
Y3Rpb25zKCkgZmluYWw7CiAgICAgdm9pZCBzdGFydGVkTmV0d29ya1RocmVhZCgpIGZpbmFsOwog
ICAgIFJlZlB0cjxXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXJDb25uZWN0aW9u
PiBjcmVhdGVSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXJDb25uZWN0aW9uKCkgZmluYWw7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvV2ViTURO
U1JlZ2lzdGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9X
ZWJNRE5TUmVnaXN0ZXIuY3BwCmluZGV4IDUxNTkwZjlhY2NlNjI0NDA2OGIxNDdjZTZhOWM3YzE4
MjU3NTc3NjEuLjc2MDIwN2VhNTliY2EyNTQ1MjJmNTZjNTlhNTI0NWU1OTVhOGRlMmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJNRE5TUmVn
aXN0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9X
ZWJNRE5TUmVnaXN0ZXIuY3BwCkBAIC0zNiwyMiArMzYsMjIgQEAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLXZvaWQgV2ViTUROU1JlZ2lzdGVyOjpmaW5p
c2hlZFJlZ2lzdGVyaW5nTUROU05hbWUoTUROU1JlZ2lzdGVySWRlbnRpZmllciBpZGVudGlmaWVy
LCBMaWJXZWJSVENQcm92aWRlcjo6TUROU05hbWVPckVycm9yJiYgcmVzdWx0KQordm9pZCBXZWJN
RE5TUmVnaXN0ZXI6OmZpbmlzaGVkUmVnaXN0ZXJpbmdNRE5TTmFtZShNRE5TUmVnaXN0ZXJJZGVu
dGlmaWVyIGlkZW50aWZpZXIsIFN0cmluZyYmIG5hbWUsIHN0ZDo6b3B0aW9uYWw8TUROU1JlZ2lz
dGVyRXJyb3I+IGVycm9yKQogewogICAgIGF1dG8gcGVuZGluZ1JlZ2lzdHJhdGlvbiA9IG1fcGVu
ZGluZ1JlZ2lzdHJhdGlvbnMudGFrZShpZGVudGlmaWVyKTsKICAgICBpZiAoIXBlbmRpbmdSZWdp
c3RyYXRpb24uY2FsbGJhY2spCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChyZXN1bHQuaGFz
X3ZhbHVlKCkpIHsKKyAgICBpZiAoIWVycm9yKSB7CiAgICAgICAgIGF1dG8gaXRlcmF0b3IgPSBt
X3JlZ2lzdGVyaW5nRG9jdW1lbnRzLmZpbmQocGVuZGluZ1JlZ2lzdHJhdGlvbi5kb2N1bWVudElk
ZW50aWZpZXIpOwogICAgICAgICBpZiAoaXRlcmF0b3IgPT0gbV9yZWdpc3RlcmluZ0RvY3VtZW50
cy5lbmQoKSkgewotICAgICAgICAgICAgcGVuZGluZ1JlZ2lzdHJhdGlvbi5jYWxsYmFjayhtYWtl
VW5leHBlY3RlZChXZWJDb3JlOjpNRE5TUmVnaXN0ZXJFcnJvcjo6RE5TU0QpKTsKKyAgICAgICAg
ICAgIHBlbmRpbmdSZWdpc3RyYXRpb24uY2FsbGJhY2sobmFtZSwgV2ViQ29yZTo6TUROU1JlZ2lz
dGVyRXJyb3I6OkROU1NEKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAg
ICBpdGVyYXRvci0+dmFsdWUuYWRkKHBlbmRpbmdSZWdpc3RyYXRpb24uaXBBZGRyZXNzLCByZXN1
bHQudmFsdWUoKSk7CisgICAgICAgIGl0ZXJhdG9yLT52YWx1ZS5hZGQocGVuZGluZ1JlZ2lzdHJh
dGlvbi5pcEFkZHJlc3MsIG5hbWUpOwogICAgIH0KIAotICAgIHBlbmRpbmdSZWdpc3RyYXRpb24u
Y2FsbGJhY2soV1RGTW92ZShyZXN1bHQpKTsKKyAgICBwZW5kaW5nUmVnaXN0cmF0aW9uLmNhbGxi
YWNrKG5hbWUsIGVycm9yKTsKIH0KIAogdm9pZCBXZWJNRE5TUmVnaXN0ZXI6OnVucmVnaXN0ZXJN
RE5TTmFtZXMoRG9jdW1lbnRJZGVudGlmaWVyIGlkZW50aWZpZXIpCkBAIC02Myw3ICs2Myw3IEBA
IHZvaWQgV2ViTUROU1JlZ2lzdGVyOjp1bnJlZ2lzdGVyTUROU05hbWVzKERvY3VtZW50SWRlbnRp
ZmllciBpZGVudGlmaWVyKQogICAgIGNvbm5lY3Rpb24uc2VuZChNZXNzYWdlczo6TmV0d29ya01E
TlNSZWdpc3Rlcjo6VW5yZWdpc3Rlck1ETlNOYW1lcyB7IGlkZW50aWZpZXIgfSwgMCk7CiB9CiAK
LXZvaWQgV2ViTUROU1JlZ2lzdGVyOjpyZWdpc3Rlck1ETlNOYW1lKERvY3VtZW50SWRlbnRpZmll
ciBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGlwQWRkcmVzcywgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChMaWJXZWJSVENQcm92aWRlcjo6TUROU05hbWVPckVycm9yJiYpPiYmIGNhbGxiYWNrKQor
dm9pZCBXZWJNRE5TUmVnaXN0ZXI6OnJlZ2lzdGVyTUROU05hbWUoRG9jdW1lbnRJZGVudGlmaWVy
IGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgaXBBZGRyZXNzLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IFN0cmluZyYsIHN0ZDo6b3B0aW9uYWw8TUROU1JlZ2lzdGVyRXJyb3I+KT4mJiBj
YWxsYmFjaykKIHsKICAgICBhdXRvJiBtYXAgPSBtX3JlZ2lzdGVyaW5nRG9jdW1lbnRzLmVuc3Vy
ZShpZGVudGlmaWVyLCBbXSB7CiAgICAgICAgIHJldHVybiBIYXNoTWFwPFN0cmluZywgU3RyaW5n
PiB7IH07CkBAIC03MSwxNiArNzEsMTcgQEAgdm9pZCBXZWJNRE5TUmVnaXN0ZXI6OnJlZ2lzdGVy
TUROU05hbWUoRG9jdW1lbnRJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFN0cmkKIAogICAg
IGF1dG8gaXRlcmF0b3IgPSBtYXAuZmluZChpcEFkZHJlc3MpOwogICAgIGlmIChpdGVyYXRvciAh
PSBtYXAuZW5kKCkpIHsKLSAgICAgICAgY2FsbGJhY2soaXRlcmF0b3ItPnZhbHVlKTsKKyAgICAg
ICAgY2FsbGJhY2soaXRlcmF0b3ItPnZhbHVlLCB7IH0pOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCiAgICAgYXV0byByZXF1ZXN0SWRlbnRpZmllciA9IE1ETlNSZWdpc3RlcklkZW50aWZpZXI6
OmdlbmVyYXRlKCk7CiAgICAgbV9wZW5kaW5nUmVnaXN0cmF0aW9ucy5hZGQocmVxdWVzdElkZW50
aWZpZXIsIFBlbmRpbmdSZWdpc3RyYXRpb24geyBXVEZNb3ZlKGNhbGxiYWNrKSwgaWRlbnRpZmll
ciwgaXBBZGRyZXNzIH0pOwogCisgICAgLy8gRklYTUU6IFVzZSBhc3luYyByZXBseS4KICAgICBh
dXRvJiBjb25uZWN0aW9uID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpOwogICAgIGlmICghY29ubmVjdGlvbi5zZW5k
KE1lc3NhZ2VzOjpOZXR3b3JrTUROU1JlZ2lzdGVyOjpSZWdpc3Rlck1ETlNOYW1lIHsgcmVxdWVz
dElkZW50aWZpZXIsIGlkZW50aWZpZXIsIGlwQWRkcmVzcyB9LCAwKSkKLSAgICAgICAgZmluaXNo
ZWRSZWdpc3RlcmluZ01ETlNOYW1lKHJlcXVlc3RJZGVudGlmaWVyLCBtYWtlVW5leHBlY3RlZChN
RE5TUmVnaXN0ZXJFcnJvcjo6SW50ZXJuYWwpKTsKKyAgICAgICAgZmluaXNoZWRSZWdpc3Rlcmlu
Z01ETlNOYW1lKHJlcXVlc3RJZGVudGlmaWVyLCB7IH0sIE1ETlNSZWdpc3RlckVycm9yOjpJbnRl
cm5hbCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1dlYk1ETlNSZWdpc3Rlci5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1dlYk1ETlNSZWdpc3Rlci5oCmluZGV4
IDBjMGY2MTMzYWY0NjhjOWViYjhjNjdhMmFlNGU4YzlhNzMzZWU2YWQuLjJjMGZmMGU0NjY1MTFm
OTc4ZmI4MDkyNzIwYWYwNzNkYmY1MzhmYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJNRE5TUmVnaXN0ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvV2ViTUROU1JlZ2lzdGVyLmgKQEAgLTQ2LDE1
ICs0NiwxNSBAQCBwdWJsaWM6CiAgICAgV2ViTUROU1JlZ2lzdGVyKCkgPSBkZWZhdWx0OwogCiAg
ICAgdm9pZCB1bnJlZ2lzdGVyTUROU05hbWVzKFdlYkNvcmU6OkRvY3VtZW50SWRlbnRpZmllcik7
Ci0gICAgdm9pZCByZWdpc3Rlck1ETlNOYW1lKFdlYkNvcmU6OkRvY3VtZW50SWRlbnRpZmllciwg
Y29uc3QgU3RyaW5nJiBpcEFkZHJlc3MsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6
TGliV2ViUlRDUHJvdmlkZXI6Ok1ETlNOYW1lT3JFcnJvciYmKT4mJik7CisgICAgdm9pZCByZWdp
c3Rlck1ETlNOYW1lKFdlYkNvcmU6OkRvY3VtZW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBp
cEFkZHJlc3MsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJiwgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpNRE5TUmVnaXN0ZXJFcnJvcj4pPiYmKTsKIAogICAgIHZvaWQgZGlkUmVj
ZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CiAKIHByaXZhdGU6
Ci0gICAgdm9pZCBmaW5pc2hlZFJlZ2lzdGVyaW5nTUROU05hbWUoTUROU1JlZ2lzdGVySWRlbnRp
ZmllciwgV2ViQ29yZTo6TGliV2ViUlRDUHJvdmlkZXI6Ok1ETlNOYW1lT3JFcnJvciYmKTsKKyAg
ICB2b2lkIGZpbmlzaGVkUmVnaXN0ZXJpbmdNRE5TTmFtZShNRE5TUmVnaXN0ZXJJZGVudGlmaWVy
LCBTdHJpbmcmJiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpNRE5TUmVnaXN0ZXJFcnJvcj4pOwog
CiAgICAgc3RydWN0IFBlbmRpbmdSZWdpc3RyYXRpb24gewotICAgICAgICBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFdlYkNvcmU6OkxpYldlYlJUQ1Byb3ZpZGVyOjpNRE5TTmFtZU9yRXJyb3ImJik+
IGNhbGxiYWNrOworICAgICAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYs
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6TUROU1JlZ2lzdGVyRXJyb3I+KT4gY2FsbGJhY2s7CiAg
ICAgICAgIFdlYkNvcmU6OkRvY3VtZW50SWRlbnRpZmllciBkb2N1bWVudElkZW50aWZpZXI7CiAg
ICAgICAgIFN0cmluZyBpcEFkZHJlc3M7CiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJNRE5TUmVnaXN0ZXIubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvV2ViTUROU1JlZ2lzdGVy
Lm1lc3NhZ2VzLmluCmluZGV4IGFiMTJhMWUwMTkyNmQ2YWZjYjRjMjQ3OGVkNTNmNWMzNjJhODhi
OWIuLmYxZWE1YzczMDZkMmEwYzZkZTlmMWI4MTIwNzYzZTlmZDkzMWRhNTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJNRE5TUmVnaXN0ZXIu
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRj
L1dlYk1ETlNSZWdpc3Rlci5tZXNzYWdlcy5pbgpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0
IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChD
KSAyMDE4LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0yMyw3ICsyMyw3IEBACiAjaWYgRU5BQkxFKFdFQl9SVEMpCiAK
IG1lc3NhZ2VzIC0+IFdlYk1ETlNSZWdpc3RlciBOb3RSZWZDb3VudGVkIHsKLSAgICB2b2lkIEZp
bmlzaGVkUmVnaXN0ZXJpbmdNRE5TTmFtZShXZWJLaXQ6Ok1ETlNSZWdpc3RlcklkZW50aWZpZXIg
aWRlbnRpZmllciwgV2ViQ29yZTo6TGliV2ViUlRDUHJvdmlkZXI6Ok1ETlNOYW1lT3JFcnJvciBy
ZXN1bHQpCisgICAgdm9pZCBGaW5pc2hlZFJlZ2lzdGVyaW5nTUROU05hbWUoV2ViS2l0OjpNRE5T
UmVnaXN0ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFN0cmluZyBtZG5zTmFtZSwgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpNRE5TUmVnaXN0ZXJFcnJvcj4gZXJyb3IpCiB9CiAKICNlbmRpZiAvLyBF
TkFCTEUoV0VCX1JUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL3dlYnJ0Yy9XZWJSVENNb25pdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL3dlYnJ0Yy9XZWJSVENNb25pdG9yLmNwcAppbmRleCAwZjlkYWQyZDFkMjlkMGIzMDc5
ZDM4NzFiN2UxNDU0MTUyOTA0OTM2Li5kMGNiOThiZTg4MGJiNjEzZmRhMjMxNTAyZTY3MDJjMDRh
ZjIwMjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJy
dGMvV2ViUlRDTW9uaXRvci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvd2VicnRjL1dlYlJUQ01vbml0b3IuY3BwCkBAIC0zMyw4ICszMyw2IEBACiAjaW5jbHVkZSAi
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiTmV0d29ya1JUQ01vbml0b3JN
ZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0xp
YldlYlJUQ01hY3Jvcy5oPgotI2luY2x1ZGUgPHdlYnJ0Yy9ydGNfYmFzZS9uZXRfaGVscGVycy5o
PgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAt
NTMsNjcgKzUxLDQzIEBAIHZvaWQgV2ViUlRDTW9uaXRvcjo6c2V0RW51bWVyYXRpbmdBbGxOZXR3
b3JrSW50ZXJmYWNlc0VuYWJsZWQoYm9vbCBlbmFibGVkKQogICAgIG1fZW5hYmxlRW51bWVyYXRp
bmdBbGxOZXR3b3JrSW50ZXJmYWNlcyA9IGVuYWJsZWQ7CiB9CiAKLXZvaWQgV2ViUlRDTW9uaXRv
cjo6U3RhcnRVcGRhdGluZygpCit2b2lkIFdlYlJUQ01vbml0b3I6OnN0YXJ0VXBkYXRpbmcoKQog
ewotICAgIFdFQlJUQ19SRUxFQVNFX0xPRygiU3RhcnRVcGRhdGluZyIpOwotICAgIGlmIChtX3Jl
Y2VpdmVkTmV0d29ya0xpc3QpIHsKLSAgICAgICAgV2ViQ29yZTo6TGliV2ViUlRDUHJvdmlkZXI6
OmNhbGxPbldlYlJUQ05ldHdvcmtUaHJlYWQoW3RoaXNdIHsKLSAgICAgICAgICAgIFNpZ25hbE5l
dHdvcmtzQ2hhbmdlZCgpOwotICAgICAgICB9KTsKLSAgICB9Ci0KLSAgICBzZW5kT25NYWluVGhy
ZWFkKFt0aGlzXShhdXRvJiBjb25uZWN0aW9uKSB7Ci0gICAgICAgIFdFQlJUQ19SRUxFQVNFX0xP
RygiU3RhcnRVcGRhdGluZyAtIEFza2luZyBuZXR3b3JrIHByb2Nlc3MgdG8gc3RhcnQgdXBkYXRp
bmciKTsKLSAgICAgICAgY29ubmVjdGlvbi5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUlRDTW9uaXRv
cjo6U3RhcnRVcGRhdGluZ0lmTmVlZGVkKG1fZW5hYmxlRW51bWVyYXRpbmdBbGxOZXR3b3JrSW50
ZXJmYWNlcyksIDApOwotICAgIH0pOworICAgIFdFQlJUQ19SRUxFQVNFX0xPRygiU3RhcnRVcGRh
dGluZyAtIEFza2luZyBuZXR3b3JrIHByb2Nlc3MgdG8gc3RhcnQgdXBkYXRpbmciKTsKKworICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigp
LmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUlRDTW9uaXRvcjo6U3RhcnRVcGRh
dGluZ0lmTmVlZGVkKG1fZW5hYmxlRW51bWVyYXRpbmdBbGxOZXR3b3JrSW50ZXJmYWNlcyksIDAp
OwogICAgICsrbV9jbGllbnRDb3VudDsKIH0KIAotdm9pZCBXZWJSVENNb25pdG9yOjpTdG9wVXBk
YXRpbmcoKQordm9pZCBXZWJSVENNb25pdG9yOjpzdG9wVXBkYXRpbmcoKQogewogICAgIFdFQlJU
Q19SRUxFQVNFX0xPRygiU3RvcFVwZGF0aW5nIik7CisKICAgICBBU1NFUlQobV9jbGllbnRDb3Vu
dCk7CiAgICAgaWYgKC0tbV9jbGllbnRDb3VudCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgc2Vu
ZE9uTWFpblRocmVhZChbdGhpc10oYXV0byYgY29ubmVjdGlvbikgewotICAgICAgICBXRUJSVENf
UkVMRUFTRV9MT0coIlN0b3BVcGRhdGluZyAtIEFza2luZyBuZXR3b3JrIHByb2Nlc3MgdG8gc3Rv
cCB1cGRhdGluZyIpOwotICAgICAgICBjb25uZWN0aW9uLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtS
VENNb25pdG9yOjpTdG9wVXBkYXRpbmcoKSwgMCk7Ci0gICAgfSk7CisgICAgV0VCUlRDX1JFTEVB
U0VfTE9HKCJTdG9wVXBkYXRpbmcgLSBBc2tpbmcgbmV0d29yayBwcm9jZXNzIHRvIHN0b3AgdXBk
YXRpbmciKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya1JUQ01vbml0
b3I6OlN0b3BVcGRhdGluZygpLCAwKTsKIH0KIAotdm9pZCBXZWJSVENNb25pdG9yOjpuZXR3b3Jr
c0NoYW5nZWQoY29uc3QgVmVjdG9yPFJUQ05ldHdvcms+JiBuZXR3b3JrcywgY29uc3QgUlRDTmV0
d29yazo6SVBBZGRyZXNzJiBpcHY0LCBjb25zdCBSVENOZXR3b3JrOjpJUEFkZHJlc3MmIGlwdjYp
Cit2b2lkIFdlYlJUQ01vbml0b3I6Om5ldHdvcmtzQ2hhbmdlZChWZWN0b3I8UlRDTmV0d29yaz4m
JiBuZXR3b3JrTGlzdCwgUlRDTmV0d29yazo6SVBBZGRyZXNzJiYgaXB2NCwgUlRDTmV0d29yazo6
SVBBZGRyZXNzJiYgaXB2NikKIHsKICAgICBXRUJSVENfUkVMRUFTRV9MT0coIm5ldHdvcmtzQ2hh
bmdlZCIpOwotICAgIC8vIE5vIG5lZWQgdG8gcHJvdGVjdCAndGhpcycgYXMgaXQgaGFzIHRoZSBs
aWZldGltZSBvZiBMaWJXZWJSVEMgd2hpY2ggaGFzIHRoZSBsaWZldGltZSBvZiB0aGUgd2ViIHBy
b2Nlc3MuCi0gICAgV2ViQ29yZTo6TGliV2ViUlRDUHJvdmlkZXI6OmNhbGxPbldlYlJUQ05ldHdv
cmtUaHJlYWQoW3RoaXMsIG5ldHdvcmtzLCBpcHY0LCBpcHY2XSB7Ci0gICAgICAgIFdFQlJUQ19S
RUxFQVNFX0xPRygibmV0d29ya3NDaGFuZ2VkIC0gU2lnbmFsaW5nIik7Ci0gICAgICAgIHN0ZDo6
dmVjdG9yPHJ0Yzo6TmV0d29yayo+IG5ldHdvcmtMaXN0KG5ldHdvcmtzLnNpemUoKSk7Ci0gICAg
ICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBuZXR3b3Jrcy5zaXplKCk7ICsraW5k
ZXgpCi0gICAgICAgICAgICBuZXR3b3JrTGlzdFtpbmRleF0gPSBuZXcgcnRjOjpOZXR3b3JrKG5l
dHdvcmtzW2luZGV4XS52YWx1ZSgpKTsKLQotICAgICAgICBib29sIGZvcmNlU2lnbmFsaW5nID0g
IW1fcmVjZWl2ZWROZXR3b3JrTGlzdDsKLSAgICAgICAgbV9yZWNlaXZlZE5ldHdvcmtMaXN0ID0g
dHJ1ZTsKLQotICAgICAgICBib29sIGhhc0NoYW5nZWQ7Ci0gICAgICAgIHNldF9kZWZhdWx0X2xv
Y2FsX2FkZHJlc3NlcyhpcHY0LnZhbHVlLCBpcHY2LnZhbHVlKTsKLSAgICAgICAgTWVyZ2VOZXR3
b3JrTGlzdChuZXR3b3JrTGlzdCwgJmhhc0NoYW5nZWQpOwotICAgICAgICBpZiAoaGFzQ2hhbmdl
ZCB8fCBmb3JjZVNpZ25hbGluZykKLSAgICAgICAgICAgIFNpZ25hbE5ldHdvcmtzQ2hhbmdlZCgp
OwogCi0gICAgfSk7CisgICAgbV9kaWRSZWNlaXZlTmV0d29ya0xpc3QgPSB0cnVlOworICAgIG1f
bmV0d29ya0xpc3QgPSBXVEZNb3ZlKG5ldHdvcmtMaXN0KTsKKyAgICBtX2lwdjQgPSBXVEZNb3Zl
KGlwdjQpOworICAgIG1faXB2NiA9IFdURk1vdmUoaXB2Nik7CisKKyAgICBmb3IgKGF1dG8mIG9i
c2VydmVyIDogbV9vYnNlcnZlcnMpCisgICAgICAgIG9ic2VydmVyLm5ldHdvcmtzQ2hhbmdlZCht
X25ldHdvcmtMaXN0LCBtX2lwdjQsIG1faXB2Nik7CiB9CiAKIHZvaWQgV2ViUlRDTW9uaXRvcjo6
bmV0d29ya1Byb2Nlc3NDcmFzaGVkKCkKIHsKLSAgICBtX3JlY2VpdmVkTmV0d29ya0xpc3QgPSBm
YWxzZTsKLSAgICBpZiAoIVdlYkNvcmU6OkxpYldlYlJUQ1Byb3ZpZGVyOjpoYXNXZWJSVENUaHJl
YWRzKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIEluIGNhc2Ugd2UgaGF2ZSBjbGllbnRz
IHdhaXRpbmcgZm9yIG5ldHdvcmtzQ2hhbmdlZCwgd2UgY2FsbCBTaWduYWxOZXR3b3Jrc0NoYW5n
ZWQgdG8gbWFrZSBzdXJlIHRoZXkgZG8gbm90IHdhaXQgZm9yIG5vdGhpbmcuICAgIAotICAgIFdl
YkNvcmU6OkxpYldlYlJUQ1Byb3ZpZGVyOjpjYWxsT25XZWJSVENOZXR3b3JrVGhyZWFkKFt0aGlz
XSB7Ci0gICAgICAgIFNpZ25hbE5ldHdvcmtzQ2hhbmdlZCgpOwotICAgIH0pOworICAgIGZvciAo
YXV0byYgb2JzZXJ2ZXIgOiBtX29ic2VydmVycykKKyAgICAgICAgb2JzZXJ2ZXIubmV0d29ya1By
b2Nlc3NDcmFzaGVkKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1dlYlJUQ01vbml0b3IuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJSVENNb25pdG9yLmgK
aW5kZXggZjZiOTczOWZhZGRjMzgyY2Q0MjJlNWJhYThlYTI4NTZlNWY0ZmIwZi4uMDY4NTkwZTUz
MjY0MWExZmRhMzU3YWFjMTJhZDIzMjRiMjA0NDI0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1dlYlJUQ01vbml0b3IuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvV2ViUlRDTW9uaXRvci5oCkBAIC0zMCw2
ICszMCw3IEBACiAjaW5jbHVkZSAiUlRDTmV0d29yay5oIgogI2luY2x1ZGUgPFdlYkNvcmUvTGli
V2ViUlRDUHJvdmlkZXIuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0
Zi9XZWFrSGFzaFNldC5oPgogCiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIENvbm5lY3Rpb247CkBA
IC00MCwyNiArNDEsNDIgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHN0cnVjdCBOZXR3b3Jrc0No
YW5nZWREYXRhOwogCi1jbGFzcyBXZWJSVENNb25pdG9yIGZpbmFsIDogcHVibGljIHJ0Yzo6TmV0
d29ya01hbmFnZXJCYXNlIHsKK2NsYXNzIFdlYlJUQ01vbml0b3IgewogcHVibGljOgogICAgIFdl
YlJUQ01vbml0b3IoKSA9IGRlZmF1bHQ7CiAKKyAgICBjbGFzcyBPYnNlcnZlciA6IHB1YmxpYyBD
YW5NYWtlV2Vha1B0cjxPYnNlcnZlcj4geworICAgIHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCB+
T2JzZXJ2ZXIoKSA9IGRlZmF1bHQ7CisgICAgICAgIHZpcnR1YWwgdm9pZCBuZXR3b3Jrc0NoYW5n
ZWQoY29uc3QgVmVjdG9yPFJUQ05ldHdvcms+JiwgY29uc3QgUlRDTmV0d29yazo6SVBBZGRyZXNz
JiwgY29uc3QgUlRDTmV0d29yazo6SVBBZGRyZXNzJikgPSAwOworICAgICAgICB2aXJ0dWFsIHZv
aWQgbmV0d29ya1Byb2Nlc3NDcmFzaGVkKCkgPSAwOworICAgIH07CisgICAgdm9pZCBhZGRPYnNl
cnZlcihPYnNlcnZlciYgb2JzZXJ2ZXIpIHsgbV9vYnNlcnZlcnMuYWRkKG9ic2VydmVyKTsgfQor
ICAgIHZvaWQgcmVtb3ZlT2JzZXJ2ZXIoT2JzZXJ2ZXImIG9ic2VydmVyKSB7IG1fb2JzZXJ2ZXJz
LnJlbW92ZShvYnNlcnZlcik7IH0KKyAgICB2b2lkIHN0YXJ0VXBkYXRpbmcoKTsKKyAgICB2b2lk
IHN0b3BVcGRhdGluZygpOworCiAgICAgdm9pZCBuZXR3b3JrUHJvY2Vzc0NyYXNoZWQoKTsKICAg
ICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYp
OwogICAgIHZvaWQgc2V0RW51bWVyYXRpbmdBbGxOZXR3b3JrSW50ZXJmYWNlc0VuYWJsZWQoYm9v
bCk7CiAKLXByaXZhdGU6Ci0gICAgdm9pZCBuZXR3b3Jrc0NoYW5nZWQoY29uc3QgVmVjdG9yPFJU
Q05ldHdvcms+JiBuZXR3b3JrTGlzdCwgY29uc3QgUlRDTmV0d29yazo6SVBBZGRyZXNzJiwgY29u
c3QgUlRDTmV0d29yazo6SVBBZGRyZXNzJik7CisgICAgYm9vbCBkaWRSZWNlaXZlTmV0d29ya0xp
c3QoKSBjb25zdCB7IHJldHVybiBtX2RpZFJlY2VpdmVOZXR3b3JrTGlzdDsgfQorICAgIGNvbnN0
IFZlY3RvcjxSVENOZXR3b3JrPiYgbmV0d29ya0xpc3QoKSBjb25zdCB7IHJldHVybiBtX25ldHdv
cmtMaXN0OyB9CisgICAgY29uc3QgUlRDTmV0d29yazo6SVBBZGRyZXNzJiBpcHY0KCkgY29uc3Qg
eyByZXR1cm4gbV9pcHY0OyB9CisgICAgY29uc3QgUlRDTmV0d29yazo6SVBBZGRyZXNzJiBpcHY2
KCkgY29uc3QgeyByZXR1cm4gbV9pcHY2OyB9CiAKLSAgICB2b2lkIFN0YXJ0VXBkYXRpbmcoKSBm
aW5hbDsKLSAgICB2b2lkIFN0b3BVcGRhdGluZygpIGZpbmFsOwotICAgIHdlYnJ0Yzo6TWRuc1Jl
c3BvbmRlckludGVyZmFjZSogR2V0TWRuc1Jlc3BvbmRlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IG51bGxwdHI7IH0KK3ByaXZhdGU6CisgICAgdm9pZCBuZXR3b3Jrc0NoYW5nZWQoVmVjdG9yPFJU
Q05ldHdvcms+JiYsIFJUQ05ldHdvcms6OklQQWRkcmVzcyYmLCBSVENOZXR3b3JrOjpJUEFkZHJl
c3MmJik7CiAKICAgICBzdGF0aWMgdm9pZCBzZW5kT25NYWluVGhyZWFkKEZ1bmN0aW9uPHZvaWQo
SVBDOjpDb25uZWN0aW9uJik+JiYpOwogCiAgICAgdW5zaWduZWQgbV9jbGllbnRDb3VudCB7IDAg
fTsKLSAgICBib29sIG1fcmVjZWl2ZWROZXR3b3JrTGlzdCB7IGZhbHNlIH07CisgICAgV2Vha0hh
c2hTZXQ8T2JzZXJ2ZXI+IG1fb2JzZXJ2ZXJzOwogICAgIGJvb2wgbV9lbmFibGVFbnVtZXJhdGlu
Z0FsbE5ldHdvcmtJbnRlcmZhY2VzIHsgZmFsc2UgfTsKKyAgICBib29sIG1fZGlkUmVjZWl2ZU5l
dHdvcmtMaXN0IHsgZmFsc2UgfTsKKyAgICBWZWN0b3I8UlRDTmV0d29yaz4gbV9uZXR3b3JrTGlz
dDsKKyAgICBSVENOZXR3b3JrOjpJUEFkZHJlc3MgbV9pcHY0OworICAgIFJUQ05ldHdvcms6OklQ
QWRkcmVzcyBtX2lwdjY7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA4ZDli
NGE1Y2M1ZTYyZDY4YTAzYmI5NGNiNjE3MTA2YTIzMGYxMWVmLi5jOThkNDFkYzMzMjcwMWYxZWNj
YTBkNDBlYTVjYTcxNmVlYzQ0ZmFkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
KysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMDktMDEg
IFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBs
aWJ3ZWJydGMgbmV0d29yayBtYW5hZ2VyIEdldE1kbnNSZXNwb25kZXIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyOTc1NworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd2VicnRjL2RhdGFjaGFubmVsL2Zp
bHRlci1pY2UtY2FuZGlkYXRlLmh0bWw6CisgICAgICAgICogd2VicnRjL2ZpbHRlcmluZy1pY2Ut
Y2FuZGlkYXRlLWFmdGVyLXJlbG9hZC5odG1sOgorICAgICAgICBVcGRhdGUgdGVzdHMgZ2l2ZW4g
bUROUyBJQ0UgY2FuZGlkYXRlcyBhcmUgbm93IHNob3dpbmcgdXAgaW4gZGVzY3JpcHRpb25zLgor
CiAyMDIxLTA4LTMxICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAg
ICBNaWdyYXRlIHRvIGxhdGVzdCBsaWJ3ZWJydGMgQWRkSWNlQ2FuZGlkYXRlCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJydGMvZGF0YWNoYW5uZWwvZmlsdGVyLWljZS1jYW5kaWRhdGUuaHRt
bCBiL0xheW91dFRlc3RzL3dlYnJ0Yy9kYXRhY2hhbm5lbC9maWx0ZXItaWNlLWNhbmRpZGF0ZS5o
dG1sCmluZGV4IGNjYzQ2OWExNzdlMDA5MmI2NzU3YjViYzRkMTc3NTNhYjFmYjk1M2IuLjc0ZTc4
ZjQ5MzI1ODU5ZmZiNTY4NDE2NTUxZDU0MWY4MDI3NmIzNjcgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3dlYnJ0Yy9kYXRhY2hhbm5lbC9maWx0ZXItaWNlLWNhbmRpZGF0ZS5odG1sCisrKyBiL0xh
eW91dFRlc3RzL3dlYnJ0Yy9kYXRhY2hhbm5lbC9maWx0ZXItaWNlLWNhbmRpZGF0ZS5odG1sCkBA
IC04LDY4ICs4LDkxIEBACiAgIDwvaGVhZD4KICAgPGJvZHk+CiAgICAgPHNjcmlwdD4KLXByb21p
c2VfdGVzdCgodGVzdCkgPT4gewotICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVq
ZWN0KSA9PiB7Ci0gICAgICAgIHNldFRpbWVvdXQoKCkgPT4geyByZWplY3QoIlRlc3QgdGltZWQg
b3V0Iik7IH0sIDUwMDApOwotCi0gICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQotICAgICAg
ICAgICAgaW50ZXJuYWxzLnNldElDRUNhbmRpZGF0ZUZpbHRlcmluZyh0cnVlKTsKLQotICAgICAg
ICB2YXIgY291bnRlciA9IDA7Ci0gICAgICAgIHZhciBwYyA9IG5ldyBSVENQZWVyQ29ubmVjdGlv
bigpOwotICAgICAgICBwYy5jcmVhdGVEYXRhQ2hhbm5lbCgnc2VuZERhdGFDaGFubmVsJyk7Ci0g
ICAgICAgIHBjLm9uaWNlY2FuZGlkYXRlID0gKGV2ZW50KSA9PiB7Ci0gICAgICAgICAgICBpZiAo
ZXZlbnQuY2FuZGlkYXRlKSB7Ci0gICAgICAgICAgICAgICAgY291bnRlcisrOwotICAgICAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGFzc2VydF9lcXVhbHMo
cGMubG9jYWxEZXNjcmlwdGlvbi5zZHAuaW5kZXhPZigiYT1jYW5kaWRhdGUiKSwgLTEpOwotICAg
ICAgICAgICAgYXNzZXJ0X3RydWUocGMubG9jYWxEZXNjcmlwdGlvbi5zZHAuaW5kZXhPZigiYz1J
TiBJUDQgMC4wLjAuMFxyXG4iKSAhPSAtMSB8fCBwYy5sb2NhbERlc2NyaXB0aW9uLnNkcC5pbmRl
eE9mKCJjPUlOIElQNiA6OlxyXG4iKSAhPSAtMSk7Ci0gICAgICAgICAgICBpZiAoY291bnRlciA9
PT0gMCkgewotICAgICAgICAgICAgICAgIHBjLmNyZWF0ZU9mZmVyKCkudGhlbigob2ZmZXIpID0+
IHsKLSAgICAgICAgICAgICAgICAgICAgYXNzZXJ0X3RydWUob2ZmZXIuc2RwLmluZGV4T2YoImM9
SU4gSVA0IDAuMC4wLjBcclxuIikgIT0gLTEgfHwgcGMubG9jYWxEZXNjcmlwdGlvbi5zZHAuaW5k
ZXhPZigiYz1JTiBJUDYgOjpcclxuIikgIT0gLTEpOwotICAgICAgICAgICAgICAgICAgICBhc3Nl
cnRfZXF1YWxzKG9mZmVyLnNkcC5pbmRleE9mKCJhPWNhbmRpZGF0ZSIpLCAtMSk7Ci0gICAgICAg
ICAgICAgICAgICAgIHJlc29sdmUoKTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAg
IH0gZWxzZQotICAgICAgICAgICAgICAgIHJlamVjdCgiTm8gY2FuZGlkYXRlIHNob3VsZCBiZSBm
b3VuZCIpOwotICAgICAgICB9OwotICAgICAgICBwYy5jcmVhdGVPZmZlcigpLnRoZW4oKG9mZmVy
KSA9PiB7Ci0gICAgICAgICAgICBhc3NlcnRfZXF1YWxzKG9mZmVyLnNkcC5pbmRleE9mKCJhPWNh
bmRpZGF0ZSIpLCAtMSk7Ci0gICAgICAgICAgICBwYy5zZXRMb2NhbERlc2NyaXB0aW9uKG9mZmVy
KTsKLSAgICAgICAgfSk7CitmdW5jdGlvbiBlbnN1cmVDYW5kaWRhdGVzQXJlTUROUyhzZHApCit7
CisgICAgYXNzZXJ0X3RydWUoc2RwLmluZGV4T2YoImM9SU4gSVA0IDAuMC4wLjBcclxuIikgIT0g
LTEgfHwgc2RwLmluZGV4T2YoImM9SU4gSVA2IDo6XHJcbiIpICE9IC0xKTsKKyAgICBjb25zdCBj
YW5kaWRhdGVzID0gc2RwLnNwbGl0KCdcclxuJykuZmlsdGVyKGxpbmUgPT4geworICAgICAgICBy
ZXR1cm4gbGluZS5pbmRleE9mKCdhPWNhbmRpZGF0ZScpICE9PSAtMTsKKyAgICB9KTsKKyAgICBm
b3IgKGNvbnN0IGNhbmRpZGF0ZSBvZiBjYW5kaWRhdGVzKQorICAgICAgICBhc3NlcnRfbm90X2Vx
dWFscyhjYW5kaWRhdGUuaW5kZXhPZignLmxvY2FsJyksIC0xKTsKK30KKworZnVuY3Rpb24gZW5z
dXJlQ2FuZGlkYXRlc0FyZU5vdE1ETlMoc2RwKQoreworICAgIGNvbnN0IGNhbmRpZGF0ZXMgPSBz
ZHAuc3BsaXQoJ1xyXG4nKS5maWx0ZXIobGluZSA9PiB7CisgICAgICAgIHJldHVybiBsaW5lLmlu
ZGV4T2YoJ2E9Y2FuZGlkYXRlJykgIT09IC0xOwogICAgIH0pOworICAgIGZvciAoY29uc3QgY2Fu
ZGlkYXRlIG9mIGNhbmRpZGF0ZXMpCisgICAgICAgIGFzc2VydF9lcXVhbHMoY2FuZGlkYXRlLmlu
ZGV4T2YoJy5sb2NhbCcpLCAtMSk7Cit9CisKK3Byb21pc2VfdGVzdChhc3luYyAodGVzdCkgPT4g
eworICAgIGxldCByZXNvbHZlLCByZWplY3Q7CisgICAgY29uc3QgcHJvbWlzZSA9IG5ldyBQcm9t
aXNlKChyZXMsIHJlaikgPT4geyByZXNvbHZlID0gcmVzOyByZWplY3QgPSByZWo7IH0pOworICAg
IHNldFRpbWVvdXQoKCkgPT4geyByZWplY3QoIlRlc3QgdGltZWQgb3V0Iik7IH0sIDUwMDApOwor
CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgIGludGVybmFscy5zZXRJQ0VDYW5k
aWRhdGVGaWx0ZXJpbmcodHJ1ZSk7CisKKyAgICBsZXQgY291bnRlciA9IDA7CisgICAgbGV0IHBj
ID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7CisgICAgcGMuY3JlYXRlRGF0YUNoYW5uZWwoJ3Nl
bmREYXRhQ2hhbm5lbCcpOworICAgIHBjLm9uaWNlY2FuZGlkYXRlID0gYXN5bmMgKGV2ZW50KSA9
PiB7CisgICAgICAgIGlmIChldmVudC5jYW5kaWRhdGUpIHsKKyAgICAgICAgICAgIGFzc2VydF9u
b3RfZXF1YWxzKGV2ZW50LmNhbmRpZGF0ZS5jYW5kaWRhdGUuaW5kZXhPZignLmxvY2FsJyksIC0x
KTsKKyAgICAgICAgICAgIGNvdW50ZXIrKzsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorICAgICAgICBlbnN1cmVDYW5kaWRhdGVzQXJlTUROUyhwYy5sb2NhbERlc2NyaXB0aW9uLnNk
cCk7CisgICAgICAgIGlmIChjb3VudGVyID09PSAwKSB7CisgICAgICAgICAgICBjb25zdCBvZmZl
ciA9IGF3YWl0IHBjLmNyZWF0ZU9mZmVyKCk7CisgICAgICAgICAgICBhd2FpdCBwYy5zZXRMb2Nh
bERlc2NyaXB0aW9uKG9mZmVyKTsKKyAgICAgICAgICAgIGVuc3VyZUNhbmRpZGF0ZXNBcmVNRE5T
KHBjLmxvY2FsRGVzY3JpcHRpb24uc2RwKTsKKyAgICAgICAgICAgIHJlc29sdmUoKTsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICByZXNvbHZlKCk7CisgICAgfTsKKyAg
ICBjb25zdCBvZmZlciA9IGF3YWl0IHBjLmNyZWF0ZU9mZmVyKCk7CisgICAgYXNzZXJ0X2VxdWFs
cyhvZmZlci5zZHAuaW5kZXhPZigiYT1jYW5kaWRhdGUiKSwgLTEpOworICAgIGF3YWl0IHBjLnNl
dExvY2FsRGVzY3JpcHRpb24ob2ZmZXIpOworCisgICAgcmV0dXJuIHByb21pc2U7CiB9LCAiR2F0
aGVyaW5nIElDRSBjYW5kaWRhdGVzIGZyb20gYSBkYXRhIGNoYW5uZWwgcGVlciBjb25uZWN0aW9u
IHdpdGggSUNFIGNhbmRpZGF0ZSBmaWx0ZXJpbmcgb24iKTsKIAotcHJvbWlzZV90ZXN0KCh0ZXN0
KSA9PiB7Ci0gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKLSAg
ICAgICAgc2V0VGltZW91dCgoKSA9PiB7IHJlamVjdCgiVGVzdCB0aW1lZCBvdXQiKTsgfSwgNTAw
MCk7Citwcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKKyAgICBsZXQgcmVzb2x2ZSwgcmVq
ZWN0OworICAgIGNvbnN0IHByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzLCByZWopID0+IHsgcmVz
b2x2ZSA9IHJlczsgcmVqZWN0ID0gcmVqOyB9KTsKKyAgICBzZXRUaW1lb3V0KCgpID0+IHsgcmVq
ZWN0KCJUZXN0IHRpbWVkIG91dCIpOyB9LCA1MDAwKTsKIAotCWlmICh3aW5kb3cuaW50ZXJuYWxz
KQotICAgICAgICAgICAgaW50ZXJuYWxzLnNldElDRUNhbmRpZGF0ZUZpbHRlcmluZyhmYWxzZSk7
CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgIGludGVybmFscy5zZXRJQ0VDYW5k
aWRhdGVGaWx0ZXJpbmcoZmFsc2UpOworIAorICAgIGxldCBjb3VudGVyID0gMDsKKyAgICBsZXQg
cGMgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsKKyAgICBwYy5jcmVhdGVEYXRhQ2hhbm5lbCgn
c2VuZERhdGFDaGFubmVsJyk7CiAKLSAgICAgICAgdmFyIGNvdW50ZXIgPSAwOwotICAgICAgICB2
YXIgcGMgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsKLSAgICAgICAgcGMuY3JlYXRlRGF0YUNo
YW5uZWwoJ3NlbmREYXRhQ2hhbm5lbCcpOwotICAgICAgICBwYy5vbmljZWNhbmRpZGF0ZSA9IChl
dmVudCkgPT4gewotICAgICAgICAgICAgaWYgKGV2ZW50LmNhbmRpZGF0ZSkgewotICAgICAgICAg
ICAgICAgIGNvdW50ZXIrKzsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICBhc3NlcnRfdHJ1ZShwYy5sb2NhbERlc2NyaXB0aW9uLnNkcC5pbmRleE9m
KCJjPUlOIElQNCAwLjAuMC4wXHJcbiIpID09PSAtMSAmJiBwYy5sb2NhbERlc2NyaXB0aW9uLnNk
cC5pbmRleE9mKCJjPUlOIElQNiA6OlxyXG4iKSA9PT0gLTEpOwotICAgICAgICAgICAgYXNzZXJ0
X2ZhbHNlKHBjLmxvY2FsRGVzY3JpcHRpb24uc2RwLmluZGV4T2YoImE9Y2FuZGlkYXRlIikgPT09
IC0xKTsKLSAgICAgICAgICAgIGlmIChjb3VudGVyICE9PSAwKSB7Ci0gICAgICAgICAgICAgICAg
Ly8gUmVkb2luZyBhbiBvZmZlciBub3cgdGhhdCB3ZSBoYXZlIHNvbWUgY2FuZGlkYXRlcy4KLSAg
ICAgICAgICAgICAgICBwYy5jcmVhdGVPZmZlcigpLnRoZW4oKG9mZmVyKSA9PiB7Ci0gICAgICAg
ICAgICAgICAgICAgIGFzc2VydF90cnVlKG9mZmVyLnNkcC5pbmRleE9mKCJjPUlOIElQNCAwLjAu
MC4wXHJcbiIpID09PSAtMSAmJiBwYy5sb2NhbERlc2NyaXB0aW9uLnNkcC5pbmRleE9mKCJjPUlO
IElQNiA6OlxyXG4iKSA9PT0gLTEpOwotICAgICAgICAgICAgICAgICAgICBhc3NlcnRfZmFsc2Uo
b2ZmZXIuc2RwLmluZGV4T2YoImE9Y2FuZGlkYXRlIikgPT09IC0xKTsKLSAgICAgICAgICAgICAg
ICAgICAgcmVzb2x2ZSgpOwotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgfSBlbHNl
Ci0gICAgICAgICAgICAgICAgcmVqZWN0KCJIb3N0IGNhbmRpZGF0ZXMgc2hvdWxkIGJlIGZvdW5k
Iik7Ci0gICAgICAgIH07Ci0gICAgICAgIHBjLmNyZWF0ZU9mZmVyKCkudGhlbigob2ZmZXIpID0+
IHsgcGMuc2V0TG9jYWxEZXNjcmlwdGlvbihvZmZlcik7IH0pOwotICAgIH0pOworICAgIHBjLm9u
aWNlY2FuZGlkYXRlID0gYXN5bmMgKGV2ZW50KSA9PiB7CisgICAgICAgIGlmIChldmVudC5jYW5k
aWRhdGUpIHsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoZXZlbnQuY2FuZGlkYXRlLmNhbmRp
ZGF0ZS5pbmRleE9mKCcubG9jYWwnKSwgLTEpOworICAgICAgICAgICAgY291bnRlcisrOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGVuc3VyZUNhbmRpZGF0ZXNBcmVO
b3RNRE5TKHBjLmxvY2FsRGVzY3JpcHRpb24uc2RwKTsKKyAgICAgICAgaWYgKGNvdW50ZXIgIT09
IDApIHsKKyAgICAgICAgICAgIC8vIFJlZG9pbmcgYW4gb2ZmZXIgbm93IHRoYXQgd2UgaGF2ZSBz
b21lIGNhbmRpZGF0ZXMuCisgICAgICAgICAgICBjb25zdCBvZmZlciA9IGF3YWl0IHBjLmNyZWF0
ZU9mZmVyKCk7CisgICAgICAgICAgICBhd2FpdCBwYy5zZXRMb2NhbERlc2NyaXB0aW9uKG9mZmVy
KTsKKyAgICAgICAgICAgIGVuc3VyZUNhbmRpZGF0ZXNBcmVOb3RNRE5TKHBjLmxvY2FsRGVzY3Jp
cHRpb24uc2RwKTsKKyAgICAgICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAgfSBlbHNlCisgICAg
ICAgICAgICByZWplY3QoIkhvc3QgY2FuZGlkYXRlcyBzaG91bGQgYmUgZm91bmQiKTsKKyAgICB9
OworICAgIGNvbnN0IG9mZmVyID0gYXdhaXQgcGMuY3JlYXRlT2ZmZXIoKTsKKyAgICBhd2FpdCBw
Yy5zZXRMb2NhbERlc2NyaXB0aW9uKG9mZmVyKTsKKworICAgIHJldHVybiBwcm9taXNlOwogfSwg
IkdhdGhlcmluZyBJQ0UgY2FuZGlkYXRlcyBmcm9tIGEgZGF0YSBjaGFubmVsIHBlZXIgY29ubmVj
dGlvbiB3aXRoIElDRSBjYW5kaWRhdGUgZmlsdGVyaW5nIG9mZiIpOwogCiBwcm9taXNlX3Rlc3Qo
YXN5bmMgKHRlc3QpID0+IHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYnJ0Yy9maWx0ZXJp
bmctaWNlLWNhbmRpZGF0ZS1hZnRlci1yZWxvYWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYnJ0Yy9m
aWx0ZXJpbmctaWNlLWNhbmRpZGF0ZS1hZnRlci1yZWxvYWQuaHRtbAppbmRleCBjODc1NWY3MWYx
OWYxYTMwM2MyM2IwYmFhZjE2NjNiZDY4YmQ1YjlkLi41MjVkZTg0ZjlkMzJiYjE0NjJkZTk3YzJm
MjBlNTVmZmNjMTVlNGIyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy93ZWJydGMvZmlsdGVyaW5n
LWljZS1jYW5kaWRhdGUtYWZ0ZXItcmVsb2FkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvd2VicnRj
L2ZpbHRlcmluZy1pY2UtY2FuZGlkYXRlLWFmdGVyLXJlbG9hZC5odG1sCkBAIC03LDI0ICs3LDI4
IEBAIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewogICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9u
ZSgpOwogfQogCi1mdW5jdGlvbiBpc0ZpbHRlcmluZ0VuYWJsZWQoKQorYXN5bmMgZnVuY3Rpb24g
aXNGaWx0ZXJpbmdFbmFibGVkKCkKIHsKKyAgICBsZXQgcmVzb2x2ZSwgcmVqZWN0OworICAgIGNv
bnN0IHByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzLCByZWopID0+IHsgcmVzb2x2ZSA9IHJlczsg
cmVqZWN0ID0gcmVqOyB9KTsKKyAgICBzZXRUaW1lb3V0KCgpID0+IHsgcmVqZWN0KCJUZXN0IHRp
bWVkIG91dCIpOyB9LCA1MDAwKTsKKwogICAgIHZhciBwYyA9IG5ldyBSVENQZWVyQ29ubmVjdGlv
bigpOwogICAgIHBjLmNyZWF0ZURhdGFDaGFubmVsKCIiKTsKIAogICAgIHZhciBjYW5kaWRhdGVz
ID0gW107Ci0gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKLSAg
ICAgICAgcGMub25pY2VjYW5kaWRhdGUgPSAoZXZlbnQpID0+IHsKLSAgICAgICAgICAgIGlmIChl
dmVudC5jYW5kaWRhdGUgPT09IG51bGwpIHsKLSAgICAgICAgICAgICAgICByZXNvbHZlKCFjYW5k
aWRhdGVzLmxlbmd0aCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQor
ICAgIHBjLm9uaWNlY2FuZGlkYXRlID0gKGV2ZW50KSA9PiB7CisgICAgICAgIGlmIChldmVudC5j
YW5kaWRhdGUgPT09IG51bGwpIHsKKyAgICAgICAgICAgIHJlc29sdmUoIWNhbmRpZGF0ZXMubGVu
Z3RoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAoZXZlbnQu
Y2FuZGlkYXRlLmNhbmRpZGF0ZS5pbmRleE9mKCcubG9jYWwnKSA9PT0gLTEpCiAgICAgICAgICAg
ICBjYW5kaWRhdGVzLnB1c2goZXZlbnQuY2FuZGlkYXRlLmNhbmRpZGF0ZSk7Ci0gICAgICAgIH07
Ci0gICAgICAgIHBjLmNyZWF0ZU9mZmVyKCkudGhlbigob2ZmZXIpID0+IHsKLSAgICAgICAgICAg
IHBjLnNldExvY2FsRGVzY3JpcHRpb24ob2ZmZXIpOwotICAgICAgICB9KTsKLSAgICB9KTsKKyAg
ICB9OworCisgICAgY29uc3Qgb2ZmZXIgPSBhd2FpdCBwYy5jcmVhdGVPZmZlcigpOworICAgIGF3
YWl0IHBjLnNldExvY2FsRGVzY3JpcHRpb24ob2ZmZXIpOworICAgIHJldHVybiBwcm9taXNlOwog
fQogCiBmdW5jdGlvbiBlbmRUZXN0KG1lc3NhZ2UpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>437023</attachid>
            <date>2021-09-01 06:21:00 -0700</date>
            <delta_ts>2021-09-01 06:28:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229757-20210901152059.patch</filename>
            <type>text/plain</type>
            <size>83392</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxNzkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWIwNDFiMmIwMGZmNmU4
Y2YwNTI3MjZmMWQ1NmUzMzQwNGM1NjAwNy4uNThjOWY3ZDhmZTMwZDZlNWYwZTY1OTkyNzFkNTgy
NDJhZmFlYmRlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDIxLTA5LTAxICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgbGlid2Vi
cnRjIG5ldHdvcmsgbWFuYWdlciBHZXRNZG5zUmVzcG9uZGVyCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjk3NTcKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgbGlid2VicnRjIG1ETlMgc3VwcG9ydCBp
bnN0ZWFkIG9mIGFwcGx5aW5nIGl0IHdpdGhpbiBQZWVyQ29ubmVjdGlvbkJhY2tlbmQuCisgICAg
ICAgIFRoaXMgYWxsb3dzIGEgYmV0dGVyIGludGVncmF0aW9uIGFuZCBpcyBtb3JlIGNvbnNpc3Rl
bnQgd2l0aCB0aGUgQVBJIGFuZCBvdGhlciBicm93c2Vycy4KKyAgICAgICAgRm9yIGluc3RhbmNl
IG1ETlMgY2FuZGlkYXRlcyBub3cgc2hvdyB1cCBpbiBsb2NhbCBkZXNjcmlwdGlvbnMuCisgICAg
ICAgIFdlIGludHJvZHVjZSBSVENOZXR3b3JrTWFuYWdlciB3aGljaCBpcyByZXNwb25zaWJsZSBm
b3IgV2ViUlRDIG5ldHdvcmsuCisgICAgICAgIFJUQ05ldHdvcmtNYW5hZ2VyIGlzIHJlc3BvbnNp
YmxlIG9mIGFsbCBwZWVyIGNvbm5lY3Rpb25zIG9mIGEgZG9jdW1lbnQuIEl0IGNhbiB0aHVzIHJl
dXNlIG1ETlMgbmFtZXMgZnJvbSBvbmUgY29ubmVjdGlvbiB0byBhbm90aGVyLgorICAgICAgICBX
aGVuIGRvY3VtZW50IGdvZXMgYXdheSwgUlRDTmV0d29ya01hbmFnZXIgbmVlZHMgdG8gdW5yZWdp
c3RlciBhbGwgbUROUyBuYW1lcy4KKyAgICAgICAgVXBkYXRlIGV4aXN0aW5nIFNEUCBhbmQgSUNF
IGNhbmRpZGF0ZSBmaWx0ZXJpbmcgY29kZSBieSBvbmx5IGtlZXBpbmcgZGVidWcgYXNzZXJ0IHRo
YXQgd2UgZG8gbm90IGxlYWsgcHJpdmF0ZSBJUCBhZGRyZXNzZXMgaW4gY2FzZSBJQ0UgZmlsdGVy
aW5nIGlzIG9uLgorICAgICAgICBDb3ZlcmVkIGJ5IHVwZGF0ZWQgYW5kIGV4aXN0aW5nIHRlc3Rz
LgorCisgICAgICAgICogSGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3Ry
ZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29u
bmVjdGlvbkJhY2tlbmQ6OmNyZWF0ZU9mZmVyU3VjY2VlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6
OlBlZXJDb25uZWN0aW9uQmFja2VuZDo6ZW5hYmxlSUNFQ2FuZGlkYXRlRmlsdGVyaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uQmFja2VuZDo6ZGlzYWJsZUlDRUNhbmRpZGF0
ZUZpbHRlcmluZyk6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OnZh
bGlkYXRlU0RQIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uQmFja2Vu
ZDo6bmV3SUNFQ2FuZGlkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uQmFj
a2VuZDo6ZG9uZUdhdGhlcmluZ0NhbmRpZGF0ZXMpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
dHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0NvbnRyb2xsZXI6
OmFkZCk6CisgICAgICAgIChXZWJDb3JlOjpSVENDb250cm9sbGVyOjpkaXNhYmxlSUNFQ2FuZGlk
YXRlRmlsdGVyaW5nRm9yQWxsT3JpZ2lucyk6CisgICAgICAgIChXZWJDb3JlOjpSVENDb250cm9s
bGVyOjpkaXNhYmxlSUNFQ2FuZGlkYXRlRmlsdGVyaW5nRm9yRG9jdW1lbnQpOgorICAgICAgICAo
V2ViQ29yZTo6UlRDQ29udHJvbGxlcjo6ZW5hYmxlSUNFQ2FuZGlkYXRlRmlsdGVyaW5nKToKKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ05ldHdvcmtNYW5hZ2VyLmg6IEFkZGVkLgor
ICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5k
cG9pbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6c2V0
Q29uZmlndXJhdGlvbik6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMv
TGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okxp
YldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6Y3VycmVudExvY2FsRGVzY3JpcHRpb24gY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpw
ZW5kaW5nTG9jYWxEZXNjcmlwdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJS
VENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmxvY2FsRGVzY3JpcHRpb24gY29uc3QpOgorICAgICAg
ICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBkb20vRG9j
dW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OndpbGxCZVJlbW92ZWRGcm9t
RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnN1c3BlbmQpOgorICAgICAgICAq
IGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJ0Y05ldHdvcmtN
YW5hZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzZXRSVENOZXR3b3JrTWFuYWdl
cik6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vTUROU1JlZ2lzdGVyRXJyb3IuaDog
QWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJU
Q1Byb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ1Byb3ZpZGVyOjpjcmVh
dGVQZWVyQ29ubmVjdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2Vi
cnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmg6CisKIDIwMjEtMDgtMzEgIFlvdWVubiBGYWJsZXQgIDx5
b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBzdXBwb3J0IGZvciBSVENTY3RwVHJhbnNw
b3J0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCmluZGV4IDYxZjdhZDFjYTg4N2Q1YmZkMjEyZjQzOTNkMGM1MmFlYWFjMGI1N2Iu
LmU0N2ZiZDg2N2JmZjk0YjI0NGM3YTU5MWU0YzEyZWViNmZjMTdhYzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNTYgQEAKKzIwMjEtMDktMDEgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29t
PgorCisgICAgICAgIEltcGxlbWVudCBsaWJ3ZWJydGMgbmV0d29yayBtYW5hZ2VyIEdldE1kbnNS
ZXNwb25kZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyOTc1NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEltcGxlbWVudCBSVENOZXR3b3JrTWFuYWdlciBBUEkgaW4gTGliV2ViUlRDTmV0d29ya01hbmFn
ZXIgdG8gaGFuZGxlIHBlci1kb2N1bWVudCBtRE5TIHJlZ2lzdHJhdGlvbnMuCisgICAgICAgIE1v
dmUgcGFydCBvZiBXZWJSVENNb25pdG9yIHRvIExpYldlYlJUQ05ldHdvcmtNYW5hZ2VyLgorICAg
ICAgICBMaWJXZWJSVENOZXR3b3JrTWFuYWdlciBpcyBhIFdlYlJUQ01vbml0b3Igb2JzZXJ2ZXIg
dG8gZ2V0IHRoZSBsaXN0IG9mIG5ldHdvcmtzLgorICAgICAgICBTaW5jZSBsaWJ3ZWJydGMgaXMg
bm93IGRvaW5nIHRoZSBtRE5TIHJlZ2lzdHJhdGlvbiwgd2UgbmVlZCB0byByZXR1cm4gYSBtRE5T
IG5hbWUgZXZlbiBpZiByZWdpc3RyYXRpb24gZmFpbGVkLgorICAgICAgICBXZSB1cGRhdGUgV2Vi
TUROU1JlZ2lzdGVyIGFuZCBOZXR3b3JrTUROU1JlZ2lzdGVyIGFjY29yZGluZ2x5LgorCisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtNRE5TUmVnaXN0ZXIuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpyZWdpc3Rlck1ETlNOYW1lQ2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrTUROU1JlZ2lzdGVyOjpyZWdpc3Rlck1ETlNOYW1lKToKKyAgICAgICAgKiBTb3Vy
Y2VzLnR4dDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ05ldHdvcmtNYW5hZ2Vy
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ05ldHdvcmtNYW5hZ2VyOjpn
ZXRPckNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ05ldHdvcmtNYW5hZ2VyOjpM
aWJXZWJSVENOZXR3b3JrTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ05ldHdv
cmtNYW5hZ2VyOjp+TGliV2ViUlRDTmV0d29ya01hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpM
aWJXZWJSVENOZXR3b3JrTWFuYWdlcjo6dW5yZWdpc3Rlck1ETlNOYW1lcyk6CisgICAgICAgIChX
ZWJLaXQ6OkxpYldlYlJUQ05ldHdvcmtNYW5hZ2VyOjpTdGFydFVwZGF0aW5nKToKKyAgICAgICAg
KFdlYktpdDo6TGliV2ViUlRDTmV0d29ya01hbmFnZXI6OlN0b3BVcGRhdGluZyk6CisgICAgICAg
IChXZWJLaXQ6OkxpYldlYlJUQ05ldHdvcmtNYW5hZ2VyOjpHZXRNZG5zUmVzcG9uZGVyIGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDTmV0d29ya01hbmFnZXI6Om5ldHdvcmtzQ2hh
bmdlZCk6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ05ldHdvcmtNYW5hZ2VyOjpuZXR3b3Jr
UHJvY2Vzc0NyYXNoZWQpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENOZXR3b3JrTWFuYWdl
cjo6Q3JlYXRlTmFtZUZvckFkZHJlc3MpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENOZXR3
b3JrTWFuYWdlcjo6UmVtb3ZlTmFtZUZvckFkZHJlc3MpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
TmV0d29yay93ZWJydGMvTGliV2ViUlRDTmV0d29ya01hbmFnZXIuaDogQWRkZWQuCisgICAgICAg
ICogV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkxpYldlYlJUQ1Byb3ZpZGVyOjpjcmVhdGVQZWVyQ29ubmVjdGlvbik6Cisg
ICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ1Byb3ZpZGVyOjpkaXNhYmxlTm9uTG9jYWxob3N0Q29u
bmVjdGlvbnMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRD
UHJvdmlkZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1dlYk1ETlNS
ZWdpc3Rlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYk1ETlNSZWdpc3Rlcjo6ZmluaXNoZWRS
ZWdpc3RlcmluZ01ETlNOYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViTUROU1JlZ2lzdGVyOjpy
ZWdpc3Rlck1ETlNOYW1lKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1dl
Yk1ETlNSZWdpc3Rlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvV2Vi
TUROU1JlZ2lzdGVyLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay93
ZWJydGMvV2ViUlRDTW9uaXRvci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJUQ01vbml0b3I6
OnN0YXJ0VXBkYXRpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJSVENNb25pdG9yOjpzdG9wVXBk
YXRpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJSVENNb25pdG9yOjpuZXR3b3Jrc0NoYW5nZWQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJSVENNb25pdG9yOjpuZXR3b3JrUHJvY2Vzc0NyYXNoZWQp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvV2ViUlRDTW9uaXRvci5oOgor
ICAgICAgICAoV2ViS2l0OjpXZWJSVENNb25pdG9yOjphZGRPYnNlcnZlcik6CisgICAgICAgIChX
ZWJLaXQ6OldlYlJUQ01vbml0b3I6OnJlbW92ZU9ic2VydmVyKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUlRDTW9uaXRvcjo6ZGlkUmVjZWl2ZU5ldHdvcmtMaXN0IGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViUlRDTW9uaXRvcjo6bmV0d29ya0xpc3QgY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpXZWJSVENNb25pdG9yOjppcHY0IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUlRDTW9u
aXRvcjo6aXB2NiBjb25zdCk6CisKIDIwMjEtMDgtMjYgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBw
bGUuY29tPgogCiAgICAgICAgIEN1dCBkb3duIG9uIHVzZSBvZiBDRkdldFR5cGVJRCwgdXNpbmcg
ZHluYW1pY19jZl9jYXN0IGluc3RlYWQ7IHJlbGF0ZWQgc3RyZWFtbGluaW5nCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5j
bWFrZQppbmRleCA3NmNlMGM2NjFmZWU4MzBkMTc2ZTM2MWY1Nzk4NzM1YzdhZTFlMGNlLi41OGQx
ZWYwNDgxMGVkZGU5Y2I5NDg1ZTA4ODBhMWRkOWI4ZTc3ZjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UK
QEAgLTEyMCw2ICsxMjAsOCBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJT
CiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFDb250cm9sbGVyLmgKICAgICBNb2R1
bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuaAogCisgICAgTW9kdWxlcy9tZWRpYXN0
cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDVXRpbHMuaAorCiAgICAgTW9kdWxlcy9tb2RlbC1lbGVt
ZW50L0hUTUxNb2RlbEVsZW1lbnQuaAogCiAgICAgTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlm
aWNhdGlvbi5oCkBAIC0xNDEyLDYgKzE0MTQsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1F
V09SS19IRUFERVJTCiAKICAgICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlLmgK
ICAgICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlTWFuYWdlci5oCisgICAgcGxh
dGZvcm0vbWVkaWFzdHJlYW0vTUROU1JlZ2lzdGVyRXJyb3IuaAogICAgIHBsYXRmb3JtL21lZGlh
c3RyZWFtL01lZGlhQ29uc3RyYWludHMuaAogICAgIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlh
U3RyZWFtUHJpdmF0ZS5oCiAgICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1SZXF1
ZXN0LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVl
ckNvbm5lY3Rpb25CYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAppbmRleCA3OTllMWQzZGFjYzQ4MTA3MmMxYjU3
YmFkMWU5NWUwNmQwYTA0YzgxLi5iM2I5M2JjYzM2ZGY3ZGQ0YjU1YzVkNGMxODFiNDE1MTg0NTE4
YTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJD
b25uZWN0aW9uQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwCkBAIC0xMDIsNyArMTAyLDggQEAgdm9pZCBQ
ZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmNyZWF0ZU9mZmVyU3VjY2VlZGVkKFN0cmluZyYmIHNkcCkK
ICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJDcmVhdGUgb2ZmZXIgc3VjY2VlZGVkOlxu
Iiwgc2RwKTsKIAogICAgIEFTU0VSVChtX29mZmVyQW5zd2VyUHJvbWlzZSk7Ci0gICAgbV9wZWVy
Q29ubmVjdGlvbi5kb1Rhc2soW3RoaXMsIHByb21pc2UgPSBXVEZNb3ZlKG1fb2ZmZXJBbnN3ZXJQ
cm9taXNlKSwgc2RwID0gZmlsdGVyU0RQKFdURk1vdmUoc2RwKSldKCkgbXV0YWJsZSB7CisgICAg
dmFsaWRhdGVTRFAoc2RwKTsKKyAgICBtX3BlZXJDb25uZWN0aW9uLmRvVGFzayhbdGhpcywgcHJv
bWlzZSA9IFdURk1vdmUobV9vZmZlckFuc3dlclByb21pc2UpLCBzZHAgPSBXVEZNb3ZlKHNkcCld
KCkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChtX3BlZXJDb25uZWN0aW9uLmlzQ2xvc2VkKCkpCiAg
ICAgICAgICAgICByZXR1cm47CiAKQEAgLTM3Niw4MSArMzc3LDE5IEBAIHZvaWQgUGVlckNvbm5l
Y3Rpb25CYWNrZW5kOjplbmFibGVJQ0VDYW5kaWRhdGVGaWx0ZXJpbmcoKQogdm9pZCBQZWVyQ29u
bmVjdGlvbkJhY2tlbmQ6OmRpc2FibGVJQ0VDYW5kaWRhdGVGaWx0ZXJpbmcoKQogewogICAgIG1f
c2hvdWxkRmlsdGVySUNFQ2FuZGlkYXRlcyA9IGZhbHNlOwotICAgIGZvciAoYXV0byYgcGVuZGlu
Z0lDRUNhbmRpZGF0ZSA6IG1fcGVuZGluZ0lDRUNhbmRpZGF0ZXMpCi0gICAgICAgIGZpcmVJQ0VD
YW5kaWRhdGVFdmVudChSVENJY2VDYW5kaWRhdGU6OmNyZWF0ZShXVEZNb3ZlKHBlbmRpbmdJQ0VD
YW5kaWRhdGUuc2RwKSwgV1RGTW92ZShwZW5kaW5nSUNFQ2FuZGlkYXRlLm1pZCksIHBlbmRpbmdJ
Q0VDYW5kaWRhdGUuc2RwTUxpbmVJbmRleCksIFdURk1vdmUocGVuZGluZ0lDRUNhbmRpZGF0ZS5z
ZXJ2ZXJVUkwpKTsKLSAgICBtX3BlbmRpbmdJQ0VDYW5kaWRhdGVzLmNsZWFyKCk7Ci19Ci0KLXN0
YXRpYyBTdHJpbmcgZmlsdGVySUNFQ2FuZGlkYXRlKFN0cmluZyYmIHNkcCkKLXsKLSAgICBBU1NF
UlQoIXNkcC5jb250YWlucygiIGhvc3QgIikpOwotCi0gICAgaWYgKCFzZHAuY29udGFpbnMoIiBy
YWRkciAiKSkKLSAgICAgICAgcmV0dXJuIFdURk1vdmUoc2RwKTsKLQotICAgIGJvb2wgc2tpcE5l
eHRJdGVtID0gZmFsc2U7Ci0gICAgYm9vbCBpc0ZpcnN0ID0gdHJ1ZTsKLSAgICBTdHJpbmdCdWls
ZGVyIGZpbHRlcmVkU0RQOwotICAgIHNkcC5zcGxpdCgnICcsIFsmXShTdHJpbmdWaWV3IGl0ZW0p
IHsKLSAgICAgICAgaWYgKHNraXBOZXh0SXRlbSkgewotICAgICAgICAgICAgc2tpcE5leHRJdGVt
ID0gZmFsc2U7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGl0
ZW0gPT0gInJhZGRyIikgewotICAgICAgICAgICAgZmlsdGVyZWRTRFAuYXBwZW5kKCIgcmFkZHIg
MC4wLjAuMCIpOwotICAgICAgICAgICAgc2tpcE5leHRJdGVtID0gdHJ1ZTsKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBpZiAoaXRlbSA9PSAicnBvcnQiKSB7Ci0gICAg
ICAgICAgICBmaWx0ZXJlZFNEUC5hcHBlbmQoIiBycG9ydCAwIik7Ci0gICAgICAgICAgICBza2lw
TmV4dEl0ZW0gPSB0cnVlOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAg
IGlmIChpc0ZpcnN0KQotICAgICAgICAgICAgaXNGaXJzdCA9IGZhbHNlOwotICAgICAgICBlbHNl
Ci0gICAgICAgICAgICBmaWx0ZXJlZFNEUC5hcHBlbmQoJyAnKTsKLSAgICAgICAgZmlsdGVyZWRT
RFAuYXBwZW5kKGl0ZW0pOwotICAgIH0pOwotICAgIHJldHVybiBmaWx0ZXJlZFNEUC50b1N0cmlu
ZygpOwogfQogCi1TdHJpbmcgUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpmaWx0ZXJTRFAoU3RyaW5n
JiYgc2RwKSBjb25zdAordm9pZCBQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OnZhbGlkYXRlU0RQKGNv
bnN0IFN0cmluZyYgc2RwKSBjb25zdAogeworI2lmbmRlZiBOREVCVUcKICAgICBpZiAoIW1fc2hv
dWxkRmlsdGVySUNFQ2FuZGlkYXRlcykKLSAgICAgICAgcmV0dXJuIFdURk1vdmUoc2RwKTsKLQot
ICAgIFN0cmluZ0J1aWxkZXIgZmlsdGVyZWRTRFA7Ci0gICAgc2RwLnNwbGl0KCdcbicsIFt0aGlz
LCAmZmlsdGVyZWRTRFBdKFN0cmluZ1ZpZXcgbGluZSkgewotICAgICAgICBpZiAobGluZS5zdGFy
dHNXaXRoKCJjPUlOIElQNCIpKSB7Ci0gICAgICAgICAgICBmaWx0ZXJlZFNEUC5hcHBlbmQoImM9
SU4gSVA0IDAuMC4wLjBcclxuIik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAg
ICAgICAgaWYgKGxpbmUuc3RhcnRzV2l0aCgiYz1JTiBJUDYiKSkgewotICAgICAgICAgICAgZmls
dGVyZWRTRFAuYXBwZW5kKCJjPUlOIElQNiA6OlxyXG4iKTsKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgfQotICAgICAgICBpZiAoIWxpbmUuc3RhcnRzV2l0aCgiYT1jYW5kaWRhdGUiKSkg
ewotICAgICAgICAgICAgZmlsdGVyZWRTRFAuYXBwZW5kKGxpbmUpOwotICAgICAgICAgICAgZmls
dGVyZWRTRFAuYXBwZW5kKCdcbicpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0g
ICAgICAgIGlmIChsaW5lLmZpbmQoIiBob3N0ICIsIDExKSA9PSBub3RGb3VuZCkgewotICAgICAg
ICAgICAgZmlsdGVyZWRTRFAuYXBwZW5kKGZpbHRlcklDRUNhbmRpZGF0ZShsaW5lLnRvU3RyaW5n
KCkpKTsKLSAgICAgICAgICAgIGZpbHRlcmVkU0RQLmFwcGVuZCgnXG4nKTsKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGF1dG8gaXBBZGRyZXNzID0gZXh0cmFjdElQ
QWRkcmVzcyhsaW5lKTsKLSAgICAgICAgYXV0byBtZG5zTmFtZSA9IG1faXBBZGRyZXNzVG9NRE5T
TmFtZU1hcC5nZXQoaXBBZGRyZXNzKTsKLSAgICAgICAgaWYgKG1kbnNOYW1lLmlzRW1wdHkoKSkK
LSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgYXV0byBzZHAgPSBsaW5lLnRvU3RyaW5nKCk7
Ci0gICAgICAgIHNkcC5yZXBsYWNlKGlwQWRkcmVzcywgbWRuc05hbWUpOwotICAgICAgICBmaWx0
ZXJlZFNEUC5hcHBlbmQoc2RwKTsKLSAgICAgICAgZmlsdGVyZWRTRFAuYXBwZW5kKCdcbicpOwor
ICAgICAgICByZXR1cm47CisgICAgc2RwLnNwbGl0KCdcbicsIFtdKGF1dG8gbGluZSkgeworICAg
ICAgICBBU1NFUlQoIWxpbmUuc3RhcnRzV2l0aCgiYT1jYW5kaWRhdGUiKSB8fCBsaW5lLmNvbnRh
aW5zKCIubG9jYWwiKSk7CiAgICAgfSk7Ci0gICAgcmV0dXJuIGZpbHRlcmVkU0RQLnRvU3RyaW5n
KCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShzZHApOworI2VuZGlmCiB9CiAKIHZvaWQgUGVl
ckNvbm5lY3Rpb25CYWNrZW5kOjpuZXdJQ0VDYW5kaWRhdGUoU3RyaW5nJiYgc2RwLCBTdHJpbmcm
JiBtaWQsIHVuc2lnbmVkIHNob3J0IHNkcE1MaW5lSW5kZXgsIFN0cmluZyYmIHNlcnZlclVSTCkK
QEAgLTQ2MCwyMiArMzk5LDggQEAgdm9pZCBQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6Om5ld0lDRUNh
bmRpZGF0ZShTdHJpbmcmJiBzZHAsIFN0cmluZyYmIG1pZCwgdW5zaWduZWQKICAgICAgICAgQUxX
QVlTX0xPRyhsb2dTaXRlSWRlbnRpZmllciwgIkdhdGhlcmVkIGljZSBjYW5kaWRhdGU6Iiwgc2Rw
KTsKICAgICAgICAgbV9maW5pc2hlZEdhdGhlcmluZ0NhbmRpZGF0ZXMgPSBmYWxzZTsKIAotICAg
ICAgICBpZiAoIW1fc2hvdWxkRmlsdGVySUNFQ2FuZGlkYXRlcykgewotICAgICAgICAgICAgZmly
ZUlDRUNhbmRpZGF0ZUV2ZW50KFJUQ0ljZUNhbmRpZGF0ZTo6Y3JlYXRlKFdURk1vdmUoc2RwKSwg
V1RGTW92ZShtaWQpLCBzZHBNTGluZUluZGV4KSwgV1RGTW92ZShzZXJ2ZXJVUkwpKTsKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBpZiAoc2RwLmZpbmQoIiBob3N0ICIs
IDApICE9IG5vdEZvdW5kKSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogV2UgbWlnaHQgbmVlZCB0
byBjbGVhciBhbGwgcGVuZGluZyBjYW5kaWRhdGVzIHdoZW4gc2V0dGluZyBhZ2FpbiBsb2NhbCBk
ZXNjcmlwdGlvbi4KLSAgICAgICAgICAgIG1fcGVuZGluZ0lDRUNhbmRpZGF0ZXMuYXBwZW5kKFBl
bmRpbmdJQ0VDYW5kaWRhdGUgeyBTdHJpbmcgeyBzZHAgfSwgV1RGTW92ZShtaWQpLCBzZHBNTGlu
ZUluZGV4LCBXVEZNb3ZlKHNlcnZlclVSTCkgfSk7Ci0gICAgICAgICAgICBpZiAoUnVudGltZUVu
YWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS53ZWJSVENNRE5TSUNFQ2FuZGlkYXRlc0Vu
YWJsZWQoKSkgewotICAgICAgICAgICAgICAgIGF1dG8gaXBBZGRyZXNzID0gZXh0cmFjdElQQWRk
cmVzcyhzZHApOwotICAgICAgICAgICAgICAgIC8vIFdlIHJlc3RyaWN0IHRvIElQdjQgY2FuZGlk
YXRlcyBmb3Igbm93LgotICAgICAgICAgICAgICAgIGlmIChpcEFkZHJlc3MuY29udGFpbnMoJy4n
KSkKLSAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJNRE5TTmFtZShpcEFkZHJlc3MpOwotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGZpcmVJ
Q0VDYW5kaWRhdGVFdmVudChSVENJY2VDYW5kaWRhdGU6OmNyZWF0ZShmaWx0ZXJJQ0VDYW5kaWRh
dGUoV1RGTW92ZShzZHApKSwgV1RGTW92ZShtaWQpLCBzZHBNTGluZUluZGV4KSwgV1RGTW92ZShz
ZXJ2ZXJVUkwpKTsKKyAgICAgICAgQVNTRVJUKCFtX3Nob3VsZEZpbHRlcklDRUNhbmRpZGF0ZXMg
fHwgc2RwLmNvbnRhaW5zKCIubG9jYWwiKSk7CisgICAgICAgIGZpcmVJQ0VDYW5kaWRhdGVFdmVu
dChSVENJY2VDYW5kaWRhdGU6OmNyZWF0ZShXVEZNb3ZlKHNkcCksIFdURk1vdmUobWlkKSwgc2Rw
TUxpbmVJbmRleCksIFdURk1vdmUoc2VydmVyVVJMKSk7CiAgICAgfSk7CiB9CiAKQEAgLTQ4NSwx
MiArNDEwLDggQEAgdm9pZCBQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmRvbmVHYXRoZXJpbmdDYW5k
aWRhdGVzKCkKICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJGaW5pc2hlZCBpY2UgY2Fu
ZGlkYXRlIGdhdGhlcmluZyIpOwogICAgIG1fZmluaXNoZWRHYXRoZXJpbmdDYW5kaWRhdGVzID0g
dHJ1ZTsKIAotICAgIGlmIChtX3dhaXRpbmdGb3JNRE5TUmVnaXN0cmF0aW9uKQotICAgICAgICBy
ZXR1cm47Ci0KICAgICBtX3BlZXJDb25uZWN0aW9uLmRpc3BhdGNoRXZlbnRXaGVuRmVhc2libGUo
UlRDUGVlckNvbm5lY3Rpb25JY2VFdmVudDo6Y3JlYXRlKEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBF
dmVudDo6SXNDYW5jZWxhYmxlOjpObywgbnVsbHB0ciwgeyB9KSk7CiAgICAgbV9wZWVyQ29ubmVj
dGlvbi51cGRhdGVJY2VHYXRoZXJpbmdTdGF0ZShSVENJY2VHYXRoZXJpbmdTdGF0ZTo6Q29tcGxl
dGUpOwotICAgIG1fcGVuZGluZ0lDRUNhbmRpZGF0ZXMuY2xlYXIoKTsKIH0KIAogdm9pZCBQZWVy
Q29ubmVjdGlvbkJhY2tlbmQ6OmVuZE9mSWNlQ2FuZGlkYXRlcyhET01Qcm9taXNlRGVmZXJyZWQ8
dm9pZD4mJiBwcm9taXNlKQpAQCAtNDk4LDQ1ICs0MTksNiBAQCB2b2lkIFBlZXJDb25uZWN0aW9u
QmFja2VuZDo6ZW5kT2ZJY2VDYW5kaWRhdGVzKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHBy
b21pcwogICAgIHByb21pc2UucmVzb2x2ZSgpOwogfQogCi12b2lkIFBlZXJDb25uZWN0aW9uQmFj
a2VuZDo6cmVnaXN0ZXJNRE5TTmFtZShjb25zdCBTdHJpbmcmIGlwQWRkcmVzcykKLXsKLSAgICAr
K21fd2FpdGluZ0Zvck1ETlNSZWdpc3RyYXRpb247Ci0gICAgYXV0byYgZG9jdW1lbnQgPSBkb3du
Y2FzdDxEb2N1bWVudD4oKm1fcGVlckNvbm5lY3Rpb24uc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
KTsKLSAgICBhdXRvJiBwcm92aWRlciA9IGRvY3VtZW50LnBhZ2UoKS0+bGliV2ViUlRDUHJvdmlk
ZXIoKTsKLSAgICBwcm92aWRlci5yZWdpc3Rlck1ETlNOYW1lKGRvY3VtZW50LmlkZW50aWZpZXIo
KSwgaXBBZGRyZXNzLCBbcGVlckNvbm5lY3Rpb24gPSBtYWtlUmVmKG1fcGVlckNvbm5lY3Rpb24p
LCB0aGlzLCBpcEFkZHJlc3NdIChMaWJXZWJSVENQcm92aWRlcjo6TUROU05hbWVPckVycm9yJiYg
cmVzdWx0KSB7Ci0gICAgICAgIGlmIChwZWVyQ29ubmVjdGlvbi0+aXNTdG9wcGVkKCkpCi0gICAg
ICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgLS1tX3dhaXRpbmdGb3JNRE5TUmVnaXN0cmF0aW9u
OwotICAgICAgICBpZiAoIXJlc3VsdC5oYXNfdmFsdWUoKSkgewotICAgICAgICAgICAgbV9wZWVy
Q29ubmVjdGlvbi5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmFkZENvbnNvbGVNZXNzYWdlKE1l
c3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIG1ha2VTdHJpbmcoIk1ETlMg
cmVnaXN0cmF0aW9uIG9mIGEgaG9zdCBjYW5kaWRhdGUgZmFpbGVkIHdpdGggZXJyb3IgIiwgKHVu
c2lnbmVkKXJlc3VsdC5lcnJvcigpKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0K
LQotICAgICAgICB0aGlzLT5maW5pc2hlZFJlZ2lzdGVyaW5nTUROU05hbWUoaXBBZGRyZXNzLCBy
ZXN1bHQudmFsdWUoKSk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgUGVlckNvbm5lY3Rpb25CYWNrZW5k
OjpmaW5pc2hlZFJlZ2lzdGVyaW5nTUROU05hbWUoY29uc3QgU3RyaW5nJiBpcEFkZHJlc3MsIGNv
bnN0IFN0cmluZyYgbmFtZSkKLXsKLSAgICBtX2lwQWRkcmVzc1RvTUROU05hbWVNYXAuYWRkKGlw
QWRkcmVzcywgbmFtZSk7Ci0gICAgVmVjdG9yPFBlbmRpbmdJQ0VDYW5kaWRhdGUqPiBjYW5kaWRh
dGVzOwotICAgIGZvciAoYXV0byYgY2FuZGlkYXRlIDogbV9wZW5kaW5nSUNFQ2FuZGlkYXRlcykg
ewotICAgICAgICBpZiAoY2FuZGlkYXRlLnNkcC5maW5kKGlwQWRkcmVzcykgIT0gbm90Rm91bmQp
IHsKLSAgICAgICAgICAgIGF1dG8gc2RwID0gY2FuZGlkYXRlLnNkcDsKLSAgICAgICAgICAgIHNk
cC5yZXBsYWNlKGlwQWRkcmVzcywgbmFtZSk7Ci0gICAgICAgICAgICBmaXJlSUNFQ2FuZGlkYXRl
RXZlbnQoUlRDSWNlQ2FuZGlkYXRlOjpjcmVhdGUoV1RGTW92ZShzZHApLCBXVEZNb3ZlKGNhbmRp
ZGF0ZS5taWQpLCBjYW5kaWRhdGUuc2RwTUxpbmVJbmRleCksIFdURk1vdmUoY2FuZGlkYXRlLnNl
cnZlclVSTCkpOwotICAgICAgICAgICAgY2FuZGlkYXRlcy5hcHBlbmQoJmNhbmRpZGF0ZSk7Ci0g
ICAgICAgIH0KLSAgICB9Ci0gICAgbV9wZW5kaW5nSUNFQ2FuZGlkYXRlcy5yZW1vdmVBbGxNYXRj
aGluZyhbJl0gKGNvbnN0IGF1dG8mIGNhbmRpZGF0ZSkgewotICAgICAgICByZXR1cm4gY2FuZGlk
YXRlcy5jb250YWlucygmY2FuZGlkYXRlKTsKLSAgICB9KTsKLQotICAgIGlmICghbV93YWl0aW5n
Rm9yTUROU1JlZ2lzdHJhdGlvbiAmJiBtX2ZpbmlzaGVkR2F0aGVyaW5nQ2FuZGlkYXRlcykKLSAg
ICAgICAgZG9uZUdhdGhlcmluZ0NhbmRpZGF0ZXMoKTsKLX0KLQogdm9pZCBQZWVyQ29ubmVjdGlv
bkJhY2tlbmQ6OnVwZGF0ZVNpZ25hbGluZ1N0YXRlKFJUQ1NpZ25hbGluZ1N0YXRlIG5ld1NpZ25h
bGluZ1N0YXRlKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tl
bmQuaAppbmRleCAxYzI1NTY2MjVlZWJjMmY3NzYyMzhhODM1ZDM3NDhiMDE2YTNmNTY0Li42ZjNm
YjQyYTgwZTJlYzYyZWNhNDE3NDUwZWQ1YmY1OTJkZDZhYTYzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5k
LmgKQEAgLTIwOSw3ICsyMDksNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBhZGRJY2VDYW5kaWRh
dGVTdWNjZWVkZWQoKTsKICAgICB2b2lkIGFkZEljZUNhbmRpZGF0ZUZhaWxlZChFeGNlcHRpb24m
Jik7CiAKLSAgICBTdHJpbmcgZmlsdGVyU0RQKFN0cmluZyYmKSBjb25zdDsKKyAgICB2b2lkIHZh
bGlkYXRlU0RQKGNvbnN0IFN0cmluZyYpIGNvbnN0OwogCiAgICAgc3RydWN0IFBlbmRpbmdUcmFj
a0V2ZW50IHsKICAgICAgICAgUmVmPFJUQ1J0cFJlY2VpdmVyPiByZWNlaXZlcjsKQEAgLTIyOCw4
ICsyMjgsNiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBlbmRPZkljZUNhbmRpZGF0ZXMo
RE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYpOwogICAgIHZpcnR1YWwgdm9pZCBkb1N0b3AoKSA9
IDA7CiAKLSAgICB2b2lkIHJlZ2lzdGVyTUROU05hbWUoY29uc3QgU3RyaW5nJiBpcEFkZHJlc3Mp
OwotCiBwcm90ZWN0ZWQ6CiAgICAgUlRDUGVlckNvbm5lY3Rpb24mIG1fcGVlckNvbm5lY3Rpb247
CiAKQEAgLTIzNywyNiArMjM1LDE2IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPFBl
ZXJDb25uZWN0aW9uOjpTZXNzaW9uRGVzY3JpcHRpb25Qcm9taXNlPiBtX29mZmVyQW5zd2VyUHJv
bWlzZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+PiBtX3Nl
dERlc2NyaXB0aW9uUHJvbWlzZTsKIAotICAgIGJvb2wgbV9zaG91bGRGaWx0ZXJJQ0VDYW5kaWRh
dGVzIHsgdHJ1ZSB9OwotICAgIHN0cnVjdCBQZW5kaW5nSUNFQ2FuZGlkYXRlIHsKLSAgICAgICAg
Ly8gRmllbGRzIGRlc2NyaWJlZCBpbiBodHRwczovL3d3dy53My5vcmcvVFIvd2VicnRjLyNpZGwt
ZGVmLXJ0Y2ljZWNhbmRpZGF0ZWluaXQuCi0gICAgICAgIFN0cmluZyBzZHA7Ci0gICAgICAgIFN0
cmluZyBtaWQ7Ci0gICAgICAgIHVuc2lnbmVkIHNob3J0IHNkcE1MaW5lSW5kZXg7Ci0gICAgICAg
IFN0cmluZyBzZXJ2ZXJVUkw7Ci0gICAgfTsKLSAgICBWZWN0b3I8UGVuZGluZ0lDRUNhbmRpZGF0
ZT4gbV9wZW5kaW5nSUNFQ2FuZGlkYXRlczsKKyAgICBib29sIG1fc2hvdWxkRmlsdGVySUNFQ2Fu
ZGlkYXRlcyB7IGZhbHNlIH07CiAKICAgICBWZWN0b3I8UGVuZGluZ1RyYWNrRXZlbnQ+IG1fcGVu
ZGluZ1RyYWNrRXZlbnRzOwogCi0gICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gbV9pcEFkZHJl
c3NUb01ETlNOYW1lTWFwOwogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIFJlZjxjb25z
dCBMb2dnZXI+IG1fbG9nZ2VyOwogICAgIGNvbnN0IHZvaWQqIG1fbG9nSWRlbnRpZmllcjsKICNl
bmRpZgogICAgIGJvb2wgbV9uZWdvdGlhdGlvbk5lZWRlZCB7IGZhbHNlIH07CiAgICAgYm9vbCBt
X2ZpbmlzaGVkR2F0aGVyaW5nQ2FuZGlkYXRlcyB7IGZhbHNlIH07Ci0gICAgdWludDY0X3QgbV93
YWl0aW5nRm9yTUROU1JlZ2lzdHJhdGlvbiB7IDAgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0Nv
bnRyb2xsZXIuY3BwCmluZGV4IDcwZDQwYzZiZDViMzI2MmYyY2ZlNjE1ZmJjMmI0NWM2MjljY2Y0
M2UuLmNmMzQ1YTQ2MmZjZGIyMTE5ZjdmYmRmNWViZGRmMDE0NWViYTc2YjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDQ29udHJvbGxlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENDb250cm9sbGVyLmNwcApA
QCAtNzMsNiArNzMsMTAgQEAgYm9vbCBSVENDb250cm9sbGVyOjpzaG91bGREaXNhYmxlSUNFQ2Fu
ZGlkYXRlRmlsdGVyaW5nKERvY3VtZW50JiBkb2N1bWVudCkKIAogdm9pZCBSVENDb250cm9sbGVy
OjphZGQoUlRDUGVlckNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCiB7CisgICAgYXV0byYgZG9jdW1l
bnQgPSBkb3duY2FzdDxEb2N1bWVudD4oKmNvbm5lY3Rpb24uc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpKTsKKyAgICBpZiAoYXV0byogbmV0d29ya01hbmFnZXIgPSBkb2N1bWVudC5ydGNOZXR3b3Jr
TWFuYWdlcigpKQorICAgICAgICBuZXR3b3JrTWFuYWdlci0+c2V0SUNFQ2FuZGlkYXRlRmlsdGVy
aW5nKCFzaG91bGREaXNhYmxlSUNFQ2FuZGlkYXRlRmlsdGVyaW5nKGRvY3VtZW50KSk7CisKICAg
ICBtX3BlZXJDb25uZWN0aW9ucy5hcHBlbmQoY29ubmVjdGlvbik7CiAgICAgaWYgKHNob3VsZERp
c2FibGVJQ0VDYW5kaWRhdGVGaWx0ZXJpbmcoZG93bmNhc3Q8RG9jdW1lbnQ+KCpjb25uZWN0aW9u
LnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkpKQogICAgICAgICBjb25uZWN0aW9uLmRpc2FibGVJ
Q0VDYW5kaWRhdGVGaWx0ZXJpbmcoKTsKQEAgLTg0LDggKzg4LDEzIEBAIHZvaWQgUlRDQ29udHJv
bGxlcjo6ZGlzYWJsZUlDRUNhbmRpZGF0ZUZpbHRlcmluZ0ZvckFsbE9yaWdpbnMoKQogICAgICAg
ICByZXR1cm47CiAKICAgICBtX3Nob3VsZEZpbHRlcklDRUNhbmRpZGF0ZXMgPSBmYWxzZTsKLSAg
ICBmb3IgKFJUQ1BlZXJDb25uZWN0aW9uJiBjb25uZWN0aW9uIDogbV9wZWVyQ29ubmVjdGlvbnMp
CisgICAgZm9yIChSVENQZWVyQ29ubmVjdGlvbiYgY29ubmVjdGlvbiA6IG1fcGVlckNvbm5lY3Rp
b25zKSB7CisgICAgICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50Pihj
b25uZWN0aW9uLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkpIHsKKyAgICAgICAgICAgIGlmIChh
dXRvKiBuZXR3b3JrTWFuYWdlciA9IGRvY3VtZW50LT5ydGNOZXR3b3JrTWFuYWdlcigpKQorICAg
ICAgICAgICAgICAgIG5ldHdvcmtNYW5hZ2VyLT5zZXRJQ0VDYW5kaWRhdGVGaWx0ZXJpbmcoZmFs
c2UpOworICAgICAgICB9CiAgICAgICAgIGNvbm5lY3Rpb24uZGlzYWJsZUlDRUNhbmRpZGF0ZUZp
bHRlcmluZygpOworICAgIH0KIH0KIAogdm9pZCBSVENDb250cm9sbGVyOjpkaXNhYmxlSUNFQ2Fu
ZGlkYXRlRmlsdGVyaW5nRm9yRG9jdW1lbnQoRG9jdW1lbnQmIGRvY3VtZW50KQpAQCAtOTMsMTEg
KzEwMiwxNyBAQCB2b2lkIFJUQ0NvbnRyb2xsZXI6OmRpc2FibGVJQ0VDYW5kaWRhdGVGaWx0ZXJp
bmdGb3JEb2N1bWVudChEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgaWYgKCFMaWJXZWJSVENQcm92
aWRlcjo6d2ViUlRDQXZhaWxhYmxlKCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIGlmIChhdXRv
KiBuZXR3b3JrTWFuYWdlciA9IGRvY3VtZW50LnJ0Y05ldHdvcmtNYW5hZ2VyKCkpCisgICAgICAg
IG5ldHdvcmtNYW5hZ2VyLT5zZXRJQ0VDYW5kaWRhdGVGaWx0ZXJpbmcoZmFsc2UpOworCiAgICAg
bV9maWx0ZXJpbmdEaXNhYmxlZE9yaWdpbnMuYXBwZW5kKFBlZXJDb25uZWN0aW9uT3JpZ2luIHsg
ZG9jdW1lbnQudG9wT3JpZ2luKCksIGRvY3VtZW50LnNlY3VyaXR5T3JpZ2luKCkgfSk7CiAgICAg
Zm9yIChSVENQZWVyQ29ubmVjdGlvbiYgY29ubmVjdGlvbiA6IG1fcGVlckNvbm5lY3Rpb25zKSB7
CiAgICAgICAgIGlmIChhdXRvKiBwZWVyQ29ubmVjdGlvbkRvY3VtZW50ID0gZG93bmNhc3Q8RG9j
dW1lbnQ+KGNvbm5lY3Rpb24uc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSkgewotICAgICAgICAg
ICAgaWYgKG1hdGNoRG9jdW1lbnRPcmlnaW4oKnBlZXJDb25uZWN0aW9uRG9jdW1lbnQsIGRvY3Vt
ZW50LnRvcE9yaWdpbigpLCBkb2N1bWVudC5zZWN1cml0eU9yaWdpbigpKSkKKyAgICAgICAgICAg
IGlmIChtYXRjaERvY3VtZW50T3JpZ2luKCpwZWVyQ29ubmVjdGlvbkRvY3VtZW50LCBkb2N1bWVu
dC50b3BPcmlnaW4oKSwgZG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4oKSkpIHsKKyAgICAgICAgICAg
ICAgICBpZiAoYXV0byogbmV0d29ya01hbmFnZXIgPSBwZWVyQ29ubmVjdGlvbkRvY3VtZW50LT5y
dGNOZXR3b3JrTWFuYWdlcigpKQorICAgICAgICAgICAgICAgICAgICBuZXR3b3JrTWFuYWdlci0+
c2V0SUNFQ2FuZGlkYXRlRmlsdGVyaW5nKGZhbHNlKTsKICAgICAgICAgICAgICAgICBjb25uZWN0
aW9uLmRpc2FibGVJQ0VDYW5kaWRhdGVGaWx0ZXJpbmcoKTsKKyAgICAgICAgICAgIH0KICAgICAg
ICAgfQogICAgIH0KIH0KQEAgLTEwOSw4ICsxMjQsMTMgQEAgdm9pZCBSVENDb250cm9sbGVyOjpl
bmFibGVJQ0VDYW5kaWRhdGVGaWx0ZXJpbmcoKQogCiAgICAgbV9maWx0ZXJpbmdEaXNhYmxlZE9y
aWdpbnMuY2xlYXIoKTsKICAgICBtX3Nob3VsZEZpbHRlcklDRUNhbmRpZGF0ZXMgPSB0cnVlOwot
ICAgIGZvciAoUlRDUGVlckNvbm5lY3Rpb24mIGNvbm5lY3Rpb24gOiBtX3BlZXJDb25uZWN0aW9u
cykKKyAgICBmb3IgKFJUQ1BlZXJDb25uZWN0aW9uJiBjb25uZWN0aW9uIDogbV9wZWVyQ29ubmVj
dGlvbnMpIHsKICAgICAgICAgY29ubmVjdGlvbi5lbmFibGVJQ0VDYW5kaWRhdGVGaWx0ZXJpbmco
KTsKKyAgICAgICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbm5l
Y3Rpb24uc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSkgeworICAgICAgICAgICAgaWYgKGF1dG8q
IG5ldHdvcmtNYW5hZ2VyID0gZG9jdW1lbnQtPnJ0Y05ldHdvcmtNYW5hZ2VyKCkpCisgICAgICAg
ICAgICAgICAgbmV0d29ya01hbmFnZXItPnNldElDRUNhbmRpZGF0ZUZpbHRlcmluZyh0cnVlKTsK
KyAgICAgICAgfQorICAgIH0KIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENOZXR3b3JrTWFuYWdlci5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENOZXR3b3JrTWFuYWdlci5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjVmMzZmZDQ2MWY4MWFiYmEyYzAyYmI4MWYxZmI1Zjk5NzgwMjVmZDAKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ05l
dHdvcmtNYW5hZ2VyLmgKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2lmIEVOQUJMRShXRUJfUlRDKQorCisjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZD
b3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUlRDTmV0d29ya01hbmFn
ZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8UlRDTmV0d29ya01hbmFnZXIsIFdURjo6
RGVzdHJ1Y3Rpb25UaHJlYWQ6Ok1haW5SdW5Mb29wPiB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+
UlRDTmV0d29ya01hbmFnZXIoKSA9IGRlZmF1bHQ7CisgICAgdmlydHVhbCB2b2lkIHNldElDRUNh
bmRpZGF0ZUZpbHRlcmluZyhib29sKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJN
RE5TTmFtZXMoKSA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBFTkFCTEUoV0VCX1JUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRwb2lu
dC5jcHAKaW5kZXggNTNjNDRhZGYxMmE5YmVkNzRjYTVkYjhhOTU2ODAyM2Q4OTkyNjY1NS4uMjIw
ODdhMzYyZGY2Yzg5MGI1OTliMTFmZDFkNDQ1OGU5ZWI4YTEzZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRw
b2ludC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJy
dGMvTGliV2ViUlRDTWVkaWFFbmRwb2ludC5jcHAKQEAgLTkzLDE1ICs5MywxNSBAQCBib29sIExp
YldlYlJUQ01lZGlhRW5kcG9pbnQ6OnNldENvbmZpZ3VyYXRpb24oTGliV2ViUlRDUHJvdmlkZXIm
IGNsaWVudCwgd2VicnRjOgogICAgIGNvbmZpZ3VyYXRpb24uc2RwX3NlbWFudGljcyA9IHdlYnJ0
Yzo6U2RwU2VtYW50aWNzOjprVW5pZmllZFBsYW47CiAKICAgICBpZiAoIW1fYmFja2VuZCkgewor
ICAgICAgICBhdXRvJiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50PigqbV9wZWVyQ29ubmVj
dGlvbkJhY2tlbmQuY29ubmVjdGlvbigpLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAg
ICAgIGlmICghbV9ydGNTb2NrZXRGYWN0b3J5KSB7Ci0gICAgICAgICAgICBhdXRvJiBkb2N1bWVu
dCA9IGRvd25jYXN0PERvY3VtZW50PigqbV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQuY29ubmVjdGlv
bigpLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgICAgICAgICBSZWdpc3RyYWJsZURv
bWFpbiBkb21haW4geyBkb2N1bWVudC51cmwoKSB9OwogICAgICAgICAgICAgYm9vbCBpc0ZpcnN0
UGFydHkgPSBkb21haW4gPT0gUmVnaXN0cmFibGVEb21haW4oZG9jdW1lbnQuZmlyc3RQYXJ0eUZv
ckNvb2tpZXMoKSk7CiAgICAgICAgICAgICBtX3J0Y1NvY2tldEZhY3RvcnkgPSBjbGllbnQuY3Jl
YXRlU29ja2V0RmFjdG9yeShkb2N1bWVudC51c2VyQWdlbnQoZG9jdW1lbnQudXJsKCkpLCBpc0Zp
cnN0UGFydHksIFdURk1vdmUoZG9tYWluKSk7CiAgICAgICAgICAgICBpZiAoIW1fcGVlckNvbm5l
Y3Rpb25CYWNrZW5kLnNob3VsZEZpbHRlcklDRUNhbmRpZGF0ZXMoKSkKICAgICAgICAgICAgICAg
ICBtX3J0Y1NvY2tldEZhY3RvcnktPmRpc2FibGVSZWxheSgpOwogICAgICAgICB9Ci0gICAgICAg
IG1fYmFja2VuZCA9IGNsaWVudC5jcmVhdGVQZWVyQ29ubmVjdGlvbigqdGhpcywgbV9ydGNTb2Nr
ZXRGYWN0b3J5LmdldCgpLCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKTsKKyAgICAgICAgbV9iYWNr
ZW5kID0gY2xpZW50LmNyZWF0ZVBlZXJDb25uZWN0aW9uKGRvY3VtZW50LmlkZW50aWZpZXIoKSwg
KnRoaXMsIG1fcnRjU29ja2V0RmFjdG9yeS5nZXQoKSwgV1RGTW92ZShjb25maWd1cmF0aW9uKSk7
CiAgICAgICAgIHJldHVybiAhIW1fYmFja2VuZDsKICAgICB9CiAgICAgYXV0byBvbGRDb25maWd1
cmF0aW9uID0gbV9iYWNrZW5kLT5HZXRDb25maWd1cmF0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29u
bmVjdGlvbkJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9s
aWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAppbmRleCA1OTYwMmIw
OWFlYzllMGFiYjNkMjI3YzMwZjkyODk0ZDRiYTZkNjI0Li5jNjllMGM2ZDdiZTcwYmUxZDcwMTMw
ODEzN2Q4ZTM1Y2ZlMmJlM2JkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJU
Q1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAKQEAgLTMxMCw3ICszMTAsNyBAQCBSZWZQdHI8UlRD
U2Vzc2lvbkRlc2NyaXB0aW9uPiBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmN1cnJl
bnRMb2NhbERlc2NyaQogewogICAgIGF1dG8gZGVzY3JpcHRpb24gPSBtX2VuZHBvaW50LT5jdXJy
ZW50TG9jYWxEZXNjcmlwdGlvbigpOwogICAgIGlmIChkZXNjcmlwdGlvbikKLSAgICAgICAgZGVz
Y3JpcHRpb24tPnNldFNkcChmaWx0ZXJTRFAoU3RyaW5nKGRlc2NyaXB0aW9uLT5zZHAoKSkpKTsK
KyAgICAgICAgdmFsaWRhdGVTRFAoZGVzY3JpcHRpb24tPnNkcCgpKTsKICAgICByZXR1cm4gZGVz
Y3JpcHRpb247CiB9CiAKQEAgLTMyMyw3ICszMjMsNyBAQCBSZWZQdHI8UlRDU2Vzc2lvbkRlc2Ny
aXB0aW9uPiBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OnBlbmRpbmdMb2NhbERlc2Ny
aQogewogICAgIGF1dG8gZGVzY3JpcHRpb24gPSBtX2VuZHBvaW50LT5wZW5kaW5nTG9jYWxEZXNj
cmlwdGlvbigpOwogICAgIGlmIChkZXNjcmlwdGlvbikKLSAgICAgICAgZGVzY3JpcHRpb24tPnNl
dFNkcChmaWx0ZXJTRFAoU3RyaW5nKGRlc2NyaXB0aW9uLT5zZHAoKSkpKTsKKyAgICAgICAgdmFs
aWRhdGVTRFAoZGVzY3JpcHRpb24tPnNkcCgpKTsKICAgICByZXR1cm4gZGVzY3JpcHRpb247CiB9
CiAKQEAgLTMzNiw3ICszMzYsNyBAQCBSZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uPiBMaWJX
ZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmxvY2FsRGVzY3JpcHRpb24oKQogewogICAgIGF1
dG8gZGVzY3JpcHRpb24gPSBtX2VuZHBvaW50LT5sb2NhbERlc2NyaXB0aW9uKCk7CiAgICAgaWYg
KGRlc2NyaXB0aW9uKQotICAgICAgICBkZXNjcmlwdGlvbi0+c2V0U2RwKGZpbHRlclNEUChTdHJp
bmcoZGVzY3JpcHRpb24tPnNkcCgpKSkpOworICAgICAgICB2YWxpZGF0ZVNEUChkZXNjcmlwdGlv
bi0+c2RwKCkpOwogICAgIHJldHVybiBkZXNjcmlwdGlvbjsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDljZmM1ZjI1ZDA0
ZmViZDI5YjJjMWY0ZmUwZGIxODhjMDRhMTE1MDYuLmU0OWJjZmFmZmY3NGU3YjUxNjg1Njg4NDNm
MzNmMDg3MjEyMWM4NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTExNzIsNiArMTE3Miw5IEBACiAJCTQxQjg3NzYyMjNERTEw
NDUwMDM2MzhCOCAvKiBSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFCODc3NjAyM0RFMTA0MjAwMzYz
OEI4IC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDFCQkE4NjYyNTdFMzczQjAwQUM3RjZE
IC8qIFNGcmFtZVV0aWxzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0MTIwOUUyNDI1N0EyRkJCMDAxMjBBQ0EgLyogU0ZyYW1lVXRpbHMuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MUJGMjA0OTIyQkE3
QkU4MDAwNEY4MTIgLyogUmVhbHRpbWVWaWRlb1NvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFCRjIwNDAyMkI5NDcxNjAwMDRGODEyIC8qIFJl
YWx0aW1lVmlkZW9Tb3VyY2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQk0MUMxNEJDNjI2REU2REU4MDA2ODVCRjUgLyogUlRDTmV0d29ya01hbmFn
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQzE0
QkM0MjZERTZERTgwMDY4NUJGNSAvKiBSVENOZXR3b3JrTWFuYWdlci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQxQzE0QkM3MjZERTg1ODQwMDY4
NUJGNSAvKiBMaWJXZWJSVENVdGlscy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDFEMUEwNEMyMTNFRERGRjAwNjNGQjZCIC8qIExpYldlYlJUQ1V0aWxz
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDFD
MTRCQzkyNkRGNzlENzAwNjg1QkY1IC8qIE1ETlNSZWdpc3RlckVycm9yLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUMxNEJDODI2REY3OUQ2MDA2ODVC
RjUgLyogTUROU1JlZ2lzdGVyRXJyb3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk0MUMzQjhBMTI2NDlCMUUwMDA0RUQ0REUgLyogQXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQzNCODlGMjY0OUIxQjcwMDRFRDRERSAvKiBBdWRp
b01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxQzNCOEEyMjY0OUIxRTUwMDRFRDRE
RSAvKiBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQzNCODlCMjY0OUIxQjYwMDRFRDRERSAv
KiBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MUM3NjBCMTBFREUwM0QzMDBDMTY1NUYg
LyogU2NyaXB0U3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQxQzc2MEIwMEVERTAzRDMwMEMxNjU1RiAvKiBTY3JpcHRTdGF0ZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC04MDQ0LDYgKzgwNDcs
OCBAQAogCQk0MUJDRTg3NzI1RjdBNjdBMDA0NkMyRTUgLyogUlRDVHJhbnNmb3JtRXZlbnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUlRDVHJhbnNmb3JtRXZlbnQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFCRjIwNDAyMkI5NDcxNjAwMDRGODEyIC8qIFJl
YWx0aW1lVmlkZW9Tb3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVhbHRpbWVWaWRlb1NvdXJjZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUJGMjA0MjIyQjk0NzE3MDAwNEY4MTIg
LyogUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWFsdGltZVZp
ZGVvU291cmNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFDMTRCQzQyNkRF
NkRFODAwNjg1QkY1IC8qIFJUQ05ldHdvcmtNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFJUQ05ldHdvcmtNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTQxQzE0QkM4MjZERjc5RDYwMDY4NUJGNSAvKiBNRE5TUmVnaXN0ZXJFcnJvci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNRE5TUmVnaXN0ZXJFcnJvci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUMzQjg5QjI2NDlCMUI2MDA0RUQ0REUgLyogQXVk
aW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0MUMzQjg5QzI2NDlCMUI2MDA0RUQ0REUgLyogQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVy
ZXJDb2NvYS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNv
Y29hLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQzNCODlEMjY0OUIxQjYwMDRF
RDRERSAvKiBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29hLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2EuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTcyNTQsNiArMTcyNTksNyBAQAogCQkJCTMxNkRDQjg5
MUU3QTY5OTYwMDFCNUY4NyAvKiBSVENJY2VUcmFuc3BvcnQuaWRsICovLAogCQkJCTQxNDUxNkUw
MjZDQzA0MjEwMEFBQUJFMCAvKiBSVENJY2VUcmFuc3BvcnRCYWNrZW5kLmggKi8sCiAJCQkJMzE2
RENCOEUxRTdBNkM3OTAwMUI1Rjg3IC8qIFJUQ0ljZVRyYW5zcG9ydFN0YXRlLmlkbCAqLywKKwkJ
CQk0MUMxNEJDNDI2REU2REU4MDA2ODVCRjUgLyogUlRDTmV0d29ya01hbmFnZXIuaCAqLywKIAkJ
CQkwNzM3OTREQzE5RUUyQzUyMDBFNUEwNDUgLyogUlRDT2ZmZXJBbnN3ZXJPcHRpb25zLmggKi8s
CiAJCQkJMzE2RENCMTIxRTc4QkU0MzAwMUI1Rjg3IC8qIFJUQ09mZmVyQW5zd2VyT3B0aW9ucy5p
ZGwgKi8sCiAJCQkJMzE2RENCMjgxRTc4RjM5NTAwMUI1Rjg3IC8qIFJUQ09mZmVyT3B0aW9ucy5o
ICovLApAQCAtMTczODEsNiArMTczODcsNyBAQAogCQkJCTA3QjcxMTZCMUQ4OTlFNjMwMDlGMEZG
QiAvKiBDYXB0dXJlRGV2aWNlTWFuYWdlci5jcHAgKi8sCiAJCQkJMDdCNzExNkMxRDg5OUU2MzAw
OUYwRkZCIC8qIENhcHR1cmVEZXZpY2VNYW5hZ2VyLmggKi8sCiAJCQkJNUVCQjg5MzAxQzc3NzdF
MTAwQzY1RDQxIC8qIEljZUNhbmRpZGF0ZS5oICovLAorCQkJCTQxQzE0QkM4MjZERjc5RDYwMDY4
NUJGNSAvKiBNRE5TUmVnaXN0ZXJFcnJvci5oICovLAogCQkJCTFCRTVCRkMxMUQ1MTU3MTUwMDE2
NjZEOSAvKiBNZWRpYUNvbnN0cmFpbnRzLmNwcCAqLywKIAkJCQkwNzIyMUI5OTE3Q0YwQUQ0MDA4
NDhFNTEgLyogTWVkaWFDb25zdHJhaW50cy5oICovLAogCQkJCTQxQjI4QjEzMUY4NTAxQTQwMEZC
NTJBQyAvKiBNZWRpYUVuZHBvaW50Q29uZmlndXJhdGlvbi5jcHAgKi8sCkBAIC0zMzU4Myw2ICsz
MzU5MCw3IEBACiAJCQkJNDE4MUM1Q0QyNTU1ODM2OTAwQUVCMEZGIC8qIExpYldlYlJUQ1J0cFRy
YW5zZm9ybWFibGVGcmFtZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE4MUM1RDEyNTU1ODk1NjAw
QUVCMEZGIC8qIExpYldlYlJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTQxMEU0NDYxMjM0MzczRTkwMDAxNzNENCAvKiBMaWJXZWJSVENTb2NrZXRJZGVudGlmaWVy
LmggaW4gSGVhZGVycyAqLywKKwkJCQk0MUMxNEJDNzI2REU4NTg0MDA2ODVCRjUgLyogTGliV2Vi
UlRDVXRpbHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTg0NzMwRDkxMTI0OEYwQjMwMEQzQTlDOSAv
KiBMaWdodFNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5NjUwRDAwQkYyMjAwNzFC
NzgyIC8qIExpbmVhckdyYWRpZW50QXR0cmlidXRlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUIz
MUM5MUUxMEFFMUI4RTAwMEM3QjkyIC8qIExpbmVDbGFtcFZhbHVlLmggaW4gSGVhZGVycyAqLywK
QEAgLTMzNjQ2LDYgKzMzNjU0LDcgQEAKIAkJCQk0MzkwNDZFQTEyREEyNUU4MTJBRjgwQUMgLyog
TWF0aE9wZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUQ1REMyQzBGNDIzQTczMDA4RjIw
RkQgLyogTWF0cml4M0RUcmFuc2Zvcm1PcGVyYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5
RTkxMUM3MEVGODZENDcwMDlEMENBRiAvKiBNYXRyaXhUcmFuc2Zvcm1PcGVyYXRpb24uaCBpbiBI
ZWFkZXJzICovLAorCQkJCTQxQzE0QkM5MjZERjc5RDcwMDY4NUJGNSAvKiBNRE5TUmVnaXN0ZXJF
cnJvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNCQzhEQUQxQUFBMzAyMjAwRTFDODAzIC8qIE1l
ZGlhQWNjZXNzaWJpbGl0eVNvZnRMaW5rLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzFCQ0M2MTEx
MjRERkNCMDBCRTcwREQgLyogTWVkaWFDYW5TdGFydExpc3RlbmVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQlDRENDOUJDRjIyMzg3RTlBMDBGRkI1MUMgLyogTWVkaWFDYXBhYmlsaXRpZXNEZWNvZGlu
Z0luZm8uaCBpbiBIZWFkZXJzICovLApAQCAtMzQ0NjEsNiArMzQ0NzAsNyBAQAogCQkJCTA3QUI5
OTZCMThEQTNDMDEwMDE4NzcxRSAvKiBSVENJY2VTZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTMxMzU5MTA4MUU3RERDNzMwMEYzMDYzMCAvKiBSVENJY2VUcmFuc3BvcnRQb2xpY3kuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTMxMzU5MTA5MUU3RERDNzMwMEYzMDYzMCAvKiBSVENJY2VUcmFuc3Bv
cnRTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDFDMTRCQzYyNkRFNkRFODAwNjg1QkY1IC8q
IFJUQ05ldHdvcmtNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzM3OTRGRTE5RjU4NjRF
MDBFNUEwNDUgLyogUlRDTm90aWZpZXJzTW9jay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDczNzk0
REUxOUVFMkM1MjAwRTVBMDQ1IC8qIFJUQ09mZmVyQW5zd2VyT3B0aW9ucy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMDc4RTA5MjUxN0QxNEQxQzAwNDIwQUExIC8qIFJUQ1BlZXJDb25uZWN0aW9uLmgg
aW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDk0NjZmZDlmN2Y1NDdm
ZGQ5YmVmMDRlZjg1N2EyYTZlY2EyYjFmZDguLjk2NDlhNDU2YzJiMDgyMDBkYTVkN2Y3ODk4MGZh
YTY2ZWQxMmFhY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMjU5NSwxMiArMjU5NSw5
IEBAIHZvaWQgRG9jdW1lbnQ6OndpbGxCZVJlbW92ZWRGcm9tRnJhbWUoKQogICAgIGlmIChtX2hh
c1ByZXBhcmVkRm9yRGVzdHJ1Y3Rpb24pCiAgICAgICAgIHJldHVybjsKIAotI2lmIFVTRShMSUJX
RUJSVEMpCi0gICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIG1vdmVkIHRvIE1vZHVsZXMvbWVk
aWFzdHJlYW0uCi0gICAgaWYgKExpYldlYlJUQ1Byb3ZpZGVyOjp3ZWJSVENBdmFpbGFibGUoKSkg
ewotICAgICAgICBpZiAoYXV0byogcGFnZSA9IHRoaXMtPnBhZ2UoKSkKLSAgICAgICAgICAgIHBh
Z2UtPmxpYldlYlJUQ1Byb3ZpZGVyKCkudW5yZWdpc3Rlck1ETlNOYW1lcyhpZGVudGlmaWVyKCkp
OwotICAgIH0KKyNpZiBFTkFCTEUoV0VCX1JUQykKKyAgICBpZiAobV9ydGNOZXR3b3JrTWFuYWdl
cikKKyAgICAgICAgbV9ydGNOZXR3b3JrTWFuYWdlci0+dW5yZWdpc3Rlck1ETlNOYW1lcygpOwog
I2VuZGlmCiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCkBAIC01NjE3LDEyICs1NjE0LDkg
QEAgdm9pZCBEb2N1bWVudDo6c3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uIHJlYXNvbikKICAg
ICAgICAgICAgIHZpZXctPmNvbXBvc2l0b3IoKS5jYW5jZWxDb21wb3NpdGluZ0xheWVyVXBkYXRl
KCk7CiAgICAgfQogCi0jaWYgVVNFKExJQldFQlJUQykKLSAgICAvLyBGSVhNRTogVGhpcyBzaG91
bGQgYmUgbW92ZWQgdG8gTW9kdWxlcy9tZWRpYXN0cmVhbS4KLSAgICBpZiAoTGliV2ViUlRDUHJv
dmlkZXI6OndlYlJUQ0F2YWlsYWJsZSgpKSB7Ci0gICAgICAgIGlmIChhdXRvKiBwYWdlID0gdGhp
cy0+cGFnZSgpKQotICAgICAgICAgICAgcGFnZS0+bGliV2ViUlRDUHJvdmlkZXIoKS51bnJlZ2lz
dGVyTUROU05hbWVzKGlkZW50aWZpZXIoKSk7Ci0gICAgfQorI2lmIEVOQUJMRShXRUJfUlRDKQor
ICAgIGlmIChtX3J0Y05ldHdvcmtNYW5hZ2VyKQorICAgICAgICBtX3J0Y05ldHdvcmtNYW5hZ2Vy
LT51bnJlZ2lzdGVyTUROU05hbWVzKCk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dP
UktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggYWY1ZTc4NTBjYTkyMTVmMjI5MWQ1MDRiMmRm
OGU5YzJkMGQ1M2I5Ni4uODIzMDk4M2E2YTYxZjE5ZjliOTFhMjcxZDQwMTA0MzU0Nzk0YzNiMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTQ5LDYgKzQ5LDcgQEAKICNpbmNsdWRlICJQYWdlSWRl
bnRpZmllci5oIgogI2luY2x1ZGUgIlBsYXRmb3JtRXZlbnQuaCIKICNpbmNsdWRlICJQbGF5YmFj
a1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiUlRDTmV0d29ya01h
bmFnZXIuaCIKICNpbmNsdWRlICJSZWZlcnJlclBvbGljeS5oIgogI2luY2x1ZGUgIlJlZ2lvbi5o
IgogI2luY2x1ZGUgIlJlZ2lzdHJhYmxlRG9tYWluLmgiCkBAIC03MDgsNiArNzA5LDExIEBAIHB1
YmxpYzoKICAgICBTb2NrZXRQcm92aWRlciogc29ja2V0UHJvdmlkZXIoKSBmaW5hbDsKICAgICBS
ZWZQdHI8UlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyQ29ubmVjdGlvbj4gY3JlYXRlUlRDRGF0
YUNoYW5uZWxSZW1vdGVIYW5kbGVyQ29ubmVjdGlvbigpIGZpbmFsOwogCisjaWYgRU5BQkxFKFdF
Ql9SVEMpCisgICAgUlRDTmV0d29ya01hbmFnZXIqIHJ0Y05ldHdvcmtNYW5hZ2VyKCkgeyByZXR1
cm4gbV9ydGNOZXR3b3JrTWFuYWdlci5nZXQoKTsgfQorICAgIHZvaWQgc2V0UlRDTmV0d29ya01h
bmFnZXIoUmVmPFJUQ05ldHdvcmtNYW5hZ2VyPiYmIHJ0Y05ldHdvcmtNYW5hZ2VyKSB7IG1fcnRj
TmV0d29ya01hbmFnZXIgPSBXVEZNb3ZlKHJ0Y05ldHdvcmtNYW5hZ2VyKTsgfQorI2VuZGlmCisK
ICAgICBib29sIGNhbk5hdmlnYXRlKEZyYW1lKiB0YXJnZXRGcmFtZSwgY29uc3QgVVJMJiBkZXN0
aW5hdGlvblVSTCA9IFVSTCgpKTsKIAogICAgIGJvb2wgdXNlc1N0eWxlQmFzZWRFZGl0YWJpbGl0
eSgpIGNvbnN0OwpAQCAtMjIyMSw2ICsyMjI3LDEwIEBAIHByaXZhdGU6CiAKICAgICBMaXN0SGFz
aFNldDxSZWY8RWxlbWVudD4+IG1fdG9wTGF5ZXJFbGVtZW50czsKICAgICBVbmlxdWVSZWY8V2hp
dGVzcGFjZUNhY2hlPiBtX3doaXRlc3BhY2VDYWNoZTsKKworI2lmIEVOQUJMRShXRUJfUlRDKQor
ICAgIFJlZlB0cjxSVENOZXR3b3JrTWFuYWdlcj4gbV9ydGNOZXR3b3JrTWFuYWdlcjsKKyNlbmRp
ZgogfTsKIAogRWxlbWVudCogZXZlbnRUYXJnZXRFbGVtZW50Rm9yRG9jdW1lbnQoRG9jdW1lbnQq
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01ETlNS
ZWdpc3RlckVycm9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NRE5T
UmVnaXN0ZXJFcnJvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc3YzVkYWZlMzNmYmU2NGU3YTgyNmMxNTFiNmJl
M2NhNTJmYTU1NWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9NRE5TUmVnaXN0ZXJFcnJvci5oCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworZW51bSBjbGFzcyBNRE5TUmVnaXN0ZXJFcnJvciB7IE5vdEltcGxl
bWVudGVkLCBCYWRQYXJhbWV0ZXIsIEROU1NELCBJbnRlcm5hbCwgVGltZW91dCB9OworCit9CisK
K25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6
Ok1ETlNSZWdpc3RlckVycm9yPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAg
ICAgICAgV2ViQ29yZTo6TUROU1JlZ2lzdGVyRXJyb3IsCisgICAgICAgIFdlYkNvcmU6Ok1ETlNS
ZWdpc3RlckVycm9yOjpOb3RJbXBsZW1lbnRlZCwKKyAgICAgICAgV2ViQ29yZTo6TUROU1JlZ2lz
dGVyRXJyb3I6OkJhZFBhcmFtZXRlciwKKyAgICAgICAgV2ViQ29yZTo6TUROU1JlZ2lzdGVyRXJy
b3I6OkROU1NELAorICAgICAgICBXZWJDb3JlOjpNRE5TUmVnaXN0ZXJFcnJvcjo6SW50ZXJuYWws
CisgICAgICAgIFdlYkNvcmU6Ok1ETlNSZWdpc3RlckVycm9yOjpUaW1lb3V0CisgICAgPjsKK307
CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xp
YndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuY3BwCmluZGV4IGM1OTU2MTc4
NzJiMjJiOWVjM2Y1MzJkMzQ1YjA4YzE2ZmU2YmZkNmQuLjVhZjc5YWQ0ODU4Njg0MGY0ODc1N2Rl
ZmU4YTNhNjZlNTZkM2JlY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNw
cApAQCAtMjk5LDcgKzI5OSw3IEBAIHZvaWQgTGliV2ViUlRDUHJvdmlkZXI6OmVuYWJsZUVudW1l
cmF0aW5nQWxsTmV0d29ya0ludGVyZmFjZXMoKQogICAgIG1fZW5hYmxlRW51bWVyYXRpbmdBbGxO
ZXR3b3JrSW50ZXJmYWNlcyA9IHRydWU7CiB9CiAKLXJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6
OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlPiBMaWJXZWJSVENQcm92aWRlcjo6Y3JlYXRlUGVlckNv
bm5lY3Rpb24od2VicnRjOjpQZWVyQ29ubmVjdGlvbk9ic2VydmVyJiBvYnNlcnZlciwgcnRjOjpQ
YWNrZXRTb2NrZXRGYWN0b3J5Kiwgd2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6UlRD
Q29uZmlndXJhdGlvbiYmIGNvbmZpZ3VyYXRpb24pCitydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRj
OjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZT4gTGliV2ViUlRDUHJvdmlkZXI6OmNyZWF0ZVBlZXJD
b25uZWN0aW9uKERvY3VtZW50SWRlbnRpZmllciwgd2VicnRjOjpQZWVyQ29ubmVjdGlvbk9ic2Vy
dmVyJiBvYnNlcnZlciwgcnRjOjpQYWNrZXRTb2NrZXRGYWN0b3J5Kiwgd2VicnRjOjpQZWVyQ29u
bmVjdGlvbkludGVyZmFjZTo6UlRDQ29uZmlndXJhdGlvbiYmIGNvbmZpZ3VyYXRpb24pCiB7CiAg
ICAgLy8gRGVmYXVsdCBXSzEgaW1wbGVtZW50YXRpb24uCiAgICAgQVNTRVJUKG1fdXNlTmV0d29y
a1RocmVhZFdpdGhTb2NrZXRTZXJ2ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIu
aAppbmRleCAxODYyN2VlNTdmNzU4YTA0NzIyZDE2MTZmMGY4NzYyODQzNDExNWI3Li45NDIwNzNi
MzJlMTdlNTQ2NjllN2VkMjM4YTVmMTkxMTUxNGIyNDc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2Vi
UlRDUHJvdmlkZXIuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiRG9jdW1lbnRJZGVu
dGlmaWVyLmgiCiAjaW5jbHVkZSAiTGliV2ViUlRDTWFjcm9zLmgiCisjaW5jbHVkZSAiTUROU1Jl
Z2lzdGVyRXJyb3IuaCIKICNpbmNsdWRlICJSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXJDb25u
ZWN0aW9uLmgiCiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8
d3RmL0V4cGVjdGVkLmg+CkBAIC02Niw4ICs2Nyw2IEBAIGNsYXNzIFJlZ2lzdHJhYmxlRG9tYWlu
Owogc3RydWN0IFBlZXJDb25uZWN0aW9uRmFjdG9yeUFuZFRocmVhZHM7CiBzdHJ1Y3QgUlRDUnRw
Q2FwYWJpbGl0aWVzOwogCi1lbnVtIGNsYXNzIE1ETlNSZWdpc3RlckVycm9yIHsgTm90SW1wbGVt
ZW50ZWQsIEJhZFBhcmFtZXRlciwgRE5TU0QsIEludGVybmFsLCBUaW1lb3V0IH07Ci0KIGNsYXNz
IFdFQkNPUkVfRVhQT1JUIExpYldlYlJUQ1Byb3ZpZGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKQEAgLTg2LDE4ICs4NSwxMCBAQCBwdWJsaWM6CiAgICAgdXNpbmcg
SVBBZGRyZXNzT3JFcnJvciA9IEV4cGVjdGVkPFN0cmluZywgTUROU1JlZ2lzdGVyRXJyb3I+Owog
ICAgIHVzaW5nIE1ETlNOYW1lT3JFcnJvciA9IEV4cGVjdGVkPFN0cmluZywgTUROU1JlZ2lzdGVy
RXJyb3I+OwogCi0gICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJNRE5TTmFtZXMoRG9jdW1lbnRJ
ZGVudGlmaWVyKSB7IH0KLQotICAgIHZpcnR1YWwgdm9pZCByZWdpc3Rlck1ETlNOYW1lKERvY3Vt
ZW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBpcEFkZHJlc3MsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoTUROU05hbWVPckVycm9yJiYpPiYmIGNhbGxiYWNrKQotICAgIHsKLSAgICAgICAgVU5V
U0VEX1BBUkFNKGlwQWRkcmVzcyk7Ci0gICAgICAgIGNhbGxiYWNrKG1ha2VVbmV4cGVjdGVkKE1E
TlNSZWdpc3RlckVycm9yOjpOb3RJbXBsZW1lbnRlZCkpOwotICAgIH0KLQogICAgIHZpcnR1YWwg
UmVmUHRyPFJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlckNvbm5lY3Rpb24+IGNyZWF0ZVJUQ0Rh
dGFDaGFubmVsUmVtb3RlSGFuZGxlckNvbm5lY3Rpb24oKSB7IHJldHVybiBudWxscHRyOyB9CiAK
ICNpZiBVU0UoTElCV0VCUlRDKQotICAgIHZpcnR1YWwgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0
Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U+IGNyZWF0ZVBlZXJDb25uZWN0aW9uKHdlYnJ0Yzo6
UGVlckNvbm5lY3Rpb25PYnNlcnZlciYsIHJ0Yzo6UGFja2V0U29ja2V0RmFjdG9yeSosIHdlYnJ0
Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OlJUQ0NvbmZpZ3VyYXRpb24mJik7CisgICAgdmly
dHVhbCBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZT4g
Y3JlYXRlUGVlckNvbm5lY3Rpb24oRG9jdW1lbnRJZGVudGlmaWVyLCB3ZWJydGM6OlBlZXJDb25u
ZWN0aW9uT2JzZXJ2ZXImLCBydGM6OlBhY2tldFNvY2tldEZhY3RvcnkqLCB3ZWJydGM6OlBlZXJD
b25uZWN0aW9uSW50ZXJmYWNlOjpSVENDb25maWd1cmF0aW9uJiYpOwogCiAgICAgd2VicnRjOjpQ
ZWVyQ29ubmVjdGlvbkZhY3RvcnlJbnRlcmZhY2UqIGZhY3RvcnkoKTsKIApAQCAtMTgwLDE2ICsx
NzEsMyBAQCBpbmxpbmUgdm9pZCBMaWJXZWJSVENQcm92aWRlcjo6c2V0VlA5U3VwcG9ydChib29s
IHN1cHBvcnRzVlA5UHJvZmlsZTAsIGJvb2wgc3VwcAogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKLQotbmFtZXNwYWNlIFdURiB7Ci10ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRz
PFdlYkNvcmU6Ok1ETlNSZWdpc3RlckVycm9yPiB7Ci0gICAgdXNpbmcgdmFsdWVzID0gRW51bVZh
bHVlczwKLSAgICAgICAgV2ViQ29yZTo6TUROU1JlZ2lzdGVyRXJyb3IsCi0gICAgICAgIFdlYkNv
cmU6Ok1ETlNSZWdpc3RlckVycm9yOjpOb3RJbXBsZW1lbnRlZCwKLSAgICAgICAgV2ViQ29yZTo6
TUROU1JlZ2lzdGVyRXJyb3I6OkJhZFBhcmFtZXRlciwKLSAgICAgICAgV2ViQ29yZTo6TUROU1Jl
Z2lzdGVyRXJyb3I6OkROU1NELAotICAgICAgICBXZWJDb3JlOjpNRE5TUmVnaXN0ZXJFcnJvcjo6
SW50ZXJuYWwsCi0gICAgICAgIFdlYkNvcmU6Ok1ETlNSZWdpc3RlckVycm9yOjpUaW1lb3V0Ci0g
ICAgPjsKLX07Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dl
YnJ0Yy9OZXR3b3JrTUROU1JlZ2lzdGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3Mvd2VicnRjL05ldHdvcmtNRE5TUmVnaXN0ZXIuY3BwCmluZGV4IGZjNDM1MTEyZjViY2UwYWEz
MTIyMGU0MTJmY2U0YzU5ODNmMjhiMDcuLjdhYTE3YzEzMWYxNjI2ODRjZDI4M2E3YTBlNGMxZDEz
MWJlZTg2MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRj
L05ldHdvcmtNRE5TUmVnaXN0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3Mvd2VicnRjL05ldHdvcmtNRE5TUmVnaXN0ZXIuY3BwCkBAIC05OCwyNyArOTgsMjkgQEAgc3Rh
dGljIHZvaWQgcmVnaXN0ZXJNRE5TTmFtZUNhbGxiYWNrKEROU1NlcnZpY2VSZWYsIEROU1JlY29y
ZFJlZiByZWNvcmQsIEROU1NlcnYKICAgICBNRE5TX1JFTEVBU0VfTE9HX0lOX0NBTExCQUNLKHJl
cXVlc3QtPnNlc3Npb25JRCwgInJlZ2lzdGVyTUROU05hbWVDYWxsYmFjayB3aXRoIGVycm9yICVk
IiwgZXJyb3JDb2RlKTsKIAogICAgIGlmIChlcnJvckNvZGUpIHsKLSAgICAgICAgcmVxdWVzdC0+
Y29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6V2ViTUROU1JlZ2lzdGVyOjpGaW5pc2hlZFJlZ2lz
dGVyaW5nTUROU05hbWUgeyByZXF1ZXN0LT5yZXF1ZXN0SWRlbnRpZmllciwgbWFrZVVuZXhwZWN0
ZWQoV2ViQ29yZTo6TUROU1JlZ2lzdGVyRXJyb3I6OkROU1NEKSB9LCAwKTsKKyAgICAgICAgcmVx
dWVzdC0+Y29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6V2ViTUROU1JlZ2lzdGVyOjpGaW5pc2hl
ZFJlZ2lzdGVyaW5nTUROU05hbWUgeyByZXF1ZXN0LT5yZXF1ZXN0SWRlbnRpZmllciwgcmVxdWVz
dC0+bmFtZSwgV2ViQ29yZTo6TUROU1JlZ2lzdGVyRXJyb3I6OkROU1NEIH0sIDApOwogICAgICAg
ICByZXR1cm47CiAgICAgfQotICAgIHJlcXVlc3QtPmNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6
OldlYk1ETlNSZWdpc3Rlcjo6RmluaXNoZWRSZWdpc3RlcmluZ01ETlNOYW1lIHsgcmVxdWVzdC0+
cmVxdWVzdElkZW50aWZpZXIsIHJlcXVlc3QtPm5hbWUgfSwgMCk7CisgICAgcmVxdWVzdC0+Y29u
bmVjdGlvbi0+c2VuZChNZXNzYWdlczo6V2ViTUROU1JlZ2lzdGVyOjpGaW5pc2hlZFJlZ2lzdGVy
aW5nTUROU05hbWUgeyByZXF1ZXN0LT5yZXF1ZXN0SWRlbnRpZmllciwgcmVxdWVzdC0+bmFtZSwg
eyB9IH0sIDApOwogfQogCiB2b2lkIE5ldHdvcmtNRE5TUmVnaXN0ZXI6OnJlZ2lzdGVyTUROU05h
bWUoTUROU1JlZ2lzdGVySWRlbnRpZmllciByZXF1ZXN0SWRlbnRpZmllciwgV2ViQ29yZTo6RG9j
dW1lbnRJZGVudGlmaWVyIGRvY3VtZW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBpcEFkZHJl
c3MpCiB7CisgICAgYXV0byBuYW1lID0gbWFrZVN0cmluZyhjcmVhdGVDYW5vbmljYWxVVUlEU3Ry
aW5nKCksICIubG9jYWwiKTsKKwogICAgIEROU1NlcnZpY2VSZWYgc2VydmljZTsKICAgICBhdXRv
IGl0ZXJhdG9yID0gbV9zZXJ2aWNlcy5maW5kKGRvY3VtZW50SWRlbnRpZmllcik7CiAgICAgaWYg
KGl0ZXJhdG9yID09IG1fc2VydmljZXMuZW5kKCkpIHsKICAgICAgICAgYXV0byBlcnJvciA9IERO
U1NlcnZpY2VDcmVhdGVDb25uZWN0aW9uKCZzZXJ2aWNlKTsKICAgICAgICAgaWYgKGVycm9yKSB7
CiAgICAgICAgICAgICBNRE5TX1JFTEVBU0VfTE9HKCJyZWdpc3Rlck1ETlNOYW1lIEROU1NlcnZp
Y2VDcmVhdGVDb25uZWN0aW9uIGVycm9yICVkIiwgZXJyb3IpOwotICAgICAgICAgICAgbV9jb25u
ZWN0aW9uLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpXZWJNRE5TUmVnaXN0ZXI6OkZpbmlz
aGVkUmVnaXN0ZXJpbmdNRE5TTmFtZSB7IHJlcXVlc3RJZGVudGlmaWVyLCBtYWtlVW5leHBlY3Rl
ZChXZWJDb3JlOjpNRE5TUmVnaXN0ZXJFcnJvcjo6RE5TU0QpIH0sIDApOworICAgICAgICAgICAg
bV9jb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpXZWJNRE5TUmVnaXN0ZXI6
OkZpbmlzaGVkUmVnaXN0ZXJpbmdNRE5TTmFtZSB7IHJlcXVlc3RJZGVudGlmaWVyLCBuYW1lLCBX
ZWJDb3JlOjpNRE5TUmVnaXN0ZXJFcnJvcjo6RE5TU0QgfSwgMCk7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KICAgICAgICAgZXJyb3IgPSBETlNTZXJ2aWNlU2V0RGlzcGF0Y2hRdWV1
ZShzZXJ2aWNlLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpKTsKICAgICAgICAgaWYgKGVycm9y
KSB7CiAgICAgICAgICAgICBNRE5TX1JFTEVBU0VfTE9HKCJyZWdpc3Rlck1ETlNOYW1lIEROU1Nl
cnZpY2VDcmVhdGVDb25uZWN0aW9uIGVycm9yICVkIiwgZXJyb3IpOwotICAgICAgICAgICAgbV9j
b25uZWN0aW9uLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpXZWJNRE5TUmVnaXN0ZXI6OkZp
bmlzaGVkUmVnaXN0ZXJpbmdNRE5TTmFtZSB7IHJlcXVlc3RJZGVudGlmaWVyLCBtYWtlVW5leHBl
Y3RlZChXZWJDb3JlOjpNRE5TUmVnaXN0ZXJFcnJvcjo6RE5TU0QpIH0sIDApOworICAgICAgICAg
ICAgbV9jb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpXZWJNRE5TUmVnaXN0
ZXI6OkZpbmlzaGVkUmVnaXN0ZXJpbmdNRE5TTmFtZSB7IHJlcXVlc3RJZGVudGlmaWVyLCBuYW1l
LCBXZWJDb3JlOjpNRE5TUmVnaXN0ZXJFcnJvcjo6RE5TU0QgfSwgMCk7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgQVNTRVJUKHNlcnZpY2UpOwpAQCAtMTI2LDEzICsx
MjgsMTIgQEAgdm9pZCBOZXR3b3JrTUROU1JlZ2lzdGVyOjpyZWdpc3Rlck1ETlNOYW1lKE1ETlNS
ZWdpc3RlcklkZW50aWZpZXIgcmVxdWVzdElkZW50aWYKICAgICB9IGVsc2UKICAgICAgICAgc2Vy
dmljZSA9IGl0ZXJhdG9yLT52YWx1ZTsKIAotICAgIGF1dG8gbmFtZSA9IG1ha2VTdHJpbmcoY3Jl
YXRlQ2Fub25pY2FsVVVJRFN0cmluZygpLCAiLmxvY2FsIik7Ci0KICAgICBhdXRvIGlwID0gaW5l
dF9hZGRyKGlwQWRkcmVzcy51dGY4KCkuZGF0YSgpKTsKIAorICAgIC8vIEZJWE1FOiBBZGQgSVB2
NiBzdXBwb3J0LgogICAgIGlmIChpcCA9PSAoIGluX2FkZHJfdCkoLTEpKSB7CiAgICAgICAgIE1E
TlNfUkVMRUFTRV9MT0coInJlZ2lzdGVyTUROU05hbWUgaW5ldF9hZGRyIGVycm9yIik7Ci0gICAg
ICAgIG1fY29ubmVjdGlvbi5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6V2ViTUROU1JlZ2lz
dGVyOjpGaW5pc2hlZFJlZ2lzdGVyaW5nTUROU05hbWUgeyByZXF1ZXN0SWRlbnRpZmllciwgbWFr
ZVVuZXhwZWN0ZWQoV2ViQ29yZTo6TUROU1JlZ2lzdGVyRXJyb3I6OkJhZFBhcmFtZXRlcikgfSwg
MCk7CisgICAgICAgIG1fY29ubmVjdGlvbi5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6V2Vi
TUROU1JlZ2lzdGVyOjpGaW5pc2hlZFJlZ2lzdGVyaW5nTUROU05hbWUgeyByZXF1ZXN0SWRlbnRp
ZmllciwgbmFtZSwgV2ViQ29yZTo6TUROU1JlZ2lzdGVyRXJyb3I6OkJhZFBhcmFtZXRlciB9LCAw
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTU2LDcgKzE1Nyw3IEBAIHZvaWQgTmV0
d29ya01ETlNSZWdpc3Rlcjo6cmVnaXN0ZXJNRE5TTmFtZShNRE5TUmVnaXN0ZXJJZGVudGlmaWVy
IHJlcXVlc3RJZGVudGlmCiAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHBlbmRpbmdS
ZWdpc3RyYXRpb25SZXF1ZXN0Q291bnQpKTsKICAgICBpZiAoZXJyb3IpIHsKICAgICAgICAgTURO
U19SRUxFQVNFX0xPRygicmVnaXN0ZXJNRE5TTmFtZSBETlNTZXJ2aWNlUmVnaXN0ZXJSZWNvcmQg
ZXJyb3IgJWQiLCBlcnJvcik7Ci0gICAgICAgIG1fY29ubmVjdGlvbi5jb25uZWN0aW9uKCkuc2Vu
ZChNZXNzYWdlczo6V2ViTUROU1JlZ2lzdGVyOjpGaW5pc2hlZFJlZ2lzdGVyaW5nTUROU05hbWUg
eyByZXF1ZXN0SWRlbnRpZmllciwgbWFrZVVuZXhwZWN0ZWQoV2ViQ29yZTo6TUROU1JlZ2lzdGVy
RXJyb3I6OkROU1NEKSB9LCAwKTsKKyAgICAgICAgbV9jb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5z
ZW5kKE1lc3NhZ2VzOjpXZWJNRE5TUmVnaXN0ZXI6OkZpbmlzaGVkUmVnaXN0ZXJpbmdNRE5TTmFt
ZSB7IHJlcXVlc3RJZGVudGlmaWVyLCBwZW5kaW5nUmVxdWVzdC0+bmFtZSwgV2ViQ29yZTo6TURO
U1JlZ2lzdGVyRXJyb3I6OkROU1NEIH0sIDApOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAg
IHBlbmRpbmdSZWdpc3RyYXRpb25SZXF1ZXN0cygpLmFkZChwZW5kaW5nUmVnaXN0cmF0aW9uUmVx
dWVzdENvdW50KyssIFdURk1vdmUocGVuZGluZ1JlcXVlc3QpKTsKQEAgLTE3MSw3ICsxNzIsOSBA
QCB2b2lkIE5ldHdvcmtNRE5TUmVnaXN0ZXI6OnVucmVnaXN0ZXJNRE5TTmFtZXMoV2ViQ29yZTo6
RG9jdW1lbnRJZGVudGlmaWVyKQogdm9pZCBOZXR3b3JrTUROU1JlZ2lzdGVyOjpyZWdpc3Rlck1E
TlNOYW1lKE1ETlNSZWdpc3RlcklkZW50aWZpZXIgcmVxdWVzdElkZW50aWZpZXIsIFdlYkNvcmU6
OkRvY3VtZW50SWRlbnRpZmllciBkb2N1bWVudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgaXBB
ZGRyZXNzKQogewogICAgIE1ETlNfUkVMRUFTRV9MT0coInJlZ2lzdGVyTUROU05hbWUgbm90IGlt
cGxlbWVudGVkIik7Ci0gICAgbV9jb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2Vz
OjpXZWJNRE5TUmVnaXN0ZXI6OkZpbmlzaGVkUmVnaXN0ZXJpbmdNRE5TTmFtZSB7IHJlcXVlc3RJ
ZGVudGlmaWVyLCBtYWtlVW5leHBlY3RlZChXZWJDb3JlOjpNRE5TUmVnaXN0ZXJFcnJvcjo6Tm90
SW1wbGVtZW50ZWQpIH0sIDApOworICAgIGF1dG8gbmFtZSA9IG1ha2VTdHJpbmcoY3JlYXRlQ2Fu
b25pY2FsVVVJRFN0cmluZygpLCAiLmxvY2FsIik7CisKKyAgICBtX2Nvbm5lY3Rpb24uY29ubmVj
dGlvbigpLnNlbmQoTWVzc2FnZXM6OldlYk1ETlNSZWdpc3Rlcjo6RmluaXNoZWRSZWdpc3Rlcmlu
Z01ETlNOYW1lIHsgcmVxdWVzdElkZW50aWZpZXIsIG5hbWUsIFdlYkNvcmU6Ok1ETlNSZWdpc3Rl
ckVycm9yOjpOb3RJbXBsZW1lbnRlZCB9LCAwKTsKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRl
eCA3ZGJhY2QxOGMwYzIxOGYyOGQ4Y2Q0NDA1MDI3OGU0ODk4ZGYxYzVjLi40ZTVlNTE0ZDY1NjM4
NjI2NWI5YjM3OTU3ODQ4MjRlZTJlOWY1NjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Nv
dXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTYzOSw2ICs2Mzks
NyBAQCBXZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0UHJvdmlkZXIuY3BwCiBXZWJQcm9jZXNz
L05ldHdvcmsvV2ViU29ja2V0U3RyZWFtLmNwcAogCiBXZWJQcm9jZXNzL05ldHdvcmsvd2VicnRj
L0xpYldlYlJUQ05ldHdvcmsuY3BwCitXZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJU
Q05ldHdvcmtNYW5hZ2VyLmNwcAogV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQ
cm92aWRlci5jcHAKIFdlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDUmVzb2x2ZXIu
Y3BwCiBXZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1NvY2tldC5jcHAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDllNDE2
ZWYzNzQ0NGU0MmViZTY4YzBlMTAwMjRiY2VjZmZiMjdmODguLjI3MTRmZmFlZmIzODA1ODVkNzVm
NzY1MGM0MGMwN2NlM2I1ZGRmY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzg1NCw2ICszODU0LDggQEAKIAkJNDFCN0VENkYyMDY5
NjU5MDAwODdEODUzIC8qIE5ldHdvcmtNRE5TUmVnaXN0ZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gTmV0d29ya01ETlNSZWdpc3Rlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQxQjdFRDcwMjA2OTY1OTAwMDg3RDg1MyAvKiBOZXR3b3JrTURO
U1JlZ2lzdGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtNRE5T
UmVnaXN0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFCN0VENzEyMDY5NjU5
MDAwODdEODUzIC8qIE5ldHdvcmtNRE5TUmVnaXN0ZXIubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gTmV0d29ya01ETlNSZWdpc3Rlci5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNDFDMTRCQzIyNkRFNkEyRjAwNjg1QkY1IC8qIExpYldlYlJUQ05l
dHdvcmtNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExpYldlYlJUQ05ldHdvcmtNYW5h
Z2VyLmNwcDsgcGF0aCA9IE5ldHdvcmsvd2VicnRjL0xpYldlYlJUQ05ldHdvcmtNYW5hZ2VyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFDMTRCQzMyNkRFNkEyRjAwNjg1QkY1
IC8qIExpYldlYlJUQ05ldHdvcmtNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExpYldlYlJUQ05l
dHdvcmtNYW5hZ2VyLmg7IHBhdGggPSBOZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENOZXR3b3JrTWFu
YWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUMzQjg4NTI2NDQ0QUFCMDA0
RUQ0REUgLyogQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2Vy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxV
bml0TWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUMzQjg4NjI2NDQ0
QUFDMDA0RUQ0REUgLyogQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRN
YW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRl
cmVySW50ZXJuYWxVbml0TWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQxQzNCODg3MjY0NDRBRDMwMDRFRDRERSAvKiBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJl
ckludGVybmFsVW5pdElkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC04NTE4LDYgKzg1MjAsOCBAQAogCQkJCTQxNkY4MDg5MjQ1QzdGRjUwMEI2
OEYwMiAvKiBMaWJXZWJSVENOZXR3b3JrLmNwcCAqLywKIAkJCQk0MTFCMjI2MjFFMzcxMjQ0MDA0
RjczNjMgLyogTGliV2ViUlRDTmV0d29yay5oICovLAogCQkJCTQxNkY4MDg2MjQ1QjM5NzQwMEI2
OEYwMiAvKiBMaWJXZWJSVENOZXR3b3JrLm1lc3NhZ2VzLmluICovLAorCQkJCTQxQzE0QkMyMjZE
RTZBMkYwMDY4NUJGNSAvKiBMaWJXZWJSVENOZXR3b3JrTWFuYWdlci5jcHAgKi8sCisJCQkJNDFD
MTRCQzMyNkRFNkEyRjAwNjg1QkY1IC8qIExpYldlYlJUQ05ldHdvcmtNYW5hZ2VyLmggKi8sCiAJ
CQkJNDEzMDc1QTcxREU4NUVFNzAwMzlFQzY5IC8qIExpYldlYlJUQ1Byb3ZpZGVyLmNwcCAqLywK
IAkJCQk0MTMwNzVBODFERTg1RUU3MDAzOUVDNjkgLyogTGliV2ViUlRDUHJvdmlkZXIuaCAqLywK
IAkJCQk0MUZBRjVGNzFFM0MwQjQ3MDAxQUU2NzggLyogTGliV2ViUlRDUmVzb2x2ZXIuY3BwICov
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xp
YldlYlJUQ05ldHdvcmtNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL3dlYnJ0Yy9MaWJXZWJSVENOZXR3b3JrTWFuYWdlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDFiNDE5
OWMyNjUxNzRiZDE0MmY1MWU3MDkxZTJiMDIwYzY5Mzg2OAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENOZXR3b3JrTWFu
YWdlci5jcHAKQEAgLTAsMCArMSwxNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiTGliV2ViUlRDTmV0d29ya01hbmFnZXIuaCIKKworI2lmIFVTRShMSUJX
RUJSVEMpCisKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Eb2N1
bWVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTGliV2ViUlRDVXRpbHMuaD4KKworbmFtZXNwYWNl
IFdlYktpdCB7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworTGliV2ViUlRDTmV0d29ya01h
bmFnZXIqIExpYldlYlJUQ05ldHdvcmtNYW5hZ2VyOjpnZXRPckNyZWF0ZShXZWJDb3JlOjpEb2N1
bWVudElkZW50aWZpZXIgaWRlbnRpZmllcikKK3sKKyAgICBhdXRvKiBkb2N1bWVudCA9IERvY3Vt
ZW50OjphbGxEb2N1bWVudHNNYXAoKS5nZXQoaWRlbnRpZmllcik7CisgICAgaWYgKCFkb2N1bWVu
dCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvKiBuZXR3b3JrTWFuYWdlciA9
IHN0YXRpY19jYXN0PExpYldlYlJUQ05ldHdvcmtNYW5hZ2VyKj4oZG9jdW1lbnQtPnJ0Y05ldHdv
cmtNYW5hZ2VyKCkpOworICAgIGlmICghbmV0d29ya01hbmFnZXIpIHsKKyAgICAgICAgYXV0byBu
ZXdOZXR3b3JrTWFuYWdlciA9IGFkb3B0UmVmKCpuZXcgTGliV2ViUlRDTmV0d29ya01hbmFnZXIo
aWRlbnRpZmllcikpOworICAgICAgICBuZXR3b3JrTWFuYWdlciA9IG5ld05ldHdvcmtNYW5hZ2Vy
LnB0cigpOworICAgICAgICBkb2N1bWVudC0+c2V0UlRDTmV0d29ya01hbmFnZXIoV1RGTW92ZShu
ZXdOZXR3b3JrTWFuYWdlcikpOworICAgIH0KKworICAgIHJldHVybiBuZXR3b3JrTWFuYWdlcjsK
K30KKworTGliV2ViUlRDTmV0d29ya01hbmFnZXI6OkxpYldlYlJUQ05ldHdvcmtNYW5hZ2VyKFdl
YkNvcmU6OkRvY3VtZW50SWRlbnRpZmllciBkb2N1bWVudElkZW50aWZpZXIpCisgICAgOiBtX2Rv
Y3VtZW50SWRlbnRpZmllcihkb2N1bWVudElkZW50aWZpZXIpCit7CisgICAgV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkubGliV2ViUlRDTmV0d29yaygpLm1vbml0b3IoKS5hZGRPYnNlcnZlcigqdGhp
cyk7Cit9CisKK0xpYldlYlJUQ05ldHdvcmtNYW5hZ2VyOjp+TGliV2ViUlRDTmV0d29ya01hbmFn
ZXIoKQoreworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmxpYldlYlJUQ05ldHdvcmsoKS5t
b25pdG9yKCkucmVtb3ZlT2JzZXJ2ZXIoKnRoaXMpOworfQorCit2b2lkIExpYldlYlJUQ05ldHdv
cmtNYW5hZ2VyOjp1bnJlZ2lzdGVyTUROU05hbWVzKCkKK3sKKyAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5saWJXZWJSVENOZXR3b3JrKCkubWRuc1JlZ2lzdGVyKCkudW5yZWdpc3Rlck1ETlNO
YW1lcyhtX2RvY3VtZW50SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgTGliV2ViUlRDTmV0d29ya01h
bmFnZXI6OlN0YXJ0VXBkYXRpbmcoKQoreworICAgIGNhbGxPbk1haW5SdW5Mb29wKFt0aGlzLCB3
ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXSB7CisgICAgICAgIGlmICghd2Vha1RoaXMpCisg
ICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgYXV0byYgbW9uaXRvciA9IFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLmxpYldlYlJUQ05ldHdvcmsoKS5tb25pdG9yKCk7CisgICAgICAgIGlmICht
X3JlY2VpdmVkTmV0d29ya0xpc3QpIHsKKyAgICAgICAgICAgIFdlYkNvcmU6OkxpYldlYlJUQ1By
b3ZpZGVyOjpjYWxsT25XZWJSVENOZXR3b3JrVGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyldIHsKKyAgICAgICAgICAgICAgICBTaWduYWxOZXR3b3Jrc0NoYW5nZWQo
KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9IGVsc2UgaWYgKG1vbml0b3IuZGlkUmVjZWl2
ZU5ldHdvcmtMaXN0KCkpCisgICAgICAgICAgICBuZXR3b3Jrc0NoYW5nZWQobW9uaXRvci5uZXR3
b3JrTGlzdCgpICwgbW9uaXRvci5pcHY0KCksIG1vbml0b3IuaXB2NigpKTsKKyAgICAgICAgbW9u
aXRvci5zdGFydFVwZGF0aW5nKCk7CisgICAgfSk7Cit9CisKK3ZvaWQgTGliV2ViUlRDTmV0d29y
a01hbmFnZXI6OlN0b3BVcGRhdGluZygpCit7CisgICAgY2FsbE9uTWFpblJ1bkxvb3AoW3dlYWtU
aGlzID0gbWFrZVdlYWtQdHIodGhpcyldIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkubGliV2ViUlRD
TmV0d29yaygpLm1vbml0b3IoKS5zdG9wVXBkYXRpbmcoKTsKKyAgICB9KTsKK30KKword2VicnRj
OjpNZG5zUmVzcG9uZGVySW50ZXJmYWNlKiBMaWJXZWJSVENOZXR3b3JrTWFuYWdlcjo6R2V0TWRu
c1Jlc3BvbmRlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fdXNlTUROU0NhbmRpZGF0ZXMgPyBj
b25zdF9jYXN0PExpYldlYlJUQ05ldHdvcmtNYW5hZ2VyKj4odGhpcykgOiBudWxscHRyOworfQor
Cit2b2lkIExpYldlYlJUQ05ldHdvcmtNYW5hZ2VyOjpuZXR3b3Jrc0NoYW5nZWQoY29uc3QgVmVj
dG9yPFJUQ05ldHdvcms+JiBuZXR3b3JrcywgY29uc3QgUlRDTmV0d29yazo6SVBBZGRyZXNzJiBp
cHY0LCBjb25zdCBSVENOZXR3b3JrOjpJUEFkZHJlc3MmIGlwdjYpCit7CisgICAgYm9vbCBmb3Jj
ZVNpZ25hbGluZyA9ICFtX3JlY2VpdmVkTmV0d29ya0xpc3Q7CisgICAgbV9yZWNlaXZlZE5ldHdv
cmtMaXN0ID0gdHJ1ZTsKKworICAgIFdlYkNvcmU6OkxpYldlYlJUQ1Byb3ZpZGVyOjpjYWxsT25X
ZWJSVENOZXR3b3JrVGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyks
IG5ldHdvcmtzLCBpcHY0LCBpcHY2LCBmb3JjZVNpZ25hbGluZ10geworICAgICAgICBzdGQ6OnZl
Y3RvcjxydGM6Ok5ldHdvcmsqPiBuZXR3b3JrTGlzdChuZXR3b3Jrcy5zaXplKCkpOworICAgICAg
ICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgbmV0d29ya3Muc2l6ZSgpOyArK2luZGV4
KQorICAgICAgICAgICAgbmV0d29ya0xpc3RbaW5kZXhdID0gbmV3IHJ0Yzo6TmV0d29yayhuZXR3
b3Jrc1tpbmRleF0udmFsdWUoKSk7CisKKyAgICAgICAgYm9vbCBoYXNDaGFuZ2VkOworICAgICAg
ICBzZXRfZGVmYXVsdF9sb2NhbF9hZGRyZXNzZXMoaXB2NC52YWx1ZSwgaXB2Ni52YWx1ZSk7Cisg
ICAgICAgIE1lcmdlTmV0d29ya0xpc3QobmV0d29ya0xpc3QsICZoYXNDaGFuZ2VkKTsKKyAgICAg
ICAgaWYgKGhhc0NoYW5nZWQgfHwgZm9yY2VTaWduYWxpbmcpCisgICAgICAgICAgICBTaWduYWxO
ZXR3b3Jrc0NoYW5nZWQoKTsKKyAgICB9KTsKKworfQorCit2b2lkIExpYldlYlJUQ05ldHdvcmtN
YW5hZ2VyOjpuZXR3b3JrUHJvY2Vzc0NyYXNoZWQoKQoreworICAgIG1fcmVjZWl2ZWROZXR3b3Jr
TGlzdCA9IGZhbHNlOworICAgIGlmICghV2ViQ29yZTo6TGliV2ViUlRDUHJvdmlkZXI6Omhhc1dl
YlJUQ1RocmVhZHMoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gSW4gY2FzZSB3ZSBoYXZl
IGNsaWVudHMgd2FpdGluZyBmb3IgbmV0d29ya3NDaGFuZ2VkLCB3ZSBjYWxsIFNpZ25hbE5ldHdv
cmtzQ2hhbmdlZCB0byBtYWtlIHN1cmUgdGhleSBkbyBub3Qgd2FpdCBmb3Igbm90aGluZy4KKyAg
ICBXZWJDb3JlOjpMaWJXZWJSVENQcm92aWRlcjo6Y2FsbE9uV2ViUlRDTmV0d29ya1RocmVhZChb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7CisgICAgICAgIFNpZ25hbE5l
dHdvcmtzQ2hhbmdlZCgpOworICAgIH0pOworfQorCit2b2lkIExpYldlYlJUQ05ldHdvcmtNYW5h
Z2VyOjpDcmVhdGVOYW1lRm9yQWRkcmVzcyhjb25zdCBydGM6OklQQWRkcmVzcyYgYWRkcmVzcywg
TmFtZUNyZWF0ZWRDYWxsYmFjayBjYWxsYmFjaykKK3sKKyAgICBjYWxsT25NYWluUnVuTG9vcChb
dGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgYWRkcmVzcywgY2FsbGJhY2sgPSBX
VEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAg
ICAgICAgICAgIHJldHVybjsKKworICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5saWJX
ZWJSVENOZXR3b3JrKCkubWRuc1JlZ2lzdGVyKCkucmVnaXN0ZXJNRE5TTmFtZShtX2RvY3VtZW50
SWRlbnRpZmllciwgZnJvbVN0ZFN0cmluZyhhZGRyZXNzLlRvU3RyaW5nKCkpLCBbYWRkcmVzcywg
Y2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYXV0byBuYW1lLCBhdXRvIGVycm9yKSBtdXRh
YmxlIHsKKyAgICAgICAgICAgIFdlYkNvcmU6OkxpYldlYlJUQ1Byb3ZpZGVyOjpjYWxsT25XZWJS
VENOZXR3b3JrVGhyZWFkKFthZGRyZXNzLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBu
YW1lID0gV1RGTW92ZShuYW1lKS5pc29sYXRlZENvcHkoKSwgZXJyb3JdIHsKKyAgICAgICAgICAg
ICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRihlcnJvciwgV2ViUlRDLCAiTUROUyByZWdpc3RyYXRp
b24gb2YgYSBob3N0IGNhbmRpZGF0ZSBmYWlsZWQgd2l0aCBlcnJvciAlZCIsICplcnJvcik7Cisg
ICAgICAgICAgICAgICAgLy8gSW4gY2FzZSBvZiBlcnJvciwgd2UgcHJvdmlkZSB0aGUgbmFtZSB0
byBsZXQgZ2F0aGVyaW5nIGNvbXBsZXRlLgorICAgICAgICAgICAgICAgIGNhbGxiYWNrKGFkZHJl
c3MsIG5hbWUudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7Cisg
ICAgfSk7Cit9CisKK3ZvaWQgTGliV2ViUlRDTmV0d29ya01hbmFnZXI6OlJlbW92ZU5hbWVGb3JB
ZGRyZXNzKGNvbnN0IHJ0Yzo6SVBBZGRyZXNzJiwgTmFtZVJlbW92ZWRDYWxsYmFjaykKK3sKKyAg
ICAvLyBMaWJXZWJSVEMgYmFja2VuZCBkZWZpbmVzIHRoaXMgbWV0aG9kIGJ1dCBkb2VzIG5vdCBj
YWxsIGl0LgorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKKworI2VuZGlmIC8vIFVTRShMSUJXRUJSVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDTmV0d29ya01hbmFnZXIuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENOZXR3b3Jr
TWFuYWdlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdhMjBlNGVjZjg2MjRhZDdmNjI2OTVlMzViYThhNTdiODdj
MmYwNjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay93ZWJydGMvTGliV2ViUlRDTmV0d29ya01hbmFnZXIuaApAQCAtMCwwICsxLDY5IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBVU0UoTElCV0VCUlRDKQorCisjaW5jbHVkZSAi
V2ViUlRDTW9uaXRvci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvTGliV2ViUlRDUHJvdmlkZXIuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL1JUQ05ldHdvcmtNYW5hZ2VyLmg+CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitjbGFzcyBMaWJXZWJSVENOZXR3b3JrTWFuYWdlciBmaW5hbCA6IHB1YmxpYyBXZWJD
b3JlOjpSVENOZXR3b3JrTWFuYWdlciwgcHVibGljIHJ0Yzo6TmV0d29ya01hbmFnZXJCYXNlLCBw
dWJsaWMgd2VicnRjOjpNZG5zUmVzcG9uZGVySW50ZXJmYWNlLCBwdWJsaWMgV2ViUlRDTW9uaXRv
cjo6T2JzZXJ2ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAg
IHN0YXRpYyBMaWJXZWJSVENOZXR3b3JrTWFuYWdlciogZ2V0T3JDcmVhdGUoV2ViQ29yZTo6RG9j
dW1lbnRJZGVudGlmaWVyKTsKKyAgICB+TGliV2ViUlRDTmV0d29ya01hbmFnZXIoKTsKKworcHJp
dmF0ZToKKyAgICBleHBsaWNpdCBMaWJXZWJSVENOZXR3b3JrTWFuYWdlcihXZWJDb3JlOjpEb2N1
bWVudElkZW50aWZpZXIpOworCisgICAgLy8gV2ViQ29yZTo6UlRDTmV0d29ya01hbmFnZXIKKyAg
ICB2b2lkIHNldElDRUNhbmRpZGF0ZUZpbHRlcmluZyhib29sIGRvRmlsdGVyaW5nKSBmaW5hbCB7
IG1fdXNlTUROU0NhbmRpZGF0ZXMgPSBkb0ZpbHRlcmluZzsgfQorICAgIHZvaWQgdW5yZWdpc3Rl
ck1ETlNOYW1lcygpIGZpbmFsOworCisgICAgLy8gd2VicnRjOjpOZXR3b3JrTWFuYWdlckJhc2UK
KyAgICB2b2lkIFN0YXJ0VXBkYXRpbmcoKSBmaW5hbDsKKyAgICB2b2lkIFN0b3BVcGRhdGluZygp
IGZpbmFsOworICAgIHdlYnJ0Yzo6TWRuc1Jlc3BvbmRlckludGVyZmFjZSogR2V0TWRuc1Jlc3Bv
bmRlcigpIGNvbnN0IGZpbmFsOworCisgICAgLy8gd2VicnRjOjpNZG5zUmVzcG9uZGVySW50ZXJm
YWNlCisgICAgdm9pZCBDcmVhdGVOYW1lRm9yQWRkcmVzcyhjb25zdCBydGM6OklQQWRkcmVzcyYs
IE5hbWVDcmVhdGVkQ2FsbGJhY2spOworICAgIHZvaWQgUmVtb3ZlTmFtZUZvckFkZHJlc3MoY29u
c3QgcnRjOjpJUEFkZHJlc3MmLCBOYW1lUmVtb3ZlZENhbGxiYWNrKTsKKworICAgIC8vIFdlYlJU
Q01vbml0b3I6Ok9ic2VydmVyCisgICAgdm9pZCBuZXR3b3Jrc0NoYW5nZWQoY29uc3QgVmVjdG9y
PFJUQ05ldHdvcms+JiwgY29uc3QgUlRDTmV0d29yazo6SVBBZGRyZXNzJiwgY29uc3QgUlRDTmV0
d29yazo6SVBBZGRyZXNzJikgZmluYWw7CisgICAgdm9pZCBuZXR3b3JrUHJvY2Vzc0NyYXNoZWQo
KSBmaW5hbDsKKworICAgIERvY3VtZW50SWRlbnRpZmllciBtX2RvY3VtZW50SWRlbnRpZmllcjsK
KyAgICBib29sIG1fdXNlTUROU0NhbmRpZGF0ZXMgeyB0cnVlIH07CisgICAgYm9vbCBtX3JlY2Vp
dmVkTmV0d29ya0xpc3QgeyBmYWxzZSB9OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisK
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2Vi
cnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL3dlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHAKaW5kZXggOTY4YzlmMzA0YjY1NDgwOWY5
OTI2MjU2YzEwMDU1MDdjOTcxMmY1NS4uZjljNGE5MGQ4MjFkYWY3YThhYjM5YWZkZDMxNjQyMDU4
NTE2M2I3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2Vi
cnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay93ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAj
ZW5kaWYKIAogI2luY2x1ZGUgIkxpYldlYlJUQ05ldHdvcmsuaCIKKyNpbmNsdWRlICJMaWJXZWJS
VENOZXR3b3JrTWFuYWdlci5oIgogI2luY2x1ZGUgIlJUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdl
ci5oIgogI2luY2x1ZGUgIldlYlBhZ2UuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCkBAIC01
NCw3ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgfQogfTsKIAotcnRjOjpzY29wZWRfcmVmcHRyPHdl
YnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U+IExpYldlYlJUQ1Byb3ZpZGVyOjpjcmVhdGVQ
ZWVyQ29ubmVjdGlvbih3ZWJydGM6OlBlZXJDb25uZWN0aW9uT2JzZXJ2ZXImIG9ic2VydmVyLCBy
dGM6OlBhY2tldFNvY2tldEZhY3RvcnkqIHNvY2tldEZhY3RvcnksIHdlYnJ0Yzo6UGVlckNvbm5l
Y3Rpb25JbnRlcmZhY2U6OlJUQ0NvbmZpZ3VyYXRpb24mJiBjb25maWd1cmF0aW9uKQorcnRjOjpz
Y29wZWRfcmVmcHRyPHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U+IExpYldlYlJUQ1By
b3ZpZGVyOjpjcmVhdGVQZWVyQ29ubmVjdGlvbihEb2N1bWVudElkZW50aWZpZXIgaWRlbnRpZmll
ciwgd2VicnRjOjpQZWVyQ29ubmVjdGlvbk9ic2VydmVyJiBvYnNlcnZlciwgcnRjOjpQYWNrZXRT
b2NrZXRGYWN0b3J5KiBzb2NrZXRGYWN0b3J5LCB3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJm
YWNlOjpSVENDb25maWd1cmF0aW9uJiYgY29uZmlndXJhdGlvbikKIHsKICNpZiBFTkFCTEUoR1BV
X1BST0NFU1MpICYmIFBMQVRGT1JNKENPQ09BKSAmJiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAg
ICAgaWYgKCFtX2RpZEluaXRpYWxpemVDYWxsYmFjaykgewpAQCAtNjcsMjIgKzY4LDE3IEBAIHJ0
Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlPiBMaWJXZWJS
VENQcm92aWRlcjo6Y3JlYXRlUGVlCiAKICAgICBhdXRvJiBuZXR3b3JrTW9uaXRvciA9IFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLmxpYldlYlJUQ05ldHdvcmsoKS5tb25pdG9yKCk7CiAgICAgbmV0
d29ya01vbml0b3Iuc2V0RW51bWVyYXRpbmdBbGxOZXR3b3JrSW50ZXJmYWNlc0VuYWJsZWQoaXNF
bnVtZXJhdGluZ0FsbE5ldHdvcmtJbnRlcmZhY2VzRW5hYmxlZCgpKTsKLSAgICByZXR1cm4gV2Vi
Q29yZTo6TGliV2ViUlRDUHJvdmlkZXI6OmNyZWF0ZVBlZXJDb25uZWN0aW9uKG9ic2VydmVyLCBu
ZXR3b3JrTW9uaXRvciwgKnNvY2tldEZhY3RvcnksIFdURk1vdmUoY29uZmlndXJhdGlvbiksIG1h
a2VVbmlxdWU8QXN5bmNSZXNvbHZlckZhY3Rvcnk+KCkpOwotfQogCi12b2lkIExpYldlYlJUQ1By
b3ZpZGVyOjpkaXNhYmxlTm9uTG9jYWxob3N0Q29ubmVjdGlvbnMoKQotewotICAgIFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLmxpYldlYlJUQ05ldHdvcmsoKS5kaXNhYmxlTm9uTG9jYWxob3N0Q29u
bmVjdGlvbnMoKTsKLX0KKyAgICBhdXRvKiBuZXR3b3JrTWFuYWdlciA9IExpYldlYlJUQ05ldHdv
cmtNYW5hZ2VyOjpnZXRPckNyZWF0ZShpZGVudGlmaWVyKTsKKyAgICBpZiAoIW5ldHdvcmtNYW5h
Z2VyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotdm9pZCBMaWJXZWJSVENQcm92aWRlcjo6
dW5yZWdpc3Rlck1ETlNOYW1lcyhEb2N1bWVudElkZW50aWZpZXIgZG9jdW1lbnRJZGVudGlmaWVy
KQotewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmxpYldlYlJUQ05ldHdvcmsoKS5tZG5z
UmVnaXN0ZXIoKS51bnJlZ2lzdGVyTUROU05hbWVzKGRvY3VtZW50SWRlbnRpZmllcik7CisgICAg
cmV0dXJuIFdlYkNvcmU6OkxpYldlYlJUQ1Byb3ZpZGVyOjpjcmVhdGVQZWVyQ29ubmVjdGlvbihv
YnNlcnZlciwgKm5ldHdvcmtNYW5hZ2VyLCAqc29ja2V0RmFjdG9yeSwgV1RGTW92ZShjb25maWd1
cmF0aW9uKSwgbWFrZVVuaXF1ZTxBc3luY1Jlc29sdmVyRmFjdG9yeT4oKSk7CiB9CiAKLXZvaWQg
TGliV2ViUlRDUHJvdmlkZXI6OnJlZ2lzdGVyTUROU05hbWUoRG9jdW1lbnRJZGVudGlmaWVyIGRv
Y3VtZW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBpcEFkZHJlc3MsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoTUROU05hbWVPckVycm9yJiYpPiYmIGNhbGxiYWNrKQordm9pZCBMaWJXZWJSVENQ
cm92aWRlcjo6ZGlzYWJsZU5vbkxvY2FsaG9zdENvbm5lY3Rpb25zKCkKIHsKLSAgICBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5saWJXZWJSVENOZXR3b3JrKCkubWRuc1JlZ2lzdGVyKCkucmVnaXN0
ZXJNRE5TTmFtZShkb2N1bWVudElkZW50aWZpZXIsIGlwQWRkcmVzcywgV1RGTW92ZShjYWxsYmFj
aykpOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmxpYldlYlJUQ05ldHdvcmsoKS5kaXNh
YmxlTm9uTG9jYWxob3N0Q29ubmVjdGlvbnMoKTsKIH0KIAogY2xhc3MgUlRDU29ja2V0RmFjdG9y
eSBmaW5hbCA6IHB1YmxpYyBMaWJXZWJSVENQcm92aWRlcjo6U3VzcGVuZGFibGVTb2NrZXRGYWN0
b3J5IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0
Yy9MaWJXZWJSVENQcm92aWRlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
d2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmgKaW5kZXggNzJhZDNhNDI5ZmVmYmZhMWQ0Y2FlZjVj
MmJmN2M5NTczMDFlMTIwMS4uODgzYWRmY2FjOTMwYzA2ZDk1OGQyMzk4ZjI3MGM3NWYxYzY0NGU4
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xp
YldlYlJUQ1Byb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
d2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmgKQEAgLTU0LDEwICs1NCw4IEBAIHB1YmxpYzoKIHBy
aXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPFN1c3BlbmRhYmxlU29ja2V0RmFjdG9yeT4gY3Jl
YXRlU29ja2V0RmFjdG9yeShTdHJpbmcmJiAvKiB1c2VyQWdlbnQgKi8sIGJvb2wgLyogaXNGaXJz
dFBhcnR5ICovLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmKSBmaW5hbDsKIAotICAgIHJ0
Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlPiBjcmVhdGVQ
ZWVyQ29ubmVjdGlvbih3ZWJydGM6OlBlZXJDb25uZWN0aW9uT2JzZXJ2ZXImLCBydGM6OlBhY2tl
dFNvY2tldEZhY3RvcnkqLCB3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpSVENDb25m
aWd1cmF0aW9uJiYpIGZpbmFsOworICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlBlZXJD
b25uZWN0aW9uSW50ZXJmYWNlPiBjcmVhdGVQZWVyQ29ubmVjdGlvbihXZWJDb3JlOjpEb2N1bWVu
dElkZW50aWZpZXIsIHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25PYnNlcnZlciYsIHJ0Yzo6UGFja2V0
U29ja2V0RmFjdG9yeSosIHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OlJUQ0NvbmZp
Z3VyYXRpb24mJikgZmluYWw7CiAKLSAgICB2b2lkIHVucmVnaXN0ZXJNRE5TTmFtZXMoV2ViQ29y
ZTo6RG9jdW1lbnRJZGVudGlmaWVyKSBmaW5hbDsKLSAgICB2b2lkIHJlZ2lzdGVyTUROU05hbWUo
V2ViQ29yZTo6RG9jdW1lbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGlwQWRkcmVzcywgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChNRE5TTmFtZU9yRXJyb3ImJik+JiYpIGZpbmFsOwogICAgIHZv
aWQgZGlzYWJsZU5vbkxvY2FsaG9zdENvbm5lY3Rpb25zKCkgZmluYWw7CiAgICAgdm9pZCBzdGFy
dGVkTmV0d29ya1RocmVhZCgpIGZpbmFsOwogICAgIFJlZlB0cjxXZWJDb3JlOjpSVENEYXRhQ2hh
bm5lbFJlbW90ZUhhbmRsZXJDb25uZWN0aW9uPiBjcmVhdGVSVENEYXRhQ2hhbm5lbFJlbW90ZUhh
bmRsZXJDb25uZWN0aW9uKCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay93ZWJydGMvV2ViTUROU1JlZ2lzdGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJNRE5TUmVnaXN0ZXIuY3BwCmluZGV4IDUxNTkw
ZjlhY2NlNjI0NDA2OGIxNDdjZTZhOWM3YzE4MjU3NTc3NjEuLjc2MDIwN2VhNTliY2EyNTQ1MjJm
NTZjNTlhNTI0NWU1OTVhOGRlMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL3dlYnJ0Yy9XZWJNRE5TUmVnaXN0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJNRE5TUmVnaXN0ZXIuY3BwCkBAIC0zNiwyMiAr
MzYsMjIgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAK
LXZvaWQgV2ViTUROU1JlZ2lzdGVyOjpmaW5pc2hlZFJlZ2lzdGVyaW5nTUROU05hbWUoTUROU1Jl
Z2lzdGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBMaWJXZWJSVENQcm92aWRlcjo6TUROU05hbWVP
ckVycm9yJiYgcmVzdWx0KQordm9pZCBXZWJNRE5TUmVnaXN0ZXI6OmZpbmlzaGVkUmVnaXN0ZXJp
bmdNRE5TTmFtZShNRE5TUmVnaXN0ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFN0cmluZyYmIG5h
bWUsIHN0ZDo6b3B0aW9uYWw8TUROU1JlZ2lzdGVyRXJyb3I+IGVycm9yKQogewogICAgIGF1dG8g
cGVuZGluZ1JlZ2lzdHJhdGlvbiA9IG1fcGVuZGluZ1JlZ2lzdHJhdGlvbnMudGFrZShpZGVudGlm
aWVyKTsKICAgICBpZiAoIXBlbmRpbmdSZWdpc3RyYXRpb24uY2FsbGJhY2spCiAgICAgICAgIHJl
dHVybjsKIAotICAgIGlmIChyZXN1bHQuaGFzX3ZhbHVlKCkpIHsKKyAgICBpZiAoIWVycm9yKSB7
CiAgICAgICAgIGF1dG8gaXRlcmF0b3IgPSBtX3JlZ2lzdGVyaW5nRG9jdW1lbnRzLmZpbmQocGVu
ZGluZ1JlZ2lzdHJhdGlvbi5kb2N1bWVudElkZW50aWZpZXIpOwogICAgICAgICBpZiAoaXRlcmF0
b3IgPT0gbV9yZWdpc3RlcmluZ0RvY3VtZW50cy5lbmQoKSkgewotICAgICAgICAgICAgcGVuZGlu
Z1JlZ2lzdHJhdGlvbi5jYWxsYmFjayhtYWtlVW5leHBlY3RlZChXZWJDb3JlOjpNRE5TUmVnaXN0
ZXJFcnJvcjo6RE5TU0QpKTsKKyAgICAgICAgICAgIHBlbmRpbmdSZWdpc3RyYXRpb24uY2FsbGJh
Y2sobmFtZSwgV2ViQ29yZTo6TUROU1JlZ2lzdGVyRXJyb3I6OkROU1NEKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQotICAgICAgICBpdGVyYXRvci0+dmFsdWUuYWRkKHBlbmRpbmdS
ZWdpc3RyYXRpb24uaXBBZGRyZXNzLCByZXN1bHQudmFsdWUoKSk7CisgICAgICAgIGl0ZXJhdG9y
LT52YWx1ZS5hZGQocGVuZGluZ1JlZ2lzdHJhdGlvbi5pcEFkZHJlc3MsIG5hbWUpOwogICAgIH0K
IAotICAgIHBlbmRpbmdSZWdpc3RyYXRpb24uY2FsbGJhY2soV1RGTW92ZShyZXN1bHQpKTsKKyAg
ICBwZW5kaW5nUmVnaXN0cmF0aW9uLmNhbGxiYWNrKG5hbWUsIGVycm9yKTsKIH0KIAogdm9pZCBX
ZWJNRE5TUmVnaXN0ZXI6OnVucmVnaXN0ZXJNRE5TTmFtZXMoRG9jdW1lbnRJZGVudGlmaWVyIGlk
ZW50aWZpZXIpCkBAIC02Myw3ICs2Myw3IEBAIHZvaWQgV2ViTUROU1JlZ2lzdGVyOjp1bnJlZ2lz
dGVyTUROU05hbWVzKERvY3VtZW50SWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIGNvbm5lY3Rp
b24uc2VuZChNZXNzYWdlczo6TmV0d29ya01ETlNSZWdpc3Rlcjo6VW5yZWdpc3Rlck1ETlNOYW1l
cyB7IGlkZW50aWZpZXIgfSwgMCk7CiB9CiAKLXZvaWQgV2ViTUROU1JlZ2lzdGVyOjpyZWdpc3Rl
ck1ETlNOYW1lKERvY3VtZW50SWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGlw
QWRkcmVzcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChMaWJXZWJSVENQcm92aWRlcjo6TUROU05h
bWVPckVycm9yJiYpPiYmIGNhbGxiYWNrKQordm9pZCBXZWJNRE5TUmVnaXN0ZXI6OnJlZ2lzdGVy
TUROU05hbWUoRG9jdW1lbnRJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgaXBB
ZGRyZXNzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYsIHN0ZDo6b3B0aW9u
YWw8TUROU1JlZ2lzdGVyRXJyb3I+KT4mJiBjYWxsYmFjaykKIHsKICAgICBhdXRvJiBtYXAgPSBt
X3JlZ2lzdGVyaW5nRG9jdW1lbnRzLmVuc3VyZShpZGVudGlmaWVyLCBbXSB7CiAgICAgICAgIHJl
dHVybiBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiB7IH07CkBAIC03MSwxNiArNzEsMTcgQEAgdm9p
ZCBXZWJNRE5TUmVnaXN0ZXI6OnJlZ2lzdGVyTUROU05hbWUoRG9jdW1lbnRJZGVudGlmaWVyIGlk
ZW50aWZpZXIsIGNvbnN0IFN0cmkKIAogICAgIGF1dG8gaXRlcmF0b3IgPSBtYXAuZmluZChpcEFk
ZHJlc3MpOwogICAgIGlmIChpdGVyYXRvciAhPSBtYXAuZW5kKCkpIHsKLSAgICAgICAgY2FsbGJh
Y2soaXRlcmF0b3ItPnZhbHVlKTsKKyAgICAgICAgY2FsbGJhY2soaXRlcmF0b3ItPnZhbHVlLCB7
IH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgYXV0byByZXF1ZXN0SWRlbnRpZmll
ciA9IE1ETlNSZWdpc3RlcklkZW50aWZpZXI6OmdlbmVyYXRlKCk7CiAgICAgbV9wZW5kaW5nUmVn
aXN0cmF0aW9ucy5hZGQocmVxdWVzdElkZW50aWZpZXIsIFBlbmRpbmdSZWdpc3RyYXRpb24geyBX
VEZNb3ZlKGNhbGxiYWNrKSwgaWRlbnRpZmllciwgaXBBZGRyZXNzIH0pOwogCisgICAgLy8gRklY
TUU6IFVzZSBhc3luYyByZXBseS4KICAgICBhdXRvJiBjb25uZWN0aW9uID0gV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigp
OwogICAgIGlmICghY29ubmVjdGlvbi5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrTUROU1JlZ2lzdGVy
OjpSZWdpc3Rlck1ETlNOYW1lIHsgcmVxdWVzdElkZW50aWZpZXIsIGlkZW50aWZpZXIsIGlwQWRk
cmVzcyB9LCAwKSkKLSAgICAgICAgZmluaXNoZWRSZWdpc3RlcmluZ01ETlNOYW1lKHJlcXVlc3RJ
ZGVudGlmaWVyLCBtYWtlVW5leHBlY3RlZChNRE5TUmVnaXN0ZXJFcnJvcjo6SW50ZXJuYWwpKTsK
KyAgICAgICAgZmluaXNoZWRSZWdpc3RlcmluZ01ETlNOYW1lKHJlcXVlc3RJZGVudGlmaWVyLCB7
IH0sIE1ETlNSZWdpc3RlckVycm9yOjpJbnRlcm5hbCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRj
L1dlYk1ETlNSZWdpc3Rlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2Vi
cnRjL1dlYk1ETlNSZWdpc3Rlci5oCmluZGV4IDBjMGY2MTMzYWY0NjhjOWViYjhjNjdhMmFlNGU4
YzlhNzMzZWU2YWQuLjJjMGZmMGU0NjY1MTFmOTc4ZmI4MDkyNzIwYWYwNzNkYmY1MzhmYmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJNRE5T
UmVnaXN0ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMv
V2ViTUROU1JlZ2lzdGVyLmgKQEAgLTQ2LDE1ICs0NiwxNSBAQCBwdWJsaWM6CiAgICAgV2ViTURO
U1JlZ2lzdGVyKCkgPSBkZWZhdWx0OwogCiAgICAgdm9pZCB1bnJlZ2lzdGVyTUROU05hbWVzKFdl
YkNvcmU6OkRvY3VtZW50SWRlbnRpZmllcik7Ci0gICAgdm9pZCByZWdpc3Rlck1ETlNOYW1lKFdl
YkNvcmU6OkRvY3VtZW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBpcEFkZHJlc3MsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6TGliV2ViUlRDUHJvdmlkZXI6Ok1ETlNOYW1lT3JF
cnJvciYmKT4mJik7CisgICAgdm9pZCByZWdpc3Rlck1ETlNOYW1lKFdlYkNvcmU6OkRvY3VtZW50
SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBpcEFkZHJlc3MsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3QgU3RyaW5nJiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpNRE5TUmVnaXN0ZXJFcnJv
cj4pPiYmKTsKIAogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwg
SVBDOjpEZWNvZGVyJik7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBmaW5pc2hlZFJlZ2lzdGVyaW5n
TUROU05hbWUoTUROU1JlZ2lzdGVySWRlbnRpZmllciwgV2ViQ29yZTo6TGliV2ViUlRDUHJvdmlk
ZXI6Ok1ETlNOYW1lT3JFcnJvciYmKTsKKyAgICB2b2lkIGZpbmlzaGVkUmVnaXN0ZXJpbmdNRE5T
TmFtZShNRE5TUmVnaXN0ZXJJZGVudGlmaWVyLCBTdHJpbmcmJiwgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpNRE5TUmVnaXN0ZXJFcnJvcj4pOwogCiAgICAgc3RydWN0IFBlbmRpbmdSZWdpc3RyYXRp
b24gewotICAgICAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OkxpYldlYlJUQ1By
b3ZpZGVyOjpNRE5TTmFtZU9yRXJyb3ImJik+IGNhbGxiYWNrOworICAgICAgICBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6TUROU1Jl
Z2lzdGVyRXJyb3I+KT4gY2FsbGJhY2s7CiAgICAgICAgIFdlYkNvcmU6OkRvY3VtZW50SWRlbnRp
ZmllciBkb2N1bWVudElkZW50aWZpZXI7CiAgICAgICAgIFN0cmluZyBpcEFkZHJlc3M7CiAgICAg
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9X
ZWJNRE5TUmVnaXN0ZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay93ZWJydGMvV2ViTUROU1JlZ2lzdGVyLm1lc3NhZ2VzLmluCmluZGV4IGFiMTJhMWUwMTky
NmQ2YWZjYjRjMjQ3OGVkNTNmNWMzNjJhODhiOWIuLmYxZWE1YzczMDZkMmEwYzZkZTlmMWI4MTIw
NzYzZTlmZDkzMWRhNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL3dlYnJ0Yy9XZWJNRE5TUmVnaXN0ZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1dlYk1ETlNSZWdpc3Rlci5tZXNzYWdlcy5pbgpA
QCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDE4LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMyw3ICsyMyw3
IEBACiAjaWYgRU5BQkxFKFdFQl9SVEMpCiAKIG1lc3NhZ2VzIC0+IFdlYk1ETlNSZWdpc3RlciBO
b3RSZWZDb3VudGVkIHsKLSAgICB2b2lkIEZpbmlzaGVkUmVnaXN0ZXJpbmdNRE5TTmFtZShXZWJL
aXQ6Ok1ETlNSZWdpc3RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViQ29yZTo6TGliV2ViUlRD
UHJvdmlkZXI6Ok1ETlNOYW1lT3JFcnJvciByZXN1bHQpCisgICAgdm9pZCBGaW5pc2hlZFJlZ2lz
dGVyaW5nTUROU05hbWUoV2ViS2l0OjpNRE5TUmVnaXN0ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIs
IFN0cmluZyBtZG5zTmFtZSwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpNRE5TUmVnaXN0ZXJFcnJv
cj4gZXJyb3IpCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCX1JUQykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJSVENNb25pdG9yLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJSVENNb25pdG9yLmNw
cAppbmRleCAwZjlkYWQyZDFkMjlkMGIzMDc5ZDM4NzFiN2UxNDU0MTUyOTA0OTM2Li5kMGNiOThi
ZTg4MGJiNjEzZmRhMjMxNTAyZTY3MDJjMDRhZjIwMjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvV2ViUlRDTW9uaXRvci5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1dlYlJUQ01vbml0b3IuY3BwCkBA
IC0zMyw4ICszMyw2IEBACiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgiCiAj
aW5jbHVkZSAiTmV0d29ya1JUQ01vbml0b3JNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nl
c3MuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0xpYldlYlJUQ01hY3Jvcy5oPgotI2luY2x1ZGUgPHdl
YnJ0Yy9ydGNfYmFzZS9uZXRfaGVscGVycy5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTMsNjcgKzUxLDQzIEBAIHZvaWQgV2ViUlRDTW9u
aXRvcjo6c2V0RW51bWVyYXRpbmdBbGxOZXR3b3JrSW50ZXJmYWNlc0VuYWJsZWQoYm9vbCBlbmFi
bGVkKQogICAgIG1fZW5hYmxlRW51bWVyYXRpbmdBbGxOZXR3b3JrSW50ZXJmYWNlcyA9IGVuYWJs
ZWQ7CiB9CiAKLXZvaWQgV2ViUlRDTW9uaXRvcjo6U3RhcnRVcGRhdGluZygpCit2b2lkIFdlYlJU
Q01vbml0b3I6OnN0YXJ0VXBkYXRpbmcoKQogewotICAgIFdFQlJUQ19SRUxFQVNFX0xPRygiU3Rh
cnRVcGRhdGluZyIpOwotICAgIGlmIChtX3JlY2VpdmVkTmV0d29ya0xpc3QpIHsKLSAgICAgICAg
V2ViQ29yZTo6TGliV2ViUlRDUHJvdmlkZXI6OmNhbGxPbldlYlJUQ05ldHdvcmtUaHJlYWQoW3Ro
aXNdIHsKLSAgICAgICAgICAgIFNpZ25hbE5ldHdvcmtzQ2hhbmdlZCgpOwotICAgICAgICB9KTsK
LSAgICB9Ci0KLSAgICBzZW5kT25NYWluVGhyZWFkKFt0aGlzXShhdXRvJiBjb25uZWN0aW9uKSB7
Ci0gICAgICAgIFdFQlJUQ19SRUxFQVNFX0xPRygiU3RhcnRVcGRhdGluZyAtIEFza2luZyBuZXR3
b3JrIHByb2Nlc3MgdG8gc3RhcnQgdXBkYXRpbmciKTsKLSAgICAgICAgY29ubmVjdGlvbi5zZW5k
KE1lc3NhZ2VzOjpOZXR3b3JrUlRDTW9uaXRvcjo6U3RhcnRVcGRhdGluZ0lmTmVlZGVkKG1fZW5h
YmxlRW51bWVyYXRpbmdBbGxOZXR3b3JrSW50ZXJmYWNlcyksIDApOwotICAgIH0pOworICAgIFdF
QlJUQ19SRUxFQVNFX0xPRygiU3RhcnRVcGRhdGluZyAtIEFza2luZyBuZXR3b3JrIHByb2Nlc3Mg
dG8gc3RhcnQgdXBkYXRpbmciKTsKKworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3Vy
ZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpO
ZXR3b3JrUlRDTW9uaXRvcjo6U3RhcnRVcGRhdGluZ0lmTmVlZGVkKG1fZW5hYmxlRW51bWVyYXRp
bmdBbGxOZXR3b3JrSW50ZXJmYWNlcyksIDApOwogICAgICsrbV9jbGllbnRDb3VudDsKIH0KIAot
dm9pZCBXZWJSVENNb25pdG9yOjpTdG9wVXBkYXRpbmcoKQordm9pZCBXZWJSVENNb25pdG9yOjpz
dG9wVXBkYXRpbmcoKQogewogICAgIFdFQlJUQ19SRUxFQVNFX0xPRygiU3RvcFVwZGF0aW5nIik7
CisKICAgICBBU1NFUlQobV9jbGllbnRDb3VudCk7CiAgICAgaWYgKC0tbV9jbGllbnRDb3VudCkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgc2VuZE9uTWFpblRocmVhZChbdGhpc10oYXV0byYgY29u
bmVjdGlvbikgewotICAgICAgICBXRUJSVENfUkVMRUFTRV9MT0coIlN0b3BVcGRhdGluZyAtIEFz
a2luZyBuZXR3b3JrIHByb2Nlc3MgdG8gc3RvcCB1cGRhdGluZyIpOwotICAgICAgICBjb25uZWN0
aW9uLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtSVENNb25pdG9yOjpTdG9wVXBkYXRpbmcoKSwgMCk7
Ci0gICAgfSk7CisgICAgV0VCUlRDX1JFTEVBU0VfTE9HKCJTdG9wVXBkYXRpbmcgLSBBc2tpbmcg
bmV0d29yayBwcm9jZXNzIHRvIHN0b3AgdXBkYXRpbmciKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2Vu
ZChNZXNzYWdlczo6TmV0d29ya1JUQ01vbml0b3I6OlN0b3BVcGRhdGluZygpLCAwKTsKIH0KIAot
dm9pZCBXZWJSVENNb25pdG9yOjpuZXR3b3Jrc0NoYW5nZWQoY29uc3QgVmVjdG9yPFJUQ05ldHdv
cms+JiBuZXR3b3JrcywgY29uc3QgUlRDTmV0d29yazo6SVBBZGRyZXNzJiBpcHY0LCBjb25zdCBS
VENOZXR3b3JrOjpJUEFkZHJlc3MmIGlwdjYpCit2b2lkIFdlYlJUQ01vbml0b3I6Om5ldHdvcmtz
Q2hhbmdlZChWZWN0b3I8UlRDTmV0d29yaz4mJiBuZXR3b3JrTGlzdCwgUlRDTmV0d29yazo6SVBB
ZGRyZXNzJiYgaXB2NCwgUlRDTmV0d29yazo6SVBBZGRyZXNzJiYgaXB2NikKIHsKICAgICBXRUJS
VENfUkVMRUFTRV9MT0coIm5ldHdvcmtzQ2hhbmdlZCIpOwotICAgIC8vIE5vIG5lZWQgdG8gcHJv
dGVjdCAndGhpcycgYXMgaXQgaGFzIHRoZSBsaWZldGltZSBvZiBMaWJXZWJSVEMgd2hpY2ggaGFz
IHRoZSBsaWZldGltZSBvZiB0aGUgd2ViIHByb2Nlc3MuCi0gICAgV2ViQ29yZTo6TGliV2ViUlRD
UHJvdmlkZXI6OmNhbGxPbldlYlJUQ05ldHdvcmtUaHJlYWQoW3RoaXMsIG5ldHdvcmtzLCBpcHY0
LCBpcHY2XSB7Ci0gICAgICAgIFdFQlJUQ19SRUxFQVNFX0xPRygibmV0d29ya3NDaGFuZ2VkIC0g
U2lnbmFsaW5nIik7Ci0gICAgICAgIHN0ZDo6dmVjdG9yPHJ0Yzo6TmV0d29yayo+IG5ldHdvcmtM
aXN0KG5ldHdvcmtzLnNpemUoKSk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5k
ZXggPCBuZXR3b3Jrcy5zaXplKCk7ICsraW5kZXgpCi0gICAgICAgICAgICBuZXR3b3JrTGlzdFtp
bmRleF0gPSBuZXcgcnRjOjpOZXR3b3JrKG5ldHdvcmtzW2luZGV4XS52YWx1ZSgpKTsKLQotICAg
ICAgICBib29sIGZvcmNlU2lnbmFsaW5nID0gIW1fcmVjZWl2ZWROZXR3b3JrTGlzdDsKLSAgICAg
ICAgbV9yZWNlaXZlZE5ldHdvcmtMaXN0ID0gdHJ1ZTsKLQotICAgICAgICBib29sIGhhc0NoYW5n
ZWQ7Ci0gICAgICAgIHNldF9kZWZhdWx0X2xvY2FsX2FkZHJlc3NlcyhpcHY0LnZhbHVlLCBpcHY2
LnZhbHVlKTsKLSAgICAgICAgTWVyZ2VOZXR3b3JrTGlzdChuZXR3b3JrTGlzdCwgJmhhc0NoYW5n
ZWQpOwotICAgICAgICBpZiAoaGFzQ2hhbmdlZCB8fCBmb3JjZVNpZ25hbGluZykKLSAgICAgICAg
ICAgIFNpZ25hbE5ldHdvcmtzQ2hhbmdlZCgpOwogCi0gICAgfSk7CisgICAgbV9kaWRSZWNlaXZl
TmV0d29ya0xpc3QgPSB0cnVlOworICAgIG1fbmV0d29ya0xpc3QgPSBXVEZNb3ZlKG5ldHdvcmtM
aXN0KTsKKyAgICBtX2lwdjQgPSBXVEZNb3ZlKGlwdjQpOworICAgIG1faXB2NiA9IFdURk1vdmUo
aXB2Nik7CisKKyAgICBmb3IgKGF1dG8mIG9ic2VydmVyIDogbV9vYnNlcnZlcnMpCisgICAgICAg
IG9ic2VydmVyLm5ldHdvcmtzQ2hhbmdlZChtX25ldHdvcmtMaXN0LCBtX2lwdjQsIG1faXB2Nik7
CiB9CiAKIHZvaWQgV2ViUlRDTW9uaXRvcjo6bmV0d29ya1Byb2Nlc3NDcmFzaGVkKCkKIHsKLSAg
ICBtX3JlY2VpdmVkTmV0d29ya0xpc3QgPSBmYWxzZTsKLSAgICBpZiAoIVdlYkNvcmU6OkxpYldl
YlJUQ1Byb3ZpZGVyOjpoYXNXZWJSVENUaHJlYWRzKCkpCi0gICAgICAgIHJldHVybjsKLQotICAg
IC8vIEluIGNhc2Ugd2UgaGF2ZSBjbGllbnRzIHdhaXRpbmcgZm9yIG5ldHdvcmtzQ2hhbmdlZCwg
d2UgY2FsbCBTaWduYWxOZXR3b3Jrc0NoYW5nZWQgdG8gbWFrZSBzdXJlIHRoZXkgZG8gbm90IHdh
aXQgZm9yIG5vdGhpbmcuICAgIAotICAgIFdlYkNvcmU6OkxpYldlYlJUQ1Byb3ZpZGVyOjpjYWxs
T25XZWJSVENOZXR3b3JrVGhyZWFkKFt0aGlzXSB7Ci0gICAgICAgIFNpZ25hbE5ldHdvcmtzQ2hh
bmdlZCgpOwotICAgIH0pOworICAgIGZvciAoYXV0byYgb2JzZXJ2ZXIgOiBtX29ic2VydmVycykK
KyAgICAgICAgb2JzZXJ2ZXIubmV0d29ya1Byb2Nlc3NDcmFzaGVkKCk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvd2VicnRjL1dlYlJUQ01vbml0b3IuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL3dlYnJ0Yy9XZWJSVENNb25pdG9yLmgKaW5kZXggZjZiOTczOWZhZGRjMzgyY2Q0MjJlNWJh
YThlYTI4NTZlNWY0ZmIwZi4uMDY4NTkwZTUzMjY0MWExZmRhMzU3YWFjMTJhZDIzMjRiMjA0NDI0
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1dl
YlJUQ01vbml0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJy
dGMvV2ViUlRDTW9uaXRvci5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiUlRDTmV0d29y
ay5oIgogI2luY2x1ZGUgPFdlYkNvcmUvTGliV2ViUlRDUHJvdmlkZXIuaD4KICNpbmNsdWRlIDx3
dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrSGFzaFNldC5oPgogCiBuYW1lc3BhY2Ug
SVBDIHsKIGNsYXNzIENvbm5lY3Rpb247CkBAIC00MCwyNiArNDEsNDIgQEAgbmFtZXNwYWNlIFdl
YktpdCB7CiAKIHN0cnVjdCBOZXR3b3Jrc0NoYW5nZWREYXRhOwogCi1jbGFzcyBXZWJSVENNb25p
dG9yIGZpbmFsIDogcHVibGljIHJ0Yzo6TmV0d29ya01hbmFnZXJCYXNlIHsKK2NsYXNzIFdlYlJU
Q01vbml0b3IgewogcHVibGljOgogICAgIFdlYlJUQ01vbml0b3IoKSA9IGRlZmF1bHQ7CiAKKyAg
ICBjbGFzcyBPYnNlcnZlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxPYnNlcnZlcj4geworICAg
IHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCB+T2JzZXJ2ZXIoKSA9IGRlZmF1bHQ7CisgICAgICAg
IHZpcnR1YWwgdm9pZCBuZXR3b3Jrc0NoYW5nZWQoY29uc3QgVmVjdG9yPFJUQ05ldHdvcms+Jiwg
Y29uc3QgUlRDTmV0d29yazo6SVBBZGRyZXNzJiwgY29uc3QgUlRDTmV0d29yazo6SVBBZGRyZXNz
JikgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgbmV0d29ya1Byb2Nlc3NDcmFzaGVkKCkgPSAw
OworICAgIH07CisgICAgdm9pZCBhZGRPYnNlcnZlcihPYnNlcnZlciYgb2JzZXJ2ZXIpIHsgbV9v
YnNlcnZlcnMuYWRkKG9ic2VydmVyKTsgfQorICAgIHZvaWQgcmVtb3ZlT2JzZXJ2ZXIoT2JzZXJ2
ZXImIG9ic2VydmVyKSB7IG1fb2JzZXJ2ZXJzLnJlbW92ZShvYnNlcnZlcik7IH0KKyAgICB2b2lk
IHN0YXJ0VXBkYXRpbmcoKTsKKyAgICB2b2lkIHN0b3BVcGRhdGluZygpOworCiAgICAgdm9pZCBu
ZXR3b3JrUHJvY2Vzc0NyYXNoZWQoKTsKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwogICAgIHZvaWQgc2V0RW51bWVyYXRpbmdBbGxO
ZXR3b3JrSW50ZXJmYWNlc0VuYWJsZWQoYm9vbCk7CiAKLXByaXZhdGU6Ci0gICAgdm9pZCBuZXR3
b3Jrc0NoYW5nZWQoY29uc3QgVmVjdG9yPFJUQ05ldHdvcms+JiBuZXR3b3JrTGlzdCwgY29uc3Qg
UlRDTmV0d29yazo6SVBBZGRyZXNzJiwgY29uc3QgUlRDTmV0d29yazo6SVBBZGRyZXNzJik7Cisg
ICAgYm9vbCBkaWRSZWNlaXZlTmV0d29ya0xpc3QoKSBjb25zdCB7IHJldHVybiBtX2RpZFJlY2Vp
dmVOZXR3b3JrTGlzdDsgfQorICAgIGNvbnN0IFZlY3RvcjxSVENOZXR3b3JrPiYgbmV0d29ya0xp
c3QoKSBjb25zdCB7IHJldHVybiBtX25ldHdvcmtMaXN0OyB9CisgICAgY29uc3QgUlRDTmV0d29y
azo6SVBBZGRyZXNzJiBpcHY0KCkgY29uc3QgeyByZXR1cm4gbV9pcHY0OyB9CisgICAgY29uc3Qg
UlRDTmV0d29yazo6SVBBZGRyZXNzJiBpcHY2KCkgY29uc3QgeyByZXR1cm4gbV9pcHY2OyB9CiAK
LSAgICB2b2lkIFN0YXJ0VXBkYXRpbmcoKSBmaW5hbDsKLSAgICB2b2lkIFN0b3BVcGRhdGluZygp
IGZpbmFsOwotICAgIHdlYnJ0Yzo6TWRuc1Jlc3BvbmRlckludGVyZmFjZSogR2V0TWRuc1Jlc3Bv
bmRlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG51bGxwdHI7IH0KK3ByaXZhdGU6CisgICAgdm9p
ZCBuZXR3b3Jrc0NoYW5nZWQoVmVjdG9yPFJUQ05ldHdvcms+JiYsIFJUQ05ldHdvcms6OklQQWRk
cmVzcyYmLCBSVENOZXR3b3JrOjpJUEFkZHJlc3MmJik7CiAKICAgICBzdGF0aWMgdm9pZCBzZW5k
T25NYWluVGhyZWFkKEZ1bmN0aW9uPHZvaWQoSVBDOjpDb25uZWN0aW9uJik+JiYpOwogCiAgICAg
dW5zaWduZWQgbV9jbGllbnRDb3VudCB7IDAgfTsKLSAgICBib29sIG1fcmVjZWl2ZWROZXR3b3Jr
TGlzdCB7IGZhbHNlIH07CisgICAgV2Vha0hhc2hTZXQ8T2JzZXJ2ZXI+IG1fb2JzZXJ2ZXJzOwog
ICAgIGJvb2wgbV9lbmFibGVFbnVtZXJhdGluZ0FsbE5ldHdvcmtJbnRlcmZhY2VzIHsgZmFsc2Ug
fTsKKyAgICBib29sIG1fZGlkUmVjZWl2ZU5ldHdvcmtMaXN0IHsgZmFsc2UgfTsKKyAgICBWZWN0
b3I8UlRDTmV0d29yaz4gbV9uZXR3b3JrTGlzdDsKKyAgICBSVENOZXR3b3JrOjpJUEFkZHJlc3Mg
bV9pcHY0OworICAgIFJUQ05ldHdvcms6OklQQWRkcmVzcyBtX2lwdjY7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwppbmRleCA4ZDliNGE1Y2M1ZTYyZDY4YTAzYmI5NGNiNjE3MTA2YTIz
MGYxMWVmLi5jOThkNDFkYzMzMjcwMWYxZWNjYTBkNDBlYTVjYTcxNmVlYzQ0ZmFkIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTQgQEAKKzIwMjEtMDktMDEgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUu
Y29tPgorCisgICAgICAgIEltcGxlbWVudCBsaWJ3ZWJydGMgbmV0d29yayBtYW5hZ2VyIEdldE1k
bnNSZXNwb25kZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIyOTc1NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogd2VicnRjL2RhdGFjaGFubmVsL2ZpbHRlci1pY2UtY2FuZGlkYXRlLmh0bWw6CisgICAg
ICAgICogd2VicnRjL2ZpbHRlcmluZy1pY2UtY2FuZGlkYXRlLWFmdGVyLXJlbG9hZC5odG1sOgor
ICAgICAgICBVcGRhdGUgdGVzdHMgZ2l2ZW4gbUROUyBJQ0UgY2FuZGlkYXRlcyBhcmUgbm93IHNo
b3dpbmcgdXAgaW4gZGVzY3JpcHRpb25zLgorCiAyMDIxLTA4LTMxICBZb3Vlbm4gRmFibGV0ICA8
eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBNaWdyYXRlIHRvIGxhdGVzdCBsaWJ3ZWJydGMg
QWRkSWNlQ2FuZGlkYXRlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJydGMvZGF0YWNoYW5u
ZWwvZmlsdGVyLWljZS1jYW5kaWRhdGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYnJ0Yy9kYXRhY2hh
bm5lbC9maWx0ZXItaWNlLWNhbmRpZGF0ZS5odG1sCmluZGV4IGNjYzQ2OWExNzdlMDA5MmI2NzU3
YjViYzRkMTc3NTNhYjFmYjk1M2IuLjc0ZTc4ZjQ5MzI1ODU5ZmZiNTY4NDE2NTUxZDU0MWY4MDI3
NmIzNjcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3dlYnJ0Yy9kYXRhY2hhbm5lbC9maWx0ZXIt
aWNlLWNhbmRpZGF0ZS5odG1sCisrKyBiL0xheW91dFRlc3RzL3dlYnJ0Yy9kYXRhY2hhbm5lbC9m
aWx0ZXItaWNlLWNhbmRpZGF0ZS5odG1sCkBAIC04LDY4ICs4LDkxIEBACiAgIDwvaGVhZD4KICAg
PGJvZHk+CiAgICAgPHNjcmlwdD4KLXByb21pc2VfdGVzdCgodGVzdCkgPT4gewotICAgIHJldHVy
biBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7Ci0gICAgICAgIHNldFRpbWVvdXQo
KCkgPT4geyByZWplY3QoIlRlc3QgdGltZWQgb3V0Iik7IH0sIDUwMDApOwotCi0gICAgICAgIGlm
ICh3aW5kb3cuaW50ZXJuYWxzKQotICAgICAgICAgICAgaW50ZXJuYWxzLnNldElDRUNhbmRpZGF0
ZUZpbHRlcmluZyh0cnVlKTsKLQotICAgICAgICB2YXIgY291bnRlciA9IDA7Ci0gICAgICAgIHZh
ciBwYyA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOwotICAgICAgICBwYy5jcmVhdGVEYXRhQ2hh
bm5lbCgnc2VuZERhdGFDaGFubmVsJyk7Ci0gICAgICAgIHBjLm9uaWNlY2FuZGlkYXRlID0gKGV2
ZW50KSA9PiB7Ci0gICAgICAgICAgICBpZiAoZXZlbnQuY2FuZGlkYXRlKSB7Ci0gICAgICAgICAg
ICAgICAgY291bnRlcisrOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocGMubG9jYWxEZXNjcmlwdGlvbi5zZHAuaW5kZXhP
ZigiYT1jYW5kaWRhdGUiKSwgLTEpOwotICAgICAgICAgICAgYXNzZXJ0X3RydWUocGMubG9jYWxE
ZXNjcmlwdGlvbi5zZHAuaW5kZXhPZigiYz1JTiBJUDQgMC4wLjAuMFxyXG4iKSAhPSAtMSB8fCBw
Yy5sb2NhbERlc2NyaXB0aW9uLnNkcC5pbmRleE9mKCJjPUlOIElQNiA6OlxyXG4iKSAhPSAtMSk7
Ci0gICAgICAgICAgICBpZiAoY291bnRlciA9PT0gMCkgewotICAgICAgICAgICAgICAgIHBjLmNy
ZWF0ZU9mZmVyKCkudGhlbigob2ZmZXIpID0+IHsKLSAgICAgICAgICAgICAgICAgICAgYXNzZXJ0
X3RydWUob2ZmZXIuc2RwLmluZGV4T2YoImM9SU4gSVA0IDAuMC4wLjBcclxuIikgIT0gLTEgfHwg
cGMubG9jYWxEZXNjcmlwdGlvbi5zZHAuaW5kZXhPZigiYz1JTiBJUDYgOjpcclxuIikgIT0gLTEp
OwotICAgICAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKG9mZmVyLnNkcC5pbmRleE9mKCJh
PWNhbmRpZGF0ZSIpLCAtMSk7Ci0gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKLSAgICAg
ICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHJlamVj
dCgiTm8gY2FuZGlkYXRlIHNob3VsZCBiZSBmb3VuZCIpOwotICAgICAgICB9OwotICAgICAgICBw
Yy5jcmVhdGVPZmZlcigpLnRoZW4oKG9mZmVyKSA9PiB7Ci0gICAgICAgICAgICBhc3NlcnRfZXF1
YWxzKG9mZmVyLnNkcC5pbmRleE9mKCJhPWNhbmRpZGF0ZSIpLCAtMSk7Ci0gICAgICAgICAgICBw
Yy5zZXRMb2NhbERlc2NyaXB0aW9uKG9mZmVyKTsKLSAgICAgICAgfSk7CitmdW5jdGlvbiBlbnN1
cmVDYW5kaWRhdGVzQXJlTUROUyhzZHApCit7CisgICAgYXNzZXJ0X3RydWUoc2RwLmluZGV4T2Yo
ImM9SU4gSVA0IDAuMC4wLjBcclxuIikgIT0gLTEgfHwgc2RwLmluZGV4T2YoImM9SU4gSVA2IDo6
XHJcbiIpICE9IC0xKTsKKyAgICBjb25zdCBjYW5kaWRhdGVzID0gc2RwLnNwbGl0KCdcclxuJyku
ZmlsdGVyKGxpbmUgPT4geworICAgICAgICByZXR1cm4gbGluZS5pbmRleE9mKCdhPWNhbmRpZGF0
ZScpICE9PSAtMTsKKyAgICB9KTsKKyAgICBmb3IgKGNvbnN0IGNhbmRpZGF0ZSBvZiBjYW5kaWRh
dGVzKQorICAgICAgICBhc3NlcnRfbm90X2VxdWFscyhjYW5kaWRhdGUuaW5kZXhPZignLmxvY2Fs
JyksIC0xKTsKK30KKworZnVuY3Rpb24gZW5zdXJlQ2FuZGlkYXRlc0FyZU5vdE1ETlMoc2RwKQor
eworICAgIGNvbnN0IGNhbmRpZGF0ZXMgPSBzZHAuc3BsaXQoJ1xyXG4nKS5maWx0ZXIobGluZSA9
PiB7CisgICAgICAgIHJldHVybiBsaW5lLmluZGV4T2YoJ2E9Y2FuZGlkYXRlJykgIT09IC0xOwog
ICAgIH0pOworICAgIGZvciAoY29uc3QgY2FuZGlkYXRlIG9mIGNhbmRpZGF0ZXMpCisgICAgICAg
IGFzc2VydF9lcXVhbHMoY2FuZGlkYXRlLmluZGV4T2YoJy5sb2NhbCcpLCAtMSk7Cit9CisKK3By
b21pc2VfdGVzdChhc3luYyAodGVzdCkgPT4geworICAgIGxldCByZXNvbHZlLCByZWplY3Q7Cisg
ICAgY29uc3QgcHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXMsIHJlaikgPT4geyByZXNvbHZlID0g
cmVzOyByZWplY3QgPSByZWo7IH0pOworICAgIHNldFRpbWVvdXQoKCkgPT4geyByZWplY3QoIlRl
c3QgdGltZWQgb3V0Iik7IH0sIDUwMDApOworCisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisg
ICAgICAgIGludGVybmFscy5zZXRJQ0VDYW5kaWRhdGVGaWx0ZXJpbmcodHJ1ZSk7CisKKyAgICBs
ZXQgY291bnRlciA9IDA7CisgICAgbGV0IHBjID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7Cisg
ICAgcGMuY3JlYXRlRGF0YUNoYW5uZWwoJ3NlbmREYXRhQ2hhbm5lbCcpOworICAgIHBjLm9uaWNl
Y2FuZGlkYXRlID0gYXN5bmMgKGV2ZW50KSA9PiB7CisgICAgICAgIGlmIChldmVudC5jYW5kaWRh
dGUpIHsKKyAgICAgICAgICAgIGFzc2VydF9ub3RfZXF1YWxzKGV2ZW50LmNhbmRpZGF0ZS5jYW5k
aWRhdGUuaW5kZXhPZignLmxvY2FsJyksIC0xKTsKKyAgICAgICAgICAgIGNvdW50ZXIrKzsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBlbnN1cmVDYW5kaWRhdGVzQXJl
TUROUyhwYy5sb2NhbERlc2NyaXB0aW9uLnNkcCk7CisgICAgICAgIGlmIChjb3VudGVyID09PSAw
KSB7CisgICAgICAgICAgICBjb25zdCBvZmZlciA9IGF3YWl0IHBjLmNyZWF0ZU9mZmVyKCk7Cisg
ICAgICAgICAgICBhd2FpdCBwYy5zZXRMb2NhbERlc2NyaXB0aW9uKG9mZmVyKTsKKyAgICAgICAg
ICAgIGVuc3VyZUNhbmRpZGF0ZXNBcmVNRE5TKHBjLmxvY2FsRGVzY3JpcHRpb24uc2RwKTsKKyAg
ICAgICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAg
ICAgICByZXNvbHZlKCk7CisgICAgfTsKKyAgICBjb25zdCBvZmZlciA9IGF3YWl0IHBjLmNyZWF0
ZU9mZmVyKCk7CisgICAgYXNzZXJ0X2VxdWFscyhvZmZlci5zZHAuaW5kZXhPZigiYT1jYW5kaWRh
dGUiKSwgLTEpOworICAgIGF3YWl0IHBjLnNldExvY2FsRGVzY3JpcHRpb24ob2ZmZXIpOworCisg
ICAgcmV0dXJuIHByb21pc2U7CiB9LCAiR2F0aGVyaW5nIElDRSBjYW5kaWRhdGVzIGZyb20gYSBk
YXRhIGNoYW5uZWwgcGVlciBjb25uZWN0aW9uIHdpdGggSUNFIGNhbmRpZGF0ZSBmaWx0ZXJpbmcg
b24iKTsKIAotcHJvbWlzZV90ZXN0KCh0ZXN0KSA9PiB7Ci0gICAgcmV0dXJuIG5ldyBQcm9taXNl
KChyZXNvbHZlLCByZWplY3QpID0+IHsKLSAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7IHJlamVj
dCgiVGVzdCB0aW1lZCBvdXQiKTsgfSwgNTAwMCk7Citwcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3Qp
ID0+IHsKKyAgICBsZXQgcmVzb2x2ZSwgcmVqZWN0OworICAgIGNvbnN0IHByb21pc2UgPSBuZXcg
UHJvbWlzZSgocmVzLCByZWopID0+IHsgcmVzb2x2ZSA9IHJlczsgcmVqZWN0ID0gcmVqOyB9KTsK
KyAgICBzZXRUaW1lb3V0KCgpID0+IHsgcmVqZWN0KCJUZXN0IHRpbWVkIG91dCIpOyB9LCA1MDAw
KTsKIAotCWlmICh3aW5kb3cuaW50ZXJuYWxzKQotICAgICAgICAgICAgaW50ZXJuYWxzLnNldElD
RUNhbmRpZGF0ZUZpbHRlcmluZyhmYWxzZSk7CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisg
ICAgICAgIGludGVybmFscy5zZXRJQ0VDYW5kaWRhdGVGaWx0ZXJpbmcoZmFsc2UpOworIAorICAg
IGxldCBjb3VudGVyID0gMDsKKyAgICBsZXQgcGMgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsK
KyAgICBwYy5jcmVhdGVEYXRhQ2hhbm5lbCgnc2VuZERhdGFDaGFubmVsJyk7CiAKLSAgICAgICAg
dmFyIGNvdW50ZXIgPSAwOwotICAgICAgICB2YXIgcGMgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24o
KTsKLSAgICAgICAgcGMuY3JlYXRlRGF0YUNoYW5uZWwoJ3NlbmREYXRhQ2hhbm5lbCcpOwotICAg
ICAgICBwYy5vbmljZWNhbmRpZGF0ZSA9IChldmVudCkgPT4gewotICAgICAgICAgICAgaWYgKGV2
ZW50LmNhbmRpZGF0ZSkgewotICAgICAgICAgICAgICAgIGNvdW50ZXIrKzsKLSAgICAgICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBhc3NlcnRfdHJ1ZShwYy5s
b2NhbERlc2NyaXB0aW9uLnNkcC5pbmRleE9mKCJjPUlOIElQNCAwLjAuMC4wXHJcbiIpID09PSAt
MSAmJiBwYy5sb2NhbERlc2NyaXB0aW9uLnNkcC5pbmRleE9mKCJjPUlOIElQNiA6OlxyXG4iKSA9
PT0gLTEpOwotICAgICAgICAgICAgYXNzZXJ0X2ZhbHNlKHBjLmxvY2FsRGVzY3JpcHRpb24uc2Rw
LmluZGV4T2YoImE9Y2FuZGlkYXRlIikgPT09IC0xKTsKLSAgICAgICAgICAgIGlmIChjb3VudGVy
ICE9PSAwKSB7Ci0gICAgICAgICAgICAgICAgLy8gUmVkb2luZyBhbiBvZmZlciBub3cgdGhhdCB3
ZSBoYXZlIHNvbWUgY2FuZGlkYXRlcy4KLSAgICAgICAgICAgICAgICBwYy5jcmVhdGVPZmZlcigp
LnRoZW4oKG9mZmVyKSA9PiB7Ci0gICAgICAgICAgICAgICAgICAgIGFzc2VydF90cnVlKG9mZmVy
LnNkcC5pbmRleE9mKCJjPUlOIElQNCAwLjAuMC4wXHJcbiIpID09PSAtMSAmJiBwYy5sb2NhbERl
c2NyaXB0aW9uLnNkcC5pbmRleE9mKCJjPUlOIElQNiA6OlxyXG4iKSA9PT0gLTEpOwotICAgICAg
ICAgICAgICAgICAgICBhc3NlcnRfZmFsc2Uob2ZmZXIuc2RwLmluZGV4T2YoImE9Y2FuZGlkYXRl
IikgPT09IC0xKTsKLSAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOwotICAgICAgICAgICAg
ICAgIH0pOwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgcmVqZWN0KCJIb3N0
IGNhbmRpZGF0ZXMgc2hvdWxkIGJlIGZvdW5kIik7Ci0gICAgICAgIH07Ci0gICAgICAgIHBjLmNy
ZWF0ZU9mZmVyKCkudGhlbigob2ZmZXIpID0+IHsgcGMuc2V0TG9jYWxEZXNjcmlwdGlvbihvZmZl
cik7IH0pOwotICAgIH0pOworICAgIHBjLm9uaWNlY2FuZGlkYXRlID0gYXN5bmMgKGV2ZW50KSA9
PiB7CisgICAgICAgIGlmIChldmVudC5jYW5kaWRhdGUpIHsKKyAgICAgICAgICAgIGFzc2VydF9l
cXVhbHMoZXZlbnQuY2FuZGlkYXRlLmNhbmRpZGF0ZS5pbmRleE9mKCcubG9jYWwnKSwgLTEpOwor
ICAgICAgICAgICAgY291bnRlcisrOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9Cisg
ICAgICAgIGVuc3VyZUNhbmRpZGF0ZXNBcmVOb3RNRE5TKHBjLmxvY2FsRGVzY3JpcHRpb24uc2Rw
KTsKKyAgICAgICAgaWYgKGNvdW50ZXIgIT09IDApIHsKKyAgICAgICAgICAgIC8vIFJlZG9pbmcg
YW4gb2ZmZXIgbm93IHRoYXQgd2UgaGF2ZSBzb21lIGNhbmRpZGF0ZXMuCisgICAgICAgICAgICBj
b25zdCBvZmZlciA9IGF3YWl0IHBjLmNyZWF0ZU9mZmVyKCk7CisgICAgICAgICAgICBhd2FpdCBw
Yy5zZXRMb2NhbERlc2NyaXB0aW9uKG9mZmVyKTsKKyAgICAgICAgICAgIGVuc3VyZUNhbmRpZGF0
ZXNBcmVOb3RNRE5TKHBjLmxvY2FsRGVzY3JpcHRpb24uc2RwKTsKKyAgICAgICAgICAgIHJlc29s
dmUoKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICByZWplY3QoIkhvc3QgY2FuZGlkYXRl
cyBzaG91bGQgYmUgZm91bmQiKTsKKyAgICB9OworICAgIGNvbnN0IG9mZmVyID0gYXdhaXQgcGMu
Y3JlYXRlT2ZmZXIoKTsKKyAgICBhd2FpdCBwYy5zZXRMb2NhbERlc2NyaXB0aW9uKG9mZmVyKTsK
KworICAgIHJldHVybiBwcm9taXNlOwogfSwgIkdhdGhlcmluZyBJQ0UgY2FuZGlkYXRlcyBmcm9t
IGEgZGF0YSBjaGFubmVsIHBlZXIgY29ubmVjdGlvbiB3aXRoIElDRSBjYW5kaWRhdGUgZmlsdGVy
aW5nIG9mZiIpOwogCiBwcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYnJ0Yy9maWx0ZXJpbmctaWNlLWNhbmRpZGF0ZS1hZnRlci1yZWxvYWQu
aHRtbCBiL0xheW91dFRlc3RzL3dlYnJ0Yy9maWx0ZXJpbmctaWNlLWNhbmRpZGF0ZS1hZnRlci1y
ZWxvYWQuaHRtbAppbmRleCBjODc1NWY3MWYxOWYxYTMwM2MyM2IwYmFhZjE2NjNiZDY4YmQ1Yjlk
Li41MjVkZTg0ZjlkMzJiYjE0NjJkZTk3YzJmMjBlNTVmZmNjMTVlNGIyIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy93ZWJydGMvZmlsdGVyaW5nLWljZS1jYW5kaWRhdGUtYWZ0ZXItcmVsb2FkLmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvd2VicnRjL2ZpbHRlcmluZy1pY2UtY2FuZGlkYXRlLWFmdGVy
LXJlbG9hZC5odG1sCkBAIC03LDI0ICs3LDI4IEBAIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewog
ICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogfQogCi1mdW5jdGlvbiBpc0ZpbHRlcmlu
Z0VuYWJsZWQoKQorYXN5bmMgZnVuY3Rpb24gaXNGaWx0ZXJpbmdFbmFibGVkKCkKIHsKKyAgICBs
ZXQgcmVzb2x2ZSwgcmVqZWN0OworICAgIGNvbnN0IHByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVz
LCByZWopID0+IHsgcmVzb2x2ZSA9IHJlczsgcmVqZWN0ID0gcmVqOyB9KTsKKyAgICBzZXRUaW1l
b3V0KCgpID0+IHsgcmVqZWN0KCJUZXN0IHRpbWVkIG91dCIpOyB9LCA1MDAwKTsKKwogICAgIHZh
ciBwYyA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOwogICAgIHBjLmNyZWF0ZURhdGFDaGFubmVs
KCIiKTsKIAogICAgIHZhciBjYW5kaWRhdGVzID0gW107Ci0gICAgcmV0dXJuIG5ldyBQcm9taXNl
KChyZXNvbHZlLCByZWplY3QpID0+IHsKLSAgICAgICAgcGMub25pY2VjYW5kaWRhdGUgPSAoZXZl
bnQpID0+IHsKLSAgICAgICAgICAgIGlmIChldmVudC5jYW5kaWRhdGUgPT09IG51bGwpIHsKLSAg
ICAgICAgICAgICAgICByZXNvbHZlKCFjYW5kaWRhdGVzLmxlbmd0aCk7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICAgICAgfQorICAgIHBjLm9uaWNlY2FuZGlkYXRlID0gKGV2ZW50
KSA9PiB7CisgICAgICAgIGlmIChldmVudC5jYW5kaWRhdGUgPT09IG51bGwpIHsKKyAgICAgICAg
ICAgIHJlc29sdmUoIWNhbmRpZGF0ZXMubGVuZ3RoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorICAgICAgICBpZiAoZXZlbnQuY2FuZGlkYXRlLmNhbmRpZGF0ZS5pbmRleE9mKCcu
bG9jYWwnKSA9PT0gLTEpCiAgICAgICAgICAgICBjYW5kaWRhdGVzLnB1c2goZXZlbnQuY2FuZGlk
YXRlLmNhbmRpZGF0ZSk7Ci0gICAgICAgIH07Ci0gICAgICAgIHBjLmNyZWF0ZU9mZmVyKCkudGhl
bigob2ZmZXIpID0+IHsKLSAgICAgICAgICAgIHBjLnNldExvY2FsRGVzY3JpcHRpb24ob2ZmZXIp
OwotICAgICAgICB9KTsKLSAgICB9KTsKKyAgICB9OworCisgICAgY29uc3Qgb2ZmZXIgPSBhd2Fp
dCBwYy5jcmVhdGVPZmZlcigpOworICAgIGF3YWl0IHBjLnNldExvY2FsRGVzY3JpcHRpb24ob2Zm
ZXIpOworICAgIHJldHVybiBwcm9taXNlOwogfQogCiBmdW5jdGlvbiBlbmRUZXN0KG1lc3NhZ2Up
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>437024</attachid>
            <date>2021-09-01 06:28:45 -0700</date>
            <delta_ts>2021-09-01 06:47:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229757-20210901152843.patch</filename>
            <type>text/plain</type>
            <size>83679</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxNzkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWIwNDFiMmIwMGZmNmU4
Y2YwNTI3MjZmMWQ1NmUzMzQwNGM1NjAwNy4uNThjOWY3ZDhmZTMwZDZlNWYwZTY1OTkyNzFkNTgy
NDJhZmFlYmRlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDIxLTA5LTAxICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgbGlid2Vi
cnRjIG5ldHdvcmsgbWFuYWdlciBHZXRNZG5zUmVzcG9uZGVyCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjk3NTcKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgbGlid2VicnRjIG1ETlMgc3VwcG9ydCBp
bnN0ZWFkIG9mIGFwcGx5aW5nIGl0IHdpdGhpbiBQZWVyQ29ubmVjdGlvbkJhY2tlbmQuCisgICAg
ICAgIFRoaXMgYWxsb3dzIGEgYmV0dGVyIGludGVncmF0aW9uIGFuZCBpcyBtb3JlIGNvbnNpc3Rl
bnQgd2l0aCB0aGUgQVBJIGFuZCBvdGhlciBicm93c2Vycy4KKyAgICAgICAgRm9yIGluc3RhbmNl
IG1ETlMgY2FuZGlkYXRlcyBub3cgc2hvdyB1cCBpbiBsb2NhbCBkZXNjcmlwdGlvbnMuCisgICAg
ICAgIFdlIGludHJvZHVjZSBSVENOZXR3b3JrTWFuYWdlciB3aGljaCBpcyByZXNwb25zaWJsZSBm
b3IgV2ViUlRDIG5ldHdvcmsuCisgICAgICAgIFJUQ05ldHdvcmtNYW5hZ2VyIGlzIHJlc3BvbnNp
YmxlIG9mIGFsbCBwZWVyIGNvbm5lY3Rpb25zIG9mIGEgZG9jdW1lbnQuIEl0IGNhbiB0aHVzIHJl
dXNlIG1ETlMgbmFtZXMgZnJvbSBvbmUgY29ubmVjdGlvbiB0byBhbm90aGVyLgorICAgICAgICBX
aGVuIGRvY3VtZW50IGdvZXMgYXdheSwgUlRDTmV0d29ya01hbmFnZXIgbmVlZHMgdG8gdW5yZWdp
c3RlciBhbGwgbUROUyBuYW1lcy4KKyAgICAgICAgVXBkYXRlIGV4aXN0aW5nIFNEUCBhbmQgSUNF
IGNhbmRpZGF0ZSBmaWx0ZXJpbmcgY29kZSBieSBvbmx5IGtlZXBpbmcgZGVidWcgYXNzZXJ0IHRo
YXQgd2UgZG8gbm90IGxlYWsgcHJpdmF0ZSBJUCBhZGRyZXNzZXMgaW4gY2FzZSBJQ0UgZmlsdGVy
aW5nIGlzIG9uLgorICAgICAgICBDb3ZlcmVkIGJ5IHVwZGF0ZWQgYW5kIGV4aXN0aW5nIHRlc3Rz
LgorCisgICAgICAgICogSGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3Ry
ZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29u
bmVjdGlvbkJhY2tlbmQ6OmNyZWF0ZU9mZmVyU3VjY2VlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6
OlBlZXJDb25uZWN0aW9uQmFja2VuZDo6ZW5hYmxlSUNFQ2FuZGlkYXRlRmlsdGVyaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uQmFja2VuZDo6ZGlzYWJsZUlDRUNhbmRpZGF0
ZUZpbHRlcmluZyk6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OnZh
bGlkYXRlU0RQIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uQmFja2Vu
ZDo6bmV3SUNFQ2FuZGlkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uQmFj
a2VuZDo6ZG9uZUdhdGhlcmluZ0NhbmRpZGF0ZXMpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
dHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0NvbnRyb2xsZXI6
OmFkZCk6CisgICAgICAgIChXZWJDb3JlOjpSVENDb250cm9sbGVyOjpkaXNhYmxlSUNFQ2FuZGlk
YXRlRmlsdGVyaW5nRm9yQWxsT3JpZ2lucyk6CisgICAgICAgIChXZWJDb3JlOjpSVENDb250cm9s
bGVyOjpkaXNhYmxlSUNFQ2FuZGlkYXRlRmlsdGVyaW5nRm9yRG9jdW1lbnQpOgorICAgICAgICAo
V2ViQ29yZTo6UlRDQ29udHJvbGxlcjo6ZW5hYmxlSUNFQ2FuZGlkYXRlRmlsdGVyaW5nKToKKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ05ldHdvcmtNYW5hZ2VyLmg6IEFkZGVkLgor
ICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5k
cG9pbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6c2V0
Q29uZmlndXJhdGlvbik6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMv
TGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okxp
YldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6Y3VycmVudExvY2FsRGVzY3JpcHRpb24gY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpw
ZW5kaW5nTG9jYWxEZXNjcmlwdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJS
VENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmxvY2FsRGVzY3JpcHRpb24gY29uc3QpOgorICAgICAg
ICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBkb20vRG9j
dW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OndpbGxCZVJlbW92ZWRGcm9t
RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnN1c3BlbmQpOgorICAgICAgICAq
IGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJ0Y05ldHdvcmtN
YW5hZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzZXRSVENOZXR3b3JrTWFuYWdl
cik6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vTUROU1JlZ2lzdGVyRXJyb3IuaDog
QWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJU
Q1Byb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ1Byb3ZpZGVyOjpjcmVh
dGVQZWVyQ29ubmVjdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2Vi
cnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmg6CisKIDIwMjEtMDgtMzEgIFlvdWVubiBGYWJsZXQgIDx5
b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBzdXBwb3J0IGZvciBSVENTY3RwVHJhbnNw
b3J0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCmluZGV4IDYxZjdhZDFjYTg4N2Q1YmZkMjEyZjQzOTNkMGM1MmFlYWFjMGI1N2Iu
LmU0N2ZiZDg2N2JmZjk0YjI0NGM3YTU5MWU0YzEyZWViNmZjMTdhYzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNTYgQEAKKzIwMjEtMDktMDEgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29t
PgorCisgICAgICAgIEltcGxlbWVudCBsaWJ3ZWJydGMgbmV0d29yayBtYW5hZ2VyIEdldE1kbnNS
ZXNwb25kZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyOTc1NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEltcGxlbWVudCBSVENOZXR3b3JrTWFuYWdlciBBUEkgaW4gTGliV2ViUlRDTmV0d29ya01hbmFn
ZXIgdG8gaGFuZGxlIHBlci1kb2N1bWVudCBtRE5TIHJlZ2lzdHJhdGlvbnMuCisgICAgICAgIE1v
dmUgcGFydCBvZiBXZWJSVENNb25pdG9yIHRvIExpYldlYlJUQ05ldHdvcmtNYW5hZ2VyLgorICAg
ICAgICBMaWJXZWJSVENOZXR3b3JrTWFuYWdlciBpcyBhIFdlYlJUQ01vbml0b3Igb2JzZXJ2ZXIg
dG8gZ2V0IHRoZSBsaXN0IG9mIG5ldHdvcmtzLgorICAgICAgICBTaW5jZSBsaWJ3ZWJydGMgaXMg
bm93IGRvaW5nIHRoZSBtRE5TIHJlZ2lzdHJhdGlvbiwgd2UgbmVlZCB0byByZXR1cm4gYSBtRE5T
IG5hbWUgZXZlbiBpZiByZWdpc3RyYXRpb24gZmFpbGVkLgorICAgICAgICBXZSB1cGRhdGUgV2Vi
TUROU1JlZ2lzdGVyIGFuZCBOZXR3b3JrTUROU1JlZ2lzdGVyIGFjY29yZGluZ2x5LgorCisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtNRE5TUmVnaXN0ZXIuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpyZWdpc3Rlck1ETlNOYW1lQ2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrTUROU1JlZ2lzdGVyOjpyZWdpc3Rlck1ETlNOYW1lKToKKyAgICAgICAgKiBTb3Vy
Y2VzLnR4dDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ05ldHdvcmtNYW5hZ2Vy
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ05ldHdvcmtNYW5hZ2VyOjpn
ZXRPckNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ05ldHdvcmtNYW5hZ2VyOjpM
aWJXZWJSVENOZXR3b3JrTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ05ldHdv
cmtNYW5hZ2VyOjp+TGliV2ViUlRDTmV0d29ya01hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpM
aWJXZWJSVENOZXR3b3JrTWFuYWdlcjo6dW5yZWdpc3Rlck1ETlNOYW1lcyk6CisgICAgICAgIChX
ZWJLaXQ6OkxpYldlYlJUQ05ldHdvcmtNYW5hZ2VyOjpTdGFydFVwZGF0aW5nKToKKyAgICAgICAg
KFdlYktpdDo6TGliV2ViUlRDTmV0d29ya01hbmFnZXI6OlN0b3BVcGRhdGluZyk6CisgICAgICAg
IChXZWJLaXQ6OkxpYldlYlJUQ05ldHdvcmtNYW5hZ2VyOjpHZXRNZG5zUmVzcG9uZGVyIGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDTmV0d29ya01hbmFnZXI6Om5ldHdvcmtzQ2hh
bmdlZCk6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ05ldHdvcmtNYW5hZ2VyOjpuZXR3b3Jr
UHJvY2Vzc0NyYXNoZWQpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENOZXR3b3JrTWFuYWdl
cjo6Q3JlYXRlTmFtZUZvckFkZHJlc3MpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENOZXR3
b3JrTWFuYWdlcjo6UmVtb3ZlTmFtZUZvckFkZHJlc3MpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
TmV0d29yay93ZWJydGMvTGliV2ViUlRDTmV0d29ya01hbmFnZXIuaDogQWRkZWQuCisgICAgICAg
ICogV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkxpYldlYlJUQ1Byb3ZpZGVyOjpjcmVhdGVQZWVyQ29ubmVjdGlvbik6Cisg
ICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ1Byb3ZpZGVyOjpkaXNhYmxlTm9uTG9jYWxob3N0Q29u
bmVjdGlvbnMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRD
UHJvdmlkZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1dlYk1ETlNS
ZWdpc3Rlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYk1ETlNSZWdpc3Rlcjo6ZmluaXNoZWRS
ZWdpc3RlcmluZ01ETlNOYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViTUROU1JlZ2lzdGVyOjpy
ZWdpc3Rlck1ETlNOYW1lKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1dl
Yk1ETlNSZWdpc3Rlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvV2Vi
TUROU1JlZ2lzdGVyLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay93
ZWJydGMvV2ViUlRDTW9uaXRvci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJUQ01vbml0b3I6
OnN0YXJ0VXBkYXRpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJSVENNb25pdG9yOjpzdG9wVXBk
YXRpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJSVENNb25pdG9yOjpuZXR3b3Jrc0NoYW5nZWQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJSVENNb25pdG9yOjpuZXR3b3JrUHJvY2Vzc0NyYXNoZWQp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvV2ViUlRDTW9uaXRvci5oOgor
ICAgICAgICAoV2ViS2l0OjpXZWJSVENNb25pdG9yOjphZGRPYnNlcnZlcik6CisgICAgICAgIChX
ZWJLaXQ6OldlYlJUQ01vbml0b3I6OnJlbW92ZU9ic2VydmVyKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUlRDTW9uaXRvcjo6ZGlkUmVjZWl2ZU5ldHdvcmtMaXN0IGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViUlRDTW9uaXRvcjo6bmV0d29ya0xpc3QgY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpXZWJSVENNb25pdG9yOjppcHY0IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUlRDTW9u
aXRvcjo6aXB2NiBjb25zdCk6CisKIDIwMjEtMDgtMjYgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBw
bGUuY29tPgogCiAgICAgICAgIEN1dCBkb3duIG9uIHVzZSBvZiBDRkdldFR5cGVJRCwgdXNpbmcg
ZHluYW1pY19jZl9jYXN0IGluc3RlYWQ7IHJlbGF0ZWQgc3RyZWFtbGluaW5nCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5j
bWFrZQppbmRleCA3NmNlMGM2NjFmZWU4MzBkMTc2ZTM2MWY1Nzk4NzM1YzdhZTFlMGNlLi5jZWI5
M2ZlOGQwMTgwYzdjZWM2ZjIxMTc3YzgwMGE3MTkxNGMyMDQwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UK
QEAgLTExNSwxMSArMTE1LDE0IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURF
UlMKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmgKICAgICBNb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5oCiAgICAgTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZVNvdXJjZS5oCisgICAgTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENOZXR3b3JrTWFuYWdlci5oCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9TVFVO
TWVzc2FnZVBhcnNpbmcuaAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhQ2xpZW50
LmgKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYUNvbnRyb2xsZXIuaAogICAgIE1v
ZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5oCiAKKyAgICBNb2R1bGVzL21lZGlh
c3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENVdGlscy5oCisKICAgICBNb2R1bGVzL21vZGVsLWVs
ZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oCiAKICAgICBNb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90
aWZpY2F0aW9uLmgKQEAgLTE0MTIsNiArMTQxNSw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJB
TUVXT1JLX0hFQURFUlMKIAogICAgIHBsYXRmb3JtL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2Uu
aAogICAgIHBsYXRmb3JtL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmgKKyAgICBw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9NRE5TUmVnaXN0ZXJFcnJvci5oCiAgICAgcGxhdGZvcm0vbWVk
aWFzdHJlYW0vTWVkaWFDb25zdHJhaW50cy5oCiAgICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1Qcml2YXRlLmgKICAgICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVJl
cXVlc3QuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Q
ZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwCmluZGV4IDc5OWUxZDNkYWNjNDgxMDcyYzFi
NTdiYWQxZTk1ZTA2ZDBhMDRjODEuLmIzYjkzYmNjMzZkZjdkZDRiNTVjNWQ0YzE4MWI0MTUxODQ1
MThhMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVl
ckNvbm5lY3Rpb25CYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAKQEAgLTEwMiw3ICsxMDIsOCBAQCB2b2lk
IFBlZXJDb25uZWN0aW9uQmFja2VuZDo6Y3JlYXRlT2ZmZXJTdWNjZWVkZWQoU3RyaW5nJiYgc2Rw
KQogICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgIkNyZWF0ZSBvZmZlciBzdWNjZWVkZWQ6
XG4iLCBzZHApOwogCiAgICAgQVNTRVJUKG1fb2ZmZXJBbnN3ZXJQcm9taXNlKTsKLSAgICBtX3Bl
ZXJDb25uZWN0aW9uLmRvVGFzayhbdGhpcywgcHJvbWlzZSA9IFdURk1vdmUobV9vZmZlckFuc3dl
clByb21pc2UpLCBzZHAgPSBmaWx0ZXJTRFAoV1RGTW92ZShzZHApKV0oKSBtdXRhYmxlIHsKKyAg
ICB2YWxpZGF0ZVNEUChzZHApOworICAgIG1fcGVlckNvbm5lY3Rpb24uZG9UYXNrKFt0aGlzLCBw
cm9taXNlID0gV1RGTW92ZShtX29mZmVyQW5zd2VyUHJvbWlzZSksIHNkcCA9IFdURk1vdmUoc2Rw
KV0oKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKG1fcGVlckNvbm5lY3Rpb24uaXNDbG9zZWQoKSkK
ICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMzc2LDgxICszNzcsMTkgQEAgdm9pZCBQZWVyQ29u
bmVjdGlvbkJhY2tlbmQ6OmVuYWJsZUlDRUNhbmRpZGF0ZUZpbHRlcmluZygpCiB2b2lkIFBlZXJD
b25uZWN0aW9uQmFja2VuZDo6ZGlzYWJsZUlDRUNhbmRpZGF0ZUZpbHRlcmluZygpCiB7CiAgICAg
bV9zaG91bGRGaWx0ZXJJQ0VDYW5kaWRhdGVzID0gZmFsc2U7Ci0gICAgZm9yIChhdXRvJiBwZW5k
aW5nSUNFQ2FuZGlkYXRlIDogbV9wZW5kaW5nSUNFQ2FuZGlkYXRlcykKLSAgICAgICAgZmlyZUlD
RUNhbmRpZGF0ZUV2ZW50KFJUQ0ljZUNhbmRpZGF0ZTo6Y3JlYXRlKFdURk1vdmUocGVuZGluZ0lD
RUNhbmRpZGF0ZS5zZHApLCBXVEZNb3ZlKHBlbmRpbmdJQ0VDYW5kaWRhdGUubWlkKSwgcGVuZGlu
Z0lDRUNhbmRpZGF0ZS5zZHBNTGluZUluZGV4KSwgV1RGTW92ZShwZW5kaW5nSUNFQ2FuZGlkYXRl
LnNlcnZlclVSTCkpOwotICAgIG1fcGVuZGluZ0lDRUNhbmRpZGF0ZXMuY2xlYXIoKTsKLX0KLQot
c3RhdGljIFN0cmluZyBmaWx0ZXJJQ0VDYW5kaWRhdGUoU3RyaW5nJiYgc2RwKQotewotICAgIEFT
U0VSVCghc2RwLmNvbnRhaW5zKCIgaG9zdCAiKSk7Ci0KLSAgICBpZiAoIXNkcC5jb250YWlucygi
IHJhZGRyICIpKQotICAgICAgICByZXR1cm4gV1RGTW92ZShzZHApOwotCi0gICAgYm9vbCBza2lw
TmV4dEl0ZW0gPSBmYWxzZTsKLSAgICBib29sIGlzRmlyc3QgPSB0cnVlOwotICAgIFN0cmluZ0J1
aWxkZXIgZmlsdGVyZWRTRFA7Ci0gICAgc2RwLnNwbGl0KCcgJywgWyZdKFN0cmluZ1ZpZXcgaXRl
bSkgewotICAgICAgICBpZiAoc2tpcE5leHRJdGVtKSB7Ci0gICAgICAgICAgICBza2lwTmV4dEl0
ZW0gPSBmYWxzZTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBpZiAo
aXRlbSA9PSAicmFkZHIiKSB7Ci0gICAgICAgICAgICBmaWx0ZXJlZFNEUC5hcHBlbmQoIiByYWRk
ciAwLjAuMC4wIik7Ci0gICAgICAgICAgICBza2lwTmV4dEl0ZW0gPSB0cnVlOwotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGlmIChpdGVtID09ICJycG9ydCIpIHsKLSAg
ICAgICAgICAgIGZpbHRlcmVkU0RQLmFwcGVuZCgiIHJwb3J0IDAiKTsKLSAgICAgICAgICAgIHNr
aXBOZXh0SXRlbSA9IHRydWU7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAg
ICAgaWYgKGlzRmlyc3QpCi0gICAgICAgICAgICBpc0ZpcnN0ID0gZmFsc2U7Ci0gICAgICAgIGVs
c2UKLSAgICAgICAgICAgIGZpbHRlcmVkU0RQLmFwcGVuZCgnICcpOwotICAgICAgICBmaWx0ZXJl
ZFNEUC5hcHBlbmQoaXRlbSk7Ci0gICAgfSk7Ci0gICAgcmV0dXJuIGZpbHRlcmVkU0RQLnRvU3Ry
aW5nKCk7CiB9CiAKLVN0cmluZyBQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmZpbHRlclNEUChTdHJp
bmcmJiBzZHApIGNvbnN0Cit2b2lkIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6dmFsaWRhdGVTRFAo
Y29uc3QgU3RyaW5nJiBzZHApIGNvbnN0CiB7CisjaWZuZGVmIE5ERUJVRwogICAgIGlmICghbV9z
aG91bGRGaWx0ZXJJQ0VDYW5kaWRhdGVzKQotICAgICAgICByZXR1cm4gV1RGTW92ZShzZHApOwot
Ci0gICAgU3RyaW5nQnVpbGRlciBmaWx0ZXJlZFNEUDsKLSAgICBzZHAuc3BsaXQoJ1xuJywgW3Ro
aXMsICZmaWx0ZXJlZFNEUF0oU3RyaW5nVmlldyBsaW5lKSB7Ci0gICAgICAgIGlmIChsaW5lLnN0
YXJ0c1dpdGgoImM9SU4gSVA0IikpIHsKLSAgICAgICAgICAgIGZpbHRlcmVkU0RQLmFwcGVuZCgi
Yz1JTiBJUDQgMC4wLjAuMFxyXG4iKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQot
ICAgICAgICBpZiAobGluZS5zdGFydHNXaXRoKCJjPUlOIElQNiIpKSB7Ci0gICAgICAgICAgICBm
aWx0ZXJlZFNEUC5hcHBlbmQoImM9SU4gSVA2IDo6XHJcbiIpOwotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICB9Ci0gICAgICAgIGlmICghbGluZS5zdGFydHNXaXRoKCJhPWNhbmRpZGF0ZSIp
KSB7Ci0gICAgICAgICAgICBmaWx0ZXJlZFNEUC5hcHBlbmQobGluZSk7Ci0gICAgICAgICAgICBm
aWx0ZXJlZFNEUC5hcHBlbmQoJ1xuJyk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0K
LSAgICAgICAgaWYgKGxpbmUuZmluZCgiIGhvc3QgIiwgMTEpID09IG5vdEZvdW5kKSB7Ci0gICAg
ICAgICAgICBmaWx0ZXJlZFNEUC5hcHBlbmQoZmlsdGVySUNFQ2FuZGlkYXRlKGxpbmUudG9TdHJp
bmcoKSkpOwotICAgICAgICAgICAgZmlsdGVyZWRTRFAuYXBwZW5kKCdcbicpOwotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgYXV0byBpcEFkZHJlc3MgPSBleHRyYWN0
SVBBZGRyZXNzKGxpbmUpOwotICAgICAgICBhdXRvIG1kbnNOYW1lID0gbV9pcEFkZHJlc3NUb01E
TlNOYW1lTWFwLmdldChpcEFkZHJlc3MpOwotICAgICAgICBpZiAobWRuc05hbWUuaXNFbXB0eSgp
KQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBhdXRvIHNkcCA9IGxpbmUudG9TdHJpbmco
KTsKLSAgICAgICAgc2RwLnJlcGxhY2UoaXBBZGRyZXNzLCBtZG5zTmFtZSk7Ci0gICAgICAgIGZp
bHRlcmVkU0RQLmFwcGVuZChzZHApOwotICAgICAgICBmaWx0ZXJlZFNEUC5hcHBlbmQoJ1xuJyk7
CisgICAgICAgIHJldHVybjsKKyAgICBzZHAuc3BsaXQoJ1xuJywgW10oYXV0byBsaW5lKSB7Cisg
ICAgICAgIEFTU0VSVCghbGluZS5zdGFydHNXaXRoKCJhPWNhbmRpZGF0ZSIpIHx8IGxpbmUuY29u
dGFpbnMoIi5sb2NhbCIpKTsKICAgICB9KTsKLSAgICByZXR1cm4gZmlsdGVyZWRTRFAudG9TdHJp
bmcoKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHNkcCk7CisjZW5kaWYKIH0KIAogdm9pZCBQ
ZWVyQ29ubmVjdGlvbkJhY2tlbmQ6Om5ld0lDRUNhbmRpZGF0ZShTdHJpbmcmJiBzZHAsIFN0cmlu
ZyYmIG1pZCwgdW5zaWduZWQgc2hvcnQgc2RwTUxpbmVJbmRleCwgU3RyaW5nJiYgc2VydmVyVVJM
KQpAQCAtNDYwLDIyICszOTksOCBAQCB2b2lkIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6bmV3SUNF
Q2FuZGlkYXRlKFN0cmluZyYmIHNkcCwgU3RyaW5nJiYgbWlkLCB1bnNpZ25lZAogICAgICAgICBB
TFdBWVNfTE9HKGxvZ1NpdGVJZGVudGlmaWVyLCAiR2F0aGVyZWQgaWNlIGNhbmRpZGF0ZToiLCBz
ZHApOwogICAgICAgICBtX2ZpbmlzaGVkR2F0aGVyaW5nQ2FuZGlkYXRlcyA9IGZhbHNlOwogCi0g
ICAgICAgIGlmICghbV9zaG91bGRGaWx0ZXJJQ0VDYW5kaWRhdGVzKSB7Ci0gICAgICAgICAgICBm
aXJlSUNFQ2FuZGlkYXRlRXZlbnQoUlRDSWNlQ2FuZGlkYXRlOjpjcmVhdGUoV1RGTW92ZShzZHAp
LCBXVEZNb3ZlKG1pZCksIHNkcE1MaW5lSW5kZXgpLCBXVEZNb3ZlKHNlcnZlclVSTCkpOwotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGlmIChzZHAuZmluZCgiIGhvc3Qg
IiwgMCkgIT0gbm90Rm91bmQpIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBtaWdodCBuZWVk
IHRvIGNsZWFyIGFsbCBwZW5kaW5nIGNhbmRpZGF0ZXMgd2hlbiBzZXR0aW5nIGFnYWluIGxvY2Fs
IGRlc2NyaXB0aW9uLgotICAgICAgICAgICAgbV9wZW5kaW5nSUNFQ2FuZGlkYXRlcy5hcHBlbmQo
UGVuZGluZ0lDRUNhbmRpZGF0ZSB7IFN0cmluZyB7IHNkcCB9LCBXVEZNb3ZlKG1pZCksIHNkcE1M
aW5lSW5kZXgsIFdURk1vdmUoc2VydmVyVVJMKSB9KTsKLSAgICAgICAgICAgIGlmIChSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYlJUQ01ETlNJQ0VDYW5kaWRhdGVz
RW5hYmxlZCgpKSB7Ci0gICAgICAgICAgICAgICAgYXV0byBpcEFkZHJlc3MgPSBleHRyYWN0SVBB
ZGRyZXNzKHNkcCk7Ci0gICAgICAgICAgICAgICAgLy8gV2UgcmVzdHJpY3QgdG8gSVB2NCBjYW5k
aWRhdGVzIGZvciBub3cuCi0gICAgICAgICAgICAgICAgaWYgKGlwQWRkcmVzcy5jb250YWlucygn
LicpKQotICAgICAgICAgICAgICAgICAgICByZWdpc3Rlck1ETlNOYW1lKGlwQWRkcmVzcyk7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgZmly
ZUlDRUNhbmRpZGF0ZUV2ZW50KFJUQ0ljZUNhbmRpZGF0ZTo6Y3JlYXRlKGZpbHRlcklDRUNhbmRp
ZGF0ZShXVEZNb3ZlKHNkcCkpLCBXVEZNb3ZlKG1pZCksIHNkcE1MaW5lSW5kZXgpLCBXVEZNb3Zl
KHNlcnZlclVSTCkpOworICAgICAgICBBU1NFUlQoIW1fc2hvdWxkRmlsdGVySUNFQ2FuZGlkYXRl
cyB8fCBzZHAuY29udGFpbnMoIi5sb2NhbCIpKTsKKyAgICAgICAgZmlyZUlDRUNhbmRpZGF0ZUV2
ZW50KFJUQ0ljZUNhbmRpZGF0ZTo6Y3JlYXRlKFdURk1vdmUoc2RwKSwgV1RGTW92ZShtaWQpLCBz
ZHBNTGluZUluZGV4KSwgV1RGTW92ZShzZXJ2ZXJVUkwpKTsKICAgICB9KTsKIH0KIApAQCAtNDg1
LDEyICs0MTAsOCBAQCB2b2lkIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6ZG9uZUdhdGhlcmluZ0Nh
bmRpZGF0ZXMoKQogICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgIkZpbmlzaGVkIGljZSBj
YW5kaWRhdGUgZ2F0aGVyaW5nIik7CiAgICAgbV9maW5pc2hlZEdhdGhlcmluZ0NhbmRpZGF0ZXMg
PSB0cnVlOwogCi0gICAgaWYgKG1fd2FpdGluZ0Zvck1ETlNSZWdpc3RyYXRpb24pCi0gICAgICAg
IHJldHVybjsKLQogICAgIG1fcGVlckNvbm5lY3Rpb24uZGlzcGF0Y2hFdmVudFdoZW5GZWFzaWJs
ZShSVENQZWVyQ29ubmVjdGlvbkljZUV2ZW50OjpjcmVhdGUoRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8s
IEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vLCBudWxscHRyLCB7IH0pKTsKICAgICBtX3BlZXJDb25u
ZWN0aW9uLnVwZGF0ZUljZUdhdGhlcmluZ1N0YXRlKFJUQ0ljZUdhdGhlcmluZ1N0YXRlOjpDb21w
bGV0ZSk7Ci0gICAgbV9wZW5kaW5nSUNFQ2FuZGlkYXRlcy5jbGVhcigpOwogfQogCiB2b2lkIFBl
ZXJDb25uZWN0aW9uQmFja2VuZDo6ZW5kT2ZJY2VDYW5kaWRhdGVzKERPTVByb21pc2VEZWZlcnJl
ZDx2b2lkPiYmIHByb21pc2UpCkBAIC00OTgsNDUgKzQxOSw2IEBAIHZvaWQgUGVlckNvbm5lY3Rp
b25CYWNrZW5kOjplbmRPZkljZUNhbmRpZGF0ZXMoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYg
cHJvbWlzCiAgICAgcHJvbWlzZS5yZXNvbHZlKCk7CiB9CiAKLXZvaWQgUGVlckNvbm5lY3Rpb25C
YWNrZW5kOjpyZWdpc3Rlck1ETlNOYW1lKGNvbnN0IFN0cmluZyYgaXBBZGRyZXNzKQotewotICAg
ICsrbV93YWl0aW5nRm9yTUROU1JlZ2lzdHJhdGlvbjsKLSAgICBhdXRvJiBkb2N1bWVudCA9IGRv
d25jYXN0PERvY3VtZW50PigqbV9wZWVyQ29ubmVjdGlvbi5zY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkpOwotICAgIGF1dG8mIHByb3ZpZGVyID0gZG9jdW1lbnQucGFnZSgpLT5saWJXZWJSVENQcm92
aWRlcigpOwotICAgIHByb3ZpZGVyLnJlZ2lzdGVyTUROU05hbWUoZG9jdW1lbnQuaWRlbnRpZmll
cigpLCBpcEFkZHJlc3MsIFtwZWVyQ29ubmVjdGlvbiA9IG1ha2VSZWYobV9wZWVyQ29ubmVjdGlv
biksIHRoaXMsIGlwQWRkcmVzc10gKExpYldlYlJUQ1Byb3ZpZGVyOjpNRE5TTmFtZU9yRXJyb3Im
JiByZXN1bHQpIHsKLSAgICAgICAgaWYgKHBlZXJDb25uZWN0aW9uLT5pc1N0b3BwZWQoKSkKLSAg
ICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAtLW1fd2FpdGluZ0Zvck1ETlNSZWdpc3RyYXRp
b247Ci0gICAgICAgIGlmICghcmVzdWx0Lmhhc192YWx1ZSgpKSB7Ci0gICAgICAgICAgICBtX3Bl
ZXJDb25uZWN0aW9uLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+YWRkQ29uc29sZU1lc3NhZ2Uo
TWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgbWFrZVN0cmluZygiTURO
UyByZWdpc3RyYXRpb24gb2YgYSBob3N0IGNhbmRpZGF0ZSBmYWlsZWQgd2l0aCBlcnJvciAiLCAo
dW5zaWduZWQpcmVzdWx0LmVycm9yKCkpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
fQotCi0gICAgICAgIHRoaXMtPmZpbmlzaGVkUmVnaXN0ZXJpbmdNRE5TTmFtZShpcEFkZHJlc3Ms
IHJlc3VsdC52YWx1ZSgpKTsKLSAgICB9KTsKLX0KLQotdm9pZCBQZWVyQ29ubmVjdGlvbkJhY2tl
bmQ6OmZpbmlzaGVkUmVnaXN0ZXJpbmdNRE5TTmFtZShjb25zdCBTdHJpbmcmIGlwQWRkcmVzcywg
Y29uc3QgU3RyaW5nJiBuYW1lKQotewotICAgIG1faXBBZGRyZXNzVG9NRE5TTmFtZU1hcC5hZGQo
aXBBZGRyZXNzLCBuYW1lKTsKLSAgICBWZWN0b3I8UGVuZGluZ0lDRUNhbmRpZGF0ZSo+IGNhbmRp
ZGF0ZXM7Ci0gICAgZm9yIChhdXRvJiBjYW5kaWRhdGUgOiBtX3BlbmRpbmdJQ0VDYW5kaWRhdGVz
KSB7Ci0gICAgICAgIGlmIChjYW5kaWRhdGUuc2RwLmZpbmQoaXBBZGRyZXNzKSAhPSBub3RGb3Vu
ZCkgewotICAgICAgICAgICAgYXV0byBzZHAgPSBjYW5kaWRhdGUuc2RwOwotICAgICAgICAgICAg
c2RwLnJlcGxhY2UoaXBBZGRyZXNzLCBuYW1lKTsKLSAgICAgICAgICAgIGZpcmVJQ0VDYW5kaWRh
dGVFdmVudChSVENJY2VDYW5kaWRhdGU6OmNyZWF0ZShXVEZNb3ZlKHNkcCksIFdURk1vdmUoY2Fu
ZGlkYXRlLm1pZCksIGNhbmRpZGF0ZS5zZHBNTGluZUluZGV4KSwgV1RGTW92ZShjYW5kaWRhdGUu
c2VydmVyVVJMKSk7Ci0gICAgICAgICAgICBjYW5kaWRhdGVzLmFwcGVuZCgmY2FuZGlkYXRlKTsK
LSAgICAgICAgfQotICAgIH0KLSAgICBtX3BlbmRpbmdJQ0VDYW5kaWRhdGVzLnJlbW92ZUFsbE1h
dGNoaW5nKFsmXSAoY29uc3QgYXV0byYgY2FuZGlkYXRlKSB7Ci0gICAgICAgIHJldHVybiBjYW5k
aWRhdGVzLmNvbnRhaW5zKCZjYW5kaWRhdGUpOwotICAgIH0pOwotCi0gICAgaWYgKCFtX3dhaXRp
bmdGb3JNRE5TUmVnaXN0cmF0aW9uICYmIG1fZmluaXNoZWRHYXRoZXJpbmdDYW5kaWRhdGVzKQot
ICAgICAgICBkb25lR2F0aGVyaW5nQ2FuZGlkYXRlcygpOwotfQotCiB2b2lkIFBlZXJDb25uZWN0
aW9uQmFja2VuZDo6dXBkYXRlU2lnbmFsaW5nU3RhdGUoUlRDU2lnbmFsaW5nU3RhdGUgbmV3U2ln
bmFsaW5nU3RhdGUpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5k
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFj
a2VuZC5oCmluZGV4IDFjMjU1NjYyNWVlYmMyZjc3NjIzOGE4MzVkMzc0OGIwMTZhM2Y1NjQuLjZm
M2ZiNDJhODBlMmVjNjJlY2E0MTc0NTBlZDViZjU5MmRkNmFhNjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tl
bmQuaApAQCAtMjA5LDcgKzIwOSw3IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGFkZEljZUNhbmRp
ZGF0ZVN1Y2NlZWRlZCgpOwogICAgIHZvaWQgYWRkSWNlQ2FuZGlkYXRlRmFpbGVkKEV4Y2VwdGlv
biYmKTsKIAotICAgIFN0cmluZyBmaWx0ZXJTRFAoU3RyaW5nJiYpIGNvbnN0OworICAgIHZvaWQg
dmFsaWRhdGVTRFAoY29uc3QgU3RyaW5nJikgY29uc3Q7CiAKICAgICBzdHJ1Y3QgUGVuZGluZ1Ry
YWNrRXZlbnQgewogICAgICAgICBSZWY8UlRDUnRwUmVjZWl2ZXI+IHJlY2VpdmVyOwpAQCAtMjI4
LDggKzIyOCw2IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGVuZE9mSWNlQ2FuZGlkYXRl
cyhET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJik7CiAgICAgdmlydHVhbCB2b2lkIGRvU3RvcCgp
ID0gMDsKIAotICAgIHZvaWQgcmVnaXN0ZXJNRE5TTmFtZShjb25zdCBTdHJpbmcmIGlwQWRkcmVz
cyk7Ci0KIHByb3RlY3RlZDoKICAgICBSVENQZWVyQ29ubmVjdGlvbiYgbV9wZWVyQ29ubmVjdGlv
bjsKIApAQCAtMjM3LDI2ICsyMzUsMTYgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
UGVlckNvbm5lY3Rpb246OlNlc3Npb25EZXNjcmlwdGlvblByb21pc2U+IG1fb2ZmZXJBbnN3ZXJQ
cm9taXNlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4+IG1f
c2V0RGVzY3JpcHRpb25Qcm9taXNlOwogCi0gICAgYm9vbCBtX3Nob3VsZEZpbHRlcklDRUNhbmRp
ZGF0ZXMgeyB0cnVlIH07Ci0gICAgc3RydWN0IFBlbmRpbmdJQ0VDYW5kaWRhdGUgewotICAgICAg
ICAvLyBGaWVsZHMgZGVzY3JpYmVkIGluIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJydGMvI2lk
bC1kZWYtcnRjaWNlY2FuZGlkYXRlaW5pdC4KLSAgICAgICAgU3RyaW5nIHNkcDsKLSAgICAgICAg
U3RyaW5nIG1pZDsKLSAgICAgICAgdW5zaWduZWQgc2hvcnQgc2RwTUxpbmVJbmRleDsKLSAgICAg
ICAgU3RyaW5nIHNlcnZlclVSTDsKLSAgICB9OwotICAgIFZlY3RvcjxQZW5kaW5nSUNFQ2FuZGlk
YXRlPiBtX3BlbmRpbmdJQ0VDYW5kaWRhdGVzOworICAgIGJvb2wgbV9zaG91bGRGaWx0ZXJJQ0VD
YW5kaWRhdGVzIHsgZmFsc2UgfTsKIAogICAgIFZlY3RvcjxQZW5kaW5nVHJhY2tFdmVudD4gbV9w
ZW5kaW5nVHJhY2tFdmVudHM7CiAKLSAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBtX2lwQWRk
cmVzc1RvTUROU05hbWVNYXA7CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgUmVmPGNv
bnN0IExvZ2dlcj4gbV9sb2dnZXI7CiAgICAgY29uc3Qgdm9pZCogbV9sb2dJZGVudGlmaWVyOwog
I2VuZGlmCiAgICAgYm9vbCBtX25lZ290aWF0aW9uTmVlZGVkIHsgZmFsc2UgfTsKICAgICBib29s
IG1fZmluaXNoZWRHYXRoZXJpbmdDYW5kaWRhdGVzIHsgZmFsc2UgfTsKLSAgICB1aW50NjRfdCBt
X3dhaXRpbmdGb3JNRE5TUmVnaXN0cmF0aW9uIHsgMCB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
Q29udHJvbGxlci5jcHAKaW5kZXggNzBkNDBjNmJkNWIzMjYyZjJjZmU2MTVmYmMyYjQ1YzYyOWNj
ZjQzZS4uY2YzNDVhNDYyZmNkYjIxMTlmN2ZiZGY1ZWJkZGYwMTQ1ZWJhNzZiMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENDb250cm9sbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0NvbnRyb2xsZXIuY3Bw
CkBAIC03Myw2ICs3MywxMCBAQCBib29sIFJUQ0NvbnRyb2xsZXI6OnNob3VsZERpc2FibGVJQ0VD
YW5kaWRhdGVGaWx0ZXJpbmcoRG9jdW1lbnQmIGRvY3VtZW50KQogCiB2b2lkIFJUQ0NvbnRyb2xs
ZXI6OmFkZChSVENQZWVyQ29ubmVjdGlvbiYgY29ubmVjdGlvbikKIHsKKyAgICBhdXRvJiBkb2N1
bWVudCA9IGRvd25jYXN0PERvY3VtZW50PigqY29ubmVjdGlvbi5zY3JpcHRFeGVjdXRpb25Db250
ZXh0KCkpOworICAgIGlmIChhdXRvKiBuZXR3b3JrTWFuYWdlciA9IGRvY3VtZW50LnJ0Y05ldHdv
cmtNYW5hZ2VyKCkpCisgICAgICAgIG5ldHdvcmtNYW5hZ2VyLT5zZXRJQ0VDYW5kaWRhdGVGaWx0
ZXJpbmcoIXNob3VsZERpc2FibGVJQ0VDYW5kaWRhdGVGaWx0ZXJpbmcoZG9jdW1lbnQpKTsKKwog
ICAgIG1fcGVlckNvbm5lY3Rpb25zLmFwcGVuZChjb25uZWN0aW9uKTsKICAgICBpZiAoc2hvdWxk
RGlzYWJsZUlDRUNhbmRpZGF0ZUZpbHRlcmluZyhkb3duY2FzdDxEb2N1bWVudD4oKmNvbm5lY3Rp
b24uc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSkpCiAgICAgICAgIGNvbm5lY3Rpb24uZGlzYWJs
ZUlDRUNhbmRpZGF0ZUZpbHRlcmluZygpOwpAQCAtODQsOCArODgsMTMgQEAgdm9pZCBSVENDb250
cm9sbGVyOjpkaXNhYmxlSUNFQ2FuZGlkYXRlRmlsdGVyaW5nRm9yQWxsT3JpZ2lucygpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIG1fc2hvdWxkRmlsdGVySUNFQ2FuZGlkYXRlcyA9IGZhbHNlOwot
ICAgIGZvciAoUlRDUGVlckNvbm5lY3Rpb24mIGNvbm5lY3Rpb24gOiBtX3BlZXJDb25uZWN0aW9u
cykKKyAgICBmb3IgKFJUQ1BlZXJDb25uZWN0aW9uJiBjb25uZWN0aW9uIDogbV9wZWVyQ29ubmVj
dGlvbnMpIHsKKyAgICAgICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+
KGNvbm5lY3Rpb24uc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSkgeworICAgICAgICAgICAgaWYg
KGF1dG8qIG5ldHdvcmtNYW5hZ2VyID0gZG9jdW1lbnQtPnJ0Y05ldHdvcmtNYW5hZ2VyKCkpCisg
ICAgICAgICAgICAgICAgbmV0d29ya01hbmFnZXItPnNldElDRUNhbmRpZGF0ZUZpbHRlcmluZyhm
YWxzZSk7CisgICAgICAgIH0KICAgICAgICAgY29ubmVjdGlvbi5kaXNhYmxlSUNFQ2FuZGlkYXRl
RmlsdGVyaW5nKCk7CisgICAgfQogfQogCiB2b2lkIFJUQ0NvbnRyb2xsZXI6OmRpc2FibGVJQ0VD
YW5kaWRhdGVGaWx0ZXJpbmdGb3JEb2N1bWVudChEb2N1bWVudCYgZG9jdW1lbnQpCkBAIC05Mywx
MSArMTAyLDE3IEBAIHZvaWQgUlRDQ29udHJvbGxlcjo6ZGlzYWJsZUlDRUNhbmRpZGF0ZUZpbHRl
cmluZ0ZvckRvY3VtZW50KERvY3VtZW50JiBkb2N1bWVudCkKICAgICBpZiAoIUxpYldlYlJUQ1By
b3ZpZGVyOjp3ZWJSVENBdmFpbGFibGUoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgaWYgKGF1
dG8qIG5ldHdvcmtNYW5hZ2VyID0gZG9jdW1lbnQucnRjTmV0d29ya01hbmFnZXIoKSkKKyAgICAg
ICAgbmV0d29ya01hbmFnZXItPnNldElDRUNhbmRpZGF0ZUZpbHRlcmluZyhmYWxzZSk7CisKICAg
ICBtX2ZpbHRlcmluZ0Rpc2FibGVkT3JpZ2lucy5hcHBlbmQoUGVlckNvbm5lY3Rpb25PcmlnaW4g
eyBkb2N1bWVudC50b3BPcmlnaW4oKSwgZG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4oKSB9KTsKICAg
ICBmb3IgKFJUQ1BlZXJDb25uZWN0aW9uJiBjb25uZWN0aW9uIDogbV9wZWVyQ29ubmVjdGlvbnMp
IHsKICAgICAgICAgaWYgKGF1dG8qIHBlZXJDb25uZWN0aW9uRG9jdW1lbnQgPSBkb3duY2FzdDxE
b2N1bWVudD4oY29ubmVjdGlvbi5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpKSB7Ci0gICAgICAg
ICAgICBpZiAobWF0Y2hEb2N1bWVudE9yaWdpbigqcGVlckNvbm5lY3Rpb25Eb2N1bWVudCwgZG9j
dW1lbnQudG9wT3JpZ2luKCksIGRvY3VtZW50LnNlY3VyaXR5T3JpZ2luKCkpKQorICAgICAgICAg
ICAgaWYgKG1hdGNoRG9jdW1lbnRPcmlnaW4oKnBlZXJDb25uZWN0aW9uRG9jdW1lbnQsIGRvY3Vt
ZW50LnRvcE9yaWdpbigpLCBkb2N1bWVudC5zZWN1cml0eU9yaWdpbigpKSkgeworICAgICAgICAg
ICAgICAgIGlmIChhdXRvKiBuZXR3b3JrTWFuYWdlciA9IHBlZXJDb25uZWN0aW9uRG9jdW1lbnQt
PnJ0Y05ldHdvcmtNYW5hZ2VyKCkpCisgICAgICAgICAgICAgICAgICAgIG5ldHdvcmtNYW5hZ2Vy
LT5zZXRJQ0VDYW5kaWRhdGVGaWx0ZXJpbmcoZmFsc2UpOwogICAgICAgICAgICAgICAgIGNvbm5l
Y3Rpb24uZGlzYWJsZUlDRUNhbmRpZGF0ZUZpbHRlcmluZygpOworICAgICAgICAgICAgfQogICAg
ICAgICB9CiAgICAgfQogfQpAQCAtMTA5LDggKzEyNCwxMyBAQCB2b2lkIFJUQ0NvbnRyb2xsZXI6
OmVuYWJsZUlDRUNhbmRpZGF0ZUZpbHRlcmluZygpCiAKICAgICBtX2ZpbHRlcmluZ0Rpc2FibGVk
T3JpZ2lucy5jbGVhcigpOwogICAgIG1fc2hvdWxkRmlsdGVySUNFQ2FuZGlkYXRlcyA9IHRydWU7
Ci0gICAgZm9yIChSVENQZWVyQ29ubmVjdGlvbiYgY29ubmVjdGlvbiA6IG1fcGVlckNvbm5lY3Rp
b25zKQorICAgIGZvciAoUlRDUGVlckNvbm5lY3Rpb24mIGNvbm5lY3Rpb24gOiBtX3BlZXJDb25u
ZWN0aW9ucykgewogICAgICAgICBjb25uZWN0aW9uLmVuYWJsZUlDRUNhbmRpZGF0ZUZpbHRlcmlu
ZygpOworICAgICAgICBpZiAoYXV0byogZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oY29u
bmVjdGlvbi5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpKSB7CisgICAgICAgICAgICBpZiAoYXV0
byogbmV0d29ya01hbmFnZXIgPSBkb2N1bWVudC0+cnRjTmV0d29ya01hbmFnZXIoKSkKKyAgICAg
ICAgICAgICAgICBuZXR3b3JrTWFuYWdlci0+c2V0SUNFQ2FuZGlkYXRlRmlsdGVyaW5nKHRydWUp
OworICAgICAgICB9CisgICAgfQogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ05ldHdvcmtNYW5hZ2Vy
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ05ldHdvcmtNYW5hZ2Vy
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNWYzNmZkNDYxZjgxYWJiYTJjMDJiYjgxZjFmYjVmOTk3ODAyNWZkMAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
TmV0d29ya01hbmFnZXIuaApAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaWYgRU5BQkxFKFdFQl9SVEMpCisKKyNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJl
ZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBSVENOZXR3b3JrTWFu
YWdlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxSVENOZXR3b3JrTWFuYWdlciwgV1RG
OjpEZXN0cnVjdGlvblRocmVhZDo6TWFpblJ1bkxvb3A+IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFs
IH5SVENOZXR3b3JrTWFuYWdlcigpID0gZGVmYXVsdDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0SUNF
Q2FuZGlkYXRlRmlsdGVyaW5nKGJvb2wpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3Rl
ck1ETlNOYW1lcygpID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIEVOQUJMRShXRUJfUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRwb2ludC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBv
aW50LmNwcAppbmRleCA1M2M0NGFkZjEyYTliZWQ3NGNhNWRiOGE5NTY4MDIzZDg5OTI2NjU1Li4y
MjA4N2EzNjJkZjZjODkwYjU5OWIxMWZkMWQ0NDU4ZTllYjhhMTNkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVu
ZHBvaW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmNwcApAQCAtOTMsMTUgKzkzLDE1IEBAIGJvb2wg
TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6c2V0Q29uZmlndXJhdGlvbihMaWJXZWJSVENQcm92aWRl
ciYgY2xpZW50LCB3ZWJydGM6CiAgICAgY29uZmlndXJhdGlvbi5zZHBfc2VtYW50aWNzID0gd2Vi
cnRjOjpTZHBTZW1hbnRpY3M6OmtVbmlmaWVkUGxhbjsKIAogICAgIGlmICghbV9iYWNrZW5kKSB7
CisgICAgICAgIGF1dG8mIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KCptX3BlZXJDb25u
ZWN0aW9uQmFja2VuZC5jb25uZWN0aW9uKCkuc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKICAg
ICAgICAgaWYgKCFtX3J0Y1NvY2tldEZhY3RvcnkpIHsKLSAgICAgICAgICAgIGF1dG8mIGRvY3Vt
ZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KCptX3BlZXJDb25uZWN0aW9uQmFja2VuZC5jb25uZWN0
aW9uKCkuc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICAgICAgICAgIFJlZ2lzdHJhYmxl
RG9tYWluIGRvbWFpbiB7IGRvY3VtZW50LnVybCgpIH07CiAgICAgICAgICAgICBib29sIGlzRmly
c3RQYXJ0eSA9IGRvbWFpbiA9PSBSZWdpc3RyYWJsZURvbWFpbihkb2N1bWVudC5maXJzdFBhcnR5
Rm9yQ29va2llcygpKTsKICAgICAgICAgICAgIG1fcnRjU29ja2V0RmFjdG9yeSA9IGNsaWVudC5j
cmVhdGVTb2NrZXRGYWN0b3J5KGRvY3VtZW50LnVzZXJBZ2VudChkb2N1bWVudC51cmwoKSksIGlz
Rmlyc3RQYXJ0eSwgV1RGTW92ZShkb21haW4pKTsKICAgICAgICAgICAgIGlmICghbV9wZWVyQ29u
bmVjdGlvbkJhY2tlbmQuc2hvdWxkRmlsdGVySUNFQ2FuZGlkYXRlcygpKQogICAgICAgICAgICAg
ICAgIG1fcnRjU29ja2V0RmFjdG9yeS0+ZGlzYWJsZVJlbGF5KCk7CiAgICAgICAgIH0KLSAgICAg
ICAgbV9iYWNrZW5kID0gY2xpZW50LmNyZWF0ZVBlZXJDb25uZWN0aW9uKCp0aGlzLCBtX3J0Y1Nv
Y2tldEZhY3RvcnkuZ2V0KCksIFdURk1vdmUoY29uZmlndXJhdGlvbikpOworICAgICAgICBtX2Jh
Y2tlbmQgPSBjbGllbnQuY3JlYXRlUGVlckNvbm5lY3Rpb24oZG9jdW1lbnQuaWRlbnRpZmllcigp
LCAqdGhpcywgbV9ydGNTb2NrZXRGYWN0b3J5LmdldCgpLCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24p
KTsKICAgICAgICAgcmV0dXJuICEhbV9iYWNrZW5kOwogICAgIH0KICAgICBhdXRvIG9sZENvbmZp
Z3VyYXRpb24gPSBtX2JhY2tlbmQtPkdldENvbmZpZ3VyYXRpb24oKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJD
b25uZWN0aW9uQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwCmluZGV4IDU5NjAy
YjA5YWVjOWUwYWJiM2QyMjdjMzBmOTI4OTRkNGJhNmQ2MjQuLmM2OWUwYzZkN2JlNzBiZTFkNzAx
MzA4MTM3ZDhlMzVjZmUyYmUzYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2Vi
UlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcApAQCAtMzEwLDcgKzMxMCw3IEBAIFJlZlB0cjxS
VENTZXNzaW9uRGVzY3JpcHRpb24+IExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6Y3Vy
cmVudExvY2FsRGVzY3JpCiB7CiAgICAgYXV0byBkZXNjcmlwdGlvbiA9IG1fZW5kcG9pbnQtPmN1
cnJlbnRMb2NhbERlc2NyaXB0aW9uKCk7CiAgICAgaWYgKGRlc2NyaXB0aW9uKQotICAgICAgICBk
ZXNjcmlwdGlvbi0+c2V0U2RwKGZpbHRlclNEUChTdHJpbmcoZGVzY3JpcHRpb24tPnNkcCgpKSkp
OworICAgICAgICB2YWxpZGF0ZVNEUChkZXNjcmlwdGlvbi0+c2RwKCkpOwogICAgIHJldHVybiBk
ZXNjcmlwdGlvbjsKIH0KIApAQCAtMzIzLDcgKzMyMyw3IEBAIFJlZlB0cjxSVENTZXNzaW9uRGVz
Y3JpcHRpb24+IExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6cGVuZGluZ0xvY2FsRGVz
Y3JpCiB7CiAgICAgYXV0byBkZXNjcmlwdGlvbiA9IG1fZW5kcG9pbnQtPnBlbmRpbmdMb2NhbERl
c2NyaXB0aW9uKCk7CiAgICAgaWYgKGRlc2NyaXB0aW9uKQotICAgICAgICBkZXNjcmlwdGlvbi0+
c2V0U2RwKGZpbHRlclNEUChTdHJpbmcoZGVzY3JpcHRpb24tPnNkcCgpKSkpOworICAgICAgICB2
YWxpZGF0ZVNEUChkZXNjcmlwdGlvbi0+c2RwKCkpOwogICAgIHJldHVybiBkZXNjcmlwdGlvbjsK
IH0KIApAQCAtMzM2LDcgKzMzNiw3IEBAIFJlZlB0cjxSVENTZXNzaW9uRGVzY3JpcHRpb24+IExp
YldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6bG9jYWxEZXNjcmlwdGlvbigpCiB7CiAgICAg
YXV0byBkZXNjcmlwdGlvbiA9IG1fZW5kcG9pbnQtPmxvY2FsRGVzY3JpcHRpb24oKTsKICAgICBp
ZiAoZGVzY3JpcHRpb24pCi0gICAgICAgIGRlc2NyaXB0aW9uLT5zZXRTZHAoZmlsdGVyU0RQKFN0
cmluZyhkZXNjcmlwdGlvbi0+c2RwKCkpKSk7CisgICAgICAgIHZhbGlkYXRlU0RQKGRlc2NyaXB0
aW9uLT5zZHAoKSk7CiAgICAgcmV0dXJuIGRlc2NyaXB0aW9uOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOWNmYzVmMjVk
MDRmZWJkMjliMmMxZjRmZTBkYjE4OGMwNGExMTUwNi4uZTQ5YmNmYWZmZjc0ZTdiNTE2ODU2ODg0
M2YzM2YwODcyMTIxYzg0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTE3Miw2ICsxMTcyLDkgQEAKIAkJNDFCODc3NjIyM0RF
MTA0NTAwMzYzOEI4IC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUI4Nzc2MDIzREUxMDQyMDAz
NjM4QjggLyogUmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MUJCQTg2NjI1N0UzNzNCMDBBQzdG
NkQgLyogU0ZyYW1lVXRpbHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQxMjA5RTI0MjU3QTJGQkIwMDEyMEFDQSAvKiBTRnJhbWVVdGlscy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxQkYyMDQ5MjJC
QTdCRTgwMDA0RjgxMiAvKiBSZWFsdGltZVZpZGVvU291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUJGMjA0MDIyQjk0NzE2MDAwNEY4MTIgLyog
UmVhbHRpbWVWaWRlb1NvdXJjZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCTQxQzE0QkM2MjZERTZERTgwMDY4NUJGNSAvKiBSVENOZXR3b3JrTWFu
YWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFD
MTRCQzQyNkRFNkRFODAwNjg1QkY1IC8qIFJUQ05ldHdvcmtNYW5hZ2VyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDFDMTRCQzcyNkRFODU4NDAw
Njg1QkY1IC8qIExpYldlYlJUQ1V0aWxzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0MUQxQTA0QzIxM0VEREZGMDA2M0ZCNkIgLyogTGliV2ViUlRDVXRp
bHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0
MUMxNEJDOTI2REY3OUQ3MDA2ODVCRjUgLyogTUROU1JlZ2lzdGVyRXJyb3IuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQzE0QkM4MjZERjc5RDYwMDY4
NUJGNSAvKiBNRE5TUmVnaXN0ZXJFcnJvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTQxQzNCOEExMjY0OUIxRTAwMDRFRDRERSAvKiBBdWRpb01l
ZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFDM0I4OUYyNjQ5QjFCNzAwNEVENERFIC8qIEF1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDFDM0I4QTIyNjQ5QjFFNTAwNEVE
NERFIC8qIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFDM0I4OUIyNjQ5QjFCNjAwNEVENERF
IC8qIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxQzc2MEIxMEVERTAzRDMwMEMxNjU1
RiAvKiBTY3JpcHRTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDFDNzYwQjAwRURFMDNEMzAwQzE2NTVGIC8qIFNjcmlwdFN0YXRlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTgwNDQsNiArODA0
Nyw4IEBACiAJCTQxQkNFODc3MjVGN0E2N0EwMDQ2QzJFNSAvKiBSVENUcmFuc2Zvcm1FdmVudC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSVENUcmFuc2Zvcm1FdmVudC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUJGMjA0MDIyQjk0NzE2MDAwNEY4MTIgLyog
UmVhbHRpbWVWaWRlb1NvdXJjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWFsdGltZVZpZGVvU291cmNl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQkYyMDQyMjJCOTQ3MTcwMDA0Rjgx
MiAvKiBSZWFsdGltZVZpZGVvU291cmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlYWx0aW1l
VmlkZW9Tb3VyY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUMxNEJDNDI2
REU2REU4MDA2ODVCRjUgLyogUlRDTmV0d29ya01hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUlRDTmV0d29ya01hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNDFDMTRCQzgyNkRGNzlENjAwNjg1QkY1IC8qIE1ETlNSZWdpc3RlckVycm9yLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1ETlNSZWdpc3RlckVycm9yLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQzNCODlCMjY0OUIxQjYwMDRFRDRERSAvKiBB
dWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXVkaW9N
ZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQxQzNCODlDMjY0OUIxQjYwMDRFRDRERSAvKiBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5k
ZXJlckNvY29hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVy
Q29jb2EuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFDM0I4OUQyNjQ5QjFCNjAw
NEVENERFIC8qIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2EuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzI1NCw2ICsxNzI1OSw3IEBACiAJCQkJMzE2RENC
ODkxRTdBNjk5NjAwMUI1Rjg3IC8qIFJUQ0ljZVRyYW5zcG9ydC5pZGwgKi8sCiAJCQkJNDE0NTE2
RTAyNkNDMDQyMTAwQUFBQkUwIC8qIFJUQ0ljZVRyYW5zcG9ydEJhY2tlbmQuaCAqLywKIAkJCQkz
MTZEQ0I4RTFFN0E2Qzc5MDAxQjVGODcgLyogUlRDSWNlVHJhbnNwb3J0U3RhdGUuaWRsICovLAor
CQkJCTQxQzE0QkM0MjZERTZERTgwMDY4NUJGNSAvKiBSVENOZXR3b3JrTWFuYWdlci5oICovLAog
CQkJCTA3Mzc5NERDMTlFRTJDNTIwMEU1QTA0NSAvKiBSVENPZmZlckFuc3dlck9wdGlvbnMuaCAq
LywKIAkJCQkzMTZEQ0IxMjFFNzhCRTQzMDAxQjVGODcgLyogUlRDT2ZmZXJBbnN3ZXJPcHRpb25z
LmlkbCAqLywKIAkJCQkzMTZEQ0IyODFFNzhGMzk1MDAxQjVGODcgLyogUlRDT2ZmZXJPcHRpb25z
LmggKi8sCkBAIC0xNzM4MSw2ICsxNzM4Nyw3IEBACiAJCQkJMDdCNzExNkIxRDg5OUU2MzAwOUYw
RkZCIC8qIENhcHR1cmVEZXZpY2VNYW5hZ2VyLmNwcCAqLywKIAkJCQkwN0I3MTE2QzFEODk5RTYz
MDA5RjBGRkIgLyogQ2FwdHVyZURldmljZU1hbmFnZXIuaCAqLywKIAkJCQk1RUJCODkzMDFDNzc3
N0UxMDBDNjVENDEgLyogSWNlQ2FuZGlkYXRlLmggKi8sCisJCQkJNDFDMTRCQzgyNkRGNzlENjAw
Njg1QkY1IC8qIE1ETlNSZWdpc3RlckVycm9yLmggKi8sCiAJCQkJMUJFNUJGQzExRDUxNTcxNTAw
MTY2NkQ5IC8qIE1lZGlhQ29uc3RyYWludHMuY3BwICovLAogCQkJCTA3MjIxQjk5MTdDRjBBRDQw
MDg0OEU1MSAvKiBNZWRpYUNvbnN0cmFpbnRzLmggKi8sCiAJCQkJNDFCMjhCMTMxRjg1MDFBNDAw
RkI1MkFDIC8qIE1lZGlhRW5kcG9pbnRDb25maWd1cmF0aW9uLmNwcCAqLywKQEAgLTMzNTgzLDYg
KzMzNTkwLDcgQEAKIAkJCQk0MTgxQzVDRDI1NTU4MzY5MDBBRUIwRkYgLyogTGliV2ViUlRDUnRw
VHJhbnNmb3JtYWJsZUZyYW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTgxQzVEMTI1NTU4OTU2
MDBBRUIwRkYgLyogTGliV2ViUlRDUnRwVHJhbnNmb3JtQmFja2VuZC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNDEwRTQ0NjEyMzQzNzNFOTAwMDE3M0Q0IC8qIExpYldlYlJUQ1NvY2tldElkZW50aWZp
ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxQzE0QkM3MjZERTg1ODQwMDY4NUJGNSAvKiBMaWJX
ZWJSVENVdGlscy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODQ3MzBEOTExMjQ4RjBCMzAwRDNBOUM5
IC8qIExpZ2h0U291cmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyNzk2NTBEMDBCRjIyMDA3
MUI3ODIgLyogTGluZWFyR3JhZGllbnRBdHRyaWJ1dGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
QjMxQzkxRTEwQUUxQjhFMDAwQzdCOTIgLyogTGluZUNsYW1wVmFsdWUuaCBpbiBIZWFkZXJzICov
LApAQCAtMzM2NDYsNiArMzM2NTQsNyBAQAogCQkJCTQzOTA0NkVBMTJEQTI1RTgxMkFGODBBQyAv
KiBNYXRoT3BlcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5RDVEQzJDMEY0MjNBNzMwMDhG
MjBGRCAvKiBNYXRyaXgzRFRyYW5zZm9ybU9wZXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NDlFOTExQzcwRUY4NkQ0NzAwOUQwQ0FGIC8qIE1hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbi5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNDFDMTRCQzkyNkRGNzlENzAwNjg1QkY1IC8qIE1ETlNSZWdpc3Rl
ckVycm9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0JDOERBRDFBQUEzMDIyMDBFMUM4MDMgLyog
TWVkaWFBY2Nlc3NpYmlsaXR5U29mdExpbmsuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMUJDQzYx
MTEyNERGQ0IwMEJFNzBERCAvKiBNZWRpYUNhblN0YXJ0TGlzdGVuZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCUNEQ0M5QkNGMjIzODdFOUEwMEZGQjUxQyAvKiBNZWRpYUNhcGFiaWxpdGllc0RlY29k
aW5nSW5mby5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNDQ2MSw2ICszNDQ3MCw3IEBACiAJCQkJMDdB
Qjk5NkIxOERBM0MwMTAwMTg3NzFFIC8qIFJUQ0ljZVNlcnZlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMzEzNTkxMDgxRTdEREM3MzAwRjMwNjMwIC8qIFJUQ0ljZVRyYW5zcG9ydFBvbGljeS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMzEzNTkxMDkxRTdEREM3MzAwRjMwNjMwIC8qIFJUQ0ljZVRyYW5z
cG9ydFN0YXRlLmggaW4gSGVhZGVycyAqLywKKwkJCQk0MUMxNEJDNjI2REU2REU4MDA2ODVCRjUg
LyogUlRDTmV0d29ya01hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3Mzc5NEZFMTlGNTg2
NEUwMEU1QTA0NSAvKiBSVENOb3RpZmllcnNNb2NrLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzM3
OTRERTE5RUUyQzUyMDBFNUEwNDUgLyogUlRDT2ZmZXJBbnN3ZXJPcHRpb25zLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwNzhFMDkyNTE3RDE0RDFDMDA0MjBBQTEgLyogUlRDUGVlckNvbm5lY3Rpb24u
aCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggOTQ2NmZkOWY3ZjU0
N2ZkZDliZWYwNGVmODU3YTJhNmVjYTJiMWZkOC4uOTY0OWE0NTZjMmIwODIwMGRhNWQ3Zjc4OTgw
ZmFhNjZlZDEyYWFjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0yNTk1LDEyICsyNTk1
LDkgQEAgdm9pZCBEb2N1bWVudDo6d2lsbEJlUmVtb3ZlZEZyb21GcmFtZSgpCiAgICAgaWYgKG1f
aGFzUHJlcGFyZWRGb3JEZXN0cnVjdGlvbikKICAgICAgICAgcmV0dXJuOwogCi0jaWYgVVNFKExJ
QldFQlJUQykKLSAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgbW92ZWQgdG8gTW9kdWxlcy9t
ZWRpYXN0cmVhbS4KLSAgICBpZiAoTGliV2ViUlRDUHJvdmlkZXI6OndlYlJUQ0F2YWlsYWJsZSgp
KSB7Ci0gICAgICAgIGlmIChhdXRvKiBwYWdlID0gdGhpcy0+cGFnZSgpKQotICAgICAgICAgICAg
cGFnZS0+bGliV2ViUlRDUHJvdmlkZXIoKS51bnJlZ2lzdGVyTUROU05hbWVzKGlkZW50aWZpZXIo
KSk7Ci0gICAgfQorI2lmIEVOQUJMRShXRUJfUlRDKQorICAgIGlmIChtX3J0Y05ldHdvcmtNYW5h
Z2VyKQorICAgICAgICBtX3J0Y05ldHdvcmtNYW5hZ2VyLT51bnJlZ2lzdGVyTUROU05hbWVzKCk7
CiAjZW5kaWYKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKQEAgLTU2MTcsMTIgKzU2MTQs
OSBAQCB2b2lkIERvY3VtZW50OjpzdXNwZW5kKFJlYXNvbkZvclN1c3BlbnNpb24gcmVhc29uKQog
ICAgICAgICAgICAgdmlldy0+Y29tcG9zaXRvcigpLmNhbmNlbENvbXBvc2l0aW5nTGF5ZXJVcGRh
dGUoKTsKICAgICB9CiAKLSNpZiBVU0UoTElCV0VCUlRDKQotICAgIC8vIEZJWE1FOiBUaGlzIHNo
b3VsZCBiZSBtb3ZlZCB0byBNb2R1bGVzL21lZGlhc3RyZWFtLgotICAgIGlmIChMaWJXZWJSVENQ
cm92aWRlcjo6d2ViUlRDQXZhaWxhYmxlKCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHBhZ2UgPSB0
aGlzLT5wYWdlKCkpCi0gICAgICAgICAgICBwYWdlLT5saWJXZWJSVENQcm92aWRlcigpLnVucmVn
aXN0ZXJNRE5TTmFtZXMoaWRlbnRpZmllcigpKTsKLSAgICB9CisjaWYgRU5BQkxFKFdFQl9SVEMp
CisgICAgaWYgKG1fcnRjTmV0d29ya01hbmFnZXIpCisgICAgICAgIG1fcnRjTmV0d29ya01hbmFn
ZXItPnVucmVnaXN0ZXJNRE5TTmFtZXMoKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNFUlZJQ0Vf
V09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCBhZjVlNzg1MGNhOTIxNWYyMjkxZDUwNGIy
ZGY4ZTljMmQwZDUzYjk2Li44MjMwOTgzYTZhNjFmMTlmOWI5MWEyNzFkNDAxMDQzNTQ3OTRjM2Iw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtNDksNiArNDksNyBAQAogI2luY2x1ZGUgIlBhZ2VJ
ZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1FdmVudC5oIgogI2luY2x1ZGUgIlBsYXli
YWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJSVENOZXR3b3Jr
TWFuYWdlci5oIgogI2luY2x1ZGUgIlJlZmVycmVyUG9saWN5LmgiCiAjaW5jbHVkZSAiUmVnaW9u
LmgiCiAjaW5jbHVkZSAiUmVnaXN0cmFibGVEb21haW4uaCIKQEAgLTcwOCw2ICs3MDksMTEgQEAg
cHVibGljOgogICAgIFNvY2tldFByb3ZpZGVyKiBzb2NrZXRQcm92aWRlcigpIGZpbmFsOwogICAg
IFJlZlB0cjxSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXJDb25uZWN0aW9uPiBjcmVhdGVSVENE
YXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXJDb25uZWN0aW9uKCkgZmluYWw7CiAKKyNpZiBFTkFCTEUo
V0VCX1JUQykKKyAgICBSVENOZXR3b3JrTWFuYWdlciogcnRjTmV0d29ya01hbmFnZXIoKSB7IHJl
dHVybiBtX3J0Y05ldHdvcmtNYW5hZ2VyLmdldCgpOyB9CisgICAgdm9pZCBzZXRSVENOZXR3b3Jr
TWFuYWdlcihSZWY8UlRDTmV0d29ya01hbmFnZXI+JiYgcnRjTmV0d29ya01hbmFnZXIpIHsgbV9y
dGNOZXR3b3JrTWFuYWdlciA9IFdURk1vdmUocnRjTmV0d29ya01hbmFnZXIpOyB9CisjZW5kaWYK
KwogICAgIGJvb2wgY2FuTmF2aWdhdGUoRnJhbWUqIHRhcmdldEZyYW1lLCBjb25zdCBVUkwmIGRl
c3RpbmF0aW9uVVJMID0gVVJMKCkpOwogCiAgICAgYm9vbCB1c2VzU3R5bGVCYXNlZEVkaXRhYmls
aXR5KCkgY29uc3Q7CkBAIC0yMjIxLDYgKzIyMjcsMTAgQEAgcHJpdmF0ZToKIAogICAgIExpc3RI
YXNoU2V0PFJlZjxFbGVtZW50Pj4gbV90b3BMYXllckVsZW1lbnRzOwogICAgIFVuaXF1ZVJlZjxX
aGl0ZXNwYWNlQ2FjaGU+IG1fd2hpdGVzcGFjZUNhY2hlOworCisjaWYgRU5BQkxFKFdFQl9SVEMp
CisgICAgUmVmUHRyPFJUQ05ldHdvcmtNYW5hZ2VyPiBtX3J0Y05ldHdvcmtNYW5hZ2VyOworI2Vu
ZGlmCiB9OwogCiBFbGVtZW50KiBldmVudFRhcmdldEVsZW1lbnRGb3JEb2N1bWVudChEb2N1bWVu
dCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTURO
U1JlZ2lzdGVyRXJyb3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01E
TlNSZWdpc3RlckVycm9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzdjNWRhZmUzM2ZiZTY0ZTdhODI2YzE1MWI2
YmUzY2E1MmZhNTU1ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL01ETlNSZWdpc3RlckVycm9yLmgKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL0VudW1UcmFpdHMuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitlbnVtIGNsYXNzIE1ETlNSZWdpc3RlckVycm9yIHsgTm90SW1w
bGVtZW50ZWQsIEJhZFBhcmFtZXRlciwgRE5TU0QsIEludGVybmFsLCBUaW1lb3V0IH07CisKK30K
KworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29y
ZTo6TUROU1JlZ2lzdGVyRXJyb3I+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAor
ICAgICAgICBXZWJDb3JlOjpNRE5TUmVnaXN0ZXJFcnJvciwKKyAgICAgICAgV2ViQ29yZTo6TURO
U1JlZ2lzdGVyRXJyb3I6Ok5vdEltcGxlbWVudGVkLAorICAgICAgICBXZWJDb3JlOjpNRE5TUmVn
aXN0ZXJFcnJvcjo6QmFkUGFyYW1ldGVyLAorICAgICAgICBXZWJDb3JlOjpNRE5TUmVnaXN0ZXJF
cnJvcjo6RE5TU0QsCisgICAgICAgIFdlYkNvcmU6Ok1ETlNSZWdpc3RlckVycm9yOjpJbnRlcm5h
bCwKKyAgICAgICAgV2ViQ29yZTo6TUROU1JlZ2lzdGVyRXJyb3I6OlRpbWVvdXQKKyAgICA+Owor
fTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHAKaW5kZXggYzU5NTYx
Nzg3MmIyMmI5ZWMzZjUzMmQzNDViMDhjMTZmZTZiZmQ2ZC4uNWFmNzlhZDQ4NTg2ODQwZjQ4NzU3
ZGVmZThhM2E2NmU1NmQzYmVjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIu
Y3BwCkBAIC0yOTksNyArMjk5LDcgQEAgdm9pZCBMaWJXZWJSVENQcm92aWRlcjo6ZW5hYmxlRW51
bWVyYXRpbmdBbGxOZXR3b3JrSW50ZXJmYWNlcygpCiAgICAgbV9lbmFibGVFbnVtZXJhdGluZ0Fs
bE5ldHdvcmtJbnRlcmZhY2VzID0gdHJ1ZTsKIH0KIAotcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0
Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U+IExpYldlYlJUQ1Byb3ZpZGVyOjpjcmVhdGVQZWVy
Q29ubmVjdGlvbih3ZWJydGM6OlBlZXJDb25uZWN0aW9uT2JzZXJ2ZXImIG9ic2VydmVyLCBydGM6
OlBhY2tldFNvY2tldEZhY3RvcnkqLCB3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpS
VENDb25maWd1cmF0aW9uJiYgY29uZmlndXJhdGlvbikKK3J0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJy
dGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlPiBMaWJXZWJSVENQcm92aWRlcjo6Y3JlYXRlUGVl
ckNvbm5lY3Rpb24oRG9jdW1lbnRJZGVudGlmaWVyLCB3ZWJydGM6OlBlZXJDb25uZWN0aW9uT2Jz
ZXJ2ZXImIG9ic2VydmVyLCBydGM6OlBhY2tldFNvY2tldEZhY3RvcnkqLCB3ZWJydGM6OlBlZXJD
b25uZWN0aW9uSW50ZXJmYWNlOjpSVENDb25maWd1cmF0aW9uJiYgY29uZmlndXJhdGlvbikKIHsK
ICAgICAvLyBEZWZhdWx0IFdLMSBpbXBsZW1lbnRhdGlvbi4KICAgICBBU1NFUlQobV91c2VOZXR3
b3JrVGhyZWFkV2l0aFNvY2tldFNlcnZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRl
ci5oCmluZGV4IDE4NjI3ZWU1N2Y3NThhMDQ3MjJkMTYxNmYwZjg3NjI4NDM0MTE1YjcuLjk0MjA3
M2IzMmUxN2U1NDY2OWU3ZWQyMzhhNWYxOTExNTE0YjI0NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJX
ZWJSVENQcm92aWRlci5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJEb2N1bWVudElk
ZW50aWZpZXIuaCIKICNpbmNsdWRlICJMaWJXZWJSVENNYWNyb3MuaCIKKyNpbmNsdWRlICJNRE5T
UmVnaXN0ZXJFcnJvci5oIgogI2luY2x1ZGUgIlJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlckNv
bm5lY3Rpb24uaCIKICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRl
IDx3dGYvRXhwZWN0ZWQuaD4KQEAgLTY2LDggKzY3LDYgQEAgY2xhc3MgUmVnaXN0cmFibGVEb21h
aW47CiBzdHJ1Y3QgUGVlckNvbm5lY3Rpb25GYWN0b3J5QW5kVGhyZWFkczsKIHN0cnVjdCBSVENS
dHBDYXBhYmlsaXRpZXM7CiAKLWVudW0gY2xhc3MgTUROU1JlZ2lzdGVyRXJyb3IgeyBOb3RJbXBs
ZW1lbnRlZCwgQmFkUGFyYW1ldGVyLCBETlNTRCwgSW50ZXJuYWwsIFRpbWVvdXQgfTsKLQogY2xh
c3MgV0VCQ09SRV9FWFBPUlQgTGliV2ViUlRDUHJvdmlkZXIgewogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgpAQCAtODYsMTggKzg1LDEwIEBAIHB1YmxpYzoKICAgICB1c2lu
ZyBJUEFkZHJlc3NPckVycm9yID0gRXhwZWN0ZWQ8U3RyaW5nLCBNRE5TUmVnaXN0ZXJFcnJvcj47
CiAgICAgdXNpbmcgTUROU05hbWVPckVycm9yID0gRXhwZWN0ZWQ8U3RyaW5nLCBNRE5TUmVnaXN0
ZXJFcnJvcj47CiAKLSAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3Rlck1ETlNOYW1lcyhEb2N1bWVu
dElkZW50aWZpZXIpIHsgfQotCi0gICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyTUROU05hbWUoRG9j
dW1lbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGlwQWRkcmVzcywgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChNRE5TTmFtZU9yRXJyb3ImJik+JiYgY2FsbGJhY2spCi0gICAgewotICAgICAgICBV
TlVTRURfUEFSQU0oaXBBZGRyZXNzKTsKLSAgICAgICAgY2FsbGJhY2sobWFrZVVuZXhwZWN0ZWQo
TUROU1JlZ2lzdGVyRXJyb3I6Ok5vdEltcGxlbWVudGVkKSk7Ci0gICAgfQotCiAgICAgdmlydHVh
bCBSZWZQdHI8UlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyQ29ubmVjdGlvbj4gY3JlYXRlUlRD
RGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyQ29ubmVjdGlvbigpIHsgcmV0dXJuIG51bGxwdHI7IH0K
IAogI2lmIFVTRShMSUJXRUJSVEMpCi0gICAgdmlydHVhbCBydGM6OnNjb3BlZF9yZWZwdHI8d2Vi
cnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZT4gY3JlYXRlUGVlckNvbm5lY3Rpb24od2VicnRj
OjpQZWVyQ29ubmVjdGlvbk9ic2VydmVyJiwgcnRjOjpQYWNrZXRTb2NrZXRGYWN0b3J5Kiwgd2Vi
cnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6UlRDQ29uZmlndXJhdGlvbiYmKTsKKyAgICB2
aXJ0dWFsIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNl
PiBjcmVhdGVQZWVyQ29ubmVjdGlvbihEb2N1bWVudElkZW50aWZpZXIsIHdlYnJ0Yzo6UGVlckNv
bm5lY3Rpb25PYnNlcnZlciYsIHJ0Yzo6UGFja2V0U29ja2V0RmFjdG9yeSosIHdlYnJ0Yzo6UGVl
ckNvbm5lY3Rpb25JbnRlcmZhY2U6OlJUQ0NvbmZpZ3VyYXRpb24mJik7CiAKICAgICB3ZWJydGM6
OlBlZXJDb25uZWN0aW9uRmFjdG9yeUludGVyZmFjZSogZmFjdG9yeSgpOwogCkBAIC0xODAsMTYg
KzE3MSwzIEBAIGlubGluZSB2b2lkIExpYldlYlJUQ1Byb3ZpZGVyOjpzZXRWUDlTdXBwb3J0KGJv
b2wgc3VwcG9ydHNWUDlQcm9maWxlMCwgYm9vbCBzdXBwCiAjZW5kaWYKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQotCi1uYW1lc3BhY2UgV1RGIHsKLXRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFp
dHM8V2ViQ29yZTo6TUROU1JlZ2lzdGVyRXJyb3I+IHsKLSAgICB1c2luZyB2YWx1ZXMgPSBFbnVt
VmFsdWVzPAotICAgICAgICBXZWJDb3JlOjpNRE5TUmVnaXN0ZXJFcnJvciwKLSAgICAgICAgV2Vi
Q29yZTo6TUROU1JlZ2lzdGVyRXJyb3I6Ok5vdEltcGxlbWVudGVkLAotICAgICAgICBXZWJDb3Jl
OjpNRE5TUmVnaXN0ZXJFcnJvcjo6QmFkUGFyYW1ldGVyLAotICAgICAgICBXZWJDb3JlOjpNRE5T
UmVnaXN0ZXJFcnJvcjo6RE5TU0QsCi0gICAgICAgIFdlYkNvcmU6Ok1ETlNSZWdpc3RlckVycm9y
OjpJbnRlcm5hbCwKLSAgICAgICAgV2ViQ29yZTo6TUROU1JlZ2lzdGVyRXJyb3I6OlRpbWVvdXQK
LSAgICA+OwotfTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
d2VicnRjL05ldHdvcmtNRE5TUmVnaXN0ZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy93ZWJydGMvTmV0d29ya01ETlNSZWdpc3Rlci5jcHAKaW5kZXggZmM0MzUxMTJmNWJjZTBh
YTMxMjIwZTQxMmZjZTRjNTk4M2YyOGIwNy4uN2FhMTdjMTMxZjE2MjY4NGNkMjgzYTdhMGU0YzFk
MTMxYmVlODYxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJy
dGMvTmV0d29ya01ETlNSZWdpc3Rlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy93ZWJydGMvTmV0d29ya01ETlNSZWdpc3Rlci5jcHAKQEAgLTk4LDI3ICs5OCwyOSBAQCBz
dGF0aWMgdm9pZCByZWdpc3Rlck1ETlNOYW1lQ2FsbGJhY2soRE5TU2VydmljZVJlZiwgRE5TUmVj
b3JkUmVmIHJlY29yZCwgRE5TU2VydgogICAgIE1ETlNfUkVMRUFTRV9MT0dfSU5fQ0FMTEJBQ0so
cmVxdWVzdC0+c2Vzc2lvbklELCAicmVnaXN0ZXJNRE5TTmFtZUNhbGxiYWNrIHdpdGggZXJyb3Ig
JWQiLCBlcnJvckNvZGUpOwogCiAgICAgaWYgKGVycm9yQ29kZSkgewotICAgICAgICByZXF1ZXN0
LT5jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpXZWJNRE5TUmVnaXN0ZXI6OkZpbmlzaGVkUmVn
aXN0ZXJpbmdNRE5TTmFtZSB7IHJlcXVlc3QtPnJlcXVlc3RJZGVudGlmaWVyLCBtYWtlVW5leHBl
Y3RlZChXZWJDb3JlOjpNRE5TUmVnaXN0ZXJFcnJvcjo6RE5TU0QpIH0sIDApOworICAgICAgICBy
ZXF1ZXN0LT5jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpXZWJNRE5TUmVnaXN0ZXI6OkZpbmlz
aGVkUmVnaXN0ZXJpbmdNRE5TTmFtZSB7IHJlcXVlc3QtPnJlcXVlc3RJZGVudGlmaWVyLCByZXF1
ZXN0LT5uYW1lLCBXZWJDb3JlOjpNRE5TUmVnaXN0ZXJFcnJvcjo6RE5TU0QgfSwgMCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9Ci0gICAgcmVxdWVzdC0+Y29ubmVjdGlvbi0+c2VuZChNZXNzYWdl
czo6V2ViTUROU1JlZ2lzdGVyOjpGaW5pc2hlZFJlZ2lzdGVyaW5nTUROU05hbWUgeyByZXF1ZXN0
LT5yZXF1ZXN0SWRlbnRpZmllciwgcmVxdWVzdC0+bmFtZSB9LCAwKTsKKyAgICByZXF1ZXN0LT5j
b25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpXZWJNRE5TUmVnaXN0ZXI6OkZpbmlzaGVkUmVnaXN0
ZXJpbmdNRE5TTmFtZSB7IHJlcXVlc3QtPnJlcXVlc3RJZGVudGlmaWVyLCByZXF1ZXN0LT5uYW1l
LCB7IH0gfSwgMCk7CiB9CiAKIHZvaWQgTmV0d29ya01ETlNSZWdpc3Rlcjo6cmVnaXN0ZXJNRE5T
TmFtZShNRE5TUmVnaXN0ZXJJZGVudGlmaWVyIHJlcXVlc3RJZGVudGlmaWVyLCBXZWJDb3JlOjpE
b2N1bWVudElkZW50aWZpZXIgZG9jdW1lbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGlwQWRk
cmVzcykKIHsKKyAgICBhdXRvIG5hbWUgPSBtYWtlU3RyaW5nKGNyZWF0ZUNhbm9uaWNhbFVVSURT
dHJpbmcoKSwgIi5sb2NhbCIpOworCiAgICAgRE5TU2VydmljZVJlZiBzZXJ2aWNlOwogICAgIGF1
dG8gaXRlcmF0b3IgPSBtX3NlcnZpY2VzLmZpbmQoZG9jdW1lbnRJZGVudGlmaWVyKTsKICAgICBp
ZiAoaXRlcmF0b3IgPT0gbV9zZXJ2aWNlcy5lbmQoKSkgewogICAgICAgICBhdXRvIGVycm9yID0g
RE5TU2VydmljZUNyZWF0ZUNvbm5lY3Rpb24oJnNlcnZpY2UpOwogICAgICAgICBpZiAoZXJyb3Ip
IHsKICAgICAgICAgICAgIE1ETlNfUkVMRUFTRV9MT0coInJlZ2lzdGVyTUROU05hbWUgRE5TU2Vy
dmljZUNyZWF0ZUNvbm5lY3Rpb24gZXJyb3IgJWQiLCBlcnJvcik7Ci0gICAgICAgICAgICBtX2Nv
bm5lY3Rpb24uY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OldlYk1ETlNSZWdpc3Rlcjo6Rmlu
aXNoZWRSZWdpc3RlcmluZ01ETlNOYW1lIHsgcmVxdWVzdElkZW50aWZpZXIsIG1ha2VVbmV4cGVj
dGVkKFdlYkNvcmU6Ok1ETlNSZWdpc3RlckVycm9yOjpETlNTRCkgfSwgMCk7CisgICAgICAgICAg
ICBtX2Nvbm5lY3Rpb24uY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OldlYk1ETlNSZWdpc3Rl
cjo6RmluaXNoZWRSZWdpc3RlcmluZ01ETlNOYW1lIHsgcmVxdWVzdElkZW50aWZpZXIsIG5hbWUs
IFdlYkNvcmU6Ok1ETlNSZWdpc3RlckVycm9yOjpETlNTRCB9LCAwKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogICAgICAgICBlcnJvciA9IEROU1NlcnZpY2VTZXREaXNwYXRjaFF1
ZXVlKHNlcnZpY2UsIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCkpOwogICAgICAgICBpZiAoZXJy
b3IpIHsKICAgICAgICAgICAgIE1ETlNfUkVMRUFTRV9MT0coInJlZ2lzdGVyTUROU05hbWUgRE5T
U2VydmljZUNyZWF0ZUNvbm5lY3Rpb24gZXJyb3IgJWQiLCBlcnJvcik7Ci0gICAgICAgICAgICBt
X2Nvbm5lY3Rpb24uY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OldlYk1ETlNSZWdpc3Rlcjo6
RmluaXNoZWRSZWdpc3RlcmluZ01ETlNOYW1lIHsgcmVxdWVzdElkZW50aWZpZXIsIG1ha2VVbmV4
cGVjdGVkKFdlYkNvcmU6Ok1ETlNSZWdpc3RlckVycm9yOjpETlNTRCkgfSwgMCk7CisgICAgICAg
ICAgICBtX2Nvbm5lY3Rpb24uY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OldlYk1ETlNSZWdp
c3Rlcjo6RmluaXNoZWRSZWdpc3RlcmluZ01ETlNOYW1lIHsgcmVxdWVzdElkZW50aWZpZXIsIG5h
bWUsIFdlYkNvcmU6Ok1ETlNSZWdpc3RlckVycm9yOjpETlNTRCB9LCAwKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogICAgICAgICBBU1NFUlQoc2VydmljZSk7CkBAIC0xMjYsMTMg
KzEyOCwxMiBAQCB2b2lkIE5ldHdvcmtNRE5TUmVnaXN0ZXI6OnJlZ2lzdGVyTUROU05hbWUoTURO
U1JlZ2lzdGVySWRlbnRpZmllciByZXF1ZXN0SWRlbnRpZgogICAgIH0gZWxzZQogICAgICAgICBz
ZXJ2aWNlID0gaXRlcmF0b3ItPnZhbHVlOwogCi0gICAgYXV0byBuYW1lID0gbWFrZVN0cmluZyhj
cmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCksICIubG9jYWwiKTsKLQogICAgIGF1dG8gaXAgPSBp
bmV0X2FkZHIoaXBBZGRyZXNzLnV0ZjgoKS5kYXRhKCkpOwogCisgICAgLy8gRklYTUU6IEFkZCBJ
UHY2IHN1cHBvcnQuCiAgICAgaWYgKGlwID09ICggaW5fYWRkcl90KSgtMSkpIHsKICAgICAgICAg
TUROU19SRUxFQVNFX0xPRygicmVnaXN0ZXJNRE5TTmFtZSBpbmV0X2FkZHIgZXJyb3IiKTsKLSAg
ICAgICAgbV9jb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpXZWJNRE5TUmVn
aXN0ZXI6OkZpbmlzaGVkUmVnaXN0ZXJpbmdNRE5TTmFtZSB7IHJlcXVlc3RJZGVudGlmaWVyLCBt
YWtlVW5leHBlY3RlZChXZWJDb3JlOjpNRE5TUmVnaXN0ZXJFcnJvcjo6QmFkUGFyYW1ldGVyKSB9
LCAwKTsKKyAgICAgICAgbV9jb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpX
ZWJNRE5TUmVnaXN0ZXI6OkZpbmlzaGVkUmVnaXN0ZXJpbmdNRE5TTmFtZSB7IHJlcXVlc3RJZGVu
dGlmaWVyLCBuYW1lLCBXZWJDb3JlOjpNRE5TUmVnaXN0ZXJFcnJvcjo6QmFkUGFyYW1ldGVyIH0s
IDApOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xNTYsNyArMTU3LDcgQEAgdm9pZCBO
ZXR3b3JrTUROU1JlZ2lzdGVyOjpyZWdpc3Rlck1ETlNOYW1lKE1ETlNSZWdpc3RlcklkZW50aWZp
ZXIgcmVxdWVzdElkZW50aWYKICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocGVuZGlu
Z1JlZ2lzdHJhdGlvblJlcXVlc3RDb3VudCkpOwogICAgIGlmIChlcnJvcikgewogICAgICAgICBN
RE5TX1JFTEVBU0VfTE9HKCJyZWdpc3Rlck1ETlNOYW1lIEROU1NlcnZpY2VSZWdpc3RlclJlY29y
ZCBlcnJvciAlZCIsIGVycm9yKTsKLSAgICAgICAgbV9jb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5z
ZW5kKE1lc3NhZ2VzOjpXZWJNRE5TUmVnaXN0ZXI6OkZpbmlzaGVkUmVnaXN0ZXJpbmdNRE5TTmFt
ZSB7IHJlcXVlc3RJZGVudGlmaWVyLCBtYWtlVW5leHBlY3RlZChXZWJDb3JlOjpNRE5TUmVnaXN0
ZXJFcnJvcjo6RE5TU0QpIH0sIDApOworICAgICAgICBtX2Nvbm5lY3Rpb24uY29ubmVjdGlvbigp
LnNlbmQoTWVzc2FnZXM6OldlYk1ETlNSZWdpc3Rlcjo6RmluaXNoZWRSZWdpc3RlcmluZ01ETlNO
YW1lIHsgcmVxdWVzdElkZW50aWZpZXIsIHBlbmRpbmdSZXF1ZXN0LT5uYW1lLCBXZWJDb3JlOjpN
RE5TUmVnaXN0ZXJFcnJvcjo6RE5TU0QgfSwgMCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAg
ICAgcGVuZGluZ1JlZ2lzdHJhdGlvblJlcXVlc3RzKCkuYWRkKHBlbmRpbmdSZWdpc3RyYXRpb25S
ZXF1ZXN0Q291bnQrKywgV1RGTW92ZShwZW5kaW5nUmVxdWVzdCkpOwpAQCAtMTcxLDcgKzE3Miw5
IEBAIHZvaWQgTmV0d29ya01ETlNSZWdpc3Rlcjo6dW5yZWdpc3Rlck1ETlNOYW1lcyhXZWJDb3Jl
OjpEb2N1bWVudElkZW50aWZpZXIpCiB2b2lkIE5ldHdvcmtNRE5TUmVnaXN0ZXI6OnJlZ2lzdGVy
TUROU05hbWUoTUROU1JlZ2lzdGVySWRlbnRpZmllciByZXF1ZXN0SWRlbnRpZmllciwgV2ViQ29y
ZTo6RG9jdW1lbnRJZGVudGlmaWVyIGRvY3VtZW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBp
cEFkZHJlc3MpCiB7CiAgICAgTUROU19SRUxFQVNFX0xPRygicmVnaXN0ZXJNRE5TTmFtZSBub3Qg
aW1wbGVtZW50ZWQiKTsKLSAgICBtX2Nvbm5lY3Rpb24uY29ubmVjdGlvbigpLnNlbmQoTWVzc2Fn
ZXM6OldlYk1ETlNSZWdpc3Rlcjo6RmluaXNoZWRSZWdpc3RlcmluZ01ETlNOYW1lIHsgcmVxdWVz
dElkZW50aWZpZXIsIG1ha2VVbmV4cGVjdGVkKFdlYkNvcmU6Ok1ETlNSZWdpc3RlckVycm9yOjpO
b3RJbXBsZW1lbnRlZCkgfSwgMCk7CisgICAgYXV0byBuYW1lID0gbWFrZVN0cmluZyhjcmVhdGVD
YW5vbmljYWxVVUlEU3RyaW5nKCksICIubG9jYWwiKTsKKworICAgIG1fY29ubmVjdGlvbi5jb25u
ZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6V2ViTUROU1JlZ2lzdGVyOjpGaW5pc2hlZFJlZ2lzdGVy
aW5nTUROU05hbWUgeyByZXF1ZXN0SWRlbnRpZmllciwgbmFtZSwgV2ViQ29yZTo6TUROU1JlZ2lz
dGVyRXJyb3I6Ok5vdEltcGxlbWVudGVkIH0sIDApOwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0Cmlu
ZGV4IDdkYmFjZDE4YzBjMjE4ZjI4ZDhjZDQ0MDUwMjc4ZTQ4OThkZjFjNWMuLjRlNWU1MTRkNjU2
Mzg2MjY1YjliMzc5NTc4NDgyNGVlMmU5ZjU2M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtNjM5LDYgKzYz
OSw3IEBAIFdlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRQcm92aWRlci5jcHAKIFdlYlByb2Nl
c3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uY3BwCiAKIFdlYlByb2Nlc3MvTmV0d29yay93ZWJy
dGMvTGliV2ViUlRDTmV0d29yay5jcHAKK1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2Vi
UlRDTmV0d29ya01hbmFnZXIuY3BwCiBXZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJU
Q1Byb3ZpZGVyLmNwcAogV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENSZXNvbHZl
ci5jcHAKIFdlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDU29ja2V0LmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOWU0
MTZlZjM3NDQ0ZTQyZWJlNjhjMGUxMDAyNGJjZWNmZmIyN2Y4OC4uMjcxNGZmYWVmYjM4MDU4NWQ3
NWY3NjUwYzQwYzA3Y2UzYjVkZGZjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zODU0LDYgKzM4NTQsOCBAQAogCQk0MUI3RUQ2RjIw
Njk2NTkwMDA4N0Q4NTMgLyogTmV0d29ya01ETlNSZWdpc3Rlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOZXR3b3JrTUROU1JlZ2lzdGVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFCN0VENzAyMDY5NjU5MDAwODdEODUzIC8qIE5ldHdvcmtN
RE5TUmVnaXN0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya01E
TlNSZWdpc3Rlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUI3RUQ3MTIwNjk2
NTkwMDA4N0Q4NTMgLyogTmV0d29ya01ETlNSZWdpc3Rlci5tZXNzYWdlcy5pbiAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBOZXR3b3JrTUROU1JlZ2lzdGVyLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk0MUMxNEJDMjI2REU2QTJGMDA2ODVCRjUgLyogTGliV2ViUlRD
TmV0d29ya01hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTGliV2ViUlRDTmV0d29ya01h
bmFnZXIuY3BwOyBwYXRoID0gTmV0d29yay93ZWJydGMvTGliV2ViUlRDTmV0d29ya01hbmFnZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUMxNEJDMzI2REU2QTJGMDA2ODVC
RjUgLyogTGliV2ViUlRDTmV0d29ya01hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTGliV2ViUlRD
TmV0d29ya01hbmFnZXIuaDsgcGF0aCA9IE5ldHdvcmsvd2VicnRjL0xpYldlYlJUQ05ldHdvcmtN
YW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQzNCODg1MjY0NDRBQUIw
MDRFRDRERSAvKiBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFn
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5h
bFVuaXRNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQzNCODg2MjY0
NDRBQUMwMDRFRDRERSAvKiBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5p
dE1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVu
ZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDFDM0I4ODcyNjQ0NEFEMzAwNEVENERFIC8qIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRl
cmVySW50ZXJuYWxVbml0SWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdElkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTg1MTgsNiArODUyMCw4IEBACiAJCQkJNDE2RjgwODkyNDVDN0ZGNTAw
QjY4RjAyIC8qIExpYldlYlJUQ05ldHdvcmsuY3BwICovLAogCQkJCTQxMUIyMjYyMUUzNzEyNDQw
MDRGNzM2MyAvKiBMaWJXZWJSVENOZXR3b3JrLmggKi8sCiAJCQkJNDE2RjgwODYyNDVCMzk3NDAw
QjY4RjAyIC8qIExpYldlYlJUQ05ldHdvcmsubWVzc2FnZXMuaW4gKi8sCisJCQkJNDFDMTRCQzIy
NkRFNkEyRjAwNjg1QkY1IC8qIExpYldlYlJUQ05ldHdvcmtNYW5hZ2VyLmNwcCAqLywKKwkJCQk0
MUMxNEJDMzI2REU2QTJGMDA2ODVCRjUgLyogTGliV2ViUlRDTmV0d29ya01hbmFnZXIuaCAqLywK
IAkJCQk0MTMwNzVBNzFERTg1RUU3MDAzOUVDNjkgLyogTGliV2ViUlRDUHJvdmlkZXIuY3BwICov
LAogCQkJCTQxMzA3NUE4MURFODVFRTcwMDM5RUM2OSAvKiBMaWJXZWJSVENQcm92aWRlci5oICov
LAogCQkJCTQxRkFGNUY3MUUzQzBCNDcwMDFBRTY3OCAvKiBMaWJXZWJSVENSZXNvbHZlci5jcHAg
Ki8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMv
TGliV2ViUlRDTmV0d29ya01hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvd2VicnRjL0xpYldlYlJUQ05ldHdvcmtNYW5hZ2VyLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MWI0
MTk5YzI2NTE3NGJkMTQyZjUxZTcwOTFlMmIwMjBjNjkzODY4Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ05ldHdvcmtN
YW5hZ2VyLmNwcApAQCAtMCwwICsxLDE1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJMaWJXZWJSVENOZXR3b3JrTWFuYWdlci5oIgorCisjaWYgVVNFKExJ
QldFQlJUQykKKworI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0Rv
Y3VtZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9MaWJXZWJSVENVdGlscy5oPgorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitMaWJXZWJSVENOZXR3b3Jr
TWFuYWdlciogTGliV2ViUlRDTmV0d29ya01hbmFnZXI6OmdldE9yQ3JlYXRlKFdlYkNvcmU6OkRv
Y3VtZW50SWRlbnRpZmllciBpZGVudGlmaWVyKQoreworICAgIGF1dG8qIGRvY3VtZW50ID0gRG9j
dW1lbnQ6OmFsbERvY3VtZW50c01hcCgpLmdldChpZGVudGlmaWVyKTsKKyAgICBpZiAoIWRvY3Vt
ZW50KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8qIG5ldHdvcmtNYW5hZ2Vy
ID0gc3RhdGljX2Nhc3Q8TGliV2ViUlRDTmV0d29ya01hbmFnZXIqPihkb2N1bWVudC0+cnRjTmV0
d29ya01hbmFnZXIoKSk7CisgICAgaWYgKCFuZXR3b3JrTWFuYWdlcikgeworICAgICAgICBhdXRv
IG5ld05ldHdvcmtNYW5hZ2VyID0gYWRvcHRSZWYoKm5ldyBMaWJXZWJSVENOZXR3b3JrTWFuYWdl
cihpZGVudGlmaWVyKSk7CisgICAgICAgIG5ldHdvcmtNYW5hZ2VyID0gbmV3TmV0d29ya01hbmFn
ZXIucHRyKCk7CisgICAgICAgIGRvY3VtZW50LT5zZXRSVENOZXR3b3JrTWFuYWdlcihXVEZNb3Zl
KG5ld05ldHdvcmtNYW5hZ2VyKSk7CisgICAgfQorCisgICAgcmV0dXJuIG5ldHdvcmtNYW5hZ2Vy
OworfQorCitMaWJXZWJSVENOZXR3b3JrTWFuYWdlcjo6TGliV2ViUlRDTmV0d29ya01hbmFnZXIo
V2ViQ29yZTo6RG9jdW1lbnRJZGVudGlmaWVyIGRvY3VtZW50SWRlbnRpZmllcikKKyAgICA6IG1f
ZG9jdW1lbnRJZGVudGlmaWVyKGRvY3VtZW50SWRlbnRpZmllcikKK3sKKyAgICBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5saWJXZWJSVENOZXR3b3JrKCkubW9uaXRvcigpLmFkZE9ic2VydmVyKCp0
aGlzKTsKK30KKworTGliV2ViUlRDTmV0d29ya01hbmFnZXI6On5MaWJXZWJSVENOZXR3b3JrTWFu
YWdlcigpCit7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkubGliV2ViUlRDTmV0d29yaygp
Lm1vbml0b3IoKS5yZW1vdmVPYnNlcnZlcigqdGhpcyk7Cit9CisKK3ZvaWQgTGliV2ViUlRDTmV0
d29ya01hbmFnZXI6OnVucmVnaXN0ZXJNRE5TTmFtZXMoKQoreworICAgIFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLmxpYldlYlJUQ05ldHdvcmsoKS5tZG5zUmVnaXN0ZXIoKS51bnJlZ2lzdGVyTURO
U05hbWVzKG1fZG9jdW1lbnRJZGVudGlmaWVyKTsKK30KKwordm9pZCBMaWJXZWJSVENOZXR3b3Jr
TWFuYWdlcjo6U3RhcnRVcGRhdGluZygpCit7CisgICAgY2FsbE9uTWFpblJ1bkxvb3AoW3RoaXMs
IHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykK
KyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBhdXRvJiBtb25pdG9yID0gV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkubGliV2ViUlRDTmV0d29yaygpLm1vbml0b3IoKTsKKyAgICAgICAgaWYg
KG1fcmVjZWl2ZWROZXR3b3JrTGlzdCkgeworICAgICAgICAgICAgV2ViQ29yZTo6TGliV2ViUlRD
UHJvdmlkZXI6OmNhbGxPbldlYlJUQ05ldHdvcmtUaHJlYWQoW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKV0geworICAgICAgICAgICAgICAgIFNpZ25hbE5ldHdvcmtzQ2hhbmdl
ZCgpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0gZWxzZSBpZiAobW9uaXRvci5kaWRSZWNl
aXZlTmV0d29ya0xpc3QoKSkKKyAgICAgICAgICAgIG5ldHdvcmtzQ2hhbmdlZChtb25pdG9yLm5l
dHdvcmtMaXN0KCkgLCBtb25pdG9yLmlwdjQoKSwgbW9uaXRvci5pcHY2KCkpOworICAgICAgICBt
b25pdG9yLnN0YXJ0VXBkYXRpbmcoKTsKKyAgICB9KTsKK30KKwordm9pZCBMaWJXZWJSVENOZXR3
b3JrTWFuYWdlcjo6U3RvcFVwZGF0aW5nKCkKK3sKKyAgICBjYWxsT25NYWluUnVuTG9vcChbd2Vh
a1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKV0geworICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5saWJXZWJS
VENOZXR3b3JrKCkubW9uaXRvcigpLnN0b3BVcGRhdGluZygpOworICAgIH0pOworfQorCit3ZWJy
dGM6Ok1kbnNSZXNwb25kZXJJbnRlcmZhY2UqIExpYldlYlJUQ05ldHdvcmtNYW5hZ2VyOjpHZXRN
ZG5zUmVzcG9uZGVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV91c2VNRE5TQ2FuZGlkYXRlcyA/
IGNvbnN0X2Nhc3Q8TGliV2ViUlRDTmV0d29ya01hbmFnZXIqPih0aGlzKSA6IG51bGxwdHI7Cit9
CisKK3ZvaWQgTGliV2ViUlRDTmV0d29ya01hbmFnZXI6Om5ldHdvcmtzQ2hhbmdlZChjb25zdCBW
ZWN0b3I8UlRDTmV0d29yaz4mIG5ldHdvcmtzLCBjb25zdCBSVENOZXR3b3JrOjpJUEFkZHJlc3Mm
IGlwdjQsIGNvbnN0IFJUQ05ldHdvcms6OklQQWRkcmVzcyYgaXB2NikKK3sKKyAgICBib29sIGZv
cmNlU2lnbmFsaW5nID0gIW1fcmVjZWl2ZWROZXR3b3JrTGlzdDsKKyAgICBtX3JlY2VpdmVkTmV0
d29ya0xpc3QgPSB0cnVlOworCisgICAgV2ViQ29yZTo6TGliV2ViUlRDUHJvdmlkZXI6OmNhbGxP
bldlYlJUQ05ldHdvcmtUaHJlYWQoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KSwgbmV0d29ya3MsIGlwdjQsIGlwdjYsIGZvcmNlU2lnbmFsaW5nXSB7CisgICAgICAgIHN0ZDo6
dmVjdG9yPHJ0Yzo6TmV0d29yayo+IG5ldHdvcmtMaXN0KG5ldHdvcmtzLnNpemUoKSk7CisgICAg
ICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBuZXR3b3Jrcy5zaXplKCk7ICsraW5k
ZXgpCisgICAgICAgICAgICBuZXR3b3JrTGlzdFtpbmRleF0gPSBuZXcgcnRjOjpOZXR3b3JrKG5l
dHdvcmtzW2luZGV4XS52YWx1ZSgpKTsKKworICAgICAgICBib29sIGhhc0NoYW5nZWQ7CisgICAg
ICAgIHNldF9kZWZhdWx0X2xvY2FsX2FkZHJlc3NlcyhpcHY0LnZhbHVlLCBpcHY2LnZhbHVlKTsK
KyAgICAgICAgTWVyZ2VOZXR3b3JrTGlzdChuZXR3b3JrTGlzdCwgJmhhc0NoYW5nZWQpOworICAg
ICAgICBpZiAoaGFzQ2hhbmdlZCB8fCBmb3JjZVNpZ25hbGluZykKKyAgICAgICAgICAgIFNpZ25h
bE5ldHdvcmtzQ2hhbmdlZCgpOworICAgIH0pOworCit9CisKK3ZvaWQgTGliV2ViUlRDTmV0d29y
a01hbmFnZXI6Om5ldHdvcmtQcm9jZXNzQ3Jhc2hlZCgpCit7CisgICAgbV9yZWNlaXZlZE5ldHdv
cmtMaXN0ID0gZmFsc2U7CisgICAgaWYgKCFXZWJDb3JlOjpMaWJXZWJSVENQcm92aWRlcjo6aGFz
V2ViUlRDVGhyZWFkcygpKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBJbiBjYXNlIHdlIGhh
dmUgY2xpZW50cyB3YWl0aW5nIGZvciBuZXR3b3Jrc0NoYW5nZWQsIHdlIGNhbGwgU2lnbmFsTmV0
d29ya3NDaGFuZ2VkIHRvIG1ha2Ugc3VyZSB0aGV5IGRvIG5vdCB3YWl0IGZvciBub3RoaW5nLgor
ICAgIFdlYkNvcmU6OkxpYldlYlJUQ1Byb3ZpZGVyOjpjYWxsT25XZWJSVENOZXR3b3JrVGhyZWFk
KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKKyAgICAgICAgU2lnbmFs
TmV0d29ya3NDaGFuZ2VkKCk7CisgICAgfSk7Cit9CisKK3ZvaWQgTGliV2ViUlRDTmV0d29ya01h
bmFnZXI6OkNyZWF0ZU5hbWVGb3JBZGRyZXNzKGNvbnN0IHJ0Yzo6SVBBZGRyZXNzJiBhZGRyZXNz
LCBOYW1lQ3JlYXRlZENhbGxiYWNrIGNhbGxiYWNrKQoreworICAgIGNhbGxPbk1haW5SdW5Mb29w
KFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBhZGRyZXNzLCBjYWxsYmFjayA9
IFdURk1vdmUoY2FsbGJhY2spXSgpIG11dGFibGUgeworICAgICAgICBpZiAoIXdlYWtUaGlzKQor
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmxp
YldlYlJUQ05ldHdvcmsoKS5tZG5zUmVnaXN0ZXIoKS5yZWdpc3Rlck1ETlNOYW1lKG1fZG9jdW1l
bnRJZGVudGlmaWVyLCBmcm9tU3RkU3RyaW5nKGFkZHJlc3MuVG9TdHJpbmcoKSksIFthZGRyZXNz
LCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShhdXRvIG5hbWUsIGF1dG8gZXJyb3IpIG11
dGFibGUgeworICAgICAgICAgICAgV2ViQ29yZTo6TGliV2ViUlRDUHJvdmlkZXI6OmNhbGxPbldl
YlJUQ05ldHdvcmtUaHJlYWQoW2FkZHJlc3MsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayks
IG5hbWUgPSBXVEZNb3ZlKG5hbWUpLmlzb2xhdGVkQ29weSgpLCBlcnJvcl0geworICAgICAgICAg
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGKGVycm9yLCBXZWJSVEMsICJNRE5TIHJlZ2lzdHJh
dGlvbiBvZiBhIGhvc3QgY2FuZGlkYXRlIGZhaWxlZCB3aXRoIGVycm9yICVkIiwgKmVycm9yKTsK
KyAgICAgICAgICAgICAgICAvLyBJbiBjYXNlIG9mIGVycm9yLCB3ZSBwcm92aWRlIHRoZSBuYW1l
IHRvIGxldCBnYXRoZXJpbmcgY29tcGxldGUuCisgICAgICAgICAgICAgICAgY2FsbGJhY2soYWRk
cmVzcywgbmFtZS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsK
KyAgICB9KTsKK30KKwordm9pZCBMaWJXZWJSVENOZXR3b3JrTWFuYWdlcjo6UmVtb3ZlTmFtZUZv
ckFkZHJlc3MoY29uc3QgcnRjOjpJUEFkZHJlc3MmLCBOYW1lUmVtb3ZlZENhbGxiYWNrKQorewor
ICAgIC8vIExpYldlYlJUQyBiYWNrZW5kIGRlZmluZXMgdGhpcyBtZXRob2QgYnV0IGRvZXMgbm90
IGNhbGwgaXQuCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdAorCisjZW5kaWYgLy8gVVNFKExJQldFQlJUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENOZXR3b3JrTWFuYWdlci5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ05ldHdv
cmtNYW5hZ2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2EyMGU0ZWNmODYyNGFkN2Y2MjY5NWUzNWJhOGE1N2I4
N2MyZjA2OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL3dlYnJ0Yy9MaWJXZWJSVENOZXR3b3JrTWFuYWdlci5oCkBAIC0wLDAgKzEsNjkgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIFVTRShMSUJXRUJSVEMpCisKKyNpbmNsdWRl
ICJXZWJSVENNb25pdG9yLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9MaWJXZWJSVENQcm92aWRlci5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvUlRDTmV0d29ya01hbmFnZXIuaD4KKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK2NsYXNzIExpYldlYlJUQ05ldHdvcmtNYW5hZ2VyIGZpbmFsIDogcHVibGljIFdl
YkNvcmU6OlJUQ05ldHdvcmtNYW5hZ2VyLCBwdWJsaWMgcnRjOjpOZXR3b3JrTWFuYWdlckJhc2Us
IHB1YmxpYyB3ZWJydGM6Ok1kbnNSZXNwb25kZXJJbnRlcmZhY2UsIHB1YmxpYyBXZWJSVENNb25p
dG9yOjpPYnNlcnZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6Cisg
ICAgc3RhdGljIExpYldlYlJUQ05ldHdvcmtNYW5hZ2VyKiBnZXRPckNyZWF0ZShXZWJDb3JlOjpE
b2N1bWVudElkZW50aWZpZXIpOworICAgIH5MaWJXZWJSVENOZXR3b3JrTWFuYWdlcigpOworCitw
cml2YXRlOgorICAgIGV4cGxpY2l0IExpYldlYlJUQ05ldHdvcmtNYW5hZ2VyKFdlYkNvcmU6OkRv
Y3VtZW50SWRlbnRpZmllcik7CisKKyAgICAvLyBXZWJDb3JlOjpSVENOZXR3b3JrTWFuYWdlcgor
ICAgIHZvaWQgc2V0SUNFQ2FuZGlkYXRlRmlsdGVyaW5nKGJvb2wgZG9GaWx0ZXJpbmcpIGZpbmFs
IHsgbV91c2VNRE5TQ2FuZGlkYXRlcyA9IGRvRmlsdGVyaW5nOyB9CisgICAgdm9pZCB1bnJlZ2lz
dGVyTUROU05hbWVzKCkgZmluYWw7CisKKyAgICAvLyB3ZWJydGM6Ok5ldHdvcmtNYW5hZ2VyQmFz
ZQorICAgIHZvaWQgU3RhcnRVcGRhdGluZygpIGZpbmFsOworICAgIHZvaWQgU3RvcFVwZGF0aW5n
KCkgZmluYWw7CisgICAgd2VicnRjOjpNZG5zUmVzcG9uZGVySW50ZXJmYWNlKiBHZXRNZG5zUmVz
cG9uZGVyKCkgY29uc3QgZmluYWw7CisKKyAgICAvLyB3ZWJydGM6Ok1kbnNSZXNwb25kZXJJbnRl
cmZhY2UKKyAgICB2b2lkIENyZWF0ZU5hbWVGb3JBZGRyZXNzKGNvbnN0IHJ0Yzo6SVBBZGRyZXNz
JiwgTmFtZUNyZWF0ZWRDYWxsYmFjayk7CisgICAgdm9pZCBSZW1vdmVOYW1lRm9yQWRkcmVzcyhj
b25zdCBydGM6OklQQWRkcmVzcyYsIE5hbWVSZW1vdmVkQ2FsbGJhY2spOworCisgICAgLy8gV2Vi
UlRDTW9uaXRvcjo6T2JzZXJ2ZXIKKyAgICB2b2lkIG5ldHdvcmtzQ2hhbmdlZChjb25zdCBWZWN0
b3I8UlRDTmV0d29yaz4mLCBjb25zdCBSVENOZXR3b3JrOjpJUEFkZHJlc3MmLCBjb25zdCBSVENO
ZXR3b3JrOjpJUEFkZHJlc3MmKSBmaW5hbDsKKyAgICB2b2lkIG5ldHdvcmtQcm9jZXNzQ3Jhc2hl
ZCgpIGZpbmFsOworCisgICAgRG9jdW1lbnRJZGVudGlmaWVyIG1fZG9jdW1lbnRJZGVudGlmaWVy
OworICAgIGJvb2wgbV91c2VNRE5TQ2FuZGlkYXRlcyB7IHRydWUgfTsKKyAgICBib29sIG1fcmVj
ZWl2ZWROZXR3b3JrTGlzdCB7IGZhbHNlIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
KworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93
ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvd2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcAppbmRleCA5NjhjOWYzMDRiNjU0ODA5
Zjk5MjYyNTZjMTAwNTUwN2M5NzEyZjU1Li5mOWM0YTkwZDgyMWRhZjdhOGFiMzlhZmRkMzE2NDIw
NTg1MTYzYjc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93
ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHAKQEAgLTMzLDYgKzMzLDcgQEAK
ICNlbmRpZgogCiAjaW5jbHVkZSAiTGliV2ViUlRDTmV0d29yay5oIgorI2luY2x1ZGUgIkxpYldl
YlJUQ05ldHdvcmtNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5h
Z2VyLmgiCiAjaW5jbHVkZSAiV2ViUGFnZS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKQEAg
LTU0LDcgKzU1LDcgQEAgcHJpdmF0ZToKICAgICB9CiB9OwogCi1ydGM6OnNjb3BlZF9yZWZwdHI8
d2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZT4gTGliV2ViUlRDUHJvdmlkZXI6OmNyZWF0
ZVBlZXJDb25uZWN0aW9uKHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25PYnNlcnZlciYgb2JzZXJ2ZXIs
IHJ0Yzo6UGFja2V0U29ja2V0RmFjdG9yeSogc29ja2V0RmFjdG9yeSwgd2VicnRjOjpQZWVyQ29u
bmVjdGlvbkludGVyZmFjZTo6UlRDQ29uZmlndXJhdGlvbiYmIGNvbmZpZ3VyYXRpb24pCitydGM6
OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZT4gTGliV2ViUlRD
UHJvdmlkZXI6OmNyZWF0ZVBlZXJDb25uZWN0aW9uKERvY3VtZW50SWRlbnRpZmllciBpZGVudGlm
aWVyLCB3ZWJydGM6OlBlZXJDb25uZWN0aW9uT2JzZXJ2ZXImIG9ic2VydmVyLCBydGM6OlBhY2tl
dFNvY2tldEZhY3RvcnkqIHNvY2tldEZhY3RvcnksIHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRl
cmZhY2U6OlJUQ0NvbmZpZ3VyYXRpb24mJiBjb25maWd1cmF0aW9uKQogewogI2lmIEVOQUJMRShH
UFVfUFJPQ0VTUykgJiYgUExBVEZPUk0oQ09DT0EpICYmICFQTEFURk9STShNQUNDQVRBTFlTVCkK
ICAgICBpZiAoIW1fZGlkSW5pdGlhbGl6ZUNhbGxiYWNrKSB7CkBAIC02NywyMiArNjgsMTcgQEAg
cnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U+IExpYldl
YlJUQ1Byb3ZpZGVyOjpjcmVhdGVQZWUKIAogICAgIGF1dG8mIG5ldHdvcmtNb25pdG9yID0gV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkubGliV2ViUlRDTmV0d29yaygpLm1vbml0b3IoKTsKICAgICBu
ZXR3b3JrTW9uaXRvci5zZXRFbnVtZXJhdGluZ0FsbE5ldHdvcmtJbnRlcmZhY2VzRW5hYmxlZChp
c0VudW1lcmF0aW5nQWxsTmV0d29ya0ludGVyZmFjZXNFbmFibGVkKCkpOwotICAgIHJldHVybiBX
ZWJDb3JlOjpMaWJXZWJSVENQcm92aWRlcjo6Y3JlYXRlUGVlckNvbm5lY3Rpb24ob2JzZXJ2ZXIs
IG5ldHdvcmtNb25pdG9yLCAqc29ja2V0RmFjdG9yeSwgV1RGTW92ZShjb25maWd1cmF0aW9uKSwg
bWFrZVVuaXF1ZTxBc3luY1Jlc29sdmVyRmFjdG9yeT4oKSk7Ci19CiAKLXZvaWQgTGliV2ViUlRD
UHJvdmlkZXI6OmRpc2FibGVOb25Mb2NhbGhvc3RDb25uZWN0aW9ucygpCi17Ci0gICAgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkubGliV2ViUlRDTmV0d29yaygpLmRpc2FibGVOb25Mb2NhbGhvc3RD
b25uZWN0aW9ucygpOwotfQorICAgIGF1dG8qIG5ldHdvcmtNYW5hZ2VyID0gTGliV2ViUlRDTmV0
d29ya01hbmFnZXI6OmdldE9yQ3JlYXRlKGlkZW50aWZpZXIpOworICAgIGlmICghbmV0d29ya01h
bmFnZXIpCisgICAgICAgIHJldHVybiBudWxscHRyOwogCi12b2lkIExpYldlYlJUQ1Byb3ZpZGVy
Ojp1bnJlZ2lzdGVyTUROU05hbWVzKERvY3VtZW50SWRlbnRpZmllciBkb2N1bWVudElkZW50aWZp
ZXIpCi17Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkubGliV2ViUlRDTmV0d29yaygpLm1k
bnNSZWdpc3RlcigpLnVucmVnaXN0ZXJNRE5TTmFtZXMoZG9jdW1lbnRJZGVudGlmaWVyKTsKKyAg
ICByZXR1cm4gV2ViQ29yZTo6TGliV2ViUlRDUHJvdmlkZXI6OmNyZWF0ZVBlZXJDb25uZWN0aW9u
KG9ic2VydmVyLCAqbmV0d29ya01hbmFnZXIsICpzb2NrZXRGYWN0b3J5LCBXVEZNb3ZlKGNvbmZp
Z3VyYXRpb24pLCBtYWtlVW5pcXVlPEFzeW5jUmVzb2x2ZXJGYWN0b3J5PigpKTsKIH0KIAotdm9p
ZCBMaWJXZWJSVENQcm92aWRlcjo6cmVnaXN0ZXJNRE5TTmFtZShEb2N1bWVudElkZW50aWZpZXIg
ZG9jdW1lbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGlwQWRkcmVzcywgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChNRE5TTmFtZU9yRXJyb3ImJik+JiYgY2FsbGJhY2spCit2b2lkIExpYldlYlJU
Q1Byb3ZpZGVyOjpkaXNhYmxlTm9uTG9jYWxob3N0Q29ubmVjdGlvbnMoKQogewotICAgIFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLmxpYldlYlJUQ05ldHdvcmsoKS5tZG5zUmVnaXN0ZXIoKS5yZWdp
c3Rlck1ETlNOYW1lKGRvY3VtZW50SWRlbnRpZmllciwgaXBBZGRyZXNzLCBXVEZNb3ZlKGNhbGxi
YWNrKSk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkubGliV2ViUlRDTmV0d29yaygpLmRp
c2FibGVOb25Mb2NhbGhvc3RDb25uZWN0aW9ucygpOwogfQogCiBjbGFzcyBSVENTb2NrZXRGYWN0
b3J5IGZpbmFsIDogcHVibGljIExpYldlYlJUQ1Byb3ZpZGVyOjpTdXNwZW5kYWJsZVNvY2tldEZh
Y3RvcnkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2Vi
cnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay93ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuaAppbmRleCA3MmFkM2E0MjlmZWZiZmExZDRjYWVm
NWMyYmY3Yzk1NzMwMWUxMjAxLi44ODNhZGZjYWM5MzBjMDZkOTU4ZDIzOThmMjcwYzc1ZjFjNjQ0
ZTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMv
TGliV2ViUlRDUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay93ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuaApAQCAtNTQsMTAgKzU0LDggQEAgcHVibGljOgog
cHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U3VzcGVuZGFibGVTb2NrZXRGYWN0b3J5PiBj
cmVhdGVTb2NrZXRGYWN0b3J5KFN0cmluZyYmIC8qIHVzZXJBZ2VudCAqLywgYm9vbCAvKiBpc0Zp
cnN0UGFydHkgKi8sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYpIGZpbmFsOwogCi0gICAg
cnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U+IGNyZWF0
ZVBlZXJDb25uZWN0aW9uKHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25PYnNlcnZlciYsIHJ0Yzo6UGFj
a2V0U29ja2V0RmFjdG9yeSosIHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OlJUQ0Nv
bmZpZ3VyYXRpb24mJikgZmluYWw7CisgICAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6UGVl
ckNvbm5lY3Rpb25JbnRlcmZhY2U+IGNyZWF0ZVBlZXJDb25uZWN0aW9uKFdlYkNvcmU6OkRvY3Vt
ZW50SWRlbnRpZmllciwgd2VicnRjOjpQZWVyQ29ubmVjdGlvbk9ic2VydmVyJiwgcnRjOjpQYWNr
ZXRTb2NrZXRGYWN0b3J5Kiwgd2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6UlRDQ29u
ZmlndXJhdGlvbiYmKSBmaW5hbDsKIAotICAgIHZvaWQgdW5yZWdpc3Rlck1ETlNOYW1lcyhXZWJD
b3JlOjpEb2N1bWVudElkZW50aWZpZXIpIGZpbmFsOwotICAgIHZvaWQgcmVnaXN0ZXJNRE5TTmFt
ZShXZWJDb3JlOjpEb2N1bWVudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgaXBBZGRyZXNzLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKE1ETlNOYW1lT3JFcnJvciYmKT4mJikgZmluYWw7CiAgICAg
dm9pZCBkaXNhYmxlTm9uTG9jYWxob3N0Q29ubmVjdGlvbnMoKSBmaW5hbDsKICAgICB2b2lkIHN0
YXJ0ZWROZXR3b3JrVGhyZWFkKCkgZmluYWw7CiAgICAgUmVmUHRyPFdlYkNvcmU6OlJUQ0RhdGFD
aGFubmVsUmVtb3RlSGFuZGxlckNvbm5lY3Rpb24+IGNyZWF0ZVJUQ0RhdGFDaGFubmVsUmVtb3Rl
SGFuZGxlckNvbm5lY3Rpb24oKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJNRE5TUmVnaXN0ZXIuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1dlYk1ETlNSZWdpc3Rlci5jcHAKaW5kZXggNTE1
OTBmOWFjY2U2MjQ0MDY4YjE0N2NlNmE5YzdjMTgyNTc1Nzc2MS4uNzYwMjA3ZWE1OWJjYTI1NDUy
MmY1NmM1OWE1MjQ1ZTU5NWE4ZGUyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvd2VicnRjL1dlYk1ETlNSZWdpc3Rlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1dlYk1ETlNSZWdpc3Rlci5jcHAKQEAgLTM2LDIy
ICszNiwyMiBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IAotdm9pZCBXZWJNRE5TUmVnaXN0ZXI6OmZpbmlzaGVkUmVnaXN0ZXJpbmdNRE5TTmFtZShNRE5T
UmVnaXN0ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIExpYldlYlJUQ1Byb3ZpZGVyOjpNRE5TTmFt
ZU9yRXJyb3ImJiByZXN1bHQpCit2b2lkIFdlYk1ETlNSZWdpc3Rlcjo6ZmluaXNoZWRSZWdpc3Rl
cmluZ01ETlNOYW1lKE1ETlNSZWdpc3RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgU3RyaW5nJiYg
bmFtZSwgc3RkOjpvcHRpb25hbDxNRE5TUmVnaXN0ZXJFcnJvcj4gZXJyb3IpCiB7CiAgICAgYXV0
byBwZW5kaW5nUmVnaXN0cmF0aW9uID0gbV9wZW5kaW5nUmVnaXN0cmF0aW9ucy50YWtlKGlkZW50
aWZpZXIpOwogICAgIGlmICghcGVuZGluZ1JlZ2lzdHJhdGlvbi5jYWxsYmFjaykKICAgICAgICAg
cmV0dXJuOwogCi0gICAgaWYgKHJlc3VsdC5oYXNfdmFsdWUoKSkgeworICAgIGlmICghZXJyb3Ip
IHsKICAgICAgICAgYXV0byBpdGVyYXRvciA9IG1fcmVnaXN0ZXJpbmdEb2N1bWVudHMuZmluZChw
ZW5kaW5nUmVnaXN0cmF0aW9uLmRvY3VtZW50SWRlbnRpZmllcik7CiAgICAgICAgIGlmIChpdGVy
YXRvciA9PSBtX3JlZ2lzdGVyaW5nRG9jdW1lbnRzLmVuZCgpKSB7Ci0gICAgICAgICAgICBwZW5k
aW5nUmVnaXN0cmF0aW9uLmNhbGxiYWNrKG1ha2VVbmV4cGVjdGVkKFdlYkNvcmU6Ok1ETlNSZWdp
c3RlckVycm9yOjpETlNTRCkpOworICAgICAgICAgICAgcGVuZGluZ1JlZ2lzdHJhdGlvbi5jYWxs
YmFjayhuYW1lLCBXZWJDb3JlOjpNRE5TUmVnaXN0ZXJFcnJvcjo6RE5TU0QpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIGl0ZXJhdG9yLT52YWx1ZS5hZGQocGVuZGlu
Z1JlZ2lzdHJhdGlvbi5pcEFkZHJlc3MsIHJlc3VsdC52YWx1ZSgpKTsKKyAgICAgICAgaXRlcmF0
b3ItPnZhbHVlLmFkZChwZW5kaW5nUmVnaXN0cmF0aW9uLmlwQWRkcmVzcywgbmFtZSk7CiAgICAg
fQogCi0gICAgcGVuZGluZ1JlZ2lzdHJhdGlvbi5jYWxsYmFjayhXVEZNb3ZlKHJlc3VsdCkpOwor
ICAgIHBlbmRpbmdSZWdpc3RyYXRpb24uY2FsbGJhY2sobmFtZSwgZXJyb3IpOwogfQogCiB2b2lk
IFdlYk1ETlNSZWdpc3Rlcjo6dW5yZWdpc3Rlck1ETlNOYW1lcyhEb2N1bWVudElkZW50aWZpZXIg
aWRlbnRpZmllcikKQEAgLTYzLDcgKzYzLDcgQEAgdm9pZCBXZWJNRE5TUmVnaXN0ZXI6OnVucmVn
aXN0ZXJNRE5TTmFtZXMoRG9jdW1lbnRJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgY29ubmVj
dGlvbi5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrTUROU1JlZ2lzdGVyOjpVbnJlZ2lzdGVyTUROU05h
bWVzIHsgaWRlbnRpZmllciB9LCAwKTsKIH0KIAotdm9pZCBXZWJNRE5TUmVnaXN0ZXI6OnJlZ2lz
dGVyTUROU05hbWUoRG9jdW1lbnRJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
aXBBZGRyZXNzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKExpYldlYlJUQ1Byb3ZpZGVyOjpNRE5T
TmFtZU9yRXJyb3ImJik+JiYgY2FsbGJhY2spCit2b2lkIFdlYk1ETlNSZWdpc3Rlcjo6cmVnaXN0
ZXJNRE5TTmFtZShEb2N1bWVudElkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBp
cEFkZHJlc3MsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJiwgc3RkOjpvcHRp
b25hbDxNRE5TUmVnaXN0ZXJFcnJvcj4pPiYmIGNhbGxiYWNrKQogewogICAgIGF1dG8mIG1hcCA9
IG1fcmVnaXN0ZXJpbmdEb2N1bWVudHMuZW5zdXJlKGlkZW50aWZpZXIsIFtdIHsKICAgICAgICAg
cmV0dXJuIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IHsgfTsKQEAgLTcxLDE2ICs3MSwxNyBAQCB2
b2lkIFdlYk1ETlNSZWdpc3Rlcjo6cmVnaXN0ZXJNRE5TTmFtZShEb2N1bWVudElkZW50aWZpZXIg
aWRlbnRpZmllciwgY29uc3QgU3RyaQogCiAgICAgYXV0byBpdGVyYXRvciA9IG1hcC5maW5kKGlw
QWRkcmVzcyk7CiAgICAgaWYgKGl0ZXJhdG9yICE9IG1hcC5lbmQoKSkgewotICAgICAgICBjYWxs
YmFjayhpdGVyYXRvci0+dmFsdWUpOworICAgICAgICBjYWxsYmFjayhpdGVyYXRvci0+dmFsdWUs
IHsgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBhdXRvIHJlcXVlc3RJZGVudGlm
aWVyID0gTUROU1JlZ2lzdGVySWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKICAgICBtX3BlbmRpbmdS
ZWdpc3RyYXRpb25zLmFkZChyZXF1ZXN0SWRlbnRpZmllciwgUGVuZGluZ1JlZ2lzdHJhdGlvbiB7
IFdURk1vdmUoY2FsbGJhY2spLCBpZGVudGlmaWVyLCBpcEFkZHJlc3MgfSk7CiAKKyAgICAvLyBG
SVhNRTogVXNlIGFzeW5jIHJlcGx5LgogICAgIGF1dG8mIGNvbm5lY3Rpb24gPSBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9u
KCk7CiAgICAgaWYgKCFjb25uZWN0aW9uLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtNRE5TUmVnaXN0
ZXI6OlJlZ2lzdGVyTUROU05hbWUgeyByZXF1ZXN0SWRlbnRpZmllciwgaWRlbnRpZmllciwgaXBB
ZGRyZXNzIH0sIDApKQotICAgICAgICBmaW5pc2hlZFJlZ2lzdGVyaW5nTUROU05hbWUocmVxdWVz
dElkZW50aWZpZXIsIG1ha2VVbmV4cGVjdGVkKE1ETlNSZWdpc3RlckVycm9yOjpJbnRlcm5hbCkp
OworICAgICAgICBmaW5pc2hlZFJlZ2lzdGVyaW5nTUROU05hbWUocmVxdWVzdElkZW50aWZpZXIs
IHsgfSwgTUROU1JlZ2lzdGVyRXJyb3I6OkludGVybmFsKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJy
dGMvV2ViTUROU1JlZ2lzdGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93
ZWJydGMvV2ViTUROU1JlZ2lzdGVyLmgKaW5kZXggMGMwZjYxMzNhZjQ2OGM5ZWJiOGM2N2EyYWU0
ZThjOWE3MzNlZTZhZC4uMmMwZmYwZTQ2NjUxMWY5NzhmYjgwOTI3MjBhZjA3M2RiZjUzOGZiZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1dlYk1E
TlNSZWdpc3Rlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0
Yy9XZWJNRE5TUmVnaXN0ZXIuaApAQCAtNDYsMTUgKzQ2LDE1IEBAIHB1YmxpYzoKICAgICBXZWJN
RE5TUmVnaXN0ZXIoKSA9IGRlZmF1bHQ7CiAKICAgICB2b2lkIHVucmVnaXN0ZXJNRE5TTmFtZXMo
V2ViQ29yZTo6RG9jdW1lbnRJZGVudGlmaWVyKTsKLSAgICB2b2lkIHJlZ2lzdGVyTUROU05hbWUo
V2ViQ29yZTo6RG9jdW1lbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGlwQWRkcmVzcywgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpMaWJXZWJSVENQcm92aWRlcjo6TUROU05hbWVP
ckVycm9yJiYpPiYmKTsKKyAgICB2b2lkIHJlZ2lzdGVyTUROU05hbWUoV2ViQ29yZTo6RG9jdW1l
bnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGlwQWRkcmVzcywgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBTdHJpbmcmLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Ok1ETlNSZWdpc3RlckVy
cm9yPik+JiYpOwogCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
LCBJUEM6OkRlY29kZXImKTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIGZpbmlzaGVkUmVnaXN0ZXJp
bmdNRE5TTmFtZShNRE5TUmVnaXN0ZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpMaWJXZWJSVENQcm92
aWRlcjo6TUROU05hbWVPckVycm9yJiYpOworICAgIHZvaWQgZmluaXNoZWRSZWdpc3RlcmluZ01E
TlNOYW1lKE1ETlNSZWdpc3RlcklkZW50aWZpZXIsIFN0cmluZyYmLCBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6Ok1ETlNSZWdpc3RlckVycm9yPik7CiAKICAgICBzdHJ1Y3QgUGVuZGluZ1JlZ2lzdHJh
dGlvbiB7Ci0gICAgICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6TGliV2ViUlRD
UHJvdmlkZXI6Ok1ETlNOYW1lT3JFcnJvciYmKT4gY2FsbGJhY2s7CisgICAgICAgIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpNRE5T
UmVnaXN0ZXJFcnJvcj4pPiBjYWxsYmFjazsKICAgICAgICAgV2ViQ29yZTo6RG9jdW1lbnRJZGVu
dGlmaWVyIGRvY3VtZW50SWRlbnRpZmllcjsKICAgICAgICAgU3RyaW5nIGlwQWRkcmVzczsKICAg
ICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRj
L1dlYk1ETlNSZWdpc3Rlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL3dlYnJ0Yy9XZWJNRE5TUmVnaXN0ZXIubWVzc2FnZXMuaW4KaW5kZXggYWIxMmExZTAx
OTI2ZDZhZmNiNGMyNDc4ZWQ1M2Y1YzM2MmE4OGI5Yi4uZjFlYTVjNzMwNmQyYTBjNmRlOWYxYjgx
MjA3NjNlOWZkOTMxZGE1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvd2VicnRjL1dlYk1ETlNSZWdpc3Rlci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvV2ViTUROU1JlZ2lzdGVyLm1lc3NhZ2VzLmlu
CkBAIC0xLDQgKzEsNCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDcgKzIz
LDcgQEAKICNpZiBFTkFCTEUoV0VCX1JUQykKIAogbWVzc2FnZXMgLT4gV2ViTUROU1JlZ2lzdGVy
IE5vdFJlZkNvdW50ZWQgewotICAgIHZvaWQgRmluaXNoZWRSZWdpc3RlcmluZ01ETlNOYW1lKFdl
YktpdDo6TUROU1JlZ2lzdGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJDb3JlOjpMaWJXZWJS
VENQcm92aWRlcjo6TUROU05hbWVPckVycm9yIHJlc3VsdCkKKyAgICB2b2lkIEZpbmlzaGVkUmVn
aXN0ZXJpbmdNRE5TTmFtZShXZWJLaXQ6Ok1ETlNSZWdpc3RlcklkZW50aWZpZXIgaWRlbnRpZmll
ciwgU3RyaW5nIG1kbnNOYW1lLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Ok1ETlNSZWdpc3RlckVy
cm9yPiBlcnJvcikKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShXRUJfUlRDKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1dlYlJUQ01vbml0b3IuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1dlYlJUQ01vbml0b3Iu
Y3BwCmluZGV4IDBmOWRhZDJkMWQyOWQwYjMwNzlkMzg3MWI3ZTE0NTQxNTI5MDQ5MzYuLmQwY2I5
OGJlODgwYmI2MTNmZGEyMzE1MDJlNjcwMmMwNGFmMjAyMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJSVENNb25pdG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvV2ViUlRDTW9uaXRvci5jcHAK
QEAgLTMzLDggKzMzLDYgQEAKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCIK
ICNpbmNsdWRlICJOZXR3b3JrUlRDTW9uaXRvck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJv
Y2Vzcy5oIgotI2luY2x1ZGUgPFdlYkNvcmUvTGliV2ViUlRDTWFjcm9zLmg+Ci0jaW5jbHVkZSA8
d2VicnRjL3J0Y19iYXNlL25ldF9oZWxwZXJzLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQu
aD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC01Myw2NyArNTEsNDMgQEAgdm9pZCBXZWJSVENN
b25pdG9yOjpzZXRFbnVtZXJhdGluZ0FsbE5ldHdvcmtJbnRlcmZhY2VzRW5hYmxlZChib29sIGVu
YWJsZWQpCiAgICAgbV9lbmFibGVFbnVtZXJhdGluZ0FsbE5ldHdvcmtJbnRlcmZhY2VzID0gZW5h
YmxlZDsKIH0KIAotdm9pZCBXZWJSVENNb25pdG9yOjpTdGFydFVwZGF0aW5nKCkKK3ZvaWQgV2Vi
UlRDTW9uaXRvcjo6c3RhcnRVcGRhdGluZygpCiB7Ci0gICAgV0VCUlRDX1JFTEVBU0VfTE9HKCJT
dGFydFVwZGF0aW5nIik7Ci0gICAgaWYgKG1fcmVjZWl2ZWROZXR3b3JrTGlzdCkgewotICAgICAg
ICBXZWJDb3JlOjpMaWJXZWJSVENQcm92aWRlcjo6Y2FsbE9uV2ViUlRDTmV0d29ya1RocmVhZChb
dGhpc10gewotICAgICAgICAgICAgU2lnbmFsTmV0d29ya3NDaGFuZ2VkKCk7Ci0gICAgICAgIH0p
OwotICAgIH0KLQotICAgIHNlbmRPbk1haW5UaHJlYWQoW3RoaXNdKGF1dG8mIGNvbm5lY3Rpb24p
IHsKLSAgICAgICAgV0VCUlRDX1JFTEVBU0VfTE9HKCJTdGFydFVwZGF0aW5nIC0gQXNraW5nIG5l
dHdvcmsgcHJvY2VzcyB0byBzdGFydCB1cGRhdGluZyIpOwotICAgICAgICBjb25uZWN0aW9uLnNl
bmQoTWVzc2FnZXM6Ok5ldHdvcmtSVENNb25pdG9yOjpTdGFydFVwZGF0aW5nSWZOZWVkZWQobV9l
bmFibGVFbnVtZXJhdGluZ0FsbE5ldHdvcmtJbnRlcmZhY2VzKSwgMCk7Ci0gICAgfSk7CisgICAg
V0VCUlRDX1JFTEVBU0VfTE9HKCJTdGFydFVwZGF0aW5nIC0gQXNraW5nIG5ldHdvcmsgcHJvY2Vz
cyB0byBzdGFydCB1cGRhdGluZyIpOworCisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5z
dXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6
Ok5ldHdvcmtSVENNb25pdG9yOjpTdGFydFVwZGF0aW5nSWZOZWVkZWQobV9lbmFibGVFbnVtZXJh
dGluZ0FsbE5ldHdvcmtJbnRlcmZhY2VzKSwgMCk7CiAgICAgKyttX2NsaWVudENvdW50OwogfQog
Ci12b2lkIFdlYlJUQ01vbml0b3I6OlN0b3BVcGRhdGluZygpCit2b2lkIFdlYlJUQ01vbml0b3I6
OnN0b3BVcGRhdGluZygpCiB7CiAgICAgV0VCUlRDX1JFTEVBU0VfTE9HKCJTdG9wVXBkYXRpbmci
KTsKKwogICAgIEFTU0VSVChtX2NsaWVudENvdW50KTsKICAgICBpZiAoLS1tX2NsaWVudENvdW50
KQogICAgICAgICByZXR1cm47CiAKLSAgICBzZW5kT25NYWluVGhyZWFkKFt0aGlzXShhdXRvJiBj
b25uZWN0aW9uKSB7Ci0gICAgICAgIFdFQlJUQ19SRUxFQVNFX0xPRygiU3RvcFVwZGF0aW5nIC0g
QXNraW5nIG5ldHdvcmsgcHJvY2VzcyB0byBzdG9wIHVwZGF0aW5nIik7Ci0gICAgICAgIGNvbm5l
Y3Rpb24uc2VuZChNZXNzYWdlczo6TmV0d29ya1JUQ01vbml0b3I6OlN0b3BVcGRhdGluZygpLCAw
KTsKLSAgICB9KTsKKyAgICBXRUJSVENfUkVMRUFTRV9MT0coIlN0b3BVcGRhdGluZyAtIEFza2lu
ZyBuZXR3b3JrIHByb2Nlc3MgdG8gc3RvcCB1cGRhdGluZyIpOworICAgIFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5z
ZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUlRDTW9uaXRvcjo6U3RvcFVwZGF0aW5nKCksIDApOwogfQog
Ci12b2lkIFdlYlJUQ01vbml0b3I6Om5ldHdvcmtzQ2hhbmdlZChjb25zdCBWZWN0b3I8UlRDTmV0
d29yaz4mIG5ldHdvcmtzLCBjb25zdCBSVENOZXR3b3JrOjpJUEFkZHJlc3MmIGlwdjQsIGNvbnN0
IFJUQ05ldHdvcms6OklQQWRkcmVzcyYgaXB2NikKK3ZvaWQgV2ViUlRDTW9uaXRvcjo6bmV0d29y
a3NDaGFuZ2VkKFZlY3RvcjxSVENOZXR3b3JrPiYmIG5ldHdvcmtMaXN0LCBSVENOZXR3b3JrOjpJ
UEFkZHJlc3MmJiBpcHY0LCBSVENOZXR3b3JrOjpJUEFkZHJlc3MmJiBpcHY2KQogewogICAgIFdF
QlJUQ19SRUxFQVNFX0xPRygibmV0d29ya3NDaGFuZ2VkIik7Ci0gICAgLy8gTm8gbmVlZCB0byBw
cm90ZWN0ICd0aGlzJyBhcyBpdCBoYXMgdGhlIGxpZmV0aW1lIG9mIExpYldlYlJUQyB3aGljaCBo
YXMgdGhlIGxpZmV0aW1lIG9mIHRoZSB3ZWIgcHJvY2Vzcy4KLSAgICBXZWJDb3JlOjpMaWJXZWJS
VENQcm92aWRlcjo6Y2FsbE9uV2ViUlRDTmV0d29ya1RocmVhZChbdGhpcywgbmV0d29ya3MsIGlw
djQsIGlwdjZdIHsKLSAgICAgICAgV0VCUlRDX1JFTEVBU0VfTE9HKCJuZXR3b3Jrc0NoYW5nZWQg
LSBTaWduYWxpbmciKTsKLSAgICAgICAgc3RkOjp2ZWN0b3I8cnRjOjpOZXR3b3JrKj4gbmV0d29y
a0xpc3QobmV0d29ya3Muc2l6ZSgpKTsKLSAgICAgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBp
bmRleCA8IG5ldHdvcmtzLnNpemUoKTsgKytpbmRleCkKLSAgICAgICAgICAgIG5ldHdvcmtMaXN0
W2luZGV4XSA9IG5ldyBydGM6Ok5ldHdvcmsobmV0d29ya3NbaW5kZXhdLnZhbHVlKCkpOwotCi0g
ICAgICAgIGJvb2wgZm9yY2VTaWduYWxpbmcgPSAhbV9yZWNlaXZlZE5ldHdvcmtMaXN0OwotICAg
ICAgICBtX3JlY2VpdmVkTmV0d29ya0xpc3QgPSB0cnVlOwotCi0gICAgICAgIGJvb2wgaGFzQ2hh
bmdlZDsKLSAgICAgICAgc2V0X2RlZmF1bHRfbG9jYWxfYWRkcmVzc2VzKGlwdjQudmFsdWUsIGlw
djYudmFsdWUpOwotICAgICAgICBNZXJnZU5ldHdvcmtMaXN0KG5ldHdvcmtMaXN0LCAmaGFzQ2hh
bmdlZCk7Ci0gICAgICAgIGlmIChoYXNDaGFuZ2VkIHx8IGZvcmNlU2lnbmFsaW5nKQotICAgICAg
ICAgICAgU2lnbmFsTmV0d29ya3NDaGFuZ2VkKCk7CiAKLSAgICB9KTsKKyAgICBtX2RpZFJlY2Vp
dmVOZXR3b3JrTGlzdCA9IHRydWU7CisgICAgbV9uZXR3b3JrTGlzdCA9IFdURk1vdmUobmV0d29y
a0xpc3QpOworICAgIG1faXB2NCA9IFdURk1vdmUoaXB2NCk7CisgICAgbV9pcHY2ID0gV1RGTW92
ZShpcHY2KTsKKworICAgIGZvciAoYXV0byYgb2JzZXJ2ZXIgOiBtX29ic2VydmVycykKKyAgICAg
ICAgb2JzZXJ2ZXIubmV0d29ya3NDaGFuZ2VkKG1fbmV0d29ya0xpc3QsIG1faXB2NCwgbV9pcHY2
KTsKIH0KIAogdm9pZCBXZWJSVENNb25pdG9yOjpuZXR3b3JrUHJvY2Vzc0NyYXNoZWQoKQogewot
ICAgIG1fcmVjZWl2ZWROZXR3b3JrTGlzdCA9IGZhbHNlOwotICAgIGlmICghV2ViQ29yZTo6TGli
V2ViUlRDUHJvdmlkZXI6Omhhc1dlYlJUQ1RocmVhZHMoKSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgLy8gSW4gY2FzZSB3ZSBoYXZlIGNsaWVudHMgd2FpdGluZyBmb3IgbmV0d29ya3NDaGFuZ2Vk
LCB3ZSBjYWxsIFNpZ25hbE5ldHdvcmtzQ2hhbmdlZCB0byBtYWtlIHN1cmUgdGhleSBkbyBub3Qg
d2FpdCBmb3Igbm90aGluZy4gICAgCi0gICAgV2ViQ29yZTo6TGliV2ViUlRDUHJvdmlkZXI6OmNh
bGxPbldlYlJUQ05ldHdvcmtUaHJlYWQoW3RoaXNdIHsKLSAgICAgICAgU2lnbmFsTmV0d29ya3ND
aGFuZ2VkKCk7Ci0gICAgfSk7CisgICAgZm9yIChhdXRvJiBvYnNlcnZlciA6IG1fb2JzZXJ2ZXJz
KQorICAgICAgICBvYnNlcnZlci5uZXR3b3JrUHJvY2Vzc0NyYXNoZWQoKTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay93ZWJydGMvV2ViUlRDTW9uaXRvci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvd2VicnRjL1dlYlJUQ01vbml0b3IuaAppbmRleCBmNmI5NzM5ZmFkZGMzODJjZDQyMmU1
YmFhOGVhMjg1NmU1ZjRmYjBmLi4wNjg1OTBlNTMyNjQxYTFmZGEzNTdhYWMxMmFkMjMyNGIyMDQ0
MjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMv
V2ViUlRDTW9uaXRvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dl
YnJ0Yy9XZWJSVENNb25pdG9yLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJSVENOZXR3
b3JrLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9MaWJXZWJSVENQcm92aWRlci5oPgogI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtIYXNoU2V0Lmg+CiAKIG5hbWVzcGFj
ZSBJUEMgewogY2xhc3MgQ29ubmVjdGlvbjsKQEAgLTQwLDI2ICs0MSw0MiBAQCBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAogc3RydWN0IE5ldHdvcmtzQ2hhbmdlZERhdGE7CiAKLWNsYXNzIFdlYlJUQ01v
bml0b3IgZmluYWwgOiBwdWJsaWMgcnRjOjpOZXR3b3JrTWFuYWdlckJhc2UgeworY2xhc3MgV2Vi
UlRDTW9uaXRvciB7CiBwdWJsaWM6CiAgICAgV2ViUlRDTW9uaXRvcigpID0gZGVmYXVsdDsKIAor
ICAgIGNsYXNzIE9ic2VydmVyIDogcHVibGljIENhbk1ha2VXZWFrUHRyPE9ic2VydmVyPiB7Cisg
ICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIH5PYnNlcnZlcigpID0gZGVmYXVsdDsKKyAgICAg
ICAgdmlydHVhbCB2b2lkIG5ldHdvcmtzQ2hhbmdlZChjb25zdCBWZWN0b3I8UlRDTmV0d29yaz4m
LCBjb25zdCBSVENOZXR3b3JrOjpJUEFkZHJlc3MmLCBjb25zdCBSVENOZXR3b3JrOjpJUEFkZHJl
c3MmKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBuZXR3b3JrUHJvY2Vzc0NyYXNoZWQoKSA9
IDA7CisgICAgfTsKKyAgICB2b2lkIGFkZE9ic2VydmVyKE9ic2VydmVyJiBvYnNlcnZlcikgeyBt
X29ic2VydmVycy5hZGQob2JzZXJ2ZXIpOyB9CisgICAgdm9pZCByZW1vdmVPYnNlcnZlcihPYnNl
cnZlciYgb2JzZXJ2ZXIpIHsgbV9vYnNlcnZlcnMucmVtb3ZlKG9ic2VydmVyKTsgfQorICAgIHZv
aWQgc3RhcnRVcGRhdGluZygpOworICAgIHZvaWQgc3RvcFVwZGF0aW5nKCk7CisKICAgICB2b2lk
IG5ldHdvcmtQcm9jZXNzQ3Jhc2hlZCgpOwogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CiAgICAgdm9pZCBzZXRFbnVtZXJhdGluZ0Fs
bE5ldHdvcmtJbnRlcmZhY2VzRW5hYmxlZChib29sKTsKIAotcHJpdmF0ZToKLSAgICB2b2lkIG5l
dHdvcmtzQ2hhbmdlZChjb25zdCBWZWN0b3I8UlRDTmV0d29yaz4mIG5ldHdvcmtMaXN0LCBjb25z
dCBSVENOZXR3b3JrOjpJUEFkZHJlc3MmLCBjb25zdCBSVENOZXR3b3JrOjpJUEFkZHJlc3MmKTsK
KyAgICBib29sIGRpZFJlY2VpdmVOZXR3b3JrTGlzdCgpIGNvbnN0IHsgcmV0dXJuIG1fZGlkUmVj
ZWl2ZU5ldHdvcmtMaXN0OyB9CisgICAgY29uc3QgVmVjdG9yPFJUQ05ldHdvcms+JiBuZXR3b3Jr
TGlzdCgpIGNvbnN0IHsgcmV0dXJuIG1fbmV0d29ya0xpc3Q7IH0KKyAgICBjb25zdCBSVENOZXR3
b3JrOjpJUEFkZHJlc3MmIGlwdjQoKSBjb25zdCB7IHJldHVybiBtX2lwdjQ7IH0KKyAgICBjb25z
dCBSVENOZXR3b3JrOjpJUEFkZHJlc3MmIGlwdjYoKSBjb25zdCB7IHJldHVybiBtX2lwdjY7IH0K
IAotICAgIHZvaWQgU3RhcnRVcGRhdGluZygpIGZpbmFsOwotICAgIHZvaWQgU3RvcFVwZGF0aW5n
KCkgZmluYWw7Ci0gICAgd2VicnRjOjpNZG5zUmVzcG9uZGVySW50ZXJmYWNlKiBHZXRNZG5zUmVz
cG9uZGVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbnVsbHB0cjsgfQorcHJpdmF0ZToKKyAgICB2
b2lkIG5ldHdvcmtzQ2hhbmdlZChWZWN0b3I8UlRDTmV0d29yaz4mJiwgUlRDTmV0d29yazo6SVBB
ZGRyZXNzJiYsIFJUQ05ldHdvcms6OklQQWRkcmVzcyYmKTsKIAogICAgIHN0YXRpYyB2b2lkIHNl
bmRPbk1haW5UaHJlYWQoRnVuY3Rpb248dm9pZChJUEM6OkNvbm5lY3Rpb24mKT4mJik7CiAKICAg
ICB1bnNpZ25lZCBtX2NsaWVudENvdW50IHsgMCB9OwotICAgIGJvb2wgbV9yZWNlaXZlZE5ldHdv
cmtMaXN0IHsgZmFsc2UgfTsKKyAgICBXZWFrSGFzaFNldDxPYnNlcnZlcj4gbV9vYnNlcnZlcnM7
CiAgICAgYm9vbCBtX2VuYWJsZUVudW1lcmF0aW5nQWxsTmV0d29ya0ludGVyZmFjZXMgeyBmYWxz
ZSB9OworICAgIGJvb2wgbV9kaWRSZWNlaXZlTmV0d29ya0xpc3QgeyBmYWxzZSB9OworICAgIFZl
Y3RvcjxSVENOZXR3b3JrPiBtX25ldHdvcmtMaXN0OworICAgIFJUQ05ldHdvcms6OklQQWRkcmVz
cyBtX2lwdjQ7CisgICAgUlRDTmV0d29yazo6SVBBZGRyZXNzIG1faXB2NjsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDhkOWI0YTVjYzVlNjJkNjhhMDNiYjk0Y2I2MTcxMDZh
MjMwZjExZWYuLmM5OGQ0MWRjMzMyNzAxZjFlY2NhMGQ0MGVhNWNhNzE2ZWVjNDRmYWQgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNCBAQAorMjAyMS0wOS0wMSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBs
ZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IGxpYndlYnJ0YyBuZXR3b3JrIG1hbmFnZXIgR2V0
TWRuc1Jlc3BvbmRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjI5NzU3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiB3ZWJydGMvZGF0YWNoYW5uZWwvZmlsdGVyLWljZS1jYW5kaWRhdGUuaHRtbDoKKyAg
ICAgICAgKiB3ZWJydGMvZmlsdGVyaW5nLWljZS1jYW5kaWRhdGUtYWZ0ZXItcmVsb2FkLmh0bWw6
CisgICAgICAgIFVwZGF0ZSB0ZXN0cyBnaXZlbiBtRE5TIElDRSBjYW5kaWRhdGVzIGFyZSBub3cg
c2hvd2luZyB1cCBpbiBkZXNjcmlwdGlvbnMuCisKIDIwMjEtMDgtMzEgIFlvdWVubiBGYWJsZXQg
IDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIE1pZ3JhdGUgdG8gbGF0ZXN0IGxpYndlYnJ0
YyBBZGRJY2VDYW5kaWRhdGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYnJ0Yy9kYXRhY2hh
bm5lbC9maWx0ZXItaWNlLWNhbmRpZGF0ZS5odG1sIGIvTGF5b3V0VGVzdHMvd2VicnRjL2RhdGFj
aGFubmVsL2ZpbHRlci1pY2UtY2FuZGlkYXRlLmh0bWwKaW5kZXggY2NjNDY5YTE3N2UwMDkyYjY3
NTdiNWJjNGQxNzc1M2FiMWZiOTUzYi4uNzRlNzhmNDkzMjU4NTlmZmI1Njg0MTY1NTFkNTQxZjgw
Mjc2YjM2NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvd2VicnRjL2RhdGFjaGFubmVsL2ZpbHRl
ci1pY2UtY2FuZGlkYXRlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvd2VicnRjL2RhdGFjaGFubmVs
L2ZpbHRlci1pY2UtY2FuZGlkYXRlLmh0bWwKQEAgLTgsNjggKzgsOTEgQEAKICAgPC9oZWFkPgog
ICA8Ym9keT4KICAgICA8c2NyaXB0PgotcHJvbWlzZV90ZXN0KCh0ZXN0KSA9PiB7Ci0gICAgcmV0
dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKLSAgICAgICAgc2V0VGltZW91
dCgoKSA9PiB7IHJlamVjdCgiVGVzdCB0aW1lZCBvdXQiKTsgfSwgNTAwMCk7Ci0KLSAgICAgICAg
aWYgKHdpbmRvdy5pbnRlcm5hbHMpCi0gICAgICAgICAgICBpbnRlcm5hbHMuc2V0SUNFQ2FuZGlk
YXRlRmlsdGVyaW5nKHRydWUpOwotCi0gICAgICAgIHZhciBjb3VudGVyID0gMDsKLSAgICAgICAg
dmFyIHBjID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7Ci0gICAgICAgIHBjLmNyZWF0ZURhdGFD
aGFubmVsKCdzZW5kRGF0YUNoYW5uZWwnKTsKLSAgICAgICAgcGMub25pY2VjYW5kaWRhdGUgPSAo
ZXZlbnQpID0+IHsKLSAgICAgICAgICAgIGlmIChldmVudC5jYW5kaWRhdGUpIHsKLSAgICAgICAg
ICAgICAgICBjb3VudGVyKys7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAg
fQotICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhwYy5sb2NhbERlc2NyaXB0aW9uLnNkcC5pbmRl
eE9mKCJhPWNhbmRpZGF0ZSIpLCAtMSk7Ci0gICAgICAgICAgICBhc3NlcnRfdHJ1ZShwYy5sb2Nh
bERlc2NyaXB0aW9uLnNkcC5pbmRleE9mKCJjPUlOIElQNCAwLjAuMC4wXHJcbiIpICE9IC0xIHx8
IHBjLmxvY2FsRGVzY3JpcHRpb24uc2RwLmluZGV4T2YoImM9SU4gSVA2IDo6XHJcbiIpICE9IC0x
KTsKLSAgICAgICAgICAgIGlmIChjb3VudGVyID09PSAwKSB7Ci0gICAgICAgICAgICAgICAgcGMu
Y3JlYXRlT2ZmZXIoKS50aGVuKChvZmZlcikgPT4gewotICAgICAgICAgICAgICAgICAgICBhc3Nl
cnRfdHJ1ZShvZmZlci5zZHAuaW5kZXhPZigiYz1JTiBJUDQgMC4wLjAuMFxyXG4iKSAhPSAtMSB8
fCBwYy5sb2NhbERlc2NyaXB0aW9uLnNkcC5pbmRleE9mKCJjPUlOIElQNiA6OlxyXG4iKSAhPSAt
MSk7Ci0gICAgICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMob2ZmZXIuc2RwLmluZGV4T2Yo
ImE9Y2FuZGlkYXRlIiksIC0xKTsKLSAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOwotICAg
ICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgcmVq
ZWN0KCJObyBjYW5kaWRhdGUgc2hvdWxkIGJlIGZvdW5kIik7Ci0gICAgICAgIH07Ci0gICAgICAg
IHBjLmNyZWF0ZU9mZmVyKCkudGhlbigob2ZmZXIpID0+IHsKLSAgICAgICAgICAgIGFzc2VydF9l
cXVhbHMob2ZmZXIuc2RwLmluZGV4T2YoImE9Y2FuZGlkYXRlIiksIC0xKTsKLSAgICAgICAgICAg
IHBjLnNldExvY2FsRGVzY3JpcHRpb24ob2ZmZXIpOwotICAgICAgICB9KTsKK2Z1bmN0aW9uIGVu
c3VyZUNhbmRpZGF0ZXNBcmVNRE5TKHNkcCkKK3sKKyAgICBhc3NlcnRfdHJ1ZShzZHAuaW5kZXhP
ZigiYz1JTiBJUDQgMC4wLjAuMFxyXG4iKSAhPSAtMSB8fCBzZHAuaW5kZXhPZigiYz1JTiBJUDYg
OjpcclxuIikgIT0gLTEpOworICAgIGNvbnN0IGNhbmRpZGF0ZXMgPSBzZHAuc3BsaXQoJ1xyXG4n
KS5maWx0ZXIobGluZSA9PiB7CisgICAgICAgIHJldHVybiBsaW5lLmluZGV4T2YoJ2E9Y2FuZGlk
YXRlJykgIT09IC0xOworICAgIH0pOworICAgIGZvciAoY29uc3QgY2FuZGlkYXRlIG9mIGNhbmRp
ZGF0ZXMpCisgICAgICAgIGFzc2VydF9ub3RfZXF1YWxzKGNhbmRpZGF0ZS5pbmRleE9mKCcubG9j
YWwnKSwgLTEpOworfQorCitmdW5jdGlvbiBlbnN1cmVDYW5kaWRhdGVzQXJlTm90TUROUyhzZHAp
Cit7CisgICAgY29uc3QgY2FuZGlkYXRlcyA9IHNkcC5zcGxpdCgnXHJcbicpLmZpbHRlcihsaW5l
ID0+IHsKKyAgICAgICAgcmV0dXJuIGxpbmUuaW5kZXhPZignYT1jYW5kaWRhdGUnKSAhPT0gLTE7
CiAgICAgfSk7CisgICAgZm9yIChjb25zdCBjYW5kaWRhdGUgb2YgY2FuZGlkYXRlcykKKyAgICAg
ICAgYXNzZXJ0X2VxdWFscyhjYW5kaWRhdGUuaW5kZXhPZignLmxvY2FsJyksIC0xKTsKK30KKwor
cHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7CisgICAgbGV0IHJlc29sdmUsIHJlamVjdDsK
KyAgICBjb25zdCBwcm9taXNlID0gbmV3IFByb21pc2UoKHJlcywgcmVqKSA9PiB7IHJlc29sdmUg
PSByZXM7IHJlamVjdCA9IHJlajsgfSk7CisgICAgc2V0VGltZW91dCgoKSA9PiB7IHJlamVjdCgi
VGVzdCB0aW1lZCBvdXQiKTsgfSwgNTAwMCk7CisKKyAgICBpZiAod2luZG93LmludGVybmFscykK
KyAgICAgICAgaW50ZXJuYWxzLnNldElDRUNhbmRpZGF0ZUZpbHRlcmluZyh0cnVlKTsKKworICAg
IGxldCBjb3VudGVyID0gMDsKKyAgICBsZXQgcGMgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsK
KyAgICBwYy5jcmVhdGVEYXRhQ2hhbm5lbCgnc2VuZERhdGFDaGFubmVsJyk7CisgICAgcGMub25p
Y2VjYW5kaWRhdGUgPSBhc3luYyAoZXZlbnQpID0+IHsKKyAgICAgICAgaWYgKGV2ZW50LmNhbmRp
ZGF0ZSkgeworICAgICAgICAgICAgYXNzZXJ0X25vdF9lcXVhbHMoZXZlbnQuY2FuZGlkYXRlLmNh
bmRpZGF0ZS5pbmRleE9mKCcubG9jYWwnKSwgLTEpOworICAgICAgICAgICAgY291bnRlcisrOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGVuc3VyZUNhbmRpZGF0ZXNB
cmVNRE5TKHBjLmxvY2FsRGVzY3JpcHRpb24uc2RwKTsKKyAgICAgICAgaWYgKGNvdW50ZXIgPT09
IDApIHsKKyAgICAgICAgICAgIGNvbnN0IG9mZmVyID0gYXdhaXQgcGMuY3JlYXRlT2ZmZXIoKTsK
KyAgICAgICAgICAgIGF3YWl0IHBjLnNldExvY2FsRGVzY3JpcHRpb24ob2ZmZXIpOworICAgICAg
ICAgICAgZW5zdXJlQ2FuZGlkYXRlc0FyZU1ETlMocGMubG9jYWxEZXNjcmlwdGlvbi5zZHApOwor
ICAgICAgICAgICAgcmVzb2x2ZSgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9Cisg
ICAgICAgIHJlc29sdmUoKTsKKyAgICB9OworICAgIGNvbnN0IG9mZmVyID0gYXdhaXQgcGMuY3Jl
YXRlT2ZmZXIoKTsKKyAgICBhc3NlcnRfZXF1YWxzKG9mZmVyLnNkcC5pbmRleE9mKCJhPWNhbmRp
ZGF0ZSIpLCAtMSk7CisgICAgYXdhaXQgcGMuc2V0TG9jYWxEZXNjcmlwdGlvbihvZmZlcik7CisK
KyAgICByZXR1cm4gcHJvbWlzZTsKIH0sICJHYXRoZXJpbmcgSUNFIGNhbmRpZGF0ZXMgZnJvbSBh
IGRhdGEgY2hhbm5lbCBwZWVyIGNvbm5lY3Rpb24gd2l0aCBJQ0UgY2FuZGlkYXRlIGZpbHRlcmlu
ZyBvbiIpOwogCi1wcm9taXNlX3Rlc3QoKHRlc3QpID0+IHsKLSAgICByZXR1cm4gbmV3IFByb21p
c2UoKHJlc29sdmUsIHJlamVjdCkgPT4gewotICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsgcmVq
ZWN0KCJUZXN0IHRpbWVkIG91dCIpOyB9LCA1MDAwKTsKK3Byb21pc2VfdGVzdChhc3luYyAodGVz
dCkgPT4geworICAgIGxldCByZXNvbHZlLCByZWplY3Q7CisgICAgY29uc3QgcHJvbWlzZSA9IG5l
dyBQcm9taXNlKChyZXMsIHJlaikgPT4geyByZXNvbHZlID0gcmVzOyByZWplY3QgPSByZWo7IH0p
OworICAgIHNldFRpbWVvdXQoKCkgPT4geyByZWplY3QoIlRlc3QgdGltZWQgb3V0Iik7IH0sIDUw
MDApOwogCi0JaWYgKHdpbmRvdy5pbnRlcm5hbHMpCi0gICAgICAgICAgICBpbnRlcm5hbHMuc2V0
SUNFQ2FuZGlkYXRlRmlsdGVyaW5nKGZhbHNlKTsKKyAgICBpZiAod2luZG93LmludGVybmFscykK
KyAgICAgICAgaW50ZXJuYWxzLnNldElDRUNhbmRpZGF0ZUZpbHRlcmluZyhmYWxzZSk7CisgCisg
ICAgbGV0IGNvdW50ZXIgPSAwOworICAgIGxldCBwYyA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigp
OworICAgIHBjLmNyZWF0ZURhdGFDaGFubmVsKCdzZW5kRGF0YUNoYW5uZWwnKTsKIAotICAgICAg
ICB2YXIgY291bnRlciA9IDA7Ci0gICAgICAgIHZhciBwYyA9IG5ldyBSVENQZWVyQ29ubmVjdGlv
bigpOwotICAgICAgICBwYy5jcmVhdGVEYXRhQ2hhbm5lbCgnc2VuZERhdGFDaGFubmVsJyk7Ci0g
ICAgICAgIHBjLm9uaWNlY2FuZGlkYXRlID0gKGV2ZW50KSA9PiB7Ci0gICAgICAgICAgICBpZiAo
ZXZlbnQuY2FuZGlkYXRlKSB7Ci0gICAgICAgICAgICAgICAgY291bnRlcisrOwotICAgICAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGFzc2VydF90cnVlKHBj
LmxvY2FsRGVzY3JpcHRpb24uc2RwLmluZGV4T2YoImM9SU4gSVA0IDAuMC4wLjBcclxuIikgPT09
IC0xICYmIHBjLmxvY2FsRGVzY3JpcHRpb24uc2RwLmluZGV4T2YoImM9SU4gSVA2IDo6XHJcbiIp
ID09PSAtMSk7Ci0gICAgICAgICAgICBhc3NlcnRfZmFsc2UocGMubG9jYWxEZXNjcmlwdGlvbi5z
ZHAuaW5kZXhPZigiYT1jYW5kaWRhdGUiKSA9PT0gLTEpOwotICAgICAgICAgICAgaWYgKGNvdW50
ZXIgIT09IDApIHsKLSAgICAgICAgICAgICAgICAvLyBSZWRvaW5nIGFuIG9mZmVyIG5vdyB0aGF0
IHdlIGhhdmUgc29tZSBjYW5kaWRhdGVzLgotICAgICAgICAgICAgICAgIHBjLmNyZWF0ZU9mZmVy
KCkudGhlbigob2ZmZXIpID0+IHsKLSAgICAgICAgICAgICAgICAgICAgYXNzZXJ0X3RydWUob2Zm
ZXIuc2RwLmluZGV4T2YoImM9SU4gSVA0IDAuMC4wLjBcclxuIikgPT09IC0xICYmIHBjLmxvY2Fs
RGVzY3JpcHRpb24uc2RwLmluZGV4T2YoImM9SU4gSVA2IDo6XHJcbiIpID09PSAtMSk7Ci0gICAg
ICAgICAgICAgICAgICAgIGFzc2VydF9mYWxzZShvZmZlci5zZHAuaW5kZXhPZigiYT1jYW5kaWRh
dGUiKSA9PT0gLTEpOwotICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7Ci0gICAgICAgICAg
ICAgICAgfSk7Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICByZWplY3QoIkhv
c3QgY2FuZGlkYXRlcyBzaG91bGQgYmUgZm91bmQiKTsKLSAgICAgICAgfTsKLSAgICAgICAgcGMu
Y3JlYXRlT2ZmZXIoKS50aGVuKChvZmZlcikgPT4geyBwYy5zZXRMb2NhbERlc2NyaXB0aW9uKG9m
ZmVyKTsgfSk7Ci0gICAgfSk7CisgICAgcGMub25pY2VjYW5kaWRhdGUgPSBhc3luYyAoZXZlbnQp
ID0+IHsKKyAgICAgICAgaWYgKGV2ZW50LmNhbmRpZGF0ZSkgeworICAgICAgICAgICAgYXNzZXJ0
X2VxdWFscyhldmVudC5jYW5kaWRhdGUuY2FuZGlkYXRlLmluZGV4T2YoJy5sb2NhbCcpLCAtMSk7
CisgICAgICAgICAgICBjb3VudGVyKys7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICAgICAgZW5zdXJlQ2FuZGlkYXRlc0FyZU5vdE1ETlMocGMubG9jYWxEZXNjcmlwdGlvbi5z
ZHApOworICAgICAgICBpZiAoY291bnRlciAhPT0gMCkgeworICAgICAgICAgICAgLy8gUmVkb2lu
ZyBhbiBvZmZlciBub3cgdGhhdCB3ZSBoYXZlIHNvbWUgY2FuZGlkYXRlcy4KKyAgICAgICAgICAg
IGNvbnN0IG9mZmVyID0gYXdhaXQgcGMuY3JlYXRlT2ZmZXIoKTsKKyAgICAgICAgICAgIGF3YWl0
IHBjLnNldExvY2FsRGVzY3JpcHRpb24ob2ZmZXIpOworICAgICAgICAgICAgZW5zdXJlQ2FuZGlk
YXRlc0FyZU5vdE1ETlMocGMubG9jYWxEZXNjcmlwdGlvbi5zZHApOworICAgICAgICAgICAgcmVz
b2x2ZSgpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHJlamVjdCgiSG9zdCBjYW5kaWRh
dGVzIHNob3VsZCBiZSBmb3VuZCIpOworICAgIH07CisgICAgY29uc3Qgb2ZmZXIgPSBhd2FpdCBw
Yy5jcmVhdGVPZmZlcigpOworICAgIGF3YWl0IHBjLnNldExvY2FsRGVzY3JpcHRpb24ob2ZmZXIp
OworCisgICAgcmV0dXJuIHByb21pc2U7CiB9LCAiR2F0aGVyaW5nIElDRSBjYW5kaWRhdGVzIGZy
b20gYSBkYXRhIGNoYW5uZWwgcGVlciBjb25uZWN0aW9uIHdpdGggSUNFIGNhbmRpZGF0ZSBmaWx0
ZXJpbmcgb2ZmIik7CiAKIHByb21pc2VfdGVzdChhc3luYyAodGVzdCkgPT4gewpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2VicnRjL2ZpbHRlcmluZy1pY2UtY2FuZGlkYXRlLWFmdGVyLXJlbG9h
ZC5odG1sIGIvTGF5b3V0VGVzdHMvd2VicnRjL2ZpbHRlcmluZy1pY2UtY2FuZGlkYXRlLWFmdGVy
LXJlbG9hZC5odG1sCmluZGV4IGM4NzU1ZjcxZjE5ZjFhMzAzYzIzYjBiYWFmMTY2M2JkNjhiZDVi
OWQuLjUyNWRlODRmOWQzMmJiMTQ2MmRlOTdjMmYyMGU1NWZmY2MxNWU0YjIgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3dlYnJ0Yy9maWx0ZXJpbmctaWNlLWNhbmRpZGF0ZS1hZnRlci1yZWxvYWQu
aHRtbAorKysgYi9MYXlvdXRUZXN0cy93ZWJydGMvZmlsdGVyaW5nLWljZS1jYW5kaWRhdGUtYWZ0
ZXItcmVsb2FkLmh0bWwKQEAgLTcsMjQgKzcsMjggQEAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7
CiAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiB9CiAKLWZ1bmN0aW9uIGlzRmlsdGVy
aW5nRW5hYmxlZCgpCithc3luYyBmdW5jdGlvbiBpc0ZpbHRlcmluZ0VuYWJsZWQoKQogeworICAg
IGxldCByZXNvbHZlLCByZWplY3Q7CisgICAgY29uc3QgcHJvbWlzZSA9IG5ldyBQcm9taXNlKChy
ZXMsIHJlaikgPT4geyByZXNvbHZlID0gcmVzOyByZWplY3QgPSByZWo7IH0pOworICAgIHNldFRp
bWVvdXQoKCkgPT4geyByZWplY3QoIlRlc3QgdGltZWQgb3V0Iik7IH0sIDUwMDApOworCiAgICAg
dmFyIHBjID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7CiAgICAgcGMuY3JlYXRlRGF0YUNoYW5u
ZWwoIiIpOwogCiAgICAgdmFyIGNhbmRpZGF0ZXMgPSBbXTsKLSAgICByZXR1cm4gbmV3IFByb21p
c2UoKHJlc29sdmUsIHJlamVjdCkgPT4gewotICAgICAgICBwYy5vbmljZWNhbmRpZGF0ZSA9IChl
dmVudCkgPT4gewotICAgICAgICAgICAgaWYgKGV2ZW50LmNhbmRpZGF0ZSA9PT0gbnVsbCkgewot
ICAgICAgICAgICAgICAgIHJlc29sdmUoIWNhbmRpZGF0ZXMubGVuZ3RoKTsKLSAgICAgICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgICAgICB9CisgICAgcGMub25pY2VjYW5kaWRhdGUgPSAoZXZl
bnQpID0+IHsKKyAgICAgICAgaWYgKGV2ZW50LmNhbmRpZGF0ZSA9PT0gbnVsbCkgeworICAgICAg
ICAgICAgcmVzb2x2ZSghY2FuZGlkYXRlcy5sZW5ndGgpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisgICAgICAgIGlmIChldmVudC5jYW5kaWRhdGUuY2FuZGlkYXRlLmluZGV4T2Yo
Jy5sb2NhbCcpID09PSAtMSkKICAgICAgICAgICAgIGNhbmRpZGF0ZXMucHVzaChldmVudC5jYW5k
aWRhdGUuY2FuZGlkYXRlKTsKLSAgICAgICAgfTsKLSAgICAgICAgcGMuY3JlYXRlT2ZmZXIoKS50
aGVuKChvZmZlcikgPT4gewotICAgICAgICAgICAgcGMuc2V0TG9jYWxEZXNjcmlwdGlvbihvZmZl
cik7Ci0gICAgICAgIH0pOwotICAgIH0pOworICAgIH07CisKKyAgICBjb25zdCBvZmZlciA9IGF3
YWl0IHBjLmNyZWF0ZU9mZmVyKCk7CisgICAgYXdhaXQgcGMuc2V0TG9jYWxEZXNjcmlwdGlvbihv
ZmZlcik7CisgICAgcmV0dXJuIHByb21pc2U7CiB9CiAKIGZ1bmN0aW9uIGVuZFRlc3QobWVzc2Fn
ZSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>437025</attachid>
            <date>2021-09-01 06:47:25 -0700</date>
            <delta_ts>2021-09-01 07:05:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229757-20210901154723.patch</filename>
            <type>text/plain</type>
            <size>83714</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxNzkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWIwNDFiMmIwMGZmNmU4
Y2YwNTI3MjZmMWQ1NmUzMzQwNGM1NjAwNy4uNThjOWY3ZDhmZTMwZDZlNWYwZTY1OTkyNzFkNTgy
NDJhZmFlYmRlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDIxLTA5LTAxICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgbGlid2Vi
cnRjIG5ldHdvcmsgbWFuYWdlciBHZXRNZG5zUmVzcG9uZGVyCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjk3NTcKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgbGlid2VicnRjIG1ETlMgc3VwcG9ydCBp
bnN0ZWFkIG9mIGFwcGx5aW5nIGl0IHdpdGhpbiBQZWVyQ29ubmVjdGlvbkJhY2tlbmQuCisgICAg
ICAgIFRoaXMgYWxsb3dzIGEgYmV0dGVyIGludGVncmF0aW9uIGFuZCBpcyBtb3JlIGNvbnNpc3Rl
bnQgd2l0aCB0aGUgQVBJIGFuZCBvdGhlciBicm93c2Vycy4KKyAgICAgICAgRm9yIGluc3RhbmNl
IG1ETlMgY2FuZGlkYXRlcyBub3cgc2hvdyB1cCBpbiBsb2NhbCBkZXNjcmlwdGlvbnMuCisgICAg
ICAgIFdlIGludHJvZHVjZSBSVENOZXR3b3JrTWFuYWdlciB3aGljaCBpcyByZXNwb25zaWJsZSBm
b3IgV2ViUlRDIG5ldHdvcmsuCisgICAgICAgIFJUQ05ldHdvcmtNYW5hZ2VyIGlzIHJlc3BvbnNp
YmxlIG9mIGFsbCBwZWVyIGNvbm5lY3Rpb25zIG9mIGEgZG9jdW1lbnQuIEl0IGNhbiB0aHVzIHJl
dXNlIG1ETlMgbmFtZXMgZnJvbSBvbmUgY29ubmVjdGlvbiB0byBhbm90aGVyLgorICAgICAgICBX
aGVuIGRvY3VtZW50IGdvZXMgYXdheSwgUlRDTmV0d29ya01hbmFnZXIgbmVlZHMgdG8gdW5yZWdp
c3RlciBhbGwgbUROUyBuYW1lcy4KKyAgICAgICAgVXBkYXRlIGV4aXN0aW5nIFNEUCBhbmQgSUNF
IGNhbmRpZGF0ZSBmaWx0ZXJpbmcgY29kZSBieSBvbmx5IGtlZXBpbmcgZGVidWcgYXNzZXJ0IHRo
YXQgd2UgZG8gbm90IGxlYWsgcHJpdmF0ZSBJUCBhZGRyZXNzZXMgaW4gY2FzZSBJQ0UgZmlsdGVy
aW5nIGlzIG9uLgorICAgICAgICBDb3ZlcmVkIGJ5IHVwZGF0ZWQgYW5kIGV4aXN0aW5nIHRlc3Rz
LgorCisgICAgICAgICogSGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3Ry
ZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29u
bmVjdGlvbkJhY2tlbmQ6OmNyZWF0ZU9mZmVyU3VjY2VlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6
OlBlZXJDb25uZWN0aW9uQmFja2VuZDo6ZW5hYmxlSUNFQ2FuZGlkYXRlRmlsdGVyaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uQmFja2VuZDo6ZGlzYWJsZUlDRUNhbmRpZGF0
ZUZpbHRlcmluZyk6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OnZh
bGlkYXRlU0RQIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uQmFja2Vu
ZDo6bmV3SUNFQ2FuZGlkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uQmFj
a2VuZDo6ZG9uZUdhdGhlcmluZ0NhbmRpZGF0ZXMpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
dHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0NvbnRyb2xsZXI6
OmFkZCk6CisgICAgICAgIChXZWJDb3JlOjpSVENDb250cm9sbGVyOjpkaXNhYmxlSUNFQ2FuZGlk
YXRlRmlsdGVyaW5nRm9yQWxsT3JpZ2lucyk6CisgICAgICAgIChXZWJDb3JlOjpSVENDb250cm9s
bGVyOjpkaXNhYmxlSUNFQ2FuZGlkYXRlRmlsdGVyaW5nRm9yRG9jdW1lbnQpOgorICAgICAgICAo
V2ViQ29yZTo6UlRDQ29udHJvbGxlcjo6ZW5hYmxlSUNFQ2FuZGlkYXRlRmlsdGVyaW5nKToKKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ05ldHdvcmtNYW5hZ2VyLmg6IEFkZGVkLgor
ICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5k
cG9pbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6c2V0
Q29uZmlndXJhdGlvbik6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMv
TGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okxp
YldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6Y3VycmVudExvY2FsRGVzY3JpcHRpb24gY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpw
ZW5kaW5nTG9jYWxEZXNjcmlwdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJS
VENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmxvY2FsRGVzY3JpcHRpb24gY29uc3QpOgorICAgICAg
ICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBkb20vRG9j
dW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OndpbGxCZVJlbW92ZWRGcm9t
RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnN1c3BlbmQpOgorICAgICAgICAq
IGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJ0Y05ldHdvcmtN
YW5hZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzZXRSVENOZXR3b3JrTWFuYWdl
cik6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vTUROU1JlZ2lzdGVyRXJyb3IuaDog
QWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJU
Q1Byb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ1Byb3ZpZGVyOjpjcmVh
dGVQZWVyQ29ubmVjdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2Vi
cnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmg6CisKIDIwMjEtMDgtMzEgIFlvdWVubiBGYWJsZXQgIDx5
b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBzdXBwb3J0IGZvciBSVENTY3RwVHJhbnNw
b3J0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCmluZGV4IDYxZjdhZDFjYTg4N2Q1YmZkMjEyZjQzOTNkMGM1MmFlYWFjMGI1N2Iu
LmU0N2ZiZDg2N2JmZjk0YjI0NGM3YTU5MWU0YzEyZWViNmZjMTdhYzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNTYgQEAKKzIwMjEtMDktMDEgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29t
PgorCisgICAgICAgIEltcGxlbWVudCBsaWJ3ZWJydGMgbmV0d29yayBtYW5hZ2VyIEdldE1kbnNS
ZXNwb25kZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyOTc1NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEltcGxlbWVudCBSVENOZXR3b3JrTWFuYWdlciBBUEkgaW4gTGliV2ViUlRDTmV0d29ya01hbmFn
ZXIgdG8gaGFuZGxlIHBlci1kb2N1bWVudCBtRE5TIHJlZ2lzdHJhdGlvbnMuCisgICAgICAgIE1v
dmUgcGFydCBvZiBXZWJSVENNb25pdG9yIHRvIExpYldlYlJUQ05ldHdvcmtNYW5hZ2VyLgorICAg
ICAgICBMaWJXZWJSVENOZXR3b3JrTWFuYWdlciBpcyBhIFdlYlJUQ01vbml0b3Igb2JzZXJ2ZXIg
dG8gZ2V0IHRoZSBsaXN0IG9mIG5ldHdvcmtzLgorICAgICAgICBTaW5jZSBsaWJ3ZWJydGMgaXMg
bm93IGRvaW5nIHRoZSBtRE5TIHJlZ2lzdHJhdGlvbiwgd2UgbmVlZCB0byByZXR1cm4gYSBtRE5T
IG5hbWUgZXZlbiBpZiByZWdpc3RyYXRpb24gZmFpbGVkLgorICAgICAgICBXZSB1cGRhdGUgV2Vi
TUROU1JlZ2lzdGVyIGFuZCBOZXR3b3JrTUROU1JlZ2lzdGVyIGFjY29yZGluZ2x5LgorCisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtNRE5TUmVnaXN0ZXIuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpyZWdpc3Rlck1ETlNOYW1lQ2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrTUROU1JlZ2lzdGVyOjpyZWdpc3Rlck1ETlNOYW1lKToKKyAgICAgICAgKiBTb3Vy
Y2VzLnR4dDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ05ldHdvcmtNYW5hZ2Vy
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ05ldHdvcmtNYW5hZ2VyOjpn
ZXRPckNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ05ldHdvcmtNYW5hZ2VyOjpM
aWJXZWJSVENOZXR3b3JrTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ05ldHdv
cmtNYW5hZ2VyOjp+TGliV2ViUlRDTmV0d29ya01hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpM
aWJXZWJSVENOZXR3b3JrTWFuYWdlcjo6dW5yZWdpc3Rlck1ETlNOYW1lcyk6CisgICAgICAgIChX
ZWJLaXQ6OkxpYldlYlJUQ05ldHdvcmtNYW5hZ2VyOjpTdGFydFVwZGF0aW5nKToKKyAgICAgICAg
KFdlYktpdDo6TGliV2ViUlRDTmV0d29ya01hbmFnZXI6OlN0b3BVcGRhdGluZyk6CisgICAgICAg
IChXZWJLaXQ6OkxpYldlYlJUQ05ldHdvcmtNYW5hZ2VyOjpHZXRNZG5zUmVzcG9uZGVyIGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDTmV0d29ya01hbmFnZXI6Om5ldHdvcmtzQ2hh
bmdlZCk6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ05ldHdvcmtNYW5hZ2VyOjpuZXR3b3Jr
UHJvY2Vzc0NyYXNoZWQpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENOZXR3b3JrTWFuYWdl
cjo6Q3JlYXRlTmFtZUZvckFkZHJlc3MpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENOZXR3
b3JrTWFuYWdlcjo6UmVtb3ZlTmFtZUZvckFkZHJlc3MpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
TmV0d29yay93ZWJydGMvTGliV2ViUlRDTmV0d29ya01hbmFnZXIuaDogQWRkZWQuCisgICAgICAg
ICogV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkxpYldlYlJUQ1Byb3ZpZGVyOjpjcmVhdGVQZWVyQ29ubmVjdGlvbik6Cisg
ICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ1Byb3ZpZGVyOjpkaXNhYmxlTm9uTG9jYWxob3N0Q29u
bmVjdGlvbnMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRD
UHJvdmlkZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1dlYk1ETlNS
ZWdpc3Rlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYk1ETlNSZWdpc3Rlcjo6ZmluaXNoZWRS
ZWdpc3RlcmluZ01ETlNOYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViTUROU1JlZ2lzdGVyOjpy
ZWdpc3Rlck1ETlNOYW1lKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1dl
Yk1ETlNSZWdpc3Rlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvV2Vi
TUROU1JlZ2lzdGVyLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay93
ZWJydGMvV2ViUlRDTW9uaXRvci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJUQ01vbml0b3I6
OnN0YXJ0VXBkYXRpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJSVENNb25pdG9yOjpzdG9wVXBk
YXRpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJSVENNb25pdG9yOjpuZXR3b3Jrc0NoYW5nZWQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJSVENNb25pdG9yOjpuZXR3b3JrUHJvY2Vzc0NyYXNoZWQp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvV2ViUlRDTW9uaXRvci5oOgor
ICAgICAgICAoV2ViS2l0OjpXZWJSVENNb25pdG9yOjphZGRPYnNlcnZlcik6CisgICAgICAgIChX
ZWJLaXQ6OldlYlJUQ01vbml0b3I6OnJlbW92ZU9ic2VydmVyKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUlRDTW9uaXRvcjo6ZGlkUmVjZWl2ZU5ldHdvcmtMaXN0IGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViUlRDTW9uaXRvcjo6bmV0d29ya0xpc3QgY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpXZWJSVENNb25pdG9yOjppcHY0IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUlRDTW9u
aXRvcjo6aXB2NiBjb25zdCk6CisKIDIwMjEtMDgtMjYgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBw
bGUuY29tPgogCiAgICAgICAgIEN1dCBkb3duIG9uIHVzZSBvZiBDRkdldFR5cGVJRCwgdXNpbmcg
ZHluYW1pY19jZl9jYXN0IGluc3RlYWQ7IHJlbGF0ZWQgc3RyZWFtbGluaW5nCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5j
bWFrZQppbmRleCA3NmNlMGM2NjFmZWU4MzBkMTc2ZTM2MWY1Nzk4NzM1YzdhZTFlMGNlLi5jZWI5
M2ZlOGQwMTgwYzdjZWM2ZjIxMTc3YzgwMGE3MTkxNGMyMDQwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UK
QEAgLTExNSwxMSArMTE1LDE0IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURF
UlMKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmgKICAgICBNb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5oCiAgICAgTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZVNvdXJjZS5oCisgICAgTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENOZXR3b3JrTWFuYWdlci5oCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9TVFVO
TWVzc2FnZVBhcnNpbmcuaAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhQ2xpZW50
LmgKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYUNvbnRyb2xsZXIuaAogICAgIE1v
ZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5oCiAKKyAgICBNb2R1bGVzL21lZGlh
c3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENVdGlscy5oCisKICAgICBNb2R1bGVzL21vZGVsLWVs
ZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oCiAKICAgICBNb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90
aWZpY2F0aW9uLmgKQEAgLTE0MTIsNiArMTQxNSw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJB
TUVXT1JLX0hFQURFUlMKIAogICAgIHBsYXRmb3JtL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2Uu
aAogICAgIHBsYXRmb3JtL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmgKKyAgICBw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9NRE5TUmVnaXN0ZXJFcnJvci5oCiAgICAgcGxhdGZvcm0vbWVk
aWFzdHJlYW0vTWVkaWFDb25zdHJhaW50cy5oCiAgICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1Qcml2YXRlLmgKICAgICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVJl
cXVlc3QuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Q
ZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwCmluZGV4IDc5OWUxZDNkYWNjNDgxMDcyYzFi
NTdiYWQxZTk1ZTA2ZDBhMDRjODEuLmIzYjkzYmNjMzZkZjdkZDRiNTVjNWQ0YzE4MWI0MTUxODQ1
MThhMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVl
ckNvbm5lY3Rpb25CYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAKQEAgLTEwMiw3ICsxMDIsOCBAQCB2b2lk
IFBlZXJDb25uZWN0aW9uQmFja2VuZDo6Y3JlYXRlT2ZmZXJTdWNjZWVkZWQoU3RyaW5nJiYgc2Rw
KQogICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgIkNyZWF0ZSBvZmZlciBzdWNjZWVkZWQ6
XG4iLCBzZHApOwogCiAgICAgQVNTRVJUKG1fb2ZmZXJBbnN3ZXJQcm9taXNlKTsKLSAgICBtX3Bl
ZXJDb25uZWN0aW9uLmRvVGFzayhbdGhpcywgcHJvbWlzZSA9IFdURk1vdmUobV9vZmZlckFuc3dl
clByb21pc2UpLCBzZHAgPSBmaWx0ZXJTRFAoV1RGTW92ZShzZHApKV0oKSBtdXRhYmxlIHsKKyAg
ICB2YWxpZGF0ZVNEUChzZHApOworICAgIG1fcGVlckNvbm5lY3Rpb24uZG9UYXNrKFt0aGlzLCBw
cm9taXNlID0gV1RGTW92ZShtX29mZmVyQW5zd2VyUHJvbWlzZSksIHNkcCA9IFdURk1vdmUoc2Rw
KV0oKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKG1fcGVlckNvbm5lY3Rpb24uaXNDbG9zZWQoKSkK
ICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMzc2LDgxICszNzcsMTkgQEAgdm9pZCBQZWVyQ29u
bmVjdGlvbkJhY2tlbmQ6OmVuYWJsZUlDRUNhbmRpZGF0ZUZpbHRlcmluZygpCiB2b2lkIFBlZXJD
b25uZWN0aW9uQmFja2VuZDo6ZGlzYWJsZUlDRUNhbmRpZGF0ZUZpbHRlcmluZygpCiB7CiAgICAg
bV9zaG91bGRGaWx0ZXJJQ0VDYW5kaWRhdGVzID0gZmFsc2U7Ci0gICAgZm9yIChhdXRvJiBwZW5k
aW5nSUNFQ2FuZGlkYXRlIDogbV9wZW5kaW5nSUNFQ2FuZGlkYXRlcykKLSAgICAgICAgZmlyZUlD
RUNhbmRpZGF0ZUV2ZW50KFJUQ0ljZUNhbmRpZGF0ZTo6Y3JlYXRlKFdURk1vdmUocGVuZGluZ0lD
RUNhbmRpZGF0ZS5zZHApLCBXVEZNb3ZlKHBlbmRpbmdJQ0VDYW5kaWRhdGUubWlkKSwgcGVuZGlu
Z0lDRUNhbmRpZGF0ZS5zZHBNTGluZUluZGV4KSwgV1RGTW92ZShwZW5kaW5nSUNFQ2FuZGlkYXRl
LnNlcnZlclVSTCkpOwotICAgIG1fcGVuZGluZ0lDRUNhbmRpZGF0ZXMuY2xlYXIoKTsKLX0KLQot
c3RhdGljIFN0cmluZyBmaWx0ZXJJQ0VDYW5kaWRhdGUoU3RyaW5nJiYgc2RwKQotewotICAgIEFT
U0VSVCghc2RwLmNvbnRhaW5zKCIgaG9zdCAiKSk7Ci0KLSAgICBpZiAoIXNkcC5jb250YWlucygi
IHJhZGRyICIpKQotICAgICAgICByZXR1cm4gV1RGTW92ZShzZHApOwotCi0gICAgYm9vbCBza2lw
TmV4dEl0ZW0gPSBmYWxzZTsKLSAgICBib29sIGlzRmlyc3QgPSB0cnVlOwotICAgIFN0cmluZ0J1
aWxkZXIgZmlsdGVyZWRTRFA7Ci0gICAgc2RwLnNwbGl0KCcgJywgWyZdKFN0cmluZ1ZpZXcgaXRl
bSkgewotICAgICAgICBpZiAoc2tpcE5leHRJdGVtKSB7Ci0gICAgICAgICAgICBza2lwTmV4dEl0
ZW0gPSBmYWxzZTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBpZiAo
aXRlbSA9PSAicmFkZHIiKSB7Ci0gICAgICAgICAgICBmaWx0ZXJlZFNEUC5hcHBlbmQoIiByYWRk
ciAwLjAuMC4wIik7Ci0gICAgICAgICAgICBza2lwTmV4dEl0ZW0gPSB0cnVlOwotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGlmIChpdGVtID09ICJycG9ydCIpIHsKLSAg
ICAgICAgICAgIGZpbHRlcmVkU0RQLmFwcGVuZCgiIHJwb3J0IDAiKTsKLSAgICAgICAgICAgIHNr
aXBOZXh0SXRlbSA9IHRydWU7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAg
ICAgaWYgKGlzRmlyc3QpCi0gICAgICAgICAgICBpc0ZpcnN0ID0gZmFsc2U7Ci0gICAgICAgIGVs
c2UKLSAgICAgICAgICAgIGZpbHRlcmVkU0RQLmFwcGVuZCgnICcpOwotICAgICAgICBmaWx0ZXJl
ZFNEUC5hcHBlbmQoaXRlbSk7Ci0gICAgfSk7Ci0gICAgcmV0dXJuIGZpbHRlcmVkU0RQLnRvU3Ry
aW5nKCk7CiB9CiAKLVN0cmluZyBQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmZpbHRlclNEUChTdHJp
bmcmJiBzZHApIGNvbnN0Cit2b2lkIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6dmFsaWRhdGVTRFAo
Y29uc3QgU3RyaW5nJiBzZHApIGNvbnN0CiB7CisjaWZuZGVmIE5ERUJVRwogICAgIGlmICghbV9z
aG91bGRGaWx0ZXJJQ0VDYW5kaWRhdGVzKQotICAgICAgICByZXR1cm4gV1RGTW92ZShzZHApOwot
Ci0gICAgU3RyaW5nQnVpbGRlciBmaWx0ZXJlZFNEUDsKLSAgICBzZHAuc3BsaXQoJ1xuJywgW3Ro
aXMsICZmaWx0ZXJlZFNEUF0oU3RyaW5nVmlldyBsaW5lKSB7Ci0gICAgICAgIGlmIChsaW5lLnN0
YXJ0c1dpdGgoImM9SU4gSVA0IikpIHsKLSAgICAgICAgICAgIGZpbHRlcmVkU0RQLmFwcGVuZCgi
Yz1JTiBJUDQgMC4wLjAuMFxyXG4iKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQot
ICAgICAgICBpZiAobGluZS5zdGFydHNXaXRoKCJjPUlOIElQNiIpKSB7Ci0gICAgICAgICAgICBm
aWx0ZXJlZFNEUC5hcHBlbmQoImM9SU4gSVA2IDo6XHJcbiIpOwotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICB9Ci0gICAgICAgIGlmICghbGluZS5zdGFydHNXaXRoKCJhPWNhbmRpZGF0ZSIp
KSB7Ci0gICAgICAgICAgICBmaWx0ZXJlZFNEUC5hcHBlbmQobGluZSk7Ci0gICAgICAgICAgICBm
aWx0ZXJlZFNEUC5hcHBlbmQoJ1xuJyk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0K
LSAgICAgICAgaWYgKGxpbmUuZmluZCgiIGhvc3QgIiwgMTEpID09IG5vdEZvdW5kKSB7Ci0gICAg
ICAgICAgICBmaWx0ZXJlZFNEUC5hcHBlbmQoZmlsdGVySUNFQ2FuZGlkYXRlKGxpbmUudG9TdHJp
bmcoKSkpOwotICAgICAgICAgICAgZmlsdGVyZWRTRFAuYXBwZW5kKCdcbicpOwotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgYXV0byBpcEFkZHJlc3MgPSBleHRyYWN0
SVBBZGRyZXNzKGxpbmUpOwotICAgICAgICBhdXRvIG1kbnNOYW1lID0gbV9pcEFkZHJlc3NUb01E
TlNOYW1lTWFwLmdldChpcEFkZHJlc3MpOwotICAgICAgICBpZiAobWRuc05hbWUuaXNFbXB0eSgp
KQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBhdXRvIHNkcCA9IGxpbmUudG9TdHJpbmco
KTsKLSAgICAgICAgc2RwLnJlcGxhY2UoaXBBZGRyZXNzLCBtZG5zTmFtZSk7Ci0gICAgICAgIGZp
bHRlcmVkU0RQLmFwcGVuZChzZHApOwotICAgICAgICBmaWx0ZXJlZFNEUC5hcHBlbmQoJ1xuJyk7
CisgICAgICAgIHJldHVybjsKKyAgICBzZHAuc3BsaXQoJ1xuJywgW10oYXV0byBsaW5lKSB7Cisg
ICAgICAgIEFTU0VSVCghbGluZS5zdGFydHNXaXRoKCJhPWNhbmRpZGF0ZSIpIHx8IGxpbmUuY29u
dGFpbnMoIi5sb2NhbCIpKTsKICAgICB9KTsKLSAgICByZXR1cm4gZmlsdGVyZWRTRFAudG9TdHJp
bmcoKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHNkcCk7CisjZW5kaWYKIH0KIAogdm9pZCBQ
ZWVyQ29ubmVjdGlvbkJhY2tlbmQ6Om5ld0lDRUNhbmRpZGF0ZShTdHJpbmcmJiBzZHAsIFN0cmlu
ZyYmIG1pZCwgdW5zaWduZWQgc2hvcnQgc2RwTUxpbmVJbmRleCwgU3RyaW5nJiYgc2VydmVyVVJM
KQpAQCAtNDYwLDIyICszOTksOCBAQCB2b2lkIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6bmV3SUNF
Q2FuZGlkYXRlKFN0cmluZyYmIHNkcCwgU3RyaW5nJiYgbWlkLCB1bnNpZ25lZAogICAgICAgICBB
TFdBWVNfTE9HKGxvZ1NpdGVJZGVudGlmaWVyLCAiR2F0aGVyZWQgaWNlIGNhbmRpZGF0ZToiLCBz
ZHApOwogICAgICAgICBtX2ZpbmlzaGVkR2F0aGVyaW5nQ2FuZGlkYXRlcyA9IGZhbHNlOwogCi0g
ICAgICAgIGlmICghbV9zaG91bGRGaWx0ZXJJQ0VDYW5kaWRhdGVzKSB7Ci0gICAgICAgICAgICBm
aXJlSUNFQ2FuZGlkYXRlRXZlbnQoUlRDSWNlQ2FuZGlkYXRlOjpjcmVhdGUoV1RGTW92ZShzZHAp
LCBXVEZNb3ZlKG1pZCksIHNkcE1MaW5lSW5kZXgpLCBXVEZNb3ZlKHNlcnZlclVSTCkpOwotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGlmIChzZHAuZmluZCgiIGhvc3Qg
IiwgMCkgIT0gbm90Rm91bmQpIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBtaWdodCBuZWVk
IHRvIGNsZWFyIGFsbCBwZW5kaW5nIGNhbmRpZGF0ZXMgd2hlbiBzZXR0aW5nIGFnYWluIGxvY2Fs
IGRlc2NyaXB0aW9uLgotICAgICAgICAgICAgbV9wZW5kaW5nSUNFQ2FuZGlkYXRlcy5hcHBlbmQo
UGVuZGluZ0lDRUNhbmRpZGF0ZSB7IFN0cmluZyB7IHNkcCB9LCBXVEZNb3ZlKG1pZCksIHNkcE1M
aW5lSW5kZXgsIFdURk1vdmUoc2VydmVyVVJMKSB9KTsKLSAgICAgICAgICAgIGlmIChSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYlJUQ01ETlNJQ0VDYW5kaWRhdGVz
RW5hYmxlZCgpKSB7Ci0gICAgICAgICAgICAgICAgYXV0byBpcEFkZHJlc3MgPSBleHRyYWN0SVBB
ZGRyZXNzKHNkcCk7Ci0gICAgICAgICAgICAgICAgLy8gV2UgcmVzdHJpY3QgdG8gSVB2NCBjYW5k
aWRhdGVzIGZvciBub3cuCi0gICAgICAgICAgICAgICAgaWYgKGlwQWRkcmVzcy5jb250YWlucygn
LicpKQotICAgICAgICAgICAgICAgICAgICByZWdpc3Rlck1ETlNOYW1lKGlwQWRkcmVzcyk7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgZmly
ZUlDRUNhbmRpZGF0ZUV2ZW50KFJUQ0ljZUNhbmRpZGF0ZTo6Y3JlYXRlKGZpbHRlcklDRUNhbmRp
ZGF0ZShXVEZNb3ZlKHNkcCkpLCBXVEZNb3ZlKG1pZCksIHNkcE1MaW5lSW5kZXgpLCBXVEZNb3Zl
KHNlcnZlclVSTCkpOworICAgICAgICBBU1NFUlQoIW1fc2hvdWxkRmlsdGVySUNFQ2FuZGlkYXRl
cyB8fCBzZHAuY29udGFpbnMoIi5sb2NhbCIpKTsKKyAgICAgICAgZmlyZUlDRUNhbmRpZGF0ZUV2
ZW50KFJUQ0ljZUNhbmRpZGF0ZTo6Y3JlYXRlKFdURk1vdmUoc2RwKSwgV1RGTW92ZShtaWQpLCBz
ZHBNTGluZUluZGV4KSwgV1RGTW92ZShzZXJ2ZXJVUkwpKTsKICAgICB9KTsKIH0KIApAQCAtNDg1
LDEyICs0MTAsOCBAQCB2b2lkIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6ZG9uZUdhdGhlcmluZ0Nh
bmRpZGF0ZXMoKQogICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgIkZpbmlzaGVkIGljZSBj
YW5kaWRhdGUgZ2F0aGVyaW5nIik7CiAgICAgbV9maW5pc2hlZEdhdGhlcmluZ0NhbmRpZGF0ZXMg
PSB0cnVlOwogCi0gICAgaWYgKG1fd2FpdGluZ0Zvck1ETlNSZWdpc3RyYXRpb24pCi0gICAgICAg
IHJldHVybjsKLQogICAgIG1fcGVlckNvbm5lY3Rpb24uZGlzcGF0Y2hFdmVudFdoZW5GZWFzaWJs
ZShSVENQZWVyQ29ubmVjdGlvbkljZUV2ZW50OjpjcmVhdGUoRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8s
IEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vLCBudWxscHRyLCB7IH0pKTsKICAgICBtX3BlZXJDb25u
ZWN0aW9uLnVwZGF0ZUljZUdhdGhlcmluZ1N0YXRlKFJUQ0ljZUdhdGhlcmluZ1N0YXRlOjpDb21w
bGV0ZSk7Ci0gICAgbV9wZW5kaW5nSUNFQ2FuZGlkYXRlcy5jbGVhcigpOwogfQogCiB2b2lkIFBl
ZXJDb25uZWN0aW9uQmFja2VuZDo6ZW5kT2ZJY2VDYW5kaWRhdGVzKERPTVByb21pc2VEZWZlcnJl
ZDx2b2lkPiYmIHByb21pc2UpCkBAIC00OTgsNDUgKzQxOSw2IEBAIHZvaWQgUGVlckNvbm5lY3Rp
b25CYWNrZW5kOjplbmRPZkljZUNhbmRpZGF0ZXMoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYg
cHJvbWlzCiAgICAgcHJvbWlzZS5yZXNvbHZlKCk7CiB9CiAKLXZvaWQgUGVlckNvbm5lY3Rpb25C
YWNrZW5kOjpyZWdpc3Rlck1ETlNOYW1lKGNvbnN0IFN0cmluZyYgaXBBZGRyZXNzKQotewotICAg
ICsrbV93YWl0aW5nRm9yTUROU1JlZ2lzdHJhdGlvbjsKLSAgICBhdXRvJiBkb2N1bWVudCA9IGRv
d25jYXN0PERvY3VtZW50PigqbV9wZWVyQ29ubmVjdGlvbi5zY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkpOwotICAgIGF1dG8mIHByb3ZpZGVyID0gZG9jdW1lbnQucGFnZSgpLT5saWJXZWJSVENQcm92
aWRlcigpOwotICAgIHByb3ZpZGVyLnJlZ2lzdGVyTUROU05hbWUoZG9jdW1lbnQuaWRlbnRpZmll
cigpLCBpcEFkZHJlc3MsIFtwZWVyQ29ubmVjdGlvbiA9IG1ha2VSZWYobV9wZWVyQ29ubmVjdGlv
biksIHRoaXMsIGlwQWRkcmVzc10gKExpYldlYlJUQ1Byb3ZpZGVyOjpNRE5TTmFtZU9yRXJyb3Im
JiByZXN1bHQpIHsKLSAgICAgICAgaWYgKHBlZXJDb25uZWN0aW9uLT5pc1N0b3BwZWQoKSkKLSAg
ICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAtLW1fd2FpdGluZ0Zvck1ETlNSZWdpc3RyYXRp
b247Ci0gICAgICAgIGlmICghcmVzdWx0Lmhhc192YWx1ZSgpKSB7Ci0gICAgICAgICAgICBtX3Bl
ZXJDb25uZWN0aW9uLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+YWRkQ29uc29sZU1lc3NhZ2Uo
TWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgbWFrZVN0cmluZygiTURO
UyByZWdpc3RyYXRpb24gb2YgYSBob3N0IGNhbmRpZGF0ZSBmYWlsZWQgd2l0aCBlcnJvciAiLCAo
dW5zaWduZWQpcmVzdWx0LmVycm9yKCkpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
fQotCi0gICAgICAgIHRoaXMtPmZpbmlzaGVkUmVnaXN0ZXJpbmdNRE5TTmFtZShpcEFkZHJlc3Ms
IHJlc3VsdC52YWx1ZSgpKTsKLSAgICB9KTsKLX0KLQotdm9pZCBQZWVyQ29ubmVjdGlvbkJhY2tl
bmQ6OmZpbmlzaGVkUmVnaXN0ZXJpbmdNRE5TTmFtZShjb25zdCBTdHJpbmcmIGlwQWRkcmVzcywg
Y29uc3QgU3RyaW5nJiBuYW1lKQotewotICAgIG1faXBBZGRyZXNzVG9NRE5TTmFtZU1hcC5hZGQo
aXBBZGRyZXNzLCBuYW1lKTsKLSAgICBWZWN0b3I8UGVuZGluZ0lDRUNhbmRpZGF0ZSo+IGNhbmRp
ZGF0ZXM7Ci0gICAgZm9yIChhdXRvJiBjYW5kaWRhdGUgOiBtX3BlbmRpbmdJQ0VDYW5kaWRhdGVz
KSB7Ci0gICAgICAgIGlmIChjYW5kaWRhdGUuc2RwLmZpbmQoaXBBZGRyZXNzKSAhPSBub3RGb3Vu
ZCkgewotICAgICAgICAgICAgYXV0byBzZHAgPSBjYW5kaWRhdGUuc2RwOwotICAgICAgICAgICAg
c2RwLnJlcGxhY2UoaXBBZGRyZXNzLCBuYW1lKTsKLSAgICAgICAgICAgIGZpcmVJQ0VDYW5kaWRh
dGVFdmVudChSVENJY2VDYW5kaWRhdGU6OmNyZWF0ZShXVEZNb3ZlKHNkcCksIFdURk1vdmUoY2Fu
ZGlkYXRlLm1pZCksIGNhbmRpZGF0ZS5zZHBNTGluZUluZGV4KSwgV1RGTW92ZShjYW5kaWRhdGUu
c2VydmVyVVJMKSk7Ci0gICAgICAgICAgICBjYW5kaWRhdGVzLmFwcGVuZCgmY2FuZGlkYXRlKTsK
LSAgICAgICAgfQotICAgIH0KLSAgICBtX3BlbmRpbmdJQ0VDYW5kaWRhdGVzLnJlbW92ZUFsbE1h
dGNoaW5nKFsmXSAoY29uc3QgYXV0byYgY2FuZGlkYXRlKSB7Ci0gICAgICAgIHJldHVybiBjYW5k
aWRhdGVzLmNvbnRhaW5zKCZjYW5kaWRhdGUpOwotICAgIH0pOwotCi0gICAgaWYgKCFtX3dhaXRp
bmdGb3JNRE5TUmVnaXN0cmF0aW9uICYmIG1fZmluaXNoZWRHYXRoZXJpbmdDYW5kaWRhdGVzKQot
ICAgICAgICBkb25lR2F0aGVyaW5nQ2FuZGlkYXRlcygpOwotfQotCiB2b2lkIFBlZXJDb25uZWN0
aW9uQmFja2VuZDo6dXBkYXRlU2lnbmFsaW5nU3RhdGUoUlRDU2lnbmFsaW5nU3RhdGUgbmV3U2ln
bmFsaW5nU3RhdGUpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5k
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFj
a2VuZC5oCmluZGV4IDFjMjU1NjYyNWVlYmMyZjc3NjIzOGE4MzVkMzc0OGIwMTZhM2Y1NjQuLjZm
M2ZiNDJhODBlMmVjNjJlY2E0MTc0NTBlZDViZjU5MmRkNmFhNjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tl
bmQuaApAQCAtMjA5LDcgKzIwOSw3IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGFkZEljZUNhbmRp
ZGF0ZVN1Y2NlZWRlZCgpOwogICAgIHZvaWQgYWRkSWNlQ2FuZGlkYXRlRmFpbGVkKEV4Y2VwdGlv
biYmKTsKIAotICAgIFN0cmluZyBmaWx0ZXJTRFAoU3RyaW5nJiYpIGNvbnN0OworICAgIHZvaWQg
dmFsaWRhdGVTRFAoY29uc3QgU3RyaW5nJikgY29uc3Q7CiAKICAgICBzdHJ1Y3QgUGVuZGluZ1Ry
YWNrRXZlbnQgewogICAgICAgICBSZWY8UlRDUnRwUmVjZWl2ZXI+IHJlY2VpdmVyOwpAQCAtMjI4
LDggKzIyOCw2IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGVuZE9mSWNlQ2FuZGlkYXRl
cyhET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJik7CiAgICAgdmlydHVhbCB2b2lkIGRvU3RvcCgp
ID0gMDsKIAotICAgIHZvaWQgcmVnaXN0ZXJNRE5TTmFtZShjb25zdCBTdHJpbmcmIGlwQWRkcmVz
cyk7Ci0KIHByb3RlY3RlZDoKICAgICBSVENQZWVyQ29ubmVjdGlvbiYgbV9wZWVyQ29ubmVjdGlv
bjsKIApAQCAtMjM3LDI2ICsyMzUsMTYgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
UGVlckNvbm5lY3Rpb246OlNlc3Npb25EZXNjcmlwdGlvblByb21pc2U+IG1fb2ZmZXJBbnN3ZXJQ
cm9taXNlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4+IG1f
c2V0RGVzY3JpcHRpb25Qcm9taXNlOwogCi0gICAgYm9vbCBtX3Nob3VsZEZpbHRlcklDRUNhbmRp
ZGF0ZXMgeyB0cnVlIH07Ci0gICAgc3RydWN0IFBlbmRpbmdJQ0VDYW5kaWRhdGUgewotICAgICAg
ICAvLyBGaWVsZHMgZGVzY3JpYmVkIGluIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJydGMvI2lk
bC1kZWYtcnRjaWNlY2FuZGlkYXRlaW5pdC4KLSAgICAgICAgU3RyaW5nIHNkcDsKLSAgICAgICAg
U3RyaW5nIG1pZDsKLSAgICAgICAgdW5zaWduZWQgc2hvcnQgc2RwTUxpbmVJbmRleDsKLSAgICAg
ICAgU3RyaW5nIHNlcnZlclVSTDsKLSAgICB9OwotICAgIFZlY3RvcjxQZW5kaW5nSUNFQ2FuZGlk
YXRlPiBtX3BlbmRpbmdJQ0VDYW5kaWRhdGVzOworICAgIGJvb2wgbV9zaG91bGRGaWx0ZXJJQ0VD
YW5kaWRhdGVzIHsgZmFsc2UgfTsKIAogICAgIFZlY3RvcjxQZW5kaW5nVHJhY2tFdmVudD4gbV9w
ZW5kaW5nVHJhY2tFdmVudHM7CiAKLSAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBtX2lwQWRk
cmVzc1RvTUROU05hbWVNYXA7CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgUmVmPGNv
bnN0IExvZ2dlcj4gbV9sb2dnZXI7CiAgICAgY29uc3Qgdm9pZCogbV9sb2dJZGVudGlmaWVyOwog
I2VuZGlmCiAgICAgYm9vbCBtX25lZ290aWF0aW9uTmVlZGVkIHsgZmFsc2UgfTsKICAgICBib29s
IG1fZmluaXNoZWRHYXRoZXJpbmdDYW5kaWRhdGVzIHsgZmFsc2UgfTsKLSAgICB1aW50NjRfdCBt
X3dhaXRpbmdGb3JNRE5TUmVnaXN0cmF0aW9uIHsgMCB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
Q29udHJvbGxlci5jcHAKaW5kZXggNzBkNDBjNmJkNWIzMjYyZjJjZmU2MTVmYmMyYjQ1YzYyOWNj
ZjQzZS4uY2YzNDVhNDYyZmNkYjIxMTlmN2ZiZGY1ZWJkZGYwMTQ1ZWJhNzZiMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENDb250cm9sbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0NvbnRyb2xsZXIuY3Bw
CkBAIC03Myw2ICs3MywxMCBAQCBib29sIFJUQ0NvbnRyb2xsZXI6OnNob3VsZERpc2FibGVJQ0VD
YW5kaWRhdGVGaWx0ZXJpbmcoRG9jdW1lbnQmIGRvY3VtZW50KQogCiB2b2lkIFJUQ0NvbnRyb2xs
ZXI6OmFkZChSVENQZWVyQ29ubmVjdGlvbiYgY29ubmVjdGlvbikKIHsKKyAgICBhdXRvJiBkb2N1
bWVudCA9IGRvd25jYXN0PERvY3VtZW50PigqY29ubmVjdGlvbi5zY3JpcHRFeGVjdXRpb25Db250
ZXh0KCkpOworICAgIGlmIChhdXRvKiBuZXR3b3JrTWFuYWdlciA9IGRvY3VtZW50LnJ0Y05ldHdv
cmtNYW5hZ2VyKCkpCisgICAgICAgIG5ldHdvcmtNYW5hZ2VyLT5zZXRJQ0VDYW5kaWRhdGVGaWx0
ZXJpbmcoIXNob3VsZERpc2FibGVJQ0VDYW5kaWRhdGVGaWx0ZXJpbmcoZG9jdW1lbnQpKTsKKwog
ICAgIG1fcGVlckNvbm5lY3Rpb25zLmFwcGVuZChjb25uZWN0aW9uKTsKICAgICBpZiAoc2hvdWxk
RGlzYWJsZUlDRUNhbmRpZGF0ZUZpbHRlcmluZyhkb3duY2FzdDxEb2N1bWVudD4oKmNvbm5lY3Rp
b24uc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSkpCiAgICAgICAgIGNvbm5lY3Rpb24uZGlzYWJs
ZUlDRUNhbmRpZGF0ZUZpbHRlcmluZygpOwpAQCAtODQsOCArODgsMTMgQEAgdm9pZCBSVENDb250
cm9sbGVyOjpkaXNhYmxlSUNFQ2FuZGlkYXRlRmlsdGVyaW5nRm9yQWxsT3JpZ2lucygpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIG1fc2hvdWxkRmlsdGVySUNFQ2FuZGlkYXRlcyA9IGZhbHNlOwot
ICAgIGZvciAoUlRDUGVlckNvbm5lY3Rpb24mIGNvbm5lY3Rpb24gOiBtX3BlZXJDb25uZWN0aW9u
cykKKyAgICBmb3IgKFJUQ1BlZXJDb25uZWN0aW9uJiBjb25uZWN0aW9uIDogbV9wZWVyQ29ubmVj
dGlvbnMpIHsKKyAgICAgICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+
KGNvbm5lY3Rpb24uc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSkgeworICAgICAgICAgICAgaWYg
KGF1dG8qIG5ldHdvcmtNYW5hZ2VyID0gZG9jdW1lbnQtPnJ0Y05ldHdvcmtNYW5hZ2VyKCkpCisg
ICAgICAgICAgICAgICAgbmV0d29ya01hbmFnZXItPnNldElDRUNhbmRpZGF0ZUZpbHRlcmluZyhm
YWxzZSk7CisgICAgICAgIH0KICAgICAgICAgY29ubmVjdGlvbi5kaXNhYmxlSUNFQ2FuZGlkYXRl
RmlsdGVyaW5nKCk7CisgICAgfQogfQogCiB2b2lkIFJUQ0NvbnRyb2xsZXI6OmRpc2FibGVJQ0VD
YW5kaWRhdGVGaWx0ZXJpbmdGb3JEb2N1bWVudChEb2N1bWVudCYgZG9jdW1lbnQpCkBAIC05Mywx
MSArMTAyLDE3IEBAIHZvaWQgUlRDQ29udHJvbGxlcjo6ZGlzYWJsZUlDRUNhbmRpZGF0ZUZpbHRl
cmluZ0ZvckRvY3VtZW50KERvY3VtZW50JiBkb2N1bWVudCkKICAgICBpZiAoIUxpYldlYlJUQ1By
b3ZpZGVyOjp3ZWJSVENBdmFpbGFibGUoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgaWYgKGF1
dG8qIG5ldHdvcmtNYW5hZ2VyID0gZG9jdW1lbnQucnRjTmV0d29ya01hbmFnZXIoKSkKKyAgICAg
ICAgbmV0d29ya01hbmFnZXItPnNldElDRUNhbmRpZGF0ZUZpbHRlcmluZyhmYWxzZSk7CisKICAg
ICBtX2ZpbHRlcmluZ0Rpc2FibGVkT3JpZ2lucy5hcHBlbmQoUGVlckNvbm5lY3Rpb25PcmlnaW4g
eyBkb2N1bWVudC50b3BPcmlnaW4oKSwgZG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4oKSB9KTsKICAg
ICBmb3IgKFJUQ1BlZXJDb25uZWN0aW9uJiBjb25uZWN0aW9uIDogbV9wZWVyQ29ubmVjdGlvbnMp
IHsKICAgICAgICAgaWYgKGF1dG8qIHBlZXJDb25uZWN0aW9uRG9jdW1lbnQgPSBkb3duY2FzdDxE
b2N1bWVudD4oY29ubmVjdGlvbi5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpKSB7Ci0gICAgICAg
ICAgICBpZiAobWF0Y2hEb2N1bWVudE9yaWdpbigqcGVlckNvbm5lY3Rpb25Eb2N1bWVudCwgZG9j
dW1lbnQudG9wT3JpZ2luKCksIGRvY3VtZW50LnNlY3VyaXR5T3JpZ2luKCkpKQorICAgICAgICAg
ICAgaWYgKG1hdGNoRG9jdW1lbnRPcmlnaW4oKnBlZXJDb25uZWN0aW9uRG9jdW1lbnQsIGRvY3Vt
ZW50LnRvcE9yaWdpbigpLCBkb2N1bWVudC5zZWN1cml0eU9yaWdpbigpKSkgeworICAgICAgICAg
ICAgICAgIGlmIChhdXRvKiBuZXR3b3JrTWFuYWdlciA9IHBlZXJDb25uZWN0aW9uRG9jdW1lbnQt
PnJ0Y05ldHdvcmtNYW5hZ2VyKCkpCisgICAgICAgICAgICAgICAgICAgIG5ldHdvcmtNYW5hZ2Vy
LT5zZXRJQ0VDYW5kaWRhdGVGaWx0ZXJpbmcoZmFsc2UpOwogICAgICAgICAgICAgICAgIGNvbm5l
Y3Rpb24uZGlzYWJsZUlDRUNhbmRpZGF0ZUZpbHRlcmluZygpOworICAgICAgICAgICAgfQogICAg
ICAgICB9CiAgICAgfQogfQpAQCAtMTA5LDggKzEyNCwxMyBAQCB2b2lkIFJUQ0NvbnRyb2xsZXI6
OmVuYWJsZUlDRUNhbmRpZGF0ZUZpbHRlcmluZygpCiAKICAgICBtX2ZpbHRlcmluZ0Rpc2FibGVk
T3JpZ2lucy5jbGVhcigpOwogICAgIG1fc2hvdWxkRmlsdGVySUNFQ2FuZGlkYXRlcyA9IHRydWU7
Ci0gICAgZm9yIChSVENQZWVyQ29ubmVjdGlvbiYgY29ubmVjdGlvbiA6IG1fcGVlckNvbm5lY3Rp
b25zKQorICAgIGZvciAoUlRDUGVlckNvbm5lY3Rpb24mIGNvbm5lY3Rpb24gOiBtX3BlZXJDb25u
ZWN0aW9ucykgewogICAgICAgICBjb25uZWN0aW9uLmVuYWJsZUlDRUNhbmRpZGF0ZUZpbHRlcmlu
ZygpOworICAgICAgICBpZiAoYXV0byogZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oY29u
bmVjdGlvbi5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpKSB7CisgICAgICAgICAgICBpZiAoYXV0
byogbmV0d29ya01hbmFnZXIgPSBkb2N1bWVudC0+cnRjTmV0d29ya01hbmFnZXIoKSkKKyAgICAg
ICAgICAgICAgICBuZXR3b3JrTWFuYWdlci0+c2V0SUNFQ2FuZGlkYXRlRmlsdGVyaW5nKHRydWUp
OworICAgICAgICB9CisgICAgfQogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ05ldHdvcmtNYW5hZ2Vy
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ05ldHdvcmtNYW5hZ2Vy
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNWYzNmZkNDYxZjgxYWJiYTJjMDJiYjgxZjFmYjVmOTk3ODAyNWZkMAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
TmV0d29ya01hbmFnZXIuaApAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaWYgRU5BQkxFKFdFQl9SVEMpCisKKyNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJl
ZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBSVENOZXR3b3JrTWFu
YWdlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxSVENOZXR3b3JrTWFuYWdlciwgV1RG
OjpEZXN0cnVjdGlvblRocmVhZDo6TWFpblJ1bkxvb3A+IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFs
IH5SVENOZXR3b3JrTWFuYWdlcigpID0gZGVmYXVsdDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0SUNF
Q2FuZGlkYXRlRmlsdGVyaW5nKGJvb2wpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3Rl
ck1ETlNOYW1lcygpID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIEVOQUJMRShXRUJfUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRwb2ludC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBv
aW50LmNwcAppbmRleCA1M2M0NGFkZjEyYTliZWQ3NGNhNWRiOGE5NTY4MDIzZDg5OTI2NjU1Li4y
MjA4N2EzNjJkZjZjODkwYjU5OWIxMWZkMWQ0NDU4ZTllYjhhMTNkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVu
ZHBvaW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmNwcApAQCAtOTMsMTUgKzkzLDE1IEBAIGJvb2wg
TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6c2V0Q29uZmlndXJhdGlvbihMaWJXZWJSVENQcm92aWRl
ciYgY2xpZW50LCB3ZWJydGM6CiAgICAgY29uZmlndXJhdGlvbi5zZHBfc2VtYW50aWNzID0gd2Vi
cnRjOjpTZHBTZW1hbnRpY3M6OmtVbmlmaWVkUGxhbjsKIAogICAgIGlmICghbV9iYWNrZW5kKSB7
CisgICAgICAgIGF1dG8mIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KCptX3BlZXJDb25u
ZWN0aW9uQmFja2VuZC5jb25uZWN0aW9uKCkuc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKICAg
ICAgICAgaWYgKCFtX3J0Y1NvY2tldEZhY3RvcnkpIHsKLSAgICAgICAgICAgIGF1dG8mIGRvY3Vt
ZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KCptX3BlZXJDb25uZWN0aW9uQmFja2VuZC5jb25uZWN0
aW9uKCkuc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICAgICAgICAgIFJlZ2lzdHJhYmxl
RG9tYWluIGRvbWFpbiB7IGRvY3VtZW50LnVybCgpIH07CiAgICAgICAgICAgICBib29sIGlzRmly
c3RQYXJ0eSA9IGRvbWFpbiA9PSBSZWdpc3RyYWJsZURvbWFpbihkb2N1bWVudC5maXJzdFBhcnR5
Rm9yQ29va2llcygpKTsKICAgICAgICAgICAgIG1fcnRjU29ja2V0RmFjdG9yeSA9IGNsaWVudC5j
cmVhdGVTb2NrZXRGYWN0b3J5KGRvY3VtZW50LnVzZXJBZ2VudChkb2N1bWVudC51cmwoKSksIGlz
Rmlyc3RQYXJ0eSwgV1RGTW92ZShkb21haW4pKTsKICAgICAgICAgICAgIGlmICghbV9wZWVyQ29u
bmVjdGlvbkJhY2tlbmQuc2hvdWxkRmlsdGVySUNFQ2FuZGlkYXRlcygpKQogICAgICAgICAgICAg
ICAgIG1fcnRjU29ja2V0RmFjdG9yeS0+ZGlzYWJsZVJlbGF5KCk7CiAgICAgICAgIH0KLSAgICAg
ICAgbV9iYWNrZW5kID0gY2xpZW50LmNyZWF0ZVBlZXJDb25uZWN0aW9uKCp0aGlzLCBtX3J0Y1Nv
Y2tldEZhY3RvcnkuZ2V0KCksIFdURk1vdmUoY29uZmlndXJhdGlvbikpOworICAgICAgICBtX2Jh
Y2tlbmQgPSBjbGllbnQuY3JlYXRlUGVlckNvbm5lY3Rpb24oZG9jdW1lbnQuaWRlbnRpZmllcigp
LCAqdGhpcywgbV9ydGNTb2NrZXRGYWN0b3J5LmdldCgpLCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24p
KTsKICAgICAgICAgcmV0dXJuICEhbV9iYWNrZW5kOwogICAgIH0KICAgICBhdXRvIG9sZENvbmZp
Z3VyYXRpb24gPSBtX2JhY2tlbmQtPkdldENvbmZpZ3VyYXRpb24oKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJD
b25uZWN0aW9uQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwCmluZGV4IDU5NjAy
YjA5YWVjOWUwYWJiM2QyMjdjMzBmOTI4OTRkNGJhNmQ2MjQuLmM2OWUwYzZkN2JlNzBiZTFkNzAx
MzA4MTM3ZDhlMzVjZmUyYmUzYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2Vi
UlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcApAQCAtMzEwLDcgKzMxMCw3IEBAIFJlZlB0cjxS
VENTZXNzaW9uRGVzY3JpcHRpb24+IExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6Y3Vy
cmVudExvY2FsRGVzY3JpCiB7CiAgICAgYXV0byBkZXNjcmlwdGlvbiA9IG1fZW5kcG9pbnQtPmN1
cnJlbnRMb2NhbERlc2NyaXB0aW9uKCk7CiAgICAgaWYgKGRlc2NyaXB0aW9uKQotICAgICAgICBk
ZXNjcmlwdGlvbi0+c2V0U2RwKGZpbHRlclNEUChTdHJpbmcoZGVzY3JpcHRpb24tPnNkcCgpKSkp
OworICAgICAgICB2YWxpZGF0ZVNEUChkZXNjcmlwdGlvbi0+c2RwKCkpOwogICAgIHJldHVybiBk
ZXNjcmlwdGlvbjsKIH0KIApAQCAtMzIzLDcgKzMyMyw3IEBAIFJlZlB0cjxSVENTZXNzaW9uRGVz
Y3JpcHRpb24+IExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6cGVuZGluZ0xvY2FsRGVz
Y3JpCiB7CiAgICAgYXV0byBkZXNjcmlwdGlvbiA9IG1fZW5kcG9pbnQtPnBlbmRpbmdMb2NhbERl
c2NyaXB0aW9uKCk7CiAgICAgaWYgKGRlc2NyaXB0aW9uKQotICAgICAgICBkZXNjcmlwdGlvbi0+
c2V0U2RwKGZpbHRlclNEUChTdHJpbmcoZGVzY3JpcHRpb24tPnNkcCgpKSkpOworICAgICAgICB2
YWxpZGF0ZVNEUChkZXNjcmlwdGlvbi0+c2RwKCkpOwogICAgIHJldHVybiBkZXNjcmlwdGlvbjsK
IH0KIApAQCAtMzM2LDcgKzMzNiw3IEBAIFJlZlB0cjxSVENTZXNzaW9uRGVzY3JpcHRpb24+IExp
YldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6bG9jYWxEZXNjcmlwdGlvbigpCiB7CiAgICAg
YXV0byBkZXNjcmlwdGlvbiA9IG1fZW5kcG9pbnQtPmxvY2FsRGVzY3JpcHRpb24oKTsKICAgICBp
ZiAoZGVzY3JpcHRpb24pCi0gICAgICAgIGRlc2NyaXB0aW9uLT5zZXRTZHAoZmlsdGVyU0RQKFN0
cmluZyhkZXNjcmlwdGlvbi0+c2RwKCkpKSk7CisgICAgICAgIHZhbGlkYXRlU0RQKGRlc2NyaXB0
aW9uLT5zZHAoKSk7CiAgICAgcmV0dXJuIGRlc2NyaXB0aW9uOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOWNmYzVmMjVk
MDRmZWJkMjliMmMxZjRmZTBkYjE4OGMwNGExMTUwNi4uZTQ5YmNmYWZmZjc0ZTdiNTE2ODU2ODg0
M2YzM2YwODcyMTIxYzg0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTE3Miw2ICsxMTcyLDkgQEAKIAkJNDFCODc3NjIyM0RF
MTA0NTAwMzYzOEI4IC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUI4Nzc2MDIzREUxMDQyMDAz
NjM4QjggLyogUmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MUJCQTg2NjI1N0UzNzNCMDBBQzdG
NkQgLyogU0ZyYW1lVXRpbHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQxMjA5RTI0MjU3QTJGQkIwMDEyMEFDQSAvKiBTRnJhbWVVdGlscy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxQkYyMDQ5MjJC
QTdCRTgwMDA0RjgxMiAvKiBSZWFsdGltZVZpZGVvU291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUJGMjA0MDIyQjk0NzE2MDAwNEY4MTIgLyog
UmVhbHRpbWVWaWRlb1NvdXJjZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCTQxQzE0QkM2MjZERTZERTgwMDY4NUJGNSAvKiBSVENOZXR3b3JrTWFu
YWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFD
MTRCQzQyNkRFNkRFODAwNjg1QkY1IC8qIFJUQ05ldHdvcmtNYW5hZ2VyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDFDMTRCQzcyNkRFODU4NDAw
Njg1QkY1IC8qIExpYldlYlJUQ1V0aWxzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0MUQxQTA0QzIxM0VEREZGMDA2M0ZCNkIgLyogTGliV2ViUlRDVXRp
bHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0
MUMxNEJDOTI2REY3OUQ3MDA2ODVCRjUgLyogTUROU1JlZ2lzdGVyRXJyb3IuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQzE0QkM4MjZERjc5RDYwMDY4
NUJGNSAvKiBNRE5TUmVnaXN0ZXJFcnJvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTQxQzNCOEExMjY0OUIxRTAwMDRFRDRERSAvKiBBdWRpb01l
ZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFDM0I4OUYyNjQ5QjFCNzAwNEVENERFIC8qIEF1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDFDM0I4QTIyNjQ5QjFFNTAwNEVE
NERFIC8qIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFDM0I4OUIyNjQ5QjFCNjAwNEVENERF
IC8qIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxQzc2MEIxMEVERTAzRDMwMEMxNjU1
RiAvKiBTY3JpcHRTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDFDNzYwQjAwRURFMDNEMzAwQzE2NTVGIC8qIFNjcmlwdFN0YXRlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTgwNDQsNiArODA0
Nyw4IEBACiAJCTQxQkNFODc3MjVGN0E2N0EwMDQ2QzJFNSAvKiBSVENUcmFuc2Zvcm1FdmVudC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSVENUcmFuc2Zvcm1FdmVudC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUJGMjA0MDIyQjk0NzE2MDAwNEY4MTIgLyog
UmVhbHRpbWVWaWRlb1NvdXJjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWFsdGltZVZpZGVvU291cmNl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQkYyMDQyMjJCOTQ3MTcwMDA0Rjgx
MiAvKiBSZWFsdGltZVZpZGVvU291cmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlYWx0aW1l
VmlkZW9Tb3VyY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUMxNEJDNDI2
REU2REU4MDA2ODVCRjUgLyogUlRDTmV0d29ya01hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUlRDTmV0d29ya01hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNDFDMTRCQzgyNkRGNzlENjAwNjg1QkY1IC8qIE1ETlNSZWdpc3RlckVycm9yLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1ETlNSZWdpc3RlckVycm9yLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQzNCODlCMjY0OUIxQjYwMDRFRDRERSAvKiBB
dWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXVkaW9N
ZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQxQzNCODlDMjY0OUIxQjYwMDRFRDRERSAvKiBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5k
ZXJlckNvY29hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVy
Q29jb2EuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFDM0I4OUQyNjQ5QjFCNjAw
NEVENERFIC8qIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2EuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzI1NCw2ICsxNzI1OSw3IEBACiAJCQkJMzE2RENC
ODkxRTdBNjk5NjAwMUI1Rjg3IC8qIFJUQ0ljZVRyYW5zcG9ydC5pZGwgKi8sCiAJCQkJNDE0NTE2
RTAyNkNDMDQyMTAwQUFBQkUwIC8qIFJUQ0ljZVRyYW5zcG9ydEJhY2tlbmQuaCAqLywKIAkJCQkz
MTZEQ0I4RTFFN0E2Qzc5MDAxQjVGODcgLyogUlRDSWNlVHJhbnNwb3J0U3RhdGUuaWRsICovLAor
CQkJCTQxQzE0QkM0MjZERTZERTgwMDY4NUJGNSAvKiBSVENOZXR3b3JrTWFuYWdlci5oICovLAog
CQkJCTA3Mzc5NERDMTlFRTJDNTIwMEU1QTA0NSAvKiBSVENPZmZlckFuc3dlck9wdGlvbnMuaCAq
LywKIAkJCQkzMTZEQ0IxMjFFNzhCRTQzMDAxQjVGODcgLyogUlRDT2ZmZXJBbnN3ZXJPcHRpb25z
LmlkbCAqLywKIAkJCQkzMTZEQ0IyODFFNzhGMzk1MDAxQjVGODcgLyogUlRDT2ZmZXJPcHRpb25z
LmggKi8sCkBAIC0xNzM4MSw2ICsxNzM4Nyw3IEBACiAJCQkJMDdCNzExNkIxRDg5OUU2MzAwOUYw
RkZCIC8qIENhcHR1cmVEZXZpY2VNYW5hZ2VyLmNwcCAqLywKIAkJCQkwN0I3MTE2QzFEODk5RTYz
MDA5RjBGRkIgLyogQ2FwdHVyZURldmljZU1hbmFnZXIuaCAqLywKIAkJCQk1RUJCODkzMDFDNzc3
N0UxMDBDNjVENDEgLyogSWNlQ2FuZGlkYXRlLmggKi8sCisJCQkJNDFDMTRCQzgyNkRGNzlENjAw
Njg1QkY1IC8qIE1ETlNSZWdpc3RlckVycm9yLmggKi8sCiAJCQkJMUJFNUJGQzExRDUxNTcxNTAw
MTY2NkQ5IC8qIE1lZGlhQ29uc3RyYWludHMuY3BwICovLAogCQkJCTA3MjIxQjk5MTdDRjBBRDQw
MDg0OEU1MSAvKiBNZWRpYUNvbnN0cmFpbnRzLmggKi8sCiAJCQkJNDFCMjhCMTMxRjg1MDFBNDAw
RkI1MkFDIC8qIE1lZGlhRW5kcG9pbnRDb25maWd1cmF0aW9uLmNwcCAqLywKQEAgLTMzNTgzLDYg
KzMzNTkwLDcgQEAKIAkJCQk0MTgxQzVDRDI1NTU4MzY5MDBBRUIwRkYgLyogTGliV2ViUlRDUnRw
VHJhbnNmb3JtYWJsZUZyYW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTgxQzVEMTI1NTU4OTU2
MDBBRUIwRkYgLyogTGliV2ViUlRDUnRwVHJhbnNmb3JtQmFja2VuZC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNDEwRTQ0NjEyMzQzNzNFOTAwMDE3M0Q0IC8qIExpYldlYlJUQ1NvY2tldElkZW50aWZp
ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxQzE0QkM3MjZERTg1ODQwMDY4NUJGNSAvKiBMaWJX
ZWJSVENVdGlscy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODQ3MzBEOTExMjQ4RjBCMzAwRDNBOUM5
IC8qIExpZ2h0U291cmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyNzk2NTBEMDBCRjIyMDA3
MUI3ODIgLyogTGluZWFyR3JhZGllbnRBdHRyaWJ1dGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
QjMxQzkxRTEwQUUxQjhFMDAwQzdCOTIgLyogTGluZUNsYW1wVmFsdWUuaCBpbiBIZWFkZXJzICov
LApAQCAtMzM2NDYsNiArMzM2NTQsNyBAQAogCQkJCTQzOTA0NkVBMTJEQTI1RTgxMkFGODBBQyAv
KiBNYXRoT3BlcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5RDVEQzJDMEY0MjNBNzMwMDhG
MjBGRCAvKiBNYXRyaXgzRFRyYW5zZm9ybU9wZXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NDlFOTExQzcwRUY4NkQ0NzAwOUQwQ0FGIC8qIE1hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbi5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNDFDMTRCQzkyNkRGNzlENzAwNjg1QkY1IC8qIE1ETlNSZWdpc3Rl
ckVycm9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0JDOERBRDFBQUEzMDIyMDBFMUM4MDMgLyog
TWVkaWFBY2Nlc3NpYmlsaXR5U29mdExpbmsuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMUJDQzYx
MTEyNERGQ0IwMEJFNzBERCAvKiBNZWRpYUNhblN0YXJ0TGlzdGVuZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCUNEQ0M5QkNGMjIzODdFOUEwMEZGQjUxQyAvKiBNZWRpYUNhcGFiaWxpdGllc0RlY29k
aW5nSW5mby5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNDQ2MSw2ICszNDQ3MCw3IEBACiAJCQkJMDdB
Qjk5NkIxOERBM0MwMTAwMTg3NzFFIC8qIFJUQ0ljZVNlcnZlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMzEzNTkxMDgxRTdEREM3MzAwRjMwNjMwIC8qIFJUQ0ljZVRyYW5zcG9ydFBvbGljeS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMzEzNTkxMDkxRTdEREM3MzAwRjMwNjMwIC8qIFJUQ0ljZVRyYW5z
cG9ydFN0YXRlLmggaW4gSGVhZGVycyAqLywKKwkJCQk0MUMxNEJDNjI2REU2REU4MDA2ODVCRjUg
LyogUlRDTmV0d29ya01hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3Mzc5NEZFMTlGNTg2
NEUwMEU1QTA0NSAvKiBSVENOb3RpZmllcnNNb2NrLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzM3
OTRERTE5RUUyQzUyMDBFNUEwNDUgLyogUlRDT2ZmZXJBbnN3ZXJPcHRpb25zLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwNzhFMDkyNTE3RDE0RDFDMDA0MjBBQTEgLyogUlRDUGVlckNvbm5lY3Rpb24u
aCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggOTQ2NmZkOWY3ZjU0
N2ZkZDliZWYwNGVmODU3YTJhNmVjYTJiMWZkOC4uOTY0OWE0NTZjMmIwODIwMGRhNWQ3Zjc4OTgw
ZmFhNjZlZDEyYWFjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0yNTk1LDEyICsyNTk1
LDkgQEAgdm9pZCBEb2N1bWVudDo6d2lsbEJlUmVtb3ZlZEZyb21GcmFtZSgpCiAgICAgaWYgKG1f
aGFzUHJlcGFyZWRGb3JEZXN0cnVjdGlvbikKICAgICAgICAgcmV0dXJuOwogCi0jaWYgVVNFKExJ
QldFQlJUQykKLSAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgbW92ZWQgdG8gTW9kdWxlcy9t
ZWRpYXN0cmVhbS4KLSAgICBpZiAoTGliV2ViUlRDUHJvdmlkZXI6OndlYlJUQ0F2YWlsYWJsZSgp
KSB7Ci0gICAgICAgIGlmIChhdXRvKiBwYWdlID0gdGhpcy0+cGFnZSgpKQotICAgICAgICAgICAg
cGFnZS0+bGliV2ViUlRDUHJvdmlkZXIoKS51bnJlZ2lzdGVyTUROU05hbWVzKGlkZW50aWZpZXIo
KSk7Ci0gICAgfQorI2lmIEVOQUJMRShXRUJfUlRDKQorICAgIGlmIChtX3J0Y05ldHdvcmtNYW5h
Z2VyKQorICAgICAgICBtX3J0Y05ldHdvcmtNYW5hZ2VyLT51bnJlZ2lzdGVyTUROU05hbWVzKCk7
CiAjZW5kaWYKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKQEAgLTU2MTcsMTIgKzU2MTQs
OSBAQCB2b2lkIERvY3VtZW50OjpzdXNwZW5kKFJlYXNvbkZvclN1c3BlbnNpb24gcmVhc29uKQog
ICAgICAgICAgICAgdmlldy0+Y29tcG9zaXRvcigpLmNhbmNlbENvbXBvc2l0aW5nTGF5ZXJVcGRh
dGUoKTsKICAgICB9CiAKLSNpZiBVU0UoTElCV0VCUlRDKQotICAgIC8vIEZJWE1FOiBUaGlzIHNo
b3VsZCBiZSBtb3ZlZCB0byBNb2R1bGVzL21lZGlhc3RyZWFtLgotICAgIGlmIChMaWJXZWJSVENQ
cm92aWRlcjo6d2ViUlRDQXZhaWxhYmxlKCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHBhZ2UgPSB0
aGlzLT5wYWdlKCkpCi0gICAgICAgICAgICBwYWdlLT5saWJXZWJSVENQcm92aWRlcigpLnVucmVn
aXN0ZXJNRE5TTmFtZXMoaWRlbnRpZmllcigpKTsKLSAgICB9CisjaWYgRU5BQkxFKFdFQl9SVEMp
CisgICAgaWYgKG1fcnRjTmV0d29ya01hbmFnZXIpCisgICAgICAgIG1fcnRjTmV0d29ya01hbmFn
ZXItPnVucmVnaXN0ZXJNRE5TTmFtZXMoKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNFUlZJQ0Vf
V09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCBhZjVlNzg1MGNhOTIxNWYyMjkxZDUwNGIy
ZGY4ZTljMmQwZDUzYjk2Li44MjMwOTgzYTZhNjFmMTlmOWI5MWEyNzFkNDAxMDQzNTQ3OTRjM2Iw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtNDksNiArNDksNyBAQAogI2luY2x1ZGUgIlBhZ2VJ
ZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1FdmVudC5oIgogI2luY2x1ZGUgIlBsYXli
YWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJSVENOZXR3b3Jr
TWFuYWdlci5oIgogI2luY2x1ZGUgIlJlZmVycmVyUG9saWN5LmgiCiAjaW5jbHVkZSAiUmVnaW9u
LmgiCiAjaW5jbHVkZSAiUmVnaXN0cmFibGVEb21haW4uaCIKQEAgLTcwOCw2ICs3MDksMTEgQEAg
cHVibGljOgogICAgIFNvY2tldFByb3ZpZGVyKiBzb2NrZXRQcm92aWRlcigpIGZpbmFsOwogICAg
IFJlZlB0cjxSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXJDb25uZWN0aW9uPiBjcmVhdGVSVENE
YXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXJDb25uZWN0aW9uKCkgZmluYWw7CiAKKyNpZiBFTkFCTEUo
V0VCX1JUQykKKyAgICBSVENOZXR3b3JrTWFuYWdlciogcnRjTmV0d29ya01hbmFnZXIoKSB7IHJl
dHVybiBtX3J0Y05ldHdvcmtNYW5hZ2VyLmdldCgpOyB9CisgICAgdm9pZCBzZXRSVENOZXR3b3Jr
TWFuYWdlcihSZWY8UlRDTmV0d29ya01hbmFnZXI+JiYgcnRjTmV0d29ya01hbmFnZXIpIHsgbV9y
dGNOZXR3b3JrTWFuYWdlciA9IFdURk1vdmUocnRjTmV0d29ya01hbmFnZXIpOyB9CisjZW5kaWYK
KwogICAgIGJvb2wgY2FuTmF2aWdhdGUoRnJhbWUqIHRhcmdldEZyYW1lLCBjb25zdCBVUkwmIGRl
c3RpbmF0aW9uVVJMID0gVVJMKCkpOwogCiAgICAgYm9vbCB1c2VzU3R5bGVCYXNlZEVkaXRhYmls
aXR5KCkgY29uc3Q7CkBAIC0yMjIxLDYgKzIyMjcsMTAgQEAgcHJpdmF0ZToKIAogICAgIExpc3RI
YXNoU2V0PFJlZjxFbGVtZW50Pj4gbV90b3BMYXllckVsZW1lbnRzOwogICAgIFVuaXF1ZVJlZjxX
aGl0ZXNwYWNlQ2FjaGU+IG1fd2hpdGVzcGFjZUNhY2hlOworCisjaWYgRU5BQkxFKFdFQl9SVEMp
CisgICAgUmVmUHRyPFJUQ05ldHdvcmtNYW5hZ2VyPiBtX3J0Y05ldHdvcmtNYW5hZ2VyOworI2Vu
ZGlmCiB9OwogCiBFbGVtZW50KiBldmVudFRhcmdldEVsZW1lbnRGb3JEb2N1bWVudChEb2N1bWVu
dCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTURO
U1JlZ2lzdGVyRXJyb3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01E
TlNSZWdpc3RlckVycm9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzdjNWRhZmUzM2ZiZTY0ZTdhODI2YzE1MWI2
YmUzY2E1MmZhNTU1ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL01ETlNSZWdpc3RlckVycm9yLmgKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL0VudW1UcmFpdHMuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitlbnVtIGNsYXNzIE1ETlNSZWdpc3RlckVycm9yIHsgTm90SW1w
bGVtZW50ZWQsIEJhZFBhcmFtZXRlciwgRE5TU0QsIEludGVybmFsLCBUaW1lb3V0IH07CisKK30K
KworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29y
ZTo6TUROU1JlZ2lzdGVyRXJyb3I+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAor
ICAgICAgICBXZWJDb3JlOjpNRE5TUmVnaXN0ZXJFcnJvciwKKyAgICAgICAgV2ViQ29yZTo6TURO
U1JlZ2lzdGVyRXJyb3I6Ok5vdEltcGxlbWVudGVkLAorICAgICAgICBXZWJDb3JlOjpNRE5TUmVn
aXN0ZXJFcnJvcjo6QmFkUGFyYW1ldGVyLAorICAgICAgICBXZWJDb3JlOjpNRE5TUmVnaXN0ZXJF
cnJvcjo6RE5TU0QsCisgICAgICAgIFdlYkNvcmU6Ok1ETlNSZWdpc3RlckVycm9yOjpJbnRlcm5h
bCwKKyAgICAgICAgV2ViQ29yZTo6TUROU1JlZ2lzdGVyRXJyb3I6OlRpbWVvdXQKKyAgICA+Owor
fTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHAKaW5kZXggYzU5NTYx
Nzg3MmIyMmI5ZWMzZjUzMmQzNDViMDhjMTZmZTZiZmQ2ZC4uNWFmNzlhZDQ4NTg2ODQwZjQ4NzU3
ZGVmZThhM2E2NmU1NmQzYmVjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIu
Y3BwCkBAIC0yOTksNyArMjk5LDcgQEAgdm9pZCBMaWJXZWJSVENQcm92aWRlcjo6ZW5hYmxlRW51
bWVyYXRpbmdBbGxOZXR3b3JrSW50ZXJmYWNlcygpCiAgICAgbV9lbmFibGVFbnVtZXJhdGluZ0Fs
bE5ldHdvcmtJbnRlcmZhY2VzID0gdHJ1ZTsKIH0KIAotcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0
Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U+IExpYldlYlJUQ1Byb3ZpZGVyOjpjcmVhdGVQZWVy
Q29ubmVjdGlvbih3ZWJydGM6OlBlZXJDb25uZWN0aW9uT2JzZXJ2ZXImIG9ic2VydmVyLCBydGM6
OlBhY2tldFNvY2tldEZhY3RvcnkqLCB3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpS
VENDb25maWd1cmF0aW9uJiYgY29uZmlndXJhdGlvbikKK3J0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJy
dGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlPiBMaWJXZWJSVENQcm92aWRlcjo6Y3JlYXRlUGVl
ckNvbm5lY3Rpb24oRG9jdW1lbnRJZGVudGlmaWVyLCB3ZWJydGM6OlBlZXJDb25uZWN0aW9uT2Jz
ZXJ2ZXImIG9ic2VydmVyLCBydGM6OlBhY2tldFNvY2tldEZhY3RvcnkqLCB3ZWJydGM6OlBlZXJD
b25uZWN0aW9uSW50ZXJmYWNlOjpSVENDb25maWd1cmF0aW9uJiYgY29uZmlndXJhdGlvbikKIHsK
ICAgICAvLyBEZWZhdWx0IFdLMSBpbXBsZW1lbnRhdGlvbi4KICAgICBBU1NFUlQobV91c2VOZXR3
b3JrVGhyZWFkV2l0aFNvY2tldFNlcnZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRl
ci5oCmluZGV4IDE4NjI3ZWU1N2Y3NThhMDQ3MjJkMTYxNmYwZjg3NjI4NDM0MTE1YjcuLjk0MjA3
M2IzMmUxN2U1NDY2OWU3ZWQyMzhhNWYxOTExNTE0YjI0NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJX
ZWJSVENQcm92aWRlci5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJEb2N1bWVudElk
ZW50aWZpZXIuaCIKICNpbmNsdWRlICJMaWJXZWJSVENNYWNyb3MuaCIKKyNpbmNsdWRlICJNRE5T
UmVnaXN0ZXJFcnJvci5oIgogI2luY2x1ZGUgIlJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlckNv
bm5lY3Rpb24uaCIKICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRl
IDx3dGYvRXhwZWN0ZWQuaD4KQEAgLTY2LDggKzY3LDYgQEAgY2xhc3MgUmVnaXN0cmFibGVEb21h
aW47CiBzdHJ1Y3QgUGVlckNvbm5lY3Rpb25GYWN0b3J5QW5kVGhyZWFkczsKIHN0cnVjdCBSVENS
dHBDYXBhYmlsaXRpZXM7CiAKLWVudW0gY2xhc3MgTUROU1JlZ2lzdGVyRXJyb3IgeyBOb3RJbXBs
ZW1lbnRlZCwgQmFkUGFyYW1ldGVyLCBETlNTRCwgSW50ZXJuYWwsIFRpbWVvdXQgfTsKLQogY2xh
c3MgV0VCQ09SRV9FWFBPUlQgTGliV2ViUlRDUHJvdmlkZXIgewogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgpAQCAtODYsMTggKzg1LDEwIEBAIHB1YmxpYzoKICAgICB1c2lu
ZyBJUEFkZHJlc3NPckVycm9yID0gRXhwZWN0ZWQ8U3RyaW5nLCBNRE5TUmVnaXN0ZXJFcnJvcj47
CiAgICAgdXNpbmcgTUROU05hbWVPckVycm9yID0gRXhwZWN0ZWQ8U3RyaW5nLCBNRE5TUmVnaXN0
ZXJFcnJvcj47CiAKLSAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3Rlck1ETlNOYW1lcyhEb2N1bWVu
dElkZW50aWZpZXIpIHsgfQotCi0gICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyTUROU05hbWUoRG9j
dW1lbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGlwQWRkcmVzcywgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChNRE5TTmFtZU9yRXJyb3ImJik+JiYgY2FsbGJhY2spCi0gICAgewotICAgICAgICBV
TlVTRURfUEFSQU0oaXBBZGRyZXNzKTsKLSAgICAgICAgY2FsbGJhY2sobWFrZVVuZXhwZWN0ZWQo
TUROU1JlZ2lzdGVyRXJyb3I6Ok5vdEltcGxlbWVudGVkKSk7Ci0gICAgfQotCiAgICAgdmlydHVh
bCBSZWZQdHI8UlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyQ29ubmVjdGlvbj4gY3JlYXRlUlRD
RGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyQ29ubmVjdGlvbigpIHsgcmV0dXJuIG51bGxwdHI7IH0K
IAogI2lmIFVTRShMSUJXRUJSVEMpCi0gICAgdmlydHVhbCBydGM6OnNjb3BlZF9yZWZwdHI8d2Vi
cnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZT4gY3JlYXRlUGVlckNvbm5lY3Rpb24od2VicnRj
OjpQZWVyQ29ubmVjdGlvbk9ic2VydmVyJiwgcnRjOjpQYWNrZXRTb2NrZXRGYWN0b3J5Kiwgd2Vi
cnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6UlRDQ29uZmlndXJhdGlvbiYmKTsKKyAgICB2
aXJ0dWFsIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNl
PiBjcmVhdGVQZWVyQ29ubmVjdGlvbihEb2N1bWVudElkZW50aWZpZXIsIHdlYnJ0Yzo6UGVlckNv
bm5lY3Rpb25PYnNlcnZlciYsIHJ0Yzo6UGFja2V0U29ja2V0RmFjdG9yeSosIHdlYnJ0Yzo6UGVl
ckNvbm5lY3Rpb25JbnRlcmZhY2U6OlJUQ0NvbmZpZ3VyYXRpb24mJik7CiAKICAgICB3ZWJydGM6
OlBlZXJDb25uZWN0aW9uRmFjdG9yeUludGVyZmFjZSogZmFjdG9yeSgpOwogCkBAIC0xODAsMTYg
KzE3MSwzIEBAIGlubGluZSB2b2lkIExpYldlYlJUQ1Byb3ZpZGVyOjpzZXRWUDlTdXBwb3J0KGJv
b2wgc3VwcG9ydHNWUDlQcm9maWxlMCwgYm9vbCBzdXBwCiAjZW5kaWYKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQotCi1uYW1lc3BhY2UgV1RGIHsKLXRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFp
dHM8V2ViQ29yZTo6TUROU1JlZ2lzdGVyRXJyb3I+IHsKLSAgICB1c2luZyB2YWx1ZXMgPSBFbnVt
VmFsdWVzPAotICAgICAgICBXZWJDb3JlOjpNRE5TUmVnaXN0ZXJFcnJvciwKLSAgICAgICAgV2Vi
Q29yZTo6TUROU1JlZ2lzdGVyRXJyb3I6Ok5vdEltcGxlbWVudGVkLAotICAgICAgICBXZWJDb3Jl
OjpNRE5TUmVnaXN0ZXJFcnJvcjo6QmFkUGFyYW1ldGVyLAotICAgICAgICBXZWJDb3JlOjpNRE5T
UmVnaXN0ZXJFcnJvcjo6RE5TU0QsCi0gICAgICAgIFdlYkNvcmU6Ok1ETlNSZWdpc3RlckVycm9y
OjpJbnRlcm5hbCwKLSAgICAgICAgV2ViQ29yZTo6TUROU1JlZ2lzdGVyRXJyb3I6OlRpbWVvdXQK
LSAgICA+OwotfTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
d2VicnRjL05ldHdvcmtNRE5TUmVnaXN0ZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy93ZWJydGMvTmV0d29ya01ETlNSZWdpc3Rlci5jcHAKaW5kZXggZmM0MzUxMTJmNWJjZTBh
YTMxMjIwZTQxMmZjZTRjNTk4M2YyOGIwNy4uN2FhMTdjMTMxZjE2MjY4NGNkMjgzYTdhMGU0YzFk
MTMxYmVlODYxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJy
dGMvTmV0d29ya01ETlNSZWdpc3Rlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy93ZWJydGMvTmV0d29ya01ETlNSZWdpc3Rlci5jcHAKQEAgLTk4LDI3ICs5OCwyOSBAQCBz
dGF0aWMgdm9pZCByZWdpc3Rlck1ETlNOYW1lQ2FsbGJhY2soRE5TU2VydmljZVJlZiwgRE5TUmVj
b3JkUmVmIHJlY29yZCwgRE5TU2VydgogICAgIE1ETlNfUkVMRUFTRV9MT0dfSU5fQ0FMTEJBQ0so
cmVxdWVzdC0+c2Vzc2lvbklELCAicmVnaXN0ZXJNRE5TTmFtZUNhbGxiYWNrIHdpdGggZXJyb3Ig
JWQiLCBlcnJvckNvZGUpOwogCiAgICAgaWYgKGVycm9yQ29kZSkgewotICAgICAgICByZXF1ZXN0
LT5jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpXZWJNRE5TUmVnaXN0ZXI6OkZpbmlzaGVkUmVn
aXN0ZXJpbmdNRE5TTmFtZSB7IHJlcXVlc3QtPnJlcXVlc3RJZGVudGlmaWVyLCBtYWtlVW5leHBl
Y3RlZChXZWJDb3JlOjpNRE5TUmVnaXN0ZXJFcnJvcjo6RE5TU0QpIH0sIDApOworICAgICAgICBy
ZXF1ZXN0LT5jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpXZWJNRE5TUmVnaXN0ZXI6OkZpbmlz
aGVkUmVnaXN0ZXJpbmdNRE5TTmFtZSB7IHJlcXVlc3QtPnJlcXVlc3RJZGVudGlmaWVyLCByZXF1
ZXN0LT5uYW1lLCBXZWJDb3JlOjpNRE5TUmVnaXN0ZXJFcnJvcjo6RE5TU0QgfSwgMCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9Ci0gICAgcmVxdWVzdC0+Y29ubmVjdGlvbi0+c2VuZChNZXNzYWdl
czo6V2ViTUROU1JlZ2lzdGVyOjpGaW5pc2hlZFJlZ2lzdGVyaW5nTUROU05hbWUgeyByZXF1ZXN0
LT5yZXF1ZXN0SWRlbnRpZmllciwgcmVxdWVzdC0+bmFtZSB9LCAwKTsKKyAgICByZXF1ZXN0LT5j
b25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpXZWJNRE5TUmVnaXN0ZXI6OkZpbmlzaGVkUmVnaXN0
ZXJpbmdNRE5TTmFtZSB7IHJlcXVlc3QtPnJlcXVlc3RJZGVudGlmaWVyLCByZXF1ZXN0LT5uYW1l
LCB7IH0gfSwgMCk7CiB9CiAKIHZvaWQgTmV0d29ya01ETlNSZWdpc3Rlcjo6cmVnaXN0ZXJNRE5T
TmFtZShNRE5TUmVnaXN0ZXJJZGVudGlmaWVyIHJlcXVlc3RJZGVudGlmaWVyLCBXZWJDb3JlOjpE
b2N1bWVudElkZW50aWZpZXIgZG9jdW1lbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGlwQWRk
cmVzcykKIHsKKyAgICBhdXRvIG5hbWUgPSBtYWtlU3RyaW5nKGNyZWF0ZUNhbm9uaWNhbFVVSURT
dHJpbmcoKSwgIi5sb2NhbCIpOworCiAgICAgRE5TU2VydmljZVJlZiBzZXJ2aWNlOwogICAgIGF1
dG8gaXRlcmF0b3IgPSBtX3NlcnZpY2VzLmZpbmQoZG9jdW1lbnRJZGVudGlmaWVyKTsKICAgICBp
ZiAoaXRlcmF0b3IgPT0gbV9zZXJ2aWNlcy5lbmQoKSkgewogICAgICAgICBhdXRvIGVycm9yID0g
RE5TU2VydmljZUNyZWF0ZUNvbm5lY3Rpb24oJnNlcnZpY2UpOwogICAgICAgICBpZiAoZXJyb3Ip
IHsKICAgICAgICAgICAgIE1ETlNfUkVMRUFTRV9MT0coInJlZ2lzdGVyTUROU05hbWUgRE5TU2Vy
dmljZUNyZWF0ZUNvbm5lY3Rpb24gZXJyb3IgJWQiLCBlcnJvcik7Ci0gICAgICAgICAgICBtX2Nv
bm5lY3Rpb24uY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OldlYk1ETlNSZWdpc3Rlcjo6Rmlu
aXNoZWRSZWdpc3RlcmluZ01ETlNOYW1lIHsgcmVxdWVzdElkZW50aWZpZXIsIG1ha2VVbmV4cGVj
dGVkKFdlYkNvcmU6Ok1ETlNSZWdpc3RlckVycm9yOjpETlNTRCkgfSwgMCk7CisgICAgICAgICAg
ICBtX2Nvbm5lY3Rpb24uY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OldlYk1ETlNSZWdpc3Rl
cjo6RmluaXNoZWRSZWdpc3RlcmluZ01ETlNOYW1lIHsgcmVxdWVzdElkZW50aWZpZXIsIG5hbWUs
IFdlYkNvcmU6Ok1ETlNSZWdpc3RlckVycm9yOjpETlNTRCB9LCAwKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogICAgICAgICBlcnJvciA9IEROU1NlcnZpY2VTZXREaXNwYXRjaFF1
ZXVlKHNlcnZpY2UsIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCkpOwogICAgICAgICBpZiAoZXJy
b3IpIHsKICAgICAgICAgICAgIE1ETlNfUkVMRUFTRV9MT0coInJlZ2lzdGVyTUROU05hbWUgRE5T
U2VydmljZUNyZWF0ZUNvbm5lY3Rpb24gZXJyb3IgJWQiLCBlcnJvcik7Ci0gICAgICAgICAgICBt
X2Nvbm5lY3Rpb24uY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OldlYk1ETlNSZWdpc3Rlcjo6
RmluaXNoZWRSZWdpc3RlcmluZ01ETlNOYW1lIHsgcmVxdWVzdElkZW50aWZpZXIsIG1ha2VVbmV4
cGVjdGVkKFdlYkNvcmU6Ok1ETlNSZWdpc3RlckVycm9yOjpETlNTRCkgfSwgMCk7CisgICAgICAg
ICAgICBtX2Nvbm5lY3Rpb24uY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OldlYk1ETlNSZWdp
c3Rlcjo6RmluaXNoZWRSZWdpc3RlcmluZ01ETlNOYW1lIHsgcmVxdWVzdElkZW50aWZpZXIsIG5h
bWUsIFdlYkNvcmU6Ok1ETlNSZWdpc3RlckVycm9yOjpETlNTRCB9LCAwKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogICAgICAgICBBU1NFUlQoc2VydmljZSk7CkBAIC0xMjYsMTMg
KzEyOCwxMiBAQCB2b2lkIE5ldHdvcmtNRE5TUmVnaXN0ZXI6OnJlZ2lzdGVyTUROU05hbWUoTURO
U1JlZ2lzdGVySWRlbnRpZmllciByZXF1ZXN0SWRlbnRpZgogICAgIH0gZWxzZQogICAgICAgICBz
ZXJ2aWNlID0gaXRlcmF0b3ItPnZhbHVlOwogCi0gICAgYXV0byBuYW1lID0gbWFrZVN0cmluZyhj
cmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCksICIubG9jYWwiKTsKLQogICAgIGF1dG8gaXAgPSBp
bmV0X2FkZHIoaXBBZGRyZXNzLnV0ZjgoKS5kYXRhKCkpOwogCisgICAgLy8gRklYTUU6IEFkZCBJ
UHY2IHN1cHBvcnQuCiAgICAgaWYgKGlwID09ICggaW5fYWRkcl90KSgtMSkpIHsKICAgICAgICAg
TUROU19SRUxFQVNFX0xPRygicmVnaXN0ZXJNRE5TTmFtZSBpbmV0X2FkZHIgZXJyb3IiKTsKLSAg
ICAgICAgbV9jb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpXZWJNRE5TUmVn
aXN0ZXI6OkZpbmlzaGVkUmVnaXN0ZXJpbmdNRE5TTmFtZSB7IHJlcXVlc3RJZGVudGlmaWVyLCBt
YWtlVW5leHBlY3RlZChXZWJDb3JlOjpNRE5TUmVnaXN0ZXJFcnJvcjo6QmFkUGFyYW1ldGVyKSB9
LCAwKTsKKyAgICAgICAgbV9jb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpX
ZWJNRE5TUmVnaXN0ZXI6OkZpbmlzaGVkUmVnaXN0ZXJpbmdNRE5TTmFtZSB7IHJlcXVlc3RJZGVu
dGlmaWVyLCBuYW1lLCBXZWJDb3JlOjpNRE5TUmVnaXN0ZXJFcnJvcjo6QmFkUGFyYW1ldGVyIH0s
IDApOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xNTYsNyArMTU3LDcgQEAgdm9pZCBO
ZXR3b3JrTUROU1JlZ2lzdGVyOjpyZWdpc3Rlck1ETlNOYW1lKE1ETlNSZWdpc3RlcklkZW50aWZp
ZXIgcmVxdWVzdElkZW50aWYKICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocGVuZGlu
Z1JlZ2lzdHJhdGlvblJlcXVlc3RDb3VudCkpOwogICAgIGlmIChlcnJvcikgewogICAgICAgICBN
RE5TX1JFTEVBU0VfTE9HKCJyZWdpc3Rlck1ETlNOYW1lIEROU1NlcnZpY2VSZWdpc3RlclJlY29y
ZCBlcnJvciAlZCIsIGVycm9yKTsKLSAgICAgICAgbV9jb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5z
ZW5kKE1lc3NhZ2VzOjpXZWJNRE5TUmVnaXN0ZXI6OkZpbmlzaGVkUmVnaXN0ZXJpbmdNRE5TTmFt
ZSB7IHJlcXVlc3RJZGVudGlmaWVyLCBtYWtlVW5leHBlY3RlZChXZWJDb3JlOjpNRE5TUmVnaXN0
ZXJFcnJvcjo6RE5TU0QpIH0sIDApOworICAgICAgICBtX2Nvbm5lY3Rpb24uY29ubmVjdGlvbigp
LnNlbmQoTWVzc2FnZXM6OldlYk1ETlNSZWdpc3Rlcjo6RmluaXNoZWRSZWdpc3RlcmluZ01ETlNO
YW1lIHsgcmVxdWVzdElkZW50aWZpZXIsIHBlbmRpbmdSZXF1ZXN0LT5uYW1lLCBXZWJDb3JlOjpN
RE5TUmVnaXN0ZXJFcnJvcjo6RE5TU0QgfSwgMCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAg
ICAgcGVuZGluZ1JlZ2lzdHJhdGlvblJlcXVlc3RzKCkuYWRkKHBlbmRpbmdSZWdpc3RyYXRpb25S
ZXF1ZXN0Q291bnQrKywgV1RGTW92ZShwZW5kaW5nUmVxdWVzdCkpOwpAQCAtMTcxLDcgKzE3Miw5
IEBAIHZvaWQgTmV0d29ya01ETlNSZWdpc3Rlcjo6dW5yZWdpc3Rlck1ETlNOYW1lcyhXZWJDb3Jl
OjpEb2N1bWVudElkZW50aWZpZXIpCiB2b2lkIE5ldHdvcmtNRE5TUmVnaXN0ZXI6OnJlZ2lzdGVy
TUROU05hbWUoTUROU1JlZ2lzdGVySWRlbnRpZmllciByZXF1ZXN0SWRlbnRpZmllciwgV2ViQ29y
ZTo6RG9jdW1lbnRJZGVudGlmaWVyIGRvY3VtZW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBp
cEFkZHJlc3MpCiB7CiAgICAgTUROU19SRUxFQVNFX0xPRygicmVnaXN0ZXJNRE5TTmFtZSBub3Qg
aW1wbGVtZW50ZWQiKTsKLSAgICBtX2Nvbm5lY3Rpb24uY29ubmVjdGlvbigpLnNlbmQoTWVzc2Fn
ZXM6OldlYk1ETlNSZWdpc3Rlcjo6RmluaXNoZWRSZWdpc3RlcmluZ01ETlNOYW1lIHsgcmVxdWVz
dElkZW50aWZpZXIsIG1ha2VVbmV4cGVjdGVkKFdlYkNvcmU6Ok1ETlNSZWdpc3RlckVycm9yOjpO
b3RJbXBsZW1lbnRlZCkgfSwgMCk7CisgICAgYXV0byBuYW1lID0gbWFrZVN0cmluZyhjcmVhdGVD
YW5vbmljYWxVVUlEU3RyaW5nKCksICIubG9jYWwiKTsKKworICAgIG1fY29ubmVjdGlvbi5jb25u
ZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6V2ViTUROU1JlZ2lzdGVyOjpGaW5pc2hlZFJlZ2lzdGVy
aW5nTUROU05hbWUgeyByZXF1ZXN0SWRlbnRpZmllciwgbmFtZSwgV2ViQ29yZTo6TUROU1JlZ2lz
dGVyRXJyb3I6Ok5vdEltcGxlbWVudGVkIH0sIDApOwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0Cmlu
ZGV4IDdkYmFjZDE4YzBjMjE4ZjI4ZDhjZDQ0MDUwMjc4ZTQ4OThkZjFjNWMuLjRlNWU1MTRkNjU2
Mzg2MjY1YjliMzc5NTc4NDgyNGVlMmU5ZjU2M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtNjM5LDYgKzYz
OSw3IEBAIFdlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRQcm92aWRlci5jcHAKIFdlYlByb2Nl
c3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uY3BwCiAKIFdlYlByb2Nlc3MvTmV0d29yay93ZWJy
dGMvTGliV2ViUlRDTmV0d29yay5jcHAKK1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2Vi
UlRDTmV0d29ya01hbmFnZXIuY3BwCiBXZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJU
Q1Byb3ZpZGVyLmNwcAogV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENSZXNvbHZl
ci5jcHAKIFdlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDU29ja2V0LmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOWU0
MTZlZjM3NDQ0ZTQyZWJlNjhjMGUxMDAyNGJjZWNmZmIyN2Y4OC4uMjcxNGZmYWVmYjM4MDU4NWQ3
NWY3NjUwYzQwYzA3Y2UzYjVkZGZjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zODU0LDYgKzM4NTQsOCBAQAogCQk0MUI3RUQ2RjIw
Njk2NTkwMDA4N0Q4NTMgLyogTmV0d29ya01ETlNSZWdpc3Rlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOZXR3b3JrTUROU1JlZ2lzdGVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFCN0VENzAyMDY5NjU5MDAwODdEODUzIC8qIE5ldHdvcmtN
RE5TUmVnaXN0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya01E
TlNSZWdpc3Rlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUI3RUQ3MTIwNjk2
NTkwMDA4N0Q4NTMgLyogTmV0d29ya01ETlNSZWdpc3Rlci5tZXNzYWdlcy5pbiAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBOZXR3b3JrTUROU1JlZ2lzdGVyLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk0MUMxNEJDMjI2REU2QTJGMDA2ODVCRjUgLyogTGliV2ViUlRD
TmV0d29ya01hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTGliV2ViUlRDTmV0d29ya01h
bmFnZXIuY3BwOyBwYXRoID0gTmV0d29yay93ZWJydGMvTGliV2ViUlRDTmV0d29ya01hbmFnZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUMxNEJDMzI2REU2QTJGMDA2ODVC
RjUgLyogTGliV2ViUlRDTmV0d29ya01hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTGliV2ViUlRD
TmV0d29ya01hbmFnZXIuaDsgcGF0aCA9IE5ldHdvcmsvd2VicnRjL0xpYldlYlJUQ05ldHdvcmtN
YW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQzNCODg1MjY0NDRBQUIw
MDRFRDRERSAvKiBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFn
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5h
bFVuaXRNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQzNCODg2MjY0
NDRBQUMwMDRFRDRERSAvKiBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5p
dE1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVu
ZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDFDM0I4ODcyNjQ0NEFEMzAwNEVENERFIC8qIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRl
cmVySW50ZXJuYWxVbml0SWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdElkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTg1MTgsNiArODUyMCw4IEBACiAJCQkJNDE2RjgwODkyNDVDN0ZGNTAw
QjY4RjAyIC8qIExpYldlYlJUQ05ldHdvcmsuY3BwICovLAogCQkJCTQxMUIyMjYyMUUzNzEyNDQw
MDRGNzM2MyAvKiBMaWJXZWJSVENOZXR3b3JrLmggKi8sCiAJCQkJNDE2RjgwODYyNDVCMzk3NDAw
QjY4RjAyIC8qIExpYldlYlJUQ05ldHdvcmsubWVzc2FnZXMuaW4gKi8sCisJCQkJNDFDMTRCQzIy
NkRFNkEyRjAwNjg1QkY1IC8qIExpYldlYlJUQ05ldHdvcmtNYW5hZ2VyLmNwcCAqLywKKwkJCQk0
MUMxNEJDMzI2REU2QTJGMDA2ODVCRjUgLyogTGliV2ViUlRDTmV0d29ya01hbmFnZXIuaCAqLywK
IAkJCQk0MTMwNzVBNzFERTg1RUU3MDAzOUVDNjkgLyogTGliV2ViUlRDUHJvdmlkZXIuY3BwICov
LAogCQkJCTQxMzA3NUE4MURFODVFRTcwMDM5RUM2OSAvKiBMaWJXZWJSVENQcm92aWRlci5oICov
LAogCQkJCTQxRkFGNUY3MUUzQzBCNDcwMDFBRTY3OCAvKiBMaWJXZWJSVENSZXNvbHZlci5jcHAg
Ki8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMv
TGliV2ViUlRDTmV0d29ya01hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvd2VicnRjL0xpYldlYlJUQ05ldHdvcmtNYW5hZ2VyLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMTUy
ZTdjNGQxYjZkMzkwZDY5OTA2ZjYxNDhiNGE1ZjQ3YWU4OTRmCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ05ldHdvcmtN
YW5hZ2VyLmNwcApAQCAtMCwwICsxLDE1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJMaWJXZWJSVENOZXR3b3JrTWFuYWdlci5oIgorCisjaWYgVVNFKExJ
QldFQlJUQykKKworI2luY2x1ZGUgIkxpYldlYlJUQ05ldHdvcmsuaCIKKyNpbmNsdWRlICJXZWJQ
cm9jZXNzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVudC5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvTGliV2ViUlRDVXRpbHMuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7Cit1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKKworTGliV2ViUlRDTmV0d29ya01hbmFnZXIqIExpYldlYlJUQ05ldHdvcmtN
YW5hZ2VyOjpnZXRPckNyZWF0ZShXZWJDb3JlOjpEb2N1bWVudElkZW50aWZpZXIgaWRlbnRpZmll
cikKK3sKKyAgICBhdXRvKiBkb2N1bWVudCA9IERvY3VtZW50OjphbGxEb2N1bWVudHNNYXAoKS5n
ZXQoaWRlbnRpZmllcik7CisgICAgaWYgKCFkb2N1bWVudCkKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisKKyAgICBhdXRvKiBuZXR3b3JrTWFuYWdlciA9IHN0YXRpY19jYXN0PExpYldlYlJUQ05l
dHdvcmtNYW5hZ2VyKj4oZG9jdW1lbnQtPnJ0Y05ldHdvcmtNYW5hZ2VyKCkpOworICAgIGlmICgh
bmV0d29ya01hbmFnZXIpIHsKKyAgICAgICAgYXV0byBuZXdOZXR3b3JrTWFuYWdlciA9IGFkb3B0
UmVmKCpuZXcgTGliV2ViUlRDTmV0d29ya01hbmFnZXIoaWRlbnRpZmllcikpOworICAgICAgICBu
ZXR3b3JrTWFuYWdlciA9IG5ld05ldHdvcmtNYW5hZ2VyLnB0cigpOworICAgICAgICBkb2N1bWVu
dC0+c2V0UlRDTmV0d29ya01hbmFnZXIoV1RGTW92ZShuZXdOZXR3b3JrTWFuYWdlcikpOworICAg
IH0KKworICAgIHJldHVybiBuZXR3b3JrTWFuYWdlcjsKK30KKworTGliV2ViUlRDTmV0d29ya01h
bmFnZXI6OkxpYldlYlJUQ05ldHdvcmtNYW5hZ2VyKFdlYkNvcmU6OkRvY3VtZW50SWRlbnRpZmll
ciBkb2N1bWVudElkZW50aWZpZXIpCisgICAgOiBtX2RvY3VtZW50SWRlbnRpZmllcihkb2N1bWVu
dElkZW50aWZpZXIpCit7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkubGliV2ViUlRDTmV0
d29yaygpLm1vbml0b3IoKS5hZGRPYnNlcnZlcigqdGhpcyk7Cit9CisKK0xpYldlYlJUQ05ldHdv
cmtNYW5hZ2VyOjp+TGliV2ViUlRDTmV0d29ya01hbmFnZXIoKQoreworICAgIFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLmxpYldlYlJUQ05ldHdvcmsoKS5tb25pdG9yKCkucmVtb3ZlT2JzZXJ2ZXIo
KnRoaXMpOworfQorCit2b2lkIExpYldlYlJUQ05ldHdvcmtNYW5hZ2VyOjp1bnJlZ2lzdGVyTURO
U05hbWVzKCkKK3sKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5saWJXZWJSVENOZXR3b3Jr
KCkubWRuc1JlZ2lzdGVyKCkudW5yZWdpc3Rlck1ETlNOYW1lcyhtX2RvY3VtZW50SWRlbnRpZmll
cik7Cit9CisKK3ZvaWQgTGliV2ViUlRDTmV0d29ya01hbmFnZXI6OlN0YXJ0VXBkYXRpbmcoKQor
eworICAgIGNhbGxPbk1haW5SdW5Mb29wKFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRo
aXMpXSB7CisgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgYXV0byYgbW9uaXRvciA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmxpYldlYlJUQ05l
dHdvcmsoKS5tb25pdG9yKCk7CisgICAgICAgIGlmIChtX3JlY2VpdmVkTmV0d29ya0xpc3QpIHsK
KyAgICAgICAgICAgIFdlYkNvcmU6OkxpYldlYlJUQ1Byb3ZpZGVyOjpjYWxsT25XZWJSVENOZXR3
b3JrVGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKKyAgICAg
ICAgICAgICAgICBTaWduYWxOZXR3b3Jrc0NoYW5nZWQoKTsKKyAgICAgICAgICAgIH0pOworICAg
ICAgICB9IGVsc2UgaWYgKG1vbml0b3IuZGlkUmVjZWl2ZU5ldHdvcmtMaXN0KCkpCisgICAgICAg
ICAgICBuZXR3b3Jrc0NoYW5nZWQobW9uaXRvci5uZXR3b3JrTGlzdCgpICwgbW9uaXRvci5pcHY0
KCksIG1vbml0b3IuaXB2NigpKTsKKyAgICAgICAgbW9uaXRvci5zdGFydFVwZGF0aW5nKCk7Cisg
ICAgfSk7Cit9CisKK3ZvaWQgTGliV2ViUlRDTmV0d29ya01hbmFnZXI6OlN0b3BVcGRhdGluZygp
Cit7CisgICAgY2FsbE9uTWFpblJ1bkxvb3AoW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyld
IHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkubGliV2ViUlRDTmV0d29yaygpLm1vbml0b3IoKS5zdG9w
VXBkYXRpbmcoKTsKKyAgICB9KTsKK30KKword2VicnRjOjpNZG5zUmVzcG9uZGVySW50ZXJmYWNl
KiBMaWJXZWJSVENOZXR3b3JrTWFuYWdlcjo6R2V0TWRuc1Jlc3BvbmRlcigpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1fdXNlTUROU0NhbmRpZGF0ZXMgPyBjb25zdF9jYXN0PExpYldlYlJUQ05ldHdv
cmtNYW5hZ2VyKj4odGhpcykgOiBudWxscHRyOworfQorCit2b2lkIExpYldlYlJUQ05ldHdvcmtN
YW5hZ2VyOjpuZXR3b3Jrc0NoYW5nZWQoY29uc3QgVmVjdG9yPFJUQ05ldHdvcms+JiBuZXR3b3Jr
cywgY29uc3QgUlRDTmV0d29yazo6SVBBZGRyZXNzJiBpcHY0LCBjb25zdCBSVENOZXR3b3JrOjpJ
UEFkZHJlc3MmIGlwdjYpCit7CisgICAgYm9vbCBmb3JjZVNpZ25hbGluZyA9ICFtX3JlY2VpdmVk
TmV0d29ya0xpc3Q7CisgICAgbV9yZWNlaXZlZE5ldHdvcmtMaXN0ID0gdHJ1ZTsKKworICAgIFdl
YkNvcmU6OkxpYldlYlJUQ1Byb3ZpZGVyOjpjYWxsT25XZWJSVENOZXR3b3JrVGhyZWFkKFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIG5ldHdvcmtzLCBpcHY0LCBpcHY2LCBm
b3JjZVNpZ25hbGluZ10geworICAgICAgICBzdGQ6OnZlY3RvcjxydGM6Ok5ldHdvcmsqPiBuZXR3
b3JrTGlzdChuZXR3b3Jrcy5zaXplKCkpOworICAgICAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7
IGluZGV4IDwgbmV0d29ya3Muc2l6ZSgpOyArK2luZGV4KQorICAgICAgICAgICAgbmV0d29ya0xp
c3RbaW5kZXhdID0gbmV3IHJ0Yzo6TmV0d29yayhuZXR3b3Jrc1tpbmRleF0udmFsdWUoKSk7CisK
KyAgICAgICAgYm9vbCBoYXNDaGFuZ2VkOworICAgICAgICBzZXRfZGVmYXVsdF9sb2NhbF9hZGRy
ZXNzZXMoaXB2NC52YWx1ZSwgaXB2Ni52YWx1ZSk7CisgICAgICAgIE1lcmdlTmV0d29ya0xpc3Qo
bmV0d29ya0xpc3QsICZoYXNDaGFuZ2VkKTsKKyAgICAgICAgaWYgKGhhc0NoYW5nZWQgfHwgZm9y
Y2VTaWduYWxpbmcpCisgICAgICAgICAgICBTaWduYWxOZXR3b3Jrc0NoYW5nZWQoKTsKKyAgICB9
KTsKKworfQorCit2b2lkIExpYldlYlJUQ05ldHdvcmtNYW5hZ2VyOjpuZXR3b3JrUHJvY2Vzc0Ny
YXNoZWQoKQoreworICAgIG1fcmVjZWl2ZWROZXR3b3JrTGlzdCA9IGZhbHNlOworICAgIGlmICgh
V2ViQ29yZTo6TGliV2ViUlRDUHJvdmlkZXI6Omhhc1dlYlJUQ1RocmVhZHMoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgLy8gSW4gY2FzZSB3ZSBoYXZlIGNsaWVudHMgd2FpdGluZyBmb3IgbmV0
d29ya3NDaGFuZ2VkLCB3ZSBjYWxsIFNpZ25hbE5ldHdvcmtzQ2hhbmdlZCB0byBtYWtlIHN1cmUg
dGhleSBkbyBub3Qgd2FpdCBmb3Igbm90aGluZy4KKyAgICBXZWJDb3JlOjpMaWJXZWJSVENQcm92
aWRlcjo6Y2FsbE9uV2ViUlRDTmV0d29ya1RocmVhZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpXSB7CisgICAgICAgIFNpZ25hbE5ldHdvcmtzQ2hhbmdlZCgpOworICAgIH0p
OworfQorCit2b2lkIExpYldlYlJUQ05ldHdvcmtNYW5hZ2VyOjpDcmVhdGVOYW1lRm9yQWRkcmVz
cyhjb25zdCBydGM6OklQQWRkcmVzcyYgYWRkcmVzcywgTmFtZUNyZWF0ZWRDYWxsYmFjayBjYWxs
YmFjaykKK3sKKyAgICBjYWxsT25NYWluUnVuTG9vcChbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0
aGlzKSwgYWRkcmVzcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsK
KyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5saWJXZWJSVENOZXR3b3JrKCkubWRuc1JlZ2lzdGVyKCku
cmVnaXN0ZXJNRE5TTmFtZSh3ZWFrVGhpcy0+bV9kb2N1bWVudElkZW50aWZpZXIsIGZyb21TdGRT
dHJpbmcoYWRkcmVzcy5Ub1N0cmluZygpKSwgW2FkZHJlc3MsIGNhbGxiYWNrID0gV1RGTW92ZShj
YWxsYmFjayldKGF1dG8gbmFtZSwgYXV0byBlcnJvcikgbXV0YWJsZSB7CisgICAgICAgICAgICBX
ZWJDb3JlOjpMaWJXZWJSVENQcm92aWRlcjo6Y2FsbE9uV2ViUlRDTmV0d29ya1RocmVhZChbYWRk
cmVzcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgbmFtZSA9IFdURk1vdmUobmFtZSku
aXNvbGF0ZWRDb3B5KCksIGVycm9yXSB7CisgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJS
T1JfSUYoZXJyb3IsIFdlYlJUQywgIk1ETlMgcmVnaXN0cmF0aW9uIG9mIGEgaG9zdCBjYW5kaWRh
dGUgZmFpbGVkIHdpdGggZXJyb3IgJWQiLCAqZXJyb3IpOworICAgICAgICAgICAgICAgIC8vIElu
IGNhc2Ugb2YgZXJyb3IsIHdlIHByb3ZpZGUgdGhlIG5hbWUgdG8gbGV0IGdhdGhlcmluZyBjb21w
bGV0ZS4KKyAgICAgICAgICAgICAgICBjYWxsYmFjayhhZGRyZXNzLCBuYW1lLnV0ZjgoKS5kYXRh
KCkpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0pOworfQorCit2b2lkIExp
YldlYlJUQ05ldHdvcmtNYW5hZ2VyOjpSZW1vdmVOYW1lRm9yQWRkcmVzcyhjb25zdCBydGM6OklQ
QWRkcmVzcyYsIE5hbWVSZW1vdmVkQ2FsbGJhY2spCit7CisgICAgLy8gTGliV2ViUlRDIGJhY2tl
bmQgZGVmaW5lcyB0aGlzIG1ldGhvZCBidXQgZG9lcyBub3QgY2FsbCBpdC4KKyAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBV
U0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvd2VicnRjL0xpYldlYlJUQ05ldHdvcmtNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDTmV0d29ya01hbmFnZXIuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li43YTIwZTRlY2Y4NjI0YWQ3ZjYyNjk1ZTM1YmE4YTU3Yjg3YzJmMDY4Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ05l
dHdvcmtNYW5hZ2VyLmgKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaWYgVVNFKExJQldFQlJUQykKKworI2luY2x1ZGUgIldlYlJUQ01vbml0b3IuaCIKKyNp
bmNsdWRlIDxXZWJDb3JlL0xpYldlYlJUQ1Byb3ZpZGVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9S
VENOZXR3b3JrTWFuYWdlci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgTGliV2Vi
UlRDTmV0d29ya01hbmFnZXIgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6UlRDTmV0d29ya01hbmFn
ZXIsIHB1YmxpYyBydGM6Ok5ldHdvcmtNYW5hZ2VyQmFzZSwgcHVibGljIHdlYnJ0Yzo6TWRuc1Jl
c3BvbmRlckludGVyZmFjZSwgcHVibGljIFdlYlJUQ01vbml0b3I6Ok9ic2VydmVyIHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBzdGF0aWMgTGliV2ViUlRDTmV0
d29ya01hbmFnZXIqIGdldE9yQ3JlYXRlKFdlYkNvcmU6OkRvY3VtZW50SWRlbnRpZmllcik7Cisg
ICAgfkxpYldlYlJUQ05ldHdvcmtNYW5hZ2VyKCk7CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQg
TGliV2ViUlRDTmV0d29ya01hbmFnZXIoV2ViQ29yZTo6RG9jdW1lbnRJZGVudGlmaWVyKTsKKwor
ICAgIC8vIFdlYkNvcmU6OlJUQ05ldHdvcmtNYW5hZ2VyCisgICAgdm9pZCBzZXRJQ0VDYW5kaWRh
dGVGaWx0ZXJpbmcoYm9vbCBkb0ZpbHRlcmluZykgZmluYWwgeyBtX3VzZU1ETlNDYW5kaWRhdGVz
ID0gZG9GaWx0ZXJpbmc7IH0KKyAgICB2b2lkIHVucmVnaXN0ZXJNRE5TTmFtZXMoKSBmaW5hbDsK
KworICAgIC8vIHdlYnJ0Yzo6TmV0d29ya01hbmFnZXJCYXNlCisgICAgdm9pZCBTdGFydFVwZGF0
aW5nKCkgZmluYWw7CisgICAgdm9pZCBTdG9wVXBkYXRpbmcoKSBmaW5hbDsKKyAgICB3ZWJydGM6
Ok1kbnNSZXNwb25kZXJJbnRlcmZhY2UqIEdldE1kbnNSZXNwb25kZXIoKSBjb25zdCBmaW5hbDsK
KworICAgIC8vIHdlYnJ0Yzo6TWRuc1Jlc3BvbmRlckludGVyZmFjZQorICAgIHZvaWQgQ3JlYXRl
TmFtZUZvckFkZHJlc3MoY29uc3QgcnRjOjpJUEFkZHJlc3MmLCBOYW1lQ3JlYXRlZENhbGxiYWNr
KTsKKyAgICB2b2lkIFJlbW92ZU5hbWVGb3JBZGRyZXNzKGNvbnN0IHJ0Yzo6SVBBZGRyZXNzJiwg
TmFtZVJlbW92ZWRDYWxsYmFjayk7CisKKyAgICAvLyBXZWJSVENNb25pdG9yOjpPYnNlcnZlcgor
ICAgIHZvaWQgbmV0d29ya3NDaGFuZ2VkKGNvbnN0IFZlY3RvcjxSVENOZXR3b3JrPiYsIGNvbnN0
IFJUQ05ldHdvcms6OklQQWRkcmVzcyYsIGNvbnN0IFJUQ05ldHdvcms6OklQQWRkcmVzcyYpIGZp
bmFsOworICAgIHZvaWQgbmV0d29ya1Byb2Nlc3NDcmFzaGVkKCkgZmluYWw7CisKKyAgICBEb2N1
bWVudElkZW50aWZpZXIgbV9kb2N1bWVudElkZW50aWZpZXI7CisgICAgYm9vbCBtX3VzZU1ETlND
YW5kaWRhdGVzIHsgdHJ1ZSB9OworICAgIGJvb2wgbV9yZWNlaXZlZE5ldHdvcmtMaXN0IHsgZmFs
c2UgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQcm92aWRl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRD
UHJvdmlkZXIuY3BwCmluZGV4IDk2OGM5ZjMwNGI2NTQ4MDlmOTkyNjI1NmMxMDA1NTA3Yzk3MTJm
NTUuLmY5YzRhOTBkODIxZGFmN2E4YWIzOWFmZGQzMTY0MjA1ODUxNjNiNzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQcm92aWRl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldl
YlJUQ1Byb3ZpZGVyLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2VuZGlmCiAKICNpbmNsdWRlICJM
aWJXZWJSVENOZXR3b3JrLmgiCisjaW5jbHVkZSAiTGliV2ViUlRDTmV0d29ya01hbmFnZXIuaCIK
ICNpbmNsdWRlICJSVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXIuaCIKICNpbmNsdWRlICJXZWJQ
YWdlLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgpAQCAtNTQsNyArNTUsNyBAQCBwcml2YXRl
OgogICAgIH0KIH07CiAKLXJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlBlZXJDb25uZWN0aW9u
SW50ZXJmYWNlPiBMaWJXZWJSVENQcm92aWRlcjo6Y3JlYXRlUGVlckNvbm5lY3Rpb24od2VicnRj
OjpQZWVyQ29ubmVjdGlvbk9ic2VydmVyJiBvYnNlcnZlciwgcnRjOjpQYWNrZXRTb2NrZXRGYWN0
b3J5KiBzb2NrZXRGYWN0b3J5LCB3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpSVEND
b25maWd1cmF0aW9uJiYgY29uZmlndXJhdGlvbikKK3J0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6
OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlPiBMaWJXZWJSVENQcm92aWRlcjo6Y3JlYXRlUGVlckNv
bm5lY3Rpb24oRG9jdW1lbnRJZGVudGlmaWVyIGlkZW50aWZpZXIsIHdlYnJ0Yzo6UGVlckNvbm5l
Y3Rpb25PYnNlcnZlciYgb2JzZXJ2ZXIsIHJ0Yzo6UGFja2V0U29ja2V0RmFjdG9yeSogc29ja2V0
RmFjdG9yeSwgd2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6UlRDQ29uZmlndXJhdGlv
biYmIGNvbmZpZ3VyYXRpb24pCiB7CiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBQTEFURk9S
TShDT0NPQSkgJiYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogICAgIGlmICghbV9kaWRJbml0aWFs
aXplQ2FsbGJhY2spIHsKQEAgLTY3LDIyICs2OCwxNyBAQCBydGM6OnNjb3BlZF9yZWZwdHI8d2Vi
cnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZT4gTGliV2ViUlRDUHJvdmlkZXI6OmNyZWF0ZVBl
ZQogCiAgICAgYXV0byYgbmV0d29ya01vbml0b3IgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5s
aWJXZWJSVENOZXR3b3JrKCkubW9uaXRvcigpOwogICAgIG5ldHdvcmtNb25pdG9yLnNldEVudW1l
cmF0aW5nQWxsTmV0d29ya0ludGVyZmFjZXNFbmFibGVkKGlzRW51bWVyYXRpbmdBbGxOZXR3b3Jr
SW50ZXJmYWNlc0VuYWJsZWQoKSk7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkxpYldlYlJUQ1Byb3Zp
ZGVyOjpjcmVhdGVQZWVyQ29ubmVjdGlvbihvYnNlcnZlciwgbmV0d29ya01vbml0b3IsICpzb2Nr
ZXRGYWN0b3J5LCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pLCBtYWtlVW5pcXVlPEFzeW5jUmVzb2x2
ZXJGYWN0b3J5PigpKTsKLX0KIAotdm9pZCBMaWJXZWJSVENQcm92aWRlcjo6ZGlzYWJsZU5vbkxv
Y2FsaG9zdENvbm5lY3Rpb25zKCkKLXsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5saWJX
ZWJSVENOZXR3b3JrKCkuZGlzYWJsZU5vbkxvY2FsaG9zdENvbm5lY3Rpb25zKCk7Ci19CisgICAg
YXV0byogbmV0d29ya01hbmFnZXIgPSBMaWJXZWJSVENOZXR3b3JrTWFuYWdlcjo6Z2V0T3JDcmVh
dGUoaWRlbnRpZmllcik7CisgICAgaWYgKCFuZXR3b3JrTWFuYWdlcikKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKLXZvaWQgTGliV2ViUlRDUHJvdmlkZXI6OnVucmVnaXN0ZXJNRE5TTmFtZXMo
RG9jdW1lbnRJZGVudGlmaWVyIGRvY3VtZW50SWRlbnRpZmllcikKLXsKLSAgICBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5saWJXZWJSVENOZXR3b3JrKCkubWRuc1JlZ2lzdGVyKCkudW5yZWdpc3Rl
ck1ETlNOYW1lcyhkb2N1bWVudElkZW50aWZpZXIpOworICAgIHJldHVybiBXZWJDb3JlOjpMaWJX
ZWJSVENQcm92aWRlcjo6Y3JlYXRlUGVlckNvbm5lY3Rpb24ob2JzZXJ2ZXIsICpuZXR3b3JrTWFu
YWdlciwgKnNvY2tldEZhY3RvcnksIFdURk1vdmUoY29uZmlndXJhdGlvbiksIG1ha2VVbmlxdWU8
QXN5bmNSZXNvbHZlckZhY3Rvcnk+KCkpOwogfQogCi12b2lkIExpYldlYlJUQ1Byb3ZpZGVyOjpy
ZWdpc3Rlck1ETlNOYW1lKERvY3VtZW50SWRlbnRpZmllciBkb2N1bWVudElkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYgaXBBZGRyZXNzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE1ETlNOYW1lT3JF
cnJvciYmKT4mJiBjYWxsYmFjaykKK3ZvaWQgTGliV2ViUlRDUHJvdmlkZXI6OmRpc2FibGVOb25M
b2NhbGhvc3RDb25uZWN0aW9ucygpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkubGli
V2ViUlRDTmV0d29yaygpLm1kbnNSZWdpc3RlcigpLnJlZ2lzdGVyTUROU05hbWUoZG9jdW1lbnRJ
ZGVudGlmaWVyLCBpcEFkZHJlc3MsIFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5saWJXZWJSVENOZXR3b3JrKCkuZGlzYWJsZU5vbkxvY2FsaG9zdENvbm5l
Y3Rpb25zKCk7CiB9CiAKIGNsYXNzIFJUQ1NvY2tldEZhY3RvcnkgZmluYWwgOiBwdWJsaWMgTGli
V2ViUlRDUHJvdmlkZXI6OlN1c3BlbmRhYmxlU29ja2V0RmFjdG9yeSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIu
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQcm92
aWRlci5oCmluZGV4IDcyYWQzYTQyOWZlZmJmYTFkNGNhZWY1YzJiZjdjOTU3MzAxZTEyMDEuLjg4
M2FkZmNhYzkzMGMwNmQ5NThkMjM5OGYyNzBjNzVmMWM2NDRlODYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQcm92
aWRlci5oCkBAIC01NCwxMCArNTQsOCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHN0ZDo6dW5p
cXVlX3B0cjxTdXNwZW5kYWJsZVNvY2tldEZhY3Rvcnk+IGNyZWF0ZVNvY2tldEZhY3RvcnkoU3Ry
aW5nJiYgLyogdXNlckFnZW50ICovLCBib29sIC8qIGlzRmlyc3RQYXJ0eSAqLywgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4mJikgZmluYWw7CiAKLSAgICBydGM6OnNjb3BlZF9yZWZwdHI8d2Vi
cnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZT4gY3JlYXRlUGVlckNvbm5lY3Rpb24od2VicnRj
OjpQZWVyQ29ubmVjdGlvbk9ic2VydmVyJiwgcnRjOjpQYWNrZXRTb2NrZXRGYWN0b3J5Kiwgd2Vi
cnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6UlRDQ29uZmlndXJhdGlvbiYmKSBmaW5hbDsK
KyAgICBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZT4g
Y3JlYXRlUGVlckNvbm5lY3Rpb24oV2ViQ29yZTo6RG9jdW1lbnRJZGVudGlmaWVyLCB3ZWJydGM6
OlBlZXJDb25uZWN0aW9uT2JzZXJ2ZXImLCBydGM6OlBhY2tldFNvY2tldEZhY3RvcnkqLCB3ZWJy
dGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpSVENDb25maWd1cmF0aW9uJiYpIGZpbmFsOwog
Ci0gICAgdm9pZCB1bnJlZ2lzdGVyTUROU05hbWVzKFdlYkNvcmU6OkRvY3VtZW50SWRlbnRpZmll
cikgZmluYWw7Ci0gICAgdm9pZCByZWdpc3Rlck1ETlNOYW1lKFdlYkNvcmU6OkRvY3VtZW50SWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiBpcEFkZHJlc3MsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
TUROU05hbWVPckVycm9yJiYpPiYmKSBmaW5hbDsKICAgICB2b2lkIGRpc2FibGVOb25Mb2NhbGhv
c3RDb25uZWN0aW9ucygpIGZpbmFsOwogICAgIHZvaWQgc3RhcnRlZE5ldHdvcmtUaHJlYWQoKSBm
aW5hbDsKICAgICBSZWZQdHI8V2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyQ29u
bmVjdGlvbj4gY3JlYXRlUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyQ29ubmVjdGlvbigpIGZp
bmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRj
L1dlYk1ETlNSZWdpc3Rlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93
ZWJydGMvV2ViTUROU1JlZ2lzdGVyLmNwcAppbmRleCA1MTU5MGY5YWNjZTYyNDQwNjhiMTQ3Y2U2
YTljN2MxODI1NzU3NzYxLi43NjAyMDdlYTU5YmNhMjU0NTIyZjU2YzU5YTUyNDVlNTk1YThkZTJi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvV2Vi
TUROU1JlZ2lzdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93
ZWJydGMvV2ViTUROU1JlZ2lzdGVyLmNwcApAQCAtMzYsMjIgKzM2LDIyIEBACiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi12b2lkIFdlYk1ETlNSZWdpc3Rl
cjo6ZmluaXNoZWRSZWdpc3RlcmluZ01ETlNOYW1lKE1ETlNSZWdpc3RlcklkZW50aWZpZXIgaWRl
bnRpZmllciwgTGliV2ViUlRDUHJvdmlkZXI6Ok1ETlNOYW1lT3JFcnJvciYmIHJlc3VsdCkKK3Zv
aWQgV2ViTUROU1JlZ2lzdGVyOjpmaW5pc2hlZFJlZ2lzdGVyaW5nTUROU05hbWUoTUROU1JlZ2lz
dGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBTdHJpbmcmJiBuYW1lLCBzdGQ6Om9wdGlvbmFsPE1E
TlNSZWdpc3RlckVycm9yPiBlcnJvcikKIHsKICAgICBhdXRvIHBlbmRpbmdSZWdpc3RyYXRpb24g
PSBtX3BlbmRpbmdSZWdpc3RyYXRpb25zLnRha2UoaWRlbnRpZmllcik7CiAgICAgaWYgKCFwZW5k
aW5nUmVnaXN0cmF0aW9uLmNhbGxiYWNrKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAocmVz
dWx0Lmhhc192YWx1ZSgpKSB7CisgICAgaWYgKCFlcnJvcikgewogICAgICAgICBhdXRvIGl0ZXJh
dG9yID0gbV9yZWdpc3RlcmluZ0RvY3VtZW50cy5maW5kKHBlbmRpbmdSZWdpc3RyYXRpb24uZG9j
dW1lbnRJZGVudGlmaWVyKTsKICAgICAgICAgaWYgKGl0ZXJhdG9yID09IG1fcmVnaXN0ZXJpbmdE
b2N1bWVudHMuZW5kKCkpIHsKLSAgICAgICAgICAgIHBlbmRpbmdSZWdpc3RyYXRpb24uY2FsbGJh
Y2sobWFrZVVuZXhwZWN0ZWQoV2ViQ29yZTo6TUROU1JlZ2lzdGVyRXJyb3I6OkROU1NEKSk7Cisg
ICAgICAgICAgICBwZW5kaW5nUmVnaXN0cmF0aW9uLmNhbGxiYWNrKG5hbWUsIFdlYkNvcmU6Ok1E
TlNSZWdpc3RlckVycm9yOjpETlNTRCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
LSAgICAgICAgaXRlcmF0b3ItPnZhbHVlLmFkZChwZW5kaW5nUmVnaXN0cmF0aW9uLmlwQWRkcmVz
cywgcmVzdWx0LnZhbHVlKCkpOworICAgICAgICBpdGVyYXRvci0+dmFsdWUuYWRkKHBlbmRpbmdS
ZWdpc3RyYXRpb24uaXBBZGRyZXNzLCBuYW1lKTsKICAgICB9CiAKLSAgICBwZW5kaW5nUmVnaXN0
cmF0aW9uLmNhbGxiYWNrKFdURk1vdmUocmVzdWx0KSk7CisgICAgcGVuZGluZ1JlZ2lzdHJhdGlv
bi5jYWxsYmFjayhuYW1lLCBlcnJvcik7CiB9CiAKIHZvaWQgV2ViTUROU1JlZ2lzdGVyOjp1bnJl
Z2lzdGVyTUROU05hbWVzKERvY3VtZW50SWRlbnRpZmllciBpZGVudGlmaWVyKQpAQCAtNjMsNyAr
NjMsNyBAQCB2b2lkIFdlYk1ETlNSZWdpc3Rlcjo6dW5yZWdpc3Rlck1ETlNOYW1lcyhEb2N1bWVu
dElkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICBjb25uZWN0aW9uLnNlbmQoTWVzc2FnZXM6Ok5l
dHdvcmtNRE5TUmVnaXN0ZXI6OlVucmVnaXN0ZXJNRE5TTmFtZXMgeyBpZGVudGlmaWVyIH0sIDAp
OwogfQogCi12b2lkIFdlYk1ETlNSZWdpc3Rlcjo6cmVnaXN0ZXJNRE5TTmFtZShEb2N1bWVudElk
ZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBpcEFkZHJlc3MsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoTGliV2ViUlRDUHJvdmlkZXI6Ok1ETlNOYW1lT3JFcnJvciYmKT4mJiBjYWxs
YmFjaykKK3ZvaWQgV2ViTUROU1JlZ2lzdGVyOjpyZWdpc3Rlck1ETlNOYW1lKERvY3VtZW50SWRl
bnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGlwQWRkcmVzcywgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChjb25zdCBTdHJpbmcmLCBzdGQ6Om9wdGlvbmFsPE1ETlNSZWdpc3RlckVycm9y
Pik+JiYgY2FsbGJhY2spCiB7CiAgICAgYXV0byYgbWFwID0gbV9yZWdpc3RlcmluZ0RvY3VtZW50
cy5lbnN1cmUoaWRlbnRpZmllciwgW10gewogICAgICAgICByZXR1cm4gSGFzaE1hcDxTdHJpbmcs
IFN0cmluZz4geyB9OwpAQCAtNzEsMTYgKzcxLDE3IEBAIHZvaWQgV2ViTUROU1JlZ2lzdGVyOjpy
ZWdpc3Rlck1ETlNOYW1lKERvY3VtZW50SWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTdHJp
CiAKICAgICBhdXRvIGl0ZXJhdG9yID0gbWFwLmZpbmQoaXBBZGRyZXNzKTsKICAgICBpZiAoaXRl
cmF0b3IgIT0gbWFwLmVuZCgpKSB7Ci0gICAgICAgIGNhbGxiYWNrKGl0ZXJhdG9yLT52YWx1ZSk7
CisgICAgICAgIGNhbGxiYWNrKGl0ZXJhdG9yLT52YWx1ZSwgeyB9KTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAogICAgIGF1dG8gcmVxdWVzdElkZW50aWZpZXIgPSBNRE5TUmVnaXN0ZXJJZGVu
dGlmaWVyOjpnZW5lcmF0ZSgpOwogICAgIG1fcGVuZGluZ1JlZ2lzdHJhdGlvbnMuYWRkKHJlcXVl
c3RJZGVudGlmaWVyLCBQZW5kaW5nUmVnaXN0cmF0aW9uIHsgV1RGTW92ZShjYWxsYmFjayksIGlk
ZW50aWZpZXIsIGlwQWRkcmVzcyB9KTsKIAorICAgIC8vIEZJWE1FOiBVc2UgYXN5bmMgcmVwbHku
CiAgICAgYXV0byYgY29ubmVjdGlvbiA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKTsKICAgICBpZiAoIWNvbm5lY3Rp
b24uc2VuZChNZXNzYWdlczo6TmV0d29ya01ETlNSZWdpc3Rlcjo6UmVnaXN0ZXJNRE5TTmFtZSB7
IHJlcXVlc3RJZGVudGlmaWVyLCBpZGVudGlmaWVyLCBpcEFkZHJlc3MgfSwgMCkpCi0gICAgICAg
IGZpbmlzaGVkUmVnaXN0ZXJpbmdNRE5TTmFtZShyZXF1ZXN0SWRlbnRpZmllciwgbWFrZVVuZXhw
ZWN0ZWQoTUROU1JlZ2lzdGVyRXJyb3I6OkludGVybmFsKSk7CisgICAgICAgIGZpbmlzaGVkUmVn
aXN0ZXJpbmdNRE5TTmFtZShyZXF1ZXN0SWRlbnRpZmllciwgeyB9LCBNRE5TUmVnaXN0ZXJFcnJv
cjo6SW50ZXJuYWwpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJNRE5TUmVnaXN0ZXIuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJNRE5TUmVnaXN0ZXIu
aAppbmRleCAwYzBmNjEzM2FmNDY4YzllYmI4YzY3YTJhZTRlOGM5YTczM2VlNmFkLi4yYzBmZjBl
NDY2NTExZjk3OGZiODA5MjcyMGFmMDczZGJmNTM4ZmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvV2ViTUROU1JlZ2lzdGVyLmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1dlYk1ETlNSZWdpc3Rlci5oCkBA
IC00NiwxNSArNDYsMTUgQEAgcHVibGljOgogICAgIFdlYk1ETlNSZWdpc3RlcigpID0gZGVmYXVs
dDsKIAogICAgIHZvaWQgdW5yZWdpc3Rlck1ETlNOYW1lcyhXZWJDb3JlOjpEb2N1bWVudElkZW50
aWZpZXIpOwotICAgIHZvaWQgcmVnaXN0ZXJNRE5TTmFtZShXZWJDb3JlOjpEb2N1bWVudElkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgaXBBZGRyZXNzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdl
YkNvcmU6OkxpYldlYlJUQ1Byb3ZpZGVyOjpNRE5TTmFtZU9yRXJyb3ImJik+JiYpOworICAgIHZv
aWQgcmVnaXN0ZXJNRE5TTmFtZShXZWJDb3JlOjpEb2N1bWVudElkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgaXBBZGRyZXNzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYsIHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6TUROU1JlZ2lzdGVyRXJyb3I+KT4mJik7CiAKICAgICB2b2lk
IGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwogCiBw
cml2YXRlOgotICAgIHZvaWQgZmluaXNoZWRSZWdpc3RlcmluZ01ETlNOYW1lKE1ETlNSZWdpc3Rl
cklkZW50aWZpZXIsIFdlYkNvcmU6OkxpYldlYlJUQ1Byb3ZpZGVyOjpNRE5TTmFtZU9yRXJyb3Im
Jik7CisgICAgdm9pZCBmaW5pc2hlZFJlZ2lzdGVyaW5nTUROU05hbWUoTUROU1JlZ2lzdGVySWRl
bnRpZmllciwgU3RyaW5nJiYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6TUROU1JlZ2lzdGVyRXJy
b3I+KTsKIAogICAgIHN0cnVjdCBQZW5kaW5nUmVnaXN0cmF0aW9uIHsKLSAgICAgICAgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpMaWJXZWJSVENQcm92aWRlcjo6TUROU05hbWVPckVy
cm9yJiYpPiBjYWxsYmFjazsKKyAgICAgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBT
dHJpbmcmLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Ok1ETlNSZWdpc3RlckVycm9yPik+IGNhbGxi
YWNrOwogICAgICAgICBXZWJDb3JlOjpEb2N1bWVudElkZW50aWZpZXIgZG9jdW1lbnRJZGVudGlm
aWVyOwogICAgICAgICBTdHJpbmcgaXBBZGRyZXNzOwogICAgIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvV2ViTUROU1JlZ2lzdGVyLm1lc3Nh
Z2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1dlYk1ETlNS
ZWdpc3Rlci5tZXNzYWdlcy5pbgppbmRleCBhYjEyYTFlMDE5MjZkNmFmY2I0YzI0NzhlZDUzZjVj
MzYyYTg4YjliLi5mMWVhNWM3MzA2ZDJhMGM2ZGU5ZjFiODEyMDc2M2U5ZmQ5MzFkYTU3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvV2ViTUROU1Jl
Z2lzdGVyLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L3dlYnJ0Yy9XZWJNRE5TUmVnaXN0ZXIubWVzc2FnZXMuaW4KQEAgLTEsNCArMSw0IEBACi0jIENv
cHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHly
aWdodCAoQykgMjAxOC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsNyArMjMsNyBAQAogI2lmIEVOQUJMRShXRUJf
UlRDKQogCiBtZXNzYWdlcyAtPiBXZWJNRE5TUmVnaXN0ZXIgTm90UmVmQ291bnRlZCB7Ci0gICAg
dm9pZCBGaW5pc2hlZFJlZ2lzdGVyaW5nTUROU05hbWUoV2ViS2l0OjpNRE5TUmVnaXN0ZXJJZGVu
dGlmaWVyIGlkZW50aWZpZXIsIFdlYkNvcmU6OkxpYldlYlJUQ1Byb3ZpZGVyOjpNRE5TTmFtZU9y
RXJyb3IgcmVzdWx0KQorICAgIHZvaWQgRmluaXNoZWRSZWdpc3RlcmluZ01ETlNOYW1lKFdlYktp
dDo6TUROU1JlZ2lzdGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBTdHJpbmcgbWRuc05hbWUsIHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6TUROU1JlZ2lzdGVyRXJyb3I+IGVycm9yKQogfQogCiAjZW5k
aWYgLy8gRU5BQkxFKFdFQl9SVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay93ZWJydGMvV2ViUlRDTW9uaXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay93ZWJydGMvV2ViUlRDTW9uaXRvci5jcHAKaW5kZXggMGY5ZGFkMmQxZDI5
ZDBiMzA3OWQzODcxYjdlMTQ1NDE1MjkwNDkzNi4uZDBjYjk4YmU4ODBiYjYxM2ZkYTIzMTUwMmU2
NzAyYzA0YWYyMDIzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvd2VicnRjL1dlYlJUQ01vbml0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL3dlYnJ0Yy9XZWJSVENNb25pdG9yLmNwcApAQCAtMzMsOCArMzMsNiBAQAogI2lu
Y2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIk5ldHdvcmtSVENN
b25pdG9yTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCi0jaW5jbHVkZSA8V2Vi
Q29yZS9MaWJXZWJSVENNYWNyb3MuaD4KLSNpbmNsdWRlIDx3ZWJydGMvcnRjX2Jhc2UvbmV0X2hl
bHBlcnMuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKQEAgLTUzLDY3ICs1MSw0MyBAQCB2b2lkIFdlYlJUQ01vbml0b3I6OnNldEVudW1lcmF0aW5n
QWxsTmV0d29ya0ludGVyZmFjZXNFbmFibGVkKGJvb2wgZW5hYmxlZCkKICAgICBtX2VuYWJsZUVu
dW1lcmF0aW5nQWxsTmV0d29ya0ludGVyZmFjZXMgPSBlbmFibGVkOwogfQogCi12b2lkIFdlYlJU
Q01vbml0b3I6OlN0YXJ0VXBkYXRpbmcoKQordm9pZCBXZWJSVENNb25pdG9yOjpzdGFydFVwZGF0
aW5nKCkKIHsKLSAgICBXRUJSVENfUkVMRUFTRV9MT0coIlN0YXJ0VXBkYXRpbmciKTsKLSAgICBp
ZiAobV9yZWNlaXZlZE5ldHdvcmtMaXN0KSB7Ci0gICAgICAgIFdlYkNvcmU6OkxpYldlYlJUQ1By
b3ZpZGVyOjpjYWxsT25XZWJSVENOZXR3b3JrVGhyZWFkKFt0aGlzXSB7Ci0gICAgICAgICAgICBT
aWduYWxOZXR3b3Jrc0NoYW5nZWQoKTsKLSAgICAgICAgfSk7Ci0gICAgfQotCi0gICAgc2VuZE9u
TWFpblRocmVhZChbdGhpc10oYXV0byYgY29ubmVjdGlvbikgewotICAgICAgICBXRUJSVENfUkVM
RUFTRV9MT0coIlN0YXJ0VXBkYXRpbmcgLSBBc2tpbmcgbmV0d29yayBwcm9jZXNzIHRvIHN0YXJ0
IHVwZGF0aW5nIik7Ci0gICAgICAgIGNvbm5lY3Rpb24uc2VuZChNZXNzYWdlczo6TmV0d29ya1JU
Q01vbml0b3I6OlN0YXJ0VXBkYXRpbmdJZk5lZWRlZChtX2VuYWJsZUVudW1lcmF0aW5nQWxsTmV0
d29ya0ludGVyZmFjZXMpLCAwKTsKLSAgICB9KTsKKyAgICBXRUJSVENfUkVMRUFTRV9MT0coIlN0
YXJ0VXBkYXRpbmcgLSBBc2tpbmcgbmV0d29yayBwcm9jZXNzIHRvIHN0YXJ0IHVwZGF0aW5nIik7
CisKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya1JUQ01vbml0b3I6OlN0
YXJ0VXBkYXRpbmdJZk5lZWRlZChtX2VuYWJsZUVudW1lcmF0aW5nQWxsTmV0d29ya0ludGVyZmFj
ZXMpLCAwKTsKICAgICArK21fY2xpZW50Q291bnQ7CiB9CiAKLXZvaWQgV2ViUlRDTW9uaXRvcjo6
U3RvcFVwZGF0aW5nKCkKK3ZvaWQgV2ViUlRDTW9uaXRvcjo6c3RvcFVwZGF0aW5nKCkKIHsKICAg
ICBXRUJSVENfUkVMRUFTRV9MT0coIlN0b3BVcGRhdGluZyIpOworCiAgICAgQVNTRVJUKG1fY2xp
ZW50Q291bnQpOwogICAgIGlmICgtLW1fY2xpZW50Q291bnQpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIHNlbmRPbk1haW5UaHJlYWQoW3RoaXNdKGF1dG8mIGNvbm5lY3Rpb24pIHsKLSAgICAgICAg
V0VCUlRDX1JFTEVBU0VfTE9HKCJTdG9wVXBkYXRpbmcgLSBBc2tpbmcgbmV0d29yayBwcm9jZXNz
IHRvIHN0b3AgdXBkYXRpbmciKTsKLSAgICAgICAgY29ubmVjdGlvbi5zZW5kKE1lc3NhZ2VzOjpO
ZXR3b3JrUlRDTW9uaXRvcjo6U3RvcFVwZGF0aW5nKCksIDApOwotICAgIH0pOworICAgIFdFQlJU
Q19SRUxFQVNFX0xPRygiU3RvcFVwZGF0aW5nIC0gQXNraW5nIG5ldHdvcmsgcHJvY2VzcyB0byBz
dG9wIHVwZGF0aW5nIik7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtS
VENNb25pdG9yOjpTdG9wVXBkYXRpbmcoKSwgMCk7CiB9CiAKLXZvaWQgV2ViUlRDTW9uaXRvcjo6
bmV0d29ya3NDaGFuZ2VkKGNvbnN0IFZlY3RvcjxSVENOZXR3b3JrPiYgbmV0d29ya3MsIGNvbnN0
IFJUQ05ldHdvcms6OklQQWRkcmVzcyYgaXB2NCwgY29uc3QgUlRDTmV0d29yazo6SVBBZGRyZXNz
JiBpcHY2KQordm9pZCBXZWJSVENNb25pdG9yOjpuZXR3b3Jrc0NoYW5nZWQoVmVjdG9yPFJUQ05l
dHdvcms+JiYgbmV0d29ya0xpc3QsIFJUQ05ldHdvcms6OklQQWRkcmVzcyYmIGlwdjQsIFJUQ05l
dHdvcms6OklQQWRkcmVzcyYmIGlwdjYpCiB7CiAgICAgV0VCUlRDX1JFTEVBU0VfTE9HKCJuZXR3
b3Jrc0NoYW5nZWQiKTsKLSAgICAvLyBObyBuZWVkIHRvIHByb3RlY3QgJ3RoaXMnIGFzIGl0IGhh
cyB0aGUgbGlmZXRpbWUgb2YgTGliV2ViUlRDIHdoaWNoIGhhcyB0aGUgbGlmZXRpbWUgb2YgdGhl
IHdlYiBwcm9jZXNzLgotICAgIFdlYkNvcmU6OkxpYldlYlJUQ1Byb3ZpZGVyOjpjYWxsT25XZWJS
VENOZXR3b3JrVGhyZWFkKFt0aGlzLCBuZXR3b3JrcywgaXB2NCwgaXB2Nl0gewotICAgICAgICBX
RUJSVENfUkVMRUFTRV9MT0coIm5ldHdvcmtzQ2hhbmdlZCAtIFNpZ25hbGluZyIpOwotICAgICAg
ICBzdGQ6OnZlY3RvcjxydGM6Ok5ldHdvcmsqPiBuZXR3b3JrTGlzdChuZXR3b3Jrcy5zaXplKCkp
OwotICAgICAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgbmV0d29ya3Muc2l6ZSgp
OyArK2luZGV4KQotICAgICAgICAgICAgbmV0d29ya0xpc3RbaW5kZXhdID0gbmV3IHJ0Yzo6TmV0
d29yayhuZXR3b3Jrc1tpbmRleF0udmFsdWUoKSk7Ci0KLSAgICAgICAgYm9vbCBmb3JjZVNpZ25h
bGluZyA9ICFtX3JlY2VpdmVkTmV0d29ya0xpc3Q7Ci0gICAgICAgIG1fcmVjZWl2ZWROZXR3b3Jr
TGlzdCA9IHRydWU7Ci0KLSAgICAgICAgYm9vbCBoYXNDaGFuZ2VkOwotICAgICAgICBzZXRfZGVm
YXVsdF9sb2NhbF9hZGRyZXNzZXMoaXB2NC52YWx1ZSwgaXB2Ni52YWx1ZSk7Ci0gICAgICAgIE1l
cmdlTmV0d29ya0xpc3QobmV0d29ya0xpc3QsICZoYXNDaGFuZ2VkKTsKLSAgICAgICAgaWYgKGhh
c0NoYW5nZWQgfHwgZm9yY2VTaWduYWxpbmcpCi0gICAgICAgICAgICBTaWduYWxOZXR3b3Jrc0No
YW5nZWQoKTsKIAotICAgIH0pOworICAgIG1fZGlkUmVjZWl2ZU5ldHdvcmtMaXN0ID0gdHJ1ZTsK
KyAgICBtX25ldHdvcmtMaXN0ID0gV1RGTW92ZShuZXR3b3JrTGlzdCk7CisgICAgbV9pcHY0ID0g
V1RGTW92ZShpcHY0KTsKKyAgICBtX2lwdjYgPSBXVEZNb3ZlKGlwdjYpOworCisgICAgZm9yIChh
dXRvJiBvYnNlcnZlciA6IG1fb2JzZXJ2ZXJzKQorICAgICAgICBvYnNlcnZlci5uZXR3b3Jrc0No
YW5nZWQobV9uZXR3b3JrTGlzdCwgbV9pcHY0LCBtX2lwdjYpOwogfQogCiB2b2lkIFdlYlJUQ01v
bml0b3I6Om5ldHdvcmtQcm9jZXNzQ3Jhc2hlZCgpCiB7Ci0gICAgbV9yZWNlaXZlZE5ldHdvcmtM
aXN0ID0gZmFsc2U7Ci0gICAgaWYgKCFXZWJDb3JlOjpMaWJXZWJSVENQcm92aWRlcjo6aGFzV2Vi
UlRDVGhyZWFkcygpKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBJbiBjYXNlIHdlIGhhdmUg
Y2xpZW50cyB3YWl0aW5nIGZvciBuZXR3b3Jrc0NoYW5nZWQsIHdlIGNhbGwgU2lnbmFsTmV0d29y
a3NDaGFuZ2VkIHRvIG1ha2Ugc3VyZSB0aGV5IGRvIG5vdCB3YWl0IGZvciBub3RoaW5nLiAgICAK
LSAgICBXZWJDb3JlOjpMaWJXZWJSVENQcm92aWRlcjo6Y2FsbE9uV2ViUlRDTmV0d29ya1RocmVh
ZChbdGhpc10gewotICAgICAgICBTaWduYWxOZXR3b3Jrc0NoYW5nZWQoKTsKLSAgICB9KTsKKyAg
ICBmb3IgKGF1dG8mIG9ic2VydmVyIDogbV9vYnNlcnZlcnMpCisgICAgICAgIG9ic2VydmVyLm5l
dHdvcmtQcm9jZXNzQ3Jhc2hlZCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJSVENNb25p
dG9yLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvV2ViUlRDTW9u
aXRvci5oCmluZGV4IGY2Yjk3MzlmYWRkYzM4MmNkNDIyZTViYWE4ZWEyODU2ZTVmNGZiMGYuLjA2
ODU5MGU1MzI2NDFhMWZkYTM1N2FhYzEyYWQyMzI0YjIwNDQyNDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJSVENNb25pdG9yLmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1dlYlJUQ01vbml0b3IuaApA
QCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIlJUQ05ldHdvcmsuaCIKICNpbmNsdWRlIDxXZWJD
b3JlL0xpYldlYlJUQ1Byb3ZpZGVyLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNs
dWRlIDx3dGYvV2Vha0hhc2hTZXQuaD4KIAogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBDb25uZWN0
aW9uOwpAQCAtNDAsMjYgKzQxLDQyIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBzdHJ1Y3QgTmV0
d29ya3NDaGFuZ2VkRGF0YTsKIAotY2xhc3MgV2ViUlRDTW9uaXRvciBmaW5hbCA6IHB1YmxpYyBy
dGM6Ok5ldHdvcmtNYW5hZ2VyQmFzZSB7CitjbGFzcyBXZWJSVENNb25pdG9yIHsKIHB1YmxpYzoK
ICAgICBXZWJSVENNb25pdG9yKCkgPSBkZWZhdWx0OwogCisgICAgY2xhc3MgT2JzZXJ2ZXIgOiBw
dWJsaWMgQ2FuTWFrZVdlYWtQdHI8T2JzZXJ2ZXI+IHsKKyAgICBwdWJsaWM6CisgICAgICAgIHZp
cnR1YWwgfk9ic2VydmVyKCkgPSBkZWZhdWx0OworICAgICAgICB2aXJ0dWFsIHZvaWQgbmV0d29y
a3NDaGFuZ2VkKGNvbnN0IFZlY3RvcjxSVENOZXR3b3JrPiYsIGNvbnN0IFJUQ05ldHdvcms6OklQ
QWRkcmVzcyYsIGNvbnN0IFJUQ05ldHdvcms6OklQQWRkcmVzcyYpID0gMDsKKyAgICAgICAgdmly
dHVhbCB2b2lkIG5ldHdvcmtQcm9jZXNzQ3Jhc2hlZCgpID0gMDsKKyAgICB9OworICAgIHZvaWQg
YWRkT2JzZXJ2ZXIoT2JzZXJ2ZXImIG9ic2VydmVyKSB7IG1fb2JzZXJ2ZXJzLmFkZChvYnNlcnZl
cik7IH0KKyAgICB2b2lkIHJlbW92ZU9ic2VydmVyKE9ic2VydmVyJiBvYnNlcnZlcikgeyBtX29i
c2VydmVycy5yZW1vdmUob2JzZXJ2ZXIpOyB9CisgICAgdm9pZCBzdGFydFVwZGF0aW5nKCk7Cisg
ICAgdm9pZCBzdG9wVXBkYXRpbmcoKTsKKwogICAgIHZvaWQgbmV0d29ya1Byb2Nlc3NDcmFzaGVk
KCk7CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRl
Y29kZXImKTsKICAgICB2b2lkIHNldEVudW1lcmF0aW5nQWxsTmV0d29ya0ludGVyZmFjZXNFbmFi
bGVkKGJvb2wpOwogCi1wcml2YXRlOgotICAgIHZvaWQgbmV0d29ya3NDaGFuZ2VkKGNvbnN0IFZl
Y3RvcjxSVENOZXR3b3JrPiYgbmV0d29ya0xpc3QsIGNvbnN0IFJUQ05ldHdvcms6OklQQWRkcmVz
cyYsIGNvbnN0IFJUQ05ldHdvcms6OklQQWRkcmVzcyYpOworICAgIGJvb2wgZGlkUmVjZWl2ZU5l
dHdvcmtMaXN0KCkgY29uc3QgeyByZXR1cm4gbV9kaWRSZWNlaXZlTmV0d29ya0xpc3Q7IH0KKyAg
ICBjb25zdCBWZWN0b3I8UlRDTmV0d29yaz4mIG5ldHdvcmtMaXN0KCkgY29uc3QgeyByZXR1cm4g
bV9uZXR3b3JrTGlzdDsgfQorICAgIGNvbnN0IFJUQ05ldHdvcms6OklQQWRkcmVzcyYgaXB2NCgp
IGNvbnN0IHsgcmV0dXJuIG1faXB2NDsgfQorICAgIGNvbnN0IFJUQ05ldHdvcms6OklQQWRkcmVz
cyYgaXB2NigpIGNvbnN0IHsgcmV0dXJuIG1faXB2NjsgfQogCi0gICAgdm9pZCBTdGFydFVwZGF0
aW5nKCkgZmluYWw7Ci0gICAgdm9pZCBTdG9wVXBkYXRpbmcoKSBmaW5hbDsKLSAgICB3ZWJydGM6
Ok1kbnNSZXNwb25kZXJJbnRlcmZhY2UqIEdldE1kbnNSZXNwb25kZXIoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBudWxscHRyOyB9Citwcml2YXRlOgorICAgIHZvaWQgbmV0d29ya3NDaGFuZ2VkKFZl
Y3RvcjxSVENOZXR3b3JrPiYmLCBSVENOZXR3b3JrOjpJUEFkZHJlc3MmJiwgUlRDTmV0d29yazo6
SVBBZGRyZXNzJiYpOwogCiAgICAgc3RhdGljIHZvaWQgc2VuZE9uTWFpblRocmVhZChGdW5jdGlv
bjx2b2lkKElQQzo6Q29ubmVjdGlvbiYpPiYmKTsKIAogICAgIHVuc2lnbmVkIG1fY2xpZW50Q291
bnQgeyAwIH07Ci0gICAgYm9vbCBtX3JlY2VpdmVkTmV0d29ya0xpc3QgeyBmYWxzZSB9OworICAg
IFdlYWtIYXNoU2V0PE9ic2VydmVyPiBtX29ic2VydmVyczsKICAgICBib29sIG1fZW5hYmxlRW51
bWVyYXRpbmdBbGxOZXR3b3JrSW50ZXJmYWNlcyB7IGZhbHNlIH07CisgICAgYm9vbCBtX2RpZFJl
Y2VpdmVOZXR3b3JrTGlzdCB7IGZhbHNlIH07CisgICAgVmVjdG9yPFJUQ05ldHdvcms+IG1fbmV0
d29ya0xpc3Q7CisgICAgUlRDTmV0d29yazo6SVBBZGRyZXNzIG1faXB2NDsKKyAgICBSVENOZXR3
b3JrOjpJUEFkZHJlc3MgbV9pcHY2OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5k
ZXggOGQ5YjRhNWNjNWU2MmQ2OGEwM2JiOTRjYjYxNzEwNmEyMzBmMTFlZi4uYzk4ZDQxZGMzMzI3
MDFmMWVjY2EwZDQwZWE1Y2E3MTZlZWM0NGZhZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIx
LTA5LTAxICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBs
ZW1lbnQgbGlid2VicnRjIG5ldHdvcmsgbWFuYWdlciBHZXRNZG5zUmVzcG9uZGVyCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjk3NTcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHdlYnJ0Yy9kYXRhY2hh
bm5lbC9maWx0ZXItaWNlLWNhbmRpZGF0ZS5odG1sOgorICAgICAgICAqIHdlYnJ0Yy9maWx0ZXJp
bmctaWNlLWNhbmRpZGF0ZS1hZnRlci1yZWxvYWQuaHRtbDoKKyAgICAgICAgVXBkYXRlIHRlc3Rz
IGdpdmVuIG1ETlMgSUNFIGNhbmRpZGF0ZXMgYXJlIG5vdyBzaG93aW5nIHVwIGluIGRlc2NyaXB0
aW9ucy4KKwogMjAyMS0wOC0zMSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAK
ICAgICAgICAgTWlncmF0ZSB0byBsYXRlc3QgbGlid2VicnRjIEFkZEljZUNhbmRpZGF0ZQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2VicnRjL2RhdGFjaGFubmVsL2ZpbHRlci1pY2UtY2FuZGlk
YXRlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJydGMvZGF0YWNoYW5uZWwvZmlsdGVyLWljZS1jYW5k
aWRhdGUuaHRtbAppbmRleCBjY2M0NjlhMTc3ZTAwOTJiNjc1N2I1YmM0ZDE3NzUzYWIxZmI5NTNi
Li43NGU3OGY0OTMyNTg1OWZmYjU2ODQxNjU1MWQ1NDFmODAyNzZiMzY3IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy93ZWJydGMvZGF0YWNoYW5uZWwvZmlsdGVyLWljZS1jYW5kaWRhdGUuaHRtbAor
KysgYi9MYXlvdXRUZXN0cy93ZWJydGMvZGF0YWNoYW5uZWwvZmlsdGVyLWljZS1jYW5kaWRhdGUu
aHRtbApAQCAtOCw2OCArOCw5MSBAQAogICA8L2hlYWQ+CiAgIDxib2R5PgogICAgIDxzY3JpcHQ+
Ci1wcm9taXNlX3Rlc3QoKHRlc3QpID0+IHsKLSAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29s
dmUsIHJlamVjdCkgPT4gewotICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsgcmVqZWN0KCJUZXN0
IHRpbWVkIG91dCIpOyB9LCA1MDAwKTsKLQotICAgICAgICBpZiAod2luZG93LmludGVybmFscykK
LSAgICAgICAgICAgIGludGVybmFscy5zZXRJQ0VDYW5kaWRhdGVGaWx0ZXJpbmcodHJ1ZSk7Ci0K
LSAgICAgICAgdmFyIGNvdW50ZXIgPSAwOwotICAgICAgICB2YXIgcGMgPSBuZXcgUlRDUGVlckNv
bm5lY3Rpb24oKTsKLSAgICAgICAgcGMuY3JlYXRlRGF0YUNoYW5uZWwoJ3NlbmREYXRhQ2hhbm5l
bCcpOwotICAgICAgICBwYy5vbmljZWNhbmRpZGF0ZSA9IChldmVudCkgPT4gewotICAgICAgICAg
ICAgaWYgKGV2ZW50LmNhbmRpZGF0ZSkgewotICAgICAgICAgICAgICAgIGNvdW50ZXIrKzsKLSAg
ICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBhc3NlcnRf
ZXF1YWxzKHBjLmxvY2FsRGVzY3JpcHRpb24uc2RwLmluZGV4T2YoImE9Y2FuZGlkYXRlIiksIC0x
KTsKLSAgICAgICAgICAgIGFzc2VydF90cnVlKHBjLmxvY2FsRGVzY3JpcHRpb24uc2RwLmluZGV4
T2YoImM9SU4gSVA0IDAuMC4wLjBcclxuIikgIT0gLTEgfHwgcGMubG9jYWxEZXNjcmlwdGlvbi5z
ZHAuaW5kZXhPZigiYz1JTiBJUDYgOjpcclxuIikgIT0gLTEpOwotICAgICAgICAgICAgaWYgKGNv
dW50ZXIgPT09IDApIHsKLSAgICAgICAgICAgICAgICBwYy5jcmVhdGVPZmZlcigpLnRoZW4oKG9m
ZmVyKSA9PiB7Ci0gICAgICAgICAgICAgICAgICAgIGFzc2VydF90cnVlKG9mZmVyLnNkcC5pbmRl
eE9mKCJjPUlOIElQNCAwLjAuMC4wXHJcbiIpICE9IC0xIHx8IHBjLmxvY2FsRGVzY3JpcHRpb24u
c2RwLmluZGV4T2YoImM9SU4gSVA2IDo6XHJcbiIpICE9IC0xKTsKLSAgICAgICAgICAgICAgICAg
ICAgYXNzZXJ0X2VxdWFscyhvZmZlci5zZHAuaW5kZXhPZigiYT1jYW5kaWRhdGUiKSwgLTEpOwot
ICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAg
ICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICByZWplY3QoIk5vIGNhbmRpZGF0ZSBzaG91
bGQgYmUgZm91bmQiKTsKLSAgICAgICAgfTsKLSAgICAgICAgcGMuY3JlYXRlT2ZmZXIoKS50aGVu
KChvZmZlcikgPT4gewotICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhvZmZlci5zZHAuaW5kZXhP
ZigiYT1jYW5kaWRhdGUiKSwgLTEpOwotICAgICAgICAgICAgcGMuc2V0TG9jYWxEZXNjcmlwdGlv
bihvZmZlcik7Ci0gICAgICAgIH0pOworZnVuY3Rpb24gZW5zdXJlQ2FuZGlkYXRlc0FyZU1ETlMo
c2RwKQoreworICAgIGFzc2VydF90cnVlKHNkcC5pbmRleE9mKCJjPUlOIElQNCAwLjAuMC4wXHJc
biIpICE9IC0xIHx8IHNkcC5pbmRleE9mKCJjPUlOIElQNiA6OlxyXG4iKSAhPSAtMSk7CisgICAg
Y29uc3QgY2FuZGlkYXRlcyA9IHNkcC5zcGxpdCgnXHJcbicpLmZpbHRlcihsaW5lID0+IHsKKyAg
ICAgICAgcmV0dXJuIGxpbmUuaW5kZXhPZignYT1jYW5kaWRhdGUnKSAhPT0gLTE7CisgICAgfSk7
CisgICAgZm9yIChjb25zdCBjYW5kaWRhdGUgb2YgY2FuZGlkYXRlcykKKyAgICAgICAgYXNzZXJ0
X25vdF9lcXVhbHMoY2FuZGlkYXRlLmluZGV4T2YoJy5sb2NhbCcpLCAtMSk7Cit9CisKK2Z1bmN0
aW9uIGVuc3VyZUNhbmRpZGF0ZXNBcmVOb3RNRE5TKHNkcCkKK3sKKyAgICBjb25zdCBjYW5kaWRh
dGVzID0gc2RwLnNwbGl0KCdcclxuJykuZmlsdGVyKGxpbmUgPT4geworICAgICAgICByZXR1cm4g
bGluZS5pbmRleE9mKCdhPWNhbmRpZGF0ZScpICE9PSAtMTsKICAgICB9KTsKKyAgICBmb3IgKGNv
bnN0IGNhbmRpZGF0ZSBvZiBjYW5kaWRhdGVzKQorICAgICAgICBhc3NlcnRfZXF1YWxzKGNhbmRp
ZGF0ZS5pbmRleE9mKCcubG9jYWwnKSwgLTEpOworfQorCitwcm9taXNlX3Rlc3QoYXN5bmMgKHRl
c3QpID0+IHsKKyAgICBsZXQgcmVzb2x2ZSwgcmVqZWN0OworICAgIGNvbnN0IHByb21pc2UgPSBu
ZXcgUHJvbWlzZSgocmVzLCByZWopID0+IHsgcmVzb2x2ZSA9IHJlczsgcmVqZWN0ID0gcmVqOyB9
KTsKKyAgICBzZXRUaW1lb3V0KCgpID0+IHsgcmVqZWN0KCJUZXN0IHRpbWVkIG91dCIpOyB9LCA1
MDAwKTsKKworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICBpbnRlcm5hbHMuc2V0
SUNFQ2FuZGlkYXRlRmlsdGVyaW5nKHRydWUpOworCisgICAgbGV0IGNvdW50ZXIgPSAwOworICAg
IGxldCBwYyA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOworICAgIHBjLmNyZWF0ZURhdGFDaGFu
bmVsKCdzZW5kRGF0YUNoYW5uZWwnKTsKKyAgICBwYy5vbmljZWNhbmRpZGF0ZSA9IGFzeW5jIChl
dmVudCkgPT4geworICAgICAgICBpZiAoZXZlbnQuY2FuZGlkYXRlKSB7CisgICAgICAgICAgICBh
c3NlcnRfbm90X2VxdWFscyhldmVudC5jYW5kaWRhdGUuY2FuZGlkYXRlLmluZGV4T2YoJy5sb2Nh
bCcpLCAtMSk7CisgICAgICAgICAgICBjb3VudGVyKys7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKyAgICAgICAgZW5zdXJlQ2FuZGlkYXRlc0FyZU1ETlMocGMubG9jYWxEZXNjcmlw
dGlvbi5zZHApOworICAgICAgICBpZiAoY291bnRlciA9PT0gMCkgeworICAgICAgICAgICAgY29u
c3Qgb2ZmZXIgPSBhd2FpdCBwYy5jcmVhdGVPZmZlcigpOworICAgICAgICAgICAgYXdhaXQgcGMu
c2V0TG9jYWxEZXNjcmlwdGlvbihvZmZlcik7CisgICAgICAgICAgICBlbnN1cmVDYW5kaWRhdGVz
QXJlTUROUyhwYy5sb2NhbERlc2NyaXB0aW9uLnNkcCk7CisgICAgICAgICAgICByZXNvbHZlKCk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgcmVzb2x2ZSgpOworICAg
IH07CisgICAgY29uc3Qgb2ZmZXIgPSBhd2FpdCBwYy5jcmVhdGVPZmZlcigpOworICAgIGFzc2Vy
dF9lcXVhbHMob2ZmZXIuc2RwLmluZGV4T2YoImE9Y2FuZGlkYXRlIiksIC0xKTsKKyAgICBhd2Fp
dCBwYy5zZXRMb2NhbERlc2NyaXB0aW9uKG9mZmVyKTsKKworICAgIHJldHVybiBwcm9taXNlOwog
fSwgIkdhdGhlcmluZyBJQ0UgY2FuZGlkYXRlcyBmcm9tIGEgZGF0YSBjaGFubmVsIHBlZXIgY29u
bmVjdGlvbiB3aXRoIElDRSBjYW5kaWRhdGUgZmlsdGVyaW5nIG9uIik7CiAKLXByb21pc2VfdGVz
dCgodGVzdCkgPT4gewotICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9
PiB7Ci0gICAgICAgIHNldFRpbWVvdXQoKCkgPT4geyByZWplY3QoIlRlc3QgdGltZWQgb3V0Iik7
IH0sIDUwMDApOworcHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7CisgICAgbGV0IHJlc29s
dmUsIHJlamVjdDsKKyAgICBjb25zdCBwcm9taXNlID0gbmV3IFByb21pc2UoKHJlcywgcmVqKSA9
PiB7IHJlc29sdmUgPSByZXM7IHJlamVjdCA9IHJlajsgfSk7CisgICAgc2V0VGltZW91dCgoKSA9
PiB7IHJlamVjdCgiVGVzdCB0aW1lZCBvdXQiKTsgfSwgNTAwMCk7CiAKLQlpZiAod2luZG93Lmlu
dGVybmFscykKLSAgICAgICAgICAgIGludGVybmFscy5zZXRJQ0VDYW5kaWRhdGVGaWx0ZXJpbmco
ZmFsc2UpOworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICBpbnRlcm5hbHMuc2V0
SUNFQ2FuZGlkYXRlRmlsdGVyaW5nKGZhbHNlKTsKKyAKKyAgICBsZXQgY291bnRlciA9IDA7Cisg
ICAgbGV0IHBjID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7CisgICAgcGMuY3JlYXRlRGF0YUNo
YW5uZWwoJ3NlbmREYXRhQ2hhbm5lbCcpOwogCi0gICAgICAgIHZhciBjb3VudGVyID0gMDsKLSAg
ICAgICAgdmFyIHBjID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7Ci0gICAgICAgIHBjLmNyZWF0
ZURhdGFDaGFubmVsKCdzZW5kRGF0YUNoYW5uZWwnKTsKLSAgICAgICAgcGMub25pY2VjYW5kaWRh
dGUgPSAoZXZlbnQpID0+IHsKLSAgICAgICAgICAgIGlmIChldmVudC5jYW5kaWRhdGUpIHsKLSAg
ICAgICAgICAgICAgICBjb3VudGVyKys7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICAgICAgfQotICAgICAgICAgICAgYXNzZXJ0X3RydWUocGMubG9jYWxEZXNjcmlwdGlvbi5zZHAu
aW5kZXhPZigiYz1JTiBJUDQgMC4wLjAuMFxyXG4iKSA9PT0gLTEgJiYgcGMubG9jYWxEZXNjcmlw
dGlvbi5zZHAuaW5kZXhPZigiYz1JTiBJUDYgOjpcclxuIikgPT09IC0xKTsKLSAgICAgICAgICAg
IGFzc2VydF9mYWxzZShwYy5sb2NhbERlc2NyaXB0aW9uLnNkcC5pbmRleE9mKCJhPWNhbmRpZGF0
ZSIpID09PSAtMSk7Ci0gICAgICAgICAgICBpZiAoY291bnRlciAhPT0gMCkgewotICAgICAgICAg
ICAgICAgIC8vIFJlZG9pbmcgYW4gb2ZmZXIgbm93IHRoYXQgd2UgaGF2ZSBzb21lIGNhbmRpZGF0
ZXMuCi0gICAgICAgICAgICAgICAgcGMuY3JlYXRlT2ZmZXIoKS50aGVuKChvZmZlcikgPT4gewot
ICAgICAgICAgICAgICAgICAgICBhc3NlcnRfdHJ1ZShvZmZlci5zZHAuaW5kZXhPZigiYz1JTiBJ
UDQgMC4wLjAuMFxyXG4iKSA9PT0gLTEgJiYgcGMubG9jYWxEZXNjcmlwdGlvbi5zZHAuaW5kZXhP
ZigiYz1JTiBJUDYgOjpcclxuIikgPT09IC0xKTsKLSAgICAgICAgICAgICAgICAgICAgYXNzZXJ0
X2ZhbHNlKG9mZmVyLnNkcC5pbmRleE9mKCJhPWNhbmRpZGF0ZSIpID09PSAtMSk7Ci0gICAgICAg
ICAgICAgICAgICAgIHJlc29sdmUoKTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAg
IH0gZWxzZQotICAgICAgICAgICAgICAgIHJlamVjdCgiSG9zdCBjYW5kaWRhdGVzIHNob3VsZCBi
ZSBmb3VuZCIpOwotICAgICAgICB9OwotICAgICAgICBwYy5jcmVhdGVPZmZlcigpLnRoZW4oKG9m
ZmVyKSA9PiB7IHBjLnNldExvY2FsRGVzY3JpcHRpb24ob2ZmZXIpOyB9KTsKLSAgICB9KTsKKyAg
ICBwYy5vbmljZWNhbmRpZGF0ZSA9IGFzeW5jIChldmVudCkgPT4geworICAgICAgICBpZiAoZXZl
bnQuY2FuZGlkYXRlKSB7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGV2ZW50LmNhbmRpZGF0
ZS5jYW5kaWRhdGUuaW5kZXhPZignLmxvY2FsJyksIC0xKTsKKyAgICAgICAgICAgIGNvdW50ZXIr
KzsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBlbnN1cmVDYW5kaWRh
dGVzQXJlTm90TUROUyhwYy5sb2NhbERlc2NyaXB0aW9uLnNkcCk7CisgICAgICAgIGlmIChjb3Vu
dGVyICE9PSAwKSB7CisgICAgICAgICAgICAvLyBSZWRvaW5nIGFuIG9mZmVyIG5vdyB0aGF0IHdl
IGhhdmUgc29tZSBjYW5kaWRhdGVzLgorICAgICAgICAgICAgY29uc3Qgb2ZmZXIgPSBhd2FpdCBw
Yy5jcmVhdGVPZmZlcigpOworICAgICAgICAgICAgYXdhaXQgcGMuc2V0TG9jYWxEZXNjcmlwdGlv
bihvZmZlcik7CisgICAgICAgICAgICBlbnN1cmVDYW5kaWRhdGVzQXJlTm90TUROUyhwYy5sb2Nh
bERlc2NyaXB0aW9uLnNkcCk7CisgICAgICAgICAgICByZXNvbHZlKCk7CisgICAgICAgIH0gZWxz
ZQorICAgICAgICAgICAgcmVqZWN0KCJIb3N0IGNhbmRpZGF0ZXMgc2hvdWxkIGJlIGZvdW5kIik7
CisgICAgfTsKKyAgICBjb25zdCBvZmZlciA9IGF3YWl0IHBjLmNyZWF0ZU9mZmVyKCk7CisgICAg
YXdhaXQgcGMuc2V0TG9jYWxEZXNjcmlwdGlvbihvZmZlcik7CisKKyAgICByZXR1cm4gcHJvbWlz
ZTsKIH0sICJHYXRoZXJpbmcgSUNFIGNhbmRpZGF0ZXMgZnJvbSBhIGRhdGEgY2hhbm5lbCBwZWVy
IGNvbm5lY3Rpb24gd2l0aCBJQ0UgY2FuZGlkYXRlIGZpbHRlcmluZyBvZmYiKTsKIAogcHJvbWlz
ZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJydGMv
ZmlsdGVyaW5nLWljZS1jYW5kaWRhdGUtYWZ0ZXItcmVsb2FkLmh0bWwgYi9MYXlvdXRUZXN0cy93
ZWJydGMvZmlsdGVyaW5nLWljZS1jYW5kaWRhdGUtYWZ0ZXItcmVsb2FkLmh0bWwKaW5kZXggYzg3
NTVmNzFmMTlmMWEzMDNjMjNiMGJhYWYxNjYzYmQ2OGJkNWI5ZC4uNTI1ZGU4NGY5ZDMyYmIxNDYy
ZGU5N2MyZjIwZTU1ZmZjYzE1ZTRiMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvd2VicnRjL2Zp
bHRlcmluZy1pY2UtY2FuZGlkYXRlLWFmdGVyLXJlbG9hZC5odG1sCisrKyBiL0xheW91dFRlc3Rz
L3dlYnJ0Yy9maWx0ZXJpbmctaWNlLWNhbmRpZGF0ZS1hZnRlci1yZWxvYWQuaHRtbApAQCAtNywy
NCArNywyOCBAQCBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKICAgICB0ZXN0UnVubmVyLndhaXRV
bnRpbERvbmUoKTsKIH0KIAotZnVuY3Rpb24gaXNGaWx0ZXJpbmdFbmFibGVkKCkKK2FzeW5jIGZ1
bmN0aW9uIGlzRmlsdGVyaW5nRW5hYmxlZCgpCiB7CisgICAgbGV0IHJlc29sdmUsIHJlamVjdDsK
KyAgICBjb25zdCBwcm9taXNlID0gbmV3IFByb21pc2UoKHJlcywgcmVqKSA9PiB7IHJlc29sdmUg
PSByZXM7IHJlamVjdCA9IHJlajsgfSk7CisgICAgc2V0VGltZW91dCgoKSA9PiB7IHJlamVjdCgi
VGVzdCB0aW1lZCBvdXQiKTsgfSwgNTAwMCk7CisKICAgICB2YXIgcGMgPSBuZXcgUlRDUGVlckNv
bm5lY3Rpb24oKTsKICAgICBwYy5jcmVhdGVEYXRhQ2hhbm5lbCgiIik7CiAKICAgICB2YXIgY2Fu
ZGlkYXRlcyA9IFtdOwotICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9
PiB7Ci0gICAgICAgIHBjLm9uaWNlY2FuZGlkYXRlID0gKGV2ZW50KSA9PiB7Ci0gICAgICAgICAg
ICBpZiAoZXZlbnQuY2FuZGlkYXRlID09PSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgcmVzb2x2
ZSghY2FuZGlkYXRlcy5sZW5ndGgpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
ICAgIH0KKyAgICBwYy5vbmljZWNhbmRpZGF0ZSA9IChldmVudCkgPT4geworICAgICAgICBpZiAo
ZXZlbnQuY2FuZGlkYXRlID09PSBudWxsKSB7CisgICAgICAgICAgICByZXNvbHZlKCFjYW5kaWRh
dGVzLmxlbmd0aCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYg
KGV2ZW50LmNhbmRpZGF0ZS5jYW5kaWRhdGUuaW5kZXhPZignLmxvY2FsJykgPT09IC0xKQogICAg
ICAgICAgICAgY2FuZGlkYXRlcy5wdXNoKGV2ZW50LmNhbmRpZGF0ZS5jYW5kaWRhdGUpOwotICAg
ICAgICB9OwotICAgICAgICBwYy5jcmVhdGVPZmZlcigpLnRoZW4oKG9mZmVyKSA9PiB7Ci0gICAg
ICAgICAgICBwYy5zZXRMb2NhbERlc2NyaXB0aW9uKG9mZmVyKTsKLSAgICAgICAgfSk7Ci0gICAg
fSk7CisgICAgfTsKKworICAgIGNvbnN0IG9mZmVyID0gYXdhaXQgcGMuY3JlYXRlT2ZmZXIoKTsK
KyAgICBhd2FpdCBwYy5zZXRMb2NhbERlc2NyaXB0aW9uKG9mZmVyKTsKKyAgICByZXR1cm4gcHJv
bWlzZTsKIH0KIAogZnVuY3Rpb24gZW5kVGVzdChtZXNzYWdlKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>437026</attachid>
            <date>2021-09-01 07:05:45 -0700</date>
            <delta_ts>2021-09-01 11:31:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229757-20210901160543.patch</filename>
            <type>text/plain</type>
            <size>83755</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxNzkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWIwNDFiMmIwMGZmNmU4
Y2YwNTI3MjZmMWQ1NmUzMzQwNGM1NjAwNy4uNThjOWY3ZDhmZTMwZDZlNWYwZTY1OTkyNzFkNTgy
NDJhZmFlYmRlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDIxLTA5LTAxICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgbGlid2Vi
cnRjIG5ldHdvcmsgbWFuYWdlciBHZXRNZG5zUmVzcG9uZGVyCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjk3NTcKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgbGlid2VicnRjIG1ETlMgc3VwcG9ydCBp
bnN0ZWFkIG9mIGFwcGx5aW5nIGl0IHdpdGhpbiBQZWVyQ29ubmVjdGlvbkJhY2tlbmQuCisgICAg
ICAgIFRoaXMgYWxsb3dzIGEgYmV0dGVyIGludGVncmF0aW9uIGFuZCBpcyBtb3JlIGNvbnNpc3Rl
bnQgd2l0aCB0aGUgQVBJIGFuZCBvdGhlciBicm93c2Vycy4KKyAgICAgICAgRm9yIGluc3RhbmNl
IG1ETlMgY2FuZGlkYXRlcyBub3cgc2hvdyB1cCBpbiBsb2NhbCBkZXNjcmlwdGlvbnMuCisgICAg
ICAgIFdlIGludHJvZHVjZSBSVENOZXR3b3JrTWFuYWdlciB3aGljaCBpcyByZXNwb25zaWJsZSBm
b3IgV2ViUlRDIG5ldHdvcmsuCisgICAgICAgIFJUQ05ldHdvcmtNYW5hZ2VyIGlzIHJlc3BvbnNp
YmxlIG9mIGFsbCBwZWVyIGNvbm5lY3Rpb25zIG9mIGEgZG9jdW1lbnQuIEl0IGNhbiB0aHVzIHJl
dXNlIG1ETlMgbmFtZXMgZnJvbSBvbmUgY29ubmVjdGlvbiB0byBhbm90aGVyLgorICAgICAgICBX
aGVuIGRvY3VtZW50IGdvZXMgYXdheSwgUlRDTmV0d29ya01hbmFnZXIgbmVlZHMgdG8gdW5yZWdp
c3RlciBhbGwgbUROUyBuYW1lcy4KKyAgICAgICAgVXBkYXRlIGV4aXN0aW5nIFNEUCBhbmQgSUNF
IGNhbmRpZGF0ZSBmaWx0ZXJpbmcgY29kZSBieSBvbmx5IGtlZXBpbmcgZGVidWcgYXNzZXJ0IHRo
YXQgd2UgZG8gbm90IGxlYWsgcHJpdmF0ZSBJUCBhZGRyZXNzZXMgaW4gY2FzZSBJQ0UgZmlsdGVy
aW5nIGlzIG9uLgorICAgICAgICBDb3ZlcmVkIGJ5IHVwZGF0ZWQgYW5kIGV4aXN0aW5nIHRlc3Rz
LgorCisgICAgICAgICogSGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3Ry
ZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29u
bmVjdGlvbkJhY2tlbmQ6OmNyZWF0ZU9mZmVyU3VjY2VlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6
OlBlZXJDb25uZWN0aW9uQmFja2VuZDo6ZW5hYmxlSUNFQ2FuZGlkYXRlRmlsdGVyaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uQmFja2VuZDo6ZGlzYWJsZUlDRUNhbmRpZGF0
ZUZpbHRlcmluZyk6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OnZh
bGlkYXRlU0RQIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uQmFja2Vu
ZDo6bmV3SUNFQ2FuZGlkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uQmFj
a2VuZDo6ZG9uZUdhdGhlcmluZ0NhbmRpZGF0ZXMpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
dHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0NvbnRyb2xsZXI6
OmFkZCk6CisgICAgICAgIChXZWJDb3JlOjpSVENDb250cm9sbGVyOjpkaXNhYmxlSUNFQ2FuZGlk
YXRlRmlsdGVyaW5nRm9yQWxsT3JpZ2lucyk6CisgICAgICAgIChXZWJDb3JlOjpSVENDb250cm9s
bGVyOjpkaXNhYmxlSUNFQ2FuZGlkYXRlRmlsdGVyaW5nRm9yRG9jdW1lbnQpOgorICAgICAgICAo
V2ViQ29yZTo6UlRDQ29udHJvbGxlcjo6ZW5hYmxlSUNFQ2FuZGlkYXRlRmlsdGVyaW5nKToKKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ05ldHdvcmtNYW5hZ2VyLmg6IEFkZGVkLgor
ICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5k
cG9pbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6c2V0
Q29uZmlndXJhdGlvbik6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMv
TGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okxp
YldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6Y3VycmVudExvY2FsRGVzY3JpcHRpb24gY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpw
ZW5kaW5nTG9jYWxEZXNjcmlwdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJS
VENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmxvY2FsRGVzY3JpcHRpb24gY29uc3QpOgorICAgICAg
ICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBkb20vRG9j
dW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OndpbGxCZVJlbW92ZWRGcm9t
RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnN1c3BlbmQpOgorICAgICAgICAq
IGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJ0Y05ldHdvcmtN
YW5hZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzZXRSVENOZXR3b3JrTWFuYWdl
cik6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vTUROU1JlZ2lzdGVyRXJyb3IuaDog
QWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJU
Q1Byb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ1Byb3ZpZGVyOjpjcmVh
dGVQZWVyQ29ubmVjdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2Vi
cnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmg6CisKIDIwMjEtMDgtMzEgIFlvdWVubiBGYWJsZXQgIDx5
b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBzdXBwb3J0IGZvciBSVENTY3RwVHJhbnNw
b3J0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCmluZGV4IDYxZjdhZDFjYTg4N2Q1YmZkMjEyZjQzOTNkMGM1MmFlYWFjMGI1N2Iu
LmU0N2ZiZDg2N2JmZjk0YjI0NGM3YTU5MWU0YzEyZWViNmZjMTdhYzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNTYgQEAKKzIwMjEtMDktMDEgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29t
PgorCisgICAgICAgIEltcGxlbWVudCBsaWJ3ZWJydGMgbmV0d29yayBtYW5hZ2VyIEdldE1kbnNS
ZXNwb25kZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyOTc1NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEltcGxlbWVudCBSVENOZXR3b3JrTWFuYWdlciBBUEkgaW4gTGliV2ViUlRDTmV0d29ya01hbmFn
ZXIgdG8gaGFuZGxlIHBlci1kb2N1bWVudCBtRE5TIHJlZ2lzdHJhdGlvbnMuCisgICAgICAgIE1v
dmUgcGFydCBvZiBXZWJSVENNb25pdG9yIHRvIExpYldlYlJUQ05ldHdvcmtNYW5hZ2VyLgorICAg
ICAgICBMaWJXZWJSVENOZXR3b3JrTWFuYWdlciBpcyBhIFdlYlJUQ01vbml0b3Igb2JzZXJ2ZXIg
dG8gZ2V0IHRoZSBsaXN0IG9mIG5ldHdvcmtzLgorICAgICAgICBTaW5jZSBsaWJ3ZWJydGMgaXMg
bm93IGRvaW5nIHRoZSBtRE5TIHJlZ2lzdHJhdGlvbiwgd2UgbmVlZCB0byByZXR1cm4gYSBtRE5T
IG5hbWUgZXZlbiBpZiByZWdpc3RyYXRpb24gZmFpbGVkLgorICAgICAgICBXZSB1cGRhdGUgV2Vi
TUROU1JlZ2lzdGVyIGFuZCBOZXR3b3JrTUROU1JlZ2lzdGVyIGFjY29yZGluZ2x5LgorCisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtNRE5TUmVnaXN0ZXIuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpyZWdpc3Rlck1ETlNOYW1lQ2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrTUROU1JlZ2lzdGVyOjpyZWdpc3Rlck1ETlNOYW1lKToKKyAgICAgICAgKiBTb3Vy
Y2VzLnR4dDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ05ldHdvcmtNYW5hZ2Vy
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ05ldHdvcmtNYW5hZ2VyOjpn
ZXRPckNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ05ldHdvcmtNYW5hZ2VyOjpM
aWJXZWJSVENOZXR3b3JrTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ05ldHdv
cmtNYW5hZ2VyOjp+TGliV2ViUlRDTmV0d29ya01hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpM
aWJXZWJSVENOZXR3b3JrTWFuYWdlcjo6dW5yZWdpc3Rlck1ETlNOYW1lcyk6CisgICAgICAgIChX
ZWJLaXQ6OkxpYldlYlJUQ05ldHdvcmtNYW5hZ2VyOjpTdGFydFVwZGF0aW5nKToKKyAgICAgICAg
KFdlYktpdDo6TGliV2ViUlRDTmV0d29ya01hbmFnZXI6OlN0b3BVcGRhdGluZyk6CisgICAgICAg
IChXZWJLaXQ6OkxpYldlYlJUQ05ldHdvcmtNYW5hZ2VyOjpHZXRNZG5zUmVzcG9uZGVyIGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDTmV0d29ya01hbmFnZXI6Om5ldHdvcmtzQ2hh
bmdlZCk6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ05ldHdvcmtNYW5hZ2VyOjpuZXR3b3Jr
UHJvY2Vzc0NyYXNoZWQpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENOZXR3b3JrTWFuYWdl
cjo6Q3JlYXRlTmFtZUZvckFkZHJlc3MpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENOZXR3
b3JrTWFuYWdlcjo6UmVtb3ZlTmFtZUZvckFkZHJlc3MpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
TmV0d29yay93ZWJydGMvTGliV2ViUlRDTmV0d29ya01hbmFnZXIuaDogQWRkZWQuCisgICAgICAg
ICogV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkxpYldlYlJUQ1Byb3ZpZGVyOjpjcmVhdGVQZWVyQ29ubmVjdGlvbik6Cisg
ICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ1Byb3ZpZGVyOjpkaXNhYmxlTm9uTG9jYWxob3N0Q29u
bmVjdGlvbnMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRD
UHJvdmlkZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1dlYk1ETlNS
ZWdpc3Rlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYk1ETlNSZWdpc3Rlcjo6ZmluaXNoZWRS
ZWdpc3RlcmluZ01ETlNOYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViTUROU1JlZ2lzdGVyOjpy
ZWdpc3Rlck1ETlNOYW1lKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1dl
Yk1ETlNSZWdpc3Rlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvV2Vi
TUROU1JlZ2lzdGVyLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay93
ZWJydGMvV2ViUlRDTW9uaXRvci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJUQ01vbml0b3I6
OnN0YXJ0VXBkYXRpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJSVENNb25pdG9yOjpzdG9wVXBk
YXRpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJSVENNb25pdG9yOjpuZXR3b3Jrc0NoYW5nZWQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJSVENNb25pdG9yOjpuZXR3b3JrUHJvY2Vzc0NyYXNoZWQp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvV2ViUlRDTW9uaXRvci5oOgor
ICAgICAgICAoV2ViS2l0OjpXZWJSVENNb25pdG9yOjphZGRPYnNlcnZlcik6CisgICAgICAgIChX
ZWJLaXQ6OldlYlJUQ01vbml0b3I6OnJlbW92ZU9ic2VydmVyKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUlRDTW9uaXRvcjo6ZGlkUmVjZWl2ZU5ldHdvcmtMaXN0IGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViUlRDTW9uaXRvcjo6bmV0d29ya0xpc3QgY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpXZWJSVENNb25pdG9yOjppcHY0IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUlRDTW9u
aXRvcjo6aXB2NiBjb25zdCk6CisKIDIwMjEtMDgtMjYgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBw
bGUuY29tPgogCiAgICAgICAgIEN1dCBkb3duIG9uIHVzZSBvZiBDRkdldFR5cGVJRCwgdXNpbmcg
ZHluYW1pY19jZl9jYXN0IGluc3RlYWQ7IHJlbGF0ZWQgc3RyZWFtbGluaW5nCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5j
bWFrZQppbmRleCA3NmNlMGM2NjFmZWU4MzBkMTc2ZTM2MWY1Nzk4NzM1YzdhZTFlMGNlLi5jZWI5
M2ZlOGQwMTgwYzdjZWM2ZjIxMTc3YzgwMGE3MTkxNGMyMDQwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UK
QEAgLTExNSwxMSArMTE1LDE0IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURF
UlMKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmgKICAgICBNb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5oCiAgICAgTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZVNvdXJjZS5oCisgICAgTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENOZXR3b3JrTWFuYWdlci5oCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9TVFVO
TWVzc2FnZVBhcnNpbmcuaAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhQ2xpZW50
LmgKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYUNvbnRyb2xsZXIuaAogICAgIE1v
ZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5oCiAKKyAgICBNb2R1bGVzL21lZGlh
c3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENVdGlscy5oCisKICAgICBNb2R1bGVzL21vZGVsLWVs
ZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oCiAKICAgICBNb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90
aWZpY2F0aW9uLmgKQEAgLTE0MTIsNiArMTQxNSw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJB
TUVXT1JLX0hFQURFUlMKIAogICAgIHBsYXRmb3JtL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2Uu
aAogICAgIHBsYXRmb3JtL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmgKKyAgICBw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9NRE5TUmVnaXN0ZXJFcnJvci5oCiAgICAgcGxhdGZvcm0vbWVk
aWFzdHJlYW0vTWVkaWFDb25zdHJhaW50cy5oCiAgICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1Qcml2YXRlLmgKICAgICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVJl
cXVlc3QuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Q
ZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwCmluZGV4IDc5OWUxZDNkYWNjNDgxMDcyYzFi
NTdiYWQxZTk1ZTA2ZDBhMDRjODEuLmIzYjkzYmNjMzZkZjdkZDRiNTVjNWQ0YzE4MWI0MTUxODQ1
MThhMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVl
ckNvbm5lY3Rpb25CYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAKQEAgLTEwMiw3ICsxMDIsOCBAQCB2b2lk
IFBlZXJDb25uZWN0aW9uQmFja2VuZDo6Y3JlYXRlT2ZmZXJTdWNjZWVkZWQoU3RyaW5nJiYgc2Rw
KQogICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgIkNyZWF0ZSBvZmZlciBzdWNjZWVkZWQ6
XG4iLCBzZHApOwogCiAgICAgQVNTRVJUKG1fb2ZmZXJBbnN3ZXJQcm9taXNlKTsKLSAgICBtX3Bl
ZXJDb25uZWN0aW9uLmRvVGFzayhbdGhpcywgcHJvbWlzZSA9IFdURk1vdmUobV9vZmZlckFuc3dl
clByb21pc2UpLCBzZHAgPSBmaWx0ZXJTRFAoV1RGTW92ZShzZHApKV0oKSBtdXRhYmxlIHsKKyAg
ICB2YWxpZGF0ZVNEUChzZHApOworICAgIG1fcGVlckNvbm5lY3Rpb24uZG9UYXNrKFt0aGlzLCBw
cm9taXNlID0gV1RGTW92ZShtX29mZmVyQW5zd2VyUHJvbWlzZSksIHNkcCA9IFdURk1vdmUoc2Rw
KV0oKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKG1fcGVlckNvbm5lY3Rpb24uaXNDbG9zZWQoKSkK
ICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMzc2LDgxICszNzcsMTkgQEAgdm9pZCBQZWVyQ29u
bmVjdGlvbkJhY2tlbmQ6OmVuYWJsZUlDRUNhbmRpZGF0ZUZpbHRlcmluZygpCiB2b2lkIFBlZXJD
b25uZWN0aW9uQmFja2VuZDo6ZGlzYWJsZUlDRUNhbmRpZGF0ZUZpbHRlcmluZygpCiB7CiAgICAg
bV9zaG91bGRGaWx0ZXJJQ0VDYW5kaWRhdGVzID0gZmFsc2U7Ci0gICAgZm9yIChhdXRvJiBwZW5k
aW5nSUNFQ2FuZGlkYXRlIDogbV9wZW5kaW5nSUNFQ2FuZGlkYXRlcykKLSAgICAgICAgZmlyZUlD
RUNhbmRpZGF0ZUV2ZW50KFJUQ0ljZUNhbmRpZGF0ZTo6Y3JlYXRlKFdURk1vdmUocGVuZGluZ0lD
RUNhbmRpZGF0ZS5zZHApLCBXVEZNb3ZlKHBlbmRpbmdJQ0VDYW5kaWRhdGUubWlkKSwgcGVuZGlu
Z0lDRUNhbmRpZGF0ZS5zZHBNTGluZUluZGV4KSwgV1RGTW92ZShwZW5kaW5nSUNFQ2FuZGlkYXRl
LnNlcnZlclVSTCkpOwotICAgIG1fcGVuZGluZ0lDRUNhbmRpZGF0ZXMuY2xlYXIoKTsKLX0KLQot
c3RhdGljIFN0cmluZyBmaWx0ZXJJQ0VDYW5kaWRhdGUoU3RyaW5nJiYgc2RwKQotewotICAgIEFT
U0VSVCghc2RwLmNvbnRhaW5zKCIgaG9zdCAiKSk7Ci0KLSAgICBpZiAoIXNkcC5jb250YWlucygi
IHJhZGRyICIpKQotICAgICAgICByZXR1cm4gV1RGTW92ZShzZHApOwotCi0gICAgYm9vbCBza2lw
TmV4dEl0ZW0gPSBmYWxzZTsKLSAgICBib29sIGlzRmlyc3QgPSB0cnVlOwotICAgIFN0cmluZ0J1
aWxkZXIgZmlsdGVyZWRTRFA7Ci0gICAgc2RwLnNwbGl0KCcgJywgWyZdKFN0cmluZ1ZpZXcgaXRl
bSkgewotICAgICAgICBpZiAoc2tpcE5leHRJdGVtKSB7Ci0gICAgICAgICAgICBza2lwTmV4dEl0
ZW0gPSBmYWxzZTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBpZiAo
aXRlbSA9PSAicmFkZHIiKSB7Ci0gICAgICAgICAgICBmaWx0ZXJlZFNEUC5hcHBlbmQoIiByYWRk
ciAwLjAuMC4wIik7Ci0gICAgICAgICAgICBza2lwTmV4dEl0ZW0gPSB0cnVlOwotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGlmIChpdGVtID09ICJycG9ydCIpIHsKLSAg
ICAgICAgICAgIGZpbHRlcmVkU0RQLmFwcGVuZCgiIHJwb3J0IDAiKTsKLSAgICAgICAgICAgIHNr
aXBOZXh0SXRlbSA9IHRydWU7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAg
ICAgaWYgKGlzRmlyc3QpCi0gICAgICAgICAgICBpc0ZpcnN0ID0gZmFsc2U7Ci0gICAgICAgIGVs
c2UKLSAgICAgICAgICAgIGZpbHRlcmVkU0RQLmFwcGVuZCgnICcpOwotICAgICAgICBmaWx0ZXJl
ZFNEUC5hcHBlbmQoaXRlbSk7Ci0gICAgfSk7Ci0gICAgcmV0dXJuIGZpbHRlcmVkU0RQLnRvU3Ry
aW5nKCk7CiB9CiAKLVN0cmluZyBQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmZpbHRlclNEUChTdHJp
bmcmJiBzZHApIGNvbnN0Cit2b2lkIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6dmFsaWRhdGVTRFAo
Y29uc3QgU3RyaW5nJiBzZHApIGNvbnN0CiB7CisjaWZuZGVmIE5ERUJVRwogICAgIGlmICghbV9z
aG91bGRGaWx0ZXJJQ0VDYW5kaWRhdGVzKQotICAgICAgICByZXR1cm4gV1RGTW92ZShzZHApOwot
Ci0gICAgU3RyaW5nQnVpbGRlciBmaWx0ZXJlZFNEUDsKLSAgICBzZHAuc3BsaXQoJ1xuJywgW3Ro
aXMsICZmaWx0ZXJlZFNEUF0oU3RyaW5nVmlldyBsaW5lKSB7Ci0gICAgICAgIGlmIChsaW5lLnN0
YXJ0c1dpdGgoImM9SU4gSVA0IikpIHsKLSAgICAgICAgICAgIGZpbHRlcmVkU0RQLmFwcGVuZCgi
Yz1JTiBJUDQgMC4wLjAuMFxyXG4iKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQot
ICAgICAgICBpZiAobGluZS5zdGFydHNXaXRoKCJjPUlOIElQNiIpKSB7Ci0gICAgICAgICAgICBm
aWx0ZXJlZFNEUC5hcHBlbmQoImM9SU4gSVA2IDo6XHJcbiIpOwotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICB9Ci0gICAgICAgIGlmICghbGluZS5zdGFydHNXaXRoKCJhPWNhbmRpZGF0ZSIp
KSB7Ci0gICAgICAgICAgICBmaWx0ZXJlZFNEUC5hcHBlbmQobGluZSk7Ci0gICAgICAgICAgICBm
aWx0ZXJlZFNEUC5hcHBlbmQoJ1xuJyk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0K
LSAgICAgICAgaWYgKGxpbmUuZmluZCgiIGhvc3QgIiwgMTEpID09IG5vdEZvdW5kKSB7Ci0gICAg
ICAgICAgICBmaWx0ZXJlZFNEUC5hcHBlbmQoZmlsdGVySUNFQ2FuZGlkYXRlKGxpbmUudG9TdHJp
bmcoKSkpOwotICAgICAgICAgICAgZmlsdGVyZWRTRFAuYXBwZW5kKCdcbicpOwotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgYXV0byBpcEFkZHJlc3MgPSBleHRyYWN0
SVBBZGRyZXNzKGxpbmUpOwotICAgICAgICBhdXRvIG1kbnNOYW1lID0gbV9pcEFkZHJlc3NUb01E
TlNOYW1lTWFwLmdldChpcEFkZHJlc3MpOwotICAgICAgICBpZiAobWRuc05hbWUuaXNFbXB0eSgp
KQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBhdXRvIHNkcCA9IGxpbmUudG9TdHJpbmco
KTsKLSAgICAgICAgc2RwLnJlcGxhY2UoaXBBZGRyZXNzLCBtZG5zTmFtZSk7Ci0gICAgICAgIGZp
bHRlcmVkU0RQLmFwcGVuZChzZHApOwotICAgICAgICBmaWx0ZXJlZFNEUC5hcHBlbmQoJ1xuJyk7
CisgICAgICAgIHJldHVybjsKKyAgICBzZHAuc3BsaXQoJ1xuJywgW10oYXV0byBsaW5lKSB7Cisg
ICAgICAgIEFTU0VSVCghbGluZS5zdGFydHNXaXRoKCJhPWNhbmRpZGF0ZSIpIHx8IGxpbmUuY29u
dGFpbnMoIi5sb2NhbCIpKTsKICAgICB9KTsKLSAgICByZXR1cm4gZmlsdGVyZWRTRFAudG9TdHJp
bmcoKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHNkcCk7CisjZW5kaWYKIH0KIAogdm9pZCBQ
ZWVyQ29ubmVjdGlvbkJhY2tlbmQ6Om5ld0lDRUNhbmRpZGF0ZShTdHJpbmcmJiBzZHAsIFN0cmlu
ZyYmIG1pZCwgdW5zaWduZWQgc2hvcnQgc2RwTUxpbmVJbmRleCwgU3RyaW5nJiYgc2VydmVyVVJM
KQpAQCAtNDYwLDIyICszOTksOCBAQCB2b2lkIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6bmV3SUNF
Q2FuZGlkYXRlKFN0cmluZyYmIHNkcCwgU3RyaW5nJiYgbWlkLCB1bnNpZ25lZAogICAgICAgICBB
TFdBWVNfTE9HKGxvZ1NpdGVJZGVudGlmaWVyLCAiR2F0aGVyZWQgaWNlIGNhbmRpZGF0ZToiLCBz
ZHApOwogICAgICAgICBtX2ZpbmlzaGVkR2F0aGVyaW5nQ2FuZGlkYXRlcyA9IGZhbHNlOwogCi0g
ICAgICAgIGlmICghbV9zaG91bGRGaWx0ZXJJQ0VDYW5kaWRhdGVzKSB7Ci0gICAgICAgICAgICBm
aXJlSUNFQ2FuZGlkYXRlRXZlbnQoUlRDSWNlQ2FuZGlkYXRlOjpjcmVhdGUoV1RGTW92ZShzZHAp
LCBXVEZNb3ZlKG1pZCksIHNkcE1MaW5lSW5kZXgpLCBXVEZNb3ZlKHNlcnZlclVSTCkpOwotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGlmIChzZHAuZmluZCgiIGhvc3Qg
IiwgMCkgIT0gbm90Rm91bmQpIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBtaWdodCBuZWVk
IHRvIGNsZWFyIGFsbCBwZW5kaW5nIGNhbmRpZGF0ZXMgd2hlbiBzZXR0aW5nIGFnYWluIGxvY2Fs
IGRlc2NyaXB0aW9uLgotICAgICAgICAgICAgbV9wZW5kaW5nSUNFQ2FuZGlkYXRlcy5hcHBlbmQo
UGVuZGluZ0lDRUNhbmRpZGF0ZSB7IFN0cmluZyB7IHNkcCB9LCBXVEZNb3ZlKG1pZCksIHNkcE1M
aW5lSW5kZXgsIFdURk1vdmUoc2VydmVyVVJMKSB9KTsKLSAgICAgICAgICAgIGlmIChSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYlJUQ01ETlNJQ0VDYW5kaWRhdGVz
RW5hYmxlZCgpKSB7Ci0gICAgICAgICAgICAgICAgYXV0byBpcEFkZHJlc3MgPSBleHRyYWN0SVBB
ZGRyZXNzKHNkcCk7Ci0gICAgICAgICAgICAgICAgLy8gV2UgcmVzdHJpY3QgdG8gSVB2NCBjYW5k
aWRhdGVzIGZvciBub3cuCi0gICAgICAgICAgICAgICAgaWYgKGlwQWRkcmVzcy5jb250YWlucygn
LicpKQotICAgICAgICAgICAgICAgICAgICByZWdpc3Rlck1ETlNOYW1lKGlwQWRkcmVzcyk7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgZmly
ZUlDRUNhbmRpZGF0ZUV2ZW50KFJUQ0ljZUNhbmRpZGF0ZTo6Y3JlYXRlKGZpbHRlcklDRUNhbmRp
ZGF0ZShXVEZNb3ZlKHNkcCkpLCBXVEZNb3ZlKG1pZCksIHNkcE1MaW5lSW5kZXgpLCBXVEZNb3Zl
KHNlcnZlclVSTCkpOworICAgICAgICBBU1NFUlQoIW1fc2hvdWxkRmlsdGVySUNFQ2FuZGlkYXRl
cyB8fCBzZHAuY29udGFpbnMoIi5sb2NhbCIpKTsKKyAgICAgICAgZmlyZUlDRUNhbmRpZGF0ZUV2
ZW50KFJUQ0ljZUNhbmRpZGF0ZTo6Y3JlYXRlKFdURk1vdmUoc2RwKSwgV1RGTW92ZShtaWQpLCBz
ZHBNTGluZUluZGV4KSwgV1RGTW92ZShzZXJ2ZXJVUkwpKTsKICAgICB9KTsKIH0KIApAQCAtNDg1
LDEyICs0MTAsOCBAQCB2b2lkIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6ZG9uZUdhdGhlcmluZ0Nh
bmRpZGF0ZXMoKQogICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgIkZpbmlzaGVkIGljZSBj
YW5kaWRhdGUgZ2F0aGVyaW5nIik7CiAgICAgbV9maW5pc2hlZEdhdGhlcmluZ0NhbmRpZGF0ZXMg
PSB0cnVlOwogCi0gICAgaWYgKG1fd2FpdGluZ0Zvck1ETlNSZWdpc3RyYXRpb24pCi0gICAgICAg
IHJldHVybjsKLQogICAgIG1fcGVlckNvbm5lY3Rpb24uZGlzcGF0Y2hFdmVudFdoZW5GZWFzaWJs
ZShSVENQZWVyQ29ubmVjdGlvbkljZUV2ZW50OjpjcmVhdGUoRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8s
IEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vLCBudWxscHRyLCB7IH0pKTsKICAgICBtX3BlZXJDb25u
ZWN0aW9uLnVwZGF0ZUljZUdhdGhlcmluZ1N0YXRlKFJUQ0ljZUdhdGhlcmluZ1N0YXRlOjpDb21w
bGV0ZSk7Ci0gICAgbV9wZW5kaW5nSUNFQ2FuZGlkYXRlcy5jbGVhcigpOwogfQogCiB2b2lkIFBl
ZXJDb25uZWN0aW9uQmFja2VuZDo6ZW5kT2ZJY2VDYW5kaWRhdGVzKERPTVByb21pc2VEZWZlcnJl
ZDx2b2lkPiYmIHByb21pc2UpCkBAIC00OTgsNDUgKzQxOSw2IEBAIHZvaWQgUGVlckNvbm5lY3Rp
b25CYWNrZW5kOjplbmRPZkljZUNhbmRpZGF0ZXMoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYg
cHJvbWlzCiAgICAgcHJvbWlzZS5yZXNvbHZlKCk7CiB9CiAKLXZvaWQgUGVlckNvbm5lY3Rpb25C
YWNrZW5kOjpyZWdpc3Rlck1ETlNOYW1lKGNvbnN0IFN0cmluZyYgaXBBZGRyZXNzKQotewotICAg
ICsrbV93YWl0aW5nRm9yTUROU1JlZ2lzdHJhdGlvbjsKLSAgICBhdXRvJiBkb2N1bWVudCA9IGRv
d25jYXN0PERvY3VtZW50PigqbV9wZWVyQ29ubmVjdGlvbi5zY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkpOwotICAgIGF1dG8mIHByb3ZpZGVyID0gZG9jdW1lbnQucGFnZSgpLT5saWJXZWJSVENQcm92
aWRlcigpOwotICAgIHByb3ZpZGVyLnJlZ2lzdGVyTUROU05hbWUoZG9jdW1lbnQuaWRlbnRpZmll
cigpLCBpcEFkZHJlc3MsIFtwZWVyQ29ubmVjdGlvbiA9IG1ha2VSZWYobV9wZWVyQ29ubmVjdGlv
biksIHRoaXMsIGlwQWRkcmVzc10gKExpYldlYlJUQ1Byb3ZpZGVyOjpNRE5TTmFtZU9yRXJyb3Im
JiByZXN1bHQpIHsKLSAgICAgICAgaWYgKHBlZXJDb25uZWN0aW9uLT5pc1N0b3BwZWQoKSkKLSAg
ICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAtLW1fd2FpdGluZ0Zvck1ETlNSZWdpc3RyYXRp
b247Ci0gICAgICAgIGlmICghcmVzdWx0Lmhhc192YWx1ZSgpKSB7Ci0gICAgICAgICAgICBtX3Bl
ZXJDb25uZWN0aW9uLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+YWRkQ29uc29sZU1lc3NhZ2Uo
TWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgbWFrZVN0cmluZygiTURO
UyByZWdpc3RyYXRpb24gb2YgYSBob3N0IGNhbmRpZGF0ZSBmYWlsZWQgd2l0aCBlcnJvciAiLCAo
dW5zaWduZWQpcmVzdWx0LmVycm9yKCkpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
fQotCi0gICAgICAgIHRoaXMtPmZpbmlzaGVkUmVnaXN0ZXJpbmdNRE5TTmFtZShpcEFkZHJlc3Ms
IHJlc3VsdC52YWx1ZSgpKTsKLSAgICB9KTsKLX0KLQotdm9pZCBQZWVyQ29ubmVjdGlvbkJhY2tl
bmQ6OmZpbmlzaGVkUmVnaXN0ZXJpbmdNRE5TTmFtZShjb25zdCBTdHJpbmcmIGlwQWRkcmVzcywg
Y29uc3QgU3RyaW5nJiBuYW1lKQotewotICAgIG1faXBBZGRyZXNzVG9NRE5TTmFtZU1hcC5hZGQo
aXBBZGRyZXNzLCBuYW1lKTsKLSAgICBWZWN0b3I8UGVuZGluZ0lDRUNhbmRpZGF0ZSo+IGNhbmRp
ZGF0ZXM7Ci0gICAgZm9yIChhdXRvJiBjYW5kaWRhdGUgOiBtX3BlbmRpbmdJQ0VDYW5kaWRhdGVz
KSB7Ci0gICAgICAgIGlmIChjYW5kaWRhdGUuc2RwLmZpbmQoaXBBZGRyZXNzKSAhPSBub3RGb3Vu
ZCkgewotICAgICAgICAgICAgYXV0byBzZHAgPSBjYW5kaWRhdGUuc2RwOwotICAgICAgICAgICAg
c2RwLnJlcGxhY2UoaXBBZGRyZXNzLCBuYW1lKTsKLSAgICAgICAgICAgIGZpcmVJQ0VDYW5kaWRh
dGVFdmVudChSVENJY2VDYW5kaWRhdGU6OmNyZWF0ZShXVEZNb3ZlKHNkcCksIFdURk1vdmUoY2Fu
ZGlkYXRlLm1pZCksIGNhbmRpZGF0ZS5zZHBNTGluZUluZGV4KSwgV1RGTW92ZShjYW5kaWRhdGUu
c2VydmVyVVJMKSk7Ci0gICAgICAgICAgICBjYW5kaWRhdGVzLmFwcGVuZCgmY2FuZGlkYXRlKTsK
LSAgICAgICAgfQotICAgIH0KLSAgICBtX3BlbmRpbmdJQ0VDYW5kaWRhdGVzLnJlbW92ZUFsbE1h
dGNoaW5nKFsmXSAoY29uc3QgYXV0byYgY2FuZGlkYXRlKSB7Ci0gICAgICAgIHJldHVybiBjYW5k
aWRhdGVzLmNvbnRhaW5zKCZjYW5kaWRhdGUpOwotICAgIH0pOwotCi0gICAgaWYgKCFtX3dhaXRp
bmdGb3JNRE5TUmVnaXN0cmF0aW9uICYmIG1fZmluaXNoZWRHYXRoZXJpbmdDYW5kaWRhdGVzKQot
ICAgICAgICBkb25lR2F0aGVyaW5nQ2FuZGlkYXRlcygpOwotfQotCiB2b2lkIFBlZXJDb25uZWN0
aW9uQmFja2VuZDo6dXBkYXRlU2lnbmFsaW5nU3RhdGUoUlRDU2lnbmFsaW5nU3RhdGUgbmV3U2ln
bmFsaW5nU3RhdGUpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5k
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFj
a2VuZC5oCmluZGV4IDFjMjU1NjYyNWVlYmMyZjc3NjIzOGE4MzVkMzc0OGIwMTZhM2Y1NjQuLjZm
M2ZiNDJhODBlMmVjNjJlY2E0MTc0NTBlZDViZjU5MmRkNmFhNjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tl
bmQuaApAQCAtMjA5LDcgKzIwOSw3IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGFkZEljZUNhbmRp
ZGF0ZVN1Y2NlZWRlZCgpOwogICAgIHZvaWQgYWRkSWNlQ2FuZGlkYXRlRmFpbGVkKEV4Y2VwdGlv
biYmKTsKIAotICAgIFN0cmluZyBmaWx0ZXJTRFAoU3RyaW5nJiYpIGNvbnN0OworICAgIHZvaWQg
dmFsaWRhdGVTRFAoY29uc3QgU3RyaW5nJikgY29uc3Q7CiAKICAgICBzdHJ1Y3QgUGVuZGluZ1Ry
YWNrRXZlbnQgewogICAgICAgICBSZWY8UlRDUnRwUmVjZWl2ZXI+IHJlY2VpdmVyOwpAQCAtMjI4
LDggKzIyOCw2IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGVuZE9mSWNlQ2FuZGlkYXRl
cyhET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJik7CiAgICAgdmlydHVhbCB2b2lkIGRvU3RvcCgp
ID0gMDsKIAotICAgIHZvaWQgcmVnaXN0ZXJNRE5TTmFtZShjb25zdCBTdHJpbmcmIGlwQWRkcmVz
cyk7Ci0KIHByb3RlY3RlZDoKICAgICBSVENQZWVyQ29ubmVjdGlvbiYgbV9wZWVyQ29ubmVjdGlv
bjsKIApAQCAtMjM3LDI2ICsyMzUsMTYgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
UGVlckNvbm5lY3Rpb246OlNlc3Npb25EZXNjcmlwdGlvblByb21pc2U+IG1fb2ZmZXJBbnN3ZXJQ
cm9taXNlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4+IG1f
c2V0RGVzY3JpcHRpb25Qcm9taXNlOwogCi0gICAgYm9vbCBtX3Nob3VsZEZpbHRlcklDRUNhbmRp
ZGF0ZXMgeyB0cnVlIH07Ci0gICAgc3RydWN0IFBlbmRpbmdJQ0VDYW5kaWRhdGUgewotICAgICAg
ICAvLyBGaWVsZHMgZGVzY3JpYmVkIGluIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJydGMvI2lk
bC1kZWYtcnRjaWNlY2FuZGlkYXRlaW5pdC4KLSAgICAgICAgU3RyaW5nIHNkcDsKLSAgICAgICAg
U3RyaW5nIG1pZDsKLSAgICAgICAgdW5zaWduZWQgc2hvcnQgc2RwTUxpbmVJbmRleDsKLSAgICAg
ICAgU3RyaW5nIHNlcnZlclVSTDsKLSAgICB9OwotICAgIFZlY3RvcjxQZW5kaW5nSUNFQ2FuZGlk
YXRlPiBtX3BlbmRpbmdJQ0VDYW5kaWRhdGVzOworICAgIGJvb2wgbV9zaG91bGRGaWx0ZXJJQ0VD
YW5kaWRhdGVzIHsgZmFsc2UgfTsKIAogICAgIFZlY3RvcjxQZW5kaW5nVHJhY2tFdmVudD4gbV9w
ZW5kaW5nVHJhY2tFdmVudHM7CiAKLSAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBtX2lwQWRk
cmVzc1RvTUROU05hbWVNYXA7CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgUmVmPGNv
bnN0IExvZ2dlcj4gbV9sb2dnZXI7CiAgICAgY29uc3Qgdm9pZCogbV9sb2dJZGVudGlmaWVyOwog
I2VuZGlmCiAgICAgYm9vbCBtX25lZ290aWF0aW9uTmVlZGVkIHsgZmFsc2UgfTsKICAgICBib29s
IG1fZmluaXNoZWRHYXRoZXJpbmdDYW5kaWRhdGVzIHsgZmFsc2UgfTsKLSAgICB1aW50NjRfdCBt
X3dhaXRpbmdGb3JNRE5TUmVnaXN0cmF0aW9uIHsgMCB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
Q29udHJvbGxlci5jcHAKaW5kZXggNzBkNDBjNmJkNWIzMjYyZjJjZmU2MTVmYmMyYjQ1YzYyOWNj
ZjQzZS4uY2YzNDVhNDYyZmNkYjIxMTlmN2ZiZGY1ZWJkZGYwMTQ1ZWJhNzZiMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENDb250cm9sbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0NvbnRyb2xsZXIuY3Bw
CkBAIC03Myw2ICs3MywxMCBAQCBib29sIFJUQ0NvbnRyb2xsZXI6OnNob3VsZERpc2FibGVJQ0VD
YW5kaWRhdGVGaWx0ZXJpbmcoRG9jdW1lbnQmIGRvY3VtZW50KQogCiB2b2lkIFJUQ0NvbnRyb2xs
ZXI6OmFkZChSVENQZWVyQ29ubmVjdGlvbiYgY29ubmVjdGlvbikKIHsKKyAgICBhdXRvJiBkb2N1
bWVudCA9IGRvd25jYXN0PERvY3VtZW50PigqY29ubmVjdGlvbi5zY3JpcHRFeGVjdXRpb25Db250
ZXh0KCkpOworICAgIGlmIChhdXRvKiBuZXR3b3JrTWFuYWdlciA9IGRvY3VtZW50LnJ0Y05ldHdv
cmtNYW5hZ2VyKCkpCisgICAgICAgIG5ldHdvcmtNYW5hZ2VyLT5zZXRJQ0VDYW5kaWRhdGVGaWx0
ZXJpbmcoIXNob3VsZERpc2FibGVJQ0VDYW5kaWRhdGVGaWx0ZXJpbmcoZG9jdW1lbnQpKTsKKwog
ICAgIG1fcGVlckNvbm5lY3Rpb25zLmFwcGVuZChjb25uZWN0aW9uKTsKICAgICBpZiAoc2hvdWxk
RGlzYWJsZUlDRUNhbmRpZGF0ZUZpbHRlcmluZyhkb3duY2FzdDxEb2N1bWVudD4oKmNvbm5lY3Rp
b24uc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSkpCiAgICAgICAgIGNvbm5lY3Rpb24uZGlzYWJs
ZUlDRUNhbmRpZGF0ZUZpbHRlcmluZygpOwpAQCAtODQsOCArODgsMTMgQEAgdm9pZCBSVENDb250
cm9sbGVyOjpkaXNhYmxlSUNFQ2FuZGlkYXRlRmlsdGVyaW5nRm9yQWxsT3JpZ2lucygpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIG1fc2hvdWxkRmlsdGVySUNFQ2FuZGlkYXRlcyA9IGZhbHNlOwot
ICAgIGZvciAoUlRDUGVlckNvbm5lY3Rpb24mIGNvbm5lY3Rpb24gOiBtX3BlZXJDb25uZWN0aW9u
cykKKyAgICBmb3IgKFJUQ1BlZXJDb25uZWN0aW9uJiBjb25uZWN0aW9uIDogbV9wZWVyQ29ubmVj
dGlvbnMpIHsKKyAgICAgICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+
KGNvbm5lY3Rpb24uc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSkgeworICAgICAgICAgICAgaWYg
KGF1dG8qIG5ldHdvcmtNYW5hZ2VyID0gZG9jdW1lbnQtPnJ0Y05ldHdvcmtNYW5hZ2VyKCkpCisg
ICAgICAgICAgICAgICAgbmV0d29ya01hbmFnZXItPnNldElDRUNhbmRpZGF0ZUZpbHRlcmluZyhm
YWxzZSk7CisgICAgICAgIH0KICAgICAgICAgY29ubmVjdGlvbi5kaXNhYmxlSUNFQ2FuZGlkYXRl
RmlsdGVyaW5nKCk7CisgICAgfQogfQogCiB2b2lkIFJUQ0NvbnRyb2xsZXI6OmRpc2FibGVJQ0VD
YW5kaWRhdGVGaWx0ZXJpbmdGb3JEb2N1bWVudChEb2N1bWVudCYgZG9jdW1lbnQpCkBAIC05Mywx
MSArMTAyLDE3IEBAIHZvaWQgUlRDQ29udHJvbGxlcjo6ZGlzYWJsZUlDRUNhbmRpZGF0ZUZpbHRl
cmluZ0ZvckRvY3VtZW50KERvY3VtZW50JiBkb2N1bWVudCkKICAgICBpZiAoIUxpYldlYlJUQ1By
b3ZpZGVyOjp3ZWJSVENBdmFpbGFibGUoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgaWYgKGF1
dG8qIG5ldHdvcmtNYW5hZ2VyID0gZG9jdW1lbnQucnRjTmV0d29ya01hbmFnZXIoKSkKKyAgICAg
ICAgbmV0d29ya01hbmFnZXItPnNldElDRUNhbmRpZGF0ZUZpbHRlcmluZyhmYWxzZSk7CisKICAg
ICBtX2ZpbHRlcmluZ0Rpc2FibGVkT3JpZ2lucy5hcHBlbmQoUGVlckNvbm5lY3Rpb25PcmlnaW4g
eyBkb2N1bWVudC50b3BPcmlnaW4oKSwgZG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4oKSB9KTsKICAg
ICBmb3IgKFJUQ1BlZXJDb25uZWN0aW9uJiBjb25uZWN0aW9uIDogbV9wZWVyQ29ubmVjdGlvbnMp
IHsKICAgICAgICAgaWYgKGF1dG8qIHBlZXJDb25uZWN0aW9uRG9jdW1lbnQgPSBkb3duY2FzdDxE
b2N1bWVudD4oY29ubmVjdGlvbi5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpKSB7Ci0gICAgICAg
ICAgICBpZiAobWF0Y2hEb2N1bWVudE9yaWdpbigqcGVlckNvbm5lY3Rpb25Eb2N1bWVudCwgZG9j
dW1lbnQudG9wT3JpZ2luKCksIGRvY3VtZW50LnNlY3VyaXR5T3JpZ2luKCkpKQorICAgICAgICAg
ICAgaWYgKG1hdGNoRG9jdW1lbnRPcmlnaW4oKnBlZXJDb25uZWN0aW9uRG9jdW1lbnQsIGRvY3Vt
ZW50LnRvcE9yaWdpbigpLCBkb2N1bWVudC5zZWN1cml0eU9yaWdpbigpKSkgeworICAgICAgICAg
ICAgICAgIGlmIChhdXRvKiBuZXR3b3JrTWFuYWdlciA9IHBlZXJDb25uZWN0aW9uRG9jdW1lbnQt
PnJ0Y05ldHdvcmtNYW5hZ2VyKCkpCisgICAgICAgICAgICAgICAgICAgIG5ldHdvcmtNYW5hZ2Vy
LT5zZXRJQ0VDYW5kaWRhdGVGaWx0ZXJpbmcoZmFsc2UpOwogICAgICAgICAgICAgICAgIGNvbm5l
Y3Rpb24uZGlzYWJsZUlDRUNhbmRpZGF0ZUZpbHRlcmluZygpOworICAgICAgICAgICAgfQogICAg
ICAgICB9CiAgICAgfQogfQpAQCAtMTA5LDggKzEyNCwxMyBAQCB2b2lkIFJUQ0NvbnRyb2xsZXI6
OmVuYWJsZUlDRUNhbmRpZGF0ZUZpbHRlcmluZygpCiAKICAgICBtX2ZpbHRlcmluZ0Rpc2FibGVk
T3JpZ2lucy5jbGVhcigpOwogICAgIG1fc2hvdWxkRmlsdGVySUNFQ2FuZGlkYXRlcyA9IHRydWU7
Ci0gICAgZm9yIChSVENQZWVyQ29ubmVjdGlvbiYgY29ubmVjdGlvbiA6IG1fcGVlckNvbm5lY3Rp
b25zKQorICAgIGZvciAoUlRDUGVlckNvbm5lY3Rpb24mIGNvbm5lY3Rpb24gOiBtX3BlZXJDb25u
ZWN0aW9ucykgewogICAgICAgICBjb25uZWN0aW9uLmVuYWJsZUlDRUNhbmRpZGF0ZUZpbHRlcmlu
ZygpOworICAgICAgICBpZiAoYXV0byogZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oY29u
bmVjdGlvbi5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpKSB7CisgICAgICAgICAgICBpZiAoYXV0
byogbmV0d29ya01hbmFnZXIgPSBkb2N1bWVudC0+cnRjTmV0d29ya01hbmFnZXIoKSkKKyAgICAg
ICAgICAgICAgICBuZXR3b3JrTWFuYWdlci0+c2V0SUNFQ2FuZGlkYXRlRmlsdGVyaW5nKHRydWUp
OworICAgICAgICB9CisgICAgfQogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ05ldHdvcmtNYW5hZ2Vy
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ05ldHdvcmtNYW5hZ2Vy
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNWYzNmZkNDYxZjgxYWJiYTJjMDJiYjgxZjFmYjVmOTk3ODAyNWZkMAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
TmV0d29ya01hbmFnZXIuaApAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaWYgRU5BQkxFKFdFQl9SVEMpCisKKyNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJl
ZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBSVENOZXR3b3JrTWFu
YWdlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxSVENOZXR3b3JrTWFuYWdlciwgV1RG
OjpEZXN0cnVjdGlvblRocmVhZDo6TWFpblJ1bkxvb3A+IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFs
IH5SVENOZXR3b3JrTWFuYWdlcigpID0gZGVmYXVsdDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0SUNF
Q2FuZGlkYXRlRmlsdGVyaW5nKGJvb2wpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3Rl
ck1ETlNOYW1lcygpID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIEVOQUJMRShXRUJfUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRwb2ludC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBv
aW50LmNwcAppbmRleCA1M2M0NGFkZjEyYTliZWQ3NGNhNWRiOGE5NTY4MDIzZDg5OTI2NjU1Li4y
MjA4N2EzNjJkZjZjODkwYjU5OWIxMWZkMWQ0NDU4ZTllYjhhMTNkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVu
ZHBvaW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmNwcApAQCAtOTMsMTUgKzkzLDE1IEBAIGJvb2wg
TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6c2V0Q29uZmlndXJhdGlvbihMaWJXZWJSVENQcm92aWRl
ciYgY2xpZW50LCB3ZWJydGM6CiAgICAgY29uZmlndXJhdGlvbi5zZHBfc2VtYW50aWNzID0gd2Vi
cnRjOjpTZHBTZW1hbnRpY3M6OmtVbmlmaWVkUGxhbjsKIAogICAgIGlmICghbV9iYWNrZW5kKSB7
CisgICAgICAgIGF1dG8mIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KCptX3BlZXJDb25u
ZWN0aW9uQmFja2VuZC5jb25uZWN0aW9uKCkuc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKICAg
ICAgICAgaWYgKCFtX3J0Y1NvY2tldEZhY3RvcnkpIHsKLSAgICAgICAgICAgIGF1dG8mIGRvY3Vt
ZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KCptX3BlZXJDb25uZWN0aW9uQmFja2VuZC5jb25uZWN0
aW9uKCkuc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICAgICAgICAgIFJlZ2lzdHJhYmxl
RG9tYWluIGRvbWFpbiB7IGRvY3VtZW50LnVybCgpIH07CiAgICAgICAgICAgICBib29sIGlzRmly
c3RQYXJ0eSA9IGRvbWFpbiA9PSBSZWdpc3RyYWJsZURvbWFpbihkb2N1bWVudC5maXJzdFBhcnR5
Rm9yQ29va2llcygpKTsKICAgICAgICAgICAgIG1fcnRjU29ja2V0RmFjdG9yeSA9IGNsaWVudC5j
cmVhdGVTb2NrZXRGYWN0b3J5KGRvY3VtZW50LnVzZXJBZ2VudChkb2N1bWVudC51cmwoKSksIGlz
Rmlyc3RQYXJ0eSwgV1RGTW92ZShkb21haW4pKTsKICAgICAgICAgICAgIGlmICghbV9wZWVyQ29u
bmVjdGlvbkJhY2tlbmQuc2hvdWxkRmlsdGVySUNFQ2FuZGlkYXRlcygpKQogICAgICAgICAgICAg
ICAgIG1fcnRjU29ja2V0RmFjdG9yeS0+ZGlzYWJsZVJlbGF5KCk7CiAgICAgICAgIH0KLSAgICAg
ICAgbV9iYWNrZW5kID0gY2xpZW50LmNyZWF0ZVBlZXJDb25uZWN0aW9uKCp0aGlzLCBtX3J0Y1Nv
Y2tldEZhY3RvcnkuZ2V0KCksIFdURk1vdmUoY29uZmlndXJhdGlvbikpOworICAgICAgICBtX2Jh
Y2tlbmQgPSBjbGllbnQuY3JlYXRlUGVlckNvbm5lY3Rpb24oZG9jdW1lbnQuaWRlbnRpZmllcigp
LCAqdGhpcywgbV9ydGNTb2NrZXRGYWN0b3J5LmdldCgpLCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24p
KTsKICAgICAgICAgcmV0dXJuICEhbV9iYWNrZW5kOwogICAgIH0KICAgICBhdXRvIG9sZENvbmZp
Z3VyYXRpb24gPSBtX2JhY2tlbmQtPkdldENvbmZpZ3VyYXRpb24oKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJD
b25uZWN0aW9uQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwCmluZGV4IDU5NjAy
YjA5YWVjOWUwYWJiM2QyMjdjMzBmOTI4OTRkNGJhNmQ2MjQuLmM2OWUwYzZkN2JlNzBiZTFkNzAx
MzA4MTM3ZDhlMzVjZmUyYmUzYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2Vi
UlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcApAQCAtMzEwLDcgKzMxMCw3IEBAIFJlZlB0cjxS
VENTZXNzaW9uRGVzY3JpcHRpb24+IExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6Y3Vy
cmVudExvY2FsRGVzY3JpCiB7CiAgICAgYXV0byBkZXNjcmlwdGlvbiA9IG1fZW5kcG9pbnQtPmN1
cnJlbnRMb2NhbERlc2NyaXB0aW9uKCk7CiAgICAgaWYgKGRlc2NyaXB0aW9uKQotICAgICAgICBk
ZXNjcmlwdGlvbi0+c2V0U2RwKGZpbHRlclNEUChTdHJpbmcoZGVzY3JpcHRpb24tPnNkcCgpKSkp
OworICAgICAgICB2YWxpZGF0ZVNEUChkZXNjcmlwdGlvbi0+c2RwKCkpOwogICAgIHJldHVybiBk
ZXNjcmlwdGlvbjsKIH0KIApAQCAtMzIzLDcgKzMyMyw3IEBAIFJlZlB0cjxSVENTZXNzaW9uRGVz
Y3JpcHRpb24+IExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6cGVuZGluZ0xvY2FsRGVz
Y3JpCiB7CiAgICAgYXV0byBkZXNjcmlwdGlvbiA9IG1fZW5kcG9pbnQtPnBlbmRpbmdMb2NhbERl
c2NyaXB0aW9uKCk7CiAgICAgaWYgKGRlc2NyaXB0aW9uKQotICAgICAgICBkZXNjcmlwdGlvbi0+
c2V0U2RwKGZpbHRlclNEUChTdHJpbmcoZGVzY3JpcHRpb24tPnNkcCgpKSkpOworICAgICAgICB2
YWxpZGF0ZVNEUChkZXNjcmlwdGlvbi0+c2RwKCkpOwogICAgIHJldHVybiBkZXNjcmlwdGlvbjsK
IH0KIApAQCAtMzM2LDcgKzMzNiw3IEBAIFJlZlB0cjxSVENTZXNzaW9uRGVzY3JpcHRpb24+IExp
YldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6bG9jYWxEZXNjcmlwdGlvbigpCiB7CiAgICAg
YXV0byBkZXNjcmlwdGlvbiA9IG1fZW5kcG9pbnQtPmxvY2FsRGVzY3JpcHRpb24oKTsKICAgICBp
ZiAoZGVzY3JpcHRpb24pCi0gICAgICAgIGRlc2NyaXB0aW9uLT5zZXRTZHAoZmlsdGVyU0RQKFN0
cmluZyhkZXNjcmlwdGlvbi0+c2RwKCkpKSk7CisgICAgICAgIHZhbGlkYXRlU0RQKGRlc2NyaXB0
aW9uLT5zZHAoKSk7CiAgICAgcmV0dXJuIGRlc2NyaXB0aW9uOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOWNmYzVmMjVk
MDRmZWJkMjliMmMxZjRmZTBkYjE4OGMwNGExMTUwNi4uZTQ5YmNmYWZmZjc0ZTdiNTE2ODU2ODg0
M2YzM2YwODcyMTIxYzg0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTE3Miw2ICsxMTcyLDkgQEAKIAkJNDFCODc3NjIyM0RF
MTA0NTAwMzYzOEI4IC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUI4Nzc2MDIzREUxMDQyMDAz
NjM4QjggLyogUmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MUJCQTg2NjI1N0UzNzNCMDBBQzdG
NkQgLyogU0ZyYW1lVXRpbHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQxMjA5RTI0MjU3QTJGQkIwMDEyMEFDQSAvKiBTRnJhbWVVdGlscy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxQkYyMDQ5MjJC
QTdCRTgwMDA0RjgxMiAvKiBSZWFsdGltZVZpZGVvU291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUJGMjA0MDIyQjk0NzE2MDAwNEY4MTIgLyog
UmVhbHRpbWVWaWRlb1NvdXJjZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCTQxQzE0QkM2MjZERTZERTgwMDY4NUJGNSAvKiBSVENOZXR3b3JrTWFu
YWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFD
MTRCQzQyNkRFNkRFODAwNjg1QkY1IC8qIFJUQ05ldHdvcmtNYW5hZ2VyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDFDMTRCQzcyNkRFODU4NDAw
Njg1QkY1IC8qIExpYldlYlJUQ1V0aWxzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0MUQxQTA0QzIxM0VEREZGMDA2M0ZCNkIgLyogTGliV2ViUlRDVXRp
bHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0
MUMxNEJDOTI2REY3OUQ3MDA2ODVCRjUgLyogTUROU1JlZ2lzdGVyRXJyb3IuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQzE0QkM4MjZERjc5RDYwMDY4
NUJGNSAvKiBNRE5TUmVnaXN0ZXJFcnJvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTQxQzNCOEExMjY0OUIxRTAwMDRFRDRERSAvKiBBdWRpb01l
ZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFDM0I4OUYyNjQ5QjFCNzAwNEVENERFIC8qIEF1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDFDM0I4QTIyNjQ5QjFFNTAwNEVE
NERFIC8qIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFDM0I4OUIyNjQ5QjFCNjAwNEVENERF
IC8qIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxQzc2MEIxMEVERTAzRDMwMEMxNjU1
RiAvKiBTY3JpcHRTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDFDNzYwQjAwRURFMDNEMzAwQzE2NTVGIC8qIFNjcmlwdFN0YXRlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTgwNDQsNiArODA0
Nyw4IEBACiAJCTQxQkNFODc3MjVGN0E2N0EwMDQ2QzJFNSAvKiBSVENUcmFuc2Zvcm1FdmVudC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSVENUcmFuc2Zvcm1FdmVudC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUJGMjA0MDIyQjk0NzE2MDAwNEY4MTIgLyog
UmVhbHRpbWVWaWRlb1NvdXJjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWFsdGltZVZpZGVvU291cmNl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQkYyMDQyMjJCOTQ3MTcwMDA0Rjgx
MiAvKiBSZWFsdGltZVZpZGVvU291cmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlYWx0aW1l
VmlkZW9Tb3VyY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUMxNEJDNDI2
REU2REU4MDA2ODVCRjUgLyogUlRDTmV0d29ya01hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUlRDTmV0d29ya01hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNDFDMTRCQzgyNkRGNzlENjAwNjg1QkY1IC8qIE1ETlNSZWdpc3RlckVycm9yLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1ETlNSZWdpc3RlckVycm9yLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQzNCODlCMjY0OUIxQjYwMDRFRDRERSAvKiBB
dWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXVkaW9N
ZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQxQzNCODlDMjY0OUIxQjYwMDRFRDRERSAvKiBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5k
ZXJlckNvY29hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVy
Q29jb2EuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFDM0I4OUQyNjQ5QjFCNjAw
NEVENERFIC8qIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2EuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzI1NCw2ICsxNzI1OSw3IEBACiAJCQkJMzE2RENC
ODkxRTdBNjk5NjAwMUI1Rjg3IC8qIFJUQ0ljZVRyYW5zcG9ydC5pZGwgKi8sCiAJCQkJNDE0NTE2
RTAyNkNDMDQyMTAwQUFBQkUwIC8qIFJUQ0ljZVRyYW5zcG9ydEJhY2tlbmQuaCAqLywKIAkJCQkz
MTZEQ0I4RTFFN0E2Qzc5MDAxQjVGODcgLyogUlRDSWNlVHJhbnNwb3J0U3RhdGUuaWRsICovLAor
CQkJCTQxQzE0QkM0MjZERTZERTgwMDY4NUJGNSAvKiBSVENOZXR3b3JrTWFuYWdlci5oICovLAog
CQkJCTA3Mzc5NERDMTlFRTJDNTIwMEU1QTA0NSAvKiBSVENPZmZlckFuc3dlck9wdGlvbnMuaCAq
LywKIAkJCQkzMTZEQ0IxMjFFNzhCRTQzMDAxQjVGODcgLyogUlRDT2ZmZXJBbnN3ZXJPcHRpb25z
LmlkbCAqLywKIAkJCQkzMTZEQ0IyODFFNzhGMzk1MDAxQjVGODcgLyogUlRDT2ZmZXJPcHRpb25z
LmggKi8sCkBAIC0xNzM4MSw2ICsxNzM4Nyw3IEBACiAJCQkJMDdCNzExNkIxRDg5OUU2MzAwOUYw
RkZCIC8qIENhcHR1cmVEZXZpY2VNYW5hZ2VyLmNwcCAqLywKIAkJCQkwN0I3MTE2QzFEODk5RTYz
MDA5RjBGRkIgLyogQ2FwdHVyZURldmljZU1hbmFnZXIuaCAqLywKIAkJCQk1RUJCODkzMDFDNzc3
N0UxMDBDNjVENDEgLyogSWNlQ2FuZGlkYXRlLmggKi8sCisJCQkJNDFDMTRCQzgyNkRGNzlENjAw
Njg1QkY1IC8qIE1ETlNSZWdpc3RlckVycm9yLmggKi8sCiAJCQkJMUJFNUJGQzExRDUxNTcxNTAw
MTY2NkQ5IC8qIE1lZGlhQ29uc3RyYWludHMuY3BwICovLAogCQkJCTA3MjIxQjk5MTdDRjBBRDQw
MDg0OEU1MSAvKiBNZWRpYUNvbnN0cmFpbnRzLmggKi8sCiAJCQkJNDFCMjhCMTMxRjg1MDFBNDAw
RkI1MkFDIC8qIE1lZGlhRW5kcG9pbnRDb25maWd1cmF0aW9uLmNwcCAqLywKQEAgLTMzNTgzLDYg
KzMzNTkwLDcgQEAKIAkJCQk0MTgxQzVDRDI1NTU4MzY5MDBBRUIwRkYgLyogTGliV2ViUlRDUnRw
VHJhbnNmb3JtYWJsZUZyYW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTgxQzVEMTI1NTU4OTU2
MDBBRUIwRkYgLyogTGliV2ViUlRDUnRwVHJhbnNmb3JtQmFja2VuZC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNDEwRTQ0NjEyMzQzNzNFOTAwMDE3M0Q0IC8qIExpYldlYlJUQ1NvY2tldElkZW50aWZp
ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxQzE0QkM3MjZERTg1ODQwMDY4NUJGNSAvKiBMaWJX
ZWJSVENVdGlscy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODQ3MzBEOTExMjQ4RjBCMzAwRDNBOUM5
IC8qIExpZ2h0U291cmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyNzk2NTBEMDBCRjIyMDA3
MUI3ODIgLyogTGluZWFyR3JhZGllbnRBdHRyaWJ1dGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
QjMxQzkxRTEwQUUxQjhFMDAwQzdCOTIgLyogTGluZUNsYW1wVmFsdWUuaCBpbiBIZWFkZXJzICov
LApAQCAtMzM2NDYsNiArMzM2NTQsNyBAQAogCQkJCTQzOTA0NkVBMTJEQTI1RTgxMkFGODBBQyAv
KiBNYXRoT3BlcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5RDVEQzJDMEY0MjNBNzMwMDhG
MjBGRCAvKiBNYXRyaXgzRFRyYW5zZm9ybU9wZXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NDlFOTExQzcwRUY4NkQ0NzAwOUQwQ0FGIC8qIE1hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbi5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNDFDMTRCQzkyNkRGNzlENzAwNjg1QkY1IC8qIE1ETlNSZWdpc3Rl
ckVycm9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0JDOERBRDFBQUEzMDIyMDBFMUM4MDMgLyog
TWVkaWFBY2Nlc3NpYmlsaXR5U29mdExpbmsuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMUJDQzYx
MTEyNERGQ0IwMEJFNzBERCAvKiBNZWRpYUNhblN0YXJ0TGlzdGVuZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCUNEQ0M5QkNGMjIzODdFOUEwMEZGQjUxQyAvKiBNZWRpYUNhcGFiaWxpdGllc0RlY29k
aW5nSW5mby5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNDQ2MSw2ICszNDQ3MCw3IEBACiAJCQkJMDdB
Qjk5NkIxOERBM0MwMTAwMTg3NzFFIC8qIFJUQ0ljZVNlcnZlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMzEzNTkxMDgxRTdEREM3MzAwRjMwNjMwIC8qIFJUQ0ljZVRyYW5zcG9ydFBvbGljeS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMzEzNTkxMDkxRTdEREM3MzAwRjMwNjMwIC8qIFJUQ0ljZVRyYW5z
cG9ydFN0YXRlLmggaW4gSGVhZGVycyAqLywKKwkJCQk0MUMxNEJDNjI2REU2REU4MDA2ODVCRjUg
LyogUlRDTmV0d29ya01hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3Mzc5NEZFMTlGNTg2
NEUwMEU1QTA0NSAvKiBSVENOb3RpZmllcnNNb2NrLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzM3
OTRERTE5RUUyQzUyMDBFNUEwNDUgLyogUlRDT2ZmZXJBbnN3ZXJPcHRpb25zLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwNzhFMDkyNTE3RDE0RDFDMDA0MjBBQTEgLyogUlRDUGVlckNvbm5lY3Rpb24u
aCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggOTQ2NmZkOWY3ZjU0
N2ZkZDliZWYwNGVmODU3YTJhNmVjYTJiMWZkOC4uOTY0OWE0NTZjMmIwODIwMGRhNWQ3Zjc4OTgw
ZmFhNjZlZDEyYWFjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0yNTk1LDEyICsyNTk1
LDkgQEAgdm9pZCBEb2N1bWVudDo6d2lsbEJlUmVtb3ZlZEZyb21GcmFtZSgpCiAgICAgaWYgKG1f
aGFzUHJlcGFyZWRGb3JEZXN0cnVjdGlvbikKICAgICAgICAgcmV0dXJuOwogCi0jaWYgVVNFKExJ
QldFQlJUQykKLSAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgbW92ZWQgdG8gTW9kdWxlcy9t
ZWRpYXN0cmVhbS4KLSAgICBpZiAoTGliV2ViUlRDUHJvdmlkZXI6OndlYlJUQ0F2YWlsYWJsZSgp
KSB7Ci0gICAgICAgIGlmIChhdXRvKiBwYWdlID0gdGhpcy0+cGFnZSgpKQotICAgICAgICAgICAg
cGFnZS0+bGliV2ViUlRDUHJvdmlkZXIoKS51bnJlZ2lzdGVyTUROU05hbWVzKGlkZW50aWZpZXIo
KSk7Ci0gICAgfQorI2lmIEVOQUJMRShXRUJfUlRDKQorICAgIGlmIChtX3J0Y05ldHdvcmtNYW5h
Z2VyKQorICAgICAgICBtX3J0Y05ldHdvcmtNYW5hZ2VyLT51bnJlZ2lzdGVyTUROU05hbWVzKCk7
CiAjZW5kaWYKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKQEAgLTU2MTcsMTIgKzU2MTQs
OSBAQCB2b2lkIERvY3VtZW50OjpzdXNwZW5kKFJlYXNvbkZvclN1c3BlbnNpb24gcmVhc29uKQog
ICAgICAgICAgICAgdmlldy0+Y29tcG9zaXRvcigpLmNhbmNlbENvbXBvc2l0aW5nTGF5ZXJVcGRh
dGUoKTsKICAgICB9CiAKLSNpZiBVU0UoTElCV0VCUlRDKQotICAgIC8vIEZJWE1FOiBUaGlzIHNo
b3VsZCBiZSBtb3ZlZCB0byBNb2R1bGVzL21lZGlhc3RyZWFtLgotICAgIGlmIChMaWJXZWJSVENQ
cm92aWRlcjo6d2ViUlRDQXZhaWxhYmxlKCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHBhZ2UgPSB0
aGlzLT5wYWdlKCkpCi0gICAgICAgICAgICBwYWdlLT5saWJXZWJSVENQcm92aWRlcigpLnVucmVn
aXN0ZXJNRE5TTmFtZXMoaWRlbnRpZmllcigpKTsKLSAgICB9CisjaWYgRU5BQkxFKFdFQl9SVEMp
CisgICAgaWYgKG1fcnRjTmV0d29ya01hbmFnZXIpCisgICAgICAgIG1fcnRjTmV0d29ya01hbmFn
ZXItPnVucmVnaXN0ZXJNRE5TTmFtZXMoKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNFUlZJQ0Vf
V09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCBhZjVlNzg1MGNhOTIxNWYyMjkxZDUwNGIy
ZGY4ZTljMmQwZDUzYjk2Li44MjMwOTgzYTZhNjFmMTlmOWI5MWEyNzFkNDAxMDQzNTQ3OTRjM2Iw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtNDksNiArNDksNyBAQAogI2luY2x1ZGUgIlBhZ2VJ
ZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1FdmVudC5oIgogI2luY2x1ZGUgIlBsYXli
YWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJSVENOZXR3b3Jr
TWFuYWdlci5oIgogI2luY2x1ZGUgIlJlZmVycmVyUG9saWN5LmgiCiAjaW5jbHVkZSAiUmVnaW9u
LmgiCiAjaW5jbHVkZSAiUmVnaXN0cmFibGVEb21haW4uaCIKQEAgLTcwOCw2ICs3MDksMTEgQEAg
cHVibGljOgogICAgIFNvY2tldFByb3ZpZGVyKiBzb2NrZXRQcm92aWRlcigpIGZpbmFsOwogICAg
IFJlZlB0cjxSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXJDb25uZWN0aW9uPiBjcmVhdGVSVENE
YXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXJDb25uZWN0aW9uKCkgZmluYWw7CiAKKyNpZiBFTkFCTEUo
V0VCX1JUQykKKyAgICBSVENOZXR3b3JrTWFuYWdlciogcnRjTmV0d29ya01hbmFnZXIoKSB7IHJl
dHVybiBtX3J0Y05ldHdvcmtNYW5hZ2VyLmdldCgpOyB9CisgICAgdm9pZCBzZXRSVENOZXR3b3Jr
TWFuYWdlcihSZWY8UlRDTmV0d29ya01hbmFnZXI+JiYgcnRjTmV0d29ya01hbmFnZXIpIHsgbV9y
dGNOZXR3b3JrTWFuYWdlciA9IFdURk1vdmUocnRjTmV0d29ya01hbmFnZXIpOyB9CisjZW5kaWYK
KwogICAgIGJvb2wgY2FuTmF2aWdhdGUoRnJhbWUqIHRhcmdldEZyYW1lLCBjb25zdCBVUkwmIGRl
c3RpbmF0aW9uVVJMID0gVVJMKCkpOwogCiAgICAgYm9vbCB1c2VzU3R5bGVCYXNlZEVkaXRhYmls
aXR5KCkgY29uc3Q7CkBAIC0yMjIxLDYgKzIyMjcsMTAgQEAgcHJpdmF0ZToKIAogICAgIExpc3RI
YXNoU2V0PFJlZjxFbGVtZW50Pj4gbV90b3BMYXllckVsZW1lbnRzOwogICAgIFVuaXF1ZVJlZjxX
aGl0ZXNwYWNlQ2FjaGU+IG1fd2hpdGVzcGFjZUNhY2hlOworCisjaWYgRU5BQkxFKFdFQl9SVEMp
CisgICAgUmVmUHRyPFJUQ05ldHdvcmtNYW5hZ2VyPiBtX3J0Y05ldHdvcmtNYW5hZ2VyOworI2Vu
ZGlmCiB9OwogCiBFbGVtZW50KiBldmVudFRhcmdldEVsZW1lbnRGb3JEb2N1bWVudChEb2N1bWVu
dCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTURO
U1JlZ2lzdGVyRXJyb3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01E
TlNSZWdpc3RlckVycm9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzdjNWRhZmUzM2ZiZTY0ZTdhODI2YzE1MWI2
YmUzY2E1MmZhNTU1ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL01ETlNSZWdpc3RlckVycm9yLmgKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL0VudW1UcmFpdHMuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitlbnVtIGNsYXNzIE1ETlNSZWdpc3RlckVycm9yIHsgTm90SW1w
bGVtZW50ZWQsIEJhZFBhcmFtZXRlciwgRE5TU0QsIEludGVybmFsLCBUaW1lb3V0IH07CisKK30K
KworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29y
ZTo6TUROU1JlZ2lzdGVyRXJyb3I+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAor
ICAgICAgICBXZWJDb3JlOjpNRE5TUmVnaXN0ZXJFcnJvciwKKyAgICAgICAgV2ViQ29yZTo6TURO
U1JlZ2lzdGVyRXJyb3I6Ok5vdEltcGxlbWVudGVkLAorICAgICAgICBXZWJDb3JlOjpNRE5TUmVn
aXN0ZXJFcnJvcjo6QmFkUGFyYW1ldGVyLAorICAgICAgICBXZWJDb3JlOjpNRE5TUmVnaXN0ZXJF
cnJvcjo6RE5TU0QsCisgICAgICAgIFdlYkNvcmU6Ok1ETlNSZWdpc3RlckVycm9yOjpJbnRlcm5h
bCwKKyAgICAgICAgV2ViQ29yZTo6TUROU1JlZ2lzdGVyRXJyb3I6OlRpbWVvdXQKKyAgICA+Owor
fTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHAKaW5kZXggYzU5NTYx
Nzg3MmIyMmI5ZWMzZjUzMmQzNDViMDhjMTZmZTZiZmQ2ZC4uNWFmNzlhZDQ4NTg2ODQwZjQ4NzU3
ZGVmZThhM2E2NmU1NmQzYmVjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIu
Y3BwCkBAIC0yOTksNyArMjk5LDcgQEAgdm9pZCBMaWJXZWJSVENQcm92aWRlcjo6ZW5hYmxlRW51
bWVyYXRpbmdBbGxOZXR3b3JrSW50ZXJmYWNlcygpCiAgICAgbV9lbmFibGVFbnVtZXJhdGluZ0Fs
bE5ldHdvcmtJbnRlcmZhY2VzID0gdHJ1ZTsKIH0KIAotcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0
Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U+IExpYldlYlJUQ1Byb3ZpZGVyOjpjcmVhdGVQZWVy
Q29ubmVjdGlvbih3ZWJydGM6OlBlZXJDb25uZWN0aW9uT2JzZXJ2ZXImIG9ic2VydmVyLCBydGM6
OlBhY2tldFNvY2tldEZhY3RvcnkqLCB3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpS
VENDb25maWd1cmF0aW9uJiYgY29uZmlndXJhdGlvbikKK3J0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJy
dGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlPiBMaWJXZWJSVENQcm92aWRlcjo6Y3JlYXRlUGVl
ckNvbm5lY3Rpb24oRG9jdW1lbnRJZGVudGlmaWVyLCB3ZWJydGM6OlBlZXJDb25uZWN0aW9uT2Jz
ZXJ2ZXImIG9ic2VydmVyLCBydGM6OlBhY2tldFNvY2tldEZhY3RvcnkqLCB3ZWJydGM6OlBlZXJD
b25uZWN0aW9uSW50ZXJmYWNlOjpSVENDb25maWd1cmF0aW9uJiYgY29uZmlndXJhdGlvbikKIHsK
ICAgICAvLyBEZWZhdWx0IFdLMSBpbXBsZW1lbnRhdGlvbi4KICAgICBBU1NFUlQobV91c2VOZXR3
b3JrVGhyZWFkV2l0aFNvY2tldFNlcnZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRl
ci5oCmluZGV4IDE4NjI3ZWU1N2Y3NThhMDQ3MjJkMTYxNmYwZjg3NjI4NDM0MTE1YjcuLjk0MjA3
M2IzMmUxN2U1NDY2OWU3ZWQyMzhhNWYxOTExNTE0YjI0NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJX
ZWJSVENQcm92aWRlci5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJEb2N1bWVudElk
ZW50aWZpZXIuaCIKICNpbmNsdWRlICJMaWJXZWJSVENNYWNyb3MuaCIKKyNpbmNsdWRlICJNRE5T
UmVnaXN0ZXJFcnJvci5oIgogI2luY2x1ZGUgIlJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlckNv
bm5lY3Rpb24uaCIKICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRl
IDx3dGYvRXhwZWN0ZWQuaD4KQEAgLTY2LDggKzY3LDYgQEAgY2xhc3MgUmVnaXN0cmFibGVEb21h
aW47CiBzdHJ1Y3QgUGVlckNvbm5lY3Rpb25GYWN0b3J5QW5kVGhyZWFkczsKIHN0cnVjdCBSVENS
dHBDYXBhYmlsaXRpZXM7CiAKLWVudW0gY2xhc3MgTUROU1JlZ2lzdGVyRXJyb3IgeyBOb3RJbXBs
ZW1lbnRlZCwgQmFkUGFyYW1ldGVyLCBETlNTRCwgSW50ZXJuYWwsIFRpbWVvdXQgfTsKLQogY2xh
c3MgV0VCQ09SRV9FWFBPUlQgTGliV2ViUlRDUHJvdmlkZXIgewogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgpAQCAtODYsMTggKzg1LDEwIEBAIHB1YmxpYzoKICAgICB1c2lu
ZyBJUEFkZHJlc3NPckVycm9yID0gRXhwZWN0ZWQ8U3RyaW5nLCBNRE5TUmVnaXN0ZXJFcnJvcj47
CiAgICAgdXNpbmcgTUROU05hbWVPckVycm9yID0gRXhwZWN0ZWQ8U3RyaW5nLCBNRE5TUmVnaXN0
ZXJFcnJvcj47CiAKLSAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3Rlck1ETlNOYW1lcyhEb2N1bWVu
dElkZW50aWZpZXIpIHsgfQotCi0gICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyTUROU05hbWUoRG9j
dW1lbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGlwQWRkcmVzcywgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChNRE5TTmFtZU9yRXJyb3ImJik+JiYgY2FsbGJhY2spCi0gICAgewotICAgICAgICBV
TlVTRURfUEFSQU0oaXBBZGRyZXNzKTsKLSAgICAgICAgY2FsbGJhY2sobWFrZVVuZXhwZWN0ZWQo
TUROU1JlZ2lzdGVyRXJyb3I6Ok5vdEltcGxlbWVudGVkKSk7Ci0gICAgfQotCiAgICAgdmlydHVh
bCBSZWZQdHI8UlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyQ29ubmVjdGlvbj4gY3JlYXRlUlRD
RGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyQ29ubmVjdGlvbigpIHsgcmV0dXJuIG51bGxwdHI7IH0K
IAogI2lmIFVTRShMSUJXRUJSVEMpCi0gICAgdmlydHVhbCBydGM6OnNjb3BlZF9yZWZwdHI8d2Vi
cnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZT4gY3JlYXRlUGVlckNvbm5lY3Rpb24od2VicnRj
OjpQZWVyQ29ubmVjdGlvbk9ic2VydmVyJiwgcnRjOjpQYWNrZXRTb2NrZXRGYWN0b3J5Kiwgd2Vi
cnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6UlRDQ29uZmlndXJhdGlvbiYmKTsKKyAgICB2
aXJ0dWFsIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNl
PiBjcmVhdGVQZWVyQ29ubmVjdGlvbihEb2N1bWVudElkZW50aWZpZXIsIHdlYnJ0Yzo6UGVlckNv
bm5lY3Rpb25PYnNlcnZlciYsIHJ0Yzo6UGFja2V0U29ja2V0RmFjdG9yeSosIHdlYnJ0Yzo6UGVl
ckNvbm5lY3Rpb25JbnRlcmZhY2U6OlJUQ0NvbmZpZ3VyYXRpb24mJik7CiAKICAgICB3ZWJydGM6
OlBlZXJDb25uZWN0aW9uRmFjdG9yeUludGVyZmFjZSogZmFjdG9yeSgpOwogCkBAIC0xODAsMTYg
KzE3MSwzIEBAIGlubGluZSB2b2lkIExpYldlYlJUQ1Byb3ZpZGVyOjpzZXRWUDlTdXBwb3J0KGJv
b2wgc3VwcG9ydHNWUDlQcm9maWxlMCwgYm9vbCBzdXBwCiAjZW5kaWYKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQotCi1uYW1lc3BhY2UgV1RGIHsKLXRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFp
dHM8V2ViQ29yZTo6TUROU1JlZ2lzdGVyRXJyb3I+IHsKLSAgICB1c2luZyB2YWx1ZXMgPSBFbnVt
VmFsdWVzPAotICAgICAgICBXZWJDb3JlOjpNRE5TUmVnaXN0ZXJFcnJvciwKLSAgICAgICAgV2Vi
Q29yZTo6TUROU1JlZ2lzdGVyRXJyb3I6Ok5vdEltcGxlbWVudGVkLAotICAgICAgICBXZWJDb3Jl
OjpNRE5TUmVnaXN0ZXJFcnJvcjo6QmFkUGFyYW1ldGVyLAotICAgICAgICBXZWJDb3JlOjpNRE5T
UmVnaXN0ZXJFcnJvcjo6RE5TU0QsCi0gICAgICAgIFdlYkNvcmU6Ok1ETlNSZWdpc3RlckVycm9y
OjpJbnRlcm5hbCwKLSAgICAgICAgV2ViQ29yZTo6TUROU1JlZ2lzdGVyRXJyb3I6OlRpbWVvdXQK
LSAgICA+OwotfTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
d2VicnRjL05ldHdvcmtNRE5TUmVnaXN0ZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy93ZWJydGMvTmV0d29ya01ETlNSZWdpc3Rlci5jcHAKaW5kZXggZmM0MzUxMTJmNWJjZTBh
YTMxMjIwZTQxMmZjZTRjNTk4M2YyOGIwNy4uN2FhMTdjMTMxZjE2MjY4NGNkMjgzYTdhMGU0YzFk
MTMxYmVlODYxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJy
dGMvTmV0d29ya01ETlNSZWdpc3Rlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy93ZWJydGMvTmV0d29ya01ETlNSZWdpc3Rlci5jcHAKQEAgLTk4LDI3ICs5OCwyOSBAQCBz
dGF0aWMgdm9pZCByZWdpc3Rlck1ETlNOYW1lQ2FsbGJhY2soRE5TU2VydmljZVJlZiwgRE5TUmVj
b3JkUmVmIHJlY29yZCwgRE5TU2VydgogICAgIE1ETlNfUkVMRUFTRV9MT0dfSU5fQ0FMTEJBQ0so
cmVxdWVzdC0+c2Vzc2lvbklELCAicmVnaXN0ZXJNRE5TTmFtZUNhbGxiYWNrIHdpdGggZXJyb3Ig
JWQiLCBlcnJvckNvZGUpOwogCiAgICAgaWYgKGVycm9yQ29kZSkgewotICAgICAgICByZXF1ZXN0
LT5jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpXZWJNRE5TUmVnaXN0ZXI6OkZpbmlzaGVkUmVn
aXN0ZXJpbmdNRE5TTmFtZSB7IHJlcXVlc3QtPnJlcXVlc3RJZGVudGlmaWVyLCBtYWtlVW5leHBl
Y3RlZChXZWJDb3JlOjpNRE5TUmVnaXN0ZXJFcnJvcjo6RE5TU0QpIH0sIDApOworICAgICAgICBy
ZXF1ZXN0LT5jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpXZWJNRE5TUmVnaXN0ZXI6OkZpbmlz
aGVkUmVnaXN0ZXJpbmdNRE5TTmFtZSB7IHJlcXVlc3QtPnJlcXVlc3RJZGVudGlmaWVyLCByZXF1
ZXN0LT5uYW1lLCBXZWJDb3JlOjpNRE5TUmVnaXN0ZXJFcnJvcjo6RE5TU0QgfSwgMCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9Ci0gICAgcmVxdWVzdC0+Y29ubmVjdGlvbi0+c2VuZChNZXNzYWdl
czo6V2ViTUROU1JlZ2lzdGVyOjpGaW5pc2hlZFJlZ2lzdGVyaW5nTUROU05hbWUgeyByZXF1ZXN0
LT5yZXF1ZXN0SWRlbnRpZmllciwgcmVxdWVzdC0+bmFtZSB9LCAwKTsKKyAgICByZXF1ZXN0LT5j
b25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpXZWJNRE5TUmVnaXN0ZXI6OkZpbmlzaGVkUmVnaXN0
ZXJpbmdNRE5TTmFtZSB7IHJlcXVlc3QtPnJlcXVlc3RJZGVudGlmaWVyLCByZXF1ZXN0LT5uYW1l
LCB7IH0gfSwgMCk7CiB9CiAKIHZvaWQgTmV0d29ya01ETlNSZWdpc3Rlcjo6cmVnaXN0ZXJNRE5T
TmFtZShNRE5TUmVnaXN0ZXJJZGVudGlmaWVyIHJlcXVlc3RJZGVudGlmaWVyLCBXZWJDb3JlOjpE
b2N1bWVudElkZW50aWZpZXIgZG9jdW1lbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGlwQWRk
cmVzcykKIHsKKyAgICBhdXRvIG5hbWUgPSBtYWtlU3RyaW5nKGNyZWF0ZUNhbm9uaWNhbFVVSURT
dHJpbmcoKSwgIi5sb2NhbCIpOworCiAgICAgRE5TU2VydmljZVJlZiBzZXJ2aWNlOwogICAgIGF1
dG8gaXRlcmF0b3IgPSBtX3NlcnZpY2VzLmZpbmQoZG9jdW1lbnRJZGVudGlmaWVyKTsKICAgICBp
ZiAoaXRlcmF0b3IgPT0gbV9zZXJ2aWNlcy5lbmQoKSkgewogICAgICAgICBhdXRvIGVycm9yID0g
RE5TU2VydmljZUNyZWF0ZUNvbm5lY3Rpb24oJnNlcnZpY2UpOwogICAgICAgICBpZiAoZXJyb3Ip
IHsKICAgICAgICAgICAgIE1ETlNfUkVMRUFTRV9MT0coInJlZ2lzdGVyTUROU05hbWUgRE5TU2Vy
dmljZUNyZWF0ZUNvbm5lY3Rpb24gZXJyb3IgJWQiLCBlcnJvcik7Ci0gICAgICAgICAgICBtX2Nv
bm5lY3Rpb24uY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OldlYk1ETlNSZWdpc3Rlcjo6Rmlu
aXNoZWRSZWdpc3RlcmluZ01ETlNOYW1lIHsgcmVxdWVzdElkZW50aWZpZXIsIG1ha2VVbmV4cGVj
dGVkKFdlYkNvcmU6Ok1ETlNSZWdpc3RlckVycm9yOjpETlNTRCkgfSwgMCk7CisgICAgICAgICAg
ICBtX2Nvbm5lY3Rpb24uY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OldlYk1ETlNSZWdpc3Rl
cjo6RmluaXNoZWRSZWdpc3RlcmluZ01ETlNOYW1lIHsgcmVxdWVzdElkZW50aWZpZXIsIG5hbWUs
IFdlYkNvcmU6Ok1ETlNSZWdpc3RlckVycm9yOjpETlNTRCB9LCAwKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogICAgICAgICBlcnJvciA9IEROU1NlcnZpY2VTZXREaXNwYXRjaFF1
ZXVlKHNlcnZpY2UsIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCkpOwogICAgICAgICBpZiAoZXJy
b3IpIHsKICAgICAgICAgICAgIE1ETlNfUkVMRUFTRV9MT0coInJlZ2lzdGVyTUROU05hbWUgRE5T
U2VydmljZUNyZWF0ZUNvbm5lY3Rpb24gZXJyb3IgJWQiLCBlcnJvcik7Ci0gICAgICAgICAgICBt
X2Nvbm5lY3Rpb24uY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OldlYk1ETlNSZWdpc3Rlcjo6
RmluaXNoZWRSZWdpc3RlcmluZ01ETlNOYW1lIHsgcmVxdWVzdElkZW50aWZpZXIsIG1ha2VVbmV4
cGVjdGVkKFdlYkNvcmU6Ok1ETlNSZWdpc3RlckVycm9yOjpETlNTRCkgfSwgMCk7CisgICAgICAg
ICAgICBtX2Nvbm5lY3Rpb24uY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OldlYk1ETlNSZWdp
c3Rlcjo6RmluaXNoZWRSZWdpc3RlcmluZ01ETlNOYW1lIHsgcmVxdWVzdElkZW50aWZpZXIsIG5h
bWUsIFdlYkNvcmU6Ok1ETlNSZWdpc3RlckVycm9yOjpETlNTRCB9LCAwKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogICAgICAgICBBU1NFUlQoc2VydmljZSk7CkBAIC0xMjYsMTMg
KzEyOCwxMiBAQCB2b2lkIE5ldHdvcmtNRE5TUmVnaXN0ZXI6OnJlZ2lzdGVyTUROU05hbWUoTURO
U1JlZ2lzdGVySWRlbnRpZmllciByZXF1ZXN0SWRlbnRpZgogICAgIH0gZWxzZQogICAgICAgICBz
ZXJ2aWNlID0gaXRlcmF0b3ItPnZhbHVlOwogCi0gICAgYXV0byBuYW1lID0gbWFrZVN0cmluZyhj
cmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCksICIubG9jYWwiKTsKLQogICAgIGF1dG8gaXAgPSBp
bmV0X2FkZHIoaXBBZGRyZXNzLnV0ZjgoKS5kYXRhKCkpOwogCisgICAgLy8gRklYTUU6IEFkZCBJ
UHY2IHN1cHBvcnQuCiAgICAgaWYgKGlwID09ICggaW5fYWRkcl90KSgtMSkpIHsKICAgICAgICAg
TUROU19SRUxFQVNFX0xPRygicmVnaXN0ZXJNRE5TTmFtZSBpbmV0X2FkZHIgZXJyb3IiKTsKLSAg
ICAgICAgbV9jb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpXZWJNRE5TUmVn
aXN0ZXI6OkZpbmlzaGVkUmVnaXN0ZXJpbmdNRE5TTmFtZSB7IHJlcXVlc3RJZGVudGlmaWVyLCBt
YWtlVW5leHBlY3RlZChXZWJDb3JlOjpNRE5TUmVnaXN0ZXJFcnJvcjo6QmFkUGFyYW1ldGVyKSB9
LCAwKTsKKyAgICAgICAgbV9jb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpX
ZWJNRE5TUmVnaXN0ZXI6OkZpbmlzaGVkUmVnaXN0ZXJpbmdNRE5TTmFtZSB7IHJlcXVlc3RJZGVu
dGlmaWVyLCBuYW1lLCBXZWJDb3JlOjpNRE5TUmVnaXN0ZXJFcnJvcjo6QmFkUGFyYW1ldGVyIH0s
IDApOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xNTYsNyArMTU3LDcgQEAgdm9pZCBO
ZXR3b3JrTUROU1JlZ2lzdGVyOjpyZWdpc3Rlck1ETlNOYW1lKE1ETlNSZWdpc3RlcklkZW50aWZp
ZXIgcmVxdWVzdElkZW50aWYKICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocGVuZGlu
Z1JlZ2lzdHJhdGlvblJlcXVlc3RDb3VudCkpOwogICAgIGlmIChlcnJvcikgewogICAgICAgICBN
RE5TX1JFTEVBU0VfTE9HKCJyZWdpc3Rlck1ETlNOYW1lIEROU1NlcnZpY2VSZWdpc3RlclJlY29y
ZCBlcnJvciAlZCIsIGVycm9yKTsKLSAgICAgICAgbV9jb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5z
ZW5kKE1lc3NhZ2VzOjpXZWJNRE5TUmVnaXN0ZXI6OkZpbmlzaGVkUmVnaXN0ZXJpbmdNRE5TTmFt
ZSB7IHJlcXVlc3RJZGVudGlmaWVyLCBtYWtlVW5leHBlY3RlZChXZWJDb3JlOjpNRE5TUmVnaXN0
ZXJFcnJvcjo6RE5TU0QpIH0sIDApOworICAgICAgICBtX2Nvbm5lY3Rpb24uY29ubmVjdGlvbigp
LnNlbmQoTWVzc2FnZXM6OldlYk1ETlNSZWdpc3Rlcjo6RmluaXNoZWRSZWdpc3RlcmluZ01ETlNO
YW1lIHsgcmVxdWVzdElkZW50aWZpZXIsIHBlbmRpbmdSZXF1ZXN0LT5uYW1lLCBXZWJDb3JlOjpN
RE5TUmVnaXN0ZXJFcnJvcjo6RE5TU0QgfSwgMCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAg
ICAgcGVuZGluZ1JlZ2lzdHJhdGlvblJlcXVlc3RzKCkuYWRkKHBlbmRpbmdSZWdpc3RyYXRpb25S
ZXF1ZXN0Q291bnQrKywgV1RGTW92ZShwZW5kaW5nUmVxdWVzdCkpOwpAQCAtMTcxLDcgKzE3Miw5
IEBAIHZvaWQgTmV0d29ya01ETlNSZWdpc3Rlcjo6dW5yZWdpc3Rlck1ETlNOYW1lcyhXZWJDb3Jl
OjpEb2N1bWVudElkZW50aWZpZXIpCiB2b2lkIE5ldHdvcmtNRE5TUmVnaXN0ZXI6OnJlZ2lzdGVy
TUROU05hbWUoTUROU1JlZ2lzdGVySWRlbnRpZmllciByZXF1ZXN0SWRlbnRpZmllciwgV2ViQ29y
ZTo6RG9jdW1lbnRJZGVudGlmaWVyIGRvY3VtZW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBp
cEFkZHJlc3MpCiB7CiAgICAgTUROU19SRUxFQVNFX0xPRygicmVnaXN0ZXJNRE5TTmFtZSBub3Qg
aW1wbGVtZW50ZWQiKTsKLSAgICBtX2Nvbm5lY3Rpb24uY29ubmVjdGlvbigpLnNlbmQoTWVzc2Fn
ZXM6OldlYk1ETlNSZWdpc3Rlcjo6RmluaXNoZWRSZWdpc3RlcmluZ01ETlNOYW1lIHsgcmVxdWVz
dElkZW50aWZpZXIsIG1ha2VVbmV4cGVjdGVkKFdlYkNvcmU6Ok1ETlNSZWdpc3RlckVycm9yOjpO
b3RJbXBsZW1lbnRlZCkgfSwgMCk7CisgICAgYXV0byBuYW1lID0gbWFrZVN0cmluZyhjcmVhdGVD
YW5vbmljYWxVVUlEU3RyaW5nKCksICIubG9jYWwiKTsKKworICAgIG1fY29ubmVjdGlvbi5jb25u
ZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6V2ViTUROU1JlZ2lzdGVyOjpGaW5pc2hlZFJlZ2lzdGVy
aW5nTUROU05hbWUgeyByZXF1ZXN0SWRlbnRpZmllciwgbmFtZSwgV2ViQ29yZTo6TUROU1JlZ2lz
dGVyRXJyb3I6Ok5vdEltcGxlbWVudGVkIH0sIDApOwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0Cmlu
ZGV4IDdkYmFjZDE4YzBjMjE4ZjI4ZDhjZDQ0MDUwMjc4ZTQ4OThkZjFjNWMuLjRlNWU1MTRkNjU2
Mzg2MjY1YjliMzc5NTc4NDgyNGVlMmU5ZjU2M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtNjM5LDYgKzYz
OSw3IEBAIFdlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRQcm92aWRlci5jcHAKIFdlYlByb2Nl
c3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uY3BwCiAKIFdlYlByb2Nlc3MvTmV0d29yay93ZWJy
dGMvTGliV2ViUlRDTmV0d29yay5jcHAKK1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2Vi
UlRDTmV0d29ya01hbmFnZXIuY3BwCiBXZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJU
Q1Byb3ZpZGVyLmNwcAogV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENSZXNvbHZl
ci5jcHAKIFdlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDU29ja2V0LmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOWU0
MTZlZjM3NDQ0ZTQyZWJlNjhjMGUxMDAyNGJjZWNmZmIyN2Y4OC4uMjcxNGZmYWVmYjM4MDU4NWQ3
NWY3NjUwYzQwYzA3Y2UzYjVkZGZjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zODU0LDYgKzM4NTQsOCBAQAogCQk0MUI3RUQ2RjIw
Njk2NTkwMDA4N0Q4NTMgLyogTmV0d29ya01ETlNSZWdpc3Rlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOZXR3b3JrTUROU1JlZ2lzdGVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFCN0VENzAyMDY5NjU5MDAwODdEODUzIC8qIE5ldHdvcmtN
RE5TUmVnaXN0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya01E
TlNSZWdpc3Rlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUI3RUQ3MTIwNjk2
NTkwMDA4N0Q4NTMgLyogTmV0d29ya01ETlNSZWdpc3Rlci5tZXNzYWdlcy5pbiAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBOZXR3b3JrTUROU1JlZ2lzdGVyLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk0MUMxNEJDMjI2REU2QTJGMDA2ODVCRjUgLyogTGliV2ViUlRD
TmV0d29ya01hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTGliV2ViUlRDTmV0d29ya01h
bmFnZXIuY3BwOyBwYXRoID0gTmV0d29yay93ZWJydGMvTGliV2ViUlRDTmV0d29ya01hbmFnZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUMxNEJDMzI2REU2QTJGMDA2ODVC
RjUgLyogTGliV2ViUlRDTmV0d29ya01hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTGliV2ViUlRD
TmV0d29ya01hbmFnZXIuaDsgcGF0aCA9IE5ldHdvcmsvd2VicnRjL0xpYldlYlJUQ05ldHdvcmtN
YW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQzNCODg1MjY0NDRBQUIw
MDRFRDRERSAvKiBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFn
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5h
bFVuaXRNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQzNCODg2MjY0
NDRBQUMwMDRFRDRERSAvKiBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5p
dE1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVu
ZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDFDM0I4ODcyNjQ0NEFEMzAwNEVENERFIC8qIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRl
cmVySW50ZXJuYWxVbml0SWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdElkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTg1MTgsNiArODUyMCw4IEBACiAJCQkJNDE2RjgwODkyNDVDN0ZGNTAw
QjY4RjAyIC8qIExpYldlYlJUQ05ldHdvcmsuY3BwICovLAogCQkJCTQxMUIyMjYyMUUzNzEyNDQw
MDRGNzM2MyAvKiBMaWJXZWJSVENOZXR3b3JrLmggKi8sCiAJCQkJNDE2RjgwODYyNDVCMzk3NDAw
QjY4RjAyIC8qIExpYldlYlJUQ05ldHdvcmsubWVzc2FnZXMuaW4gKi8sCisJCQkJNDFDMTRCQzIy
NkRFNkEyRjAwNjg1QkY1IC8qIExpYldlYlJUQ05ldHdvcmtNYW5hZ2VyLmNwcCAqLywKKwkJCQk0
MUMxNEJDMzI2REU2QTJGMDA2ODVCRjUgLyogTGliV2ViUlRDTmV0d29ya01hbmFnZXIuaCAqLywK
IAkJCQk0MTMwNzVBNzFERTg1RUU3MDAzOUVDNjkgLyogTGliV2ViUlRDUHJvdmlkZXIuY3BwICov
LAogCQkJCTQxMzA3NUE4MURFODVFRTcwMDM5RUM2OSAvKiBMaWJXZWJSVENQcm92aWRlci5oICov
LAogCQkJCTQxRkFGNUY3MUUzQzBCNDcwMDFBRTY3OCAvKiBMaWJXZWJSVENSZXNvbHZlci5jcHAg
Ki8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMv
TGliV2ViUlRDTmV0d29ya01hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvd2VicnRjL0xpYldlYlJUQ05ldHdvcmtNYW5hZ2VyLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMTUy
ZTdjNGQxYjZkMzkwZDY5OTA2ZjYxNDhiNGE1ZjQ3YWU4OTRmCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ05ldHdvcmtN
YW5hZ2VyLmNwcApAQCAtMCwwICsxLDE1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJMaWJXZWJSVENOZXR3b3JrTWFuYWdlci5oIgorCisjaWYgVVNFKExJ
QldFQlJUQykKKworI2luY2x1ZGUgIkxpYldlYlJUQ05ldHdvcmsuaCIKKyNpbmNsdWRlICJXZWJQ
cm9jZXNzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVudC5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvTGliV2ViUlRDVXRpbHMuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7Cit1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKKworTGliV2ViUlRDTmV0d29ya01hbmFnZXIqIExpYldlYlJUQ05ldHdvcmtN
YW5hZ2VyOjpnZXRPckNyZWF0ZShXZWJDb3JlOjpEb2N1bWVudElkZW50aWZpZXIgaWRlbnRpZmll
cikKK3sKKyAgICBhdXRvKiBkb2N1bWVudCA9IERvY3VtZW50OjphbGxEb2N1bWVudHNNYXAoKS5n
ZXQoaWRlbnRpZmllcik7CisgICAgaWYgKCFkb2N1bWVudCkKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisKKyAgICBhdXRvKiBuZXR3b3JrTWFuYWdlciA9IHN0YXRpY19jYXN0PExpYldlYlJUQ05l
dHdvcmtNYW5hZ2VyKj4oZG9jdW1lbnQtPnJ0Y05ldHdvcmtNYW5hZ2VyKCkpOworICAgIGlmICgh
bmV0d29ya01hbmFnZXIpIHsKKyAgICAgICAgYXV0byBuZXdOZXR3b3JrTWFuYWdlciA9IGFkb3B0
UmVmKCpuZXcgTGliV2ViUlRDTmV0d29ya01hbmFnZXIoaWRlbnRpZmllcikpOworICAgICAgICBu
ZXR3b3JrTWFuYWdlciA9IG5ld05ldHdvcmtNYW5hZ2VyLnB0cigpOworICAgICAgICBkb2N1bWVu
dC0+c2V0UlRDTmV0d29ya01hbmFnZXIoV1RGTW92ZShuZXdOZXR3b3JrTWFuYWdlcikpOworICAg
IH0KKworICAgIHJldHVybiBuZXR3b3JrTWFuYWdlcjsKK30KKworTGliV2ViUlRDTmV0d29ya01h
bmFnZXI6OkxpYldlYlJUQ05ldHdvcmtNYW5hZ2VyKFdlYkNvcmU6OkRvY3VtZW50SWRlbnRpZmll
ciBkb2N1bWVudElkZW50aWZpZXIpCisgICAgOiBtX2RvY3VtZW50SWRlbnRpZmllcihkb2N1bWVu
dElkZW50aWZpZXIpCit7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkubGliV2ViUlRDTmV0
d29yaygpLm1vbml0b3IoKS5hZGRPYnNlcnZlcigqdGhpcyk7Cit9CisKK0xpYldlYlJUQ05ldHdv
cmtNYW5hZ2VyOjp+TGliV2ViUlRDTmV0d29ya01hbmFnZXIoKQoreworICAgIFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLmxpYldlYlJUQ05ldHdvcmsoKS5tb25pdG9yKCkucmVtb3ZlT2JzZXJ2ZXIo
KnRoaXMpOworfQorCit2b2lkIExpYldlYlJUQ05ldHdvcmtNYW5hZ2VyOjp1bnJlZ2lzdGVyTURO
U05hbWVzKCkKK3sKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5saWJXZWJSVENOZXR3b3Jr
KCkubWRuc1JlZ2lzdGVyKCkudW5yZWdpc3Rlck1ETlNOYW1lcyhtX2RvY3VtZW50SWRlbnRpZmll
cik7Cit9CisKK3ZvaWQgTGliV2ViUlRDTmV0d29ya01hbmFnZXI6OlN0YXJ0VXBkYXRpbmcoKQor
eworICAgIGNhbGxPbk1haW5SdW5Mb29wKFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRo
aXMpXSB7CisgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgYXV0byYgbW9uaXRvciA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmxpYldlYlJUQ05l
dHdvcmsoKS5tb25pdG9yKCk7CisgICAgICAgIGlmIChtX3JlY2VpdmVkTmV0d29ya0xpc3QpIHsK
KyAgICAgICAgICAgIFdlYkNvcmU6OkxpYldlYlJUQ1Byb3ZpZGVyOjpjYWxsT25XZWJSVENOZXR3
b3JrVGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKKyAgICAg
ICAgICAgICAgICBTaWduYWxOZXR3b3Jrc0NoYW5nZWQoKTsKKyAgICAgICAgICAgIH0pOworICAg
ICAgICB9IGVsc2UgaWYgKG1vbml0b3IuZGlkUmVjZWl2ZU5ldHdvcmtMaXN0KCkpCisgICAgICAg
ICAgICBuZXR3b3Jrc0NoYW5nZWQobW9uaXRvci5uZXR3b3JrTGlzdCgpICwgbW9uaXRvci5pcHY0
KCksIG1vbml0b3IuaXB2NigpKTsKKyAgICAgICAgbW9uaXRvci5zdGFydFVwZGF0aW5nKCk7Cisg
ICAgfSk7Cit9CisKK3ZvaWQgTGliV2ViUlRDTmV0d29ya01hbmFnZXI6OlN0b3BVcGRhdGluZygp
Cit7CisgICAgY2FsbE9uTWFpblJ1bkxvb3AoW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyld
IHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkubGliV2ViUlRDTmV0d29yaygpLm1vbml0b3IoKS5zdG9w
VXBkYXRpbmcoKTsKKyAgICB9KTsKK30KKword2VicnRjOjpNZG5zUmVzcG9uZGVySW50ZXJmYWNl
KiBMaWJXZWJSVENOZXR3b3JrTWFuYWdlcjo6R2V0TWRuc1Jlc3BvbmRlcigpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1fdXNlTUROU0NhbmRpZGF0ZXMgPyBjb25zdF9jYXN0PExpYldlYlJUQ05ldHdv
cmtNYW5hZ2VyKj4odGhpcykgOiBudWxscHRyOworfQorCit2b2lkIExpYldlYlJUQ05ldHdvcmtN
YW5hZ2VyOjpuZXR3b3Jrc0NoYW5nZWQoY29uc3QgVmVjdG9yPFJUQ05ldHdvcms+JiBuZXR3b3Jr
cywgY29uc3QgUlRDTmV0d29yazo6SVBBZGRyZXNzJiBpcHY0LCBjb25zdCBSVENOZXR3b3JrOjpJ
UEFkZHJlc3MmIGlwdjYpCit7CisgICAgYm9vbCBmb3JjZVNpZ25hbGluZyA9ICFtX3JlY2VpdmVk
TmV0d29ya0xpc3Q7CisgICAgbV9yZWNlaXZlZE5ldHdvcmtMaXN0ID0gdHJ1ZTsKKworICAgIFdl
YkNvcmU6OkxpYldlYlJUQ1Byb3ZpZGVyOjpjYWxsT25XZWJSVENOZXR3b3JrVGhyZWFkKFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIG5ldHdvcmtzLCBpcHY0LCBpcHY2LCBm
b3JjZVNpZ25hbGluZ10geworICAgICAgICBzdGQ6OnZlY3RvcjxydGM6Ok5ldHdvcmsqPiBuZXR3
b3JrTGlzdChuZXR3b3Jrcy5zaXplKCkpOworICAgICAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7
IGluZGV4IDwgbmV0d29ya3Muc2l6ZSgpOyArK2luZGV4KQorICAgICAgICAgICAgbmV0d29ya0xp
c3RbaW5kZXhdID0gbmV3IHJ0Yzo6TmV0d29yayhuZXR3b3Jrc1tpbmRleF0udmFsdWUoKSk7CisK
KyAgICAgICAgYm9vbCBoYXNDaGFuZ2VkOworICAgICAgICBzZXRfZGVmYXVsdF9sb2NhbF9hZGRy
ZXNzZXMoaXB2NC52YWx1ZSwgaXB2Ni52YWx1ZSk7CisgICAgICAgIE1lcmdlTmV0d29ya0xpc3Qo
bmV0d29ya0xpc3QsICZoYXNDaGFuZ2VkKTsKKyAgICAgICAgaWYgKGhhc0NoYW5nZWQgfHwgZm9y
Y2VTaWduYWxpbmcpCisgICAgICAgICAgICBTaWduYWxOZXR3b3Jrc0NoYW5nZWQoKTsKKyAgICB9
KTsKKworfQorCit2b2lkIExpYldlYlJUQ05ldHdvcmtNYW5hZ2VyOjpuZXR3b3JrUHJvY2Vzc0Ny
YXNoZWQoKQoreworICAgIG1fcmVjZWl2ZWROZXR3b3JrTGlzdCA9IGZhbHNlOworICAgIGlmICgh
V2ViQ29yZTo6TGliV2ViUlRDUHJvdmlkZXI6Omhhc1dlYlJUQ1RocmVhZHMoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgLy8gSW4gY2FzZSB3ZSBoYXZlIGNsaWVudHMgd2FpdGluZyBmb3IgbmV0
d29ya3NDaGFuZ2VkLCB3ZSBjYWxsIFNpZ25hbE5ldHdvcmtzQ2hhbmdlZCB0byBtYWtlIHN1cmUg
dGhleSBkbyBub3Qgd2FpdCBmb3Igbm90aGluZy4KKyAgICBXZWJDb3JlOjpMaWJXZWJSVENQcm92
aWRlcjo6Y2FsbE9uV2ViUlRDTmV0d29ya1RocmVhZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpXSB7CisgICAgICAgIFNpZ25hbE5ldHdvcmtzQ2hhbmdlZCgpOworICAgIH0p
OworfQorCit2b2lkIExpYldlYlJUQ05ldHdvcmtNYW5hZ2VyOjpDcmVhdGVOYW1lRm9yQWRkcmVz
cyhjb25zdCBydGM6OklQQWRkcmVzcyYgYWRkcmVzcywgTmFtZUNyZWF0ZWRDYWxsYmFjayBjYWxs
YmFjaykKK3sKKyAgICBjYWxsT25NYWluUnVuTG9vcChbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0
aGlzKSwgYWRkcmVzcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsK
KyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5saWJXZWJSVENOZXR3b3JrKCkubWRuc1JlZ2lzdGVyKCku
cmVnaXN0ZXJNRE5TTmFtZSh3ZWFrVGhpcy0+bV9kb2N1bWVudElkZW50aWZpZXIsIGZyb21TdGRT
dHJpbmcoYWRkcmVzcy5Ub1N0cmluZygpKSwgW2FkZHJlc3MsIGNhbGxiYWNrID0gV1RGTW92ZShj
YWxsYmFjayldKGF1dG8gbmFtZSwgYXV0byBlcnJvcikgbXV0YWJsZSB7CisgICAgICAgICAgICBX
ZWJDb3JlOjpMaWJXZWJSVENQcm92aWRlcjo6Y2FsbE9uV2ViUlRDTmV0d29ya1RocmVhZChbYWRk
cmVzcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgbmFtZSA9IFdURk1vdmUobmFtZSku
aXNvbGF0ZWRDb3B5KCksIGVycm9yXSB7CisgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJS
T1JfSUYoZXJyb3IsIFdlYlJUQywgIk1ETlMgcmVnaXN0cmF0aW9uIG9mIGEgaG9zdCBjYW5kaWRh
dGUgZmFpbGVkIHdpdGggZXJyb3IgJWQiLCAqZXJyb3IpOworICAgICAgICAgICAgICAgIC8vIElu
IGNhc2Ugb2YgZXJyb3IsIHdlIHByb3ZpZGUgdGhlIG5hbWUgdG8gbGV0IGdhdGhlcmluZyBjb21w
bGV0ZS4KKyAgICAgICAgICAgICAgICBjYWxsYmFjayhhZGRyZXNzLCBuYW1lLnV0ZjgoKS5kYXRh
KCkpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0pOworfQorCit2b2lkIExp
YldlYlJUQ05ldHdvcmtNYW5hZ2VyOjpSZW1vdmVOYW1lRm9yQWRkcmVzcyhjb25zdCBydGM6OklQ
QWRkcmVzcyYsIE5hbWVSZW1vdmVkQ2FsbGJhY2spCit7CisgICAgLy8gTGliV2ViUlRDIGJhY2tl
bmQgZGVmaW5lcyB0aGlzIG1ldGhvZCBidXQgZG9lcyBub3QgY2FsbCBpdC4KKyAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBV
U0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvd2VicnRjL0xpYldlYlJUQ05ldHdvcmtNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDTmV0d29ya01hbmFnZXIuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5iNGYzNjBhZjA2MDY1MWYyOTEyZGZhYWM0YmJlYmQ1N2RmMmFkMzRlCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ05l
dHdvcmtNYW5hZ2VyLmgKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaWYgVVNFKExJQldFQlJUQykKKworI2luY2x1ZGUgIldlYlJUQ01vbml0b3IuaCIKKyNp
bmNsdWRlIDxXZWJDb3JlL0RvY3VtZW50SWRlbnRpZmllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
TGliV2ViUlRDUHJvdmlkZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1JUQ05ldHdvcmtNYW5hZ2Vy
Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBMaWJXZWJSVENOZXR3b3JrTWFuYWdl
ciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpSVENOZXR3b3JrTWFuYWdlciwgcHVibGljIHJ0Yzo6
TmV0d29ya01hbmFnZXJCYXNlLCBwdWJsaWMgd2VicnRjOjpNZG5zUmVzcG9uZGVySW50ZXJmYWNl
LCBwdWJsaWMgV2ViUlRDTW9uaXRvcjo6T2JzZXJ2ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOworcHVibGljOgorICAgIHN0YXRpYyBMaWJXZWJSVENOZXR3b3JrTWFuYWdlciogZ2V0
T3JDcmVhdGUoV2ViQ29yZTo6RG9jdW1lbnRJZGVudGlmaWVyKTsKKyAgICB+TGliV2ViUlRDTmV0
d29ya01hbmFnZXIoKTsKKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBMaWJXZWJSVENOZXR3b3Jr
TWFuYWdlcihXZWJDb3JlOjpEb2N1bWVudElkZW50aWZpZXIpOworCisgICAgLy8gV2ViQ29yZTo6
UlRDTmV0d29ya01hbmFnZXIKKyAgICB2b2lkIHNldElDRUNhbmRpZGF0ZUZpbHRlcmluZyhib29s
IGRvRmlsdGVyaW5nKSBmaW5hbCB7IG1fdXNlTUROU0NhbmRpZGF0ZXMgPSBkb0ZpbHRlcmluZzsg
fQorICAgIHZvaWQgdW5yZWdpc3Rlck1ETlNOYW1lcygpIGZpbmFsOworCisgICAgLy8gd2VicnRj
OjpOZXR3b3JrTWFuYWdlckJhc2UKKyAgICB2b2lkIFN0YXJ0VXBkYXRpbmcoKSBmaW5hbDsKKyAg
ICB2b2lkIFN0b3BVcGRhdGluZygpIGZpbmFsOworICAgIHdlYnJ0Yzo6TWRuc1Jlc3BvbmRlcklu
dGVyZmFjZSogR2V0TWRuc1Jlc3BvbmRlcigpIGNvbnN0IGZpbmFsOworCisgICAgLy8gd2VicnRj
OjpNZG5zUmVzcG9uZGVySW50ZXJmYWNlCisgICAgdm9pZCBDcmVhdGVOYW1lRm9yQWRkcmVzcyhj
b25zdCBydGM6OklQQWRkcmVzcyYsIE5hbWVDcmVhdGVkQ2FsbGJhY2spOworICAgIHZvaWQgUmVt
b3ZlTmFtZUZvckFkZHJlc3MoY29uc3QgcnRjOjpJUEFkZHJlc3MmLCBOYW1lUmVtb3ZlZENhbGxi
YWNrKTsKKworICAgIC8vIFdlYlJUQ01vbml0b3I6Ok9ic2VydmVyCisgICAgdm9pZCBuZXR3b3Jr
c0NoYW5nZWQoY29uc3QgVmVjdG9yPFJUQ05ldHdvcms+JiwgY29uc3QgUlRDTmV0d29yazo6SVBB
ZGRyZXNzJiwgY29uc3QgUlRDTmV0d29yazo6SVBBZGRyZXNzJikgZmluYWw7CisgICAgdm9pZCBu
ZXR3b3JrUHJvY2Vzc0NyYXNoZWQoKSBmaW5hbDsKKworICAgIERvY3VtZW50SWRlbnRpZmllciBt
X2RvY3VtZW50SWRlbnRpZmllcjsKKyAgICBib29sIG1fdXNlTUROU0NhbmRpZGF0ZXMgeyB0cnVl
IH07CisgICAgYm9vbCBtX3JlY2VpdmVkTmV0d29ya0xpc3QgeyBmYWxzZSB9OworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHAKaW5k
ZXggOTY4YzlmMzA0YjY1NDgwOWY5OTI2MjU2YzEwMDU1MDdjOTcxMmY1NS4uZjljNGE5MGQ4MjFk
YWY3YThhYjM5YWZkZDMxNjQyMDU4NTE2M2I3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuY3Bw
CkBAIC0zMyw2ICszMyw3IEBACiAjZW5kaWYKIAogI2luY2x1ZGUgIkxpYldlYlJUQ05ldHdvcmsu
aCIKKyNpbmNsdWRlICJMaWJXZWJSVENOZXR3b3JrTWFuYWdlci5oIgogI2luY2x1ZGUgIlJUQ0Rh
dGFDaGFubmVsUmVtb3RlTWFuYWdlci5oIgogI2luY2x1ZGUgIldlYlBhZ2UuaCIKICNpbmNsdWRl
ICJXZWJQcm9jZXNzLmgiCkBAIC01NCw3ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgfQogfTsKIAot
cnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U+IExpYldl
YlJUQ1Byb3ZpZGVyOjpjcmVhdGVQZWVyQ29ubmVjdGlvbih3ZWJydGM6OlBlZXJDb25uZWN0aW9u
T2JzZXJ2ZXImIG9ic2VydmVyLCBydGM6OlBhY2tldFNvY2tldEZhY3RvcnkqIHNvY2tldEZhY3Rv
cnksIHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OlJUQ0NvbmZpZ3VyYXRpb24mJiBj
b25maWd1cmF0aW9uKQorcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25J
bnRlcmZhY2U+IExpYldlYlJUQ1Byb3ZpZGVyOjpjcmVhdGVQZWVyQ29ubmVjdGlvbihEb2N1bWVu
dElkZW50aWZpZXIgaWRlbnRpZmllciwgd2VicnRjOjpQZWVyQ29ubmVjdGlvbk9ic2VydmVyJiBv
YnNlcnZlciwgcnRjOjpQYWNrZXRTb2NrZXRGYWN0b3J5KiBzb2NrZXRGYWN0b3J5LCB3ZWJydGM6
OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpSVENDb25maWd1cmF0aW9uJiYgY29uZmlndXJhdGlv
bikKIHsKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIFBMQVRGT1JNKENPQ09BKSAmJiAhUExB
VEZPUk0oTUFDQ0FUQUxZU1QpCiAgICAgaWYgKCFtX2RpZEluaXRpYWxpemVDYWxsYmFjaykgewpA
QCAtNjcsMjIgKzY4LDE3IEBAIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlBlZXJDb25uZWN0
aW9uSW50ZXJmYWNlPiBMaWJXZWJSVENQcm92aWRlcjo6Y3JlYXRlUGVlCiAKICAgICBhdXRvJiBu
ZXR3b3JrTW9uaXRvciA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmxpYldlYlJUQ05ldHdvcmso
KS5tb25pdG9yKCk7CiAgICAgbmV0d29ya01vbml0b3Iuc2V0RW51bWVyYXRpbmdBbGxOZXR3b3Jr
SW50ZXJmYWNlc0VuYWJsZWQoaXNFbnVtZXJhdGluZ0FsbE5ldHdvcmtJbnRlcmZhY2VzRW5hYmxl
ZCgpKTsKLSAgICByZXR1cm4gV2ViQ29yZTo6TGliV2ViUlRDUHJvdmlkZXI6OmNyZWF0ZVBlZXJD
b25uZWN0aW9uKG9ic2VydmVyLCBuZXR3b3JrTW9uaXRvciwgKnNvY2tldEZhY3RvcnksIFdURk1v
dmUoY29uZmlndXJhdGlvbiksIG1ha2VVbmlxdWU8QXN5bmNSZXNvbHZlckZhY3Rvcnk+KCkpOwot
fQogCi12b2lkIExpYldlYlJUQ1Byb3ZpZGVyOjpkaXNhYmxlTm9uTG9jYWxob3N0Q29ubmVjdGlv
bnMoKQotewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmxpYldlYlJUQ05ldHdvcmsoKS5k
aXNhYmxlTm9uTG9jYWxob3N0Q29ubmVjdGlvbnMoKTsKLX0KKyAgICBhdXRvKiBuZXR3b3JrTWFu
YWdlciA9IExpYldlYlJUQ05ldHdvcmtNYW5hZ2VyOjpnZXRPckNyZWF0ZShpZGVudGlmaWVyKTsK
KyAgICBpZiAoIW5ldHdvcmtNYW5hZ2VyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotdm9p
ZCBMaWJXZWJSVENQcm92aWRlcjo6dW5yZWdpc3Rlck1ETlNOYW1lcyhEb2N1bWVudElkZW50aWZp
ZXIgZG9jdW1lbnRJZGVudGlmaWVyKQotewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmxp
YldlYlJUQ05ldHdvcmsoKS5tZG5zUmVnaXN0ZXIoKS51bnJlZ2lzdGVyTUROU05hbWVzKGRvY3Vt
ZW50SWRlbnRpZmllcik7CisgICAgcmV0dXJuIFdlYkNvcmU6OkxpYldlYlJUQ1Byb3ZpZGVyOjpj
cmVhdGVQZWVyQ29ubmVjdGlvbihvYnNlcnZlciwgKm5ldHdvcmtNYW5hZ2VyLCAqc29ja2V0RmFj
dG9yeSwgV1RGTW92ZShjb25maWd1cmF0aW9uKSwgbWFrZVVuaXF1ZTxBc3luY1Jlc29sdmVyRmFj
dG9yeT4oKSk7CiB9CiAKLXZvaWQgTGliV2ViUlRDUHJvdmlkZXI6OnJlZ2lzdGVyTUROU05hbWUo
RG9jdW1lbnRJZGVudGlmaWVyIGRvY3VtZW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBpcEFk
ZHJlc3MsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoTUROU05hbWVPckVycm9yJiYpPiYmIGNhbGxi
YWNrKQordm9pZCBMaWJXZWJSVENQcm92aWRlcjo6ZGlzYWJsZU5vbkxvY2FsaG9zdENvbm5lY3Rp
b25zKCkKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5saWJXZWJSVENOZXR3b3JrKCku
bWRuc1JlZ2lzdGVyKCkucmVnaXN0ZXJNRE5TTmFtZShkb2N1bWVudElkZW50aWZpZXIsIGlwQWRk
cmVzcywgV1RGTW92ZShjYWxsYmFjaykpOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmxp
YldlYlJUQ05ldHdvcmsoKS5kaXNhYmxlTm9uTG9jYWxob3N0Q29ubmVjdGlvbnMoKTsKIH0KIAog
Y2xhc3MgUlRDU29ja2V0RmFjdG9yeSBmaW5hbCA6IHB1YmxpYyBMaWJXZWJSVENQcm92aWRlcjo6
U3VzcGVuZGFibGVTb2NrZXRGYWN0b3J5IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmgKaW5kZXggNzJh
ZDNhNDI5ZmVmYmZhMWQ0Y2FlZjVjMmJmN2M5NTczMDFlMTIwMS4uODgzYWRmY2FjOTMwYzA2ZDk1
OGQyMzk4ZjI3MGM3NWYxYzY0NGU4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmgKQEAgLTU0LDEw
ICs1NCw4IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPFN1c3BlbmRh
YmxlU29ja2V0RmFjdG9yeT4gY3JlYXRlU29ja2V0RmFjdG9yeShTdHJpbmcmJiAvKiB1c2VyQWdl
bnQgKi8sIGJvb2wgLyogaXNGaXJzdFBhcnR5ICovLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biYmKSBmaW5hbDsKIAotICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlBlZXJDb25uZWN0
aW9uSW50ZXJmYWNlPiBjcmVhdGVQZWVyQ29ubmVjdGlvbih3ZWJydGM6OlBlZXJDb25uZWN0aW9u
T2JzZXJ2ZXImLCBydGM6OlBhY2tldFNvY2tldEZhY3RvcnkqLCB3ZWJydGM6OlBlZXJDb25uZWN0
aW9uSW50ZXJmYWNlOjpSVENDb25maWd1cmF0aW9uJiYpIGZpbmFsOworICAgIHJ0Yzo6c2NvcGVk
X3JlZnB0cjx3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlPiBjcmVhdGVQZWVyQ29ubmVj
dGlvbihXZWJDb3JlOjpEb2N1bWVudElkZW50aWZpZXIsIHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25P
YnNlcnZlciYsIHJ0Yzo6UGFja2V0U29ja2V0RmFjdG9yeSosIHdlYnJ0Yzo6UGVlckNvbm5lY3Rp
b25JbnRlcmZhY2U6OlJUQ0NvbmZpZ3VyYXRpb24mJikgZmluYWw7CiAKLSAgICB2b2lkIHVucmVn
aXN0ZXJNRE5TTmFtZXMoV2ViQ29yZTo6RG9jdW1lbnRJZGVudGlmaWVyKSBmaW5hbDsKLSAgICB2
b2lkIHJlZ2lzdGVyTUROU05hbWUoV2ViQ29yZTo6RG9jdW1lbnRJZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIGlwQWRkcmVzcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChNRE5TTmFtZU9yRXJyb3Im
Jik+JiYpIGZpbmFsOwogICAgIHZvaWQgZGlzYWJsZU5vbkxvY2FsaG9zdENvbm5lY3Rpb25zKCkg
ZmluYWw7CiAgICAgdm9pZCBzdGFydGVkTmV0d29ya1RocmVhZCgpIGZpbmFsOwogICAgIFJlZlB0
cjxXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXJDb25uZWN0aW9uPiBjcmVhdGVS
VENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXJDb25uZWN0aW9uKCkgZmluYWw7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvV2ViTUROU1JlZ2lzdGVy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJNRE5TUmVn
aXN0ZXIuY3BwCmluZGV4IDUxNTkwZjlhY2NlNjI0NDA2OGIxNDdjZTZhOWM3YzE4MjU3NTc3NjEu
Ljc2MDIwN2VhNTliY2EyNTQ1MjJmNTZjNTlhNTI0NWU1OTVhOGRlMmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJNRE5TUmVnaXN0ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJNRE5TUmVn
aXN0ZXIuY3BwCkBAIC0zNiwyMiArMzYsMjIgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CiAKLXZvaWQgV2ViTUROU1JlZ2lzdGVyOjpmaW5pc2hlZFJlZ2lz
dGVyaW5nTUROU05hbWUoTUROU1JlZ2lzdGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBMaWJXZWJS
VENQcm92aWRlcjo6TUROU05hbWVPckVycm9yJiYgcmVzdWx0KQordm9pZCBXZWJNRE5TUmVnaXN0
ZXI6OmZpbmlzaGVkUmVnaXN0ZXJpbmdNRE5TTmFtZShNRE5TUmVnaXN0ZXJJZGVudGlmaWVyIGlk
ZW50aWZpZXIsIFN0cmluZyYmIG5hbWUsIHN0ZDo6b3B0aW9uYWw8TUROU1JlZ2lzdGVyRXJyb3I+
IGVycm9yKQogewogICAgIGF1dG8gcGVuZGluZ1JlZ2lzdHJhdGlvbiA9IG1fcGVuZGluZ1JlZ2lz
dHJhdGlvbnMudGFrZShpZGVudGlmaWVyKTsKICAgICBpZiAoIXBlbmRpbmdSZWdpc3RyYXRpb24u
Y2FsbGJhY2spCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChyZXN1bHQuaGFzX3ZhbHVlKCkp
IHsKKyAgICBpZiAoIWVycm9yKSB7CiAgICAgICAgIGF1dG8gaXRlcmF0b3IgPSBtX3JlZ2lzdGVy
aW5nRG9jdW1lbnRzLmZpbmQocGVuZGluZ1JlZ2lzdHJhdGlvbi5kb2N1bWVudElkZW50aWZpZXIp
OwogICAgICAgICBpZiAoaXRlcmF0b3IgPT0gbV9yZWdpc3RlcmluZ0RvY3VtZW50cy5lbmQoKSkg
ewotICAgICAgICAgICAgcGVuZGluZ1JlZ2lzdHJhdGlvbi5jYWxsYmFjayhtYWtlVW5leHBlY3Rl
ZChXZWJDb3JlOjpNRE5TUmVnaXN0ZXJFcnJvcjo6RE5TU0QpKTsKKyAgICAgICAgICAgIHBlbmRp
bmdSZWdpc3RyYXRpb24uY2FsbGJhY2sobmFtZSwgV2ViQ29yZTo6TUROU1JlZ2lzdGVyRXJyb3I6
OkROU1NEKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBpdGVyYXRv
ci0+dmFsdWUuYWRkKHBlbmRpbmdSZWdpc3RyYXRpb24uaXBBZGRyZXNzLCByZXN1bHQudmFsdWUo
KSk7CisgICAgICAgIGl0ZXJhdG9yLT52YWx1ZS5hZGQocGVuZGluZ1JlZ2lzdHJhdGlvbi5pcEFk
ZHJlc3MsIG5hbWUpOwogICAgIH0KIAotICAgIHBlbmRpbmdSZWdpc3RyYXRpb24uY2FsbGJhY2so
V1RGTW92ZShyZXN1bHQpKTsKKyAgICBwZW5kaW5nUmVnaXN0cmF0aW9uLmNhbGxiYWNrKG5hbWUs
IGVycm9yKTsKIH0KIAogdm9pZCBXZWJNRE5TUmVnaXN0ZXI6OnVucmVnaXN0ZXJNRE5TTmFtZXMo
RG9jdW1lbnRJZGVudGlmaWVyIGlkZW50aWZpZXIpCkBAIC02Myw3ICs2Myw3IEBAIHZvaWQgV2Vi
TUROU1JlZ2lzdGVyOjp1bnJlZ2lzdGVyTUROU05hbWVzKERvY3VtZW50SWRlbnRpZmllciBpZGVu
dGlmaWVyKQogICAgIGNvbm5lY3Rpb24uc2VuZChNZXNzYWdlczo6TmV0d29ya01ETlNSZWdpc3Rl
cjo6VW5yZWdpc3Rlck1ETlNOYW1lcyB7IGlkZW50aWZpZXIgfSwgMCk7CiB9CiAKLXZvaWQgV2Vi
TUROU1JlZ2lzdGVyOjpyZWdpc3Rlck1ETlNOYW1lKERvY3VtZW50SWRlbnRpZmllciBpZGVudGlm
aWVyLCBjb25zdCBTdHJpbmcmIGlwQWRkcmVzcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChMaWJX
ZWJSVENQcm92aWRlcjo6TUROU05hbWVPckVycm9yJiYpPiYmIGNhbGxiYWNrKQordm9pZCBXZWJN
RE5TUmVnaXN0ZXI6OnJlZ2lzdGVyTUROU05hbWUoRG9jdW1lbnRJZGVudGlmaWVyIGlkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgaXBBZGRyZXNzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0
IFN0cmluZyYsIHN0ZDo6b3B0aW9uYWw8TUROU1JlZ2lzdGVyRXJyb3I+KT4mJiBjYWxsYmFjaykK
IHsKICAgICBhdXRvJiBtYXAgPSBtX3JlZ2lzdGVyaW5nRG9jdW1lbnRzLmVuc3VyZShpZGVudGlm
aWVyLCBbXSB7CiAgICAgICAgIHJldHVybiBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiB7IH07CkBA
IC03MSwxNiArNzEsMTcgQEAgdm9pZCBXZWJNRE5TUmVnaXN0ZXI6OnJlZ2lzdGVyTUROU05hbWUo
RG9jdW1lbnRJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFN0cmkKIAogICAgIGF1dG8gaXRl
cmF0b3IgPSBtYXAuZmluZChpcEFkZHJlc3MpOwogICAgIGlmIChpdGVyYXRvciAhPSBtYXAuZW5k
KCkpIHsKLSAgICAgICAgY2FsbGJhY2soaXRlcmF0b3ItPnZhbHVlKTsKKyAgICAgICAgY2FsbGJh
Y2soaXRlcmF0b3ItPnZhbHVlLCB7IH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAg
YXV0byByZXF1ZXN0SWRlbnRpZmllciA9IE1ETlNSZWdpc3RlcklkZW50aWZpZXI6OmdlbmVyYXRl
KCk7CiAgICAgbV9wZW5kaW5nUmVnaXN0cmF0aW9ucy5hZGQocmVxdWVzdElkZW50aWZpZXIsIFBl
bmRpbmdSZWdpc3RyYXRpb24geyBXVEZNb3ZlKGNhbGxiYWNrKSwgaWRlbnRpZmllciwgaXBBZGRy
ZXNzIH0pOwogCisgICAgLy8gRklYTUU6IFVzZSBhc3luYyByZXBseS4KICAgICBhdXRvJiBjb25u
ZWN0aW9uID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uKCkuY29ubmVjdGlvbigpOwogICAgIGlmICghY29ubmVjdGlvbi5zZW5kKE1lc3NhZ2Vz
OjpOZXR3b3JrTUROU1JlZ2lzdGVyOjpSZWdpc3Rlck1ETlNOYW1lIHsgcmVxdWVzdElkZW50aWZp
ZXIsIGlkZW50aWZpZXIsIGlwQWRkcmVzcyB9LCAwKSkKLSAgICAgICAgZmluaXNoZWRSZWdpc3Rl
cmluZ01ETlNOYW1lKHJlcXVlc3RJZGVudGlmaWVyLCBtYWtlVW5leHBlY3RlZChNRE5TUmVnaXN0
ZXJFcnJvcjo6SW50ZXJuYWwpKTsKKyAgICAgICAgZmluaXNoZWRSZWdpc3RlcmluZ01ETlNOYW1l
KHJlcXVlc3RJZGVudGlmaWVyLCB7IH0sIE1ETlNSZWdpc3RlckVycm9yOjpJbnRlcm5hbCk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvd2VicnRjL1dlYk1ETlNSZWdpc3Rlci5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1dlYk1ETlNSZWdpc3Rlci5oCmluZGV4IDBjMGY2MTMz
YWY0NjhjOWViYjhjNjdhMmFlNGU4YzlhNzMzZWU2YWQuLjJjMGZmMGU0NjY1MTFmOTc4ZmI4MDky
NzIwYWYwNzNkYmY1MzhmYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL3dlYnJ0Yy9XZWJNRE5TUmVnaXN0ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay93ZWJydGMvV2ViTUROU1JlZ2lzdGVyLmgKQEAgLTQ2LDE1ICs0NiwxNSBA
QCBwdWJsaWM6CiAgICAgV2ViTUROU1JlZ2lzdGVyKCkgPSBkZWZhdWx0OwogCiAgICAgdm9pZCB1
bnJlZ2lzdGVyTUROU05hbWVzKFdlYkNvcmU6OkRvY3VtZW50SWRlbnRpZmllcik7Ci0gICAgdm9p
ZCByZWdpc3Rlck1ETlNOYW1lKFdlYkNvcmU6OkRvY3VtZW50SWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiBpcEFkZHJlc3MsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6TGliV2ViUlRD
UHJvdmlkZXI6Ok1ETlNOYW1lT3JFcnJvciYmKT4mJik7CisgICAgdm9pZCByZWdpc3Rlck1ETlNO
YW1lKFdlYkNvcmU6OkRvY3VtZW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBpcEFkZHJlc3Ms
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJiwgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpNRE5TUmVnaXN0ZXJFcnJvcj4pPiYmKTsKIAogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CiAKIHByaXZhdGU6Ci0gICAgdm9p
ZCBmaW5pc2hlZFJlZ2lzdGVyaW5nTUROU05hbWUoTUROU1JlZ2lzdGVySWRlbnRpZmllciwgV2Vi
Q29yZTo6TGliV2ViUlRDUHJvdmlkZXI6Ok1ETlNOYW1lT3JFcnJvciYmKTsKKyAgICB2b2lkIGZp
bmlzaGVkUmVnaXN0ZXJpbmdNRE5TTmFtZShNRE5TUmVnaXN0ZXJJZGVudGlmaWVyLCBTdHJpbmcm
Jiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpNRE5TUmVnaXN0ZXJFcnJvcj4pOwogCiAgICAgc3Ry
dWN0IFBlbmRpbmdSZWdpc3RyYXRpb24gewotICAgICAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFdlYkNvcmU6OkxpYldlYlJUQ1Byb3ZpZGVyOjpNRE5TTmFtZU9yRXJyb3ImJik+IGNhbGxiYWNr
OworICAgICAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYsIHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6TUROU1JlZ2lzdGVyRXJyb3I+KT4gY2FsbGJhY2s7CiAgICAgICAgIFdl
YkNvcmU6OkRvY3VtZW50SWRlbnRpZmllciBkb2N1bWVudElkZW50aWZpZXI7CiAgICAgICAgIFN0
cmluZyBpcEFkZHJlc3M7CiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJNRE5TUmVnaXN0ZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvV2ViTUROU1JlZ2lzdGVyLm1lc3NhZ2Vz
LmluCmluZGV4IGFiMTJhMWUwMTkyNmQ2YWZjYjRjMjQ3OGVkNTNmNWMzNjJhODhiOWIuLmYxZWE1
YzczMDZkMmEwYzZkZTlmMWI4MTIwNzYzZTlmZDkzMWRhNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJNRE5TUmVnaXN0ZXIubWVzc2FnZXMu
aW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1dlYk1ETlNS
ZWdpc3Rlci5tZXNzYWdlcy5pbgpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDE4LTIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0yMyw3ICsyMyw3IEBACiAjaWYgRU5BQkxFKFdFQl9SVEMpCiAKIG1lc3NhZ2Vz
IC0+IFdlYk1ETlNSZWdpc3RlciBOb3RSZWZDb3VudGVkIHsKLSAgICB2b2lkIEZpbmlzaGVkUmVn
aXN0ZXJpbmdNRE5TTmFtZShXZWJLaXQ6Ok1ETlNSZWdpc3RlcklkZW50aWZpZXIgaWRlbnRpZmll
ciwgV2ViQ29yZTo6TGliV2ViUlRDUHJvdmlkZXI6Ok1ETlNOYW1lT3JFcnJvciByZXN1bHQpCisg
ICAgdm9pZCBGaW5pc2hlZFJlZ2lzdGVyaW5nTUROU05hbWUoV2ViS2l0OjpNRE5TUmVnaXN0ZXJJ
ZGVudGlmaWVyIGlkZW50aWZpZXIsIFN0cmluZyBtZG5zTmFtZSwgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpNRE5TUmVnaXN0ZXJFcnJvcj4gZXJyb3IpCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoV0VC
X1JUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0
Yy9XZWJSVENNb25pdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dl
YnJ0Yy9XZWJSVENNb25pdG9yLmNwcAppbmRleCAwZjlkYWQyZDFkMjlkMGIzMDc5ZDM4NzFiN2Ux
NDU0MTUyOTA0OTM2Li5kMGNiOThiZTg4MGJiNjEzZmRhMjMxNTAyZTY3MDJjMDRhZjIwMjM3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvV2ViUlRD
TW9uaXRvci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRj
L1dlYlJUQ01vbml0b3IuY3BwCkBAIC0zMyw4ICszMyw2IEBACiAjaW5jbHVkZSAiTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiTmV0d29ya1JUQ01vbml0b3JNZXNzYWdlcy5o
IgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0xpYldlYlJUQ01h
Y3Jvcy5oPgotI2luY2x1ZGUgPHdlYnJ0Yy9ydGNfYmFzZS9uZXRfaGVscGVycy5oPgogI2luY2x1
ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTMsNjcgKzUx
LDQzIEBAIHZvaWQgV2ViUlRDTW9uaXRvcjo6c2V0RW51bWVyYXRpbmdBbGxOZXR3b3JrSW50ZXJm
YWNlc0VuYWJsZWQoYm9vbCBlbmFibGVkKQogICAgIG1fZW5hYmxlRW51bWVyYXRpbmdBbGxOZXR3
b3JrSW50ZXJmYWNlcyA9IGVuYWJsZWQ7CiB9CiAKLXZvaWQgV2ViUlRDTW9uaXRvcjo6U3RhcnRV
cGRhdGluZygpCit2b2lkIFdlYlJUQ01vbml0b3I6OnN0YXJ0VXBkYXRpbmcoKQogewotICAgIFdF
QlJUQ19SRUxFQVNFX0xPRygiU3RhcnRVcGRhdGluZyIpOwotICAgIGlmIChtX3JlY2VpdmVkTmV0
d29ya0xpc3QpIHsKLSAgICAgICAgV2ViQ29yZTo6TGliV2ViUlRDUHJvdmlkZXI6OmNhbGxPbldl
YlJUQ05ldHdvcmtUaHJlYWQoW3RoaXNdIHsKLSAgICAgICAgICAgIFNpZ25hbE5ldHdvcmtzQ2hh
bmdlZCgpOwotICAgICAgICB9KTsKLSAgICB9Ci0KLSAgICBzZW5kT25NYWluVGhyZWFkKFt0aGlz
XShhdXRvJiBjb25uZWN0aW9uKSB7Ci0gICAgICAgIFdFQlJUQ19SRUxFQVNFX0xPRygiU3RhcnRV
cGRhdGluZyAtIEFza2luZyBuZXR3b3JrIHByb2Nlc3MgdG8gc3RhcnQgdXBkYXRpbmciKTsKLSAg
ICAgICAgY29ubmVjdGlvbi5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUlRDTW9uaXRvcjo6U3RhcnRV
cGRhdGluZ0lmTmVlZGVkKG1fZW5hYmxlRW51bWVyYXRpbmdBbGxOZXR3b3JrSW50ZXJmYWNlcyks
IDApOwotICAgIH0pOworICAgIFdFQlJUQ19SRUxFQVNFX0xPRygiU3RhcnRVcGRhdGluZyAtIEFz
a2luZyBuZXR3b3JrIHByb2Nlc3MgdG8gc3RhcnQgdXBkYXRpbmciKTsKKworICAgIFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rp
b24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUlRDTW9uaXRvcjo6U3RhcnRVcGRhdGluZ0lmTmVl
ZGVkKG1fZW5hYmxlRW51bWVyYXRpbmdBbGxOZXR3b3JrSW50ZXJmYWNlcyksIDApOwogICAgICsr
bV9jbGllbnRDb3VudDsKIH0KIAotdm9pZCBXZWJSVENNb25pdG9yOjpTdG9wVXBkYXRpbmcoKQor
dm9pZCBXZWJSVENNb25pdG9yOjpzdG9wVXBkYXRpbmcoKQogewogICAgIFdFQlJUQ19SRUxFQVNF
X0xPRygiU3RvcFVwZGF0aW5nIik7CisKICAgICBBU1NFUlQobV9jbGllbnRDb3VudCk7CiAgICAg
aWYgKC0tbV9jbGllbnRDb3VudCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgc2VuZE9uTWFpblRo
cmVhZChbdGhpc10oYXV0byYgY29ubmVjdGlvbikgewotICAgICAgICBXRUJSVENfUkVMRUFTRV9M
T0coIlN0b3BVcGRhdGluZyAtIEFza2luZyBuZXR3b3JrIHByb2Nlc3MgdG8gc3RvcCB1cGRhdGlu
ZyIpOwotICAgICAgICBjb25uZWN0aW9uLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtSVENNb25pdG9y
OjpTdG9wVXBkYXRpbmcoKSwgMCk7Ci0gICAgfSk7CisgICAgV0VCUlRDX1JFTEVBU0VfTE9HKCJT
dG9wVXBkYXRpbmcgLSBBc2tpbmcgbmV0d29yayBwcm9jZXNzIHRvIHN0b3AgdXBkYXRpbmciKTsK
KyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya1JUQ01vbml0b3I6OlN0b3BV
cGRhdGluZygpLCAwKTsKIH0KIAotdm9pZCBXZWJSVENNb25pdG9yOjpuZXR3b3Jrc0NoYW5nZWQo
Y29uc3QgVmVjdG9yPFJUQ05ldHdvcms+JiBuZXR3b3JrcywgY29uc3QgUlRDTmV0d29yazo6SVBB
ZGRyZXNzJiBpcHY0LCBjb25zdCBSVENOZXR3b3JrOjpJUEFkZHJlc3MmIGlwdjYpCit2b2lkIFdl
YlJUQ01vbml0b3I6Om5ldHdvcmtzQ2hhbmdlZChWZWN0b3I8UlRDTmV0d29yaz4mJiBuZXR3b3Jr
TGlzdCwgUlRDTmV0d29yazo6SVBBZGRyZXNzJiYgaXB2NCwgUlRDTmV0d29yazo6SVBBZGRyZXNz
JiYgaXB2NikKIHsKICAgICBXRUJSVENfUkVMRUFTRV9MT0coIm5ldHdvcmtzQ2hhbmdlZCIpOwot
ICAgIC8vIE5vIG5lZWQgdG8gcHJvdGVjdCAndGhpcycgYXMgaXQgaGFzIHRoZSBsaWZldGltZSBv
ZiBMaWJXZWJSVEMgd2hpY2ggaGFzIHRoZSBsaWZldGltZSBvZiB0aGUgd2ViIHByb2Nlc3MuCi0g
ICAgV2ViQ29yZTo6TGliV2ViUlRDUHJvdmlkZXI6OmNhbGxPbldlYlJUQ05ldHdvcmtUaHJlYWQo
W3RoaXMsIG5ldHdvcmtzLCBpcHY0LCBpcHY2XSB7Ci0gICAgICAgIFdFQlJUQ19SRUxFQVNFX0xP
RygibmV0d29ya3NDaGFuZ2VkIC0gU2lnbmFsaW5nIik7Ci0gICAgICAgIHN0ZDo6dmVjdG9yPHJ0
Yzo6TmV0d29yayo+IG5ldHdvcmtMaXN0KG5ldHdvcmtzLnNpemUoKSk7Ci0gICAgICAgIGZvciAo
c2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBuZXR3b3Jrcy5zaXplKCk7ICsraW5kZXgpCi0gICAg
ICAgICAgICBuZXR3b3JrTGlzdFtpbmRleF0gPSBuZXcgcnRjOjpOZXR3b3JrKG5ldHdvcmtzW2lu
ZGV4XS52YWx1ZSgpKTsKLQotICAgICAgICBib29sIGZvcmNlU2lnbmFsaW5nID0gIW1fcmVjZWl2
ZWROZXR3b3JrTGlzdDsKLSAgICAgICAgbV9yZWNlaXZlZE5ldHdvcmtMaXN0ID0gdHJ1ZTsKLQot
ICAgICAgICBib29sIGhhc0NoYW5nZWQ7Ci0gICAgICAgIHNldF9kZWZhdWx0X2xvY2FsX2FkZHJl
c3NlcyhpcHY0LnZhbHVlLCBpcHY2LnZhbHVlKTsKLSAgICAgICAgTWVyZ2VOZXR3b3JrTGlzdChu
ZXR3b3JrTGlzdCwgJmhhc0NoYW5nZWQpOwotICAgICAgICBpZiAoaGFzQ2hhbmdlZCB8fCBmb3Jj
ZVNpZ25hbGluZykKLSAgICAgICAgICAgIFNpZ25hbE5ldHdvcmtzQ2hhbmdlZCgpOwogCi0gICAg
fSk7CisgICAgbV9kaWRSZWNlaXZlTmV0d29ya0xpc3QgPSB0cnVlOworICAgIG1fbmV0d29ya0xp
c3QgPSBXVEZNb3ZlKG5ldHdvcmtMaXN0KTsKKyAgICBtX2lwdjQgPSBXVEZNb3ZlKGlwdjQpOwor
ICAgIG1faXB2NiA9IFdURk1vdmUoaXB2Nik7CisKKyAgICBmb3IgKGF1dG8mIG9ic2VydmVyIDog
bV9vYnNlcnZlcnMpCisgICAgICAgIG9ic2VydmVyLm5ldHdvcmtzQ2hhbmdlZChtX25ldHdvcmtM
aXN0LCBtX2lwdjQsIG1faXB2Nik7CiB9CiAKIHZvaWQgV2ViUlRDTW9uaXRvcjo6bmV0d29ya1By
b2Nlc3NDcmFzaGVkKCkKIHsKLSAgICBtX3JlY2VpdmVkTmV0d29ya0xpc3QgPSBmYWxzZTsKLSAg
ICBpZiAoIVdlYkNvcmU6OkxpYldlYlJUQ1Byb3ZpZGVyOjpoYXNXZWJSVENUaHJlYWRzKCkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIC8vIEluIGNhc2Ugd2UgaGF2ZSBjbGllbnRzIHdhaXRpbmcg
Zm9yIG5ldHdvcmtzQ2hhbmdlZCwgd2UgY2FsbCBTaWduYWxOZXR3b3Jrc0NoYW5nZWQgdG8gbWFr
ZSBzdXJlIHRoZXkgZG8gbm90IHdhaXQgZm9yIG5vdGhpbmcuICAgIAotICAgIFdlYkNvcmU6Okxp
YldlYlJUQ1Byb3ZpZGVyOjpjYWxsT25XZWJSVENOZXR3b3JrVGhyZWFkKFt0aGlzXSB7Ci0gICAg
ICAgIFNpZ25hbE5ldHdvcmtzQ2hhbmdlZCgpOwotICAgIH0pOworICAgIGZvciAoYXV0byYgb2Jz
ZXJ2ZXIgOiBtX29ic2VydmVycykKKyAgICAgICAgb2JzZXJ2ZXIubmV0d29ya1Byb2Nlc3NDcmFz
aGVkKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1dlYlJUQ01vbml0b3IuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJSVENNb25pdG9yLmgKaW5kZXggZjZi
OTczOWZhZGRjMzgyY2Q0MjJlNWJhYThlYTI4NTZlNWY0ZmIwZi4uMDY4NTkwZTUzMjY0MWExZmRh
MzU3YWFjMTJhZDIzMjRiMjA0NDI0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvd2VicnRjL1dlYlJUQ01vbml0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay93ZWJydGMvV2ViUlRDTW9uaXRvci5oCkBAIC0zMCw2ICszMCw3IEBA
CiAjaW5jbHVkZSAiUlRDTmV0d29yay5oIgogI2luY2x1ZGUgPFdlYkNvcmUvTGliV2ViUlRDUHJv
dmlkZXIuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrSGFz
aFNldC5oPgogCiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIENvbm5lY3Rpb247CkBAIC00MCwyNiAr
NDEsNDIgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHN0cnVjdCBOZXR3b3Jrc0NoYW5nZWREYXRh
OwogCi1jbGFzcyBXZWJSVENNb25pdG9yIGZpbmFsIDogcHVibGljIHJ0Yzo6TmV0d29ya01hbmFn
ZXJCYXNlIHsKK2NsYXNzIFdlYlJUQ01vbml0b3IgewogcHVibGljOgogICAgIFdlYlJUQ01vbml0
b3IoKSA9IGRlZmF1bHQ7CiAKKyAgICBjbGFzcyBPYnNlcnZlciA6IHB1YmxpYyBDYW5NYWtlV2Vh
a1B0cjxPYnNlcnZlcj4geworICAgIHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCB+T2JzZXJ2ZXIo
KSA9IGRlZmF1bHQ7CisgICAgICAgIHZpcnR1YWwgdm9pZCBuZXR3b3Jrc0NoYW5nZWQoY29uc3Qg
VmVjdG9yPFJUQ05ldHdvcms+JiwgY29uc3QgUlRDTmV0d29yazo6SVBBZGRyZXNzJiwgY29uc3Qg
UlRDTmV0d29yazo6SVBBZGRyZXNzJikgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgbmV0d29y
a1Byb2Nlc3NDcmFzaGVkKCkgPSAwOworICAgIH07CisgICAgdm9pZCBhZGRPYnNlcnZlcihPYnNl
cnZlciYgb2JzZXJ2ZXIpIHsgbV9vYnNlcnZlcnMuYWRkKG9ic2VydmVyKTsgfQorICAgIHZvaWQg
cmVtb3ZlT2JzZXJ2ZXIoT2JzZXJ2ZXImIG9ic2VydmVyKSB7IG1fb2JzZXJ2ZXJzLnJlbW92ZShv
YnNlcnZlcik7IH0KKyAgICB2b2lkIHN0YXJ0VXBkYXRpbmcoKTsKKyAgICB2b2lkIHN0b3BVcGRh
dGluZygpOworCiAgICAgdm9pZCBuZXR3b3JrUHJvY2Vzc0NyYXNoZWQoKTsKICAgICB2b2lkIGRp
ZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwogICAgIHZv
aWQgc2V0RW51bWVyYXRpbmdBbGxOZXR3b3JrSW50ZXJmYWNlc0VuYWJsZWQoYm9vbCk7CiAKLXBy
aXZhdGU6Ci0gICAgdm9pZCBuZXR3b3Jrc0NoYW5nZWQoY29uc3QgVmVjdG9yPFJUQ05ldHdvcms+
JiBuZXR3b3JrTGlzdCwgY29uc3QgUlRDTmV0d29yazo6SVBBZGRyZXNzJiwgY29uc3QgUlRDTmV0
d29yazo6SVBBZGRyZXNzJik7CisgICAgYm9vbCBkaWRSZWNlaXZlTmV0d29ya0xpc3QoKSBjb25z
dCB7IHJldHVybiBtX2RpZFJlY2VpdmVOZXR3b3JrTGlzdDsgfQorICAgIGNvbnN0IFZlY3RvcjxS
VENOZXR3b3JrPiYgbmV0d29ya0xpc3QoKSBjb25zdCB7IHJldHVybiBtX25ldHdvcmtMaXN0OyB9
CisgICAgY29uc3QgUlRDTmV0d29yazo6SVBBZGRyZXNzJiBpcHY0KCkgY29uc3QgeyByZXR1cm4g
bV9pcHY0OyB9CisgICAgY29uc3QgUlRDTmV0d29yazo6SVBBZGRyZXNzJiBpcHY2KCkgY29uc3Qg
eyByZXR1cm4gbV9pcHY2OyB9CiAKLSAgICB2b2lkIFN0YXJ0VXBkYXRpbmcoKSBmaW5hbDsKLSAg
ICB2b2lkIFN0b3BVcGRhdGluZygpIGZpbmFsOwotICAgIHdlYnJ0Yzo6TWRuc1Jlc3BvbmRlcklu
dGVyZmFjZSogR2V0TWRuc1Jlc3BvbmRlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG51bGxwdHI7
IH0KK3ByaXZhdGU6CisgICAgdm9pZCBuZXR3b3Jrc0NoYW5nZWQoVmVjdG9yPFJUQ05ldHdvcms+
JiYsIFJUQ05ldHdvcms6OklQQWRkcmVzcyYmLCBSVENOZXR3b3JrOjpJUEFkZHJlc3MmJik7CiAK
ICAgICBzdGF0aWMgdm9pZCBzZW5kT25NYWluVGhyZWFkKEZ1bmN0aW9uPHZvaWQoSVBDOjpDb25u
ZWN0aW9uJik+JiYpOwogCiAgICAgdW5zaWduZWQgbV9jbGllbnRDb3VudCB7IDAgfTsKLSAgICBi
b29sIG1fcmVjZWl2ZWROZXR3b3JrTGlzdCB7IGZhbHNlIH07CisgICAgV2Vha0hhc2hTZXQ8T2Jz
ZXJ2ZXI+IG1fb2JzZXJ2ZXJzOwogICAgIGJvb2wgbV9lbmFibGVFbnVtZXJhdGluZ0FsbE5ldHdv
cmtJbnRlcmZhY2VzIHsgZmFsc2UgfTsKKyAgICBib29sIG1fZGlkUmVjZWl2ZU5ldHdvcmtMaXN0
IHsgZmFsc2UgfTsKKyAgICBWZWN0b3I8UlRDTmV0d29yaz4gbV9uZXR3b3JrTGlzdDsKKyAgICBS
VENOZXR3b3JrOjpJUEFkZHJlc3MgbV9pcHY0OworICAgIFJUQ05ldHdvcms6OklQQWRkcmVzcyBt
X2lwdjY7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA4ZDliNGE1Y2M1ZTYy
ZDY4YTAzYmI5NGNiNjE3MTA2YTIzMGYxMWVmLi5jOThkNDFkYzMzMjcwMWYxZWNjYTBkNDBlYTVj
YTcxNmVlYzQ0ZmFkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMDktMDEgIFlvdWVubiBG
YWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBsaWJ3ZWJydGMg
bmV0d29yayBtYW5hZ2VyIEdldE1kbnNSZXNwb25kZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyOTc1NworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogd2VicnRjL2RhdGFjaGFubmVsL2ZpbHRlci1pY2Ut
Y2FuZGlkYXRlLmh0bWw6CisgICAgICAgICogd2VicnRjL2ZpbHRlcmluZy1pY2UtY2FuZGlkYXRl
LWFmdGVyLXJlbG9hZC5odG1sOgorICAgICAgICBVcGRhdGUgdGVzdHMgZ2l2ZW4gbUROUyBJQ0Ug
Y2FuZGlkYXRlcyBhcmUgbm93IHNob3dpbmcgdXAgaW4gZGVzY3JpcHRpb25zLgorCiAyMDIxLTA4
LTMxICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBNaWdyYXRl
IHRvIGxhdGVzdCBsaWJ3ZWJydGMgQWRkSWNlQ2FuZGlkYXRlCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJydGMvZGF0YWNoYW5uZWwvZmlsdGVyLWljZS1jYW5kaWRhdGUuaHRtbCBiL0xheW91
dFRlc3RzL3dlYnJ0Yy9kYXRhY2hhbm5lbC9maWx0ZXItaWNlLWNhbmRpZGF0ZS5odG1sCmluZGV4
IGNjYzQ2OWExNzdlMDA5MmI2NzU3YjViYzRkMTc3NTNhYjFmYjk1M2IuLjc0ZTc4ZjQ5MzI1ODU5
ZmZiNTY4NDE2NTUxZDU0MWY4MDI3NmIzNjcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3dlYnJ0
Yy9kYXRhY2hhbm5lbC9maWx0ZXItaWNlLWNhbmRpZGF0ZS5odG1sCisrKyBiL0xheW91dFRlc3Rz
L3dlYnJ0Yy9kYXRhY2hhbm5lbC9maWx0ZXItaWNlLWNhbmRpZGF0ZS5odG1sCkBAIC04LDY4ICs4
LDkxIEBACiAgIDwvaGVhZD4KICAgPGJvZHk+CiAgICAgPHNjcmlwdD4KLXByb21pc2VfdGVzdCgo
dGVzdCkgPT4gewotICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7
Ci0gICAgICAgIHNldFRpbWVvdXQoKCkgPT4geyByZWplY3QoIlRlc3QgdGltZWQgb3V0Iik7IH0s
IDUwMDApOwotCi0gICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQotICAgICAgICAgICAgaW50
ZXJuYWxzLnNldElDRUNhbmRpZGF0ZUZpbHRlcmluZyh0cnVlKTsKLQotICAgICAgICB2YXIgY291
bnRlciA9IDA7Ci0gICAgICAgIHZhciBwYyA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOwotICAg
ICAgICBwYy5jcmVhdGVEYXRhQ2hhbm5lbCgnc2VuZERhdGFDaGFubmVsJyk7Ci0gICAgICAgIHBj
Lm9uaWNlY2FuZGlkYXRlID0gKGV2ZW50KSA9PiB7Ci0gICAgICAgICAgICBpZiAoZXZlbnQuY2Fu
ZGlkYXRlKSB7Ci0gICAgICAgICAgICAgICAgY291bnRlcisrOwotICAgICAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocGMubG9jYWxE
ZXNjcmlwdGlvbi5zZHAuaW5kZXhPZigiYT1jYW5kaWRhdGUiKSwgLTEpOwotICAgICAgICAgICAg
YXNzZXJ0X3RydWUocGMubG9jYWxEZXNjcmlwdGlvbi5zZHAuaW5kZXhPZigiYz1JTiBJUDQgMC4w
LjAuMFxyXG4iKSAhPSAtMSB8fCBwYy5sb2NhbERlc2NyaXB0aW9uLnNkcC5pbmRleE9mKCJjPUlO
IElQNiA6OlxyXG4iKSAhPSAtMSk7Ci0gICAgICAgICAgICBpZiAoY291bnRlciA9PT0gMCkgewot
ICAgICAgICAgICAgICAgIHBjLmNyZWF0ZU9mZmVyKCkudGhlbigob2ZmZXIpID0+IHsKLSAgICAg
ICAgICAgICAgICAgICAgYXNzZXJ0X3RydWUob2ZmZXIuc2RwLmluZGV4T2YoImM9SU4gSVA0IDAu
MC4wLjBcclxuIikgIT0gLTEgfHwgcGMubG9jYWxEZXNjcmlwdGlvbi5zZHAuaW5kZXhPZigiYz1J
TiBJUDYgOjpcclxuIikgIT0gLTEpOwotICAgICAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxz
KG9mZmVyLnNkcC5pbmRleE9mKCJhPWNhbmRpZGF0ZSIpLCAtMSk7Ci0gICAgICAgICAgICAgICAg
ICAgIHJlc29sdmUoKTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIH0gZWxzZQot
ICAgICAgICAgICAgICAgIHJlamVjdCgiTm8gY2FuZGlkYXRlIHNob3VsZCBiZSBmb3VuZCIpOwot
ICAgICAgICB9OwotICAgICAgICBwYy5jcmVhdGVPZmZlcigpLnRoZW4oKG9mZmVyKSA9PiB7Ci0g
ICAgICAgICAgICBhc3NlcnRfZXF1YWxzKG9mZmVyLnNkcC5pbmRleE9mKCJhPWNhbmRpZGF0ZSIp
LCAtMSk7Ci0gICAgICAgICAgICBwYy5zZXRMb2NhbERlc2NyaXB0aW9uKG9mZmVyKTsKLSAgICAg
ICAgfSk7CitmdW5jdGlvbiBlbnN1cmVDYW5kaWRhdGVzQXJlTUROUyhzZHApCit7CisgICAgYXNz
ZXJ0X3RydWUoc2RwLmluZGV4T2YoImM9SU4gSVA0IDAuMC4wLjBcclxuIikgIT0gLTEgfHwgc2Rw
LmluZGV4T2YoImM9SU4gSVA2IDo6XHJcbiIpICE9IC0xKTsKKyAgICBjb25zdCBjYW5kaWRhdGVz
ID0gc2RwLnNwbGl0KCdcclxuJykuZmlsdGVyKGxpbmUgPT4geworICAgICAgICByZXR1cm4gbGlu
ZS5pbmRleE9mKCdhPWNhbmRpZGF0ZScpICE9PSAtMTsKKyAgICB9KTsKKyAgICBmb3IgKGNvbnN0
IGNhbmRpZGF0ZSBvZiBjYW5kaWRhdGVzKQorICAgICAgICBhc3NlcnRfbm90X2VxdWFscyhjYW5k
aWRhdGUuaW5kZXhPZignLmxvY2FsJyksIC0xKTsKK30KKworZnVuY3Rpb24gZW5zdXJlQ2FuZGlk
YXRlc0FyZU5vdE1ETlMoc2RwKQoreworICAgIGNvbnN0IGNhbmRpZGF0ZXMgPSBzZHAuc3BsaXQo
J1xyXG4nKS5maWx0ZXIobGluZSA9PiB7CisgICAgICAgIHJldHVybiBsaW5lLmluZGV4T2YoJ2E9
Y2FuZGlkYXRlJykgIT09IC0xOwogICAgIH0pOworICAgIGZvciAoY29uc3QgY2FuZGlkYXRlIG9m
IGNhbmRpZGF0ZXMpCisgICAgICAgIGFzc2VydF9lcXVhbHMoY2FuZGlkYXRlLmluZGV4T2YoJy5s
b2NhbCcpLCAtMSk7Cit9CisKK3Byb21pc2VfdGVzdChhc3luYyAodGVzdCkgPT4geworICAgIGxl
dCByZXNvbHZlLCByZWplY3Q7CisgICAgY29uc3QgcHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXMs
IHJlaikgPT4geyByZXNvbHZlID0gcmVzOyByZWplY3QgPSByZWo7IH0pOworICAgIHNldFRpbWVv
dXQoKCkgPT4geyByZWplY3QoIlRlc3QgdGltZWQgb3V0Iik7IH0sIDUwMDApOworCisgICAgaWYg
KHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgIGludGVybmFscy5zZXRJQ0VDYW5kaWRhdGVGaWx0
ZXJpbmcodHJ1ZSk7CisKKyAgICBsZXQgY291bnRlciA9IDA7CisgICAgbGV0IHBjID0gbmV3IFJU
Q1BlZXJDb25uZWN0aW9uKCk7CisgICAgcGMuY3JlYXRlRGF0YUNoYW5uZWwoJ3NlbmREYXRhQ2hh
bm5lbCcpOworICAgIHBjLm9uaWNlY2FuZGlkYXRlID0gYXN5bmMgKGV2ZW50KSA9PiB7CisgICAg
ICAgIGlmIChldmVudC5jYW5kaWRhdGUpIHsKKyAgICAgICAgICAgIGFzc2VydF9ub3RfZXF1YWxz
KGV2ZW50LmNhbmRpZGF0ZS5jYW5kaWRhdGUuaW5kZXhPZignLmxvY2FsJyksIC0xKTsKKyAgICAg
ICAgICAgIGNvdW50ZXIrKzsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAg
ICBlbnN1cmVDYW5kaWRhdGVzQXJlTUROUyhwYy5sb2NhbERlc2NyaXB0aW9uLnNkcCk7CisgICAg
ICAgIGlmIChjb3VudGVyID09PSAwKSB7CisgICAgICAgICAgICBjb25zdCBvZmZlciA9IGF3YWl0
IHBjLmNyZWF0ZU9mZmVyKCk7CisgICAgICAgICAgICBhd2FpdCBwYy5zZXRMb2NhbERlc2NyaXB0
aW9uKG9mZmVyKTsKKyAgICAgICAgICAgIGVuc3VyZUNhbmRpZGF0ZXNBcmVNRE5TKHBjLmxvY2Fs
RGVzY3JpcHRpb24uc2RwKTsKKyAgICAgICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorICAgICAgICByZXNvbHZlKCk7CisgICAgfTsKKyAgICBjb25zdCBv
ZmZlciA9IGF3YWl0IHBjLmNyZWF0ZU9mZmVyKCk7CisgICAgYXNzZXJ0X2VxdWFscyhvZmZlci5z
ZHAuaW5kZXhPZigiYT1jYW5kaWRhdGUiKSwgLTEpOworICAgIGF3YWl0IHBjLnNldExvY2FsRGVz
Y3JpcHRpb24ob2ZmZXIpOworCisgICAgcmV0dXJuIHByb21pc2U7CiB9LCAiR2F0aGVyaW5nIElD
RSBjYW5kaWRhdGVzIGZyb20gYSBkYXRhIGNoYW5uZWwgcGVlciBjb25uZWN0aW9uIHdpdGggSUNF
IGNhbmRpZGF0ZSBmaWx0ZXJpbmcgb24iKTsKIAotcHJvbWlzZV90ZXN0KCh0ZXN0KSA9PiB7Ci0g
ICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKLSAgICAgICAgc2V0
VGltZW91dCgoKSA9PiB7IHJlamVjdCgiVGVzdCB0aW1lZCBvdXQiKTsgfSwgNTAwMCk7Citwcm9t
aXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKKyAgICBsZXQgcmVzb2x2ZSwgcmVqZWN0OworICAg
IGNvbnN0IHByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzLCByZWopID0+IHsgcmVzb2x2ZSA9IHJl
czsgcmVqZWN0ID0gcmVqOyB9KTsKKyAgICBzZXRUaW1lb3V0KCgpID0+IHsgcmVqZWN0KCJUZXN0
IHRpbWVkIG91dCIpOyB9LCA1MDAwKTsKIAotCWlmICh3aW5kb3cuaW50ZXJuYWxzKQotICAgICAg
ICAgICAgaW50ZXJuYWxzLnNldElDRUNhbmRpZGF0ZUZpbHRlcmluZyhmYWxzZSk7CisgICAgaWYg
KHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgIGludGVybmFscy5zZXRJQ0VDYW5kaWRhdGVGaWx0
ZXJpbmcoZmFsc2UpOworIAorICAgIGxldCBjb3VudGVyID0gMDsKKyAgICBsZXQgcGMgPSBuZXcg
UlRDUGVlckNvbm5lY3Rpb24oKTsKKyAgICBwYy5jcmVhdGVEYXRhQ2hhbm5lbCgnc2VuZERhdGFD
aGFubmVsJyk7CiAKLSAgICAgICAgdmFyIGNvdW50ZXIgPSAwOwotICAgICAgICB2YXIgcGMgPSBu
ZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsKLSAgICAgICAgcGMuY3JlYXRlRGF0YUNoYW5uZWwoJ3Nl
bmREYXRhQ2hhbm5lbCcpOwotICAgICAgICBwYy5vbmljZWNhbmRpZGF0ZSA9IChldmVudCkgPT4g
ewotICAgICAgICAgICAgaWYgKGV2ZW50LmNhbmRpZGF0ZSkgewotICAgICAgICAgICAgICAgIGNv
dW50ZXIrKzsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBhc3NlcnRfdHJ1ZShwYy5sb2NhbERlc2NyaXB0aW9uLnNkcC5pbmRleE9mKCJjPUlOIElQ
NCAwLjAuMC4wXHJcbiIpID09PSAtMSAmJiBwYy5sb2NhbERlc2NyaXB0aW9uLnNkcC5pbmRleE9m
KCJjPUlOIElQNiA6OlxyXG4iKSA9PT0gLTEpOwotICAgICAgICAgICAgYXNzZXJ0X2ZhbHNlKHBj
LmxvY2FsRGVzY3JpcHRpb24uc2RwLmluZGV4T2YoImE9Y2FuZGlkYXRlIikgPT09IC0xKTsKLSAg
ICAgICAgICAgIGlmIChjb3VudGVyICE9PSAwKSB7Ci0gICAgICAgICAgICAgICAgLy8gUmVkb2lu
ZyBhbiBvZmZlciBub3cgdGhhdCB3ZSBoYXZlIHNvbWUgY2FuZGlkYXRlcy4KLSAgICAgICAgICAg
ICAgICBwYy5jcmVhdGVPZmZlcigpLnRoZW4oKG9mZmVyKSA9PiB7Ci0gICAgICAgICAgICAgICAg
ICAgIGFzc2VydF90cnVlKG9mZmVyLnNkcC5pbmRleE9mKCJjPUlOIElQNCAwLjAuMC4wXHJcbiIp
ID09PSAtMSAmJiBwYy5sb2NhbERlc2NyaXB0aW9uLnNkcC5pbmRleE9mKCJjPUlOIElQNiA6Olxy
XG4iKSA9PT0gLTEpOwotICAgICAgICAgICAgICAgICAgICBhc3NlcnRfZmFsc2Uob2ZmZXIuc2Rw
LmluZGV4T2YoImE9Y2FuZGlkYXRlIikgPT09IC0xKTsKLSAgICAgICAgICAgICAgICAgICAgcmVz
b2x2ZSgpOwotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAg
ICAgICAgICAgcmVqZWN0KCJIb3N0IGNhbmRpZGF0ZXMgc2hvdWxkIGJlIGZvdW5kIik7Ci0gICAg
ICAgIH07Ci0gICAgICAgIHBjLmNyZWF0ZU9mZmVyKCkudGhlbigob2ZmZXIpID0+IHsgcGMuc2V0
TG9jYWxEZXNjcmlwdGlvbihvZmZlcik7IH0pOwotICAgIH0pOworICAgIHBjLm9uaWNlY2FuZGlk
YXRlID0gYXN5bmMgKGV2ZW50KSA9PiB7CisgICAgICAgIGlmIChldmVudC5jYW5kaWRhdGUpIHsK
KyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoZXZlbnQuY2FuZGlkYXRlLmNhbmRpZGF0ZS5pbmRl
eE9mKCcubG9jYWwnKSwgLTEpOworICAgICAgICAgICAgY291bnRlcisrOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisgICAgICAgIGVuc3VyZUNhbmRpZGF0ZXNBcmVOb3RNRE5TKHBj
LmxvY2FsRGVzY3JpcHRpb24uc2RwKTsKKyAgICAgICAgaWYgKGNvdW50ZXIgIT09IDApIHsKKyAg
ICAgICAgICAgIC8vIFJlZG9pbmcgYW4gb2ZmZXIgbm93IHRoYXQgd2UgaGF2ZSBzb21lIGNhbmRp
ZGF0ZXMuCisgICAgICAgICAgICBjb25zdCBvZmZlciA9IGF3YWl0IHBjLmNyZWF0ZU9mZmVyKCk7
CisgICAgICAgICAgICBhd2FpdCBwYy5zZXRMb2NhbERlc2NyaXB0aW9uKG9mZmVyKTsKKyAgICAg
ICAgICAgIGVuc3VyZUNhbmRpZGF0ZXNBcmVOb3RNRE5TKHBjLmxvY2FsRGVzY3JpcHRpb24uc2Rw
KTsKKyAgICAgICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBy
ZWplY3QoIkhvc3QgY2FuZGlkYXRlcyBzaG91bGQgYmUgZm91bmQiKTsKKyAgICB9OworICAgIGNv
bnN0IG9mZmVyID0gYXdhaXQgcGMuY3JlYXRlT2ZmZXIoKTsKKyAgICBhd2FpdCBwYy5zZXRMb2Nh
bERlc2NyaXB0aW9uKG9mZmVyKTsKKworICAgIHJldHVybiBwcm9taXNlOwogfSwgIkdhdGhlcmlu
ZyBJQ0UgY2FuZGlkYXRlcyBmcm9tIGEgZGF0YSBjaGFubmVsIHBlZXIgY29ubmVjdGlvbiB3aXRo
IElDRSBjYW5kaWRhdGUgZmlsdGVyaW5nIG9mZiIpOwogCiBwcm9taXNlX3Rlc3QoYXN5bmMgKHRl
c3QpID0+IHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYnJ0Yy9maWx0ZXJpbmctaWNlLWNh
bmRpZGF0ZS1hZnRlci1yZWxvYWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYnJ0Yy9maWx0ZXJpbmct
aWNlLWNhbmRpZGF0ZS1hZnRlci1yZWxvYWQuaHRtbAppbmRleCBjODc1NWY3MWYxOWYxYTMwM2My
M2IwYmFhZjE2NjNiZDY4YmQ1YjlkLi41MjVkZTg0ZjlkMzJiYjE0NjJkZTk3YzJmMjBlNTVmZmNj
MTVlNGIyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy93ZWJydGMvZmlsdGVyaW5nLWljZS1jYW5k
aWRhdGUtYWZ0ZXItcmVsb2FkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvd2VicnRjL2ZpbHRlcmlu
Zy1pY2UtY2FuZGlkYXRlLWFmdGVyLXJlbG9hZC5odG1sCkBAIC03LDI0ICs3LDI4IEBAIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikgewogICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogfQog
Ci1mdW5jdGlvbiBpc0ZpbHRlcmluZ0VuYWJsZWQoKQorYXN5bmMgZnVuY3Rpb24gaXNGaWx0ZXJp
bmdFbmFibGVkKCkKIHsKKyAgICBsZXQgcmVzb2x2ZSwgcmVqZWN0OworICAgIGNvbnN0IHByb21p
c2UgPSBuZXcgUHJvbWlzZSgocmVzLCByZWopID0+IHsgcmVzb2x2ZSA9IHJlczsgcmVqZWN0ID0g
cmVqOyB9KTsKKyAgICBzZXRUaW1lb3V0KCgpID0+IHsgcmVqZWN0KCJUZXN0IHRpbWVkIG91dCIp
OyB9LCA1MDAwKTsKKwogICAgIHZhciBwYyA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOwogICAg
IHBjLmNyZWF0ZURhdGFDaGFubmVsKCIiKTsKIAogICAgIHZhciBjYW5kaWRhdGVzID0gW107Ci0g
ICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKLSAgICAgICAgcGMu
b25pY2VjYW5kaWRhdGUgPSAoZXZlbnQpID0+IHsKLSAgICAgICAgICAgIGlmIChldmVudC5jYW5k
aWRhdGUgPT09IG51bGwpIHsKLSAgICAgICAgICAgICAgICByZXNvbHZlKCFjYW5kaWRhdGVzLmxl
bmd0aCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQorICAgIHBjLm9u
aWNlY2FuZGlkYXRlID0gKGV2ZW50KSA9PiB7CisgICAgICAgIGlmIChldmVudC5jYW5kaWRhdGUg
PT09IG51bGwpIHsKKyAgICAgICAgICAgIHJlc29sdmUoIWNhbmRpZGF0ZXMubGVuZ3RoKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAoZXZlbnQuY2FuZGlkYXRl
LmNhbmRpZGF0ZS5pbmRleE9mKCcubG9jYWwnKSA9PT0gLTEpCiAgICAgICAgICAgICBjYW5kaWRh
dGVzLnB1c2goZXZlbnQuY2FuZGlkYXRlLmNhbmRpZGF0ZSk7Ci0gICAgICAgIH07Ci0gICAgICAg
IHBjLmNyZWF0ZU9mZmVyKCkudGhlbigob2ZmZXIpID0+IHsKLSAgICAgICAgICAgIHBjLnNldExv
Y2FsRGVzY3JpcHRpb24ob2ZmZXIpOwotICAgICAgICB9KTsKLSAgICB9KTsKKyAgICB9OworCisg
ICAgY29uc3Qgb2ZmZXIgPSBhd2FpdCBwYy5jcmVhdGVPZmZlcigpOworICAgIGF3YWl0IHBjLnNl
dExvY2FsRGVzY3JpcHRpb24ob2ZmZXIpOworICAgIHJldHVybiBwcm9taXNlOwogfQogCiBmdW5j
dGlvbiBlbmRUZXN0KG1lc3NhZ2UpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>437046</attachid>
            <date>2021-09-01 11:31:55 -0700</date>
            <delta_ts>2021-09-01 13:17:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229757-20210901203153.patch</filename>
            <type>text/plain</type>
            <size>84842</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxNzkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWIwNDFiMmIwMGZmNmU4
Y2YwNTI3MjZmMWQ1NmUzMzQwNGM1NjAwNy4uNThjOWY3ZDhmZTMwZDZlNWYwZTY1OTkyNzFkNTgy
NDJhZmFlYmRlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDIxLTA5LTAxICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgbGlid2Vi
cnRjIG5ldHdvcmsgbWFuYWdlciBHZXRNZG5zUmVzcG9uZGVyCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjk3NTcKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgbGlid2VicnRjIG1ETlMgc3VwcG9ydCBp
bnN0ZWFkIG9mIGFwcGx5aW5nIGl0IHdpdGhpbiBQZWVyQ29ubmVjdGlvbkJhY2tlbmQuCisgICAg
ICAgIFRoaXMgYWxsb3dzIGEgYmV0dGVyIGludGVncmF0aW9uIGFuZCBpcyBtb3JlIGNvbnNpc3Rl
bnQgd2l0aCB0aGUgQVBJIGFuZCBvdGhlciBicm93c2Vycy4KKyAgICAgICAgRm9yIGluc3RhbmNl
IG1ETlMgY2FuZGlkYXRlcyBub3cgc2hvdyB1cCBpbiBsb2NhbCBkZXNjcmlwdGlvbnMuCisgICAg
ICAgIFdlIGludHJvZHVjZSBSVENOZXR3b3JrTWFuYWdlciB3aGljaCBpcyByZXNwb25zaWJsZSBm
b3IgV2ViUlRDIG5ldHdvcmsuCisgICAgICAgIFJUQ05ldHdvcmtNYW5hZ2VyIGlzIHJlc3BvbnNp
YmxlIG9mIGFsbCBwZWVyIGNvbm5lY3Rpb25zIG9mIGEgZG9jdW1lbnQuIEl0IGNhbiB0aHVzIHJl
dXNlIG1ETlMgbmFtZXMgZnJvbSBvbmUgY29ubmVjdGlvbiB0byBhbm90aGVyLgorICAgICAgICBX
aGVuIGRvY3VtZW50IGdvZXMgYXdheSwgUlRDTmV0d29ya01hbmFnZXIgbmVlZHMgdG8gdW5yZWdp
c3RlciBhbGwgbUROUyBuYW1lcy4KKyAgICAgICAgVXBkYXRlIGV4aXN0aW5nIFNEUCBhbmQgSUNF
IGNhbmRpZGF0ZSBmaWx0ZXJpbmcgY29kZSBieSBvbmx5IGtlZXBpbmcgZGVidWcgYXNzZXJ0IHRo
YXQgd2UgZG8gbm90IGxlYWsgcHJpdmF0ZSBJUCBhZGRyZXNzZXMgaW4gY2FzZSBJQ0UgZmlsdGVy
aW5nIGlzIG9uLgorICAgICAgICBDb3ZlcmVkIGJ5IHVwZGF0ZWQgYW5kIGV4aXN0aW5nIHRlc3Rz
LgorCisgICAgICAgICogSGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3Ry
ZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29u
bmVjdGlvbkJhY2tlbmQ6OmNyZWF0ZU9mZmVyU3VjY2VlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6
OlBlZXJDb25uZWN0aW9uQmFja2VuZDo6ZW5hYmxlSUNFQ2FuZGlkYXRlRmlsdGVyaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uQmFja2VuZDo6ZGlzYWJsZUlDRUNhbmRpZGF0
ZUZpbHRlcmluZyk6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OnZh
bGlkYXRlU0RQIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uQmFja2Vu
ZDo6bmV3SUNFQ2FuZGlkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uQmFj
a2VuZDo6ZG9uZUdhdGhlcmluZ0NhbmRpZGF0ZXMpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
dHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0NvbnRyb2xsZXI6
OmFkZCk6CisgICAgICAgIChXZWJDb3JlOjpSVENDb250cm9sbGVyOjpkaXNhYmxlSUNFQ2FuZGlk
YXRlRmlsdGVyaW5nRm9yQWxsT3JpZ2lucyk6CisgICAgICAgIChXZWJDb3JlOjpSVENDb250cm9s
bGVyOjpkaXNhYmxlSUNFQ2FuZGlkYXRlRmlsdGVyaW5nRm9yRG9jdW1lbnQpOgorICAgICAgICAo
V2ViQ29yZTo6UlRDQ29udHJvbGxlcjo6ZW5hYmxlSUNFQ2FuZGlkYXRlRmlsdGVyaW5nKToKKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ05ldHdvcmtNYW5hZ2VyLmg6IEFkZGVkLgor
ICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5k
cG9pbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6c2V0
Q29uZmlndXJhdGlvbik6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMv
TGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okxp
YldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6Y3VycmVudExvY2FsRGVzY3JpcHRpb24gY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpw
ZW5kaW5nTG9jYWxEZXNjcmlwdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJS
VENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmxvY2FsRGVzY3JpcHRpb24gY29uc3QpOgorICAgICAg
ICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBkb20vRG9j
dW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OndpbGxCZVJlbW92ZWRGcm9t
RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnN1c3BlbmQpOgorICAgICAgICAq
IGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJ0Y05ldHdvcmtN
YW5hZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzZXRSVENOZXR3b3JrTWFuYWdl
cik6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vTUROU1JlZ2lzdGVyRXJyb3IuaDog
QWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJU
Q1Byb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ1Byb3ZpZGVyOjpjcmVh
dGVQZWVyQ29ubmVjdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2Vi
cnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmg6CisKIDIwMjEtMDgtMzEgIFlvdWVubiBGYWJsZXQgIDx5
b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBzdXBwb3J0IGZvciBSVENTY3RwVHJhbnNw
b3J0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCmluZGV4IDYxZjdhZDFjYTg4N2Q1YmZkMjEyZjQzOTNkMGM1MmFlYWFjMGI1N2Iu
LmU0N2ZiZDg2N2JmZjk0YjI0NGM3YTU5MWU0YzEyZWViNmZjMTdhYzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNTYgQEAKKzIwMjEtMDktMDEgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29t
PgorCisgICAgICAgIEltcGxlbWVudCBsaWJ3ZWJydGMgbmV0d29yayBtYW5hZ2VyIEdldE1kbnNS
ZXNwb25kZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyOTc1NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEltcGxlbWVudCBSVENOZXR3b3JrTWFuYWdlciBBUEkgaW4gTGliV2ViUlRDTmV0d29ya01hbmFn
ZXIgdG8gaGFuZGxlIHBlci1kb2N1bWVudCBtRE5TIHJlZ2lzdHJhdGlvbnMuCisgICAgICAgIE1v
dmUgcGFydCBvZiBXZWJSVENNb25pdG9yIHRvIExpYldlYlJUQ05ldHdvcmtNYW5hZ2VyLgorICAg
ICAgICBMaWJXZWJSVENOZXR3b3JrTWFuYWdlciBpcyBhIFdlYlJUQ01vbml0b3Igb2JzZXJ2ZXIg
dG8gZ2V0IHRoZSBsaXN0IG9mIG5ldHdvcmtzLgorICAgICAgICBTaW5jZSBsaWJ3ZWJydGMgaXMg
bm93IGRvaW5nIHRoZSBtRE5TIHJlZ2lzdHJhdGlvbiwgd2UgbmVlZCB0byByZXR1cm4gYSBtRE5T
IG5hbWUgZXZlbiBpZiByZWdpc3RyYXRpb24gZmFpbGVkLgorICAgICAgICBXZSB1cGRhdGUgV2Vi
TUROU1JlZ2lzdGVyIGFuZCBOZXR3b3JrTUROU1JlZ2lzdGVyIGFjY29yZGluZ2x5LgorCisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtNRE5TUmVnaXN0ZXIuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpyZWdpc3Rlck1ETlNOYW1lQ2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrTUROU1JlZ2lzdGVyOjpyZWdpc3Rlck1ETlNOYW1lKToKKyAgICAgICAgKiBTb3Vy
Y2VzLnR4dDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ05ldHdvcmtNYW5hZ2Vy
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ05ldHdvcmtNYW5hZ2VyOjpn
ZXRPckNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ05ldHdvcmtNYW5hZ2VyOjpM
aWJXZWJSVENOZXR3b3JrTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ05ldHdv
cmtNYW5hZ2VyOjp+TGliV2ViUlRDTmV0d29ya01hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpM
aWJXZWJSVENOZXR3b3JrTWFuYWdlcjo6dW5yZWdpc3Rlck1ETlNOYW1lcyk6CisgICAgICAgIChX
ZWJLaXQ6OkxpYldlYlJUQ05ldHdvcmtNYW5hZ2VyOjpTdGFydFVwZGF0aW5nKToKKyAgICAgICAg
KFdlYktpdDo6TGliV2ViUlRDTmV0d29ya01hbmFnZXI6OlN0b3BVcGRhdGluZyk6CisgICAgICAg
IChXZWJLaXQ6OkxpYldlYlJUQ05ldHdvcmtNYW5hZ2VyOjpHZXRNZG5zUmVzcG9uZGVyIGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDTmV0d29ya01hbmFnZXI6Om5ldHdvcmtzQ2hh
bmdlZCk6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ05ldHdvcmtNYW5hZ2VyOjpuZXR3b3Jr
UHJvY2Vzc0NyYXNoZWQpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENOZXR3b3JrTWFuYWdl
cjo6Q3JlYXRlTmFtZUZvckFkZHJlc3MpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENOZXR3
b3JrTWFuYWdlcjo6UmVtb3ZlTmFtZUZvckFkZHJlc3MpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
TmV0d29yay93ZWJydGMvTGliV2ViUlRDTmV0d29ya01hbmFnZXIuaDogQWRkZWQuCisgICAgICAg
ICogV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkxpYldlYlJUQ1Byb3ZpZGVyOjpjcmVhdGVQZWVyQ29ubmVjdGlvbik6Cisg
ICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ1Byb3ZpZGVyOjpkaXNhYmxlTm9uTG9jYWxob3N0Q29u
bmVjdGlvbnMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRD
UHJvdmlkZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1dlYk1ETlNS
ZWdpc3Rlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYk1ETlNSZWdpc3Rlcjo6ZmluaXNoZWRS
ZWdpc3RlcmluZ01ETlNOYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViTUROU1JlZ2lzdGVyOjpy
ZWdpc3Rlck1ETlNOYW1lKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1dl
Yk1ETlNSZWdpc3Rlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvV2Vi
TUROU1JlZ2lzdGVyLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay93
ZWJydGMvV2ViUlRDTW9uaXRvci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJUQ01vbml0b3I6
OnN0YXJ0VXBkYXRpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJSVENNb25pdG9yOjpzdG9wVXBk
YXRpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJSVENNb25pdG9yOjpuZXR3b3Jrc0NoYW5nZWQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJSVENNb25pdG9yOjpuZXR3b3JrUHJvY2Vzc0NyYXNoZWQp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvV2ViUlRDTW9uaXRvci5oOgor
ICAgICAgICAoV2ViS2l0OjpXZWJSVENNb25pdG9yOjphZGRPYnNlcnZlcik6CisgICAgICAgIChX
ZWJLaXQ6OldlYlJUQ01vbml0b3I6OnJlbW92ZU9ic2VydmVyKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUlRDTW9uaXRvcjo6ZGlkUmVjZWl2ZU5ldHdvcmtMaXN0IGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViUlRDTW9uaXRvcjo6bmV0d29ya0xpc3QgY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpXZWJSVENNb25pdG9yOjppcHY0IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUlRDTW9u
aXRvcjo6aXB2NiBjb25zdCk6CisKIDIwMjEtMDgtMjYgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBw
bGUuY29tPgogCiAgICAgICAgIEN1dCBkb3duIG9uIHVzZSBvZiBDRkdldFR5cGVJRCwgdXNpbmcg
ZHluYW1pY19jZl9jYXN0IGluc3RlYWQ7IHJlbGF0ZWQgc3RyZWFtbGluaW5nCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5j
bWFrZQppbmRleCA3NmNlMGM2NjFmZWU4MzBkMTc2ZTM2MWY1Nzk4NzM1YzdhZTFlMGNlLi5jZWI5
M2ZlOGQwMTgwYzdjZWM2ZjIxMTc3YzgwMGE3MTkxNGMyMDQwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UK
QEAgLTExNSwxMSArMTE1LDE0IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURF
UlMKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmgKICAgICBNb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5oCiAgICAgTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZVNvdXJjZS5oCisgICAgTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENOZXR3b3JrTWFuYWdlci5oCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9TVFVO
TWVzc2FnZVBhcnNpbmcuaAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhQ2xpZW50
LmgKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYUNvbnRyb2xsZXIuaAogICAgIE1v
ZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5oCiAKKyAgICBNb2R1bGVzL21lZGlh
c3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENVdGlscy5oCisKICAgICBNb2R1bGVzL21vZGVsLWVs
ZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oCiAKICAgICBNb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90
aWZpY2F0aW9uLmgKQEAgLTE0MTIsNiArMTQxNSw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJB
TUVXT1JLX0hFQURFUlMKIAogICAgIHBsYXRmb3JtL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2Uu
aAogICAgIHBsYXRmb3JtL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmgKKyAgICBw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9NRE5TUmVnaXN0ZXJFcnJvci5oCiAgICAgcGxhdGZvcm0vbWVk
aWFzdHJlYW0vTWVkaWFDb25zdHJhaW50cy5oCiAgICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1Qcml2YXRlLmgKICAgICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVJl
cXVlc3QuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Q
ZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwCmluZGV4IDc5OWUxZDNkYWNjNDgxMDcyYzFi
NTdiYWQxZTk1ZTA2ZDBhMDRjODEuLmIzYjkzYmNjMzZkZjdkZDRiNTVjNWQ0YzE4MWI0MTUxODQ1
MThhMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVl
ckNvbm5lY3Rpb25CYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAKQEAgLTEwMiw3ICsxMDIsOCBAQCB2b2lk
IFBlZXJDb25uZWN0aW9uQmFja2VuZDo6Y3JlYXRlT2ZmZXJTdWNjZWVkZWQoU3RyaW5nJiYgc2Rw
KQogICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgIkNyZWF0ZSBvZmZlciBzdWNjZWVkZWQ6
XG4iLCBzZHApOwogCiAgICAgQVNTRVJUKG1fb2ZmZXJBbnN3ZXJQcm9taXNlKTsKLSAgICBtX3Bl
ZXJDb25uZWN0aW9uLmRvVGFzayhbdGhpcywgcHJvbWlzZSA9IFdURk1vdmUobV9vZmZlckFuc3dl
clByb21pc2UpLCBzZHAgPSBmaWx0ZXJTRFAoV1RGTW92ZShzZHApKV0oKSBtdXRhYmxlIHsKKyAg
ICB2YWxpZGF0ZVNEUChzZHApOworICAgIG1fcGVlckNvbm5lY3Rpb24uZG9UYXNrKFt0aGlzLCBw
cm9taXNlID0gV1RGTW92ZShtX29mZmVyQW5zd2VyUHJvbWlzZSksIHNkcCA9IFdURk1vdmUoc2Rw
KV0oKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKG1fcGVlckNvbm5lY3Rpb24uaXNDbG9zZWQoKSkK
ICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMzc2LDgxICszNzcsMTkgQEAgdm9pZCBQZWVyQ29u
bmVjdGlvbkJhY2tlbmQ6OmVuYWJsZUlDRUNhbmRpZGF0ZUZpbHRlcmluZygpCiB2b2lkIFBlZXJD
b25uZWN0aW9uQmFja2VuZDo6ZGlzYWJsZUlDRUNhbmRpZGF0ZUZpbHRlcmluZygpCiB7CiAgICAg
bV9zaG91bGRGaWx0ZXJJQ0VDYW5kaWRhdGVzID0gZmFsc2U7Ci0gICAgZm9yIChhdXRvJiBwZW5k
aW5nSUNFQ2FuZGlkYXRlIDogbV9wZW5kaW5nSUNFQ2FuZGlkYXRlcykKLSAgICAgICAgZmlyZUlD
RUNhbmRpZGF0ZUV2ZW50KFJUQ0ljZUNhbmRpZGF0ZTo6Y3JlYXRlKFdURk1vdmUocGVuZGluZ0lD
RUNhbmRpZGF0ZS5zZHApLCBXVEZNb3ZlKHBlbmRpbmdJQ0VDYW5kaWRhdGUubWlkKSwgcGVuZGlu
Z0lDRUNhbmRpZGF0ZS5zZHBNTGluZUluZGV4KSwgV1RGTW92ZShwZW5kaW5nSUNFQ2FuZGlkYXRl
LnNlcnZlclVSTCkpOwotICAgIG1fcGVuZGluZ0lDRUNhbmRpZGF0ZXMuY2xlYXIoKTsKLX0KLQot
c3RhdGljIFN0cmluZyBmaWx0ZXJJQ0VDYW5kaWRhdGUoU3RyaW5nJiYgc2RwKQotewotICAgIEFT
U0VSVCghc2RwLmNvbnRhaW5zKCIgaG9zdCAiKSk7Ci0KLSAgICBpZiAoIXNkcC5jb250YWlucygi
IHJhZGRyICIpKQotICAgICAgICByZXR1cm4gV1RGTW92ZShzZHApOwotCi0gICAgYm9vbCBza2lw
TmV4dEl0ZW0gPSBmYWxzZTsKLSAgICBib29sIGlzRmlyc3QgPSB0cnVlOwotICAgIFN0cmluZ0J1
aWxkZXIgZmlsdGVyZWRTRFA7Ci0gICAgc2RwLnNwbGl0KCcgJywgWyZdKFN0cmluZ1ZpZXcgaXRl
bSkgewotICAgICAgICBpZiAoc2tpcE5leHRJdGVtKSB7Ci0gICAgICAgICAgICBza2lwTmV4dEl0
ZW0gPSBmYWxzZTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBpZiAo
aXRlbSA9PSAicmFkZHIiKSB7Ci0gICAgICAgICAgICBmaWx0ZXJlZFNEUC5hcHBlbmQoIiByYWRk
ciAwLjAuMC4wIik7Ci0gICAgICAgICAgICBza2lwTmV4dEl0ZW0gPSB0cnVlOwotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGlmIChpdGVtID09ICJycG9ydCIpIHsKLSAg
ICAgICAgICAgIGZpbHRlcmVkU0RQLmFwcGVuZCgiIHJwb3J0IDAiKTsKLSAgICAgICAgICAgIHNr
aXBOZXh0SXRlbSA9IHRydWU7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAg
ICAgaWYgKGlzRmlyc3QpCi0gICAgICAgICAgICBpc0ZpcnN0ID0gZmFsc2U7Ci0gICAgICAgIGVs
c2UKLSAgICAgICAgICAgIGZpbHRlcmVkU0RQLmFwcGVuZCgnICcpOwotICAgICAgICBmaWx0ZXJl
ZFNEUC5hcHBlbmQoaXRlbSk7Ci0gICAgfSk7Ci0gICAgcmV0dXJuIGZpbHRlcmVkU0RQLnRvU3Ry
aW5nKCk7CiB9CiAKLVN0cmluZyBQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmZpbHRlclNEUChTdHJp
bmcmJiBzZHApIGNvbnN0Cit2b2lkIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6dmFsaWRhdGVTRFAo
Y29uc3QgU3RyaW5nJiBzZHApIGNvbnN0CiB7CisjaWZuZGVmIE5ERUJVRwogICAgIGlmICghbV9z
aG91bGRGaWx0ZXJJQ0VDYW5kaWRhdGVzKQotICAgICAgICByZXR1cm4gV1RGTW92ZShzZHApOwot
Ci0gICAgU3RyaW5nQnVpbGRlciBmaWx0ZXJlZFNEUDsKLSAgICBzZHAuc3BsaXQoJ1xuJywgW3Ro
aXMsICZmaWx0ZXJlZFNEUF0oU3RyaW5nVmlldyBsaW5lKSB7Ci0gICAgICAgIGlmIChsaW5lLnN0
YXJ0c1dpdGgoImM9SU4gSVA0IikpIHsKLSAgICAgICAgICAgIGZpbHRlcmVkU0RQLmFwcGVuZCgi
Yz1JTiBJUDQgMC4wLjAuMFxyXG4iKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQot
ICAgICAgICBpZiAobGluZS5zdGFydHNXaXRoKCJjPUlOIElQNiIpKSB7Ci0gICAgICAgICAgICBm
aWx0ZXJlZFNEUC5hcHBlbmQoImM9SU4gSVA2IDo6XHJcbiIpOwotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICB9Ci0gICAgICAgIGlmICghbGluZS5zdGFydHNXaXRoKCJhPWNhbmRpZGF0ZSIp
KSB7Ci0gICAgICAgICAgICBmaWx0ZXJlZFNEUC5hcHBlbmQobGluZSk7Ci0gICAgICAgICAgICBm
aWx0ZXJlZFNEUC5hcHBlbmQoJ1xuJyk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0K
LSAgICAgICAgaWYgKGxpbmUuZmluZCgiIGhvc3QgIiwgMTEpID09IG5vdEZvdW5kKSB7Ci0gICAg
ICAgICAgICBmaWx0ZXJlZFNEUC5hcHBlbmQoZmlsdGVySUNFQ2FuZGlkYXRlKGxpbmUudG9TdHJp
bmcoKSkpOwotICAgICAgICAgICAgZmlsdGVyZWRTRFAuYXBwZW5kKCdcbicpOwotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgYXV0byBpcEFkZHJlc3MgPSBleHRyYWN0
SVBBZGRyZXNzKGxpbmUpOwotICAgICAgICBhdXRvIG1kbnNOYW1lID0gbV9pcEFkZHJlc3NUb01E
TlNOYW1lTWFwLmdldChpcEFkZHJlc3MpOwotICAgICAgICBpZiAobWRuc05hbWUuaXNFbXB0eSgp
KQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBhdXRvIHNkcCA9IGxpbmUudG9TdHJpbmco
KTsKLSAgICAgICAgc2RwLnJlcGxhY2UoaXBBZGRyZXNzLCBtZG5zTmFtZSk7Ci0gICAgICAgIGZp
bHRlcmVkU0RQLmFwcGVuZChzZHApOwotICAgICAgICBmaWx0ZXJlZFNEUC5hcHBlbmQoJ1xuJyk7
CisgICAgICAgIHJldHVybjsKKyAgICBzZHAuc3BsaXQoJ1xuJywgW10oYXV0byBsaW5lKSB7Cisg
ICAgICAgIEFTU0VSVCghbGluZS5zdGFydHNXaXRoKCJhPWNhbmRpZGF0ZSIpIHx8IGxpbmUuY29u
dGFpbnMoIi5sb2NhbCIpKTsKICAgICB9KTsKLSAgICByZXR1cm4gZmlsdGVyZWRTRFAudG9TdHJp
bmcoKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHNkcCk7CisjZW5kaWYKIH0KIAogdm9pZCBQ
ZWVyQ29ubmVjdGlvbkJhY2tlbmQ6Om5ld0lDRUNhbmRpZGF0ZShTdHJpbmcmJiBzZHAsIFN0cmlu
ZyYmIG1pZCwgdW5zaWduZWQgc2hvcnQgc2RwTUxpbmVJbmRleCwgU3RyaW5nJiYgc2VydmVyVVJM
KQpAQCAtNDYwLDIyICszOTksOCBAQCB2b2lkIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6bmV3SUNF
Q2FuZGlkYXRlKFN0cmluZyYmIHNkcCwgU3RyaW5nJiYgbWlkLCB1bnNpZ25lZAogICAgICAgICBB
TFdBWVNfTE9HKGxvZ1NpdGVJZGVudGlmaWVyLCAiR2F0aGVyZWQgaWNlIGNhbmRpZGF0ZToiLCBz
ZHApOwogICAgICAgICBtX2ZpbmlzaGVkR2F0aGVyaW5nQ2FuZGlkYXRlcyA9IGZhbHNlOwogCi0g
ICAgICAgIGlmICghbV9zaG91bGRGaWx0ZXJJQ0VDYW5kaWRhdGVzKSB7Ci0gICAgICAgICAgICBm
aXJlSUNFQ2FuZGlkYXRlRXZlbnQoUlRDSWNlQ2FuZGlkYXRlOjpjcmVhdGUoV1RGTW92ZShzZHAp
LCBXVEZNb3ZlKG1pZCksIHNkcE1MaW5lSW5kZXgpLCBXVEZNb3ZlKHNlcnZlclVSTCkpOwotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGlmIChzZHAuZmluZCgiIGhvc3Qg
IiwgMCkgIT0gbm90Rm91bmQpIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBtaWdodCBuZWVk
IHRvIGNsZWFyIGFsbCBwZW5kaW5nIGNhbmRpZGF0ZXMgd2hlbiBzZXR0aW5nIGFnYWluIGxvY2Fs
IGRlc2NyaXB0aW9uLgotICAgICAgICAgICAgbV9wZW5kaW5nSUNFQ2FuZGlkYXRlcy5hcHBlbmQo
UGVuZGluZ0lDRUNhbmRpZGF0ZSB7IFN0cmluZyB7IHNkcCB9LCBXVEZNb3ZlKG1pZCksIHNkcE1M
aW5lSW5kZXgsIFdURk1vdmUoc2VydmVyVVJMKSB9KTsKLSAgICAgICAgICAgIGlmIChSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYlJUQ01ETlNJQ0VDYW5kaWRhdGVz
RW5hYmxlZCgpKSB7Ci0gICAgICAgICAgICAgICAgYXV0byBpcEFkZHJlc3MgPSBleHRyYWN0SVBB
ZGRyZXNzKHNkcCk7Ci0gICAgICAgICAgICAgICAgLy8gV2UgcmVzdHJpY3QgdG8gSVB2NCBjYW5k
aWRhdGVzIGZvciBub3cuCi0gICAgICAgICAgICAgICAgaWYgKGlwQWRkcmVzcy5jb250YWlucygn
LicpKQotICAgICAgICAgICAgICAgICAgICByZWdpc3Rlck1ETlNOYW1lKGlwQWRkcmVzcyk7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgZmly
ZUlDRUNhbmRpZGF0ZUV2ZW50KFJUQ0ljZUNhbmRpZGF0ZTo6Y3JlYXRlKGZpbHRlcklDRUNhbmRp
ZGF0ZShXVEZNb3ZlKHNkcCkpLCBXVEZNb3ZlKG1pZCksIHNkcE1MaW5lSW5kZXgpLCBXVEZNb3Zl
KHNlcnZlclVSTCkpOworICAgICAgICBBU1NFUlQoIW1fc2hvdWxkRmlsdGVySUNFQ2FuZGlkYXRl
cyB8fCBzZHAuY29udGFpbnMoIi5sb2NhbCIpKTsKKyAgICAgICAgZmlyZUlDRUNhbmRpZGF0ZUV2
ZW50KFJUQ0ljZUNhbmRpZGF0ZTo6Y3JlYXRlKFdURk1vdmUoc2RwKSwgV1RGTW92ZShtaWQpLCBz
ZHBNTGluZUluZGV4KSwgV1RGTW92ZShzZXJ2ZXJVUkwpKTsKICAgICB9KTsKIH0KIApAQCAtNDg1
LDEyICs0MTAsOCBAQCB2b2lkIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6ZG9uZUdhdGhlcmluZ0Nh
bmRpZGF0ZXMoKQogICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgIkZpbmlzaGVkIGljZSBj
YW5kaWRhdGUgZ2F0aGVyaW5nIik7CiAgICAgbV9maW5pc2hlZEdhdGhlcmluZ0NhbmRpZGF0ZXMg
PSB0cnVlOwogCi0gICAgaWYgKG1fd2FpdGluZ0Zvck1ETlNSZWdpc3RyYXRpb24pCi0gICAgICAg
IHJldHVybjsKLQogICAgIG1fcGVlckNvbm5lY3Rpb24uZGlzcGF0Y2hFdmVudFdoZW5GZWFzaWJs
ZShSVENQZWVyQ29ubmVjdGlvbkljZUV2ZW50OjpjcmVhdGUoRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8s
IEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vLCBudWxscHRyLCB7IH0pKTsKICAgICBtX3BlZXJDb25u
ZWN0aW9uLnVwZGF0ZUljZUdhdGhlcmluZ1N0YXRlKFJUQ0ljZUdhdGhlcmluZ1N0YXRlOjpDb21w
bGV0ZSk7Ci0gICAgbV9wZW5kaW5nSUNFQ2FuZGlkYXRlcy5jbGVhcigpOwogfQogCiB2b2lkIFBl
ZXJDb25uZWN0aW9uQmFja2VuZDo6ZW5kT2ZJY2VDYW5kaWRhdGVzKERPTVByb21pc2VEZWZlcnJl
ZDx2b2lkPiYmIHByb21pc2UpCkBAIC00OTgsNDUgKzQxOSw2IEBAIHZvaWQgUGVlckNvbm5lY3Rp
b25CYWNrZW5kOjplbmRPZkljZUNhbmRpZGF0ZXMoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYg
cHJvbWlzCiAgICAgcHJvbWlzZS5yZXNvbHZlKCk7CiB9CiAKLXZvaWQgUGVlckNvbm5lY3Rpb25C
YWNrZW5kOjpyZWdpc3Rlck1ETlNOYW1lKGNvbnN0IFN0cmluZyYgaXBBZGRyZXNzKQotewotICAg
ICsrbV93YWl0aW5nRm9yTUROU1JlZ2lzdHJhdGlvbjsKLSAgICBhdXRvJiBkb2N1bWVudCA9IGRv
d25jYXN0PERvY3VtZW50PigqbV9wZWVyQ29ubmVjdGlvbi5zY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkpOwotICAgIGF1dG8mIHByb3ZpZGVyID0gZG9jdW1lbnQucGFnZSgpLT5saWJXZWJSVENQcm92
aWRlcigpOwotICAgIHByb3ZpZGVyLnJlZ2lzdGVyTUROU05hbWUoZG9jdW1lbnQuaWRlbnRpZmll
cigpLCBpcEFkZHJlc3MsIFtwZWVyQ29ubmVjdGlvbiA9IG1ha2VSZWYobV9wZWVyQ29ubmVjdGlv
biksIHRoaXMsIGlwQWRkcmVzc10gKExpYldlYlJUQ1Byb3ZpZGVyOjpNRE5TTmFtZU9yRXJyb3Im
JiByZXN1bHQpIHsKLSAgICAgICAgaWYgKHBlZXJDb25uZWN0aW9uLT5pc1N0b3BwZWQoKSkKLSAg
ICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAtLW1fd2FpdGluZ0Zvck1ETlNSZWdpc3RyYXRp
b247Ci0gICAgICAgIGlmICghcmVzdWx0Lmhhc192YWx1ZSgpKSB7Ci0gICAgICAgICAgICBtX3Bl
ZXJDb25uZWN0aW9uLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+YWRkQ29uc29sZU1lc3NhZ2Uo
TWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgbWFrZVN0cmluZygiTURO
UyByZWdpc3RyYXRpb24gb2YgYSBob3N0IGNhbmRpZGF0ZSBmYWlsZWQgd2l0aCBlcnJvciAiLCAo
dW5zaWduZWQpcmVzdWx0LmVycm9yKCkpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
fQotCi0gICAgICAgIHRoaXMtPmZpbmlzaGVkUmVnaXN0ZXJpbmdNRE5TTmFtZShpcEFkZHJlc3Ms
IHJlc3VsdC52YWx1ZSgpKTsKLSAgICB9KTsKLX0KLQotdm9pZCBQZWVyQ29ubmVjdGlvbkJhY2tl
bmQ6OmZpbmlzaGVkUmVnaXN0ZXJpbmdNRE5TTmFtZShjb25zdCBTdHJpbmcmIGlwQWRkcmVzcywg
Y29uc3QgU3RyaW5nJiBuYW1lKQotewotICAgIG1faXBBZGRyZXNzVG9NRE5TTmFtZU1hcC5hZGQo
aXBBZGRyZXNzLCBuYW1lKTsKLSAgICBWZWN0b3I8UGVuZGluZ0lDRUNhbmRpZGF0ZSo+IGNhbmRp
ZGF0ZXM7Ci0gICAgZm9yIChhdXRvJiBjYW5kaWRhdGUgOiBtX3BlbmRpbmdJQ0VDYW5kaWRhdGVz
KSB7Ci0gICAgICAgIGlmIChjYW5kaWRhdGUuc2RwLmZpbmQoaXBBZGRyZXNzKSAhPSBub3RGb3Vu
ZCkgewotICAgICAgICAgICAgYXV0byBzZHAgPSBjYW5kaWRhdGUuc2RwOwotICAgICAgICAgICAg
c2RwLnJlcGxhY2UoaXBBZGRyZXNzLCBuYW1lKTsKLSAgICAgICAgICAgIGZpcmVJQ0VDYW5kaWRh
dGVFdmVudChSVENJY2VDYW5kaWRhdGU6OmNyZWF0ZShXVEZNb3ZlKHNkcCksIFdURk1vdmUoY2Fu
ZGlkYXRlLm1pZCksIGNhbmRpZGF0ZS5zZHBNTGluZUluZGV4KSwgV1RGTW92ZShjYW5kaWRhdGUu
c2VydmVyVVJMKSk7Ci0gICAgICAgICAgICBjYW5kaWRhdGVzLmFwcGVuZCgmY2FuZGlkYXRlKTsK
LSAgICAgICAgfQotICAgIH0KLSAgICBtX3BlbmRpbmdJQ0VDYW5kaWRhdGVzLnJlbW92ZUFsbE1h
dGNoaW5nKFsmXSAoY29uc3QgYXV0byYgY2FuZGlkYXRlKSB7Ci0gICAgICAgIHJldHVybiBjYW5k
aWRhdGVzLmNvbnRhaW5zKCZjYW5kaWRhdGUpOwotICAgIH0pOwotCi0gICAgaWYgKCFtX3dhaXRp
bmdGb3JNRE5TUmVnaXN0cmF0aW9uICYmIG1fZmluaXNoZWRHYXRoZXJpbmdDYW5kaWRhdGVzKQot
ICAgICAgICBkb25lR2F0aGVyaW5nQ2FuZGlkYXRlcygpOwotfQotCiB2b2lkIFBlZXJDb25uZWN0
aW9uQmFja2VuZDo6dXBkYXRlU2lnbmFsaW5nU3RhdGUoUlRDU2lnbmFsaW5nU3RhdGUgbmV3U2ln
bmFsaW5nU3RhdGUpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5k
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFj
a2VuZC5oCmluZGV4IDFjMjU1NjYyNWVlYmMyZjc3NjIzOGE4MzVkMzc0OGIwMTZhM2Y1NjQuLjZm
M2ZiNDJhODBlMmVjNjJlY2E0MTc0NTBlZDViZjU5MmRkNmFhNjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tl
bmQuaApAQCAtMjA5LDcgKzIwOSw3IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGFkZEljZUNhbmRp
ZGF0ZVN1Y2NlZWRlZCgpOwogICAgIHZvaWQgYWRkSWNlQ2FuZGlkYXRlRmFpbGVkKEV4Y2VwdGlv
biYmKTsKIAotICAgIFN0cmluZyBmaWx0ZXJTRFAoU3RyaW5nJiYpIGNvbnN0OworICAgIHZvaWQg
dmFsaWRhdGVTRFAoY29uc3QgU3RyaW5nJikgY29uc3Q7CiAKICAgICBzdHJ1Y3QgUGVuZGluZ1Ry
YWNrRXZlbnQgewogICAgICAgICBSZWY8UlRDUnRwUmVjZWl2ZXI+IHJlY2VpdmVyOwpAQCAtMjI4
LDggKzIyOCw2IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGVuZE9mSWNlQ2FuZGlkYXRl
cyhET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJik7CiAgICAgdmlydHVhbCB2b2lkIGRvU3RvcCgp
ID0gMDsKIAotICAgIHZvaWQgcmVnaXN0ZXJNRE5TTmFtZShjb25zdCBTdHJpbmcmIGlwQWRkcmVz
cyk7Ci0KIHByb3RlY3RlZDoKICAgICBSVENQZWVyQ29ubmVjdGlvbiYgbV9wZWVyQ29ubmVjdGlv
bjsKIApAQCAtMjM3LDI2ICsyMzUsMTYgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
UGVlckNvbm5lY3Rpb246OlNlc3Npb25EZXNjcmlwdGlvblByb21pc2U+IG1fb2ZmZXJBbnN3ZXJQ
cm9taXNlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4+IG1f
c2V0RGVzY3JpcHRpb25Qcm9taXNlOwogCi0gICAgYm9vbCBtX3Nob3VsZEZpbHRlcklDRUNhbmRp
ZGF0ZXMgeyB0cnVlIH07Ci0gICAgc3RydWN0IFBlbmRpbmdJQ0VDYW5kaWRhdGUgewotICAgICAg
ICAvLyBGaWVsZHMgZGVzY3JpYmVkIGluIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJydGMvI2lk
bC1kZWYtcnRjaWNlY2FuZGlkYXRlaW5pdC4KLSAgICAgICAgU3RyaW5nIHNkcDsKLSAgICAgICAg
U3RyaW5nIG1pZDsKLSAgICAgICAgdW5zaWduZWQgc2hvcnQgc2RwTUxpbmVJbmRleDsKLSAgICAg
ICAgU3RyaW5nIHNlcnZlclVSTDsKLSAgICB9OwotICAgIFZlY3RvcjxQZW5kaW5nSUNFQ2FuZGlk
YXRlPiBtX3BlbmRpbmdJQ0VDYW5kaWRhdGVzOworICAgIGJvb2wgbV9zaG91bGRGaWx0ZXJJQ0VD
YW5kaWRhdGVzIHsgZmFsc2UgfTsKIAogICAgIFZlY3RvcjxQZW5kaW5nVHJhY2tFdmVudD4gbV9w
ZW5kaW5nVHJhY2tFdmVudHM7CiAKLSAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBtX2lwQWRk
cmVzc1RvTUROU05hbWVNYXA7CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgUmVmPGNv
bnN0IExvZ2dlcj4gbV9sb2dnZXI7CiAgICAgY29uc3Qgdm9pZCogbV9sb2dJZGVudGlmaWVyOwog
I2VuZGlmCiAgICAgYm9vbCBtX25lZ290aWF0aW9uTmVlZGVkIHsgZmFsc2UgfTsKICAgICBib29s
IG1fZmluaXNoZWRHYXRoZXJpbmdDYW5kaWRhdGVzIHsgZmFsc2UgfTsKLSAgICB1aW50NjRfdCBt
X3dhaXRpbmdGb3JNRE5TUmVnaXN0cmF0aW9uIHsgMCB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
Q29udHJvbGxlci5jcHAKaW5kZXggNzBkNDBjNmJkNWIzMjYyZjJjZmU2MTVmYmMyYjQ1YzYyOWNj
ZjQzZS4uY2YzNDVhNDYyZmNkYjIxMTlmN2ZiZGY1ZWJkZGYwMTQ1ZWJhNzZiMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENDb250cm9sbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0NvbnRyb2xsZXIuY3Bw
CkBAIC03Myw2ICs3MywxMCBAQCBib29sIFJUQ0NvbnRyb2xsZXI6OnNob3VsZERpc2FibGVJQ0VD
YW5kaWRhdGVGaWx0ZXJpbmcoRG9jdW1lbnQmIGRvY3VtZW50KQogCiB2b2lkIFJUQ0NvbnRyb2xs
ZXI6OmFkZChSVENQZWVyQ29ubmVjdGlvbiYgY29ubmVjdGlvbikKIHsKKyAgICBhdXRvJiBkb2N1
bWVudCA9IGRvd25jYXN0PERvY3VtZW50PigqY29ubmVjdGlvbi5zY3JpcHRFeGVjdXRpb25Db250
ZXh0KCkpOworICAgIGlmIChhdXRvKiBuZXR3b3JrTWFuYWdlciA9IGRvY3VtZW50LnJ0Y05ldHdv
cmtNYW5hZ2VyKCkpCisgICAgICAgIG5ldHdvcmtNYW5hZ2VyLT5zZXRJQ0VDYW5kaWRhdGVGaWx0
ZXJpbmcoIXNob3VsZERpc2FibGVJQ0VDYW5kaWRhdGVGaWx0ZXJpbmcoZG9jdW1lbnQpKTsKKwog
ICAgIG1fcGVlckNvbm5lY3Rpb25zLmFwcGVuZChjb25uZWN0aW9uKTsKICAgICBpZiAoc2hvdWxk
RGlzYWJsZUlDRUNhbmRpZGF0ZUZpbHRlcmluZyhkb3duY2FzdDxEb2N1bWVudD4oKmNvbm5lY3Rp
b24uc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSkpCiAgICAgICAgIGNvbm5lY3Rpb24uZGlzYWJs
ZUlDRUNhbmRpZGF0ZUZpbHRlcmluZygpOwpAQCAtODQsOCArODgsMTMgQEAgdm9pZCBSVENDb250
cm9sbGVyOjpkaXNhYmxlSUNFQ2FuZGlkYXRlRmlsdGVyaW5nRm9yQWxsT3JpZ2lucygpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIG1fc2hvdWxkRmlsdGVySUNFQ2FuZGlkYXRlcyA9IGZhbHNlOwot
ICAgIGZvciAoUlRDUGVlckNvbm5lY3Rpb24mIGNvbm5lY3Rpb24gOiBtX3BlZXJDb25uZWN0aW9u
cykKKyAgICBmb3IgKFJUQ1BlZXJDb25uZWN0aW9uJiBjb25uZWN0aW9uIDogbV9wZWVyQ29ubmVj
dGlvbnMpIHsKKyAgICAgICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+
KGNvbm5lY3Rpb24uc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSkgeworICAgICAgICAgICAgaWYg
KGF1dG8qIG5ldHdvcmtNYW5hZ2VyID0gZG9jdW1lbnQtPnJ0Y05ldHdvcmtNYW5hZ2VyKCkpCisg
ICAgICAgICAgICAgICAgbmV0d29ya01hbmFnZXItPnNldElDRUNhbmRpZGF0ZUZpbHRlcmluZyhm
YWxzZSk7CisgICAgICAgIH0KICAgICAgICAgY29ubmVjdGlvbi5kaXNhYmxlSUNFQ2FuZGlkYXRl
RmlsdGVyaW5nKCk7CisgICAgfQogfQogCiB2b2lkIFJUQ0NvbnRyb2xsZXI6OmRpc2FibGVJQ0VD
YW5kaWRhdGVGaWx0ZXJpbmdGb3JEb2N1bWVudChEb2N1bWVudCYgZG9jdW1lbnQpCkBAIC05Mywx
MSArMTAyLDE3IEBAIHZvaWQgUlRDQ29udHJvbGxlcjo6ZGlzYWJsZUlDRUNhbmRpZGF0ZUZpbHRl
cmluZ0ZvckRvY3VtZW50KERvY3VtZW50JiBkb2N1bWVudCkKICAgICBpZiAoIUxpYldlYlJUQ1By
b3ZpZGVyOjp3ZWJSVENBdmFpbGFibGUoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgaWYgKGF1
dG8qIG5ldHdvcmtNYW5hZ2VyID0gZG9jdW1lbnQucnRjTmV0d29ya01hbmFnZXIoKSkKKyAgICAg
ICAgbmV0d29ya01hbmFnZXItPnNldElDRUNhbmRpZGF0ZUZpbHRlcmluZyhmYWxzZSk7CisKICAg
ICBtX2ZpbHRlcmluZ0Rpc2FibGVkT3JpZ2lucy5hcHBlbmQoUGVlckNvbm5lY3Rpb25PcmlnaW4g
eyBkb2N1bWVudC50b3BPcmlnaW4oKSwgZG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4oKSB9KTsKICAg
ICBmb3IgKFJUQ1BlZXJDb25uZWN0aW9uJiBjb25uZWN0aW9uIDogbV9wZWVyQ29ubmVjdGlvbnMp
IHsKICAgICAgICAgaWYgKGF1dG8qIHBlZXJDb25uZWN0aW9uRG9jdW1lbnQgPSBkb3duY2FzdDxE
b2N1bWVudD4oY29ubmVjdGlvbi5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpKSB7Ci0gICAgICAg
ICAgICBpZiAobWF0Y2hEb2N1bWVudE9yaWdpbigqcGVlckNvbm5lY3Rpb25Eb2N1bWVudCwgZG9j
dW1lbnQudG9wT3JpZ2luKCksIGRvY3VtZW50LnNlY3VyaXR5T3JpZ2luKCkpKQorICAgICAgICAg
ICAgaWYgKG1hdGNoRG9jdW1lbnRPcmlnaW4oKnBlZXJDb25uZWN0aW9uRG9jdW1lbnQsIGRvY3Vt
ZW50LnRvcE9yaWdpbigpLCBkb2N1bWVudC5zZWN1cml0eU9yaWdpbigpKSkgeworICAgICAgICAg
ICAgICAgIGlmIChhdXRvKiBuZXR3b3JrTWFuYWdlciA9IHBlZXJDb25uZWN0aW9uRG9jdW1lbnQt
PnJ0Y05ldHdvcmtNYW5hZ2VyKCkpCisgICAgICAgICAgICAgICAgICAgIG5ldHdvcmtNYW5hZ2Vy
LT5zZXRJQ0VDYW5kaWRhdGVGaWx0ZXJpbmcoZmFsc2UpOwogICAgICAgICAgICAgICAgIGNvbm5l
Y3Rpb24uZGlzYWJsZUlDRUNhbmRpZGF0ZUZpbHRlcmluZygpOworICAgICAgICAgICAgfQogICAg
ICAgICB9CiAgICAgfQogfQpAQCAtMTA5LDggKzEyNCwxMyBAQCB2b2lkIFJUQ0NvbnRyb2xsZXI6
OmVuYWJsZUlDRUNhbmRpZGF0ZUZpbHRlcmluZygpCiAKICAgICBtX2ZpbHRlcmluZ0Rpc2FibGVk
T3JpZ2lucy5jbGVhcigpOwogICAgIG1fc2hvdWxkRmlsdGVySUNFQ2FuZGlkYXRlcyA9IHRydWU7
Ci0gICAgZm9yIChSVENQZWVyQ29ubmVjdGlvbiYgY29ubmVjdGlvbiA6IG1fcGVlckNvbm5lY3Rp
b25zKQorICAgIGZvciAoUlRDUGVlckNvbm5lY3Rpb24mIGNvbm5lY3Rpb24gOiBtX3BlZXJDb25u
ZWN0aW9ucykgewogICAgICAgICBjb25uZWN0aW9uLmVuYWJsZUlDRUNhbmRpZGF0ZUZpbHRlcmlu
ZygpOworICAgICAgICBpZiAoYXV0byogZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oY29u
bmVjdGlvbi5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpKSB7CisgICAgICAgICAgICBpZiAoYXV0
byogbmV0d29ya01hbmFnZXIgPSBkb2N1bWVudC0+cnRjTmV0d29ya01hbmFnZXIoKSkKKyAgICAg
ICAgICAgICAgICBuZXR3b3JrTWFuYWdlci0+c2V0SUNFQ2FuZGlkYXRlRmlsdGVyaW5nKHRydWUp
OworICAgICAgICB9CisgICAgfQogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ05ldHdvcmtNYW5hZ2Vy
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ05ldHdvcmtNYW5hZ2Vy
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNWYzNmZkNDYxZjgxYWJiYTJjMDJiYjgxZjFmYjVmOTk3ODAyNWZkMAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
TmV0d29ya01hbmFnZXIuaApAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaWYgRU5BQkxFKFdFQl9SVEMpCisKKyNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJl
ZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBSVENOZXR3b3JrTWFu
YWdlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxSVENOZXR3b3JrTWFuYWdlciwgV1RG
OjpEZXN0cnVjdGlvblRocmVhZDo6TWFpblJ1bkxvb3A+IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFs
IH5SVENOZXR3b3JrTWFuYWdlcigpID0gZGVmYXVsdDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0SUNF
Q2FuZGlkYXRlRmlsdGVyaW5nKGJvb2wpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3Rl
ck1ETlNOYW1lcygpID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIEVOQUJMRShXRUJfUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRwb2ludC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBv
aW50LmNwcAppbmRleCA1M2M0NGFkZjEyYTliZWQ3NGNhNWRiOGE5NTY4MDIzZDg5OTI2NjU1Li4y
MjA4N2EzNjJkZjZjODkwYjU5OWIxMWZkMWQ0NDU4ZTllYjhhMTNkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVu
ZHBvaW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmNwcApAQCAtOTMsMTUgKzkzLDE1IEBAIGJvb2wg
TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6c2V0Q29uZmlndXJhdGlvbihMaWJXZWJSVENQcm92aWRl
ciYgY2xpZW50LCB3ZWJydGM6CiAgICAgY29uZmlndXJhdGlvbi5zZHBfc2VtYW50aWNzID0gd2Vi
cnRjOjpTZHBTZW1hbnRpY3M6OmtVbmlmaWVkUGxhbjsKIAogICAgIGlmICghbV9iYWNrZW5kKSB7
CisgICAgICAgIGF1dG8mIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KCptX3BlZXJDb25u
ZWN0aW9uQmFja2VuZC5jb25uZWN0aW9uKCkuc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKICAg
ICAgICAgaWYgKCFtX3J0Y1NvY2tldEZhY3RvcnkpIHsKLSAgICAgICAgICAgIGF1dG8mIGRvY3Vt
ZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KCptX3BlZXJDb25uZWN0aW9uQmFja2VuZC5jb25uZWN0
aW9uKCkuc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICAgICAgICAgIFJlZ2lzdHJhYmxl
RG9tYWluIGRvbWFpbiB7IGRvY3VtZW50LnVybCgpIH07CiAgICAgICAgICAgICBib29sIGlzRmly
c3RQYXJ0eSA9IGRvbWFpbiA9PSBSZWdpc3RyYWJsZURvbWFpbihkb2N1bWVudC5maXJzdFBhcnR5
Rm9yQ29va2llcygpKTsKICAgICAgICAgICAgIG1fcnRjU29ja2V0RmFjdG9yeSA9IGNsaWVudC5j
cmVhdGVTb2NrZXRGYWN0b3J5KGRvY3VtZW50LnVzZXJBZ2VudChkb2N1bWVudC51cmwoKSksIGlz
Rmlyc3RQYXJ0eSwgV1RGTW92ZShkb21haW4pKTsKICAgICAgICAgICAgIGlmICghbV9wZWVyQ29u
bmVjdGlvbkJhY2tlbmQuc2hvdWxkRmlsdGVySUNFQ2FuZGlkYXRlcygpKQogICAgICAgICAgICAg
ICAgIG1fcnRjU29ja2V0RmFjdG9yeS0+ZGlzYWJsZVJlbGF5KCk7CiAgICAgICAgIH0KLSAgICAg
ICAgbV9iYWNrZW5kID0gY2xpZW50LmNyZWF0ZVBlZXJDb25uZWN0aW9uKCp0aGlzLCBtX3J0Y1Nv
Y2tldEZhY3RvcnkuZ2V0KCksIFdURk1vdmUoY29uZmlndXJhdGlvbikpOworICAgICAgICBtX2Jh
Y2tlbmQgPSBjbGllbnQuY3JlYXRlUGVlckNvbm5lY3Rpb24oZG9jdW1lbnQuaWRlbnRpZmllcigp
LCAqdGhpcywgbV9ydGNTb2NrZXRGYWN0b3J5LmdldCgpLCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24p
KTsKICAgICAgICAgcmV0dXJuICEhbV9iYWNrZW5kOwogICAgIH0KICAgICBhdXRvIG9sZENvbmZp
Z3VyYXRpb24gPSBtX2JhY2tlbmQtPkdldENvbmZpZ3VyYXRpb24oKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJD
b25uZWN0aW9uQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwCmluZGV4IDU5NjAy
YjA5YWVjOWUwYWJiM2QyMjdjMzBmOTI4OTRkNGJhNmQ2MjQuLmM2OWUwYzZkN2JlNzBiZTFkNzAx
MzA4MTM3ZDhlMzVjZmUyYmUzYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2Vi
UlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcApAQCAtMzEwLDcgKzMxMCw3IEBAIFJlZlB0cjxS
VENTZXNzaW9uRGVzY3JpcHRpb24+IExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6Y3Vy
cmVudExvY2FsRGVzY3JpCiB7CiAgICAgYXV0byBkZXNjcmlwdGlvbiA9IG1fZW5kcG9pbnQtPmN1
cnJlbnRMb2NhbERlc2NyaXB0aW9uKCk7CiAgICAgaWYgKGRlc2NyaXB0aW9uKQotICAgICAgICBk
ZXNjcmlwdGlvbi0+c2V0U2RwKGZpbHRlclNEUChTdHJpbmcoZGVzY3JpcHRpb24tPnNkcCgpKSkp
OworICAgICAgICB2YWxpZGF0ZVNEUChkZXNjcmlwdGlvbi0+c2RwKCkpOwogICAgIHJldHVybiBk
ZXNjcmlwdGlvbjsKIH0KIApAQCAtMzIzLDcgKzMyMyw3IEBAIFJlZlB0cjxSVENTZXNzaW9uRGVz
Y3JpcHRpb24+IExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6cGVuZGluZ0xvY2FsRGVz
Y3JpCiB7CiAgICAgYXV0byBkZXNjcmlwdGlvbiA9IG1fZW5kcG9pbnQtPnBlbmRpbmdMb2NhbERl
c2NyaXB0aW9uKCk7CiAgICAgaWYgKGRlc2NyaXB0aW9uKQotICAgICAgICBkZXNjcmlwdGlvbi0+
c2V0U2RwKGZpbHRlclNEUChTdHJpbmcoZGVzY3JpcHRpb24tPnNkcCgpKSkpOworICAgICAgICB2
YWxpZGF0ZVNEUChkZXNjcmlwdGlvbi0+c2RwKCkpOwogICAgIHJldHVybiBkZXNjcmlwdGlvbjsK
IH0KIApAQCAtMzM2LDcgKzMzNiw3IEBAIFJlZlB0cjxSVENTZXNzaW9uRGVzY3JpcHRpb24+IExp
YldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6bG9jYWxEZXNjcmlwdGlvbigpCiB7CiAgICAg
YXV0byBkZXNjcmlwdGlvbiA9IG1fZW5kcG9pbnQtPmxvY2FsRGVzY3JpcHRpb24oKTsKICAgICBp
ZiAoZGVzY3JpcHRpb24pCi0gICAgICAgIGRlc2NyaXB0aW9uLT5zZXRTZHAoZmlsdGVyU0RQKFN0
cmluZyhkZXNjcmlwdGlvbi0+c2RwKCkpKSk7CisgICAgICAgIHZhbGlkYXRlU0RQKGRlc2NyaXB0
aW9uLT5zZHAoKSk7CiAgICAgcmV0dXJuIGRlc2NyaXB0aW9uOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOWNmYzVmMjVk
MDRmZWJkMjliMmMxZjRmZTBkYjE4OGMwNGExMTUwNi4uZTQ5YmNmYWZmZjc0ZTdiNTE2ODU2ODg0
M2YzM2YwODcyMTIxYzg0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTE3Miw2ICsxMTcyLDkgQEAKIAkJNDFCODc3NjIyM0RF
MTA0NTAwMzYzOEI4IC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUI4Nzc2MDIzREUxMDQyMDAz
NjM4QjggLyogUmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MUJCQTg2NjI1N0UzNzNCMDBBQzdG
NkQgLyogU0ZyYW1lVXRpbHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQxMjA5RTI0MjU3QTJGQkIwMDEyMEFDQSAvKiBTRnJhbWVVdGlscy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxQkYyMDQ5MjJC
QTdCRTgwMDA0RjgxMiAvKiBSZWFsdGltZVZpZGVvU291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUJGMjA0MDIyQjk0NzE2MDAwNEY4MTIgLyog
UmVhbHRpbWVWaWRlb1NvdXJjZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCTQxQzE0QkM2MjZERTZERTgwMDY4NUJGNSAvKiBSVENOZXR3b3JrTWFu
YWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFD
MTRCQzQyNkRFNkRFODAwNjg1QkY1IC8qIFJUQ05ldHdvcmtNYW5hZ2VyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDFDMTRCQzcyNkRFODU4NDAw
Njg1QkY1IC8qIExpYldlYlJUQ1V0aWxzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0MUQxQTA0QzIxM0VEREZGMDA2M0ZCNkIgLyogTGliV2ViUlRDVXRp
bHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0
MUMxNEJDOTI2REY3OUQ3MDA2ODVCRjUgLyogTUROU1JlZ2lzdGVyRXJyb3IuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQzE0QkM4MjZERjc5RDYwMDY4
NUJGNSAvKiBNRE5TUmVnaXN0ZXJFcnJvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTQxQzNCOEExMjY0OUIxRTAwMDRFRDRERSAvKiBBdWRpb01l
ZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFDM0I4OUYyNjQ5QjFCNzAwNEVENERFIC8qIEF1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDFDM0I4QTIyNjQ5QjFFNTAwNEVE
NERFIC8qIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFDM0I4OUIyNjQ5QjFCNjAwNEVENERF
IC8qIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxQzc2MEIxMEVERTAzRDMwMEMxNjU1
RiAvKiBTY3JpcHRTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDFDNzYwQjAwRURFMDNEMzAwQzE2NTVGIC8qIFNjcmlwdFN0YXRlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTgwNDQsNiArODA0
Nyw4IEBACiAJCTQxQkNFODc3MjVGN0E2N0EwMDQ2QzJFNSAvKiBSVENUcmFuc2Zvcm1FdmVudC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSVENUcmFuc2Zvcm1FdmVudC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUJGMjA0MDIyQjk0NzE2MDAwNEY4MTIgLyog
UmVhbHRpbWVWaWRlb1NvdXJjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWFsdGltZVZpZGVvU291cmNl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQkYyMDQyMjJCOTQ3MTcwMDA0Rjgx
MiAvKiBSZWFsdGltZVZpZGVvU291cmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlYWx0aW1l
VmlkZW9Tb3VyY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUMxNEJDNDI2
REU2REU4MDA2ODVCRjUgLyogUlRDTmV0d29ya01hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUlRDTmV0d29ya01hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNDFDMTRCQzgyNkRGNzlENjAwNjg1QkY1IC8qIE1ETlNSZWdpc3RlckVycm9yLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1ETlNSZWdpc3RlckVycm9yLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQzNCODlCMjY0OUIxQjYwMDRFRDRERSAvKiBB
dWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXVkaW9N
ZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQxQzNCODlDMjY0OUIxQjYwMDRFRDRERSAvKiBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5k
ZXJlckNvY29hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVy
Q29jb2EuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFDM0I4OUQyNjQ5QjFCNjAw
NEVENERFIC8qIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2EuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzI1NCw2ICsxNzI1OSw3IEBACiAJCQkJMzE2RENC
ODkxRTdBNjk5NjAwMUI1Rjg3IC8qIFJUQ0ljZVRyYW5zcG9ydC5pZGwgKi8sCiAJCQkJNDE0NTE2
RTAyNkNDMDQyMTAwQUFBQkUwIC8qIFJUQ0ljZVRyYW5zcG9ydEJhY2tlbmQuaCAqLywKIAkJCQkz
MTZEQ0I4RTFFN0E2Qzc5MDAxQjVGODcgLyogUlRDSWNlVHJhbnNwb3J0U3RhdGUuaWRsICovLAor
CQkJCTQxQzE0QkM0MjZERTZERTgwMDY4NUJGNSAvKiBSVENOZXR3b3JrTWFuYWdlci5oICovLAog
CQkJCTA3Mzc5NERDMTlFRTJDNTIwMEU1QTA0NSAvKiBSVENPZmZlckFuc3dlck9wdGlvbnMuaCAq
LywKIAkJCQkzMTZEQ0IxMjFFNzhCRTQzMDAxQjVGODcgLyogUlRDT2ZmZXJBbnN3ZXJPcHRpb25z
LmlkbCAqLywKIAkJCQkzMTZEQ0IyODFFNzhGMzk1MDAxQjVGODcgLyogUlRDT2ZmZXJPcHRpb25z
LmggKi8sCkBAIC0xNzM4MSw2ICsxNzM4Nyw3IEBACiAJCQkJMDdCNzExNkIxRDg5OUU2MzAwOUYw
RkZCIC8qIENhcHR1cmVEZXZpY2VNYW5hZ2VyLmNwcCAqLywKIAkJCQkwN0I3MTE2QzFEODk5RTYz
MDA5RjBGRkIgLyogQ2FwdHVyZURldmljZU1hbmFnZXIuaCAqLywKIAkJCQk1RUJCODkzMDFDNzc3
N0UxMDBDNjVENDEgLyogSWNlQ2FuZGlkYXRlLmggKi8sCisJCQkJNDFDMTRCQzgyNkRGNzlENjAw
Njg1QkY1IC8qIE1ETlNSZWdpc3RlckVycm9yLmggKi8sCiAJCQkJMUJFNUJGQzExRDUxNTcxNTAw
MTY2NkQ5IC8qIE1lZGlhQ29uc3RyYWludHMuY3BwICovLAogCQkJCTA3MjIxQjk5MTdDRjBBRDQw
MDg0OEU1MSAvKiBNZWRpYUNvbnN0cmFpbnRzLmggKi8sCiAJCQkJNDFCMjhCMTMxRjg1MDFBNDAw
RkI1MkFDIC8qIE1lZGlhRW5kcG9pbnRDb25maWd1cmF0aW9uLmNwcCAqLywKQEAgLTMzNTgzLDYg
KzMzNTkwLDcgQEAKIAkJCQk0MTgxQzVDRDI1NTU4MzY5MDBBRUIwRkYgLyogTGliV2ViUlRDUnRw
VHJhbnNmb3JtYWJsZUZyYW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTgxQzVEMTI1NTU4OTU2
MDBBRUIwRkYgLyogTGliV2ViUlRDUnRwVHJhbnNmb3JtQmFja2VuZC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNDEwRTQ0NjEyMzQzNzNFOTAwMDE3M0Q0IC8qIExpYldlYlJUQ1NvY2tldElkZW50aWZp
ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxQzE0QkM3MjZERTg1ODQwMDY4NUJGNSAvKiBMaWJX
ZWJSVENVdGlscy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODQ3MzBEOTExMjQ4RjBCMzAwRDNBOUM5
IC8qIExpZ2h0U291cmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyNzk2NTBEMDBCRjIyMDA3
MUI3ODIgLyogTGluZWFyR3JhZGllbnRBdHRyaWJ1dGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
QjMxQzkxRTEwQUUxQjhFMDAwQzdCOTIgLyogTGluZUNsYW1wVmFsdWUuaCBpbiBIZWFkZXJzICov
LApAQCAtMzM2NDYsNiArMzM2NTQsNyBAQAogCQkJCTQzOTA0NkVBMTJEQTI1RTgxMkFGODBBQyAv
KiBNYXRoT3BlcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5RDVEQzJDMEY0MjNBNzMwMDhG
MjBGRCAvKiBNYXRyaXgzRFRyYW5zZm9ybU9wZXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NDlFOTExQzcwRUY4NkQ0NzAwOUQwQ0FGIC8qIE1hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbi5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNDFDMTRCQzkyNkRGNzlENzAwNjg1QkY1IC8qIE1ETlNSZWdpc3Rl
ckVycm9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0JDOERBRDFBQUEzMDIyMDBFMUM4MDMgLyog
TWVkaWFBY2Nlc3NpYmlsaXR5U29mdExpbmsuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMUJDQzYx
MTEyNERGQ0IwMEJFNzBERCAvKiBNZWRpYUNhblN0YXJ0TGlzdGVuZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCUNEQ0M5QkNGMjIzODdFOUEwMEZGQjUxQyAvKiBNZWRpYUNhcGFiaWxpdGllc0RlY29k
aW5nSW5mby5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNDQ2MSw2ICszNDQ3MCw3IEBACiAJCQkJMDdB
Qjk5NkIxOERBM0MwMTAwMTg3NzFFIC8qIFJUQ0ljZVNlcnZlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMzEzNTkxMDgxRTdEREM3MzAwRjMwNjMwIC8qIFJUQ0ljZVRyYW5zcG9ydFBvbGljeS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMzEzNTkxMDkxRTdEREM3MzAwRjMwNjMwIC8qIFJUQ0ljZVRyYW5z
cG9ydFN0YXRlLmggaW4gSGVhZGVycyAqLywKKwkJCQk0MUMxNEJDNjI2REU2REU4MDA2ODVCRjUg
LyogUlRDTmV0d29ya01hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3Mzc5NEZFMTlGNTg2
NEUwMEU1QTA0NSAvKiBSVENOb3RpZmllcnNNb2NrLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzM3
OTRERTE5RUUyQzUyMDBFNUEwNDUgLyogUlRDT2ZmZXJBbnN3ZXJPcHRpb25zLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwNzhFMDkyNTE3RDE0RDFDMDA0MjBBQTEgLyogUlRDUGVlckNvbm5lY3Rpb24u
aCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggOTQ2NmZkOWY3ZjU0
N2ZkZDliZWYwNGVmODU3YTJhNmVjYTJiMWZkOC4uOTY0OWE0NTZjMmIwODIwMGRhNWQ3Zjc4OTgw
ZmFhNjZlZDEyYWFjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0yNTk1LDEyICsyNTk1
LDkgQEAgdm9pZCBEb2N1bWVudDo6d2lsbEJlUmVtb3ZlZEZyb21GcmFtZSgpCiAgICAgaWYgKG1f
aGFzUHJlcGFyZWRGb3JEZXN0cnVjdGlvbikKICAgICAgICAgcmV0dXJuOwogCi0jaWYgVVNFKExJ
QldFQlJUQykKLSAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgbW92ZWQgdG8gTW9kdWxlcy9t
ZWRpYXN0cmVhbS4KLSAgICBpZiAoTGliV2ViUlRDUHJvdmlkZXI6OndlYlJUQ0F2YWlsYWJsZSgp
KSB7Ci0gICAgICAgIGlmIChhdXRvKiBwYWdlID0gdGhpcy0+cGFnZSgpKQotICAgICAgICAgICAg
cGFnZS0+bGliV2ViUlRDUHJvdmlkZXIoKS51bnJlZ2lzdGVyTUROU05hbWVzKGlkZW50aWZpZXIo
KSk7Ci0gICAgfQorI2lmIEVOQUJMRShXRUJfUlRDKQorICAgIGlmIChtX3J0Y05ldHdvcmtNYW5h
Z2VyKQorICAgICAgICBtX3J0Y05ldHdvcmtNYW5hZ2VyLT51bnJlZ2lzdGVyTUROU05hbWVzKCk7
CiAjZW5kaWYKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKQEAgLTU2MTcsMTIgKzU2MTQs
OSBAQCB2b2lkIERvY3VtZW50OjpzdXNwZW5kKFJlYXNvbkZvclN1c3BlbnNpb24gcmVhc29uKQog
ICAgICAgICAgICAgdmlldy0+Y29tcG9zaXRvcigpLmNhbmNlbENvbXBvc2l0aW5nTGF5ZXJVcGRh
dGUoKTsKICAgICB9CiAKLSNpZiBVU0UoTElCV0VCUlRDKQotICAgIC8vIEZJWE1FOiBUaGlzIHNo
b3VsZCBiZSBtb3ZlZCB0byBNb2R1bGVzL21lZGlhc3RyZWFtLgotICAgIGlmIChMaWJXZWJSVENQ
cm92aWRlcjo6d2ViUlRDQXZhaWxhYmxlKCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHBhZ2UgPSB0
aGlzLT5wYWdlKCkpCi0gICAgICAgICAgICBwYWdlLT5saWJXZWJSVENQcm92aWRlcigpLnVucmVn
aXN0ZXJNRE5TTmFtZXMoaWRlbnRpZmllcigpKTsKLSAgICB9CisjaWYgRU5BQkxFKFdFQl9SVEMp
CisgICAgaWYgKG1fcnRjTmV0d29ya01hbmFnZXIpCisgICAgICAgIG1fcnRjTmV0d29ya01hbmFn
ZXItPnVucmVnaXN0ZXJNRE5TTmFtZXMoKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNFUlZJQ0Vf
V09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCBhZjVlNzg1MGNhOTIxNWYyMjkxZDUwNGIy
ZGY4ZTljMmQwZDUzYjk2Li44MjMwOTgzYTZhNjFmMTlmOWI5MWEyNzFkNDAxMDQzNTQ3OTRjM2Iw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtNDksNiArNDksNyBAQAogI2luY2x1ZGUgIlBhZ2VJ
ZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1FdmVudC5oIgogI2luY2x1ZGUgIlBsYXli
YWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJSVENOZXR3b3Jr
TWFuYWdlci5oIgogI2luY2x1ZGUgIlJlZmVycmVyUG9saWN5LmgiCiAjaW5jbHVkZSAiUmVnaW9u
LmgiCiAjaW5jbHVkZSAiUmVnaXN0cmFibGVEb21haW4uaCIKQEAgLTcwOCw2ICs3MDksMTEgQEAg
cHVibGljOgogICAgIFNvY2tldFByb3ZpZGVyKiBzb2NrZXRQcm92aWRlcigpIGZpbmFsOwogICAg
IFJlZlB0cjxSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXJDb25uZWN0aW9uPiBjcmVhdGVSVENE
YXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXJDb25uZWN0aW9uKCkgZmluYWw7CiAKKyNpZiBFTkFCTEUo
V0VCX1JUQykKKyAgICBSVENOZXR3b3JrTWFuYWdlciogcnRjTmV0d29ya01hbmFnZXIoKSB7IHJl
dHVybiBtX3J0Y05ldHdvcmtNYW5hZ2VyLmdldCgpOyB9CisgICAgdm9pZCBzZXRSVENOZXR3b3Jr
TWFuYWdlcihSZWY8UlRDTmV0d29ya01hbmFnZXI+JiYgcnRjTmV0d29ya01hbmFnZXIpIHsgbV9y
dGNOZXR3b3JrTWFuYWdlciA9IFdURk1vdmUocnRjTmV0d29ya01hbmFnZXIpOyB9CisjZW5kaWYK
KwogICAgIGJvb2wgY2FuTmF2aWdhdGUoRnJhbWUqIHRhcmdldEZyYW1lLCBjb25zdCBVUkwmIGRl
c3RpbmF0aW9uVVJMID0gVVJMKCkpOwogCiAgICAgYm9vbCB1c2VzU3R5bGVCYXNlZEVkaXRhYmls
aXR5KCkgY29uc3Q7CkBAIC0yMjIxLDYgKzIyMjcsMTAgQEAgcHJpdmF0ZToKIAogICAgIExpc3RI
YXNoU2V0PFJlZjxFbGVtZW50Pj4gbV90b3BMYXllckVsZW1lbnRzOwogICAgIFVuaXF1ZVJlZjxX
aGl0ZXNwYWNlQ2FjaGU+IG1fd2hpdGVzcGFjZUNhY2hlOworCisjaWYgRU5BQkxFKFdFQl9SVEMp
CisgICAgUmVmUHRyPFJUQ05ldHdvcmtNYW5hZ2VyPiBtX3J0Y05ldHdvcmtNYW5hZ2VyOworI2Vu
ZGlmCiB9OwogCiBFbGVtZW50KiBldmVudFRhcmdldEVsZW1lbnRGb3JEb2N1bWVudChEb2N1bWVu
dCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTURO
U1JlZ2lzdGVyRXJyb3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01E
TlNSZWdpc3RlckVycm9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzdjNWRhZmUzM2ZiZTY0ZTdhODI2YzE1MWI2
YmUzY2E1MmZhNTU1ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL01ETlNSZWdpc3RlckVycm9yLmgKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL0VudW1UcmFpdHMuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitlbnVtIGNsYXNzIE1ETlNSZWdpc3RlckVycm9yIHsgTm90SW1w
bGVtZW50ZWQsIEJhZFBhcmFtZXRlciwgRE5TU0QsIEludGVybmFsLCBUaW1lb3V0IH07CisKK30K
KworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29y
ZTo6TUROU1JlZ2lzdGVyRXJyb3I+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAor
ICAgICAgICBXZWJDb3JlOjpNRE5TUmVnaXN0ZXJFcnJvciwKKyAgICAgICAgV2ViQ29yZTo6TURO
U1JlZ2lzdGVyRXJyb3I6Ok5vdEltcGxlbWVudGVkLAorICAgICAgICBXZWJDb3JlOjpNRE5TUmVn
aXN0ZXJFcnJvcjo6QmFkUGFyYW1ldGVyLAorICAgICAgICBXZWJDb3JlOjpNRE5TUmVnaXN0ZXJF
cnJvcjo6RE5TU0QsCisgICAgICAgIFdlYkNvcmU6Ok1ETlNSZWdpc3RlckVycm9yOjpJbnRlcm5h
bCwKKyAgICAgICAgV2ViQ29yZTo6TUROU1JlZ2lzdGVyRXJyb3I6OlRpbWVvdXQKKyAgICA+Owor
fTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHAKaW5kZXggYzU5NTYx
Nzg3MmIyMmI5ZWMzZjUzMmQzNDViMDhjMTZmZTZiZmQ2ZC4uNWFmNzlhZDQ4NTg2ODQwZjQ4NzU3
ZGVmZThhM2E2NmU1NmQzYmVjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIu
Y3BwCkBAIC0yOTksNyArMjk5LDcgQEAgdm9pZCBMaWJXZWJSVENQcm92aWRlcjo6ZW5hYmxlRW51
bWVyYXRpbmdBbGxOZXR3b3JrSW50ZXJmYWNlcygpCiAgICAgbV9lbmFibGVFbnVtZXJhdGluZ0Fs
bE5ldHdvcmtJbnRlcmZhY2VzID0gdHJ1ZTsKIH0KIAotcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0
Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U+IExpYldlYlJUQ1Byb3ZpZGVyOjpjcmVhdGVQZWVy
Q29ubmVjdGlvbih3ZWJydGM6OlBlZXJDb25uZWN0aW9uT2JzZXJ2ZXImIG9ic2VydmVyLCBydGM6
OlBhY2tldFNvY2tldEZhY3RvcnkqLCB3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpS
VENDb25maWd1cmF0aW9uJiYgY29uZmlndXJhdGlvbikKK3J0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJy
dGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlPiBMaWJXZWJSVENQcm92aWRlcjo6Y3JlYXRlUGVl
ckNvbm5lY3Rpb24oRG9jdW1lbnRJZGVudGlmaWVyLCB3ZWJydGM6OlBlZXJDb25uZWN0aW9uT2Jz
ZXJ2ZXImIG9ic2VydmVyLCBydGM6OlBhY2tldFNvY2tldEZhY3RvcnkqLCB3ZWJydGM6OlBlZXJD
b25uZWN0aW9uSW50ZXJmYWNlOjpSVENDb25maWd1cmF0aW9uJiYgY29uZmlndXJhdGlvbikKIHsK
ICAgICAvLyBEZWZhdWx0IFdLMSBpbXBsZW1lbnRhdGlvbi4KICAgICBBU1NFUlQobV91c2VOZXR3
b3JrVGhyZWFkV2l0aFNvY2tldFNlcnZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRl
ci5oCmluZGV4IDE4NjI3ZWU1N2Y3NThhMDQ3MjJkMTYxNmYwZjg3NjI4NDM0MTE1YjcuLjk0MjA3
M2IzMmUxN2U1NDY2OWU3ZWQyMzhhNWYxOTExNTE0YjI0NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJX
ZWJSVENQcm92aWRlci5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJEb2N1bWVudElk
ZW50aWZpZXIuaCIKICNpbmNsdWRlICJMaWJXZWJSVENNYWNyb3MuaCIKKyNpbmNsdWRlICJNRE5T
UmVnaXN0ZXJFcnJvci5oIgogI2luY2x1ZGUgIlJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlckNv
bm5lY3Rpb24uaCIKICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRl
IDx3dGYvRXhwZWN0ZWQuaD4KQEAgLTY2LDggKzY3LDYgQEAgY2xhc3MgUmVnaXN0cmFibGVEb21h
aW47CiBzdHJ1Y3QgUGVlckNvbm5lY3Rpb25GYWN0b3J5QW5kVGhyZWFkczsKIHN0cnVjdCBSVENS
dHBDYXBhYmlsaXRpZXM7CiAKLWVudW0gY2xhc3MgTUROU1JlZ2lzdGVyRXJyb3IgeyBOb3RJbXBs
ZW1lbnRlZCwgQmFkUGFyYW1ldGVyLCBETlNTRCwgSW50ZXJuYWwsIFRpbWVvdXQgfTsKLQogY2xh
c3MgV0VCQ09SRV9FWFBPUlQgTGliV2ViUlRDUHJvdmlkZXIgewogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgpAQCAtODYsMTggKzg1LDEwIEBAIHB1YmxpYzoKICAgICB1c2lu
ZyBJUEFkZHJlc3NPckVycm9yID0gRXhwZWN0ZWQ8U3RyaW5nLCBNRE5TUmVnaXN0ZXJFcnJvcj47
CiAgICAgdXNpbmcgTUROU05hbWVPckVycm9yID0gRXhwZWN0ZWQ8U3RyaW5nLCBNRE5TUmVnaXN0
ZXJFcnJvcj47CiAKLSAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3Rlck1ETlNOYW1lcyhEb2N1bWVu
dElkZW50aWZpZXIpIHsgfQotCi0gICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyTUROU05hbWUoRG9j
dW1lbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGlwQWRkcmVzcywgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChNRE5TTmFtZU9yRXJyb3ImJik+JiYgY2FsbGJhY2spCi0gICAgewotICAgICAgICBV
TlVTRURfUEFSQU0oaXBBZGRyZXNzKTsKLSAgICAgICAgY2FsbGJhY2sobWFrZVVuZXhwZWN0ZWQo
TUROU1JlZ2lzdGVyRXJyb3I6Ok5vdEltcGxlbWVudGVkKSk7Ci0gICAgfQotCiAgICAgdmlydHVh
bCBSZWZQdHI8UlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyQ29ubmVjdGlvbj4gY3JlYXRlUlRD
RGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyQ29ubmVjdGlvbigpIHsgcmV0dXJuIG51bGxwdHI7IH0K
IAogI2lmIFVTRShMSUJXRUJSVEMpCi0gICAgdmlydHVhbCBydGM6OnNjb3BlZF9yZWZwdHI8d2Vi
cnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZT4gY3JlYXRlUGVlckNvbm5lY3Rpb24od2VicnRj
OjpQZWVyQ29ubmVjdGlvbk9ic2VydmVyJiwgcnRjOjpQYWNrZXRTb2NrZXRGYWN0b3J5Kiwgd2Vi
cnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6UlRDQ29uZmlndXJhdGlvbiYmKTsKKyAgICB2
aXJ0dWFsIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNl
PiBjcmVhdGVQZWVyQ29ubmVjdGlvbihEb2N1bWVudElkZW50aWZpZXIsIHdlYnJ0Yzo6UGVlckNv
bm5lY3Rpb25PYnNlcnZlciYsIHJ0Yzo6UGFja2V0U29ja2V0RmFjdG9yeSosIHdlYnJ0Yzo6UGVl
ckNvbm5lY3Rpb25JbnRlcmZhY2U6OlJUQ0NvbmZpZ3VyYXRpb24mJik7CiAKICAgICB3ZWJydGM6
OlBlZXJDb25uZWN0aW9uRmFjdG9yeUludGVyZmFjZSogZmFjdG9yeSgpOwogCkBAIC0xODAsMTYg
KzE3MSwzIEBAIGlubGluZSB2b2lkIExpYldlYlJUQ1Byb3ZpZGVyOjpzZXRWUDlTdXBwb3J0KGJv
b2wgc3VwcG9ydHNWUDlQcm9maWxlMCwgYm9vbCBzdXBwCiAjZW5kaWYKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQotCi1uYW1lc3BhY2UgV1RGIHsKLXRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFp
dHM8V2ViQ29yZTo6TUROU1JlZ2lzdGVyRXJyb3I+IHsKLSAgICB1c2luZyB2YWx1ZXMgPSBFbnVt
VmFsdWVzPAotICAgICAgICBXZWJDb3JlOjpNRE5TUmVnaXN0ZXJFcnJvciwKLSAgICAgICAgV2Vi
Q29yZTo6TUROU1JlZ2lzdGVyRXJyb3I6Ok5vdEltcGxlbWVudGVkLAotICAgICAgICBXZWJDb3Jl
OjpNRE5TUmVnaXN0ZXJFcnJvcjo6QmFkUGFyYW1ldGVyLAotICAgICAgICBXZWJDb3JlOjpNRE5T
UmVnaXN0ZXJFcnJvcjo6RE5TU0QsCi0gICAgICAgIFdlYkNvcmU6Ok1ETlNSZWdpc3RlckVycm9y
OjpJbnRlcm5hbCwKLSAgICAgICAgV2ViQ29yZTo6TUROU1JlZ2lzdGVyRXJyb3I6OlRpbWVvdXQK
LSAgICA+OwotfTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
d2VicnRjL05ldHdvcmtNRE5TUmVnaXN0ZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy93ZWJydGMvTmV0d29ya01ETlNSZWdpc3Rlci5jcHAKaW5kZXggZmM0MzUxMTJmNWJjZTBh
YTMxMjIwZTQxMmZjZTRjNTk4M2YyOGIwNy4uN2FhMTdjMTMxZjE2MjY4NGNkMjgzYTdhMGU0YzFk
MTMxYmVlODYxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJy
dGMvTmV0d29ya01ETlNSZWdpc3Rlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy93ZWJydGMvTmV0d29ya01ETlNSZWdpc3Rlci5jcHAKQEAgLTk4LDI3ICs5OCwyOSBAQCBz
dGF0aWMgdm9pZCByZWdpc3Rlck1ETlNOYW1lQ2FsbGJhY2soRE5TU2VydmljZVJlZiwgRE5TUmVj
b3JkUmVmIHJlY29yZCwgRE5TU2VydgogICAgIE1ETlNfUkVMRUFTRV9MT0dfSU5fQ0FMTEJBQ0so
cmVxdWVzdC0+c2Vzc2lvbklELCAicmVnaXN0ZXJNRE5TTmFtZUNhbGxiYWNrIHdpdGggZXJyb3Ig
JWQiLCBlcnJvckNvZGUpOwogCiAgICAgaWYgKGVycm9yQ29kZSkgewotICAgICAgICByZXF1ZXN0
LT5jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpXZWJNRE5TUmVnaXN0ZXI6OkZpbmlzaGVkUmVn
aXN0ZXJpbmdNRE5TTmFtZSB7IHJlcXVlc3QtPnJlcXVlc3RJZGVudGlmaWVyLCBtYWtlVW5leHBl
Y3RlZChXZWJDb3JlOjpNRE5TUmVnaXN0ZXJFcnJvcjo6RE5TU0QpIH0sIDApOworICAgICAgICBy
ZXF1ZXN0LT5jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpXZWJNRE5TUmVnaXN0ZXI6OkZpbmlz
aGVkUmVnaXN0ZXJpbmdNRE5TTmFtZSB7IHJlcXVlc3QtPnJlcXVlc3RJZGVudGlmaWVyLCByZXF1
ZXN0LT5uYW1lLCBXZWJDb3JlOjpNRE5TUmVnaXN0ZXJFcnJvcjo6RE5TU0QgfSwgMCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9Ci0gICAgcmVxdWVzdC0+Y29ubmVjdGlvbi0+c2VuZChNZXNzYWdl
czo6V2ViTUROU1JlZ2lzdGVyOjpGaW5pc2hlZFJlZ2lzdGVyaW5nTUROU05hbWUgeyByZXF1ZXN0
LT5yZXF1ZXN0SWRlbnRpZmllciwgcmVxdWVzdC0+bmFtZSB9LCAwKTsKKyAgICByZXF1ZXN0LT5j
b25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpXZWJNRE5TUmVnaXN0ZXI6OkZpbmlzaGVkUmVnaXN0
ZXJpbmdNRE5TTmFtZSB7IHJlcXVlc3QtPnJlcXVlc3RJZGVudGlmaWVyLCByZXF1ZXN0LT5uYW1l
LCB7IH0gfSwgMCk7CiB9CiAKIHZvaWQgTmV0d29ya01ETlNSZWdpc3Rlcjo6cmVnaXN0ZXJNRE5T
TmFtZShNRE5TUmVnaXN0ZXJJZGVudGlmaWVyIHJlcXVlc3RJZGVudGlmaWVyLCBXZWJDb3JlOjpE
b2N1bWVudElkZW50aWZpZXIgZG9jdW1lbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGlwQWRk
cmVzcykKIHsKKyAgICBhdXRvIG5hbWUgPSBtYWtlU3RyaW5nKGNyZWF0ZUNhbm9uaWNhbFVVSURT
dHJpbmcoKSwgIi5sb2NhbCIpOworCiAgICAgRE5TU2VydmljZVJlZiBzZXJ2aWNlOwogICAgIGF1
dG8gaXRlcmF0b3IgPSBtX3NlcnZpY2VzLmZpbmQoZG9jdW1lbnRJZGVudGlmaWVyKTsKICAgICBp
ZiAoaXRlcmF0b3IgPT0gbV9zZXJ2aWNlcy5lbmQoKSkgewogICAgICAgICBhdXRvIGVycm9yID0g
RE5TU2VydmljZUNyZWF0ZUNvbm5lY3Rpb24oJnNlcnZpY2UpOwogICAgICAgICBpZiAoZXJyb3Ip
IHsKICAgICAgICAgICAgIE1ETlNfUkVMRUFTRV9MT0coInJlZ2lzdGVyTUROU05hbWUgRE5TU2Vy
dmljZUNyZWF0ZUNvbm5lY3Rpb24gZXJyb3IgJWQiLCBlcnJvcik7Ci0gICAgICAgICAgICBtX2Nv
bm5lY3Rpb24uY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OldlYk1ETlNSZWdpc3Rlcjo6Rmlu
aXNoZWRSZWdpc3RlcmluZ01ETlNOYW1lIHsgcmVxdWVzdElkZW50aWZpZXIsIG1ha2VVbmV4cGVj
dGVkKFdlYkNvcmU6Ok1ETlNSZWdpc3RlckVycm9yOjpETlNTRCkgfSwgMCk7CisgICAgICAgICAg
ICBtX2Nvbm5lY3Rpb24uY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OldlYk1ETlNSZWdpc3Rl
cjo6RmluaXNoZWRSZWdpc3RlcmluZ01ETlNOYW1lIHsgcmVxdWVzdElkZW50aWZpZXIsIG5hbWUs
IFdlYkNvcmU6Ok1ETlNSZWdpc3RlckVycm9yOjpETlNTRCB9LCAwKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogICAgICAgICBlcnJvciA9IEROU1NlcnZpY2VTZXREaXNwYXRjaFF1
ZXVlKHNlcnZpY2UsIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCkpOwogICAgICAgICBpZiAoZXJy
b3IpIHsKICAgICAgICAgICAgIE1ETlNfUkVMRUFTRV9MT0coInJlZ2lzdGVyTUROU05hbWUgRE5T
U2VydmljZUNyZWF0ZUNvbm5lY3Rpb24gZXJyb3IgJWQiLCBlcnJvcik7Ci0gICAgICAgICAgICBt
X2Nvbm5lY3Rpb24uY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OldlYk1ETlNSZWdpc3Rlcjo6
RmluaXNoZWRSZWdpc3RlcmluZ01ETlNOYW1lIHsgcmVxdWVzdElkZW50aWZpZXIsIG1ha2VVbmV4
cGVjdGVkKFdlYkNvcmU6Ok1ETlNSZWdpc3RlckVycm9yOjpETlNTRCkgfSwgMCk7CisgICAgICAg
ICAgICBtX2Nvbm5lY3Rpb24uY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OldlYk1ETlNSZWdp
c3Rlcjo6RmluaXNoZWRSZWdpc3RlcmluZ01ETlNOYW1lIHsgcmVxdWVzdElkZW50aWZpZXIsIG5h
bWUsIFdlYkNvcmU6Ok1ETlNSZWdpc3RlckVycm9yOjpETlNTRCB9LCAwKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogICAgICAgICBBU1NFUlQoc2VydmljZSk7CkBAIC0xMjYsMTMg
KzEyOCwxMiBAQCB2b2lkIE5ldHdvcmtNRE5TUmVnaXN0ZXI6OnJlZ2lzdGVyTUROU05hbWUoTURO
U1JlZ2lzdGVySWRlbnRpZmllciByZXF1ZXN0SWRlbnRpZgogICAgIH0gZWxzZQogICAgICAgICBz
ZXJ2aWNlID0gaXRlcmF0b3ItPnZhbHVlOwogCi0gICAgYXV0byBuYW1lID0gbWFrZVN0cmluZyhj
cmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCksICIubG9jYWwiKTsKLQogICAgIGF1dG8gaXAgPSBp
bmV0X2FkZHIoaXBBZGRyZXNzLnV0ZjgoKS5kYXRhKCkpOwogCisgICAgLy8gRklYTUU6IEFkZCBJ
UHY2IHN1cHBvcnQuCiAgICAgaWYgKGlwID09ICggaW5fYWRkcl90KSgtMSkpIHsKICAgICAgICAg
TUROU19SRUxFQVNFX0xPRygicmVnaXN0ZXJNRE5TTmFtZSBpbmV0X2FkZHIgZXJyb3IiKTsKLSAg
ICAgICAgbV9jb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpXZWJNRE5TUmVn
aXN0ZXI6OkZpbmlzaGVkUmVnaXN0ZXJpbmdNRE5TTmFtZSB7IHJlcXVlc3RJZGVudGlmaWVyLCBt
YWtlVW5leHBlY3RlZChXZWJDb3JlOjpNRE5TUmVnaXN0ZXJFcnJvcjo6QmFkUGFyYW1ldGVyKSB9
LCAwKTsKKyAgICAgICAgbV9jb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpX
ZWJNRE5TUmVnaXN0ZXI6OkZpbmlzaGVkUmVnaXN0ZXJpbmdNRE5TTmFtZSB7IHJlcXVlc3RJZGVu
dGlmaWVyLCBuYW1lLCBXZWJDb3JlOjpNRE5TUmVnaXN0ZXJFcnJvcjo6QmFkUGFyYW1ldGVyIH0s
IDApOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xNTYsNyArMTU3LDcgQEAgdm9pZCBO
ZXR3b3JrTUROU1JlZ2lzdGVyOjpyZWdpc3Rlck1ETlNOYW1lKE1ETlNSZWdpc3RlcklkZW50aWZp
ZXIgcmVxdWVzdElkZW50aWYKICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocGVuZGlu
Z1JlZ2lzdHJhdGlvblJlcXVlc3RDb3VudCkpOwogICAgIGlmIChlcnJvcikgewogICAgICAgICBN
RE5TX1JFTEVBU0VfTE9HKCJyZWdpc3Rlck1ETlNOYW1lIEROU1NlcnZpY2VSZWdpc3RlclJlY29y
ZCBlcnJvciAlZCIsIGVycm9yKTsKLSAgICAgICAgbV9jb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5z
ZW5kKE1lc3NhZ2VzOjpXZWJNRE5TUmVnaXN0ZXI6OkZpbmlzaGVkUmVnaXN0ZXJpbmdNRE5TTmFt
ZSB7IHJlcXVlc3RJZGVudGlmaWVyLCBtYWtlVW5leHBlY3RlZChXZWJDb3JlOjpNRE5TUmVnaXN0
ZXJFcnJvcjo6RE5TU0QpIH0sIDApOworICAgICAgICBtX2Nvbm5lY3Rpb24uY29ubmVjdGlvbigp
LnNlbmQoTWVzc2FnZXM6OldlYk1ETlNSZWdpc3Rlcjo6RmluaXNoZWRSZWdpc3RlcmluZ01ETlNO
YW1lIHsgcmVxdWVzdElkZW50aWZpZXIsIHBlbmRpbmdSZXF1ZXN0LT5uYW1lLCBXZWJDb3JlOjpN
RE5TUmVnaXN0ZXJFcnJvcjo6RE5TU0QgfSwgMCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAg
ICAgcGVuZGluZ1JlZ2lzdHJhdGlvblJlcXVlc3RzKCkuYWRkKHBlbmRpbmdSZWdpc3RyYXRpb25S
ZXF1ZXN0Q291bnQrKywgV1RGTW92ZShwZW5kaW5nUmVxdWVzdCkpOwpAQCAtMTcxLDcgKzE3Miw5
IEBAIHZvaWQgTmV0d29ya01ETlNSZWdpc3Rlcjo6dW5yZWdpc3Rlck1ETlNOYW1lcyhXZWJDb3Jl
OjpEb2N1bWVudElkZW50aWZpZXIpCiB2b2lkIE5ldHdvcmtNRE5TUmVnaXN0ZXI6OnJlZ2lzdGVy
TUROU05hbWUoTUROU1JlZ2lzdGVySWRlbnRpZmllciByZXF1ZXN0SWRlbnRpZmllciwgV2ViQ29y
ZTo6RG9jdW1lbnRJZGVudGlmaWVyIGRvY3VtZW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBp
cEFkZHJlc3MpCiB7CiAgICAgTUROU19SRUxFQVNFX0xPRygicmVnaXN0ZXJNRE5TTmFtZSBub3Qg
aW1wbGVtZW50ZWQiKTsKLSAgICBtX2Nvbm5lY3Rpb24uY29ubmVjdGlvbigpLnNlbmQoTWVzc2Fn
ZXM6OldlYk1ETlNSZWdpc3Rlcjo6RmluaXNoZWRSZWdpc3RlcmluZ01ETlNOYW1lIHsgcmVxdWVz
dElkZW50aWZpZXIsIG1ha2VVbmV4cGVjdGVkKFdlYkNvcmU6Ok1ETlNSZWdpc3RlckVycm9yOjpO
b3RJbXBsZW1lbnRlZCkgfSwgMCk7CisgICAgYXV0byBuYW1lID0gbWFrZVN0cmluZyhjcmVhdGVD
YW5vbmljYWxVVUlEU3RyaW5nKCksICIubG9jYWwiKTsKKworICAgIG1fY29ubmVjdGlvbi5jb25u
ZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6V2ViTUROU1JlZ2lzdGVyOjpGaW5pc2hlZFJlZ2lzdGVy
aW5nTUROU05hbWUgeyByZXF1ZXN0SWRlbnRpZmllciwgbmFtZSwgV2ViQ29yZTo6TUROU1JlZ2lz
dGVyRXJyb3I6Ok5vdEltcGxlbWVudGVkIH0sIDApOwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0Cmlu
ZGV4IDdkYmFjZDE4YzBjMjE4ZjI4ZDhjZDQ0MDUwMjc4ZTQ4OThkZjFjNWMuLjRlNWU1MTRkNjU2
Mzg2MjY1YjliMzc5NTc4NDgyNGVlMmU5ZjU2M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtNjM5LDYgKzYz
OSw3IEBAIFdlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRQcm92aWRlci5jcHAKIFdlYlByb2Nl
c3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uY3BwCiAKIFdlYlByb2Nlc3MvTmV0d29yay93ZWJy
dGMvTGliV2ViUlRDTmV0d29yay5jcHAKK1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2Vi
UlRDTmV0d29ya01hbmFnZXIuY3BwCiBXZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJU
Q1Byb3ZpZGVyLmNwcAogV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENSZXNvbHZl
ci5jcHAKIFdlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDU29ja2V0LmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOWU0
MTZlZjM3NDQ0ZTQyZWJlNjhjMGUxMDAyNGJjZWNmZmIyN2Y4OC4uMjcxNGZmYWVmYjM4MDU4NWQ3
NWY3NjUwYzQwYzA3Y2UzYjVkZGZjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zODU0LDYgKzM4NTQsOCBAQAogCQk0MUI3RUQ2RjIw
Njk2NTkwMDA4N0Q4NTMgLyogTmV0d29ya01ETlNSZWdpc3Rlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOZXR3b3JrTUROU1JlZ2lzdGVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFCN0VENzAyMDY5NjU5MDAwODdEODUzIC8qIE5ldHdvcmtN
RE5TUmVnaXN0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya01E
TlNSZWdpc3Rlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUI3RUQ3MTIwNjk2
NTkwMDA4N0Q4NTMgLyogTmV0d29ya01ETlNSZWdpc3Rlci5tZXNzYWdlcy5pbiAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBOZXR3b3JrTUROU1JlZ2lzdGVyLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk0MUMxNEJDMjI2REU2QTJGMDA2ODVCRjUgLyogTGliV2ViUlRD
TmV0d29ya01hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTGliV2ViUlRDTmV0d29ya01h
bmFnZXIuY3BwOyBwYXRoID0gTmV0d29yay93ZWJydGMvTGliV2ViUlRDTmV0d29ya01hbmFnZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUMxNEJDMzI2REU2QTJGMDA2ODVC
RjUgLyogTGliV2ViUlRDTmV0d29ya01hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTGliV2ViUlRD
TmV0d29ya01hbmFnZXIuaDsgcGF0aCA9IE5ldHdvcmsvd2VicnRjL0xpYldlYlJUQ05ldHdvcmtN
YW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQzNCODg1MjY0NDRBQUIw
MDRFRDRERSAvKiBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFn
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5h
bFVuaXRNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQzNCODg2MjY0
NDRBQUMwMDRFRDRERSAvKiBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5p
dE1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVu
ZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDFDM0I4ODcyNjQ0NEFEMzAwNEVENERFIC8qIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRl
cmVySW50ZXJuYWxVbml0SWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdElkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTg1MTgsNiArODUyMCw4IEBACiAJCQkJNDE2RjgwODkyNDVDN0ZGNTAw
QjY4RjAyIC8qIExpYldlYlJUQ05ldHdvcmsuY3BwICovLAogCQkJCTQxMUIyMjYyMUUzNzEyNDQw
MDRGNzM2MyAvKiBMaWJXZWJSVENOZXR3b3JrLmggKi8sCiAJCQkJNDE2RjgwODYyNDVCMzk3NDAw
QjY4RjAyIC8qIExpYldlYlJUQ05ldHdvcmsubWVzc2FnZXMuaW4gKi8sCisJCQkJNDFDMTRCQzIy
NkRFNkEyRjAwNjg1QkY1IC8qIExpYldlYlJUQ05ldHdvcmtNYW5hZ2VyLmNwcCAqLywKKwkJCQk0
MUMxNEJDMzI2REU2QTJGMDA2ODVCRjUgLyogTGliV2ViUlRDTmV0d29ya01hbmFnZXIuaCAqLywK
IAkJCQk0MTMwNzVBNzFERTg1RUU3MDAzOUVDNjkgLyogTGliV2ViUlRDUHJvdmlkZXIuY3BwICov
LAogCQkJCTQxMzA3NUE4MURFODVFRTcwMDM5RUM2OSAvKiBMaWJXZWJSVENQcm92aWRlci5oICov
LAogCQkJCTQxRkFGNUY3MUUzQzBCNDcwMDFBRTY3OCAvKiBMaWJXZWJSVENSZXNvbHZlci5jcHAg
Ki8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMv
TGliV2ViUlRDTmV0d29ya01hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvd2VicnRjL0xpYldlYlJUQ05ldHdvcmtNYW5hZ2VyLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMTUy
ZTdjNGQxYjZkMzkwZDY5OTA2ZjYxNDhiNGE1ZjQ3YWU4OTRmCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ05ldHdvcmtN
YW5hZ2VyLmNwcApAQCAtMCwwICsxLDE1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJMaWJXZWJSVENOZXR3b3JrTWFuYWdlci5oIgorCisjaWYgVVNFKExJ
QldFQlJUQykKKworI2luY2x1ZGUgIkxpYldlYlJUQ05ldHdvcmsuaCIKKyNpbmNsdWRlICJXZWJQ
cm9jZXNzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVudC5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvTGliV2ViUlRDVXRpbHMuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7Cit1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKKworTGliV2ViUlRDTmV0d29ya01hbmFnZXIqIExpYldlYlJUQ05ldHdvcmtN
YW5hZ2VyOjpnZXRPckNyZWF0ZShXZWJDb3JlOjpEb2N1bWVudElkZW50aWZpZXIgaWRlbnRpZmll
cikKK3sKKyAgICBhdXRvKiBkb2N1bWVudCA9IERvY3VtZW50OjphbGxEb2N1bWVudHNNYXAoKS5n
ZXQoaWRlbnRpZmllcik7CisgICAgaWYgKCFkb2N1bWVudCkKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisKKyAgICBhdXRvKiBuZXR3b3JrTWFuYWdlciA9IHN0YXRpY19jYXN0PExpYldlYlJUQ05l
dHdvcmtNYW5hZ2VyKj4oZG9jdW1lbnQtPnJ0Y05ldHdvcmtNYW5hZ2VyKCkpOworICAgIGlmICgh
bmV0d29ya01hbmFnZXIpIHsKKyAgICAgICAgYXV0byBuZXdOZXR3b3JrTWFuYWdlciA9IGFkb3B0
UmVmKCpuZXcgTGliV2ViUlRDTmV0d29ya01hbmFnZXIoaWRlbnRpZmllcikpOworICAgICAgICBu
ZXR3b3JrTWFuYWdlciA9IG5ld05ldHdvcmtNYW5hZ2VyLnB0cigpOworICAgICAgICBkb2N1bWVu
dC0+c2V0UlRDTmV0d29ya01hbmFnZXIoV1RGTW92ZShuZXdOZXR3b3JrTWFuYWdlcikpOworICAg
IH0KKworICAgIHJldHVybiBuZXR3b3JrTWFuYWdlcjsKK30KKworTGliV2ViUlRDTmV0d29ya01h
bmFnZXI6OkxpYldlYlJUQ05ldHdvcmtNYW5hZ2VyKFdlYkNvcmU6OkRvY3VtZW50SWRlbnRpZmll
ciBkb2N1bWVudElkZW50aWZpZXIpCisgICAgOiBtX2RvY3VtZW50SWRlbnRpZmllcihkb2N1bWVu
dElkZW50aWZpZXIpCit7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkubGliV2ViUlRDTmV0
d29yaygpLm1vbml0b3IoKS5hZGRPYnNlcnZlcigqdGhpcyk7Cit9CisKK0xpYldlYlJUQ05ldHdv
cmtNYW5hZ2VyOjp+TGliV2ViUlRDTmV0d29ya01hbmFnZXIoKQoreworICAgIFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLmxpYldlYlJUQ05ldHdvcmsoKS5tb25pdG9yKCkucmVtb3ZlT2JzZXJ2ZXIo
KnRoaXMpOworfQorCit2b2lkIExpYldlYlJUQ05ldHdvcmtNYW5hZ2VyOjp1bnJlZ2lzdGVyTURO
U05hbWVzKCkKK3sKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5saWJXZWJSVENOZXR3b3Jr
KCkubWRuc1JlZ2lzdGVyKCkudW5yZWdpc3Rlck1ETlNOYW1lcyhtX2RvY3VtZW50SWRlbnRpZmll
cik7Cit9CisKK3ZvaWQgTGliV2ViUlRDTmV0d29ya01hbmFnZXI6OlN0YXJ0VXBkYXRpbmcoKQor
eworICAgIGNhbGxPbk1haW5SdW5Mb29wKFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRo
aXMpXSB7CisgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgYXV0byYgbW9uaXRvciA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmxpYldlYlJUQ05l
dHdvcmsoKS5tb25pdG9yKCk7CisgICAgICAgIGlmIChtX3JlY2VpdmVkTmV0d29ya0xpc3QpIHsK
KyAgICAgICAgICAgIFdlYkNvcmU6OkxpYldlYlJUQ1Byb3ZpZGVyOjpjYWxsT25XZWJSVENOZXR3
b3JrVGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKKyAgICAg
ICAgICAgICAgICBTaWduYWxOZXR3b3Jrc0NoYW5nZWQoKTsKKyAgICAgICAgICAgIH0pOworICAg
ICAgICB9IGVsc2UgaWYgKG1vbml0b3IuZGlkUmVjZWl2ZU5ldHdvcmtMaXN0KCkpCisgICAgICAg
ICAgICBuZXR3b3Jrc0NoYW5nZWQobW9uaXRvci5uZXR3b3JrTGlzdCgpICwgbW9uaXRvci5pcHY0
KCksIG1vbml0b3IuaXB2NigpKTsKKyAgICAgICAgbW9uaXRvci5zdGFydFVwZGF0aW5nKCk7Cisg
ICAgfSk7Cit9CisKK3ZvaWQgTGliV2ViUlRDTmV0d29ya01hbmFnZXI6OlN0b3BVcGRhdGluZygp
Cit7CisgICAgY2FsbE9uTWFpblJ1bkxvb3AoW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyld
IHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkubGliV2ViUlRDTmV0d29yaygpLm1vbml0b3IoKS5zdG9w
VXBkYXRpbmcoKTsKKyAgICB9KTsKK30KKword2VicnRjOjpNZG5zUmVzcG9uZGVySW50ZXJmYWNl
KiBMaWJXZWJSVENOZXR3b3JrTWFuYWdlcjo6R2V0TWRuc1Jlc3BvbmRlcigpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1fdXNlTUROU0NhbmRpZGF0ZXMgPyBjb25zdF9jYXN0PExpYldlYlJUQ05ldHdv
cmtNYW5hZ2VyKj4odGhpcykgOiBudWxscHRyOworfQorCit2b2lkIExpYldlYlJUQ05ldHdvcmtN
YW5hZ2VyOjpuZXR3b3Jrc0NoYW5nZWQoY29uc3QgVmVjdG9yPFJUQ05ldHdvcms+JiBuZXR3b3Jr
cywgY29uc3QgUlRDTmV0d29yazo6SVBBZGRyZXNzJiBpcHY0LCBjb25zdCBSVENOZXR3b3JrOjpJ
UEFkZHJlc3MmIGlwdjYpCit7CisgICAgYm9vbCBmb3JjZVNpZ25hbGluZyA9ICFtX3JlY2VpdmVk
TmV0d29ya0xpc3Q7CisgICAgbV9yZWNlaXZlZE5ldHdvcmtMaXN0ID0gdHJ1ZTsKKworICAgIFdl
YkNvcmU6OkxpYldlYlJUQ1Byb3ZpZGVyOjpjYWxsT25XZWJSVENOZXR3b3JrVGhyZWFkKFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIG5ldHdvcmtzLCBpcHY0LCBpcHY2LCBm
b3JjZVNpZ25hbGluZ10geworICAgICAgICBzdGQ6OnZlY3RvcjxydGM6Ok5ldHdvcmsqPiBuZXR3
b3JrTGlzdChuZXR3b3Jrcy5zaXplKCkpOworICAgICAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7
IGluZGV4IDwgbmV0d29ya3Muc2l6ZSgpOyArK2luZGV4KQorICAgICAgICAgICAgbmV0d29ya0xp
c3RbaW5kZXhdID0gbmV3IHJ0Yzo6TmV0d29yayhuZXR3b3Jrc1tpbmRleF0udmFsdWUoKSk7CisK
KyAgICAgICAgYm9vbCBoYXNDaGFuZ2VkOworICAgICAgICBzZXRfZGVmYXVsdF9sb2NhbF9hZGRy
ZXNzZXMoaXB2NC52YWx1ZSwgaXB2Ni52YWx1ZSk7CisgICAgICAgIE1lcmdlTmV0d29ya0xpc3Qo
bmV0d29ya0xpc3QsICZoYXNDaGFuZ2VkKTsKKyAgICAgICAgaWYgKGhhc0NoYW5nZWQgfHwgZm9y
Y2VTaWduYWxpbmcpCisgICAgICAgICAgICBTaWduYWxOZXR3b3Jrc0NoYW5nZWQoKTsKKyAgICB9
KTsKKworfQorCit2b2lkIExpYldlYlJUQ05ldHdvcmtNYW5hZ2VyOjpuZXR3b3JrUHJvY2Vzc0Ny
YXNoZWQoKQoreworICAgIG1fcmVjZWl2ZWROZXR3b3JrTGlzdCA9IGZhbHNlOworICAgIGlmICgh
V2ViQ29yZTo6TGliV2ViUlRDUHJvdmlkZXI6Omhhc1dlYlJUQ1RocmVhZHMoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgLy8gSW4gY2FzZSB3ZSBoYXZlIGNsaWVudHMgd2FpdGluZyBmb3IgbmV0
d29ya3NDaGFuZ2VkLCB3ZSBjYWxsIFNpZ25hbE5ldHdvcmtzQ2hhbmdlZCB0byBtYWtlIHN1cmUg
dGhleSBkbyBub3Qgd2FpdCBmb3Igbm90aGluZy4KKyAgICBXZWJDb3JlOjpMaWJXZWJSVENQcm92
aWRlcjo6Y2FsbE9uV2ViUlRDTmV0d29ya1RocmVhZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpXSB7CisgICAgICAgIFNpZ25hbE5ldHdvcmtzQ2hhbmdlZCgpOworICAgIH0p
OworfQorCit2b2lkIExpYldlYlJUQ05ldHdvcmtNYW5hZ2VyOjpDcmVhdGVOYW1lRm9yQWRkcmVz
cyhjb25zdCBydGM6OklQQWRkcmVzcyYgYWRkcmVzcywgTmFtZUNyZWF0ZWRDYWxsYmFjayBjYWxs
YmFjaykKK3sKKyAgICBjYWxsT25NYWluUnVuTG9vcChbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0
aGlzKSwgYWRkcmVzcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsK
KyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5saWJXZWJSVENOZXR3b3JrKCkubWRuc1JlZ2lzdGVyKCku
cmVnaXN0ZXJNRE5TTmFtZSh3ZWFrVGhpcy0+bV9kb2N1bWVudElkZW50aWZpZXIsIGZyb21TdGRT
dHJpbmcoYWRkcmVzcy5Ub1N0cmluZygpKSwgW2FkZHJlc3MsIGNhbGxiYWNrID0gV1RGTW92ZShj
YWxsYmFjayldKGF1dG8gbmFtZSwgYXV0byBlcnJvcikgbXV0YWJsZSB7CisgICAgICAgICAgICBX
ZWJDb3JlOjpMaWJXZWJSVENQcm92aWRlcjo6Y2FsbE9uV2ViUlRDTmV0d29ya1RocmVhZChbYWRk
cmVzcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgbmFtZSA9IFdURk1vdmUobmFtZSku
aXNvbGF0ZWRDb3B5KCksIGVycm9yXSB7CisgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJS
T1JfSUYoZXJyb3IsIFdlYlJUQywgIk1ETlMgcmVnaXN0cmF0aW9uIG9mIGEgaG9zdCBjYW5kaWRh
dGUgZmFpbGVkIHdpdGggZXJyb3IgJWQiLCAqZXJyb3IpOworICAgICAgICAgICAgICAgIC8vIElu
IGNhc2Ugb2YgZXJyb3IsIHdlIHByb3ZpZGUgdGhlIG5hbWUgdG8gbGV0IGdhdGhlcmluZyBjb21w
bGV0ZS4KKyAgICAgICAgICAgICAgICBjYWxsYmFjayhhZGRyZXNzLCBuYW1lLnV0ZjgoKS5kYXRh
KCkpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0pOworfQorCit2b2lkIExp
YldlYlJUQ05ldHdvcmtNYW5hZ2VyOjpSZW1vdmVOYW1lRm9yQWRkcmVzcyhjb25zdCBydGM6OklQ
QWRkcmVzcyYsIE5hbWVSZW1vdmVkQ2FsbGJhY2spCit7CisgICAgLy8gTGliV2ViUlRDIGJhY2tl
bmQgZGVmaW5lcyB0aGlzIG1ldGhvZCBidXQgZG9lcyBub3QgY2FsbCBpdC4KKyAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBV
U0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvd2VicnRjL0xpYldlYlJUQ05ldHdvcmtNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDTmV0d29ya01hbmFnZXIuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4yODZkYTY3MjIxYjA1M2FmOWNhM2M0MGZiMjU2ZmJlNjZhNzkxMWEyCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ05l
dHdvcmtNYW5hZ2VyLmgKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaWYgVVNFKExJQldFQlJUQykKKworI2luY2x1ZGUgIldlYlJUQ01vbml0b3IuaCIKKyNp
bmNsdWRlIDxXZWJDb3JlL0RvY3VtZW50SWRlbnRpZmllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
TGliV2ViUlRDUHJvdmlkZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1JUQ05ldHdvcmtNYW5hZ2Vy
Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBMaWJXZWJSVENOZXR3b3JrTWFuYWdl
ciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpSVENOZXR3b3JrTWFuYWdlciwgcHVibGljIHJ0Yzo6
TmV0d29ya01hbmFnZXJCYXNlLCBwdWJsaWMgd2VicnRjOjpNZG5zUmVzcG9uZGVySW50ZXJmYWNl
LCBwdWJsaWMgV2ViUlRDTW9uaXRvcjo6T2JzZXJ2ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOworcHVibGljOgorICAgIHN0YXRpYyBMaWJXZWJSVENOZXR3b3JrTWFuYWdlciogZ2V0
T3JDcmVhdGUoV2ViQ29yZTo6RG9jdW1lbnRJZGVudGlmaWVyKTsKKyAgICB+TGliV2ViUlRDTmV0
d29ya01hbmFnZXIoKTsKKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBMaWJXZWJSVENOZXR3b3Jr
TWFuYWdlcihXZWJDb3JlOjpEb2N1bWVudElkZW50aWZpZXIpOworCisgICAgLy8gV2ViQ29yZTo6
UlRDTmV0d29ya01hbmFnZXIKKyAgICB2b2lkIHNldElDRUNhbmRpZGF0ZUZpbHRlcmluZyhib29s
IGRvRmlsdGVyaW5nKSBmaW5hbCB7IG1fdXNlTUROU0NhbmRpZGF0ZXMgPSBkb0ZpbHRlcmluZzsg
fQorICAgIHZvaWQgdW5yZWdpc3Rlck1ETlNOYW1lcygpIGZpbmFsOworCisgICAgLy8gd2VicnRj
OjpOZXR3b3JrTWFuYWdlckJhc2UKKyAgICB2b2lkIFN0YXJ0VXBkYXRpbmcoKSBmaW5hbDsKKyAg
ICB2b2lkIFN0b3BVcGRhdGluZygpIGZpbmFsOworICAgIHdlYnJ0Yzo6TWRuc1Jlc3BvbmRlcklu
dGVyZmFjZSogR2V0TWRuc1Jlc3BvbmRlcigpIGNvbnN0IGZpbmFsOworCisgICAgLy8gd2VicnRj
OjpNZG5zUmVzcG9uZGVySW50ZXJmYWNlCisgICAgdm9pZCBDcmVhdGVOYW1lRm9yQWRkcmVzcyhj
b25zdCBydGM6OklQQWRkcmVzcyYsIE5hbWVDcmVhdGVkQ2FsbGJhY2spOworICAgIHZvaWQgUmVt
b3ZlTmFtZUZvckFkZHJlc3MoY29uc3QgcnRjOjpJUEFkZHJlc3MmLCBOYW1lUmVtb3ZlZENhbGxi
YWNrKTsKKworICAgIC8vIFdlYlJUQ01vbml0b3I6Ok9ic2VydmVyCisgICAgdm9pZCBuZXR3b3Jr
c0NoYW5nZWQoY29uc3QgVmVjdG9yPFJUQ05ldHdvcms+JiwgY29uc3QgUlRDTmV0d29yazo6SVBB
ZGRyZXNzJiwgY29uc3QgUlRDTmV0d29yazo6SVBBZGRyZXNzJikgZmluYWw7CisgICAgdm9pZCBu
ZXR3b3JrUHJvY2Vzc0NyYXNoZWQoKSBmaW5hbDsKKworICAgIFdlYkNvcmU6OkRvY3VtZW50SWRl
bnRpZmllciBtX2RvY3VtZW50SWRlbnRpZmllcjsKKyAgICBib29sIG1fdXNlTUROU0NhbmRpZGF0
ZXMgeyB0cnVlIH07CisgICAgYm9vbCBtX3JlY2VpdmVkTmV0d29ya0xpc3QgeyBmYWxzZSB9Owor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQcm92aWRl
ci5jcHAKaW5kZXggOTY4YzlmMzA0YjY1NDgwOWY5OTI2MjU2YzEwMDU1MDdjOTcxMmY1NS4uZjlj
NGE5MGQ4MjFkYWY3YThhYjM5YWZkZDMxNjQyMDU4NTE2M2I3NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDUHJv
dmlkZXIuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjZW5kaWYKIAogI2luY2x1ZGUgIkxpYldlYlJU
Q05ldHdvcmsuaCIKKyNpbmNsdWRlICJMaWJXZWJSVENOZXR3b3JrTWFuYWdlci5oIgogI2luY2x1
ZGUgIlJUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlci5oIgogI2luY2x1ZGUgIldlYlBhZ2UuaCIK
ICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCkBAIC01NCw3ICs1NSw3IEBAIHByaXZhdGU6CiAgICAg
fQogfTsKIAotcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZh
Y2U+IExpYldlYlJUQ1Byb3ZpZGVyOjpjcmVhdGVQZWVyQ29ubmVjdGlvbih3ZWJydGM6OlBlZXJD
b25uZWN0aW9uT2JzZXJ2ZXImIG9ic2VydmVyLCBydGM6OlBhY2tldFNvY2tldEZhY3RvcnkqIHNv
Y2tldEZhY3RvcnksIHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OlJUQ0NvbmZpZ3Vy
YXRpb24mJiBjb25maWd1cmF0aW9uKQorcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6UGVlckNv
bm5lY3Rpb25JbnRlcmZhY2U+IExpYldlYlJUQ1Byb3ZpZGVyOjpjcmVhdGVQZWVyQ29ubmVjdGlv
bihEb2N1bWVudElkZW50aWZpZXIgaWRlbnRpZmllciwgd2VicnRjOjpQZWVyQ29ubmVjdGlvbk9i
c2VydmVyJiBvYnNlcnZlciwgcnRjOjpQYWNrZXRTb2NrZXRGYWN0b3J5KiBzb2NrZXRGYWN0b3J5
LCB3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpSVENDb25maWd1cmF0aW9uJiYgY29u
ZmlndXJhdGlvbikKIHsKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIFBMQVRGT1JNKENPQ09B
KSAmJiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAgICAgaWYgKCFtX2RpZEluaXRpYWxpemVDYWxs
YmFjaykgewpAQCAtNjcsMjIgKzY4LDE3IEBAIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlBl
ZXJDb25uZWN0aW9uSW50ZXJmYWNlPiBMaWJXZWJSVENQcm92aWRlcjo6Y3JlYXRlUGVlCiAKICAg
ICBhdXRvJiBuZXR3b3JrTW9uaXRvciA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmxpYldlYlJU
Q05ldHdvcmsoKS5tb25pdG9yKCk7CiAgICAgbmV0d29ya01vbml0b3Iuc2V0RW51bWVyYXRpbmdB
bGxOZXR3b3JrSW50ZXJmYWNlc0VuYWJsZWQoaXNFbnVtZXJhdGluZ0FsbE5ldHdvcmtJbnRlcmZh
Y2VzRW5hYmxlZCgpKTsKLSAgICByZXR1cm4gV2ViQ29yZTo6TGliV2ViUlRDUHJvdmlkZXI6OmNy
ZWF0ZVBlZXJDb25uZWN0aW9uKG9ic2VydmVyLCBuZXR3b3JrTW9uaXRvciwgKnNvY2tldEZhY3Rv
cnksIFdURk1vdmUoY29uZmlndXJhdGlvbiksIG1ha2VVbmlxdWU8QXN5bmNSZXNvbHZlckZhY3Rv
cnk+KCkpOwotfQogCi12b2lkIExpYldlYlJUQ1Byb3ZpZGVyOjpkaXNhYmxlTm9uTG9jYWxob3N0
Q29ubmVjdGlvbnMoKQotewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmxpYldlYlJUQ05l
dHdvcmsoKS5kaXNhYmxlTm9uTG9jYWxob3N0Q29ubmVjdGlvbnMoKTsKLX0KKyAgICBhdXRvKiBu
ZXR3b3JrTWFuYWdlciA9IExpYldlYlJUQ05ldHdvcmtNYW5hZ2VyOjpnZXRPckNyZWF0ZShpZGVu
dGlmaWVyKTsKKyAgICBpZiAoIW5ldHdvcmtNYW5hZ2VyKQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAotdm9pZCBMaWJXZWJSVENQcm92aWRlcjo6dW5yZWdpc3Rlck1ETlNOYW1lcyhEb2N1bWVu
dElkZW50aWZpZXIgZG9jdW1lbnRJZGVudGlmaWVyKQotewotICAgIFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLmxpYldlYlJUQ05ldHdvcmsoKS5tZG5zUmVnaXN0ZXIoKS51bnJlZ2lzdGVyTUROU05h
bWVzKGRvY3VtZW50SWRlbnRpZmllcik7CisgICAgcmV0dXJuIFdlYkNvcmU6OkxpYldlYlJUQ1By
b3ZpZGVyOjpjcmVhdGVQZWVyQ29ubmVjdGlvbihvYnNlcnZlciwgKm5ldHdvcmtNYW5hZ2VyLCAq
c29ja2V0RmFjdG9yeSwgV1RGTW92ZShjb25maWd1cmF0aW9uKSwgbWFrZVVuaXF1ZTxBc3luY1Jl
c29sdmVyRmFjdG9yeT4oKSk7CiB9CiAKLXZvaWQgTGliV2ViUlRDUHJvdmlkZXI6OnJlZ2lzdGVy
TUROU05hbWUoRG9jdW1lbnRJZGVudGlmaWVyIGRvY3VtZW50SWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiBpcEFkZHJlc3MsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoTUROU05hbWVPckVycm9yJiYp
PiYmIGNhbGxiYWNrKQordm9pZCBMaWJXZWJSVENQcm92aWRlcjo6ZGlzYWJsZU5vbkxvY2FsaG9z
dENvbm5lY3Rpb25zKCkKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5saWJXZWJSVENO
ZXR3b3JrKCkubWRuc1JlZ2lzdGVyKCkucmVnaXN0ZXJNRE5TTmFtZShkb2N1bWVudElkZW50aWZp
ZXIsIGlwQWRkcmVzcywgV1RGTW92ZShjYWxsYmFjaykpOworICAgIFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLmxpYldlYlJUQ05ldHdvcmsoKS5kaXNhYmxlTm9uTG9jYWxob3N0Q29ubmVjdGlvbnMo
KTsKIH0KIAogY2xhc3MgUlRDU29ja2V0RmFjdG9yeSBmaW5hbCA6IHB1YmxpYyBMaWJXZWJSVENQ
cm92aWRlcjo6U3VzcGVuZGFibGVTb2NrZXRGYWN0b3J5IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmgK
aW5kZXggNzJhZDNhNDI5ZmVmYmZhMWQ0Y2FlZjVjMmJmN2M5NTczMDFlMTIwMS4uODgzYWRmY2Fj
OTMwYzA2ZDk1OGQyMzk4ZjI3MGM3NWYxYzY0NGU4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmgK
QEAgLTU0LDEwICs1NCw4IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRy
PFN1c3BlbmRhYmxlU29ja2V0RmFjdG9yeT4gY3JlYXRlU29ja2V0RmFjdG9yeShTdHJpbmcmJiAv
KiB1c2VyQWdlbnQgKi8sIGJvb2wgLyogaXNGaXJzdFBhcnR5ICovLCBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiYmKSBmaW5hbDsKIAotICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlBl
ZXJDb25uZWN0aW9uSW50ZXJmYWNlPiBjcmVhdGVQZWVyQ29ubmVjdGlvbih3ZWJydGM6OlBlZXJD
b25uZWN0aW9uT2JzZXJ2ZXImLCBydGM6OlBhY2tldFNvY2tldEZhY3RvcnkqLCB3ZWJydGM6OlBl
ZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpSVENDb25maWd1cmF0aW9uJiYpIGZpbmFsOworICAgIHJ0
Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlPiBjcmVhdGVQ
ZWVyQ29ubmVjdGlvbihXZWJDb3JlOjpEb2N1bWVudElkZW50aWZpZXIsIHdlYnJ0Yzo6UGVlckNv
bm5lY3Rpb25PYnNlcnZlciYsIHJ0Yzo6UGFja2V0U29ja2V0RmFjdG9yeSosIHdlYnJ0Yzo6UGVl
ckNvbm5lY3Rpb25JbnRlcmZhY2U6OlJUQ0NvbmZpZ3VyYXRpb24mJikgZmluYWw7CiAKLSAgICB2
b2lkIHVucmVnaXN0ZXJNRE5TTmFtZXMoV2ViQ29yZTo6RG9jdW1lbnRJZGVudGlmaWVyKSBmaW5h
bDsKLSAgICB2b2lkIHJlZ2lzdGVyTUROU05hbWUoV2ViQ29yZTo6RG9jdW1lbnRJZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmIGlwQWRkcmVzcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChNRE5TTmFt
ZU9yRXJyb3ImJik+JiYpIGZpbmFsOwogICAgIHZvaWQgZGlzYWJsZU5vbkxvY2FsaG9zdENvbm5l
Y3Rpb25zKCkgZmluYWw7CiAgICAgdm9pZCBzdGFydGVkTmV0d29ya1RocmVhZCgpIGZpbmFsOwog
ICAgIFJlZlB0cjxXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXJDb25uZWN0aW9u
PiBjcmVhdGVSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXJDb25uZWN0aW9uKCkgZmluYWw7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvV2ViTURO
U1JlZ2lzdGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9X
ZWJNRE5TUmVnaXN0ZXIuY3BwCmluZGV4IDUxNTkwZjlhY2NlNjI0NDA2OGIxNDdjZTZhOWM3YzE4
MjU3NTc3NjEuLjc2MDIwN2VhNTliY2EyNTQ1MjJmNTZjNTlhNTI0NWU1OTVhOGRlMmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJNRE5TUmVn
aXN0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9X
ZWJNRE5TUmVnaXN0ZXIuY3BwCkBAIC0zNiwyMiArMzYsMjIgQEAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLXZvaWQgV2ViTUROU1JlZ2lzdGVyOjpmaW5p
c2hlZFJlZ2lzdGVyaW5nTUROU05hbWUoTUROU1JlZ2lzdGVySWRlbnRpZmllciBpZGVudGlmaWVy
LCBMaWJXZWJSVENQcm92aWRlcjo6TUROU05hbWVPckVycm9yJiYgcmVzdWx0KQordm9pZCBXZWJN
RE5TUmVnaXN0ZXI6OmZpbmlzaGVkUmVnaXN0ZXJpbmdNRE5TTmFtZShNRE5TUmVnaXN0ZXJJZGVu
dGlmaWVyIGlkZW50aWZpZXIsIFN0cmluZyYmIG5hbWUsIHN0ZDo6b3B0aW9uYWw8TUROU1JlZ2lz
dGVyRXJyb3I+IGVycm9yKQogewogICAgIGF1dG8gcGVuZGluZ1JlZ2lzdHJhdGlvbiA9IG1fcGVu
ZGluZ1JlZ2lzdHJhdGlvbnMudGFrZShpZGVudGlmaWVyKTsKICAgICBpZiAoIXBlbmRpbmdSZWdp
c3RyYXRpb24uY2FsbGJhY2spCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChyZXN1bHQuaGFz
X3ZhbHVlKCkpIHsKKyAgICBpZiAoIWVycm9yKSB7CiAgICAgICAgIGF1dG8gaXRlcmF0b3IgPSBt
X3JlZ2lzdGVyaW5nRG9jdW1lbnRzLmZpbmQocGVuZGluZ1JlZ2lzdHJhdGlvbi5kb2N1bWVudElk
ZW50aWZpZXIpOwogICAgICAgICBpZiAoaXRlcmF0b3IgPT0gbV9yZWdpc3RlcmluZ0RvY3VtZW50
cy5lbmQoKSkgewotICAgICAgICAgICAgcGVuZGluZ1JlZ2lzdHJhdGlvbi5jYWxsYmFjayhtYWtl
VW5leHBlY3RlZChXZWJDb3JlOjpNRE5TUmVnaXN0ZXJFcnJvcjo6RE5TU0QpKTsKKyAgICAgICAg
ICAgIHBlbmRpbmdSZWdpc3RyYXRpb24uY2FsbGJhY2sobmFtZSwgV2ViQ29yZTo6TUROU1JlZ2lz
dGVyRXJyb3I6OkROU1NEKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAg
ICBpdGVyYXRvci0+dmFsdWUuYWRkKHBlbmRpbmdSZWdpc3RyYXRpb24uaXBBZGRyZXNzLCByZXN1
bHQudmFsdWUoKSk7CisgICAgICAgIGl0ZXJhdG9yLT52YWx1ZS5hZGQocGVuZGluZ1JlZ2lzdHJh
dGlvbi5pcEFkZHJlc3MsIG5hbWUpOwogICAgIH0KIAotICAgIHBlbmRpbmdSZWdpc3RyYXRpb24u
Y2FsbGJhY2soV1RGTW92ZShyZXN1bHQpKTsKKyAgICBwZW5kaW5nUmVnaXN0cmF0aW9uLmNhbGxi
YWNrKG5hbWUsIGVycm9yKTsKIH0KIAogdm9pZCBXZWJNRE5TUmVnaXN0ZXI6OnVucmVnaXN0ZXJN
RE5TTmFtZXMoRG9jdW1lbnRJZGVudGlmaWVyIGlkZW50aWZpZXIpCkBAIC02Myw3ICs2Myw3IEBA
IHZvaWQgV2ViTUROU1JlZ2lzdGVyOjp1bnJlZ2lzdGVyTUROU05hbWVzKERvY3VtZW50SWRlbnRp
ZmllciBpZGVudGlmaWVyKQogICAgIGNvbm5lY3Rpb24uc2VuZChNZXNzYWdlczo6TmV0d29ya01E
TlNSZWdpc3Rlcjo6VW5yZWdpc3Rlck1ETlNOYW1lcyB7IGlkZW50aWZpZXIgfSwgMCk7CiB9CiAK
LXZvaWQgV2ViTUROU1JlZ2lzdGVyOjpyZWdpc3Rlck1ETlNOYW1lKERvY3VtZW50SWRlbnRpZmll
ciBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGlwQWRkcmVzcywgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChMaWJXZWJSVENQcm92aWRlcjo6TUROU05hbWVPckVycm9yJiYpPiYmIGNhbGxiYWNrKQor
dm9pZCBXZWJNRE5TUmVnaXN0ZXI6OnJlZ2lzdGVyTUROU05hbWUoRG9jdW1lbnRJZGVudGlmaWVy
IGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgaXBBZGRyZXNzLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IFN0cmluZyYsIHN0ZDo6b3B0aW9uYWw8TUROU1JlZ2lzdGVyRXJyb3I+KT4mJiBj
YWxsYmFjaykKIHsKICAgICBhdXRvJiBtYXAgPSBtX3JlZ2lzdGVyaW5nRG9jdW1lbnRzLmVuc3Vy
ZShpZGVudGlmaWVyLCBbXSB7CiAgICAgICAgIHJldHVybiBIYXNoTWFwPFN0cmluZywgU3RyaW5n
PiB7IH07CkBAIC03MSwxNiArNzEsMTcgQEAgdm9pZCBXZWJNRE5TUmVnaXN0ZXI6OnJlZ2lzdGVy
TUROU05hbWUoRG9jdW1lbnRJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFN0cmkKIAogICAg
IGF1dG8gaXRlcmF0b3IgPSBtYXAuZmluZChpcEFkZHJlc3MpOwogICAgIGlmIChpdGVyYXRvciAh
PSBtYXAuZW5kKCkpIHsKLSAgICAgICAgY2FsbGJhY2soaXRlcmF0b3ItPnZhbHVlKTsKKyAgICAg
ICAgY2FsbGJhY2soaXRlcmF0b3ItPnZhbHVlLCB7IH0pOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCiAgICAgYXV0byByZXF1ZXN0SWRlbnRpZmllciA9IE1ETlNSZWdpc3RlcklkZW50aWZpZXI6
OmdlbmVyYXRlKCk7CiAgICAgbV9wZW5kaW5nUmVnaXN0cmF0aW9ucy5hZGQocmVxdWVzdElkZW50
aWZpZXIsIFBlbmRpbmdSZWdpc3RyYXRpb24geyBXVEZNb3ZlKGNhbGxiYWNrKSwgaWRlbnRpZmll
ciwgaXBBZGRyZXNzIH0pOwogCisgICAgLy8gRklYTUU6IFVzZSBhc3luYyByZXBseS4KICAgICBh
dXRvJiBjb25uZWN0aW9uID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpOwogICAgIGlmICghY29ubmVjdGlvbi5zZW5k
KE1lc3NhZ2VzOjpOZXR3b3JrTUROU1JlZ2lzdGVyOjpSZWdpc3Rlck1ETlNOYW1lIHsgcmVxdWVz
dElkZW50aWZpZXIsIGlkZW50aWZpZXIsIGlwQWRkcmVzcyB9LCAwKSkKLSAgICAgICAgZmluaXNo
ZWRSZWdpc3RlcmluZ01ETlNOYW1lKHJlcXVlc3RJZGVudGlmaWVyLCBtYWtlVW5leHBlY3RlZChN
RE5TUmVnaXN0ZXJFcnJvcjo6SW50ZXJuYWwpKTsKKyAgICAgICAgZmluaXNoZWRSZWdpc3Rlcmlu
Z01ETlNOYW1lKHJlcXVlc3RJZGVudGlmaWVyLCB7IH0sIE1ETlNSZWdpc3RlckVycm9yOjpJbnRl
cm5hbCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1dlYk1ETlNSZWdpc3Rlci5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1dlYk1ETlNSZWdpc3Rlci5oCmluZGV4
IDBjMGY2MTMzYWY0NjhjOWViYjhjNjdhMmFlNGU4YzlhNzMzZWU2YWQuLjJjMGZmMGU0NjY1MTFm
OTc4ZmI4MDkyNzIwYWYwNzNkYmY1MzhmYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJNRE5TUmVnaXN0ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvV2ViTUROU1JlZ2lzdGVyLmgKQEAgLTQ2LDE1
ICs0NiwxNSBAQCBwdWJsaWM6CiAgICAgV2ViTUROU1JlZ2lzdGVyKCkgPSBkZWZhdWx0OwogCiAg
ICAgdm9pZCB1bnJlZ2lzdGVyTUROU05hbWVzKFdlYkNvcmU6OkRvY3VtZW50SWRlbnRpZmllcik7
Ci0gICAgdm9pZCByZWdpc3Rlck1ETlNOYW1lKFdlYkNvcmU6OkRvY3VtZW50SWRlbnRpZmllciwg
Y29uc3QgU3RyaW5nJiBpcEFkZHJlc3MsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6
TGliV2ViUlRDUHJvdmlkZXI6Ok1ETlNOYW1lT3JFcnJvciYmKT4mJik7CisgICAgdm9pZCByZWdp
c3Rlck1ETlNOYW1lKFdlYkNvcmU6OkRvY3VtZW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBp
cEFkZHJlc3MsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJiwgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpNRE5TUmVnaXN0ZXJFcnJvcj4pPiYmKTsKIAogICAgIHZvaWQgZGlkUmVj
ZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CiAKIHByaXZhdGU6
Ci0gICAgdm9pZCBmaW5pc2hlZFJlZ2lzdGVyaW5nTUROU05hbWUoTUROU1JlZ2lzdGVySWRlbnRp
ZmllciwgV2ViQ29yZTo6TGliV2ViUlRDUHJvdmlkZXI6Ok1ETlNOYW1lT3JFcnJvciYmKTsKKyAg
ICB2b2lkIGZpbmlzaGVkUmVnaXN0ZXJpbmdNRE5TTmFtZShNRE5TUmVnaXN0ZXJJZGVudGlmaWVy
LCBTdHJpbmcmJiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpNRE5TUmVnaXN0ZXJFcnJvcj4pOwog
CiAgICAgc3RydWN0IFBlbmRpbmdSZWdpc3RyYXRpb24gewotICAgICAgICBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFdlYkNvcmU6OkxpYldlYlJUQ1Byb3ZpZGVyOjpNRE5TTmFtZU9yRXJyb3ImJik+
IGNhbGxiYWNrOworICAgICAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYs
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6TUROU1JlZ2lzdGVyRXJyb3I+KT4gY2FsbGJhY2s7CiAg
ICAgICAgIFdlYkNvcmU6OkRvY3VtZW50SWRlbnRpZmllciBkb2N1bWVudElkZW50aWZpZXI7CiAg
ICAgICAgIFN0cmluZyBpcEFkZHJlc3M7CiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJNRE5TUmVnaXN0ZXIubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvV2ViTUROU1JlZ2lzdGVy
Lm1lc3NhZ2VzLmluCmluZGV4IGFiMTJhMWUwMTkyNmQ2YWZjYjRjMjQ3OGVkNTNmNWMzNjJhODhi
OWIuLmYxZWE1YzczMDZkMmEwYzZkZTlmMWI4MTIwNzYzZTlmZDkzMWRhNTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJNRE5TUmVnaXN0ZXIu
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRj
L1dlYk1ETlNSZWdpc3Rlci5tZXNzYWdlcy5pbgpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0
IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChD
KSAyMDE4LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0yMyw3ICsyMyw3IEBACiAjaWYgRU5BQkxFKFdFQl9SVEMpCiAK
IG1lc3NhZ2VzIC0+IFdlYk1ETlNSZWdpc3RlciBOb3RSZWZDb3VudGVkIHsKLSAgICB2b2lkIEZp
bmlzaGVkUmVnaXN0ZXJpbmdNRE5TTmFtZShXZWJLaXQ6Ok1ETlNSZWdpc3RlcklkZW50aWZpZXIg
aWRlbnRpZmllciwgV2ViQ29yZTo6TGliV2ViUlRDUHJvdmlkZXI6Ok1ETlNOYW1lT3JFcnJvciBy
ZXN1bHQpCisgICAgdm9pZCBGaW5pc2hlZFJlZ2lzdGVyaW5nTUROU05hbWUoV2ViS2l0OjpNRE5T
UmVnaXN0ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFN0cmluZyBtZG5zTmFtZSwgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpNRE5TUmVnaXN0ZXJFcnJvcj4gZXJyb3IpCiB9CiAKICNlbmRpZiAvLyBF
TkFCTEUoV0VCX1JUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL3dlYnJ0Yy9XZWJSVENNb25pdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL3dlYnJ0Yy9XZWJSVENNb25pdG9yLmNwcAppbmRleCAwZjlkYWQyZDFkMjlkMGIzMDc5
ZDM4NzFiN2UxNDU0MTUyOTA0OTM2Li5kMGNiOThiZTg4MGJiNjEzZmRhMjMxNTAyZTY3MDJjMDRh
ZjIwMjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJy
dGMvV2ViUlRDTW9uaXRvci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvd2VicnRjL1dlYlJUQ01vbml0b3IuY3BwCkBAIC0zMyw4ICszMyw2IEBACiAjaW5jbHVkZSAi
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiTmV0d29ya1JUQ01vbml0b3JN
ZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0xp
YldlYlJUQ01hY3Jvcy5oPgotI2luY2x1ZGUgPHdlYnJ0Yy9ydGNfYmFzZS9uZXRfaGVscGVycy5o
PgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAt
NTMsNjcgKzUxLDQzIEBAIHZvaWQgV2ViUlRDTW9uaXRvcjo6c2V0RW51bWVyYXRpbmdBbGxOZXR3
b3JrSW50ZXJmYWNlc0VuYWJsZWQoYm9vbCBlbmFibGVkKQogICAgIG1fZW5hYmxlRW51bWVyYXRp
bmdBbGxOZXR3b3JrSW50ZXJmYWNlcyA9IGVuYWJsZWQ7CiB9CiAKLXZvaWQgV2ViUlRDTW9uaXRv
cjo6U3RhcnRVcGRhdGluZygpCit2b2lkIFdlYlJUQ01vbml0b3I6OnN0YXJ0VXBkYXRpbmcoKQog
ewotICAgIFdFQlJUQ19SRUxFQVNFX0xPRygiU3RhcnRVcGRhdGluZyIpOwotICAgIGlmIChtX3Jl
Y2VpdmVkTmV0d29ya0xpc3QpIHsKLSAgICAgICAgV2ViQ29yZTo6TGliV2ViUlRDUHJvdmlkZXI6
OmNhbGxPbldlYlJUQ05ldHdvcmtUaHJlYWQoW3RoaXNdIHsKLSAgICAgICAgICAgIFNpZ25hbE5l
dHdvcmtzQ2hhbmdlZCgpOwotICAgICAgICB9KTsKLSAgICB9Ci0KLSAgICBzZW5kT25NYWluVGhy
ZWFkKFt0aGlzXShhdXRvJiBjb25uZWN0aW9uKSB7Ci0gICAgICAgIFdFQlJUQ19SRUxFQVNFX0xP
RygiU3RhcnRVcGRhdGluZyAtIEFza2luZyBuZXR3b3JrIHByb2Nlc3MgdG8gc3RhcnQgdXBkYXRp
bmciKTsKLSAgICAgICAgY29ubmVjdGlvbi5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUlRDTW9uaXRv
cjo6U3RhcnRVcGRhdGluZ0lmTmVlZGVkKG1fZW5hYmxlRW51bWVyYXRpbmdBbGxOZXR3b3JrSW50
ZXJmYWNlcyksIDApOwotICAgIH0pOworICAgIFdFQlJUQ19SRUxFQVNFX0xPRygiU3RhcnRVcGRh
dGluZyAtIEFza2luZyBuZXR3b3JrIHByb2Nlc3MgdG8gc3RhcnQgdXBkYXRpbmciKTsKKworICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigp
LmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUlRDTW9uaXRvcjo6U3RhcnRVcGRh
dGluZ0lmTmVlZGVkKG1fZW5hYmxlRW51bWVyYXRpbmdBbGxOZXR3b3JrSW50ZXJmYWNlcyksIDAp
OwogICAgICsrbV9jbGllbnRDb3VudDsKIH0KIAotdm9pZCBXZWJSVENNb25pdG9yOjpTdG9wVXBk
YXRpbmcoKQordm9pZCBXZWJSVENNb25pdG9yOjpzdG9wVXBkYXRpbmcoKQogewogICAgIFdFQlJU
Q19SRUxFQVNFX0xPRygiU3RvcFVwZGF0aW5nIik7CisKICAgICBBU1NFUlQobV9jbGllbnRDb3Vu
dCk7CiAgICAgaWYgKC0tbV9jbGllbnRDb3VudCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgc2Vu
ZE9uTWFpblRocmVhZChbdGhpc10oYXV0byYgY29ubmVjdGlvbikgewotICAgICAgICBXRUJSVENf
UkVMRUFTRV9MT0coIlN0b3BVcGRhdGluZyAtIEFza2luZyBuZXR3b3JrIHByb2Nlc3MgdG8gc3Rv
cCB1cGRhdGluZyIpOwotICAgICAgICBjb25uZWN0aW9uLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtS
VENNb25pdG9yOjpTdG9wVXBkYXRpbmcoKSwgMCk7Ci0gICAgfSk7CisgICAgV0VCUlRDX1JFTEVB
U0VfTE9HKCJTdG9wVXBkYXRpbmcgLSBBc2tpbmcgbmV0d29yayBwcm9jZXNzIHRvIHN0b3AgdXBk
YXRpbmciKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya1JUQ01vbml0
b3I6OlN0b3BVcGRhdGluZygpLCAwKTsKIH0KIAotdm9pZCBXZWJSVENNb25pdG9yOjpuZXR3b3Jr
c0NoYW5nZWQoY29uc3QgVmVjdG9yPFJUQ05ldHdvcms+JiBuZXR3b3JrcywgY29uc3QgUlRDTmV0
d29yazo6SVBBZGRyZXNzJiBpcHY0LCBjb25zdCBSVENOZXR3b3JrOjpJUEFkZHJlc3MmIGlwdjYp
Cit2b2lkIFdlYlJUQ01vbml0b3I6Om5ldHdvcmtzQ2hhbmdlZChWZWN0b3I8UlRDTmV0d29yaz4m
JiBuZXR3b3JrTGlzdCwgUlRDTmV0d29yazo6SVBBZGRyZXNzJiYgaXB2NCwgUlRDTmV0d29yazo6
SVBBZGRyZXNzJiYgaXB2NikKIHsKICAgICBXRUJSVENfUkVMRUFTRV9MT0coIm5ldHdvcmtzQ2hh
bmdlZCIpOwotICAgIC8vIE5vIG5lZWQgdG8gcHJvdGVjdCAndGhpcycgYXMgaXQgaGFzIHRoZSBs
aWZldGltZSBvZiBMaWJXZWJSVEMgd2hpY2ggaGFzIHRoZSBsaWZldGltZSBvZiB0aGUgd2ViIHBy
b2Nlc3MuCi0gICAgV2ViQ29yZTo6TGliV2ViUlRDUHJvdmlkZXI6OmNhbGxPbldlYlJUQ05ldHdv
cmtUaHJlYWQoW3RoaXMsIG5ldHdvcmtzLCBpcHY0LCBpcHY2XSB7Ci0gICAgICAgIFdFQlJUQ19S
RUxFQVNFX0xPRygibmV0d29ya3NDaGFuZ2VkIC0gU2lnbmFsaW5nIik7Ci0gICAgICAgIHN0ZDo6
dmVjdG9yPHJ0Yzo6TmV0d29yayo+IG5ldHdvcmtMaXN0KG5ldHdvcmtzLnNpemUoKSk7Ci0gICAg
ICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBuZXR3b3Jrcy5zaXplKCk7ICsraW5k
ZXgpCi0gICAgICAgICAgICBuZXR3b3JrTGlzdFtpbmRleF0gPSBuZXcgcnRjOjpOZXR3b3JrKG5l
dHdvcmtzW2luZGV4XS52YWx1ZSgpKTsKLQotICAgICAgICBib29sIGZvcmNlU2lnbmFsaW5nID0g
IW1fcmVjZWl2ZWROZXR3b3JrTGlzdDsKLSAgICAgICAgbV9yZWNlaXZlZE5ldHdvcmtMaXN0ID0g
dHJ1ZTsKLQotICAgICAgICBib29sIGhhc0NoYW5nZWQ7Ci0gICAgICAgIHNldF9kZWZhdWx0X2xv
Y2FsX2FkZHJlc3NlcyhpcHY0LnZhbHVlLCBpcHY2LnZhbHVlKTsKLSAgICAgICAgTWVyZ2VOZXR3
b3JrTGlzdChuZXR3b3JrTGlzdCwgJmhhc0NoYW5nZWQpOwotICAgICAgICBpZiAoaGFzQ2hhbmdl
ZCB8fCBmb3JjZVNpZ25hbGluZykKLSAgICAgICAgICAgIFNpZ25hbE5ldHdvcmtzQ2hhbmdlZCgp
OwogCi0gICAgfSk7CisgICAgbV9kaWRSZWNlaXZlTmV0d29ya0xpc3QgPSB0cnVlOworICAgIG1f
bmV0d29ya0xpc3QgPSBXVEZNb3ZlKG5ldHdvcmtMaXN0KTsKKyAgICBtX2lwdjQgPSBXVEZNb3Zl
KGlwdjQpOworICAgIG1faXB2NiA9IFdURk1vdmUoaXB2Nik7CisKKyAgICBmb3IgKGF1dG8mIG9i
c2VydmVyIDogbV9vYnNlcnZlcnMpCisgICAgICAgIG9ic2VydmVyLm5ldHdvcmtzQ2hhbmdlZCht
X25ldHdvcmtMaXN0LCBtX2lwdjQsIG1faXB2Nik7CiB9CiAKIHZvaWQgV2ViUlRDTW9uaXRvcjo6
bmV0d29ya1Byb2Nlc3NDcmFzaGVkKCkKIHsKLSAgICBtX3JlY2VpdmVkTmV0d29ya0xpc3QgPSBm
YWxzZTsKLSAgICBpZiAoIVdlYkNvcmU6OkxpYldlYlJUQ1Byb3ZpZGVyOjpoYXNXZWJSVENUaHJl
YWRzKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIEluIGNhc2Ugd2UgaGF2ZSBjbGllbnRz
IHdhaXRpbmcgZm9yIG5ldHdvcmtzQ2hhbmdlZCwgd2UgY2FsbCBTaWduYWxOZXR3b3Jrc0NoYW5n
ZWQgdG8gbWFrZSBzdXJlIHRoZXkgZG8gbm90IHdhaXQgZm9yIG5vdGhpbmcuICAgIAotICAgIFdl
YkNvcmU6OkxpYldlYlJUQ1Byb3ZpZGVyOjpjYWxsT25XZWJSVENOZXR3b3JrVGhyZWFkKFt0aGlz
XSB7Ci0gICAgICAgIFNpZ25hbE5ldHdvcmtzQ2hhbmdlZCgpOwotICAgIH0pOworICAgIGZvciAo
YXV0byYgb2JzZXJ2ZXIgOiBtX29ic2VydmVycykKKyAgICAgICAgb2JzZXJ2ZXIubmV0d29ya1By
b2Nlc3NDcmFzaGVkKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1dlYlJUQ01vbml0b3IuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJSVENNb25pdG9yLmgK
aW5kZXggZjZiOTczOWZhZGRjMzgyY2Q0MjJlNWJhYThlYTI4NTZlNWY0ZmIwZi4uMDY4NTkwZTUz
MjY0MWExZmRhMzU3YWFjMTJhZDIzMjRiMjA0NDI0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1dlYlJUQ01vbml0b3IuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvV2ViUlRDTW9uaXRvci5oCkBAIC0zMCw2
ICszMCw3IEBACiAjaW5jbHVkZSAiUlRDTmV0d29yay5oIgogI2luY2x1ZGUgPFdlYkNvcmUvTGli
V2ViUlRDUHJvdmlkZXIuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0
Zi9XZWFrSGFzaFNldC5oPgogCiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIENvbm5lY3Rpb247CkBA
IC00MCwyNiArNDEsNDIgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHN0cnVjdCBOZXR3b3Jrc0No
YW5nZWREYXRhOwogCi1jbGFzcyBXZWJSVENNb25pdG9yIGZpbmFsIDogcHVibGljIHJ0Yzo6TmV0
d29ya01hbmFnZXJCYXNlIHsKK2NsYXNzIFdlYlJUQ01vbml0b3IgewogcHVibGljOgogICAgIFdl
YlJUQ01vbml0b3IoKSA9IGRlZmF1bHQ7CiAKKyAgICBjbGFzcyBPYnNlcnZlciA6IHB1YmxpYyBD
YW5NYWtlV2Vha1B0cjxPYnNlcnZlcj4geworICAgIHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCB+
T2JzZXJ2ZXIoKSA9IGRlZmF1bHQ7CisgICAgICAgIHZpcnR1YWwgdm9pZCBuZXR3b3Jrc0NoYW5n
ZWQoY29uc3QgVmVjdG9yPFJUQ05ldHdvcms+JiwgY29uc3QgUlRDTmV0d29yazo6SVBBZGRyZXNz
JiwgY29uc3QgUlRDTmV0d29yazo6SVBBZGRyZXNzJikgPSAwOworICAgICAgICB2aXJ0dWFsIHZv
aWQgbmV0d29ya1Byb2Nlc3NDcmFzaGVkKCkgPSAwOworICAgIH07CisgICAgdm9pZCBhZGRPYnNl
cnZlcihPYnNlcnZlciYgb2JzZXJ2ZXIpIHsgbV9vYnNlcnZlcnMuYWRkKG9ic2VydmVyKTsgfQor
ICAgIHZvaWQgcmVtb3ZlT2JzZXJ2ZXIoT2JzZXJ2ZXImIG9ic2VydmVyKSB7IG1fb2JzZXJ2ZXJz
LnJlbW92ZShvYnNlcnZlcik7IH0KKyAgICB2b2lkIHN0YXJ0VXBkYXRpbmcoKTsKKyAgICB2b2lk
IHN0b3BVcGRhdGluZygpOworCiAgICAgdm9pZCBuZXR3b3JrUHJvY2Vzc0NyYXNoZWQoKTsKICAg
ICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYp
OwogICAgIHZvaWQgc2V0RW51bWVyYXRpbmdBbGxOZXR3b3JrSW50ZXJmYWNlc0VuYWJsZWQoYm9v
bCk7CiAKLXByaXZhdGU6Ci0gICAgdm9pZCBuZXR3b3Jrc0NoYW5nZWQoY29uc3QgVmVjdG9yPFJU
Q05ldHdvcms+JiBuZXR3b3JrTGlzdCwgY29uc3QgUlRDTmV0d29yazo6SVBBZGRyZXNzJiwgY29u
c3QgUlRDTmV0d29yazo6SVBBZGRyZXNzJik7CisgICAgYm9vbCBkaWRSZWNlaXZlTmV0d29ya0xp
c3QoKSBjb25zdCB7IHJldHVybiBtX2RpZFJlY2VpdmVOZXR3b3JrTGlzdDsgfQorICAgIGNvbnN0
IFZlY3RvcjxSVENOZXR3b3JrPiYgbmV0d29ya0xpc3QoKSBjb25zdCB7IHJldHVybiBtX25ldHdv
cmtMaXN0OyB9CisgICAgY29uc3QgUlRDTmV0d29yazo6SVBBZGRyZXNzJiBpcHY0KCkgY29uc3Qg
eyByZXR1cm4gbV9pcHY0OyB9CisgICAgY29uc3QgUlRDTmV0d29yazo6SVBBZGRyZXNzJiBpcHY2
KCkgY29uc3QgeyByZXR1cm4gbV9pcHY2OyB9CiAKLSAgICB2b2lkIFN0YXJ0VXBkYXRpbmcoKSBm
aW5hbDsKLSAgICB2b2lkIFN0b3BVcGRhdGluZygpIGZpbmFsOwotICAgIHdlYnJ0Yzo6TWRuc1Jl
c3BvbmRlckludGVyZmFjZSogR2V0TWRuc1Jlc3BvbmRlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IG51bGxwdHI7IH0KK3ByaXZhdGU6CisgICAgdm9pZCBuZXR3b3Jrc0NoYW5nZWQoVmVjdG9yPFJU
Q05ldHdvcms+JiYsIFJUQ05ldHdvcms6OklQQWRkcmVzcyYmLCBSVENOZXR3b3JrOjpJUEFkZHJl
c3MmJik7CiAKICAgICBzdGF0aWMgdm9pZCBzZW5kT25NYWluVGhyZWFkKEZ1bmN0aW9uPHZvaWQo
SVBDOjpDb25uZWN0aW9uJik+JiYpOwogCiAgICAgdW5zaWduZWQgbV9jbGllbnRDb3VudCB7IDAg
fTsKLSAgICBib29sIG1fcmVjZWl2ZWROZXR3b3JrTGlzdCB7IGZhbHNlIH07CisgICAgV2Vha0hh
c2hTZXQ8T2JzZXJ2ZXI+IG1fb2JzZXJ2ZXJzOwogICAgIGJvb2wgbV9lbmFibGVFbnVtZXJhdGlu
Z0FsbE5ldHdvcmtJbnRlcmZhY2VzIHsgZmFsc2UgfTsKKyAgICBib29sIG1fZGlkUmVjZWl2ZU5l
dHdvcmtMaXN0IHsgZmFsc2UgfTsKKyAgICBWZWN0b3I8UlRDTmV0d29yaz4gbV9uZXR3b3JrTGlz
dDsKKyAgICBSVENOZXR3b3JrOjpJUEFkZHJlc3MgbV9pcHY0OworICAgIFJUQ05ldHdvcms6OklQ
QWRkcmVzcyBtX2lwdjY7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA4ZDli
NGE1Y2M1ZTYyZDY4YTAzYmI5NGNiNjE3MTA2YTIzMGYxMWVmLi40OTE0MDYyZTgxOTU5YmUzZDQy
Y2QzODc4ZjlkZjBiY2Y1OGEyNjE4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
KysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjEtMDktMDEg
IFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBs
aWJ3ZWJydGMgbmV0d29yayBtYW5hZ2VyIEdldE1kbnNSZXNwb25kZXIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyOTc1NworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSB0ZXN0cyBnaXZlbiBtRE5T
IElDRSBjYW5kaWRhdGVzIGFyZSBub3cgc2hvd2luZyB1cCBpbiBkZXNjcmlwdGlvbnMuCisgICAg
ICAgIE1ha2Ugc3VyZSB0byBjb25zaWRlciBtRE5TIGNhbmRpZGF0ZXMgYXMgaWYgdGhleSBhcmUg
ZmlsdGVyZWQuCisKKyAgICAgICAgKiBodHRwL3dwdC93ZWJydGMvcmVzb3VyY2VzL3RoaXJkLXBh
cnR5LWZyYW1lLWljZS1jYW5kaWRhdGUtZmlsdGVyaW5nLWlmcmFtZS5odG1sOgorICAgICAgICAq
IHdlYnJ0Yy9kYXRhY2hhbm5lbC9maWx0ZXItaWNlLWNhbmRpZGF0ZS5odG1sOgorICAgICAgICAq
IHdlYnJ0Yy9maWx0ZXJpbmctaWNlLWNhbmRpZGF0ZS1hZnRlci1yZWxvYWQuaHRtbDoKKwogMjAy
MS0wOC0zMSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgTWln
cmF0ZSB0byBsYXRlc3QgbGlid2VicnRjIEFkZEljZUNhbmRpZGF0ZQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC93cHQvd2VicnRjL3Jlc291cmNlcy90aGlyZC1wYXJ0eS1mcmFtZS1pY2Ut
Y2FuZGlkYXRlLWZpbHRlcmluZy1pZnJhbWUuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dl
YnJ0Yy9yZXNvdXJjZXMvdGhpcmQtcGFydHktZnJhbWUtaWNlLWNhbmRpZGF0ZS1maWx0ZXJpbmct
aWZyYW1lLmh0bWwKaW5kZXggMmZlNTMxMDc2NDcyN2I1N2FhYjNiYTYxNTI1NTY2NmY2NDg1YTYx
MC4uODA0NDhjYTBhNTQ3NGE3ZDg1OWM3MjgwODQ2MzhiNDNjMTBkZjQxNSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaHR0cC93cHQvd2VicnRjL3Jlc291cmNlcy90aGlyZC1wYXJ0eS1mcmFtZS1p
Y2UtY2FuZGlkYXRlLWZpbHRlcmluZy1pZnJhbWUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRw
L3dwdC93ZWJydGMvcmVzb3VyY2VzL3RoaXJkLXBhcnR5LWZyYW1lLWljZS1jYW5kaWRhdGUtZmls
dGVyaW5nLWlmcmFtZS5odG1sCkBAIC0xMiw3ICsxMiw4IEBAIGZ1bmN0aW9uIGlzRmlsdGVyaW5n
RW5hYmxlZCgpCiAgICAgICAgICAgICAgICAgcmVzb2x2ZSghY2FuZGlkYXRlcy5sZW5ndGgpOwog
ICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNhbmRp
ZGF0ZXMucHVzaChldmVudC5jYW5kaWRhdGUuY2FuZGlkYXRlKTsKKyAgICAgICAgICAgIGlmIChl
dmVudC5jYW5kaWRhdGUuY2FuZGlkYXRlLmluZGV4T2YoJy5sb2NhbCcpID09PSAtMSkKKyAgICAg
ICAgICAgICAgICBjYW5kaWRhdGVzLnB1c2goZXZlbnQuY2FuZGlkYXRlLmNhbmRpZGF0ZSk7CiAg
ICAgICAgIH07CiAgICAgICAgIHBjLmNyZWF0ZU9mZmVyKCkudGhlbigob2ZmZXIpID0+IHsKICAg
ICAgICAgICAgIHBjLnNldExvY2FsRGVzY3JpcHRpb24ob2ZmZXIpOwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2VicnRjL2RhdGFjaGFubmVsL2ZpbHRlci1pY2UtY2FuZGlkYXRlLmh0bWwgYi9M
YXlvdXRUZXN0cy93ZWJydGMvZGF0YWNoYW5uZWwvZmlsdGVyLWljZS1jYW5kaWRhdGUuaHRtbApp
bmRleCBjY2M0NjlhMTc3ZTAwOTJiNjc1N2I1YmM0ZDE3NzUzYWIxZmI5NTNiLi43NGU3OGY0OTMy
NTg1OWZmYjU2ODQxNjU1MWQ1NDFmODAyNzZiMzY3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy93
ZWJydGMvZGF0YWNoYW5uZWwvZmlsdGVyLWljZS1jYW5kaWRhdGUuaHRtbAorKysgYi9MYXlvdXRU
ZXN0cy93ZWJydGMvZGF0YWNoYW5uZWwvZmlsdGVyLWljZS1jYW5kaWRhdGUuaHRtbApAQCAtOCw2
OCArOCw5MSBAQAogICA8L2hlYWQ+CiAgIDxib2R5PgogICAgIDxzY3JpcHQ+Ci1wcm9taXNlX3Rl
c3QoKHRlc3QpID0+IHsKLSAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkg
PT4gewotICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsgcmVqZWN0KCJUZXN0IHRpbWVkIG91dCIp
OyB9LCA1MDAwKTsKLQotICAgICAgICBpZiAod2luZG93LmludGVybmFscykKLSAgICAgICAgICAg
IGludGVybmFscy5zZXRJQ0VDYW5kaWRhdGVGaWx0ZXJpbmcodHJ1ZSk7Ci0KLSAgICAgICAgdmFy
IGNvdW50ZXIgPSAwOwotICAgICAgICB2YXIgcGMgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsK
LSAgICAgICAgcGMuY3JlYXRlRGF0YUNoYW5uZWwoJ3NlbmREYXRhQ2hhbm5lbCcpOwotICAgICAg
ICBwYy5vbmljZWNhbmRpZGF0ZSA9IChldmVudCkgPT4gewotICAgICAgICAgICAgaWYgKGV2ZW50
LmNhbmRpZGF0ZSkgewotICAgICAgICAgICAgICAgIGNvdW50ZXIrKzsKLSAgICAgICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHBjLmxv
Y2FsRGVzY3JpcHRpb24uc2RwLmluZGV4T2YoImE9Y2FuZGlkYXRlIiksIC0xKTsKLSAgICAgICAg
ICAgIGFzc2VydF90cnVlKHBjLmxvY2FsRGVzY3JpcHRpb24uc2RwLmluZGV4T2YoImM9SU4gSVA0
IDAuMC4wLjBcclxuIikgIT0gLTEgfHwgcGMubG9jYWxEZXNjcmlwdGlvbi5zZHAuaW5kZXhPZigi
Yz1JTiBJUDYgOjpcclxuIikgIT0gLTEpOwotICAgICAgICAgICAgaWYgKGNvdW50ZXIgPT09IDAp
IHsKLSAgICAgICAgICAgICAgICBwYy5jcmVhdGVPZmZlcigpLnRoZW4oKG9mZmVyKSA9PiB7Ci0g
ICAgICAgICAgICAgICAgICAgIGFzc2VydF90cnVlKG9mZmVyLnNkcC5pbmRleE9mKCJjPUlOIElQ
NCAwLjAuMC4wXHJcbiIpICE9IC0xIHx8IHBjLmxvY2FsRGVzY3JpcHRpb24uc2RwLmluZGV4T2Yo
ImM9SU4gSVA2IDo6XHJcbiIpICE9IC0xKTsKLSAgICAgICAgICAgICAgICAgICAgYXNzZXJ0X2Vx
dWFscyhvZmZlci5zZHAuaW5kZXhPZigiYT1jYW5kaWRhdGUiKSwgLTEpOwotICAgICAgICAgICAg
ICAgICAgICByZXNvbHZlKCk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICB9IGVs
c2UKLSAgICAgICAgICAgICAgICByZWplY3QoIk5vIGNhbmRpZGF0ZSBzaG91bGQgYmUgZm91bmQi
KTsKLSAgICAgICAgfTsKLSAgICAgICAgcGMuY3JlYXRlT2ZmZXIoKS50aGVuKChvZmZlcikgPT4g
ewotICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhvZmZlci5zZHAuaW5kZXhPZigiYT1jYW5kaWRh
dGUiKSwgLTEpOwotICAgICAgICAgICAgcGMuc2V0TG9jYWxEZXNjcmlwdGlvbihvZmZlcik7Ci0g
ICAgICAgIH0pOworZnVuY3Rpb24gZW5zdXJlQ2FuZGlkYXRlc0FyZU1ETlMoc2RwKQoreworICAg
IGFzc2VydF90cnVlKHNkcC5pbmRleE9mKCJjPUlOIElQNCAwLjAuMC4wXHJcbiIpICE9IC0xIHx8
IHNkcC5pbmRleE9mKCJjPUlOIElQNiA6OlxyXG4iKSAhPSAtMSk7CisgICAgY29uc3QgY2FuZGlk
YXRlcyA9IHNkcC5zcGxpdCgnXHJcbicpLmZpbHRlcihsaW5lID0+IHsKKyAgICAgICAgcmV0dXJu
IGxpbmUuaW5kZXhPZignYT1jYW5kaWRhdGUnKSAhPT0gLTE7CisgICAgfSk7CisgICAgZm9yIChj
b25zdCBjYW5kaWRhdGUgb2YgY2FuZGlkYXRlcykKKyAgICAgICAgYXNzZXJ0X25vdF9lcXVhbHMo
Y2FuZGlkYXRlLmluZGV4T2YoJy5sb2NhbCcpLCAtMSk7Cit9CisKK2Z1bmN0aW9uIGVuc3VyZUNh
bmRpZGF0ZXNBcmVOb3RNRE5TKHNkcCkKK3sKKyAgICBjb25zdCBjYW5kaWRhdGVzID0gc2RwLnNw
bGl0KCdcclxuJykuZmlsdGVyKGxpbmUgPT4geworICAgICAgICByZXR1cm4gbGluZS5pbmRleE9m
KCdhPWNhbmRpZGF0ZScpICE9PSAtMTsKICAgICB9KTsKKyAgICBmb3IgKGNvbnN0IGNhbmRpZGF0
ZSBvZiBjYW5kaWRhdGVzKQorICAgICAgICBhc3NlcnRfZXF1YWxzKGNhbmRpZGF0ZS5pbmRleE9m
KCcubG9jYWwnKSwgLTEpOworfQorCitwcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKKyAg
ICBsZXQgcmVzb2x2ZSwgcmVqZWN0OworICAgIGNvbnN0IHByb21pc2UgPSBuZXcgUHJvbWlzZSgo
cmVzLCByZWopID0+IHsgcmVzb2x2ZSA9IHJlczsgcmVqZWN0ID0gcmVqOyB9KTsKKyAgICBzZXRU
aW1lb3V0KCgpID0+IHsgcmVqZWN0KCJUZXN0IHRpbWVkIG91dCIpOyB9LCA1MDAwKTsKKworICAg
IGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICBpbnRlcm5hbHMuc2V0SUNFQ2FuZGlkYXRl
RmlsdGVyaW5nKHRydWUpOworCisgICAgbGV0IGNvdW50ZXIgPSAwOworICAgIGxldCBwYyA9IG5l
dyBSVENQZWVyQ29ubmVjdGlvbigpOworICAgIHBjLmNyZWF0ZURhdGFDaGFubmVsKCdzZW5kRGF0
YUNoYW5uZWwnKTsKKyAgICBwYy5vbmljZWNhbmRpZGF0ZSA9IGFzeW5jIChldmVudCkgPT4gewor
ICAgICAgICBpZiAoZXZlbnQuY2FuZGlkYXRlKSB7CisgICAgICAgICAgICBhc3NlcnRfbm90X2Vx
dWFscyhldmVudC5jYW5kaWRhdGUuY2FuZGlkYXRlLmluZGV4T2YoJy5sb2NhbCcpLCAtMSk7Cisg
ICAgICAgICAgICBjb3VudGVyKys7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAg
ICAgICAgZW5zdXJlQ2FuZGlkYXRlc0FyZU1ETlMocGMubG9jYWxEZXNjcmlwdGlvbi5zZHApOwor
ICAgICAgICBpZiAoY291bnRlciA9PT0gMCkgeworICAgICAgICAgICAgY29uc3Qgb2ZmZXIgPSBh
d2FpdCBwYy5jcmVhdGVPZmZlcigpOworICAgICAgICAgICAgYXdhaXQgcGMuc2V0TG9jYWxEZXNj
cmlwdGlvbihvZmZlcik7CisgICAgICAgICAgICBlbnN1cmVDYW5kaWRhdGVzQXJlTUROUyhwYy5s
b2NhbERlc2NyaXB0aW9uLnNkcCk7CisgICAgICAgICAgICByZXNvbHZlKCk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgcmVzb2x2ZSgpOworICAgIH07CisgICAgY29u
c3Qgb2ZmZXIgPSBhd2FpdCBwYy5jcmVhdGVPZmZlcigpOworICAgIGFzc2VydF9lcXVhbHMob2Zm
ZXIuc2RwLmluZGV4T2YoImE9Y2FuZGlkYXRlIiksIC0xKTsKKyAgICBhd2FpdCBwYy5zZXRMb2Nh
bERlc2NyaXB0aW9uKG9mZmVyKTsKKworICAgIHJldHVybiBwcm9taXNlOwogfSwgIkdhdGhlcmlu
ZyBJQ0UgY2FuZGlkYXRlcyBmcm9tIGEgZGF0YSBjaGFubmVsIHBlZXIgY29ubmVjdGlvbiB3aXRo
IElDRSBjYW5kaWRhdGUgZmlsdGVyaW5nIG9uIik7CiAKLXByb21pc2VfdGVzdCgodGVzdCkgPT4g
ewotICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7Ci0gICAgICAg
IHNldFRpbWVvdXQoKCkgPT4geyByZWplY3QoIlRlc3QgdGltZWQgb3V0Iik7IH0sIDUwMDApOwor
cHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7CisgICAgbGV0IHJlc29sdmUsIHJlamVjdDsK
KyAgICBjb25zdCBwcm9taXNlID0gbmV3IFByb21pc2UoKHJlcywgcmVqKSA9PiB7IHJlc29sdmUg
PSByZXM7IHJlamVjdCA9IHJlajsgfSk7CisgICAgc2V0VGltZW91dCgoKSA9PiB7IHJlamVjdCgi
VGVzdCB0aW1lZCBvdXQiKTsgfSwgNTAwMCk7CiAKLQlpZiAod2luZG93LmludGVybmFscykKLSAg
ICAgICAgICAgIGludGVybmFscy5zZXRJQ0VDYW5kaWRhdGVGaWx0ZXJpbmcoZmFsc2UpOworICAg
IGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICBpbnRlcm5hbHMuc2V0SUNFQ2FuZGlkYXRl
RmlsdGVyaW5nKGZhbHNlKTsKKyAKKyAgICBsZXQgY291bnRlciA9IDA7CisgICAgbGV0IHBjID0g
bmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7CisgICAgcGMuY3JlYXRlRGF0YUNoYW5uZWwoJ3NlbmRE
YXRhQ2hhbm5lbCcpOwogCi0gICAgICAgIHZhciBjb3VudGVyID0gMDsKLSAgICAgICAgdmFyIHBj
ID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7Ci0gICAgICAgIHBjLmNyZWF0ZURhdGFDaGFubmVs
KCdzZW5kRGF0YUNoYW5uZWwnKTsKLSAgICAgICAgcGMub25pY2VjYW5kaWRhdGUgPSAoZXZlbnQp
ID0+IHsKLSAgICAgICAgICAgIGlmIChldmVudC5jYW5kaWRhdGUpIHsKLSAgICAgICAgICAgICAg
ICBjb3VudGVyKys7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAg
ICAgICAgICAgYXNzZXJ0X3RydWUocGMubG9jYWxEZXNjcmlwdGlvbi5zZHAuaW5kZXhPZigiYz1J
TiBJUDQgMC4wLjAuMFxyXG4iKSA9PT0gLTEgJiYgcGMubG9jYWxEZXNjcmlwdGlvbi5zZHAuaW5k
ZXhPZigiYz1JTiBJUDYgOjpcclxuIikgPT09IC0xKTsKLSAgICAgICAgICAgIGFzc2VydF9mYWxz
ZShwYy5sb2NhbERlc2NyaXB0aW9uLnNkcC5pbmRleE9mKCJhPWNhbmRpZGF0ZSIpID09PSAtMSk7
Ci0gICAgICAgICAgICBpZiAoY291bnRlciAhPT0gMCkgewotICAgICAgICAgICAgICAgIC8vIFJl
ZG9pbmcgYW4gb2ZmZXIgbm93IHRoYXQgd2UgaGF2ZSBzb21lIGNhbmRpZGF0ZXMuCi0gICAgICAg
ICAgICAgICAgcGMuY3JlYXRlT2ZmZXIoKS50aGVuKChvZmZlcikgPT4gewotICAgICAgICAgICAg
ICAgICAgICBhc3NlcnRfdHJ1ZShvZmZlci5zZHAuaW5kZXhPZigiYz1JTiBJUDQgMC4wLjAuMFxy
XG4iKSA9PT0gLTEgJiYgcGMubG9jYWxEZXNjcmlwdGlvbi5zZHAuaW5kZXhPZigiYz1JTiBJUDYg
OjpcclxuIikgPT09IC0xKTsKLSAgICAgICAgICAgICAgICAgICAgYXNzZXJ0X2ZhbHNlKG9mZmVy
LnNkcC5pbmRleE9mKCJhPWNhbmRpZGF0ZSIpID09PSAtMSk7Ci0gICAgICAgICAgICAgICAgICAg
IHJlc29sdmUoKTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIH0gZWxzZQotICAg
ICAgICAgICAgICAgIHJlamVjdCgiSG9zdCBjYW5kaWRhdGVzIHNob3VsZCBiZSBmb3VuZCIpOwot
ICAgICAgICB9OwotICAgICAgICBwYy5jcmVhdGVPZmZlcigpLnRoZW4oKG9mZmVyKSA9PiB7IHBj
LnNldExvY2FsRGVzY3JpcHRpb24ob2ZmZXIpOyB9KTsKLSAgICB9KTsKKyAgICBwYy5vbmljZWNh
bmRpZGF0ZSA9IGFzeW5jIChldmVudCkgPT4geworICAgICAgICBpZiAoZXZlbnQuY2FuZGlkYXRl
KSB7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGV2ZW50LmNhbmRpZGF0ZS5jYW5kaWRhdGUu
aW5kZXhPZignLmxvY2FsJyksIC0xKTsKKyAgICAgICAgICAgIGNvdW50ZXIrKzsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBlbnN1cmVDYW5kaWRhdGVzQXJlTm90TURO
UyhwYy5sb2NhbERlc2NyaXB0aW9uLnNkcCk7CisgICAgICAgIGlmIChjb3VudGVyICE9PSAwKSB7
CisgICAgICAgICAgICAvLyBSZWRvaW5nIGFuIG9mZmVyIG5vdyB0aGF0IHdlIGhhdmUgc29tZSBj
YW5kaWRhdGVzLgorICAgICAgICAgICAgY29uc3Qgb2ZmZXIgPSBhd2FpdCBwYy5jcmVhdGVPZmZl
cigpOworICAgICAgICAgICAgYXdhaXQgcGMuc2V0TG9jYWxEZXNjcmlwdGlvbihvZmZlcik7Cisg
ICAgICAgICAgICBlbnN1cmVDYW5kaWRhdGVzQXJlTm90TUROUyhwYy5sb2NhbERlc2NyaXB0aW9u
LnNkcCk7CisgICAgICAgICAgICByZXNvbHZlKCk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAg
ICAgcmVqZWN0KCJIb3N0IGNhbmRpZGF0ZXMgc2hvdWxkIGJlIGZvdW5kIik7CisgICAgfTsKKyAg
ICBjb25zdCBvZmZlciA9IGF3YWl0IHBjLmNyZWF0ZU9mZmVyKCk7CisgICAgYXdhaXQgcGMuc2V0
TG9jYWxEZXNjcmlwdGlvbihvZmZlcik7CisKKyAgICByZXR1cm4gcHJvbWlzZTsKIH0sICJHYXRo
ZXJpbmcgSUNFIGNhbmRpZGF0ZXMgZnJvbSBhIGRhdGEgY2hhbm5lbCBwZWVyIGNvbm5lY3Rpb24g
d2l0aCBJQ0UgY2FuZGlkYXRlIGZpbHRlcmluZyBvZmYiKTsKIAogcHJvbWlzZV90ZXN0KGFzeW5j
ICh0ZXN0KSA9PiB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJydGMvZmlsdGVyaW5nLWlj
ZS1jYW5kaWRhdGUtYWZ0ZXItcmVsb2FkLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJydGMvZmlsdGVy
aW5nLWljZS1jYW5kaWRhdGUtYWZ0ZXItcmVsb2FkLmh0bWwKaW5kZXggYzg3NTVmNzFmMTlmMWEz
MDNjMjNiMGJhYWYxNjYzYmQ2OGJkNWI5ZC4uNTI1ZGU4NGY5ZDMyYmIxNDYyZGU5N2MyZjIwZTU1
ZmZjYzE1ZTRiMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvd2VicnRjL2ZpbHRlcmluZy1pY2Ut
Y2FuZGlkYXRlLWFmdGVyLXJlbG9hZC5odG1sCisrKyBiL0xheW91dFRlc3RzL3dlYnJ0Yy9maWx0
ZXJpbmctaWNlLWNhbmRpZGF0ZS1hZnRlci1yZWxvYWQuaHRtbApAQCAtNywyNCArNywyOCBAQCBp
ZiAod2luZG93LnRlc3RSdW5uZXIpIHsKICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsK
IH0KIAotZnVuY3Rpb24gaXNGaWx0ZXJpbmdFbmFibGVkKCkKK2FzeW5jIGZ1bmN0aW9uIGlzRmls
dGVyaW5nRW5hYmxlZCgpCiB7CisgICAgbGV0IHJlc29sdmUsIHJlamVjdDsKKyAgICBjb25zdCBw
cm9taXNlID0gbmV3IFByb21pc2UoKHJlcywgcmVqKSA9PiB7IHJlc29sdmUgPSByZXM7IHJlamVj
dCA9IHJlajsgfSk7CisgICAgc2V0VGltZW91dCgoKSA9PiB7IHJlamVjdCgiVGVzdCB0aW1lZCBv
dXQiKTsgfSwgNTAwMCk7CisKICAgICB2YXIgcGMgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsK
ICAgICBwYy5jcmVhdGVEYXRhQ2hhbm5lbCgiIik7CiAKICAgICB2YXIgY2FuZGlkYXRlcyA9IFtd
OwotICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7Ci0gICAgICAg
IHBjLm9uaWNlY2FuZGlkYXRlID0gKGV2ZW50KSA9PiB7Ci0gICAgICAgICAgICBpZiAoZXZlbnQu
Y2FuZGlkYXRlID09PSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgcmVzb2x2ZSghY2FuZGlkYXRl
cy5sZW5ndGgpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KKyAgICBw
Yy5vbmljZWNhbmRpZGF0ZSA9IChldmVudCkgPT4geworICAgICAgICBpZiAoZXZlbnQuY2FuZGlk
YXRlID09PSBudWxsKSB7CisgICAgICAgICAgICByZXNvbHZlKCFjYW5kaWRhdGVzLmxlbmd0aCk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKGV2ZW50LmNhbmRp
ZGF0ZS5jYW5kaWRhdGUuaW5kZXhPZignLmxvY2FsJykgPT09IC0xKQogICAgICAgICAgICAgY2Fu
ZGlkYXRlcy5wdXNoKGV2ZW50LmNhbmRpZGF0ZS5jYW5kaWRhdGUpOwotICAgICAgICB9OwotICAg
ICAgICBwYy5jcmVhdGVPZmZlcigpLnRoZW4oKG9mZmVyKSA9PiB7Ci0gICAgICAgICAgICBwYy5z
ZXRMb2NhbERlc2NyaXB0aW9uKG9mZmVyKTsKLSAgICAgICAgfSk7Ci0gICAgfSk7CisgICAgfTsK
KworICAgIGNvbnN0IG9mZmVyID0gYXdhaXQgcGMuY3JlYXRlT2ZmZXIoKTsKKyAgICBhd2FpdCBw
Yy5zZXRMb2NhbERlc2NyaXB0aW9uKG9mZmVyKTsKKyAgICByZXR1cm4gcHJvbWlzZTsKIH0KIAog
ZnVuY3Rpb24gZW5kVGVzdChtZXNzYWdlKQo=
</data>
<flag name="commit-queue"
          id="460168"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>437063</attachid>
            <date>2021-09-01 13:23:48 -0700</date>
            <delta_ts>2021-09-02 00:00:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229757-20210901222346.patch</filename>
            <type>text/plain</type>
            <size>84822</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxNzkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWIwNDFiMmIwMGZmNmU4
Y2YwNTI3MjZmMWQ1NmUzMzQwNGM1NjAwNy4uNThjOWY3ZDhmZTMwZDZlNWYwZTY1OTkyNzFkNTgy
NDJhZmFlYmRlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDIxLTA5LTAxICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgbGlid2Vi
cnRjIG5ldHdvcmsgbWFuYWdlciBHZXRNZG5zUmVzcG9uZGVyCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjk3NTcKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgbGlid2VicnRjIG1ETlMgc3VwcG9ydCBp
bnN0ZWFkIG9mIGFwcGx5aW5nIGl0IHdpdGhpbiBQZWVyQ29ubmVjdGlvbkJhY2tlbmQuCisgICAg
ICAgIFRoaXMgYWxsb3dzIGEgYmV0dGVyIGludGVncmF0aW9uIGFuZCBpcyBtb3JlIGNvbnNpc3Rl
bnQgd2l0aCB0aGUgQVBJIGFuZCBvdGhlciBicm93c2Vycy4KKyAgICAgICAgRm9yIGluc3RhbmNl
IG1ETlMgY2FuZGlkYXRlcyBub3cgc2hvdyB1cCBpbiBsb2NhbCBkZXNjcmlwdGlvbnMuCisgICAg
ICAgIFdlIGludHJvZHVjZSBSVENOZXR3b3JrTWFuYWdlciB3aGljaCBpcyByZXNwb25zaWJsZSBm
b3IgV2ViUlRDIG5ldHdvcmsuCisgICAgICAgIFJUQ05ldHdvcmtNYW5hZ2VyIGlzIHJlc3BvbnNp
YmxlIG9mIGFsbCBwZWVyIGNvbm5lY3Rpb25zIG9mIGEgZG9jdW1lbnQuIEl0IGNhbiB0aHVzIHJl
dXNlIG1ETlMgbmFtZXMgZnJvbSBvbmUgY29ubmVjdGlvbiB0byBhbm90aGVyLgorICAgICAgICBX
aGVuIGRvY3VtZW50IGdvZXMgYXdheSwgUlRDTmV0d29ya01hbmFnZXIgbmVlZHMgdG8gdW5yZWdp
c3RlciBhbGwgbUROUyBuYW1lcy4KKyAgICAgICAgVXBkYXRlIGV4aXN0aW5nIFNEUCBhbmQgSUNF
IGNhbmRpZGF0ZSBmaWx0ZXJpbmcgY29kZSBieSBvbmx5IGtlZXBpbmcgZGVidWcgYXNzZXJ0IHRo
YXQgd2UgZG8gbm90IGxlYWsgcHJpdmF0ZSBJUCBhZGRyZXNzZXMgaW4gY2FzZSBJQ0UgZmlsdGVy
aW5nIGlzIG9uLgorICAgICAgICBDb3ZlcmVkIGJ5IHVwZGF0ZWQgYW5kIGV4aXN0aW5nIHRlc3Rz
LgorCisgICAgICAgICogSGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3Ry
ZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29u
bmVjdGlvbkJhY2tlbmQ6OmNyZWF0ZU9mZmVyU3VjY2VlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6
OlBlZXJDb25uZWN0aW9uQmFja2VuZDo6ZW5hYmxlSUNFQ2FuZGlkYXRlRmlsdGVyaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uQmFja2VuZDo6ZGlzYWJsZUlDRUNhbmRpZGF0
ZUZpbHRlcmluZyk6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OnZh
bGlkYXRlU0RQIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uQmFja2Vu
ZDo6bmV3SUNFQ2FuZGlkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uQmFj
a2VuZDo6ZG9uZUdhdGhlcmluZ0NhbmRpZGF0ZXMpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
dHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0NvbnRyb2xsZXI6
OmFkZCk6CisgICAgICAgIChXZWJDb3JlOjpSVENDb250cm9sbGVyOjpkaXNhYmxlSUNFQ2FuZGlk
YXRlRmlsdGVyaW5nRm9yQWxsT3JpZ2lucyk6CisgICAgICAgIChXZWJDb3JlOjpSVENDb250cm9s
bGVyOjpkaXNhYmxlSUNFQ2FuZGlkYXRlRmlsdGVyaW5nRm9yRG9jdW1lbnQpOgorICAgICAgICAo
V2ViQ29yZTo6UlRDQ29udHJvbGxlcjo6ZW5hYmxlSUNFQ2FuZGlkYXRlRmlsdGVyaW5nKToKKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ05ldHdvcmtNYW5hZ2VyLmg6IEFkZGVkLgor
ICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5k
cG9pbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6c2V0
Q29uZmlndXJhdGlvbik6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMv
TGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okxp
YldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6Y3VycmVudExvY2FsRGVzY3JpcHRpb24gY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpw
ZW5kaW5nTG9jYWxEZXNjcmlwdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJS
VENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmxvY2FsRGVzY3JpcHRpb24gY29uc3QpOgorICAgICAg
ICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBkb20vRG9j
dW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OndpbGxCZVJlbW92ZWRGcm9t
RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnN1c3BlbmQpOgorICAgICAgICAq
IGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJ0Y05ldHdvcmtN
YW5hZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzZXRSVENOZXR3b3JrTWFuYWdl
cik6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vTUROU1JlZ2lzdGVyRXJyb3IuaDog
QWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJU
Q1Byb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ1Byb3ZpZGVyOjpjcmVh
dGVQZWVyQ29ubmVjdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2Vi
cnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmg6CisKIDIwMjEtMDgtMzEgIFlvdWVubiBGYWJsZXQgIDx5
b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBzdXBwb3J0IGZvciBSVENTY3RwVHJhbnNw
b3J0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCmluZGV4IDYxZjdhZDFjYTg4N2Q1YmZkMjEyZjQzOTNkMGM1MmFlYWFjMGI1N2Iu
LmU0N2ZiZDg2N2JmZjk0YjI0NGM3YTU5MWU0YzEyZWViNmZjMTdhYzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNTYgQEAKKzIwMjEtMDktMDEgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29t
PgorCisgICAgICAgIEltcGxlbWVudCBsaWJ3ZWJydGMgbmV0d29yayBtYW5hZ2VyIEdldE1kbnNS
ZXNwb25kZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyOTc1NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEltcGxlbWVudCBSVENOZXR3b3JrTWFuYWdlciBBUEkgaW4gTGliV2ViUlRDTmV0d29ya01hbmFn
ZXIgdG8gaGFuZGxlIHBlci1kb2N1bWVudCBtRE5TIHJlZ2lzdHJhdGlvbnMuCisgICAgICAgIE1v
dmUgcGFydCBvZiBXZWJSVENNb25pdG9yIHRvIExpYldlYlJUQ05ldHdvcmtNYW5hZ2VyLgorICAg
ICAgICBMaWJXZWJSVENOZXR3b3JrTWFuYWdlciBpcyBhIFdlYlJUQ01vbml0b3Igb2JzZXJ2ZXIg
dG8gZ2V0IHRoZSBsaXN0IG9mIG5ldHdvcmtzLgorICAgICAgICBTaW5jZSBsaWJ3ZWJydGMgaXMg
bm93IGRvaW5nIHRoZSBtRE5TIHJlZ2lzdHJhdGlvbiwgd2UgbmVlZCB0byByZXR1cm4gYSBtRE5T
IG5hbWUgZXZlbiBpZiByZWdpc3RyYXRpb24gZmFpbGVkLgorICAgICAgICBXZSB1cGRhdGUgV2Vi
TUROU1JlZ2lzdGVyIGFuZCBOZXR3b3JrTUROU1JlZ2lzdGVyIGFjY29yZGluZ2x5LgorCisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtNRE5TUmVnaXN0ZXIuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpyZWdpc3Rlck1ETlNOYW1lQ2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrTUROU1JlZ2lzdGVyOjpyZWdpc3Rlck1ETlNOYW1lKToKKyAgICAgICAgKiBTb3Vy
Y2VzLnR4dDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ05ldHdvcmtNYW5hZ2Vy
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ05ldHdvcmtNYW5hZ2VyOjpn
ZXRPckNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ05ldHdvcmtNYW5hZ2VyOjpM
aWJXZWJSVENOZXR3b3JrTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ05ldHdv
cmtNYW5hZ2VyOjp+TGliV2ViUlRDTmV0d29ya01hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpM
aWJXZWJSVENOZXR3b3JrTWFuYWdlcjo6dW5yZWdpc3Rlck1ETlNOYW1lcyk6CisgICAgICAgIChX
ZWJLaXQ6OkxpYldlYlJUQ05ldHdvcmtNYW5hZ2VyOjpTdGFydFVwZGF0aW5nKToKKyAgICAgICAg
KFdlYktpdDo6TGliV2ViUlRDTmV0d29ya01hbmFnZXI6OlN0b3BVcGRhdGluZyk6CisgICAgICAg
IChXZWJLaXQ6OkxpYldlYlJUQ05ldHdvcmtNYW5hZ2VyOjpHZXRNZG5zUmVzcG9uZGVyIGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDTmV0d29ya01hbmFnZXI6Om5ldHdvcmtzQ2hh
bmdlZCk6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ05ldHdvcmtNYW5hZ2VyOjpuZXR3b3Jr
UHJvY2Vzc0NyYXNoZWQpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENOZXR3b3JrTWFuYWdl
cjo6Q3JlYXRlTmFtZUZvckFkZHJlc3MpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENOZXR3
b3JrTWFuYWdlcjo6UmVtb3ZlTmFtZUZvckFkZHJlc3MpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
TmV0d29yay93ZWJydGMvTGliV2ViUlRDTmV0d29ya01hbmFnZXIuaDogQWRkZWQuCisgICAgICAg
ICogV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkxpYldlYlJUQ1Byb3ZpZGVyOjpjcmVhdGVQZWVyQ29ubmVjdGlvbik6Cisg
ICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ1Byb3ZpZGVyOjpkaXNhYmxlTm9uTG9jYWxob3N0Q29u
bmVjdGlvbnMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRD
UHJvdmlkZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1dlYk1ETlNS
ZWdpc3Rlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYk1ETlNSZWdpc3Rlcjo6ZmluaXNoZWRS
ZWdpc3RlcmluZ01ETlNOYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViTUROU1JlZ2lzdGVyOjpy
ZWdpc3Rlck1ETlNOYW1lKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1dl
Yk1ETlNSZWdpc3Rlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvV2Vi
TUROU1JlZ2lzdGVyLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay93
ZWJydGMvV2ViUlRDTW9uaXRvci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJUQ01vbml0b3I6
OnN0YXJ0VXBkYXRpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJSVENNb25pdG9yOjpzdG9wVXBk
YXRpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJSVENNb25pdG9yOjpuZXR3b3Jrc0NoYW5nZWQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJSVENNb25pdG9yOjpuZXR3b3JrUHJvY2Vzc0NyYXNoZWQp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvV2ViUlRDTW9uaXRvci5oOgor
ICAgICAgICAoV2ViS2l0OjpXZWJSVENNb25pdG9yOjphZGRPYnNlcnZlcik6CisgICAgICAgIChX
ZWJLaXQ6OldlYlJUQ01vbml0b3I6OnJlbW92ZU9ic2VydmVyKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUlRDTW9uaXRvcjo6ZGlkUmVjZWl2ZU5ldHdvcmtMaXN0IGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViUlRDTW9uaXRvcjo6bmV0d29ya0xpc3QgY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpXZWJSVENNb25pdG9yOjppcHY0IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUlRDTW9u
aXRvcjo6aXB2NiBjb25zdCk6CisKIDIwMjEtMDgtMjYgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBw
bGUuY29tPgogCiAgICAgICAgIEN1dCBkb3duIG9uIHVzZSBvZiBDRkdldFR5cGVJRCwgdXNpbmcg
ZHluYW1pY19jZl9jYXN0IGluc3RlYWQ7IHJlbGF0ZWQgc3RyZWFtbGluaW5nCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5j
bWFrZQppbmRleCA3NmNlMGM2NjFmZWU4MzBkMTc2ZTM2MWY1Nzk4NzM1YzdhZTFlMGNlLi5jZWI5
M2ZlOGQwMTgwYzdjZWM2ZjIxMTc3YzgwMGE3MTkxNGMyMDQwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UK
QEAgLTExNSwxMSArMTE1LDE0IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURF
UlMKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmgKICAgICBNb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5oCiAgICAgTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZVNvdXJjZS5oCisgICAgTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENOZXR3b3JrTWFuYWdlci5oCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9TVFVO
TWVzc2FnZVBhcnNpbmcuaAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhQ2xpZW50
LmgKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYUNvbnRyb2xsZXIuaAogICAgIE1v
ZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5oCiAKKyAgICBNb2R1bGVzL21lZGlh
c3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENVdGlscy5oCisKICAgICBNb2R1bGVzL21vZGVsLWVs
ZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oCiAKICAgICBNb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90
aWZpY2F0aW9uLmgKQEAgLTE0MTIsNiArMTQxNSw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJB
TUVXT1JLX0hFQURFUlMKIAogICAgIHBsYXRmb3JtL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2Uu
aAogICAgIHBsYXRmb3JtL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmgKKyAgICBw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9NRE5TUmVnaXN0ZXJFcnJvci5oCiAgICAgcGxhdGZvcm0vbWVk
aWFzdHJlYW0vTWVkaWFDb25zdHJhaW50cy5oCiAgICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1Qcml2YXRlLmgKICAgICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVJl
cXVlc3QuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Q
ZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwCmluZGV4IDc5OWUxZDNkYWNjNDgxMDcyYzFi
NTdiYWQxZTk1ZTA2ZDBhMDRjODEuLmIzYjkzYmNjMzZkZjdkZDRiNTVjNWQ0YzE4MWI0MTUxODQ1
MThhMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVl
ckNvbm5lY3Rpb25CYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAKQEAgLTEwMiw3ICsxMDIsOCBAQCB2b2lk
IFBlZXJDb25uZWN0aW9uQmFja2VuZDo6Y3JlYXRlT2ZmZXJTdWNjZWVkZWQoU3RyaW5nJiYgc2Rw
KQogICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgIkNyZWF0ZSBvZmZlciBzdWNjZWVkZWQ6
XG4iLCBzZHApOwogCiAgICAgQVNTRVJUKG1fb2ZmZXJBbnN3ZXJQcm9taXNlKTsKLSAgICBtX3Bl
ZXJDb25uZWN0aW9uLmRvVGFzayhbdGhpcywgcHJvbWlzZSA9IFdURk1vdmUobV9vZmZlckFuc3dl
clByb21pc2UpLCBzZHAgPSBmaWx0ZXJTRFAoV1RGTW92ZShzZHApKV0oKSBtdXRhYmxlIHsKKyAg
ICB2YWxpZGF0ZVNEUChzZHApOworICAgIG1fcGVlckNvbm5lY3Rpb24uZG9UYXNrKFt0aGlzLCBw
cm9taXNlID0gV1RGTW92ZShtX29mZmVyQW5zd2VyUHJvbWlzZSksIHNkcCA9IFdURk1vdmUoc2Rw
KV0oKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKG1fcGVlckNvbm5lY3Rpb24uaXNDbG9zZWQoKSkK
ICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMzc2LDgxICszNzcsMTkgQEAgdm9pZCBQZWVyQ29u
bmVjdGlvbkJhY2tlbmQ6OmVuYWJsZUlDRUNhbmRpZGF0ZUZpbHRlcmluZygpCiB2b2lkIFBlZXJD
b25uZWN0aW9uQmFja2VuZDo6ZGlzYWJsZUlDRUNhbmRpZGF0ZUZpbHRlcmluZygpCiB7CiAgICAg
bV9zaG91bGRGaWx0ZXJJQ0VDYW5kaWRhdGVzID0gZmFsc2U7Ci0gICAgZm9yIChhdXRvJiBwZW5k
aW5nSUNFQ2FuZGlkYXRlIDogbV9wZW5kaW5nSUNFQ2FuZGlkYXRlcykKLSAgICAgICAgZmlyZUlD
RUNhbmRpZGF0ZUV2ZW50KFJUQ0ljZUNhbmRpZGF0ZTo6Y3JlYXRlKFdURk1vdmUocGVuZGluZ0lD
RUNhbmRpZGF0ZS5zZHApLCBXVEZNb3ZlKHBlbmRpbmdJQ0VDYW5kaWRhdGUubWlkKSwgcGVuZGlu
Z0lDRUNhbmRpZGF0ZS5zZHBNTGluZUluZGV4KSwgV1RGTW92ZShwZW5kaW5nSUNFQ2FuZGlkYXRl
LnNlcnZlclVSTCkpOwotICAgIG1fcGVuZGluZ0lDRUNhbmRpZGF0ZXMuY2xlYXIoKTsKLX0KLQot
c3RhdGljIFN0cmluZyBmaWx0ZXJJQ0VDYW5kaWRhdGUoU3RyaW5nJiYgc2RwKQotewotICAgIEFT
U0VSVCghc2RwLmNvbnRhaW5zKCIgaG9zdCAiKSk7Ci0KLSAgICBpZiAoIXNkcC5jb250YWlucygi
IHJhZGRyICIpKQotICAgICAgICByZXR1cm4gV1RGTW92ZShzZHApOwotCi0gICAgYm9vbCBza2lw
TmV4dEl0ZW0gPSBmYWxzZTsKLSAgICBib29sIGlzRmlyc3QgPSB0cnVlOwotICAgIFN0cmluZ0J1
aWxkZXIgZmlsdGVyZWRTRFA7Ci0gICAgc2RwLnNwbGl0KCcgJywgWyZdKFN0cmluZ1ZpZXcgaXRl
bSkgewotICAgICAgICBpZiAoc2tpcE5leHRJdGVtKSB7Ci0gICAgICAgICAgICBza2lwTmV4dEl0
ZW0gPSBmYWxzZTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBpZiAo
aXRlbSA9PSAicmFkZHIiKSB7Ci0gICAgICAgICAgICBmaWx0ZXJlZFNEUC5hcHBlbmQoIiByYWRk
ciAwLjAuMC4wIik7Ci0gICAgICAgICAgICBza2lwTmV4dEl0ZW0gPSB0cnVlOwotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGlmIChpdGVtID09ICJycG9ydCIpIHsKLSAg
ICAgICAgICAgIGZpbHRlcmVkU0RQLmFwcGVuZCgiIHJwb3J0IDAiKTsKLSAgICAgICAgICAgIHNr
aXBOZXh0SXRlbSA9IHRydWU7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAg
ICAgaWYgKGlzRmlyc3QpCi0gICAgICAgICAgICBpc0ZpcnN0ID0gZmFsc2U7Ci0gICAgICAgIGVs
c2UKLSAgICAgICAgICAgIGZpbHRlcmVkU0RQLmFwcGVuZCgnICcpOwotICAgICAgICBmaWx0ZXJl
ZFNEUC5hcHBlbmQoaXRlbSk7Ci0gICAgfSk7Ci0gICAgcmV0dXJuIGZpbHRlcmVkU0RQLnRvU3Ry
aW5nKCk7CiB9CiAKLVN0cmluZyBQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmZpbHRlclNEUChTdHJp
bmcmJiBzZHApIGNvbnN0Cit2b2lkIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6dmFsaWRhdGVTRFAo
Y29uc3QgU3RyaW5nJiBzZHApIGNvbnN0CiB7CisjaWZuZGVmIE5ERUJVRwogICAgIGlmICghbV9z
aG91bGRGaWx0ZXJJQ0VDYW5kaWRhdGVzKQotICAgICAgICByZXR1cm4gV1RGTW92ZShzZHApOwot
Ci0gICAgU3RyaW5nQnVpbGRlciBmaWx0ZXJlZFNEUDsKLSAgICBzZHAuc3BsaXQoJ1xuJywgW3Ro
aXMsICZmaWx0ZXJlZFNEUF0oU3RyaW5nVmlldyBsaW5lKSB7Ci0gICAgICAgIGlmIChsaW5lLnN0
YXJ0c1dpdGgoImM9SU4gSVA0IikpIHsKLSAgICAgICAgICAgIGZpbHRlcmVkU0RQLmFwcGVuZCgi
Yz1JTiBJUDQgMC4wLjAuMFxyXG4iKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQot
ICAgICAgICBpZiAobGluZS5zdGFydHNXaXRoKCJjPUlOIElQNiIpKSB7Ci0gICAgICAgICAgICBm
aWx0ZXJlZFNEUC5hcHBlbmQoImM9SU4gSVA2IDo6XHJcbiIpOwotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICB9Ci0gICAgICAgIGlmICghbGluZS5zdGFydHNXaXRoKCJhPWNhbmRpZGF0ZSIp
KSB7Ci0gICAgICAgICAgICBmaWx0ZXJlZFNEUC5hcHBlbmQobGluZSk7Ci0gICAgICAgICAgICBm
aWx0ZXJlZFNEUC5hcHBlbmQoJ1xuJyk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0K
LSAgICAgICAgaWYgKGxpbmUuZmluZCgiIGhvc3QgIiwgMTEpID09IG5vdEZvdW5kKSB7Ci0gICAg
ICAgICAgICBmaWx0ZXJlZFNEUC5hcHBlbmQoZmlsdGVySUNFQ2FuZGlkYXRlKGxpbmUudG9TdHJp
bmcoKSkpOwotICAgICAgICAgICAgZmlsdGVyZWRTRFAuYXBwZW5kKCdcbicpOwotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgYXV0byBpcEFkZHJlc3MgPSBleHRyYWN0
SVBBZGRyZXNzKGxpbmUpOwotICAgICAgICBhdXRvIG1kbnNOYW1lID0gbV9pcEFkZHJlc3NUb01E
TlNOYW1lTWFwLmdldChpcEFkZHJlc3MpOwotICAgICAgICBpZiAobWRuc05hbWUuaXNFbXB0eSgp
KQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBhdXRvIHNkcCA9IGxpbmUudG9TdHJpbmco
KTsKLSAgICAgICAgc2RwLnJlcGxhY2UoaXBBZGRyZXNzLCBtZG5zTmFtZSk7Ci0gICAgICAgIGZp
bHRlcmVkU0RQLmFwcGVuZChzZHApOwotICAgICAgICBmaWx0ZXJlZFNEUC5hcHBlbmQoJ1xuJyk7
CisgICAgICAgIHJldHVybjsKKyAgICBzZHAuc3BsaXQoJ1xuJywgW10oYXV0byBsaW5lKSB7Cisg
ICAgICAgIEFTU0VSVCghbGluZS5zdGFydHNXaXRoKCJhPWNhbmRpZGF0ZSIpIHx8IGxpbmUuY29u
dGFpbnMoIi5sb2NhbCIpKTsKICAgICB9KTsKLSAgICByZXR1cm4gZmlsdGVyZWRTRFAudG9TdHJp
bmcoKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHNkcCk7CisjZW5kaWYKIH0KIAogdm9pZCBQ
ZWVyQ29ubmVjdGlvbkJhY2tlbmQ6Om5ld0lDRUNhbmRpZGF0ZShTdHJpbmcmJiBzZHAsIFN0cmlu
ZyYmIG1pZCwgdW5zaWduZWQgc2hvcnQgc2RwTUxpbmVJbmRleCwgU3RyaW5nJiYgc2VydmVyVVJM
KQpAQCAtNDYwLDIyICszOTksOCBAQCB2b2lkIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6bmV3SUNF
Q2FuZGlkYXRlKFN0cmluZyYmIHNkcCwgU3RyaW5nJiYgbWlkLCB1bnNpZ25lZAogICAgICAgICBB
TFdBWVNfTE9HKGxvZ1NpdGVJZGVudGlmaWVyLCAiR2F0aGVyZWQgaWNlIGNhbmRpZGF0ZToiLCBz
ZHApOwogICAgICAgICBtX2ZpbmlzaGVkR2F0aGVyaW5nQ2FuZGlkYXRlcyA9IGZhbHNlOwogCi0g
ICAgICAgIGlmICghbV9zaG91bGRGaWx0ZXJJQ0VDYW5kaWRhdGVzKSB7Ci0gICAgICAgICAgICBm
aXJlSUNFQ2FuZGlkYXRlRXZlbnQoUlRDSWNlQ2FuZGlkYXRlOjpjcmVhdGUoV1RGTW92ZShzZHAp
LCBXVEZNb3ZlKG1pZCksIHNkcE1MaW5lSW5kZXgpLCBXVEZNb3ZlKHNlcnZlclVSTCkpOwotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGlmIChzZHAuZmluZCgiIGhvc3Qg
IiwgMCkgIT0gbm90Rm91bmQpIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBtaWdodCBuZWVk
IHRvIGNsZWFyIGFsbCBwZW5kaW5nIGNhbmRpZGF0ZXMgd2hlbiBzZXR0aW5nIGFnYWluIGxvY2Fs
IGRlc2NyaXB0aW9uLgotICAgICAgICAgICAgbV9wZW5kaW5nSUNFQ2FuZGlkYXRlcy5hcHBlbmQo
UGVuZGluZ0lDRUNhbmRpZGF0ZSB7IFN0cmluZyB7IHNkcCB9LCBXVEZNb3ZlKG1pZCksIHNkcE1M
aW5lSW5kZXgsIFdURk1vdmUoc2VydmVyVVJMKSB9KTsKLSAgICAgICAgICAgIGlmIChSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYlJUQ01ETlNJQ0VDYW5kaWRhdGVz
RW5hYmxlZCgpKSB7Ci0gICAgICAgICAgICAgICAgYXV0byBpcEFkZHJlc3MgPSBleHRyYWN0SVBB
ZGRyZXNzKHNkcCk7Ci0gICAgICAgICAgICAgICAgLy8gV2UgcmVzdHJpY3QgdG8gSVB2NCBjYW5k
aWRhdGVzIGZvciBub3cuCi0gICAgICAgICAgICAgICAgaWYgKGlwQWRkcmVzcy5jb250YWlucygn
LicpKQotICAgICAgICAgICAgICAgICAgICByZWdpc3Rlck1ETlNOYW1lKGlwQWRkcmVzcyk7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgZmly
ZUlDRUNhbmRpZGF0ZUV2ZW50KFJUQ0ljZUNhbmRpZGF0ZTo6Y3JlYXRlKGZpbHRlcklDRUNhbmRp
ZGF0ZShXVEZNb3ZlKHNkcCkpLCBXVEZNb3ZlKG1pZCksIHNkcE1MaW5lSW5kZXgpLCBXVEZNb3Zl
KHNlcnZlclVSTCkpOworICAgICAgICBBU1NFUlQoIW1fc2hvdWxkRmlsdGVySUNFQ2FuZGlkYXRl
cyB8fCBzZHAuY29udGFpbnMoIi5sb2NhbCIpKTsKKyAgICAgICAgZmlyZUlDRUNhbmRpZGF0ZUV2
ZW50KFJUQ0ljZUNhbmRpZGF0ZTo6Y3JlYXRlKFdURk1vdmUoc2RwKSwgV1RGTW92ZShtaWQpLCBz
ZHBNTGluZUluZGV4KSwgV1RGTW92ZShzZXJ2ZXJVUkwpKTsKICAgICB9KTsKIH0KIApAQCAtNDg1
LDEyICs0MTAsOCBAQCB2b2lkIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6ZG9uZUdhdGhlcmluZ0Nh
bmRpZGF0ZXMoKQogICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgIkZpbmlzaGVkIGljZSBj
YW5kaWRhdGUgZ2F0aGVyaW5nIik7CiAgICAgbV9maW5pc2hlZEdhdGhlcmluZ0NhbmRpZGF0ZXMg
PSB0cnVlOwogCi0gICAgaWYgKG1fd2FpdGluZ0Zvck1ETlNSZWdpc3RyYXRpb24pCi0gICAgICAg
IHJldHVybjsKLQogICAgIG1fcGVlckNvbm5lY3Rpb24uZGlzcGF0Y2hFdmVudFdoZW5GZWFzaWJs
ZShSVENQZWVyQ29ubmVjdGlvbkljZUV2ZW50OjpjcmVhdGUoRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8s
IEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vLCBudWxscHRyLCB7IH0pKTsKICAgICBtX3BlZXJDb25u
ZWN0aW9uLnVwZGF0ZUljZUdhdGhlcmluZ1N0YXRlKFJUQ0ljZUdhdGhlcmluZ1N0YXRlOjpDb21w
bGV0ZSk7Ci0gICAgbV9wZW5kaW5nSUNFQ2FuZGlkYXRlcy5jbGVhcigpOwogfQogCiB2b2lkIFBl
ZXJDb25uZWN0aW9uQmFja2VuZDo6ZW5kT2ZJY2VDYW5kaWRhdGVzKERPTVByb21pc2VEZWZlcnJl
ZDx2b2lkPiYmIHByb21pc2UpCkBAIC00OTgsNDUgKzQxOSw2IEBAIHZvaWQgUGVlckNvbm5lY3Rp
b25CYWNrZW5kOjplbmRPZkljZUNhbmRpZGF0ZXMoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYg
cHJvbWlzCiAgICAgcHJvbWlzZS5yZXNvbHZlKCk7CiB9CiAKLXZvaWQgUGVlckNvbm5lY3Rpb25C
YWNrZW5kOjpyZWdpc3Rlck1ETlNOYW1lKGNvbnN0IFN0cmluZyYgaXBBZGRyZXNzKQotewotICAg
ICsrbV93YWl0aW5nRm9yTUROU1JlZ2lzdHJhdGlvbjsKLSAgICBhdXRvJiBkb2N1bWVudCA9IGRv
d25jYXN0PERvY3VtZW50PigqbV9wZWVyQ29ubmVjdGlvbi5zY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkpOwotICAgIGF1dG8mIHByb3ZpZGVyID0gZG9jdW1lbnQucGFnZSgpLT5saWJXZWJSVENQcm92
aWRlcigpOwotICAgIHByb3ZpZGVyLnJlZ2lzdGVyTUROU05hbWUoZG9jdW1lbnQuaWRlbnRpZmll
cigpLCBpcEFkZHJlc3MsIFtwZWVyQ29ubmVjdGlvbiA9IG1ha2VSZWYobV9wZWVyQ29ubmVjdGlv
biksIHRoaXMsIGlwQWRkcmVzc10gKExpYldlYlJUQ1Byb3ZpZGVyOjpNRE5TTmFtZU9yRXJyb3Im
JiByZXN1bHQpIHsKLSAgICAgICAgaWYgKHBlZXJDb25uZWN0aW9uLT5pc1N0b3BwZWQoKSkKLSAg
ICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAtLW1fd2FpdGluZ0Zvck1ETlNSZWdpc3RyYXRp
b247Ci0gICAgICAgIGlmICghcmVzdWx0Lmhhc192YWx1ZSgpKSB7Ci0gICAgICAgICAgICBtX3Bl
ZXJDb25uZWN0aW9uLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+YWRkQ29uc29sZU1lc3NhZ2Uo
TWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgbWFrZVN0cmluZygiTURO
UyByZWdpc3RyYXRpb24gb2YgYSBob3N0IGNhbmRpZGF0ZSBmYWlsZWQgd2l0aCBlcnJvciAiLCAo
dW5zaWduZWQpcmVzdWx0LmVycm9yKCkpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
fQotCi0gICAgICAgIHRoaXMtPmZpbmlzaGVkUmVnaXN0ZXJpbmdNRE5TTmFtZShpcEFkZHJlc3Ms
IHJlc3VsdC52YWx1ZSgpKTsKLSAgICB9KTsKLX0KLQotdm9pZCBQZWVyQ29ubmVjdGlvbkJhY2tl
bmQ6OmZpbmlzaGVkUmVnaXN0ZXJpbmdNRE5TTmFtZShjb25zdCBTdHJpbmcmIGlwQWRkcmVzcywg
Y29uc3QgU3RyaW5nJiBuYW1lKQotewotICAgIG1faXBBZGRyZXNzVG9NRE5TTmFtZU1hcC5hZGQo
aXBBZGRyZXNzLCBuYW1lKTsKLSAgICBWZWN0b3I8UGVuZGluZ0lDRUNhbmRpZGF0ZSo+IGNhbmRp
ZGF0ZXM7Ci0gICAgZm9yIChhdXRvJiBjYW5kaWRhdGUgOiBtX3BlbmRpbmdJQ0VDYW5kaWRhdGVz
KSB7Ci0gICAgICAgIGlmIChjYW5kaWRhdGUuc2RwLmZpbmQoaXBBZGRyZXNzKSAhPSBub3RGb3Vu
ZCkgewotICAgICAgICAgICAgYXV0byBzZHAgPSBjYW5kaWRhdGUuc2RwOwotICAgICAgICAgICAg
c2RwLnJlcGxhY2UoaXBBZGRyZXNzLCBuYW1lKTsKLSAgICAgICAgICAgIGZpcmVJQ0VDYW5kaWRh
dGVFdmVudChSVENJY2VDYW5kaWRhdGU6OmNyZWF0ZShXVEZNb3ZlKHNkcCksIFdURk1vdmUoY2Fu
ZGlkYXRlLm1pZCksIGNhbmRpZGF0ZS5zZHBNTGluZUluZGV4KSwgV1RGTW92ZShjYW5kaWRhdGUu
c2VydmVyVVJMKSk7Ci0gICAgICAgICAgICBjYW5kaWRhdGVzLmFwcGVuZCgmY2FuZGlkYXRlKTsK
LSAgICAgICAgfQotICAgIH0KLSAgICBtX3BlbmRpbmdJQ0VDYW5kaWRhdGVzLnJlbW92ZUFsbE1h
dGNoaW5nKFsmXSAoY29uc3QgYXV0byYgY2FuZGlkYXRlKSB7Ci0gICAgICAgIHJldHVybiBjYW5k
aWRhdGVzLmNvbnRhaW5zKCZjYW5kaWRhdGUpOwotICAgIH0pOwotCi0gICAgaWYgKCFtX3dhaXRp
bmdGb3JNRE5TUmVnaXN0cmF0aW9uICYmIG1fZmluaXNoZWRHYXRoZXJpbmdDYW5kaWRhdGVzKQot
ICAgICAgICBkb25lR2F0aGVyaW5nQ2FuZGlkYXRlcygpOwotfQotCiB2b2lkIFBlZXJDb25uZWN0
aW9uQmFja2VuZDo6dXBkYXRlU2lnbmFsaW5nU3RhdGUoUlRDU2lnbmFsaW5nU3RhdGUgbmV3U2ln
bmFsaW5nU3RhdGUpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5k
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFj
a2VuZC5oCmluZGV4IDFjMjU1NjYyNWVlYmMyZjc3NjIzOGE4MzVkMzc0OGIwMTZhM2Y1NjQuLmEw
Njc1YmE2YjUwNjMxMDc0NmJhODczZDRlMGU3OGNhNDc3NWFjNTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tl
bmQuaApAQCAtMjA5LDcgKzIwOSw3IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGFkZEljZUNhbmRp
ZGF0ZVN1Y2NlZWRlZCgpOwogICAgIHZvaWQgYWRkSWNlQ2FuZGlkYXRlRmFpbGVkKEV4Y2VwdGlv
biYmKTsKIAotICAgIFN0cmluZyBmaWx0ZXJTRFAoU3RyaW5nJiYpIGNvbnN0OworICAgIHZvaWQg
dmFsaWRhdGVTRFAoY29uc3QgU3RyaW5nJikgY29uc3Q7CiAKICAgICBzdHJ1Y3QgUGVuZGluZ1Ry
YWNrRXZlbnQgewogICAgICAgICBSZWY8UlRDUnRwUmVjZWl2ZXI+IHJlY2VpdmVyOwpAQCAtMjI4
LDggKzIyOCw2IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGVuZE9mSWNlQ2FuZGlkYXRl
cyhET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJik7CiAgICAgdmlydHVhbCB2b2lkIGRvU3RvcCgp
ID0gMDsKIAotICAgIHZvaWQgcmVnaXN0ZXJNRE5TTmFtZShjb25zdCBTdHJpbmcmIGlwQWRkcmVz
cyk7Ci0KIHByb3RlY3RlZDoKICAgICBSVENQZWVyQ29ubmVjdGlvbiYgbV9wZWVyQ29ubmVjdGlv
bjsKIApAQCAtMjM4LDI1ICsyMzYsMTUgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
RE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+PiBtX3NldERlc2NyaXB0aW9uUHJvbWlzZTsKIAogICAg
IGJvb2wgbV9zaG91bGRGaWx0ZXJJQ0VDYW5kaWRhdGVzIHsgdHJ1ZSB9OwotICAgIHN0cnVjdCBQ
ZW5kaW5nSUNFQ2FuZGlkYXRlIHsKLSAgICAgICAgLy8gRmllbGRzIGRlc2NyaWJlZCBpbiBodHRw
czovL3d3dy53My5vcmcvVFIvd2VicnRjLyNpZGwtZGVmLXJ0Y2ljZWNhbmRpZGF0ZWluaXQuCi0g
ICAgICAgIFN0cmluZyBzZHA7Ci0gICAgICAgIFN0cmluZyBtaWQ7Ci0gICAgICAgIHVuc2lnbmVk
IHNob3J0IHNkcE1MaW5lSW5kZXg7Ci0gICAgICAgIFN0cmluZyBzZXJ2ZXJVUkw7Ci0gICAgfTsK
LSAgICBWZWN0b3I8UGVuZGluZ0lDRUNhbmRpZGF0ZT4gbV9wZW5kaW5nSUNFQ2FuZGlkYXRlczsK
IAogICAgIFZlY3RvcjxQZW5kaW5nVHJhY2tFdmVudD4gbV9wZW5kaW5nVHJhY2tFdmVudHM7CiAK
LSAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBtX2lwQWRkcmVzc1RvTUROU05hbWVNYXA7CiAj
aWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgUmVmPGNvbnN0IExvZ2dlcj4gbV9sb2dnZXI7
CiAgICAgY29uc3Qgdm9pZCogbV9sb2dJZGVudGlmaWVyOwogI2VuZGlmCiAgICAgYm9vbCBtX25l
Z290aWF0aW9uTmVlZGVkIHsgZmFsc2UgfTsKICAgICBib29sIG1fZmluaXNoZWRHYXRoZXJpbmdD
YW5kaWRhdGVzIHsgZmFsc2UgfTsKLSAgICB1aW50NjRfdCBtX3dhaXRpbmdGb3JNRE5TUmVnaXN0
cmF0aW9uIHsgMCB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENDb250cm9sbGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDQ29udHJvbGxlci5jcHAKaW5kZXgg
NzBkNDBjNmJkNWIzMjYyZjJjZmU2MTVmYmMyYjQ1YzYyOWNjZjQzZS4uY2YzNDVhNDYyZmNkYjIx
MTlmN2ZiZGY1ZWJkZGYwMTQ1ZWJhNzZiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ0NvbnRyb2xsZXIuY3BwCkBAIC03Myw2ICs3MywxMCBAQCBi
b29sIFJUQ0NvbnRyb2xsZXI6OnNob3VsZERpc2FibGVJQ0VDYW5kaWRhdGVGaWx0ZXJpbmcoRG9j
dW1lbnQmIGRvY3VtZW50KQogCiB2b2lkIFJUQ0NvbnRyb2xsZXI6OmFkZChSVENQZWVyQ29ubmVj
dGlvbiYgY29ubmVjdGlvbikKIHsKKyAgICBhdXRvJiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3Vt
ZW50PigqY29ubmVjdGlvbi5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOworICAgIGlmIChhdXRv
KiBuZXR3b3JrTWFuYWdlciA9IGRvY3VtZW50LnJ0Y05ldHdvcmtNYW5hZ2VyKCkpCisgICAgICAg
IG5ldHdvcmtNYW5hZ2VyLT5zZXRJQ0VDYW5kaWRhdGVGaWx0ZXJpbmcoIXNob3VsZERpc2FibGVJ
Q0VDYW5kaWRhdGVGaWx0ZXJpbmcoZG9jdW1lbnQpKTsKKwogICAgIG1fcGVlckNvbm5lY3Rpb25z
LmFwcGVuZChjb25uZWN0aW9uKTsKICAgICBpZiAoc2hvdWxkRGlzYWJsZUlDRUNhbmRpZGF0ZUZp
bHRlcmluZyhkb3duY2FzdDxEb2N1bWVudD4oKmNvbm5lY3Rpb24uc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpKSkpCiAgICAgICAgIGNvbm5lY3Rpb24uZGlzYWJsZUlDRUNhbmRpZGF0ZUZpbHRlcmlu
ZygpOwpAQCAtODQsOCArODgsMTMgQEAgdm9pZCBSVENDb250cm9sbGVyOjpkaXNhYmxlSUNFQ2Fu
ZGlkYXRlRmlsdGVyaW5nRm9yQWxsT3JpZ2lucygpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1f
c2hvdWxkRmlsdGVySUNFQ2FuZGlkYXRlcyA9IGZhbHNlOwotICAgIGZvciAoUlRDUGVlckNvbm5l
Y3Rpb24mIGNvbm5lY3Rpb24gOiBtX3BlZXJDb25uZWN0aW9ucykKKyAgICBmb3IgKFJUQ1BlZXJD
b25uZWN0aW9uJiBjb25uZWN0aW9uIDogbV9wZWVyQ29ubmVjdGlvbnMpIHsKKyAgICAgICAgaWYg
KGF1dG8qIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbm5lY3Rpb24uc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpKSkgeworICAgICAgICAgICAgaWYgKGF1dG8qIG5ldHdvcmtNYW5hZ2Vy
ID0gZG9jdW1lbnQtPnJ0Y05ldHdvcmtNYW5hZ2VyKCkpCisgICAgICAgICAgICAgICAgbmV0d29y
a01hbmFnZXItPnNldElDRUNhbmRpZGF0ZUZpbHRlcmluZyhmYWxzZSk7CisgICAgICAgIH0KICAg
ICAgICAgY29ubmVjdGlvbi5kaXNhYmxlSUNFQ2FuZGlkYXRlRmlsdGVyaW5nKCk7CisgICAgfQog
fQogCiB2b2lkIFJUQ0NvbnRyb2xsZXI6OmRpc2FibGVJQ0VDYW5kaWRhdGVGaWx0ZXJpbmdGb3JE
b2N1bWVudChEb2N1bWVudCYgZG9jdW1lbnQpCkBAIC05MywxMSArMTAyLDE3IEBAIHZvaWQgUlRD
Q29udHJvbGxlcjo6ZGlzYWJsZUlDRUNhbmRpZGF0ZUZpbHRlcmluZ0ZvckRvY3VtZW50KERvY3Vt
ZW50JiBkb2N1bWVudCkKICAgICBpZiAoIUxpYldlYlJUQ1Byb3ZpZGVyOjp3ZWJSVENBdmFpbGFi
bGUoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgaWYgKGF1dG8qIG5ldHdvcmtNYW5hZ2VyID0g
ZG9jdW1lbnQucnRjTmV0d29ya01hbmFnZXIoKSkKKyAgICAgICAgbmV0d29ya01hbmFnZXItPnNl
dElDRUNhbmRpZGF0ZUZpbHRlcmluZyhmYWxzZSk7CisKICAgICBtX2ZpbHRlcmluZ0Rpc2FibGVk
T3JpZ2lucy5hcHBlbmQoUGVlckNvbm5lY3Rpb25PcmlnaW4geyBkb2N1bWVudC50b3BPcmlnaW4o
KSwgZG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4oKSB9KTsKICAgICBmb3IgKFJUQ1BlZXJDb25uZWN0
aW9uJiBjb25uZWN0aW9uIDogbV9wZWVyQ29ubmVjdGlvbnMpIHsKICAgICAgICAgaWYgKGF1dG8q
IHBlZXJDb25uZWN0aW9uRG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oY29ubmVjdGlvbi5z
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkpKSB7Ci0gICAgICAgICAgICBpZiAobWF0Y2hEb2N1bWVu
dE9yaWdpbigqcGVlckNvbm5lY3Rpb25Eb2N1bWVudCwgZG9jdW1lbnQudG9wT3JpZ2luKCksIGRv
Y3VtZW50LnNlY3VyaXR5T3JpZ2luKCkpKQorICAgICAgICAgICAgaWYgKG1hdGNoRG9jdW1lbnRP
cmlnaW4oKnBlZXJDb25uZWN0aW9uRG9jdW1lbnQsIGRvY3VtZW50LnRvcE9yaWdpbigpLCBkb2N1
bWVudC5zZWN1cml0eU9yaWdpbigpKSkgeworICAgICAgICAgICAgICAgIGlmIChhdXRvKiBuZXR3
b3JrTWFuYWdlciA9IHBlZXJDb25uZWN0aW9uRG9jdW1lbnQtPnJ0Y05ldHdvcmtNYW5hZ2VyKCkp
CisgICAgICAgICAgICAgICAgICAgIG5ldHdvcmtNYW5hZ2VyLT5zZXRJQ0VDYW5kaWRhdGVGaWx0
ZXJpbmcoZmFsc2UpOwogICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24uZGlzYWJsZUlDRUNhbmRp
ZGF0ZUZpbHRlcmluZygpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogfQpAQCAt
MTA5LDggKzEyNCwxMyBAQCB2b2lkIFJUQ0NvbnRyb2xsZXI6OmVuYWJsZUlDRUNhbmRpZGF0ZUZp
bHRlcmluZygpCiAKICAgICBtX2ZpbHRlcmluZ0Rpc2FibGVkT3JpZ2lucy5jbGVhcigpOwogICAg
IG1fc2hvdWxkRmlsdGVySUNFQ2FuZGlkYXRlcyA9IHRydWU7Ci0gICAgZm9yIChSVENQZWVyQ29u
bmVjdGlvbiYgY29ubmVjdGlvbiA6IG1fcGVlckNvbm5lY3Rpb25zKQorICAgIGZvciAoUlRDUGVl
ckNvbm5lY3Rpb24mIGNvbm5lY3Rpb24gOiBtX3BlZXJDb25uZWN0aW9ucykgewogICAgICAgICBj
b25uZWN0aW9uLmVuYWJsZUlDRUNhbmRpZGF0ZUZpbHRlcmluZygpOworICAgICAgICBpZiAoYXV0
byogZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oY29ubmVjdGlvbi5zY3JpcHRFeGVjdXRp
b25Db250ZXh0KCkpKSB7CisgICAgICAgICAgICBpZiAoYXV0byogbmV0d29ya01hbmFnZXIgPSBk
b2N1bWVudC0+cnRjTmV0d29ya01hbmFnZXIoKSkKKyAgICAgICAgICAgICAgICBuZXR3b3JrTWFu
YWdlci0+c2V0SUNFQ2FuZGlkYXRlRmlsdGVyaW5nKHRydWUpOworICAgICAgICB9CisgICAgfQog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ05ldHdvcmtNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ05ldHdvcmtNYW5hZ2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWYzNmZk
NDYxZjgxYWJiYTJjMDJiYjgxZjFmYjVmOTk3ODAyNWZkMAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDTmV0d29ya01hbmFnZXIuaApAQCAt
MCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwor
ICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdF
Ql9SVEMpCisKKyNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBSVENOZXR3b3JrTWFuYWdlciA6IHB1YmxpYyBUaHJlYWRT
YWZlUmVmQ291bnRlZDxSVENOZXR3b3JrTWFuYWdlciwgV1RGOjpEZXN0cnVjdGlvblRocmVhZDo6
TWFpblJ1bkxvb3A+IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5SVENOZXR3b3JrTWFuYWdlcigp
ID0gZGVmYXVsdDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0SUNFQ2FuZGlkYXRlRmlsdGVyaW5nKGJv
b2wpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3Rlck1ETlNOYW1lcygpID0gMDsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfUlRDKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMv
TGliV2ViUlRDTWVkaWFFbmRwb2ludC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmNwcAppbmRleCA1M2M0NGFk
ZjEyYTliZWQ3NGNhNWRiOGE5NTY4MDIzZDg5OTI2NjU1Li4yZDBhYzVkZDAzNmJmYWY4YTkxZjVk
NDE5NWM5NWIwOGI3MWNkMDM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVu
ZHBvaW50LmNwcApAQCAtOTMsMTUgKzkzLDE1IEBAIGJvb2wgTGliV2ViUlRDTWVkaWFFbmRwb2lu
dDo6c2V0Q29uZmlndXJhdGlvbihMaWJXZWJSVENQcm92aWRlciYgY2xpZW50LCB3ZWJydGM6CiAg
ICAgY29uZmlndXJhdGlvbi5zZHBfc2VtYW50aWNzID0gd2VicnRjOjpTZHBTZW1hbnRpY3M6OmtV
bmlmaWVkUGxhbjsKIAogICAgIGlmICghbV9iYWNrZW5kKSB7CisgICAgICAgIGF1dG8mIGRvY3Vt
ZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KCptX3BlZXJDb25uZWN0aW9uQmFja2VuZC5jb25uZWN0
aW9uKCkuc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICAgICAgaWYgKCFtX3J0Y1NvY2tl
dEZhY3RvcnkpIHsKLSAgICAgICAgICAgIGF1dG8mIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1l
bnQ+KCptX3BlZXJDb25uZWN0aW9uQmFja2VuZC5jb25uZWN0aW9uKCkuc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpKTsKICAgICAgICAgICAgIFJlZ2lzdHJhYmxlRG9tYWluIGRvbWFpbiB7IGRvY3Vt
ZW50LnVybCgpIH07CiAgICAgICAgICAgICBib29sIGlzRmlyc3RQYXJ0eSA9IGRvbWFpbiA9PSBS
ZWdpc3RyYWJsZURvbWFpbihkb2N1bWVudC5maXJzdFBhcnR5Rm9yQ29va2llcygpKTsKICAgICAg
ICAgICAgIG1fcnRjU29ja2V0RmFjdG9yeSA9IGNsaWVudC5jcmVhdGVTb2NrZXRGYWN0b3J5KGRv
Y3VtZW50LnVzZXJBZ2VudChkb2N1bWVudC51cmwoKSksIGlzRmlyc3RQYXJ0eSwgV1RGTW92ZShk
b21haW4pKTsKLSAgICAgICAgICAgIGlmICghbV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQuc2hvdWxk
RmlsdGVySUNFQ2FuZGlkYXRlcygpKQorICAgICAgICAgICAgaWYgKCFtX3BlZXJDb25uZWN0aW9u
QmFja2VuZC5zaG91bGRGaWx0ZXJJQ0VDYW5kaWRhdGVzKCkgJiYgbV9ydGNTb2NrZXRGYWN0b3J5
KQogICAgICAgICAgICAgICAgIG1fcnRjU29ja2V0RmFjdG9yeS0+ZGlzYWJsZVJlbGF5KCk7CiAg
ICAgICAgIH0KLSAgICAgICAgbV9iYWNrZW5kID0gY2xpZW50LmNyZWF0ZVBlZXJDb25uZWN0aW9u
KCp0aGlzLCBtX3J0Y1NvY2tldEZhY3RvcnkuZ2V0KCksIFdURk1vdmUoY29uZmlndXJhdGlvbikp
OworICAgICAgICBtX2JhY2tlbmQgPSBjbGllbnQuY3JlYXRlUGVlckNvbm5lY3Rpb24oZG9jdW1l
bnQuaWRlbnRpZmllcigpLCAqdGhpcywgbV9ydGNTb2NrZXRGYWN0b3J5LmdldCgpLCBXVEZNb3Zl
KGNvbmZpZ3VyYXRpb24pKTsKICAgICAgICAgcmV0dXJuICEhbV9iYWNrZW5kOwogICAgIH0KICAg
ICBhdXRvIG9sZENvbmZpZ3VyYXRpb24gPSBtX2JhY2tlbmQtPkdldENvbmZpZ3VyYXRpb24oKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRj
L0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQu
Y3BwCmluZGV4IDU5NjAyYjA5YWVjOWUwYWJiM2QyMjdjMzBmOTI4OTRkNGJhNmQ2MjQuLmM2OWUw
YzZkN2JlNzBiZTFkNzAxMzA4MTM3ZDhlMzVjZmUyYmUzYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0
aW9uQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9s
aWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcApAQCAtMzEwLDcgKzMx
MCw3IEBAIFJlZlB0cjxSVENTZXNzaW9uRGVzY3JpcHRpb24+IExpYldlYlJUQ1BlZXJDb25uZWN0
aW9uQmFja2VuZDo6Y3VycmVudExvY2FsRGVzY3JpCiB7CiAgICAgYXV0byBkZXNjcmlwdGlvbiA9
IG1fZW5kcG9pbnQtPmN1cnJlbnRMb2NhbERlc2NyaXB0aW9uKCk7CiAgICAgaWYgKGRlc2NyaXB0
aW9uKQotICAgICAgICBkZXNjcmlwdGlvbi0+c2V0U2RwKGZpbHRlclNEUChTdHJpbmcoZGVzY3Jp
cHRpb24tPnNkcCgpKSkpOworICAgICAgICB2YWxpZGF0ZVNEUChkZXNjcmlwdGlvbi0+c2RwKCkp
OwogICAgIHJldHVybiBkZXNjcmlwdGlvbjsKIH0KIApAQCAtMzIzLDcgKzMyMyw3IEBAIFJlZlB0
cjxSVENTZXNzaW9uRGVzY3JpcHRpb24+IExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6
cGVuZGluZ0xvY2FsRGVzY3JpCiB7CiAgICAgYXV0byBkZXNjcmlwdGlvbiA9IG1fZW5kcG9pbnQt
PnBlbmRpbmdMb2NhbERlc2NyaXB0aW9uKCk7CiAgICAgaWYgKGRlc2NyaXB0aW9uKQotICAgICAg
ICBkZXNjcmlwdGlvbi0+c2V0U2RwKGZpbHRlclNEUChTdHJpbmcoZGVzY3JpcHRpb24tPnNkcCgp
KSkpOworICAgICAgICB2YWxpZGF0ZVNEUChkZXNjcmlwdGlvbi0+c2RwKCkpOwogICAgIHJldHVy
biBkZXNjcmlwdGlvbjsKIH0KIApAQCAtMzM2LDcgKzMzNiw3IEBAIFJlZlB0cjxSVENTZXNzaW9u
RGVzY3JpcHRpb24+IExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6bG9jYWxEZXNjcmlw
dGlvbigpCiB7CiAgICAgYXV0byBkZXNjcmlwdGlvbiA9IG1fZW5kcG9pbnQtPmxvY2FsRGVzY3Jp
cHRpb24oKTsKICAgICBpZiAoZGVzY3JpcHRpb24pCi0gICAgICAgIGRlc2NyaXB0aW9uLT5zZXRT
ZHAoZmlsdGVyU0RQKFN0cmluZyhkZXNjcmlwdGlvbi0+c2RwKCkpKSk7CisgICAgICAgIHZhbGlk
YXRlU0RQKGRlc2NyaXB0aW9uLT5zZHAoKSk7CiAgICAgcmV0dXJuIGRlc2NyaXB0aW9uOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggOWNmYzVmMjVkMDRmZWJkMjliMmMxZjRmZTBkYjE4OGMwNGExMTUwNi4uZTQ5YmNmYWZm
Zjc0ZTdiNTE2ODU2ODg0M2YzM2YwODcyMTIxYzg0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTE3Miw2ICsxMTcyLDkgQEAK
IAkJNDFCODc3NjIyM0RFMTA0NTAwMzYzOEI4IC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlm
aWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUI4
Nzc2MDIzREUxMDQyMDAzNjM4QjggLyogUmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MUJCQTg2
NjI1N0UzNzNCMDBBQzdGNkQgLyogU0ZyYW1lVXRpbHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMjA5RTI0MjU3QTJGQkIwMDEyMEFDQSAvKiBTRnJh
bWVVdGlscy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTQxQkYyMDQ5MjJCQTdCRTgwMDA0RjgxMiAvKiBSZWFsdGltZVZpZGVvU291cmNlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUJGMjA0MDIyQjk0
NzE2MDAwNEY4MTIgLyogUmVhbHRpbWVWaWRlb1NvdXJjZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQxQzE0QkM2MjZERTZERTgwMDY4NUJGNSAv
KiBSVENOZXR3b3JrTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDFDMTRCQzQyNkRFNkRFODAwNjg1QkY1IC8qIFJUQ05ldHdvcmtNYW5hZ2Vy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDFD
MTRCQzcyNkRFODU4NDAwNjg1QkY1IC8qIExpYldlYlJUQ1V0aWxzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUQxQTA0QzIxM0VEREZGMDA2M0ZCNkIg
LyogTGliV2ViUlRDVXRpbHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQk0MUMxNEJDOTI2REY3OUQ3MDA2ODVCRjUgLyogTUROU1JlZ2lzdGVyRXJy
b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQzE0
QkM4MjZERjc5RDYwMDY4NUJGNSAvKiBNRE5TUmVnaXN0ZXJFcnJvci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxQzNCOEExMjY0OUIxRTAwMDRF
RDRERSAvKiBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFDM0I4OUYyNjQ5QjFC
NzAwNEVENERFIC8qIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDFDM0I4
QTIyNjQ5QjFFNTAwNEVENERFIC8qIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFDM0I4OUIy
NjQ5QjFCNjAwNEVENERFIC8qIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxQzc2MEIx
MEVERTAzRDMwMEMxNjU1RiAvKiBTY3JpcHRTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFDNzYwQjAwRURFMDNEMzAwQzE2NTVGIC8qIFNjcmlw
dFN0YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
QEAgLTgwNDQsNiArODA0Nyw4IEBACiAJCTQxQkNFODc3MjVGN0E2N0EwMDQ2QzJFNSAvKiBSVENU
cmFuc2Zvcm1FdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSVENUcmFu
c2Zvcm1FdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUJGMjA0MDIyQjk0
NzE2MDAwNEY4MTIgLyogUmVhbHRpbWVWaWRlb1NvdXJjZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWFs
dGltZVZpZGVvU291cmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQkYyMDQy
MjJCOTQ3MTcwMDA0RjgxMiAvKiBSZWFsdGltZVZpZGVvU291cmNlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFJlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk0MUMxNEJDNDI2REU2REU4MDA2ODVCRjUgLyogUlRDTmV0d29ya01hbmFnZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUlRDTmV0d29ya01hbmFnZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFDMTRCQzgyNkRGNzlENjAwNjg1QkY1IC8qIE1ETlNS
ZWdpc3RlckVycm9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1ETlNSZWdp
c3RlckVycm9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQzNCODlCMjY0OUIx
QjYwMDRFRDRERSAvKiBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQxQzNCODlDMjY0OUIxQjYwMDRFRDRERSAvKiBBdWRpb01lZGlh
U3RyZWFtVHJhY2tSZW5kZXJlckNvY29hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvTWVkaWFTdHJl
YW1UcmFja1JlbmRlcmVyQ29jb2EuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFD
M0I4OUQyNjQ5QjFCNjAwNEVENERFIC8qIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29j
b2EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJD
b2NvYS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzI1NCw2ICsxNzI1OSw3
IEBACiAJCQkJMzE2RENCODkxRTdBNjk5NjAwMUI1Rjg3IC8qIFJUQ0ljZVRyYW5zcG9ydC5pZGwg
Ki8sCiAJCQkJNDE0NTE2RTAyNkNDMDQyMTAwQUFBQkUwIC8qIFJUQ0ljZVRyYW5zcG9ydEJhY2tl
bmQuaCAqLywKIAkJCQkzMTZEQ0I4RTFFN0E2Qzc5MDAxQjVGODcgLyogUlRDSWNlVHJhbnNwb3J0
U3RhdGUuaWRsICovLAorCQkJCTQxQzE0QkM0MjZERTZERTgwMDY4NUJGNSAvKiBSVENOZXR3b3Jr
TWFuYWdlci5oICovLAogCQkJCTA3Mzc5NERDMTlFRTJDNTIwMEU1QTA0NSAvKiBSVENPZmZlckFu
c3dlck9wdGlvbnMuaCAqLywKIAkJCQkzMTZEQ0IxMjFFNzhCRTQzMDAxQjVGODcgLyogUlRDT2Zm
ZXJBbnN3ZXJPcHRpb25zLmlkbCAqLywKIAkJCQkzMTZEQ0IyODFFNzhGMzk1MDAxQjVGODcgLyog
UlRDT2ZmZXJPcHRpb25zLmggKi8sCkBAIC0xNzM4MSw2ICsxNzM4Nyw3IEBACiAJCQkJMDdCNzEx
NkIxRDg5OUU2MzAwOUYwRkZCIC8qIENhcHR1cmVEZXZpY2VNYW5hZ2VyLmNwcCAqLywKIAkJCQkw
N0I3MTE2QzFEODk5RTYzMDA5RjBGRkIgLyogQ2FwdHVyZURldmljZU1hbmFnZXIuaCAqLywKIAkJ
CQk1RUJCODkzMDFDNzc3N0UxMDBDNjVENDEgLyogSWNlQ2FuZGlkYXRlLmggKi8sCisJCQkJNDFD
MTRCQzgyNkRGNzlENjAwNjg1QkY1IC8qIE1ETlNSZWdpc3RlckVycm9yLmggKi8sCiAJCQkJMUJF
NUJGQzExRDUxNTcxNTAwMTY2NkQ5IC8qIE1lZGlhQ29uc3RyYWludHMuY3BwICovLAogCQkJCTA3
MjIxQjk5MTdDRjBBRDQwMDg0OEU1MSAvKiBNZWRpYUNvbnN0cmFpbnRzLmggKi8sCiAJCQkJNDFC
MjhCMTMxRjg1MDFBNDAwRkI1MkFDIC8qIE1lZGlhRW5kcG9pbnRDb25maWd1cmF0aW9uLmNwcCAq
LywKQEAgLTMzNTgzLDYgKzMzNTkwLDcgQEAKIAkJCQk0MTgxQzVDRDI1NTU4MzY5MDBBRUIwRkYg
LyogTGliV2ViUlRDUnRwVHJhbnNmb3JtYWJsZUZyYW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQk0
MTgxQzVEMTI1NTU4OTU2MDBBRUIwRkYgLyogTGliV2ViUlRDUnRwVHJhbnNmb3JtQmFja2VuZC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNDEwRTQ0NjEyMzQzNzNFOTAwMDE3M0Q0IC8qIExpYldlYlJU
Q1NvY2tldElkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxQzE0QkM3MjZERTg1ODQw
MDY4NUJGNSAvKiBMaWJXZWJSVENVdGlscy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODQ3MzBEOTEx
MjQ4RjBCMzAwRDNBOUM5IC8qIExpZ2h0U291cmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIy
Nzk2NTBEMDBCRjIyMDA3MUI3ODIgLyogTGluZWFyR3JhZGllbnRBdHRyaWJ1dGVzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBQjMxQzkxRTEwQUUxQjhFMDAwQzdCOTIgLyogTGluZUNsYW1wVmFsdWUu
aCBpbiBIZWFkZXJzICovLApAQCAtMzM2NDYsNiArMzM2NTQsNyBAQAogCQkJCTQzOTA0NkVBMTJE
QTI1RTgxMkFGODBBQyAvKiBNYXRoT3BlcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5RDVE
QzJDMEY0MjNBNzMwMDhGMjBGRCAvKiBNYXRyaXgzRFRyYW5zZm9ybU9wZXJhdGlvbi5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNDlFOTExQzcwRUY4NkQ0NzAwOUQwQ0FGIC8qIE1hdHJpeFRyYW5zZm9y
bU9wZXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDFDMTRCQzkyNkRGNzlENzAwNjg1QkY1
IC8qIE1ETlNSZWdpc3RlckVycm9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0JDOERBRDFBQUEz
MDIyMDBFMUM4MDMgLyogTWVkaWFBY2Nlc3NpYmlsaXR5U29mdExpbmsuaCBpbiBIZWFkZXJzICov
LAogCQkJCTkzMUJDQzYxMTEyNERGQ0IwMEJFNzBERCAvKiBNZWRpYUNhblN0YXJ0TGlzdGVuZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCUNEQ0M5QkNGMjIzODdFOUEwMEZGQjUxQyAvKiBNZWRpYUNh
cGFiaWxpdGllc0RlY29kaW5nSW5mby5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNDQ2MSw2ICszNDQ3
MCw3IEBACiAJCQkJMDdBQjk5NkIxOERBM0MwMTAwMTg3NzFFIC8qIFJUQ0ljZVNlcnZlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMzEzNTkxMDgxRTdEREM3MzAwRjMwNjMwIC8qIFJUQ0ljZVRyYW5z
cG9ydFBvbGljeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzEzNTkxMDkxRTdEREM3MzAwRjMwNjMw
IC8qIFJUQ0ljZVRyYW5zcG9ydFN0YXRlLmggaW4gSGVhZGVycyAqLywKKwkJCQk0MUMxNEJDNjI2
REU2REU4MDA2ODVCRjUgLyogUlRDTmV0d29ya01hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTA3Mzc5NEZFMTlGNTg2NEUwMEU1QTA0NSAvKiBSVENOb3RpZmllcnNNb2NrLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwNzM3OTRERTE5RUUyQzUyMDBFNUEwNDUgLyogUlRDT2ZmZXJBbnN3ZXJPcHRp
b25zLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzhFMDkyNTE3RDE0RDFDMDA0MjBBQTEgLyogUlRD
UGVlckNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5k
ZXggOTQ2NmZkOWY3ZjU0N2ZkZDliZWYwNGVmODU3YTJhNmVjYTJiMWZkOC4uOTY0OWE0NTZjMmIw
ODIwMGRhNWQ3Zjc4OTgwZmFhNjZlZDEyYWFjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBA
IC0yNTk1LDEyICsyNTk1LDkgQEAgdm9pZCBEb2N1bWVudDo6d2lsbEJlUmVtb3ZlZEZyb21GcmFt
ZSgpCiAgICAgaWYgKG1faGFzUHJlcGFyZWRGb3JEZXN0cnVjdGlvbikKICAgICAgICAgcmV0dXJu
OwogCi0jaWYgVVNFKExJQldFQlJUQykKLSAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgbW92
ZWQgdG8gTW9kdWxlcy9tZWRpYXN0cmVhbS4KLSAgICBpZiAoTGliV2ViUlRDUHJvdmlkZXI6Ondl
YlJUQ0F2YWlsYWJsZSgpKSB7Ci0gICAgICAgIGlmIChhdXRvKiBwYWdlID0gdGhpcy0+cGFnZSgp
KQotICAgICAgICAgICAgcGFnZS0+bGliV2ViUlRDUHJvdmlkZXIoKS51bnJlZ2lzdGVyTUROU05h
bWVzKGlkZW50aWZpZXIoKSk7Ci0gICAgfQorI2lmIEVOQUJMRShXRUJfUlRDKQorICAgIGlmICht
X3J0Y05ldHdvcmtNYW5hZ2VyKQorICAgICAgICBtX3J0Y05ldHdvcmtNYW5hZ2VyLT51bnJlZ2lz
dGVyTUROU05hbWVzKCk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKQEAg
LTU2MTcsMTIgKzU2MTQsOSBAQCB2b2lkIERvY3VtZW50OjpzdXNwZW5kKFJlYXNvbkZvclN1c3Bl
bnNpb24gcmVhc29uKQogICAgICAgICAgICAgdmlldy0+Y29tcG9zaXRvcigpLmNhbmNlbENvbXBv
c2l0aW5nTGF5ZXJVcGRhdGUoKTsKICAgICB9CiAKLSNpZiBVU0UoTElCV0VCUlRDKQotICAgIC8v
IEZJWE1FOiBUaGlzIHNob3VsZCBiZSBtb3ZlZCB0byBNb2R1bGVzL21lZGlhc3RyZWFtLgotICAg
IGlmIChMaWJXZWJSVENQcm92aWRlcjo6d2ViUlRDQXZhaWxhYmxlKCkpIHsKLSAgICAgICAgaWYg
KGF1dG8qIHBhZ2UgPSB0aGlzLT5wYWdlKCkpCi0gICAgICAgICAgICBwYWdlLT5saWJXZWJSVENQ
cm92aWRlcigpLnVucmVnaXN0ZXJNRE5TTmFtZXMoaWRlbnRpZmllcigpKTsKLSAgICB9CisjaWYg
RU5BQkxFKFdFQl9SVEMpCisgICAgaWYgKG1fcnRjTmV0d29ya01hbmFnZXIpCisgICAgICAgIG1f
cnRjTmV0d29ya01hbmFnZXItPnVucmVnaXN0ZXJNRE5TTmFtZXMoKTsKICNlbmRpZgogCiAjaWYg
RU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCBhZjVlNzg1MGNh
OTIxNWYyMjkxZDUwNGIyZGY4ZTljMmQwZDUzYjk2Li44MjMwOTgzYTZhNjFmMTlmOWI5MWEyNzFk
NDAxMDQzNTQ3OTRjM2IwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtNDksNiArNDksNyBAQAog
I2luY2x1ZGUgIlBhZ2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1FdmVudC5oIgog
I2luY2x1ZGUgIlBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIuaCIKKyNpbmNs
dWRlICJSVENOZXR3b3JrTWFuYWdlci5oIgogI2luY2x1ZGUgIlJlZmVycmVyUG9saWN5LmgiCiAj
aW5jbHVkZSAiUmVnaW9uLmgiCiAjaW5jbHVkZSAiUmVnaXN0cmFibGVEb21haW4uaCIKQEAgLTcw
OCw2ICs3MDksMTEgQEAgcHVibGljOgogICAgIFNvY2tldFByb3ZpZGVyKiBzb2NrZXRQcm92aWRl
cigpIGZpbmFsOwogICAgIFJlZlB0cjxSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXJDb25uZWN0
aW9uPiBjcmVhdGVSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXJDb25uZWN0aW9uKCkgZmluYWw7
CiAKKyNpZiBFTkFCTEUoV0VCX1JUQykKKyAgICBSVENOZXR3b3JrTWFuYWdlciogcnRjTmV0d29y
a01hbmFnZXIoKSB7IHJldHVybiBtX3J0Y05ldHdvcmtNYW5hZ2VyLmdldCgpOyB9CisgICAgdm9p
ZCBzZXRSVENOZXR3b3JrTWFuYWdlcihSZWY8UlRDTmV0d29ya01hbmFnZXI+JiYgcnRjTmV0d29y
a01hbmFnZXIpIHsgbV9ydGNOZXR3b3JrTWFuYWdlciA9IFdURk1vdmUocnRjTmV0d29ya01hbmFn
ZXIpOyB9CisjZW5kaWYKKwogICAgIGJvb2wgY2FuTmF2aWdhdGUoRnJhbWUqIHRhcmdldEZyYW1l
LCBjb25zdCBVUkwmIGRlc3RpbmF0aW9uVVJMID0gVVJMKCkpOwogCiAgICAgYm9vbCB1c2VzU3R5
bGVCYXNlZEVkaXRhYmlsaXR5KCkgY29uc3Q7CkBAIC0yMjIxLDYgKzIyMjcsMTAgQEAgcHJpdmF0
ZToKIAogICAgIExpc3RIYXNoU2V0PFJlZjxFbGVtZW50Pj4gbV90b3BMYXllckVsZW1lbnRzOwog
ICAgIFVuaXF1ZVJlZjxXaGl0ZXNwYWNlQ2FjaGU+IG1fd2hpdGVzcGFjZUNhY2hlOworCisjaWYg
RU5BQkxFKFdFQl9SVEMpCisgICAgUmVmUHRyPFJUQ05ldHdvcmtNYW5hZ2VyPiBtX3J0Y05ldHdv
cmtNYW5hZ2VyOworI2VuZGlmCiB9OwogCiBFbGVtZW50KiBldmVudFRhcmdldEVsZW1lbnRGb3JE
b2N1bWVudChEb2N1bWVudCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vTUROU1JlZ2lzdGVyRXJyb3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL01ETlNSZWdpc3RlckVycm9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzdjNWRhZmUzM2Zi
ZTY0ZTdhODI2YzE1MWI2YmUzY2E1MmZhNTU1ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01ETlNSZWdpc3RlckVycm9yLmgKQEAgLTAsMCAr
MSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL0VudW1U
cmFpdHMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitlbnVtIGNsYXNzIE1ETlNSZWdpc3Rl
ckVycm9yIHsgTm90SW1wbGVtZW50ZWQsIEJhZFBhcmFtZXRlciwgRE5TU0QsIEludGVybmFsLCBU
aW1lb3V0IH07CisKK30KKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPD4gc3RydWN0IEVu
dW1UcmFpdHM8V2ViQ29yZTo6TUROU1JlZ2lzdGVyRXJyb3I+IHsKKyAgICB1c2luZyB2YWx1ZXMg
PSBFbnVtVmFsdWVzPAorICAgICAgICBXZWJDb3JlOjpNRE5TUmVnaXN0ZXJFcnJvciwKKyAgICAg
ICAgV2ViQ29yZTo6TUROU1JlZ2lzdGVyRXJyb3I6Ok5vdEltcGxlbWVudGVkLAorICAgICAgICBX
ZWJDb3JlOjpNRE5TUmVnaXN0ZXJFcnJvcjo6QmFkUGFyYW1ldGVyLAorICAgICAgICBXZWJDb3Jl
OjpNRE5TUmVnaXN0ZXJFcnJvcjo6RE5TU0QsCisgICAgICAgIFdlYkNvcmU6Ok1ETlNSZWdpc3Rl
ckVycm9yOjpJbnRlcm5hbCwKKyAgICAgICAgV2ViQ29yZTo6TUROU1JlZ2lzdGVyRXJyb3I6OlRp
bWVvdXQKKyAgICA+OworfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5j
cHAKaW5kZXggYzU5NTYxNzg3MmIyMmI5ZWMzZjUzMmQzNDViMDhjMTZmZTZiZmQ2ZC4uNWFmNzlh
ZDQ4NTg2ODQwZjQ4NzU3ZGVmZThhM2E2NmU1NmQzYmVjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGli
V2ViUlRDUHJvdmlkZXIuY3BwCkBAIC0yOTksNyArMjk5LDcgQEAgdm9pZCBMaWJXZWJSVENQcm92
aWRlcjo6ZW5hYmxlRW51bWVyYXRpbmdBbGxOZXR3b3JrSW50ZXJmYWNlcygpCiAgICAgbV9lbmFi
bGVFbnVtZXJhdGluZ0FsbE5ldHdvcmtJbnRlcmZhY2VzID0gdHJ1ZTsKIH0KIAotcnRjOjpzY29w
ZWRfcmVmcHRyPHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U+IExpYldlYlJUQ1Byb3Zp
ZGVyOjpjcmVhdGVQZWVyQ29ubmVjdGlvbih3ZWJydGM6OlBlZXJDb25uZWN0aW9uT2JzZXJ2ZXIm
IG9ic2VydmVyLCBydGM6OlBhY2tldFNvY2tldEZhY3RvcnkqLCB3ZWJydGM6OlBlZXJDb25uZWN0
aW9uSW50ZXJmYWNlOjpSVENDb25maWd1cmF0aW9uJiYgY29uZmlndXJhdGlvbikKK3J0Yzo6c2Nv
cGVkX3JlZnB0cjx3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlPiBMaWJXZWJSVENQcm92
aWRlcjo6Y3JlYXRlUGVlckNvbm5lY3Rpb24oRG9jdW1lbnRJZGVudGlmaWVyLCB3ZWJydGM6OlBl
ZXJDb25uZWN0aW9uT2JzZXJ2ZXImIG9ic2VydmVyLCBydGM6OlBhY2tldFNvY2tldEZhY3Rvcnkq
LCB3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpSVENDb25maWd1cmF0aW9uJiYgY29u
ZmlndXJhdGlvbikKIHsKICAgICAvLyBEZWZhdWx0IFdLMSBpbXBsZW1lbnRhdGlvbi4KICAgICBB
U1NFUlQobV91c2VOZXR3b3JrVGhyZWFkV2l0aFNvY2tldFNlcnZlcik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJv
dmlkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9M
aWJXZWJSVENQcm92aWRlci5oCmluZGV4IDE4NjI3ZWU1N2Y3NThhMDQ3MjJkMTYxNmYwZjg3NjI4
NDM0MTE1YjcuLjk0MjA3M2IzMmUxN2U1NDY2OWU3ZWQyMzhhNWYxOTExNTE0YjI0NzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJX
ZWJSVENQcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNs
dWRlICJEb2N1bWVudElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJMaWJXZWJSVENNYWNyb3MuaCIK
KyNpbmNsdWRlICJNRE5TUmVnaXN0ZXJFcnJvci5oIgogI2luY2x1ZGUgIlJUQ0RhdGFDaGFubmVs
UmVtb3RlSGFuZGxlckNvbm5lY3Rpb24uaCIKICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRs
ZXIuaD4KICNpbmNsdWRlIDx3dGYvRXhwZWN0ZWQuaD4KQEAgLTY2LDggKzY3LDYgQEAgY2xhc3Mg
UmVnaXN0cmFibGVEb21haW47CiBzdHJ1Y3QgUGVlckNvbm5lY3Rpb25GYWN0b3J5QW5kVGhyZWFk
czsKIHN0cnVjdCBSVENSdHBDYXBhYmlsaXRpZXM7CiAKLWVudW0gY2xhc3MgTUROU1JlZ2lzdGVy
RXJyb3IgeyBOb3RJbXBsZW1lbnRlZCwgQmFkUGFyYW1ldGVyLCBETlNTRCwgSW50ZXJuYWwsIFRp
bWVvdXQgfTsKLQogY2xhc3MgV0VCQ09SRV9FWFBPUlQgTGliV2ViUlRDUHJvdmlkZXIgewogICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgpAQCAtODYsMTggKzg1LDEwIEBAIHB1
YmxpYzoKICAgICB1c2luZyBJUEFkZHJlc3NPckVycm9yID0gRXhwZWN0ZWQ8U3RyaW5nLCBNRE5T
UmVnaXN0ZXJFcnJvcj47CiAgICAgdXNpbmcgTUROU05hbWVPckVycm9yID0gRXhwZWN0ZWQ8U3Ry
aW5nLCBNRE5TUmVnaXN0ZXJFcnJvcj47CiAKLSAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3Rlck1E
TlNOYW1lcyhEb2N1bWVudElkZW50aWZpZXIpIHsgfQotCi0gICAgdmlydHVhbCB2b2lkIHJlZ2lz
dGVyTUROU05hbWUoRG9jdW1lbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGlwQWRkcmVzcywg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChNRE5TTmFtZU9yRXJyb3ImJik+JiYgY2FsbGJhY2spCi0g
ICAgewotICAgICAgICBVTlVTRURfUEFSQU0oaXBBZGRyZXNzKTsKLSAgICAgICAgY2FsbGJhY2so
bWFrZVVuZXhwZWN0ZWQoTUROU1JlZ2lzdGVyRXJyb3I6Ok5vdEltcGxlbWVudGVkKSk7Ci0gICAg
fQotCiAgICAgdmlydHVhbCBSZWZQdHI8UlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyQ29ubmVj
dGlvbj4gY3JlYXRlUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyQ29ubmVjdGlvbigpIHsgcmV0
dXJuIG51bGxwdHI7IH0KIAogI2lmIFVTRShMSUJXRUJSVEMpCi0gICAgdmlydHVhbCBydGM6OnNj
b3BlZF9yZWZwdHI8d2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZT4gY3JlYXRlUGVlckNv
bm5lY3Rpb24od2VicnRjOjpQZWVyQ29ubmVjdGlvbk9ic2VydmVyJiwgcnRjOjpQYWNrZXRTb2Nr
ZXRGYWN0b3J5Kiwgd2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6UlRDQ29uZmlndXJh
dGlvbiYmKTsKKyAgICB2aXJ0dWFsIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlBlZXJDb25u
ZWN0aW9uSW50ZXJmYWNlPiBjcmVhdGVQZWVyQ29ubmVjdGlvbihEb2N1bWVudElkZW50aWZpZXIs
IHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25PYnNlcnZlciYsIHJ0Yzo6UGFja2V0U29ja2V0RmFjdG9y
eSosIHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OlJUQ0NvbmZpZ3VyYXRpb24mJik7
CiAKICAgICB3ZWJydGM6OlBlZXJDb25uZWN0aW9uRmFjdG9yeUludGVyZmFjZSogZmFjdG9yeSgp
OwogCkBAIC0xODAsMTYgKzE3MSwzIEBAIGlubGluZSB2b2lkIExpYldlYlJUQ1Byb3ZpZGVyOjpz
ZXRWUDlTdXBwb3J0KGJvb2wgc3VwcG9ydHNWUDlQcm9maWxlMCwgYm9vbCBzdXBwCiAjZW5kaWYK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi1uYW1lc3BhY2UgV1RGIHsKLXRlbXBsYXRlPD4g
c3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6TUROU1JlZ2lzdGVyRXJyb3I+IHsKLSAgICB1c2lu
ZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAotICAgICAgICBXZWJDb3JlOjpNRE5TUmVnaXN0ZXJFcnJv
ciwKLSAgICAgICAgV2ViQ29yZTo6TUROU1JlZ2lzdGVyRXJyb3I6Ok5vdEltcGxlbWVudGVkLAot
ICAgICAgICBXZWJDb3JlOjpNRE5TUmVnaXN0ZXJFcnJvcjo6QmFkUGFyYW1ldGVyLAotICAgICAg
ICBXZWJDb3JlOjpNRE5TUmVnaXN0ZXJFcnJvcjo6RE5TU0QsCi0gICAgICAgIFdlYkNvcmU6Ok1E
TlNSZWdpc3RlckVycm9yOjpJbnRlcm5hbCwKLSAgICAgICAgV2ViQ29yZTo6TUROU1JlZ2lzdGVy
RXJyb3I6OlRpbWVvdXQKLSAgICA+OwotfTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtNRE5TUmVnaXN0ZXIuY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya01ETlNSZWdpc3Rlci5jcHAKaW5kZXgg
ZmM0MzUxMTJmNWJjZTBhYTMxMjIwZTQxMmZjZTRjNTk4M2YyOGIwNy4uN2FhMTdjMTMxZjE2MjY4
NGNkMjgzYTdhMGU0YzFkMTMxYmVlODYxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya01ETlNSZWdpc3Rlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya01ETlNSZWdpc3Rlci5jcHAKQEAgLTk4
LDI3ICs5OCwyOSBAQCBzdGF0aWMgdm9pZCByZWdpc3Rlck1ETlNOYW1lQ2FsbGJhY2soRE5TU2Vy
dmljZVJlZiwgRE5TUmVjb3JkUmVmIHJlY29yZCwgRE5TU2VydgogICAgIE1ETlNfUkVMRUFTRV9M
T0dfSU5fQ0FMTEJBQ0socmVxdWVzdC0+c2Vzc2lvbklELCAicmVnaXN0ZXJNRE5TTmFtZUNhbGxi
YWNrIHdpdGggZXJyb3IgJWQiLCBlcnJvckNvZGUpOwogCiAgICAgaWYgKGVycm9yQ29kZSkgewot
ICAgICAgICByZXF1ZXN0LT5jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpXZWJNRE5TUmVnaXN0
ZXI6OkZpbmlzaGVkUmVnaXN0ZXJpbmdNRE5TTmFtZSB7IHJlcXVlc3QtPnJlcXVlc3RJZGVudGlm
aWVyLCBtYWtlVW5leHBlY3RlZChXZWJDb3JlOjpNRE5TUmVnaXN0ZXJFcnJvcjo6RE5TU0QpIH0s
IDApOworICAgICAgICByZXF1ZXN0LT5jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpXZWJNRE5T
UmVnaXN0ZXI6OkZpbmlzaGVkUmVnaXN0ZXJpbmdNRE5TTmFtZSB7IHJlcXVlc3QtPnJlcXVlc3RJ
ZGVudGlmaWVyLCByZXF1ZXN0LT5uYW1lLCBXZWJDb3JlOjpNRE5TUmVnaXN0ZXJFcnJvcjo6RE5T
U0QgfSwgMCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgcmVxdWVzdC0+Y29ubmVjdGlv
bi0+c2VuZChNZXNzYWdlczo6V2ViTUROU1JlZ2lzdGVyOjpGaW5pc2hlZFJlZ2lzdGVyaW5nTURO
U05hbWUgeyByZXF1ZXN0LT5yZXF1ZXN0SWRlbnRpZmllciwgcmVxdWVzdC0+bmFtZSB9LCAwKTsK
KyAgICByZXF1ZXN0LT5jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpXZWJNRE5TUmVnaXN0ZXI6
OkZpbmlzaGVkUmVnaXN0ZXJpbmdNRE5TTmFtZSB7IHJlcXVlc3QtPnJlcXVlc3RJZGVudGlmaWVy
LCByZXF1ZXN0LT5uYW1lLCB7IH0gfSwgMCk7CiB9CiAKIHZvaWQgTmV0d29ya01ETlNSZWdpc3Rl
cjo6cmVnaXN0ZXJNRE5TTmFtZShNRE5TUmVnaXN0ZXJJZGVudGlmaWVyIHJlcXVlc3RJZGVudGlm
aWVyLCBXZWJDb3JlOjpEb2N1bWVudElkZW50aWZpZXIgZG9jdW1lbnRJZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIGlwQWRkcmVzcykKIHsKKyAgICBhdXRvIG5hbWUgPSBtYWtlU3RyaW5nKGNyZWF0
ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSwgIi5sb2NhbCIpOworCiAgICAgRE5TU2VydmljZVJlZiBz
ZXJ2aWNlOwogICAgIGF1dG8gaXRlcmF0b3IgPSBtX3NlcnZpY2VzLmZpbmQoZG9jdW1lbnRJZGVu
dGlmaWVyKTsKICAgICBpZiAoaXRlcmF0b3IgPT0gbV9zZXJ2aWNlcy5lbmQoKSkgewogICAgICAg
ICBhdXRvIGVycm9yID0gRE5TU2VydmljZUNyZWF0ZUNvbm5lY3Rpb24oJnNlcnZpY2UpOwogICAg
ICAgICBpZiAoZXJyb3IpIHsKICAgICAgICAgICAgIE1ETlNfUkVMRUFTRV9MT0coInJlZ2lzdGVy
TUROU05hbWUgRE5TU2VydmljZUNyZWF0ZUNvbm5lY3Rpb24gZXJyb3IgJWQiLCBlcnJvcik7Ci0g
ICAgICAgICAgICBtX2Nvbm5lY3Rpb24uY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OldlYk1E
TlNSZWdpc3Rlcjo6RmluaXNoZWRSZWdpc3RlcmluZ01ETlNOYW1lIHsgcmVxdWVzdElkZW50aWZp
ZXIsIG1ha2VVbmV4cGVjdGVkKFdlYkNvcmU6Ok1ETlNSZWdpc3RlckVycm9yOjpETlNTRCkgfSwg
MCk7CisgICAgICAgICAgICBtX2Nvbm5lY3Rpb24uY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6
OldlYk1ETlNSZWdpc3Rlcjo6RmluaXNoZWRSZWdpc3RlcmluZ01ETlNOYW1lIHsgcmVxdWVzdElk
ZW50aWZpZXIsIG5hbWUsIFdlYkNvcmU6Ok1ETlNSZWdpc3RlckVycm9yOjpETlNTRCB9LCAwKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBlcnJvciA9IEROU1NlcnZp
Y2VTZXREaXNwYXRjaFF1ZXVlKHNlcnZpY2UsIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCkpOwog
ICAgICAgICBpZiAoZXJyb3IpIHsKICAgICAgICAgICAgIE1ETlNfUkVMRUFTRV9MT0coInJlZ2lz
dGVyTUROU05hbWUgRE5TU2VydmljZUNyZWF0ZUNvbm5lY3Rpb24gZXJyb3IgJWQiLCBlcnJvcik7
Ci0gICAgICAgICAgICBtX2Nvbm5lY3Rpb24uY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Oldl
Yk1ETlNSZWdpc3Rlcjo6RmluaXNoZWRSZWdpc3RlcmluZ01ETlNOYW1lIHsgcmVxdWVzdElkZW50
aWZpZXIsIG1ha2VVbmV4cGVjdGVkKFdlYkNvcmU6Ok1ETlNSZWdpc3RlckVycm9yOjpETlNTRCkg
fSwgMCk7CisgICAgICAgICAgICBtX2Nvbm5lY3Rpb24uY29ubmVjdGlvbigpLnNlbmQoTWVzc2Fn
ZXM6OldlYk1ETlNSZWdpc3Rlcjo6RmluaXNoZWRSZWdpc3RlcmluZ01ETlNOYW1lIHsgcmVxdWVz
dElkZW50aWZpZXIsIG5hbWUsIFdlYkNvcmU6Ok1ETlNSZWdpc3RlckVycm9yOjpETlNTRCB9LCAw
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBBU1NFUlQoc2Vydmlj
ZSk7CkBAIC0xMjYsMTMgKzEyOCwxMiBAQCB2b2lkIE5ldHdvcmtNRE5TUmVnaXN0ZXI6OnJlZ2lz
dGVyTUROU05hbWUoTUROU1JlZ2lzdGVySWRlbnRpZmllciByZXF1ZXN0SWRlbnRpZgogICAgIH0g
ZWxzZQogICAgICAgICBzZXJ2aWNlID0gaXRlcmF0b3ItPnZhbHVlOwogCi0gICAgYXV0byBuYW1l
ID0gbWFrZVN0cmluZyhjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCksICIubG9jYWwiKTsKLQog
ICAgIGF1dG8gaXAgPSBpbmV0X2FkZHIoaXBBZGRyZXNzLnV0ZjgoKS5kYXRhKCkpOwogCisgICAg
Ly8gRklYTUU6IEFkZCBJUHY2IHN1cHBvcnQuCiAgICAgaWYgKGlwID09ICggaW5fYWRkcl90KSgt
MSkpIHsKICAgICAgICAgTUROU19SRUxFQVNFX0xPRygicmVnaXN0ZXJNRE5TTmFtZSBpbmV0X2Fk
ZHIgZXJyb3IiKTsKLSAgICAgICAgbV9jb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3Nh
Z2VzOjpXZWJNRE5TUmVnaXN0ZXI6OkZpbmlzaGVkUmVnaXN0ZXJpbmdNRE5TTmFtZSB7IHJlcXVl
c3RJZGVudGlmaWVyLCBtYWtlVW5leHBlY3RlZChXZWJDb3JlOjpNRE5TUmVnaXN0ZXJFcnJvcjo6
QmFkUGFyYW1ldGVyKSB9LCAwKTsKKyAgICAgICAgbV9jb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5z
ZW5kKE1lc3NhZ2VzOjpXZWJNRE5TUmVnaXN0ZXI6OkZpbmlzaGVkUmVnaXN0ZXJpbmdNRE5TTmFt
ZSB7IHJlcXVlc3RJZGVudGlmaWVyLCBuYW1lLCBXZWJDb3JlOjpNRE5TUmVnaXN0ZXJFcnJvcjo6
QmFkUGFyYW1ldGVyIH0sIDApOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xNTYsNyAr
MTU3LDcgQEAgdm9pZCBOZXR3b3JrTUROU1JlZ2lzdGVyOjpyZWdpc3Rlck1ETlNOYW1lKE1ETlNS
ZWdpc3RlcklkZW50aWZpZXIgcmVxdWVzdElkZW50aWYKICAgICAgICAgcmVpbnRlcnByZXRfY2Fz
dDx2b2lkKj4ocGVuZGluZ1JlZ2lzdHJhdGlvblJlcXVlc3RDb3VudCkpOwogICAgIGlmIChlcnJv
cikgewogICAgICAgICBNRE5TX1JFTEVBU0VfTE9HKCJyZWdpc3Rlck1ETlNOYW1lIEROU1NlcnZp
Y2VSZWdpc3RlclJlY29yZCBlcnJvciAlZCIsIGVycm9yKTsKLSAgICAgICAgbV9jb25uZWN0aW9u
LmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpXZWJNRE5TUmVnaXN0ZXI6OkZpbmlzaGVkUmVn
aXN0ZXJpbmdNRE5TTmFtZSB7IHJlcXVlc3RJZGVudGlmaWVyLCBtYWtlVW5leHBlY3RlZChXZWJD
b3JlOjpNRE5TUmVnaXN0ZXJFcnJvcjo6RE5TU0QpIH0sIDApOworICAgICAgICBtX2Nvbm5lY3Rp
b24uY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OldlYk1ETlNSZWdpc3Rlcjo6RmluaXNoZWRS
ZWdpc3RlcmluZ01ETlNOYW1lIHsgcmVxdWVzdElkZW50aWZpZXIsIHBlbmRpbmdSZXF1ZXN0LT5u
YW1lLCBXZWJDb3JlOjpNRE5TUmVnaXN0ZXJFcnJvcjo6RE5TU0QgfSwgMCk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAgICAgcGVuZGluZ1JlZ2lzdHJhdGlvblJlcXVlc3RzKCkuYWRkKHBlbmRp
bmdSZWdpc3RyYXRpb25SZXF1ZXN0Q291bnQrKywgV1RGTW92ZShwZW5kaW5nUmVxdWVzdCkpOwpA
QCAtMTcxLDcgKzE3Miw5IEBAIHZvaWQgTmV0d29ya01ETlNSZWdpc3Rlcjo6dW5yZWdpc3Rlck1E
TlNOYW1lcyhXZWJDb3JlOjpEb2N1bWVudElkZW50aWZpZXIpCiB2b2lkIE5ldHdvcmtNRE5TUmVn
aXN0ZXI6OnJlZ2lzdGVyTUROU05hbWUoTUROU1JlZ2lzdGVySWRlbnRpZmllciByZXF1ZXN0SWRl
bnRpZmllciwgV2ViQ29yZTo6RG9jdW1lbnRJZGVudGlmaWVyIGRvY3VtZW50SWRlbnRpZmllciwg
Y29uc3QgU3RyaW5nJiBpcEFkZHJlc3MpCiB7CiAgICAgTUROU19SRUxFQVNFX0xPRygicmVnaXN0
ZXJNRE5TTmFtZSBub3QgaW1wbGVtZW50ZWQiKTsKLSAgICBtX2Nvbm5lY3Rpb24uY29ubmVjdGlv
bigpLnNlbmQoTWVzc2FnZXM6OldlYk1ETlNSZWdpc3Rlcjo6RmluaXNoZWRSZWdpc3RlcmluZ01E
TlNOYW1lIHsgcmVxdWVzdElkZW50aWZpZXIsIG1ha2VVbmV4cGVjdGVkKFdlYkNvcmU6Ok1ETlNS
ZWdpc3RlckVycm9yOjpOb3RJbXBsZW1lbnRlZCkgfSwgMCk7CisgICAgYXV0byBuYW1lID0gbWFr
ZVN0cmluZyhjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCksICIubG9jYWwiKTsKKworICAgIG1f
Y29ubmVjdGlvbi5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6V2ViTUROU1JlZ2lzdGVyOjpG
aW5pc2hlZFJlZ2lzdGVyaW5nTUROU05hbWUgeyByZXF1ZXN0SWRlbnRpZmllciwgbmFtZSwgV2Vi
Q29yZTo6TUROU1JlZ2lzdGVyRXJyb3I6Ok5vdEltcGxlbWVudGVkIH0sIDApOwogfQogCiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0
L1NvdXJjZXMudHh0CmluZGV4IDdkYmFjZDE4YzBjMjE4ZjI4ZDhjZDQ0MDUwMjc4ZTQ4OThkZjFj
NWMuLjRlNWU1MTRkNjU2Mzg2MjY1YjliMzc5NTc4NDgyNGVlMmU5ZjU2M2YgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4
dApAQCAtNjM5LDYgKzYzOSw3IEBAIFdlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRQcm92aWRl
ci5jcHAKIFdlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uY3BwCiAKIFdlYlByb2Nl
c3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDTmV0d29yay5jcHAKK1dlYlByb2Nlc3MvTmV0d29y
ay93ZWJydGMvTGliV2ViUlRDTmV0d29ya01hbmFnZXIuY3BwCiBXZWJQcm9jZXNzL05ldHdvcmsv
d2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcAogV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9M
aWJXZWJSVENSZXNvbHZlci5jcHAKIFdlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRD
U29ja2V0LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggOWU0MTZlZjM3NDQ0ZTQyZWJlNjhjMGUxMDAyNGJjZWNmZmIyN2Y4OC4uMjcx
NGZmYWVmYjM4MDU4NWQ3NWY3NjUwYzQwYzA3Y2UzYjVkZGZjZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zODU0LDYgKzM4NTQsOCBA
QAogCQk0MUI3RUQ2RjIwNjk2NTkwMDA4N0Q4NTMgLyogTmV0d29ya01ETlNSZWdpc3Rlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOZXR3b3JrTUROU1JlZ2lzdGVy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFCN0VENzAyMDY5NjU5MDAwODdE
ODUzIC8qIE5ldHdvcmtNRE5TUmVnaXN0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTmV0d29ya01ETlNSZWdpc3Rlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0MUI3RUQ3MTIwNjk2NTkwMDA4N0Q4NTMgLyogTmV0d29ya01ETlNSZWdpc3Rlci5tZXNzYWdl
cy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBOZXR3b3JrTUROU1JlZ2lzdGVyLm1lc3NhZ2Vz
LmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUMxNEJDMjI2REU2QTJGMDA2ODVC
RjUgLyogTGliV2ViUlRDTmV0d29ya01hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTGli
V2ViUlRDTmV0d29ya01hbmFnZXIuY3BwOyBwYXRoID0gTmV0d29yay93ZWJydGMvTGliV2ViUlRD
TmV0d29ya01hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUMxNEJD
MzI2REU2QTJGMDA2ODVCRjUgLyogTGliV2ViUlRDTmV0d29ya01hbmFnZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gTGliV2ViUlRDTmV0d29ya01hbmFnZXIuaDsgcGF0aCA9IE5ldHdvcmsvd2VicnRjL0xp
YldlYlJUQ05ldHdvcmtNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQx
QzNCODg1MjY0NDRBQUIwMDRFRDRERSAvKiBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcklu
dGVybmFsVW5pdE1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXVkaW9NZWRpYVN0cmVhbVRyYWNr
UmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQxQzNCODg2MjY0NDRBQUMwMDRFRDRERSAvKiBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5k
ZXJlckludGVybmFsVW5pdE1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDFDM0I4ODcyNjQ0NEFEMzAwNEVENERFIC8qIEF1ZGlvTWVkaWFT
dHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0SWRlbnRpZmllci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdElkZW50aWZpZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTg1MTgsNiArODUyMCw4IEBACiAJCQkJNDE2
RjgwODkyNDVDN0ZGNTAwQjY4RjAyIC8qIExpYldlYlJUQ05ldHdvcmsuY3BwICovLAogCQkJCTQx
MUIyMjYyMUUzNzEyNDQwMDRGNzM2MyAvKiBMaWJXZWJSVENOZXR3b3JrLmggKi8sCiAJCQkJNDE2
RjgwODYyNDVCMzk3NDAwQjY4RjAyIC8qIExpYldlYlJUQ05ldHdvcmsubWVzc2FnZXMuaW4gKi8s
CisJCQkJNDFDMTRCQzIyNkRFNkEyRjAwNjg1QkY1IC8qIExpYldlYlJUQ05ldHdvcmtNYW5hZ2Vy
LmNwcCAqLywKKwkJCQk0MUMxNEJDMzI2REU2QTJGMDA2ODVCRjUgLyogTGliV2ViUlRDTmV0d29y
a01hbmFnZXIuaCAqLywKIAkJCQk0MTMwNzVBNzFERTg1RUU3MDAzOUVDNjkgLyogTGliV2ViUlRD
UHJvdmlkZXIuY3BwICovLAogCQkJCTQxMzA3NUE4MURFODVFRTcwMDM5RUM2OSAvKiBMaWJXZWJS
VENQcm92aWRlci5oICovLAogCQkJCTQxRkFGNUY3MUUzQzBCNDcwMDFBRTY3OCAvKiBMaWJXZWJS
VENSZXNvbHZlci5jcHAgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay93ZWJydGMvTGliV2ViUlRDTmV0d29ya01hbmFnZXIuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ05ldHdvcmtNYW5hZ2VyLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi41Y2NmN2FlMzc2NGFhNjMwYjM4YzM1NTVmNWE2Y2Y4NGY3ZTMxOTllCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xp
YldlYlJUQ05ldHdvcmtNYW5hZ2VyLmNwcApAQCAtMCwwICsxLDE1OCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJMaWJXZWJSVENOZXR3b3JrTWFuYWdlci5o
IgorCisjaWYgVVNFKExJQldFQlJUQykKKworI2luY2x1ZGUgIkxpYldlYlJUQ05ldHdvcmsuaCIK
KyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUg
PFdlYkNvcmUvRG9jdW1lbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0xpYldlYlJUQ1V0aWxzLmg+
CisKK25hbWVzcGFjZSBXZWJLaXQgewordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK0xpYldl
YlJUQ05ldHdvcmtNYW5hZ2VyKiBMaWJXZWJSVENOZXR3b3JrTWFuYWdlcjo6Z2V0T3JDcmVhdGUo
V2ViQ29yZTo6RG9jdW1lbnRJZGVudGlmaWVyIGlkZW50aWZpZXIpCit7CisgICAgYXV0byogZG9j
dW1lbnQgPSBEb2N1bWVudDo6YWxsRG9jdW1lbnRzTWFwKCkuZ2V0KGlkZW50aWZpZXIpOworICAg
IGlmICghZG9jdW1lbnQpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgYXV0byogbmV0
d29ya01hbmFnZXIgPSBzdGF0aWNfY2FzdDxMaWJXZWJSVENOZXR3b3JrTWFuYWdlcio+KGRvY3Vt
ZW50LT5ydGNOZXR3b3JrTWFuYWdlcigpKTsKKyAgICBpZiAoIW5ldHdvcmtNYW5hZ2VyKSB7Cisg
ICAgICAgIGF1dG8gbmV3TmV0d29ya01hbmFnZXIgPSBhZG9wdFJlZigqbmV3IExpYldlYlJUQ05l
dHdvcmtNYW5hZ2VyKGlkZW50aWZpZXIpKTsKKyAgICAgICAgbmV0d29ya01hbmFnZXIgPSBuZXdO
ZXR3b3JrTWFuYWdlci5wdHIoKTsKKyAgICAgICAgZG9jdW1lbnQtPnNldFJUQ05ldHdvcmtNYW5h
Z2VyKFdURk1vdmUobmV3TmV0d29ya01hbmFnZXIpKTsKKyAgICB9CisKKyAgICByZXR1cm4gbmV0
d29ya01hbmFnZXI7Cit9CisKK0xpYldlYlJUQ05ldHdvcmtNYW5hZ2VyOjpMaWJXZWJSVENOZXR3
b3JrTWFuYWdlcihXZWJDb3JlOjpEb2N1bWVudElkZW50aWZpZXIgZG9jdW1lbnRJZGVudGlmaWVy
KQorICAgIDogbV9kb2N1bWVudElkZW50aWZpZXIoZG9jdW1lbnRJZGVudGlmaWVyKQoreworICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmxpYldlYlJUQ05ldHdvcmsoKS5tb25pdG9yKCkuYWRk
T2JzZXJ2ZXIoKnRoaXMpOworfQorCitMaWJXZWJSVENOZXR3b3JrTWFuYWdlcjo6fkxpYldlYlJU
Q05ldHdvcmtNYW5hZ2VyKCkKK3sKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5saWJXZWJS
VENOZXR3b3JrKCkubW9uaXRvcigpLnJlbW92ZU9ic2VydmVyKCp0aGlzKTsKK30KKwordm9pZCBM
aWJXZWJSVENOZXR3b3JrTWFuYWdlcjo6dW5yZWdpc3Rlck1ETlNOYW1lcygpCit7CisgICAgV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkubGliV2ViUlRDTmV0d29yaygpLm1kbnNSZWdpc3RlcigpLnVu
cmVnaXN0ZXJNRE5TTmFtZXMobV9kb2N1bWVudElkZW50aWZpZXIpOworfQorCit2b2lkIExpYldl
YlJUQ05ldHdvcmtNYW5hZ2VyOjpTdGFydFVwZGF0aW5nKCkKK3sKKyAgICBjYWxsT25NYWluUnVu
TG9vcChbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKV0geworICAgICAgICBpZiAo
IXdlYWtUaGlzKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGF1dG8mIG1vbml0b3Ig
PSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5saWJXZWJSVENOZXR3b3JrKCkubW9uaXRvcigpOwor
ICAgICAgICBpZiAobV9yZWNlaXZlZE5ldHdvcmtMaXN0KSB7CisgICAgICAgICAgICBXZWJDb3Jl
OjpMaWJXZWJSVENQcm92aWRlcjo6Y2FsbE9uV2ViUlRDTmV0d29ya1RocmVhZChbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7CisgICAgICAgICAgICAgICAgU2lnbmFsTmV0
d29ya3NDaGFuZ2VkKCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSBlbHNlIGlmIChtb25p
dG9yLmRpZFJlY2VpdmVOZXR3b3JrTGlzdCgpKQorICAgICAgICAgICAgbmV0d29ya3NDaGFuZ2Vk
KG1vbml0b3IubmV0d29ya0xpc3QoKSAsIG1vbml0b3IuaXB2NCgpLCBtb25pdG9yLmlwdjYoKSk7
CisgICAgICAgIG1vbml0b3Iuc3RhcnRVcGRhdGluZygpOworICAgIH0pOworfQorCit2b2lkIExp
YldlYlJUQ05ldHdvcmtNYW5hZ2VyOjpTdG9wVXBkYXRpbmcoKQoreworICAgIGNhbGxPbk1haW5S
dW5Mb29wKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXSB7CisgICAgICAgIGlmICghd2Vh
a1RoaXMpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLmxpYldlYlJUQ05ldHdvcmsoKS5tb25pdG9yKCkuc3RvcFVwZGF0aW5nKCk7CisgICAgfSk7
Cit9CisKK3dlYnJ0Yzo6TWRuc1Jlc3BvbmRlckludGVyZmFjZSogTGliV2ViUlRDTmV0d29ya01h
bmFnZXI6OkdldE1kbnNSZXNwb25kZXIoKSBjb25zdAoreworICAgIHJldHVybiBtX3VzZU1ETlND
YW5kaWRhdGVzID8gY29uc3RfY2FzdDxMaWJXZWJSVENOZXR3b3JrTWFuYWdlcio+KHRoaXMpIDog
bnVsbHB0cjsKK30KKwordm9pZCBMaWJXZWJSVENOZXR3b3JrTWFuYWdlcjo6bmV0d29ya3NDaGFu
Z2VkKGNvbnN0IFZlY3RvcjxSVENOZXR3b3JrPiYgbmV0d29ya3MsIGNvbnN0IFJUQ05ldHdvcms6
OklQQWRkcmVzcyYgaXB2NCwgY29uc3QgUlRDTmV0d29yazo6SVBBZGRyZXNzJiBpcHY2KQorewor
ICAgIGJvb2wgZm9yY2VTaWduYWxpbmcgPSAhbV9yZWNlaXZlZE5ldHdvcmtMaXN0OworICAgIG1f
cmVjZWl2ZWROZXR3b3JrTGlzdCA9IHRydWU7CisKKyAgICBXZWJDb3JlOjpMaWJXZWJSVENQcm92
aWRlcjo6Y2FsbE9uV2ViUlRDTmV0d29ya1RocmVhZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpLCBuZXR3b3JrcywgaXB2NCwgaXB2NiwgZm9yY2VTaWduYWxpbmddIHsKKyAg
ICAgICAgc3RkOjp2ZWN0b3I8cnRjOjpOZXR3b3JrKj4gbmV0d29ya0xpc3QobmV0d29ya3Muc2l6
ZSgpKTsKKyAgICAgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG5ldHdvcmtzLnNp
emUoKTsgKytpbmRleCkKKyAgICAgICAgICAgIG5ldHdvcmtMaXN0W2luZGV4XSA9IG5ldyBydGM6
Ok5ldHdvcmsobmV0d29ya3NbaW5kZXhdLnZhbHVlKCkpOworCisgICAgICAgIGJvb2wgaGFzQ2hh
bmdlZDsKKyAgICAgICAgc2V0X2RlZmF1bHRfbG9jYWxfYWRkcmVzc2VzKGlwdjQudmFsdWUsIGlw
djYudmFsdWUpOworICAgICAgICBNZXJnZU5ldHdvcmtMaXN0KG5ldHdvcmtMaXN0LCAmaGFzQ2hh
bmdlZCk7CisgICAgICAgIGlmIChoYXNDaGFuZ2VkIHx8IGZvcmNlU2lnbmFsaW5nKQorICAgICAg
ICAgICAgU2lnbmFsTmV0d29ya3NDaGFuZ2VkKCk7CisgICAgfSk7CisKK30KKwordm9pZCBMaWJX
ZWJSVENOZXR3b3JrTWFuYWdlcjo6bmV0d29ya1Byb2Nlc3NDcmFzaGVkKCkKK3sKKyAgICBtX3Jl
Y2VpdmVkTmV0d29ya0xpc3QgPSBmYWxzZTsKKyAgICBpZiAoIVdlYkNvcmU6OkxpYldlYlJUQ1By
b3ZpZGVyOjpoYXNXZWJSVENUaHJlYWRzKCkpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIElu
IGNhc2Ugd2UgaGF2ZSBjbGllbnRzIHdhaXRpbmcgZm9yIG5ldHdvcmtzQ2hhbmdlZCwgd2UgY2Fs
bCBTaWduYWxOZXR3b3Jrc0NoYW5nZWQgdG8gbWFrZSBzdXJlIHRoZXkgZG8gbm90IHdhaXQgZm9y
IG5vdGhpbmcuCisgICAgV2ViQ29yZTo6TGliV2ViUlRDUHJvdmlkZXI6OmNhbGxPbldlYlJUQ05l
dHdvcmtUaHJlYWQoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0geworICAg
ICAgICBTaWduYWxOZXR3b3Jrc0NoYW5nZWQoKTsKKyAgICB9KTsKK30KKwordm9pZCBMaWJXZWJS
VENOZXR3b3JrTWFuYWdlcjo6Q3JlYXRlTmFtZUZvckFkZHJlc3MoY29uc3QgcnRjOjpJUEFkZHJl
c3MmIGFkZHJlc3MsIE5hbWVDcmVhdGVkQ2FsbGJhY2sgY2FsbGJhY2spCit7CisgICAgY2FsbE9u
TWFpblJ1bkxvb3AoW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIGFkZHJlc3MsIGNhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayldKCkgbXV0YWJsZSB7CisgICAgICAgIGlmICghd2Vha1Ro
aXMpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkubGliV2ViUlRDTmV0d29yaygpLm1kbnNSZWdpc3RlcigpLnJlZ2lzdGVyTUROU05hbWUod2Vh
a1RoaXMtPm1fZG9jdW1lbnRJZGVudGlmaWVyLCBmcm9tU3RkU3RyaW5nKGFkZHJlc3MuVG9TdHJp
bmcoKSksIFthZGRyZXNzLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShhdXRvIG5hbWUs
IGF1dG8gZXJyb3IpIG11dGFibGUgeworICAgICAgICAgICAgV2ViQ29yZTo6TGliV2ViUlRDUHJv
dmlkZXI6OmNhbGxPbldlYlJUQ05ldHdvcmtUaHJlYWQoW2FkZHJlc3MsIGNhbGxiYWNrID0gV1RG
TW92ZShjYWxsYmFjayksIG5hbWUgPSBXVEZNb3ZlKG5hbWUpLmlzb2xhdGVkQ29weSgpLCBlcnJv
cl0geworICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGKGVycm9yLCBXZWJSVEMs
ICJNRE5TIHJlZ2lzdHJhdGlvbiBvZiBhIGhvc3QgY2FuZGlkYXRlIGZhaWxlZCB3aXRoIGVycm9y
ICVkIiwgKmVycm9yKTsKKyAgICAgICAgICAgICAgICAvLyBJbiBjYXNlIG9mIGVycm9yLCB3ZSBw
cm92aWRlIHRoZSBuYW1lIHRvIGxldCBnYXRoZXJpbmcgY29tcGxldGUuCisgICAgICAgICAgICAg
ICAgY2FsbGJhY2soYWRkcmVzcywgbmFtZS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIH0p
OworICAgICAgICB9KTsKKyAgICB9KTsKK30KKwordm9pZCBMaWJXZWJSVENOZXR3b3JrTWFuYWdl
cjo6UmVtb3ZlTmFtZUZvckFkZHJlc3MoY29uc3QgcnRjOjpJUEFkZHJlc3MmLCBOYW1lUmVtb3Zl
ZENhbGxiYWNrKQoreworICAgIC8vIExpYldlYlJUQyBiYWNrZW5kIGRlZmluZXMgdGhpcyBtZXRo
b2QgYnV0IGRvZXMgbm90IGNhbGwgaXQuCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gVVNFKExJQldFQlJUQykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENO
ZXR3b3JrTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRj
L0xpYldlYlJUQ05ldHdvcmtNYW5hZ2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjg2ZGE2NzIyMWIwNTNhZjlj
YTNjNDBmYjI1NmZiZTY2YTc5MTFhMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENOZXR3b3JrTWFuYWdlci5oCkBAIC0w
LDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIFVTRShMSUJXRUJS
VEMpCisKKyNpbmNsdWRlICJXZWJSVENNb25pdG9yLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Eb2N1
bWVudElkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0xpYldlYlJUQ1Byb3ZpZGVyLmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9SVENOZXR3b3JrTWFuYWdlci5oPgorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworY2xhc3MgTGliV2ViUlRDTmV0d29ya01hbmFnZXIgZmluYWwgOiBwdWJsaWMgV2Vi
Q29yZTo6UlRDTmV0d29ya01hbmFnZXIsIHB1YmxpYyBydGM6Ok5ldHdvcmtNYW5hZ2VyQmFzZSwg
cHVibGljIHdlYnJ0Yzo6TWRuc1Jlc3BvbmRlckludGVyZmFjZSwgcHVibGljIFdlYlJUQ01vbml0
b3I6Ok9ic2VydmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgTGliV2ViUlRDTmV0d29ya01hbmFnZXIqIGdldE9yQ3JlYXRlKFdlYkNvcmU6OkRv
Y3VtZW50SWRlbnRpZmllcik7CisgICAgfkxpYldlYlJUQ05ldHdvcmtNYW5hZ2VyKCk7CisKK3By
aXZhdGU6CisgICAgZXhwbGljaXQgTGliV2ViUlRDTmV0d29ya01hbmFnZXIoV2ViQ29yZTo6RG9j
dW1lbnRJZGVudGlmaWVyKTsKKworICAgIC8vIFdlYkNvcmU6OlJUQ05ldHdvcmtNYW5hZ2VyCisg
ICAgdm9pZCBzZXRJQ0VDYW5kaWRhdGVGaWx0ZXJpbmcoYm9vbCBkb0ZpbHRlcmluZykgZmluYWwg
eyBtX3VzZU1ETlNDYW5kaWRhdGVzID0gZG9GaWx0ZXJpbmc7IH0KKyAgICB2b2lkIHVucmVnaXN0
ZXJNRE5TTmFtZXMoKSBmaW5hbDsKKworICAgIC8vIHdlYnJ0Yzo6TmV0d29ya01hbmFnZXJCYXNl
CisgICAgdm9pZCBTdGFydFVwZGF0aW5nKCkgZmluYWw7CisgICAgdm9pZCBTdG9wVXBkYXRpbmco
KSBmaW5hbDsKKyAgICB3ZWJydGM6Ok1kbnNSZXNwb25kZXJJbnRlcmZhY2UqIEdldE1kbnNSZXNw
b25kZXIoKSBjb25zdCBmaW5hbDsKKworICAgIC8vIHdlYnJ0Yzo6TWRuc1Jlc3BvbmRlckludGVy
ZmFjZQorICAgIHZvaWQgQ3JlYXRlTmFtZUZvckFkZHJlc3MoY29uc3QgcnRjOjpJUEFkZHJlc3Mm
LCBOYW1lQ3JlYXRlZENhbGxiYWNrKTsKKyAgICB2b2lkIFJlbW92ZU5hbWVGb3JBZGRyZXNzKGNv
bnN0IHJ0Yzo6SVBBZGRyZXNzJiwgTmFtZVJlbW92ZWRDYWxsYmFjayk7CisKKyAgICAvLyBXZWJS
VENNb25pdG9yOjpPYnNlcnZlcgorICAgIHZvaWQgbmV0d29ya3NDaGFuZ2VkKGNvbnN0IFZlY3Rv
cjxSVENOZXR3b3JrPiYsIGNvbnN0IFJUQ05ldHdvcms6OklQQWRkcmVzcyYsIGNvbnN0IFJUQ05l
dHdvcms6OklQQWRkcmVzcyYpIGZpbmFsOworICAgIHZvaWQgbmV0d29ya1Byb2Nlc3NDcmFzaGVk
KCkgZmluYWw7CisKKyAgICBXZWJDb3JlOjpEb2N1bWVudElkZW50aWZpZXIgbV9kb2N1bWVudElk
ZW50aWZpZXI7CisgICAgYm9vbCBtX3VzZU1ETlNDYW5kaWRhdGVzIHsgdHJ1ZSB9OworICAgIGJv
b2wgbV9yZWNlaXZlZE5ldHdvcmtMaXN0IHsgZmFsc2UgfTsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuY3BwCmluZGV4IDk2OGM5ZjMw
NGI2NTQ4MDlmOTkyNjI1NmMxMDA1NTA3Yzk3MTJmNTUuLmY5YzRhOTBkODIxZGFmN2E4YWIzOWFm
ZGQzMTY0MjA1ODUxNjNiNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcApAQCAtMzMsNiAr
MzMsNyBAQAogI2VuZGlmCiAKICNpbmNsdWRlICJMaWJXZWJSVENOZXR3b3JrLmgiCisjaW5jbHVk
ZSAiTGliV2ViUlRDTmV0d29ya01hbmFnZXIuaCIKICNpbmNsdWRlICJSVENEYXRhQ2hhbm5lbFJl
bW90ZU1hbmFnZXIuaCIKICNpbmNsdWRlICJXZWJQYWdlLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vz
cy5oIgpAQCAtNTQsNyArNTUsNyBAQCBwcml2YXRlOgogICAgIH0KIH07CiAKLXJ0Yzo6c2NvcGVk
X3JlZnB0cjx3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlPiBMaWJXZWJSVENQcm92aWRl
cjo6Y3JlYXRlUGVlckNvbm5lY3Rpb24od2VicnRjOjpQZWVyQ29ubmVjdGlvbk9ic2VydmVyJiBv
YnNlcnZlciwgcnRjOjpQYWNrZXRTb2NrZXRGYWN0b3J5KiBzb2NrZXRGYWN0b3J5LCB3ZWJydGM6
OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpSVENDb25maWd1cmF0aW9uJiYgY29uZmlndXJhdGlv
bikKK3J0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlPiBM
aWJXZWJSVENQcm92aWRlcjo6Y3JlYXRlUGVlckNvbm5lY3Rpb24oRG9jdW1lbnRJZGVudGlmaWVy
IGlkZW50aWZpZXIsIHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25PYnNlcnZlciYgb2JzZXJ2ZXIsIHJ0
Yzo6UGFja2V0U29ja2V0RmFjdG9yeSogc29ja2V0RmFjdG9yeSwgd2VicnRjOjpQZWVyQ29ubmVj
dGlvbkludGVyZmFjZTo6UlRDQ29uZmlndXJhdGlvbiYmIGNvbmZpZ3VyYXRpb24pCiB7CiAjaWYg
RU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBQTEFURk9STShDT0NPQSkgJiYgIVBMQVRGT1JNKE1BQ0NB
VEFMWVNUKQogICAgIGlmICghbV9kaWRJbml0aWFsaXplQ2FsbGJhY2spIHsKQEAgLTY3LDIyICs2
OCwxNyBAQCBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFj
ZT4gTGliV2ViUlRDUHJvdmlkZXI6OmNyZWF0ZVBlZQogCiAgICAgYXV0byYgbmV0d29ya01vbml0
b3IgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5saWJXZWJSVENOZXR3b3JrKCkubW9uaXRvcigp
OwogICAgIG5ldHdvcmtNb25pdG9yLnNldEVudW1lcmF0aW5nQWxsTmV0d29ya0ludGVyZmFjZXNF
bmFibGVkKGlzRW51bWVyYXRpbmdBbGxOZXR3b3JrSW50ZXJmYWNlc0VuYWJsZWQoKSk7Ci0gICAg
cmV0dXJuIFdlYkNvcmU6OkxpYldlYlJUQ1Byb3ZpZGVyOjpjcmVhdGVQZWVyQ29ubmVjdGlvbihv
YnNlcnZlciwgbmV0d29ya01vbml0b3IsICpzb2NrZXRGYWN0b3J5LCBXVEZNb3ZlKGNvbmZpZ3Vy
YXRpb24pLCBtYWtlVW5pcXVlPEFzeW5jUmVzb2x2ZXJGYWN0b3J5PigpKTsKLX0KIAotdm9pZCBM
aWJXZWJSVENQcm92aWRlcjo6ZGlzYWJsZU5vbkxvY2FsaG9zdENvbm5lY3Rpb25zKCkKLXsKLSAg
ICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5saWJXZWJSVENOZXR3b3JrKCkuZGlzYWJsZU5vbkxv
Y2FsaG9zdENvbm5lY3Rpb25zKCk7Ci19CisgICAgYXV0byogbmV0d29ya01hbmFnZXIgPSBMaWJX
ZWJSVENOZXR3b3JrTWFuYWdlcjo6Z2V0T3JDcmVhdGUoaWRlbnRpZmllcik7CisgICAgaWYgKCFu
ZXR3b3JrTWFuYWdlcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLXZvaWQgTGliV2ViUlRD
UHJvdmlkZXI6OnVucmVnaXN0ZXJNRE5TTmFtZXMoRG9jdW1lbnRJZGVudGlmaWVyIGRvY3VtZW50
SWRlbnRpZmllcikKLXsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5saWJXZWJSVENOZXR3
b3JrKCkubWRuc1JlZ2lzdGVyKCkudW5yZWdpc3Rlck1ETlNOYW1lcyhkb2N1bWVudElkZW50aWZp
ZXIpOworICAgIHJldHVybiBXZWJDb3JlOjpMaWJXZWJSVENQcm92aWRlcjo6Y3JlYXRlUGVlckNv
bm5lY3Rpb24ob2JzZXJ2ZXIsICpuZXR3b3JrTWFuYWdlciwgKnNvY2tldEZhY3RvcnksIFdURk1v
dmUoY29uZmlndXJhdGlvbiksIG1ha2VVbmlxdWU8QXN5bmNSZXNvbHZlckZhY3Rvcnk+KCkpOwog
fQogCi12b2lkIExpYldlYlJUQ1Byb3ZpZGVyOjpyZWdpc3Rlck1ETlNOYW1lKERvY3VtZW50SWRl
bnRpZmllciBkb2N1bWVudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgaXBBZGRyZXNzLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKE1ETlNOYW1lT3JFcnJvciYmKT4mJiBjYWxsYmFjaykKK3ZvaWQg
TGliV2ViUlRDUHJvdmlkZXI6OmRpc2FibGVOb25Mb2NhbGhvc3RDb25uZWN0aW9ucygpCiB7Ci0g
ICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkubGliV2ViUlRDTmV0d29yaygpLm1kbnNSZWdpc3Rl
cigpLnJlZ2lzdGVyTUROU05hbWUoZG9jdW1lbnRJZGVudGlmaWVyLCBpcEFkZHJlc3MsIFdURk1v
dmUoY2FsbGJhY2spKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5saWJXZWJSVENOZXR3
b3JrKCkuZGlzYWJsZU5vbkxvY2FsaG9zdENvbm5lY3Rpb25zKCk7CiB9CiAKIGNsYXNzIFJUQ1Nv
Y2tldEZhY3RvcnkgZmluYWwgOiBwdWJsaWMgTGliV2ViUlRDUHJvdmlkZXI6OlN1c3BlbmRhYmxl
U29ja2V0RmFjdG9yeSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay93ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5oCmluZGV4IDcyYWQzYTQyOWZlZmJm
YTFkNGNhZWY1YzJiZjdjOTU3MzAxZTEyMDEuLjg4M2FkZmNhYzkzMGMwNmQ5NThkMjM5OGYyNzBj
NzVmMWM2NDRlODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L3dlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5oCkBAIC01NCwxMCArNTQsOCBAQCBw
dWJsaWM6CiBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxTdXNwZW5kYWJsZVNvY2tldEZh
Y3Rvcnk+IGNyZWF0ZVNvY2tldEZhY3RvcnkoU3RyaW5nJiYgLyogdXNlckFnZW50ICovLCBib29s
IC8qIGlzRmlyc3RQYXJ0eSAqLywgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJikgZmluYWw7
CiAKLSAgICBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFj
ZT4gY3JlYXRlUGVlckNvbm5lY3Rpb24od2VicnRjOjpQZWVyQ29ubmVjdGlvbk9ic2VydmVyJiwg
cnRjOjpQYWNrZXRTb2NrZXRGYWN0b3J5Kiwgd2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFj
ZTo6UlRDQ29uZmlndXJhdGlvbiYmKSBmaW5hbDsKKyAgICBydGM6OnNjb3BlZF9yZWZwdHI8d2Vi
cnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZT4gY3JlYXRlUGVlckNvbm5lY3Rpb24oV2ViQ29y
ZTo6RG9jdW1lbnRJZGVudGlmaWVyLCB3ZWJydGM6OlBlZXJDb25uZWN0aW9uT2JzZXJ2ZXImLCBy
dGM6OlBhY2tldFNvY2tldEZhY3RvcnkqLCB3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNl
OjpSVENDb25maWd1cmF0aW9uJiYpIGZpbmFsOwogCi0gICAgdm9pZCB1bnJlZ2lzdGVyTUROU05h
bWVzKFdlYkNvcmU6OkRvY3VtZW50SWRlbnRpZmllcikgZmluYWw7Ci0gICAgdm9pZCByZWdpc3Rl
ck1ETlNOYW1lKFdlYkNvcmU6OkRvY3VtZW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBpcEFk
ZHJlc3MsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoTUROU05hbWVPckVycm9yJiYpPiYmKSBmaW5h
bDsKICAgICB2b2lkIGRpc2FibGVOb25Mb2NhbGhvc3RDb25uZWN0aW9ucygpIGZpbmFsOwogICAg
IHZvaWQgc3RhcnRlZE5ldHdvcmtUaHJlYWQoKSBmaW5hbDsKICAgICBSZWZQdHI8V2ViQ29yZTo6
UlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyQ29ubmVjdGlvbj4gY3JlYXRlUlRDRGF0YUNoYW5u
ZWxSZW1vdGVIYW5kbGVyQ29ubmVjdGlvbigpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1dlYk1ETlNSZWdpc3Rlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvV2ViTUROU1JlZ2lzdGVyLmNwcApp
bmRleCA1MTU5MGY5YWNjZTYyNDQwNjhiMTQ3Y2U2YTljN2MxODI1NzU3NzYxLi43NjAyMDdlYTU5
YmNhMjU0NTIyZjU2YzU5YTUyNDVlNTk1YThkZTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvV2ViTUROU1JlZ2lzdGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvV2ViTUROU1JlZ2lzdGVyLmNwcApA
QCAtMzYsMjIgKzM2LDIyIEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCi12b2lkIFdlYk1ETlNSZWdpc3Rlcjo6ZmluaXNoZWRSZWdpc3RlcmluZ01ETlNO
YW1lKE1ETlNSZWdpc3RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgTGliV2ViUlRDUHJvdmlkZXI6
Ok1ETlNOYW1lT3JFcnJvciYmIHJlc3VsdCkKK3ZvaWQgV2ViTUROU1JlZ2lzdGVyOjpmaW5pc2hl
ZFJlZ2lzdGVyaW5nTUROU05hbWUoTUROU1JlZ2lzdGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBT
dHJpbmcmJiBuYW1lLCBzdGQ6Om9wdGlvbmFsPE1ETlNSZWdpc3RlckVycm9yPiBlcnJvcikKIHsK
ICAgICBhdXRvIHBlbmRpbmdSZWdpc3RyYXRpb24gPSBtX3BlbmRpbmdSZWdpc3RyYXRpb25zLnRh
a2UoaWRlbnRpZmllcik7CiAgICAgaWYgKCFwZW5kaW5nUmVnaXN0cmF0aW9uLmNhbGxiYWNrKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBpZiAocmVzdWx0Lmhhc192YWx1ZSgpKSB7CisgICAgaWYg
KCFlcnJvcikgewogICAgICAgICBhdXRvIGl0ZXJhdG9yID0gbV9yZWdpc3RlcmluZ0RvY3VtZW50
cy5maW5kKHBlbmRpbmdSZWdpc3RyYXRpb24uZG9jdW1lbnRJZGVudGlmaWVyKTsKICAgICAgICAg
aWYgKGl0ZXJhdG9yID09IG1fcmVnaXN0ZXJpbmdEb2N1bWVudHMuZW5kKCkpIHsKLSAgICAgICAg
ICAgIHBlbmRpbmdSZWdpc3RyYXRpb24uY2FsbGJhY2sobWFrZVVuZXhwZWN0ZWQoV2ViQ29yZTo6
TUROU1JlZ2lzdGVyRXJyb3I6OkROU1NEKSk7CisgICAgICAgICAgICBwZW5kaW5nUmVnaXN0cmF0
aW9uLmNhbGxiYWNrKG5hbWUsIFdlYkNvcmU6Ok1ETlNSZWdpc3RlckVycm9yOjpETlNTRCk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgaXRlcmF0b3ItPnZhbHVlLmFk
ZChwZW5kaW5nUmVnaXN0cmF0aW9uLmlwQWRkcmVzcywgcmVzdWx0LnZhbHVlKCkpOworICAgICAg
ICBpdGVyYXRvci0+dmFsdWUuYWRkKHBlbmRpbmdSZWdpc3RyYXRpb24uaXBBZGRyZXNzLCBuYW1l
KTsKICAgICB9CiAKLSAgICBwZW5kaW5nUmVnaXN0cmF0aW9uLmNhbGxiYWNrKFdURk1vdmUocmVz
dWx0KSk7CisgICAgcGVuZGluZ1JlZ2lzdHJhdGlvbi5jYWxsYmFjayhuYW1lLCBlcnJvcik7CiB9
CiAKIHZvaWQgV2ViTUROU1JlZ2lzdGVyOjp1bnJlZ2lzdGVyTUROU05hbWVzKERvY3VtZW50SWRl
bnRpZmllciBpZGVudGlmaWVyKQpAQCAtNjMsNyArNjMsNyBAQCB2b2lkIFdlYk1ETlNSZWdpc3Rl
cjo6dW5yZWdpc3Rlck1ETlNOYW1lcyhEb2N1bWVudElkZW50aWZpZXIgaWRlbnRpZmllcikKICAg
ICBjb25uZWN0aW9uLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtNRE5TUmVnaXN0ZXI6OlVucmVnaXN0
ZXJNRE5TTmFtZXMgeyBpZGVudGlmaWVyIH0sIDApOwogfQogCi12b2lkIFdlYk1ETlNSZWdpc3Rl
cjo6cmVnaXN0ZXJNRE5TTmFtZShEb2N1bWVudElkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3Qg
U3RyaW5nJiBpcEFkZHJlc3MsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoTGliV2ViUlRDUHJvdmlk
ZXI6Ok1ETlNOYW1lT3JFcnJvciYmKT4mJiBjYWxsYmFjaykKK3ZvaWQgV2ViTUROU1JlZ2lzdGVy
OjpyZWdpc3Rlck1ETlNOYW1lKERvY3VtZW50SWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIGlwQWRkcmVzcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmLCBz
dGQ6Om9wdGlvbmFsPE1ETlNSZWdpc3RlckVycm9yPik+JiYgY2FsbGJhY2spCiB7CiAgICAgYXV0
byYgbWFwID0gbV9yZWdpc3RlcmluZ0RvY3VtZW50cy5lbnN1cmUoaWRlbnRpZmllciwgW10gewog
ICAgICAgICByZXR1cm4gSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4geyB9OwpAQCAtNzEsMTYgKzcx
LDE3IEBAIHZvaWQgV2ViTUROU1JlZ2lzdGVyOjpyZWdpc3Rlck1ETlNOYW1lKERvY3VtZW50SWRl
bnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTdHJpCiAKICAgICBhdXRvIGl0ZXJhdG9yID0gbWFw
LmZpbmQoaXBBZGRyZXNzKTsKICAgICBpZiAoaXRlcmF0b3IgIT0gbWFwLmVuZCgpKSB7Ci0gICAg
ICAgIGNhbGxiYWNrKGl0ZXJhdG9yLT52YWx1ZSk7CisgICAgICAgIGNhbGxiYWNrKGl0ZXJhdG9y
LT52YWx1ZSwgeyB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGF1dG8gcmVxdWVz
dElkZW50aWZpZXIgPSBNRE5TUmVnaXN0ZXJJZGVudGlmaWVyOjpnZW5lcmF0ZSgpOwogICAgIG1f
cGVuZGluZ1JlZ2lzdHJhdGlvbnMuYWRkKHJlcXVlc3RJZGVudGlmaWVyLCBQZW5kaW5nUmVnaXN0
cmF0aW9uIHsgV1RGTW92ZShjYWxsYmFjayksIGlkZW50aWZpZXIsIGlwQWRkcmVzcyB9KTsKIAor
ICAgIC8vIEZJWE1FOiBVc2UgYXN5bmMgcmVwbHkuCiAgICAgYXV0byYgY29ubmVjdGlvbiA9IFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNv
bm5lY3Rpb24oKTsKICAgICBpZiAoIWNvbm5lY3Rpb24uc2VuZChNZXNzYWdlczo6TmV0d29ya01E
TlNSZWdpc3Rlcjo6UmVnaXN0ZXJNRE5TTmFtZSB7IHJlcXVlc3RJZGVudGlmaWVyLCBpZGVudGlm
aWVyLCBpcEFkZHJlc3MgfSwgMCkpCi0gICAgICAgIGZpbmlzaGVkUmVnaXN0ZXJpbmdNRE5TTmFt
ZShyZXF1ZXN0SWRlbnRpZmllciwgbWFrZVVuZXhwZWN0ZWQoTUROU1JlZ2lzdGVyRXJyb3I6Oklu
dGVybmFsKSk7CisgICAgICAgIGZpbmlzaGVkUmVnaXN0ZXJpbmdNRE5TTmFtZShyZXF1ZXN0SWRl
bnRpZmllciwgeyB9LCBNRE5TUmVnaXN0ZXJFcnJvcjo6SW50ZXJuYWwpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL3dlYnJ0Yy9XZWJNRE5TUmVnaXN0ZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL3dlYnJ0Yy9XZWJNRE5TUmVnaXN0ZXIuaAppbmRleCAwYzBmNjEzM2FmNDY4YzllYmI4
YzY3YTJhZTRlOGM5YTczM2VlNmFkLi4yYzBmZjBlNDY2NTExZjk3OGZiODA5MjcyMGFmMDczZGJm
NTM4ZmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJy
dGMvV2ViTUROU1JlZ2lzdGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvd2VicnRjL1dlYk1ETlNSZWdpc3Rlci5oCkBAIC00NiwxNSArNDYsMTUgQEAgcHVibGljOgog
ICAgIFdlYk1ETlNSZWdpc3RlcigpID0gZGVmYXVsdDsKIAogICAgIHZvaWQgdW5yZWdpc3Rlck1E
TlNOYW1lcyhXZWJDb3JlOjpEb2N1bWVudElkZW50aWZpZXIpOwotICAgIHZvaWQgcmVnaXN0ZXJN
RE5TTmFtZShXZWJDb3JlOjpEb2N1bWVudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgaXBBZGRy
ZXNzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OkxpYldlYlJUQ1Byb3ZpZGVyOjpN
RE5TTmFtZU9yRXJyb3ImJik+JiYpOworICAgIHZvaWQgcmVnaXN0ZXJNRE5TTmFtZShXZWJDb3Jl
OjpEb2N1bWVudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgaXBBZGRyZXNzLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6TUROU1Jl
Z2lzdGVyRXJyb3I+KT4mJik7CiAKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwogCiBwcml2YXRlOgotICAgIHZvaWQgZmluaXNoZWRS
ZWdpc3RlcmluZ01ETlNOYW1lKE1ETlNSZWdpc3RlcklkZW50aWZpZXIsIFdlYkNvcmU6OkxpYldl
YlJUQ1Byb3ZpZGVyOjpNRE5TTmFtZU9yRXJyb3ImJik7CisgICAgdm9pZCBmaW5pc2hlZFJlZ2lz
dGVyaW5nTUROU05hbWUoTUROU1JlZ2lzdGVySWRlbnRpZmllciwgU3RyaW5nJiYsIHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6TUROU1JlZ2lzdGVyRXJyb3I+KTsKIAogICAgIHN0cnVjdCBQZW5kaW5n
UmVnaXN0cmF0aW9uIHsKLSAgICAgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpM
aWJXZWJSVENQcm92aWRlcjo6TUROU05hbWVPckVycm9yJiYpPiBjYWxsYmFjazsKKyAgICAgICAg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmLCBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6Ok1ETlNSZWdpc3RlckVycm9yPik+IGNhbGxiYWNrOwogICAgICAgICBXZWJDb3JlOjpEb2N1
bWVudElkZW50aWZpZXIgZG9jdW1lbnRJZGVudGlmaWVyOwogICAgICAgICBTdHJpbmcgaXBBZGRy
ZXNzOwogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay93ZWJydGMvV2ViTUROU1JlZ2lzdGVyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvd2VicnRjL1dlYk1ETlNSZWdpc3Rlci5tZXNzYWdlcy5pbgppbmRleCBh
YjEyYTFlMDE5MjZkNmFmY2I0YzI0NzhlZDUzZjVjMzYyYTg4YjliLi5mMWVhNWM3MzA2ZDJhMGM2
ZGU5ZjFiODEyMDc2M2U5ZmQ5MzFkYTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay93ZWJydGMvV2ViTUROU1JlZ2lzdGVyLm1lc3NhZ2VzLmluCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJNRE5TUmVnaXN0ZXIubWVz
c2FnZXMuaW4KQEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxOC0yMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MjMsNyArMjMsNyBAQAogI2lmIEVOQUJMRShXRUJfUlRDKQogCiBtZXNzYWdlcyAtPiBXZWJNRE5T
UmVnaXN0ZXIgTm90UmVmQ291bnRlZCB7Ci0gICAgdm9pZCBGaW5pc2hlZFJlZ2lzdGVyaW5nTURO
U05hbWUoV2ViS2l0OjpNRE5TUmVnaXN0ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYkNvcmU6
OkxpYldlYlJUQ1Byb3ZpZGVyOjpNRE5TTmFtZU9yRXJyb3IgcmVzdWx0KQorICAgIHZvaWQgRmlu
aXNoZWRSZWdpc3RlcmluZ01ETlNOYW1lKFdlYktpdDo6TUROU1JlZ2lzdGVySWRlbnRpZmllciBp
ZGVudGlmaWVyLCBTdHJpbmcgbWRuc05hbWUsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6TUROU1Jl
Z2lzdGVyRXJyb3I+IGVycm9yKQogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQl9SVEMpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvV2ViUlRDTW9u
aXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvV2ViUlRD
TW9uaXRvci5jcHAKaW5kZXggMGY5ZGFkMmQxZDI5ZDBiMzA3OWQzODcxYjdlMTQ1NDE1MjkwNDkz
Ni4uZDBjYjk4YmU4ODBiYjYxM2ZkYTIzMTUwMmU2NzAyYzA0YWYyMDIzNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1dlYlJUQ01vbml0b3IuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJSVENNb25p
dG9yLmNwcApAQCAtMzMsOCArMzMsNiBAQAogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbi5oIgogI2luY2x1ZGUgIk5ldHdvcmtSVENNb25pdG9yTWVzc2FnZXMuaCIKICNpbmNsdWRl
ICJXZWJQcm9jZXNzLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9MaWJXZWJSVENNYWNyb3MuaD4KLSNp
bmNsdWRlIDx3ZWJydGMvcnRjX2Jhc2UvbmV0X2hlbHBlcnMuaD4KICNpbmNsdWRlIDx3dGYvTWFp
blRocmVhZC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTUzLDY3ICs1MSw0MyBAQCB2b2lk
IFdlYlJUQ01vbml0b3I6OnNldEVudW1lcmF0aW5nQWxsTmV0d29ya0ludGVyZmFjZXNFbmFibGVk
KGJvb2wgZW5hYmxlZCkKICAgICBtX2VuYWJsZUVudW1lcmF0aW5nQWxsTmV0d29ya0ludGVyZmFj
ZXMgPSBlbmFibGVkOwogfQogCi12b2lkIFdlYlJUQ01vbml0b3I6OlN0YXJ0VXBkYXRpbmcoKQor
dm9pZCBXZWJSVENNb25pdG9yOjpzdGFydFVwZGF0aW5nKCkKIHsKLSAgICBXRUJSVENfUkVMRUFT
RV9MT0coIlN0YXJ0VXBkYXRpbmciKTsKLSAgICBpZiAobV9yZWNlaXZlZE5ldHdvcmtMaXN0KSB7
Ci0gICAgICAgIFdlYkNvcmU6OkxpYldlYlJUQ1Byb3ZpZGVyOjpjYWxsT25XZWJSVENOZXR3b3Jr
VGhyZWFkKFt0aGlzXSB7Ci0gICAgICAgICAgICBTaWduYWxOZXR3b3Jrc0NoYW5nZWQoKTsKLSAg
ICAgICAgfSk7Ci0gICAgfQotCi0gICAgc2VuZE9uTWFpblRocmVhZChbdGhpc10oYXV0byYgY29u
bmVjdGlvbikgewotICAgICAgICBXRUJSVENfUkVMRUFTRV9MT0coIlN0YXJ0VXBkYXRpbmcgLSBB
c2tpbmcgbmV0d29yayBwcm9jZXNzIHRvIHN0YXJ0IHVwZGF0aW5nIik7Ci0gICAgICAgIGNvbm5l
Y3Rpb24uc2VuZChNZXNzYWdlczo6TmV0d29ya1JUQ01vbml0b3I6OlN0YXJ0VXBkYXRpbmdJZk5l
ZWRlZChtX2VuYWJsZUVudW1lcmF0aW5nQWxsTmV0d29ya0ludGVyZmFjZXMpLCAwKTsKLSAgICB9
KTsKKyAgICBXRUJSVENfUkVMRUFTRV9MT0coIlN0YXJ0VXBkYXRpbmcgLSBBc2tpbmcgbmV0d29y
ayBwcm9jZXNzIHRvIHN0YXJ0IHVwZGF0aW5nIik7CisKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChN
ZXNzYWdlczo6TmV0d29ya1JUQ01vbml0b3I6OlN0YXJ0VXBkYXRpbmdJZk5lZWRlZChtX2VuYWJs
ZUVudW1lcmF0aW5nQWxsTmV0d29ya0ludGVyZmFjZXMpLCAwKTsKICAgICArK21fY2xpZW50Q291
bnQ7CiB9CiAKLXZvaWQgV2ViUlRDTW9uaXRvcjo6U3RvcFVwZGF0aW5nKCkKK3ZvaWQgV2ViUlRD
TW9uaXRvcjo6c3RvcFVwZGF0aW5nKCkKIHsKICAgICBXRUJSVENfUkVMRUFTRV9MT0coIlN0b3BV
cGRhdGluZyIpOworCiAgICAgQVNTRVJUKG1fY2xpZW50Q291bnQpOwogICAgIGlmICgtLW1fY2xp
ZW50Q291bnQpCiAgICAgICAgIHJldHVybjsKIAotICAgIHNlbmRPbk1haW5UaHJlYWQoW3RoaXNd
KGF1dG8mIGNvbm5lY3Rpb24pIHsKLSAgICAgICAgV0VCUlRDX1JFTEVBU0VfTE9HKCJTdG9wVXBk
YXRpbmcgLSBBc2tpbmcgbmV0d29yayBwcm9jZXNzIHRvIHN0b3AgdXBkYXRpbmciKTsKLSAgICAg
ICAgY29ubmVjdGlvbi5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUlRDTW9uaXRvcjo6U3RvcFVwZGF0
aW5nKCksIDApOwotICAgIH0pOworICAgIFdFQlJUQ19SRUxFQVNFX0xPRygiU3RvcFVwZGF0aW5n
IC0gQXNraW5nIG5ldHdvcmsgcHJvY2VzcyB0byBzdG9wIHVwZGF0aW5nIik7CisgICAgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVj
dGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtSVENNb25pdG9yOjpTdG9wVXBkYXRpbmcoKSwg
MCk7CiB9CiAKLXZvaWQgV2ViUlRDTW9uaXRvcjo6bmV0d29ya3NDaGFuZ2VkKGNvbnN0IFZlY3Rv
cjxSVENOZXR3b3JrPiYgbmV0d29ya3MsIGNvbnN0IFJUQ05ldHdvcms6OklQQWRkcmVzcyYgaXB2
NCwgY29uc3QgUlRDTmV0d29yazo6SVBBZGRyZXNzJiBpcHY2KQordm9pZCBXZWJSVENNb25pdG9y
OjpuZXR3b3Jrc0NoYW5nZWQoVmVjdG9yPFJUQ05ldHdvcms+JiYgbmV0d29ya0xpc3QsIFJUQ05l
dHdvcms6OklQQWRkcmVzcyYmIGlwdjQsIFJUQ05ldHdvcms6OklQQWRkcmVzcyYmIGlwdjYpCiB7
CiAgICAgV0VCUlRDX1JFTEVBU0VfTE9HKCJuZXR3b3Jrc0NoYW5nZWQiKTsKLSAgICAvLyBObyBu
ZWVkIHRvIHByb3RlY3QgJ3RoaXMnIGFzIGl0IGhhcyB0aGUgbGlmZXRpbWUgb2YgTGliV2ViUlRD
IHdoaWNoIGhhcyB0aGUgbGlmZXRpbWUgb2YgdGhlIHdlYiBwcm9jZXNzLgotICAgIFdlYkNvcmU6
OkxpYldlYlJUQ1Byb3ZpZGVyOjpjYWxsT25XZWJSVENOZXR3b3JrVGhyZWFkKFt0aGlzLCBuZXR3
b3JrcywgaXB2NCwgaXB2Nl0gewotICAgICAgICBXRUJSVENfUkVMRUFTRV9MT0coIm5ldHdvcmtz
Q2hhbmdlZCAtIFNpZ25hbGluZyIpOwotICAgICAgICBzdGQ6OnZlY3RvcjxydGM6Ok5ldHdvcmsq
PiBuZXR3b3JrTGlzdChuZXR3b3Jrcy5zaXplKCkpOwotICAgICAgICBmb3IgKHNpemVfdCBpbmRl
eCA9IDA7IGluZGV4IDwgbmV0d29ya3Muc2l6ZSgpOyArK2luZGV4KQotICAgICAgICAgICAgbmV0
d29ya0xpc3RbaW5kZXhdID0gbmV3IHJ0Yzo6TmV0d29yayhuZXR3b3Jrc1tpbmRleF0udmFsdWUo
KSk7Ci0KLSAgICAgICAgYm9vbCBmb3JjZVNpZ25hbGluZyA9ICFtX3JlY2VpdmVkTmV0d29ya0xp
c3Q7Ci0gICAgICAgIG1fcmVjZWl2ZWROZXR3b3JrTGlzdCA9IHRydWU7Ci0KLSAgICAgICAgYm9v
bCBoYXNDaGFuZ2VkOwotICAgICAgICBzZXRfZGVmYXVsdF9sb2NhbF9hZGRyZXNzZXMoaXB2NC52
YWx1ZSwgaXB2Ni52YWx1ZSk7Ci0gICAgICAgIE1lcmdlTmV0d29ya0xpc3QobmV0d29ya0xpc3Qs
ICZoYXNDaGFuZ2VkKTsKLSAgICAgICAgaWYgKGhhc0NoYW5nZWQgfHwgZm9yY2VTaWduYWxpbmcp
Ci0gICAgICAgICAgICBTaWduYWxOZXR3b3Jrc0NoYW5nZWQoKTsKIAotICAgIH0pOworICAgIG1f
ZGlkUmVjZWl2ZU5ldHdvcmtMaXN0ID0gdHJ1ZTsKKyAgICBtX25ldHdvcmtMaXN0ID0gV1RGTW92
ZShuZXR3b3JrTGlzdCk7CisgICAgbV9pcHY0ID0gV1RGTW92ZShpcHY0KTsKKyAgICBtX2lwdjYg
PSBXVEZNb3ZlKGlwdjYpOworCisgICAgZm9yIChhdXRvJiBvYnNlcnZlciA6IG1fb2JzZXJ2ZXJz
KQorICAgICAgICBvYnNlcnZlci5uZXR3b3Jrc0NoYW5nZWQobV9uZXR3b3JrTGlzdCwgbV9pcHY0
LCBtX2lwdjYpOwogfQogCiB2b2lkIFdlYlJUQ01vbml0b3I6Om5ldHdvcmtQcm9jZXNzQ3Jhc2hl
ZCgpCiB7Ci0gICAgbV9yZWNlaXZlZE5ldHdvcmtMaXN0ID0gZmFsc2U7Ci0gICAgaWYgKCFXZWJD
b3JlOjpMaWJXZWJSVENQcm92aWRlcjo6aGFzV2ViUlRDVGhyZWFkcygpKQotICAgICAgICByZXR1
cm47Ci0KLSAgICAvLyBJbiBjYXNlIHdlIGhhdmUgY2xpZW50cyB3YWl0aW5nIGZvciBuZXR3b3Jr
c0NoYW5nZWQsIHdlIGNhbGwgU2lnbmFsTmV0d29ya3NDaGFuZ2VkIHRvIG1ha2Ugc3VyZSB0aGV5
IGRvIG5vdCB3YWl0IGZvciBub3RoaW5nLiAgICAKLSAgICBXZWJDb3JlOjpMaWJXZWJSVENQcm92
aWRlcjo6Y2FsbE9uV2ViUlRDTmV0d29ya1RocmVhZChbdGhpc10gewotICAgICAgICBTaWduYWxO
ZXR3b3Jrc0NoYW5nZWQoKTsKLSAgICB9KTsKKyAgICBmb3IgKGF1dG8mIG9ic2VydmVyIDogbV9v
YnNlcnZlcnMpCisgICAgICAgIG9ic2VydmVyLm5ldHdvcmtQcm9jZXNzQ3Jhc2hlZCgpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJSVENNb25pdG9yLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay93ZWJydGMvV2ViUlRDTW9uaXRvci5oCmluZGV4IGY2Yjk3MzlmYWRkYzM4
MmNkNDIyZTViYWE4ZWEyODU2ZTVmNGZiMGYuLjA2ODU5MGU1MzI2NDFhMWZkYTM1N2FhYzEyYWQy
MzI0YjIwNDQyNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L3dlYnJ0Yy9XZWJSVENNb25pdG9yLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvd2VicnRjL1dlYlJUQ01vbml0b3IuaApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUg
IlJUQ05ldHdvcmsuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0xpYldlYlJUQ1Byb3ZpZGVyLmg+CiAj
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha0hhc2hTZXQuaD4KIAog
bmFtZXNwYWNlIElQQyB7CiBjbGFzcyBDb25uZWN0aW9uOwpAQCAtNDAsMjYgKzQxLDQyIEBAIG5h
bWVzcGFjZSBXZWJLaXQgewogCiBzdHJ1Y3QgTmV0d29ya3NDaGFuZ2VkRGF0YTsKIAotY2xhc3Mg
V2ViUlRDTW9uaXRvciBmaW5hbCA6IHB1YmxpYyBydGM6Ok5ldHdvcmtNYW5hZ2VyQmFzZSB7Citj
bGFzcyBXZWJSVENNb25pdG9yIHsKIHB1YmxpYzoKICAgICBXZWJSVENNb25pdG9yKCkgPSBkZWZh
dWx0OwogCisgICAgY2xhc3MgT2JzZXJ2ZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8T2JzZXJ2
ZXI+IHsKKyAgICBwdWJsaWM6CisgICAgICAgIHZpcnR1YWwgfk9ic2VydmVyKCkgPSBkZWZhdWx0
OworICAgICAgICB2aXJ0dWFsIHZvaWQgbmV0d29ya3NDaGFuZ2VkKGNvbnN0IFZlY3RvcjxSVENO
ZXR3b3JrPiYsIGNvbnN0IFJUQ05ldHdvcms6OklQQWRkcmVzcyYsIGNvbnN0IFJUQ05ldHdvcms6
OklQQWRkcmVzcyYpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIG5ldHdvcmtQcm9jZXNzQ3Jh
c2hlZCgpID0gMDsKKyAgICB9OworICAgIHZvaWQgYWRkT2JzZXJ2ZXIoT2JzZXJ2ZXImIG9ic2Vy
dmVyKSB7IG1fb2JzZXJ2ZXJzLmFkZChvYnNlcnZlcik7IH0KKyAgICB2b2lkIHJlbW92ZU9ic2Vy
dmVyKE9ic2VydmVyJiBvYnNlcnZlcikgeyBtX29ic2VydmVycy5yZW1vdmUob2JzZXJ2ZXIpOyB9
CisgICAgdm9pZCBzdGFydFVwZGF0aW5nKCk7CisgICAgdm9pZCBzdG9wVXBkYXRpbmcoKTsKKwog
ICAgIHZvaWQgbmV0d29ya1Byb2Nlc3NDcmFzaGVkKCk7CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKICAgICB2b2lkIHNldEVudW1l
cmF0aW5nQWxsTmV0d29ya0ludGVyZmFjZXNFbmFibGVkKGJvb2wpOwogCi1wcml2YXRlOgotICAg
IHZvaWQgbmV0d29ya3NDaGFuZ2VkKGNvbnN0IFZlY3RvcjxSVENOZXR3b3JrPiYgbmV0d29ya0xp
c3QsIGNvbnN0IFJUQ05ldHdvcms6OklQQWRkcmVzcyYsIGNvbnN0IFJUQ05ldHdvcms6OklQQWRk
cmVzcyYpOworICAgIGJvb2wgZGlkUmVjZWl2ZU5ldHdvcmtMaXN0KCkgY29uc3QgeyByZXR1cm4g
bV9kaWRSZWNlaXZlTmV0d29ya0xpc3Q7IH0KKyAgICBjb25zdCBWZWN0b3I8UlRDTmV0d29yaz4m
IG5ldHdvcmtMaXN0KCkgY29uc3QgeyByZXR1cm4gbV9uZXR3b3JrTGlzdDsgfQorICAgIGNvbnN0
IFJUQ05ldHdvcms6OklQQWRkcmVzcyYgaXB2NCgpIGNvbnN0IHsgcmV0dXJuIG1faXB2NDsgfQor
ICAgIGNvbnN0IFJUQ05ldHdvcms6OklQQWRkcmVzcyYgaXB2NigpIGNvbnN0IHsgcmV0dXJuIG1f
aXB2NjsgfQogCi0gICAgdm9pZCBTdGFydFVwZGF0aW5nKCkgZmluYWw7Ci0gICAgdm9pZCBTdG9w
VXBkYXRpbmcoKSBmaW5hbDsKLSAgICB3ZWJydGM6Ok1kbnNSZXNwb25kZXJJbnRlcmZhY2UqIEdl
dE1kbnNSZXNwb25kZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBudWxscHRyOyB9Citwcml2YXRl
OgorICAgIHZvaWQgbmV0d29ya3NDaGFuZ2VkKFZlY3RvcjxSVENOZXR3b3JrPiYmLCBSVENOZXR3
b3JrOjpJUEFkZHJlc3MmJiwgUlRDTmV0d29yazo6SVBBZGRyZXNzJiYpOwogCiAgICAgc3RhdGlj
IHZvaWQgc2VuZE9uTWFpblRocmVhZChGdW5jdGlvbjx2b2lkKElQQzo6Q29ubmVjdGlvbiYpPiYm
KTsKIAogICAgIHVuc2lnbmVkIG1fY2xpZW50Q291bnQgeyAwIH07Ci0gICAgYm9vbCBtX3JlY2Vp
dmVkTmV0d29ya0xpc3QgeyBmYWxzZSB9OworICAgIFdlYWtIYXNoU2V0PE9ic2VydmVyPiBtX29i
c2VydmVyczsKICAgICBib29sIG1fZW5hYmxlRW51bWVyYXRpbmdBbGxOZXR3b3JrSW50ZXJmYWNl
cyB7IGZhbHNlIH07CisgICAgYm9vbCBtX2RpZFJlY2VpdmVOZXR3b3JrTGlzdCB7IGZhbHNlIH07
CisgICAgVmVjdG9yPFJUQ05ldHdvcms+IG1fbmV0d29ya0xpc3Q7CisgICAgUlRDTmV0d29yazo6
SVBBZGRyZXNzIG1faXB2NDsKKyAgICBSVENOZXR3b3JrOjpJUEFkZHJlc3MgbV9pcHY2OwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOGQ5YjRhNWNjNWU2MmQ2OGEwM2JiOTRj
YjYxNzEwNmEyMzBmMTFlZi4uNDkxNDA2MmU4MTk1OWJlM2Q0MmNkMzg3OGY5ZGYwYmNmNThhMjYx
OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIxLTA5LTAxICBZb3Vlbm4gRmFibGV0ICA8eW91
ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgbGlid2VicnRjIG5ldHdvcmsgbWFu
YWdlciBHZXRNZG5zUmVzcG9uZGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjk3NTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBVcGRhdGUgdGVzdHMgZ2l2ZW4gbUROUyBJQ0UgY2FuZGlkYXRlcyBhcmUg
bm93IHNob3dpbmcgdXAgaW4gZGVzY3JpcHRpb25zLgorICAgICAgICBNYWtlIHN1cmUgdG8gY29u
c2lkZXIgbUROUyBjYW5kaWRhdGVzIGFzIGlmIHRoZXkgYXJlIGZpbHRlcmVkLgorCisgICAgICAg
ICogaHR0cC93cHQvd2VicnRjL3Jlc291cmNlcy90aGlyZC1wYXJ0eS1mcmFtZS1pY2UtY2FuZGlk
YXRlLWZpbHRlcmluZy1pZnJhbWUuaHRtbDoKKyAgICAgICAgKiB3ZWJydGMvZGF0YWNoYW5uZWwv
ZmlsdGVyLWljZS1jYW5kaWRhdGUuaHRtbDoKKyAgICAgICAgKiB3ZWJydGMvZmlsdGVyaW5nLWlj
ZS1jYW5kaWRhdGUtYWZ0ZXItcmVsb2FkLmh0bWw6CisKIDIwMjEtMDgtMzEgIFlvdWVubiBGYWJs
ZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIE1pZ3JhdGUgdG8gbGF0ZXN0IGxpYndl
YnJ0YyBBZGRJY2VDYW5kaWRhdGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dl
YnJ0Yy9yZXNvdXJjZXMvdGhpcmQtcGFydHktZnJhbWUtaWNlLWNhbmRpZGF0ZS1maWx0ZXJpbmct
aWZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJydGMvcmVzb3VyY2VzL3RoaXJk
LXBhcnR5LWZyYW1lLWljZS1jYW5kaWRhdGUtZmlsdGVyaW5nLWlmcmFtZS5odG1sCmluZGV4IDJm
ZTUzMTA3NjQ3MjdiNTdhYWIzYmE2MTUyNTU2NjZmNjQ4NWE2MTAuLjgwNDQ4Y2EwYTU0NzRhN2Q4
NTljNzI4MDg0NjM4YjQzYzEwZGY0MTUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0
L3dlYnJ0Yy9yZXNvdXJjZXMvdGhpcmQtcGFydHktZnJhbWUtaWNlLWNhbmRpZGF0ZS1maWx0ZXJp
bmctaWZyYW1lLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VicnRjL3Jlc291cmNl
cy90aGlyZC1wYXJ0eS1mcmFtZS1pY2UtY2FuZGlkYXRlLWZpbHRlcmluZy1pZnJhbWUuaHRtbApA
QCAtMTIsNyArMTIsOCBAQCBmdW5jdGlvbiBpc0ZpbHRlcmluZ0VuYWJsZWQoKQogICAgICAgICAg
ICAgICAgIHJlc29sdmUoIWNhbmRpZGF0ZXMubGVuZ3RoKTsKICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBjYW5kaWRhdGVzLnB1c2goZXZlbnQuY2Fu
ZGlkYXRlLmNhbmRpZGF0ZSk7CisgICAgICAgICAgICBpZiAoZXZlbnQuY2FuZGlkYXRlLmNhbmRp
ZGF0ZS5pbmRleE9mKCcubG9jYWwnKSA9PT0gLTEpCisgICAgICAgICAgICAgICAgY2FuZGlkYXRl
cy5wdXNoKGV2ZW50LmNhbmRpZGF0ZS5jYW5kaWRhdGUpOwogICAgICAgICB9OwogICAgICAgICBw
Yy5jcmVhdGVPZmZlcigpLnRoZW4oKG9mZmVyKSA9PiB7CiAgICAgICAgICAgICBwYy5zZXRMb2Nh
bERlc2NyaXB0aW9uKG9mZmVyKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYnJ0Yy9kYXRh
Y2hhbm5lbC9maWx0ZXItaWNlLWNhbmRpZGF0ZS5odG1sIGIvTGF5b3V0VGVzdHMvd2VicnRjL2Rh
dGFjaGFubmVsL2ZpbHRlci1pY2UtY2FuZGlkYXRlLmh0bWwKaW5kZXggY2NjNDY5YTE3N2UwMDky
YjY3NTdiNWJjNGQxNzc1M2FiMWZiOTUzYi4uNzRlNzhmNDkzMjU4NTlmZmI1Njg0MTY1NTFkNTQx
ZjgwMjc2YjM2NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvd2VicnRjL2RhdGFjaGFubmVsL2Zp
bHRlci1pY2UtY2FuZGlkYXRlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvd2VicnRjL2RhdGFjaGFu
bmVsL2ZpbHRlci1pY2UtY2FuZGlkYXRlLmh0bWwKQEAgLTgsNjggKzgsOTEgQEAKICAgPC9oZWFk
PgogICA8Ym9keT4KICAgICA8c2NyaXB0PgotcHJvbWlzZV90ZXN0KCh0ZXN0KSA9PiB7Ci0gICAg
cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKLSAgICAgICAgc2V0VGlt
ZW91dCgoKSA9PiB7IHJlamVjdCgiVGVzdCB0aW1lZCBvdXQiKTsgfSwgNTAwMCk7Ci0KLSAgICAg
ICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCi0gICAgICAgICAgICBpbnRlcm5hbHMuc2V0SUNFQ2Fu
ZGlkYXRlRmlsdGVyaW5nKHRydWUpOwotCi0gICAgICAgIHZhciBjb3VudGVyID0gMDsKLSAgICAg
ICAgdmFyIHBjID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7Ci0gICAgICAgIHBjLmNyZWF0ZURh
dGFDaGFubmVsKCdzZW5kRGF0YUNoYW5uZWwnKTsKLSAgICAgICAgcGMub25pY2VjYW5kaWRhdGUg
PSAoZXZlbnQpID0+IHsKLSAgICAgICAgICAgIGlmIChldmVudC5jYW5kaWRhdGUpIHsKLSAgICAg
ICAgICAgICAgICBjb3VudGVyKys7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAg
ICAgfQotICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhwYy5sb2NhbERlc2NyaXB0aW9uLnNkcC5p
bmRleE9mKCJhPWNhbmRpZGF0ZSIpLCAtMSk7Ci0gICAgICAgICAgICBhc3NlcnRfdHJ1ZShwYy5s
b2NhbERlc2NyaXB0aW9uLnNkcC5pbmRleE9mKCJjPUlOIElQNCAwLjAuMC4wXHJcbiIpICE9IC0x
IHx8IHBjLmxvY2FsRGVzY3JpcHRpb24uc2RwLmluZGV4T2YoImM9SU4gSVA2IDo6XHJcbiIpICE9
IC0xKTsKLSAgICAgICAgICAgIGlmIChjb3VudGVyID09PSAwKSB7Ci0gICAgICAgICAgICAgICAg
cGMuY3JlYXRlT2ZmZXIoKS50aGVuKChvZmZlcikgPT4gewotICAgICAgICAgICAgICAgICAgICBh
c3NlcnRfdHJ1ZShvZmZlci5zZHAuaW5kZXhPZigiYz1JTiBJUDQgMC4wLjAuMFxyXG4iKSAhPSAt
MSB8fCBwYy5sb2NhbERlc2NyaXB0aW9uLnNkcC5pbmRleE9mKCJjPUlOIElQNiA6OlxyXG4iKSAh
PSAtMSk7Ci0gICAgICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMob2ZmZXIuc2RwLmluZGV4
T2YoImE9Y2FuZGlkYXRlIiksIC0xKTsKLSAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOwot
ICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAg
cmVqZWN0KCJObyBjYW5kaWRhdGUgc2hvdWxkIGJlIGZvdW5kIik7Ci0gICAgICAgIH07Ci0gICAg
ICAgIHBjLmNyZWF0ZU9mZmVyKCkudGhlbigob2ZmZXIpID0+IHsKLSAgICAgICAgICAgIGFzc2Vy
dF9lcXVhbHMob2ZmZXIuc2RwLmluZGV4T2YoImE9Y2FuZGlkYXRlIiksIC0xKTsKLSAgICAgICAg
ICAgIHBjLnNldExvY2FsRGVzY3JpcHRpb24ob2ZmZXIpOwotICAgICAgICB9KTsKK2Z1bmN0aW9u
IGVuc3VyZUNhbmRpZGF0ZXNBcmVNRE5TKHNkcCkKK3sKKyAgICBhc3NlcnRfdHJ1ZShzZHAuaW5k
ZXhPZigiYz1JTiBJUDQgMC4wLjAuMFxyXG4iKSAhPSAtMSB8fCBzZHAuaW5kZXhPZigiYz1JTiBJ
UDYgOjpcclxuIikgIT0gLTEpOworICAgIGNvbnN0IGNhbmRpZGF0ZXMgPSBzZHAuc3BsaXQoJ1xy
XG4nKS5maWx0ZXIobGluZSA9PiB7CisgICAgICAgIHJldHVybiBsaW5lLmluZGV4T2YoJ2E9Y2Fu
ZGlkYXRlJykgIT09IC0xOworICAgIH0pOworICAgIGZvciAoY29uc3QgY2FuZGlkYXRlIG9mIGNh
bmRpZGF0ZXMpCisgICAgICAgIGFzc2VydF9ub3RfZXF1YWxzKGNhbmRpZGF0ZS5pbmRleE9mKCcu
bG9jYWwnKSwgLTEpOworfQorCitmdW5jdGlvbiBlbnN1cmVDYW5kaWRhdGVzQXJlTm90TUROUyhz
ZHApCit7CisgICAgY29uc3QgY2FuZGlkYXRlcyA9IHNkcC5zcGxpdCgnXHJcbicpLmZpbHRlcihs
aW5lID0+IHsKKyAgICAgICAgcmV0dXJuIGxpbmUuaW5kZXhPZignYT1jYW5kaWRhdGUnKSAhPT0g
LTE7CiAgICAgfSk7CisgICAgZm9yIChjb25zdCBjYW5kaWRhdGUgb2YgY2FuZGlkYXRlcykKKyAg
ICAgICAgYXNzZXJ0X2VxdWFscyhjYW5kaWRhdGUuaW5kZXhPZignLmxvY2FsJyksIC0xKTsKK30K
KworcHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7CisgICAgbGV0IHJlc29sdmUsIHJlamVj
dDsKKyAgICBjb25zdCBwcm9taXNlID0gbmV3IFByb21pc2UoKHJlcywgcmVqKSA9PiB7IHJlc29s
dmUgPSByZXM7IHJlamVjdCA9IHJlajsgfSk7CisgICAgc2V0VGltZW91dCgoKSA9PiB7IHJlamVj
dCgiVGVzdCB0aW1lZCBvdXQiKTsgfSwgNTAwMCk7CisKKyAgICBpZiAod2luZG93LmludGVybmFs
cykKKyAgICAgICAgaW50ZXJuYWxzLnNldElDRUNhbmRpZGF0ZUZpbHRlcmluZyh0cnVlKTsKKwor
ICAgIGxldCBjb3VudGVyID0gMDsKKyAgICBsZXQgcGMgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24o
KTsKKyAgICBwYy5jcmVhdGVEYXRhQ2hhbm5lbCgnc2VuZERhdGFDaGFubmVsJyk7CisgICAgcGMu
b25pY2VjYW5kaWRhdGUgPSBhc3luYyAoZXZlbnQpID0+IHsKKyAgICAgICAgaWYgKGV2ZW50LmNh
bmRpZGF0ZSkgeworICAgICAgICAgICAgYXNzZXJ0X25vdF9lcXVhbHMoZXZlbnQuY2FuZGlkYXRl
LmNhbmRpZGF0ZS5pbmRleE9mKCcubG9jYWwnKSwgLTEpOworICAgICAgICAgICAgY291bnRlcisr
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGVuc3VyZUNhbmRpZGF0
ZXNBcmVNRE5TKHBjLmxvY2FsRGVzY3JpcHRpb24uc2RwKTsKKyAgICAgICAgaWYgKGNvdW50ZXIg
PT09IDApIHsKKyAgICAgICAgICAgIGNvbnN0IG9mZmVyID0gYXdhaXQgcGMuY3JlYXRlT2ZmZXIo
KTsKKyAgICAgICAgICAgIGF3YWl0IHBjLnNldExvY2FsRGVzY3JpcHRpb24ob2ZmZXIpOworICAg
ICAgICAgICAgZW5zdXJlQ2FuZGlkYXRlc0FyZU1ETlMocGMubG9jYWxEZXNjcmlwdGlvbi5zZHAp
OworICAgICAgICAgICAgcmVzb2x2ZSgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisgICAgICAgIHJlc29sdmUoKTsKKyAgICB9OworICAgIGNvbnN0IG9mZmVyID0gYXdhaXQgcGMu
Y3JlYXRlT2ZmZXIoKTsKKyAgICBhc3NlcnRfZXF1YWxzKG9mZmVyLnNkcC5pbmRleE9mKCJhPWNh
bmRpZGF0ZSIpLCAtMSk7CisgICAgYXdhaXQgcGMuc2V0TG9jYWxEZXNjcmlwdGlvbihvZmZlcik7
CisKKyAgICByZXR1cm4gcHJvbWlzZTsKIH0sICJHYXRoZXJpbmcgSUNFIGNhbmRpZGF0ZXMgZnJv
bSBhIGRhdGEgY2hhbm5lbCBwZWVyIGNvbm5lY3Rpb24gd2l0aCBJQ0UgY2FuZGlkYXRlIGZpbHRl
cmluZyBvbiIpOwogCi1wcm9taXNlX3Rlc3QoKHRlc3QpID0+IHsKLSAgICByZXR1cm4gbmV3IFBy
b21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gewotICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsg
cmVqZWN0KCJUZXN0IHRpbWVkIG91dCIpOyB9LCA1MDAwKTsKK3Byb21pc2VfdGVzdChhc3luYyAo
dGVzdCkgPT4geworICAgIGxldCByZXNvbHZlLCByZWplY3Q7CisgICAgY29uc3QgcHJvbWlzZSA9
IG5ldyBQcm9taXNlKChyZXMsIHJlaikgPT4geyByZXNvbHZlID0gcmVzOyByZWplY3QgPSByZWo7
IH0pOworICAgIHNldFRpbWVvdXQoKCkgPT4geyByZWplY3QoIlRlc3QgdGltZWQgb3V0Iik7IH0s
IDUwMDApOwogCi0JaWYgKHdpbmRvdy5pbnRlcm5hbHMpCi0gICAgICAgICAgICBpbnRlcm5hbHMu
c2V0SUNFQ2FuZGlkYXRlRmlsdGVyaW5nKGZhbHNlKTsKKyAgICBpZiAod2luZG93LmludGVybmFs
cykKKyAgICAgICAgaW50ZXJuYWxzLnNldElDRUNhbmRpZGF0ZUZpbHRlcmluZyhmYWxzZSk7Cisg
CisgICAgbGV0IGNvdW50ZXIgPSAwOworICAgIGxldCBwYyA9IG5ldyBSVENQZWVyQ29ubmVjdGlv
bigpOworICAgIHBjLmNyZWF0ZURhdGFDaGFubmVsKCdzZW5kRGF0YUNoYW5uZWwnKTsKIAotICAg
ICAgICB2YXIgY291bnRlciA9IDA7Ci0gICAgICAgIHZhciBwYyA9IG5ldyBSVENQZWVyQ29ubmVj
dGlvbigpOwotICAgICAgICBwYy5jcmVhdGVEYXRhQ2hhbm5lbCgnc2VuZERhdGFDaGFubmVsJyk7
Ci0gICAgICAgIHBjLm9uaWNlY2FuZGlkYXRlID0gKGV2ZW50KSA9PiB7Ci0gICAgICAgICAgICBp
ZiAoZXZlbnQuY2FuZGlkYXRlKSB7Ci0gICAgICAgICAgICAgICAgY291bnRlcisrOwotICAgICAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGFzc2VydF90cnVl
KHBjLmxvY2FsRGVzY3JpcHRpb24uc2RwLmluZGV4T2YoImM9SU4gSVA0IDAuMC4wLjBcclxuIikg
PT09IC0xICYmIHBjLmxvY2FsRGVzY3JpcHRpb24uc2RwLmluZGV4T2YoImM9SU4gSVA2IDo6XHJc
biIpID09PSAtMSk7Ci0gICAgICAgICAgICBhc3NlcnRfZmFsc2UocGMubG9jYWxEZXNjcmlwdGlv
bi5zZHAuaW5kZXhPZigiYT1jYW5kaWRhdGUiKSA9PT0gLTEpOwotICAgICAgICAgICAgaWYgKGNv
dW50ZXIgIT09IDApIHsKLSAgICAgICAgICAgICAgICAvLyBSZWRvaW5nIGFuIG9mZmVyIG5vdyB0
aGF0IHdlIGhhdmUgc29tZSBjYW5kaWRhdGVzLgotICAgICAgICAgICAgICAgIHBjLmNyZWF0ZU9m
ZmVyKCkudGhlbigob2ZmZXIpID0+IHsKLSAgICAgICAgICAgICAgICAgICAgYXNzZXJ0X3RydWUo
b2ZmZXIuc2RwLmluZGV4T2YoImM9SU4gSVA0IDAuMC4wLjBcclxuIikgPT09IC0xICYmIHBjLmxv
Y2FsRGVzY3JpcHRpb24uc2RwLmluZGV4T2YoImM9SU4gSVA2IDo6XHJcbiIpID09PSAtMSk7Ci0g
ICAgICAgICAgICAgICAgICAgIGFzc2VydF9mYWxzZShvZmZlci5zZHAuaW5kZXhPZigiYT1jYW5k
aWRhdGUiKSA9PT0gLTEpOwotICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7Ci0gICAgICAg
ICAgICAgICAgfSk7Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICByZWplY3Qo
Ikhvc3QgY2FuZGlkYXRlcyBzaG91bGQgYmUgZm91bmQiKTsKLSAgICAgICAgfTsKLSAgICAgICAg
cGMuY3JlYXRlT2ZmZXIoKS50aGVuKChvZmZlcikgPT4geyBwYy5zZXRMb2NhbERlc2NyaXB0aW9u
KG9mZmVyKTsgfSk7Ci0gICAgfSk7CisgICAgcGMub25pY2VjYW5kaWRhdGUgPSBhc3luYyAoZXZl
bnQpID0+IHsKKyAgICAgICAgaWYgKGV2ZW50LmNhbmRpZGF0ZSkgeworICAgICAgICAgICAgYXNz
ZXJ0X2VxdWFscyhldmVudC5jYW5kaWRhdGUuY2FuZGlkYXRlLmluZGV4T2YoJy5sb2NhbCcpLCAt
MSk7CisgICAgICAgICAgICBjb3VudGVyKys7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKyAgICAgICAgZW5zdXJlQ2FuZGlkYXRlc0FyZU5vdE1ETlMocGMubG9jYWxEZXNjcmlwdGlv
bi5zZHApOworICAgICAgICBpZiAoY291bnRlciAhPT0gMCkgeworICAgICAgICAgICAgLy8gUmVk
b2luZyBhbiBvZmZlciBub3cgdGhhdCB3ZSBoYXZlIHNvbWUgY2FuZGlkYXRlcy4KKyAgICAgICAg
ICAgIGNvbnN0IG9mZmVyID0gYXdhaXQgcGMuY3JlYXRlT2ZmZXIoKTsKKyAgICAgICAgICAgIGF3
YWl0IHBjLnNldExvY2FsRGVzY3JpcHRpb24ob2ZmZXIpOworICAgICAgICAgICAgZW5zdXJlQ2Fu
ZGlkYXRlc0FyZU5vdE1ETlMocGMubG9jYWxEZXNjcmlwdGlvbi5zZHApOworICAgICAgICAgICAg
cmVzb2x2ZSgpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHJlamVjdCgiSG9zdCBjYW5k
aWRhdGVzIHNob3VsZCBiZSBmb3VuZCIpOworICAgIH07CisgICAgY29uc3Qgb2ZmZXIgPSBhd2Fp
dCBwYy5jcmVhdGVPZmZlcigpOworICAgIGF3YWl0IHBjLnNldExvY2FsRGVzY3JpcHRpb24ob2Zm
ZXIpOworCisgICAgcmV0dXJuIHByb21pc2U7CiB9LCAiR2F0aGVyaW5nIElDRSBjYW5kaWRhdGVz
IGZyb20gYSBkYXRhIGNoYW5uZWwgcGVlciBjb25uZWN0aW9uIHdpdGggSUNFIGNhbmRpZGF0ZSBm
aWx0ZXJpbmcgb2ZmIik7CiAKIHByb21pc2VfdGVzdChhc3luYyAodGVzdCkgPT4gewpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2VicnRjL2ZpbHRlcmluZy1pY2UtY2FuZGlkYXRlLWFmdGVyLXJl
bG9hZC5odG1sIGIvTGF5b3V0VGVzdHMvd2VicnRjL2ZpbHRlcmluZy1pY2UtY2FuZGlkYXRlLWFm
dGVyLXJlbG9hZC5odG1sCmluZGV4IGM4NzU1ZjcxZjE5ZjFhMzAzYzIzYjBiYWFmMTY2M2JkNjhi
ZDViOWQuLjUyNWRlODRmOWQzMmJiMTQ2MmRlOTdjMmYyMGU1NWZmY2MxNWU0YjIgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL3dlYnJ0Yy9maWx0ZXJpbmctaWNlLWNhbmRpZGF0ZS1hZnRlci1yZWxv
YWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy93ZWJydGMvZmlsdGVyaW5nLWljZS1jYW5kaWRhdGUt
YWZ0ZXItcmVsb2FkLmh0bWwKQEAgLTcsMjQgKzcsMjggQEAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KSB7CiAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiB9CiAKLWZ1bmN0aW9uIGlzRmls
dGVyaW5nRW5hYmxlZCgpCithc3luYyBmdW5jdGlvbiBpc0ZpbHRlcmluZ0VuYWJsZWQoKQogewor
ICAgIGxldCByZXNvbHZlLCByZWplY3Q7CisgICAgY29uc3QgcHJvbWlzZSA9IG5ldyBQcm9taXNl
KChyZXMsIHJlaikgPT4geyByZXNvbHZlID0gcmVzOyByZWplY3QgPSByZWo7IH0pOworICAgIHNl
dFRpbWVvdXQoKCkgPT4geyByZWplY3QoIlRlc3QgdGltZWQgb3V0Iik7IH0sIDUwMDApOworCiAg
ICAgdmFyIHBjID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7CiAgICAgcGMuY3JlYXRlRGF0YUNo
YW5uZWwoIiIpOwogCiAgICAgdmFyIGNhbmRpZGF0ZXMgPSBbXTsKLSAgICByZXR1cm4gbmV3IFBy
b21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gewotICAgICAgICBwYy5vbmljZWNhbmRpZGF0ZSA9
IChldmVudCkgPT4gewotICAgICAgICAgICAgaWYgKGV2ZW50LmNhbmRpZGF0ZSA9PT0gbnVsbCkg
ewotICAgICAgICAgICAgICAgIHJlc29sdmUoIWNhbmRpZGF0ZXMubGVuZ3RoKTsKLSAgICAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9CisgICAgcGMub25pY2VjYW5kaWRhdGUgPSAo
ZXZlbnQpID0+IHsKKyAgICAgICAgaWYgKGV2ZW50LmNhbmRpZGF0ZSA9PT0gbnVsbCkgeworICAg
ICAgICAgICAgcmVzb2x2ZSghY2FuZGlkYXRlcy5sZW5ndGgpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisgICAgICAgIGlmIChldmVudC5jYW5kaWRhdGUuY2FuZGlkYXRlLmluZGV4
T2YoJy5sb2NhbCcpID09PSAtMSkKICAgICAgICAgICAgIGNhbmRpZGF0ZXMucHVzaChldmVudC5j
YW5kaWRhdGUuY2FuZGlkYXRlKTsKLSAgICAgICAgfTsKLSAgICAgICAgcGMuY3JlYXRlT2ZmZXIo
KS50aGVuKChvZmZlcikgPT4gewotICAgICAgICAgICAgcGMuc2V0TG9jYWxEZXNjcmlwdGlvbihv
ZmZlcik7Ci0gICAgICAgIH0pOwotICAgIH0pOworICAgIH07CisKKyAgICBjb25zdCBvZmZlciA9
IGF3YWl0IHBjLmNyZWF0ZU9mZmVyKCk7CisgICAgYXdhaXQgcGMuc2V0TG9jYWxEZXNjcmlwdGlv
bihvZmZlcik7CisgICAgcmV0dXJuIHByb21pc2U7CiB9CiAKIGZ1bmN0aW9uIGVuZFRlc3QobWVz
c2FnZSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>437117</attachid>
            <date>2021-09-02 00:00:42 -0700</date>
            <delta_ts>2021-09-05 23:39:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229757-20210902090040.patch</filename>
            <type>text/plain</type>
            <size>87753</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxNzkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWIwNDFiMmIwMGZmNmU4
Y2YwNTI3MjZmMWQ1NmUzMzQwNGM1NjAwNy4uMGQ3M2YxZDE3M2RlNjAzNzkxNDlhZmRhMzRiYjQ1
YjY1YTQ0NWIwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDIxLTA5LTAxICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgbGlid2Vi
cnRjIG5ldHdvcmsgbWFuYWdlciBHZXRNZG5zUmVzcG9uZGVyCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjk3NTcKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgbGlid2VicnRjIG1ETlMgc3VwcG9ydCBp
bnN0ZWFkIG9mIGFwcGx5aW5nIGl0IHdpdGhpbiBQZWVyQ29ubmVjdGlvbkJhY2tlbmQuCisgICAg
ICAgIFRoaXMgYWxsb3dzIGEgYmV0dGVyIGludGVncmF0aW9uIGFuZCBpcyBtb3JlIGNvbnNpc3Rl
bnQgd2l0aCB0aGUgQVBJIGFuZCBvdGhlciBicm93c2Vycy4KKyAgICAgICAgRm9yIGluc3RhbmNl
IG1ETlMgY2FuZGlkYXRlcyBub3cgc2hvdyB1cCBpbiBsb2NhbCBkZXNjcmlwdGlvbnMuCisgICAg
ICAgIFdlIGludHJvZHVjZSBSVENOZXR3b3JrTWFuYWdlciB3aGljaCBpcyByZXNwb25zaWJsZSBm
b3IgV2ViUlRDIG5ldHdvcmsuCisgICAgICAgIFJUQ05ldHdvcmtNYW5hZ2VyIGlzIHJlc3BvbnNp
YmxlIG9mIGFsbCBwZWVyIGNvbm5lY3Rpb25zIG9mIGEgZG9jdW1lbnQuIEl0IGNhbiB0aHVzIHJl
dXNlIG1ETlMgbmFtZXMgZnJvbSBvbmUgY29ubmVjdGlvbiB0byBhbm90aGVyLgorICAgICAgICBX
aGVuIGRvY3VtZW50IGdvZXMgYXdheSwgUlRDTmV0d29ya01hbmFnZXIgbmVlZHMgdG8gdW5yZWdp
c3RlciBhbGwgbUROUyBuYW1lcy4KKyAgICAgICAgVXBkYXRlIGV4aXN0aW5nIFNEUCBhbmQgSUNF
IGNhbmRpZGF0ZSBmaWx0ZXJpbmcgY29kZSBieSBvbmx5IGtlZXBpbmcgZGVidWcgYXNzZXJ0IHRo
YXQgd2UgZG8gbm90IGxlYWsgcHJpdmF0ZSBJUCBhZGRyZXNzZXMgaW4gY2FzZSBJQ0UgZmlsdGVy
aW5nIGlzIG9uLgorICAgICAgICBXSzEgZG9lcyBub3Qgc3VwcG9ydCBtRE5TIGNhbmRpZGF0ZXMu
IEluIHRoYXQgY2FzZSwgd2UgZXhwb3NlIHByaXZhdGUgSVAgYWRkcmVzc2VzLgorCisgICAgICAg
IENvdmVyZWQgYnkgdXBkYXRlZCBhbmQgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBIZWFk
ZXJzLmNtYWtlOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25C
YWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uQmFja2VuZDo6Y3Jl
YXRlT2ZmZXJTdWNjZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb25CYWNr
ZW5kOjplbmFibGVJQ0VDYW5kaWRhdGVGaWx0ZXJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UGVl
ckNvbm5lY3Rpb25CYWNrZW5kOjpkaXNhYmxlSUNFQ2FuZGlkYXRlRmlsdGVyaW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uQmFja2VuZDo6dmFsaWRhdGVTRFAgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb25CYWNrZW5kOjpuZXdJQ0VDYW5kaWRhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb25CYWNrZW5kOjpkb25lR2F0aGVyaW5n
Q2FuZGlkYXRlcyk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlv
bkJhY2tlbmQuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0NvbnRyb2xsZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRDQ29udHJvbGxlcjo6YWRkKToKKyAgICAgICAgKFdl
YkNvcmU6OlJUQ0NvbnRyb2xsZXI6OmRpc2FibGVJQ0VDYW5kaWRhdGVGaWx0ZXJpbmdGb3JBbGxP
cmlnaW5zKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0NvbnRyb2xsZXI6OmRpc2FibGVJQ0VDYW5k
aWRhdGVGaWx0ZXJpbmdGb3JEb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpSVENDb250cm9s
bGVyOjplbmFibGVJQ0VDYW5kaWRhdGVGaWx0ZXJpbmcpOgorICAgICAgICAqIE1vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDTmV0d29ya01hbmFnZXIuaDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy9t
ZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRwb2ludC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpzZXRDb25maWd1cmF0aW9uKToKKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVj
dGlvbkJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUGVlckNvbm5lY3Rp
b25CYWNrZW5kOjpjdXJyZW50TG9jYWxEZXNjcmlwdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OnBlbmRpbmdMb2NhbERlc2NyaXB0
aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFj
a2VuZDo6bG9jYWxEZXNjcmlwdGlvbiBjb25zdCk6CisgICAgICAgICogV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6d2lsbEJlUmVtb3ZlZEZyb21GcmFtZSk6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudDo6c3VzcGVuZCk6CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cnRjTmV0d29ya01hbmFnZXIpOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnQ6OnNldFJUQ05ldHdvcmtNYW5hZ2VyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9tZWRpYXN0cmVhbS9NRE5TUmVnaXN0ZXJFcnJvci5oOiBBZGRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUHJvdmlkZXI6OmNyZWF0ZVBlZXJDb25uZWN0aW9uKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlk
ZXIuaDoKKwogMjAyMS0wOC0zMSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAK
ICAgICAgICAgQWRkIHN1cHBvcnQgZm9yIFJUQ1NjdHBUcmFuc3BvcnQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNjFm
N2FkMWNhODg3ZDViZmQyMTJmNDM5M2QwYzUyYWVhYWMwYjU3Yi4uZTQ3ZmJkODY3YmZmOTRiMjQ0
YzdhNTkxZTRjMTJlZWI2ZmMxN2FjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NiBAQAorMjAyMS0w
OS0wMSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVt
ZW50IGxpYndlYnJ0YyBuZXR3b3JrIG1hbmFnZXIgR2V0TWRuc1Jlc3BvbmRlcgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5NzU3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IFJUQ05ldHdv
cmtNYW5hZ2VyIEFQSSBpbiBMaWJXZWJSVENOZXR3b3JrTWFuYWdlciB0byBoYW5kbGUgcGVyLWRv
Y3VtZW50IG1ETlMgcmVnaXN0cmF0aW9ucy4KKyAgICAgICAgTW92ZSBwYXJ0IG9mIFdlYlJUQ01v
bml0b3IgdG8gTGliV2ViUlRDTmV0d29ya01hbmFnZXIuCisgICAgICAgIExpYldlYlJUQ05ldHdv
cmtNYW5hZ2VyIGlzIGEgV2ViUlRDTW9uaXRvciBvYnNlcnZlciB0byBnZXQgdGhlIGxpc3Qgb2Yg
bmV0d29ya3MuCisgICAgICAgIFNpbmNlIGxpYndlYnJ0YyBpcyBub3cgZG9pbmcgdGhlIG1ETlMg
cmVnaXN0cmF0aW9uLCB3ZSBuZWVkIHRvIHJldHVybiBhIG1ETlMgbmFtZSBldmVuIGlmIHJlZ2lz
dHJhdGlvbiBmYWlsZWQuCisgICAgICAgIFdlIHVwZGF0ZSBXZWJNRE5TUmVnaXN0ZXIgYW5kIE5l
dHdvcmtNRE5TUmVnaXN0ZXIgYWNjb3JkaW5nbHkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy93ZWJydGMvTmV0d29ya01ETlNSZWdpc3Rlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OnJlZ2lz
dGVyTUROU05hbWVDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtNRE5TUmVnaXN0
ZXI6OnJlZ2lzdGVyTUROU05hbWUpOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAq
IFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
TmV0d29yay93ZWJydGMvTGliV2ViUlRDTmV0d29ya01hbmFnZXIuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYktpdDo6TGliV2ViUlRDTmV0d29ya01hbmFnZXI6OmdldE9yQ3JlYXRlKToKKyAgICAg
ICAgKFdlYktpdDo6TGliV2ViUlRDTmV0d29ya01hbmFnZXI6OkxpYldlYlJUQ05ldHdvcmtNYW5h
Z2VyKToKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDTmV0d29ya01hbmFnZXI6On5MaWJXZWJS
VENOZXR3b3JrTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ05ldHdvcmtNYW5h
Z2VyOjp1bnJlZ2lzdGVyTUROU05hbWVzKToKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDTmV0
d29ya01hbmFnZXI6OlN0YXJ0VXBkYXRpbmcpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENO
ZXR3b3JrTWFuYWdlcjo6U3RvcFVwZGF0aW5nKToKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRD
TmV0d29ya01hbmFnZXI6OkdldE1kbnNSZXNwb25kZXIgY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpMaWJXZWJSVENOZXR3b3JrTWFuYWdlcjo6bmV0d29ya3NDaGFuZ2VkKToKKyAgICAgICAgKFdl
YktpdDo6TGliV2ViUlRDTmV0d29ya01hbmFnZXI6Om5ldHdvcmtQcm9jZXNzQ3Jhc2hlZCk6Cisg
ICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ05ldHdvcmtNYW5hZ2VyOjpDcmVhdGVOYW1lRm9yQWRk
cmVzcyk6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ05ldHdvcmtNYW5hZ2VyOjpSZW1vdmVO
YW1lRm9yQWRkcmVzcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJX
ZWJSVENOZXR3b3JrTWFuYWdlci5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdv
cmsvd2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TGliV2Vi
UlRDUHJvdmlkZXI6OmNyZWF0ZVBlZXJDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TGli
V2ViUlRDUHJvdmlkZXI6OmRpc2FibGVOb25Mb2NhbGhvc3RDb25uZWN0aW9ucyk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvV2ViTUROU1JlZ2lzdGVyLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViTUROU1JlZ2lzdGVyOjpmaW5pc2hlZFJlZ2lzdGVyaW5nTUROU05hbWUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJNRE5TUmVnaXN0ZXI6OnJlZ2lzdGVyTUROU05hbWUpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvV2ViTUROU1JlZ2lzdGVyLmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJNRE5TUmVnaXN0ZXIubWVzc2Fn
ZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJSVENNb25pdG9y
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUlRDTW9uaXRvcjo6c3RhcnRVcGRhdGluZyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlJUQ01vbml0b3I6OnN0b3BVcGRhdGluZyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlJUQ01vbml0b3I6Om5ldHdvcmtzQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlJUQ01vbml0b3I6Om5ldHdvcmtQcm9jZXNzQ3Jhc2hlZCk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJSVENNb25pdG9yLmg6CisgICAgICAgIChXZWJLaXQ6Oldl
YlJUQ01vbml0b3I6OmFkZE9ic2VydmVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViUlRDTW9uaXRv
cjo6cmVtb3ZlT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJSVENNb25pdG9yOjpkaWRS
ZWNlaXZlTmV0d29ya0xpc3QgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJSVENNb25pdG9y
OjpuZXR3b3JrTGlzdCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlJUQ01vbml0b3I6Omlw
djQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJSVENNb25pdG9yOjppcHY2IGNvbnN0KToK
KwogMjAyMS0wOC0yNiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAg
Q3V0IGRvd24gb24gdXNlIG9mIENGR2V0VHlwZUlELCB1c2luZyBkeW5hbWljX2NmX2Nhc3QgaW5z
dGVhZDsgcmVsYXRlZCBzdHJlYW1saW5pbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hl
YWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IDc2Y2UwYzY2
MWZlZTgzMGQxNzZlMzYxZjU3OTg3MzVjN2FlMWUwY2UuLmNlYjkzZmU4ZDAxODBjN2NlYzZmMjEx
NzdjODAwYTcxOTE0YzIwNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21h
a2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtMTE1LDExICsxMTUsMTQg
QEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIE1vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuaAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0
YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmgKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFD
aGFubmVsUmVtb3RlU291cmNlLmgKKyAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ05ldHdvcmtN
YW5hZ2VyLmgKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1NUVU5NZXNzYWdlUGFyc2luZy5oCiAg
ICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFDbGllbnQuaAogICAgIE1vZHVsZXMvbWVk
aWFzdHJlYW0vVXNlck1lZGlhQ29udHJvbGxlci5oCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9V
c2VyTWVkaWFSZXF1ZXN0LmgKIAorICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xp
YldlYlJUQ1V0aWxzLmgKKwogICAgIE1vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVt
ZW50LmgKIAogICAgIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaApAQCAtMTQx
Miw2ICsxNDE1LDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogCiAg
ICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZS5oCiAgICAgcGxhdGZvcm0vbWVk
aWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFnZXIuaAorICAgIHBsYXRmb3JtL21lZGlhc3RyZWFt
L01ETlNSZWdpc3RlckVycm9yLmgKICAgICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0
cmFpbnRzLmgKICAgICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVByaXZhdGUuaAog
ICAgIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUmVxdWVzdC5oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2Vu
ZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9u
QmFja2VuZC5jcHAKaW5kZXggNzk5ZTFkM2RhY2M0ODEwNzJjMWI1N2JhZDFlOTVlMDZkMGEwNGM4
MS4uMzVkNTVmZGM1ZDE1MjIyZmVjZmU5MDU4NDY3MzRiMDM0M2JmYmU4NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rp
b25CYWNrZW5kLmNwcApAQCAtODMsNiArODMsMTEgQEAgUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpQ
ZWVyQ29ubmVjdGlvbkJhY2tlbmQoUlRDUGVlckNvbm5lY3Rpb24mIHBlZXJDb25uZWN0aW9uKQog
ICAgICwgbV9sb2dJZGVudGlmaWVyKHBlZXJDb25uZWN0aW9uLmxvZ0lkZW50aWZpZXIoKSkKICNl
bmRpZgogeworI2lmIFVTRShMSUJXRUJSVEMpCisgICAgYXV0byogZG9jdW1lbnQgPSBwZWVyQ29u
bmVjdGlvbi5kb2N1bWVudCgpOworICAgIGlmIChhdXRvKiBwYWdlID0gZG9jdW1lbnQgPyBkb2N1
bWVudC0+cGFnZSgpIDogbnVsbHB0cikKKyAgICAgICAgbV9zaG91bGRGaWx0ZXJJQ0VDYW5kaWRh
dGVzID0gcGFnZS0+bGliV2ViUlRDUHJvdmlkZXIoKS5pc1N1cHBvcnRpbmdNRE5TKCk7CisjZW5k
aWYKIH0KIAogUGVlckNvbm5lY3Rpb25CYWNrZW5kOjp+UGVlckNvbm5lY3Rpb25CYWNrZW5kKCkg
PSBkZWZhdWx0OwpAQCAtMTAyLDcgKzEwNyw4IEBAIHZvaWQgUGVlckNvbm5lY3Rpb25CYWNrZW5k
OjpjcmVhdGVPZmZlclN1Y2NlZWRlZChTdHJpbmcmJiBzZHApCiAgICAgQUxXQVlTX0xPRyhMT0dJ
REVOVElGSUVSLCAiQ3JlYXRlIG9mZmVyIHN1Y2NlZWRlZDpcbiIsIHNkcCk7CiAKICAgICBBU1NF
UlQobV9vZmZlckFuc3dlclByb21pc2UpOwotICAgIG1fcGVlckNvbm5lY3Rpb24uZG9UYXNrKFt0
aGlzLCBwcm9taXNlID0gV1RGTW92ZShtX29mZmVyQW5zd2VyUHJvbWlzZSksIHNkcCA9IGZpbHRl
clNEUChXVEZNb3ZlKHNkcCkpXSgpIG11dGFibGUgeworICAgIHZhbGlkYXRlU0RQKHNkcCk7Cisg
ICAgbV9wZWVyQ29ubmVjdGlvbi5kb1Rhc2soW3RoaXMsIHByb21pc2UgPSBXVEZNb3ZlKG1fb2Zm
ZXJBbnN3ZXJQcm9taXNlKSwgc2RwID0gV1RGTW92ZShzZHApXSgpIG11dGFibGUgewogICAgICAg
ICBpZiAobV9wZWVyQ29ubmVjdGlvbi5pc0Nsb3NlZCgpKQogICAgICAgICAgICAgcmV0dXJuOwog
CkBAIC0zNzYsODEgKzM4MiwxOSBAQCB2b2lkIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6ZW5hYmxl
SUNFQ2FuZGlkYXRlRmlsdGVyaW5nKCkKIHZvaWQgUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpkaXNh
YmxlSUNFQ2FuZGlkYXRlRmlsdGVyaW5nKCkKIHsKICAgICBtX3Nob3VsZEZpbHRlcklDRUNhbmRp
ZGF0ZXMgPSBmYWxzZTsKLSAgICBmb3IgKGF1dG8mIHBlbmRpbmdJQ0VDYW5kaWRhdGUgOiBtX3Bl
bmRpbmdJQ0VDYW5kaWRhdGVzKQotICAgICAgICBmaXJlSUNFQ2FuZGlkYXRlRXZlbnQoUlRDSWNl
Q2FuZGlkYXRlOjpjcmVhdGUoV1RGTW92ZShwZW5kaW5nSUNFQ2FuZGlkYXRlLnNkcCksIFdURk1v
dmUocGVuZGluZ0lDRUNhbmRpZGF0ZS5taWQpLCBwZW5kaW5nSUNFQ2FuZGlkYXRlLnNkcE1MaW5l
SW5kZXgpLCBXVEZNb3ZlKHBlbmRpbmdJQ0VDYW5kaWRhdGUuc2VydmVyVVJMKSk7Ci0gICAgbV9w
ZW5kaW5nSUNFQ2FuZGlkYXRlcy5jbGVhcigpOwotfQotCi1zdGF0aWMgU3RyaW5nIGZpbHRlcklD
RUNhbmRpZGF0ZShTdHJpbmcmJiBzZHApCi17Ci0gICAgQVNTRVJUKCFzZHAuY29udGFpbnMoIiBo
b3N0ICIpKTsKLQotICAgIGlmICghc2RwLmNvbnRhaW5zKCIgcmFkZHIgIikpCi0gICAgICAgIHJl
dHVybiBXVEZNb3ZlKHNkcCk7Ci0KLSAgICBib29sIHNraXBOZXh0SXRlbSA9IGZhbHNlOwotICAg
IGJvb2wgaXNGaXJzdCA9IHRydWU7Ci0gICAgU3RyaW5nQnVpbGRlciBmaWx0ZXJlZFNEUDsKLSAg
ICBzZHAuc3BsaXQoJyAnLCBbJl0oU3RyaW5nVmlldyBpdGVtKSB7Ci0gICAgICAgIGlmIChza2lw
TmV4dEl0ZW0pIHsKLSAgICAgICAgICAgIHNraXBOZXh0SXRlbSA9IGZhbHNlOwotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGlmIChpdGVtID09ICJyYWRkciIpIHsKLSAg
ICAgICAgICAgIGZpbHRlcmVkU0RQLmFwcGVuZCgiIHJhZGRyIDAuMC4wLjAiKTsKLSAgICAgICAg
ICAgIHNraXBOZXh0SXRlbSA9IHRydWU7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0K
LSAgICAgICAgaWYgKGl0ZW0gPT0gInJwb3J0IikgewotICAgICAgICAgICAgZmlsdGVyZWRTRFAu
YXBwZW5kKCIgcnBvcnQgMCIpOwotICAgICAgICAgICAgc2tpcE5leHRJdGVtID0gdHJ1ZTsKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBpZiAoaXNGaXJzdCkKLSAgICAg
ICAgICAgIGlzRmlyc3QgPSBmYWxzZTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgZmlsdGVy
ZWRTRFAuYXBwZW5kKCcgJyk7Ci0gICAgICAgIGZpbHRlcmVkU0RQLmFwcGVuZChpdGVtKTsKLSAg
ICB9KTsKLSAgICByZXR1cm4gZmlsdGVyZWRTRFAudG9TdHJpbmcoKTsKIH0KIAotU3RyaW5nIFBl
ZXJDb25uZWN0aW9uQmFja2VuZDo6ZmlsdGVyU0RQKFN0cmluZyYmIHNkcCkgY29uc3QKK3ZvaWQg
UGVlckNvbm5lY3Rpb25CYWNrZW5kOjp2YWxpZGF0ZVNEUChjb25zdCBTdHJpbmcmIHNkcCkgY29u
c3QKIHsKKyNpZm5kZWYgTkRFQlVHCiAgICAgaWYgKCFtX3Nob3VsZEZpbHRlcklDRUNhbmRpZGF0
ZXMpCi0gICAgICAgIHJldHVybiBXVEZNb3ZlKHNkcCk7Ci0KLSAgICBTdHJpbmdCdWlsZGVyIGZp
bHRlcmVkU0RQOwotICAgIHNkcC5zcGxpdCgnXG4nLCBbdGhpcywgJmZpbHRlcmVkU0RQXShTdHJp
bmdWaWV3IGxpbmUpIHsKLSAgICAgICAgaWYgKGxpbmUuc3RhcnRzV2l0aCgiYz1JTiBJUDQiKSkg
ewotICAgICAgICAgICAgZmlsdGVyZWRTRFAuYXBwZW5kKCJjPUlOIElQNCAwLjAuMC4wXHJcbiIp
OwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGlmIChsaW5lLnN0YXJ0
c1dpdGgoImM9SU4gSVA2IikpIHsKLSAgICAgICAgICAgIGZpbHRlcmVkU0RQLmFwcGVuZCgiYz1J
TiBJUDYgOjpcclxuIik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAg
aWYgKCFsaW5lLnN0YXJ0c1dpdGgoImE9Y2FuZGlkYXRlIikpIHsKLSAgICAgICAgICAgIGZpbHRl
cmVkU0RQLmFwcGVuZChsaW5lKTsKLSAgICAgICAgICAgIGZpbHRlcmVkU0RQLmFwcGVuZCgnXG4n
KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBpZiAobGluZS5maW5k
KCIgaG9zdCAiLCAxMSkgPT0gbm90Rm91bmQpIHsKLSAgICAgICAgICAgIGZpbHRlcmVkU0RQLmFw
cGVuZChmaWx0ZXJJQ0VDYW5kaWRhdGUobGluZS50b1N0cmluZygpKSk7Ci0gICAgICAgICAgICBm
aWx0ZXJlZFNEUC5hcHBlbmQoJ1xuJyk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0K
LQotICAgICAgICBhdXRvIGlwQWRkcmVzcyA9IGV4dHJhY3RJUEFkZHJlc3MobGluZSk7Ci0gICAg
ICAgIGF1dG8gbWRuc05hbWUgPSBtX2lwQWRkcmVzc1RvTUROU05hbWVNYXAuZ2V0KGlwQWRkcmVz
cyk7Ci0gICAgICAgIGlmIChtZG5zTmFtZS5pc0VtcHR5KCkpCi0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIGF1dG8gc2RwID0gbGluZS50b1N0cmluZygpOwotICAgICAgICBzZHAucmVwbGFj
ZShpcEFkZHJlc3MsIG1kbnNOYW1lKTsKLSAgICAgICAgZmlsdGVyZWRTRFAuYXBwZW5kKHNkcCk7
Ci0gICAgICAgIGZpbHRlcmVkU0RQLmFwcGVuZCgnXG4nKTsKKyAgICAgICAgcmV0dXJuOworICAg
IHNkcC5zcGxpdCgnXG4nLCBbXShhdXRvIGxpbmUpIHsKKyAgICAgICAgQVNTRVJUKCFsaW5lLnN0
YXJ0c1dpdGgoImE9Y2FuZGlkYXRlIikgfHwgbGluZS5jb250YWlucygiLmxvY2FsIikpOwogICAg
IH0pOwotICAgIHJldHVybiBmaWx0ZXJlZFNEUC50b1N0cmluZygpOworI2Vsc2UKKyAgICBVTlVT
RURfUEFSQU0oc2RwKTsKKyNlbmRpZgogfQogCiB2b2lkIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6
bmV3SUNFQ2FuZGlkYXRlKFN0cmluZyYmIHNkcCwgU3RyaW5nJiYgbWlkLCB1bnNpZ25lZCBzaG9y
dCBzZHBNTGluZUluZGV4LCBTdHJpbmcmJiBzZXJ2ZXJVUkwpCkBAIC00NjAsMjIgKzQwNCw4IEBA
IHZvaWQgUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpuZXdJQ0VDYW5kaWRhdGUoU3RyaW5nJiYgc2Rw
LCBTdHJpbmcmJiBtaWQsIHVuc2lnbmVkCiAgICAgICAgIEFMV0FZU19MT0cobG9nU2l0ZUlkZW50
aWZpZXIsICJHYXRoZXJlZCBpY2UgY2FuZGlkYXRlOiIsIHNkcCk7CiAgICAgICAgIG1fZmluaXNo
ZWRHYXRoZXJpbmdDYW5kaWRhdGVzID0gZmFsc2U7CiAKLSAgICAgICAgaWYgKCFtX3Nob3VsZEZp
bHRlcklDRUNhbmRpZGF0ZXMpIHsKLSAgICAgICAgICAgIGZpcmVJQ0VDYW5kaWRhdGVFdmVudChS
VENJY2VDYW5kaWRhdGU6OmNyZWF0ZShXVEZNb3ZlKHNkcCksIFdURk1vdmUobWlkKSwgc2RwTUxp
bmVJbmRleCksIFdURk1vdmUoc2VydmVyVVJMKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIH0KLSAgICAgICAgaWYgKHNkcC5maW5kKCIgaG9zdCAiLCAwKSAhPSBub3RGb3VuZCkgewot
ICAgICAgICAgICAgLy8gRklYTUU6IFdlIG1pZ2h0IG5lZWQgdG8gY2xlYXIgYWxsIHBlbmRpbmcg
Y2FuZGlkYXRlcyB3aGVuIHNldHRpbmcgYWdhaW4gbG9jYWwgZGVzY3JpcHRpb24uCi0gICAgICAg
ICAgICBtX3BlbmRpbmdJQ0VDYW5kaWRhdGVzLmFwcGVuZChQZW5kaW5nSUNFQ2FuZGlkYXRlIHsg
U3RyaW5nIHsgc2RwIH0sIFdURk1vdmUobWlkKSwgc2RwTUxpbmVJbmRleCwgV1RGTW92ZShzZXJ2
ZXJVUkwpIH0pOwotICAgICAgICAgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJl
ZEZlYXR1cmVzKCkud2ViUlRDTUROU0lDRUNhbmRpZGF0ZXNFbmFibGVkKCkpIHsKLSAgICAgICAg
ICAgICAgICBhdXRvIGlwQWRkcmVzcyA9IGV4dHJhY3RJUEFkZHJlc3Moc2RwKTsKLSAgICAgICAg
ICAgICAgICAvLyBXZSByZXN0cmljdCB0byBJUHY0IGNhbmRpZGF0ZXMgZm9yIG5vdy4KLSAgICAg
ICAgICAgICAgICBpZiAoaXBBZGRyZXNzLmNvbnRhaW5zKCcuJykpCi0gICAgICAgICAgICAgICAg
ICAgIHJlZ2lzdGVyTUROU05hbWUoaXBBZGRyZXNzKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBmaXJlSUNFQ2FuZGlkYXRlRXZlbnQoUlRD
SWNlQ2FuZGlkYXRlOjpjcmVhdGUoZmlsdGVySUNFQ2FuZGlkYXRlKFdURk1vdmUoc2RwKSksIFdU
Rk1vdmUobWlkKSwgc2RwTUxpbmVJbmRleCksIFdURk1vdmUoc2VydmVyVVJMKSk7CisgICAgICAg
IEFTU0VSVCghbV9zaG91bGRGaWx0ZXJJQ0VDYW5kaWRhdGVzIHx8IHNkcC5jb250YWlucygiLmxv
Y2FsIikpOworICAgICAgICBmaXJlSUNFQ2FuZGlkYXRlRXZlbnQoUlRDSWNlQ2FuZGlkYXRlOjpj
cmVhdGUoV1RGTW92ZShzZHApLCBXVEZNb3ZlKG1pZCksIHNkcE1MaW5lSW5kZXgpLCBXVEZNb3Zl
KHNlcnZlclVSTCkpOwogICAgIH0pOwogfQogCkBAIC00ODUsMTIgKzQxNSw4IEBAIHZvaWQgUGVl
ckNvbm5lY3Rpb25CYWNrZW5kOjpkb25lR2F0aGVyaW5nQ2FuZGlkYXRlcygpCiAgICAgQUxXQVlT
X0xPRyhMT0dJREVOVElGSUVSLCAiRmluaXNoZWQgaWNlIGNhbmRpZGF0ZSBnYXRoZXJpbmciKTsK
ICAgICBtX2ZpbmlzaGVkR2F0aGVyaW5nQ2FuZGlkYXRlcyA9IHRydWU7CiAKLSAgICBpZiAobV93
YWl0aW5nRm9yTUROU1JlZ2lzdHJhdGlvbikKLSAgICAgICAgcmV0dXJuOwotCiAgICAgbV9wZWVy
Q29ubmVjdGlvbi5kaXNwYXRjaEV2ZW50V2hlbkZlYXNpYmxlKFJUQ1BlZXJDb25uZWN0aW9uSWNl
RXZlbnQ6OmNyZWF0ZShFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6
Tm8sIG51bGxwdHIsIHsgfSkpOwogICAgIG1fcGVlckNvbm5lY3Rpb24udXBkYXRlSWNlR2F0aGVy
aW5nU3RhdGUoUlRDSWNlR2F0aGVyaW5nU3RhdGU6OkNvbXBsZXRlKTsKLSAgICBtX3BlbmRpbmdJ
Q0VDYW5kaWRhdGVzLmNsZWFyKCk7CiB9CiAKIHZvaWQgUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpl
bmRPZkljZUNhbmRpZGF0ZXMoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkKQEAg
LTQ5OCw0NSArNDI0LDYgQEAgdm9pZCBQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmVuZE9mSWNlQ2Fu
ZGlkYXRlcyhET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXMKICAgICBwcm9taXNlLnJl
c29sdmUoKTsKIH0KIAotdm9pZCBQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OnJlZ2lzdGVyTUROU05h
bWUoY29uc3QgU3RyaW5nJiBpcEFkZHJlc3MpCi17Ci0gICAgKyttX3dhaXRpbmdGb3JNRE5TUmVn
aXN0cmF0aW9uOwotICAgIGF1dG8mIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KCptX3Bl
ZXJDb25uZWN0aW9uLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7Ci0gICAgYXV0byYgcHJvdmlk
ZXIgPSBkb2N1bWVudC5wYWdlKCktPmxpYldlYlJUQ1Byb3ZpZGVyKCk7Ci0gICAgcHJvdmlkZXIu
cmVnaXN0ZXJNRE5TTmFtZShkb2N1bWVudC5pZGVudGlmaWVyKCksIGlwQWRkcmVzcywgW3BlZXJD
b25uZWN0aW9uID0gbWFrZVJlZihtX3BlZXJDb25uZWN0aW9uKSwgdGhpcywgaXBBZGRyZXNzXSAo
TGliV2ViUlRDUHJvdmlkZXI6Ok1ETlNOYW1lT3JFcnJvciYmIHJlc3VsdCkgewotICAgICAgICBp
ZiAocGVlckNvbm5lY3Rpb24tPmlzU3RvcHBlZCgpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0g
ICAgICAgIC0tbV93YWl0aW5nRm9yTUROU1JlZ2lzdHJhdGlvbjsKLSAgICAgICAgaWYgKCFyZXN1
bHQuaGFzX3ZhbHVlKCkpIHsKLSAgICAgICAgICAgIG1fcGVlckNvbm5lY3Rpb24uc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVz
c2FnZUxldmVsOjpXYXJuaW5nLCBtYWtlU3RyaW5nKCJNRE5TIHJlZ2lzdHJhdGlvbiBvZiBhIGhv
c3QgY2FuZGlkYXRlIGZhaWxlZCB3aXRoIGVycm9yICIsICh1bnNpZ25lZClyZXN1bHQuZXJyb3Io
KSkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgdGhpcy0+Zmlu
aXNoZWRSZWdpc3RlcmluZ01ETlNOYW1lKGlwQWRkcmVzcywgcmVzdWx0LnZhbHVlKCkpOwotICAg
IH0pOwotfQotCi12b2lkIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6ZmluaXNoZWRSZWdpc3Rlcmlu
Z01ETlNOYW1lKGNvbnN0IFN0cmluZyYgaXBBZGRyZXNzLCBjb25zdCBTdHJpbmcmIG5hbWUpCi17
Ci0gICAgbV9pcEFkZHJlc3NUb01ETlNOYW1lTWFwLmFkZChpcEFkZHJlc3MsIG5hbWUpOwotICAg
IFZlY3RvcjxQZW5kaW5nSUNFQ2FuZGlkYXRlKj4gY2FuZGlkYXRlczsKLSAgICBmb3IgKGF1dG8m
IGNhbmRpZGF0ZSA6IG1fcGVuZGluZ0lDRUNhbmRpZGF0ZXMpIHsKLSAgICAgICAgaWYgKGNhbmRp
ZGF0ZS5zZHAuZmluZChpcEFkZHJlc3MpICE9IG5vdEZvdW5kKSB7Ci0gICAgICAgICAgICBhdXRv
IHNkcCA9IGNhbmRpZGF0ZS5zZHA7Ci0gICAgICAgICAgICBzZHAucmVwbGFjZShpcEFkZHJlc3Ms
IG5hbWUpOwotICAgICAgICAgICAgZmlyZUlDRUNhbmRpZGF0ZUV2ZW50KFJUQ0ljZUNhbmRpZGF0
ZTo6Y3JlYXRlKFdURk1vdmUoc2RwKSwgV1RGTW92ZShjYW5kaWRhdGUubWlkKSwgY2FuZGlkYXRl
LnNkcE1MaW5lSW5kZXgpLCBXVEZNb3ZlKGNhbmRpZGF0ZS5zZXJ2ZXJVUkwpKTsKLSAgICAgICAg
ICAgIGNhbmRpZGF0ZXMuYXBwZW5kKCZjYW5kaWRhdGUpOwotICAgICAgICB9Ci0gICAgfQotICAg
IG1fcGVuZGluZ0lDRUNhbmRpZGF0ZXMucmVtb3ZlQWxsTWF0Y2hpbmcoWyZdIChjb25zdCBhdXRv
JiBjYW5kaWRhdGUpIHsKLSAgICAgICAgcmV0dXJuIGNhbmRpZGF0ZXMuY29udGFpbnMoJmNhbmRp
ZGF0ZSk7Ci0gICAgfSk7Ci0KLSAgICBpZiAoIW1fd2FpdGluZ0Zvck1ETlNSZWdpc3RyYXRpb24g
JiYgbV9maW5pc2hlZEdhdGhlcmluZ0NhbmRpZGF0ZXMpCi0gICAgICAgIGRvbmVHYXRoZXJpbmdD
YW5kaWRhdGVzKCk7Ci19Ci0KIHZvaWQgUGVlckNvbm5lY3Rpb25CYWNrZW5kOjp1cGRhdGVTaWdu
YWxpbmdTdGF0ZShSVENTaWduYWxpbmdTdGF0ZSBuZXdTaWduYWxpbmdTdGF0ZSkKIHsKICAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmgKaW5kZXggMWMyNTU2NjI1
ZWViYzJmNzc2MjM4YTgzNWQzNzQ4YjAxNmEzZjU2NC4uYTA2NzViYTZiNTA2MzEwNzQ2YmE4NzNk
NGUwZTc4Y2E0Nzc1YWM1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5oCkBAIC0yMDksNyArMjA5LDcg
QEAgcHJvdGVjdGVkOgogICAgIHZvaWQgYWRkSWNlQ2FuZGlkYXRlU3VjY2VlZGVkKCk7CiAgICAg
dm9pZCBhZGRJY2VDYW5kaWRhdGVGYWlsZWQoRXhjZXB0aW9uJiYpOwogCi0gICAgU3RyaW5nIGZp
bHRlclNEUChTdHJpbmcmJikgY29uc3Q7CisgICAgdm9pZCB2YWxpZGF0ZVNEUChjb25zdCBTdHJp
bmcmKSBjb25zdDsKIAogICAgIHN0cnVjdCBQZW5kaW5nVHJhY2tFdmVudCB7CiAgICAgICAgIFJl
ZjxSVENSdHBSZWNlaXZlcj4gcmVjZWl2ZXI7CkBAIC0yMjgsOCArMjI4LDYgQEAgcHJpdmF0ZToK
ICAgICB2aXJ0dWFsIHZvaWQgZW5kT2ZJY2VDYW5kaWRhdGVzKERPTVByb21pc2VEZWZlcnJlZDx2
b2lkPiYmKTsKICAgICB2aXJ0dWFsIHZvaWQgZG9TdG9wKCkgPSAwOwogCi0gICAgdm9pZCByZWdp
c3Rlck1ETlNOYW1lKGNvbnN0IFN0cmluZyYgaXBBZGRyZXNzKTsKLQogcHJvdGVjdGVkOgogICAg
IFJUQ1BlZXJDb25uZWN0aW9uJiBtX3BlZXJDb25uZWN0aW9uOwogCkBAIC0yMzgsMjUgKzIzNiwx
NSBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxET01Qcm9taXNlRGVmZXJyZWQ8dm9p
ZD4+IG1fc2V0RGVzY3JpcHRpb25Qcm9taXNlOwogCiAgICAgYm9vbCBtX3Nob3VsZEZpbHRlcklD
RUNhbmRpZGF0ZXMgeyB0cnVlIH07Ci0gICAgc3RydWN0IFBlbmRpbmdJQ0VDYW5kaWRhdGUgewot
ICAgICAgICAvLyBGaWVsZHMgZGVzY3JpYmVkIGluIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJy
dGMvI2lkbC1kZWYtcnRjaWNlY2FuZGlkYXRlaW5pdC4KLSAgICAgICAgU3RyaW5nIHNkcDsKLSAg
ICAgICAgU3RyaW5nIG1pZDsKLSAgICAgICAgdW5zaWduZWQgc2hvcnQgc2RwTUxpbmVJbmRleDsK
LSAgICAgICAgU3RyaW5nIHNlcnZlclVSTDsKLSAgICB9OwotICAgIFZlY3RvcjxQZW5kaW5nSUNF
Q2FuZGlkYXRlPiBtX3BlbmRpbmdJQ0VDYW5kaWRhdGVzOwogCiAgICAgVmVjdG9yPFBlbmRpbmdU
cmFja0V2ZW50PiBtX3BlbmRpbmdUcmFja0V2ZW50czsKIAotICAgIEhhc2hNYXA8U3RyaW5nLCBT
dHJpbmc+IG1faXBBZGRyZXNzVG9NRE5TTmFtZU1hcDsKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJM
RUQKICAgICBSZWY8Y29uc3QgTG9nZ2VyPiBtX2xvZ2dlcjsKICAgICBjb25zdCB2b2lkKiBtX2xv
Z0lkZW50aWZpZXI7CiAjZW5kaWYKICAgICBib29sIG1fbmVnb3RpYXRpb25OZWVkZWQgeyBmYWxz
ZSB9OwogICAgIGJvb2wgbV9maW5pc2hlZEdhdGhlcmluZ0NhbmRpZGF0ZXMgeyBmYWxzZSB9Owot
ICAgIHVpbnQ2NF90IG1fd2FpdGluZ0Zvck1ETlNSZWdpc3RyYXRpb24geyAwIH07CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENDb250cm9sbGVyLmNwcAppbmRleCA3MGQ0MGM2YmQ1YjMyNjJmMmNmZTYx
NWZiYzJiNDVjNjI5Y2NmNDNlLi5jZjM0NWE0NjJmY2RiMjExOWY3ZmJkZjVlYmRkZjAxNDVlYmE3
NmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0Nv
bnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
Q29udHJvbGxlci5jcHAKQEAgLTczLDYgKzczLDEwIEBAIGJvb2wgUlRDQ29udHJvbGxlcjo6c2hv
dWxkRGlzYWJsZUlDRUNhbmRpZGF0ZUZpbHRlcmluZyhEb2N1bWVudCYgZG9jdW1lbnQpCiAKIHZv
aWQgUlRDQ29udHJvbGxlcjo6YWRkKFJUQ1BlZXJDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogewor
ICAgIGF1dG8mIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KCpjb25uZWN0aW9uLnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSk7CisgICAgaWYgKGF1dG8qIG5ldHdvcmtNYW5hZ2VyID0gZG9j
dW1lbnQucnRjTmV0d29ya01hbmFnZXIoKSkKKyAgICAgICAgbmV0d29ya01hbmFnZXItPnNldElD
RUNhbmRpZGF0ZUZpbHRlcmluZyghc2hvdWxkRGlzYWJsZUlDRUNhbmRpZGF0ZUZpbHRlcmluZyhk
b2N1bWVudCkpOworCiAgICAgbV9wZWVyQ29ubmVjdGlvbnMuYXBwZW5kKGNvbm5lY3Rpb24pOwog
ICAgIGlmIChzaG91bGREaXNhYmxlSUNFQ2FuZGlkYXRlRmlsdGVyaW5nKGRvd25jYXN0PERvY3Vt
ZW50PigqY29ubmVjdGlvbi5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpKSkKICAgICAgICAgY29u
bmVjdGlvbi5kaXNhYmxlSUNFQ2FuZGlkYXRlRmlsdGVyaW5nKCk7CkBAIC04NCw4ICs4OCwxMyBA
QCB2b2lkIFJUQ0NvbnRyb2xsZXI6OmRpc2FibGVJQ0VDYW5kaWRhdGVGaWx0ZXJpbmdGb3JBbGxP
cmlnaW5zKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9zaG91bGRGaWx0ZXJJQ0VDYW5kaWRh
dGVzID0gZmFsc2U7Ci0gICAgZm9yIChSVENQZWVyQ29ubmVjdGlvbiYgY29ubmVjdGlvbiA6IG1f
cGVlckNvbm5lY3Rpb25zKQorICAgIGZvciAoUlRDUGVlckNvbm5lY3Rpb24mIGNvbm5lY3Rpb24g
OiBtX3BlZXJDb25uZWN0aW9ucykgeworICAgICAgICBpZiAoYXV0byogZG9jdW1lbnQgPSBkb3du
Y2FzdDxEb2N1bWVudD4oY29ubmVjdGlvbi5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpKSB7Cisg
ICAgICAgICAgICBpZiAoYXV0byogbmV0d29ya01hbmFnZXIgPSBkb2N1bWVudC0+cnRjTmV0d29y
a01hbmFnZXIoKSkKKyAgICAgICAgICAgICAgICBuZXR3b3JrTWFuYWdlci0+c2V0SUNFQ2FuZGlk
YXRlRmlsdGVyaW5nKGZhbHNlKTsKKyAgICAgICAgfQogICAgICAgICBjb25uZWN0aW9uLmRpc2Fi
bGVJQ0VDYW5kaWRhdGVGaWx0ZXJpbmcoKTsKKyAgICB9CiB9CiAKIHZvaWQgUlRDQ29udHJvbGxl
cjo6ZGlzYWJsZUlDRUNhbmRpZGF0ZUZpbHRlcmluZ0ZvckRvY3VtZW50KERvY3VtZW50JiBkb2N1
bWVudCkKQEAgLTkzLDExICsxMDIsMTcgQEAgdm9pZCBSVENDb250cm9sbGVyOjpkaXNhYmxlSUNF
Q2FuZGlkYXRlRmlsdGVyaW5nRm9yRG9jdW1lbnQoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIGlm
ICghTGliV2ViUlRDUHJvdmlkZXI6OndlYlJUQ0F2YWlsYWJsZSgpKQogICAgICAgICByZXR1cm47
CiAKKyAgICBpZiAoYXV0byogbmV0d29ya01hbmFnZXIgPSBkb2N1bWVudC5ydGNOZXR3b3JrTWFu
YWdlcigpKQorICAgICAgICBuZXR3b3JrTWFuYWdlci0+c2V0SUNFQ2FuZGlkYXRlRmlsdGVyaW5n
KGZhbHNlKTsKKwogICAgIG1fZmlsdGVyaW5nRGlzYWJsZWRPcmlnaW5zLmFwcGVuZChQZWVyQ29u
bmVjdGlvbk9yaWdpbiB7IGRvY3VtZW50LnRvcE9yaWdpbigpLCBkb2N1bWVudC5zZWN1cml0eU9y
aWdpbigpIH0pOwogICAgIGZvciAoUlRDUGVlckNvbm5lY3Rpb24mIGNvbm5lY3Rpb24gOiBtX3Bl
ZXJDb25uZWN0aW9ucykgewogICAgICAgICBpZiAoYXV0byogcGVlckNvbm5lY3Rpb25Eb2N1bWVu
dCA9IGRvd25jYXN0PERvY3VtZW50Pihjb25uZWN0aW9uLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSkpIHsKLSAgICAgICAgICAgIGlmIChtYXRjaERvY3VtZW50T3JpZ2luKCpwZWVyQ29ubmVjdGlv
bkRvY3VtZW50LCBkb2N1bWVudC50b3BPcmlnaW4oKSwgZG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4o
KSkpCisgICAgICAgICAgICBpZiAobWF0Y2hEb2N1bWVudE9yaWdpbigqcGVlckNvbm5lY3Rpb25E
b2N1bWVudCwgZG9jdW1lbnQudG9wT3JpZ2luKCksIGRvY3VtZW50LnNlY3VyaXR5T3JpZ2luKCkp
KSB7CisgICAgICAgICAgICAgICAgaWYgKGF1dG8qIG5ldHdvcmtNYW5hZ2VyID0gcGVlckNvbm5l
Y3Rpb25Eb2N1bWVudC0+cnRjTmV0d29ya01hbmFnZXIoKSkKKyAgICAgICAgICAgICAgICAgICAg
bmV0d29ya01hbmFnZXItPnNldElDRUNhbmRpZGF0ZUZpbHRlcmluZyhmYWxzZSk7CiAgICAgICAg
ICAgICAgICAgY29ubmVjdGlvbi5kaXNhYmxlSUNFQ2FuZGlkYXRlRmlsdGVyaW5nKCk7CisgICAg
ICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC0xMDksOCArMTI0LDEzIEBAIHZvaWQg
UlRDQ29udHJvbGxlcjo6ZW5hYmxlSUNFQ2FuZGlkYXRlRmlsdGVyaW5nKCkKIAogICAgIG1fZmls
dGVyaW5nRGlzYWJsZWRPcmlnaW5zLmNsZWFyKCk7CiAgICAgbV9zaG91bGRGaWx0ZXJJQ0VDYW5k
aWRhdGVzID0gdHJ1ZTsKLSAgICBmb3IgKFJUQ1BlZXJDb25uZWN0aW9uJiBjb25uZWN0aW9uIDog
bV9wZWVyQ29ubmVjdGlvbnMpCisgICAgZm9yIChSVENQZWVyQ29ubmVjdGlvbiYgY29ubmVjdGlv
biA6IG1fcGVlckNvbm5lY3Rpb25zKSB7CiAgICAgICAgIGNvbm5lY3Rpb24uZW5hYmxlSUNFQ2Fu
ZGlkYXRlRmlsdGVyaW5nKCk7CisgICAgICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IGRvd25jYXN0
PERvY3VtZW50Pihjb25uZWN0aW9uLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkpIHsKKyAgICAg
ICAgICAgIGlmIChhdXRvKiBuZXR3b3JrTWFuYWdlciA9IGRvY3VtZW50LT5ydGNOZXR3b3JrTWFu
YWdlcigpKQorICAgICAgICAgICAgICAgIG5ldHdvcmtNYW5hZ2VyLT5zZXRJQ0VDYW5kaWRhdGVG
aWx0ZXJpbmcodHJ1ZSk7CisgICAgICAgIH0KKyAgICB9CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
TmV0d29ya01hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
TmV0d29ya01hbmFnZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZjM2ZmQ0NjFmODFhYmJhMmMwMmJiODFmMWZi
NWY5OTc4MDI1ZmQwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENOZXR3b3JrTWFuYWdlci5oCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
CisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCX1JUQykKKworI2luY2x1ZGUgPHd0
Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IFJUQ05ldHdvcmtNYW5hZ2VyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFJUQ05ldHdv
cmtNYW5hZ2VyLCBXVEY6OkRlc3RydWN0aW9uVGhyZWFkOjpNYWluUnVuTG9vcD4geworcHVibGlj
OgorICAgIHZpcnR1YWwgflJUQ05ldHdvcmtNYW5hZ2VyKCkgPSBkZWZhdWx0OworICAgIHZpcnR1
YWwgdm9pZCBzZXRJQ0VDYW5kaWRhdGVGaWx0ZXJpbmcoYm9vbCkgPSAwOworICAgIHZpcnR1YWwg
dm9pZCB1bnJlZ2lzdGVyTUROU05hbWVzKCkgPSAwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9SVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldl
YlJUQ01lZGlhRW5kcG9pbnQuY3BwCmluZGV4IDUzYzQ0YWRmMTJhOWJlZDc0Y2E1ZGI4YTk1Njgw
MjNkODk5MjY2NTUuLjJkMGFjNWRkMDM2YmZhZjhhOTFmNWQ0MTk1Yzk1YjA4YjcxY2QwMzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xp
YldlYlJUQ01lZGlhRW5kcG9pbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuY3BwCkBAIC05MywxNSAr
OTMsMTUgQEAgYm9vbCBMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpzZXRDb25maWd1cmF0aW9uKExp
YldlYlJUQ1Byb3ZpZGVyJiBjbGllbnQsIHdlYnJ0YzoKICAgICBjb25maWd1cmF0aW9uLnNkcF9z
ZW1hbnRpY3MgPSB3ZWJydGM6OlNkcFNlbWFudGljczo6a1VuaWZpZWRQbGFuOwogCiAgICAgaWYg
KCFtX2JhY2tlbmQpIHsKKyAgICAgICAgYXV0byYgZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVu
dD4oKm1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLmNvbm5lY3Rpb24oKS5zY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkpOwogICAgICAgICBpZiAoIW1fcnRjU29ja2V0RmFjdG9yeSkgewotICAgICAgICAg
ICAgYXV0byYgZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oKm1fcGVlckNvbm5lY3Rpb25C
YWNrZW5kLmNvbm5lY3Rpb24oKS5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwogICAgICAgICAg
ICAgUmVnaXN0cmFibGVEb21haW4gZG9tYWluIHsgZG9jdW1lbnQudXJsKCkgfTsKICAgICAgICAg
ICAgIGJvb2wgaXNGaXJzdFBhcnR5ID0gZG9tYWluID09IFJlZ2lzdHJhYmxlRG9tYWluKGRvY3Vt
ZW50LmZpcnN0UGFydHlGb3JDb29raWVzKCkpOwogICAgICAgICAgICAgbV9ydGNTb2NrZXRGYWN0
b3J5ID0gY2xpZW50LmNyZWF0ZVNvY2tldEZhY3RvcnkoZG9jdW1lbnQudXNlckFnZW50KGRvY3Vt
ZW50LnVybCgpKSwgaXNGaXJzdFBhcnR5LCBXVEZNb3ZlKGRvbWFpbikpOwotICAgICAgICAgICAg
aWYgKCFtX3BlZXJDb25uZWN0aW9uQmFja2VuZC5zaG91bGRGaWx0ZXJJQ0VDYW5kaWRhdGVzKCkp
CisgICAgICAgICAgICBpZiAoIW1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLnNob3VsZEZpbHRlcklD
RUNhbmRpZGF0ZXMoKSAmJiBtX3J0Y1NvY2tldEZhY3RvcnkpCiAgICAgICAgICAgICAgICAgbV9y
dGNTb2NrZXRGYWN0b3J5LT5kaXNhYmxlUmVsYXkoKTsKICAgICAgICAgfQotICAgICAgICBtX2Jh
Y2tlbmQgPSBjbGllbnQuY3JlYXRlUGVlckNvbm5lY3Rpb24oKnRoaXMsIG1fcnRjU29ja2V0RmFj
dG9yeS5nZXQoKSwgV1RGTW92ZShjb25maWd1cmF0aW9uKSk7CisgICAgICAgIG1fYmFja2VuZCA9
IGNsaWVudC5jcmVhdGVQZWVyQ29ubmVjdGlvbihkb2N1bWVudC5pZGVudGlmaWVyKCksICp0aGlz
LCBtX3J0Y1NvY2tldEZhY3RvcnkuZ2V0KCksIFdURk1vdmUoY29uZmlndXJhdGlvbikpOwogICAg
ICAgICByZXR1cm4gISFtX2JhY2tlbmQ7CiAgICAgfQogICAgIGF1dG8gb2xkQ29uZmlndXJhdGlv
biA9IG1fYmFja2VuZC0+R2V0Q29uZmlndXJhdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rp
b25CYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2Vi
cnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAKaW5kZXggNTk2MDJiMDlhZWM5
ZTBhYmIzZDIyN2MzMGY5Mjg5NGQ0YmE2ZDYyNC4uYzY5ZTBjNmQ3YmU3MGJlMWQ3MDEzMDgxMzdk
OGUzNWNmZTJiZTNiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVy
Q29ubmVjdGlvbkJhY2tlbmQuY3BwCkBAIC0zMTAsNyArMzEwLDcgQEAgUmVmUHRyPFJUQ1Nlc3Np
b25EZXNjcmlwdGlvbj4gTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpjdXJyZW50TG9j
YWxEZXNjcmkKIHsKICAgICBhdXRvIGRlc2NyaXB0aW9uID0gbV9lbmRwb2ludC0+Y3VycmVudExv
Y2FsRGVzY3JpcHRpb24oKTsKICAgICBpZiAoZGVzY3JpcHRpb24pCi0gICAgICAgIGRlc2NyaXB0
aW9uLT5zZXRTZHAoZmlsdGVyU0RQKFN0cmluZyhkZXNjcmlwdGlvbi0+c2RwKCkpKSk7CisgICAg
ICAgIHZhbGlkYXRlU0RQKGRlc2NyaXB0aW9uLT5zZHAoKSk7CiAgICAgcmV0dXJuIGRlc2NyaXB0
aW9uOwogfQogCkBAIC0zMjMsNyArMzIzLDcgQEAgUmVmUHRyPFJUQ1Nlc3Npb25EZXNjcmlwdGlv
bj4gTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpwZW5kaW5nTG9jYWxEZXNjcmkKIHsK
ICAgICBhdXRvIGRlc2NyaXB0aW9uID0gbV9lbmRwb2ludC0+cGVuZGluZ0xvY2FsRGVzY3JpcHRp
b24oKTsKICAgICBpZiAoZGVzY3JpcHRpb24pCi0gICAgICAgIGRlc2NyaXB0aW9uLT5zZXRTZHAo
ZmlsdGVyU0RQKFN0cmluZyhkZXNjcmlwdGlvbi0+c2RwKCkpKSk7CisgICAgICAgIHZhbGlkYXRl
U0RQKGRlc2NyaXB0aW9uLT5zZHAoKSk7CiAgICAgcmV0dXJuIGRlc2NyaXB0aW9uOwogfQogCkBA
IC0zMzYsNyArMzM2LDcgQEAgUmVmUHRyPFJUQ1Nlc3Npb25EZXNjcmlwdGlvbj4gTGliV2ViUlRD
UGVlckNvbm5lY3Rpb25CYWNrZW5kOjpsb2NhbERlc2NyaXB0aW9uKCkKIHsKICAgICBhdXRvIGRl
c2NyaXB0aW9uID0gbV9lbmRwb2ludC0+bG9jYWxEZXNjcmlwdGlvbigpOwogICAgIGlmIChkZXNj
cmlwdGlvbikKLSAgICAgICAgZGVzY3JpcHRpb24tPnNldFNkcChmaWx0ZXJTRFAoU3RyaW5nKGRl
c2NyaXB0aW9uLT5zZHAoKSkpKTsKKyAgICAgICAgdmFsaWRhdGVTRFAoZGVzY3JpcHRpb24tPnNk
cCgpKTsKICAgICByZXR1cm4gZGVzY3JpcHRpb247CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5Y2ZjNWYyNWQwNGZlYmQy
OWIyYzFmNGZlMGRiMTg4YzA0YTExNTA2Li5lNDliY2ZhZmZmNzRlN2I1MTY4NTY4ODQzZjMzZjA4
NzIxMjFjODRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0xMTcyLDYgKzExNzIsOSBAQAogCQk0MUI4Nzc2MjIzREUxMDQ1MDAz
NjM4QjggLyogUmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQjg3NzYwMjNERTEwNDIwMDM2MzhCOCAv
KiBSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxQkJBODY2MjU3RTM3M0IwMEFDN0Y2RCAvKiBT
RnJhbWVVdGlscy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDEyMDlFMjQyNTdBMkZCQjAwMTIwQUNBIC8qIFNGcmFtZVV0aWxzLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDFCRjIwNDkyMkJBN0JFODAw
MDRGODEyIC8qIFJlYWx0aW1lVmlkZW9Tb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQkYyMDQwMjJCOTQ3MTYwMDA0RjgxMiAvKiBSZWFsdGlt
ZVZpZGVvU291cmNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJNDFDMTRCQzYyNkRFNkRFODAwNjg1QkY1IC8qIFJUQ05ldHdvcmtNYW5hZ2VyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUMxNEJDNDI2
REU2REU4MDA2ODVCRjUgLyogUlRDTmV0d29ya01hbmFnZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0MUMxNEJDNzI2REU4NTg0MDA2ODVCRjUg
LyogTGliV2ViUlRDVXRpbHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQxRDFBMDRDMjEzRURERkYwMDYzRkI2QiAvKiBMaWJXZWJSVENVdGlscy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQxQzE0QkM5
MjZERjc5RDcwMDY4NUJGNSAvKiBNRE5TUmVnaXN0ZXJFcnJvci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFDMTRCQzgyNkRGNzlENjAwNjg1QkY1IC8q
IE1ETlNSZWdpc3RlckVycm9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNDFDM0I4QTEyNjQ5QjFFMDAwNEVENERFIC8qIEF1ZGlvTWVkaWFTdHJl
YW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0MUMzQjg5RjI2NDlCMUI3MDA0RUQ0REUgLyogQXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MUMzQjhBMjI2NDlCMUU1MDA0RUQ0REUgLyog
QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUMzQjg5QjI2NDlCMUI2MDA0RUQ0REUgLyogQXVk
aW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDFDNzYwQjEwRURFMDNEMzAwQzE2NTVGIC8qIFNj
cmlwdFN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MUM3NjBCMDBFREUwM0QzMDBDMTY1NUYgLyogU2NyaXB0U3RhdGUuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtODA0NCw2ICs4MDQ3LDggQEAK
IAkJNDFCQ0U4NzcyNUY3QTY3QTAwNDZDMkU1IC8qIFJUQ1RyYW5zZm9ybUV2ZW50LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJUQ1RyYW5zZm9ybUV2ZW50Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQkYyMDQwMjJCOTQ3MTYwMDA0RjgxMiAvKiBSZWFsdGlt
ZVZpZGVvU291cmNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlYWx0aW1lVmlkZW9Tb3VyY2UuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFCRjIwNDIyMkI5NDcxNzAwMDRGODEyIC8qIFJl
YWx0aW1lVmlkZW9Tb3VyY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVhbHRpbWVWaWRlb1Nv
dXJjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxQzE0QkM0MjZERTZERTgw
MDY4NUJGNSAvKiBSVENOZXR3b3JrTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBSVENOZXR3b3JrTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk0MUMxNEJDODI2REY3OUQ2MDA2ODVCRjUgLyogTUROU1JlZ2lzdGVyRXJyb3IuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTUROU1JlZ2lzdGVyRXJyb3IuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFDM0I4OUIyNjQ5QjFCNjAwNEVENERFIC8qIEF1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlclVuaXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFD
M0I4OUMyNjQ5QjFCNjAwNEVENERFIC8qIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29j
b2EuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUMzQjg5RDI2NDlCMUI2MDA0RUQ0REUg
LyogQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29hLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTE3MjU0LDYgKzE3MjU5LDcgQEAKIAkJCQkzMTZEQ0I4OTFFN0E2
OTk2MDAxQjVGODcgLyogUlRDSWNlVHJhbnNwb3J0LmlkbCAqLywKIAkJCQk0MTQ1MTZFMDI2Q0Mw
NDIxMDBBQUFCRTAgLyogUlRDSWNlVHJhbnNwb3J0QmFja2VuZC5oICovLAogCQkJCTMxNkRDQjhF
MUU3QTZDNzkwMDFCNUY4NyAvKiBSVENJY2VUcmFuc3BvcnRTdGF0ZS5pZGwgKi8sCisJCQkJNDFD
MTRCQzQyNkRFNkRFODAwNjg1QkY1IC8qIFJUQ05ldHdvcmtNYW5hZ2VyLmggKi8sCiAJCQkJMDcz
Nzk0REMxOUVFMkM1MjAwRTVBMDQ1IC8qIFJUQ09mZmVyQW5zd2VyT3B0aW9ucy5oICovLAogCQkJ
CTMxNkRDQjEyMUU3OEJFNDMwMDFCNUY4NyAvKiBSVENPZmZlckFuc3dlck9wdGlvbnMuaWRsICov
LAogCQkJCTMxNkRDQjI4MUU3OEYzOTUwMDFCNUY4NyAvKiBSVENPZmZlck9wdGlvbnMuaCAqLywK
QEAgLTE3MzgxLDYgKzE3Mzg3LDcgQEAKIAkJCQkwN0I3MTE2QjFEODk5RTYzMDA5RjBGRkIgLyog
Q2FwdHVyZURldmljZU1hbmFnZXIuY3BwICovLAogCQkJCTA3QjcxMTZDMUQ4OTlFNjMwMDlGMEZG
QiAvKiBDYXB0dXJlRGV2aWNlTWFuYWdlci5oICovLAogCQkJCTVFQkI4OTMwMUM3Nzc3RTEwMEM2
NUQ0MSAvKiBJY2VDYW5kaWRhdGUuaCAqLywKKwkJCQk0MUMxNEJDODI2REY3OUQ2MDA2ODVCRjUg
LyogTUROU1JlZ2lzdGVyRXJyb3IuaCAqLywKIAkJCQkxQkU1QkZDMTFENTE1NzE1MDAxNjY2RDkg
LyogTWVkaWFDb25zdHJhaW50cy5jcHAgKi8sCiAJCQkJMDcyMjFCOTkxN0NGMEFENDAwODQ4RTUx
IC8qIE1lZGlhQ29uc3RyYWludHMuaCAqLywKIAkJCQk0MUIyOEIxMzFGODUwMUE0MDBGQjUyQUMg
LyogTWVkaWFFbmRwb2ludENvbmZpZ3VyYXRpb24uY3BwICovLApAQCAtMzM1ODMsNiArMzM1OTAs
NyBAQAogCQkJCTQxODFDNUNEMjU1NTgzNjkwMEFFQjBGRiAvKiBMaWJXZWJSVENSdHBUcmFuc2Zv
cm1hYmxlRnJhbWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxODFDNUQxMjU1NTg5NTYwMEFFQjBG
RiAvKiBMaWJXZWJSVENSdHBUcmFuc2Zvcm1CYWNrZW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQk0
MTBFNDQ2MTIzNDM3M0U5MDAwMTczRDQgLyogTGliV2ViUlRDU29ja2V0SWRlbnRpZmllci5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNDFDMTRCQzcyNkRFODU4NDAwNjg1QkY1IC8qIExpYldlYlJUQ1V0
aWxzLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NDczMEQ5MTEyNDhGMEIzMDBEM0E5QzkgLyogTGln
aHRTb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3OTY1MEQwMEJGMjIwMDcxQjc4MiAv
KiBMaW5lYXJHcmFkaWVudEF0dHJpYnV0ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUFCMzFDOTFF
MTBBRTFCOEUwMDBDN0I5MiAvKiBMaW5lQ2xhbXBWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0z
MzY0Niw2ICszMzY1NCw3IEBACiAJCQkJNDM5MDQ2RUExMkRBMjVFODEyQUY4MEFDIC8qIE1hdGhP
cGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlENURDMkMwRjQyM0E3MzAwOEYyMEZEIC8q
IE1hdHJpeDNEVHJhbnNmb3JtT3BlcmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUU5MTFD
NzBFRjg2RDQ3MDA5RDBDQUYgLyogTWF0cml4VHJhbnNmb3JtT3BlcmF0aW9uLmggaW4gSGVhZGVy
cyAqLywKKwkJCQk0MUMxNEJDOTI2REY3OUQ3MDA2ODVCRjUgLyogTUROU1JlZ2lzdGVyRXJyb3Iu
aCBpbiBIZWFkZXJzICovLAogCQkJCTVDQkM4REFEMUFBQTMwMjIwMEUxQzgwMyAvKiBNZWRpYUFj
Y2Vzc2liaWxpdHlTb2Z0TGluay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMxQkNDNjExMTI0REZD
QjAwQkU3MEREIC8qIE1lZGlhQ2FuU3RhcnRMaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
Q0RDQzlCQ0YyMjM4N0U5QTAwRkZCNTFDIC8qIE1lZGlhQ2FwYWJpbGl0aWVzRGVjb2RpbmdJbmZv
LmggaW4gSGVhZGVycyAqLywKQEAgLTM0NDYxLDYgKzM0NDcwLDcgQEAKIAkJCQkwN0FCOTk2QjE4
REEzQzAxMDAxODc3MUUgLyogUlRDSWNlU2VydmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMTM1
OTEwODFFN0REQzczMDBGMzA2MzAgLyogUlRDSWNlVHJhbnNwb3J0UG9saWN5LmggaW4gSGVhZGVy
cyAqLywKIAkJCQkzMTM1OTEwOTFFN0REQzczMDBGMzA2MzAgLyogUlRDSWNlVHJhbnNwb3J0U3Rh
dGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxQzE0QkM2MjZERTZERTgwMDY4NUJGNSAvKiBSVENO
ZXR3b3JrTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDczNzk0RkUxOUY1ODY0RTAwRTVB
MDQ1IC8qIFJUQ05vdGlmaWVyc01vY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTA3Mzc5NERFMTlF
RTJDNTIwMEU1QTA0NSAvKiBSVENPZmZlckFuc3dlck9wdGlvbnMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTA3OEUwOTI1MTdEMTREMUMwMDQyMEFBMSAvKiBSVENQZWVyQ29ubmVjdGlvbi5oIGluIEhl
YWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCA5NDY2ZmQ5ZjdmNTQ3ZmRkOWJl
ZjA0ZWY4NTdhMmE2ZWNhMmIxZmQ4Li45NjQ5YTQ1NmMyYjA4MjAwZGE1ZDdmNzg5ODBmYWE2NmVk
MTJhYWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTI1OTUsMTIgKzI1OTUsOSBAQCB2
b2lkIERvY3VtZW50Ojp3aWxsQmVSZW1vdmVkRnJvbUZyYW1lKCkKICAgICBpZiAobV9oYXNQcmVw
YXJlZEZvckRlc3RydWN0aW9uKQogICAgICAgICByZXR1cm47CiAKLSNpZiBVU0UoTElCV0VCUlRD
KQotICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBtb3ZlZCB0byBNb2R1bGVzL21lZGlhc3Ry
ZWFtLgotICAgIGlmIChMaWJXZWJSVENQcm92aWRlcjo6d2ViUlRDQXZhaWxhYmxlKCkpIHsKLSAg
ICAgICAgaWYgKGF1dG8qIHBhZ2UgPSB0aGlzLT5wYWdlKCkpCi0gICAgICAgICAgICBwYWdlLT5s
aWJXZWJSVENQcm92aWRlcigpLnVucmVnaXN0ZXJNRE5TTmFtZXMoaWRlbnRpZmllcigpKTsKLSAg
ICB9CisjaWYgRU5BQkxFKFdFQl9SVEMpCisgICAgaWYgKG1fcnRjTmV0d29ya01hbmFnZXIpCisg
ICAgICAgIG1fcnRjTmV0d29ya01hbmFnZXItPnVucmVnaXN0ZXJNRE5TTmFtZXMoKTsKICNlbmRp
ZgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpAQCAtNTYxNywxMiArNTYxNCw5IEBAIHZv
aWQgRG9jdW1lbnQ6OnN1c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lvbiByZWFzb24pCiAgICAgICAg
ICAgICB2aWV3LT5jb21wb3NpdG9yKCkuY2FuY2VsQ29tcG9zaXRpbmdMYXllclVwZGF0ZSgpOwog
ICAgIH0KIAotI2lmIFVTRShMSUJXRUJSVEMpCi0gICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJl
IG1vdmVkIHRvIE1vZHVsZXMvbWVkaWFzdHJlYW0uCi0gICAgaWYgKExpYldlYlJUQ1Byb3ZpZGVy
Ojp3ZWJSVENBdmFpbGFibGUoKSkgewotICAgICAgICBpZiAoYXV0byogcGFnZSA9IHRoaXMtPnBh
Z2UoKSkKLSAgICAgICAgICAgIHBhZ2UtPmxpYldlYlJUQ1Byb3ZpZGVyKCkudW5yZWdpc3Rlck1E
TlNOYW1lcyhpZGVudGlmaWVyKCkpOwotICAgIH0KKyNpZiBFTkFCTEUoV0VCX1JUQykKKyAgICBp
ZiAobV9ydGNOZXR3b3JrTWFuYWdlcikKKyAgICAgICAgbV9ydGNOZXR3b3JrTWFuYWdlci0+dW5y
ZWdpc3Rlck1ETlNOYW1lcygpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IGFmNWU3ODUwY2E5MjE1ZjIyOTFkNTA0YjJkZjhlOWMy
ZDBkNTNiOTYuLjgyMzA5ODNhNmE2MWYxOWY5YjkxYTI3MWQ0MDEwNDM1NDc5NGMzYjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5oCkBAIC00OSw2ICs0OSw3IEBACiAjaW5jbHVkZSAiUGFnZUlkZW50aWZp
ZXIuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUV2ZW50LmgiCiAjaW5jbHVkZSAiUGxheWJhY2tUYXJn
ZXRDbGllbnRDb250ZXh0SWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlJUQ05ldHdvcmtNYW5hZ2Vy
LmgiCiAjaW5jbHVkZSAiUmVmZXJyZXJQb2xpY3kuaCIKICNpbmNsdWRlICJSZWdpb24uaCIKICNp
bmNsdWRlICJSZWdpc3RyYWJsZURvbWFpbi5oIgpAQCAtNzA4LDYgKzcwOSwxMSBAQCBwdWJsaWM6
CiAgICAgU29ja2V0UHJvdmlkZXIqIHNvY2tldFByb3ZpZGVyKCkgZmluYWw7CiAgICAgUmVmUHRy
PFJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlckNvbm5lY3Rpb24+IGNyZWF0ZVJUQ0RhdGFDaGFu
bmVsUmVtb3RlSGFuZGxlckNvbm5lY3Rpb24oKSBmaW5hbDsKIAorI2lmIEVOQUJMRShXRUJfUlRD
KQorICAgIFJUQ05ldHdvcmtNYW5hZ2VyKiBydGNOZXR3b3JrTWFuYWdlcigpIHsgcmV0dXJuIG1f
cnRjTmV0d29ya01hbmFnZXIuZ2V0KCk7IH0KKyAgICB2b2lkIHNldFJUQ05ldHdvcmtNYW5hZ2Vy
KFJlZjxSVENOZXR3b3JrTWFuYWdlcj4mJiBydGNOZXR3b3JrTWFuYWdlcikgeyBtX3J0Y05ldHdv
cmtNYW5hZ2VyID0gV1RGTW92ZShydGNOZXR3b3JrTWFuYWdlcik7IH0KKyNlbmRpZgorCiAgICAg
Ym9vbCBjYW5OYXZpZ2F0ZShGcmFtZSogdGFyZ2V0RnJhbWUsIGNvbnN0IFVSTCYgZGVzdGluYXRp
b25VUkwgPSBVUkwoKSk7CiAKICAgICBib29sIHVzZXNTdHlsZUJhc2VkRWRpdGFiaWxpdHkoKSBj
b25zdDsKQEAgLTIyMjEsNiArMjIyNywxMCBAQCBwcml2YXRlOgogCiAgICAgTGlzdEhhc2hTZXQ8
UmVmPEVsZW1lbnQ+PiBtX3RvcExheWVyRWxlbWVudHM7CiAgICAgVW5pcXVlUmVmPFdoaXRlc3Bh
Y2VDYWNoZT4gbV93aGl0ZXNwYWNlQ2FjaGU7CisKKyNpZiBFTkFCTEUoV0VCX1JUQykKKyAgICBS
ZWZQdHI8UlRDTmV0d29ya01hbmFnZXI+IG1fcnRjTmV0d29ya01hbmFnZXI7CisjZW5kaWYKIH07
CiAKIEVsZW1lbnQqIGV2ZW50VGFyZ2V0RWxlbWVudEZvckRvY3VtZW50KERvY3VtZW50Kik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NRE5TUmVnaXN0
ZXJFcnJvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTUROU1JlZ2lz
dGVyRXJyb3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43N2M1ZGFmZTMzZmJlNjRlN2E4MjZjMTUxYjZiZTNjYTUy
ZmE1NTVkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vTUROU1JlZ2lzdGVyRXJyb3IuaApAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2VudW0gY2xhc3MgTUROU1JlZ2lzdGVyRXJyb3IgeyBOb3RJbXBsZW1lbnRl
ZCwgQmFkUGFyYW1ldGVyLCBETlNTRCwgSW50ZXJuYWwsIFRpbWVvdXQgfTsKKworfQorCituYW1l
c3BhY2UgV1RGIHsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpNRE5T
UmVnaXN0ZXJFcnJvcj4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAg
IFdlYkNvcmU6Ok1ETlNSZWdpc3RlckVycm9yLAorICAgICAgICBXZWJDb3JlOjpNRE5TUmVnaXN0
ZXJFcnJvcjo6Tm90SW1wbGVtZW50ZWQsCisgICAgICAgIFdlYkNvcmU6Ok1ETlNSZWdpc3RlckVy
cm9yOjpCYWRQYXJhbWV0ZXIsCisgICAgICAgIFdlYkNvcmU6Ok1ETlNSZWdpc3RlckVycm9yOjpE
TlNTRCwKKyAgICAgICAgV2ViQ29yZTo6TUROU1JlZ2lzdGVyRXJyb3I6OkludGVybmFsLAorICAg
ICAgICBXZWJDb3JlOjpNRE5TUmVnaXN0ZXJFcnJvcjo6VGltZW91dAorICAgID47Cit9OworCit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJy
dGMvTGliV2ViUlRDUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcAppbmRleCBjNTk1NjE3ODcyYjIy
YjllYzNmNTMyZDM0NWIwOGMxNmZlNmJmZDZkLi41YWY3OWFkNDg1ODY4NDBmNDg3NTdkZWZlOGEz
YTY2ZTU2ZDNiZWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHAKQEAg
LTI5OSw3ICsyOTksNyBAQCB2b2lkIExpYldlYlJUQ1Byb3ZpZGVyOjplbmFibGVFbnVtZXJhdGlu
Z0FsbE5ldHdvcmtJbnRlcmZhY2VzKCkKICAgICBtX2VuYWJsZUVudW1lcmF0aW5nQWxsTmV0d29y
a0ludGVyZmFjZXMgPSB0cnVlOwogfQogCi1ydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpQZWVy
Q29ubmVjdGlvbkludGVyZmFjZT4gTGliV2ViUlRDUHJvdmlkZXI6OmNyZWF0ZVBlZXJDb25uZWN0
aW9uKHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25PYnNlcnZlciYgb2JzZXJ2ZXIsIHJ0Yzo6UGFja2V0
U29ja2V0RmFjdG9yeSosIHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OlJUQ0NvbmZp
Z3VyYXRpb24mJiBjb25maWd1cmF0aW9uKQorcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6UGVl
ckNvbm5lY3Rpb25JbnRlcmZhY2U+IExpYldlYlJUQ1Byb3ZpZGVyOjpjcmVhdGVQZWVyQ29ubmVj
dGlvbihEb2N1bWVudElkZW50aWZpZXIsIHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25PYnNlcnZlciYg
b2JzZXJ2ZXIsIHJ0Yzo6UGFja2V0U29ja2V0RmFjdG9yeSosIHdlYnJ0Yzo6UGVlckNvbm5lY3Rp
b25JbnRlcmZhY2U6OlJUQ0NvbmZpZ3VyYXRpb24mJiBjb25maWd1cmF0aW9uKQogewogICAgIC8v
IERlZmF1bHQgV0sxIGltcGxlbWVudGF0aW9uLgogICAgIEFTU0VSVChtX3VzZU5ldHdvcmtUaHJl
YWRXaXRoU29ja2V0U2VydmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmgKaW5k
ZXggMTg2MjdlZTU3Zjc1OGEwNDcyMmQxNjE2ZjBmODc2Mjg0MzQxMTViNy4uMzZjNjRhODNjZWY5
Mjg5MjdiMjYwZGE3NzA4NGRhZTI1ZTkxOWU0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1By
b3ZpZGVyLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkRvY3VtZW50SWRlbnRpZmll
ci5oIgogI2luY2x1ZGUgIkxpYldlYlJUQ01hY3Jvcy5oIgorI2luY2x1ZGUgIk1ETlNSZWdpc3Rl
ckVycm9yLmgiCiAjaW5jbHVkZSAiUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyQ29ubmVjdGlv
bi5oIgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9F
eHBlY3RlZC5oPgpAQCAtNjYsOCArNjcsNiBAQCBjbGFzcyBSZWdpc3RyYWJsZURvbWFpbjsKIHN0
cnVjdCBQZWVyQ29ubmVjdGlvbkZhY3RvcnlBbmRUaHJlYWRzOwogc3RydWN0IFJUQ1J0cENhcGFi
aWxpdGllczsKIAotZW51bSBjbGFzcyBNRE5TUmVnaXN0ZXJFcnJvciB7IE5vdEltcGxlbWVudGVk
LCBCYWRQYXJhbWV0ZXIsIEROU1NELCBJbnRlcm5hbCwgVGltZW91dCB9OwotCiBjbGFzcyBXRUJD
T1JFX0VYUE9SVCBMaWJXZWJSVENQcm92aWRlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CkBAIC04NiwxOCArODUsMTAgQEAgcHVibGljOgogICAgIHVzaW5nIElQQWRk
cmVzc09yRXJyb3IgPSBFeHBlY3RlZDxTdHJpbmcsIE1ETlNSZWdpc3RlckVycm9yPjsKICAgICB1
c2luZyBNRE5TTmFtZU9yRXJyb3IgPSBFeHBlY3RlZDxTdHJpbmcsIE1ETlNSZWdpc3RlckVycm9y
PjsKIAotICAgIHZpcnR1YWwgdm9pZCB1bnJlZ2lzdGVyTUROU05hbWVzKERvY3VtZW50SWRlbnRp
ZmllcikgeyB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJNRE5TTmFtZShEb2N1bWVudElk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgaXBBZGRyZXNzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KE1ETlNOYW1lT3JFcnJvciYmKT4mJiBjYWxsYmFjaykKLSAgICB7Ci0gICAgICAgIFVOVVNFRF9Q
QVJBTShpcEFkZHJlc3MpOwotICAgICAgICBjYWxsYmFjayhtYWtlVW5leHBlY3RlZChNRE5TUmVn
aXN0ZXJFcnJvcjo6Tm90SW1wbGVtZW50ZWQpKTsKLSAgICB9Ci0KICAgICB2aXJ0dWFsIFJlZlB0
cjxSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXJDb25uZWN0aW9uPiBjcmVhdGVSVENEYXRhQ2hh
bm5lbFJlbW90ZUhhbmRsZXJDb25uZWN0aW9uKCkgeyByZXR1cm4gbnVsbHB0cjsgfQogCiAjaWYg
VVNFKExJQldFQlJUQykKLSAgICB2aXJ0dWFsIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlBl
ZXJDb25uZWN0aW9uSW50ZXJmYWNlPiBjcmVhdGVQZWVyQ29ubmVjdGlvbih3ZWJydGM6OlBlZXJD
b25uZWN0aW9uT2JzZXJ2ZXImLCBydGM6OlBhY2tldFNvY2tldEZhY3RvcnkqLCB3ZWJydGM6OlBl
ZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpSVENDb25maWd1cmF0aW9uJiYpOworICAgIHZpcnR1YWwg
cnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U+IGNyZWF0
ZVBlZXJDb25uZWN0aW9uKERvY3VtZW50SWRlbnRpZmllciwgd2VicnRjOjpQZWVyQ29ubmVjdGlv
bk9ic2VydmVyJiwgcnRjOjpQYWNrZXRTb2NrZXRGYWN0b3J5Kiwgd2VicnRjOjpQZWVyQ29ubmVj
dGlvbkludGVyZmFjZTo6UlRDQ29uZmlndXJhdGlvbiYmKTsKIAogICAgIHdlYnJ0Yzo6UGVlckNv
bm5lY3Rpb25GYWN0b3J5SW50ZXJmYWNlKiBmYWN0b3J5KCk7CiAKQEAgLTEyMyw2ICsxMTQsOCBA
QCBwdWJsaWM6CiAgICAgYm9vbCBpc1N1cHBvcnRpbmdWUDlWVEIoKSBjb25zdCB7IHJldHVybiBt
X3N1cHBvcnRzVlA5VlRCOyB9CiAgICAgdmlydHVhbCB2b2lkIGRpc2FibGVOb25Mb2NhbGhvc3RD
b25uZWN0aW9ucygpIHsgbV9kaXNhYmxlTm9uTG9jYWxob3N0Q29ubmVjdGlvbnMgPSB0cnVlOyB9
CiAKKyAgICBib29sIGlzU3VwcG9ydGluZ01ETlMoKSBjb25zdCB7IHJldHVybiBtX3N1cHBvcnRz
TUROUzsgfQorCiAgICAgLy8gQ2FsbGJhY2sgaXMgZXhlY3V0ZWQgb24gYSBiYWNrZ3JvdW5kIHRo
cmVhZC4KICAgICB2b2lkIHByZXBhcmVDZXJ0aWZpY2F0ZUdlbmVyYXRvcihGdW5jdGlvbjx2b2lk
KHJ0Yzo6UlRDQ2VydGlmaWNhdGVHZW5lcmF0b3ImKT4mJik7CiAKQEAgLTE2OCw2ICsxNjEsNyBA
QCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBtX3N1cHBvcnRzVlA5UHJvZmlsZTIgeyBmYWxzZSB9Owog
ICAgIGJvb2wgbV9zdXBwb3J0c1ZQOVZUQiB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3VzZURUTFMx
MCB7IGZhbHNlIH07CisgICAgYm9vbCBtX3N1cHBvcnRzTUROUyB7IGZhbHNlIH07CiAjZW5kaWYK
IH07CiAKQEAgLTE4MCwxNiArMTc0LDMgQEAgaW5saW5lIHZvaWQgTGliV2ViUlRDUHJvdmlkZXI6
OnNldFZQOVN1cHBvcnQoYm9vbCBzdXBwb3J0c1ZQOVByb2ZpbGUwLCBib29sIHN1cHAKICNlbmRp
ZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLW5hbWVzcGFjZSBXVEYgewotdGVtcGxhdGU8
PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpNRE5TUmVnaXN0ZXJFcnJvcj4gewotICAgIHVz
aW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8Ci0gICAgICAgIFdlYkNvcmU6Ok1ETlNSZWdpc3RlckVy
cm9yLAotICAgICAgICBXZWJDb3JlOjpNRE5TUmVnaXN0ZXJFcnJvcjo6Tm90SW1wbGVtZW50ZWQs
Ci0gICAgICAgIFdlYkNvcmU6Ok1ETlNSZWdpc3RlckVycm9yOjpCYWRQYXJhbWV0ZXIsCi0gICAg
ICAgIFdlYkNvcmU6Ok1ETlNSZWdpc3RlckVycm9yOjpETlNTRCwKLSAgICAgICAgV2ViQ29yZTo6
TUROU1JlZ2lzdGVyRXJyb3I6OkludGVybmFsLAotICAgICAgICBXZWJDb3JlOjpNRE5TUmVnaXN0
ZXJFcnJvcjo6VGltZW91dAotICAgID47Ci19OwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya01ETlNSZWdpc3Rlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrTUROU1JlZ2lzdGVyLmNwcAppbmRl
eCBmYzQzNTExMmY1YmNlMGFhMzEyMjBlNDEyZmNlNGM1OTgzZjI4YjA3Li43YWExN2MxMzFmMTYy
Njg0Y2QyODNhN2EwZTRjMWQxMzFiZWU4NjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrTUROU1JlZ2lzdGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrTUROU1JlZ2lzdGVyLmNwcApAQCAt
OTgsMjcgKzk4LDI5IEBAIHN0YXRpYyB2b2lkIHJlZ2lzdGVyTUROU05hbWVDYWxsYmFjayhETlNT
ZXJ2aWNlUmVmLCBETlNSZWNvcmRSZWYgcmVjb3JkLCBETlNTZXJ2CiAgICAgTUROU19SRUxFQVNF
X0xPR19JTl9DQUxMQkFDSyhyZXF1ZXN0LT5zZXNzaW9uSUQsICJyZWdpc3Rlck1ETlNOYW1lQ2Fs
bGJhY2sgd2l0aCBlcnJvciAlZCIsIGVycm9yQ29kZSk7CiAKICAgICBpZiAoZXJyb3JDb2RlKSB7
Ci0gICAgICAgIHJlcXVlc3QtPmNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OldlYk1ETlNSZWdp
c3Rlcjo6RmluaXNoZWRSZWdpc3RlcmluZ01ETlNOYW1lIHsgcmVxdWVzdC0+cmVxdWVzdElkZW50
aWZpZXIsIG1ha2VVbmV4cGVjdGVkKFdlYkNvcmU6Ok1ETlNSZWdpc3RlckVycm9yOjpETlNTRCkg
fSwgMCk7CisgICAgICAgIHJlcXVlc3QtPmNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OldlYk1E
TlNSZWdpc3Rlcjo6RmluaXNoZWRSZWdpc3RlcmluZ01ETlNOYW1lIHsgcmVxdWVzdC0+cmVxdWVz
dElkZW50aWZpZXIsIHJlcXVlc3QtPm5hbWUsIFdlYkNvcmU6Ok1ETlNSZWdpc3RlckVycm9yOjpE
TlNTRCB9LCAwKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICByZXF1ZXN0LT5jb25uZWN0
aW9uLT5zZW5kKE1lc3NhZ2VzOjpXZWJNRE5TUmVnaXN0ZXI6OkZpbmlzaGVkUmVnaXN0ZXJpbmdN
RE5TTmFtZSB7IHJlcXVlc3QtPnJlcXVlc3RJZGVudGlmaWVyLCByZXF1ZXN0LT5uYW1lIH0sIDAp
OworICAgIHJlcXVlc3QtPmNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OldlYk1ETlNSZWdpc3Rl
cjo6RmluaXNoZWRSZWdpc3RlcmluZ01ETlNOYW1lIHsgcmVxdWVzdC0+cmVxdWVzdElkZW50aWZp
ZXIsIHJlcXVlc3QtPm5hbWUsIHsgfSB9LCAwKTsKIH0KIAogdm9pZCBOZXR3b3JrTUROU1JlZ2lz
dGVyOjpyZWdpc3Rlck1ETlNOYW1lKE1ETlNSZWdpc3RlcklkZW50aWZpZXIgcmVxdWVzdElkZW50
aWZpZXIsIFdlYkNvcmU6OkRvY3VtZW50SWRlbnRpZmllciBkb2N1bWVudElkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYgaXBBZGRyZXNzKQogeworICAgIGF1dG8gbmFtZSA9IG1ha2VTdHJpbmcoY3Jl
YXRlQ2Fub25pY2FsVVVJRFN0cmluZygpLCAiLmxvY2FsIik7CisKICAgICBETlNTZXJ2aWNlUmVm
IHNlcnZpY2U7CiAgICAgYXV0byBpdGVyYXRvciA9IG1fc2VydmljZXMuZmluZChkb2N1bWVudElk
ZW50aWZpZXIpOwogICAgIGlmIChpdGVyYXRvciA9PSBtX3NlcnZpY2VzLmVuZCgpKSB7CiAgICAg
ICAgIGF1dG8gZXJyb3IgPSBETlNTZXJ2aWNlQ3JlYXRlQ29ubmVjdGlvbigmc2VydmljZSk7CiAg
ICAgICAgIGlmIChlcnJvcikgewogICAgICAgICAgICAgTUROU19SRUxFQVNFX0xPRygicmVnaXN0
ZXJNRE5TTmFtZSBETlNTZXJ2aWNlQ3JlYXRlQ29ubmVjdGlvbiBlcnJvciAlZCIsIGVycm9yKTsK
LSAgICAgICAgICAgIG1fY29ubmVjdGlvbi5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6V2Vi
TUROU1JlZ2lzdGVyOjpGaW5pc2hlZFJlZ2lzdGVyaW5nTUROU05hbWUgeyByZXF1ZXN0SWRlbnRp
ZmllciwgbWFrZVVuZXhwZWN0ZWQoV2ViQ29yZTo6TUROU1JlZ2lzdGVyRXJyb3I6OkROU1NEKSB9
LCAwKTsKKyAgICAgICAgICAgIG1fY29ubmVjdGlvbi5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdl
czo6V2ViTUROU1JlZ2lzdGVyOjpGaW5pc2hlZFJlZ2lzdGVyaW5nTUROU05hbWUgeyByZXF1ZXN0
SWRlbnRpZmllciwgbmFtZSwgV2ViQ29yZTo6TUROU1JlZ2lzdGVyRXJyb3I6OkROU1NEIH0sIDAp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGVycm9yID0gRE5TU2Vy
dmljZVNldERpc3BhdGNoUXVldWUoc2VydmljZSwgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSk7
CiAgICAgICAgIGlmIChlcnJvcikgewogICAgICAgICAgICAgTUROU19SRUxFQVNFX0xPRygicmVn
aXN0ZXJNRE5TTmFtZSBETlNTZXJ2aWNlQ3JlYXRlQ29ubmVjdGlvbiBlcnJvciAlZCIsIGVycm9y
KTsKLSAgICAgICAgICAgIG1fY29ubmVjdGlvbi5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6
V2ViTUROU1JlZ2lzdGVyOjpGaW5pc2hlZFJlZ2lzdGVyaW5nTUROU05hbWUgeyByZXF1ZXN0SWRl
bnRpZmllciwgbWFrZVVuZXhwZWN0ZWQoV2ViQ29yZTo6TUROU1JlZ2lzdGVyRXJyb3I6OkROU1NE
KSB9LCAwKTsKKyAgICAgICAgICAgIG1fY29ubmVjdGlvbi5jb25uZWN0aW9uKCkuc2VuZChNZXNz
YWdlczo6V2ViTUROU1JlZ2lzdGVyOjpGaW5pc2hlZFJlZ2lzdGVyaW5nTUROU05hbWUgeyByZXF1
ZXN0SWRlbnRpZmllciwgbmFtZSwgV2ViQ29yZTo6TUROU1JlZ2lzdGVyRXJyb3I6OkROU1NEIH0s
IDApOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIEFTU0VSVChzZXJ2
aWNlKTsKQEAgLTEyNiwxMyArMTI4LDEyIEBAIHZvaWQgTmV0d29ya01ETlNSZWdpc3Rlcjo6cmVn
aXN0ZXJNRE5TTmFtZShNRE5TUmVnaXN0ZXJJZGVudGlmaWVyIHJlcXVlc3RJZGVudGlmCiAgICAg
fSBlbHNlCiAgICAgICAgIHNlcnZpY2UgPSBpdGVyYXRvci0+dmFsdWU7CiAKLSAgICBhdXRvIG5h
bWUgPSBtYWtlU3RyaW5nKGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSwgIi5sb2NhbCIpOwot
CiAgICAgYXV0byBpcCA9IGluZXRfYWRkcihpcEFkZHJlc3MudXRmOCgpLmRhdGEoKSk7CiAKKyAg
ICAvLyBGSVhNRTogQWRkIElQdjYgc3VwcG9ydC4KICAgICBpZiAoaXAgPT0gKCBpbl9hZGRyX3Qp
KC0xKSkgewogICAgICAgICBNRE5TX1JFTEVBU0VfTE9HKCJyZWdpc3Rlck1ETlNOYW1lIGluZXRf
YWRkciBlcnJvciIpOwotICAgICAgICBtX2Nvbm5lY3Rpb24uY29ubmVjdGlvbigpLnNlbmQoTWVz
c2FnZXM6OldlYk1ETlNSZWdpc3Rlcjo6RmluaXNoZWRSZWdpc3RlcmluZ01ETlNOYW1lIHsgcmVx
dWVzdElkZW50aWZpZXIsIG1ha2VVbmV4cGVjdGVkKFdlYkNvcmU6Ok1ETlNSZWdpc3RlckVycm9y
OjpCYWRQYXJhbWV0ZXIpIH0sIDApOworICAgICAgICBtX2Nvbm5lY3Rpb24uY29ubmVjdGlvbigp
LnNlbmQoTWVzc2FnZXM6OldlYk1ETlNSZWdpc3Rlcjo6RmluaXNoZWRSZWdpc3RlcmluZ01ETlNO
YW1lIHsgcmVxdWVzdElkZW50aWZpZXIsIG5hbWUsIFdlYkNvcmU6Ok1ETlNSZWdpc3RlckVycm9y
OjpCYWRQYXJhbWV0ZXIgfSwgMCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTE1Niw3
ICsxNTcsNyBAQCB2b2lkIE5ldHdvcmtNRE5TUmVnaXN0ZXI6OnJlZ2lzdGVyTUROU05hbWUoTURO
U1JlZ2lzdGVySWRlbnRpZmllciByZXF1ZXN0SWRlbnRpZgogICAgICAgICByZWludGVycHJldF9j
YXN0PHZvaWQqPihwZW5kaW5nUmVnaXN0cmF0aW9uUmVxdWVzdENvdW50KSk7CiAgICAgaWYgKGVy
cm9yKSB7CiAgICAgICAgIE1ETlNfUkVMRUFTRV9MT0coInJlZ2lzdGVyTUROU05hbWUgRE5TU2Vy
dmljZVJlZ2lzdGVyUmVjb3JkIGVycm9yICVkIiwgZXJyb3IpOwotICAgICAgICBtX2Nvbm5lY3Rp
b24uY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OldlYk1ETlNSZWdpc3Rlcjo6RmluaXNoZWRS
ZWdpc3RlcmluZ01ETlNOYW1lIHsgcmVxdWVzdElkZW50aWZpZXIsIG1ha2VVbmV4cGVjdGVkKFdl
YkNvcmU6Ok1ETlNSZWdpc3RlckVycm9yOjpETlNTRCkgfSwgMCk7CisgICAgICAgIG1fY29ubmVj
dGlvbi5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6V2ViTUROU1JlZ2lzdGVyOjpGaW5pc2hl
ZFJlZ2lzdGVyaW5nTUROU05hbWUgeyByZXF1ZXN0SWRlbnRpZmllciwgcGVuZGluZ1JlcXVlc3Qt
Pm5hbWUsIFdlYkNvcmU6Ok1ETlNSZWdpc3RlckVycm9yOjpETlNTRCB9LCAwKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KICAgICBwZW5kaW5nUmVnaXN0cmF0aW9uUmVxdWVzdHMoKS5hZGQocGVu
ZGluZ1JlZ2lzdHJhdGlvblJlcXVlc3RDb3VudCsrLCBXVEZNb3ZlKHBlbmRpbmdSZXF1ZXN0KSk7
CkBAIC0xNzEsNyArMTcyLDkgQEAgdm9pZCBOZXR3b3JrTUROU1JlZ2lzdGVyOjp1bnJlZ2lzdGVy
TUROU05hbWVzKFdlYkNvcmU6OkRvY3VtZW50SWRlbnRpZmllcikKIHZvaWQgTmV0d29ya01ETlNS
ZWdpc3Rlcjo6cmVnaXN0ZXJNRE5TTmFtZShNRE5TUmVnaXN0ZXJJZGVudGlmaWVyIHJlcXVlc3RJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpEb2N1bWVudElkZW50aWZpZXIgZG9jdW1lbnRJZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmIGlwQWRkcmVzcykKIHsKICAgICBNRE5TX1JFTEVBU0VfTE9HKCJyZWdp
c3Rlck1ETlNOYW1lIG5vdCBpbXBsZW1lbnRlZCIpOwotICAgIG1fY29ubmVjdGlvbi5jb25uZWN0
aW9uKCkuc2VuZChNZXNzYWdlczo6V2ViTUROU1JlZ2lzdGVyOjpGaW5pc2hlZFJlZ2lzdGVyaW5n
TUROU05hbWUgeyByZXF1ZXN0SWRlbnRpZmllciwgbWFrZVVuZXhwZWN0ZWQoV2ViQ29yZTo6TURO
U1JlZ2lzdGVyRXJyb3I6Ok5vdEltcGxlbWVudGVkKSB9LCAwKTsKKyAgICBhdXRvIG5hbWUgPSBt
YWtlU3RyaW5nKGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSwgIi5sb2NhbCIpOworCisgICAg
bV9jb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpXZWJNRE5TUmVnaXN0ZXI6
OkZpbmlzaGVkUmVnaXN0ZXJpbmdNRE5TTmFtZSB7IHJlcXVlc3RJZGVudGlmaWVyLCBuYW1lLCBX
ZWJDb3JlOjpNRE5TUmVnaXN0ZXJFcnJvcjo6Tm90SW1wbGVtZW50ZWQgfSwgMCk7CiB9CiAKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJL
aXQvU291cmNlcy50eHQKaW5kZXggN2RiYWNkMThjMGMyMThmMjhkOGNkNDQwNTAyNzhlNDg5OGRm
MWM1Yy4uNGU1ZTUxNGQ2NTYzODYyNjViOWIzNzk1Nzg0ODI0ZWUyZTlmNTYzZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMu
dHh0CkBAIC02MzksNiArNjM5LDcgQEAgV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFByb3Zp
ZGVyLmNwcAogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0cmVhbS5jcHAKIAogV2ViUHJv
Y2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENOZXR3b3JrLmNwcAorV2ViUHJvY2Vzcy9OZXR3
b3JrL3dlYnJ0Yy9MaWJXZWJSVENOZXR3b3JrTWFuYWdlci5jcHAKIFdlYlByb2Nlc3MvTmV0d29y
ay93ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuY3BwCiBXZWJQcm9jZXNzL05ldHdvcmsvd2VicnRj
L0xpYldlYlJUQ1Jlc29sdmVyLmNwcAogV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJS
VENTb2NrZXQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCA5ZTQxNmVmMzc0NDRlNDJlYmU2OGMwZTEwMDI0YmNlY2ZmYjI3Zjg4Li4y
NzE0ZmZhZWZiMzgwNTg1ZDc1Zjc2NTBjNDBjMDdjZTNiNWRkZmNkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM4NTQsNiArMzg1NCw4
IEBACiAJCTQxQjdFRDZGMjA2OTY1OTAwMDg3RDg1MyAvKiBOZXR3b3JrTUROU1JlZ2lzdGVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5ldHdvcmtNRE5TUmVnaXN0
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUI3RUQ3MDIwNjk2NTkwMDA4
N0Q4NTMgLyogTmV0d29ya01ETlNSZWdpc3Rlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBOZXR3b3JrTUROU1JlZ2lzdGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQxQjdFRDcxMjA2OTY1OTAwMDg3RDg1MyAvKiBOZXR3b3JrTUROU1JlZ2lzdGVyLm1lc3Nh
Z2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE5ldHdvcmtNRE5TUmVnaXN0ZXIubWVzc2Fn
ZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxQzE0QkMyMjZERTZBMkYwMDY4
NUJGNSAvKiBMaWJXZWJSVENOZXR3b3JrTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBM
aWJXZWJSVENOZXR3b3JrTWFuYWdlci5jcHA7IHBhdGggPSBOZXR3b3JrL3dlYnJ0Yy9MaWJXZWJS
VENOZXR3b3JrTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxQzE0
QkMzMjZERTZBMkYwMDY4NUJGNSAvKiBMaWJXZWJSVENOZXR3b3JrTWFuYWdlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBMaWJXZWJSVENOZXR3b3JrTWFuYWdlci5oOyBwYXRoID0gTmV0d29yay93ZWJydGMv
TGliV2ViUlRDTmV0d29ya01hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDFDM0I4ODUyNjQ0NEFBQjAwNEVENERFIC8qIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVy
SW50ZXJuYWxVbml0TWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDFDM0I4ODYyNjQ0NEFBQzAwNEVENERFIC8qIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVySW50ZXJuYWxVbml0TWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBdWRpb01l
ZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0MUMzQjg4NzI2NDQ0QUQzMDA0RUQ0REUgLyogQXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRJZGVudGlmaWVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0SWRlbnRpZmllci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODUxOCw2ICs4NTIwLDggQEAKIAkJCQk0
MTZGODA4OTI0NUM3RkY1MDBCNjhGMDIgLyogTGliV2ViUlRDTmV0d29yay5jcHAgKi8sCiAJCQkJ
NDExQjIyNjIxRTM3MTI0NDAwNEY3MzYzIC8qIExpYldlYlJUQ05ldHdvcmsuaCAqLywKIAkJCQk0
MTZGODA4NjI0NUIzOTc0MDBCNjhGMDIgLyogTGliV2ViUlRDTmV0d29yay5tZXNzYWdlcy5pbiAq
LywKKwkJCQk0MUMxNEJDMjI2REU2QTJGMDA2ODVCRjUgLyogTGliV2ViUlRDTmV0d29ya01hbmFn
ZXIuY3BwICovLAorCQkJCTQxQzE0QkMzMjZERTZBMkYwMDY4NUJGNSAvKiBMaWJXZWJSVENOZXR3
b3JrTWFuYWdlci5oICovLAogCQkJCTQxMzA3NUE3MURFODVFRTcwMDM5RUM2OSAvKiBMaWJXZWJS
VENQcm92aWRlci5jcHAgKi8sCiAJCQkJNDEzMDc1QTgxREU4NUVFNzAwMzlFQzY5IC8qIExpYldl
YlJUQ1Byb3ZpZGVyLmggKi8sCiAJCQkJNDFGQUY1RjcxRTNDMEI0NzAwMUFFNjc4IC8qIExpYldl
YlJUQ1Jlc29sdmVyLmNwcCAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENOZXR3b3JrTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDTmV0d29ya01hbmFnZXIuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjVjY2Y3YWUzNzY0YWE2MzBiMzhjMzU1NWY1YTZjZjg0ZjdlMzE5OWUKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMv
TGliV2ViUlRDTmV0d29ya01hbmFnZXIuY3BwCkBAIC0wLDAgKzEsMTU4IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxpYldlYlJUQ05ldHdvcmtNYW5hZ2Vy
LmgiCisKKyNpZiBVU0UoTElCV0VCUlRDKQorCisjaW5jbHVkZSAiTGliV2ViUlRDTmV0d29yay5o
IgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVk
ZSA8V2ViQ29yZS9Eb2N1bWVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTGliV2ViUlRDVXRpbHMu
aD4KKworbmFtZXNwYWNlIFdlYktpdCB7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworTGli
V2ViUlRDTmV0d29ya01hbmFnZXIqIExpYldlYlJUQ05ldHdvcmtNYW5hZ2VyOjpnZXRPckNyZWF0
ZShXZWJDb3JlOjpEb2N1bWVudElkZW50aWZpZXIgaWRlbnRpZmllcikKK3sKKyAgICBhdXRvKiBk
b2N1bWVudCA9IERvY3VtZW50OjphbGxEb2N1bWVudHNNYXAoKS5nZXQoaWRlbnRpZmllcik7Cisg
ICAgaWYgKCFkb2N1bWVudCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvKiBu
ZXR3b3JrTWFuYWdlciA9IHN0YXRpY19jYXN0PExpYldlYlJUQ05ldHdvcmtNYW5hZ2VyKj4oZG9j
dW1lbnQtPnJ0Y05ldHdvcmtNYW5hZ2VyKCkpOworICAgIGlmICghbmV0d29ya01hbmFnZXIpIHsK
KyAgICAgICAgYXV0byBuZXdOZXR3b3JrTWFuYWdlciA9IGFkb3B0UmVmKCpuZXcgTGliV2ViUlRD
TmV0d29ya01hbmFnZXIoaWRlbnRpZmllcikpOworICAgICAgICBuZXR3b3JrTWFuYWdlciA9IG5l
d05ldHdvcmtNYW5hZ2VyLnB0cigpOworICAgICAgICBkb2N1bWVudC0+c2V0UlRDTmV0d29ya01h
bmFnZXIoV1RGTW92ZShuZXdOZXR3b3JrTWFuYWdlcikpOworICAgIH0KKworICAgIHJldHVybiBu
ZXR3b3JrTWFuYWdlcjsKK30KKworTGliV2ViUlRDTmV0d29ya01hbmFnZXI6OkxpYldlYlJUQ05l
dHdvcmtNYW5hZ2VyKFdlYkNvcmU6OkRvY3VtZW50SWRlbnRpZmllciBkb2N1bWVudElkZW50aWZp
ZXIpCisgICAgOiBtX2RvY3VtZW50SWRlbnRpZmllcihkb2N1bWVudElkZW50aWZpZXIpCit7Cisg
ICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkubGliV2ViUlRDTmV0d29yaygpLm1vbml0b3IoKS5h
ZGRPYnNlcnZlcigqdGhpcyk7Cit9CisKK0xpYldlYlJUQ05ldHdvcmtNYW5hZ2VyOjp+TGliV2Vi
UlRDTmV0d29ya01hbmFnZXIoKQoreworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmxpYldl
YlJUQ05ldHdvcmsoKS5tb25pdG9yKCkucmVtb3ZlT2JzZXJ2ZXIoKnRoaXMpOworfQorCit2b2lk
IExpYldlYlJUQ05ldHdvcmtNYW5hZ2VyOjp1bnJlZ2lzdGVyTUROU05hbWVzKCkKK3sKKyAgICBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5saWJXZWJSVENOZXR3b3JrKCkubWRuc1JlZ2lzdGVyKCku
dW5yZWdpc3Rlck1ETlNOYW1lcyhtX2RvY3VtZW50SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgTGli
V2ViUlRDTmV0d29ya01hbmFnZXI6OlN0YXJ0VXBkYXRpbmcoKQoreworICAgIGNhbGxPbk1haW5S
dW5Mb29wKFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXSB7CisgICAgICAgIGlm
ICghd2Vha1RoaXMpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgYXV0byYgbW9uaXRv
ciA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmxpYldlYlJUQ05ldHdvcmsoKS5tb25pdG9yKCk7
CisgICAgICAgIGlmIChtX3JlY2VpdmVkTmV0d29ya0xpc3QpIHsKKyAgICAgICAgICAgIFdlYkNv
cmU6OkxpYldlYlJUQ1Byb3ZpZGVyOjpjYWxsT25XZWJSVENOZXR3b3JrVGhyZWFkKFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKKyAgICAgICAgICAgICAgICBTaWduYWxO
ZXR3b3Jrc0NoYW5nZWQoKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9IGVsc2UgaWYgKG1v
bml0b3IuZGlkUmVjZWl2ZU5ldHdvcmtMaXN0KCkpCisgICAgICAgICAgICBuZXR3b3Jrc0NoYW5n
ZWQobW9uaXRvci5uZXR3b3JrTGlzdCgpICwgbW9uaXRvci5pcHY0KCksIG1vbml0b3IuaXB2Nigp
KTsKKyAgICAgICAgbW9uaXRvci5zdGFydFVwZGF0aW5nKCk7CisgICAgfSk7Cit9CisKK3ZvaWQg
TGliV2ViUlRDTmV0d29ya01hbmFnZXI6OlN0b3BVcGRhdGluZygpCit7CisgICAgY2FsbE9uTWFp
blJ1bkxvb3AoW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldIHsKKyAgICAgICAgaWYgKCF3
ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkubGliV2ViUlRDTmV0d29yaygpLm1vbml0b3IoKS5zdG9wVXBkYXRpbmcoKTsKKyAgICB9
KTsKK30KKword2VicnRjOjpNZG5zUmVzcG9uZGVySW50ZXJmYWNlKiBMaWJXZWJSVENOZXR3b3Jr
TWFuYWdlcjo6R2V0TWRuc1Jlc3BvbmRlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fdXNlTURO
U0NhbmRpZGF0ZXMgPyBjb25zdF9jYXN0PExpYldlYlJUQ05ldHdvcmtNYW5hZ2VyKj4odGhpcykg
OiBudWxscHRyOworfQorCit2b2lkIExpYldlYlJUQ05ldHdvcmtNYW5hZ2VyOjpuZXR3b3Jrc0No
YW5nZWQoY29uc3QgVmVjdG9yPFJUQ05ldHdvcms+JiBuZXR3b3JrcywgY29uc3QgUlRDTmV0d29y
azo6SVBBZGRyZXNzJiBpcHY0LCBjb25zdCBSVENOZXR3b3JrOjpJUEFkZHJlc3MmIGlwdjYpCit7
CisgICAgYm9vbCBmb3JjZVNpZ25hbGluZyA9ICFtX3JlY2VpdmVkTmV0d29ya0xpc3Q7CisgICAg
bV9yZWNlaXZlZE5ldHdvcmtMaXN0ID0gdHJ1ZTsKKworICAgIFdlYkNvcmU6OkxpYldlYlJUQ1By
b3ZpZGVyOjpjYWxsT25XZWJSVENOZXR3b3JrVGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyksIG5ldHdvcmtzLCBpcHY0LCBpcHY2LCBmb3JjZVNpZ25hbGluZ10gewor
ICAgICAgICBzdGQ6OnZlY3RvcjxydGM6Ok5ldHdvcmsqPiBuZXR3b3JrTGlzdChuZXR3b3Jrcy5z
aXplKCkpOworICAgICAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgbmV0d29ya3Mu
c2l6ZSgpOyArK2luZGV4KQorICAgICAgICAgICAgbmV0d29ya0xpc3RbaW5kZXhdID0gbmV3IHJ0
Yzo6TmV0d29yayhuZXR3b3Jrc1tpbmRleF0udmFsdWUoKSk7CisKKyAgICAgICAgYm9vbCBoYXND
aGFuZ2VkOworICAgICAgICBzZXRfZGVmYXVsdF9sb2NhbF9hZGRyZXNzZXMoaXB2NC52YWx1ZSwg
aXB2Ni52YWx1ZSk7CisgICAgICAgIE1lcmdlTmV0d29ya0xpc3QobmV0d29ya0xpc3QsICZoYXND
aGFuZ2VkKTsKKyAgICAgICAgaWYgKGhhc0NoYW5nZWQgfHwgZm9yY2VTaWduYWxpbmcpCisgICAg
ICAgICAgICBTaWduYWxOZXR3b3Jrc0NoYW5nZWQoKTsKKyAgICB9KTsKKworfQorCit2b2lkIExp
YldlYlJUQ05ldHdvcmtNYW5hZ2VyOjpuZXR3b3JrUHJvY2Vzc0NyYXNoZWQoKQoreworICAgIG1f
cmVjZWl2ZWROZXR3b3JrTGlzdCA9IGZhbHNlOworICAgIGlmICghV2ViQ29yZTo6TGliV2ViUlRD
UHJvdmlkZXI6Omhhc1dlYlJUQ1RocmVhZHMoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8g
SW4gY2FzZSB3ZSBoYXZlIGNsaWVudHMgd2FpdGluZyBmb3IgbmV0d29ya3NDaGFuZ2VkLCB3ZSBj
YWxsIFNpZ25hbE5ldHdvcmtzQ2hhbmdlZCB0byBtYWtlIHN1cmUgdGhleSBkbyBub3Qgd2FpdCBm
b3Igbm90aGluZy4KKyAgICBXZWJDb3JlOjpMaWJXZWJSVENQcm92aWRlcjo6Y2FsbE9uV2ViUlRD
TmV0d29ya1RocmVhZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7Cisg
ICAgICAgIFNpZ25hbE5ldHdvcmtzQ2hhbmdlZCgpOworICAgIH0pOworfQorCit2b2lkIExpYldl
YlJUQ05ldHdvcmtNYW5hZ2VyOjpDcmVhdGVOYW1lRm9yQWRkcmVzcyhjb25zdCBydGM6OklQQWRk
cmVzcyYgYWRkcmVzcywgTmFtZUNyZWF0ZWRDYWxsYmFjayBjYWxsYmFjaykKK3sKKyAgICBjYWxs
T25NYWluUnVuTG9vcChbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgYWRkcmVzcywgY2Fs
bGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCF3ZWFr
VGhpcykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5saWJXZWJSVENOZXR3b3JrKCkubWRuc1JlZ2lzdGVyKCkucmVnaXN0ZXJNRE5TTmFtZSh3
ZWFrVGhpcy0+bV9kb2N1bWVudElkZW50aWZpZXIsIGZyb21TdGRTdHJpbmcoYWRkcmVzcy5Ub1N0
cmluZygpKSwgW2FkZHJlc3MsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGF1dG8gbmFt
ZSwgYXV0byBlcnJvcikgbXV0YWJsZSB7CisgICAgICAgICAgICBXZWJDb3JlOjpMaWJXZWJSVENQ
cm92aWRlcjo6Y2FsbE9uV2ViUlRDTmV0d29ya1RocmVhZChbYWRkcmVzcywgY2FsbGJhY2sgPSBX
VEZNb3ZlKGNhbGxiYWNrKSwgbmFtZSA9IFdURk1vdmUobmFtZSkuaXNvbGF0ZWRDb3B5KCksIGVy
cm9yXSB7CisgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUYoZXJyb3IsIFdlYlJU
QywgIk1ETlMgcmVnaXN0cmF0aW9uIG9mIGEgaG9zdCBjYW5kaWRhdGUgZmFpbGVkIHdpdGggZXJy
b3IgJWQiLCAqZXJyb3IpOworICAgICAgICAgICAgICAgIC8vIEluIGNhc2Ugb2YgZXJyb3IsIHdl
IHByb3ZpZGUgdGhlIG5hbWUgdG8gbGV0IGdhdGhlcmluZyBjb21wbGV0ZS4KKyAgICAgICAgICAg
ICAgICBjYWxsYmFjayhhZGRyZXNzLCBuYW1lLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAg
fSk7CisgICAgICAgIH0pOworICAgIH0pOworfQorCit2b2lkIExpYldlYlJUQ05ldHdvcmtNYW5h
Z2VyOjpSZW1vdmVOYW1lRm9yQWRkcmVzcyhjb25zdCBydGM6OklQQWRkcmVzcyYsIE5hbWVSZW1v
dmVkQ2FsbGJhY2spCit7CisgICAgLy8gTGliV2ViUlRDIGJhY2tlbmQgZGVmaW5lcyB0aGlzIG1l
dGhvZCBidXQgZG9lcyBub3QgY2FsbCBpdC4KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBVU0UoTElCV0VCUlRDKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJU
Q05ldHdvcmtNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJy
dGMvTGliV2ViUlRDTmV0d29ya01hbmFnZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yODZkYTY3MjIxYjA1M2Fm
OWNhM2M0MGZiMjU2ZmJlNjZhNzkxMWEyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ05ldHdvcmtNYW5hZ2VyLmgKQEAg
LTAsMCArMSw3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgVVNFKExJQldF
QlJUQykKKworI2luY2x1ZGUgIldlYlJUQ01vbml0b3IuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0Rv
Y3VtZW50SWRlbnRpZmllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTGliV2ViUlRDUHJvdmlkZXIu
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL1JUQ05ldHdvcmtNYW5hZ2VyLmg+CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitjbGFzcyBMaWJXZWJSVENOZXR3b3JrTWFuYWdlciBmaW5hbCA6IHB1YmxpYyBX
ZWJDb3JlOjpSVENOZXR3b3JrTWFuYWdlciwgcHVibGljIHJ0Yzo6TmV0d29ya01hbmFnZXJCYXNl
LCBwdWJsaWMgd2VicnRjOjpNZG5zUmVzcG9uZGVySW50ZXJmYWNlLCBwdWJsaWMgV2ViUlRDTW9u
aXRvcjo6T2JzZXJ2ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgor
ICAgIHN0YXRpYyBMaWJXZWJSVENOZXR3b3JrTWFuYWdlciogZ2V0T3JDcmVhdGUoV2ViQ29yZTo6
RG9jdW1lbnRJZGVudGlmaWVyKTsKKyAgICB+TGliV2ViUlRDTmV0d29ya01hbmFnZXIoKTsKKwor
cHJpdmF0ZToKKyAgICBleHBsaWNpdCBMaWJXZWJSVENOZXR3b3JrTWFuYWdlcihXZWJDb3JlOjpE
b2N1bWVudElkZW50aWZpZXIpOworCisgICAgLy8gV2ViQ29yZTo6UlRDTmV0d29ya01hbmFnZXIK
KyAgICB2b2lkIHNldElDRUNhbmRpZGF0ZUZpbHRlcmluZyhib29sIGRvRmlsdGVyaW5nKSBmaW5h
bCB7IG1fdXNlTUROU0NhbmRpZGF0ZXMgPSBkb0ZpbHRlcmluZzsgfQorICAgIHZvaWQgdW5yZWdp
c3Rlck1ETlNOYW1lcygpIGZpbmFsOworCisgICAgLy8gd2VicnRjOjpOZXR3b3JrTWFuYWdlckJh
c2UKKyAgICB2b2lkIFN0YXJ0VXBkYXRpbmcoKSBmaW5hbDsKKyAgICB2b2lkIFN0b3BVcGRhdGlu
ZygpIGZpbmFsOworICAgIHdlYnJ0Yzo6TWRuc1Jlc3BvbmRlckludGVyZmFjZSogR2V0TWRuc1Jl
c3BvbmRlcigpIGNvbnN0IGZpbmFsOworCisgICAgLy8gd2VicnRjOjpNZG5zUmVzcG9uZGVySW50
ZXJmYWNlCisgICAgdm9pZCBDcmVhdGVOYW1lRm9yQWRkcmVzcyhjb25zdCBydGM6OklQQWRkcmVz
cyYsIE5hbWVDcmVhdGVkQ2FsbGJhY2spOworICAgIHZvaWQgUmVtb3ZlTmFtZUZvckFkZHJlc3Mo
Y29uc3QgcnRjOjpJUEFkZHJlc3MmLCBOYW1lUmVtb3ZlZENhbGxiYWNrKTsKKworICAgIC8vIFdl
YlJUQ01vbml0b3I6Ok9ic2VydmVyCisgICAgdm9pZCBuZXR3b3Jrc0NoYW5nZWQoY29uc3QgVmVj
dG9yPFJUQ05ldHdvcms+JiwgY29uc3QgUlRDTmV0d29yazo6SVBBZGRyZXNzJiwgY29uc3QgUlRD
TmV0d29yazo6SVBBZGRyZXNzJikgZmluYWw7CisgICAgdm9pZCBuZXR3b3JrUHJvY2Vzc0NyYXNo
ZWQoKSBmaW5hbDsKKworICAgIFdlYkNvcmU6OkRvY3VtZW50SWRlbnRpZmllciBtX2RvY3VtZW50
SWRlbnRpZmllcjsKKyAgICBib29sIG1fdXNlTUROU0NhbmRpZGF0ZXMgeyB0cnVlIH07CisgICAg
Ym9vbCBtX3JlY2VpdmVkTmV0d29ya0xpc3QgeyBmYWxzZSB9OworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHAKaW5kZXggOTY4Yzlm
MzA0YjY1NDgwOWY5OTI2MjU2YzEwMDU1MDdjOTcxMmY1NS4uZjljNGE5MGQ4MjFkYWY3YThhYjM5
YWZkZDMxNjQyMDU4NTE2M2I3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuY3BwCkBAIC0zMyw2
ICszMyw3IEBACiAjZW5kaWYKIAogI2luY2x1ZGUgIkxpYldlYlJUQ05ldHdvcmsuaCIKKyNpbmNs
dWRlICJMaWJXZWJSVENOZXR3b3JrTWFuYWdlci5oIgogI2luY2x1ZGUgIlJUQ0RhdGFDaGFubmVs
UmVtb3RlTWFuYWdlci5oIgogI2luY2x1ZGUgIldlYlBhZ2UuaCIKICNpbmNsdWRlICJXZWJQcm9j
ZXNzLmgiCkBAIC01NCw3ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgfQogfTsKIAotcnRjOjpzY29w
ZWRfcmVmcHRyPHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U+IExpYldlYlJUQ1Byb3Zp
ZGVyOjpjcmVhdGVQZWVyQ29ubmVjdGlvbih3ZWJydGM6OlBlZXJDb25uZWN0aW9uT2JzZXJ2ZXIm
IG9ic2VydmVyLCBydGM6OlBhY2tldFNvY2tldEZhY3RvcnkqIHNvY2tldEZhY3RvcnksIHdlYnJ0
Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OlJUQ0NvbmZpZ3VyYXRpb24mJiBjb25maWd1cmF0
aW9uKQorcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U+
IExpYldlYlJUQ1Byb3ZpZGVyOjpjcmVhdGVQZWVyQ29ubmVjdGlvbihEb2N1bWVudElkZW50aWZp
ZXIgaWRlbnRpZmllciwgd2VicnRjOjpQZWVyQ29ubmVjdGlvbk9ic2VydmVyJiBvYnNlcnZlciwg
cnRjOjpQYWNrZXRTb2NrZXRGYWN0b3J5KiBzb2NrZXRGYWN0b3J5LCB3ZWJydGM6OlBlZXJDb25u
ZWN0aW9uSW50ZXJmYWNlOjpSVENDb25maWd1cmF0aW9uJiYgY29uZmlndXJhdGlvbikKIHsKICNp
ZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIFBMQVRGT1JNKENPQ09BKSAmJiAhUExBVEZPUk0oTUFD
Q0FUQUxZU1QpCiAgICAgaWYgKCFtX2RpZEluaXRpYWxpemVDYWxsYmFjaykgewpAQCAtNjcsMjIg
KzY4LDE3IEBAIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJm
YWNlPiBMaWJXZWJSVENQcm92aWRlcjo6Y3JlYXRlUGVlCiAKICAgICBhdXRvJiBuZXR3b3JrTW9u
aXRvciA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmxpYldlYlJUQ05ldHdvcmsoKS5tb25pdG9y
KCk7CiAgICAgbmV0d29ya01vbml0b3Iuc2V0RW51bWVyYXRpbmdBbGxOZXR3b3JrSW50ZXJmYWNl
c0VuYWJsZWQoaXNFbnVtZXJhdGluZ0FsbE5ldHdvcmtJbnRlcmZhY2VzRW5hYmxlZCgpKTsKLSAg
ICByZXR1cm4gV2ViQ29yZTo6TGliV2ViUlRDUHJvdmlkZXI6OmNyZWF0ZVBlZXJDb25uZWN0aW9u
KG9ic2VydmVyLCBuZXR3b3JrTW9uaXRvciwgKnNvY2tldEZhY3RvcnksIFdURk1vdmUoY29uZmln
dXJhdGlvbiksIG1ha2VVbmlxdWU8QXN5bmNSZXNvbHZlckZhY3Rvcnk+KCkpOwotfQogCi12b2lk
IExpYldlYlJUQ1Byb3ZpZGVyOjpkaXNhYmxlTm9uTG9jYWxob3N0Q29ubmVjdGlvbnMoKQotewot
ICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmxpYldlYlJUQ05ldHdvcmsoKS5kaXNhYmxlTm9u
TG9jYWxob3N0Q29ubmVjdGlvbnMoKTsKLX0KKyAgICBhdXRvKiBuZXR3b3JrTWFuYWdlciA9IExp
YldlYlJUQ05ldHdvcmtNYW5hZ2VyOjpnZXRPckNyZWF0ZShpZGVudGlmaWVyKTsKKyAgICBpZiAo
IW5ldHdvcmtNYW5hZ2VyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotdm9pZCBMaWJXZWJS
VENQcm92aWRlcjo6dW5yZWdpc3Rlck1ETlNOYW1lcyhEb2N1bWVudElkZW50aWZpZXIgZG9jdW1l
bnRJZGVudGlmaWVyKQotewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmxpYldlYlJUQ05l
dHdvcmsoKS5tZG5zUmVnaXN0ZXIoKS51bnJlZ2lzdGVyTUROU05hbWVzKGRvY3VtZW50SWRlbnRp
Zmllcik7CisgICAgcmV0dXJuIFdlYkNvcmU6OkxpYldlYlJUQ1Byb3ZpZGVyOjpjcmVhdGVQZWVy
Q29ubmVjdGlvbihvYnNlcnZlciwgKm5ldHdvcmtNYW5hZ2VyLCAqc29ja2V0RmFjdG9yeSwgV1RG
TW92ZShjb25maWd1cmF0aW9uKSwgbWFrZVVuaXF1ZTxBc3luY1Jlc29sdmVyRmFjdG9yeT4oKSk7
CiB9CiAKLXZvaWQgTGliV2ViUlRDUHJvdmlkZXI6OnJlZ2lzdGVyTUROU05hbWUoRG9jdW1lbnRJ
ZGVudGlmaWVyIGRvY3VtZW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBpcEFkZHJlc3MsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoTUROU05hbWVPckVycm9yJiYpPiYmIGNhbGxiYWNrKQordm9p
ZCBMaWJXZWJSVENQcm92aWRlcjo6ZGlzYWJsZU5vbkxvY2FsaG9zdENvbm5lY3Rpb25zKCkKIHsK
LSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5saWJXZWJSVENOZXR3b3JrKCkubWRuc1JlZ2lz
dGVyKCkucmVnaXN0ZXJNRE5TTmFtZShkb2N1bWVudElkZW50aWZpZXIsIGlwQWRkcmVzcywgV1RG
TW92ZShjYWxsYmFjaykpOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmxpYldlYlJUQ05l
dHdvcmsoKS5kaXNhYmxlTm9uTG9jYWxob3N0Q29ubmVjdGlvbnMoKTsKIH0KIAogY2xhc3MgUlRD
U29ja2V0RmFjdG9yeSBmaW5hbCA6IHB1YmxpYyBMaWJXZWJSVENQcm92aWRlcjo6U3VzcGVuZGFi
bGVTb2NrZXRGYWN0b3J5IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmgKaW5kZXggNzJhZDNhNDI5ZmVm
YmZhMWQ0Y2FlZjVjMmJmN2M5NTczMDFlMTIwMS4uNzk1MTdjMDg4OTNlMWY2YjUwNWU3MjllNjRl
MTlkMDBjOTkwMWIzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvd2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmgKQEAgLTU0LDEwICs1NCw4IEBA
IHB1YmxpYzoKIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPFN1c3BlbmRhYmxlU29ja2V0
RmFjdG9yeT4gY3JlYXRlU29ja2V0RmFjdG9yeShTdHJpbmcmJiAvKiB1c2VyQWdlbnQgKi8sIGJv
b2wgLyogaXNGaXJzdFBhcnR5ICovLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmKSBmaW5h
bDsKIAotICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJm
YWNlPiBjcmVhdGVQZWVyQ29ubmVjdGlvbih3ZWJydGM6OlBlZXJDb25uZWN0aW9uT2JzZXJ2ZXIm
LCBydGM6OlBhY2tldFNvY2tldEZhY3RvcnkqLCB3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJm
YWNlOjpSVENDb25maWd1cmF0aW9uJiYpIGZpbmFsOworICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3
ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlPiBjcmVhdGVQZWVyQ29ubmVjdGlvbihXZWJD
b3JlOjpEb2N1bWVudElkZW50aWZpZXIsIHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25PYnNlcnZlciYs
IHJ0Yzo6UGFja2V0U29ja2V0RmFjdG9yeSosIHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZh
Y2U6OlJUQ0NvbmZpZ3VyYXRpb24mJikgZmluYWw7CiAKLSAgICB2b2lkIHVucmVnaXN0ZXJNRE5T
TmFtZXMoV2ViQ29yZTo6RG9jdW1lbnRJZGVudGlmaWVyKSBmaW5hbDsKLSAgICB2b2lkIHJlZ2lz
dGVyTUROU05hbWUoV2ViQ29yZTo6RG9jdW1lbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGlw
QWRkcmVzcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChNRE5TTmFtZU9yRXJyb3ImJik+JiYpIGZp
bmFsOwogICAgIHZvaWQgZGlzYWJsZU5vbkxvY2FsaG9zdENvbm5lY3Rpb25zKCkgZmluYWw7CiAg
ICAgdm9pZCBzdGFydGVkTmV0d29ya1RocmVhZCgpIGZpbmFsOwogICAgIFJlZlB0cjxXZWJDb3Jl
OjpSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXJDb25uZWN0aW9uPiBjcmVhdGVSVENEYXRhQ2hh
bm5lbFJlbW90ZUhhbmRsZXJDb25uZWN0aW9uKCkgZmluYWw7CkBAIC03Myw2ICs3MSw3IEBAIGlu
bGluZSBMaWJXZWJSVENQcm92aWRlcjo6TGliV2ViUlRDUHJvdmlkZXIoV2ViUGFnZSYgd2ViUGFn
ZSkKICAgICA6IG1fd2ViUGFnZSh3ZWJQYWdlKQogewogICAgIG1fdXNlTmV0d29ya1RocmVhZFdp
dGhTb2NrZXRTZXJ2ZXIgPSBmYWxzZTsKKyAgICBtX3N1cHBvcnRzTUROUyA9IHRydWU7CiB9CiAK
IGlubGluZSBVbmlxdWVSZWY8TGliV2ViUlRDUHJvdmlkZXI+IGNyZWF0ZUxpYldlYlJUQ1Byb3Zp
ZGVyKFdlYlBhZ2UmIHBhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay93ZWJydGMvV2ViTUROU1JlZ2lzdGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJNRE5TUmVnaXN0ZXIuY3BwCmluZGV4IDUxNTkwZjlhY2Nl
NjI0NDA2OGIxNDdjZTZhOWM3YzE4MjU3NTc3NjEuLjc2MDIwN2VhNTliY2EyNTQ1MjJmNTZjNTlh
NTI0NWU1OTVhOGRlMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL3dlYnJ0Yy9XZWJNRE5TUmVnaXN0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJNRE5TUmVnaXN0ZXIuY3BwCkBAIC0zNiwyMiArMzYsMjIg
QEAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLXZvaWQg
V2ViTUROU1JlZ2lzdGVyOjpmaW5pc2hlZFJlZ2lzdGVyaW5nTUROU05hbWUoTUROU1JlZ2lzdGVy
SWRlbnRpZmllciBpZGVudGlmaWVyLCBMaWJXZWJSVENQcm92aWRlcjo6TUROU05hbWVPckVycm9y
JiYgcmVzdWx0KQordm9pZCBXZWJNRE5TUmVnaXN0ZXI6OmZpbmlzaGVkUmVnaXN0ZXJpbmdNRE5T
TmFtZShNRE5TUmVnaXN0ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFN0cmluZyYmIG5hbWUsIHN0
ZDo6b3B0aW9uYWw8TUROU1JlZ2lzdGVyRXJyb3I+IGVycm9yKQogewogICAgIGF1dG8gcGVuZGlu
Z1JlZ2lzdHJhdGlvbiA9IG1fcGVuZGluZ1JlZ2lzdHJhdGlvbnMudGFrZShpZGVudGlmaWVyKTsK
ICAgICBpZiAoIXBlbmRpbmdSZWdpc3RyYXRpb24uY2FsbGJhY2spCiAgICAgICAgIHJldHVybjsK
IAotICAgIGlmIChyZXN1bHQuaGFzX3ZhbHVlKCkpIHsKKyAgICBpZiAoIWVycm9yKSB7CiAgICAg
ICAgIGF1dG8gaXRlcmF0b3IgPSBtX3JlZ2lzdGVyaW5nRG9jdW1lbnRzLmZpbmQocGVuZGluZ1Jl
Z2lzdHJhdGlvbi5kb2N1bWVudElkZW50aWZpZXIpOwogICAgICAgICBpZiAoaXRlcmF0b3IgPT0g
bV9yZWdpc3RlcmluZ0RvY3VtZW50cy5lbmQoKSkgewotICAgICAgICAgICAgcGVuZGluZ1JlZ2lz
dHJhdGlvbi5jYWxsYmFjayhtYWtlVW5leHBlY3RlZChXZWJDb3JlOjpNRE5TUmVnaXN0ZXJFcnJv
cjo6RE5TU0QpKTsKKyAgICAgICAgICAgIHBlbmRpbmdSZWdpc3RyYXRpb24uY2FsbGJhY2sobmFt
ZSwgV2ViQ29yZTo6TUROU1JlZ2lzdGVyRXJyb3I6OkROU1NEKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQotICAgICAgICBpdGVyYXRvci0+dmFsdWUuYWRkKHBlbmRpbmdSZWdpc3Ry
YXRpb24uaXBBZGRyZXNzLCByZXN1bHQudmFsdWUoKSk7CisgICAgICAgIGl0ZXJhdG9yLT52YWx1
ZS5hZGQocGVuZGluZ1JlZ2lzdHJhdGlvbi5pcEFkZHJlc3MsIG5hbWUpOwogICAgIH0KIAotICAg
IHBlbmRpbmdSZWdpc3RyYXRpb24uY2FsbGJhY2soV1RGTW92ZShyZXN1bHQpKTsKKyAgICBwZW5k
aW5nUmVnaXN0cmF0aW9uLmNhbGxiYWNrKG5hbWUsIGVycm9yKTsKIH0KIAogdm9pZCBXZWJNRE5T
UmVnaXN0ZXI6OnVucmVnaXN0ZXJNRE5TTmFtZXMoRG9jdW1lbnRJZGVudGlmaWVyIGlkZW50aWZp
ZXIpCkBAIC02Myw3ICs2Myw3IEBAIHZvaWQgV2ViTUROU1JlZ2lzdGVyOjp1bnJlZ2lzdGVyTURO
U05hbWVzKERvY3VtZW50SWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIGNvbm5lY3Rpb24uc2Vu
ZChNZXNzYWdlczo6TmV0d29ya01ETlNSZWdpc3Rlcjo6VW5yZWdpc3Rlck1ETlNOYW1lcyB7IGlk
ZW50aWZpZXIgfSwgMCk7CiB9CiAKLXZvaWQgV2ViTUROU1JlZ2lzdGVyOjpyZWdpc3Rlck1ETlNO
YW1lKERvY3VtZW50SWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGlwQWRkcmVz
cywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChMaWJXZWJSVENQcm92aWRlcjo6TUROU05hbWVPckVy
cm9yJiYpPiYmIGNhbGxiYWNrKQordm9pZCBXZWJNRE5TUmVnaXN0ZXI6OnJlZ2lzdGVyTUROU05h
bWUoRG9jdW1lbnRJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgaXBBZGRyZXNz
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYsIHN0ZDo6b3B0aW9uYWw8TURO
U1JlZ2lzdGVyRXJyb3I+KT4mJiBjYWxsYmFjaykKIHsKICAgICBhdXRvJiBtYXAgPSBtX3JlZ2lz
dGVyaW5nRG9jdW1lbnRzLmVuc3VyZShpZGVudGlmaWVyLCBbXSB7CiAgICAgICAgIHJldHVybiBI
YXNoTWFwPFN0cmluZywgU3RyaW5nPiB7IH07CkBAIC03MSwxNiArNzEsMTcgQEAgdm9pZCBXZWJN
RE5TUmVnaXN0ZXI6OnJlZ2lzdGVyTUROU05hbWUoRG9jdW1lbnRJZGVudGlmaWVyIGlkZW50aWZp
ZXIsIGNvbnN0IFN0cmkKIAogICAgIGF1dG8gaXRlcmF0b3IgPSBtYXAuZmluZChpcEFkZHJlc3Mp
OwogICAgIGlmIChpdGVyYXRvciAhPSBtYXAuZW5kKCkpIHsKLSAgICAgICAgY2FsbGJhY2soaXRl
cmF0b3ItPnZhbHVlKTsKKyAgICAgICAgY2FsbGJhY2soaXRlcmF0b3ItPnZhbHVlLCB7IH0pOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgYXV0byByZXF1ZXN0SWRlbnRpZmllciA9IE1E
TlNSZWdpc3RlcklkZW50aWZpZXI6OmdlbmVyYXRlKCk7CiAgICAgbV9wZW5kaW5nUmVnaXN0cmF0
aW9ucy5hZGQocmVxdWVzdElkZW50aWZpZXIsIFBlbmRpbmdSZWdpc3RyYXRpb24geyBXVEZNb3Zl
KGNhbGxiYWNrKSwgaWRlbnRpZmllciwgaXBBZGRyZXNzIH0pOwogCisgICAgLy8gRklYTUU6IFVz
ZSBhc3luYyByZXBseS4KICAgICBhdXRvJiBjb25uZWN0aW9uID0gV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpOwogICAg
IGlmICghY29ubmVjdGlvbi5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrTUROU1JlZ2lzdGVyOjpSZWdp
c3Rlck1ETlNOYW1lIHsgcmVxdWVzdElkZW50aWZpZXIsIGlkZW50aWZpZXIsIGlwQWRkcmVzcyB9
LCAwKSkKLSAgICAgICAgZmluaXNoZWRSZWdpc3RlcmluZ01ETlNOYW1lKHJlcXVlc3RJZGVudGlm
aWVyLCBtYWtlVW5leHBlY3RlZChNRE5TUmVnaXN0ZXJFcnJvcjo6SW50ZXJuYWwpKTsKKyAgICAg
ICAgZmluaXNoZWRSZWdpc3RlcmluZ01ETlNOYW1lKHJlcXVlc3RJZGVudGlmaWVyLCB7IH0sIE1E
TlNSZWdpc3RlckVycm9yOjpJbnRlcm5hbCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1dlYk1E
TlNSZWdpc3Rlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1dl
Yk1ETlNSZWdpc3Rlci5oCmluZGV4IDBjMGY2MTMzYWY0NjhjOWViYjhjNjdhMmFlNGU4YzlhNzMz
ZWU2YWQuLjJjMGZmMGU0NjY1MTFmOTc4ZmI4MDkyNzIwYWYwNzNkYmY1MzhmYmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJNRE5TUmVnaXN0
ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvV2ViTURO
U1JlZ2lzdGVyLmgKQEAgLTQ2LDE1ICs0NiwxNSBAQCBwdWJsaWM6CiAgICAgV2ViTUROU1JlZ2lz
dGVyKCkgPSBkZWZhdWx0OwogCiAgICAgdm9pZCB1bnJlZ2lzdGVyTUROU05hbWVzKFdlYkNvcmU6
OkRvY3VtZW50SWRlbnRpZmllcik7Ci0gICAgdm9pZCByZWdpc3Rlck1ETlNOYW1lKFdlYkNvcmU6
OkRvY3VtZW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBpcEFkZHJlc3MsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoV2ViQ29yZTo6TGliV2ViUlRDUHJvdmlkZXI6Ok1ETlNOYW1lT3JFcnJvciYm
KT4mJik7CisgICAgdm9pZCByZWdpc3Rlck1ETlNOYW1lKFdlYkNvcmU6OkRvY3VtZW50SWRlbnRp
ZmllciwgY29uc3QgU3RyaW5nJiBpcEFkZHJlc3MsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3QgU3RyaW5nJiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpNRE5TUmVnaXN0ZXJFcnJvcj4pPiYm
KTsKIAogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpE
ZWNvZGVyJik7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBmaW5pc2hlZFJlZ2lzdGVyaW5nTUROU05h
bWUoTUROU1JlZ2lzdGVySWRlbnRpZmllciwgV2ViQ29yZTo6TGliV2ViUlRDUHJvdmlkZXI6Ok1E
TlNOYW1lT3JFcnJvciYmKTsKKyAgICB2b2lkIGZpbmlzaGVkUmVnaXN0ZXJpbmdNRE5TTmFtZShN
RE5TUmVnaXN0ZXJJZGVudGlmaWVyLCBTdHJpbmcmJiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpN
RE5TUmVnaXN0ZXJFcnJvcj4pOwogCiAgICAgc3RydWN0IFBlbmRpbmdSZWdpc3RyYXRpb24gewot
ICAgICAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OkxpYldlYlJUQ1Byb3ZpZGVy
OjpNRE5TTmFtZU9yRXJyb3ImJik+IGNhbGxiYWNrOworICAgICAgICBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IFN0cmluZyYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6TUROU1JlZ2lzdGVy
RXJyb3I+KT4gY2FsbGJhY2s7CiAgICAgICAgIFdlYkNvcmU6OkRvY3VtZW50SWRlbnRpZmllciBk
b2N1bWVudElkZW50aWZpZXI7CiAgICAgICAgIFN0cmluZyBpcEFkZHJlc3M7CiAgICAgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJNRE5T
UmVnaXN0ZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93
ZWJydGMvV2ViTUROU1JlZ2lzdGVyLm1lc3NhZ2VzLmluCmluZGV4IGFiMTJhMWUwMTkyNmQ2YWZj
YjRjMjQ3OGVkNTNmNWMzNjJhODhiOWIuLmYxZWE1YzczMDZkMmEwYzZkZTlmMWI4MTIwNzYzZTlm
ZDkzMWRhNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dl
YnJ0Yy9XZWJNRE5TUmVnaXN0ZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvd2VicnRjL1dlYk1ETlNSZWdpc3Rlci5tZXNzYWdlcy5pbgpAQCAtMSw0
ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDE4LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMyw3ICsyMyw3IEBACiAj
aWYgRU5BQkxFKFdFQl9SVEMpCiAKIG1lc3NhZ2VzIC0+IFdlYk1ETlNSZWdpc3RlciBOb3RSZWZD
b3VudGVkIHsKLSAgICB2b2lkIEZpbmlzaGVkUmVnaXN0ZXJpbmdNRE5TTmFtZShXZWJLaXQ6Ok1E
TlNSZWdpc3RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViQ29yZTo6TGliV2ViUlRDUHJvdmlk
ZXI6Ok1ETlNOYW1lT3JFcnJvciByZXN1bHQpCisgICAgdm9pZCBGaW5pc2hlZFJlZ2lzdGVyaW5n
TUROU05hbWUoV2ViS2l0OjpNRE5TUmVnaXN0ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFN0cmlu
ZyBtZG5zTmFtZSwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpNRE5TUmVnaXN0ZXJFcnJvcj4gZXJy
b3IpCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCX1JUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJSVENNb25pdG9yLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJSVENNb25pdG9yLmNwcAppbmRl
eCAwZjlkYWQyZDFkMjlkMGIzMDc5ZDM4NzFiN2UxNDU0MTUyOTA0OTM2Li5kMGNiOThiZTg4MGJi
NjEzZmRhMjMxNTAyZTY3MDJjMDRhZjIwMjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay93ZWJydGMvV2ViUlRDTW9uaXRvci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1dlYlJUQ01vbml0b3IuY3BwCkBAIC0zMyw4
ICszMyw2IEBACiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5jbHVk
ZSAiTmV0d29ya1JUQ01vbml0b3JNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIK
LSNpbmNsdWRlIDxXZWJDb3JlL0xpYldlYlJUQ01hY3Jvcy5oPgotI2luY2x1ZGUgPHdlYnJ0Yy9y
dGNfYmFzZS9uZXRfaGVscGVycy5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewpAQCAtNTMsNjcgKzUxLDQzIEBAIHZvaWQgV2ViUlRDTW9uaXRvcjo6
c2V0RW51bWVyYXRpbmdBbGxOZXR3b3JrSW50ZXJmYWNlc0VuYWJsZWQoYm9vbCBlbmFibGVkKQog
ICAgIG1fZW5hYmxlRW51bWVyYXRpbmdBbGxOZXR3b3JrSW50ZXJmYWNlcyA9IGVuYWJsZWQ7CiB9
CiAKLXZvaWQgV2ViUlRDTW9uaXRvcjo6U3RhcnRVcGRhdGluZygpCit2b2lkIFdlYlJUQ01vbml0
b3I6OnN0YXJ0VXBkYXRpbmcoKQogewotICAgIFdFQlJUQ19SRUxFQVNFX0xPRygiU3RhcnRVcGRh
dGluZyIpOwotICAgIGlmIChtX3JlY2VpdmVkTmV0d29ya0xpc3QpIHsKLSAgICAgICAgV2ViQ29y
ZTo6TGliV2ViUlRDUHJvdmlkZXI6OmNhbGxPbldlYlJUQ05ldHdvcmtUaHJlYWQoW3RoaXNdIHsK
LSAgICAgICAgICAgIFNpZ25hbE5ldHdvcmtzQ2hhbmdlZCgpOwotICAgICAgICB9KTsKLSAgICB9
Ci0KLSAgICBzZW5kT25NYWluVGhyZWFkKFt0aGlzXShhdXRvJiBjb25uZWN0aW9uKSB7Ci0gICAg
ICAgIFdFQlJUQ19SRUxFQVNFX0xPRygiU3RhcnRVcGRhdGluZyAtIEFza2luZyBuZXR3b3JrIHBy
b2Nlc3MgdG8gc3RhcnQgdXBkYXRpbmciKTsKLSAgICAgICAgY29ubmVjdGlvbi5zZW5kKE1lc3Nh
Z2VzOjpOZXR3b3JrUlRDTW9uaXRvcjo6U3RhcnRVcGRhdGluZ0lmTmVlZGVkKG1fZW5hYmxlRW51
bWVyYXRpbmdBbGxOZXR3b3JrSW50ZXJmYWNlcyksIDApOwotICAgIH0pOworICAgIFdFQlJUQ19S
RUxFQVNFX0xPRygiU3RhcnRVcGRhdGluZyAtIEFza2luZyBuZXR3b3JrIHByb2Nlc3MgdG8gc3Rh
cnQgdXBkYXRpbmciKTsKKworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3Jr
UlRDTW9uaXRvcjo6U3RhcnRVcGRhdGluZ0lmTmVlZGVkKG1fZW5hYmxlRW51bWVyYXRpbmdBbGxO
ZXR3b3JrSW50ZXJmYWNlcyksIDApOwogICAgICsrbV9jbGllbnRDb3VudDsKIH0KIAotdm9pZCBX
ZWJSVENNb25pdG9yOjpTdG9wVXBkYXRpbmcoKQordm9pZCBXZWJSVENNb25pdG9yOjpzdG9wVXBk
YXRpbmcoKQogewogICAgIFdFQlJUQ19SRUxFQVNFX0xPRygiU3RvcFVwZGF0aW5nIik7CisKICAg
ICBBU1NFUlQobV9jbGllbnRDb3VudCk7CiAgICAgaWYgKC0tbV9jbGllbnRDb3VudCkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgc2VuZE9uTWFpblRocmVhZChbdGhpc10oYXV0byYgY29ubmVjdGlv
bikgewotICAgICAgICBXRUJSVENfUkVMRUFTRV9MT0coIlN0b3BVcGRhdGluZyAtIEFza2luZyBu
ZXR3b3JrIHByb2Nlc3MgdG8gc3RvcCB1cGRhdGluZyIpOwotICAgICAgICBjb25uZWN0aW9uLnNl
bmQoTWVzc2FnZXM6Ok5ldHdvcmtSVENNb25pdG9yOjpTdG9wVXBkYXRpbmcoKSwgMCk7Ci0gICAg
fSk7CisgICAgV0VCUlRDX1JFTEVBU0VfTE9HKCJTdG9wVXBkYXRpbmcgLSBBc2tpbmcgbmV0d29y
ayBwcm9jZXNzIHRvIHN0b3AgdXBkYXRpbmciKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNz
YWdlczo6TmV0d29ya1JUQ01vbml0b3I6OlN0b3BVcGRhdGluZygpLCAwKTsKIH0KIAotdm9pZCBX
ZWJSVENNb25pdG9yOjpuZXR3b3Jrc0NoYW5nZWQoY29uc3QgVmVjdG9yPFJUQ05ldHdvcms+JiBu
ZXR3b3JrcywgY29uc3QgUlRDTmV0d29yazo6SVBBZGRyZXNzJiBpcHY0LCBjb25zdCBSVENOZXR3
b3JrOjpJUEFkZHJlc3MmIGlwdjYpCit2b2lkIFdlYlJUQ01vbml0b3I6Om5ldHdvcmtzQ2hhbmdl
ZChWZWN0b3I8UlRDTmV0d29yaz4mJiBuZXR3b3JrTGlzdCwgUlRDTmV0d29yazo6SVBBZGRyZXNz
JiYgaXB2NCwgUlRDTmV0d29yazo6SVBBZGRyZXNzJiYgaXB2NikKIHsKICAgICBXRUJSVENfUkVM
RUFTRV9MT0coIm5ldHdvcmtzQ2hhbmdlZCIpOwotICAgIC8vIE5vIG5lZWQgdG8gcHJvdGVjdCAn
dGhpcycgYXMgaXQgaGFzIHRoZSBsaWZldGltZSBvZiBMaWJXZWJSVEMgd2hpY2ggaGFzIHRoZSBs
aWZldGltZSBvZiB0aGUgd2ViIHByb2Nlc3MuCi0gICAgV2ViQ29yZTo6TGliV2ViUlRDUHJvdmlk
ZXI6OmNhbGxPbldlYlJUQ05ldHdvcmtUaHJlYWQoW3RoaXMsIG5ldHdvcmtzLCBpcHY0LCBpcHY2
XSB7Ci0gICAgICAgIFdFQlJUQ19SRUxFQVNFX0xPRygibmV0d29ya3NDaGFuZ2VkIC0gU2lnbmFs
aW5nIik7Ci0gICAgICAgIHN0ZDo6dmVjdG9yPHJ0Yzo6TmV0d29yayo+IG5ldHdvcmtMaXN0KG5l
dHdvcmtzLnNpemUoKSk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBu
ZXR3b3Jrcy5zaXplKCk7ICsraW5kZXgpCi0gICAgICAgICAgICBuZXR3b3JrTGlzdFtpbmRleF0g
PSBuZXcgcnRjOjpOZXR3b3JrKG5ldHdvcmtzW2luZGV4XS52YWx1ZSgpKTsKLQotICAgICAgICBi
b29sIGZvcmNlU2lnbmFsaW5nID0gIW1fcmVjZWl2ZWROZXR3b3JrTGlzdDsKLSAgICAgICAgbV9y
ZWNlaXZlZE5ldHdvcmtMaXN0ID0gdHJ1ZTsKLQotICAgICAgICBib29sIGhhc0NoYW5nZWQ7Ci0g
ICAgICAgIHNldF9kZWZhdWx0X2xvY2FsX2FkZHJlc3NlcyhpcHY0LnZhbHVlLCBpcHY2LnZhbHVl
KTsKLSAgICAgICAgTWVyZ2VOZXR3b3JrTGlzdChuZXR3b3JrTGlzdCwgJmhhc0NoYW5nZWQpOwot
ICAgICAgICBpZiAoaGFzQ2hhbmdlZCB8fCBmb3JjZVNpZ25hbGluZykKLSAgICAgICAgICAgIFNp
Z25hbE5ldHdvcmtzQ2hhbmdlZCgpOwogCi0gICAgfSk7CisgICAgbV9kaWRSZWNlaXZlTmV0d29y
a0xpc3QgPSB0cnVlOworICAgIG1fbmV0d29ya0xpc3QgPSBXVEZNb3ZlKG5ldHdvcmtMaXN0KTsK
KyAgICBtX2lwdjQgPSBXVEZNb3ZlKGlwdjQpOworICAgIG1faXB2NiA9IFdURk1vdmUoaXB2Nik7
CisKKyAgICBmb3IgKGF1dG8mIG9ic2VydmVyIDogbV9vYnNlcnZlcnMpCisgICAgICAgIG9ic2Vy
dmVyLm5ldHdvcmtzQ2hhbmdlZChtX25ldHdvcmtMaXN0LCBtX2lwdjQsIG1faXB2Nik7CiB9CiAK
IHZvaWQgV2ViUlRDTW9uaXRvcjo6bmV0d29ya1Byb2Nlc3NDcmFzaGVkKCkKIHsKLSAgICBtX3Jl
Y2VpdmVkTmV0d29ya0xpc3QgPSBmYWxzZTsKLSAgICBpZiAoIVdlYkNvcmU6OkxpYldlYlJUQ1By
b3ZpZGVyOjpoYXNXZWJSVENUaHJlYWRzKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIElu
IGNhc2Ugd2UgaGF2ZSBjbGllbnRzIHdhaXRpbmcgZm9yIG5ldHdvcmtzQ2hhbmdlZCwgd2UgY2Fs
bCBTaWduYWxOZXR3b3Jrc0NoYW5nZWQgdG8gbWFrZSBzdXJlIHRoZXkgZG8gbm90IHdhaXQgZm9y
IG5vdGhpbmcuICAgIAotICAgIFdlYkNvcmU6OkxpYldlYlJUQ1Byb3ZpZGVyOjpjYWxsT25XZWJS
VENOZXR3b3JrVGhyZWFkKFt0aGlzXSB7Ci0gICAgICAgIFNpZ25hbE5ldHdvcmtzQ2hhbmdlZCgp
OwotICAgIH0pOworICAgIGZvciAoYXV0byYgb2JzZXJ2ZXIgOiBtX29ic2VydmVycykKKyAgICAg
ICAgb2JzZXJ2ZXIubmV0d29ya1Byb2Nlc3NDcmFzaGVkKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2Vi
cnRjL1dlYlJUQ01vbml0b3IuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dl
YnJ0Yy9XZWJSVENNb25pdG9yLmgKaW5kZXggZjZiOTczOWZhZGRjMzgyY2Q0MjJlNWJhYThlYTI4
NTZlNWY0ZmIwZi4uMDY4NTkwZTUzMjY0MWExZmRhMzU3YWFjMTJhZDIzMjRiMjA0NDI0NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1dlYlJUQ01v
bml0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvV2Vi
UlRDTW9uaXRvci5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiUlRDTmV0d29yay5oIgog
I2luY2x1ZGUgPFdlYkNvcmUvTGliV2ViUlRDUHJvdmlkZXIuaD4KICNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrSGFzaFNldC5oPgogCiBuYW1lc3BhY2UgSVBDIHsK
IGNsYXNzIENvbm5lY3Rpb247CkBAIC00MCwyNiArNDEsNDIgQEAgbmFtZXNwYWNlIFdlYktpdCB7
CiAKIHN0cnVjdCBOZXR3b3Jrc0NoYW5nZWREYXRhOwogCi1jbGFzcyBXZWJSVENNb25pdG9yIGZp
bmFsIDogcHVibGljIHJ0Yzo6TmV0d29ya01hbmFnZXJCYXNlIHsKK2NsYXNzIFdlYlJUQ01vbml0
b3IgewogcHVibGljOgogICAgIFdlYlJUQ01vbml0b3IoKSA9IGRlZmF1bHQ7CiAKKyAgICBjbGFz
cyBPYnNlcnZlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxPYnNlcnZlcj4geworICAgIHB1Ymxp
YzoKKyAgICAgICAgdmlydHVhbCB+T2JzZXJ2ZXIoKSA9IGRlZmF1bHQ7CisgICAgICAgIHZpcnR1
YWwgdm9pZCBuZXR3b3Jrc0NoYW5nZWQoY29uc3QgVmVjdG9yPFJUQ05ldHdvcms+JiwgY29uc3Qg
UlRDTmV0d29yazo6SVBBZGRyZXNzJiwgY29uc3QgUlRDTmV0d29yazo6SVBBZGRyZXNzJikgPSAw
OworICAgICAgICB2aXJ0dWFsIHZvaWQgbmV0d29ya1Byb2Nlc3NDcmFzaGVkKCkgPSAwOworICAg
IH07CisgICAgdm9pZCBhZGRPYnNlcnZlcihPYnNlcnZlciYgb2JzZXJ2ZXIpIHsgbV9vYnNlcnZl
cnMuYWRkKG9ic2VydmVyKTsgfQorICAgIHZvaWQgcmVtb3ZlT2JzZXJ2ZXIoT2JzZXJ2ZXImIG9i
c2VydmVyKSB7IG1fb2JzZXJ2ZXJzLnJlbW92ZShvYnNlcnZlcik7IH0KKyAgICB2b2lkIHN0YXJ0
VXBkYXRpbmcoKTsKKyAgICB2b2lkIHN0b3BVcGRhdGluZygpOworCiAgICAgdm9pZCBuZXR3b3Jr
UHJvY2Vzc0NyYXNoZWQoKTsKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYsIElQQzo6RGVjb2RlciYpOwogICAgIHZvaWQgc2V0RW51bWVyYXRpbmdBbGxOZXR3b3Jr
SW50ZXJmYWNlc0VuYWJsZWQoYm9vbCk7CiAKLXByaXZhdGU6Ci0gICAgdm9pZCBuZXR3b3Jrc0No
YW5nZWQoY29uc3QgVmVjdG9yPFJUQ05ldHdvcms+JiBuZXR3b3JrTGlzdCwgY29uc3QgUlRDTmV0
d29yazo6SVBBZGRyZXNzJiwgY29uc3QgUlRDTmV0d29yazo6SVBBZGRyZXNzJik7CisgICAgYm9v
bCBkaWRSZWNlaXZlTmV0d29ya0xpc3QoKSBjb25zdCB7IHJldHVybiBtX2RpZFJlY2VpdmVOZXR3
b3JrTGlzdDsgfQorICAgIGNvbnN0IFZlY3RvcjxSVENOZXR3b3JrPiYgbmV0d29ya0xpc3QoKSBj
b25zdCB7IHJldHVybiBtX25ldHdvcmtMaXN0OyB9CisgICAgY29uc3QgUlRDTmV0d29yazo6SVBB
ZGRyZXNzJiBpcHY0KCkgY29uc3QgeyByZXR1cm4gbV9pcHY0OyB9CisgICAgY29uc3QgUlRDTmV0
d29yazo6SVBBZGRyZXNzJiBpcHY2KCkgY29uc3QgeyByZXR1cm4gbV9pcHY2OyB9CiAKLSAgICB2
b2lkIFN0YXJ0VXBkYXRpbmcoKSBmaW5hbDsKLSAgICB2b2lkIFN0b3BVcGRhdGluZygpIGZpbmFs
OwotICAgIHdlYnJ0Yzo6TWRuc1Jlc3BvbmRlckludGVyZmFjZSogR2V0TWRuc1Jlc3BvbmRlcigp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIG51bGxwdHI7IH0KK3ByaXZhdGU6CisgICAgdm9pZCBuZXR3
b3Jrc0NoYW5nZWQoVmVjdG9yPFJUQ05ldHdvcms+JiYsIFJUQ05ldHdvcms6OklQQWRkcmVzcyYm
LCBSVENOZXR3b3JrOjpJUEFkZHJlc3MmJik7CiAKICAgICBzdGF0aWMgdm9pZCBzZW5kT25NYWlu
VGhyZWFkKEZ1bmN0aW9uPHZvaWQoSVBDOjpDb25uZWN0aW9uJik+JiYpOwogCiAgICAgdW5zaWdu
ZWQgbV9jbGllbnRDb3VudCB7IDAgfTsKLSAgICBib29sIG1fcmVjZWl2ZWROZXR3b3JrTGlzdCB7
IGZhbHNlIH07CisgICAgV2Vha0hhc2hTZXQ8T2JzZXJ2ZXI+IG1fb2JzZXJ2ZXJzOwogICAgIGJv
b2wgbV9lbmFibGVFbnVtZXJhdGluZ0FsbE5ldHdvcmtJbnRlcmZhY2VzIHsgZmFsc2UgfTsKKyAg
ICBib29sIG1fZGlkUmVjZWl2ZU5ldHdvcmtMaXN0IHsgZmFsc2UgfTsKKyAgICBWZWN0b3I8UlRD
TmV0d29yaz4gbV9uZXR3b3JrTGlzdDsKKyAgICBSVENOZXR3b3JrOjpJUEFkZHJlc3MgbV9pcHY0
OworICAgIFJUQ05ldHdvcms6OklQQWRkcmVzcyBtX2lwdjY7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwppbmRleCA4ZDliNGE1Y2M1ZTYyZDY4YTAzYmI5NGNiNjE3MTA2YTIzMGYxMWVm
Li40OTE0MDYyZTgxOTU5YmUzZDQyY2QzODc4ZjlkZjBiY2Y1OGEyNjE4IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTcgQEAKKzIwMjEtMDktMDEgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgor
CisgICAgICAgIEltcGxlbWVudCBsaWJ3ZWJydGMgbmV0d29yayBtYW5hZ2VyIEdldE1kbnNSZXNw
b25kZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
OTc1NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVw
ZGF0ZSB0ZXN0cyBnaXZlbiBtRE5TIElDRSBjYW5kaWRhdGVzIGFyZSBub3cgc2hvd2luZyB1cCBp
biBkZXNjcmlwdGlvbnMuCisgICAgICAgIE1ha2Ugc3VyZSB0byBjb25zaWRlciBtRE5TIGNhbmRp
ZGF0ZXMgYXMgaWYgdGhleSBhcmUgZmlsdGVyZWQuCisKKyAgICAgICAgKiBodHRwL3dwdC93ZWJy
dGMvcmVzb3VyY2VzL3RoaXJkLXBhcnR5LWZyYW1lLWljZS1jYW5kaWRhdGUtZmlsdGVyaW5nLWlm
cmFtZS5odG1sOgorICAgICAgICAqIHdlYnJ0Yy9kYXRhY2hhbm5lbC9maWx0ZXItaWNlLWNhbmRp
ZGF0ZS5odG1sOgorICAgICAgICAqIHdlYnJ0Yy9maWx0ZXJpbmctaWNlLWNhbmRpZGF0ZS1hZnRl
ci1yZWxvYWQuaHRtbDoKKwogMjAyMS0wOC0zMSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBs
ZS5jb20+CiAKICAgICAgICAgTWlncmF0ZSB0byBsYXRlc3QgbGlid2VicnRjIEFkZEljZUNhbmRp
ZGF0ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJydGMvcmVzb3VyY2Vz
L2NoZWNrLWljZS1jYW5kaWRhdGUtZmlsdGVyaW5nLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3dlYnJ0Yy9yZXNvdXJjZXMvY2hlY2staWNlLWNhbmRpZGF0ZS1maWx0ZXJpbmcuaHRtbApp
bmRleCBmZTY0MTEzMzU2YmExNTIwN2Y0MThkY2M0MDE4NTY4MGM5MWY0NTA4Li4xZmViZjIzNjg5
YWI0NDJmOTY3YzIwMzBiZDMwOTA1MGI0ZTQ2MDU1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3dlYnJ0Yy9yZXNvdXJjZXMvY2hlY2staWNlLWNhbmRpZGF0ZS1maWx0ZXJpbmcu
aHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnJ0Yy9yZXNvdXJjZXMvY2hlY2st
aWNlLWNhbmRpZGF0ZS1maWx0ZXJpbmcuaHRtbApAQCAtMTQsNyArMTQsOCBAQCBmdW5jdGlvbiBn
YXRoZXJDYW5kaWRhdGVzKCkKICAgICAgICAgICAgICAgICByZXNvbHZlKGNhbmRpZGF0ZXMpOwog
ICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNhbmRp
ZGF0ZXMucHVzaChldmVudC5jYW5kaWRhdGUuY2FuZGlkYXRlKTsKKyAgICAgICAgICAgIGlmIChl
dmVudC5jYW5kaWRhdGUuY2FuZGlkYXRlLmluZGV4T2YoJy5sb2NhbCcpID09PSAtMSkKKyAgICAg
ICAgICAgICAgICBjYW5kaWRhdGVzLnB1c2goZXZlbnQuY2FuZGlkYXRlLmNhbmRpZGF0ZSk7CiAg
ICAgICAgIH07CiAgICAgICAgIHBjLmNyZWF0ZU9mZmVyKCkudGhlbigob2ZmZXIpID0+IHsKICAg
ICAgICAgICAgIHBjLnNldExvY2FsRGVzY3JpcHRpb24ob2ZmZXIpOwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC93cHQvd2VicnRjL3Jlc291cmNlcy90aGlyZC1wYXJ0eS1mcmFtZS1pY2Ut
Y2FuZGlkYXRlLWZpbHRlcmluZy1pZnJhbWUuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dl
YnJ0Yy9yZXNvdXJjZXMvdGhpcmQtcGFydHktZnJhbWUtaWNlLWNhbmRpZGF0ZS1maWx0ZXJpbmct
aWZyYW1lLmh0bWwKaW5kZXggMmZlNTMxMDc2NDcyN2I1N2FhYjNiYTYxNTI1NTY2NmY2NDg1YTYx
MC4uODA0NDhjYTBhNTQ3NGE3ZDg1OWM3MjgwODQ2MzhiNDNjMTBkZjQxNSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaHR0cC93cHQvd2VicnRjL3Jlc291cmNlcy90aGlyZC1wYXJ0eS1mcmFtZS1p
Y2UtY2FuZGlkYXRlLWZpbHRlcmluZy1pZnJhbWUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRw
L3dwdC93ZWJydGMvcmVzb3VyY2VzL3RoaXJkLXBhcnR5LWZyYW1lLWljZS1jYW5kaWRhdGUtZmls
dGVyaW5nLWlmcmFtZS5odG1sCkBAIC0xMiw3ICsxMiw4IEBAIGZ1bmN0aW9uIGlzRmlsdGVyaW5n
RW5hYmxlZCgpCiAgICAgICAgICAgICAgICAgcmVzb2x2ZSghY2FuZGlkYXRlcy5sZW5ndGgpOwog
ICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNhbmRp
ZGF0ZXMucHVzaChldmVudC5jYW5kaWRhdGUuY2FuZGlkYXRlKTsKKyAgICAgICAgICAgIGlmIChl
dmVudC5jYW5kaWRhdGUuY2FuZGlkYXRlLmluZGV4T2YoJy5sb2NhbCcpID09PSAtMSkKKyAgICAg
ICAgICAgICAgICBjYW5kaWRhdGVzLnB1c2goZXZlbnQuY2FuZGlkYXRlLmNhbmRpZGF0ZSk7CiAg
ICAgICAgIH07CiAgICAgICAgIHBjLmNyZWF0ZU9mZmVyKCkudGhlbigob2ZmZXIpID0+IHsKICAg
ICAgICAgICAgIHBjLnNldExvY2FsRGVzY3JpcHRpb24ob2ZmZXIpOwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDM0ZmEyMzhiOTI4Nzk2YTlh
MjUzOGU1NmQxZTdiMzJmYWNmN2MxZDQuLjE5ODU4MzI1OWFkMTkwMGYwMDk2ZDBhNzA5YmEzNjZh
OTQxYmQ2NWYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4
cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3Rh
dGlvbnMKQEAgLTM5MCw2ICszOTAsNyBAQCBodHRwL3Rlc3RzL3dlYnJ0YyBbIFNraXAgXQogaHR0
cC93cHQvd2VicnRjIFsgU2tpcCBdCiB3ZWJydGMvZGF0YWNoYW5uZWwgWyBQYXNzIF0KIHdlYnJ0
Yy9kYXRhY2hhbm5lbC9tZG5zLWljZS1jYW5kaWRhdGVzLmh0bWwgWyBTa2lwIF0KK3dlYnJ0Yy9k
YXRhY2hhbm5lbC9maWx0ZXItaWNlLWNhbmRpZGF0ZS5odG1sIFsgU2tpcCBdCiBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENQZWVyQ29ubmVjdGlvbi1zZXRMb2NhbERl
c2NyaXB0aW9uLW9mZmVyLmh0bWwgWyBGYWlsdXJlIF0KIAogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93ZWJydGMtZW5jb2RlZC10cmFuc2Zvcm0gWyBTa2lwIF0KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYnJ0Yy9kYXRhY2hhbm5lbC9maWx0ZXItaWNlLWNhbmRpZGF0ZS5odG1s
IGIvTGF5b3V0VGVzdHMvd2VicnRjL2RhdGFjaGFubmVsL2ZpbHRlci1pY2UtY2FuZGlkYXRlLmh0
bWwKaW5kZXggY2NjNDY5YTE3N2UwMDkyYjY3NTdiNWJjNGQxNzc1M2FiMWZiOTUzYi4uNzRlNzhm
NDkzMjU4NTlmZmI1Njg0MTY1NTFkNTQxZjgwMjc2YjM2NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvd2VicnRjL2RhdGFjaGFubmVsL2ZpbHRlci1pY2UtY2FuZGlkYXRlLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvd2VicnRjL2RhdGFjaGFubmVsL2ZpbHRlci1pY2UtY2FuZGlkYXRlLmh0bWwKQEAg
LTgsNjggKzgsOTEgQEAKICAgPC9oZWFkPgogICA8Ym9keT4KICAgICA8c2NyaXB0PgotcHJvbWlz
ZV90ZXN0KCh0ZXN0KSA9PiB7Ci0gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWpl
Y3QpID0+IHsKLSAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7IHJlamVjdCgiVGVzdCB0aW1lZCBv
dXQiKTsgfSwgNTAwMCk7Ci0KLSAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCi0gICAgICAg
ICAgICBpbnRlcm5hbHMuc2V0SUNFQ2FuZGlkYXRlRmlsdGVyaW5nKHRydWUpOwotCi0gICAgICAg
IHZhciBjb3VudGVyID0gMDsKLSAgICAgICAgdmFyIHBjID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9u
KCk7Ci0gICAgICAgIHBjLmNyZWF0ZURhdGFDaGFubmVsKCdzZW5kRGF0YUNoYW5uZWwnKTsKLSAg
ICAgICAgcGMub25pY2VjYW5kaWRhdGUgPSAoZXZlbnQpID0+IHsKLSAgICAgICAgICAgIGlmIChl
dmVudC5jYW5kaWRhdGUpIHsKLSAgICAgICAgICAgICAgICBjb3VudGVyKys7Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhw
Yy5sb2NhbERlc2NyaXB0aW9uLnNkcC5pbmRleE9mKCJhPWNhbmRpZGF0ZSIpLCAtMSk7Ci0gICAg
ICAgICAgICBhc3NlcnRfdHJ1ZShwYy5sb2NhbERlc2NyaXB0aW9uLnNkcC5pbmRleE9mKCJjPUlO
IElQNCAwLjAuMC4wXHJcbiIpICE9IC0xIHx8IHBjLmxvY2FsRGVzY3JpcHRpb24uc2RwLmluZGV4
T2YoImM9SU4gSVA2IDo6XHJcbiIpICE9IC0xKTsKLSAgICAgICAgICAgIGlmIChjb3VudGVyID09
PSAwKSB7Ci0gICAgICAgICAgICAgICAgcGMuY3JlYXRlT2ZmZXIoKS50aGVuKChvZmZlcikgPT4g
ewotICAgICAgICAgICAgICAgICAgICBhc3NlcnRfdHJ1ZShvZmZlci5zZHAuaW5kZXhPZigiYz1J
TiBJUDQgMC4wLjAuMFxyXG4iKSAhPSAtMSB8fCBwYy5sb2NhbERlc2NyaXB0aW9uLnNkcC5pbmRl
eE9mKCJjPUlOIElQNiA6OlxyXG4iKSAhPSAtMSk7Ci0gICAgICAgICAgICAgICAgICAgIGFzc2Vy
dF9lcXVhbHMob2ZmZXIuc2RwLmluZGV4T2YoImE9Y2FuZGlkYXRlIiksIC0xKTsKLSAgICAgICAg
ICAgICAgICAgICAgcmVzb2x2ZSgpOwotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAg
fSBlbHNlCi0gICAgICAgICAgICAgICAgcmVqZWN0KCJObyBjYW5kaWRhdGUgc2hvdWxkIGJlIGZv
dW5kIik7Ci0gICAgICAgIH07Ci0gICAgICAgIHBjLmNyZWF0ZU9mZmVyKCkudGhlbigob2ZmZXIp
ID0+IHsKLSAgICAgICAgICAgIGFzc2VydF9lcXVhbHMob2ZmZXIuc2RwLmluZGV4T2YoImE9Y2Fu
ZGlkYXRlIiksIC0xKTsKLSAgICAgICAgICAgIHBjLnNldExvY2FsRGVzY3JpcHRpb24ob2ZmZXIp
OwotICAgICAgICB9KTsKK2Z1bmN0aW9uIGVuc3VyZUNhbmRpZGF0ZXNBcmVNRE5TKHNkcCkKK3sK
KyAgICBhc3NlcnRfdHJ1ZShzZHAuaW5kZXhPZigiYz1JTiBJUDQgMC4wLjAuMFxyXG4iKSAhPSAt
MSB8fCBzZHAuaW5kZXhPZigiYz1JTiBJUDYgOjpcclxuIikgIT0gLTEpOworICAgIGNvbnN0IGNh
bmRpZGF0ZXMgPSBzZHAuc3BsaXQoJ1xyXG4nKS5maWx0ZXIobGluZSA9PiB7CisgICAgICAgIHJl
dHVybiBsaW5lLmluZGV4T2YoJ2E9Y2FuZGlkYXRlJykgIT09IC0xOworICAgIH0pOworICAgIGZv
ciAoY29uc3QgY2FuZGlkYXRlIG9mIGNhbmRpZGF0ZXMpCisgICAgICAgIGFzc2VydF9ub3RfZXF1
YWxzKGNhbmRpZGF0ZS5pbmRleE9mKCcubG9jYWwnKSwgLTEpOworfQorCitmdW5jdGlvbiBlbnN1
cmVDYW5kaWRhdGVzQXJlTm90TUROUyhzZHApCit7CisgICAgY29uc3QgY2FuZGlkYXRlcyA9IHNk
cC5zcGxpdCgnXHJcbicpLmZpbHRlcihsaW5lID0+IHsKKyAgICAgICAgcmV0dXJuIGxpbmUuaW5k
ZXhPZignYT1jYW5kaWRhdGUnKSAhPT0gLTE7CiAgICAgfSk7CisgICAgZm9yIChjb25zdCBjYW5k
aWRhdGUgb2YgY2FuZGlkYXRlcykKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhjYW5kaWRhdGUuaW5k
ZXhPZignLmxvY2FsJyksIC0xKTsKK30KKworcHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7
CisgICAgbGV0IHJlc29sdmUsIHJlamVjdDsKKyAgICBjb25zdCBwcm9taXNlID0gbmV3IFByb21p
c2UoKHJlcywgcmVqKSA9PiB7IHJlc29sdmUgPSByZXM7IHJlamVjdCA9IHJlajsgfSk7CisgICAg
c2V0VGltZW91dCgoKSA9PiB7IHJlamVjdCgiVGVzdCB0aW1lZCBvdXQiKTsgfSwgNTAwMCk7CisK
KyAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgaW50ZXJuYWxzLnNldElDRUNhbmRp
ZGF0ZUZpbHRlcmluZyh0cnVlKTsKKworICAgIGxldCBjb3VudGVyID0gMDsKKyAgICBsZXQgcGMg
PSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsKKyAgICBwYy5jcmVhdGVEYXRhQ2hhbm5lbCgnc2Vu
ZERhdGFDaGFubmVsJyk7CisgICAgcGMub25pY2VjYW5kaWRhdGUgPSBhc3luYyAoZXZlbnQpID0+
IHsKKyAgICAgICAgaWYgKGV2ZW50LmNhbmRpZGF0ZSkgeworICAgICAgICAgICAgYXNzZXJ0X25v
dF9lcXVhbHMoZXZlbnQuY2FuZGlkYXRlLmNhbmRpZGF0ZS5pbmRleE9mKCcubG9jYWwnKSwgLTEp
OworICAgICAgICAgICAgY291bnRlcisrOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisgICAgICAgIGVuc3VyZUNhbmRpZGF0ZXNBcmVNRE5TKHBjLmxvY2FsRGVzY3JpcHRpb24uc2Rw
KTsKKyAgICAgICAgaWYgKGNvdW50ZXIgPT09IDApIHsKKyAgICAgICAgICAgIGNvbnN0IG9mZmVy
ID0gYXdhaXQgcGMuY3JlYXRlT2ZmZXIoKTsKKyAgICAgICAgICAgIGF3YWl0IHBjLnNldExvY2Fs
RGVzY3JpcHRpb24ob2ZmZXIpOworICAgICAgICAgICAgZW5zdXJlQ2FuZGlkYXRlc0FyZU1ETlMo
cGMubG9jYWxEZXNjcmlwdGlvbi5zZHApOworICAgICAgICAgICAgcmVzb2x2ZSgpOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIHJlc29sdmUoKTsKKyAgICB9OworICAg
IGNvbnN0IG9mZmVyID0gYXdhaXQgcGMuY3JlYXRlT2ZmZXIoKTsKKyAgICBhc3NlcnRfZXF1YWxz
KG9mZmVyLnNkcC5pbmRleE9mKCJhPWNhbmRpZGF0ZSIpLCAtMSk7CisgICAgYXdhaXQgcGMuc2V0
TG9jYWxEZXNjcmlwdGlvbihvZmZlcik7CisKKyAgICByZXR1cm4gcHJvbWlzZTsKIH0sICJHYXRo
ZXJpbmcgSUNFIGNhbmRpZGF0ZXMgZnJvbSBhIGRhdGEgY2hhbm5lbCBwZWVyIGNvbm5lY3Rpb24g
d2l0aCBJQ0UgY2FuZGlkYXRlIGZpbHRlcmluZyBvbiIpOwogCi1wcm9taXNlX3Rlc3QoKHRlc3Qp
ID0+IHsKLSAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gewotICAg
ICAgICBzZXRUaW1lb3V0KCgpID0+IHsgcmVqZWN0KCJUZXN0IHRpbWVkIG91dCIpOyB9LCA1MDAw
KTsKK3Byb21pc2VfdGVzdChhc3luYyAodGVzdCkgPT4geworICAgIGxldCByZXNvbHZlLCByZWpl
Y3Q7CisgICAgY29uc3QgcHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXMsIHJlaikgPT4geyByZXNv
bHZlID0gcmVzOyByZWplY3QgPSByZWo7IH0pOworICAgIHNldFRpbWVvdXQoKCkgPT4geyByZWpl
Y3QoIlRlc3QgdGltZWQgb3V0Iik7IH0sIDUwMDApOwogCi0JaWYgKHdpbmRvdy5pbnRlcm5hbHMp
Ci0gICAgICAgICAgICBpbnRlcm5hbHMuc2V0SUNFQ2FuZGlkYXRlRmlsdGVyaW5nKGZhbHNlKTsK
KyAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgaW50ZXJuYWxzLnNldElDRUNhbmRp
ZGF0ZUZpbHRlcmluZyhmYWxzZSk7CisgCisgICAgbGV0IGNvdW50ZXIgPSAwOworICAgIGxldCBw
YyA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOworICAgIHBjLmNyZWF0ZURhdGFDaGFubmVsKCdz
ZW5kRGF0YUNoYW5uZWwnKTsKIAotICAgICAgICB2YXIgY291bnRlciA9IDA7Ci0gICAgICAgIHZh
ciBwYyA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOwotICAgICAgICBwYy5jcmVhdGVEYXRhQ2hh
bm5lbCgnc2VuZERhdGFDaGFubmVsJyk7Ci0gICAgICAgIHBjLm9uaWNlY2FuZGlkYXRlID0gKGV2
ZW50KSA9PiB7Ci0gICAgICAgICAgICBpZiAoZXZlbnQuY2FuZGlkYXRlKSB7Ci0gICAgICAgICAg
ICAgICAgY291bnRlcisrOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIGFzc2VydF90cnVlKHBjLmxvY2FsRGVzY3JpcHRpb24uc2RwLmluZGV4T2Yo
ImM9SU4gSVA0IDAuMC4wLjBcclxuIikgPT09IC0xICYmIHBjLmxvY2FsRGVzY3JpcHRpb24uc2Rw
LmluZGV4T2YoImM9SU4gSVA2IDo6XHJcbiIpID09PSAtMSk7Ci0gICAgICAgICAgICBhc3NlcnRf
ZmFsc2UocGMubG9jYWxEZXNjcmlwdGlvbi5zZHAuaW5kZXhPZigiYT1jYW5kaWRhdGUiKSA9PT0g
LTEpOwotICAgICAgICAgICAgaWYgKGNvdW50ZXIgIT09IDApIHsKLSAgICAgICAgICAgICAgICAv
LyBSZWRvaW5nIGFuIG9mZmVyIG5vdyB0aGF0IHdlIGhhdmUgc29tZSBjYW5kaWRhdGVzLgotICAg
ICAgICAgICAgICAgIHBjLmNyZWF0ZU9mZmVyKCkudGhlbigob2ZmZXIpID0+IHsKLSAgICAgICAg
ICAgICAgICAgICAgYXNzZXJ0X3RydWUob2ZmZXIuc2RwLmluZGV4T2YoImM9SU4gSVA0IDAuMC4w
LjBcclxuIikgPT09IC0xICYmIHBjLmxvY2FsRGVzY3JpcHRpb24uc2RwLmluZGV4T2YoImM9SU4g
SVA2IDo6XHJcbiIpID09PSAtMSk7Ci0gICAgICAgICAgICAgICAgICAgIGFzc2VydF9mYWxzZShv
ZmZlci5zZHAuaW5kZXhPZigiYT1jYW5kaWRhdGUiKSA9PT0gLTEpOwotICAgICAgICAgICAgICAg
ICAgICByZXNvbHZlKCk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICB9IGVsc2UK
LSAgICAgICAgICAgICAgICByZWplY3QoIkhvc3QgY2FuZGlkYXRlcyBzaG91bGQgYmUgZm91bmQi
KTsKLSAgICAgICAgfTsKLSAgICAgICAgcGMuY3JlYXRlT2ZmZXIoKS50aGVuKChvZmZlcikgPT4g
eyBwYy5zZXRMb2NhbERlc2NyaXB0aW9uKG9mZmVyKTsgfSk7Ci0gICAgfSk7CisgICAgcGMub25p
Y2VjYW5kaWRhdGUgPSBhc3luYyAoZXZlbnQpID0+IHsKKyAgICAgICAgaWYgKGV2ZW50LmNhbmRp
ZGF0ZSkgeworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhldmVudC5jYW5kaWRhdGUuY2FuZGlk
YXRlLmluZGV4T2YoJy5sb2NhbCcpLCAtMSk7CisgICAgICAgICAgICBjb3VudGVyKys7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgZW5zdXJlQ2FuZGlkYXRlc0FyZU5v
dE1ETlMocGMubG9jYWxEZXNjcmlwdGlvbi5zZHApOworICAgICAgICBpZiAoY291bnRlciAhPT0g
MCkgeworICAgICAgICAgICAgLy8gUmVkb2luZyBhbiBvZmZlciBub3cgdGhhdCB3ZSBoYXZlIHNv
bWUgY2FuZGlkYXRlcy4KKyAgICAgICAgICAgIGNvbnN0IG9mZmVyID0gYXdhaXQgcGMuY3JlYXRl
T2ZmZXIoKTsKKyAgICAgICAgICAgIGF3YWl0IHBjLnNldExvY2FsRGVzY3JpcHRpb24ob2ZmZXIp
OworICAgICAgICAgICAgZW5zdXJlQ2FuZGlkYXRlc0FyZU5vdE1ETlMocGMubG9jYWxEZXNjcmlw
dGlvbi5zZHApOworICAgICAgICAgICAgcmVzb2x2ZSgpOworICAgICAgICB9IGVsc2UKKyAgICAg
ICAgICAgIHJlamVjdCgiSG9zdCBjYW5kaWRhdGVzIHNob3VsZCBiZSBmb3VuZCIpOworICAgIH07
CisgICAgY29uc3Qgb2ZmZXIgPSBhd2FpdCBwYy5jcmVhdGVPZmZlcigpOworICAgIGF3YWl0IHBj
LnNldExvY2FsRGVzY3JpcHRpb24ob2ZmZXIpOworCisgICAgcmV0dXJuIHByb21pc2U7CiB9LCAi
R2F0aGVyaW5nIElDRSBjYW5kaWRhdGVzIGZyb20gYSBkYXRhIGNoYW5uZWwgcGVlciBjb25uZWN0
aW9uIHdpdGggSUNFIGNhbmRpZGF0ZSBmaWx0ZXJpbmcgb2ZmIik7CiAKIHByb21pc2VfdGVzdChh
c3luYyAodGVzdCkgPT4gewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2VicnRjL2ZpbHRlcmlu
Zy1pY2UtY2FuZGlkYXRlLWFmdGVyLXJlbG9hZC5odG1sIGIvTGF5b3V0VGVzdHMvd2VicnRjL2Zp
bHRlcmluZy1pY2UtY2FuZGlkYXRlLWFmdGVyLXJlbG9hZC5odG1sCmluZGV4IGM4NzU1ZjcxZjE5
ZjFhMzAzYzIzYjBiYWFmMTY2M2JkNjhiZDViOWQuLjUyNWRlODRmOWQzMmJiMTQ2MmRlOTdjMmYy
MGU1NWZmY2MxNWU0YjIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3dlYnJ0Yy9maWx0ZXJpbmct
aWNlLWNhbmRpZGF0ZS1hZnRlci1yZWxvYWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy93ZWJydGMv
ZmlsdGVyaW5nLWljZS1jYW5kaWRhdGUtYWZ0ZXItcmVsb2FkLmh0bWwKQEAgLTcsMjQgKzcsMjgg
QEAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CiAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25l
KCk7CiB9CiAKLWZ1bmN0aW9uIGlzRmlsdGVyaW5nRW5hYmxlZCgpCithc3luYyBmdW5jdGlvbiBp
c0ZpbHRlcmluZ0VuYWJsZWQoKQogeworICAgIGxldCByZXNvbHZlLCByZWplY3Q7CisgICAgY29u
c3QgcHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXMsIHJlaikgPT4geyByZXNvbHZlID0gcmVzOyBy
ZWplY3QgPSByZWo7IH0pOworICAgIHNldFRpbWVvdXQoKCkgPT4geyByZWplY3QoIlRlc3QgdGlt
ZWQgb3V0Iik7IH0sIDUwMDApOworCiAgICAgdmFyIHBjID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9u
KCk7CiAgICAgcGMuY3JlYXRlRGF0YUNoYW5uZWwoIiIpOwogCiAgICAgdmFyIGNhbmRpZGF0ZXMg
PSBbXTsKLSAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gewotICAg
ICAgICBwYy5vbmljZWNhbmRpZGF0ZSA9IChldmVudCkgPT4gewotICAgICAgICAgICAgaWYgKGV2
ZW50LmNhbmRpZGF0ZSA9PT0gbnVsbCkgewotICAgICAgICAgICAgICAgIHJlc29sdmUoIWNhbmRp
ZGF0ZXMubGVuZ3RoKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Cisg
ICAgcGMub25pY2VjYW5kaWRhdGUgPSAoZXZlbnQpID0+IHsKKyAgICAgICAgaWYgKGV2ZW50LmNh
bmRpZGF0ZSA9PT0gbnVsbCkgeworICAgICAgICAgICAgcmVzb2x2ZSghY2FuZGlkYXRlcy5sZW5n
dGgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmIChldmVudC5j
YW5kaWRhdGUuY2FuZGlkYXRlLmluZGV4T2YoJy5sb2NhbCcpID09PSAtMSkKICAgICAgICAgICAg
IGNhbmRpZGF0ZXMucHVzaChldmVudC5jYW5kaWRhdGUuY2FuZGlkYXRlKTsKLSAgICAgICAgfTsK
LSAgICAgICAgcGMuY3JlYXRlT2ZmZXIoKS50aGVuKChvZmZlcikgPT4gewotICAgICAgICAgICAg
cGMuc2V0TG9jYWxEZXNjcmlwdGlvbihvZmZlcik7Ci0gICAgICAgIH0pOwotICAgIH0pOworICAg
IH07CisKKyAgICBjb25zdCBvZmZlciA9IGF3YWl0IHBjLmNyZWF0ZU9mZmVyKCk7CisgICAgYXdh
aXQgcGMuc2V0TG9jYWxEZXNjcmlwdGlvbihvZmZlcik7CisgICAgcmV0dXJuIHByb21pc2U7CiB9
CiAKIGZ1bmN0aW9uIGVuZFRlc3QobWVzc2FnZSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>437388</attachid>
            <date>2021-09-05 23:39:14 -0700</date>
            <delta_ts>2021-09-05 23:40:31 -0700</delta_ts>
            <desc>Rebasing</desc>
            <filename>bug-229757-20210906083908.patch</filename>
            <type>text/plain</type>
            <size>87871</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxOTc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzBjNGNlMjliMGY5MzY4
MmRlZWMwNTE1NTAzOGI1MjA2ZWE3ZWYzYi4uNjcxZTY2Mzc1ZWRiM2QzNmY5NjJlYzA5NzQzYjVi
NWRkNmZjYWZjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDIxLTA5LTAzICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgbGlid2Vi
cnRjIG5ldHdvcmsgbWFuYWdlciBHZXRNZG5zUmVzcG9uZGVyCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjk3NTcKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgbGlid2VicnRjIG1ETlMgc3VwcG9ydCBp
bnN0ZWFkIG9mIGFwcGx5aW5nIGl0IHdpdGhpbiBQZWVyQ29ubmVjdGlvbkJhY2tlbmQuCisgICAg
ICAgIFRoaXMgYWxsb3dzIGEgYmV0dGVyIGludGVncmF0aW9uIGFuZCBpcyBtb3JlIGNvbnNpc3Rl
bnQgd2l0aCB0aGUgQVBJIGFuZCBvdGhlciBicm93c2Vycy4KKyAgICAgICAgRm9yIGluc3RhbmNl
IG1ETlMgY2FuZGlkYXRlcyBub3cgc2hvdyB1cCBpbiBsb2NhbCBkZXNjcmlwdGlvbnMuCisgICAg
ICAgIFdlIGludHJvZHVjZSBSVENOZXR3b3JrTWFuYWdlciB3aGljaCBpcyByZXNwb25zaWJsZSBm
b3IgV2ViUlRDIG5ldHdvcmsuCisgICAgICAgIFJUQ05ldHdvcmtNYW5hZ2VyIGlzIHJlc3BvbnNp
YmxlIG9mIGFsbCBwZWVyIGNvbm5lY3Rpb25zIG9mIGEgZG9jdW1lbnQuIEl0IGNhbiB0aHVzIHJl
dXNlIG1ETlMgbmFtZXMgZnJvbSBvbmUgY29ubmVjdGlvbiB0byBhbm90aGVyLgorICAgICAgICBX
aGVuIGRvY3VtZW50IGdvZXMgYXdheSwgUlRDTmV0d29ya01hbmFnZXIgbmVlZHMgdG8gdW5yZWdp
c3RlciBhbGwgbUROUyBuYW1lcy4KKyAgICAgICAgVXBkYXRlIGV4aXN0aW5nIFNEUCBhbmQgSUNF
IGNhbmRpZGF0ZSBmaWx0ZXJpbmcgY29kZSBieSBvbmx5IGtlZXBpbmcgZGVidWcgYXNzZXJ0IHRo
YXQgd2UgZG8gbm90IGxlYWsgcHJpdmF0ZSBJUCBhZGRyZXNzZXMgaW4gY2FzZSBJQ0UgZmlsdGVy
aW5nIGlzIG9uLgorICAgICAgICBXSzEgZG9lcyBub3Qgc3VwcG9ydCBtRE5TIGNhbmRpZGF0ZXMu
IEluIHRoYXQgY2FzZSwgd2UgZXhwb3NlIHByaXZhdGUgSVAgYWRkcmVzc2VzLgorCisgICAgICAg
IENvdmVyZWQgYnkgdXBkYXRlZCBhbmQgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBIZWFk
ZXJzLmNtYWtlOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25C
YWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uQmFja2VuZDo6Y3Jl
YXRlT2ZmZXJTdWNjZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb25CYWNr
ZW5kOjplbmFibGVJQ0VDYW5kaWRhdGVGaWx0ZXJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UGVl
ckNvbm5lY3Rpb25CYWNrZW5kOjpkaXNhYmxlSUNFQ2FuZGlkYXRlRmlsdGVyaW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uQmFja2VuZDo6dmFsaWRhdGVTRFAgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb25CYWNrZW5kOjpuZXdJQ0VDYW5kaWRhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb25CYWNrZW5kOjpkb25lR2F0aGVyaW5n
Q2FuZGlkYXRlcyk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlv
bkJhY2tlbmQuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0NvbnRyb2xsZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRDQ29udHJvbGxlcjo6YWRkKToKKyAgICAgICAgKFdl
YkNvcmU6OlJUQ0NvbnRyb2xsZXI6OmRpc2FibGVJQ0VDYW5kaWRhdGVGaWx0ZXJpbmdGb3JBbGxP
cmlnaW5zKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0NvbnRyb2xsZXI6OmRpc2FibGVJQ0VDYW5k
aWRhdGVGaWx0ZXJpbmdGb3JEb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpSVENDb250cm9s
bGVyOjplbmFibGVJQ0VDYW5kaWRhdGVGaWx0ZXJpbmcpOgorICAgICAgICAqIE1vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDTmV0d29ya01hbmFnZXIuaDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy9t
ZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRwb2ludC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpzZXRDb25maWd1cmF0aW9uKToKKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVj
dGlvbkJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUGVlckNvbm5lY3Rp
b25CYWNrZW5kOjpjdXJyZW50TG9jYWxEZXNjcmlwdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OnBlbmRpbmdMb2NhbERlc2NyaXB0
aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFj
a2VuZDo6bG9jYWxEZXNjcmlwdGlvbiBjb25zdCk6CisgICAgICAgICogV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6d2lsbEJlUmVtb3ZlZEZyb21GcmFtZSk6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudDo6c3VzcGVuZCk6CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cnRjTmV0d29ya01hbmFnZXIpOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnQ6OnNldFJUQ05ldHdvcmtNYW5hZ2VyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9tZWRpYXN0cmVhbS9NRE5TUmVnaXN0ZXJFcnJvci5oOiBBZGRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUHJvdmlkZXI6OmNyZWF0ZVBlZXJDb25uZWN0aW9uKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlk
ZXIuaDoKKwogMjAyMS0wOS0wMyAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAK
ICAgICAgICAgU2lnbmFsaW5nIHN0YXRlIGNoZWNrIHdoZW4gYXBwbHlpbmcgYSBsb2NhbCBvciBy
ZW1vdGUgZGVzY3JpcHRpb24gaXMgbm8gbG9uZ2VyIGFsaWduZWQgd2l0aCB0aGUgV2ViUlRDIHNw
ZWMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKaW5kZXggZWQxYzc5YjI2Zjk5NzBiMDQyMTBmODFjN2MwZjgwYTUyMWY3ODM2Ny4u
MTNjYzUxMjU5ZTI4ZjZjNTZhNGExMzNjMDZkZGFmNWJiOGNmYTE1NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NiBAQAorMjAyMS0wOS0wMyAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+
CisKKyAgICAgICAgSW1wbGVtZW50IGxpYndlYnJ0YyBuZXR3b3JrIG1hbmFnZXIgR2V0TWRuc1Jl
c3BvbmRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjI5NzU3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
SW1wbGVtZW50IFJUQ05ldHdvcmtNYW5hZ2VyIEFQSSBpbiBMaWJXZWJSVENOZXR3b3JrTWFuYWdl
ciB0byBoYW5kbGUgcGVyLWRvY3VtZW50IG1ETlMgcmVnaXN0cmF0aW9ucy4KKyAgICAgICAgTW92
ZSBwYXJ0IG9mIFdlYlJUQ01vbml0b3IgdG8gTGliV2ViUlRDTmV0d29ya01hbmFnZXIuCisgICAg
ICAgIExpYldlYlJUQ05ldHdvcmtNYW5hZ2VyIGlzIGEgV2ViUlRDTW9uaXRvciBvYnNlcnZlciB0
byBnZXQgdGhlIGxpc3Qgb2YgbmV0d29ya3MuCisgICAgICAgIFNpbmNlIGxpYndlYnJ0YyBpcyBu
b3cgZG9pbmcgdGhlIG1ETlMgcmVnaXN0cmF0aW9uLCB3ZSBuZWVkIHRvIHJldHVybiBhIG1ETlMg
bmFtZSBldmVuIGlmIHJlZ2lzdHJhdGlvbiBmYWlsZWQuCisgICAgICAgIFdlIHVwZGF0ZSBXZWJN
RE5TUmVnaXN0ZXIgYW5kIE5ldHdvcmtNRE5TUmVnaXN0ZXIgYWNjb3JkaW5nbHkuCisKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya01ETlNSZWdpc3Rlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OnJlZ2lzdGVyTUROU05hbWVDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtNRE5TUmVnaXN0ZXI6OnJlZ2lzdGVyTUROU05hbWUpOgorICAgICAgICAqIFNvdXJj
ZXMudHh0OgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDTmV0d29ya01hbmFnZXIu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDTmV0d29ya01hbmFnZXI6Omdl
dE9yQ3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDTmV0d29ya01hbmFnZXI6Okxp
YldlYlJUQ05ldHdvcmtNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDTmV0d29y
a01hbmFnZXI6On5MaWJXZWJSVENOZXR3b3JrTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6Okxp
YldlYlJUQ05ldHdvcmtNYW5hZ2VyOjp1bnJlZ2lzdGVyTUROU05hbWVzKToKKyAgICAgICAgKFdl
YktpdDo6TGliV2ViUlRDTmV0d29ya01hbmFnZXI6OlN0YXJ0VXBkYXRpbmcpOgorICAgICAgICAo
V2ViS2l0OjpMaWJXZWJSVENOZXR3b3JrTWFuYWdlcjo6U3RvcFVwZGF0aW5nKToKKyAgICAgICAg
KFdlYktpdDo6TGliV2ViUlRDTmV0d29ya01hbmFnZXI6OkdldE1kbnNSZXNwb25kZXIgY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENOZXR3b3JrTWFuYWdlcjo6bmV0d29ya3NDaGFu
Z2VkKToKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDTmV0d29ya01hbmFnZXI6Om5ldHdvcmtQ
cm9jZXNzQ3Jhc2hlZCk6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ05ldHdvcmtNYW5hZ2Vy
OjpDcmVhdGVOYW1lRm9yQWRkcmVzcyk6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ05ldHdv
cmtNYW5hZ2VyOjpSZW1vdmVOYW1lRm9yQWRkcmVzcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9O
ZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENOZXR3b3JrTWFuYWdlci5oOiBBZGRlZC4KKyAgICAgICAg
KiBXZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6TGliV2ViUlRDUHJvdmlkZXI6OmNyZWF0ZVBlZXJDb25uZWN0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6TGliV2ViUlRDUHJvdmlkZXI6OmRpc2FibGVOb25Mb2NhbGhvc3RDb25u
ZWN0aW9ucyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQ
cm92aWRlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvV2ViTUROU1Jl
Z2lzdGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTUROU1JlZ2lzdGVyOjpmaW5pc2hlZFJl
Z2lzdGVyaW5nTUROU05hbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJNRE5TUmVnaXN0ZXI6OnJl
Z2lzdGVyTUROU05hbWUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvV2Vi
TUROU1JlZ2lzdGVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJN
RE5TUmVnaXN0ZXIubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL3dl
YnJ0Yy9XZWJSVENNb25pdG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUlRDTW9uaXRvcjo6
c3RhcnRVcGRhdGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlJUQ01vbml0b3I6OnN0b3BVcGRh
dGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlJUQ01vbml0b3I6Om5ldHdvcmtzQ2hhbmdlZCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlJUQ01vbml0b3I6Om5ldHdvcmtQcm9jZXNzQ3Jhc2hlZCk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJSVENNb25pdG9yLmg6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlJUQ01vbml0b3I6OmFkZE9ic2VydmVyKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUlRDTW9uaXRvcjo6cmVtb3ZlT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJSVENNb25pdG9yOjpkaWRSZWNlaXZlTmV0d29ya0xpc3QgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJSVENNb25pdG9yOjpuZXR3b3JrTGlzdCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlJUQ01vbml0b3I6OmlwdjQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJSVENNb25p
dG9yOjppcHY2IGNvbnN0KToKKwogMjAyMS0wOS0wMiAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hz
aWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMjgwNzY3KTogQ2FyZXQgY29s
b3IgaXMgYmxhY2sgYWZ0ZXIgcGFzdGluZyByaWNoIHRleHQgaW4gTWFpbCBjb21wb3NlIGluIGRh
cmsgbW9kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJj
ZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggNTgzMjUxOTRiMzNhYTIyYjdhMmUwNWZjNDg0
Y2NiM2U0MGEwZDRiNC4uMzhiYTVkYzQ5OWJmYzg4MjE3N2M4OGU2M2RhOGJkMDU1NTEyM2U1YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9IZWFkZXJzLmNtYWtlCkBAIC0xMTUsMTEgKzExNSwxNCBAQCBzZXQoV2ViQ29yZV9QUklW
QVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hh
bm5lbC5oCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRs
ZXIuaAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVTb3VyY2Uu
aAorICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDTmV0d29ya01hbmFnZXIuaAogICAgIE1vZHVs
ZXMvbWVkaWFzdHJlYW0vU1RVTk1lc3NhZ2VQYXJzaW5nLmgKICAgICBNb2R1bGVzL21lZGlhc3Ry
ZWFtL1VzZXJNZWRpYUNsaWVudC5oCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFD
b250cm9sbGVyLmgKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuaAog
CisgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDVXRpbHMuaAorCiAg
ICAgTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaAogCiAgICAgTW9kdWxl
cy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5oCkBAIC0xNDE0LDYgKzE0MTcsNyBAQCBzZXQo
V2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAKICAgICBwbGF0Zm9ybS9tZWRpYXN0
cmVhbS9DYXB0dXJlRGV2aWNlLmgKICAgICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2
aWNlTWFuYWdlci5oCisgICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vTUROU1JlZ2lzdGVyRXJyb3Iu
aAogICAgIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHMuaAogICAgIHBsYXRm
b3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUHJpdmF0ZS5oCiAgICAgcGxhdGZvcm0vbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW1SZXF1ZXN0LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAppbmRleCBh
YmRhODYxNDQ0ZTFlOTA1MDFiMTM1YzZiNDQwOTRiNDUzZGY5NDMyLi42MDk5ZDYxMjhkNjMyNjhh
NWZkMjU5N2Y2NzIwNmI1NTI1Nzk0NmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwCkBAIC04
Miw2ICs4MiwxMSBAQCBQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OlBlZXJDb25uZWN0aW9uQmFja2Vu
ZChSVENQZWVyQ29ubmVjdGlvbiYgcGVlckNvbm5lY3Rpb24pCiAgICAgLCBtX2xvZ0lkZW50aWZp
ZXIocGVlckNvbm5lY3Rpb24ubG9nSWRlbnRpZmllcigpKQogI2VuZGlmCiB7CisjaWYgVVNFKExJ
QldFQlJUQykKKyAgICBhdXRvKiBkb2N1bWVudCA9IHBlZXJDb25uZWN0aW9uLmRvY3VtZW50KCk7
CisgICAgaWYgKGF1dG8qIHBhZ2UgPSBkb2N1bWVudCA/IGRvY3VtZW50LT5wYWdlKCkgOiBudWxs
cHRyKQorICAgICAgICBtX3Nob3VsZEZpbHRlcklDRUNhbmRpZGF0ZXMgPSBwYWdlLT5saWJXZWJS
VENQcm92aWRlcigpLmlzU3VwcG9ydGluZ01ETlMoKTsKKyNlbmRpZgogfQogCiBQZWVyQ29ubmVj
dGlvbkJhY2tlbmQ6On5QZWVyQ29ubmVjdGlvbkJhY2tlbmQoKSA9IGRlZmF1bHQ7CkBAIC0xMDEs
NyArMTA2LDggQEAgdm9pZCBQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmNyZWF0ZU9mZmVyU3VjY2Vl
ZGVkKFN0cmluZyYmIHNkcCkKICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJDcmVhdGUg
b2ZmZXIgc3VjY2VlZGVkOlxuIiwgc2RwKTsKIAogICAgIEFTU0VSVChtX29mZmVyQW5zd2VyUHJv
bWlzZSk7Ci0gICAgbV9wZWVyQ29ubmVjdGlvbi5kb1Rhc2soW3RoaXMsIHByb21pc2UgPSBXVEZN
b3ZlKG1fb2ZmZXJBbnN3ZXJQcm9taXNlKSwgc2RwID0gZmlsdGVyU0RQKFdURk1vdmUoc2RwKSld
KCkgbXV0YWJsZSB7CisgICAgdmFsaWRhdGVTRFAoc2RwKTsKKyAgICBtX3BlZXJDb25uZWN0aW9u
LmRvVGFzayhbdGhpcywgcHJvbWlzZSA9IFdURk1vdmUobV9vZmZlckFuc3dlclByb21pc2UpLCBz
ZHAgPSBXVEZNb3ZlKHNkcCldKCkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChtX3BlZXJDb25uZWN0
aW9uLmlzQ2xvc2VkKCkpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTMyNCw4MSArMzMwLDE5
IEBAIHZvaWQgUGVlckNvbm5lY3Rpb25CYWNrZW5kOjplbmFibGVJQ0VDYW5kaWRhdGVGaWx0ZXJp
bmcoKQogdm9pZCBQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmRpc2FibGVJQ0VDYW5kaWRhdGVGaWx0
ZXJpbmcoKQogewogICAgIG1fc2hvdWxkRmlsdGVySUNFQ2FuZGlkYXRlcyA9IGZhbHNlOwotICAg
IGZvciAoYXV0byYgcGVuZGluZ0lDRUNhbmRpZGF0ZSA6IG1fcGVuZGluZ0lDRUNhbmRpZGF0ZXMp
Ci0gICAgICAgIGZpcmVJQ0VDYW5kaWRhdGVFdmVudChSVENJY2VDYW5kaWRhdGU6OmNyZWF0ZShX
VEZNb3ZlKHBlbmRpbmdJQ0VDYW5kaWRhdGUuc2RwKSwgV1RGTW92ZShwZW5kaW5nSUNFQ2FuZGlk
YXRlLm1pZCksIHBlbmRpbmdJQ0VDYW5kaWRhdGUuc2RwTUxpbmVJbmRleCksIFdURk1vdmUocGVu
ZGluZ0lDRUNhbmRpZGF0ZS5zZXJ2ZXJVUkwpKTsKLSAgICBtX3BlbmRpbmdJQ0VDYW5kaWRhdGVz
LmNsZWFyKCk7Ci19Ci0KLXN0YXRpYyBTdHJpbmcgZmlsdGVySUNFQ2FuZGlkYXRlKFN0cmluZyYm
IHNkcCkKLXsKLSAgICBBU1NFUlQoIXNkcC5jb250YWlucygiIGhvc3QgIikpOwotCi0gICAgaWYg
KCFzZHAuY29udGFpbnMoIiByYWRkciAiKSkKLSAgICAgICAgcmV0dXJuIFdURk1vdmUoc2RwKTsK
LQotICAgIGJvb2wgc2tpcE5leHRJdGVtID0gZmFsc2U7Ci0gICAgYm9vbCBpc0ZpcnN0ID0gdHJ1
ZTsKLSAgICBTdHJpbmdCdWlsZGVyIGZpbHRlcmVkU0RQOwotICAgIHNkcC5zcGxpdCgnICcsIFsm
XShTdHJpbmdWaWV3IGl0ZW0pIHsKLSAgICAgICAgaWYgKHNraXBOZXh0SXRlbSkgewotICAgICAg
ICAgICAgc2tpcE5leHRJdGVtID0gZmFsc2U7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IH0KLSAgICAgICAgaWYgKGl0ZW0gPT0gInJhZGRyIikgewotICAgICAgICAgICAgZmlsdGVyZWRT
RFAuYXBwZW5kKCIgcmFkZHIgMC4wLjAuMCIpOwotICAgICAgICAgICAgc2tpcE5leHRJdGVtID0g
dHJ1ZTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBpZiAoaXRlbSA9
PSAicnBvcnQiKSB7Ci0gICAgICAgICAgICBmaWx0ZXJlZFNEUC5hcHBlbmQoIiBycG9ydCAwIik7
Ci0gICAgICAgICAgICBza2lwTmV4dEl0ZW0gPSB0cnVlOwotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICB9Ci0gICAgICAgIGlmIChpc0ZpcnN0KQotICAgICAgICAgICAgaXNGaXJzdCA9IGZh
bHNlOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBmaWx0ZXJlZFNEUC5hcHBlbmQoJyAnKTsK
LSAgICAgICAgZmlsdGVyZWRTRFAuYXBwZW5kKGl0ZW0pOwotICAgIH0pOwotICAgIHJldHVybiBm
aWx0ZXJlZFNEUC50b1N0cmluZygpOwogfQogCi1TdHJpbmcgUGVlckNvbm5lY3Rpb25CYWNrZW5k
OjpmaWx0ZXJTRFAoU3RyaW5nJiYgc2RwKSBjb25zdAordm9pZCBQZWVyQ29ubmVjdGlvbkJhY2tl
bmQ6OnZhbGlkYXRlU0RQKGNvbnN0IFN0cmluZyYgc2RwKSBjb25zdAogeworI2lmbmRlZiBOREVC
VUcKICAgICBpZiAoIW1fc2hvdWxkRmlsdGVySUNFQ2FuZGlkYXRlcykKLSAgICAgICAgcmV0dXJu
IFdURk1vdmUoc2RwKTsKLQotICAgIFN0cmluZ0J1aWxkZXIgZmlsdGVyZWRTRFA7Ci0gICAgc2Rw
LnNwbGl0KCdcbicsIFt0aGlzLCAmZmlsdGVyZWRTRFBdKFN0cmluZ1ZpZXcgbGluZSkgewotICAg
ICAgICBpZiAobGluZS5zdGFydHNXaXRoKCJjPUlOIElQNCIpKSB7Ci0gICAgICAgICAgICBmaWx0
ZXJlZFNEUC5hcHBlbmQoImM9SU4gSVA0IDAuMC4wLjBcclxuIik7Ci0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGxpbmUuc3RhcnRzV2l0aCgiYz1JTiBJUDYiKSkg
ewotICAgICAgICAgICAgZmlsdGVyZWRTRFAuYXBwZW5kKCJjPUlOIElQNiA6OlxyXG4iKTsKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBpZiAoIWxpbmUuc3RhcnRzV2l0
aCgiYT1jYW5kaWRhdGUiKSkgewotICAgICAgICAgICAgZmlsdGVyZWRTRFAuYXBwZW5kKGxpbmUp
OwotICAgICAgICAgICAgZmlsdGVyZWRTRFAuYXBwZW5kKCdcbicpOwotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICB9Ci0gICAgICAgIGlmIChsaW5lLmZpbmQoIiBob3N0ICIsIDExKSA9PSBu
b3RGb3VuZCkgewotICAgICAgICAgICAgZmlsdGVyZWRTRFAuYXBwZW5kKGZpbHRlcklDRUNhbmRp
ZGF0ZShsaW5lLnRvU3RyaW5nKCkpKTsKLSAgICAgICAgICAgIGZpbHRlcmVkU0RQLmFwcGVuZCgn
XG4nKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGF1dG8gaXBB
ZGRyZXNzID0gZXh0cmFjdElQQWRkcmVzcyhsaW5lKTsKLSAgICAgICAgYXV0byBtZG5zTmFtZSA9
IG1faXBBZGRyZXNzVG9NRE5TTmFtZU1hcC5nZXQoaXBBZGRyZXNzKTsKLSAgICAgICAgaWYgKG1k
bnNOYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgYXV0byBzZHAg
PSBsaW5lLnRvU3RyaW5nKCk7Ci0gICAgICAgIHNkcC5yZXBsYWNlKGlwQWRkcmVzcywgbWRuc05h
bWUpOwotICAgICAgICBmaWx0ZXJlZFNEUC5hcHBlbmQoc2RwKTsKLSAgICAgICAgZmlsdGVyZWRT
RFAuYXBwZW5kKCdcbicpOworICAgICAgICByZXR1cm47CisgICAgc2RwLnNwbGl0KCdcbicsIFtd
KGF1dG8gbGluZSkgeworICAgICAgICBBU1NFUlQoIWxpbmUuc3RhcnRzV2l0aCgiYT1jYW5kaWRh
dGUiKSB8fCBsaW5lLmNvbnRhaW5zKCIubG9jYWwiKSk7CiAgICAgfSk7Ci0gICAgcmV0dXJuIGZp
bHRlcmVkU0RQLnRvU3RyaW5nKCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShzZHApOworI2Vu
ZGlmCiB9CiAKIHZvaWQgUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpuZXdJQ0VDYW5kaWRhdGUoU3Ry
aW5nJiYgc2RwLCBTdHJpbmcmJiBtaWQsIHVuc2lnbmVkIHNob3J0IHNkcE1MaW5lSW5kZXgsIFN0
cmluZyYmIHNlcnZlclVSTCkKQEAgLTQwOCwyMiArMzUyLDggQEAgdm9pZCBQZWVyQ29ubmVjdGlv
bkJhY2tlbmQ6Om5ld0lDRUNhbmRpZGF0ZShTdHJpbmcmJiBzZHAsIFN0cmluZyYmIG1pZCwgdW5z
aWduZWQKICAgICAgICAgQUxXQVlTX0xPRyhsb2dTaXRlSWRlbnRpZmllciwgIkdhdGhlcmVkIGlj
ZSBjYW5kaWRhdGU6Iiwgc2RwKTsKICAgICAgICAgbV9maW5pc2hlZEdhdGhlcmluZ0NhbmRpZGF0
ZXMgPSBmYWxzZTsKIAotICAgICAgICBpZiAoIW1fc2hvdWxkRmlsdGVySUNFQ2FuZGlkYXRlcykg
ewotICAgICAgICAgICAgZmlyZUlDRUNhbmRpZGF0ZUV2ZW50KFJUQ0ljZUNhbmRpZGF0ZTo6Y3Jl
YXRlKFdURk1vdmUoc2RwKSwgV1RGTW92ZShtaWQpLCBzZHBNTGluZUluZGV4KSwgV1RGTW92ZShz
ZXJ2ZXJVUkwpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBpZiAo
c2RwLmZpbmQoIiBob3N0ICIsIDApICE9IG5vdEZvdW5kKSB7Ci0gICAgICAgICAgICAvLyBGSVhN
RTogV2UgbWlnaHQgbmVlZCB0byBjbGVhciBhbGwgcGVuZGluZyBjYW5kaWRhdGVzIHdoZW4gc2V0
dGluZyBhZ2FpbiBsb2NhbCBkZXNjcmlwdGlvbi4KLSAgICAgICAgICAgIG1fcGVuZGluZ0lDRUNh
bmRpZGF0ZXMuYXBwZW5kKFBlbmRpbmdJQ0VDYW5kaWRhdGUgeyBTdHJpbmcgeyBzZHAgfSwgV1RG
TW92ZShtaWQpLCBzZHBNTGluZUluZGV4LCBXVEZNb3ZlKHNlcnZlclVSTCkgfSk7Ci0gICAgICAg
ICAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS53ZWJSVENN
RE5TSUNFQ2FuZGlkYXRlc0VuYWJsZWQoKSkgewotICAgICAgICAgICAgICAgIGF1dG8gaXBBZGRy
ZXNzID0gZXh0cmFjdElQQWRkcmVzcyhzZHApOwotICAgICAgICAgICAgICAgIC8vIFdlIHJlc3Ry
aWN0IHRvIElQdjQgY2FuZGlkYXRlcyBmb3Igbm93LgotICAgICAgICAgICAgICAgIGlmIChpcEFk
ZHJlc3MuY29udGFpbnMoJy4nKSkKLSAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJNRE5TTmFt
ZShpcEFkZHJlc3MpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICB9Ci0gICAgICAgIGZpcmVJQ0VDYW5kaWRhdGVFdmVudChSVENJY2VDYW5kaWRhdGU6OmNyZWF0
ZShmaWx0ZXJJQ0VDYW5kaWRhdGUoV1RGTW92ZShzZHApKSwgV1RGTW92ZShtaWQpLCBzZHBNTGlu
ZUluZGV4KSwgV1RGTW92ZShzZXJ2ZXJVUkwpKTsKKyAgICAgICAgQVNTRVJUKCFtX3Nob3VsZEZp
bHRlcklDRUNhbmRpZGF0ZXMgfHwgc2RwLmNvbnRhaW5zKCIubG9jYWwiKSk7CisgICAgICAgIGZp
cmVJQ0VDYW5kaWRhdGVFdmVudChSVENJY2VDYW5kaWRhdGU6OmNyZWF0ZShXVEZNb3ZlKHNkcCks
IFdURk1vdmUobWlkKSwgc2RwTUxpbmVJbmRleCksIFdURk1vdmUoc2VydmVyVVJMKSk7CiAgICAg
fSk7CiB9CiAKQEAgLTQzMywxMiArMzYzLDggQEAgdm9pZCBQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6
OmRvbmVHYXRoZXJpbmdDYW5kaWRhdGVzKCkKICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIs
ICJGaW5pc2hlZCBpY2UgY2FuZGlkYXRlIGdhdGhlcmluZyIpOwogICAgIG1fZmluaXNoZWRHYXRo
ZXJpbmdDYW5kaWRhdGVzID0gdHJ1ZTsKIAotICAgIGlmIChtX3dhaXRpbmdGb3JNRE5TUmVnaXN0
cmF0aW9uKQotICAgICAgICByZXR1cm47Ci0KICAgICBtX3BlZXJDb25uZWN0aW9uLmRpc3BhdGNo
RXZlbnRXaGVuRmVhc2libGUoUlRDUGVlckNvbm5lY3Rpb25JY2VFdmVudDo6Y3JlYXRlKEV2ZW50
OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObywgbnVsbHB0ciwgeyB9KSk7
CiAgICAgbV9wZWVyQ29ubmVjdGlvbi51cGRhdGVJY2VHYXRoZXJpbmdTdGF0ZShSVENJY2VHYXRo
ZXJpbmdTdGF0ZTo6Q29tcGxldGUpOwotICAgIG1fcGVuZGluZ0lDRUNhbmRpZGF0ZXMuY2xlYXIo
KTsKIH0KIAogdm9pZCBQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmVuZE9mSWNlQ2FuZGlkYXRlcyhE
T01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlKQpAQCAtNDQ2LDQ1ICszNzIsNiBAQCB2
b2lkIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6ZW5kT2ZJY2VDYW5kaWRhdGVzKERPTVByb21pc2VE
ZWZlcnJlZDx2b2lkPiYmIHByb21pcwogICAgIHByb21pc2UucmVzb2x2ZSgpOwogfQogCi12b2lk
IFBlZXJDb25uZWN0aW9uQmFja2VuZDo6cmVnaXN0ZXJNRE5TTmFtZShjb25zdCBTdHJpbmcmIGlw
QWRkcmVzcykKLXsKLSAgICArK21fd2FpdGluZ0Zvck1ETlNSZWdpc3RyYXRpb247Ci0gICAgYXV0
byYgZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oKm1fcGVlckNvbm5lY3Rpb24uc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpKTsKLSAgICBhdXRvJiBwcm92aWRlciA9IGRvY3VtZW50LnBhZ2Uo
KS0+bGliV2ViUlRDUHJvdmlkZXIoKTsKLSAgICBwcm92aWRlci5yZWdpc3Rlck1ETlNOYW1lKGRv
Y3VtZW50LmlkZW50aWZpZXIoKSwgaXBBZGRyZXNzLCBbcGVlckNvbm5lY3Rpb24gPSBtYWtlUmVm
KG1fcGVlckNvbm5lY3Rpb24pLCB0aGlzLCBpcEFkZHJlc3NdIChMaWJXZWJSVENQcm92aWRlcjo6
TUROU05hbWVPckVycm9yJiYgcmVzdWx0KSB7Ci0gICAgICAgIGlmIChwZWVyQ29ubmVjdGlvbi0+
aXNTdG9wcGVkKCkpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgLS1tX3dhaXRpbmdG
b3JNRE5TUmVnaXN0cmF0aW9uOwotICAgICAgICBpZiAoIXJlc3VsdC5oYXNfdmFsdWUoKSkgewot
ICAgICAgICAgICAgbV9wZWVyQ29ubmVjdGlvbi5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmFk
ZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcs
IG1ha2VTdHJpbmcoIk1ETlMgcmVnaXN0cmF0aW9uIG9mIGEgaG9zdCBjYW5kaWRhdGUgZmFpbGVk
IHdpdGggZXJyb3IgIiwgKHVuc2lnbmVkKXJlc3VsdC5lcnJvcigpKSk7Ci0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICB0aGlzLT5maW5pc2hlZFJlZ2lzdGVyaW5nTURO
U05hbWUoaXBBZGRyZXNzLCByZXN1bHQudmFsdWUoKSk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgUGVl
ckNvbm5lY3Rpb25CYWNrZW5kOjpmaW5pc2hlZFJlZ2lzdGVyaW5nTUROU05hbWUoY29uc3QgU3Ry
aW5nJiBpcEFkZHJlc3MsIGNvbnN0IFN0cmluZyYgbmFtZSkKLXsKLSAgICBtX2lwQWRkcmVzc1Rv
TUROU05hbWVNYXAuYWRkKGlwQWRkcmVzcywgbmFtZSk7Ci0gICAgVmVjdG9yPFBlbmRpbmdJQ0VD
YW5kaWRhdGUqPiBjYW5kaWRhdGVzOwotICAgIGZvciAoYXV0byYgY2FuZGlkYXRlIDogbV9wZW5k
aW5nSUNFQ2FuZGlkYXRlcykgewotICAgICAgICBpZiAoY2FuZGlkYXRlLnNkcC5maW5kKGlwQWRk
cmVzcykgIT0gbm90Rm91bmQpIHsKLSAgICAgICAgICAgIGF1dG8gc2RwID0gY2FuZGlkYXRlLnNk
cDsKLSAgICAgICAgICAgIHNkcC5yZXBsYWNlKGlwQWRkcmVzcywgbmFtZSk7Ci0gICAgICAgICAg
ICBmaXJlSUNFQ2FuZGlkYXRlRXZlbnQoUlRDSWNlQ2FuZGlkYXRlOjpjcmVhdGUoV1RGTW92ZShz
ZHApLCBXVEZNb3ZlKGNhbmRpZGF0ZS5taWQpLCBjYW5kaWRhdGUuc2RwTUxpbmVJbmRleCksIFdU
Rk1vdmUoY2FuZGlkYXRlLnNlcnZlclVSTCkpOwotICAgICAgICAgICAgY2FuZGlkYXRlcy5hcHBl
bmQoJmNhbmRpZGF0ZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgbV9wZW5kaW5nSUNFQ2FuZGlk
YXRlcy5yZW1vdmVBbGxNYXRjaGluZyhbJl0gKGNvbnN0IGF1dG8mIGNhbmRpZGF0ZSkgewotICAg
ICAgICByZXR1cm4gY2FuZGlkYXRlcy5jb250YWlucygmY2FuZGlkYXRlKTsKLSAgICB9KTsKLQot
ICAgIGlmICghbV93YWl0aW5nRm9yTUROU1JlZ2lzdHJhdGlvbiAmJiBtX2ZpbmlzaGVkR2F0aGVy
aW5nQ2FuZGlkYXRlcykKLSAgICAgICAgZG9uZUdhdGhlcmluZ0NhbmRpZGF0ZXMoKTsKLX0KLQog
dm9pZCBQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OnVwZGF0ZVNpZ25hbGluZ1N0YXRlKFJUQ1NpZ25h
bGluZ1N0YXRlIG5ld1NpZ25hbGluZ1N0YXRlKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJD
b25uZWN0aW9uQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Q
ZWVyQ29ubmVjdGlvbkJhY2tlbmQuaAppbmRleCBjNmQxODgxOWQyNzdmZjkwOTI2ZWQ1YTQ1MTc5
OGM3OTI3ZGZkOTk5Li5hYzY4MjhjMDM5NTNiYmE0ZGZjMzBkMGU1N2E5OTI3NjYwYTk3N2I5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0
aW9uQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVl
ckNvbm5lY3Rpb25CYWNrZW5kLmgKQEAgLTIwNyw3ICsyMDcsNyBAQCBwcm90ZWN0ZWQ6CiAgICAg
dm9pZCBhZGRJY2VDYW5kaWRhdGVTdWNjZWVkZWQoKTsKICAgICB2b2lkIGFkZEljZUNhbmRpZGF0
ZUZhaWxlZChFeGNlcHRpb24mJik7CiAKLSAgICBTdHJpbmcgZmlsdGVyU0RQKFN0cmluZyYmKSBj
b25zdDsKKyAgICB2b2lkIHZhbGlkYXRlU0RQKGNvbnN0IFN0cmluZyYpIGNvbnN0OwogCiAgICAg
c3RydWN0IFBlbmRpbmdUcmFja0V2ZW50IHsKICAgICAgICAgUmVmPFJUQ1J0cFJlY2VpdmVyPiBy
ZWNlaXZlcjsKQEAgLTIyNiw4ICsyMjYsNiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBl
bmRPZkljZUNhbmRpZGF0ZXMoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYpOwogICAgIHZpcnR1
YWwgdm9pZCBkb1N0b3AoKSA9IDA7CiAKLSAgICB2b2lkIHJlZ2lzdGVyTUROU05hbWUoY29uc3Qg
U3RyaW5nJiBpcEFkZHJlc3MpOwotCiBwcm90ZWN0ZWQ6CiAgICAgUlRDUGVlckNvbm5lY3Rpb24m
IG1fcGVlckNvbm5lY3Rpb247CiAKQEAgLTIzNiwyNCArMjM0LDE0IEBAIHByaXZhdGU6CiAgICAg
c3RkOjp1bmlxdWVfcHRyPERPTVByb21pc2VEZWZlcnJlZDx2b2lkPj4gbV9zZXREZXNjcmlwdGlv
blByb21pc2U7CiAKICAgICBib29sIG1fc2hvdWxkRmlsdGVySUNFQ2FuZGlkYXRlcyB7IHRydWUg
fTsKLSAgICBzdHJ1Y3QgUGVuZGluZ0lDRUNhbmRpZGF0ZSB7Ci0gICAgICAgIC8vIEZpZWxkcyBk
ZXNjcmliZWQgaW4gaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYnJ0Yy8jaWRsLWRlZi1ydGNpY2Vj
YW5kaWRhdGVpbml0LgotICAgICAgICBTdHJpbmcgc2RwOwotICAgICAgICBTdHJpbmcgbWlkOwot
ICAgICAgICB1bnNpZ25lZCBzaG9ydCBzZHBNTGluZUluZGV4OwotICAgICAgICBTdHJpbmcgc2Vy
dmVyVVJMOwotICAgIH07Ci0gICAgVmVjdG9yPFBlbmRpbmdJQ0VDYW5kaWRhdGU+IG1fcGVuZGlu
Z0lDRUNhbmRpZGF0ZXM7CiAKICAgICBWZWN0b3I8UGVuZGluZ1RyYWNrRXZlbnQ+IG1fcGVuZGlu
Z1RyYWNrRXZlbnRzOwogCi0gICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gbV9pcEFkZHJlc3NU
b01ETlNOYW1lTWFwOwogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIFJlZjxjb25zdCBM
b2dnZXI+IG1fbG9nZ2VyOwogICAgIGNvbnN0IHZvaWQqIG1fbG9nSWRlbnRpZmllcjsKICNlbmRp
ZgogICAgIGJvb2wgbV9maW5pc2hlZEdhdGhlcmluZ0NhbmRpZGF0ZXMgeyBmYWxzZSB9OwotICAg
IHVpbnQ2NF90IG1fd2FpdGluZ0Zvck1ETlNSZWdpc3RyYXRpb24geyAwIH07CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENDb250cm9sbGVyLmNwcAppbmRleCA3MGQ0MGM2YmQ1YjMyNjJmMmNmZTYxNWZi
YzJiNDVjNjI5Y2NmNDNlLi5jZjM0NWE0NjJmY2RiMjExOWY3ZmJkZjVlYmRkZjAxNDVlYmE3NmIz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0NvbnRy
b2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDQ29u
dHJvbGxlci5jcHAKQEAgLTczLDYgKzczLDEwIEBAIGJvb2wgUlRDQ29udHJvbGxlcjo6c2hvdWxk
RGlzYWJsZUlDRUNhbmRpZGF0ZUZpbHRlcmluZyhEb2N1bWVudCYgZG9jdW1lbnQpCiAKIHZvaWQg
UlRDQ29udHJvbGxlcjo6YWRkKFJUQ1BlZXJDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogeworICAg
IGF1dG8mIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KCpjb25uZWN0aW9uLnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSk7CisgICAgaWYgKGF1dG8qIG5ldHdvcmtNYW5hZ2VyID0gZG9jdW1l
bnQucnRjTmV0d29ya01hbmFnZXIoKSkKKyAgICAgICAgbmV0d29ya01hbmFnZXItPnNldElDRUNh
bmRpZGF0ZUZpbHRlcmluZyghc2hvdWxkRGlzYWJsZUlDRUNhbmRpZGF0ZUZpbHRlcmluZyhkb2N1
bWVudCkpOworCiAgICAgbV9wZWVyQ29ubmVjdGlvbnMuYXBwZW5kKGNvbm5lY3Rpb24pOwogICAg
IGlmIChzaG91bGREaXNhYmxlSUNFQ2FuZGlkYXRlRmlsdGVyaW5nKGRvd25jYXN0PERvY3VtZW50
PigqY29ubmVjdGlvbi5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpKSkKICAgICAgICAgY29ubmVj
dGlvbi5kaXNhYmxlSUNFQ2FuZGlkYXRlRmlsdGVyaW5nKCk7CkBAIC04NCw4ICs4OCwxMyBAQCB2
b2lkIFJUQ0NvbnRyb2xsZXI6OmRpc2FibGVJQ0VDYW5kaWRhdGVGaWx0ZXJpbmdGb3JBbGxPcmln
aW5zKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9zaG91bGRGaWx0ZXJJQ0VDYW5kaWRhdGVz
ID0gZmFsc2U7Ci0gICAgZm9yIChSVENQZWVyQ29ubmVjdGlvbiYgY29ubmVjdGlvbiA6IG1fcGVl
ckNvbm5lY3Rpb25zKQorICAgIGZvciAoUlRDUGVlckNvbm5lY3Rpb24mIGNvbm5lY3Rpb24gOiBt
X3BlZXJDb25uZWN0aW9ucykgeworICAgICAgICBpZiAoYXV0byogZG9jdW1lbnQgPSBkb3duY2Fz
dDxEb2N1bWVudD4oY29ubmVjdGlvbi5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpKSB7CisgICAg
ICAgICAgICBpZiAoYXV0byogbmV0d29ya01hbmFnZXIgPSBkb2N1bWVudC0+cnRjTmV0d29ya01h
bmFnZXIoKSkKKyAgICAgICAgICAgICAgICBuZXR3b3JrTWFuYWdlci0+c2V0SUNFQ2FuZGlkYXRl
RmlsdGVyaW5nKGZhbHNlKTsKKyAgICAgICAgfQogICAgICAgICBjb25uZWN0aW9uLmRpc2FibGVJ
Q0VDYW5kaWRhdGVGaWx0ZXJpbmcoKTsKKyAgICB9CiB9CiAKIHZvaWQgUlRDQ29udHJvbGxlcjo6
ZGlzYWJsZUlDRUNhbmRpZGF0ZUZpbHRlcmluZ0ZvckRvY3VtZW50KERvY3VtZW50JiBkb2N1bWVu
dCkKQEAgLTkzLDExICsxMDIsMTcgQEAgdm9pZCBSVENDb250cm9sbGVyOjpkaXNhYmxlSUNFQ2Fu
ZGlkYXRlRmlsdGVyaW5nRm9yRG9jdW1lbnQoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIGlmICgh
TGliV2ViUlRDUHJvdmlkZXI6OndlYlJUQ0F2YWlsYWJsZSgpKQogICAgICAgICByZXR1cm47CiAK
KyAgICBpZiAoYXV0byogbmV0d29ya01hbmFnZXIgPSBkb2N1bWVudC5ydGNOZXR3b3JrTWFuYWdl
cigpKQorICAgICAgICBuZXR3b3JrTWFuYWdlci0+c2V0SUNFQ2FuZGlkYXRlRmlsdGVyaW5nKGZh
bHNlKTsKKwogICAgIG1fZmlsdGVyaW5nRGlzYWJsZWRPcmlnaW5zLmFwcGVuZChQZWVyQ29ubmVj
dGlvbk9yaWdpbiB7IGRvY3VtZW50LnRvcE9yaWdpbigpLCBkb2N1bWVudC5zZWN1cml0eU9yaWdp
bigpIH0pOwogICAgIGZvciAoUlRDUGVlckNvbm5lY3Rpb24mIGNvbm5lY3Rpb24gOiBtX3BlZXJD
b25uZWN0aW9ucykgewogICAgICAgICBpZiAoYXV0byogcGVlckNvbm5lY3Rpb25Eb2N1bWVudCA9
IGRvd25jYXN0PERvY3VtZW50Pihjb25uZWN0aW9uLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkp
IHsKLSAgICAgICAgICAgIGlmIChtYXRjaERvY3VtZW50T3JpZ2luKCpwZWVyQ29ubmVjdGlvbkRv
Y3VtZW50LCBkb2N1bWVudC50b3BPcmlnaW4oKSwgZG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4oKSkp
CisgICAgICAgICAgICBpZiAobWF0Y2hEb2N1bWVudE9yaWdpbigqcGVlckNvbm5lY3Rpb25Eb2N1
bWVudCwgZG9jdW1lbnQudG9wT3JpZ2luKCksIGRvY3VtZW50LnNlY3VyaXR5T3JpZ2luKCkpKSB7
CisgICAgICAgICAgICAgICAgaWYgKGF1dG8qIG5ldHdvcmtNYW5hZ2VyID0gcGVlckNvbm5lY3Rp
b25Eb2N1bWVudC0+cnRjTmV0d29ya01hbmFnZXIoKSkKKyAgICAgICAgICAgICAgICAgICAgbmV0
d29ya01hbmFnZXItPnNldElDRUNhbmRpZGF0ZUZpbHRlcmluZyhmYWxzZSk7CiAgICAgICAgICAg
ICAgICAgY29ubmVjdGlvbi5kaXNhYmxlSUNFQ2FuZGlkYXRlRmlsdGVyaW5nKCk7CisgICAgICAg
ICAgICB9CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC0xMDksOCArMTI0LDEzIEBAIHZvaWQgUlRD
Q29udHJvbGxlcjo6ZW5hYmxlSUNFQ2FuZGlkYXRlRmlsdGVyaW5nKCkKIAogICAgIG1fZmlsdGVy
aW5nRGlzYWJsZWRPcmlnaW5zLmNsZWFyKCk7CiAgICAgbV9zaG91bGRGaWx0ZXJJQ0VDYW5kaWRh
dGVzID0gdHJ1ZTsKLSAgICBmb3IgKFJUQ1BlZXJDb25uZWN0aW9uJiBjb25uZWN0aW9uIDogbV9w
ZWVyQ29ubmVjdGlvbnMpCisgICAgZm9yIChSVENQZWVyQ29ubmVjdGlvbiYgY29ubmVjdGlvbiA6
IG1fcGVlckNvbm5lY3Rpb25zKSB7CiAgICAgICAgIGNvbm5lY3Rpb24uZW5hYmxlSUNFQ2FuZGlk
YXRlRmlsdGVyaW5nKCk7CisgICAgICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IGRvd25jYXN0PERv
Y3VtZW50Pihjb25uZWN0aW9uLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkpIHsKKyAgICAgICAg
ICAgIGlmIChhdXRvKiBuZXR3b3JrTWFuYWdlciA9IGRvY3VtZW50LT5ydGNOZXR3b3JrTWFuYWdl
cigpKQorICAgICAgICAgICAgICAgIG5ldHdvcmtNYW5hZ2VyLT5zZXRJQ0VDYW5kaWRhdGVGaWx0
ZXJpbmcodHJ1ZSk7CisgICAgICAgIH0KKyAgICB9CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDTmV0
d29ya01hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDTmV0
d29ya01hbmFnZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZjM2ZmQ0NjFmODFhYmJhMmMwMmJiODFmMWZiNWY5
OTc4MDI1ZmQwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENOZXR3b3JrTWFuYWdlci5oCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisg
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04K
KyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCX1JUQykKKworI2luY2x1ZGUgPHd0Zi9U
aHJlYWRTYWZlUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFJU
Q05ldHdvcmtNYW5hZ2VyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFJUQ05ldHdvcmtN
YW5hZ2VyLCBXVEY6OkRlc3RydWN0aW9uVGhyZWFkOjpNYWluUnVuTG9vcD4geworcHVibGljOgor
ICAgIHZpcnR1YWwgflJUQ05ldHdvcmtNYW5hZ2VyKCkgPSBkZWZhdWx0OworICAgIHZpcnR1YWwg
dm9pZCBzZXRJQ0VDYW5kaWRhdGVGaWx0ZXJpbmcoYm9vbCkgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCB1bnJlZ2lzdGVyTUROU05hbWVzKCkgPSAwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9SVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJU
Q01lZGlhRW5kcG9pbnQuY3BwCmluZGV4IGNiNWEzODE5OTQ3M2JjODk3MWRlZmFjNjQ1NDM4OTU0
MDMwZDQ4NzUuLjVhNTQ3YTcwOGFmMjg2ZjczNTc4OWZmNGU3YjcyMDU5NWQyNGNmZGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldl
YlJUQ01lZGlhRW5kcG9pbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuY3BwCkBAIC05MiwxNSArOTIs
MTUgQEAgYm9vbCBMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpzZXRDb25maWd1cmF0aW9uKExpYldl
YlJUQ1Byb3ZpZGVyJiBjbGllbnQsIHdlYnJ0YzoKICAgICBjb25maWd1cmF0aW9uLnNkcF9zZW1h
bnRpY3MgPSB3ZWJydGM6OlNkcFNlbWFudGljczo6a1VuaWZpZWRQbGFuOwogCiAgICAgaWYgKCFt
X2JhY2tlbmQpIHsKKyAgICAgICAgYXV0byYgZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4o
Km1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLmNvbm5lY3Rpb24oKS5zY3JpcHRFeGVjdXRpb25Db250
ZXh0KCkpOwogICAgICAgICBpZiAoIW1fcnRjU29ja2V0RmFjdG9yeSkgewotICAgICAgICAgICAg
YXV0byYgZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oKm1fcGVlckNvbm5lY3Rpb25CYWNr
ZW5kLmNvbm5lY3Rpb24oKS5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwogICAgICAgICAgICAg
UmVnaXN0cmFibGVEb21haW4gZG9tYWluIHsgZG9jdW1lbnQudXJsKCkgfTsKICAgICAgICAgICAg
IGJvb2wgaXNGaXJzdFBhcnR5ID0gZG9tYWluID09IFJlZ2lzdHJhYmxlRG9tYWluKGRvY3VtZW50
LmZpcnN0UGFydHlGb3JDb29raWVzKCkpOwogICAgICAgICAgICAgbV9ydGNTb2NrZXRGYWN0b3J5
ID0gY2xpZW50LmNyZWF0ZVNvY2tldEZhY3RvcnkoZG9jdW1lbnQudXNlckFnZW50KGRvY3VtZW50
LnVybCgpKSwgaXNGaXJzdFBhcnR5LCBXVEZNb3ZlKGRvbWFpbikpOwotICAgICAgICAgICAgaWYg
KCFtX3BlZXJDb25uZWN0aW9uQmFja2VuZC5zaG91bGRGaWx0ZXJJQ0VDYW5kaWRhdGVzKCkpCisg
ICAgICAgICAgICBpZiAoIW1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLnNob3VsZEZpbHRlcklDRUNh
bmRpZGF0ZXMoKSAmJiBtX3J0Y1NvY2tldEZhY3RvcnkpCiAgICAgICAgICAgICAgICAgbV9ydGNT
b2NrZXRGYWN0b3J5LT5kaXNhYmxlUmVsYXkoKTsKICAgICAgICAgfQotICAgICAgICBtX2JhY2tl
bmQgPSBjbGllbnQuY3JlYXRlUGVlckNvbm5lY3Rpb24oKnRoaXMsIG1fcnRjU29ja2V0RmFjdG9y
eS5nZXQoKSwgV1RGTW92ZShjb25maWd1cmF0aW9uKSk7CisgICAgICAgIG1fYmFja2VuZCA9IGNs
aWVudC5jcmVhdGVQZWVyQ29ubmVjdGlvbihkb2N1bWVudC5pZGVudGlmaWVyKCksICp0aGlzLCBt
X3J0Y1NvY2tldEZhY3RvcnkuZ2V0KCksIFdURk1vdmUoY29uZmlndXJhdGlvbikpOwogICAgICAg
ICByZXR1cm4gISFtX2JhY2tlbmQ7CiAgICAgfQogICAgIGF1dG8gb2xkQ29uZmlndXJhdGlvbiA9
IG1fYmFja2VuZC0+R2V0Q29uZmlndXJhdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25C
YWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRj
L0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAKaW5kZXggNzZhZWI2MWVjZjZmMzg2
OGFjMjZjNWY2NjllOTBiZjU5YzJhMzc4MC4uODc1MzM0ZjJhN2IyYTkwNjk0OTE2ZmE1ODg1ZGZi
NjA3MDJiMGE3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29u
bmVjdGlvbkJhY2tlbmQuY3BwCkBAIC0zMTUsNyArMzE1LDcgQEAgUmVmUHRyPFJUQ1Nlc3Npb25E
ZXNjcmlwdGlvbj4gTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpjdXJyZW50TG9jYWxE
ZXNjcmkKIHsKICAgICBhdXRvIGRlc2NyaXB0aW9uID0gbV9lbmRwb2ludC0+Y3VycmVudExvY2Fs
RGVzY3JpcHRpb24oKTsKICAgICBpZiAoZGVzY3JpcHRpb24pCi0gICAgICAgIGRlc2NyaXB0aW9u
LT5zZXRTZHAoZmlsdGVyU0RQKFN0cmluZyhkZXNjcmlwdGlvbi0+c2RwKCkpKSk7CisgICAgICAg
IHZhbGlkYXRlU0RQKGRlc2NyaXB0aW9uLT5zZHAoKSk7CiAgICAgcmV0dXJuIGRlc2NyaXB0aW9u
OwogfQogCkBAIC0zMjgsNyArMzI4LDcgQEAgUmVmUHRyPFJUQ1Nlc3Npb25EZXNjcmlwdGlvbj4g
TGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpwZW5kaW5nTG9jYWxEZXNjcmkKIHsKICAg
ICBhdXRvIGRlc2NyaXB0aW9uID0gbV9lbmRwb2ludC0+cGVuZGluZ0xvY2FsRGVzY3JpcHRpb24o
KTsKICAgICBpZiAoZGVzY3JpcHRpb24pCi0gICAgICAgIGRlc2NyaXB0aW9uLT5zZXRTZHAoZmls
dGVyU0RQKFN0cmluZyhkZXNjcmlwdGlvbi0+c2RwKCkpKSk7CisgICAgICAgIHZhbGlkYXRlU0RQ
KGRlc2NyaXB0aW9uLT5zZHAoKSk7CiAgICAgcmV0dXJuIGRlc2NyaXB0aW9uOwogfQogCkBAIC0z
NDEsNyArMzQxLDcgQEAgUmVmUHRyPFJUQ1Nlc3Npb25EZXNjcmlwdGlvbj4gTGliV2ViUlRDUGVl
ckNvbm5lY3Rpb25CYWNrZW5kOjpsb2NhbERlc2NyaXB0aW9uKCkKIHsKICAgICBhdXRvIGRlc2Ny
aXB0aW9uID0gbV9lbmRwb2ludC0+bG9jYWxEZXNjcmlwdGlvbigpOwogICAgIGlmIChkZXNjcmlw
dGlvbikKLSAgICAgICAgZGVzY3JpcHRpb24tPnNldFNkcChmaWx0ZXJTRFAoU3RyaW5nKGRlc2Ny
aXB0aW9uLT5zZHAoKSkpKTsKKyAgICAgICAgdmFsaWRhdGVTRFAoZGVzY3JpcHRpb24tPnNkcCgp
KTsKICAgICByZXR1cm4gZGVzY3JpcHRpb247CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA1MzAzMTg2ZGRkMWQ3OGI0NTIz
MjEyZWQyMGE5OWEwYjgyMWRmNjcxLi5kZmRmNDQ0ZDdmZDJiYzVjMzk3NDJkZTk1ZGZkYTM5YTVh
YTNjZTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC0xMTcyLDYgKzExNzIsOSBAQAogCQk0MUI4Nzc2MjIzREUxMDQ1MDAzNjM4
QjggLyogUmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQjg3NzYwMjNERTEwNDIwMDM2MzhCOCAvKiBS
ZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxQkJBODY2MjU3RTM3M0IwMEFDN0Y2RCAvKiBTRnJh
bWVVdGlscy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDEyMDlFMjQyNTdBMkZCQjAwMTIwQUNBIC8qIFNGcmFtZVV0aWxzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDFCRjIwNDkyMkJBN0JFODAwMDRG
ODEyIC8qIFJlYWx0aW1lVmlkZW9Tb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQxQkYyMDQwMjJCOTQ3MTYwMDA0RjgxMiAvKiBSZWFsdGltZVZp
ZGVvU291cmNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJNDFDMTRCQzYyNkRFNkRFODAwNjg1QkY1IC8qIFJUQ05ldHdvcmtNYW5hZ2VyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUMxNEJDNDI2REU2
REU4MDA2ODVCRjUgLyogUlRDTmV0d29ya01hbmFnZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0MUMxNEJDNzI2REU4NTg0MDA2ODVCRjUgLyog
TGliV2ViUlRDVXRpbHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQxRDFBMDRDMjEzRURERkYwMDYzRkI2QiAvKiBMaWJXZWJSVENVdGlscy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQxQzE0QkM5MjZE
Rjc5RDcwMDY4NUJGNSAvKiBNRE5TUmVnaXN0ZXJFcnJvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFDMTRCQzgyNkRGNzlENjAwNjg1QkY1IC8qIE1E
TlNSZWdpc3RlckVycm9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNDFDM0I4QTEyNjQ5QjFFMDAwNEVENERFIC8qIEF1ZGlvTWVkaWFTdHJlYW1U
cmFja1JlbmRlcmVySW50ZXJuYWxVbml0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0MUMzQjg5RjI2NDlCMUI3MDA0RUQ0REUgLyogQXVkaW9NZWRpYVN0
cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MUMzQjhBMjI2NDlCMUU1MDA0RUQ0REUgLyogQXVk
aW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUMzQjg5QjI2NDlCMUI2MDA0RUQ0REUgLyogQXVkaW9N
ZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDFDNzYwQjEwRURFMDNEMzAwQzE2NTVGIC8qIFNjcmlw
dFN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MUM3NjBCMDBFREUwM0QzMDBDMTY1NUYgLyogU2NyaXB0U3RhdGUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtODA0NCw2ICs4MDQ3LDggQEAKIAkJ
NDFCQ0U4NzcyNUY3QTY3QTAwNDZDMkU1IC8qIFJUQ1RyYW5zZm9ybUV2ZW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJUQ1RyYW5zZm9ybUV2ZW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQxQkYyMDQwMjJCOTQ3MTYwMDA0RjgxMiAvKiBSZWFsdGltZVZp
ZGVvU291cmNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlYWx0aW1lVmlkZW9Tb3VyY2UuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFCRjIwNDIyMkI5NDcxNzAwMDRGODEyIC8qIFJlYWx0
aW1lVmlkZW9Tb3VyY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVhbHRpbWVWaWRlb1NvdXJj
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxQzE0QkM0MjZERTZERTgwMDY4
NUJGNSAvKiBSVENOZXR3b3JrTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBSVENOZXR3b3JrTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0
MUMxNEJDODI2REY3OUQ2MDA2ODVCRjUgLyogTUROU1JlZ2lzdGVyRXJyb3IuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTUROU1JlZ2lzdGVyRXJyb3IuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDFDM0I4OUIyNjQ5QjFCNjAwNEVENERFIC8qIEF1ZGlvTWVkaWFT
dHJlYW1UcmFja1JlbmRlcmVyVW5pdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlclVuaXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFDM0I4
OUMyNjQ5QjFCNjAwNEVENERFIC8qIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2Eu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUMzQjg5RDI2NDlCMUI2MDA0RUQ0REUgLyog
QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29hLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTE3MjU1LDYgKzE3MjYwLDcgQEAKIAkJCQkzMTZEQ0I4OTFFN0E2OTk2
MDAxQjVGODcgLyogUlRDSWNlVHJhbnNwb3J0LmlkbCAqLywKIAkJCQk0MTQ1MTZFMDI2Q0MwNDIx
MDBBQUFCRTAgLyogUlRDSWNlVHJhbnNwb3J0QmFja2VuZC5oICovLAogCQkJCTMxNkRDQjhFMUU3
QTZDNzkwMDFCNUY4NyAvKiBSVENJY2VUcmFuc3BvcnRTdGF0ZS5pZGwgKi8sCisJCQkJNDFDMTRC
QzQyNkRFNkRFODAwNjg1QkY1IC8qIFJUQ05ldHdvcmtNYW5hZ2VyLmggKi8sCiAJCQkJMDczNzk0
REMxOUVFMkM1MjAwRTVBMDQ1IC8qIFJUQ09mZmVyQW5zd2VyT3B0aW9ucy5oICovLAogCQkJCTMx
NkRDQjEyMUU3OEJFNDMwMDFCNUY4NyAvKiBSVENPZmZlckFuc3dlck9wdGlvbnMuaWRsICovLAog
CQkJCTMxNkRDQjI4MUU3OEYzOTUwMDFCNUY4NyAvKiBSVENPZmZlck9wdGlvbnMuaCAqLywKQEAg
LTE3Mzc2LDYgKzE3MzgyLDcgQEAKIAkJCQkwN0I3MTE2QjFEODk5RTYzMDA5RjBGRkIgLyogQ2Fw
dHVyZURldmljZU1hbmFnZXIuY3BwICovLAogCQkJCTA3QjcxMTZDMUQ4OTlFNjMwMDlGMEZGQiAv
KiBDYXB0dXJlRGV2aWNlTWFuYWdlci5oICovLAogCQkJCTVFQkI4OTMwMUM3Nzc3RTEwMEM2NUQ0
MSAvKiBJY2VDYW5kaWRhdGUuaCAqLywKKwkJCQk0MUMxNEJDODI2REY3OUQ2MDA2ODVCRjUgLyog
TUROU1JlZ2lzdGVyRXJyb3IuaCAqLywKIAkJCQkxQkU1QkZDMTFENTE1NzE1MDAxNjY2RDkgLyog
TWVkaWFDb25zdHJhaW50cy5jcHAgKi8sCiAJCQkJMDcyMjFCOTkxN0NGMEFENDAwODQ4RTUxIC8q
IE1lZGlhQ29uc3RyYWludHMuaCAqLywKIAkJCQk0MUIyOEIxMzFGODUwMUE0MDBGQjUyQUMgLyog
TWVkaWFFbmRwb2ludENvbmZpZ3VyYXRpb24uY3BwICovLApAQCAtMzM1ODUsNiArMzM1OTIsNyBA
QAogCQkJCTQxODFDNUNEMjU1NTgzNjkwMEFFQjBGRiAvKiBMaWJXZWJSVENSdHBUcmFuc2Zvcm1h
YmxlRnJhbWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxODFDNUQxMjU1NTg5NTYwMEFFQjBGRiAv
KiBMaWJXZWJSVENSdHBUcmFuc2Zvcm1CYWNrZW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTBF
NDQ2MTIzNDM3M0U5MDAwMTczRDQgLyogTGliV2ViUlRDU29ja2V0SWRlbnRpZmllci5oIGluIEhl
YWRlcnMgKi8sCisJCQkJNDFDMTRCQzcyNkRFODU4NDAwNjg1QkY1IC8qIExpYldlYlJUQ1V0aWxz
LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NDczMEQ5MTEyNDhGMEIzMDBEM0E5QzkgLyogTGlnaHRT
b3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3OTY1MEQwMEJGMjIwMDcxQjc4MiAvKiBM
aW5lYXJHcmFkaWVudEF0dHJpYnV0ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUFCMzFDOTFFMTBB
RTFCOEUwMDBDN0I5MiAvKiBMaW5lQ2xhbXBWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMzY0
OCw2ICszMzY1Niw3IEBACiAJCQkJNDM5MDQ2RUExMkRBMjVFODEyQUY4MEFDIC8qIE1hdGhPcGVy
YXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlENURDMkMwRjQyM0E3MzAwOEYyMEZEIC8qIE1h
dHJpeDNEVHJhbnNmb3JtT3BlcmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUU5MTFDNzBF
Rjg2RDQ3MDA5RDBDQUYgLyogTWF0cml4VHJhbnNmb3JtT3BlcmF0aW9uLmggaW4gSGVhZGVycyAq
LywKKwkJCQk0MUMxNEJDOTI2REY3OUQ3MDA2ODVCRjUgLyogTUROU1JlZ2lzdGVyRXJyb3IuaCBp
biBIZWFkZXJzICovLAogCQkJCTVDQkM4REFEMUFBQTMwMjIwMEUxQzgwMyAvKiBNZWRpYUFjY2Vz
c2liaWxpdHlTb2Z0TGluay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMxQkNDNjExMTI0REZDQjAw
QkU3MEREIC8qIE1lZGlhQ2FuU3RhcnRMaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RD
QzlCQ0YyMjM4N0U5QTAwRkZCNTFDIC8qIE1lZGlhQ2FwYWJpbGl0aWVzRGVjb2RpbmdJbmZvLmgg
aW4gSGVhZGVycyAqLywKQEAgLTM0NDYyLDYgKzM0NDcxLDcgQEAKIAkJCQkwN0FCOTk2QjE4REEz
QzAxMDAxODc3MUUgLyogUlRDSWNlU2VydmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMTM1OTEw
ODFFN0REQzczMDBGMzA2MzAgLyogUlRDSWNlVHJhbnNwb3J0UG9saWN5LmggaW4gSGVhZGVycyAq
LywKIAkJCQkzMTM1OTEwOTFFN0REQzczMDBGMzA2MzAgLyogUlRDSWNlVHJhbnNwb3J0U3RhdGUu
aCBpbiBIZWFkZXJzICovLAorCQkJCTQxQzE0QkM2MjZERTZERTgwMDY4NUJGNSAvKiBSVENOZXR3
b3JrTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDczNzk0RkUxOUY1ODY0RTAwRTVBMDQ1
IC8qIFJUQ05vdGlmaWVyc01vY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTA3Mzc5NERFMTlFRTJD
NTIwMEU1QTA0NSAvKiBSVENPZmZlckFuc3dlck9wdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTA3OEUwOTI1MTdEMTREMUMwMDQyMEFBMSAvKiBSVENQZWVyQ29ubmVjdGlvbi5oIGluIEhlYWRl
cnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCA4YzNiYjFjMzJkZGQyNTllNDAwYzJi
NTY3ZjNhMWRlMmZiZDY3Yjk2Li5jMDkyNDljNjc0OGI0YmI3YWQ0OTA3ZjQ0YTkyZjg4NzQ5YTc1
YzY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTI1OTYsMTIgKzI1OTYsOSBAQCB2b2lk
IERvY3VtZW50Ojp3aWxsQmVSZW1vdmVkRnJvbUZyYW1lKCkKICAgICBpZiAobV9oYXNQcmVwYXJl
ZEZvckRlc3RydWN0aW9uKQogICAgICAgICByZXR1cm47CiAKLSNpZiBVU0UoTElCV0VCUlRDKQot
ICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBtb3ZlZCB0byBNb2R1bGVzL21lZGlhc3RyZWFt
LgotICAgIGlmIChMaWJXZWJSVENQcm92aWRlcjo6d2ViUlRDQXZhaWxhYmxlKCkpIHsKLSAgICAg
ICAgaWYgKGF1dG8qIHBhZ2UgPSB0aGlzLT5wYWdlKCkpCi0gICAgICAgICAgICBwYWdlLT5saWJX
ZWJSVENQcm92aWRlcigpLnVucmVnaXN0ZXJNRE5TTmFtZXMoaWRlbnRpZmllcigpKTsKLSAgICB9
CisjaWYgRU5BQkxFKFdFQl9SVEMpCisgICAgaWYgKG1fcnRjTmV0d29ya01hbmFnZXIpCisgICAg
ICAgIG1fcnRjTmV0d29ya01hbmFnZXItPnVucmVnaXN0ZXJNRE5TTmFtZXMoKTsKICNlbmRpZgog
CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpAQCAtNTYxOCwxMiArNTYxNSw5IEBAIHZvaWQg
RG9jdW1lbnQ6OnN1c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lvbiByZWFzb24pCiAgICAgICAgICAg
ICB2aWV3LT5jb21wb3NpdG9yKCkuY2FuY2VsQ29tcG9zaXRpbmdMYXllclVwZGF0ZSgpOwogICAg
IH0KIAotI2lmIFVTRShMSUJXRUJSVEMpCi0gICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIG1v
dmVkIHRvIE1vZHVsZXMvbWVkaWFzdHJlYW0uCi0gICAgaWYgKExpYldlYlJUQ1Byb3ZpZGVyOjp3
ZWJSVENBdmFpbGFibGUoKSkgewotICAgICAgICBpZiAoYXV0byogcGFnZSA9IHRoaXMtPnBhZ2Uo
KSkKLSAgICAgICAgICAgIHBhZ2UtPmxpYldlYlJUQ1Byb3ZpZGVyKCkudW5yZWdpc3Rlck1ETlNO
YW1lcyhpZGVudGlmaWVyKCkpOwotICAgIH0KKyNpZiBFTkFCTEUoV0VCX1JUQykKKyAgICBpZiAo
bV9ydGNOZXR3b3JrTWFuYWdlcikKKyAgICAgICAgbV9ydGNOZXR3b3JrTWFuYWdlci0+dW5yZWdp
c3Rlck1ETlNOYW1lcygpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5oCmluZGV4IDEyYTkwMmQ1ZGRlYzlkODFmZjUxNzcwYWU0ZmVmYTcwYzg0
Y2UwMGEuLjc1Y2EzMzExZTIzYTQxYjY5NDhhMDI5ZmM5OWE5NWE1NGE5ODRlZTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5oCkBAIC00OSw2ICs0OSw3IEBACiAjaW5jbHVkZSAiUGFnZUlkZW50aWZpZXIu
aCIKICNpbmNsdWRlICJQbGF0Zm9ybUV2ZW50LmgiCiAjaW5jbHVkZSAiUGxheWJhY2tUYXJnZXRD
bGllbnRDb250ZXh0SWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlJUQ05ldHdvcmtNYW5hZ2VyLmgi
CiAjaW5jbHVkZSAiUmVmZXJyZXJQb2xpY3kuaCIKICNpbmNsdWRlICJSZWdpb24uaCIKICNpbmNs
dWRlICJSZWdpc3RyYWJsZURvbWFpbi5oIgpAQCAtNzA4LDYgKzcwOSwxMSBAQCBwdWJsaWM6CiAg
ICAgU29ja2V0UHJvdmlkZXIqIHNvY2tldFByb3ZpZGVyKCkgZmluYWw7CiAgICAgUmVmUHRyPFJU
Q0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlckNvbm5lY3Rpb24+IGNyZWF0ZVJUQ0RhdGFDaGFubmVs
UmVtb3RlSGFuZGxlckNvbm5lY3Rpb24oKSBmaW5hbDsKIAorI2lmIEVOQUJMRShXRUJfUlRDKQor
ICAgIFJUQ05ldHdvcmtNYW5hZ2VyKiBydGNOZXR3b3JrTWFuYWdlcigpIHsgcmV0dXJuIG1fcnRj
TmV0d29ya01hbmFnZXIuZ2V0KCk7IH0KKyAgICB2b2lkIHNldFJUQ05ldHdvcmtNYW5hZ2VyKFJl
ZjxSVENOZXR3b3JrTWFuYWdlcj4mJiBydGNOZXR3b3JrTWFuYWdlcikgeyBtX3J0Y05ldHdvcmtN
YW5hZ2VyID0gV1RGTW92ZShydGNOZXR3b3JrTWFuYWdlcik7IH0KKyNlbmRpZgorCiAgICAgYm9v
bCBjYW5OYXZpZ2F0ZShGcmFtZSogdGFyZ2V0RnJhbWUsIGNvbnN0IFVSTCYgZGVzdGluYXRpb25V
UkwgPSBVUkwoKSk7CiAKICAgICBib29sIHVzZXNTdHlsZUJhc2VkRWRpdGFiaWxpdHkoKSBjb25z
dDsKQEAgLTIyMjEsNiArMjIyNywxMCBAQCBwcml2YXRlOgogCiAgICAgTGlzdEhhc2hTZXQ8UmVm
PEVsZW1lbnQ+PiBtX3RvcExheWVyRWxlbWVudHM7CiAgICAgVW5pcXVlUmVmPFdoaXRlc3BhY2VD
YWNoZT4gbV93aGl0ZXNwYWNlQ2FjaGU7CisKKyNpZiBFTkFCTEUoV0VCX1JUQykKKyAgICBSZWZQ
dHI8UlRDTmV0d29ya01hbmFnZXI+IG1fcnRjTmV0d29ya01hbmFnZXI7CisjZW5kaWYKIH07CiAK
IEVsZW1lbnQqIGV2ZW50VGFyZ2V0RWxlbWVudEZvckRvY3VtZW50KERvY3VtZW50Kik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NRE5TUmVnaXN0ZXJF
cnJvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTUROU1JlZ2lzdGVy
RXJyb3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi43N2M1ZGFmZTMzZmJlNjRlN2E4MjZjMTUxYjZiZTNjYTUyZmE1
NTVkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vTUROU1JlZ2lzdGVyRXJyb3IuaApAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2VudW0gY2xhc3MgTUROU1JlZ2lzdGVyRXJyb3IgeyBOb3RJbXBsZW1lbnRlZCwg
QmFkUGFyYW1ldGVyLCBETlNTRCwgSW50ZXJuYWwsIFRpbWVvdXQgfTsKKworfQorCituYW1lc3Bh
Y2UgV1RGIHsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpNRE5TUmVn
aXN0ZXJFcnJvcj4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdl
YkNvcmU6Ok1ETlNSZWdpc3RlckVycm9yLAorICAgICAgICBXZWJDb3JlOjpNRE5TUmVnaXN0ZXJF
cnJvcjo6Tm90SW1wbGVtZW50ZWQsCisgICAgICAgIFdlYkNvcmU6Ok1ETlNSZWdpc3RlckVycm9y
OjpCYWRQYXJhbWV0ZXIsCisgICAgICAgIFdlYkNvcmU6Ok1ETlNSZWdpc3RlckVycm9yOjpETlNT
RCwKKyAgICAgICAgV2ViQ29yZTo6TUROU1JlZ2lzdGVyRXJyb3I6OkludGVybmFsLAorICAgICAg
ICBXZWJDb3JlOjpNRE5TUmVnaXN0ZXJFcnJvcjo6VGltZW91dAorICAgID47Cit9OworCit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMv
TGliV2ViUlRDUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcAppbmRleCBjNTk1NjE3ODcyYjIyYjll
YzNmNTMyZDM0NWIwOGMxNmZlNmJmZDZkLi41YWY3OWFkNDg1ODY4NDBmNDg3NTdkZWZlOGEzYTY2
ZTU2ZDNiZWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHAKQEAgLTI5
OSw3ICsyOTksNyBAQCB2b2lkIExpYldlYlJUQ1Byb3ZpZGVyOjplbmFibGVFbnVtZXJhdGluZ0Fs
bE5ldHdvcmtJbnRlcmZhY2VzKCkKICAgICBtX2VuYWJsZUVudW1lcmF0aW5nQWxsTmV0d29ya0lu
dGVyZmFjZXMgPSB0cnVlOwogfQogCi1ydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpQZWVyQ29u
bmVjdGlvbkludGVyZmFjZT4gTGliV2ViUlRDUHJvdmlkZXI6OmNyZWF0ZVBlZXJDb25uZWN0aW9u
KHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25PYnNlcnZlciYgb2JzZXJ2ZXIsIHJ0Yzo6UGFja2V0U29j
a2V0RmFjdG9yeSosIHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OlJUQ0NvbmZpZ3Vy
YXRpb24mJiBjb25maWd1cmF0aW9uKQorcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6UGVlckNv
bm5lY3Rpb25JbnRlcmZhY2U+IExpYldlYlJUQ1Byb3ZpZGVyOjpjcmVhdGVQZWVyQ29ubmVjdGlv
bihEb2N1bWVudElkZW50aWZpZXIsIHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25PYnNlcnZlciYgb2Jz
ZXJ2ZXIsIHJ0Yzo6UGFja2V0U29ja2V0RmFjdG9yeSosIHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25J
bnRlcmZhY2U6OlJUQ0NvbmZpZ3VyYXRpb24mJiBjb25maWd1cmF0aW9uKQogewogICAgIC8vIERl
ZmF1bHQgV0sxIGltcGxlbWVudGF0aW9uLgogICAgIEFTU0VSVChtX3VzZU5ldHdvcmtUaHJlYWRX
aXRoU29ja2V0U2VydmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmgKaW5kZXgg
MTg2MjdlZTU3Zjc1OGEwNDcyMmQxNjE2ZjBmODc2Mjg0MzQxMTViNy4uMzZjNjRhODNjZWY5Mjg5
MjdiMjYwZGE3NzA4NGRhZTI1ZTkxOWU0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3Zp
ZGVyLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkRvY3VtZW50SWRlbnRpZmllci5o
IgogI2luY2x1ZGUgIkxpYldlYlJUQ01hY3Jvcy5oIgorI2luY2x1ZGUgIk1ETlNSZWdpc3RlckVy
cm9yLmgiCiAjaW5jbHVkZSAiUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyQ29ubmVjdGlvbi5o
IgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9FeHBl
Y3RlZC5oPgpAQCAtNjYsOCArNjcsNiBAQCBjbGFzcyBSZWdpc3RyYWJsZURvbWFpbjsKIHN0cnVj
dCBQZWVyQ29ubmVjdGlvbkZhY3RvcnlBbmRUaHJlYWRzOwogc3RydWN0IFJUQ1J0cENhcGFiaWxp
dGllczsKIAotZW51bSBjbGFzcyBNRE5TUmVnaXN0ZXJFcnJvciB7IE5vdEltcGxlbWVudGVkLCBC
YWRQYXJhbWV0ZXIsIEROU1NELCBJbnRlcm5hbCwgVGltZW91dCB9OwotCiBjbGFzcyBXRUJDT1JF
X0VYUE9SVCBMaWJXZWJSVENQcm92aWRlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CkBAIC04NiwxOCArODUsMTAgQEAgcHVibGljOgogICAgIHVzaW5nIElQQWRkcmVz
c09yRXJyb3IgPSBFeHBlY3RlZDxTdHJpbmcsIE1ETlNSZWdpc3RlckVycm9yPjsKICAgICB1c2lu
ZyBNRE5TTmFtZU9yRXJyb3IgPSBFeHBlY3RlZDxTdHJpbmcsIE1ETlNSZWdpc3RlckVycm9yPjsK
IAotICAgIHZpcnR1YWwgdm9pZCB1bnJlZ2lzdGVyTUROU05hbWVzKERvY3VtZW50SWRlbnRpZmll
cikgeyB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJNRE5TTmFtZShEb2N1bWVudElkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgaXBBZGRyZXNzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE1E
TlNOYW1lT3JFcnJvciYmKT4mJiBjYWxsYmFjaykKLSAgICB7Ci0gICAgICAgIFVOVVNFRF9QQVJB
TShpcEFkZHJlc3MpOwotICAgICAgICBjYWxsYmFjayhtYWtlVW5leHBlY3RlZChNRE5TUmVnaXN0
ZXJFcnJvcjo6Tm90SW1wbGVtZW50ZWQpKTsKLSAgICB9Ci0KICAgICB2aXJ0dWFsIFJlZlB0cjxS
VENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXJDb25uZWN0aW9uPiBjcmVhdGVSVENEYXRhQ2hhbm5l
bFJlbW90ZUhhbmRsZXJDb25uZWN0aW9uKCkgeyByZXR1cm4gbnVsbHB0cjsgfQogCiAjaWYgVVNF
KExJQldFQlJUQykKLSAgICB2aXJ0dWFsIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlBlZXJD
b25uZWN0aW9uSW50ZXJmYWNlPiBjcmVhdGVQZWVyQ29ubmVjdGlvbih3ZWJydGM6OlBlZXJDb25u
ZWN0aW9uT2JzZXJ2ZXImLCBydGM6OlBhY2tldFNvY2tldEZhY3RvcnkqLCB3ZWJydGM6OlBlZXJD
b25uZWN0aW9uSW50ZXJmYWNlOjpSVENDb25maWd1cmF0aW9uJiYpOworICAgIHZpcnR1YWwgcnRj
OjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U+IGNyZWF0ZVBl
ZXJDb25uZWN0aW9uKERvY3VtZW50SWRlbnRpZmllciwgd2VicnRjOjpQZWVyQ29ubmVjdGlvbk9i
c2VydmVyJiwgcnRjOjpQYWNrZXRTb2NrZXRGYWN0b3J5Kiwgd2VicnRjOjpQZWVyQ29ubmVjdGlv
bkludGVyZmFjZTo6UlRDQ29uZmlndXJhdGlvbiYmKTsKIAogICAgIHdlYnJ0Yzo6UGVlckNvbm5l
Y3Rpb25GYWN0b3J5SW50ZXJmYWNlKiBmYWN0b3J5KCk7CiAKQEAgLTEyMyw2ICsxMTQsOCBAQCBw
dWJsaWM6CiAgICAgYm9vbCBpc1N1cHBvcnRpbmdWUDlWVEIoKSBjb25zdCB7IHJldHVybiBtX3N1
cHBvcnRzVlA5VlRCOyB9CiAgICAgdmlydHVhbCB2b2lkIGRpc2FibGVOb25Mb2NhbGhvc3RDb25u
ZWN0aW9ucygpIHsgbV9kaXNhYmxlTm9uTG9jYWxob3N0Q29ubmVjdGlvbnMgPSB0cnVlOyB9CiAK
KyAgICBib29sIGlzU3VwcG9ydGluZ01ETlMoKSBjb25zdCB7IHJldHVybiBtX3N1cHBvcnRzTURO
UzsgfQorCiAgICAgLy8gQ2FsbGJhY2sgaXMgZXhlY3V0ZWQgb24gYSBiYWNrZ3JvdW5kIHRocmVh
ZC4KICAgICB2b2lkIHByZXBhcmVDZXJ0aWZpY2F0ZUdlbmVyYXRvcihGdW5jdGlvbjx2b2lkKHJ0
Yzo6UlRDQ2VydGlmaWNhdGVHZW5lcmF0b3ImKT4mJik7CiAKQEAgLTE2OCw2ICsxNjEsNyBAQCBw
cm90ZWN0ZWQ6CiAgICAgYm9vbCBtX3N1cHBvcnRzVlA5UHJvZmlsZTIgeyBmYWxzZSB9OwogICAg
IGJvb2wgbV9zdXBwb3J0c1ZQOVZUQiB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3VzZURUTFMxMCB7
IGZhbHNlIH07CisgICAgYm9vbCBtX3N1cHBvcnRzTUROUyB7IGZhbHNlIH07CiAjZW5kaWYKIH07
CiAKQEAgLTE4MCwxNiArMTc0LDMgQEAgaW5saW5lIHZvaWQgTGliV2ViUlRDUHJvdmlkZXI6OnNl
dFZQOVN1cHBvcnQoYm9vbCBzdXBwb3J0c1ZQOVByb2ZpbGUwLCBib29sIHN1cHAKICNlbmRpZgog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLW5hbWVzcGFjZSBXVEYgewotdGVtcGxhdGU8PiBz
dHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpNRE5TUmVnaXN0ZXJFcnJvcj4gewotICAgIHVzaW5n
IHZhbHVlcyA9IEVudW1WYWx1ZXM8Ci0gICAgICAgIFdlYkNvcmU6Ok1ETlNSZWdpc3RlckVycm9y
LAotICAgICAgICBXZWJDb3JlOjpNRE5TUmVnaXN0ZXJFcnJvcjo6Tm90SW1wbGVtZW50ZWQsCi0g
ICAgICAgIFdlYkNvcmU6Ok1ETlNSZWdpc3RlckVycm9yOjpCYWRQYXJhbWV0ZXIsCi0gICAgICAg
IFdlYkNvcmU6Ok1ETlNSZWdpc3RlckVycm9yOjpETlNTRCwKLSAgICAgICAgV2ViQ29yZTo6TURO
U1JlZ2lzdGVyRXJyb3I6OkludGVybmFsLAotICAgICAgICBXZWJDb3JlOjpNRE5TUmVnaXN0ZXJF
cnJvcjo6VGltZW91dAotICAgID47Ci19OwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya01ETlNSZWdpc3Rlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrTUROU1JlZ2lzdGVyLmNwcAppbmRleCBm
YzQzNTExMmY1YmNlMGFhMzEyMjBlNDEyZmNlNGM1OTgzZjI4YjA3Li43YWExN2MxMzFmMTYyNjg0
Y2QyODNhN2EwZTRjMWQxMzFiZWU4NjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrTUROU1JlZ2lzdGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrTUROU1JlZ2lzdGVyLmNwcApAQCAtOTgs
MjcgKzk4LDI5IEBAIHN0YXRpYyB2b2lkIHJlZ2lzdGVyTUROU05hbWVDYWxsYmFjayhETlNTZXJ2
aWNlUmVmLCBETlNSZWNvcmRSZWYgcmVjb3JkLCBETlNTZXJ2CiAgICAgTUROU19SRUxFQVNFX0xP
R19JTl9DQUxMQkFDSyhyZXF1ZXN0LT5zZXNzaW9uSUQsICJyZWdpc3Rlck1ETlNOYW1lQ2FsbGJh
Y2sgd2l0aCBlcnJvciAlZCIsIGVycm9yQ29kZSk7CiAKICAgICBpZiAoZXJyb3JDb2RlKSB7Ci0g
ICAgICAgIHJlcXVlc3QtPmNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OldlYk1ETlNSZWdpc3Rl
cjo6RmluaXNoZWRSZWdpc3RlcmluZ01ETlNOYW1lIHsgcmVxdWVzdC0+cmVxdWVzdElkZW50aWZp
ZXIsIG1ha2VVbmV4cGVjdGVkKFdlYkNvcmU6Ok1ETlNSZWdpc3RlckVycm9yOjpETlNTRCkgfSwg
MCk7CisgICAgICAgIHJlcXVlc3QtPmNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OldlYk1ETlNS
ZWdpc3Rlcjo6RmluaXNoZWRSZWdpc3RlcmluZ01ETlNOYW1lIHsgcmVxdWVzdC0+cmVxdWVzdElk
ZW50aWZpZXIsIHJlcXVlc3QtPm5hbWUsIFdlYkNvcmU6Ok1ETlNSZWdpc3RlckVycm9yOjpETlNT
RCB9LCAwKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICByZXF1ZXN0LT5jb25uZWN0aW9u
LT5zZW5kKE1lc3NhZ2VzOjpXZWJNRE5TUmVnaXN0ZXI6OkZpbmlzaGVkUmVnaXN0ZXJpbmdNRE5T
TmFtZSB7IHJlcXVlc3QtPnJlcXVlc3RJZGVudGlmaWVyLCByZXF1ZXN0LT5uYW1lIH0sIDApOwor
ICAgIHJlcXVlc3QtPmNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OldlYk1ETlNSZWdpc3Rlcjo6
RmluaXNoZWRSZWdpc3RlcmluZ01ETlNOYW1lIHsgcmVxdWVzdC0+cmVxdWVzdElkZW50aWZpZXIs
IHJlcXVlc3QtPm5hbWUsIHsgfSB9LCAwKTsKIH0KIAogdm9pZCBOZXR3b3JrTUROU1JlZ2lzdGVy
OjpyZWdpc3Rlck1ETlNOYW1lKE1ETlNSZWdpc3RlcklkZW50aWZpZXIgcmVxdWVzdElkZW50aWZp
ZXIsIFdlYkNvcmU6OkRvY3VtZW50SWRlbnRpZmllciBkb2N1bWVudElkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgaXBBZGRyZXNzKQogeworICAgIGF1dG8gbmFtZSA9IG1ha2VTdHJpbmcoY3JlYXRl
Q2Fub25pY2FsVVVJRFN0cmluZygpLCAiLmxvY2FsIik7CisKICAgICBETlNTZXJ2aWNlUmVmIHNl
cnZpY2U7CiAgICAgYXV0byBpdGVyYXRvciA9IG1fc2VydmljZXMuZmluZChkb2N1bWVudElkZW50
aWZpZXIpOwogICAgIGlmIChpdGVyYXRvciA9PSBtX3NlcnZpY2VzLmVuZCgpKSB7CiAgICAgICAg
IGF1dG8gZXJyb3IgPSBETlNTZXJ2aWNlQ3JlYXRlQ29ubmVjdGlvbigmc2VydmljZSk7CiAgICAg
ICAgIGlmIChlcnJvcikgewogICAgICAgICAgICAgTUROU19SRUxFQVNFX0xPRygicmVnaXN0ZXJN
RE5TTmFtZSBETlNTZXJ2aWNlQ3JlYXRlQ29ubmVjdGlvbiBlcnJvciAlZCIsIGVycm9yKTsKLSAg
ICAgICAgICAgIG1fY29ubmVjdGlvbi5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6V2ViTURO
U1JlZ2lzdGVyOjpGaW5pc2hlZFJlZ2lzdGVyaW5nTUROU05hbWUgeyByZXF1ZXN0SWRlbnRpZmll
ciwgbWFrZVVuZXhwZWN0ZWQoV2ViQ29yZTo6TUROU1JlZ2lzdGVyRXJyb3I6OkROU1NEKSB9LCAw
KTsKKyAgICAgICAgICAgIG1fY29ubmVjdGlvbi5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6
V2ViTUROU1JlZ2lzdGVyOjpGaW5pc2hlZFJlZ2lzdGVyaW5nTUROU05hbWUgeyByZXF1ZXN0SWRl
bnRpZmllciwgbmFtZSwgV2ViQ29yZTo6TUROU1JlZ2lzdGVyRXJyb3I6OkROU1NEIH0sIDApOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGVycm9yID0gRE5TU2Vydmlj
ZVNldERpc3BhdGNoUXVldWUoc2VydmljZSwgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSk7CiAg
ICAgICAgIGlmIChlcnJvcikgewogICAgICAgICAgICAgTUROU19SRUxFQVNFX0xPRygicmVnaXN0
ZXJNRE5TTmFtZSBETlNTZXJ2aWNlQ3JlYXRlQ29ubmVjdGlvbiBlcnJvciAlZCIsIGVycm9yKTsK
LSAgICAgICAgICAgIG1fY29ubmVjdGlvbi5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6V2Vi
TUROU1JlZ2lzdGVyOjpGaW5pc2hlZFJlZ2lzdGVyaW5nTUROU05hbWUgeyByZXF1ZXN0SWRlbnRp
ZmllciwgbWFrZVVuZXhwZWN0ZWQoV2ViQ29yZTo6TUROU1JlZ2lzdGVyRXJyb3I6OkROU1NEKSB9
LCAwKTsKKyAgICAgICAgICAgIG1fY29ubmVjdGlvbi5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdl
czo6V2ViTUROU1JlZ2lzdGVyOjpGaW5pc2hlZFJlZ2lzdGVyaW5nTUROU05hbWUgeyByZXF1ZXN0
SWRlbnRpZmllciwgbmFtZSwgV2ViQ29yZTo6TUROU1JlZ2lzdGVyRXJyb3I6OkROU1NEIH0sIDAp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIEFTU0VSVChzZXJ2aWNl
KTsKQEAgLTEyNiwxMyArMTI4LDEyIEBAIHZvaWQgTmV0d29ya01ETlNSZWdpc3Rlcjo6cmVnaXN0
ZXJNRE5TTmFtZShNRE5TUmVnaXN0ZXJJZGVudGlmaWVyIHJlcXVlc3RJZGVudGlmCiAgICAgfSBl
bHNlCiAgICAgICAgIHNlcnZpY2UgPSBpdGVyYXRvci0+dmFsdWU7CiAKLSAgICBhdXRvIG5hbWUg
PSBtYWtlU3RyaW5nKGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSwgIi5sb2NhbCIpOwotCiAg
ICAgYXV0byBpcCA9IGluZXRfYWRkcihpcEFkZHJlc3MudXRmOCgpLmRhdGEoKSk7CiAKKyAgICAv
LyBGSVhNRTogQWRkIElQdjYgc3VwcG9ydC4KICAgICBpZiAoaXAgPT0gKCBpbl9hZGRyX3QpKC0x
KSkgewogICAgICAgICBNRE5TX1JFTEVBU0VfTE9HKCJyZWdpc3Rlck1ETlNOYW1lIGluZXRfYWRk
ciBlcnJvciIpOwotICAgICAgICBtX2Nvbm5lY3Rpb24uY29ubmVjdGlvbigpLnNlbmQoTWVzc2Fn
ZXM6OldlYk1ETlNSZWdpc3Rlcjo6RmluaXNoZWRSZWdpc3RlcmluZ01ETlNOYW1lIHsgcmVxdWVz
dElkZW50aWZpZXIsIG1ha2VVbmV4cGVjdGVkKFdlYkNvcmU6Ok1ETlNSZWdpc3RlckVycm9yOjpC
YWRQYXJhbWV0ZXIpIH0sIDApOworICAgICAgICBtX2Nvbm5lY3Rpb24uY29ubmVjdGlvbigpLnNl
bmQoTWVzc2FnZXM6OldlYk1ETlNSZWdpc3Rlcjo6RmluaXNoZWRSZWdpc3RlcmluZ01ETlNOYW1l
IHsgcmVxdWVzdElkZW50aWZpZXIsIG5hbWUsIFdlYkNvcmU6Ok1ETlNSZWdpc3RlckVycm9yOjpC
YWRQYXJhbWV0ZXIgfSwgMCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTE1Niw3ICsx
NTcsNyBAQCB2b2lkIE5ldHdvcmtNRE5TUmVnaXN0ZXI6OnJlZ2lzdGVyTUROU05hbWUoTUROU1Jl
Z2lzdGVySWRlbnRpZmllciByZXF1ZXN0SWRlbnRpZgogICAgICAgICByZWludGVycHJldF9jYXN0
PHZvaWQqPihwZW5kaW5nUmVnaXN0cmF0aW9uUmVxdWVzdENvdW50KSk7CiAgICAgaWYgKGVycm9y
KSB7CiAgICAgICAgIE1ETlNfUkVMRUFTRV9MT0coInJlZ2lzdGVyTUROU05hbWUgRE5TU2Vydmlj
ZVJlZ2lzdGVyUmVjb3JkIGVycm9yICVkIiwgZXJyb3IpOwotICAgICAgICBtX2Nvbm5lY3Rpb24u
Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OldlYk1ETlNSZWdpc3Rlcjo6RmluaXNoZWRSZWdp
c3RlcmluZ01ETlNOYW1lIHsgcmVxdWVzdElkZW50aWZpZXIsIG1ha2VVbmV4cGVjdGVkKFdlYkNv
cmU6Ok1ETlNSZWdpc3RlckVycm9yOjpETlNTRCkgfSwgMCk7CisgICAgICAgIG1fY29ubmVjdGlv
bi5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6V2ViTUROU1JlZ2lzdGVyOjpGaW5pc2hlZFJl
Z2lzdGVyaW5nTUROU05hbWUgeyByZXF1ZXN0SWRlbnRpZmllciwgcGVuZGluZ1JlcXVlc3QtPm5h
bWUsIFdlYkNvcmU6Ok1ETlNSZWdpc3RlckVycm9yOjpETlNTRCB9LCAwKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICBwZW5kaW5nUmVnaXN0cmF0aW9uUmVxdWVzdHMoKS5hZGQocGVuZGlu
Z1JlZ2lzdHJhdGlvblJlcXVlc3RDb3VudCsrLCBXVEZNb3ZlKHBlbmRpbmdSZXF1ZXN0KSk7CkBA
IC0xNzEsNyArMTcyLDkgQEAgdm9pZCBOZXR3b3JrTUROU1JlZ2lzdGVyOjp1bnJlZ2lzdGVyTURO
U05hbWVzKFdlYkNvcmU6OkRvY3VtZW50SWRlbnRpZmllcikKIHZvaWQgTmV0d29ya01ETlNSZWdp
c3Rlcjo6cmVnaXN0ZXJNRE5TTmFtZShNRE5TUmVnaXN0ZXJJZGVudGlmaWVyIHJlcXVlc3RJZGVu
dGlmaWVyLCBXZWJDb3JlOjpEb2N1bWVudElkZW50aWZpZXIgZG9jdW1lbnRJZGVudGlmaWVyLCBj
b25zdCBTdHJpbmcmIGlwQWRkcmVzcykKIHsKICAgICBNRE5TX1JFTEVBU0VfTE9HKCJyZWdpc3Rl
ck1ETlNOYW1lIG5vdCBpbXBsZW1lbnRlZCIpOwotICAgIG1fY29ubmVjdGlvbi5jb25uZWN0aW9u
KCkuc2VuZChNZXNzYWdlczo6V2ViTUROU1JlZ2lzdGVyOjpGaW5pc2hlZFJlZ2lzdGVyaW5nTURO
U05hbWUgeyByZXF1ZXN0SWRlbnRpZmllciwgbWFrZVVuZXhwZWN0ZWQoV2ViQ29yZTo6TUROU1Jl
Z2lzdGVyRXJyb3I6Ok5vdEltcGxlbWVudGVkKSB9LCAwKTsKKyAgICBhdXRvIG5hbWUgPSBtYWtl
U3RyaW5nKGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSwgIi5sb2NhbCIpOworCisgICAgbV9j
b25uZWN0aW9uLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpXZWJNRE5TUmVnaXN0ZXI6OkZp
bmlzaGVkUmVnaXN0ZXJpbmdNRE5TTmFtZSB7IHJlcXVlc3RJZGVudGlmaWVyLCBuYW1lLCBXZWJD
b3JlOjpNRE5TUmVnaXN0ZXJFcnJvcjo6Tm90SW1wbGVtZW50ZWQgfSwgMCk7CiB9CiAKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJLaXQv
U291cmNlcy50eHQKaW5kZXggMTE3MzY5NzZhNGMzZTk0MDhjYTAxYmE3YWU4NzlmNjI0NWJiYzVk
ZC4uMjQxMmJiZmFkOGU1ZjgxMWI1MWU4MmY2MGQxYzU0NjE5YTIxODgzOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0
CkBAIC02NDAsNiArNjQwLDcgQEAgV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFByb3ZpZGVy
LmNwcAogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0cmVhbS5jcHAKIAogV2ViUHJvY2Vz
cy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENOZXR3b3JrLmNwcAorV2ViUHJvY2Vzcy9OZXR3b3Jr
L3dlYnJ0Yy9MaWJXZWJSVENOZXR3b3JrTWFuYWdlci5jcHAKIFdlYlByb2Nlc3MvTmV0d29yay93
ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuY3BwCiBXZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xp
YldlYlJUQ1Jlc29sdmVyLmNwcAogV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENT
b2NrZXQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCA1ZGVhODgxN2VhODBhYmM1MGI2MDU2YmI2ZDhlMGZhMmQzODk3ODgwLi5jNjkw
ODM4ZjJiZGM2Y2YyNzJmMGIxMWE3Y2Q5M2U3MGNiY2YxZjY2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM4NTIsNiArMzg1Miw4IEBA
CiAJCTQxQjdFRDZGMjA2OTY1OTAwMDg3RDg1MyAvKiBOZXR3b3JrTUROU1JlZ2lzdGVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5ldHdvcmtNRE5TUmVnaXN0ZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUI3RUQ3MDIwNjk2NTkwMDA4N0Q4
NTMgLyogTmV0d29ya01ETlNSZWdpc3Rlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBOZXR3b3JrTUROU1JlZ2lzdGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQxQjdFRDcxMjA2OTY1OTAwMDg3RDg1MyAvKiBOZXR3b3JrTUROU1JlZ2lzdGVyLm1lc3NhZ2Vz
LmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE5ldHdvcmtNRE5TUmVnaXN0ZXIubWVzc2FnZXMu
aW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxQzE0QkMyMjZERTZBMkYwMDY4NUJG
NSAvKiBMaWJXZWJSVENOZXR3b3JrTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMaWJX
ZWJSVENOZXR3b3JrTWFuYWdlci5jcHA7IHBhdGggPSBOZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENO
ZXR3b3JrTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxQzE0QkMz
MjZERTZBMkYwMDY4NUJGNSAvKiBMaWJXZWJSVENOZXR3b3JrTWFuYWdlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBMaWJXZWJSVENOZXR3b3JrTWFuYWdlci5oOyBwYXRoID0gTmV0d29yay93ZWJydGMvTGli
V2ViUlRDTmV0d29ya01hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFD
M0I4ODUyNjQ0NEFBQjAwNEVENERFIC8qIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50
ZXJuYWxVbml0TWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDFDM0I4ODYyNjQ0NEFBQzAwNEVENERFIC8qIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRl
cmVySW50ZXJuYWxVbml0TWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBdWRpb01lZGlh
U3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0MUMzQjg4NzI2NDQ0QUQzMDA0RUQ0REUgLyogQXVkaW9NZWRpYVN0
cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0SWRlbnRpZmllci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODUxNSw2ICs4NTE3LDggQEAKIAkJCQk0MTZG
ODA4OTI0NUM3RkY1MDBCNjhGMDIgLyogTGliV2ViUlRDTmV0d29yay5jcHAgKi8sCiAJCQkJNDEx
QjIyNjIxRTM3MTI0NDAwNEY3MzYzIC8qIExpYldlYlJUQ05ldHdvcmsuaCAqLywKIAkJCQk0MTZG
ODA4NjI0NUIzOTc0MDBCNjhGMDIgLyogTGliV2ViUlRDTmV0d29yay5tZXNzYWdlcy5pbiAqLywK
KwkJCQk0MUMxNEJDMjI2REU2QTJGMDA2ODVCRjUgLyogTGliV2ViUlRDTmV0d29ya01hbmFnZXIu
Y3BwICovLAorCQkJCTQxQzE0QkMzMjZERTZBMkYwMDY4NUJGNSAvKiBMaWJXZWJSVENOZXR3b3Jr
TWFuYWdlci5oICovLAogCQkJCTQxMzA3NUE3MURFODVFRTcwMDM5RUM2OSAvKiBMaWJXZWJSVENQ
cm92aWRlci5jcHAgKi8sCiAJCQkJNDEzMDc1QTgxREU4NUVFNzAwMzlFQzY5IC8qIExpYldlYlJU
Q1Byb3ZpZGVyLmggKi8sCiAJCQkJNDFGQUY1RjcxRTNDMEI0NzAwMUFFNjc4IC8qIExpYldlYlJU
Q1Jlc29sdmVyLmNwcCAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENOZXR3b3JrTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDTmV0d29ya01hbmFnZXIuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjVjY2Y3YWUzNzY0YWE2MzBiMzhjMzU1NWY1YTZjZjg0ZjdlMzE5OWUKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGli
V2ViUlRDTmV0d29ya01hbmFnZXIuY3BwCkBAIC0wLDAgKzEsMTU4IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxpYldlYlJUQ05ldHdvcmtNYW5hZ2VyLmgi
CisKKyNpZiBVU0UoTElCV0VCUlRDKQorCisjaW5jbHVkZSAiTGliV2ViUlRDTmV0d29yay5oIgor
I2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSA8
V2ViQ29yZS9Eb2N1bWVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTGliV2ViUlRDVXRpbHMuaD4K
KworbmFtZXNwYWNlIFdlYktpdCB7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworTGliV2Vi
UlRDTmV0d29ya01hbmFnZXIqIExpYldlYlJUQ05ldHdvcmtNYW5hZ2VyOjpnZXRPckNyZWF0ZShX
ZWJDb3JlOjpEb2N1bWVudElkZW50aWZpZXIgaWRlbnRpZmllcikKK3sKKyAgICBhdXRvKiBkb2N1
bWVudCA9IERvY3VtZW50OjphbGxEb2N1bWVudHNNYXAoKS5nZXQoaWRlbnRpZmllcik7CisgICAg
aWYgKCFkb2N1bWVudCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvKiBuZXR3
b3JrTWFuYWdlciA9IHN0YXRpY19jYXN0PExpYldlYlJUQ05ldHdvcmtNYW5hZ2VyKj4oZG9jdW1l
bnQtPnJ0Y05ldHdvcmtNYW5hZ2VyKCkpOworICAgIGlmICghbmV0d29ya01hbmFnZXIpIHsKKyAg
ICAgICAgYXV0byBuZXdOZXR3b3JrTWFuYWdlciA9IGFkb3B0UmVmKCpuZXcgTGliV2ViUlRDTmV0
d29ya01hbmFnZXIoaWRlbnRpZmllcikpOworICAgICAgICBuZXR3b3JrTWFuYWdlciA9IG5ld05l
dHdvcmtNYW5hZ2VyLnB0cigpOworICAgICAgICBkb2N1bWVudC0+c2V0UlRDTmV0d29ya01hbmFn
ZXIoV1RGTW92ZShuZXdOZXR3b3JrTWFuYWdlcikpOworICAgIH0KKworICAgIHJldHVybiBuZXR3
b3JrTWFuYWdlcjsKK30KKworTGliV2ViUlRDTmV0d29ya01hbmFnZXI6OkxpYldlYlJUQ05ldHdv
cmtNYW5hZ2VyKFdlYkNvcmU6OkRvY3VtZW50SWRlbnRpZmllciBkb2N1bWVudElkZW50aWZpZXIp
CisgICAgOiBtX2RvY3VtZW50SWRlbnRpZmllcihkb2N1bWVudElkZW50aWZpZXIpCit7CisgICAg
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkubGliV2ViUlRDTmV0d29yaygpLm1vbml0b3IoKS5hZGRP
YnNlcnZlcigqdGhpcyk7Cit9CisKK0xpYldlYlJUQ05ldHdvcmtNYW5hZ2VyOjp+TGliV2ViUlRD
TmV0d29ya01hbmFnZXIoKQoreworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmxpYldlYlJU
Q05ldHdvcmsoKS5tb25pdG9yKCkucmVtb3ZlT2JzZXJ2ZXIoKnRoaXMpOworfQorCit2b2lkIExp
YldlYlJUQ05ldHdvcmtNYW5hZ2VyOjp1bnJlZ2lzdGVyTUROU05hbWVzKCkKK3sKKyAgICBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5saWJXZWJSVENOZXR3b3JrKCkubWRuc1JlZ2lzdGVyKCkudW5y
ZWdpc3Rlck1ETlNOYW1lcyhtX2RvY3VtZW50SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgTGliV2Vi
UlRDTmV0d29ya01hbmFnZXI6OlN0YXJ0VXBkYXRpbmcoKQoreworICAgIGNhbGxPbk1haW5SdW5M
b29wKFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXSB7CisgICAgICAgIGlmICgh
d2Vha1RoaXMpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgYXV0byYgbW9uaXRvciA9
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmxpYldlYlJUQ05ldHdvcmsoKS5tb25pdG9yKCk7Cisg
ICAgICAgIGlmIChtX3JlY2VpdmVkTmV0d29ya0xpc3QpIHsKKyAgICAgICAgICAgIFdlYkNvcmU6
OkxpYldlYlJUQ1Byb3ZpZGVyOjpjYWxsT25XZWJSVENOZXR3b3JrVGhyZWFkKFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKKyAgICAgICAgICAgICAgICBTaWduYWxOZXR3
b3Jrc0NoYW5nZWQoKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9IGVsc2UgaWYgKG1vbml0
b3IuZGlkUmVjZWl2ZU5ldHdvcmtMaXN0KCkpCisgICAgICAgICAgICBuZXR3b3Jrc0NoYW5nZWQo
bW9uaXRvci5uZXR3b3JrTGlzdCgpICwgbW9uaXRvci5pcHY0KCksIG1vbml0b3IuaXB2NigpKTsK
KyAgICAgICAgbW9uaXRvci5zdGFydFVwZGF0aW5nKCk7CisgICAgfSk7Cit9CisKK3ZvaWQgTGli
V2ViUlRDTmV0d29ya01hbmFnZXI6OlN0b3BVcGRhdGluZygpCit7CisgICAgY2FsbE9uTWFpblJ1
bkxvb3AoW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldIHsKKyAgICAgICAgaWYgKCF3ZWFr
VGhpcykKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkubGliV2ViUlRDTmV0d29yaygpLm1vbml0b3IoKS5zdG9wVXBkYXRpbmcoKTsKKyAgICB9KTsK
K30KKword2VicnRjOjpNZG5zUmVzcG9uZGVySW50ZXJmYWNlKiBMaWJXZWJSVENOZXR3b3JrTWFu
YWdlcjo6R2V0TWRuc1Jlc3BvbmRlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fdXNlTUROU0Nh
bmRpZGF0ZXMgPyBjb25zdF9jYXN0PExpYldlYlJUQ05ldHdvcmtNYW5hZ2VyKj4odGhpcykgOiBu
dWxscHRyOworfQorCit2b2lkIExpYldlYlJUQ05ldHdvcmtNYW5hZ2VyOjpuZXR3b3Jrc0NoYW5n
ZWQoY29uc3QgVmVjdG9yPFJUQ05ldHdvcms+JiBuZXR3b3JrcywgY29uc3QgUlRDTmV0d29yazo6
SVBBZGRyZXNzJiBpcHY0LCBjb25zdCBSVENOZXR3b3JrOjpJUEFkZHJlc3MmIGlwdjYpCit7Cisg
ICAgYm9vbCBmb3JjZVNpZ25hbGluZyA9ICFtX3JlY2VpdmVkTmV0d29ya0xpc3Q7CisgICAgbV9y
ZWNlaXZlZE5ldHdvcmtMaXN0ID0gdHJ1ZTsKKworICAgIFdlYkNvcmU6OkxpYldlYlJUQ1Byb3Zp
ZGVyOjpjYWxsT25XZWJSVENOZXR3b3JrVGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyksIG5ldHdvcmtzLCBpcHY0LCBpcHY2LCBmb3JjZVNpZ25hbGluZ10geworICAg
ICAgICBzdGQ6OnZlY3RvcjxydGM6Ok5ldHdvcmsqPiBuZXR3b3JrTGlzdChuZXR3b3Jrcy5zaXpl
KCkpOworICAgICAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgbmV0d29ya3Muc2l6
ZSgpOyArK2luZGV4KQorICAgICAgICAgICAgbmV0d29ya0xpc3RbaW5kZXhdID0gbmV3IHJ0Yzo6
TmV0d29yayhuZXR3b3Jrc1tpbmRleF0udmFsdWUoKSk7CisKKyAgICAgICAgYm9vbCBoYXNDaGFu
Z2VkOworICAgICAgICBzZXRfZGVmYXVsdF9sb2NhbF9hZGRyZXNzZXMoaXB2NC52YWx1ZSwgaXB2
Ni52YWx1ZSk7CisgICAgICAgIE1lcmdlTmV0d29ya0xpc3QobmV0d29ya0xpc3QsICZoYXNDaGFu
Z2VkKTsKKyAgICAgICAgaWYgKGhhc0NoYW5nZWQgfHwgZm9yY2VTaWduYWxpbmcpCisgICAgICAg
ICAgICBTaWduYWxOZXR3b3Jrc0NoYW5nZWQoKTsKKyAgICB9KTsKKworfQorCit2b2lkIExpYldl
YlJUQ05ldHdvcmtNYW5hZ2VyOjpuZXR3b3JrUHJvY2Vzc0NyYXNoZWQoKQoreworICAgIG1fcmVj
ZWl2ZWROZXR3b3JrTGlzdCA9IGZhbHNlOworICAgIGlmICghV2ViQ29yZTo6TGliV2ViUlRDUHJv
dmlkZXI6Omhhc1dlYlJUQ1RocmVhZHMoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gSW4g
Y2FzZSB3ZSBoYXZlIGNsaWVudHMgd2FpdGluZyBmb3IgbmV0d29ya3NDaGFuZ2VkLCB3ZSBjYWxs
IFNpZ25hbE5ldHdvcmtzQ2hhbmdlZCB0byBtYWtlIHN1cmUgdGhleSBkbyBub3Qgd2FpdCBmb3Ig
bm90aGluZy4KKyAgICBXZWJDb3JlOjpMaWJXZWJSVENQcm92aWRlcjo6Y2FsbE9uV2ViUlRDTmV0
d29ya1RocmVhZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7CisgICAg
ICAgIFNpZ25hbE5ldHdvcmtzQ2hhbmdlZCgpOworICAgIH0pOworfQorCit2b2lkIExpYldlYlJU
Q05ldHdvcmtNYW5hZ2VyOjpDcmVhdGVOYW1lRm9yQWRkcmVzcyhjb25zdCBydGM6OklQQWRkcmVz
cyYgYWRkcmVzcywgTmFtZUNyZWF0ZWRDYWxsYmFjayBjYWxsYmFjaykKK3sKKyAgICBjYWxsT25N
YWluUnVuTG9vcChbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgYWRkcmVzcywgY2FsbGJh
Y2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhp
cykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5saWJXZWJSVENOZXR3b3JrKCkubWRuc1JlZ2lzdGVyKCkucmVnaXN0ZXJNRE5TTmFtZSh3ZWFr
VGhpcy0+bV9kb2N1bWVudElkZW50aWZpZXIsIGZyb21TdGRTdHJpbmcoYWRkcmVzcy5Ub1N0cmlu
ZygpKSwgW2FkZHJlc3MsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGF1dG8gbmFtZSwg
YXV0byBlcnJvcikgbXV0YWJsZSB7CisgICAgICAgICAgICBXZWJDb3JlOjpMaWJXZWJSVENQcm92
aWRlcjo6Y2FsbE9uV2ViUlRDTmV0d29ya1RocmVhZChbYWRkcmVzcywgY2FsbGJhY2sgPSBXVEZN
b3ZlKGNhbGxiYWNrKSwgbmFtZSA9IFdURk1vdmUobmFtZSkuaXNvbGF0ZWRDb3B5KCksIGVycm9y
XSB7CisgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUYoZXJyb3IsIFdlYlJUQywg
Ik1ETlMgcmVnaXN0cmF0aW9uIG9mIGEgaG9zdCBjYW5kaWRhdGUgZmFpbGVkIHdpdGggZXJyb3Ig
JWQiLCAqZXJyb3IpOworICAgICAgICAgICAgICAgIC8vIEluIGNhc2Ugb2YgZXJyb3IsIHdlIHBy
b3ZpZGUgdGhlIG5hbWUgdG8gbGV0IGdhdGhlcmluZyBjb21wbGV0ZS4KKyAgICAgICAgICAgICAg
ICBjYWxsYmFjayhhZGRyZXNzLCBuYW1lLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgfSk7
CisgICAgICAgIH0pOworICAgIH0pOworfQorCit2b2lkIExpYldlYlJUQ05ldHdvcmtNYW5hZ2Vy
OjpSZW1vdmVOYW1lRm9yQWRkcmVzcyhjb25zdCBydGM6OklQQWRkcmVzcyYsIE5hbWVSZW1vdmVk
Q2FsbGJhY2spCit7CisgICAgLy8gTGliV2ViUlRDIGJhY2tlbmQgZGVmaW5lcyB0aGlzIG1ldGhv
ZCBidXQgZG9lcyBub3QgY2FsbCBpdC4KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBVU0UoTElCV0VCUlRDKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ05l
dHdvcmtNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMv
TGliV2ViUlRDTmV0d29ya01hbmFnZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yODZkYTY3MjIxYjA1M2FmOWNh
M2M0MGZiMjU2ZmJlNjZhNzkxMWEyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ05ldHdvcmtNYW5hZ2VyLmgKQEAgLTAs
MCArMSw3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgVVNFKExJQldFQlJU
QykKKworI2luY2x1ZGUgIldlYlJUQ01vbml0b3IuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0RvY3Vt
ZW50SWRlbnRpZmllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTGliV2ViUlRDUHJvdmlkZXIuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL1JUQ05ldHdvcmtNYW5hZ2VyLmg+CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitjbGFzcyBMaWJXZWJSVENOZXR3b3JrTWFuYWdlciBmaW5hbCA6IHB1YmxpYyBXZWJD
b3JlOjpSVENOZXR3b3JrTWFuYWdlciwgcHVibGljIHJ0Yzo6TmV0d29ya01hbmFnZXJCYXNlLCBw
dWJsaWMgd2VicnRjOjpNZG5zUmVzcG9uZGVySW50ZXJmYWNlLCBwdWJsaWMgV2ViUlRDTW9uaXRv
cjo6T2JzZXJ2ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAg
IHN0YXRpYyBMaWJXZWJSVENOZXR3b3JrTWFuYWdlciogZ2V0T3JDcmVhdGUoV2ViQ29yZTo6RG9j
dW1lbnRJZGVudGlmaWVyKTsKKyAgICB+TGliV2ViUlRDTmV0d29ya01hbmFnZXIoKTsKKworcHJp
dmF0ZToKKyAgICBleHBsaWNpdCBMaWJXZWJSVENOZXR3b3JrTWFuYWdlcihXZWJDb3JlOjpEb2N1
bWVudElkZW50aWZpZXIpOworCisgICAgLy8gV2ViQ29yZTo6UlRDTmV0d29ya01hbmFnZXIKKyAg
ICB2b2lkIHNldElDRUNhbmRpZGF0ZUZpbHRlcmluZyhib29sIGRvRmlsdGVyaW5nKSBmaW5hbCB7
IG1fdXNlTUROU0NhbmRpZGF0ZXMgPSBkb0ZpbHRlcmluZzsgfQorICAgIHZvaWQgdW5yZWdpc3Rl
ck1ETlNOYW1lcygpIGZpbmFsOworCisgICAgLy8gd2VicnRjOjpOZXR3b3JrTWFuYWdlckJhc2UK
KyAgICB2b2lkIFN0YXJ0VXBkYXRpbmcoKSBmaW5hbDsKKyAgICB2b2lkIFN0b3BVcGRhdGluZygp
IGZpbmFsOworICAgIHdlYnJ0Yzo6TWRuc1Jlc3BvbmRlckludGVyZmFjZSogR2V0TWRuc1Jlc3Bv
bmRlcigpIGNvbnN0IGZpbmFsOworCisgICAgLy8gd2VicnRjOjpNZG5zUmVzcG9uZGVySW50ZXJm
YWNlCisgICAgdm9pZCBDcmVhdGVOYW1lRm9yQWRkcmVzcyhjb25zdCBydGM6OklQQWRkcmVzcyYs
IE5hbWVDcmVhdGVkQ2FsbGJhY2spOworICAgIHZvaWQgUmVtb3ZlTmFtZUZvckFkZHJlc3MoY29u
c3QgcnRjOjpJUEFkZHJlc3MmLCBOYW1lUmVtb3ZlZENhbGxiYWNrKTsKKworICAgIC8vIFdlYlJU
Q01vbml0b3I6Ok9ic2VydmVyCisgICAgdm9pZCBuZXR3b3Jrc0NoYW5nZWQoY29uc3QgVmVjdG9y
PFJUQ05ldHdvcms+JiwgY29uc3QgUlRDTmV0d29yazo6SVBBZGRyZXNzJiwgY29uc3QgUlRDTmV0
d29yazo6SVBBZGRyZXNzJikgZmluYWw7CisgICAgdm9pZCBuZXR3b3JrUHJvY2Vzc0NyYXNoZWQo
KSBmaW5hbDsKKworICAgIFdlYkNvcmU6OkRvY3VtZW50SWRlbnRpZmllciBtX2RvY3VtZW50SWRl
bnRpZmllcjsKKyAgICBib29sIG1fdXNlTUROU0NhbmRpZGF0ZXMgeyB0cnVlIH07CisgICAgYm9v
bCBtX3JlY2VpdmVkTmV0d29ya0xpc3QgeyBmYWxzZSB9OworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvd2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHAKaW5kZXggOTY4YzlmMzA0
YjY1NDgwOWY5OTI2MjU2YzEwMDU1MDdjOTcxMmY1NS4uZjljNGE5MGQ4MjFkYWY3YThhYjM5YWZk
ZDMxNjQyMDU4NTE2M2I3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvd2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuY3BwCkBAIC0zMyw2ICsz
Myw3IEBACiAjZW5kaWYKIAogI2luY2x1ZGUgIkxpYldlYlJUQ05ldHdvcmsuaCIKKyNpbmNsdWRl
ICJMaWJXZWJSVENOZXR3b3JrTWFuYWdlci5oIgogI2luY2x1ZGUgIlJUQ0RhdGFDaGFubmVsUmVt
b3RlTWFuYWdlci5oIgogI2luY2x1ZGUgIldlYlBhZ2UuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNz
LmgiCkBAIC01NCw3ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgfQogfTsKIAotcnRjOjpzY29wZWRf
cmVmcHRyPHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U+IExpYldlYlJUQ1Byb3ZpZGVy
OjpjcmVhdGVQZWVyQ29ubmVjdGlvbih3ZWJydGM6OlBlZXJDb25uZWN0aW9uT2JzZXJ2ZXImIG9i
c2VydmVyLCBydGM6OlBhY2tldFNvY2tldEZhY3RvcnkqIHNvY2tldEZhY3RvcnksIHdlYnJ0Yzo6
UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OlJUQ0NvbmZpZ3VyYXRpb24mJiBjb25maWd1cmF0aW9u
KQorcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U+IExp
YldlYlJUQ1Byb3ZpZGVyOjpjcmVhdGVQZWVyQ29ubmVjdGlvbihEb2N1bWVudElkZW50aWZpZXIg
aWRlbnRpZmllciwgd2VicnRjOjpQZWVyQ29ubmVjdGlvbk9ic2VydmVyJiBvYnNlcnZlciwgcnRj
OjpQYWNrZXRTb2NrZXRGYWN0b3J5KiBzb2NrZXRGYWN0b3J5LCB3ZWJydGM6OlBlZXJDb25uZWN0
aW9uSW50ZXJmYWNlOjpSVENDb25maWd1cmF0aW9uJiYgY29uZmlndXJhdGlvbikKIHsKICNpZiBF
TkFCTEUoR1BVX1BST0NFU1MpICYmIFBMQVRGT1JNKENPQ09BKSAmJiAhUExBVEZPUk0oTUFDQ0FU
QUxZU1QpCiAgICAgaWYgKCFtX2RpZEluaXRpYWxpemVDYWxsYmFjaykgewpAQCAtNjcsMjIgKzY4
LDE3IEBAIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNl
PiBMaWJXZWJSVENQcm92aWRlcjo6Y3JlYXRlUGVlCiAKICAgICBhdXRvJiBuZXR3b3JrTW9uaXRv
ciA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmxpYldlYlJUQ05ldHdvcmsoKS5tb25pdG9yKCk7
CiAgICAgbmV0d29ya01vbml0b3Iuc2V0RW51bWVyYXRpbmdBbGxOZXR3b3JrSW50ZXJmYWNlc0Vu
YWJsZWQoaXNFbnVtZXJhdGluZ0FsbE5ldHdvcmtJbnRlcmZhY2VzRW5hYmxlZCgpKTsKLSAgICBy
ZXR1cm4gV2ViQ29yZTo6TGliV2ViUlRDUHJvdmlkZXI6OmNyZWF0ZVBlZXJDb25uZWN0aW9uKG9i
c2VydmVyLCBuZXR3b3JrTW9uaXRvciwgKnNvY2tldEZhY3RvcnksIFdURk1vdmUoY29uZmlndXJh
dGlvbiksIG1ha2VVbmlxdWU8QXN5bmNSZXNvbHZlckZhY3Rvcnk+KCkpOwotfQogCi12b2lkIExp
YldlYlJUQ1Byb3ZpZGVyOjpkaXNhYmxlTm9uTG9jYWxob3N0Q29ubmVjdGlvbnMoKQotewotICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmxpYldlYlJUQ05ldHdvcmsoKS5kaXNhYmxlTm9uTG9j
YWxob3N0Q29ubmVjdGlvbnMoKTsKLX0KKyAgICBhdXRvKiBuZXR3b3JrTWFuYWdlciA9IExpYldl
YlJUQ05ldHdvcmtNYW5hZ2VyOjpnZXRPckNyZWF0ZShpZGVudGlmaWVyKTsKKyAgICBpZiAoIW5l
dHdvcmtNYW5hZ2VyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotdm9pZCBMaWJXZWJSVENQ
cm92aWRlcjo6dW5yZWdpc3Rlck1ETlNOYW1lcyhEb2N1bWVudElkZW50aWZpZXIgZG9jdW1lbnRJ
ZGVudGlmaWVyKQotewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmxpYldlYlJUQ05ldHdv
cmsoKS5tZG5zUmVnaXN0ZXIoKS51bnJlZ2lzdGVyTUROU05hbWVzKGRvY3VtZW50SWRlbnRpZmll
cik7CisgICAgcmV0dXJuIFdlYkNvcmU6OkxpYldlYlJUQ1Byb3ZpZGVyOjpjcmVhdGVQZWVyQ29u
bmVjdGlvbihvYnNlcnZlciwgKm5ldHdvcmtNYW5hZ2VyLCAqc29ja2V0RmFjdG9yeSwgV1RGTW92
ZShjb25maWd1cmF0aW9uKSwgbWFrZVVuaXF1ZTxBc3luY1Jlc29sdmVyRmFjdG9yeT4oKSk7CiB9
CiAKLXZvaWQgTGliV2ViUlRDUHJvdmlkZXI6OnJlZ2lzdGVyTUROU05hbWUoRG9jdW1lbnRJZGVu
dGlmaWVyIGRvY3VtZW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBpcEFkZHJlc3MsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoTUROU05hbWVPckVycm9yJiYpPiYmIGNhbGxiYWNrKQordm9pZCBM
aWJXZWJSVENQcm92aWRlcjo6ZGlzYWJsZU5vbkxvY2FsaG9zdENvbm5lY3Rpb25zKCkKIHsKLSAg
ICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5saWJXZWJSVENOZXR3b3JrKCkubWRuc1JlZ2lzdGVy
KCkucmVnaXN0ZXJNRE5TTmFtZShkb2N1bWVudElkZW50aWZpZXIsIGlwQWRkcmVzcywgV1RGTW92
ZShjYWxsYmFjaykpOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmxpYldlYlJUQ05ldHdv
cmsoKS5kaXNhYmxlTm9uTG9jYWxob3N0Q29ubmVjdGlvbnMoKTsKIH0KIAogY2xhc3MgUlRDU29j
a2V0RmFjdG9yeSBmaW5hbCA6IHB1YmxpYyBMaWJXZWJSVENQcm92aWRlcjo6U3VzcGVuZGFibGVT
b2NrZXRGYWN0b3J5IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL3dlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmgKaW5kZXggNzJhZDNhNDI5ZmVmYmZh
MWQ0Y2FlZjVjMmJmN2M5NTczMDFlMTIwMS4uNzk1MTdjMDg4OTNlMWY2YjUwNWU3MjllNjRlMTlk
MDBjOTkwMWIzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
d2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmgKQEAgLTU0LDEwICs1NCw4IEBAIHB1
YmxpYzoKIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPFN1c3BlbmRhYmxlU29ja2V0RmFj
dG9yeT4gY3JlYXRlU29ja2V0RmFjdG9yeShTdHJpbmcmJiAvKiB1c2VyQWdlbnQgKi8sIGJvb2wg
LyogaXNGaXJzdFBhcnR5ICovLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmKSBmaW5hbDsK
IAotICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNl
PiBjcmVhdGVQZWVyQ29ubmVjdGlvbih3ZWJydGM6OlBlZXJDb25uZWN0aW9uT2JzZXJ2ZXImLCBy
dGM6OlBhY2tldFNvY2tldEZhY3RvcnkqLCB3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNl
OjpSVENDb25maWd1cmF0aW9uJiYpIGZpbmFsOworICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJy
dGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlPiBjcmVhdGVQZWVyQ29ubmVjdGlvbihXZWJDb3Jl
OjpEb2N1bWVudElkZW50aWZpZXIsIHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25PYnNlcnZlciYsIHJ0
Yzo6UGFja2V0U29ja2V0RmFjdG9yeSosIHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6
OlJUQ0NvbmZpZ3VyYXRpb24mJikgZmluYWw7CiAKLSAgICB2b2lkIHVucmVnaXN0ZXJNRE5TTmFt
ZXMoV2ViQ29yZTo6RG9jdW1lbnRJZGVudGlmaWVyKSBmaW5hbDsKLSAgICB2b2lkIHJlZ2lzdGVy
TUROU05hbWUoV2ViQ29yZTo6RG9jdW1lbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGlwQWRk
cmVzcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChNRE5TTmFtZU9yRXJyb3ImJik+JiYpIGZpbmFs
OwogICAgIHZvaWQgZGlzYWJsZU5vbkxvY2FsaG9zdENvbm5lY3Rpb25zKCkgZmluYWw7CiAgICAg
dm9pZCBzdGFydGVkTmV0d29ya1RocmVhZCgpIGZpbmFsOwogICAgIFJlZlB0cjxXZWJDb3JlOjpS
VENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXJDb25uZWN0aW9uPiBjcmVhdGVSVENEYXRhQ2hhbm5l
bFJlbW90ZUhhbmRsZXJDb25uZWN0aW9uKCkgZmluYWw7CkBAIC03Myw2ICs3MSw3IEBAIGlubGlu
ZSBMaWJXZWJSVENQcm92aWRlcjo6TGliV2ViUlRDUHJvdmlkZXIoV2ViUGFnZSYgd2ViUGFnZSkK
ICAgICA6IG1fd2ViUGFnZSh3ZWJQYWdlKQogewogICAgIG1fdXNlTmV0d29ya1RocmVhZFdpdGhT
b2NrZXRTZXJ2ZXIgPSBmYWxzZTsKKyAgICBtX3N1cHBvcnRzTUROUyA9IHRydWU7CiB9CiAKIGlu
bGluZSBVbmlxdWVSZWY8TGliV2ViUlRDUHJvdmlkZXI+IGNyZWF0ZUxpYldlYlJUQ1Byb3ZpZGVy
KFdlYlBhZ2UmIHBhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay93ZWJydGMvV2ViTUROU1JlZ2lzdGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL3dlYnJ0Yy9XZWJNRE5TUmVnaXN0ZXIuY3BwCmluZGV4IDUxNTkwZjlhY2NlNjI0
NDA2OGIxNDdjZTZhOWM3YzE4MjU3NTc3NjEuLjc2MDIwN2VhNTliY2EyNTQ1MjJmNTZjNTlhNTI0
NWU1OTVhOGRlMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L3dlYnJ0Yy9XZWJNRE5TUmVnaXN0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL3dlYnJ0Yy9XZWJNRE5TUmVnaXN0ZXIuY3BwCkBAIC0zNiwyMiArMzYsMjIgQEAK
IG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLXZvaWQgV2Vi
TUROU1JlZ2lzdGVyOjpmaW5pc2hlZFJlZ2lzdGVyaW5nTUROU05hbWUoTUROU1JlZ2lzdGVySWRl
bnRpZmllciBpZGVudGlmaWVyLCBMaWJXZWJSVENQcm92aWRlcjo6TUROU05hbWVPckVycm9yJiYg
cmVzdWx0KQordm9pZCBXZWJNRE5TUmVnaXN0ZXI6OmZpbmlzaGVkUmVnaXN0ZXJpbmdNRE5TTmFt
ZShNRE5TUmVnaXN0ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFN0cmluZyYmIG5hbWUsIHN0ZDo6
b3B0aW9uYWw8TUROU1JlZ2lzdGVyRXJyb3I+IGVycm9yKQogewogICAgIGF1dG8gcGVuZGluZ1Jl
Z2lzdHJhdGlvbiA9IG1fcGVuZGluZ1JlZ2lzdHJhdGlvbnMudGFrZShpZGVudGlmaWVyKTsKICAg
ICBpZiAoIXBlbmRpbmdSZWdpc3RyYXRpb24uY2FsbGJhY2spCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGlmIChyZXN1bHQuaGFzX3ZhbHVlKCkpIHsKKyAgICBpZiAoIWVycm9yKSB7CiAgICAgICAg
IGF1dG8gaXRlcmF0b3IgPSBtX3JlZ2lzdGVyaW5nRG9jdW1lbnRzLmZpbmQocGVuZGluZ1JlZ2lz
dHJhdGlvbi5kb2N1bWVudElkZW50aWZpZXIpOwogICAgICAgICBpZiAoaXRlcmF0b3IgPT0gbV9y
ZWdpc3RlcmluZ0RvY3VtZW50cy5lbmQoKSkgewotICAgICAgICAgICAgcGVuZGluZ1JlZ2lzdHJh
dGlvbi5jYWxsYmFjayhtYWtlVW5leHBlY3RlZChXZWJDb3JlOjpNRE5TUmVnaXN0ZXJFcnJvcjo6
RE5TU0QpKTsKKyAgICAgICAgICAgIHBlbmRpbmdSZWdpc3RyYXRpb24uY2FsbGJhY2sobmFtZSwg
V2ViQ29yZTo6TUROU1JlZ2lzdGVyRXJyb3I6OkROU1NEKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQotICAgICAgICBpdGVyYXRvci0+dmFsdWUuYWRkKHBlbmRpbmdSZWdpc3RyYXRp
b24uaXBBZGRyZXNzLCByZXN1bHQudmFsdWUoKSk7CisgICAgICAgIGl0ZXJhdG9yLT52YWx1ZS5h
ZGQocGVuZGluZ1JlZ2lzdHJhdGlvbi5pcEFkZHJlc3MsIG5hbWUpOwogICAgIH0KIAotICAgIHBl
bmRpbmdSZWdpc3RyYXRpb24uY2FsbGJhY2soV1RGTW92ZShyZXN1bHQpKTsKKyAgICBwZW5kaW5n
UmVnaXN0cmF0aW9uLmNhbGxiYWNrKG5hbWUsIGVycm9yKTsKIH0KIAogdm9pZCBXZWJNRE5TUmVn
aXN0ZXI6OnVucmVnaXN0ZXJNRE5TTmFtZXMoRG9jdW1lbnRJZGVudGlmaWVyIGlkZW50aWZpZXIp
CkBAIC02Myw3ICs2Myw3IEBAIHZvaWQgV2ViTUROU1JlZ2lzdGVyOjp1bnJlZ2lzdGVyTUROU05h
bWVzKERvY3VtZW50SWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIGNvbm5lY3Rpb24uc2VuZChN
ZXNzYWdlczo6TmV0d29ya01ETlNSZWdpc3Rlcjo6VW5yZWdpc3Rlck1ETlNOYW1lcyB7IGlkZW50
aWZpZXIgfSwgMCk7CiB9CiAKLXZvaWQgV2ViTUROU1JlZ2lzdGVyOjpyZWdpc3Rlck1ETlNOYW1l
KERvY3VtZW50SWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGlwQWRkcmVzcywg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChMaWJXZWJSVENQcm92aWRlcjo6TUROU05hbWVPckVycm9y
JiYpPiYmIGNhbGxiYWNrKQordm9pZCBXZWJNRE5TUmVnaXN0ZXI6OnJlZ2lzdGVyTUROU05hbWUo
RG9jdW1lbnRJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgaXBBZGRyZXNzLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYsIHN0ZDo6b3B0aW9uYWw8TUROU1Jl
Z2lzdGVyRXJyb3I+KT4mJiBjYWxsYmFjaykKIHsKICAgICBhdXRvJiBtYXAgPSBtX3JlZ2lzdGVy
aW5nRG9jdW1lbnRzLmVuc3VyZShpZGVudGlmaWVyLCBbXSB7CiAgICAgICAgIHJldHVybiBIYXNo
TWFwPFN0cmluZywgU3RyaW5nPiB7IH07CkBAIC03MSwxNiArNzEsMTcgQEAgdm9pZCBXZWJNRE5T
UmVnaXN0ZXI6OnJlZ2lzdGVyTUROU05hbWUoRG9jdW1lbnRJZGVudGlmaWVyIGlkZW50aWZpZXIs
IGNvbnN0IFN0cmkKIAogICAgIGF1dG8gaXRlcmF0b3IgPSBtYXAuZmluZChpcEFkZHJlc3MpOwog
ICAgIGlmIChpdGVyYXRvciAhPSBtYXAuZW5kKCkpIHsKLSAgICAgICAgY2FsbGJhY2soaXRlcmF0
b3ItPnZhbHVlKTsKKyAgICAgICAgY2FsbGJhY2soaXRlcmF0b3ItPnZhbHVlLCB7IH0pOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCiAgICAgYXV0byByZXF1ZXN0SWRlbnRpZmllciA9IE1ETlNS
ZWdpc3RlcklkZW50aWZpZXI6OmdlbmVyYXRlKCk7CiAgICAgbV9wZW5kaW5nUmVnaXN0cmF0aW9u
cy5hZGQocmVxdWVzdElkZW50aWZpZXIsIFBlbmRpbmdSZWdpc3RyYXRpb24geyBXVEZNb3ZlKGNh
bGxiYWNrKSwgaWRlbnRpZmllciwgaXBBZGRyZXNzIH0pOwogCisgICAgLy8gRklYTUU6IFVzZSBh
c3luYyByZXBseS4KICAgICBhdXRvJiBjb25uZWN0aW9uID0gV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpOwogICAgIGlm
ICghY29ubmVjdGlvbi5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrTUROU1JlZ2lzdGVyOjpSZWdpc3Rl
ck1ETlNOYW1lIHsgcmVxdWVzdElkZW50aWZpZXIsIGlkZW50aWZpZXIsIGlwQWRkcmVzcyB9LCAw
KSkKLSAgICAgICAgZmluaXNoZWRSZWdpc3RlcmluZ01ETlNOYW1lKHJlcXVlc3RJZGVudGlmaWVy
LCBtYWtlVW5leHBlY3RlZChNRE5TUmVnaXN0ZXJFcnJvcjo6SW50ZXJuYWwpKTsKKyAgICAgICAg
ZmluaXNoZWRSZWdpc3RlcmluZ01ETlNOYW1lKHJlcXVlc3RJZGVudGlmaWVyLCB7IH0sIE1ETlNS
ZWdpc3RlckVycm9yOjpJbnRlcm5hbCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1dlYk1ETlNS
ZWdpc3Rlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1dlYk1E
TlNSZWdpc3Rlci5oCmluZGV4IDBjMGY2MTMzYWY0NjhjOWViYjhjNjdhMmFlNGU4YzlhNzMzZWU2
YWQuLjJjMGZmMGU0NjY1MTFmOTc4ZmI4MDkyNzIwYWYwNzNkYmY1MzhmYmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJNRE5TUmVnaXN0ZXIu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvV2ViTUROU1Jl
Z2lzdGVyLmgKQEAgLTQ2LDE1ICs0NiwxNSBAQCBwdWJsaWM6CiAgICAgV2ViTUROU1JlZ2lzdGVy
KCkgPSBkZWZhdWx0OwogCiAgICAgdm9pZCB1bnJlZ2lzdGVyTUROU05hbWVzKFdlYkNvcmU6OkRv
Y3VtZW50SWRlbnRpZmllcik7Ci0gICAgdm9pZCByZWdpc3Rlck1ETlNOYW1lKFdlYkNvcmU6OkRv
Y3VtZW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBpcEFkZHJlc3MsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoV2ViQ29yZTo6TGliV2ViUlRDUHJvdmlkZXI6Ok1ETlNOYW1lT3JFcnJvciYmKT4m
Jik7CisgICAgdm9pZCByZWdpc3Rlck1ETlNOYW1lKFdlYkNvcmU6OkRvY3VtZW50SWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiBpcEFkZHJlc3MsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
U3RyaW5nJiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpNRE5TUmVnaXN0ZXJFcnJvcj4pPiYmKTsK
IAogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNv
ZGVyJik7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBmaW5pc2hlZFJlZ2lzdGVyaW5nTUROU05hbWUo
TUROU1JlZ2lzdGVySWRlbnRpZmllciwgV2ViQ29yZTo6TGliV2ViUlRDUHJvdmlkZXI6Ok1ETlNO
YW1lT3JFcnJvciYmKTsKKyAgICB2b2lkIGZpbmlzaGVkUmVnaXN0ZXJpbmdNRE5TTmFtZShNRE5T
UmVnaXN0ZXJJZGVudGlmaWVyLCBTdHJpbmcmJiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpNRE5T
UmVnaXN0ZXJFcnJvcj4pOwogCiAgICAgc3RydWN0IFBlbmRpbmdSZWdpc3RyYXRpb24gewotICAg
ICAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OkxpYldlYlJUQ1Byb3ZpZGVyOjpN
RE5TTmFtZU9yRXJyb3ImJik+IGNhbGxiYWNrOworICAgICAgICBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IFN0cmluZyYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6TUROU1JlZ2lzdGVyRXJy
b3I+KT4gY2FsbGJhY2s7CiAgICAgICAgIFdlYkNvcmU6OkRvY3VtZW50SWRlbnRpZmllciBkb2N1
bWVudElkZW50aWZpZXI7CiAgICAgICAgIFN0cmluZyBpcEFkZHJlc3M7CiAgICAgfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJNRE5TUmVn
aXN0ZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJy
dGMvV2ViTUROU1JlZ2lzdGVyLm1lc3NhZ2VzLmluCmluZGV4IGFiMTJhMWUwMTkyNmQ2YWZjYjRj
MjQ3OGVkNTNmNWMzNjJhODhiOWIuLmYxZWE1YzczMDZkMmEwYzZkZTlmMWI4MTIwNzYzZTlmZDkz
MWRhNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0
Yy9XZWJNRE5TUmVnaXN0ZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvd2VicnRjL1dlYk1ETlNSZWdpc3Rlci5tZXNzYWdlcy5pbgpAQCAtMSw0ICsx
LDQgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyMgQ29weXJpZ2h0IChDKSAyMDE4LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMyw3ICsyMyw3IEBACiAjaWYg
RU5BQkxFKFdFQl9SVEMpCiAKIG1lc3NhZ2VzIC0+IFdlYk1ETlNSZWdpc3RlciBOb3RSZWZDb3Vu
dGVkIHsKLSAgICB2b2lkIEZpbmlzaGVkUmVnaXN0ZXJpbmdNRE5TTmFtZShXZWJLaXQ6Ok1ETlNS
ZWdpc3RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViQ29yZTo6TGliV2ViUlRDUHJvdmlkZXI6
Ok1ETlNOYW1lT3JFcnJvciByZXN1bHQpCisgICAgdm9pZCBGaW5pc2hlZFJlZ2lzdGVyaW5nTURO
U05hbWUoV2ViS2l0OjpNRE5TUmVnaXN0ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFN0cmluZyBt
ZG5zTmFtZSwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpNRE5TUmVnaXN0ZXJFcnJvcj4gZXJyb3Ip
CiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCX1JUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJSVENNb25pdG9yLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJSVENNb25pdG9yLmNwcAppbmRleCAw
ZjlkYWQyZDFkMjlkMGIzMDc5ZDM4NzFiN2UxNDU0MTUyOTA0OTM2Li5kMGNiOThiZTg4MGJiNjEz
ZmRhMjMxNTAyZTY3MDJjMDRhZjIwMjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay93ZWJydGMvV2ViUlRDTW9uaXRvci5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1dlYlJUQ01vbml0b3IuY3BwCkBAIC0zMyw4ICsz
Myw2IEBACiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAi
TmV0d29ya1JUQ01vbml0b3JNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKLSNp
bmNsdWRlIDxXZWJDb3JlL0xpYldlYlJUQ01hY3Jvcy5oPgotI2luY2x1ZGUgPHdlYnJ0Yy9ydGNf
YmFzZS9uZXRfaGVscGVycy5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAKIG5hbWVz
cGFjZSBXZWJLaXQgewpAQCAtNTMsNjcgKzUxLDQzIEBAIHZvaWQgV2ViUlRDTW9uaXRvcjo6c2V0
RW51bWVyYXRpbmdBbGxOZXR3b3JrSW50ZXJmYWNlc0VuYWJsZWQoYm9vbCBlbmFibGVkKQogICAg
IG1fZW5hYmxlRW51bWVyYXRpbmdBbGxOZXR3b3JrSW50ZXJmYWNlcyA9IGVuYWJsZWQ7CiB9CiAK
LXZvaWQgV2ViUlRDTW9uaXRvcjo6U3RhcnRVcGRhdGluZygpCit2b2lkIFdlYlJUQ01vbml0b3I6
OnN0YXJ0VXBkYXRpbmcoKQogewotICAgIFdFQlJUQ19SRUxFQVNFX0xPRygiU3RhcnRVcGRhdGlu
ZyIpOwotICAgIGlmIChtX3JlY2VpdmVkTmV0d29ya0xpc3QpIHsKLSAgICAgICAgV2ViQ29yZTo6
TGliV2ViUlRDUHJvdmlkZXI6OmNhbGxPbldlYlJUQ05ldHdvcmtUaHJlYWQoW3RoaXNdIHsKLSAg
ICAgICAgICAgIFNpZ25hbE5ldHdvcmtzQ2hhbmdlZCgpOwotICAgICAgICB9KTsKLSAgICB9Ci0K
LSAgICBzZW5kT25NYWluVGhyZWFkKFt0aGlzXShhdXRvJiBjb25uZWN0aW9uKSB7Ci0gICAgICAg
IFdFQlJUQ19SRUxFQVNFX0xPRygiU3RhcnRVcGRhdGluZyAtIEFza2luZyBuZXR3b3JrIHByb2Nl
c3MgdG8gc3RhcnQgdXBkYXRpbmciKTsKLSAgICAgICAgY29ubmVjdGlvbi5zZW5kKE1lc3NhZ2Vz
OjpOZXR3b3JrUlRDTW9uaXRvcjo6U3RhcnRVcGRhdGluZ0lmTmVlZGVkKG1fZW5hYmxlRW51bWVy
YXRpbmdBbGxOZXR3b3JrSW50ZXJmYWNlcyksIDApOwotICAgIH0pOworICAgIFdFQlJUQ19SRUxF
QVNFX0xPRygiU3RhcnRVcGRhdGluZyAtIEFza2luZyBuZXR3b3JrIHByb2Nlc3MgdG8gc3RhcnQg
dXBkYXRpbmciKTsKKworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUlRD
TW9uaXRvcjo6U3RhcnRVcGRhdGluZ0lmTmVlZGVkKG1fZW5hYmxlRW51bWVyYXRpbmdBbGxOZXR3
b3JrSW50ZXJmYWNlcyksIDApOwogICAgICsrbV9jbGllbnRDb3VudDsKIH0KIAotdm9pZCBXZWJS
VENNb25pdG9yOjpTdG9wVXBkYXRpbmcoKQordm9pZCBXZWJSVENNb25pdG9yOjpzdG9wVXBkYXRp
bmcoKQogewogICAgIFdFQlJUQ19SRUxFQVNFX0xPRygiU3RvcFVwZGF0aW5nIik7CisKICAgICBB
U1NFUlQobV9jbGllbnRDb3VudCk7CiAgICAgaWYgKC0tbV9jbGllbnRDb3VudCkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgc2VuZE9uTWFpblRocmVhZChbdGhpc10oYXV0byYgY29ubmVjdGlvbikg
ewotICAgICAgICBXRUJSVENfUkVMRUFTRV9MT0coIlN0b3BVcGRhdGluZyAtIEFza2luZyBuZXR3
b3JrIHByb2Nlc3MgdG8gc3RvcCB1cGRhdGluZyIpOwotICAgICAgICBjb25uZWN0aW9uLnNlbmQo
TWVzc2FnZXM6Ok5ldHdvcmtSVENNb25pdG9yOjpTdG9wVXBkYXRpbmcoKSwgMCk7Ci0gICAgfSk7
CisgICAgV0VCUlRDX1JFTEVBU0VfTE9HKCJTdG9wVXBkYXRpbmcgLSBBc2tpbmcgbmV0d29yayBw
cm9jZXNzIHRvIHN0b3AgdXBkYXRpbmciKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5l
bnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdl
czo6TmV0d29ya1JUQ01vbml0b3I6OlN0b3BVcGRhdGluZygpLCAwKTsKIH0KIAotdm9pZCBXZWJS
VENNb25pdG9yOjpuZXR3b3Jrc0NoYW5nZWQoY29uc3QgVmVjdG9yPFJUQ05ldHdvcms+JiBuZXR3
b3JrcywgY29uc3QgUlRDTmV0d29yazo6SVBBZGRyZXNzJiBpcHY0LCBjb25zdCBSVENOZXR3b3Jr
OjpJUEFkZHJlc3MmIGlwdjYpCit2b2lkIFdlYlJUQ01vbml0b3I6Om5ldHdvcmtzQ2hhbmdlZChW
ZWN0b3I8UlRDTmV0d29yaz4mJiBuZXR3b3JrTGlzdCwgUlRDTmV0d29yazo6SVBBZGRyZXNzJiYg
aXB2NCwgUlRDTmV0d29yazo6SVBBZGRyZXNzJiYgaXB2NikKIHsKICAgICBXRUJSVENfUkVMRUFT
RV9MT0coIm5ldHdvcmtzQ2hhbmdlZCIpOwotICAgIC8vIE5vIG5lZWQgdG8gcHJvdGVjdCAndGhp
cycgYXMgaXQgaGFzIHRoZSBsaWZldGltZSBvZiBMaWJXZWJSVEMgd2hpY2ggaGFzIHRoZSBsaWZl
dGltZSBvZiB0aGUgd2ViIHByb2Nlc3MuCi0gICAgV2ViQ29yZTo6TGliV2ViUlRDUHJvdmlkZXI6
OmNhbGxPbldlYlJUQ05ldHdvcmtUaHJlYWQoW3RoaXMsIG5ldHdvcmtzLCBpcHY0LCBpcHY2XSB7
Ci0gICAgICAgIFdFQlJUQ19SRUxFQVNFX0xPRygibmV0d29ya3NDaGFuZ2VkIC0gU2lnbmFsaW5n
Iik7Ci0gICAgICAgIHN0ZDo6dmVjdG9yPHJ0Yzo6TmV0d29yayo+IG5ldHdvcmtMaXN0KG5ldHdv
cmtzLnNpemUoKSk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBuZXR3
b3Jrcy5zaXplKCk7ICsraW5kZXgpCi0gICAgICAgICAgICBuZXR3b3JrTGlzdFtpbmRleF0gPSBu
ZXcgcnRjOjpOZXR3b3JrKG5ldHdvcmtzW2luZGV4XS52YWx1ZSgpKTsKLQotICAgICAgICBib29s
IGZvcmNlU2lnbmFsaW5nID0gIW1fcmVjZWl2ZWROZXR3b3JrTGlzdDsKLSAgICAgICAgbV9yZWNl
aXZlZE5ldHdvcmtMaXN0ID0gdHJ1ZTsKLQotICAgICAgICBib29sIGhhc0NoYW5nZWQ7Ci0gICAg
ICAgIHNldF9kZWZhdWx0X2xvY2FsX2FkZHJlc3NlcyhpcHY0LnZhbHVlLCBpcHY2LnZhbHVlKTsK
LSAgICAgICAgTWVyZ2VOZXR3b3JrTGlzdChuZXR3b3JrTGlzdCwgJmhhc0NoYW5nZWQpOwotICAg
ICAgICBpZiAoaGFzQ2hhbmdlZCB8fCBmb3JjZVNpZ25hbGluZykKLSAgICAgICAgICAgIFNpZ25h
bE5ldHdvcmtzQ2hhbmdlZCgpOwogCi0gICAgfSk7CisgICAgbV9kaWRSZWNlaXZlTmV0d29ya0xp
c3QgPSB0cnVlOworICAgIG1fbmV0d29ya0xpc3QgPSBXVEZNb3ZlKG5ldHdvcmtMaXN0KTsKKyAg
ICBtX2lwdjQgPSBXVEZNb3ZlKGlwdjQpOworICAgIG1faXB2NiA9IFdURk1vdmUoaXB2Nik7CisK
KyAgICBmb3IgKGF1dG8mIG9ic2VydmVyIDogbV9vYnNlcnZlcnMpCisgICAgICAgIG9ic2VydmVy
Lm5ldHdvcmtzQ2hhbmdlZChtX25ldHdvcmtMaXN0LCBtX2lwdjQsIG1faXB2Nik7CiB9CiAKIHZv
aWQgV2ViUlRDTW9uaXRvcjo6bmV0d29ya1Byb2Nlc3NDcmFzaGVkKCkKIHsKLSAgICBtX3JlY2Vp
dmVkTmV0d29ya0xpc3QgPSBmYWxzZTsKLSAgICBpZiAoIVdlYkNvcmU6OkxpYldlYlJUQ1Byb3Zp
ZGVyOjpoYXNXZWJSVENUaHJlYWRzKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIEluIGNh
c2Ugd2UgaGF2ZSBjbGllbnRzIHdhaXRpbmcgZm9yIG5ldHdvcmtzQ2hhbmdlZCwgd2UgY2FsbCBT
aWduYWxOZXR3b3Jrc0NoYW5nZWQgdG8gbWFrZSBzdXJlIHRoZXkgZG8gbm90IHdhaXQgZm9yIG5v
dGhpbmcuICAgIAotICAgIFdlYkNvcmU6OkxpYldlYlJUQ1Byb3ZpZGVyOjpjYWxsT25XZWJSVENO
ZXR3b3JrVGhyZWFkKFt0aGlzXSB7Ci0gICAgICAgIFNpZ25hbE5ldHdvcmtzQ2hhbmdlZCgpOwot
ICAgIH0pOworICAgIGZvciAoYXV0byYgb2JzZXJ2ZXIgOiBtX29ic2VydmVycykKKyAgICAgICAg
b2JzZXJ2ZXIubmV0d29ya1Byb2Nlc3NDcmFzaGVkKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRj
L1dlYlJUQ01vbml0b3IuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0
Yy9XZWJSVENNb25pdG9yLmgKaW5kZXggZjZiOTczOWZhZGRjMzgyY2Q0MjJlNWJhYThlYTI4NTZl
NWY0ZmIwZi4uMDY4NTkwZTUzMjY0MWExZmRhMzU3YWFjMTJhZDIzMjRiMjA0NDI0NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1dlYlJUQ01vbml0
b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvV2ViUlRD
TW9uaXRvci5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiUlRDTmV0d29yay5oIgogI2lu
Y2x1ZGUgPFdlYkNvcmUvTGliV2ViUlRDUHJvdmlkZXIuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrSGFzaFNldC5oPgogCiBuYW1lc3BhY2UgSVBDIHsKIGNs
YXNzIENvbm5lY3Rpb247CkBAIC00MCwyNiArNDEsNDIgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAK
IHN0cnVjdCBOZXR3b3Jrc0NoYW5nZWREYXRhOwogCi1jbGFzcyBXZWJSVENNb25pdG9yIGZpbmFs
IDogcHVibGljIHJ0Yzo6TmV0d29ya01hbmFnZXJCYXNlIHsKK2NsYXNzIFdlYlJUQ01vbml0b3Ig
ewogcHVibGljOgogICAgIFdlYlJUQ01vbml0b3IoKSA9IGRlZmF1bHQ7CiAKKyAgICBjbGFzcyBP
YnNlcnZlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxPYnNlcnZlcj4geworICAgIHB1YmxpYzoK
KyAgICAgICAgdmlydHVhbCB+T2JzZXJ2ZXIoKSA9IGRlZmF1bHQ7CisgICAgICAgIHZpcnR1YWwg
dm9pZCBuZXR3b3Jrc0NoYW5nZWQoY29uc3QgVmVjdG9yPFJUQ05ldHdvcms+JiwgY29uc3QgUlRD
TmV0d29yazo6SVBBZGRyZXNzJiwgY29uc3QgUlRDTmV0d29yazo6SVBBZGRyZXNzJikgPSAwOwor
ICAgICAgICB2aXJ0dWFsIHZvaWQgbmV0d29ya1Byb2Nlc3NDcmFzaGVkKCkgPSAwOworICAgIH07
CisgICAgdm9pZCBhZGRPYnNlcnZlcihPYnNlcnZlciYgb2JzZXJ2ZXIpIHsgbV9vYnNlcnZlcnMu
YWRkKG9ic2VydmVyKTsgfQorICAgIHZvaWQgcmVtb3ZlT2JzZXJ2ZXIoT2JzZXJ2ZXImIG9ic2Vy
dmVyKSB7IG1fb2JzZXJ2ZXJzLnJlbW92ZShvYnNlcnZlcik7IH0KKyAgICB2b2lkIHN0YXJ0VXBk
YXRpbmcoKTsKKyAgICB2b2lkIHN0b3BVcGRhdGluZygpOworCiAgICAgdm9pZCBuZXR3b3JrUHJv
Y2Vzc0NyYXNoZWQoKTsKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYsIElQQzo6RGVjb2RlciYpOwogICAgIHZvaWQgc2V0RW51bWVyYXRpbmdBbGxOZXR3b3JrSW50
ZXJmYWNlc0VuYWJsZWQoYm9vbCk7CiAKLXByaXZhdGU6Ci0gICAgdm9pZCBuZXR3b3Jrc0NoYW5n
ZWQoY29uc3QgVmVjdG9yPFJUQ05ldHdvcms+JiBuZXR3b3JrTGlzdCwgY29uc3QgUlRDTmV0d29y
azo6SVBBZGRyZXNzJiwgY29uc3QgUlRDTmV0d29yazo6SVBBZGRyZXNzJik7CisgICAgYm9vbCBk
aWRSZWNlaXZlTmV0d29ya0xpc3QoKSBjb25zdCB7IHJldHVybiBtX2RpZFJlY2VpdmVOZXR3b3Jr
TGlzdDsgfQorICAgIGNvbnN0IFZlY3RvcjxSVENOZXR3b3JrPiYgbmV0d29ya0xpc3QoKSBjb25z
dCB7IHJldHVybiBtX25ldHdvcmtMaXN0OyB9CisgICAgY29uc3QgUlRDTmV0d29yazo6SVBBZGRy
ZXNzJiBpcHY0KCkgY29uc3QgeyByZXR1cm4gbV9pcHY0OyB9CisgICAgY29uc3QgUlRDTmV0d29y
azo6SVBBZGRyZXNzJiBpcHY2KCkgY29uc3QgeyByZXR1cm4gbV9pcHY2OyB9CiAKLSAgICB2b2lk
IFN0YXJ0VXBkYXRpbmcoKSBmaW5hbDsKLSAgICB2b2lkIFN0b3BVcGRhdGluZygpIGZpbmFsOwot
ICAgIHdlYnJ0Yzo6TWRuc1Jlc3BvbmRlckludGVyZmFjZSogR2V0TWRuc1Jlc3BvbmRlcigpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIG51bGxwdHI7IH0KK3ByaXZhdGU6CisgICAgdm9pZCBuZXR3b3Jr
c0NoYW5nZWQoVmVjdG9yPFJUQ05ldHdvcms+JiYsIFJUQ05ldHdvcms6OklQQWRkcmVzcyYmLCBS
VENOZXR3b3JrOjpJUEFkZHJlc3MmJik7CiAKICAgICBzdGF0aWMgdm9pZCBzZW5kT25NYWluVGhy
ZWFkKEZ1bmN0aW9uPHZvaWQoSVBDOjpDb25uZWN0aW9uJik+JiYpOwogCiAgICAgdW5zaWduZWQg
bV9jbGllbnRDb3VudCB7IDAgfTsKLSAgICBib29sIG1fcmVjZWl2ZWROZXR3b3JrTGlzdCB7IGZh
bHNlIH07CisgICAgV2Vha0hhc2hTZXQ8T2JzZXJ2ZXI+IG1fb2JzZXJ2ZXJzOwogICAgIGJvb2wg
bV9lbmFibGVFbnVtZXJhdGluZ0FsbE5ldHdvcmtJbnRlcmZhY2VzIHsgZmFsc2UgfTsKKyAgICBi
b29sIG1fZGlkUmVjZWl2ZU5ldHdvcmtMaXN0IHsgZmFsc2UgfTsKKyAgICBWZWN0b3I8UlRDTmV0
d29yaz4gbV9uZXR3b3JrTGlzdDsKKyAgICBSVENOZXR3b3JrOjpJUEFkZHJlc3MgbV9pcHY0Owor
ICAgIFJUQ05ldHdvcms6OklQQWRkcmVzcyBtX2lwdjY7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwppbmRleCBjZmZlOTFjODA4ZGU2ZGQ5NDZmNjQ4YWRhZjI2ZDA1MjUxY2UxOWM1Li5i
YzZmNWJjMmYyN2M5NjU0YWQ1MDJmMmQ0ZmNjYjg0NWQ3MjQ4OWQzIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTcgQEAKKzIwMjEtMDktMDMgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisg
ICAgICAgIEltcGxlbWVudCBsaWJ3ZWJydGMgbmV0d29yayBtYW5hZ2VyIEdldE1kbnNSZXNwb25k
ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyOTc1
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0
ZSB0ZXN0cyBnaXZlbiBtRE5TIElDRSBjYW5kaWRhdGVzIGFyZSBub3cgc2hvd2luZyB1cCBpbiBk
ZXNjcmlwdGlvbnMuCisgICAgICAgIE1ha2Ugc3VyZSB0byBjb25zaWRlciBtRE5TIGNhbmRpZGF0
ZXMgYXMgaWYgdGhleSBhcmUgZmlsdGVyZWQuCisKKyAgICAgICAgKiBodHRwL3dwdC93ZWJydGMv
cmVzb3VyY2VzL3RoaXJkLXBhcnR5LWZyYW1lLWljZS1jYW5kaWRhdGUtZmlsdGVyaW5nLWlmcmFt
ZS5odG1sOgorICAgICAgICAqIHdlYnJ0Yy9kYXRhY2hhbm5lbC9maWx0ZXItaWNlLWNhbmRpZGF0
ZS5odG1sOgorICAgICAgICAqIHdlYnJ0Yy9maWx0ZXJpbmctaWNlLWNhbmRpZGF0ZS1hZnRlci1y
ZWxvYWQuaHRtbDoKKwogMjAyMS0wOS0wMyAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5j
b20+CiAKICAgICAgICAgU2lnbmFsaW5nIHN0YXRlIGNoZWNrIHdoZW4gYXBwbHlpbmcgYSBsb2Nh
bCBvciByZW1vdGUgZGVzY3JpcHRpb24gaXMgbm8gbG9uZ2VyIGFsaWduZWQgd2l0aCB0aGUgV2Vi
UlRDIHNwZWMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2VicnRjL3Jlc291
cmNlcy9jaGVjay1pY2UtY2FuZGlkYXRlLWZpbHRlcmluZy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy93ZWJydGMvcmVzb3VyY2VzL2NoZWNrLWljZS1jYW5kaWRhdGUtZmlsdGVyaW5nLmh0
bWwKaW5kZXggZmU2NDExMzM1NmJhMTUyMDdmNDE4ZGNjNDAxODU2ODBjOTFmNDUwOC4uMWZlYmYy
MzY4OWFiNDQyZjk2N2MyMDMwYmQzMDkwNTBiNGU0NjA1NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy93ZWJydGMvcmVzb3VyY2VzL2NoZWNrLWljZS1jYW5kaWRhdGUtZmlsdGVy
aW5nLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJydGMvcmVzb3VyY2VzL2No
ZWNrLWljZS1jYW5kaWRhdGUtZmlsdGVyaW5nLmh0bWwKQEAgLTE0LDcgKzE0LDggQEAgZnVuY3Rp
b24gZ2F0aGVyQ2FuZGlkYXRlcygpCiAgICAgICAgICAgICAgICAgcmVzb2x2ZShjYW5kaWRhdGVz
KTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBj
YW5kaWRhdGVzLnB1c2goZXZlbnQuY2FuZGlkYXRlLmNhbmRpZGF0ZSk7CisgICAgICAgICAgICBp
ZiAoZXZlbnQuY2FuZGlkYXRlLmNhbmRpZGF0ZS5pbmRleE9mKCcubG9jYWwnKSA9PT0gLTEpCisg
ICAgICAgICAgICAgICAgY2FuZGlkYXRlcy5wdXNoKGV2ZW50LmNhbmRpZGF0ZS5jYW5kaWRhdGUp
OwogICAgICAgICB9OwogICAgICAgICBwYy5jcmVhdGVPZmZlcigpLnRoZW4oKG9mZmVyKSA9PiB7
CiAgICAgICAgICAgICBwYy5zZXRMb2NhbERlc2NyaXB0aW9uKG9mZmVyKTsKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnJ0Yy9yZXNvdXJjZXMvdGhpcmQtcGFydHktZnJhbWUt
aWNlLWNhbmRpZGF0ZS1maWx0ZXJpbmctaWZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dw
dC93ZWJydGMvcmVzb3VyY2VzL3RoaXJkLXBhcnR5LWZyYW1lLWljZS1jYW5kaWRhdGUtZmlsdGVy
aW5nLWlmcmFtZS5odG1sCmluZGV4IDJmZTUzMTA3NjQ3MjdiNTdhYWIzYmE2MTUyNTU2NjZmNjQ4
NWE2MTAuLjgwNDQ4Y2EwYTU0NzRhN2Q4NTljNzI4MDg0NjM4YjQzYzEwZGY0MTUgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnJ0Yy9yZXNvdXJjZXMvdGhpcmQtcGFydHktZnJh
bWUtaWNlLWNhbmRpZGF0ZS1maWx0ZXJpbmctaWZyYW1lLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
aHR0cC93cHQvd2VicnRjL3Jlc291cmNlcy90aGlyZC1wYXJ0eS1mcmFtZS1pY2UtY2FuZGlkYXRl
LWZpbHRlcmluZy1pZnJhbWUuaHRtbApAQCAtMTIsNyArMTIsOCBAQCBmdW5jdGlvbiBpc0ZpbHRl
cmluZ0VuYWJsZWQoKQogICAgICAgICAgICAgICAgIHJlc29sdmUoIWNhbmRpZGF0ZXMubGVuZ3Ro
KTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBj
YW5kaWRhdGVzLnB1c2goZXZlbnQuY2FuZGlkYXRlLmNhbmRpZGF0ZSk7CisgICAgICAgICAgICBp
ZiAoZXZlbnQuY2FuZGlkYXRlLmNhbmRpZGF0ZS5pbmRleE9mKCcubG9jYWwnKSA9PT0gLTEpCisg
ICAgICAgICAgICAgICAgY2FuZGlkYXRlcy5wdXNoKGV2ZW50LmNhbmRpZGF0ZS5jYW5kaWRhdGUp
OwogICAgICAgICB9OwogICAgICAgICBwYy5jcmVhdGVPZmZlcigpLnRoZW4oKG9mZmVyKSA9PiB7
CiAgICAgICAgICAgICBwYy5zZXRMb2NhbERlc2NyaXB0aW9uKG9mZmVyKTsKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA5MDFlZGM0ZmY5Zjc4
ZDVmMGNjYzcwN2UyYzA2NDFkY2M2ZDY1YWQ4Li5lODIxNmFhODJiMjA5OWM3MGM3ODE0YzFhMjNi
MWFmZWY5M2ExOTBiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rl
c3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhw
ZWN0YXRpb25zCkBAIC0zOTAsNiArMzkwLDcgQEAgaHR0cC90ZXN0cy93ZWJydGMgWyBTa2lwIF0K
IGh0dHAvd3B0L3dlYnJ0YyBbIFNraXAgXQogd2VicnRjL2RhdGFjaGFubmVsIFsgUGFzcyBdCiB3
ZWJydGMvZGF0YWNoYW5uZWwvbWRucy1pY2UtY2FuZGlkYXRlcy5odG1sIFsgU2tpcCBdCit3ZWJy
dGMvZGF0YWNoYW5uZWwvZmlsdGVyLWljZS1jYW5kaWRhdGUuaHRtbCBbIFNraXAgXQogaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDUGVlckNvbm5lY3Rpb24tc2V0TG9j
YWxEZXNjcmlwdGlvbi1vZmZlci5odG1sIFsgRmFpbHVyZSBdCiAKIGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd2VicnRjLWVuY29kZWQtdHJhbnNmb3JtIFsgU2tpcCBdCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJydGMvZGF0YWNoYW5uZWwvZmlsdGVyLWljZS1jYW5kaWRhdGUu
aHRtbCBiL0xheW91dFRlc3RzL3dlYnJ0Yy9kYXRhY2hhbm5lbC9maWx0ZXItaWNlLWNhbmRpZGF0
ZS5odG1sCmluZGV4IGNjYzQ2OWExNzdlMDA5MmI2NzU3YjViYzRkMTc3NTNhYjFmYjk1M2IuLjc0
ZTc4ZjQ5MzI1ODU5ZmZiNTY4NDE2NTUxZDU0MWY4MDI3NmIzNjcgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3dlYnJ0Yy9kYXRhY2hhbm5lbC9maWx0ZXItaWNlLWNhbmRpZGF0ZS5odG1sCisrKyBi
L0xheW91dFRlc3RzL3dlYnJ0Yy9kYXRhY2hhbm5lbC9maWx0ZXItaWNlLWNhbmRpZGF0ZS5odG1s
CkBAIC04LDY4ICs4LDkxIEBACiAgIDwvaGVhZD4KICAgPGJvZHk+CiAgICAgPHNjcmlwdD4KLXBy
b21pc2VfdGVzdCgodGVzdCkgPT4gewotICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwg
cmVqZWN0KSA9PiB7Ci0gICAgICAgIHNldFRpbWVvdXQoKCkgPT4geyByZWplY3QoIlRlc3QgdGlt
ZWQgb3V0Iik7IH0sIDUwMDApOwotCi0gICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQotICAg
ICAgICAgICAgaW50ZXJuYWxzLnNldElDRUNhbmRpZGF0ZUZpbHRlcmluZyh0cnVlKTsKLQotICAg
ICAgICB2YXIgY291bnRlciA9IDA7Ci0gICAgICAgIHZhciBwYyA9IG5ldyBSVENQZWVyQ29ubmVj
dGlvbigpOwotICAgICAgICBwYy5jcmVhdGVEYXRhQ2hhbm5lbCgnc2VuZERhdGFDaGFubmVsJyk7
Ci0gICAgICAgIHBjLm9uaWNlY2FuZGlkYXRlID0gKGV2ZW50KSA9PiB7Ci0gICAgICAgICAgICBp
ZiAoZXZlbnQuY2FuZGlkYXRlKSB7Ci0gICAgICAgICAgICAgICAgY291bnRlcisrOwotICAgICAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGFzc2VydF9lcXVh
bHMocGMubG9jYWxEZXNjcmlwdGlvbi5zZHAuaW5kZXhPZigiYT1jYW5kaWRhdGUiKSwgLTEpOwot
ICAgICAgICAgICAgYXNzZXJ0X3RydWUocGMubG9jYWxEZXNjcmlwdGlvbi5zZHAuaW5kZXhPZigi
Yz1JTiBJUDQgMC4wLjAuMFxyXG4iKSAhPSAtMSB8fCBwYy5sb2NhbERlc2NyaXB0aW9uLnNkcC5p
bmRleE9mKCJjPUlOIElQNiA6OlxyXG4iKSAhPSAtMSk7Ci0gICAgICAgICAgICBpZiAoY291bnRl
ciA9PT0gMCkgewotICAgICAgICAgICAgICAgIHBjLmNyZWF0ZU9mZmVyKCkudGhlbigob2ZmZXIp
ID0+IHsKLSAgICAgICAgICAgICAgICAgICAgYXNzZXJ0X3RydWUob2ZmZXIuc2RwLmluZGV4T2Yo
ImM9SU4gSVA0IDAuMC4wLjBcclxuIikgIT0gLTEgfHwgcGMubG9jYWxEZXNjcmlwdGlvbi5zZHAu
aW5kZXhPZigiYz1JTiBJUDYgOjpcclxuIikgIT0gLTEpOwotICAgICAgICAgICAgICAgICAgICBh
c3NlcnRfZXF1YWxzKG9mZmVyLnNkcC5pbmRleE9mKCJhPWNhbmRpZGF0ZSIpLCAtMSk7Ci0gICAg
ICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAg
ICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHJlamVjdCgiTm8gY2FuZGlkYXRlIHNob3VsZCBi
ZSBmb3VuZCIpOwotICAgICAgICB9OwotICAgICAgICBwYy5jcmVhdGVPZmZlcigpLnRoZW4oKG9m
ZmVyKSA9PiB7Ci0gICAgICAgICAgICBhc3NlcnRfZXF1YWxzKG9mZmVyLnNkcC5pbmRleE9mKCJh
PWNhbmRpZGF0ZSIpLCAtMSk7Ci0gICAgICAgICAgICBwYy5zZXRMb2NhbERlc2NyaXB0aW9uKG9m
ZmVyKTsKLSAgICAgICAgfSk7CitmdW5jdGlvbiBlbnN1cmVDYW5kaWRhdGVzQXJlTUROUyhzZHAp
Cit7CisgICAgYXNzZXJ0X3RydWUoc2RwLmluZGV4T2YoImM9SU4gSVA0IDAuMC4wLjBcclxuIikg
IT0gLTEgfHwgc2RwLmluZGV4T2YoImM9SU4gSVA2IDo6XHJcbiIpICE9IC0xKTsKKyAgICBjb25z
dCBjYW5kaWRhdGVzID0gc2RwLnNwbGl0KCdcclxuJykuZmlsdGVyKGxpbmUgPT4geworICAgICAg
ICByZXR1cm4gbGluZS5pbmRleE9mKCdhPWNhbmRpZGF0ZScpICE9PSAtMTsKKyAgICB9KTsKKyAg
ICBmb3IgKGNvbnN0IGNhbmRpZGF0ZSBvZiBjYW5kaWRhdGVzKQorICAgICAgICBhc3NlcnRfbm90
X2VxdWFscyhjYW5kaWRhdGUuaW5kZXhPZignLmxvY2FsJyksIC0xKTsKK30KKworZnVuY3Rpb24g
ZW5zdXJlQ2FuZGlkYXRlc0FyZU5vdE1ETlMoc2RwKQoreworICAgIGNvbnN0IGNhbmRpZGF0ZXMg
PSBzZHAuc3BsaXQoJ1xyXG4nKS5maWx0ZXIobGluZSA9PiB7CisgICAgICAgIHJldHVybiBsaW5l
LmluZGV4T2YoJ2E9Y2FuZGlkYXRlJykgIT09IC0xOwogICAgIH0pOworICAgIGZvciAoY29uc3Qg
Y2FuZGlkYXRlIG9mIGNhbmRpZGF0ZXMpCisgICAgICAgIGFzc2VydF9lcXVhbHMoY2FuZGlkYXRl
LmluZGV4T2YoJy5sb2NhbCcpLCAtMSk7Cit9CisKK3Byb21pc2VfdGVzdChhc3luYyAodGVzdCkg
PT4geworICAgIGxldCByZXNvbHZlLCByZWplY3Q7CisgICAgY29uc3QgcHJvbWlzZSA9IG5ldyBQ
cm9taXNlKChyZXMsIHJlaikgPT4geyByZXNvbHZlID0gcmVzOyByZWplY3QgPSByZWo7IH0pOwor
ICAgIHNldFRpbWVvdXQoKCkgPT4geyByZWplY3QoIlRlc3QgdGltZWQgb3V0Iik7IH0sIDUwMDAp
OworCisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgIGludGVybmFscy5zZXRJQ0VD
YW5kaWRhdGVGaWx0ZXJpbmcodHJ1ZSk7CisKKyAgICBsZXQgY291bnRlciA9IDA7CisgICAgbGV0
IHBjID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7CisgICAgcGMuY3JlYXRlRGF0YUNoYW5uZWwo
J3NlbmREYXRhQ2hhbm5lbCcpOworICAgIHBjLm9uaWNlY2FuZGlkYXRlID0gYXN5bmMgKGV2ZW50
KSA9PiB7CisgICAgICAgIGlmIChldmVudC5jYW5kaWRhdGUpIHsKKyAgICAgICAgICAgIGFzc2Vy
dF9ub3RfZXF1YWxzKGV2ZW50LmNhbmRpZGF0ZS5jYW5kaWRhdGUuaW5kZXhPZignLmxvY2FsJyks
IC0xKTsKKyAgICAgICAgICAgIGNvdW50ZXIrKzsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorICAgICAgICBlbnN1cmVDYW5kaWRhdGVzQXJlTUROUyhwYy5sb2NhbERlc2NyaXB0aW9u
LnNkcCk7CisgICAgICAgIGlmIChjb3VudGVyID09PSAwKSB7CisgICAgICAgICAgICBjb25zdCBv
ZmZlciA9IGF3YWl0IHBjLmNyZWF0ZU9mZmVyKCk7CisgICAgICAgICAgICBhd2FpdCBwYy5zZXRM
b2NhbERlc2NyaXB0aW9uKG9mZmVyKTsKKyAgICAgICAgICAgIGVuc3VyZUNhbmRpZGF0ZXNBcmVN
RE5TKHBjLmxvY2FsRGVzY3JpcHRpb24uc2RwKTsKKyAgICAgICAgICAgIHJlc29sdmUoKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICByZXNvbHZlKCk7CisgICAgfTsK
KyAgICBjb25zdCBvZmZlciA9IGF3YWl0IHBjLmNyZWF0ZU9mZmVyKCk7CisgICAgYXNzZXJ0X2Vx
dWFscyhvZmZlci5zZHAuaW5kZXhPZigiYT1jYW5kaWRhdGUiKSwgLTEpOworICAgIGF3YWl0IHBj
LnNldExvY2FsRGVzY3JpcHRpb24ob2ZmZXIpOworCisgICAgcmV0dXJuIHByb21pc2U7CiB9LCAi
R2F0aGVyaW5nIElDRSBjYW5kaWRhdGVzIGZyb20gYSBkYXRhIGNoYW5uZWwgcGVlciBjb25uZWN0
aW9uIHdpdGggSUNFIGNhbmRpZGF0ZSBmaWx0ZXJpbmcgb24iKTsKIAotcHJvbWlzZV90ZXN0KCh0
ZXN0KSA9PiB7Ci0gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsK
LSAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7IHJlamVjdCgiVGVzdCB0aW1lZCBvdXQiKTsgfSwg
NTAwMCk7Citwcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKKyAgICBsZXQgcmVzb2x2ZSwg
cmVqZWN0OworICAgIGNvbnN0IHByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzLCByZWopID0+IHsg
cmVzb2x2ZSA9IHJlczsgcmVqZWN0ID0gcmVqOyB9KTsKKyAgICBzZXRUaW1lb3V0KCgpID0+IHsg
cmVqZWN0KCJUZXN0IHRpbWVkIG91dCIpOyB9LCA1MDAwKTsKIAotCWlmICh3aW5kb3cuaW50ZXJu
YWxzKQotICAgICAgICAgICAgaW50ZXJuYWxzLnNldElDRUNhbmRpZGF0ZUZpbHRlcmluZyhmYWxz
ZSk7CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgIGludGVybmFscy5zZXRJQ0VD
YW5kaWRhdGVGaWx0ZXJpbmcoZmFsc2UpOworIAorICAgIGxldCBjb3VudGVyID0gMDsKKyAgICBs
ZXQgcGMgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsKKyAgICBwYy5jcmVhdGVEYXRhQ2hhbm5l
bCgnc2VuZERhdGFDaGFubmVsJyk7CiAKLSAgICAgICAgdmFyIGNvdW50ZXIgPSAwOwotICAgICAg
ICB2YXIgcGMgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsKLSAgICAgICAgcGMuY3JlYXRlRGF0
YUNoYW5uZWwoJ3NlbmREYXRhQ2hhbm5lbCcpOwotICAgICAgICBwYy5vbmljZWNhbmRpZGF0ZSA9
IChldmVudCkgPT4gewotICAgICAgICAgICAgaWYgKGV2ZW50LmNhbmRpZGF0ZSkgewotICAgICAg
ICAgICAgICAgIGNvdW50ZXIrKzsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBhc3NlcnRfdHJ1ZShwYy5sb2NhbERlc2NyaXB0aW9uLnNkcC5pbmRl
eE9mKCJjPUlOIElQNCAwLjAuMC4wXHJcbiIpID09PSAtMSAmJiBwYy5sb2NhbERlc2NyaXB0aW9u
LnNkcC5pbmRleE9mKCJjPUlOIElQNiA6OlxyXG4iKSA9PT0gLTEpOwotICAgICAgICAgICAgYXNz
ZXJ0X2ZhbHNlKHBjLmxvY2FsRGVzY3JpcHRpb24uc2RwLmluZGV4T2YoImE9Y2FuZGlkYXRlIikg
PT09IC0xKTsKLSAgICAgICAgICAgIGlmIChjb3VudGVyICE9PSAwKSB7Ci0gICAgICAgICAgICAg
ICAgLy8gUmVkb2luZyBhbiBvZmZlciBub3cgdGhhdCB3ZSBoYXZlIHNvbWUgY2FuZGlkYXRlcy4K
LSAgICAgICAgICAgICAgICBwYy5jcmVhdGVPZmZlcigpLnRoZW4oKG9mZmVyKSA9PiB7Ci0gICAg
ICAgICAgICAgICAgICAgIGFzc2VydF90cnVlKG9mZmVyLnNkcC5pbmRleE9mKCJjPUlOIElQNCAw
LjAuMC4wXHJcbiIpID09PSAtMSAmJiBwYy5sb2NhbERlc2NyaXB0aW9uLnNkcC5pbmRleE9mKCJj
PUlOIElQNiA6OlxyXG4iKSA9PT0gLTEpOwotICAgICAgICAgICAgICAgICAgICBhc3NlcnRfZmFs
c2Uob2ZmZXIuc2RwLmluZGV4T2YoImE9Y2FuZGlkYXRlIikgPT09IC0xKTsKLSAgICAgICAgICAg
ICAgICAgICAgcmVzb2x2ZSgpOwotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgfSBl
bHNlCi0gICAgICAgICAgICAgICAgcmVqZWN0KCJIb3N0IGNhbmRpZGF0ZXMgc2hvdWxkIGJlIGZv
dW5kIik7Ci0gICAgICAgIH07Ci0gICAgICAgIHBjLmNyZWF0ZU9mZmVyKCkudGhlbigob2ZmZXIp
ID0+IHsgcGMuc2V0TG9jYWxEZXNjcmlwdGlvbihvZmZlcik7IH0pOwotICAgIH0pOworICAgIHBj
Lm9uaWNlY2FuZGlkYXRlID0gYXN5bmMgKGV2ZW50KSA9PiB7CisgICAgICAgIGlmIChldmVudC5j
YW5kaWRhdGUpIHsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoZXZlbnQuY2FuZGlkYXRlLmNh
bmRpZGF0ZS5pbmRleE9mKCcubG9jYWwnKSwgLTEpOworICAgICAgICAgICAgY291bnRlcisrOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGVuc3VyZUNhbmRpZGF0ZXNB
cmVOb3RNRE5TKHBjLmxvY2FsRGVzY3JpcHRpb24uc2RwKTsKKyAgICAgICAgaWYgKGNvdW50ZXIg
IT09IDApIHsKKyAgICAgICAgICAgIC8vIFJlZG9pbmcgYW4gb2ZmZXIgbm93IHRoYXQgd2UgaGF2
ZSBzb21lIGNhbmRpZGF0ZXMuCisgICAgICAgICAgICBjb25zdCBvZmZlciA9IGF3YWl0IHBjLmNy
ZWF0ZU9mZmVyKCk7CisgICAgICAgICAgICBhd2FpdCBwYy5zZXRMb2NhbERlc2NyaXB0aW9uKG9m
ZmVyKTsKKyAgICAgICAgICAgIGVuc3VyZUNhbmRpZGF0ZXNBcmVOb3RNRE5TKHBjLmxvY2FsRGVz
Y3JpcHRpb24uc2RwKTsKKyAgICAgICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAgfSBlbHNlCisg
ICAgICAgICAgICByZWplY3QoIkhvc3QgY2FuZGlkYXRlcyBzaG91bGQgYmUgZm91bmQiKTsKKyAg
ICB9OworICAgIGNvbnN0IG9mZmVyID0gYXdhaXQgcGMuY3JlYXRlT2ZmZXIoKTsKKyAgICBhd2Fp
dCBwYy5zZXRMb2NhbERlc2NyaXB0aW9uKG9mZmVyKTsKKworICAgIHJldHVybiBwcm9taXNlOwog
fSwgIkdhdGhlcmluZyBJQ0UgY2FuZGlkYXRlcyBmcm9tIGEgZGF0YSBjaGFubmVsIHBlZXIgY29u
bmVjdGlvbiB3aXRoIElDRSBjYW5kaWRhdGUgZmlsdGVyaW5nIG9mZiIpOwogCiBwcm9taXNlX3Rl
c3QoYXN5bmMgKHRlc3QpID0+IHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYnJ0Yy9maWx0
ZXJpbmctaWNlLWNhbmRpZGF0ZS1hZnRlci1yZWxvYWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYnJ0
Yy9maWx0ZXJpbmctaWNlLWNhbmRpZGF0ZS1hZnRlci1yZWxvYWQuaHRtbAppbmRleCBjODc1NWY3
MWYxOWYxYTMwM2MyM2IwYmFhZjE2NjNiZDY4YmQ1YjlkLi41MjVkZTg0ZjlkMzJiYjE0NjJkZTk3
YzJmMjBlNTVmZmNjMTVlNGIyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy93ZWJydGMvZmlsdGVy
aW5nLWljZS1jYW5kaWRhdGUtYWZ0ZXItcmVsb2FkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvd2Vi
cnRjL2ZpbHRlcmluZy1pY2UtY2FuZGlkYXRlLWFmdGVyLXJlbG9hZC5odG1sCkBAIC03LDI0ICs3
LDI4IEBAIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewogICAgIHRlc3RSdW5uZXIud2FpdFVudGls
RG9uZSgpOwogfQogCi1mdW5jdGlvbiBpc0ZpbHRlcmluZ0VuYWJsZWQoKQorYXN5bmMgZnVuY3Rp
b24gaXNGaWx0ZXJpbmdFbmFibGVkKCkKIHsKKyAgICBsZXQgcmVzb2x2ZSwgcmVqZWN0OworICAg
IGNvbnN0IHByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzLCByZWopID0+IHsgcmVzb2x2ZSA9IHJl
czsgcmVqZWN0ID0gcmVqOyB9KTsKKyAgICBzZXRUaW1lb3V0KCgpID0+IHsgcmVqZWN0KCJUZXN0
IHRpbWVkIG91dCIpOyB9LCA1MDAwKTsKKwogICAgIHZhciBwYyA9IG5ldyBSVENQZWVyQ29ubmVj
dGlvbigpOwogICAgIHBjLmNyZWF0ZURhdGFDaGFubmVsKCIiKTsKIAogICAgIHZhciBjYW5kaWRh
dGVzID0gW107Ci0gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsK
LSAgICAgICAgcGMub25pY2VjYW5kaWRhdGUgPSAoZXZlbnQpID0+IHsKLSAgICAgICAgICAgIGlm
IChldmVudC5jYW5kaWRhdGUgPT09IG51bGwpIHsKLSAgICAgICAgICAgICAgICByZXNvbHZlKCFj
YW5kaWRhdGVzLmxlbmd0aCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAg
fQorICAgIHBjLm9uaWNlY2FuZGlkYXRlID0gKGV2ZW50KSA9PiB7CisgICAgICAgIGlmIChldmVu
dC5jYW5kaWRhdGUgPT09IG51bGwpIHsKKyAgICAgICAgICAgIHJlc29sdmUoIWNhbmRpZGF0ZXMu
bGVuZ3RoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAoZXZl
bnQuY2FuZGlkYXRlLmNhbmRpZGF0ZS5pbmRleE9mKCcubG9jYWwnKSA9PT0gLTEpCiAgICAgICAg
ICAgICBjYW5kaWRhdGVzLnB1c2goZXZlbnQuY2FuZGlkYXRlLmNhbmRpZGF0ZSk7Ci0gICAgICAg
IH07Ci0gICAgICAgIHBjLmNyZWF0ZU9mZmVyKCkudGhlbigob2ZmZXIpID0+IHsKLSAgICAgICAg
ICAgIHBjLnNldExvY2FsRGVzY3JpcHRpb24ob2ZmZXIpOwotICAgICAgICB9KTsKLSAgICB9KTsK
KyAgICB9OworCisgICAgY29uc3Qgb2ZmZXIgPSBhd2FpdCBwYy5jcmVhdGVPZmZlcigpOworICAg
IGF3YWl0IHBjLnNldExvY2FsRGVzY3JpcHRpb24ob2ZmZXIpOworICAgIHJldHVybiBwcm9taXNl
OwogfQogCiBmdW5jdGlvbiBlbmRUZXN0KG1lc3NhZ2UpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>437389</attachid>
            <date>2021-09-05 23:40:41 -0700</date>
            <delta_ts>2021-09-06 01:49:11 -0700</delta_ts>
            <desc>Rebasing</desc>
            <filename>bug-229757-20210906084035.patch</filename>
            <type>text/plain</type>
            <size>87865</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxOTc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzBjNGNlMjliMGY5MzY4
MmRlZWMwNTE1NTAzOGI1MjA2ZWE3ZWYzYi4uNzYwYTUyZGYwYWE4OTMwZDQ4ZThiNjk5MWM0MjA2
YmFhODg2YzgyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDIxLTA5LTAzICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgbGlid2Vi
cnRjIG5ldHdvcmsgbWFuYWdlciBHZXRNZG5zUmVzcG9uZGVyCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjk3NTcKKworICAgICAgICBSZXZpZXdlZCBi
eSBFcmljIENhcmxzb24uCisKKyAgICAgICAgVXNlIGxpYndlYnJ0YyBtRE5TIHN1cHBvcnQgaW5z
dGVhZCBvZiBhcHBseWluZyBpdCB3aXRoaW4gUGVlckNvbm5lY3Rpb25CYWNrZW5kLgorICAgICAg
ICBUaGlzIGFsbG93cyBhIGJldHRlciBpbnRlZ3JhdGlvbiBhbmQgaXMgbW9yZSBjb25zaXN0ZW50
IHdpdGggdGhlIEFQSSBhbmQgb3RoZXIgYnJvd3NlcnMuCisgICAgICAgIEZvciBpbnN0YW5jZSBt
RE5TIGNhbmRpZGF0ZXMgbm93IHNob3cgdXAgaW4gbG9jYWwgZGVzY3JpcHRpb25zLgorICAgICAg
ICBXZSBpbnRyb2R1Y2UgUlRDTmV0d29ya01hbmFnZXIgd2hpY2ggaXMgcmVzcG9uc2libGUgZm9y
IFdlYlJUQyBuZXR3b3JrLgorICAgICAgICBSVENOZXR3b3JrTWFuYWdlciBpcyByZXNwb25zaWJs
ZSBvZiBhbGwgcGVlciBjb25uZWN0aW9ucyBvZiBhIGRvY3VtZW50LiBJdCBjYW4gdGh1cyByZXVz
ZSBtRE5TIG5hbWVzIGZyb20gb25lIGNvbm5lY3Rpb24gdG8gYW5vdGhlci4KKyAgICAgICAgV2hl
biBkb2N1bWVudCBnb2VzIGF3YXksIFJUQ05ldHdvcmtNYW5hZ2VyIG5lZWRzIHRvIHVucmVnaXN0
ZXIgYWxsIG1ETlMgbmFtZXMuCisgICAgICAgIFVwZGF0ZSBleGlzdGluZyBTRFAgYW5kIElDRSBj
YW5kaWRhdGUgZmlsdGVyaW5nIGNvZGUgYnkgb25seSBrZWVwaW5nIGRlYnVnIGFzc2VydCB0aGF0
IHdlIGRvIG5vdCBsZWFrIHByaXZhdGUgSVAgYWRkcmVzc2VzIGluIGNhc2UgSUNFIGZpbHRlcmlu
ZyBpcyBvbi4KKyAgICAgICAgV0sxIGRvZXMgbm90IHN1cHBvcnQgbUROUyBjYW5kaWRhdGVzLiBJ
biB0aGF0IGNhc2UsIHdlIGV4cG9zZSBwcml2YXRlIElQIGFkZHJlc3Nlcy4KKworICAgICAgICBD
b3ZlcmVkIGJ5IHVwZGF0ZWQgYW5kIGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogSGVhZGVy
cy5jbWFrZToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFj
a2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmNyZWF0
ZU9mZmVyU3VjY2VlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uQmFja2Vu
ZDo6ZW5hYmxlSUNFQ2FuZGlkYXRlRmlsdGVyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJD
b25uZWN0aW9uQmFja2VuZDo6ZGlzYWJsZUlDRUNhbmRpZGF0ZUZpbHRlcmluZyk6CisgICAgICAg
IChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OnZhbGlkYXRlU0RQIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uQmFja2VuZDo6bmV3SUNFQ2FuZGlkYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uQmFja2VuZDo6ZG9uZUdhdGhlcmluZ0Nh
bmRpZGF0ZXMpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25C
YWNrZW5kLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENDb250cm9sbGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0NvbnRyb2xsZXI6OmFkZCk6CisgICAgICAgIChXZWJD
b3JlOjpSVENDb250cm9sbGVyOjpkaXNhYmxlSUNFQ2FuZGlkYXRlRmlsdGVyaW5nRm9yQWxsT3Jp
Z2lucyk6CisgICAgICAgIChXZWJDb3JlOjpSVENDb250cm9sbGVyOjpkaXNhYmxlSUNFQ2FuZGlk
YXRlRmlsdGVyaW5nRm9yRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6UlRDQ29udHJvbGxl
cjo6ZW5hYmxlSUNFQ2FuZGlkYXRlRmlsdGVyaW5nKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ05ldHdvcmtNYW5hZ2VyLmg6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvbWVk
aWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6c2V0Q29uZmlndXJhdGlvbik6CisgICAg
ICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rp
b25CYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ1BlZXJDb25uZWN0aW9u
QmFja2VuZDo6Y3VycmVudExvY2FsRGVzY3JpcHRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6TGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpwZW5kaW5nTG9jYWxEZXNjcmlwdGlv
biBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tl
bmQ6OmxvY2FsRGVzY3JpcHRpb24gY29uc3QpOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnQ6OndpbGxCZVJlbW92ZWRGcm9tRnJhbWUpOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnQ6OnN1c3BlbmQpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJ0Y05ldHdvcmtNYW5hZ2VyKToKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50OjpzZXRSVENOZXR3b3JrTWFuYWdlcik6CisgICAgICAgICogcGxhdGZv
cm0vbWVkaWFzdHJlYW0vTUROU1JlZ2lzdGVyRXJyb3IuaDogQWRkZWQuCisgICAgICAgICogcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkxpYldlYlJUQ1Byb3ZpZGVyOjpjcmVhdGVQZWVyQ29ubmVjdGlvbik6Cisg
ICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVy
Lmg6CisKIDIwMjEtMDktMDMgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAg
ICAgICAgIFNpZ25hbGluZyBzdGF0ZSBjaGVjayB3aGVuIGFwcGx5aW5nIGEgbG9jYWwgb3IgcmVt
b3RlIGRlc2NyaXB0aW9uIGlzIG5vIGxvbmdlciBhbGlnbmVkIHdpdGggdGhlIFdlYlJUQyBzcGVj
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCmluZGV4IGVkMWM3OWIyNmY5OTcwYjA0MjEwZjgxYzdjMGY4MGE1MjFmNzgzNjcuLmIz
NDVlMDgyZDQxMzQ5NDljOTQzYzU0NDcwODZmNzY0NTNlODE2Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNTYgQEAKKzIwMjEtMDktMDMgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgor
CisgICAgICAgIEltcGxlbWVudCBsaWJ3ZWJydGMgbmV0d29yayBtYW5hZ2VyIEdldE1kbnNSZXNw
b25kZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
OTc1NworCisgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgQ2FybHNvbi4KKworICAgICAgICBJbXBs
ZW1lbnQgUlRDTmV0d29ya01hbmFnZXIgQVBJIGluIExpYldlYlJUQ05ldHdvcmtNYW5hZ2VyIHRv
IGhhbmRsZSBwZXItZG9jdW1lbnQgbUROUyByZWdpc3RyYXRpb25zLgorICAgICAgICBNb3ZlIHBh
cnQgb2YgV2ViUlRDTW9uaXRvciB0byBMaWJXZWJSVENOZXR3b3JrTWFuYWdlci4KKyAgICAgICAg
TGliV2ViUlRDTmV0d29ya01hbmFnZXIgaXMgYSBXZWJSVENNb25pdG9yIG9ic2VydmVyIHRvIGdl
dCB0aGUgbGlzdCBvZiBuZXR3b3Jrcy4KKyAgICAgICAgU2luY2UgbGlid2VicnRjIGlzIG5vdyBk
b2luZyB0aGUgbUROUyByZWdpc3RyYXRpb24sIHdlIG5lZWQgdG8gcmV0dXJuIGEgbUROUyBuYW1l
IGV2ZW4gaWYgcmVnaXN0cmF0aW9uIGZhaWxlZC4KKyAgICAgICAgV2UgdXBkYXRlIFdlYk1ETlNS
ZWdpc3RlciBhbmQgTmV0d29ya01ETlNSZWdpc3RlciBhY2NvcmRpbmdseS4KKworICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrTUROU1JlZ2lzdGVyLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6cmVnaXN0ZXJNRE5TTmFtZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya01ETlNSZWdpc3Rlcjo6cmVnaXN0ZXJNRE5TTmFtZSk6CisgICAgICAgICogU291cmNlcy50
eHQ6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENOZXR3b3JrTWFuYWdlci5jcHA6
IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENOZXR3b3JrTWFuYWdlcjo6Z2V0T3JD
cmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENOZXR3b3JrTWFuYWdlcjo6TGliV2Vi
UlRDTmV0d29ya01hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENOZXR3b3JrTWFu
YWdlcjo6fkxpYldlYlJUQ05ldHdvcmtNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6TGliV2Vi
UlRDTmV0d29ya01hbmFnZXI6OnVucmVnaXN0ZXJNRE5TTmFtZXMpOgorICAgICAgICAoV2ViS2l0
OjpMaWJXZWJSVENOZXR3b3JrTWFuYWdlcjo6U3RhcnRVcGRhdGluZyk6CisgICAgICAgIChXZWJL
aXQ6OkxpYldlYlJUQ05ldHdvcmtNYW5hZ2VyOjpTdG9wVXBkYXRpbmcpOgorICAgICAgICAoV2Vi
S2l0OjpMaWJXZWJSVENOZXR3b3JrTWFuYWdlcjo6R2V0TWRuc1Jlc3BvbmRlciBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ05ldHdvcmtNYW5hZ2VyOjpuZXR3b3Jrc0NoYW5nZWQp
OgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENOZXR3b3JrTWFuYWdlcjo6bmV0d29ya1Byb2Nl
c3NDcmFzaGVkKToKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDTmV0d29ya01hbmFnZXI6OkNy
ZWF0ZU5hbWVGb3JBZGRyZXNzKToKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDTmV0d29ya01h
bmFnZXI6OlJlbW92ZU5hbWVGb3JBZGRyZXNzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdv
cmsvd2VicnRjL0xpYldlYlJUQ05ldHdvcmtNYW5hZ2VyLmg6IEFkZGVkLgorICAgICAgICAqIFdl
YlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuY3BwOgorICAgICAgICAo
V2ViS2l0OjpMaWJXZWJSVENQcm92aWRlcjo6Y3JlYXRlUGVlckNvbm5lY3Rpb24pOgorICAgICAg
ICAoV2ViS2l0OjpMaWJXZWJSVENQcm92aWRlcjo6ZGlzYWJsZU5vbkxvY2FsaG9zdENvbm5lY3Rp
b25zKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1Byb3Zp
ZGVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJNRE5TUmVnaXN0
ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJNRE5TUmVnaXN0ZXI6OmZpbmlzaGVkUmVnaXN0
ZXJpbmdNRE5TTmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYk1ETlNSZWdpc3Rlcjo6cmVnaXN0
ZXJNRE5TTmFtZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJNRE5T
UmVnaXN0ZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1dlYk1ETlNS
ZWdpc3Rlci5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvd2VicnRj
L1dlYlJUQ01vbml0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSVENNb25pdG9yOjpzdGFy
dFVwZGF0aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUlRDTW9uaXRvcjo6c3RvcFVwZGF0aW5n
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUlRDTW9uaXRvcjo6bmV0d29ya3NDaGFuZ2VkKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUlRDTW9uaXRvcjo6bmV0d29ya1Byb2Nlc3NDcmFzaGVkKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1dlYlJUQ01vbml0b3IuaDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUlRDTW9uaXRvcjo6YWRkT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViS2l0
OjpXZWJSVENNb25pdG9yOjpyZW1vdmVPYnNlcnZlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlJU
Q01vbml0b3I6OmRpZFJlY2VpdmVOZXR3b3JrTGlzdCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlJUQ01vbml0b3I6Om5ldHdvcmtMaXN0IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UlRDTW9uaXRvcjo6aXB2NCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlJUQ01vbml0b3I6
OmlwdjYgY29uc3QpOgorCiAyMDIxLTA5LTAyICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhA
YXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIyODA3NjcpOiBDYXJldCBjb2xvciBp
cyBibGFjayBhZnRlciBwYXN0aW5nIHJpY2ggdGV4dCBpbiBNYWlsIGNvbXBvc2UgaW4gZGFyayBt
b2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dl
YkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCA1ODMyNTE5NGIzM2FhMjJiN2EyZTA1ZmM0ODRjY2Iz
ZTQwYTBkNGI0Li4zOGJhNWRjNDk5YmZjODgyMTc3Yzg4ZTYzZGE4YmQwNTU1MTIzZTViIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0hlYWRlcnMuY21ha2UKQEAgLTExNSwxMSArMTE1LDE0IEBAIHNldChXZWJDb3JlX1BSSVZBVEVf
RlJBTUVXT1JLX0hFQURFUlMKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVs
LmgKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5o
CiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZVNvdXJjZS5oCisg
ICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENOZXR3b3JrTWFuYWdlci5oCiAgICAgTW9kdWxlcy9t
ZWRpYXN0cmVhbS9TVFVOTWVzc2FnZVBhcnNpbmcuaAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0v
VXNlck1lZGlhQ2xpZW50LmgKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYUNvbnRy
b2xsZXIuaAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5oCiAKKyAg
ICBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENVdGlscy5oCisKICAgICBN
b2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oCiAKICAgICBNb2R1bGVzL25v
dGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmgKQEAgLTE0MTQsNiArMTQxNyw3IEBAIHNldChXZWJD
b3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKIAogICAgIHBsYXRmb3JtL21lZGlhc3RyZWFt
L0NhcHR1cmVEZXZpY2UuaAogICAgIHBsYXRmb3JtL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2VN
YW5hZ2VyLmgKKyAgICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NRE5TUmVnaXN0ZXJFcnJvci5oCiAg
ICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50cy5oCiAgICAgcGxhdGZvcm0v
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Qcml2YXRlLmgKICAgICBwbGF0Zm9ybS9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbVJlcXVlc3QuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwCmluZGV4IGFiZGE4
NjE0NDRlMWU5MDUwMWIxMzVjNmI0NDA5NGI0NTNkZjk0MzIuLjYwOTlkNjEyOGQ2MzI2OGE1ZmQy
NTk3ZjY3MjA2YjU1MjU3OTQ2YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAKQEAgLTgyLDYg
KzgyLDExIEBAIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6UGVlckNvbm5lY3Rpb25CYWNrZW5kKFJU
Q1BlZXJDb25uZWN0aW9uJiBwZWVyQ29ubmVjdGlvbikKICAgICAsIG1fbG9nSWRlbnRpZmllcihw
ZWVyQ29ubmVjdGlvbi5sb2dJZGVudGlmaWVyKCkpCiAjZW5kaWYKIHsKKyNpZiBVU0UoTElCV0VC
UlRDKQorICAgIGF1dG8qIGRvY3VtZW50ID0gcGVlckNvbm5lY3Rpb24uZG9jdW1lbnQoKTsKKyAg
ICBpZiAoYXV0byogcGFnZSA9IGRvY3VtZW50ID8gZG9jdW1lbnQtPnBhZ2UoKSA6IG51bGxwdHIp
CisgICAgICAgIG1fc2hvdWxkRmlsdGVySUNFQ2FuZGlkYXRlcyA9IHBhZ2UtPmxpYldlYlJUQ1By
b3ZpZGVyKCkuaXNTdXBwb3J0aW5nTUROUygpOworI2VuZGlmCiB9CiAKIFBlZXJDb25uZWN0aW9u
QmFja2VuZDo6flBlZXJDb25uZWN0aW9uQmFja2VuZCgpID0gZGVmYXVsdDsKQEAgLTEwMSw3ICsx
MDYsOCBAQCB2b2lkIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6Y3JlYXRlT2ZmZXJTdWNjZWVkZWQo
U3RyaW5nJiYgc2RwKQogICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgIkNyZWF0ZSBvZmZl
ciBzdWNjZWVkZWQ6XG4iLCBzZHApOwogCiAgICAgQVNTRVJUKG1fb2ZmZXJBbnN3ZXJQcm9taXNl
KTsKLSAgICBtX3BlZXJDb25uZWN0aW9uLmRvVGFzayhbdGhpcywgcHJvbWlzZSA9IFdURk1vdmUo
bV9vZmZlckFuc3dlclByb21pc2UpLCBzZHAgPSBmaWx0ZXJTRFAoV1RGTW92ZShzZHApKV0oKSBt
dXRhYmxlIHsKKyAgICB2YWxpZGF0ZVNEUChzZHApOworICAgIG1fcGVlckNvbm5lY3Rpb24uZG9U
YXNrKFt0aGlzLCBwcm9taXNlID0gV1RGTW92ZShtX29mZmVyQW5zd2VyUHJvbWlzZSksIHNkcCA9
IFdURk1vdmUoc2RwKV0oKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKG1fcGVlckNvbm5lY3Rpb24u
aXNDbG9zZWQoKSkKICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMzI0LDgxICszMzAsMTkgQEAg
dm9pZCBQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmVuYWJsZUlDRUNhbmRpZGF0ZUZpbHRlcmluZygp
CiB2b2lkIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6ZGlzYWJsZUlDRUNhbmRpZGF0ZUZpbHRlcmlu
ZygpCiB7CiAgICAgbV9zaG91bGRGaWx0ZXJJQ0VDYW5kaWRhdGVzID0gZmFsc2U7Ci0gICAgZm9y
IChhdXRvJiBwZW5kaW5nSUNFQ2FuZGlkYXRlIDogbV9wZW5kaW5nSUNFQ2FuZGlkYXRlcykKLSAg
ICAgICAgZmlyZUlDRUNhbmRpZGF0ZUV2ZW50KFJUQ0ljZUNhbmRpZGF0ZTo6Y3JlYXRlKFdURk1v
dmUocGVuZGluZ0lDRUNhbmRpZGF0ZS5zZHApLCBXVEZNb3ZlKHBlbmRpbmdJQ0VDYW5kaWRhdGUu
bWlkKSwgcGVuZGluZ0lDRUNhbmRpZGF0ZS5zZHBNTGluZUluZGV4KSwgV1RGTW92ZShwZW5kaW5n
SUNFQ2FuZGlkYXRlLnNlcnZlclVSTCkpOwotICAgIG1fcGVuZGluZ0lDRUNhbmRpZGF0ZXMuY2xl
YXIoKTsKLX0KLQotc3RhdGljIFN0cmluZyBmaWx0ZXJJQ0VDYW5kaWRhdGUoU3RyaW5nJiYgc2Rw
KQotewotICAgIEFTU0VSVCghc2RwLmNvbnRhaW5zKCIgaG9zdCAiKSk7Ci0KLSAgICBpZiAoIXNk
cC5jb250YWlucygiIHJhZGRyICIpKQotICAgICAgICByZXR1cm4gV1RGTW92ZShzZHApOwotCi0g
ICAgYm9vbCBza2lwTmV4dEl0ZW0gPSBmYWxzZTsKLSAgICBib29sIGlzRmlyc3QgPSB0cnVlOwot
ICAgIFN0cmluZ0J1aWxkZXIgZmlsdGVyZWRTRFA7Ci0gICAgc2RwLnNwbGl0KCcgJywgWyZdKFN0
cmluZ1ZpZXcgaXRlbSkgewotICAgICAgICBpZiAoc2tpcE5leHRJdGVtKSB7Ci0gICAgICAgICAg
ICBza2lwTmV4dEl0ZW0gPSBmYWxzZTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQot
ICAgICAgICBpZiAoaXRlbSA9PSAicmFkZHIiKSB7Ci0gICAgICAgICAgICBmaWx0ZXJlZFNEUC5h
cHBlbmQoIiByYWRkciAwLjAuMC4wIik7Ci0gICAgICAgICAgICBza2lwTmV4dEl0ZW0gPSB0cnVl
OwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGlmIChpdGVtID09ICJy
cG9ydCIpIHsKLSAgICAgICAgICAgIGZpbHRlcmVkU0RQLmFwcGVuZCgiIHJwb3J0IDAiKTsKLSAg
ICAgICAgICAgIHNraXBOZXh0SXRlbSA9IHRydWU7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIH0KLSAgICAgICAgaWYgKGlzRmlyc3QpCi0gICAgICAgICAgICBpc0ZpcnN0ID0gZmFsc2U7
Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGZpbHRlcmVkU0RQLmFwcGVuZCgnICcpOwotICAg
ICAgICBmaWx0ZXJlZFNEUC5hcHBlbmQoaXRlbSk7Ci0gICAgfSk7Ci0gICAgcmV0dXJuIGZpbHRl
cmVkU0RQLnRvU3RyaW5nKCk7CiB9CiAKLVN0cmluZyBQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmZp
bHRlclNEUChTdHJpbmcmJiBzZHApIGNvbnN0Cit2b2lkIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6
dmFsaWRhdGVTRFAoY29uc3QgU3RyaW5nJiBzZHApIGNvbnN0CiB7CisjaWZuZGVmIE5ERUJVRwog
ICAgIGlmICghbV9zaG91bGRGaWx0ZXJJQ0VDYW5kaWRhdGVzKQotICAgICAgICByZXR1cm4gV1RG
TW92ZShzZHApOwotCi0gICAgU3RyaW5nQnVpbGRlciBmaWx0ZXJlZFNEUDsKLSAgICBzZHAuc3Bs
aXQoJ1xuJywgW3RoaXMsICZmaWx0ZXJlZFNEUF0oU3RyaW5nVmlldyBsaW5lKSB7Ci0gICAgICAg
IGlmIChsaW5lLnN0YXJ0c1dpdGgoImM9SU4gSVA0IikpIHsKLSAgICAgICAgICAgIGZpbHRlcmVk
U0RQLmFwcGVuZCgiYz1JTiBJUDQgMC4wLjAuMFxyXG4iKTsKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgfQotICAgICAgICBpZiAobGluZS5zdGFydHNXaXRoKCJjPUlOIElQNiIpKSB7Ci0g
ICAgICAgICAgICBmaWx0ZXJlZFNEUC5hcHBlbmQoImM9SU4gSVA2IDo6XHJcbiIpOwotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGlmICghbGluZS5zdGFydHNXaXRoKCJh
PWNhbmRpZGF0ZSIpKSB7Ci0gICAgICAgICAgICBmaWx0ZXJlZFNEUC5hcHBlbmQobGluZSk7Ci0g
ICAgICAgICAgICBmaWx0ZXJlZFNEUC5hcHBlbmQoJ1xuJyk7Ci0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGxpbmUuZmluZCgiIGhvc3QgIiwgMTEpID09IG5vdEZv
dW5kKSB7Ci0gICAgICAgICAgICBmaWx0ZXJlZFNEUC5hcHBlbmQoZmlsdGVySUNFQ2FuZGlkYXRl
KGxpbmUudG9TdHJpbmcoKSkpOwotICAgICAgICAgICAgZmlsdGVyZWRTRFAuYXBwZW5kKCdcbicp
OwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgYXV0byBpcEFkZHJl
c3MgPSBleHRyYWN0SVBBZGRyZXNzKGxpbmUpOwotICAgICAgICBhdXRvIG1kbnNOYW1lID0gbV9p
cEFkZHJlc3NUb01ETlNOYW1lTWFwLmdldChpcEFkZHJlc3MpOwotICAgICAgICBpZiAobWRuc05h
bWUuaXNFbXB0eSgpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBhdXRvIHNkcCA9IGxp
bmUudG9TdHJpbmcoKTsKLSAgICAgICAgc2RwLnJlcGxhY2UoaXBBZGRyZXNzLCBtZG5zTmFtZSk7
Ci0gICAgICAgIGZpbHRlcmVkU0RQLmFwcGVuZChzZHApOwotICAgICAgICBmaWx0ZXJlZFNEUC5h
cHBlbmQoJ1xuJyk7CisgICAgICAgIHJldHVybjsKKyAgICBzZHAuc3BsaXQoJ1xuJywgW10oYXV0
byBsaW5lKSB7CisgICAgICAgIEFTU0VSVCghbGluZS5zdGFydHNXaXRoKCJhPWNhbmRpZGF0ZSIp
IHx8IGxpbmUuY29udGFpbnMoIi5sb2NhbCIpKTsKICAgICB9KTsKLSAgICByZXR1cm4gZmlsdGVy
ZWRTRFAudG9TdHJpbmcoKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHNkcCk7CisjZW5kaWYK
IH0KIAogdm9pZCBQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6Om5ld0lDRUNhbmRpZGF0ZShTdHJpbmcm
JiBzZHAsIFN0cmluZyYmIG1pZCwgdW5zaWduZWQgc2hvcnQgc2RwTUxpbmVJbmRleCwgU3RyaW5n
JiYgc2VydmVyVVJMKQpAQCAtNDA4LDIyICszNTIsOCBAQCB2b2lkIFBlZXJDb25uZWN0aW9uQmFj
a2VuZDo6bmV3SUNFQ2FuZGlkYXRlKFN0cmluZyYmIHNkcCwgU3RyaW5nJiYgbWlkLCB1bnNpZ25l
ZAogICAgICAgICBBTFdBWVNfTE9HKGxvZ1NpdGVJZGVudGlmaWVyLCAiR2F0aGVyZWQgaWNlIGNh
bmRpZGF0ZToiLCBzZHApOwogICAgICAgICBtX2ZpbmlzaGVkR2F0aGVyaW5nQ2FuZGlkYXRlcyA9
IGZhbHNlOwogCi0gICAgICAgIGlmICghbV9zaG91bGRGaWx0ZXJJQ0VDYW5kaWRhdGVzKSB7Ci0g
ICAgICAgICAgICBmaXJlSUNFQ2FuZGlkYXRlRXZlbnQoUlRDSWNlQ2FuZGlkYXRlOjpjcmVhdGUo
V1RGTW92ZShzZHApLCBXVEZNb3ZlKG1pZCksIHNkcE1MaW5lSW5kZXgpLCBXVEZNb3ZlKHNlcnZl
clVSTCkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGlmIChzZHAu
ZmluZCgiIGhvc3QgIiwgMCkgIT0gbm90Rm91bmQpIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBX
ZSBtaWdodCBuZWVkIHRvIGNsZWFyIGFsbCBwZW5kaW5nIGNhbmRpZGF0ZXMgd2hlbiBzZXR0aW5n
IGFnYWluIGxvY2FsIGRlc2NyaXB0aW9uLgotICAgICAgICAgICAgbV9wZW5kaW5nSUNFQ2FuZGlk
YXRlcy5hcHBlbmQoUGVuZGluZ0lDRUNhbmRpZGF0ZSB7IFN0cmluZyB7IHNkcCB9LCBXVEZNb3Zl
KG1pZCksIHNkcE1MaW5lSW5kZXgsIFdURk1vdmUoc2VydmVyVVJMKSB9KTsKLSAgICAgICAgICAg
IGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYlJUQ01ETlNJ
Q0VDYW5kaWRhdGVzRW5hYmxlZCgpKSB7Ci0gICAgICAgICAgICAgICAgYXV0byBpcEFkZHJlc3Mg
PSBleHRyYWN0SVBBZGRyZXNzKHNkcCk7Ci0gICAgICAgICAgICAgICAgLy8gV2UgcmVzdHJpY3Qg
dG8gSVB2NCBjYW5kaWRhdGVzIGZvciBub3cuCi0gICAgICAgICAgICAgICAgaWYgKGlwQWRkcmVz
cy5jb250YWlucygnLicpKQotICAgICAgICAgICAgICAgICAgICByZWdpc3Rlck1ETlNOYW1lKGlw
QWRkcmVzcyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0K
LSAgICAgICAgZmlyZUlDRUNhbmRpZGF0ZUV2ZW50KFJUQ0ljZUNhbmRpZGF0ZTo6Y3JlYXRlKGZp
bHRlcklDRUNhbmRpZGF0ZShXVEZNb3ZlKHNkcCkpLCBXVEZNb3ZlKG1pZCksIHNkcE1MaW5lSW5k
ZXgpLCBXVEZNb3ZlKHNlcnZlclVSTCkpOworICAgICAgICBBU1NFUlQoIW1fc2hvdWxkRmlsdGVy
SUNFQ2FuZGlkYXRlcyB8fCBzZHAuY29udGFpbnMoIi5sb2NhbCIpKTsKKyAgICAgICAgZmlyZUlD
RUNhbmRpZGF0ZUV2ZW50KFJUQ0ljZUNhbmRpZGF0ZTo6Y3JlYXRlKFdURk1vdmUoc2RwKSwgV1RG
TW92ZShtaWQpLCBzZHBNTGluZUluZGV4KSwgV1RGTW92ZShzZXJ2ZXJVUkwpKTsKICAgICB9KTsK
IH0KIApAQCAtNDMzLDEyICszNjMsOCBAQCB2b2lkIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6ZG9u
ZUdhdGhlcmluZ0NhbmRpZGF0ZXMoKQogICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgIkZp
bmlzaGVkIGljZSBjYW5kaWRhdGUgZ2F0aGVyaW5nIik7CiAgICAgbV9maW5pc2hlZEdhdGhlcmlu
Z0NhbmRpZGF0ZXMgPSB0cnVlOwogCi0gICAgaWYgKG1fd2FpdGluZ0Zvck1ETlNSZWdpc3RyYXRp
b24pCi0gICAgICAgIHJldHVybjsKLQogICAgIG1fcGVlckNvbm5lY3Rpb24uZGlzcGF0Y2hFdmVu
dFdoZW5GZWFzaWJsZShSVENQZWVyQ29ubmVjdGlvbkljZUV2ZW50OjpjcmVhdGUoRXZlbnQ6OkNh
bkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vLCBudWxscHRyLCB7IH0pKTsKICAg
ICBtX3BlZXJDb25uZWN0aW9uLnVwZGF0ZUljZUdhdGhlcmluZ1N0YXRlKFJUQ0ljZUdhdGhlcmlu
Z1N0YXRlOjpDb21wbGV0ZSk7Ci0gICAgbV9wZW5kaW5nSUNFQ2FuZGlkYXRlcy5jbGVhcigpOwog
fQogCiB2b2lkIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6ZW5kT2ZJY2VDYW5kaWRhdGVzKERPTVBy
b21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UpCkBAIC00NDYsNDUgKzM3Miw2IEBAIHZvaWQg
UGVlckNvbm5lY3Rpb25CYWNrZW5kOjplbmRPZkljZUNhbmRpZGF0ZXMoRE9NUHJvbWlzZURlZmVy
cmVkPHZvaWQ+JiYgcHJvbWlzCiAgICAgcHJvbWlzZS5yZXNvbHZlKCk7CiB9CiAKLXZvaWQgUGVl
ckNvbm5lY3Rpb25CYWNrZW5kOjpyZWdpc3Rlck1ETlNOYW1lKGNvbnN0IFN0cmluZyYgaXBBZGRy
ZXNzKQotewotICAgICsrbV93YWl0aW5nRm9yTUROU1JlZ2lzdHJhdGlvbjsKLSAgICBhdXRvJiBk
b2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50PigqbV9wZWVyQ29ubmVjdGlvbi5zY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkpOwotICAgIGF1dG8mIHByb3ZpZGVyID0gZG9jdW1lbnQucGFnZSgpLT5s
aWJXZWJSVENQcm92aWRlcigpOwotICAgIHByb3ZpZGVyLnJlZ2lzdGVyTUROU05hbWUoZG9jdW1l
bnQuaWRlbnRpZmllcigpLCBpcEFkZHJlc3MsIFtwZWVyQ29ubmVjdGlvbiA9IG1ha2VSZWYobV9w
ZWVyQ29ubmVjdGlvbiksIHRoaXMsIGlwQWRkcmVzc10gKExpYldlYlJUQ1Byb3ZpZGVyOjpNRE5T
TmFtZU9yRXJyb3ImJiByZXN1bHQpIHsKLSAgICAgICAgaWYgKHBlZXJDb25uZWN0aW9uLT5pc1N0
b3BwZWQoKSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAtLW1fd2FpdGluZ0Zvck1E
TlNSZWdpc3RyYXRpb247Ci0gICAgICAgIGlmICghcmVzdWx0Lmhhc192YWx1ZSgpKSB7Ci0gICAg
ICAgICAgICBtX3BlZXJDb25uZWN0aW9uLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+YWRkQ29u
c29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgbWFr
ZVN0cmluZygiTUROUyByZWdpc3RyYXRpb24gb2YgYSBob3N0IGNhbmRpZGF0ZSBmYWlsZWQgd2l0
aCBlcnJvciAiLCAodW5zaWduZWQpcmVzdWx0LmVycm9yKCkpKTsKLSAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgfQotCi0gICAgICAgIHRoaXMtPmZpbmlzaGVkUmVnaXN0ZXJpbmdNRE5TTmFt
ZShpcEFkZHJlc3MsIHJlc3VsdC52YWx1ZSgpKTsKLSAgICB9KTsKLX0KLQotdm9pZCBQZWVyQ29u
bmVjdGlvbkJhY2tlbmQ6OmZpbmlzaGVkUmVnaXN0ZXJpbmdNRE5TTmFtZShjb25zdCBTdHJpbmcm
IGlwQWRkcmVzcywgY29uc3QgU3RyaW5nJiBuYW1lKQotewotICAgIG1faXBBZGRyZXNzVG9NRE5T
TmFtZU1hcC5hZGQoaXBBZGRyZXNzLCBuYW1lKTsKLSAgICBWZWN0b3I8UGVuZGluZ0lDRUNhbmRp
ZGF0ZSo+IGNhbmRpZGF0ZXM7Ci0gICAgZm9yIChhdXRvJiBjYW5kaWRhdGUgOiBtX3BlbmRpbmdJ
Q0VDYW5kaWRhdGVzKSB7Ci0gICAgICAgIGlmIChjYW5kaWRhdGUuc2RwLmZpbmQoaXBBZGRyZXNz
KSAhPSBub3RGb3VuZCkgewotICAgICAgICAgICAgYXV0byBzZHAgPSBjYW5kaWRhdGUuc2RwOwot
ICAgICAgICAgICAgc2RwLnJlcGxhY2UoaXBBZGRyZXNzLCBuYW1lKTsKLSAgICAgICAgICAgIGZp
cmVJQ0VDYW5kaWRhdGVFdmVudChSVENJY2VDYW5kaWRhdGU6OmNyZWF0ZShXVEZNb3ZlKHNkcCks
IFdURk1vdmUoY2FuZGlkYXRlLm1pZCksIGNhbmRpZGF0ZS5zZHBNTGluZUluZGV4KSwgV1RGTW92
ZShjYW5kaWRhdGUuc2VydmVyVVJMKSk7Ci0gICAgICAgICAgICBjYW5kaWRhdGVzLmFwcGVuZCgm
Y2FuZGlkYXRlKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBtX3BlbmRpbmdJQ0VDYW5kaWRhdGVz
LnJlbW92ZUFsbE1hdGNoaW5nKFsmXSAoY29uc3QgYXV0byYgY2FuZGlkYXRlKSB7Ci0gICAgICAg
IHJldHVybiBjYW5kaWRhdGVzLmNvbnRhaW5zKCZjYW5kaWRhdGUpOwotICAgIH0pOwotCi0gICAg
aWYgKCFtX3dhaXRpbmdGb3JNRE5TUmVnaXN0cmF0aW9uICYmIG1fZmluaXNoZWRHYXRoZXJpbmdD
YW5kaWRhdGVzKQotICAgICAgICBkb25lR2F0aGVyaW5nQ2FuZGlkYXRlcygpOwotfQotCiB2b2lk
IFBlZXJDb25uZWN0aW9uQmFja2VuZDo6dXBkYXRlU2lnbmFsaW5nU3RhdGUoUlRDU2lnbmFsaW5n
U3RhdGUgbmV3U2lnbmFsaW5nU3RhdGUpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5l
Y3Rpb25CYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJD
b25uZWN0aW9uQmFja2VuZC5oCmluZGV4IGM2ZDE4ODE5ZDI3N2ZmOTA5MjZlZDVhNDUxNzk4Yzc5
MjdkZmQ5OTkuLmFjNjgyOGMwMzk1M2JiYTRkZmMzMGQwZTU3YTk5Mjc2NjBhOTc3YjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25C
YWNrZW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29u
bmVjdGlvbkJhY2tlbmQuaApAQCAtMjA3LDcgKzIwNyw3IEBAIHByb3RlY3RlZDoKICAgICB2b2lk
IGFkZEljZUNhbmRpZGF0ZVN1Y2NlZWRlZCgpOwogICAgIHZvaWQgYWRkSWNlQ2FuZGlkYXRlRmFp
bGVkKEV4Y2VwdGlvbiYmKTsKIAotICAgIFN0cmluZyBmaWx0ZXJTRFAoU3RyaW5nJiYpIGNvbnN0
OworICAgIHZvaWQgdmFsaWRhdGVTRFAoY29uc3QgU3RyaW5nJikgY29uc3Q7CiAKICAgICBzdHJ1
Y3QgUGVuZGluZ1RyYWNrRXZlbnQgewogICAgICAgICBSZWY8UlRDUnRwUmVjZWl2ZXI+IHJlY2Vp
dmVyOwpAQCAtMjI2LDggKzIyNiw2IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGVuZE9m
SWNlQ2FuZGlkYXRlcyhET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJik7CiAgICAgdmlydHVhbCB2
b2lkIGRvU3RvcCgpID0gMDsKIAotICAgIHZvaWQgcmVnaXN0ZXJNRE5TTmFtZShjb25zdCBTdHJp
bmcmIGlwQWRkcmVzcyk7Ci0KIHByb3RlY3RlZDoKICAgICBSVENQZWVyQ29ubmVjdGlvbiYgbV9w
ZWVyQ29ubmVjdGlvbjsKIApAQCAtMjM2LDI0ICsyMzQsMTQgQEAgcHJpdmF0ZToKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8RE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+PiBtX3NldERlc2NyaXB0aW9uUHJv
bWlzZTsKIAogICAgIGJvb2wgbV9zaG91bGRGaWx0ZXJJQ0VDYW5kaWRhdGVzIHsgdHJ1ZSB9Owot
ICAgIHN0cnVjdCBQZW5kaW5nSUNFQ2FuZGlkYXRlIHsKLSAgICAgICAgLy8gRmllbGRzIGRlc2Ny
aWJlZCBpbiBodHRwczovL3d3dy53My5vcmcvVFIvd2VicnRjLyNpZGwtZGVmLXJ0Y2ljZWNhbmRp
ZGF0ZWluaXQuCi0gICAgICAgIFN0cmluZyBzZHA7Ci0gICAgICAgIFN0cmluZyBtaWQ7Ci0gICAg
ICAgIHVuc2lnbmVkIHNob3J0IHNkcE1MaW5lSW5kZXg7Ci0gICAgICAgIFN0cmluZyBzZXJ2ZXJV
Ukw7Ci0gICAgfTsKLSAgICBWZWN0b3I8UGVuZGluZ0lDRUNhbmRpZGF0ZT4gbV9wZW5kaW5nSUNF
Q2FuZGlkYXRlczsKIAogICAgIFZlY3RvcjxQZW5kaW5nVHJhY2tFdmVudD4gbV9wZW5kaW5nVHJh
Y2tFdmVudHM7CiAKLSAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBtX2lwQWRkcmVzc1RvTURO
U05hbWVNYXA7CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgUmVmPGNvbnN0IExvZ2dl
cj4gbV9sb2dnZXI7CiAgICAgY29uc3Qgdm9pZCogbV9sb2dJZGVudGlmaWVyOwogI2VuZGlmCiAg
ICAgYm9vbCBtX2ZpbmlzaGVkR2F0aGVyaW5nQ2FuZGlkYXRlcyB7IGZhbHNlIH07Ci0gICAgdWlu
dDY0X3QgbV93YWl0aW5nRm9yTUROU1JlZ2lzdHJhdGlvbiB7IDAgfTsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ0NvbnRyb2xsZXIuY3BwCmluZGV4IDcwZDQwYzZiZDViMzI2MmYyY2ZlNjE1ZmJjMmI0
NWM2MjljY2Y0M2UuLmNmMzQ1YTQ2MmZjZGIyMTE5ZjdmYmRmNWViZGRmMDE0NWViYTc2YjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDQ29udHJvbGxl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENDb250cm9s
bGVyLmNwcApAQCAtNzMsNiArNzMsMTAgQEAgYm9vbCBSVENDb250cm9sbGVyOjpzaG91bGREaXNh
YmxlSUNFQ2FuZGlkYXRlRmlsdGVyaW5nKERvY3VtZW50JiBkb2N1bWVudCkKIAogdm9pZCBSVEND
b250cm9sbGVyOjphZGQoUlRDUGVlckNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCiB7CisgICAgYXV0
byYgZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oKmNvbm5lY3Rpb24uc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpKTsKKyAgICBpZiAoYXV0byogbmV0d29ya01hbmFnZXIgPSBkb2N1bWVudC5y
dGNOZXR3b3JrTWFuYWdlcigpKQorICAgICAgICBuZXR3b3JrTWFuYWdlci0+c2V0SUNFQ2FuZGlk
YXRlRmlsdGVyaW5nKCFzaG91bGREaXNhYmxlSUNFQ2FuZGlkYXRlRmlsdGVyaW5nKGRvY3VtZW50
KSk7CisKICAgICBtX3BlZXJDb25uZWN0aW9ucy5hcHBlbmQoY29ubmVjdGlvbik7CiAgICAgaWYg
KHNob3VsZERpc2FibGVJQ0VDYW5kaWRhdGVGaWx0ZXJpbmcoZG93bmNhc3Q8RG9jdW1lbnQ+KCpj
b25uZWN0aW9uLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkpKQogICAgICAgICBjb25uZWN0aW9u
LmRpc2FibGVJQ0VDYW5kaWRhdGVGaWx0ZXJpbmcoKTsKQEAgLTg0LDggKzg4LDEzIEBAIHZvaWQg
UlRDQ29udHJvbGxlcjo6ZGlzYWJsZUlDRUNhbmRpZGF0ZUZpbHRlcmluZ0ZvckFsbE9yaWdpbnMo
KQogICAgICAgICByZXR1cm47CiAKICAgICBtX3Nob3VsZEZpbHRlcklDRUNhbmRpZGF0ZXMgPSBm
YWxzZTsKLSAgICBmb3IgKFJUQ1BlZXJDb25uZWN0aW9uJiBjb25uZWN0aW9uIDogbV9wZWVyQ29u
bmVjdGlvbnMpCisgICAgZm9yIChSVENQZWVyQ29ubmVjdGlvbiYgY29ubmVjdGlvbiA6IG1fcGVl
ckNvbm5lY3Rpb25zKSB7CisgICAgICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IGRvd25jYXN0PERv
Y3VtZW50Pihjb25uZWN0aW9uLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkpIHsKKyAgICAgICAg
ICAgIGlmIChhdXRvKiBuZXR3b3JrTWFuYWdlciA9IGRvY3VtZW50LT5ydGNOZXR3b3JrTWFuYWdl
cigpKQorICAgICAgICAgICAgICAgIG5ldHdvcmtNYW5hZ2VyLT5zZXRJQ0VDYW5kaWRhdGVGaWx0
ZXJpbmcoZmFsc2UpOworICAgICAgICB9CiAgICAgICAgIGNvbm5lY3Rpb24uZGlzYWJsZUlDRUNh
bmRpZGF0ZUZpbHRlcmluZygpOworICAgIH0KIH0KIAogdm9pZCBSVENDb250cm9sbGVyOjpkaXNh
YmxlSUNFQ2FuZGlkYXRlRmlsdGVyaW5nRm9yRG9jdW1lbnQoRG9jdW1lbnQmIGRvY3VtZW50KQpA
QCAtOTMsMTEgKzEwMiwxNyBAQCB2b2lkIFJUQ0NvbnRyb2xsZXI6OmRpc2FibGVJQ0VDYW5kaWRh
dGVGaWx0ZXJpbmdGb3JEb2N1bWVudChEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgaWYgKCFMaWJX
ZWJSVENQcm92aWRlcjo6d2ViUlRDQXZhaWxhYmxlKCkpCiAgICAgICAgIHJldHVybjsKIAorICAg
IGlmIChhdXRvKiBuZXR3b3JrTWFuYWdlciA9IGRvY3VtZW50LnJ0Y05ldHdvcmtNYW5hZ2VyKCkp
CisgICAgICAgIG5ldHdvcmtNYW5hZ2VyLT5zZXRJQ0VDYW5kaWRhdGVGaWx0ZXJpbmcoZmFsc2Up
OworCiAgICAgbV9maWx0ZXJpbmdEaXNhYmxlZE9yaWdpbnMuYXBwZW5kKFBlZXJDb25uZWN0aW9u
T3JpZ2luIHsgZG9jdW1lbnQudG9wT3JpZ2luKCksIGRvY3VtZW50LnNlY3VyaXR5T3JpZ2luKCkg
fSk7CiAgICAgZm9yIChSVENQZWVyQ29ubmVjdGlvbiYgY29ubmVjdGlvbiA6IG1fcGVlckNvbm5l
Y3Rpb25zKSB7CiAgICAgICAgIGlmIChhdXRvKiBwZWVyQ29ubmVjdGlvbkRvY3VtZW50ID0gZG93
bmNhc3Q8RG9jdW1lbnQ+KGNvbm5lY3Rpb24uc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSkgewot
ICAgICAgICAgICAgaWYgKG1hdGNoRG9jdW1lbnRPcmlnaW4oKnBlZXJDb25uZWN0aW9uRG9jdW1l
bnQsIGRvY3VtZW50LnRvcE9yaWdpbigpLCBkb2N1bWVudC5zZWN1cml0eU9yaWdpbigpKSkKKyAg
ICAgICAgICAgIGlmIChtYXRjaERvY3VtZW50T3JpZ2luKCpwZWVyQ29ubmVjdGlvbkRvY3VtZW50
LCBkb2N1bWVudC50b3BPcmlnaW4oKSwgZG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4oKSkpIHsKKyAg
ICAgICAgICAgICAgICBpZiAoYXV0byogbmV0d29ya01hbmFnZXIgPSBwZWVyQ29ubmVjdGlvbkRv
Y3VtZW50LT5ydGNOZXR3b3JrTWFuYWdlcigpKQorICAgICAgICAgICAgICAgICAgICBuZXR3b3Jr
TWFuYWdlci0+c2V0SUNFQ2FuZGlkYXRlRmlsdGVyaW5nKGZhbHNlKTsKICAgICAgICAgICAgICAg
ICBjb25uZWN0aW9uLmRpc2FibGVJQ0VDYW5kaWRhdGVGaWx0ZXJpbmcoKTsKKyAgICAgICAgICAg
IH0KICAgICAgICAgfQogICAgIH0KIH0KQEAgLTEwOSw4ICsxMjQsMTMgQEAgdm9pZCBSVENDb250
cm9sbGVyOjplbmFibGVJQ0VDYW5kaWRhdGVGaWx0ZXJpbmcoKQogCiAgICAgbV9maWx0ZXJpbmdE
aXNhYmxlZE9yaWdpbnMuY2xlYXIoKTsKICAgICBtX3Nob3VsZEZpbHRlcklDRUNhbmRpZGF0ZXMg
PSB0cnVlOwotICAgIGZvciAoUlRDUGVlckNvbm5lY3Rpb24mIGNvbm5lY3Rpb24gOiBtX3BlZXJD
b25uZWN0aW9ucykKKyAgICBmb3IgKFJUQ1BlZXJDb25uZWN0aW9uJiBjb25uZWN0aW9uIDogbV9w
ZWVyQ29ubmVjdGlvbnMpIHsKICAgICAgICAgY29ubmVjdGlvbi5lbmFibGVJQ0VDYW5kaWRhdGVG
aWx0ZXJpbmcoKTsKKyAgICAgICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1l
bnQ+KGNvbm5lY3Rpb24uc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSkgeworICAgICAgICAgICAg
aWYgKGF1dG8qIG5ldHdvcmtNYW5hZ2VyID0gZG9jdW1lbnQtPnJ0Y05ldHdvcmtNYW5hZ2VyKCkp
CisgICAgICAgICAgICAgICAgbmV0d29ya01hbmFnZXItPnNldElDRUNhbmRpZGF0ZUZpbHRlcmlu
Zyh0cnVlKTsKKyAgICAgICAgfQorICAgIH0KIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENOZXR3b3Jr
TWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENOZXR3b3Jr
TWFuYWdlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVmMzZmZDQ2MWY4MWFiYmEyYzAyYmI4MWYxZmI1Zjk5Nzgw
MjVmZDAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ05ldHdvcmtNYW5hZ2VyLmgKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICog
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJfUlRDKQorCisjaW5jbHVkZSA8d3RmL1RocmVh
ZFNhZmVSZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUlRDTmV0
d29ya01hbmFnZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8UlRDTmV0d29ya01hbmFn
ZXIsIFdURjo6RGVzdHJ1Y3Rpb25UaHJlYWQ6Ok1haW5SdW5Mb29wPiB7CitwdWJsaWM6CisgICAg
dmlydHVhbCB+UlRDTmV0d29ya01hbmFnZXIoKSA9IGRlZmF1bHQ7CisgICAgdmlydHVhbCB2b2lk
IHNldElDRUNhbmRpZGF0ZUZpbHRlcmluZyhib29sKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVu
cmVnaXN0ZXJNRE5TTmFtZXMoKSA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBFTkFCTEUoV0VCX1JUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDTWVk
aWFFbmRwb2ludC5jcHAKaW5kZXggY2I1YTM4MTk5NDczYmM4OTcxZGVmYWM2NDU0Mzg5NTQwMzBk
NDg3NS4uNWE1NDdhNzA4YWYyODZmNzM1Nzg5ZmY0ZTdiNzIwNTk1ZDI0Y2ZkZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRD
TWVkaWFFbmRwb2ludC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9saWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRwb2ludC5jcHAKQEAgLTkyLDE1ICs5MiwxNSBA
QCBib29sIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OnNldENvbmZpZ3VyYXRpb24oTGliV2ViUlRD
UHJvdmlkZXImIGNsaWVudCwgd2VicnRjOgogICAgIGNvbmZpZ3VyYXRpb24uc2RwX3NlbWFudGlj
cyA9IHdlYnJ0Yzo6U2RwU2VtYW50aWNzOjprVW5pZmllZFBsYW47CiAKICAgICBpZiAoIW1fYmFj
a2VuZCkgeworICAgICAgICBhdXRvJiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50PigqbV9w
ZWVyQ29ubmVjdGlvbkJhY2tlbmQuY29ubmVjdGlvbigpLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSk7CiAgICAgICAgIGlmICghbV9ydGNTb2NrZXRGYWN0b3J5KSB7Ci0gICAgICAgICAgICBhdXRv
JiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50PigqbV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQu
Y29ubmVjdGlvbigpLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgICAgICAgICBSZWdp
c3RyYWJsZURvbWFpbiBkb21haW4geyBkb2N1bWVudC51cmwoKSB9OwogICAgICAgICAgICAgYm9v
bCBpc0ZpcnN0UGFydHkgPSBkb21haW4gPT0gUmVnaXN0cmFibGVEb21haW4oZG9jdW1lbnQuZmly
c3RQYXJ0eUZvckNvb2tpZXMoKSk7CiAgICAgICAgICAgICBtX3J0Y1NvY2tldEZhY3RvcnkgPSBj
bGllbnQuY3JlYXRlU29ja2V0RmFjdG9yeShkb2N1bWVudC51c2VyQWdlbnQoZG9jdW1lbnQudXJs
KCkpLCBpc0ZpcnN0UGFydHksIFdURk1vdmUoZG9tYWluKSk7Ci0gICAgICAgICAgICBpZiAoIW1f
cGVlckNvbm5lY3Rpb25CYWNrZW5kLnNob3VsZEZpbHRlcklDRUNhbmRpZGF0ZXMoKSkKKyAgICAg
ICAgICAgIGlmICghbV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQuc2hvdWxkRmlsdGVySUNFQ2FuZGlk
YXRlcygpICYmIG1fcnRjU29ja2V0RmFjdG9yeSkKICAgICAgICAgICAgICAgICBtX3J0Y1NvY2tl
dEZhY3RvcnktPmRpc2FibGVSZWxheSgpOwogICAgICAgICB9Ci0gICAgICAgIG1fYmFja2VuZCA9
IGNsaWVudC5jcmVhdGVQZWVyQ29ubmVjdGlvbigqdGhpcywgbV9ydGNTb2NrZXRGYWN0b3J5Lmdl
dCgpLCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKTsKKyAgICAgICAgbV9iYWNrZW5kID0gY2xpZW50
LmNyZWF0ZVBlZXJDb25uZWN0aW9uKGRvY3VtZW50LmlkZW50aWZpZXIoKSwgKnRoaXMsIG1fcnRj
U29ja2V0RmFjdG9yeS5nZXQoKSwgV1RGTW92ZShjb25maWd1cmF0aW9uKSk7CiAgICAgICAgIHJl
dHVybiAhIW1fYmFja2VuZDsKICAgICB9CiAgICAgYXV0byBvbGRDb25maWd1cmF0aW9uID0gbV9i
YWNrZW5kLT5HZXRDb25maWd1cmF0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tl
bmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGli
V2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAppbmRleCA3NmFlYjYxZWNmNmYzODY4YWMy
NmM1ZjY2OWU5MGJmNTljMmEzNzgwLi44NzUzMzRmMmE3YjJhOTA2OTQ5MTZmYTU4ODVkZmI2MDcw
MmIwYTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xp
YndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0
aW9uQmFja2VuZC5jcHAKQEAgLTMxNSw3ICszMTUsNyBAQCBSZWZQdHI8UlRDU2Vzc2lvbkRlc2Ny
aXB0aW9uPiBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmN1cnJlbnRMb2NhbERlc2Ny
aQogewogICAgIGF1dG8gZGVzY3JpcHRpb24gPSBtX2VuZHBvaW50LT5jdXJyZW50TG9jYWxEZXNj
cmlwdGlvbigpOwogICAgIGlmIChkZXNjcmlwdGlvbikKLSAgICAgICAgZGVzY3JpcHRpb24tPnNl
dFNkcChmaWx0ZXJTRFAoU3RyaW5nKGRlc2NyaXB0aW9uLT5zZHAoKSkpKTsKKyAgICAgICAgdmFs
aWRhdGVTRFAoZGVzY3JpcHRpb24tPnNkcCgpKTsKICAgICByZXR1cm4gZGVzY3JpcHRpb247CiB9
CiAKQEAgLTMyOCw3ICszMjgsNyBAQCBSZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uPiBMaWJX
ZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OnBlbmRpbmdMb2NhbERlc2NyaQogewogICAgIGF1
dG8gZGVzY3JpcHRpb24gPSBtX2VuZHBvaW50LT5wZW5kaW5nTG9jYWxEZXNjcmlwdGlvbigpOwog
ICAgIGlmIChkZXNjcmlwdGlvbikKLSAgICAgICAgZGVzY3JpcHRpb24tPnNldFNkcChmaWx0ZXJT
RFAoU3RyaW5nKGRlc2NyaXB0aW9uLT5zZHAoKSkpKTsKKyAgICAgICAgdmFsaWRhdGVTRFAoZGVz
Y3JpcHRpb24tPnNkcCgpKTsKICAgICByZXR1cm4gZGVzY3JpcHRpb247CiB9CiAKQEAgLTM0MSw3
ICszNDEsNyBAQCBSZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uPiBMaWJXZWJSVENQZWVyQ29u
bmVjdGlvbkJhY2tlbmQ6OmxvY2FsRGVzY3JpcHRpb24oKQogewogICAgIGF1dG8gZGVzY3JpcHRp
b24gPSBtX2VuZHBvaW50LT5sb2NhbERlc2NyaXB0aW9uKCk7CiAgICAgaWYgKGRlc2NyaXB0aW9u
KQotICAgICAgICBkZXNjcmlwdGlvbi0+c2V0U2RwKGZpbHRlclNEUChTdHJpbmcoZGVzY3JpcHRp
b24tPnNkcCgpKSkpOworICAgICAgICB2YWxpZGF0ZVNEUChkZXNjcmlwdGlvbi0+c2RwKCkpOwog
ICAgIHJldHVybiBkZXNjcmlwdGlvbjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDUzMDMxODZkZGQxZDc4YjQ1MjMyMTJl
ZDIwYTk5YTBiODIxZGY2NzEuLmRmZGY0NDRkN2ZkMmJjNWMzOTc0MmRlOTVkZmRhMzlhNWFhM2Nl
NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTExNzIsNiArMTE3Miw5IEBACiAJCTQxQjg3NzYyMjNERTEwNDUwMDM2MzhCOCAv
KiBSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFCODc3NjAyM0RFMTA0MjAwMzYzOEI4IC8qIFJlYWx0
aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDFCQkE4NjYyNTdFMzczQjAwQUM3RjZEIC8qIFNGcmFtZVV0
aWxzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTIw
OUUyNDI1N0EyRkJCMDAxMjBBQ0EgLyogU0ZyYW1lVXRpbHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MUJGMjA0OTIyQkE3QkU4MDAwNEY4MTIg
LyogUmVhbHRpbWVWaWRlb1NvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDFCRjIwNDAyMkI5NDcxNjAwMDRGODEyIC8qIFJlYWx0aW1lVmlkZW9T
b3VyY2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQk0MUMxNEJDNjI2REU2REU4MDA2ODVCRjUgLyogUlRDTmV0d29ya01hbmFnZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQzE0QkM0MjZERTZERTgw
MDY4NUJGNSAvKiBSVENOZXR3b3JrTWFuYWdlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTQxQzE0QkM3MjZERTg1ODQwMDY4NUJGNSAvKiBMaWJX
ZWJSVENVdGlscy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDFEMUEwNEMyMTNFRERGRjAwNjNGQjZCIC8qIExpYldlYlJUQ1V0aWxzLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDFDMTRCQzkyNkRGNzlE
NzAwNjg1QkY1IC8qIE1ETlNSZWdpc3RlckVycm9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUMxNEJDODI2REY3OUQ2MDA2ODVCRjUgLyogTUROU1Jl
Z2lzdGVyRXJyb3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk0MUMzQjhBMTI2NDlCMUUwMDA0RUQ0REUgLyogQXVkaW9NZWRpYVN0cmVhbVRyYWNr
UmVuZGVyZXJJbnRlcm5hbFVuaXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQxQzNCODlGMjY0OUIxQjcwMDRFRDRERSAvKiBBdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlckludGVybmFsVW5pdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTQxQzNCOEEyMjY0OUIxRTUwMDRFRDRERSAvKiBBdWRpb01l
ZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQxQzNCODlCMjY0OUIxQjYwMDRFRDRERSAvKiBBdWRpb01lZGlh
U3RyZWFtVHJhY2tSZW5kZXJlclVuaXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk0MUM3NjBCMTBFREUwM0QzMDBDMTY1NUYgLyogU2NyaXB0U3Rh
dGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQzc2
MEIwMEVERTAzRDMwMEMxNjU1RiAvKiBTY3JpcHRTdGF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC04MDQ0LDYgKzgwNDcsOCBAQAogCQk0MUJD
RTg3NzI1RjdBNjdBMDA0NkMyRTUgLyogUlRDVHJhbnNmb3JtRXZlbnQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUlRDVHJhbnNmb3JtRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDFCRjIwNDAyMkI5NDcxNjAwMDRGODEyIC8qIFJlYWx0aW1lVmlkZW9T
b3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVhbHRpbWVWaWRlb1NvdXJjZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0MUJGMjA0MjIyQjk0NzE3MDAwNEY4MTIgLyogUmVhbHRpbWVW
aWRlb1NvdXJjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWFsdGltZVZpZGVvU291cmNlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFDMTRCQzQyNkRFNkRFODAwNjg1QkY1
IC8qIFJUQ05ldHdvcmtNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFJUQ05ldHdvcmtNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxQzE0
QkM4MjZERjc5RDYwMDY4NUJGNSAvKiBNRE5TUmVnaXN0ZXJFcnJvci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBNRE5TUmVnaXN0ZXJFcnJvci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0MUMzQjg5QjI2NDlCMUI2MDA0RUQ0REUgLyogQXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXJVbml0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvTWVkaWFTdHJlYW1UcmFj
a1JlbmRlcmVyVW5pdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUMzQjg5QzI2
NDlCMUI2MDA0RUQ0REUgLyogQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29hLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQzNCODlEMjY0OUIxQjYwMDRFRDRERSAvKiBBdWRp
b01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMTcyNTUsNiArMTcyNjAsNyBAQAogCQkJCTMxNkRDQjg5MUU3QTY5OTYwMDFC
NUY4NyAvKiBSVENJY2VUcmFuc3BvcnQuaWRsICovLAogCQkJCTQxNDUxNkUwMjZDQzA0MjEwMEFB
QUJFMCAvKiBSVENJY2VUcmFuc3BvcnRCYWNrZW5kLmggKi8sCiAJCQkJMzE2RENCOEUxRTdBNkM3
OTAwMUI1Rjg3IC8qIFJUQ0ljZVRyYW5zcG9ydFN0YXRlLmlkbCAqLywKKwkJCQk0MUMxNEJDNDI2
REU2REU4MDA2ODVCRjUgLyogUlRDTmV0d29ya01hbmFnZXIuaCAqLywKIAkJCQkwNzM3OTREQzE5
RUUyQzUyMDBFNUEwNDUgLyogUlRDT2ZmZXJBbnN3ZXJPcHRpb25zLmggKi8sCiAJCQkJMzE2RENC
MTIxRTc4QkU0MzAwMUI1Rjg3IC8qIFJUQ09mZmVyQW5zd2VyT3B0aW9ucy5pZGwgKi8sCiAJCQkJ
MzE2RENCMjgxRTc4RjM5NTAwMUI1Rjg3IC8qIFJUQ09mZmVyT3B0aW9ucy5oICovLApAQCAtMTcz
NzYsNiArMTczODIsNyBAQAogCQkJCTA3QjcxMTZCMUQ4OTlFNjMwMDlGMEZGQiAvKiBDYXB0dXJl
RGV2aWNlTWFuYWdlci5jcHAgKi8sCiAJCQkJMDdCNzExNkMxRDg5OUU2MzAwOUYwRkZCIC8qIENh
cHR1cmVEZXZpY2VNYW5hZ2VyLmggKi8sCiAJCQkJNUVCQjg5MzAxQzc3NzdFMTAwQzY1RDQxIC8q
IEljZUNhbmRpZGF0ZS5oICovLAorCQkJCTQxQzE0QkM4MjZERjc5RDYwMDY4NUJGNSAvKiBNRE5T
UmVnaXN0ZXJFcnJvci5oICovLAogCQkJCTFCRTVCRkMxMUQ1MTU3MTUwMDE2NjZEOSAvKiBNZWRp
YUNvbnN0cmFpbnRzLmNwcCAqLywKIAkJCQkwNzIyMUI5OTE3Q0YwQUQ0MDA4NDhFNTEgLyogTWVk
aWFDb25zdHJhaW50cy5oICovLAogCQkJCTQxQjI4QjEzMUY4NTAxQTQwMEZCNTJBQyAvKiBNZWRp
YUVuZHBvaW50Q29uZmlndXJhdGlvbi5jcHAgKi8sCkBAIC0zMzU4NSw2ICszMzU5Miw3IEBACiAJ
CQkJNDE4MUM1Q0QyNTU1ODM2OTAwQUVCMEZGIC8qIExpYldlYlJUQ1J0cFRyYW5zZm9ybWFibGVG
cmFtZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE4MUM1RDEyNTU1ODk1NjAwQUVCMEZGIC8qIExp
YldlYlJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxMEU0NDYx
MjM0MzczRTkwMDAxNzNENCAvKiBMaWJXZWJSVENTb2NrZXRJZGVudGlmaWVyLmggaW4gSGVhZGVy
cyAqLywKKwkJCQk0MUMxNEJDNzI2REU4NTg0MDA2ODVCRjUgLyogTGliV2ViUlRDVXRpbHMuaCBp
biBIZWFkZXJzICovLAogCQkJCTg0NzMwRDkxMTI0OEYwQjMwMEQzQTlDOSAvKiBMaWdodFNvdXJj
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5NjUwRDAwQkYyMjAwNzFCNzgyIC8qIExpbmVh
ckdyYWRpZW50QXR0cmlidXRlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUIzMUM5MUUxMEFFMUI4
RTAwMEM3QjkyIC8qIExpbmVDbGFtcFZhbHVlLmggaW4gSGVhZGVycyAqLywKQEAgLTMzNjQ4LDYg
KzMzNjU2LDcgQEAKIAkJCQk0MzkwNDZFQTEyREEyNUU4MTJBRjgwQUMgLyogTWF0aE9wZXJhdG9y
LmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUQ1REMyQzBGNDIzQTczMDA4RjIwRkQgLyogTWF0cml4
M0RUcmFuc2Zvcm1PcGVyYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5RTkxMUM3MEVGODZE
NDcwMDlEMENBRiAvKiBNYXRyaXhUcmFuc2Zvcm1PcGVyYXRpb24uaCBpbiBIZWFkZXJzICovLAor
CQkJCTQxQzE0QkM5MjZERjc5RDcwMDY4NUJGNSAvKiBNRE5TUmVnaXN0ZXJFcnJvci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNUNCQzhEQUQxQUFBMzAyMjAwRTFDODAzIC8qIE1lZGlhQWNjZXNzaWJp
bGl0eVNvZnRMaW5rLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzFCQ0M2MTExMjRERkNCMDBCRTcw
REQgLyogTWVkaWFDYW5TdGFydExpc3RlbmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRENDOUJD
RjIyMzg3RTlBMDBGRkI1MUMgLyogTWVkaWFDYXBhYmlsaXRpZXNEZWNvZGluZ0luZm8uaCBpbiBI
ZWFkZXJzICovLApAQCAtMzQ0NjIsNiArMzQ0NzEsNyBAQAogCQkJCTA3QUI5OTZCMThEQTNDMDEw
MDE4NzcxRSAvKiBSVENJY2VTZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxMzU5MTA4MUU3
RERDNzMwMEYzMDYzMCAvKiBSVENJY2VUcmFuc3BvcnRQb2xpY3kuaCBpbiBIZWFkZXJzICovLAog
CQkJCTMxMzU5MTA5MUU3RERDNzMwMEYzMDYzMCAvKiBSVENJY2VUcmFuc3BvcnRTdGF0ZS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNDFDMTRCQzYyNkRFNkRFODAwNjg1QkY1IC8qIFJUQ05ldHdvcmtN
YW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzM3OTRGRTE5RjU4NjRFMDBFNUEwNDUgLyog
UlRDTm90aWZpZXJzTW9jay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDczNzk0REUxOUVFMkM1MjAw
RTVBMDQ1IC8qIFJUQ09mZmVyQW5zd2VyT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDc4
RTA5MjUxN0QxNEQxQzAwNDIwQUExIC8qIFJUQ1BlZXJDb25uZWN0aW9uLmggaW4gSGVhZGVycyAq
LywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDhjM2JiMWMzMmRkZDI1OWU0MDBjMmI1Njdm
M2ExZGUyZmJkNjdiOTYuLmMwOTI0OWM2NzQ4YjRiYjdhZDQ5MDdmNDRhOTJmODg3NDlhNzVjNjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMjU5NiwxMiArMjU5Niw5IEBAIHZvaWQgRG9j
dW1lbnQ6OndpbGxCZVJlbW92ZWRGcm9tRnJhbWUoKQogICAgIGlmIChtX2hhc1ByZXBhcmVkRm9y
RGVzdHJ1Y3Rpb24pCiAgICAgICAgIHJldHVybjsKIAotI2lmIFVTRShMSUJXRUJSVEMpCi0gICAg
Ly8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIG1vdmVkIHRvIE1vZHVsZXMvbWVkaWFzdHJlYW0uCi0g
ICAgaWYgKExpYldlYlJUQ1Byb3ZpZGVyOjp3ZWJSVENBdmFpbGFibGUoKSkgewotICAgICAgICBp
ZiAoYXV0byogcGFnZSA9IHRoaXMtPnBhZ2UoKSkKLSAgICAgICAgICAgIHBhZ2UtPmxpYldlYlJU
Q1Byb3ZpZGVyKCkudW5yZWdpc3Rlck1ETlNOYW1lcyhpZGVudGlmaWVyKCkpOwotICAgIH0KKyNp
ZiBFTkFCTEUoV0VCX1JUQykKKyAgICBpZiAobV9ydGNOZXR3b3JrTWFuYWdlcikKKyAgICAgICAg
bV9ydGNOZXR3b3JrTWFuYWdlci0+dW5yZWdpc3Rlck1ETlNOYW1lcygpOwogI2VuZGlmCiAKICNp
ZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCkBAIC01NjE4LDEyICs1NjE1LDkgQEAgdm9pZCBEb2N1
bWVudDo6c3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uIHJlYXNvbikKICAgICAgICAgICAgIHZp
ZXctPmNvbXBvc2l0b3IoKS5jYW5jZWxDb21wb3NpdGluZ0xheWVyVXBkYXRlKCk7CiAgICAgfQog
Ci0jaWYgVVNFKExJQldFQlJUQykKLSAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgbW92ZWQg
dG8gTW9kdWxlcy9tZWRpYXN0cmVhbS4KLSAgICBpZiAoTGliV2ViUlRDUHJvdmlkZXI6OndlYlJU
Q0F2YWlsYWJsZSgpKSB7Ci0gICAgICAgIGlmIChhdXRvKiBwYWdlID0gdGhpcy0+cGFnZSgpKQot
ICAgICAgICAgICAgcGFnZS0+bGliV2ViUlRDUHJvdmlkZXIoKS51bnJlZ2lzdGVyTUROU05hbWVz
KGlkZW50aWZpZXIoKSk7Ci0gICAgfQorI2lmIEVOQUJMRShXRUJfUlRDKQorICAgIGlmIChtX3J0
Y05ldHdvcmtNYW5hZ2VyKQorICAgICAgICBtX3J0Y05ldHdvcmtNYW5hZ2VyLT51bnJlZ2lzdGVy
TUROU05hbWVzKCk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmgKaW5kZXggMTJhOTAyZDVkZGVjOWQ4MWZmNTE3NzBhZTRmZWZhNzBjODRjZTAw
YS4uNzVjYTMzMTFlMjNhNDFiNjk0OGEwMjlmYzk5YTk1YTU0YTk4NGVlNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmgKQEAgLTQ5LDYgKzQ5LDcgQEAKICNpbmNsdWRlICJQYWdlSWRlbnRpZmllci5oIgog
I2luY2x1ZGUgIlBsYXRmb3JtRXZlbnQuaCIKICNpbmNsdWRlICJQbGF5YmFja1RhcmdldENsaWVu
dENvbnRleHRJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiUlRDTmV0d29ya01hbmFnZXIuaCIKICNp
bmNsdWRlICJSZWZlcnJlclBvbGljeS5oIgogI2luY2x1ZGUgIlJlZ2lvbi5oIgogI2luY2x1ZGUg
IlJlZ2lzdHJhYmxlRG9tYWluLmgiCkBAIC03MDgsNiArNzA5LDExIEBAIHB1YmxpYzoKICAgICBT
b2NrZXRQcm92aWRlciogc29ja2V0UHJvdmlkZXIoKSBmaW5hbDsKICAgICBSZWZQdHI8UlRDRGF0
YUNoYW5uZWxSZW1vdGVIYW5kbGVyQ29ubmVjdGlvbj4gY3JlYXRlUlRDRGF0YUNoYW5uZWxSZW1v
dGVIYW5kbGVyQ29ubmVjdGlvbigpIGZpbmFsOwogCisjaWYgRU5BQkxFKFdFQl9SVEMpCisgICAg
UlRDTmV0d29ya01hbmFnZXIqIHJ0Y05ldHdvcmtNYW5hZ2VyKCkgeyByZXR1cm4gbV9ydGNOZXR3
b3JrTWFuYWdlci5nZXQoKTsgfQorICAgIHZvaWQgc2V0UlRDTmV0d29ya01hbmFnZXIoUmVmPFJU
Q05ldHdvcmtNYW5hZ2VyPiYmIHJ0Y05ldHdvcmtNYW5hZ2VyKSB7IG1fcnRjTmV0d29ya01hbmFn
ZXIgPSBXVEZNb3ZlKHJ0Y05ldHdvcmtNYW5hZ2VyKTsgfQorI2VuZGlmCisKICAgICBib29sIGNh
bk5hdmlnYXRlKEZyYW1lKiB0YXJnZXRGcmFtZSwgY29uc3QgVVJMJiBkZXN0aW5hdGlvblVSTCA9
IFVSTCgpKTsKIAogICAgIGJvb2wgdXNlc1N0eWxlQmFzZWRFZGl0YWJpbGl0eSgpIGNvbnN0OwpA
QCAtMjIyMSw2ICsyMjI3LDEwIEBAIHByaXZhdGU6CiAKICAgICBMaXN0SGFzaFNldDxSZWY8RWxl
bWVudD4+IG1fdG9wTGF5ZXJFbGVtZW50czsKICAgICBVbmlxdWVSZWY8V2hpdGVzcGFjZUNhY2hl
PiBtX3doaXRlc3BhY2VDYWNoZTsKKworI2lmIEVOQUJMRShXRUJfUlRDKQorICAgIFJlZlB0cjxS
VENOZXR3b3JrTWFuYWdlcj4gbV9ydGNOZXR3b3JrTWFuYWdlcjsKKyNlbmRpZgogfTsKIAogRWxl
bWVudCogZXZlbnRUYXJnZXRFbGVtZW50Rm9yRG9jdW1lbnQoRG9jdW1lbnQqKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01ETlNSZWdpc3RlckVycm9y
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NRE5TUmVnaXN0ZXJFcnJv
ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjc3YzVkYWZlMzNmYmU2NGU3YTgyNmMxNTFiNmJlM2NhNTJmYTU1NWQK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9N
RE5TUmVnaXN0ZXJFcnJvci5oCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworZW51bSBjbGFzcyBNRE5TUmVnaXN0ZXJFcnJvciB7IE5vdEltcGxlbWVudGVkLCBCYWRQ
YXJhbWV0ZXIsIEROU1NELCBJbnRlcm5hbCwgVGltZW91dCB9OworCit9CisKK25hbWVzcGFjZSBX
VEYgeworCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6Ok1ETlNSZWdpc3Rl
ckVycm9yPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViQ29y
ZTo6TUROU1JlZ2lzdGVyRXJyb3IsCisgICAgICAgIFdlYkNvcmU6Ok1ETlNSZWdpc3RlckVycm9y
OjpOb3RJbXBsZW1lbnRlZCwKKyAgICAgICAgV2ViQ29yZTo6TUROU1JlZ2lzdGVyRXJyb3I6OkJh
ZFBhcmFtZXRlciwKKyAgICAgICAgV2ViQ29yZTo6TUROU1JlZ2lzdGVyRXJyb3I6OkROU1NELAor
ICAgICAgICBXZWJDb3JlOjpNRE5TUmVnaXN0ZXJFcnJvcjo6SW50ZXJuYWwsCisgICAgICAgIFdl
YkNvcmU6Ok1ETlNSZWdpc3RlckVycm9yOjpUaW1lb3V0CisgICAgPjsKK307CisKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJX
ZWJSVENQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9s
aWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuY3BwCmluZGV4IGM1OTU2MTc4NzJiMjJiOWVjM2Y1
MzJkMzQ1YjA4YzE2ZmU2YmZkNmQuLjVhZjc5YWQ0ODU4Njg0MGY0ODc1N2RlZmU4YTNhNjZlNTZk
M2JlY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xp
YndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcApAQCAtMjk5LDcg
KzI5OSw3IEBAIHZvaWQgTGliV2ViUlRDUHJvdmlkZXI6OmVuYWJsZUVudW1lcmF0aW5nQWxsTmV0
d29ya0ludGVyZmFjZXMoKQogICAgIG1fZW5hYmxlRW51bWVyYXRpbmdBbGxOZXR3b3JrSW50ZXJm
YWNlcyA9IHRydWU7CiB9CiAKLXJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlBlZXJDb25uZWN0
aW9uSW50ZXJmYWNlPiBMaWJXZWJSVENQcm92aWRlcjo6Y3JlYXRlUGVlckNvbm5lY3Rpb24od2Vi
cnRjOjpQZWVyQ29ubmVjdGlvbk9ic2VydmVyJiBvYnNlcnZlciwgcnRjOjpQYWNrZXRTb2NrZXRG
YWN0b3J5Kiwgd2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6UlRDQ29uZmlndXJhdGlv
biYmIGNvbmZpZ3VyYXRpb24pCitydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpQZWVyQ29ubmVj
dGlvbkludGVyZmFjZT4gTGliV2ViUlRDUHJvdmlkZXI6OmNyZWF0ZVBlZXJDb25uZWN0aW9uKERv
Y3VtZW50SWRlbnRpZmllciwgd2VicnRjOjpQZWVyQ29ubmVjdGlvbk9ic2VydmVyJiBvYnNlcnZl
ciwgcnRjOjpQYWNrZXRTb2NrZXRGYWN0b3J5Kiwgd2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVy
ZmFjZTo6UlRDQ29uZmlndXJhdGlvbiYmIGNvbmZpZ3VyYXRpb24pCiB7CiAgICAgLy8gRGVmYXVs
dCBXSzEgaW1wbGVtZW50YXRpb24uCiAgICAgQVNTRVJUKG1fdXNlTmV0d29ya1RocmVhZFdpdGhT
b2NrZXRTZXJ2ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuaAppbmRleCAxODYy
N2VlNTdmNzU4YTA0NzIyZDE2MTZmMGY4NzYyODQzNDExNWI3Li4zNmM2NGE4M2NlZjkyODkyN2Iy
NjBkYTc3MDg0ZGFlMjVlOTE5ZTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIu
aApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiRG9jdW1lbnRJZGVudGlmaWVyLmgiCiAj
aW5jbHVkZSAiTGliV2ViUlRDTWFjcm9zLmgiCisjaW5jbHVkZSAiTUROU1JlZ2lzdGVyRXJyb3Iu
aCIKICNpbmNsdWRlICJSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXJDb25uZWN0aW9uLmgiCiAj
aW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL0V4cGVjdGVk
Lmg+CkBAIC02Niw4ICs2Nyw2IEBAIGNsYXNzIFJlZ2lzdHJhYmxlRG9tYWluOwogc3RydWN0IFBl
ZXJDb25uZWN0aW9uRmFjdG9yeUFuZFRocmVhZHM7CiBzdHJ1Y3QgUlRDUnRwQ2FwYWJpbGl0aWVz
OwogCi1lbnVtIGNsYXNzIE1ETlNSZWdpc3RlckVycm9yIHsgTm90SW1wbGVtZW50ZWQsIEJhZFBh
cmFtZXRlciwgRE5TU0QsIEludGVybmFsLCBUaW1lb3V0IH07Ci0KIGNsYXNzIFdFQkNPUkVfRVhQ
T1JUIExpYldlYlJUQ1Byb3ZpZGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKQEAgLTg2LDE4ICs4NSwxMCBAQCBwdWJsaWM6CiAgICAgdXNpbmcgSVBBZGRyZXNzT3JF
cnJvciA9IEV4cGVjdGVkPFN0cmluZywgTUROU1JlZ2lzdGVyRXJyb3I+OwogICAgIHVzaW5nIE1E
TlNOYW1lT3JFcnJvciA9IEV4cGVjdGVkPFN0cmluZywgTUROU1JlZ2lzdGVyRXJyb3I+OwogCi0g
ICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJNRE5TTmFtZXMoRG9jdW1lbnRJZGVudGlmaWVyKSB7
IH0KLQotICAgIHZpcnR1YWwgdm9pZCByZWdpc3Rlck1ETlNOYW1lKERvY3VtZW50SWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiBpcEFkZHJlc3MsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoTUROU05h
bWVPckVycm9yJiYpPiYmIGNhbGxiYWNrKQotICAgIHsKLSAgICAgICAgVU5VU0VEX1BBUkFNKGlw
QWRkcmVzcyk7Ci0gICAgICAgIGNhbGxiYWNrKG1ha2VVbmV4cGVjdGVkKE1ETlNSZWdpc3RlckVy
cm9yOjpOb3RJbXBsZW1lbnRlZCkpOwotICAgIH0KLQogICAgIHZpcnR1YWwgUmVmUHRyPFJUQ0Rh
dGFDaGFubmVsUmVtb3RlSGFuZGxlckNvbm5lY3Rpb24+IGNyZWF0ZVJUQ0RhdGFDaGFubmVsUmVt
b3RlSGFuZGxlckNvbm5lY3Rpb24oKSB7IHJldHVybiBudWxscHRyOyB9CiAKICNpZiBVU0UoTElC
V0VCUlRDKQotICAgIHZpcnR1YWwgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6UGVlckNvbm5l
Y3Rpb25JbnRlcmZhY2U+IGNyZWF0ZVBlZXJDb25uZWN0aW9uKHdlYnJ0Yzo6UGVlckNvbm5lY3Rp
b25PYnNlcnZlciYsIHJ0Yzo6UGFja2V0U29ja2V0RmFjdG9yeSosIHdlYnJ0Yzo6UGVlckNvbm5l
Y3Rpb25JbnRlcmZhY2U6OlJUQ0NvbmZpZ3VyYXRpb24mJik7CisgICAgdmlydHVhbCBydGM6OnNj
b3BlZF9yZWZwdHI8d2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZT4gY3JlYXRlUGVlckNv
bm5lY3Rpb24oRG9jdW1lbnRJZGVudGlmaWVyLCB3ZWJydGM6OlBlZXJDb25uZWN0aW9uT2JzZXJ2
ZXImLCBydGM6OlBhY2tldFNvY2tldEZhY3RvcnkqLCB3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50
ZXJmYWNlOjpSVENDb25maWd1cmF0aW9uJiYpOwogCiAgICAgd2VicnRjOjpQZWVyQ29ubmVjdGlv
bkZhY3RvcnlJbnRlcmZhY2UqIGZhY3RvcnkoKTsKIApAQCAtMTIzLDYgKzExNCw4IEBAIHB1Ymxp
YzoKICAgICBib29sIGlzU3VwcG9ydGluZ1ZQOVZUQigpIGNvbnN0IHsgcmV0dXJuIG1fc3VwcG9y
dHNWUDlWVEI7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZU5vbkxvY2FsaG9zdENvbm5lY3Rp
b25zKCkgeyBtX2Rpc2FibGVOb25Mb2NhbGhvc3RDb25uZWN0aW9ucyA9IHRydWU7IH0KIAorICAg
IGJvb2wgaXNTdXBwb3J0aW5nTUROUygpIGNvbnN0IHsgcmV0dXJuIG1fc3VwcG9ydHNNRE5TOyB9
CisKICAgICAvLyBDYWxsYmFjayBpcyBleGVjdXRlZCBvbiBhIGJhY2tncm91bmQgdGhyZWFkLgog
ICAgIHZvaWQgcHJlcGFyZUNlcnRpZmljYXRlR2VuZXJhdG9yKEZ1bmN0aW9uPHZvaWQocnRjOjpS
VENDZXJ0aWZpY2F0ZUdlbmVyYXRvciYpPiYmKTsKIApAQCAtMTY4LDYgKzE2MSw3IEBAIHByb3Rl
Y3RlZDoKICAgICBib29sIG1fc3VwcG9ydHNWUDlQcm9maWxlMiB7IGZhbHNlIH07CiAgICAgYm9v
bCBtX3N1cHBvcnRzVlA5VlRCIHsgZmFsc2UgfTsKICAgICBib29sIG1fdXNlRFRMUzEwIHsgZmFs
c2UgfTsKKyAgICBib29sIG1fc3VwcG9ydHNNRE5TIHsgZmFsc2UgfTsKICNlbmRpZgogfTsKIApA
QCAtMTgwLDE2ICsxNzQsMyBAQCBpbmxpbmUgdm9pZCBMaWJXZWJSVENQcm92aWRlcjo6c2V0VlA5
U3VwcG9ydChib29sIHN1cHBvcnRzVlA5UHJvZmlsZTAsIGJvb2wgc3VwcAogI2VuZGlmCiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKLQotbmFtZXNwYWNlIFdURiB7Ci10ZW1wbGF0ZTw+IHN0cnVj
dCBFbnVtVHJhaXRzPFdlYkNvcmU6Ok1ETlNSZWdpc3RlckVycm9yPiB7Ci0gICAgdXNpbmcgdmFs
dWVzID0gRW51bVZhbHVlczwKLSAgICAgICAgV2ViQ29yZTo6TUROU1JlZ2lzdGVyRXJyb3IsCi0g
ICAgICAgIFdlYkNvcmU6Ok1ETlNSZWdpc3RlckVycm9yOjpOb3RJbXBsZW1lbnRlZCwKLSAgICAg
ICAgV2ViQ29yZTo6TUROU1JlZ2lzdGVyRXJyb3I6OkJhZFBhcmFtZXRlciwKLSAgICAgICAgV2Vi
Q29yZTo6TUROU1JlZ2lzdGVyRXJyb3I6OkROU1NELAotICAgICAgICBXZWJDb3JlOjpNRE5TUmVn
aXN0ZXJFcnJvcjo6SW50ZXJuYWwsCi0gICAgICAgIFdlYkNvcmU6Ok1ETlNSZWdpc3RlckVycm9y
OjpUaW1lb3V0Ci0gICAgPjsKLX07Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrTUROU1JlZ2lzdGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtNRE5TUmVnaXN0ZXIuY3BwCmluZGV4IGZjNDM1
MTEyZjViY2UwYWEzMTIyMGU0MTJmY2U0YzU5ODNmMjhiMDcuLjdhYTE3YzEzMWYxNjI2ODRjZDI4
M2E3YTBlNGMxZDEzMWJlZTg2MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvd2VicnRjL05ldHdvcmtNRE5TUmVnaXN0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtNRE5TUmVnaXN0ZXIuY3BwCkBAIC05OCwyNyAr
OTgsMjkgQEAgc3RhdGljIHZvaWQgcmVnaXN0ZXJNRE5TTmFtZUNhbGxiYWNrKEROU1NlcnZpY2VS
ZWYsIEROU1JlY29yZFJlZiByZWNvcmQsIEROU1NlcnYKICAgICBNRE5TX1JFTEVBU0VfTE9HX0lO
X0NBTExCQUNLKHJlcXVlc3QtPnNlc3Npb25JRCwgInJlZ2lzdGVyTUROU05hbWVDYWxsYmFjayB3
aXRoIGVycm9yICVkIiwgZXJyb3JDb2RlKTsKIAogICAgIGlmIChlcnJvckNvZGUpIHsKLSAgICAg
ICAgcmVxdWVzdC0+Y29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6V2ViTUROU1JlZ2lzdGVyOjpG
aW5pc2hlZFJlZ2lzdGVyaW5nTUROU05hbWUgeyByZXF1ZXN0LT5yZXF1ZXN0SWRlbnRpZmllciwg
bWFrZVVuZXhwZWN0ZWQoV2ViQ29yZTo6TUROU1JlZ2lzdGVyRXJyb3I6OkROU1NEKSB9LCAwKTsK
KyAgICAgICAgcmVxdWVzdC0+Y29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6V2ViTUROU1JlZ2lz
dGVyOjpGaW5pc2hlZFJlZ2lzdGVyaW5nTUROU05hbWUgeyByZXF1ZXN0LT5yZXF1ZXN0SWRlbnRp
ZmllciwgcmVxdWVzdC0+bmFtZSwgV2ViQ29yZTo6TUROU1JlZ2lzdGVyRXJyb3I6OkROU1NEIH0s
IDApOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIHJlcXVlc3QtPmNvbm5lY3Rpb24tPnNl
bmQoTWVzc2FnZXM6OldlYk1ETlNSZWdpc3Rlcjo6RmluaXNoZWRSZWdpc3RlcmluZ01ETlNOYW1l
IHsgcmVxdWVzdC0+cmVxdWVzdElkZW50aWZpZXIsIHJlcXVlc3QtPm5hbWUgfSwgMCk7CisgICAg
cmVxdWVzdC0+Y29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6V2ViTUROU1JlZ2lzdGVyOjpGaW5p
c2hlZFJlZ2lzdGVyaW5nTUROU05hbWUgeyByZXF1ZXN0LT5yZXF1ZXN0SWRlbnRpZmllciwgcmVx
dWVzdC0+bmFtZSwgeyB9IH0sIDApOwogfQogCiB2b2lkIE5ldHdvcmtNRE5TUmVnaXN0ZXI6OnJl
Z2lzdGVyTUROU05hbWUoTUROU1JlZ2lzdGVySWRlbnRpZmllciByZXF1ZXN0SWRlbnRpZmllciwg
V2ViQ29yZTo6RG9jdW1lbnRJZGVudGlmaWVyIGRvY3VtZW50SWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiBpcEFkZHJlc3MpCiB7CisgICAgYXV0byBuYW1lID0gbWFrZVN0cmluZyhjcmVhdGVDYW5v
bmljYWxVVUlEU3RyaW5nKCksICIubG9jYWwiKTsKKwogICAgIEROU1NlcnZpY2VSZWYgc2Vydmlj
ZTsKICAgICBhdXRvIGl0ZXJhdG9yID0gbV9zZXJ2aWNlcy5maW5kKGRvY3VtZW50SWRlbnRpZmll
cik7CiAgICAgaWYgKGl0ZXJhdG9yID09IG1fc2VydmljZXMuZW5kKCkpIHsKICAgICAgICAgYXV0
byBlcnJvciA9IEROU1NlcnZpY2VDcmVhdGVDb25uZWN0aW9uKCZzZXJ2aWNlKTsKICAgICAgICAg
aWYgKGVycm9yKSB7CiAgICAgICAgICAgICBNRE5TX1JFTEVBU0VfTE9HKCJyZWdpc3Rlck1ETlNO
YW1lIEROU1NlcnZpY2VDcmVhdGVDb25uZWN0aW9uIGVycm9yICVkIiwgZXJyb3IpOwotICAgICAg
ICAgICAgbV9jb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpXZWJNRE5TUmVn
aXN0ZXI6OkZpbmlzaGVkUmVnaXN0ZXJpbmdNRE5TTmFtZSB7IHJlcXVlc3RJZGVudGlmaWVyLCBt
YWtlVW5leHBlY3RlZChXZWJDb3JlOjpNRE5TUmVnaXN0ZXJFcnJvcjo6RE5TU0QpIH0sIDApOwor
ICAgICAgICAgICAgbV9jb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpXZWJN
RE5TUmVnaXN0ZXI6OkZpbmlzaGVkUmVnaXN0ZXJpbmdNRE5TTmFtZSB7IHJlcXVlc3RJZGVudGlm
aWVyLCBuYW1lLCBXZWJDb3JlOjpNRE5TUmVnaXN0ZXJFcnJvcjo6RE5TU0QgfSwgMCk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgZXJyb3IgPSBETlNTZXJ2aWNlU2V0
RGlzcGF0Y2hRdWV1ZShzZXJ2aWNlLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpKTsKICAgICAg
ICAgaWYgKGVycm9yKSB7CiAgICAgICAgICAgICBNRE5TX1JFTEVBU0VfTE9HKCJyZWdpc3Rlck1E
TlNOYW1lIEROU1NlcnZpY2VDcmVhdGVDb25uZWN0aW9uIGVycm9yICVkIiwgZXJyb3IpOwotICAg
ICAgICAgICAgbV9jb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpXZWJNRE5T
UmVnaXN0ZXI6OkZpbmlzaGVkUmVnaXN0ZXJpbmdNRE5TTmFtZSB7IHJlcXVlc3RJZGVudGlmaWVy
LCBtYWtlVW5leHBlY3RlZChXZWJDb3JlOjpNRE5TUmVnaXN0ZXJFcnJvcjo6RE5TU0QpIH0sIDAp
OworICAgICAgICAgICAgbV9jb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpX
ZWJNRE5TUmVnaXN0ZXI6OkZpbmlzaGVkUmVnaXN0ZXJpbmdNRE5TTmFtZSB7IHJlcXVlc3RJZGVu
dGlmaWVyLCBuYW1lLCBXZWJDb3JlOjpNRE5TUmVnaXN0ZXJFcnJvcjo6RE5TU0QgfSwgMCk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgQVNTRVJUKHNlcnZpY2UpOwpA
QCAtMTI2LDEzICsxMjgsMTIgQEAgdm9pZCBOZXR3b3JrTUROU1JlZ2lzdGVyOjpyZWdpc3Rlck1E
TlNOYW1lKE1ETlNSZWdpc3RlcklkZW50aWZpZXIgcmVxdWVzdElkZW50aWYKICAgICB9IGVsc2UK
ICAgICAgICAgc2VydmljZSA9IGl0ZXJhdG9yLT52YWx1ZTsKIAotICAgIGF1dG8gbmFtZSA9IG1h
a2VTdHJpbmcoY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpLCAiLmxvY2FsIik7Ci0KICAgICBh
dXRvIGlwID0gaW5ldF9hZGRyKGlwQWRkcmVzcy51dGY4KCkuZGF0YSgpKTsKIAorICAgIC8vIEZJ
WE1FOiBBZGQgSVB2NiBzdXBwb3J0LgogICAgIGlmIChpcCA9PSAoIGluX2FkZHJfdCkoLTEpKSB7
CiAgICAgICAgIE1ETlNfUkVMRUFTRV9MT0coInJlZ2lzdGVyTUROU05hbWUgaW5ldF9hZGRyIGVy
cm9yIik7Ci0gICAgICAgIG1fY29ubmVjdGlvbi5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6
V2ViTUROU1JlZ2lzdGVyOjpGaW5pc2hlZFJlZ2lzdGVyaW5nTUROU05hbWUgeyByZXF1ZXN0SWRl
bnRpZmllciwgbWFrZVVuZXhwZWN0ZWQoV2ViQ29yZTo6TUROU1JlZ2lzdGVyRXJyb3I6OkJhZFBh
cmFtZXRlcikgfSwgMCk7CisgICAgICAgIG1fY29ubmVjdGlvbi5jb25uZWN0aW9uKCkuc2VuZChN
ZXNzYWdlczo6V2ViTUROU1JlZ2lzdGVyOjpGaW5pc2hlZFJlZ2lzdGVyaW5nTUROU05hbWUgeyBy
ZXF1ZXN0SWRlbnRpZmllciwgbmFtZSwgV2ViQ29yZTo6TUROU1JlZ2lzdGVyRXJyb3I6OkJhZFBh
cmFtZXRlciB9LCAwKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTU2LDcgKzE1Nyw3
IEBAIHZvaWQgTmV0d29ya01ETlNSZWdpc3Rlcjo6cmVnaXN0ZXJNRE5TTmFtZShNRE5TUmVnaXN0
ZXJJZGVudGlmaWVyIHJlcXVlc3RJZGVudGlmCiAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZCo+KHBlbmRpbmdSZWdpc3RyYXRpb25SZXF1ZXN0Q291bnQpKTsKICAgICBpZiAoZXJyb3IpIHsK
ICAgICAgICAgTUROU19SRUxFQVNFX0xPRygicmVnaXN0ZXJNRE5TTmFtZSBETlNTZXJ2aWNlUmVn
aXN0ZXJSZWNvcmQgZXJyb3IgJWQiLCBlcnJvcik7Ci0gICAgICAgIG1fY29ubmVjdGlvbi5jb25u
ZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6V2ViTUROU1JlZ2lzdGVyOjpGaW5pc2hlZFJlZ2lzdGVy
aW5nTUROU05hbWUgeyByZXF1ZXN0SWRlbnRpZmllciwgbWFrZVVuZXhwZWN0ZWQoV2ViQ29yZTo6
TUROU1JlZ2lzdGVyRXJyb3I6OkROU1NEKSB9LCAwKTsKKyAgICAgICAgbV9jb25uZWN0aW9uLmNv
bm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpXZWJNRE5TUmVnaXN0ZXI6OkZpbmlzaGVkUmVnaXN0
ZXJpbmdNRE5TTmFtZSB7IHJlcXVlc3RJZGVudGlmaWVyLCBwZW5kaW5nUmVxdWVzdC0+bmFtZSwg
V2ViQ29yZTo6TUROU1JlZ2lzdGVyRXJyb3I6OkROU1NEIH0sIDApOwogICAgICAgICByZXR1cm47
CiAgICAgfQogICAgIHBlbmRpbmdSZWdpc3RyYXRpb25SZXF1ZXN0cygpLmFkZChwZW5kaW5nUmVn
aXN0cmF0aW9uUmVxdWVzdENvdW50KyssIFdURk1vdmUocGVuZGluZ1JlcXVlc3QpKTsKQEAgLTE3
MSw3ICsxNzIsOSBAQCB2b2lkIE5ldHdvcmtNRE5TUmVnaXN0ZXI6OnVucmVnaXN0ZXJNRE5TTmFt
ZXMoV2ViQ29yZTo6RG9jdW1lbnRJZGVudGlmaWVyKQogdm9pZCBOZXR3b3JrTUROU1JlZ2lzdGVy
OjpyZWdpc3Rlck1ETlNOYW1lKE1ETlNSZWdpc3RlcklkZW50aWZpZXIgcmVxdWVzdElkZW50aWZp
ZXIsIFdlYkNvcmU6OkRvY3VtZW50SWRlbnRpZmllciBkb2N1bWVudElkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgaXBBZGRyZXNzKQogewogICAgIE1ETlNfUkVMRUFTRV9MT0coInJlZ2lzdGVyTURO
U05hbWUgbm90IGltcGxlbWVudGVkIik7Ci0gICAgbV9jb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5z
ZW5kKE1lc3NhZ2VzOjpXZWJNRE5TUmVnaXN0ZXI6OkZpbmlzaGVkUmVnaXN0ZXJpbmdNRE5TTmFt
ZSB7IHJlcXVlc3RJZGVudGlmaWVyLCBtYWtlVW5leHBlY3RlZChXZWJDb3JlOjpNRE5TUmVnaXN0
ZXJFcnJvcjo6Tm90SW1wbGVtZW50ZWQpIH0sIDApOworICAgIGF1dG8gbmFtZSA9IG1ha2VTdHJp
bmcoY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpLCAiLmxvY2FsIik7CisKKyAgICBtX2Nvbm5l
Y3Rpb24uY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OldlYk1ETlNSZWdpc3Rlcjo6RmluaXNo
ZWRSZWdpc3RlcmluZ01ETlNOYW1lIHsgcmVxdWVzdElkZW50aWZpZXIsIG5hbWUsIFdlYkNvcmU6
Ok1ETlNSZWdpc3RlckVycm9yOjpOb3RJbXBsZW1lbnRlZCB9LCAwKTsKIH0KIAogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3Vy
Y2VzLnR4dAppbmRleCAxMTczNjk3NmE0YzNlOTQwOGNhMDFiYTdhZTg3OWY2MjQ1YmJjNWRkLi4y
NDEyYmJmYWQ4ZTVmODExYjUxZTgyZjYwZDFjNTQ2MTlhMjE4ODM5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAg
LTY0MCw2ICs2NDAsNyBAQCBXZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0UHJvdmlkZXIuY3Bw
CiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0U3RyZWFtLmNwcAogCiBXZWJQcm9jZXNzL05l
dHdvcmsvd2VicnRjL0xpYldlYlJUQ05ldHdvcmsuY3BwCitXZWJQcm9jZXNzL05ldHdvcmsvd2Vi
cnRjL0xpYldlYlJUQ05ldHdvcmtNYW5hZ2VyLmNwcAogV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0
Yy9MaWJXZWJSVENQcm92aWRlci5jcHAKIFdlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2Vi
UlRDUmVzb2x2ZXIuY3BwCiBXZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1NvY2tl
dC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IDVkZWE4ODE3ZWE4MGFiYzUwYjYwNTZiYjZkOGUwZmEyZDM4OTc4ODAuLmM2OTA4Mzhm
MmJkYzZjZjI3MmYwYjExYTdjZDkzZTcwY2JjZjFmNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzg1Miw2ICszODUyLDggQEAKIAkJ
NDFCN0VENkYyMDY5NjU5MDAwODdEODUzIC8qIE5ldHdvcmtNRE5TUmVnaXN0ZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmV0d29ya01ETlNSZWdpc3Rlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQjdFRDcwMjA2OTY1OTAwMDg3RDg1MyAv
KiBOZXR3b3JrTUROU1JlZ2lzdGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IE5ldHdvcmtNRE5TUmVnaXN0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFC
N0VENzEyMDY5NjU5MDAwODdEODUzIC8qIE5ldHdvcmtNRE5TUmVnaXN0ZXIubWVzc2FnZXMuaW4g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gTmV0d29ya01ETlNSZWdpc3Rlci5tZXNzYWdlcy5pbjsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFDMTRCQzIyNkRFNkEyRjAwNjg1QkY1IC8q
IExpYldlYlJUQ05ldHdvcmtNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExpYldlYlJU
Q05ldHdvcmtNYW5hZ2VyLmNwcDsgcGF0aCA9IE5ldHdvcmsvd2VicnRjL0xpYldlYlJUQ05ldHdv
cmtNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFDMTRCQzMyNkRF
NkEyRjAwNjg1QkY1IC8qIExpYldlYlJUQ05ldHdvcmtNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IExpYldlYlJUQ05ldHdvcmtNYW5hZ2VyLmg7IHBhdGggPSBOZXR3b3JrL3dlYnJ0Yy9MaWJXZWJS
VENOZXR3b3JrTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUMzQjg4
NTI2NDQ0QUFCMDA0RUQ0REUgLyogQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5h
bFVuaXRNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRl
cmVySW50ZXJuYWxVbml0TWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
MUMzQjg4NjI2NDQ0QUFDMDA0RUQ0REUgLyogQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJ
bnRlcm5hbFVuaXRNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF1ZGlvTWVkaWFTdHJl
YW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQxQzNCODg3MjY0NDRBRDMwMDRFRDRERSAvKiBBdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlckludGVybmFsVW5pdElkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXVk
aW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRJZGVudGlmaWVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04NTE1LDYgKzg1MTcsOCBAQAogCQkJCTQxNkY4MDg5
MjQ1QzdGRjUwMEI2OEYwMiAvKiBMaWJXZWJSVENOZXR3b3JrLmNwcCAqLywKIAkJCQk0MTFCMjI2
MjFFMzcxMjQ0MDA0RjczNjMgLyogTGliV2ViUlRDTmV0d29yay5oICovLAogCQkJCTQxNkY4MDg2
MjQ1QjM5NzQwMEI2OEYwMiAvKiBMaWJXZWJSVENOZXR3b3JrLm1lc3NhZ2VzLmluICovLAorCQkJ
CTQxQzE0QkMyMjZERTZBMkYwMDY4NUJGNSAvKiBMaWJXZWJSVENOZXR3b3JrTWFuYWdlci5jcHAg
Ki8sCisJCQkJNDFDMTRCQzMyNkRFNkEyRjAwNjg1QkY1IC8qIExpYldlYlJUQ05ldHdvcmtNYW5h
Z2VyLmggKi8sCiAJCQkJNDEzMDc1QTcxREU4NUVFNzAwMzlFQzY5IC8qIExpYldlYlJUQ1Byb3Zp
ZGVyLmNwcCAqLywKIAkJCQk0MTMwNzVBODFERTg1RUU3MDAzOUVDNjkgLyogTGliV2ViUlRDUHJv
dmlkZXIuaCAqLywKIAkJCQk0MUZBRjVGNzFFM0MwQjQ3MDAxQUU2NzggLyogTGliV2ViUlRDUmVz
b2x2ZXIuY3BwICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvd2VicnRjL0xpYldlYlJUQ05ldHdvcmtNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENOZXR3b3JrTWFuYWdlci5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNWNjZjdhZTM3NjRhYTYzMGIzOGMzNTU1ZjVhNmNmODRmN2UzMTk5ZQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJS
VENOZXR3b3JrTWFuYWdlci5jcHAKQEAgLTAsMCArMSwxNTggQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTGliV2ViUlRDTmV0d29ya01hbmFnZXIuaCIKKwor
I2lmIFVTRShMSUJXRUJSVEMpCisKKyNpbmNsdWRlICJMaWJXZWJSVENOZXR3b3JrLmgiCisjaW5j
bHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlIDxXZWJD
b3JlL0RvY3VtZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9MaWJXZWJSVENVdGlscy5oPgorCitu
YW1lc3BhY2UgV2ViS2l0IHsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitMaWJXZWJSVENO
ZXR3b3JrTWFuYWdlciogTGliV2ViUlRDTmV0d29ya01hbmFnZXI6OmdldE9yQ3JlYXRlKFdlYkNv
cmU6OkRvY3VtZW50SWRlbnRpZmllciBpZGVudGlmaWVyKQoreworICAgIGF1dG8qIGRvY3VtZW50
ID0gRG9jdW1lbnQ6OmFsbERvY3VtZW50c01hcCgpLmdldChpZGVudGlmaWVyKTsKKyAgICBpZiAo
IWRvY3VtZW50KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8qIG5ldHdvcmtN
YW5hZ2VyID0gc3RhdGljX2Nhc3Q8TGliV2ViUlRDTmV0d29ya01hbmFnZXIqPihkb2N1bWVudC0+
cnRjTmV0d29ya01hbmFnZXIoKSk7CisgICAgaWYgKCFuZXR3b3JrTWFuYWdlcikgeworICAgICAg
ICBhdXRvIG5ld05ldHdvcmtNYW5hZ2VyID0gYWRvcHRSZWYoKm5ldyBMaWJXZWJSVENOZXR3b3Jr
TWFuYWdlcihpZGVudGlmaWVyKSk7CisgICAgICAgIG5ldHdvcmtNYW5hZ2VyID0gbmV3TmV0d29y
a01hbmFnZXIucHRyKCk7CisgICAgICAgIGRvY3VtZW50LT5zZXRSVENOZXR3b3JrTWFuYWdlcihX
VEZNb3ZlKG5ld05ldHdvcmtNYW5hZ2VyKSk7CisgICAgfQorCisgICAgcmV0dXJuIG5ldHdvcmtN
YW5hZ2VyOworfQorCitMaWJXZWJSVENOZXR3b3JrTWFuYWdlcjo6TGliV2ViUlRDTmV0d29ya01h
bmFnZXIoV2ViQ29yZTo6RG9jdW1lbnRJZGVudGlmaWVyIGRvY3VtZW50SWRlbnRpZmllcikKKyAg
ICA6IG1fZG9jdW1lbnRJZGVudGlmaWVyKGRvY3VtZW50SWRlbnRpZmllcikKK3sKKyAgICBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5saWJXZWJSVENOZXR3b3JrKCkubW9uaXRvcigpLmFkZE9ic2Vy
dmVyKCp0aGlzKTsKK30KKworTGliV2ViUlRDTmV0d29ya01hbmFnZXI6On5MaWJXZWJSVENOZXR3
b3JrTWFuYWdlcigpCit7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkubGliV2ViUlRDTmV0
d29yaygpLm1vbml0b3IoKS5yZW1vdmVPYnNlcnZlcigqdGhpcyk7Cit9CisKK3ZvaWQgTGliV2Vi
UlRDTmV0d29ya01hbmFnZXI6OnVucmVnaXN0ZXJNRE5TTmFtZXMoKQoreworICAgIFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLmxpYldlYlJUQ05ldHdvcmsoKS5tZG5zUmVnaXN0ZXIoKS51bnJlZ2lz
dGVyTUROU05hbWVzKG1fZG9jdW1lbnRJZGVudGlmaWVyKTsKK30KKwordm9pZCBMaWJXZWJSVENO
ZXR3b3JrTWFuYWdlcjo6U3RhcnRVcGRhdGluZygpCit7CisgICAgY2FsbE9uTWFpblJ1bkxvb3Ao
W3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldIHsKKyAgICAgICAgaWYgKCF3ZWFr
VGhpcykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBhdXRvJiBtb25pdG9yID0gV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkubGliV2ViUlRDTmV0d29yaygpLm1vbml0b3IoKTsKKyAgICAg
ICAgaWYgKG1fcmVjZWl2ZWROZXR3b3JrTGlzdCkgeworICAgICAgICAgICAgV2ViQ29yZTo6TGli
V2ViUlRDUHJvdmlkZXI6OmNhbGxPbldlYlJUQ05ldHdvcmtUaHJlYWQoW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0geworICAgICAgICAgICAgICAgIFNpZ25hbE5ldHdvcmtz
Q2hhbmdlZCgpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0gZWxzZSBpZiAobW9uaXRvci5k
aWRSZWNlaXZlTmV0d29ya0xpc3QoKSkKKyAgICAgICAgICAgIG5ldHdvcmtzQ2hhbmdlZChtb25p
dG9yLm5ldHdvcmtMaXN0KCkgLCBtb25pdG9yLmlwdjQoKSwgbW9uaXRvci5pcHY2KCkpOworICAg
ICAgICBtb25pdG9yLnN0YXJ0VXBkYXRpbmcoKTsKKyAgICB9KTsKK30KKwordm9pZCBMaWJXZWJS
VENOZXR3b3JrTWFuYWdlcjo6U3RvcFVwZGF0aW5nKCkKK3sKKyAgICBjYWxsT25NYWluUnVuTG9v
cChbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKV0geworICAgICAgICBpZiAoIXdlYWtUaGlz
KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5s
aWJXZWJSVENOZXR3b3JrKCkubW9uaXRvcigpLnN0b3BVcGRhdGluZygpOworICAgIH0pOworfQor
Cit3ZWJydGM6Ok1kbnNSZXNwb25kZXJJbnRlcmZhY2UqIExpYldlYlJUQ05ldHdvcmtNYW5hZ2Vy
OjpHZXRNZG5zUmVzcG9uZGVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV91c2VNRE5TQ2FuZGlk
YXRlcyA/IGNvbnN0X2Nhc3Q8TGliV2ViUlRDTmV0d29ya01hbmFnZXIqPih0aGlzKSA6IG51bGxw
dHI7Cit9CisKK3ZvaWQgTGliV2ViUlRDTmV0d29ya01hbmFnZXI6Om5ldHdvcmtzQ2hhbmdlZChj
b25zdCBWZWN0b3I8UlRDTmV0d29yaz4mIG5ldHdvcmtzLCBjb25zdCBSVENOZXR3b3JrOjpJUEFk
ZHJlc3MmIGlwdjQsIGNvbnN0IFJUQ05ldHdvcms6OklQQWRkcmVzcyYgaXB2NikKK3sKKyAgICBi
b29sIGZvcmNlU2lnbmFsaW5nID0gIW1fcmVjZWl2ZWROZXR3b3JrTGlzdDsKKyAgICBtX3JlY2Vp
dmVkTmV0d29ya0xpc3QgPSB0cnVlOworCisgICAgV2ViQ29yZTo6TGliV2ViUlRDUHJvdmlkZXI6
OmNhbGxPbldlYlJUQ05ldHdvcmtUaHJlYWQoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKSwgbmV0d29ya3MsIGlwdjQsIGlwdjYsIGZvcmNlU2lnbmFsaW5nXSB7CisgICAgICAg
IHN0ZDo6dmVjdG9yPHJ0Yzo6TmV0d29yayo+IG5ldHdvcmtMaXN0KG5ldHdvcmtzLnNpemUoKSk7
CisgICAgICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBuZXR3b3Jrcy5zaXplKCk7
ICsraW5kZXgpCisgICAgICAgICAgICBuZXR3b3JrTGlzdFtpbmRleF0gPSBuZXcgcnRjOjpOZXR3
b3JrKG5ldHdvcmtzW2luZGV4XS52YWx1ZSgpKTsKKworICAgICAgICBib29sIGhhc0NoYW5nZWQ7
CisgICAgICAgIHNldF9kZWZhdWx0X2xvY2FsX2FkZHJlc3NlcyhpcHY0LnZhbHVlLCBpcHY2LnZh
bHVlKTsKKyAgICAgICAgTWVyZ2VOZXR3b3JrTGlzdChuZXR3b3JrTGlzdCwgJmhhc0NoYW5nZWQp
OworICAgICAgICBpZiAoaGFzQ2hhbmdlZCB8fCBmb3JjZVNpZ25hbGluZykKKyAgICAgICAgICAg
IFNpZ25hbE5ldHdvcmtzQ2hhbmdlZCgpOworICAgIH0pOworCit9CisKK3ZvaWQgTGliV2ViUlRD
TmV0d29ya01hbmFnZXI6Om5ldHdvcmtQcm9jZXNzQ3Jhc2hlZCgpCit7CisgICAgbV9yZWNlaXZl
ZE5ldHdvcmtMaXN0ID0gZmFsc2U7CisgICAgaWYgKCFXZWJDb3JlOjpMaWJXZWJSVENQcm92aWRl
cjo6aGFzV2ViUlRDVGhyZWFkcygpKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBJbiBjYXNl
IHdlIGhhdmUgY2xpZW50cyB3YWl0aW5nIGZvciBuZXR3b3Jrc0NoYW5nZWQsIHdlIGNhbGwgU2ln
bmFsTmV0d29ya3NDaGFuZ2VkIHRvIG1ha2Ugc3VyZSB0aGV5IGRvIG5vdCB3YWl0IGZvciBub3Ro
aW5nLgorICAgIFdlYkNvcmU6OkxpYldlYlJUQ1Byb3ZpZGVyOjpjYWxsT25XZWJSVENOZXR3b3Jr
VGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKKyAgICAgICAg
U2lnbmFsTmV0d29ya3NDaGFuZ2VkKCk7CisgICAgfSk7Cit9CisKK3ZvaWQgTGliV2ViUlRDTmV0
d29ya01hbmFnZXI6OkNyZWF0ZU5hbWVGb3JBZGRyZXNzKGNvbnN0IHJ0Yzo6SVBBZGRyZXNzJiBh
ZGRyZXNzLCBOYW1lQ3JlYXRlZENhbGxiYWNrIGNhbGxiYWNrKQoreworICAgIGNhbGxPbk1haW5S
dW5Mb29wKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBhZGRyZXNzLCBjYWxsYmFjayA9
IFdURk1vdmUoY2FsbGJhY2spXSgpIG11dGFibGUgeworICAgICAgICBpZiAoIXdlYWtUaGlzKQor
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmxp
YldlYlJUQ05ldHdvcmsoKS5tZG5zUmVnaXN0ZXIoKS5yZWdpc3Rlck1ETlNOYW1lKHdlYWtUaGlz
LT5tX2RvY3VtZW50SWRlbnRpZmllciwgZnJvbVN0ZFN0cmluZyhhZGRyZXNzLlRvU3RyaW5nKCkp
LCBbYWRkcmVzcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYXV0byBuYW1lLCBhdXRv
IGVycm9yKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIFdlYkNvcmU6OkxpYldlYlJUQ1Byb3ZpZGVy
OjpjYWxsT25XZWJSVENOZXR3b3JrVGhyZWFkKFthZGRyZXNzLCBjYWxsYmFjayA9IFdURk1vdmUo
Y2FsbGJhY2spLCBuYW1lID0gV1RGTW92ZShuYW1lKS5pc29sYXRlZENvcHkoKSwgZXJyb3JdIHsK
KyAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRihlcnJvciwgV2ViUlRDLCAiTURO
UyByZWdpc3RyYXRpb24gb2YgYSBob3N0IGNhbmRpZGF0ZSBmYWlsZWQgd2l0aCBlcnJvciAlZCIs
ICplcnJvcik7CisgICAgICAgICAgICAgICAgLy8gSW4gY2FzZSBvZiBlcnJvciwgd2UgcHJvdmlk
ZSB0aGUgbmFtZSB0byBsZXQgZ2F0aGVyaW5nIGNvbXBsZXRlLgorICAgICAgICAgICAgICAgIGNh
bGxiYWNrKGFkZHJlc3MsIG5hbWUudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICB9KTsKKyAg
ICAgICAgfSk7CisgICAgfSk7Cit9CisKK3ZvaWQgTGliV2ViUlRDTmV0d29ya01hbmFnZXI6OlJl
bW92ZU5hbWVGb3JBZGRyZXNzKGNvbnN0IHJ0Yzo6SVBBZGRyZXNzJiwgTmFtZVJlbW92ZWRDYWxs
YmFjaykKK3sKKyAgICAvLyBMaWJXZWJSVEMgYmFja2VuZCBkZWZpbmVzIHRoaXMgbWV0aG9kIGJ1
dCBkb2VzIG5vdCBjYWxsIGl0LgorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFVTRShMSUJXRUJSVEMpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDTmV0d29y
a01hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJX
ZWJSVENOZXR3b3JrTWFuYWdlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI4NmRhNjcyMjFiMDUzYWY5Y2EzYzQw
ZmIyNTZmYmU2NmE3OTExYTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDTmV0d29ya01hbmFnZXIuaApAQCAtMCwwICsx
LDcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBVU0UoTElCV0VCUlRDKQor
CisjaW5jbHVkZSAiV2ViUlRDTW9uaXRvci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnRJ
ZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9MaWJXZWJSVENQcm92aWRlci5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvUlRDTmV0d29ya01hbmFnZXIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK2NsYXNzIExpYldlYlJUQ05ldHdvcmtNYW5hZ2VyIGZpbmFsIDogcHVibGljIFdlYkNvcmU6
OlJUQ05ldHdvcmtNYW5hZ2VyLCBwdWJsaWMgcnRjOjpOZXR3b3JrTWFuYWdlckJhc2UsIHB1Ymxp
YyB3ZWJydGM6Ok1kbnNSZXNwb25kZXJJbnRlcmZhY2UsIHB1YmxpYyBXZWJSVENNb25pdG9yOjpP
YnNlcnZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgc3Rh
dGljIExpYldlYlJUQ05ldHdvcmtNYW5hZ2VyKiBnZXRPckNyZWF0ZShXZWJDb3JlOjpEb2N1bWVu
dElkZW50aWZpZXIpOworICAgIH5MaWJXZWJSVENOZXR3b3JrTWFuYWdlcigpOworCitwcml2YXRl
OgorICAgIGV4cGxpY2l0IExpYldlYlJUQ05ldHdvcmtNYW5hZ2VyKFdlYkNvcmU6OkRvY3VtZW50
SWRlbnRpZmllcik7CisKKyAgICAvLyBXZWJDb3JlOjpSVENOZXR3b3JrTWFuYWdlcgorICAgIHZv
aWQgc2V0SUNFQ2FuZGlkYXRlRmlsdGVyaW5nKGJvb2wgZG9GaWx0ZXJpbmcpIGZpbmFsIHsgbV91
c2VNRE5TQ2FuZGlkYXRlcyA9IGRvRmlsdGVyaW5nOyB9CisgICAgdm9pZCB1bnJlZ2lzdGVyTURO
U05hbWVzKCkgZmluYWw7CisKKyAgICAvLyB3ZWJydGM6Ok5ldHdvcmtNYW5hZ2VyQmFzZQorICAg
IHZvaWQgU3RhcnRVcGRhdGluZygpIGZpbmFsOworICAgIHZvaWQgU3RvcFVwZGF0aW5nKCkgZmlu
YWw7CisgICAgd2VicnRjOjpNZG5zUmVzcG9uZGVySW50ZXJmYWNlKiBHZXRNZG5zUmVzcG9uZGVy
KCkgY29uc3QgZmluYWw7CisKKyAgICAvLyB3ZWJydGM6Ok1kbnNSZXNwb25kZXJJbnRlcmZhY2UK
KyAgICB2b2lkIENyZWF0ZU5hbWVGb3JBZGRyZXNzKGNvbnN0IHJ0Yzo6SVBBZGRyZXNzJiwgTmFt
ZUNyZWF0ZWRDYWxsYmFjayk7CisgICAgdm9pZCBSZW1vdmVOYW1lRm9yQWRkcmVzcyhjb25zdCBy
dGM6OklQQWRkcmVzcyYsIE5hbWVSZW1vdmVkQ2FsbGJhY2spOworCisgICAgLy8gV2ViUlRDTW9u
aXRvcjo6T2JzZXJ2ZXIKKyAgICB2b2lkIG5ldHdvcmtzQ2hhbmdlZChjb25zdCBWZWN0b3I8UlRD
TmV0d29yaz4mLCBjb25zdCBSVENOZXR3b3JrOjpJUEFkZHJlc3MmLCBjb25zdCBSVENOZXR3b3Jr
OjpJUEFkZHJlc3MmKSBmaW5hbDsKKyAgICB2b2lkIG5ldHdvcmtQcm9jZXNzQ3Jhc2hlZCgpIGZp
bmFsOworCisgICAgV2ViQ29yZTo6RG9jdW1lbnRJZGVudGlmaWVyIG1fZG9jdW1lbnRJZGVudGlm
aWVyOworICAgIGJvb2wgbV91c2VNRE5TQ2FuZGlkYXRlcyB7IHRydWUgfTsKKyAgICBib29sIG1f
cmVjZWl2ZWROZXR3b3JrTGlzdCB7IGZhbHNlIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay93ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcAppbmRleCA5NjhjOWYzMDRiNjU0
ODA5Zjk5MjYyNTZjMTAwNTUwN2M5NzEyZjU1Li5mOWM0YTkwZDgyMWRhZjdhOGFiMzlhZmRkMzE2
NDIwNTg1MTYzYjc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay93ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHAKQEAgLTMzLDYgKzMzLDcg
QEAKICNlbmRpZgogCiAjaW5jbHVkZSAiTGliV2ViUlRDTmV0d29yay5oIgorI2luY2x1ZGUgIkxp
YldlYlJUQ05ldHdvcmtNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiUlRDRGF0YUNoYW5uZWxSZW1vdGVN
YW5hZ2VyLmgiCiAjaW5jbHVkZSAiV2ViUGFnZS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIK
QEAgLTU0LDcgKzU1LDcgQEAgcHJpdmF0ZToKICAgICB9CiB9OwogCi1ydGM6OnNjb3BlZF9yZWZw
dHI8d2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZT4gTGliV2ViUlRDUHJvdmlkZXI6OmNy
ZWF0ZVBlZXJDb25uZWN0aW9uKHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25PYnNlcnZlciYgb2JzZXJ2
ZXIsIHJ0Yzo6UGFja2V0U29ja2V0RmFjdG9yeSogc29ja2V0RmFjdG9yeSwgd2VicnRjOjpQZWVy
Q29ubmVjdGlvbkludGVyZmFjZTo6UlRDQ29uZmlndXJhdGlvbiYmIGNvbmZpZ3VyYXRpb24pCity
dGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZT4gTGliV2Vi
UlRDUHJvdmlkZXI6OmNyZWF0ZVBlZXJDb25uZWN0aW9uKERvY3VtZW50SWRlbnRpZmllciBpZGVu
dGlmaWVyLCB3ZWJydGM6OlBlZXJDb25uZWN0aW9uT2JzZXJ2ZXImIG9ic2VydmVyLCBydGM6OlBh
Y2tldFNvY2tldEZhY3RvcnkqIHNvY2tldEZhY3RvcnksIHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25J
bnRlcmZhY2U6OlJUQ0NvbmZpZ3VyYXRpb24mJiBjb25maWd1cmF0aW9uKQogewogI2lmIEVOQUJM
RShHUFVfUFJPQ0VTUykgJiYgUExBVEZPUk0oQ09DT0EpICYmICFQTEFURk9STShNQUNDQVRBTFlT
VCkKICAgICBpZiAoIW1fZGlkSW5pdGlhbGl6ZUNhbGxiYWNrKSB7CkBAIC02NywyMiArNjgsMTcg
QEAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U+IExp
YldlYlJUQ1Byb3ZpZGVyOjpjcmVhdGVQZWUKIAogICAgIGF1dG8mIG5ldHdvcmtNb25pdG9yID0g
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkubGliV2ViUlRDTmV0d29yaygpLm1vbml0b3IoKTsKICAg
ICBuZXR3b3JrTW9uaXRvci5zZXRFbnVtZXJhdGluZ0FsbE5ldHdvcmtJbnRlcmZhY2VzRW5hYmxl
ZChpc0VudW1lcmF0aW5nQWxsTmV0d29ya0ludGVyZmFjZXNFbmFibGVkKCkpOwotICAgIHJldHVy
biBXZWJDb3JlOjpMaWJXZWJSVENQcm92aWRlcjo6Y3JlYXRlUGVlckNvbm5lY3Rpb24ob2JzZXJ2
ZXIsIG5ldHdvcmtNb25pdG9yLCAqc29ja2V0RmFjdG9yeSwgV1RGTW92ZShjb25maWd1cmF0aW9u
KSwgbWFrZVVuaXF1ZTxBc3luY1Jlc29sdmVyRmFjdG9yeT4oKSk7Ci19CiAKLXZvaWQgTGliV2Vi
UlRDUHJvdmlkZXI6OmRpc2FibGVOb25Mb2NhbGhvc3RDb25uZWN0aW9ucygpCi17Ci0gICAgV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkubGliV2ViUlRDTmV0d29yaygpLmRpc2FibGVOb25Mb2NhbGhv
c3RDb25uZWN0aW9ucygpOwotfQorICAgIGF1dG8qIG5ldHdvcmtNYW5hZ2VyID0gTGliV2ViUlRD
TmV0d29ya01hbmFnZXI6OmdldE9yQ3JlYXRlKGlkZW50aWZpZXIpOworICAgIGlmICghbmV0d29y
a01hbmFnZXIpCisgICAgICAgIHJldHVybiBudWxscHRyOwogCi12b2lkIExpYldlYlJUQ1Byb3Zp
ZGVyOjp1bnJlZ2lzdGVyTUROU05hbWVzKERvY3VtZW50SWRlbnRpZmllciBkb2N1bWVudElkZW50
aWZpZXIpCi17Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkubGliV2ViUlRDTmV0d29yaygp
Lm1kbnNSZWdpc3RlcigpLnVucmVnaXN0ZXJNRE5TTmFtZXMoZG9jdW1lbnRJZGVudGlmaWVyKTsK
KyAgICByZXR1cm4gV2ViQ29yZTo6TGliV2ViUlRDUHJvdmlkZXI6OmNyZWF0ZVBlZXJDb25uZWN0
aW9uKG9ic2VydmVyLCAqbmV0d29ya01hbmFnZXIsICpzb2NrZXRGYWN0b3J5LCBXVEZNb3ZlKGNv
bmZpZ3VyYXRpb24pLCBtYWtlVW5pcXVlPEFzeW5jUmVzb2x2ZXJGYWN0b3J5PigpKTsKIH0KIAot
dm9pZCBMaWJXZWJSVENQcm92aWRlcjo6cmVnaXN0ZXJNRE5TTmFtZShEb2N1bWVudElkZW50aWZp
ZXIgZG9jdW1lbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGlwQWRkcmVzcywgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChNRE5TTmFtZU9yRXJyb3ImJik+JiYgY2FsbGJhY2spCit2b2lkIExpYldl
YlJUQ1Byb3ZpZGVyOjpkaXNhYmxlTm9uTG9jYWxob3N0Q29ubmVjdGlvbnMoKQogewotICAgIFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLmxpYldlYlJUQ05ldHdvcmsoKS5tZG5zUmVnaXN0ZXIoKS5y
ZWdpc3Rlck1ETlNOYW1lKGRvY3VtZW50SWRlbnRpZmllciwgaXBBZGRyZXNzLCBXVEZNb3ZlKGNh
bGxiYWNrKSk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkubGliV2ViUlRDTmV0d29yaygp
LmRpc2FibGVOb25Mb2NhbGhvc3RDb25uZWN0aW9ucygpOwogfQogCiBjbGFzcyBSVENTb2NrZXRG
YWN0b3J5IGZpbmFsIDogcHVibGljIExpYldlYlJUQ1Byb3ZpZGVyOjpTdXNwZW5kYWJsZVNvY2tl
dEZhY3RvcnkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
d2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay93ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuaAppbmRleCA3MmFkM2E0MjlmZWZiZmExZDRj
YWVmNWMyYmY3Yzk1NzMwMWUxMjAxLi43OTUxN2MwODg5M2UxZjZiNTA1ZTcyOWU2NGUxOWQwMGM5
OTAxYjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJy
dGMvTGliV2ViUlRDUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay93ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuaApAQCAtNTQsMTAgKzU0LDggQEAgcHVibGlj
OgogcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U3VzcGVuZGFibGVTb2NrZXRGYWN0b3J5
PiBjcmVhdGVTb2NrZXRGYWN0b3J5KFN0cmluZyYmIC8qIHVzZXJBZ2VudCAqLywgYm9vbCAvKiBp
c0ZpcnN0UGFydHkgKi8sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYpIGZpbmFsOwogCi0g
ICAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U+IGNy
ZWF0ZVBlZXJDb25uZWN0aW9uKHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25PYnNlcnZlciYsIHJ0Yzo6
UGFja2V0U29ja2V0RmFjdG9yeSosIHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OlJU
Q0NvbmZpZ3VyYXRpb24mJikgZmluYWw7CisgICAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6
UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U+IGNyZWF0ZVBlZXJDb25uZWN0aW9uKFdlYkNvcmU6OkRv
Y3VtZW50SWRlbnRpZmllciwgd2VicnRjOjpQZWVyQ29ubmVjdGlvbk9ic2VydmVyJiwgcnRjOjpQ
YWNrZXRTb2NrZXRGYWN0b3J5Kiwgd2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6UlRD
Q29uZmlndXJhdGlvbiYmKSBmaW5hbDsKIAotICAgIHZvaWQgdW5yZWdpc3Rlck1ETlNOYW1lcyhX
ZWJDb3JlOjpEb2N1bWVudElkZW50aWZpZXIpIGZpbmFsOwotICAgIHZvaWQgcmVnaXN0ZXJNRE5T
TmFtZShXZWJDb3JlOjpEb2N1bWVudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgaXBBZGRyZXNz
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE1ETlNOYW1lT3JFcnJvciYmKT4mJikgZmluYWw7CiAg
ICAgdm9pZCBkaXNhYmxlTm9uTG9jYWxob3N0Q29ubmVjdGlvbnMoKSBmaW5hbDsKICAgICB2b2lk
IHN0YXJ0ZWROZXR3b3JrVGhyZWFkKCkgZmluYWw7CiAgICAgUmVmUHRyPFdlYkNvcmU6OlJUQ0Rh
dGFDaGFubmVsUmVtb3RlSGFuZGxlckNvbm5lY3Rpb24+IGNyZWF0ZVJUQ0RhdGFDaGFubmVsUmVt
b3RlSGFuZGxlckNvbm5lY3Rpb24oKSBmaW5hbDsKQEAgLTczLDYgKzcxLDcgQEAgaW5saW5lIExp
YldlYlJUQ1Byb3ZpZGVyOjpMaWJXZWJSVENQcm92aWRlcihXZWJQYWdlJiB3ZWJQYWdlKQogICAg
IDogbV93ZWJQYWdlKHdlYlBhZ2UpCiB7CiAgICAgbV91c2VOZXR3b3JrVGhyZWFkV2l0aFNvY2tl
dFNlcnZlciA9IGZhbHNlOworICAgIG1fc3VwcG9ydHNNRE5TID0gdHJ1ZTsKIH0KIAogaW5saW5l
IFVuaXF1ZVJlZjxMaWJXZWJSVENQcm92aWRlcj4gY3JlYXRlTGliV2ViUlRDUHJvdmlkZXIoV2Vi
UGFnZSYgcGFnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L3dlYnJ0Yy9XZWJNRE5TUmVnaXN0ZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvd2VicnRjL1dlYk1ETlNSZWdpc3Rlci5jcHAKaW5kZXggNTE1OTBmOWFjY2U2MjQ0MDY4
YjE0N2NlNmE5YzdjMTgyNTc1Nzc2MS4uNzYwMjA3ZWE1OWJjYTI1NDUyMmY1NmM1OWE1MjQ1ZTU5
NWE4ZGUyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2Vi
cnRjL1dlYk1ETlNSZWdpc3Rlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvd2VicnRjL1dlYk1ETlNSZWdpc3Rlci5jcHAKQEAgLTM2LDIyICszNiwyMiBAQAogbmFt
ZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotdm9pZCBXZWJNRE5T
UmVnaXN0ZXI6OmZpbmlzaGVkUmVnaXN0ZXJpbmdNRE5TTmFtZShNRE5TUmVnaXN0ZXJJZGVudGlm
aWVyIGlkZW50aWZpZXIsIExpYldlYlJUQ1Byb3ZpZGVyOjpNRE5TTmFtZU9yRXJyb3ImJiByZXN1
bHQpCit2b2lkIFdlYk1ETlNSZWdpc3Rlcjo6ZmluaXNoZWRSZWdpc3RlcmluZ01ETlNOYW1lKE1E
TlNSZWdpc3RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgU3RyaW5nJiYgbmFtZSwgc3RkOjpvcHRp
b25hbDxNRE5TUmVnaXN0ZXJFcnJvcj4gZXJyb3IpCiB7CiAgICAgYXV0byBwZW5kaW5nUmVnaXN0
cmF0aW9uID0gbV9wZW5kaW5nUmVnaXN0cmF0aW9ucy50YWtlKGlkZW50aWZpZXIpOwogICAgIGlm
ICghcGVuZGluZ1JlZ2lzdHJhdGlvbi5jYWxsYmFjaykKICAgICAgICAgcmV0dXJuOwogCi0gICAg
aWYgKHJlc3VsdC5oYXNfdmFsdWUoKSkgeworICAgIGlmICghZXJyb3IpIHsKICAgICAgICAgYXV0
byBpdGVyYXRvciA9IG1fcmVnaXN0ZXJpbmdEb2N1bWVudHMuZmluZChwZW5kaW5nUmVnaXN0cmF0
aW9uLmRvY3VtZW50SWRlbnRpZmllcik7CiAgICAgICAgIGlmIChpdGVyYXRvciA9PSBtX3JlZ2lz
dGVyaW5nRG9jdW1lbnRzLmVuZCgpKSB7Ci0gICAgICAgICAgICBwZW5kaW5nUmVnaXN0cmF0aW9u
LmNhbGxiYWNrKG1ha2VVbmV4cGVjdGVkKFdlYkNvcmU6Ok1ETlNSZWdpc3RlckVycm9yOjpETlNT
RCkpOworICAgICAgICAgICAgcGVuZGluZ1JlZ2lzdHJhdGlvbi5jYWxsYmFjayhuYW1lLCBXZWJD
b3JlOjpNRE5TUmVnaXN0ZXJFcnJvcjo6RE5TU0QpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9Ci0gICAgICAgIGl0ZXJhdG9yLT52YWx1ZS5hZGQocGVuZGluZ1JlZ2lzdHJhdGlvbi5p
cEFkZHJlc3MsIHJlc3VsdC52YWx1ZSgpKTsKKyAgICAgICAgaXRlcmF0b3ItPnZhbHVlLmFkZChw
ZW5kaW5nUmVnaXN0cmF0aW9uLmlwQWRkcmVzcywgbmFtZSk7CiAgICAgfQogCi0gICAgcGVuZGlu
Z1JlZ2lzdHJhdGlvbi5jYWxsYmFjayhXVEZNb3ZlKHJlc3VsdCkpOworICAgIHBlbmRpbmdSZWdp
c3RyYXRpb24uY2FsbGJhY2sobmFtZSwgZXJyb3IpOwogfQogCiB2b2lkIFdlYk1ETlNSZWdpc3Rl
cjo6dW5yZWdpc3Rlck1ETlNOYW1lcyhEb2N1bWVudElkZW50aWZpZXIgaWRlbnRpZmllcikKQEAg
LTYzLDcgKzYzLDcgQEAgdm9pZCBXZWJNRE5TUmVnaXN0ZXI6OnVucmVnaXN0ZXJNRE5TTmFtZXMo
RG9jdW1lbnRJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgY29ubmVjdGlvbi5zZW5kKE1lc3Nh
Z2VzOjpOZXR3b3JrTUROU1JlZ2lzdGVyOjpVbnJlZ2lzdGVyTUROU05hbWVzIHsgaWRlbnRpZmll
ciB9LCAwKTsKIH0KIAotdm9pZCBXZWJNRE5TUmVnaXN0ZXI6OnJlZ2lzdGVyTUROU05hbWUoRG9j
dW1lbnRJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgaXBBZGRyZXNzLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKExpYldlYlJUQ1Byb3ZpZGVyOjpNRE5TTmFtZU9yRXJyb3ImJik+
JiYgY2FsbGJhY2spCit2b2lkIFdlYk1ETlNSZWdpc3Rlcjo6cmVnaXN0ZXJNRE5TTmFtZShEb2N1
bWVudElkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBpcEFkZHJlc3MsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJiwgc3RkOjpvcHRpb25hbDxNRE5TUmVnaXN0
ZXJFcnJvcj4pPiYmIGNhbGxiYWNrKQogewogICAgIGF1dG8mIG1hcCA9IG1fcmVnaXN0ZXJpbmdE
b2N1bWVudHMuZW5zdXJlKGlkZW50aWZpZXIsIFtdIHsKICAgICAgICAgcmV0dXJuIEhhc2hNYXA8
U3RyaW5nLCBTdHJpbmc+IHsgfTsKQEAgLTcxLDE2ICs3MSwxNyBAQCB2b2lkIFdlYk1ETlNSZWdp
c3Rlcjo6cmVnaXN0ZXJNRE5TTmFtZShEb2N1bWVudElkZW50aWZpZXIgaWRlbnRpZmllciwgY29u
c3QgU3RyaQogCiAgICAgYXV0byBpdGVyYXRvciA9IG1hcC5maW5kKGlwQWRkcmVzcyk7CiAgICAg
aWYgKGl0ZXJhdG9yICE9IG1hcC5lbmQoKSkgewotICAgICAgICBjYWxsYmFjayhpdGVyYXRvci0+
dmFsdWUpOworICAgICAgICBjYWxsYmFjayhpdGVyYXRvci0+dmFsdWUsIHsgfSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKICAgICBhdXRvIHJlcXVlc3RJZGVudGlmaWVyID0gTUROU1JlZ2lz
dGVySWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKICAgICBtX3BlbmRpbmdSZWdpc3RyYXRpb25zLmFk
ZChyZXF1ZXN0SWRlbnRpZmllciwgUGVuZGluZ1JlZ2lzdHJhdGlvbiB7IFdURk1vdmUoY2FsbGJh
Y2spLCBpZGVudGlmaWVyLCBpcEFkZHJlc3MgfSk7CiAKKyAgICAvLyBGSVhNRTogVXNlIGFzeW5j
IHJlcGx5LgogICAgIGF1dG8mIGNvbm5lY3Rpb24gPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5l
bnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCk7CiAgICAgaWYgKCFj
b25uZWN0aW9uLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtNRE5TUmVnaXN0ZXI6OlJlZ2lzdGVyTURO
U05hbWUgeyByZXF1ZXN0SWRlbnRpZmllciwgaWRlbnRpZmllciwgaXBBZGRyZXNzIH0sIDApKQot
ICAgICAgICBmaW5pc2hlZFJlZ2lzdGVyaW5nTUROU05hbWUocmVxdWVzdElkZW50aWZpZXIsIG1h
a2VVbmV4cGVjdGVkKE1ETlNSZWdpc3RlckVycm9yOjpJbnRlcm5hbCkpOworICAgICAgICBmaW5p
c2hlZFJlZ2lzdGVyaW5nTUROU05hbWUocmVxdWVzdElkZW50aWZpZXIsIHsgfSwgTUROU1JlZ2lz
dGVyRXJyb3I6OkludGVybmFsKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvV2ViTUROU1JlZ2lz
dGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvV2ViTUROU1Jl
Z2lzdGVyLmgKaW5kZXggMGMwZjYxMzNhZjQ2OGM5ZWJiOGM2N2EyYWU0ZThjOWE3MzNlZTZhZC4u
MmMwZmYwZTQ2NjUxMWY5NzhmYjgwOTI3MjBhZjA3M2RiZjUzOGZiZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1dlYk1ETlNSZWdpc3Rlci5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJNRE5TUmVnaXN0
ZXIuaApAQCAtNDYsMTUgKzQ2LDE1IEBAIHB1YmxpYzoKICAgICBXZWJNRE5TUmVnaXN0ZXIoKSA9
IGRlZmF1bHQ7CiAKICAgICB2b2lkIHVucmVnaXN0ZXJNRE5TTmFtZXMoV2ViQ29yZTo6RG9jdW1l
bnRJZGVudGlmaWVyKTsKLSAgICB2b2lkIHJlZ2lzdGVyTUROU05hbWUoV2ViQ29yZTo6RG9jdW1l
bnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGlwQWRkcmVzcywgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChXZWJDb3JlOjpMaWJXZWJSVENQcm92aWRlcjo6TUROU05hbWVPckVycm9yJiYpPiYmKTsK
KyAgICB2b2lkIHJlZ2lzdGVyTUROU05hbWUoV2ViQ29yZTo6RG9jdW1lbnRJZGVudGlmaWVyLCBj
b25zdCBTdHJpbmcmIGlwQWRkcmVzcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJp
bmcmLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Ok1ETlNSZWdpc3RlckVycm9yPik+JiYpOwogCiAg
ICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXIm
KTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIGZpbmlzaGVkUmVnaXN0ZXJpbmdNRE5TTmFtZShNRE5T
UmVnaXN0ZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpMaWJXZWJSVENQcm92aWRlcjo6TUROU05hbWVP
ckVycm9yJiYpOworICAgIHZvaWQgZmluaXNoZWRSZWdpc3RlcmluZ01ETlNOYW1lKE1ETlNSZWdp
c3RlcklkZW50aWZpZXIsIFN0cmluZyYmLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Ok1ETlNSZWdp
c3RlckVycm9yPik7CiAKICAgICBzdHJ1Y3QgUGVuZGluZ1JlZ2lzdHJhdGlvbiB7Ci0gICAgICAg
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6TGliV2ViUlRDUHJvdmlkZXI6Ok1ETlNO
YW1lT3JFcnJvciYmKT4gY2FsbGJhY2s7CisgICAgICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgU3RyaW5nJiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpNRE5TUmVnaXN0ZXJFcnJvcj4p
PiBjYWxsYmFjazsKICAgICAgICAgV2ViQ29yZTo6RG9jdW1lbnRJZGVudGlmaWVyIGRvY3VtZW50
SWRlbnRpZmllcjsKICAgICAgICAgU3RyaW5nIGlwQWRkcmVzczsKICAgICB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1dlYk1ETlNSZWdpc3Rl
ci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9X
ZWJNRE5TUmVnaXN0ZXIubWVzc2FnZXMuaW4KaW5kZXggYWIxMmExZTAxOTI2ZDZhZmNiNGMyNDc4
ZWQ1M2Y1YzM2MmE4OGI5Yi4uZjFlYTVjNzMwNmQyYTBjNmRlOWYxYjgxMjA3NjNlOWZkOTMxZGE1
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1dl
Yk1ETlNSZWdpc3Rlci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay93ZWJydGMvV2ViTUROU1JlZ2lzdGVyLm1lc3NhZ2VzLmluCkBAIC0xLDQgKzEsNCBA
QAotIyBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
IyBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDcgKzIzLDcgQEAKICNpZiBFTkFC
TEUoV0VCX1JUQykKIAogbWVzc2FnZXMgLT4gV2ViTUROU1JlZ2lzdGVyIE5vdFJlZkNvdW50ZWQg
ewotICAgIHZvaWQgRmluaXNoZWRSZWdpc3RlcmluZ01ETlNOYW1lKFdlYktpdDo6TUROU1JlZ2lz
dGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJDb3JlOjpMaWJXZWJSVENQcm92aWRlcjo6TURO
U05hbWVPckVycm9yIHJlc3VsdCkKKyAgICB2b2lkIEZpbmlzaGVkUmVnaXN0ZXJpbmdNRE5TTmFt
ZShXZWJLaXQ6Ok1ETlNSZWdpc3RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgU3RyaW5nIG1kbnNO
YW1lLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Ok1ETlNSZWdpc3RlckVycm9yPiBlcnJvcikKIH0K
IAogI2VuZGlmIC8vIEVOQUJMRShXRUJfUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1dlYlJUQ01vbml0b3IuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1dlYlJUQ01vbml0b3IuY3BwCmluZGV4IDBmOWRh
ZDJkMWQyOWQwYjMwNzlkMzg3MWI3ZTE0NTQxNTI5MDQ5MzYuLmQwY2I5OGJlODgwYmI2MTNmZGEy
MzE1MDJlNjcwMmMwNGFmMjAyMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL3dlYnJ0Yy9XZWJSVENNb25pdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay93ZWJydGMvV2ViUlRDTW9uaXRvci5jcHAKQEAgLTMzLDggKzMzLDYg
QEAKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJOZXR3
b3JrUlRDTW9uaXRvck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgotI2luY2x1
ZGUgPFdlYkNvcmUvTGliV2ViUlRDTWFjcm9zLmg+Ci0jaW5jbHVkZSA8d2VicnRjL3J0Y19iYXNl
L25ldF9oZWxwZXJzLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KIAogbmFtZXNwYWNl
IFdlYktpdCB7CkBAIC01Myw2NyArNTEsNDMgQEAgdm9pZCBXZWJSVENNb25pdG9yOjpzZXRFbnVt
ZXJhdGluZ0FsbE5ldHdvcmtJbnRlcmZhY2VzRW5hYmxlZChib29sIGVuYWJsZWQpCiAgICAgbV9l
bmFibGVFbnVtZXJhdGluZ0FsbE5ldHdvcmtJbnRlcmZhY2VzID0gZW5hYmxlZDsKIH0KIAotdm9p
ZCBXZWJSVENNb25pdG9yOjpTdGFydFVwZGF0aW5nKCkKK3ZvaWQgV2ViUlRDTW9uaXRvcjo6c3Rh
cnRVcGRhdGluZygpCiB7Ci0gICAgV0VCUlRDX1JFTEVBU0VfTE9HKCJTdGFydFVwZGF0aW5nIik7
Ci0gICAgaWYgKG1fcmVjZWl2ZWROZXR3b3JrTGlzdCkgewotICAgICAgICBXZWJDb3JlOjpMaWJX
ZWJSVENQcm92aWRlcjo6Y2FsbE9uV2ViUlRDTmV0d29ya1RocmVhZChbdGhpc10gewotICAgICAg
ICAgICAgU2lnbmFsTmV0d29ya3NDaGFuZ2VkKCk7Ci0gICAgICAgIH0pOwotICAgIH0KLQotICAg
IHNlbmRPbk1haW5UaHJlYWQoW3RoaXNdKGF1dG8mIGNvbm5lY3Rpb24pIHsKLSAgICAgICAgV0VC
UlRDX1JFTEVBU0VfTE9HKCJTdGFydFVwZGF0aW5nIC0gQXNraW5nIG5ldHdvcmsgcHJvY2VzcyB0
byBzdGFydCB1cGRhdGluZyIpOwotICAgICAgICBjb25uZWN0aW9uLnNlbmQoTWVzc2FnZXM6Ok5l
dHdvcmtSVENNb25pdG9yOjpTdGFydFVwZGF0aW5nSWZOZWVkZWQobV9lbmFibGVFbnVtZXJhdGlu
Z0FsbE5ldHdvcmtJbnRlcmZhY2VzKSwgMCk7Ci0gICAgfSk7CisgICAgV0VCUlRDX1JFTEVBU0Vf
TE9HKCJTdGFydFVwZGF0aW5nIC0gQXNraW5nIG5ldHdvcmsgcHJvY2VzcyB0byBzdGFydCB1cGRh
dGluZyIpOworCisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtSVENNb25p
dG9yOjpTdGFydFVwZGF0aW5nSWZOZWVkZWQobV9lbmFibGVFbnVtZXJhdGluZ0FsbE5ldHdvcmtJ
bnRlcmZhY2VzKSwgMCk7CiAgICAgKyttX2NsaWVudENvdW50OwogfQogCi12b2lkIFdlYlJUQ01v
bml0b3I6OlN0b3BVcGRhdGluZygpCit2b2lkIFdlYlJUQ01vbml0b3I6OnN0b3BVcGRhdGluZygp
CiB7CiAgICAgV0VCUlRDX1JFTEVBU0VfTE9HKCJTdG9wVXBkYXRpbmciKTsKKwogICAgIEFTU0VS
VChtX2NsaWVudENvdW50KTsKICAgICBpZiAoLS1tX2NsaWVudENvdW50KQogICAgICAgICByZXR1
cm47CiAKLSAgICBzZW5kT25NYWluVGhyZWFkKFt0aGlzXShhdXRvJiBjb25uZWN0aW9uKSB7Ci0g
ICAgICAgIFdFQlJUQ19SRUxFQVNFX0xPRygiU3RvcFVwZGF0aW5nIC0gQXNraW5nIG5ldHdvcmsg
cHJvY2VzcyB0byBzdG9wIHVwZGF0aW5nIik7Ci0gICAgICAgIGNvbm5lY3Rpb24uc2VuZChNZXNz
YWdlczo6TmV0d29ya1JUQ01vbml0b3I6OlN0b3BVcGRhdGluZygpLCAwKTsKLSAgICB9KTsKKyAg
ICBXRUJSVENfUkVMRUFTRV9MT0coIlN0b3BVcGRhdGluZyAtIEFza2luZyBuZXR3b3JrIHByb2Nl
c3MgdG8gc3RvcCB1cGRhdGluZyIpOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3Vy
ZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpO
ZXR3b3JrUlRDTW9uaXRvcjo6U3RvcFVwZGF0aW5nKCksIDApOwogfQogCi12b2lkIFdlYlJUQ01v
bml0b3I6Om5ldHdvcmtzQ2hhbmdlZChjb25zdCBWZWN0b3I8UlRDTmV0d29yaz4mIG5ldHdvcmtz
LCBjb25zdCBSVENOZXR3b3JrOjpJUEFkZHJlc3MmIGlwdjQsIGNvbnN0IFJUQ05ldHdvcms6OklQ
QWRkcmVzcyYgaXB2NikKK3ZvaWQgV2ViUlRDTW9uaXRvcjo6bmV0d29ya3NDaGFuZ2VkKFZlY3Rv
cjxSVENOZXR3b3JrPiYmIG5ldHdvcmtMaXN0LCBSVENOZXR3b3JrOjpJUEFkZHJlc3MmJiBpcHY0
LCBSVENOZXR3b3JrOjpJUEFkZHJlc3MmJiBpcHY2KQogewogICAgIFdFQlJUQ19SRUxFQVNFX0xP
RygibmV0d29ya3NDaGFuZ2VkIik7Ci0gICAgLy8gTm8gbmVlZCB0byBwcm90ZWN0ICd0aGlzJyBh
cyBpdCBoYXMgdGhlIGxpZmV0aW1lIG9mIExpYldlYlJUQyB3aGljaCBoYXMgdGhlIGxpZmV0aW1l
IG9mIHRoZSB3ZWIgcHJvY2Vzcy4KLSAgICBXZWJDb3JlOjpMaWJXZWJSVENQcm92aWRlcjo6Y2Fs
bE9uV2ViUlRDTmV0d29ya1RocmVhZChbdGhpcywgbmV0d29ya3MsIGlwdjQsIGlwdjZdIHsKLSAg
ICAgICAgV0VCUlRDX1JFTEVBU0VfTE9HKCJuZXR3b3Jrc0NoYW5nZWQgLSBTaWduYWxpbmciKTsK
LSAgICAgICAgc3RkOjp2ZWN0b3I8cnRjOjpOZXR3b3JrKj4gbmV0d29ya0xpc3QobmV0d29ya3Mu
c2l6ZSgpKTsKLSAgICAgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG5ldHdvcmtz
LnNpemUoKTsgKytpbmRleCkKLSAgICAgICAgICAgIG5ldHdvcmtMaXN0W2luZGV4XSA9IG5ldyBy
dGM6Ok5ldHdvcmsobmV0d29ya3NbaW5kZXhdLnZhbHVlKCkpOwotCi0gICAgICAgIGJvb2wgZm9y
Y2VTaWduYWxpbmcgPSAhbV9yZWNlaXZlZE5ldHdvcmtMaXN0OwotICAgICAgICBtX3JlY2VpdmVk
TmV0d29ya0xpc3QgPSB0cnVlOwotCi0gICAgICAgIGJvb2wgaGFzQ2hhbmdlZDsKLSAgICAgICAg
c2V0X2RlZmF1bHRfbG9jYWxfYWRkcmVzc2VzKGlwdjQudmFsdWUsIGlwdjYudmFsdWUpOwotICAg
ICAgICBNZXJnZU5ldHdvcmtMaXN0KG5ldHdvcmtMaXN0LCAmaGFzQ2hhbmdlZCk7Ci0gICAgICAg
IGlmIChoYXNDaGFuZ2VkIHx8IGZvcmNlU2lnbmFsaW5nKQotICAgICAgICAgICAgU2lnbmFsTmV0
d29ya3NDaGFuZ2VkKCk7CiAKLSAgICB9KTsKKyAgICBtX2RpZFJlY2VpdmVOZXR3b3JrTGlzdCA9
IHRydWU7CisgICAgbV9uZXR3b3JrTGlzdCA9IFdURk1vdmUobmV0d29ya0xpc3QpOworICAgIG1f
aXB2NCA9IFdURk1vdmUoaXB2NCk7CisgICAgbV9pcHY2ID0gV1RGTW92ZShpcHY2KTsKKworICAg
IGZvciAoYXV0byYgb2JzZXJ2ZXIgOiBtX29ic2VydmVycykKKyAgICAgICAgb2JzZXJ2ZXIubmV0
d29ya3NDaGFuZ2VkKG1fbmV0d29ya0xpc3QsIG1faXB2NCwgbV9pcHY2KTsKIH0KIAogdm9pZCBX
ZWJSVENNb25pdG9yOjpuZXR3b3JrUHJvY2Vzc0NyYXNoZWQoKQogewotICAgIG1fcmVjZWl2ZWRO
ZXR3b3JrTGlzdCA9IGZhbHNlOwotICAgIGlmICghV2ViQ29yZTo6TGliV2ViUlRDUHJvdmlkZXI6
Omhhc1dlYlJUQ1RocmVhZHMoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gSW4gY2FzZSB3
ZSBoYXZlIGNsaWVudHMgd2FpdGluZyBmb3IgbmV0d29ya3NDaGFuZ2VkLCB3ZSBjYWxsIFNpZ25h
bE5ldHdvcmtzQ2hhbmdlZCB0byBtYWtlIHN1cmUgdGhleSBkbyBub3Qgd2FpdCBmb3Igbm90aGlu
Zy4gICAgCi0gICAgV2ViQ29yZTo6TGliV2ViUlRDUHJvdmlkZXI6OmNhbGxPbldlYlJUQ05ldHdv
cmtUaHJlYWQoW3RoaXNdIHsKLSAgICAgICAgU2lnbmFsTmV0d29ya3NDaGFuZ2VkKCk7Ci0gICAg
fSk7CisgICAgZm9yIChhdXRvJiBvYnNlcnZlciA6IG1fb2JzZXJ2ZXJzKQorICAgICAgICBvYnNl
cnZlci5uZXR3b3JrUHJvY2Vzc0NyYXNoZWQoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvV2Vi
UlRDTW9uaXRvci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1dl
YlJUQ01vbml0b3IuaAppbmRleCBmNmI5NzM5ZmFkZGMzODJjZDQyMmU1YmFhOGVhMjg1NmU1ZjRm
YjBmLi4wNjg1OTBlNTMyNjQxYTFmZGEzNTdhYWMxMmFkMjMyNGIyMDQ0MjQ0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvV2ViUlRDTW9uaXRvci5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJSVENNb25p
dG9yLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJSVENOZXR3b3JrLmgiCiAjaW5jbHVk
ZSA8V2ViQ29yZS9MaWJXZWJSVENQcm92aWRlci5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+
CisjaW5jbHVkZSA8d3RmL1dlYWtIYXNoU2V0Lmg+CiAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3Mg
Q29ubmVjdGlvbjsKQEAgLTQwLDI2ICs0MSw0MiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3Ry
dWN0IE5ldHdvcmtzQ2hhbmdlZERhdGE7CiAKLWNsYXNzIFdlYlJUQ01vbml0b3IgZmluYWwgOiBw
dWJsaWMgcnRjOjpOZXR3b3JrTWFuYWdlckJhc2UgeworY2xhc3MgV2ViUlRDTW9uaXRvciB7CiBw
dWJsaWM6CiAgICAgV2ViUlRDTW9uaXRvcigpID0gZGVmYXVsdDsKIAorICAgIGNsYXNzIE9ic2Vy
dmVyIDogcHVibGljIENhbk1ha2VXZWFrUHRyPE9ic2VydmVyPiB7CisgICAgcHVibGljOgorICAg
ICAgICB2aXJ0dWFsIH5PYnNlcnZlcigpID0gZGVmYXVsdDsKKyAgICAgICAgdmlydHVhbCB2b2lk
IG5ldHdvcmtzQ2hhbmdlZChjb25zdCBWZWN0b3I8UlRDTmV0d29yaz4mLCBjb25zdCBSVENOZXR3
b3JrOjpJUEFkZHJlc3MmLCBjb25zdCBSVENOZXR3b3JrOjpJUEFkZHJlc3MmKSA9IDA7CisgICAg
ICAgIHZpcnR1YWwgdm9pZCBuZXR3b3JrUHJvY2Vzc0NyYXNoZWQoKSA9IDA7CisgICAgfTsKKyAg
ICB2b2lkIGFkZE9ic2VydmVyKE9ic2VydmVyJiBvYnNlcnZlcikgeyBtX29ic2VydmVycy5hZGQo
b2JzZXJ2ZXIpOyB9CisgICAgdm9pZCByZW1vdmVPYnNlcnZlcihPYnNlcnZlciYgb2JzZXJ2ZXIp
IHsgbV9vYnNlcnZlcnMucmVtb3ZlKG9ic2VydmVyKTsgfQorICAgIHZvaWQgc3RhcnRVcGRhdGlu
ZygpOworICAgIHZvaWQgc3RvcFVwZGF0aW5nKCk7CisKICAgICB2b2lkIG5ldHdvcmtQcm9jZXNz
Q3Jhc2hlZCgpOwogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwg
SVBDOjpEZWNvZGVyJik7CiAgICAgdm9pZCBzZXRFbnVtZXJhdGluZ0FsbE5ldHdvcmtJbnRlcmZh
Y2VzRW5hYmxlZChib29sKTsKIAotcHJpdmF0ZToKLSAgICB2b2lkIG5ldHdvcmtzQ2hhbmdlZChj
b25zdCBWZWN0b3I8UlRDTmV0d29yaz4mIG5ldHdvcmtMaXN0LCBjb25zdCBSVENOZXR3b3JrOjpJ
UEFkZHJlc3MmLCBjb25zdCBSVENOZXR3b3JrOjpJUEFkZHJlc3MmKTsKKyAgICBib29sIGRpZFJl
Y2VpdmVOZXR3b3JrTGlzdCgpIGNvbnN0IHsgcmV0dXJuIG1fZGlkUmVjZWl2ZU5ldHdvcmtMaXN0
OyB9CisgICAgY29uc3QgVmVjdG9yPFJUQ05ldHdvcms+JiBuZXR3b3JrTGlzdCgpIGNvbnN0IHsg
cmV0dXJuIG1fbmV0d29ya0xpc3Q7IH0KKyAgICBjb25zdCBSVENOZXR3b3JrOjpJUEFkZHJlc3Mm
IGlwdjQoKSBjb25zdCB7IHJldHVybiBtX2lwdjQ7IH0KKyAgICBjb25zdCBSVENOZXR3b3JrOjpJ
UEFkZHJlc3MmIGlwdjYoKSBjb25zdCB7IHJldHVybiBtX2lwdjY7IH0KIAotICAgIHZvaWQgU3Rh
cnRVcGRhdGluZygpIGZpbmFsOwotICAgIHZvaWQgU3RvcFVwZGF0aW5nKCkgZmluYWw7Ci0gICAg
d2VicnRjOjpNZG5zUmVzcG9uZGVySW50ZXJmYWNlKiBHZXRNZG5zUmVzcG9uZGVyKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gbnVsbHB0cjsgfQorcHJpdmF0ZToKKyAgICB2b2lkIG5ldHdvcmtzQ2hh
bmdlZChWZWN0b3I8UlRDTmV0d29yaz4mJiwgUlRDTmV0d29yazo6SVBBZGRyZXNzJiYsIFJUQ05l
dHdvcms6OklQQWRkcmVzcyYmKTsKIAogICAgIHN0YXRpYyB2b2lkIHNlbmRPbk1haW5UaHJlYWQo
RnVuY3Rpb248dm9pZChJUEM6OkNvbm5lY3Rpb24mKT4mJik7CiAKICAgICB1bnNpZ25lZCBtX2Ns
aWVudENvdW50IHsgMCB9OwotICAgIGJvb2wgbV9yZWNlaXZlZE5ldHdvcmtMaXN0IHsgZmFsc2Ug
fTsKKyAgICBXZWFrSGFzaFNldDxPYnNlcnZlcj4gbV9vYnNlcnZlcnM7CiAgICAgYm9vbCBtX2Vu
YWJsZUVudW1lcmF0aW5nQWxsTmV0d29ya0ludGVyZmFjZXMgeyBmYWxzZSB9OworICAgIGJvb2wg
bV9kaWRSZWNlaXZlTmV0d29ya0xpc3QgeyBmYWxzZSB9OworICAgIFZlY3RvcjxSVENOZXR3b3Jr
PiBtX25ldHdvcmtMaXN0OworICAgIFJUQ05ldHdvcms6OklQQWRkcmVzcyBtX2lwdjQ7CisgICAg
UlRDTmV0d29yazo6SVBBZGRyZXNzIG1faXB2NjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCmluZGV4IGNmZmU5MWM4MDhkZTZkZDk0NmY2NDhhZGFmMjZkMDUyNTFjZTE5YzUuLjEyMWIw
YmYyMWFlZmYxMjM2OWUwYTQ1ZWE0YWY2NTExMmIwMTU3YTUgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBA
QAorMjAyMS0wOS0wMyAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAg
ICAgSW1wbGVtZW50IGxpYndlYnJ0YyBuZXR3b3JrIG1hbmFnZXIgR2V0TWRuc1Jlc3BvbmRlcgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5NzU3CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgorCisgICAgICAgIFVwZGF0ZSB0ZXN0
cyBnaXZlbiBtRE5TIElDRSBjYW5kaWRhdGVzIGFyZSBub3cgc2hvd2luZyB1cCBpbiBkZXNjcmlw
dGlvbnMuCisgICAgICAgIE1ha2Ugc3VyZSB0byBjb25zaWRlciBtRE5TIGNhbmRpZGF0ZXMgYXMg
aWYgdGhleSBhcmUgZmlsdGVyZWQuCisKKyAgICAgICAgKiBodHRwL3dwdC93ZWJydGMvcmVzb3Vy
Y2VzL3RoaXJkLXBhcnR5LWZyYW1lLWljZS1jYW5kaWRhdGUtZmlsdGVyaW5nLWlmcmFtZS5odG1s
OgorICAgICAgICAqIHdlYnJ0Yy9kYXRhY2hhbm5lbC9maWx0ZXItaWNlLWNhbmRpZGF0ZS5odG1s
OgorICAgICAgICAqIHdlYnJ0Yy9maWx0ZXJpbmctaWNlLWNhbmRpZGF0ZS1hZnRlci1yZWxvYWQu
aHRtbDoKKwogMjAyMS0wOS0wMyAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAK
ICAgICAgICAgU2lnbmFsaW5nIHN0YXRlIGNoZWNrIHdoZW4gYXBwbHlpbmcgYSBsb2NhbCBvciBy
ZW1vdGUgZGVzY3JpcHRpb24gaXMgbm8gbG9uZ2VyIGFsaWduZWQgd2l0aCB0aGUgV2ViUlRDIHNw
ZWMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2VicnRjL3Jlc291cmNlcy9j
aGVjay1pY2UtY2FuZGlkYXRlLWZpbHRlcmluZy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy93ZWJydGMvcmVzb3VyY2VzL2NoZWNrLWljZS1jYW5kaWRhdGUtZmlsdGVyaW5nLmh0bWwKaW5k
ZXggZmU2NDExMzM1NmJhMTUyMDdmNDE4ZGNjNDAxODU2ODBjOTFmNDUwOC4uMWZlYmYyMzY4OWFi
NDQyZjk2N2MyMDMwYmQzMDkwNTBiNGU0NjA1NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy93ZWJydGMvcmVzb3VyY2VzL2NoZWNrLWljZS1jYW5kaWRhdGUtZmlsdGVyaW5nLmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJydGMvcmVzb3VyY2VzL2NoZWNrLWlj
ZS1jYW5kaWRhdGUtZmlsdGVyaW5nLmh0bWwKQEAgLTE0LDcgKzE0LDggQEAgZnVuY3Rpb24gZ2F0
aGVyQ2FuZGlkYXRlcygpCiAgICAgICAgICAgICAgICAgcmVzb2x2ZShjYW5kaWRhdGVzKTsKICAg
ICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBjYW5kaWRh
dGVzLnB1c2goZXZlbnQuY2FuZGlkYXRlLmNhbmRpZGF0ZSk7CisgICAgICAgICAgICBpZiAoZXZl
bnQuY2FuZGlkYXRlLmNhbmRpZGF0ZS5pbmRleE9mKCcubG9jYWwnKSA9PT0gLTEpCisgICAgICAg
ICAgICAgICAgY2FuZGlkYXRlcy5wdXNoKGV2ZW50LmNhbmRpZGF0ZS5jYW5kaWRhdGUpOwogICAg
ICAgICB9OwogICAgICAgICBwYy5jcmVhdGVPZmZlcigpLnRoZW4oKG9mZmVyKSA9PiB7CiAgICAg
ICAgICAgICBwYy5zZXRMb2NhbERlc2NyaXB0aW9uKG9mZmVyKTsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvd3B0L3dlYnJ0Yy9yZXNvdXJjZXMvdGhpcmQtcGFydHktZnJhbWUtaWNlLWNh
bmRpZGF0ZS1maWx0ZXJpbmctaWZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJy
dGMvcmVzb3VyY2VzL3RoaXJkLXBhcnR5LWZyYW1lLWljZS1jYW5kaWRhdGUtZmlsdGVyaW5nLWlm
cmFtZS5odG1sCmluZGV4IDJmZTUzMTA3NjQ3MjdiNTdhYWIzYmE2MTUyNTU2NjZmNjQ4NWE2MTAu
LjgwNDQ4Y2EwYTU0NzRhN2Q4NTljNzI4MDg0NjM4YjQzYzEwZGY0MTUgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2h0dHAvd3B0L3dlYnJ0Yy9yZXNvdXJjZXMvdGhpcmQtcGFydHktZnJhbWUtaWNl
LWNhbmRpZGF0ZS1maWx0ZXJpbmctaWZyYW1lLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93
cHQvd2VicnRjL3Jlc291cmNlcy90aGlyZC1wYXJ0eS1mcmFtZS1pY2UtY2FuZGlkYXRlLWZpbHRl
cmluZy1pZnJhbWUuaHRtbApAQCAtMTIsNyArMTIsOCBAQCBmdW5jdGlvbiBpc0ZpbHRlcmluZ0Vu
YWJsZWQoKQogICAgICAgICAgICAgICAgIHJlc29sdmUoIWNhbmRpZGF0ZXMubGVuZ3RoKTsKICAg
ICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBjYW5kaWRh
dGVzLnB1c2goZXZlbnQuY2FuZGlkYXRlLmNhbmRpZGF0ZSk7CisgICAgICAgICAgICBpZiAoZXZl
bnQuY2FuZGlkYXRlLmNhbmRpZGF0ZS5pbmRleE9mKCcubG9jYWwnKSA9PT0gLTEpCisgICAgICAg
ICAgICAgICAgY2FuZGlkYXRlcy5wdXNoKGV2ZW50LmNhbmRpZGF0ZS5jYW5kaWRhdGUpOwogICAg
ICAgICB9OwogICAgICAgICBwYy5jcmVhdGVPZmZlcigpLnRoZW4oKG9mZmVyKSA9PiB7CiAgICAg
ICAgICAgICBwYy5zZXRMb2NhbERlc2NyaXB0aW9uKG9mZmVyKTsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA5MDFlZGM0ZmY5Zjc4ZDVmMGNj
YzcwN2UyYzA2NDFkY2M2ZDY1YWQ4Li5lODIxNmFhODJiMjA5OWM3MGM3ODE0YzFhMjNiMWFmZWY5
M2ExOTBiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBl
Y3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRp
b25zCkBAIC0zOTAsNiArMzkwLDcgQEAgaHR0cC90ZXN0cy93ZWJydGMgWyBTa2lwIF0KIGh0dHAv
d3B0L3dlYnJ0YyBbIFNraXAgXQogd2VicnRjL2RhdGFjaGFubmVsIFsgUGFzcyBdCiB3ZWJydGMv
ZGF0YWNoYW5uZWwvbWRucy1pY2UtY2FuZGlkYXRlcy5odG1sIFsgU2tpcCBdCit3ZWJydGMvZGF0
YWNoYW5uZWwvZmlsdGVyLWljZS1jYW5kaWRhdGUuaHRtbCBbIFNraXAgXQogaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDUGVlckNvbm5lY3Rpb24tc2V0TG9jYWxEZXNj
cmlwdGlvbi1vZmZlci5odG1sIFsgRmFpbHVyZSBdCiAKIGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvd2VicnRjLWVuY29kZWQtdHJhbnNmb3JtIFsgU2tpcCBdCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJydGMvZGF0YWNoYW5uZWwvZmlsdGVyLWljZS1jYW5kaWRhdGUuaHRtbCBi
L0xheW91dFRlc3RzL3dlYnJ0Yy9kYXRhY2hhbm5lbC9maWx0ZXItaWNlLWNhbmRpZGF0ZS5odG1s
CmluZGV4IGNjYzQ2OWExNzdlMDA5MmI2NzU3YjViYzRkMTc3NTNhYjFmYjk1M2IuLjc0ZTc4ZjQ5
MzI1ODU5ZmZiNTY4NDE2NTUxZDU0MWY4MDI3NmIzNjcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3dlYnJ0Yy9kYXRhY2hhbm5lbC9maWx0ZXItaWNlLWNhbmRpZGF0ZS5odG1sCisrKyBiL0xheW91
dFRlc3RzL3dlYnJ0Yy9kYXRhY2hhbm5lbC9maWx0ZXItaWNlLWNhbmRpZGF0ZS5odG1sCkBAIC04
LDY4ICs4LDkxIEBACiAgIDwvaGVhZD4KICAgPGJvZHk+CiAgICAgPHNjcmlwdD4KLXByb21pc2Vf
dGVzdCgodGVzdCkgPT4gewotICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0
KSA9PiB7Ci0gICAgICAgIHNldFRpbWVvdXQoKCkgPT4geyByZWplY3QoIlRlc3QgdGltZWQgb3V0
Iik7IH0sIDUwMDApOwotCi0gICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQotICAgICAgICAg
ICAgaW50ZXJuYWxzLnNldElDRUNhbmRpZGF0ZUZpbHRlcmluZyh0cnVlKTsKLQotICAgICAgICB2
YXIgY291bnRlciA9IDA7Ci0gICAgICAgIHZhciBwYyA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigp
OwotICAgICAgICBwYy5jcmVhdGVEYXRhQ2hhbm5lbCgnc2VuZERhdGFDaGFubmVsJyk7Ci0gICAg
ICAgIHBjLm9uaWNlY2FuZGlkYXRlID0gKGV2ZW50KSA9PiB7Ci0gICAgICAgICAgICBpZiAoZXZl
bnQuY2FuZGlkYXRlKSB7Ci0gICAgICAgICAgICAgICAgY291bnRlcisrOwotICAgICAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocGMu
bG9jYWxEZXNjcmlwdGlvbi5zZHAuaW5kZXhPZigiYT1jYW5kaWRhdGUiKSwgLTEpOwotICAgICAg
ICAgICAgYXNzZXJ0X3RydWUocGMubG9jYWxEZXNjcmlwdGlvbi5zZHAuaW5kZXhPZigiYz1JTiBJ
UDQgMC4wLjAuMFxyXG4iKSAhPSAtMSB8fCBwYy5sb2NhbERlc2NyaXB0aW9uLnNkcC5pbmRleE9m
KCJjPUlOIElQNiA6OlxyXG4iKSAhPSAtMSk7Ci0gICAgICAgICAgICBpZiAoY291bnRlciA9PT0g
MCkgewotICAgICAgICAgICAgICAgIHBjLmNyZWF0ZU9mZmVyKCkudGhlbigob2ZmZXIpID0+IHsK
LSAgICAgICAgICAgICAgICAgICAgYXNzZXJ0X3RydWUob2ZmZXIuc2RwLmluZGV4T2YoImM9SU4g
SVA0IDAuMC4wLjBcclxuIikgIT0gLTEgfHwgcGMubG9jYWxEZXNjcmlwdGlvbi5zZHAuaW5kZXhP
ZigiYz1JTiBJUDYgOjpcclxuIikgIT0gLTEpOwotICAgICAgICAgICAgICAgICAgICBhc3NlcnRf
ZXF1YWxzKG9mZmVyLnNkcC5pbmRleE9mKCJhPWNhbmRpZGF0ZSIpLCAtMSk7Ci0gICAgICAgICAg
ICAgICAgICAgIHJlc29sdmUoKTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIH0g
ZWxzZQotICAgICAgICAgICAgICAgIHJlamVjdCgiTm8gY2FuZGlkYXRlIHNob3VsZCBiZSBmb3Vu
ZCIpOwotICAgICAgICB9OwotICAgICAgICBwYy5jcmVhdGVPZmZlcigpLnRoZW4oKG9mZmVyKSA9
PiB7Ci0gICAgICAgICAgICBhc3NlcnRfZXF1YWxzKG9mZmVyLnNkcC5pbmRleE9mKCJhPWNhbmRp
ZGF0ZSIpLCAtMSk7Ci0gICAgICAgICAgICBwYy5zZXRMb2NhbERlc2NyaXB0aW9uKG9mZmVyKTsK
LSAgICAgICAgfSk7CitmdW5jdGlvbiBlbnN1cmVDYW5kaWRhdGVzQXJlTUROUyhzZHApCit7Cisg
ICAgYXNzZXJ0X3RydWUoc2RwLmluZGV4T2YoImM9SU4gSVA0IDAuMC4wLjBcclxuIikgIT0gLTEg
fHwgc2RwLmluZGV4T2YoImM9SU4gSVA2IDo6XHJcbiIpICE9IC0xKTsKKyAgICBjb25zdCBjYW5k
aWRhdGVzID0gc2RwLnNwbGl0KCdcclxuJykuZmlsdGVyKGxpbmUgPT4geworICAgICAgICByZXR1
cm4gbGluZS5pbmRleE9mKCdhPWNhbmRpZGF0ZScpICE9PSAtMTsKKyAgICB9KTsKKyAgICBmb3Ig
KGNvbnN0IGNhbmRpZGF0ZSBvZiBjYW5kaWRhdGVzKQorICAgICAgICBhc3NlcnRfbm90X2VxdWFs
cyhjYW5kaWRhdGUuaW5kZXhPZignLmxvY2FsJyksIC0xKTsKK30KKworZnVuY3Rpb24gZW5zdXJl
Q2FuZGlkYXRlc0FyZU5vdE1ETlMoc2RwKQoreworICAgIGNvbnN0IGNhbmRpZGF0ZXMgPSBzZHAu
c3BsaXQoJ1xyXG4nKS5maWx0ZXIobGluZSA9PiB7CisgICAgICAgIHJldHVybiBsaW5lLmluZGV4
T2YoJ2E9Y2FuZGlkYXRlJykgIT09IC0xOwogICAgIH0pOworICAgIGZvciAoY29uc3QgY2FuZGlk
YXRlIG9mIGNhbmRpZGF0ZXMpCisgICAgICAgIGFzc2VydF9lcXVhbHMoY2FuZGlkYXRlLmluZGV4
T2YoJy5sb2NhbCcpLCAtMSk7Cit9CisKK3Byb21pc2VfdGVzdChhc3luYyAodGVzdCkgPT4gewor
ICAgIGxldCByZXNvbHZlLCByZWplY3Q7CisgICAgY29uc3QgcHJvbWlzZSA9IG5ldyBQcm9taXNl
KChyZXMsIHJlaikgPT4geyByZXNvbHZlID0gcmVzOyByZWplY3QgPSByZWo7IH0pOworICAgIHNl
dFRpbWVvdXQoKCkgPT4geyByZWplY3QoIlRlc3QgdGltZWQgb3V0Iik7IH0sIDUwMDApOworCisg
ICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgIGludGVybmFscy5zZXRJQ0VDYW5kaWRh
dGVGaWx0ZXJpbmcodHJ1ZSk7CisKKyAgICBsZXQgY291bnRlciA9IDA7CisgICAgbGV0IHBjID0g
bmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7CisgICAgcGMuY3JlYXRlRGF0YUNoYW5uZWwoJ3NlbmRE
YXRhQ2hhbm5lbCcpOworICAgIHBjLm9uaWNlY2FuZGlkYXRlID0gYXN5bmMgKGV2ZW50KSA9PiB7
CisgICAgICAgIGlmIChldmVudC5jYW5kaWRhdGUpIHsKKyAgICAgICAgICAgIGFzc2VydF9ub3Rf
ZXF1YWxzKGV2ZW50LmNhbmRpZGF0ZS5jYW5kaWRhdGUuaW5kZXhPZignLmxvY2FsJyksIC0xKTsK
KyAgICAgICAgICAgIGNvdW50ZXIrKzsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
ICAgICAgICBlbnN1cmVDYW5kaWRhdGVzQXJlTUROUyhwYy5sb2NhbERlc2NyaXB0aW9uLnNkcCk7
CisgICAgICAgIGlmIChjb3VudGVyID09PSAwKSB7CisgICAgICAgICAgICBjb25zdCBvZmZlciA9
IGF3YWl0IHBjLmNyZWF0ZU9mZmVyKCk7CisgICAgICAgICAgICBhd2FpdCBwYy5zZXRMb2NhbERl
c2NyaXB0aW9uKG9mZmVyKTsKKyAgICAgICAgICAgIGVuc3VyZUNhbmRpZGF0ZXNBcmVNRE5TKHBj
LmxvY2FsRGVzY3JpcHRpb24uc2RwKTsKKyAgICAgICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICByZXNvbHZlKCk7CisgICAgfTsKKyAgICBj
b25zdCBvZmZlciA9IGF3YWl0IHBjLmNyZWF0ZU9mZmVyKCk7CisgICAgYXNzZXJ0X2VxdWFscyhv
ZmZlci5zZHAuaW5kZXhPZigiYT1jYW5kaWRhdGUiKSwgLTEpOworICAgIGF3YWl0IHBjLnNldExv
Y2FsRGVzY3JpcHRpb24ob2ZmZXIpOworCisgICAgcmV0dXJuIHByb21pc2U7CiB9LCAiR2F0aGVy
aW5nIElDRSBjYW5kaWRhdGVzIGZyb20gYSBkYXRhIGNoYW5uZWwgcGVlciBjb25uZWN0aW9uIHdp
dGggSUNFIGNhbmRpZGF0ZSBmaWx0ZXJpbmcgb24iKTsKIAotcHJvbWlzZV90ZXN0KCh0ZXN0KSA9
PiB7Ci0gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKLSAgICAg
ICAgc2V0VGltZW91dCgoKSA9PiB7IHJlamVjdCgiVGVzdCB0aW1lZCBvdXQiKTsgfSwgNTAwMCk7
Citwcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKKyAgICBsZXQgcmVzb2x2ZSwgcmVqZWN0
OworICAgIGNvbnN0IHByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzLCByZWopID0+IHsgcmVzb2x2
ZSA9IHJlczsgcmVqZWN0ID0gcmVqOyB9KTsKKyAgICBzZXRUaW1lb3V0KCgpID0+IHsgcmVqZWN0
KCJUZXN0IHRpbWVkIG91dCIpOyB9LCA1MDAwKTsKIAotCWlmICh3aW5kb3cuaW50ZXJuYWxzKQot
ICAgICAgICAgICAgaW50ZXJuYWxzLnNldElDRUNhbmRpZGF0ZUZpbHRlcmluZyhmYWxzZSk7Cisg
ICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgIGludGVybmFscy5zZXRJQ0VDYW5kaWRh
dGVGaWx0ZXJpbmcoZmFsc2UpOworIAorICAgIGxldCBjb3VudGVyID0gMDsKKyAgICBsZXQgcGMg
PSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsKKyAgICBwYy5jcmVhdGVEYXRhQ2hhbm5lbCgnc2Vu
ZERhdGFDaGFubmVsJyk7CiAKLSAgICAgICAgdmFyIGNvdW50ZXIgPSAwOwotICAgICAgICB2YXIg
cGMgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsKLSAgICAgICAgcGMuY3JlYXRlRGF0YUNoYW5u
ZWwoJ3NlbmREYXRhQ2hhbm5lbCcpOwotICAgICAgICBwYy5vbmljZWNhbmRpZGF0ZSA9IChldmVu
dCkgPT4gewotICAgICAgICAgICAgaWYgKGV2ZW50LmNhbmRpZGF0ZSkgewotICAgICAgICAgICAg
ICAgIGNvdW50ZXIrKzsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBhc3NlcnRfdHJ1ZShwYy5sb2NhbERlc2NyaXB0aW9uLnNkcC5pbmRleE9mKCJj
PUlOIElQNCAwLjAuMC4wXHJcbiIpID09PSAtMSAmJiBwYy5sb2NhbERlc2NyaXB0aW9uLnNkcC5p
bmRleE9mKCJjPUlOIElQNiA6OlxyXG4iKSA9PT0gLTEpOwotICAgICAgICAgICAgYXNzZXJ0X2Zh
bHNlKHBjLmxvY2FsRGVzY3JpcHRpb24uc2RwLmluZGV4T2YoImE9Y2FuZGlkYXRlIikgPT09IC0x
KTsKLSAgICAgICAgICAgIGlmIChjb3VudGVyICE9PSAwKSB7Ci0gICAgICAgICAgICAgICAgLy8g
UmVkb2luZyBhbiBvZmZlciBub3cgdGhhdCB3ZSBoYXZlIHNvbWUgY2FuZGlkYXRlcy4KLSAgICAg
ICAgICAgICAgICBwYy5jcmVhdGVPZmZlcigpLnRoZW4oKG9mZmVyKSA9PiB7Ci0gICAgICAgICAg
ICAgICAgICAgIGFzc2VydF90cnVlKG9mZmVyLnNkcC5pbmRleE9mKCJjPUlOIElQNCAwLjAuMC4w
XHJcbiIpID09PSAtMSAmJiBwYy5sb2NhbERlc2NyaXB0aW9uLnNkcC5pbmRleE9mKCJjPUlOIElQ
NiA6OlxyXG4iKSA9PT0gLTEpOwotICAgICAgICAgICAgICAgICAgICBhc3NlcnRfZmFsc2Uob2Zm
ZXIuc2RwLmluZGV4T2YoImE9Y2FuZGlkYXRlIikgPT09IC0xKTsKLSAgICAgICAgICAgICAgICAg
ICAgcmVzb2x2ZSgpOwotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgfSBlbHNlCi0g
ICAgICAgICAgICAgICAgcmVqZWN0KCJIb3N0IGNhbmRpZGF0ZXMgc2hvdWxkIGJlIGZvdW5kIik7
Ci0gICAgICAgIH07Ci0gICAgICAgIHBjLmNyZWF0ZU9mZmVyKCkudGhlbigob2ZmZXIpID0+IHsg
cGMuc2V0TG9jYWxEZXNjcmlwdGlvbihvZmZlcik7IH0pOwotICAgIH0pOworICAgIHBjLm9uaWNl
Y2FuZGlkYXRlID0gYXN5bmMgKGV2ZW50KSA9PiB7CisgICAgICAgIGlmIChldmVudC5jYW5kaWRh
dGUpIHsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoZXZlbnQuY2FuZGlkYXRlLmNhbmRpZGF0
ZS5pbmRleE9mKCcubG9jYWwnKSwgLTEpOworICAgICAgICAgICAgY291bnRlcisrOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGVuc3VyZUNhbmRpZGF0ZXNBcmVOb3RN
RE5TKHBjLmxvY2FsRGVzY3JpcHRpb24uc2RwKTsKKyAgICAgICAgaWYgKGNvdW50ZXIgIT09IDAp
IHsKKyAgICAgICAgICAgIC8vIFJlZG9pbmcgYW4gb2ZmZXIgbm93IHRoYXQgd2UgaGF2ZSBzb21l
IGNhbmRpZGF0ZXMuCisgICAgICAgICAgICBjb25zdCBvZmZlciA9IGF3YWl0IHBjLmNyZWF0ZU9m
ZmVyKCk7CisgICAgICAgICAgICBhd2FpdCBwYy5zZXRMb2NhbERlc2NyaXB0aW9uKG9mZmVyKTsK
KyAgICAgICAgICAgIGVuc3VyZUNhbmRpZGF0ZXNBcmVOb3RNRE5TKHBjLmxvY2FsRGVzY3JpcHRp
b24uc2RwKTsKKyAgICAgICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAg
ICAgICByZWplY3QoIkhvc3QgY2FuZGlkYXRlcyBzaG91bGQgYmUgZm91bmQiKTsKKyAgICB9Owor
ICAgIGNvbnN0IG9mZmVyID0gYXdhaXQgcGMuY3JlYXRlT2ZmZXIoKTsKKyAgICBhd2FpdCBwYy5z
ZXRMb2NhbERlc2NyaXB0aW9uKG9mZmVyKTsKKworICAgIHJldHVybiBwcm9taXNlOwogfSwgIkdh
dGhlcmluZyBJQ0UgY2FuZGlkYXRlcyBmcm9tIGEgZGF0YSBjaGFubmVsIHBlZXIgY29ubmVjdGlv
biB3aXRoIElDRSBjYW5kaWRhdGUgZmlsdGVyaW5nIG9mZiIpOwogCiBwcm9taXNlX3Rlc3QoYXN5
bmMgKHRlc3QpID0+IHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYnJ0Yy9maWx0ZXJpbmct
aWNlLWNhbmRpZGF0ZS1hZnRlci1yZWxvYWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYnJ0Yy9maWx0
ZXJpbmctaWNlLWNhbmRpZGF0ZS1hZnRlci1yZWxvYWQuaHRtbAppbmRleCBjODc1NWY3MWYxOWYx
YTMwM2MyM2IwYmFhZjE2NjNiZDY4YmQ1YjlkLi41MjVkZTg0ZjlkMzJiYjE0NjJkZTk3YzJmMjBl
NTVmZmNjMTVlNGIyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy93ZWJydGMvZmlsdGVyaW5nLWlj
ZS1jYW5kaWRhdGUtYWZ0ZXItcmVsb2FkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvd2VicnRjL2Zp
bHRlcmluZy1pY2UtY2FuZGlkYXRlLWFmdGVyLXJlbG9hZC5odG1sCkBAIC03LDI0ICs3LDI4IEBA
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewogICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgp
OwogfQogCi1mdW5jdGlvbiBpc0ZpbHRlcmluZ0VuYWJsZWQoKQorYXN5bmMgZnVuY3Rpb24gaXNG
aWx0ZXJpbmdFbmFibGVkKCkKIHsKKyAgICBsZXQgcmVzb2x2ZSwgcmVqZWN0OworICAgIGNvbnN0
IHByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzLCByZWopID0+IHsgcmVzb2x2ZSA9IHJlczsgcmVq
ZWN0ID0gcmVqOyB9KTsKKyAgICBzZXRUaW1lb3V0KCgpID0+IHsgcmVqZWN0KCJUZXN0IHRpbWVk
IG91dCIpOyB9LCA1MDAwKTsKKwogICAgIHZhciBwYyA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigp
OwogICAgIHBjLmNyZWF0ZURhdGFDaGFubmVsKCIiKTsKIAogICAgIHZhciBjYW5kaWRhdGVzID0g
W107Ci0gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKLSAgICAg
ICAgcGMub25pY2VjYW5kaWRhdGUgPSAoZXZlbnQpID0+IHsKLSAgICAgICAgICAgIGlmIChldmVu
dC5jYW5kaWRhdGUgPT09IG51bGwpIHsKLSAgICAgICAgICAgICAgICByZXNvbHZlKCFjYW5kaWRh
dGVzLmxlbmd0aCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQorICAg
IHBjLm9uaWNlY2FuZGlkYXRlID0gKGV2ZW50KSA9PiB7CisgICAgICAgIGlmIChldmVudC5jYW5k
aWRhdGUgPT09IG51bGwpIHsKKyAgICAgICAgICAgIHJlc29sdmUoIWNhbmRpZGF0ZXMubGVuZ3Ro
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAoZXZlbnQuY2Fu
ZGlkYXRlLmNhbmRpZGF0ZS5pbmRleE9mKCcubG9jYWwnKSA9PT0gLTEpCiAgICAgICAgICAgICBj
YW5kaWRhdGVzLnB1c2goZXZlbnQuY2FuZGlkYXRlLmNhbmRpZGF0ZSk7Ci0gICAgICAgIH07Ci0g
ICAgICAgIHBjLmNyZWF0ZU9mZmVyKCkudGhlbigob2ZmZXIpID0+IHsKLSAgICAgICAgICAgIHBj
LnNldExvY2FsRGVzY3JpcHRpb24ob2ZmZXIpOwotICAgICAgICB9KTsKLSAgICB9KTsKKyAgICB9
OworCisgICAgY29uc3Qgb2ZmZXIgPSBhd2FpdCBwYy5jcmVhdGVPZmZlcigpOworICAgIGF3YWl0
IHBjLnNldExvY2FsRGVzY3JpcHRpb24ob2ZmZXIpOworICAgIHJldHVybiBwcm9taXNlOwogfQog
CiBmdW5jdGlvbiBlbmRUZXN0KG1lc3NhZ2UpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>