<?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>227096</bug_id>
          
          <creation_ts>2021-06-16 15:04:14 -0700</creation_ts>
          <short_desc>[resultsdbpy] Adopt autoinstaller</short_desc>
          <delta_ts>2021-06-21 08:51:14 -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>Tools / Tests</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jonathan Bedard">jbedard</reporter>
          <assigned_to name="Jonathan Bedard">jbedard</assigned_to>
          <cc>aakash_jain</cc>
    
    <cc>dewei_zhu</cc>
    
    <cc>slewis</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1770417</commentid>
    <comment_count>0</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-06-16 15:04:14 -0700</bug_when>
    <thetext>We don&apos;t want to use the autoinstaller in production, but it&apos;s extremely useful for local testing since the libraries required by resultsdbpy include relatively specific versions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770418</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-06-16 15:04:44 -0700</bug_when>
    <thetext>&lt;rdar://problem/79418080&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770424</commentid>
    <comment_count>2</comment_count>
      <attachid>431610</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-06-16 15:10:45 -0700</bug_when>
    <thetext>Created attachment 431610
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770644</commentid>
    <comment_count>3</comment_count>
      <attachid>431668</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-06-17 08:32:05 -0700</bug_when>
    <thetext>Created attachment 431668
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770653</commentid>
    <comment_count>4</comment_count>
      <attachid>431673</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-06-17 08:53:33 -0700</bug_when>
    <thetext>Created attachment 431673
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770795</commentid>
    <comment_count>5</comment_count>
      <attachid>431673</attachid>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2021-06-17 13:30:03 -0700</bug_when>
    <thetext>Comment on attachment 431673
Patch

rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770815</commentid>
    <comment_count>6</comment_count>
      <attachid>431721</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-06-17 14:21:50 -0700</bug_when>
    <thetext>Created attachment 431721
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770840</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-06-17 15:03:10 -0700</bug_when>
    <thetext>Committed r279012 (238937@main): &lt;https://commits.webkit.org/238937@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 431721.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770896</commentid>
    <comment_count>8</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-06-17 17:00:25 -0700</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770897</commentid>
    <comment_count>9</comment_count>
      <attachid>431743</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-06-17 17:00:27 -0700</bug_when>
    <thetext>Created attachment 431743
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770902</commentid>
    <comment_count>10</comment_count>
      <attachid>431743</attachid>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2021-06-17 17:10:41 -0700</bug_when>
    <thetext>Comment on attachment 431743
Patch

rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1771286</commentid>
    <comment_count>11</comment_count>
      <attachid>431861</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-06-21 08:17:32 -0700</bug_when>
    <thetext>Created attachment 431861
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1771298</commentid>
    <comment_count>12</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-06-21 08:51:13 -0700</bug_when>
    <thetext>Committed r279067 (238987@main): &lt;https://commits.webkit.org/238987@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 431861.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431610</attachid>
            <date>2021-06-16 15:10:45 -0700</date>
            <delta_ts>2021-06-17 08:32:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227096-20210616151044.patch</filename>
            <type>text/plain</type>
            <size>31505</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI3ODk1NSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDIxIEBACisyMDIxLTA2LTE2ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBbcmVzdWx0c2RicHldIEFkb3B0IGF1dG9pbnN0YWxsZXIKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzA5NgorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNzk0MTgwODA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9jb250YWlu
