<?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>226894</bug_id>
          
          <creation_ts>2021-06-10 12:52:35 -0700</creation_ts>
          <short_desc>[resultsdbpy] Add results-summary API</short_desc>
          <delta_ts>2021-08-10 15:41:20 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Gambrell">cgambrell</reporter>
          <assigned_to name="Chris Gambrell">cgambrell</assigned_to>
          <cc>aakash_jain</cc>
    
    <cc>ap</cc>
    
    <cc>jbedard</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>slewis</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1768677</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Gambrell">cgambrell</who>
    <bug_when>2021-06-10 12:52:35 -0700</bug_when>
    <thetext>Adding functionality to predict the pass, fail, crash, etc percentages of a given test to the endpoint /api/confidence</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1768678</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-06-10 12:53:30 -0700</bug_when>
    <thetext>&lt;rdar://problem/79155181&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1768680</commentid>
    <comment_count>2</comment_count>
      <attachid>431113</attachid>
    <who name="Chris Gambrell">cgambrell</who>
    <bug_when>2021-06-10 12:58:38 -0700</bug_when>
    <thetext>Created attachment 431113
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1768721</commentid>
    <comment_count>3</comment_count>
      <attachid>431125</attachid>
    <who name="Chris Gambrell">cgambrell</who>
    <bug_when>2021-06-10 14:01:07 -0700</bug_when>
    <thetext>Created attachment 431125
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1768724</commentid>
    <comment_count>4</comment_count>
      <attachid>431125</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-06-10 14:08:56 -0700</bug_when>
    <thetext>Comment on attachment 431125
Patch

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

&gt; Tools/Scripts/libraries/resultsdbpy/resultsdbpy/controller/test_controller.py:182
&gt; +            newer_data = []

Want to call out a problem here Chris and I discovered. Under the current code, this is always going to return the most recent `limit` of test results which occurred after the specified commit. The problem with this, is that it will still return the most recent test results even if the specified commit is ancient. I need to double check if there is a way for us to resolve in our Cassandra query, because I&apos;m not sure there is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1768732</commentid>
    <comment_count>5</comment_count>
      <attachid>431129</attachid>
    <who name="Chris Gambrell">cgambrell</who>
    <bug_when>2021-06-10 14:18:01 -0700</bug_when>
    <thetext>Created attachment 431129
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1768735</commentid>
    <comment_count>6</comment_count>
      <attachid>431130</attachid>
    <who name="Chris Gambrell">cgambrell</who>
    <bug_when>2021-06-10 14:27:27 -0700</bug_when>
    <thetext>Created attachment 431130
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769031</commentid>
    <comment_count>7</comment_count>
      <attachid>431221</attachid>
    <who name="Chris Gambrell">cgambrell</who>
    <bug_when>2021-06-11 12:39:18 -0700</bug_when>
    <thetext>Created attachment 431221
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1783014</commentid>
    <comment_count>8</comment_count>
      <attachid>435221</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-08-09 16:15:44 -0700</bug_when>
    <thetext>Created attachment 435221
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1783175</commentid>
    <comment_count>9</comment_count>
      <attachid>435221</attachid>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2021-08-10 08:40:51 -0700</bug_when>
    <thetext>Comment on attachment 435221
Patch

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

&gt; Tools/Scripts/libraries/resultsdbpy/resultsdbpy/controller/test_controller.py:176
&gt; +        uds = []

better to name it uuids

&gt; Tools/Scripts/libraries/resultsdbpy/resultsdbpy/controller/test_controller.py:199
&gt; +            return abort(400, description=&apos;No results for configuration in range&apos;)

This error is non human-friendly. Should make it something which is easy to understand. 
If the test is not found, the error message should specify that. If the commit is not found, error message should indicate that.

&gt; Tools/Scripts/libraries/resultsdbpy/resultsdbpy/view/templates/documentation.html:363
&gt; +                &apos;/api/aggregate-results/&amp;ltsuite&amp;gt/&amp;lttest&amp;gt&apos;,

aggregate-results doesn&apos;t sounds like a right name for this api from user&apos;s perspective</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1783197</commentid>
    <comment_count>10</comment_count>
      <attachid>435269</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-08-10 10:05:38 -0700</bug_when>
    <thetext>Created attachment 435269
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1783201</commentid>
    <comment_count>11</comment_count>
      <attachid>435221</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-08-10 10:16:08 -0700</bug_when>
    <thetext>Comment on attachment 435221
Patch

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

&gt;&gt; Tools/Scripts/libraries/resultsdbpy/resultsdbpy/controller/test_controller.py:176
&gt;&gt; +        uds = []
&gt; 
&gt; better to name it uuids

Need to delete this, was just a variable for testing.

&gt;&gt; Tools/Scripts/libraries/resultsdbpy/resultsdbpy/view/templates/documentation.html:363
&gt;&gt; +                &apos;/api/aggregate-results/&amp;ltsuite&amp;gt/&amp;lttest&amp;gt&apos;,
&gt; 
&gt; aggregate-results doesn&apos;t sounds like a right name for this api from user&apos;s perspective

Discussing a better API name with Aakash, results-status, results-confidence, results-prediction are some candidates</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1783214</commentid>
    <comment_count>12</comment_count>
      <attachid>435272</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-08-10 10:39:50 -0700</bug_when>
    <thetext>Created attachment 435272
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1783283</commentid>
    <comment_count>13</comment_count>
      <attachid>435272</attachid>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2021-08-10 14:18:08 -0700</bug_when>
    <thetext>Comment on attachment 435272
Patch

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

&gt; Tools/Scripts/libraries/resultsdbpy/resultsdbpy/view/templates/documentation.html:363
&gt; +                &apos;/api/aggregate-results/&amp;ltsuite&amp;gt/&amp;lttest&amp;gt&apos;,

let&apos;s call this results-summary endpoint

&gt; Tools/Scripts/libraries/resultsdbpy/resultsdbpy/view/templates/documentation.html:367
&gt; +                    `Compute the combined results of a give test by aggregating results from a set of runs surrounding a specific commit:`,

Nit: give =&gt; given

&gt; Tools/Scripts/libraries/resultsdbpy/resultsdbpy/view/templates/documentation.html:527
&gt; +            codeBlock(&apos;include_expectations=Flase&apos;),

Nit: Flase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1783284</commentid>
    <comment_count>14</comment_count>
      <attachid>435288</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-08-10 14:19:08 -0700</bug_when>
    <thetext>Created attachment 435288
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1783285</commentid>
    <comment_count>15</comment_count>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2021-08-10 14:20:07 -0700</bug_when>
    <thetext>rs=me with the above comments incorporated</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1783290</commentid>
    <comment_count>16</comment_count>
      <attachid>435288</attachid>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2021-08-10 14:24:40 -0700</bug_when>
    <thetext>Comment on attachment 435288
Patch

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

&gt; Tools/Scripts/libraries/resultsdbpy/resultsdbpy/controller/test_controller.py:203
&gt; +        for key_i in response.keys():

Nit: can rename key_i to key, and key_ii to key_i or something meaningful

&gt; Tools/Scripts/libraries/resultsdbpy/resultsdbpy/controller/test_controller.py:206
&gt; +                    response[key_i][key_ii] = 100 * response[key_i][key_ii] // (aggregate or 1)

Nit: // =&gt; #

&gt; Tools/Scripts/libraries/resultsdbpy/resultsdbpy/view/templates/documentation.html:364
&gt; +                [&apos;Branch&apos;, &apos;Configuration&apos;, &apos;Include Expectations&apos;, &apos;Limit&apos;, &apos;Repository&apos;, &apos;Ref&apos;, &apos;UUID&apos;],

Rename: &apos;Include Expectations&apos; =&gt; include_expectations. Better not to change the keyword.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1783292</commentid>
    <comment_count>17</comment_count>
      <attachid>435291</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-08-10 14:26:17 -0700</bug_when>
    <thetext>Created attachment 435291
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1783306</commentid>
    <comment_count>18</comment_count>
      <attachid>435288</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-08-10 14:42:27 -0700</bug_when>
    <thetext>Comment on attachment 435288
Patch

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

&gt;&gt; Tools/Scripts/libraries/resultsdbpy/resultsdbpy/controller/test_controller.py:206
&gt;&gt; +                    response[key_i][key_ii] = 100 * response[key_i][key_ii] // (aggregate or 1)
&gt; 
&gt; Nit: // =&gt; #

`//` is integer divide

&gt;&gt; Tools/Scripts/libraries/resultsdbpy/resultsdbpy/view/templates/documentation.html:364
&gt;&gt; +                [&apos;Branch&apos;, &apos;Configuration&apos;, &apos;Include Expectations&apos;, &apos;Limit&apos;, &apos;Repository&apos;, &apos;Ref&apos;, &apos;UUID&apos;],
&gt; 
&gt; Rename: &apos;Include Expectations&apos; =&gt; include_expectations. Better not to change the keyword.

While we could do this, this ends up really breaking the way we use these parameters.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1783311</commentid>
    <comment_count>19</comment_count>
      <attachid>435299</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-08-10 14:51:36 -0700</bug_when>
    <thetext>Created attachment 435299
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1783337</commentid>
    <comment_count>20</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-08-10 15:41:20 -0700</bug_when>
    <thetext>Committed r280869 (240408@main): &lt;https://commits.webkit.org/240408@main&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431113</attachid>
            <date>2021-06-10 12:58:38 -0700</date>
            <delta_ts>2021-06-10 14:01:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226894-20210610155836.patch</filename>
            <type>text/plain</type>
            <size>23975</size>
            <attacher name="Chris Gambrell">cgambrell</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI3ODcyNCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDQyIEBACisyMDIxLTA2LTEwICBDaHJpcyBHYW1icmVsbCAgPGNnYW1icmVsbEBhcHBsZS5j
b20+CisKKyAgICAgICAgW3Jlc3VsdHNkYnB5XSBBZGQgY29uZmlkZW5jZS1jaGVja2luZyBmdW5j
dGlvbmFsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMjY4OTQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc5MTU1MTgxPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMv
cmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxlci9hcGlfcm91dGVzLnB5OgorICAgICAg
ICAoQVBJUm91dGVzLl9faW5pdF9fKToKKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy9yZXN1
bHRzZGJweS9yZXN1bHRzZGJweS9jb250cm9sbGVyL2NvbmZpZGVuY2VfY29udHJvbGxlci5weTog
QWRkZWQuCisgICAgICAgICh1dWlkX2Zvcl9xdWVyeSk6CisgICAgICAgICh1dWlkX2Zvcl9xdWVy
eS5kZWNvcmF0b3IpOgorICAgICAgICAodXVpZF9mb3JfcXVlcnkuZGVjb3JhdG9yLnJlYWxfbWV0
aG9kKToKKyAgICAgICAgKENvbmZpZGVuY2VDb250cm9sbGVyKToKKyAgICAgICAgKENvbmZpZGVu
Y2VDb250cm9sbGVyLl9faW5pdF9fKToKKyAgICAgICAgKENvbmZpZGVuY2VDb250cm9sbGVyLmNh
bGN1bGF0ZV9yZXN1bHRzKToKKyAgICAgICAgKENvbmZpZGVuY2VDb250cm9sbGVyLmNhbGN1bGF0
ZV9vdmVyYWxsX3Jlc3VsdHMpOgorICAgICAgICAoQ29uZmlkZW5jZUNvbnRyb2xsZXIuZmluZF90
ZXN0X2NvbmZpZGVuY2UpOgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5
L3Jlc3VsdHNkYnB5L21vZGVsL2NvbmZpZGVuY2VfY29udGV4dC5weTogQWRkZWQuCisgICAgICAg
IChFeHBlY3RhdGlvbnMpOgorICAgICAgICAoRXhwZWN0YXRpb25zLnN0cmluZ190b19zdGF0ZV9p
ZHMpOgorICAgICAgICAoRXhwZWN0YXRpb25zLnN0YXRlX2lkc190b19zdHJpbmcpOgorICAgICAg
ICAoRXhwZWN0YXRpb25zLml0ZXJhdGVfdGhyb3VnaF9uZXN0ZWRfcmVzdWx0cyk6CisgICAgICAg
IChFeHBlY3RhdGlvbnMuaXRlcmF0ZV90aHJvdWdoX25lc3RlZF9yZXN1bHRzLnJlY3Vyc2UpOgor
ICAgICAgICAoQ29uZmlkZW5jZUNvbnRleHQpOgorICAgICAgICAoQ29uZmlkZW5jZUNvbnRleHQu
VGVzdFJlc3VsdHNCYXNlKToKKyAgICAgICAgKENvbmZpZGVuY2VDb250ZXh0LlRlc3RSZXN1bHRz
QmFzZS51bnBhY2spOgorICAgICAgICAoQ29uZmlkZW5jZUNvbnRleHQuVGVzdFJlc3VsdHNCeUNv
bW1pdCk6CisgICAgICAgIChDb25maWRlbmNlQ29udGV4dC5UZXN0UmVzdWx0c0J5U3RhcnRUaW1l
KToKKyAgICAgICAgKENvbmZpZGVuY2VDb250ZXh0LlRlc3ROYW1lQnlTdWl0ZSk6CisgICAgICAg
IChDb25maWRlbmNlQ29udGV4dC5fX2luaXRfXyk6CisgICAgICAgIChDb25maWRlbmNlQ29udGV4
dC5uYW1lcyk6CisgICAgICAgIChDb25maWRlbmNlQ29udGV4dC5yZWdpc3Rlcik6CisgICAgICAg
IChDb25maWRlbmNlQ29udGV4dC5yZWdpc3Rlci5jYWxsYmFjayk6CisgICAgICAgIChDb25maWRl
bmNlQ29udGV4dC5fZmluZF9yZXN1bHRzKToKKyAgICAgICAgKENvbmZpZGVuY2VDb250ZXh0Lmdl
dF90aW1lKToKKyAgICAgICAgKENvbmZpZGVuY2VDb250ZXh0LmZpbmRfYnlfY29tbWl0KToKKwog
MjAyMS0wNi0xMCAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgW1dQRV0gRW5hYmxlIENvZyBmb3IgZGV2ZWxvcGVyIGJ1aWxkcwpJbmRleDogVG9vbHMv
U2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxlci9hcGlf
cm91dGVzLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNk
YnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIvYXBpX3JvdXRlcy5weQkocmV2aXNpb24gMjc4NzA4
KQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29u
dHJvbGxlci9hcGlfcm91dGVzLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2ICsyNSw3IEBAIGlt
cG9ydCB0cmFjZWJhY2sKIGZyb20gZmxhc2sgaW1wb3J0IGFib3J0LCBqc29uaWZ5CiBmcm9tIHJl
c3VsdHNkYnB5LmNvbnRyb2xsZXIuYXJjaGl2ZV9jb250cm9sbGVyIGltcG9ydCBBcmNoaXZlQ29u
dHJvbGxlcgogZnJvbSByZXN1bHRzZGJweS5jb250cm9sbGVyLmNvbW1pdF9jb250cm9sbGVyIGlt
cG9ydCBDb21taXRDb250cm9sbGVyCitmcm9tIHJlc3VsdHNkYnB5LmNvbnRyb2xsZXIuY29uZmlk
ZW5jZV9jb250cm9sbGVyIGltcG9ydCBDb25maWRlbmNlQ29udHJvbGxlcgogZnJvbSByZXN1bHRz
ZGJweS5jb250cm9sbGVyLmNpX2NvbnRyb2xsZXIgaW1wb3J0IENJQ29udHJvbGxlcgogZnJvbSBy
ZXN1bHRzZGJweS5jb250cm9sbGVyLmZhaWx1cmVfY29udHJvbGxlciBpbXBvcnQgRmFpbHVyZUNv
bnRyb2xsZXIKIGZyb20gcmVzdWx0c2RicHkuY29udHJvbGxlci5zdWl0ZV9jb250cm9sbGVyIGlt
cG9ydCBTdWl0ZUNvbnRyb2xsZXIKQEAgLTQzLDYgKzQ0LDcgQEAgY2xhc3MgQVBJUm91dGVzKEF1
dGhlZEJsdWVwcmludCk6CiAKICAgICAgICAgc2VsZi5zdWl0ZV9jb250cm9sbGVyID0gU3VpdGVD
b250cm9sbGVyKHN1aXRlX2NvbnRleHQ9bW9kZWwuc3VpdGVfY29udGV4dCkKICAgICAgICAgc2Vs
Zi50ZXN0X2NvbnRyb2xsZXIgPSBUZXN0Q29udHJvbGxlcih0ZXN0X2NvbnRleHQ9bW9kZWwudGVz
dF9jb250ZXh0KQorICAgICAgICBzZWxmLmNvbmZpZGVuY2VfY29udHJvbGxlciA9IENvbmZpZGVu
Y2VDb250cm9sbGVyKHRlc3RfY29udGV4dD1tb2RlbC5jb25maWRlbmNlX2NvbnRleHQpCiAgICAg
ICAgIHNlbGYuZmFpbHVyZV9jb250cm9sbGVyID0gRmFpbHVyZUNvbnRyb2xsZXIoZmFpbHVyZV9j
b250ZXh0PW1vZGVsLmZhaWx1cmVfY29udGV4dCkKIAogICAgICAgICBzZWxmLmNpX2NvbnRyb2xs
ZXIgPSBDSUNvbnRyb2xsZXIoY2lfY29udGV4dD1tb2RlbC5jaV9jb250ZXh0LCB1cGxvYWRfY29u
dGV4dD1tb2RlbC51cGxvYWRfY29udGV4dCkKQEAgLTcxLDYgKzczLDggQEAgY2xhc3MgQVBJUm91
dGVzKEF1dGhlZEJsdWVwcmludCk6CiAgICAgICAgIHNlbGYuYWRkX3VybF9ydWxlKCcvcmVzdWx0
cy88cGF0aDpzdWl0ZT4nLCAnc3VpdGUtcmVzdWx0cycsIHNlbGYuc3VpdGVfY29udHJvbGxlci5m
aW5kX3J1bl9yZXN1bHRzLCBtZXRob2RzPSgnR0VUJywpKQogICAgICAgICBzZWxmLmFkZF91cmxf
cnVsZSgnL3Jlc3VsdHMvPHBhdGg6c3VpdGU+LzxwYXRoOnRlc3Q+JywgJ3Rlc3QtcmVzdWx0cycs
IHNlbGYudGVzdF9jb250cm9sbGVyLmZpbmRfdGVzdF9yZXN1bHQsIG1ldGhvZHM9KCdHRVQnLCkp
CiAKKyAgICAgICAgc2VsZi5hZGRfdXJsX3J1bGUoJy9jb25maWRlbmNlLzxwYXRoOnN1aXRlPi88
cGF0aDp0ZXN0PicsICdjb25maWRlbmNlJywgc2VsZi5jb25maWRlbmNlX2NvbnRyb2xsZXIuZmlu
ZF90ZXN0X2NvbmZpZGVuY2UsIG1ldGhvZHM9KCdHRVQnLCkpCisKICAgICAgICAgc2VsZi5hZGRf
dXJsX3J1bGUoJy9mYWlsdXJlcy88cGF0aDpzdWl0ZT4nLCAnc3VpdGUtZmFpbHVyZXMnLCBzZWxm
LmZhaWx1cmVfY29udHJvbGxlci5mYWlsdXJlcywgbWV0aG9kcz0oJ0dFVCcsKSkKIAogICAgICAg
ICBzZWxmLmFkZF91cmxfcnVsZSgnL3VybHMvcXVldWUnLCAncXVldWUtdXJscycsIHNlbGYuY2lf
Y29udHJvbGxlci51cmxzX2Zvcl9xdWV1ZV9lbmRwb2ludCwgbWV0aG9kcz0oJ0dFVCcsKSkKSW5k
ZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRy
b2xsZXIvY29uZmlkZW5jZV9jb250cm9sbGVyLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Njcmlw
dHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIvY29uZmlkZW5j
ZV9jb250cm9sbGVyLnB5CShub25leGlzdGVudCkKKysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVz
L3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIvY29uZmlkZW5jZV9jb250cm9sbGVy
LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTg1IEBACisjIENvcHlyaWdodCAoQykgMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIg
QU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorCitmcm9tIGZsYXNrIGltcG9ydCBhYm9ydCwganNvbmlmeQorZnJv
bSByZXN1bHRzZGJweS5jb250cm9sbGVyLmNvbW1pdF9jb250cm9sbGVyIGltcG9ydCBIYXNDb21t
aXRDb250ZXh0Citmcm9tIHJlc3VsdHNkYnB5LmNvbnRyb2xsZXIuY29uZmlndXJhdGlvbiBpbXBv
cnQgQ29uZmlndXJhdGlvbgorZnJvbSByZXN1bHRzZGJweS5jb250cm9sbGVyLmNvbmZpZ3VyYXRp
b25fY29udHJvbGxlciBpbXBvcnQgY29uZmlndXJhdGlvbl9mb3JfcXVlcnkKK2Zyb20gd2Via2l0
Zmxhc2tweS51dGlsIGltcG9ydCBBc3NlcnRSZXF1ZXN0LCBxdWVyeV9hc19rd2FyZ3MsIGxpbWl0
X2Zvcl9xdWVyeSwgYm9vbGVhbl9xdWVyeQorCisKK2RlZiB1dWlkX2Zvcl9xdWVyeSgpOgorICAg
IGRlZiBkZWNvcmF0b3IobWV0aG9kKToKKyAgICAgICAgZGVmIHJlYWxfbWV0aG9kKG9iaiwgcmVw
b3NpdG9yeV9pZD1Ob25lLCBicmFuY2g9Tm9uZSwgaWQ9Tm9uZSwgcmVmPU5vbmUsIHV1aWQ9Tm9u
ZSwgdGltZXN0YW1wPU5vbmUsICoqa3dhcmdzKToKKyAgICAgICAgICAgICMgV2UncmUgbWFraW5n
IGFuIGFzc3VtcHRpb24gdGhhdCB0aGUgY2xhc3MgdXNpbmcgdGhpcyBkZWNvcmF0b3IgYWN0dWFs
bHkgaGFzIGEgY29tbWl0X2NvbnRleHQsIGlmIGl0IGRvZXMgbm90LAorICAgICAgICAgICAgIyB0
aGlzIGRlY29yYXRvciB3aWxsIGZhaWwgc3BlY3RhY3VsYXJseQorICAgICAgICAgICAgd2l0aCBv
YmouY29tbWl0X2NvbnRleHQ6CisgICAgICAgICAgICAgICAgdXVpZCA9IF9maW5kX2NvbXBhcmlz
b24oCisgICAgICAgICAgICAgICAgICAgIG9iai5jb21taXRfY29udGV4dCwgcmVwb3NpdG9yeV9p
ZD1yZXBvc2l0b3J5X2lkLCBicmFuY2g9YnJhbmNoLAorICAgICAgICAgICAgICAgICAgICByZWY9
cmVmIG9yIGlkLAorICAgICAgICAgICAgICAgICAgICB1dWlkPXV1aWQsIHRpbWVzdGFtcD10aW1l
c3RhbXAsIHByaW9yaXR5PW1heCwKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICByZXR1
cm4gbWV0aG9kKG9iaiwgYnJhbmNoPWJyYW5jaCwgdXVpZD11dWlkLCAqKmt3YXJncykKKyAgICAg
ICAgcmVhbF9tZXRob2QuX19uYW1lX18gPSBtZXRob2QuX19uYW1lX18KKyAgICAgICAgcmV0dXJu
IHJlYWxfbWV0aG9kCisgICAgcmV0dXJuIGRlY29yYXRvcgorCisKK2NsYXNzIENvbmZpZGVuY2VD
b250cm9sbGVyKEhhc0NvbW1pdENvbnRleHQpOgorICAgIERFRkFVTFRfTElNSVQgPSAxMDAwCisK
KyAgICBkZWYgX19pbml0X18oc2VsZiwgdGVzdF9jb250ZXh0KToKKyAgICAgICAgc3VwZXIoQ29u
ZmlkZW5jZUNvbnRyb2xsZXIsIHNlbGYpLl9faW5pdF9fKHRlc3RfY29udGV4dC5jb21taXRfY29u
dGV4dCkKKyAgICAgICAgc2VsZi50ZXN0X2NvbnRleHQgPSB0ZXN0X2NvbnRleHQKKworICAgIGRl
ZiBjYWxjdWxhdGVfcmVzdWx0cyhzZWxmLCB0ZXN0X3Jlc3VsdCwgZm9jdXNfcG9pbnQ9Tm9uZSk6
CisgICAgICAgIGlmIGZvY3VzX3BvaW50IGlzIE5vbmU6CisgICAgICAgICAgICBmb2N1c19wb2lu
dCA9IGxlbih0ZXN0X3Jlc3VsdFsncmVzdWx0cyddKSAtIDEKKyAgICAgICAgY3VycmVudF9yZXN1
bHQgPSB7fQorCisgICAgICAgICMgQ2FsY3VsYXRlIHJlc3VsdHMKKyAgICAgICAgbWF4X3dlaWdo
dCA9IG1heChsZW4odGVzdF9yZXN1bHRbJ3Jlc3VsdHMnXSkgLSBmb2N1c19wb2ludCwgZm9jdXNf
cG9pbnQpCisgICAgICAgIHdlaWdodCA9IG1heF93ZWlnaHQgLSBmb2N1c19wb2ludAorICAgICAg
ICBiYXNlID0gMAorCisgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIGxlbih0ZXN0X3Jlc3VsdFsn
cmVzdWx0cyddKSk6CisgICAgICAgICAgICBpZiB0ZXN0X3Jlc3VsdFsncmVzdWx0cyddW2ldWydh
Y3R1YWwnXSBub3QgaW4gY3VycmVudF9yZXN1bHQ6CisgICAgICAgICAgICAgICAgY3VycmVudF9y
ZXN1bHRbdGVzdF9yZXN1bHRbJ3Jlc3VsdHMnXVtpXVsnYWN0dWFsJ11dID0gMAorICAgICAgICAg
ICAgY3VycmVudF9yZXN1bHRbdGVzdF9yZXN1bHRbJ3Jlc3VsdHMnXVtpXVsnYWN0dWFsJ11dICs9
IHdlaWdodAorICAgICAgICAgICAgYmFzZSArPSB3ZWlnaHQKKworICAgICAgICAgICAgaWYgaSA8
IGZvY3VzX3BvaW50OgorICAgICAgICAgICAgICAgIHdlaWdodCArPSAxCisgICAgICAgICAgICBl
bHNlOgorICAgICAgICAgICAgICAgIHdlaWdodCAtPSAxCisKKyAgICAgICAgZm9yIHJlc3VsdF90
eXBlIGluIGN1cnJlbnRfcmVzdWx0OgorICAgICAgICAgICAgaWYgY3VycmVudF9yZXN1bHRbcmVz
dWx0X3R5cGVdICE9IDA6CisgICAgICAgICAgICAgICAgY3VycmVudF9yZXN1bHRbcmVzdWx0X3R5
cGVdID0gY3VycmVudF9yZXN1bHRbcmVzdWx0X3R5cGVdIC8gYmFzZSAqIDEwMAorCisgICAgICAg
IHJldHVybiBjdXJyZW50X3Jlc3VsdAorCisgICAgZGVmIGNhbGN1bGF0ZV9vdmVyYWxsX3Jlc3Vs
dHMoc2VsZiwgcmVzdWx0cyk6CisgICAgICAgIHZhbHVlcyA9IHt9CisgICAgICAgIGZvciByZXN1
bHQgaW4gcmVzdWx0czoKKyAgICAgICAgICAgIGZvciBuYW1lLCB2YWx1ZSBpbiByZXN1bHRbJ3Jl
c3VsdHMnXS5pdGVtcygpOgorICAgICAgICAgICAgICAgIGlmIG5vdCB2YWx1ZToKKyAgICAgICAg
ICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBpZiBuYW1lIG5vdCBpbiB2YWx1
ZXM6CisgICAgICAgICAgICAgICAgICAgIHZhbHVlc1tuYW1lXSA9IDAKKyAgICAgICAgICAgICAg
ICB2YWx1ZXNbbmFtZV0gKz0gdmFsdWUKKworICAgICAgICByZXR1cm4ge25hbWU6IHZhbHVlIC8g
bGVuKHJlc3VsdHMpIGZvciBuYW1lLCB2YWx1ZSBpbiBzb3J0ZWQodmFsdWVzLml0ZW1zKCkpfQor
CisgICAgQHF1ZXJ5X2FzX2t3YXJncygpCisgICAgQHV1aWRfcmFuZ2VfZm9yX3F1ZXJ5KCkKKyAg
ICBAbGltaXRfZm9yX3F1ZXJ5KERFRkFVTFRfTElNSVQpCisgICAgQGNvbmZpZ3VyYXRpb25fZm9y
X3F1ZXJ5KCkKKyAgICBkZWYgZmluZF90ZXN0X2NvbmZpZGVuY2UoCisgICAgICAgIHNlbGYsIHN1
aXRlPU5vbmUsIHRlc3Q9Tm9uZSwKKyAgICAgICAgY29uZmlndXJhdGlvbnM9Tm9uZSwgcmVjZW50
PU5vbmUsCisgICAgICAgIGJyYW5jaD1icmFuY2gsIHV1aWQ9dXVpZCwKKyAgICAgICAgbGltaXQ9
Tm9uZSwgKiprd2FyZ3MKKyAgICApOgorICAgICAgICBBc3NlcnRSZXF1ZXN0LmlzX3R5cGUoWydH
RVQnXSkKKyAgICAgICAgQXNzZXJ0UmVxdWVzdC5xdWVyeV9rd2FyZ3NfZW1wdHkoKiprd2FyZ3Mp
CisKKyAgICAgICAgcmVjZW50ID0gYm9vbGVhbl9xdWVyeSgqcmVjZW50KVswXSBpZiByZWNlbnQg
ZWxzZSBUcnVlCisKKyAgICAgICAgaWYgbm90IHN1aXRlOgorICAgICAgICAgICAgYWJvcnQoNDAw
LCBkZXNjcmlwdGlvbj0nTm8gc3VpdGUgc3BlY2lmaWVkJykKKyAgICAgICAgaWYgbm90IHRlc3Q6
CisgICAgICAgICAgICBhYm9ydCg0MDAsIGRlc2NyaXB0aW9uPSdObyB0ZXN0IHNwZWNpZmllZCcp
CisKKyAgICAgICAgd2l0aCBzZWxmLnRlc3RfY29udGV4dDoKKyAgICAgICAgICAgIHF1ZXJ5X2Rp
Y3QgPSBkaWN0KAorICAgICAgICAgICAgICAgIHN1aXRlPXN1aXRlLCB0ZXN0PXRlc3QsCisgICAg
ICAgICAgICAgICAgY29uZmlndXJhdGlvbnM9Y29uZmlndXJhdGlvbnMsIHJlY2VudD1yZWNlbnQs
CisgICAgICAgICAgICAgICAgYnJhbmNoPWJyYW5jaFswXSwgYmVnaW49YmVnaW4sIGVuZD1lbmQs
CisgICAgICAgICAgICAgICAgbGltaXQ9bGltaXQsCisgICAgICAgICAgICApCisKKyAgICAgICAg
ICAgIGZpbmRfZnVuY3Rpb24gPSBzZWxmLnRlc3RfY29udGV4dC5maW5kX2J5X2NvbW1pdAorCisg
ICAgICAgICAgICBvbGRlcl9kYXRhID0gW10KKyAgICAgICAgICAgIGZvciBjb25maWcsIHJlc3Vs
dHMgaW4gZmluZF9mdW5jdGlvbihvbGQ9VHJ1ZSwgKipxdWVyeV9kaWN0KS5pdGVtcygpOgorICAg
ICAgICAgICAgICAgIG9sZGVyX2RhdGEgPSBkaWN0KAorICAgICAgICAgICAgICAgICAgICBjb25m
aWd1cmF0aW9uPUNvbmZpZ3VyYXRpb24uRW5jb2RlcigpLmRlZmF1bHQoY29uZmlnKSwKKyAgICAg
ICAgICAgICAgICAgICAgcmVzdWx0cz1zb3J0ZWQocmVzdWx0cywga2V5PXNvcnRfZnVuY3Rpb24p
LAorICAgICAgICAgICAgICAgICkKKworICAgICAgICAgICAgbmV3ZXJfZGF0YSA9IFtdCisgICAg
ICAgICAgICBmb3IgY29uZmlnLCByZXN1bHRzIGluIGZpbmRfZnVuY3Rpb24oKipxdWVyeV9kaWN0
KS5pdGVtcygpOgorICAgICAgICAgICAgICAgIG5ld2VyX2RhdGEgPSBkaWN0KAorICAgICAgICAg
ICAgICAgICAgICBjb25maWd1cmF0aW9uPUNvbmZpZ3VyYXRpb24uRW5jb2RlcigpLmRlZmF1bHQo
Y29uZmlnKSwKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0cz1zb3J0ZWQocmVzdWx0cywga2V5
PXNvcnRfZnVuY3Rpb24pLAorICAgICAgICAgICAgICAgICkKKworICAgICAgICAgICAgIyBNYWtl
IHN1cmUgdXBwZXIgYW5kIGxvd2VyIGRhdGEgY29udGFpbiB0aGUgc2FtZQorICAgICAgICAgICAg
IyBudW1iZXIgb2YgY29tbWl0cworICAgICAgICAgICAgZm9yIHJlc3VsdCBpbiBvbGRlcl9kYXRh
OgorICAgICAgICAgICAgICAgIHJlc3VsdFsncmVzdWx0cyddID0gcmVzdWx0WydyZXN1bHRzJ11b
Om1pbihsZW4ob2xkZXJfZGF0YVswXVsncmVzdWx0cyddKSwgbGVuKG5ld2VyX2RhdGFbMF1bJ3Jl
c3VsdHMnXSkpXQorICAgICAgICAgICAgZm9yIHJlc3VsdCBpbiBuZXdlcl9kYXRhOgorICAgICAg
ICAgICAgICAgIHJlc3VsdFsncmVzdWx0cyddID0gcmVzdWx0WydyZXN1bHRzJ11bOm1pbihsZW4o
b2xkZXJfZGF0YVswXVsncmVzdWx0cyddKSwgbGVuKG5ld2VyX2RhdGFbMF1bJ3Jlc3VsdHMnXSkp
XQorCisgICAgICAgICAgICAjIENvbWJpbmUgbG93ZXIgJiB1cHBlciBkYXRhIHdoaWxlIGR1cGxp
Y2F0aW5nIHRoZQorICAgICAgICAgICAgIyB0aGUgcGlja2VkIHJldmlzaW9uCisgICAgICAgICAg
ICBkYXRhID0gW10KKyAgICAgICAgICAgIGZvciBsb3dlcl90ZXN0X3Jlc3VsdCBpbiBvbGRlcl9k
YXRhOgorICAgICAgICAgICAgICAgIGZvciB1cHBlcl90ZXN0X3Jlc3VsdCBpbiBuZXdlcl9kYXRh
OgorICAgICAgICAgICAgICAgICAgICBpZiBsb3dlcl90ZXN0X3Jlc3VsdFsnY29uZmlndXJhdGlv
biddID09IHVwcGVyX3Rlc3RfcmVzdWx0Wydjb25maWd1cmF0aW9uJ106CisgICAgICAgICAgICAg
ICAgICAgICAgICBkYXRhLmFwcGVuZCh7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Nv
bmZpZ3VyYXRpb24nOiBsb3dlcl90ZXN0X3Jlc3VsdFsnY29uZmlndXJhdGlvbiddLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICdyZXN1bHRzJzogbG93ZXJfdGVzdF9yZXN1bHRbJ3Jlc3Vs
dHMnXSArIHVwcGVyX3Rlc3RfcmVzdWx0WydyZXN1bHRzJ10KKyAgICAgICAgICAgICAgICAgICAg
ICAgIH0pCisKKyAgICAgICAgICAgIHJlc3VsdHMgPSBbXQorCisgICAgICAgICAgICAjIE1ha2Ug
c3VyZSB3ZSByZWNpZXZlZCBkYXRhCisgICAgICAgICAgICBpZiBsZW4oZGF0YSkgPT0gMDoKKyAg
ICAgICAgICAgICAgICByZXR1cm4ganNvbmlmeSh7fSkKKworICAgICAgICAgICAgIyBTdGFydCBr
ZWVwaW5nIHRyYWNrIG9mIHJlc3VsdCBkYXRhCisgICAgICAgICAgICBmb3IgdGVzdF9yZXN1bHQg
aW4gZGF0YToKKyAgICAgICAgICAgICAgICBjdXJyZW50X3Jlc3VsdCA9IHsKKyAgICAgICAgICAg
ICAgICAgICAgJ2NvbmZpZ3VyYXRpb24nOiB0ZXN0X3Jlc3VsdFsnY29uZmlndXJhdGlvbiddLAor
ICAgICAgICAgICAgICAgICAgICAncmVzdWx0cyc6IHt9CisgICAgICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICAgICAgIyBNYWtlIHN1cmUgdGVzdHMgaGF2ZSBiZWVuIHJ1biBhbmQgY29sbGVj
dGlvbgorICAgICAgICAgICAgICAgICMgaXMgbm90IGVtcHR5CisgICAgICAgICAgICAgICAgaWYg
bGVuKHRlc3RfcmVzdWx0WydyZXN1bHRzJ10pID09IDA6CisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrCisKKyAgICAgICAgICAgICAgICAjIENhbGN1bGF0ZSB0aGUgdG90YWwgcG9pbnRzIHVzZWQg
Zm9yIGNhbGN1bGF0aW5nCisgICAgICAgICAgICAgICAgIyB0aGUgcGVyY2VudGFnZSBmb3IgZWFj
aCB0eXBlIG9mIHJlc3VsdAorICAgICAgICAgICAgICAgIGN1cnJlbnRfcmVzdWx0WydyZXN1bHRz
J10gPSBzZWxmLmNhbGN1bGF0ZV9yZXN1bHRzKHRlc3RfcmVzdWx0LCAobGVuKHRlc3RfcmVzdWx0
WydyZXN1bHRzJ11bMF0pIC0gMSkgLy8gMikKKworICAgICAgICAgICAgICAgICMgQWRkIHRoZSBj
b25maWd1cmF0aW9uIHJlc3VsdHMgdG8gbWFzdGVyIGNvbGxlY3Rpb24KKyAgICAgICAgICAgICAg
ICByZXN1bHRzLmFwcGVuZChjdXJyZW50X3Jlc3VsdCkKKworICAgICAgICAgICAgIyBDYWxjdWxh
dGUgdGhlIG92ZXJhbGwsIGNvbWJpbmVkIHZhbHVlIG9mCisgICAgICAgICAgICAjIGFsbCByZXN1
bHRzIGZyb20gYWxsIGNvbmZpZ3VyYXRpb25zIGFuZCByZXBvcnQKKyAgICAgICAgICAgIHJlc3Vs
dHMgPSBzZWxmLmNhbGN1bGF0ZV9vdmVyYWxsX3Jlc3VsdHMocmVzdWx0cykKKworICAgICAgICAg
ICAgIyBSZXBvcnQgdGhlIHJlc3VsdHMgZm9yIHRoZSB0ZXN0CisgICAgICAgICAgICByZXR1cm4g
anNvbmlmeShyZXN1bHRzKQoKUHJvcGVydHkgY2hhbmdlcyBvbjogVG9vbHMvU2NyaXB0cy9saWJy
YXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxlci9jb25maWRlbmNlX2NvbnRy
b2xsZXIucHkKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmV4ZWN1dGFibGUKIyMgLTAsMCArMSAjIwor
KgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBUb29scy9TY3JpcHRzL2xp
YnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC9jb25maWRlbmNlX2NvbnRleHQu
cHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVz
dWx0c2RicHkvbW9kZWwvY29uZmlkZW5jZV9jb250ZXh0LnB5CShub25leGlzdGVudCkKKysrIFRv
b2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL2NvbmZp
ZGVuY2VfY29udGV4dC5weQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDIyMyBAQAorIyBDb3B5
cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
IyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisj
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyAiQVMgSVMiIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworaW1wb3J0IGNhbGVuZGFyCitpbXBvcnQg
Y29sbGVjdGlvbnMKK2ltcG9ydCBqc29uCitpbXBvcnQgdGltZQorCitmcm9tIGNhc3NhbmRyYS5j
cWxlbmdpbmUgaW1wb3J0IGNvbHVtbnMKK2Zyb20gY2Fzc2FuZHJhLmNxbGVuZ2luZS5tb2RlbHMg
aW1wb3J0IE1vZGVsCitmcm9tIGRhdGV0aW1lIGltcG9ydCBkYXRldGltZQorZnJvbSByZXN1bHRz
ZGJweS5tb2RlbC5jb21taXRfY29udGV4dCBpbXBvcnQgQ29tbWl0Q29udGV4dAorZnJvbSByZXN1
bHRzZGJweS5tb2RlbC5jb25maWd1cmF0aW9uX2NvbnRleHQgaW1wb3J0IENsdXN0ZXJlZEJ5Q29u
ZmlndXJhdGlvbgorZnJvbSByZXN1bHRzZGJweS5tb2RlbC51cGxvYWRfY29udGV4dCBpbXBvcnQg
VXBsb2FkQ2FsbGJhY2tDb250ZXh0Citmcm9tIHdlYmtpdHNjbXB5IGltcG9ydCBDb21taXQKKwor
CitjbGFzcyBFeHBlY3RhdGlvbnM6CisgICAgIyBUaGVzZSBhcmUgb3JkZXJlZCBieSBwcmlvcml0
eSwgbWVhbmluZyB0aGF0IGEgdGVzdCB3aGljaCBib3RoIGNyYXNoZXMgYW5kIGhhcworICAgICMg
YSB3YXJuaW5nIHNob3VsZCBiZSBjb25zaWRlcmVkIHRvIGhhdmUgY3Jhc2hlZC4KKyAgICBTVEFU
RV9JRF9UT19TVFJJTkcgPSBjb2xsZWN0aW9ucy5PcmRlcmVkRGljdCgpCisgICAgU1RBVEVfSURf
VE9fU1RSSU5HWzB4MDBdID0gJ0NSQVNIJworICAgIFNUQVRFX0lEX1RPX1NUUklOR1sweDA4XSA9
ICdUSU1FT1VUJworICAgIFNUQVRFX0lEX1RPX1NUUklOR1sweDEwXSA9ICdJTUFHRScKKyAgICBT
VEFURV9JRF9UT19TVFJJTkdbMHgxOF0gPSAnQVVESU8nCisgICAgU1RBVEVfSURfVE9fU1RSSU5H
WzB4MjBdID0gJ1RFWFQnCisgICAgU1RBVEVfSURfVE9fU1RSSU5HWzB4MjhdID0gJ0ZBSUwnCisg
ICAgU1RBVEVfSURfVE9fU1RSSU5HWzB4MzBdID0gJ0VSUk9SJworICAgIFNUQVRFX0lEX1RPX1NU
UklOR1sweDM4XSA9ICdXQVJOSU5HJworICAgIFNUQVRFX0lEX1RPX1NUUklOR1sweDQwXSA9ICdQ
QVNTJworCisgICAgU1RSSU5HX1RPX1NUQVRFX0lEID0ge3N0cmluZzogaWQgZm9yIGlkLCBzdHJp
bmcgaW4gU1RBVEVfSURfVE9fU1RSSU5HLml0ZW1zKCl9CisKKyAgICBDUkFTSCwgVElNRU9VVCwg
SU1BR0UsIEFVRElPLCBURVhULCBGQUlMLCBFUlJPUiwgV0FSTklORywgUEFTUyA9IFNUQVRFX0lE
X1RPX1NUUklORy52YWx1ZXMoKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHN0cmluZ190
b19zdGF0ZV9pZHMoY2xzLCBzdHJpbmcpOgorICAgICAgICByZXN1bHQgPSBzZXQoW2VsbSBmb3Ig
ZWxtIGluIFtjbHMuU1RSSU5HX1RPX1NUQVRFX0lELmdldChzdHIpIGZvciBzdHIgaW4gc3RyaW5n
LnNwbGl0KCcgJyldIGlmIGVsbSBpcyBub3QgTm9uZV0pCisgICAgICAgIHJldHVybiBzb3J0ZWQo
cmVzdWx0KSBvciBbY2xzLlNUUklOR19UT19TVEFURV9JRFtjbHMuUEFTU11dCisKKyAgICBAY2xh
c3NtZXRob2QKKyAgICBkZWYgc3RhdGVfaWRzX3RvX3N0cmluZyhjbHMsIHN0YXRlX2lkcyk6Cisg
ICAgICAgIGlmIGlzaW5zdGFuY2Uoc3RhdGVfaWRzLCBzdHIpOgorICAgICAgICAgICAgcmV0dXJu
ICcgJy5qb2luKFtjbHMuU1RBVEVfSURfVE9fU1RSSU5HW29yZChzdGF0ZSldIGZvciBzdGF0ZSBp
biBzb3J0ZWQoc3RhdGVfaWRzKV0pCisgICAgICAgIHJldHVybiAnICcuam9pbihbY2xzLlNUQVRF
X0lEX1RPX1NUUklOR1tpbnQoc3RhdGUpXSBmb3Igc3RhdGUgaW4gc29ydGVkKHN0YXRlX2lkcyld
KQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGl0ZXJhdGVfdGhyb3VnaF9uZXN0ZWRfcmVz
dWx0cyhjbHMsIHJlc3VsdHMsIGNhbGxiYWNrPWxhbWJkYSB0ZXN0LCByZXN1bHRzOiBOb25lKToK
KyAgICAgICAgZGVmIHJlY3Vyc2UocGFydGlhbF90ZXN0LCByZXN1bHRzKToKKyAgICAgICAgICAg
IHBvdGVudGlhbF9iYXNlX2Nhc2UgPSBUcnVlCisgICAgICAgICAgICBmb3Iga2V5LCB2YWx1ZSBp
biByZXN1bHRzLml0ZW1zKCk6CisgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwg
ZGljdCk6CisgICAgICAgICAgICAgICAgICAgIHBvdGVudGlhbF9iYXNlX2Nhc2UgPSBGYWxzZQor
ICAgICAgICAgICAgICAgICAgICByZWN1cnNlKHBhcnRpYWxfdGVzdCArICcvJyArIGtleSwgdmFs
dWUpCisgICAgICAgICAgICAgICAgZWxpZiBub3QgcG90ZW50aWFsX2Jhc2VfY2FzZToKKyAgICAg
ICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignSW5jb3JyZWN0bHkgZm9ybWF0dGVkIG5l
c3RlZCByZXN1bHRzIGRpY3Rpb25hcnknKQorCisgICAgICAgICAgICBpZiBwb3RlbnRpYWxfYmFz
ZV9jYXNlOgorICAgICAgICAgICAgICAgICMgSWYgd2UgZG9uJ3QgaGF2ZSBhIGRpY3Rpb25hcnkg
b2YgZGljdGlvbmFyaWVzLCB0aGF0IG1lYW5zIHRoaXMgaXMgYSBsZWFmIG5vZGUKKyAgICAgICAg
ICAgICAgICBjYWxsYmFjayhwYXJ0aWFsX3Rlc3QsIHJlc3VsdHMpCisKKyAgICAgICAgZm9yIGtl
eSwgdmFsdWUgaW4gcmVzdWx0cy5pdGVtcygpOgorICAgICAgICAgICAgcmVjdXJzZShrZXksIHZh
bHVlKQorCisKK2NsYXNzIENvbmZpZGVuY2VDb250ZXh0KFVwbG9hZENhbGxiYWNrQ29udGV4dCk6
CisgICAgREVGQVVMVF9MSU1JVCA9IDEwMAorCisgICAgY2xhc3MgVGVzdFJlc3VsdHNCYXNlKENs
dXN0ZXJlZEJ5Q29uZmlndXJhdGlvbik6CisgICAgICAgIHN1aXRlID0gY29sdW1ucy5UZXh0KHBh
cnRpdGlvbl9rZXk9VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSkKKyAgICAgICAgYnJhbmNoID0gY29sdW1u
cy5UZXh0KHBhcnRpdGlvbl9rZXk9VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSkKKyAgICAgICAgdGVzdCA9
IGNvbHVtbnMuVGV4dChwYXJ0aXRpb25fa2V5PVRydWUsIHJlcXVpcmVkPVRydWUpCisgICAgICAg
IGV4cGVjdGVkID0gY29sdW1ucy5CbG9iKHJlcXVpcmVkPVRydWUpCisgICAgICAgIGFjdHVhbCA9
IGNvbHVtbnMuQmxvYihyZXF1aXJlZD1UcnVlKQorICAgICAgICBkZXRhaWxzID0gY29sdW1ucy5U
ZXh0KHJlcXVpcmVkPUZhbHNlKQorCisgICAgICAgIGRlZiB1bnBhY2soc2VsZik6CisgICAgICAg
ICAgICByZXN1bHQgPSBkaWN0KAorICAgICAgICAgICAgICAgIHV1aWQ9c2VsZi51dWlkLAorICAg
ICAgICAgICAgICAgIHN0YXJ0X3RpbWU9Y2FsZW5kYXIudGltZWdtKHNlbGYuc3RhcnRfdGltZS50
aW1ldHVwbGUoKSksCisgICAgICAgICAgICAgICAgZXhwZWN0ZWQ9RXhwZWN0YXRpb25zLnN0YXRl
X2lkc190b19zdHJpbmcoc2VsZi5leHBlY3RlZCksCisgICAgICAgICAgICAgICAgYWN0dWFsPUV4
cGVjdGF0aW9ucy5zdGF0ZV9pZHNfdG9fc3RyaW5nKHNlbGYuYWN0dWFsKSwKKyAgICAgICAgICAg
ICkKKyAgICAgICAgICAgIGZvciBrZXksIHZhbHVlIGluIChqc29uLmxvYWRzKHNlbGYuZGV0YWls
cykgaWYgc2VsZi5kZXRhaWxzIGVsc2Uge30pLml0ZW1zKCk6CisgICAgICAgICAgICAgICAgaWYg
a2V5IGluIHJlc3VsdDoKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAg
ICAgICByZXN1bHRba2V5XSA9IHZhbHVlCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0CisKKyAg
ICBjbGFzcyBUZXN0UmVzdWx0c0J5Q29tbWl0KFRlc3RSZXN1bHRzQmFzZSk6CisgICAgICAgIF9f
dGFibGVfbmFtZV9fID0gJ3Rlc3RfcmVzdWx0c19ieV9jb21taXQnCisgICAgICAgIHV1aWQgPSBj
b2x1bW5zLkJpZ0ludChwcmltYXJ5X2tleT1UcnVlLCByZXF1aXJlZD1UcnVlLCBjbHVzdGVyaW5n
X29yZGVyPSdERVNDJykKKyAgICAgICAgc2RrID0gY29sdW1ucy5UZXh0KHByaW1hcnlfa2V5PVRy
dWUsIHJlcXVpcmVkPVRydWUpCisgICAgICAgIHN0YXJ0X3RpbWUgPSBjb2x1bW5zLkRhdGVUaW1l
KHByaW1hcnlfa2V5PVRydWUsIHJlcXVpcmVkPVRydWUpCisKKyAgICBjbGFzcyBUZXN0UmVzdWx0
c0J5U3RhcnRUaW1lKFRlc3RSZXN1bHRzQmFzZSk6CisgICAgICAgIF9fdGFibGVfbmFtZV9fID0g
J3Rlc3RfcmVzdWx0c19ieV9zdGFydF90aW1lJworICAgICAgICBzdGFydF90aW1lID0gY29sdW1u
cy5EYXRlVGltZShwcmltYXJ5X2tleT1UcnVlLCByZXF1aXJlZD1UcnVlLCBjbHVzdGVyaW5nX29y
ZGVyPSdERVNDJykKKyAgICAgICAgc2RrID0gY29sdW1ucy5UZXh0KHByaW1hcnlfa2V5PVRydWUs
IHJlcXVpcmVkPVRydWUpCisgICAgICAgIHV1aWQgPSBjb2x1bW5zLkJpZ0ludChwcmltYXJ5X2tl
eT1UcnVlLCByZXF1aXJlZD1UcnVlKQorCisgICAgY2xhc3MgVGVzdE5hbWVCeVN1aXRlKE1vZGVs
KToKKyAgICAgICAgX190YWJsZV9uYW1lX18gPSAndGVzdF9uYW1lc19ieV9zdWl0ZScKKyAgICAg
ICAgc3VpdGUgPSBjb2x1bW5zLlRleHQocGFydGl0aW9uX2tleT1UcnVlLCByZXF1aXJlZD1UcnVl
KQorICAgICAgICB0ZXN0ID0gY29sdW1ucy5UZXh0KHByaW1hcnlfa2V5PVRydWUsIHJlcXVpcmVk
PVRydWUpCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAg
ICAgc3VwZXIoQ29uZmlkZW5jZUNvbnRleHQsIHNlbGYpLl9faW5pdF9fKCdjb25maWRlbmNlJywg
KmFyZ3MsICoqa3dhcmdzKQorCisgICAgICAgIHdpdGggc2VsZjoKKyAgICAgICAgICAgIHNlbGYu
Y2Fzc2FuZHJhLmNyZWF0ZV90YWJsZShzZWxmLlRlc3RSZXN1bHRzQnlDb21taXQpCisgICAgICAg
ICAgICBzZWxmLmNhc3NhbmRyYS5jcmVhdGVfdGFibGUoc2VsZi5UZXN0UmVzdWx0c0J5U3RhcnRU
aW1lKQorICAgICAgICAgICAgc2VsZi5jYXNzYW5kcmEuY3JlYXRlX3RhYmxlKHNlbGYuVGVzdE5h
bWVCeVN1aXRlKQorCisgICAgZGVmIG5hbWVzKHNlbGYsIHN1aXRlLCB0ZXN0PU5vbmUsIGxpbWl0
PURFRkFVTFRfTElNSVQpOgorICAgICAgICB3aXRoIHNlbGY6CisgICAgICAgICAgICBpZiB0ZXN0
OgorICAgICAgICAgICAgICAgICMgRklYTUU6IFNBU0kgaW5kZWNpZXMgYXJlIHRoZSBjYW5ub2lj
YWwgd2F5IHRvIHNvbHZlIHRoaXMgcHJvYmxlbSwgYnV0IHJlcXVpcmUgQ2Fzc2FuZHJhIDMuNCB3
aGljaAorICAgICAgICAgICAgICAgICMgaGFzbid0IGJlZW4gZGVwbG95ZWQgdG8gb3VyIGRhdGFj
ZW50ZXJzIHlldC4gVGhpcyB3b3JrcyBmb3IgY29tbWl0cywgYnV0IGlzIGxlc3MgdHJhbnNwYXJl
bnQuCisgICAgICAgICAgICAgICAgcmV0dXJuIFttb2RlbC50ZXN0IGZvciBtb2RlbCBpbiBzZWxm
LmNhc3NhbmRyYS5zZWxlY3RfZnJvbV90YWJsZSgKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5U
ZXN0TmFtZUJ5U3VpdGUuX190YWJsZV9uYW1lX18sIGxpbWl0PWxpbWl0LCBzdWl0ZT1zdWl0ZSwK
KyAgICAgICAgICAgICAgICAgICAgdGVzdF9fZ3RlPXRlc3QsIHRlc3RfX2x0ZT0odGVzdCArICd+
JyksCisgICAgICAgICAgICAgICAgKV0KKworICAgICAgICAgICAgcmV0dXJuIFttb2RlbC50ZXN0
IGZvciBtb2RlbCBpbiBzZWxmLmNhc3NhbmRyYS5zZWxlY3RfZnJvbV90YWJsZSgKKyAgICAgICAg
ICAgICAgICBzZWxmLlRlc3ROYW1lQnlTdWl0ZS5fX3RhYmxlX25hbWVfXywgbGltaXQ9bGltaXQs
IHN1aXRlPXN1aXRlLAorICAgICAgICAgICAgKV0KKworICAgIGRlZiByZWdpc3RlcihzZWxmLCBj
b25maWd1cmF0aW9uLCBjb21taXRzLCBzdWl0ZSwgdGVzdF9yZXN1bHRzLCB0aW1lc3RhbXA9Tm9u
ZSk6CisgICAgICAgIHRpbWVzdGFtcCA9IHRpbWVzdGFtcCBvciB0aW1lLnRpbWUoKQorICAgICAg
ICBpZiBub3QgaXNpbnN0YW5jZSh0aW1lc3RhbXAsIGRhdGV0aW1lKToKKyAgICAgICAgICAgIHRp
bWVzdGFtcCA9IGRhdGV0aW1lLnV0Y2Zyb210aW1lc3RhbXAoaW50KHRpbWVzdGFtcCkpCisKKyAg
ICAgICAgdHJ5OgorICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uoc3VpdGUsIHN0cik6Cisg
ICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKGYnRXhwZWN0ZWQgdHlwZSB7c3RyfSwgZ290
IHt0eXBlKHN1aXRlKX0nKQorCisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHRpbWVzdGFtcCwg
ZGF0ZXRpbWUpOgorICAgICAgICAgICAgICAgIHRpbWVzdGFtcCA9IGNhbGVuZGFyLnRpbWVnbSh0
aW1lc3RhbXAudGltZXR1cGxlKCkpCisKKyAgICAgICAgICAgIHdpdGggc2VsZjoKKyAgICAgICAg
ICAgICAgICB1dWlkID0gc2VsZi5jb21taXRfY29udGV4dC51dWlkX2Zvcl9jb21taXRzKGNvbW1p
dHMpCisgICAgICAgICAgICAgICAgdHRsID0gaW50KCh1dWlkIC8vIENvbW1pdC5VVUlEX01VTFRJ
UExJRVIpICsgc2VsZi50dGxfc2Vjb25kcyAtIHRpbWUudGltZSgpKSBpZiBzZWxmLnR0bF9zZWNv
bmRzIGVsc2UgTm9uZQorCisgICAgICAgICAgICAgICAgZGVmIGNhbGxiYWNrKHRlc3QsIHJlc3Vs
dCwgYnJhbmNoKToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5jYXNzYW5kcmEuaW5zZXJ0X3Jv
dyhzZWxmLlRlc3ROYW1lQnlTdWl0ZS5fX3RhYmxlX25hbWVfXywgc3VpdGU9c3VpdGUsIHRlc3Q9
dGVzdCwgdHRsPXR0bCkKKworICAgICAgICAgICAgICAgICAgICBhcmdzX3RvX3dyaXRlID0gZGlj
dCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGFjdHVhbD1ieXRlYXJyYXkoRXhwZWN0YXRpb25z
LnN0cmluZ190b19zdGF0ZV9pZHMocmVzdWx0LmdldCgnYWN0dWFsJywgJycpKSksCisgICAgICAg
ICAgICAgICAgICAgICAgICBleHBlY3RlZD1ieXRlYXJyYXkoRXhwZWN0YXRpb25zLnN0cmluZ190
b19zdGF0ZV9pZHMocmVzdWx0LmdldCgnZXhwZWN0ZWQnLCAnJykpKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGRldGFpbHM9anNvbi5kdW1wcyh7a2V5OiB2YWx1ZSBmb3Iga2V5LCB2YWx1ZSBp
biByZXN1bHQuaXRlbXMoKSBpZiBrZXkgbm90IGluIFsnYWN0dWFsJywgJ2V4cGVjdGVkJ119KSwK
KyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICAgICBmb3IgdGFibGUgaW4g
W3NlbGYuVGVzdFJlc3VsdHNCeUNvbW1pdCwgc2VsZi5UZXN0UmVzdWx0c0J5U3RhcnRUaW1lXToK
KyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY29uZmlndXJhdGlvbl9jb250ZXh0Lmluc2Vy
dF9yb3dfd2l0aF9jb25maWd1cmF0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRh
YmxlLl9fdGFibGVfbmFtZV9fLCBjb25maWd1cmF0aW9uPWNvbmZpZ3VyYXRpb24sIHN1aXRlPXN1
aXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyYW5jaD1icmFuY2gsIHV1aWQ9dXVp
ZCwgdHRsPXR0bCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0PXRlc3QsIHNkaz1j
b25maWd1cmF0aW9uLnNkayBvciAnPycsIHN0YXJ0X3RpbWU9dGltZXN0YW1wLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICoqYXJnc190b193cml0ZSkKKworICAgICAgICAgICAgICAgIHdp
dGggc2VsZi5jYXNzYW5kcmEuYmF0Y2hfcXVlcnlfY29udGV4dCgpOgorICAgICAgICAgICAgICAg
ICAgICBmb3IgYnJhbmNoIGluIHNlbGYuY29tbWl0X2NvbnRleHQuYnJhbmNoX2tleXNfZm9yX2Nv
bW1pdHMoY29tbWl0cyk6CisgICAgICAgICAgICAgICAgICAgICAgICBFeHBlY3RhdGlvbnMuaXRl
cmF0ZV90aHJvdWdoX25lc3RlZF9yZXN1bHRzKAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRlc3RfcmVzdWx0cy5nZXQoJ3Jlc3VsdHMnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBsYW1iZGEgdGVzdCwgcmVzdWx0OiBjYWxsYmFjayh0ZXN0LCByZXN1bHQsIGJyYW5jaD1icmFu
Y2gpLAorICAgICAgICAgICAgICAgICAgICAgICAgKQorCisgICAgICAgIGV4Y2VwdCBFeGNlcHRp
b24gYXMgZToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLnBhcnRpYWxfc3RhdHVzKGUpCisgICAg
ICAgIHJldHVybiBzZWxmLnBhcnRpYWxfc3RhdHVzKCkKKworICAgICMgT2xkIGluZGljYXRlZCBn
ZXR0aW5nIHJlc3VsdHMgZnJvbSBiZWZvcmUgdGhlIGdpdmVuIFVVSUQuCisgICAgIyBJZiBub25l
LCByZXN1bHRzIHdpbGwgYmUgZm9yIGFmdGVyLgorICAgIGRlZiBfZmluZF9yZXN1bHRzKAorICAg
ICAgICAgICAgc2VsZiwgb2xkPU5vbmUsCisgICAgICAgICAgICBzZWxmLCB0YWJsZSwgY29uZmln
dXJhdGlvbnMsIHN1aXRlLCB0ZXN0LCByZWNlbnQ9VHJ1ZSwKKyAgICAgICAgICAgIGJyYW5jaD1O
b25lLCB1dWlkPU5vbmUsCisgICAgICAgICAgICBsaW1pdD1ERUZBVUxUX0xJTUlULAorICAgICk6
CisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHN1aXRlLCBzdHIpOgorICAgICAgICAgICAgcmFp
c2UgVHlwZUVycm9yKGYnRXhwZWN0ZWQgdHlwZSB7c3RyfSwgZ290IHt0eXBlKHN1aXRlKX0nKQor
ICAgICAgICBpZiBub3QgaXNpbnN0YW5jZSh0ZXN0LCBzdHIpOgorICAgICAgICAgICAgcmFpc2Ug
VHlwZUVycm9yKGYnRXhwZWN0ZWQgdHlwZSB7c3RyfSwgZ290IHt0eXBlKHN1aXRlKX0nKQorCisg
ICAgICAgIGRlZiBnZXRfdGltZSh0aW1lKToKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UodGlt
ZSwgZGF0ZXRpbWUpOgorICAgICAgICAgICAgICAgIHJldHVybiB0aW1lCisgICAgICAgICAgICBl
bGlmIHRpbWU6CisgICAgICAgICAgICAgICAgcmV0dXJuIGRhdGV0aW1lLnV0Y2Zyb210aW1lc3Rh
bXAoaW50KHRpbWUpKQorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgICAgICB3aXRoIHNl
bGY6CisgICAgICAgICAgICByZXN1bHQgPSB7fQorICAgICAgICAgICAgZm9yIGNvbmZpZ3VyYXRp
b24gaW4gY29uZmlndXJhdGlvbnM6CisgICAgICAgICAgICAgICAgcmVzdWx0LnVwZGF0ZSh7Y29u
ZmlnOiBbdmFsdWUudW5wYWNrKCkgZm9yIHZhbHVlIGluIHZhbHVlc10gZm9yIGNvbmZpZywgdmFs
dWVzIGluIHNlbGYuY29uZmlndXJhdGlvbl9jb250ZXh0LnNlbGVjdF9mcm9tX3RhYmxlX3dpdGhf
Y29uZmlndXJhdGlvbnMoCisgICAgICAgICAgICAgICAgICAgIHRhYmxlLl9fdGFibGVfbmFtZV9f
LCBjb25maWd1cmF0aW9ucz1bY29uZmlndXJhdGlvbl0sIHJlY2VudD1yZWNlbnQsCisgICAgICAg
ICAgICAgICAgICAgIHN1aXRlPXN1aXRlLCB0ZXN0PXRlc3QsIHNkaz1jb25maWd1cmF0aW9uLnNk
aywgYnJhbmNoPWJyYW5jaCBvciBzZWxmLmNvbW1pdF9jb250ZXh0LkRFRkFVTFRfQlJBTkNIX0tF
WSwKKyAgICAgICAgICAgICAgICAgICAgdXVpZF9fZ3RlPXV1aWQgaWYgb2xkIGlzIE5vbmUgZWxz
ZSBOb25lLAorICAgICAgICAgICAgICAgICAgICB1dWlkX19sdGU9dXVpZCBpZiBvbGQgaXMgbm90
IE5vbmUgZWxzZSBOb25lLAorICAgICAgICAgICAgICAgICAgICBsaW1pdD1saW1pdCwKKyAgICAg
ICAgICAgICAgICApLml0ZW1zKCl9KQorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAorCisgICAg
ZGVmIGZpbmRfYnlfY29tbWl0KHNlbGYsIG9sZD1Ob25lLCAqYXJncywgKiprd2FyZ3MpOgorICAg
ICAgICByZXR1cm4gc2VsZi5fZmluZF9yZXN1bHRzKHNlbGYuVGVzdFJlc3VsdHNCeUNvbW1pdCwg
b2xkPW9sZCwgKmFyZ3MsICoqa3dhcmdzKQoKUHJvcGVydHkgY2hhbmdlcyBvbjogVG9vbHMvU2Ny
aXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvY29uZmlkZW5jZV9j
b250ZXh0LnB5Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjpleGVjdXRhYmxlCiMjIC0wLDAgKzEgIyMK
KyoKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431125</attachid>
            <date>2021-06-10 14:01:07 -0700</date>
            <delta_ts>2021-06-10 14:17:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226894-20210610170105.patch</filename>
            <type>text/plain</type>
            <size>10449</size>
            <attacher name="Chris Gambrell">cgambrell</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI3ODcyOSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDIzIEBACisyMDIxLTA2LTEwICBDaHJpcyBHYW1icmVsbCAgPGNnYW1icmVsbEBhcHBsZS5j
b20+CisKKyAgICAgICAgW3Jlc3VsdHNkYnB5XSBBZGQgY29uZmlkZW5jZS1jaGVja2luZyBmdW5j
dGlvbmFsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMjY4OTQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc5MTU1MTgxPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMv
cmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxlci9hcGlfcm91dGVzLnB5OgorICAgICAg
ICAoQVBJUm91dGVzLl9faW5pdF9fKToKKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy9yZXN1
bHRzZGJweS9yZXN1bHRzZGJweS9jb250cm9sbGVyL2NvbW1pdF9jb250cm9sbGVyLnB5OgorICAg
ICAgICAoY29tbWl0X29yX3RpbWVzdGFtcF9mb3JfdXVpZCk6CisgICAgICAgIChjb21taXRfb3Jf
dGltZXN0YW1wX2Zvcl91dWlkLmRlY29yYXRvcik6CisgICAgICAgIChjb21taXRfb3JfdGltZXN0
YW1wX2Zvcl91dWlkLmRlY29yYXRvci5yZWFsX21ldGhvZCk6CisgICAgICAgICogU2NyaXB0cy9s
aWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxlci90ZXN0X2NvbnRyb2xs
ZXIucHk6CisgICAgICAgIChUZXN0Q29udHJvbGxlcik6CisgICAgICAgIChUZXN0Q29udHJvbGxl
ci5jYWxjdWxhdGVfcmVzdWx0cyk6CisgICAgICAgIChUZXN0Q29udHJvbGxlci5jYWxjdWxhdGVf
b3ZlcmFsbF9yZXN1bHRzKToKKyAgICAgICAgKFRlc3RDb250cm9sbGVyLmZpbmRfdGVzdF9jb25m
aWRlbmNlKToKKwogMjAyMS0wNi0xMCAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxp
YS5jb20+CiAKICAgICAgICAgW1dQRV0gRW5hYmxlIENvZyBmb3IgZGV2ZWxvcGVyIGJ1aWxkcwpJ
bmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29u
dHJvbGxlci9hcGlfcm91dGVzLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFy
aWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIvYXBpX3JvdXRlcy5weQkocmV2
aXNpb24gMjc4NzI0KQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVz
dWx0c2RicHkvY29udHJvbGxlci9hcGlfcm91dGVzLnB5CSh3b3JraW5nIGNvcHkpCkBAIC00Myw2
ICs0Myw3IEBAIGNsYXNzIEFQSVJvdXRlcyhBdXRoZWRCbHVlcHJpbnQpOgogCiAgICAgICAgIHNl
bGYuc3VpdGVfY29udHJvbGxlciA9IFN1aXRlQ29udHJvbGxlcihzdWl0ZV9jb250ZXh0PW1vZGVs
LnN1aXRlX2NvbnRleHQpCiAgICAgICAgIHNlbGYudGVzdF9jb250cm9sbGVyID0gVGVzdENvbnRy
b2xsZXIodGVzdF9jb250ZXh0PW1vZGVsLnRlc3RfY29udGV4dCkKKyAgICAgICAgc2VsZi5jb25m
aWRlbmNlX2NvbnRyb2xsZXIgPSBUZXN0Q29udHJvbGxlcih0ZXN0X2NvbnRleHQ9bW9kZWwudGVz
dF9jb250ZXh0KQogICAgICAgICBzZWxmLmZhaWx1cmVfY29udHJvbGxlciA9IEZhaWx1cmVDb250
cm9sbGVyKGZhaWx1cmVfY29udGV4dD1tb2RlbC5mYWlsdXJlX2NvbnRleHQpCiAKICAgICAgICAg
c2VsZi5jaV9jb250cm9sbGVyID0gQ0lDb250cm9sbGVyKGNpX2NvbnRleHQ9bW9kZWwuY2lfY29u
dGV4dCwgdXBsb2FkX2NvbnRleHQ9bW9kZWwudXBsb2FkX2NvbnRleHQpCkBAIC03MSw2ICs3Miw4
IEBAIGNsYXNzIEFQSVJvdXRlcyhBdXRoZWRCbHVlcHJpbnQpOgogICAgICAgICBzZWxmLmFkZF91
cmxfcnVsZSgnL3Jlc3VsdHMvPHBhdGg6c3VpdGU+JywgJ3N1aXRlLXJlc3VsdHMnLCBzZWxmLnN1
aXRlX2NvbnRyb2xsZXIuZmluZF9ydW5fcmVzdWx0cywgbWV0aG9kcz0oJ0dFVCcsKSkKICAgICAg
ICAgc2VsZi5hZGRfdXJsX3J1bGUoJy9yZXN1bHRzLzxwYXRoOnN1aXRlPi88cGF0aDp0ZXN0Pics
ICd0ZXN0LXJlc3VsdHMnLCBzZWxmLnRlc3RfY29udHJvbGxlci5maW5kX3Rlc3RfcmVzdWx0LCBt
ZXRob2RzPSgnR0VUJywpKQogCisgICAgICAgIHNlbGYuYWRkX3VybF9ydWxlKCcvY29uZmlkZW5j
ZS88cGF0aDpzdWl0ZT4vPHBhdGg6dGVzdD4nLCAnY29uZmlkZW5jZScsIHNlbGYudGVzdF9jb250
cm9sbGVyLmZpbmRfdGVzdF9jb25maWRlbmNlLCBtZXRob2RzPSgnR0VUJywpKQorCiAgICAgICAg
IHNlbGYuYWRkX3VybF9ydWxlKCcvZmFpbHVyZXMvPHBhdGg6c3VpdGU+JywgJ3N1aXRlLWZhaWx1
cmVzJywgc2VsZi5mYWlsdXJlX2NvbnRyb2xsZXIuZmFpbHVyZXMsIG1ldGhvZHM9KCdHRVQnLCkp
CiAKICAgICAgICAgc2VsZi5hZGRfdXJsX3J1bGUoJy91cmxzL3F1ZXVlJywgJ3F1ZXVlLXVybHMn
LCBzZWxmLmNpX2NvbnRyb2xsZXIudXJsc19mb3JfcXVldWVfZW5kcG9pbnQsIG1ldGhvZHM9KCdH
RVQnLCkpCkluZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRz
ZGJweS9jb250cm9sbGVyL2NvbW1pdF9jb250cm9sbGVyLnB5Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIvY29t
bWl0X2NvbnRyb2xsZXIucHkJKHJldmlzaW9uIDI3ODcyNCkKKysrIFRvb2xzL1NjcmlwdHMvbGli
cmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIvY29tbWl0X2NvbnRyb2xs
ZXIucHkJKHdvcmtpbmcgY29weSkKQEAgLTkyLDYgKzkyLDIzIEBAIGRlZiB1dWlkX3JhbmdlX2Zv
cl9jb21taXRfcmFuZ2VfcXVlcnkoKToKICAgICByZXR1cm4gZGVjb3JhdG9yCiAKIAorZGVmIGNv
bW1pdF9vcl90aW1lc3RhbXBfZm9yX3V1aWQoKToKKyAgICBkZWYgZGVjb3JhdG9yKG1ldGhvZCk6
CisgICAgICAgIGRlZiByZWFsX21ldGhvZChvYmosIHJlcG9zaXRvcnlfaWQ9Tm9uZSwgYnJhbmNo
PU5vbmUsIGlkPU5vbmUsIHJlZj1Ob25lLCB1dWlkPU5vbmUsIHRpbWVzdGFtcD1Ob25lLCAqKmt3
YXJncyk6CisgICAgICAgICAgICAjIFdlJ3JlIG1ha2luZyBhbiBhc3N1bXB0aW9uIHRoYXQgdGhl
IGNsYXNzIHVzaW5nIHRoaXMgZGVjb3JhdG9yIGFjdHVhbGx5IGhhcyBhIGNvbW1pdF9jb250ZXh0
LCBpZiBpdCBkb2VzIG5vdCwKKyAgICAgICAgICAgICMgdGhpcyBkZWNvcmF0b3Igd2lsbCBmYWls
IHNwZWN0YWN1bGFybHkKKyAgICAgICAgICAgIHdpdGggb2JqLmNvbW1pdF9jb250ZXh0OgorICAg
ICAgICAgICAgICAgIHV1aWQgPSBfZmluZF9jb21wYXJpc29uKAorICAgICAgICAgICAgICAgICAg
ICBvYmouY29tbWl0X2NvbnRleHQsIHJlcG9zaXRvcnlfaWQ9cmVwb3NpdG9yeV9pZCwgYnJhbmNo
PWJyYW5jaCwKKyAgICAgICAgICAgICAgICAgICAgcmVmPXJlZiBvciBpZCwKKyAgICAgICAgICAg
ICAgICAgICAgdXVpZD11dWlkLCB0aW1lc3RhbXA9dGltZXN0YW1wLCBwcmlvcml0eT1tYXgsCisg
ICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgcmV0dXJuIG1ldGhvZChvYmosIGJyYW5jaD1i
cmFuY2gsIHV1aWQ9dXVpZCwgKiprd2FyZ3MpCisgICAgICAgIHJlYWxfbWV0aG9kLl9fbmFtZV9f
ID0gbWV0aG9kLl9fbmFtZV9fCisgICAgICAgIHJldHVybiByZWFsX21ldGhvZAorICAgIHJldHVy
biBkZWNvcmF0b3IKKworCiBkZWYgdXVpZF9yYW5nZV9mb3JfcXVlcnkoKToKICAgICBkZWYgZGVj
b3JhdG9yKG1ldGhvZCk6CiAgICAgICAgIEB1dWlkX3JhbmdlX2Zvcl9jb21taXRfcmFuZ2VfcXVl
cnkoKQpJbmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2Ri
cHkvY29udHJvbGxlci90ZXN0X2NvbnRyb2xsZXIucHkKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2Ny
aXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxlci90ZXN0X2Nv
bnRyb2xsZXIucHkJKHJldmlzaW9uIDI3ODcyNCkKKysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVz
L3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIvdGVzdF9jb250cm9sbGVyLnB5CSh3
b3JraW5nIGNvcHkpCkBAIC0yMSw3ICsyMSw3IEBACiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIGZyb20gZmxh
c2sgaW1wb3J0IGFib3J0LCBqc29uaWZ5Ci1mcm9tIHJlc3VsdHNkYnB5LmNvbnRyb2xsZXIuY29t
bWl0X2NvbnRyb2xsZXIgaW1wb3J0IHV1aWRfcmFuZ2VfZm9yX3F1ZXJ5LCBIYXNDb21taXRDb250
ZXh0Citmcm9tIHJlc3VsdHNkYnB5LmNvbnRyb2xsZXIuY29tbWl0X2NvbnRyb2xsZXIgaW1wb3J0
IGNvbW1pdF9vcl90aW1lc3RhbXBfZm9yX3V1aWQsIHV1aWRfcmFuZ2VfZm9yX3F1ZXJ5LCBIYXND
b21taXRDb250ZXh0CiBmcm9tIHJlc3VsdHNkYnB5LmNvbnRyb2xsZXIuY29uZmlndXJhdGlvbiBp
bXBvcnQgQ29uZmlndXJhdGlvbgogZnJvbSByZXN1bHRzZGJweS5jb250cm9sbGVyLmNvbmZpZ3Vy
YXRpb25fY29udHJvbGxlciBpbXBvcnQgY29uZmlndXJhdGlvbl9mb3JfcXVlcnkKIGZyb20gcmVz
dWx0c2RicHkuY29udHJvbGxlci5zdWl0ZV9jb250cm9sbGVyIGltcG9ydCB0aW1lX3JhbmdlX2Zv
cl9xdWVyeQpAQCAtMTAyLDMgKzEwMiwxMzYgQEAgY2xhc3MgVGVzdENvbnRyb2xsZXIoSGFzQ29t
bWl0Q29udGV4dCk6CiAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHM9c29ydGVkKHJlc3VsdHMs
IGtleT1zb3J0X2Z1bmN0aW9uKSwKICAgICAgICAgICAgICAgICApKQogICAgICAgICAgICAgcmV0
dXJuIGpzb25pZnkocmVzcG9uc2UpCisKKyAgICBkZWYgY2FsY3VsYXRlX3Jlc3VsdHMoc2VsZiwg
dGVzdF9yZXN1bHQsIGZvY3VzX3BvaW50PU5vbmUpOgorICAgICAgICBpZiBmb2N1c19wb2ludCBp
cyBOb25lOgorICAgICAgICAgICAgZm9jdXNfcG9pbnQgPSBsZW4odGVzdF9yZXN1bHRbJ3Jlc3Vs
dHMnXSkgLSAxCisgICAgICAgIGN1cnJlbnRfcmVzdWx0ID0ge30KKworICAgICAgICAjIENhbGN1
bGF0ZSByZXN1bHRzCisgICAgICAgIG1heF93ZWlnaHQgPSBtYXgobGVuKHRlc3RfcmVzdWx0Wydy
ZXN1bHRzJ10pIC0gZm9jdXNfcG9pbnQsIGZvY3VzX3BvaW50KQorICAgICAgICB3ZWlnaHQgPSBt
YXhfd2VpZ2h0IC0gZm9jdXNfcG9pbnQKKyAgICAgICAgYmFzZSA9IDAKKworICAgICAgICBmb3Ig
aSBpbiByYW5nZSgwLCBsZW4odGVzdF9yZXN1bHRbJ3Jlc3VsdHMnXSkpOgorICAgICAgICAgICAg
aWYgdGVzdF9yZXN1bHRbJ3Jlc3VsdHMnXVtpXVsnYWN0dWFsJ10gbm90IGluIGN1cnJlbnRfcmVz
dWx0OgorICAgICAgICAgICAgICAgIGN1cnJlbnRfcmVzdWx0W3Rlc3RfcmVzdWx0WydyZXN1bHRz
J11baV1bJ2FjdHVhbCddXSA9IDAKKyAgICAgICAgICAgIGN1cnJlbnRfcmVzdWx0W3Rlc3RfcmVz
dWx0WydyZXN1bHRzJ11baV1bJ2FjdHVhbCddXSArPSB3ZWlnaHQKKyAgICAgICAgICAgIGJhc2Ug
Kz0gd2VpZ2h0CisKKyAgICAgICAgICAgIGlmIGkgPCBmb2N1c19wb2ludDoKKyAgICAgICAgICAg
ICAgICB3ZWlnaHQgKz0gMQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICB3ZWln
aHQgLT0gMQorCisgICAgICAgIGZvciByZXN1bHRfdHlwZSBpbiBjdXJyZW50X3Jlc3VsdDoKKyAg
ICAgICAgICAgIGlmIGN1cnJlbnRfcmVzdWx0W3Jlc3VsdF90eXBlXSAhPSAwOgorICAgICAgICAg
ICAgICAgIGN1cnJlbnRfcmVzdWx0W3Jlc3VsdF90eXBlXSA9IGN1cnJlbnRfcmVzdWx0W3Jlc3Vs
dF90eXBlXSAvIGJhc2UgKiAxMDAKKworICAgICAgICByZXR1cm4gY3VycmVudF9yZXN1bHQKKwor
ICAgIGRlZiBjYWxjdWxhdGVfb3ZlcmFsbF9yZXN1bHRzKHNlbGYsIHJlc3VsdHMpOgorICAgICAg
ICB2YWx1ZXMgPSB7fQorICAgICAgICBmb3IgcmVzdWx0IGluIHJlc3VsdHM6CisgICAgICAgICAg
ICBmb3IgbmFtZSwgdmFsdWUgaW4gcmVzdWx0WydyZXN1bHRzJ10uaXRlbXMoKToKKyAgICAgICAg
ICAgICAgICBpZiBub3QgdmFsdWU6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAg
ICAgICAgICAgICAgaWYgbmFtZSBub3QgaW4gdmFsdWVzOgorICAgICAgICAgICAgICAgICAgICB2
YWx1ZXNbbmFtZV0gPSAwCisgICAgICAgICAgICAgICAgdmFsdWVzW25hbWVdICs9IHZhbHVlCisK
KyAgICAgICAgcmV0dXJuIHtuYW1lOiB2YWx1ZSAvIGxlbihyZXN1bHRzKSBmb3IgbmFtZSwgdmFs
dWUgaW4gc29ydGVkKHZhbHVlcy5pdGVtcygpKX0KKworICAgIEBxdWVyeV9hc19rd2FyZ3MoKQor
ICAgIEBjb21taXRfb3JfdGltZXN0YW1wX2Zvcl91dWlkKCkKKyAgICBAbGltaXRfZm9yX3F1ZXJ5
KERFRkFVTFRfTElNSVQpCisgICAgQGNvbmZpZ3VyYXRpb25fZm9yX3F1ZXJ5KCkKKyAgICBkZWYg
ZmluZF90ZXN0X2NvbmZpZGVuY2UoCisgICAgICAgIHNlbGYsIHN1aXRlPU5vbmUsIHRlc3Q9Tm9u
ZSwKKyAgICAgICAgY29uZmlndXJhdGlvbnM9Tm9uZSwgcmVjZW50PU5vbmUsCisgICAgICAgIGJy
YW5jaD1icmFuY2gsIGNvbW1pdF9vcl90aW1lc3RhbXA9dXVpZCwKKyAgICAgICAgbGltaXQ9Tm9u
ZSwgKiprd2FyZ3MKKyAgICApOgorICAgICAgICBBc3NlcnRSZXF1ZXN0LmlzX3R5cGUoWydHRVQn
XSkKKyAgICAgICAgQXNzZXJ0UmVxdWVzdC5xdWVyeV9rd2FyZ3NfZW1wdHkoKiprd2FyZ3MpCisK
KyAgICAgICAgcmVjZW50ID0gYm9vbGVhbl9xdWVyeSgqcmVjZW50KVswXSBpZiByZWNlbnQgZWxz
ZSBUcnVlCisKKyAgICAgICAgaWYgbm90IHN1aXRlOgorICAgICAgICAgICAgYWJvcnQoNDAwLCBk
ZXNjcmlwdGlvbj0nTm8gc3VpdGUgc3BlY2lmaWVkJykKKyAgICAgICAgaWYgbm90IHRlc3Q6Cisg
ICAgICAgICAgICBhYm9ydCg0MDAsIGRlc2NyaXB0aW9uPSdObyB0ZXN0IHNwZWNpZmllZCcpCisK
KyAgICAgICAgd2l0aCBzZWxmLnRlc3RfY29udGV4dDoKKyAgICAgICAgICAgIHF1ZXJ5X2RpY3Qg
PSBkaWN0KAorICAgICAgICAgICAgICAgIHN1aXRlPXN1aXRlLCB0ZXN0PXRlc3QsCisgICAgICAg
ICAgICAgICAgY29uZmlndXJhdGlvbnM9Y29uZmlndXJhdGlvbnMsIHJlY2VudD1yZWNlbnQsCisg
ICAgICAgICAgICAgICAgYnJhbmNoPWJyYW5jaFswXSwgY29tbWl0X29yX3RpbWVzdGFtcD1jb21t
aXRfb3JfdGltZXN0YW1wLAorICAgICAgICAgICAgICAgIGxpbWl0PWxpbWl0LAorICAgICAgICAg
ICAgKQorCisgICAgICAgICAgICBmaW5kX2Z1bmN0aW9uID0gc2VsZi50ZXN0X2NvbnRleHQuZmlu
ZF9ieV9jb21taXQKKworICAgICAgICAgICAgb2xkZXJfZGF0YSA9IFtdCisgICAgICAgICAgICBm
b3IgY29uZmlnLCByZXN1bHRzIGluIGZpbmRfZnVuY3Rpb24oZW5kPWNvbW1pdF9vcl90aW1lc3Rh
bXAsICoqcXVlcnlfZGljdCkuaXRlbXMoKToKKyAgICAgICAgICAgICAgICBvbGRlcl9kYXRhID0g
ZGljdCgKKyAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbj1Db25maWd1cmF0aW9uLkVu
Y29kZXIoKS5kZWZhdWx0KGNvbmZpZyksCisgICAgICAgICAgICAgICAgICAgIHJlc3VsdHM9c29y
dGVkKHJlc3VsdHMsIGtleT1zb3J0X2Z1bmN0aW9uKSwKKyAgICAgICAgICAgICAgICApCisKKyAg
ICAgICAgICAgIG5ld2VyX2RhdGEgPSBbXQorICAgICAgICAgICAgZm9yIGNvbmZpZywgcmVzdWx0
cyBpbiBmaW5kX2Z1bmN0aW9uKGJlZ2luPWNvbW1pdF9vcl90aW1lc3RhbXAsICoqcXVlcnlfZGlj
dCkuaXRlbXMoKToKKyAgICAgICAgICAgICAgICBuZXdlcl9kYXRhID0gZGljdCgKKyAgICAgICAg
ICAgICAgICAgICAgY29uZmlndXJhdGlvbj1Db25maWd1cmF0aW9uLkVuY29kZXIoKS5kZWZhdWx0
KGNvbmZpZyksCisgICAgICAgICAgICAgICAgICAgIHJlc3VsdHM9c29ydGVkKHJlc3VsdHMsIGtl
eT1zb3J0X2Z1bmN0aW9uKSwKKyAgICAgICAgICAgICAgICApCisKKyAgICAgICAgICAgICMgTWFr
ZSBzdXJlIHVwcGVyIGFuZCBsb3dlciBkYXRhIGNvbnRhaW4gdGhlIHNhbWUKKyAgICAgICAgICAg
ICMgbnVtYmVyIG9mIGNvbW1pdHMKKyAgICAgICAgICAgIGZvciByZXN1bHQgaW4gb2xkZXJfZGF0
YToKKyAgICAgICAgICAgICAgICByZXN1bHRbJ3Jlc3VsdHMnXSA9IHJlc3VsdFsncmVzdWx0cydd
WzptaW4obGVuKG9sZGVyX2RhdGFbMF1bJ3Jlc3VsdHMnXSksIGxlbihuZXdlcl9kYXRhWzBdWydy
ZXN1bHRzJ10pKV0KKyAgICAgICAgICAgIGZvciByZXN1bHQgaW4gbmV3ZXJfZGF0YToKKyAgICAg
ICAgICAgICAgICByZXN1bHRbJ3Jlc3VsdHMnXSA9IHJlc3VsdFsncmVzdWx0cyddWzptaW4obGVu
KG9sZGVyX2RhdGFbMF1bJ3Jlc3VsdHMnXSksIGxlbihuZXdlcl9kYXRhWzBdWydyZXN1bHRzJ10p
KV0KKworICAgICAgICAgICAgIyBDb21iaW5lIGxvd2VyICYgdXBwZXIgZGF0YSB3aGlsZSBkdXBs
aWNhdGluZyB0aGUKKyAgICAgICAgICAgICMgdGhlIHBpY2tlZCByZXZpc2lvbgorICAgICAgICAg
ICAgZGF0YSA9IFtdCisgICAgICAgICAgICBmb3IgbG93ZXJfdGVzdF9yZXN1bHQgaW4gb2xkZXJf
ZGF0YToKKyAgICAgICAgICAgICAgICBmb3IgdXBwZXJfdGVzdF9yZXN1bHQgaW4gbmV3ZXJfZGF0
YToKKyAgICAgICAgICAgICAgICAgICAgaWYgbG93ZXJfdGVzdF9yZXN1bHRbJ2NvbmZpZ3VyYXRp
b24nXSA9PSB1cHBlcl90ZXN0X3Jlc3VsdFsnY29uZmlndXJhdGlvbiddOgorICAgICAgICAgICAg
ICAgICAgICAgICAgZGF0YS5hcHBlbmQoeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICdj
b25maWd1cmF0aW9uJzogbG93ZXJfdGVzdF9yZXN1bHRbJ2NvbmZpZ3VyYXRpb24nXSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAncmVzdWx0cyc6IGxvd2VyX3Rlc3RfcmVzdWx0WydyZXN1
bHRzJ10gKyB1cHBlcl90ZXN0X3Jlc3VsdFsncmVzdWx0cyddCisgICAgICAgICAgICAgICAgICAg
ICAgICB9KQorCisgICAgICAgICAgICByZXN1bHRzID0gW10KKworICAgICAgICAgICAgIyBNYWtl
IHN1cmUgd2UgcmVjaWV2ZWQgZGF0YQorICAgICAgICAgICAgaWYgbGVuKGRhdGEpID09IDA6Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIGpzb25pZnkoe30pCisKKyAgICAgICAgICAgICMgU3RhcnQg
a2VlcGluZyB0cmFjayBvZiByZXN1bHQgZGF0YQorICAgICAgICAgICAgZm9yIHRlc3RfcmVzdWx0
IGluIGRhdGE6CisgICAgICAgICAgICAgICAgY3VycmVudF9yZXN1bHQgPSB7CisgICAgICAgICAg
ICAgICAgICAgICdjb25maWd1cmF0aW9uJzogdGVzdF9yZXN1bHRbJ2NvbmZpZ3VyYXRpb24nXSwK
KyAgICAgICAgICAgICAgICAgICAgJ3Jlc3VsdHMnOiB7fQorICAgICAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgICAgICMgTWFrZSBzdXJlIHRlc3RzIGhhdmUgYmVlbiBydW4gYW5kIGNvbGxl
Y3Rpb24KKyAgICAgICAgICAgICAgICAjIGlzIG5vdCBlbXB0eQorICAgICAgICAgICAgICAgIGlm
IGxlbih0ZXN0X3Jlc3VsdFsncmVzdWx0cyddKSA9PSAwOgorICAgICAgICAgICAgICAgICAgICBi
cmVhaworCisgICAgICAgICAgICAgICAgIyBDYWxjdWxhdGUgdGhlIHRvdGFsIHBvaW50cyB1c2Vk
IGZvciBjYWxjdWxhdGluZworICAgICAgICAgICAgICAgICMgdGhlIHBlcmNlbnRhZ2UgZm9yIGVh
Y2ggdHlwZSBvZiByZXN1bHQKKyAgICAgICAgICAgICAgICBjdXJyZW50X3Jlc3VsdFsncmVzdWx0
cyddID0gc2VsZi5jYWxjdWxhdGVfcmVzdWx0cyh0ZXN0X3Jlc3VsdCwgKGxlbih0ZXN0X3Jlc3Vs
dFsncmVzdWx0cyddWzBdKSAtIDEpIC8vIDIpCisKKyAgICAgICAgICAgICAgICAjIEFkZCB0aGUg
Y29uZmlndXJhdGlvbiByZXN1bHRzIHRvIG1hc3RlciBjb2xsZWN0aW9uCisgICAgICAgICAgICAg
ICAgcmVzdWx0cy5hcHBlbmQoY3VycmVudF9yZXN1bHQpCisKKyAgICAgICAgICAgICMgQ2FsY3Vs
YXRlIHRoZSBvdmVyYWxsLCBjb21iaW5lZCB2YWx1ZSBvZgorICAgICAgICAgICAgIyBhbGwgcmVz
dWx0cyBmcm9tIGFsbCBjb25maWd1cmF0aW9ucyBhbmQgcmVwb3J0CisgICAgICAgICAgICByZXN1
bHRzID0gc2VsZi5jYWxjdWxhdGVfb3ZlcmFsbF9yZXN1bHRzKHJlc3VsdHMpCisKKyAgICAgICAg
ICAgICMgUmVwb3J0IHRoZSByZXN1bHRzIGZvciB0aGUgdGVzdAorICAgICAgICAgICAgcmV0dXJu
IGpzb25pZnkocmVzdWx0cykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431129</attachid>
            <date>2021-06-10 14:18:01 -0700</date>
            <delta_ts>2021-06-10 14:27:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226894-20210610171759.patch</filename>
            <type>text/plain</type>
            <size>10543</size>
            <attacher name="Chris Gambrell">cgambrell</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI3ODczMikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDIzIEBACisyMDIxLTA2LTEwICBDaHJpcyBHYW1icmVsbCAgPGNnYW1icmVsbEBhcHBsZS5j
b20+CisKKyAgICAgICAgW3Jlc3VsdHNkYnB5XSBBZGQgY29uZmlkZW5jZS1jaGVja2luZyBmdW5j
dGlvbmFsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMjY4OTQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc5MTU1MTgxPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMv
cmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxlci9hcGlfcm91dGVzLnB5OgorICAgICAg
ICAoQVBJUm91dGVzLl9faW5pdF9fKToKKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy9yZXN1
bHRzZGJweS9yZXN1bHRzZGJweS9jb250cm9sbGVyL2NvbW1pdF9jb250cm9sbGVyLnB5OgorICAg
ICAgICAoY29tbWl0X29yX3RpbWVzdGFtcF9mb3JfdXVpZCk6CisgICAgICAgIChjb21taXRfb3Jf
dGltZXN0YW1wX2Zvcl91dWlkLmRlY29yYXRvcik6CisgICAgICAgIChjb21taXRfb3JfdGltZXN0
YW1wX2Zvcl91dWlkLmRlY29yYXRvci5yZWFsX21ldGhvZCk6CisgICAgICAgICogU2NyaXB0cy9s
aWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxlci90ZXN0X2NvbnRyb2xs
ZXIucHk6CisgICAgICAgIChUZXN0Q29udHJvbGxlcik6CisgICAgICAgIChUZXN0Q29udHJvbGxl
ci5jYWxjdWxhdGVfcmVzdWx0cyk6CisgICAgICAgIChUZXN0Q29udHJvbGxlci5jYWxjdWxhdGVf
b3ZlcmFsbF9yZXN1bHRzKToKKyAgICAgICAgKFRlc3RDb250cm9sbGVyLmZpbmRfdGVzdF9jb25m
aWRlbmNlKToKKwogMjAyMS0wNi0xMCAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFyZEBhcHBsZS5j
b20+CiAKICAgICAgICAgW3dlYmtpdGNvcmVweV0gNnggcGVyZm9ybWFuY2UgaW1wcm92ZW1lbnQg
aW4gTWVtb2l6ZWQKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jl
c3VsdHNkYnB5L2NvbnRyb2xsZXIvYXBpX3JvdXRlcy5weQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9T
Y3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9jb250cm9sbGVyL2FwaV9y
b3V0ZXMucHkJKHJldmlzaW9uIDI3ODcyNCkKKysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jl
c3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIvYXBpX3JvdXRlcy5weQkod29ya2luZyBj
b3B5KQpAQCAtNDMsNiArNDMsNyBAQCBjbGFzcyBBUElSb3V0ZXMoQXV0aGVkQmx1ZXByaW50KToK
IAogICAgICAgICBzZWxmLnN1aXRlX2NvbnRyb2xsZXIgPSBTdWl0ZUNvbnRyb2xsZXIoc3VpdGVf
Y29udGV4dD1tb2RlbC5zdWl0ZV9jb250ZXh0KQogICAgICAgICBzZWxmLnRlc3RfY29udHJvbGxl
ciA9IFRlc3RDb250cm9sbGVyKHRlc3RfY29udGV4dD1tb2RlbC50ZXN0X2NvbnRleHQpCisgICAg
ICAgIHNlbGYuY29uZmlkZW5jZV9jb250cm9sbGVyID0gVGVzdENvbnRyb2xsZXIodGVzdF9jb250
ZXh0PW1vZGVsLnRlc3RfY29udGV4dCkKICAgICAgICAgc2VsZi5mYWlsdXJlX2NvbnRyb2xsZXIg
PSBGYWlsdXJlQ29udHJvbGxlcihmYWlsdXJlX2NvbnRleHQ9bW9kZWwuZmFpbHVyZV9jb250ZXh0
KQogCiAgICAgICAgIHNlbGYuY2lfY29udHJvbGxlciA9IENJQ29udHJvbGxlcihjaV9jb250ZXh0
PW1vZGVsLmNpX2NvbnRleHQsIHVwbG9hZF9jb250ZXh0PW1vZGVsLnVwbG9hZF9jb250ZXh0KQpA
QCAtNzEsNiArNzIsOCBAQCBjbGFzcyBBUElSb3V0ZXMoQXV0aGVkQmx1ZXByaW50KToKICAgICAg
ICAgc2VsZi5hZGRfdXJsX3J1bGUoJy9yZXN1bHRzLzxwYXRoOnN1aXRlPicsICdzdWl0ZS1yZXN1
bHRzJywgc2VsZi5zdWl0ZV9jb250cm9sbGVyLmZpbmRfcnVuX3Jlc3VsdHMsIG1ldGhvZHM9KCdH
RVQnLCkpCiAgICAgICAgIHNlbGYuYWRkX3VybF9ydWxlKCcvcmVzdWx0cy88cGF0aDpzdWl0ZT4v
PHBhdGg6dGVzdD4nLCAndGVzdC1yZXN1bHRzJywgc2VsZi50ZXN0X2NvbnRyb2xsZXIuZmluZF90
ZXN0X3Jlc3VsdCwgbWV0aG9kcz0oJ0dFVCcsKSkKIAorICAgICAgICBzZWxmLmFkZF91cmxfcnVs
ZSgnL2NvbmZpZGVuY2UvPHBhdGg6c3VpdGU+LzxwYXRoOnRlc3Q+JywgJ2NvbmZpZGVuY2UnLCBz
ZWxmLnRlc3RfY29udHJvbGxlci5maW5kX3Rlc3RfY29uZmlkZW5jZSwgbWV0aG9kcz0oJ0dFVCcs
KSkKKwogICAgICAgICBzZWxmLmFkZF91cmxfcnVsZSgnL2ZhaWx1cmVzLzxwYXRoOnN1aXRlPics
ICdzdWl0ZS1mYWlsdXJlcycsIHNlbGYuZmFpbHVyZV9jb250cm9sbGVyLmZhaWx1cmVzLCBtZXRo
b2RzPSgnR0VUJywpKQogCiAgICAgICAgIHNlbGYuYWRkX3VybF9ydWxlKCcvdXJscy9xdWV1ZScs
ICdxdWV1ZS11cmxzJywgc2VsZi5jaV9jb250cm9sbGVyLnVybHNfZm9yX3F1ZXVlX2VuZHBvaW50
LCBtZXRob2RzPSgnR0VUJywpKQpJbmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0
c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxlci9jb21taXRfY29udHJvbGxlci5weQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9j
b250cm9sbGVyL2NvbW1pdF9jb250cm9sbGVyLnB5CShyZXZpc2lvbiAyNzg3MjQpCisrKyBUb29s
cy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9jb250cm9sbGVyL2Nv
bW1pdF9jb250cm9sbGVyLnB5CSh3b3JraW5nIGNvcHkpCkBAIC05Miw2ICs5MiwyMyBAQCBkZWYg
dXVpZF9yYW5nZV9mb3JfY29tbWl0X3JhbmdlX3F1ZXJ5KCk6CiAgICAgcmV0dXJuIGRlY29yYXRv
cgogCiAKK2RlZiBjb21taXRfb3JfdGltZXN0YW1wX2Zvcl91dWlkKCk6CisgICAgZGVmIGRlY29y
YXRvcihtZXRob2QpOgorICAgICAgICBkZWYgcmVhbF9tZXRob2Qob2JqLCByZXBvc2l0b3J5X2lk
PU5vbmUsIGJyYW5jaD1Ob25lLCBpZD1Ob25lLCByZWY9Tm9uZSwgdXVpZD1Ob25lLCB0aW1lc3Rh
bXA9Tm9uZSwgKiprd2FyZ3MpOgorICAgICAgICAgICAgIyBXZSdyZSBtYWtpbmcgYW4gYXNzdW1w
dGlvbiB0aGF0IHRoZSBjbGFzcyB1c2luZyB0aGlzIGRlY29yYXRvciBhY3R1YWxseSBoYXMgYSBj
b21taXRfY29udGV4dCwgaWYgaXQgZG9lcyBub3QsCisgICAgICAgICAgICAjIHRoaXMgZGVjb3Jh
dG9yIHdpbGwgZmFpbCBzcGVjdGFjdWxhcmx5CisgICAgICAgICAgICB3aXRoIG9iai5jb21taXRf
Y29udGV4dDoKKyAgICAgICAgICAgICAgICBjb21taXRfb3JfdGltZXN0YW1wID0gX2ZpbmRfY29t
cGFyaXNvbigKKyAgICAgICAgICAgICAgICAgICAgb2JqLmNvbW1pdF9jb250ZXh0LCByZXBvc2l0
b3J5X2lkPXJlcG9zaXRvcnlfaWQsIGJyYW5jaD1icmFuY2gsCisgICAgICAgICAgICAgICAgICAg
IHJlZj1yZWYgb3IgaWQsCisgICAgICAgICAgICAgICAgICAgIHV1aWQ9dXVpZCwgdGltZXN0YW1w
PXRpbWVzdGFtcCwgcHJpb3JpdHk9bWF4LAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAg
IHJldHVybiBtZXRob2Qob2JqLCBicmFuY2g9YnJhbmNoLCBjb21taXRfb3JfdGltZXN0YW1wPWNv
bW1pdF9vcl90aW1lc3RhbXAsICoqa3dhcmdzKQorICAgICAgICByZWFsX21ldGhvZC5fX25hbWVf
XyA9IG1ldGhvZC5fX25hbWVfXworICAgICAgICByZXR1cm4gcmVhbF9tZXRob2QKKyAgICByZXR1
cm4gZGVjb3JhdG9yCisKKwogZGVmIHV1aWRfcmFuZ2VfZm9yX3F1ZXJ5KCk6CiAgICAgZGVmIGRl
Y29yYXRvcihtZXRob2QpOgogICAgICAgICBAdXVpZF9yYW5nZV9mb3JfY29tbWl0X3JhbmdlX3F1
ZXJ5KCkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNk
YnB5L2NvbnRyb2xsZXIvdGVzdF9jb250cm9sbGVyLnB5Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Nj
cmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIvdGVzdF9j
b250cm9sbGVyLnB5CShyZXZpc2lvbiAyNzg3MjQpCisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmll
cy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9jb250cm9sbGVyL3Rlc3RfY29udHJvbGxlci5weQko
d29ya2luZyBjb3B5KQpAQCAtMjEsNyArMjEsNyBAQAogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiBmcm9tIGZs
YXNrIGltcG9ydCBhYm9ydCwganNvbmlmeQotZnJvbSByZXN1bHRzZGJweS5jb250cm9sbGVyLmNv
bW1pdF9jb250cm9sbGVyIGltcG9ydCB1dWlkX3JhbmdlX2Zvcl9xdWVyeSwgSGFzQ29tbWl0Q29u
dGV4dAorZnJvbSByZXN1bHRzZGJweS5jb250cm9sbGVyLmNvbW1pdF9jb250cm9sbGVyIGltcG9y
dCBjb21taXRfb3JfdGltZXN0YW1wX2Zvcl91dWlkLCB1dWlkX3JhbmdlX2Zvcl9xdWVyeSwgSGFz
Q29tbWl0Q29udGV4dAogZnJvbSByZXN1bHRzZGJweS5jb250cm9sbGVyLmNvbmZpZ3VyYXRpb24g
aW1wb3J0IENvbmZpZ3VyYXRpb24KIGZyb20gcmVzdWx0c2RicHkuY29udHJvbGxlci5jb25maWd1
cmF0aW9uX2NvbnRyb2xsZXIgaW1wb3J0IGNvbmZpZ3VyYXRpb25fZm9yX3F1ZXJ5CiBmcm9tIHJl
c3VsdHNkYnB5LmNvbnRyb2xsZXIuc3VpdGVfY29udHJvbGxlciBpbXBvcnQgdGltZV9yYW5nZV9m
b3JfcXVlcnkKQEAgLTEwMiwzICsxMDIsMTM2IEBAIGNsYXNzIFRlc3RDb250cm9sbGVyKEhhc0Nv
bW1pdENvbnRleHQpOgogICAgICAgICAgICAgICAgICAgICByZXN1bHRzPXNvcnRlZChyZXN1bHRz
LCBrZXk9c29ydF9mdW5jdGlvbiksCiAgICAgICAgICAgICAgICAgKSkKICAgICAgICAgICAgIHJl
dHVybiBqc29uaWZ5KHJlc3BvbnNlKQorCisgICAgZGVmIGNhbGN1bGF0ZV9yZXN1bHRzKHNlbGYs
IHRlc3RfcmVzdWx0LCBmb2N1c19wb2ludD1Ob25lKToKKyAgICAgICAgaWYgZm9jdXNfcG9pbnQg
aXMgTm9uZToKKyAgICAgICAgICAgIGZvY3VzX3BvaW50ID0gbGVuKHRlc3RfcmVzdWx0WydyZXN1
bHRzJ10pIC0gMQorICAgICAgICBjdXJyZW50X3Jlc3VsdCA9IHt9CisKKyAgICAgICAgIyBDYWxj
dWxhdGUgcmVzdWx0cworICAgICAgICBtYXhfd2VpZ2h0ID0gbWF4KGxlbih0ZXN0X3Jlc3VsdFsn
cmVzdWx0cyddKSAtIGZvY3VzX3BvaW50LCBmb2N1c19wb2ludCkKKyAgICAgICAgd2VpZ2h0ID0g
bWF4X3dlaWdodCAtIGZvY3VzX3BvaW50CisgICAgICAgIGJhc2UgPSAwCisKKyAgICAgICAgZm9y
IGkgaW4gcmFuZ2UoMCwgbGVuKHRlc3RfcmVzdWx0WydyZXN1bHRzJ10pKToKKyAgICAgICAgICAg
IGlmIHRlc3RfcmVzdWx0WydyZXN1bHRzJ11baV1bJ2FjdHVhbCddIG5vdCBpbiBjdXJyZW50X3Jl
c3VsdDoKKyAgICAgICAgICAgICAgICBjdXJyZW50X3Jlc3VsdFt0ZXN0X3Jlc3VsdFsncmVzdWx0
cyddW2ldWydhY3R1YWwnXV0gPSAwCisgICAgICAgICAgICBjdXJyZW50X3Jlc3VsdFt0ZXN0X3Jl
c3VsdFsncmVzdWx0cyddW2ldWydhY3R1YWwnXV0gKz0gd2VpZ2h0CisgICAgICAgICAgICBiYXNl
ICs9IHdlaWdodAorCisgICAgICAgICAgICBpZiBpIDwgZm9jdXNfcG9pbnQ6CisgICAgICAgICAg
ICAgICAgd2VpZ2h0ICs9IDEKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgd2Vp
Z2h0IC09IDEKKworICAgICAgICBmb3IgcmVzdWx0X3R5cGUgaW4gY3VycmVudF9yZXN1bHQ6Cisg
ICAgICAgICAgICBpZiBjdXJyZW50X3Jlc3VsdFtyZXN1bHRfdHlwZV0gIT0gMDoKKyAgICAgICAg
ICAgICAgICBjdXJyZW50X3Jlc3VsdFtyZXN1bHRfdHlwZV0gPSBjdXJyZW50X3Jlc3VsdFtyZXN1
bHRfdHlwZV0gLyBiYXNlICogMTAwCisKKyAgICAgICAgcmV0dXJuIGN1cnJlbnRfcmVzdWx0CisK
KyAgICBkZWYgY2FsY3VsYXRlX292ZXJhbGxfcmVzdWx0cyhzZWxmLCByZXN1bHRzKToKKyAgICAg
ICAgdmFsdWVzID0ge30KKyAgICAgICAgZm9yIHJlc3VsdCBpbiByZXN1bHRzOgorICAgICAgICAg
ICAgZm9yIG5hbWUsIHZhbHVlIGluIHJlc3VsdFsncmVzdWx0cyddLml0ZW1zKCk6CisgICAgICAg
ICAgICAgICAgaWYgbm90IHZhbHVlOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAg
ICAgICAgICAgICAgIGlmIG5hbWUgbm90IGluIHZhbHVlczoKKyAgICAgICAgICAgICAgICAgICAg
dmFsdWVzW25hbWVdID0gMAorICAgICAgICAgICAgICAgIHZhbHVlc1tuYW1lXSArPSB2YWx1ZQor
CisgICAgICAgIHJldHVybiB7bmFtZTogdmFsdWUgLyBsZW4ocmVzdWx0cykgZm9yIG5hbWUsIHZh
bHVlIGluIHNvcnRlZCh2YWx1ZXMuaXRlbXMoKSl9CisKKyAgICBAcXVlcnlfYXNfa3dhcmdzKCkK
KyAgICBAY29tbWl0X29yX3RpbWVzdGFtcF9mb3JfdXVpZCgpCisgICAgQGxpbWl0X2Zvcl9xdWVy
eShERUZBVUxUX0xJTUlUKQorICAgIEBjb25maWd1cmF0aW9uX2Zvcl9xdWVyeSgpCisgICAgZGVm
IGZpbmRfdGVzdF9jb25maWRlbmNlKAorICAgICAgICBzZWxmLCBzdWl0ZT1Ob25lLCB0ZXN0PU5v
bmUsCisgICAgICAgIGNvbmZpZ3VyYXRpb25zPU5vbmUsIHJlY2VudD1Ob25lLAorICAgICAgICBi
cmFuY2g9YnJhbmNoLCBjb21taXRfb3JfdGltZXN0YW1wPXV1aWQsCisgICAgICAgIGxpbWl0PU5v
bmUsICoqa3dhcmdzCisgICAgKToKKyAgICAgICAgQXNzZXJ0UmVxdWVzdC5pc190eXBlKFsnR0VU
J10pCisgICAgICAgIEFzc2VydFJlcXVlc3QucXVlcnlfa3dhcmdzX2VtcHR5KCoqa3dhcmdzKQor
CisgICAgICAgIHJlY2VudCA9IGJvb2xlYW5fcXVlcnkoKnJlY2VudClbMF0gaWYgcmVjZW50IGVs
c2UgVHJ1ZQorCisgICAgICAgIGlmIG5vdCBzdWl0ZToKKyAgICAgICAgICAgIGFib3J0KDQwMCwg
ZGVzY3JpcHRpb249J05vIHN1aXRlIHNwZWNpZmllZCcpCisgICAgICAgIGlmIG5vdCB0ZXN0Ogor
ICAgICAgICAgICAgYWJvcnQoNDAwLCBkZXNjcmlwdGlvbj0nTm8gdGVzdCBzcGVjaWZpZWQnKQor
CisgICAgICAgIHdpdGggc2VsZi50ZXN0X2NvbnRleHQ6CisgICAgICAgICAgICBxdWVyeV9kaWN0
ID0gZGljdCgKKyAgICAgICAgICAgICAgICBzdWl0ZT1zdWl0ZSwgdGVzdD10ZXN0LAorICAgICAg
ICAgICAgICAgIGNvbmZpZ3VyYXRpb25zPWNvbmZpZ3VyYXRpb25zLCByZWNlbnQ9cmVjZW50LAor
ICAgICAgICAgICAgICAgIGJyYW5jaD1icmFuY2hbMF0sIGNvbW1pdF9vcl90aW1lc3RhbXA9Y29t
bWl0X29yX3RpbWVzdGFtcCwKKyAgICAgICAgICAgICAgICBsaW1pdD1saW1pdCwKKyAgICAgICAg
ICAgICkKKworICAgICAgICAgICAgZmluZF9mdW5jdGlvbiA9IHNlbGYudGVzdF9jb250ZXh0LmZp
bmRfYnlfY29tbWl0CisKKyAgICAgICAgICAgIG9sZGVyX2RhdGEgPSBbXQorICAgICAgICAgICAg
Zm9yIGNvbmZpZywgcmVzdWx0cyBpbiBmaW5kX2Z1bmN0aW9uKGVuZD1jb21taXRfb3JfdGltZXN0
YW1wLCBsaW1pdD1saW1pdCAvLyAyLCAqKnF1ZXJ5X2RpY3QpLml0ZW1zKCk6CisgICAgICAgICAg
ICAgICAgb2xkZXJfZGF0YSA9IGRpY3QoCisgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRp
b249Q29uZmlndXJhdGlvbi5FbmNvZGVyKCkuZGVmYXVsdChjb25maWcpLAorICAgICAgICAgICAg
ICAgICAgICByZXN1bHRzPXNvcnRlZChyZXN1bHRzLCBrZXk9c29ydF9mdW5jdGlvbiksCisgICAg
ICAgICAgICAgICAgKQorCisgICAgICAgICAgICBuZXdlcl9kYXRhID0gW10KKyAgICAgICAgICAg
IGZvciBjb25maWcsIHJlc3VsdHMgaW4gZmluZF9mdW5jdGlvbihiZWdpbj1jb21taXRfb3JfdGlt
ZXN0YW1wLCBsaW1pdD1saW1pdCAvLyAyLCAqKnF1ZXJ5X2RpY3QpLml0ZW1zKCk6CisgICAgICAg
ICAgICAgICAgbmV3ZXJfZGF0YSA9IGRpY3QoCisgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3Vy
YXRpb249Q29uZmlndXJhdGlvbi5FbmNvZGVyKCkuZGVmYXVsdChjb25maWcpLAorICAgICAgICAg
ICAgICAgICAgICByZXN1bHRzPXNvcnRlZChyZXN1bHRzLCBrZXk9c29ydF9mdW5jdGlvbiksCisg
ICAgICAgICAgICAgICAgKQorCisgICAgICAgICAgICAjIE1ha2Ugc3VyZSB1cHBlciBhbmQgbG93
ZXIgZGF0YSBjb250YWluIHRoZSBzYW1lCisgICAgICAgICAgICAjIG51bWJlciBvZiBjb21taXRz
CisgICAgICAgICAgICBmb3IgcmVzdWx0IGluIG9sZGVyX2RhdGE6CisgICAgICAgICAgICAgICAg
cmVzdWx0WydyZXN1bHRzJ10gPSByZXN1bHRbJ3Jlc3VsdHMnXVs6bWluKGxlbihvbGRlcl9kYXRh
WzBdWydyZXN1bHRzJ10pLCBsZW4obmV3ZXJfZGF0YVswXVsncmVzdWx0cyddKSldCisgICAgICAg
ICAgICBmb3IgcmVzdWx0IGluIG5ld2VyX2RhdGE6CisgICAgICAgICAgICAgICAgcmVzdWx0Wydy
ZXN1bHRzJ10gPSByZXN1bHRbJ3Jlc3VsdHMnXVs6bWluKGxlbihvbGRlcl9kYXRhWzBdWydyZXN1
bHRzJ10pLCBsZW4obmV3ZXJfZGF0YVswXVsncmVzdWx0cyddKSldCisKKyAgICAgICAgICAgICMg
Q29tYmluZSBsb3dlciAmIHVwcGVyIGRhdGEgd2hpbGUgZHVwbGljYXRpbmcgdGhlCisgICAgICAg
ICAgICAjIHRoZSBwaWNrZWQgcmV2aXNpb24KKyAgICAgICAgICAgIGRhdGEgPSBbXQorICAgICAg
ICAgICAgZm9yIGxvd2VyX3Rlc3RfcmVzdWx0IGluIG9sZGVyX2RhdGE6CisgICAgICAgICAgICAg
ICAgZm9yIHVwcGVyX3Rlc3RfcmVzdWx0IGluIG5ld2VyX2RhdGE6CisgICAgICAgICAgICAgICAg
ICAgIGlmIGxvd2VyX3Rlc3RfcmVzdWx0Wydjb25maWd1cmF0aW9uJ10gPT0gdXBwZXJfdGVzdF9y
ZXN1bHRbJ2NvbmZpZ3VyYXRpb24nXToKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEuYXBw
ZW5kKHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29uZmlndXJhdGlvbic6IGxvd2Vy
X3Rlc3RfcmVzdWx0Wydjb25maWd1cmF0aW9uJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ3Jlc3VsdHMnOiBsb3dlcl90ZXN0X3Jlc3VsdFsncmVzdWx0cyddICsgdXBwZXJfdGVzdF9y
ZXN1bHRbJ3Jlc3VsdHMnXQorICAgICAgICAgICAgICAgICAgICAgICAgfSkKKworICAgICAgICAg
ICAgcmVzdWx0cyA9IFtdCisKKyAgICAgICAgICAgICMgTWFrZSBzdXJlIHdlIHJlY2lldmVkIGRh
dGEKKyAgICAgICAgICAgIGlmIGxlbihkYXRhKSA9PSAwOgorICAgICAgICAgICAgICAgIHJldHVy
biBqc29uaWZ5KHt9KQorCisgICAgICAgICAgICAjIFN0YXJ0IGtlZXBpbmcgdHJhY2sgb2YgcmVz
dWx0IGRhdGEKKyAgICAgICAgICAgIGZvciB0ZXN0X3Jlc3VsdCBpbiBkYXRhOgorICAgICAgICAg
ICAgICAgIGN1cnJlbnRfcmVzdWx0ID0geworICAgICAgICAgICAgICAgICAgICAnY29uZmlndXJh
dGlvbic6IHRlc3RfcmVzdWx0Wydjb25maWd1cmF0aW9uJ10sCisgICAgICAgICAgICAgICAgICAg
ICdyZXN1bHRzJzoge30KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAjIE1h
a2Ugc3VyZSB0ZXN0cyBoYXZlIGJlZW4gcnVuIGFuZCBjb2xsZWN0aW9uCisgICAgICAgICAgICAg
ICAgIyBpcyBub3QgZW1wdHkKKyAgICAgICAgICAgICAgICBpZiBsZW4odGVzdF9yZXN1bHRbJ3Jl
c3VsdHMnXSkgPT0gMDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKworICAgICAgICAgICAg
ICAgICMgQ2FsY3VsYXRlIHRoZSB0b3RhbCBwb2ludHMgdXNlZCBmb3IgY2FsY3VsYXRpbmcKKyAg
ICAgICAgICAgICAgICAjIHRoZSBwZXJjZW50YWdlIGZvciBlYWNoIHR5cGUgb2YgcmVzdWx0Cisg
ICAgICAgICAgICAgICAgY3VycmVudF9yZXN1bHRbJ3Jlc3VsdHMnXSA9IHNlbGYuY2FsY3VsYXRl
X3Jlc3VsdHModGVzdF9yZXN1bHQsIChsZW4odGVzdF9yZXN1bHRbJ3Jlc3VsdHMnXVswXSkgLSAx
KSAvLyAyKQorCisgICAgICAgICAgICAgICAgIyBBZGQgdGhlIGNvbmZpZ3VyYXRpb24gcmVzdWx0
cyB0byBtYXN0ZXIgY29sbGVjdGlvbgorICAgICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKGN1
cnJlbnRfcmVzdWx0KQorCisgICAgICAgICAgICAjIENhbGN1bGF0ZSB0aGUgb3ZlcmFsbCwgY29t
YmluZWQgdmFsdWUgb2YKKyAgICAgICAgICAgICMgYWxsIHJlc3VsdHMgZnJvbSBhbGwgY29uZmln
dXJhdGlvbnMgYW5kIHJlcG9ydAorICAgICAgICAgICAgcmVzdWx0cyA9IHNlbGYuY2FsY3VsYXRl
X292ZXJhbGxfcmVzdWx0cyhyZXN1bHRzKQorCisgICAgICAgICAgICAjIFJlcG9ydCB0aGUgcmVz
dWx0cyBmb3IgdGhlIHRlc3QKKyAgICAgICAgICAgIHJldHVybiBqc29uaWZ5KHJlc3VsdHMpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431130</attachid>
            <date>2021-06-10 14:27:27 -0700</date>
            <delta_ts>2021-06-11 12:39:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226894-20210610172725.patch</filename>
            <type>text/plain</type>
            <size>10500</size>
            <attacher name="Chris Gambrell">cgambrell</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI3ODczMykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDIzIEBACisyMDIxLTA2LTEwICBDaHJpcyBHYW1icmVsbCAgPGNnYW1icmVsbEBhcHBsZS5j
b20+CisKKyAgICAgICAgW3Jlc3VsdHNkYnB5XSBBZGQgY29uZmlkZW5jZS1jaGVja2luZyBmdW5j
dGlvbmFsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMjY4OTQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc5MTU1MTgxPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMv
cmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxlci9hcGlfcm91dGVzLnB5OgorICAgICAg
ICAoQVBJUm91dGVzLl9faW5pdF9fKToKKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy9yZXN1
bHRzZGJweS9yZXN1bHRzZGJweS9jb250cm9sbGVyL2NvbW1pdF9jb250cm9sbGVyLnB5OgorICAg
ICAgICAoY29tbWl0X29yX3RpbWVzdGFtcF9mb3JfdXVpZCk6CisgICAgICAgIChjb21taXRfb3Jf
dGltZXN0YW1wX2Zvcl91dWlkLmRlY29yYXRvcik6CisgICAgICAgIChjb21taXRfb3JfdGltZXN0
YW1wX2Zvcl91dWlkLmRlY29yYXRvci5yZWFsX21ldGhvZCk6CisgICAgICAgICogU2NyaXB0cy9s
aWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxlci90ZXN0X2NvbnRyb2xs
ZXIucHk6CisgICAgICAgIChUZXN0Q29udHJvbGxlcik6CisgICAgICAgIChUZXN0Q29udHJvbGxl
ci5jYWxjdWxhdGVfcmVzdWx0cyk6CisgICAgICAgIChUZXN0Q29udHJvbGxlci5jYWxjdWxhdGVf
b3ZlcmFsbF9yZXN1bHRzKToKKyAgICAgICAgKFRlc3RDb250cm9sbGVyLmZpbmRfdGVzdF9jb25m
aWRlbmNlKToKKwogMjAyMS0wNi0xMCAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFyZEBhcHBsZS5j
b20+CiAKICAgICAgICAgW3dlYmtpdGNvcmVweV0gNnggcGVyZm9ybWFuY2UgaW1wcm92ZW1lbnQg
aW4gTWVtb2l6ZWQKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jl
c3VsdHNkYnB5L2NvbnRyb2xsZXIvYXBpX3JvdXRlcy5weQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9T
Y3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9jb250cm9sbGVyL2FwaV9y
b3V0ZXMucHkJKHJldmlzaW9uIDI3ODcyNCkKKysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jl
c3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIvYXBpX3JvdXRlcy5weQkod29ya2luZyBj
b3B5KQpAQCAtNDMsNiArNDMsNyBAQCBjbGFzcyBBUElSb3V0ZXMoQXV0aGVkQmx1ZXByaW50KToK
IAogICAgICAgICBzZWxmLnN1aXRlX2NvbnRyb2xsZXIgPSBTdWl0ZUNvbnRyb2xsZXIoc3VpdGVf
Y29udGV4dD1tb2RlbC5zdWl0ZV9jb250ZXh0KQogICAgICAgICBzZWxmLnRlc3RfY29udHJvbGxl
ciA9IFRlc3RDb250cm9sbGVyKHRlc3RfY29udGV4dD1tb2RlbC50ZXN0X2NvbnRleHQpCisgICAg
ICAgIHNlbGYuY29uZmlkZW5jZV9jb250cm9sbGVyID0gVGVzdENvbnRyb2xsZXIodGVzdF9jb250
ZXh0PW1vZGVsLnRlc3RfY29udGV4dCkKICAgICAgICAgc2VsZi5mYWlsdXJlX2NvbnRyb2xsZXIg
PSBGYWlsdXJlQ29udHJvbGxlcihmYWlsdXJlX2NvbnRleHQ9bW9kZWwuZmFpbHVyZV9jb250ZXh0
KQogCiAgICAgICAgIHNlbGYuY2lfY29udHJvbGxlciA9IENJQ29udHJvbGxlcihjaV9jb250ZXh0
PW1vZGVsLmNpX2NvbnRleHQsIHVwbG9hZF9jb250ZXh0PW1vZGVsLnVwbG9hZF9jb250ZXh0KQpA
QCAtNzEsNiArNzIsOCBAQCBjbGFzcyBBUElSb3V0ZXMoQXV0aGVkQmx1ZXByaW50KToKICAgICAg
ICAgc2VsZi5hZGRfdXJsX3J1bGUoJy9yZXN1bHRzLzxwYXRoOnN1aXRlPicsICdzdWl0ZS1yZXN1
bHRzJywgc2VsZi5zdWl0ZV9jb250cm9sbGVyLmZpbmRfcnVuX3Jlc3VsdHMsIG1ldGhvZHM9KCdH
RVQnLCkpCiAgICAgICAgIHNlbGYuYWRkX3VybF9ydWxlKCcvcmVzdWx0cy88cGF0aDpzdWl0ZT4v
PHBhdGg6dGVzdD4nLCAndGVzdC1yZXN1bHRzJywgc2VsZi50ZXN0X2NvbnRyb2xsZXIuZmluZF90
ZXN0X3Jlc3VsdCwgbWV0aG9kcz0oJ0dFVCcsKSkKIAorICAgICAgICBzZWxmLmFkZF91cmxfcnVs
ZSgnL2NvbmZpZGVuY2UvPHBhdGg6c3VpdGU+LzxwYXRoOnRlc3Q+JywgJ2NvbmZpZGVuY2UnLCBz
ZWxmLnRlc3RfY29udHJvbGxlci5maW5kX3Rlc3RfY29uZmlkZW5jZSwgbWV0aG9kcz0oJ0dFVCcs
KSkKKwogICAgICAgICBzZWxmLmFkZF91cmxfcnVsZSgnL2ZhaWx1cmVzLzxwYXRoOnN1aXRlPics
ICdzdWl0ZS1mYWlsdXJlcycsIHNlbGYuZmFpbHVyZV9jb250cm9sbGVyLmZhaWx1cmVzLCBtZXRo
b2RzPSgnR0VUJywpKQogCiAgICAgICAgIHNlbGYuYWRkX3VybF9ydWxlKCcvdXJscy9xdWV1ZScs
ICdxdWV1ZS11cmxzJywgc2VsZi5jaV9jb250cm9sbGVyLnVybHNfZm9yX3F1ZXVlX2VuZHBvaW50
LCBtZXRob2RzPSgnR0VUJywpKQpJbmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0
c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxlci9jb21taXRfY29udHJvbGxlci5weQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9j
b250cm9sbGVyL2NvbW1pdF9jb250cm9sbGVyLnB5CShyZXZpc2lvbiAyNzg3MjQpCisrKyBUb29s
cy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9jb250cm9sbGVyL2Nv
bW1pdF9jb250cm9sbGVyLnB5CSh3b3JraW5nIGNvcHkpCkBAIC05Miw2ICs5MiwyMyBAQCBkZWYg
dXVpZF9yYW5nZV9mb3JfY29tbWl0X3JhbmdlX3F1ZXJ5KCk6CiAgICAgcmV0dXJuIGRlY29yYXRv
cgogCiAKK2RlZiBjb21taXRfb3JfdGltZXN0YW1wX2Zvcl91dWlkKCk6CisgICAgZGVmIGRlY29y
YXRvcihtZXRob2QpOgorICAgICAgICBkZWYgcmVhbF9tZXRob2Qob2JqLCByZXBvc2l0b3J5X2lk
PU5vbmUsIGJyYW5jaD1Ob25lLCBpZD1Ob25lLCByZWY9Tm9uZSwgdXVpZD1Ob25lLCB0aW1lc3Rh
bXA9Tm9uZSwgKiprd2FyZ3MpOgorICAgICAgICAgICAgIyBXZSdyZSBtYWtpbmcgYW4gYXNzdW1w
dGlvbiB0aGF0IHRoZSBjbGFzcyB1c2luZyB0aGlzIGRlY29yYXRvciBhY3R1YWxseSBoYXMgYSBj
b21taXRfY29udGV4dCwgaWYgaXQgZG9lcyBub3QsCisgICAgICAgICAgICAjIHRoaXMgZGVjb3Jh
dG9yIHdpbGwgZmFpbCBzcGVjdGFjdWxhcmx5CisgICAgICAgICAgICB3aXRoIG9iai5jb21taXRf
Y29udGV4dDoKKyAgICAgICAgICAgICAgICBjb21taXRfb3JfdGltZXN0YW1wID0gX2ZpbmRfY29t
cGFyaXNvbigKKyAgICAgICAgICAgICAgICAgICAgb2JqLmNvbW1pdF9jb250ZXh0LCByZXBvc2l0
b3J5X2lkPXJlcG9zaXRvcnlfaWQsIGJyYW5jaD1icmFuY2gsCisgICAgICAgICAgICAgICAgICAg
IHJlZj1yZWYgb3IgaWQsCisgICAgICAgICAgICAgICAgICAgIHV1aWQ9dXVpZCwgdGltZXN0YW1w
PXRpbWVzdGFtcCwgcHJpb3JpdHk9bWF4LAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAg
IHJldHVybiBtZXRob2Qob2JqLCBicmFuY2g9YnJhbmNoLCBjb21taXRfb3JfdGltZXN0YW1wPWNv
bW1pdF9vcl90aW1lc3RhbXAsICoqa3dhcmdzKQorICAgICAgICByZWFsX21ldGhvZC5fX25hbWVf
XyA9IG1ldGhvZC5fX25hbWVfXworICAgICAgICByZXR1cm4gcmVhbF9tZXRob2QKKyAgICByZXR1
cm4gZGVjb3JhdG9yCisKKwogZGVmIHV1aWRfcmFuZ2VfZm9yX3F1ZXJ5KCk6CiAgICAgZGVmIGRl
Y29yYXRvcihtZXRob2QpOgogICAgICAgICBAdXVpZF9yYW5nZV9mb3JfY29tbWl0X3JhbmdlX3F1
ZXJ5KCkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNk
YnB5L2NvbnRyb2xsZXIvdGVzdF9jb250cm9sbGVyLnB5Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Nj
cmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIvdGVzdF9j
b250cm9sbGVyLnB5CShyZXZpc2lvbiAyNzg3MjQpCisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmll
cy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9jb250cm9sbGVyL3Rlc3RfY29udHJvbGxlci5weQko
d29ya2luZyBjb3B5KQpAQCAtMjEsNyArMjEsNyBAQAogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiBmcm9tIGZs
YXNrIGltcG9ydCBhYm9ydCwganNvbmlmeQotZnJvbSByZXN1bHRzZGJweS5jb250cm9sbGVyLmNv
bW1pdF9jb250cm9sbGVyIGltcG9ydCB1dWlkX3JhbmdlX2Zvcl9xdWVyeSwgSGFzQ29tbWl0Q29u
dGV4dAorZnJvbSByZXN1bHRzZGJweS5jb250cm9sbGVyLmNvbW1pdF9jb250cm9sbGVyIGltcG9y
dCBjb21taXRfb3JfdGltZXN0YW1wX2Zvcl91dWlkLCB1dWlkX3JhbmdlX2Zvcl9xdWVyeSwgSGFz
Q29tbWl0Q29udGV4dAogZnJvbSByZXN1bHRzZGJweS5jb250cm9sbGVyLmNvbmZpZ3VyYXRpb24g
aW1wb3J0IENvbmZpZ3VyYXRpb24KIGZyb20gcmVzdWx0c2RicHkuY29udHJvbGxlci5jb25maWd1
cmF0aW9uX2NvbnRyb2xsZXIgaW1wb3J0IGNvbmZpZ3VyYXRpb25fZm9yX3F1ZXJ5CiBmcm9tIHJl
c3VsdHNkYnB5LmNvbnRyb2xsZXIuc3VpdGVfY29udHJvbGxlciBpbXBvcnQgdGltZV9yYW5nZV9m
b3JfcXVlcnkKQEAgLTEwMiwzICsxMDIsMTM2IEBAIGNsYXNzIFRlc3RDb250cm9sbGVyKEhhc0Nv
bW1pdENvbnRleHQpOgogICAgICAgICAgICAgICAgICAgICByZXN1bHRzPXNvcnRlZChyZXN1bHRz
LCBrZXk9c29ydF9mdW5jdGlvbiksCiAgICAgICAgICAgICAgICAgKSkKICAgICAgICAgICAgIHJl
dHVybiBqc29uaWZ5KHJlc3BvbnNlKQorCisgICAgZGVmIGNhbGN1bGF0ZV9yZXN1bHRzKHNlbGYs
IHRlc3RfcmVzdWx0LCBmb2N1c19wb2ludD1Ob25lKToKKyAgICAgICAgaWYgZm9jdXNfcG9pbnQg
aXMgTm9uZToKKyAgICAgICAgICAgIGZvY3VzX3BvaW50ID0gbGVuKHRlc3RfcmVzdWx0WydyZXN1
bHRzJ10pIC0gMQorICAgICAgICBjdXJyZW50X3Jlc3VsdCA9IHt9CisKKyAgICAgICAgIyBDYWxj
dWxhdGUgcmVzdWx0cworICAgICAgICBtYXhfd2VpZ2h0ID0gbWF4KGxlbih0ZXN0X3Jlc3VsdFsn
cmVzdWx0cyddKSAtIGZvY3VzX3BvaW50LCBmb2N1c19wb2ludCkKKyAgICAgICAgd2VpZ2h0ID0g
bWF4X3dlaWdodCAtIGZvY3VzX3BvaW50CisgICAgICAgIGJhc2UgPSAwCisKKyAgICAgICAgZm9y
IGkgaW4gcmFuZ2UoMCwgbGVuKHRlc3RfcmVzdWx0WydyZXN1bHRzJ10pKToKKyAgICAgICAgICAg
IGlmIHRlc3RfcmVzdWx0WydyZXN1bHRzJ11baV1bJ2FjdHVhbCddIG5vdCBpbiBjdXJyZW50X3Jl
c3VsdDoKKyAgICAgICAgICAgICAgICBjdXJyZW50X3Jlc3VsdFt0ZXN0X3Jlc3VsdFsncmVzdWx0
cyddW2ldWydhY3R1YWwnXV0gPSAwCisgICAgICAgICAgICBjdXJyZW50X3Jlc3VsdFt0ZXN0X3Jl
c3VsdFsncmVzdWx0cyddW2ldWydhY3R1YWwnXV0gKz0gd2VpZ2h0CisgICAgICAgICAgICBiYXNl
ICs9IHdlaWdodAorCisgICAgICAgICAgICBpZiBpIDwgZm9jdXNfcG9pbnQ6CisgICAgICAgICAg
ICAgICAgd2VpZ2h0ICs9IDEKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgd2Vp
Z2h0IC09IDEKKworICAgICAgICBmb3IgcmVzdWx0X3R5cGUgaW4gY3VycmVudF9yZXN1bHQ6Cisg
ICAgICAgICAgICBpZiBjdXJyZW50X3Jlc3VsdFtyZXN1bHRfdHlwZV0gIT0gMDoKKyAgICAgICAg
ICAgICAgICBjdXJyZW50X3Jlc3VsdFtyZXN1bHRfdHlwZV0gPSBjdXJyZW50X3Jlc3VsdFtyZXN1
bHRfdHlwZV0gLyBiYXNlICogMTAwCisKKyAgICAgICAgcmV0dXJuIGN1cnJlbnRfcmVzdWx0CisK
KyAgICBkZWYgY2FsY3VsYXRlX292ZXJhbGxfcmVzdWx0cyhzZWxmLCByZXN1bHRzKToKKyAgICAg
ICAgdmFsdWVzID0ge30KKyAgICAgICAgZm9yIHJlc3VsdCBpbiByZXN1bHRzOgorICAgICAgICAg
ICAgZm9yIG5hbWUsIHZhbHVlIGluIHJlc3VsdFsncmVzdWx0cyddLml0ZW1zKCk6CisgICAgICAg
ICAgICAgICAgaWYgbm90IHZhbHVlOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAg
ICAgICAgICAgICAgIGlmIG5hbWUgbm90IGluIHZhbHVlczoKKyAgICAgICAgICAgICAgICAgICAg
dmFsdWVzW25hbWVdID0gMAorICAgICAgICAgICAgICAgIHZhbHVlc1tuYW1lXSArPSB2YWx1ZQor
CisgICAgICAgIHJldHVybiB7bmFtZTogdmFsdWUgLyBsZW4ocmVzdWx0cykgZm9yIG5hbWUsIHZh
bHVlIGluIHNvcnRlZCh2YWx1ZXMuaXRlbXMoKSl9CisKKyAgICBAcXVlcnlfYXNfa3dhcmdzKCkK
KyAgICBAY29tbWl0X29yX3RpbWVzdGFtcF9mb3JfdXVpZCgpCisgICAgQGxpbWl0X2Zvcl9xdWVy
eShERUZBVUxUX0xJTUlUKQorICAgIEBjb25maWd1cmF0aW9uX2Zvcl9xdWVyeSgpCisgICAgZGVm
IGZpbmRfdGVzdF9jb25maWRlbmNlKAorICAgICAgICBzZWxmLCBzdWl0ZT1Ob25lLCB0ZXN0PU5v
bmUsCisgICAgICAgIGNvbmZpZ3VyYXRpb25zPU5vbmUsIHJlY2VudD1Ob25lLAorICAgICAgICBi
cmFuY2g9Tm9uZSwgY29tbWl0X29yX3RpbWVzdGFtcD1Ob25lLAorICAgICAgICBsaW1pdD1Ob25l
LCAqKmt3YXJncworICAgICk6CisgICAgICAgIEFzc2VydFJlcXVlc3QuaXNfdHlwZShbJ0dFVCdd
KQorICAgICAgICBBc3NlcnRSZXF1ZXN0LnF1ZXJ5X2t3YXJnc19lbXB0eSgqKmt3YXJncykKKwor
ICAgICAgICByZWNlbnQgPSBib29sZWFuX3F1ZXJ5KCpyZWNlbnQpWzBdIGlmIHJlY2VudCBlbHNl
IFRydWUKKworICAgICAgICBpZiBub3Qgc3VpdGU6CisgICAgICAgICAgICBhYm9ydCg0MDAsIGRl
c2NyaXB0aW9uPSdObyBzdWl0ZSBzcGVjaWZpZWQnKQorICAgICAgICBpZiBub3QgdGVzdDoKKyAg
ICAgICAgICAgIGFib3J0KDQwMCwgZGVzY3JpcHRpb249J05vIHRlc3Qgc3BlY2lmaWVkJykKKwor
ICAgICAgICB3aXRoIHNlbGYudGVzdF9jb250ZXh0OgorICAgICAgICAgICAgcXVlcnlfZGljdCA9
IGRpY3QoCisgICAgICAgICAgICAgICAgc3VpdGU9c3VpdGUsIHRlc3Q9dGVzdCwKKyAgICAgICAg
ICAgICAgICBjb25maWd1cmF0aW9ucz1jb25maWd1cmF0aW9ucywgcmVjZW50PXJlY2VudCwKKyAg
ICAgICAgICAgICAgICBicmFuY2g9YnJhbmNoWzBdLAorICAgICAgICAgICAgICAgIGxpbWl0PWxp
bWl0LAorICAgICAgICAgICAgKQorCisgICAgICAgICAgICBmaW5kX2Z1bmN0aW9uID0gc2VsZi50
ZXN0X2NvbnRleHQuZmluZF9ieV9jb21taXQKKworICAgICAgICAgICAgb2xkZXJfZGF0YSA9IFtd
CisgICAgICAgICAgICBmb3IgY29uZmlnLCByZXN1bHRzIGluIGZpbmRfZnVuY3Rpb24oZW5kPWNv
bW1pdF9vcl90aW1lc3RhbXAsIGxpbWl0PWxpbWl0IC8vIDIsICoqcXVlcnlfZGljdCkuaXRlbXMo
KToKKyAgICAgICAgICAgICAgICBvbGRlcl9kYXRhID0gZGljdCgKKyAgICAgICAgICAgICAgICAg
ICAgY29uZmlndXJhdGlvbj1Db25maWd1cmF0aW9uLkVuY29kZXIoKS5kZWZhdWx0KGNvbmZpZyks
CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdHM9c29ydGVkKHJlc3VsdHMsIGtleT1zb3J0X2Z1
bmN0aW9uKSwKKyAgICAgICAgICAgICAgICApCisKKyAgICAgICAgICAgIG5ld2VyX2RhdGEgPSBb
XQorICAgICAgICAgICAgZm9yIGNvbmZpZywgcmVzdWx0cyBpbiBmaW5kX2Z1bmN0aW9uKGJlZ2lu
PWNvbW1pdF9vcl90aW1lc3RhbXAsIGxpbWl0PWxpbWl0IC8vIDIsICoqcXVlcnlfZGljdCkuaXRl
bXMoKToKKyAgICAgICAgICAgICAgICBuZXdlcl9kYXRhID0gZGljdCgKKyAgICAgICAgICAgICAg
ICAgICAgY29uZmlndXJhdGlvbj1Db25maWd1cmF0aW9uLkVuY29kZXIoKS5kZWZhdWx0KGNvbmZp
ZyksCisgICAgICAgICAgICAgICAgICAgIHJlc3VsdHM9c29ydGVkKHJlc3VsdHMsIGtleT1zb3J0
X2Z1bmN0aW9uKSwKKyAgICAgICAgICAgICAgICApCisKKyAgICAgICAgICAgICMgTWFrZSBzdXJl
IHVwcGVyIGFuZCBsb3dlciBkYXRhIGNvbnRhaW4gdGhlIHNhbWUKKyAgICAgICAgICAgICMgbnVt
YmVyIG9mIGNvbW1pdHMKKyAgICAgICAgICAgIGZvciByZXN1bHQgaW4gb2xkZXJfZGF0YToKKyAg
ICAgICAgICAgICAgICByZXN1bHRbJ3Jlc3VsdHMnXSA9IHJlc3VsdFsncmVzdWx0cyddWzptaW4o
bGVuKG9sZGVyX2RhdGFbMF1bJ3Jlc3VsdHMnXSksIGxlbihuZXdlcl9kYXRhWzBdWydyZXN1bHRz
J10pKV0KKyAgICAgICAgICAgIGZvciByZXN1bHQgaW4gbmV3ZXJfZGF0YToKKyAgICAgICAgICAg
ICAgICByZXN1bHRbJ3Jlc3VsdHMnXSA9IHJlc3VsdFsncmVzdWx0cyddWzptaW4obGVuKG9sZGVy
X2RhdGFbMF1bJ3Jlc3VsdHMnXSksIGxlbihuZXdlcl9kYXRhWzBdWydyZXN1bHRzJ10pKV0KKwor
ICAgICAgICAgICAgIyBDb21iaW5lIGxvd2VyICYgdXBwZXIgZGF0YSB3aGlsZSBkdXBsaWNhdGlu
ZyB0aGUKKyAgICAgICAgICAgICMgdGhlIHBpY2tlZCByZXZpc2lvbgorICAgICAgICAgICAgZGF0
YSA9IFtdCisgICAgICAgICAgICBmb3IgbG93ZXJfdGVzdF9yZXN1bHQgaW4gb2xkZXJfZGF0YToK
KyAgICAgICAgICAgICAgICBmb3IgdXBwZXJfdGVzdF9yZXN1bHQgaW4gbmV3ZXJfZGF0YToKKyAg
ICAgICAgICAgICAgICAgICAgaWYgbG93ZXJfdGVzdF9yZXN1bHRbJ2NvbmZpZ3VyYXRpb24nXSA9
PSB1cHBlcl90ZXN0X3Jlc3VsdFsnY29uZmlndXJhdGlvbiddOgorICAgICAgICAgICAgICAgICAg
ICAgICAgZGF0YS5hcHBlbmQoeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb25maWd1
cmF0aW9uJzogbG93ZXJfdGVzdF9yZXN1bHRbJ2NvbmZpZ3VyYXRpb24nXSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAncmVzdWx0cyc6IGxvd2VyX3Rlc3RfcmVzdWx0WydyZXN1bHRzJ10g
KyB1cHBlcl90ZXN0X3Jlc3VsdFsncmVzdWx0cyddCisgICAgICAgICAgICAgICAgICAgICAgICB9
KQorCisgICAgICAgICAgICByZXN1bHRzID0gW10KKworICAgICAgICAgICAgIyBNYWtlIHN1cmUg
d2UgcmVjaWV2ZWQgZGF0YQorICAgICAgICAgICAgaWYgbGVuKGRhdGEpID09IDA6CisgICAgICAg
ICAgICAgICAgcmV0dXJuIGpzb25pZnkoe30pCisKKyAgICAgICAgICAgICMgU3RhcnQga2VlcGlu
ZyB0cmFjayBvZiByZXN1bHQgZGF0YQorICAgICAgICAgICAgZm9yIHRlc3RfcmVzdWx0IGluIGRh
dGE6CisgICAgICAgICAgICAgICAgY3VycmVudF9yZXN1bHQgPSB7CisgICAgICAgICAgICAgICAg
ICAgICdjb25maWd1cmF0aW9uJzogdGVzdF9yZXN1bHRbJ2NvbmZpZ3VyYXRpb24nXSwKKyAgICAg
ICAgICAgICAgICAgICAgJ3Jlc3VsdHMnOiB7fQorICAgICAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgICAgICMgTWFrZSBzdXJlIHRlc3RzIGhhdmUgYmVlbiBydW4gYW5kIGNvbGxlY3Rpb24K
KyAgICAgICAgICAgICAgICAjIGlzIG5vdCBlbXB0eQorICAgICAgICAgICAgICAgIGlmIGxlbih0
ZXN0X3Jlc3VsdFsncmVzdWx0cyddKSA9PSAwOgorICAgICAgICAgICAgICAgICAgICBicmVhawor
CisgICAgICAgICAgICAgICAgIyBDYWxjdWxhdGUgdGhlIHRvdGFsIHBvaW50cyB1c2VkIGZvciBj
YWxjdWxhdGluZworICAgICAgICAgICAgICAgICMgdGhlIHBlcmNlbnRhZ2UgZm9yIGVhY2ggdHlw
ZSBvZiByZXN1bHQKKyAgICAgICAgICAgICAgICBjdXJyZW50X3Jlc3VsdFsncmVzdWx0cyddID0g
c2VsZi5jYWxjdWxhdGVfcmVzdWx0cyh0ZXN0X3Jlc3VsdCwgKGxlbih0ZXN0X3Jlc3VsdFsncmVz
dWx0cyddWzBdKSAtIDEpIC8vIDIpCisKKyAgICAgICAgICAgICAgICAjIEFkZCB0aGUgY29uZmln
dXJhdGlvbiByZXN1bHRzIHRvIG1hc3RlciBjb2xsZWN0aW9uCisgICAgICAgICAgICAgICAgcmVz
dWx0cy5hcHBlbmQoY3VycmVudF9yZXN1bHQpCisKKyAgICAgICAgICAgICMgQ2FsY3VsYXRlIHRo
ZSBvdmVyYWxsLCBjb21iaW5lZCB2YWx1ZSBvZgorICAgICAgICAgICAgIyBhbGwgcmVzdWx0cyBm
cm9tIGFsbCBjb25maWd1cmF0aW9ucyBhbmQgcmVwb3J0CisgICAgICAgICAgICByZXN1bHRzID0g
c2VsZi5jYWxjdWxhdGVfb3ZlcmFsbF9yZXN1bHRzKHJlc3VsdHMpCisKKyAgICAgICAgICAgICMg
UmVwb3J0IHRoZSByZXN1bHRzIGZvciB0aGUgdGVzdAorICAgICAgICAgICAgcmV0dXJuIGpzb25p
ZnkocmVzdWx0cykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431221</attachid>
            <date>2021-06-11 12:39:18 -0700</date>
            <delta_ts>2021-08-09 16:15:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226894-20210611153917.patch</filename>
            <type>text/plain</type>
            <size>13246</size>
            <attacher name="Chris Gambrell">cgambrell</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI3ODc3NCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDI0IEBACisyMDIxLTA2LTExICBDaHJpcyBHYW1icmVsbCAgPGNnYW1icmVsbEBhcHBsZS5j
b20+CisKKyAgICAgICAgW3Jlc3VsdHNkYnB5XSBBZGQgY29uZmlkZW5jZS1jaGVja2luZyBmdW5j
dGlvbmFsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMjY4OTQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc5MTU1MTgxPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMv
cmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxlci9hcGlfcm91dGVzLnB5OgorICAgICAg
ICAoQVBJUm91dGVzLl9faW5pdF9fKToKKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy9yZXN1
bHRzZGJweS9yZXN1bHRzZGJweS9jb250cm9sbGVyL2NvbW1pdF9jb250cm9sbGVyLnB5OgorICAg
ICAgICAoY29tbWl0X29yX3RpbWVzdGFtcF9mb3JfdXVpZCk6CisgICAgICAgIChjb21taXRfb3Jf
dGltZXN0YW1wX2Zvcl91dWlkLmRlY29yYXRvcik6CisgICAgICAgIChjb21taXRfb3JfdGltZXN0
YW1wX2Zvcl91dWlkLmRlY29yYXRvci5yZWFsX21ldGhvZCk6CisgICAgICAgICogU2NyaXB0cy9s
aWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxlci90ZXN0X2NvbnRyb2xs
ZXIucHk6CisgICAgICAgIChUZXN0Q29udHJvbGxlcik6CisgICAgICAgIChUZXN0Q29udHJvbGxl
ci5jYWxjdWxhdGVfcmVzdWx0cyk6CisgICAgICAgIChUZXN0Q29udHJvbGxlci5jYWxjdWxhdGVf
b3ZlcmFsbF9yZXN1bHRzKToKKyAgICAgICAgKFRlc3RDb250cm9sbGVyLmZpbmRfdGVzdF9jb25m
aWRlbmNlKToKKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRz
ZGJweS92aWV3L3RlbXBsYXRlcy9kb2N1bWVudGF0aW9uLmh0bWw6CisKIDIwMjEtMDYtMTEgIEpv
bmF0aGFuIEJlZGFyZCAgPGpiZWRhcmRAYXBwbGUuY29tPgogCiAgICAgICAgIFtjaGVjay13ZWJr
aXQtc3R5bGVdIGZhaWxpbmcgaW4gSlMgY2hlY2tlciBkdWUgdG8gcHl0aG9uIGJ5dGUgc3RyaW5n
CkluZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9j
b250cm9sbGVyL2FwaV9yb3V0ZXMucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJy
YXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxlci9hcGlfcm91dGVzLnB5CShy
ZXZpc2lvbiAyNzg3MjQpCisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9y
ZXN1bHRzZGJweS9jb250cm9sbGVyL2FwaV9yb3V0ZXMucHkJKHdvcmtpbmcgY29weSkKQEAgLTQz
LDYgKzQzLDcgQEAgY2xhc3MgQVBJUm91dGVzKEF1dGhlZEJsdWVwcmludCk6CiAKICAgICAgICAg
c2VsZi5zdWl0ZV9jb250cm9sbGVyID0gU3VpdGVDb250cm9sbGVyKHN1aXRlX2NvbnRleHQ9bW9k
ZWwuc3VpdGVfY29udGV4dCkKICAgICAgICAgc2VsZi50ZXN0X2NvbnRyb2xsZXIgPSBUZXN0Q29u
dHJvbGxlcih0ZXN0X2NvbnRleHQ9bW9kZWwudGVzdF9jb250ZXh0KQorICAgICAgICBzZWxmLmNv
bmZpZGVuY2VfY29udHJvbGxlciA9IFRlc3RDb250cm9sbGVyKHRlc3RfY29udGV4dD1tb2RlbC50
ZXN0X2NvbnRleHQpCiAgICAgICAgIHNlbGYuZmFpbHVyZV9jb250cm9sbGVyID0gRmFpbHVyZUNv
bnRyb2xsZXIoZmFpbHVyZV9jb250ZXh0PW1vZGVsLmZhaWx1cmVfY29udGV4dCkKIAogICAgICAg
ICBzZWxmLmNpX2NvbnRyb2xsZXIgPSBDSUNvbnRyb2xsZXIoY2lfY29udGV4dD1tb2RlbC5jaV9j
b250ZXh0LCB1cGxvYWRfY29udGV4dD1tb2RlbC51cGxvYWRfY29udGV4dCkKQEAgLTcxLDYgKzcy
LDggQEAgY2xhc3MgQVBJUm91dGVzKEF1dGhlZEJsdWVwcmludCk6CiAgICAgICAgIHNlbGYuYWRk
X3VybF9ydWxlKCcvcmVzdWx0cy88cGF0aDpzdWl0ZT4nLCAnc3VpdGUtcmVzdWx0cycsIHNlbGYu
c3VpdGVfY29udHJvbGxlci5maW5kX3J1bl9yZXN1bHRzLCBtZXRob2RzPSgnR0VUJywpKQogICAg
ICAgICBzZWxmLmFkZF91cmxfcnVsZSgnL3Jlc3VsdHMvPHBhdGg6c3VpdGU+LzxwYXRoOnRlc3Q+
JywgJ3Rlc3QtcmVzdWx0cycsIHNlbGYudGVzdF9jb250cm9sbGVyLmZpbmRfdGVzdF9yZXN1bHQs
IG1ldGhvZHM9KCdHRVQnLCkpCiAKKyAgICAgICAgc2VsZi5hZGRfdXJsX3J1bGUoJy9jb25maWRl
bmNlLzxwYXRoOnN1aXRlPi88cGF0aDp0ZXN0PicsICdjb25maWRlbmNlJywgc2VsZi50ZXN0X2Nv
bnRyb2xsZXIuZmluZF90ZXN0X2NvbmZpZGVuY2UsIG1ldGhvZHM9KCdHRVQnLCkpCisKICAgICAg
ICAgc2VsZi5hZGRfdXJsX3J1bGUoJy9mYWlsdXJlcy88cGF0aDpzdWl0ZT4nLCAnc3VpdGUtZmFp
bHVyZXMnLCBzZWxmLmZhaWx1cmVfY29udHJvbGxlci5mYWlsdXJlcywgbWV0aG9kcz0oJ0dFVCcs
KSkKIAogICAgICAgICBzZWxmLmFkZF91cmxfcnVsZSgnL3VybHMvcXVldWUnLCAncXVldWUtdXJs
cycsIHNlbGYuY2lfY29udHJvbGxlci51cmxzX2Zvcl9xdWV1ZV9lbmRwb2ludCwgbWV0aG9kcz0o
J0dFVCcsKSkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3Vs
dHNkYnB5L2NvbnRyb2xsZXIvY29tbWl0X2NvbnRyb2xsZXIucHkKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxlci9j
b21taXRfY29udHJvbGxlci5weQkocmV2aXNpb24gMjc4NzI0KQorKysgVG9vbHMvU2NyaXB0cy9s
aWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxlci9jb21taXRfY29udHJv
bGxlci5weQkod29ya2luZyBjb3B5KQpAQCAtOTIsNiArOTIsMjMgQEAgZGVmIHV1aWRfcmFuZ2Vf
Zm9yX2NvbW1pdF9yYW5nZV9xdWVyeSgpOgogICAgIHJldHVybiBkZWNvcmF0b3IKIAogCitkZWYg
Y29tbWl0X29yX3RpbWVzdGFtcF9mb3JfdXVpZCgpOgorICAgIGRlZiBkZWNvcmF0b3IobWV0aG9k
KToKKyAgICAgICAgZGVmIHJlYWxfbWV0aG9kKG9iaiwgcmVwb3NpdG9yeV9pZD1Ob25lLCBicmFu
Y2g9Tm9uZSwgaWQ9Tm9uZSwgcmVmPU5vbmUsIHV1aWQ9Tm9uZSwgdGltZXN0YW1wPU5vbmUsICoq
a3dhcmdzKToKKyAgICAgICAgICAgICMgV2UncmUgbWFraW5nIGFuIGFzc3VtcHRpb24gdGhhdCB0
aGUgY2xhc3MgdXNpbmcgdGhpcyBkZWNvcmF0b3IgYWN0dWFsbHkgaGFzIGEgY29tbWl0X2NvbnRl
eHQsIGlmIGl0IGRvZXMgbm90LAorICAgICAgICAgICAgIyB0aGlzIGRlY29yYXRvciB3aWxsIGZh
aWwgc3BlY3RhY3VsYXJseQorICAgICAgICAgICAgd2l0aCBvYmouY29tbWl0X2NvbnRleHQ6Cisg
ICAgICAgICAgICAgICAgY29tbWl0X29yX3RpbWVzdGFtcCA9IF9maW5kX2NvbXBhcmlzb24oCisg
ICAgICAgICAgICAgICAgICAgIG9iai5jb21taXRfY29udGV4dCwgcmVwb3NpdG9yeV9pZD1yZXBv
c2l0b3J5X2lkLCBicmFuY2g9YnJhbmNoLAorICAgICAgICAgICAgICAgICAgICByZWY9cmVmIG9y
IGlkLAorICAgICAgICAgICAgICAgICAgICB1dWlkPXV1aWQsIHRpbWVzdGFtcD10aW1lc3RhbXAs
IHByaW9yaXR5PW1heCwKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICByZXR1cm4gbWV0
aG9kKG9iaiwgYnJhbmNoPWJyYW5jaCwgY29tbWl0X29yX3RpbWVzdGFtcD1jb21taXRfb3JfdGlt
ZXN0YW1wLCAqKmt3YXJncykKKyAgICAgICAgcmVhbF9tZXRob2QuX19uYW1lX18gPSBtZXRob2Qu
X19uYW1lX18KKyAgICAgICAgcmV0dXJuIHJlYWxfbWV0aG9kCisgICAgcmV0dXJuIGRlY29yYXRv
cgorCisKIGRlZiB1dWlkX3JhbmdlX2Zvcl9xdWVyeSgpOgogICAgIGRlZiBkZWNvcmF0b3IobWV0
aG9kKToKICAgICAgICAgQHV1aWRfcmFuZ2VfZm9yX2NvbW1pdF9yYW5nZV9xdWVyeSgpCkluZGV4
OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9jb250cm9s
bGVyL3Rlc3RfY29udHJvbGxlci5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJh
cmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9jb250cm9sbGVyL3Rlc3RfY29udHJvbGxlci5w
eQkocmV2aXNpb24gMjc4NzI0KQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2Ri
cHkvcmVzdWx0c2RicHkvY29udHJvbGxlci90ZXN0X2NvbnRyb2xsZXIucHkJKHdvcmtpbmcgY29w
eSkKQEAgLTIxLDcgKzIxLDcgQEAKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogZnJvbSBmbGFzayBpbXBvcnQg
YWJvcnQsIGpzb25pZnkKLWZyb20gcmVzdWx0c2RicHkuY29udHJvbGxlci5jb21taXRfY29udHJv
bGxlciBpbXBvcnQgdXVpZF9yYW5nZV9mb3JfcXVlcnksIEhhc0NvbW1pdENvbnRleHQKK2Zyb20g
cmVzdWx0c2RicHkuY29udHJvbGxlci5jb21taXRfY29udHJvbGxlciBpbXBvcnQgY29tbWl0X29y
X3RpbWVzdGFtcF9mb3JfdXVpZCwgdXVpZF9yYW5nZV9mb3JfcXVlcnksIEhhc0NvbW1pdENvbnRl
eHQKIGZyb20gcmVzdWx0c2RicHkuY29udHJvbGxlci5jb25maWd1cmF0aW9uIGltcG9ydCBDb25m
aWd1cmF0aW9uCiBmcm9tIHJlc3VsdHNkYnB5LmNvbnRyb2xsZXIuY29uZmlndXJhdGlvbl9jb250
cm9sbGVyIGltcG9ydCBjb25maWd1cmF0aW9uX2Zvcl9xdWVyeQogZnJvbSByZXN1bHRzZGJweS5j
b250cm9sbGVyLnN1aXRlX2NvbnRyb2xsZXIgaW1wb3J0IHRpbWVfcmFuZ2VfZm9yX3F1ZXJ5CkBA
IC0xMDIsMyArMTAyLDEzNiBAQCBjbGFzcyBUZXN0Q29udHJvbGxlcihIYXNDb21taXRDb250ZXh0
KToKICAgICAgICAgICAgICAgICAgICAgcmVzdWx0cz1zb3J0ZWQocmVzdWx0cywga2V5PXNvcnRf
ZnVuY3Rpb24pLAogICAgICAgICAgICAgICAgICkpCiAgICAgICAgICAgICByZXR1cm4ganNvbmlm
eShyZXNwb25zZSkKKworICAgIGRlZiBjYWxjdWxhdGVfcmVzdWx0cyhzZWxmLCB0ZXN0X3Jlc3Vs
dCwgZm9jdXNfcG9pbnQ9Tm9uZSk6CisgICAgICAgIGlmIGZvY3VzX3BvaW50IGlzIE5vbmU6Cisg
ICAgICAgICAgICBmb2N1c19wb2ludCA9IGxlbih0ZXN0X3Jlc3VsdFsncmVzdWx0cyddKSAtIDEK
KyAgICAgICAgY3VycmVudF9yZXN1bHQgPSB7fQorCisgICAgICAgICMgQ2FsY3VsYXRlIHJlc3Vs
dHMKKyAgICAgICAgbWF4X3dlaWdodCA9IG1heChsZW4odGVzdF9yZXN1bHRbJ3Jlc3VsdHMnXSkg
LSBmb2N1c19wb2ludCwgZm9jdXNfcG9pbnQpCisgICAgICAgIHdlaWdodCA9IG1heF93ZWlnaHQg
LSBmb2N1c19wb2ludAorICAgICAgICBiYXNlID0gMAorCisgICAgICAgIGZvciBpIGluIHJhbmdl
KDAsIGxlbih0ZXN0X3Jlc3VsdFsncmVzdWx0cyddKSk6CisgICAgICAgICAgICBpZiB0ZXN0X3Jl
c3VsdFsncmVzdWx0cyddW2ldWydhY3R1YWwnXSBub3QgaW4gY3VycmVudF9yZXN1bHQ6CisgICAg
ICAgICAgICAgICAgY3VycmVudF9yZXN1bHRbdGVzdF9yZXN1bHRbJ3Jlc3VsdHMnXVtpXVsnYWN0
dWFsJ11dID0gMAorICAgICAgICAgICAgY3VycmVudF9yZXN1bHRbdGVzdF9yZXN1bHRbJ3Jlc3Vs
dHMnXVtpXVsnYWN0dWFsJ11dICs9IHdlaWdodAorICAgICAgICAgICAgYmFzZSArPSB3ZWlnaHQK
KworICAgICAgICAgICAgaWYgaSA8IGZvY3VzX3BvaW50OgorICAgICAgICAgICAgICAgIHdlaWdo
dCArPSAxCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHdlaWdodCAtPSAxCisK
KyAgICAgICAgZm9yIHJlc3VsdF90eXBlIGluIGN1cnJlbnRfcmVzdWx0OgorICAgICAgICAgICAg
aWYgY3VycmVudF9yZXN1bHRbcmVzdWx0X3R5cGVdICE9IDA6CisgICAgICAgICAgICAgICAgY3Vy
cmVudF9yZXN1bHRbcmVzdWx0X3R5cGVdID0gY3VycmVudF9yZXN1bHRbcmVzdWx0X3R5cGVdIC8g
YmFzZSAqIDEwMAorCisgICAgICAgIHJldHVybiBjdXJyZW50X3Jlc3VsdAorCisgICAgZGVmIGNh
bGN1bGF0ZV9vdmVyYWxsX3Jlc3VsdHMoc2VsZiwgcmVzdWx0cyk6CisgICAgICAgIHZhbHVlcyA9
IHt9CisgICAgICAgIGZvciByZXN1bHQgaW4gcmVzdWx0czoKKyAgICAgICAgICAgIGZvciBuYW1l
LCB2YWx1ZSBpbiByZXN1bHRbJ3Jlc3VsdHMnXS5pdGVtcygpOgorICAgICAgICAgICAgICAgIGlm
IG5vdCB2YWx1ZToKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAg
ICBpZiBuYW1lIG5vdCBpbiB2YWx1ZXM6CisgICAgICAgICAgICAgICAgICAgIHZhbHVlc1tuYW1l
XSA9IDAKKyAgICAgICAgICAgICAgICB2YWx1ZXNbbmFtZV0gKz0gdmFsdWUKKworICAgICAgICBy
ZXR1cm4ge25hbWU6IHZhbHVlIC8gbGVuKHJlc3VsdHMpIGZvciBuYW1lLCB2YWx1ZSBpbiBzb3J0
ZWQodmFsdWVzLml0ZW1zKCkpfQorCisgICAgQHF1ZXJ5X2FzX2t3YXJncygpCisgICAgQGNvbW1p
dF9vcl90aW1lc3RhbXBfZm9yX3V1aWQoKQorICAgIEBsaW1pdF9mb3JfcXVlcnkoREVGQVVMVF9M
SU1JVCkKKyAgICBAY29uZmlndXJhdGlvbl9mb3JfcXVlcnkoKQorICAgIGRlZiBmaW5kX3Rlc3Rf
Y29uZmlkZW5jZSgKKyAgICAgICAgc2VsZiwgc3VpdGU9Tm9uZSwgdGVzdD1Ob25lLAorICAgICAg
ICBjb25maWd1cmF0aW9ucz1Ob25lLCByZWNlbnQ9Tm9uZSwKKyAgICAgICAgYnJhbmNoPU5vbmUs
IGNvbW1pdF9vcl90aW1lc3RhbXA9Tm9uZSwKKyAgICAgICAgbGltaXQ9Tm9uZSwgKiprd2FyZ3MK
KyAgICApOgorICAgICAgICBBc3NlcnRSZXF1ZXN0LmlzX3R5cGUoWydHRVQnXSkKKyAgICAgICAg
QXNzZXJ0UmVxdWVzdC5xdWVyeV9rd2FyZ3NfZW1wdHkoKiprd2FyZ3MpCisKKyAgICAgICAgcmVj
ZW50ID0gYm9vbGVhbl9xdWVyeSgqcmVjZW50KVswXSBpZiByZWNlbnQgZWxzZSBUcnVlCisKKyAg
ICAgICAgaWYgbm90IHN1aXRlOgorICAgICAgICAgICAgYWJvcnQoNDAwLCBkZXNjcmlwdGlvbj0n
Tm8gc3VpdGUgc3BlY2lmaWVkJykKKyAgICAgICAgaWYgbm90IHRlc3Q6CisgICAgICAgICAgICBh
Ym9ydCg0MDAsIGRlc2NyaXB0aW9uPSdObyB0ZXN0IHNwZWNpZmllZCcpCisKKyAgICAgICAgd2l0
aCBzZWxmLnRlc3RfY29udGV4dDoKKyAgICAgICAgICAgIHF1ZXJ5X2RpY3QgPSBkaWN0KAorICAg
ICAgICAgICAgICAgIHN1aXRlPXN1aXRlLCB0ZXN0PXRlc3QsCisgICAgICAgICAgICAgICAgY29u
ZmlndXJhdGlvbnM9Y29uZmlndXJhdGlvbnMsIHJlY2VudD1yZWNlbnQsCisgICAgICAgICAgICAg
ICAgYnJhbmNoPWJyYW5jaFswXSwKKyAgICAgICAgICAgICAgICBsaW1pdD1saW1pdCwKKyAgICAg
ICAgICAgICkKKworICAgICAgICAgICAgZmluZF9mdW5jdGlvbiA9IHNlbGYudGVzdF9jb250ZXh0
LmZpbmRfYnlfY29tbWl0CisKKyAgICAgICAgICAgIG9sZGVyX2RhdGEgPSBbXQorICAgICAgICAg
ICAgZm9yIGNvbmZpZywgcmVzdWx0cyBpbiBmaW5kX2Z1bmN0aW9uKGVuZD1jb21taXRfb3JfdGlt
ZXN0YW1wLCBsaW1pdD1saW1pdCAvLyAyLCAqKnF1ZXJ5X2RpY3QpLml0ZW1zKCk6CisgICAgICAg
ICAgICAgICAgb2xkZXJfZGF0YSA9IGRpY3QoCisgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3Vy
YXRpb249Q29uZmlndXJhdGlvbi5FbmNvZGVyKCkuZGVmYXVsdChjb25maWcpLAorICAgICAgICAg
ICAgICAgICAgICByZXN1bHRzPXNvcnRlZChyZXN1bHRzLCBrZXk9c29ydF9mdW5jdGlvbiksCisg
ICAgICAgICAgICAgICAgKQorCisgICAgICAgICAgICBuZXdlcl9kYXRhID0gW10KKyAgICAgICAg
ICAgIGZvciBjb25maWcsIHJlc3VsdHMgaW4gZmluZF9mdW5jdGlvbihiZWdpbj1jb21taXRfb3Jf
dGltZXN0YW1wLCBsaW1pdD1saW1pdCAvLyAyLCAqKnF1ZXJ5X2RpY3QpLml0ZW1zKCk6CisgICAg
ICAgICAgICAgICAgbmV3ZXJfZGF0YSA9IGRpY3QoCisgICAgICAgICAgICAgICAgICAgIGNvbmZp
Z3VyYXRpb249Q29uZmlndXJhdGlvbi5FbmNvZGVyKCkuZGVmYXVsdChjb25maWcpLAorICAgICAg
ICAgICAgICAgICAgICByZXN1bHRzPXNvcnRlZChyZXN1bHRzLCBrZXk9c29ydF9mdW5jdGlvbiks
CisgICAgICAgICAgICAgICAgKQorCisgICAgICAgICAgICAjIE1ha2Ugc3VyZSB1cHBlciBhbmQg
bG93ZXIgZGF0YSBjb250YWluIHRoZSBzYW1lCisgICAgICAgICAgICAjIG51bWJlciBvZiBjb21t
aXRzCisgICAgICAgICAgICBmb3IgcmVzdWx0IGluIG9sZGVyX2RhdGE6CisgICAgICAgICAgICAg
ICAgcmVzdWx0WydyZXN1bHRzJ10gPSByZXN1bHRbJ3Jlc3VsdHMnXVs6bWluKGxlbihvbGRlcl9k
YXRhWzBdWydyZXN1bHRzJ10pLCBsZW4obmV3ZXJfZGF0YVswXVsncmVzdWx0cyddKSldCisgICAg
ICAgICAgICBmb3IgcmVzdWx0IGluIG5ld2VyX2RhdGE6CisgICAgICAgICAgICAgICAgcmVzdWx0
WydyZXN1bHRzJ10gPSByZXN1bHRbJ3Jlc3VsdHMnXVs6bWluKGxlbihvbGRlcl9kYXRhWzBdWydy
ZXN1bHRzJ10pLCBsZW4obmV3ZXJfZGF0YVswXVsncmVzdWx0cyddKSldCisKKyAgICAgICAgICAg
ICMgQ29tYmluZSBsb3dlciAmIHVwcGVyIGRhdGEgd2hpbGUgZHVwbGljYXRpbmcgdGhlCisgICAg
ICAgICAgICAjIHRoZSBwaWNrZWQgcmV2aXNpb24KKyAgICAgICAgICAgIGRhdGEgPSBbXQorICAg
ICAgICAgICAgZm9yIGxvd2VyX3Rlc3RfcmVzdWx0IGluIG9sZGVyX2RhdGE6CisgICAgICAgICAg
ICAgICAgZm9yIHVwcGVyX3Rlc3RfcmVzdWx0IGluIG5ld2VyX2RhdGE6CisgICAgICAgICAgICAg
ICAgICAgIGlmIGxvd2VyX3Rlc3RfcmVzdWx0Wydjb25maWd1cmF0aW9uJ10gPT0gdXBwZXJfdGVz
dF9yZXN1bHRbJ2NvbmZpZ3VyYXRpb24nXToKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEu
YXBwZW5kKHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29uZmlndXJhdGlvbic6IGxv
d2VyX3Rlc3RfcmVzdWx0Wydjb25maWd1cmF0aW9uJ10sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ3Jlc3VsdHMnOiBsb3dlcl90ZXN0X3Jlc3VsdFsncmVzdWx0cyddICsgdXBwZXJfdGVz
dF9yZXN1bHRbJ3Jlc3VsdHMnXQorICAgICAgICAgICAgICAgICAgICAgICAgfSkKKworICAgICAg
ICAgICAgcmVzdWx0cyA9IFtdCisKKyAgICAgICAgICAgICMgTWFrZSBzdXJlIHdlIHJlY2lldmVk
IGRhdGEKKyAgICAgICAgICAgIGlmIGxlbihkYXRhKSA9PSAwOgorICAgICAgICAgICAgICAgIHJl
dHVybiBqc29uaWZ5KHt9KQorCisgICAgICAgICAgICAjIFN0YXJ0IGtlZXBpbmcgdHJhY2sgb2Yg
cmVzdWx0IGRhdGEKKyAgICAgICAgICAgIGZvciB0ZXN0X3Jlc3VsdCBpbiBkYXRhOgorICAgICAg
ICAgICAgICAgIGN1cnJlbnRfcmVzdWx0ID0geworICAgICAgICAgICAgICAgICAgICAnY29uZmln
dXJhdGlvbic6IHRlc3RfcmVzdWx0Wydjb25maWd1cmF0aW9uJ10sCisgICAgICAgICAgICAgICAg
ICAgICdyZXN1bHRzJzoge30KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAj
IE1ha2Ugc3VyZSB0ZXN0cyBoYXZlIGJlZW4gcnVuIGFuZCBjb2xsZWN0aW9uCisgICAgICAgICAg
ICAgICAgIyBpcyBub3QgZW1wdHkKKyAgICAgICAgICAgICAgICBpZiBsZW4odGVzdF9yZXN1bHRb
J3Jlc3VsdHMnXSkgPT0gMDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKworICAgICAgICAg
ICAgICAgICMgQ2FsY3VsYXRlIHRoZSB0b3RhbCBwb2ludHMgdXNlZCBmb3IgY2FsY3VsYXRpbmcK
KyAgICAgICAgICAgICAgICAjIHRoZSBwZXJjZW50YWdlIGZvciBlYWNoIHR5cGUgb2YgcmVzdWx0
CisgICAgICAgICAgICAgICAgY3VycmVudF9yZXN1bHRbJ3Jlc3VsdHMnXSA9IHNlbGYuY2FsY3Vs
YXRlX3Jlc3VsdHModGVzdF9yZXN1bHQsIChsZW4odGVzdF9yZXN1bHRbJ3Jlc3VsdHMnXVswXSkg
LSAxKSAvLyAyKQorCisgICAgICAgICAgICAgICAgIyBBZGQgdGhlIGNvbmZpZ3VyYXRpb24gcmVz
dWx0cyB0byBtYXN0ZXIgY29sbGVjdGlvbgorICAgICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5k
KGN1cnJlbnRfcmVzdWx0KQorCisgICAgICAgICAgICAjIENhbGN1bGF0ZSB0aGUgb3ZlcmFsbCwg
Y29tYmluZWQgdmFsdWUgb2YKKyAgICAgICAgICAgICMgYWxsIHJlc3VsdHMgZnJvbSBhbGwgY29u
ZmlndXJhdGlvbnMgYW5kIHJlcG9ydAorICAgICAgICAgICAgcmVzdWx0cyA9IHNlbGYuY2FsY3Vs
YXRlX292ZXJhbGxfcmVzdWx0cyhyZXN1bHRzKQorCisgICAgICAgICAgICAjIFJlcG9ydCB0aGUg
cmVzdWx0cyBmb3IgdGhlIHRlc3QKKyAgICAgICAgICAgIHJldHVybiBqc29uaWZ5KHJlc3VsdHMp
CkluZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS92
aWV3L3RlbXBsYXRlcy9kb2N1bWVudGF0aW9uLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2Ny
aXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy90ZW1wbGF0ZXMvZG9j
dW1lbnRhdGlvbi5odG1sCShyZXZpc2lvbiAyNzg3MjQpCisrKyBUb29scy9TY3JpcHRzL2xpYnJh
cmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS92aWV3L3RlbXBsYXRlcy9kb2N1bWVudGF0aW9u
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTM1OSw2ICszNTksMjQgQEAgY29uc3QgZG9jdW1lbnRh
dGlvbiA9IHsKICAgICAgICAgICAgICAgICAgICAgYHdoZXJlICZsdGNvbmZpZ3VyYXRpb24tb2Jq
ZWN0LWEmZ3QgYW5kICZsdGNvbmZpZ3VyYXRpb24tb2JqZWN0LWImZ3QgYXJlIGJvdGggJHtsb2Nh
bExpbmsoWydRdWVyeSBQYXJhbWV0ZXJzJywgJ0NvbmZpZ3VyYXRpb24nXSwgJ2NvbmZpZ3VyYXRp
b24gb2JqZWN0cycpfScgYW5kICZsdHJ1bi1hMSZndCwgJmx0cnVuLWEyJmd0LCAmbHRydW4tYjEm
Z3QgYW5kICZsdHJ1bi1iMiZndCBhcmUgYWxsIHRoZSBhZmZvcm1lbnRpb25lZCBzaW5nbGUgdGVz
dCByZXN1bHQgZGljdGlvbmFyeS5gLAogICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAp
LAorICAgICAgICBdLCAnQ29uZmlkZW5jZSBDaGVjayc6IFsKKyAgICAgICAgICAgIGBUaGUgcmVz
dWx0cy1kYXRhYmFzZSBwcmVmb3JtcyBwb3N0LXByb2Nlc3Npbmcgb24gZXZlcnkgdXBsb2FkIHRv
IHNvcnQgdGVzdCByZXN1bHRzLiBFYWNoIHRlc3QgaGFzIGl0J3MgcmVzdWx0cyBzYXZlZCBpbmRl
cGVuZGVudGx5IGFuZCBoaWdoLWxldmVsIHJlc3VsdHMgZm9yIGEgdGVzdCBzdWl0ZSBhcmUgYWxz
byBzdG9yZWQuIFRoZSByZXN1bHRzIGRhdGFiYXNlIGNsYXNzaWZpZXMgZXZlcnkgdGVzdCBmYWls
dXJlIHdpdGggdGhlIGZvbGxvd2luZyBtYXBwaW5nOmAsCisgICAgICAgICAgICBjb2RlQmxvY2so
J3tcbicgKyBbJ0NSQVNIJywgJ1RJTUVPVVQnLCAnSU1BR0UnLCAnQVVESU8nLCAnVEVYVCcsICdG
QUlMJywgJ0VSUk9SJywgJ1dBUk5JTkcnLCAnUEFTUyddLm1hcCgoa2V5KSA9PiB7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIGAgICAgIiR7a2V5fSI6ICR7RXhwZWN0YXRpb25zLnN0cmluZ1RvU3Rh
dGVJZChrZXkpfWA7CisgICAgICAgICAgICB9KS5qb2luKCcsXG4nKSArICdcbn0nKSwKKyAgICAg
ICAgICAgIGBSZXN1bHRzIHdoaWNoIGhhdmUgbG93ZXIgbnVtYmVycyB3aWxsIHRha2UgcHJlY2Vk
ZW5jZSBvdmVyIHRob3NlIHdpdGggc21hbGxlciBvbmVzLiBGb3IgZXhhbXBsZSwgaWYgYSB0ZXN0
IGhhcyBhIHJlc3VsdCB3aGljaCBpcyBzaW11bHRhbmlvdXNseSBhIFRJTUVPVVQgYW5kIGEgRkFJ
TFVSRSwgdGhlIHJlc3VsdHMgZGF0YWJhc2Ugd291bGQgdHJlYXQgdGhhdCB0ZXN0IGFzIGEgVElN
RU9VVC5gLAorICAgICAgICAgICAgYFRoZSByZXN1bHRzLWRhdGFiYXNlIHJldHVybnMgYW4gYW5h
bHlzaXMgb2YgdGhlc2UgZ2l2ZW4gcmVzdWx0cyBjZW50ZXJlZCBhcm91bmQgYSBjb21taXQgdGhh
dCBoYXMgYmVlbiBwcm92aWRlZC4gVGhpcyBnaXZlcyBpbnNpZ2h0IGludG8gaG93IHRoZSB0ZXN0
IGlzIGJlaGF2aW5nIGFzIHdlbGwgYXMgYmVpbmcgYWJsZSB0byBwcmVkaWN0IHRoZSBjaGFuY2Ug
b2YgYSBnaXZlbiB0ZXN0J3MgY2xhc3NpZmljYXRpb24gb2YgZmFpbHVyZS5gLAorICAgICAgICAg
ICAgZG9jdW1lbnRFbmRwb2ludCgKKyAgICAgICAgICAgICAgICAnL2FwaS9jb25maWRlbmNlLyZs
dHN1aXRlJmd0LyZsdHRlc3QmZ3QnLAorICAgICAgICAgICAgICAgIFsnR0VUJ10sCisgICAgICAg
ICAgICAgICAgWydCcmFuY2gnLCAnQ29uZmlndXJhdGlvbicsICdMaW1pdCcsICdSZXBvc2l0b3J5
JywgJ1RpbWUnLCAnUmVmJywgJ1VVSUQnXSwKKyAgICAgICAgICAgICAgICBbCisgICAgICAgICAg
ICAgICAgICAgIGBFbmRwb2ludCB3aGljaCByZXR1cm5zIHByZWRpY3RlZCByZXN1bHRzIGZvciBh
IHNwZWNpZmljIHRlc3QuIE9uIHRoaXMgZW5kcG9pbnQsIHJlc3VsdHMgYXJlIGluIGEgZGljdGlv
bmFyeSBmb3JtYXRlZCBsaWtlIHRoaXM6YCwKKyAgICAgICAgICAgICAgICAgICAgY29kZWJsb2Nr
KCd7XG4nICsKKyAgICAgICAgICAgICAgICAgICAgJyAgIDxyZXN1bHQtY2xhc3NpZmljYXRpb24+
OiA8cGVyY2VudGFnZT4nCisgICAgICAgICAgICAgICAgICAgICd9JyksCisgICAgICAgICAgICAg
ICAgXSwKKyAgICAgICAgICAgICksCiAgICAgICAgIF0sICdGYWlsdXJlIEFuYWx5c2lzJzogWwog
ICAgICAgICAgICAgYFJlc3VsdHMgZGF0YWJhc2VzIHByb3ZpZGUgYSBmZXcgQVBJcyB0byBhc3Np
c3QgaW4gdGhlIGludmVzdGlnYXRpb24gb2YgdGVzdCBmYWlsdXJlcy4gVGhlc2UgYW5hbHlzaXMg
ZW5kcG9pbnRzIGFnZ3JlZ2F0ZSBkYXRhIGZyb20gbXVsdGlwbGUgdGVzdCBydW5zIGZvciBjb25z
dW1wdGlvbiBieSBib3RoIGh1bWFucyBhbmQgYXV0b21hdGVkIHN5c3RlbXMuYCwKICAgICAgICAg
ICAgIGRvY3VtZW50RW5kcG9pbnQoCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435221</attachid>
            <date>2021-08-09 16:15:44 -0700</date>
            <delta_ts>2021-08-10 10:05:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226894-20210809161543.patch</filename>
            <type>text/plain</type>
            <size>19121</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI4MDgwMSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDMzIEBACisyMDIxLTA4LTA5ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBbcmVzdWx0c2RicHldIEFkZCBhZ2dyZWdhdGUtcmVzdWx0cyBBUEkKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjg5NAorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vNzkxNTUxODE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9y
ZXN1bHRzZGJweS9fX2luaXRfXy5weTogQnVtcCB2ZXJzaW9uLgorICAgICAgICAqIFNjcmlwdHMv
bGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIvYXBpX3JvdXRlcy5w
eToKKyAgICAgICAgKEFQSVJvdXRlcy5fX2luaXRfXyk6IEFkZCBhZ2dyZWdhdGUtcmVzdWx0cyBl
bmRwb2ludC4KKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRz
ZGJweS9jb250cm9sbGVyL2NvbW1pdF9jb250cm9sbGVyLnB5OgorICAgICAgICAoY29tbWl0X2Zv
cl9xdWVyeSk6IEFkZCBkZWNvcmF0b3Igd2hpY2ggY29udmVydHMgYSBzZXQgb2YgYXJndW1lbnRz
IGludG8gYSBzaW5nbGUgY29tbWl0LgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3Jlc3Vs
dHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIvdGVzdF9jb250cm9sbGVyLnB5OgorICAgICAg
ICAoVGVzdENvbnRyb2xsZXIpOgorICAgICAgICAoVGVzdENvbnRyb2xsZXIuYWdncmVnYXRlX3Rl
c3RfcmVzdWx0cyk6IEdpdmVuIGEgc2luZ2xlIGNvbW1pdCBhbmQgc3VpdGUvdGVzdCBjb21iaW5h
dGlvbiwgY29tcHV0ZQorICAgICAgICB0aGUgbGlrbGlob29kIG9mIGVhY2ggcG90ZW50aWFsIHJl
c3VsdC4KKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJw
eS9jb250cm9sbGVyL3Rlc3RfY29udHJvbGxlcl91bml0dGVzdC5weToKKyAgICAgICAgKFRlc3RD
b250cm9sbGVyVGVzdC50ZXN0X2FnZ3JlZ2F0aW9uKTogQWRkZWQuCisgICAgICAgICogU2NyaXB0
cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvY29tbWl0X2NvbnRleHQu
cHk6CisgICAgICAgIChDb21taXRDb250ZXh0LmZpbmRfY29tbWl0c19pbl9yYW5nZSk6IFVzZSBh
c2NlbmRlZCB0YWJsZSBpZiB1c2VyIG9ubHkgcHJvdmlkZXMgbG93ZXIgYm91bmQuCisgICAgICAg
ICogU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvY29tbWl0
X2NvbnRleHRfdW5pdHRlc3QucHk6CisgICAgICAgIChDb21taXRDb250ZXh0VGVzdC50ZXN0X3N0
YXNoX2NvbW1pdHNfYmVmb3JlKTogVmVyaWZ5IHVwcGVyIGJvdW5kLgorICAgICAgICAoQ29tbWl0
Q29udGV4dFRlc3QudGVzdF9zdm5fY29tbWl0c19iZWZvcmUpOiBEaXR0by4KKyAgICAgICAgKENv
bW1pdENvbnRleHRUZXN0LnRlc3Rfc3Rhc2hfY29tbWl0c19hZnRlcik6IFZlcmlmeSBsb3dlciBi
b3VuZC4KKyAgICAgICAgKENvbW1pdENvbnRleHRUZXN0LnRlc3Rfc3ZuX2NvbW1pdHNfYWZ0ZXIp
OiBEaXR0by4KKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRz
ZGJweS92aWV3L3RlbXBsYXRlcy9kb2N1bWVudGF0aW9uLmh0bWw6IEFkZCBhZ2dyZWdhdGUtcmVz
dWx0cworICAgICAgICBkb2N1bWVudGF0aW9uLgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVz
L3Jlc3VsdHNkYnB5L3NldHVwLnB5OiBCdW1wIHZlcnNpb24uCisKIDIwMjEtMDgtMDggIFdlbnNv
biBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgY2FyZXQtY29sb3Ig
ZG9lcyBub3Qgd29yayBvbiBmaXJzdCBjbGljayBpbiBpb3MKSW5kZXg6IFRvb2xzL1NjcmlwdHMv
bGlicmFyaWVzL3Jlc3VsdHNkYnB5L3NldHVwLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Njcmlw
dHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3NldHVwLnB5CShyZXZpc2lvbiAyODA3ODkpCisrKyBU
b29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9zZXR1cC5weQkod29ya2luZyBjb3B5
KQpAQCAtMzAsNyArMzAsNyBAQCBkZWYgcmVhZG1lKCk6CiAKIHNldHVwKAogICAgIG5hbWU9J3Jl
c3VsdHNkYnB5JywKLSAgICB2ZXJzaW9uPSczLjAuMicsCisgICAgdmVyc2lvbj0nMy4xLjAnLAog
ICAgIGRlc2NyaXB0aW9uPSdMaWJyYXJ5IGZvciB2aXN1YWxpemluZywgcHJvY2Vzc2luZyBhbmQg
c3RvcmluZyB0ZXN0IHJlc3VsdHMuJywKICAgICBsb25nX2Rlc2NyaXB0aW9uPXJlYWRtZSgpLAog
ICAgIGNsYXNzaWZpZXJzPVsKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNk
YnB5L3Jlc3VsdHNkYnB5L19faW5pdF9fLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMv
bGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L19faW5pdF9fLnB5CShyZXZpc2lvbiAy
ODA3ODkpCisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJw
eS9fX2luaXRfXy5weQkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNyBAQCBleGNlcHQgSW1w
b3J0RXJyb3I6CiAgICAgICAgICJQbGVhc2UgaW5zdGFsbCB3ZWJraXRjb3JlcHkgd2l0aCBgcGlw
IGluc3RhbGwgd2Via2l0Y29yZXB5IC0tZXh0cmEtaW5kZXgtdXJsIDxwYWNrYWdlIGluZGV4IFVS
TD5gIgogICAgICkKIAotdmVyc2lvbiA9IFZlcnNpb24oMywgMCwgMikKK3ZlcnNpb24gPSBWZXJz
aW9uKDMsIDEsIDApCiAKIGltcG9ydCB3ZWJraXRmbGFza3B5CiAKSW5kZXg6IFRvb2xzL1Njcmlw
dHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIvYXBpX3JvdXRl
cy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9y
ZXN1bHRzZGJweS9jb250cm9sbGVyL2FwaV9yb3V0ZXMucHkJKHJldmlzaW9uIDI4MDc4OSkKKysr
IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xs
ZXIvYXBpX3JvdXRlcy5weQkod29ya2luZyBjb3B5KQpAQCAtNzAsNiArNzAsNyBAQCBjbGFzcyBB
UElSb3V0ZXMoQXV0aGVkQmx1ZXByaW50KToKIAogICAgICAgICBzZWxmLmFkZF91cmxfcnVsZSgn
L3Jlc3VsdHMvPHBhdGg6c3VpdGU+JywgJ3N1aXRlLXJlc3VsdHMnLCBzZWxmLnN1aXRlX2NvbnRy
b2xsZXIuZmluZF9ydW5fcmVzdWx0cywgbWV0aG9kcz0oJ0dFVCcsKSkKICAgICAgICAgc2VsZi5h
ZGRfdXJsX3J1bGUoJy9yZXN1bHRzLzxwYXRoOnN1aXRlPi88cGF0aDp0ZXN0PicsICd0ZXN0LXJl
c3VsdHMnLCBzZWxmLnRlc3RfY29udHJvbGxlci5maW5kX3Rlc3RfcmVzdWx0LCBtZXRob2RzPSgn
R0VUJywpKQorICAgICAgICBzZWxmLmFkZF91cmxfcnVsZSgnL2FnZ3JlZ2F0ZS1yZXN1bHRzLzxw
YXRoOnN1aXRlPi88cGF0aDp0ZXN0PicsICd0ZXN0LWFnZ3JlZ2F0ZS1yZXN1bHRzJywgc2VsZi50
ZXN0X2NvbnRyb2xsZXIuYWdncmVnYXRlX3Rlc3RfcmVzdWx0cywgbWV0aG9kcz0oJ0dFVCcsKSkK
IAogICAgICAgICBzZWxmLmFkZF91cmxfcnVsZSgnL2ZhaWx1cmVzLzxwYXRoOnN1aXRlPicsICdz
dWl0ZS1mYWlsdXJlcycsIHNlbGYuZmFpbHVyZV9jb250cm9sbGVyLmZhaWx1cmVzLCBtZXRob2Rz
PSgnR0VUJywpKQogCkluZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9y
ZXN1bHRzZGJweS9jb250cm9sbGVyL2NvbW1pdF9jb250cm9sbGVyLnB5Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xs
ZXIvY29tbWl0X2NvbnRyb2xsZXIucHkJKHJldmlzaW9uIDI4MDc4OSkKKysrIFRvb2xzL1Njcmlw
dHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIvY29tbWl0X2Nv
bnRyb2xsZXIucHkJKHdvcmtpbmcgY29weSkKQEAgLTEyNSw2ICsxMjUsMjYgQEAgZGVmIHV1aWRf
cmFuZ2VfZm9yX3F1ZXJ5KCk6CiAgICAgcmV0dXJuIGRlY29yYXRvcgogCiAKK2RlZiBjb21taXRf
Zm9yX3F1ZXJ5KCk6CisgICAgZGVmIGRlY29yYXRvcihtZXRob2QpOgorICAgICAgICBkZWYgcmVh
bF9tZXRob2Qob2JqLCByZXBvc2l0b3J5X2lkPU5vbmUsIGJyYW5jaD1Ob25lLCBpZD1Ob25lLCBy
ZWY9Tm9uZSwgdXVpZD1Ob25lLCB0aW1lc3RhbXA9Tm9uZSwgKiprd2FyZ3MpOgorICAgICAgICAg
ICAgIyBXZSdyZSBtYWtpbmcgYW4gYXNzdW1wdGlvbiB0aGF0IHRoZSBjbGFzcyB1c2luZyB0aGlz
IGRlY29yYXRvciBhY3R1YWxseSBoYXMgYSBjb21taXRfY29udGV4dCwgaWYgaXQgZG9lcyBub3Qs
CisgICAgICAgICAgICAjIHRoaXMgZGVjb3JhdG9yIHdpbGwgZmFpbCBzcGVjdGFjdWxhcmx5Cisg
ICAgICAgICAgICB3aXRoIG9iai5jb21taXRfY29udGV4dDoKKyAgICAgICAgICAgICAgICBpZiBu
b3QgYnJhbmNoOgorICAgICAgICAgICAgICAgICAgICBicmFuY2ggPSBbTm9uZV0KKyAgICAgICAg
ICAgICAgICByZXR1cm4gbWV0aG9kKG9iaiwgYnJhbmNoPWJyYW5jaCwgY29tbWl0PV9maW5kX2Nv
bXBhcmlzb24oCisgICAgICAgICAgICAgICAgICAgIG9iai5jb21taXRfY29udGV4dCwgcmVwb3Np
dG9yeV9pZD1yZXBvc2l0b3J5X2lkLCBicmFuY2g9YnJhbmNoLAorICAgICAgICAgICAgICAgICAg
ICByZWY9cmVmIG9yIGlkLAorICAgICAgICAgICAgICAgICAgICB1dWlkPXV1aWQsIHRpbWVzdGFt
cD10aW1lc3RhbXAsIHByaW9yaXR5PW1heCwKKyAgICAgICAgICAgICAgICApLCAqKmt3YXJncykK
KworICAgICAgICByZWFsX21ldGhvZC5fX25hbWVfXyA9IG1ldGhvZC5fX25hbWVfXworICAgICAg
ICByZXR1cm4gcmVhbF9tZXRob2QKKworICAgIHJldHVybiBkZWNvcmF0b3IKKworCiBjbGFzcyBI
YXNDb21taXRDb250ZXh0KG9iamVjdCk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNvbW1pdF9j
b250ZXh0KToKICAgICAgICAgc2VsZi5jb21taXRfY29udGV4dCA9IGNvbW1pdF9jb250ZXh0Cklu
ZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9jb250
cm9sbGVyL3Rlc3RfY29udHJvbGxlci5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2xp
YnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9jb250cm9sbGVyL3Rlc3RfY29udHJvbGxl
ci5weQkocmV2aXNpb24gMjgwNzg5KQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0
c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxlci90ZXN0X2NvbnRyb2xsZXIucHkJKHdvcmtpbmcg
Y29weSkKQEAgLTIxLDEwICsyMSwxMiBAQAogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiBmcm9tIGZsYXNrIGlt
cG9ydCBhYm9ydCwganNvbmlmeQotZnJvbSByZXN1bHRzZGJweS5jb250cm9sbGVyLmNvbW1pdF9j
b250cm9sbGVyIGltcG9ydCB1dWlkX3JhbmdlX2Zvcl9xdWVyeSwgSGFzQ29tbWl0Q29udGV4dAor
ZnJvbSBoZWFwcSBpbXBvcnQgbWVyZ2UKK2Zyb20gcmVzdWx0c2RicHkuY29udHJvbGxlci5jb21t
aXRfY29udHJvbGxlciBpbXBvcnQgdXVpZF9yYW5nZV9mb3JfcXVlcnksIGNvbW1pdF9mb3JfcXVl
cnksIEhhc0NvbW1pdENvbnRleHQKIGZyb20gcmVzdWx0c2RicHkuY29udHJvbGxlci5jb25maWd1
cmF0aW9uIGltcG9ydCBDb25maWd1cmF0aW9uCiBmcm9tIHJlc3VsdHNkYnB5LmNvbnRyb2xsZXIu
Y29uZmlndXJhdGlvbl9jb250cm9sbGVyIGltcG9ydCBjb25maWd1cmF0aW9uX2Zvcl9xdWVyeQog
ZnJvbSByZXN1bHRzZGJweS5jb250cm9sbGVyLnN1aXRlX2NvbnRyb2xsZXIgaW1wb3J0IHRpbWVf
cmFuZ2VfZm9yX3F1ZXJ5Citmcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLnRlc3RfY29udGV4dCBpbXBv
cnQgRXhwZWN0YXRpb25zCiBmcm9tIHdlYmtpdGZsYXNrcHkudXRpbCBpbXBvcnQgQXNzZXJ0UmVx
dWVzdCwgcXVlcnlfYXNfa3dhcmdzLCBsaW1pdF9mb3JfcXVlcnksIGJvb2xlYW5fcXVlcnkKIAog
CkBAIC0xMDIsMyArMTA0LDEwMiBAQCBjbGFzcyBUZXN0Q29udHJvbGxlcihIYXNDb21taXRDb250
ZXh0KToKICAgICAgICAgICAgICAgICAgICAgcmVzdWx0cz1zb3J0ZWQocmVzdWx0cywga2V5PXNv
cnRfZnVuY3Rpb24pLAogICAgICAgICAgICAgICAgICkpCiAgICAgICAgICAgICByZXR1cm4ganNv
bmlmeShyZXNwb25zZSkKKworICAgIEBxdWVyeV9hc19rd2FyZ3MoKQorICAgIEBjb21taXRfZm9y
X3F1ZXJ5KCkKKyAgICBAbGltaXRfZm9yX3F1ZXJ5KDEwMCkKKyAgICBAY29uZmlndXJhdGlvbl9m
b3JfcXVlcnkoKQorICAgIGRlZiBhZ2dyZWdhdGVfdGVzdF9yZXN1bHRzKAorICAgICAgICBzZWxm
LCBzdWl0ZT1Ob25lLCB0ZXN0PU5vbmUsCisgICAgICAgIGNvbmZpZ3VyYXRpb25zPU5vbmUsIHJl
Y2VudD1Ob25lLAorICAgICAgICBicmFuY2g9Tm9uZSwgY29tbWl0PU5vbmUsCisgICAgICAgIGxp
bWl0PU5vbmUsICoqa3dhcmdzCisgICAgKToKKyAgICAgICAgQXNzZXJ0UmVxdWVzdC5pc190eXBl
KFsnR0VUJ10pCisgICAgICAgIEFzc2VydFJlcXVlc3QucXVlcnlfa3dhcmdzX2VtcHR5KCoqa3dh
cmdzKQorCisgICAgICAgIHJlY2VudCA9IGJvb2xlYW5fcXVlcnkoKnJlY2VudClbMF0gaWYgcmVj
ZW50IGVsc2UgVHJ1ZQorCisgICAgICAgIGlmIG5vdCBzdWl0ZToKKyAgICAgICAgICAgIGFib3J0
KDQwMCwgZGVzY3JpcHRpb249J05vIHN1aXRlIHNwZWNpZmllZCcpCisgICAgICAgIGlmIG5vdCB0
ZXN0OgorICAgICAgICAgICAgYWJvcnQoNDAwLCBkZXNjcmlwdGlvbj0nTm8gdGVzdCBzcGVjaWZp
ZWQnKQorCisgICAgICAgIGxpbWl0ICs9IDEKKyAgICAgICAgYmVmb3JlX2NvbW1pdHMgPSBbXQor
ICAgICAgICBhZnRlcl9jb21taXRzID0gW10KKyAgICAgICAgd2l0aCBzZWxmLmNvbW1pdF9jb250
ZXh0OgorICAgICAgICAgICAgZm9yIHJlcG9faWQgaW4gc2VsZi5jb21taXRfY29udGV4dC5yZXBv
c2l0b3JpZXMua2V5cygpOgorICAgICAgICAgICAgICAgIGlmIGNvbW1pdDoKKyAgICAgICAgICAg
ICAgICAgICAgYmVmb3JlX2NvbW1pdHMgPSBzb3J0ZWQobGlzdChyZXZlcnNlZChzZWxmLmNvbW1p
dF9jb250ZXh0LmZpbmRfY29tbWl0c19pbl9yYW5nZSgKKyAgICAgICAgICAgICAgICAgICAgICAg
IHJlcG9zaXRvcnlfaWQ9cmVwb19pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGVuZD1jb21t
aXQsIGJyYW5jaD1icmFuY2hbMF0sIGxpbWl0PWxpbWl0LAorICAgICAgICAgICAgICAgICAgICAp
KSkgKyBiZWZvcmVfY29tbWl0cykKKyAgICAgICAgICAgICAgICAgICAgYWZ0ZXJfY29tbWl0cyA9
IHNvcnRlZChsaXN0KHJldmVyc2VkKHNlbGYuY29tbWl0X2NvbnRleHQuZmluZF9jb21taXRzX2lu
X3JhbmdlKAorICAgICAgICAgICAgICAgICAgICAgICAgcmVwb3NpdG9yeV9pZD1yZXBvX2lkLAor
ICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW49Y29tbWl0LCBicmFuY2g9YnJhbmNoWzBdLCBs
aW1pdD1saW1pdCwKKyAgICAgICAgICAgICAgICAgICAgKSkpICsgYWZ0ZXJfY29tbWl0cykKKyAg
ICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBiZWZvcmVfY29tbWl0cyA9
IGxpc3QobWVyZ2UoCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNvbW1pdF9jb250ZXh0
LmZpbmRfY29tbWl0c19pbl9yYW5nZShyZXBvc2l0b3J5X2lkPXJlcG9faWQsIGJyYW5jaD1icmFu
Y2hbMF0sIGxpbWl0PWxpbWl0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGJlZm9yZV9jb21t
aXRzLAorICAgICAgICAgICAgICAgICAgICApKQorICAgICAgICAgICAgICAgICAgICBiZWZvcmVf
Y29tbWl0cy5yZXZlcnNlKCkKKyAgICAgICAgICAgICAgICBhZnRlcl9jb21taXRzLnJldmVyc2Uo
KQorCisgICAgICAgIGJlZm9yZV9jb21taXRzID0gc29ydGVkKGJlZm9yZV9jb21taXRzKQorICAg
ICAgICBhZnRlcl9jb21taXRzID0gc29ydGVkKGFmdGVyX2NvbW1pdHMpCisKKyAgICAgICAgYmVm
b3JlX2NvbW1pdHMgPSBiZWZvcmVfY29tbWl0c1stbGltaXQ6XQorICAgICAgICBhZnRlcl9jb21t
aXRzID0gYWZ0ZXJfY29tbWl0c1s6bGltaXRdCisgICAgICAgIGlmIGJlZm9yZV9jb21taXRzIGFu
ZCBhZnRlcl9jb21taXRzIGFuZCBiZWZvcmVfY29tbWl0c1stMV0gPT0gYWZ0ZXJfY29tbWl0c1sw
XToKKyAgICAgICAgICAgIGRlbCBiZWZvcmVfY29tbWl0c1stMV0KKworICAgICAgICBpZiBub3Qg
YmVmb3JlX2NvbW1pdHMgYW5kIG5vdCBhZnRlcl9jb21taXRzOgorICAgICAgICAgICAgcmV0dXJu
IGFib3J0KDQwMCwgZGVzY3JpcHRpb249J05vIGNvbW1pdHMgaW4gc3BlY2lmaWVkIHJhbmdlJykK
KworICAgICAgICAjIFVzZSB0aGUgbGluZWFyIGRpc3RhbmNlIGZyb20gdGhlIHNwZWNpZmllZCBj
b21taXQKKyAgICAgICAgc2NhbGVfZm9yX3V1aWQgPSB7fQorICAgICAgICBjb3VudCA9IGxpbWl0
IC0gMQorICAgICAgICBmb3IgYyBpbiByZXZlcnNlZChiZWZvcmVfY29tbWl0cyk6CisgICAgICAg
ICAgICBzY2FsZV9mb3JfdXVpZFtjLnV1aWRdID0gY291bnQKKyAgICAgICAgICAgIGNvdW50IC09
IDEKKyAgICAgICAgY291bnQgPSBsaW1pdAorICAgICAgICBmb3IgYyBpbiBhZnRlcl9jb21taXRz
OgorICAgICAgICAgICAgc2NhbGVfZm9yX3V1aWRbYy51dWlkXSA9IGNvdW50CisgICAgICAgICAg
ICBjb3VudCAtPSAxCisKKyAgICAgICAgIyBBIGRpcmVjdCBtYXRjaCB0byB0aGUgcHJvdmlkZWQg
Y29tbWl0IG1hdHRlcnMgbW9zdAorICAgICAgICBpZiBjb21taXQ6CisgICAgICAgICAgICBzY2Fs
ZV9mb3JfdXVpZFtjb21taXQudXVpZF0gPSBsaW1pdCAqIDIKKworICAgICAgICB1ZHMgPSBbXQor
ICAgICAgICB3aXRoIHNlbGYudGVzdF9jb250ZXh0OgorICAgICAgICAgICAgcmVzcG9uc2UgPSB7
fQorICAgICAgICAgICAgZm9yIGNvbmZpZywgcmVzdWx0cyBpbiBzZWxmLnRlc3RfY29udGV4dC5m
aW5kX2J5X2NvbW1pdCgKKyAgICAgICAgICAgICAgICBzdWl0ZT1zdWl0ZSwgdGVzdD10ZXN0LAor
ICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25zPWNvbmZpZ3VyYXRpb25zLCByZWNlbnQ9cmVj
ZW50LAorICAgICAgICAgICAgICAgIGJyYW5jaD1icmFuY2hbMF0sCisgICAgICAgICAgICAgICAg
bGltaXQ9bGltaXQgKiA0LAorICAgICAgICAgICAgICAgIGJlZ2luPShiZWZvcmVfY29tbWl0cyBv
ciBhZnRlcl9jb21taXRzKVswXSwgZW5kPShhZnRlcl9jb21taXRzIG9yIGJlZm9yZV9jb21taXRz
KVstMV0sCisgICAgICAgICAgICApLml0ZW1zKCk6CisgICAgICAgICAgICAgICAgZm9yIHJlc3Vs
dCBpbiByZXN1bHRzOgorICAgICAgICAgICAgICAgICAgICB1ZHMuYXBwZW5kKHN0cihyZXN1bHRb
J3V1aWQnXSkpCisgICAgICAgICAgICAgICAgICAgIHNjYWxlID0gc2NhbGVfZm9yX3V1aWQuZ2V0
KGludChyZXN1bHRbJ3V1aWQnXSksIDApCisgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBzY2Fs
ZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgICAg
IHRhZyA9IHJlc3VsdFsnYWN0dWFsJ10KKyAgICAgICAgICAgICAgICAgICAgaWYgRXhwZWN0YXRp
b25zLnN0cmluZ190b19zdGF0ZV9pZHModGFnKSA8IEV4cGVjdGF0aW9ucy5zdHJpbmdfdG9fc3Rh
dGVfaWRzKHJlc3VsdFsnZXhwZWN0ZWQnXSk6CisgICAgICAgICAgICAgICAgICAgICAgICB0YWcg
PSAndW5leHBlY3RlZF97fScuZm9ybWF0KHRhZy5sb3dlcigpKQorICAgICAgICAgICAgICAgICAg
ICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgdGFnID0gdGFnLmxvd2VyKCkKKyAgICAg
ICAgICAgICAgICAgICAgcmVzcG9uc2VbdGFnXSA9IHJlc3BvbnNlLmdldCh0YWcsIDApICsgc2Nh
bGUKKworICAgICAgICBpZiBub3QgcmVzcG9uc2U6CisgICAgICAgICAgICByZXR1cm4gYWJvcnQo
NDAwLCBkZXNjcmlwdGlvbj0nTm8gcmVzdWx0cyBmb3IgY29uZmlndXJhdGlvbiBpbiByYW5nZScp
CisKKyAgICAgICAgYWdncmVnYXRlID0gc3VtKHJlc3BvbnNlLnZhbHVlcygpKQorICAgICAgICBm
b3Iga2V5IGluIHJlc3BvbnNlLmtleXMoKToKKyAgICAgICAgICAgIHJlc3BvbnNlW2tleV0gPSAx
MDAgKiByZXNwb25zZVtrZXldIC8vIChhZ2dyZWdhdGUgb3IgMSkKKworICAgICAgICByZXR1cm4g
anNvbmlmeShyZXNwb25zZSkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNk
YnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIvdGVzdF9jb250cm9sbGVyX3VuaXR0ZXN0LnB5Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNk
YnB5L2NvbnRyb2xsZXIvdGVzdF9jb250cm9sbGVyX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyODA3
ODkpCisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9j
b250cm9sbGVyL3Rlc3RfY29udHJvbGxlcl91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAt
MTM2LDMgKzEzNiwxMSBAQCBjbGFzcyBUZXN0Q29udHJvbGxlclRlc3QoRmxhc2tUZXN0Q2FzZSwg
CiAgICAgICAgIHJlc3BvbnNlID0gY2xpZW50LmdldChzZWxmLlVSTCArIGYnL2FwaS9yZXN1bHRz
L2xheW91dC10ZXN0cy9mYXN0L2VuY29kaW5nL2Nzcy1saW5rLWNoYXJzZXQuaHRtbD9wbGF0Zm9y
bT1pT1Mmc3R5bGU9RGVidWcmcmVjZW50PUZhbHNlJmFmdGVyX3RpbWU9e3RpbWUudGltZSgpICsg
MX0nKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLnN0YXR1c19jb2RlLCAyMDAp
CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJlc3BvbnNlLmpzb24oKSksIDApCisKKyAg
ICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFr
ZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKKyAgICBA
Rmxhc2tUZXN0Q2FzZS5ydW5fd2l0aF93ZWJzZXJ2ZXIoKQorICAgIGRlZiB0ZXN0X2FnZ3JlZ2F0
aW9uKHNlbGYsIGNsaWVudCwgKiprd2FyZ3MpOgorICAgICAgICBzZWxmLm1heERpZmYgPSBOb25l
CisgICAgICAgIHJlc3BvbnNlID0gY2xpZW50LmdldChzZWxmLlVSTCArIGYnL2FwaS9hZ2dyZWdh
dGUtcmVzdWx0cy9sYXlvdXQtdGVzdHMvZmFzdC9lbmNvZGluZy9jc3MtbGluay1jaGFyc2V0Lmh0
bWw/cmVmPTFhYmUyNWI0NDNlOSZsaW1pdD0yJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChy
ZXNwb25zZS5zdGF0dXNfY29kZSwgMjAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3Bv
bnNlLmpzb24oKSwgeydwYXNzJzogMTAwfSkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVz
L3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL2NvbW1pdF9jb250ZXh0LnB5Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21v
ZGVsL2NvbW1pdF9jb250ZXh0LnB5CShyZXZpc2lvbiAyODA3ODkpCisrKyBUb29scy9TY3JpcHRz
L2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC9jb21taXRfY29udGV4dC5w
eQkod29ya2luZyBjb3B5KQpAQCAtMjEzLDE2ICsyMTMsMjAgQEAgY2xhc3MgQ29tbWl0Q29udGV4
dChvYmplY3QpOgogICAgICAgICBpZiBicmFuY2ggaXMgTm9uZToKICAgICAgICAgICAgIGJyYW5j
aCA9IHNlbGYucmVwb3NpdG9yaWVzW3JlcG9zaXRvcnlfaWRdLmRlZmF1bHRfYnJhbmNoCiAKKyAg
ICAgICAgdXNlX2FzY2VuZGluZyA9IGJlZ2luIGFuZCBub3QgZW5kCiAgICAgICAgIGJlZ2luID0g
c2VsZi5jb252ZXJ0X3RvX3V1aWQoYmVnaW4pCiAgICAgICAgIGVuZCA9IHNlbGYuY29udmVydF90
b191dWlkKGVuZCwgc2VsZi50aW1lc3RhbXBfdG9fdXVpZCgpKQogCiAgICAgICAgIHdpdGggc2Vs
ZjoKLSAgICAgICAgICAgIHJldHVybiBbbW9kZWwudG9fY29tbWl0KCkgZm9yIG1vZGVsIGluIHNl
bGYuY2Fzc2FuZHJhLnNlbGVjdF9mcm9tX3RhYmxlKAotICAgICAgICAgICAgICAgIHNlbGYuQ29t
bWl0QnlVdWlkRGVzY2VuZGluZy5fX3RhYmxlX25hbWVfXywgbGltaXQ9bGltaXQsCi0gICAgICAg
ICAgICAgICAgcmVwb3NpdG9yeV9pZD1yZXBvc2l0b3J5X2lkLCBicmFuY2g9YnJhbmNoLAorICAg
ICAgICAgICAgcmVzdWx0ID0gW21vZGVsLnRvX2NvbW1pdCgpIGZvciBtb2RlbCBpbiBzZWxmLmNh
c3NhbmRyYS5zZWxlY3RfZnJvbV90YWJsZSgKKyAgICAgICAgICAgICAgICBzZWxmLkNvbW1pdEJ5
VXVpZEFzY2VuZGluZy5fX3RhYmxlX25hbWVfXyBpZiB1c2VfYXNjZW5kaW5nIGVsc2Ugc2VsZi5D
b21taXRCeVV1aWREZXNjZW5kaW5nLl9fdGFibGVfbmFtZV9fLAorICAgICAgICAgICAgICAgIGxp
bWl0PWxpbWl0LCByZXBvc2l0b3J5X2lkPXJlcG9zaXRvcnlfaWQsIGJyYW5jaD1icmFuY2gsCiAg
ICAgICAgICAgICAgICAgdXVpZF9fZ3RlPWJlZ2luLAogICAgICAgICAgICAgICAgIHV1aWRfX2x0
ZT1lbmQsCiAgICAgICAgICAgICApXQorICAgICAgICAgICAgaWYgdXNlX2FzY2VuZGluZzoKKyAg
ICAgICAgICAgICAgICByZXN1bHQucmV2ZXJzZSgpCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0
CiAKICAgICBkZWYgX2FkamFjZW50X2NvbW1pdChzZWxmLCBjb21taXQsIGFzY2VuZGluZz1UcnVl
KToKICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoY29tbWl0LCBDb21taXQpOgpJbmRleDogVG9v
bHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvY29tbWl0
X2NvbnRleHRfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJp
ZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvY29tbWl0X2NvbnRleHRfdW5pdHRlc3Qu
cHkJKHJldmlzaW9uIDI4MDc4OSkKKysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNk
YnB5L3Jlc3VsdHNkYnB5L21vZGVsL2NvbW1pdF9jb250ZXh0X3VuaXR0ZXN0LnB5CSh3b3JraW5n
IGNvcHkpCkBAIC0xODAsNiArMTgwLDU4IEBAIGNsYXNzIENvbW1pdENvbnRleHRUZXN0KFdhaXRG
b3JEb2NrZXJUZXMKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbWl0cywgc2VsZi5k
YXRhYmFzZS5maW5kX2NvbW1pdHNfaW5fcmFuZ2UocmVwb3NpdG9yeV9pZD0nd2Via2l0JywgYnJh
bmNoPSdtYWluJywgYmVnaW49Y29tbWl0c1stMV0sIGVuZD1jb21taXRzWzBdKSkKIAogICAgIEBX
YWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3Ry
aWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQorICAgIGRlZiB0
ZXN0X3N0YXNoX2NvbW1pdHNfYmVmb3JlKHNlbGYsIHJlZGlzPVN0cmljdFJlZGlzLCBjYXNzYW5k
cmE9Q2Fzc2FuZHJhQ29udGV4dCk6CisgICAgICAgIHdpdGggTW9ja01vZGVsRmFjdG9yeS5zYWZh
cmkoKSwgTW9ja01vZGVsRmFjdG9yeS53ZWJraXQoKToKKyAgICAgICAgICAgIHNlbGYuaW5pdF9k
YXRhYmFzZShyZWRpcz1yZWRpcywgY2Fzc2FuZHJhPWNhc3NhbmRyYSkKKyAgICAgICAgICAgIHNl
bGYuYWRkX2FsbF9jb21taXRzX3RvX2RhdGFiYXNlKCkKKworICAgICAgICAgICAgY29tbWl0cyA9
IFsKKyAgICAgICAgICAgICAgICBzZWxmLnN0YXNoX3JlcG9zaXRvcnkuY29tbWl0KHJlZj0nMWFi
ZTI1YjQ0M2U5JyksCisgICAgICAgICAgICAgICAgc2VsZi5zdGFzaF9yZXBvc2l0b3J5LmNvbW1p
dChyZWY9J2ZmZjgzYmIyZDkxNycpLAorICAgICAgICAgICAgICAgIHNlbGYuc3Rhc2hfcmVwb3Np
dG9yeS5jb21taXQocmVmPSc5YjgzMTFmMjVhNzcnKSwKKyAgICAgICAgICAgIF0KKyAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbWl0cywgc2VsZi5kYXRhYmFzZS5maW5kX2NvbW1pdHNf
aW5fcmFuZ2UocmVwb3NpdG9yeV9pZD0nc2FmYXJpJywgYnJhbmNoPSdtYWluJywgZW5kPWNvbW1p
dHNbMF0sIGxpbWl0PTMpKQorCisgICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25v
X2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9TW9ja0Nh
c3NhbmRyYUNvbnRleHQpCisgICAgZGVmIHRlc3Rfc3ZuX2NvbW1pdHNfYmVmb3JlKHNlbGYsIHJl
ZGlzPVN0cmljdFJlZGlzLCBjYXNzYW5kcmE9Q2Fzc2FuZHJhQ29udGV4dCk6CisgICAgICAgIHdp
dGggTW9ja01vZGVsRmFjdG9yeS5zYWZhcmkoKSwgTW9ja01vZGVsRmFjdG9yeS53ZWJraXQoKToK
KyAgICAgICAgICAgIHNlbGYuaW5pdF9kYXRhYmFzZShyZWRpcz1yZWRpcywgY2Fzc2FuZHJhPWNh
c3NhbmRyYSkKKyAgICAgICAgICAgIHNlbGYuYWRkX2FsbF9jb21taXRzX3RvX2RhdGFiYXNlKCkK
KworICAgICAgICAgICAgY29tbWl0cyA9IFsKKyAgICAgICAgICAgICAgICBzZWxmLnN2bl9yZXBv
c2l0b3J5LmNvbW1pdChyZWY9NiksCisgICAgICAgICAgICAgICAgc2VsZi5zdm5fcmVwb3NpdG9y
eS5jb21taXQocmVmPTQpLAorICAgICAgICAgICAgICAgIHNlbGYuc3ZuX3JlcG9zaXRvcnkuY29t
bWl0KHJlZj0yKSwKKyAgICAgICAgICAgIF0KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
Y29tbWl0cywgc2VsZi5kYXRhYmFzZS5maW5kX2NvbW1pdHNfaW5fcmFuZ2UocmVwb3NpdG9yeV9p
ZD0nd2Via2l0JywgYnJhbmNoPSdtYWluJywgZW5kPWNvbW1pdHNbMF0sIGxpbWl0PTMpKQorCisg
ICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZh
a2VTdHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCisgICAg
ZGVmIHRlc3Rfc3Rhc2hfY29tbWl0c19hZnRlcihzZWxmLCByZWRpcz1TdHJpY3RSZWRpcywgY2Fz
c2FuZHJhPUNhc3NhbmRyYUNvbnRleHQpOgorICAgICAgICB3aXRoIE1vY2tNb2RlbEZhY3Rvcnku
c2FmYXJpKCksIE1vY2tNb2RlbEZhY3Rvcnkud2Via2l0KCk6CisgICAgICAgICAgICBzZWxmLmlu
aXRfZGF0YWJhc2UocmVkaXM9cmVkaXMsIGNhc3NhbmRyYT1jYXNzYW5kcmEpCisgICAgICAgICAg
ICBzZWxmLmFkZF9hbGxfY29tbWl0c190b19kYXRhYmFzZSgpCisKKyAgICAgICAgICAgIGNvbW1p
dHMgPSBbCisgICAgICAgICAgICAgICAgc2VsZi5zdGFzaF9yZXBvc2l0b3J5LmNvbW1pdChyZWY9
JzFhYmUyNWI0NDNlOScpLAorICAgICAgICAgICAgICAgIHNlbGYuc3Rhc2hfcmVwb3NpdG9yeS5j
b21taXQocmVmPSdmZmY4M2JiMmQ5MTcnKSwKKyAgICAgICAgICAgICAgICBzZWxmLnN0YXNoX3Jl
cG9zaXRvcnkuY29tbWl0KHJlZj0nOWI4MzExZjI1YTc3JyksCisgICAgICAgICAgICBdCisgICAg
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1pdHMsIHNlbGYuZGF0YWJhc2UuZmluZF9jb21t
aXRzX2luX3JhbmdlKHJlcG9zaXRvcnlfaWQ9J3NhZmFyaScsIGJyYW5jaD0nbWFpbicsIGJlZ2lu
PWNvbW1pdHNbLTFdLCBsaW1pdD0zKSkKKworICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9j
a19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJh
PU1vY2tDYXNzYW5kcmFDb250ZXh0KQorICAgIGRlZiB0ZXN0X3N2bl9jb21taXRzX2FmdGVyKHNl
bGYsIHJlZGlzPVN0cmljdFJlZGlzLCBjYXNzYW5kcmE9Q2Fzc2FuZHJhQ29udGV4dCk6CisgICAg
ICAgIHdpdGggTW9ja01vZGVsRmFjdG9yeS5zYWZhcmkoKSwgTW9ja01vZGVsRmFjdG9yeS53ZWJr
aXQoKToKKyAgICAgICAgICAgIHNlbGYuaW5pdF9kYXRhYmFzZShyZWRpcz1yZWRpcywgY2Fzc2Fu
ZHJhPWNhc3NhbmRyYSkKKyAgICAgICAgICAgIHNlbGYuYWRkX2FsbF9jb21taXRzX3RvX2RhdGFi
YXNlKCkKKworICAgICAgICAgICAgY29tbWl0cyA9IFsKKyAgICAgICAgICAgICAgICBzZWxmLnN2
bl9yZXBvc2l0b3J5LmNvbW1pdChyZWY9NiksCisgICAgICAgICAgICAgICAgc2VsZi5zdm5fcmVw
b3NpdG9yeS5jb21taXQocmVmPTQpLAorICAgICAgICAgICAgICAgIHNlbGYuc3ZuX3JlcG9zaXRv
cnkuY29tbWl0KHJlZj0yKSwKKyAgICAgICAgICAgIF0KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoY29tbWl0cywgc2VsZi5kYXRhYmFzZS5maW5kX2NvbW1pdHNfaW5fcmFuZ2UocmVwb3Np
dG9yeV9pZD0nd2Via2l0JywgYnJhbmNoPSdtYWluJywgYmVnaW49Y29tbWl0c1stMV0sIGxpbWl0
PTMpKQorCisgICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2Nr
X3JlZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRl
eHQpCiAgICAgZGVmIHRlc3RfY29tbWl0X2Zyb21fc3Rhc2hfcmVwbyhzZWxmLCByZWRpcz1TdHJp
Y3RSZWRpcywgY2Fzc2FuZHJhPUNhc3NhbmRyYUNvbnRleHQpOgogICAgICAgICB3aXRoIE1vY2tN
b2RlbEZhY3Rvcnkuc2FmYXJpKCksIE1vY2tNb2RlbEZhY3Rvcnkud2Via2l0KCk6CiAgICAgICAg
ICAgICBzZWxmLmluaXRfZGF0YWJhc2UocmVkaXM9cmVkaXMsIGNhc3NhbmRyYT1jYXNzYW5kcmEp
CkluZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS92
aWV3L3RlbXBsYXRlcy9kb2N1bWVudGF0aW9uLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2Ny
aXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy90ZW1wbGF0ZXMvZG9j
dW1lbnRhdGlvbi5odG1sCShyZXZpc2lvbiAyODA3ODkpCisrKyBUb29scy9TY3JpcHRzL2xpYnJh
cmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS92aWV3L3RlbXBsYXRlcy9kb2N1bWVudGF0aW9u
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTM1OSw2ICszNTksMjAgQEAgY29uc3QgZG9jdW1lbnRh
dGlvbiA9IHsKICAgICAgICAgICAgICAgICAgICAgYHdoZXJlICZsdGNvbmZpZ3VyYXRpb24tb2Jq
ZWN0LWEmZ3QgYW5kICZsdGNvbmZpZ3VyYXRpb24tb2JqZWN0LWImZ3QgYXJlIGJvdGggJHtsb2Nh
bExpbmsoWydRdWVyeSBQYXJhbWV0ZXJzJywgJ0NvbmZpZ3VyYXRpb24nXSwgJ2NvbmZpZ3VyYXRp
b24gb2JqZWN0cycpfScgYW5kICZsdHJ1bi1hMSZndCwgJmx0cnVuLWEyJmd0LCAmbHRydW4tYjEm
Z3QgYW5kICZsdHJ1bi1iMiZndCBhcmUgYWxsIHRoZSBhZmZvcm1lbnRpb25lZCBzaW5nbGUgdGVz
dCByZXN1bHQgZGljdGlvbmFyeS5gLAogICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAp
LAorICAgICAgICAgICAgZG9jdW1lbnRFbmRwb2ludCgKKyAgICAgICAgICAgICAgICAnL2FwaS9h
Z2dyZWdhdGUtcmVzdWx0cy8mbHRzdWl0ZSZndC8mbHR0ZXN0Jmd0JywKKyAgICAgICAgICAgICAg
ICBbJ0dFVCddLAorICAgICAgICAgICAgICAgIFsnQnJhbmNoJywgJ0NvbmZpZ3VyYXRpb24nLCAn
TGltaXQnLCAnUmVwb3NpdG9yeScsICdSZWYnLCAnVVVJRCddLAorICAgICAgICAgICAgICAgIFsK
KyAgICAgICAgICAgICAgICAgICAgYENvbXB1dGUgdGhlIGNvbWJpbmVkIHJlc3VsdHMgb2YgYSBn
aXZlIHRlc3QgYnkgYWdncmVnYXRpbmcgcmVzdWx0cyBmcm9tIGEgc2V0IG9mIHJ1bnMgc3Vycm91
bmRpbmcgYSBzcGVjaWZpYyBjb21taXQ6YCwKKyAgICAgICAgICAgICAgICAgICAgY29kZUJsb2Nr
KCd7XG4nICsKKyAgICAgICAgICAgICAgICAgICAgJyAgICAicGFzcyI6IDgwLFxuJyArCisgICAg
ICAgICAgICAgICAgICAgICcgICAgImZhaWwiOiAxNSxcbicgKworICAgICAgICAgICAgICAgICAg
ICAnICAgICJjcmFzaCI6IDUsXG4nICsKKyAgICAgICAgICAgICAgICAgICAgJ30nKSwKKyAgICAg
ICAgICAgICAgICAgICAgYFRoZXNlIHJlc3VsdHMgYXJlIGFsd2F5cyB0aGUgd2VpZ2h0ZWQgYWdn
cmVnYXRpb24gb2YgcmVzdWx0cyBmb3IgdGhlIHByb3ZpZGVkIGNvbmZpZ3VyYXRpb25zLCB3aXRo
IHdlaWdodHMgdG8gYmUgdW5kZXJzdG9vZCBhcyBwZXJjZW50IGxpa2xpaG9vZCBhIHRlc3Qgd2ls
bCBoYXZlIGEgY2VydGFpbiByZXN1bHQgb24gYSBnaXZlbiByZXZpc2lvbi5gLAorICAgICAgICAg
ICAgICAgIF0sCisgICAgICAgICAgICApLAogICAgICAgICBdLCAnRmFpbHVyZSBBbmFseXNpcyc6
IFsKICAgICAgICAgICAgIGBSZXN1bHRzIGRhdGFiYXNlcyBwcm92aWRlIGEgZmV3IEFQSXMgdG8g
YXNzaXN0IGluIHRoZSBpbnZlc3RpZ2F0aW9uIG9mIHRlc3QgZmFpbHVyZXMuIFRoZXNlIGFuYWx5
c2lzIGVuZHBvaW50cyBhZ2dyZWdhdGUgZGF0YSBmcm9tIG11bHRpcGxlIHRlc3QgcnVucyBmb3Ig
Y29uc3VtcHRpb24gYnkgYm90aCBodW1hbnMgYW5kIGF1dG9tYXRlZCBzeXN0ZW1zLmAsCiAgICAg
ICAgICAgICBkb2N1bWVudEVuZHBvaW50KAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435269</attachid>
            <date>2021-08-10 10:05:38 -0700</date>
            <delta_ts>2021-08-10 10:39:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226894-20210810100537.patch</filename>
            <type>text/plain</type>
            <size>22554</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI4MDg0MSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDMzIEBACisyMDIxLTA4LTA5ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBbcmVzdWx0c2RicHldIEFkZCBhZ2dyZWdhdGUtcmVzdWx0cyBBUEkKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjg5NAorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vNzkxNTUxODE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9y
ZXN1bHRzZGJweS9fX2luaXRfXy5weTogQnVtcCB2ZXJzaW9uLgorICAgICAgICAqIFNjcmlwdHMv
bGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIvYXBpX3JvdXRlcy5w
eToKKyAgICAgICAgKEFQSVJvdXRlcy5fX2luaXRfXyk6IEFkZCBhZ2dyZWdhdGUtcmVzdWx0cyBl
bmRwb2ludC4KKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRz
ZGJweS9jb250cm9sbGVyL2NvbW1pdF9jb250cm9sbGVyLnB5OgorICAgICAgICAoY29tbWl0X2Zv
cl9xdWVyeSk6IEFkZCBkZWNvcmF0b3Igd2hpY2ggY29udmVydHMgYSBzZXQgb2YgYXJndW1lbnRz
IGludG8gYSBzaW5nbGUgY29tbWl0LgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3Jlc3Vs
dHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIvdGVzdF9jb250cm9sbGVyLnB5OgorICAgICAg
ICAoVGVzdENvbnRyb2xsZXIpOgorICAgICAgICAoVGVzdENvbnRyb2xsZXIuYWdncmVnYXRlX3Rl
c3RfcmVzdWx0cyk6IEdpdmVuIGEgc2luZ2xlIGNvbW1pdCBhbmQgc3VpdGUvdGVzdCBjb21iaW5h
dGlvbiwgY29tcHV0ZQorICAgICAgICB0aGUgbGlrbGlob29kIG9mIGVhY2ggcG90ZW50aWFsIHJl
c3VsdC4KKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJw
eS9jb250cm9sbGVyL3Rlc3RfY29udHJvbGxlcl91bml0dGVzdC5weToKKyAgICAgICAgKFRlc3RD
b250cm9sbGVyVGVzdC50ZXN0X2FnZ3JlZ2F0aW9uKTogQWRkZWQuCisgICAgICAgICogU2NyaXB0
cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvY29tbWl0X2NvbnRleHQu
cHk6CisgICAgICAgIChDb21taXRDb250ZXh0LmZpbmRfY29tbWl0c19pbl9yYW5nZSk6IFVzZSBh
c2NlbmRlZCB0YWJsZSBpZiB1c2VyIG9ubHkgcHJvdmlkZXMgbG93ZXIgYm91bmQuCisgICAgICAg
ICogU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvY29tbWl0
X2NvbnRleHRfdW5pdHRlc3QucHk6CisgICAgICAgIChDb21taXRDb250ZXh0VGVzdC50ZXN0X3N0
YXNoX2NvbW1pdHNfYmVmb3JlKTogVmVyaWZ5IHVwcGVyIGJvdW5kLgorICAgICAgICAoQ29tbWl0
Q29udGV4dFRlc3QudGVzdF9zdm5fY29tbWl0c19iZWZvcmUpOiBEaXR0by4KKyAgICAgICAgKENv
bW1pdENvbnRleHRUZXN0LnRlc3Rfc3Rhc2hfY29tbWl0c19hZnRlcik6IFZlcmlmeSBsb3dlciBi
b3VuZC4KKyAgICAgICAgKENvbW1pdENvbnRleHRUZXN0LnRlc3Rfc3ZuX2NvbW1pdHNfYWZ0ZXIp
OiBEaXR0by4KKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRz
ZGJweS92aWV3L3RlbXBsYXRlcy9kb2N1bWVudGF0aW9uLmh0bWw6IEFkZCBhZ2dyZWdhdGUtcmVz
dWx0cworICAgICAgICBkb2N1bWVudGF0aW9uLgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVz
L3Jlc3VsdHNkYnB5L3NldHVwLnB5OiBCdW1wIHZlcnNpb24uCisKIDIwMjEtMDgtMTAgIERldmlu
IFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIFttYWNPU10gUkVHUkVTU0lP
TihyMjc4ODUwKTogbW9kaWZ5aW5nIGBwbGF5YmFja1JhdGVgIHZpYSBKUyBvbiBhIFRvdWNoQmFy
IG1hYyBvbmx5IHNvbWV0aW1lcyB3b3JrcyBhbmQgYWxzbyBjYXVzZXMgdGhlIGBkZWZhdWx0UGxh
eWJhY2tSYXRlYCB0byBjaGFuZ2UKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3Vs
dHNkYnB5L3NldHVwLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jl
c3VsdHNkYnB5L3NldHVwLnB5CShyZXZpc2lvbiAyODA4NDEpCisrKyBUb29scy9TY3JpcHRzL2xp
YnJhcmllcy9yZXN1bHRzZGJweS9zZXR1cC5weQkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAs
NyBAQCBkZWYgcmVhZG1lKCk6CiAKIHNldHVwKAogICAgIG5hbWU9J3Jlc3VsdHNkYnB5JywKLSAg
ICB2ZXJzaW9uPSczLjAuMicsCisgICAgdmVyc2lvbj0nMy4xLjAnLAogICAgIGRlc2NyaXB0aW9u
PSdMaWJyYXJ5IGZvciB2aXN1YWxpemluZywgcHJvY2Vzc2luZyBhbmQgc3RvcmluZyB0ZXN0IHJl
c3VsdHMuJywKICAgICBsb25nX2Rlc2NyaXB0aW9uPXJlYWRtZSgpLAogICAgIGNsYXNzaWZpZXJz
PVsKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5
L19faW5pdF9fLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3Vs
dHNkYnB5L3Jlc3VsdHNkYnB5L19faW5pdF9fLnB5CShyZXZpc2lvbiAyODA4NDEpCisrKyBUb29s
cy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9fX2luaXRfXy5weQko
d29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNyBAQCBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAg
ICAgICJQbGVhc2UgaW5zdGFsbCB3ZWJraXRjb3JlcHkgd2l0aCBgcGlwIGluc3RhbGwgd2Via2l0
Y29yZXB5IC0tZXh0cmEtaW5kZXgtdXJsIDxwYWNrYWdlIGluZGV4IFVSTD5gIgogICAgICkKIAot
dmVyc2lvbiA9IFZlcnNpb24oMywgMCwgMikKK3ZlcnNpb24gPSBWZXJzaW9uKDMsIDEsIDApCiAK
IGltcG9ydCB3ZWJraXRmbGFza3B5CiAKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jl
c3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIvYXBpX3JvdXRlcy5weQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9jb250
cm9sbGVyL2FwaV9yb3V0ZXMucHkJKHJldmlzaW9uIDI4MDg0MSkKKysrIFRvb2xzL1NjcmlwdHMv
bGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIvYXBpX3JvdXRlcy5w
eQkod29ya2luZyBjb3B5KQpAQCAtNzAsNiArNzAsNyBAQCBjbGFzcyBBUElSb3V0ZXMoQXV0aGVk
Qmx1ZXByaW50KToKIAogICAgICAgICBzZWxmLmFkZF91cmxfcnVsZSgnL3Jlc3VsdHMvPHBhdGg6
c3VpdGU+JywgJ3N1aXRlLXJlc3VsdHMnLCBzZWxmLnN1aXRlX2NvbnRyb2xsZXIuZmluZF9ydW5f
cmVzdWx0cywgbWV0aG9kcz0oJ0dFVCcsKSkKICAgICAgICAgc2VsZi5hZGRfdXJsX3J1bGUoJy9y
ZXN1bHRzLzxwYXRoOnN1aXRlPi88cGF0aDp0ZXN0PicsICd0ZXN0LXJlc3VsdHMnLCBzZWxmLnRl
c3RfY29udHJvbGxlci5maW5kX3Rlc3RfcmVzdWx0LCBtZXRob2RzPSgnR0VUJywpKQorICAgICAg
ICBzZWxmLmFkZF91cmxfcnVsZSgnL2FnZ3JlZ2F0ZS1yZXN1bHRzLzxwYXRoOnN1aXRlPi88cGF0
aDp0ZXN0PicsICd0ZXN0LWFnZ3JlZ2F0ZS1yZXN1bHRzJywgc2VsZi50ZXN0X2NvbnRyb2xsZXIu
YWdncmVnYXRlX3Rlc3RfcmVzdWx0cywgbWV0aG9kcz0oJ0dFVCcsKSkKIAogICAgICAgICBzZWxm
LmFkZF91cmxfcnVsZSgnL2ZhaWx1cmVzLzxwYXRoOnN1aXRlPicsICdzdWl0ZS1mYWlsdXJlcycs
IHNlbGYuZmFpbHVyZV9jb250cm9sbGVyLmZhaWx1cmVzLCBtZXRob2RzPSgnR0VUJywpKQogCklu
ZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9jb250
cm9sbGVyL2NvbW1pdF9jb250cm9sbGVyLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMv
bGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIvY29tbWl0X2NvbnRy
b2xsZXIucHkJKHJldmlzaW9uIDI4MDg0MSkKKysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jl
c3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIvY29tbWl0X2NvbnRyb2xsZXIucHkJKHdv
cmtpbmcgY29weSkKQEAgLTEyNSw2ICsxMjUsMjYgQEAgZGVmIHV1aWRfcmFuZ2VfZm9yX3F1ZXJ5
KCk6CiAgICAgcmV0dXJuIGRlY29yYXRvcgogCiAKK2RlZiBjb21taXRfZm9yX3F1ZXJ5KCk6Cisg
ICAgZGVmIGRlY29yYXRvcihtZXRob2QpOgorICAgICAgICBkZWYgcmVhbF9tZXRob2Qob2JqLCBy
ZXBvc2l0b3J5X2lkPU5vbmUsIGJyYW5jaD1Ob25lLCBpZD1Ob25lLCByZWY9Tm9uZSwgdXVpZD1O
b25lLCB0aW1lc3RhbXA9Tm9uZSwgKiprd2FyZ3MpOgorICAgICAgICAgICAgIyBXZSdyZSBtYWtp
bmcgYW4gYXNzdW1wdGlvbiB0aGF0IHRoZSBjbGFzcyB1c2luZyB0aGlzIGRlY29yYXRvciBhY3R1
YWxseSBoYXMgYSBjb21taXRfY29udGV4dCwgaWYgaXQgZG9lcyBub3QsCisgICAgICAgICAgICAj
IHRoaXMgZGVjb3JhdG9yIHdpbGwgZmFpbCBzcGVjdGFjdWxhcmx5CisgICAgICAgICAgICB3aXRo
IG9iai5jb21taXRfY29udGV4dDoKKyAgICAgICAgICAgICAgICBpZiBub3QgYnJhbmNoOgorICAg
ICAgICAgICAgICAgICAgICBicmFuY2ggPSBbTm9uZV0KKyAgICAgICAgICAgICAgICByZXR1cm4g
bWV0aG9kKG9iaiwgYnJhbmNoPWJyYW5jaCwgY29tbWl0PV9maW5kX2NvbXBhcmlzb24oCisgICAg
ICAgICAgICAgICAgICAgIG9iai5jb21taXRfY29udGV4dCwgcmVwb3NpdG9yeV9pZD1yZXBvc2l0
b3J5X2lkLCBicmFuY2g9YnJhbmNoLAorICAgICAgICAgICAgICAgICAgICByZWY9cmVmIG9yIGlk
LAorICAgICAgICAgICAgICAgICAgICB1dWlkPXV1aWQsIHRpbWVzdGFtcD10aW1lc3RhbXAsIHBy
aW9yaXR5PW1heCwKKyAgICAgICAgICAgICAgICApLCAqKmt3YXJncykKKworICAgICAgICByZWFs
X21ldGhvZC5fX25hbWVfXyA9IG1ldGhvZC5fX25hbWVfXworICAgICAgICByZXR1cm4gcmVhbF9t
ZXRob2QKKworICAgIHJldHVybiBkZWNvcmF0b3IKKworCiBjbGFzcyBIYXNDb21taXRDb250ZXh0
KG9iamVjdCk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNvbW1pdF9jb250ZXh0KToKICAgICAg
ICAgc2VsZi5jb21taXRfY29udGV4dCA9IGNvbW1pdF9jb250ZXh0CkluZGV4OiBUb29scy9TY3Jp
cHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9jb250cm9sbGVyL3Rlc3RfY29u
dHJvbGxlci5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRz
ZGJweS9yZXN1bHRzZGJweS9jb250cm9sbGVyL3Rlc3RfY29udHJvbGxlci5weQkocmV2aXNpb24g
MjgwODQxKQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2Ri
cHkvY29udHJvbGxlci90ZXN0X2NvbnRyb2xsZXIucHkJKHdvcmtpbmcgY29weSkKQEAgLTIxLDEw
ICsyMSwxMiBAQAogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiBmcm9tIGZsYXNrIGltcG9ydCBhYm9ydCwganNv
bmlmeQotZnJvbSByZXN1bHRzZGJweS5jb250cm9sbGVyLmNvbW1pdF9jb250cm9sbGVyIGltcG9y
dCB1dWlkX3JhbmdlX2Zvcl9xdWVyeSwgSGFzQ29tbWl0Q29udGV4dAorZnJvbSBoZWFwcSBpbXBv
cnQgbWVyZ2UKK2Zyb20gcmVzdWx0c2RicHkuY29udHJvbGxlci5jb21taXRfY29udHJvbGxlciBp
bXBvcnQgdXVpZF9yYW5nZV9mb3JfcXVlcnksIGNvbW1pdF9mb3JfcXVlcnksIEhhc0NvbW1pdENv
bnRleHQKIGZyb20gcmVzdWx0c2RicHkuY29udHJvbGxlci5jb25maWd1cmF0aW9uIGltcG9ydCBD
b25maWd1cmF0aW9uCiBmcm9tIHJlc3VsdHNkYnB5LmNvbnRyb2xsZXIuY29uZmlndXJhdGlvbl9j
b250cm9sbGVyIGltcG9ydCBjb25maWd1cmF0aW9uX2Zvcl9xdWVyeQogZnJvbSByZXN1bHRzZGJw
eS5jb250cm9sbGVyLnN1aXRlX2NvbnRyb2xsZXIgaW1wb3J0IHRpbWVfcmFuZ2VfZm9yX3F1ZXJ5
Citmcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLnRlc3RfY29udGV4dCBpbXBvcnQgRXhwZWN0YXRpb25z
CiBmcm9tIHdlYmtpdGZsYXNrcHkudXRpbCBpbXBvcnQgQXNzZXJ0UmVxdWVzdCwgcXVlcnlfYXNf
a3dhcmdzLCBsaW1pdF9mb3JfcXVlcnksIGJvb2xlYW5fcXVlcnkKIAogCkBAIC0xMDIsMyArMTA0
LDExMCBAQCBjbGFzcyBUZXN0Q29udHJvbGxlcihIYXNDb21taXRDb250ZXh0KToKICAgICAgICAg
ICAgICAgICAgICAgcmVzdWx0cz1zb3J0ZWQocmVzdWx0cywga2V5PXNvcnRfZnVuY3Rpb24pLAog
ICAgICAgICAgICAgICAgICkpCiAgICAgICAgICAgICByZXR1cm4ganNvbmlmeShyZXNwb25zZSkK
KworICAgIEBxdWVyeV9hc19rd2FyZ3MoKQorICAgIEBjb21taXRfZm9yX3F1ZXJ5KCkKKyAgICBA
bGltaXRfZm9yX3F1ZXJ5KDEwMCkKKyAgICBAY29uZmlndXJhdGlvbl9mb3JfcXVlcnkoKQorICAg
IGRlZiBhZ2dyZWdhdGVfdGVzdF9yZXN1bHRzKAorICAgICAgICBzZWxmLCBzdWl0ZT1Ob25lLCB0
ZXN0PU5vbmUsCisgICAgICAgIGNvbmZpZ3VyYXRpb25zPU5vbmUsIHJlY2VudD1Ob25lLAorICAg
ICAgICBicmFuY2g9Tm9uZSwgY29tbWl0PU5vbmUsCisgICAgICAgIGxpbWl0PU5vbmUsIGluY2x1
ZGVfZXhwZWN0YXRpb25zPU5vbmUsICoqa3dhcmdzCisgICAgKToKKyAgICAgICAgQXNzZXJ0UmVx
dWVzdC5pc190eXBlKFsnR0VUJ10pCisgICAgICAgIEFzc2VydFJlcXVlc3QucXVlcnlfa3dhcmdz
X2VtcHR5KCoqa3dhcmdzKQorCisgICAgICAgIHJlY2VudCA9IGJvb2xlYW5fcXVlcnkoKnJlY2Vu
dClbMF0gaWYgcmVjZW50IGVsc2UgVHJ1ZQorICAgICAgICBpbmNsdWRlX2V4cGVjdGF0aW9ucyA9
IGJvb2xlYW5fcXVlcnkoKmluY2x1ZGVfZXhwZWN0YXRpb25zKVswXSBpZiBpbmNsdWRlX2V4cGVj
dGF0aW9ucyBlbHNlIEZhbHNlCisKKyAgICAgICAgaWYgbm90IHN1aXRlOgorICAgICAgICAgICAg
YWJvcnQoNDAwLCBkZXNjcmlwdGlvbj0nTm8gc3VpdGUgc3BlY2lmaWVkJykKKyAgICAgICAgaWYg
bm90IHRlc3Q6CisgICAgICAgICAgICBhYm9ydCg0MDAsIGRlc2NyaXB0aW9uPSdObyB0ZXN0IHNw
ZWNpZmllZCcpCisKKyAgICAgICAgbGltaXQgKz0gMQorICAgICAgICBiZWZvcmVfY29tbWl0cyA9
IFtdCisgICAgICAgIGFmdGVyX2NvbW1pdHMgPSBbXQorICAgICAgICB3aXRoIHNlbGYuY29tbWl0
X2NvbnRleHQ6CisgICAgICAgICAgICBmb3IgcmVwb19pZCBpbiBzZWxmLmNvbW1pdF9jb250ZXh0
LnJlcG9zaXRvcmllcy5rZXlzKCk6CisgICAgICAgICAgICAgICAgaWYgY29tbWl0OgorICAgICAg
ICAgICAgICAgICAgICBiZWZvcmVfY29tbWl0cyA9IHNvcnRlZChsaXN0KHJldmVyc2VkKHNlbGYu
Y29tbWl0X2NvbnRleHQuZmluZF9jb21taXRzX2luX3JhbmdlKAorICAgICAgICAgICAgICAgICAg
ICAgICAgcmVwb3NpdG9yeV9pZD1yZXBvX2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgZW5k
PWNvbW1pdCwgYnJhbmNoPWJyYW5jaFswXSwgbGltaXQ9bGltaXQsCisgICAgICAgICAgICAgICAg
ICAgICkpKSArIGJlZm9yZV9jb21taXRzKQorICAgICAgICAgICAgICAgICAgICBhZnRlcl9jb21t
aXRzID0gc29ydGVkKGxpc3QocmV2ZXJzZWQoc2VsZi5jb21taXRfY29udGV4dC5maW5kX2NvbW1p
dHNfaW5fcmFuZ2UoCisgICAgICAgICAgICAgICAgICAgICAgICByZXBvc2l0b3J5X2lkPXJlcG9f
aWQsCisgICAgICAgICAgICAgICAgICAgICAgICBiZWdpbj1jb21taXQsIGJyYW5jaD1icmFuY2hb
MF0sIGxpbWl0PWxpbWl0LAorICAgICAgICAgICAgICAgICAgICApKSkgKyBhZnRlcl9jb21taXRz
KQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGJlZm9yZV9jb21t
aXRzID0gbGlzdChtZXJnZSgKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY29tbWl0X2Nv
bnRleHQuZmluZF9jb21taXRzX2luX3JhbmdlKHJlcG9zaXRvcnlfaWQ9cmVwb19pZCwgYnJhbmNo
PWJyYW5jaFswXSwgbGltaXQ9bGltaXQpLAorICAgICAgICAgICAgICAgICAgICAgICAgYmVmb3Jl
X2NvbW1pdHMsCisgICAgICAgICAgICAgICAgICAgICkpCisgICAgICAgICAgICAgICAgICAgIGJl
Zm9yZV9jb21taXRzLnJldmVyc2UoKQorICAgICAgICAgICAgICAgIGFmdGVyX2NvbW1pdHMucmV2
ZXJzZSgpCisKKyAgICAgICAgYmVmb3JlX2NvbW1pdHMgPSBzb3J0ZWQoYmVmb3JlX2NvbW1pdHMp
CisgICAgICAgIGFmdGVyX2NvbW1pdHMgPSBzb3J0ZWQoYWZ0ZXJfY29tbWl0cykKKworICAgICAg
ICBiZWZvcmVfY29tbWl0cyA9IGJlZm9yZV9jb21taXRzWy1saW1pdDpdCisgICAgICAgIGFmdGVy
X2NvbW1pdHMgPSBhZnRlcl9jb21taXRzWzpsaW1pdF0KKyAgICAgICAgaWYgYmVmb3JlX2NvbW1p
dHMgYW5kIGFmdGVyX2NvbW1pdHMgYW5kIGJlZm9yZV9jb21taXRzWy0xXSA9PSBhZnRlcl9jb21t
aXRzWzBdOgorICAgICAgICAgICAgZGVsIGJlZm9yZV9jb21taXRzWy0xXQorCisgICAgICAgIGlm
IG5vdCBiZWZvcmVfY29tbWl0cyBhbmQgbm90IGFmdGVyX2NvbW1pdHM6CisgICAgICAgICAgICBy
ZXR1cm4gYWJvcnQoNDAwLCBkZXNjcmlwdGlvbj0nTm8gY29tbWl0cyBpbiBzcGVjaWZpZWQgcmFu
Z2UnKQorCisgICAgICAgICMgVXNlIHRoZSBsaW5lYXIgZGlzdGFuY2UgZnJvbSB0aGUgc3BlY2lm
aWVkIGNvbW1pdAorICAgICAgICBzY2FsZV9mb3JfdXVpZCA9IHt9CisgICAgICAgIGNvdW50ID0g
bGltaXQgLSAxCisgICAgICAgIGZvciBjIGluIHJldmVyc2VkKGJlZm9yZV9jb21taXRzKToKKyAg
ICAgICAgICAgIHNjYWxlX2Zvcl91dWlkW2MudXVpZF0gPSBjb3VudAorICAgICAgICAgICAgY291
bnQgLT0gMQorICAgICAgICBjb3VudCA9IGxpbWl0CisgICAgICAgIGZvciBjIGluIGFmdGVyX2Nv
bW1pdHM6CisgICAgICAgICAgICBzY2FsZV9mb3JfdXVpZFtjLnV1aWRdID0gY291bnQKKyAgICAg
ICAgICAgIGNvdW50IC09IDEKKworICAgICAgICAjIEEgZGlyZWN0IG1hdGNoIHRvIHRoZSBwcm92
aWRlZCBjb21taXQgbWF0dGVycyBtb3N0CisgICAgICAgIGlmIGNvbW1pdDoKKyAgICAgICAgICAg
IHNjYWxlX2Zvcl91dWlkW2NvbW1pdC51dWlkXSA9IGxpbWl0ICogMgorCisgICAgICAgIHJlc3Bv
bnNlID0ge30KKyAgICAgICAgZm9yIHZhbHVlIGluIEV4cGVjdGF0aW9ucy5TVEFURV9JRF9UT19T
VFJJTkcudmFsdWVzKCk6CisgICAgICAgICAgICByZXNwb25zZVt2YWx1ZS5sb3dlcigpXSA9IHt9
IGlmIGluY2x1ZGVfZXhwZWN0YXRpb25zIGVsc2UgMAorCisgICAgICAgIHVkcyA9IFtdCisgICAg
ICAgIHdpdGggc2VsZi50ZXN0X2NvbnRleHQ6CisKKyAgICAgICAgICAgIGZvciBjb25maWcsIHJl
c3VsdHMgaW4gc2VsZi50ZXN0X2NvbnRleHQuZmluZF9ieV9jb21taXQoCisgICAgICAgICAgICAg
ICAgc3VpdGU9c3VpdGUsIHRlc3Q9dGVzdCwKKyAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9u
cz1jb25maWd1cmF0aW9ucywgcmVjZW50PXJlY2VudCwKKyAgICAgICAgICAgICAgICBicmFuY2g9
YnJhbmNoWzBdLAorICAgICAgICAgICAgICAgIGxpbWl0PWxpbWl0ICogNCwKKyAgICAgICAgICAg
ICAgICBiZWdpbj0oYmVmb3JlX2NvbW1pdHMgb3IgYWZ0ZXJfY29tbWl0cylbMF0sIGVuZD0oYWZ0
ZXJfY29tbWl0cyBvciBiZWZvcmVfY29tbWl0cylbLTFdLAorICAgICAgICAgICAgKS5pdGVtcygp
OgorICAgICAgICAgICAgICAgIGZvciByZXN1bHQgaW4gcmVzdWx0czoKKyAgICAgICAgICAgICAg
ICAgICAgdWRzLmFwcGVuZChzdHIocmVzdWx0Wyd1dWlkJ10pKQorICAgICAgICAgICAgICAgICAg
ICBzY2FsZSA9IHNjYWxlX2Zvcl91dWlkLmdldChpbnQocmVzdWx0Wyd1dWlkJ10pLCAwKQorICAg
ICAgICAgICAgICAgICAgICBpZiBub3Qgc2NhbGU6CisgICAgICAgICAgICAgICAgICAgICAgICBj
b250aW51ZQorICAgICAgICAgICAgICAgICAgICB0YWcgPSByZXN1bHQuZ2V0KCdhY3R1YWwnLCAn
UEFTUycpLmxvd2VyKCkKKyAgICAgICAgICAgICAgICAgICAgaWYgaW5jbHVkZV9leHBlY3RhdGlv
bnM6CisgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZCA9ICdleHBlY3RlZCcgaWYgbm90
IHJlc3VsdC5nZXQoJ2V4cGVjdGVkJykgb3IgcmVzdWx0WydhY3R1YWwnXSA9PSByZXN1bHRbJ2V4
cGVjdGVkJ10gZWxzZSAndW5leHBlY3RlZCcKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3Bv
bnNlW3RhZ11bZXhwZWN0ZWRdID0gcmVzcG9uc2VbdGFnXS5nZXQoZXhwZWN0ZWQsIDApICsgc2Nh
bGUKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHJl
c3BvbnNlW3RhZ10gPSByZXNwb25zZVt0YWddICsgc2NhbGUKKworICAgICAgICBhZ2dyZWdhdGUg
PSBzdW0oW3N1bSh2YWx1ZS52YWx1ZXMoKSkgaWYgaW5jbHVkZV9leHBlY3RhdGlvbnMgZWxzZSB2
YWx1ZSBmb3IgdmFsdWUgaW4gcmVzcG9uc2UudmFsdWVzKCldKQorICAgICAgICBpZiBub3QgYWdn
cmVnYXRlOgorICAgICAgICAgICAgcmV0dXJuIGFib3J0KDQwMCwgZGVzY3JpcHRpb249J05vIHJl
c3VsdHMgZm9yIHNwZWNpZmllZCB0ZXN0IGFuZCBjb25maWd1cmF0aW9uIGluIHByb3ZpZGVkIGNv
bW1pdCByYW5nZScpCisgICAgICAgIGZvciBrZXlfaSBpbiByZXNwb25zZS5rZXlzKCk6CisgICAg
ICAgICAgICBpZiBpbmNsdWRlX2V4cGVjdGF0aW9uczoKKyAgICAgICAgICAgICAgICBmb3Iga2V5
X2lpIGluIHJlc3BvbnNlW2tleV9pXS5rZXlzKCk6CisgICAgICAgICAgICAgICAgICAgIHJlc3Bv
bnNlW2tleV9pXVtrZXlfaWldID0gMTAwICogcmVzcG9uc2Vba2V5X2ldW2tleV9paV0gLy8gKGFn
Z3JlZ2F0ZSBvciAxKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXNwb25z
ZVtrZXlfaV0gPSAxMDAgKiByZXNwb25zZVtrZXlfaV0gLy8gKGFnZ3JlZ2F0ZSBvciAxKQorCisg
ICAgICAgIHJldHVybiBqc29uaWZ5KHJlc3BvbnNlKQpJbmRleDogVG9vbHMvU2NyaXB0cy9saWJy
YXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxlci90ZXN0X2NvbnRyb2xsZXJf
dW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0
c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxlci90ZXN0X2NvbnRyb2xsZXJfdW5pdHRlc3QucHkJ
KHJldmlzaW9uIDI4MDg0MSkKKysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5
L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIvdGVzdF9jb250cm9sbGVyX3VuaXR0ZXN0LnB5CSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMzYsMyArMTM2LDU5IEBAIGNsYXNzIFRlc3RDb250cm9sbGVyVGVzdChG
bGFza1Rlc3RDYXNlLCAKICAgICAgICAgcmVzcG9uc2UgPSBjbGllbnQuZ2V0KHNlbGYuVVJMICsg
ZicvYXBpL3Jlc3VsdHMvbGF5b3V0LXRlc3RzL2Zhc3QvZW5jb2RpbmcvY3NzLWxpbmstY2hhcnNl
dC5odG1sP3BsYXRmb3JtPWlPUyZzdHlsZT1EZWJ1ZyZyZWNlbnQ9RmFsc2UmYWZ0ZXJfdGltZT17
dGltZS50aW1lKCkgKyAxfScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2Uuc3Rh
dHVzX2NvZGUsIDIwMCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVzcG9uc2UuanNv
bigpKSwgMCkKKworICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIo
bW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFD
b250ZXh0KQorICAgIEBGbGFza1Rlc3RDYXNlLnJ1bl93aXRoX3dlYnNlcnZlcigpCisgICAgZGVm
IHRlc3RfYWdncmVnYXRpb25fZ2VuZXJhbChzZWxmLCBjbGllbnQsICoqa3dhcmdzKToKKyAgICAg
ICAgc2VsZi5tYXhEaWZmID0gTm9uZQorICAgICAgICByZXNwb25zZSA9IGNsaWVudC5nZXQoCisg
ICAgICAgICAgICBzZWxmLlVSTCArIGYnL2FwaS9hZ2dyZWdhdGUtcmVzdWx0cy9sYXlvdXQtdGVz
dHMvZmFzdC9lbmNvZGluZy9jc3MtbGluay1jaGFyc2V0Lmh0bWw/bGltaXQ9MicpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDIwMCkKKyAgICAgICAgc2Vs
Zi5hc3NlcnREaWN0RXF1YWwocmVzcG9uc2UuanNvbigpLCB7CisgICAgICAgICAgICAnYXVkaW8n
OiAwLAorICAgICAgICAgICAgJ2NyYXNoJzogMCwKKyAgICAgICAgICAgICdlcnJvcic6IDAsCisg
ICAgICAgICAgICAnZmFpbCc6IDAsCisgICAgICAgICAgICAnaW1hZ2UnOiAwLAorICAgICAgICAg
ICAgJ3Bhc3MnOiAxMDAsCisgICAgICAgICAgICAndGV4dCc6IDAsCisgICAgICAgICAgICAndGlt
ZW91dCc6IDAsCisgICAgICAgICAgICAnd2FybmluZyc6IDAsCisgICAgICAgIH0pCisKKyAgICBA
V2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0
cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKKyAgICBARmxh
c2tUZXN0Q2FzZS5ydW5fd2l0aF93ZWJzZXJ2ZXIoKQorICAgIGRlZiB0ZXN0X2FnZ3JlZ2F0aW9u
X3NwZWNpZmljKHNlbGYsIGNsaWVudCwgKiprd2FyZ3MpOgorICAgICAgICBzZWxmLm1heERpZmYg
PSBOb25lCisgICAgICAgIHJlc3BvbnNlID0gY2xpZW50LmdldChzZWxmLlVSTCArIGYnL2FwaS9h
Z2dyZWdhdGUtcmVzdWx0cy9sYXlvdXQtdGVzdHMvZmFzdC9lbmNvZGluZy9jc3MtbGluay1jaGFy
c2V0Lmh0bWw/cmVmPTFhYmUyNWI0NDNlOSZsaW1pdD0yJykKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChyZXNwb25zZS5zdGF0dXNfY29kZSwgMjAwKQorICAgICAgICBzZWxmLmFzc2VydERpY3RF
cXVhbChyZXNwb25zZS5qc29uKCksIHsKKyAgICAgICAgICAgICdhdWRpbyc6IDAsCisgICAgICAg
ICAgICAnY3Jhc2gnOiAwLAorICAgICAgICAgICAgJ2Vycm9yJzogMCwKKyAgICAgICAgICAgICdm
YWlsJzogMCwKKyAgICAgICAgICAgICdpbWFnZSc6IDAsCisgICAgICAgICAgICAncGFzcyc6IDEw
MCwKKyAgICAgICAgICAgICd0ZXh0JzogMCwKKyAgICAgICAgICAgICd0aW1lb3V0JzogMCwKKyAg
ICAgICAgICAgICd3YXJuaW5nJzogMCwKKyAgICAgICAgfSkKKworICAgIEBXYWl0Rm9yRG9ja2Vy
VGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1v
Y2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQorICAgIEBGbGFza1Rlc3RDYXNlLnJ1
bl93aXRoX3dlYnNlcnZlcigpCisgICAgZGVmIHRlc3RfYWdncmVnYXRpb25fZXhwZWN0YXRpb25z
KHNlbGYsIGNsaWVudCwgKiprd2FyZ3MpOgorICAgICAgICBzZWxmLm1heERpZmYgPSBOb25lCisg
ICAgICAgIHJlc3BvbnNlID0gY2xpZW50LmdldCgKKyAgICAgICAgICAgIHNlbGYuVVJMICsgZicv
YXBpL2FnZ3JlZ2F0ZS1yZXN1bHRzL2xheW91dC10ZXN0cy9mYXN0L2VuY29kaW5nL2Nzcy1saW5r
LWNoYXJzZXQuaHRtbD9saW1pdD0yJmluY2x1ZGVfZXhwZWN0YXRpb25zPVRydWUnKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLnN0YXR1c19jb2RlLCAyMDApCisgICAgICAgIHNl
bGYuYXNzZXJ0RGljdEVxdWFsKHJlc3BvbnNlLmpzb24oKSwgeworICAgICAgICAgICAgJ2F1ZGlv
Jzoge30sCisgICAgICAgICAgICAnY3Jhc2gnOiB7fSwKKyAgICAgICAgICAgICdlcnJvcic6IHt9
LAorICAgICAgICAgICAgJ2ZhaWwnOiB7fSwKKyAgICAgICAgICAgICdpbWFnZSc6IHt9LAorICAg
ICAgICAgICAgJ3Bhc3MnOiBkaWN0KGV4cGVjdGVkPTEwMCksCisgICAgICAgICAgICAndGV4dCc6
IHt9LAorICAgICAgICAgICAgJ3RpbWVvdXQnOiB7fSwKKyAgICAgICAgICAgICd3YXJuaW5nJzog
e30sCisgICAgICAgIH0pCkluZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJw
eS9yZXN1bHRzZGJweS9tb2RlbC9jb21taXRfY29udGV4dC5weQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC9jb21taXRf
Y29udGV4dC5weQkocmV2aXNpb24gMjgwODQxKQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMv
cmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvY29tbWl0X2NvbnRleHQucHkJKHdvcmtpbmcg
Y29weSkKQEAgLTIxMywxNiArMjEzLDIwIEBAIGNsYXNzIENvbW1pdENvbnRleHQob2JqZWN0KToK
ICAgICAgICAgaWYgYnJhbmNoIGlzIE5vbmU6CiAgICAgICAgICAgICBicmFuY2ggPSBzZWxmLnJl
cG9zaXRvcmllc1tyZXBvc2l0b3J5X2lkXS5kZWZhdWx0X2JyYW5jaAogCisgICAgICAgIHVzZV9h
c2NlbmRpbmcgPSBiZWdpbiBhbmQgbm90IGVuZAogICAgICAgICBiZWdpbiA9IHNlbGYuY29udmVy
dF90b191dWlkKGJlZ2luKQogICAgICAgICBlbmQgPSBzZWxmLmNvbnZlcnRfdG9fdXVpZChlbmQs
IHNlbGYudGltZXN0YW1wX3RvX3V1aWQoKSkKIAogICAgICAgICB3aXRoIHNlbGY6Ci0gICAgICAg
ICAgICByZXR1cm4gW21vZGVsLnRvX2NvbW1pdCgpIGZvciBtb2RlbCBpbiBzZWxmLmNhc3NhbmRy
YS5zZWxlY3RfZnJvbV90YWJsZSgKLSAgICAgICAgICAgICAgICBzZWxmLkNvbW1pdEJ5VXVpZERl
c2NlbmRpbmcuX190YWJsZV9uYW1lX18sIGxpbWl0PWxpbWl0LAotICAgICAgICAgICAgICAgIHJl
cG9zaXRvcnlfaWQ9cmVwb3NpdG9yeV9pZCwgYnJhbmNoPWJyYW5jaCwKKyAgICAgICAgICAgIHJl
c3VsdCA9IFttb2RlbC50b19jb21taXQoKSBmb3IgbW9kZWwgaW4gc2VsZi5jYXNzYW5kcmEuc2Vs
ZWN0X2Zyb21fdGFibGUoCisgICAgICAgICAgICAgICAgc2VsZi5Db21taXRCeVV1aWRBc2NlbmRp
bmcuX190YWJsZV9uYW1lX18gaWYgdXNlX2FzY2VuZGluZyBlbHNlIHNlbGYuQ29tbWl0QnlVdWlk
RGVzY2VuZGluZy5fX3RhYmxlX25hbWVfXywKKyAgICAgICAgICAgICAgICBsaW1pdD1saW1pdCwg
cmVwb3NpdG9yeV9pZD1yZXBvc2l0b3J5X2lkLCBicmFuY2g9YnJhbmNoLAogICAgICAgICAgICAg
ICAgIHV1aWRfX2d0ZT1iZWdpbiwKICAgICAgICAgICAgICAgICB1dWlkX19sdGU9ZW5kLAogICAg
ICAgICAgICAgKV0KKyAgICAgICAgICAgIGlmIHVzZV9hc2NlbmRpbmc6CisgICAgICAgICAgICAg
ICAgcmVzdWx0LnJldmVyc2UoKQorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAogCiAgICAgZGVm
IF9hZGphY2VudF9jb21taXQoc2VsZiwgY29tbWl0LCBhc2NlbmRpbmc9VHJ1ZSk6CiAgICAgICAg
IGlmIG5vdCBpc2luc3RhbmNlKGNvbW1pdCwgQ29tbWl0KToKSW5kZXg6IFRvb2xzL1NjcmlwdHMv
bGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL2NvbW1pdF9jb250ZXh0X3Vu
aXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNk
YnB5L3Jlc3VsdHNkYnB5L21vZGVsL2NvbW1pdF9jb250ZXh0X3VuaXR0ZXN0LnB5CShyZXZpc2lv
biAyODA4NDEpCisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRz
ZGJweS9tb2RlbC9jb21taXRfY29udGV4dF91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAt
MTgwLDYgKzE4MCw1OCBAQCBjbGFzcyBDb21taXRDb250ZXh0VGVzdChXYWl0Rm9yRG9ja2VyVGVz
CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1pdHMsIHNlbGYuZGF0YWJhc2UuZmlu
ZF9jb21taXRzX2luX3JhbmdlKHJlcG9zaXRvcnlfaWQ9J3dlYmtpdCcsIGJyYW5jaD0nbWFpbics
IGJlZ2luPWNvbW1pdHNbLTFdLCBlbmQ9Y29tbWl0c1swXSkpCiAKICAgICBAV2FpdEZvckRvY2tl
clRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBt
b2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKKyAgICBkZWYgdGVzdF9zdGFzaF9j
b21taXRzX2JlZm9yZShzZWxmLCByZWRpcz1TdHJpY3RSZWRpcywgY2Fzc2FuZHJhPUNhc3NhbmRy
YUNvbnRleHQpOgorICAgICAgICB3aXRoIE1vY2tNb2RlbEZhY3Rvcnkuc2FmYXJpKCksIE1vY2tN
b2RlbEZhY3Rvcnkud2Via2l0KCk6CisgICAgICAgICAgICBzZWxmLmluaXRfZGF0YWJhc2UocmVk
aXM9cmVkaXMsIGNhc3NhbmRyYT1jYXNzYW5kcmEpCisgICAgICAgICAgICBzZWxmLmFkZF9hbGxf
Y29tbWl0c190b19kYXRhYmFzZSgpCisKKyAgICAgICAgICAgIGNvbW1pdHMgPSBbCisgICAgICAg
ICAgICAgICAgc2VsZi5zdGFzaF9yZXBvc2l0b3J5LmNvbW1pdChyZWY9JzFhYmUyNWI0NDNlOScp
LAorICAgICAgICAgICAgICAgIHNlbGYuc3Rhc2hfcmVwb3NpdG9yeS5jb21taXQocmVmPSdmZmY4
M2JiMmQ5MTcnKSwKKyAgICAgICAgICAgICAgICBzZWxmLnN0YXNoX3JlcG9zaXRvcnkuY29tbWl0
KHJlZj0nOWI4MzExZjI1YTc3JyksCisgICAgICAgICAgICBdCisgICAgICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGNvbW1pdHMsIHNlbGYuZGF0YWJhc2UuZmluZF9jb21taXRzX2luX3JhbmdlKHJl
cG9zaXRvcnlfaWQ9J3NhZmFyaScsIGJyYW5jaD0nbWFpbicsIGVuZD1jb21taXRzWzBdLCBsaW1p
dD0zKSkKKworICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9j
a19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250
ZXh0KQorICAgIGRlZiB0ZXN0X3N2bl9jb21taXRzX2JlZm9yZShzZWxmLCByZWRpcz1TdHJpY3RS
ZWRpcywgY2Fzc2FuZHJhPUNhc3NhbmRyYUNvbnRleHQpOgorICAgICAgICB3aXRoIE1vY2tNb2Rl
bEZhY3Rvcnkuc2FmYXJpKCksIE1vY2tNb2RlbEZhY3Rvcnkud2Via2l0KCk6CisgICAgICAgICAg
ICBzZWxmLmluaXRfZGF0YWJhc2UocmVkaXM9cmVkaXMsIGNhc3NhbmRyYT1jYXNzYW5kcmEpCisg
ICAgICAgICAgICBzZWxmLmFkZF9hbGxfY29tbWl0c190b19kYXRhYmFzZSgpCisKKyAgICAgICAg
ICAgIGNvbW1pdHMgPSBbCisgICAgICAgICAgICAgICAgc2VsZi5zdm5fcmVwb3NpdG9yeS5jb21t
aXQocmVmPTYpLAorICAgICAgICAgICAgICAgIHNlbGYuc3ZuX3JlcG9zaXRvcnkuY29tbWl0KHJl
Zj00KSwKKyAgICAgICAgICAgICAgICBzZWxmLnN2bl9yZXBvc2l0b3J5LmNvbW1pdChyZWY9Miks
CisgICAgICAgICAgICBdCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1pdHMsIHNl
bGYuZGF0YWJhc2UuZmluZF9jb21taXRzX2luX3JhbmdlKHJlcG9zaXRvcnlfaWQ9J3dlYmtpdCcs
IGJyYW5jaD0nbWFpbicsIGVuZD1jb21taXRzWzBdLCBsaW1pdD0zKSkKKworICAgIEBXYWl0Rm9y
RG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVk
aXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQorICAgIGRlZiB0ZXN0X3N0
YXNoX2NvbW1pdHNfYWZ0ZXIoc2VsZiwgcmVkaXM9U3RyaWN0UmVkaXMsIGNhc3NhbmRyYT1DYXNz
YW5kcmFDb250ZXh0KToKKyAgICAgICAgd2l0aCBNb2NrTW9kZWxGYWN0b3J5LnNhZmFyaSgpLCBN
b2NrTW9kZWxGYWN0b3J5LndlYmtpdCgpOgorICAgICAgICAgICAgc2VsZi5pbml0X2RhdGFiYXNl
KHJlZGlzPXJlZGlzLCBjYXNzYW5kcmE9Y2Fzc2FuZHJhKQorICAgICAgICAgICAgc2VsZi5hZGRf
YWxsX2NvbW1pdHNfdG9fZGF0YWJhc2UoKQorCisgICAgICAgICAgICBjb21taXRzID0gWworICAg
ICAgICAgICAgICAgIHNlbGYuc3Rhc2hfcmVwb3NpdG9yeS5jb21taXQocmVmPScxYWJlMjViNDQz
ZTknKSwKKyAgICAgICAgICAgICAgICBzZWxmLnN0YXNoX3JlcG9zaXRvcnkuY29tbWl0KHJlZj0n
ZmZmODNiYjJkOTE3JyksCisgICAgICAgICAgICAgICAgc2VsZi5zdGFzaF9yZXBvc2l0b3J5LmNv
bW1pdChyZWY9JzliODMxMWYyNWE3NycpLAorICAgICAgICAgICAgXQorICAgICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChjb21taXRzLCBzZWxmLmRhdGFiYXNlLmZpbmRfY29tbWl0c19pbl9yYW5n
ZShyZXBvc2l0b3J5X2lkPSdzYWZhcmknLCBicmFuY2g9J21haW4nLCBiZWdpbj1jb21taXRzWy0x
XSwgbGltaXQ9MykpCisKKyAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9j
a2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2Fu
ZHJhQ29udGV4dCkKKyAgICBkZWYgdGVzdF9zdm5fY29tbWl0c19hZnRlcihzZWxmLCByZWRpcz1T
dHJpY3RSZWRpcywgY2Fzc2FuZHJhPUNhc3NhbmRyYUNvbnRleHQpOgorICAgICAgICB3aXRoIE1v
Y2tNb2RlbEZhY3Rvcnkuc2FmYXJpKCksIE1vY2tNb2RlbEZhY3Rvcnkud2Via2l0KCk6CisgICAg
ICAgICAgICBzZWxmLmluaXRfZGF0YWJhc2UocmVkaXM9cmVkaXMsIGNhc3NhbmRyYT1jYXNzYW5k
cmEpCisgICAgICAgICAgICBzZWxmLmFkZF9hbGxfY29tbWl0c190b19kYXRhYmFzZSgpCisKKyAg
ICAgICAgICAgIGNvbW1pdHMgPSBbCisgICAgICAgICAgICAgICAgc2VsZi5zdm5fcmVwb3NpdG9y
eS5jb21taXQocmVmPTYpLAorICAgICAgICAgICAgICAgIHNlbGYuc3ZuX3JlcG9zaXRvcnkuY29t
bWl0KHJlZj00KSwKKyAgICAgICAgICAgICAgICBzZWxmLnN2bl9yZXBvc2l0b3J5LmNvbW1pdChy
ZWY9MiksCisgICAgICAgICAgICBdCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1p
dHMsIHNlbGYuZGF0YWJhc2UuZmluZF9jb21taXRzX2luX3JhbmdlKHJlcG9zaXRvcnlfaWQ9J3dl
YmtpdCcsIGJyYW5jaD0nbWFpbicsIGJlZ2luPWNvbW1pdHNbLTFdLCBsaW1pdD0zKSkKKworICAg
IEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtl
U3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQogICAgIGRl
ZiB0ZXN0X2NvbW1pdF9mcm9tX3N0YXNoX3JlcG8oc2VsZiwgcmVkaXM9U3RyaWN0UmVkaXMsIGNh
c3NhbmRyYT1DYXNzYW5kcmFDb250ZXh0KToKICAgICAgICAgd2l0aCBNb2NrTW9kZWxGYWN0b3J5
LnNhZmFyaSgpLCBNb2NrTW9kZWxGYWN0b3J5LndlYmtpdCgpOgogICAgICAgICAgICAgc2VsZi5p
bml0X2RhdGFiYXNlKHJlZGlzPXJlZGlzLCBjYXNzYW5kcmE9Y2Fzc2FuZHJhKQpJbmRleDogVG9v
bHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy90ZW1wbGF0
ZXMvZG9jdW1lbnRhdGlvbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFy
aWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcvdGVtcGxhdGVzL2RvY3VtZW50YXRpb24u
aHRtbAkocmV2aXNpb24gMjgwODQxKQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0
c2RicHkvcmVzdWx0c2RicHkvdmlldy90ZW1wbGF0ZXMvZG9jdW1lbnRhdGlvbi5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNTksNiArMzU5LDIwIEBAIGNvbnN0IGRvY3VtZW50YXRpb24gPSB7CiAg
ICAgICAgICAgICAgICAgICAgIGB3aGVyZSAmbHRjb25maWd1cmF0aW9uLW9iamVjdC1hJmd0IGFu
ZCAmbHRjb25maWd1cmF0aW9uLW9iamVjdC1iJmd0IGFyZSBib3RoICR7bG9jYWxMaW5rKFsnUXVl
cnkgUGFyYW1ldGVycycsICdDb25maWd1cmF0aW9uJ10sICdjb25maWd1cmF0aW9uIG9iamVjdHMn
KX0nIGFuZCAmbHRydW4tYTEmZ3QsICZsdHJ1bi1hMiZndCwgJmx0cnVuLWIxJmd0IGFuZCAmbHRy
dW4tYjImZ3QgYXJlIGFsbCB0aGUgYWZmb3JtZW50aW9uZWQgc2luZ2xlIHRlc3QgcmVzdWx0IGRp
Y3Rpb25hcnkuYCwKICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgKSwKKyAgICAgICAg
ICAgIGRvY3VtZW50RW5kcG9pbnQoCisgICAgICAgICAgICAgICAgJy9hcGkvYWdncmVnYXRlLXJl
c3VsdHMvJmx0c3VpdGUmZ3QvJmx0dGVzdCZndCcsCisgICAgICAgICAgICAgICAgWydHRVQnXSwK
KyAgICAgICAgICAgICAgICBbJ0JyYW5jaCcsICdDb25maWd1cmF0aW9uJywgJ0luY2x1ZGUgRXhw
ZWN0YXRpb25zJywgJ0xpbWl0JywgJ1JlcG9zaXRvcnknLCAnUmVmJywgJ1VVSUQnXSwKKyAgICAg
ICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgIGBDb21wdXRlIHRoZSBjb21iaW5lZCBy
ZXN1bHRzIG9mIGEgZ2l2ZSB0ZXN0IGJ5IGFnZ3JlZ2F0aW5nIHJlc3VsdHMgZnJvbSBhIHNldCBv
ZiBydW5zIHN1cnJvdW5kaW5nIGEgc3BlY2lmaWMgY29tbWl0OmAsCisgICAgICAgICAgICAgICAg
ICAgIGNvZGVCbG9jaygne1xuJyArCisgICAgICAgICAgICAgICAgICAgICcgICAgInBhc3MiOiA4
MCxcbicgKworICAgICAgICAgICAgICAgICAgICAnICAgICJmYWlsIjogMTUsXG4nICsKKyAgICAg
ICAgICAgICAgICAgICAgJyAgICAiY3Jhc2giOiA1LFxuJyArCisgICAgICAgICAgICAgICAgICAg
ICd9JyksCisgICAgICAgICAgICAgICAgICAgIGBUaGVzZSByZXN1bHRzIGFyZSBhbHdheXMgdGhl
IHdlaWdodGVkIGFnZ3JlZ2F0aW9uIG9mIHJlc3VsdHMgZm9yIHRoZSBwcm92aWRlZCBjb25maWd1
cmF0aW9ucywgd2l0aCB3ZWlnaHRzIHRvIGJlIHVuZGVyc3Rvb2QgYXMgcGVyY2VudCBsaWtsaWhv
b2QgYSB0ZXN0IHdpbGwgaGF2ZSBhIGNlcnRhaW4gcmVzdWx0IG9uIGEgZ2l2ZW4gcmV2aXNpb24u
YCwKKyAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgKSwKICAgICAgICAgXSwgJ0ZhaWx1
cmUgQW5hbHlzaXMnOiBbCiAgICAgICAgICAgICBgUmVzdWx0cyBkYXRhYmFzZXMgcHJvdmlkZSBh
IGZldyBBUElzIHRvIGFzc2lzdCBpbiB0aGUgaW52ZXN0aWdhdGlvbiBvZiB0ZXN0IGZhaWx1cmVz
LiBUaGVzZSBhbmFseXNpcyBlbmRwb2ludHMgYWdncmVnYXRlIGRhdGEgZnJvbSBtdWx0aXBsZSB0
ZXN0IHJ1bnMgZm9yIGNvbnN1bXB0aW9uIGJ5IGJvdGggaHVtYW5zIGFuZCBhdXRvbWF0ZWQgc3lz
dGVtcy5gLAogICAgICAgICAgICAgZG9jdW1lbnRFbmRwb2ludCgKQEAgLTUwOCw2ICs1MjIsMTAg
QEAgY29uc3QgZG9jdW1lbnRhdGlvbiA9IHsKICAgICAgICAgICAgIGNvZGVCbG9jaygncmVjZW50
PUZhbHNlJyksCiAgICAgICAgICAgICBgdG8geW91ciBxdWVyeS4gVGhlIGRvd25zaWRlIG9mIHNl
YXJjaGluZyBhbGwgY29uZmlndXJhdGlvbnMgaXMgdGhhdCB0aGUgZGVmYXVsdCBiZWhhdmlvciBv
ZiBzZWFyY2hpbmcgYWxsIHJlY2VudCBjb25maWd1cmF0aW9ucyBpZiBubyBxdWVyeSBwYXJhbWV0
ZXJzIGFyZSBwcm92aWRlZCBpcyBkaXNhYmxlZCBiZWNhdXNlIHRoZSByZXN1bHRzIGRhdGFiYXNl
IGNhbm5vdCBzZWFyY2ggYnkgYW4gdW5ib3VuZGVkIG51bWJlciBvZiBjb25maWd1cmF0aW9ucy5g
LAogICAgICAgICBdLAorICAgICAgICAnSW5jbHVkZSBFeHBlY3RhdGlvbnMnOiBbCisgICAgICAg
ICAgICBgU29tZSBlbmRwb2ludHMgcmV0dXJuIGRpZmZlcmVudCByZXN1bHRzIGlmIHRoZSBjYWxs
ZXIgcmVxdWVzdHMgZXhwZWN0YXRpb25zIGJlIHRha2VuIGludG8gY29uc2lkZXJhdGlvbi4gQnkg
ZGVmYXVsdCwgdGhpcyBmbGFnIGlzIGRpc2FibGVkLCBidXQgbWF5IGJlIGVuYWJsZWQgb24gc3Vw
cG9ydGluZyBlbnBvaW50cyB3aXRoIHRoaXMgcXVlcnk6YCwKKyAgICAgICAgICAgIGNvZGVCbG9j
aygnaW5jbHVkZV9leHBlY3RhdGlvbnM9Rmxhc2UnKSwKKyAgICAgICAgXSwKICAgICAgICAgJ0xp
bWl0JzogWwogICAgICAgICAgICAgYFRoZSB1bmRlcmx5aW5nIGFyY2hpdGVjdHVyZSBvZiB0aGUg
cmVzdWx0cyBkYXRhYmFzZSBkb2VzIG5vdCBhbGxvdyB1bmxpbWl0ZWQgcXVlcnkgc2l6ZXMuIE1v
c3QgZW5kcG9pbnRzIGFjY2VwdCBhIGxpbWl0IHF1ZXJ5IHdoaWNoIGxvb2tzIGxpa2UgdGhpczpg
LAogICAgICAgICAgICAgY29kZUJsb2NrKCdsaW1pdD0xNTAnKSwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435272</attachid>
            <date>2021-08-10 10:39:50 -0700</date>
            <delta_ts>2021-08-10 14:19:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226894-20210810103949.patch</filename>
            <type>text/plain</type>
            <size>22481</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI4MDg0MSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDMzIEBACisyMDIxLTA4LTA5ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBbcmVzdWx0c2RicHldIEFkZCBhZ2dyZWdhdGUtcmVzdWx0cyBBUEkKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjg5NAorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vNzkxNTUxODE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9y
ZXN1bHRzZGJweS9fX2luaXRfXy5weTogQnVtcCB2ZXJzaW9uLgorICAgICAgICAqIFNjcmlwdHMv
bGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIvYXBpX3JvdXRlcy5w
eToKKyAgICAgICAgKEFQSVJvdXRlcy5fX2luaXRfXyk6IEFkZCBhZ2dyZWdhdGUtcmVzdWx0cyBl
bmRwb2ludC4KKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRz
ZGJweS9jb250cm9sbGVyL2NvbW1pdF9jb250cm9sbGVyLnB5OgorICAgICAgICAoY29tbWl0X2Zv
cl9xdWVyeSk6IEFkZCBkZWNvcmF0b3Igd2hpY2ggY29udmVydHMgYSBzZXQgb2YgYXJndW1lbnRz
IGludG8gYSBzaW5nbGUgY29tbWl0LgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3Jlc3Vs
dHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIvdGVzdF9jb250cm9sbGVyLnB5OgorICAgICAg
ICAoVGVzdENvbnRyb2xsZXIpOgorICAgICAgICAoVGVzdENvbnRyb2xsZXIuYWdncmVnYXRlX3Rl
c3RfcmVzdWx0cyk6IEdpdmVuIGEgc2luZ2xlIGNvbW1pdCBhbmQgc3VpdGUvdGVzdCBjb21iaW5h
dGlvbiwgY29tcHV0ZQorICAgICAgICB0aGUgbGlrbGlob29kIG9mIGVhY2ggcG90ZW50aWFsIHJl
c3VsdC4KKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJw
eS9jb250cm9sbGVyL3Rlc3RfY29udHJvbGxlcl91bml0dGVzdC5weToKKyAgICAgICAgKFRlc3RD
b250cm9sbGVyVGVzdC50ZXN0X2FnZ3JlZ2F0aW9uKTogQWRkZWQuCisgICAgICAgICogU2NyaXB0
cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvY29tbWl0X2NvbnRleHQu
cHk6CisgICAgICAgIChDb21taXRDb250ZXh0LmZpbmRfY29tbWl0c19pbl9yYW5nZSk6IFVzZSBh
c2NlbmRlZCB0YWJsZSBpZiB1c2VyIG9ubHkgcHJvdmlkZXMgbG93ZXIgYm91bmQuCisgICAgICAg
ICogU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvY29tbWl0
X2NvbnRleHRfdW5pdHRlc3QucHk6CisgICAgICAgIChDb21taXRDb250ZXh0VGVzdC50ZXN0X3N0
YXNoX2NvbW1pdHNfYmVmb3JlKTogVmVyaWZ5IHVwcGVyIGJvdW5kLgorICAgICAgICAoQ29tbWl0
Q29udGV4dFRlc3QudGVzdF9zdm5fY29tbWl0c19iZWZvcmUpOiBEaXR0by4KKyAgICAgICAgKENv
bW1pdENvbnRleHRUZXN0LnRlc3Rfc3Rhc2hfY29tbWl0c19hZnRlcik6IFZlcmlmeSBsb3dlciBi
b3VuZC4KKyAgICAgICAgKENvbW1pdENvbnRleHRUZXN0LnRlc3Rfc3ZuX2NvbW1pdHNfYWZ0ZXIp
OiBEaXR0by4KKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRz
ZGJweS92aWV3L3RlbXBsYXRlcy9kb2N1bWVudGF0aW9uLmh0bWw6IEFkZCBhZ2dyZWdhdGUtcmVz
dWx0cworICAgICAgICBkb2N1bWVudGF0aW9uLgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVz
L3Jlc3VsdHNkYnB5L3NldHVwLnB5OiBCdW1wIHZlcnNpb24uCisKIDIwMjEtMDgtMTAgIERldmlu
IFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIFttYWNPU10gUkVHUkVTU0lP
TihyMjc4ODUwKTogbW9kaWZ5aW5nIGBwbGF5YmFja1JhdGVgIHZpYSBKUyBvbiBhIFRvdWNoQmFy
IG1hYyBvbmx5IHNvbWV0aW1lcyB3b3JrcyBhbmQgYWxzbyBjYXVzZXMgdGhlIGBkZWZhdWx0UGxh
eWJhY2tSYXRlYCB0byBjaGFuZ2UKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3Vs
dHNkYnB5L3NldHVwLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jl
c3VsdHNkYnB5L3NldHVwLnB5CShyZXZpc2lvbiAyODA4NDEpCisrKyBUb29scy9TY3JpcHRzL2xp
YnJhcmllcy9yZXN1bHRzZGJweS9zZXR1cC5weQkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAs
NyBAQCBkZWYgcmVhZG1lKCk6CiAKIHNldHVwKAogICAgIG5hbWU9J3Jlc3VsdHNkYnB5JywKLSAg
ICB2ZXJzaW9uPSczLjAuMicsCisgICAgdmVyc2lvbj0nMy4xLjAnLAogICAgIGRlc2NyaXB0aW9u
PSdMaWJyYXJ5IGZvciB2aXN1YWxpemluZywgcHJvY2Vzc2luZyBhbmQgc3RvcmluZyB0ZXN0IHJl
c3VsdHMuJywKICAgICBsb25nX2Rlc2NyaXB0aW9uPXJlYWRtZSgpLAogICAgIGNsYXNzaWZpZXJz
PVsKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5
L19faW5pdF9fLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3Vs
dHNkYnB5L3Jlc3VsdHNkYnB5L19faW5pdF9fLnB5CShyZXZpc2lvbiAyODA4NDEpCisrKyBUb29s
cy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9fX2luaXRfXy5weQko
d29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNyBAQCBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAg
ICAgICJQbGVhc2UgaW5zdGFsbCB3ZWJraXRjb3JlcHkgd2l0aCBgcGlwIGluc3RhbGwgd2Via2l0
Y29yZXB5IC0tZXh0cmEtaW5kZXgtdXJsIDxwYWNrYWdlIGluZGV4IFVSTD5gIgogICAgICkKIAot
dmVyc2lvbiA9IFZlcnNpb24oMywgMCwgMikKK3ZlcnNpb24gPSBWZXJzaW9uKDMsIDEsIDApCiAK
IGltcG9ydCB3ZWJraXRmbGFza3B5CiAKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jl
c3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIvYXBpX3JvdXRlcy5weQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9jb250
cm9sbGVyL2FwaV9yb3V0ZXMucHkJKHJldmlzaW9uIDI4MDg0MSkKKysrIFRvb2xzL1NjcmlwdHMv
bGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIvYXBpX3JvdXRlcy5w
eQkod29ya2luZyBjb3B5KQpAQCAtNzAsNiArNzAsNyBAQCBjbGFzcyBBUElSb3V0ZXMoQXV0aGVk
Qmx1ZXByaW50KToKIAogICAgICAgICBzZWxmLmFkZF91cmxfcnVsZSgnL3Jlc3VsdHMvPHBhdGg6
c3VpdGU+JywgJ3N1aXRlLXJlc3VsdHMnLCBzZWxmLnN1aXRlX2NvbnRyb2xsZXIuZmluZF9ydW5f
cmVzdWx0cywgbWV0aG9kcz0oJ0dFVCcsKSkKICAgICAgICAgc2VsZi5hZGRfdXJsX3J1bGUoJy9y
ZXN1bHRzLzxwYXRoOnN1aXRlPi88cGF0aDp0ZXN0PicsICd0ZXN0LXJlc3VsdHMnLCBzZWxmLnRl
c3RfY29udHJvbGxlci5maW5kX3Rlc3RfcmVzdWx0LCBtZXRob2RzPSgnR0VUJywpKQorICAgICAg
ICBzZWxmLmFkZF91cmxfcnVsZSgnL2FnZ3JlZ2F0ZS1yZXN1bHRzLzxwYXRoOnN1aXRlPi88cGF0
aDp0ZXN0PicsICd0ZXN0LWFnZ3JlZ2F0ZS1yZXN1bHRzJywgc2VsZi50ZXN0X2NvbnRyb2xsZXIu
YWdncmVnYXRlX3Rlc3RfcmVzdWx0cywgbWV0aG9kcz0oJ0dFVCcsKSkKIAogICAgICAgICBzZWxm
LmFkZF91cmxfcnVsZSgnL2ZhaWx1cmVzLzxwYXRoOnN1aXRlPicsICdzdWl0ZS1mYWlsdXJlcycs
IHNlbGYuZmFpbHVyZV9jb250cm9sbGVyLmZhaWx1cmVzLCBtZXRob2RzPSgnR0VUJywpKQogCklu
ZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9jb250
cm9sbGVyL2NvbW1pdF9jb250cm9sbGVyLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMv
bGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIvY29tbWl0X2NvbnRy
b2xsZXIucHkJKHJldmlzaW9uIDI4MDg0MSkKKysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jl
c3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIvY29tbWl0X2NvbnRyb2xsZXIucHkJKHdv
cmtpbmcgY29weSkKQEAgLTEyNSw2ICsxMjUsMjYgQEAgZGVmIHV1aWRfcmFuZ2VfZm9yX3F1ZXJ5
KCk6CiAgICAgcmV0dXJuIGRlY29yYXRvcgogCiAKK2RlZiBjb21taXRfZm9yX3F1ZXJ5KCk6Cisg
ICAgZGVmIGRlY29yYXRvcihtZXRob2QpOgorICAgICAgICBkZWYgcmVhbF9tZXRob2Qob2JqLCBy
ZXBvc2l0b3J5X2lkPU5vbmUsIGJyYW5jaD1Ob25lLCBpZD1Ob25lLCByZWY9Tm9uZSwgdXVpZD1O
b25lLCB0aW1lc3RhbXA9Tm9uZSwgKiprd2FyZ3MpOgorICAgICAgICAgICAgIyBXZSdyZSBtYWtp
bmcgYW4gYXNzdW1wdGlvbiB0aGF0IHRoZSBjbGFzcyB1c2luZyB0aGlzIGRlY29yYXRvciBhY3R1
YWxseSBoYXMgYSBjb21taXRfY29udGV4dCwgaWYgaXQgZG9lcyBub3QsCisgICAgICAgICAgICAj
IHRoaXMgZGVjb3JhdG9yIHdpbGwgZmFpbCBzcGVjdGFjdWxhcmx5CisgICAgICAgICAgICB3aXRo
IG9iai5jb21taXRfY29udGV4dDoKKyAgICAgICAgICAgICAgICBpZiBub3QgYnJhbmNoOgorICAg
ICAgICAgICAgICAgICAgICBicmFuY2ggPSBbTm9uZV0KKyAgICAgICAgICAgICAgICByZXR1cm4g
bWV0aG9kKG9iaiwgYnJhbmNoPWJyYW5jaCwgY29tbWl0PV9maW5kX2NvbXBhcmlzb24oCisgICAg
ICAgICAgICAgICAgICAgIG9iai5jb21taXRfY29udGV4dCwgcmVwb3NpdG9yeV9pZD1yZXBvc2l0
b3J5X2lkLCBicmFuY2g9YnJhbmNoLAorICAgICAgICAgICAgICAgICAgICByZWY9cmVmIG9yIGlk
LAorICAgICAgICAgICAgICAgICAgICB1dWlkPXV1aWQsIHRpbWVzdGFtcD10aW1lc3RhbXAsIHBy
aW9yaXR5PW1heCwKKyAgICAgICAgICAgICAgICApLCAqKmt3YXJncykKKworICAgICAgICByZWFs
X21ldGhvZC5fX25hbWVfXyA9IG1ldGhvZC5fX25hbWVfXworICAgICAgICByZXR1cm4gcmVhbF9t
ZXRob2QKKworICAgIHJldHVybiBkZWNvcmF0b3IKKworCiBjbGFzcyBIYXNDb21taXRDb250ZXh0
KG9iamVjdCk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNvbW1pdF9jb250ZXh0KToKICAgICAg
ICAgc2VsZi5jb21taXRfY29udGV4dCA9IGNvbW1pdF9jb250ZXh0CkluZGV4OiBUb29scy9TY3Jp
cHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9jb250cm9sbGVyL3Rlc3RfY29u
dHJvbGxlci5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRz
ZGJweS9yZXN1bHRzZGJweS9jb250cm9sbGVyL3Rlc3RfY29udHJvbGxlci5weQkocmV2aXNpb24g
MjgwODQxKQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2Ri
cHkvY29udHJvbGxlci90ZXN0X2NvbnRyb2xsZXIucHkJKHdvcmtpbmcgY29weSkKQEAgLTIxLDEw
ICsyMSwxMiBAQAogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiBmcm9tIGZsYXNrIGltcG9ydCBhYm9ydCwganNv
bmlmeQotZnJvbSByZXN1bHRzZGJweS5jb250cm9sbGVyLmNvbW1pdF9jb250cm9sbGVyIGltcG9y
dCB1dWlkX3JhbmdlX2Zvcl9xdWVyeSwgSGFzQ29tbWl0Q29udGV4dAorZnJvbSBoZWFwcSBpbXBv
cnQgbWVyZ2UKK2Zyb20gcmVzdWx0c2RicHkuY29udHJvbGxlci5jb21taXRfY29udHJvbGxlciBp
bXBvcnQgdXVpZF9yYW5nZV9mb3JfcXVlcnksIGNvbW1pdF9mb3JfcXVlcnksIEhhc0NvbW1pdENv
bnRleHQKIGZyb20gcmVzdWx0c2RicHkuY29udHJvbGxlci5jb25maWd1cmF0aW9uIGltcG9ydCBD
b25maWd1cmF0aW9uCiBmcm9tIHJlc3VsdHNkYnB5LmNvbnRyb2xsZXIuY29uZmlndXJhdGlvbl9j
b250cm9sbGVyIGltcG9ydCBjb25maWd1cmF0aW9uX2Zvcl9xdWVyeQogZnJvbSByZXN1bHRzZGJw
eS5jb250cm9sbGVyLnN1aXRlX2NvbnRyb2xsZXIgaW1wb3J0IHRpbWVfcmFuZ2VfZm9yX3F1ZXJ5
Citmcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLnRlc3RfY29udGV4dCBpbXBvcnQgRXhwZWN0YXRpb25z
CiBmcm9tIHdlYmtpdGZsYXNrcHkudXRpbCBpbXBvcnQgQXNzZXJ0UmVxdWVzdCwgcXVlcnlfYXNf
a3dhcmdzLCBsaW1pdF9mb3JfcXVlcnksIGJvb2xlYW5fcXVlcnkKIAogCkBAIC0xMDIsMyArMTA0
LDEwNyBAQCBjbGFzcyBUZXN0Q29udHJvbGxlcihIYXNDb21taXRDb250ZXh0KToKICAgICAgICAg
ICAgICAgICAgICAgcmVzdWx0cz1zb3J0ZWQocmVzdWx0cywga2V5PXNvcnRfZnVuY3Rpb24pLAog
ICAgICAgICAgICAgICAgICkpCiAgICAgICAgICAgICByZXR1cm4ganNvbmlmeShyZXNwb25zZSkK
KworICAgIEBxdWVyeV9hc19rd2FyZ3MoKQorICAgIEBjb21taXRfZm9yX3F1ZXJ5KCkKKyAgICBA
bGltaXRfZm9yX3F1ZXJ5KDEwMCkKKyAgICBAY29uZmlndXJhdGlvbl9mb3JfcXVlcnkoKQorICAg
IGRlZiBhZ2dyZWdhdGVfdGVzdF9yZXN1bHRzKAorICAgICAgICBzZWxmLCBzdWl0ZT1Ob25lLCB0
ZXN0PU5vbmUsCisgICAgICAgIGNvbmZpZ3VyYXRpb25zPU5vbmUsIHJlY2VudD1Ob25lLAorICAg
ICAgICBicmFuY2g9Tm9uZSwgY29tbWl0PU5vbmUsCisgICAgICAgIGxpbWl0PU5vbmUsIGluY2x1
ZGVfZXhwZWN0YXRpb25zPU5vbmUsICoqa3dhcmdzCisgICAgKToKKyAgICAgICAgQXNzZXJ0UmVx
dWVzdC5pc190eXBlKFsnR0VUJ10pCisgICAgICAgIEFzc2VydFJlcXVlc3QucXVlcnlfa3dhcmdz
X2VtcHR5KCoqa3dhcmdzKQorCisgICAgICAgIHJlY2VudCA9IGJvb2xlYW5fcXVlcnkoKnJlY2Vu
dClbMF0gaWYgcmVjZW50IGVsc2UgVHJ1ZQorICAgICAgICBpbmNsdWRlX2V4cGVjdGF0aW9ucyA9
IGJvb2xlYW5fcXVlcnkoKmluY2x1ZGVfZXhwZWN0YXRpb25zKVswXSBpZiBpbmNsdWRlX2V4cGVj
dGF0aW9ucyBlbHNlIEZhbHNlCisKKyAgICAgICAgaWYgbm90IHN1aXRlOgorICAgICAgICAgICAg
YWJvcnQoNDAwLCBkZXNjcmlwdGlvbj0nTm8gc3VpdGUgc3BlY2lmaWVkJykKKyAgICAgICAgaWYg
bm90IHRlc3Q6CisgICAgICAgICAgICBhYm9ydCg0MDAsIGRlc2NyaXB0aW9uPSdObyB0ZXN0IHNw
ZWNpZmllZCcpCisKKyAgICAgICAgbGltaXQgKz0gMQorICAgICAgICBiZWZvcmVfY29tbWl0cyA9
IFtdCisgICAgICAgIGFmdGVyX2NvbW1pdHMgPSBbXQorICAgICAgICB3aXRoIHNlbGYuY29tbWl0
X2NvbnRleHQ6CisgICAgICAgICAgICBmb3IgcmVwb19pZCBpbiBzZWxmLmNvbW1pdF9jb250ZXh0
LnJlcG9zaXRvcmllcy5rZXlzKCk6CisgICAgICAgICAgICAgICAgaWYgY29tbWl0OgorICAgICAg
ICAgICAgICAgICAgICBiZWZvcmVfY29tbWl0cyA9IHNvcnRlZChsaXN0KHJldmVyc2VkKHNlbGYu
Y29tbWl0X2NvbnRleHQuZmluZF9jb21taXRzX2luX3JhbmdlKAorICAgICAgICAgICAgICAgICAg
ICAgICAgcmVwb3NpdG9yeV9pZD1yZXBvX2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgZW5k
PWNvbW1pdCwgYnJhbmNoPWJyYW5jaFswXSwgbGltaXQ9bGltaXQsCisgICAgICAgICAgICAgICAg
ICAgICkpKSArIGJlZm9yZV9jb21taXRzKQorICAgICAgICAgICAgICAgICAgICBhZnRlcl9jb21t
aXRzID0gc29ydGVkKGxpc3QocmV2ZXJzZWQoc2VsZi5jb21taXRfY29udGV4dC5maW5kX2NvbW1p
dHNfaW5fcmFuZ2UoCisgICAgICAgICAgICAgICAgICAgICAgICByZXBvc2l0b3J5X2lkPXJlcG9f
aWQsCisgICAgICAgICAgICAgICAgICAgICAgICBiZWdpbj1jb21taXQsIGJyYW5jaD1icmFuY2hb
MF0sIGxpbWl0PWxpbWl0LAorICAgICAgICAgICAgICAgICAgICApKSkgKyBhZnRlcl9jb21taXRz
KQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGJlZm9yZV9jb21t
aXRzID0gbGlzdChtZXJnZSgKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY29tbWl0X2Nv
bnRleHQuZmluZF9jb21taXRzX2luX3JhbmdlKHJlcG9zaXRvcnlfaWQ9cmVwb19pZCwgYnJhbmNo
PWJyYW5jaFswXSwgbGltaXQ9bGltaXQpLAorICAgICAgICAgICAgICAgICAgICAgICAgYmVmb3Jl
X2NvbW1pdHMsCisgICAgICAgICAgICAgICAgICAgICkpCisgICAgICAgICAgICAgICAgICAgIGJl
Zm9yZV9jb21taXRzLnJldmVyc2UoKQorICAgICAgICAgICAgICAgIGFmdGVyX2NvbW1pdHMucmV2
ZXJzZSgpCisKKyAgICAgICAgYmVmb3JlX2NvbW1pdHMgPSBzb3J0ZWQoYmVmb3JlX2NvbW1pdHMp
CisgICAgICAgIGFmdGVyX2NvbW1pdHMgPSBzb3J0ZWQoYWZ0ZXJfY29tbWl0cykKKworICAgICAg
ICBiZWZvcmVfY29tbWl0cyA9IGJlZm9yZV9jb21taXRzWy1saW1pdDpdCisgICAgICAgIGFmdGVy
X2NvbW1pdHMgPSBhZnRlcl9jb21taXRzWzpsaW1pdF0KKyAgICAgICAgaWYgYmVmb3JlX2NvbW1p
dHMgYW5kIGFmdGVyX2NvbW1pdHMgYW5kIGJlZm9yZV9jb21taXRzWy0xXSA9PSBhZnRlcl9jb21t
aXRzWzBdOgorICAgICAgICAgICAgZGVsIGJlZm9yZV9jb21taXRzWy0xXQorCisgICAgICAgIGlm
IG5vdCBiZWZvcmVfY29tbWl0cyBhbmQgbm90IGFmdGVyX2NvbW1pdHM6CisgICAgICAgICAgICBy
ZXR1cm4gYWJvcnQoNDAwLCBkZXNjcmlwdGlvbj0nTm8gY29tbWl0cyBpbiBzcGVjaWZpZWQgcmFu
Z2UnKQorCisgICAgICAgICMgVXNlIHRoZSBsaW5lYXIgZGlzdGFuY2UgZnJvbSB0aGUgc3BlY2lm
aWVkIGNvbW1pdAorICAgICAgICBzY2FsZV9mb3JfdXVpZCA9IHt9CisgICAgICAgIGNvdW50ID0g
bGltaXQgLSAxCisgICAgICAgIGZvciBjIGluIHJldmVyc2VkKGJlZm9yZV9jb21taXRzKToKKyAg
ICAgICAgICAgIHNjYWxlX2Zvcl91dWlkW2MudXVpZF0gPSBjb3VudAorICAgICAgICAgICAgY291
bnQgLT0gMQorICAgICAgICBjb3VudCA9IGxpbWl0CisgICAgICAgIGZvciBjIGluIGFmdGVyX2Nv
bW1pdHM6CisgICAgICAgICAgICBzY2FsZV9mb3JfdXVpZFtjLnV1aWRdID0gY291bnQKKyAgICAg
ICAgICAgIGNvdW50IC09IDEKKworICAgICAgICAjIEEgZGlyZWN0IG1hdGNoIHRvIHRoZSBwcm92
aWRlZCBjb21taXQgbWF0dGVycyBtb3N0CisgICAgICAgIGlmIGNvbW1pdDoKKyAgICAgICAgICAg
IHNjYWxlX2Zvcl91dWlkW2NvbW1pdC51dWlkXSA9IGxpbWl0ICogMgorCisgICAgICAgIHJlc3Bv
bnNlID0ge30KKyAgICAgICAgZm9yIHZhbHVlIGluIEV4cGVjdGF0aW9ucy5TVEFURV9JRF9UT19T
VFJJTkcudmFsdWVzKCk6CisgICAgICAgICAgICByZXNwb25zZVt2YWx1ZS5sb3dlcigpXSA9IHt9
IGlmIGluY2x1ZGVfZXhwZWN0YXRpb25zIGVsc2UgMAorCisgICAgICAgIHdpdGggc2VsZi50ZXN0
X2NvbnRleHQ6CisgICAgICAgICAgICBmb3IgY29uZmlnLCByZXN1bHRzIGluIHNlbGYudGVzdF9j
b250ZXh0LmZpbmRfYnlfY29tbWl0KAorICAgICAgICAgICAgICAgIHN1aXRlPXN1aXRlLCB0ZXN0
PXRlc3QsCisgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbnM9Y29uZmlndXJhdGlvbnMsIHJl
Y2VudD1yZWNlbnQsCisgICAgICAgICAgICAgICAgYnJhbmNoPWJyYW5jaFswXSwKKyAgICAgICAg
ICAgICAgICBsaW1pdD1saW1pdCAqIDQsCisgICAgICAgICAgICAgICAgYmVnaW49KGJlZm9yZV9j
b21taXRzIG9yIGFmdGVyX2NvbW1pdHMpWzBdLCBlbmQ9KGFmdGVyX2NvbW1pdHMgb3IgYmVmb3Jl
X2NvbW1pdHMpWy0xXSwKKyAgICAgICAgICAgICkuaXRlbXMoKToKKyAgICAgICAgICAgICAgICBm
b3IgcmVzdWx0IGluIHJlc3VsdHM6CisgICAgICAgICAgICAgICAgICAgIHNjYWxlID0gc2NhbGVf
Zm9yX3V1aWQuZ2V0KGludChyZXN1bHRbJ3V1aWQnXSksIDApCisgICAgICAgICAgICAgICAgICAg
IGlmIG5vdCBzY2FsZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAg
ICAgICAgICAgICAgIHRhZyA9IHJlc3VsdC5nZXQoJ2FjdHVhbCcsICdQQVNTJykubG93ZXIoKQor
ICAgICAgICAgICAgICAgICAgICBpZiBpbmNsdWRlX2V4cGVjdGF0aW9uczoKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGV4cGVjdGVkID0gJ2V4cGVjdGVkJyBpZiBub3QgcmVzdWx0LmdldCgnZXhw
ZWN0ZWQnKSBvciByZXN1bHRbJ2FjdHVhbCddID09IHJlc3VsdFsnZXhwZWN0ZWQnXSBlbHNlICd1
bmV4cGVjdGVkJworICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2VbdGFnXVtleHBlY3Rl
ZF0gPSByZXNwb25zZVt0YWddLmdldChleHBlY3RlZCwgMCkgKyBzY2FsZQorICAgICAgICAgICAg
ICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2VbdGFnXSA9IHJl
c3BvbnNlW3RhZ10gKyBzY2FsZQorCisgICAgICAgIGFnZ3JlZ2F0ZSA9IHN1bShbc3VtKHZhbHVl
LnZhbHVlcygpKSBpZiBpbmNsdWRlX2V4cGVjdGF0aW9ucyBlbHNlIHZhbHVlIGZvciB2YWx1ZSBp
biByZXNwb25zZS52YWx1ZXMoKV0pCisgICAgICAgIGlmIG5vdCBhZ2dyZWdhdGU6CisgICAgICAg
ICAgICByZXR1cm4gYWJvcnQoNDAwLCBkZXNjcmlwdGlvbj0nTm8gcmVzdWx0cyBmb3Igc3BlY2lm
aWVkIHRlc3QgYW5kIGNvbmZpZ3VyYXRpb24gaW4gcHJvdmlkZWQgY29tbWl0IHJhbmdlJykKKyAg
ICAgICAgZm9yIGtleV9pIGluIHJlc3BvbnNlLmtleXMoKToKKyAgICAgICAgICAgIGlmIGluY2x1
ZGVfZXhwZWN0YXRpb25zOgorICAgICAgICAgICAgICAgIGZvciBrZXlfaWkgaW4gcmVzcG9uc2Vb
a2V5X2ldLmtleXMoKToKKyAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2Vba2V5X2ldW2tleV9p
aV0gPSAxMDAgKiByZXNwb25zZVtrZXlfaV1ba2V5X2lpXSAvLyAoYWdncmVnYXRlIG9yIDEpCisg
ICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJlc3BvbnNlW2tleV9pXSA9IDEwMCAq
IHJlc3BvbnNlW2tleV9pXSAvLyAoYWdncmVnYXRlIG9yIDEpCisKKyAgICAgICAgcmV0dXJuIGpz
b25pZnkocmVzcG9uc2UpCkluZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJw
eS9yZXN1bHRzZGJweS9jb250cm9sbGVyL3Rlc3RfY29udHJvbGxlcl91bml0dGVzdC5weQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJw
eS9jb250cm9sbGVyL3Rlc3RfY29udHJvbGxlcl91bml0dGVzdC5weQkocmV2aXNpb24gMjgwODQx
KQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29u
dHJvbGxlci90ZXN0X2NvbnRyb2xsZXJfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTEz
NiwzICsxMzYsNTkgQEAgY2xhc3MgVGVzdENvbnRyb2xsZXJUZXN0KEZsYXNrVGVzdENhc2UsIAog
ICAgICAgICByZXNwb25zZSA9IGNsaWVudC5nZXQoc2VsZi5VUkwgKyBmJy9hcGkvcmVzdWx0cy9s
YXlvdXQtdGVzdHMvZmFzdC9lbmNvZGluZy9jc3MtbGluay1jaGFyc2V0Lmh0bWw/cGxhdGZvcm09
aU9TJnN0eWxlPURlYnVnJnJlY2VudD1GYWxzZSZhZnRlcl90aW1lPXt0aW1lLnRpbWUoKSArIDF9
JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5zdGF0dXNfY29kZSwgMjAwKQog
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihyZXNwb25zZS5qc29uKCkpLCAwKQorCisgICAg
QFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VT
dHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCisgICAgQEZs
YXNrVGVzdENhc2UucnVuX3dpdGhfd2Vic2VydmVyKCkKKyAgICBkZWYgdGVzdF9hZ2dyZWdhdGlv
bl9nZW5lcmFsKHNlbGYsIGNsaWVudCwgKiprd2FyZ3MpOgorICAgICAgICBzZWxmLm1heERpZmYg
PSBOb25lCisgICAgICAgIHJlc3BvbnNlID0gY2xpZW50LmdldCgKKyAgICAgICAgICAgIHNlbGYu
VVJMICsgZicvYXBpL2FnZ3JlZ2F0ZS1yZXN1bHRzL2xheW91dC10ZXN0cy9mYXN0L2VuY29kaW5n
L2Nzcy1saW5rLWNoYXJzZXQuaHRtbD9saW1pdD0yJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChyZXNwb25zZS5zdGF0dXNfY29kZSwgMjAwKQorICAgICAgICBzZWxmLmFzc2VydERpY3RFcXVh
bChyZXNwb25zZS5qc29uKCksIHsKKyAgICAgICAgICAgICdhdWRpbyc6IDAsCisgICAgICAgICAg
ICAnY3Jhc2gnOiAwLAorICAgICAgICAgICAgJ2Vycm9yJzogMCwKKyAgICAgICAgICAgICdmYWls
JzogMCwKKyAgICAgICAgICAgICdpbWFnZSc6IDAsCisgICAgICAgICAgICAncGFzcyc6IDEwMCwK
KyAgICAgICAgICAgICd0ZXh0JzogMCwKKyAgICAgICAgICAgICd0aW1lb3V0JzogMCwKKyAgICAg
ICAgICAgICd3YXJuaW5nJzogMCwKKyAgICAgICAgfSkKKworICAgIEBXYWl0Rm9yRG9ja2VyVGVz
dENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tf
Y2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQorICAgIEBGbGFza1Rlc3RDYXNlLnJ1bl93
aXRoX3dlYnNlcnZlcigpCisgICAgZGVmIHRlc3RfYWdncmVnYXRpb25fc3BlY2lmaWMoc2VsZiwg
Y2xpZW50LCAqKmt3YXJncyk6CisgICAgICAgIHNlbGYubWF4RGlmZiA9IE5vbmUKKyAgICAgICAg
cmVzcG9uc2UgPSBjbGllbnQuZ2V0KHNlbGYuVVJMICsgZicvYXBpL2FnZ3JlZ2F0ZS1yZXN1bHRz
L2xheW91dC10ZXN0cy9mYXN0L2VuY29kaW5nL2Nzcy1saW5rLWNoYXJzZXQuaHRtbD9yZWY9MWFi
ZTI1YjQ0M2U5JmxpbWl0PTInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLnN0
YXR1c19jb2RlLCAyMDApCisgICAgICAgIHNlbGYuYXNzZXJ0RGljdEVxdWFsKHJlc3BvbnNlLmpz
b24oKSwgeworICAgICAgICAgICAgJ2F1ZGlvJzogMCwKKyAgICAgICAgICAgICdjcmFzaCc6IDAs
CisgICAgICAgICAgICAnZXJyb3InOiAwLAorICAgICAgICAgICAgJ2ZhaWwnOiAwLAorICAgICAg
ICAgICAgJ2ltYWdlJzogMCwKKyAgICAgICAgICAgICdwYXNzJzogMTAwLAorICAgICAgICAgICAg
J3RleHQnOiAwLAorICAgICAgICAgICAgJ3RpbWVvdXQnOiAwLAorICAgICAgICAgICAgJ3dhcm5p
bmcnOiAwLAorICAgICAgICB9KQorCisgICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lm
X25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9TW9j
a0Nhc3NhbmRyYUNvbnRleHQpCisgICAgQEZsYXNrVGVzdENhc2UucnVuX3dpdGhfd2Vic2VydmVy
KCkKKyAgICBkZWYgdGVzdF9hZ2dyZWdhdGlvbl9leHBlY3RhdGlvbnMoc2VsZiwgY2xpZW50LCAq
Kmt3YXJncyk6CisgICAgICAgIHNlbGYubWF4RGlmZiA9IE5vbmUKKyAgICAgICAgcmVzcG9uc2Ug
PSBjbGllbnQuZ2V0KAorICAgICAgICAgICAgc2VsZi5VUkwgKyBmJy9hcGkvYWdncmVnYXRlLXJl
c3VsdHMvbGF5b3V0LXRlc3RzL2Zhc3QvZW5jb2RpbmcvY3NzLWxpbmstY2hhcnNldC5odG1sP2xp
bWl0PTImaW5jbHVkZV9leHBlY3RhdGlvbnM9VHJ1ZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwocmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDIwMCkKKyAgICAgICAgc2VsZi5hc3NlcnREaWN0RXF1
YWwocmVzcG9uc2UuanNvbigpLCB7CisgICAgICAgICAgICAnYXVkaW8nOiB7fSwKKyAgICAgICAg
ICAgICdjcmFzaCc6IHt9LAorICAgICAgICAgICAgJ2Vycm9yJzoge30sCisgICAgICAgICAgICAn
ZmFpbCc6IHt9LAorICAgICAgICAgICAgJ2ltYWdlJzoge30sCisgICAgICAgICAgICAncGFzcyc6
IGRpY3QoZXhwZWN0ZWQ9MTAwKSwKKyAgICAgICAgICAgICd0ZXh0Jzoge30sCisgICAgICAgICAg
ICAndGltZW91dCc6IHt9LAorICAgICAgICAgICAgJ3dhcm5pbmcnOiB7fSwKKyAgICAgICAgfSkK
SW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21v
ZGVsL2NvbW1pdF9jb250ZXh0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFy
aWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL2NvbW1pdF9jb250ZXh0LnB5CShyZXZp
c2lvbiAyODA4NDEpCisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1
bHRzZGJweS9tb2RlbC9jb21taXRfY29udGV4dC5weQkod29ya2luZyBjb3B5KQpAQCAtMjEzLDE2
ICsyMTMsMjAgQEAgY2xhc3MgQ29tbWl0Q29udGV4dChvYmplY3QpOgogICAgICAgICBpZiBicmFu
Y2ggaXMgTm9uZToKICAgICAgICAgICAgIGJyYW5jaCA9IHNlbGYucmVwb3NpdG9yaWVzW3JlcG9z
aXRvcnlfaWRdLmRlZmF1bHRfYnJhbmNoCiAKKyAgICAgICAgdXNlX2FzY2VuZGluZyA9IGJlZ2lu
IGFuZCBub3QgZW5kCiAgICAgICAgIGJlZ2luID0gc2VsZi5jb252ZXJ0X3RvX3V1aWQoYmVnaW4p
CiAgICAgICAgIGVuZCA9IHNlbGYuY29udmVydF90b191dWlkKGVuZCwgc2VsZi50aW1lc3RhbXBf
dG9fdXVpZCgpKQogCiAgICAgICAgIHdpdGggc2VsZjoKLSAgICAgICAgICAgIHJldHVybiBbbW9k
ZWwudG9fY29tbWl0KCkgZm9yIG1vZGVsIGluIHNlbGYuY2Fzc2FuZHJhLnNlbGVjdF9mcm9tX3Rh
YmxlKAotICAgICAgICAgICAgICAgIHNlbGYuQ29tbWl0QnlVdWlkRGVzY2VuZGluZy5fX3RhYmxl
X25hbWVfXywgbGltaXQ9bGltaXQsCi0gICAgICAgICAgICAgICAgcmVwb3NpdG9yeV9pZD1yZXBv
c2l0b3J5X2lkLCBicmFuY2g9YnJhbmNoLAorICAgICAgICAgICAgcmVzdWx0ID0gW21vZGVsLnRv
X2NvbW1pdCgpIGZvciBtb2RlbCBpbiBzZWxmLmNhc3NhbmRyYS5zZWxlY3RfZnJvbV90YWJsZSgK
KyAgICAgICAgICAgICAgICBzZWxmLkNvbW1pdEJ5VXVpZEFzY2VuZGluZy5fX3RhYmxlX25hbWVf
XyBpZiB1c2VfYXNjZW5kaW5nIGVsc2Ugc2VsZi5Db21taXRCeVV1aWREZXNjZW5kaW5nLl9fdGFi
bGVfbmFtZV9fLAorICAgICAgICAgICAgICAgIGxpbWl0PWxpbWl0LCByZXBvc2l0b3J5X2lkPXJl
cG9zaXRvcnlfaWQsIGJyYW5jaD1icmFuY2gsCiAgICAgICAgICAgICAgICAgdXVpZF9fZ3RlPWJl
Z2luLAogICAgICAgICAgICAgICAgIHV1aWRfX2x0ZT1lbmQsCiAgICAgICAgICAgICApXQorICAg
ICAgICAgICAgaWYgdXNlX2FzY2VuZGluZzoKKyAgICAgICAgICAgICAgICByZXN1bHQucmV2ZXJz
ZSgpCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0CiAKICAgICBkZWYgX2FkamFjZW50X2NvbW1p
dChzZWxmLCBjb21taXQsIGFzY2VuZGluZz1UcnVlKToKICAgICAgICAgaWYgbm90IGlzaW5zdGFu
Y2UoY29tbWl0LCBDb21taXQpOgpJbmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0
c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvY29tbWl0X2NvbnRleHRfdW5pdHRlc3QucHkKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkv
bW9kZWwvY29tbWl0X2NvbnRleHRfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI4MDg0MSkKKysrIFRv
b2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL2NvbW1p
dF9jb250ZXh0X3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xODAsNiArMTgwLDU4IEBA
IGNsYXNzIENvbW1pdENvbnRleHRUZXN0KFdhaXRGb3JEb2NrZXJUZXMKICAgICAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoY29tbWl0cywgc2VsZi5kYXRhYmFzZS5maW5kX2NvbW1pdHNfaW5fcmFu
Z2UocmVwb3NpdG9yeV9pZD0nd2Via2l0JywgYnJhbmNoPSdtYWluJywgYmVnaW49Y29tbWl0c1st
MV0sIGVuZD1jb21taXRzWzBdKSkKIAogICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19p
Zl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1v
Y2tDYXNzYW5kcmFDb250ZXh0KQorICAgIGRlZiB0ZXN0X3N0YXNoX2NvbW1pdHNfYmVmb3JlKHNl
bGYsIHJlZGlzPVN0cmljdFJlZGlzLCBjYXNzYW5kcmE9Q2Fzc2FuZHJhQ29udGV4dCk6CisgICAg
ICAgIHdpdGggTW9ja01vZGVsRmFjdG9yeS5zYWZhcmkoKSwgTW9ja01vZGVsRmFjdG9yeS53ZWJr
aXQoKToKKyAgICAgICAgICAgIHNlbGYuaW5pdF9kYXRhYmFzZShyZWRpcz1yZWRpcywgY2Fzc2Fu
ZHJhPWNhc3NhbmRyYSkKKyAgICAgICAgICAgIHNlbGYuYWRkX2FsbF9jb21taXRzX3RvX2RhdGFi
YXNlKCkKKworICAgICAgICAgICAgY29tbWl0cyA9IFsKKyAgICAgICAgICAgICAgICBzZWxmLnN0
YXNoX3JlcG9zaXRvcnkuY29tbWl0KHJlZj0nMWFiZTI1YjQ0M2U5JyksCisgICAgICAgICAgICAg
ICAgc2VsZi5zdGFzaF9yZXBvc2l0b3J5LmNvbW1pdChyZWY9J2ZmZjgzYmIyZDkxNycpLAorICAg
ICAgICAgICAgICAgIHNlbGYuc3Rhc2hfcmVwb3NpdG9yeS5jb21taXQocmVmPSc5YjgzMTFmMjVh
NzcnKSwKKyAgICAgICAgICAgIF0KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbWl0
cywgc2VsZi5kYXRhYmFzZS5maW5kX2NvbW1pdHNfaW5fcmFuZ2UocmVwb3NpdG9yeV9pZD0nc2Fm
YXJpJywgYnJhbmNoPSdtYWluJywgZW5kPWNvbW1pdHNbMF0sIGxpbWl0PTMpKQorCisgICAgQFdh
aXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJp
Y3RSZWRpcywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCisgICAgZGVmIHRl
c3Rfc3ZuX2NvbW1pdHNfYmVmb3JlKHNlbGYsIHJlZGlzPVN0cmljdFJlZGlzLCBjYXNzYW5kcmE9
Q2Fzc2FuZHJhQ29udGV4dCk6CisgICAgICAgIHdpdGggTW9ja01vZGVsRmFjdG9yeS5zYWZhcmko
KSwgTW9ja01vZGVsRmFjdG9yeS53ZWJraXQoKToKKyAgICAgICAgICAgIHNlbGYuaW5pdF9kYXRh
YmFzZShyZWRpcz1yZWRpcywgY2Fzc2FuZHJhPWNhc3NhbmRyYSkKKyAgICAgICAgICAgIHNlbGYu
YWRkX2FsbF9jb21taXRzX3RvX2RhdGFiYXNlKCkKKworICAgICAgICAgICAgY29tbWl0cyA9IFsK
KyAgICAgICAgICAgICAgICBzZWxmLnN2bl9yZXBvc2l0b3J5LmNvbW1pdChyZWY9NiksCisgICAg
ICAgICAgICAgICAgc2VsZi5zdm5fcmVwb3NpdG9yeS5jb21taXQocmVmPTQpLAorICAgICAgICAg
ICAgICAgIHNlbGYuc3ZuX3JlcG9zaXRvcnkuY29tbWl0KHJlZj0yKSwKKyAgICAgICAgICAgIF0K
KyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbWl0cywgc2VsZi5kYXRhYmFzZS5maW5k
X2NvbW1pdHNfaW5fcmFuZ2UocmVwb3NpdG9yeV9pZD0nd2Via2l0JywgYnJhbmNoPSdtYWluJywg
ZW5kPWNvbW1pdHNbMF0sIGxpbWl0PTMpKQorCisgICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5t
b2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19jYXNzYW5k
cmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCisgICAgZGVmIHRlc3Rfc3Rhc2hfY29tbWl0c19hZnRl
cihzZWxmLCByZWRpcz1TdHJpY3RSZWRpcywgY2Fzc2FuZHJhPUNhc3NhbmRyYUNvbnRleHQpOgor
ICAgICAgICB3aXRoIE1vY2tNb2RlbEZhY3Rvcnkuc2FmYXJpKCksIE1vY2tNb2RlbEZhY3Rvcnku
d2Via2l0KCk6CisgICAgICAgICAgICBzZWxmLmluaXRfZGF0YWJhc2UocmVkaXM9cmVkaXMsIGNh
c3NhbmRyYT1jYXNzYW5kcmEpCisgICAgICAgICAgICBzZWxmLmFkZF9hbGxfY29tbWl0c190b19k
YXRhYmFzZSgpCisKKyAgICAgICAgICAgIGNvbW1pdHMgPSBbCisgICAgICAgICAgICAgICAgc2Vs
Zi5zdGFzaF9yZXBvc2l0b3J5LmNvbW1pdChyZWY9JzFhYmUyNWI0NDNlOScpLAorICAgICAgICAg
ICAgICAgIHNlbGYuc3Rhc2hfcmVwb3NpdG9yeS5jb21taXQocmVmPSdmZmY4M2JiMmQ5MTcnKSwK
KyAgICAgICAgICAgICAgICBzZWxmLnN0YXNoX3JlcG9zaXRvcnkuY29tbWl0KHJlZj0nOWI4MzEx
ZjI1YTc3JyksCisgICAgICAgICAgICBdCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNv
bW1pdHMsIHNlbGYuZGF0YWJhc2UuZmluZF9jb21taXRzX2luX3JhbmdlKHJlcG9zaXRvcnlfaWQ9
J3NhZmFyaScsIGJyYW5jaD0nbWFpbicsIGJlZ2luPWNvbW1pdHNbLTFdLCBsaW1pdD0zKSkKKwor
ICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1G
YWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQorICAg
IGRlZiB0ZXN0X3N2bl9jb21taXRzX2FmdGVyKHNlbGYsIHJlZGlzPVN0cmljdFJlZGlzLCBjYXNz
YW5kcmE9Q2Fzc2FuZHJhQ29udGV4dCk6CisgICAgICAgIHdpdGggTW9ja01vZGVsRmFjdG9yeS5z
YWZhcmkoKSwgTW9ja01vZGVsRmFjdG9yeS53ZWJraXQoKToKKyAgICAgICAgICAgIHNlbGYuaW5p
dF9kYXRhYmFzZShyZWRpcz1yZWRpcywgY2Fzc2FuZHJhPWNhc3NhbmRyYSkKKyAgICAgICAgICAg
IHNlbGYuYWRkX2FsbF9jb21taXRzX3RvX2RhdGFiYXNlKCkKKworICAgICAgICAgICAgY29tbWl0
cyA9IFsKKyAgICAgICAgICAgICAgICBzZWxmLnN2bl9yZXBvc2l0b3J5LmNvbW1pdChyZWY9Niks
CisgICAgICAgICAgICAgICAgc2VsZi5zdm5fcmVwb3NpdG9yeS5jb21taXQocmVmPTQpLAorICAg
ICAgICAgICAgICAgIHNlbGYuc3ZuX3JlcG9zaXRvcnkuY29tbWl0KHJlZj0yKSwKKyAgICAgICAg
ICAgIF0KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbWl0cywgc2VsZi5kYXRhYmFz
ZS5maW5kX2NvbW1pdHNfaW5fcmFuZ2UocmVwb3NpdG9yeV9pZD0nd2Via2l0JywgYnJhbmNoPSdt
YWluJywgYmVnaW49Y29tbWl0c1stMV0sIGxpbWl0PTMpKQorCisgICAgQFdhaXRGb3JEb2NrZXJU
ZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcywgbW9j
a19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCiAgICAgZGVmIHRlc3RfY29tbWl0X2Zy
b21fc3Rhc2hfcmVwbyhzZWxmLCByZWRpcz1TdHJpY3RSZWRpcywgY2Fzc2FuZHJhPUNhc3NhbmRy
YUNvbnRleHQpOgogICAgICAgICB3aXRoIE1vY2tNb2RlbEZhY3Rvcnkuc2FmYXJpKCksIE1vY2tN
b2RlbEZhY3Rvcnkud2Via2l0KCk6CiAgICAgICAgICAgICBzZWxmLmluaXRfZGF0YWJhc2UocmVk
aXM9cmVkaXMsIGNhc3NhbmRyYT1jYXNzYW5kcmEpCkluZGV4OiBUb29scy9TY3JpcHRzL2xpYnJh
cmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS92aWV3L3RlbXBsYXRlcy9kb2N1bWVudGF0aW9u
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkv
cmVzdWx0c2RicHkvdmlldy90ZW1wbGF0ZXMvZG9jdW1lbnRhdGlvbi5odG1sCShyZXZpc2lvbiAy
ODA4NDEpCisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJw
eS92aWV3L3RlbXBsYXRlcy9kb2N1bWVudGF0aW9uLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTM1
OSw2ICszNTksMjAgQEAgY29uc3QgZG9jdW1lbnRhdGlvbiA9IHsKICAgICAgICAgICAgICAgICAg
ICAgYHdoZXJlICZsdGNvbmZpZ3VyYXRpb24tb2JqZWN0LWEmZ3QgYW5kICZsdGNvbmZpZ3VyYXRp
b24tb2JqZWN0LWImZ3QgYXJlIGJvdGggJHtsb2NhbExpbmsoWydRdWVyeSBQYXJhbWV0ZXJzJywg
J0NvbmZpZ3VyYXRpb24nXSwgJ2NvbmZpZ3VyYXRpb24gb2JqZWN0cycpfScgYW5kICZsdHJ1bi1h
MSZndCwgJmx0cnVuLWEyJmd0LCAmbHRydW4tYjEmZ3QgYW5kICZsdHJ1bi1iMiZndCBhcmUgYWxs
IHRoZSBhZmZvcm1lbnRpb25lZCBzaW5nbGUgdGVzdCByZXN1bHQgZGljdGlvbmFyeS5gLAogICAg
ICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICApLAorICAgICAgICAgICAgZG9jdW1lbnRFbmRw
b2ludCgKKyAgICAgICAgICAgICAgICAnL2FwaS9hZ2dyZWdhdGUtcmVzdWx0cy8mbHRzdWl0ZSZn
dC8mbHR0ZXN0Jmd0JywKKyAgICAgICAgICAgICAgICBbJ0dFVCddLAorICAgICAgICAgICAgICAg
IFsnQnJhbmNoJywgJ0NvbmZpZ3VyYXRpb24nLCAnSW5jbHVkZSBFeHBlY3RhdGlvbnMnLCAnTGlt
aXQnLCAnUmVwb3NpdG9yeScsICdSZWYnLCAnVVVJRCddLAorICAgICAgICAgICAgICAgIFsKKyAg
ICAgICAgICAgICAgICAgICAgYENvbXB1dGUgdGhlIGNvbWJpbmVkIHJlc3VsdHMgb2YgYSBnaXZl
IHRlc3QgYnkgYWdncmVnYXRpbmcgcmVzdWx0cyBmcm9tIGEgc2V0IG9mIHJ1bnMgc3Vycm91bmRp
bmcgYSBzcGVjaWZpYyBjb21taXQ6YCwKKyAgICAgICAgICAgICAgICAgICAgY29kZUJsb2NrKCd7
XG4nICsKKyAgICAgICAgICAgICAgICAgICAgJyAgICAicGFzcyI6IDgwLFxuJyArCisgICAgICAg
ICAgICAgICAgICAgICcgICAgImZhaWwiOiAxNSxcbicgKworICAgICAgICAgICAgICAgICAgICAn
ICAgICJjcmFzaCI6IDUsXG4nICsKKyAgICAgICAgICAgICAgICAgICAgJ30nKSwKKyAgICAgICAg
ICAgICAgICAgICAgYFRoZXNlIHJlc3VsdHMgYXJlIGFsd2F5cyB0aGUgd2VpZ2h0ZWQgYWdncmVn
YXRpb24gb2YgcmVzdWx0cyBmb3IgdGhlIHByb3ZpZGVkIGNvbmZpZ3VyYXRpb25zLCB3aXRoIHdl
aWdodHMgdG8gYmUgdW5kZXJzdG9vZCBhcyBwZXJjZW50IGxpa2xpaG9vZCBhIHRlc3Qgd2lsbCBo
YXZlIGEgY2VydGFpbiByZXN1bHQgb24gYSBnaXZlbiByZXZpc2lvbi5gLAorICAgICAgICAgICAg
ICAgIF0sCisgICAgICAgICAgICApLAogICAgICAgICBdLCAnRmFpbHVyZSBBbmFseXNpcyc6IFsK
ICAgICAgICAgICAgIGBSZXN1bHRzIGRhdGFiYXNlcyBwcm92aWRlIGEgZmV3IEFQSXMgdG8gYXNz
aXN0IGluIHRoZSBpbnZlc3RpZ2F0aW9uIG9mIHRlc3QgZmFpbHVyZXMuIFRoZXNlIGFuYWx5c2lz
IGVuZHBvaW50cyBhZ2dyZWdhdGUgZGF0YSBmcm9tIG11bHRpcGxlIHRlc3QgcnVucyBmb3IgY29u
c3VtcHRpb24gYnkgYm90aCBodW1hbnMgYW5kIGF1dG9tYXRlZCBzeXN0ZW1zLmAsCiAgICAgICAg
ICAgICBkb2N1bWVudEVuZHBvaW50KApAQCAtNTA4LDYgKzUyMiwxMCBAQCBjb25zdCBkb2N1bWVu
dGF0aW9uID0gewogICAgICAgICAgICAgY29kZUJsb2NrKCdyZWNlbnQ9RmFsc2UnKSwKICAgICAg
ICAgICAgIGB0byB5b3VyIHF1ZXJ5LiBUaGUgZG93bnNpZGUgb2Ygc2VhcmNoaW5nIGFsbCBjb25m
aWd1cmF0aW9ucyBpcyB0aGF0IHRoZSBkZWZhdWx0IGJlaGF2aW9yIG9mIHNlYXJjaGluZyBhbGwg
cmVjZW50IGNvbmZpZ3VyYXRpb25zIGlmIG5vIHF1ZXJ5IHBhcmFtZXRlcnMgYXJlIHByb3ZpZGVk
IGlzIGRpc2FibGVkIGJlY2F1c2UgdGhlIHJlc3VsdHMgZGF0YWJhc2UgY2Fubm90IHNlYXJjaCBi
eSBhbiB1bmJvdW5kZWQgbnVtYmVyIG9mIGNvbmZpZ3VyYXRpb25zLmAsCiAgICAgICAgIF0sCisg
ICAgICAgICdJbmNsdWRlIEV4cGVjdGF0aW9ucyc6IFsKKyAgICAgICAgICAgIGBTb21lIGVuZHBv
aW50cyByZXR1cm4gZGlmZmVyZW50IHJlc3VsdHMgaWYgdGhlIGNhbGxlciByZXF1ZXN0cyBleHBl
Y3RhdGlvbnMgYmUgdGFrZW4gaW50byBjb25zaWRlcmF0aW9uLiBCeSBkZWZhdWx0LCB0aGlzIGZs
YWcgaXMgZGlzYWJsZWQsIGJ1dCBtYXkgYmUgZW5hYmxlZCBvbiBzdXBwb3J0aW5nIGVucG9pbnRz
IHdpdGggdGhpcyBxdWVyeTpgLAorICAgICAgICAgICAgY29kZUJsb2NrKCdpbmNsdWRlX2V4cGVj
dGF0aW9ucz1GbGFzZScpLAorICAgICAgICBdLAogICAgICAgICAnTGltaXQnOiBbCiAgICAgICAg
ICAgICBgVGhlIHVuZGVybHlpbmcgYXJjaGl0ZWN0dXJlIG9mIHRoZSByZXN1bHRzIGRhdGFiYXNl
IGRvZXMgbm90IGFsbG93IHVubGltaXRlZCBxdWVyeSBzaXplcy4gTW9zdCBlbmRwb2ludHMgYWNj
ZXB0IGEgbGltaXQgcXVlcnkgd2hpY2ggbG9va3MgbGlrZSB0aGlzOmAsCiAgICAgICAgICAgICBj
b2RlQmxvY2soJ2xpbWl0PTE1MCcpLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435288</attachid>
            <date>2021-08-10 14:19:08 -0700</date>
            <delta_ts>2021-08-10 14:26:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226894-20210810141907.patch</filename>
            <type>text/plain</type>
            <size>23256</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI4MDg2MSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDM1IEBACisyMDIxLTA4LTA5ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBbcmVzdWx0c2RicHldIEFkZCBhZ2dyZWdhdGUtcmVzdWx0cyBBUEkKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjg5NAorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vNzkxNTUxODE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9y
ZXN1bHRzZGJweS9fX2luaXRfXy5weTogQnVtcCB2ZXJzaW9uLgorICAgICAgICAqIFNjcmlwdHMv
bGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIvYXBpX3JvdXRlcy5w
eToKKyAgICAgICAgKEFQSVJvdXRlcy5fX2luaXRfXyk6IEFkZCBhZ2dyZWdhdGUtcmVzdWx0cyBl
bmRwb2ludC4KKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRz
ZGJweS9jb250cm9sbGVyL2NvbW1pdF9jb250cm9sbGVyLnB5OgorICAgICAgICAoY29tbWl0X2Zv
cl9xdWVyeSk6IEFkZCBkZWNvcmF0b3Igd2hpY2ggY29udmVydHMgYSBzZXQgb2YgYXJndW1lbnRz
IGludG8gYSBzaW5nbGUgY29tbWl0LgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3Jlc3Vs
dHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIvdGVzdF9jb250cm9sbGVyLnB5OgorICAgICAg
ICAoVGVzdENvbnRyb2xsZXIpOgorICAgICAgICAoVGVzdENvbnRyb2xsZXIuc3VtbWFyaXplX3Rl
c3RfcmVzdWx0cyk6IEdpdmVuIGEgc2luZ2xlIGNvbW1pdCBhbmQgc3VpdGUvdGVzdCBjb21iaW5h
dGlvbiwgY29tcHV0ZQorICAgICAgICB0aGUgbGlrbGlob29kIG9mIGVhY2ggcG90ZW50aWFsIHJl
c3VsdC4KKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJw
eS9jb250cm9sbGVyL3Rlc3RfY29udHJvbGxlcl91bml0dGVzdC5weToKKyAgICAgICAgKFRlc3RD
b250cm9sbGVyVGVzdC50ZXN0X3N1bW1hcml6ZV9nZW5lcmFsKTogQWRkZWQuCisgICAgICAgIChU
ZXN0Q29udHJvbGxlclRlc3QudGVzdF9zdW1tYXJpemVfc3BlY2lmaWMpOiBBZGRlZC4KKyAgICAg
ICAgKFRlc3RDb250cm9sbGVyVGVzdC50ZXN0X3N1bW1hcml6ZV9leHBlY3RhdGlvbnMpOiBBZGRl
ZC4KKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9t
b2RlbC9jb21taXRfY29udGV4dC5weToKKyAgICAgICAgKENvbW1pdENvbnRleHQuZmluZF9jb21t
aXRzX2luX3JhbmdlKTogVXNlIGFzY2VuZGVkIHRhYmxlIGlmIHVzZXIgb25seSBwcm92aWRlcyBs
b3dlciBib3VuZC4KKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1
bHRzZGJweS9tb2RlbC9jb21taXRfY29udGV4dF91bml0dGVzdC5weToKKyAgICAgICAgKENvbW1p
dENvbnRleHRUZXN0LnRlc3Rfc3Rhc2hfY29tbWl0c19iZWZvcmUpOiBWZXJpZnkgdXBwZXIgYm91
bmQuCisgICAgICAgIChDb21taXRDb250ZXh0VGVzdC50ZXN0X3N2bl9jb21taXRzX2JlZm9yZSk6
IERpdHRvLgorICAgICAgICAoQ29tbWl0Q29udGV4dFRlc3QudGVzdF9zdGFzaF9jb21taXRzX2Fm
dGVyKTogVmVyaWZ5IGxvd2VyIGJvdW5kLgorICAgICAgICAoQ29tbWl0Q29udGV4dFRlc3QudGVz
dF9zdm5fY29tbWl0c19hZnRlcik6IERpdHRvLgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVz
L3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcvdGVtcGxhdGVzL2RvY3VtZW50YXRpb24uaHRt
bDogQWRkIGFnZ3JlZ2F0ZS1yZXN1bHRzCisgICAgICAgIGRvY3VtZW50YXRpb24uCisgICAgICAg
ICogU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvc2V0dXAucHk6IEJ1bXAgdmVyc2lvbi4K
KwogMjAyMS0wOC0xMCAgQmVuIE5oYW0gIDxuaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXgg
bmVzdGVkIHJlc291cmNlIGxvYWQgdHJhY2Vwb2ludHMKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGli
cmFyaWVzL3Jlc3VsdHNkYnB5L3NldHVwLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMv
bGlicmFyaWVzL3Jlc3VsdHNkYnB5L3NldHVwLnB5CShyZXZpc2lvbiAyODA4NjEpCisrKyBUb29s
cy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9zZXR1cC5weQkod29ya2luZyBjb3B5KQpA
QCAtMzAsNyArMzAsNyBAQCBkZWYgcmVhZG1lKCk6CiAKIHNldHVwKAogICAgIG5hbWU9J3Jlc3Vs
dHNkYnB5JywKLSAgICB2ZXJzaW9uPSczLjAuMicsCisgICAgdmVyc2lvbj0nMy4xLjAnLAogICAg
IGRlc2NyaXB0aW9uPSdMaWJyYXJ5IGZvciB2aXN1YWxpemluZywgcHJvY2Vzc2luZyBhbmQgc3Rv
cmluZyB0ZXN0IHJlc3VsdHMuJywKICAgICBsb25nX2Rlc2NyaXB0aW9uPXJlYWRtZSgpLAogICAg
IGNsYXNzaWZpZXJzPVsKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5
L3Jlc3VsdHNkYnB5L19faW5pdF9fLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGli
cmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L19faW5pdF9fLnB5CShyZXZpc2lvbiAyODA4
NjEpCisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9f
X2luaXRfXy5weQkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNyBAQCBleGNlcHQgSW1wb3J0
RXJyb3I6CiAgICAgICAgICJQbGVhc2UgaW5zdGFsbCB3ZWJraXRjb3JlcHkgd2l0aCBgcGlwIGlu
c3RhbGwgd2Via2l0Y29yZXB5IC0tZXh0cmEtaW5kZXgtdXJsIDxwYWNrYWdlIGluZGV4IFVSTD5g
IgogICAgICkKIAotdmVyc2lvbiA9IFZlcnNpb24oMywgMCwgMikKK3ZlcnNpb24gPSBWZXJzaW9u
KDMsIDEsIDApCiAKIGltcG9ydCB3ZWJraXRmbGFza3B5CiAKSW5kZXg6IFRvb2xzL1NjcmlwdHMv
bGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIvYXBpX3JvdXRlcy5w
eQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1
bHRzZGJweS9jb250cm9sbGVyL2FwaV9yb3V0ZXMucHkJKHJldmlzaW9uIDI4MDg2MSkKKysrIFRv
b2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIv
YXBpX3JvdXRlcy5weQkod29ya2luZyBjb3B5KQpAQCAtNzAsNiArNzAsNyBAQCBjbGFzcyBBUElS
b3V0ZXMoQXV0aGVkQmx1ZXByaW50KToKIAogICAgICAgICBzZWxmLmFkZF91cmxfcnVsZSgnL3Jl
c3VsdHMvPHBhdGg6c3VpdGU+JywgJ3N1aXRlLXJlc3VsdHMnLCBzZWxmLnN1aXRlX2NvbnRyb2xs
ZXIuZmluZF9ydW5fcmVzdWx0cywgbWV0aG9kcz0oJ0dFVCcsKSkKICAgICAgICAgc2VsZi5hZGRf
dXJsX3J1bGUoJy9yZXN1bHRzLzxwYXRoOnN1aXRlPi88cGF0aDp0ZXN0PicsICd0ZXN0LXJlc3Vs
dHMnLCBzZWxmLnRlc3RfY29udHJvbGxlci5maW5kX3Rlc3RfcmVzdWx0LCBtZXRob2RzPSgnR0VU
JywpKQorICAgICAgICBzZWxmLmFkZF91cmxfcnVsZSgnL3Jlc3VsdHMtc3VtbWFyeS88cGF0aDpz
dWl0ZT4vPHBhdGg6dGVzdD4nLCAndGVzdC1hZ2dyZWdhdGUtcmVzdWx0cycsIHNlbGYudGVzdF9j
b250cm9sbGVyLnN1bW1hcml6ZV90ZXN0X3Jlc3VsdHMsIG1ldGhvZHM9KCdHRVQnLCkpCiAKICAg
ICAgICAgc2VsZi5hZGRfdXJsX3J1bGUoJy9mYWlsdXJlcy88cGF0aDpzdWl0ZT4nLCAnc3VpdGUt
ZmFpbHVyZXMnLCBzZWxmLmZhaWx1cmVfY29udHJvbGxlci5mYWlsdXJlcywgbWV0aG9kcz0oJ0dF
VCcsKSkKIApJbmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0
c2RicHkvY29udHJvbGxlci9jb21taXRfY29udHJvbGxlci5weQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9jb250cm9sbGVyL2Nv
bW1pdF9jb250cm9sbGVyLnB5CShyZXZpc2lvbiAyODA4NjEpCisrKyBUb29scy9TY3JpcHRzL2xp
YnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9jb250cm9sbGVyL2NvbW1pdF9jb250cm9s
bGVyLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xMjUsNiArMTI1LDI2IEBAIGRlZiB1dWlkX3Jhbmdl
X2Zvcl9xdWVyeSgpOgogICAgIHJldHVybiBkZWNvcmF0b3IKIAogCitkZWYgY29tbWl0X2Zvcl9x
dWVyeSgpOgorICAgIGRlZiBkZWNvcmF0b3IobWV0aG9kKToKKyAgICAgICAgZGVmIHJlYWxfbWV0
aG9kKG9iaiwgcmVwb3NpdG9yeV9pZD1Ob25lLCBicmFuY2g9Tm9uZSwgaWQ9Tm9uZSwgcmVmPU5v
bmUsIHV1aWQ9Tm9uZSwgdGltZXN0YW1wPU5vbmUsICoqa3dhcmdzKToKKyAgICAgICAgICAgICMg
V2UncmUgbWFraW5nIGFuIGFzc3VtcHRpb24gdGhhdCB0aGUgY2xhc3MgdXNpbmcgdGhpcyBkZWNv
cmF0b3IgYWN0dWFsbHkgaGFzIGEgY29tbWl0X2NvbnRleHQsIGlmIGl0IGRvZXMgbm90LAorICAg
ICAgICAgICAgIyB0aGlzIGRlY29yYXRvciB3aWxsIGZhaWwgc3BlY3RhY3VsYXJseQorICAgICAg
ICAgICAgd2l0aCBvYmouY29tbWl0X2NvbnRleHQ6CisgICAgICAgICAgICAgICAgaWYgbm90IGJy
YW5jaDoKKyAgICAgICAgICAgICAgICAgICAgYnJhbmNoID0gW05vbmVdCisgICAgICAgICAgICAg
ICAgcmV0dXJuIG1ldGhvZChvYmosIGJyYW5jaD1icmFuY2gsIGNvbW1pdD1fZmluZF9jb21wYXJp
c29uKAorICAgICAgICAgICAgICAgICAgICBvYmouY29tbWl0X2NvbnRleHQsIHJlcG9zaXRvcnlf
aWQ9cmVwb3NpdG9yeV9pZCwgYnJhbmNoPWJyYW5jaCwKKyAgICAgICAgICAgICAgICAgICAgcmVm
PXJlZiBvciBpZCwKKyAgICAgICAgICAgICAgICAgICAgdXVpZD11dWlkLCB0aW1lc3RhbXA9dGlt
ZXN0YW1wLCBwcmlvcml0eT1tYXgsCisgICAgICAgICAgICAgICAgKSwgKiprd2FyZ3MpCisKKyAg
ICAgICAgcmVhbF9tZXRob2QuX19uYW1lX18gPSBtZXRob2QuX19uYW1lX18KKyAgICAgICAgcmV0
dXJuIHJlYWxfbWV0aG9kCisKKyAgICByZXR1cm4gZGVjb3JhdG9yCisKKwogY2xhc3MgSGFzQ29t
bWl0Q29udGV4dChvYmplY3QpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjb21taXRfY29udGV4
dCk6CiAgICAgICAgIHNlbGYuY29tbWl0X2NvbnRleHQgPSBjb21taXRfY29udGV4dApJbmRleDog
VG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxl
ci90ZXN0X2NvbnRyb2xsZXIucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJp
ZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxlci90ZXN0X2NvbnRyb2xsZXIucHkJ
KHJldmlzaW9uIDI4MDg2MSkKKysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5
L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIvdGVzdF9jb250cm9sbGVyLnB5CSh3b3JraW5nIGNvcHkp
CkBAIC0yMSwxMCArMjEsMTIgQEAKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogZnJvbSBmbGFzayBpbXBvcnQg
YWJvcnQsIGpzb25pZnkKLWZyb20gcmVzdWx0c2RicHkuY29udHJvbGxlci5jb21taXRfY29udHJv
bGxlciBpbXBvcnQgdXVpZF9yYW5nZV9mb3JfcXVlcnksIEhhc0NvbW1pdENvbnRleHQKK2Zyb20g
aGVhcHEgaW1wb3J0IG1lcmdlCitmcm9tIHJlc3VsdHNkYnB5LmNvbnRyb2xsZXIuY29tbWl0X2Nv
bnRyb2xsZXIgaW1wb3J0IHV1aWRfcmFuZ2VfZm9yX3F1ZXJ5LCBjb21taXRfZm9yX3F1ZXJ5LCBI
YXNDb21taXRDb250ZXh0CiBmcm9tIHJlc3VsdHNkYnB5LmNvbnRyb2xsZXIuY29uZmlndXJhdGlv
biBpbXBvcnQgQ29uZmlndXJhdGlvbgogZnJvbSByZXN1bHRzZGJweS5jb250cm9sbGVyLmNvbmZp
Z3VyYXRpb25fY29udHJvbGxlciBpbXBvcnQgY29uZmlndXJhdGlvbl9mb3JfcXVlcnkKIGZyb20g
cmVzdWx0c2RicHkuY29udHJvbGxlci5zdWl0ZV9jb250cm9sbGVyIGltcG9ydCB0aW1lX3Jhbmdl
X2Zvcl9xdWVyeQorZnJvbSByZXN1bHRzZGJweS5tb2RlbC50ZXN0X2NvbnRleHQgaW1wb3J0IEV4
cGVjdGF0aW9ucwogZnJvbSB3ZWJraXRmbGFza3B5LnV0aWwgaW1wb3J0IEFzc2VydFJlcXVlc3Qs
IHF1ZXJ5X2FzX2t3YXJncywgbGltaXRfZm9yX3F1ZXJ5LCBib29sZWFuX3F1ZXJ5CiAKIApAQCAt
MTAyLDMgKzEwNCwxMDcgQEAgY2xhc3MgVGVzdENvbnRyb2xsZXIoSGFzQ29tbWl0Q29udGV4dCk6
CiAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHM9c29ydGVkKHJlc3VsdHMsIGtleT1zb3J0X2Z1
bmN0aW9uKSwKICAgICAgICAgICAgICAgICApKQogICAgICAgICAgICAgcmV0dXJuIGpzb25pZnko
cmVzcG9uc2UpCisKKyAgICBAcXVlcnlfYXNfa3dhcmdzKCkKKyAgICBAY29tbWl0X2Zvcl9xdWVy
eSgpCisgICAgQGxpbWl0X2Zvcl9xdWVyeSgxMDApCisgICAgQGNvbmZpZ3VyYXRpb25fZm9yX3F1
ZXJ5KCkKKyAgICBkZWYgc3VtbWFyaXplX3Rlc3RfcmVzdWx0cygKKyAgICAgICAgc2VsZiwgc3Vp
dGU9Tm9uZSwgdGVzdD1Ob25lLAorICAgICAgICBjb25maWd1cmF0aW9ucz1Ob25lLCByZWNlbnQ9
Tm9uZSwKKyAgICAgICAgYnJhbmNoPU5vbmUsIGNvbW1pdD1Ob25lLAorICAgICAgICBsaW1pdD1O
b25lLCBpbmNsdWRlX2V4cGVjdGF0aW9ucz1Ob25lLCAqKmt3YXJncworICAgICk6CisgICAgICAg
IEFzc2VydFJlcXVlc3QuaXNfdHlwZShbJ0dFVCddKQorICAgICAgICBBc3NlcnRSZXF1ZXN0LnF1
ZXJ5X2t3YXJnc19lbXB0eSgqKmt3YXJncykKKworICAgICAgICByZWNlbnQgPSBib29sZWFuX3F1
ZXJ5KCpyZWNlbnQpWzBdIGlmIHJlY2VudCBlbHNlIFRydWUKKyAgICAgICAgaW5jbHVkZV9leHBl
Y3RhdGlvbnMgPSBib29sZWFuX3F1ZXJ5KCppbmNsdWRlX2V4cGVjdGF0aW9ucylbMF0gaWYgaW5j
bHVkZV9leHBlY3RhdGlvbnMgZWxzZSBGYWxzZQorCisgICAgICAgIGlmIG5vdCBzdWl0ZToKKyAg
ICAgICAgICAgIGFib3J0KDQwMCwgZGVzY3JpcHRpb249J05vIHN1aXRlIHNwZWNpZmllZCcpCisg
ICAgICAgIGlmIG5vdCB0ZXN0OgorICAgICAgICAgICAgYWJvcnQoNDAwLCBkZXNjcmlwdGlvbj0n
Tm8gdGVzdCBzcGVjaWZpZWQnKQorCisgICAgICAgIGxpbWl0ICs9IDEKKyAgICAgICAgYmVmb3Jl
X2NvbW1pdHMgPSBbXQorICAgICAgICBhZnRlcl9jb21taXRzID0gW10KKyAgICAgICAgd2l0aCBz
ZWxmLmNvbW1pdF9jb250ZXh0OgorICAgICAgICAgICAgZm9yIHJlcG9faWQgaW4gc2VsZi5jb21t
aXRfY29udGV4dC5yZXBvc2l0b3JpZXMua2V5cygpOgorICAgICAgICAgICAgICAgIGlmIGNvbW1p
dDoKKyAgICAgICAgICAgICAgICAgICAgYmVmb3JlX2NvbW1pdHMgPSBzb3J0ZWQobGlzdChyZXZl
cnNlZChzZWxmLmNvbW1pdF9jb250ZXh0LmZpbmRfY29tbWl0c19pbl9yYW5nZSgKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHJlcG9zaXRvcnlfaWQ9cmVwb19pZCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGVuZD1jb21taXQsIGJyYW5jaD1icmFuY2hbMF0sIGxpbWl0PWxpbWl0LAorICAgICAg
ICAgICAgICAgICAgICApKSkgKyBiZWZvcmVfY29tbWl0cykKKyAgICAgICAgICAgICAgICAgICAg
YWZ0ZXJfY29tbWl0cyA9IHNvcnRlZChsaXN0KHJldmVyc2VkKHNlbGYuY29tbWl0X2NvbnRleHQu
ZmluZF9jb21taXRzX2luX3JhbmdlKAorICAgICAgICAgICAgICAgICAgICAgICAgcmVwb3NpdG9y
eV9pZD1yZXBvX2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW49Y29tbWl0LCBicmFu
Y2g9YnJhbmNoWzBdLCBsaW1pdD1saW1pdCwKKyAgICAgICAgICAgICAgICAgICAgKSkpICsgYWZ0
ZXJfY29tbWl0cykKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBi
ZWZvcmVfY29tbWl0cyA9IGxpc3QobWVyZ2UoCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxm
LmNvbW1pdF9jb250ZXh0LmZpbmRfY29tbWl0c19pbl9yYW5nZShyZXBvc2l0b3J5X2lkPXJlcG9f
aWQsIGJyYW5jaD1icmFuY2hbMF0sIGxpbWl0PWxpbWl0KSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGJlZm9yZV9jb21taXRzLAorICAgICAgICAgICAgICAgICAgICApKQorICAgICAgICAgICAg
ICAgICAgICBiZWZvcmVfY29tbWl0cy5yZXZlcnNlKCkKKyAgICAgICAgICAgICAgICBhZnRlcl9j
b21taXRzLnJldmVyc2UoKQorCisgICAgICAgIGJlZm9yZV9jb21taXRzID0gc29ydGVkKGJlZm9y
ZV9jb21taXRzKQorICAgICAgICBhZnRlcl9jb21taXRzID0gc29ydGVkKGFmdGVyX2NvbW1pdHMp
CisKKyAgICAgICAgYmVmb3JlX2NvbW1pdHMgPSBiZWZvcmVfY29tbWl0c1stbGltaXQ6XQorICAg
ICAgICBhZnRlcl9jb21taXRzID0gYWZ0ZXJfY29tbWl0c1s6bGltaXRdCisgICAgICAgIGlmIGJl
Zm9yZV9jb21taXRzIGFuZCBhZnRlcl9jb21taXRzIGFuZCBiZWZvcmVfY29tbWl0c1stMV0gPT0g
YWZ0ZXJfY29tbWl0c1swXToKKyAgICAgICAgICAgIGRlbCBiZWZvcmVfY29tbWl0c1stMV0KKwor
ICAgICAgICBpZiBub3QgYmVmb3JlX2NvbW1pdHMgYW5kIG5vdCBhZnRlcl9jb21taXRzOgorICAg
ICAgICAgICAgcmV0dXJuIGFib3J0KDQwMCwgZGVzY3JpcHRpb249J05vIGNvbW1pdHMgaW4gc3Bl
Y2lmaWVkIHJhbmdlJykKKworICAgICAgICAjIFVzZSB0aGUgbGluZWFyIGRpc3RhbmNlIGZyb20g
dGhlIHNwZWNpZmllZCBjb21taXQKKyAgICAgICAgc2NhbGVfZm9yX3V1aWQgPSB7fQorICAgICAg
ICBjb3VudCA9IGxpbWl0IC0gMQorICAgICAgICBmb3IgYyBpbiByZXZlcnNlZChiZWZvcmVfY29t
bWl0cyk6CisgICAgICAgICAgICBzY2FsZV9mb3JfdXVpZFtjLnV1aWRdID0gY291bnQKKyAgICAg
ICAgICAgIGNvdW50IC09IDEKKyAgICAgICAgY291bnQgPSBsaW1pdAorICAgICAgICBmb3IgYyBp
biBhZnRlcl9jb21taXRzOgorICAgICAgICAgICAgc2NhbGVfZm9yX3V1aWRbYy51dWlkXSA9IGNv
dW50CisgICAgICAgICAgICBjb3VudCAtPSAxCisKKyAgICAgICAgIyBBIGRpcmVjdCBtYXRjaCB0
byB0aGUgcHJvdmlkZWQgY29tbWl0IG1hdHRlcnMgbW9zdAorICAgICAgICBpZiBjb21taXQ6Cisg
ICAgICAgICAgICBzY2FsZV9mb3JfdXVpZFtjb21taXQudXVpZF0gPSBsaW1pdCAqIDIKKworICAg
ICAgICByZXNwb25zZSA9IHt9CisgICAgICAgIGZvciB2YWx1ZSBpbiBFeHBlY3RhdGlvbnMuU1RB
VEVfSURfVE9fU1RSSU5HLnZhbHVlcygpOgorICAgICAgICAgICAgcmVzcG9uc2VbdmFsdWUubG93
ZXIoKV0gPSB7fSBpZiBpbmNsdWRlX2V4cGVjdGF0aW9ucyBlbHNlIDAKKworICAgICAgICB3aXRo
IHNlbGYudGVzdF9jb250ZXh0OgorICAgICAgICAgICAgZm9yIGNvbmZpZywgcmVzdWx0cyBpbiBz
ZWxmLnRlc3RfY29udGV4dC5maW5kX2J5X2NvbW1pdCgKKyAgICAgICAgICAgICAgICBzdWl0ZT1z
dWl0ZSwgdGVzdD10ZXN0LAorICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25zPWNvbmZpZ3Vy
YXRpb25zLCByZWNlbnQ9cmVjZW50LAorICAgICAgICAgICAgICAgIGJyYW5jaD1icmFuY2hbMF0s
CisgICAgICAgICAgICAgICAgbGltaXQ9bGltaXQgKiA0LAorICAgICAgICAgICAgICAgIGJlZ2lu
PShiZWZvcmVfY29tbWl0cyBvciBhZnRlcl9jb21taXRzKVswXSwgZW5kPShhZnRlcl9jb21taXRz
IG9yIGJlZm9yZV9jb21taXRzKVstMV0sCisgICAgICAgICAgICApLml0ZW1zKCk6CisgICAgICAg
ICAgICAgICAgZm9yIHJlc3VsdCBpbiByZXN1bHRzOgorICAgICAgICAgICAgICAgICAgICBzY2Fs
ZSA9IHNjYWxlX2Zvcl91dWlkLmdldChpbnQocmVzdWx0Wyd1dWlkJ10pLCAwKQorICAgICAgICAg
ICAgICAgICAgICBpZiBub3Qgc2NhbGU6CisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51
ZQorICAgICAgICAgICAgICAgICAgICB0YWcgPSByZXN1bHQuZ2V0KCdhY3R1YWwnLCAnUEFTUycp
Lmxvd2VyKCkKKyAgICAgICAgICAgICAgICAgICAgaWYgaW5jbHVkZV9leHBlY3RhdGlvbnM6Cisg
ICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZCA9ICdleHBlY3RlZCcgaWYgbm90IHJlc3Vs
dC5nZXQoJ2V4cGVjdGVkJykgb3IgcmVzdWx0WydhY3R1YWwnXSA9PSByZXN1bHRbJ2V4cGVjdGVk
J10gZWxzZSAndW5leHBlY3RlZCcKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlW3Rh
Z11bZXhwZWN0ZWRdID0gcmVzcG9uc2VbdGFnXS5nZXQoZXhwZWN0ZWQsIDApICsgc2NhbGUKKyAg
ICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNl
W3RhZ10gPSByZXNwb25zZVt0YWddICsgc2NhbGUKKworICAgICAgICBhZ2dyZWdhdGUgPSBzdW0o
W3N1bSh2YWx1ZS52YWx1ZXMoKSkgaWYgaW5jbHVkZV9leHBlY3RhdGlvbnMgZWxzZSB2YWx1ZSBm
b3IgdmFsdWUgaW4gcmVzcG9uc2UudmFsdWVzKCldKQorICAgICAgICBpZiBub3QgYWdncmVnYXRl
OgorICAgICAgICAgICAgcmV0dXJuIGFib3J0KDQwMCwgZGVzY3JpcHRpb249J05vIHJlc3VsdHMg
Zm9yIHNwZWNpZmllZCB0ZXN0IGFuZCBjb25maWd1cmF0aW9uIGluIHByb3ZpZGVkIGNvbW1pdCBy
YW5nZScpCisgICAgICAgIGZvciBrZXlfaSBpbiByZXNwb25zZS5rZXlzKCk6CisgICAgICAgICAg
ICBpZiBpbmNsdWRlX2V4cGVjdGF0aW9uczoKKyAgICAgICAgICAgICAgICBmb3Iga2V5X2lpIGlu
IHJlc3BvbnNlW2tleV9pXS5rZXlzKCk6CisgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlW2tl
eV9pXVtrZXlfaWldID0gMTAwICogcmVzcG9uc2Vba2V5X2ldW2tleV9paV0gLy8gKGFnZ3JlZ2F0
ZSBvciAxKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXNwb25zZVtrZXlf
aV0gPSAxMDAgKiByZXNwb25zZVtrZXlfaV0gLy8gKGFnZ3JlZ2F0ZSBvciAxKQorCisgICAgICAg
IHJldHVybiBqc29uaWZ5KHJlc3BvbnNlKQpJbmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMv
cmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxlci90ZXN0X2NvbnRyb2xsZXJfdW5pdHRl
c3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkv
cmVzdWx0c2RicHkvY29udHJvbGxlci90ZXN0X2NvbnRyb2xsZXJfdW5pdHRlc3QucHkJKHJldmlz
aW9uIDI4MDg2MSkKKysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3Vs
dHNkYnB5L2NvbnRyb2xsZXIvdGVzdF9jb250cm9sbGVyX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNv
cHkpCkBAIC0xMzYsMyArMTM2LDU5IEBAIGNsYXNzIFRlc3RDb250cm9sbGVyVGVzdChGbGFza1Rl
c3RDYXNlLCAKICAgICAgICAgcmVzcG9uc2UgPSBjbGllbnQuZ2V0KHNlbGYuVVJMICsgZicvYXBp
L3Jlc3VsdHMvbGF5b3V0LXRlc3RzL2Zhc3QvZW5jb2RpbmcvY3NzLWxpbmstY2hhcnNldC5odG1s
P3BsYXRmb3JtPWlPUyZzdHlsZT1EZWJ1ZyZyZWNlbnQ9RmFsc2UmYWZ0ZXJfdGltZT17dGltZS50
aW1lKCkgKyAxfScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2Uuc3RhdHVzX2Nv
ZGUsIDIwMCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVzcG9uc2UuanNvbigpKSwg
MCkKKworICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19y
ZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0
KQorICAgIEBGbGFza1Rlc3RDYXNlLnJ1bl93aXRoX3dlYnNlcnZlcigpCisgICAgZGVmIHRlc3Rf
c3VtbWFyaXplX2dlbmVyYWwoc2VsZiwgY2xpZW50LCAqKmt3YXJncyk6CisgICAgICAgIHNlbGYu
bWF4RGlmZiA9IE5vbmUKKyAgICAgICAgcmVzcG9uc2UgPSBjbGllbnQuZ2V0KAorICAgICAgICAg
ICAgc2VsZi5VUkwgKyBmJy9hcGkvcmVzdWx0cy1zdW1tYXJ5L2xheW91dC10ZXN0cy9mYXN0L2Vu
Y29kaW5nL2Nzcy1saW5rLWNoYXJzZXQuaHRtbD9saW1pdD0yJykKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChyZXNwb25zZS5zdGF0dXNfY29kZSwgMjAwKQorICAgICAgICBzZWxmLmFzc2VydERp
Y3RFcXVhbChyZXNwb25zZS5qc29uKCksIHsKKyAgICAgICAgICAgICdhdWRpbyc6IDAsCisgICAg
ICAgICAgICAnY3Jhc2gnOiAwLAorICAgICAgICAgICAgJ2Vycm9yJzogMCwKKyAgICAgICAgICAg
ICdmYWlsJzogMCwKKyAgICAgICAgICAgICdpbWFnZSc6IDAsCisgICAgICAgICAgICAncGFzcyc6
IDEwMCwKKyAgICAgICAgICAgICd0ZXh0JzogMCwKKyAgICAgICAgICAgICd0aW1lb3V0JzogMCwK
KyAgICAgICAgICAgICd3YXJuaW5nJzogMCwKKyAgICAgICAgfSkKKworICAgIEBXYWl0Rm9yRG9j
a2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMs
IG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQorICAgIEBGbGFza1Rlc3RDYXNl
LnJ1bl93aXRoX3dlYnNlcnZlcigpCisgICAgZGVmIHRlc3Rfc3VtbWFyaXplX3NwZWNpZmljKHNl
bGYsIGNsaWVudCwgKiprd2FyZ3MpOgorICAgICAgICBzZWxmLm1heERpZmYgPSBOb25lCisgICAg
ICAgIHJlc3BvbnNlID0gY2xpZW50LmdldChzZWxmLlVSTCArIGYnL2FwaS9yZXN1bHRzLXN1bW1h
cnkvbGF5b3V0LXRlc3RzL2Zhc3QvZW5jb2RpbmcvY3NzLWxpbmstY2hhcnNldC5odG1sP3JlZj0x
YWJlMjViNDQzZTkmbGltaXQ9MicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2Uu
c3RhdHVzX2NvZGUsIDIwMCkKKyAgICAgICAgc2VsZi5hc3NlcnREaWN0RXF1YWwocmVzcG9uc2Uu
anNvbigpLCB7CisgICAgICAgICAgICAnYXVkaW8nOiAwLAorICAgICAgICAgICAgJ2NyYXNoJzog
MCwKKyAgICAgICAgICAgICdlcnJvcic6IDAsCisgICAgICAgICAgICAnZmFpbCc6IDAsCisgICAg
ICAgICAgICAnaW1hZ2UnOiAwLAorICAgICAgICAgICAgJ3Bhc3MnOiAxMDAsCisgICAgICAgICAg
ICAndGV4dCc6IDAsCisgICAgICAgICAgICAndGltZW91dCc6IDAsCisgICAgICAgICAgICAnd2Fy
bmluZyc6IDAsCisgICAgICAgIH0pCisKKyAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tf
aWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1N
b2NrQ2Fzc2FuZHJhQ29udGV4dCkKKyAgICBARmxhc2tUZXN0Q2FzZS5ydW5fd2l0aF93ZWJzZXJ2
ZXIoKQorICAgIGRlZiB0ZXN0X3N1bW1hcml6ZV9leHBlY3RhdGlvbnMoc2VsZiwgY2xpZW50LCAq
Kmt3YXJncyk6CisgICAgICAgIHNlbGYubWF4RGlmZiA9IE5vbmUKKyAgICAgICAgcmVzcG9uc2Ug
PSBjbGllbnQuZ2V0KAorICAgICAgICAgICAgc2VsZi5VUkwgKyBmJy9hcGkvcmVzdWx0cy1zdW1t
YXJ5L2xheW91dC10ZXN0cy9mYXN0L2VuY29kaW5nL2Nzcy1saW5rLWNoYXJzZXQuaHRtbD9saW1p
dD0yJmluY2x1ZGVfZXhwZWN0YXRpb25zPVRydWUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KHJlc3BvbnNlLnN0YXR1c19jb2RlLCAyMDApCisgICAgICAgIHNlbGYuYXNzZXJ0RGljdEVxdWFs
KHJlc3BvbnNlLmpzb24oKSwgeworICAgICAgICAgICAgJ2F1ZGlvJzoge30sCisgICAgICAgICAg
ICAnY3Jhc2gnOiB7fSwKKyAgICAgICAgICAgICdlcnJvcic6IHt9LAorICAgICAgICAgICAgJ2Zh
aWwnOiB7fSwKKyAgICAgICAgICAgICdpbWFnZSc6IHt9LAorICAgICAgICAgICAgJ3Bhc3MnOiBk
aWN0KGV4cGVjdGVkPTEwMCksCisgICAgICAgICAgICAndGV4dCc6IHt9LAorICAgICAgICAgICAg
J3RpbWVvdXQnOiB7fSwKKyAgICAgICAgICAgICd3YXJuaW5nJzoge30sCisgICAgICAgIH0pCklu
ZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2Rl
bC9jb21taXRfY29udGV4dC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJhcmll
cy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC9jb21taXRfY29udGV4dC5weQkocmV2aXNp
b24gMjgwODYxKQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0
c2RicHkvbW9kZWwvY29tbWl0X2NvbnRleHQucHkJKHdvcmtpbmcgY29weSkKQEAgLTIxMywxNiAr
MjEzLDIwIEBAIGNsYXNzIENvbW1pdENvbnRleHQob2JqZWN0KToKICAgICAgICAgaWYgYnJhbmNo
IGlzIE5vbmU6CiAgICAgICAgICAgICBicmFuY2ggPSBzZWxmLnJlcG9zaXRvcmllc1tyZXBvc2l0
b3J5X2lkXS5kZWZhdWx0X2JyYW5jaAogCisgICAgICAgIHVzZV9hc2NlbmRpbmcgPSBiZWdpbiBh
bmQgbm90IGVuZAogICAgICAgICBiZWdpbiA9IHNlbGYuY29udmVydF90b191dWlkKGJlZ2luKQog
ICAgICAgICBlbmQgPSBzZWxmLmNvbnZlcnRfdG9fdXVpZChlbmQsIHNlbGYudGltZXN0YW1wX3Rv
X3V1aWQoKSkKIAogICAgICAgICB3aXRoIHNlbGY6Ci0gICAgICAgICAgICByZXR1cm4gW21vZGVs
LnRvX2NvbW1pdCgpIGZvciBtb2RlbCBpbiBzZWxmLmNhc3NhbmRyYS5zZWxlY3RfZnJvbV90YWJs
ZSgKLSAgICAgICAgICAgICAgICBzZWxmLkNvbW1pdEJ5VXVpZERlc2NlbmRpbmcuX190YWJsZV9u
YW1lX18sIGxpbWl0PWxpbWl0LAotICAgICAgICAgICAgICAgIHJlcG9zaXRvcnlfaWQ9cmVwb3Np
dG9yeV9pZCwgYnJhbmNoPWJyYW5jaCwKKyAgICAgICAgICAgIHJlc3VsdCA9IFttb2RlbC50b19j
b21taXQoKSBmb3IgbW9kZWwgaW4gc2VsZi5jYXNzYW5kcmEuc2VsZWN0X2Zyb21fdGFibGUoCisg
ICAgICAgICAgICAgICAgc2VsZi5Db21taXRCeVV1aWRBc2NlbmRpbmcuX190YWJsZV9uYW1lX18g
aWYgdXNlX2FzY2VuZGluZyBlbHNlIHNlbGYuQ29tbWl0QnlVdWlkRGVzY2VuZGluZy5fX3RhYmxl
X25hbWVfXywKKyAgICAgICAgICAgICAgICBsaW1pdD1saW1pdCwgcmVwb3NpdG9yeV9pZD1yZXBv
c2l0b3J5X2lkLCBicmFuY2g9YnJhbmNoLAogICAgICAgICAgICAgICAgIHV1aWRfX2d0ZT1iZWdp
biwKICAgICAgICAgICAgICAgICB1dWlkX19sdGU9ZW5kLAogICAgICAgICAgICAgKV0KKyAgICAg
ICAgICAgIGlmIHVzZV9hc2NlbmRpbmc6CisgICAgICAgICAgICAgICAgcmVzdWx0LnJldmVyc2Uo
KQorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAogCiAgICAgZGVmIF9hZGphY2VudF9jb21taXQo
c2VsZiwgY29tbWl0LCBhc2NlbmRpbmc9VHJ1ZSk6CiAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNl
KGNvbW1pdCwgQ29tbWl0KToKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNk
YnB5L3Jlc3VsdHNkYnB5L21vZGVsL2NvbW1pdF9jb250ZXh0X3VuaXR0ZXN0LnB5Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21v
ZGVsL2NvbW1pdF9jb250ZXh0X3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyODA4NjEpCisrKyBUb29s
cy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC9jb21taXRf
Y29udGV4dF91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMTgwLDYgKzE4MCw1OCBAQCBj
bGFzcyBDb21taXRDb250ZXh0VGVzdChXYWl0Rm9yRG9ja2VyVGVzCiAgICAgICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGNvbW1pdHMsIHNlbGYuZGF0YWJhc2UuZmluZF9jb21taXRzX2luX3Jhbmdl
KHJlcG9zaXRvcnlfaWQ9J3dlYmtpdCcsIGJyYW5jaD0nbWFpbicsIGJlZ2luPWNvbW1pdHNbLTFd
LCBlbmQ9Y29tbWl0c1swXSkpCiAKICAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZf
bm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2Nr
Q2Fzc2FuZHJhQ29udGV4dCkKKyAgICBkZWYgdGVzdF9zdGFzaF9jb21taXRzX2JlZm9yZShzZWxm
LCByZWRpcz1TdHJpY3RSZWRpcywgY2Fzc2FuZHJhPUNhc3NhbmRyYUNvbnRleHQpOgorICAgICAg
ICB3aXRoIE1vY2tNb2RlbEZhY3Rvcnkuc2FmYXJpKCksIE1vY2tNb2RlbEZhY3Rvcnkud2Via2l0
KCk6CisgICAgICAgICAgICBzZWxmLmluaXRfZGF0YWJhc2UocmVkaXM9cmVkaXMsIGNhc3NhbmRy
YT1jYXNzYW5kcmEpCisgICAgICAgICAgICBzZWxmLmFkZF9hbGxfY29tbWl0c190b19kYXRhYmFz
ZSgpCisKKyAgICAgICAgICAgIGNvbW1pdHMgPSBbCisgICAgICAgICAgICAgICAgc2VsZi5zdGFz
aF9yZXBvc2l0b3J5LmNvbW1pdChyZWY9JzFhYmUyNWI0NDNlOScpLAorICAgICAgICAgICAgICAg
IHNlbGYuc3Rhc2hfcmVwb3NpdG9yeS5jb21taXQocmVmPSdmZmY4M2JiMmQ5MTcnKSwKKyAgICAg
ICAgICAgICAgICBzZWxmLnN0YXNoX3JlcG9zaXRvcnkuY29tbWl0KHJlZj0nOWI4MzExZjI1YTc3
JyksCisgICAgICAgICAgICBdCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1pdHMs
IHNlbGYuZGF0YWJhc2UuZmluZF9jb21taXRzX2luX3JhbmdlKHJlcG9zaXRvcnlfaWQ9J3NhZmFy
aScsIGJyYW5jaD0nbWFpbicsIGVuZD1jb21taXRzWzBdLCBsaW1pdD0zKSkKKworICAgIEBXYWl0
Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0
UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQorICAgIGRlZiB0ZXN0
X3N2bl9jb21taXRzX2JlZm9yZShzZWxmLCByZWRpcz1TdHJpY3RSZWRpcywgY2Fzc2FuZHJhPUNh
c3NhbmRyYUNvbnRleHQpOgorICAgICAgICB3aXRoIE1vY2tNb2RlbEZhY3Rvcnkuc2FmYXJpKCks
IE1vY2tNb2RlbEZhY3Rvcnkud2Via2l0KCk6CisgICAgICAgICAgICBzZWxmLmluaXRfZGF0YWJh
c2UocmVkaXM9cmVkaXMsIGNhc3NhbmRyYT1jYXNzYW5kcmEpCisgICAgICAgICAgICBzZWxmLmFk
ZF9hbGxfY29tbWl0c190b19kYXRhYmFzZSgpCisKKyAgICAgICAgICAgIGNvbW1pdHMgPSBbCisg
ICAgICAgICAgICAgICAgc2VsZi5zdm5fcmVwb3NpdG9yeS5jb21taXQocmVmPTYpLAorICAgICAg
ICAgICAgICAgIHNlbGYuc3ZuX3JlcG9zaXRvcnkuY29tbWl0KHJlZj00KSwKKyAgICAgICAgICAg
ICAgICBzZWxmLnN2bl9yZXBvc2l0b3J5LmNvbW1pdChyZWY9MiksCisgICAgICAgICAgICBdCisg
ICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1pdHMsIHNlbGYuZGF0YWJhc2UuZmluZF9j
b21taXRzX2luX3JhbmdlKHJlcG9zaXRvcnlfaWQ9J3dlYmtpdCcsIGJyYW5jaD0nbWFpbicsIGVu
ZD1jb21taXRzWzBdLCBsaW1pdD0zKSkKKworICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9j
a19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJh
PU1vY2tDYXNzYW5kcmFDb250ZXh0KQorICAgIGRlZiB0ZXN0X3N0YXNoX2NvbW1pdHNfYWZ0ZXIo
c2VsZiwgcmVkaXM9U3RyaWN0UmVkaXMsIGNhc3NhbmRyYT1DYXNzYW5kcmFDb250ZXh0KToKKyAg
ICAgICAgd2l0aCBNb2NrTW9kZWxGYWN0b3J5LnNhZmFyaSgpLCBNb2NrTW9kZWxGYWN0b3J5Lndl
YmtpdCgpOgorICAgICAgICAgICAgc2VsZi5pbml0X2RhdGFiYXNlKHJlZGlzPXJlZGlzLCBjYXNz
YW5kcmE9Y2Fzc2FuZHJhKQorICAgICAgICAgICAgc2VsZi5hZGRfYWxsX2NvbW1pdHNfdG9fZGF0
YWJhc2UoKQorCisgICAgICAgICAgICBjb21taXRzID0gWworICAgICAgICAgICAgICAgIHNlbGYu
c3Rhc2hfcmVwb3NpdG9yeS5jb21taXQocmVmPScxYWJlMjViNDQzZTknKSwKKyAgICAgICAgICAg
ICAgICBzZWxmLnN0YXNoX3JlcG9zaXRvcnkuY29tbWl0KHJlZj0nZmZmODNiYjJkOTE3JyksCisg
ICAgICAgICAgICAgICAgc2VsZi5zdGFzaF9yZXBvc2l0b3J5LmNvbW1pdChyZWY9JzliODMxMWYy
NWE3NycpLAorICAgICAgICAgICAgXQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21t
aXRzLCBzZWxmLmRhdGFiYXNlLmZpbmRfY29tbWl0c19pbl9yYW5nZShyZXBvc2l0b3J5X2lkPSdz
YWZhcmknLCBicmFuY2g9J21haW4nLCBiZWdpbj1jb21taXRzWy0xXSwgbGltaXQ9MykpCisKKyAg
ICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFr
ZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKKyAgICBk
ZWYgdGVzdF9zdm5fY29tbWl0c19hZnRlcihzZWxmLCByZWRpcz1TdHJpY3RSZWRpcywgY2Fzc2Fu
ZHJhPUNhc3NhbmRyYUNvbnRleHQpOgorICAgICAgICB3aXRoIE1vY2tNb2RlbEZhY3Rvcnkuc2Fm
YXJpKCksIE1vY2tNb2RlbEZhY3Rvcnkud2Via2l0KCk6CisgICAgICAgICAgICBzZWxmLmluaXRf
ZGF0YWJhc2UocmVkaXM9cmVkaXMsIGNhc3NhbmRyYT1jYXNzYW5kcmEpCisgICAgICAgICAgICBz
ZWxmLmFkZF9hbGxfY29tbWl0c190b19kYXRhYmFzZSgpCisKKyAgICAgICAgICAgIGNvbW1pdHMg
PSBbCisgICAgICAgICAgICAgICAgc2VsZi5zdm5fcmVwb3NpdG9yeS5jb21taXQocmVmPTYpLAor
ICAgICAgICAgICAgICAgIHNlbGYuc3ZuX3JlcG9zaXRvcnkuY29tbWl0KHJlZj00KSwKKyAgICAg
ICAgICAgICAgICBzZWxmLnN2bl9yZXBvc2l0b3J5LmNvbW1pdChyZWY9MiksCisgICAgICAgICAg
ICBdCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1pdHMsIHNlbGYuZGF0YWJhc2Uu
ZmluZF9jb21taXRzX2luX3JhbmdlKHJlcG9zaXRvcnlfaWQ9J3dlYmtpdCcsIGJyYW5jaD0nbWFp
bicsIGJlZ2luPWNvbW1pdHNbLTFdLCBsaW1pdD0zKSkKKworICAgIEBXYWl0Rm9yRG9ja2VyVGVz
dENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tf
Y2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQogICAgIGRlZiB0ZXN0X2NvbW1pdF9mcm9t
X3N0YXNoX3JlcG8oc2VsZiwgcmVkaXM9U3RyaWN0UmVkaXMsIGNhc3NhbmRyYT1DYXNzYW5kcmFD
b250ZXh0KToKICAgICAgICAgd2l0aCBNb2NrTW9kZWxGYWN0b3J5LnNhZmFyaSgpLCBNb2NrTW9k
ZWxGYWN0b3J5LndlYmtpdCgpOgogICAgICAgICAgICAgc2VsZi5pbml0X2RhdGFiYXNlKHJlZGlz
PXJlZGlzLCBjYXNzYW5kcmE9Y2Fzc2FuZHJhKQpJbmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJp
ZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy90ZW1wbGF0ZXMvZG9jdW1lbnRhdGlvbi5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jl
c3VsdHNkYnB5L3ZpZXcvdGVtcGxhdGVzL2RvY3VtZW50YXRpb24uaHRtbAkocmV2aXNpb24gMjgw
ODYxKQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkv
dmlldy90ZW1wbGF0ZXMvZG9jdW1lbnRhdGlvbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC01Niwx
MCArNTYsOSBAQCBmdW5jdGlvbiBkb2N1bWVudEVuZHBvaW50KGVuZHBvaW50LCBhY3RpCiAgICAg
ICAgICAgICAgICAgICAgICR7cXVlcmllcy5tYXAoKHF1ZXJ5KSA9PiB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gYDxkaXYgY2xhc3M9ImJhZGdlIj4KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dCBibG9jayI+Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0idGV4dCB0aW55IiBocmVmPSIjUXVlcnktUGFy
YW1ldGVycy0ke3F1ZXJ5fSI+JHtxdWVyeX08L2E+CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA8YSBjbGFzcz0idGV4dCB0aW55IiBocmVmPSIjUXVlcnktUGFyYW1ldGVycy0k
e3F1ZXJ5LnJlcGxhY2UoL1xzL2csICctJyl9Ij4ke3F1ZXJ5LnJlcGxhY2UoL1xzL2csICctJyl9
PC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA8L2Rpdj5gOwotICAgICAgICAgICAgICAgICAgICAgICAgLy9yZXR1
cm4gYDxidXR0b24gY2xhc3M9ImJ1dHRvbiIgb25jbGljaz0id2luZG93LmxvY2F0aW9uLmhyZWYg
PSAnL2RvY3VtZW50YXRpb24jUXVlcnktUGFyYW1ldGVycy0ke3F1ZXJ5fSc7Ij4ke3F1ZXJ5fTwv
YnV0dG9uPmAKICAgICAgICAgICAgICAgICAgICAgfSkuam9pbignJyl9CiAgICAgICAgICAgICAg
ICAgPC9kaXY+CiAgICAgICAgICAgICA8L2Rpdj4KQEAgLTM1OSw2ICszNTgsMjAgQEAgY29uc3Qg
ZG9jdW1lbnRhdGlvbiA9IHsKICAgICAgICAgICAgICAgICAgICAgYHdoZXJlICZsdGNvbmZpZ3Vy
YXRpb24tb2JqZWN0LWEmZ3QgYW5kICZsdGNvbmZpZ3VyYXRpb24tb2JqZWN0LWImZ3QgYXJlIGJv
dGggJHtsb2NhbExpbmsoWydRdWVyeSBQYXJhbWV0ZXJzJywgJ0NvbmZpZ3VyYXRpb24nXSwgJ2Nv
bmZpZ3VyYXRpb24gb2JqZWN0cycpfScgYW5kICZsdHJ1bi1hMSZndCwgJmx0cnVuLWEyJmd0LCAm
bHRydW4tYjEmZ3QgYW5kICZsdHJ1bi1iMiZndCBhcmUgYWxsIHRoZSBhZmZvcm1lbnRpb25lZCBz
aW5nbGUgdGVzdCByZXN1bHQgZGljdGlvbmFyeS5gLAogICAgICAgICAgICAgICAgIF0sCiAgICAg
ICAgICAgICApLAorICAgICAgICAgICAgZG9jdW1lbnRFbmRwb2ludCgKKyAgICAgICAgICAgICAg
ICAnL2FwaS9yZXN1bHRzLXN1bW1hcnkvJmx0c3VpdGUmZ3QvJmx0dGVzdCZndCcsCisgICAgICAg
ICAgICAgICAgWydHRVQnXSwKKyAgICAgICAgICAgICAgICBbJ0JyYW5jaCcsICdDb25maWd1cmF0
aW9uJywgJ0luY2x1ZGUgRXhwZWN0YXRpb25zJywgJ0xpbWl0JywgJ1JlcG9zaXRvcnknLCAnUmVm
JywgJ1VVSUQnXSwKKyAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgIGBDb21w
dXRlIHRoZSBjb21iaW5lZCByZXN1bHRzIG9mIGEgZ2l2ZSB0ZXN0IGJ5IGFnZ3JlZ2F0aW5nIHJl
c3VsdHMgZnJvbSBhIHNldCBvZiBydW5zIHN1cnJvdW5kaW5nIGEgc3BlY2lmaWMgY29tbWl0OmAs
CisgICAgICAgICAgICAgICAgICAgIGNvZGVCbG9jaygne1xuJyArCisgICAgICAgICAgICAgICAg
ICAgICcgICAgInBhc3MiOiA4MCxcbicgKworICAgICAgICAgICAgICAgICAgICAnICAgICJmYWls
IjogMTUsXG4nICsKKyAgICAgICAgICAgICAgICAgICAgJyAgICAiY3Jhc2giOiA1LFxuJyArCisg
ICAgICAgICAgICAgICAgICAgICd9JyksCisgICAgICAgICAgICAgICAgICAgIGBUaGVzZSByZXN1
bHRzIGFyZSBhbHdheXMgdGhlIHdlaWdodGVkIGFnZ3JlZ2F0aW9uIG9mIHJlc3VsdHMgZm9yIHRo
ZSBwcm92aWRlZCBjb25maWd1cmF0aW9ucywgd2l0aCB3ZWlnaHRzIHRvIGJlIHVuZGVyc3Rvb2Qg
YXMgcGVyY2VudCBsaWtsaWhvb2QgYSB0ZXN0IHdpbGwgaGF2ZSBhIGNlcnRhaW4gcmVzdWx0IG9u
IGEgZ2l2ZW4gcmV2aXNpb24uYCwKKyAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgKSwK
ICAgICAgICAgXSwgJ0ZhaWx1cmUgQW5hbHlzaXMnOiBbCiAgICAgICAgICAgICBgUmVzdWx0cyBk
YXRhYmFzZXMgcHJvdmlkZSBhIGZldyBBUElzIHRvIGFzc2lzdCBpbiB0aGUgaW52ZXN0aWdhdGlv
biBvZiB0ZXN0IGZhaWx1cmVzLiBUaGVzZSBhbmFseXNpcyBlbmRwb2ludHMgYWdncmVnYXRlIGRh
dGEgZnJvbSBtdWx0aXBsZSB0ZXN0IHJ1bnMgZm9yIGNvbnN1bXB0aW9uIGJ5IGJvdGggaHVtYW5z
IGFuZCBhdXRvbWF0ZWQgc3lzdGVtcy5gLAogICAgICAgICAgICAgZG9jdW1lbnRFbmRwb2ludCgK
QEAgLTUwOCw2ICs1MjEsMTAgQEAgY29uc3QgZG9jdW1lbnRhdGlvbiA9IHsKICAgICAgICAgICAg
IGNvZGVCbG9jaygncmVjZW50PUZhbHNlJyksCiAgICAgICAgICAgICBgdG8geW91ciBxdWVyeS4g
VGhlIGRvd25zaWRlIG9mIHNlYXJjaGluZyBhbGwgY29uZmlndXJhdGlvbnMgaXMgdGhhdCB0aGUg
ZGVmYXVsdCBiZWhhdmlvciBvZiBzZWFyY2hpbmcgYWxsIHJlY2VudCBjb25maWd1cmF0aW9ucyBp
ZiBubyBxdWVyeSBwYXJhbWV0ZXJzIGFyZSBwcm92aWRlZCBpcyBkaXNhYmxlZCBiZWNhdXNlIHRo
ZSByZXN1bHRzIGRhdGFiYXNlIGNhbm5vdCBzZWFyY2ggYnkgYW4gdW5ib3VuZGVkIG51bWJlciBv
ZiBjb25maWd1cmF0aW9ucy5gLAogICAgICAgICBdLAorICAgICAgICAnSW5jbHVkZSBFeHBlY3Rh
dGlvbnMnOiBbCisgICAgICAgICAgICBgU29tZSBlbmRwb2ludHMgcmV0dXJuIGRpZmZlcmVudCBy
ZXN1bHRzIGlmIHRoZSBjYWxsZXIgcmVxdWVzdHMgZXhwZWN0YXRpb25zIGJlIHRha2VuIGludG8g
Y29uc2lkZXJhdGlvbi4gQnkgZGVmYXVsdCwgdGhpcyBmbGFnIGlzIGRpc2FibGVkLCBidXQgbWF5
IGJlIGVuYWJsZWQgb24gc3VwcG9ydGluZyBlbnBvaW50cyB3aXRoIHRoaXMgcXVlcnk6YCwKKyAg
ICAgICAgICAgIGNvZGVCbG9jaygnaW5jbHVkZV9leHBlY3RhdGlvbnM9Rmxhc2UnKSwKKyAgICAg
ICAgXSwKICAgICAgICAgJ0xpbWl0JzogWwogICAgICAgICAgICAgYFRoZSB1bmRlcmx5aW5nIGFy
Y2hpdGVjdHVyZSBvZiB0aGUgcmVzdWx0cyBkYXRhYmFzZSBkb2VzIG5vdCBhbGxvdyB1bmxpbWl0
ZWQgcXVlcnkgc2l6ZXMuIE1vc3QgZW5kcG9pbnRzIGFjY2VwdCBhIGxpbWl0IHF1ZXJ5IHdoaWNo
IGxvb2tzIGxpa2UgdGhpczpgLAogICAgICAgICAgICAgY29kZUJsb2NrKCdsaW1pdD0xNTAnKSwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435291</attachid>
            <date>2021-08-10 14:26:17 -0700</date>
            <delta_ts>2021-08-10 14:51:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226894-20210810142616.patch</filename>
            <type>text/plain</type>
            <size>23254</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI4MDg2MSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDM1IEBACisyMDIxLTA4LTA5ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBbcmVzdWx0c2RicHldIEFkZCBhZ2dyZWdhdGUtcmVzdWx0cyBBUEkKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjg5NAorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vNzkxNTUxODE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWFr
YXNoIEphaW4uCisKKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1
bHRzZGJweS9fX2luaXRfXy5weTogQnVtcCB2ZXJzaW9uLgorICAgICAgICAqIFNjcmlwdHMvbGli
cmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIvYXBpX3JvdXRlcy5weToK
KyAgICAgICAgKEFQSVJvdXRlcy5fX2luaXRfXyk6IEFkZCBhZ2dyZWdhdGUtcmVzdWx0cyBlbmRw
b2ludC4KKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJw
eS9jb250cm9sbGVyL2NvbW1pdF9jb250cm9sbGVyLnB5OgorICAgICAgICAoY29tbWl0X2Zvcl9x
dWVyeSk6IEFkZCBkZWNvcmF0b3Igd2hpY2ggY29udmVydHMgYSBzZXQgb2YgYXJndW1lbnRzIGlu
dG8gYSBzaW5nbGUgY29tbWl0LgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNk
YnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIvdGVzdF9jb250cm9sbGVyLnB5OgorICAgICAgICAo
VGVzdENvbnRyb2xsZXIpOgorICAgICAgICAoVGVzdENvbnRyb2xsZXIuc3VtbWFyaXplX3Rlc3Rf
cmVzdWx0cyk6IEdpdmVuIGEgc2luZ2xlIGNvbW1pdCBhbmQgc3VpdGUvdGVzdCBjb21iaW5hdGlv
biwgY29tcHV0ZQorICAgICAgICB0aGUgbGlrbGlob29kIG9mIGVhY2ggcG90ZW50aWFsIHJlc3Vs
dC4KKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9j
b250cm9sbGVyL3Rlc3RfY29udHJvbGxlcl91bml0dGVzdC5weToKKyAgICAgICAgKFRlc3RDb250
cm9sbGVyVGVzdC50ZXN0X3N1bW1hcml6ZV9nZW5lcmFsKTogQWRkZWQuCisgICAgICAgIChUZXN0
Q29udHJvbGxlclRlc3QudGVzdF9zdW1tYXJpemVfc3BlY2lmaWMpOiBBZGRlZC4KKyAgICAgICAg
KFRlc3RDb250cm9sbGVyVGVzdC50ZXN0X3N1bW1hcml6ZV9leHBlY3RhdGlvbnMpOiBBZGRlZC4K
KyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2Rl
bC9jb21taXRfY29udGV4dC5weToKKyAgICAgICAgKENvbW1pdENvbnRleHQuZmluZF9jb21taXRz
X2luX3JhbmdlKTogVXNlIGFzY2VuZGVkIHRhYmxlIGlmIHVzZXIgb25seSBwcm92aWRlcyBsb3dl
ciBib3VuZC4KKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRz
ZGJweS9tb2RlbC9jb21taXRfY29udGV4dF91bml0dGVzdC5weToKKyAgICAgICAgKENvbW1pdENv
bnRleHRUZXN0LnRlc3Rfc3Rhc2hfY29tbWl0c19iZWZvcmUpOiBWZXJpZnkgdXBwZXIgYm91bmQu
CisgICAgICAgIChDb21taXRDb250ZXh0VGVzdC50ZXN0X3N2bl9jb21taXRzX2JlZm9yZSk6IERp
dHRvLgorICAgICAgICAoQ29tbWl0Q29udGV4dFRlc3QudGVzdF9zdGFzaF9jb21taXRzX2FmdGVy
KTogVmVyaWZ5IGxvd2VyIGJvdW5kLgorICAgICAgICAoQ29tbWl0Q29udGV4dFRlc3QudGVzdF9z
dm5fY29tbWl0c19hZnRlcik6IERpdHRvLgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3Jl
c3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcvdGVtcGxhdGVzL2RvY3VtZW50YXRpb24uaHRtbDog
QWRkIGFnZ3JlZ2F0ZS1yZXN1bHRzCisgICAgICAgIGRvY3VtZW50YXRpb24uCisgICAgICAgICog
U2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvc2V0dXAucHk6IEJ1bXAgdmVyc2lvbi4KKwog
MjAyMS0wOC0xMCAgQmVuIE5oYW0gIDxuaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggbmVz
dGVkIHJlc291cmNlIGxvYWQgdHJhY2Vwb2ludHMKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFy
aWVzL3Jlc3VsdHNkYnB5L3NldHVwLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGli
cmFyaWVzL3Jlc3VsdHNkYnB5L3NldHVwLnB5CShyZXZpc2lvbiAyODA4NjEpCisrKyBUb29scy9T
Y3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9zZXR1cC5weQkod29ya2luZyBjb3B5KQpAQCAt
MzAsNyArMzAsNyBAQCBkZWYgcmVhZG1lKCk6CiAKIHNldHVwKAogICAgIG5hbWU9J3Jlc3VsdHNk
YnB5JywKLSAgICB2ZXJzaW9uPSczLjAuMicsCisgICAgdmVyc2lvbj0nMy4xLjAnLAogICAgIGRl
c2NyaXB0aW9uPSdMaWJyYXJ5IGZvciB2aXN1YWxpemluZywgcHJvY2Vzc2luZyBhbmQgc3Rvcmlu
ZyB0ZXN0IHJlc3VsdHMuJywKICAgICBsb25nX2Rlc2NyaXB0aW9uPXJlYWRtZSgpLAogICAgIGNs
YXNzaWZpZXJzPVsKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jl
c3VsdHNkYnB5L19faW5pdF9fLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFy
aWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L19faW5pdF9fLnB5CShyZXZpc2lvbiAyODA4NjEp
CisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9fX2lu
aXRfXy5weQkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNyBAQCBleGNlcHQgSW1wb3J0RXJy
b3I6CiAgICAgICAgICJQbGVhc2UgaW5zdGFsbCB3ZWJraXRjb3JlcHkgd2l0aCBgcGlwIGluc3Rh
bGwgd2Via2l0Y29yZXB5IC0tZXh0cmEtaW5kZXgtdXJsIDxwYWNrYWdlIGluZGV4IFVSTD5gIgog
ICAgICkKIAotdmVyc2lvbiA9IFZlcnNpb24oMywgMCwgMikKK3ZlcnNpb24gPSBWZXJzaW9uKDMs
IDEsIDApCiAKIGltcG9ydCB3ZWJraXRmbGFza3B5CiAKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGli
cmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIvYXBpX3JvdXRlcy5weQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRz
ZGJweS9jb250cm9sbGVyL2FwaV9yb3V0ZXMucHkJKHJldmlzaW9uIDI4MDg2MSkKKysrIFRvb2xz
L1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIvYXBp
X3JvdXRlcy5weQkod29ya2luZyBjb3B5KQpAQCAtNzAsNiArNzAsNyBAQCBjbGFzcyBBUElSb3V0
ZXMoQXV0aGVkQmx1ZXByaW50KToKIAogICAgICAgICBzZWxmLmFkZF91cmxfcnVsZSgnL3Jlc3Vs
dHMvPHBhdGg6c3VpdGU+JywgJ3N1aXRlLXJlc3VsdHMnLCBzZWxmLnN1aXRlX2NvbnRyb2xsZXIu
ZmluZF9ydW5fcmVzdWx0cywgbWV0aG9kcz0oJ0dFVCcsKSkKICAgICAgICAgc2VsZi5hZGRfdXJs
X3J1bGUoJy9yZXN1bHRzLzxwYXRoOnN1aXRlPi88cGF0aDp0ZXN0PicsICd0ZXN0LXJlc3VsdHMn
LCBzZWxmLnRlc3RfY29udHJvbGxlci5maW5kX3Rlc3RfcmVzdWx0LCBtZXRob2RzPSgnR0VUJywp
KQorICAgICAgICBzZWxmLmFkZF91cmxfcnVsZSgnL3Jlc3VsdHMtc3VtbWFyeS88cGF0aDpzdWl0
ZT4vPHBhdGg6dGVzdD4nLCAndGVzdC1hZ2dyZWdhdGUtcmVzdWx0cycsIHNlbGYudGVzdF9jb250
cm9sbGVyLnN1bW1hcml6ZV90ZXN0X3Jlc3VsdHMsIG1ldGhvZHM9KCdHRVQnLCkpCiAKICAgICAg
ICAgc2VsZi5hZGRfdXJsX3J1bGUoJy9mYWlsdXJlcy88cGF0aDpzdWl0ZT4nLCAnc3VpdGUtZmFp
bHVyZXMnLCBzZWxmLmZhaWx1cmVfY29udHJvbGxlci5mYWlsdXJlcywgbWV0aG9kcz0oJ0dFVCcs
KSkKIApJbmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2Ri
cHkvY29udHJvbGxlci9jb21taXRfY29udHJvbGxlci5weQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9T
Y3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9jb250cm9sbGVyL2NvbW1p
dF9jb250cm9sbGVyLnB5CShyZXZpc2lvbiAyODA4NjEpCisrKyBUb29scy9TY3JpcHRzL2xpYnJh
cmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9jb250cm9sbGVyL2NvbW1pdF9jb250cm9sbGVy
LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xMjUsNiArMTI1LDI2IEBAIGRlZiB1dWlkX3JhbmdlX2Zv
cl9xdWVyeSgpOgogICAgIHJldHVybiBkZWNvcmF0b3IKIAogCitkZWYgY29tbWl0X2Zvcl9xdWVy
eSgpOgorICAgIGRlZiBkZWNvcmF0b3IobWV0aG9kKToKKyAgICAgICAgZGVmIHJlYWxfbWV0aG9k
KG9iaiwgcmVwb3NpdG9yeV9pZD1Ob25lLCBicmFuY2g9Tm9uZSwgaWQ9Tm9uZSwgcmVmPU5vbmUs
IHV1aWQ9Tm9uZSwgdGltZXN0YW1wPU5vbmUsICoqa3dhcmdzKToKKyAgICAgICAgICAgICMgV2Un
cmUgbWFraW5nIGFuIGFzc3VtcHRpb24gdGhhdCB0aGUgY2xhc3MgdXNpbmcgdGhpcyBkZWNvcmF0
b3IgYWN0dWFsbHkgaGFzIGEgY29tbWl0X2NvbnRleHQsIGlmIGl0IGRvZXMgbm90LAorICAgICAg
ICAgICAgIyB0aGlzIGRlY29yYXRvciB3aWxsIGZhaWwgc3BlY3RhY3VsYXJseQorICAgICAgICAg
ICAgd2l0aCBvYmouY29tbWl0X2NvbnRleHQ6CisgICAgICAgICAgICAgICAgaWYgbm90IGJyYW5j
aDoKKyAgICAgICAgICAgICAgICAgICAgYnJhbmNoID0gW05vbmVdCisgICAgICAgICAgICAgICAg
cmV0dXJuIG1ldGhvZChvYmosIGJyYW5jaD1icmFuY2gsIGNvbW1pdD1fZmluZF9jb21wYXJpc29u
KAorICAgICAgICAgICAgICAgICAgICBvYmouY29tbWl0X2NvbnRleHQsIHJlcG9zaXRvcnlfaWQ9
cmVwb3NpdG9yeV9pZCwgYnJhbmNoPWJyYW5jaCwKKyAgICAgICAgICAgICAgICAgICAgcmVmPXJl
ZiBvciBpZCwKKyAgICAgICAgICAgICAgICAgICAgdXVpZD11dWlkLCB0aW1lc3RhbXA9dGltZXN0
YW1wLCBwcmlvcml0eT1tYXgsCisgICAgICAgICAgICAgICAgKSwgKiprd2FyZ3MpCisKKyAgICAg
ICAgcmVhbF9tZXRob2QuX19uYW1lX18gPSBtZXRob2QuX19uYW1lX18KKyAgICAgICAgcmV0dXJu
IHJlYWxfbWV0aG9kCisKKyAgICByZXR1cm4gZGVjb3JhdG9yCisKKwogY2xhc3MgSGFzQ29tbWl0
Q29udGV4dChvYmplY3QpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjb21taXRfY29udGV4dCk6
CiAgICAgICAgIHNlbGYuY29tbWl0X2NvbnRleHQgPSBjb21taXRfY29udGV4dApJbmRleDogVG9v
bHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxlci90
ZXN0X2NvbnRyb2xsZXIucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMv
cmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxlci90ZXN0X2NvbnRyb2xsZXIucHkJKHJl
dmlzaW9uIDI4MDg2MSkKKysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jl
c3VsdHNkYnB5L2NvbnRyb2xsZXIvdGVzdF9jb250cm9sbGVyLnB5CSh3b3JraW5nIGNvcHkpCkBA
IC0yMSwxMCArMjEsMTIgQEAKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogZnJvbSBmbGFzayBpbXBvcnQgYWJv
cnQsIGpzb25pZnkKLWZyb20gcmVzdWx0c2RicHkuY29udHJvbGxlci5jb21taXRfY29udHJvbGxl
ciBpbXBvcnQgdXVpZF9yYW5nZV9mb3JfcXVlcnksIEhhc0NvbW1pdENvbnRleHQKK2Zyb20gaGVh
cHEgaW1wb3J0IG1lcmdlCitmcm9tIHJlc3VsdHNkYnB5LmNvbnRyb2xsZXIuY29tbWl0X2NvbnRy
b2xsZXIgaW1wb3J0IHV1aWRfcmFuZ2VfZm9yX3F1ZXJ5LCBjb21taXRfZm9yX3F1ZXJ5LCBIYXND
b21taXRDb250ZXh0CiBmcm9tIHJlc3VsdHNkYnB5LmNvbnRyb2xsZXIuY29uZmlndXJhdGlvbiBp
bXBvcnQgQ29uZmlndXJhdGlvbgogZnJvbSByZXN1bHRzZGJweS5jb250cm9sbGVyLmNvbmZpZ3Vy
YXRpb25fY29udHJvbGxlciBpbXBvcnQgY29uZmlndXJhdGlvbl9mb3JfcXVlcnkKIGZyb20gcmVz
dWx0c2RicHkuY29udHJvbGxlci5zdWl0ZV9jb250cm9sbGVyIGltcG9ydCB0aW1lX3JhbmdlX2Zv
cl9xdWVyeQorZnJvbSByZXN1bHRzZGJweS5tb2RlbC50ZXN0X2NvbnRleHQgaW1wb3J0IEV4cGVj
dGF0aW9ucwogZnJvbSB3ZWJraXRmbGFza3B5LnV0aWwgaW1wb3J0IEFzc2VydFJlcXVlc3QsIHF1
ZXJ5X2FzX2t3YXJncywgbGltaXRfZm9yX3F1ZXJ5LCBib29sZWFuX3F1ZXJ5CiAKIApAQCAtMTAy
LDMgKzEwNCwxMDcgQEAgY2xhc3MgVGVzdENvbnRyb2xsZXIoSGFzQ29tbWl0Q29udGV4dCk6CiAg
ICAgICAgICAgICAgICAgICAgIHJlc3VsdHM9c29ydGVkKHJlc3VsdHMsIGtleT1zb3J0X2Z1bmN0
aW9uKSwKICAgICAgICAgICAgICAgICApKQogICAgICAgICAgICAgcmV0dXJuIGpzb25pZnkocmVz
cG9uc2UpCisKKyAgICBAcXVlcnlfYXNfa3dhcmdzKCkKKyAgICBAY29tbWl0X2Zvcl9xdWVyeSgp
CisgICAgQGxpbWl0X2Zvcl9xdWVyeSgxMDApCisgICAgQGNvbmZpZ3VyYXRpb25fZm9yX3F1ZXJ5
KCkKKyAgICBkZWYgc3VtbWFyaXplX3Rlc3RfcmVzdWx0cygKKyAgICAgICAgc2VsZiwgc3VpdGU9
Tm9uZSwgdGVzdD1Ob25lLAorICAgICAgICBjb25maWd1cmF0aW9ucz1Ob25lLCByZWNlbnQ9Tm9u
ZSwKKyAgICAgICAgYnJhbmNoPU5vbmUsIGNvbW1pdD1Ob25lLAorICAgICAgICBsaW1pdD1Ob25l
LCBpbmNsdWRlX2V4cGVjdGF0aW9ucz1Ob25lLCAqKmt3YXJncworICAgICk6CisgICAgICAgIEFz
c2VydFJlcXVlc3QuaXNfdHlwZShbJ0dFVCddKQorICAgICAgICBBc3NlcnRSZXF1ZXN0LnF1ZXJ5
X2t3YXJnc19lbXB0eSgqKmt3YXJncykKKworICAgICAgICByZWNlbnQgPSBib29sZWFuX3F1ZXJ5
KCpyZWNlbnQpWzBdIGlmIHJlY2VudCBlbHNlIFRydWUKKyAgICAgICAgaW5jbHVkZV9leHBlY3Rh
dGlvbnMgPSBib29sZWFuX3F1ZXJ5KCppbmNsdWRlX2V4cGVjdGF0aW9ucylbMF0gaWYgaW5jbHVk
ZV9leHBlY3RhdGlvbnMgZWxzZSBGYWxzZQorCisgICAgICAgIGlmIG5vdCBzdWl0ZToKKyAgICAg
ICAgICAgIGFib3J0KDQwMCwgZGVzY3JpcHRpb249J05vIHN1aXRlIHNwZWNpZmllZCcpCisgICAg
ICAgIGlmIG5vdCB0ZXN0OgorICAgICAgICAgICAgYWJvcnQoNDAwLCBkZXNjcmlwdGlvbj0nTm8g
dGVzdCBzcGVjaWZpZWQnKQorCisgICAgICAgIGxpbWl0ICs9IDEKKyAgICAgICAgYmVmb3JlX2Nv
bW1pdHMgPSBbXQorICAgICAgICBhZnRlcl9jb21taXRzID0gW10KKyAgICAgICAgd2l0aCBzZWxm
LmNvbW1pdF9jb250ZXh0OgorICAgICAgICAgICAgZm9yIHJlcG9faWQgaW4gc2VsZi5jb21taXRf
Y29udGV4dC5yZXBvc2l0b3JpZXMua2V5cygpOgorICAgICAgICAgICAgICAgIGlmIGNvbW1pdDoK
KyAgICAgICAgICAgICAgICAgICAgYmVmb3JlX2NvbW1pdHMgPSBzb3J0ZWQobGlzdChyZXZlcnNl
ZChzZWxmLmNvbW1pdF9jb250ZXh0LmZpbmRfY29tbWl0c19pbl9yYW5nZSgKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHJlcG9zaXRvcnlfaWQ9cmVwb19pZCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGVuZD1jb21taXQsIGJyYW5jaD1icmFuY2hbMF0sIGxpbWl0PWxpbWl0LAorICAgICAgICAg
ICAgICAgICAgICApKSkgKyBiZWZvcmVfY29tbWl0cykKKyAgICAgICAgICAgICAgICAgICAgYWZ0
ZXJfY29tbWl0cyA9IHNvcnRlZChsaXN0KHJldmVyc2VkKHNlbGYuY29tbWl0X2NvbnRleHQuZmlu
ZF9jb21taXRzX2luX3JhbmdlKAorICAgICAgICAgICAgICAgICAgICAgICAgcmVwb3NpdG9yeV9p
ZD1yZXBvX2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW49Y29tbWl0LCBicmFuY2g9
YnJhbmNoWzBdLCBsaW1pdD1saW1pdCwKKyAgICAgICAgICAgICAgICAgICAgKSkpICsgYWZ0ZXJf
Y29tbWl0cykKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBiZWZv
cmVfY29tbWl0cyA9IGxpc3QobWVyZ2UoCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNv
bW1pdF9jb250ZXh0LmZpbmRfY29tbWl0c19pbl9yYW5nZShyZXBvc2l0b3J5X2lkPXJlcG9faWQs
IGJyYW5jaD1icmFuY2hbMF0sIGxpbWl0PWxpbWl0KSwKKyAgICAgICAgICAgICAgICAgICAgICAg
IGJlZm9yZV9jb21taXRzLAorICAgICAgICAgICAgICAgICAgICApKQorICAgICAgICAgICAgICAg
ICAgICBiZWZvcmVfY29tbWl0cy5yZXZlcnNlKCkKKyAgICAgICAgICAgICAgICBhZnRlcl9jb21t
aXRzLnJldmVyc2UoKQorCisgICAgICAgIGJlZm9yZV9jb21taXRzID0gc29ydGVkKGJlZm9yZV9j
b21taXRzKQorICAgICAgICBhZnRlcl9jb21taXRzID0gc29ydGVkKGFmdGVyX2NvbW1pdHMpCisK
KyAgICAgICAgYmVmb3JlX2NvbW1pdHMgPSBiZWZvcmVfY29tbWl0c1stbGltaXQ6XQorICAgICAg
ICBhZnRlcl9jb21taXRzID0gYWZ0ZXJfY29tbWl0c1s6bGltaXRdCisgICAgICAgIGlmIGJlZm9y
ZV9jb21taXRzIGFuZCBhZnRlcl9jb21taXRzIGFuZCBiZWZvcmVfY29tbWl0c1stMV0gPT0gYWZ0
ZXJfY29tbWl0c1swXToKKyAgICAgICAgICAgIGRlbCBiZWZvcmVfY29tbWl0c1stMV0KKworICAg
ICAgICBpZiBub3QgYmVmb3JlX2NvbW1pdHMgYW5kIG5vdCBhZnRlcl9jb21taXRzOgorICAgICAg
ICAgICAgcmV0dXJuIGFib3J0KDQwMCwgZGVzY3JpcHRpb249J05vIGNvbW1pdHMgaW4gc3BlY2lm
aWVkIHJhbmdlJykKKworICAgICAgICAjIFVzZSB0aGUgbGluZWFyIGRpc3RhbmNlIGZyb20gdGhl
IHNwZWNpZmllZCBjb21taXQKKyAgICAgICAgc2NhbGVfZm9yX3V1aWQgPSB7fQorICAgICAgICBj
b3VudCA9IGxpbWl0IC0gMQorICAgICAgICBmb3IgYyBpbiByZXZlcnNlZChiZWZvcmVfY29tbWl0
cyk6CisgICAgICAgICAgICBzY2FsZV9mb3JfdXVpZFtjLnV1aWRdID0gY291bnQKKyAgICAgICAg
ICAgIGNvdW50IC09IDEKKyAgICAgICAgY291bnQgPSBsaW1pdAorICAgICAgICBmb3IgYyBpbiBh
ZnRlcl9jb21taXRzOgorICAgICAgICAgICAgc2NhbGVfZm9yX3V1aWRbYy51dWlkXSA9IGNvdW50
CisgICAgICAgICAgICBjb3VudCAtPSAxCisKKyAgICAgICAgIyBBIGRpcmVjdCBtYXRjaCB0byB0
aGUgcHJvdmlkZWQgY29tbWl0IG1hdHRlcnMgbW9zdAorICAgICAgICBpZiBjb21taXQ6CisgICAg
ICAgICAgICBzY2FsZV9mb3JfdXVpZFtjb21taXQudXVpZF0gPSBsaW1pdCAqIDIKKworICAgICAg
ICByZXNwb25zZSA9IHt9CisgICAgICAgIGZvciB2YWx1ZSBpbiBFeHBlY3RhdGlvbnMuU1RBVEVf
SURfVE9fU1RSSU5HLnZhbHVlcygpOgorICAgICAgICAgICAgcmVzcG9uc2VbdmFsdWUubG93ZXIo
KV0gPSB7fSBpZiBpbmNsdWRlX2V4cGVjdGF0aW9ucyBlbHNlIDAKKworICAgICAgICB3aXRoIHNl
bGYudGVzdF9jb250ZXh0OgorICAgICAgICAgICAgZm9yIGNvbmZpZywgcmVzdWx0cyBpbiBzZWxm
LnRlc3RfY29udGV4dC5maW5kX2J5X2NvbW1pdCgKKyAgICAgICAgICAgICAgICBzdWl0ZT1zdWl0
ZSwgdGVzdD10ZXN0LAorICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25zPWNvbmZpZ3VyYXRp
b25zLCByZWNlbnQ9cmVjZW50LAorICAgICAgICAgICAgICAgIGJyYW5jaD1icmFuY2hbMF0sCisg
ICAgICAgICAgICAgICAgbGltaXQ9bGltaXQgKiA0LAorICAgICAgICAgICAgICAgIGJlZ2luPShi
ZWZvcmVfY29tbWl0cyBvciBhZnRlcl9jb21taXRzKVswXSwgZW5kPShhZnRlcl9jb21taXRzIG9y
IGJlZm9yZV9jb21taXRzKVstMV0sCisgICAgICAgICAgICApLml0ZW1zKCk6CisgICAgICAgICAg
ICAgICAgZm9yIHJlc3VsdCBpbiByZXN1bHRzOgorICAgICAgICAgICAgICAgICAgICBzY2FsZSA9
IHNjYWxlX2Zvcl91dWlkLmdldChpbnQocmVzdWx0Wyd1dWlkJ10pLCAwKQorICAgICAgICAgICAg
ICAgICAgICBpZiBub3Qgc2NhbGU6CisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQor
ICAgICAgICAgICAgICAgICAgICB0YWcgPSByZXN1bHQuZ2V0KCdhY3R1YWwnLCAnUEFTUycpLmxv
d2VyKCkKKyAgICAgICAgICAgICAgICAgICAgaWYgaW5jbHVkZV9leHBlY3RhdGlvbnM6CisgICAg
ICAgICAgICAgICAgICAgICAgICBleHBlY3RlZCA9ICdleHBlY3RlZCcgaWYgbm90IHJlc3VsdC5n
ZXQoJ2V4cGVjdGVkJykgb3IgcmVzdWx0WydhY3R1YWwnXSA9PSByZXN1bHRbJ2V4cGVjdGVkJ10g
ZWxzZSAndW5leHBlY3RlZCcKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlW3RhZ11b
ZXhwZWN0ZWRdID0gcmVzcG9uc2VbdGFnXS5nZXQoZXhwZWN0ZWQsIDApICsgc2NhbGUKKyAgICAg
ICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlW3Rh
Z10gPSByZXNwb25zZVt0YWddICsgc2NhbGUKKworICAgICAgICBhZ2dyZWdhdGUgPSBzdW0oW3N1
bSh2YWx1ZS52YWx1ZXMoKSkgaWYgaW5jbHVkZV9leHBlY3RhdGlvbnMgZWxzZSB2YWx1ZSBmb3Ig
dmFsdWUgaW4gcmVzcG9uc2UudmFsdWVzKCldKQorICAgICAgICBpZiBub3QgYWdncmVnYXRlOgor
ICAgICAgICAgICAgcmV0dXJuIGFib3J0KDQwMCwgZGVzY3JpcHRpb249J05vIHJlc3VsdHMgZm9y
IHNwZWNpZmllZCB0ZXN0IGFuZCBjb25maWd1cmF0aW9uIGluIHByb3ZpZGVkIGNvbW1pdCByYW5n
ZScpCisgICAgICAgIGZvciBrZXlfaSBpbiByZXNwb25zZS5rZXlzKCk6CisgICAgICAgICAgICBp
ZiBpbmNsdWRlX2V4cGVjdGF0aW9uczoKKyAgICAgICAgICAgICAgICBmb3Iga2V5X2lpIGluIHJl
c3BvbnNlW2tleV9pXS5rZXlzKCk6CisgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlW2tleV9p
XVtrZXlfaWldID0gMTAwICogcmVzcG9uc2Vba2V5X2ldW2tleV9paV0gLy8gKGFnZ3JlZ2F0ZSBv
ciAxKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXNwb25zZVtrZXlfaV0g
PSAxMDAgKiByZXNwb25zZVtrZXlfaV0gLy8gKGFnZ3JlZ2F0ZSBvciAxKQorCisgICAgICAgIHJl
dHVybiBqc29uaWZ5KHJlc3BvbnNlKQpJbmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVz
dWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxlci90ZXN0X2NvbnRyb2xsZXJfdW5pdHRlc3Qu
cHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVz
dWx0c2RicHkvY29udHJvbGxlci90ZXN0X2NvbnRyb2xsZXJfdW5pdHRlc3QucHkJKHJldmlzaW9u
IDI4MDg2MSkKKysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNk
YnB5L2NvbnRyb2xsZXIvdGVzdF9jb250cm9sbGVyX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkp
CkBAIC0xMzYsMyArMTM2LDU5IEBAIGNsYXNzIFRlc3RDb250cm9sbGVyVGVzdChGbGFza1Rlc3RD
YXNlLCAKICAgICAgICAgcmVzcG9uc2UgPSBjbGllbnQuZ2V0KHNlbGYuVVJMICsgZicvYXBpL3Jl
c3VsdHMvbGF5b3V0LXRlc3RzL2Zhc3QvZW5jb2RpbmcvY3NzLWxpbmstY2hhcnNldC5odG1sP3Bs
YXRmb3JtPWlPUyZzdHlsZT1EZWJ1ZyZyZWNlbnQ9RmFsc2UmYWZ0ZXJfdGltZT17dGltZS50aW1l
KCkgKyAxfScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2Uuc3RhdHVzX2NvZGUs
IDIwMCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVzcG9uc2UuanNvbigpKSwgMCkK
KworICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRp
cz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQor
ICAgIEBGbGFza1Rlc3RDYXNlLnJ1bl93aXRoX3dlYnNlcnZlcigpCisgICAgZGVmIHRlc3Rfc3Vt
bWFyaXplX2dlbmVyYWwoc2VsZiwgY2xpZW50LCAqKmt3YXJncyk6CisgICAgICAgIHNlbGYubWF4
RGlmZiA9IE5vbmUKKyAgICAgICAgcmVzcG9uc2UgPSBjbGllbnQuZ2V0KAorICAgICAgICAgICAg
c2VsZi5VUkwgKyBmJy9hcGkvcmVzdWx0cy1zdW1tYXJ5L2xheW91dC10ZXN0cy9mYXN0L2VuY29k
aW5nL2Nzcy1saW5rLWNoYXJzZXQuaHRtbD9saW1pdD0yJykKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChyZXNwb25zZS5zdGF0dXNfY29kZSwgMjAwKQorICAgICAgICBzZWxmLmFzc2VydERpY3RF
cXVhbChyZXNwb25zZS5qc29uKCksIHsKKyAgICAgICAgICAgICdhdWRpbyc6IDAsCisgICAgICAg
ICAgICAnY3Jhc2gnOiAwLAorICAgICAgICAgICAgJ2Vycm9yJzogMCwKKyAgICAgICAgICAgICdm
YWlsJzogMCwKKyAgICAgICAgICAgICdpbWFnZSc6IDAsCisgICAgICAgICAgICAncGFzcyc6IDEw
MCwKKyAgICAgICAgICAgICd0ZXh0JzogMCwKKyAgICAgICAgICAgICd0aW1lb3V0JzogMCwKKyAg
ICAgICAgICAgICd3YXJuaW5nJzogMCwKKyAgICAgICAgfSkKKworICAgIEBXYWl0Rm9yRG9ja2Vy
VGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1v
Y2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQorICAgIEBGbGFza1Rlc3RDYXNlLnJ1
bl93aXRoX3dlYnNlcnZlcigpCisgICAgZGVmIHRlc3Rfc3VtbWFyaXplX3NwZWNpZmljKHNlbGYs
IGNsaWVudCwgKiprd2FyZ3MpOgorICAgICAgICBzZWxmLm1heERpZmYgPSBOb25lCisgICAgICAg
IHJlc3BvbnNlID0gY2xpZW50LmdldChzZWxmLlVSTCArIGYnL2FwaS9yZXN1bHRzLXN1bW1hcnkv
bGF5b3V0LXRlc3RzL2Zhc3QvZW5jb2RpbmcvY3NzLWxpbmstY2hhcnNldC5odG1sP3JlZj0xYWJl
MjViNDQzZTkmbGltaXQ9MicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2Uuc3Rh
dHVzX2NvZGUsIDIwMCkKKyAgICAgICAgc2VsZi5hc3NlcnREaWN0RXF1YWwocmVzcG9uc2UuanNv
bigpLCB7CisgICAgICAgICAgICAnYXVkaW8nOiAwLAorICAgICAgICAgICAgJ2NyYXNoJzogMCwK
KyAgICAgICAgICAgICdlcnJvcic6IDAsCisgICAgICAgICAgICAnZmFpbCc6IDAsCisgICAgICAg
ICAgICAnaW1hZ2UnOiAwLAorICAgICAgICAgICAgJ3Bhc3MnOiAxMDAsCisgICAgICAgICAgICAn
dGV4dCc6IDAsCisgICAgICAgICAgICAndGltZW91dCc6IDAsCisgICAgICAgICAgICAnd2Fybmlu
Zyc6IDAsCisgICAgICAgIH0pCisKKyAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZf
bm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2Nr
Q2Fzc2FuZHJhQ29udGV4dCkKKyAgICBARmxhc2tUZXN0Q2FzZS5ydW5fd2l0aF93ZWJzZXJ2ZXIo
KQorICAgIGRlZiB0ZXN0X3N1bW1hcml6ZV9leHBlY3RhdGlvbnMoc2VsZiwgY2xpZW50LCAqKmt3
YXJncyk6CisgICAgICAgIHNlbGYubWF4RGlmZiA9IE5vbmUKKyAgICAgICAgcmVzcG9uc2UgPSBj
bGllbnQuZ2V0KAorICAgICAgICAgICAgc2VsZi5VUkwgKyBmJy9hcGkvcmVzdWx0cy1zdW1tYXJ5
L2xheW91dC10ZXN0cy9mYXN0L2VuY29kaW5nL2Nzcy1saW5rLWNoYXJzZXQuaHRtbD9saW1pdD0y
JmluY2x1ZGVfZXhwZWN0YXRpb25zPVRydWUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJl
c3BvbnNlLnN0YXR1c19jb2RlLCAyMDApCisgICAgICAgIHNlbGYuYXNzZXJ0RGljdEVxdWFsKHJl
c3BvbnNlLmpzb24oKSwgeworICAgICAgICAgICAgJ2F1ZGlvJzoge30sCisgICAgICAgICAgICAn
Y3Jhc2gnOiB7fSwKKyAgICAgICAgICAgICdlcnJvcic6IHt9LAorICAgICAgICAgICAgJ2ZhaWwn
OiB7fSwKKyAgICAgICAgICAgICdpbWFnZSc6IHt9LAorICAgICAgICAgICAgJ3Bhc3MnOiBkaWN0
KGV4cGVjdGVkPTEwMCksCisgICAgICAgICAgICAndGV4dCc6IHt9LAorICAgICAgICAgICAgJ3Rp
bWVvdXQnOiB7fSwKKyAgICAgICAgICAgICd3YXJuaW5nJzoge30sCisgICAgICAgIH0pCkluZGV4
OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC9j
b21taXRfY29udGV4dC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9y
ZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC9jb21taXRfY29udGV4dC5weQkocmV2aXNpb24g
MjgwODYxKQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2Ri
cHkvbW9kZWwvY29tbWl0X2NvbnRleHQucHkJKHdvcmtpbmcgY29weSkKQEAgLTIxMywxNiArMjEz
LDIwIEBAIGNsYXNzIENvbW1pdENvbnRleHQob2JqZWN0KToKICAgICAgICAgaWYgYnJhbmNoIGlz
IE5vbmU6CiAgICAgICAgICAgICBicmFuY2ggPSBzZWxmLnJlcG9zaXRvcmllc1tyZXBvc2l0b3J5
X2lkXS5kZWZhdWx0X2JyYW5jaAogCisgICAgICAgIHVzZV9hc2NlbmRpbmcgPSBiZWdpbiBhbmQg
bm90IGVuZAogICAgICAgICBiZWdpbiA9IHNlbGYuY29udmVydF90b191dWlkKGJlZ2luKQogICAg
ICAgICBlbmQgPSBzZWxmLmNvbnZlcnRfdG9fdXVpZChlbmQsIHNlbGYudGltZXN0YW1wX3RvX3V1
aWQoKSkKIAogICAgICAgICB3aXRoIHNlbGY6Ci0gICAgICAgICAgICByZXR1cm4gW21vZGVsLnRv
X2NvbW1pdCgpIGZvciBtb2RlbCBpbiBzZWxmLmNhc3NhbmRyYS5zZWxlY3RfZnJvbV90YWJsZSgK
LSAgICAgICAgICAgICAgICBzZWxmLkNvbW1pdEJ5VXVpZERlc2NlbmRpbmcuX190YWJsZV9uYW1l
X18sIGxpbWl0PWxpbWl0LAotICAgICAgICAgICAgICAgIHJlcG9zaXRvcnlfaWQ9cmVwb3NpdG9y
eV9pZCwgYnJhbmNoPWJyYW5jaCwKKyAgICAgICAgICAgIHJlc3VsdCA9IFttb2RlbC50b19jb21t
aXQoKSBmb3IgbW9kZWwgaW4gc2VsZi5jYXNzYW5kcmEuc2VsZWN0X2Zyb21fdGFibGUoCisgICAg
ICAgICAgICAgICAgc2VsZi5Db21taXRCeVV1aWRBc2NlbmRpbmcuX190YWJsZV9uYW1lX18gaWYg
dXNlX2FzY2VuZGluZyBlbHNlIHNlbGYuQ29tbWl0QnlVdWlkRGVzY2VuZGluZy5fX3RhYmxlX25h
bWVfXywKKyAgICAgICAgICAgICAgICBsaW1pdD1saW1pdCwgcmVwb3NpdG9yeV9pZD1yZXBvc2l0
b3J5X2lkLCBicmFuY2g9YnJhbmNoLAogICAgICAgICAgICAgICAgIHV1aWRfX2d0ZT1iZWdpbiwK
ICAgICAgICAgICAgICAgICB1dWlkX19sdGU9ZW5kLAogICAgICAgICAgICAgKV0KKyAgICAgICAg
ICAgIGlmIHVzZV9hc2NlbmRpbmc6CisgICAgICAgICAgICAgICAgcmVzdWx0LnJldmVyc2UoKQor
ICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAogCiAgICAgZGVmIF9hZGphY2VudF9jb21taXQoc2Vs
ZiwgY29tbWl0LCBhc2NlbmRpbmc9VHJ1ZSk6CiAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGNv
bW1pdCwgQ29tbWl0KToKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5
L3Jlc3VsdHNkYnB5L21vZGVsL2NvbW1pdF9jb250ZXh0X3VuaXR0ZXN0LnB5Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVs
L2NvbW1pdF9jb250ZXh0X3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyODA4NjEpCisrKyBUb29scy9T
Y3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC9jb21taXRfY29u
dGV4dF91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMTgwLDYgKzE4MCw1OCBAQCBjbGFz
cyBDb21taXRDb250ZXh0VGVzdChXYWl0Rm9yRG9ja2VyVGVzCiAgICAgICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGNvbW1pdHMsIHNlbGYuZGF0YWJhc2UuZmluZF9jb21taXRzX2luX3JhbmdlKHJl
cG9zaXRvcnlfaWQ9J3dlYmtpdCcsIGJyYW5jaD0nbWFpbicsIGJlZ2luPWNvbW1pdHNbLTFdLCBl
bmQ9Y29tbWl0c1swXSkpCiAKICAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9f
ZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fz
c2FuZHJhQ29udGV4dCkKKyAgICBkZWYgdGVzdF9zdGFzaF9jb21taXRzX2JlZm9yZShzZWxmLCBy
ZWRpcz1TdHJpY3RSZWRpcywgY2Fzc2FuZHJhPUNhc3NhbmRyYUNvbnRleHQpOgorICAgICAgICB3
aXRoIE1vY2tNb2RlbEZhY3Rvcnkuc2FmYXJpKCksIE1vY2tNb2RlbEZhY3Rvcnkud2Via2l0KCk6
CisgICAgICAgICAgICBzZWxmLmluaXRfZGF0YWJhc2UocmVkaXM9cmVkaXMsIGNhc3NhbmRyYT1j
YXNzYW5kcmEpCisgICAgICAgICAgICBzZWxmLmFkZF9hbGxfY29tbWl0c190b19kYXRhYmFzZSgp
CisKKyAgICAgICAgICAgIGNvbW1pdHMgPSBbCisgICAgICAgICAgICAgICAgc2VsZi5zdGFzaF9y
ZXBvc2l0b3J5LmNvbW1pdChyZWY9JzFhYmUyNWI0NDNlOScpLAorICAgICAgICAgICAgICAgIHNl
bGYuc3Rhc2hfcmVwb3NpdG9yeS5jb21taXQocmVmPSdmZmY4M2JiMmQ5MTcnKSwKKyAgICAgICAg
ICAgICAgICBzZWxmLnN0YXNoX3JlcG9zaXRvcnkuY29tbWl0KHJlZj0nOWI4MzExZjI1YTc3Jyks
CisgICAgICAgICAgICBdCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1pdHMsIHNl
bGYuZGF0YWJhc2UuZmluZF9jb21taXRzX2luX3JhbmdlKHJlcG9zaXRvcnlfaWQ9J3NhZmFyaScs
IGJyYW5jaD0nbWFpbicsIGVuZD1jb21taXRzWzBdLCBsaW1pdD0zKSkKKworICAgIEBXYWl0Rm9y
RG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVk
aXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQorICAgIGRlZiB0ZXN0X3N2
bl9jb21taXRzX2JlZm9yZShzZWxmLCByZWRpcz1TdHJpY3RSZWRpcywgY2Fzc2FuZHJhPUNhc3Nh
bmRyYUNvbnRleHQpOgorICAgICAgICB3aXRoIE1vY2tNb2RlbEZhY3Rvcnkuc2FmYXJpKCksIE1v
Y2tNb2RlbEZhY3Rvcnkud2Via2l0KCk6CisgICAgICAgICAgICBzZWxmLmluaXRfZGF0YWJhc2Uo
cmVkaXM9cmVkaXMsIGNhc3NhbmRyYT1jYXNzYW5kcmEpCisgICAgICAgICAgICBzZWxmLmFkZF9h
bGxfY29tbWl0c190b19kYXRhYmFzZSgpCisKKyAgICAgICAgICAgIGNvbW1pdHMgPSBbCisgICAg
ICAgICAgICAgICAgc2VsZi5zdm5fcmVwb3NpdG9yeS5jb21taXQocmVmPTYpLAorICAgICAgICAg
ICAgICAgIHNlbGYuc3ZuX3JlcG9zaXRvcnkuY29tbWl0KHJlZj00KSwKKyAgICAgICAgICAgICAg
ICBzZWxmLnN2bl9yZXBvc2l0b3J5LmNvbW1pdChyZWY9MiksCisgICAgICAgICAgICBdCisgICAg
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1pdHMsIHNlbGYuZGF0YWJhc2UuZmluZF9jb21t
aXRzX2luX3JhbmdlKHJlcG9zaXRvcnlfaWQ9J3dlYmtpdCcsIGJyYW5jaD0nbWFpbicsIGVuZD1j
b21taXRzWzBdLCBsaW1pdD0zKSkKKworICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19p
Zl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1v
Y2tDYXNzYW5kcmFDb250ZXh0KQorICAgIGRlZiB0ZXN0X3N0YXNoX2NvbW1pdHNfYWZ0ZXIoc2Vs
ZiwgcmVkaXM9U3RyaWN0UmVkaXMsIGNhc3NhbmRyYT1DYXNzYW5kcmFDb250ZXh0KToKKyAgICAg
ICAgd2l0aCBNb2NrTW9kZWxGYWN0b3J5LnNhZmFyaSgpLCBNb2NrTW9kZWxGYWN0b3J5LndlYmtp
dCgpOgorICAgICAgICAgICAgc2VsZi5pbml0X2RhdGFiYXNlKHJlZGlzPXJlZGlzLCBjYXNzYW5k
cmE9Y2Fzc2FuZHJhKQorICAgICAgICAgICAgc2VsZi5hZGRfYWxsX2NvbW1pdHNfdG9fZGF0YWJh
c2UoKQorCisgICAgICAgICAgICBjb21taXRzID0gWworICAgICAgICAgICAgICAgIHNlbGYuc3Rh
c2hfcmVwb3NpdG9yeS5jb21taXQocmVmPScxYWJlMjViNDQzZTknKSwKKyAgICAgICAgICAgICAg
ICBzZWxmLnN0YXNoX3JlcG9zaXRvcnkuY29tbWl0KHJlZj0nZmZmODNiYjJkOTE3JyksCisgICAg
ICAgICAgICAgICAgc2VsZi5zdGFzaF9yZXBvc2l0b3J5LmNvbW1pdChyZWY9JzliODMxMWYyNWE3
NycpLAorICAgICAgICAgICAgXQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21taXRz
LCBzZWxmLmRhdGFiYXNlLmZpbmRfY29tbWl0c19pbl9yYW5nZShyZXBvc2l0b3J5X2lkPSdzYWZh
cmknLCBicmFuY2g9J21haW4nLCBiZWdpbj1jb21taXRzWy0xXSwgbGltaXQ9MykpCisKKyAgICBA
V2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0
cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKKyAgICBkZWYg
dGVzdF9zdm5fY29tbWl0c19hZnRlcihzZWxmLCByZWRpcz1TdHJpY3RSZWRpcywgY2Fzc2FuZHJh
PUNhc3NhbmRyYUNvbnRleHQpOgorICAgICAgICB3aXRoIE1vY2tNb2RlbEZhY3Rvcnkuc2FmYXJp
KCksIE1vY2tNb2RlbEZhY3Rvcnkud2Via2l0KCk6CisgICAgICAgICAgICBzZWxmLmluaXRfZGF0
YWJhc2UocmVkaXM9cmVkaXMsIGNhc3NhbmRyYT1jYXNzYW5kcmEpCisgICAgICAgICAgICBzZWxm
LmFkZF9hbGxfY29tbWl0c190b19kYXRhYmFzZSgpCisKKyAgICAgICAgICAgIGNvbW1pdHMgPSBb
CisgICAgICAgICAgICAgICAgc2VsZi5zdm5fcmVwb3NpdG9yeS5jb21taXQocmVmPTYpLAorICAg
ICAgICAgICAgICAgIHNlbGYuc3ZuX3JlcG9zaXRvcnkuY29tbWl0KHJlZj00KSwKKyAgICAgICAg
ICAgICAgICBzZWxmLnN2bl9yZXBvc2l0b3J5LmNvbW1pdChyZWY9MiksCisgICAgICAgICAgICBd
CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1pdHMsIHNlbGYuZGF0YWJhc2UuZmlu
ZF9jb21taXRzX2luX3JhbmdlKHJlcG9zaXRvcnlfaWQ9J3dlYmtpdCcsIGJyYW5jaD0nbWFpbics
IGJlZ2luPWNvbW1pdHNbLTFdLCBsaW1pdD0zKSkKKworICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENh
c2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fz
c2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQogICAgIGRlZiB0ZXN0X2NvbW1pdF9mcm9tX3N0
YXNoX3JlcG8oc2VsZiwgcmVkaXM9U3RyaWN0UmVkaXMsIGNhc3NhbmRyYT1DYXNzYW5kcmFDb250
ZXh0KToKICAgICAgICAgd2l0aCBNb2NrTW9kZWxGYWN0b3J5LnNhZmFyaSgpLCBNb2NrTW9kZWxG
YWN0b3J5LndlYmtpdCgpOgogICAgICAgICAgICAgc2VsZi5pbml0X2RhdGFiYXNlKHJlZGlzPXJl
ZGlzLCBjYXNzYW5kcmE9Y2Fzc2FuZHJhKQpJbmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMv
cmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy90ZW1wbGF0ZXMvZG9jdW1lbnRhdGlvbi5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3Vs
dHNkYnB5L3ZpZXcvdGVtcGxhdGVzL2RvY3VtZW50YXRpb24uaHRtbAkocmV2aXNpb24gMjgwODYx
KQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmll
dy90ZW1wbGF0ZXMvZG9jdW1lbnRhdGlvbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC01NiwxMCAr
NTYsOSBAQCBmdW5jdGlvbiBkb2N1bWVudEVuZHBvaW50KGVuZHBvaW50LCBhY3RpCiAgICAgICAg
ICAgICAgICAgICAgICR7cXVlcmllcy5tYXAoKHF1ZXJ5KSA9PiB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gYDxkaXYgY2xhc3M9ImJhZGdlIj4KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dCBibG9jayI+Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA8YSBjbGFzcz0idGV4dCB0aW55IiBocmVmPSIjUXVlcnktUGFyYW1l
dGVycy0ke3F1ZXJ5fSI+JHtxdWVyeX08L2E+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA8YSBjbGFzcz0idGV4dCB0aW55IiBocmVmPSIjUXVlcnktUGFyYW1ldGVycy0ke3F1
ZXJ5LnJlcGxhY2UoL1xzL2csICctJyl9Ij4ke3F1ZXJ5LnJlcGxhY2UoL1xzL2csICctJyl9PC9h
PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA8L2Rpdj5gOwotICAgICAgICAgICAgICAgICAgICAgICAgLy9yZXR1cm4g
YDxidXR0b24gY2xhc3M9ImJ1dHRvbiIgb25jbGljaz0id2luZG93LmxvY2F0aW9uLmhyZWYgPSAn
L2RvY3VtZW50YXRpb24jUXVlcnktUGFyYW1ldGVycy0ke3F1ZXJ5fSc7Ij4ke3F1ZXJ5fTwvYnV0
dG9uPmAKICAgICAgICAgICAgICAgICAgICAgfSkuam9pbignJyl9CiAgICAgICAgICAgICAgICAg
PC9kaXY+CiAgICAgICAgICAgICA8L2Rpdj4KQEAgLTM1OSw2ICszNTgsMjAgQEAgY29uc3QgZG9j
dW1lbnRhdGlvbiA9IHsKICAgICAgICAgICAgICAgICAgICAgYHdoZXJlICZsdGNvbmZpZ3VyYXRp
b24tb2JqZWN0LWEmZ3QgYW5kICZsdGNvbmZpZ3VyYXRpb24tb2JqZWN0LWImZ3QgYXJlIGJvdGgg
JHtsb2NhbExpbmsoWydRdWVyeSBQYXJhbWV0ZXJzJywgJ0NvbmZpZ3VyYXRpb24nXSwgJ2NvbmZp
Z3VyYXRpb24gb2JqZWN0cycpfScgYW5kICZsdHJ1bi1hMSZndCwgJmx0cnVuLWEyJmd0LCAmbHRy
dW4tYjEmZ3QgYW5kICZsdHJ1bi1iMiZndCBhcmUgYWxsIHRoZSBhZmZvcm1lbnRpb25lZCBzaW5n
bGUgdGVzdCByZXN1bHQgZGljdGlvbmFyeS5gLAogICAgICAgICAgICAgICAgIF0sCiAgICAgICAg
ICAgICApLAorICAgICAgICAgICAgZG9jdW1lbnRFbmRwb2ludCgKKyAgICAgICAgICAgICAgICAn
L2FwaS9yZXN1bHRzLXN1bW1hcnkvJmx0c3VpdGUmZ3QvJmx0dGVzdCZndCcsCisgICAgICAgICAg
ICAgICAgWydHRVQnXSwKKyAgICAgICAgICAgICAgICBbJ0JyYW5jaCcsICdDb25maWd1cmF0aW9u
JywgJ0luY2x1ZGUgRXhwZWN0YXRpb25zJywgJ0xpbWl0JywgJ1JlcG9zaXRvcnknLCAnUmVmJywg
J1VVSUQnXSwKKyAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgIGBDb21wdXRl
IHRoZSBjb21iaW5lZCByZXN1bHRzIG9mIGEgZ2l2ZW4gdGVzdCBieSBhZ2dyZWdhdGluZyByZXN1
bHRzIGZyb20gYSBzZXQgb2YgcnVucyBzdXJyb3VuZGluZyBhIHNwZWNpZmljIGNvbW1pdDpgLAor
ICAgICAgICAgICAgICAgICAgICBjb2RlQmxvY2soJ3tcbicgKworICAgICAgICAgICAgICAgICAg
ICAnICAgICJwYXNzIjogODAsXG4nICsKKyAgICAgICAgICAgICAgICAgICAgJyAgICAiZmFpbCI6
IDE1LFxuJyArCisgICAgICAgICAgICAgICAgICAgICcgICAgImNyYXNoIjogNSxcbicgKworICAg
ICAgICAgICAgICAgICAgICAnfScpLAorICAgICAgICAgICAgICAgICAgICBgVGhlc2UgcmVzdWx0
cyBhcmUgYWx3YXlzIHRoZSB3ZWlnaHRlZCBhZ2dyZWdhdGlvbiBvZiByZXN1bHRzIGZvciB0aGUg
cHJvdmlkZWQgY29uZmlndXJhdGlvbnMsIHdpdGggd2VpZ2h0cyB0byBiZSB1bmRlcnN0b29kIGFz
IHBlcmNlbnQgbGlrbGlob29kIGEgdGVzdCB3aWxsIGhhdmUgYSBjZXJ0YWluIHJlc3VsdCBvbiBh
IGdpdmVuIHJldmlzaW9uLmAsCisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICksCiAg
ICAgICAgIF0sICdGYWlsdXJlIEFuYWx5c2lzJzogWwogICAgICAgICAgICAgYFJlc3VsdHMgZGF0
YWJhc2VzIHByb3ZpZGUgYSBmZXcgQVBJcyB0byBhc3Npc3QgaW4gdGhlIGludmVzdGlnYXRpb24g
b2YgdGVzdCBmYWlsdXJlcy4gVGhlc2UgYW5hbHlzaXMgZW5kcG9pbnRzIGFnZ3JlZ2F0ZSBkYXRh
IGZyb20gbXVsdGlwbGUgdGVzdCBydW5zIGZvciBjb25zdW1wdGlvbiBieSBib3RoIGh1bWFucyBh
bmQgYXV0b21hdGVkIHN5c3RlbXMuYCwKICAgICAgICAgICAgIGRvY3VtZW50RW5kcG9pbnQoCkBA
IC01MDgsNiArNTIxLDEwIEBAIGNvbnN0IGRvY3VtZW50YXRpb24gPSB7CiAgICAgICAgICAgICBj
b2RlQmxvY2soJ3JlY2VudD1GYWxzZScpLAogICAgICAgICAgICAgYHRvIHlvdXIgcXVlcnkuIFRo
ZSBkb3duc2lkZSBvZiBzZWFyY2hpbmcgYWxsIGNvbmZpZ3VyYXRpb25zIGlzIHRoYXQgdGhlIGRl
ZmF1bHQgYmVoYXZpb3Igb2Ygc2VhcmNoaW5nIGFsbCByZWNlbnQgY29uZmlndXJhdGlvbnMgaWYg
bm8gcXVlcnkgcGFyYW1ldGVycyBhcmUgcHJvdmlkZWQgaXMgZGlzYWJsZWQgYmVjYXVzZSB0aGUg
cmVzdWx0cyBkYXRhYmFzZSBjYW5ub3Qgc2VhcmNoIGJ5IGFuIHVuYm91bmRlZCBudW1iZXIgb2Yg
Y29uZmlndXJhdGlvbnMuYCwKICAgICAgICAgXSwKKyAgICAgICAgJ0luY2x1ZGUgRXhwZWN0YXRp
b25zJzogWworICAgICAgICAgICAgYFNvbWUgZW5kcG9pbnRzIHJldHVybiBkaWZmZXJlbnQgcmVz
dWx0cyBpZiB0aGUgY2FsbGVyIHJlcXVlc3RzIGV4cGVjdGF0aW9ucyBiZSB0YWtlbiBpbnRvIGNv
bnNpZGVyYXRpb24uIEJ5IGRlZmF1bHQsIHRoaXMgZmxhZyBpcyBkaXNhYmxlZCwgYnV0IG1heSBi
ZSBlbmFibGVkIG9uIHN1cHBvcnRpbmcgZW5wb2ludHMgd2l0aCB0aGlzIHF1ZXJ5OmAsCisgICAg
ICAgICAgICBjb2RlQmxvY2soJ2luY2x1ZGVfZXhwZWN0YXRpb25zPUZhbHNlJyksCisgICAgICAg
IF0sCiAgICAgICAgICdMaW1pdCc6IFsKICAgICAgICAgICAgIGBUaGUgdW5kZXJseWluZyBhcmNo
aXRlY3R1cmUgb2YgdGhlIHJlc3VsdHMgZGF0YWJhc2UgZG9lcyBub3QgYWxsb3cgdW5saW1pdGVk
IHF1ZXJ5IHNpemVzLiBNb3N0IGVuZHBvaW50cyBhY2NlcHQgYSBsaW1pdCBxdWVyeSB3aGljaCBs
b29rcyBsaWtlIHRoaXM6YCwKICAgICAgICAgICAgIGNvZGVCbG9jaygnbGltaXQ9MTUwJyksCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435299</attachid>
            <date>2021-08-10 14:51:36 -0700</date>
            <delta_ts>2021-08-10 14:51:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226894-20210810145135.patch</filename>
            <type>text/plain</type>
            <size>23240</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI4MDg2NSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDM1IEBACisyMDIxLTA4LTA5ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBbcmVzdWx0c2RicHldIEFkZCByZXN1bHRzLXN1bW1hcnkgQVBJCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY4OTQKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzc5MTU1MTgxPgorCisgICAgICAgIFJldmlld2VkIGJ5IEFha2Fz
aCBKYWluLgorCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0
c2RicHkvX19pbml0X18ucHk6IEJ1bXAgdmVyc2lvbi4KKyAgICAgICAgKiBTY3JpcHRzL2xpYnJh
cmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9jb250cm9sbGVyL2FwaV9yb3V0ZXMucHk6Cisg
ICAgICAgIChBUElSb3V0ZXMuX19pbml0X18pOiBBZGQgYWdncmVnYXRlLXJlc3VsdHMgZW5kcG9p
bnQuCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkv
Y29udHJvbGxlci9jb21taXRfY29udHJvbGxlci5weToKKyAgICAgICAgKGNvbW1pdF9mb3JfcXVl
cnkpOiBBZGQgZGVjb3JhdG9yIHdoaWNoIGNvbnZlcnRzIGEgc2V0IG9mIGFyZ3VtZW50cyBpbnRv
IGEgc2luZ2xlIGNvbW1pdC4KKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJw
eS9yZXN1bHRzZGJweS9jb250cm9sbGVyL3Rlc3RfY29udHJvbGxlci5weToKKyAgICAgICAgKFRl
c3RDb250cm9sbGVyKToKKyAgICAgICAgKFRlc3RDb250cm9sbGVyLnN1bW1hcml6ZV90ZXN0X3Jl
c3VsdHMpOiBHaXZlbiBhIHNpbmdsZSBjb21taXQgYW5kIHN1aXRlL3Rlc3QgY29tYmluYXRpb24s
IGNvbXB1dGUKKyAgICAgICAgdGhlIGxpa2xpaG9vZCBvZiBlYWNoIHBvdGVudGlhbCByZXN1bHQu
CisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29u
dHJvbGxlci90ZXN0X2NvbnRyb2xsZXJfdW5pdHRlc3QucHk6CisgICAgICAgIChUZXN0Q29udHJv
bGxlclRlc3QudGVzdF9zdW1tYXJpemVfZ2VuZXJhbCk6IEFkZGVkLgorICAgICAgICAoVGVzdENv
bnRyb2xsZXJUZXN0LnRlc3Rfc3VtbWFyaXplX3NwZWNpZmljKTogQWRkZWQuCisgICAgICAgIChU
ZXN0Q29udHJvbGxlclRlc3QudGVzdF9zdW1tYXJpemVfZXhwZWN0YXRpb25zKTogQWRkZWQuCisg
ICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwv
Y29tbWl0X2NvbnRleHQucHk6CisgICAgICAgIChDb21taXRDb250ZXh0LmZpbmRfY29tbWl0c19p
bl9yYW5nZSk6IFVzZSBhc2NlbmRlZCB0YWJsZSBpZiB1c2VyIG9ubHkgcHJvdmlkZXMgbG93ZXIg
Ym91bmQuCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2Ri
cHkvbW9kZWwvY29tbWl0X2NvbnRleHRfdW5pdHRlc3QucHk6CisgICAgICAgIChDb21taXRDb250
ZXh0VGVzdC50ZXN0X3N0YXNoX2NvbW1pdHNfYmVmb3JlKTogVmVyaWZ5IHVwcGVyIGJvdW5kLgor
ICAgICAgICAoQ29tbWl0Q29udGV4dFRlc3QudGVzdF9zdm5fY29tbWl0c19iZWZvcmUpOiBEaXR0
by4KKyAgICAgICAgKENvbW1pdENvbnRleHRUZXN0LnRlc3Rfc3Rhc2hfY29tbWl0c19hZnRlcik6
IFZlcmlmeSBsb3dlciBib3VuZC4KKyAgICAgICAgKENvbW1pdENvbnRleHRUZXN0LnRlc3Rfc3Zu
X2NvbW1pdHNfYWZ0ZXIpOiBEaXR0by4KKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy9yZXN1
bHRzZGJweS9yZXN1bHRzZGJweS92aWV3L3RlbXBsYXRlcy9kb2N1bWVudGF0aW9uLmh0bWw6IEFk
ZCBhZ2dyZWdhdGUtcmVzdWx0cworICAgICAgICBkb2N1bWVudGF0aW9uLgorICAgICAgICAqIFNj
cmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3NldHVwLnB5OiBCdW1wIHZlcnNpb24uCisKIDIw
MjEtMDgtMTAgIEpvbmF0aGFuIEJlZGFyZCAgPGpiZWRhcmRAYXBwbGUuY29tPgogCiAgICAgICAg
IFtnaXQtd2Via2l0XSBDb2xvciBgbG9nYCBvdXRwdXQKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGli
cmFyaWVzL3Jlc3VsdHNkYnB5L3NldHVwLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMv
bGlicmFyaWVzL3Jlc3VsdHNkYnB5L3NldHVwLnB5CShyZXZpc2lvbiAyODA4NjUpCisrKyBUb29s
cy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9zZXR1cC5weQkod29ya2luZyBjb3B5KQpA
QCAtMzAsNyArMzAsNyBAQCBkZWYgcmVhZG1lKCk6CiAKIHNldHVwKAogICAgIG5hbWU9J3Jlc3Vs
dHNkYnB5JywKLSAgICB2ZXJzaW9uPSczLjAuMicsCisgICAgdmVyc2lvbj0nMy4xLjAnLAogICAg
IGRlc2NyaXB0aW9uPSdMaWJyYXJ5IGZvciB2aXN1YWxpemluZywgcHJvY2Vzc2luZyBhbmQgc3Rv
cmluZyB0ZXN0IHJlc3VsdHMuJywKICAgICBsb25nX2Rlc2NyaXB0aW9uPXJlYWRtZSgpLAogICAg
IGNsYXNzaWZpZXJzPVsKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5
L3Jlc3VsdHNkYnB5L19faW5pdF9fLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGli
cmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L19faW5pdF9fLnB5CShyZXZpc2lvbiAyODA4
NjUpCisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9f
X2luaXRfXy5weQkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNyBAQCBleGNlcHQgSW1wb3J0
RXJyb3I6CiAgICAgICAgICJQbGVhc2UgaW5zdGFsbCB3ZWJraXRjb3JlcHkgd2l0aCBgcGlwIGlu
c3RhbGwgd2Via2l0Y29yZXB5IC0tZXh0cmEtaW5kZXgtdXJsIDxwYWNrYWdlIGluZGV4IFVSTD5g
IgogICAgICkKIAotdmVyc2lvbiA9IFZlcnNpb24oMywgMCwgMikKK3ZlcnNpb24gPSBWZXJzaW9u
KDMsIDEsIDApCiAKIGltcG9ydCB3ZWJraXRmbGFza3B5CiAKSW5kZXg6IFRvb2xzL1NjcmlwdHMv
bGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIvYXBpX3JvdXRlcy5w
eQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1
bHRzZGJweS9jb250cm9sbGVyL2FwaV9yb3V0ZXMucHkJKHJldmlzaW9uIDI4MDg2NSkKKysrIFRv
b2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIv
YXBpX3JvdXRlcy5weQkod29ya2luZyBjb3B5KQpAQCAtNzAsNiArNzAsNyBAQCBjbGFzcyBBUElS
b3V0ZXMoQXV0aGVkQmx1ZXByaW50KToKIAogICAgICAgICBzZWxmLmFkZF91cmxfcnVsZSgnL3Jl
c3VsdHMvPHBhdGg6c3VpdGU+JywgJ3N1aXRlLXJlc3VsdHMnLCBzZWxmLnN1aXRlX2NvbnRyb2xs
ZXIuZmluZF9ydW5fcmVzdWx0cywgbWV0aG9kcz0oJ0dFVCcsKSkKICAgICAgICAgc2VsZi5hZGRf
dXJsX3J1bGUoJy9yZXN1bHRzLzxwYXRoOnN1aXRlPi88cGF0aDp0ZXN0PicsICd0ZXN0LXJlc3Vs
dHMnLCBzZWxmLnRlc3RfY29udHJvbGxlci5maW5kX3Rlc3RfcmVzdWx0LCBtZXRob2RzPSgnR0VU
JywpKQorICAgICAgICBzZWxmLmFkZF91cmxfcnVsZSgnL3Jlc3VsdHMtc3VtbWFyeS88cGF0aDpz
dWl0ZT4vPHBhdGg6dGVzdD4nLCAndGVzdC1hZ2dyZWdhdGUtcmVzdWx0cycsIHNlbGYudGVzdF9j
b250cm9sbGVyLnN1bW1hcml6ZV90ZXN0X3Jlc3VsdHMsIG1ldGhvZHM9KCdHRVQnLCkpCiAKICAg
ICAgICAgc2VsZi5hZGRfdXJsX3J1bGUoJy9mYWlsdXJlcy88cGF0aDpzdWl0ZT4nLCAnc3VpdGUt
ZmFpbHVyZXMnLCBzZWxmLmZhaWx1cmVfY29udHJvbGxlci5mYWlsdXJlcywgbWV0aG9kcz0oJ0dF
VCcsKSkKIApJbmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0
c2RicHkvY29udHJvbGxlci9jb21taXRfY29udHJvbGxlci5weQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9jb250cm9sbGVyL2Nv
bW1pdF9jb250cm9sbGVyLnB5CShyZXZpc2lvbiAyODA4NjUpCisrKyBUb29scy9TY3JpcHRzL2xp
YnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9jb250cm9sbGVyL2NvbW1pdF9jb250cm9s
bGVyLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xMjUsNiArMTI1LDI2IEBAIGRlZiB1dWlkX3Jhbmdl
X2Zvcl9xdWVyeSgpOgogICAgIHJldHVybiBkZWNvcmF0b3IKIAogCitkZWYgY29tbWl0X2Zvcl9x
dWVyeSgpOgorICAgIGRlZiBkZWNvcmF0b3IobWV0aG9kKToKKyAgICAgICAgZGVmIHJlYWxfbWV0
aG9kKG9iaiwgcmVwb3NpdG9yeV9pZD1Ob25lLCBicmFuY2g9Tm9uZSwgaWQ9Tm9uZSwgcmVmPU5v
bmUsIHV1aWQ9Tm9uZSwgdGltZXN0YW1wPU5vbmUsICoqa3dhcmdzKToKKyAgICAgICAgICAgICMg
V2UncmUgbWFraW5nIGFuIGFzc3VtcHRpb24gdGhhdCB0aGUgY2xhc3MgdXNpbmcgdGhpcyBkZWNv
cmF0b3IgYWN0dWFsbHkgaGFzIGEgY29tbWl0X2NvbnRleHQsIGlmIGl0IGRvZXMgbm90LAorICAg
ICAgICAgICAgIyB0aGlzIGRlY29yYXRvciB3aWxsIGZhaWwgc3BlY3RhY3VsYXJseQorICAgICAg
ICAgICAgd2l0aCBvYmouY29tbWl0X2NvbnRleHQ6CisgICAgICAgICAgICAgICAgaWYgbm90IGJy
YW5jaDoKKyAgICAgICAgICAgICAgICAgICAgYnJhbmNoID0gW05vbmVdCisgICAgICAgICAgICAg
ICAgcmV0dXJuIG1ldGhvZChvYmosIGJyYW5jaD1icmFuY2gsIGNvbW1pdD1fZmluZF9jb21wYXJp
c29uKAorICAgICAgICAgICAgICAgICAgICBvYmouY29tbWl0X2NvbnRleHQsIHJlcG9zaXRvcnlf
aWQ9cmVwb3NpdG9yeV9pZCwgYnJhbmNoPWJyYW5jaCwKKyAgICAgICAgICAgICAgICAgICAgcmVm
PXJlZiBvciBpZCwKKyAgICAgICAgICAgICAgICAgICAgdXVpZD11dWlkLCB0aW1lc3RhbXA9dGlt
ZXN0YW1wLCBwcmlvcml0eT1tYXgsCisgICAgICAgICAgICAgICAgKSwgKiprd2FyZ3MpCisKKyAg
ICAgICAgcmVhbF9tZXRob2QuX19uYW1lX18gPSBtZXRob2QuX19uYW1lX18KKyAgICAgICAgcmV0
dXJuIHJlYWxfbWV0aG9kCisKKyAgICByZXR1cm4gZGVjb3JhdG9yCisKKwogY2xhc3MgSGFzQ29t
bWl0Q29udGV4dChvYmplY3QpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjb21taXRfY29udGV4
dCk6CiAgICAgICAgIHNlbGYuY29tbWl0X2NvbnRleHQgPSBjb21taXRfY29udGV4dApJbmRleDog
VG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxl
ci90ZXN0X2NvbnRyb2xsZXIucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJp
ZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxlci90ZXN0X2NvbnRyb2xsZXIucHkJ
KHJldmlzaW9uIDI4MDg2NSkKKysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5
L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIvdGVzdF9jb250cm9sbGVyLnB5CSh3b3JraW5nIGNvcHkp
CkBAIC0yMSwxMCArMjEsMTIgQEAKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogZnJvbSBmbGFzayBpbXBvcnQg
YWJvcnQsIGpzb25pZnkKLWZyb20gcmVzdWx0c2RicHkuY29udHJvbGxlci5jb21taXRfY29udHJv
bGxlciBpbXBvcnQgdXVpZF9yYW5nZV9mb3JfcXVlcnksIEhhc0NvbW1pdENvbnRleHQKK2Zyb20g
aGVhcHEgaW1wb3J0IG1lcmdlCitmcm9tIHJlc3VsdHNkYnB5LmNvbnRyb2xsZXIuY29tbWl0X2Nv
bnRyb2xsZXIgaW1wb3J0IHV1aWRfcmFuZ2VfZm9yX3F1ZXJ5LCBjb21taXRfZm9yX3F1ZXJ5LCBI
YXNDb21taXRDb250ZXh0CiBmcm9tIHJlc3VsdHNkYnB5LmNvbnRyb2xsZXIuY29uZmlndXJhdGlv
biBpbXBvcnQgQ29uZmlndXJhdGlvbgogZnJvbSByZXN1bHRzZGJweS5jb250cm9sbGVyLmNvbmZp
Z3VyYXRpb25fY29udHJvbGxlciBpbXBvcnQgY29uZmlndXJhdGlvbl9mb3JfcXVlcnkKIGZyb20g
cmVzdWx0c2RicHkuY29udHJvbGxlci5zdWl0ZV9jb250cm9sbGVyIGltcG9ydCB0aW1lX3Jhbmdl
X2Zvcl9xdWVyeQorZnJvbSByZXN1bHRzZGJweS5tb2RlbC50ZXN0X2NvbnRleHQgaW1wb3J0IEV4
cGVjdGF0aW9ucwogZnJvbSB3ZWJraXRmbGFza3B5LnV0aWwgaW1wb3J0IEFzc2VydFJlcXVlc3Qs
IHF1ZXJ5X2FzX2t3YXJncywgbGltaXRfZm9yX3F1ZXJ5LCBib29sZWFuX3F1ZXJ5CiAKIApAQCAt
MTAyLDMgKzEwNCwxMDcgQEAgY2xhc3MgVGVzdENvbnRyb2xsZXIoSGFzQ29tbWl0Q29udGV4dCk6
CiAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHM9c29ydGVkKHJlc3VsdHMsIGtleT1zb3J0X2Z1
bmN0aW9uKSwKICAgICAgICAgICAgICAgICApKQogICAgICAgICAgICAgcmV0dXJuIGpzb25pZnko
cmVzcG9uc2UpCisKKyAgICBAcXVlcnlfYXNfa3dhcmdzKCkKKyAgICBAY29tbWl0X2Zvcl9xdWVy
eSgpCisgICAgQGxpbWl0X2Zvcl9xdWVyeSgxMDApCisgICAgQGNvbmZpZ3VyYXRpb25fZm9yX3F1
ZXJ5KCkKKyAgICBkZWYgc3VtbWFyaXplX3Rlc3RfcmVzdWx0cygKKyAgICAgICAgc2VsZiwgc3Vp
dGU9Tm9uZSwgdGVzdD1Ob25lLAorICAgICAgICBjb25maWd1cmF0aW9ucz1Ob25lLCByZWNlbnQ9
Tm9uZSwKKyAgICAgICAgYnJhbmNoPU5vbmUsIGNvbW1pdD1Ob25lLAorICAgICAgICBsaW1pdD1O
b25lLCBpbmNsdWRlX2V4cGVjdGF0aW9ucz1Ob25lLCAqKmt3YXJncworICAgICk6CisgICAgICAg
IEFzc2VydFJlcXVlc3QuaXNfdHlwZShbJ0dFVCddKQorICAgICAgICBBc3NlcnRSZXF1ZXN0LnF1
ZXJ5X2t3YXJnc19lbXB0eSgqKmt3YXJncykKKworICAgICAgICByZWNlbnQgPSBib29sZWFuX3F1
ZXJ5KCpyZWNlbnQpWzBdIGlmIHJlY2VudCBlbHNlIFRydWUKKyAgICAgICAgaW5jbHVkZV9leHBl
Y3RhdGlvbnMgPSBib29sZWFuX3F1ZXJ5KCppbmNsdWRlX2V4cGVjdGF0aW9ucylbMF0gaWYgaW5j
bHVkZV9leHBlY3RhdGlvbnMgZWxzZSBGYWxzZQorCisgICAgICAgIGlmIG5vdCBzdWl0ZToKKyAg
ICAgICAgICAgIGFib3J0KDQwMCwgZGVzY3JpcHRpb249J05vIHN1aXRlIHNwZWNpZmllZCcpCisg
ICAgICAgIGlmIG5vdCB0ZXN0OgorICAgICAgICAgICAgYWJvcnQoNDAwLCBkZXNjcmlwdGlvbj0n
Tm8gdGVzdCBzcGVjaWZpZWQnKQorCisgICAgICAgIGxpbWl0ICs9IDEKKyAgICAgICAgYmVmb3Jl
X2NvbW1pdHMgPSBbXQorICAgICAgICBhZnRlcl9jb21taXRzID0gW10KKyAgICAgICAgd2l0aCBz
ZWxmLmNvbW1pdF9jb250ZXh0OgorICAgICAgICAgICAgZm9yIHJlcG9faWQgaW4gc2VsZi5jb21t
aXRfY29udGV4dC5yZXBvc2l0b3JpZXMua2V5cygpOgorICAgICAgICAgICAgICAgIGlmIGNvbW1p
dDoKKyAgICAgICAgICAgICAgICAgICAgYmVmb3JlX2NvbW1pdHMgPSBzb3J0ZWQobGlzdChyZXZl
cnNlZChzZWxmLmNvbW1pdF9jb250ZXh0LmZpbmRfY29tbWl0c19pbl9yYW5nZSgKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHJlcG9zaXRvcnlfaWQ9cmVwb19pZCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGVuZD1jb21taXQsIGJyYW5jaD1icmFuY2hbMF0sIGxpbWl0PWxpbWl0LAorICAgICAg
ICAgICAgICAgICAgICApKSkgKyBiZWZvcmVfY29tbWl0cykKKyAgICAgICAgICAgICAgICAgICAg
YWZ0ZXJfY29tbWl0cyA9IHNvcnRlZChsaXN0KHJldmVyc2VkKHNlbGYuY29tbWl0X2NvbnRleHQu
ZmluZF9jb21taXRzX2luX3JhbmdlKAorICAgICAgICAgICAgICAgICAgICAgICAgcmVwb3NpdG9y
eV9pZD1yZXBvX2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW49Y29tbWl0LCBicmFu
Y2g9YnJhbmNoWzBdLCBsaW1pdD1saW1pdCwKKyAgICAgICAgICAgICAgICAgICAgKSkpICsgYWZ0
ZXJfY29tbWl0cykKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBi
ZWZvcmVfY29tbWl0cyA9IGxpc3QobWVyZ2UoCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxm
LmNvbW1pdF9jb250ZXh0LmZpbmRfY29tbWl0c19pbl9yYW5nZShyZXBvc2l0b3J5X2lkPXJlcG9f
aWQsIGJyYW5jaD1icmFuY2hbMF0sIGxpbWl0PWxpbWl0KSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGJlZm9yZV9jb21taXRzLAorICAgICAgICAgICAgICAgICAgICApKQorICAgICAgICAgICAg
ICAgICAgICBiZWZvcmVfY29tbWl0cy5yZXZlcnNlKCkKKyAgICAgICAgICAgICAgICBhZnRlcl9j
b21taXRzLnJldmVyc2UoKQorCisgICAgICAgIGJlZm9yZV9jb21taXRzID0gc29ydGVkKGJlZm9y
ZV9jb21taXRzKQorICAgICAgICBhZnRlcl9jb21taXRzID0gc29ydGVkKGFmdGVyX2NvbW1pdHMp
CisKKyAgICAgICAgYmVmb3JlX2NvbW1pdHMgPSBiZWZvcmVfY29tbWl0c1stbGltaXQ6XQorICAg
ICAgICBhZnRlcl9jb21taXRzID0gYWZ0ZXJfY29tbWl0c1s6bGltaXRdCisgICAgICAgIGlmIGJl
Zm9yZV9jb21taXRzIGFuZCBhZnRlcl9jb21taXRzIGFuZCBiZWZvcmVfY29tbWl0c1stMV0gPT0g
YWZ0ZXJfY29tbWl0c1swXToKKyAgICAgICAgICAgIGRlbCBiZWZvcmVfY29tbWl0c1stMV0KKwor
ICAgICAgICBpZiBub3QgYmVmb3JlX2NvbW1pdHMgYW5kIG5vdCBhZnRlcl9jb21taXRzOgorICAg
ICAgICAgICAgcmV0dXJuIGFib3J0KDQwMCwgZGVzY3JpcHRpb249J05vIGNvbW1pdHMgaW4gc3Bl
Y2lmaWVkIHJhbmdlJykKKworICAgICAgICAjIFVzZSB0aGUgbGluZWFyIGRpc3RhbmNlIGZyb20g
dGhlIHNwZWNpZmllZCBjb21taXQKKyAgICAgICAgc2NhbGVfZm9yX3V1aWQgPSB7fQorICAgICAg
ICBjb3VudCA9IGxpbWl0IC0gMQorICAgICAgICBmb3IgYyBpbiByZXZlcnNlZChiZWZvcmVfY29t
bWl0cyk6CisgICAgICAgICAgICBzY2FsZV9mb3JfdXVpZFtjLnV1aWRdID0gY291bnQKKyAgICAg
ICAgICAgIGNvdW50IC09IDEKKyAgICAgICAgY291bnQgPSBsaW1pdAorICAgICAgICBmb3IgYyBp
biBhZnRlcl9jb21taXRzOgorICAgICAgICAgICAgc2NhbGVfZm9yX3V1aWRbYy51dWlkXSA9IGNv
dW50CisgICAgICAgICAgICBjb3VudCAtPSAxCisKKyAgICAgICAgIyBBIGRpcmVjdCBtYXRjaCB0
byB0aGUgcHJvdmlkZWQgY29tbWl0IG1hdHRlcnMgbW9zdAorICAgICAgICBpZiBjb21taXQ6Cisg
ICAgICAgICAgICBzY2FsZV9mb3JfdXVpZFtjb21taXQudXVpZF0gPSBsaW1pdCAqIDIKKworICAg
ICAgICByZXNwb25zZSA9IHt9CisgICAgICAgIGZvciB2YWx1ZSBpbiBFeHBlY3RhdGlvbnMuU1RB
VEVfSURfVE9fU1RSSU5HLnZhbHVlcygpOgorICAgICAgICAgICAgcmVzcG9uc2VbdmFsdWUubG93
ZXIoKV0gPSB7fSBpZiBpbmNsdWRlX2V4cGVjdGF0aW9ucyBlbHNlIDAKKworICAgICAgICB3aXRo
IHNlbGYudGVzdF9jb250ZXh0OgorICAgICAgICAgICAgZm9yIGNvbmZpZywgcmVzdWx0cyBpbiBz
ZWxmLnRlc3RfY29udGV4dC5maW5kX2J5X2NvbW1pdCgKKyAgICAgICAgICAgICAgICBzdWl0ZT1z
dWl0ZSwgdGVzdD10ZXN0LAorICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25zPWNvbmZpZ3Vy
YXRpb25zLCByZWNlbnQ9cmVjZW50LAorICAgICAgICAgICAgICAgIGJyYW5jaD1icmFuY2hbMF0s
CisgICAgICAgICAgICAgICAgbGltaXQ9bGltaXQgKiA0LAorICAgICAgICAgICAgICAgIGJlZ2lu
PShiZWZvcmVfY29tbWl0cyBvciBhZnRlcl9jb21taXRzKVswXSwgZW5kPShhZnRlcl9jb21taXRz
IG9yIGJlZm9yZV9jb21taXRzKVstMV0sCisgICAgICAgICAgICApLml0ZW1zKCk6CisgICAgICAg
ICAgICAgICAgZm9yIHJlc3VsdCBpbiByZXN1bHRzOgorICAgICAgICAgICAgICAgICAgICBzY2Fs
ZSA9IHNjYWxlX2Zvcl91dWlkLmdldChpbnQocmVzdWx0Wyd1dWlkJ10pLCAwKQorICAgICAgICAg
ICAgICAgICAgICBpZiBub3Qgc2NhbGU6CisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51
ZQorICAgICAgICAgICAgICAgICAgICB0YWcgPSByZXN1bHQuZ2V0KCdhY3R1YWwnLCAnUEFTUycp
Lmxvd2VyKCkKKyAgICAgICAgICAgICAgICAgICAgaWYgaW5jbHVkZV9leHBlY3RhdGlvbnM6Cisg
ICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZCA9ICdleHBlY3RlZCcgaWYgbm90IHJlc3Vs
dC5nZXQoJ2V4cGVjdGVkJykgb3IgcmVzdWx0WydhY3R1YWwnXSA9PSByZXN1bHRbJ2V4cGVjdGVk
J10gZWxzZSAndW5leHBlY3RlZCcKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlW3Rh
Z11bZXhwZWN0ZWRdID0gcmVzcG9uc2VbdGFnXS5nZXQoZXhwZWN0ZWQsIDApICsgc2NhbGUKKyAg
ICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNl
W3RhZ10gPSByZXNwb25zZVt0YWddICsgc2NhbGUKKworICAgICAgICBhZ2dyZWdhdGUgPSBzdW0o
W3N1bSh2YWx1ZS52YWx1ZXMoKSkgaWYgaW5jbHVkZV9leHBlY3RhdGlvbnMgZWxzZSB2YWx1ZSBm
b3IgdmFsdWUgaW4gcmVzcG9uc2UudmFsdWVzKCldKQorICAgICAgICBpZiBub3QgYWdncmVnYXRl
OgorICAgICAgICAgICAgcmV0dXJuIGFib3J0KDQwMCwgZGVzY3JpcHRpb249J05vIHJlc3VsdHMg
Zm9yIHNwZWNpZmllZCB0ZXN0IGFuZCBjb25maWd1cmF0aW9uIGluIHByb3ZpZGVkIGNvbW1pdCBy
YW5nZScpCisgICAgICAgIGZvciBrZXkgaW4gcmVzcG9uc2Uua2V5cygpOgorICAgICAgICAgICAg
aWYgaW5jbHVkZV9leHBlY3RhdGlvbnM6CisgICAgICAgICAgICAgICAgZm9yIGV4cGVjdGF0aW9u
IGluIHJlc3BvbnNlW2tleV0ua2V5cygpOgorICAgICAgICAgICAgICAgICAgICByZXNwb25zZVtr
ZXldW2V4cGVjdGF0aW9uXSA9IDEwMCAqIHJlc3BvbnNlW2tleV1bZXhwZWN0YXRpb25dIC8vIChh
Z2dyZWdhdGUgb3IgMSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmVzcG9u
c2Vba2V5XSA9IDEwMCAqIHJlc3BvbnNlW2tleV0gLy8gKGFnZ3JlZ2F0ZSBvciAxKQorCisgICAg
ICAgIHJldHVybiBqc29uaWZ5KHJlc3BvbnNlKQpJbmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJp
ZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxlci90ZXN0X2NvbnRyb2xsZXJfdW5p
dHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2Ri
cHkvcmVzdWx0c2RicHkvY29udHJvbGxlci90ZXN0X2NvbnRyb2xsZXJfdW5pdHRlc3QucHkJKHJl
dmlzaW9uIDI4MDg2NSkKKysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jl
c3VsdHNkYnB5L2NvbnRyb2xsZXIvdGVzdF9jb250cm9sbGVyX3VuaXR0ZXN0LnB5CSh3b3JraW5n
IGNvcHkpCkBAIC0xMzYsMyArMTM2LDU5IEBAIGNsYXNzIFRlc3RDb250cm9sbGVyVGVzdChGbGFz
a1Rlc3RDYXNlLCAKICAgICAgICAgcmVzcG9uc2UgPSBjbGllbnQuZ2V0KHNlbGYuVVJMICsgZicv
YXBpL3Jlc3VsdHMvbGF5b3V0LXRlc3RzL2Zhc3QvZW5jb2RpbmcvY3NzLWxpbmstY2hhcnNldC5o
dG1sP3BsYXRmb3JtPWlPUyZzdHlsZT1EZWJ1ZyZyZWNlbnQ9RmFsc2UmYWZ0ZXJfdGltZT17dGlt
ZS50aW1lKCkgKyAxfScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2Uuc3RhdHVz
X2NvZGUsIDIwMCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVzcG9uc2UuanNvbigp
KSwgMCkKKworICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9j
a19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250
ZXh0KQorICAgIEBGbGFza1Rlc3RDYXNlLnJ1bl93aXRoX3dlYnNlcnZlcigpCisgICAgZGVmIHRl
c3Rfc3VtbWFyaXplX2dlbmVyYWwoc2VsZiwgY2xpZW50LCAqKmt3YXJncyk6CisgICAgICAgIHNl
bGYubWF4RGlmZiA9IE5vbmUKKyAgICAgICAgcmVzcG9uc2UgPSBjbGllbnQuZ2V0KAorICAgICAg
ICAgICAgc2VsZi5VUkwgKyBmJy9hcGkvcmVzdWx0cy1zdW1tYXJ5L2xheW91dC10ZXN0cy9mYXN0
L2VuY29kaW5nL2Nzcy1saW5rLWNoYXJzZXQuaHRtbD9saW1pdD0yJykKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChyZXNwb25zZS5zdGF0dXNfY29kZSwgMjAwKQorICAgICAgICBzZWxmLmFzc2Vy
dERpY3RFcXVhbChyZXNwb25zZS5qc29uKCksIHsKKyAgICAgICAgICAgICdhdWRpbyc6IDAsCisg
ICAgICAgICAgICAnY3Jhc2gnOiAwLAorICAgICAgICAgICAgJ2Vycm9yJzogMCwKKyAgICAgICAg
ICAgICdmYWlsJzogMCwKKyAgICAgICAgICAgICdpbWFnZSc6IDAsCisgICAgICAgICAgICAncGFz
cyc6IDEwMCwKKyAgICAgICAgICAgICd0ZXh0JzogMCwKKyAgICAgICAgICAgICd0aW1lb3V0Jzog
MCwKKyAgICAgICAgICAgICd3YXJuaW5nJzogMCwKKyAgICAgICAgfSkKKworICAgIEBXYWl0Rm9y
RG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVk
aXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQorICAgIEBGbGFza1Rlc3RD
YXNlLnJ1bl93aXRoX3dlYnNlcnZlcigpCisgICAgZGVmIHRlc3Rfc3VtbWFyaXplX3NwZWNpZmlj
KHNlbGYsIGNsaWVudCwgKiprd2FyZ3MpOgorICAgICAgICBzZWxmLm1heERpZmYgPSBOb25lCisg
ICAgICAgIHJlc3BvbnNlID0gY2xpZW50LmdldChzZWxmLlVSTCArIGYnL2FwaS9yZXN1bHRzLXN1
bW1hcnkvbGF5b3V0LXRlc3RzL2Zhc3QvZW5jb2RpbmcvY3NzLWxpbmstY2hhcnNldC5odG1sP3Jl
Zj0xYWJlMjViNDQzZTkmbGltaXQ9MicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9u
c2Uuc3RhdHVzX2NvZGUsIDIwMCkKKyAgICAgICAgc2VsZi5hc3NlcnREaWN0RXF1YWwocmVzcG9u
c2UuanNvbigpLCB7CisgICAgICAgICAgICAnYXVkaW8nOiAwLAorICAgICAgICAgICAgJ2NyYXNo
JzogMCwKKyAgICAgICAgICAgICdlcnJvcic6IDAsCisgICAgICAgICAgICAnZmFpbCc6IDAsCisg
ICAgICAgICAgICAnaW1hZ2UnOiAwLAorICAgICAgICAgICAgJ3Bhc3MnOiAxMDAsCisgICAgICAg
ICAgICAndGV4dCc6IDAsCisgICAgICAgICAgICAndGltZW91dCc6IDAsCisgICAgICAgICAgICAn
d2FybmluZyc6IDAsCisgICAgICAgIH0pCisKKyAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1v
Y2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRy
YT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKKyAgICBARmxhc2tUZXN0Q2FzZS5ydW5fd2l0aF93ZWJz
ZXJ2ZXIoKQorICAgIGRlZiB0ZXN0X3N1bW1hcml6ZV9leHBlY3RhdGlvbnMoc2VsZiwgY2xpZW50
LCAqKmt3YXJncyk6CisgICAgICAgIHNlbGYubWF4RGlmZiA9IE5vbmUKKyAgICAgICAgcmVzcG9u
c2UgPSBjbGllbnQuZ2V0KAorICAgICAgICAgICAgc2VsZi5VUkwgKyBmJy9hcGkvcmVzdWx0cy1z
dW1tYXJ5L2xheW91dC10ZXN0cy9mYXN0L2VuY29kaW5nL2Nzcy1saW5rLWNoYXJzZXQuaHRtbD9s
aW1pdD0yJmluY2x1ZGVfZXhwZWN0YXRpb25zPVRydWUnKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHJlc3BvbnNlLnN0YXR1c19jb2RlLCAyMDApCisgICAgICAgIHNlbGYuYXNzZXJ0RGljdEVx
dWFsKHJlc3BvbnNlLmpzb24oKSwgeworICAgICAgICAgICAgJ2F1ZGlvJzoge30sCisgICAgICAg
ICAgICAnY3Jhc2gnOiB7fSwKKyAgICAgICAgICAgICdlcnJvcic6IHt9LAorICAgICAgICAgICAg
J2ZhaWwnOiB7fSwKKyAgICAgICAgICAgICdpbWFnZSc6IHt9LAorICAgICAgICAgICAgJ3Bhc3Mn
OiBkaWN0KGV4cGVjdGVkPTEwMCksCisgICAgICAgICAgICAndGV4dCc6IHt9LAorICAgICAgICAg
ICAgJ3RpbWVvdXQnOiB7fSwKKyAgICAgICAgICAgICd3YXJuaW5nJzoge30sCisgICAgICAgIH0p
CkluZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9t
b2RlbC9jb21taXRfY29udGV4dC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJh
cmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC9jb21taXRfY29udGV4dC5weQkocmV2
aXNpb24gMjgwODY1KQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVz
dWx0c2RicHkvbW9kZWwvY29tbWl0X2NvbnRleHQucHkJKHdvcmtpbmcgY29weSkKQEAgLTIxMywx
NiArMjEzLDIwIEBAIGNsYXNzIENvbW1pdENvbnRleHQob2JqZWN0KToKICAgICAgICAgaWYgYnJh
bmNoIGlzIE5vbmU6CiAgICAgICAgICAgICBicmFuY2ggPSBzZWxmLnJlcG9zaXRvcmllc1tyZXBv
c2l0b3J5X2lkXS5kZWZhdWx0X2JyYW5jaAogCisgICAgICAgIHVzZV9hc2NlbmRpbmcgPSBiZWdp
biBhbmQgbm90IGVuZAogICAgICAgICBiZWdpbiA9IHNlbGYuY29udmVydF90b191dWlkKGJlZ2lu
KQogICAgICAgICBlbmQgPSBzZWxmLmNvbnZlcnRfdG9fdXVpZChlbmQsIHNlbGYudGltZXN0YW1w
X3RvX3V1aWQoKSkKIAogICAgICAgICB3aXRoIHNlbGY6Ci0gICAgICAgICAgICByZXR1cm4gW21v
ZGVsLnRvX2NvbW1pdCgpIGZvciBtb2RlbCBpbiBzZWxmLmNhc3NhbmRyYS5zZWxlY3RfZnJvbV90
YWJsZSgKLSAgICAgICAgICAgICAgICBzZWxmLkNvbW1pdEJ5VXVpZERlc2NlbmRpbmcuX190YWJs
ZV9uYW1lX18sIGxpbWl0PWxpbWl0LAotICAgICAgICAgICAgICAgIHJlcG9zaXRvcnlfaWQ9cmVw
b3NpdG9yeV9pZCwgYnJhbmNoPWJyYW5jaCwKKyAgICAgICAgICAgIHJlc3VsdCA9IFttb2RlbC50
b19jb21taXQoKSBmb3IgbW9kZWwgaW4gc2VsZi5jYXNzYW5kcmEuc2VsZWN0X2Zyb21fdGFibGUo
CisgICAgICAgICAgICAgICAgc2VsZi5Db21taXRCeVV1aWRBc2NlbmRpbmcuX190YWJsZV9uYW1l
X18gaWYgdXNlX2FzY2VuZGluZyBlbHNlIHNlbGYuQ29tbWl0QnlVdWlkRGVzY2VuZGluZy5fX3Rh
YmxlX25hbWVfXywKKyAgICAgICAgICAgICAgICBsaW1pdD1saW1pdCwgcmVwb3NpdG9yeV9pZD1y
ZXBvc2l0b3J5X2lkLCBicmFuY2g9YnJhbmNoLAogICAgICAgICAgICAgICAgIHV1aWRfX2d0ZT1i
ZWdpbiwKICAgICAgICAgICAgICAgICB1dWlkX19sdGU9ZW5kLAogICAgICAgICAgICAgKV0KKyAg
ICAgICAgICAgIGlmIHVzZV9hc2NlbmRpbmc6CisgICAgICAgICAgICAgICAgcmVzdWx0LnJldmVy
c2UoKQorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAogCiAgICAgZGVmIF9hZGphY2VudF9jb21t
aXQoc2VsZiwgY29tbWl0LCBhc2NlbmRpbmc9VHJ1ZSk6CiAgICAgICAgIGlmIG5vdCBpc2luc3Rh
bmNlKGNvbW1pdCwgQ29tbWl0KToKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3Vs
dHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL2NvbW1pdF9jb250ZXh0X3VuaXR0ZXN0LnB5Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5
L21vZGVsL2NvbW1pdF9jb250ZXh0X3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyODA4NjUpCisrKyBU
b29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC9jb21t
aXRfY29udGV4dF91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMTgwLDYgKzE4MCw1OCBA
QCBjbGFzcyBDb21taXRDb250ZXh0VGVzdChXYWl0Rm9yRG9ja2VyVGVzCiAgICAgICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGNvbW1pdHMsIHNlbGYuZGF0YWJhc2UuZmluZF9jb21taXRzX2luX3Jh
bmdlKHJlcG9zaXRvcnlfaWQ9J3dlYmtpdCcsIGJyYW5jaD0nbWFpbicsIGJlZ2luPWNvbW1pdHNb
LTFdLCBlbmQ9Y29tbWl0c1swXSkpCiAKICAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tf
aWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1N
b2NrQ2Fzc2FuZHJhQ29udGV4dCkKKyAgICBkZWYgdGVzdF9zdGFzaF9jb21taXRzX2JlZm9yZShz
ZWxmLCByZWRpcz1TdHJpY3RSZWRpcywgY2Fzc2FuZHJhPUNhc3NhbmRyYUNvbnRleHQpOgorICAg
ICAgICB3aXRoIE1vY2tNb2RlbEZhY3Rvcnkuc2FmYXJpKCksIE1vY2tNb2RlbEZhY3Rvcnkud2Vi
a2l0KCk6CisgICAgICAgICAgICBzZWxmLmluaXRfZGF0YWJhc2UocmVkaXM9cmVkaXMsIGNhc3Nh
bmRyYT1jYXNzYW5kcmEpCisgICAgICAgICAgICBzZWxmLmFkZF9hbGxfY29tbWl0c190b19kYXRh
YmFzZSgpCisKKyAgICAgICAgICAgIGNvbW1pdHMgPSBbCisgICAgICAgICAgICAgICAgc2VsZi5z
dGFzaF9yZXBvc2l0b3J5LmNvbW1pdChyZWY9JzFhYmUyNWI0NDNlOScpLAorICAgICAgICAgICAg
ICAgIHNlbGYuc3Rhc2hfcmVwb3NpdG9yeS5jb21taXQocmVmPSdmZmY4M2JiMmQ5MTcnKSwKKyAg
ICAgICAgICAgICAgICBzZWxmLnN0YXNoX3JlcG9zaXRvcnkuY29tbWl0KHJlZj0nOWI4MzExZjI1
YTc3JyksCisgICAgICAgICAgICBdCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1p
dHMsIHNlbGYuZGF0YWJhc2UuZmluZF9jb21taXRzX2luX3JhbmdlKHJlcG9zaXRvcnlfaWQ9J3Nh
ZmFyaScsIGJyYW5jaD0nbWFpbicsIGVuZD1jb21taXRzWzBdLCBsaW1pdD0zKSkKKworICAgIEBX
YWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3Ry
aWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQorICAgIGRlZiB0
ZXN0X3N2bl9jb21taXRzX2JlZm9yZShzZWxmLCByZWRpcz1TdHJpY3RSZWRpcywgY2Fzc2FuZHJh
PUNhc3NhbmRyYUNvbnRleHQpOgorICAgICAgICB3aXRoIE1vY2tNb2RlbEZhY3Rvcnkuc2FmYXJp
KCksIE1vY2tNb2RlbEZhY3Rvcnkud2Via2l0KCk6CisgICAgICAgICAgICBzZWxmLmluaXRfZGF0
YWJhc2UocmVkaXM9cmVkaXMsIGNhc3NhbmRyYT1jYXNzYW5kcmEpCisgICAgICAgICAgICBzZWxm
LmFkZF9hbGxfY29tbWl0c190b19kYXRhYmFzZSgpCisKKyAgICAgICAgICAgIGNvbW1pdHMgPSBb
CisgICAgICAgICAgICAgICAgc2VsZi5zdm5fcmVwb3NpdG9yeS5jb21taXQocmVmPTYpLAorICAg
ICAgICAgICAgICAgIHNlbGYuc3ZuX3JlcG9zaXRvcnkuY29tbWl0KHJlZj00KSwKKyAgICAgICAg
ICAgICAgICBzZWxmLnN2bl9yZXBvc2l0b3J5LmNvbW1pdChyZWY9MiksCisgICAgICAgICAgICBd
CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1pdHMsIHNlbGYuZGF0YWJhc2UuZmlu
ZF9jb21taXRzX2luX3JhbmdlKHJlcG9zaXRvcnlfaWQ9J3dlYmtpdCcsIGJyYW5jaD0nbWFpbics
IGVuZD1jb21taXRzWzBdLCBsaW1pdD0zKSkKKworICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2Uu
bW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2Fu
ZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQorICAgIGRlZiB0ZXN0X3N0YXNoX2NvbW1pdHNfYWZ0
ZXIoc2VsZiwgcmVkaXM9U3RyaWN0UmVkaXMsIGNhc3NhbmRyYT1DYXNzYW5kcmFDb250ZXh0KToK
KyAgICAgICAgd2l0aCBNb2NrTW9kZWxGYWN0b3J5LnNhZmFyaSgpLCBNb2NrTW9kZWxGYWN0b3J5
LndlYmtpdCgpOgorICAgICAgICAgICAgc2VsZi5pbml0X2RhdGFiYXNlKHJlZGlzPXJlZGlzLCBj
YXNzYW5kcmE9Y2Fzc2FuZHJhKQorICAgICAgICAgICAgc2VsZi5hZGRfYWxsX2NvbW1pdHNfdG9f
ZGF0YWJhc2UoKQorCisgICAgICAgICAgICBjb21taXRzID0gWworICAgICAgICAgICAgICAgIHNl
bGYuc3Rhc2hfcmVwb3NpdG9yeS5jb21taXQocmVmPScxYWJlMjViNDQzZTknKSwKKyAgICAgICAg
ICAgICAgICBzZWxmLnN0YXNoX3JlcG9zaXRvcnkuY29tbWl0KHJlZj0nZmZmODNiYjJkOTE3Jyks
CisgICAgICAgICAgICAgICAgc2VsZi5zdGFzaF9yZXBvc2l0b3J5LmNvbW1pdChyZWY9JzliODMx
MWYyNWE3NycpLAorICAgICAgICAgICAgXQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChj
b21taXRzLCBzZWxmLmRhdGFiYXNlLmZpbmRfY29tbWl0c19pbl9yYW5nZShyZXBvc2l0b3J5X2lk
PSdzYWZhcmknLCBicmFuY2g9J21haW4nLCBiZWdpbj1jb21taXRzWy0xXSwgbGltaXQ9MykpCisK
KyAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9
RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKKyAg
ICBkZWYgdGVzdF9zdm5fY29tbWl0c19hZnRlcihzZWxmLCByZWRpcz1TdHJpY3RSZWRpcywgY2Fz
c2FuZHJhPUNhc3NhbmRyYUNvbnRleHQpOgorICAgICAgICB3aXRoIE1vY2tNb2RlbEZhY3Rvcnku
c2FmYXJpKCksIE1vY2tNb2RlbEZhY3Rvcnkud2Via2l0KCk6CisgICAgICAgICAgICBzZWxmLmlu
aXRfZGF0YWJhc2UocmVkaXM9cmVkaXMsIGNhc3NhbmRyYT1jYXNzYW5kcmEpCisgICAgICAgICAg
ICBzZWxmLmFkZF9hbGxfY29tbWl0c190b19kYXRhYmFzZSgpCisKKyAgICAgICAgICAgIGNvbW1p
dHMgPSBbCisgICAgICAgICAgICAgICAgc2VsZi5zdm5fcmVwb3NpdG9yeS5jb21taXQocmVmPTYp
LAorICAgICAgICAgICAgICAgIHNlbGYuc3ZuX3JlcG9zaXRvcnkuY29tbWl0KHJlZj00KSwKKyAg
ICAgICAgICAgICAgICBzZWxmLnN2bl9yZXBvc2l0b3J5LmNvbW1pdChyZWY9MiksCisgICAgICAg
ICAgICBdCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1pdHMsIHNlbGYuZGF0YWJh
c2UuZmluZF9jb21taXRzX2luX3JhbmdlKHJlcG9zaXRvcnlfaWQ9J3dlYmtpdCcsIGJyYW5jaD0n
bWFpbicsIGJlZ2luPWNvbW1pdHNbLTFdLCBsaW1pdD0zKSkKKworICAgIEBXYWl0Rm9yRG9ja2Vy
VGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1v
Y2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQogICAgIGRlZiB0ZXN0X2NvbW1pdF9m
cm9tX3N0YXNoX3JlcG8oc2VsZiwgcmVkaXM9U3RyaWN0UmVkaXMsIGNhc3NhbmRyYT1DYXNzYW5k
cmFDb250ZXh0KToKICAgICAgICAgd2l0aCBNb2NrTW9kZWxGYWN0b3J5LnNhZmFyaSgpLCBNb2Nr
TW9kZWxGYWN0b3J5LndlYmtpdCgpOgogICAgICAgICAgICAgc2VsZi5pbml0X2RhdGFiYXNlKHJl
ZGlzPXJlZGlzLCBjYXNzYW5kcmE9Y2Fzc2FuZHJhKQpJbmRleDogVG9vbHMvU2NyaXB0cy9saWJy
YXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy90ZW1wbGF0ZXMvZG9jdW1lbnRhdGlv
bi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5
L3Jlc3VsdHNkYnB5L3ZpZXcvdGVtcGxhdGVzL2RvY3VtZW50YXRpb24uaHRtbAkocmV2aXNpb24g
MjgwODY1KQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2Ri
cHkvdmlldy90ZW1wbGF0ZXMvZG9jdW1lbnRhdGlvbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC01
NiwxMCArNTYsOSBAQCBmdW5jdGlvbiBkb2N1bWVudEVuZHBvaW50KGVuZHBvaW50LCBhY3RpCiAg
ICAgICAgICAgICAgICAgICAgICR7cXVlcmllcy5tYXAoKHF1ZXJ5KSA9PiB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gYDxkaXYgY2xhc3M9ImJhZGdlIj4KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dCBibG9jayI+Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0idGV4dCB0aW55IiBocmVmPSIjUXVlcnkt
UGFyYW1ldGVycy0ke3F1ZXJ5fSI+JHtxdWVyeX08L2E+CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA8YSBjbGFzcz0idGV4dCB0aW55IiBocmVmPSIjUXVlcnktUGFyYW1ldGVy
cy0ke3F1ZXJ5LnJlcGxhY2UoL1xzL2csICctJyl9Ij4ke3F1ZXJ5fTwvYT4KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PC9kaXY+YDsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vcmV0dXJuIGA8YnV0dG9uIGNsYXNz
PSJidXR0b24iIG9uY2xpY2s9IndpbmRvdy5sb2NhdGlvbi5ocmVmID0gJy9kb2N1bWVudGF0aW9u
I1F1ZXJ5LVBhcmFtZXRlcnMtJHtxdWVyeX0nOyI+JHtxdWVyeX08L2J1dHRvbj5gCiAgICAgICAg
ICAgICAgICAgICAgIH0pLmpvaW4oJycpfQogICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAg
ICAgICAgPC9kaXY+CkBAIC0zNTksNiArMzU4LDIwIEBAIGNvbnN0IGRvY3VtZW50YXRpb24gPSB7
CiAgICAgICAgICAgICAgICAgICAgIGB3aGVyZSAmbHRjb25maWd1cmF0aW9uLW9iamVjdC1hJmd0
IGFuZCAmbHRjb25maWd1cmF0aW9uLW9iamVjdC1iJmd0IGFyZSBib3RoICR7bG9jYWxMaW5rKFsn
UXVlcnkgUGFyYW1ldGVycycsICdDb25maWd1cmF0aW9uJ10sICdjb25maWd1cmF0aW9uIG9iamVj
dHMnKX0nIGFuZCAmbHRydW4tYTEmZ3QsICZsdHJ1bi1hMiZndCwgJmx0cnVuLWIxJmd0IGFuZCAm
bHRydW4tYjImZ3QgYXJlIGFsbCB0aGUgYWZmb3JtZW50aW9uZWQgc2luZ2xlIHRlc3QgcmVzdWx0
IGRpY3Rpb25hcnkuYCwKICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgKSwKKyAgICAg
ICAgICAgIGRvY3VtZW50RW5kcG9pbnQoCisgICAgICAgICAgICAgICAgJy9hcGkvcmVzdWx0cy1z
dW1tYXJ5LyZsdHN1aXRlJmd0LyZsdHRlc3QmZ3QnLAorICAgICAgICAgICAgICAgIFsnR0VUJ10s
CisgICAgICAgICAgICAgICAgWydCcmFuY2gnLCAnQ29uZmlndXJhdGlvbicsICdJbmNsdWRlIEV4
cGVjdGF0aW9ucycsICdMaW1pdCcsICdSZXBvc2l0b3J5JywgJ1JlZicsICdVVUlEJ10sCisgICAg
ICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICBgQ29tcHV0ZSB0aGUgY29tYmluZWQg
cmVzdWx0cyBvZiBhIGdpdmVuIHRlc3QgYnkgYWdncmVnYXRpbmcgcmVzdWx0cyBmcm9tIGEgc2V0
IG9mIHJ1bnMgc3Vycm91bmRpbmcgYSBzcGVjaWZpYyBjb21taXQ6YCwKKyAgICAgICAgICAgICAg
ICAgICAgY29kZUJsb2NrKCd7XG4nICsKKyAgICAgICAgICAgICAgICAgICAgJyAgICAicGFzcyI6
IDgwLFxuJyArCisgICAgICAgICAgICAgICAgICAgICcgICAgImZhaWwiOiAxNSxcbicgKworICAg
ICAgICAgICAgICAgICAgICAnICAgICJjcmFzaCI6IDUsXG4nICsKKyAgICAgICAgICAgICAgICAg
ICAgJ30nKSwKKyAgICAgICAgICAgICAgICAgICAgYFRoZXNlIHJlc3VsdHMgYXJlIGFsd2F5cyB0
aGUgd2VpZ2h0ZWQgYWdncmVnYXRpb24gb2YgcmVzdWx0cyBmb3IgdGhlIHByb3ZpZGVkIGNvbmZp
Z3VyYXRpb25zLCB3aXRoIHdlaWdodHMgdG8gYmUgdW5kZXJzdG9vZCBhcyBwZXJjZW50IGxpa2xp
aG9vZCBhIHRlc3Qgd2lsbCBoYXZlIGEgY2VydGFpbiByZXN1bHQgb24gYSBnaXZlbiByZXZpc2lv
bi5gLAorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICApLAogICAgICAgICBdLCAnRmFp
bHVyZSBBbmFseXNpcyc6IFsKICAgICAgICAgICAgIGBSZXN1bHRzIGRhdGFiYXNlcyBwcm92aWRl
IGEgZmV3IEFQSXMgdG8gYXNzaXN0IGluIHRoZSBpbnZlc3RpZ2F0aW9uIG9mIHRlc3QgZmFpbHVy
ZXMuIFRoZXNlIGFuYWx5c2lzIGVuZHBvaW50cyBhZ2dyZWdhdGUgZGF0YSBmcm9tIG11bHRpcGxl
IHRlc3QgcnVucyBmb3IgY29uc3VtcHRpb24gYnkgYm90aCBodW1hbnMgYW5kIGF1dG9tYXRlZCBz
eXN0ZW1zLmAsCiAgICAgICAgICAgICBkb2N1bWVudEVuZHBvaW50KApAQCAtNTA4LDYgKzUyMSwx
MCBAQCBjb25zdCBkb2N1bWVudGF0aW9uID0gewogICAgICAgICAgICAgY29kZUJsb2NrKCdyZWNl
bnQ9RmFsc2UnKSwKICAgICAgICAgICAgIGB0byB5b3VyIHF1ZXJ5LiBUaGUgZG93bnNpZGUgb2Yg
c2VhcmNoaW5nIGFsbCBjb25maWd1cmF0aW9ucyBpcyB0aGF0IHRoZSBkZWZhdWx0IGJlaGF2aW9y
IG9mIHNlYXJjaGluZyBhbGwgcmVjZW50IGNvbmZpZ3VyYXRpb25zIGlmIG5vIHF1ZXJ5IHBhcmFt
ZXRlcnMgYXJlIHByb3ZpZGVkIGlzIGRpc2FibGVkIGJlY2F1c2UgdGhlIHJlc3VsdHMgZGF0YWJh
c2UgY2Fubm90IHNlYXJjaCBieSBhbiB1bmJvdW5kZWQgbnVtYmVyIG9mIGNvbmZpZ3VyYXRpb25z
LmAsCiAgICAgICAgIF0sCisgICAgICAgICdJbmNsdWRlIEV4cGVjdGF0aW9ucyc6IFsKKyAgICAg
ICAgICAgIGBTb21lIGVuZHBvaW50cyByZXR1cm4gZGlmZmVyZW50IHJlc3VsdHMgaWYgdGhlIGNh
bGxlciByZXF1ZXN0cyBleHBlY3RhdGlvbnMgYmUgdGFrZW4gaW50byBjb25zaWRlcmF0aW9uLiBC
eSBkZWZhdWx0LCB0aGlzIGZsYWcgaXMgZGlzYWJsZWQsIGJ1dCBtYXkgYmUgZW5hYmxlZCBvbiBz
dXBwb3J0aW5nIGVucG9pbnRzIHdpdGggdGhpcyBxdWVyeTpgLAorICAgICAgICAgICAgY29kZUJs
b2NrKCdpbmNsdWRlX2V4cGVjdGF0aW9ucz1GYWxzZScpLAorICAgICAgICBdLAogICAgICAgICAn
TGltaXQnOiBbCiAgICAgICAgICAgICBgVGhlIHVuZGVybHlpbmcgYXJjaGl0ZWN0dXJlIG9mIHRo
ZSByZXN1bHRzIGRhdGFiYXNlIGRvZXMgbm90IGFsbG93IHVubGltaXRlZCBxdWVyeSBzaXplcy4g
TW9zdCBlbmRwb2ludHMgYWNjZXB0IGEgbGltaXQgcXVlcnkgd2hpY2ggbG9va3MgbGlrZSB0aGlz
OmAsCiAgICAgICAgICAgICBjb2RlQmxvY2soJ2xpbWl0PTE1MCcpLAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>