<?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>228662</bug_id>
          
          <creation_ts>2021-07-30 14:57:19 -0700</creation_ts>
          <short_desc>[git-webkit] Color `log` output</short_desc>
          <delta_ts>2021-08-10 14:35:39 -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>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=228027</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>228597</dependson>
          
          <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>ryanhaddad</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1780959</commentid>
    <comment_count>0</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-07-30 14:57:19 -0700</bug_when>
    <thetext>Some folks want to retain the colored output `git log` provides in `git-webkit log`.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1780960</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-07-30 14:57:34 -0700</bug_when>
    <thetext>&lt;rdar://problem/81344181&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1780964</commentid>
    <comment_count>2</comment_count>
      <attachid>434668</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-07-30 15:02:48 -0700</bug_when>
    <thetext>Created attachment 434668
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1781785</commentid>
    <comment_count>3</comment_count>
      <attachid>434871</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-08-03 16:52:41 -0700</bug_when>
    <thetext>Created attachment 434871
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1781945</commentid>
    <comment_count>4</comment_count>
      <attachid>434915</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-08-04 11:14:05 -0700</bug_when>
    <thetext>Created attachment 434915
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1783265</commentid>
    <comment_count>5</comment_count>
      <attachid>434915</attachid>
    <who name="">dewei_zhu</who>
    <bug_when>2021-08-10 13:11:39 -0700</bug_when>
    <thetext>Comment on attachment 434915
Patch

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

r=me

&gt; Tools/Scripts/libraries/webkitcorepy/webkitcorepy/terminal.py:73
&gt; +        if not isinstance(target, io.IOBase) and not isinstance(target, file) and not isinstance(target, StringIO):

This can be simplified as `if not isinstance(target, [io.IOBase, file, StringIO]):`

&gt; Tools/Scripts/libraries/webkitcorepy/webkitcorepy/terminal.py:94
&gt; +        if not isinstance(target, io.IOBase) and not isinstance(target, file) and not isinstance(target, StringIO):

ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1783276</commentid>
    <comment_count>6</comment_count>
      <attachid>435285</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-08-10 14:08:36 -0700</bug_when>
    <thetext>Created attachment 435285
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1783299</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-08-10 14:35:39 -0700</bug_when>
    <thetext>Committed r280864 (240404@main): &lt;https://commits.webkit.org/240404@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 435285.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434668</attachid>
            <date>2021-07-30 15:02:48 -0700</date>
            <delta_ts>2021-08-03 16:52:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228662-20210730150247.patch</filename>
            <type>text/plain</type>
            <size>19359</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwNDgzCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMWIzNjJlZWYxYTVlZjJmYzg2MTgzOWExZmM5NWM3NGMy