ZXI6IE1vdmVkIGZyb20gaW5zZGllIGxpYnJhcnkuCisgICAgICAgICogU2NyaXB0cy9saWJyYXJp
ZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvX19pbml0X18ucHk6IFJlZ2lzdGVyIHJlcXVpcmVk
IGxpYnJhcmllcy4KKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1
bHRzZGJweS9jb250YWluZXI6IE1vdmVkIHRvIGNvbnRhaW5pbmcgZm9sZGVyLgorICAgICAgICAq
IFNjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2V4YW1wbGUvbWFpbi5w
eToKKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9y
dW46IE1vdmVkIHRvIGNvbnRhaW5pbmcgZm9sZGVyLgorICAgICAgICAqIFNjcmlwdHMvbGlicmFy
aWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcvdmlld19yb3V0ZXNfdW5pdHRlc3QucHk6
IFVzZSBzcGVjaWZpYyBpbXBvcnRzCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0
c2RicHkvcnVuOiBNb3ZlZCBmcm9tIGluc2RpZSBsaWJyYXJ5LgorICAgICAgICAqIFNjcmlwdHMv
bGlicmFyaWVzL3Jlc3VsdHNkYnB5L3J1bi10ZXN0czogVXNlIGF1dG9pbnN0YWxsZWQgbGlicmFy
aWVzLgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3NldHVwLnB5OiBC
dW1wIHZlcnNpb24uCisKIDIwMjEtMDYtMTYgIEpvbmF0aGFuIEJlZGFyZCAgPGpiZWRhcmRAYXBw
bGUuY29tPgogCiAgICAgICAgIFt3ZWJraXRzY21weV0gQ2FjaGUgbW9yZSBHaXQgY29tbWFuZHMK
SW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L2NvbnRhaW5lcgo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9jb250YWluZXIJ
KG5vbmV4aXN0ZW50KQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvY29u
dGFpbmVyCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODMgQEAKKyMhL3Vzci9iaW4vZW52IHB5
dGhvbjMKKworIyBDb3B5cmlnaHQgKEMpIDIwMjAsIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMg
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworaW1w
b3J0IGFyZ3BhcnNlCitpbXBvcnQgb3MKK2ltcG9ydCBzeXMKKworaW1wb3J0IHJlc3VsdHNkYnB5
Citmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgQXV0b0luc3RhbGwKKworbGlicmFyaWVzID0gb3Mu
cGF0aC5qb2luKG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5kaXJuYW1l
KG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykpKSksICdsaWJyYXJpZXMnKQoraWYgc3lzLnBsYXRm
b3JtID09ICdkYXJ3aW4nOgorICAgIGlzX3Jvb3QgPSBub3Qgb3MuZ2V0dWlkKCkKKyAgICBkb2Vz
X293bl9saWJyYXJpZXMgPSBvcy5zdGF0KGxpYnJhcmllcykuc3RfdWlkID09IG9zLmdldHVpZCgp
CisgICAgaWYgKGlzX3Jvb3Qgb3Igbm90IGRvZXNfb3duX2xpYnJhcmllcyk6CisgICAgICAgIGxp
YnJhcmllcyA9IG9zLnBhdGguZXhwYW5kdXNlcignfi9MaWJyYXJ5L3dlYmtpdHB5JykKK0F1dG9J
bnN0YWxsLnNldF9kaXJlY3Rvcnkob3MucGF0aC5qb2luKGxpYnJhcmllcywgJ2F1dG9pbnN0YWxs
ZWQnLCAncHl0aG9uLXt9Jy5mb3JtYXQoc3lzLnZlcnNpb25faW5mb1swXSkpKQorCitmcm9tIHJl
c3VsdHNkYnB5Lm1vZGVsLmRvY2tlciBpbXBvcnQgRG9ja2VyCisKKworZGVmIHN0YXJ0KCk6Cisg
ICAgRG9ja2VyLnN0YXJ0KCkKKyAgICBEb2NrZXIuc3RhcnRfcHJvamVjdChEb2NrZXIuREVGQVVM
VF9QUk9KRUNUKQorICAgIHJldHVybiAwCisKKworZGVmIHN0b3AoKToKKyAgICBpZiBub3QgRG9j
a2VyLmlzX3J1bm5pbmcoKToKKyAgICAgICAgcHJpbnQoJ0RvY2tlciBpcyBub3QgcnVubmluZycp
CisgICAgICAgIHJldHVybiAxCisgICAgRG9ja2VyLnN0b3BfcHJvamVjdChEb2NrZXIuREVGQVVM
VF9QUk9KRUNUKQorICAgIERvY2tlci5zdG9wKCkKKyAgICByZXR1cm4gMAorCisKK2RlZiByZXN0
YXJ0KCk6CisgICAgaWYgbm90IERvY2tlci5pc19ydW5uaW5nKCk6CisgICAgICAgIERvY2tlci5z
dGFydCgpCisgICAgRG9ja2VyLnN0b3BfcHJvamVjdChEb2NrZXIuREVGQVVMVF9QUk9KRUNUKQor
ICAgIERvY2tlci5zdGFydF9wcm9qZWN0KERvY2tlci5ERUZBVUxUX1BST0pFQ1QpCisgICAgcmV0
dXJuIDAKKworCitkZWYgbWFpbigpOgorICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFy
c2VyKGRlc2NyaXB0aW9uPSdNYW5hZ2UgcmVzdWx0c2RicHkgY29udGFpbmVyIGluc3RhbmNlIGlu
c2lkZSBEb2NrZXInKQorICAgIHN1YnBhcnNlcnMgPSBwYXJzZXIuYWRkX3N1YnBhcnNlcnMoaGVs
cD0nc3ViLWNvbW1hbmQgaGVscCcpCisKKyAgICBzdGFydF9wYXJzZXIgPSBzdWJwYXJzZXJzLmFk
ZF9wYXJzZXIoJ3N0YXJ0JywgaGVscD0nU3RhcnQgdGhlIGNvbnRhaW5lciBpbnNpZGUgRG9ja2Vy
JykKKyAgICBzdGFydF9wYXJzZXIuc2V0X2RlZmF1bHRzKGZ1bmN0aW9uPXN0YXJ0KQorCisgICAg
c3RhcnRfcGFyc2VyID0gc3VicGFyc2Vycy5hZGRfcGFyc2VyKCdzdG9wJywgaGVscD0nU3RvcCB0
aGUgY29udGFpbmVyIGluc2lkZSBEb2NrZXInKQorICAgIHN0YXJ0X3BhcnNlci5zZXRfZGVmYXVs
dHMoZnVuY3Rpb249c3RvcCkKKworICAgIHN0YXJ0X3BhcnNlciA9IHN1YnBhcnNlcnMuYWRkX3Bh
cnNlcigncmVzdGFydCcsIGhlbHA9J1Jlc3RhcnQgdGhlIGNvbnRhaW5lciBpbnNpZGUgRG9ja2Vy
JykKKyAgICBzdGFydF9wYXJzZXIuc2V0X2RlZmF1bHRzKGZ1bmN0aW9uPXJlc3RhcnQpCisKKyAg
ICByZXR1cm4gZ2V0YXR0cihwYXJzZXIucGFyc2VfYXJncygpLCAnZnVuY3Rpb24nLCBsYW1iZGE6
IHBhcnNlci5wcmludF9oZWxwKCkpKCkKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgor
ICAgIHN5cy5leGl0KG1haW4oKSkKClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL1NjcmlwdHMv
bGlicmFyaWVzL3Jlc3VsdHNkYnB5L2NvbnRhaW5lcgpfX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZXhl
Y3V0YWJsZQojIyAtMCwwICsxICMjCisqClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkK
SW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3J1bgo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9ydW4JKG5vbmV4aXN0ZW50
KQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcnVuCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMTgyIEBACisjIS91c3IvYmluL2VudiBweXRob24zCisKKyMgQ29weXJp
Z2h0IChDKSAyMDIwLCAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
IworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgIkFTIElTIiBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCBhcmdwYXJzZQoraW1w
b3J0IG9zCitpbXBvcnQgc3VicHJvY2VzcworaW1wb3J0IHN5cworaW1wb3J0IHRpbWUKK2ltcG9y
dCB0aHJlYWRpbmcKKworaW1wb3J0IHJlc3VsdHNkYnB5Citmcm9tIHdlYmtpdGNvcmVweSBpbXBv
cnQgQXV0b0luc3RhbGwKKworbGlicmFyaWVzID0gb3MucGF0aC5qb2luKG9zLnBhdGguYWJzcGF0
aChvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5kaXJuYW1lKG9zLnBhdGguZGlybmFtZShfX2ZpbGVf
XykpKSksICdsaWJyYXJpZXMnKQoraWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nOgorICAgIGlz
X3Jvb3QgPSBub3Qgb3MuZ2V0dWlkKCkKKyAgICBkb2VzX293bl9saWJyYXJpZXMgPSBvcy5zdGF0
KGxpYnJhcmllcykuc3RfdWlkID09IG9zLmdldHVpZCgpCisgICAgaWYgKGlzX3Jvb3Qgb3Igbm90
IGRvZXNfb3duX2xpYnJhcmllcyk6CisgICAgICAgIGxpYnJhcmllcyA9IG9zLnBhdGguZXhwYW5k
dXNlcignfi9MaWJyYXJ5L3dlYmtpdHB5JykKK0F1dG9JbnN0YWxsLnNldF9kaXJlY3Rvcnkob3Mu
cGF0aC5qb2luKGxpYnJhcmllcywgJ2F1dG9pbnN0YWxsZWQnLCAncHl0aG9uLXt9Jy5mb3JtYXQo
c3lzLnZlcnNpb25faW5mb1swXSkpKQorCitmcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLmRvY2tlciBp
bXBvcnQgRG9ja2VyCitmcm9tIG11bHRpcHJvY2Vzc2luZyBpbXBvcnQgUHJvY2VzcworZnJvbSBy
ZWRpcyBpbXBvcnQgU3RyaWN0UmVkaXMKKworCitjbGFzcyBEb2NrZXJJZk5lZWRlZENvbnRleHQo
b2JqZWN0KToKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhcmdzKToKKyAgICAgICAgc2VsZi5k
b2NrZXIgPSBEb2NrZXIuaW5zdGFuY2UoKSBpZiAnbG9jYWxob3N0JyBpbiBbYXJncy5jYXNzYW5k
cmFfc2VydmVyLCBhcmdzLnJlZGlzX3NlcnZlcl0gZWxzZSBOb25lCisKKyAgICBkZWYgX19lbnRl
cl9fKHNlbGYpOgorICAgICAgICBpZiBzZWxmLmRvY2tlcjoKKyAgICAgICAgICAgIHNlbGYuZG9j
a2VyLl9fZW50ZXJfXygpCisKKyAgICBkZWYgX19leGl0X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdz
KToKKyAgICAgICAgaWYgc2VsZi5kb2NrZXI6CisgICAgICAgICAgICBzZWxmLmRvY2tlci5fX2V4
aXRfXygqYXJncywgKiprd2FyZ3MpCisKKworZGVmIGhhc19ndW5pY29ybigpOgorICAgIHJldHVy
biBub3Qgc3VicHJvY2Vzcy5ydW4oWydweXRob24zJywgJy91c3IvbG9jYWwvYmluL2d1bmljb3Ju
cycsICctLXZlcnNpb24nXSwgY2FwdHVyZV9vdXRwdXQ9VHJ1ZSkucmV0dXJuY29kZQorCisKK2Rl
ZiBwYXJzZV9hcmd1bWVudHMoKToKKyAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNl
cihkZXNjcmlwdGlvbj0nUnVuIGEgc2ltcGxlIGluc3RhbmNlIG9mIHRoZSByZXN1bHRzIGRhdGFi
YXNlIGZvciBsb2NhbCBkZXZlbG9wbWVudCcpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKKyAg
ICAgICAgJy0tbG9jYWwtY2Fzc2FuZHJhJywgaGVscD0nVXNlIGEgbG9jYWwgQ2Fzc2FuZHJhIGlu
c3RhbmNlJywKKyAgICAgICAgZGVzdD0nY2Fzc2FuZHJhX3NlcnZlcicsIGFjdGlvbj0nc3RvcmVf
Y29uc3QnLCBjb25zdD0nbG9jYWxob3N0JywKKyAgICApCisgICAgcGFyc2VyLmFkZF9hcmd1bWVu
dCgKKyAgICAgICAgJy0tbW9jay1jYXNzYW5kcmEnLCBoZWxwPSdVc2UgYSBtb2NrIENhc3NhbmRy
YSBpbnN0YW5jZScsCisgICAgICAgIGRlc3Q9J2Nhc3NhbmRyYV9zZXJ2ZXInLCBhY3Rpb249J3N0
b3JlX2NvbnN0JywgY29uc3Q9J21vY2snLAorICAgICkKKyAgICBwYXJzZXIuc2V0X2RlZmF1bHRz
KGNhc3NhbmRyYV9zZXJ2ZXI9J2xvY2FsaG9zdCcgaWYgRG9ja2VyLmluc3RhbGxlZCgpIGVsc2Ug
J21vY2snKQorCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKKyAgICAgICAgJy0tbG9jYWwtcmVk
aXMnLCBoZWxwPSdVc2UgYSBsb2NhbCBSZWRpcyBpbnN0YW5jZScsCisgICAgICAgIGRlc3Q9J3Jl
ZGlzX3NlcnZlcicsIGFjdGlvbj0nc3RvcmVfY29uc3QnLCBjb25zdD0nbG9jYWxob3N0JywKKyAg
ICApCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKKyAgICAgICAgJy0tbW9jay1yZWRpcycsIGhl
bHA9J1VzZSBhIG1vY2sgUmVkaXMgaW5zdGFuY2UnLAorICAgICAgICBkZXN0PSdyZWRpc19zZXJ2
ZXInLCBhY3Rpb249J3N0b3JlX2NvbnN0JywgY29uc3Q9J21vY2snLAorICAgICkKKyAgICBwYXJz
ZXIuc2V0X2RlZmF1bHRzKHJlZGlzX3NlcnZlcj0nbG9jYWxob3N0JyBpZiBEb2NrZXIuaW5zdGFs
bGVkKCkgZWxzZSAnbW9jaycpCisKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICAgICAn
LS1kcm9wLWtleXNwYWNlJywgaGVscD0nRHJvcCB0aGUgZXhpc3Rpbmcga2V5c3BhY2UgYmVmb3Jl
IHJ1bm5pbmcgdGhlIHByb2dyYW0nLAorICAgICAgICBkZXN0PSdkcm9wX2tleXNwYWNlJywgYWN0
aW9uPSdzdG9yZV90cnVlJywKKyAgICApCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKKyAgICAg
ICAgJy0tbm8tZHJvcC1rZXlzcGFjZScsIGhlbHA9J0RvIE5PVCBkcm9wIHRoZSBleGlzdGluZyBr
ZXlzcGFjZSBiZWZvcmUgcnVubmluZyB0aGUgcHJvZ3JhbScsCisgICAgICAgIGRlc3Q9J2Ryb3Bf
a2V5c3BhY2UnLCBhY3Rpb249J3N0b3JlX2ZhbHNlJywKKyAgICApCisgICAgcGFyc2VyLnNldF9k
ZWZhdWx0cyhkcm9wX2tleXNwYWNlPUZhbHNlKQorCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgK
KyAgICAgICAgJy0tY2xlYXItcmVkaXMnLCBoZWxwPSdDbGVhciByZWRpcyBiZWZvcmUgcnVubmlu
ZyB0aGUgYXBwbGljYXRpb24nLAorICAgICAgICBkZXN0PSdjbGVhcl9yZWRpcycsIGFjdGlvbj0n
c3RvcmVfdHJ1ZScsCisgICAgKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCisgICAgICAgICct
LW5vLWNsZWFyLXJlZGlzJywKKyAgICAgICAgaGVscD0nRG8gbm90IGNsZWFyIHJlZGlzIGJlZm9y
ZSBydW5uaW5nIHRoZSBhcHBsaWNhdGlvbicsCisgICAgICAgIGRlc3Q9J2NsZWFyX3JlZGlzJywg
YWN0aW9uPSdzdG9yZV9mYWxzZScsCisgICAgKQorICAgIHBhcnNlci5zZXRfZGVmYXVsdHMoY2xl
YXJfcmVkaXM9VHJ1ZSkKKworICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCisgICAgICAgICctLWd1
bmljb3JuJywgaGVscD0nVXNlIHRoZSBndW5pY29ybiB3ZWJzZXJ2ZXInLAorICAgICAgICBkZXN0
PSdndW5pY29ybicsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgKQorICAgIHBhcnNlci5hZGRf
YXJndW1lbnQoCisgICAgICAgICctLW5vLWd1bmljb3JuJywKKyAgICAgICAgaGVscD0nRG8gbm90
IHVzZSB0aGUgZ3VuaWNvcm4gd2Vic2VydmVyJywKKyAgICAgICAgZGVzdD0nZ3VuaWNvcm4nLCBh
Y3Rpb249J3N0b3JlX2ZhbHNlJywKKyAgICApCisgICAgcGFyc2VyLnNldF9kZWZhdWx0cyhndW5p
Y29ybj1oYXNfZ3VuaWNvcm4oKSkKKworICAgIHJldHVybiBwYXJzZXIucGFyc2VfYXJncygpCisK
KworZGVmIGRvX3dvcmsoKToKKyAgICBmcm9tIHJlc3VsdHNkYnB5LmV4YW1wbGUud29ya2VyIGlt
cG9ydCBtYWluCisgICAgbWFpbigpCisKKworZGVmIHdlYl9hcHAoKToKKyAgICBmcm9tIHJlc3Vs
dHNkYnB5LmV4YW1wbGUubWFpbiBpbXBvcnQgbWFpbgorICAgIHJldHVybiBtYWluKCkKKworCitk
ZWYgZ3VuaWNvcm4oKToKKyAgICBpZiBub3QgaGFzX2d1bmljb3JuKCk6CisgICAgICAgIHByaW50
KCdndW5pY29ybiBpcyBub3QgaW5zdGFsbGVkLCBwbGVhc2UgcnVuIGBwaXAzIGluc3RhbGwgZ3Vu
aWNvcm5gJykKKyAgICAgICAgcmV0dXJuIDEKKworICAgICMgU2xpZ2h0IGRlbGF5IHNvIHRoYXQg
dGhlIHdvcmtlciBpcyBzdGFydGVkIGJlZm9yZSB0aGUgd2Vic2VydmVyCisgICAgdGltZS5zbGVl
cCgyKQorICAgIHJldHVybiBzdWJwcm9jZXNzLnJ1bihbCisgICAgICAgICdweXRob24zJywgJy91
c3IvbG9jYWwvYmluL2d1bmljb3JuJywKKyAgICAgICAgJ2V4YW1wbGUubWFpbjphcHAnLAorICAg
ICAgICAnLS1sb2ctZmlsZT0tJywgJy0tcmVsb2FkJywKKyAgICBdKS5yZXR1cm5jb2RlCisKKwor
ZGVmIG1haW4oKToKKyAgICBhcmdzID0gcGFyc2VfYXJndW1lbnRzKCkKKyAgICB3aXRoIERvY2tl
cklmTmVlZGVkQ29udGV4dChhcmdzKToKKyAgICAgICAgb3MuZW52aXJvblsnQ0FTU0FORFJBX1NF
UlZFUiddID0gYXJncy5jYXNzYW5kcmFfc2VydmVyCisgICAgICAgIG9zLmVudmlyb25bJ1JFRElT
X0hPU1QnXSA9IGFyZ3MucmVkaXNfc2VydmVyCisgICAgICAgIG9zLmVudmlyb25bJ0RST1BfS0VZ
U1BBQ0UnXSA9ICcxJyBpZiBhcmdzLmRyb3Bfa2V5c3BhY2UgZWxzZSAnMCcKKyAgICAgICAgb3Mu
ZW52aXJvblsnQ1JFQVRFX0tFWVNQQUNFJ10gPSAnMScgICMgVW5jb25kaXRpb25hbGx5IGNyZWF0
ZSBrZXlzcGFjZSBmb3IgdGVzdGluZworCisgICAgICAgIGlmIGFyZ3MuY2xlYXJfcmVkaXMgYW5k
IGFyZ3MucmVkaXNfc2VydmVyICE9ICdtb2NrJzoKKyAgICAgICAgICAgIFN0cmljdFJlZGlzKGhv
c3Q9YXJncy5yZWRpc19zZXJ2ZXIpLmZsdXNoZGIoKQorCisgICAgICAgIGlmIGFyZ3MuZ3VuaWNv
cm46CisgICAgICAgICAgICBpZiAnbW9jaycgaW4gW2FyZ3MucmVkaXNfc2VydmVyLCBhcmdzLmNh
c3NhbmRyYV9zZXJ2ZXJdOgorICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignQ2Fu
bm90IHJ1biB3aXRoIGd1bmljb3JuIGFuZCBtb2NrIGRhdGFiYXNlcywgYXN5bmNocm9ub3VzIHdv
cmtlcnMgcmVseSBvbiB0aGUgcmVhbCBkYXRhYmFzZXMnKQorCisgICAgICAgIGZyb20gcmVzdWx0
c2RicHkuZXhhbXBsZS5lbnZpcm9ubWVudCBpbXBvcnQgbWFpbiBhcyBlbnZpcm9ubWVudF9tYWlu
CisgICAgICAgIGVudmlyb25tZW50X21haW4oKQorCisgICAgICAgIGlmIG5vdCBhcmdzLmd1bmlj
b3JuOgorICAgICAgICAgICAgd29ya2VyID0gdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9ZG9fd29y
aykKKyAgICAgICAgICAgIHdvcmtlci5kYWVtb24gPSBUcnVlCisgICAgICAgICAgICB3b3JrZXIu
c3RhcnQoKQorCisgICAgICAgICAgICByZXR1cm4gd2ViX2FwcCgpCisKKyAgICAgICAgd29ya2Vy
ID0gUHJvY2Vzcyh0YXJnZXQ9ZG9fd29yaykKKyAgICAgICAgd29ya2VyLnN0YXJ0KCkKKworICAg
ICAgICB0cnk6CisgICAgICAgICAgICByZXR1cm4gZ3VuaWNvcm4oKQorICAgICAgICBmaW5hbGx5
OgorICAgICAgICAgICAgd29ya2VyLnRlcm1pbmF0ZSgpCisgICAgICAgICAgICB3b3JrZXIuam9p
bigpCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgc3lzLmV4aXQobWFpbigpKQoK
UHJvcGVydHkgY2hhbmdlcyBvbjogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkv
cnVuCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX18KQWRkZWQ6IHN2bjpleGVjdXRhYmxlCiMjIC0wLDAgKzEgIyMKKyoKXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJp
ZXMvcmVzdWx0c2RicHkvcnVuLXRlc3RzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGli
cmFyaWVzL3Jlc3VsdHNkYnB5L3J1bi10ZXN0cwkobm9uZXhpc3RlbnQpCisrKyBUb29scy9TY3Jp
cHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9ydW4tdGVzdHMJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw4OSBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworCisjIENvcHlyaWdodCAoQykgMjAx
OS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisj
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCBzeXMKK3N5cy5kb250X3dyaXRlX2J5dGVj
b2RlID0gVHJ1ZQorCitpbXBvcnQgYXJncGFyc2UKK2ltcG9ydCBvcworaW1wb3J0IHN5cworaW1w
b3J0IHVuaXR0ZXN0CisKK2ltcG9ydCByZXN1bHRzZGJweQorZnJvbSB3ZWJraXRjb3JlcHkgaW1w
b3J0IEF1dG9JbnN0YWxsCisKK2xpYnJhcmllcyA9IG9zLnBhdGguam9pbihvcy5wYXRoLmFic3Bh
dGgob3MucGF0aC5kaXJuYW1lKG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmRpcm5hbWUoX19maWxl
X18pKSkpLCAnbGlicmFyaWVzJykKK2lmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoKKyAgICBp
c19yb290ID0gbm90IG9zLmdldHVpZCgpCisgICAgZG9lc19vd25fbGlicmFyaWVzID0gb3Muc3Rh
dChsaWJyYXJpZXMpLnN0X3VpZCA9PSBvcy5nZXR1aWQoKQorICAgIGlmIChpc19yb290IG9yIG5v
dCBkb2VzX293bl9saWJyYXJpZXMpOgorICAgICAgICBsaWJyYXJpZXMgPSBvcy5wYXRoLmV4cGFu
ZHVzZXIoJ34vTGlicmFyeS93ZWJraXRweScpCitBdXRvSW5zdGFsbC5zZXRfZGlyZWN0b3J5KG9z
LnBhdGguam9pbihsaWJyYXJpZXMsICdhdXRvaW5zdGFsbGVkJywgJ3B5dGhvbi17fScuZm9ybWF0
KHN5cy52ZXJzaW9uX2luZm9bMF0pKSkKKworZnJvbSBjYXNzYW5kcmEuY3FsZW5naW5lLm1hbmFn
ZW1lbnQgaW1wb3J0IENRTEVOR19BTExPV19TQ0hFTUFfTUFOQUdFTUVOVAorCisKK2RlZiBtYWlu
KCk6CisgICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoZGVzY3JpcHRpb249J1J1
biB1bml0IHRlc3RzIGZvciByZXN1bHRzZGJweScpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgn
LXYnLCAnLS12ZXJib3NlJywKKyAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PUZhbHNlLCBh
Y3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J1ZlcmJvc2Ug
b3V0cHV0JykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLXN0b3Atb24tZmFpbCcsCisgICAg
ICAgICAgICAgICAgICAgICAgZGVmYXVsdD1GYWxzZSwgYWN0aW9uPSdzdG9yZV90cnVlJywKKyAg
ICAgICAgICAgICAgICAgICAgICBoZWxwPSdTdG9wIG9uIGZpcnN0IGZhaWwgb3IgZXJyb3InKQor
ICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJ21vZHVsZXNfdG9fdGVzdCcsIG5hcmdzPScqJywKKyAg
ICAgICAgICAgICAgICAgICAgICBoZWxwPSdNb2R1bGVzIHRvIGJlIHRlc3RlZC4gQnkgZGVmYXVs
dCwgdGhpcyBpcyB0aGUgZGF0YWJhc2UsIGZsYXNrX3N1cHBvcnQsIG1vZGVsIGFuZCB2aWV3IG1v
ZHVsZXMnLAorICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9Wydjb250cm9sbGVyJywgJ2Zs
YXNrX3N1cHBvcnQnLCAnbW9kZWwnLCAndmlldyddKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQo
Jy1mJywgJy0tZmFzdC10ZXN0cycsCisgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1GYWxz
ZSwgYWN0aW9uPSdzdG9yZV90cnVlJywKKyAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdTb21l
IHRlc3RzIHJlcXVpcmUgYSBkb2NrZXIgaW5zdGFuY2UgYW5kIGFyZSBzbG93LCBvcHRpb25hbGx5
IHNraXAgdGhlc2UnKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tbm8td2ViLXNlcnZlcics
CisgICAgICAgICAgICAgICAgICAgICAgICBkZXN0PSd3ZWJfc2VydmVyJywgZGVmYXVsdD1UcnVl
LCBhY3Rpb249J3N0b3JlX2ZhbHNlJywKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J1Nv
bWUgdGVzdHMgdXNlIGEgRmxhc2sgd2Vic2VydmVyLCBvcHRpb25hbGx5IHNraXAgdGhlc2UnKQor
ICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tbm8tc2VsZW5pdW0nLAorICAgICAgICAgICAgICAg
ICAgICAgICAgZGVzdD0nc2VsZW5pdW0nLCBkZWZhdWx0PVRydWUsIGFjdGlvbj0nc3RvcmVfZmFs
c2UnLAorICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nU29tZSB0ZXN0cyB1c2UgU2VsZW5p
dW0gdG8gdGVzdCB0aGUgVUkgb2YgdGhlIHNpdGUsIG9wdGlvbmFsbHkgc2tpcCB0aGVzZScpCisg
ICAgb3B0aW9ucyA9IHBhcnNlci5wYXJzZV9hcmdzKCkKKworICAgIG9zLmVudmlyb25bJ3Nsb3df
dGVzdHMnXSA9ICcwJyBpZiBvcHRpb25zLmZhc3RfdGVzdHMgZWxzZSAnMScKKyAgICBvcy5lbnZp
cm9uWyd3ZWJfc2VydmVyJ10gPSAnMScgaWYgb3B0aW9ucy53ZWJfc2VydmVyIGVsc2UgJzAnCisg
ICAgb3MuZW52aXJvblsnc2VsZW5pdW0nXSA9ICcxJyBpZiBvcHRpb25zLnNlbGVuaXVtIGVsc2Ug
JzAnCisgICAgb3MuZW52aXJvbltDUUxFTkdfQUxMT1dfU0NIRU1BX01BTkFHRU1FTlRdID0gJzEn
CisKKyAgICByb290ID0gb3MucGF0aC5kaXJuYW1lKG9zLnBhdGguYWJzcGF0aChfX2ZpbGVfXykp
CisKKyAgICBzdWl0ZSA9IHVuaXR0ZXN0LlRlc3RTdWl0ZSgpCisgICAgZm9yIG1vZHVsZV9uYW1l
IGluIG9wdGlvbnMubW9kdWxlc190b190ZXN0OgorICAgICAgICBtb2R1bGVfc3VpdGUgPSB1bml0
dGVzdC5kZWZhdWx0VGVzdExvYWRlci5kaXNjb3Zlcihvcy5wYXRoLmpvaW4ocm9vdCwgJ3Jlc3Vs
dHNkYnB5JywgbW9kdWxlX25hbWUucmVwbGFjZSgnLicsICcvJykpLCBwYXR0ZXJuPScqdW5pdHRl
c3QucHknLCB0b3BfbGV2ZWxfZGlyPW9zLnBhdGguam9pbihyb290KSkKKyAgICAgICAgZm9yIHRz
dCBpbiBtb2R1bGVfc3VpdGUgaWYgbW9kdWxlX3N1aXRlIGVsc2UgW106CisgICAgICAgICAgICBz
dWl0ZS5hZGRUZXN0KHRzdCkKKworICAgIGlmIHN1aXRlLmNvdW50VGVzdENhc2VzKCkgPT0gMDoK
KyAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdObyB0ZXN0cyBtYXRjaGluZy4uLicpCisKKyAg
ICByZXN1bHQgPSB1bml0dGVzdC5UZXh0VGVzdFJ1bm5lcih2ZXJib3NpdHk9MiBpZiBvcHRpb25z
LnZlcmJvc2UgZWxzZSAxLCBmYWlsZmFzdD1vcHRpb25zLnN0b3Bfb25fZmFpbCwgYnVmZmVyPW5v
dCBvcHRpb25zLnZlcmJvc2UpLnJ1bihzdWl0ZSkKKyAgICByZXR1cm4gbGVuKHJlc3VsdC5lcnJv
cnMpCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgc3lzLmV4aXQobWFpbigpKQoK
UHJvcGVydHkgY2hhbmdlcyBvbjogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkv
cnVuLXRlc3RzCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjpleGVjdXRhYmxlCiMjIC0wLDAgKzEgIyMK
KyoKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogVG9vbHMvU2NyaXB0cy9s
aWJyYXJpZXMvcmVzdWx0c2RicHkvc2V0dXAucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0
cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvc2V0dXAucHkJKHJldmlzaW9uIDI3ODk0MykKKysrIFRv
b2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3NldHVwLnB5CSh3b3JraW5nIGNvcHkp
CkBAIC0xLDQgKzEsNCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxOS0yMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzAs
NyArMzAsNyBAQCBkZWYgcmVhZG1lKCk6CiAKIHNldHVwKAogICAgIG5hbWU9J3Jlc3VsdHNkYnB5
JywKLSAgICB2ZXJzaW9uPScyLjAuNScsCisgICAgdmVyc2lvbj0nMy4wLjAnLAogICAgIGRlc2Ny
aXB0aW9uPSdMaWJyYXJ5IGZvciB2aXN1YWxpemluZywgcHJvY2Vzc2luZyBhbmQgc3RvcmluZyB0
ZXN0IHJlc3VsdHMuJywKICAgICBsb25nX2Rlc2NyaXB0aW9uPXJlYWRtZSgpLAogICAgIGNsYXNz
aWZpZXJzPVsKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3Vs
dHNkYnB5L19faW5pdF9fLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVz
L3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L19faW5pdF9fLnB5CShyZXZpc2lvbiAyNzg5NDMpCisr
KyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9fX2luaXRf
Xy5weQkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDE5LTIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0zNiw3ICszNiw3IEBAIGRlZiBfbWF5YmVfYWRkX3dlYmtpdF9weXRob25fbGli
cmFyeV9wYXQKIF9tYXliZV9hZGRfd2Via2l0X3B5dGhvbl9saWJyYXJ5X3BhdGhzKCkKIAogdHJ5
OgotICAgIGZyb20gd2Via2l0Y29yZXB5LnZlcnNpb24gaW1wb3J0IFZlcnNpb24KKyAgICBmcm9t
IHdlYmtpdGNvcmVweSBpbXBvcnQgQXV0b0luc3RhbGwsIFBhY2thZ2UsIFZlcnNpb24KIGV4Y2Vw
dCBJbXBvcnRFcnJvcjoKICAgICByYWlzZSBJbXBvcnRFcnJvcigKICAgICAgICAgIid3ZWJraXRj
b3JlcHknIGNvdWxkIG5vdCBiZSBmb3VuZCBvbiB5b3VyIFB5dGhvbiBwYXRoLlxuIiArCkBAIC00
NCw2ICs0NCwyNyBAQCBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgICAgICJQbGVhc2UgaW5zdGFs
bCB3ZWJraXRjb3JlcHkgd2l0aCBgcGlwIGluc3RhbGwgd2Via2l0Y29yZXB5IC0tZXh0cmEtaW5k
ZXgtdXJsIDxwYWNrYWdlIGluZGV4IFVSTD5gIgogICAgICkKIAotdmVyc2lvbiA9IFZlcnNpb24o
MiwgMCwgNSkKK3ZlcnNpb24gPSBWZXJzaW9uKDMsIDAsIDApCisKK0F1dG9JbnN0YWxsLnJlZ2lz
dGVyKFBhY2thZ2UoJ2FlbnVtJywgVmVyc2lvbigyLCAyLCA2KSkpCitBdXRvSW5zdGFsbC5yZWdp
c3RlcihQYWNrYWdlKCdhdHRycycsIFZlcnNpb24oMjEsIDIsIDApKSkKK0F1dG9JbnN0YWxsLnJl
Z2lzdGVyKFBhY2thZ2UoJ2Fpb3JlZGlzJywgVmVyc2lvbigxLCAzLCAxKSkpCitBdXRvSW5zdGFs
bC5yZWdpc3RlcihQYWNrYWdlKCdhc3luYy10aW1lb3V0JywgVmVyc2lvbigzLCAwLCAxKSkpCitB
dXRvSW5zdGFsbC5yZWdpc3RlcihQYWNrYWdlKCdjYXNzYW5kcmEnLCBWZXJzaW9uKDMsIDI1LCAw
KSwgcHlwaV9uYW1lPSdjYXNzYW5kcmEtZHJpdmVyJywgd2hlZWw9VHJ1ZSkpCitBdXRvSW5zdGFs
bC5yZWdpc3RlcihQYWNrYWdlKCdjbGljaycsIFZlcnNpb24oNywgMSwgMikpKQorQXV0b0luc3Rh
bGwucmVnaXN0ZXIoUGFja2FnZSgnZmFrZXJlZGlzJywgVmVyc2lvbigxLCA1LCAyKSkpCitBdXRv
SW5zdGFsbC5yZWdpc3RlcihQYWNrYWdlKCdnZW9tZXQnLCBWZXJzaW9uKDAsIDIsIDEpKSkKK0F1
dG9JbnN0YWxsLnJlZ2lzdGVyKFBhY2thZ2UoJ2dyZW1saW5weXRob24nLCBWZXJzaW9uKDMsIDQs
IDYpKSkKK0F1dG9JbnN0YWxsLnJlZ2lzdGVyKFBhY2thZ2UoJ2hpcmVkaXMnLCBWZXJzaW9uKDEs
IDEsIDApKSkKK0F1dG9JbnN0YWxsLnJlZ2lzdGVyKFBhY2thZ2UoJ2lzb2RhdGUnLCBWZXJzaW9u
KDAsIDYsIDApKSkKK0F1dG9JbnN0YWxsLnJlZ2lzdGVyKFBhY2thZ2UoJ2x1cGEnLCBWZXJzaW9u
KDEsIDkpKSkKK0F1dG9JbnN0YWxsLnJlZ2lzdGVyKFBhY2thZ2UoJ3B5YXNuMV9tb2R1bGVzJywg
VmVyc2lvbigwLCAyLCA4KSwgcHlwaV9uYW1lPSdweWFzbjEtbW9kdWxlcycpKQorQXV0b0luc3Rh
bGwucmVnaXN0ZXIoUGFja2FnZSgncHljcnlwdG9kb21lJywgVmVyc2lvbigzLCAxMCwgMSkpKQor
QXV0b0luc3RhbGwucmVnaXN0ZXIoUGFja2FnZSgncmVkaXMnLCBWZXJzaW9uKDMsIDUsIDMpKSkK
K0F1dG9JbnN0YWxsLnJlZ2lzdGVyKFBhY2thZ2UoJ3NlbGVuaXVtJywgVmVyc2lvbigzLCAxNDEs
IDApKSkKK0F1dG9JbnN0YWxsLnJlZ2lzdGVyKFBhY2thZ2UoJ3NlcnZpY2VfaWRlbnRpdHknLCBW
ZXJzaW9uKDIxLCAxLCAwKSwgcHlwaV9uYW1lPSdzZXJ2aWNlLWlkZW50aXR5JykpCitBdXRvSW5z
dGFsbC5yZWdpc3RlcihQYWNrYWdlKCdzb3J0ZWRjb250YWluZXJzJywgVmVyc2lvbigyLCA0LCAw
KSkpCitBdXRvSW5zdGFsbC5yZWdpc3RlcihQYWNrYWdlKCd0b3JuYWRvJywgVmVyc2lvbig0LCA1
LCAzKSkpCitBdXRvSW5zdGFsbC5yZWdpc3RlcihQYWNrYWdlKCd0d2lzdGVkJywgVmVyc2lvbigy
MSwgMiwgMCksIHB5cGlfbmFtZT0nVHdpc3RlZCcpKQogCiBuYW1lID0gJ3Jlc3VsdHNkYnB5JwpJ
bmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29u
dGFpbmVyCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5
L3Jlc3VsdHNkYnB5L2NvbnRhaW5lcgkocmV2aXNpb24gMjc4OTQzKQorKysgVG9vbHMvU2NyaXB0
cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29udGFpbmVyCShub25leGlzdGVu
dCkKQEAgLTEsNzMgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMwotCi0jIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
ICJBUyBJUyIgQU5ECi0jIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0jIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSMg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IKLSMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotIyBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgot
IyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUgotIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotIyBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi1pbXBvcnQgYXJncGFyc2UKLWltcG9ydCBvcwot
aW1wb3J0IHN5cwotc3lzLmRvbnRfd3JpdGVfYnl0ZWNvZGUgPSBUcnVlCi0KLWZyb20gbW9kZWwu
ZG9ja2VyIGltcG9ydCBEb2NrZXIKLQotCi1kZWYgc3RhcnQoKToKLSAgICBEb2NrZXIuc3RhcnQo
KQotICAgIERvY2tlci5zdGFydF9wcm9qZWN0KERvY2tlci5ERUZBVUxUX1BST0pFQ1QpCi0gICAg
cmV0dXJuIDAKLQotCi1kZWYgc3RvcCgpOgotICAgIGlmIG5vdCBEb2NrZXIuaXNfcnVubmluZygp
OgotICAgICAgICBwcmludCgnRG9ja2VyIGlzIG5vdCBydW5uaW5nJykKLSAgICAgICAgcmV0dXJu
IDEKLSAgICBEb2NrZXIuc3RvcF9wcm9qZWN0KERvY2tlci5ERUZBVUxUX1BST0pFQ1QpCi0gICAg
RG9ja2VyLnN0b3AoKQotICAgIHJldHVybiAwCi0KLQotZGVmIHJlc3RhcnQoKToKLSAgICBpZiBu
b3QgRG9ja2VyLmlzX3J1bm5pbmcoKToKLSAgICAgICAgRG9ja2VyLnN0YXJ0KCkKLSAgICBEb2Nr
ZXIuc3RvcF9wcm9qZWN0KERvY2tlci5ERUZBVUxUX1BST0pFQ1QpCi0gICAgRG9ja2VyLnN0YXJ0
X3Byb2plY3QoRG9ja2VyLkRFRkFVTFRfUFJPSkVDVCkKLSAgICByZXR1cm4gMAotCi0KLWRlZiBt
YWluKCk6Ci0gICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoZGVzY3JpcHRpb249
J01hbmFnZSByZXN1bHRzZGJweSBjb250YWluZXIgaW5zdGFuY2UgaW5zaWRlIERvY2tlcicpCi0g
ICAgc3VicGFyc2VycyA9IHBhcnNlci5hZGRfc3VicGFyc2VycyhoZWxwPSdzdWItY29tbWFuZCBo
ZWxwJykKLQotICAgIHN0YXJ0X3BhcnNlciA9IHN1YnBhcnNlcnMuYWRkX3BhcnNlcignc3RhcnQn
LCBoZWxwPSdTdGFydCB0aGUgY29udGFpbmVyIGluc2lkZSBEb2NrZXInKQotICAgIHN0YXJ0X3Bh
cnNlci5zZXRfZGVmYXVsdHMoZnVuY3Rpb249c3RhcnQpCi0KLSAgICBzdGFydF9wYXJzZXIgPSBz
dWJwYXJzZXJzLmFkZF9wYXJzZXIoJ3N0b3AnLCBoZWxwPSdTdG9wIHRoZSBjb250YWluZXIgaW5z
aWRlIERvY2tlcicpCi0gICAgc3RhcnRfcGFyc2VyLnNldF9kZWZhdWx0cyhmdW5jdGlvbj1zdG9w
KQotCi0gICAgc3RhcnRfcGFyc2VyID0gc3VicGFyc2Vycy5hZGRfcGFyc2VyKCdyZXN0YXJ0Jywg
aGVscD0nUmVzdGFydCB0aGUgY29udGFpbmVyIGluc2lkZSBEb2NrZXInKQotICAgIHN0YXJ0X3Bh
cnNlci5zZXRfZGVmYXVsdHMoZnVuY3Rpb249cmVzdGFydCkKLQotICAgIHJldHVybiBnZXRhdHRy
KHBhcnNlci5wYXJzZV9hcmdzKCksICdmdW5jdGlvbicsIGxhbWJkYTogcGFyc2VyLnByaW50X2hl
bHAoKSkoKQotCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgc3lzLmV4aXQobWFp
bigpKQoKUHJvcGVydHkgY2hhbmdlcyBvbjogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0
c2RicHkvcmVzdWx0c2RicHkvY29udGFpbmVyCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOmV4ZWN1
dGFibGUKIyMgLTEgKzAsMCAjIwotKgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5Cklu
ZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9ydW4K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0
c2RicHkvcnVuCShyZXZpc2lvbiAyNzg5NDMpCisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9y
ZXN1bHRzZGJweS9yZXN1bHRzZGJweS9ydW4JKG5vbmV4aXN0ZW50KQpAQCAtMSwxNzMgKzAsMCBA
QAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMwotCi0jIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMg
YXJlIG1ldDoKLSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECi0jIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECi0jIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IK
LSMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTAotIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgotIyBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UgotIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotCi1pbXBvcnQgYXJncGFyc2UKLWltcG9ydCBvcwotaW1wb3J0IHN1YnByb2Nlc3MK
LWltcG9ydCBzeXMKLWltcG9ydCB0aW1lCi1pbXBvcnQgdGhyZWFkaW5nCi0KLXN5cy5kb250X3dy
aXRlX2J5dGVjb2RlID0gVHJ1ZQotCi1mcm9tIG1vZGVsLmRvY2tlciBpbXBvcnQgRG9ja2VyCi1m
cm9tIG11bHRpcHJvY2Vzc2luZyBpbXBvcnQgUHJvY2VzcwotZnJvbSByZWRpcyBpbXBvcnQgU3Ry
aWN0UmVkaXMKLQotCi1jbGFzcyBEb2NrZXJJZk5lZWRlZENvbnRleHQob2JqZWN0KToKLQotICAg
IGRlZiBfX2luaXRfXyhzZWxmLCBhcmdzKToKLSAgICAgICAgc2VsZi5kb2NrZXIgPSBEb2NrZXIu
aW5zdGFuY2UoKSBpZiAnbG9jYWxob3N0JyBpbiBbYXJncy5jYXNzYW5kcmFfc2VydmVyLCBhcmdz
LnJlZGlzX3NlcnZlcl0gZWxzZSBOb25lCi0KLSAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgotICAg
ICAgICBpZiBzZWxmLmRvY2tlcjoKLSAgICAgICAgICAgIHNlbGYuZG9ja2VyLl9fZW50ZXJfXygp
Ci0KLSAgICBkZWYgX19leGl0X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKLSAgICAgICAgaWYg
c2VsZi5kb2NrZXI6Ci0gICAgICAgICAgICBzZWxmLmRvY2tlci5fX2V4aXRfXygqYXJncywgKipr
d2FyZ3MpCi0KLQotZGVmIGhhc19ndW5pY29ybigpOgotICAgIHJldHVybiBub3Qgc3VicHJvY2Vz
cy5ydW4oWydweXRob24zJywgJy91c3IvbG9jYWwvYmluL2d1bmljb3JucycsICctLXZlcnNpb24n
XSwgY2FwdHVyZV9vdXRwdXQ9VHJ1ZSkucmV0dXJuY29kZQotCi0KLWRlZiBwYXJzZV9hcmd1bWVu
dHMoKToKLSAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcihkZXNjcmlwdGlvbj0n
UnVuIGEgc2ltcGxlIGluc3RhbmNlIG9mIHRoZSByZXN1bHRzIGRhdGFiYXNlIGZvciBsb2NhbCBk
ZXZlbG9wbWVudCcpCi0gICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKLSAgICAgICAgJy0tbG9jYWwt
Y2Fzc2FuZHJhJywgaGVscD0nVXNlIGEgbG9jYWwgQ2Fzc2FuZHJhIGluc3RhbmNlJywKLSAgICAg
ICAgZGVzdD0nY2Fzc2FuZHJhX3NlcnZlcicsIGFjdGlvbj0nc3RvcmVfY29uc3QnLCBjb25zdD0n
bG9jYWxob3N0JywKLSAgICApCi0gICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKLSAgICAgICAgJy0t
bW9jay1jYXNzYW5kcmEnLCBoZWxwPSdVc2UgYSBtb2NrIENhc3NhbmRyYSBpbnN0YW5jZScsCi0g
ICAgICAgIGRlc3Q9J2Nhc3NhbmRyYV9zZXJ2ZXInLCBhY3Rpb249J3N0b3JlX2NvbnN0JywgY29u
c3Q9J21vY2snLAotICAgICkKLSAgICBwYXJzZXIuc2V0X2RlZmF1bHRzKGNhc3NhbmRyYV9zZXJ2
ZXI9J2xvY2FsaG9zdCcgaWYgRG9ja2VyLmluc3RhbGxlZCgpIGVsc2UgJ21vY2snKQotCi0gICAg
cGFyc2VyLmFkZF9hcmd1bWVudCgKLSAgICAgICAgJy0tbG9jYWwtcmVkaXMnLCBoZWxwPSdVc2Ug
YSBsb2NhbCBSZWRpcyBpbnN0YW5jZScsCi0gICAgICAgIGRlc3Q9J3JlZGlzX3NlcnZlcicsIGFj
dGlvbj0nc3RvcmVfY29uc3QnLCBjb25zdD0nbG9jYWxob3N0JywKLSAgICApCi0gICAgcGFyc2Vy
LmFkZF9hcmd1bWVudCgKLSAgICAgICAgJy0tbW9jay1yZWRpcycsIGhlbHA9J1VzZSBhIG1vY2sg
UmVkaXMgaW5zdGFuY2UnLAotICAgICAgICBkZXN0PSdyZWRpc19zZXJ2ZXInLCBhY3Rpb249J3N0
b3JlX2NvbnN0JywgY29uc3Q9J21vY2snLAotICAgICkKLSAgICBwYXJzZXIuc2V0X2RlZmF1bHRz
KHJlZGlzX3NlcnZlcj0nbG9jYWxob3N0JyBpZiBEb2NrZXIuaW5zdGFsbGVkKCkgZWxzZSAnbW9j
aycpCi0KLSAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAotICAgICAgICAnLS1kcm9wLWtleXNwYWNl
JywgaGVscD0nRHJvcCB0aGUgZXhpc3Rpbmcga2V5c3BhY2UgYmVmb3JlIHJ1bm5pbmcgdGhlIHBy
b2dyYW0nLAotICAgICAgICBkZXN0PSdkcm9wX2tleXNwYWNlJywgYWN0aW9uPSdzdG9yZV90cnVl
JywKLSAgICApCi0gICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKLSAgICAgICAgJy0tbm8tZHJvcC1r
ZXlzcGFjZScsIGhlbHA9J0RvIE5PVCBkcm9wIHRoZSBleGlzdGluZyBrZXlzcGFjZSBiZWZvcmUg
cnVubmluZyB0aGUgcHJvZ3JhbScsCi0gICAgICAgIGRlc3Q9J2Ryb3Bfa2V5c3BhY2UnLCBhY3Rp
b249J3N0b3JlX2ZhbHNlJywKLSAgICApCi0gICAgcGFyc2VyLnNldF9kZWZhdWx0cyhkcm9wX2tl
eXNwYWNlPUZhbHNlKQotCi0gICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKLSAgICAgICAgJy0tY2xl
YXItcmVkaXMnLCBoZWxwPSdDbGVhciByZWRpcyBiZWZvcmUgcnVubmluZyB0aGUgYXBwbGljYXRp
b24nLAotICAgICAgICBkZXN0PSdjbGVhcl9yZWRpcycsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCi0g
ICAgKQotICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCi0gICAgICAgICctLW5vLWNsZWFyLXJlZGlz
JywKLSAgICAgICAgaGVscD0nRG8gbm90IGNsZWFyIHJlZGlzIGJlZm9yZSBydW5uaW5nIHRoZSBh
cHBsaWNhdGlvbicsCi0gICAgICAgIGRlc3Q9J2NsZWFyX3JlZGlzJywgYWN0aW9uPSdzdG9yZV9m
YWxzZScsCi0gICAgKQotICAgIHBhcnNlci5zZXRfZGVmYXVsdHMoY2xlYXJfcmVkaXM9VHJ1ZSkK
LQotICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCi0gICAgICAgICctLWd1bmljb3JuJywgaGVscD0n
VXNlIHRoZSBndW5pY29ybiB3ZWJzZXJ2ZXInLAotICAgICAgICBkZXN0PSdndW5pY29ybicsIGFj
dGlvbj0nc3RvcmVfdHJ1ZScsCi0gICAgKQotICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCi0gICAg
ICAgICctLW5vLWd1bmljb3JuJywKLSAgICAgICAgaGVscD0nRG8gbm90IHVzZSB0aGUgZ3VuaWNv
cm4gd2Vic2VydmVyJywKLSAgICAgICAgZGVzdD0nZ3VuaWNvcm4nLCBhY3Rpb249J3N0b3JlX2Zh
bHNlJywKLSAgICApCi0gICAgcGFyc2VyLnNldF9kZWZhdWx0cyhndW5pY29ybj1oYXNfZ3VuaWNv
cm4oKSkKLQotICAgIHJldHVybiBwYXJzZXIucGFyc2VfYXJncygpCi0KLQotZGVmIGRvX3dvcmso
KToKLSAgICBmcm9tIGV4YW1wbGUud29ya2VyIGltcG9ydCBtYWluCi0gICAgbWFpbigpCi0KLQot
ZGVmIHdlYl9hcHAoKToKLSAgICBmcm9tIGV4YW1wbGUubWFpbiBpbXBvcnQgbWFpbgotICAgIHJl
dHVybiBtYWluKCkKLQotCi1kZWYgZ3VuaWNvcm4oKToKLSAgICBpZiBub3QgaGFzX2d1bmljb3Ju
KCk6Ci0gICAgICAgIHByaW50KCdndW5pY29ybiBpcyBub3QgaW5zdGFsbGVkLCBwbGVhc2UgcnVu
IGBwaXAzIGluc3RhbGwgZ3VuaWNvcm5gJykKLSAgICAgICAgcmV0dXJuIDEKLQotICAgICMgU2xp
Z2h0IGRlbGF5IHNvIHRoYXQgdGhlIHdvcmtlciBpcyBzdGFydGVkIGJlZm9yZSB0aGUgd2Vic2Vy
dmVyCi0gICAgdGltZS5zbGVlcCgyKQotICAgIHJldHVybiBzdWJwcm9jZXNzLnJ1bihbCi0gICAg
ICAgICdweXRob24zJywgJy91c3IvbG9jYWwvYmluL2d1bmljb3JuJywKLSAgICAgICAgJ2V4YW1w
bGUubWFpbjphcHAnLAotICAgICAgICAnLS1sb2ctZmlsZT0tJywgJy0tcmVsb2FkJywKLSAgICBd
KS5yZXR1cm5jb2RlCi0KLQotZGVmIG1haW4oKToKLSAgICBhcmdzID0gcGFyc2VfYXJndW1lbnRz
KCkKLSAgICB3aXRoIERvY2tlcklmTmVlZGVkQ29udGV4dChhcmdzKToKLSAgICAgICAgb3MuZW52
aXJvblsnQ0FTU0FORFJBX1NFUlZFUiddID0gYXJncy5jYXNzYW5kcmFfc2VydmVyCi0gICAgICAg
IG9zLmVudmlyb25bJ1JFRElTX0hPU1QnXSA9IGFyZ3MucmVkaXNfc2VydmVyCi0gICAgICAgIG9z
LmVudmlyb25bJ0RST1BfS0VZU1BBQ0UnXSA9ICcxJyBpZiBhcmdzLmRyb3Bfa2V5c3BhY2UgZWxz
ZSAnMCcKLSAgICAgICAgb3MuZW52aXJvblsnQ1JFQVRFX0tFWVNQQUNFJ10gPSAnMScgICMgVW5j
b25kaXRpb25hbGx5IGNyZWF0ZSBrZXlzcGFjZSBmb3IgdGVzdGluZwotCi0gICAgICAgIGlmIGFy
Z3MuY2xlYXJfcmVkaXMgYW5kIGFyZ3MucmVkaXNfc2VydmVyICE9ICdtb2NrJzoKLSAgICAgICAg
ICAgIFN0cmljdFJlZGlzKGhvc3Q9YXJncy5yZWRpc19zZXJ2ZXIpLmZsdXNoZGIoKQotCi0gICAg
ICAgIGlmIGFyZ3MuZ3VuaWNvcm46Ci0gICAgICAgICAgICBpZiAnbW9jaycgaW4gW2FyZ3MucmVk
aXNfc2VydmVyLCBhcmdzLmNhc3NhbmRyYV9zZXJ2ZXJdOgotICAgICAgICAgICAgICAgIHJhaXNl
IFJ1bnRpbWVFcnJvcignQ2Fubm90IHJ1biB3aXRoIGd1bmljb3JuIGFuZCBtb2NrIGRhdGFiYXNl
cywgYXN5bmNocm9ub3VzIHdvcmtlcnMgcmVseSBvbiB0aGUgcmVhbCBkYXRhYmFzZXMnKQotCi0g
ICAgICAgIGZyb20gZXhhbXBsZS5lbnZpcm9ubWVudCBpbXBvcnQgbWFpbiBhcyBlbnZpcm9ubWVu
dF9tYWluCi0gICAgICAgIGVudmlyb25tZW50X21haW4oKQotCi0gICAgICAgIGlmIG5vdCBhcmdz
Lmd1bmljb3JuOgotICAgICAgICAgICAgd29ya2VyID0gdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9
ZG9fd29yaykKLSAgICAgICAgICAgIHdvcmtlci5kYWVtb24gPSBUcnVlCi0gICAgICAgICAgICB3
b3JrZXIuc3RhcnQoKQotCi0gICAgICAgICAgICByZXR1cm4gd2ViX2FwcCgpCi0KLSAgICAgICAg
d29ya2VyID0gUHJvY2Vzcyh0YXJnZXQ9ZG9fd29yaykKLSAgICAgICAgd29ya2VyLnN0YXJ0KCkK
LQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXR1cm4gZ3VuaWNvcm4oKQotICAgICAgICBm
aW5hbGx5OgotICAgICAgICAgICAgd29ya2VyLnRlcm1pbmF0ZSgpCi0gICAgICAgICAgICB3b3Jr
ZXIuam9pbigpCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgc3lzLmV4aXQobWFp
bigpKQoKUHJvcGVydHkgY2hhbmdlcyBvbjogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0
c2RicHkvcmVzdWx0c2RicHkvcnVuCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOmV4ZWN1dGFibGUK
IyMgLTEgKzAsMCAjIwotKgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBU
b29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9leGFtcGxlL21h
aW4ucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkv
cmVzdWx0c2RicHkvZXhhbXBsZS9tYWluLnB5CShyZXZpc2lvbiAyNzg5NDMpCisrKyBUb29scy9T
Y3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9leGFtcGxlL21haW4ucHkJ
KHdvcmtpbmcgY29weSkKQEAgLTIzLDcgKzIzLDcgQEAKIGltcG9ydCBoYXNobGliCiBpbXBvcnQg
anNvbgogCi1mcm9tIGV4YW1wbGUuZW52aXJvbm1lbnQgaW1wb3J0IEVudmlyb25tZW50LCBNb2Rl
bEZyb21FbnZpcm9ubWVudAorZnJvbSByZXN1bHRzZGJweS5leGFtcGxlLmVudmlyb25tZW50IGlt
cG9ydCBFbnZpcm9ubWVudCwgTW9kZWxGcm9tRW52aXJvbm1lbnQKIGZyb20gZmxhc2sgaW1wb3J0
IGFib3J0LCBGbGFzaywgcmVxdWVzdAogZnJvbSByZXN1bHRzZGJweS5jb250cm9sbGVyLmFwaV9y
b3V0ZXMgaW1wb3J0IEFQSVJvdXRlcwogZnJvbSByZXN1bHRzZGJweS52aWV3LnZpZXdfcm91dGVz
IGltcG9ydCBWaWV3Um91dGVzCkluZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRz
ZGJweS9yZXN1bHRzZGJweS92aWV3L3ZpZXdfcm91dGVzX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcv
dmlld19yb3V0ZXNfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI3ODk0MykKKysrIFRvb2xzL1Njcmlw
dHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcvdmlld19yb3V0ZXNfdW5p
dHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTIyLDkgKzIyLDkgQEAKIAogaW1wb3J0IHRpbWUK
IAotZnJvbSBjb250cm9sbGVyLmFwaV9yb3V0ZXMgaW1wb3J0IEFQSVJvdXRlcwogZnJvbSBmYWtl
cmVkaXMgaW1wb3J0IEZha2VTdHJpY3RSZWRpcwogZnJvbSByZWRpcyBpbXBvcnQgU3RyaWN0UmVk
aXMKK2Zyb20gcmVzdWx0c2RicHkuY29udHJvbGxlci5hcGlfcm91dGVzIGltcG9ydCBBUElSb3V0
ZXMKIGZyb20gcmVzdWx0c2RicHkuZmxhc2tfc3VwcG9ydC5mbGFza190ZXN0Y2FzZSBpbXBvcnQg
Rmxhc2tUZXN0Q2FzZQogZnJvbSByZXN1bHRzZGJweS5tb2RlbC5jYXNzYW5kcmFfY29udGV4dCBp
bXBvcnQgQ2Fzc2FuZHJhQ29udGV4dAogZnJvbSByZXN1bHRzZGJweS5tb2RlbC5tb2NrX2Nhc3Nh
bmRyYV9jb250ZXh0IGltcG9ydCBNb2NrQ2Fzc2FuZHJhQ29udGV4dAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431668</attachid>
            <date>2021-06-17 08:32:05 -0700</date>
            <delta_ts>2021-06-17 08:53:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227096-20210617083203.patch</filename>
            <type>text/plain</type>
            <size>31255</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4OTg2CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYWZiMzE2NGE3YjBmZGU1M2FiY2NjYWY3ODEwMWRjNzdk
