<?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>50099</bug_id>
          
          <creation_ts>2010-11-25 22:16:44 -0800</creation_ts>
          <short_desc>WebSocket: Implement IETF (HyBi) spec protocol</short_desc>
          <delta_ts>2016-05-18 21:20:47 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>35573</dependson>
    
    <dependson>35721</dependson>
    
    <dependson>60348</dependson>
    
    <dependson>62786</dependson>
    
    <dependson>63424</dependson>
    
    <dependson>63532</dependson>
    
    <dependson>63536</dependson>
    
    <dependson>63931</dependson>
    
    <dependson>64087</dependson>
    
    <dependson>64145</dependson>
    
    <dependson>64242</dependson>
    
    <dependson>64244</dependson>
    
    <dependson>64288</dependson>
    
    <dependson>64296</dependson>
    
    <dependson>64344</dependson>
    
    <dependson>64349</dependson>
    
    <dependson>64522</dependson>
    
    <dependson>64534</dependson>
    
    <dependson>64852</dependson>
    
    <dependson>65247</dependson>
    
    <dependson>65248</dependson>
    
    <dependson>65249</dependson>
    
    <dependson>66925</dependson>
    
    <dependson>67363</dependson>
    
    <dependson>67908</dependson>
    
    <dependson>69405</dependson>
    
    <dependson>69408</dependson>
    
    <dependson>69910</dependson>
    
    <dependson>72687</dependson>
    
    <dependson>78541</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yuta Kitamura">yutak</reporter>
          <assigned_to name="Yuta Kitamura">yutak</assigned_to>
          <cc>ap</cc>
    
    <cc>bfulgham</cc>
    
    <cc>jason.harwig</cc>
    
    <cc>joenotcharles</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>martijn</cc>
    
    <cc>peter</cc>
    
    <cc>toyoshim</cc>
    
    <cc>tyoshino</cc>
    
    <cc>ukai</cc>
    
    <cc>webkit</cc>
    
    <cc>yael</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>313906</commentid>
    <comment_count>0</comment_count>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2010-11-25 22:16:44 -0800</bug_when>
    <thetext>http://tools.ietf.org/html/draft-ietf-hybi-thewebsocketprotocol-03</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>381364</commentid>
    <comment_count>1</comment_count>
    <who name="Joel Martin">webkit</who>
    <bug_when>2011-04-07 08:31:33 -0700</bug_when>
    <thetext>There have been some major changes since hybi-03 including the client side masking to address the security issue with poorly behaving intermediaries.

So I think HyBi-06 (or higher if a new draft is release in the meantime) should be the target: http://tools.ietf.org/html/draft-ietf-hybi-thewebsocketprotocol-06.

Yuta, if you agree, perhaps you could edit the subject to reflect that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>396263</commentid>
    <comment_count>2</comment_count>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2011-05-02 00:03:04 -0700</bug_when>
    <thetext>As I discussed with Alexey off-line at the WebKit contributors meeting, I would like to implement the new protocol next to the current one, and make them switchable dynamically (through Settings class).

I will post necessary changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417871</commentid>
    <comment_count>3</comment_count>
      <attachid>96556</attachid>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2011-06-08 23:58:48 -0700</bug_when>
    <thetext>Created attachment 96556
WIP hybi-07</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>473943</commentid>
    <comment_count>4</comment_count>
    <who name="Joe Mason">joenotcharles</who>
    <bug_when>2011-09-27 08:28:34 -0700</bug_when>
    <thetext>I see the current code support version 8.  The hopefully final spec released today is version 13.  The differences are minor.  Do you have any plans to upgrade to 13?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>473996</commentid>
    <comment_count>5</comment_count>
    <who name="Takeshi Yoshino">tyoshino</who>
    <bug_when>2011-09-27 09:41:34 -0700</bug_when>
    <thetext>Chromium is going to update our WebSocket to 13 on the next release (Chromium 16). Yuta is preparing patch for WebKit now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488279</commentid>
    <comment_count>6</comment_count>
    <who name="Takeshi Yoshino">tyoshino</who>
    <bug_when>2011-10-21 02:10:50 -0700</bug_when>
    <thetext>FYI, Chromium dev channel is now using version 13.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1194619</commentid>
    <comment_count>7</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-05-18 21:20:47 -0700</bug_when>
    <thetext>All dependent bugs are closed. Closing this parent bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>96556</attachid>
            <date>2011-06-08 23:58:48 -0700</date>
            <delta_ts>2011-07-27 04:42:47 -0700</delta_ts>
            <desc>WIP hybi-07</desc>
            <filename>bug-50099-20110609155845.patch</filename>
            <type>text/plain</type>
            <size>87693</size>
            <attacher name="Yuta Kitamura">yutak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODg0MjAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvd2Vic29ja2V0L3Rlc3RzL2JhZC1oYW5kc2hha2UtY3Jhc2hfd3NoLnB5IGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvYmFkLWhhbmRzaGFrZS1jcmFzaF93c2gu