ZWU4NjI5Zi4uZTRiMWE3NGI0OGQ4NzQ2NmFiY2U0NmNhMzdhNTYyMWZlYzQ2NDM5ZCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1
IEBACisyMDIxLTA3LTMwICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbZ2l0LXdlYmtpdF0gQ29sb3IgYGxvZ2Agb3V0cHV0CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjg2NjIKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzgxMzQ0MTgxPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS9f
X2luaXRfXy5weTogRXhwb3J0IFRlcm1pbmFsLgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVz
L3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvdGVybWluYWwucHk6IEFkZGVkLgorICAgICAgICAo
VGVybWluYWwpOgorICAgICAgICAoVGVybWluYWwuYXNzZXJ0X3dyaXRlYWJsZV9zdHJlYW0pOiBB
c3NlcnQgdGhhdCB0aGUgcHJvdmlkZWQgb2JqZWN0IGlzIGEgd3JpdGFibGUgc3RyZWFtLgorICAg
ICAgICAoVGVybWluYWwuc3VwcG9ydHNfY29sb3IpOiBDaGVjayBpZiB0aGUgcHJvdmlkZWQgZmls
ZSBzdXBwb3J0cyBjb2xvcmVkIG91dHB1dC4KKyAgICAgICAgKFRlcm1pbmFsLmlzYXR0eSk6IENo
ZWNrIGlmIGEgc3RyZWFtIGlzIGFuIGF0dHksIGJvdGggYWNjb3JkaW5nIHRvIHRoZSBzdHJlYW0g
aXRzZWxmIGFuZCBvdXIgb3ZlcnJpZGUuCisgICAgICAgIChUZXJtaW5hbC5vdmVycmlkZV9hdHR5
KTogQWxsb3cgY2FsbGVycyB0byBvdmVycmlkZSBhbmQgZGVjbGFyZSBleHBsaWNpdGx5IGlmIGEg
c3RyZWFtIGlzIGFuIGF0dHkuCisgICAgICAgIChUZXJtaW5hbC5UZXh0KTogR3JvdXAgdGV4dCBj
b2xvcnMgYW5kIHN0eWxlcy4KKyAgICAgICAgKFRlcm1pbmFsLlN0eWxlKTogR3JvdXAgZnVuY3Rp
b25zIG1vZGlmeWluZyBzdHlsZSBvZiBhIHN0cmVhbS4KKyAgICAgICAgKFRlcm1pbmFsLlN0eWxl
LmVuYWJsZWQpOiBDaGVjayBpZiBzdHlsZWQgcHJpbnRpbmcgaXMgZW5hYmxlZCBvbiBhIHN0cmVh
bS4KKyAgICAgICAgKFRlcm1pbmFsLlN0eWxlLmRpc2FibGUpOiBEaXNhYmxlIHN0eWxlZCBwcmlu
dGluZyBvbiBhIHN0cmVhbS4KKyAgICAgICAgKFRlcm1pbmFsLlN0eWxlLmVuYWJsZSk6IEVuYWJs
ZSBzdHlsZWQgcHJpbnRpbmcgb24gYSBzdHJlYW0uCisgICAgICAgIChUZXJtaW5hbC5TdHlsZS5p
c19zdHlsZWQpOiBDaGVjayBpZiBhIHN0cmVhbSBpcyBjdXJyZW50bHkgc3R5bGVkLgorICAgICAg
ICAoVGVybWluYWwuU3R5bGUuX19pbml0X18pOiBDb25zdHJ1Y3QgYSB0ZXh0IHN0eWxlLgorICAg
ICAgICAoVGVybWluYWwuU3R5bGUuX19yZXByX18pOiBPdXRwdXQgdGhlIHRlcm1pbmFsIGNoYXJh
Y3RlcnMgc3R5bGluZyBhIHN0cmVhbS4KKyAgICAgICAgKFRlcm1pbmFsLlN0eWxlLnNldCk6IEFw
cGx5IHN0eWxlIHRvIGEgc3RyZWFtLgorICAgICAgICAoVGVybWluYWwuU3R5bGUuYXBwbHkpOiBB
cHBseSBzdHlsZSB0byBhIHN0cmVhbSwgdW5hcHBseSB3aGVuIGV4aXRpbmcgY29udGV4dC4KKyAg
ICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9wcm9ncmFt
L2JsYW1lLnB5OiBQYXNzIGlzYXR0eSB0byBjaGlsZCBwcm9jZXNzLgorICAgICAgICAqIFNjcmlw
dHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Byb2dyYW0vY29tbWFuZC5weToK
KyAgICAgICAgKEZpbHRlcmVkQ29tbWFuZC5wYWdlcik6IFBhc3MgaXNhdHR5IHRvIGNoaWxkIHBy
b2Nlc3MsIGFzayAnbW9yZScgdG8gZGlzcGxheSBjb2xvcnMuCisgICAgICAgIChGaWx0ZXJlZENv
bW1hbmQubWFpbik6IENvbG9yIGhlYWRlciBhbmQgZXJyb3IuCisgICAgICAgICogU2NyaXB0cy9s
aWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvcHJvZ3JhbS9sb2cucHk6IFBhc3MgaXNh
dHR5IHRvIGNoaWxkIHByb2Nlc3MuCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0
c2NtcHkvd2Via2l0c2NtcHkvdGVzdC9sb2dfdW5pdHRlc3QucHk6IE92ZXJyaWRlIGF0dHkgYmVo
YXZpb3IuCisKIDIwMjEtMDctMzAgIEpvbmF0aGFuIEJlZGFyZCAgPGpiZWRhcmRAYXBwbGUuY29t
PgogCiAgICAgICAgIFtnaXQtd2Via2l0XSBGb3J3YXJkIGVycm9ycyBmcm9tIGxvZyBhbmQgYmxh
bWUKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJr
aXRjb3JlcHkvX19pbml0X18ucHkgYi9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3Jl
cHkvd2Via2l0Y29yZXB5L19faW5pdF9fLnB5CmluZGV4IDYxNzU5OWZiMWVlZGFjMDkwOTgyYjBi
NDE1NDAwMjY3MTg4OTRlZmIuLmYxMjU3ZjVhODg4MDFiNzU0NWE0ZWY4ZGZiOTlhZjY3NjRiMzlh
MDAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJr
aXRjb3JlcHkvX19pbml0X18ucHkKKysrIGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0
Y29yZXB5L3dlYmtpdGNvcmVweS9fX2luaXRfXy5weQpAQCAtMzUsNiArMzUsNyBAQCBmcm9tIHdl
YmtpdGNvcmVweS50aW1lb3V0IGltcG9ydCBUaW1lb3V0CiBmcm9tIHdlYmtpdGNvcmVweS5zdWJw
cm9jZXNzX3V0aWxzIGltcG9ydCBUaW1lb3V0RXhwaXJlZCwgQ29tcGxldGVkUHJvY2VzcywgcnVu
CiBmcm9tIHdlYmtpdGNvcmVweS5vdXRwdXRfY2FwdHVyZSBpbXBvcnQgTG9nZ2VyQ2FwdHVyZSwg
T3V0cHV0Q2FwdHVyZSwgT3V0cHV0RHVwbGljYXRlCiBmcm9tIHdlYmtpdGNvcmVweS50YXNrX3Bv
b2wgaW1wb3J0IFRhc2tQb29sCitmcm9tIHdlYmtpdGNvcmVweS50ZXJtaW5hbCBpbXBvcnQgVGVy
bWluYWwKIGZyb20gd2Via2l0Y29yZXB5LmNyZWRlbnRpYWxzIGltcG9ydCBjcmVkZW50aWFscwog
ZnJvbSB3ZWJraXRjb3JlcHkubWVhc3VyZV90aW1lIGltcG9ydCBNZWFzdXJlVGltZQogZnJvbSB3
ZWJraXRjb3JlcHkubmVzdGVkX2Z1enp5X2RpY3QgaW1wb3J0IE5lc3RlZEZ1enp5RGljdApkaWZm
IC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVw
eS90ZXJtaW5hbC5weSBiL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJr
aXRjb3JlcHkvdGVybWluYWwucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzIxYWExN2UxNDMyMmRhMDFjNTg4NWUw
MGFjNGM5NDM2YmVhZjNhNwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvbGlicmFy
aWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvdGVybWluYWwucHkKQEAgLTAsMCArMSwxOTkg
QEAKKyMgQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorIyBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwor
IyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7CisjIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorIyBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworIyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworaW1wb3J0IGNvbnRleHRs
aWIKK2ltcG9ydCBpbworaW1wb3J0IHN5cworCitmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgU3Ry
aW5nSU8KKworaWYgc3lzLnZlcnNpb25faW5mbyA+ICgzLCAwKToKKyAgICBmaWxlID0gaW8uSU9C
YXNlCisKKworY2xhc3MgVGVybWluYWwob2JqZWN0KToKKyAgICBfYXR0eV9vdmVycmlkZXMgPSB7
fQorICAgIGNvbG9ycyA9IFRydWUKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBhc3NlcnRf
d3JpdGVhYmxlX3N0cmVhbShjbHMsIHRhcmdldCk6CisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNl
KHRhcmdldCwgaW8uSU9CYXNlKSBhbmQgbm90IGlzaW5zdGFuY2UodGFyZ2V0LCBmaWxlKSBhbmQg
bm90IGlzaW5zdGFuY2UodGFyZ2V0LCBTdHJpbmdJTyk6CisgICAgICAgICAgICByYWlzZSBWYWx1
ZUVycm9yKCd7fSBpcyBub3QgYW4gSU8gb2JqZWN0Jy5mb3JtYXQodGFyZ2V0KSkKKyAgICAgICAg
aWYgbm90IGlzaW5zdGFuY2UodGFyZ2V0LCBTdHJpbmdJTykgYW5kIG5vdCAoZ2V0YXR0cih0YXJn
ZXQsICd3cml0YWJsZScsIE5vbmUpIGFuZCB0YXJnZXQud3JpdGFibGUoKSkgYW5kICd3JyBub3Qg
aW4gZ2V0YXR0cih0YXJnZXQsICdtb2RlJywgJ3InKToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVl
RXJyb3IoJ3t9IGlzIGFuIElPIG9iamVjdCwgYnV0IGlzIG5vdCB3cml0YWJsZSB7fScuZm9ybWF0
KHRhcmdldCwgKSkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBzdXBwb3J0c19jb2xvcihj
bHMsIGZpbGUpOgorICAgICAgICBpZiBub3QgY2xzLmNvbG9yczoKKyAgICAgICAgICAgIHJldHVy
biBGYWxzZQorICAgICAgICByZXR1cm4gY2xzLmlzYXR0eShmaWxlKQorCisgICAgQGNsYXNzbWV0
aG9kCisgICAgZGVmIGlzYXR0eShjbHMsIGZpbGUpOgorICAgICAgICB0cnk6CisgICAgICAgICAg
ICByZXR1cm4gY2xzLl9hdHR5X292ZXJyaWRlcy5nZXQoZmlsZS5maWxlbm8oKSwgZmlsZS5pc2F0
dHkoKSkKKyAgICAgICAgZXhjZXB0IChpby5VbnN1cHBvcnRlZE9wZXJhdGlvbiwgQXR0cmlidXRl
RXJyb3IpOgorICAgICAgICAgICAgcmV0dXJuIGNscy5fYXR0eV9vdmVycmlkZXMuZ2V0KHN0cihm
aWxlKSwgZmlsZS5pc2F0dHkoKSkKKworICAgIEBjbGFzc21ldGhvZAorICAgIEBjb250ZXh0bGli
LmNvbnRleHRtYW5hZ2VyCisgICAgZGVmIG92ZXJyaWRlX2F0dHkoY2xzLCB0YXJnZXQsIGlzYXR0
eT1UcnVlKToKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UodGFyZ2V0LCBpby5JT0Jhc2UpIGFu
ZCBub3QgaXNpbnN0YW5jZSh0YXJnZXQsIGZpbGUpIGFuZCBub3QgaXNpbnN0YW5jZSh0YXJnZXQs
IFN0cmluZ0lPKToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3t9IGlzIG5vdCBhbiBJ
TyBvYmplY3QnLmZvcm1hdCh0YXJnZXQpKQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGtl
eSA9IHRhcmdldC5maWxlbm8oKQorICAgICAgICBleGNlcHQgKGlvLlVuc3VwcG9ydGVkT3BlcmF0
aW9uLCBBdHRyaWJ1dGVFcnJvcik6CisgICAgICAgICAgICBrZXkgPSBzdHIodGFyZ2V0KQorCisg
ICAgICAgIHByZXZpb3VzID0gY2xzLl9hdHR5X292ZXJyaWRlcy5nZXQoa2V5KQorICAgICAgICBj
bHMuX2F0dHlfb3ZlcnJpZGVzW2tleV0gPSBpc2F0dHkKKworICAgICAgICB0cnk6CisgICAgICAg
ICAgICB5aWVsZAorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgaWYgcHJldmlvdXMgaXMg
Tm9uZToKKyAgICAgICAgICAgICAgICBkZWwgY2xzLl9hdHR5X292ZXJyaWRlc1trZXldCisgICAg
ICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGNscy5fYXR0eV9vdmVycmlkZXNba2V5XSA9
IHByZXZpb3VzCisKKyAgICBjbGFzcyBUZXh0KG9iamVjdCk6CisgICAgICAgIHZhbHVlID0gbGFt
YmRhIHZhbHVlOiAnXDAzM1t7fW0nLmZvcm1hdCh2YWx1ZSkKKworICAgICAgICByZXNldCA9IHZh
bHVlKDApCisKKyAgICAgICAgc3R5bGVzID0gW3ZhbHVlKDEpLCB2YWx1ZSg0KSwgdmFsdWUoNSks
IHZhbHVlKDgpXQorICAgICAgICBib2xkLCB1bmRlcmxpbmUsIGJsaW5rLCBjb25jZWFsZWQgPSBz
dHlsZXMKKworICAgICAgICBjb2xvcnMgPSBbdmFsdWUoMzApLCB2YWx1ZSgzMSksIHZhbHVlKDMy
KSwgdmFsdWUoMzMpLCB2YWx1ZSgzNCksIHZhbHVlKDM1KSwgdmFsdWUoMzYpLCB2YWx1ZSgzNyld
CisgICAgICAgIGJsYWNrLCByZWQsIGdyZWVuLCB5ZWxsb3csIGJsdWUsIG1hZ2VudGEsIGN5YW4s
IHdoaXRlID0gY29sb3JzCisKKyAgICAgICAgYmFja2dyb3VuZENvbG9ycyA9IFt2YWx1ZSg0MCks
IHZhbHVlKDQxKSwgdmFsdWUoNDIpLCB2YWx1ZSg0MyksIHZhbHVlKDQ0KSwgdmFsdWUoNDUpLCB2
YWx1ZSg0NiksIHZhbHVlKDQ3KV0KKyAgICAgICAgYmxhY2tCYWNrZ3JvdW5kLCByZWRCYWNrZ3Jv
dW5kLCBncmVlbkJhY2tncm91bmQsIHllbGxvd0JhY2tncm91bmQsIGJsdWVCYWNrZ3JvdW5kLCBt
YWdlbnRhQmFja2dyb3VuZCwgY3lhbkJhY2tncm91bmQsIHdoaXRlQmFja2dyb3VuZCA9IGNvbG9y
cworCisgICAgY2xhc3MgU3R5bGUob2JqZWN0KToKKyAgICAgICAgdG9wID0ge30KKyAgICAgICAg
X2Rpc2FibGVkID0gc2V0KCkKKyAgICAgICAgX2lzX3N0eWxlZCA9IHNldCgpCisKKyAgICAgICAg
QGNsYXNzbWV0aG9kCisgICAgICAgIGRlZiBlbmFibGVkKGNscywgZmlsZSk6CisgICAgICAgICAg
ICBUZXJtaW5hbC5hc3NlcnRfd3JpdGVhYmxlX3N0cmVhbShmaWxlKQorCisgICAgICAgICAgICB0
cnk6CisgICAgICAgICAgICAgICAgaWYgbm90IFRlcm1pbmFsLnN1cHBvcnRzX2NvbG9yKGZpbGUp
IG9yIG5vdCBmaWxlLmZpbGVubygpOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UK
KyAgICAgICAgICAgIGV4Y2VwdCAoaW8uVW5zdXBwb3J0ZWRPcGVyYXRpb24sIEF0dHJpYnV0ZUVy
cm9yKToKKyAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgICAgIHJldHVybiBm
aWxlLmZpbGVubygpIG5vdCBpbiBjbHMuX2Rpc2FibGVkCisKKyAgICAgICAgQGNsYXNzbWV0aG9k
CisgICAgICAgIGRlZiBkaXNhYmxlKGNscywgZmlsZSk6CisgICAgICAgICAgICBUZXJtaW5hbC5h
c3NlcnRfd3JpdGVhYmxlX3N0cmVhbShmaWxlKQorICAgICAgICAgICAgaWYgbm90IGNscy5lbmFi
bGVkKGZpbGUpOgorICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgY2xzLl9kaXNh
YmxlZC5hZGQoZmlsZS5maWxlbm8oKSkKKyAgICAgICAgICAgIFRlcm1pbmFsLlN0eWxlKCkuc2V0
KGZpbGUpCisKKyAgICAgICAgQGNsYXNzbWV0aG9kCisgICAgICAgIGRlZiBlbmFibGUoY2xzLCBm
aWxlKToKKyAgICAgICAgICAgIFRlcm1pbmFsLmFzc2VydF93cml0ZWFibGVfc3RyZWFtKGZpbGUp
CisgICAgICAgICAgICBpZiBjbHMuZW5hYmxlZChmaWxlKToKKyAgICAgICAgICAgICAgICByZXR1
cm4KKworICAgICAgICAgICAgY2xzLl9kaXNhYmxlZC5kaXNjYXJkKGZpbGUuZmlsZW5vKCkpCisg
ICAgICAgICAgICBpZiBjbHMudG9wLmdldChmaWxlLmZpbGVubygpKToKKyAgICAgICAgICAgICAg
ICBjbHMudG9wLmdldChmaWxlLmZpbGVubygpKS5zZXQoZmlsZSkKKworICAgICAgICBAY2xhc3Nt
ZXRob2QKKyAgICAgICAgZGVmIGlzX3N0eWxlZChjbHMsIGZpbGUpOgorICAgICAgICAgICAgdHJ5
OgorICAgICAgICAgICAgICAgIHJldHVybiBmaWxlLmZpbGVubygpIGluIGNscy5faXNfc3R5bGVk
CisgICAgICAgICAgICBleGNlcHQgKGlvLlVuc3VwcG9ydGVkT3BlcmF0aW9uLCBBdHRyaWJ1dGVF
cnJvcik6CisgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICAgICAgZGVmIF9faW5p
dF9fKHNlbGYsIHN0eWxlPU5vbmUsIGNvbG9yPU5vbmUsIGJhY2tncm91bmRDb2xvcj1Ob25lKToK
KyAgICAgICAgICAgIGlmIHN0eWxlIGFuZCBzdHlsZSBub3QgaW4gVGVybWluYWwuVGV4dC5zdHls
ZXM6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigne30gaXMgbm90IGEgcmVjb2du
aXplZCB0ZXJtaW5hbCB0ZXh0IHN0eWxlJy5mb3JtYXQoc3R5bGUpKQorICAgICAgICAgICAgc2Vs
Zi5zdHlsZSA9IHN0eWxlCisKKyAgICAgICAgICAgIGlmIGNvbG9yIGFuZCBjb2xvciBub3QgaW4g
VGVybWluYWwuVGV4dC5jb2xvcnM6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcign
e30gaXMgbm90IGEgcmVjb2duaXplZCB0ZXJtaW5hbCBjb2xvcicuZm9ybWF0KGNvbG9yKSkKKyAg
ICAgICAgICAgIHNlbGYuY29sb3IgPSBjb2xvcgorCisgICAgICAgICAgICBpZiBiYWNrZ3JvdW5k
Q29sb3IgYW5kIGJhY2tncm91bmRDb2xvciBub3QgaW4gVGVybWluYWwuVGV4dC5iYWNrZ3JvdW5k
Q29sb3JzOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3t9IGlzIG5vdCBhIHJl
Y29nbml6ZWQgdGVybWluYWwgYmFja2dyb3VuZCBjb2xvcicuZm9ybWF0KGJhY2tncm91bmRDb2xv
cikpCisgICAgICAgICAgICBzZWxmLmJhY2tncm91bmRDb2xvciA9IGJhY2tncm91bmRDb2xvcgor
CisgICAgICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgICAgIHJlc3VsdCA9IFRlcm1p
bmFsLlRleHQucmVzZXQKKyAgICAgICAgICAgIGlmIHNlbGYuc3R5bGU6CisgICAgICAgICAgICAg
ICAgcmVzdWx0ICs9IHNlbGYuc3R5bGUKKyAgICAgICAgICAgIGlmIHNlbGYuY29sb3I6CisgICAg
ICAgICAgICAgICAgcmVzdWx0ICs9IHNlbGYuY29sb3IKKyAgICAgICAgICAgIGlmIHNlbGYuYmFj
a2dyb3VuZENvbG9yOgorICAgICAgICAgICAgICAgIHJlc3VsdCArPSBzZWxmLmJhY2tncm91bmRD
b2xvcgorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAorCisgICAgICAgIGRlZiBzZXQoc2VsZiwg
ZmlsZSk6CisgICAgICAgICAgICBUZXJtaW5hbC5hc3NlcnRfd3JpdGVhYmxlX3N0cmVhbShmaWxl
KQorICAgICAgICAgICAgd2lsbF9zdHlsZSA9IFRydWUKKyAgICAgICAgICAgIGlmIG5vdCBzZWxm
LnN0eWxlIGFuZCBub3Qgc2VsZi5jb2xvciBhbmQgbm90IHNlbGYuYmFja2dyb3VuZENvbG9yOgor
ICAgICAgICAgICAgICAgIHdpbGxfc3R5bGUgPSBGYWxzZQorICAgICAgICAgICAgZWxpZiBub3Qg
c2VsZi5lbmFibGVkKGZpbGUpOgorICAgICAgICAgICAgICAgIHdpbGxfc3R5bGUgPSBGYWxzZQor
CisgICAgICAgICAgICBpZiB3aWxsX3N0eWxlOgorICAgICAgICAgICAgICAgIHNlbGYuX2lzX3N0
eWxlZC5hZGQoZmlsZS5maWxlbm8oKSkKKyAgICAgICAgICAgICAgICBmaWxlLndyaXRlKHN0cihz
ZWxmKSkKKyAgICAgICAgICAgICAgICByZXR1cm4KKworICAgICAgICAgICAgaWYgc2VsZi5pc19z
dHlsZWQoZmlsZSk6CisgICAgICAgICAgICAgICAgZmlsZS53cml0ZShUZXJtaW5hbC5UZXh0LnJl
c2V0KQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNlbGYuX2lzX3N0eWxlZC5k
aXNjYXJkKGZpbGUuZmlsZW5vKCkpCisgICAgICAgICAgICBleGNlcHQgKGlvLlVuc3VwcG9ydGVk
T3BlcmF0aW9uLCBBdHRyaWJ1dGVFcnJvcik6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAg
ICAgIEBjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyCisgICAgICAgIGRlZiBhcHBseShzZWxmLCB0
YXJnZXQpOgorICAgICAgICAgICAgVGVybWluYWwuYXNzZXJ0X3dyaXRlYWJsZV9zdHJlYW0odGFy
Z2V0KQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHByZXZpb3VzID0gc2VsZi50
b3AuZ2V0KHRhcmdldC5maWxlbm8oKSkKKyAgICAgICAgICAgIGV4Y2VwdCAoaW8uVW5zdXBwb3J0
ZWRPcGVyYXRpb24sIEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgICAgICAgICB0cnk6CisgICAg
ICAgICAgICAgICAgICAgIHlpZWxkCisgICAgICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgICAgIHNlbGYudG9wW3RhcmdldC5maWxlbm8o
KV0gPSBzZWxmCisgICAgICAgICAgICBzZWxmLnNldCh0YXJnZXQpCisKKyAgICAgICAgICAgIHRy
eToKKyAgICAgICAgICAgICAgICB5aWVsZAorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAg
ICAgICAgICBpZiBwcmV2aW91czoKKyAgICAgICAgICAgICAgICAgICAgcHJldmlvdXMuc2V0KHRh
cmdldCkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi50b3BbdGFyZ2V0LmZpbGVubygpXSA9IHBy
ZXZpb3VzCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgVGVybWlu
YWwuU3R5bGUoKS5zZXQodGFyZ2V0KQorICAgICAgICAgICAgICAgICAgICBkZWwgc2VsZi50b3Bb
dGFyZ2V0LmZpbGVubygpXQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Vi
a2l0c2NtcHkvd2Via2l0c2NtcHkvcHJvZ3JhbS9ibGFtZS5weSBiL1Rvb2xzL1NjcmlwdHMvbGli
cmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Byb2dyYW0vYmxhbWUucHkKaW5kZXggNjYx
OTQ1ODFkNzdmNDE1OTg5YTkyODQ3NzMzMmM4MTA5Yjc3MDQzMS4uZTIwZjRkZGNiOGM2ODA4NzI4
ZGI4M2UxZjBhODMzZDMyNmEzNTMyNyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy9saWJyYXJp
ZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvcHJvZ3JhbS9ibGFtZS5weQorKysgYi9Ub29scy9T
Y3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9wcm9ncmFtL2JsYW1lLnB5
CkBAIC0zOSw3ICszOSw4IEBAIGNsYXNzIEJsYW1lKEZpbHRlcmVkQ29tbWFuZCk6CiAKIGlmIF9f
bmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgc3lzLmV4aXQoQmxhbWUubWFpbigKLSAgICAgICAg
c3lzLmFyZ3ZbMzpdLAorICAgICAgICBzeXMuYXJndls0Ol0sCiAgICAgICAgIGxvY2FsLlNjbS5m
cm9tX3BhdGgocGF0aD1zeXMuYXJndlsxXSwgY2FjaGVkPVRydWUpLAogICAgICAgICByZXByZXNl
bnRhdGlvbj1zeXMuYXJndlsyXSwKKyAgICAgICAgaXNhdHR5PXN5cy5hcmd2WzNdID09ICdpc2F0
dHknLAogICAgICkpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRz
Y21weS93ZWJraXRzY21weS9wcm9ncmFtL2NvbW1hbmQucHkgYi9Ub29scy9TY3JpcHRzL2xpYnJh
cmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9wcm9ncmFtL2NvbW1hbmQucHkKaW5kZXggYzRl
N2MyNWY2NTFlYmY2Nzg0ZmQyYTNhMzhlZWNkZDA0ZDY3OGE3ZC4uMjhhYTk5Nzc5YTUyNmQyNDU1
OTk0NzY1NWM3ZmRjMWFmZDNhMDVjYyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy9saWJyYXJp
ZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvcHJvZ3JhbS9jb21tYW5kLnB5CisrKyBiL1Rvb2xz
L1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Byb2dyYW0vY29tbWFu
ZC5weQpAQCAtMjcsNiArMjcsNyBAQCBpbXBvcnQgc3VicHJvY2VzcwogaW1wb3J0IHN5cwogaW1w
b3J0IHRpbWUKIAorZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IFRlcm1pbmFsCiBmcm9tIHdlYmtp
dHNjbXB5LmNvbW1pdCBpbXBvcnQgQ29tbWl0CiBmcm9tIHdoaWNoY3JhZnQgaW1wb3J0IHdoaWNo
CiAKQEAgLTExMCwzMiArMTExLDM1IEBAIGNsYXNzIEZpbHRlcmVkQ29tbWFuZChvYmplY3QpOgog
ICAgICAgICAgICAgcmVwb3NpdG9yeS5jYWNoZSA9IHJlcG9zaXRvcnkuQ2FjaGUocmVwb3NpdG9y
eSkKIAogICAgICAgICAjIElmIHdlJ3JlIGEgdGVybWluYWwsIHJlbHkgb24gJ21vcmUnIHRvIGRp
c3BsYXkgb3V0cHV0Ci0gICAgICAgIGlmIHN5cy5zdGRpbi5pc2F0dHkoKSBhbmQgbm90IGlzaW5z
dGFuY2UoYXJncywgbGlzdCkgYW5kIGZpbGU6CisgICAgICAgIGlmIFRlcm1pbmFsLmlzYXR0eShz
eXMuc3RkaW4pIGFuZCBub3QgaXNpbnN0YW5jZShhcmdzLCBsaXN0KSBhbmQgZmlsZToKICAgICAg
ICAgICAgIGVudmlyb24gPSBvcy5lbnZpcm9uCiAgICAgICAgICAgICBlbnZpcm9uWydQWVRIT05Q
QVRIJ10gPSAnOicuam9pbihzeXMucGF0aCkKIAogICAgICAgICAgICAgY2hpbGQgPSBzdWJwcm9j
ZXNzLlBvcGVuKAotICAgICAgICAgICAgICAgIFtzeXMuZXhlY3V0YWJsZSwgZmlsZSwgcmVwb3Np
dG9yeS5yb290X3BhdGgsIGFyZ3MucmVwcmVzZW50YXRpb25dICsgYXJncy5hcmdzLAorICAgICAg
ICAgICAgICAgIFtzeXMuZXhlY3V0YWJsZSwgZmlsZSwgcmVwb3NpdG9yeS5yb290X3BhdGgsIGFy
Z3MucmVwcmVzZW50YXRpb24sICdpc2F0dHknIGlmIFRlcm1pbmFsLmlzYXR0eShzeXMuc3Rkb3V0
KSBlbHNlICdub3RhdHR5J10gKyBhcmdzLmFyZ3MsCiAgICAgICAgICAgICAgICAgZW52PWVudmly
b24sCiAgICAgICAgICAgICAgICAgY3dkPW9zLmdldGN3ZCgpLAogICAgICAgICAgICAgICAgIHN0
ZG91dD1zdWJwcm9jZXNzLlBJUEUsCiAgICAgICAgICAgICAgICAgc3RkZXJyPXN1YnByb2Nlc3Mu
UElQRSwKICAgICAgICAgICAgICkKLSAgICAgICAgICAgIG1vcmUgPSBzdWJwcm9jZXNzLlBvcGVu
KFt3aGljaCgnbW9yZScpXSArIFsnLUYnXSBpZiBwbGF0Zm9ybS5zeXN0ZW0oKSA9PSAnRGFyd2lu
JyBlbHNlIFtdLCBzdGRpbj1jaGlsZC5zdGRvdXQpCisgICAgICAgICAgICBtb3JlID0gc3VicHJv
Y2Vzcy5Qb3Blbihbd2hpY2goJ21vcmUnKV0gKyBbJy1GJywgJy1SJ10gaWYgcGxhdGZvcm0uc3lz
dGVtKCkgPT0gJ0RhcndpbicgZWxzZSBbXSwgc3RkaW49Y2hpbGQuc3Rkb3V0KQogCiAgICAgICAg
ICAgICB0cnk6CiAgICAgICAgICAgICAgICAgd2hpbGUgbW9yZS5wb2xsKCkgaXMgTm9uZSBhbmQg
bm90IGNoaWxkLnBvbGwoKToKICAgICAgICAgICAgICAgICAgICAgdGltZS5zbGVlcCgwLjI1KQog
ICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBjaGlsZC5raWxsKCkKLSAgICAg
ICAgICAgICAgICBtb3JlLmtpbGwoKQorICAgICAgICAgICAgICAgIGlmIGNoaWxkLnJldHVybmNv
ZGUgaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgY2hpbGQua2lsbCgpCisgICAgICAgICAg
ICAgICAgaWYgbW9yZS5yZXR1cm5jb2RlIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgIG1v
cmUua2lsbCgpCiAgICAgICAgICAgICAgICAgY2hpbGRfZXJyb3IgPSBjaGlsZC5zdGRlcnIucmVh
ZCgpCiAgICAgICAgICAgICAgICAgaWYgY2hpbGRfZXJyb3I6Ci0gICAgICAgICAgICAgICAgICAg
IHN5cy5zdGRlcnIuYnVmZmVyLndyaXRlKGInXG4nICsgY2hpbGRfZXJyb3IpCisgICAgICAgICAg
ICAgICAgICAgIChzeXMuc3RkZXJyLmJ1ZmZlciBpZiBzeXMudmVyc2lvbl9pbmZvID4gKDMsIDAp
IGVsc2Ugc3lzLnN0ZGVycikud3JpdGUoYidcbicgKyBjaGlsZF9lcnJvcikKIAogICAgICAgICAg
ICAgcmV0dXJuIGNoaWxkLnJldHVybmNvZGUKIAotICAgICAgICByZXR1cm4gRmlsdGVyZWRDb21t
YW5kLm1haW4oYXJncywgcmVwb3NpdG9yeSwgY29tbWFuZD1jbHMubmFtZSwgKiprd2FyZ3MpCisg
ICAgICAgIHdpdGggVGVybWluYWwub3ZlcnJpZGVfYXR0eShzeXMuc3Rkb3V0LCBpc2F0dHk9a3dh
cmdzLmdldCgnaXNhdHR5JykpLCBUZXJtaW5hbC5vdmVycmlkZV9hdHR5KHN5cy5zdGRlcnIsIGlz
YXR0eT1rd2FyZ3MuZ2V0KCdpc2F0dHknKSk6CisgICAgICAgICAgICByZXR1cm4gRmlsdGVyZWRD
b21tYW5kLm1haW4oYXJncywgcmVwb3NpdG9yeSwgY29tbWFuZD1jbHMubmFtZSwgKiprd2FyZ3Mp
CiAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgbWFpbihjbHMsIGFyZ3MsIHJlcG9zaXRvcnks
IGNvbW1hbmQ9Tm9uZSwgcmVwcmVzZW50YXRpb249Tm9uZSwgKiprd2FyZ3MpOgpAQCAtMjM0LDcg
KzIzOCwxMyBAQCBjbGFzcyBGaWx0ZXJlZENvbW1hbmQob2JqZWN0KToKICAgICAgICAgICAgICAg
ICAgICAgbGluZSwKICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgaWYgaGVhZGVy
ICE9IGxpbmU6Ci0gICAgICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoaGVhZGVyKQor
ICAgICAgICAgICAgICAgICAgICB3aXRoIFRlcm1pbmFsLlN0eWxlKGNvbG9yPVRlcm1pbmFsLlRl
eHQueWVsbG93LCBzdHlsZT1UZXJtaW5hbC5UZXh0LmJvbGQpLmFwcGx5KHN5cy5zdGRvdXQpOgor
ICAgICAgICAgICAgICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgnICcuam9pbihoZWFkZXIu
c3BsaXQoJyAnKVs6Ml0pKQorCisgICAgICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUo
JyAnKQorICAgICAgICAgICAgICAgICAgICB3aXRoIFRlcm1pbmFsLlN0eWxlKGNvbG9yPVRlcm1p
bmFsLlRleHQucmVkKS5hcHBseShzeXMuc3Rkb3V0KToKKyAgICAgICAgICAgICAgICAgICAgICAg
IHN5cy5zdGRvdXQud3JpdGUoJyAnLmpvaW4oaGVhZGVyLnNwbGl0KCcgJylbMjpdKSkKKwogICAg
ICAgICAgICAgICAgICAgICBsaW5lID0gbG9nX291dHB1dC5zdGRvdXQucmVhZGxpbmUoKQogICAg
ICAgICAgICAgICAgICAgICBjb250aW51ZQogCkBAIC0yNTcsNiArMjY3LDggQEAgY2xhc3MgRmls
dGVyZWRDb21tYW5kKG9iamVjdCk6CiAKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIGlm
IG5vdCBsb2dfb3V0cHV0LnJldHVybmNvZGU6Ci0gICAgICAgICAgICAgICAgc3lzLnN0ZGVyci53
cml0ZShsb2dfb3V0cHV0LnN0ZGVyci5yZWFkKCkpCi0gICAgICAgICAgICBsb2dfb3V0cHV0Lmtp
bGwoKQorICAgICAgICAgICAgICAgIHdpdGggVGVybWluYWwuU3R5bGUoY29sb3I9VGVybWluYWwu
VGV4dC5yZWQpLmFwcGx5KHN5cy5zdGRlcnIpOgorICAgICAgICAgICAgICAgICAgICBzeXMuc3Rk
ZXJyLndyaXRlKGxvZ19vdXRwdXQuc3RkZXJyLnJlYWQoKSkKKyAgICAgICAgICAgIGlmIGxvZ19v
dXRwdXQucmV0dXJuY29kZSBpcyBOb25lOgorICAgICAgICAgICAgICAgIGxvZ19vdXRwdXQua2ls
bCgpCiAgICAgICAgIHJldHVybiBsb2dfb3V0cHV0LnJldHVybmNvZGUKZGlmZiAtLWdpdCBhL1Rv
b2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Byb2dyYW0vbG9n
LnB5IGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvcHJv
Z3JhbS9sb2cucHkKaW5kZXggZjIwOTlmMTEzZTFhMDkyZDYxYzgxNWVmMTQyYjkxNDhjOWRiZjAz
Mi4uOGYyNjFiNDcxZjk1ZjliNTlhMWJjMDFlZDcyN2M4ZGRlMmUwNDAzMSAxMDA2NDQKLS0tIGEv
VG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvcHJvZ3JhbS9s
b2cucHkKKysrIGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2Nt
cHkvcHJvZ3JhbS9sb2cucHkKQEAgLTM5LDcgKzM5LDggQEAgY2xhc3MgTG9nKEZpbHRlcmVkQ29t
bWFuZCk6CiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgc3lzLmV4aXQoTG9nLm1h
aW4oCi0gICAgICAgIHN5cy5hcmd2WzM6XSwKKyAgICAgICAgc3lzLmFyZ3ZbNDpdLAogICAgICAg
ICBsb2NhbC5TY20uZnJvbV9wYXRoKHBhdGg9c3lzLmFyZ3ZbMV0sIGNhY2hlZD1UcnVlKSwKICAg
ICAgICAgcmVwcmVzZW50YXRpb249c3lzLmFyZ3ZbMl0sCisgICAgICAgIGlzYXR0eT1zeXMuYXJn
dlszXSA9PSAnaXNhdHR5JywKICAgICApKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9saWJy
YXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvdGVzdC9sb2dfdW5pdHRlc3QucHkgYi9Ub29s
cy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS90ZXN0L2xvZ191bml0
dGVzdC5weQppbmRleCBiMmM0N2E4Yjc5NGQ2N2YxNDZjYmM4MDZkZjJiM2M2M2ZlYzhmZGQzLi43
MTc2YmZlYzY4M2EyZGI1ZjhhZjJlOThlNWNmZTQ2NmQwNDA4MThkIDEwMDY0NAotLS0gYS9Ub29s
cy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS90ZXN0L2xvZ191bml0
dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRz
Y21weS90ZXN0L2xvZ191bml0dGVzdC5weQpAQCAtMjAsMTMgKzIwLDEwIEBACiAjIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKLWltcG9ydCBqc29uCiBpbXBvcnQgb3MKLWlt
cG9ydCBzaHV0aWwKLWltcG9ydCB0ZW1wZmlsZQoraW1wb3J0IHN5cwogCi1mcm9tIGRhdGV0aW1l
IGltcG9ydCBkYXRldGltZQotZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IE91dHB1dENhcHR1cmUs
IHRlc3RpbmcKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBPdXRwdXRDYXB0dXJlLCBUZXJtaW5h
bCwgdGVzdGluZwogZnJvbSB3ZWJraXRjb3JlcHkubW9ja3MgaW1wb3J0IFRpbWUgYXMgTW9ja1Rp
bWUKIGZyb20gd2Via2l0c2NtcHkgaW1wb3J0IHByb2dyYW0sIG1vY2tzCiAKQEAgLTQwLDcgKzM3
LDcgQEAgY2xhc3MgVGVzdExvZyh0ZXN0aW5nLlBhdGhUZXN0Q2FzZSk6CiAgICAgICAgIG9zLm1r
ZGlyKG9zLnBhdGguam9pbihzZWxmLnBhdGgsICcuc3ZuJykpCiAKICAgICBkZWYgdGVzdF9naXQo
c2VsZik6Ci0gICAgICAgIHdpdGggT3V0cHV0Q2FwdHVyZSgpIGFzIGNhcHR1cmVkLCBtb2Nrcy5s
b2NhbC5HaXQoc2VsZi5wYXRoKSwgbW9ja3MubG9jYWwuU3ZuKCksIE1vY2tUaW1lOgorICAgICAg
ICB3aXRoIE91dHB1dENhcHR1cmUoKSBhcyBjYXB0dXJlZCwgbW9ja3MubG9jYWwuR2l0KHNlbGYu
cGF0aCksIG1vY2tzLmxvY2FsLlN2bigpLCBNb2NrVGltZSwgVGVybWluYWwub3ZlcnJpZGVfYXR0
eShzeXMuc3RkaW4sIGlzYXR0eT1GYWxzZSk6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KC0xLCBwcm9ncmFtLm1haW4oCiAgICAgICAgICAgICAgICAgYXJncz0oJ2xvZycsICdtYWluJyks
CiAgICAgICAgICAgICAgICAgcGF0aD1zZWxmLnBhdGgsCkBAIC04MSw3ICs3OCw3IEBAIERhdGU6
ICAgU2F0IE9jdCAwMyAwMTozMzoyMCAyMDIwICswMDAwCiAgICAgICAgICkKIAogICAgIGRlZiB0
ZXN0X2dpdF9zdm4oc2VsZik6Ci0gICAgICAgIHdpdGggT3V0cHV0Q2FwdHVyZSgpIGFzIGNhcHR1
cmVkLCBtb2Nrcy5sb2NhbC5HaXQoc2VsZi5wYXRoLCBnaXRfc3ZuPVRydWUpLCBtb2Nrcy5sb2Nh
bC5Tdm4oKSwgTW9ja1RpbWU6CisgICAgICAgIHdpdGggT3V0cHV0Q2FwdHVyZSgpIGFzIGNhcHR1
cmVkLCBtb2Nrcy5sb2NhbC5HaXQoc2VsZi5wYXRoLCBnaXRfc3ZuPVRydWUpLCBtb2Nrcy5sb2Nh
bC5Tdm4oKSwgTW9ja1RpbWUsIFRlcm1pbmFsLm92ZXJyaWRlX2F0dHkoc3lzLnN0ZGluLCBpc2F0
dHk9RmFsc2UpOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgtMSwgcHJvZ3JhbS5tYWlu
KAogICAgICAgICAgICAgICAgIGFyZ3M9KCdsb2cnLCAnbWFpbicpLAogICAgICAgICAgICAgICAg
IHBhdGg9c2VsZi5wYXRoLApAQCAtMTI3LDcgKzEyNCw3IEBAIERhdGU6ICAgU2F0IE9jdCAwMyAw
MTozMzoyMCAyMDIwICswMDAwCiAgICAgICAgICAgICApCiAKICAgICBkZWYgdGVzdF9naXRfc3Zu
X3JldmlzaW9uKHNlbGYpOgotICAgICAgICB3aXRoIE91dHB1dENhcHR1cmUoKSBhcyBjYXB0dXJl
ZCwgbW9ja3MubG9jYWwuR2l0KHNlbGYucGF0aCwgZ2l0X3N2bj1UcnVlKSwgbW9ja3MubG9jYWwu
U3ZuKCksIE1vY2tUaW1lOgorICAgICAgICB3aXRoIE91dHB1dENhcHR1cmUoKSBhcyBjYXB0dXJl
ZCwgbW9ja3MubG9jYWwuR2l0KHNlbGYucGF0aCwgZ2l0X3N2bj1UcnVlKSwgbW9ja3MubG9jYWwu
U3ZuKCksIE1vY2tUaW1lLCBUZXJtaW5hbC5vdmVycmlkZV9hdHR5KHN5cy5zdGRpbiwgaXNhdHR5
PUZhbHNlKToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoLTEsIHByb2dyYW0ubWFpbigK
ICAgICAgICAgICAgICAgICBhcmdzPSgnbG9nJywgJ21haW4nLCAnLS1yZXZpc2lvbicpLAogICAg
ICAgICAgICAgICAgIHBhdGg9c2VsZi5wYXRoLApAQCAtMTc0LDcgKzE3MSw3IEBAIERhdGU6ICAg
U2F0IE9jdCAwMyAwMTozMzoyMCAyMDIwICswMDAwCiAgICAgICAgICAgICApCiAKICAgICBkZWYg
dGVzdF9zdm4oc2VsZik6Ci0gICAgICAgIHdpdGggT3V0cHV0Q2FwdHVyZSgpIGFzIGNhcHR1cmVk
LCBtb2Nrcy5sb2NhbC5HaXQoKSwgbW9ja3MubG9jYWwuU3ZuKHNlbGYucGF0aCksIE1vY2tUaW1l
OgorICAgICAgICB3aXRoIE91dHB1dENhcHR1cmUoKSBhcyBjYXB0dXJlZCwgbW9ja3MubG9jYWwu
R2l0KCksIG1vY2tzLmxvY2FsLlN2bihzZWxmLnBhdGgpLCBNb2NrVGltZSwgVGVybWluYWwub3Zl
cnJpZGVfYXR0eShzeXMuc3RkaW4sIGlzYXR0eT1GYWxzZSk6CiAgICAgICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKC0xLCBwcm9ncmFtLm1haW4oCiAgICAgICAgICAgICAgICAgYXJncz0oJ2xvZycs
KSwKICAgICAgICAgICAgICAgICBwYXRoPXNlbGYucGF0aCwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434871</attachid>
            <date>2021-08-03 16:52:41 -0700</date>
            <delta_ts>2021-08-04 11:14:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228662-20210803165240.patch</filename>
            <type>text/plain</type>
            <size>19366</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI4MDYyMCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDM1IEBACisyMDIxLTA4LTAzICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBbZ2l0LXdlYmtpdF0gQ29sb3IgYGxvZ2Agb3V0cHV0CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjg2NjIKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzgxMzQ0MTgxPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNv
cmVweS9fX2luaXRfXy5weTogRXhwb3J0IFRlcm1pbmFsLgorICAgICAgICAqIFNjcmlwdHMvbGli
cmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvdGVybWluYWwucHk6IEFkZGVkLgorICAg
ICAgICAoVGVybWluYWwpOgorICAgICAgICAoVGVybWluYWwuYXNzZXJ0X3dyaXRlYWJsZV9zdHJl
YW0pOiBBc3NlcnQgdGhhdCB0aGUgcHJvdmlkZWQgb2JqZWN0IGlzIGEgd3JpdGFibGUgc3RyZWFt
LgorICAgICAgICAoVGVybWluYWwuc3VwcG9ydHNfY29sb3IpOiBDaGVjayBpZiB0aGUgcHJvdmlk
ZWQgZmlsZSBzdXBwb3J0cyBjb2xvcmVkIG91dHB1dC4KKyAgICAgICAgKFRlcm1pbmFsLmlzYXR0
eSk6IENoZWNrIGlmIGEgc3RyZWFtIGlzIGFuIGF0dHksIGJvdGggYWNjb3JkaW5nIHRvIHRoZSBz
dHJlYW0gaXRzZWxmIGFuZCBvdXIgb3ZlcnJpZGUuCisgICAgICAgIChUZXJtaW5hbC5vdmVycmlk
ZV9hdHR5KTogQWxsb3cgY2FsbGVycyB0byBvdmVycmlkZSBhbmQgZGVjbGFyZSBleHBsaWNpdGx5
IGlmIGEgc3RyZWFtIGlzIGFuIGF0dHkuCisgICAgICAgIChUZXJtaW5hbC5UZXh0KTogR3JvdXAg
dGV4dCBjb2xvcnMgYW5kIHN0eWxlcy4KKyAgICAgICAgKFRlcm1pbmFsLlN0eWxlKTogR3JvdXAg
ZnVuY3Rpb25zIG1vZGlmeWluZyBzdHlsZSBvZiBhIHN0cmVhbS4KKyAgICAgICAgKFRlcm1pbmFs
LlN0eWxlLmVuYWJsZWQpOiBDaGVjayBpZiBzdHlsZWQgcHJpbnRpbmcgaXMgZW5hYmxlZCBvbiBh
IHN0cmVhbS4KKyAgICAgICAgKFRlcm1pbmFsLlN0eWxlLmRpc2FibGUpOiBEaXNhYmxlIHN0eWxl
ZCBwcmludGluZyBvbiBhIHN0cmVhbS4KKyAgICAgICAgKFRlcm1pbmFsLlN0eWxlLmVuYWJsZSk6
IEVuYWJsZSBzdHlsZWQgcHJpbnRpbmcgb24gYSBzdHJlYW0uCisgICAgICAgIChUZXJtaW5hbC5T
dHlsZS5pc19zdHlsZWQpOiBDaGVjayBpZiBhIHN0cmVhbSBpcyBjdXJyZW50bHkgc3R5bGVkLgor
ICAgICAgICAoVGVybWluYWwuU3R5bGUuX19pbml0X18pOiBDb25zdHJ1Y3QgYSB0ZXh0IHN0eWxl
LgorICAgICAgICAoVGVybWluYWwuU3R5bGUuX19yZXByX18pOiBPdXRwdXQgdGhlIHRlcm1pbmFs
IGNoYXJhY3RlcnMgc3R5bGluZyBhIHN0cmVhbS4KKyAgICAgICAgKFRlcm1pbmFsLlN0eWxlLnNl
dCk6IEFwcGx5IHN0eWxlIHRvIGEgc3RyZWFtLgorICAgICAgICAoVGVybWluYWwuU3R5bGUuYXBw
bHkpOiBBcHBseSBzdHlsZSB0byBhIHN0cmVhbSwgdW5hcHBseSB3aGVuIGV4aXRpbmcgY29udGV4
dC4KKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9w
cm9ncmFtL2JsYW1lLnB5OiBQYXNzIGlzYXR0eSB0byBjaGlsZCBwcm9jZXNzLgorICAgICAgICAq
IFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Byb2dyYW0vY29tbWFu
ZC5weToKKyAgICAgICAgKEZpbHRlcmVkQ29tbWFuZC5wYWdlcik6IFBhc3MgaXNhdHR5IHRvIGNo
aWxkIHByb2Nlc3MsIGFzayAnbW9yZScgdG8gZGlzcGxheSBjb2xvcnMuCisgICAgICAgIChGaWx0
ZXJlZENvbW1hbmQubWFpbik6IENvbG9yIGhlYWRlciBhbmQgZXJyb3IuCisgICAgICAgICogU2Ny
aXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvcHJvZ3JhbS9sb2cucHk6IFBh
c3MgaXNhdHR5IHRvIGNoaWxkIHByb2Nlc3MuCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMv
d2Via2l0c2NtcHkvd2Via2l0c2NtcHkvdGVzdC9sb2dfdW5pdHRlc3QucHk6IE92ZXJyaWRlIGF0
dHkgYmVoYXZpb3IuCisKIDIwMjEtMDgtMDMgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5j
b20+CiAKICAgICAgICAgV2ViS2l0VGVzdFJ1bm5lciBzaG91bGQgZHVtcCBjdXJyZW50IHJlc3Vs
dHMgaW4gdGhlIGNhc2Ugb2YgYSB0aW1lb3V0CkluZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmll
cy93ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L19faW5pdF9fLnB5Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvX19pbml0X18u
cHkJKHJldmlzaW9uIDI4MDYyMCkKKysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNv
cmVweS93ZWJraXRjb3JlcHkvX19pbml0X18ucHkJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1
LDcgQEAgZnJvbSB3ZWJraXRjb3JlcHkudGltZW91dCBpbXBvcnQgVGltZW91dAogZnJvbSB3ZWJr
aXRjb3JlcHkuc3VicHJvY2Vzc191dGlscyBpbXBvcnQgVGltZW91dEV4cGlyZWQsIENvbXBsZXRl
ZFByb2Nlc3MsIHJ1bgogZnJvbSB3ZWJraXRjb3JlcHkub3V0cHV0X2NhcHR1cmUgaW1wb3J0IExv
Z2dlckNhcHR1cmUsIE91dHB1dENhcHR1cmUsIE91dHB1dER1cGxpY2F0ZQogZnJvbSB3ZWJraXRj
b3JlcHkudGFza19wb29sIGltcG9ydCBUYXNrUG9vbAorZnJvbSB3ZWJraXRjb3JlcHkudGVybWlu
YWwgaW1wb3J0IFRlcm1pbmFsCiBmcm9tIHdlYmtpdGNvcmVweS5jcmVkZW50aWFscyBpbXBvcnQg
Y3JlZGVudGlhbHMKIGZyb20gd2Via2l0Y29yZXB5Lm1lYXN1cmVfdGltZSBpbXBvcnQgTWVhc3Vy
ZVRpbWUKIGZyb20gd2Via2l0Y29yZXB5Lm5lc3RlZF9mdXp6eV9kaWN0IGltcG9ydCBOZXN0ZWRG
dXp6eURpY3QKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJr
aXRjb3JlcHkvdGVybWluYWwucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJp
ZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS90ZXJtaW5hbC5weQkobm9uZXhpc3RlbnQpCisr
KyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L3Rlcm1p
bmFsLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTk5IEBACisjIENvcHlyaWdodCAoQykg
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JyBBTkQgQU5ZCisjIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKKyMgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OworIyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyMgQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMKKyMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCBjb250ZXh0bGliCitpbXBvcnQgaW8KK2ltcG9y
dCBzeXMKKworZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IFN0cmluZ0lPCisKK2lmIHN5cy52ZXJz
aW9uX2luZm8gPiAoMywgMCk6CisgICAgZmlsZSA9IGlvLklPQmFzZQorCisKK2NsYXNzIFRlcm1p
bmFsKG9iamVjdCk6CisgICAgX2F0dHlfb3ZlcnJpZGVzID0ge30KKyAgICBjb2xvcnMgPSBUcnVl
CisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgYXNzZXJ0X3dyaXRlYWJsZV9zdHJlYW0oY2xz
LCB0YXJnZXQpOgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZSh0YXJnZXQsIGlvLklPQmFzZSkg
YW5kIG5vdCBpc2luc3RhbmNlKHRhcmdldCwgZmlsZSkgYW5kIG5vdCBpc2luc3RhbmNlKHRhcmdl
dCwgU3RyaW5nSU8pOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigne30gaXMgbm90IGFu
IElPIG9iamVjdCcuZm9ybWF0KHRhcmdldCkpCisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHRh
cmdldCwgU3RyaW5nSU8pIGFuZCBub3QgKGdldGF0dHIodGFyZ2V0LCAnd3JpdGFibGUnLCBOb25l
KSBhbmQgdGFyZ2V0LndyaXRhYmxlKCkpIGFuZCAndycgbm90IGluIGdldGF0dHIodGFyZ2V0LCAn
bW9kZScsICdyJyk6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCd7fSBpcyBhbiBJTyBv
YmplY3QsIGJ1dCBpcyBub3Qgd3JpdGFibGUge30nLmZvcm1hdCh0YXJnZXQsICkpCisKKyAgICBA
Y2xhc3NtZXRob2QKKyAgICBkZWYgc3VwcG9ydHNfY29sb3IoY2xzLCBmaWxlKToKKyAgICAgICAg
aWYgbm90IGNscy5jb2xvcnM6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgcmV0
dXJuIGNscy5pc2F0dHkoZmlsZSkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBpc2F0dHko
Y2xzLCBmaWxlKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuIGNscy5fYXR0eV9v
dmVycmlkZXMuZ2V0KGZpbGUuZmlsZW5vKCksIGZpbGUuaXNhdHR5KCkpCisgICAgICAgIGV4Y2Vw
dCAoaW8uVW5zdXBwb3J0ZWRPcGVyYXRpb24sIEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgICAg
IHJldHVybiBjbHMuX2F0dHlfb3ZlcnJpZGVzLmdldChzdHIoZmlsZSksIGZpbGUuaXNhdHR5KCkp
CisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBAY29udGV4dGxpYi5jb250ZXh0bWFuYWdlcgorICAg
IGRlZiBvdmVycmlkZV9hdHR5KGNscywgdGFyZ2V0LCBpc2F0dHk9VHJ1ZSk6CisgICAgICAgIGlm
IG5vdCBpc2luc3RhbmNlKHRhcmdldCwgaW8uSU9CYXNlKSBhbmQgbm90IGlzaW5zdGFuY2UodGFy
Z2V0LCBmaWxlKSBhbmQgbm90IGlzaW5zdGFuY2UodGFyZ2V0LCBTdHJpbmdJTyk6CisgICAgICAg
ICAgICByYWlzZSBWYWx1ZUVycm9yKCd7fSBpcyBub3QgYW4gSU8gb2JqZWN0Jy5mb3JtYXQodGFy
Z2V0KSkKKworICAgICAgICB0cnk6CisgICAgICAgICAgICBrZXkgPSB0YXJnZXQuZmlsZW5vKCkK
KyAgICAgICAgZXhjZXB0IChpby5VbnN1cHBvcnRlZE9wZXJhdGlvbiwgQXR0cmlidXRlRXJyb3Ip
OgorICAgICAgICAgICAga2V5ID0gc3RyKHRhcmdldCkKKworICAgICAgICBwcmV2aW91cyA9IGNs
cy5fYXR0eV9vdmVycmlkZXMuZ2V0KGtleSkKKyAgICAgICAgY2xzLl9hdHR5X292ZXJyaWRlc1tr
ZXldID0gaXNhdHR5CisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgeWllbGQKKyAgICAgICAg
ZmluYWxseToKKyAgICAgICAgICAgIGlmIHByZXZpb3VzIGlzIE5vbmU6CisgICAgICAgICAgICAg
ICAgZGVsIGNscy5fYXR0eV9vdmVycmlkZXNba2V5XQorICAgICAgICAgICAgZWxzZToKKyAgICAg
ICAgICAgICAgICBjbHMuX2F0dHlfb3ZlcnJpZGVzW2tleV0gPSBwcmV2aW91cworCisgICAgY2xh
c3MgVGV4dChvYmplY3QpOgorICAgICAgICB2YWx1ZSA9IGxhbWJkYSB2YWx1ZTogJ1wwMzNbe31t
Jy5mb3JtYXQodmFsdWUpCisKKyAgICAgICAgcmVzZXQgPSB2YWx1ZSgwKQorCisgICAgICAgIHN0
eWxlcyA9IFt2YWx1ZSgxKSwgdmFsdWUoNCksIHZhbHVlKDUpLCB2YWx1ZSg4KV0KKyAgICAgICAg
Ym9sZCwgdW5kZXJsaW5lLCBibGluaywgY29uY2VhbGVkID0gc3R5bGVzCisKKyAgICAgICAgY29s
b3JzID0gW3ZhbHVlKDMwKSwgdmFsdWUoMzEpLCB2YWx1ZSgzMiksIHZhbHVlKDMzKSwgdmFsdWUo
MzQpLCB2YWx1ZSgzNSksIHZhbHVlKDM2KSwgdmFsdWUoMzcpXQorICAgICAgICBibGFjaywgcmVk
LCBncmVlbiwgeWVsbG93LCBibHVlLCBtYWdlbnRhLCBjeWFuLCB3aGl0ZSA9IGNvbG9ycworCisg
ICAgICAgIGJhY2tncm91bmRDb2xvcnMgPSBbdmFsdWUoNDApLCB2YWx1ZSg0MSksIHZhbHVlKDQy
KSwgdmFsdWUoNDMpLCB2YWx1ZSg0NCksIHZhbHVlKDQ1KSwgdmFsdWUoNDYpLCB2YWx1ZSg0Nyld
CisgICAgICAgIGJsYWNrQmFja2dyb3VuZCwgcmVkQmFja2dyb3VuZCwgZ3JlZW5CYWNrZ3JvdW5k
LCB5ZWxsb3dCYWNrZ3JvdW5kLCBibHVlQmFja2dyb3VuZCwgbWFnZW50YUJhY2tncm91bmQsIGN5
YW5CYWNrZ3JvdW5kLCB3aGl0ZUJhY2tncm91bmQgPSBjb2xvcnMKKworICAgIGNsYXNzIFN0eWxl
KG9iamVjdCk6CisgICAgICAgIHRvcCA9IHt9CisgICAgICAgIF9kaXNhYmxlZCA9IHNldCgpCisg
ICAgICAgIF9pc19zdHlsZWQgPSBzZXQoKQorCisgICAgICAgIEBjbGFzc21ldGhvZAorICAgICAg
ICBkZWYgZW5hYmxlZChjbHMsIGZpbGUpOgorICAgICAgICAgICAgVGVybWluYWwuYXNzZXJ0X3dy
aXRlYWJsZV9zdHJlYW0oZmlsZSkKKworICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAg
IGlmIG5vdCBUZXJtaW5hbC5zdXBwb3J0c19jb2xvcihmaWxlKSBvciBub3QgZmlsZS5maWxlbm8o
KToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgICAgICBleGNlcHQg
KGlvLlVuc3VwcG9ydGVkT3BlcmF0aW9uLCBBdHRyaWJ1dGVFcnJvcik6CisgICAgICAgICAgICAg
ICAgcmV0dXJuIEZhbHNlCisgICAgICAgICAgICByZXR1cm4gZmlsZS5maWxlbm8oKSBub3QgaW4g
Y2xzLl9kaXNhYmxlZAorCisgICAgICAgIEBjbGFzc21ldGhvZAorICAgICAgICBkZWYgZGlzYWJs
ZShjbHMsIGZpbGUpOgorICAgICAgICAgICAgVGVybWluYWwuYXNzZXJ0X3dyaXRlYWJsZV9zdHJl
YW0oZmlsZSkKKyAgICAgICAgICAgIGlmIG5vdCBjbHMuZW5hYmxlZChmaWxlKToKKyAgICAgICAg
ICAgICAgICByZXR1cm4KKyAgICAgICAgICAgIGNscy5fZGlzYWJsZWQuYWRkKGZpbGUuZmlsZW5v
KCkpCisgICAgICAgICAgICBUZXJtaW5hbC5TdHlsZSgpLnNldChmaWxlKQorCisgICAgICAgIEBj
bGFzc21ldGhvZAorICAgICAgICBkZWYgZW5hYmxlKGNscywgZmlsZSk6CisgICAgICAgICAgICBU
ZXJtaW5hbC5hc3NlcnRfd3JpdGVhYmxlX3N0cmVhbShmaWxlKQorICAgICAgICAgICAgaWYgY2xz
LmVuYWJsZWQoZmlsZSk6CisgICAgICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgICAgIGNs
cy5fZGlzYWJsZWQuZGlzY2FyZChmaWxlLmZpbGVubygpKQorICAgICAgICAgICAgaWYgY2xzLnRv
cC5nZXQoZmlsZS5maWxlbm8oKSk6CisgICAgICAgICAgICAgICAgY2xzLnRvcC5nZXQoZmlsZS5m
aWxlbm8oKSkuc2V0KGZpbGUpCisKKyAgICAgICAgQGNsYXNzbWV0aG9kCisgICAgICAgIGRlZiBp
c19zdHlsZWQoY2xzLCBmaWxlKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZmlsZS5maWxlbm8oKSBpbiBjbHMuX2lzX3N0eWxlZAorICAgICAgICAgICAgZXhjZXB0
IChpby5VbnN1cHBvcnRlZE9wZXJhdGlvbiwgQXR0cmlidXRlRXJyb3IpOgorICAgICAgICAgICAg
ICAgIHJldHVybiBGYWxzZQorCisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzdHlsZT1Ob25l
LCBjb2xvcj1Ob25lLCBiYWNrZ3JvdW5kQ29sb3I9Tm9uZSk6CisgICAgICAgICAgICBpZiBzdHls
ZSBhbmQgc3R5bGUgbm90IGluIFRlcm1pbmFsLlRleHQuc3R5bGVzOgorICAgICAgICAgICAgICAg
IHJhaXNlIFZhbHVlRXJyb3IoJ3t9IGlzIG5vdCBhIHJlY29nbml6ZWQgdGVybWluYWwgdGV4dCBz
dHlsZScuZm9ybWF0KHN0eWxlKSkKKyAgICAgICAgICAgIHNlbGYuc3R5bGUgPSBzdHlsZQorCisg
ICAgICAgICAgICBpZiBjb2xvciBhbmQgY29sb3Igbm90IGluIFRlcm1pbmFsLlRleHQuY29sb3Jz
OgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3t9IGlzIG5vdCBhIHJlY29nbml6
ZWQgdGVybWluYWwgY29sb3InLmZvcm1hdChjb2xvcikpCisgICAgICAgICAgICBzZWxmLmNvbG9y
ID0gY29sb3IKKworICAgICAgICAgICAgaWYgYmFja2dyb3VuZENvbG9yIGFuZCBiYWNrZ3JvdW5k
Q29sb3Igbm90IGluIFRlcm1pbmFsLlRleHQuYmFja2dyb3VuZENvbG9yczoKKyAgICAgICAgICAg
ICAgICByYWlzZSBWYWx1ZUVycm9yKCd7fSBpcyBub3QgYSByZWNvZ25pemVkIHRlcm1pbmFsIGJh
Y2tncm91bmQgY29sb3InLmZvcm1hdChiYWNrZ3JvdW5kQ29sb3IpKQorICAgICAgICAgICAgc2Vs
Zi5iYWNrZ3JvdW5kQ29sb3IgPSBiYWNrZ3JvdW5kQ29sb3IKKworICAgICAgICBkZWYgX19yZXBy
X18oc2VsZik6CisgICAgICAgICAgICByZXN1bHQgPSBUZXJtaW5hbC5UZXh0LnJlc2V0CisgICAg
ICAgICAgICBpZiBzZWxmLnN0eWxlOgorICAgICAgICAgICAgICAgIHJlc3VsdCArPSBzZWxmLnN0
eWxlCisgICAgICAgICAgICBpZiBzZWxmLmNvbG9yOgorICAgICAgICAgICAgICAgIHJlc3VsdCAr
PSBzZWxmLmNvbG9yCisgICAgICAgICAgICBpZiBzZWxmLmJhY2tncm91bmRDb2xvcjoKKyAgICAg
ICAgICAgICAgICByZXN1bHQgKz0gc2VsZi5iYWNrZ3JvdW5kQ29sb3IKKyAgICAgICAgICAgIHJl
dHVybiByZXN1bHQKKworICAgICAgICBkZWYgc2V0KHNlbGYsIGZpbGUpOgorICAgICAgICAgICAg
VGVybWluYWwuYXNzZXJ0X3dyaXRlYWJsZV9zdHJlYW0oZmlsZSkKKyAgICAgICAgICAgIHdpbGxf
c3R5bGUgPSBUcnVlCisgICAgICAgICAgICBpZiBub3Qgc2VsZi5zdHlsZSBhbmQgbm90IHNlbGYu
Y29sb3IgYW5kIG5vdCBzZWxmLmJhY2tncm91bmRDb2xvcjoKKyAgICAgICAgICAgICAgICB3aWxs
X3N0eWxlID0gRmFsc2UKKyAgICAgICAgICAgIGVsaWYgbm90IHNlbGYuZW5hYmxlZChmaWxlKToK
KyAgICAgICAgICAgICAgICB3aWxsX3N0eWxlID0gRmFsc2UKKworICAgICAgICAgICAgaWYgd2ls
bF9zdHlsZToKKyAgICAgICAgICAgICAgICBzZWxmLl9pc19zdHlsZWQuYWRkKGZpbGUuZmlsZW5v
KCkpCisgICAgICAgICAgICAgICAgZmlsZS53cml0ZShzdHIoc2VsZikpCisgICAgICAgICAgICAg
ICAgcmV0dXJuCisKKyAgICAgICAgICAgIGlmIHNlbGYuaXNfc3R5bGVkKGZpbGUpOgorICAgICAg
ICAgICAgICAgIGZpbGUud3JpdGUoVGVybWluYWwuVGV4dC5yZXNldCkKKyAgICAgICAgICAgIHRy
eToKKyAgICAgICAgICAgICAgICBzZWxmLl9pc19zdHlsZWQuZGlzY2FyZChmaWxlLmZpbGVubygp
KQorICAgICAgICAgICAgZXhjZXB0IChpby5VbnN1cHBvcnRlZE9wZXJhdGlvbiwgQXR0cmlidXRl
RXJyb3IpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICBAY29udGV4dGxpYi5jb250
ZXh0bWFuYWdlcgorICAgICAgICBkZWYgYXBwbHkoc2VsZiwgdGFyZ2V0KToKKyAgICAgICAgICAg
IFRlcm1pbmFsLmFzc2VydF93cml0ZWFibGVfc3RyZWFtKHRhcmdldCkKKyAgICAgICAgICAgIHRy
eToKKyAgICAgICAgICAgICAgICBwcmV2aW91cyA9IHNlbGYudG9wLmdldCh0YXJnZXQuZmlsZW5v
KCkpCisgICAgICAgICAgICBleGNlcHQgKGlvLlVuc3VwcG9ydGVkT3BlcmF0aW9uLCBBdHRyaWJ1
dGVFcnJvcik6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICB5aWVs
ZAorICAgICAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgICAgIHJldHVybgor
CisgICAgICAgICAgICBzZWxmLnRvcFt0YXJnZXQuZmlsZW5vKCldID0gc2VsZgorICAgICAgICAg
ICAgc2VsZi5zZXQodGFyZ2V0KQorCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAg
eWllbGQKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgaWYgcHJldmlvdXM6
CisgICAgICAgICAgICAgICAgICAgIHByZXZpb3VzLnNldCh0YXJnZXQpCisgICAgICAgICAgICAg
ICAgICAgIHNlbGYudG9wW3RhcmdldC5maWxlbm8oKV0gPSBwcmV2aW91cworICAgICAgICAgICAg
ICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIFRlcm1pbmFsLlN0eWxlKCkuc2V0KHRhcmdl
dCkKKyAgICAgICAgICAgICAgICAgICAgZGVsIHNlbGYudG9wW3RhcmdldC5maWxlbm8oKV0KSW5k
ZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Byb2dy
YW0vYmxhbWUucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0
c2NtcHkvd2Via2l0c2NtcHkvcHJvZ3JhbS9ibGFtZS5weQkocmV2aXNpb24gMjgwNjIwKQorKysg
VG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvcHJvZ3JhbS9i
bGFtZS5weQkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksOCBAQCBjbGFzcyBCbGFtZShGaWx0
ZXJlZENvbW1hbmQpOgogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIHN5cy5leGl0
KEJsYW1lLm1haW4oCi0gICAgICAgIHN5cy5hcmd2WzM6XSwKKyAgICAgICAgc3lzLmFyZ3ZbNDpd
LAogICAgICAgICBsb2NhbC5TY20uZnJvbV9wYXRoKHBhdGg9c3lzLmFyZ3ZbMV0sIGNhY2hlZD1U
cnVlKSwKICAgICAgICAgcmVwcmVzZW50YXRpb249c3lzLmFyZ3ZbMl0sCisgICAgICAgIGlzYXR0
eT1zeXMuYXJndlszXSA9PSAnaXNhdHR5JywKICAgICApKQpJbmRleDogVG9vbHMvU2NyaXB0cy9s
aWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvcHJvZ3JhbS9jb21tYW5kLnB5Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5
L3Byb2dyYW0vY29tbWFuZC5weQkocmV2aXNpb24gMjgwNjIwKQorKysgVG9vbHMvU2NyaXB0cy9s
aWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvcHJvZ3JhbS9jb21tYW5kLnB5CSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBAIGltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgc3lz
CiBpbXBvcnQgdGltZQogCitmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgVGVybWluYWwKIGZyb20g
d2Via2l0c2NtcHkuY29tbWl0IGltcG9ydCBDb21taXQKIGZyb20gd2hpY2hjcmFmdCBpbXBvcnQg
d2hpY2gKIApAQCAtMTEwLDMyICsxMTEsMzUgQEAgY2xhc3MgRmlsdGVyZWRDb21tYW5kKG9iamVj
dCk6CiAgICAgICAgICAgICByZXBvc2l0b3J5LmNhY2hlID0gcmVwb3NpdG9yeS5DYWNoZShyZXBv
c2l0b3J5KQogCiAgICAgICAgICMgSWYgd2UncmUgYSB0ZXJtaW5hbCwgcmVseSBvbiAnbW9yZScg
dG8gZGlzcGxheSBvdXRwdXQKLSAgICAgICAgaWYgc3lzLnN0ZGluLmlzYXR0eSgpIGFuZCBub3Qg
aXNpbnN0YW5jZShhcmdzLCBsaXN0KSBhbmQgZmlsZToKKyAgICAgICAgaWYgVGVybWluYWwuaXNh
dHR5KHN5cy5zdGRpbikgYW5kIG5vdCBpc2luc3RhbmNlKGFyZ3MsIGxpc3QpIGFuZCBmaWxlOgog
ICAgICAgICAgICAgZW52aXJvbiA9IG9zLmVudmlyb24KICAgICAgICAgICAgIGVudmlyb25bJ1BZ
VEhPTlBBVEgnXSA9ICc6Jy5qb2luKHN5cy5wYXRoKQogCiAgICAgICAgICAgICBjaGlsZCA9IHN1
YnByb2Nlc3MuUG9wZW4oCi0gICAgICAgICAgICAgICAgW3N5cy5leGVjdXRhYmxlLCBmaWxlLCBy
ZXBvc2l0b3J5LnJvb3RfcGF0aCwgYXJncy5yZXByZXNlbnRhdGlvbl0gKyBhcmdzLmFyZ3MsCisg
ICAgICAgICAgICAgICAgW3N5cy5leGVjdXRhYmxlLCBmaWxlLCByZXBvc2l0b3J5LnJvb3RfcGF0
aCwgYXJncy5yZXByZXNlbnRhdGlvbiwgJ2lzYXR0eScgaWYgVGVybWluYWwuaXNhdHR5KHN5cy5z
dGRvdXQpIGVsc2UgJ25vdGF0dHknXSArIGFyZ3MuYXJncywKICAgICAgICAgICAgICAgICBlbnY9
ZW52aXJvbiwKICAgICAgICAgICAgICAgICBjd2Q9b3MuZ2V0Y3dkKCksCiAgICAgICAgICAgICAg
ICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwKICAgICAgICAgICAgICAgICBzdGRlcnI9c3VicHJv
Y2Vzcy5QSVBFLAogICAgICAgICAgICAgKQotICAgICAgICAgICAgbW9yZSA9IHN1YnByb2Nlc3Mu
UG9wZW4oW3doaWNoKCdtb3JlJyldICsgWyctRiddIGlmIHBsYXRmb3JtLnN5c3RlbSgpID09ICdE
YXJ3aW4nIGVsc2UgW10sIHN0ZGluPWNoaWxkLnN0ZG91dCkKKyAgICAgICAgICAgIG1vcmUgPSBz
dWJwcm9jZXNzLlBvcGVuKFt3aGljaCgnbW9yZScpXSArIFsnLUYnLCAnLVInXSBpZiBwbGF0Zm9y
bS5zeXN0ZW0oKSA9PSAnRGFyd2luJyBlbHNlIFtdLCBzdGRpbj1jaGlsZC5zdGRvdXQpCiAKICAg
ICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICB3aGlsZSBtb3JlLnBvbGwoKSBpcyBOb25l
IGFuZCBub3QgY2hpbGQucG9sbCgpOgogICAgICAgICAgICAgICAgICAgICB0aW1lLnNsZWVwKDAu
MjUpCiAgICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgIGNoaWxkLmtpbGwoKQot
ICAgICAgICAgICAgICAgIG1vcmUua2lsbCgpCisgICAgICAgICAgICAgICAgaWYgY2hpbGQucmV0
dXJuY29kZSBpcyBOb25lOgorICAgICAgICAgICAgICAgICAgICBjaGlsZC5raWxsKCkKKyAgICAg
ICAgICAgICAgICBpZiBtb3JlLnJldHVybmNvZGUgaXMgTm9uZToKKyAgICAgICAgICAgICAgICAg
ICAgbW9yZS5raWxsKCkKICAgICAgICAgICAgICAgICBjaGlsZF9lcnJvciA9IGNoaWxkLnN0ZGVy
ci5yZWFkKCkKICAgICAgICAgICAgICAgICBpZiBjaGlsZF9lcnJvcjoKLSAgICAgICAgICAgICAg
ICAgICAgc3lzLnN0ZGVyci5idWZmZXIud3JpdGUoYidcbicgKyBjaGlsZF9lcnJvcikKKyAgICAg
ICAgICAgICAgICAgICAgKHN5cy5zdGRlcnIuYnVmZmVyIGlmIHN5cy52ZXJzaW9uX2luZm8gPiAo
MywgMCkgZWxzZSBzeXMuc3RkZXJyKS53cml0ZShiJ1xuJyArIGNoaWxkX2Vycm9yKQogCiAgICAg
ICAgICAgICByZXR1cm4gY2hpbGQucmV0dXJuY29kZQogCi0gICAgICAgIHJldHVybiBGaWx0ZXJl
ZENvbW1hbmQubWFpbihhcmdzLCByZXBvc2l0b3J5LCBjb21tYW5kPWNscy5uYW1lLCAqKmt3YXJn
cykKKyAgICAgICAgd2l0aCBUZXJtaW5hbC5vdmVycmlkZV9hdHR5KHN5cy5zdGRvdXQsIGlzYXR0
eT1rd2FyZ3MuZ2V0KCdpc2F0dHknKSksIFRlcm1pbmFsLm92ZXJyaWRlX2F0dHkoc3lzLnN0ZGVy
ciwgaXNhdHR5PWt3YXJncy5nZXQoJ2lzYXR0eScpKToKKyAgICAgICAgICAgIHJldHVybiBGaWx0
ZXJlZENvbW1hbmQubWFpbihhcmdzLCByZXBvc2l0b3J5LCBjb21tYW5kPWNscy5uYW1lLCAqKmt3
YXJncykKIAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBtYWluKGNscywgYXJncywgcmVwb3Np
dG9yeSwgY29tbWFuZD1Ob25lLCByZXByZXNlbnRhdGlvbj1Ob25lLCAqKmt3YXJncyk6CkBAIC0y
MzQsNyArMjM4LDEzIEBAIGNsYXNzIEZpbHRlcmVkQ29tbWFuZChvYmplY3QpOgogICAgICAgICAg
ICAgICAgICAgICBsaW5lLAogICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICBpZiBo
ZWFkZXIgIT0gbGluZToKLSAgICAgICAgICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZShoZWFk
ZXIpCisgICAgICAgICAgICAgICAgICAgIHdpdGggVGVybWluYWwuU3R5bGUoY29sb3I9VGVybWlu
YWwuVGV4dC55ZWxsb3csIHN0eWxlPVRlcm1pbmFsLlRleHQuYm9sZCkuYXBwbHkoc3lzLnN0ZG91
dCk6CisgICAgICAgICAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCcgJy5qb2luKGhl
YWRlci5zcGxpdCgnICcpWzoyXSkpCisKKyAgICAgICAgICAgICAgICAgICAgc3lzLnN0ZG91dC53
cml0ZSgnICcpCisgICAgICAgICAgICAgICAgICAgIHdpdGggVGVybWluYWwuU3R5bGUoY29sb3I9
VGVybWluYWwuVGV4dC5yZWQpLmFwcGx5KHN5cy5zdGRvdXQpOgorICAgICAgICAgICAgICAgICAg
ICAgICAgc3lzLnN0ZG91dC53cml0ZSgnICcuam9pbihoZWFkZXIuc3BsaXQoJyAnKVsyOl0pKQor
CiAgICAgICAgICAgICAgICAgICAgIGxpbmUgPSBsb2dfb3V0cHV0LnN0ZG91dC5yZWFkbGluZSgp
CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAKQEAgLTI1Nyw2ICsyNjcsOCBAQCBjbGFz
cyBGaWx0ZXJlZENvbW1hbmQob2JqZWN0KToKIAogICAgICAgICBmaW5hbGx5OgogICAgICAgICAg
ICAgaWYgbm90IGxvZ19vdXRwdXQucmV0dXJuY29kZToKLSAgICAgICAgICAgICAgICBzeXMuc3Rk
ZXJyLndyaXRlKGxvZ19vdXRwdXQuc3RkZXJyLnJlYWQoKSkKLSAgICAgICAgICAgIGxvZ19vdXRw
dXQua2lsbCgpCisgICAgICAgICAgICAgICAgd2l0aCBUZXJtaW5hbC5TdHlsZShjb2xvcj1UZXJt
aW5hbC5UZXh0LnJlZCkuYXBwbHkoc3lzLnN0ZGVycik6CisgICAgICAgICAgICAgICAgICAgIHN5
cy5zdGRlcnIud3JpdGUobG9nX291dHB1dC5zdGRlcnIucmVhZCgpKQorICAgICAgICAgICAgaWYg
bG9nX291dHB1dC5yZXR1cm5jb2RlIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgbG9nX291dHB1
dC5raWxsKCkKICAgICAgICAgcmV0dXJuIGxvZ19vdXRwdXQucmV0dXJuY29kZQpJbmRleDogVG9v
bHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvcHJvZ3JhbS9sb2cu
cHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Vi
a2l0c2NtcHkvcHJvZ3JhbS9sb2cucHkJKHJldmlzaW9uIDI4MDYyMCkKKysrIFRvb2xzL1Njcmlw
dHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Byb2dyYW0vbG9nLnB5CSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNCw2ICsyNCw3IEBACiAKIGltcG9ydCBzeXMKIAorZnJvbSB3ZWJraXRj
b3JlcHkgaW1wb3J0IFRlcm1pbmFsCiBmcm9tIHdlYmtpdHNjbXB5IGltcG9ydCBsb2NhbAogZnJv
bSB3ZWJraXRzY21weS5wcm9ncmFtLmNvbW1hbmQgaW1wb3J0IEZpbHRlcmVkQ29tbWFuZAogCkBA
IC0zNCwxMiArMzUsMTUgQEAgY2xhc3MgTG9nKEZpbHRlcmVkQ29tbWFuZCk6CiAKICAgICBAY2xh
c3NtZXRob2QKICAgICBkZWYgbWFpbihjbHMsIGFyZ3MsIHJlcG9zaXRvcnksICoqa3dhcmdzKToK
KyAgICAgICAgY29uZmlnID0gcmVwb3NpdG9yeS5jb25maWcoKQorICAgICAgICBUZXJtaW5hbC5j
b2xvcnMgPSBjb25maWcuZ2V0KCdjb2xvci5kaWZmJywgY29uZmlnLmdldCgnY29sb3IudWknLCAn
YXV0bycpKSAhPSAnZmFsc2UnCiAgICAgICAgIHJldHVybiBjbHMucGFnZXIoYXJncywgcmVwb3Np
dG9yeSwgZmlsZT1fX2ZpbGVfXywgKiprd2FyZ3MpCiAKIAogaWYgX19uYW1lX18gPT0gJ19fbWFp
bl9fJzoKICAgICBzeXMuZXhpdChMb2cubWFpbigKLSAgICAgICAgc3lzLmFyZ3ZbMzpdLAorICAg
ICAgICBzeXMuYXJndls0Ol0sCiAgICAgICAgIGxvY2FsLlNjbS5mcm9tX3BhdGgocGF0aD1zeXMu
YXJndlsxXSwgY2FjaGVkPVRydWUpLAogICAgICAgICByZXByZXNlbnRhdGlvbj1zeXMuYXJndlsy
XSwKKyAgICAgICAgaXNhdHR5PXN5cy5hcmd2WzNdID09ICdpc2F0dHknLAogICAgICkpCkluZGV4
OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS90ZXN0L2xv
Z191bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJr
aXRzY21weS93ZWJraXRzY21weS90ZXN0L2xvZ191bml0dGVzdC5weQkocmV2aXNpb24gMjgwNjIw
KQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvdGVz
dC9sb2dfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTIwLDEzICsyMCwxMCBAQAogIyBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCi1pbXBvcnQganNvbgogaW1wb3J0
IG9zCi1pbXBvcnQgc2h1dGlsCi1pbXBvcnQgdGVtcGZpbGUKK2ltcG9ydCBzeXMKIAotZnJvbSBk
YXRldGltZSBpbXBvcnQgZGF0ZXRpbWUKLWZyb20gd2Via2l0Y29yZXB5IGltcG9ydCBPdXRwdXRD
YXB0dXJlLCB0ZXN0aW5nCitmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgT3V0cHV0Q2FwdHVyZSwg
VGVybWluYWwsIHRlc3RpbmcKIGZyb20gd2Via2l0Y29yZXB5Lm1vY2tzIGltcG9ydCBUaW1lIGFz
IE1vY2tUaW1lCiBmcm9tIHdlYmtpdHNjbXB5IGltcG9ydCBwcm9ncmFtLCBtb2NrcwogCkBAIC00
MCw3ICszNyw3IEBAIGNsYXNzIFRlc3RMb2codGVzdGluZy5QYXRoVGVzdENhc2UpOgogICAgICAg
ICBvcy5ta2Rpcihvcy5wYXRoLmpvaW4oc2VsZi5wYXRoLCAnLnN2bicpKQogCiAgICAgZGVmIHRl
c3RfZ2l0KHNlbGYpOgotICAgICAgICB3aXRoIE91dHB1dENhcHR1cmUoKSBhcyBjYXB0dXJlZCwg
bW9ja3MubG9jYWwuR2l0KHNlbGYucGF0aCksIG1vY2tzLmxvY2FsLlN2bigpLCBNb2NrVGltZToK
KyAgICAgICAgd2l0aCBPdXRwdXRDYXB0dXJlKCkgYXMgY2FwdHVyZWQsIG1vY2tzLmxvY2FsLkdp
dChzZWxmLnBhdGgpLCBtb2Nrcy5sb2NhbC5Tdm4oKSwgTW9ja1RpbWUsIFRlcm1pbmFsLm92ZXJy
aWRlX2F0dHkoc3lzLnN0ZGluLCBpc2F0dHk9RmFsc2UpOgogICAgICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgtMSwgcHJvZ3JhbS5tYWluKAogICAgICAgICAgICAgICAgIGFyZ3M9KCdsb2cnLCAn
bWFpbicpLAogICAgICAgICAgICAgICAgIHBhdGg9c2VsZi5wYXRoLApAQCAtODEsNyArNzgsNyBA
QCBEYXRlOiAgIFNhdCBPY3QgMDMgMDE6MzM6MjAgMjAyMCArMDAwMAogICAgICAgICApCiAKICAg
ICBkZWYgdGVzdF9naXRfc3ZuKHNlbGYpOgotICAgICAgICB3aXRoIE91dHB1dENhcHR1cmUoKSBh
cyBjYXB0dXJlZCwgbW9ja3MubG9jYWwuR2l0KHNlbGYucGF0aCwgZ2l0X3N2bj1UcnVlKSwgbW9j
a3MubG9jYWwuU3ZuKCksIE1vY2tUaW1lOgorICAgICAgICB3aXRoIE91dHB1dENhcHR1cmUoKSBh
cyBjYXB0dXJlZCwgbW9ja3MubG9jYWwuR2l0KHNlbGYucGF0aCwgZ2l0X3N2bj1UcnVlKSwgbW9j
a3MubG9jYWwuU3ZuKCksIE1vY2tUaW1lLCBUZXJtaW5hbC5vdmVycmlkZV9hdHR5KHN5cy5zdGRp
biwgaXNhdHR5PUZhbHNlKToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoLTEsIHByb2dy
YW0ubWFpbigKICAgICAgICAgICAgICAgICBhcmdzPSgnbG9nJywgJ21haW4nKSwKICAgICAgICAg
ICAgICAgICBwYXRoPXNlbGYucGF0aCwKQEAgLTEyNyw3ICsxMjQsNyBAQCBEYXRlOiAgIFNhdCBP
Y3QgMDMgMDE6MzM6MjAgMjAyMCArMDAwMAogICAgICAgICAgICAgKQogCiAgICAgZGVmIHRlc3Rf
Z2l0X3N2bl9yZXZpc2lvbihzZWxmKToKLSAgICAgICAgd2l0aCBPdXRwdXRDYXB0dXJlKCkgYXMg
Y2FwdHVyZWQsIG1vY2tzLmxvY2FsLkdpdChzZWxmLnBhdGgsIGdpdF9zdm49VHJ1ZSksIG1vY2tz
LmxvY2FsLlN2bigpLCBNb2NrVGltZToKKyAgICAgICAgd2l0aCBPdXRwdXRDYXB0dXJlKCkgYXMg
Y2FwdHVyZWQsIG1vY2tzLmxvY2FsLkdpdChzZWxmLnBhdGgsIGdpdF9zdm49VHJ1ZSksIG1vY2tz
LmxvY2FsLlN2bigpLCBNb2NrVGltZSwgVGVybWluYWwub3ZlcnJpZGVfYXR0eShzeXMuc3RkaW4s
IGlzYXR0eT1GYWxzZSk6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKC0xLCBwcm9ncmFt
Lm1haW4oCiAgICAgICAgICAgICAgICAgYXJncz0oJ2xvZycsICdtYWluJywgJy0tcmV2aXNpb24n
KSwKICAgICAgICAgICAgICAgICBwYXRoPXNlbGYucGF0aCwKQEAgLTE3NCw3ICsxNzEsNyBAQCBE
YXRlOiAgIFNhdCBPY3QgMDMgMDE6MzM6MjAgMjAyMCArMDAwMAogICAgICAgICAgICAgKQogCiAg
ICAgZGVmIHRlc3Rfc3ZuKHNlbGYpOgotICAgICAgICB3aXRoIE91dHB1dENhcHR1cmUoKSBhcyBj
YXB0dXJlZCwgbW9ja3MubG9jYWwuR2l0KCksIG1vY2tzLmxvY2FsLlN2bihzZWxmLnBhdGgpLCBN
b2NrVGltZToKKyAgICAgICAgd2l0aCBPdXRwdXRDYXB0dXJlKCkgYXMgY2FwdHVyZWQsIG1vY2tz
LmxvY2FsLkdpdCgpLCBtb2Nrcy5sb2NhbC5Tdm4oc2VsZi5wYXRoKSwgTW9ja1RpbWUsIFRlcm1p
bmFsLm92ZXJyaWRlX2F0dHkoc3lzLnN0ZGluLCBpc2F0dHk9RmFsc2UpOgogICAgICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgtMSwgcHJvZ3JhbS5tYWluKAogICAgICAgICAgICAgICAgIGFyZ3M9
KCdsb2cnLCksCiAgICAgICAgICAgICAgICAgcGF0aD1zZWxmLnBhdGgsCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434915</attachid>
            <date>2021-08-04 11:14:05 -0700</date>
            <delta_ts>2021-08-10 14:08:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228662-20210804111404.patch</filename>
            <type>text/plain</type>
            <size>17645</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI4MDY0MykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDM1IEBACisyMDIxLTA4LTA0ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBbZ2l0LXdlYmtpdF0gQ29sb3IgYGxvZ2Agb3V0cHV0CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjg2NjIKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzgxMzQ0MTgxPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNv
cmVweS9fX2luaXRfXy5weTogRXhwb3J0IFRlcm1pbmFsLgorICAgICAgICAqIFNjcmlwdHMvbGli
cmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvdGVybWluYWwucHk6IEFkZGVkLgorICAg
ICAgICAoVGVybWluYWwpOgorICAgICAgICAoVGVybWluYWwuYXNzZXJ0X3dyaXRlYWJsZV9zdHJl
YW0pOiBBc3NlcnQgdGhhdCB0aGUgcHJvdmlkZWQgb2JqZWN0IGlzIGEgd3JpdGFibGUgc3RyZWFt
LgorICAgICAgICAoVGVybWluYWwuc3VwcG9ydHNfY29sb3IpOiBDaGVjayBpZiB0aGUgcHJvdmlk
ZWQgZmlsZSBzdXBwb3J0cyBjb2xvcmVkIG91dHB1dC4KKyAgICAgICAgKFRlcm1pbmFsLmlzYXR0
eSk6IENoZWNrIGlmIGEgc3RyZWFtIGlzIGFuIGF0dHksIGJvdGggYWNjb3JkaW5nIHRvIHRoZSBz
dHJlYW0gaXRzZWxmIGFuZCBvdXIgb3ZlcnJpZGUuCisgICAgICAgIChUZXJtaW5hbC5vdmVycmlk
ZV9hdHR5KTogQWxsb3cgY2FsbGVycyB0byBvdmVycmlkZSBhbmQgZGVjbGFyZSBleHBsaWNpdGx5
IGlmIGEgc3RyZWFtIGlzIGFuIGF0dHkuCisgICAgICAgIChUZXJtaW5hbC5UZXh0KTogR3JvdXAg
dGV4dCBjb2xvcnMgYW5kIHN0eWxlcy4KKyAgICAgICAgKFRlcm1pbmFsLlN0eWxlKTogR3JvdXAg
ZnVuY3Rpb25zIG1vZGlmeWluZyBzdHlsZSBvZiBhIHN0cmVhbS4KKyAgICAgICAgKFRlcm1pbmFs
LlN0eWxlLmVuYWJsZWQpOiBDaGVjayBpZiBzdHlsZWQgcHJpbnRpbmcgaXMgZW5hYmxlZCBvbiBh
IHN0cmVhbS4KKyAgICAgICAgKFRlcm1pbmFsLlN0eWxlLmRpc2FibGUpOiBEaXNhYmxlIHN0eWxl
ZCBwcmludGluZyBvbiBhIHN0cmVhbS4KKyAgICAgICAgKFRlcm1pbmFsLlN0eWxlLmVuYWJsZSk6
IEVuYWJsZSBzdHlsZWQgcHJpbnRpbmcgb24gYSBzdHJlYW0uCisgICAgICAgIChUZXJtaW5hbC5T
dHlsZS5pc19zdHlsZWQpOiBDaGVjayBpZiBhIHN0cmVhbSBpcyBjdXJyZW50bHkgc3R5bGVkLgor
ICAgICAgICAoVGVybWluYWwuU3R5bGUuX19pbml0X18pOiBDb25zdHJ1Y3QgYSB0ZXh0IHN0eWxl
LgorICAgICAgICAoVGVybWluYWwuU3R5bGUuX19yZXByX18pOiBPdXRwdXQgdGhlIHRlcm1pbmFs
IGNoYXJhY3RlcnMgc3R5bGluZyBhIHN0cmVhbS4KKyAgICAgICAgKFRlcm1pbmFsLlN0eWxlLnNl
dCk6IEFwcGx5IHN0eWxlIHRvIGEgc3RyZWFtLgorICAgICAgICAoVGVybWluYWwuU3R5bGUuYXBw
bHkpOiBBcHBseSBzdHlsZSB0byBhIHN0cmVhbSwgdW5hcHBseSB3aGVuIGV4aXRpbmcgY29udGV4
dC4KKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9w
cm9ncmFtL2JsYW1lLnB5OiBQYXNzIGlzYXR0eSB0byBjaGlsZCBwcm9jZXNzLgorICAgICAgICAq
IFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Byb2dyYW0vY29tbWFu
ZC5weToKKyAgICAgICAgKEZpbHRlcmVkQ29tbWFuZC5wYWdlcik6IFBhc3MgaXNhdHR5IHRvIGNo
aWxkIHByb2Nlc3MsIGFzayAnbW9yZScgdG8gZGlzcGxheSBjb2xvcnMuCisgICAgICAgIChGaWx0
ZXJlZENvbW1hbmQubWFpbik6IENvbG9yIGhlYWRlciBhbmQgZXJyb3IuCisgICAgICAgICogU2Ny
aXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvcHJvZ3JhbS9sb2cucHk6IFBh
c3MgaXNhdHR5IHRvIGNoaWxkIHByb2Nlc3MuCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMv
d2Via2l0c2NtcHkvd2Via2l0c2NtcHkvdGVzdC9sb2dfdW5pdHRlc3QucHk6IE92ZXJyaWRlIGF0
dHkgYmVoYXZpb3IuCisKIDIwMjEtMDgtMDQgIEpvbmF0aGFuIEJlZGFyZCAgPGpiZWRhcmRAYXBw
bGUuY29tPgogCiAgICAgICAgIFt3ZWJraXRjb3JlcHldIEFkZCBzaGFyZWQgdGVybWluYWwgaW5w
dXQgY29kZQpJbmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtp
dGNvcmVweS90ZXJtaW5hbC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJhcmll
cy93ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L3Rlcm1pbmFsLnB5CShyZXZpc2lvbiAyODA2NDMp
CisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L3Rl
cm1pbmFsLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yMCwxMCArMjAsMjAgQEAKICMgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMKICMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCiAKK2ltcG9ydCBjb250ZXh0bGliCitpbXBvcnQgaW8KIGltcG9y
dCBzeXMKIAorZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IFN0cmluZ0lPCisKK2lmIHN5cy52ZXJz
aW9uX2luZm8gPiAoMywgMCk6CisgICAgZmlsZSA9IGlvLklPQmFzZQorCiAKIGNsYXNzIFRlcm1p
bmFsKG9iamVjdCk6CisgICAgX2F0dHlfb3ZlcnJpZGVzID0ge30KKyAgICBjb2xvcnMgPSBUcnVl
CisKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgaW5wdXQoY2xzLCAqYXJncywgKiprd2FyZ3Mp
OgogICAgICAgICByZXR1cm4gKGlucHV0IGlmIHN5cy52ZXJzaW9uX2luZm8gPiAoMywgMCkgZWxz
ZSByYXdfaW5wdXQpKCphcmdzLCAqKmt3YXJncykKQEAgLTU3LDMgKzY3LDE2NyBAQCBjbGFzcyBU
ZXJtaW5hbChvYmplY3QpOgogICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gZGVmYXVsdAogCiAg
ICAgICAgIHJldHVybiByZXNwb25zZQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGFzc2Vy
dF93cml0ZWFibGVfc3RyZWFtKGNscywgdGFyZ2V0KToKKyAgICAgICAgaWYgbm90IGlzaW5zdGFu
Y2UodGFyZ2V0LCBpby5JT0Jhc2UpIGFuZCBub3QgaXNpbnN0YW5jZSh0YXJnZXQsIGZpbGUpIGFu
ZCBub3QgaXNpbnN0YW5jZSh0YXJnZXQsIFN0cmluZ0lPKToKKyAgICAgICAgICAgIHJhaXNlIFZh
bHVlRXJyb3IoJ3t9IGlzIG5vdCBhbiBJTyBvYmplY3QnLmZvcm1hdCh0YXJnZXQpKQorICAgICAg
ICBpZiBub3QgaXNpbnN0YW5jZSh0YXJnZXQsIFN0cmluZ0lPKSBhbmQgbm90IChnZXRhdHRyKHRh
cmdldCwgJ3dyaXRhYmxlJywgTm9uZSkgYW5kIHRhcmdldC53cml0YWJsZSgpKSBhbmQgJ3cnIG5v
dCBpbiBnZXRhdHRyKHRhcmdldCwgJ21vZGUnLCAncicpOgorICAgICAgICAgICAgcmFpc2UgVmFs
dWVFcnJvcigne30gaXMgYW4gSU8gb2JqZWN0LCBidXQgaXMgbm90IHdyaXRhYmxlIHt9Jy5mb3Jt
YXQodGFyZ2V0LCApKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHN1cHBvcnRzX2NvbG9y
KGNscywgZmlsZSk6CisgICAgICAgIGlmIG5vdCBjbHMuY29sb3JzOgorICAgICAgICAgICAgcmV0
dXJuIEZhbHNlCisgICAgICAgIHJldHVybiBjbHMuaXNhdHR5KGZpbGUpCisKKyAgICBAY2xhc3Nt
ZXRob2QKKyAgICBkZWYgaXNhdHR5KGNscywgZmlsZSk6CisgICAgICAgIHRyeToKKyAgICAgICAg
ICAgIHJldHVybiBjbHMuX2F0dHlfb3ZlcnJpZGVzLmdldChmaWxlLmZpbGVubygpLCBmaWxlLmlz
YXR0eSgpKQorICAgICAgICBleGNlcHQgKGlvLlVuc3VwcG9ydGVkT3BlcmF0aW9uLCBBdHRyaWJ1
dGVFcnJvcik6CisgICAgICAgICAgICByZXR1cm4gY2xzLl9hdHR5X292ZXJyaWRlcy5nZXQoc3Ry
KGZpbGUpLCBmaWxlLmlzYXR0eSgpKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgQGNvbnRleHRs
aWIuY29udGV4dG1hbmFnZXIKKyAgICBkZWYgb3ZlcnJpZGVfYXR0eShjbHMsIHRhcmdldCwgaXNh
dHR5PVRydWUpOgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZSh0YXJnZXQsIGlvLklPQmFzZSkg
YW5kIG5vdCBpc2luc3RhbmNlKHRhcmdldCwgZmlsZSkgYW5kIG5vdCBpc2luc3RhbmNlKHRhcmdl
dCwgU3RyaW5nSU8pOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigne30gaXMgbm90IGFu
IElPIG9iamVjdCcuZm9ybWF0KHRhcmdldCkpCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAg
a2V5ID0gdGFyZ2V0LmZpbGVubygpCisgICAgICAgIGV4Y2VwdCAoaW8uVW5zdXBwb3J0ZWRPcGVy
YXRpb24sIEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgICAgIGtleSA9IHN0cih0YXJnZXQpCisK
KyAgICAgICAgcHJldmlvdXMgPSBjbHMuX2F0dHlfb3ZlcnJpZGVzLmdldChrZXkpCisgICAgICAg
IGNscy5fYXR0eV9vdmVycmlkZXNba2V5XSA9IGlzYXR0eQorCisgICAgICAgIHRyeToKKyAgICAg
ICAgICAgIHlpZWxkCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBpZiBwcmV2aW91cyBp
cyBOb25lOgorICAgICAgICAgICAgICAgIGRlbCBjbHMuX2F0dHlfb3ZlcnJpZGVzW2tleV0KKyAg
ICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgY2xzLl9hdHR5X292ZXJyaWRlc1trZXld
ID0gcHJldmlvdXMKKworICAgIGNsYXNzIFRleHQob2JqZWN0KToKKyAgICAgICAgdmFsdWUgPSBs
YW1iZGEgdmFsdWU6ICdcMDMzW3t9bScuZm9ybWF0KHZhbHVlKQorCisgICAgICAgIHJlc2V0ID0g
dmFsdWUoMCkKKworICAgICAgICBzdHlsZXMgPSBbdmFsdWUoMSksIHZhbHVlKDQpLCB2YWx1ZSg1
KSwgdmFsdWUoOCldCisgICAgICAgIGJvbGQsIHVuZGVybGluZSwgYmxpbmssIGNvbmNlYWxlZCA9
IHN0eWxlcworCisgICAgICAgIGNvbG9ycyA9IFt2YWx1ZSgzMCksIHZhbHVlKDMxKSwgdmFsdWUo
MzIpLCB2YWx1ZSgzMyksIHZhbHVlKDM0KSwgdmFsdWUoMzUpLCB2YWx1ZSgzNiksIHZhbHVlKDM3
KV0KKyAgICAgICAgYmxhY2ssIHJlZCwgZ3JlZW4sIHllbGxvdywgYmx1ZSwgbWFnZW50YSwgY3lh
biwgd2hpdGUgPSBjb2xvcnMKKworICAgICAgICBiYWNrZ3JvdW5kQ29sb3JzID0gW3ZhbHVlKDQw
KSwgdmFsdWUoNDEpLCB2YWx1ZSg0MiksIHZhbHVlKDQzKSwgdmFsdWUoNDQpLCB2YWx1ZSg0NSks
IHZhbHVlKDQ2KSwgdmFsdWUoNDcpXQorICAgICAgICBibGFja0JhY2tncm91bmQsIHJlZEJhY2tn
cm91bmQsIGdyZWVuQmFja2dyb3VuZCwgeWVsbG93QmFja2dyb3VuZCwgYmx1ZUJhY2tncm91bmQs
IG1hZ2VudGFCYWNrZ3JvdW5kLCBjeWFuQmFja2dyb3VuZCwgd2hpdGVCYWNrZ3JvdW5kID0gY29s
b3JzCisKKyAgICBjbGFzcyBTdHlsZShvYmplY3QpOgorICAgICAgICB0b3AgPSB7fQorICAgICAg
ICBfZGlzYWJsZWQgPSBzZXQoKQorICAgICAgICBfaXNfc3R5bGVkID0gc2V0KCkKKworICAgICAg
ICBAY2xhc3NtZXRob2QKKyAgICAgICAgZGVmIGVuYWJsZWQoY2xzLCBmaWxlKToKKyAgICAgICAg
ICAgIFRlcm1pbmFsLmFzc2VydF93cml0ZWFibGVfc3RyZWFtKGZpbGUpCisKKyAgICAgICAgICAg
IHRyeToKKyAgICAgICAgICAgICAgICBpZiBub3QgVGVybWluYWwuc3VwcG9ydHNfY29sb3IoZmls
ZSkgb3Igbm90IGZpbGUuZmlsZW5vKCk6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBGYWxz
ZQorICAgICAgICAgICAgZXhjZXB0IChpby5VbnN1cHBvcnRlZE9wZXJhdGlvbiwgQXR0cmlidXRl
RXJyb3IpOgorICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICAgICAgcmV0dXJu
IGZpbGUuZmlsZW5vKCkgbm90IGluIGNscy5fZGlzYWJsZWQKKworICAgICAgICBAY2xhc3NtZXRo
b2QKKyAgICAgICAgZGVmIGRpc2FibGUoY2xzLCBmaWxlKToKKyAgICAgICAgICAgIFRlcm1pbmFs
LmFzc2VydF93cml0ZWFibGVfc3RyZWFtKGZpbGUpCisgICAgICAgICAgICBpZiBub3QgY2xzLmVu
YWJsZWQoZmlsZSk6CisgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICBjbHMuX2Rp
c2FibGVkLmFkZChmaWxlLmZpbGVubygpKQorICAgICAgICAgICAgVGVybWluYWwuU3R5bGUoKS5z
ZXQoZmlsZSkKKworICAgICAgICBAY2xhc3NtZXRob2QKKyAgICAgICAgZGVmIGVuYWJsZShjbHMs
IGZpbGUpOgorICAgICAgICAgICAgVGVybWluYWwuYXNzZXJ0X3dyaXRlYWJsZV9zdHJlYW0oZmls
ZSkKKyAgICAgICAgICAgIGlmIGNscy5lbmFibGVkKGZpbGUpOgorICAgICAgICAgICAgICAgIHJl
dHVybgorCisgICAgICAgICAgICBjbHMuX2Rpc2FibGVkLmRpc2NhcmQoZmlsZS5maWxlbm8oKSkK
KyAgICAgICAgICAgIGlmIGNscy50b3AuZ2V0KGZpbGUuZmlsZW5vKCkpOgorICAgICAgICAgICAg
ICAgIGNscy50b3AuZ2V0KGZpbGUuZmlsZW5vKCkpLnNldChmaWxlKQorCisgICAgICAgIEBjbGFz
c21ldGhvZAorICAgICAgICBkZWYgaXNfc3R5bGVkKGNscywgZmlsZSk6CisgICAgICAgICAgICB0
cnk6CisgICAgICAgICAgICAgICAgcmV0dXJuIGZpbGUuZmlsZW5vKCkgaW4gY2xzLl9pc19zdHls
ZWQKKyAgICAgICAgICAgIGV4Y2VwdCAoaW8uVW5zdXBwb3J0ZWRPcGVyYXRpb24sIEF0dHJpYnV0
ZUVycm9yKToKKyAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKworICAgICAgICBkZWYgX19p
bml0X18oc2VsZiwgc3R5bGU9Tm9uZSwgY29sb3I9Tm9uZSwgYmFja2dyb3VuZENvbG9yPU5vbmUp
OgorICAgICAgICAgICAgaWYgc3R5bGUgYW5kIHN0eWxlIG5vdCBpbiBUZXJtaW5hbC5UZXh0LnN0
eWxlczoKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCd7fSBpcyBub3QgYSByZWNv
Z25pemVkIHRlcm1pbmFsIHRleHQgc3R5bGUnLmZvcm1hdChzdHlsZSkpCisgICAgICAgICAgICBz
ZWxmLnN0eWxlID0gc3R5bGUKKworICAgICAgICAgICAgaWYgY29sb3IgYW5kIGNvbG9yIG5vdCBp
biBUZXJtaW5hbC5UZXh0LmNvbG9yczoKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9y
KCd7fSBpcyBub3QgYSByZWNvZ25pemVkIHRlcm1pbmFsIGNvbG9yJy5mb3JtYXQoY29sb3IpKQor
ICAgICAgICAgICAgc2VsZi5jb2xvciA9IGNvbG9yCisKKyAgICAgICAgICAgIGlmIGJhY2tncm91
bmRDb2xvciBhbmQgYmFja2dyb3VuZENvbG9yIG5vdCBpbiBUZXJtaW5hbC5UZXh0LmJhY2tncm91
bmRDb2xvcnM6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigne30gaXMgbm90IGEg
cmVjb2duaXplZCB0ZXJtaW5hbCBiYWNrZ3JvdW5kIGNvbG9yJy5mb3JtYXQoYmFja2dyb3VuZENv
bG9yKSkKKyAgICAgICAgICAgIHNlbGYuYmFja2dyb3VuZENvbG9yID0gYmFja2dyb3VuZENvbG9y
CisKKyAgICAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICAgICAgcmVzdWx0ID0gVGVy
bWluYWwuVGV4dC5yZXNldAorICAgICAgICAgICAgaWYgc2VsZi5zdHlsZToKKyAgICAgICAgICAg
ICAgICByZXN1bHQgKz0gc2VsZi5zdHlsZQorICAgICAgICAgICAgaWYgc2VsZi5jb2xvcjoKKyAg
ICAgICAgICAgICAgICByZXN1bHQgKz0gc2VsZi5jb2xvcgorICAgICAgICAgICAgaWYgc2VsZi5i
YWNrZ3JvdW5kQ29sb3I6CisgICAgICAgICAgICAgICAgcmVzdWx0ICs9IHNlbGYuYmFja2dyb3Vu
ZENvbG9yCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0CisKKyAgICAgICAgZGVmIHNldChzZWxm
LCBmaWxlKToKKyAgICAgICAgICAgIFRlcm1pbmFsLmFzc2VydF93cml0ZWFibGVfc3RyZWFtKGZp
bGUpCisgICAgICAgICAgICB3aWxsX3N0eWxlID0gVHJ1ZQorICAgICAgICAgICAgaWYgbm90IHNl
bGYuc3R5bGUgYW5kIG5vdCBzZWxmLmNvbG9yIGFuZCBub3Qgc2VsZi5iYWNrZ3JvdW5kQ29sb3I6
CisgICAgICAgICAgICAgICAgd2lsbF9zdHlsZSA9IEZhbHNlCisgICAgICAgICAgICBlbGlmIG5v
dCBzZWxmLmVuYWJsZWQoZmlsZSk6CisgICAgICAgICAgICAgICAgd2lsbF9zdHlsZSA9IEZhbHNl
CisKKyAgICAgICAgICAgIGlmIHdpbGxfc3R5bGU6CisgICAgICAgICAgICAgICAgc2VsZi5faXNf
c3R5bGVkLmFkZChmaWxlLmZpbGVubygpKQorICAgICAgICAgICAgICAgIGZpbGUud3JpdGUoc3Ry
KHNlbGYpKQorICAgICAgICAgICAgICAgIHJldHVybgorCisgICAgICAgICAgICBpZiBzZWxmLmlz
X3N0eWxlZChmaWxlKToKKyAgICAgICAgICAgICAgICBmaWxlLndyaXRlKFRlcm1pbmFsLlRleHQu
cmVzZXQpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc2VsZi5faXNfc3R5bGVk
LmRpc2NhcmQoZmlsZS5maWxlbm8oKSkKKyAgICAgICAgICAgIGV4Y2VwdCAoaW8uVW5zdXBwb3J0
ZWRPcGVyYXRpb24sIEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAg
ICAgICAgQGNvbnRleHRsaWIuY29udGV4dG1hbmFnZXIKKyAgICAgICAgZGVmIGFwcGx5KHNlbGYs
IHRhcmdldCk6CisgICAgICAgICAgICBUZXJtaW5hbC5hc3NlcnRfd3JpdGVhYmxlX3N0cmVhbSh0
YXJnZXQpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgcHJldmlvdXMgPSBzZWxm
LnRvcC5nZXQodGFyZ2V0LmZpbGVubygpKQorICAgICAgICAgICAgZXhjZXB0IChpby5VbnN1cHBv
cnRlZE9wZXJhdGlvbiwgQXR0cmlidXRlRXJyb3IpOgorICAgICAgICAgICAgICAgIHRyeToKKyAg
ICAgICAgICAgICAgICAgICAgeWllbGQKKyAgICAgICAgICAgICAgICBmaW5hbGx5OgorICAgICAg
ICAgICAgICAgICAgICByZXR1cm4KKworICAgICAgICAgICAgc2VsZi50b3BbdGFyZ2V0LmZpbGVu
bygpXSA9IHNlbGYKKyAgICAgICAgICAgIHNlbGYuc2V0KHRhcmdldCkKKworICAgICAgICAgICAg
dHJ5OgorICAgICAgICAgICAgICAgIHlpZWxkCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAg
ICAgICAgICAgIGlmIHByZXZpb3VzOgorICAgICAgICAgICAgICAgICAgICBwcmV2aW91cy5zZXQo
dGFyZ2V0KQorICAgICAgICAgICAgICAgICAgICBzZWxmLnRvcFt0YXJnZXQuZmlsZW5vKCldID0g
cHJldmlvdXMKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBUZXJt
aW5hbC5TdHlsZSgpLnNldCh0YXJnZXQpCisgICAgICAgICAgICAgICAgICAgIGRlbCBzZWxmLnRv
cFt0YXJnZXQuZmlsZW5vKCldCkluZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRz
Y21weS93ZWJraXRzY21weS9wcm9ncmFtL2JsYW1lLnB5Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Nj
cmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Byb2dyYW0vYmxhbWUucHkJ
KHJldmlzaW9uIDI4MDY0MykKKysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5
L3dlYmtpdHNjbXB5L3Byb2dyYW0vYmxhbWUucHkJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5
LDggQEAgY2xhc3MgQmxhbWUoRmlsdGVyZWRDb21tYW5kKToKIAogaWYgX19uYW1lX18gPT0gJ19f
bWFpbl9fJzoKICAgICBzeXMuZXhpdChCbGFtZS5tYWluKAotICAgICAgICBzeXMuYXJndlszOl0s
CisgICAgICAgIHN5cy5hcmd2WzQ6XSwKICAgICAgICAgbG9jYWwuU2NtLmZyb21fcGF0aChwYXRo
PXN5cy5hcmd2WzFdLCBjYWNoZWQ9VHJ1ZSksCiAgICAgICAgIHJlcHJlc2VudGF0aW9uPXN5cy5h
cmd2WzJdLAorICAgICAgICBpc2F0dHk9c3lzLmFyZ3ZbM10gPT0gJ2lzYXR0eScsCiAgICAgKSkK
SW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3By
b2dyYW0vY29tbWFuZC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93
ZWJraXRzY21weS93ZWJraXRzY21weS9wcm9ncmFtL2NvbW1hbmQucHkJKHJldmlzaW9uIDI4MDY0
MykKKysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3By
b2dyYW0vY29tbWFuZC5weQkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQCBpbXBvcnQg
c3VicHJvY2VzcwogaW1wb3J0IHN5cwogaW1wb3J0IHRpbWUKIAorZnJvbSB3ZWJraXRjb3JlcHkg
aW1wb3J0IFRlcm1pbmFsCiBmcm9tIHdlYmtpdHNjbXB5LmNvbW1pdCBpbXBvcnQgQ29tbWl0CiBm
cm9tIHdoaWNoY3JhZnQgaW1wb3J0IHdoaWNoCiAKQEAgLTExMCwzMiArMTExLDM1IEBAIGNsYXNz
IEZpbHRlcmVkQ29tbWFuZChvYmplY3QpOgogICAgICAgICAgICAgcmVwb3NpdG9yeS5jYWNoZSA9
IHJlcG9zaXRvcnkuQ2FjaGUocmVwb3NpdG9yeSkKIAogICAgICAgICAjIElmIHdlJ3JlIGEgdGVy
bWluYWwsIHJlbHkgb24gJ21vcmUnIHRvIGRpc3BsYXkgb3V0cHV0Ci0gICAgICAgIGlmIHN5cy5z
dGRpbi5pc2F0dHkoKSBhbmQgbm90IGlzaW5zdGFuY2UoYXJncywgbGlzdCkgYW5kIGZpbGU6Cisg
ICAgICAgIGlmIFRlcm1pbmFsLmlzYXR0eShzeXMuc3RkaW4pIGFuZCBub3QgaXNpbnN0YW5jZShh
cmdzLCBsaXN0KSBhbmQgZmlsZToKICAgICAgICAgICAgIGVudmlyb24gPSBvcy5lbnZpcm9uCiAg
ICAgICAgICAgICBlbnZpcm9uWydQWVRIT05QQVRIJ10gPSAnOicuam9pbihzeXMucGF0aCkKIAog
ICAgICAgICAgICAgY2hpbGQgPSBzdWJwcm9jZXNzLlBvcGVuKAotICAgICAgICAgICAgICAgIFtz
eXMuZXhlY3V0YWJsZSwgZmlsZSwgcmVwb3NpdG9yeS5yb290X3BhdGgsIGFyZ3MucmVwcmVzZW50
YXRpb25dICsgYXJncy5hcmdzLAorICAgICAgICAgICAgICAgIFtzeXMuZXhlY3V0YWJsZSwgZmls
ZSwgcmVwb3NpdG9yeS5yb290X3BhdGgsIGFyZ3MucmVwcmVzZW50YXRpb24sICdpc2F0dHknIGlm
IFRlcm1pbmFsLmlzYXR0eShzeXMuc3Rkb3V0KSBlbHNlICdub3RhdHR5J10gKyBhcmdzLmFyZ3Ms
CiAgICAgICAgICAgICAgICAgZW52PWVudmlyb24sCiAgICAgICAgICAgICAgICAgY3dkPW9zLmdl
dGN3ZCgpLAogICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCiAgICAgICAg
ICAgICAgICAgc3RkZXJyPXN1YnByb2Nlc3MuUElQRSwKICAgICAgICAgICAgICkKLSAgICAgICAg
ICAgIG1vcmUgPSBzdWJwcm9jZXNzLlBvcGVuKFt3aGljaCgnbW9yZScpXSArIFsnLUYnXSBpZiBw
bGF0Zm9ybS5zeXN0ZW0oKSA9PSAnRGFyd2luJyBlbHNlIFtdLCBzdGRpbj1jaGlsZC5zdGRvdXQp
CisgICAgICAgICAgICBtb3JlID0gc3VicHJvY2Vzcy5Qb3Blbihbd2hpY2goJ21vcmUnKV0gKyBb
Jy1GJywgJy1SJ10gaWYgcGxhdGZvcm0uc3lzdGVtKCkgPT0gJ0RhcndpbicgZWxzZSBbXSwgc3Rk
aW49Y2hpbGQuc3Rkb3V0KQogCiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgd2hp
bGUgbW9yZS5wb2xsKCkgaXMgTm9uZSBhbmQgbm90IGNoaWxkLnBvbGwoKToKICAgICAgICAgICAg
ICAgICAgICAgdGltZS5zbGVlcCgwLjI1KQogICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAg
ICAgICAgICBjaGlsZC5raWxsKCkKLSAgICAgICAgICAgICAgICBtb3JlLmtpbGwoKQorICAgICAg
ICAgICAgICAgIGlmIGNoaWxkLnJldHVybmNvZGUgaXMgTm9uZToKKyAgICAgICAgICAgICAgICAg
ICAgY2hpbGQua2lsbCgpCisgICAgICAgICAgICAgICAgaWYgbW9yZS5yZXR1cm5jb2RlIGlzIE5v
bmU6CisgICAgICAgICAgICAgICAgICAgIG1vcmUua2lsbCgpCiAgICAgICAgICAgICAgICAgY2hp
bGRfZXJyb3IgPSBjaGlsZC5zdGRlcnIucmVhZCgpCiAgICAgICAgICAgICAgICAgaWYgY2hpbGRf
ZXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIuYnVmZmVyLndyaXRlKGInXG4n
ICsgY2hpbGRfZXJyb3IpCisgICAgICAgICAgICAgICAgICAgIChzeXMuc3RkZXJyLmJ1ZmZlciBp
ZiBzeXMudmVyc2lvbl9pbmZvID4gKDMsIDApIGVsc2Ugc3lzLnN0ZGVycikud3JpdGUoYidcbicg
KyBjaGlsZF9lcnJvcikKIAogICAgICAgICAgICAgcmV0dXJuIGNoaWxkLnJldHVybmNvZGUKIAot
ICAgICAgICByZXR1cm4gRmlsdGVyZWRDb21tYW5kLm1haW4oYXJncywgcmVwb3NpdG9yeSwgY29t
bWFuZD1jbHMubmFtZSwgKiprd2FyZ3MpCisgICAgICAgIHdpdGggVGVybWluYWwub3ZlcnJpZGVf
YXR0eShzeXMuc3Rkb3V0LCBpc2F0dHk9a3dhcmdzLmdldCgnaXNhdHR5JykpLCBUZXJtaW5hbC5v
dmVycmlkZV9hdHR5KHN5cy5zdGRlcnIsIGlzYXR0eT1rd2FyZ3MuZ2V0KCdpc2F0dHknKSk6Cisg
ICAgICAgICAgICByZXR1cm4gRmlsdGVyZWRDb21tYW5kLm1haW4oYXJncywgcmVwb3NpdG9yeSwg
Y29tbWFuZD1jbHMubmFtZSwgKiprd2FyZ3MpCiAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYg
bWFpbihjbHMsIGFyZ3MsIHJlcG9zaXRvcnksIGNvbW1hbmQ9Tm9uZSwgcmVwcmVzZW50YXRpb249
Tm9uZSwgKiprd2FyZ3MpOgpAQCAtMjM0LDcgKzIzOCwxMyBAQCBjbGFzcyBGaWx0ZXJlZENvbW1h
bmQob2JqZWN0KToKICAgICAgICAgICAgICAgICAgICAgbGluZSwKICAgICAgICAgICAgICAgICAp
CiAgICAgICAgICAgICAgICAgaWYgaGVhZGVyICE9IGxpbmU6Ci0gICAgICAgICAgICAgICAgICAg
IHN5cy5zdGRvdXQud3JpdGUoaGVhZGVyKQorICAgICAgICAgICAgICAgICAgICB3aXRoIFRlcm1p
bmFsLlN0eWxlKGNvbG9yPVRlcm1pbmFsLlRleHQueWVsbG93LCBzdHlsZT1UZXJtaW5hbC5UZXh0
LmJvbGQpLmFwcGx5KHN5cy5zdGRvdXQpOgorICAgICAgICAgICAgICAgICAgICAgICAgc3lzLnN0
ZG91dC53cml0ZSgnICcuam9pbihoZWFkZXIuc3BsaXQoJyAnKVs6Ml0pKQorCisgICAgICAgICAg
ICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoJyAnKQorICAgICAgICAgICAgICAgICAgICB3aXRo
IFRlcm1pbmFsLlN0eWxlKGNvbG9yPVRlcm1pbmFsLlRleHQucmVkKS5hcHBseShzeXMuc3Rkb3V0
KToKKyAgICAgICAgICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoJyAnLmpvaW4oaGVh
ZGVyLnNwbGl0KCcgJylbMjpdKSkKKwogICAgICAgICAgICAgICAgICAgICBsaW5lID0gbG9nX291
dHB1dC5zdGRvdXQucmVhZGxpbmUoKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogCkBA
IC0yNTcsNiArMjY3LDggQEAgY2xhc3MgRmlsdGVyZWRDb21tYW5kKG9iamVjdCk6CiAKICAgICAg
ICAgZmluYWxseToKICAgICAgICAgICAgIGlmIG5vdCBsb2dfb3V0cHV0LnJldHVybmNvZGU6Ci0g
ICAgICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZShsb2dfb3V0cHV0LnN0ZGVyci5yZWFkKCkp
Ci0gICAgICAgICAgICBsb2dfb3V0cHV0LmtpbGwoKQorICAgICAgICAgICAgICAgIHdpdGggVGVy
bWluYWwuU3R5bGUoY29sb3I9VGVybWluYWwuVGV4dC5yZWQpLmFwcGx5KHN5cy5zdGRlcnIpOgor
ICAgICAgICAgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKGxvZ19vdXRwdXQuc3RkZXJyLnJl
YWQoKSkKKyAgICAgICAgICAgIGlmIGxvZ19vdXRwdXQucmV0dXJuY29kZSBpcyBOb25lOgorICAg
ICAgICAgICAgICAgIGxvZ19vdXRwdXQua2lsbCgpCiAgICAgICAgIHJldHVybiBsb2dfb3V0cHV0
LnJldHVybmNvZGUKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dl
YmtpdHNjbXB5L3Byb2dyYW0vbG9nLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGli
cmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Byb2dyYW0vbG9nLnB5CShyZXZpc2lvbiAy
ODA2NDMpCisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21w
eS9wcm9ncmFtL2xvZy5weQkod29ya2luZyBjb3B5KQpAQCAtMjQsNiArMjQsNyBAQAogCiBpbXBv
cnQgc3lzCiAKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBUZXJtaW5hbAogZnJvbSB3ZWJraXRz
Y21weSBpbXBvcnQgbG9jYWwKIGZyb20gd2Via2l0c2NtcHkucHJvZ3JhbS5jb21tYW5kIGltcG9y
dCBGaWx0ZXJlZENvbW1hbmQKIApAQCAtMzQsMTIgKzM1LDE1IEBAIGNsYXNzIExvZyhGaWx0ZXJl
ZENvbW1hbmQpOgogCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIG1haW4oY2xzLCBhcmdzLCBy
ZXBvc2l0b3J5LCAqKmt3YXJncyk6CisgICAgICAgIGNvbmZpZyA9IGdldGF0dHIocmVwb3NpdG9y
eSwgJ2NvbmZpZycsIGxhbWJkYToge30pKCkKKyAgICAgICAgVGVybWluYWwuY29sb3JzID0gY29u
ZmlnLmdldCgnY29sb3IuZGlmZicsIGNvbmZpZy5nZXQoJ2NvbG9yLnVpJywgJ2F1dG8nKSkgIT0g
J2ZhbHNlJwogICAgICAgICByZXR1cm4gY2xzLnBhZ2VyKGFyZ3MsIHJlcG9zaXRvcnksIGZpbGU9
X19maWxlX18sICoqa3dhcmdzKQogCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAg
c3lzLmV4aXQoTG9nLm1haW4oCi0gICAgICAgIHN5cy5hcmd2WzM6XSwKKyAgICAgICAgc3lzLmFy
Z3ZbNDpdLAogICAgICAgICBsb2NhbC5TY20uZnJvbV9wYXRoKHBhdGg9c3lzLmFyZ3ZbMV0sIGNh
Y2hlZD1UcnVlKSwKICAgICAgICAgcmVwcmVzZW50YXRpb249c3lzLmFyZ3ZbMl0sCisgICAgICAg
IGlzYXR0eT1zeXMuYXJndlszXSA9PSAnaXNhdHR5JywKICAgICApKQpJbmRleDogVG9vbHMvU2Ny
aXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvdGVzdC9sb2dfdW5pdHRlc3Qu
cHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Vi
a2l0c2NtcHkvdGVzdC9sb2dfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI4MDY0MykKKysrIFRvb2xz
L1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Rlc3QvbG9nX3VuaXR0
ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yMCwxMyArMjAsMTAgQEAKICMgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAotaW1wb3J0IGpzb24KIGltcG9ydCBvcwotaW1wb3J0
IHNodXRpbAotaW1wb3J0IHRlbXBmaWxlCitpbXBvcnQgc3lzCiAKLWZyb20gZGF0ZXRpbWUgaW1w
b3J0IGRhdGV0aW1lCi1mcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgT3V0cHV0Q2FwdHVyZSwgdGVz
dGluZworZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IE91dHB1dENhcHR1cmUsIFRlcm1pbmFsLCB0
ZXN0aW5nCiBmcm9tIHdlYmtpdGNvcmVweS5tb2NrcyBpbXBvcnQgVGltZSBhcyBNb2NrVGltZQog
ZnJvbSB3ZWJraXRzY21weSBpbXBvcnQgcHJvZ3JhbSwgbW9ja3MKIApAQCAtNDAsNyArMzcsNyBA
QCBjbGFzcyBUZXN0TG9nKHRlc3RpbmcuUGF0aFRlc3RDYXNlKToKICAgICAgICAgb3MubWtkaXIo
b3MucGF0aC5qb2luKHNlbGYucGF0aCwgJy5zdm4nKSkKIAogICAgIGRlZiB0ZXN0X2dpdChzZWxm
KToKLSAgICAgICAgd2l0aCBPdXRwdXRDYXB0dXJlKCkgYXMgY2FwdHVyZWQsIG1vY2tzLmxvY2Fs
LkdpdChzZWxmLnBhdGgpLCBtb2Nrcy5sb2NhbC5Tdm4oKSwgTW9ja1RpbWU6CisgICAgICAgIHdp
dGggT3V0cHV0Q2FwdHVyZSgpIGFzIGNhcHR1cmVkLCBtb2Nrcy5sb2NhbC5HaXQoc2VsZi5wYXRo
KSwgbW9ja3MubG9jYWwuU3ZuKCksIE1vY2tUaW1lLCBUZXJtaW5hbC5vdmVycmlkZV9hdHR5KHN5
cy5zdGRpbiwgaXNhdHR5PUZhbHNlKToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoLTEs
IHByb2dyYW0ubWFpbigKICAgICAgICAgICAgICAgICBhcmdzPSgnbG9nJywgJ21haW4nKSwKICAg
ICAgICAgICAgICAgICBwYXRoPXNlbGYucGF0aCwKQEAgLTgxLDcgKzc4LDcgQEAgRGF0ZTogICBT
YXQgT2N0IDAzIDAxOjMzOjIwIDIwMjAgKzAwMDAKICAgICAgICAgKQogCiAgICAgZGVmIHRlc3Rf
Z2l0X3N2bihzZWxmKToKLSAgICAgICAgd2l0aCBPdXRwdXRDYXB0dXJlKCkgYXMgY2FwdHVyZWQs
IG1vY2tzLmxvY2FsLkdpdChzZWxmLnBhdGgsIGdpdF9zdm49VHJ1ZSksIG1vY2tzLmxvY2FsLlN2
bigpLCBNb2NrVGltZToKKyAgICAgICAgd2l0aCBPdXRwdXRDYXB0dXJlKCkgYXMgY2FwdHVyZWQs
IG1vY2tzLmxvY2FsLkdpdChzZWxmLnBhdGgsIGdpdF9zdm49VHJ1ZSksIG1vY2tzLmxvY2FsLlN2
bigpLCBNb2NrVGltZSwgVGVybWluYWwub3ZlcnJpZGVfYXR0eShzeXMuc3RkaW4sIGlzYXR0eT1G
YWxzZSk6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKC0xLCBwcm9ncmFtLm1haW4oCiAg
ICAgICAgICAgICAgICAgYXJncz0oJ2xvZycsICdtYWluJyksCiAgICAgICAgICAgICAgICAgcGF0
aD1zZWxmLnBhdGgsCkBAIC0xMjcsNyArMTI0LDcgQEAgRGF0ZTogICBTYXQgT2N0IDAzIDAxOjMz
OjIwIDIwMjAgKzAwMDAKICAgICAgICAgICAgICkKIAogICAgIGRlZiB0ZXN0X2dpdF9zdm5fcmV2
aXNpb24oc2VsZik6Ci0gICAgICAgIHdpdGggT3V0cHV0Q2FwdHVyZSgpIGFzIGNhcHR1cmVkLCBt
b2Nrcy5sb2NhbC5HaXQoc2VsZi5wYXRoLCBnaXRfc3ZuPVRydWUpLCBtb2Nrcy5sb2NhbC5Tdm4o
KSwgTW9ja1RpbWU6CisgICAgICAgIHdpdGggT3V0cHV0Q2FwdHVyZSgpIGFzIGNhcHR1cmVkLCBt
b2Nrcy5sb2NhbC5HaXQoc2VsZi5wYXRoLCBnaXRfc3ZuPVRydWUpLCBtb2Nrcy5sb2NhbC5Tdm4o
KSwgTW9ja1RpbWUsIFRlcm1pbmFsLm92ZXJyaWRlX2F0dHkoc3lzLnN0ZGluLCBpc2F0dHk9RmFs
c2UpOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgtMSwgcHJvZ3JhbS5tYWluKAogICAg
ICAgICAgICAgICAgIGFyZ3M9KCdsb2cnLCAnbWFpbicsICctLXJldmlzaW9uJyksCiAgICAgICAg
ICAgICAgICAgcGF0aD1zZWxmLnBhdGgsCkBAIC0xNzQsNyArMTcxLDcgQEAgRGF0ZTogICBTYXQg
T2N0IDAzIDAxOjMzOjIwIDIwMjAgKzAwMDAKICAgICAgICAgICAgICkKIAogICAgIGRlZiB0ZXN0
X3N2bihzZWxmKToKLSAgICAgICAgd2l0aCBPdXRwdXRDYXB0dXJlKCkgYXMgY2FwdHVyZWQsIG1v
Y2tzLmxvY2FsLkdpdCgpLCBtb2Nrcy5sb2NhbC5Tdm4oc2VsZi5wYXRoKSwgTW9ja1RpbWU6Cisg
ICAgICAgIHdpdGggT3V0cHV0Q2FwdHVyZSgpIGFzIGNhcHR1cmVkLCBtb2Nrcy5sb2NhbC5HaXQo
KSwgbW9ja3MubG9jYWwuU3ZuKHNlbGYucGF0aCksIE1vY2tUaW1lLCBUZXJtaW5hbC5vdmVycmlk
ZV9hdHR5KHN5cy5zdGRpbiwgaXNhdHR5PUZhbHNlKToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoLTEsIHByb2dyYW0ubWFpbigKICAgICAgICAgICAgICAgICBhcmdzPSgnbG9nJywpLAog
ICAgICAgICAgICAgICAgIHBhdGg9c2VsZi5wYXRoLAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435285</attachid>
            <date>2021-08-10 14:08:36 -0700</date>
            <delta_ts>2021-08-10 14:35:39 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-228662-20210810140835.patch</filename>
            <type>text/plain</type>
            <size>20624</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwODYxCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMzRkMjQxZDJhNWYyZWMwNzM2NWI1M2Y1NjM4Mzc3NmJi