MzJkYWU5My4uNjMzZmM0NWQ1MTE5MTFkODEzODcyYTU0ODlhNzEzZmQzYTQ3Njk0MiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIx
IEBACisyMDIxLTA2LTE3ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbcmVzdWx0c2RicHldIEFkb3B0IGF1dG9pbnN0YWxsZXIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzA5NgorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNzk0MTgwODA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9jb250YWluZXI6IE1v
dmVkIGZyb20gaW5zZGllIGxpYnJhcnkuCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvcmVz
dWx0c2RicHkvcmVzdWx0c2RicHkvX19pbml0X18ucHk6IFJlZ2lzdGVyIHJlcXVpcmVkIGxpYnJh
cmllcy4KKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJw
eS9jb250YWluZXI6IE1vdmVkIHRvIGNvbnRhaW5pbmcgZm9sZGVyLgorICAgICAgICAqIFNjcmlw
dHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2V4YW1wbGUvbWFpbi5weToKKyAg
ICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9ydW46IE1v
dmVkIHRvIGNvbnRhaW5pbmcgZm9sZGVyLgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3Jl
c3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcvdmlld19yb3V0ZXNfdW5pdHRlc3QucHk6IFVzZSBz
cGVjaWZpYyBpbXBvcnRzCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkv
cnVuOiBNb3ZlZCBmcm9tIGluc2RpZSBsaWJyYXJ5LgorICAgICAgICAqIFNjcmlwdHMvbGlicmFy
aWVzL3Jlc3VsdHNkYnB5L3J1bi10ZXN0czogVXNlIGF1dG9pbnN0YWxsZWQgbGlicmFyaWVzLgor
ICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3NldHVwLnB5OiBCdW1wIHZl
cnNpb24uCisKIDIwMjEtMDYtMTcgIE9yaW9sIEJydWZhdSAgPG9icnVmYXVAaWdhbGlhLmNvbT4K
IAogICAgICAgICBbY3NzLWxvZ2ljYWxdIEltcGxlbWVudCBsb2dpY2FsIHByb3BlcnR5IGdyb3Vw
cwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvY29udGFp
bmVyIGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvY29udGFpbmVyCm5ldyBm
aWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmQ3Y2M3MjFjNmFmZjc1YmMzZDExMzMxYWNmZDdiMWY0MDEwZDY0YWUKLS0tIC9kZXYv
bnVsbAorKysgYi9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9jb250YWluZXIK
QEAgLTAsMCArMSw4MyBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworCisjIENvcHlyaWdodCAo
QykgMjAyMCwgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisj
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMg
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTICJBUyBJUyIgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
KyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UgorIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBvcnQgYXJncGFyc2UKK2ltcG9ydCBv
cworaW1wb3J0IHN5cworCitpbXBvcnQgcmVzdWx0c2RicHkKK2Zyb20gd2Via2l0Y29yZXB5IGlt
cG9ydCBBdXRvSW5zdGFsbAorCitsaWJyYXJpZXMgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5hYnNw
YXRoKG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5kaXJuYW1lKF9fZmls
ZV9fKSkpKSwgJ2xpYnJhcmllcycpCitpZiBzeXMucGxhdGZvcm0gPT0gJ2Rhcndpbic6CisgICAg
aXNfcm9vdCA9IG5vdCBvcy5nZXR1aWQoKQorICAgIGRvZXNfb3duX2xpYnJhcmllcyA9IG9zLnN0
YXQobGlicmFyaWVzKS5zdF91aWQgPT0gb3MuZ2V0dWlkKCkKKyAgICBpZiAoaXNfcm9vdCBvciBu
b3QgZG9lc19vd25fbGlicmFyaWVzKToKKyAgICAgICAgbGlicmFyaWVzID0gb3MucGF0aC5leHBh
bmR1c2VyKCd+L0xpYnJhcnkvd2Via2l0cHknKQorQXV0b0luc3RhbGwuc2V0X2RpcmVjdG9yeShv
cy5wYXRoLmpvaW4obGlicmFyaWVzLCAnYXV0b2luc3RhbGxlZCcsICdweXRob24te30nLmZvcm1h
dChzeXMudmVyc2lvbl9pbmZvWzBdKSkpCisKK2Zyb20gcmVzdWx0c2RicHkubW9kZWwuZG9ja2Vy
IGltcG9ydCBEb2NrZXIKKworCitkZWYgc3RhcnQoKToKKyAgICBEb2NrZXIuc3RhcnQoKQorICAg
IERvY2tlci5zdGFydF9wcm9qZWN0KERvY2tlci5ERUZBVUxUX1BST0pFQ1QpCisgICAgcmV0dXJu
IDAKKworCitkZWYgc3RvcCgpOgorICAgIGlmIG5vdCBEb2NrZXIuaXNfcnVubmluZygpOgorICAg
ICAgICBwcmludCgnRG9ja2VyIGlzIG5vdCBydW5uaW5nJykKKyAgICAgICAgcmV0dXJuIDEKKyAg
ICBEb2NrZXIuc3RvcF9wcm9qZWN0KERvY2tlci5ERUZBVUxUX1BST0pFQ1QpCisgICAgRG9ja2Vy
LnN0b3AoKQorICAgIHJldHVybiAwCisKKworZGVmIHJlc3RhcnQoKToKKyAgICBpZiBub3QgRG9j
a2VyLmlzX3J1bm5pbmcoKToKKyAgICAgICAgRG9ja2VyLnN0YXJ0KCkKKyAgICBEb2NrZXIuc3Rv
cF9wcm9qZWN0KERvY2tlci5ERUZBVUxUX1BST0pFQ1QpCisgICAgRG9ja2VyLnN0YXJ0X3Byb2pl
Y3QoRG9ja2VyLkRFRkFVTFRfUFJPSkVDVCkKKyAgICByZXR1cm4gMAorCisKK2RlZiBtYWluKCk6
CisgICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoZGVzY3JpcHRpb249J01hbmFn
ZSByZXN1bHRzZGJweSBjb250YWluZXIgaW5zdGFuY2UgaW5zaWRlIERvY2tlcicpCisgICAgc3Vi
cGFyc2VycyA9IHBhcnNlci5hZGRfc3VicGFyc2VycyhoZWxwPSdzdWItY29tbWFuZCBoZWxwJykK
KworICAgIHN0YXJ0X3BhcnNlciA9IHN1YnBhcnNlcnMuYWRkX3BhcnNlcignc3RhcnQnLCBoZWxw
PSdTdGFydCB0aGUgY29udGFpbmVyIGluc2lkZSBEb2NrZXInKQorICAgIHN0YXJ0X3BhcnNlci5z
ZXRfZGVmYXVsdHMoZnVuY3Rpb249c3RhcnQpCisKKyAgICBzdGFydF9wYXJzZXIgPSBzdWJwYXJz
ZXJzLmFkZF9wYXJzZXIoJ3N0b3AnLCBoZWxwPSdTdG9wIHRoZSBjb250YWluZXIgaW5zaWRlIERv
Y2tlcicpCisgICAgc3RhcnRfcGFyc2VyLnNldF9kZWZhdWx0cyhmdW5jdGlvbj1zdG9wKQorCisg
ICAgc3RhcnRfcGFyc2VyID0gc3VicGFyc2Vycy5hZGRfcGFyc2VyKCdyZXN0YXJ0JywgaGVscD0n
UmVzdGFydCB0aGUgY29udGFpbmVyIGluc2lkZSBEb2NrZXInKQorICAgIHN0YXJ0X3BhcnNlci5z
ZXRfZGVmYXVsdHMoZnVuY3Rpb249cmVzdGFydCkKKworICAgIHJldHVybiBnZXRhdHRyKHBhcnNl
ci5wYXJzZV9hcmdzKCksICdmdW5jdGlvbicsIGxhbWJkYTogcGFyc2VyLnByaW50X2hlbHAoKSko
KQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgc3lzLmV4aXQobWFpbigpKQpk
aWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2Ri
cHkvX19pbml0X18ucHkgYi9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1
bHRzZGJweS9fX2luaXRfXy5weQppbmRleCBkODVlNjE3ZTkyOTE2MDkwNmM5ZjM5ZTIyMWZlOWRh
NmFhZWY2MTJiLi5lMDc3N2UzNGQ5N2ZkOThjMjJmYzIzZjc0ZGE0NjNjOWViMGFmNzY5IDEwMDY0
NAotLS0gYS9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9f
X2luaXRfXy5weQorKysgYi9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1
bHRzZGJweS9fX2luaXRfXy5weQpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDE5LTIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0zNiw3ICszNiw3IEBAIGRlZiBfbWF5YmVfYWRkX3dlYmtpdF9weXRob25fbGli
cmFyeV9wYXRocygpOgogX21heWJlX2FkZF93ZWJraXRfcHl0aG9uX2xpYnJhcnlfcGF0aHMoKQog
CiB0cnk6Ci0gICAgZnJvbSB3ZWJraXRjb3JlcHkudmVyc2lvbiBpbXBvcnQgVmVyc2lvbgorICAg
IGZyb20gd2Via2l0Y29yZXB5IGltcG9ydCBBdXRvSW5zdGFsbCwgUGFja2FnZSwgVmVyc2lvbgog
ZXhjZXB0IEltcG9ydEVycm9yOgogICAgIHJhaXNlIEltcG9ydEVycm9yKAogICAgICAgICAiJ3dl
YmtpdGNvcmVweScgY291bGQgbm90IGJlIGZvdW5kIG9uIHlvdXIgUHl0aG9uIHBhdGguXG4iICsK
QEAgLTQ0LDYgKzQ0LDMyIEBAIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICAgICAgIlBsZWFzZSBp
bnN0YWxsIHdlYmtpdGNvcmVweSB3aXRoIGBwaXAgaW5zdGFsbCB3ZWJraXRjb3JlcHkgLS1leHRy
YS1pbmRleC11cmwgPHBhY2thZ2UgaW5kZXggVVJMPmAiCiAgICAgKQogCi12ZXJzaW9uID0gVmVy
c2lvbigyLCAwLCA1KQordmVyc2lvbiA9IFZlcnNpb24oMywgMCwgMCkKKworQXV0b0luc3RhbGwu
cmVnaXN0ZXIoUGFja2FnZSgnYWVudW0nLCBWZXJzaW9uKDIsIDIsIDYpKSkKK0F1dG9JbnN0YWxs
LnJlZ2lzdGVyKFBhY2thZ2UoJ2F0dHJzJywgVmVyc2lvbigyMSwgMiwgMCkpKQorQXV0b0luc3Rh
bGwucmVnaXN0ZXIoUGFja2FnZSgnYWlvcmVkaXMnLCBWZXJzaW9uKDEsIDMsIDEpKSkKK0F1dG9J
bnN0YWxsLnJlZ2lzdGVyKFBhY2thZ2UoJ2FzeW5jLXRpbWVvdXQnLCBWZXJzaW9uKDMsIDAsIDEp
KSkKK0F1dG9JbnN0YWxsLnJlZ2lzdGVyKFBhY2thZ2UoJ2JvdG8zJywgVmVyc2lvbigxLCAxNiwg
NjMpLCB3aGVlbD1UcnVlKSkKK0F1dG9JbnN0YWxsLnJlZ2lzdGVyKFBhY2thZ2UoJ2JvdG9jb3Jl
JywgVmVyc2lvbigxLCAxOSwgNjMpLCB3aGVlbD1UcnVlKSkKK0F1dG9JbnN0YWxsLnJlZ2lzdGVy
KFBhY2thZ2UoJ2Nhc3NhbmRyYScsIFZlcnNpb24oMywgMjUsIDApLCBweXBpX25hbWU9J2Nhc3Nh
bmRyYS1kcml2ZXInLCBzbG93X2luc3RhbGw9VHJ1ZSkpCitBdXRvSW5zdGFsbC5yZWdpc3RlcihQ
YWNrYWdlKCdjbGljaycsIFZlcnNpb24oNywgMSwgMikpKQorQXV0b0luc3RhbGwucmVnaXN0ZXIo
UGFja2FnZSgnZmFrZXJlZGlzJywgVmVyc2lvbigxLCA1LCAyKSkpCitBdXRvSW5zdGFsbC5yZWdp
c3RlcihQYWNrYWdlKCdnZW9tZXQnLCBWZXJzaW9uKDAsIDIsIDEpKSkKK0F1dG9JbnN0YWxsLnJl
Z2lzdGVyKFBhY2thZ2UoJ2dyZW1saW5weXRob24nLCBWZXJzaW9uKDMsIDQsIDYpKSkKK0F1dG9J
bnN0YWxsLnJlZ2lzdGVyKFBhY2thZ2UoJ2hpcmVkaXMnLCBWZXJzaW9uKDEsIDEsIDApKSkKK0F1
dG9JbnN0YWxsLnJlZ2lzdGVyKFBhY2thZ2UoJ2lzb2RhdGUnLCBWZXJzaW9uKDAsIDYsIDApKSkK
K0F1dG9JbnN0YWxsLnJlZ2lzdGVyKFBhY2thZ2UoJ2ptZXNwYXRoJywgVmVyc2lvbigwLCAxMCwg
MCksIHdoZWVsPVRydWUpKQorQXV0b0luc3RhbGwucmVnaXN0ZXIoUGFja2FnZSgnbHVwYScsIFZl
cnNpb24oMSwgOSkpKQorQXV0b0luc3RhbGwucmVnaXN0ZXIoUGFja2FnZSgncHlhc24xX21vZHVs
ZXMnLCBWZXJzaW9uKDAsIDIsIDgpLCBweXBpX25hbWU9J3B5YXNuMS1tb2R1bGVzJykpCitBdXRv
SW5zdGFsbC5yZWdpc3RlcihQYWNrYWdlKCdweWNyeXB0b2RvbWUnLCBWZXJzaW9uKDMsIDEwLCAx
KSkpCitBdXRvSW5zdGFsbC5yZWdpc3RlcihQYWNrYWdlKCdyZWRpcycsIFZlcnNpb24oMywgNSwg
MykpKQorQXV0b0luc3RhbGwucmVnaXN0ZXIoUGFja2FnZSgnc2VsZW5pdW0nLCBWZXJzaW9uKDMs
IDE0MSwgMCkpKQorQXV0b0luc3RhbGwucmVnaXN0ZXIoUGFja2FnZSgnc2VydmljZV9pZGVudGl0
eScsIFZlcnNpb24oMjEsIDEsIDApLCBweXBpX25hbWU9J3NlcnZpY2UtaWRlbnRpdHknKSkKK0F1
dG9JbnN0YWxsLnJlZ2lzdGVyKFBhY2thZ2UoJ3NvcnRlZGNvbnRhaW5lcnMnLCBWZXJzaW9uKDIs
IDQsIDApKSkKK0F1dG9JbnN0YWxsLnJlZ2lzdGVyKFBhY2thZ2UoJ3Rvcm5hZG8nLCBWZXJzaW9u
KDQsIDUsIDMpKSkKK0F1dG9JbnN0YWxsLnJlZ2lzdGVyKFBhY2thZ2UoJ3R3aXN0ZWQnLCBWZXJz
aW9uKDIxLCAyLCAwKSwgcHlwaV9uYW1lPSdUd2lzdGVkJywgaW1wbGljaXRfZGVwcz1bCisgICAg
UGFja2FnZSgnaW5jcmVtZW50YWwnLCBWZXJzaW9uKDIxLCAzLCAwKSksCitdKSkKIAogbmFtZSA9
ICdyZXN1bHRzZGJweScKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3Vs
dHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRhaW5lciBiL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jl
c3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRhaW5lcgpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUK
aW5kZXggNzIxMDM1ZGI2YzVhZDA4NzExMjRmYzhlNzdlMjc5YmE2ODg5YTBjYi4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29scy9TY3JpcHRzL2xpYnJh
cmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9jb250YWluZXIKKysrIC9kZXYvbnVsbApAQCAt
MSw3MyArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24zCi0KLSMgQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElT
IiBBTkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotIyBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUgotIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0jIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSCi0jIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0jIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0KLWltcG9ydCBhcmdwYXJzZQotaW1wb3J0IG9zCi1pbXBvcnQg
c3lzCi1zeXMuZG9udF93cml0ZV9ieXRlY29kZSA9IFRydWUKLQotZnJvbSBtb2RlbC5kb2NrZXIg
aW1wb3J0IERvY2tlcgotCi0KLWRlZiBzdGFydCgpOgotICAgIERvY2tlci5zdGFydCgpCi0gICAg
RG9ja2VyLnN0YXJ0X3Byb2plY3QoRG9ja2VyLkRFRkFVTFRfUFJPSkVDVCkKLSAgICByZXR1cm4g
MAotCi0KLWRlZiBzdG9wKCk6Ci0gICAgaWYgbm90IERvY2tlci5pc19ydW5uaW5nKCk6Ci0gICAg
ICAgIHByaW50KCdEb2NrZXIgaXMgbm90IHJ1bm5pbmcnKQotICAgICAgICByZXR1cm4gMQotICAg
IERvY2tlci5zdG9wX3Byb2plY3QoRG9ja2VyLkRFRkFVTFRfUFJPSkVDVCkKLSAgICBEb2NrZXIu
c3RvcCgpCi0gICAgcmV0dXJuIDAKLQotCi1kZWYgcmVzdGFydCgpOgotICAgIGlmIG5vdCBEb2Nr
ZXIuaXNfcnVubmluZygpOgotICAgICAgICBEb2NrZXIuc3RhcnQoKQotICAgIERvY2tlci5zdG9w
X3Byb2plY3QoRG9ja2VyLkRFRkFVTFRfUFJPSkVDVCkKLSAgICBEb2NrZXIuc3RhcnRfcHJvamVj
dChEb2NrZXIuREVGQVVMVF9QUk9KRUNUKQotICAgIHJldHVybiAwCi0KLQotZGVmIG1haW4oKToK
LSAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcihkZXNjcmlwdGlvbj0nTWFuYWdl
IHJlc3VsdHNkYnB5IGNvbnRhaW5lciBpbnN0YW5jZSBpbnNpZGUgRG9ja2VyJykKLSAgICBzdWJw
YXJzZXJzID0gcGFyc2VyLmFkZF9zdWJwYXJzZXJzKGhlbHA9J3N1Yi1jb21tYW5kIGhlbHAnKQot
Ci0gICAgc3RhcnRfcGFyc2VyID0gc3VicGFyc2Vycy5hZGRfcGFyc2VyKCdzdGFydCcsIGhlbHA9
J1N0YXJ0IHRoZSBjb250YWluZXIgaW5zaWRlIERvY2tlcicpCi0gICAgc3RhcnRfcGFyc2VyLnNl
dF9kZWZhdWx0cyhmdW5jdGlvbj1zdGFydCkKLQotICAgIHN0YXJ0X3BhcnNlciA9IHN1YnBhcnNl
cnMuYWRkX3BhcnNlcignc3RvcCcsIGhlbHA9J1N0b3AgdGhlIGNvbnRhaW5lciBpbnNpZGUgRG9j
a2VyJykKLSAgICBzdGFydF9wYXJzZXIuc2V0X2RlZmF1bHRzKGZ1bmN0aW9uPXN0b3ApCi0KLSAg
ICBzdGFydF9wYXJzZXIgPSBzdWJwYXJzZXJzLmFkZF9wYXJzZXIoJ3Jlc3RhcnQnLCBoZWxwPSdS
ZXN0YXJ0IHRoZSBjb250YWluZXIgaW5zaWRlIERvY2tlcicpCi0gICAgc3RhcnRfcGFyc2VyLnNl
dF9kZWZhdWx0cyhmdW5jdGlvbj1yZXN0YXJ0KQotCi0gICAgcmV0dXJuIGdldGF0dHIocGFyc2Vy
LnBhcnNlX2FyZ3MoKSwgJ2Z1bmN0aW9uJywgbGFtYmRhOiBwYXJzZXIucHJpbnRfaGVscCgpKSgp
Ci0KLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICBzeXMuZXhpdChtYWluKCkpCmRp
ZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJw
eS9leGFtcGxlL21haW4ucHkgYi9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9y
ZXN1bHRzZGJweS9leGFtcGxlL21haW4ucHkKaW5kZXggNzNjZGQ5OWYxMTE3ZDJjOWFiYTgzYmRl
NjhlN2NjZGFjYWI5ZDkxYy4uYWQ2NWIzZjgwZWEzZmViZjBmZjY3MWM1ZDQyNjFiZDI0OGY3MGQw
YyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0
c2RicHkvZXhhbXBsZS9tYWluLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3Vs
dHNkYnB5L3Jlc3VsdHNkYnB5L2V4YW1wbGUvbWFpbi5weQpAQCAtMjMsNyArMjMsNyBAQAogaW1w
b3J0IGhhc2hsaWIKIGltcG9ydCBqc29uCiAKLWZyb20gZXhhbXBsZS5lbnZpcm9ubWVudCBpbXBv
cnQgRW52aXJvbm1lbnQsIE1vZGVsRnJvbUVudmlyb25tZW50Citmcm9tIHJlc3VsdHNkYnB5LmV4
YW1wbGUuZW52aXJvbm1lbnQgaW1wb3J0IEVudmlyb25tZW50LCBNb2RlbEZyb21FbnZpcm9ubWVu
dAogZnJvbSBmbGFzayBpbXBvcnQgYWJvcnQsIEZsYXNrLCByZXF1ZXN0CiBmcm9tIHJlc3VsdHNk
YnB5LmNvbnRyb2xsZXIuYXBpX3JvdXRlcyBpbXBvcnQgQVBJUm91dGVzCiBmcm9tIHJlc3VsdHNk
YnB5LnZpZXcudmlld19yb3V0ZXMgaW1wb3J0IFZpZXdSb3V0ZXMKZGlmZiAtLWdpdCBhL1Rvb2xz
L1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3J1biBiL1Rvb2xzL1Nj
cmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3J1bgpkZWxldGVkIGZpbGUg
bW9kZSAxMDA3NTUKaW5kZXggNGMzYjJjNWI5MWZmN2ZkZjkyOTE4MzMyMTlkNTk2ZTMxZmM0Zjll
Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29scy9T
Y3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9ydW4KKysrIC9kZXYvbnVs
bApAQCAtMSwxNzMgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMwotCi0jIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
ICJBUyBJUyIgQU5ECi0jIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0jIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSMg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IKLSMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotIyBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgot
IyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUgotIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotIyBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi1pbXBvcnQgYXJncGFyc2UKLWltcG9ydCBvcwot
aW1wb3J0IHN1YnByb2Nlc3MKLWltcG9ydCBzeXMKLWltcG9ydCB0aW1lCi1pbXBvcnQgdGhyZWFk
aW5nCi0KLXN5cy5kb250X3dyaXRlX2J5dGVjb2RlID0gVHJ1ZQotCi1mcm9tIG1vZGVsLmRvY2tl
ciBpbXBvcnQgRG9ja2VyCi1mcm9tIG11bHRpcHJvY2Vzc2luZyBpbXBvcnQgUHJvY2VzcwotZnJv
bSByZWRpcyBpbXBvcnQgU3RyaWN0UmVkaXMKLQotCi1jbGFzcyBEb2NrZXJJZk5lZWRlZENvbnRl
eHQob2JqZWN0KToKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhcmdzKToKLSAgICAgICAgc2Vs
Zi5kb2NrZXIgPSBEb2NrZXIuaW5zdGFuY2UoKSBpZiAnbG9jYWxob3N0JyBpbiBbYXJncy5jYXNz
YW5kcmFfc2VydmVyLCBhcmdzLnJlZGlzX3NlcnZlcl0gZWxzZSBOb25lCi0KLSAgICBkZWYgX19l
bnRlcl9fKHNlbGYpOgotICAgICAgICBpZiBzZWxmLmRvY2tlcjoKLSAgICAgICAgICAgIHNlbGYu
ZG9ja2VyLl9fZW50ZXJfXygpCi0KLSAgICBkZWYgX19leGl0X18oc2VsZiwgKmFyZ3MsICoqa3dh
cmdzKToKLSAgICAgICAgaWYgc2VsZi5kb2NrZXI6Ci0gICAgICAgICAgICBzZWxmLmRvY2tlci5f
X2V4aXRfXygqYXJncywgKiprd2FyZ3MpCi0KLQotZGVmIGhhc19ndW5pY29ybigpOgotICAgIHJl
dHVybiBub3Qgc3VicHJvY2Vzcy5ydW4oWydweXRob24zJywgJy91c3IvbG9jYWwvYmluL2d1bmlj
b3JucycsICctLXZlcnNpb24nXSwgY2FwdHVyZV9vdXRwdXQ9VHJ1ZSkucmV0dXJuY29kZQotCi0K
LWRlZiBwYXJzZV9hcmd1bWVudHMoKToKLSAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBh
cnNlcihkZXNjcmlwdGlvbj0nUnVuIGEgc2ltcGxlIGluc3RhbmNlIG9mIHRoZSByZXN1bHRzIGRh
dGFiYXNlIGZvciBsb2NhbCBkZXZlbG9wbWVudCcpCi0gICAgcGFyc2VyLmFkZF9hcmd1bWVudCgK
LSAgICAgICAgJy0tbG9jYWwtY2Fzc2FuZHJhJywgaGVscD0nVXNlIGEgbG9jYWwgQ2Fzc2FuZHJh
IGluc3RhbmNlJywKLSAgICAgICAgZGVzdD0nY2Fzc2FuZHJhX3NlcnZlcicsIGFjdGlvbj0nc3Rv
cmVfY29uc3QnLCBjb25zdD0nbG9jYWxob3N0JywKLSAgICApCi0gICAgcGFyc2VyLmFkZF9hcmd1
bWVudCgKLSAgICAgICAgJy0tbW9jay1jYXNzYW5kcmEnLCBoZWxwPSdVc2UgYSBtb2NrIENhc3Nh
bmRyYSBpbnN0YW5jZScsCi0gICAgICAgIGRlc3Q9J2Nhc3NhbmRyYV9zZXJ2ZXInLCBhY3Rpb249
J3N0b3JlX2NvbnN0JywgY29uc3Q9J21vY2snLAotICAgICkKLSAgICBwYXJzZXIuc2V0X2RlZmF1
bHRzKGNhc3NhbmRyYV9zZXJ2ZXI9J2xvY2FsaG9zdCcgaWYgRG9ja2VyLmluc3RhbGxlZCgpIGVs
c2UgJ21vY2snKQotCi0gICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKLSAgICAgICAgJy0tbG9jYWwt
cmVkaXMnLCBoZWxwPSdVc2UgYSBsb2NhbCBSZWRpcyBpbnN0YW5jZScsCi0gICAgICAgIGRlc3Q9
J3JlZGlzX3NlcnZlcicsIGFjdGlvbj0nc3RvcmVfY29uc3QnLCBjb25zdD0nbG9jYWxob3N0JywK
LSAgICApCi0gICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKLSAgICAgICAgJy0tbW9jay1yZWRpcycs
IGhlbHA9J1VzZSBhIG1vY2sgUmVkaXMgaW5zdGFuY2UnLAotICAgICAgICBkZXN0PSdyZWRpc19z
ZXJ2ZXInLCBhY3Rpb249J3N0b3JlX2NvbnN0JywgY29uc3Q9J21vY2snLAotICAgICkKLSAgICBw
YXJzZXIuc2V0X2RlZmF1bHRzKHJlZGlzX3NlcnZlcj0nbG9jYWxob3N0JyBpZiBEb2NrZXIuaW5z
dGFsbGVkKCkgZWxzZSAnbW9jaycpCi0KLSAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAotICAgICAg
ICAnLS1kcm9wLWtleXNwYWNlJywgaGVscD0nRHJvcCB0aGUgZXhpc3Rpbmcga2V5c3BhY2UgYmVm
b3JlIHJ1bm5pbmcgdGhlIHByb2dyYW0nLAotICAgICAgICBkZXN0PSdkcm9wX2tleXNwYWNlJywg
YWN0aW9uPSdzdG9yZV90cnVlJywKLSAgICApCi0gICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKLSAg
ICAgICAgJy0tbm8tZHJvcC1rZXlzcGFjZScsIGhlbHA9J0RvIE5PVCBkcm9wIHRoZSBleGlzdGlu
ZyBrZXlzcGFjZSBiZWZvcmUgcnVubmluZyB0aGUgcHJvZ3JhbScsCi0gICAgICAgIGRlc3Q9J2Ry
b3Bfa2V5c3BhY2UnLCBhY3Rpb249J3N0b3JlX2ZhbHNlJywKLSAgICApCi0gICAgcGFyc2VyLnNl
dF9kZWZhdWx0cyhkcm9wX2tleXNwYWNlPUZhbHNlKQotCi0gICAgcGFyc2VyLmFkZF9hcmd1bWVu
dCgKLSAgICAgICAgJy0tY2xlYXItcmVkaXMnLCBoZWxwPSdDbGVhciByZWRpcyBiZWZvcmUgcnVu
bmluZyB0aGUgYXBwbGljYXRpb24nLAotICAgICAgICBkZXN0PSdjbGVhcl9yZWRpcycsIGFjdGlv
bj0nc3RvcmVfdHJ1ZScsCi0gICAgKQotICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCi0gICAgICAg
ICctLW5vLWNsZWFyLXJlZGlzJywKLSAgICAgICAgaGVscD0nRG8gbm90IGNsZWFyIHJlZGlzIGJl
Zm9yZSBydW5uaW5nIHRoZSBhcHBsaWNhdGlvbicsCi0gICAgICAgIGRlc3Q9J2NsZWFyX3JlZGlz
JywgYWN0aW9uPSdzdG9yZV9mYWxzZScsCi0gICAgKQotICAgIHBhcnNlci5zZXRfZGVmYXVsdHMo
Y2xlYXJfcmVkaXM9VHJ1ZSkKLQotICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCi0gICAgICAgICct
LWd1bmljb3JuJywgaGVscD0nVXNlIHRoZSBndW5pY29ybiB3ZWJzZXJ2ZXInLAotICAgICAgICBk
ZXN0PSdndW5pY29ybicsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCi0gICAgKQotICAgIHBhcnNlci5h
ZGRfYXJndW1lbnQoCi0gICAgICAgICctLW5vLWd1bmljb3JuJywKLSAgICAgICAgaGVscD0nRG8g
bm90IHVzZSB0aGUgZ3VuaWNvcm4gd2Vic2VydmVyJywKLSAgICAgICAgZGVzdD0nZ3VuaWNvcm4n
LCBhY3Rpb249J3N0b3JlX2ZhbHNlJywKLSAgICApCi0gICAgcGFyc2VyLnNldF9kZWZhdWx0cyhn
dW5pY29ybj1oYXNfZ3VuaWNvcm4oKSkKLQotICAgIHJldHVybiBwYXJzZXIucGFyc2VfYXJncygp
Ci0KLQotZGVmIGRvX3dvcmsoKToKLSAgICBmcm9tIGV4YW1wbGUud29ya2VyIGltcG9ydCBtYWlu
Ci0gICAgbWFpbigpCi0KLQotZGVmIHdlYl9hcHAoKToKLSAgICBmcm9tIGV4YW1wbGUubWFpbiBp
bXBvcnQgbWFpbgotICAgIHJldHVybiBtYWluKCkKLQotCi1kZWYgZ3VuaWNvcm4oKToKLSAgICBp
ZiBub3QgaGFzX2d1bmljb3JuKCk6Ci0gICAgICAgIHByaW50KCdndW5pY29ybiBpcyBub3QgaW5z
dGFsbGVkLCBwbGVhc2UgcnVuIGBwaXAzIGluc3RhbGwgZ3VuaWNvcm5gJykKLSAgICAgICAgcmV0
dXJuIDEKLQotICAgICMgU2xpZ2h0IGRlbGF5IHNvIHRoYXQgdGhlIHdvcmtlciBpcyBzdGFydGVk
IGJlZm9yZSB0aGUgd2Vic2VydmVyCi0gICAgdGltZS5zbGVlcCgyKQotICAgIHJldHVybiBzdWJw
cm9jZXNzLnJ1bihbCi0gICAgICAgICdweXRob24zJywgJy91c3IvbG9jYWwvYmluL2d1bmljb3Ju
JywKLSAgICAgICAgJ2V4YW1wbGUubWFpbjphcHAnLAotICAgICAgICAnLS1sb2ctZmlsZT0tJywg
Jy0tcmVsb2FkJywKLSAgICBdKS5yZXR1cm5jb2RlCi0KLQotZGVmIG1haW4oKToKLSAgICBhcmdz
ID0gcGFyc2VfYXJndW1lbnRzKCkKLSAgICB3aXRoIERvY2tlcklmTmVlZGVkQ29udGV4dChhcmdz
KToKLSAgICAgICAgb3MuZW52aXJvblsnQ0FTU0FORFJBX1NFUlZFUiddID0gYXJncy5jYXNzYW5k
cmFfc2VydmVyCi0gICAgICAgIG9zLmVudmlyb25bJ1JFRElTX0hPU1QnXSA9IGFyZ3MucmVkaXNf
c2VydmVyCi0gICAgICAgIG9zLmVudmlyb25bJ0RST1BfS0VZU1BBQ0UnXSA9ICcxJyBpZiBhcmdz
LmRyb3Bfa2V5c3BhY2UgZWxzZSAnMCcKLSAgICAgICAgb3MuZW52aXJvblsnQ1JFQVRFX0tFWVNQ
QUNFJ10gPSAnMScgICMgVW5jb25kaXRpb25hbGx5IGNyZWF0ZSBrZXlzcGFjZSBmb3IgdGVzdGlu
ZwotCi0gICAgICAgIGlmIGFyZ3MuY2xlYXJfcmVkaXMgYW5kIGFyZ3MucmVkaXNfc2VydmVyICE9
ICdtb2NrJzoKLSAgICAgICAgICAgIFN0cmljdFJlZGlzKGhvc3Q9YXJncy5yZWRpc19zZXJ2ZXIp
LmZsdXNoZGIoKQotCi0gICAgICAgIGlmIGFyZ3MuZ3VuaWNvcm46Ci0gICAgICAgICAgICBpZiAn
bW9jaycgaW4gW2FyZ3MucmVkaXNfc2VydmVyLCBhcmdzLmNhc3NhbmRyYV9zZXJ2ZXJdOgotICAg
ICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignQ2Fubm90IHJ1biB3aXRoIGd1bmljb3Ju
IGFuZCBtb2NrIGRhdGFiYXNlcywgYXN5bmNocm9ub3VzIHdvcmtlcnMgcmVseSBvbiB0aGUgcmVh
bCBkYXRhYmFzZXMnKQotCi0gICAgICAgIGZyb20gZXhhbXBsZS5lbnZpcm9ubWVudCBpbXBvcnQg
bWFpbiBhcyBlbnZpcm9ubWVudF9tYWluCi0gICAgICAgIGVudmlyb25tZW50X21haW4oKQotCi0g
ICAgICAgIGlmIG5vdCBhcmdzLmd1bmljb3JuOgotICAgICAgICAgICAgd29ya2VyID0gdGhyZWFk
aW5nLlRocmVhZCh0YXJnZXQ9ZG9fd29yaykKLSAgICAgICAgICAgIHdvcmtlci5kYWVtb24gPSBU
cnVlCi0gICAgICAgICAgICB3b3JrZXIuc3RhcnQoKQotCi0gICAgICAgICAgICByZXR1cm4gd2Vi
X2FwcCgpCi0KLSAgICAgICAgd29ya2VyID0gUHJvY2Vzcyh0YXJnZXQ9ZG9fd29yaykKLSAgICAg
ICAgd29ya2VyLnN0YXJ0KCkKLQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXR1cm4gZ3Vu
aWNvcm4oKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgd29ya2VyLnRlcm1pbmF0ZSgp
Ci0gICAgICAgICAgICB3b3JrZXIuam9pbigpCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6
Ci0gICAgc3lzLmV4aXQobWFpbigpKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9saWJyYXJp
ZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy92aWV3X3JvdXRlc191bml0dGVzdC5weSBi
L1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcvdmll
d19yb3V0ZXNfdW5pdHRlc3QucHkKaW5kZXggNGIwYmQ3NzU4MmZhNDdlZjI5ZWUwN2I2NjM1ZTM4
NWQ3OWRmNmJiNC4uNjYzODUwMzkyNWIyYzdkYzY3ZjcxMGJhMmNjZDcwYTFmYmRmMzE3OCAxMDA2
NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkv
dmlldy92aWV3X3JvdXRlc191bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL2xpYnJhcmll
cy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS92aWV3L3ZpZXdfcm91dGVzX3VuaXR0ZXN0LnB5CkBA
IC0yMiw5ICsyMiw5IEBACiAKIGltcG9ydCB0aW1lCiAKLWZyb20gY29udHJvbGxlci5hcGlfcm91
dGVzIGltcG9ydCBBUElSb3V0ZXMKIGZyb20gZmFrZXJlZGlzIGltcG9ydCBGYWtlU3RyaWN0UmVk
aXMKIGZyb20gcmVkaXMgaW1wb3J0IFN0cmljdFJlZGlzCitmcm9tIHJlc3VsdHNkYnB5LmNvbnRy
b2xsZXIuYXBpX3JvdXRlcyBpbXBvcnQgQVBJUm91dGVzCiBmcm9tIHJlc3VsdHNkYnB5LmZsYXNr
X3N1cHBvcnQuZmxhc2tfdGVzdGNhc2UgaW1wb3J0IEZsYXNrVGVzdENhc2UKIGZyb20gcmVzdWx0
c2RicHkubW9kZWwuY2Fzc2FuZHJhX2NvbnRleHQgaW1wb3J0IENhc3NhbmRyYUNvbnRleHQKIGZy
b20gcmVzdWx0c2RicHkubW9kZWwubW9ja19jYXNzYW5kcmFfY29udGV4dCBpbXBvcnQgTW9ja0Nh
c3NhbmRyYUNvbnRleHQKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3Vs
dHNkYnB5L3J1biBiL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3J1bgpuZXcg
ZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40MDVjMDIyODU0MjMyZmQ0MmU4MGI2NDUwZTBhMjI1NTlmNjAwYzZlCi0tLSAvZGV2
L251bGwKKysrIGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcnVuCkBAIC0w
LDAgKzEsMTgyIEBACisjIS91c3IvYmluL2VudiBweXRob24zCisKKyMgQ29weXJpZ2h0IChDKSAy
MDIwLCAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
IkFTIElTIiBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisj
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCBhcmdwYXJzZQoraW1wb3J0IG9zCitp
bXBvcnQgc3VicHJvY2VzcworaW1wb3J0IHN5cworaW1wb3J0IHRpbWUKK2ltcG9ydCB0aHJlYWRp
bmcKKworaW1wb3J0IHJlc3VsdHNkYnB5Citmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgQXV0b0lu
c3RhbGwKKworbGlicmFyaWVzID0gb3MucGF0aC5qb2luKG9zLnBhdGguYWJzcGF0aChvcy5wYXRo
LmRpcm5hbWUob3MucGF0aC5kaXJuYW1lKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykpKSksICds
aWJyYXJpZXMnKQoraWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nOgorICAgIGlzX3Jvb3QgPSBu
b3Qgb3MuZ2V0dWlkKCkKKyAgICBkb2VzX293bl9saWJyYXJpZXMgPSBvcy5zdGF0KGxpYnJhcmll
cykuc3RfdWlkID09IG9zLmdldHVpZCgpCisgICAgaWYgKGlzX3Jvb3Qgb3Igbm90IGRvZXNfb3du
X2xpYnJhcmllcyk6CisgICAgICAgIGxpYnJhcmllcyA9IG9zLnBhdGguZXhwYW5kdXNlcignfi9M
aWJyYXJ5L3dlYmtpdHB5JykKK0F1dG9JbnN0YWxsLnNldF9kaXJlY3Rvcnkob3MucGF0aC5qb2lu
KGxpYnJhcmllcywgJ2F1dG9pbnN0YWxsZWQnLCAncHl0aG9uLXt9Jy5mb3JtYXQoc3lzLnZlcnNp
b25faW5mb1swXSkpKQorCitmcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLmRvY2tlciBpbXBvcnQgRG9j
a2VyCitmcm9tIG11bHRpcHJvY2Vzc2luZyBpbXBvcnQgUHJvY2VzcworZnJvbSByZWRpcyBpbXBv
cnQgU3RyaWN0UmVkaXMKKworCitjbGFzcyBEb2NrZXJJZk5lZWRlZENvbnRleHQob2JqZWN0KToK
KworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhcmdzKToKKyAgICAgICAgc2VsZi5kb2NrZXIgPSBE
b2NrZXIuaW5zdGFuY2UoKSBpZiAnbG9jYWxob3N0JyBpbiBbYXJncy5jYXNzYW5kcmFfc2VydmVy
LCBhcmdzLnJlZGlzX3NlcnZlcl0gZWxzZSBOb25lCisKKyAgICBkZWYgX19lbnRlcl9fKHNlbGYp
OgorICAgICAgICBpZiBzZWxmLmRvY2tlcjoKKyAgICAgICAgICAgIHNlbGYuZG9ja2VyLl9fZW50
ZXJfXygpCisKKyAgICBkZWYgX19leGl0X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAg
ICAgaWYgc2VsZi5kb2NrZXI6CisgICAgICAgICAgICBzZWxmLmRvY2tlci5fX2V4aXRfXygqYXJn
cywgKiprd2FyZ3MpCisKKworZGVmIGhhc19ndW5pY29ybigpOgorICAgIHJldHVybiBub3Qgc3Vi
cHJvY2Vzcy5ydW4oWydweXRob24zJywgJy91c3IvbG9jYWwvYmluL2d1bmljb3JucycsICctLXZl
cnNpb24nXSwgY2FwdHVyZV9vdXRwdXQ9VHJ1ZSkucmV0dXJuY29kZQorCisKK2RlZiBwYXJzZV9h
cmd1bWVudHMoKToKKyAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcihkZXNjcmlw
dGlvbj0nUnVuIGEgc2ltcGxlIGluc3RhbmNlIG9mIHRoZSByZXN1bHRzIGRhdGFiYXNlIGZvciBs
b2NhbCBkZXZlbG9wbWVudCcpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKKyAgICAgICAgJy0t
bG9jYWwtY2Fzc2FuZHJhJywgaGVscD0nVXNlIGEgbG9jYWwgQ2Fzc2FuZHJhIGluc3RhbmNlJywK
KyAgICAgICAgZGVzdD0nY2Fzc2FuZHJhX3NlcnZlcicsIGFjdGlvbj0nc3RvcmVfY29uc3QnLCBj
b25zdD0nbG9jYWxob3N0JywKKyAgICApCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKKyAgICAg
ICAgJy0tbW9jay1jYXNzYW5kcmEnLCBoZWxwPSdVc2UgYSBtb2NrIENhc3NhbmRyYSBpbnN0YW5j
ZScsCisgICAgICAgIGRlc3Q9J2Nhc3NhbmRyYV9zZXJ2ZXInLCBhY3Rpb249J3N0b3JlX2NvbnN0
JywgY29uc3Q9J21vY2snLAorICAgICkKKyAgICBwYXJzZXIuc2V0X2RlZmF1bHRzKGNhc3NhbmRy
YV9zZXJ2ZXI9J2xvY2FsaG9zdCcgaWYgRG9ja2VyLmluc3RhbGxlZCgpIGVsc2UgJ21vY2snKQor
CisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKKyAgICAgICAgJy0tbG9jYWwtcmVkaXMnLCBoZWxw
PSdVc2UgYSBsb2NhbCBSZWRpcyBpbnN0YW5jZScsCisgICAgICAgIGRlc3Q9J3JlZGlzX3NlcnZl
cicsIGFjdGlvbj0nc3RvcmVfY29uc3QnLCBjb25zdD0nbG9jYWxob3N0JywKKyAgICApCisgICAg
cGFyc2VyLmFkZF9hcmd1bWVudCgKKyAgICAgICAgJy0tbW9jay1yZWRpcycsIGhlbHA9J1VzZSBh
IG1vY2sgUmVkaXMgaW5zdGFuY2UnLAorICAgICAgICBkZXN0PSdyZWRpc19zZXJ2ZXInLCBhY3Rp
b249J3N0b3JlX2NvbnN0JywgY29uc3Q9J21vY2snLAorICAgICkKKyAgICBwYXJzZXIuc2V0X2Rl
ZmF1bHRzKHJlZGlzX3NlcnZlcj0nbG9jYWxob3N0JyBpZiBEb2NrZXIuaW5zdGFsbGVkKCkgZWxz
ZSAnbW9jaycpCisKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICAgICAnLS1kcm9wLWtl
eXNwYWNlJywgaGVscD0nRHJvcCB0aGUgZXhpc3Rpbmcga2V5c3BhY2UgYmVmb3JlIHJ1bm5pbmcg
dGhlIHByb2dyYW0nLAorICAgICAgICBkZXN0PSdkcm9wX2tleXNwYWNlJywgYWN0aW9uPSdzdG9y
ZV90cnVlJywKKyAgICApCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKKyAgICAgICAgJy0tbm8t
ZHJvcC1rZXlzcGFjZScsIGhlbHA9J0RvIE5PVCBkcm9wIHRoZSBleGlzdGluZyBrZXlzcGFjZSBi
ZWZvcmUgcnVubmluZyB0aGUgcHJvZ3JhbScsCisgICAgICAgIGRlc3Q9J2Ryb3Bfa2V5c3BhY2Un
LCBhY3Rpb249J3N0b3JlX2ZhbHNlJywKKyAgICApCisgICAgcGFyc2VyLnNldF9kZWZhdWx0cyhk
cm9wX2tleXNwYWNlPUZhbHNlKQorCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKKyAgICAgICAg
Jy0tY2xlYXItcmVkaXMnLCBoZWxwPSdDbGVhciByZWRpcyBiZWZvcmUgcnVubmluZyB0aGUgYXBw
bGljYXRpb24nLAorICAgICAgICBkZXN0PSdjbGVhcl9yZWRpcycsIGFjdGlvbj0nc3RvcmVfdHJ1
ZScsCisgICAgKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCisgICAgICAgICctLW5vLWNsZWFy
LXJlZGlzJywKKyAgICAgICAgaGVscD0nRG8gbm90IGNsZWFyIHJlZGlzIGJlZm9yZSBydW5uaW5n
IHRoZSBhcHBsaWNhdGlvbicsCisgICAgICAgIGRlc3Q9J2NsZWFyX3JlZGlzJywgYWN0aW9uPSdz
dG9yZV9mYWxzZScsCisgICAgKQorICAgIHBhcnNlci5zZXRfZGVmYXVsdHMoY2xlYXJfcmVkaXM9
VHJ1ZSkKKworICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCisgICAgICAgICctLWd1bmljb3JuJywg
aGVscD0nVXNlIHRoZSBndW5pY29ybiB3ZWJzZXJ2ZXInLAorICAgICAgICBkZXN0PSdndW5pY29y
bicsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQo
CisgICAgICAgICctLW5vLWd1bmljb3JuJywKKyAgICAgICAgaGVscD0nRG8gbm90IHVzZSB0aGUg
Z3VuaWNvcm4gd2Vic2VydmVyJywKKyAgICAgICAgZGVzdD0nZ3VuaWNvcm4nLCBhY3Rpb249J3N0
b3JlX2ZhbHNlJywKKyAgICApCisgICAgcGFyc2VyLnNldF9kZWZhdWx0cyhndW5pY29ybj1oYXNf
Z3VuaWNvcm4oKSkKKworICAgIHJldHVybiBwYXJzZXIucGFyc2VfYXJncygpCisKKworZGVmIGRv
X3dvcmsoKToKKyAgICBmcm9tIHJlc3VsdHNkYnB5LmV4YW1wbGUud29ya2VyIGltcG9ydCBtYWlu
CisgICAgbWFpbigpCisKKworZGVmIHdlYl9hcHAoKToKKyAgICBmcm9tIHJlc3VsdHNkYnB5LmV4
YW1wbGUubWFpbiBpbXBvcnQgbWFpbgorICAgIHJldHVybiBtYWluKCkKKworCitkZWYgZ3VuaWNv
cm4oKToKKyAgICBpZiBub3QgaGFzX2d1bmljb3JuKCk6CisgICAgICAgIHByaW50KCdndW5pY29y
biBpcyBub3QgaW5zdGFsbGVkLCBwbGVhc2UgcnVuIGBwaXAzIGluc3RhbGwgZ3VuaWNvcm5gJykK
KyAgICAgICAgcmV0dXJuIDEKKworICAgICMgU2xpZ2h0IGRlbGF5IHNvIHRoYXQgdGhlIHdvcmtl
ciBpcyBzdGFydGVkIGJlZm9yZSB0aGUgd2Vic2VydmVyCisgICAgdGltZS5zbGVlcCgyKQorICAg
IHJldHVybiBzdWJwcm9jZXNzLnJ1bihbCisgICAgICAgICdweXRob24zJywgJy91c3IvbG9jYWwv
YmluL2d1bmljb3JuJywKKyAgICAgICAgJ2V4YW1wbGUubWFpbjphcHAnLAorICAgICAgICAnLS1s
b2ctZmlsZT0tJywgJy0tcmVsb2FkJywKKyAgICBdKS5yZXR1cm5jb2RlCisKKworZGVmIG1haW4o
KToKKyAgICBhcmdzID0gcGFyc2VfYXJndW1lbnRzKCkKKyAgICB3aXRoIERvY2tlcklmTmVlZGVk
Q29udGV4dChhcmdzKToKKyAgICAgICAgb3MuZW52aXJvblsnQ0FTU0FORFJBX1NFUlZFUiddID0g
YXJncy5jYXNzYW5kcmFfc2VydmVyCisgICAgICAgIG9zLmVudmlyb25bJ1JFRElTX0hPU1QnXSA9
IGFyZ3MucmVkaXNfc2VydmVyCisgICAgICAgIG9zLmVudmlyb25bJ0RST1BfS0VZU1BBQ0UnXSA9
ICcxJyBpZiBhcmdzLmRyb3Bfa2V5c3BhY2UgZWxzZSAnMCcKKyAgICAgICAgb3MuZW52aXJvblsn
Q1JFQVRFX0tFWVNQQUNFJ10gPSAnMScgICMgVW5jb25kaXRpb25hbGx5IGNyZWF0ZSBrZXlzcGFj
ZSBmb3IgdGVzdGluZworCisgICAgICAgIGlmIGFyZ3MuY2xlYXJfcmVkaXMgYW5kIGFyZ3MucmVk
aXNfc2VydmVyICE9ICdtb2NrJzoKKyAgICAgICAgICAgIFN0cmljdFJlZGlzKGhvc3Q9YXJncy5y
ZWRpc19zZXJ2ZXIpLmZsdXNoZGIoKQorCisgICAgICAgIGlmIGFyZ3MuZ3VuaWNvcm46CisgICAg
ICAgICAgICBpZiAnbW9jaycgaW4gW2FyZ3MucmVkaXNfc2VydmVyLCBhcmdzLmNhc3NhbmRyYV9z
ZXJ2ZXJdOgorICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignQ2Fubm90IHJ1biB3
aXRoIGd1bmljb3JuIGFuZCBtb2NrIGRhdGFiYXNlcywgYXN5bmNocm9ub3VzIHdvcmtlcnMgcmVs
eSBvbiB0aGUgcmVhbCBkYXRhYmFzZXMnKQorCisgICAgICAgIGZyb20gcmVzdWx0c2RicHkuZXhh
bXBsZS5lbnZpcm9ubWVudCBpbXBvcnQgbWFpbiBhcyBlbnZpcm9ubWVudF9tYWluCisgICAgICAg
IGVudmlyb25tZW50X21haW4oKQorCisgICAgICAgIGlmIG5vdCBhcmdzLmd1bmljb3JuOgorICAg
ICAgICAgICAgd29ya2VyID0gdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9ZG9fd29yaykKKyAgICAg
ICAgICAgIHdvcmtlci5kYWVtb24gPSBUcnVlCisgICAgICAgICAgICB3b3JrZXIuc3RhcnQoKQor
CisgICAgICAgICAgICByZXR1cm4gd2ViX2FwcCgpCisKKyAgICAgICAgd29ya2VyID0gUHJvY2Vz
cyh0YXJnZXQ9ZG9fd29yaykKKyAgICAgICAgd29ya2VyLnN0YXJ0KCkKKworICAgICAgICB0cnk6
CisgICAgICAgICAgICByZXR1cm4gZ3VuaWNvcm4oKQorICAgICAgICBmaW5hbGx5OgorICAgICAg
ICAgICAgd29ya2VyLnRlcm1pbmF0ZSgpCisgICAgICAgICAgICB3b3JrZXIuam9pbigpCisKK2lm
IF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgc3lzLmV4aXQobWFpbigpKQpkaWZmIC0tZ2l0
IGEvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcnVuLXRlc3RzIGIvVG9vbHMv
U2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcnVuLXRlc3RzCm5ldyBmaWxlIG1vZGUgMTAw
NzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIwMDhi
NWVjYTA4MjJlYjY4ZTUzZDIwMzdkZjUyZDY3NTA1YmQ3OTgKLS0tIC9kZXYvbnVsbAorKysgYi9U
b29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9ydW4tdGVzdHMKQEAgLTAsMCArMSw4
OSBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworCisjIENvcHlyaWdodCAoQykgMjAxOS0yMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBB
TkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCBzeXMKK3N5cy5kb250X3dyaXRlX2J5dGVjb2RlID0g
VHJ1ZQorCitpbXBvcnQgYXJncGFyc2UKK2ltcG9ydCBvcworaW1wb3J0IHN5cworaW1wb3J0IHVu
aXR0ZXN0CisKK2ltcG9ydCByZXN1bHRzZGJweQorZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IEF1
dG9JbnN0YWxsCisKK2xpYnJhcmllcyA9IG9zLnBhdGguam9pbihvcy5wYXRoLmFic3BhdGgob3Mu
cGF0aC5kaXJuYW1lKG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pKSkp
LCAnbGlicmFyaWVzJykKK2lmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoKKyAgICBpc19yb290
ID0gbm90IG9zLmdldHVpZCgpCisgICAgZG9lc19vd25fbGlicmFyaWVzID0gb3Muc3RhdChsaWJy
YXJpZXMpLnN0X3VpZCA9PSBvcy5nZXR1aWQoKQorICAgIGlmIChpc19yb290IG9yIG5vdCBkb2Vz
X293bl9saWJyYXJpZXMpOgorICAgICAgICBsaWJyYXJpZXMgPSBvcy5wYXRoLmV4cGFuZHVzZXIo
J34vTGlicmFyeS93ZWJraXRweScpCitBdXRvSW5zdGFsbC5zZXRfZGlyZWN0b3J5KG9zLnBhdGgu
am9pbihsaWJyYXJpZXMsICdhdXRvaW5zdGFsbGVkJywgJ3B5dGhvbi17fScuZm9ybWF0KHN5cy52
ZXJzaW9uX2luZm9bMF0pKSkKKworZnJvbSBjYXNzYW5kcmEuY3FsZW5naW5lLm1hbmFnZW1lbnQg
aW1wb3J0IENRTEVOR19BTExPV19TQ0hFTUFfTUFOQUdFTUVOVAorCisKK2RlZiBtYWluKCk6Cisg
ICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoZGVzY3JpcHRpb249J1J1biB1bml0
IHRlc3RzIGZvciByZXN1bHRzZGJweScpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLXYnLCAn
LS12ZXJib3NlJywKKyAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PUZhbHNlLCBhY3Rpb249
J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J1ZlcmJvc2Ugb3V0cHV0
JykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLXN0b3Atb24tZmFpbCcsCisgICAgICAgICAg
ICAgICAgICAgICAgZGVmYXVsdD1GYWxzZSwgYWN0aW9uPSdzdG9yZV90cnVlJywKKyAgICAgICAg
ICAgICAgICAgICAgICBoZWxwPSdTdG9wIG9uIGZpcnN0IGZhaWwgb3IgZXJyb3InKQorICAgIHBh
cnNlci5hZGRfYXJndW1lbnQoJ21vZHVsZXNfdG9fdGVzdCcsIG5hcmdzPScqJywKKyAgICAgICAg
ICAgICAgICAgICAgICBoZWxwPSdNb2R1bGVzIHRvIGJlIHRlc3RlZC4gQnkgZGVmYXVsdCwgdGhp
cyBpcyB0aGUgZGF0YWJhc2UsIGZsYXNrX3N1cHBvcnQsIG1vZGVsIGFuZCB2aWV3IG1vZHVsZXMn
LAorICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9Wydjb250cm9sbGVyJywgJ2ZsYXNrX3N1
cHBvcnQnLCAnbW9kZWwnLCAndmlldyddKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1mJywg
Jy0tZmFzdC10ZXN0cycsCisgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1GYWxzZSwgYWN0
aW9uPSdzdG9yZV90cnVlJywKKyAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdTb21lIHRlc3Rz
IHJlcXVpcmUgYSBkb2NrZXIgaW5zdGFuY2UgYW5kIGFyZSBzbG93LCBvcHRpb25hbGx5IHNraXAg
dGhlc2UnKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tbm8td2ViLXNlcnZlcicsCisgICAg
ICAgICAgICAgICAgICAgICAgICBkZXN0PSd3ZWJfc2VydmVyJywgZGVmYXVsdD1UcnVlLCBhY3Rp
b249J3N0b3JlX2ZhbHNlJywKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J1NvbWUgdGVz
dHMgdXNlIGEgRmxhc2sgd2Vic2VydmVyLCBvcHRpb25hbGx5IHNraXAgdGhlc2UnKQorICAgIHBh
cnNlci5hZGRfYXJndW1lbnQoJy0tbm8tc2VsZW5pdW0nLAorICAgICAgICAgICAgICAgICAgICAg
ICAgZGVzdD0nc2VsZW5pdW0nLCBkZWZhdWx0PVRydWUsIGFjdGlvbj0nc3RvcmVfZmFsc2UnLAor
ICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nU29tZSB0ZXN0cyB1c2UgU2VsZW5pdW0gdG8g
dGVzdCB0aGUgVUkgb2YgdGhlIHNpdGUsIG9wdGlvbmFsbHkgc2tpcCB0aGVzZScpCisgICAgb3B0
aW9ucyA9IHBhcnNlci5wYXJzZV9hcmdzKCkKKworICAgIG9zLmVudmlyb25bJ3Nsb3dfdGVzdHMn
XSA9ICcwJyBpZiBvcHRpb25zLmZhc3RfdGVzdHMgZWxzZSAnMScKKyAgICBvcy5lbnZpcm9uWyd3
ZWJfc2VydmVyJ10gPSAnMScgaWYgb3B0aW9ucy53ZWJfc2VydmVyIGVsc2UgJzAnCisgICAgb3Mu
ZW52aXJvblsnc2VsZW5pdW0nXSA9ICcxJyBpZiBvcHRpb25zLnNlbGVuaXVtIGVsc2UgJzAnCisg
ICAgb3MuZW52aXJvbltDUUxFTkdfQUxMT1dfU0NIRU1BX01BTkFHRU1FTlRdID0gJzEnCisKKyAg
ICByb290ID0gb3MucGF0aC5kaXJuYW1lKG9zLnBhdGguYWJzcGF0aChfX2ZpbGVfXykpCisKKyAg
ICBzdWl0ZSA9IHVuaXR0ZXN0LlRlc3RTdWl0ZSgpCisgICAgZm9yIG1vZHVsZV9uYW1lIGluIG9w
dGlvbnMubW9kdWxlc190b190ZXN0OgorICAgICAgICBtb2R1bGVfc3VpdGUgPSB1bml0dGVzdC5k
ZWZhdWx0VGVzdExvYWRlci5kaXNjb3Zlcihvcy5wYXRoLmpvaW4ocm9vdCwgJ3Jlc3VsdHNkYnB5
JywgbW9kdWxlX25hbWUucmVwbGFjZSgnLicsICcvJykpLCBwYXR0ZXJuPScqdW5pdHRlc3QucHkn
LCB0b3BfbGV2ZWxfZGlyPW9zLnBhdGguam9pbihyb290KSkKKyAgICAgICAgZm9yIHRzdCBpbiBt
b2R1bGVfc3VpdGUgaWYgbW9kdWxlX3N1aXRlIGVsc2UgW106CisgICAgICAgICAgICBzdWl0ZS5h
ZGRUZXN0KHRzdCkKKworICAgIGlmIHN1aXRlLmNvdW50VGVzdENhc2VzKCkgPT0gMDoKKyAgICAg
ICAgcmFpc2UgUnVudGltZUVycm9yKCdObyB0ZXN0cyBtYXRjaGluZy4uLicpCisKKyAgICByZXN1
bHQgPSB1bml0dGVzdC5UZXh0VGVzdFJ1bm5lcih2ZXJib3NpdHk9MiBpZiBvcHRpb25zLnZlcmJv
c2UgZWxzZSAxLCBmYWlsZmFzdD1vcHRpb25zLnN0b3Bfb25fZmFpbCwgYnVmZmVyPW5vdCBvcHRp
b25zLnZlcmJvc2UpLnJ1bihzdWl0ZSkKKyAgICByZXR1cm4gbGVuKHJlc3VsdC5lcnJvcnMpCisK
K2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgc3lzLmV4aXQobWFpbigpKQpkaWZmIC0t
Z2l0IGEvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvc2V0dXAucHkgYi9Ub29s
cy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9zZXR1cC5weQppbmRleCA2OWVkNTI5ODc3
MmQ4MDI5ZWNkNWUwOGM2MzJiYzBmZGJhODIzNzJmLi5hMmU0MDI2MWU0Y2E4NWE2ODc3NzYzYzU5
Zjg0MDgzMTljOThhYzEyIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1
bHRzZGJweS9zZXR1cC5weQorKysgYi9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJw
eS9zZXR1cC5weQpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTMwLDcgKzMwLDcgQEAgZGVmIHJlYWRtZSgpOgogCiBzZXR1cCgKICAgICBuYW1lPSdy
ZXN1bHRzZGJweScsCi0gICAgdmVyc2lvbj0nMi4wLjUnLAorICAgIHZlcnNpb249JzMuMC4wJywK
ICAgICBkZXNjcmlwdGlvbj0nTGlicmFyeSBmb3IgdmlzdWFsaXppbmcsIHByb2Nlc3NpbmcgYW5k
IHN0b3JpbmcgdGVzdCByZXN1bHRzLicsCiAgICAgbG9uZ19kZXNjcmlwdGlvbj1yZWFkbWUoKSwK
ICAgICBjbGFzc2lmaWVycz1bCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431673</attachid>
            <date>2021-06-17 08:53:33 -0700</date>
            <delta_ts>2021-06-17 14:21:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227096-20210617085332.patch</filename>
            <type>text/plain</type>
            <size>31299</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4OTg2CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYWZiMzE2NGE3YjBmZGU1M2FiY2NjYWY3ODEwMWRjNzdk