cHkKaW5kZXggMDFjNDgzMWJmMDdhM2U3OTlhNzU3M2M0ODdmMDMzN2FhNzJiYTA0ZS4uZDA4NmY2
NzMxNGJkMDgzNzNkY2JmODE0MjU4ZTZlNGZlODFmOWFmZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvYmFkLWhhbmRzaGFrZS1jcmFzaF93c2gucHkK
KysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvYmFkLWhhbmRzaGFr
ZS1jcmFzaF93c2gucHkKQEAgLTEsMTEgKzEsMTQgQEAKK2Zyb20gbW9kX3B5d2Vic29ja2V0Lmhh
bmRzaGFrZSBpbXBvcnQgaHliaTA2CisKIGRlZiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFr
ZShyZXF1ZXN0KToKLSAgbXNnID0gIkhUVFAvMS4xIDEwMSBXZWIgU29ja2V0IFByb3RvY29sIEhh
bmRzaGFrZVxyXG4iCi0gIG1zZyArPSAiVXBncmFkZTogV2ViU29ja2V0XHJcbiIKLSAgbXNnICs9
ICJDb25uZWN0aW9uOiBVcGdyYWRlXHJcbiIKLSAgbXNnICs9ICJceGE1OlxyXG4iCi0gIG1zZyAr
PSAiXHJcbiIKLSAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXRlKG1zZykKLSAgcHJpbnQgbXNnCisg
ICAgbXNnID0gIkhUVFAvMS4xIDEwMSBTd2l0Y2hpbmcgUHJvdG9jb2xzXHJcbiIKKyAgICBtc2cg
Kz0gIlVwZ3JhZGU6IHdlYnNvY2tldFxyXG4iCisgICAgbXNnICs9ICJDb25uZWN0aW9uOiBVcGdy
YWRlXHJcbiIKKyAgICBtc2cgKz0gJ1NlYy1XZWJTb2NrZXQtQWNjZXB0OiAlc1xyXG4nICUgaHli
aTA2LmNvbXB1dGVfYWNjZXB0KHJlcXVlc3QuaGVhZGVyc19pblsnU2VjLVdlYlNvY2tldC1LZXkn
XSlbMF0KKyAgICBtc2cgKz0gIlx4YTU6XHJcbiIKKyAgICBtc2cgKz0gIlxyXG4iCisgICAgcmVx
dWVzdC5jb25uZWN0aW9uLndyaXRlKG1zZykKKyAgICBwcmludCBtc2cKIAogZGVmIHdlYl9zb2Nr
ZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0KToKLSAgcGFzcworICAgIHBhc3MKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2NsaWVudC1jbG9zZS1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9jbGllbnQt
Y2xvc2UtZXhwZWN0ZWQudHh0CmluZGV4IDI2NjhmZDk0MjMyNDkxZjdhZmU4ZDU3ZDExMTUyMDNl
ZjRlNTkwOTMuLmIxMjAwOTRmMTljZDgxM2RjZjY4OGZlN2I2ODdhYTI2M2FkYmQ5NTQgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2NsaWVudC1jbG9z
ZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVz
dHMvY2xpZW50LWNsb3NlLWV4cGVjdGVkLnR4dApAQCAtMyw5ICszLDkgQEAgV2ViU29ja2V0OiBU
ZXN0IGNsaWVudC1pbml0aWF0ZWQgY2xvc2UuCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBz
ZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAK
IENvbm5lY3RlZAotUmVjZWl2ZWQ6IGNsb3NlX2ZyYW1lPSdceGZmXHgwMCcKK1JlY2VpdmVkOiBj
bG9zZV9mcmFtZVs6Ml09J1x4ODhceDgwJwogQ2xvc2VkCi1QQVNTIHJlY2VpdmVkTWVzc2FnZSBp
cyAiY2xvc2VfZnJhbWU9J1xceGZmXFx4MDAnIgorUEFTUyByZWNlaXZlZE1lc3NhZ2UgaXMgImNs
b3NlX2ZyYW1lWzoyXT0nXFx4ODhcXHg4MCciCiBQQVNTIGNsb3NlRXZlbnQud2FzQ2xlYW4gaXMg
dHJ1ZQogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9jbGllbnQtY2xvc2UuaHRtbCBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2NsaWVudC1jbG9zZS5odG1sCmlu
ZGV4IDlmMzVlNDFjZGRiNGM3MWVhOWI5YmIyZDU4MGE1OTg5MThjMDg2ODIuLjRjNTUxZTk5NjMx
MWZhOGZiZjRhZTI1Mzg4ZGRhNjZjYTZiNzIyNzcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2NsaWVudC1jbG9zZS5odG1sCisrKyBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2NsaWVudC1jbG9zZS5odG1sCkBAIC0zMiw3
ICszMiw3IEBAIHdzLm9uY2xvc2UgPSBmdW5jdGlvbihldmVudCkKIHsKICAgICBkZWJ1ZygiQ2xv
c2VkIik7CiAgICAgY2xvc2VFdmVudCA9IGV2ZW50OwotICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
ZygicmVjZWl2ZWRNZXNzYWdlIiwgImNsb3NlX2ZyYW1lPSdcXHhmZlxceDAwJyIpOworICAgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygicmVjZWl2ZWRNZXNzYWdlIiwgImNsb3NlX2ZyYW1lWzoyXT0n
XFx4ODhcXHg4MCciKTsKICAgICBzaG91bGRCZVRydWUoImNsb3NlRXZlbnQud2FzQ2xlYW4iKTsK
ICAgICBmaW5pc2hKU1Rlc3QoKTsKIH07CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3dlYnNvY2tldC90ZXN0cy9jbGllbnQtY2xvc2Vfd3NoLnB5IGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvY2xpZW50LWNsb3NlX3dzaC5weQppbmRleCA3ZWQyOGJm
ZmZmMDI0OWY0YTBkN2JiY2MzZmI4MzJhYjg3OWMwODIwLi42OWQ3YjQxOTNlMjE3ODcyOWU0ZjQx
NDFmOWM1YjQyYTc0MWJlY2E5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dl
YnNvY2tldC90ZXN0cy9jbGllbnQtY2xvc2Vfd3NoLnB5CisrKyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvd2Vic29ja2V0L3Rlc3RzL2NsaWVudC1jbG9zZV93c2gucHkKQEAgLTcsMTYgKzcsMTcg
QEAgZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgogCiBkZWYgd2Vi
X3NvY2tldF90cmFuc2Zlcl9kYXRhKHJlcXVlc3QpOgogICAgICMgV2FpdCBmb3IgYSBjbG9zZSBm
cmFtZSBzZW50IGZyb20gdGhlIGNsaWVudC4KLSAgICBjbG9zZV9mcmFtZSA9IHJlcXVlc3Qud3Nf
c3RyZWFtLnJlY2VpdmVfYnl0ZXMoMikKKyAgICBjbG9zZV9mcmFtZSA9IHJlcXVlc3Qud3Nfc3Ry
ZWFtLnJlY2VpdmVfYnl0ZXMoNikKIAotICAgICMgVGVsbCB0aGUgY2xpZW50IHdoYXQgd2UgaGF2
ZSByZWNlaXZlZC4KLSAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnY2xvc2VfZnJh
bWU9JXInICUgY2xvc2VfZnJhbWUpCisgICAgIyBTZW5kIG9ubHkgZmlyc3QgdHdvIGJ5dGVzIG9m
IHRoZSByZWNlaXZlZCBmcmFtZS4gVGhlIHJlbWFpbmluZyBmb3VyIGJ5dGVzIGFyZQorICAgICMg
Im1hc2tpbmcga2V5Iiwgd2hpY2ggbWF5IGNoYW5nZSBldmVyeSB0aW1lIHRoZSB0ZXN0IHJ1bnMu
CisgICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJ2Nsb3NlX2ZyYW1lWzoyXT0lcicg
JSBjbG9zZV9mcmFtZVs6Ml0pCiAKICAgICAjIElmIHRoZSBmb2xsb3dpbmcgYXNzZXJ0aW9uIGZh
aWxzLCBBc3NlcnRpb25FcnJvciB3aWxsIGJlIHJhaXNlZCwKICAgICAjIHdoaWNoIHdpbGwgcHJl
dmVudCBweXdlYnNvY2tldCBmcm9tIHNlbmRpbmcgYSBjbG9zZSBmcmFtZS4KICAgICAjIEluIHRo
aXMgY2FzZSwgdGhlIGNsaWVudCB3aWxsIGZhaWwgdG8gZmluaXNoIGNsb3NpbmcgaGFuZHNoYWtl
LCB0aHVzCiAgICAgIyBjbG9zZUV2ZW50Lndhc0NsZWFuIHdpbGwgYmVjb21lIGZhbHNlLgotICAg
IGFzc2VydCBjbG9zZV9mcmFtZSA9PSAnXHhmZlx4MDAnCisgICAgYXNzZXJ0IGNsb3NlX2ZyYW1l
WzoyXSA9PSAnXHg4OFx4ODAnCiAKICAgICAjIFByZXRlbmQgd2UgaGF2ZSByZWNlaXZlZCBhIGNs
b3NlIGZyYW1lIGZyb20gdGhlIGNsaWVudC4KICAgICAjIEFmdGVyIHRoaXMgZnVuY3Rpb24gZXhp
dHMsIHB5d2Vic29ja2V0IHdpbGwgc2VuZCBhIGNsb3NlIGZyYW1lIGF1dG9tYXRpY2FsbHkuCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9lY2hvLWNo
YWxsZW5nZV93c2gucHkgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9l
Y2hvLWNoYWxsZW5nZV93c2gucHkKaW5kZXggMGZkMTQ4NWNjMWZlOTY2MDU5ZGM3YTg5NTMyM2Zk
ZTM4M2IyMjA1My4uMjY4YjEwY2M2ZjMwNzliOWIyMzdlYzFhMTc3ZjAxYzQ5NWI5N2RlMCAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvZWNoby1jaGFs
bGVuZ2Vfd3NoLnB5CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3Rz
L2VjaG8tY2hhbGxlbmdlX3dzaC5weQpAQCAtNCw3ICs0LDQgQEAgZGVmIHdlYl9zb2NrZXRfZG9f
ZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgogICAgIHBhc3MKIAogZGVmIHdlYl9zb2NrZXRfdHJh
bnNmZXJfZGF0YShyZXF1ZXN0KToKLSAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCBf
aGV4aWZ5KHJlcXVlc3Qud3NfY2hhbGxlbmdlKSkKLQotZGVmIF9oZXhpZnkoYnl0ZXMpOgotICAg
IHJldHVybiAnOicuam9pbihbJyUwMlgnICUgb3JkKGJ5dGUpIGZvciBieXRlIGluIGJ5dGVzXSkK
KyAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCByZXF1ZXN0LmhlYWRlcnNfaW5bJ1Nl
Yy1XZWJTb2NrZXQtS2V5J10pCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dl
YnNvY2tldC90ZXN0cy9lcnJvci1kZXRlY3QtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvZXJyb3ItZGV0ZWN0LWV4cGVjdGVkLnR4dAppbmRleCA2
YzY5ZWVkMDM4ZmVlMzJmZDA5YTNiOGFlYTNjMzU1NGI3YzQ2NjQ0Li40YTgxMDgzYzUxMGEzMDY4
NDMwMGI1MDgwYzVlMGNiMDI3ZGIwMTdlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3dlYnNvY2tldC90ZXN0cy9lcnJvci1kZXRlY3QtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2Vycm9yLWRldGVjdC1leHBlY3RlZC50
eHQKQEAgLTUsNyArNSw3IEBAIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFCiBXZWJTb2NrZXQgaXMg
b3BlbgogcmVjZWl2ZWQ6ZG9uZQogV2ViU29ja2V0IGlzIGNsb3NlZAotUEFTUyBlcnJvckNvdW50
IGlzIDI1NQorUEFTUyBlcnJvckNvdW50IGlzIDEwCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvd2Vic29ja2V0L3Rlc3RzL2ZyYWdtZW50ZWQtZnJhbWVzLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2ZyYWdtZW50ZWQtZnJhbWVzLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi44YzMzZTUwMTA4NjRjMTUwNTU3NjcyYTI0OWQ2NTY1MTY0NmM2
MmViCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQv
dGVzdHMvZnJhZ21lbnRlZC1mcmFtZXMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjMgQEAKK1Jl
Y2VpdmluZyBmcmFnbWVudGVkIFdlYlNvY2tldCBmcmFtZXMKKworT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgorCitvbm9wZW4oKSB3YXMgY2FsbGVkLgorb25tZXNzYWdlKCkgd2FzIGNhbGxlZC4g
TWVzc2FnZSA9ICJGaXJzdCBtZXNzYWdlIgorUEFTUyBtZXNzYWdlIGlzIGV4cGVjdGVkTWVzc2Fn
ZXNbbWVzc2FnZXNSZWNlaXZlZF0KK29ubWVzc2FnZSgpIHdhcyBjYWxsZWQuIE1lc3NhZ2UgPSAi
U2Vjb25kIG1lc3NhZ2UiCitQQVNTIG1lc3NhZ2UgaXMgZXhwZWN0ZWRNZXNzYWdlc1ttZXNzYWdl
c1JlY2VpdmVkXQorb25tZXNzYWdlKCkgd2FzIGNhbGxlZC4gTWVzc2FnZSA9ICJUaGlyZCBtZXNz
YWdlIgorUEFTUyBtZXNzYWdlIGlzIGV4cGVjdGVkTWVzc2FnZXNbbWVzc2FnZXNSZWNlaXZlZF0K
K29uZXJyb3IoKSB3YXMgY2FsbGVkLgorUEFTUyBleHBlY3RlZE1lc3NhZ2VzW21lc3NhZ2VzUmVj
ZWl2ZWRdIGlzIG51bGwKK29uZXJyb3IoKSB3YXMgY2FsbGVkLgorUEFTUyBleHBlY3RlZE1lc3Nh
Z2VzW21lc3NhZ2VzUmVjZWl2ZWRdIGlzIG51bGwKK29ubWVzc2FnZSgpIHdhcyBjYWxsZWQuIE1l
c3NhZ2UgPSAiRm91cnRoIG1lc3NhZ2UiCitQQVNTIG1lc3NhZ2UgaXMgZXhwZWN0ZWRNZXNzYWdl
c1ttZXNzYWdlc1JlY2VpdmVkXQorb25tZXNzYWdlKCkgd2FzIGNhbGxlZC4gTWVzc2FnZSA9ICJF
TkQiCitvbmNsb3NlKCkgd2FzIGNhbGxlZC4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3dlYnNvY2tldC90ZXN0cy9mcmFnbWVudGVkLWZyYW1lc193c2gucHkgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9mcmFnbWVudGVkLWZyYW1lc193c2gucHkKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYzg3YjBhOTBiODI0NjY0MzQwNGNkMTUyNmFiZDFmMzI5MTA2Yjg5YQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2ZyYWdtZW50
ZWQtZnJhbWVzX3dzaC5weQpAQCAtMCwwICsxLDc0IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisj
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworCitm
cm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgY29tbW9uCitmcm9tIG1vZF9weXdlYnNvY2tldCBp
bXBvcnQgbXNndXRpbAorZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IHN0cmVhbQorCisKK2Rl
ZiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZShyZXF1ZXN0KToKKyAgICBwYXNzCisKKwor
ZGVmIHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0KToKKyAgICAjIFR3byBmcmFnbWVu
dGVkIGZyYW1lcy4KKyAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnRmlyc3QgJywg
RmFsc2UpCisgICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJ21lc3NhZ2UnLCBUcnVl
KQorCisgICAgIyBDb250YWlucyBlbXB0eSBmcmFnbWVudHMuCisgICAgbXNndXRpbC5zZW5kX21l
c3NhZ2UocmVxdWVzdCwgJycsIEZhbHNlKQorICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVl
c3QsICdTZWNvbmQgJywgRmFsc2UpCisgICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwg
JycsIEZhbHNlKQorICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICdtZXNzYWdlJywg
RmFsc2UpCisgICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJycsIFRydWUpCisKKyAg
ICAjIEFnZ3Jlc3NpdmVseSBmcmFnbWVudGVkIGZyYW1lcy4KKyAgICBtc2d1dGlsLnNlbmRfbWVz
c2FnZShyZXF1ZXN0LCAnVCcsIEZhbHNlKQorICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVl
c3QsICdoJywgRmFsc2UpCisgICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJ2knLCBG
YWxzZSkKKyAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAncicsIEZhbHNlKQorICAg
IG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICdkJywgRmFsc2UpCisgICAgbXNndXRpbC5z
ZW5kX21lc3NhZ2UocmVxdWVzdCwgJyAnLCBGYWxzZSkKKyAgICBtc2d1dGlsLnNlbmRfbWVzc2Fn
ZShyZXF1ZXN0LCAnbScsIEZhbHNlKQorICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3Qs
ICdlJywgRmFsc2UpCisgICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJ3MnLCBGYWxz
ZSkKKyAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAncycsIEZhbHNlKQorICAgIG1z
Z3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICdhJywgRmFsc2UpCisgICAgbXNndXRpbC5zZW5k
X21lc3NhZ2UocmVxdWVzdCwgJ2cnLCBGYWxzZSkKKyAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShy
ZXF1ZXN0LCAnZScsIFRydWUpCisKKyAgICAjIEZyYWdtZW50ZWQgY29udHJvbCBtZXNzYWdlIGlz
IG5vdCBhbGxvd2VkIChvbmVycm9yIHNob3VsZCBiZSBpbnZva2VkKS4KKyAgICByZXF1ZXN0LmNv
bm5lY3Rpb24ud3JpdGUoc3RyZWFtLmNyZWF0ZV90ZXh0X2ZyYW1lKCdGb29iYXInLCBvcGNvZGU9
Y29tbW9uLk9QQ09ERV9QSU5HLCBmaW49MCkpCisKKyAgICAjIEEgbmV3IGZyYW1lIGlzIGFycml2
ZWQgYmVmb3JlIHRoZSBwcmV2aW91cyBmcmFnbWVudGVkIGZyYW1lIGhhcyBmaW5pc2hlZC4KKyAg
ICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdGUoc3RyZWFtLmNyZWF0ZV90ZXh0X2ZyYW1lKCdGb3Vy
dGggJywgb3Bjb2RlPWNvbW1vbi5PUENPREVfVEVYVCwgZmluPTApKQorICAgIHJlcXVlc3QuY29u
bmVjdGlvbi53cml0ZShzdHJlYW0uY3JlYXRlX3RleHRfZnJhbWUoJ1tzaG91bGQgaW52b2tlIG9u
ZXJyb3JdJywgb3Bjb2RlPWNvbW1vbi5PUENPREVfVEVYVCwgZmluPTEpKQorICAgIHJlcXVlc3Qu
Y29ubmVjdGlvbi53cml0ZShzdHJlYW0uY3JlYXRlX3RleHRfZnJhbWUoJ21lc3NhZ2UnLCBvcGNv
ZGU9Y29tbW9uLk9QQ09ERV9DT05USU5VQVRJT04sIGZpbj0xKSkKKworICAgIG1zZ3V0aWwuc2Vu
ZF9tZXNzYWdlKHJlcXVlc3QsICdFTkQnKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy93ZWJzb2NrZXQvdGVzdHMvZnJhbWUtbGVuZ3RoLWxvbmdlci10aGFuLWJ1ZmZlci1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9mcmFtZS1s
ZW5ndGgtbG9uZ2VyLXRoYW4tYnVmZmVyLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggYWYzNzcwMGZhNTc4MTk1MDQ2ZWZiNGFkYzgzZTFiMGRkM2E4MWIzOS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9mcmFtZS1sZW5ndGgtbG9uZ2VyLXRoYW4tYnVmZmVy
LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLU1ha2Ugc3VyZSBX
ZWJTb2NrZXQgY29ycmVjdGx5IHNraXAgbGVuZ3RoZWQgZnJhbWUgZXZlbiBpZiByZWNlaXZlZCBk
YXRhIGhhcyBpbmNvbXBsZXRlIGZyYW1lLgotCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBz
ZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0K
LVdlYlNvY2tldCBpcyBvcGVuCi1yZWNlaXZlZDpoZWxsbwotV2ViU29ja2V0IGlzIGNsb3NlZAot
MQotUEFTUyBhcmVBcnJheXNFcXVhbChyZWNlaXZlZF9tZXNzYWdlcywgZXhwZWN0ZWRfbWVzc2Fn
ZXMpIGlzIHRydWUKLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01Q
TEVURQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0
cy9mcmFtZS1sZW5ndGgtbG9uZ2VyLXRoYW4tYnVmZmVyLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9mcmFtZS1sZW5ndGgtbG9uZ2VyLXRoYW4tYnVmZmVyLmh0
bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc3NzBmMWMyZGI5MWViYjFjZTY2N2Ji
ZGU5NWRkYjM4OTVkN2ZjZWUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvZnJhbWUtbGVu
Z3RoLWxvbmdlci10aGFuLWJ1ZmZlci5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBA
QAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgotPGh0bWw+
Ci08aGVhZD4KLTxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vanMtdGVzdC1y
ZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgotPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzLXRl
c3QtcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXBvc3QtZnVuY3Rpb24uanMiPjwvc2NyaXB0
PgotPC9oZWFkPgotPGJvZHk+Ci08ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Ci08ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KLTxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvZnJhbWUtbGVuZ3Ro
LWxvbmdlci10aGFuLWJ1ZmZlci5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9mcmFtZS1sZW5n
dGgtbG9uZ2VyLXRoYW4tYnVmZmVyX3dzaC5weSBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vi
c29ja2V0L3Rlc3RzL2ZyYW1lLWxlbmd0aC1sb25nZXItdGhhbi1idWZmZXJfd3NoLnB5CmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NjdkOTdjYjQ4NDhjNGI4OWQxZDdiMjYxMjAyNjY5
ZDVlNmRmMDA0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2ZyYW1lLWxlbmd0aC1sb25n
ZXItdGhhbi1idWZmZXJfd3NoLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotZGVm
IHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgotICAgIHBhc3MKLQotZGVm
IHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0KToKLSAgICBtc2cgPSAiXDBoZWxsb1x4
ZmYiCi0gICAgbXNnICs9ICJceDgwXHg4MVx4MDEiICMgU2tpcCAxKjEyOCsxIGJ5dGVzLgotICAg
IG1zZyArPSAiXHgwMVx4ZmYiCi0gICAgbXNnICs9ICJcMHNob3VsZCBiZSBza2lwcGVkXHhmZiIK
LSAgICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdGUobXNnKQotICAgIHJhaXNlIEV4Y2VwdGlvbigi
QWJvcnQgdGhlIGNvbm5lY3Rpb24iKSAjIFByZXZlbnRzIHB5d2Vic29ja2V0IGZyb20gc3RhcnRp
bmcgY2xvc2luZyBoYW5kc2hha2UuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3dlYnNvY2tldC90ZXN0cy9mcmFtZS1sZW5ndGgtb3ZlcmZsb3ctZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvZnJhbWUtbGVuZ3RoLW92ZXJmbG93
LWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGMyMTZmNGU4MjQ2
MDQ5ZDE3MGFhNjY2MTc4YzhiZTlhMWFjYjM5OC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0
cy9mcmFtZS1sZW5ndGgtb3ZlcmZsb3ctZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEs
MTIgKzAsMCBAQAotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDA6IFdlYlNvY2tldCBmcmFtZSBsZW5n
dGggdG9vIGxhcmdlCi1NYWtlIHN1cmUgV2ViU29ja2V0IGRvZXMgbm90IGNyYXNoIGFuZCByZXBv
cnQgZXJyb3Igd2hlbiBpdCBzZWVzIGxlbmd0aCBvdmVyZmxvdwotCi1PbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCi0KLVdlYlNvY2tldCBpcyBvcGVuCi1XZWJTb2NrZXQgcmVjZWl2ZWQgZXJyb3Ig
ZnJhbWUKLVdlYlNvY2tldCBpcyBjbG9zZWQKLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKLQotVEVTVCBDT01QTEVURQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3dlYnNvY2tldC90ZXN0cy9mcmFtZS1sZW5ndGgtb3ZlcmZsb3cuaHRtbCBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2ZyYW1lLWxlbmd0aC1vdmVyZmxvdy5odG1sCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZmIwZTI4ZGY5OWQ1ZTc1MDlkOTE2MDg1N2I1
OWRiNmFjYzE4ZmRkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2ZyYW1lLWxlbmd0aC1v
dmVyZmxvdy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPGh0bWw+Ci08aGVh
ZD4KLTxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vanMtdGVzdC1yZXNvdXJj
ZXMvanMtdGVzdC1zdHlsZS5jc3MiPgotPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzLXRlc3QtcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi8uLi9q
cy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXBvc3QtZnVuY3Rpb24uanMiPjwvc2NyaXB0PgotPC9o
ZWFkPgotPGJvZHk+Ci08ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Ci08ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KLTxzY3JpcHQ+Ci1kZXNjcmlwdGlvbigiTWFrZSBzdXJlIFdlYlNvY2tldCBk
b2VzIG5vdCBjcmFzaCBhbmQgcmVwb3J0IGVycm9yIHdoZW4gaXQgc2VlcyBsZW5ndGggb3ZlcmZs
b3ciKTsKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwotCi1mdW5jdGlvbiBmaW5pc2goKSB7Ci0gICAgaXNT
dWNjZXNzZnVsbHlQYXJzZWQoKTsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Ci19Ci0KLXZhciB3
cyA9IG5ldyBXZWJTb2NrZXQoIndzOi8vMTI3LjAuMC4xOjg4ODAvd2Vic29ja2V0L3Rlc3RzL2Zy
YW1lLWxlbmd0aC1vdmVyZmxvdyIpOwotd3Mub25vcGVuID0gZnVuY3Rpb24gKCkgewotICAgIGRl
YnVnKCJXZWJTb2NrZXQgaXMgb3BlbiIpOwotfTsKLXdzLm9ubWVzc2FnZSA9IGZ1bmN0aW9uIChl
dnQpIHsKLSAgICBkZWJ1ZygiV2ViU29ja2V0IHJlY2VpdmVkOiIgKyBldnQuZGF0YSk7Ci19Owot
d3Mub25lcnJvciA9IGZ1bmN0aW9uICgpIHsKLSAgICBkZWJ1ZygiV2ViU29ja2V0IHJlY2VpdmVk
IGVycm9yIGZyYW1lIik7Ci19Owotd3Mub25jbG9zZSA9IGZ1bmN0aW9uICgpIHsKLSAgICBkZWJ1
ZygiV2ViU29ja2V0IGlzIGNsb3NlZCIpOwotICAgIGZpbmlzaCgpOwotfTsKLQotdmFyIHN1Y2Nl
c3NmdWxseVBhcnNlZCA9IHRydWU7Ci08L3NjcmlwdD4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvZnJhbWUtbGVuZ3RoLW92ZXJmbG93X3dzaC5w
eSBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2ZyYW1lLWxlbmd0aC1v
dmVyZmxvd193c2gucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBmNTE4YThiZDJl
MDgwNDkyNjAxNGZmYjI0MTk0ZjE2MjMzNGY5YTguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVz
dHMvZnJhbWUtbGVuZ3RoLW92ZXJmbG93X3dzaC5weQorKysgL2Rldi9udWxsCkBAIC0xLDYgKzAs
MCBAQAotZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgotICBwYXNz
Ci0KLWRlZiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEocmVxdWVzdCk6Ci0gIG1zZyA9IDE2ICog
J1x4ZmYnCi0gIHJlcXVlc3QuY29ubmVjdGlvbi53cml0ZShtc2cpCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9mcmFtZS1sZW5ndGgtc2tpcC1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9mcmFtZS1s
ZW5ndGgtc2tpcC1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFh
MzJmZTRjZmEzNTU2ZjY4YjY4N2IxY2ZiYWU1ZjVjNDE2ZDUyNGQuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJz
b2NrZXQvdGVzdHMvZnJhbWUtbGVuZ3RoLXNraXAtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwK
QEAgLTEsMTQgKzAsMCBAQAotTWFrZSBzdXJlIFdlYlNvY2tldCBjb3JyZWN0bHkgc2tpcCBsZW5n
dGhlZCBmcmFtZS4KLQotT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgotCi1XZWJTb2NrZXQgaXMg
b3BlbgotcmVjZWl2ZWQ6aGVsbG8KLXJlY2VpdmVkOndvcmxkCi1XZWJTb2NrZXQgaXMgY2xvc2Vk
Ci0yCi1QQVNTIGFyZUFycmF5c0VxdWFsKHJlY2VpdmVkX21lc3NhZ2VzLCBleHBlY3RlZF9tZXNz
YWdlcykgaXMgdHJ1ZQotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENP
TVBMRVRFCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rl
c3RzL2ZyYW1lLWxlbmd0aC1za2lwX3dzaC5weSBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vi
c29ja2V0L3Rlc3RzL2ZyYW1lLWxlbmd0aC1za2lwX3dzaC5weQpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZDE0ZjU1MDc3MzVmNjE0NGJkNTY2YmJiNmQxYmJiMDU4Mjk4ODBiYi4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9mcmFtZS1sZW5ndGgtc2tpcF93c2gucHkKKysrIC9k
ZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi1kZWYgd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hh
a2UocmVxdWVzdCk6Ci0gIHBhc3MKLQotZGVmIHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1
ZXN0KToKLSAgbXNnID0gIlwwaGVsbG9ceGZmIgotICBtc2cgKz0gIlx4ODBceDgxXHgwMSIgICAj
IHNraXAgMSoxMjgrMSBieXRlcy4KLSAgbXNnICs9ICJceDAxIgotICBtc2cgKz0gIlwwc2hvdWxk
IGJlIHNraXBwZWQiICsgKCIgIiAqIDEwOSkgKyAiXHhmZiIKLSAgbXNnICs9ICJcMHdvcmxkXHhm
ZiIKLSAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXRlKG1zZykKLSAgcHJpbnQgbXNnCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oYW5kbGVyX21hcC50
eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oYW5kbGVyX21hcC50
eHQKaW5kZXggNjY0OWRjOGViMmMyNDY2MDJhYzQxZmVjNjU3MmZjNjVkOThkZDE4NC4uOTEwYjFh
MTQ0MDhhZWJmYWI0YWZlNDQ1NjIyMzUzNGU1YWQzNWM1ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaGFuZGxlcl9tYXAudHh0CisrKyBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2hhbmRsZXJfbWFwLnR4dApAQCAtMSwz
ICsxLDMgQEAKICMgd2Vic29ja2V0IGhhbmRsZXIgbWFwIGZpbGUuCiAjIHJlcXVlc3QgdG8gJy8n
IHdpbGwgYmUgaGFuZGxlZCBieSBlY2hvLWxvY2F0aW9uX3dzaC5weQotLyAvd2Vic29ja2V0L3Rl
c3RzL2VjaG8tbG9jYXRpb24KKy8gL3dlYnNvY2tldC90ZXN0cy9lY2hvLXBhdGgKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2hhbmRzaGFrZS1mYWls
LWJ5LWNyb3NzLW9yaWdpbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dl
YnNvY2tldC90ZXN0cy9oYW5kc2hha2UtZmFpbC1ieS1jcm9zcy1vcmlnaW4tZXhwZWN0ZWQudHh0
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNTFkMTliN2ZmMzgzMDQ5OWQ0N2Q1MGQx
MjY2MWExZmEzNTM0MDNiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2hhbmRzaGFrZS1m
YWlsLWJ5LWNyb3NzLW9yaWdpbi1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwxMyAr
MCwwIEBACi1DT05TT0xFIE1FU1NBR0U6IGxpbmUgMDogRXJyb3IgZHVyaW5nIFdlYlNvY2tldCBo
YW5kc2hha2U6IG9yaWdpbiBtaXNtYXRjaDogaHR0cDovLzEyNy4wLjAuMTo4MDAwICE9IGh0dHA6
Ly9leGFtcGxlLmNvbQotTWFrZSBzdXJlIFdlYiBTb2NrZXQgY29ubmVjdGlvbiBmYWlsZWQgaWYg
b3JpZ2luIG1pc21hdGNoZXMuCi0KLU9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KLQotZG9jdW1l
bnQuZG9tYWluPTEyNy4wLjAuMQotd3MudXJsPXdzOi8vbG9jYWxob3N0Ojg4ODAvd2Vic29ja2V0
L3Rlc3RzL2ZpeGVkLW9yaWdpbgotUEFTUyBjb25uZWN0ZWQgaXMgZmFsc2UKLVBBU1Mgb3JpZ2lu
IGlzIHVuZGVmaW5lZC4KLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBD
T01QTEVURQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90
ZXN0cy9oYW5kc2hha2UtZmFpbC1ieS1jcm9zcy1vcmlnaW4uaHRtbCBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2hhbmRzaGFrZS1mYWlsLWJ5LWNyb3NzLW9yaWdpbi5o
dG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYzY2ZGU5MWEwOTU5NzE2OWQ2MzVh
NWE0NjkwZWU5YmE4MDE0NjJkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2hhbmRzaGFr
ZS1mYWlsLWJ5LWNyb3NzLW9yaWdpbi5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBA
QAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgotPGh0bWw+
Ci08aGVhZD4KLTxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vanMtdGVzdC1y
ZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgotPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzLXRl
c3QtcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXBvc3QtZnVuY3Rpb24uanMiPjwvc2NyaXB0
PgotPC9oZWFkPgotPGJvZHk+Ci08ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Ci08ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KLTxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvaGFuZHNoYWtlLWZh
aWwtYnktY3Jvc3Mtb3JpZ2luLmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2hhbmRzaGFrZS1m
YWlsLWJ5LW1heGxlbmd0aF93c2gucHkgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tl
dC90ZXN0cy9oYW5kc2hha2UtZmFpbC1ieS1tYXhsZW5ndGhfd3NoLnB5CmluZGV4IGZjN2ZmYjUz
ZmI4MjI5OWFhZTMzNDM4ZjExMzY1NjBlYmRiYmJlNjcuLmNhNzYwMjhjNzE2ODM0ZTM1NmFjMjY2
ZDQ5ZDJjYmI2ZGZmZTRjZmUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vi
c29ja2V0L3Rlc3RzL2hhbmRzaGFrZS1mYWlsLWJ5LW1heGxlbmd0aF93c2gucHkKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaGFuZHNoYWtlLWZhaWwtYnktbWF4
bGVuZ3RoX3dzaC5weQpAQCAtMSw0ICsxLDUgQEAKICMgQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJ
biBNb3Rpb24gTGltaXRlZCAyMDExLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQg
KEMpIEdvb2dsZSwgSW5jLiAyMDExLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlCiAjIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CkBAIC0xOSwyMSArMjAsMTggQEAKICMgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUwogIyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAorZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFuZHNoYWtl
IGltcG9ydCBoeWJpMDYKIGltcG9ydCB0aW1lCiAKIGRlZiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hh
bmRzaGFrZShyZXF1ZXN0KToKICAgICAjIFRoaXMgd2lsbCBjYXVzZSB0aGUgaGFuZHNoYWtlIHRv
IGZhaWwgYmVjYXVzZSBpdCBwdXNoZXMgdGhlIGxlbmd0aCBvZiB0aGUKICAgICAjIHN0YXR1cyBs
aW5lIHBhc3QgMTAyNCBjaGFyYWN0ZXJzCi0gICAgbXNnID0gIiIKLSAgICBmb3IgaSBpbiByYW5n
ZSgwLCAxMDI0KToKLSAgICAgICAgbXNnICs9ICIuIgotICAgIG1zZyArPSAnSFRUUC8xLjEgMTAx
IFdlYlNvY2tldCBQcm90b2NvbCBIYW5kc2hha2VcclxuJwotICAgIG1zZyArPSAnVXBncmFkZTog
V2ViU29ja2V0XHJcbicKKyAgICBtc2cgPSAnLicgKiAxMDI0CisgICAgbXNnICs9ICdIVFRQLzEu
MSAxMDEgU3dpdGNoaW5nIFByb3RvY29sc1xyXG4nCisgICAgbXNnICs9ICdVcGdyYWRlOiB3ZWJz
b2NrZXRcclxuJwogICAgIG1zZyArPSAnQ29ubmVjdGlvbjogVXBncmFkZVxyXG4nCi0gICAgbXNn
ICs9ICdTZWMtV2ViU29ja2V0LUxvY2F0aW9uOiAnICsgcmVxdWVzdC53c19sb2NhdGlvbiArICdc
clxuJwotICAgIG1zZyArPSAnU2VjLVdlYlNvY2tldC1PcmlnaW46ICcgKyByZXF1ZXN0LndzX29y
aWdpbiArICdcclxuJworICAgIG1zZyArPSAnU2VjLVdlYlNvY2tldC1BY2NlcHQ6ICVzXHJcbicg
JSBoeWJpMDYuY29tcHV0ZV9hY2NlcHQocmVxdWVzdC5oZWFkZXJzX2luWydTZWMtV2ViU29ja2V0
LUtleSddKVswXQogICAgIG1zZyArPSAnXHJcbicKLSAgICBtc2cgKz0gcmVxdWVzdC53c19jaGFs
bGVuZ2VfbWQ1CiAgICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXRlKG1zZykKICAgICAjIGNvbnRp
bnVlIHdyaXRpbmcgZGF0YSB1bnRpbCB0aGUgY2xpZW50IGRpc2Nvbm5lY3RzCiAgICAgd2hpbGUg
VHJ1ZToKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3Rz
L2hhbmRzaGFrZS1mYWlsLWJ5LW5vLWNvbm5lY3Rpb24taGVhZGVyX3dzaC5weSBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2hhbmRzaGFrZS1mYWlsLWJ5LW5vLWNvbm5l
Y3Rpb24taGVhZGVyX3dzaC5weQppbmRleCA0OTdmMDk0YzcyNGIwY2U1ZTI3MjIxMTRjMDRkYzk5
MmZlNzI5ZjcyLi45ZTg0YmY3ZTY0NjE3OTZlNDc1NWNlZjBhMTAyZmM0MGQ3YTkyNGM2IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oYW5kc2hha2Ut
ZmFpbC1ieS1uby1jb25uZWN0aW9uLWhlYWRlcl93c2gucHkKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaGFuZHNoYWtlLWZhaWwtYnktbm8tY29ubmVjdGlvbi1o
ZWFkZXJfd3NoLnB5CkBAIC0xLDExICsxLDExIEBACitmcm9tIG1vZF9weXdlYnNvY2tldC5oYW5k
c2hha2UgaW1wb3J0IGh5YmkwNgorCiBkZWYgd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2Uo
cmVxdWVzdCk6Ci0gICAgbXNnID0gJ0hUVFAvMS4xIDEwMSBXZWJTb2NrZXQgUHJvdG9jb2wgSGFu
ZHNoYWtlXHJcbicKLSAgICBtc2cgKz0gJ1VwZ3JhZGU6IFdlYlNvY2tldFxyXG4nCisgICAgbXNn
ID0gJ0hUVFAvMS4xIDEwMSBTd2l0Y2hpbmcgUHJvdG9jb2xzXHJcbicKKyAgICBtc2cgKz0gJ1Vw
Z3JhZGU6IHdlYnNvY2tldFxyXG4nCiAjICAgTWlzc2luZyAnQ29ubmVjdGlvbjogVXBncmFkZVxy
XG4nCi0gICAgbXNnICs9ICdTZWMtV2ViU29ja2V0LUxvY2F0aW9uOiAnICsgcmVxdWVzdC53c19s
b2NhdGlvbiArICdcclxuJwotICAgIG1zZyArPSAnU2VjLVdlYlNvY2tldC1PcmlnaW46ICcgKyBy
ZXF1ZXN0LndzX29yaWdpbiArICdcclxuJworICAgIG1zZyArPSAnU2VjLVdlYlNvY2tldC1BY2Nl
cHQ6ICVzXHJcbicgJSBoeWJpMDYuY29tcHV0ZV9hY2NlcHQocmVxdWVzdC5oZWFkZXJzX2luWydT
ZWMtV2ViU29ja2V0LUtleSddKVswXQogICAgIG1zZyArPSAnXHJcbicKLSAgICBtc2cgKz0gcmVx
dWVzdC53c19jaGFsbGVuZ2VfbWQ1CiAgICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXRlKG1zZykK
ICAgICBwcmludCBtc2cKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJz
b2NrZXQvdGVzdHMvaGFuZHNoYWtlLWZhaWwtYnktbm8tY3Jfd3NoLnB5IGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaGFuZHNoYWtlLWZhaWwtYnktbm8tY3Jfd3NoLnB5
CmluZGV4IGM1MmY4MDk1NzZkZWM0NDZhYTNlMDIzMjdiNzE4Y2EwNDAzMjc2NjMuLjMwN2VlMTA4
NzQzZDQwYmNjMWMyYmExZmU0NjRlZGY5MTNkMzQ4YjUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2hhbmRzaGFrZS1mYWlsLWJ5LW5vLWNyX3dzaC5w
eQorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oYW5kc2hha2Ut
ZmFpbC1ieS1uby1jcl93c2gucHkKQEAgLTEsMTEgKzEsMTEgQEAKK2Zyb20gbW9kX3B5d2Vic29j
a2V0LmhhbmRzaGFrZSBpbXBvcnQgaHliaTA2CisKIGRlZiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hh
bmRzaGFrZShyZXF1ZXN0KToKLSAgICBtc2cgPSAnSFRUUC8xLjEgMTAxIFdlYlNvY2tldCBQcm90
b2NvbCBIYW5kc2hha2VcbicgIyBEb2VzIG5vdCBlbmQgd2l0aCAiXHJcbiIuCi0gICAgbXNnICs9
ICdVcGdyYWRlOiBXZWJTb2NrZXRcclxuJworICAgIG1zZyA9ICdIVFRQLzEuMSAxMDEgU3dpdGNo
aW5nIFByb3RvY29sc1xuJyAjIERvZXMgbm90IGVuZCB3aXRoICJcclxuIi4KKyAgICBtc2cgKz0g
J1VwZ3JhZGU6IHdlYnNvY2tldFxyXG4nCiAgICAgbXNnICs9ICdDb25uZWN0aW9uOiBVcGdyYWRl
XHJcbicKLSAgICBtc2cgKz0gJ1NlYy1XZWJTb2NrZXQtTG9jYXRpb246ICcgKyByZXF1ZXN0Lndz
X2xvY2F0aW9uICsgJ1xyXG4nCi0gICAgbXNnICs9ICdTZWMtV2ViU29ja2V0LU9yaWdpbjogJyAr
IHJlcXVlc3Qud3Nfb3JpZ2luICsgJ1xyXG4nCisgICAgbXNnICs9ICdTZWMtV2ViU29ja2V0LUFj
Y2VwdDogJXNcclxuJyAlIGh5YmkwNi5jb21wdXRlX2FjY2VwdChyZXF1ZXN0LmhlYWRlcnNfaW5b
J1NlYy1XZWJTb2NrZXQtS2V5J10pWzBdCiAgICAgbXNnICs9ICdcclxuJwotICAgIG1zZyArPSBy
ZXF1ZXN0LndzX2NoYWxsZW5nZV9tZDUKICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdGUobXNn
KQogICAgIHByaW50IG1zZwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dl
YnNvY2tldC90ZXN0cy9oYW5kc2hha2UtZmFpbC1ieS1uby11cGdyYWRlLWhlYWRlcl93c2gucHkg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oYW5kc2hha2UtZmFpbC1i
eS1uby11cGdyYWRlLWhlYWRlcl93c2gucHkKaW5kZXggMjA0MGM2MzRmMzI0ZGY3YTgzZjdjYmQ1
MzIxNWY1YzkzOGU4ZjkxNy4uMmZiMWJhMTU5ZmQyMGJjYzdmNDJmZmM2Mzc5ZWViZjcyZjQyMDVi
YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaGFu
ZHNoYWtlLWZhaWwtYnktbm8tdXBncmFkZS1oZWFkZXJfd3NoLnB5CisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2hhbmRzaGFrZS1mYWlsLWJ5LW5vLXVwZ3JhZGUt
aGVhZGVyX3dzaC5weQpAQCAtMSwxMSArMSwxMSBAQAorZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFu
ZHNoYWtlIGltcG9ydCBoeWJpMDYKKwogZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtl
KHJlcXVlc3QpOgotICAgIG1zZyA9ICdIVFRQLzEuMSAxMDEgV2ViU29ja2V0IFByb3RvY29sIEhh
bmRzaGFrZVxyXG4nCi0jICAgTWlzc2luZyAnVXBncmFkZTogV2ViU29ja2V0XHJcbicKKyAgICBt
c2cgPSAnSFRUUC8xLjEgMTAxIFN3aXRjaGluZyBQcm90b2NvbHNcclxuJworIyAgIE1pc3Npbmcg
J1VwZ3JhZGU6IHdlYnNvY2tldFxyXG4nCiAgICAgbXNnICs9ICdDb25uZWN0aW9uOiBVcGdyYWRl
XHJcbicKLSAgICBtc2cgKz0gJ1NlYy1XZWJTb2NrZXQtTG9jYXRpb246ICcgKyByZXF1ZXN0Lndz
X2xvY2F0aW9uICsgJ1xyXG4nCi0gICAgbXNnICs9ICdTZWMtV2ViU29ja2V0LU9yaWdpbjogJyAr
IHJlcXVlc3Qud3Nfb3JpZ2luICsgJ1xyXG4nCisgICAgbXNnICs9ICdTZWMtV2ViU29ja2V0LUFj
Y2VwdDogJXNcclxuJyAlIGh5YmkwNi5jb21wdXRlX2FjY2VwdChyZXF1ZXN0LmhlYWRlcnNfaW5b
J1NlYy1XZWJTb2NrZXQtS2V5J10pWzBdCiAgICAgbXNnICs9ICdcclxuJwotICAgIG1zZyArPSBy
ZXF1ZXN0LndzX2NoYWxsZW5nZV9tZDUKICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdGUobXNn
KQogICAgIHByaW50IG1zZwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dl
YnNvY2tldC90ZXN0cy9oYW5kc2hha2UtZmFpbC1ieS1wcmVwZW5kZWQtbnVsbF93c2gucHkgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oYW5kc2hha2UtZmFpbC1ieS1w
cmVwZW5kZWQtbnVsbF93c2gucHkKaW5kZXggODRjMmI5NzRhNmRhYjRiMWFlMzNkZGUxM2Y1ZWZm
Y2YxMGYyZmExYi4uZDBmMjlmOTRhNzBlYjk0M2RkNDg0NzdiNTEyMzczMDUwNTcwMThkYSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaGFuZHNoYWtl
LWZhaWwtYnktcHJlcGVuZGVkLW51bGxfd3NoLnB5CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvd2Vic29ja2V0L3Rlc3RzL2hhbmRzaGFrZS1mYWlsLWJ5LXByZXBlbmRlZC1udWxsX3dzaC5w
eQpAQCAtMSw0ICsxLDUgQEAKICMgQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGlt
aXRlZCAyMDExLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIEdvb2dsZSwg
SW5jLiAyMDExLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlCiAjIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZSBtZXQ6CkBAIC0xOSw2ICsyMCw4IEBACiAjIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMKICMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAKK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBzdHJlYW0KK2Zyb20gbW9k
X3B5d2Vic29ja2V0LmhhbmRzaGFrZSBpbXBvcnQgaHliaTA2CiBpbXBvcnQgdGltZQogCiBkZWYg
d2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UocmVxdWVzdCk6CkBAIC0yNywxNiArMzAsMTQg
QEAgZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgogICAgICMgaGFw
cGVucyB0aGUgY2xpZW50IGRvZXMgbm90IGJ1ZmZlciBhbGwgdGhlIGZyYW1lcyBhcyB0aGUgc2Vy
dmVyIGNvbnRpbnVlcwogICAgICMgdG8gc2VuZCBtb3JlIGRhdGEgLSBpdCBzaG91bGQgYWJvcnQg
YWZ0ZXIgcmVhZGluZyBhIHJlYXNvbmFibGUgbnVtYmVyIG9mCiAgICAgIyBieXRlcyAoc2V0IGFy
Yml0cmFyaWx5IHRvIDEwMjQpLgotICAgIGZyYW1lID0gJ1wwRnJhbWUtY29udGFpbnMtdGhpcnR5
LXR3by1ieXRlcycKKyAgICBmcmFtZSA9IHN0cmVhbS5jcmVhdGVfdGV4dF9mcmFtZSgnXDBGcmFt
ZS1jb250YWlucy10aGlydHktdHdvLWJ5dGVzJykKIAogICAgIG1zZyA9IGZyYW1lCi0gICAgbXNn
ICs9ICdIVFRQLzEuMSAxMDEgV2ViU29ja2V0IFByb3RvY29sIEhhbmRzaGFrZVxyXG4nCi0gICAg
bXNnICs9ICdVcGdyYWRlOiBXZWJTb2NrZXRcclxuJworICAgIG1zZyArPSAnSFRUUC8xLjEgMTAx
IFN3aXRjaGluZyBQcm90b2NvbHNcclxuJworICAgIG1zZyArPSAnVXBncmFkZTogd2Vic29ja2V0
XHJcbicKICAgICBtc2cgKz0gJ0Nvbm5lY3Rpb246IFVwZ3JhZGVcclxuJwotICAgIG1zZyArPSAn
U2VjLVdlYlNvY2tldC1Mb2NhdGlvbjogJyArIHJlcXVlc3Qud3NfbG9jYXRpb24gKyAnXHJcbicK
LSAgICBtc2cgKz0gJ1NlYy1XZWJTb2NrZXQtT3JpZ2luOiAnICsgcmVxdWVzdC53c19vcmlnaW4g
KyAnXHJcbicKKyAgICBtc2cgKz0gJ1NlYy1XZWJTb2NrZXQtQWNjZXB0OiAlc1xyXG4nICUgaHli
aTA2LmNvbXB1dGVfYWNjZXB0KHJlcXVlc3QuaGVhZGVyc19pblsnU2VjLVdlYlNvY2tldC1LZXkn
XSlbMF0KICAgICBtc2cgKz0gJ1xyXG4nCi0gICAgbXNnICs9IHJlcXVlc3Qud3NfY2hhbGxlbmdl
X21kNQogICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0ZShtc2cpCiAgICAgIyBjb250aW51ZSB3
cml0aW5nIGRhdGEgdW50aWwgdGhlIGNsaWVudCBkaXNjb25uZWN0cwogICAgIHdoaWxlIFRydWU6
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9uby1x
dWVyeV93c2gucHkgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9uby1x
dWVyeV93c2gucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJiNzk2MTU1ZGUzMzUy
ZWVmYWVhOGIyOTY2MGJmODY1ZTg0NTA5ZGEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMv
bm8tcXVlcnlfd3NoLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotIyBDb3B5cmln
aHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0j
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0KLQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IG1zZ3V0aWwKLQotCi1kZWYg
d2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UocmVxdWVzdCk6Ci0gICAgcmVxdWVzdC53c19s
b2NhdGlvbiA9IHJlcXVlc3Qud3NfcmVzb3VyY2Uuc3BsaXQoJz8nLCAxKVswXQotCi0KLWRlZiB3
ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEocmVxdWVzdCk6Ci0gICAgbXNndXRpbC5zZW5kX21lc3Nh
Z2UocmVxdWVzdCwgcmVxdWVzdC53c19sb2NhdGlvbikKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL3BpbmctcG9uZy1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9waW5nLXBvbmctZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjBjMDRiMDNmN2U5OGEyYTdmYzU1YzZlZThkMzdhOGYzMjIxNGYwZjUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9w
aW5nLXBvbmctZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTMgQEAKK1dlYlNvY2tldCBwaW5nL3Bv
bmcgZnJhbWUgc3VwcG9ydC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitvbm9wZW4o
KSB3YXMgY2FsbGVkLgorUEFTUzogUmVjZWl2ZWQgY29ycmVjdCBwb25nIGZyYW1lCitQQVNTOiBS
ZWNlaXZlZCAiRVJST1IiCitFTkQKK29uY2xvc2UoKSB3YXMgY2FsbGVkLgorUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL3BpbmctcG9uZ193c2gucHkgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9waW5nLXBvbmdfd3NoLnB5Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjQzMDA5MjFiZDAzNDMxMzRiOWRiN2FmYTZjYTVjYzUwYmI5NTE2ODMKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9waW5nLXBv
bmdfd3NoLnB5CkBAIC0wLDAgKzEsNzQgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMg
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMg
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
IyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisKK2Zyb20gbW9k
X3B5d2Vic29ja2V0IGltcG9ydCBjb21tb24KK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBt
c2d1dGlsCitmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgc3RyZWFtCisKKworZGVmIHdlYl9z
b2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgorICAgIHBhc3MKKworCitkZWYgd2Vi
X3NvY2tldF90cmFuc2Zlcl9kYXRhKHJlcXVlc3QpOgorICAgIHRlc3RzID0gW3Rlc3Rfbm9ybWFs
X3BpbmcsIHRlc3RfbGFyZ2VfcGluZ19mcmFtZV0KKyAgICBmb3IgdGVzdCBpbiB0ZXN0czoKKyAg
ICAgICAgdGVzdChyZXF1ZXN0KQorICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICdF
TkQnKQorCisKK2RlZiB0ZXN0X25vcm1hbF9waW5nKHJlcXVlc3QpOgorICAgIGRlZiBvbl9wb25n
KHJlcXVlc3QsIG1lc3NhZ2UpOgorICAgICAgICByZXF1ZXN0Lm9uX3BvbmdfaGFuZGxlciA9IE5v
bmUKKyAgICAgICAgaWYgbWVzc2FnZSAhPSAnSGVsbG8sIHdvcmxkISc6CisgICAgICAgICAgICBt
c2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnUmVjZWl2ZWQgdW5leHBlY3RlZCBwb25nIHBh
eWxvYWQ6ICVyJyAlIG1lc3NhZ2UpCisgICAgICAgIGRvX25leHRfdGVzdChyZXF1ZXN0KQorCisg
ICAgbXNndXRpbC5zZW5kX3BpbmcocmVxdWVzdCwgJ0hlbGxvLCB3b3JsZCEnKQorCisgICAgIyBX
ZSBuZWVkIHRvIHVzZSBhIGxvdy1sZXZlbCBmdW5jdGlvbiB0byBkZXRlY3QgYSBwb25nIGZyYW1l
IGZyb20gdGhlIGNsaWVudC4KKyAgICBvcGNvZGUsIGJ5dGVzLCBmaW4sIHJlc2VydmVkMSwgcmVz
ZXJ2ZWQyLCByZXNlcnZlZDMgPSByZXF1ZXN0LndzX3N0cmVhbS5fcmVjZWl2ZV9mcmFtZSgpCisg
ICAgaWYgb3Bjb2RlICE9IGNvbW1vbi5PUENPREVfUE9ORyBvciBieXRlcyAhPSAnSGVsbG8sIHdv
cmxkIScgb3Igbm90IGZpbiBvciByZXNlcnZlZDEgb3IgcmVzZXJ2ZWQyIG9yIHJlc2VydmVkMzoK
KyAgICAgICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ0ZBSUw6IEV4cGVjdGVkIHBvbmcgZnJhbWUgYnV0IHJlY2VpdmVkOiBvcGNv
ZGUgPSAlciwgYnl0ZXMgPSAlciwgbW9yZSA9ICVyLCAnCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICdyZXNlcnZlZDEgPSAlciwgcmVzZXJ2ZWQyID0gJXIsIHJlc2VydmVkMyA9ICVyJwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIChvcGNvZGUsIGJ5dGVzLCBtb3JlLCByZXNl
cnZlZDEsIHJlc2VydmVkMiwgcmVzZXJ2ZWQzKSkKKyAgICBlbHNlOgorICAgICAgICBtc2d1dGls
LnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnUEFTUzogUmVjZWl2ZWQgY29ycmVjdCBwb25nIGZyYW1l
JykKKworCitkZWYgdGVzdF9sYXJnZV9waW5nX2ZyYW1lKHJlcXVlc3QpOgorICAgICMgQ29udHJv
bCBmcmFtZXMgY2Fubm90IGhhdmUgPjEyNSBieXRlcyBvZiBwYXlsb2FkLgorICAgICMgVGhlIGZv
bGxvd2luZyBtZXNzYWdlIHNob3VsZCBjYXVzZSBvbmVycm9yKCkgdG8gYmUgY2FsbGVkLgorICAg
IHJlcXVlc3QuY29ubmVjdGlvbi53cml0ZShzdHJlYW0uY3JlYXRlX3RleHRfZnJhbWUoJyonICog
MTI2LCBvcGNvZGU9Y29tbW9uLk9QQ09ERV9QSU5HKSkKKyAgICBtZXNzYWdlID0gbXNndXRpbC5y
ZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkKKyAgICBpZiBtZXNzYWdlICE9ICdFUlJPUic6CisgICAg
ICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICdGQUlMOiBFeHBlY3RlZCAiRVJST1Ii
IGJ1dCByZWNlaXZlZCAlcicgJSBtZXNzYWdlKQorICAgIGVsc2U6CisgICAgICAgIG1zZ3V0aWwu
c2VuZF9tZXNzYWdlKHJlcXVlc3QsICdQQVNTOiBSZWNlaXZlZCAiRVJST1IiJykKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL3NjcmlwdC10ZXN0cy9l
cnJvci1kZXRlY3QuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9z
Y3JpcHQtdGVzdHMvZXJyb3ItZGV0ZWN0LmpzCmluZGV4IDVhZGQxMDI4NGQzNDAxZmRkY2IxNmZk
YjViYTVhYTk1NDE4OGFiOTAuLjBmZTExOGY0ODc3NjI5ZTRkNzc0M2U2NGI1MDY1NTRkYzc3ZThj
MzkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL3Nj
cmlwdC10ZXN0cy9lcnJvci1kZXRlY3QuanMKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93
ZWJzb2NrZXQvdGVzdHMvc2NyaXB0LXRlc3RzL2Vycm9yLWRldGVjdC5qcwpAQCAtNSw3ICs1LDcg
QEAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKIHZhciBlcnJvckNvdW50ID0gMDsK
IAogZnVuY3Rpb24gZmluaXNoKCkgewotICAgIHNob3VsZEJlKCJlcnJvckNvdW50IiwgIjI1NSIp
OworICAgIHNob3VsZEJlKCJlcnJvckNvdW50IiwgIjEwIik7CiAgICAgaXNTdWNjZXNzZnVsbHlQ
YXJzZWQoKTsKICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQogICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9zY3JpcHQtdGVzdHMvZnJhZ21lbnRlZC1mcmFt
ZXMuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9zY3JpcHQtdGVz
dHMvZnJhZ21lbnRlZC1mcmFtZXMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzFlNDQwNjZhYTI1NTc2NjU3OWFi
OWU4MGE4MDNiMGZhZGE5NWFlNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvd2Vic29ja2V0L3Rlc3RzL3NjcmlwdC10ZXN0cy9mcmFnbWVudGVkLWZyYW1lcy5qcwpA
QCAtMCwwICsxLDUyIEBACitkZXNjcmlwdGlvbigiUmVjZWl2aW5nIGZyYWdtZW50ZWQgV2ViU29j
a2V0IGZyYW1lcyIpOworCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKworZnVuY3Rpb24gZW5kVGVzdCgp
Cit7CisgICAgaXNTdWNjZXNzZnVsbHlQYXJzZWQoKTsKKyAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7
Cit9CisKKy8vIG51bGwgbWVhbnMgb25lcnJvciBzaG91bGQgYmUgY2FsbGVkLgordmFyIGV4cGVj
dGVkTWVzc2FnZXMgPSBbIkZpcnN0IG1lc3NhZ2UiLCAiU2Vjb25kIG1lc3NhZ2UiLCAiVGhpcmQg
bWVzc2FnZSIsIG51bGwsIG51bGwsICJGb3VydGggbWVzc2FnZSJdOwordmFyIG1lc3NhZ2VzUmVj
ZWl2ZWQgPSAwOworCit2YXIgd3MgPSBuZXcgV2ViU29ja2V0KCJ3czovL2xvY2FsaG9zdDo4ODgw
L3dlYnNvY2tldC90ZXN0cy9mcmFnbWVudGVkLWZyYW1lcyIpOworCisvLyBUaGlzIHZhcmlhYmxl
IG5lZWRzIHRvIGJlIGFjY2Vzc2libGUgZnJvbSBzaG91bGRCZSgpLgordmFyIG1lc3NhZ2U7CisK
K3dzLm9ub3BlbiA9IGZ1bmN0aW9uKCkKK3sKKyAgICBkZWJ1Zygib25vcGVuKCkgd2FzIGNhbGxl
ZC4iKTsKK307CisKK3dzLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKG1lc3NhZ2VFdmVudCkKK3sKKyAg
ICBtZXNzYWdlID0gbWVzc2FnZUV2ZW50LmRhdGE7CisgICAgZGVidWcoIm9ubWVzc2FnZSgpIHdh
cyBjYWxsZWQuIE1lc3NhZ2UgPSBcIiIgKyBtZXNzYWdlICsgIlwiIik7CisgICAgaWYgKG1lc3Nh
Z2UgPT09ICJFTkQiKSB7CisgICAgICAgIHdzLmNsb3NlKCk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgc2hvdWxkQmUoIm1lc3NhZ2UiLCAiZXhwZWN0ZWRNZXNzYWdlc1ttZXNzYWdlc1Jl
Y2VpdmVkXSIpOworICAgICsrbWVzc2FnZXNSZWNlaXZlZDsKK307CisKK3dzLm9uZXJyb3IgPSBm
dW5jdGlvbigpCit7CisgICAgZGVidWcoIm9uZXJyb3IoKSB3YXMgY2FsbGVkLiIpOworICAgIHNo
b3VsZEJlTnVsbCgiZXhwZWN0ZWRNZXNzYWdlc1ttZXNzYWdlc1JlY2VpdmVkXSIpOworICAgICsr
bWVzc2FnZXNSZWNlaXZlZDsKK307CisKK3dzLm9uY2xvc2UgPSBmdW5jdGlvbigpCit7CisgICAg
ZGVidWcoIm9uY2xvc2UoKSB3YXMgY2FsbGVkLiIpOworICAgIGVuZFRlc3QoKTsKK307CisKK3Zh
ciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvc2NyaXB0LXRlc3RzL2ZyYW1lLWxlbmd0aC1sb25nZXIt
dGhhbi1idWZmZXIuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9z
Y3JpcHQtdGVzdHMvZnJhbWUtbGVuZ3RoLWxvbmdlci10aGFuLWJ1ZmZlci5qcwpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMmQ3MTg1YWM2NjJjZWJlMDc1MmMwNThlN2RiMTI4OWM0ZTI5
NjJlNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9zY3JpcHQtdGVzdHMvZnJhbWUtbGVu
Z3RoLWxvbmdlci10aGFuLWJ1ZmZlci5qcworKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAK
LWRlc2NyaXB0aW9uKCJNYWtlIHN1cmUgV2ViU29ja2V0IGNvcnJlY3RseSBza2lwIGxlbmd0aGVk
IGZyYW1lIGV2ZW4gaWYgcmVjZWl2ZWQgZGF0YSBoYXMgaW5jb21wbGV0ZSBmcmFtZS4iKTsKLWlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
d2FpdFVudGlsRG9uZSgpOwotCi12YXIgcmVjZWl2ZWRfbWVzc2FnZXMgPSBbXTsKLXZhciBleHBl
Y3RlZF9tZXNzYWdlcyA9IFsiaGVsbG8iXTsKLWZ1bmN0aW9uIGZpbmlzaCgpIHsKLSAgICBjbGVh
clRpbWVvdXQodGltZW91dElEKTsKLSAgICBkZWJ1ZyhyZWNlaXZlZF9tZXNzYWdlcy5sZW5ndGgp
OwotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVjZWl2ZWRfbWVzc2FnZXM7IGkrKykgewotICAg
ICAgICBkZWJ1ZygicmVjZWl2ZWRbIiArIGkgKyAiXT0iICsgcmVjZWl2ZWRfbWVzc2FnZXNbaV0p
OwotICAgIH0KLQotICAgIHNob3VsZEJlVHJ1ZSgiYXJlQXJyYXlzRXF1YWwocmVjZWl2ZWRfbWVz
c2FnZXMsIGV4cGVjdGVkX21lc3NhZ2VzKSIpOwotCi0gICAgaXNTdWNjZXNzZnVsbHlQYXJzZWQo
KTsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Ci19Ci0KLXZhciB3cyA9IG5ldyBXZWJTb2NrZXQo
IndzOi8vMTI3LjAuMC4xOjg4ODAvd2Vic29ja2V0L3Rlc3RzL2ZyYW1lLWxlbmd0aC1sb25nZXIt
dGhhbi1idWZmZXIiKTsKLXdzLm9ub3BlbiA9IGZ1bmN0aW9uICgpIHsKLSAgICBkZWJ1ZygiV2Vi
U29ja2V0IGlzIG9wZW4iKTsKLX07Ci13cy5vbm1lc3NhZ2UgPSBmdW5jdGlvbiAoZXZ0KSB7Ci0g
ICAgZGVidWcoInJlY2VpdmVkOiIgKyBldnQuZGF0YSk7Ci0gICAgcmVjZWl2ZWRfbWVzc2FnZXMu
cHVzaChldnQuZGF0YSk7Ci19Owotd3Mub25jbG9zZSA9IGZ1bmN0aW9uICgpIHsKLSAgICBkZWJ1
ZygiV2ViU29ja2V0IGlzIGNsb3NlZCIpOwotICAgIGZpbmlzaCgpOwotfTsKLXZhciB0aW1lb3V0
SUQgPSBzZXRUaW1lb3V0KCJmaW5pc2goKSIsIDIwMDApOwotCi12YXIgc3VjY2Vzc2Z1bGx5UGFy
c2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0
L3Rlc3RzL3NjcmlwdC10ZXN0cy9mcmFtZS1sZW5ndGgtc2tpcC5qcyBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL3NjcmlwdC10ZXN0cy9mcmFtZS1sZW5ndGgtc2tpcC5q
cwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTdiZWVhZDI4YzUzNWIxOTc1YzZhNWY3
MDU2Y2Y4N2Y4NGE4NzUwNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9zY3JpcHQtdGVz
dHMvZnJhbWUtbGVuZ3RoLXNraXAuanMKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi1k
ZXNjcmlwdGlvbigiTWFrZSBzdXJlIFdlYlNvY2tldCBjb3JyZWN0bHkgc2tpcCBsZW5ndGhlZCBm
cmFtZS4iKTsKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwotCi12YXIgcmVjZWl2ZWRfbWVzc2FnZXMgPSBb
XTsKLXZhciBleHBlY3RlZF9tZXNzYWdlcyA9IFsiaGVsbG8iLCAid29ybGQiXTsKLWZ1bmN0aW9u
IGZpbmlzaCgpIHsKLSAgICBjbGVhclRpbWVvdXQodGltZW91dElEKTsKLSAgICBkZWJ1ZyhyZWNl
aXZlZF9tZXNzYWdlcy5sZW5ndGgpOwotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVjZWl2ZWRf
bWVzc2FnZXM7IGkrKykgewotICAgICAgICBkZWJ1ZygicmVjZWl2ZWRbIiArIGkgKyAiXT0iICsg
cmVjZWl2ZWRfbWVzc2FnZXNbaV0pOwotICAgIH0KLQotICAgIHNob3VsZEJlVHJ1ZSgiYXJlQXJy
YXlzRXF1YWwocmVjZWl2ZWRfbWVzc2FnZXMsIGV4cGVjdGVkX21lc3NhZ2VzKSIpOwotCi0gICAg
aXNTdWNjZXNzZnVsbHlQYXJzZWQoKTsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Ci19Ci0KLXZh
ciB3cyA9IG5ldyBXZWJTb2NrZXQoIndzOi8vMTI3LjAuMC4xOjg4ODAvd2Vic29ja2V0L3Rlc3Rz
L2ZyYW1lLWxlbmd0aC1za2lwIik7Ci13cy5vbm9wZW4gPSBmdW5jdGlvbiAoKSB7Ci0gICAgZGVi
dWcoIldlYlNvY2tldCBpcyBvcGVuIik7Ci19Owotd3Mub25tZXNzYWdlID0gZnVuY3Rpb24gKGV2
dCkgewotICAgIGRlYnVnKCJyZWNlaXZlZDoiICsgZXZ0LmRhdGEpOwotICAgIHJlY2VpdmVkX21l
c3NhZ2VzLnB1c2goZXZ0LmRhdGEpOwotfTsKLXdzLm9uY2xvc2UgPSBmdW5jdGlvbiAoKSB7Ci0g
ICAgZGVidWcoIldlYlNvY2tldCBpcyBjbG9zZWQiKTsKLSAgICBmaW5pc2goKTsKLX07Ci12YXIg
dGltZW91dElEID0gc2V0VGltZW91dCgiZmluaXNoKCkiLCAyMDAwKTsKLQotdmFyIHN1Y2Nlc3Nm
dWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dl
YnNvY2tldC90ZXN0cy9zY3JpcHQtdGVzdHMvaGFuZHNoYWtlLWZhaWwtYnktY3Jvc3Mtb3JpZ2lu
LmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvc2NyaXB0LXRlc3Rz
L2hhbmRzaGFrZS1mYWlsLWJ5LWNyb3NzLW9yaWdpbi5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggZDZjYzcwM2U0NGUwNzZjZDI4MzdmMTVjMGE1ODMyYmJmMTU2YTM2Ny4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9zY3JpcHQtdGVzdHMvaGFuZHNoYWtlLWZhaWwtYnktY3Jv
c3Mtb3JpZ2luLmpzCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotZGVzY3JpcHRpb24o
Ik1ha2Ugc3VyZSBXZWIgU29ja2V0IGNvbm5lY3Rpb24gZmFpbGVkIGlmIG9yaWdpbiBtaXNtYXRj
aGVzLiIpOwotCi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRl
c3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKLQotdmFyIGNvbm5lY3RlZCA9IGZhbHNlOwot
dmFyIG9yaWdpbjsKLQotZnVuY3Rpb24gZW5kVGVzdCgpCi17Ci0gICAgc2hvdWxkQmVGYWxzZSgi
Y29ubmVjdGVkIik7Ci0gICAgc2hvdWxkQmVVbmRlZmluZWQoIm9yaWdpbiIpOwotICAgIGNsZWFy
VGltZW91dCh0aW1lb3V0SUQpOwotICAgIGlzU3VjY2Vzc2Z1bGx5UGFyc2VkKCk7Ci0gICAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIubm90aWZ5RG9uZSgpOwotfQotCi12YXIgdXJsID0gIndzOi8vbG9jYWxob3N0Ojg4ODAvd2Vi
c29ja2V0L3Rlc3RzL2ZpeGVkLW9yaWdpbiI7Ci1kZWJ1ZygiZG9jdW1lbnQuZG9tYWluPSIgKyBk
b2N1bWVudC5kb21haW4pOwotZGVidWcoIndzLnVybD0iICsgdXJsKTsKLXZhciB3cyA9IG5ldyBX
ZWJTb2NrZXQodXJsKTsKLQotd3Mub25vcGVuID0gZnVuY3Rpb24oKQotewotICAgIGRlYnVnKCJD
b25uZWN0ZWQiKTsKLSAgICBjb25uZWN0ZWQgPSB0cnVlOwotfTsKLQotd3Mub25tZXNzYWdlID0g
ZnVuY3Rpb24gKG1lc3NhZ2VFdmVudCkKLXsKLSAgICBvcmlnaW4gPSBtZXNzYWdlRXZlbnQuZGF0
YTsKLSAgICBkZWJ1Zygib3JpZ2luPSIgKyBvcmlnaW4pOwotICAgIHdzLmNsb3NlKCk7Ci19Owot
Ci13cy5vbmNsb3NlID0gZnVuY3Rpb24oKQotewotICAgIGVuZFRlc3QoKTsKLX07Ci0KLWZ1bmN0
aW9uIHRpbWVPdXRDYWxsYmFjaygpCi17Ci0gICAgZGVidWcoIlRpbWVkIG91dCBpbiBzdGF0ZTog
IiArIHdzLnJlYWR5U3RhdGUpOwotICAgIGVuZFRlc3QoKTsKLX0KLQotdmFyIHRpbWVvdXRJRCA9
IHNldFRpbWVvdXQodGltZU91dENhbGxiYWNrLCAzMDAwKTsKLQotdmFyIHN1Y2Nlc3NmdWxseVBh
cnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tl
dC90ZXN0cy9zY3JpcHQtdGVzdHMvcGluZy1wb25nLmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy93ZWJzb2NrZXQvdGVzdHMvc2NyaXB0LXRlc3RzL3BpbmctcG9uZy5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4y
YTFjZmRmMTFmYWIyZjk3OTU4NDRiMmQwYzUyYzA2YTdlMGNiZTcwCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvc2NyaXB0LXRlc3RzL3Bp
bmctcG9uZy5qcwpAQCAtMCwwICsxLDQ0IEBACitkZXNjcmlwdGlvbigiV2ViU29ja2V0IHBpbmcv
cG9uZyBmcmFtZSBzdXBwb3J0LiIpOworCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKworZnVuY3Rpb24g
ZW5kVGVzdCgpCit7CisgICAgaXNTdWNjZXNzZnVsbHlQYXJzZWQoKTsKKyAgICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3Rp
ZnlEb25lKCk7Cit9CisKK3ZhciB3cyA9IG5ldyBXZWJTb2NrZXQoIndzOi8vbG9jYWxob3N0Ojg4
ODAvd2Vic29ja2V0L3Rlc3RzL3BpbmctcG9uZyIpOworCisvLyBUaGlzIHZhcmlhYmxlIG5lZWRz
IHRvIGJlIGFjY2Vzc2libGUgZnJvbSBzaG91bGRCZUVxdWFsVG9TdHJpbmcoKS4KK3ZhciBtZXNz
YWdlOworCit3cy5vbm9wZW4gPSBmdW5jdGlvbigpCit7CisgICAgZGVidWcoIm9ub3BlbigpIHdh
cyBjYWxsZWQuIik7Cit9OworCit3cy5vbm1lc3NhZ2UgPSBmdW5jdGlvbihtZXNzYWdlRXZlbnQp
Cit7CisgICAgbWVzc2FnZSA9IG1lc3NhZ2VFdmVudC5kYXRhOworICAgIGRlYnVnKG1lc3NhZ2Up
OworICAgIGlmIChtZXNzYWdlID09PSAnRU5EJykgeworICAgICAgICB3cy5jbG9zZSgpOworICAg
ICAgICByZXR1cm47CisgICAgfQorfTsKKword3Mub25lcnJvciA9IGZ1bmN0aW9uKCkKK3sKKyAg
ICB3cy5zZW5kKCdFUlJPUicpOworfTsKKword3Mub25jbG9zZSA9IGZ1bmN0aW9uKCkKK3sKKyAg
ICBkZWJ1Zygib25jbG9zZSgpIHdhcyBjYWxsZWQuIik7CisgICAgZW5kVGVzdCgpOworfTsKKwor
dmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9zY3JpcHQtdGVzdHMvdXJsLW5vLXRyYWlsaW5nLXNs
YXNoLmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvc2NyaXB0LXRl
c3RzL3VybC1uby10cmFpbGluZy1zbGFzaC5qcwppbmRleCA0ZThkOTIwMGNhYjkzOTIzYjg5MzY0
ZTMxY2RhMWE5MmMxOGNhYzhmLi41N2IzZTM2MzE5NjdjNDViM2NkNzQ1YmFlNGYzNTkyYzAyYTY4
YTQ5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9z
Y3JpcHQtdGVzdHMvdXJsLW5vLXRyYWlsaW5nLXNsYXNoLmpzCisrKyBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL3NjcmlwdC10ZXN0cy91cmwtbm8tdHJhaWxpbmctc2xh
c2guanMKQEAgLTQsMTMgKzQsMTMgQEAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikK
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CiAKIHZhciB1cmwgPSAi
d3M6Ly8xMjcuMC4wLjE6ODg4MCI7Ci12YXIgaGFuZHNoYWtlX3N1Y2Nlc3MgPSBmYWxzZTsKLXZh
ciB3c19sb2NhdGlvbjsKK3ZhciBoYW5kc2hha2VTdWNjZXNzID0gZmFsc2U7Cit2YXIgYWN0dWFs
UGF0aDsKIAogZnVuY3Rpb24gZW5kVGVzdCgpCiB7Ci0gICAgc2hvdWxkQmVUcnVlKCJoYW5kc2hh
a2Vfc3VjY2VzcyIpOwotICAgIHNob3VsZEJlKCJ3c19sb2NhdGlvbiIsICcid3M6Ly8xMjcuMC4w
LjE6ODg4MC8iJyk7CisgICAgc2hvdWxkQmVUcnVlKCJoYW5kc2hha2VTdWNjZXNzIik7CisgICAg
c2hvdWxkQmUoImFjdHVhbFBhdGgiLCAnIi8iJyk7CiAgICAgaXNTdWNjZXNzZnVsbHlQYXJzZWQo
KTsKICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQogICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CkBAIC0yMCwxMSArMjAsMTEgQEAgZnVuY3Rpb24g
ZW5kVGVzdCgpCiB2YXIgd3MgPSBuZXcgV2ViU29ja2V0KHVybCk7CiB3cy5vbm9wZW4gPSBmdW5j
dGlvbiAoKSB7CiAgICAgZGVidWcoIldlYlNvY2tldCBpcyBvcGVuIik7Ci0gICAgaGFuZHNoYWtl
X3N1Y2Nlc3MgPSB0cnVlOworICAgIGhhbmRzaGFrZVN1Y2Nlc3MgPSB0cnVlOwogfTsKIHdzLm9u
bWVzc2FnZSA9IGZ1bmN0aW9uIChldnQpIHsKLSAgICB3c19sb2NhdGlvbiA9IGV2dC5kYXRhOwot
ICAgIGRlYnVnKCJyZWNlaXZlZDoiICsgd3NfbG9jYXRpb24pOworICAgIGFjdHVhbFBhdGggPSBl
dnQuZGF0YTsKKyAgICBkZWJ1ZygicmVjZWl2ZWQ6IiArIGFjdHVhbFBhdGgpOwogICAgIHdzLmNs
b3NlKCk7CiB9Owogd3Mub25jbG9zZSA9IGZ1bmN0aW9uICgpIHsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL3NjcmlwdC10ZXN0cy91cmwtd2l0aC1j
cmVkZW50aWFsLmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvc2Ny
aXB0LXRlc3RzL3VybC13aXRoLWNyZWRlbnRpYWwuanMKaW5kZXggYjRiNzIzNWM5ZTUzMmNlMjlk
NmQ0NjA2MDgxM2IwODY5Njg5ZjhiMS4uZDYyOWJiMjdmYjZlMzc1OGZiODM4ODVkMzk5MzBlYzJm
M2Y1MTRhOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVz
dHMvc2NyaXB0LXRlc3RzL3VybC13aXRoLWNyZWRlbnRpYWwuanMKKysrIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvc2NyaXB0LXRlc3RzL3VybC13aXRoLWNyZWRlbnRp
YWwuanMKQEAgLTMsMTUgKzMsMTYgQEAgZGVzY3JpcHRpb24oIk1ha2Ugc3VyZSBoYW5kc2hha2Ug
d2l0aCBVUkwgd2l0aCBjcmVkZW50YWlsIGluZm8gc3VjY2Vzcy4iKTsKIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCiAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9u
ZSgpOwogCi12YXIgdXJsID0gIndzOi8vdXNlcjpwYXNzQDEyNy4wLjAuMTo4ODgwL3dlYnNvY2tl
dC90ZXN0cy9lY2hvLWxvY2F0aW9uIjsKLXZhciBoYW5kc2hha2Vfc3VjY2VzcyA9IGZhbHNlOwot
dmFyIHdzX2xvY2F0aW9uOwordmFyIHVybCA9ICJ3czovL3VzZXI6cGFzc0AxMjcuMC4wLjE6ODg4
MC93ZWJzb2NrZXQvdGVzdHMvZWNoby1ob3N0IjsKK3ZhciBleHBlY3RlZEhvc3QgPSAiMTI3LjAu
MC4xOjg4ODAiOwordmFyIGhhbmRzaGFrZVN1Y2Nlc3MgPSBmYWxzZTsKK3ZhciBhY3R1YWxIb3N0
OwogCiBmdW5jdGlvbiBlbmRUZXN0KCkKIHsKICAgICBjbGVhclRpbWVvdXQodGltZW91dElEKTsK
LSAgICBzaG91bGRCZVRydWUoImhhbmRzaGFrZV9zdWNjZXNzIik7Ci0gICAgc2hvdWxkQmUoIndz
X2xvY2F0aW9uIiwgJyJ3czovLzEyNy4wLjAuMTo4ODgwL3dlYnNvY2tldC90ZXN0cy9lY2hvLWxv
Y2F0aW9uIicpOworICAgIHNob3VsZEJlVHJ1ZSgiaGFuZHNoYWtlU3VjY2VzcyIpOworICAgIHNo
b3VsZEJlKCJhY3R1YWxIb3N0IiwgImV4cGVjdGVkSG9zdCIpOwogICAgIGlzU3VjY2Vzc2Z1bGx5
UGFyc2VkKCk7CiAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKICAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwpAQCAtMjEsMTEgKzIyLDExIEBAIGRl
YnVnKCJ1cmw9IiArIHVybCk7CiB2YXIgd3MgPSBuZXcgV2ViU29ja2V0KHVybCk7CiB3cy5vbm9w
ZW4gPSBmdW5jdGlvbiAoKSB7CiAgICAgZGVidWcoIldlYlNvY2tldCBpcyBvcGVuIik7Ci0gICAg
aGFuZHNoYWtlX3N1Y2Nlc3MgPSB0cnVlOworICAgIGhhbmRzaGFrZVN1Y2Nlc3MgPSB0cnVlOwog
fTsKIHdzLm9ubWVzc2FnZSA9IGZ1bmN0aW9uIChldnQpIHsKLSAgICB3c19sb2NhdGlvbiA9IGV2
dC5kYXRhOwotICAgIGRlYnVnKCJyZWNlaXZlZDoiICsgd3NfbG9jYXRpb24pOworICAgIGFjdHVh
bEhvc3QgPSBldnQuZGF0YTsKKyAgICBkZWJ1ZygicmVjZWl2ZWQ6IiArIGFjdHVhbEhvc3QpOwog
ICAgIHdzLmNsb3NlKCk7CiB9Owogd3Mub25jbG9zZSA9IGZ1bmN0aW9uICgpIHsKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL3NjcmlwdC10ZXN0cy91
cmwtd2l0aC1lbXB0eS1xdWVyeS5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0
L3Rlc3RzL3NjcmlwdC10ZXN0cy91cmwtd2l0aC1lbXB0eS1xdWVyeS5qcwppbmRleCAwYjQ3OGI2
ODEwNWYwYjBjNTM4ZTQzMmViMDNmNTljODQ1ZmFlNTcwLi4xZTE2NDI5MTIwOTY1ZGU3NjFmYzFk
YTcyNjg4MTQ1MTgwMWM3ZDUzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dl
YnNvY2tldC90ZXN0cy9zY3JpcHQtdGVzdHMvdXJsLXdpdGgtZW1wdHktcXVlcnkuanMKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvc2NyaXB0LXRlc3RzL3VybC13
aXRoLWVtcHR5LXF1ZXJ5LmpzCkBAIC0zLDE1ICszLDE2IEBAIGRlc2NyaXB0aW9uKCJNYWtlIHN1
cmUgaGFuZHNoYWtlIHdpdGggVVJMIHdpdGggZW1wdHkgcXVlcnkgY29tcG9uZW50cyBzdWNjZXNz
LiIpCiBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQogICAgIGxheW91dFRlc3RDb250
cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKIAotdmFyIHVybCA9ICJ3czovLzEyNy4wLjAuMTo4ODgw
L3dlYnNvY2tldC90ZXN0cy9lY2hvLWxvY2F0aW9uPyI7Ci12YXIgaGFuZHNoYWtlX3N1Y2Nlc3Mg
PSBmYWxzZTsKLXZhciB3c19sb2NhdGlvbjsKK3ZhciB1cmwgPSAid3M6Ly8xMjcuMC4wLjE6ODg4
MC93ZWJzb2NrZXQvdGVzdHMvZWNoby1wYXRoPyI7Cit2YXIgZXhwZWN0ZWRQYXRoID0gIi93ZWJz
b2NrZXQvdGVzdHMvZWNoby1wYXRoPyI7Cit2YXIgaGFuZHNoYWtlU3VjY2VzcyA9IGZhbHNlOwor
dmFyIGFjdHVhbFBhdGg7CiAKIGZ1bmN0aW9uIGVuZFRlc3QoKQogewogICAgIGNsZWFyVGltZW91
dCh0aW1lb3V0SUQpOwotICAgIHNob3VsZEJlVHJ1ZSgiaGFuZHNoYWtlX3N1Y2Nlc3MiKTsKLSAg
ICBzaG91bGRCZSgid3NfbG9jYXRpb24iLCAidXJsIik7CisgICAgc2hvdWxkQmVUcnVlKCJoYW5k
c2hha2VTdWNjZXNzIik7CisgICAgc2hvdWxkQmUoImFjdHVhbFBhdGgiLCAiZXhwZWN0ZWRQYXRo
Iik7CiAgICAgaXNTdWNjZXNzZnVsbHlQYXJzZWQoKTsKICAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQogICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7
CkBAIC0yMSwxMSArMjIsMTEgQEAgZGVidWcoInVybD0iICsgdXJsKTsKIHZhciB3cyA9IG5ldyBX
ZWJTb2NrZXQodXJsKTsKIHdzLm9ub3BlbiA9IGZ1bmN0aW9uICgpIHsKICAgICBkZWJ1ZygiV2Vi
U29ja2V0IGlzIG9wZW4iKTsKLSAgICBoYW5kc2hha2Vfc3VjY2VzcyA9IHRydWU7CisgICAgaGFu
ZHNoYWtlU3VjY2VzcyA9IHRydWU7CiB9Owogd3Mub25tZXNzYWdlID0gZnVuY3Rpb24gKGV2dCkg
ewotICAgIHdzX2xvY2F0aW9uID0gZXZ0LmRhdGE7Ci0gICAgZGVidWcoInJlY2VpdmVkOiIgKyB3
c19sb2NhdGlvbik7CisgICAgYWN0dWFsUGF0aCA9IGV2dC5kYXRhOworICAgIGRlYnVnKCJyZWNl
aXZlZDoiICsgYWN0dWFsUGF0aCk7CiAgICAgd3MuY2xvc2UoKTsKIH07CiB3cy5vbmNsb3NlID0g
ZnVuY3Rpb24gKCkgewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2Nr
ZXQvdGVzdHMvc2NyaXB0LXRlc3RzL3VybC13aXRoLXF1ZXJ5LWZvci1uby1xdWVyeS5qcyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL3NjcmlwdC10ZXN0cy91cmwtd2l0
aC1xdWVyeS1mb3Itbm8tcXVlcnkuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVk
M2MzMzI4ZTg2NzkxYjEzNmFmMzZlNzlkOWM0Y2VkZDcyM2RlZDcuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJz
b2NrZXQvdGVzdHMvc2NyaXB0LXRlc3RzL3VybC13aXRoLXF1ZXJ5LWZvci1uby1xdWVyeS5qcwor
KysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLWRlc2NyaXB0aW9uKCJNYWtlIHN1cmUgaGFu
ZHNoYWtlIHdpdGggVVJMIHdpdGggcXVlcnkgY29tcG9uZW50cyBmYWlscyBhZ2FpbnN0IHNlcnZl
ciB0aGF0IGRvZXNuJ3Qgc3VwcG9ydCBxdWVyeSBjb21wb25lbnQuIik7Ci0KLWlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGls
RG9uZSgpOwotCi12YXIgdXJsID0gIndzOi8vMTI3LjAuMC4xOjg4ODAvd2Vic29ja2V0L3Rlc3Rz
L25vLXF1ZXJ5PyI7Ci12YXIgaGFuZHNoYWtlX3N1Y2Nlc3MgPSBmYWxzZTsKLXZhciB3c19sb2Nh
dGlvbjsKLQotZnVuY3Rpb24gZW5kVGVzdCgpCi17Ci0gICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRJ
RCk7Ci0gICAgc2hvdWxkQmVGYWxzZSgiaGFuZHNoYWtlX3N1Y2Nlc3MiKTsKLSAgICBzaG91bGRC
ZVVuZGVmaW5lZCgid3NfbG9jYXRpb24iKTsKLSAgICBpc1N1Y2Nlc3NmdWxseVBhcnNlZCgpOwot
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLm5vdGlmeURvbmUoKTsKLX0KLQotZGVidWcoInVybD0iICsgdXJsKTsKLXZhciB3
cyA9IG5ldyBXZWJTb2NrZXQodXJsKTsKLXdzLm9ub3BlbiA9IGZ1bmN0aW9uICgpIHsKLSAgICBk
ZWJ1ZygiV2ViU29ja2V0IGlzIG9wZW4iKTsKLSAgICBoYW5kc2hha2Vfc3VjY2VzcyA9IHRydWU7
Ci19Owotd3Mub25tZXNzZ2UgPSBmdW5jdGlvbiAoZXZ0KSB7Ci0gICAgd3NfbG9jYXRpb24gPSBl
dnQuZGF0YTsKLSAgICBkZWJ1ZygicmVjZWl2ZWQ6IiArIHdzX2xvY2F0aW9uKTsKLSAgICB3cy5j
bG9zZSgpOwotfTsKLXdzLm9uY2xvc2UgPSBmdW5jdGlvbiAoKSB7Ci0gICAgZGVidWcoIldlYlNv
Y2tldCBpcyBjbG9zZWQiKTsKLSAgICBlbmRUZXN0KCk7Ci19OwotdmFyIHRpbWVvdXRJRCA9IHNl
dFRpbWVvdXQoImVuZFRlc3QoKSIsIDIwMDApOwotCi12YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0g
dHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3Rz
L3NjcmlwdC10ZXN0cy91cmwtd2l0aC1xdWVyeS5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
d2Vic29ja2V0L3Rlc3RzL3NjcmlwdC10ZXN0cy91cmwtd2l0aC1xdWVyeS5qcwppbmRleCA2MTg2
MjhiOGI0ZTY1YzMwYzZlY2FlNjllMjI5MjFkYzZiZjM5NjQ5Li5mNDZlNjg4ODE3YmFiZDcxMjJm
NjFlNzY1NTJiYzllYmQ1ODUyYWZkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3dlYnNvY2tldC90ZXN0cy9zY3JpcHQtdGVzdHMvdXJsLXdpdGgtcXVlcnkuanMKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvc2NyaXB0LXRlc3RzL3VybC13aXRo
LXF1ZXJ5LmpzCkBAIC0zLDE1ICszLDE2IEBAIGRlc2NyaXB0aW9uKCJNYWtlIHN1cmUgaGFuZHNo
YWtlIHdpdGggVVJMIHdpdGggcXVlcnkgY29tcG9uZW50cyBzdWNjZXNzLiIpOwogaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50
aWxEb25lKCk7CiAKLXZhciB1cmwgPSAid3M6Ly8xMjcuMC4wLjE6ODg4MC93ZWJzb2NrZXQvdGVz
dHMvZWNoby1sb2NhdGlvbj9xPXYiOwotdmFyIGhhbmRzaGFrZV9zdWNjZXNzID0gZmFsc2U7Ci12
YXIgd3NfbG9jYXRpb247Cit2YXIgdXJsID0gIndzOi8vMTI3LjAuMC4xOjg4ODAvd2Vic29ja2V0
L3Rlc3RzL2VjaG8tcGF0aD9xPXYiOwordmFyIGV4cGVjdGVkUGF0aCA9ICIvd2Vic29ja2V0L3Rl
c3RzL2VjaG8tcGF0aD9xPXYiOwordmFyIGhhbmRzaGFrZVN1Y2Nlc3MgPSBmYWxzZTsKK3ZhciBh
Y3R1YWxQYXRoOwogCiBmdW5jdGlvbiBlbmRUZXN0KCkKIHsKICAgICBjbGVhclRpbWVvdXQodGlt
ZW91dElEKTsKLSAgICBzaG91bGRCZVRydWUoImhhbmRzaGFrZV9zdWNjZXNzIik7Ci0gICAgc2hv
dWxkQmUoIndzX2xvY2F0aW9uIiwgInVybCIpOworICAgIHNob3VsZEJlVHJ1ZSgiaGFuZHNoYWtl
U3VjY2VzcyIpOworICAgIHNob3VsZEJlKCJhY3R1YWxQYXRoIiwgImV4cGVjdGVkUGF0aCIpOwog
ICAgIGlzU3VjY2Vzc2Z1bGx5UGFyc2VkKCk7CiAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwpAQCAt
MjEsMTEgKzIyLDExIEBAIGRlYnVnKCJ1cmw9IiArIHVybCk7CiB2YXIgd3MgPSBuZXcgV2ViU29j
a2V0KHVybCk7CiB3cy5vbm9wZW4gPSBmdW5jdGlvbiAoKSB7CiAgICAgZGVidWcoIldlYlNvY2tl
dCBpcyBvcGVuIik7Ci0gICAgaGFuZHNoYWtlX3N1Y2Nlc3MgPSB0cnVlOworICAgIGhhbmRzaGFr
ZVN1Y2Nlc3MgPSB0cnVlOwogfTsKIHdzLm9ubWVzc2FnZSA9IGZ1bmN0aW9uIChldnQpIHsKLSAg
ICB3c19sb2NhdGlvbiA9IGV2dC5kYXRhOwotICAgIGRlYnVnKCJyZWNlaXZlZDoiICsgd3NfbG9j
YXRpb24pOworICAgIGFjdHVhbFBhdGggPSBldnQuZGF0YTsKKyAgICBkZWJ1ZygicmVjZWl2ZWQ6
IiArIGFjdHVhbFBhdGgpOwogICAgIHdzLmNsb3NlKCk7CiB9Owogd3Mub25jbG9zZSA9IGZ1bmN0
aW9uICgpIHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rl
c3RzL3NlbmQyX3dzaC5weSBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3Rz
L3NlbmQyX3dzaC5weQppbmRleCAwM2ZjNmM2NzliZWIzOTE0OGNjMjYwNjYyNzY4MWMyYzA5N2Fh
YzIxLi42ZjJmZWY0ZGY3Y2ExYTkwNGYwMmI5MTczYjMyNGY2N2Q2NTM4Y2I3IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9zZW5kMl93c2gucHkKKysr
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvc2VuZDJfd3NoLnB5CkBA
IC0xLDcgKzEsOSBAQAorZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IHN0cmVhbQorCiBkZWYg
d2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UocmVxdWVzdCk6CiAgICAgcGFzcyAjIEFsd2F5
cyBhY2NlcHQuCiAKIGRlZiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEocmVxdWVzdCk6CiAgICAg
IyBzZW5kIDIgbWVzc2FnZXMgaW4gb25lIHBhY2tldC4KLSAgICByZXF1ZXN0LmNvbm5lY3Rpb24u
d3JpdGUoIlx4MDAiICsgImZpcnN0IG1lc3NhZ2UiICsgIlx4ZmYiICsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIlx4MDAiICsgInNlY29uZCBtZXNzYWdlIiArICJceGZmIikKKyAgICBt
ZXNzYWdlID0gc3RyZWFtLmNyZWF0ZV90ZXh0X2ZyYW1lKCJmaXJzdCBtZXNzYWdlIikgKyBzdHJl
YW0uY3JlYXRlX3RleHRfZnJhbWUoInNlY29uZCBtZXNzYWdlIikKKyAgICByZXF1ZXN0LmNvbm5l
Y3Rpb24ud3JpdGUobWVzc2FnZSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
d2Vic29ja2V0L3Rlc3RzL3Vua25vd24tZnJhbWUtdHlwZV93c2gucHkgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy91bmtub3duLWZyYW1lLXR5cGVfd3NoLnB5CmluZGV4
IDBmZjMzOWM0Y2U2MzIwNTMyODdjMTVkODY3MjkzODE0MzJiYjMzNmEuLjdiNmMxOTgwY2Y3OTRl
Mzg4ZTMxNDlkYzBlMWZjYTlhMWUxODQ0MDcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvd2Vic29ja2V0L3Rlc3RzL3Vua25vd24tZnJhbWUtdHlwZV93c2gucHkKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvdW5rbm93bi1mcmFtZS10eXBlX3dz
aC5weQpAQCAtMSwxMiArMSwxNCBAQAogZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IG1zZ3V0
aWwKK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBzdHJlYW0KIAogZGVmIHdlYl9zb2NrZXRf
ZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgogICAgIHBhc3MKIAogZGVmIHdlYl9zb2NrZXRf
dHJhbnNmZXJfZGF0YShyZXF1ZXN0KToKLSAgICBmb3IgaSBpbiByYW5nZSgxLCAxMjgpOgotICAg
ICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdGUoY2hyKGkpICsgc3RyKGkpICsgJ1x4ZmYnKQot
ICAgIGZvciBpIGluIHJhbmdlKDEyOCwgMjU2KToKLSAgICAgICAgbXNnID0gc3RyKGkpCi0gICAg
ICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0ZShjaHIoaSkgKyBjaHIobGVuKG1zZykpICsgbXNn
KQorICAgIGZvciBvcGNvZGUgaW4gWzB4MywgMHg0LCAweDUsIDB4NiwgMHg3LCAweEIsIDB4Qywg
MHhELCAweEUsIDB4Rl06CisgICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0ZShjcmVhdGVf
ZnJhbWUob3Bjb2RlKSkKICAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnZG9uZScp
CisKK2RlZiBjcmVhdGVfZnJhbWUob3Bjb2RlKToKKyAgICBwYXlsb2FkID0gJ1RoaXMgdGV4dCBz
aG91bGQgYmUgaWdub3JlZC4nCisgICAgcmV0dXJuIHN0cmVhbS5jcmVhdGVfaGVhZGVyKG9wY29k
ZSwgbGVuKHBheWxvYWQpLCAxLCAwLCAwLCAwLCAwKSArIHBheWxvYWQKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL3VybC1uby10cmFpbGluZy1zbGFz
aC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy91
cmwtbm8tdHJhaWxpbmctc2xhc2gtZXhwZWN0ZWQudHh0CmluZGV4IDc1YzkwY2YxYTMxZjZiMzg3
YzUzYjQ2Zjg1ZjlkZTQ4NzYwNDgwNzguLjc4ODJjMmUwNDU2M2FmNWNiNWU5ZmNjYTM5MTBlNTU1
YzI1MTVlOTUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rl
c3RzL3VybC1uby10cmFpbGluZy1zbGFzaC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvdXJsLW5vLXRyYWlsaW5nLXNsYXNoLWV4cGVjdGVk
LnR4dApAQCAtMywxMCArMywxMCBAQCBVUkwgdGhhdCBkb2Vzbid0IGhhdmUgdHJhaWxpbmcgc2xh
c2ggc2hvdWxkIG5vdCBlbWl0IGVtcHR5IFJlcXVlc3QtVVJJLgogT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgogCiBXZWJTb2NrZXQgaXMgb3BlbgotcmVjZWl2ZWQ6d3M6Ly8xMjcuMC4wLjE6ODg4
MC8KK3JlY2VpdmVkOi8KIFdlYlNvY2tldCBpcyBjbG9zZWQKLVBBU1MgaGFuZHNoYWtlX3N1Y2Nl
c3MgaXMgdHJ1ZQotUEFTUyB3c19sb2NhdGlvbiBpcyAid3M6Ly8xMjcuMC4wLjE6ODg4MC8iCitQ
QVNTIGhhbmRzaGFrZVN1Y2Nlc3MgaXMgdHJ1ZQorUEFTUyBhY3R1YWxQYXRoIGlzICIvIgogUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy91cmwtd2l0aC1jcmVkZW50
aWFsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3Rz
L3VybC13aXRoLWNyZWRlbnRpYWwtZXhwZWN0ZWQudHh0CmluZGV4IGRhNzlkNTI5YTdkM2Q2YmM4
N2RhYzQzZjRmMWZjYjNlMWJjZDI1ZWYuLjE5NGY0M2IwZjQzNzc4ZTA3OThlYzc5YjBhZmFkMTky
YzMwNDgyZDQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rl
c3RzL3VybC13aXRoLWNyZWRlbnRpYWwtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL3VybC13aXRoLWNyZWRlbnRpYWwtZXhwZWN0ZWQudHh0
CkBAIC0yLDEyICsyLDEyIEBAIE1ha2Ugc3VyZSBoYW5kc2hha2Ugd2l0aCBVUkwgd2l0aCBjcmVk
ZW50YWlsIGluZm8gc3VjY2Vzcy4KIAogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCi11cmw9
d3M6Ly91c2VyOnBhc3NAMTI3LjAuMC4xOjg4ODAvd2Vic29ja2V0L3Rlc3RzL2VjaG8tbG9jYXRp
b24KK3VybD13czovL3VzZXI6cGFzc0AxMjcuMC4wLjE6ODg4MC93ZWJzb2NrZXQvdGVzdHMvZWNo
by1ob3N0CiBXZWJTb2NrZXQgaXMgb3BlbgotcmVjZWl2ZWQ6d3M6Ly8xMjcuMC4wLjE6ODg4MC93
ZWJzb2NrZXQvdGVzdHMvZWNoby1sb2NhdGlvbgorcmVjZWl2ZWQ6MTI3LjAuMC4xOjg4ODAKIFdl
YlNvY2tldCBpcyBjbG9zZWQKLVBBU1MgaGFuZHNoYWtlX3N1Y2Nlc3MgaXMgdHJ1ZQotUEFTUyB3
c19sb2NhdGlvbiBpcyAid3M6Ly8xMjcuMC4wLjE6ODg4MC93ZWJzb2NrZXQvdGVzdHMvZWNoby1s
b2NhdGlvbiIKK1BBU1MgaGFuZHNoYWtlU3VjY2VzcyBpcyB0cnVlCitQQVNTIGFjdHVhbEhvc3Qg
aXMgZXhwZWN0ZWRIb3N0CiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1Qg
Q09NUExFVEUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rl
c3RzL3VybC13aXRoLWVtcHR5LXF1ZXJ5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvd2Vic29ja2V0L3Rlc3RzL3VybC13aXRoLWVtcHR5LXF1ZXJ5LWV4cGVjdGVkLnR4dApp
bmRleCBmMmNiOWUzY2QxNjE5OGZiZTQxYTMxMzQ2YjU3MTIzZTM3YTZkZmZmLi5hMGRjNGZhNWMy
MjBiNGJmMzlkMDM1ZWU5ZWEyYTA5MWMzNmQwODc0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy91cmwtd2l0aC1lbXB0eS1xdWVyeS1leHBlY3RlZC50
eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvdXJsLXdpdGgt
ZW1wdHktcXVlcnktZXhwZWN0ZWQudHh0CkBAIC0yLDEyICsyLDEyIEBAIE1ha2Ugc3VyZSBoYW5k
c2hha2Ugd2l0aCBVUkwgd2l0aCBlbXB0eSBxdWVyeSBjb21wb25lbnRzIHN1Y2Nlc3MuCiAKIE9u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAotdXJsPXdzOi8vMTI3LjAuMC4xOjg4ODAvd2Vic29j
a2V0L3Rlc3RzL2VjaG8tbG9jYXRpb24/Cit1cmw9d3M6Ly8xMjcuMC4wLjE6ODg4MC93ZWJzb2Nr
ZXQvdGVzdHMvZWNoby1wYXRoPwogV2ViU29ja2V0IGlzIG9wZW4KLXJlY2VpdmVkOndzOi8vMTI3
LjAuMC4xOjg4ODAvd2Vic29ja2V0L3Rlc3RzL2VjaG8tbG9jYXRpb24/CityZWNlaXZlZDovd2Vi
c29ja2V0L3Rlc3RzL2VjaG8tcGF0aD8KIFdlYlNvY2tldCBpcyBjbG9zZWQKLVBBU1MgaGFuZHNo
YWtlX3N1Y2Nlc3MgaXMgdHJ1ZQotUEFTUyB3c19sb2NhdGlvbiBpcyB1cmwKK1BBU1MgaGFuZHNo
YWtlU3VjY2VzcyBpcyB0cnVlCitQQVNTIGFjdHVhbFBhdGggaXMgZXhwZWN0ZWRQYXRoCiBQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL3VybC13aXRoLXF1ZXJ5LWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL3VybC13
aXRoLXF1ZXJ5LWV4cGVjdGVkLnR4dAppbmRleCA0OWU3YzI4NzFjYjE5YmE3M2U4NTI1NDhkYWFl
ZDgzYWQyYWE4NzFmLi45ZGU3ZTUzNTM1NTcyNDk4ZDY0YmFhMTk4YWRmYzFhNmUwNmM3NjZkIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy91cmwtd2l0
aC1xdWVyeS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2Nr
ZXQvdGVzdHMvdXJsLXdpdGgtcXVlcnktZXhwZWN0ZWQudHh0CkBAIC0yLDEyICsyLDEyIEBAIE1h
a2Ugc3VyZSBoYW5kc2hha2Ugd2l0aCBVUkwgd2l0aCBxdWVyeSBjb21wb25lbnRzIHN1Y2Nlc3Mu
CiAKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAotdXJsPXdzOi8vMTI3LjAuMC4xOjg4ODAv
d2Vic29ja2V0L3Rlc3RzL2VjaG8tbG9jYXRpb24/cT12Cit1cmw9d3M6Ly8xMjcuMC4wLjE6ODg4
MC93ZWJzb2NrZXQvdGVzdHMvZWNoby1wYXRoP3E9dgogV2ViU29ja2V0IGlzIG9wZW4KLXJlY2Vp
dmVkOndzOi8vMTI3LjAuMC4xOjg4ODAvd2Vic29ja2V0L3Rlc3RzL2VjaG8tbG9jYXRpb24/cT12
CityZWNlaXZlZDovd2Vic29ja2V0L3Rlc3RzL2VjaG8tcGF0aD9xPXYKIFdlYlNvY2tldCBpcyBj
bG9zZWQKLVBBU1MgaGFuZHNoYWtlX3N1Y2Nlc3MgaXMgdHJ1ZQotUEFTUyB3c19sb2NhdGlvbiBp
cyB1cmwKK1BBU1MgaGFuZHNoYWtlU3VjY2VzcyBpcyB0cnVlCitQQVNTIGFjdHVhbFBhdGggaXMg
ZXhwZWN0ZWRQYXRoCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09N
UExFVEUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3Rz
L3VybC13aXRoLXF1ZXJ5LWZvci1uby1xdWVyeS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy91cmwtd2l0aC1xdWVyeS1mb3Itbm8tcXVlcnktZXhw
ZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiOWE3MTNlMTVmZTM0ODM3
OGQ5ZmI3YTYxZmUxMGE0OTY4ZWJmMWE0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL3Vy
bC13aXRoLXF1ZXJ5LWZvci1uby1xdWVyeS1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAt
MSwxMyArMCwwIEBACi1DT05TT0xFIE1FU1NBR0U6IGxpbmUgMDogRXJyb3IgZHVyaW5nIFdlYlNv
Y2tldCBoYW5kc2hha2U6IGxvY2F0aW9uIG1pc21hdGNoOiB3czovLzEyNy4wLjAuMTo4ODgwL3dl
YnNvY2tldC90ZXN0cy9uby1xdWVyeT8gIT0gL3dlYnNvY2tldC90ZXN0cy9uby1xdWVyeQotTWFr
ZSBzdXJlIGhhbmRzaGFrZSB3aXRoIFVSTCB3aXRoIHF1ZXJ5IGNvbXBvbmVudHMgZmFpbHMgYWdh
aW5zdCBzZXJ2ZXIgdGhhdCBkb2Vzbid0IHN1cHBvcnQgcXVlcnkgY29tcG9uZW50LgotCi1PbiBz
dWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dl
ZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLXVybD13czovLzEyNy4wLjAuMTo4ODgwL3dlYnNvY2tl
dC90ZXN0cy9uby1xdWVyeT8KLVdlYlNvY2tldCBpcyBjbG9zZWQKLVBBU1MgaGFuZHNoYWtlX3N1
Y2Nlc3MgaXMgZmFsc2UKLVBBU1Mgd3NfbG9jYXRpb24gaXMgdW5kZWZpbmVkLgotUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCmluZGV4IDRjYTI5ZDc3MjY3NGIy
M2RhOTEzMTExOTQ1YzNlNzZmMDU3NWY2MjYuLjgxMDY0NzUwYjJlMjMyZGExYzUxNmIxNmFiZjEx
ZDczMjJhNmM5NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29j
a2V0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRD
aGFubmVsLmNwcApAQCAtNDcsMTIgKzQ3LDEzIEBACiAjaW5jbHVkZSAiV2ViU29ja2V0Q2hhbm5l
bENsaWVudC5oIgogI2luY2x1ZGUgIldlYlNvY2tldEhhbmRzaGFrZS5oIgogCi0jaW5jbHVkZSA8
d3RmL3RleHQvQ1N0cmluZy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKyNpbmNsdWRlIDx3dGYvQ3J5cHRvZ3JhcGhp
Y2FsbHlSYW5kb21OdW1iZXIuaD4KICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3
dGYvRmFzdE1hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC03
Myw2ICs3NCw3IEBAIFdlYlNvY2tldENoYW5uZWw6OldlYlNvY2tldENoYW5uZWwoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgV2ViU29ja2V0Q2hhCiAgICAgLCBtX3Nob3VsZERpc2Nh
cmRSZWNlaXZlZERhdGEoZmFsc2UpCiAgICAgLCBtX3VuaGFuZGxlZEJ1ZmZlcmVkQW1vdW50KDAp
CiAgICAgLCBtX2lkZW50aWZpZXIoMCkKKyAgICAsIG1faGFzQ29udGludW91c0ZyYW1lKGZhbHNl
KQogewogICAgIGlmIChtX2NvbnRleHQtPmlzRG9jdW1lbnQoKSkKICAgICAgICAgaWYgKFBhZ2Uq
IHBhZ2UgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KG1fY29udGV4dCktPnBhZ2UoKSkKQEAgLTk3
LDE3ICs5OSwxMSBAQCB2b2lkIFdlYlNvY2tldENoYW5uZWw6OmNvbm5lY3QoKQogICAgIG1faGFu
ZGxlID0gU29ja2V0U3RyZWFtSGFuZGxlOjpjcmVhdGUobV9oYW5kc2hha2UudXJsKCksIHRoaXMp
OwogfQogCi1ib29sIFdlYlNvY2tldENoYW5uZWw6OnNlbmQoY29uc3QgU3RyaW5nJiBtc2cpCiti
b29sIFdlYlNvY2tldENoYW5uZWw6OnNlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewotICAg
IExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBzZW5kICVzIiwgdGhpcywgbXNnLnV0
ZjgoKS5kYXRhKCkpOwotICAgIEFTU0VSVChtX2hhbmRsZSk7Ci0gICAgQVNTRVJUKCFtX3N1c3Bl
bmRlZCk7Ci0gICAgVmVjdG9yPGNoYXI+IGJ1ZjsKLSAgICBidWYuYXBwZW5kKCdcMCcpOyAgLy8g
ZnJhbWUgdHlwZQotICAgIENTdHJpbmcgdXRmOCA9IG1zZy51dGY4KCk7Ci0gICAgYnVmLmFwcGVu
ZCh1dGY4LmRhdGEoKSwgdXRmOC5sZW5ndGgoKSk7Ci0gICAgYnVmLmFwcGVuZCgnXHhmZicpOyAg
Ly8gZnJhbWUgZW5kCi0gICAgcmV0dXJuIG1faGFuZGxlLT5zZW5kKGJ1Zi5kYXRhKCksIGJ1Zi5z
aXplKCkpOworICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBzZW5kICVzIiwg
dGhpcywgbWVzc2FnZS51dGY4KCkuZGF0YSgpKTsKKyAgICBDU3RyaW5nIHV0ZjggPSBtZXNzYWdl
LnV0ZjgoKTsKKyAgICByZXR1cm4gc2VuZEZyYW1lKE9wQ29kZVRleHQsIHV0ZjguZGF0YSgpLCB1
dGY4Lmxlbmd0aCgpKTsKIH0KIAogdW5zaWduZWQgbG9uZyBXZWJTb2NrZXRDaGFubmVsOjpidWZm
ZXJlZEFtb3VudCgpIGNvbnN0CkBAIC0yNTgsNiArMjU0LDEzIEBAIHZvaWQgV2ViU29ja2V0Q2hh
bm5lbDo6ZGlkQ2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoU29ja2V0U3RyZWFtSGFuZGxl
KiwgY29uCiB7CiB9CiAKK2NvbnN0IFdlYlNvY2tldENoYW5uZWw6Ok9wQ29kZSBXZWJTb2NrZXRD
aGFubmVsOjpPcENvZGVDb250aW51YXRpb247Citjb25zdCBXZWJTb2NrZXRDaGFubmVsOjpPcENv
ZGUgV2ViU29ja2V0Q2hhbm5lbDo6T3BDb2RlQ2xvc2U7Citjb25zdCBXZWJTb2NrZXRDaGFubmVs
OjpPcENvZGUgV2ViU29ja2V0Q2hhbm5lbDo6T3BDb2RlUGluZzsKK2NvbnN0IFdlYlNvY2tldENo
YW5uZWw6Ok9wQ29kZSBXZWJTb2NrZXRDaGFubmVsOjpPcENvZGVQb25nOworY29uc3QgV2ViU29j
a2V0Q2hhbm5lbDo6T3BDb2RlIFdlYlNvY2tldENoYW5uZWw6Ok9wQ29kZVRleHQ7Citjb25zdCBX
ZWJTb2NrZXRDaGFubmVsOjpPcENvZGUgV2ViU29ja2V0Q2hhbm5lbDo6T3BDb2RlQmluYXJ5Owor
CiBib29sIFdlYlNvY2tldENoYW5uZWw6OmFwcGVuZFRvQnVmZmVyKGNvbnN0IGNoYXIqIGRhdGEs
IHNpemVfdCBsZW4pCiB7CiAgICAgc2l6ZV90IG5ld0J1ZmZlclNpemUgPSBtX2J1ZmZlclNpemUg
KyBsZW47CkBAIC0zNDAsODUgKzM0MywyNSBAQCBib29sIFdlYlNvY2tldENoYW5uZWw6OnByb2Nl
c3NCdWZmZXIoKQogICAgIGlmIChtX2hhbmRzaGFrZS5tb2RlKCkgIT0gV2ViU29ja2V0SGFuZHNo
YWtlOjpDb25uZWN0ZWQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGNvbnN0IGNoYXIq
IG5leHRGcmFtZSA9IG1fYnVmZmVyOwotICAgIGNvbnN0IGNoYXIqIHAgPSBtX2J1ZmZlcjsKLSAg
ICBjb25zdCBjaGFyKiBlbmQgPSBwICsgbV9idWZmZXJTaXplOwotCi0gICAgdW5zaWduZWQgY2hh
ciBmcmFtZUJ5dGUgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigqcCsrKTsKLSAgICBpZiAo
KGZyYW1lQnl0ZSAmIDB4ODApID09IDB4ODApIHsKLSAgICAgICAgc2l6ZV90IGxlbmd0aCA9IDA7
Ci0gICAgICAgIGJvb2wgZXJyb3JGcmFtZSA9IGZhbHNlOwotICAgICAgICB3aGlsZSAocCA8IGVu
ZCkgewotICAgICAgICAgICAgaWYgKGxlbmd0aCA+IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90
Pjo6bWF4KCkgLyAxMjgpIHsKLSAgICAgICAgICAgICAgICBMT0coTmV0d29yaywgImZyYW1lIGxl
bmd0aCBvdmVyZmxvdyAlbHUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihsZW5ndGgpKTsK
LSAgICAgICAgICAgICAgICBlcnJvckZyYW1lID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHNpemVfdCBuZXdMZW5ndGggPSBsZW5ndGgg
KiAxMjg7Ci0gICAgICAgICAgICB1bnNpZ25lZCBjaGFyIG1zZ0J5dGUgPSBzdGF0aWNfY2FzdDx1
bnNpZ25lZCBjaGFyPigqcCk7Ci0gICAgICAgICAgICB1bnNpZ25lZCBpbnQgbGVuZ3RoTXNnQnl0
ZSA9IG1zZ0J5dGUgJiAweDdmOwotICAgICAgICAgICAgaWYgKG5ld0xlbmd0aCA+IHN0ZDo6bnVt
ZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkgLSBsZW5ndGhNc2dCeXRlKSB7Ci0gICAgICAgICAg
ICAgICAgTE9HKE5ldHdvcmssICJmcmFtZSBsZW5ndGggb3ZlcmZsb3cgJWx1KyV1Iiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQgbG9uZz4obmV3TGVuZ3RoKSwgbGVuZ3RoTXNnQnl0ZSk7Ci0gICAgICAg
ICAgICAgICAgZXJyb3JGcmFtZSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBuZXdMZW5ndGggKz0gbGVuZ3RoTXNnQnl0ZTsKLSAgICAg
ICAgICAgIGlmIChuZXdMZW5ndGggPCBsZW5ndGgpIHsgLy8gc2FuaXR5IGNoZWNrCi0gICAgICAg
ICAgICAgICAgTE9HKE5ldHdvcmssICJmcmFtZSBsZW5ndGggaW50ZWdlciB3cmFwICVsdS0+JWx1
Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4obGVuZ3RoKSwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQgbG9uZz4obmV3TGVuZ3RoKSk7Ci0gICAgICAgICAgICAgICAgZXJyb3JGcmFtZSA9IHRydWU7
Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBsZW5n
dGggPSBuZXdMZW5ndGg7Ci0gICAgICAgICAgICArK3A7Ci0gICAgICAgICAgICBpZiAoIShtc2dC
eXRlICYgMHg4MCkpCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAg
aWYgKHAgKyBsZW5ndGggPCBwKSB7Ci0gICAgICAgICAgICBMT0coTmV0d29yaywgImZyYW1lIGJ1
ZmZlciBwb2ludGVyIHdyYXAgJXArJWx1LT4lcCIsIHAsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxv
bmc+KGxlbmd0aCksIHAgKyBsZW5ndGgpOwotICAgICAgICAgICAgZXJyb3JGcmFtZSA9IHRydWU7
Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGVycm9yRnJhbWUpIHsKLSAgICAgICAgICAgIHNraXBC
dWZmZXIobV9idWZmZXJTaXplKTsgLy8gU2F2ZSBtZW1vcnkuCi0gICAgICAgICAgICBtX3Nob3Vs
ZERpc2NhcmRSZWNlaXZlZERhdGEgPSB0cnVlOwotICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJl
Y2VpdmVNZXNzYWdlRXJyb3IoKTsKLSAgICAgICAgICAgIGZhaWwoIldlYlNvY2tldCBmcmFtZSBs
ZW5ndGggdG9vIGxhcmdlIik7CisgICAgRnJhbWVEYXRhIGZyYW1lOworICAgIHN3aXRjaCAocGFy
c2VGcmFtZShmcmFtZSkpIHsKKyAgICBjYXNlIEZyYW1lT0s6CisgICAgICAgIHByb2Nlc3NGcmFt
ZShmcmFtZSk7CisgICAgICAgIHJldHVybiBtX2J1ZmZlcjsKKyAgICBjYXNlIEZyYW1lSW5jb21w
bGV0ZToKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGNhc2UgRnJhbWVFcnJvcjoKKyAgICAg
ICAgc2tpcEJ1ZmZlcihtX2J1ZmZlclNpemUpOyAvLyBTYXZlIG1lbW9yeS4KKyAgICAgICAgbV9z
aG91bGREaXNjYXJkUmVjZWl2ZWREYXRhID0gdHJ1ZTsKKyAgICAgICAgbV9jbGllbnQtPmRpZFJl
Y2VpdmVNZXNzYWdlRXJyb3IoKTsKKyAgICAgICAgaWYgKCFtX2NsaWVudCkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICBBU1NFUlQocCArIGxlbmd0aCA+PSBw
KTsKLSAgICAgICAgaWYgKHAgKyBsZW5ndGggPD0gZW5kKSB7Ci0gICAgICAgICAgICBwICs9IGxl
bmd0aDsKLSAgICAgICAgICAgIG5leHRGcmFtZSA9IHA7Ci0gICAgICAgICAgICBBU1NFUlQobmV4
dEZyYW1lID4gbV9idWZmZXIpOwotICAgICAgICAgICAgc2tpcEJ1ZmZlcihuZXh0RnJhbWUgLSBt
X2J1ZmZlcik7Ci0gICAgICAgICAgICBpZiAoZnJhbWVCeXRlID09IDB4ZmYgJiYgIWxlbmd0aCkg
ewotICAgICAgICAgICAgICAgIG1fcmVjZWl2ZWRDbG9zaW5nSGFuZHNoYWtlID0gdHJ1ZTsKLSAg
ICAgICAgICAgICAgICBzdGFydENsb3NpbmdIYW5kc2hha2UoKTsKLSAgICAgICAgICAgICAgICBp
ZiAobV9jbG9zaW5nKQotICAgICAgICAgICAgICAgICAgICBtX2hhbmRsZS0+Y2xvc2UoKTsgLy8g
Y2xvc2UgYWZ0ZXIgc2VuZGluZyBGRiAwMC4KLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAg
ICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlTWVzc2FnZUVycm9yKCk7Ci0gICAgICAgICAgICBy
ZXR1cm4gbV9idWZmZXI7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKCFtX2Nsb3NlZCkKKyAgICAg
ICAgICAgIG1faGFuZGxlLT5jbG9zZSgpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
Ci0gICAgY29uc3QgY2hhciogbXNnU3RhcnQgPSBwOwotICAgIHdoaWxlIChwIDwgZW5kICYmICpw
ICE9ICdceGZmJykKLSAgICAgICAgKytwOwotICAgIGlmIChwIDwgZW5kICYmICpwID09ICdceGZm
JykgewotICAgICAgICBpbnQgbXNnTGVuZ3RoID0gcCAtIG1zZ1N0YXJ0OwotICAgICAgICArK3A7
Ci0gICAgICAgIG5leHRGcmFtZSA9IHA7Ci0gICAgICAgIGlmIChmcmFtZUJ5dGUgPT0gMHgwMCkg
ewotICAgICAgICAgICAgU3RyaW5nIG1zZyA9IFN0cmluZzo6ZnJvbVVURjgobXNnU3RhcnQsIG1z
Z0xlbmd0aCk7Ci0gICAgICAgICAgICBza2lwQnVmZmVyKG5leHRGcmFtZSAtIG1fYnVmZmVyKTsK
LSAgICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlTWVzc2FnZShtc2cpOwotICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgc2tpcEJ1ZmZlcihuZXh0RnJhbWUgLSBtX2J1ZmZlcik7Ci0g
ICAgICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZU1lc3NhZ2VFcnJvcigpOwotICAgICAgICB9
Ci0gICAgICAgIHJldHVybiBtX2J1ZmZlcjsKLSAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC00NDAsMTAgKzM4Myw4IEBAIHZvaWQgV2Vi
U29ja2V0Q2hhbm5lbDo6c3RhcnRDbG9zaW5nSGFuZHNoYWtlKCkKICAgICBpZiAobV9jbG9zaW5n
KQogICAgICAgICByZXR1cm47CiAgICAgQVNTRVJUKG1faGFuZGxlKTsKLSAgICBWZWN0b3I8Y2hh
cj4gYnVmOwotICAgIGJ1Zi5hcHBlbmQoJ1x4ZmYnKTsKLSAgICBidWYuYXBwZW5kKCdcMCcpOwot
ICAgIGlmICghbV9oYW5kbGUtPnNlbmQoYnVmLmRhdGEoKSwgYnVmLnNpemUoKSkpIHsKKworICAg
IGlmICghc2VuZEZyYW1lKE9wQ29kZUNsb3NlLCAiIiwgMCkpIHsgLy8gRklYTUU6IFNlbmQgc3Rh
dHVzIGNvZGUgYW5kIHJlYXNvbiBtZXNzYWdlLgogICAgICAgICBtX2hhbmRsZS0+ZGlzY29ubmVj
dCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNDYwLDYgKzQwMSwyMzIgQEAgdm9pZCBX
ZWJTb2NrZXRDaGFubmVsOjpjbG9zaW5nVGltZXJGaXJlZChUaW1lcjxXZWJTb2NrZXRDaGFubmVs
PiogdGltZXIpCiAgICAgICAgIG1faGFuZGxlLT5kaXNjb25uZWN0KCk7CiB9CiAKK1dlYlNvY2tl
dENoYW5uZWw6OlBhcnNlRnJhbWVSZXN1bHQgV2ViU29ja2V0Q2hhbm5lbDo6cGFyc2VGcmFtZShG
cmFtZURhdGEmIGZyYW1lKQoreworICAgIEFTU0VSVChtX2J1ZmZlcik7CisgICAgY2hhciogcCA9
IG1fYnVmZmVyOworICAgIGNoYXIqIGVuZCA9IG1fYnVmZmVyICsgbV9idWZmZXJTaXplOworCisg
ICAgaWYgKG1fYnVmZmVyU2l6ZSA8IDIpCisgICAgICAgIHJldHVybiBGcmFtZUluY29tcGxldGU7
CisKKyAgICB1bnNpZ25lZCBjaGFyIGZpcnN0Qnl0ZSA9ICpwKys7CisgICAgdW5zaWduZWQgY2hh
ciBzZWNvbmRCeXRlID0gKnArKzsKKworICAgIGZyYW1lLmZpbmFsID0gc3RhdGljX2Nhc3Q8Ym9v
bD4oZmlyc3RCeXRlICYgMHg4MCk7CisgICAgZnJhbWUucmVzZXJ2ZWQxID0gc3RhdGljX2Nhc3Q8
Ym9vbD4oZmlyc3RCeXRlICYgMHg0MCk7CisgICAgZnJhbWUucmVzZXJ2ZWQyID0gc3RhdGljX2Nh
c3Q8Ym9vbD4oZmlyc3RCeXRlICYgMHgyMCk7CisgICAgZnJhbWUucmVzZXJ2ZWQzID0gc3RhdGlj
X2Nhc3Q8Ym9vbD4oZmlyc3RCeXRlICYgMHgxMCk7CisgICAgZnJhbWUub3BDb2RlID0gZmlyc3RC
eXRlICYgMHgwRjsKKworICAgIGZyYW1lLm1hc2tlZCA9IHN0YXRpY19jYXN0PGJvb2w+KHNlY29u
ZEJ5dGUgJiAweDgwKTsKKyAgICB1aW50NjRfdCBwYXlsb2FkTGVuZ3RoNjQgPSBzZWNvbmRCeXRl
ICYgMHg3RjsKKyAgICBpZiAocGF5bG9hZExlbmd0aDY0ID49IDEyNikgeworICAgICAgICBpbnQg
ZXh0ZW5kZWRQYXlsb2FkTGVuZ3RoU2l6ZSA9IHBheWxvYWRMZW5ndGg2NCA9PSAxMjcgPyA4IDog
MjsKKyAgICAgICAgaWYgKGVuZCAtIHAgPCBleHRlbmRlZFBheWxvYWRMZW5ndGhTaXplKQorICAg
ICAgICAgICAgcmV0dXJuIEZyYW1lSW5jb21wbGV0ZTsKKyAgICAgICAgcGF5bG9hZExlbmd0aDY0
ID0gMDsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBleHRlbmRlZFBheWxvYWRMZW5ndGhT
aXplOyArK2kpIHsKKyAgICAgICAgICAgIHBheWxvYWRMZW5ndGg2NCA8PD0gODsKKyAgICAgICAg
ICAgIHBheWxvYWRMZW5ndGg2NCB8PSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigqcCsrKTsK
KyAgICAgICAgfQorICAgIH0KKworI2lmIE9TKFdJTkRPV1MpCisgICAgaWYgKHBheWxvYWRMZW5n
dGg2NCA+IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkgfHwgcGF5bG9hZExlbmd0
aDY0ID4gMHg3RkZGRkZGRkZGRkZGRkZGdWk2NCkgeworICAgICAgICBMT0coTmV0d29yaywgIldl
YlNvY2tldENoYW5uZWw6IFBheWxvYWQgdG9vIGxvbmc6ICVJNjR1Iiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQgX19pbnQ2ND4ocGF5bG9hZExlbmd0aDY0KSk7CisgICAgICAgIHJldHVybiBGcmFtZUVy
cm9yOworICAgIH0KKyNlbHNlCisgICAgaWYgKHBheWxvYWRMZW5ndGg2NCA+IHN0ZDo6bnVtZXJp
Y19saW1pdHM8c2l6ZV90Pjo6bWF4KCkgfHwgcGF5bG9hZExlbmd0aDY0ID4gMHg3RkZGRkZGRkZG
RkZGRkZGdWxsKSB7CisgICAgICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbDogUGF5
bG9hZCB0b28gbG9uZzogJWxsdSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4ocGF5
bG9hZExlbmd0aDY0KSk7CisgICAgICAgIHJldHVybiBGcmFtZUVycm9yOworICAgIH0KKyNlbmRp
ZgorCisgICAgc2l6ZV90IHBheWxvYWRMZW5ndGggPSBzdGF0aWNfY2FzdDxzaXplX3Q+KHBheWxv
YWRMZW5ndGg2NCk7CisgICAgc2l6ZV90IG1hc2tpbmdLZXlMZW5ndGggPSBmcmFtZS5tYXNrZWQg
PyA0IDogMDsKKyAgICBpZiAoc3RhdGljX2Nhc3Q8c2l6ZV90PihlbmQgLSBwKSA8IG1hc2tpbmdL
ZXlMZW5ndGggKyBwYXlsb2FkTGVuZ3RoKQorICAgICAgICByZXR1cm4gRnJhbWVJbmNvbXBsZXRl
OworCisgICAgaWYgKGZyYW1lLm1hc2tlZCkKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBwYXlsb2FkTGVuZ3RoOyArK2kpCisgICAgICAgICAgICBwW2kgKyA0XSBePSBwW2kgJSA0XTsg
Ly8gVW5tYXNrIHRoZSBwYXlsb2FkLgorCisgICAgZnJhbWUucGF5bG9hZCA9IHAgKyBtYXNraW5n
S2V5TGVuZ3RoOworICAgIGZyYW1lLnBheWxvYWRMZW5ndGggPSBwYXlsb2FkTGVuZ3RoOworICAg
IGZyYW1lLmVuZCA9IHAgKyBtYXNraW5nS2V5TGVuZ3RoICsgcGF5bG9hZExlbmd0aDsKKworICAg
IHJldHVybiBGcmFtZU9LOworfQorCit2b2lkIFdlYlNvY2tldENoYW5uZWw6OnByb2Nlc3NGcmFt
ZShjb25zdCBGcmFtZURhdGEmIGZyYW1lKQoreworICAgIGlmIChpc1Jlc2VydmVkT3BDb2RlKGZy
YW1lLm9wQ29kZSkpIHsKKyAgICAgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsOiBV
bnJlY29nbml6ZWQgZnJhbWUgb3Bjb2RlOiAldSIsIGZyYW1lLm9wQ29kZSk7CisgICAgICAgIHNr
aXBCdWZmZXIoZnJhbWUuZW5kIC0gbV9idWZmZXIpOworICAgICAgICBtX2NsaWVudC0+ZGlkUmVj
ZWl2ZU1lc3NhZ2VFcnJvcigpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKGZy
YW1lLnJlc2VydmVkMSkKKyAgICAgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsOiBS
U1YxIHdhcyBub3QgemVyby4iKTsKKyAgICBpZiAoZnJhbWUucmVzZXJ2ZWQyKQorICAgICAgICBM
T0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWw6IFJTVjIgd2FzIG5vdCB6ZXJvLiIpOworICAg
IGlmIChmcmFtZS5yZXNlcnZlZDMpCisgICAgICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hh
bm5lbDogUlNWMyB3YXMgbm90IHplcm8uIik7CisKKyAgICAvLyBBbGwgY29udHJvbCBmcmFtZXMg
bXVzdCBiZSAxMjUgYnl0ZXMgb3IgbGVzcy4KKyAgICBpZiAoaXNDb250cm9sT3BDb2RlKGZyYW1l
Lm9wQ29kZSkgJiYgZnJhbWUucGF5bG9hZExlbmd0aCA+IDEyNSkgeworICAgICAgICBMT0coTmV0
d29yaywgIldlYlNvY2tldENoYW5uZWw6IFBheWxvYWQgZm9yIGNvbnRyb2wgZnJhbWUgdG9vIGxv
bmc6IG9wY29kZSA9ICV1LCBsZW5ndGggPSAlbHUiLAorICAgICAgICAgICAgZnJhbWUub3BDb2Rl
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihmcmFtZS5wYXlsb2FkTGVuZ3RoKSk7CisgICAg
ICAgIHNraXBCdWZmZXIoZnJhbWUuZW5kIC0gbV9idWZmZXIpOworICAgICAgICBtX2NsaWVudC0+
ZGlkUmVjZWl2ZU1lc3NhZ2VFcnJvcigpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
Ly8gQWxsIGNvbnRyb2wgZnJhbWVzIG11c3Qgbm90IGJlIGZyYWdtZW50ZWQuCisgICAgaWYgKGlz
Q29udHJvbE9wQ29kZShmcmFtZS5vcENvZGUpICYmICFmcmFtZS5maW5hbCkgeworICAgICAgICBM
T0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWw6IFJlY2VpdmVkIGZyYWdtZW50ZWQgY29udHJv
bCBmcmFtZTogb3Bjb2RlID0gJWQiLCBzdGF0aWNfY2FzdDxpbnQ+KGZyYW1lLm9wQ29kZSkpOwor
ICAgICAgICBza2lwQnVmZmVyKGZyYW1lLmVuZCAtIG1fYnVmZmVyKTsKKyAgICAgICAgbV9jbGll
bnQtPmRpZFJlY2VpdmVNZXNzYWdlRXJyb3IoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIC8vIEEgbmV3IGRhdGEgZnJhbWUgaXMgcmVjZWl2ZWQgYmVmb3JlIHRoZSBwcmV2aW91cyBj
b250aW51b3VzIGZyYW1lIGZpbmlzaGVzLgorICAgIC8vIFdlIGFsbG93IGEgY29udHJvbCBmcmFt
ZSB0byBjb21lIGluIHRoZSBtaWRkbGUgb2YgY29udGludW91cyBmcmFtZXMsIGJ1dCB0aGlzIGJl
aGF2aW9yIG1heSBjaGFuZ2UuCisgICAgaWYgKG1faGFzQ29udGludW91c0ZyYW1lICYmIGZyYW1l
Lm9wQ29kZSAhPSBPcENvZGVDb250aW51YXRpb24gJiYgIWlzQ29udHJvbE9wQ29kZShmcmFtZS5v
cENvZGUpKSB7CisgICAgICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbDogUmVjZWl2
ZWQgYSBuZXcgZGF0YSBmcmFtZSBiZWZvcmUgdGhlIHByZXZpb3VzIGNvbnRpbnVvdXMgZnJhbWUg
aGFkIGZpbmlzaGVkLiIpOworICAgICAgICAvLyBGSVhNRTogTWF5YmUgd2Ugc2hvdWxkIGRyb3Ag
bV9oYXNDb250aW51b3VzRnJhbWUgYml0IGhlcmU/CisgICAgICAgIHNraXBCdWZmZXIoZnJhbWUu
ZW5kIC0gbV9idWZmZXIpOworICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZU1lc3NhZ2VFcnJv
cigpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc3dpdGNoIChmcmFtZS5vcENvZGUp
IHsKKyAgICBjYXNlIE9wQ29kZUNvbnRpbnVhdGlvbjoKKyAgICAgICAgaWYgKG1fY29udGludW91
c0ZyYW1lT3BDb2RlID09IE9wQ29kZVRleHQpCisgICAgICAgICAgICBtX2NvbnRpbnVvdXNGcmFt
ZURhdGEuYXBwZW5kKGZyYW1lLnBheWxvYWQsIGZyYW1lLnBheWxvYWRMZW5ndGgpOworICAgICAg
ICBza2lwQnVmZmVyKGZyYW1lLmVuZCAtIG1fYnVmZmVyKTsKKyAgICAgICAgaWYgKGZyYW1lLmZp
bmFsKSB7CisgICAgICAgICAgICAvLyBvbm1lc3NhZ2UgaGFuZGxlciBtYXkgZXZlbnR1YWxseSBj
YWxsIHRoZSBvdGhlciBtZXRob2RzIG9mIHRoaXMgY2hhbm5lbCwKKyAgICAgICAgICAgIC8vIHNv
IHdlIHNob3VsZCBwcmV0ZW5kIHRoYXQgd2UgaGF2ZSBmaW5pc2hlZCB0byByZWFkIHRoaXMgZnJh
bWUgYW5kCisgICAgICAgICAgICAvLyBtYWtlIHN1cmUgdGhhdCB0aGUgbWVtYmVyIHZhcmlhYmxl
cyBhcmUgaW4gYSBjb25zaXN0ZW50IHN0YXRlIGJlZm9yZSB3ZSBpbnZva2UgdGhlIGhhbmRsZXIu
CisgICAgICAgICAgICAvLyBWZWN0b3I8Y2hhcj46OnN3YXAoKSBpcyB1c2VkIGhlcmUgdG8gY2xl
YXIgbV9jb250aW5vdXNGcmFtZURhdGEuCisgICAgICAgICAgICBWZWN0b3I8Y2hhcj4gY29udGlu
dW91c0ZyYW1lRGF0YTsKKyAgICAgICAgICAgIG1fY29udGludW91c0ZyYW1lRGF0YS5zd2FwKGNv
bnRpbnVvdXNGcmFtZURhdGEpOworICAgICAgICAgICAgbV9oYXNDb250aW51b3VzRnJhbWUgPSBm
YWxzZTsKKyAgICAgICAgICAgIGlmIChtX2NvbnRpbnVvdXNGcmFtZU9wQ29kZSA9PSBPcENvZGVU
ZXh0KSB7CisgICAgICAgICAgICAgICAgLy8gRklYTUU6IFdlIG11c3QgcmVwbGFjZSBhIGNvcnJ1
cHQgVVRGLTggY2hhcmFjdGVyIGludG8gVStGRkZEIChyZXBsYWNlbWVudCBjaGFyYWN0ZXIpLgor
ICAgICAgICAgICAgICAgIC8vIFNlZSBzZWN0aW9uIDYuMSBvZiBXZWJTb2NrZXQgcHJvdG9jb2wg
c3BlY2lmaWNhdGlvbi4KKyAgICAgICAgICAgICAgICBTdHJpbmcgbWVzc2FnZSA9IFN0cmluZzo6
ZnJvbVVURjgoY29udGludW91c0ZyYW1lRGF0YS5kYXRhKCksIGNvbnRpbnVvdXNGcmFtZURhdGEu
c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICBpZiAobWVzc2FnZS5pc051bGwoKSkKKyAgICAgICAg
ICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVNZXNzYWdlRXJyb3IoKTsKKyAgICAgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlTWVz
c2FnZShtZXNzYWdlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBicmVhazsK
KworICAgIGNhc2UgT3BDb2RlVGV4dDoKKyAgICAgICAgaWYgKGZyYW1lLmZpbmFsKSB7CisgICAg
ICAgICAgICAvLyBGSVhNRTogUmVwbGFjZSBjb3JydXB0IGNoYXJhY3RlcnMgKHNlZSBjb21tZW50
cyBpbiBPcENvZGVDb250aW51YXRpb24pLgorICAgICAgICAgICAgU3RyaW5nIG1lc3NhZ2UgPSBT
dHJpbmc6OmZyb21VVEY4KGZyYW1lLnBheWxvYWQsIGZyYW1lLnBheWxvYWRMZW5ndGgpOworICAg
ICAgICAgICAgc2tpcEJ1ZmZlcihmcmFtZS5lbmQgLSBtX2J1ZmZlcik7CisgICAgICAgICAgICBp
ZiAobWVzc2FnZS5pc051bGwoKSkKKyAgICAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2
ZU1lc3NhZ2VFcnJvcigpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG1fY2xp
ZW50LT5kaWRSZWNlaXZlTWVzc2FnZShtZXNzYWdlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIG1faGFzQ29udGludW91c0ZyYW1lID0gdHJ1ZTsKKyAgICAgICAgICAgIG1fY29udGlu
dW91c0ZyYW1lT3BDb2RlID0gT3BDb2RlVGV4dDsKKyAgICAgICAgICAgIEFTU0VSVChtX2NvbnRp
bnVvdXNGcmFtZURhdGEuaXNFbXB0eSgpKTsKKyAgICAgICAgICAgIG1fY29udGludW91c0ZyYW1l
RGF0YS5hcHBlbmQoZnJhbWUucGF5bG9hZCwgZnJhbWUucGF5bG9hZExlbmd0aCk7CisgICAgICAg
ICAgICBza2lwQnVmZmVyKGZyYW1lLmVuZCAtIG1fYnVmZmVyKTsKKyAgICAgICAgfQorICAgICAg
ICBicmVhazsKKworICAgIGNhc2UgT3BDb2RlQmluYXJ5OgorICAgICAgICBMT0coTmV0d29yaywg
IldlYlNvY2tldENoYW5uZWw6IEJpbmFyeSBtZXNzYWdlIGlzIG5vdCBzdXBwb3J0ZWQgeWV0OyBp
Z25vcmVkLiIpOworICAgICAgICBpZiAoIWZyYW1lLmZpbmFsKSB7CisgICAgICAgICAgICBtX2hh
c0NvbnRpbnVvdXNGcmFtZSA9IHRydWU7CisgICAgICAgICAgICBtX2NvbnRpbnVvdXNGcmFtZU9w
Q29kZSA9IE9wQ29kZUJpbmFyeTsKKyAgICAgICAgICAgIEFTU0VSVChtX2NvbnRpbnVvdXNGcmFt
ZURhdGEuaXNFbXB0eSgpKTsKKyAgICAgICAgICAgIC8vIERvIG5vdCBzdG9yZSB0aGUgZGF0YSB0
byBzYXZlIG1lbW9yeS4KKyAgICAgICAgfQorICAgICAgICBza2lwQnVmZmVyKGZyYW1lLmVuZCAt
IG1fYnVmZmVyKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIE9wQ29kZUNsb3NlOgorICAg
ICAgICAvLyBGSVhNRTogSGFuZGxlIHBheWxvYWQgb2YgYSBjbG9zZSBmcmFtZS4KKyAgICAgICAg
c2tpcEJ1ZmZlcihmcmFtZS5lbmQgLSBtX2J1ZmZlcik7CisgICAgICAgIG1fcmVjZWl2ZWRDbG9z
aW5nSGFuZHNoYWtlID0gdHJ1ZTsKKyAgICAgICAgc3RhcnRDbG9zaW5nSGFuZHNoYWtlKCk7Cisg
ICAgICAgIGlmIChtX2Nsb3NpbmcpCisgICAgICAgICAgICBtX2hhbmRsZS0+Y2xvc2UoKTsgLy8g
Q2xvc2UgYWZ0ZXIgc2VuZGluZyBhIGNsb3NlIGZyYW1lLgorICAgICAgICBicmVhazsKKworICAg
IGNhc2UgT3BDb2RlUGluZzogeworICAgICAgICBib29sIHJlc3VsdCA9IHNlbmRGcmFtZShPcENv
ZGVQb25nLCBmcmFtZS5wYXlsb2FkLCBmcmFtZS5wYXlsb2FkTGVuZ3RoKTsKKyAgICAgICAgc2tp
cEJ1ZmZlcihmcmFtZS5lbmQgLSBtX2J1ZmZlcik7CisgICAgICAgIGlmICghcmVzdWx0KSB7Cisg
ICAgICAgICAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWw6IEZhaWxlZCB0byBzZW5k
IHBvbmcuIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7
CisgICAgfQorCisgICAgY2FzZSBPcENvZGVQb25nOgorICAgICAgICAvLyBBIHNlcnZlciBtYXkg
c2VuZCBhIHBvbmcgaW4gcmVzcG9uc2UgdG8gb3VyIHBpbmcsIG9yIGFuIHVuc29saWNpdGVkIHBv
bmcgd2hpY2ggaXMgbm90IGFzc2NpYXRlZCB3aXRoCisgICAgICAgIC8vIGFueSBzcGVjaWZpYyBw
b25nLiBFaXRoZXIgd2F5LCB3ZSBkb24ndCBoYXZlIHRvIGRvIGFueXRoaW5nIG9uIHJlY2VpcHQu
CisgICAgICAgIHNraXBCdWZmZXIoZnJhbWUuZW5kIC0gbV9idWZmZXIpOworICAgICAgICBicmVh
azsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICBza2lwQnVmZmVyKGZyYW1lLmVuZCAtIG1fYnVmZmVyKTsKKyAgICAgICAgYnJlYWs7CisgICAg
fQorfQorCitib29sIFdlYlNvY2tldENoYW5uZWw6OnNlbmRGcmFtZShPcENvZGUgb3BDb2RlLCBj
b25zdCBjaGFyKiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCkKK3sKKyAgICAvLyBGcmFnbWVudGF0
aW9uIGFuZCBleHRlbnNpb25zIGFyZSBub3Qgc3VwcG9ydGVkIHlldC4KKyAgICBBU1NFUlQobV9o
YW5kbGUpOworICAgIEFTU0VSVCghbV9zdXNwZW5kZWQpOworICAgIFZlY3RvcjxjaGFyPiBmcmFt
ZTsKKyAgICBmcmFtZS5hcHBlbmQoMHg4MCB8IG9wQ29kZSk7IC8vIDB4ODAgaXMgZm9yICJmaW4i
IGJpdDsgd2UgZG8gbm90IGZyYWdtZW50IGEgZnJhbWUgb24gc2VuZGluZy4KKyAgICBpZiAoZGF0
YUxlbmd0aCA8IDEyNikKKyAgICAgICAgZnJhbWUuYXBwZW5kKDB4ODAgfCBkYXRhTGVuZ3RoKTsg
Ly8gMHg4MCBpcyBmb3IgIk1BU0siIGJpdDsgYSBjbGllbnQgbXVzdCBtYXNrIGZyYW1lcyBzbyBp
dCBpcyBhbHdheXMgb24uCisgICAgZWxzZSBpZiAoZGF0YUxlbmd0aCA8PSAweEZGRkYpIHsKKyAg
ICAgICAgZnJhbWUuYXBwZW5kKDB4ODAgfCAxMjYpOworICAgICAgICBmcmFtZS5hcHBlbmQoKGRh
dGFMZW5ndGggJiAweEZGMDApID4+IDgpOworICAgICAgICBmcmFtZS5hcHBlbmQoZGF0YUxlbmd0
aCAmIDB4RkYpOworICAgIH0gZWxzZSB7CisgICAgICAgIGZyYW1lLmFwcGVuZCgweDgwIHwgMTI3
KTsKKyAgICAgICAgY2hhciBleHRlbmRlZFBheWxvYWRMZW5ndGhbOF07CisgICAgICAgIHNpemVf
dCByZW1haW5pbmcgPSBkYXRhTGVuZ3RoOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDg7
ICsraSkgeworICAgICAgICAgICAgZXh0ZW5kZWRQYXlsb2FkTGVuZ3RoWzcgLSBpXSA9IHJlbWFp
bmluZyAmIDB4RkY7CisgICAgICAgICAgICByZW1haW5pbmcgPj49IDg7CisgICAgICAgIH0KKyAg
ICAgICAgQVNTRVJUKCFyZW1haW5pbmcpOworICAgICAgICBmcmFtZS5hcHBlbmQoZXh0ZW5kZWRQ
YXlsb2FkTGVuZ3RoLCA4KTsKKyAgICB9CisKKyAgICAvLyBNYXNrIHRoZSBmcmFtZS4KKyAgICBz
aXplX3QgbWFza2luZ0tleVN0YXJ0ID0gZnJhbWUuc2l6ZSgpOworICAgIGZyYW1lLmFwcGVuZCgi
Li4uLiIsIDQpOyAvLyBGb3VyLWJ5dGUgcGxhY2Vob2xkZXIgZm9yIG1hc2tpbmcga2V5LiBXaWxs
IGJlIG92ZXJ3cml0dGVuLgorICAgIHNpemVfdCBwYXlsb2FkU3RhcnQgPSBmcmFtZS5zaXplKCk7
CisgICAgZnJhbWUuYXBwZW5kKGRhdGEsIGRhdGFMZW5ndGgpOworCisgICAgY3J5cHRvZ3JhcGhp
Y2FsbHlSYW5kb21WYWx1ZXMoJmZyYW1lLmZpcnN0KCkgKyBtYXNraW5nS2V5U3RhcnQsIDQpOwor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZGF0YUxlbmd0aDsgKytpKQorICAgICAgICBmcmFt
ZVtwYXlsb2FkU3RhcnQgKyBpXSBePSBmcmFtZVttYXNraW5nS2V5U3RhcnQgKyBpICUgNF07CisK
KyAgICByZXR1cm4gbV9oYW5kbGUtPnNlbmQoZnJhbWUuZGF0YSgpLCBmcmFtZS5zaXplKCkpOwor
fQorCiB9ICAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgIC8vIEVOQUJMRShXRUJfU09D
S0VUUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hh
bm5lbC5oIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmgKaW5k
ZXggNWQ1NzI4OTZjY2QzMjEyYWI2MzQ2NWMxNTViOTJiZTBiMjZmOWMyYy4uZWE2OTliY2YyZTJj
ZTU1NThkZWU2ZGI5NmZkYTc0NDRiMjU0Mzg1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd2Vic29j
a2V0cy9XZWJTb2NrZXRDaGFubmVsLmgKQEAgLTMzLDYgKzMzLDcgQEAKIAogI2lmIEVOQUJMRShX
RUJfU09DS0VUUykKIAorI2luY2x1ZGUgIkNvbnNvbGUuaCIKICNpbmNsdWRlICJTb2NrZXRTdHJl
YW1IYW5kbGVDbGllbnQuaCIKICNpbmNsdWRlICJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5o
IgogI2luY2x1ZGUgIlRpbWVyLmgiCkBAIC04MSw2ICs4MiwzMCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgcHJpdmF0ZToKICAgICAgICAgV2ViU29ja2V0Q2hhbm5lbChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgV2ViU29ja2V0Q2hhbm5lbENsaWVudCosIGNvbnN0IEtVUkwmLCBjb25zdCBT
dHJpbmcmIHByb3RvY29sKTsKIAorICAgICAgICB0eXBlZGVmIHVuc2lnbmVkIGludCBPcENvZGU7
CisgICAgICAgIHN0YXRpYyBjb25zdCBPcENvZGUgT3BDb2RlQ29udGludWF0aW9uID0gMHgwOwor
ICAgICAgICBzdGF0aWMgY29uc3QgT3BDb2RlIE9wQ29kZVRleHQgPSAweDE7CisgICAgICAgIHN0
YXRpYyBjb25zdCBPcENvZGUgT3BDb2RlQmluYXJ5ID0gMHgyOworICAgICAgICBzdGF0aWMgY29u
c3QgT3BDb2RlIE9wQ29kZUNsb3NlID0gMHg4OworICAgICAgICBzdGF0aWMgY29uc3QgT3BDb2Rl
IE9wQ29kZVBpbmcgPSAweDk7CisgICAgICAgIHN0YXRpYyBjb25zdCBPcENvZGUgT3BDb2RlUG9u
ZyA9IDB4QTsKKworICAgICAgICBzdGF0aWMgYm9vbCBpc05vbkNvbnRyb2xPcENvZGUoT3BDb2Rl
IG9wQ29kZSkgeyByZXR1cm4gb3BDb2RlID09IE9wQ29kZUNvbnRpbnVhdGlvbiB8fCBvcENvZGUg
PT0gT3BDb2RlVGV4dCB8fCBvcENvZGUgPT0gT3BDb2RlQmluYXJ5OyB9CisgICAgICAgIHN0YXRp
YyBib29sIGlzQ29udHJvbE9wQ29kZShPcENvZGUgb3BDb2RlKSB7IHJldHVybiBvcENvZGUgPT0g
T3BDb2RlQ2xvc2UgfHwgb3BDb2RlID09IE9wQ29kZVBpbmcgfHwgb3BDb2RlID09IE9wQ29kZVBv
bmc7IH0KKyAgICAgICAgc3RhdGljIGJvb2wgaXNSZXNlcnZlZE9wQ29kZShPcENvZGUgb3BDb2Rl
KSB7IHJldHVybiAhaXNOb25Db250cm9sT3BDb2RlKG9wQ29kZSkgJiYgIWlzQ29udHJvbE9wQ29k
ZShvcENvZGUpOyB9CisKKyAgICAgICAgc3RydWN0IEZyYW1lRGF0YSB7CisgICAgICAgICAgICBP
cENvZGUgb3BDb2RlOworICAgICAgICAgICAgYm9vbCBmaW5hbDsKKyAgICAgICAgICAgIGJvb2wg
cmVzZXJ2ZWQxOworICAgICAgICAgICAgYm9vbCByZXNlcnZlZDI7CisgICAgICAgICAgICBib29s
IHJlc2VydmVkMzsKKyAgICAgICAgICAgIGJvb2wgbWFza2VkOworICAgICAgICAgICAgY29uc3Qg
Y2hhciogcGF5bG9hZDsKKyAgICAgICAgICAgIHNpemVfdCBwYXlsb2FkTGVuZ3RoOworICAgICAg
ICAgICAgY29uc3QgY2hhciogZW5kOworICAgICAgICB9OworCiAgICAgICAgIGJvb2wgYXBwZW5k
VG9CdWZmZXIoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbik7CiAgICAgICAgIHZvaWQgc2tp
cEJ1ZmZlcihzaXplX3QgbGVuKTsKICAgICAgICAgYm9vbCBwcm9jZXNzQnVmZmVyKCk7CkBAIC04
OCw2ICsxMTMsMTcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHN0YXJ0Q2xv
c2luZ0hhbmRzaGFrZSgpOwogICAgICAgICB2b2lkIGNsb3NpbmdUaW1lckZpcmVkKFRpbWVyPFdl
YlNvY2tldENoYW5uZWw+Kik7CiAKKyAgICAgICAgZW51bSBQYXJzZUZyYW1lUmVzdWx0IHsKKyAg
ICAgICAgICAgIEZyYW1lT0ssCisgICAgICAgICAgICBGcmFtZUluY29tcGxldGUsCisgICAgICAg
ICAgICBGcmFtZUVycm9yCisgICAgICAgIH07CisgICAgICAgIFBhcnNlRnJhbWVSZXN1bHQgcGFy
c2VGcmFtZShGcmFtZURhdGEmKTsgLy8gTWF5IG1vZGlmeSBwYXJ0IG9mIG1fYnVmZmVyIHRvIHVu
bWFzayB0aGUgZnJhbWUuCisgICAgICAgIHZvaWQgcHJvY2Vzc0ZyYW1lKGNvbnN0IEZyYW1lRGF0
YSYpOworICAgICAgICBib29sIHNlbmRGcmFtZShPcENvZGUsIGNvbnN0IGNoYXIqIGRhdGEsIHNp
emVfdCBkYXRhTGVuZ3RoKTsKKworICAgICAgICB2b2lkIGxvZ05ldHdvcmtNZXNzYWdlKE1lc3Nh
Z2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKKwogICAgICAgICBTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBtX2NvbnRleHQ7CiAgICAgICAgIFdlYlNvY2tldENoYW5uZWxDbGllbnQqIG1f
Y2xpZW50OwogICAgICAgICBXZWJTb2NrZXRIYW5kc2hha2UgbV9oYW5kc2hha2U7CkBAIC0xMDUs
NiArMTQxLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdW5zaWduZWQgbG9uZyBt
X3VuaGFuZGxlZEJ1ZmZlcmVkQW1vdW50OwogCiAgICAgICAgIHVuc2lnbmVkIGxvbmcgbV9pZGVu
dGlmaWVyOyAvLyBtX2lkZW50aWZpZXIgPT0gMCBtZWFucyB0aGF0IHdlIGNvdWxkIG5vdCBvYnRh
aW4gYSB2YWxpZCBpZGVudGlmaWVyLgorCisgICAgICAgIGJvb2wgbV9oYXNDb250aW51b3VzRnJh
bWU7CisgICAgICAgIE9wQ29kZSBtX2NvbnRpbnVvdXNGcmFtZU9wQ29kZTsKKyAgICAgICAgVmVj
dG9yPGNoYXI+IG1fY29udGludW91c0ZyYW1lRGF0YTsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tl
dEhhbmRzaGFrZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRz
aGFrZS5jcHAKaW5kZXggNzRlNDM2MTc0NjAzNjMzZTAyNTMwNmE2MDRmY2QwZDNjNDMyMmEyMC4u
NTYxZDE5MzRiZTdkY2I3MmYzOTlhM2I0M2MzYmJjMDliZGM5OWI5NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcApAQCAtMzUsNiArMzUs
NyBAQAogCiAjaW5jbHVkZSAiV2ViU29ja2V0SGFuZHNoYWtlLmgiCiAKKyNpbmNsdWRlICJCYXNl
NjQuaCIKICNpbmNsdWRlICJDb29raWUuaCIKICNpbmNsdWRlICJDb29raWVKYXIuaCIKICNpbmNs
dWRlICJEb2N1bWVudC5oIgpAQCAtNDUsNyArNDYsNyBAQAogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgPHd0
Zi9DcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlci5oPgotI2luY2x1ZGUgPHd0Zi9NRDUuaD4K
KyNpbmNsdWRlIDx3dGYvU0hBMS5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNp
bmNsdWRlIDx3dGYvU3RyaW5nRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAt
NTYsNyArNTcsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBjb25zdCBjaGFy
IHJhbmRvbUNoYXJhY3RlckluU2VjV2ViU29ja2V0S2V5W10gPSAiIVwiIyQlJicoKSorLC0uLzo7
PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJz
dHV2d3h5ent8fX4iOworc3RhdGljIGNvbnN0IGNoYXIqIHdlYlNvY2tldEtleUdVSUQgPSAiMjU4
RUFGQTUtRTkxNC00N0RBLTk1Q0EtQzVBQjBEQzg1QjExIjsKIAogc3RhdGljIFN0cmluZyByZXNv
dXJjZU5hbWUoY29uc3QgS1VSTCYgdXJsKQogewpAQCAtOTEsNzIgKzkyLDIyIEBAIHN0YXRpYyBT
dHJpbmcgdHJpbUNvbnNvbGVNZXNzYWdlKGNvbnN0IGNoYXIqIHAsIHNpemVfdCBsZW4pCiAgICAg
cmV0dXJuIHM7CiB9CiAKLXN0YXRpYyB1aW50MzJfdCByYW5kb21OdW1iZXJMZXNzVGhhbih1aW50
MzJfdCBuKQorc3RhdGljIFN0cmluZyBnZW5lcmF0ZVNlY1dlYlNvY2tldEtleSgpCiB7Ci0gICAg
aWYgKCFuKQotICAgICAgICByZXR1cm4gMDsKLSAgICBpZiAobiA9PSBzdGQ6Om51bWVyaWNfbGlt
aXRzPHVpbnQzMl90Pjo6bWF4KCkpCi0gICAgICAgIHJldHVybiBjcnlwdG9ncmFwaGljYWxseVJh
bmRvbU51bWJlcigpOwotICAgIHVpbnQzMl90IG1heCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8dWlu
dDMyX3Q+OjptYXgoKSAtIChzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCkgJSBu
KTsKLSAgICBBU1NFUlQoIShtYXggJSBuKSk7Ci0gICAgdWludDMyX3QgdjsKLSAgICBkbyB7Ci0g
ICAgICAgIHYgPSBjcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlcigpOwotICAgIH0gd2hpbGUg
KHYgPj0gbWF4KTsKLSAgICByZXR1cm4gdiAlIG47CisgICAgdW5zaWduZWQgY2hhciBrZXlbMTZd
OworICAgIGNyeXB0b2dyYXBoaWNhbGx5UmFuZG9tVmFsdWVzKGtleSwgMTYpOworICAgIHJldHVy
biBiYXNlNjRFbmNvZGUocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oa2V5KSwgMTYpOwogfQogCi1z
dGF0aWMgdm9pZCBnZW5lcmF0ZVNlY1dlYlNvY2tldEtleSh1aW50MzJfdCYgbnVtYmVyLCBTdHJp
bmcmIGtleSkKK3N0YXRpYyBTdHJpbmcgZ2V0RXhwZWN0ZWRXZWJTb2NrZXRBY2NlcHQoY29uc3Qg
U3RyaW5nJiBzZWNXZWJTb2NrZXRLZXkpCiB7Ci0gICAgdWludDMyX3Qgc3BhY2UgPSByYW5kb21O
dW1iZXJMZXNzVGhhbigxMikgKyAxOwotICAgIHVpbnQzMl90IG1heCA9IDQyOTQ5NjcyOTVVIC8g
c3BhY2U7Ci0gICAgbnVtYmVyID0gcmFuZG9tTnVtYmVyTGVzc1RoYW4obWF4KTsKLSAgICB1aW50
MzJfdCBwcm9kdWN0ID0gbnVtYmVyICogc3BhY2U7Ci0KLSAgICBTdHJpbmcgcyA9IFN0cmluZzo6
bnVtYmVyKHByb2R1Y3QpOwotICAgIGludCBuID0gcmFuZG9tTnVtYmVyTGVzc1RoYW4oMTIpICsg
MTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgcmFuZG9tQ2hhcnMsIChyYW5kb21D
aGFyYWN0ZXJJblNlY1dlYlNvY2tldEtleSkpOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsg
aSsrKSB7Ci0gICAgICAgIGludCBwb3MgPSByYW5kb21OdW1iZXJMZXNzVGhhbihzLmxlbmd0aCgp
ICsgMSk7Ci0gICAgICAgIGludCBjaHBvcyA9IHJhbmRvbU51bWJlckxlc3NUaGFuKHJhbmRvbUNo
YXJzLmxlbmd0aCgpKTsKLSAgICAgICAgcy5pbnNlcnQocmFuZG9tQ2hhcnMuc3Vic3RyaW5nKGNo
cG9zLCAxKSwgcG9zKTsKLSAgICB9Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHNw
YWNlQ2hhciwgKCIgIikpOwotICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBzcGFjZTsgaSsr
KSB7Ci0gICAgICAgIGludCBwb3MgPSByYW5kb21OdW1iZXJMZXNzVGhhbihzLmxlbmd0aCgpIC0g
MSkgKyAxOwotICAgICAgICBzLmluc2VydChzcGFjZUNoYXIsIHBvcyk7Ci0gICAgfQotICAgIEFT
U0VSVChzWzBdICE9ICcgJyk7Ci0gICAgQVNTRVJUKHNbcy5sZW5ndGgoKSAtIDFdICE9ICcgJyk7
Ci0gICAga2V5ID0gczsKLX0KLQotc3RhdGljIHZvaWQgZ2VuZXJhdGVLZXkzKHVuc2lnbmVkIGNo
YXIga2V5M1s4XSkKLXsKLSAgICBjcnlwdG9ncmFwaGljYWxseVJhbmRvbVZhbHVlcyhrZXkzLCA4
KTsKLX0KLQotc3RhdGljIHZvaWQgc2V0Q2hhbGxlbmdlTnVtYmVyKHVuc2lnbmVkIGNoYXIqIGJ1
ZiwgdWludDMyX3QgbnVtYmVyKQotewotICAgIHVuc2lnbmVkIGNoYXIqIHAgPSBidWYgKyAzOwot
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNDsgaSsrKSB7Ci0gICAgICAgICpwID0gbnVtYmVyICYg
MHhGRjsKLSAgICAgICAgLS1wOwotICAgICAgICBudW1iZXIgPj49IDg7Ci0gICAgfQotfQotCi1z
dGF0aWMgdm9pZCBnZW5lcmF0ZUV4cGVjdGVkQ2hhbGxlbmdlUmVzcG9uc2UodWludDMyX3QgbnVt
YmVyMSwgdWludDMyX3QgbnVtYmVyMiwgdW5zaWduZWQgY2hhciBrZXkzWzhdLCB1bnNpZ25lZCBj
aGFyIGV4cGVjdGVkQ2hhbGxlbmdlWzE2XSkKLXsKLSAgICB1bnNpZ25lZCBjaGFyIGNoYWxsZW5n
ZVsxNl07Ci0gICAgc2V0Q2hhbGxlbmdlTnVtYmVyKCZjaGFsbGVuZ2VbMF0sIG51bWJlcjEpOwot
ICAgIHNldENoYWxsZW5nZU51bWJlcigmY2hhbGxlbmdlWzRdLCBudW1iZXIyKTsKLSAgICBtZW1j
cHkoJmNoYWxsZW5nZVs4XSwga2V5MywgOCk7Ci0gICAgTUQ1IG1kNTsKLSAgICBtZDUuYWRkQnl0
ZXMoY2hhbGxlbmdlLCBzaXplb2YoY2hhbGxlbmdlKSk7Ci0gICAgVmVjdG9yPHVpbnQ4X3QsIDE2
PiBkaWdlc3Q7Ci0gICAgbWQ1LmNoZWNrc3VtKGRpZ2VzdCk7Ci0gICAgbWVtY3B5KGV4cGVjdGVk
Q2hhbGxlbmdlLCBkaWdlc3QuZGF0YSgpLCAxNik7CisgICAgU0hBMSBzaGExOworICAgIENTdHJp
bmcga2V5RGF0YSA9IHNlY1dlYlNvY2tldEtleS5hc2NpaSgpOworICAgIHNoYTEuYWRkQnl0ZXMo
cmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oa2V5RGF0YS5kYXRhKCkpLCBrZXlEYXRh
Lmxlbmd0aCgpKTsKKyAgICBzaGExLmFkZEJ5dGVzKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWlu
dDhfdCo+KHdlYlNvY2tldEtleUdVSUQpLCBzdHJsZW4od2ViU29ja2V0S2V5R1VJRCkpOworICAg
IFZlY3Rvcjx1aW50OF90LCAyMD4gaGFzaDsKKyAgICBzaGExLmNvbXB1dGVIYXNoKGhhc2gpOwor
ICAgIHJldHVybiBiYXNlNjRFbmNvZGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oJmhh
c2guZmlyc3QoKSksIDIwKTsKIH0KIAogV2ViU29ja2V0SGFuZHNoYWtlOjpXZWJTb2NrZXRIYW5k
c2hha2UoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHByb3RvY29sLCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0KQpAQCAtMTY2LDEyICsxMTcsOCBAQCBXZWJTb2NrZXRIYW5k
c2hha2U6OldlYlNvY2tldEhhbmRzaGFrZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYg
cHJvdG9jb2wsCiAgICAgLCBtX2NvbnRleHQoY29udGV4dCkKICAgICAsIG1fbW9kZShJbmNvbXBs
ZXRlKQogewotICAgIHVpbnQzMl90IG51bWJlcjE7Ci0gICAgdWludDMyX3QgbnVtYmVyMjsKLSAg
ICBnZW5lcmF0ZVNlY1dlYlNvY2tldEtleShudW1iZXIxLCBtX3NlY1dlYlNvY2tldEtleTEpOwot
ICAgIGdlbmVyYXRlU2VjV2ViU29ja2V0S2V5KG51bWJlcjIsIG1fc2VjV2ViU29ja2V0S2V5Mik7
Ci0gICAgZ2VuZXJhdGVLZXkzKG1fa2V5Myk7Ci0gICAgZ2VuZXJhdGVFeHBlY3RlZENoYWxsZW5n
ZVJlc3BvbnNlKG51bWJlcjEsIG51bWJlcjIsIG1fa2V5MywgbV9leHBlY3RlZENoYWxsZW5nZVJl
c3BvbnNlKTsKKyAgICBtX3NlY1dlYlNvY2tldEtleSA9IGdlbmVyYXRlU2VjV2ViU29ja2V0S2V5
KCk7CisgICAgbV9leHBlY3RlZEFjY2VwdCA9IGdldEV4cGVjdGVkV2ViU29ja2V0QWNjZXB0KG1f
c2VjV2ViU29ja2V0S2V5KTsKIH0KIAogV2ViU29ja2V0SGFuZHNoYWtlOjp+V2ViU29ja2V0SGFu
ZHNoYWtlKCkKQEAgLTIzMywxMCArMTgwLDEwIEBAIENTdHJpbmcgV2ViU29ja2V0SGFuZHNoYWtl
OjpjbGllbnRIYW5kc2hha2VNZXNzYWdlKCkgY29uc3QKICAgICBidWlsZGVyLmFwcGVuZCgiIEhU
VFAvMS4xXHJcbiIpOwogCiAgICAgVmVjdG9yPFN0cmluZz4gZmllbGRzOwotICAgIGZpZWxkcy5h
cHBlbmQoIlVwZ3JhZGU6IFdlYlNvY2tldCIpOworICAgIGZpZWxkcy5hcHBlbmQoIlVwZ3JhZGU6
IHdlYnNvY2tldCIpOwogICAgIGZpZWxkcy5hcHBlbmQoIkNvbm5lY3Rpb246IFVwZ3JhZGUiKTsK
ICAgICBmaWVsZHMuYXBwZW5kKCJIb3N0OiAiICsgaG9zdE5hbWUobV91cmwsIG1fc2VjdXJlKSk7
Ci0gICAgZmllbGRzLmFwcGVuZCgiT3JpZ2luOiAiICsgY2xpZW50T3JpZ2luKCkpOworICAgIGZp
ZWxkcy5hcHBlbmQoIlNlYy1XZWJTb2NrZXQtT3JpZ2luOiAiICsgY2xpZW50T3JpZ2luKCkpOwog
ICAgIGlmICghbV9jbGllbnRQcm90b2NvbC5pc0VtcHR5KCkpCiAgICAgICAgIGZpZWxkcy5hcHBl
bmQoIlNlYy1XZWJTb2NrZXQtUHJvdG9jb2w6ICIgKyBtX2NsaWVudFByb3RvY29sKTsKIApAQCAt
MjQ5LDggKzE5Niw4IEBAIENTdHJpbmcgV2ViU29ja2V0SGFuZHNoYWtlOjpjbGllbnRIYW5kc2hh
a2VNZXNzYWdlKCkgY29uc3QKICAgICAgICAgLy8gU2V0ICJDb29raWUyOiA8Y29va2llPiIgaWYg
Y29va2llcyAyIGV4aXN0cyBmb3IgdXJsPwogICAgIH0KIAotICAgIGZpZWxkcy5hcHBlbmQoIlNl
Yy1XZWJTb2NrZXQtS2V5MTogIiArIG1fc2VjV2ViU29ja2V0S2V5MSk7Ci0gICAgZmllbGRzLmFw
cGVuZCgiU2VjLVdlYlNvY2tldC1LZXkyOiAiICsgbV9zZWNXZWJTb2NrZXRLZXkyKTsKKyAgICBm
aWVsZHMuYXBwZW5kKCJTZWMtV2ViU29ja2V0LUtleTogIiArIG1fc2VjV2ViU29ja2V0S2V5KTsK
KyAgICBmaWVsZHMuYXBwZW5kKCJTZWMtV2ViU29ja2V0LVZlcnNpb246IDciKTsKIAogICAgIC8v
IEZpZWxkcyBpbiB0aGUgaGFuZHNoYWtlIGFyZSBzZW50IGJ5IHRoZSBjbGllbnQgaW4gYSByYW5k
b20gb3JkZXI7IHRoZQogICAgIC8vIG9yZGVyIGlzIG5vdCBtZWFuaW5nZnVsLiAgVGh1cywgaXQn
cyBvayB0byBzZW5kIHRoZSBvcmRlciB3ZSBjb25zdHJ1Y3RlZApAQCAtMjY0LDExICsyMTEsNyBA
QCBDU3RyaW5nIFdlYlNvY2tldEhhbmRzaGFrZTo6Y2xpZW50SGFuZHNoYWtlTWVzc2FnZSgpIGNv
bnN0CiAgICAgYnVpbGRlci5hcHBlbmQoIlxyXG4iKTsKIAogICAgIENTdHJpbmcgaGFuZHNoYWtl
SGVhZGVyID0gYnVpbGRlci50b1N0cmluZygpLnV0ZjgoKTsKLSAgICBjaGFyKiBjaGFyYWN0ZXJC
dWZmZXIgPSAwOwotICAgIENTdHJpbmcgbXNnID0gQ1N0cmluZzo6bmV3VW5pbml0aWFsaXplZCho
YW5kc2hha2VIZWFkZXIubGVuZ3RoKCkgKyBzaXplb2YobV9rZXkzKSwgY2hhcmFjdGVyQnVmZmVy
KTsKLSAgICBtZW1jcHkoY2hhcmFjdGVyQnVmZmVyLCBoYW5kc2hha2VIZWFkZXIuZGF0YSgpLCBo
YW5kc2hha2VIZWFkZXIubGVuZ3RoKCkpOwotICAgIG1lbWNweShjaGFyYWN0ZXJCdWZmZXIgKyBo
YW5kc2hha2VIZWFkZXIubGVuZ3RoKCksIG1fa2V5Mywgc2l6ZW9mKG1fa2V5MykpOwotICAgIHJl
dHVybiBtc2c7CisgICAgcmV0dXJuIGhhbmRzaGFrZUhlYWRlcjsKIH0KIAogV2ViU29ja2V0SGFu
ZHNoYWtlUmVxdWVzdCBXZWJTb2NrZXRIYW5kc2hha2U6OmNsaWVudEhhbmRzaGFrZVJlcXVlc3Qo
KSBjb25zdApAQCAtMjc3LDEwICsyMjAsMTAgQEAgV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdCBX
ZWJTb2NrZXRIYW5kc2hha2U6OmNsaWVudEhhbmRzaGFrZVJlcXVlc3QoKSBjb25zdAogICAgIC8v
IEZJWE1FOiBkbyB3ZSBuZWVkIHRvIHN0b3JlIG1fc2VjV2ViU29ja2V0S2V5MSwgbV9zZWNXZWJT
b2NrZXRLZXkyIGFuZAogICAgIC8vIG1fa2V5MyBpbiBXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0
PwogICAgIFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QgcmVxdWVzdCgiR0VUIiwgbV91cmwpOwot
ICAgIHJlcXVlc3QuYWRkSGVhZGVyRmllbGQoIlVwZ3JhZGUiLCAiV2ViU29ja2V0Iik7CisgICAg
cmVxdWVzdC5hZGRIZWFkZXJGaWVsZCgiVXBncmFkZSIsICJ3ZWJzb2NrZXQiKTsKICAgICByZXF1
ZXN0LmFkZEhlYWRlckZpZWxkKCJDb25uZWN0aW9uIiwgIlVwZ3JhZGUiKTsKICAgICByZXF1ZXN0
LmFkZEhlYWRlckZpZWxkKCJIb3N0IiwgaG9zdE5hbWUobV91cmwsIG1fc2VjdXJlKSk7Ci0gICAg
cmVxdWVzdC5hZGRIZWFkZXJGaWVsZCgiT3JpZ2luIiwgY2xpZW50T3JpZ2luKCkpOworICAgIHJl
cXVlc3QuYWRkSGVhZGVyRmllbGQoIlNlYy1XZWJTb2NrZXQtT3JpZ2luIiwgY2xpZW50T3JpZ2lu
KCkpOwogICAgIGlmICghbV9jbGllbnRQcm90b2NvbC5pc0VtcHR5KCkpCiAgICAgICAgIHJlcXVl
c3QuYWRkSGVhZGVyRmllbGQoIlNlYy1XZWJTb2NrZXQtUHJvdG9jb2w6IiwgbV9jbGllbnRQcm90
b2NvbCk7CiAKQEAgLTI5Myw5ICsyMzYsOCBAQCBXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0IFdl
YlNvY2tldEhhbmRzaGFrZTo6Y2xpZW50SGFuZHNoYWtlUmVxdWVzdCgpIGNvbnN0CiAgICAgICAg
IC8vIFNldCAiQ29va2llMjogPGNvb2tpZT4iIGlmIGNvb2tpZXMgMiBleGlzdHMgZm9yIHVybD8K
ICAgICB9CiAKLSAgICByZXF1ZXN0LmFkZEhlYWRlckZpZWxkKCJTZWMtV2ViU29ja2V0LUtleTEi
LCBtX3NlY1dlYlNvY2tldEtleTEpOwotICAgIHJlcXVlc3QuYWRkSGVhZGVyRmllbGQoIlNlYy1X
ZWJTb2NrZXQtS2V5MiIsIG1fc2VjV2ViU29ja2V0S2V5Mik7Ci0gICAgcmVxdWVzdC5zZXRLZXkz
KG1fa2V5Myk7CisgICAgcmVxdWVzdC5hZGRIZWFkZXJGaWVsZCgiU2VjLVdlYlNvY2tldC1LZXki
LCBtX3NlY1dlYlNvY2tldEtleSk7CisgICAgcmVxdWVzdC5hZGRIZWFkZXJGaWVsZCgiU2VjLVdl
YlNvY2tldC1WZXJzaW9uIiwgIjciKTsKIAogICAgIHJldHVybiByZXF1ZXN0OwogfQpAQCAtMzQ3
LDE4ICsyODksOCBAQCBpbnQgV2ViU29ja2V0SGFuZHNoYWtlOjpyZWFkU2VydmVySGFuZHNoYWtl
KGNvbnN0IGNoYXIqIGhlYWRlciwgc2l6ZV90IGxlbikKICAgICAgICAgbV9tb2RlID0gRmFpbGVk
OwogICAgICAgICByZXR1cm4gcCAtIGhlYWRlcjsKICAgICB9Ci0gICAgaWYgKGxlbiA8IHN0YXRp
Y19jYXN0PHNpemVfdD4ocCAtIGhlYWRlciArIHNpemVvZihtX2V4cGVjdGVkQ2hhbGxlbmdlUmVz
cG9uc2UpKSkgewotICAgICAgICAvLyBKdXN0IGhhc24ndCBiZWVuIHJlY2VpdmVkIC9leHBlY3Rl
ZC8geWV0LgotICAgICAgICBtX21vZGUgPSBJbmNvbXBsZXRlOwotICAgICAgICByZXR1cm4gLTE7
Ci0gICAgfQotICAgIG1fcmVzcG9uc2Uuc2V0Q2hhbGxlbmdlUmVzcG9uc2Uoc3RhdGljX2Nhc3Q8
Y29uc3QgdW5zaWduZWQgY2hhcio+KHN0YXRpY19jYXN0PGNvbnN0IHZvaWQqPihwKSkpOwotICAg
IGlmIChtZW1jbXAocCwgbV9leHBlY3RlZENoYWxsZW5nZVJlc3BvbnNlLCBzaXplb2YobV9leHBl
Y3RlZENoYWxsZW5nZVJlc3BvbnNlKSkpIHsKLSAgICAgICAgbV9tb2RlID0gRmFpbGVkOwotICAg
ICAgICByZXR1cm4gKHAgLSBoZWFkZXIpICsgc2l6ZW9mKG1fZXhwZWN0ZWRDaGFsbGVuZ2VSZXNw
b25zZSk7Ci0gICAgfQogICAgIG1fbW9kZSA9IENvbm5lY3RlZDsKLSAgICByZXR1cm4gKHAgLSBo
ZWFkZXIpICsgc2l6ZW9mKG1fZXhwZWN0ZWRDaGFsbGVuZ2VSZXNwb25zZSk7CisgICAgcmV0dXJu
IHAgLSBoZWFkZXI7CiB9CiAKIFdlYlNvY2tldEhhbmRzaGFrZTo6TW9kZSBXZWJTb2NrZXRIYW5k
c2hha2U6Om1vZGUoKSBjb25zdApAQCAtMzcxLDE2ICszMDMsNiBAQCBTdHJpbmcgV2ViU29ja2V0
SGFuZHNoYWtlOjpmYWlsdXJlUmVhc29uKCkgY29uc3QKICAgICByZXR1cm4gbV9mYWlsdXJlUmVh
c29uOwogfQogCi1TdHJpbmcgV2ViU29ja2V0SGFuZHNoYWtlOjpzZXJ2ZXJXZWJTb2NrZXRPcmln
aW4oKSBjb25zdAotewotICAgIHJldHVybiBtX3Jlc3BvbnNlLmhlYWRlckZpZWxkcygpLmdldCgi
c2VjLXdlYnNvY2tldC1vcmlnaW4iKTsKLX0KLQotU3RyaW5nIFdlYlNvY2tldEhhbmRzaGFrZTo6
c2VydmVyV2ViU29ja2V0TG9jYXRpb24oKSBjb25zdAotewotICAgIHJldHVybiBtX3Jlc3BvbnNl
LmhlYWRlckZpZWxkcygpLmdldCgic2VjLXdlYnNvY2tldC1sb2NhdGlvbiIpOwotfQotCiBTdHJp
bmcgV2ViU29ja2V0SGFuZHNoYWtlOjpzZXJ2ZXJXZWJTb2NrZXRQcm90b2NvbCgpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIG1fcmVzcG9uc2UuaGVhZGVyRmllbGRzKCkuZ2V0KCJzZWMtd2Vic29ja2V0
LXByb3RvY29sIik7CkBAIC00MDYsNiArMzI4LDExIEBAIFN0cmluZyBXZWJTb2NrZXRIYW5kc2hh
a2U6OnNlcnZlckNvbm5lY3Rpb24oKSBjb25zdAogICAgIHJldHVybiBtX3Jlc3BvbnNlLmhlYWRl
ckZpZWxkcygpLmdldCgiY29ubmVjdGlvbiIpOwogfQogCitTdHJpbmcgV2ViU29ja2V0SGFuZHNo
YWtlOjpzZXJ2ZXJXZWJTb2NrZXRBY2NlcHQoKSBjb25zdAoreworICAgIHJldHVybiBtX3Jlc3Bv
bnNlLmhlYWRlckZpZWxkcygpLmdldCgic2VjLXdlYnNvY2tldC1hY2NlcHQiKTsKK30KKwogY29u
c3QgV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UmIFdlYlNvY2tldEhhbmRzaGFrZTo6c2VydmVy
SGFuZHNoYWtlUmVzcG9uc2UoKSBjb25zdAogewogICAgIHJldHVybiBtX3Jlc3BvbnNlOwpAQCAt
NTY1LDExICs0OTIsMTAgQEAgY29uc3QgY2hhciogV2ViU29ja2V0SGFuZHNoYWtlOjpyZWFkSFRU
UEhlYWRlcnMoY29uc3QgY2hhciogc3RhcnQsIGNvbnN0IGNoYXIqIGUKIAogYm9vbCBXZWJTb2Nr
ZXRIYW5kc2hha2U6OmNoZWNrUmVzcG9uc2VIZWFkZXJzKCkKIHsKLSAgICBjb25zdCBTdHJpbmcm
IHNlcnZlcldlYlNvY2tldExvY2F0aW9uID0gdGhpcy0+c2VydmVyV2ViU29ja2V0TG9jYXRpb24o
KTsKLSAgICBjb25zdCBTdHJpbmcmIHNlcnZlcldlYlNvY2tldE9yaWdpbiA9IHRoaXMtPnNlcnZl
cldlYlNvY2tldE9yaWdpbigpOwogICAgIGNvbnN0IFN0cmluZyYgc2VydmVyV2ViU29ja2V0UHJv
dG9jb2wgPSB0aGlzLT5zZXJ2ZXJXZWJTb2NrZXRQcm90b2NvbCgpOwogICAgIGNvbnN0IFN0cmlu
ZyYgc2VydmVyVXBncmFkZSA9IHRoaXMtPnNlcnZlclVwZ3JhZGUoKTsKICAgICBjb25zdCBTdHJp
bmcmIHNlcnZlckNvbm5lY3Rpb24gPSB0aGlzLT5zZXJ2ZXJDb25uZWN0aW9uKCk7CisgICAgY29u
c3QgU3RyaW5nJiBzZXJ2ZXJXZWJTb2NrZXRBY2NlcHQgPSB0aGlzLT5zZXJ2ZXJXZWJTb2NrZXRB
Y2NlcHQoKTsKIAogICAgIGlmIChzZXJ2ZXJVcGdyYWRlLmlzTnVsbCgpKSB7CiAgICAgICAgIG1f
ZmFpbHVyZVJlYXNvbiA9ICJFcnJvciBkdXJpbmcgV2ViU29ja2V0IGhhbmRzaGFrZTogJ1VwZ3Jh
ZGUnIGhlYWRlciBpcyBtaXNzaW5nIjsKQEAgLTU3OSwxNSArNTA1LDYgQEAgYm9vbCBXZWJTb2Nr
ZXRIYW5kc2hha2U6OmNoZWNrUmVzcG9uc2VIZWFkZXJzKCkKICAgICAgICAgbV9mYWlsdXJlUmVh
c29uID0gIkVycm9yIGR1cmluZyBXZWJTb2NrZXQgaGFuZHNoYWtlOiAnQ29ubmVjdGlvbicgaGVh
ZGVyIGlzIG1pc3NpbmciOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIGlmIChz
ZXJ2ZXJXZWJTb2NrZXRPcmlnaW4uaXNOdWxsKCkpIHsKLSAgICAgICAgbV9mYWlsdXJlUmVhc29u
ID0gIkVycm9yIGR1cmluZyBXZWJTb2NrZXQgaGFuZHNoYWtlOiAnU2VjLVdlYlNvY2tldC1Pcmln
aW4nIGhlYWRlciBpcyBtaXNzaW5nIjsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAg
ICBpZiAoc2VydmVyV2ViU29ja2V0TG9jYXRpb24uaXNOdWxsKCkpIHsKLSAgICAgICAgbV9mYWls
dXJlUmVhc29uID0gIkVycm9yIGR1cmluZyBXZWJTb2NrZXQgaGFuZHNoYWtlOiAnU2VjLVdlYlNv
Y2tldC1Mb2NhdGlvbicgaGVhZGVyIGlzIG1pc3NpbmciOwotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgfQotCiAgICAgaWYgKCFlcXVhbElnbm9yaW5nQ2FzZShzZXJ2ZXJVcGdyYWRlLCAid2Vi
c29ja2V0IikpIHsKICAgICAgICAgbV9mYWlsdXJlUmVhc29uID0gIkVycm9yIGR1cmluZyBXZWJT
b2NrZXQgaGFuZHNoYWtlOiAnVXBncmFkZScgaGVhZGVyIHZhbHVlIGlzIG5vdCAnV2ViU29ja2V0
JyI7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTU5NiwxOSArNTEzLDIwIEBAIGJvb2wgV2Vi
U29ja2V0SGFuZHNoYWtlOjpjaGVja1Jlc3BvbnNlSGVhZGVycygpCiAgICAgICAgIG1fZmFpbHVy
ZVJlYXNvbiA9ICJFcnJvciBkdXJpbmcgV2ViU29ja2V0IGhhbmRzaGFrZTogJ0Nvbm5lY3Rpb24n
IGhlYWRlciB2YWx1ZSBpcyBub3QgJ1VwZ3JhZGUnIjsKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KLQotICAgIGlmIChjbGllbnRPcmlnaW4oKSAhPSBzZXJ2ZXJXZWJTb2NrZXRPcmlnaW4p
IHsKLSAgICAgICAgbV9mYWlsdXJlUmVhc29uID0gIkVycm9yIGR1cmluZyBXZWJTb2NrZXQgaGFu
ZHNoYWtlOiBvcmlnaW4gbWlzbWF0Y2g6ICIgKyBjbGllbnRPcmlnaW4oKSArICIgIT0gIiArIHNl
cnZlcldlYlNvY2tldE9yaWdpbjsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICBp
ZiAoY2xpZW50TG9jYXRpb24oKSAhPSBzZXJ2ZXJXZWJTb2NrZXRMb2NhdGlvbikgewotICAgICAg
ICBtX2ZhaWx1cmVSZWFzb24gPSAiRXJyb3IgZHVyaW5nIFdlYlNvY2tldCBoYW5kc2hha2U6IGxv
Y2F0aW9uIG1pc21hdGNoOiAiICsgY2xpZW50TG9jYXRpb24oKSArICIgIT0gIiArIHNlcnZlcldl
YlNvY2tldExvY2F0aW9uOworICAgIGlmIChzZXJ2ZXJXZWJTb2NrZXRBY2NlcHQuaXNOdWxsKCkp
IHsKKyAgICAgICAgbV9mYWlsdXJlUmVhc29uID0gIkVycm9yIGR1cmluZyBXZWJTb2NrZXQgaGFu
ZHNoYWtlOiAnc2VjLXdlYnNvY2tldC1hY2NlcHQnIGhlYWRlciBpcyBtaXNzaW5nIjsKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KKwogICAgIGlmICghbV9jbGllbnRQcm90b2NvbC5pc0Vt
cHR5KCkgJiYgbV9jbGllbnRQcm90b2NvbCAhPSBzZXJ2ZXJXZWJTb2NrZXRQcm90b2NvbCkgewog
ICAgICAgICBtX2ZhaWx1cmVSZWFzb24gPSAiRXJyb3IgZHVyaW5nIFdlYlNvY2tldCBoYW5kc2hh
a2U6IHByb3RvY29sIG1pc21hdGNoOiAiICsgbV9jbGllbnRQcm90b2NvbCArICIgIT0gIiArIHNl
cnZlcldlYlNvY2tldFByb3RvY29sOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQorICAg
IGlmIChzZXJ2ZXJXZWJTb2NrZXRBY2NlcHQgIT0gbV9leHBlY3RlZEFjY2VwdCkgeworICAgICAg
ICBTdHJpbmcgbWVzc2FnZSA9IG1ha2VTdHJpbmcoIkVycm9yIGR1cmluZyBXZWJTb2NrZXQgaGFu
ZHNoYWtlOiBTZWMtV2ViU29ja2V0LUtleSBtaXNtYXRjaDogZXhwZWN0ZWQgPSBcIiIsIG1fZXhw
ZWN0ZWRBY2NlcHQsICJcIiwgYWN0dWFsID0gXCIiLCBzZXJ2ZXJXZWJTb2NrZXRBY2NlcHQsICJc
IiIpOworICAgICAgICBtX2NvbnRleHQtPmFkZE1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBMb2dN
ZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIG1lc3NhZ2UsIDAsIGNsaWVudE9yaWdpbigp
LCAwKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hh
a2UuaCBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmgKaW5k
ZXggNTU1NmVlZjUxNDcxMjc0YmQ0MTg1OTkzY2Q4NmY2MzMwYmJlMjY1Ni4uY2IxMzUzZjc1MGI2
YmY1YzAwOTEyZWE0MjAyYjZhZjk2ZTQ4ZGVmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJz
b2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5oCkBAIC03MywxMyArNzMsMTIgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICBNb2RlIG1vZGUoKSBjb25zdDsKICAgICAgICAgU3RyaW5nIGZh
aWx1cmVSZWFzb24oKSBjb25zdDsgLy8gUmV0dXJucyBhIHN0cmluZyBpbmRpY2F0aW5nIHRoZSBy
ZWFzb24gb2YgZmFpbHVyZSBpZiBtb2RlKCkgPT0gRmFpbGVkLgogCi0gICAgICAgIFN0cmluZyBz
ZXJ2ZXJXZWJTb2NrZXRPcmlnaW4oKSBjb25zdDsKLSAgICAgICAgU3RyaW5nIHNlcnZlcldlYlNv
Y2tldExvY2F0aW9uKCkgY29uc3Q7CiAgICAgICAgIFN0cmluZyBzZXJ2ZXJXZWJTb2NrZXRQcm90
b2NvbCgpIGNvbnN0OwogICAgICAgICBTdHJpbmcgc2VydmVyU2V0Q29va2llKCkgY29uc3Q7CiAg
ICAgICAgIFN0cmluZyBzZXJ2ZXJTZXRDb29raWUyKCkgY29uc3Q7CiAgICAgICAgIFN0cmluZyBz
ZXJ2ZXJVcGdyYWRlKCkgY29uc3Q7CiAgICAgICAgIFN0cmluZyBzZXJ2ZXJDb25uZWN0aW9uKCkg
Y29uc3Q7CisgICAgICAgIFN0cmluZyBzZXJ2ZXJXZWJTb2NrZXRBY2NlcHQoKSBjb25zdDsKIAog
ICAgICAgICBjb25zdCBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZSYgc2VydmVySGFuZHNoYWtl
UmVzcG9uc2UoKSBjb25zdDsKIApAQCAtMTAwLDEwICs5OSw4IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogICAgICAgICBNb2RlIG1fbW9kZTsKIAotICAgICAgICBTdHJpbmcgbV9zZWNXZWJTb2Nr
ZXRLZXkxOwotICAgICAgICBTdHJpbmcgbV9zZWNXZWJTb2NrZXRLZXkyOwotICAgICAgICB1bnNp
Z25lZCBjaGFyIG1fa2V5M1s4XTsKLSAgICAgICAgdW5zaWduZWQgY2hhciBtX2V4cGVjdGVkQ2hh
bGxlbmdlUmVzcG9uc2VbMTZdOworICAgICAgICBTdHJpbmcgbV9zZWNXZWJTb2NrZXRLZXk7Cisg
ICAgICAgIFN0cmluZyBtX2V4cGVjdGVkQWNjZXB0OwogCiAgICAgICAgIFdlYlNvY2tldEhhbmRz
aGFrZVJlc3BvbnNlIG1fcmVzcG9uc2U7CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>