YWNmNmZlZS4uZGU4N2NiYTE5YjY2YjViNjJmNWFmNDdhZjdmMGExMjhiYmM1Y2ZhYyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4
IEBACisyMDIxLTA4LTEwICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbZ2l0LXdlYmtpdF0gQ29sb3IgYGxvZ2Agb3V0cHV0CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjg2NjIKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzgxMzQ0MTgxPgorCisgICAgICAgIFJldmlld2VkIGJ5IERld2VpIFpodS4KKworICAg
ICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS9zZXR1cC5weTogQnVtcCB2ZXJz
aW9uLgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3Jl
cHkvX19pbml0X18ucHk6IEJ1bXAgdmVyc2lvbiwgZXhwb3J0IFRlcm1pbmFsLgorICAgICAgICAq
IFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvdGVybWluYWwucHk6
IEFkZGVkLgorICAgICAgICAoVGVybWluYWwpOgorICAgICAgICAoVGVybWluYWwuYXNzZXJ0X3dy
aXRlYWJsZV9zdHJlYW0pOiBBc3NlcnQgdGhhdCB0aGUgcHJvdmlkZWQgb2JqZWN0IGlzIGEgd3Jp
dGFibGUgc3RyZWFtLgorICAgICAgICAoVGVybWluYWwuc3VwcG9ydHNfY29sb3IpOiBDaGVjayBp
ZiB0aGUgcHJvdmlkZWQgZmlsZSBzdXBwb3J0cyBjb2xvcmVkIG91dHB1dC4KKyAgICAgICAgKFRl
cm1pbmFsLmlzYXR0eSk6IENoZWNrIGlmIGEgc3RyZWFtIGlzIGFuIGF0dHksIGJvdGggYWNjb3Jk
aW5nIHRvIHRoZSBzdHJlYW0gaXRzZWxmIGFuZCBvdXIgb3ZlcnJpZGUuCisgICAgICAgIChUZXJt
aW5hbC5vdmVycmlkZV9hdHR5KTogQWxsb3cgY2FsbGVycyB0byBvdmVycmlkZSBhbmQgZGVjbGFy
ZSBleHBsaWNpdGx5IGlmIGEgc3RyZWFtIGlzIGFuIGF0dHkuCisgICAgICAgIChUZXJtaW5hbC5U
ZXh0KTogR3JvdXAgdGV4dCBjb2xvcnMgYW5kIHN0eWxlcy4KKyAgICAgICAgKFRlcm1pbmFsLlN0
eWxlKTogR3JvdXAgZnVuY3Rpb25zIG1vZGlmeWluZyBzdHlsZSBvZiBhIHN0cmVhbS4KKyAgICAg
ICAgKFRlcm1pbmFsLlN0eWxlLmVuYWJsZWQpOiBDaGVjayBpZiBzdHlsZWQgcHJpbnRpbmcgaXMg
ZW5hYmxlZCBvbiBhIHN0cmVhbS4KKyAgICAgICAgKFRlcm1pbmFsLlN0eWxlLmRpc2FibGUpOiBE
aXNhYmxlIHN0eWxlZCBwcmludGluZyBvbiBhIHN0cmVhbS4KKyAgICAgICAgKFRlcm1pbmFsLlN0
eWxlLmVuYWJsZSk6IEVuYWJsZSBzdHlsZWQgcHJpbnRpbmcgb24gYSBzdHJlYW0uCisgICAgICAg
IChUZXJtaW5hbC5TdHlsZS5pc19zdHlsZWQpOiBDaGVjayBpZiBhIHN0cmVhbSBpcyBjdXJyZW50
bHkgc3R5bGVkLgorICAgICAgICAoVGVybWluYWwuU3R5bGUuX19pbml0X18pOiBDb25zdHJ1Y3Qg
YSB0ZXh0IHN0eWxlLgorICAgICAgICAoVGVybWluYWwuU3R5bGUuX19yZXByX18pOiBPdXRwdXQg
dGhlIHRlcm1pbmFsIGNoYXJhY3RlcnMgc3R5bGluZyBhIHN0cmVhbS4KKyAgICAgICAgKFRlcm1p
bmFsLlN0eWxlLnNldCk6IEFwcGx5IHN0eWxlIHRvIGEgc3RyZWFtLgorICAgICAgICAoVGVybWlu
YWwuU3R5bGUuYXBwbHkpOiBBcHBseSBzdHlsZSB0byBhIHN0cmVhbSwgdW5hcHBseSB3aGVuIGV4
aXRpbmcgY29udGV4dC4KKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS9z
ZXR1cC5weToKKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRz
Y21weS9fX2luaXRfXy5weToKKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21w
eS93ZWJraXRzY21weS9wcm9ncmFtL2JsYW1lLnB5OiBQYXNzIGlzYXR0eSB0byBjaGlsZCBwcm9j
ZXNzLgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5
L3Byb2dyYW0vY29tbWFuZC5weToKKyAgICAgICAgKEZpbHRlcmVkQ29tbWFuZC5wYWdlcik6IFBh
c3MgaXNhdHR5IHRvIGNoaWxkIHByb2Nlc3MsIGFzayAnbW9yZScgdG8gZGlzcGxheSBjb2xvcnMu
CisgICAgICAgIChGaWx0ZXJlZENvbW1hbmQubWFpbik6IENvbG9yIGhlYWRlciBhbmQgZXJyb3Iu
CisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvcHJv
Z3JhbS9sb2cucHk6IFBhc3MgaXNhdHR5IHRvIGNoaWxkIHByb2Nlc3MuCisgICAgICAgICogU2Ny
aXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvdGVzdC9sb2dfdW5pdHRlc3Qu
cHk6IE92ZXJyaWRlIGF0dHkgYmVoYXZpb3IuCisKIDIwMjEtMDgtMTAgIEJlbiBOaGFtICA8bmhh
bUBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IG5lc3RlZCByZXNvdXJjZSBsb2FkIHRyYWNlcG9p
bnRzCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvc2V0
dXAucHkgYi9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvc2V0dXAucHkKaW5k
ZXggOWU1OGZkYTI3ZTQxOWM3MDVlZGU0OGRlYWIwMmZhNjY3OWE0MTVmMC4uNDA3MzBlZjk5NTVj
ODU4MmFlNzE1ZTRhZWYzMDk3OGE4ZDgzYmJmYiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy9s
aWJyYXJpZXMvd2Via2l0Y29yZXB5L3NldHVwLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvbGlicmFy
aWVzL3dlYmtpdGNvcmVweS9zZXR1cC5weQpAQCAtMzAsNyArMzAsNyBAQCBkZWYgcmVhZG1lKCk6
CiAKIHNldHVwKAogICAgIG5hbWU9J3dlYmtpdGNvcmVweScsCi0gICAgdmVyc2lvbj0nMC44LjEn
LAorICAgIHZlcnNpb249JzAuOC4yJywKICAgICBkZXNjcmlwdGlvbj0nTGlicmFyeSBjb250YWlu
aW5nIHZhcmlvdXMgUHl0aG9uIHN1cHBvcnQgY2xhc3NlcyBhbmQgZnVuY3Rpb25zLicsCiAgICAg
bG9uZ19kZXNjcmlwdGlvbj1yZWFkbWUoKSwKICAgICBjbGFzc2lmaWVycz1bCmRpZmYgLS1naXQg
YS9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L19faW5p
dF9fLnB5IGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVw
eS9fX2luaXRfXy5weQppbmRleCBmNjVkMWQxNGRiNTExNDRiNTMzODBhM2NmZWJkMjIzMTIyNTA3
MDJkLi45ZWExYzI3YmQ4NWFkZWE5NjQ4YTUxNzk0ZjA5NTdjMDgzZGI5ZjhkIDEwMDY0NAotLS0g
YS9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L19faW5p
dF9fLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRj
b3JlcHkvX19pbml0X18ucHkKQEAgLTQwLDcgKzQwLDcgQEAgZnJvbSB3ZWJraXRjb3JlcHkuY3Jl
ZGVudGlhbHMgaW1wb3J0IGNyZWRlbnRpYWxzCiBmcm9tIHdlYmtpdGNvcmVweS5tZWFzdXJlX3Rp
bWUgaW1wb3J0IE1lYXN1cmVUaW1lCiBmcm9tIHdlYmtpdGNvcmVweS5uZXN0ZWRfZnV6enlfZGlj
dCBpbXBvcnQgTmVzdGVkRnV6enlEaWN0CiAKLXZlcnNpb24gPSBWZXJzaW9uKDAsIDgsIDEpCit2
ZXJzaW9uID0gVmVyc2lvbigwLCA4LCAyKQogCiBmcm9tIHdlYmtpdGNvcmVweS5hdXRvaW5zdGFs
bCBpbXBvcnQgUGFja2FnZSwgQXV0b0luc3RhbGwKIGlmIHN5cy52ZXJzaW9uX2luZm8gPiAoMywg
MCk6CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Vi
a2l0Y29yZXB5L3Rlcm1pbmFsLnB5IGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29y
ZXB5L3dlYmtpdGNvcmVweS90ZXJtaW5hbC5weQppbmRleCA4MGNmNGRkYzAwNGMxNTk5Zjc2NzA5
N2U2NWQzZGRkNjMzZDI5ZmExLi42NzFiY2I1Nzg5YjcwYTlmYzUyOGUyNDQyNDVhNjAwZTBhYjg3
MDY2IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Vi
a2l0Y29yZXB5L3Rlcm1pbmFsLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtp
dGNvcmVweS93ZWJraXRjb3JlcHkvdGVybWluYWwucHkKQEAgLTIwLDEwICsyMCwyMCBAQAogIyAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUwogIyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAoraW1wb3J0IGNvbnRleHRsaWIKK2ltcG9ydCBp
bwogaW1wb3J0IHN5cwogCitmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgU3RyaW5nSU8KKworaWYg
c3lzLnZlcnNpb25faW5mbyA+ICgzLCAwKToKKyAgICBmaWxlID0gaW8uSU9CYXNlCisKIAogY2xh
c3MgVGVybWluYWwob2JqZWN0KToKKyAgICBfYXR0eV9vdmVycmlkZXMgPSB7fQorICAgIGNvbG9y
cyA9IFRydWUKKwogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBpbnB1dChjbHMsICphcmdzLCAq
Kmt3YXJncyk6CiAgICAgICAgIHJldHVybiAoaW5wdXQgaWYgc3lzLnZlcnNpb25faW5mbyA+ICgz
LCAwKSBlbHNlIHJhd19pbnB1dCkoKmFyZ3MsICoqa3dhcmdzKQpAQCAtNTcsMyArNjcsMTY3IEBA
IGNsYXNzIFRlcm1pbmFsKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgcmVzcG9uc2UgPSBkZWZh
dWx0CiAKICAgICAgICAgcmV0dXJuIHJlc3BvbnNlCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBk
ZWYgYXNzZXJ0X3dyaXRlYWJsZV9zdHJlYW0oY2xzLCB0YXJnZXQpOgorICAgICAgICBpZiBub3Qg
aXNpbnN0YW5jZSh0YXJnZXQsIChpby5JT0Jhc2UsIGZpbGUsIFN0cmluZ0lPKSk6CisgICAgICAg
ICAgICByYWlzZSBWYWx1ZUVycm9yKCd7fSBpcyBub3QgYW4gSU8gb2JqZWN0Jy5mb3JtYXQodGFy
Z2V0KSkKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UodGFyZ2V0LCBTdHJpbmdJTykgYW5kIG5v
dCAoZ2V0YXR0cih0YXJnZXQsICd3cml0YWJsZScsIE5vbmUpIGFuZCB0YXJnZXQud3JpdGFibGUo
KSkgYW5kICd3JyBub3QgaW4gZ2V0YXR0cih0YXJnZXQsICdtb2RlJywgJ3InKToKKyAgICAgICAg
ICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3t9IGlzIGFuIElPIG9iamVjdCwgYnV0IGlzIG5vdCB3cml0
YWJsZSB7fScuZm9ybWF0KHRhcmdldCwgKSkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBz
dXBwb3J0c19jb2xvcihjbHMsIGZpbGUpOgorICAgICAgICBpZiBub3QgY2xzLmNvbG9yczoKKyAg
ICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICByZXR1cm4gY2xzLmlzYXR0eShmaWxlKQor
CisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGlzYXR0eShjbHMsIGZpbGUpOgorICAgICAgICB0
cnk6CisgICAgICAgICAgICByZXR1cm4gY2xzLl9hdHR5X292ZXJyaWRlcy5nZXQoZmlsZS5maWxl
bm8oKSwgZmlsZS5pc2F0dHkoKSkKKyAgICAgICAgZXhjZXB0IChpby5VbnN1cHBvcnRlZE9wZXJh
dGlvbiwgQXR0cmlidXRlRXJyb3IpOgorICAgICAgICAgICAgcmV0dXJuIGNscy5fYXR0eV9vdmVy
cmlkZXMuZ2V0KHN0cihmaWxlKSwgZmlsZS5pc2F0dHkoKSkKKworICAgIEBjbGFzc21ldGhvZAor
ICAgIEBjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyCisgICAgZGVmIG92ZXJyaWRlX2F0dHkoY2xz
LCB0YXJnZXQsIGlzYXR0eT1UcnVlKToKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UodGFyZ2V0
LCAoaW8uSU9CYXNlLCBmaWxlLCBTdHJpbmdJTykpOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVF
cnJvcigne30gaXMgbm90IGFuIElPIG9iamVjdCcuZm9ybWF0KHRhcmdldCkpCisKKyAgICAgICAg
dHJ5OgorICAgICAgICAgICAga2V5ID0gdGFyZ2V0LmZpbGVubygpCisgICAgICAgIGV4Y2VwdCAo
aW8uVW5zdXBwb3J0ZWRPcGVyYXRpb24sIEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgICAgIGtl
eSA9IHN0cih0YXJnZXQpCisKKyAgICAgICAgcHJldmlvdXMgPSBjbHMuX2F0dHlfb3ZlcnJpZGVz
LmdldChrZXkpCisgICAgICAgIGNscy5fYXR0eV9vdmVycmlkZXNba2V5XSA9IGlzYXR0eQorCisg
ICAgICAgIHRyeToKKyAgICAgICAgICAgIHlpZWxkCisgICAgICAgIGZpbmFsbHk6CisgICAgICAg
ICAgICBpZiBwcmV2aW91cyBpcyBOb25lOgorICAgICAgICAgICAgICAgIGRlbCBjbHMuX2F0dHlf
b3ZlcnJpZGVzW2tleV0KKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgY2xzLl9h
dHR5X292ZXJyaWRlc1trZXldID0gcHJldmlvdXMKKworICAgIGNsYXNzIFRleHQob2JqZWN0KToK
KyAgICAgICAgdmFsdWUgPSBsYW1iZGEgdmFsdWU6ICdcMDMzW3t9bScuZm9ybWF0KHZhbHVlKQor
CisgICAgICAgIHJlc2V0ID0gdmFsdWUoMCkKKworICAgICAgICBzdHlsZXMgPSBbdmFsdWUoMSks
IHZhbHVlKDQpLCB2YWx1ZSg1KSwgdmFsdWUoOCldCisgICAgICAgIGJvbGQsIHVuZGVybGluZSwg
YmxpbmssIGNvbmNlYWxlZCA9IHN0eWxlcworCisgICAgICAgIGNvbG9ycyA9IFt2YWx1ZSgzMCks
IHZhbHVlKDMxKSwgdmFsdWUoMzIpLCB2YWx1ZSgzMyksIHZhbHVlKDM0KSwgdmFsdWUoMzUpLCB2
YWx1ZSgzNiksIHZhbHVlKDM3KV0KKyAgICAgICAgYmxhY2ssIHJlZCwgZ3JlZW4sIHllbGxvdywg
Ymx1ZSwgbWFnZW50YSwgY3lhbiwgd2hpdGUgPSBjb2xvcnMKKworICAgICAgICBiYWNrZ3JvdW5k
Q29sb3JzID0gW3ZhbHVlKDQwKSwgdmFsdWUoNDEpLCB2YWx1ZSg0MiksIHZhbHVlKDQzKSwgdmFs
dWUoNDQpLCB2YWx1ZSg0NSksIHZhbHVlKDQ2KSwgdmFsdWUoNDcpXQorICAgICAgICBibGFja0Jh
Y2tncm91bmQsIHJlZEJhY2tncm91bmQsIGdyZWVuQmFja2dyb3VuZCwgeWVsbG93QmFja2dyb3Vu
ZCwgYmx1ZUJhY2tncm91bmQsIG1hZ2VudGFCYWNrZ3JvdW5kLCBjeWFuQmFja2dyb3VuZCwgd2hp
dGVCYWNrZ3JvdW5kID0gY29sb3JzCisKKyAgICBjbGFzcyBTdHlsZShvYmplY3QpOgorICAgICAg
ICB0b3AgPSB7fQorICAgICAgICBfZGlzYWJsZWQgPSBzZXQoKQorICAgICAgICBfaXNfc3R5bGVk
ID0gc2V0KCkKKworICAgICAgICBAY2xhc3NtZXRob2QKKyAgICAgICAgZGVmIGVuYWJsZWQoY2xz
LCBmaWxlKToKKyAgICAgICAgICAgIFRlcm1pbmFsLmFzc2VydF93cml0ZWFibGVfc3RyZWFtKGZp
bGUpCisKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBpZiBub3QgVGVybWluYWwu
c3VwcG9ydHNfY29sb3IoZmlsZSkgb3Igbm90IGZpbGUuZmlsZW5vKCk6CisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICAgICAgZXhjZXB0IChpby5VbnN1cHBvcnRlZE9w
ZXJhdGlvbiwgQXR0cmlidXRlRXJyb3IpOgorICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQor
ICAgICAgICAgICAgcmV0dXJuIGZpbGUuZmlsZW5vKCkgbm90IGluIGNscy5fZGlzYWJsZWQKKwor
ICAgICAgICBAY2xhc3NtZXRob2QKKyAgICAgICAgZGVmIGRpc2FibGUoY2xzLCBmaWxlKToKKyAg
ICAgICAgICAgIFRlcm1pbmFsLmFzc2VydF93cml0ZWFibGVfc3RyZWFtKGZpbGUpCisgICAgICAg
ICAgICBpZiBub3QgY2xzLmVuYWJsZWQoZmlsZSk6CisgICAgICAgICAgICAgICAgcmV0dXJuCisg
ICAgICAgICAgICBjbHMuX2Rpc2FibGVkLmFkZChmaWxlLmZpbGVubygpKQorICAgICAgICAgICAg
VGVybWluYWwuU3R5bGUoKS5zZXQoZmlsZSkKKworICAgICAgICBAY2xhc3NtZXRob2QKKyAgICAg
ICAgZGVmIGVuYWJsZShjbHMsIGZpbGUpOgorICAgICAgICAgICAgVGVybWluYWwuYXNzZXJ0X3dy
aXRlYWJsZV9zdHJlYW0oZmlsZSkKKyAgICAgICAgICAgIGlmIGNscy5lbmFibGVkKGZpbGUpOgor
ICAgICAgICAgICAgICAgIHJldHVybgorCisgICAgICAgICAgICBjbHMuX2Rpc2FibGVkLmRpc2Nh
cmQoZmlsZS5maWxlbm8oKSkKKyAgICAgICAgICAgIGlmIGNscy50b3AuZ2V0KGZpbGUuZmlsZW5v
KCkpOgorICAgICAgICAgICAgICAgIGNscy50b3AuZ2V0KGZpbGUuZmlsZW5vKCkpLnNldChmaWxl
KQorCisgICAgICAgIEBjbGFzc21ldGhvZAorICAgICAgICBkZWYgaXNfc3R5bGVkKGNscywgZmls
ZSk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgcmV0dXJuIGZpbGUuZmlsZW5v
KCkgaW4gY2xzLl9pc19zdHlsZWQKKyAgICAgICAgICAgIGV4Y2VwdCAoaW8uVW5zdXBwb3J0ZWRP
cGVyYXRpb24sIEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UK
KworICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgc3R5bGU9Tm9uZSwgY29sb3I9Tm9uZSwgYmFj
a2dyb3VuZENvbG9yPU5vbmUpOgorICAgICAgICAgICAgaWYgc3R5bGUgYW5kIHN0eWxlIG5vdCBp
biBUZXJtaW5hbC5UZXh0LnN0eWxlczoKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9y
KCd7fSBpcyBub3QgYSByZWNvZ25pemVkIHRlcm1pbmFsIHRleHQgc3R5bGUnLmZvcm1hdChzdHls
ZSkpCisgICAgICAgICAgICBzZWxmLnN0eWxlID0gc3R5bGUKKworICAgICAgICAgICAgaWYgY29s
b3IgYW5kIGNvbG9yIG5vdCBpbiBUZXJtaW5hbC5UZXh0LmNvbG9yczoKKyAgICAgICAgICAgICAg
ICByYWlzZSBWYWx1ZUVycm9yKCd7fSBpcyBub3QgYSByZWNvZ25pemVkIHRlcm1pbmFsIGNvbG9y
Jy5mb3JtYXQoY29sb3IpKQorICAgICAgICAgICAgc2VsZi5jb2xvciA9IGNvbG9yCisKKyAgICAg
ICAgICAgIGlmIGJhY2tncm91bmRDb2xvciBhbmQgYmFja2dyb3VuZENvbG9yIG5vdCBpbiBUZXJt
aW5hbC5UZXh0LmJhY2tncm91bmRDb2xvcnM6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVF
cnJvcigne30gaXMgbm90IGEgcmVjb2duaXplZCB0ZXJtaW5hbCBiYWNrZ3JvdW5kIGNvbG9yJy5m
b3JtYXQoYmFja2dyb3VuZENvbG9yKSkKKyAgICAgICAgICAgIHNlbGYuYmFja2dyb3VuZENvbG9y
ID0gYmFja2dyb3VuZENvbG9yCisKKyAgICAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAg
ICAgICAgcmVzdWx0ID0gVGVybWluYWwuVGV4dC5yZXNldAorICAgICAgICAgICAgaWYgc2VsZi5z
dHlsZToKKyAgICAgICAgICAgICAgICByZXN1bHQgKz0gc2VsZi5zdHlsZQorICAgICAgICAgICAg
aWYgc2VsZi5jb2xvcjoKKyAgICAgICAgICAgICAgICByZXN1bHQgKz0gc2VsZi5jb2xvcgorICAg
ICAgICAgICAgaWYgc2VsZi5iYWNrZ3JvdW5kQ29sb3I6CisgICAgICAgICAgICAgICAgcmVzdWx0
ICs9IHNlbGYuYmFja2dyb3VuZENvbG9yCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0CisKKyAg
ICAgICAgZGVmIHNldChzZWxmLCBmaWxlKToKKyAgICAgICAgICAgIFRlcm1pbmFsLmFzc2VydF93
cml0ZWFibGVfc3RyZWFtKGZpbGUpCisgICAgICAgICAgICB3aWxsX3N0eWxlID0gVHJ1ZQorICAg
ICAgICAgICAgaWYgbm90IHNlbGYuc3R5bGUgYW5kIG5vdCBzZWxmLmNvbG9yIGFuZCBub3Qgc2Vs
Zi5iYWNrZ3JvdW5kQ29sb3I6CisgICAgICAgICAgICAgICAgd2lsbF9zdHlsZSA9IEZhbHNlCisg
ICAgICAgICAgICBlbGlmIG5vdCBzZWxmLmVuYWJsZWQoZmlsZSk6CisgICAgICAgICAgICAgICAg
d2lsbF9zdHlsZSA9IEZhbHNlCisKKyAgICAgICAgICAgIGlmIHdpbGxfc3R5bGU6CisgICAgICAg
ICAgICAgICAgc2VsZi5faXNfc3R5bGVkLmFkZChmaWxlLmZpbGVubygpKQorICAgICAgICAgICAg
ICAgIGZpbGUud3JpdGUoc3RyKHNlbGYpKQorICAgICAgICAgICAgICAgIHJldHVybgorCisgICAg
ICAgICAgICBpZiBzZWxmLmlzX3N0eWxlZChmaWxlKToKKyAgICAgICAgICAgICAgICBmaWxlLndy
aXRlKFRlcm1pbmFsLlRleHQucmVzZXQpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAg
ICAgc2VsZi5faXNfc3R5bGVkLmRpc2NhcmQoZmlsZS5maWxlbm8oKSkKKyAgICAgICAgICAgIGV4
Y2VwdCAoaW8uVW5zdXBwb3J0ZWRPcGVyYXRpb24sIEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAg
ICAgICAgICBwYXNzCisKKyAgICAgICAgQGNvbnRleHRsaWIuY29udGV4dG1hbmFnZXIKKyAgICAg
ICAgZGVmIGFwcGx5KHNlbGYsIHRhcmdldCk6CisgICAgICAgICAgICBUZXJtaW5hbC5hc3NlcnRf
d3JpdGVhYmxlX3N0cmVhbSh0YXJnZXQpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAg
ICAgcHJldmlvdXMgPSBzZWxmLnRvcC5nZXQodGFyZ2V0LmZpbGVubygpKQorICAgICAgICAgICAg
ZXhjZXB0IChpby5VbnN1cHBvcnRlZE9wZXJhdGlvbiwgQXR0cmlidXRlRXJyb3IpOgorICAgICAg
ICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgeWllbGQKKyAgICAgICAgICAgICAg
ICBmaW5hbGx5OgorICAgICAgICAgICAgICAgICAgICByZXR1cm4KKworICAgICAgICAgICAgc2Vs
Zi50b3BbdGFyZ2V0LmZpbGVubygpXSA9IHNlbGYKKyAgICAgICAgICAgIHNlbGYuc2V0KHRhcmdl
dCkKKworICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHlpZWxkCisgICAgICAgICAg
ICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIGlmIHByZXZpb3VzOgorICAgICAgICAgICAgICAg
ICAgICBwcmV2aW91cy5zZXQodGFyZ2V0KQorICAgICAgICAgICAgICAgICAgICBzZWxmLnRvcFt0
YXJnZXQuZmlsZW5vKCldID0gcHJldmlvdXMKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAg
ICAgICAgICAgICAgICBUZXJtaW5hbC5TdHlsZSgpLnNldCh0YXJnZXQpCisgICAgICAgICAgICAg
ICAgICAgIGRlbCBzZWxmLnRvcFt0YXJnZXQuZmlsZW5vKCldCmRpZmYgLS1naXQgYS9Ub29scy9T
Y3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS9zZXR1cC5weSBiL1Rvb2xzL1NjcmlwdHMvbGli
cmFyaWVzL3dlYmtpdHNjbXB5L3NldHVwLnB5CmluZGV4IDRjZWU1ZWNlNjhkNGU2ZGYxMTkwNjUy
YjQ4ZGY1ZmQzZWViNzQxNWEuLjgxMDMzYWJkY2JiOTE0NGQ0Y2UzY2I2NTI4YmE0NzU2ODkxZjA1
YjIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3NldHVw
LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3NldHVwLnB5CkBA
IC0yOSw3ICsyOSw3IEBAIGRlZiByZWFkbWUoKToKIAogc2V0dXAoCiAgICAgbmFtZT0nd2Via2l0
c2NtcHknLAotICAgIHZlcnNpb249JzEuMS4wJywKKyAgICB2ZXJzaW9uPScxLjEuMScsCiAgICAg
ZGVzY3JpcHRpb249J0xpYnJhcnkgZGVzaWduZWQgdG8gaW50ZXJhY3Qgd2l0aCBnaXQgYW5kIHN2
biByZXBvc2l0b3JpZXMuJywKICAgICBsb25nX2Rlc2NyaXB0aW9uPXJlYWRtZSgpLAogICAgIGNs
YXNzaWZpZXJzPVsKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNj
bXB5L3dlYmtpdHNjbXB5L19faW5pdF9fLnB5IGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Vi
a2l0c2NtcHkvd2Via2l0c2NtcHkvX19pbml0X18ucHkKaW5kZXggMzAxNjA0ZGU4Njk5NDNlZDJk
MDNiNWY5ZWEyYmUxZDgwMTZiOTFhZi4uZTA0YmIyOWIzZmU0MjM5NWVhYzQ3NWM5MTJkMDdjMjQy
MzdiMTU2ZiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkv
d2Via2l0c2NtcHkvX19pbml0X18ucHkKKysrIGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Vi
a2l0c2NtcHkvd2Via2l0c2NtcHkvX19pbml0X18ucHkKQEAgLTQ2LDcgKzQ2LDcgQEAgZXhjZXB0
IEltcG9ydEVycm9yOgogICAgICAgICAiUGxlYXNlIGluc3RhbGwgd2Via2l0Y29yZXB5IHdpdGgg
YHBpcCBpbnN0YWxsIHdlYmtpdGNvcmVweSAtLWV4dHJhLWluZGV4LXVybCA8cGFja2FnZSBpbmRl
eCBVUkw+YCIKICAgICApCiAKLXZlcnNpb24gPSBWZXJzaW9uKDEsIDEsIDApCit2ZXJzaW9uID0g
VmVyc2lvbigxLCAxLCAxKQogCiBBdXRvSW5zdGFsbC5yZWdpc3RlcihQYWNrYWdlKCdmYXN0ZW5l
cnMnLCBWZXJzaW9uKDAsIDE1LCAwKSkpCiBBdXRvSW5zdGFsbC5yZWdpc3RlcihQYWNrYWdlKCdt
b25vdG9uaWMnLCBWZXJzaW9uKDEsIDUpKSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvbGli
cmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Byb2dyYW0vYmxhbWUucHkgYi9Ub29scy9T
Y3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9wcm9ncmFtL2JsYW1lLnB5
CmluZGV4IDY2MTk0NTgxZDc3ZjQxNTk4OWE5Mjg0NzczMzJjODEwOWI3NzA0MzEuLmUyMGY0ZGRj
YjhjNjgwODcyOGRiODNlMWYwYTgzM2QzMjZhMzUzMjcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Njcmlw
dHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Byb2dyYW0vYmxhbWUucHkKKysr
IGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvcHJvZ3Jh
bS9ibGFtZS5weQpAQCAtMzksNyArMzksOCBAQCBjbGFzcyBCbGFtZShGaWx0ZXJlZENvbW1hbmQp
OgogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIHN5cy5leGl0KEJsYW1lLm1haW4o
Ci0gICAgICAgIHN5cy5hcmd2WzM6XSwKKyAgICAgICAgc3lzLmFyZ3ZbNDpdLAogICAgICAgICBs
b2NhbC5TY20uZnJvbV9wYXRoKHBhdGg9c3lzLmFyZ3ZbMV0sIGNhY2hlZD1UcnVlKSwKICAgICAg
ICAgcmVwcmVzZW50YXRpb249c3lzLmFyZ3ZbMl0sCisgICAgICAgIGlzYXR0eT1zeXMuYXJndlsz
XSA9PSAnaXNhdHR5JywKICAgICApKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9saWJyYXJp
ZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvcHJvZ3JhbS9jb21tYW5kLnB5IGIvVG9vbHMvU2Ny
aXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvcHJvZ3JhbS9jb21tYW5kLnB5
CmluZGV4IGM0ZTdjMjVmNjUxZWJmNjc4NGZkMmEzYTM4ZWVjZGQwNGQ2NzhhN2QuLjI4YWE5OTc3
OWE1MjZkMjQ1NTk5NDc2NTVjN2ZkYzFhZmQzYTA1Y2MgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Njcmlw
dHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Byb2dyYW0vY29tbWFuZC5weQor
KysgYi9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9wcm9n
cmFtL2NvbW1hbmQucHkKQEAgLTI3LDYgKzI3LDcgQEAgaW1wb3J0IHN1YnByb2Nlc3MKIGltcG9y
dCBzeXMKIGltcG9ydCB0aW1lCiAKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBUZXJtaW5hbAog
ZnJvbSB3ZWJraXRzY21weS5jb21taXQgaW1wb3J0IENvbW1pdAogZnJvbSB3aGljaGNyYWZ0IGlt
cG9ydCB3aGljaAogCkBAIC0xMTAsMzIgKzExMSwzNSBAQCBjbGFzcyBGaWx0ZXJlZENvbW1hbmQo
b2JqZWN0KToKICAgICAgICAgICAgIHJlcG9zaXRvcnkuY2FjaGUgPSByZXBvc2l0b3J5LkNhY2hl
KHJlcG9zaXRvcnkpCiAKICAgICAgICAgIyBJZiB3ZSdyZSBhIHRlcm1pbmFsLCByZWx5IG9uICdt
b3JlJyB0byBkaXNwbGF5IG91dHB1dAotICAgICAgICBpZiBzeXMuc3RkaW4uaXNhdHR5KCkgYW5k
IG5vdCBpc2luc3RhbmNlKGFyZ3MsIGxpc3QpIGFuZCBmaWxlOgorICAgICAgICBpZiBUZXJtaW5h
bC5pc2F0dHkoc3lzLnN0ZGluKSBhbmQgbm90IGlzaW5zdGFuY2UoYXJncywgbGlzdCkgYW5kIGZp
bGU6CiAgICAgICAgICAgICBlbnZpcm9uID0gb3MuZW52aXJvbgogICAgICAgICAgICAgZW52aXJv
blsnUFlUSE9OUEFUSCddID0gJzonLmpvaW4oc3lzLnBhdGgpCiAKICAgICAgICAgICAgIGNoaWxk
ID0gc3VicHJvY2Vzcy5Qb3BlbigKLSAgICAgICAgICAgICAgICBbc3lzLmV4ZWN1dGFibGUsIGZp
bGUsIHJlcG9zaXRvcnkucm9vdF9wYXRoLCBhcmdzLnJlcHJlc2VudGF0aW9uXSArIGFyZ3MuYXJn
cywKKyAgICAgICAgICAgICAgICBbc3lzLmV4ZWN1dGFibGUsIGZpbGUsIHJlcG9zaXRvcnkucm9v
dF9wYXRoLCBhcmdzLnJlcHJlc2VudGF0aW9uLCAnaXNhdHR5JyBpZiBUZXJtaW5hbC5pc2F0dHko
c3lzLnN0ZG91dCkgZWxzZSAnbm90YXR0eSddICsgYXJncy5hcmdzLAogICAgICAgICAgICAgICAg
IGVudj1lbnZpcm9uLAogICAgICAgICAgICAgICAgIGN3ZD1vcy5nZXRjd2QoKSwKICAgICAgICAg
ICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAogICAgICAgICAgICAgICAgIHN0ZGVycj1z
dWJwcm9jZXNzLlBJUEUsCiAgICAgICAgICAgICApCi0gICAgICAgICAgICBtb3JlID0gc3VicHJv
Y2Vzcy5Qb3Blbihbd2hpY2goJ21vcmUnKV0gKyBbJy1GJ10gaWYgcGxhdGZvcm0uc3lzdGVtKCkg
PT0gJ0RhcndpbicgZWxzZSBbXSwgc3RkaW49Y2hpbGQuc3Rkb3V0KQorICAgICAgICAgICAgbW9y
ZSA9IHN1YnByb2Nlc3MuUG9wZW4oW3doaWNoKCdtb3JlJyldICsgWyctRicsICctUiddIGlmIHBs
YXRmb3JtLnN5c3RlbSgpID09ICdEYXJ3aW4nIGVsc2UgW10sIHN0ZGluPWNoaWxkLnN0ZG91dCkK
IAogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHdoaWxlIG1vcmUucG9sbCgpIGlz
IE5vbmUgYW5kIG5vdCBjaGlsZC5wb2xsKCk6CiAgICAgICAgICAgICAgICAgICAgIHRpbWUuc2xl
ZXAoMC4yNSkKICAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgY2hpbGQua2ls
bCgpCi0gICAgICAgICAgICAgICAgbW9yZS5raWxsKCkKKyAgICAgICAgICAgICAgICBpZiBjaGls
ZC5yZXR1cm5jb2RlIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgIGNoaWxkLmtpbGwoKQor
ICAgICAgICAgICAgICAgIGlmIG1vcmUucmV0dXJuY29kZSBpcyBOb25lOgorICAgICAgICAgICAg
ICAgICAgICBtb3JlLmtpbGwoKQogICAgICAgICAgICAgICAgIGNoaWxkX2Vycm9yID0gY2hpbGQu
c3RkZXJyLnJlYWQoKQogICAgICAgICAgICAgICAgIGlmIGNoaWxkX2Vycm9yOgotICAgICAgICAg
ICAgICAgICAgICBzeXMuc3RkZXJyLmJ1ZmZlci53cml0ZShiJ1xuJyArIGNoaWxkX2Vycm9yKQor
ICAgICAgICAgICAgICAgICAgICAoc3lzLnN0ZGVyci5idWZmZXIgaWYgc3lzLnZlcnNpb25faW5m
byA+ICgzLCAwKSBlbHNlIHN5cy5zdGRlcnIpLndyaXRlKGInXG4nICsgY2hpbGRfZXJyb3IpCiAK
ICAgICAgICAgICAgIHJldHVybiBjaGlsZC5yZXR1cm5jb2RlCiAKLSAgICAgICAgcmV0dXJuIEZp
bHRlcmVkQ29tbWFuZC5tYWluKGFyZ3MsIHJlcG9zaXRvcnksIGNvbW1hbmQ9Y2xzLm5hbWUsICoq
a3dhcmdzKQorICAgICAgICB3aXRoIFRlcm1pbmFsLm92ZXJyaWRlX2F0dHkoc3lzLnN0ZG91dCwg
aXNhdHR5PWt3YXJncy5nZXQoJ2lzYXR0eScpKSwgVGVybWluYWwub3ZlcnJpZGVfYXR0eShzeXMu
c3RkZXJyLCBpc2F0dHk9a3dhcmdzLmdldCgnaXNhdHR5JykpOgorICAgICAgICAgICAgcmV0dXJu
IEZpbHRlcmVkQ29tbWFuZC5tYWluKGFyZ3MsIHJlcG9zaXRvcnksIGNvbW1hbmQ9Y2xzLm5hbWUs
ICoqa3dhcmdzKQogCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIG1haW4oY2xzLCBhcmdzLCBy
ZXBvc2l0b3J5LCBjb21tYW5kPU5vbmUsIHJlcHJlc2VudGF0aW9uPU5vbmUsICoqa3dhcmdzKToK
QEAgLTIzNCw3ICsyMzgsMTMgQEAgY2xhc3MgRmlsdGVyZWRDb21tYW5kKG9iamVjdCk6CiAgICAg
ICAgICAgICAgICAgICAgIGxpbmUsCiAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAg
IGlmIGhlYWRlciAhPSBsaW5lOgotICAgICAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRl
KGhlYWRlcikKKyAgICAgICAgICAgICAgICAgICAgd2l0aCBUZXJtaW5hbC5TdHlsZShjb2xvcj1U
ZXJtaW5hbC5UZXh0LnllbGxvdywgc3R5bGU9VGVybWluYWwuVGV4dC5ib2xkKS5hcHBseShzeXMu
c3Rkb3V0KToKKyAgICAgICAgICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoJyAnLmpv
aW4oaGVhZGVyLnNwbGl0KCcgJylbOjJdKSkKKworICAgICAgICAgICAgICAgICAgICBzeXMuc3Rk
b3V0LndyaXRlKCcgJykKKyAgICAgICAgICAgICAgICAgICAgd2l0aCBUZXJtaW5hbC5TdHlsZShj
b2xvcj1UZXJtaW5hbC5UZXh0LnJlZCkuYXBwbHkoc3lzLnN0ZG91dCk6CisgICAgICAgICAgICAg
ICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCcgJy5qb2luKGhlYWRlci5zcGxpdCgnICcpWzI6
XSkpCisKICAgICAgICAgICAgICAgICAgICAgbGluZSA9IGxvZ19vdXRwdXQuc3Rkb3V0LnJlYWRs
aW5lKCkKICAgICAgICAgICAgICAgICAgICAgY29udGludWUKIApAQCAtMjU3LDYgKzI2Nyw4IEBA
IGNsYXNzIEZpbHRlcmVkQ29tbWFuZChvYmplY3QpOgogCiAgICAgICAgIGZpbmFsbHk6CiAgICAg
ICAgICAgICBpZiBub3QgbG9nX291dHB1dC5yZXR1cm5jb2RlOgotICAgICAgICAgICAgICAgIHN5
cy5zdGRlcnIud3JpdGUobG9nX291dHB1dC5zdGRlcnIucmVhZCgpKQotICAgICAgICAgICAgbG9n
X291dHB1dC5raWxsKCkKKyAgICAgICAgICAgICAgICB3aXRoIFRlcm1pbmFsLlN0eWxlKGNvbG9y
PVRlcm1pbmFsLlRleHQucmVkKS5hcHBseShzeXMuc3RkZXJyKToKKyAgICAgICAgICAgICAgICAg
ICAgc3lzLnN0ZGVyci53cml0ZShsb2dfb3V0cHV0LnN0ZGVyci5yZWFkKCkpCisgICAgICAgICAg
ICBpZiBsb2dfb3V0cHV0LnJldHVybmNvZGUgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBsb2df
b3V0cHV0LmtpbGwoKQogICAgICAgICByZXR1cm4gbG9nX291dHB1dC5yZXR1cm5jb2RlCmRpZmYg
LS1naXQgYS9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9w
cm9ncmFtL2xvZy5weSBiL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtp
dHNjbXB5L3Byb2dyYW0vbG9nLnB5CmluZGV4IGYyMDk5ZjExM2UxYTA5MmQ2MWM4MTVlZjE0MmI5
MTQ4YzlkYmYwMzIuLjQxNGM0MTA4ZTVkOTAxZGQ2N2QyYmM1MzJkODhhMDYzYjVmZTg5Y2EgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5
L3Byb2dyYW0vbG9nLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5
L3dlYmtpdHNjbXB5L3Byb2dyYW0vbG9nLnB5CkBAIC0yNCw2ICsyNCw3IEBACiAKIGltcG9ydCBz
eXMKIAorZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IFRlcm1pbmFsCiBmcm9tIHdlYmtpdHNjbXB5
IGltcG9ydCBsb2NhbAogZnJvbSB3ZWJraXRzY21weS5wcm9ncmFtLmNvbW1hbmQgaW1wb3J0IEZp
bHRlcmVkQ29tbWFuZAogCkBAIC0zNCwxMiArMzUsMTUgQEAgY2xhc3MgTG9nKEZpbHRlcmVkQ29t
bWFuZCk6CiAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgbWFpbihjbHMsIGFyZ3MsIHJlcG9z
aXRvcnksICoqa3dhcmdzKToKKyAgICAgICAgY29uZmlnID0gZ2V0YXR0cihyZXBvc2l0b3J5LCAn
Y29uZmlnJywgbGFtYmRhOiB7fSkoKQorICAgICAgICBUZXJtaW5hbC5jb2xvcnMgPSBjb25maWcu
Z2V0KCdjb2xvci5kaWZmJywgY29uZmlnLmdldCgnY29sb3IudWknLCAnYXV0bycpKSAhPSAnZmFs
c2UnCiAgICAgICAgIHJldHVybiBjbHMucGFnZXIoYXJncywgcmVwb3NpdG9yeSwgZmlsZT1fX2Zp
bGVfXywgKiprd2FyZ3MpCiAKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICBzeXMu
ZXhpdChMb2cubWFpbigKLSAgICAgICAgc3lzLmFyZ3ZbMzpdLAorICAgICAgICBzeXMuYXJndls0
Ol0sCiAgICAgICAgIGxvY2FsLlNjbS5mcm9tX3BhdGgocGF0aD1zeXMuYXJndlsxXSwgY2FjaGVk
PVRydWUpLAogICAgICAgICByZXByZXNlbnRhdGlvbj1zeXMuYXJndlsyXSwKKyAgICAgICAgaXNh
dHR5PXN5cy5hcmd2WzNdID09ICdpc2F0dHknLAogICAgICkpCmRpZmYgLS1naXQgYS9Ub29scy9T
Y3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS90ZXN0L2xvZ191bml0dGVz
dC5weSBiL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Rl
c3QvbG9nX3VuaXR0ZXN0LnB5CmluZGV4IGIyYzQ3YThiNzk0ZDY3ZjE0NmNiYzgwNmRmMmIzYzYz
ZmVjOGZkZDMuLjcxNzZiZmVjNjgzYTJkYjVmOGFmMmU5OGU1Y2ZlNDY2ZDA0MDgxOGQgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Rl
c3QvbG9nX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNj
bXB5L3dlYmtpdHNjbXB5L3Rlc3QvbG9nX3VuaXR0ZXN0LnB5CkBAIC0yMCwxMyArMjAsMTAgQEAK
ICMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAotaW1wb3J0IGpzb24KIGlt
cG9ydCBvcwotaW1wb3J0IHNodXRpbAotaW1wb3J0IHRlbXBmaWxlCitpbXBvcnQgc3lzCiAKLWZy
b20gZGF0ZXRpbWUgaW1wb3J0IGRhdGV0aW1lCi1mcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgT3V0
cHV0Q2FwdHVyZSwgdGVzdGluZworZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IE91dHB1dENhcHR1
cmUsIFRlcm1pbmFsLCB0ZXN0aW5nCiBmcm9tIHdlYmtpdGNvcmVweS5tb2NrcyBpbXBvcnQgVGlt
ZSBhcyBNb2NrVGltZQogZnJvbSB3ZWJraXRzY21weSBpbXBvcnQgcHJvZ3JhbSwgbW9ja3MKIApA
QCAtNDAsNyArMzcsNyBAQCBjbGFzcyBUZXN0TG9nKHRlc3RpbmcuUGF0aFRlc3RDYXNlKToKICAg
ICAgICAgb3MubWtkaXIob3MucGF0aC5qb2luKHNlbGYucGF0aCwgJy5zdm4nKSkKIAogICAgIGRl
ZiB0ZXN0X2dpdChzZWxmKToKLSAgICAgICAgd2l0aCBPdXRwdXRDYXB0dXJlKCkgYXMgY2FwdHVy
ZWQsIG1vY2tzLmxvY2FsLkdpdChzZWxmLnBhdGgpLCBtb2Nrcy5sb2NhbC5Tdm4oKSwgTW9ja1Rp
bWU6CisgICAgICAgIHdpdGggT3V0cHV0Q2FwdHVyZSgpIGFzIGNhcHR1cmVkLCBtb2Nrcy5sb2Nh
bC5HaXQoc2VsZi5wYXRoKSwgbW9ja3MubG9jYWwuU3ZuKCksIE1vY2tUaW1lLCBUZXJtaW5hbC5v
dmVycmlkZV9hdHR5KHN5cy5zdGRpbiwgaXNhdHR5PUZhbHNlKToKICAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoLTEsIHByb2dyYW0ubWFpbigKICAgICAgICAgICAgICAgICBhcmdzPSgnbG9n
JywgJ21haW4nKSwKICAgICAgICAgICAgICAgICBwYXRoPXNlbGYucGF0aCwKQEAgLTgxLDcgKzc4
LDcgQEAgRGF0ZTogICBTYXQgT2N0IDAzIDAxOjMzOjIwIDIwMjAgKzAwMDAKICAgICAgICAgKQog
CiAgICAgZGVmIHRlc3RfZ2l0X3N2bihzZWxmKToKLSAgICAgICAgd2l0aCBPdXRwdXRDYXB0dXJl
KCkgYXMgY2FwdHVyZWQsIG1vY2tzLmxvY2FsLkdpdChzZWxmLnBhdGgsIGdpdF9zdm49VHJ1ZSks
IG1vY2tzLmxvY2FsLlN2bigpLCBNb2NrVGltZToKKyAgICAgICAgd2l0aCBPdXRwdXRDYXB0dXJl
KCkgYXMgY2FwdHVyZWQsIG1vY2tzLmxvY2FsLkdpdChzZWxmLnBhdGgsIGdpdF9zdm49VHJ1ZSks
IG1vY2tzLmxvY2FsLlN2bigpLCBNb2NrVGltZSwgVGVybWluYWwub3ZlcnJpZGVfYXR0eShzeXMu
c3RkaW4sIGlzYXR0eT1GYWxzZSk6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKC0xLCBw
cm9ncmFtLm1haW4oCiAgICAgICAgICAgICAgICAgYXJncz0oJ2xvZycsICdtYWluJyksCiAgICAg
ICAgICAgICAgICAgcGF0aD1zZWxmLnBhdGgsCkBAIC0xMjcsNyArMTI0LDcgQEAgRGF0ZTogICBT
YXQgT2N0IDAzIDAxOjMzOjIwIDIwMjAgKzAwMDAKICAgICAgICAgICAgICkKIAogICAgIGRlZiB0
ZXN0X2dpdF9zdm5fcmV2aXNpb24oc2VsZik6Ci0gICAgICAgIHdpdGggT3V0cHV0Q2FwdHVyZSgp
IGFzIGNhcHR1cmVkLCBtb2Nrcy5sb2NhbC5HaXQoc2VsZi5wYXRoLCBnaXRfc3ZuPVRydWUpLCBt
b2Nrcy5sb2NhbC5Tdm4oKSwgTW9ja1RpbWU6CisgICAgICAgIHdpdGggT3V0cHV0Q2FwdHVyZSgp
IGFzIGNhcHR1cmVkLCBtb2Nrcy5sb2NhbC5HaXQoc2VsZi5wYXRoLCBnaXRfc3ZuPVRydWUpLCBt
b2Nrcy5sb2NhbC5Tdm4oKSwgTW9ja1RpbWUsIFRlcm1pbmFsLm92ZXJyaWRlX2F0dHkoc3lzLnN0
ZGluLCBpc2F0dHk9RmFsc2UpOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgtMSwgcHJv
Z3JhbS5tYWluKAogICAgICAgICAgICAgICAgIGFyZ3M9KCdsb2cnLCAnbWFpbicsICctLXJldmlz
aW9uJyksCiAgICAgICAgICAgICAgICAgcGF0aD1zZWxmLnBhdGgsCkBAIC0xNzQsNyArMTcxLDcg
QEAgRGF0ZTogICBTYXQgT2N0IDAzIDAxOjMzOjIwIDIwMjAgKzAwMDAKICAgICAgICAgICAgICkK
IAogICAgIGRlZiB0ZXN0X3N2bihzZWxmKToKLSAgICAgICAgd2l0aCBPdXRwdXRDYXB0dXJlKCkg
YXMgY2FwdHVyZWQsIG1vY2tzLmxvY2FsLkdpdCgpLCBtb2Nrcy5sb2NhbC5Tdm4oc2VsZi5wYXRo
KSwgTW9ja1RpbWU6CisgICAgICAgIHdpdGggT3V0cHV0Q2FwdHVyZSgpIGFzIGNhcHR1cmVkLCBt
b2Nrcy5sb2NhbC5HaXQoKSwgbW9ja3MubG9jYWwuU3ZuKHNlbGYucGF0aCksIE1vY2tUaW1lLCBU
ZXJtaW5hbC5vdmVycmlkZV9hdHR5KHN5cy5zdGRpbiwgaXNhdHR5PUZhbHNlKToKICAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoLTEsIHByb2dyYW0ubWFpbigKICAgICAgICAgICAgICAgICBh
cmdzPSgnbG9nJywpLAogICAgICAgICAgICAgICAgIHBhdGg9c2VsZi5wYXRoLAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>