MzJkYWU5My4uNjMzZmM0NWQ1MTE5MTFkODEzODcyYTU0ODlhNzEzZmQzYTQ3Njk0MiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIx
IEBACisyMDIxLTA2LTE3ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbcmVzdWx0c2RicHldIEFkb3B0IGF1dG9pbnN0YWxsZXIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzA5NgorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNzk0MTgwODA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9jb250YWluZXI6IE1v
dmVkIGZyb20gaW5zZGllIGxpYnJhcnkuCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvcmVz
dWx0c2RicHkvcmVzdWx0c2RicHkvX19pbml0X18ucHk6IFJlZ2lzdGVyIHJlcXVpcmVkIGxpYnJh
cmllcy4KKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJw
eS9jb250YWluZXI6IE1vdmVkIHRvIGNvbnRhaW5pbmcgZm9sZGVyLgorICAgICAgICAqIFNjcmlw
dHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2V4YW1wbGUvbWFpbi5weToKKyAg
ICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9ydW46IE1v
dmVkIHRvIGNvbnRhaW5pbmcgZm9sZGVyLgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3Jl
c3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcvdmlld19yb3V0ZXNfdW5pdHRlc3QucHk6IFVzZSBz
cGVjaWZpYyBpbXBvcnRzCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkv
cnVuOiBNb3ZlZCBmcm9tIGluc2RpZSBsaWJyYXJ5LgorICAgICAgICAqIFNjcmlwdHMvbGlicmFy
aWVzL3Jlc3VsdHNkYnB5L3J1bi10ZXN0czogVXNlIGF1dG9pbnN0YWxsZWQgbGlicmFyaWVzLgor
ICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3NldHVwLnB5OiBCdW1wIHZl
cnNpb24uCisKIDIwMjEtMDYtMTcgIE9yaW9sIEJydWZhdSAgPG9icnVmYXVAaWdhbGlhLmNvbT4K
IAogICAgICAgICBbY3NzLWxvZ2ljYWxdIEltcGxlbWVudCBsb2dpY2FsIHByb3BlcnR5IGdyb3Vw
cwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvY29udGFp
bmVyIGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvY29udGFpbmVyCm5ldyBm
aWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmQ3Y2M3MjFjNmFmZjc1YmMzZDExMzMxYWNmZDdiMWY0MDEwZDY0YWUKLS0tIC9kZXYv
bnVsbAorKysgYi9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9jb250YWluZXIK
QEAgLTAsMCArMSw4MyBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworCisjIENvcHlyaWdodCAo
QykgMjAyMCwgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisj
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMg
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTICJBUyBJUyIgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
KyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UgorIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBvcnQgYXJncGFyc2UKK2ltcG9ydCBv
cworaW1wb3J0IHN5cworCitpbXBvcnQgcmVzdWx0c2RicHkKK2Zyb20gd2Via2l0Y29yZXB5IGlt
cG9ydCBBdXRvSW5zdGFsbAorCitsaWJyYXJpZXMgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5hYnNw
YXRoKG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5kaXJuYW1lKF9fZmls
ZV9fKSkpKSwgJ2xpYnJhcmllcycpCitpZiBzeXMucGxhdGZvcm0gPT0gJ2Rhcndpbic6CisgICAg
aXNfcm9vdCA9IG5vdCBvcy5nZXR1aWQoKQorICAgIGRvZXNfb3duX2xpYnJhcmllcyA9IG9zLnN0
YXQobGlicmFyaWVzKS5zdF91aWQgPT0gb3MuZ2V0dWlkKCkKKyAgICBpZiAoaXNfcm9vdCBvciBu
b3QgZG9lc19vd25fbGlicmFyaWVzKToKKyAgICAgICAgbGlicmFyaWVzID0gb3MucGF0aC5leHBh
bmR1c2VyKCd+L0xpYnJhcnkvd2Via2l0cHknKQorQXV0b0luc3RhbGwuc2V0X2RpcmVjdG9yeShv
cy5wYXRoLmpvaW4obGlicmFyaWVzLCAnYXV0b2luc3RhbGxlZCcsICdweXRob24te30nLmZvcm1h
dChzeXMudmVyc2lvbl9pbmZvWzBdKSkpCisKK2Zyb20gcmVzdWx0c2RicHkubW9kZWwuZG9ja2Vy
IGltcG9ydCBEb2NrZXIKKworCitkZWYgc3RhcnQoKToKKyAgICBEb2NrZXIuc3RhcnQoKQorICAg
IERvY2tlci5zdGFydF9wcm9qZWN0KERvY2tlci5ERUZBVUxUX1BST0pFQ1QpCisgICAgcmV0dXJu
IDAKKworCitkZWYgc3RvcCgpOgorICAgIGlmIG5vdCBEb2NrZXIuaXNfcnVubmluZygpOgorICAg
ICAgICBwcmludCgnRG9ja2VyIGlzIG5vdCBydW5uaW5nJykKKyAgICAgICAgcmV0dXJuIDEKKyAg
ICBEb2NrZXIuc3RvcF9wcm9qZWN0KERvY2tlci5ERUZBVUxUX1BST0pFQ1QpCisgICAgRG9ja2Vy
LnN0b3AoKQorICAgIHJldHVybiAwCisKKworZGVmIHJlc3RhcnQoKToKKyAgICBpZiBub3QgRG9j
a2VyLmlzX3J1bm5pbmcoKToKKyAgICAgICAgRG9ja2VyLnN0YXJ0KCkKKyAgICBEb2NrZXIuc3Rv
cF9wcm9qZWN0KERvY2tlci5ERUZBVUxUX1BST0pFQ1QpCisgICAgRG9ja2VyLnN0YXJ0X3Byb2pl
Y3QoRG9ja2VyLkRFRkFVTFRfUFJPSkVDVCkKKyAgICByZXR1cm4gMAorCisKK2RlZiBtYWluKCk6
CisgICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoZGVzY3JpcHRpb249J01hbmFn
ZSByZXN1bHRzZGJweSBjb250YWluZXIgaW5zdGFuY2UgaW5zaWRlIERvY2tlcicpCisgICAgc3Vi
cGFyc2VycyA9IHBhcnNlci5hZGRfc3VicGFyc2VycyhoZWxwPSdzdWItY29tbWFuZCBoZWxwJykK
KworICAgIHN0YXJ0X3BhcnNlciA9IHN1YnBhcnNlcnMuYWRkX3BhcnNlcignc3RhcnQnLCBoZWxw
PSdTdGFydCB0aGUgY29udGFpbmVyIGluc2lkZSBEb2NrZXInKQorICAgIHN0YXJ0X3BhcnNlci5z
ZXRfZGVmYXVsdHMoZnVuY3Rpb249c3RhcnQpCisKKyAgICBzdGFydF9wYXJzZXIgPSBzdWJwYXJz
ZXJzLmFkZF9wYXJzZXIoJ3N0b3AnLCBoZWxwPSdTdG9wIHRoZSBjb250YWluZXIgaW5zaWRlIERv
Y2tlcicpCisgICAgc3RhcnRfcGFyc2VyLnNldF9kZWZhdWx0cyhmdW5jdGlvbj1zdG9wKQorCisg
ICAgc3RhcnRfcGFyc2VyID0gc3VicGFyc2Vycy5hZGRfcGFyc2VyKCdyZXN0YXJ0JywgaGVscD0n
UmVzdGFydCB0aGUgY29udGFpbmVyIGluc2lkZSBEb2NrZXInKQorICAgIHN0YXJ0X3BhcnNlci5z
ZXRfZGVmYXVsdHMoZnVuY3Rpb249cmVzdGFydCkKKworICAgIHJldHVybiBnZXRhdHRyKHBhcnNl
ci5wYXJzZV9hcmdzKCksICdmdW5jdGlvbicsIGxhbWJkYTogcGFyc2VyLnByaW50X2hlbHAoKSko
KQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgc3lzLmV4aXQobWFpbigpKQpk
aWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2Ri
cHkvX19pbml0X18ucHkgYi9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1
bHRzZGJweS9fX2luaXRfXy5weQppbmRleCBkODVlNjE3ZTkyOTE2MDkwNmM5ZjM5ZTIyMWZlOWRh
NmFhZWY2MTJiLi5mYWMwMmE0MDRhNjI3M2E0NDUzYzhiNWUyMDA4OWM2NWUyZDhkNTVlIDEwMDY0
NAotLS0gYS9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9f
X2luaXRfXy5weQorKysgYi9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1
bHRzZGJweS9fX2luaXRfXy5weQpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDE5LTIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0zNiw3ICszNiw3IEBAIGRlZiBfbWF5YmVfYWRkX3dlYmtpdF9weXRob25fbGli
cmFyeV9wYXRocygpOgogX21heWJlX2FkZF93ZWJraXRfcHl0aG9uX2xpYnJhcnlfcGF0aHMoKQog
CiB0cnk6Ci0gICAgZnJvbSB3ZWJraXRjb3JlcHkudmVyc2lvbiBpbXBvcnQgVmVyc2lvbgorICAg
IGZyb20gd2Via2l0Y29yZXB5IGltcG9ydCBBdXRvSW5zdGFsbCwgUGFja2FnZSwgVmVyc2lvbgog
ZXhjZXB0IEltcG9ydEVycm9yOgogICAgIHJhaXNlIEltcG9ydEVycm9yKAogICAgICAgICAiJ3dl
YmtpdGNvcmVweScgY291bGQgbm90IGJlIGZvdW5kIG9uIHlvdXIgUHl0aG9uIHBhdGguXG4iICsK
QEAgLTQ0LDYgKzQ0LDM0IEBAIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICAgICAgIlBsZWFzZSBp
bnN0YWxsIHdlYmtpdGNvcmVweSB3aXRoIGBwaXAgaW5zdGFsbCB3ZWJraXRjb3JlcHkgLS1leHRy
YS1pbmRleC11cmwgPHBhY2thZ2UgaW5kZXggVVJMPmAiCiAgICAgKQogCi12ZXJzaW9uID0gVmVy
c2lvbigyLCAwLCA1KQordmVyc2lvbiA9IFZlcnNpb24oMywgMCwgMCkKKworaW1wb3J0IHdlYmtp
dGZsYXNrcHkKKworQXV0b0luc3RhbGwucmVnaXN0ZXIoUGFja2FnZSgnYWVudW0nLCBWZXJzaW9u
KDIsIDIsIDYpKSkKK0F1dG9JbnN0YWxsLnJlZ2lzdGVyKFBhY2thZ2UoJ2F0dHJzJywgVmVyc2lv
bigyMSwgMiwgMCkpKQorQXV0b0luc3RhbGwucmVnaXN0ZXIoUGFja2FnZSgnYWlvcmVkaXMnLCBW
ZXJzaW9uKDEsIDMsIDEpKSkKK0F1dG9JbnN0YWxsLnJlZ2lzdGVyKFBhY2thZ2UoJ2FzeW5jLXRp
bWVvdXQnLCBWZXJzaW9uKDMsIDAsIDEpKSkKK0F1dG9JbnN0YWxsLnJlZ2lzdGVyKFBhY2thZ2Uo
J2JvdG8zJywgVmVyc2lvbigxLCAxNiwgNjMpLCB3aGVlbD1UcnVlKSkKK0F1dG9JbnN0YWxsLnJl
Z2lzdGVyKFBhY2thZ2UoJ2JvdG9jb3JlJywgVmVyc2lvbigxLCAxOSwgNjMpLCB3aGVlbD1UcnVl
KSkKK0F1dG9JbnN0YWxsLnJlZ2lzdGVyKFBhY2thZ2UoJ2Nhc3NhbmRyYScsIFZlcnNpb24oMywg
MjUsIDApLCBweXBpX25hbWU9J2Nhc3NhbmRyYS1kcml2ZXInLCBzbG93X2luc3RhbGw9VHJ1ZSkp
CitBdXRvSW5zdGFsbC5yZWdpc3RlcihQYWNrYWdlKCdjbGljaycsIFZlcnNpb24oNywgMSwgMikp
KQorQXV0b0luc3RhbGwucmVnaXN0ZXIoUGFja2FnZSgnQ3J5cHRvJywgVmVyc2lvbigzLCAxMCwg
MSksIHB5cGlfbmFtZT0ncHljcnlwdG9kb21lJykpCitBdXRvSW5zdGFsbC5yZWdpc3RlcihQYWNr
YWdlKCdmYWtlcmVkaXMnLCBWZXJzaW9uKDEsIDUsIDIpKSkKK0F1dG9JbnN0YWxsLnJlZ2lzdGVy
KFBhY2thZ2UoJ2dlb21ldCcsIFZlcnNpb24oMCwgMiwgMSkpKQorQXV0b0luc3RhbGwucmVnaXN0
ZXIoUGFja2FnZSgnZ3JlbWxpbnB5dGhvbicsIFZlcnNpb24oMywgNCwgNikpKQorQXV0b0luc3Rh
bGwucmVnaXN0ZXIoUGFja2FnZSgnaGlyZWRpcycsIFZlcnNpb24oMSwgMSwgMCkpKQorQXV0b0lu
c3RhbGwucmVnaXN0ZXIoUGFja2FnZSgnaXNvZGF0ZScsIFZlcnNpb24oMCwgNiwgMCkpKQorQXV0
b0luc3RhbGwucmVnaXN0ZXIoUGFja2FnZSgnam1lc3BhdGgnLCBWZXJzaW9uKDAsIDEwLCAwKSwg
d2hlZWw9VHJ1ZSkpCitBdXRvSW5zdGFsbC5yZWdpc3RlcihQYWNrYWdlKCdsdXBhJywgVmVyc2lv
bigxLCA5KSkpCitBdXRvSW5zdGFsbC5yZWdpc3RlcihQYWNrYWdlKCdweWFzbjFfbW9kdWxlcycs
IFZlcnNpb24oMCwgMiwgOCksIHB5cGlfbmFtZT0ncHlhc24xLW1vZHVsZXMnKSkKK0F1dG9JbnN0
YWxsLnJlZ2lzdGVyKFBhY2thZ2UoJ3JlZGlzJywgVmVyc2lvbigzLCA1LCAzKSkpCitBdXRvSW5z
dGFsbC5yZWdpc3RlcihQYWNrYWdlKCdzZWxlbml1bScsIFZlcnNpb24oMywgMTQxLCAwKSkpCitB
dXRvSW5zdGFsbC5yZWdpc3RlcihQYWNrYWdlKCdzZXJ2aWNlX2lkZW50aXR5JywgVmVyc2lvbigy
MSwgMSwgMCksIHB5cGlfbmFtZT0nc2VydmljZS1pZGVudGl0eScpKQorQXV0b0luc3RhbGwucmVn
aXN0ZXIoUGFja2FnZSgnc29ydGVkY29udGFpbmVycycsIFZlcnNpb24oMiwgNCwgMCkpKQorQXV0
b0luc3RhbGwucmVnaXN0ZXIoUGFja2FnZSgndG9ybmFkbycsIFZlcnNpb24oNCwgNSwgMykpKQor
QXV0b0luc3RhbGwucmVnaXN0ZXIoUGFja2FnZSgndHdpc3RlZCcsIFZlcnNpb24oMjEsIDIsIDAp
LCBweXBpX25hbWU9J1R3aXN0ZWQnLCBpbXBsaWNpdF9kZXBzPVsKKyAgICBQYWNrYWdlKCdpbmNy
ZW1lbnRhbCcsIFZlcnNpb24oMjEsIDMsIDApKSwKK10pKQogCiBuYW1lID0gJ3Jlc3VsdHNkYnB5
JwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0
c2RicHkvY29udGFpbmVyIGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVz
dWx0c2RicHkvY29udGFpbmVyCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA3MjEwMzVk
YjZjNWFkMDg3MTEyNGZjOGU3N2UyNzliYTY4ODlhMGNiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNk
YnB5L3Jlc3VsdHNkYnB5L2NvbnRhaW5lcgorKysgL2Rldi9udWxsCkBAIC0xLDczICswLDAgQEAK
LSMhL3Vzci9iaW4vZW52IHB5dGhvbjMKLQotIyBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFy
ZSBtZXQ6Ci0jIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAotIyBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAotIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0jIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0j
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSMgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIK
LSMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLQotaW1wb3J0IGFyZ3BhcnNlCi1pbXBvcnQgb3MKLWltcG9ydCBzeXMKLXN5cy5kb250
X3dyaXRlX2J5dGVjb2RlID0gVHJ1ZQotCi1mcm9tIG1vZGVsLmRvY2tlciBpbXBvcnQgRG9ja2Vy
Ci0KLQotZGVmIHN0YXJ0KCk6Ci0gICAgRG9ja2VyLnN0YXJ0KCkKLSAgICBEb2NrZXIuc3RhcnRf
cHJvamVjdChEb2NrZXIuREVGQVVMVF9QUk9KRUNUKQotICAgIHJldHVybiAwCi0KLQotZGVmIHN0
b3AoKToKLSAgICBpZiBub3QgRG9ja2VyLmlzX3J1bm5pbmcoKToKLSAgICAgICAgcHJpbnQoJ0Rv
Y2tlciBpcyBub3QgcnVubmluZycpCi0gICAgICAgIHJldHVybiAxCi0gICAgRG9ja2VyLnN0b3Bf
cHJvamVjdChEb2NrZXIuREVGQVVMVF9QUk9KRUNUKQotICAgIERvY2tlci5zdG9wKCkKLSAgICBy
ZXR1cm4gMAotCi0KLWRlZiByZXN0YXJ0KCk6Ci0gICAgaWYgbm90IERvY2tlci5pc19ydW5uaW5n
KCk6Ci0gICAgICAgIERvY2tlci5zdGFydCgpCi0gICAgRG9ja2VyLnN0b3BfcHJvamVjdChEb2Nr
ZXIuREVGQVVMVF9QUk9KRUNUKQotICAgIERvY2tlci5zdGFydF9wcm9qZWN0KERvY2tlci5ERUZB
VUxUX1BST0pFQ1QpCi0gICAgcmV0dXJuIDAKLQotCi1kZWYgbWFpbigpOgotICAgIHBhcnNlciA9
IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKGRlc2NyaXB0aW9uPSdNYW5hZ2UgcmVzdWx0c2RicHkg
Y29udGFpbmVyIGluc3RhbmNlIGluc2lkZSBEb2NrZXInKQotICAgIHN1YnBhcnNlcnMgPSBwYXJz
ZXIuYWRkX3N1YnBhcnNlcnMoaGVscD0nc3ViLWNvbW1hbmQgaGVscCcpCi0KLSAgICBzdGFydF9w
YXJzZXIgPSBzdWJwYXJzZXJzLmFkZF9wYXJzZXIoJ3N0YXJ0JywgaGVscD0nU3RhcnQgdGhlIGNv
bnRhaW5lciBpbnNpZGUgRG9ja2VyJykKLSAgICBzdGFydF9wYXJzZXIuc2V0X2RlZmF1bHRzKGZ1
bmN0aW9uPXN0YXJ0KQotCi0gICAgc3RhcnRfcGFyc2VyID0gc3VicGFyc2Vycy5hZGRfcGFyc2Vy
KCdzdG9wJywgaGVscD0nU3RvcCB0aGUgY29udGFpbmVyIGluc2lkZSBEb2NrZXInKQotICAgIHN0
YXJ0X3BhcnNlci5zZXRfZGVmYXVsdHMoZnVuY3Rpb249c3RvcCkKLQotICAgIHN0YXJ0X3BhcnNl
ciA9IHN1YnBhcnNlcnMuYWRkX3BhcnNlcigncmVzdGFydCcsIGhlbHA9J1Jlc3RhcnQgdGhlIGNv
bnRhaW5lciBpbnNpZGUgRG9ja2VyJykKLSAgICBzdGFydF9wYXJzZXIuc2V0X2RlZmF1bHRzKGZ1
bmN0aW9uPXJlc3RhcnQpCi0KLSAgICByZXR1cm4gZ2V0YXR0cihwYXJzZXIucGFyc2VfYXJncygp
LCAnZnVuY3Rpb24nLCBsYW1iZGE6IHBhcnNlci5wcmludF9oZWxwKCkpKCkKLQotCi1pZiBfX25h
bWVfXyA9PSAnX19tYWluX18nOgotICAgIHN5cy5leGl0KG1haW4oKSkKZGlmZiAtLWdpdCBhL1Rv
b2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2V4YW1wbGUvbWFp
bi5weSBiL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2V4
YW1wbGUvbWFpbi5weQppbmRleCA3M2NkZDk5ZjExMTdkMmM5YWJhODNiZGU2OGU3Y2NkYWNhYjlk
OTFjLi5hZDY1YjNmODBlYTNmZWJmMGZmNjcxYzVkNDI2MWJkMjQ4ZjcwZDBjIDEwMDY0NAotLS0g
YS9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9leGFtcGxl
L21haW4ucHkKKysrIGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0
c2RicHkvZXhhbXBsZS9tYWluLnB5CkBAIC0yMyw3ICsyMyw3IEBACiBpbXBvcnQgaGFzaGxpYgog
aW1wb3J0IGpzb24KIAotZnJvbSBleGFtcGxlLmVudmlyb25tZW50IGltcG9ydCBFbnZpcm9ubWVu
dCwgTW9kZWxGcm9tRW52aXJvbm1lbnQKK2Zyb20gcmVzdWx0c2RicHkuZXhhbXBsZS5lbnZpcm9u
bWVudCBpbXBvcnQgRW52aXJvbm1lbnQsIE1vZGVsRnJvbUVudmlyb25tZW50CiBmcm9tIGZsYXNr
IGltcG9ydCBhYm9ydCwgRmxhc2ssIHJlcXVlc3QKIGZyb20gcmVzdWx0c2RicHkuY29udHJvbGxl
ci5hcGlfcm91dGVzIGltcG9ydCBBUElSb3V0ZXMKIGZyb20gcmVzdWx0c2RicHkudmlldy52aWV3
X3JvdXRlcyBpbXBvcnQgVmlld1JvdXRlcwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9saWJy
YXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvcnVuIGIvVG9vbHMvU2NyaXB0cy9saWJyYXJp
ZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvcnVuCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQpp
bmRleCA0YzNiMmM1YjkxZmY3ZmRmOTI5MTgzMzIxOWQ1OTZlMzFmYzRmOWVjLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xzL1NjcmlwdHMvbGlicmFy
aWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3J1bgorKysgL2Rldi9udWxsCkBAIC0xLDE3MyAr
MCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24zCi0KLSMgQ29weXJpZ2h0IChDKSAyMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotIyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0j
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQK
LSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotIyBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUgotIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0jIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSCi0jIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0jIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0j
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0KLWltcG9ydCBhcmdwYXJzZQotaW1wb3J0IG9zCi1pbXBvcnQgc3VicHJv
Y2VzcwotaW1wb3J0IHN5cwotaW1wb3J0IHRpbWUKLWltcG9ydCB0aHJlYWRpbmcKLQotc3lzLmRv
bnRfd3JpdGVfYnl0ZWNvZGUgPSBUcnVlCi0KLWZyb20gbW9kZWwuZG9ja2VyIGltcG9ydCBEb2Nr
ZXIKLWZyb20gbXVsdGlwcm9jZXNzaW5nIGltcG9ydCBQcm9jZXNzCi1mcm9tIHJlZGlzIGltcG9y
dCBTdHJpY3RSZWRpcwotCi0KLWNsYXNzIERvY2tlcklmTmVlZGVkQ29udGV4dChvYmplY3QpOgot
Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGFyZ3MpOgotICAgICAgICBzZWxmLmRvY2tlciA9IERv
Y2tlci5pbnN0YW5jZSgpIGlmICdsb2NhbGhvc3QnIGluIFthcmdzLmNhc3NhbmRyYV9zZXJ2ZXIs
IGFyZ3MucmVkaXNfc2VydmVyXSBlbHNlIE5vbmUKLQotICAgIGRlZiBfX2VudGVyX18oc2VsZik6
Ci0gICAgICAgIGlmIHNlbGYuZG9ja2VyOgotICAgICAgICAgICAgc2VsZi5kb2NrZXIuX19lbnRl
cl9fKCkKLQotICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgotICAgICAg
ICBpZiBzZWxmLmRvY2tlcjoKLSAgICAgICAgICAgIHNlbGYuZG9ja2VyLl9fZXhpdF9fKCphcmdz
LCAqKmt3YXJncykKLQotCi1kZWYgaGFzX2d1bmljb3JuKCk6Ci0gICAgcmV0dXJuIG5vdCBzdWJw
cm9jZXNzLnJ1bihbJ3B5dGhvbjMnLCAnL3Vzci9sb2NhbC9iaW4vZ3VuaWNvcm5zJywgJy0tdmVy
c2lvbiddLCBjYXB0dXJlX291dHB1dD1UcnVlKS5yZXR1cm5jb2RlCi0KLQotZGVmIHBhcnNlX2Fy
Z3VtZW50cygpOgotICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKGRlc2NyaXB0
aW9uPSdSdW4gYSBzaW1wbGUgaW5zdGFuY2Ugb2YgdGhlIHJlc3VsdHMgZGF0YWJhc2UgZm9yIGxv
Y2FsIGRldmVsb3BtZW50JykKLSAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAotICAgICAgICAnLS1s
b2NhbC1jYXNzYW5kcmEnLCBoZWxwPSdVc2UgYSBsb2NhbCBDYXNzYW5kcmEgaW5zdGFuY2UnLAot
ICAgICAgICBkZXN0PSdjYXNzYW5kcmFfc2VydmVyJywgYWN0aW9uPSdzdG9yZV9jb25zdCcsIGNv
bnN0PSdsb2NhbGhvc3QnLAotICAgICkKLSAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAotICAgICAg
ICAnLS1tb2NrLWNhc3NhbmRyYScsIGhlbHA9J1VzZSBhIG1vY2sgQ2Fzc2FuZHJhIGluc3RhbmNl
JywKLSAgICAgICAgZGVzdD0nY2Fzc2FuZHJhX3NlcnZlcicsIGFjdGlvbj0nc3RvcmVfY29uc3Qn
LCBjb25zdD0nbW9jaycsCi0gICAgKQotICAgIHBhcnNlci5zZXRfZGVmYXVsdHMoY2Fzc2FuZHJh
X3NlcnZlcj0nbG9jYWxob3N0JyBpZiBEb2NrZXIuaW5zdGFsbGVkKCkgZWxzZSAnbW9jaycpCi0K
LSAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAotICAgICAgICAnLS1sb2NhbC1yZWRpcycsIGhlbHA9
J1VzZSBhIGxvY2FsIFJlZGlzIGluc3RhbmNlJywKLSAgICAgICAgZGVzdD0ncmVkaXNfc2VydmVy
JywgYWN0aW9uPSdzdG9yZV9jb25zdCcsIGNvbnN0PSdsb2NhbGhvc3QnLAotICAgICkKLSAgICBw
YXJzZXIuYWRkX2FyZ3VtZW50KAotICAgICAgICAnLS1tb2NrLXJlZGlzJywgaGVscD0nVXNlIGEg
bW9jayBSZWRpcyBpbnN0YW5jZScsCi0gICAgICAgIGRlc3Q9J3JlZGlzX3NlcnZlcicsIGFjdGlv
bj0nc3RvcmVfY29uc3QnLCBjb25zdD0nbW9jaycsCi0gICAgKQotICAgIHBhcnNlci5zZXRfZGVm
YXVsdHMocmVkaXNfc2VydmVyPSdsb2NhbGhvc3QnIGlmIERvY2tlci5pbnN0YWxsZWQoKSBlbHNl
ICdtb2NrJykKLQotICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCi0gICAgICAgICctLWRyb3Ata2V5
c3BhY2UnLCBoZWxwPSdEcm9wIHRoZSBleGlzdGluZyBrZXlzcGFjZSBiZWZvcmUgcnVubmluZyB0
aGUgcHJvZ3JhbScsCi0gICAgICAgIGRlc3Q9J2Ryb3Bfa2V5c3BhY2UnLCBhY3Rpb249J3N0b3Jl
X3RydWUnLAotICAgICkKLSAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAotICAgICAgICAnLS1uby1k
cm9wLWtleXNwYWNlJywgaGVscD0nRG8gTk9UIGRyb3AgdGhlIGV4aXN0aW5nIGtleXNwYWNlIGJl
Zm9yZSBydW5uaW5nIHRoZSBwcm9ncmFtJywKLSAgICAgICAgZGVzdD0nZHJvcF9rZXlzcGFjZScs
IGFjdGlvbj0nc3RvcmVfZmFsc2UnLAotICAgICkKLSAgICBwYXJzZXIuc2V0X2RlZmF1bHRzKGRy
b3Bfa2V5c3BhY2U9RmFsc2UpCi0KLSAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAotICAgICAgICAn
LS1jbGVhci1yZWRpcycsIGhlbHA9J0NsZWFyIHJlZGlzIGJlZm9yZSBydW5uaW5nIHRoZSBhcHBs
aWNhdGlvbicsCi0gICAgICAgIGRlc3Q9J2NsZWFyX3JlZGlzJywgYWN0aW9uPSdzdG9yZV90cnVl
JywKLSAgICApCi0gICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKLSAgICAgICAgJy0tbm8tY2xlYXIt
cmVkaXMnLAotICAgICAgICBoZWxwPSdEbyBub3QgY2xlYXIgcmVkaXMgYmVmb3JlIHJ1bm5pbmcg
dGhlIGFwcGxpY2F0aW9uJywKLSAgICAgICAgZGVzdD0nY2xlYXJfcmVkaXMnLCBhY3Rpb249J3N0
b3JlX2ZhbHNlJywKLSAgICApCi0gICAgcGFyc2VyLnNldF9kZWZhdWx0cyhjbGVhcl9yZWRpcz1U
cnVlKQotCi0gICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKLSAgICAgICAgJy0tZ3VuaWNvcm4nLCBo
ZWxwPSdVc2UgdGhlIGd1bmljb3JuIHdlYnNlcnZlcicsCi0gICAgICAgIGRlc3Q9J2d1bmljb3Ju
JywgYWN0aW9uPSdzdG9yZV90cnVlJywKLSAgICApCi0gICAgcGFyc2VyLmFkZF9hcmd1bWVudCgK
LSAgICAgICAgJy0tbm8tZ3VuaWNvcm4nLAotICAgICAgICBoZWxwPSdEbyBub3QgdXNlIHRoZSBn
dW5pY29ybiB3ZWJzZXJ2ZXInLAotICAgICAgICBkZXN0PSdndW5pY29ybicsIGFjdGlvbj0nc3Rv
cmVfZmFsc2UnLAotICAgICkKLSAgICBwYXJzZXIuc2V0X2RlZmF1bHRzKGd1bmljb3JuPWhhc19n
dW5pY29ybigpKQotCi0gICAgcmV0dXJuIHBhcnNlci5wYXJzZV9hcmdzKCkKLQotCi1kZWYgZG9f
d29yaygpOgotICAgIGZyb20gZXhhbXBsZS53b3JrZXIgaW1wb3J0IG1haW4KLSAgICBtYWluKCkK
LQotCi1kZWYgd2ViX2FwcCgpOgotICAgIGZyb20gZXhhbXBsZS5tYWluIGltcG9ydCBtYWluCi0g
ICAgcmV0dXJuIG1haW4oKQotCi0KLWRlZiBndW5pY29ybigpOgotICAgIGlmIG5vdCBoYXNfZ3Vu
aWNvcm4oKToKLSAgICAgICAgcHJpbnQoJ2d1bmljb3JuIGlzIG5vdCBpbnN0YWxsZWQsIHBsZWFz
ZSBydW4gYHBpcDMgaW5zdGFsbCBndW5pY29ybmAnKQotICAgICAgICByZXR1cm4gMQotCi0gICAg
IyBTbGlnaHQgZGVsYXkgc28gdGhhdCB0aGUgd29ya2VyIGlzIHN0YXJ0ZWQgYmVmb3JlIHRoZSB3
ZWJzZXJ2ZXIKLSAgICB0aW1lLnNsZWVwKDIpCi0gICAgcmV0dXJuIHN1YnByb2Nlc3MucnVuKFsK
LSAgICAgICAgJ3B5dGhvbjMnLCAnL3Vzci9sb2NhbC9iaW4vZ3VuaWNvcm4nLAotICAgICAgICAn
ZXhhbXBsZS5tYWluOmFwcCcsCi0gICAgICAgICctLWxvZy1maWxlPS0nLCAnLS1yZWxvYWQnLAot
ICAgIF0pLnJldHVybmNvZGUKLQotCi1kZWYgbWFpbigpOgotICAgIGFyZ3MgPSBwYXJzZV9hcmd1
bWVudHMoKQotICAgIHdpdGggRG9ja2VySWZOZWVkZWRDb250ZXh0KGFyZ3MpOgotICAgICAgICBv
cy5lbnZpcm9uWydDQVNTQU5EUkFfU0VSVkVSJ10gPSBhcmdzLmNhc3NhbmRyYV9zZXJ2ZXIKLSAg
ICAgICAgb3MuZW52aXJvblsnUkVESVNfSE9TVCddID0gYXJncy5yZWRpc19zZXJ2ZXIKLSAgICAg
ICAgb3MuZW52aXJvblsnRFJPUF9LRVlTUEFDRSddID0gJzEnIGlmIGFyZ3MuZHJvcF9rZXlzcGFj
ZSBlbHNlICcwJwotICAgICAgICBvcy5lbnZpcm9uWydDUkVBVEVfS0VZU1BBQ0UnXSA9ICcxJyAg
IyBVbmNvbmRpdGlvbmFsbHkgY3JlYXRlIGtleXNwYWNlIGZvciB0ZXN0aW5nCi0KLSAgICAgICAg
aWYgYXJncy5jbGVhcl9yZWRpcyBhbmQgYXJncy5yZWRpc19zZXJ2ZXIgIT0gJ21vY2snOgotICAg
ICAgICAgICAgU3RyaWN0UmVkaXMoaG9zdD1hcmdzLnJlZGlzX3NlcnZlcikuZmx1c2hkYigpCi0K
LSAgICAgICAgaWYgYXJncy5ndW5pY29ybjoKLSAgICAgICAgICAgIGlmICdtb2NrJyBpbiBbYXJn
cy5yZWRpc19zZXJ2ZXIsIGFyZ3MuY2Fzc2FuZHJhX3NlcnZlcl06Ci0gICAgICAgICAgICAgICAg
cmFpc2UgUnVudGltZUVycm9yKCdDYW5ub3QgcnVuIHdpdGggZ3VuaWNvcm4gYW5kIG1vY2sgZGF0
YWJhc2VzLCBhc3luY2hyb25vdXMgd29ya2VycyByZWx5IG9uIHRoZSByZWFsIGRhdGFiYXNlcycp
Ci0KLSAgICAgICAgZnJvbSBleGFtcGxlLmVudmlyb25tZW50IGltcG9ydCBtYWluIGFzIGVudmly
b25tZW50X21haW4KLSAgICAgICAgZW52aXJvbm1lbnRfbWFpbigpCi0KLSAgICAgICAgaWYgbm90
IGFyZ3MuZ3VuaWNvcm46Ci0gICAgICAgICAgICB3b3JrZXIgPSB0aHJlYWRpbmcuVGhyZWFkKHRh
cmdldD1kb193b3JrKQotICAgICAgICAgICAgd29ya2VyLmRhZW1vbiA9IFRydWUKLSAgICAgICAg
ICAgIHdvcmtlci5zdGFydCgpCi0KLSAgICAgICAgICAgIHJldHVybiB3ZWJfYXBwKCkKLQotICAg
ICAgICB3b3JrZXIgPSBQcm9jZXNzKHRhcmdldD1kb193b3JrKQotICAgICAgICB3b3JrZXIuc3Rh
cnQoKQotCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHJldHVybiBndW5pY29ybigpCi0gICAg
ICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICB3b3JrZXIudGVybWluYXRlKCkKLSAgICAgICAgICAg
IHdvcmtlci5qb2luKCkKLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICBzeXMuZXhp
dChtYWluKCkpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJw
eS9yZXN1bHRzZGJweS92aWV3L3ZpZXdfcm91dGVzX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0
cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy92aWV3X3JvdXRlc191bml0
dGVzdC5weQppbmRleCA0YjBiZDc3NTgyZmE0N2VmMjllZTA3YjY2MzVlMzg1ZDc5ZGY2YmI0Li42
NjM4NTAzOTI1YjJjN2RjNjdmNzEwYmEyY2NkNzBhMWZiZGYzMTc4IDEwMDY0NAotLS0gYS9Ub29s
cy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS92aWV3L3ZpZXdfcm91
dGVzX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5
L3Jlc3VsdHNkYnB5L3ZpZXcvdmlld19yb3V0ZXNfdW5pdHRlc3QucHkKQEAgLTIyLDkgKzIyLDkg
QEAKIAogaW1wb3J0IHRpbWUKIAotZnJvbSBjb250cm9sbGVyLmFwaV9yb3V0ZXMgaW1wb3J0IEFQ
SVJvdXRlcwogZnJvbSBmYWtlcmVkaXMgaW1wb3J0IEZha2VTdHJpY3RSZWRpcwogZnJvbSByZWRp
cyBpbXBvcnQgU3RyaWN0UmVkaXMKK2Zyb20gcmVzdWx0c2RicHkuY29udHJvbGxlci5hcGlfcm91
dGVzIGltcG9ydCBBUElSb3V0ZXMKIGZyb20gcmVzdWx0c2RicHkuZmxhc2tfc3VwcG9ydC5mbGFz
a190ZXN0Y2FzZSBpbXBvcnQgRmxhc2tUZXN0Q2FzZQogZnJvbSByZXN1bHRzZGJweS5tb2RlbC5j
YXNzYW5kcmFfY29udGV4dCBpbXBvcnQgQ2Fzc2FuZHJhQ29udGV4dAogZnJvbSByZXN1bHRzZGJw
eS5tb2RlbC5tb2NrX2Nhc3NhbmRyYV9jb250ZXh0IGltcG9ydCBNb2NrQ2Fzc2FuZHJhQ29udGV4
dApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcnVuIGIv
VG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcnVuCm5ldyBmaWxlIG1vZGUgMTAw
NzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQwNWMw
MjI4NTQyMzJmZDQyZTgwYjY0NTBlMGEyMjU1OWY2MDBjNmUKLS0tIC9kZXYvbnVsbAorKysgYi9U
b29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9ydW4KQEAgLTAsMCArMSwxODIgQEAK
KyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKworIyBDb3B5cmlnaHQgKEMpIDIwMjAsIDIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAor
IyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMg
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKworaW1wb3J0IGFyZ3BhcnNlCitpbXBvcnQgb3MKK2ltcG9ydCBzdWJwcm9j
ZXNzCitpbXBvcnQgc3lzCitpbXBvcnQgdGltZQoraW1wb3J0IHRocmVhZGluZworCitpbXBvcnQg
cmVzdWx0c2RicHkKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBBdXRvSW5zdGFsbAorCitsaWJy
YXJpZXMgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5hYnNwYXRoKG9zLnBhdGguZGlybmFtZShvcy5w
YXRoLmRpcm5hbWUob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSkpKSwgJ2xpYnJhcmllcycpCitp
ZiBzeXMucGxhdGZvcm0gPT0gJ2Rhcndpbic6CisgICAgaXNfcm9vdCA9IG5vdCBvcy5nZXR1aWQo
KQorICAgIGRvZXNfb3duX2xpYnJhcmllcyA9IG9zLnN0YXQobGlicmFyaWVzKS5zdF91aWQgPT0g
b3MuZ2V0dWlkKCkKKyAgICBpZiAoaXNfcm9vdCBvciBub3QgZG9lc19vd25fbGlicmFyaWVzKToK
KyAgICAgICAgbGlicmFyaWVzID0gb3MucGF0aC5leHBhbmR1c2VyKCd+L0xpYnJhcnkvd2Via2l0
cHknKQorQXV0b0luc3RhbGwuc2V0X2RpcmVjdG9yeShvcy5wYXRoLmpvaW4obGlicmFyaWVzLCAn
YXV0b2luc3RhbGxlZCcsICdweXRob24te30nLmZvcm1hdChzeXMudmVyc2lvbl9pbmZvWzBdKSkp
CisKK2Zyb20gcmVzdWx0c2RicHkubW9kZWwuZG9ja2VyIGltcG9ydCBEb2NrZXIKK2Zyb20gbXVs
dGlwcm9jZXNzaW5nIGltcG9ydCBQcm9jZXNzCitmcm9tIHJlZGlzIGltcG9ydCBTdHJpY3RSZWRp
cworCisKK2NsYXNzIERvY2tlcklmTmVlZGVkQ29udGV4dChvYmplY3QpOgorCisgICAgZGVmIF9f
aW5pdF9fKHNlbGYsIGFyZ3MpOgorICAgICAgICBzZWxmLmRvY2tlciA9IERvY2tlci5pbnN0YW5j
ZSgpIGlmICdsb2NhbGhvc3QnIGluIFthcmdzLmNhc3NhbmRyYV9zZXJ2ZXIsIGFyZ3MucmVkaXNf
c2VydmVyXSBlbHNlIE5vbmUKKworICAgIGRlZiBfX2VudGVyX18oc2VsZik6CisgICAgICAgIGlm
IHNlbGYuZG9ja2VyOgorICAgICAgICAgICAgc2VsZi5kb2NrZXIuX19lbnRlcl9fKCkKKworICAg
IGRlZiBfX2V4aXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICBpZiBzZWxmLmRv
Y2tlcjoKKyAgICAgICAgICAgIHNlbGYuZG9ja2VyLl9fZXhpdF9fKCphcmdzLCAqKmt3YXJncykK
KworCitkZWYgaGFzX2d1bmljb3JuKCk6CisgICAgcmV0dXJuIG5vdCBzdWJwcm9jZXNzLnJ1bihb
J3B5dGhvbjMnLCAnL3Vzci9sb2NhbC9iaW4vZ3VuaWNvcm5zJywgJy0tdmVyc2lvbiddLCBjYXB0
dXJlX291dHB1dD1UcnVlKS5yZXR1cm5jb2RlCisKKworZGVmIHBhcnNlX2FyZ3VtZW50cygpOgor
ICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKGRlc2NyaXB0aW9uPSdSdW4gYSBz
aW1wbGUgaW5zdGFuY2Ugb2YgdGhlIHJlc3VsdHMgZGF0YWJhc2UgZm9yIGxvY2FsIGRldmVsb3Bt
ZW50JykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICAgICAnLS1sb2NhbC1jYXNzYW5k
cmEnLCBoZWxwPSdVc2UgYSBsb2NhbCBDYXNzYW5kcmEgaW5zdGFuY2UnLAorICAgICAgICBkZXN0
PSdjYXNzYW5kcmFfc2VydmVyJywgYWN0aW9uPSdzdG9yZV9jb25zdCcsIGNvbnN0PSdsb2NhbGhv
c3QnLAorICAgICkKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICAgICAnLS1tb2NrLWNh
c3NhbmRyYScsIGhlbHA9J1VzZSBhIG1vY2sgQ2Fzc2FuZHJhIGluc3RhbmNlJywKKyAgICAgICAg
ZGVzdD0nY2Fzc2FuZHJhX3NlcnZlcicsIGFjdGlvbj0nc3RvcmVfY29uc3QnLCBjb25zdD0nbW9j
aycsCisgICAgKQorICAgIHBhcnNlci5zZXRfZGVmYXVsdHMoY2Fzc2FuZHJhX3NlcnZlcj0nbG9j
YWxob3N0JyBpZiBEb2NrZXIuaW5zdGFsbGVkKCkgZWxzZSAnbW9jaycpCisKKyAgICBwYXJzZXIu
YWRkX2FyZ3VtZW50KAorICAgICAgICAnLS1sb2NhbC1yZWRpcycsIGhlbHA9J1VzZSBhIGxvY2Fs
IFJlZGlzIGluc3RhbmNlJywKKyAgICAgICAgZGVzdD0ncmVkaXNfc2VydmVyJywgYWN0aW9uPSdz
dG9yZV9jb25zdCcsIGNvbnN0PSdsb2NhbGhvc3QnLAorICAgICkKKyAgICBwYXJzZXIuYWRkX2Fy
Z3VtZW50KAorICAgICAgICAnLS1tb2NrLXJlZGlzJywgaGVscD0nVXNlIGEgbW9jayBSZWRpcyBp
bnN0YW5jZScsCisgICAgICAgIGRlc3Q9J3JlZGlzX3NlcnZlcicsIGFjdGlvbj0nc3RvcmVfY29u
c3QnLCBjb25zdD0nbW9jaycsCisgICAgKQorICAgIHBhcnNlci5zZXRfZGVmYXVsdHMocmVkaXNf
c2VydmVyPSdsb2NhbGhvc3QnIGlmIERvY2tlci5pbnN0YWxsZWQoKSBlbHNlICdtb2NrJykKKwor
ICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCisgICAgICAgICctLWRyb3Ata2V5c3BhY2UnLCBoZWxw
PSdEcm9wIHRoZSBleGlzdGluZyBrZXlzcGFjZSBiZWZvcmUgcnVubmluZyB0aGUgcHJvZ3JhbScs
CisgICAgICAgIGRlc3Q9J2Ryb3Bfa2V5c3BhY2UnLCBhY3Rpb249J3N0b3JlX3RydWUnLAorICAg
ICkKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICAgICAnLS1uby1kcm9wLWtleXNwYWNl
JywgaGVscD0nRG8gTk9UIGRyb3AgdGhlIGV4aXN0aW5nIGtleXNwYWNlIGJlZm9yZSBydW5uaW5n
IHRoZSBwcm9ncmFtJywKKyAgICAgICAgZGVzdD0nZHJvcF9rZXlzcGFjZScsIGFjdGlvbj0nc3Rv
cmVfZmFsc2UnLAorICAgICkKKyAgICBwYXJzZXIuc2V0X2RlZmF1bHRzKGRyb3Bfa2V5c3BhY2U9
RmFsc2UpCisKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICAgICAnLS1jbGVhci1yZWRp
cycsIGhlbHA9J0NsZWFyIHJlZGlzIGJlZm9yZSBydW5uaW5nIHRoZSBhcHBsaWNhdGlvbicsCisg
ICAgICAgIGRlc3Q9J2NsZWFyX3JlZGlzJywgYWN0aW9uPSdzdG9yZV90cnVlJywKKyAgICApCisg
ICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKKyAgICAgICAgJy0tbm8tY2xlYXItcmVkaXMnLAorICAg
ICAgICBoZWxwPSdEbyBub3QgY2xlYXIgcmVkaXMgYmVmb3JlIHJ1bm5pbmcgdGhlIGFwcGxpY2F0
aW9uJywKKyAgICAgICAgZGVzdD0nY2xlYXJfcmVkaXMnLCBhY3Rpb249J3N0b3JlX2ZhbHNlJywK
KyAgICApCisgICAgcGFyc2VyLnNldF9kZWZhdWx0cyhjbGVhcl9yZWRpcz1UcnVlKQorCisgICAg
cGFyc2VyLmFkZF9hcmd1bWVudCgKKyAgICAgICAgJy0tZ3VuaWNvcm4nLCBoZWxwPSdVc2UgdGhl
IGd1bmljb3JuIHdlYnNlcnZlcicsCisgICAgICAgIGRlc3Q9J2d1bmljb3JuJywgYWN0aW9uPSdz
dG9yZV90cnVlJywKKyAgICApCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKKyAgICAgICAgJy0t
bm8tZ3VuaWNvcm4nLAorICAgICAgICBoZWxwPSdEbyBub3QgdXNlIHRoZSBndW5pY29ybiB3ZWJz
ZXJ2ZXInLAorICAgICAgICBkZXN0PSdndW5pY29ybicsIGFjdGlvbj0nc3RvcmVfZmFsc2UnLAor
ICAgICkKKyAgICBwYXJzZXIuc2V0X2RlZmF1bHRzKGd1bmljb3JuPWhhc19ndW5pY29ybigpKQor
CisgICAgcmV0dXJuIHBhcnNlci5wYXJzZV9hcmdzKCkKKworCitkZWYgZG9fd29yaygpOgorICAg
IGZyb20gcmVzdWx0c2RicHkuZXhhbXBsZS53b3JrZXIgaW1wb3J0IG1haW4KKyAgICBtYWluKCkK
KworCitkZWYgd2ViX2FwcCgpOgorICAgIGZyb20gcmVzdWx0c2RicHkuZXhhbXBsZS5tYWluIGlt
cG9ydCBtYWluCisgICAgcmV0dXJuIG1haW4oKQorCisKK2RlZiBndW5pY29ybigpOgorICAgIGlm
IG5vdCBoYXNfZ3VuaWNvcm4oKToKKyAgICAgICAgcHJpbnQoJ2d1bmljb3JuIGlzIG5vdCBpbnN0
YWxsZWQsIHBsZWFzZSBydW4gYHBpcDMgaW5zdGFsbCBndW5pY29ybmAnKQorICAgICAgICByZXR1
cm4gMQorCisgICAgIyBTbGlnaHQgZGVsYXkgc28gdGhhdCB0aGUgd29ya2VyIGlzIHN0YXJ0ZWQg
YmVmb3JlIHRoZSB3ZWJzZXJ2ZXIKKyAgICB0aW1lLnNsZWVwKDIpCisgICAgcmV0dXJuIHN1YnBy
b2Nlc3MucnVuKFsKKyAgICAgICAgJ3B5dGhvbjMnLCAnL3Vzci9sb2NhbC9iaW4vZ3VuaWNvcm4n
LAorICAgICAgICAnZXhhbXBsZS5tYWluOmFwcCcsCisgICAgICAgICctLWxvZy1maWxlPS0nLCAn
LS1yZWxvYWQnLAorICAgIF0pLnJldHVybmNvZGUKKworCitkZWYgbWFpbigpOgorICAgIGFyZ3Mg
PSBwYXJzZV9hcmd1bWVudHMoKQorICAgIHdpdGggRG9ja2VySWZOZWVkZWRDb250ZXh0KGFyZ3Mp
OgorICAgICAgICBvcy5lbnZpcm9uWydDQVNTQU5EUkFfU0VSVkVSJ10gPSBhcmdzLmNhc3NhbmRy
YV9zZXJ2ZXIKKyAgICAgICAgb3MuZW52aXJvblsnUkVESVNfSE9TVCddID0gYXJncy5yZWRpc19z
ZXJ2ZXIKKyAgICAgICAgb3MuZW52aXJvblsnRFJPUF9LRVlTUEFDRSddID0gJzEnIGlmIGFyZ3Mu
ZHJvcF9rZXlzcGFjZSBlbHNlICcwJworICAgICAgICBvcy5lbnZpcm9uWydDUkVBVEVfS0VZU1BB
Q0UnXSA9ICcxJyAgIyBVbmNvbmRpdGlvbmFsbHkgY3JlYXRlIGtleXNwYWNlIGZvciB0ZXN0aW5n
CisKKyAgICAgICAgaWYgYXJncy5jbGVhcl9yZWRpcyBhbmQgYXJncy5yZWRpc19zZXJ2ZXIgIT0g
J21vY2snOgorICAgICAgICAgICAgU3RyaWN0UmVkaXMoaG9zdD1hcmdzLnJlZGlzX3NlcnZlciku
Zmx1c2hkYigpCisKKyAgICAgICAgaWYgYXJncy5ndW5pY29ybjoKKyAgICAgICAgICAgIGlmICdt
b2NrJyBpbiBbYXJncy5yZWRpc19zZXJ2ZXIsIGFyZ3MuY2Fzc2FuZHJhX3NlcnZlcl06CisgICAg
ICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdDYW5ub3QgcnVuIHdpdGggZ3VuaWNvcm4g
YW5kIG1vY2sgZGF0YWJhc2VzLCBhc3luY2hyb25vdXMgd29ya2VycyByZWx5IG9uIHRoZSByZWFs
IGRhdGFiYXNlcycpCisKKyAgICAgICAgZnJvbSByZXN1bHRzZGJweS5leGFtcGxlLmVudmlyb25t
ZW50IGltcG9ydCBtYWluIGFzIGVudmlyb25tZW50X21haW4KKyAgICAgICAgZW52aXJvbm1lbnRf
bWFpbigpCisKKyAgICAgICAgaWYgbm90IGFyZ3MuZ3VuaWNvcm46CisgICAgICAgICAgICB3b3Jr
ZXIgPSB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1kb193b3JrKQorICAgICAgICAgICAgd29ya2Vy
LmRhZW1vbiA9IFRydWUKKyAgICAgICAgICAgIHdvcmtlci5zdGFydCgpCisKKyAgICAgICAgICAg
IHJldHVybiB3ZWJfYXBwKCkKKworICAgICAgICB3b3JrZXIgPSBQcm9jZXNzKHRhcmdldD1kb193
b3JrKQorICAgICAgICB3b3JrZXIuc3RhcnQoKQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAg
IHJldHVybiBndW5pY29ybigpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICB3b3JrZXIu
dGVybWluYXRlKCkKKyAgICAgICAgICAgIHdvcmtlci5qb2luKCkKKworaWYgX19uYW1lX18gPT0g
J19fbWFpbl9fJzoKKyAgICBzeXMuZXhpdChtYWluKCkpCmRpZmYgLS1naXQgYS9Ub29scy9TY3Jp
cHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9ydW4tdGVzdHMgYi9Ub29scy9TY3JpcHRzL2xpYnJh
cmllcy9yZXN1bHRzZGJweS9ydW4tdGVzdHMKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjAwOGI1ZWNhMDgyMmViNjhl
NTNkMjAzN2RmNTJkNjc1MDViZDc5OAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMv
bGlicmFyaWVzL3Jlc3VsdHNkYnB5L3J1bi10ZXN0cwpAQCAtMCwwICsxLDg5IEBACisjIS91c3Iv
YmluL2VudiBweXRob24zCisKKyMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBt
ZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorIyBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKworaW1wb3J0IHN5cworc3lzLmRvbnRfd3JpdGVfYnl0ZWNvZGUgPSBUcnVlCisKK2ltcG9y
dCBhcmdwYXJzZQoraW1wb3J0IG9zCitpbXBvcnQgc3lzCitpbXBvcnQgdW5pdHRlc3QKKworaW1w
b3J0IHJlc3VsdHNkYnB5Citmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgQXV0b0luc3RhbGwKKwor
bGlicmFyaWVzID0gb3MucGF0aC5qb2luKG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmRpcm5hbWUo
b3MucGF0aC5kaXJuYW1lKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykpKSksICdsaWJyYXJpZXMn
KQoraWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nOgorICAgIGlzX3Jvb3QgPSBub3Qgb3MuZ2V0
dWlkKCkKKyAgICBkb2VzX293bl9saWJyYXJpZXMgPSBvcy5zdGF0KGxpYnJhcmllcykuc3RfdWlk
ID09IG9zLmdldHVpZCgpCisgICAgaWYgKGlzX3Jvb3Qgb3Igbm90IGRvZXNfb3duX2xpYnJhcmll
cyk6CisgICAgICAgIGxpYnJhcmllcyA9IG9zLnBhdGguZXhwYW5kdXNlcignfi9MaWJyYXJ5L3dl
YmtpdHB5JykKK0F1dG9JbnN0YWxsLnNldF9kaXJlY3Rvcnkob3MucGF0aC5qb2luKGxpYnJhcmll
cywgJ2F1dG9pbnN0YWxsZWQnLCAncHl0aG9uLXt9Jy5mb3JtYXQoc3lzLnZlcnNpb25faW5mb1sw
XSkpKQorCitmcm9tIGNhc3NhbmRyYS5jcWxlbmdpbmUubWFuYWdlbWVudCBpbXBvcnQgQ1FMRU5H
X0FMTE9XX1NDSEVNQV9NQU5BR0VNRU5UCisKKworZGVmIG1haW4oKToKKyAgICBwYXJzZXIgPSBh
cmdwYXJzZS5Bcmd1bWVudFBhcnNlcihkZXNjcmlwdGlvbj0nUnVuIHVuaXQgdGVzdHMgZm9yIHJl
c3VsdHNkYnB5JykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctdicsICctLXZlcmJvc2UnLAor
ICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9RmFsc2UsIGFjdGlvbj0nc3RvcmVfdHJ1ZScs
CisgICAgICAgICAgICAgICAgICAgICAgaGVscD0nVmVyYm9zZSBvdXRwdXQnKQorICAgIHBhcnNl
ci5hZGRfYXJndW1lbnQoJy0tc3RvcC1vbi1mYWlsJywKKyAgICAgICAgICAgICAgICAgICAgICBk
ZWZhdWx0PUZhbHNlLCBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgICAgICAgICAg
IGhlbHA9J1N0b3Agb24gZmlyc3QgZmFpbCBvciBlcnJvcicpCisgICAgcGFyc2VyLmFkZF9hcmd1
bWVudCgnbW9kdWxlc190b190ZXN0JywgbmFyZ3M9JyonLAorICAgICAgICAgICAgICAgICAgICAg
IGhlbHA9J01vZHVsZXMgdG8gYmUgdGVzdGVkLiBCeSBkZWZhdWx0LCB0aGlzIGlzIHRoZSBkYXRh
YmFzZSwgZmxhc2tfc3VwcG9ydCwgbW9kZWwgYW5kIHZpZXcgbW9kdWxlcycsCisgICAgICAgICAg
ICAgICAgICAgICAgZGVmYXVsdD1bJ2NvbnRyb2xsZXInLCAnZmxhc2tfc3VwcG9ydCcsICdtb2Rl
bCcsICd2aWV3J10pCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLWYnLCAnLS1mYXN0LXRlc3Rz
JywKKyAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PUZhbHNlLCBhY3Rpb249J3N0b3JlX3Ry
dWUnLAorICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J1NvbWUgdGVzdHMgcmVxdWlyZSBhIGRv
Y2tlciBpbnN0YW5jZSBhbmQgYXJlIHNsb3csIG9wdGlvbmFsbHkgc2tpcCB0aGVzZScpCisgICAg
cGFyc2VyLmFkZF9hcmd1bWVudCgnLS1uby13ZWItc2VydmVyJywKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGRlc3Q9J3dlYl9zZXJ2ZXInLCBkZWZhdWx0PVRydWUsIGFjdGlvbj0nc3RvcmVfZmFs
c2UnLAorICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nU29tZSB0ZXN0cyB1c2UgYSBGbGFz
ayB3ZWJzZXJ2ZXIsIG9wdGlvbmFsbHkgc2tpcCB0aGVzZScpCisgICAgcGFyc2VyLmFkZF9hcmd1
bWVudCgnLS1uby1zZWxlbml1bScsCisgICAgICAgICAgICAgICAgICAgICAgICBkZXN0PSdzZWxl
bml1bScsIGRlZmF1bHQ9VHJ1ZSwgYWN0aW9uPSdzdG9yZV9mYWxzZScsCisgICAgICAgICAgICAg
ICAgICAgICAgICBoZWxwPSdTb21lIHRlc3RzIHVzZSBTZWxlbml1bSB0byB0ZXN0IHRoZSBVSSBv
ZiB0aGUgc2l0ZSwgb3B0aW9uYWxseSBza2lwIHRoZXNlJykKKyAgICBvcHRpb25zID0gcGFyc2Vy
LnBhcnNlX2FyZ3MoKQorCisgICAgb3MuZW52aXJvblsnc2xvd190ZXN0cyddID0gJzAnIGlmIG9w
dGlvbnMuZmFzdF90ZXN0cyBlbHNlICcxJworICAgIG9zLmVudmlyb25bJ3dlYl9zZXJ2ZXInXSA9
ICcxJyBpZiBvcHRpb25zLndlYl9zZXJ2ZXIgZWxzZSAnMCcKKyAgICBvcy5lbnZpcm9uWydzZWxl
bml1bSddID0gJzEnIGlmIG9wdGlvbnMuc2VsZW5pdW0gZWxzZSAnMCcKKyAgICBvcy5lbnZpcm9u
W0NRTEVOR19BTExPV19TQ0hFTUFfTUFOQUdFTUVOVF0gPSAnMScKKworICAgIHJvb3QgPSBvcy5w
YXRoLmRpcm5hbWUob3MucGF0aC5hYnNwYXRoKF9fZmlsZV9fKSkKKworICAgIHN1aXRlID0gdW5p
dHRlc3QuVGVzdFN1aXRlKCkKKyAgICBmb3IgbW9kdWxlX25hbWUgaW4gb3B0aW9ucy5tb2R1bGVz
X3RvX3Rlc3Q6CisgICAgICAgIG1vZHVsZV9zdWl0ZSA9IHVuaXR0ZXN0LmRlZmF1bHRUZXN0TG9h
ZGVyLmRpc2NvdmVyKG9zLnBhdGguam9pbihyb290LCAncmVzdWx0c2RicHknLCBtb2R1bGVfbmFt
ZS5yZXBsYWNlKCcuJywgJy8nKSksIHBhdHRlcm49Jyp1bml0dGVzdC5weScsIHRvcF9sZXZlbF9k
aXI9b3MucGF0aC5qb2luKHJvb3QpKQorICAgICAgICBmb3IgdHN0IGluIG1vZHVsZV9zdWl0ZSBp
ZiBtb2R1bGVfc3VpdGUgZWxzZSBbXToKKyAgICAgICAgICAgIHN1aXRlLmFkZFRlc3QodHN0KQor
CisgICAgaWYgc3VpdGUuY291bnRUZXN0Q2FzZXMoKSA9PSAwOgorICAgICAgICByYWlzZSBSdW50
aW1lRXJyb3IoJ05vIHRlc3RzIG1hdGNoaW5nLi4uJykKKworICAgIHJlc3VsdCA9IHVuaXR0ZXN0
LlRleHRUZXN0UnVubmVyKHZlcmJvc2l0eT0yIGlmIG9wdGlvbnMudmVyYm9zZSBlbHNlIDEsIGZh
aWxmYXN0PW9wdGlvbnMuc3RvcF9vbl9mYWlsLCBidWZmZXI9bm90IG9wdGlvbnMudmVyYm9zZSku
cnVuKHN1aXRlKQorICAgIHJldHVybiBsZW4ocmVzdWx0LmVycm9ycykKKworaWYgX19uYW1lX18g
PT0gJ19fbWFpbl9fJzoKKyAgICBzeXMuZXhpdChtYWluKCkpCmRpZmYgLS1naXQgYS9Ub29scy9T
Y3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9zZXR1cC5weSBiL1Rvb2xzL1NjcmlwdHMvbGli
cmFyaWVzL3Jlc3VsdHNkYnB5L3NldHVwLnB5CmluZGV4IDY5ZWQ1Mjk4NzcyZDgwMjllY2Q1ZTA4
YzYzMmJjMGZkYmE4MjM3MmYuLmEyZTQwMjYxZTRjYTg1YTY4Nzc3NjNjNTlmODQwODMxOWM5OGFj
MTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3NldHVw
LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3NldHVwLnB5CkBA
IC0xLDQgKzEsNCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxOS0yMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzAsNyAr
MzAsNyBAQCBkZWYgcmVhZG1lKCk6CiAKIHNldHVwKAogICAgIG5hbWU9J3Jlc3VsdHNkYnB5JywK
LSAgICB2ZXJzaW9uPScyLjAuNScsCisgICAgdmVyc2lvbj0nMy4wLjAnLAogICAgIGRlc2NyaXB0
aW9uPSdMaWJyYXJ5IGZvciB2aXN1YWxpemluZywgcHJvY2Vzc2luZyBhbmQgc3RvcmluZyB0ZXN0
IHJlc3VsdHMuJywKICAgICBsb25nX2Rlc2NyaXB0aW9uPXJlYWRtZSgpLAogICAgIGNsYXNzaWZp
ZXJzPVsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431721</attachid>
            <date>2021-06-17 14:21:50 -0700</date>
            <delta_ts>2021-06-17 17:00:23 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-227096-20210617142149.patch</filename>
            <type>text/plain</type>
            <size>31873</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI3OTAwNykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDIxIEBACisyMDIxLTA2LTE3ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBbcmVzdWx0c2RicHldIEFkb3B0IGF1dG9pbnN0YWxsZXIKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzA5NgorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNzk0MTgwODA+CisKKyAgICAgICAgUnViYmVyLXN0YW1wZWQgYnkgQWFr
