<?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>201734</bug_id>
          
          <creation_ts>2019-09-12 13:00:34 -0700</creation_ts>
          <short_desc>results.webkit.org: Shard result archives</short_desc>
          <delta_ts>2019-09-16 17:15:27 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jonathan Bedard">jbedard</reporter>
          <assigned_to name="Jonathan Bedard">jbedard</assigned_to>
          <cc>aakash_jain</cc>
    
    <cc>ap</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dewei_zhu</cc>
    
    <cc>kocsen_chung</cc>
    
    <cc>repstein</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>1570340</commentid>
    <comment_count>0</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2019-09-12 13:00:34 -0700</bug_when>
    <thetext>We start having issues as our result archives approach 50 MB.

Note that with this change, we will lose existing result archives, but we&apos;re still storing them on Buildbot, so that&apos;s not a big deal.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570355</commentid>
    <comment_count>1</comment_count>
      <attachid>378672</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2019-09-12 13:32:48 -0700</bug_when>
    <thetext>Created attachment 378672
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570376</commentid>
    <comment_count>2</comment_count>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2019-09-12 14:37:24 -0700</bug_when>
    <thetext>(In reply to Jonathan Bedard from comment #0)
&gt; We start having issues as our result archives approach 50 MB.
What kind of issues? Can you elaborate more on the problem and the fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570405</commentid>
    <comment_count>3</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2019-09-12 15:39:43 -0700</bug_when>
    <thetext>(In reply to Aakash Jain from comment #2)
&gt; (In reply to Jonathan Bedard from comment #0)
&gt; &gt; We start having issues as our result archives approach 50 MB.
&gt; What kind of issues? Can you elaborate more on the problem and the fix.

&apos;Issues&apos; meaning the writes would fail. The solution I&apos;ve implemented here is basically the one suggested in https://cwiki.apache.org/confluence/display/CASSANDRA2/CassandraLimitations. Instead of placing the entirety of the archive in a single row, we split the archive into multiple rows, each with a blob of no more than 10 MB.

Added bonus, if we wanted to change the size of the blob shards in the future, we can just leave the existing data as is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570442</commentid>
    <comment_count>4</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2019-09-12 17:38:14 -0700</bug_when>
    <thetext>Have you considered storing these in S3?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570571</commentid>
    <comment_count>5</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2019-09-13 07:32:54 -0700</bug_when>
    <thetext>(In reply to Alexey Proskuryakov from comment #4)
&gt; Have you considered storing these in S3?

I have not.

It&apos;s probably the case that S3 is better suited for this sort of thing, but the results database doesn&apos;t have an S3 dependency at the moment, so I&apos;m a bit reluctant to add one. If we were storing these in S3, I think we would also have to solve the key-rotation problem for test archives originating from Apple&apos;s internal infrastructure, which we know is not a trivial problem to solve.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570675</commentid>
    <comment_count>6</comment_count>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2019-09-13 12:21:29 -0700</bug_when>
    <thetext>(In reply to Jonathan Bedard from comment #5)
&gt; If we were storing these in S3, I think we would also have to solve the key-rotation problem for test archives originating from Apple&apos;s internal infrastructure, which we know is not a trivial problem to solve.
I believe we have already solved that problem with EWS and build.webkit.org. The archive is uploaded by the bots to the build-master, and build-master uploads to S3. Only build-master has the required authentication to upload to S3.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570677</commentid>
    <comment_count>7</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2019-09-13 12:31:50 -0700</bug_when>
    <thetext>(In reply to Aakash Jain from comment #6)
&gt; (In reply to Jonathan Bedard from comment #5)
&gt; &gt; If we were storing these in S3, I think we would also have to solve the key-rotation problem for test archives originating from Apple&apos;s internal infrastructure, which we know is not a trivial problem to solve.
&gt; I believe we have already solved that problem with EWS and build.webkit.org.
&gt; The archive is uploaded by the bots to the build-master, and build-master
&gt; uploads to S3. Only build-master has the required authentication to upload
&gt; to S3.

That&apos;s the authentication problem, we would need in-place encryption with rotating keys.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570692</commentid>
    <comment_count>8</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2019-09-13 13:44:48 -0700</bug_when>
    <thetext>Why do we need encryption?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570695</commentid>
    <comment_count>9</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2019-09-13 13:51:00 -0700</bug_when>
    <thetext>(In reply to Alexey Proskuryakov from comment #8)
&gt; Why do we need encryption?

We would need in-place encryption to use S3 for storing Apple Internal test results, at least according to the guidance we have recently been given for storing similar archives.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570720</commentid>
    <comment_count>10</comment_count>
      <attachid>378672</attachid>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2019-09-13 15:20:50 -0700</bug_when>
    <thetext>Comment on attachment 378672
Patch

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

&gt; Tools/resultsdbpy/resultsdbpy/model/archive_context.py:51
&gt; +    SHARD_SIZE = 10 * 1000 * 1000  # Shards of 10 MB

Would be good to elaborate in the comment here that this is because of Cassandra limitation.

&gt; Tools/resultsdbpy/resultsdbpy/model/archive_context.py:52
&gt; +    MEMORY_CAP = 2 * 1000 * 1000 * 1000  # Don&apos;t allow more than 2 gigs of archives in memory at one time

MAX_MEMORY or MEMORY_LIMIT might be more clear.

&gt; Tools/resultsdbpy/resultsdbpy/model/archive_context.py:54
&gt; +    class ArchiveMetaByCommit(ClusteredByConfiguration):

please rename &apos;meta&apos; to &apos;metadata&apos; everywhere.

&gt; Tools/resultsdbpy/resultsdbpy/model/archive_context.py:61
&gt; +        meta = columns.Text(required=True)

Ditto, &apos;meta&apos; =&gt; &apos;metadata&apos;.

I am not sure if it&apos;s efficient to combine two columns (hash and size) into one (as json) here. Probably two separate columns (hash and size) would be more clear and efficient. 
For relational database it violates first normal form https://en.wikipedia.org/wiki/First_normal_form probably doesn&apos;t matter much in Cassandra though.

&gt; Tools/resultsdbpy/resultsdbpy/model/archive_context.py:72
&gt; +    class ArchiveShardByCommit(Model):

what do you think about naming it ArchiveDataByCommit? Not sure if the word &apos;shard&apos; is immediately obvious to everyone. Or how about &apos;chunk&apos; instead of &apos;shard&apos;.

&gt; Tools/resultsdbpy/resultsdbpy/model/archive_context.py:74
&gt; +        digest = columns.Text(partition_key=True, required=True)

please &apos;digest&apos; to &apos;hash&apos; everywhere.

&gt; Tools/resultsdbpy/resultsdbpy/model/archive_context.py:76
&gt; +        shard = columns.Blob(required=True)

can consider renaming shard to &apos;chunk&apos; or &apos;data&apos;.

&gt; Tools/resultsdbpy/resultsdbpy/model/archive_context.py:124
&gt; +                index = 0

Would be nice to add a comment here that we are sharding the archive here.

&gt; Tools/resultsdbpy/resultsdbpy/model/archive_context.py:126
&gt; +                digest = hashlib.md5()

&apos;digest&apos; =&gt; &apos;hash&apos;

&gt; Tools/resultsdbpy/resultsdbpy/model/archive_context.py:132
&gt; +                        digest=digest.hexdigest(), index=index,

please do .hexdigest() above in line 127.

&gt; Tools/resultsdbpy/resultsdbpy/model/archive_context.py:179
&gt; +                            raise RuntimeError(&apos;Archive metadata does not contain a key&apos;)

key or hash?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570724</commentid>
    <comment_count>11</comment_count>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2019-09-13 15:42:42 -0700</bug_when>
    <thetext>I am ok with this fix. However, I would encourage you to explore the S3 approach as well. The solution we use here could also be used for EWS and build.webkit.org test archives.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570763</commentid>
    <comment_count>12</comment_count>
      <attachid>378764</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2019-09-13 17:05:57 -0700</bug_when>
    <thetext>Created attachment 378764
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1571171</commentid>
    <comment_count>13</comment_count>
      <attachid>378764</attachid>
    <who name="">dewei_zhu</who>
    <bug_when>2019-09-16 10:39:47 -0700</bug_when>
    <thetext>Comment on attachment 378764
Patch

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

&gt; Tools/resultsdbpy/resultsdbpy/model/archive_context.py:127
&gt; +                index = 0

Is &apos;index&apos; primary key per partition?

&gt; Tools/resultsdbpy/resultsdbpy/model/archive_context.py:129
&gt; +                digest = hashlib.md5(archive.getvalue()).hexdigest()

Is MD5 good enough?

&gt; Tools/resultsdbpy/resultsdbpy/model/archive_context.py:180
&gt; +                            raise RuntimeError(MEMORY_ERROR)

Can we sum size to ensure we won&apos;t hit memory limit before doing any query from ArchiveChunks? Maybe we can do all sanity checks (including the digest existence check) ahead?
Also, do you think it&apos;s necessary to add a unit test the memory limit gets hit by temporarily modifying the limit?

&gt; Tools/resultsdbpy/resultsdbpy/model/archive_context.py:193
&gt; +                        rows = sorted(rows, key=lambda row: row.index)

Can we get the rows ordered when we query it?

&gt; Tools/resultsdbpy/resultsdbpy/model/archive_context.py:208
&gt; +                        if not result.get(config):
&gt; +                            result[config] = []

Maybe cleaner if we use setdefault here?

&gt; Tools/resultsdbpy/resultsdbpy/model/archive_context_unittest.py:106
&gt; +        print(len(buff.getvalue()))

Do we need `print` here or this is just for debugging purpose?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1571231</commentid>
    <comment_count>14</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2019-09-16 13:15:36 -0700</bug_when>
    <thetext>(In reply to dewei_zhu from comment #13)
&gt; Comment on attachment 378764 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=378764&amp;action=review
&gt; 
&gt; &gt; Tools/resultsdbpy/resultsdbpy/model/archive_context.py:127
&gt; &gt; +                index = 0
&gt; 
&gt; Is &apos;index&apos; primary key per partition?

Yes...it&apos;s basically a shards order in the archive.

&gt; 
&gt; &gt; Tools/resultsdbpy/resultsdbpy/model/archive_context.py:129
&gt; &gt; +                digest = hashlib.md5(archive.getvalue()).hexdigest()
&gt; 
&gt; Is MD5 good enough?

Yes, Aakash and I talked about this. We can change it to a secure hash, but engineering a hash collision doesn&apos;t get get you anything, and you would have to have the API key to upload an archive anyways. Engineering a hash collision would just replace the existing archive with that hash.

&gt; 
&gt; &gt; Tools/resultsdbpy/resultsdbpy/model/archive_context.py:180
&gt; &gt; +                            raise RuntimeError(MEMORY_ERROR)
&gt; 
&gt; Can we sum size to ensure we won&apos;t hit memory limit before doing any query
&gt; from ArchiveChunks? Maybe we can do all sanity checks (including the digest
&gt; existence check) ahead?
&gt; Also, do you think it&apos;s necessary to add a unit test the memory limit gets
&gt; hit by temporarily modifying the limit?
&gt; 
&gt; &gt; Tools/resultsdbpy/resultsdbpy/model/archive_context.py:193
&gt; &gt; +                        rows = sorted(rows, key=lambda row: row.index)
&gt; 
&gt; Can we get the rows ordered when we query it?

I need to verify, but they probably already are sorted....so we might not need that.

&gt; 
&gt; &gt; Tools/resultsdbpy/resultsdbpy/model/archive_context.py:208
&gt; &gt; +                        if not result.get(config):
&gt; &gt; +                            result[config] = []
&gt; 
&gt; Maybe cleaner if we use setdefault here?
&gt; 
&gt; &gt; Tools/resultsdbpy/resultsdbpy/model/archive_context_unittest.py:106
&gt; &gt; +        print(len(buff.getvalue()))
&gt; 
&gt; Do we need `print` here or this is just for debugging purpose?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1571302</commentid>
    <comment_count>15</comment_count>
      <attachid>378905</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2019-09-16 15:51:52 -0700</bug_when>
    <thetext>Created attachment 378905
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1571305</commentid>
    <comment_count>16</comment_count>
      <attachid>378905</attachid>
    <who name="">dewei_zhu</who>
    <bug_when>2019-09-16 15:55:10 -0700</bug_when>
    <thetext>Comment on attachment 378905
Patch

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

&gt; Tools/resultsdbpy/resultsdbpy/model/archive_context.py:181
&gt; +                    if not value.get(&apos;digest&apos;):
&gt; +                        raise RuntimeError(&apos;Archive metadata does not contain a hash&apos;)

We can also move this to above for loop so that we fail early with lightweight.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1571311</commentid>
    <comment_count>17</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2019-09-16 15:59:17 -0700</bug_when>
    <thetext>(In reply to dewei_zhu from comment #16)
&gt; Comment on attachment 378905 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=378905&amp;action=review
&gt; 
&gt; &gt; Tools/resultsdbpy/resultsdbpy/model/archive_context.py:181
&gt; &gt; +                    if not value.get(&apos;digest&apos;):
&gt; &gt; +                        raise RuntimeError(&apos;Archive metadata does not contain a hash&apos;)
&gt; 
&gt; We can also move this to above for loop so that we fail early with
&gt; lightweight.

Actually, we should just ignore it if we don&apos;t have a digest (note: that shouldn&apos;t be possible anyways, just being defensive)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1571312</commentid>
    <comment_count>18</comment_count>
      <attachid>378907</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2019-09-16 15:59:44 -0700</bug_when>
    <thetext>Created attachment 378907
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1571314</commentid>
    <comment_count>19</comment_count>
      <attachid>378907</attachid>
    <who name="Russell Epstein">repstein</who>
    <bug_when>2019-09-16 16:10:36 -0700</bug_when>
    <thetext>Comment on attachment 378907
Patch for landing

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

&gt; Tools/resultsdbpy/resultsdbpy/model/archive_context.py:51
&gt; +    CHUNK_SIZE = 10 * 1000 * 1000  # Cassandra doesn&apos;t do well with data blobs of more than 10 MB

Shouldn&apos;t this be 1024 instead?

&gt; Tools/resultsdbpy/resultsdbpy/model/archive_context.py:53
&gt;  

Ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1571316</commentid>
    <comment_count>20</comment_count>
      <attachid>378908</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2019-09-16 16:11:10 -0700</bug_when>
    <thetext>Created attachment 378908
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1571344</commentid>
    <comment_count>21</comment_count>
      <attachid>378908</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-09-16 17:13:22 -0700</bug_when>
    <thetext>Comment on attachment 378908
Patch for landing

Clearing flags on attachment: 378908

Committed r249932: &lt;https://trac.webkit.org/changeset/249932&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1571345</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-09-16 17:13:24 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1571346</commentid>
    <comment_count>23</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-09-16 17:15:27 -0700</bug_when>
    <thetext>&lt;rdar://problem/55421685&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378672</attachid>
            <date>2019-09-12 13:32:48 -0700</date>
            <delta_ts>2019-09-13 17:05:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201734-20190912133247.patch</filename>
            <type>text/plain</type>
            <size>12942</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI0OTgxNSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDMxIEBACisyMDE5LTA5LTEyICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICByZXN1bHRzLndlYmtpdC5vcmc6IFNoYXJkIHJlc3VsdCBhcmNoaXZlcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAxNzM0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2Fzc2FuZHJh
IGFkdmVydGlzZXMgYmVpbmcgYWJsZSB0byBzdG9yZSB1cCB0byAyIEdCIGluIGEgc2luZ2xlIGJs
b2Itc3RvcmFnZSByb3cuCisgICAgICAgIEluIHByYWN0aWNlLCB0aGlzIHVzdWFsbHkgZG9lc24n
dCB3b3JrIGFjY29yZGluZyB0byB0aGUgQ2Fzc2FuZHJhIGRldmVsb3BlcnMsCisgICAgICAgIGxh
cmdlIGJsb2JzIHNob3VsZCBiZSBicm9rZW4gdXAgaW50byBzaGFyZHMgb2YsIGF0IG1vc3QsIDEw
IE1CLgorCisgICAgICAgICogcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvYXJjaGl2ZV9j
b250ZXh0LnB5OgorICAgICAgICAoQXJjaGl2ZUNvbnRleHQpOgorICAgICAgICAoQXJjaGl2ZUNv
bnRleHQuQXJjaGl2ZU1ldGFCeUNvbW1pdCk6IFBvaW50IHRvIHRoZSBhcmNoaXZlIHNoYXJkcyBi
eSBoYXNoLgorICAgICAgICAoQXJjaGl2ZUNvbnRleHQuQXJjaGl2ZU1ldGFCeUNvbW1pdC51bnBh
Y2spOgorICAgICAgICAoQXJjaGl2ZUNvbnRleHQuQXJjaGl2ZVNoYXJkQnlDb21taXQpOiBTdG9y
ZSBhcmNoaXZlIHNoYXJkcywgaW5kZXhlZCBieSBoYXNoLgorICAgICAgICAoQXJjaGl2ZUNvbnRl
eHQuX19pbml0X18pOgorICAgICAgICAoQXJjaGl2ZUNvbnRleHQucmVnaXN0ZXIpOiBXaGVuIHNh
dmluZyBhcmNoaXZlcywgc2F2ZSBhIHJlZmVyZW5jZSBoYXNoIGFuZCB0aGVuCisgICAgICAgIHNo
YXJkIHRoZSBhY3R1YWwgYXJjaGl2ZSBkYXRhIGJlZm9yZSBzYXZpbmcuCisgICAgICAgIChBcmNo
aXZlQ29udGV4dC5maW5kX2FyY2hpdmUpOiBTZWFyY2ggZm9yIGFyY2hpdmUgYnkgbWV0YS1kYXRh
LCB0aGVuIHJlY29uc3RydWN0CisgICAgICAgIHRoZSBhcmNoaXZlLiBSYWlzZSBhbiBleGNlcHRp
b24gaWYgd2UgZGV0ZXJtaW5lIHRoYXQgbWVtb3J5IHVzYWdlIGlzIGEgcHJvYmxlbS4KKyAgICAg
ICAgKEFyY2hpdmVDb250ZXh0LkFyY2hpdmVzQnlDb21taXQpOiBEZWxldGVkLgorICAgICAgICAo
QXJjaGl2ZUNvbnRleHQuQXJjaGl2ZXNCeUNvbW1pdC51bnBhY2spOiBEZWxldGVkLgorICAgICAg
ICAqIHJlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL2FyY2hpdmVfY29udGV4dF91bml0dGVz
dC5weToKKyAgICAgICAgKEFyY2hpdmVDb250ZXh0VGVzdC5pbml0X2RhdGFiYXNlKTogQWxsb3cg
Y29uZmlndXJhdGlvbiBhbmQgYXJjaGl2ZSB0byBiZSBzcGVjaWZpZWQuCisgICAgICAgIChBcmNo
aXZlQ29udGV4dFRlc3QpOgorICAgICAgICAoQXJjaGl2ZUNvbnRleHRUZXN0LnRlc3RfbGFyZ2Vf
YXJjaGl2ZSk6IFRlc3QgYXJjaGl2ZSBzaGFyZGluZy4KKwogMjAxOS0wOS0xMiAgQnJhZHkgRWlk
c29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgUERGIGV4cG9ydGluZyBvbiBpT1Mg
c2hvdWxkIGluY2x1ZGUgVVJMIHJlY3RzLgpJbmRleDogVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0
c2RicHkvbW9kZWwvYXJjaGl2ZV9jb250ZXh0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL3Jlc3Vs
dHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL2FyY2hpdmVfY29udGV4dC5weQkocmV2aXNpb24gMjQ5
NjcxKQorKysgVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvYXJjaGl2ZV9jb250
ZXh0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yMSwxMyArMjEsMTggQEAKICMgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
IAogaW1wb3J0IGNhbGVuZGFyCitpbXBvcnQgaGFzaGxpYgogaW1wb3J0IGlvCitpbXBvcnQganNv
bgogaW1wb3J0IHRpbWUKIGltcG9ydCB6aXBmaWxlCiAKIGZyb20gY2Fzc2FuZHJhLmNxbGVuZ2lu
ZSBpbXBvcnQgY29sdW1ucworZnJvbSBjYXNzYW5kcmEuY3FsZW5naW5lLm1vZGVscyBpbXBvcnQg
TW9kZWwKK2Zyb20gY29sbGVjdGlvbnMgaW1wb3J0IE9yZGVyZWREaWN0CiBmcm9tIGRhdGV0aW1l
IGltcG9ydCBkYXRldGltZQogZnJvbSByZXN1bHRzZGJweS5jb250cm9sbGVyLmNvbW1pdCBpbXBv
cnQgQ29tbWl0Citmcm9tIHJlc3VsdHNkYnB5LmNvbnRyb2xsZXIuY29uZmlndXJhdGlvbiBpbXBv
cnQgQ29uZmlndXJhdGlvbgogZnJvbSByZXN1bHRzZGJweS5tb2RlbC5jb21taXRfY29udGV4dCBp
bXBvcnQgQ29tbWl0Q29udGV4dAogZnJvbSByZXN1bHRzZGJweS5tb2RlbC5jb25maWd1cmF0aW9u
X2NvbnRleHQgaW1wb3J0IENsdXN0ZXJlZEJ5Q29uZmlndXJhdGlvbgogZnJvbSByZXN1bHRzZGJw
eS5tb2RlbC51cGxvYWRfY29udGV4dCBpbXBvcnQgVXBsb2FkQ29udGV4dApAQCAtNDMsMjMgKzQ4
LDMzIEBAIGRlZiBfZ2V0X3RpbWUoaW5wdXRfdGltZSk6CiAKIGNsYXNzIEFyY2hpdmVDb250ZXh0
KG9iamVjdCk6CiAgICAgREVGQVVMVF9MSU1JVCA9IDEwCisgICAgU0hBUkRfU0laRSA9IDEwICog
MTAwMCAqIDEwMDAgICMgU2hhcmRzIG9mIDEwIE1CCisgICAgTUVNT1JZX0NBUCA9IDIgKiAxMDAw
ICogMTAwMCAqIDEwMDAgICMgRG9uJ3QgYWxsb3cgbW9yZSB0aGFuIDIgZ2lncyBvZiBhcmNoaXZl
cyBpbiBtZW1vcnkgYXQgb25lIHRpbWUKIAotICAgIGNsYXNzIEFyY2hpdmVzQnlDb21taXQoQ2x1
c3RlcmVkQnlDb25maWd1cmF0aW9uKToKLSAgICAgICAgX190YWJsZV9uYW1lX18gPSAnYXJjaGl2
ZXNfYnlfY29tbWl0JworICAgIGNsYXNzIEFyY2hpdmVNZXRhQnlDb21taXQoQ2x1c3RlcmVkQnlD
b25maWd1cmF0aW9uKToKKyAgICAgICAgX190YWJsZV9uYW1lX18gPSAnYXJjaGl2ZV9tZXRhX2J5
X2NvbW1pdCcKICAgICAgICAgc3VpdGUgPSBjb2x1bW5zLlRleHQocGFydGl0aW9uX2tleT1UcnVl
LCByZXF1aXJlZD1UcnVlKQogICAgICAgICBicmFuY2ggPSBjb2x1bW5zLlRleHQocGFydGl0aW9u
X2tleT1UcnVlLCByZXF1aXJlZD1UcnVlKQogICAgICAgICB1dWlkID0gY29sdW1ucy5CaWdJbnQo
cHJpbWFyeV9rZXk9VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSwgY2x1c3RlcmluZ19vcmRlcj0nREVTQycp
CiAgICAgICAgIHNkayA9IGNvbHVtbnMuVGV4dChwcmltYXJ5X2tleT1UcnVlLCByZXF1aXJlZD1U
cnVlKQogICAgICAgICBzdGFydF90aW1lID0gY29sdW1ucy5CaWdJbnQocHJpbWFyeV9rZXk9VHJ1
ZSwgcmVxdWlyZWQ9VHJ1ZSkKLSAgICAgICAgYXJjaGl2ZSA9IGNvbHVtbnMuQmxvYihyZXF1aXJl
ZD1UcnVlKQorICAgICAgICBtZXRhID0gY29sdW1ucy5UZXh0KHJlcXVpcmVkPVRydWUpCiAKICAg
ICAgICAgZGVmIHVucGFjayhzZWxmKToKICAgICAgICAgICAgIHJldHVybiBkaWN0KAogICAgICAg
ICAgICAgICAgIHV1aWQ9c2VsZi51dWlkLAogICAgICAgICAgICAgICAgIHN0YXJ0X3RpbWU9c2Vs
Zi5zdGFydF90aW1lLAotICAgICAgICAgICAgICAgIGFyY2hpdmU9aW8uQnl0ZXNJTyhzZWxmLmFy
Y2hpdmUpLAorICAgICAgICAgICAgICAgIG1ldGE9anNvbi5sb2FkcyhzZWxmLm1ldGEpLAogICAg
ICAgICAgICAgKQogCisgICAgIyBBY2NvcmRpbmcgdG8gaHR0cHM6Ly9jd2lraS5hcGFjaGUub3Jn
L2NvbmZsdWVuY2UvZGlzcGxheS9DQVNTQU5EUkEyL0Nhc3NhbmRyYUxpbWl0YXRpb25zLCB3ZSBz
aG91bGQgc2hhcmQKKyAgICAjIGxhcmdlIGRhdGEgYmxvYnMuCisgICAgY2xhc3MgQXJjaGl2ZVNo
YXJkQnlDb21taXQoTW9kZWwpOgorICAgICAgICBfX3RhYmxlX25hbWVfXyA9ICdhcmNoaXZlX3No
YXJkX2J5X2NvbW1pdCcKKyAgICAgICAgZGlnZXN0ID0gY29sdW1ucy5UZXh0KHBhcnRpdGlvbl9r
ZXk9VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSkKKyAgICAgICAgaW5kZXggPSBjb2x1bW5zLkludGVnZXIo
cHJpbWFyeV9rZXk9VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSkKKyAgICAgICAgc2hhcmQgPSBjb2x1bW5z
LkJsb2IocmVxdWlyZWQ9VHJ1ZSkKKwogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBhc3NlcnRf
emlwZmlsZShjbHMsIGFyY2hpdmUpOgogICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShhcmNoaXZl
LCBpby5CeXRlc0lPKToKQEAgLTc5LDcgKzk0LDggQEAgY2xhc3MgQXJjaGl2ZUNvbnRleHQob2Jq
ZWN0KToKICAgICAgICAgc2VsZi50dGxfc2Vjb25kcyA9IHR0bF9zZWNvbmRzCiAKICAgICAgICAg
d2l0aCBzZWxmOgotICAgICAgICAgICAgc2VsZi5jYXNzYW5kcmEuY3JlYXRlX3RhYmxlKHNlbGYu
QXJjaGl2ZXNCeUNvbW1pdCkKKyAgICAgICAgICAgIHNlbGYuY2Fzc2FuZHJhLmNyZWF0ZV90YWJs
ZShzZWxmLkFyY2hpdmVNZXRhQnlDb21taXQpCisgICAgICAgICAgICBzZWxmLmNhc3NhbmRyYS5j
cmVhdGVfdGFibGUoc2VsZi5BcmNoaXZlU2hhcmRCeUNvbW1pdCkKICAgICAgICAgICAgIHNlbGYu
Y2Fzc2FuZHJhLmNyZWF0ZV90YWJsZShVcGxvYWRDb250ZXh0LlN1aXRlc0J5Q29uZmlndXJhdGlv
bikKIAogICAgIGRlZiBfX2VudGVyX18oc2VsZik6CkBAIC0xMDQsMTAgKzEyMCwyNSBAQCBjbGFz
cyBBcmNoaXZlQ29udGV4dChvYmplY3QpOgogICAgICAgICAgICAgICAgIHNlbGYuY29uZmlndXJh
dGlvbl9jb250ZXh0Lmluc2VydF9yb3dfd2l0aF9jb25maWd1cmF0aW9uKAogICAgICAgICAgICAg
ICAgICAgICBVcGxvYWRDb250ZXh0LlN1aXRlc0J5Q29uZmlndXJhdGlvbi5fX3RhYmxlX25hbWVf
XywgY29uZmlndXJhdGlvbiwgc3VpdGU9c3VpdGUsIHR0bD10dGwsCiAgICAgICAgICAgICAgICAg
KQorCisgICAgICAgICAgICAgICAgaW5kZXggPSAwCisgICAgICAgICAgICAgICAgc2l6ZSA9IGxl
bihhcmNoaXZlLmdldHZhbHVlKCkpCisgICAgICAgICAgICAgICAgZGlnZXN0ID0gaGFzaGxpYi5t
ZDUoKQorICAgICAgICAgICAgICAgIGRpZ2VzdC51cGRhdGUoYXJjaGl2ZS5nZXR2YWx1ZSgpKQor
ICAgICAgICAgICAgICAgIGFyY2hpdmUuc2VlaygwKQorICAgICAgICAgICAgICAgIHdoaWxlIHNp
emUgPiBpbmRleCAqIHNlbGYuU0hBUkRfU0laRToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5j
YXNzYW5kcmEuaW5zZXJ0X3JvdygKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuQXJjaGl2
ZVNoYXJkQnlDb21taXQuX190YWJsZV9uYW1lX18sCisgICAgICAgICAgICAgICAgICAgICAgICBk
aWdlc3Q9ZGlnZXN0LmhleGRpZ2VzdCgpLCBpbmRleD1pbmRleCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHNoYXJkPWFyY2hpdmUucmVhZChzZWxmLlNIQVJEX1NJWkUpLAorICAgICAgICAgICAg
ICAgICAgICApCisgICAgICAgICAgICAgICAgICAgIGluZGV4ICs9IDEKKwogICAgICAgICAgICAg
ICAgIHNlbGYuY29uZmlndXJhdGlvbl9jb250ZXh0Lmluc2VydF9yb3dfd2l0aF9jb25maWd1cmF0
aW9uKAotICAgICAgICAgICAgICAgICAgICBzZWxmLkFyY2hpdmVzQnlDb21taXQuX190YWJsZV9u
YW1lX18sIGNvbmZpZ3VyYXRpb249Y29uZmlndXJhdGlvbiwgc3VpdGU9c3VpdGUsCisgICAgICAg
ICAgICAgICAgICAgIHNlbGYuQXJjaGl2ZU1ldGFCeUNvbW1pdC5fX3RhYmxlX25hbWVfXywgY29u
ZmlndXJhdGlvbj1jb25maWd1cmF0aW9uLCBzdWl0ZT1zdWl0ZSwKICAgICAgICAgICAgICAgICAg
ICAgYnJhbmNoPWJyYW5jaCwgdXVpZD11dWlkLCB0dGw9dHRsLAotICAgICAgICAgICAgICAgICAg
ICBhcmNoaXZlPWFyY2hpdmUuZ2V0dmFsdWUoKSwgc2RrPWNvbmZpZ3VyYXRpb24uc2RrIG9yICc/
Jywgc3RhcnRfdGltZT10aW1lc3RhbXAsCisgICAgICAgICAgICAgICAgICAgIHNkaz1jb25maWd1
cmF0aW9uLnNkayBvciAnPycsIHN0YXJ0X3RpbWU9dGltZXN0YW1wLAorICAgICAgICAgICAgICAg
ICAgICBtZXRhPWpzb24uZHVtcHMoZGljdChzaXplPXNpemUsIGRpZ2VzdD1kaWdlc3QuaGV4ZGln
ZXN0KCkpKSwKICAgICAgICAgICAgICAgICApCiAKICAgICBkZWYgZmluZF9hcmNoaXZlKApAQCAt
MTIzLDE1ICsxNTQsNjEgQEAgY2xhc3MgQXJjaGl2ZUNvbnRleHQob2JqZWN0KToKIAogICAgICAg
ICB3aXRoIHNlbGY6CiAgICAgICAgICAgICByZXN1bHQgPSB7fQorICAgICAgICAgICAgTUVNT1JZ
X0VSUk9SID0gJ0hpdCBzb2Z0LW1lbW9yeSBjYXAgd2hlbiBmZXRjaGluZyBhcmNoaXZlcywgYWJv
cnRpbmcnCisgICAgICAgICAgICBtZW1vcnlfdXNlZCA9IDAKICAgICAgICAgICAgIGZvciBjb25m
aWd1cmF0aW9uIGluIGNvbmZpZ3VyYXRpb25zOgotICAgICAgICAgICAgICAgIHJlc3VsdC51cGRh
dGUoe2NvbmZpZzogW3ZhbHVlLnVucGFjaygpIGZvciB2YWx1ZSBpbiB2YWx1ZXNdIGZvciBjb25m
aWcsIHZhbHVlcyBpbiBzZWxmLmNvbmZpZ3VyYXRpb25fY29udGV4dC5zZWxlY3RfZnJvbV90YWJs
ZV93aXRoX2NvbmZpZ3VyYXRpb25zKAotICAgICAgICAgICAgICAgICAgICBzZWxmLkFyY2hpdmVz
QnlDb21taXQuX190YWJsZV9uYW1lX18sIGNvbmZpZ3VyYXRpb25zPVtjb25maWd1cmF0aW9uXSwg
cmVjZW50PXJlY2VudCwKKyAgICAgICAgICAgICAgICBtZXRhX2J5X2NvbmZpZyA9IHtjb25maWc6
IFt2YWx1ZS51bnBhY2soKSBmb3IgdmFsdWUgaW4gdmFsdWVzXSBmb3IgY29uZmlnLCB2YWx1ZXMg
aW4gc2VsZi5jb25maWd1cmF0aW9uX2NvbnRleHQuc2VsZWN0X2Zyb21fdGFibGVfd2l0aF9jb25m
aWd1cmF0aW9ucygKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5BcmNoaXZlTWV0YUJ5Q29tbWl0
Ll9fdGFibGVfbmFtZV9fLCBjb25maWd1cmF0aW9ucz1bY29uZmlndXJhdGlvbl0sIHJlY2VudD1y
ZWNlbnQsCiAgICAgICAgICAgICAgICAgICAgIHN1aXRlPXN1aXRlLCBzZGs9Y29uZmlndXJhdGlv
bi5zZGssIGJyYW5jaD1icmFuY2ggb3Igc2VsZi5jb21taXRfY29udGV4dC5ERUZBVUxUX0JSQU5D
SF9LRVksCiAgICAgICAgICAgICAgICAgICAgIHV1aWRfX2d0ZT1Db21taXRDb250ZXh0LmNvbnZl
cnRfdG9fdXVpZChiZWdpbiksCiAgICAgICAgICAgICAgICAgICAgIHV1aWRfX2x0ZT1Db21taXRD
b250ZXh0LmNvbnZlcnRfdG9fdXVpZChlbmQsIENvbW1pdENvbnRleHQudGltZXN0YW1wX3RvX3V1
aWQoKSksCiAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X3RpbWVfX2d0ZT1fZ2V0X3RpbWUoYmVn
aW5fcXVlcnlfdGltZSksIHN0YXJ0X3RpbWVfX2x0ZT1fZ2V0X3RpbWUoZW5kX3F1ZXJ5X3RpbWUp
LAogICAgICAgICAgICAgICAgICAgICBsaW1pdD1saW1pdCwKLSAgICAgICAgICAgICAgICApLml0
ZW1zKCl9KQorICAgICAgICAgICAgICAgICkuaXRlbXMoKX0KKworICAgICAgICAgICAgICAgIGZv
ciBjb25maWcsIHZhbHVlcyBpbiBtZXRhX2J5X2NvbmZpZy5pdGVtcygpOgorICAgICAgICAgICAg
ICAgICAgICBhdHRyaWJ1dGVzX2RpY3QgPSBPcmRlcmVkRGljdCgpCisgICAgICAgICAgICAgICAg
ICAgIGZvciBtZW1iZXIgaW4gQ29uZmlndXJhdGlvbi5PUFRJT05BTF9NRU1CRVJTOgorICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgZ2V0YXR0cihjb25maWd1cmF0aW9uLCBtZW1iZXIpIGlzIG5v
dCBOb25lOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXNfZGljdFttZW1i
ZXJdID0gZ2V0YXR0cihjb25maWd1cmF0aW9uLCBtZW1iZXIpCisKKyAgICAgICAgICAgICAgICAg
ICAgZm9yIHZhbHVlIGluIHZhbHVlczoKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIG1lbW9y
eV91c2VkICsgdmFsdWVbJ21ldGEnXS5nZXQoJ3NpemUnLCAwKSA+IHNlbGYuTUVNT1JZX0NBUDoK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoTUVNT1JZX0VS
Uk9SKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IHZhbHVlWydtZXRhJ10uZ2V0KCdk
aWdlc3QnKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3Io
J0FyY2hpdmUgbWV0YWRhdGEgZG9lcyBub3QgY29udGFpbiBhIGtleScpCisKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHJvd3MgPSBzZWxmLmNhc3NhbmRyYS5zZWxlY3RfZnJvbV90YWJsZSgKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLkFyY2hpdmVTaGFyZEJ5Q29tbWl0Ll9fdGFi
bGVfbmFtZV9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZ2VzdD12YWx1ZVsnbWV0
YSddLmdldCgnZGlnZXN0JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGltaXQ9aW50
KChzZWxmLk1FTU9SWV9DQVAgLSBtZW1vcnlfdXNlZCkgLyBzZWxmLlNIQVJEX1NJWkUpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgbGVuKHJv
d3MpID09IDA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAg
ICAgICAgICAgICAgICAgICAgZGlnZXN0ID0gaGFzaGxpYi5tZDUoKQorICAgICAgICAgICAgICAg
ICAgICAgICAgcm93cyA9IHNvcnRlZChyb3dzLCBrZXk9bGFtYmRhIHJvdzogcm93LmluZGV4KQor
ICAgICAgICAgICAgICAgICAgICAgICAgYXJjaGl2ZSA9IGlvLkJ5dGVzSU8oKQorICAgICAgICAg
ICAgICAgICAgICAgICAgZm9yIHJvdyBpbiByb3dzOgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1lbW9yeV91c2VkICs9IGxlbihyb3cuc2hhcmQpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZGlnZXN0LnVwZGF0ZShyb3cuc2hhcmQpCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYXJjaGl2ZS53cml0ZShyb3cuc2hhcmQpCisKKyAgICAgICAgICAgICAgICAgICAgICAgIGlm
IG1lbW9yeV91c2VkID4gc2VsZi5NRU1PUllfQ0FQOgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJhaXNlIFJ1bnRpbWVFcnJvcihNRU1PUllfRVJST1IpCisKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIHZhbHVlWydtZXRhJ10uZ2V0KCdkaWdlc3QnLCAnJykgIT0gZGlnZXN0LmhleGRp
Z2VzdCgpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcign
RmFpbGVkIHRvIHJlY29uc3RydWN0IGFyY2hpdmUgZnJvbSBzaGFyZHMnKQorCisgICAgICAgICAg
ICAgICAgICAgICAgICBhcmNoaXZlLnNlZWsoMCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlm
IG5vdCByZXN1bHQuZ2V0KGNvbmZpZyk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVz
dWx0W2NvbmZpZ10gPSBbXQorICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0W2NvbmZpZ10u
YXBwZW5kKGRpY3QoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJjaGl2ZT1hcmNoaXZl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHV1aWQ9dmFsdWVbJ3V1aWQnXSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdGFydF90aW1lPXZhbHVlWydzdGFydF90aW1lJ10sCisg
ICAgICAgICAgICAgICAgICAgICAgICApKQorCiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0CiAK
ICAgICBAY2xhc3NtZXRob2QKSW5kZXg6IFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21v
ZGVsL2FyY2hpdmVfY29udGV4dF91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9yZXN1
bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC9hcmNoaXZlX2NvbnRleHRfdW5pdHRlc3QucHkJKHJl
dmlzaW9uIDI0OTY3MSkKKysrIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL2Fy
Y2hpdmVfY29udGV4dF91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMjEsNiArMjEsOSBA
QAogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgogCiBpbXBvcnQgYmFzZTY0CitpbXBvcnQgaW8KK2ltcG9ydCBvcwor
aW1wb3J0IHppcGZpbGUKIAogZnJvbSBmYWtlcmVkaXMgaW1wb3J0IEZha2VTdHJpY3RSZWRpcwog
ZnJvbSByZWRpcyBpbXBvcnQgU3RyaWN0UmVkaXMKQEAgLTM1LDEwICszOCwxMCBAQCBmcm9tIHJl
c3VsdHNkYnB5Lm1vZGVsLndhaXRfZm9yX2RvY2tlcl90CiBjbGFzcyBBcmNoaXZlQ29udGV4dFRl
c3QoV2FpdEZvckRvY2tlclRlc3RDYXNlKToKICAgICBLRVlTUEFDRSA9ICdhcmNoaXZlX3Rlc3Rf
a2V5c3BhY2UnCiAKLSAgICBkZWYgaW5pdF9kYXRhYmFzZShzZWxmLCByZWRpcz1TdHJpY3RSZWRp
cywgY2Fzc2FuZHJhPUNhc3NhbmRyYUNvbnRleHQpOgorICAgIGRlZiBpbml0X2RhdGFiYXNlKHNl
bGYsIHJlZGlzPVN0cmljdFJlZGlzLCBjYXNzYW5kcmE9Q2Fzc2FuZHJhQ29udGV4dCwgY29uZmln
dXJhdGlvbj1Db25maWd1cmF0aW9uKCksIGFyY2hpdmU9Tm9uZSk6CiAgICAgICAgIGNhc3NhbmRy
YS5kcm9wX2tleXNwYWNlKGtleXNwYWNlPXNlbGYuS0VZU1BBQ0UpCiAgICAgICAgIHNlbGYubW9k
ZWwgPSBNb2NrTW9kZWxGYWN0b3J5LmNyZWF0ZShyZWRpcz1yZWRpcygpLCBjYXNzYW5kcmE9Y2Fz
c2FuZHJhKGtleXNwYWNlPXNlbGYuS0VZU1BBQ0UsIGNyZWF0ZV9rZXlzcGFjZT1UcnVlKSkKLSAg
ICAgICAgTW9ja01vZGVsRmFjdG9yeS5hZGRfbW9ja19hcmNoaXZlcyhzZWxmLm1vZGVsKQorICAg
ICAgICBNb2NrTW9kZWxGYWN0b3J5LmFkZF9tb2NrX2FyY2hpdmVzKHNlbGYubW9kZWwsIGNvbmZp
Z3VyYXRpb249Y29uZmlndXJhdGlvbiwgYXJjaGl2ZT1hcmNoaXZlKQogCiAgICAgQFdhaXRGb3JE
b2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRp
cywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCiAgICAgZGVmIHRlc3RfZmlu
ZF9hcmNoaXZlKHNlbGYsIHJlZGlzPVN0cmljdFJlZGlzLCBjYXNzYW5kcmE9Q2Fzc2FuZHJhQ29u
dGV4dCk6CkBAIC04OCwzICs5MSwzMSBAQCBjbGFzcyBBcmNoaXZlQ29udGV4dFRlc3QoV2FpdEZv
ckRvY2tlclRlCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG5leHQoaXRlcihmaWxlcy52
YWx1ZXMoKSkpKSwgMSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXh0KGl0ZXIoZmlsZXMu
dmFsdWVzKCkpKVswXVsndXVpZCddLCAxNTM4MDQ5MTA4MDApCiAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwobmV4dChpdGVyKGZpbGVzLnZhbHVlcygpKSlbMF1bJ2ZpbGUnXSwgWydmaWxlLnR4dCcs
ICdpbmRleC5odG1sJ10pCisKKyAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9f
ZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fz
c2FuZHJhQ29udGV4dCkKKyAgICBkZWYgdGVzdF9sYXJnZV9hcmNoaXZlKHNlbGYsIHJlZGlzPVN0
cmljdFJlZGlzLCBjYXNzYW5kcmE9Q2Fzc2FuZHJhQ29udGV4dCk6CisgICAgICAgIEZJTEVfU0la
RSA9IDI1ICogMTAwMCAqIDEwMDAgICMgMjUgTUIgZmlsZXMKKyAgICAgICAgYnVmZiA9IGlvLkJ5
dGVzSU8oKQorICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShidWZmLCAnYScsIHppcGZpbGUu
WklQX0RFRkxBVEVELCBGYWxzZSkgYXMgYXJjaGl2ZToKKyAgICAgICAgICAgIGZvciBmaWxlLCBk
YXRhIGluIFsKKyAgICAgICAgICAgICAgICAoJ2ZpbGUtMS50eHQnLCBpby5CeXRlc0lPKG9zLnVy
YW5kb20oRklMRV9TSVpFKSkpLAorICAgICAgICAgICAgICAgICgnZmlsZS0yLnR4dCcsIGlvLkJ5
dGVzSU8ob3MudXJhbmRvbShGSUxFX1NJWkUpKSksCisgICAgICAgICAgICAgICAgKCdmaWxlLTMu
dHh0JywgaW8uQnl0ZXNJTyhvcy51cmFuZG9tKEZJTEVfU0laRSkpKSwKKyAgICAgICAgICAgIF06
CisgICAgICAgICAgICAgICAgYXJjaGl2ZS53cml0ZXN0cihmaWxlLCBkYXRhLmdldHZhbHVlKCkp
CisgICAgICAgIHByaW50KGxlbihidWZmLmdldHZhbHVlKCkpKQorCisgICAgICAgIHNlbGYuaW5p
dF9kYXRhYmFzZSgKKyAgICAgICAgICAgIHJlZGlzPXJlZGlzLCBjYXNzYW5kcmE9Y2Fzc2FuZHJh
LAorICAgICAgICAgICAgY29uZmlndXJhdGlvbj1Db25maWd1cmF0aW9uKHBsYXRmb3JtPSdNYWMn
LCBzdHlsZT0nUmVsZWFzZScsIGZsYXZvcj0nd2sxJyksCisgICAgICAgICAgICBhcmNoaXZlPWJ1
ZmYsCisgICAgICAgICkKKworICAgICAgICBmaWxlcyA9IHNlbGYubW9kZWwuYXJjaGl2ZV9jb250
ZXh0LmZpbmRfYXJjaGl2ZSgKKyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25zPVtDb25maWd1cmF0
aW9uKHBsYXRmb3JtPSdNYWMnLCBzdHlsZT0nUmVsZWFzZScsIGZsYXZvcj0nd2sxJyldLAorICAg
ICAgICAgICAgYmVnaW49TW9ja1NWTlJlcG9zaXRvcnkud2Via2l0KCkuY29tbWl0X2Zvcl9pZCgy
MzY1NDIpLCBlbmQ9TW9ja1NWTlJlcG9zaXRvcnkud2Via2l0KCkuY29tbWl0X2Zvcl9pZCgyMzY1
NDIpLAorICAgICAgICAgICAgc3VpdGU9J2xheW91dC10ZXN0cycsCisgICAgICAgICkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obmV4dChpdGVyKGZpbGVzLnZhbHVlcygpKSkpLCAxKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5leHQoaXRlcihmaWxlcy52YWx1ZXMoKSkpWzBdWyd1
dWlkJ10sIDE1MzgwNDkxMDgwMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXh0KGl0ZXIo
ZmlsZXMudmFsdWVzKCkpKVswXVsnYXJjaGl2ZSddLmdldHZhbHVlKCksIGJ1ZmYuZ2V0dmFsdWUo
KSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378764</attachid>
            <date>2019-09-13 17:05:57 -0700</date>
            <delta_ts>2019-09-16 15:51:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201734-20190913170556.patch</filename>
            <type>text/plain</type>
            <size>13070</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI0OTg1NykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDMxIEBACisyMDE5LTA5LTEzICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICByZXN1bHRzLndlYmtpdC5vcmc6IFNoYXJkIHJlc3VsdCBhcmNoaXZlcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAxNzM0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2Fzc2FuZHJh
IGFkdmVydGlzZXMgYmVpbmcgYWJsZSB0byBzdG9yZSB1cCB0byAyIEdCIGluIGEgc2luZ2xlIGJs
b2Itc3RvcmFnZSByb3cuCisgICAgICAgIEluIHByYWN0aWNlLCB0aGlzIHVzdWFsbHkgZG9lc24n
dCB3b3JrIGFjY29yZGluZyB0byB0aGUgQ2Fzc2FuZHJhIGRldmVsb3BlcnMsCisgICAgICAgIGxh
cmdlIGJsb2JzIHNob3VsZCBiZSBicm9rZW4gdXAgaW50byBzaGFyZHMgb2YsIGF0IG1vc3QsIDEw
IE1CLgorCisgICAgICAgICogcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvYXJjaGl2ZV9j
b250ZXh0LnB5OgorICAgICAgICAoQXJjaGl2ZUNvbnRleHQpOgorICAgICAgICAoQXJjaGl2ZUNv
bnRleHQuQXJjaGl2ZU1ldGFEYXRhQnlDb21taXQpOiBQb2ludCB0byB0aGUgYXJjaGl2ZSBzaGFy
ZHMgYnkgaGFzaC4KKyAgICAgICAgKEFyY2hpdmVDb250ZXh0LkFyY2hpdmVNZXRhRGF0YUJ5Q29t
bWl0LnVucGFjayk6CisgICAgICAgIChBcmNoaXZlQ29udGV4dC5BcmNoaXZlQ2h1bmtzKTogU3Rv
cmUgYXJjaGl2ZSBzaGFyZHMsIGluZGV4ZWQgYnkgaGFzaC4KKyAgICAgICAgKEFyY2hpdmVDb250
ZXh0Ll9faW5pdF9fKToKKyAgICAgICAgKEFyY2hpdmVDb250ZXh0LnJlZ2lzdGVyKTogV2hlbiBz
YXZpbmcgYXJjaGl2ZXMsIHNhdmUgYSByZWZlcmVuY2UgaGFzaCBhbmQgdGhlbgorICAgICAgICBz
aGFyZCB0aGUgYWN0dWFsIGFyY2hpdmUgZGF0YSBiZWZvcmUgc2F2aW5nLgorICAgICAgICAoQXJj
aGl2ZUNvbnRleHQuZmluZF9hcmNoaXZlKTogU2VhcmNoIGZvciBhcmNoaXZlIGJ5IG1ldGEtZGF0
YSwgdGhlbiByZWNvbnN0cnVjdAorICAgICAgICB0aGUgYXJjaGl2ZS4gUmFpc2UgYW4gZXhjZXB0
aW9uIGlmIHdlIGRldGVybWluZSB0aGF0IG1lbW9yeSB1c2FnZSBpcyBhIHByb2JsZW0uCisgICAg
ICAgIChBcmNoaXZlQ29udGV4dC5BcmNoaXZlc0J5Q29tbWl0KTogRGVsZXRlZC4KKyAgICAgICAg
KEFyY2hpdmVDb250ZXh0LkFyY2hpdmVzQnlDb21taXQudW5wYWNrKTogRGVsZXRlZC4KKyAgICAg
ICAgKiByZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC9hcmNoaXZlX2NvbnRleHRfdW5pdHRl
c3QucHk6CisgICAgICAgIChBcmNoaXZlQ29udGV4dFRlc3QuaW5pdF9kYXRhYmFzZSk6IEFsbG93
IGNvbmZpZ3VyYXRpb24gYW5kIGFyY2hpdmUgdG8gYmUgc3BlY2lmaWVkLgorICAgICAgICAoQXJj
aGl2ZUNvbnRleHRUZXN0KToKKyAgICAgICAgKEFyY2hpdmVDb250ZXh0VGVzdC50ZXN0X2xhcmdl
X2FyY2hpdmUpOiBUZXN0IGFyY2hpdmUgc2hhcmRpbmcuCisKIDIwMTktMDktMTEgIERlYW4gSmFj
a3NvbiAgPGRpbm9AYXBwbGUuY29tPgogCiAgICAgICAgIFByb3ZpZGUgYSBwcm90b3R5cGUgZm9y
IEFSIFF1aWNrTG9vayB0byB0cmlnZ2VyIHByb2Nlc3NpbmcgaW4gdGhlIG9yaWdpbmF0aW5nIHBh
Z2UKSW5kZXg6IFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL2FyY2hpdmVfY29u
dGV4dC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2Rl
bC9hcmNoaXZlX2NvbnRleHQucHkJKHJldmlzaW9uIDI0OTg1NykKKysrIFRvb2xzL3Jlc3VsdHNk
YnB5L3Jlc3VsdHNkYnB5L21vZGVsL2FyY2hpdmVfY29udGV4dC5weQkod29ya2luZyBjb3B5KQpA
QCAtMjEsMTMgKzIxLDE4IEBACiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIGltcG9ydCBjYWxlbmRhcgoraW1w
b3J0IGhhc2hsaWIKIGltcG9ydCBpbworaW1wb3J0IGpzb24KIGltcG9ydCB0aW1lCiBpbXBvcnQg
emlwZmlsZQogCiBmcm9tIGNhc3NhbmRyYS5jcWxlbmdpbmUgaW1wb3J0IGNvbHVtbnMKK2Zyb20g
Y2Fzc2FuZHJhLmNxbGVuZ2luZS5tb2RlbHMgaW1wb3J0IE1vZGVsCitmcm9tIGNvbGxlY3Rpb25z
IGltcG9ydCBPcmRlcmVkRGljdAogZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUKIGZyb20g
cmVzdWx0c2RicHkuY29udHJvbGxlci5jb21taXQgaW1wb3J0IENvbW1pdAorZnJvbSByZXN1bHRz
ZGJweS5jb250cm9sbGVyLmNvbmZpZ3VyYXRpb24gaW1wb3J0IENvbmZpZ3VyYXRpb24KIGZyb20g
cmVzdWx0c2RicHkubW9kZWwuY29tbWl0X2NvbnRleHQgaW1wb3J0IENvbW1pdENvbnRleHQKIGZy
b20gcmVzdWx0c2RicHkubW9kZWwuY29uZmlndXJhdGlvbl9jb250ZXh0IGltcG9ydCBDbHVzdGVy
ZWRCeUNvbmZpZ3VyYXRpb24KIGZyb20gcmVzdWx0c2RicHkubW9kZWwudXBsb2FkX2NvbnRleHQg
aW1wb3J0IFVwbG9hZENvbnRleHQKQEAgLTQzLDIzICs0OCwzNSBAQCBkZWYgX2dldF90aW1lKGlu
cHV0X3RpbWUpOgogCiBjbGFzcyBBcmNoaXZlQ29udGV4dChvYmplY3QpOgogICAgIERFRkFVTFRf
TElNSVQgPSAxMAorICAgIENIVU5LX1NJWkUgPSAxMCAqIDEwMDAgKiAxMDAwICAjIENhc3NhbmRy
YSBkb2Vzbid0IGRvIHdlbGwgd2l0aCBkYXRhIGJsb2JzIG9mIG1vcmUgdGhhbiAxMCBNQgorICAg
IE1FTU9SWV9MSU1JVCA9IDIgKiAxMDAwICogMTAwMCAqIDEwMDAgICMgRG9uJ3QgYWxsb3cgbW9y
ZSB0aGFuIDIgZ2lncyBvZiBhcmNoaXZlcyBpbiBtZW1vcnkgYXQgb25lIHRpbWUKIAotICAgIGNs
YXNzIEFyY2hpdmVzQnlDb21taXQoQ2x1c3RlcmVkQnlDb25maWd1cmF0aW9uKToKLSAgICAgICAg
X190YWJsZV9uYW1lX18gPSAnYXJjaGl2ZXNfYnlfY29tbWl0JworICAgIGNsYXNzIEFyY2hpdmVN
ZXRhRGF0YUJ5Q29tbWl0KENsdXN0ZXJlZEJ5Q29uZmlndXJhdGlvbik6CisgICAgICAgIF9fdGFi
bGVfbmFtZV9fID0gJ2FyY2hpdmVfbWV0YWRhdGFfYnlfY29tbWl0JwogICAgICAgICBzdWl0ZSA9
IGNvbHVtbnMuVGV4dChwYXJ0aXRpb25fa2V5PVRydWUsIHJlcXVpcmVkPVRydWUpCiAgICAgICAg
IGJyYW5jaCA9IGNvbHVtbnMuVGV4dChwYXJ0aXRpb25fa2V5PVRydWUsIHJlcXVpcmVkPVRydWUp
CiAgICAgICAgIHV1aWQgPSBjb2x1bW5zLkJpZ0ludChwcmltYXJ5X2tleT1UcnVlLCByZXF1aXJl
ZD1UcnVlLCBjbHVzdGVyaW5nX29yZGVyPSdERVNDJykKICAgICAgICAgc2RrID0gY29sdW1ucy5U
ZXh0KHByaW1hcnlfa2V5PVRydWUsIHJlcXVpcmVkPVRydWUpCiAgICAgICAgIHN0YXJ0X3RpbWUg
PSBjb2x1bW5zLkJpZ0ludChwcmltYXJ5X2tleT1UcnVlLCByZXF1aXJlZD1UcnVlKQotICAgICAg
ICBhcmNoaXZlID0gY29sdW1ucy5CbG9iKHJlcXVpcmVkPVRydWUpCisgICAgICAgIGRpZ2VzdCA9
IGNvbHVtbnMuVGV4dChyZXF1aXJlZD1UcnVlKQorICAgICAgICBzaXplID0gY29sdW1ucy5CaWdJ
bnQocmVxdWlyZWQ9VHJ1ZSkKIAogICAgICAgICBkZWYgdW5wYWNrKHNlbGYpOgogICAgICAgICAg
ICAgcmV0dXJuIGRpY3QoCiAgICAgICAgICAgICAgICAgdXVpZD1zZWxmLnV1aWQsCiAgICAgICAg
ICAgICAgICAgc3RhcnRfdGltZT1zZWxmLnN0YXJ0X3RpbWUsCi0gICAgICAgICAgICAgICAgYXJj
aGl2ZT1pby5CeXRlc0lPKHNlbGYuYXJjaGl2ZSksCisgICAgICAgICAgICAgICAgZGlnZXN0PXNl
bGYuZGlnZXN0LAorICAgICAgICAgICAgICAgIHNpemU9c2VsZi5zaXplLAogICAgICAgICAgICAg
KQogCisgICAgIyBBY2NvcmRpbmcgdG8gaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVu
Y2UvZGlzcGxheS9DQVNTQU5EUkEyL0Nhc3NhbmRyYUxpbWl0YXRpb25zLCB3ZSBzaG91bGQgc2hh
cmQKKyAgICAjIGxhcmdlIGRhdGEgYmxvYnMuCisgICAgY2xhc3MgQXJjaGl2ZUNodW5rcyhNb2Rl
bCk6CisgICAgICAgIF9fdGFibGVfbmFtZV9fID0gJ2FyY2hpdmVfY2h1bmtzJworICAgICAgICBk
aWdlc3QgPSBjb2x1bW5zLlRleHQocGFydGl0aW9uX2tleT1UcnVlLCByZXF1aXJlZD1UcnVlKQor
ICAgICAgICBpbmRleCA9IGNvbHVtbnMuSW50ZWdlcihwcmltYXJ5X2tleT1UcnVlLCByZXF1aXJl
ZD1UcnVlKQorICAgICAgICBjaHVuayA9IGNvbHVtbnMuQmxvYihyZXF1aXJlZD1UcnVlKQorCiAg
ICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIGFzc2VydF96aXBmaWxlKGNscywgYXJjaGl2ZSk6CiAg
ICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGFyY2hpdmUsIGlvLkJ5dGVzSU8pOgpAQCAtNzksNyAr
OTYsOCBAQCBjbGFzcyBBcmNoaXZlQ29udGV4dChvYmplY3QpOgogICAgICAgICBzZWxmLnR0bF9z
ZWNvbmRzID0gdHRsX3NlY29uZHMKIAogICAgICAgICB3aXRoIHNlbGY6Ci0gICAgICAgICAgICBz
ZWxmLmNhc3NhbmRyYS5jcmVhdGVfdGFibGUoc2VsZi5BcmNoaXZlc0J5Q29tbWl0KQorICAgICAg
ICAgICAgc2VsZi5jYXNzYW5kcmEuY3JlYXRlX3RhYmxlKHNlbGYuQXJjaGl2ZU1ldGFEYXRhQnlD
b21taXQpCisgICAgICAgICAgICBzZWxmLmNhc3NhbmRyYS5jcmVhdGVfdGFibGUoc2VsZi5BcmNo
aXZlQ2h1bmtzKQogICAgICAgICAgICAgc2VsZi5jYXNzYW5kcmEuY3JlYXRlX3RhYmxlKFVwbG9h
ZENvbnRleHQuU3VpdGVzQnlDb25maWd1cmF0aW9uKQogCiAgICAgZGVmIF9fZW50ZXJfXyhzZWxm
KToKQEAgLTEwNCwxMCArMTIyLDI2IEBAIGNsYXNzIEFyY2hpdmVDb250ZXh0KG9iamVjdCk6CiAg
ICAgICAgICAgICAgICAgc2VsZi5jb25maWd1cmF0aW9uX2NvbnRleHQuaW5zZXJ0X3Jvd193aXRo
X2NvbmZpZ3VyYXRpb24oCiAgICAgICAgICAgICAgICAgICAgIFVwbG9hZENvbnRleHQuU3VpdGVz
QnlDb25maWd1cmF0aW9uLl9fdGFibGVfbmFtZV9fLCBjb25maWd1cmF0aW9uLCBzdWl0ZT1zdWl0
ZSwgdHRsPXR0bCwKICAgICAgICAgICAgICAgICApCisKKyAgICAgICAgICAgICAgICAjIEJyZWFr
aW5nIHVwIHRoZSBhcmNoaXZlIGludG8gY2h1bmtzCisgICAgICAgICAgICAgICAgaW5kZXggPSAw
CisgICAgICAgICAgICAgICAgc2l6ZSA9IGxlbihhcmNoaXZlLmdldHZhbHVlKCkpCisgICAgICAg
ICAgICAgICAgZGlnZXN0ID0gaGFzaGxpYi5tZDUoYXJjaGl2ZS5nZXR2YWx1ZSgpKS5oZXhkaWdl
c3QoKQorICAgICAgICAgICAgICAgIGFyY2hpdmUuc2VlaygwKQorICAgICAgICAgICAgICAgIHdo
aWxlIHNpemUgPiBpbmRleCAqIHNlbGYuQ0hVTktfU0laRToKKyAgICAgICAgICAgICAgICAgICAg
c2VsZi5jYXNzYW5kcmEuaW5zZXJ0X3JvdygKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYu
QXJjaGl2ZUNodW5rcy5fX3RhYmxlX25hbWVfXywKKyAgICAgICAgICAgICAgICAgICAgICAgIGRp
Z2VzdD1kaWdlc3QsIGluZGV4PWluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgY2h1bms9
YXJjaGl2ZS5yZWFkKHNlbGYuQ0hVTktfU0laRSksCisgICAgICAgICAgICAgICAgICAgICkKKyAg
ICAgICAgICAgICAgICAgICAgaW5kZXggKz0gMQorCiAgICAgICAgICAgICAgICAgc2VsZi5jb25m
aWd1cmF0aW9uX2NvbnRleHQuaW5zZXJ0X3Jvd193aXRoX2NvbmZpZ3VyYXRpb24oCi0gICAgICAg
ICAgICAgICAgICAgIHNlbGYuQXJjaGl2ZXNCeUNvbW1pdC5fX3RhYmxlX25hbWVfXywgY29uZmln
dXJhdGlvbj1jb25maWd1cmF0aW9uLCBzdWl0ZT1zdWl0ZSwKKyAgICAgICAgICAgICAgICAgICAg
c2VsZi5BcmNoaXZlTWV0YURhdGFCeUNvbW1pdC5fX3RhYmxlX25hbWVfXywgY29uZmlndXJhdGlv
bj1jb25maWd1cmF0aW9uLCBzdWl0ZT1zdWl0ZSwKICAgICAgICAgICAgICAgICAgICAgYnJhbmNo
PWJyYW5jaCwgdXVpZD11dWlkLCB0dGw9dHRsLAotICAgICAgICAgICAgICAgICAgICBhcmNoaXZl
PWFyY2hpdmUuZ2V0dmFsdWUoKSwgc2RrPWNvbmZpZ3VyYXRpb24uc2RrIG9yICc/Jywgc3RhcnRf
dGltZT10aW1lc3RhbXAsCisgICAgICAgICAgICAgICAgICAgIHNkaz1jb25maWd1cmF0aW9uLnNk
ayBvciAnPycsIHN0YXJ0X3RpbWU9dGltZXN0YW1wLAorICAgICAgICAgICAgICAgICAgICBkaWdl
c3Q9ZGlnZXN0LAorICAgICAgICAgICAgICAgICAgICBzaXplPXNpemUsCiAgICAgICAgICAgICAg
ICAgKQogCiAgICAgZGVmIGZpbmRfYXJjaGl2ZSgKQEAgLTEyMywxNSArMTU3LDYxIEBAIGNsYXNz
IEFyY2hpdmVDb250ZXh0KG9iamVjdCk6CiAKICAgICAgICAgd2l0aCBzZWxmOgogICAgICAgICAg
ICAgcmVzdWx0ID0ge30KKyAgICAgICAgICAgIE1FTU9SWV9FUlJPUiA9ICdIaXQgc29mdC1tZW1v
cnkgY2FwIHdoZW4gZmV0Y2hpbmcgYXJjaGl2ZXMsIGFib3J0aW5nJworICAgICAgICAgICAgbWVt
b3J5X3VzZWQgPSAwCiAgICAgICAgICAgICBmb3IgY29uZmlndXJhdGlvbiBpbiBjb25maWd1cmF0
aW9uczoKLSAgICAgICAgICAgICAgICByZXN1bHQudXBkYXRlKHtjb25maWc6IFt2YWx1ZS51bnBh
Y2soKSBmb3IgdmFsdWUgaW4gdmFsdWVzXSBmb3IgY29uZmlnLCB2YWx1ZXMgaW4gc2VsZi5jb25m
aWd1cmF0aW9uX2NvbnRleHQuc2VsZWN0X2Zyb21fdGFibGVfd2l0aF9jb25maWd1cmF0aW9ucygK
LSAgICAgICAgICAgICAgICAgICAgc2VsZi5BcmNoaXZlc0J5Q29tbWl0Ll9fdGFibGVfbmFtZV9f
LCBjb25maWd1cmF0aW9ucz1bY29uZmlndXJhdGlvbl0sIHJlY2VudD1yZWNlbnQsCisgICAgICAg
ICAgICAgICAgbWV0YWRhdGFfYnlfY29uZmlnID0ge2NvbmZpZzogW3ZhbHVlLnVucGFjaygpIGZv
ciB2YWx1ZSBpbiB2YWx1ZXNdIGZvciBjb25maWcsIHZhbHVlcyBpbiBzZWxmLmNvbmZpZ3VyYXRp
b25fY29udGV4dC5zZWxlY3RfZnJvbV90YWJsZV93aXRoX2NvbmZpZ3VyYXRpb25zKAorICAgICAg
ICAgICAgICAgICAgICBzZWxmLkFyY2hpdmVNZXRhRGF0YUJ5Q29tbWl0Ll9fdGFibGVfbmFtZV9f
LCBjb25maWd1cmF0aW9ucz1bY29uZmlndXJhdGlvbl0sIHJlY2VudD1yZWNlbnQsCiAgICAgICAg
ICAgICAgICAgICAgIHN1aXRlPXN1aXRlLCBzZGs9Y29uZmlndXJhdGlvbi5zZGssIGJyYW5jaD1i
cmFuY2ggb3Igc2VsZi5jb21taXRfY29udGV4dC5ERUZBVUxUX0JSQU5DSF9LRVksCiAgICAgICAg
ICAgICAgICAgICAgIHV1aWRfX2d0ZT1Db21taXRDb250ZXh0LmNvbnZlcnRfdG9fdXVpZChiZWdp
biksCiAgICAgICAgICAgICAgICAgICAgIHV1aWRfX2x0ZT1Db21taXRDb250ZXh0LmNvbnZlcnRf
dG9fdXVpZChlbmQsIENvbW1pdENvbnRleHQudGltZXN0YW1wX3RvX3V1aWQoKSksCiAgICAgICAg
ICAgICAgICAgICAgIHN0YXJ0X3RpbWVfX2d0ZT1fZ2V0X3RpbWUoYmVnaW5fcXVlcnlfdGltZSks
IHN0YXJ0X3RpbWVfX2x0ZT1fZ2V0X3RpbWUoZW5kX3F1ZXJ5X3RpbWUpLAogICAgICAgICAgICAg
ICAgICAgICBsaW1pdD1saW1pdCwKLSAgICAgICAgICAgICAgICApLml0ZW1zKCl9KQorICAgICAg
ICAgICAgICAgICkuaXRlbXMoKX0KKworICAgICAgICAgICAgICAgIGZvciBjb25maWcsIHZhbHVl
cyBpbiBtZXRhZGF0YV9ieV9jb25maWcuaXRlbXMoKToKKyAgICAgICAgICAgICAgICAgICAgYXR0
cmlidXRlc19kaWN0ID0gT3JkZXJlZERpY3QoKQorICAgICAgICAgICAgICAgICAgICBmb3IgbWVt
YmVyIGluIENvbmZpZ3VyYXRpb24uT1BUSU9OQUxfTUVNQkVSUzoKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIGdldGF0dHIoY29uZmlndXJhdGlvbiwgbWVtYmVyKSBpcyBub3QgTm9uZToKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzX2RpY3RbbWVtYmVyXSA9IGdldGF0
dHIoY29uZmlndXJhdGlvbiwgbWVtYmVyKQorCisgICAgICAgICAgICAgICAgICAgIGZvciB2YWx1
ZSBpbiB2YWx1ZXM6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiBtZW1vcnlfdXNlZCArIHZh
bHVlLmdldCgnc2l6ZScsIDApID4gc2VsZi5NRU1PUllfTElNSVQ6CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKE1FTU9SWV9FUlJPUikKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIG5vdCB2YWx1ZS5nZXQoJ2RpZ2VzdCcpOgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignQXJjaGl2ZSBtZXRhZGF0YSBkb2VzIG5v
dCBjb250YWluIGEgaGFzaCcpCisKKyAgICAgICAgICAgICAgICAgICAgICAgIHJvd3MgPSBzZWxm
LmNhc3NhbmRyYS5zZWxlY3RfZnJvbV90YWJsZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzZWxmLkFyY2hpdmVDaHVua3MuX190YWJsZV9uYW1lX18sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZGlnZXN0PXZhbHVlLmdldCgnZGlnZXN0JyksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbGltaXQ9aW50KChzZWxmLk1FTU9SWV9MSU1JVCAtIG1lbW9yeV91c2VkKSAvIHNl
bGYuQ0hVTktfU0laRSksCisgICAgICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAg
ICAgICAgICAgICBpZiBsZW4ocm93cykgPT0gMDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb250aW51ZQorCisgICAgICAgICAgICAgICAgICAgICAgICBkaWdlc3QgPSBoYXNobGliLm1k
NSgpCisgICAgICAgICAgICAgICAgICAgICAgICByb3dzID0gc29ydGVkKHJvd3MsIGtleT1sYW1i
ZGEgcm93OiByb3cuaW5kZXgpCisgICAgICAgICAgICAgICAgICAgICAgICBhcmNoaXZlID0gaW8u
Qnl0ZXNJTygpCisgICAgICAgICAgICAgICAgICAgICAgICBmb3Igcm93IGluIHJvd3M6CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbWVtb3J5X3VzZWQgKz0gbGVuKHJvdy5jaHVuaykKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkaWdlc3QudXBkYXRlKHJvdy5jaHVuaykKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBhcmNoaXZlLndyaXRlKHJvdy5jaHVuaykKKworICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgbWVtb3J5X3VzZWQgPiBzZWxmLk1FTU9SWV9MSU1JVDoKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoTUVNT1JZX0VSUk9S
KQorCisgICAgICAgICAgICAgICAgICAgICAgICBpZiB2YWx1ZS5nZXQoJ2RpZ2VzdCcsICcnKSAh
PSBkaWdlc3QuaGV4ZGlnZXN0KCk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2Ug
UnVudGltZUVycm9yKCdGYWlsZWQgdG8gcmVjb25zdHJ1Y3QgYXJjaGl2ZSBmcm9tIGNodW5rcycp
CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGFyY2hpdmUuc2VlaygwKQorICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgbm90IHJlc3VsdC5nZXQoY29uZmlnKToKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXN1bHRbY29uZmlnXSA9IFtdCisgICAgICAgICAgICAgICAgICAgICAgICBy
ZXN1bHRbY29uZmlnXS5hcHBlbmQoZGljdCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBh
cmNoaXZlPWFyY2hpdmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXVpZD12YWx1ZVsn
dXVpZCddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X3RpbWU9dmFsdWVbJ3N0
YXJ0X3RpbWUnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICkpCisKICAgICAgICAgICAgIHJl
dHVybiByZXN1bHQKIAogICAgIEBjbGFzc21ldGhvZApJbmRleDogVG9vbHMvcmVzdWx0c2RicHkv
cmVzdWx0c2RicHkvbW9kZWwvYXJjaGl2ZV9jb250ZXh0X3VuaXR0ZXN0LnB5Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL2FyY2hpdmVfY29udGV4dF91
bml0dGVzdC5weQkocmV2aXNpb24gMjQ5ODU3KQorKysgVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0
c2RicHkvbW9kZWwvYXJjaGl2ZV9jb250ZXh0X3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBA
IC0yMSw2ICsyMSw5IEBACiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIGltcG9ydCBiYXNlNjQKK2ltcG9ydCBp
bworaW1wb3J0IG9zCitpbXBvcnQgemlwZmlsZQogCiBmcm9tIGZha2VyZWRpcyBpbXBvcnQgRmFr
ZVN0cmljdFJlZGlzCiBmcm9tIHJlZGlzIGltcG9ydCBTdHJpY3RSZWRpcwpAQCAtMzUsMTAgKzM4
LDEwIEBAIGZyb20gcmVzdWx0c2RicHkubW9kZWwud2FpdF9mb3JfZG9ja2VyX3QKIGNsYXNzIEFy
Y2hpdmVDb250ZXh0VGVzdChXYWl0Rm9yRG9ja2VyVGVzdENhc2UpOgogICAgIEtFWVNQQUNFID0g
J2FyY2hpdmVfdGVzdF9rZXlzcGFjZScKIAotICAgIGRlZiBpbml0X2RhdGFiYXNlKHNlbGYsIHJl
ZGlzPVN0cmljdFJlZGlzLCBjYXNzYW5kcmE9Q2Fzc2FuZHJhQ29udGV4dCk6CisgICAgZGVmIGlu
aXRfZGF0YWJhc2Uoc2VsZiwgcmVkaXM9U3RyaWN0UmVkaXMsIGNhc3NhbmRyYT1DYXNzYW5kcmFD
b250ZXh0LCBjb25maWd1cmF0aW9uPUNvbmZpZ3VyYXRpb24oKSwgYXJjaGl2ZT1Ob25lKToKICAg
ICAgICAgY2Fzc2FuZHJhLmRyb3Bfa2V5c3BhY2Uoa2V5c3BhY2U9c2VsZi5LRVlTUEFDRSkKICAg
ICAgICAgc2VsZi5tb2RlbCA9IE1vY2tNb2RlbEZhY3RvcnkuY3JlYXRlKHJlZGlzPXJlZGlzKCks
IGNhc3NhbmRyYT1jYXNzYW5kcmEoa2V5c3BhY2U9c2VsZi5LRVlTUEFDRSwgY3JlYXRlX2tleXNw
YWNlPVRydWUpKQotICAgICAgICBNb2NrTW9kZWxGYWN0b3J5LmFkZF9tb2NrX2FyY2hpdmVzKHNl
bGYubW9kZWwpCisgICAgICAgIE1vY2tNb2RlbEZhY3RvcnkuYWRkX21vY2tfYXJjaGl2ZXMoc2Vs
Zi5tb2RlbCwgY29uZmlndXJhdGlvbj1jb25maWd1cmF0aW9uLCBhcmNoaXZlPWFyY2hpdmUpCiAK
ICAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9
RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKICAg
ICBkZWYgdGVzdF9maW5kX2FyY2hpdmUoc2VsZiwgcmVkaXM9U3RyaWN0UmVkaXMsIGNhc3NhbmRy
YT1DYXNzYW5kcmFDb250ZXh0KToKQEAgLTg4LDMgKzkxLDMxIEBAIGNsYXNzIEFyY2hpdmVDb250
ZXh0VGVzdChXYWl0Rm9yRG9ja2VyVGUKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obmV4
dChpdGVyKGZpbGVzLnZhbHVlcygpKSkpLCAxKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5l
eHQoaXRlcihmaWxlcy52YWx1ZXMoKSkpWzBdWyd1dWlkJ10sIDE1MzgwNDkxMDgwMCkKICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChuZXh0KGl0ZXIoZmlsZXMudmFsdWVzKCkpKVswXVsnZmlsZSdd
LCBbJ2ZpbGUudHh0JywgJ2luZGV4Lmh0bWwnXSkKKworICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENh
c2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fz
c2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQorICAgIGRlZiB0ZXN0X2xhcmdlX2FyY2hpdmUo
c2VsZiwgcmVkaXM9U3RyaWN0UmVkaXMsIGNhc3NhbmRyYT1DYXNzYW5kcmFDb250ZXh0KToKKyAg
ICAgICAgRklMRV9TSVpFID0gMjUgKiAxMDAwICogMTAwMCAgIyAyNSBNQiBmaWxlcworICAgICAg
ICBidWZmID0gaW8uQnl0ZXNJTygpCisgICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKGJ1ZmYs
ICdhJywgemlwZmlsZS5aSVBfREVGTEFURUQsIEZhbHNlKSBhcyBhcmNoaXZlOgorICAgICAgICAg
ICAgZm9yIGZpbGUsIGRhdGEgaW4gWworICAgICAgICAgICAgICAgICgnZmlsZS0xLnR4dCcsIGlv
LkJ5dGVzSU8ob3MudXJhbmRvbShGSUxFX1NJWkUpKSksCisgICAgICAgICAgICAgICAgKCdmaWxl
LTIudHh0JywgaW8uQnl0ZXNJTyhvcy51cmFuZG9tKEZJTEVfU0laRSkpKSwKKyAgICAgICAgICAg
ICAgICAoJ2ZpbGUtMy50eHQnLCBpby5CeXRlc0lPKG9zLnVyYW5kb20oRklMRV9TSVpFKSkpLAor
ICAgICAgICAgICAgXToKKyAgICAgICAgICAgICAgICBhcmNoaXZlLndyaXRlc3RyKGZpbGUsIGRh
dGEuZ2V0dmFsdWUoKSkKKyAgICAgICAgcHJpbnQobGVuKGJ1ZmYuZ2V0dmFsdWUoKSkpCisKKyAg
ICAgICAgc2VsZi5pbml0X2RhdGFiYXNlKAorICAgICAgICAgICAgcmVkaXM9cmVkaXMsIGNhc3Nh
bmRyYT1jYXNzYW5kcmEsCisgICAgICAgICAgICBjb25maWd1cmF0aW9uPUNvbmZpZ3VyYXRpb24o
cGxhdGZvcm09J01hYycsIHN0eWxlPSdSZWxlYXNlJywgZmxhdm9yPSd3azEnKSwKKyAgICAgICAg
ICAgIGFyY2hpdmU9YnVmZiwKKyAgICAgICAgKQorCisgICAgICAgIGZpbGVzID0gc2VsZi5tb2Rl
bC5hcmNoaXZlX2NvbnRleHQuZmluZF9hcmNoaXZlKAorICAgICAgICAgICAgY29uZmlndXJhdGlv
bnM9W0NvbmZpZ3VyYXRpb24ocGxhdGZvcm09J01hYycsIHN0eWxlPSdSZWxlYXNlJywgZmxhdm9y
PSd3azEnKV0sCisgICAgICAgICAgICBiZWdpbj1Nb2NrU1ZOUmVwb3NpdG9yeS53ZWJraXQoKS5j
b21taXRfZm9yX2lkKDIzNjU0MiksIGVuZD1Nb2NrU1ZOUmVwb3NpdG9yeS53ZWJraXQoKS5jb21t
aXRfZm9yX2lkKDIzNjU0MiksCisgICAgICAgICAgICBzdWl0ZT0nbGF5b3V0LXRlc3RzJywKKyAg
ICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihuZXh0KGl0ZXIoZmlsZXMudmFs
dWVzKCkpKSksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV4dChpdGVyKGZpbGVzLnZh
bHVlcygpKSlbMF1bJ3V1aWQnXSwgMTUzODA0OTEwODAwKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKG5leHQoaXRlcihmaWxlcy52YWx1ZXMoKSkpWzBdWydhcmNoaXZlJ10uZ2V0dmFsdWUoKSwg
YnVmZi5nZXR2YWx1ZSgpKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378905</attachid>
            <date>2019-09-16 15:51:52 -0700</date>
            <delta_ts>2019-09-16 15:59:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201734-20190916155151.patch</filename>
            <type>text/plain</type>
            <size>13148</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI0OTkyMikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDMxIEBACisyMDE5LTA5LTE2ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICByZXN1bHRzLndlYmtpdC5vcmc6IFNoYXJkIHJlc3VsdCBhcmNoaXZlcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAxNzM0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2Fzc2FuZHJh
IGFkdmVydGlzZXMgYmVpbmcgYWJsZSB0byBzdG9yZSB1cCB0byAyIEdCIGluIGEgc2luZ2xlIGJs
b2Itc3RvcmFnZSByb3cuCisgICAgICAgIEluIHByYWN0aWNlLCB0aGlzIHVzdWFsbHkgZG9lc24n
dCB3b3JrIGFjY29yZGluZyB0byB0aGUgQ2Fzc2FuZHJhIGRldmVsb3BlcnMsCisgICAgICAgIGxh
cmdlIGJsb2JzIHNob3VsZCBiZSBicm9rZW4gdXAgaW50byBzaGFyZHMgb2YsIGF0IG1vc3QsIDEw
IE1CLgorCisgICAgICAgICogcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvYXJjaGl2ZV9j
b250ZXh0LnB5OgorICAgICAgICAoQXJjaGl2ZUNvbnRleHQpOgorICAgICAgICAoQXJjaGl2ZUNv
bnRleHQuQXJjaGl2ZU1ldGFEYXRhQnlDb21taXQpOiBQb2ludCB0byB0aGUgYXJjaGl2ZSBzaGFy
ZHMgYnkgaGFzaC4KKyAgICAgICAgKEFyY2hpdmVDb250ZXh0LkFyY2hpdmVNZXRhRGF0YUJ5Q29t
bWl0LnVucGFjayk6CisgICAgICAgIChBcmNoaXZlQ29udGV4dC5BcmNoaXZlQ2h1bmtzKTogU3Rv
cmUgYXJjaGl2ZSBzaGFyZHMsIGluZGV4ZWQgYnkgaGFzaC4KKyAgICAgICAgKEFyY2hpdmVDb250
ZXh0Ll9faW5pdF9fKToKKyAgICAgICAgKEFyY2hpdmVDb250ZXh0LnJlZ2lzdGVyKTogV2hlbiBz
YXZpbmcgYXJjaGl2ZXMsIHNhdmUgYSByZWZlcmVuY2UgaGFzaCBhbmQgdGhlbgorICAgICAgICBz
aGFyZCB0aGUgYWN0dWFsIGFyY2hpdmUgZGF0YSBiZWZvcmUgc2F2aW5nLgorICAgICAgICAoQXJj
aGl2ZUNvbnRleHQuZmluZF9hcmNoaXZlKTogU2VhcmNoIGZvciBhcmNoaXZlIGJ5IG1ldGEtZGF0
YSwgdGhlbiByZWNvbnN0cnVjdAorICAgICAgICB0aGUgYXJjaGl2ZS4gUmFpc2UgYW4gZXhjZXB0
aW9uIGlmIHdlIGRldGVybWluZSB0aGF0IG1lbW9yeSB1c2FnZSBpcyBhIHByb2JsZW0uCisgICAg
ICAgIChBcmNoaXZlQ29udGV4dC5BcmNoaXZlc0J5Q29tbWl0KTogRGVsZXRlZC4KKyAgICAgICAg
KEFyY2hpdmVDb250ZXh0LkFyY2hpdmVzQnlDb21taXQudW5wYWNrKTogRGVsZXRlZC4KKyAgICAg
ICAgKiByZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC9hcmNoaXZlX2NvbnRleHRfdW5pdHRl
c3QucHk6CisgICAgICAgIChBcmNoaXZlQ29udGV4dFRlc3QuaW5pdF9kYXRhYmFzZSk6IEFsbG93
IGNvbmZpZ3VyYXRpb24gYW5kIGFyY2hpdmUgdG8gYmUgc3BlY2lmaWVkLgorICAgICAgICAoQXJj
aGl2ZUNvbnRleHRUZXN0KToKKyAgICAgICAgKEFyY2hpdmVDb250ZXh0VGVzdC50ZXN0X2xhcmdl
X2FyY2hpdmUpOiBUZXN0IGFyY2hpdmUgc2hhcmRpbmcuCisKIDIwMTktMDktMTYgIERhdmlkIEtp
bHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAgICBjaGVjay13ZWJraXQtc3R5bGU6
IEZpeCB3YXJuaW5nIG1lc3NhZ2UgZm9yIHN0ZDo6bWFrZV91bmlxdWU8dHlwZW5hbWVbXT4KSW5k
ZXg6IFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL2FyY2hpdmVfY29udGV4dC5w
eQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC9hcmNo
aXZlX2NvbnRleHQucHkJKHJldmlzaW9uIDI0OTkyMikKKysrIFRvb2xzL3Jlc3VsdHNkYnB5L3Jl
c3VsdHNkYnB5L21vZGVsL2FyY2hpdmVfY29udGV4dC5weQkod29ya2luZyBjb3B5KQpAQCAtMjEs
MTMgKzIxLDE4IEBACiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIGltcG9ydCBjYWxlbmRhcgoraW1wb3J0IGhh
c2hsaWIKIGltcG9ydCBpbworaW1wb3J0IGpzb24KIGltcG9ydCB0aW1lCiBpbXBvcnQgemlwZmls
ZQogCiBmcm9tIGNhc3NhbmRyYS5jcWxlbmdpbmUgaW1wb3J0IGNvbHVtbnMKK2Zyb20gY2Fzc2Fu
ZHJhLmNxbGVuZ2luZS5tb2RlbHMgaW1wb3J0IE1vZGVsCitmcm9tIGNvbGxlY3Rpb25zIGltcG9y
dCBPcmRlcmVkRGljdAogZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUKIGZyb20gcmVzdWx0
c2RicHkuY29udHJvbGxlci5jb21taXQgaW1wb3J0IENvbW1pdAorZnJvbSByZXN1bHRzZGJweS5j
b250cm9sbGVyLmNvbmZpZ3VyYXRpb24gaW1wb3J0IENvbmZpZ3VyYXRpb24KIGZyb20gcmVzdWx0
c2RicHkubW9kZWwuY29tbWl0X2NvbnRleHQgaW1wb3J0IENvbW1pdENvbnRleHQKIGZyb20gcmVz
dWx0c2RicHkubW9kZWwuY29uZmlndXJhdGlvbl9jb250ZXh0IGltcG9ydCBDbHVzdGVyZWRCeUNv
bmZpZ3VyYXRpb24KIGZyb20gcmVzdWx0c2RicHkubW9kZWwudXBsb2FkX2NvbnRleHQgaW1wb3J0
IFVwbG9hZENvbnRleHQKQEAgLTQzLDIzICs0OCwzNSBAQCBkZWYgX2dldF90aW1lKGlucHV0X3Rp
bWUpOgogCiBjbGFzcyBBcmNoaXZlQ29udGV4dChvYmplY3QpOgogICAgIERFRkFVTFRfTElNSVQg
PSAxMAorICAgIENIVU5LX1NJWkUgPSAxMCAqIDEwMDAgKiAxMDAwICAjIENhc3NhbmRyYSBkb2Vz
bid0IGRvIHdlbGwgd2l0aCBkYXRhIGJsb2JzIG9mIG1vcmUgdGhhbiAxMCBNQgorICAgIE1FTU9S
WV9MSU1JVCA9IDIgKiAxMDAwICogMTAwMCAqIDEwMDAgICMgRG9uJ3QgYWxsb3cgbW9yZSB0aGFu
IDIgZ2lncyBvZiBhcmNoaXZlcyBpbiBtZW1vcnkgYXQgb25lIHRpbWUKIAotICAgIGNsYXNzIEFy
Y2hpdmVzQnlDb21taXQoQ2x1c3RlcmVkQnlDb25maWd1cmF0aW9uKToKLSAgICAgICAgX190YWJs
ZV9uYW1lX18gPSAnYXJjaGl2ZXNfYnlfY29tbWl0JworICAgIGNsYXNzIEFyY2hpdmVNZXRhRGF0
YUJ5Q29tbWl0KENsdXN0ZXJlZEJ5Q29uZmlndXJhdGlvbik6CisgICAgICAgIF9fdGFibGVfbmFt
ZV9fID0gJ2FyY2hpdmVfbWV0YWRhdGFfYnlfY29tbWl0JwogICAgICAgICBzdWl0ZSA9IGNvbHVt
bnMuVGV4dChwYXJ0aXRpb25fa2V5PVRydWUsIHJlcXVpcmVkPVRydWUpCiAgICAgICAgIGJyYW5j
aCA9IGNvbHVtbnMuVGV4dChwYXJ0aXRpb25fa2V5PVRydWUsIHJlcXVpcmVkPVRydWUpCiAgICAg
ICAgIHV1aWQgPSBjb2x1bW5zLkJpZ0ludChwcmltYXJ5X2tleT1UcnVlLCByZXF1aXJlZD1UcnVl
LCBjbHVzdGVyaW5nX29yZGVyPSdERVNDJykKICAgICAgICAgc2RrID0gY29sdW1ucy5UZXh0KHBy
aW1hcnlfa2V5PVRydWUsIHJlcXVpcmVkPVRydWUpCiAgICAgICAgIHN0YXJ0X3RpbWUgPSBjb2x1
bW5zLkJpZ0ludChwcmltYXJ5X2tleT1UcnVlLCByZXF1aXJlZD1UcnVlKQotICAgICAgICBhcmNo
aXZlID0gY29sdW1ucy5CbG9iKHJlcXVpcmVkPVRydWUpCisgICAgICAgIGRpZ2VzdCA9IGNvbHVt
bnMuVGV4dChyZXF1aXJlZD1UcnVlKQorICAgICAgICBzaXplID0gY29sdW1ucy5CaWdJbnQocmVx
dWlyZWQ9VHJ1ZSkKIAogICAgICAgICBkZWYgdW5wYWNrKHNlbGYpOgogICAgICAgICAgICAgcmV0
dXJuIGRpY3QoCiAgICAgICAgICAgICAgICAgdXVpZD1zZWxmLnV1aWQsCiAgICAgICAgICAgICAg
ICAgc3RhcnRfdGltZT1zZWxmLnN0YXJ0X3RpbWUsCi0gICAgICAgICAgICAgICAgYXJjaGl2ZT1p
by5CeXRlc0lPKHNlbGYuYXJjaGl2ZSksCisgICAgICAgICAgICAgICAgZGlnZXN0PXNlbGYuZGln
ZXN0LAorICAgICAgICAgICAgICAgIHNpemU9c2VsZi5zaXplLAogICAgICAgICAgICAgKQogCisg
ICAgIyBBY2NvcmRpbmcgdG8gaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlz
cGxheS9DQVNTQU5EUkEyL0Nhc3NhbmRyYUxpbWl0YXRpb25zLCB3ZSBzaG91bGQgc2hhcmQKKyAg
ICAjIGxhcmdlIGRhdGEgYmxvYnMuCisgICAgY2xhc3MgQXJjaGl2ZUNodW5rcyhNb2RlbCk6Cisg
ICAgICAgIF9fdGFibGVfbmFtZV9fID0gJ2FyY2hpdmVfY2h1bmtzJworICAgICAgICBkaWdlc3Qg
PSBjb2x1bW5zLlRleHQocGFydGl0aW9uX2tleT1UcnVlLCByZXF1aXJlZD1UcnVlKQorICAgICAg
ICBpbmRleCA9IGNvbHVtbnMuSW50ZWdlcihwcmltYXJ5X2tleT1UcnVlLCByZXF1aXJlZD1UcnVl
KQorICAgICAgICBjaHVuayA9IGNvbHVtbnMuQmxvYihyZXF1aXJlZD1UcnVlKQorCiAgICAgQGNs
YXNzbWV0aG9kCiAgICAgZGVmIGFzc2VydF96aXBmaWxlKGNscywgYXJjaGl2ZSk6CiAgICAgICAg
IGlmIG5vdCBpc2luc3RhbmNlKGFyY2hpdmUsIGlvLkJ5dGVzSU8pOgpAQCAtNzksNyArOTYsOCBA
QCBjbGFzcyBBcmNoaXZlQ29udGV4dChvYmplY3QpOgogICAgICAgICBzZWxmLnR0bF9zZWNvbmRz
ID0gdHRsX3NlY29uZHMKIAogICAgICAgICB3aXRoIHNlbGY6Ci0gICAgICAgICAgICBzZWxmLmNh
c3NhbmRyYS5jcmVhdGVfdGFibGUoc2VsZi5BcmNoaXZlc0J5Q29tbWl0KQorICAgICAgICAgICAg
c2VsZi5jYXNzYW5kcmEuY3JlYXRlX3RhYmxlKHNlbGYuQXJjaGl2ZU1ldGFEYXRhQnlDb21taXQp
CisgICAgICAgICAgICBzZWxmLmNhc3NhbmRyYS5jcmVhdGVfdGFibGUoc2VsZi5BcmNoaXZlQ2h1
bmtzKQogICAgICAgICAgICAgc2VsZi5jYXNzYW5kcmEuY3JlYXRlX3RhYmxlKFVwbG9hZENvbnRl
eHQuU3VpdGVzQnlDb25maWd1cmF0aW9uKQogCiAgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKQEAg
LTEwNCwxMCArMTIyLDI2IEBAIGNsYXNzIEFyY2hpdmVDb250ZXh0KG9iamVjdCk6CiAgICAgICAg
ICAgICAgICAgc2VsZi5jb25maWd1cmF0aW9uX2NvbnRleHQuaW5zZXJ0X3Jvd193aXRoX2NvbmZp
Z3VyYXRpb24oCiAgICAgICAgICAgICAgICAgICAgIFVwbG9hZENvbnRleHQuU3VpdGVzQnlDb25m
aWd1cmF0aW9uLl9fdGFibGVfbmFtZV9fLCBjb25maWd1cmF0aW9uLCBzdWl0ZT1zdWl0ZSwgdHRs
PXR0bCwKICAgICAgICAgICAgICAgICApCisKKyAgICAgICAgICAgICAgICAjIEJyZWFraW5nIHVw
IHRoZSBhcmNoaXZlIGludG8gY2h1bmtzCisgICAgICAgICAgICAgICAgaW5kZXggPSAwCisgICAg
ICAgICAgICAgICAgc2l6ZSA9IGxlbihhcmNoaXZlLmdldHZhbHVlKCkpCisgICAgICAgICAgICAg
ICAgZGlnZXN0ID0gaGFzaGxpYi5tZDUoYXJjaGl2ZS5nZXR2YWx1ZSgpKS5oZXhkaWdlc3QoKQor
ICAgICAgICAgICAgICAgIGFyY2hpdmUuc2VlaygwKQorICAgICAgICAgICAgICAgIHdoaWxlIHNp
emUgPiBpbmRleCAqIHNlbGYuQ0hVTktfU0laRToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5j
YXNzYW5kcmEuaW5zZXJ0X3JvdygKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuQXJjaGl2
ZUNodW5rcy5fX3RhYmxlX25hbWVfXywKKyAgICAgICAgICAgICAgICAgICAgICAgIGRpZ2VzdD1k
aWdlc3QsIGluZGV4PWluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgY2h1bms9YXJjaGl2
ZS5yZWFkKHNlbGYuQ0hVTktfU0laRSksCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAg
ICAgICAgICAgICAgaW5kZXggKz0gMQorCiAgICAgICAgICAgICAgICAgc2VsZi5jb25maWd1cmF0
aW9uX2NvbnRleHQuaW5zZXJ0X3Jvd193aXRoX2NvbmZpZ3VyYXRpb24oCi0gICAgICAgICAgICAg
ICAgICAgIHNlbGYuQXJjaGl2ZXNCeUNvbW1pdC5fX3RhYmxlX25hbWVfXywgY29uZmlndXJhdGlv
bj1jb25maWd1cmF0aW9uLCBzdWl0ZT1zdWl0ZSwKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5B
cmNoaXZlTWV0YURhdGFCeUNvbW1pdC5fX3RhYmxlX25hbWVfXywgY29uZmlndXJhdGlvbj1jb25m
aWd1cmF0aW9uLCBzdWl0ZT1zdWl0ZSwKICAgICAgICAgICAgICAgICAgICAgYnJhbmNoPWJyYW5j
aCwgdXVpZD11dWlkLCB0dGw9dHRsLAotICAgICAgICAgICAgICAgICAgICBhcmNoaXZlPWFyY2hp
dmUuZ2V0dmFsdWUoKSwgc2RrPWNvbmZpZ3VyYXRpb24uc2RrIG9yICc/Jywgc3RhcnRfdGltZT10
aW1lc3RhbXAsCisgICAgICAgICAgICAgICAgICAgIHNkaz1jb25maWd1cmF0aW9uLnNkayBvciAn
PycsIHN0YXJ0X3RpbWU9dGltZXN0YW1wLAorICAgICAgICAgICAgICAgICAgICBkaWdlc3Q9ZGln
ZXN0LAorICAgICAgICAgICAgICAgICAgICBzaXplPXNpemUsCiAgICAgICAgICAgICAgICAgKQog
CiAgICAgZGVmIGZpbmRfYXJjaGl2ZSgKQEAgLTEyMiwxNiArMTU2LDU3IEBAIGNsYXNzIEFyY2hp
dmVDb250ZXh0KG9iamVjdCk6CiAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoZidFeHBlY3Rl
ZCB0eXBlIHtzdHJ9LCBnb3Qge3R5cGUoc3VpdGUpfScpCiAKICAgICAgICAgd2l0aCBzZWxmOgot
ICAgICAgICAgICAgcmVzdWx0ID0ge30KKyAgICAgICAgICAgIG1ldGFkYXRhX2J5X2NvbmZpZyA9
IHt9CiAgICAgICAgICAgICBmb3IgY29uZmlndXJhdGlvbiBpbiBjb25maWd1cmF0aW9uczoKLSAg
ICAgICAgICAgICAgICByZXN1bHQudXBkYXRlKHtjb25maWc6IFt2YWx1ZS51bnBhY2soKSBmb3Ig
dmFsdWUgaW4gdmFsdWVzXSBmb3IgY29uZmlnLCB2YWx1ZXMgaW4gc2VsZi5jb25maWd1cmF0aW9u
X2NvbnRleHQuc2VsZWN0X2Zyb21fdGFibGVfd2l0aF9jb25maWd1cmF0aW9ucygKLSAgICAgICAg
ICAgICAgICAgICAgc2VsZi5BcmNoaXZlc0J5Q29tbWl0Ll9fdGFibGVfbmFtZV9fLCBjb25maWd1
cmF0aW9ucz1bY29uZmlndXJhdGlvbl0sIHJlY2VudD1yZWNlbnQsCisgICAgICAgICAgICAgICAg
bWV0YWRhdGFfYnlfY29uZmlnLnVwZGF0ZSh7Y29uZmlnOiBbdmFsdWUudW5wYWNrKCkgZm9yIHZh
bHVlIGluIHZhbHVlc10gZm9yIGNvbmZpZywgdmFsdWVzIGluIHNlbGYuY29uZmlndXJhdGlvbl9j
b250ZXh0LnNlbGVjdF9mcm9tX3RhYmxlX3dpdGhfY29uZmlndXJhdGlvbnMoCisgICAgICAgICAg
ICAgICAgICAgIHNlbGYuQXJjaGl2ZU1ldGFEYXRhQnlDb21taXQuX190YWJsZV9uYW1lX18sIGNv
bmZpZ3VyYXRpb25zPVtjb25maWd1cmF0aW9uXSwgcmVjZW50PXJlY2VudCwKICAgICAgICAgICAg
ICAgICAgICAgc3VpdGU9c3VpdGUsIHNkaz1jb25maWd1cmF0aW9uLnNkaywgYnJhbmNoPWJyYW5j
aCBvciBzZWxmLmNvbW1pdF9jb250ZXh0LkRFRkFVTFRfQlJBTkNIX0tFWSwKICAgICAgICAgICAg
ICAgICAgICAgdXVpZF9fZ3RlPUNvbW1pdENvbnRleHQuY29udmVydF90b191dWlkKGJlZ2luKSwK
ICAgICAgICAgICAgICAgICAgICAgdXVpZF9fbHRlPUNvbW1pdENvbnRleHQuY29udmVydF90b191
dWlkKGVuZCwgQ29tbWl0Q29udGV4dC50aW1lc3RhbXBfdG9fdXVpZCgpKSwKICAgICAgICAgICAg
ICAgICAgICAgc3RhcnRfdGltZV9fZ3RlPV9nZXRfdGltZShiZWdpbl9xdWVyeV90aW1lKSwgc3Rh
cnRfdGltZV9fbHRlPV9nZXRfdGltZShlbmRfcXVlcnlfdGltZSksCiAgICAgICAgICAgICAgICAg
ICAgIGxpbWl0PWxpbWl0LAogICAgICAgICAgICAgICAgICkuaXRlbXMoKX0pCisKKyAgICAgICAg
ICAgIG1lbW9yeV91c2VkID0gMAorICAgICAgICAgICAgZm9yIHZhbHVlcyBpbiBtZXRhZGF0YV9i
eV9jb25maWcudmFsdWVzKCk6CisgICAgICAgICAgICAgICAgZm9yIHZhbHVlIGluIHZhbHVlczoK
KyAgICAgICAgICAgICAgICAgICAgbWVtb3J5X3VzZWQgKz0gdmFsdWUuZ2V0KCdzaXplJywgMCkK
KyAgICAgICAgICAgICAgICAgICAgaWYgbWVtb3J5X3VzZWQgPiBzZWxmLk1FTU9SWV9MSU1JVDoK
KyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignSGl0IHNvZnQtbWVt
b3J5IGNhcCB3aGVuIGZldGNoaW5nIGFyY2hpdmVzLCBhYm9ydGluZycpCisKKyAgICAgICAgICAg
IHJlc3VsdCA9IHt9CisgICAgICAgICAgICBmb3IgY29uZmlnLCB2YWx1ZXMgaW4gbWV0YWRhdGFf
YnlfY29uZmlnLml0ZW1zKCk6CisgICAgICAgICAgICAgICAgZm9yIHZhbHVlIGluIHZhbHVlczoK
KyAgICAgICAgICAgICAgICAgICAgaWYgbm90IHZhbHVlLmdldCgnZGlnZXN0Jyk6CisgICAgICAg
ICAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ0FyY2hpdmUgbWV0YWRhdGEgZG9l
cyBub3QgY29udGFpbiBhIGhhc2gnKQorCisgICAgICAgICAgICAgICAgICAgIHJvd3MgPSBzZWxm
LmNhc3NhbmRyYS5zZWxlY3RfZnJvbV90YWJsZSgKKyAgICAgICAgICAgICAgICAgICAgICAgIHNl
bGYuQXJjaGl2ZUNodW5rcy5fX3RhYmxlX25hbWVfXywKKyAgICAgICAgICAgICAgICAgICAgICAg
IGRpZ2VzdD12YWx1ZS5nZXQoJ2RpZ2VzdCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgbGlt
aXQ9MSArIGludCh2YWx1ZS5nZXQoJ3NpemUnLCAwKSAvIHNlbGYuQ0hVTktfU0laRSksCisgICAg
ICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAgICAgaWYgbGVuKHJvd3MpID09IDA6
CisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAgICAgICAg
IGRpZ2VzdCA9IGhhc2hsaWIubWQ1KCkKKyAgICAgICAgICAgICAgICAgICAgYXJjaGl2ZSA9IGlv
LkJ5dGVzSU8oKQorICAgICAgICAgICAgICAgICAgICBhcmNoaXZlX3NpemUgPSAwCisgICAgICAg
ICAgICAgICAgICAgIGZvciByb3cgaW4gcm93czoKKyAgICAgICAgICAgICAgICAgICAgICAgIGFy
Y2hpdmVfc2l6ZSArPSBsZW4ocm93LmNodW5rKQorICAgICAgICAgICAgICAgICAgICAgICAgZGln
ZXN0LnVwZGF0ZShyb3cuY2h1bmspCisgICAgICAgICAgICAgICAgICAgICAgICBhcmNoaXZlLndy
aXRlKHJvdy5jaHVuaykKKworICAgICAgICAgICAgICAgICAgICBpZiBhcmNoaXZlX3NpemUgIT0g
dmFsdWUuZ2V0KCdzaXplJywgMCkgb3IgdmFsdWUuZ2V0KCdkaWdlc3QnLCAnJykgIT0gZGlnZXN0
LmhleGRpZ2VzdCgpOgorICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9y
KCdGYWlsZWQgdG8gcmVjb25zdHJ1Y3QgYXJjaGl2ZSBmcm9tIGNodW5rcycpCisKKyAgICAgICAg
ICAgICAgICAgICAgYXJjaGl2ZS5zZWVrKDApCisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5z
ZXRkZWZhdWx0KGNvbmZpZywgW10pCisgICAgICAgICAgICAgICAgICAgIHJlc3VsdFtjb25maWdd
LmFwcGVuZChkaWN0KAorICAgICAgICAgICAgICAgICAgICAgICAgYXJjaGl2ZT1hcmNoaXZlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgdXVpZD12YWx1ZVsndXVpZCddLAorICAgICAgICAgICAg
ICAgICAgICAgICAgc3RhcnRfdGltZT12YWx1ZVsnc3RhcnRfdGltZSddLAorICAgICAgICAgICAg
ICAgICAgICApKQorCiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0CiAKICAgICBAY2xhc3NtZXRo
b2QKSW5kZXg6IFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL2FyY2hpdmVfY29u
dGV4dF91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRz
ZGJweS9tb2RlbC9hcmNoaXZlX2NvbnRleHRfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI0OTkyMikK
KysrIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL2FyY2hpdmVfY29udGV4dF91
bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMjEsNiArMjEsMTAgQEAKICMgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KIAogaW1wb3J0IGJhc2U2NAoraW1wb3J0IGlvCitpbXBvcnQgbW9jaworaW1wb3J0IG9zCitp
bXBvcnQgemlwZmlsZQogCiBmcm9tIGZha2VyZWRpcyBpbXBvcnQgRmFrZVN0cmljdFJlZGlzCiBm
cm9tIHJlZGlzIGltcG9ydCBTdHJpY3RSZWRpcwpAQCAtMzUsMTAgKzM5LDEwIEBAIGZyb20gcmVz
dWx0c2RicHkubW9kZWwud2FpdF9mb3JfZG9ja2VyX3QKIGNsYXNzIEFyY2hpdmVDb250ZXh0VGVz
dChXYWl0Rm9yRG9ja2VyVGVzdENhc2UpOgogICAgIEtFWVNQQUNFID0gJ2FyY2hpdmVfdGVzdF9r
ZXlzcGFjZScKIAotICAgIGRlZiBpbml0X2RhdGFiYXNlKHNlbGYsIHJlZGlzPVN0cmljdFJlZGlz
LCBjYXNzYW5kcmE9Q2Fzc2FuZHJhQ29udGV4dCk6CisgICAgZGVmIGluaXRfZGF0YWJhc2Uoc2Vs
ZiwgcmVkaXM9U3RyaWN0UmVkaXMsIGNhc3NhbmRyYT1DYXNzYW5kcmFDb250ZXh0LCBjb25maWd1
cmF0aW9uPUNvbmZpZ3VyYXRpb24oKSwgYXJjaGl2ZT1Ob25lKToKICAgICAgICAgY2Fzc2FuZHJh
LmRyb3Bfa2V5c3BhY2Uoa2V5c3BhY2U9c2VsZi5LRVlTUEFDRSkKICAgICAgICAgc2VsZi5tb2Rl
bCA9IE1vY2tNb2RlbEZhY3RvcnkuY3JlYXRlKHJlZGlzPXJlZGlzKCksIGNhc3NhbmRyYT1jYXNz
YW5kcmEoa2V5c3BhY2U9c2VsZi5LRVlTUEFDRSwgY3JlYXRlX2tleXNwYWNlPVRydWUpKQotICAg
ICAgICBNb2NrTW9kZWxGYWN0b3J5LmFkZF9tb2NrX2FyY2hpdmVzKHNlbGYubW9kZWwpCisgICAg
ICAgIE1vY2tNb2RlbEZhY3RvcnkuYWRkX21vY2tfYXJjaGl2ZXMoc2VsZi5tb2RlbCwgY29uZmln
dXJhdGlvbj1jb25maWd1cmF0aW9uLCBhcmNoaXZlPWFyY2hpdmUpCiAKICAgICBAV2FpdEZvckRv
Y2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlz
LCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKICAgICBkZWYgdGVzdF9maW5k
X2FyY2hpdmUoc2VsZiwgcmVkaXM9U3RyaWN0UmVkaXMsIGNhc3NhbmRyYT1DYXNzYW5kcmFDb250
ZXh0KToKQEAgLTg4LDMgKzkyLDM3IEBAIGNsYXNzIEFyY2hpdmVDb250ZXh0VGVzdChXYWl0Rm9y
RG9ja2VyVGUKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obmV4dChpdGVyKGZpbGVzLnZh
bHVlcygpKSkpLCAxKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5leHQoaXRlcihmaWxlcy52
YWx1ZXMoKSkpWzBdWyd1dWlkJ10sIDE1MzgwNDkxMDgwMCkKICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChuZXh0KGl0ZXIoZmlsZXMudmFsdWVzKCkpKVswXVsnZmlsZSddLCBbJ2ZpbGUudHh0Jywg
J2luZGV4Lmh0bWwnXSkKKworICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19k
b2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNz
YW5kcmFDb250ZXh0KQorICAgIGRlZiB0ZXN0X2xhcmdlX2FyY2hpdmUoc2VsZiwgcmVkaXM9U3Ry
aWN0UmVkaXMsIGNhc3NhbmRyYT1DYXNzYW5kcmFDb250ZXh0KToKKyAgICAgICAgRklMRV9TSVpF
ID0gMjUgKiAxMDAwICogMTAwMCAgIyAyNSBNQiBmaWxlcworICAgICAgICBidWZmID0gaW8uQnl0
ZXNJTygpCisgICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKGJ1ZmYsICdhJywgemlwZmlsZS5a
SVBfREVGTEFURUQsIEZhbHNlKSBhcyBhcmNoaXZlOgorICAgICAgICAgICAgZm9yIGZpbGUsIGRh
dGEgaW4gWworICAgICAgICAgICAgICAgICgnZmlsZS0xLnR4dCcsIGlvLkJ5dGVzSU8ob3MudXJh
bmRvbShGSUxFX1NJWkUpKSksCisgICAgICAgICAgICAgICAgKCdmaWxlLTIudHh0JywgaW8uQnl0
ZXNJTyhvcy51cmFuZG9tKEZJTEVfU0laRSkpKSwKKyAgICAgICAgICAgICAgICAoJ2ZpbGUtMy50
eHQnLCBpby5CeXRlc0lPKG9zLnVyYW5kb20oRklMRV9TSVpFKSkpLAorICAgICAgICAgICAgXToK
KyAgICAgICAgICAgICAgICBhcmNoaXZlLndyaXRlc3RyKGZpbGUsIGRhdGEuZ2V0dmFsdWUoKSkK
KworICAgICAgICBzZWxmLmluaXRfZGF0YWJhc2UoCisgICAgICAgICAgICByZWRpcz1yZWRpcywg
Y2Fzc2FuZHJhPWNhc3NhbmRyYSwKKyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb249Q29uZmlndXJh
dGlvbihwbGF0Zm9ybT0nTWFjJywgc3R5bGU9J1JlbGVhc2UnLCBmbGF2b3I9J3drMScpLAorICAg
ICAgICAgICAgYXJjaGl2ZT1idWZmLAorICAgICAgICApCisKKyAgICAgICAgZmlsZXMgPSBzZWxm
Lm1vZGVsLmFyY2hpdmVfY29udGV4dC5maW5kX2FyY2hpdmUoCisgICAgICAgICAgICBjb25maWd1
cmF0aW9ucz1bQ29uZmlndXJhdGlvbihwbGF0Zm9ybT0nTWFjJywgc3R5bGU9J1JlbGVhc2UnLCBm
bGF2b3I9J3drMScpXSwKKyAgICAgICAgICAgIGJlZ2luPU1vY2tTVk5SZXBvc2l0b3J5LndlYmtp
dCgpLmNvbW1pdF9mb3JfaWQoMjM2NTQyKSwgZW5kPU1vY2tTVk5SZXBvc2l0b3J5LndlYmtpdCgp
LmNvbW1pdF9mb3JfaWQoMjM2NTQyKSwKKyAgICAgICAgICAgIHN1aXRlPSdsYXlvdXQtdGVzdHMn
LAorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG5leHQoaXRlcihmaWxl
cy52YWx1ZXMoKSkpKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXh0KGl0ZXIoZmls
ZXMudmFsdWVzKCkpKVswXVsndXVpZCddLCAxNTM4MDQ5MTA4MDApCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwobmV4dChpdGVyKGZpbGVzLnZhbHVlcygpKSlbMF1bJ2FyY2hpdmUnXS5nZXR2YWx1
ZSgpLCBidWZmLmdldHZhbHVlKCkpCisKKyAgICAgICAgd2l0aCBtb2NrLnBhdGNoKCdyZXN1bHRz
ZGJweS5tb2RlbC5hcmNoaXZlX2NvbnRleHQuQXJjaGl2ZUNvbnRleHQuTUVNT1JZX0xJTUlUJywg
bmV3PUZJTEVfU0laRSksIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvcik6CisgICAgICAg
ICAgICBzZWxmLm1vZGVsLmFyY2hpdmVfY29udGV4dC5maW5kX2FyY2hpdmUoCisgICAgICAgICAg
ICAgICAgY29uZmlndXJhdGlvbnM9W0NvbmZpZ3VyYXRpb24ocGxhdGZvcm09J01hYycsIHN0eWxl
PSdSZWxlYXNlJywgZmxhdm9yPSd3azEnKV0sCisgICAgICAgICAgICAgICAgYmVnaW49TW9ja1NW
TlJlcG9zaXRvcnkud2Via2l0KCkuY29tbWl0X2Zvcl9pZCgyMzY1NDIpLCBlbmQ9TW9ja1NWTlJl
cG9zaXRvcnkud2Via2l0KCkuY29tbWl0X2Zvcl9pZCgyMzY1NDIpLAorICAgICAgICAgICAgICAg
IHN1aXRlPSdsYXlvdXQtdGVzdHMnLAorICAgICAgICAgICAgKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378907</attachid>
            <date>2019-09-16 15:59:44 -0700</date>
            <delta_ts>2019-09-16 16:11:08 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-201734-20190916155943.patch</filename>
            <type>text/plain</type>
            <size>13179</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI0OTkyNSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDMxIEBACisyMDE5LTA5LTE2ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICByZXN1bHRzLndlYmtpdC5vcmc6IFNoYXJkIHJlc3VsdCBhcmNoaXZlcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAxNzM0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgRGV3ZWkgWmh1LgorCisgICAgICAgIENhc3NhbmRyYSBhZHZl
cnRpc2VzIGJlaW5nIGFibGUgdG8gc3RvcmUgdXAgdG8gMiBHQiBpbiBhIHNpbmdsZSBibG9iLXN0
b3JhZ2Ugcm93LgorICAgICAgICBJbiBwcmFjdGljZSwgdGhpcyB1c3VhbGx5IGRvZXNuJ3Qgd29y
ayBhY2NvcmRpbmcgdG8gdGhlIENhc3NhbmRyYSBkZXZlbG9wZXJzLAorICAgICAgICBsYXJnZSBi
bG9icyBzaG91bGQgYmUgYnJva2VuIHVwIGludG8gc2hhcmRzIG9mLCBhdCBtb3N0LCAxMCBNQi4K
KworICAgICAgICAqIHJlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL2FyY2hpdmVfY29udGV4
dC5weToKKyAgICAgICAgKEFyY2hpdmVDb250ZXh0KToKKyAgICAgICAgKEFyY2hpdmVDb250ZXh0
LkFyY2hpdmVNZXRhRGF0YUJ5Q29tbWl0KTogUG9pbnQgdG8gdGhlIGFyY2hpdmUgc2hhcmRzIGJ5
IGhhc2guCisgICAgICAgIChBcmNoaXZlQ29udGV4dC5BcmNoaXZlTWV0YURhdGFCeUNvbW1pdC51
bnBhY2spOgorICAgICAgICAoQXJjaGl2ZUNvbnRleHQuQXJjaGl2ZUNodW5rcyk6IFN0b3JlIGFy
Y2hpdmUgc2hhcmRzLCBpbmRleGVkIGJ5IGhhc2guCisgICAgICAgIChBcmNoaXZlQ29udGV4dC5f
X2luaXRfXyk6CisgICAgICAgIChBcmNoaXZlQ29udGV4dC5yZWdpc3Rlcik6IFdoZW4gc2F2aW5n
IGFyY2hpdmVzLCBzYXZlIGEgcmVmZXJlbmNlIGhhc2ggYW5kIHRoZW4KKyAgICAgICAgc2hhcmQg
dGhlIGFjdHVhbCBhcmNoaXZlIGRhdGEgYmVmb3JlIHNhdmluZy4KKyAgICAgICAgKEFyY2hpdmVD
b250ZXh0LmZpbmRfYXJjaGl2ZSk6IFNlYXJjaCBmb3IgYXJjaGl2ZSBieSBtZXRhLWRhdGEsIHRo
ZW4gcmVjb25zdHJ1Y3QKKyAgICAgICAgdGhlIGFyY2hpdmUuIFJhaXNlIGFuIGV4Y2VwdGlvbiBp
ZiB3ZSBkZXRlcm1pbmUgdGhhdCBtZW1vcnkgdXNhZ2UgaXMgYSBwcm9ibGVtLgorICAgICAgICAo
QXJjaGl2ZUNvbnRleHQuQXJjaGl2ZXNCeUNvbW1pdCk6IERlbGV0ZWQuCisgICAgICAgIChBcmNo
aXZlQ29udGV4dC5BcmNoaXZlc0J5Q29tbWl0LnVucGFjayk6IERlbGV0ZWQuCisgICAgICAgICog
cmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvYXJjaGl2ZV9jb250ZXh0X3VuaXR0ZXN0LnB5
OgorICAgICAgICAoQXJjaGl2ZUNvbnRleHRUZXN0LmluaXRfZGF0YWJhc2UpOiBBbGxvdyBjb25m
aWd1cmF0aW9uIGFuZCBhcmNoaXZlIHRvIGJlIHNwZWNpZmllZC4KKyAgICAgICAgKEFyY2hpdmVD
b250ZXh0VGVzdCk6CisgICAgICAgIChBcmNoaXZlQ29udGV4dFRlc3QudGVzdF9sYXJnZV9hcmNo
aXZlKTogVGVzdCBhcmNoaXZlIHNoYXJkaW5nLgorCiAyMDE5LTA5LTE2ICBKb25hdGhhbiBCZWRh
cmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KIAogICAgICAgICByZXN1bHRzLndlYmtpdC5vcmc6IENv
bmZpZ3VyYXRpb25zIHNob3VsZCBiZSBicmFuY2ggc3BlY2lmaWMKSW5kZXg6IFRvb2xzL3Jlc3Vs
dHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL2FyY2hpdmVfY29udGV4dC5weQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC9hcmNoaXZlX2NvbnRleHQucHkJ
KHJldmlzaW9uIDI0OTkyNSkKKysrIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVs
L2FyY2hpdmVfY29udGV4dC5weQkod29ya2luZyBjb3B5KQpAQCAtMjEsMTMgKzIxLDE4IEBACiAj
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAKIGltcG9ydCBjYWxlbmRhcgoraW1wb3J0IGhhc2hsaWIKIGltcG9ydCBp
bworaW1wb3J0IGpzb24KIGltcG9ydCB0aW1lCiBpbXBvcnQgemlwZmlsZQogCiBmcm9tIGNhc3Nh
bmRyYS5jcWxlbmdpbmUgaW1wb3J0IGNvbHVtbnMKK2Zyb20gY2Fzc2FuZHJhLmNxbGVuZ2luZS5t
b2RlbHMgaW1wb3J0IE1vZGVsCitmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBPcmRlcmVkRGljdAog
ZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUKIGZyb20gcmVzdWx0c2RicHkuY29udHJvbGxl
ci5jb21taXQgaW1wb3J0IENvbW1pdAorZnJvbSByZXN1bHRzZGJweS5jb250cm9sbGVyLmNvbmZp
Z3VyYXRpb24gaW1wb3J0IENvbmZpZ3VyYXRpb24KIGZyb20gcmVzdWx0c2RicHkubW9kZWwuY29t
bWl0X2NvbnRleHQgaW1wb3J0IENvbW1pdENvbnRleHQKIGZyb20gcmVzdWx0c2RicHkubW9kZWwu
Y29uZmlndXJhdGlvbl9jb250ZXh0IGltcG9ydCBDbHVzdGVyZWRCeUNvbmZpZ3VyYXRpb24KIGZy
b20gcmVzdWx0c2RicHkubW9kZWwudXBsb2FkX2NvbnRleHQgaW1wb3J0IFVwbG9hZENvbnRleHQK
QEAgLTQzLDIzICs0OCwzNSBAQCBkZWYgX2dldF90aW1lKGlucHV0X3RpbWUpOgogCiBjbGFzcyBB
cmNoaXZlQ29udGV4dChvYmplY3QpOgogICAgIERFRkFVTFRfTElNSVQgPSAxMAorICAgIENIVU5L
X1NJWkUgPSAxMCAqIDEwMDAgKiAxMDAwICAjIENhc3NhbmRyYSBkb2Vzbid0IGRvIHdlbGwgd2l0
aCBkYXRhIGJsb2JzIG9mIG1vcmUgdGhhbiAxMCBNQgorICAgIE1FTU9SWV9MSU1JVCA9IDIgKiAx
MDAwICogMTAwMCAqIDEwMDAgICMgRG9uJ3QgYWxsb3cgbW9yZSB0aGFuIDIgZ2lncyBvZiBhcmNo
aXZlcyBpbiBtZW1vcnkgYXQgb25lIHRpbWUKIAotICAgIGNsYXNzIEFyY2hpdmVzQnlDb21taXQo
Q2x1c3RlcmVkQnlDb25maWd1cmF0aW9uKToKLSAgICAgICAgX190YWJsZV9uYW1lX18gPSAnYXJj
aGl2ZXNfYnlfY29tbWl0JworICAgIGNsYXNzIEFyY2hpdmVNZXRhRGF0YUJ5Q29tbWl0KENsdXN0
ZXJlZEJ5Q29uZmlndXJhdGlvbik6CisgICAgICAgIF9fdGFibGVfbmFtZV9fID0gJ2FyY2hpdmVf
bWV0YWRhdGFfYnlfY29tbWl0JwogICAgICAgICBzdWl0ZSA9IGNvbHVtbnMuVGV4dChwYXJ0aXRp
b25fa2V5PVRydWUsIHJlcXVpcmVkPVRydWUpCiAgICAgICAgIGJyYW5jaCA9IGNvbHVtbnMuVGV4
dChwYXJ0aXRpb25fa2V5PVRydWUsIHJlcXVpcmVkPVRydWUpCiAgICAgICAgIHV1aWQgPSBjb2x1
bW5zLkJpZ0ludChwcmltYXJ5X2tleT1UcnVlLCByZXF1aXJlZD1UcnVlLCBjbHVzdGVyaW5nX29y
ZGVyPSdERVNDJykKICAgICAgICAgc2RrID0gY29sdW1ucy5UZXh0KHByaW1hcnlfa2V5PVRydWUs
IHJlcXVpcmVkPVRydWUpCiAgICAgICAgIHN0YXJ0X3RpbWUgPSBjb2x1bW5zLkJpZ0ludChwcmlt
YXJ5X2tleT1UcnVlLCByZXF1aXJlZD1UcnVlKQotICAgICAgICBhcmNoaXZlID0gY29sdW1ucy5C
bG9iKHJlcXVpcmVkPVRydWUpCisgICAgICAgIGRpZ2VzdCA9IGNvbHVtbnMuVGV4dChyZXF1aXJl
ZD1UcnVlKQorICAgICAgICBzaXplID0gY29sdW1ucy5CaWdJbnQocmVxdWlyZWQ9VHJ1ZSkKIAog
ICAgICAgICBkZWYgdW5wYWNrKHNlbGYpOgogICAgICAgICAgICAgcmV0dXJuIGRpY3QoCiAgICAg
ICAgICAgICAgICAgdXVpZD1zZWxmLnV1aWQsCiAgICAgICAgICAgICAgICAgc3RhcnRfdGltZT1z
ZWxmLnN0YXJ0X3RpbWUsCi0gICAgICAgICAgICAgICAgYXJjaGl2ZT1pby5CeXRlc0lPKHNlbGYu
YXJjaGl2ZSksCisgICAgICAgICAgICAgICAgZGlnZXN0PXNlbGYuZGlnZXN0LAorICAgICAgICAg
ICAgICAgIHNpemU9c2VsZi5zaXplLAogICAgICAgICAgICAgKQogCisgICAgIyBBY2NvcmRpbmcg
dG8gaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9DQVNTQU5EUkEy
L0Nhc3NhbmRyYUxpbWl0YXRpb25zLCB3ZSBzaG91bGQgc2hhcmQKKyAgICAjIGxhcmdlIGRhdGEg
YmxvYnMuCisgICAgY2xhc3MgQXJjaGl2ZUNodW5rcyhNb2RlbCk6CisgICAgICAgIF9fdGFibGVf
bmFtZV9fID0gJ2FyY2hpdmVfY2h1bmtzJworICAgICAgICBkaWdlc3QgPSBjb2x1bW5zLlRleHQo
cGFydGl0aW9uX2tleT1UcnVlLCByZXF1aXJlZD1UcnVlKQorICAgICAgICBpbmRleCA9IGNvbHVt
bnMuSW50ZWdlcihwcmltYXJ5X2tleT1UcnVlLCByZXF1aXJlZD1UcnVlKQorICAgICAgICBjaHVu
ayA9IGNvbHVtbnMuQmxvYihyZXF1aXJlZD1UcnVlKQorCiAgICAgQGNsYXNzbWV0aG9kCiAgICAg
ZGVmIGFzc2VydF96aXBmaWxlKGNscywgYXJjaGl2ZSk6CiAgICAgICAgIGlmIG5vdCBpc2luc3Rh
bmNlKGFyY2hpdmUsIGlvLkJ5dGVzSU8pOgpAQCAtNzksNyArOTYsOCBAQCBjbGFzcyBBcmNoaXZl
Q29udGV4dChvYmplY3QpOgogICAgICAgICBzZWxmLnR0bF9zZWNvbmRzID0gdHRsX3NlY29uZHMK
IAogICAgICAgICB3aXRoIHNlbGY6Ci0gICAgICAgICAgICBzZWxmLmNhc3NhbmRyYS5jcmVhdGVf
dGFibGUoc2VsZi5BcmNoaXZlc0J5Q29tbWl0KQorICAgICAgICAgICAgc2VsZi5jYXNzYW5kcmEu
Y3JlYXRlX3RhYmxlKHNlbGYuQXJjaGl2ZU1ldGFEYXRhQnlDb21taXQpCisgICAgICAgICAgICBz
ZWxmLmNhc3NhbmRyYS5jcmVhdGVfdGFibGUoc2VsZi5BcmNoaXZlQ2h1bmtzKQogICAgICAgICAg
ICAgc2VsZi5jYXNzYW5kcmEuY3JlYXRlX3RhYmxlKFVwbG9hZENvbnRleHQuU3VpdGVzQnlDb25m
aWd1cmF0aW9uKQogCiAgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKQEAgLTEwNCwxMCArMTIyLDI2
IEBAIGNsYXNzIEFyY2hpdmVDb250ZXh0KG9iamVjdCk6CiAgICAgICAgICAgICAgICAgc2VsZi5j
b25maWd1cmF0aW9uX2NvbnRleHQuaW5zZXJ0X3Jvd193aXRoX2NvbmZpZ3VyYXRpb24oCiAgICAg
ICAgICAgICAgICAgICAgIFVwbG9hZENvbnRleHQuU3VpdGVzQnlDb25maWd1cmF0aW9uLl9fdGFi
bGVfbmFtZV9fLCBjb25maWd1cmF0aW9uLCBzdWl0ZT1zdWl0ZSwgYnJhbmNoPWJyYW5jaCwgdHRs
PXR0bCwKICAgICAgICAgICAgICAgICApCisKKyAgICAgICAgICAgICAgICAjIEJyZWFraW5nIHVw
IHRoZSBhcmNoaXZlIGludG8gY2h1bmtzCisgICAgICAgICAgICAgICAgaW5kZXggPSAwCisgICAg
ICAgICAgICAgICAgc2l6ZSA9IGxlbihhcmNoaXZlLmdldHZhbHVlKCkpCisgICAgICAgICAgICAg
ICAgZGlnZXN0ID0gaGFzaGxpYi5tZDUoYXJjaGl2ZS5nZXR2YWx1ZSgpKS5oZXhkaWdlc3QoKQor
ICAgICAgICAgICAgICAgIGFyY2hpdmUuc2VlaygwKQorICAgICAgICAgICAgICAgIHdoaWxlIHNp
emUgPiBpbmRleCAqIHNlbGYuQ0hVTktfU0laRToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5j
YXNzYW5kcmEuaW5zZXJ0X3JvdygKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuQXJjaGl2
ZUNodW5rcy5fX3RhYmxlX25hbWVfXywKKyAgICAgICAgICAgICAgICAgICAgICAgIGRpZ2VzdD1k
aWdlc3QsIGluZGV4PWluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgY2h1bms9YXJjaGl2
ZS5yZWFkKHNlbGYuQ0hVTktfU0laRSksCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAg
ICAgICAgICAgICAgaW5kZXggKz0gMQorCiAgICAgICAgICAgICAgICAgc2VsZi5jb25maWd1cmF0
aW9uX2NvbnRleHQuaW5zZXJ0X3Jvd193aXRoX2NvbmZpZ3VyYXRpb24oCi0gICAgICAgICAgICAg
ICAgICAgIHNlbGYuQXJjaGl2ZXNCeUNvbW1pdC5fX3RhYmxlX25hbWVfXywgY29uZmlndXJhdGlv
bj1jb25maWd1cmF0aW9uLCBzdWl0ZT1zdWl0ZSwKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5B
cmNoaXZlTWV0YURhdGFCeUNvbW1pdC5fX3RhYmxlX25hbWVfXywgY29uZmlndXJhdGlvbj1jb25m
aWd1cmF0aW9uLCBzdWl0ZT1zdWl0ZSwKICAgICAgICAgICAgICAgICAgICAgYnJhbmNoPWJyYW5j
aCwgdXVpZD11dWlkLCB0dGw9dHRsLAotICAgICAgICAgICAgICAgICAgICBhcmNoaXZlPWFyY2hp
dmUuZ2V0dmFsdWUoKSwgc2RrPWNvbmZpZ3VyYXRpb24uc2RrIG9yICc/Jywgc3RhcnRfdGltZT10
aW1lc3RhbXAsCisgICAgICAgICAgICAgICAgICAgIHNkaz1jb25maWd1cmF0aW9uLnNkayBvciAn
PycsIHN0YXJ0X3RpbWU9dGltZXN0YW1wLAorICAgICAgICAgICAgICAgICAgICBkaWdlc3Q9ZGln
ZXN0LAorICAgICAgICAgICAgICAgICAgICBzaXplPXNpemUsCiAgICAgICAgICAgICAgICAgKQog
CiAgICAgZGVmIGZpbmRfYXJjaGl2ZSgKQEAgLTEyMiwxNiArMTU2LDYwIEBAIGNsYXNzIEFyY2hp
dmVDb250ZXh0KG9iamVjdCk6CiAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoZidFeHBlY3Rl
ZCB0eXBlIHtzdHJ9LCBnb3Qge3R5cGUoc3VpdGUpfScpCiAKICAgICAgICAgd2l0aCBzZWxmOgot
ICAgICAgICAgICAgcmVzdWx0ID0ge30KKyAgICAgICAgICAgIG1ldGFkYXRhX2J5X2NvbmZpZyA9
IHt9CiAgICAgICAgICAgICBmb3IgY29uZmlndXJhdGlvbiBpbiBjb25maWd1cmF0aW9uczoKLSAg
ICAgICAgICAgICAgICByZXN1bHQudXBkYXRlKHtjb25maWc6IFt2YWx1ZS51bnBhY2soKSBmb3Ig
dmFsdWUgaW4gdmFsdWVzXSBmb3IgY29uZmlnLCB2YWx1ZXMgaW4gc2VsZi5jb25maWd1cmF0aW9u
X2NvbnRleHQuc2VsZWN0X2Zyb21fdGFibGVfd2l0aF9jb25maWd1cmF0aW9ucygKLSAgICAgICAg
ICAgICAgICAgICAgc2VsZi5BcmNoaXZlc0J5Q29tbWl0Ll9fdGFibGVfbmFtZV9fLCBjb25maWd1
cmF0aW9ucz1bY29uZmlndXJhdGlvbl0sIHJlY2VudD1yZWNlbnQsCisgICAgICAgICAgICAgICAg
bWV0YWRhdGFfYnlfY29uZmlnLnVwZGF0ZSh7Y29uZmlnOiBbdmFsdWUudW5wYWNrKCkgZm9yIHZh
bHVlIGluIHZhbHVlc10gZm9yIGNvbmZpZywgdmFsdWVzIGluIHNlbGYuY29uZmlndXJhdGlvbl9j
b250ZXh0LnNlbGVjdF9mcm9tX3RhYmxlX3dpdGhfY29uZmlndXJhdGlvbnMoCisgICAgICAgICAg
ICAgICAgICAgIHNlbGYuQXJjaGl2ZU1ldGFEYXRhQnlDb21taXQuX190YWJsZV9uYW1lX18sIGNv
bmZpZ3VyYXRpb25zPVtjb25maWd1cmF0aW9uXSwgcmVjZW50PXJlY2VudCwKICAgICAgICAgICAg
ICAgICAgICAgc3VpdGU9c3VpdGUsIHNkaz1jb25maWd1cmF0aW9uLnNkaywgYnJhbmNoPWJyYW5j
aCBvciBzZWxmLmNvbW1pdF9jb250ZXh0LkRFRkFVTFRfQlJBTkNIX0tFWSwKICAgICAgICAgICAg
ICAgICAgICAgdXVpZF9fZ3RlPUNvbW1pdENvbnRleHQuY29udmVydF90b191dWlkKGJlZ2luKSwK
ICAgICAgICAgICAgICAgICAgICAgdXVpZF9fbHRlPUNvbW1pdENvbnRleHQuY29udmVydF90b191
dWlkKGVuZCwgQ29tbWl0Q29udGV4dC50aW1lc3RhbXBfdG9fdXVpZCgpKSwKICAgICAgICAgICAg
ICAgICAgICAgc3RhcnRfdGltZV9fZ3RlPV9nZXRfdGltZShiZWdpbl9xdWVyeV90aW1lKSwgc3Rh
cnRfdGltZV9fbHRlPV9nZXRfdGltZShlbmRfcXVlcnlfdGltZSksCiAgICAgICAgICAgICAgICAg
ICAgIGxpbWl0PWxpbWl0LAogICAgICAgICAgICAgICAgICkuaXRlbXMoKX0pCisKKyAgICAgICAg
ICAgIG1lbW9yeV91c2VkID0gMAorICAgICAgICAgICAgZm9yIHZhbHVlcyBpbiBtZXRhZGF0YV9i
eV9jb25maWcudmFsdWVzKCk6CisgICAgICAgICAgICAgICAgZm9yIHZhbHVlIGluIHZhbHVlczoK
KyAgICAgICAgICAgICAgICAgICAgaWYgbm90IHZhbHVlLmdldCgnZGlnZXN0Jyk6CisgICAgICAg
ICAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAgICAgICAgIG1lbW9yeV91
c2VkICs9IHZhbHVlLmdldCgnc2l6ZScsIDApCisgICAgICAgICAgICAgICAgICAgIGlmIG1lbW9y
eV91c2VkID4gc2VsZi5NRU1PUllfTElNSVQ6CisgICAgICAgICAgICAgICAgICAgICAgICByYWlz
ZSBSdW50aW1lRXJyb3IoJ0hpdCBzb2Z0LW1lbW9yeSBjYXAgd2hlbiBmZXRjaGluZyBhcmNoaXZl
cywgYWJvcnRpbmcnKQorCisgICAgICAgICAgICByZXN1bHQgPSB7fQorICAgICAgICAgICAgZm9y
IGNvbmZpZywgdmFsdWVzIGluIG1ldGFkYXRhX2J5X2NvbmZpZy5pdGVtcygpOgorICAgICAgICAg
ICAgICAgIGZvciB2YWx1ZSBpbiB2YWx1ZXM6CisgICAgICAgICAgICAgICAgICAgIGlmIG5vdCB2
YWx1ZS5nZXQoJ2RpZ2VzdCcpOgorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKwor
ICAgICAgICAgICAgICAgICAgICByb3dzID0gc2VsZi5jYXNzYW5kcmEuc2VsZWN0X2Zyb21fdGFi
bGUoCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLkFyY2hpdmVDaHVua3MuX190YWJsZV9u
YW1lX18sCisgICAgICAgICAgICAgICAgICAgICAgICBkaWdlc3Q9dmFsdWUuZ2V0KCdkaWdlc3Qn
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpbWl0PTEgKyBpbnQodmFsdWUuZ2V0KCdzaXpl
JywgMCkgLyBzZWxmLkNIVU5LX1NJWkUpLAorICAgICAgICAgICAgICAgICAgICApCisgICAgICAg
ICAgICAgICAgICAgIGlmIGxlbihyb3dzKSA9PSAwOgorICAgICAgICAgICAgICAgICAgICAgICAg
Y29udGludWUKKworICAgICAgICAgICAgICAgICAgICBkaWdlc3QgPSBoYXNobGliLm1kNSgpCisg
ICAgICAgICAgICAgICAgICAgIGFyY2hpdmUgPSBpby5CeXRlc0lPKCkKKyAgICAgICAgICAgICAg
ICAgICAgYXJjaGl2ZV9zaXplID0gMAorICAgICAgICAgICAgICAgICAgICBmb3Igcm93IGluIHJv
d3M6CisgICAgICAgICAgICAgICAgICAgICAgICBhcmNoaXZlX3NpemUgKz0gbGVuKHJvdy5jaHVu
aykKKyAgICAgICAgICAgICAgICAgICAgICAgIGRpZ2VzdC51cGRhdGUocm93LmNodW5rKQorICAg
ICAgICAgICAgICAgICAgICAgICAgYXJjaGl2ZS53cml0ZShyb3cuY2h1bmspCisKKyAgICAgICAg
ICAgICAgICAgICAgaWYgYXJjaGl2ZV9zaXplICE9IHZhbHVlLmdldCgnc2l6ZScsIDApIG9yIHZh
bHVlLmdldCgnZGlnZXN0JywgJycpICE9IGRpZ2VzdC5oZXhkaWdlc3QoKToKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignRmFpbGVkIHRvIHJlY29uc3RydWN0IGFy
Y2hpdmUgZnJvbSBjaHVua3MnKQorCisgICAgICAgICAgICAgICAgICAgIGFyY2hpdmUuc2Vlaygw
KQorICAgICAgICAgICAgICAgICAgICByZXN1bHQuc2V0ZGVmYXVsdChjb25maWcsIFtdKQorICAg
ICAgICAgICAgICAgICAgICByZXN1bHRbY29uZmlnXS5hcHBlbmQoZGljdCgKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGFyY2hpdmU9YXJjaGl2ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHV1
aWQ9dmFsdWVbJ3V1aWQnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X3RpbWU9dmFs
dWVbJ3N0YXJ0X3RpbWUnXSwKKyAgICAgICAgICAgICAgICAgICAgKSkKKwogICAgICAgICAgICAg
cmV0dXJuIHJlc3VsdAogCiAgICAgQGNsYXNzbWV0aG9kCkluZGV4OiBUb29scy9yZXN1bHRzZGJw
eS9yZXN1bHRzZGJweS9tb2RlbC9hcmNoaXZlX2NvbnRleHRfdW5pdHRlc3QucHkKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvYXJjaGl2ZV9jb250ZXh0
X3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyNDk5MjUpCisrKyBUb29scy9yZXN1bHRzZGJweS9yZXN1
bHRzZGJweS9tb2RlbC9hcmNoaXZlX2NvbnRleHRfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkK
QEAgLTIxLDYgKzIxLDEwIEBACiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIGltcG9ydCBiYXNlNjQKK2ltcG9y
dCBpbworaW1wb3J0IG1vY2sKK2ltcG9ydCBvcworaW1wb3J0IHppcGZpbGUKIAogZnJvbSBmYWtl
cmVkaXMgaW1wb3J0IEZha2VTdHJpY3RSZWRpcwogZnJvbSByZWRpcyBpbXBvcnQgU3RyaWN0UmVk
aXMKQEAgLTM1LDEwICszOSwxMCBAQCBmcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLndhaXRfZm9yX2Rv
Y2tlcl90CiBjbGFzcyBBcmNoaXZlQ29udGV4dFRlc3QoV2FpdEZvckRvY2tlclRlc3RDYXNlKToK
ICAgICBLRVlTUEFDRSA9ICdhcmNoaXZlX3Rlc3Rfa2V5c3BhY2UnCiAKLSAgICBkZWYgaW5pdF9k
YXRhYmFzZShzZWxmLCByZWRpcz1TdHJpY3RSZWRpcywgY2Fzc2FuZHJhPUNhc3NhbmRyYUNvbnRl
eHQpOgorICAgIGRlZiBpbml0X2RhdGFiYXNlKHNlbGYsIHJlZGlzPVN0cmljdFJlZGlzLCBjYXNz
YW5kcmE9Q2Fzc2FuZHJhQ29udGV4dCwgY29uZmlndXJhdGlvbj1Db25maWd1cmF0aW9uKCksIGFy
Y2hpdmU9Tm9uZSk6CiAgICAgICAgIGNhc3NhbmRyYS5kcm9wX2tleXNwYWNlKGtleXNwYWNlPXNl
bGYuS0VZU1BBQ0UpCiAgICAgICAgIHNlbGYubW9kZWwgPSBNb2NrTW9kZWxGYWN0b3J5LmNyZWF0
ZShyZWRpcz1yZWRpcygpLCBjYXNzYW5kcmE9Y2Fzc2FuZHJhKGtleXNwYWNlPXNlbGYuS0VZU1BB
Q0UsIGNyZWF0ZV9rZXlzcGFjZT1UcnVlKSkKLSAgICAgICAgTW9ja01vZGVsRmFjdG9yeS5hZGRf
bW9ja19hcmNoaXZlcyhzZWxmLm1vZGVsKQorICAgICAgICBNb2NrTW9kZWxGYWN0b3J5LmFkZF9t
b2NrX2FyY2hpdmVzKHNlbGYubW9kZWwsIGNvbmZpZ3VyYXRpb249Y29uZmlndXJhdGlvbiwgYXJj
aGl2ZT1hcmNoaXZlKQogCiAgICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2Rv
Y2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3Nh
bmRyYUNvbnRleHQpCiAgICAgZGVmIHRlc3RfZmluZF9hcmNoaXZlKHNlbGYsIHJlZGlzPVN0cmlj
dFJlZGlzLCBjYXNzYW5kcmE9Q2Fzc2FuZHJhQ29udGV4dCk6CkBAIC04OCwzICs5MiwzNyBAQCBj
bGFzcyBBcmNoaXZlQ29udGV4dFRlc3QoV2FpdEZvckRvY2tlclRlCiAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwobGVuKG5leHQoaXRlcihmaWxlcy52YWx1ZXMoKSkpKSwgMSkKICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChuZXh0KGl0ZXIoZmlsZXMudmFsdWVzKCkpKVswXVsndXVpZCddLCAxNTM4
MDQ5MTA4MDApCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV4dChpdGVyKGZpbGVzLnZhbHVl
cygpKSlbMF1bJ2ZpbGUnXSwgWydmaWxlLnR4dCcsICdpbmRleC5odG1sJ10pCisKKyAgICBAV2Fp
dEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmlj
dFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKKyAgICBkZWYgdGVz
dF9sYXJnZV9hcmNoaXZlKHNlbGYsIHJlZGlzPVN0cmljdFJlZGlzLCBjYXNzYW5kcmE9Q2Fzc2Fu
ZHJhQ29udGV4dCk6CisgICAgICAgIEZJTEVfU0laRSA9IDI1ICogMTAwMCAqIDEwMDAgICMgMjUg
TUIgZmlsZXMKKyAgICAgICAgYnVmZiA9IGlvLkJ5dGVzSU8oKQorICAgICAgICB3aXRoIHppcGZp
bGUuWmlwRmlsZShidWZmLCAnYScsIHppcGZpbGUuWklQX0RFRkxBVEVELCBGYWxzZSkgYXMgYXJj
aGl2ZToKKyAgICAgICAgICAgIGZvciBmaWxlLCBkYXRhIGluIFsKKyAgICAgICAgICAgICAgICAo
J2ZpbGUtMS50eHQnLCBpby5CeXRlc0lPKG9zLnVyYW5kb20oRklMRV9TSVpFKSkpLAorICAgICAg
ICAgICAgICAgICgnZmlsZS0yLnR4dCcsIGlvLkJ5dGVzSU8ob3MudXJhbmRvbShGSUxFX1NJWkUp
KSksCisgICAgICAgICAgICAgICAgKCdmaWxlLTMudHh0JywgaW8uQnl0ZXNJTyhvcy51cmFuZG9t
KEZJTEVfU0laRSkpKSwKKyAgICAgICAgICAgIF06CisgICAgICAgICAgICAgICAgYXJjaGl2ZS53
cml0ZXN0cihmaWxlLCBkYXRhLmdldHZhbHVlKCkpCisKKyAgICAgICAgc2VsZi5pbml0X2RhdGFi
YXNlKAorICAgICAgICAgICAgcmVkaXM9cmVkaXMsIGNhc3NhbmRyYT1jYXNzYW5kcmEsCisgICAg
ICAgICAgICBjb25maWd1cmF0aW9uPUNvbmZpZ3VyYXRpb24ocGxhdGZvcm09J01hYycsIHN0eWxl
PSdSZWxlYXNlJywgZmxhdm9yPSd3azEnKSwKKyAgICAgICAgICAgIGFyY2hpdmU9YnVmZiwKKyAg
ICAgICAgKQorCisgICAgICAgIGZpbGVzID0gc2VsZi5tb2RlbC5hcmNoaXZlX2NvbnRleHQuZmlu
ZF9hcmNoaXZlKAorICAgICAgICAgICAgY29uZmlndXJhdGlvbnM9W0NvbmZpZ3VyYXRpb24ocGxh
dGZvcm09J01hYycsIHN0eWxlPSdSZWxlYXNlJywgZmxhdm9yPSd3azEnKV0sCisgICAgICAgICAg
ICBiZWdpbj1Nb2NrU1ZOUmVwb3NpdG9yeS53ZWJraXQoKS5jb21taXRfZm9yX2lkKDIzNjU0Miks
IGVuZD1Nb2NrU1ZOUmVwb3NpdG9yeS53ZWJraXQoKS5jb21taXRfZm9yX2lkKDIzNjU0MiksCisg
ICAgICAgICAgICBzdWl0ZT0nbGF5b3V0LXRlc3RzJywKKyAgICAgICAgKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGxlbihuZXh0KGl0ZXIoZmlsZXMudmFsdWVzKCkpKSksIDEpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwobmV4dChpdGVyKGZpbGVzLnZhbHVlcygpKSlbMF1bJ3V1aWQnXSwg
MTUzODA0OTEwODAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5leHQoaXRlcihmaWxlcy52
YWx1ZXMoKSkpWzBdWydhcmNoaXZlJ10uZ2V0dmFsdWUoKSwgYnVmZi5nZXR2YWx1ZSgpKQorCisg
ICAgICAgIHdpdGggbW9jay5wYXRjaCgncmVzdWx0c2RicHkubW9kZWwuYXJjaGl2ZV9jb250ZXh0
LkFyY2hpdmVDb250ZXh0Lk1FTU9SWV9MSU1JVCcsIG5ldz1GSUxFX1NJWkUpLCBzZWxmLmFzc2Vy
dFJhaXNlcyhSdW50aW1lRXJyb3IpOgorICAgICAgICAgICAgc2VsZi5tb2RlbC5hcmNoaXZlX2Nv
bnRleHQuZmluZF9hcmNoaXZlKAorICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25zPVtDb25m
aWd1cmF0aW9uKHBsYXRmb3JtPSdNYWMnLCBzdHlsZT0nUmVsZWFzZScsIGZsYXZvcj0nd2sxJyld
LAorICAgICAgICAgICAgICAgIGJlZ2luPU1vY2tTVk5SZXBvc2l0b3J5LndlYmtpdCgpLmNvbW1p
dF9mb3JfaWQoMjM2NTQyKSwgZW5kPU1vY2tTVk5SZXBvc2l0b3J5LndlYmtpdCgpLmNvbW1pdF9m
b3JfaWQoMjM2NTQyKSwKKyAgICAgICAgICAgICAgICBzdWl0ZT0nbGF5b3V0LXRlc3RzJywKKyAg
ICAgICAgICAgICkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378908</attachid>
            <date>2019-09-16 16:11:10 -0700</date>
            <delta_ts>2019-09-16 17:13:22 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-201734-20190916161109.patch</filename>
            <type>text/plain</type>
            <size>13179</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI0OTkyNSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDMxIEBACisyMDE5LTA5LTE2ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICByZXN1bHRzLndlYmtpdC5vcmc6IFNoYXJkIHJlc3VsdCBhcmNoaXZlcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAxNzM0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgRGV3ZWkgWmh1LgorCisgICAgICAgIENhc3NhbmRyYSBhZHZl
cnRpc2VzIGJlaW5nIGFibGUgdG8gc3RvcmUgdXAgdG8gMiBHQiBpbiBhIHNpbmdsZSBibG9iLXN0
b3JhZ2Ugcm93LgorICAgICAgICBJbiBwcmFjdGljZSwgdGhpcyB1c3VhbGx5IGRvZXNuJ3Qgd29y
ayBhY2NvcmRpbmcgdG8gdGhlIENhc3NhbmRyYSBkZXZlbG9wZXJzLAorICAgICAgICBsYXJnZSBi
bG9icyBzaG91bGQgYmUgYnJva2VuIHVwIGludG8gc2hhcmRzIG9mLCBhdCBtb3N0LCAxMCBNQi4K
KworICAgICAgICAqIHJlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL2FyY2hpdmVfY29udGV4
dC5weToKKyAgICAgICAgKEFyY2hpdmVDb250ZXh0KToKKyAgICAgICAgKEFyY2hpdmVDb250ZXh0
LkFyY2hpdmVNZXRhRGF0YUJ5Q29tbWl0KTogUG9pbnQgdG8gdGhlIGFyY2hpdmUgc2hhcmRzIGJ5
IGhhc2guCisgICAgICAgIChBcmNoaXZlQ29udGV4dC5BcmNoaXZlTWV0YURhdGFCeUNvbW1pdC51
bnBhY2spOgorICAgICAgICAoQXJjaGl2ZUNvbnRleHQuQXJjaGl2ZUNodW5rcyk6IFN0b3JlIGFy
Y2hpdmUgc2hhcmRzLCBpbmRleGVkIGJ5IGhhc2guCisgICAgICAgIChBcmNoaXZlQ29udGV4dC5f
X2luaXRfXyk6CisgICAgICAgIChBcmNoaXZlQ29udGV4dC5yZWdpc3Rlcik6IFdoZW4gc2F2aW5n
IGFyY2hpdmVzLCBzYXZlIGEgcmVmZXJlbmNlIGhhc2ggYW5kIHRoZW4KKyAgICAgICAgc2hhcmQg
dGhlIGFjdHVhbCBhcmNoaXZlIGRhdGEgYmVmb3JlIHNhdmluZy4KKyAgICAgICAgKEFyY2hpdmVD
b250ZXh0LmZpbmRfYXJjaGl2ZSk6IFNlYXJjaCBmb3IgYXJjaGl2ZSBieSBtZXRhLWRhdGEsIHRo
ZW4gcmVjb25zdHJ1Y3QKKyAgICAgICAgdGhlIGFyY2hpdmUuIFJhaXNlIGFuIGV4Y2VwdGlvbiBp
ZiB3ZSBkZXRlcm1pbmUgdGhhdCBtZW1vcnkgdXNhZ2UgaXMgYSBwcm9ibGVtLgorICAgICAgICAo
QXJjaGl2ZUNvbnRleHQuQXJjaGl2ZXNCeUNvbW1pdCk6IERlbGV0ZWQuCisgICAgICAgIChBcmNo
aXZlQ29udGV4dC5BcmNoaXZlc0J5Q29tbWl0LnVucGFjayk6IERlbGV0ZWQuCisgICAgICAgICog
cmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvYXJjaGl2ZV9jb250ZXh0X3VuaXR0ZXN0LnB5
OgorICAgICAgICAoQXJjaGl2ZUNvbnRleHRUZXN0LmluaXRfZGF0YWJhc2UpOiBBbGxvdyBjb25m
aWd1cmF0aW9uIGFuZCBhcmNoaXZlIHRvIGJlIHNwZWNpZmllZC4KKyAgICAgICAgKEFyY2hpdmVD
b250ZXh0VGVzdCk6CisgICAgICAgIChBcmNoaXZlQ29udGV4dFRlc3QudGVzdF9sYXJnZV9hcmNo
aXZlKTogVGVzdCBhcmNoaXZlIHNoYXJkaW5nLgorCiAyMDE5LTA5LTE2ICBKb25hdGhhbiBCZWRh
cmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KIAogICAgICAgICByZXN1bHRzLndlYmtpdC5vcmc6IENv
bmZpZ3VyYXRpb25zIHNob3VsZCBiZSBicmFuY2ggc3BlY2lmaWMKSW5kZXg6IFRvb2xzL3Jlc3Vs
dHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL2FyY2hpdmVfY29udGV4dC5weQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC9hcmNoaXZlX2NvbnRleHQucHkJ
KHJldmlzaW9uIDI0OTkyNSkKKysrIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVs
L2FyY2hpdmVfY29udGV4dC5weQkod29ya2luZyBjb3B5KQpAQCAtMjEsMTMgKzIxLDE4IEBACiAj
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAKIGltcG9ydCBjYWxlbmRhcgoraW1wb3J0IGhhc2hsaWIKIGltcG9ydCBp
bworaW1wb3J0IGpzb24KIGltcG9ydCB0aW1lCiBpbXBvcnQgemlwZmlsZQogCiBmcm9tIGNhc3Nh
bmRyYS5jcWxlbmdpbmUgaW1wb3J0IGNvbHVtbnMKK2Zyb20gY2Fzc2FuZHJhLmNxbGVuZ2luZS5t
b2RlbHMgaW1wb3J0IE1vZGVsCitmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBPcmRlcmVkRGljdAog
ZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUKIGZyb20gcmVzdWx0c2RicHkuY29udHJvbGxl
ci5jb21taXQgaW1wb3J0IENvbW1pdAorZnJvbSByZXN1bHRzZGJweS5jb250cm9sbGVyLmNvbmZp
Z3VyYXRpb24gaW1wb3J0IENvbmZpZ3VyYXRpb24KIGZyb20gcmVzdWx0c2RicHkubW9kZWwuY29t
bWl0X2NvbnRleHQgaW1wb3J0IENvbW1pdENvbnRleHQKIGZyb20gcmVzdWx0c2RicHkubW9kZWwu
Y29uZmlndXJhdGlvbl9jb250ZXh0IGltcG9ydCBDbHVzdGVyZWRCeUNvbmZpZ3VyYXRpb24KIGZy
b20gcmVzdWx0c2RicHkubW9kZWwudXBsb2FkX2NvbnRleHQgaW1wb3J0IFVwbG9hZENvbnRleHQK
QEAgLTQzLDIzICs0OCwzNSBAQCBkZWYgX2dldF90aW1lKGlucHV0X3RpbWUpOgogCiBjbGFzcyBB
cmNoaXZlQ29udGV4dChvYmplY3QpOgogICAgIERFRkFVTFRfTElNSVQgPSAxMAorICAgIENIVU5L
X1NJWkUgPSAxMCAqIDEwMjQgKiAxMDI0ICAjIENhc3NhbmRyYSBkb2Vzbid0IGRvIHdlbGwgd2l0
aCBkYXRhIGJsb2JzIG9mIG1vcmUgdGhhbiAxMCBNQgorICAgIE1FTU9SWV9MSU1JVCA9IDIgKiAx
MDI0ICogMTAyNCAqIDEwMjQgICMgRG9uJ3QgYWxsb3cgbW9yZSB0aGFuIDIgZ2lncyBvZiBhcmNo
aXZlcyBpbiBtZW1vcnkgYXQgb25lIHRpbWUKIAotICAgIGNsYXNzIEFyY2hpdmVzQnlDb21taXQo
Q2x1c3RlcmVkQnlDb25maWd1cmF0aW9uKToKLSAgICAgICAgX190YWJsZV9uYW1lX18gPSAnYXJj
aGl2ZXNfYnlfY29tbWl0JworICAgIGNsYXNzIEFyY2hpdmVNZXRhRGF0YUJ5Q29tbWl0KENsdXN0
ZXJlZEJ5Q29uZmlndXJhdGlvbik6CisgICAgICAgIF9fdGFibGVfbmFtZV9fID0gJ2FyY2hpdmVf
bWV0YWRhdGFfYnlfY29tbWl0JwogICAgICAgICBzdWl0ZSA9IGNvbHVtbnMuVGV4dChwYXJ0aXRp
b25fa2V5PVRydWUsIHJlcXVpcmVkPVRydWUpCiAgICAgICAgIGJyYW5jaCA9IGNvbHVtbnMuVGV4
dChwYXJ0aXRpb25fa2V5PVRydWUsIHJlcXVpcmVkPVRydWUpCiAgICAgICAgIHV1aWQgPSBjb2x1
bW5zLkJpZ0ludChwcmltYXJ5X2tleT1UcnVlLCByZXF1aXJlZD1UcnVlLCBjbHVzdGVyaW5nX29y
ZGVyPSdERVNDJykKICAgICAgICAgc2RrID0gY29sdW1ucy5UZXh0KHByaW1hcnlfa2V5PVRydWUs
IHJlcXVpcmVkPVRydWUpCiAgICAgICAgIHN0YXJ0X3RpbWUgPSBjb2x1bW5zLkJpZ0ludChwcmlt
YXJ5X2tleT1UcnVlLCByZXF1aXJlZD1UcnVlKQotICAgICAgICBhcmNoaXZlID0gY29sdW1ucy5C
bG9iKHJlcXVpcmVkPVRydWUpCisgICAgICAgIGRpZ2VzdCA9IGNvbHVtbnMuVGV4dChyZXF1aXJl
ZD1UcnVlKQorICAgICAgICBzaXplID0gY29sdW1ucy5CaWdJbnQocmVxdWlyZWQ9VHJ1ZSkKIAog
ICAgICAgICBkZWYgdW5wYWNrKHNlbGYpOgogICAgICAgICAgICAgcmV0dXJuIGRpY3QoCiAgICAg
ICAgICAgICAgICAgdXVpZD1zZWxmLnV1aWQsCiAgICAgICAgICAgICAgICAgc3RhcnRfdGltZT1z
ZWxmLnN0YXJ0X3RpbWUsCi0gICAgICAgICAgICAgICAgYXJjaGl2ZT1pby5CeXRlc0lPKHNlbGYu
YXJjaGl2ZSksCisgICAgICAgICAgICAgICAgZGlnZXN0PXNlbGYuZGlnZXN0LAorICAgICAgICAg
ICAgICAgIHNpemU9c2VsZi5zaXplLAogICAgICAgICAgICAgKQogCisgICAgIyBBY2NvcmRpbmcg
dG8gaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9DQVNTQU5EUkEy
L0Nhc3NhbmRyYUxpbWl0YXRpb25zLCB3ZSBzaG91bGQgc2hhcmQKKyAgICAjIGxhcmdlIGRhdGEg
YmxvYnMuCisgICAgY2xhc3MgQXJjaGl2ZUNodW5rcyhNb2RlbCk6CisgICAgICAgIF9fdGFibGVf
bmFtZV9fID0gJ2FyY2hpdmVfY2h1bmtzJworICAgICAgICBkaWdlc3QgPSBjb2x1bW5zLlRleHQo
cGFydGl0aW9uX2tleT1UcnVlLCByZXF1aXJlZD1UcnVlKQorICAgICAgICBpbmRleCA9IGNvbHVt
bnMuSW50ZWdlcihwcmltYXJ5X2tleT1UcnVlLCByZXF1aXJlZD1UcnVlKQorICAgICAgICBjaHVu
ayA9IGNvbHVtbnMuQmxvYihyZXF1aXJlZD1UcnVlKQorCiAgICAgQGNsYXNzbWV0aG9kCiAgICAg
ZGVmIGFzc2VydF96aXBmaWxlKGNscywgYXJjaGl2ZSk6CiAgICAgICAgIGlmIG5vdCBpc2luc3Rh
bmNlKGFyY2hpdmUsIGlvLkJ5dGVzSU8pOgpAQCAtNzksNyArOTYsOCBAQCBjbGFzcyBBcmNoaXZl
Q29udGV4dChvYmplY3QpOgogICAgICAgICBzZWxmLnR0bF9zZWNvbmRzID0gdHRsX3NlY29uZHMK
IAogICAgICAgICB3aXRoIHNlbGY6Ci0gICAgICAgICAgICBzZWxmLmNhc3NhbmRyYS5jcmVhdGVf
dGFibGUoc2VsZi5BcmNoaXZlc0J5Q29tbWl0KQorICAgICAgICAgICAgc2VsZi5jYXNzYW5kcmEu
Y3JlYXRlX3RhYmxlKHNlbGYuQXJjaGl2ZU1ldGFEYXRhQnlDb21taXQpCisgICAgICAgICAgICBz
ZWxmLmNhc3NhbmRyYS5jcmVhdGVfdGFibGUoc2VsZi5BcmNoaXZlQ2h1bmtzKQogICAgICAgICAg
ICAgc2VsZi5jYXNzYW5kcmEuY3JlYXRlX3RhYmxlKFVwbG9hZENvbnRleHQuU3VpdGVzQnlDb25m
aWd1cmF0aW9uKQogCiAgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKQEAgLTEwNCwxMCArMTIyLDI2
IEBAIGNsYXNzIEFyY2hpdmVDb250ZXh0KG9iamVjdCk6CiAgICAgICAgICAgICAgICAgc2VsZi5j
b25maWd1cmF0aW9uX2NvbnRleHQuaW5zZXJ0X3Jvd193aXRoX2NvbmZpZ3VyYXRpb24oCiAgICAg
ICAgICAgICAgICAgICAgIFVwbG9hZENvbnRleHQuU3VpdGVzQnlDb25maWd1cmF0aW9uLl9fdGFi
bGVfbmFtZV9fLCBjb25maWd1cmF0aW9uLCBzdWl0ZT1zdWl0ZSwgYnJhbmNoPWJyYW5jaCwgdHRs
PXR0bCwKICAgICAgICAgICAgICAgICApCisKKyAgICAgICAgICAgICAgICAjIEJyZWFraW5nIHVw
IHRoZSBhcmNoaXZlIGludG8gY2h1bmtzCisgICAgICAgICAgICAgICAgaW5kZXggPSAwCisgICAg
ICAgICAgICAgICAgc2l6ZSA9IGxlbihhcmNoaXZlLmdldHZhbHVlKCkpCisgICAgICAgICAgICAg
ICAgZGlnZXN0ID0gaGFzaGxpYi5tZDUoYXJjaGl2ZS5nZXR2YWx1ZSgpKS5oZXhkaWdlc3QoKQor
ICAgICAgICAgICAgICAgIGFyY2hpdmUuc2VlaygwKQorICAgICAgICAgICAgICAgIHdoaWxlIHNp
emUgPiBpbmRleCAqIHNlbGYuQ0hVTktfU0laRToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5j
YXNzYW5kcmEuaW5zZXJ0X3JvdygKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuQXJjaGl2
ZUNodW5rcy5fX3RhYmxlX25hbWVfXywKKyAgICAgICAgICAgICAgICAgICAgICAgIGRpZ2VzdD1k
aWdlc3QsIGluZGV4PWluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgY2h1bms9YXJjaGl2
ZS5yZWFkKHNlbGYuQ0hVTktfU0laRSksCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAg
ICAgICAgICAgICAgaW5kZXggKz0gMQorCiAgICAgICAgICAgICAgICAgc2VsZi5jb25maWd1cmF0
aW9uX2NvbnRleHQuaW5zZXJ0X3Jvd193aXRoX2NvbmZpZ3VyYXRpb24oCi0gICAgICAgICAgICAg
ICAgICAgIHNlbGYuQXJjaGl2ZXNCeUNvbW1pdC5fX3RhYmxlX25hbWVfXywgY29uZmlndXJhdGlv
bj1jb25maWd1cmF0aW9uLCBzdWl0ZT1zdWl0ZSwKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5B
cmNoaXZlTWV0YURhdGFCeUNvbW1pdC5fX3RhYmxlX25hbWVfXywgY29uZmlndXJhdGlvbj1jb25m
aWd1cmF0aW9uLCBzdWl0ZT1zdWl0ZSwKICAgICAgICAgICAgICAgICAgICAgYnJhbmNoPWJyYW5j
aCwgdXVpZD11dWlkLCB0dGw9dHRsLAotICAgICAgICAgICAgICAgICAgICBhcmNoaXZlPWFyY2hp
dmUuZ2V0dmFsdWUoKSwgc2RrPWNvbmZpZ3VyYXRpb24uc2RrIG9yICc/Jywgc3RhcnRfdGltZT10
aW1lc3RhbXAsCisgICAgICAgICAgICAgICAgICAgIHNkaz1jb25maWd1cmF0aW9uLnNkayBvciAn
PycsIHN0YXJ0X3RpbWU9dGltZXN0YW1wLAorICAgICAgICAgICAgICAgICAgICBkaWdlc3Q9ZGln
ZXN0LAorICAgICAgICAgICAgICAgICAgICBzaXplPXNpemUsCiAgICAgICAgICAgICAgICAgKQog
CiAgICAgZGVmIGZpbmRfYXJjaGl2ZSgKQEAgLTEyMiwxNiArMTU2LDYwIEBAIGNsYXNzIEFyY2hp
dmVDb250ZXh0KG9iamVjdCk6CiAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoZidFeHBlY3Rl
ZCB0eXBlIHtzdHJ9LCBnb3Qge3R5cGUoc3VpdGUpfScpCiAKICAgICAgICAgd2l0aCBzZWxmOgot
ICAgICAgICAgICAgcmVzdWx0ID0ge30KKyAgICAgICAgICAgIG1ldGFkYXRhX2J5X2NvbmZpZyA9
IHt9CiAgICAgICAgICAgICBmb3IgY29uZmlndXJhdGlvbiBpbiBjb25maWd1cmF0aW9uczoKLSAg
ICAgICAgICAgICAgICByZXN1bHQudXBkYXRlKHtjb25maWc6IFt2YWx1ZS51bnBhY2soKSBmb3Ig
dmFsdWUgaW4gdmFsdWVzXSBmb3IgY29uZmlnLCB2YWx1ZXMgaW4gc2VsZi5jb25maWd1cmF0aW9u
X2NvbnRleHQuc2VsZWN0X2Zyb21fdGFibGVfd2l0aF9jb25maWd1cmF0aW9ucygKLSAgICAgICAg
ICAgICAgICAgICAgc2VsZi5BcmNoaXZlc0J5Q29tbWl0Ll9fdGFibGVfbmFtZV9fLCBjb25maWd1
cmF0aW9ucz1bY29uZmlndXJhdGlvbl0sIHJlY2VudD1yZWNlbnQsCisgICAgICAgICAgICAgICAg
bWV0YWRhdGFfYnlfY29uZmlnLnVwZGF0ZSh7Y29uZmlnOiBbdmFsdWUudW5wYWNrKCkgZm9yIHZh
bHVlIGluIHZhbHVlc10gZm9yIGNvbmZpZywgdmFsdWVzIGluIHNlbGYuY29uZmlndXJhdGlvbl9j
b250ZXh0LnNlbGVjdF9mcm9tX3RhYmxlX3dpdGhfY29uZmlndXJhdGlvbnMoCisgICAgICAgICAg
ICAgICAgICAgIHNlbGYuQXJjaGl2ZU1ldGFEYXRhQnlDb21taXQuX190YWJsZV9uYW1lX18sIGNv
bmZpZ3VyYXRpb25zPVtjb25maWd1cmF0aW9uXSwgcmVjZW50PXJlY2VudCwKICAgICAgICAgICAg
ICAgICAgICAgc3VpdGU9c3VpdGUsIHNkaz1jb25maWd1cmF0aW9uLnNkaywgYnJhbmNoPWJyYW5j
aCBvciBzZWxmLmNvbW1pdF9jb250ZXh0LkRFRkFVTFRfQlJBTkNIX0tFWSwKICAgICAgICAgICAg
ICAgICAgICAgdXVpZF9fZ3RlPUNvbW1pdENvbnRleHQuY29udmVydF90b191dWlkKGJlZ2luKSwK
ICAgICAgICAgICAgICAgICAgICAgdXVpZF9fbHRlPUNvbW1pdENvbnRleHQuY29udmVydF90b191
dWlkKGVuZCwgQ29tbWl0Q29udGV4dC50aW1lc3RhbXBfdG9fdXVpZCgpKSwKICAgICAgICAgICAg
ICAgICAgICAgc3RhcnRfdGltZV9fZ3RlPV9nZXRfdGltZShiZWdpbl9xdWVyeV90aW1lKSwgc3Rh
cnRfdGltZV9fbHRlPV9nZXRfdGltZShlbmRfcXVlcnlfdGltZSksCiAgICAgICAgICAgICAgICAg
ICAgIGxpbWl0PWxpbWl0LAogICAgICAgICAgICAgICAgICkuaXRlbXMoKX0pCisKKyAgICAgICAg
ICAgIG1lbW9yeV91c2VkID0gMAorICAgICAgICAgICAgZm9yIHZhbHVlcyBpbiBtZXRhZGF0YV9i
eV9jb25maWcudmFsdWVzKCk6CisgICAgICAgICAgICAgICAgZm9yIHZhbHVlIGluIHZhbHVlczoK
KyAgICAgICAgICAgICAgICAgICAgaWYgbm90IHZhbHVlLmdldCgnZGlnZXN0Jyk6CisgICAgICAg
ICAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAgICAgICAgIG1lbW9yeV91
c2VkICs9IHZhbHVlLmdldCgnc2l6ZScsIDApCisgICAgICAgICAgICAgICAgICAgIGlmIG1lbW9y
eV91c2VkID4gc2VsZi5NRU1PUllfTElNSVQ6CisgICAgICAgICAgICAgICAgICAgICAgICByYWlz
ZSBSdW50aW1lRXJyb3IoJ0hpdCBzb2Z0LW1lbW9yeSBjYXAgd2hlbiBmZXRjaGluZyBhcmNoaXZl
cywgYWJvcnRpbmcnKQorCisgICAgICAgICAgICByZXN1bHQgPSB7fQorICAgICAgICAgICAgZm9y
IGNvbmZpZywgdmFsdWVzIGluIG1ldGFkYXRhX2J5X2NvbmZpZy5pdGVtcygpOgorICAgICAgICAg
ICAgICAgIGZvciB2YWx1ZSBpbiB2YWx1ZXM6CisgICAgICAgICAgICAgICAgICAgIGlmIG5vdCB2
YWx1ZS5nZXQoJ2RpZ2VzdCcpOgorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKwor
ICAgICAgICAgICAgICAgICAgICByb3dzID0gc2VsZi5jYXNzYW5kcmEuc2VsZWN0X2Zyb21fdGFi
bGUoCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLkFyY2hpdmVDaHVua3MuX190YWJsZV9u
YW1lX18sCisgICAgICAgICAgICAgICAgICAgICAgICBkaWdlc3Q9dmFsdWUuZ2V0KCdkaWdlc3Qn
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpbWl0PTEgKyBpbnQodmFsdWUuZ2V0KCdzaXpl
JywgMCkgLyBzZWxmLkNIVU5LX1NJWkUpLAorICAgICAgICAgICAgICAgICAgICApCisgICAgICAg
ICAgICAgICAgICAgIGlmIGxlbihyb3dzKSA9PSAwOgorICAgICAgICAgICAgICAgICAgICAgICAg
Y29udGludWUKKworICAgICAgICAgICAgICAgICAgICBkaWdlc3QgPSBoYXNobGliLm1kNSgpCisg
ICAgICAgICAgICAgICAgICAgIGFyY2hpdmUgPSBpby5CeXRlc0lPKCkKKyAgICAgICAgICAgICAg
ICAgICAgYXJjaGl2ZV9zaXplID0gMAorICAgICAgICAgICAgICAgICAgICBmb3Igcm93IGluIHJv
d3M6CisgICAgICAgICAgICAgICAgICAgICAgICBhcmNoaXZlX3NpemUgKz0gbGVuKHJvdy5jaHVu
aykKKyAgICAgICAgICAgICAgICAgICAgICAgIGRpZ2VzdC51cGRhdGUocm93LmNodW5rKQorICAg
ICAgICAgICAgICAgICAgICAgICAgYXJjaGl2ZS53cml0ZShyb3cuY2h1bmspCisKKyAgICAgICAg
ICAgICAgICAgICAgaWYgYXJjaGl2ZV9zaXplICE9IHZhbHVlLmdldCgnc2l6ZScsIDApIG9yIHZh
bHVlLmdldCgnZGlnZXN0JywgJycpICE9IGRpZ2VzdC5oZXhkaWdlc3QoKToKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignRmFpbGVkIHRvIHJlY29uc3RydWN0IGFy
Y2hpdmUgZnJvbSBjaHVua3MnKQorCisgICAgICAgICAgICAgICAgICAgIGFyY2hpdmUuc2Vlaygw
KQorICAgICAgICAgICAgICAgICAgICByZXN1bHQuc2V0ZGVmYXVsdChjb25maWcsIFtdKQorICAg
ICAgICAgICAgICAgICAgICByZXN1bHRbY29uZmlnXS5hcHBlbmQoZGljdCgKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGFyY2hpdmU9YXJjaGl2ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHV1
aWQ9dmFsdWVbJ3V1aWQnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X3RpbWU9dmFs
dWVbJ3N0YXJ0X3RpbWUnXSwKKyAgICAgICAgICAgICAgICAgICAgKSkKKwogICAgICAgICAgICAg
cmV0dXJuIHJlc3VsdAogCiAgICAgQGNsYXNzbWV0aG9kCkluZGV4OiBUb29scy9yZXN1bHRzZGJw
eS9yZXN1bHRzZGJweS9tb2RlbC9hcmNoaXZlX2NvbnRleHRfdW5pdHRlc3QucHkKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvYXJjaGl2ZV9jb250ZXh0
X3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyNDk5MjUpCisrKyBUb29scy9yZXN1bHRzZGJweS9yZXN1
bHRzZGJweS9tb2RlbC9hcmNoaXZlX2NvbnRleHRfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkK
QEAgLTIxLDYgKzIxLDEwIEBACiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIGltcG9ydCBiYXNlNjQKK2ltcG9y
dCBpbworaW1wb3J0IG1vY2sKK2ltcG9ydCBvcworaW1wb3J0IHppcGZpbGUKIAogZnJvbSBmYWtl
cmVkaXMgaW1wb3J0IEZha2VTdHJpY3RSZWRpcwogZnJvbSByZWRpcyBpbXBvcnQgU3RyaWN0UmVk
aXMKQEAgLTM1LDEwICszOSwxMCBAQCBmcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLndhaXRfZm9yX2Rv
Y2tlcl90CiBjbGFzcyBBcmNoaXZlQ29udGV4dFRlc3QoV2FpdEZvckRvY2tlclRlc3RDYXNlKToK
ICAgICBLRVlTUEFDRSA9ICdhcmNoaXZlX3Rlc3Rfa2V5c3BhY2UnCiAKLSAgICBkZWYgaW5pdF9k
YXRhYmFzZShzZWxmLCByZWRpcz1TdHJpY3RSZWRpcywgY2Fzc2FuZHJhPUNhc3NhbmRyYUNvbnRl
eHQpOgorICAgIGRlZiBpbml0X2RhdGFiYXNlKHNlbGYsIHJlZGlzPVN0cmljdFJlZGlzLCBjYXNz
YW5kcmE9Q2Fzc2FuZHJhQ29udGV4dCwgY29uZmlndXJhdGlvbj1Db25maWd1cmF0aW9uKCksIGFy
Y2hpdmU9Tm9uZSk6CiAgICAgICAgIGNhc3NhbmRyYS5kcm9wX2tleXNwYWNlKGtleXNwYWNlPXNl
bGYuS0VZU1BBQ0UpCiAgICAgICAgIHNlbGYubW9kZWwgPSBNb2NrTW9kZWxGYWN0b3J5LmNyZWF0
ZShyZWRpcz1yZWRpcygpLCBjYXNzYW5kcmE9Y2Fzc2FuZHJhKGtleXNwYWNlPXNlbGYuS0VZU1BB
Q0UsIGNyZWF0ZV9rZXlzcGFjZT1UcnVlKSkKLSAgICAgICAgTW9ja01vZGVsRmFjdG9yeS5hZGRf
bW9ja19hcmNoaXZlcyhzZWxmLm1vZGVsKQorICAgICAgICBNb2NrTW9kZWxGYWN0b3J5LmFkZF9t
b2NrX2FyY2hpdmVzKHNlbGYubW9kZWwsIGNvbmZpZ3VyYXRpb249Y29uZmlndXJhdGlvbiwgYXJj
aGl2ZT1hcmNoaXZlKQogCiAgICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2Rv
Y2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3Nh
bmRyYUNvbnRleHQpCiAgICAgZGVmIHRlc3RfZmluZF9hcmNoaXZlKHNlbGYsIHJlZGlzPVN0cmlj
dFJlZGlzLCBjYXNzYW5kcmE9Q2Fzc2FuZHJhQ29udGV4dCk6CkBAIC04OCwzICs5MiwzNyBAQCBj
bGFzcyBBcmNoaXZlQ29udGV4dFRlc3QoV2FpdEZvckRvY2tlclRlCiAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwobGVuKG5leHQoaXRlcihmaWxlcy52YWx1ZXMoKSkpKSwgMSkKICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChuZXh0KGl0ZXIoZmlsZXMudmFsdWVzKCkpKVswXVsndXVpZCddLCAxNTM4
MDQ5MTA4MDApCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV4dChpdGVyKGZpbGVzLnZhbHVl
cygpKSlbMF1bJ2ZpbGUnXSwgWydmaWxlLnR4dCcsICdpbmRleC5odG1sJ10pCisKKyAgICBAV2Fp
dEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmlj
dFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKKyAgICBkZWYgdGVz
dF9sYXJnZV9hcmNoaXZlKHNlbGYsIHJlZGlzPVN0cmljdFJlZGlzLCBjYXNzYW5kcmE9Q2Fzc2Fu
ZHJhQ29udGV4dCk6CisgICAgICAgIEZJTEVfU0laRSA9IDI1ICogMTAyNCAqIDEwMjQgICMgMjUg
TUIgZmlsZXMKKyAgICAgICAgYnVmZiA9IGlvLkJ5dGVzSU8oKQorICAgICAgICB3aXRoIHppcGZp
bGUuWmlwRmlsZShidWZmLCAnYScsIHppcGZpbGUuWklQX0RFRkxBVEVELCBGYWxzZSkgYXMgYXJj
aGl2ZToKKyAgICAgICAgICAgIGZvciBmaWxlLCBkYXRhIGluIFsKKyAgICAgICAgICAgICAgICAo
J2ZpbGUtMS50eHQnLCBpby5CeXRlc0lPKG9zLnVyYW5kb20oRklMRV9TSVpFKSkpLAorICAgICAg
ICAgICAgICAgICgnZmlsZS0yLnR4dCcsIGlvLkJ5dGVzSU8ob3MudXJhbmRvbShGSUxFX1NJWkUp
KSksCisgICAgICAgICAgICAgICAgKCdmaWxlLTMudHh0JywgaW8uQnl0ZXNJTyhvcy51cmFuZG9t
KEZJTEVfU0laRSkpKSwKKyAgICAgICAgICAgIF06CisgICAgICAgICAgICAgICAgYXJjaGl2ZS53
cml0ZXN0cihmaWxlLCBkYXRhLmdldHZhbHVlKCkpCisKKyAgICAgICAgc2VsZi5pbml0X2RhdGFi
YXNlKAorICAgICAgICAgICAgcmVkaXM9cmVkaXMsIGNhc3NhbmRyYT1jYXNzYW5kcmEsCisgICAg
ICAgICAgICBjb25maWd1cmF0aW9uPUNvbmZpZ3VyYXRpb24ocGxhdGZvcm09J01hYycsIHN0eWxl
PSdSZWxlYXNlJywgZmxhdm9yPSd3azEnKSwKKyAgICAgICAgICAgIGFyY2hpdmU9YnVmZiwKKyAg
ICAgICAgKQorCisgICAgICAgIGZpbGVzID0gc2VsZi5tb2RlbC5hcmNoaXZlX2NvbnRleHQuZmlu
ZF9hcmNoaXZlKAorICAgICAgICAgICAgY29uZmlndXJhdGlvbnM9W0NvbmZpZ3VyYXRpb24ocGxh
dGZvcm09J01hYycsIHN0eWxlPSdSZWxlYXNlJywgZmxhdm9yPSd3azEnKV0sCisgICAgICAgICAg
ICBiZWdpbj1Nb2NrU1ZOUmVwb3NpdG9yeS53ZWJraXQoKS5jb21taXRfZm9yX2lkKDIzNjU0Miks
IGVuZD1Nb2NrU1ZOUmVwb3NpdG9yeS53ZWJraXQoKS5jb21taXRfZm9yX2lkKDIzNjU0MiksCisg
ICAgICAgICAgICBzdWl0ZT0nbGF5b3V0LXRlc3RzJywKKyAgICAgICAgKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGxlbihuZXh0KGl0ZXIoZmlsZXMudmFsdWVzKCkpKSksIDEpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwobmV4dChpdGVyKGZpbGVzLnZhbHVlcygpKSlbMF1bJ3V1aWQnXSwg
MTUzODA0OTEwODAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5leHQoaXRlcihmaWxlcy52
YWx1ZXMoKSkpWzBdWydhcmNoaXZlJ10uZ2V0dmFsdWUoKSwgYnVmZi5nZXR2YWx1ZSgpKQorCisg
ICAgICAgIHdpdGggbW9jay5wYXRjaCgncmVzdWx0c2RicHkubW9kZWwuYXJjaGl2ZV9jb250ZXh0
LkFyY2hpdmVDb250ZXh0Lk1FTU9SWV9MSU1JVCcsIG5ldz1GSUxFX1NJWkUpLCBzZWxmLmFzc2Vy
dFJhaXNlcyhSdW50aW1lRXJyb3IpOgorICAgICAgICAgICAgc2VsZi5tb2RlbC5hcmNoaXZlX2Nv
bnRleHQuZmluZF9hcmNoaXZlKAorICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25zPVtDb25m
aWd1cmF0aW9uKHBsYXRmb3JtPSdNYWMnLCBzdHlsZT0nUmVsZWFzZScsIGZsYXZvcj0nd2sxJyld
LAorICAgICAgICAgICAgICAgIGJlZ2luPU1vY2tTVk5SZXBvc2l0b3J5LndlYmtpdCgpLmNvbW1p
dF9mb3JfaWQoMjM2NTQyKSwgZW5kPU1vY2tTVk5SZXBvc2l0b3J5LndlYmtpdCgpLmNvbW1pdF9m
b3JfaWQoMjM2NTQyKSwKKyAgICAgICAgICAgICAgICBzdWl0ZT0nbGF5b3V0LXRlc3RzJywKKyAg
ICAgICAgICAgICkK
</data>

          </attachment>
      

    </bug>

</bugzilla>