YXNoIEphaW4uCisKKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9jb250
YWluZXI6IE1vdmVkIGZyb20gaW5zZGllIGxpYnJhcnkuCisgICAgICAgICogU2NyaXB0cy9saWJy
YXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvX19pbml0X18ucHk6IFJlZ2lzdGVyIHJlcXVp
cmVkIGxpYnJhcmllcy4KKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9y
ZXN1bHRzZGJweS9jb250YWluZXI6IE1vdmVkIHRvIGNvbnRhaW5pbmcgZm9sZGVyLgorICAgICAg
ICAqIFNjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2V4YW1wbGUvbWFp
bi5weToKKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJw
eS9ydW46IE1vdmVkIHRvIGNvbnRhaW5pbmcgZm9sZGVyLgorICAgICAgICAqIFNjcmlwdHMvbGli
cmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcvdmlld19yb3V0ZXNfdW5pdHRlc3Qu
cHk6IFVzZSBzcGVjaWZpYyBpbXBvcnRzCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvcmVz
dWx0c2RicHkvcnVuOiBNb3ZlZCBmcm9tIGluc2RpZSBsaWJyYXJ5LgorICAgICAgICAqIFNjcmlw
dHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3J1bi10ZXN0czogVXNlIGF1dG9pbnN0YWxsZWQgbGli
cmFyaWVzLgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3NldHVwLnB5
OiBCdW1wIHZlcnNpb24uCisKIDIwMjEtMDYtMTcgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxl
LmNvbT4KIAogICAgICAgICBUcnlpbmcgdG8gdGFrZSBlbXB0eSBzbmFwc2hvdHMgb2YgdGhlIHZp
ZXcgc2hvdWxkIG5vdCBjYXVzZSBjcmFzaGVzCkluZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmll
cy9yZXN1bHRzZGJweS9jb250YWluZXIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJy
YXJpZXMvcmVzdWx0c2RicHkvY29udGFpbmVyCShub25leGlzdGVudCkKKysrIFRvb2xzL1Njcmlw
dHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L2NvbnRhaW5lcgkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDgzIEBACisjIS91c3IvYmluL2VudiBweXRob24zCisKKyMgQ29weXJpZ2h0IChDKSAyMDIw
LCAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisj
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCBhcmdwYXJzZQoraW1wb3J0IG9zCitpbXBv
cnQgc3lzCisKK2ltcG9ydCByZXN1bHRzZGJweQorZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IEF1
dG9JbnN0YWxsCisKK2xpYnJhcmllcyA9IG9zLnBhdGguam9pbihvcy5wYXRoLmFic3BhdGgob3Mu
cGF0aC5kaXJuYW1lKG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pKSkp
LCAnbGlicmFyaWVzJykKK2lmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoKKyAgICBpc19yb290
ID0gbm90IG9zLmdldHVpZCgpCisgICAgZG9lc19vd25fbGlicmFyaWVzID0gb3Muc3RhdChsaWJy
YXJpZXMpLnN0X3VpZCA9PSBvcy5nZXR1aWQoKQorICAgIGlmIChpc19yb290IG9yIG5vdCBkb2Vz
X293bl9saWJyYXJpZXMpOgorICAgICAgICBsaWJyYXJpZXMgPSBvcy5wYXRoLmV4cGFuZHVzZXIo
J34vTGlicmFyeS93ZWJraXRweScpCitBdXRvSW5zdGFsbC5zZXRfZGlyZWN0b3J5KG9zLnBhdGgu
am9pbihsaWJyYXJpZXMsICdhdXRvaW5zdGFsbGVkJywgJ3B5dGhvbi17fScuZm9ybWF0KHN5cy52
ZXJzaW9uX2luZm9bMF0pKSkKKworZnJvbSByZXN1bHRzZGJweS5tb2RlbC5kb2NrZXIgaW1wb3J0
IERvY2tlcgorCisKK2RlZiBzdGFydCgpOgorICAgIERvY2tlci5zdGFydCgpCisgICAgRG9ja2Vy
LnN0YXJ0X3Byb2plY3QoRG9ja2VyLkRFRkFVTFRfUFJPSkVDVCkKKyAgICByZXR1cm4gMAorCisK
K2RlZiBzdG9wKCk6CisgICAgaWYgbm90IERvY2tlci5pc19ydW5uaW5nKCk6CisgICAgICAgIHBy
aW50KCdEb2NrZXIgaXMgbm90IHJ1bm5pbmcnKQorICAgICAgICByZXR1cm4gMQorICAgIERvY2tl
ci5zdG9wX3Byb2plY3QoRG9ja2VyLkRFRkFVTFRfUFJPSkVDVCkKKyAgICBEb2NrZXIuc3RvcCgp
CisgICAgcmV0dXJuIDAKKworCitkZWYgcmVzdGFydCgpOgorICAgIGlmIG5vdCBEb2NrZXIuaXNf
cnVubmluZygpOgorICAgICAgICBEb2NrZXIuc3RhcnQoKQorICAgIERvY2tlci5zdG9wX3Byb2pl
Y3QoRG9ja2VyLkRFRkFVTFRfUFJPSkVDVCkKKyAgICBEb2NrZXIuc3RhcnRfcHJvamVjdChEb2Nr
ZXIuREVGQVVMVF9QUk9KRUNUKQorICAgIHJldHVybiAwCisKKworZGVmIG1haW4oKToKKyAgICBw
YXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcihkZXNjcmlwdGlvbj0nTWFuYWdlIHJlc3Vs
dHNkYnB5IGNvbnRhaW5lciBpbnN0YW5jZSBpbnNpZGUgRG9ja2VyJykKKyAgICBzdWJwYXJzZXJz
ID0gcGFyc2VyLmFkZF9zdWJwYXJzZXJzKGhlbHA9J3N1Yi1jb21tYW5kIGhlbHAnKQorCisgICAg
c3RhcnRfcGFyc2VyID0gc3VicGFyc2Vycy5hZGRfcGFyc2VyKCdzdGFydCcsIGhlbHA9J1N0YXJ0
IHRoZSBjb250YWluZXIgaW5zaWRlIERvY2tlcicpCisgICAgc3RhcnRfcGFyc2VyLnNldF9kZWZh
dWx0cyhmdW5jdGlvbj1zdGFydCkKKworICAgIHN0YXJ0X3BhcnNlciA9IHN1YnBhcnNlcnMuYWRk
X3BhcnNlcignc3RvcCcsIGhlbHA9J1N0b3AgdGhlIGNvbnRhaW5lciBpbnNpZGUgRG9ja2VyJykK
KyAgICBzdGFydF9wYXJzZXIuc2V0X2RlZmF1bHRzKGZ1bmN0aW9uPXN0b3ApCisKKyAgICBzdGFy
dF9wYXJzZXIgPSBzdWJwYXJzZXJzLmFkZF9wYXJzZXIoJ3Jlc3RhcnQnLCBoZWxwPSdSZXN0YXJ0
IHRoZSBjb250YWluZXIgaW5zaWRlIERvY2tlcicpCisgICAgc3RhcnRfcGFyc2VyLnNldF9kZWZh
dWx0cyhmdW5jdGlvbj1yZXN0YXJ0KQorCisgICAgcmV0dXJuIGdldGF0dHIocGFyc2VyLnBhcnNl
X2FyZ3MoKSwgJ2Z1bmN0aW9uJywgbGFtYmRhOiBwYXJzZXIucHJpbnRfaGVscCgpKSgpCisKKwor
aWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICBzeXMuZXhpdChtYWluKCkpCgpQcm9wZXJ0
eSBjaGFuZ2VzIG9uOiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9jb250YWlu
ZXIKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fXwpBZGRlZDogc3ZuOmV4ZWN1dGFibGUKIyMgLTAsMCArMSAjIworKgpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmll
cy9yZXN1bHRzZGJweS9ydW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMv
cmVzdWx0c2RicHkvcnVuCShub25leGlzdGVudCkKKysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVz
L3Jlc3VsdHNkYnB5L3J1bgkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE4MiBAQAorIyEvdXNy
L2Jpbi9lbnYgcHl0aG9uMworCisjIENvcHlyaWdodCAoQykgMjAyMCwgMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJl
IG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisjIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMg
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgor
IyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorCitpbXBvcnQgYXJncGFyc2UKK2ltcG9ydCBvcworaW1wb3J0IHN1YnByb2Nlc3MKK2lt
cG9ydCBzeXMKK2ltcG9ydCB0aW1lCitpbXBvcnQgdGhyZWFkaW5nCisKK2ltcG9ydCByZXN1bHRz
ZGJweQorZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IEF1dG9JbnN0YWxsCisKK2xpYnJhcmllcyA9
IG9zLnBhdGguam9pbihvcy5wYXRoLmFic3BhdGgob3MucGF0aC5kaXJuYW1lKG9zLnBhdGguZGly
bmFtZShvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pKSkpLCAnbGlicmFyaWVzJykKK2lmIHN5cy5w
bGF0Zm9ybSA9PSAnZGFyd2luJzoKKyAgICBpc19yb290ID0gbm90IG9zLmdldHVpZCgpCisgICAg
ZG9lc19vd25fbGlicmFyaWVzID0gb3Muc3RhdChsaWJyYXJpZXMpLnN0X3VpZCA9PSBvcy5nZXR1
aWQoKQorICAgIGlmIChpc19yb290IG9yIG5vdCBkb2VzX293bl9saWJyYXJpZXMpOgorICAgICAg
ICBsaWJyYXJpZXMgPSBvcy5wYXRoLmV4cGFuZHVzZXIoJ34vTGlicmFyeS93ZWJraXRweScpCitB
dXRvSW5zdGFsbC5zZXRfZGlyZWN0b3J5KG9zLnBhdGguam9pbihsaWJyYXJpZXMsICdhdXRvaW5z
dGFsbGVkJywgJ3B5dGhvbi17fScuZm9ybWF0KHN5cy52ZXJzaW9uX2luZm9bMF0pKSkKKworZnJv
bSByZXN1bHRzZGJweS5tb2RlbC5kb2NrZXIgaW1wb3J0IERvY2tlcgorZnJvbSBtdWx0aXByb2Nl
c3NpbmcgaW1wb3J0IFByb2Nlc3MKK2Zyb20gcmVkaXMgaW1wb3J0IFN0cmljdFJlZGlzCisKKwor
Y2xhc3MgRG9ja2VySWZOZWVkZWRDb250ZXh0KG9iamVjdCk6CisKKyAgICBkZWYgX19pbml0X18o
c2VsZiwgYXJncyk6CisgICAgICAgIHNlbGYuZG9ja2VyID0gRG9ja2VyLmluc3RhbmNlKCkgaWYg
J2xvY2FsaG9zdCcgaW4gW2FyZ3MuY2Fzc2FuZHJhX3NlcnZlciwgYXJncy5yZWRpc19zZXJ2ZXJd
IGVsc2UgTm9uZQorCisgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgaWYgc2VsZi5k
b2NrZXI6CisgICAgICAgICAgICBzZWxmLmRvY2tlci5fX2VudGVyX18oKQorCisgICAgZGVmIF9f
ZXhpdF9fKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIGlmIHNlbGYuZG9ja2VyOgor
ICAgICAgICAgICAgc2VsZi5kb2NrZXIuX19leGl0X18oKmFyZ3MsICoqa3dhcmdzKQorCisKK2Rl
ZiBoYXNfZ3VuaWNvcm4oKToKKyAgICByZXR1cm4gbm90IHN1YnByb2Nlc3MucnVuKFsncHl0aG9u
MycsICcvdXNyL2xvY2FsL2Jpbi9ndW5pY29ybnMnLCAnLS12ZXJzaW9uJ10sIGNhcHR1cmVfb3V0
cHV0PVRydWUpLnJldHVybmNvZGUKKworCitkZWYgcGFyc2VfYXJndW1lbnRzKCk6CisgICAgcGFy
c2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoZGVzY3JpcHRpb249J1J1biBhIHNpbXBsZSBp
bnN0YW5jZSBvZiB0aGUgcmVzdWx0cyBkYXRhYmFzZSBmb3IgbG9jYWwgZGV2ZWxvcG1lbnQnKQor
ICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCisgICAgICAgICctLWxvY2FsLWNhc3NhbmRyYScsIGhl
bHA9J1VzZSBhIGxvY2FsIENhc3NhbmRyYSBpbnN0YW5jZScsCisgICAgICAgIGRlc3Q9J2Nhc3Nh
bmRyYV9zZXJ2ZXInLCBhY3Rpb249J3N0b3JlX2NvbnN0JywgY29uc3Q9J2xvY2FsaG9zdCcsCisg
ICAgKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCisgICAgICAgICctLW1vY2stY2Fzc2FuZHJh
JywgaGVscD0nVXNlIGEgbW9jayBDYXNzYW5kcmEgaW5zdGFuY2UnLAorICAgICAgICBkZXN0PSdj
YXNzYW5kcmFfc2VydmVyJywgYWN0aW9uPSdzdG9yZV9jb25zdCcsIGNvbnN0PSdtb2NrJywKKyAg
ICApCisgICAgcGFyc2VyLnNldF9kZWZhdWx0cyhjYXNzYW5kcmFfc2VydmVyPSdsb2NhbGhvc3Qn
IGlmIERvY2tlci5pbnN0YWxsZWQoKSBlbHNlICdtb2NrJykKKworICAgIHBhcnNlci5hZGRfYXJn
dW1lbnQoCisgICAgICAgICctLWxvY2FsLXJlZGlzJywgaGVscD0nVXNlIGEgbG9jYWwgUmVkaXMg
aW5zdGFuY2UnLAorICAgICAgICBkZXN0PSdyZWRpc19zZXJ2ZXInLCBhY3Rpb249J3N0b3JlX2Nv
bnN0JywgY29uc3Q9J2xvY2FsaG9zdCcsCisgICAgKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQo
CisgICAgICAgICctLW1vY2stcmVkaXMnLCBoZWxwPSdVc2UgYSBtb2NrIFJlZGlzIGluc3RhbmNl
JywKKyAgICAgICAgZGVzdD0ncmVkaXNfc2VydmVyJywgYWN0aW9uPSdzdG9yZV9jb25zdCcsIGNv
bnN0PSdtb2NrJywKKyAgICApCisgICAgcGFyc2VyLnNldF9kZWZhdWx0cyhyZWRpc19zZXJ2ZXI9
J2xvY2FsaG9zdCcgaWYgRG9ja2VyLmluc3RhbGxlZCgpIGVsc2UgJ21vY2snKQorCisgICAgcGFy
c2VyLmFkZF9hcmd1bWVudCgKKyAgICAgICAgJy0tZHJvcC1rZXlzcGFjZScsIGhlbHA9J0Ryb3Ag
dGhlIGV4aXN0aW5nIGtleXNwYWNlIGJlZm9yZSBydW5uaW5nIHRoZSBwcm9ncmFtJywKKyAgICAg
ICAgZGVzdD0nZHJvcF9rZXlzcGFjZScsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgKQorICAg
IHBhcnNlci5hZGRfYXJndW1lbnQoCisgICAgICAgICctLW5vLWRyb3Ata2V5c3BhY2UnLCBoZWxw
PSdEbyBOT1QgZHJvcCB0aGUgZXhpc3Rpbmcga2V5c3BhY2UgYmVmb3JlIHJ1bm5pbmcgdGhlIHBy
b2dyYW0nLAorICAgICAgICBkZXN0PSdkcm9wX2tleXNwYWNlJywgYWN0aW9uPSdzdG9yZV9mYWxz
ZScsCisgICAgKQorICAgIHBhcnNlci5zZXRfZGVmYXVsdHMoZHJvcF9rZXlzcGFjZT1GYWxzZSkK
KworICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCisgICAgICAgICctLWNsZWFyLXJlZGlzJywgaGVs
cD0nQ2xlYXIgcmVkaXMgYmVmb3JlIHJ1bm5pbmcgdGhlIGFwcGxpY2F0aW9uJywKKyAgICAgICAg
ZGVzdD0nY2xlYXJfcmVkaXMnLCBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICkKKyAgICBwYXJz
ZXIuYWRkX2FyZ3VtZW50KAorICAgICAgICAnLS1uby1jbGVhci1yZWRpcycsCisgICAgICAgIGhl
bHA9J0RvIG5vdCBjbGVhciByZWRpcyBiZWZvcmUgcnVubmluZyB0aGUgYXBwbGljYXRpb24nLAor
ICAgICAgICBkZXN0PSdjbGVhcl9yZWRpcycsIGFjdGlvbj0nc3RvcmVfZmFsc2UnLAorICAgICkK
KyAgICBwYXJzZXIuc2V0X2RlZmF1bHRzKGNsZWFyX3JlZGlzPVRydWUpCisKKyAgICBwYXJzZXIu
YWRkX2FyZ3VtZW50KAorICAgICAgICAnLS1ndW5pY29ybicsIGhlbHA9J1VzZSB0aGUgZ3VuaWNv
cm4gd2Vic2VydmVyJywKKyAgICAgICAgZGVzdD0nZ3VuaWNvcm4nLCBhY3Rpb249J3N0b3JlX3Ry
dWUnLAorICAgICkKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICAgICAnLS1uby1ndW5p
Y29ybicsCisgICAgICAgIGhlbHA9J0RvIG5vdCB1c2UgdGhlIGd1bmljb3JuIHdlYnNlcnZlcics
CisgICAgICAgIGRlc3Q9J2d1bmljb3JuJywgYWN0aW9uPSdzdG9yZV9mYWxzZScsCisgICAgKQor
ICAgIHBhcnNlci5zZXRfZGVmYXVsdHMoZ3VuaWNvcm49aGFzX2d1bmljb3JuKCkpCisKKyAgICBy
ZXR1cm4gcGFyc2VyLnBhcnNlX2FyZ3MoKQorCisKK2RlZiBkb193b3JrKCk6CisgICAgZnJvbSBy
ZXN1bHRzZGJweS5leGFtcGxlLndvcmtlciBpbXBvcnQgbWFpbgorICAgIG1haW4oKQorCisKK2Rl
ZiB3ZWJfYXBwKCk6CisgICAgZnJvbSByZXN1bHRzZGJweS5leGFtcGxlLm1haW4gaW1wb3J0IG1h
aW4KKyAgICByZXR1cm4gbWFpbigpCisKKworZGVmIGd1bmljb3JuKCk6CisgICAgaWYgbm90IGhh
c19ndW5pY29ybigpOgorICAgICAgICBwcmludCgnZ3VuaWNvcm4gaXMgbm90IGluc3RhbGxlZCwg
cGxlYXNlIHJ1biBgcGlwMyBpbnN0YWxsIGd1bmljb3JuYCcpCisgICAgICAgIHJldHVybiAxCisK
KyAgICAjIFNsaWdodCBkZWxheSBzbyB0aGF0IHRoZSB3b3JrZXIgaXMgc3RhcnRlZCBiZWZvcmUg
dGhlIHdlYnNlcnZlcgorICAgIHRpbWUuc2xlZXAoMikKKyAgICByZXR1cm4gc3VicHJvY2Vzcy5y
dW4oWworICAgICAgICAncHl0aG9uMycsICcvdXNyL2xvY2FsL2Jpbi9ndW5pY29ybicsCisgICAg
ICAgICdleGFtcGxlLm1haW46YXBwJywKKyAgICAgICAgJy0tbG9nLWZpbGU9LScsICctLXJlbG9h
ZCcsCisgICAgXSkucmV0dXJuY29kZQorCisKK2RlZiBtYWluKCk6CisgICAgYXJncyA9IHBhcnNl
X2FyZ3VtZW50cygpCisgICAgd2l0aCBEb2NrZXJJZk5lZWRlZENvbnRleHQoYXJncyk6CisgICAg
ICAgIG9zLmVudmlyb25bJ0NBU1NBTkRSQV9TRVJWRVInXSA9IGFyZ3MuY2Fzc2FuZHJhX3NlcnZl
cgorICAgICAgICBvcy5lbnZpcm9uWydSRURJU19IT1NUJ10gPSBhcmdzLnJlZGlzX3NlcnZlcgor
ICAgICAgICBvcy5lbnZpcm9uWydEUk9QX0tFWVNQQUNFJ10gPSAnMScgaWYgYXJncy5kcm9wX2tl
eXNwYWNlIGVsc2UgJzAnCisgICAgICAgIG9zLmVudmlyb25bJ0NSRUFURV9LRVlTUEFDRSddID0g
JzEnICAjIFVuY29uZGl0aW9uYWxseSBjcmVhdGUga2V5c3BhY2UgZm9yIHRlc3RpbmcKKworICAg
ICAgICBpZiBhcmdzLmNsZWFyX3JlZGlzIGFuZCBhcmdzLnJlZGlzX3NlcnZlciAhPSAnbW9jayc6
CisgICAgICAgICAgICBTdHJpY3RSZWRpcyhob3N0PWFyZ3MucmVkaXNfc2VydmVyKS5mbHVzaGRi
KCkKKworICAgICAgICBpZiBhcmdzLmd1bmljb3JuOgorICAgICAgICAgICAgaWYgJ21vY2snIGlu
IFthcmdzLnJlZGlzX3NlcnZlciwgYXJncy5jYXNzYW5kcmFfc2VydmVyXToKKyAgICAgICAgICAg
ICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ0Nhbm5vdCBydW4gd2l0aCBndW5pY29ybiBhbmQgbW9j
ayBkYXRhYmFzZXMsIGFzeW5jaHJvbm91cyB3b3JrZXJzIHJlbHkgb24gdGhlIHJlYWwgZGF0YWJh
c2VzJykKKworICAgICAgICBmcm9tIHJlc3VsdHNkYnB5LmV4YW1wbGUuZW52aXJvbm1lbnQgaW1w
b3J0IG1haW4gYXMgZW52aXJvbm1lbnRfbWFpbgorICAgICAgICBlbnZpcm9ubWVudF9tYWluKCkK
KworICAgICAgICBpZiBub3QgYXJncy5ndW5pY29ybjoKKyAgICAgICAgICAgIHdvcmtlciA9IHRo
cmVhZGluZy5UaHJlYWQodGFyZ2V0PWRvX3dvcmspCisgICAgICAgICAgICB3b3JrZXIuZGFlbW9u
ID0gVHJ1ZQorICAgICAgICAgICAgd29ya2VyLnN0YXJ0KCkKKworICAgICAgICAgICAgcmV0dXJu
IHdlYl9hcHAoKQorCisgICAgICAgIHdvcmtlciA9IFByb2Nlc3ModGFyZ2V0PWRvX3dvcmspCisg
ICAgICAgIHdvcmtlci5zdGFydCgpCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJu
IGd1bmljb3JuKCkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHdvcmtlci50ZXJtaW5h
dGUoKQorICAgICAgICAgICAgd29ya2VyLmpvaW4oKQorCitpZiBfX25hbWVfXyA9PSAnX19tYWlu
X18nOgorICAgIHN5cy5leGl0KG1haW4oKSkKClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL1Nj
cmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3J1bgpfX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZXhl
Y3V0YWJsZQojIyAtMCwwICsxICMjCisqClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkK
SW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3J1bi10ZXN0cwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9ydW4tdGVzdHMJ
KG5vbmV4aXN0ZW50KQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcnVu
LXRlc3RzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODkgQEAKKyMhL3Vzci9iaW4vZW52IHB5
dGhvbjMKKworIyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBv
cnQgc3lzCitzeXMuZG9udF93cml0ZV9ieXRlY29kZSA9IFRydWUKKworaW1wb3J0IGFyZ3BhcnNl
CitpbXBvcnQgb3MKK2ltcG9ydCBzeXMKK2ltcG9ydCB1bml0dGVzdAorCitpbXBvcnQgcmVzdWx0
c2RicHkKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBBdXRvSW5zdGFsbAorCitsaWJyYXJpZXMg
PSBvcy5wYXRoLmpvaW4ob3MucGF0aC5hYnNwYXRoKG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmRp
cm5hbWUob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSkpKSwgJ2xpYnJhcmllcycpCitpZiBzeXMu
cGxhdGZvcm0gPT0gJ2Rhcndpbic6CisgICAgaXNfcm9vdCA9IG5vdCBvcy5nZXR1aWQoKQorICAg
IGRvZXNfb3duX2xpYnJhcmllcyA9IG9zLnN0YXQobGlicmFyaWVzKS5zdF91aWQgPT0gb3MuZ2V0
dWlkKCkKKyAgICBpZiAoaXNfcm9vdCBvciBub3QgZG9lc19vd25fbGlicmFyaWVzKToKKyAgICAg
ICAgbGlicmFyaWVzID0gb3MucGF0aC5leHBhbmR1c2VyKCd+L0xpYnJhcnkvd2Via2l0cHknKQor
QXV0b0luc3RhbGwuc2V0X2RpcmVjdG9yeShvcy5wYXRoLmpvaW4obGlicmFyaWVzLCAnYXV0b2lu
c3RhbGxlZCcsICdweXRob24te30nLmZvcm1hdChzeXMudmVyc2lvbl9pbmZvWzBdKSkpCisKK2Zy
b20gY2Fzc2FuZHJhLmNxbGVuZ2luZS5tYW5hZ2VtZW50IGltcG9ydCBDUUxFTkdfQUxMT1dfU0NI
RU1BX01BTkFHRU1FTlQKKworCitkZWYgbWFpbigpOgorICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFy
Z3VtZW50UGFyc2VyKGRlc2NyaXB0aW9uPSdSdW4gdW5pdCB0ZXN0cyBmb3IgcmVzdWx0c2RicHkn
KQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy12JywgJy0tdmVyYm9zZScsCisgICAgICAgICAg
ICAgICAgICAgICAgZGVmYXVsdD1GYWxzZSwgYWN0aW9uPSdzdG9yZV90cnVlJywKKyAgICAgICAg
ICAgICAgICAgICAgICBoZWxwPSdWZXJib3NlIG91dHB1dCcpCisgICAgcGFyc2VyLmFkZF9hcmd1
bWVudCgnLS1zdG9wLW9uLWZhaWwnLAorICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9RmFs
c2UsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICAgICAgICAgICAgaGVscD0nU3Rv
cCBvbiBmaXJzdCBmYWlsIG9yIGVycm9yJykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCdtb2R1
bGVzX3RvX3Rlc3QnLCBuYXJncz0nKicsCisgICAgICAgICAgICAgICAgICAgICAgaGVscD0nTW9k
dWxlcyB0byBiZSB0ZXN0ZWQuIEJ5IGRlZmF1bHQsIHRoaXMgaXMgdGhlIGRhdGFiYXNlLCBmbGFz
a19zdXBwb3J0LCBtb2RlbCBhbmQgdmlldyBtb2R1bGVzJywKKyAgICAgICAgICAgICAgICAgICAg
ICBkZWZhdWx0PVsnY29udHJvbGxlcicsICdmbGFza19zdXBwb3J0JywgJ21vZGVsJywgJ3ZpZXcn
XSkKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctZicsICctLWZhc3QtdGVzdHMnLAorICAgICAg
ICAgICAgICAgICAgICAgIGRlZmF1bHQ9RmFsc2UsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAg
ICAgICAgICAgICAgICAgICAgaGVscD0nU29tZSB0ZXN0cyByZXF1aXJlIGEgZG9ja2VyIGluc3Rh
bmNlIGFuZCBhcmUgc2xvdywgb3B0aW9uYWxseSBza2lwIHRoZXNlJykKKyAgICBwYXJzZXIuYWRk
X2FyZ3VtZW50KCctLW5vLXdlYi1zZXJ2ZXInLAorICAgICAgICAgICAgICAgICAgICAgICAgZGVz
dD0nd2ViX3NlcnZlcicsIGRlZmF1bHQ9VHJ1ZSwgYWN0aW9uPSdzdG9yZV9mYWxzZScsCisgICAg
ICAgICAgICAgICAgICAgICAgICBoZWxwPSdTb21lIHRlc3RzIHVzZSBhIEZsYXNrIHdlYnNlcnZl
ciwgb3B0aW9uYWxseSBza2lwIHRoZXNlJykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLW5v
LXNlbGVuaXVtJywKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J3NlbGVuaXVtJywgZGVm
YXVsdD1UcnVlLCBhY3Rpb249J3N0b3JlX2ZhbHNlJywKKyAgICAgICAgICAgICAgICAgICAgICAg
IGhlbHA9J1NvbWUgdGVzdHMgdXNlIFNlbGVuaXVtIHRvIHRlc3QgdGhlIFVJIG9mIHRoZSBzaXRl
LCBvcHRpb25hbGx5IHNraXAgdGhlc2UnKQorICAgIG9wdGlvbnMgPSBwYXJzZXIucGFyc2VfYXJn
cygpCisKKyAgICBvcy5lbnZpcm9uWydzbG93X3Rlc3RzJ10gPSAnMCcgaWYgb3B0aW9ucy5mYXN0
X3Rlc3RzIGVsc2UgJzEnCisgICAgb3MuZW52aXJvblsnd2ViX3NlcnZlciddID0gJzEnIGlmIG9w
dGlvbnMud2ViX3NlcnZlciBlbHNlICcwJworICAgIG9zLmVudmlyb25bJ3NlbGVuaXVtJ10gPSAn
MScgaWYgb3B0aW9ucy5zZWxlbml1bSBlbHNlICcwJworICAgIG9zLmVudmlyb25bQ1FMRU5HX0FM
TE9XX1NDSEVNQV9NQU5BR0VNRU5UXSA9ICcxJworCisgICAgcm9vdCA9IG9zLnBhdGguZGlybmFt
ZShvcy5wYXRoLmFic3BhdGgoX19maWxlX18pKQorCisgICAgc3VpdGUgPSB1bml0dGVzdC5UZXN0
U3VpdGUoKQorICAgIGZvciBtb2R1bGVfbmFtZSBpbiBvcHRpb25zLm1vZHVsZXNfdG9fdGVzdDoK
KyAgICAgICAgbW9kdWxlX3N1aXRlID0gdW5pdHRlc3QuZGVmYXVsdFRlc3RMb2FkZXIuZGlzY292
ZXIob3MucGF0aC5qb2luKHJvb3QsICdyZXN1bHRzZGJweScsIG1vZHVsZV9uYW1lLnJlcGxhY2Uo
Jy4nLCAnLycpKSwgcGF0dGVybj0nKnVuaXR0ZXN0LnB5JywgdG9wX2xldmVsX2Rpcj1vcy5wYXRo
LmpvaW4ocm9vdCkpCisgICAgICAgIGZvciB0c3QgaW4gbW9kdWxlX3N1aXRlIGlmIG1vZHVsZV9z
dWl0ZSBlbHNlIFtdOgorICAgICAgICAgICAgc3VpdGUuYWRkVGVzdCh0c3QpCisKKyAgICBpZiBz
dWl0ZS5jb3VudFRlc3RDYXNlcygpID09IDA6CisgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcign
Tm8gdGVzdHMgbWF0Y2hpbmcuLi4nKQorCisgICAgcmVzdWx0ID0gdW5pdHRlc3QuVGV4dFRlc3RS
dW5uZXIodmVyYm9zaXR5PTIgaWYgb3B0aW9ucy52ZXJib3NlIGVsc2UgMSwgZmFpbGZhc3Q9b3B0
aW9ucy5zdG9wX29uX2ZhaWwsIGJ1ZmZlcj1ub3Qgb3B0aW9ucy52ZXJib3NlKS5ydW4oc3VpdGUp
CisgICAgcmV0dXJuIGxlbihyZXN1bHQuZXJyb3JzKQorCitpZiBfX25hbWVfXyA9PSAnX19tYWlu
X18nOgorICAgIHN5cy5leGl0KG1haW4oKSkKClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL1Nj
cmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3J1bi10ZXN0cwpfX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBz
dm46ZXhlY3V0YWJsZQojIyAtMCwwICsxICMjCisqClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJv
cGVydHkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3NldHVwLnB5
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3NldHVw
LnB5CShyZXZpc2lvbiAyNzkwMDcpCisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRz
ZGJweS9zZXR1cC5weQkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0
IChDKSAyMDE5LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmln
aHQgKEMpIDIwMTktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMwLDcgKzMwLDcgQEAgZGVmIHJlYWRtZSgpOgogCiBz
ZXR1cCgKICAgICBuYW1lPSdyZXN1bHRzZGJweScsCi0gICAgdmVyc2lvbj0nMi4wLjUnLAorICAg
IHZlcnNpb249JzMuMC4wJywKICAgICBkZXNjcmlwdGlvbj0nTGlicmFyeSBmb3IgdmlzdWFsaXpp
bmcsIHByb2Nlc3NpbmcgYW5kIHN0b3JpbmcgdGVzdCByZXN1bHRzLicsCiAgICAgbG9uZ19kZXNj
cmlwdGlvbj1yZWFkbWUoKSwKICAgICBjbGFzc2lmaWVycz1bCkluZGV4OiBUb29scy9TY3JpcHRz
L2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9fX2luaXRfXy5weQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9fX2lu
aXRfXy5weQkocmV2aXNpb24gMjc5MDA3KQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVz
dWx0c2RicHkvcmVzdWx0c2RicHkvX19pbml0X18ucHkJKHdvcmtpbmcgY29weSkKQEAgLTEsNCAr
MSw0IEBACi0jIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisjIENvcHlyaWdodCAoQykgMjAxOS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzYsNyArMzYsNyBAQCBkZWYg
X21heWJlX2FkZF93ZWJraXRfcHl0aG9uX2xpYnJhcnlfcGF0CiBfbWF5YmVfYWRkX3dlYmtpdF9w
eXRob25fbGlicmFyeV9wYXRocygpCiAKIHRyeToKLSAgICBmcm9tIHdlYmtpdGNvcmVweS52ZXJz
aW9uIGltcG9ydCBWZXJzaW9uCisgICAgZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IEF1dG9JbnN0
YWxsLCBQYWNrYWdlLCBWZXJzaW9uCiBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgcmFpc2UgSW1w
b3J0RXJyb3IoCiAgICAgICAgICInd2Via2l0Y29yZXB5JyBjb3VsZCBub3QgYmUgZm91bmQgb24g
eW91ciBQeXRob24gcGF0aC5cbiIgKwpAQCAtNDQsNiArNDQsMzQgQEAgZXhjZXB0IEltcG9ydEVy
cm9yOgogICAgICAgICAiUGxlYXNlIGluc3RhbGwgd2Via2l0Y29yZXB5IHdpdGggYHBpcCBpbnN0
YWxsIHdlYmtpdGNvcmVweSAtLWV4dHJhLWluZGV4LXVybCA8cGFja2FnZSBpbmRleCBVUkw+YCIK
ICAgICApCiAKLXZlcnNpb24gPSBWZXJzaW9uKDIsIDAsIDUpCit2ZXJzaW9uID0gVmVyc2lvbigz
LCAwLCAwKQorCitpbXBvcnQgd2Via2l0Zmxhc2tweQorCitBdXRvSW5zdGFsbC5yZWdpc3RlcihQ
YWNrYWdlKCdhZW51bScsIFZlcnNpb24oMiwgMiwgNikpKQorQXV0b0luc3RhbGwucmVnaXN0ZXIo
UGFja2FnZSgnYXR0cnMnLCBWZXJzaW9uKDIxLCAyLCAwKSkpCitBdXRvSW5zdGFsbC5yZWdpc3Rl
cihQYWNrYWdlKCdhaW9yZWRpcycsIFZlcnNpb24oMSwgMywgMSkpKQorQXV0b0luc3RhbGwucmVn
aXN0ZXIoUGFja2FnZSgnYXN5bmMtdGltZW91dCcsIFZlcnNpb24oMywgMCwgMSkpKQorQXV0b0lu
c3RhbGwucmVnaXN0ZXIoUGFja2FnZSgnYm90bzMnLCBWZXJzaW9uKDEsIDE2LCA2MyksIHdoZWVs
PVRydWUpKQorQXV0b0luc3RhbGwucmVnaXN0ZXIoUGFja2FnZSgnYm90b2NvcmUnLCBWZXJzaW9u
KDEsIDE5LCA2MyksIHdoZWVsPVRydWUpKQorQXV0b0luc3RhbGwucmVnaXN0ZXIoUGFja2FnZSgn
Y2Fzc2FuZHJhJywgVmVyc2lvbigzLCAyNSwgMCksIHB5cGlfbmFtZT0nY2Fzc2FuZHJhLWRyaXZl
cicsIHNsb3dfaW5zdGFsbD1UcnVlKSkKK0F1dG9JbnN0YWxsLnJlZ2lzdGVyKFBhY2thZ2UoJ2Ns
aWNrJywgVmVyc2lvbig3LCAxLCAyKSkpCitBdXRvSW5zdGFsbC5yZWdpc3RlcihQYWNrYWdlKCdD
cnlwdG8nLCBWZXJzaW9uKDMsIDEwLCAxKSwgcHlwaV9uYW1lPSdweWNyeXB0b2RvbWUnKSkKK0F1
dG9JbnN0YWxsLnJlZ2lzdGVyKFBhY2thZ2UoJ2Zha2VyZWRpcycsIFZlcnNpb24oMSwgNSwgMikp
KQorQXV0b0luc3RhbGwucmVnaXN0ZXIoUGFja2FnZSgnZ2VvbWV0JywgVmVyc2lvbigwLCAyLCAx
KSkpCitBdXRvSW5zdGFsbC5yZWdpc3RlcihQYWNrYWdlKCdncmVtbGlucHl0aG9uJywgVmVyc2lv
bigzLCA0LCA2KSkpCitBdXRvSW5zdGFsbC5yZWdpc3RlcihQYWNrYWdlKCdoaXJlZGlzJywgVmVy
c2lvbigxLCAxLCAwKSkpCitBdXRvSW5zdGFsbC5yZWdpc3RlcihQYWNrYWdlKCdpc29kYXRlJywg
VmVyc2lvbigwLCA2LCAwKSkpCitBdXRvSW5zdGFsbC5yZWdpc3RlcihQYWNrYWdlKCdqbWVzcGF0
aCcsIFZlcnNpb24oMCwgMTAsIDApLCB3aGVlbD1UcnVlKSkKK0F1dG9JbnN0YWxsLnJlZ2lzdGVy
KFBhY2thZ2UoJ2x1cGEnLCBWZXJzaW9uKDEsIDkpKSkKK0F1dG9JbnN0YWxsLnJlZ2lzdGVyKFBh
Y2thZ2UoJ3B5YXNuMV9tb2R1bGVzJywgVmVyc2lvbigwLCAyLCA4KSwgcHlwaV9uYW1lPSdweWFz
bjEtbW9kdWxlcycpKQorQXV0b0luc3RhbGwucmVnaXN0ZXIoUGFja2FnZSgncmVkaXMnLCBWZXJz
aW9uKDMsIDUsIDMpKSkKK0F1dG9JbnN0YWxsLnJlZ2lzdGVyKFBhY2thZ2UoJ3NlbGVuaXVtJywg
VmVyc2lvbigzLCAxNDEsIDApKSkKK0F1dG9JbnN0YWxsLnJlZ2lzdGVyKFBhY2thZ2UoJ3NlcnZp
Y2VfaWRlbnRpdHknLCBWZXJzaW9uKDIxLCAxLCAwKSwgcHlwaV9uYW1lPSdzZXJ2aWNlLWlkZW50
aXR5JykpCitBdXRvSW5zdGFsbC5yZWdpc3RlcihQYWNrYWdlKCdzb3J0ZWRjb250YWluZXJzJywg
VmVyc2lvbigyLCA0LCAwKSkpCitBdXRvSW5zdGFsbC5yZWdpc3RlcihQYWNrYWdlKCd0b3JuYWRv
JywgVmVyc2lvbig0LCA1LCAzKSkpCitBdXRvSW5zdGFsbC5yZWdpc3RlcihQYWNrYWdlKCd0d2lz
dGVkJywgVmVyc2lvbigyMSwgMiwgMCksIHB5cGlfbmFtZT0nVHdpc3RlZCcsIGltcGxpY2l0X2Rl
cHM9WworICAgIFBhY2thZ2UoJ2luY3JlbWVudGFsJywgVmVyc2lvbigyMSwgMywgMCkpLAorXSkp
CiAKIG5hbWUgPSAncmVzdWx0c2RicHknCkluZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9y
ZXN1bHRzZGJweS9yZXN1bHRzZGJweS9jb250YWluZXIKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2Ny
aXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29udGFpbmVyCShyZXZpc2lv
biAyNzkwMDcpCisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRz
ZGJweS9jb250YWluZXIJKG5vbmV4aXN0ZW50KQpAQCAtMSw3MyArMCwwIEBACi0jIS91c3IvYmlu
L2VudiBweXRob24zCi0KLSMgQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIyAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0j
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKLSMgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN
UExJRUQKLSMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQotIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgotIyBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0jIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0jIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksCi0jIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLWlt
cG9ydCBhcmdwYXJzZQotaW1wb3J0IG9zCi1pbXBvcnQgc3lzCi1zeXMuZG9udF93cml0ZV9ieXRl
Y29kZSA9IFRydWUKLQotZnJvbSBtb2RlbC5kb2NrZXIgaW1wb3J0IERvY2tlcgotCi0KLWRlZiBz
dGFydCgpOgotICAgIERvY2tlci5zdGFydCgpCi0gICAgRG9ja2VyLnN0YXJ0X3Byb2plY3QoRG9j
a2VyLkRFRkFVTFRfUFJPSkVDVCkKLSAgICByZXR1cm4gMAotCi0KLWRlZiBzdG9wKCk6Ci0gICAg
aWYgbm90IERvY2tlci5pc19ydW5uaW5nKCk6Ci0gICAgICAgIHByaW50KCdEb2NrZXIgaXMgbm90
IHJ1bm5pbmcnKQotICAgICAgICByZXR1cm4gMQotICAgIERvY2tlci5zdG9wX3Byb2plY3QoRG9j
a2VyLkRFRkFVTFRfUFJPSkVDVCkKLSAgICBEb2NrZXIuc3RvcCgpCi0gICAgcmV0dXJuIDAKLQot
Ci1kZWYgcmVzdGFydCgpOgotICAgIGlmIG5vdCBEb2NrZXIuaXNfcnVubmluZygpOgotICAgICAg
ICBEb2NrZXIuc3RhcnQoKQotICAgIERvY2tlci5zdG9wX3Byb2plY3QoRG9ja2VyLkRFRkFVTFRf
UFJPSkVDVCkKLSAgICBEb2NrZXIuc3RhcnRfcHJvamVjdChEb2NrZXIuREVGQVVMVF9QUk9KRUNU
KQotICAgIHJldHVybiAwCi0KLQotZGVmIG1haW4oKToKLSAgICBwYXJzZXIgPSBhcmdwYXJzZS5B
cmd1bWVudFBhcnNlcihkZXNjcmlwdGlvbj0nTWFuYWdlIHJlc3VsdHNkYnB5IGNvbnRhaW5lciBp
bnN0YW5jZSBpbnNpZGUgRG9ja2VyJykKLSAgICBzdWJwYXJzZXJzID0gcGFyc2VyLmFkZF9zdWJw
YXJzZXJzKGhlbHA9J3N1Yi1jb21tYW5kIGhlbHAnKQotCi0gICAgc3RhcnRfcGFyc2VyID0gc3Vi
cGFyc2Vycy5hZGRfcGFyc2VyKCdzdGFydCcsIGhlbHA9J1N0YXJ0IHRoZSBjb250YWluZXIgaW5z
aWRlIERvY2tlcicpCi0gICAgc3RhcnRfcGFyc2VyLnNldF9kZWZhdWx0cyhmdW5jdGlvbj1zdGFy
dCkKLQotICAgIHN0YXJ0X3BhcnNlciA9IHN1YnBhcnNlcnMuYWRkX3BhcnNlcignc3RvcCcsIGhl
bHA9J1N0b3AgdGhlIGNvbnRhaW5lciBpbnNpZGUgRG9ja2VyJykKLSAgICBzdGFydF9wYXJzZXIu
c2V0X2RlZmF1bHRzKGZ1bmN0aW9uPXN0b3ApCi0KLSAgICBzdGFydF9wYXJzZXIgPSBzdWJwYXJz
ZXJzLmFkZF9wYXJzZXIoJ3Jlc3RhcnQnLCBoZWxwPSdSZXN0YXJ0IHRoZSBjb250YWluZXIgaW5z
aWRlIERvY2tlcicpCi0gICAgc3RhcnRfcGFyc2VyLnNldF9kZWZhdWx0cyhmdW5jdGlvbj1yZXN0
YXJ0KQotCi0gICAgcmV0dXJuIGdldGF0dHIocGFyc2VyLnBhcnNlX2FyZ3MoKSwgJ2Z1bmN0aW9u
JywgbGFtYmRhOiBwYXJzZXIucHJpbnRfaGVscCgpKSgpCi0KLQotaWYgX19uYW1lX18gPT0gJ19f
bWFpbl9fJzoKLSAgICBzeXMuZXhpdChtYWluKCkpCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBUb29s
cy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9jb250YWluZXIKX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fXwpEZWxldGVkOiBzdm46ZXhlY3V0YWJsZQojIyAtMSArMCwwICMjCi0qClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jl
c3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3J1bgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2xp
YnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9ydW4JKHJldmlzaW9uIDI3OTAwNykKKysr
IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3J1bgkobm9u
ZXhpc3RlbnQpCkBAIC0xLDE3MyArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24zCi0KLSMg
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
IwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgIkFTIElTIiBBTkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQotIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgotIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SCi0jIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0jIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0jIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLWltcG9ydCBhcmdwYXJzZQotaW1w
b3J0IG9zCi1pbXBvcnQgc3VicHJvY2VzcwotaW1wb3J0IHN5cwotaW1wb3J0IHRpbWUKLWltcG9y
dCB0aHJlYWRpbmcKLQotc3lzLmRvbnRfd3JpdGVfYnl0ZWNvZGUgPSBUcnVlCi0KLWZyb20gbW9k
ZWwuZG9ja2VyIGltcG9ydCBEb2NrZXIKLWZyb20gbXVsdGlwcm9jZXNzaW5nIGltcG9ydCBQcm9j
ZXNzCi1mcm9tIHJlZGlzIGltcG9ydCBTdHJpY3RSZWRpcwotCi0KLWNsYXNzIERvY2tlcklmTmVl
ZGVkQ29udGV4dChvYmplY3QpOgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGFyZ3MpOgotICAg
ICAgICBzZWxmLmRvY2tlciA9IERvY2tlci5pbnN0YW5jZSgpIGlmICdsb2NhbGhvc3QnIGluIFth
cmdzLmNhc3NhbmRyYV9zZXJ2ZXIsIGFyZ3MucmVkaXNfc2VydmVyXSBlbHNlIE5vbmUKLQotICAg
IGRlZiBfX2VudGVyX18oc2VsZik6Ci0gICAgICAgIGlmIHNlbGYuZG9ja2VyOgotICAgICAgICAg
ICAgc2VsZi5kb2NrZXIuX19lbnRlcl9fKCkKLQotICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqYXJn
cywgKiprd2FyZ3MpOgotICAgICAgICBpZiBzZWxmLmRvY2tlcjoKLSAgICAgICAgICAgIHNlbGYu
ZG9ja2VyLl9fZXhpdF9fKCphcmdzLCAqKmt3YXJncykKLQotCi1kZWYgaGFzX2d1bmljb3JuKCk6
Ci0gICAgcmV0dXJuIG5vdCBzdWJwcm9jZXNzLnJ1bihbJ3B5dGhvbjMnLCAnL3Vzci9sb2NhbC9i
aW4vZ3VuaWNvcm5zJywgJy0tdmVyc2lvbiddLCBjYXB0dXJlX291dHB1dD1UcnVlKS5yZXR1cm5j
b2RlCi0KLQotZGVmIHBhcnNlX2FyZ3VtZW50cygpOgotICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFy
Z3VtZW50UGFyc2VyKGRlc2NyaXB0aW9uPSdSdW4gYSBzaW1wbGUgaW5zdGFuY2Ugb2YgdGhlIHJl
c3VsdHMgZGF0YWJhc2UgZm9yIGxvY2FsIGRldmVsb3BtZW50JykKLSAgICBwYXJzZXIuYWRkX2Fy
Z3VtZW50KAotICAgICAgICAnLS1sb2NhbC1jYXNzYW5kcmEnLCBoZWxwPSdVc2UgYSBsb2NhbCBD
YXNzYW5kcmEgaW5zdGFuY2UnLAotICAgICAgICBkZXN0PSdjYXNzYW5kcmFfc2VydmVyJywgYWN0
aW9uPSdzdG9yZV9jb25zdCcsIGNvbnN0PSdsb2NhbGhvc3QnLAotICAgICkKLSAgICBwYXJzZXIu
YWRkX2FyZ3VtZW50KAotICAgICAgICAnLS1tb2NrLWNhc3NhbmRyYScsIGhlbHA9J1VzZSBhIG1v
Y2sgQ2Fzc2FuZHJhIGluc3RhbmNlJywKLSAgICAgICAgZGVzdD0nY2Fzc2FuZHJhX3NlcnZlcics
IGFjdGlvbj0nc3RvcmVfY29uc3QnLCBjb25zdD0nbW9jaycsCi0gICAgKQotICAgIHBhcnNlci5z
ZXRfZGVmYXVsdHMoY2Fzc2FuZHJhX3NlcnZlcj0nbG9jYWxob3N0JyBpZiBEb2NrZXIuaW5zdGFs
bGVkKCkgZWxzZSAnbW9jaycpCi0KLSAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAotICAgICAgICAn
LS1sb2NhbC1yZWRpcycsIGhlbHA9J1VzZSBhIGxvY2FsIFJlZGlzIGluc3RhbmNlJywKLSAgICAg
ICAgZGVzdD0ncmVkaXNfc2VydmVyJywgYWN0aW9uPSdzdG9yZV9jb25zdCcsIGNvbnN0PSdsb2Nh
bGhvc3QnLAotICAgICkKLSAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAotICAgICAgICAnLS1tb2Nr
LXJlZGlzJywgaGVscD0nVXNlIGEgbW9jayBSZWRpcyBpbnN0YW5jZScsCi0gICAgICAgIGRlc3Q9
J3JlZGlzX3NlcnZlcicsIGFjdGlvbj0nc3RvcmVfY29uc3QnLCBjb25zdD0nbW9jaycsCi0gICAg
KQotICAgIHBhcnNlci5zZXRfZGVmYXVsdHMocmVkaXNfc2VydmVyPSdsb2NhbGhvc3QnIGlmIERv
Y2tlci5pbnN0YWxsZWQoKSBlbHNlICdtb2NrJykKLQotICAgIHBhcnNlci5hZGRfYXJndW1lbnQo
Ci0gICAgICAgICctLWRyb3Ata2V5c3BhY2UnLCBoZWxwPSdEcm9wIHRoZSBleGlzdGluZyBrZXlz
cGFjZSBiZWZvcmUgcnVubmluZyB0aGUgcHJvZ3JhbScsCi0gICAgICAgIGRlc3Q9J2Ryb3Bfa2V5
c3BhY2UnLCBhY3Rpb249J3N0b3JlX3RydWUnLAotICAgICkKLSAgICBwYXJzZXIuYWRkX2FyZ3Vt
ZW50KAotICAgICAgICAnLS1uby1kcm9wLWtleXNwYWNlJywgaGVscD0nRG8gTk9UIGRyb3AgdGhl
IGV4aXN0aW5nIGtleXNwYWNlIGJlZm9yZSBydW5uaW5nIHRoZSBwcm9ncmFtJywKLSAgICAgICAg
ZGVzdD0nZHJvcF9rZXlzcGFjZScsIGFjdGlvbj0nc3RvcmVfZmFsc2UnLAotICAgICkKLSAgICBw
YXJzZXIuc2V0X2RlZmF1bHRzKGRyb3Bfa2V5c3BhY2U9RmFsc2UpCi0KLSAgICBwYXJzZXIuYWRk
X2FyZ3VtZW50KAotICAgICAgICAnLS1jbGVhci1yZWRpcycsIGhlbHA9J0NsZWFyIHJlZGlzIGJl
Zm9yZSBydW5uaW5nIHRoZSBhcHBsaWNhdGlvbicsCi0gICAgICAgIGRlc3Q9J2NsZWFyX3JlZGlz
JywgYWN0aW9uPSdzdG9yZV90cnVlJywKLSAgICApCi0gICAgcGFyc2VyLmFkZF9hcmd1bWVudCgK
LSAgICAgICAgJy0tbm8tY2xlYXItcmVkaXMnLAotICAgICAgICBoZWxwPSdEbyBub3QgY2xlYXIg
cmVkaXMgYmVmb3JlIHJ1bm5pbmcgdGhlIGFwcGxpY2F0aW9uJywKLSAgICAgICAgZGVzdD0nY2xl
YXJfcmVkaXMnLCBhY3Rpb249J3N0b3JlX2ZhbHNlJywKLSAgICApCi0gICAgcGFyc2VyLnNldF9k
ZWZhdWx0cyhjbGVhcl9yZWRpcz1UcnVlKQotCi0gICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKLSAg
ICAgICAgJy0tZ3VuaWNvcm4nLCBoZWxwPSdVc2UgdGhlIGd1bmljb3JuIHdlYnNlcnZlcicsCi0g
ICAgICAgIGRlc3Q9J2d1bmljb3JuJywgYWN0aW9uPSdzdG9yZV90cnVlJywKLSAgICApCi0gICAg
cGFyc2VyLmFkZF9hcmd1bWVudCgKLSAgICAgICAgJy0tbm8tZ3VuaWNvcm4nLAotICAgICAgICBo
ZWxwPSdEbyBub3QgdXNlIHRoZSBndW5pY29ybiB3ZWJzZXJ2ZXInLAotICAgICAgICBkZXN0PSdn
dW5pY29ybicsIGFjdGlvbj0nc3RvcmVfZmFsc2UnLAotICAgICkKLSAgICBwYXJzZXIuc2V0X2Rl
ZmF1bHRzKGd1bmljb3JuPWhhc19ndW5pY29ybigpKQotCi0gICAgcmV0dXJuIHBhcnNlci5wYXJz
ZV9hcmdzKCkKLQotCi1kZWYgZG9fd29yaygpOgotICAgIGZyb20gZXhhbXBsZS53b3JrZXIgaW1w
b3J0IG1haW4KLSAgICBtYWluKCkKLQotCi1kZWYgd2ViX2FwcCgpOgotICAgIGZyb20gZXhhbXBs
ZS5tYWluIGltcG9ydCBtYWluCi0gICAgcmV0dXJuIG1haW4oKQotCi0KLWRlZiBndW5pY29ybigp
OgotICAgIGlmIG5vdCBoYXNfZ3VuaWNvcm4oKToKLSAgICAgICAgcHJpbnQoJ2d1bmljb3JuIGlz
IG5vdCBpbnN0YWxsZWQsIHBsZWFzZSBydW4gYHBpcDMgaW5zdGFsbCBndW5pY29ybmAnKQotICAg
ICAgICByZXR1cm4gMQotCi0gICAgIyBTbGlnaHQgZGVsYXkgc28gdGhhdCB0aGUgd29ya2VyIGlz
IHN0YXJ0ZWQgYmVmb3JlIHRoZSB3ZWJzZXJ2ZXIKLSAgICB0aW1lLnNsZWVwKDIpCi0gICAgcmV0
dXJuIHN1YnByb2Nlc3MucnVuKFsKLSAgICAgICAgJ3B5dGhvbjMnLCAnL3Vzci9sb2NhbC9iaW4v
Z3VuaWNvcm4nLAotICAgICAgICAnZXhhbXBsZS5tYWluOmFwcCcsCi0gICAgICAgICctLWxvZy1m
aWxlPS0nLCAnLS1yZWxvYWQnLAotICAgIF0pLnJldHVybmNvZGUKLQotCi1kZWYgbWFpbigpOgot
ICAgIGFyZ3MgPSBwYXJzZV9hcmd1bWVudHMoKQotICAgIHdpdGggRG9ja2VySWZOZWVkZWRDb250
ZXh0KGFyZ3MpOgotICAgICAgICBvcy5lbnZpcm9uWydDQVNTQU5EUkFfU0VSVkVSJ10gPSBhcmdz
LmNhc3NhbmRyYV9zZXJ2ZXIKLSAgICAgICAgb3MuZW52aXJvblsnUkVESVNfSE9TVCddID0gYXJn
cy5yZWRpc19zZXJ2ZXIKLSAgICAgICAgb3MuZW52aXJvblsnRFJPUF9LRVlTUEFDRSddID0gJzEn
IGlmIGFyZ3MuZHJvcF9rZXlzcGFjZSBlbHNlICcwJwotICAgICAgICBvcy5lbnZpcm9uWydDUkVB
VEVfS0VZU1BBQ0UnXSA9ICcxJyAgIyBVbmNvbmRpdGlvbmFsbHkgY3JlYXRlIGtleXNwYWNlIGZv
ciB0ZXN0aW5nCi0KLSAgICAgICAgaWYgYXJncy5jbGVhcl9yZWRpcyBhbmQgYXJncy5yZWRpc19z
ZXJ2ZXIgIT0gJ21vY2snOgotICAgICAgICAgICAgU3RyaWN0UmVkaXMoaG9zdD1hcmdzLnJlZGlz
X3NlcnZlcikuZmx1c2hkYigpCi0KLSAgICAgICAgaWYgYXJncy5ndW5pY29ybjoKLSAgICAgICAg
ICAgIGlmICdtb2NrJyBpbiBbYXJncy5yZWRpc19zZXJ2ZXIsIGFyZ3MuY2Fzc2FuZHJhX3NlcnZl
cl06Ci0gICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdDYW5ub3QgcnVuIHdpdGgg
Z3VuaWNvcm4gYW5kIG1vY2sgZGF0YWJhc2VzLCBhc3luY2hyb25vdXMgd29ya2VycyByZWx5IG9u
IHRoZSByZWFsIGRhdGFiYXNlcycpCi0KLSAgICAgICAgZnJvbSBleGFtcGxlLmVudmlyb25tZW50
IGltcG9ydCBtYWluIGFzIGVudmlyb25tZW50X21haW4KLSAgICAgICAgZW52aXJvbm1lbnRfbWFp
bigpCi0KLSAgICAgICAgaWYgbm90IGFyZ3MuZ3VuaWNvcm46Ci0gICAgICAgICAgICB3b3JrZXIg
PSB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1kb193b3JrKQotICAgICAgICAgICAgd29ya2VyLmRh
ZW1vbiA9IFRydWUKLSAgICAgICAgICAgIHdvcmtlci5zdGFydCgpCi0KLSAgICAgICAgICAgIHJl
dHVybiB3ZWJfYXBwKCkKLQotICAgICAgICB3b3JrZXIgPSBQcm9jZXNzKHRhcmdldD1kb193b3Jr
KQotICAgICAgICB3b3JrZXIuc3RhcnQoKQotCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHJl
dHVybiBndW5pY29ybigpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICB3b3JrZXIudGVy
bWluYXRlKCkKLSAgICAgICAgICAgIHdvcmtlci5qb2luKCkKLQotaWYgX19uYW1lX18gPT0gJ19f
bWFpbl9fJzoKLSAgICBzeXMuZXhpdChtYWluKCkpCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBUb29s
cy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9ydW4KX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
XwpEZWxldGVkOiBzdm46ZXhlY3V0YWJsZQojIyAtMSArMCwwICMjCi0qClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNk
YnB5L3Jlc3VsdHNkYnB5L2V4YW1wbGUvbWFpbi5weQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3Jp
cHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9leGFtcGxlL21haW4ucHkJKHJl
dmlzaW9uIDI3OTAwNykKKysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jl
c3VsdHNkYnB5L2V4YW1wbGUvbWFpbi5weQkod29ya2luZyBjb3B5KQpAQCAtMjMsNyArMjMsNyBA
QAogaW1wb3J0IGhhc2hsaWIKIGltcG9ydCBqc29uCiAKLWZyb20gZXhhbXBsZS5lbnZpcm9ubWVu
dCBpbXBvcnQgRW52aXJvbm1lbnQsIE1vZGVsRnJvbUVudmlyb25tZW50Citmcm9tIHJlc3VsdHNk
YnB5LmV4YW1wbGUuZW52aXJvbm1lbnQgaW1wb3J0IEVudmlyb25tZW50LCBNb2RlbEZyb21FbnZp
cm9ubWVudAogZnJvbSBmbGFzayBpbXBvcnQgYWJvcnQsIEZsYXNrLCByZXF1ZXN0CiBmcm9tIHJl
c3VsdHNkYnB5LmNvbnRyb2xsZXIuYXBpX3JvdXRlcyBpbXBvcnQgQVBJUm91dGVzCiBmcm9tIHJl
c3VsdHNkYnB5LnZpZXcudmlld19yb3V0ZXMgaW1wb3J0IFZpZXdSb3V0ZXMKSW5kZXg6IFRvb2xz
L1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcvdmlld19yb3V0
ZXNfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVz
dWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy92aWV3X3JvdXRlc191bml0dGVzdC5weQkocmV2aXNp
b24gMjc5MDA3KQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0
c2RicHkvdmlldy92aWV3X3JvdXRlc191bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMjIs
OSArMjIsOSBAQAogCiBpbXBvcnQgdGltZQogCi1mcm9tIGNvbnRyb2xsZXIuYXBpX3JvdXRlcyBp
bXBvcnQgQVBJUm91dGVzCiBmcm9tIGZha2VyZWRpcyBpbXBvcnQgRmFrZVN0cmljdFJlZGlzCiBm
cm9tIHJlZGlzIGltcG9ydCBTdHJpY3RSZWRpcworZnJvbSByZXN1bHRzZGJweS5jb250cm9sbGVy
LmFwaV9yb3V0ZXMgaW1wb3J0IEFQSVJvdXRlcwogZnJvbSByZXN1bHRzZGJweS5mbGFza19zdXBw
b3J0LmZsYXNrX3Rlc3RjYXNlIGltcG9ydCBGbGFza1Rlc3RDYXNlCiBmcm9tIHJlc3VsdHNkYnB5
Lm1vZGVsLmNhc3NhbmRyYV9jb250ZXh0IGltcG9ydCBDYXNzYW5kcmFDb250ZXh0CiBmcm9tIHJl
c3VsdHNkYnB5Lm1vZGVsLm1vY2tfY2Fzc2FuZHJhX2NvbnRleHQgaW1wb3J0IE1vY2tDYXNzYW5k
cmFDb250ZXh0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431743</attachid>
            <date>2021-06-17 17:00:27 -0700</date>
            <delta_ts>2021-06-21 08:17:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227096-20210617170025.patch</filename>
            <type>text/plain</type>
            <size>2679</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI3OTAyNCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE1IEBACisyMDIxLTA2LTE3ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBbcmVzdWx0c2RicHldIEFkb3B0IGF1dG9pbnN0YWxsZXIgKEZvbGxvdy11
cCBmaXgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjcwOTYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc5NDE4MDgwPgorCisgICAgICAgIFVucmV2
aWV3ZWQgZm9sbG93LXVwIGZpeC4KKworICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3Jlc3Vs
dHNkYnB5L2NvbnRhaW5lcjogRml4IGxpYnJhcmllcyBwYXRoLgorICAgICAgICAqIFNjcmlwdHMv
bGlicmFyaWVzL3Jlc3VsdHNkYnB5L3J1bjogRGl0dG8uCisgICAgICAgICogU2NyaXB0cy9saWJy
YXJpZXMvcmVzdWx0c2RicHkvcnVuLXRlc3RzOiBEaXR0by4KKwogMjAyMS0wNi0xNyAgSm9uYXRo
YW4gQmVkYXJkICA8amJlZGFyZEBhcHBsZS5jb20+CiAKICAgICAgICAgW3Jlc3VsdHNkYnB5XSBB
ZG9wdCBhdXRvaW5zdGFsbGVyCkluZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRz
ZGJweS9jb250YWluZXIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVz
dWx0c2RicHkvY29udGFpbmVyCShyZXZpc2lvbiAyNzkwMjMpCisrKyBUb29scy9TY3JpcHRzL2xp
YnJhcmllcy9yZXN1bHRzZGJweS9jb250YWluZXIJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5
LDcgQEAgaW1wb3J0IHN5cwogaW1wb3J0IHJlc3VsdHNkYnB5CiBmcm9tIHdlYmtpdGNvcmVweSBp
bXBvcnQgQXV0b0luc3RhbGwKIAotbGlicmFyaWVzID0gb3MucGF0aC5qb2luKG9zLnBhdGguYWJz
cGF0aChvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5kaXJuYW1lKG9zLnBhdGguZGlybmFtZShfX2Zp
bGVfXykpKSksICdsaWJyYXJpZXMnKQorbGlicmFyaWVzID0gb3MucGF0aC5kaXJuYW1lKG9zLnBh
dGguZGlybmFtZShvcy5wYXRoLmFic3BhdGgoX19maWxlX18pKSkKIGlmIHN5cy5wbGF0Zm9ybSA9
PSAnZGFyd2luJzoKICAgICBpc19yb290ID0gbm90IG9zLmdldHVpZCgpCiAgICAgZG9lc19vd25f
bGlicmFyaWVzID0gb3Muc3RhdChsaWJyYXJpZXMpLnN0X3VpZCA9PSBvcy5nZXR1aWQoKQpJbmRl
eDogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcnVuCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3J1bgkocmV2aXNpb24gMjc5MDIz
KQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcnVuCSh3b3JraW5nIGNv
cHkpCkBAIC0zMiw3ICszMiw3IEBAIGltcG9ydCB0aHJlYWRpbmcKIGltcG9ydCByZXN1bHRzZGJw
eQogZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IEF1dG9JbnN0YWxsCiAKLWxpYnJhcmllcyA9IG9z
LnBhdGguam9pbihvcy5wYXRoLmFic3BhdGgob3MucGF0aC5kaXJuYW1lKG9zLnBhdGguZGlybmFt
ZShvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pKSkpLCAnbGlicmFyaWVzJykKK2xpYnJhcmllcyA9
IG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5hYnNwYXRoKF9fZmlsZV9f
KSkpCiBpZiBzeXMucGxhdGZvcm0gPT0gJ2Rhcndpbic6CiAgICAgaXNfcm9vdCA9IG5vdCBvcy5n
ZXR1aWQoKQogICAgIGRvZXNfb3duX2xpYnJhcmllcyA9IG9zLnN0YXQobGlicmFyaWVzKS5zdF91
aWQgPT0gb3MuZ2V0dWlkKCkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNk
YnB5L3J1bi10ZXN0cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1
bHRzZGJweS9ydW4tdGVzdHMJKHJldmlzaW9uIDI3OTAyMykKKysrIFRvb2xzL1NjcmlwdHMvbGli
cmFyaWVzL3Jlc3VsdHNkYnB5L3J1bi10ZXN0cwkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMs
NyBAQCBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCByZXN1bHRzZGJweQogZnJvbSB3ZWJraXRjb3Jl
cHkgaW1wb3J0IEF1dG9JbnN0YWxsCiAKLWxpYnJhcmllcyA9IG9zLnBhdGguam9pbihvcy5wYXRo
LmFic3BhdGgob3MucGF0aC5kaXJuYW1lKG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmRpcm5hbWUo
X19maWxlX18pKSkpLCAnbGlicmFyaWVzJykKK2xpYnJhcmllcyA9IG9zLnBhdGguZGlybmFtZShv
cy5wYXRoLmRpcm5hbWUob3MucGF0aC5hYnNwYXRoKF9fZmlsZV9fKSkpCiBpZiBzeXMucGxhdGZv
cm0gPT0gJ2Rhcndpbic6CiAgICAgaXNfcm9vdCA9IG5vdCBvcy5nZXR1aWQoKQogICAgIGRvZXNf
b3duX2xpYnJhcmllcyA9IG9zLnN0YXQobGlicmFyaWVzKS5zdF91aWQgPT0gb3MuZ2V0dWlkKCkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431861</attachid>
            <date>2021-06-21 08:17:32 -0700</date>
            <delta_ts>2021-06-21 08:51:14 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-227096-20210621081731.patch</filename>
            <type>text/plain</type>
            <size>2684</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI3OTA2NSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE1IEBACisyMDIxLTA2LTIxICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBbcmVzdWx0c2RicHldIEFkb3B0IGF1dG9pbnN0YWxsZXIgKEZvbGxvdy11
cCBmaXgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjcwOTYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc5NDE4MDgwPgorCisgICAgICAgIFJ1YmJl
ci1zdGFtcGVkIGJ5IEFha2FzaCBKYWluLgorCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMv
cmVzdWx0c2RicHkvY29udGFpbmVyOiBGaXggbGlicmFyaWVzIHBhdGguCisgICAgICAgICogU2Ny
aXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcnVuOiBEaXR0by4KKyAgICAgICAgKiBTY3JpcHRz
L2xpYnJhcmllcy9yZXN1bHRzZGJweS9ydW4tdGVzdHM6IERpdHRvLgorCiAyMDIxLTA2LTE5ICBD
b21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmll
d2VkLCByZXZlcnRpbmcgcjI3ODY5OS4KSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jl
c3VsdHNkYnB5L2NvbnRhaW5lcgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJhcmll
cy9yZXN1bHRzZGJweS9jb250YWluZXIJKHJldmlzaW9uIDI3OTA2NSkKKysrIFRvb2xzL1Njcmlw
dHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L2NvbnRhaW5lcgkod29ya2luZyBjb3B5KQpAQCAtMjks
NyArMjksNyBAQCBpbXBvcnQgc3lzCiBpbXBvcnQgcmVzdWx0c2RicHkKIGZyb20gd2Via2l0Y29y
ZXB5IGltcG9ydCBBdXRvSW5zdGFsbAogCi1saWJyYXJpZXMgPSBvcy5wYXRoLmpvaW4ob3MucGF0
aC5hYnNwYXRoKG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5kaXJuYW1l
KF9fZmlsZV9fKSkpKSwgJ2xpYnJhcmllcycpCitsaWJyYXJpZXMgPSBvcy5wYXRoLmRpcm5hbWUo
b3MucGF0aC5kaXJuYW1lKG9zLnBhdGguYWJzcGF0aChfX2ZpbGVfXykpKQogaWYgc3lzLnBsYXRm
b3JtID09ICdkYXJ3aW4nOgogICAgIGlzX3Jvb3QgPSBub3Qgb3MuZ2V0dWlkKCkKICAgICBkb2Vz
X293bl9saWJyYXJpZXMgPSBvcy5zdGF0KGxpYnJhcmllcykuc3RfdWlkID09IG9zLmdldHVpZCgp
CkluZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9ydW4KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcnVuCShyZXZpc2lvbiAy
NzkwNjUpCisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9ydW4JKHdvcmtp
bmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAgaW1wb3J0IHRocmVhZGluZwogaW1wb3J0IHJlc3Vs
dHNkYnB5CiBmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgQXV0b0luc3RhbGwKIAotbGlicmFyaWVz
ID0gb3MucGF0aC5qb2luKG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5k
aXJuYW1lKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykpKSksICdsaWJyYXJpZXMnKQorbGlicmFy
aWVzID0gb3MucGF0aC5kaXJuYW1lKG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmFic3BhdGgoX19m
aWxlX18pKSkKIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoKICAgICBpc19yb290ID0gbm90
IG9zLmdldHVpZCgpCiAgICAgZG9lc19vd25fbGlicmFyaWVzID0gb3Muc3RhdChsaWJyYXJpZXMp
LnN0X3VpZCA9PSBvcy5nZXR1aWQoKQpJbmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVz
dWx0c2RicHkvcnVuLXRlc3RzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVz
L3Jlc3VsdHNkYnB5L3J1bi10ZXN0cwkocmV2aXNpb24gMjc5MDY1KQorKysgVG9vbHMvU2NyaXB0
cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcnVuLXRlc3RzCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3
ICszMyw3IEBAIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHJlc3VsdHNkYnB5CiBmcm9tIHdlYmtp
dGNvcmVweSBpbXBvcnQgQXV0b0luc3RhbGwKIAotbGlicmFyaWVzID0gb3MucGF0aC5qb2luKG9z
LnBhdGguYWJzcGF0aChvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5kaXJuYW1lKG9zLnBhdGguZGly
bmFtZShfX2ZpbGVfXykpKSksICdsaWJyYXJpZXMnKQorbGlicmFyaWVzID0gb3MucGF0aC5kaXJu
YW1lKG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmFic3BhdGgoX19maWxlX18pKSkKIGlmIHN5cy5w
bGF0Zm9ybSA9PSAnZGFyd2luJzoKICAgICBpc19yb290ID0gbm90IG9zLmdldHVpZCgpCiAgICAg
ZG9lc19vd25fbGlicmFyaWVzID0gb3Muc3RhdChsaWJyYXJpZXMpLnN0X3VpZCA9PSBvcy5nZXR1
aWQoKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>