<?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>207277</bug_id>
          
          <creation_ts>2020-02-05 11:08:09 -0800</creation_ts>
          <short_desc>results.webkit.org: Abstract archive storage solutions</short_desc>
          <delta_ts>2020-09-17 13:52:54 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=207295</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=216662</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jonathan Bedard">jbedard</reporter>
          <assigned_to name="Jonathan Bedard">jbedard</assigned_to>
          <cc>aakash_jain</cc>
    
    <cc>commit-queue</cc>
    
    <cc>lingho</cc>
    
    <cc>slewis</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zhifei_fang</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1615133</commentid>
    <comment_count>0</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-02-05 11:08:09 -0800</bug_when>
    <thetext>This is a step towards storing archives on S3 instead of in Cassandra. Apart from the drive-by bug fix of adding ttl to Cassandra storage, this change will be functionally identical to the existing code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1615141</commentid>
    <comment_count>1</comment_count>
      <attachid>389831</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-02-05 11:17:09 -0800</bug_when>
    <thetext>Created attachment 389831
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1615307</commentid>
    <comment_count>2</comment_count>
      <attachid>389876</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-02-05 14:58:50 -0800</bug_when>
    <thetext>Created attachment 389876
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1615918</commentid>
    <comment_count>3</comment_count>
      <attachid>390022</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-02-06 16:18:51 -0800</bug_when>
    <thetext>Created attachment 390022
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1616247</commentid>
    <comment_count>4</comment_count>
      <attachid>390022</attachid>
    <who name="Zhifei Fang">zhifei_fang</who>
    <bug_when>2020-02-07 10:41:13 -0800</bug_when>
    <thetext>Comment on attachment 390022
Patch

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

&gt; Tools/resultsdbpy/resultsdbpy/model/archiver.py:27
&gt; +class Archiver(object):

I guess a delete method is also needed. Besides, I think a timestamp for the archive will be also very useful. We then can have something auto clean the archives.

&gt; Tools/resultsdbpy/resultsdbpy/model/cassandra_archiver.py:31
&gt; +    MAX_ARCHIVE = 500 * 1024 * 1024  # Archives should be smaller than 500 MB

I think I saw some debug archives have 600~ mb</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1616253</commentid>
    <comment_count>5</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-02-07 10:49:45 -0800</bug_when>
    <thetext>(In reply to Zhifei Fang from comment #4)
&gt; Comment on attachment 390022 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=390022&amp;action=review
&gt; 
&gt; &gt; Tools/resultsdbpy/resultsdbpy/model/archiver.py:27
&gt; &gt; +class Archiver(object):
&gt; 
&gt; I guess a delete method is also needed. Besides, I think a timestamp for the
&gt; archive will be also very useful. We then can have something auto clean the
&gt; archives.

The retain_for parameter is intended to provide automatic clean up.

The timestamp is actually less useful because we&apos;re sorting them by a primary key hash, meaning you&apos;d need to actually request the specific archive you want deleted. (you could do that through the management table).

Generally, I&apos;ve avoided putting any specific delete functions into the results database because while we occasionally need to do it, it&apos;s not something that the API generally supports. It should be a task that requires management access to the database. Even if we did want a delete function, I don&apos;t think it should be part of this patch since this is intended as a no-op and the existing code didn&apos;t support deletion either.

&gt; 
&gt; &gt; Tools/resultsdbpy/resultsdbpy/model/cassandra_archiver.py:31
&gt; &gt; +    MAX_ARCHIVE = 500 * 1024 * 1024  # Archives should be smaller than 500 MB
&gt; 
&gt; I think I saw some debug archives have 600~ mb

It&apos;s not for builds, only for test result archives, which should all be in the ~50 MB range.

We could revisit this technique for builds later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1616429</commentid>
    <comment_count>6</comment_count>
    <who name="Zhifei Fang">zhifei_fang</who>
    <bug_when>2020-02-07 15:56:07 -0800</bug_when>
    <thetext>unofficially r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1616479</commentid>
    <comment_count>7</comment_count>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2020-02-07 16:55:12 -0800</bug_when>
    <thetext>rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1616853</commentid>
    <comment_count>8</comment_count>
      <attachid>390251</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-02-10 07:25:04 -0800</bug_when>
    <thetext>Created attachment 390251
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1616865</commentid>
    <comment_count>9</comment_count>
      <attachid>390251</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-02-10 08:10:26 -0800</bug_when>
    <thetext>Comment on attachment 390251
Patch for landing

Clearing flags on attachment: 390251

Committed r256172: &lt;https://trac.webkit.org/changeset/256172&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1616866</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-02-10 08:10:28 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1616867</commentid>
    <comment_count>11</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-02-10 08:11:22 -0800</bug_when>
    <thetext>&lt;rdar://problem/59311107&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>389831</attachid>
            <date>2020-02-05 11:17:09 -0800</date>
            <delta_ts>2020-02-05 14:58:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207277-20200205111709.patch</filename>
            <type>text/plain</type>
            <size>14501</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI1NTgzMCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDM2IEBACisyMDIwLTAyLTA1ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICByZXN1bHRzLndlYmtpdC5vcmc6IEFic3RyYWN0IGFyY2hpdmUgc3RvcmFn
ZSBzb2x1dGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIwNzI3NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvYXJjaGl2ZV9jb250ZXh0LnB5Ogor
ICAgICAgICAoQXJjaGl2ZUNvbnRleHQpOgorICAgICAgICAoQXJjaGl2ZUNvbnRleHQuQXJjaGl2
ZU1ldGFEYXRhQnlDb21taXQudW5wYWNrKToKKyAgICAgICAgKEFyY2hpdmVDb250ZXh0Ll9faW5p
dF9fKTogQWRkIGFyY2hpdmVyIG1lbWJlci4KKyAgICAgICAgKEFyY2hpdmVDb250ZXh0Ll9fZW50
ZXJfXyk6IGFyY2hpdmVyIGlzIGEgY29udGV4dCBtYW5hZ2VyLgorICAgICAgICAoQXJjaGl2ZUNv
bnRleHQuX19leGl0X18pOiBEaXR0by4KKyAgICAgICAgKEFyY2hpdmVDb250ZXh0LnJlZ2lzdGVy
KTogVGhlIGFyY2hpdmVyIG1lbWJlciBvd25zIHNhdmluZyBhbiBhcmNoaXZlLgorICAgICAgICAo
QXJjaGl2ZUNvbnRleHQuZmluZF9hcmNoaXZlKTogVGhlIGFyY2hpdmVyIG1lbWJlciBvd25zIHJl
dHJpZXZpbmcgYW4gYXJjaGl2ZS4KKyAgICAgICAgKEFyY2hpdmVDb250ZXh0LkFyY2hpdmVDaHVu
a3MpOiBNb3ZlIHRvIENhc3NhbmRyYUFyY2hpdmVyLgorICAgICAgICAqIHJlc3VsdHNkYnB5L3Jl
c3VsdHNkYnB5L21vZGVsL2FyY2hpdmVyLnB5OiBBZGRlZC4KKyAgICAgICAgKEFyY2hpdmVyKTog
QmFzZSBjbGFzcyBmb3IgYWxsIEFyY2hpdmluZyBzeXN0ZW1zLgorICAgICAgICAoQXJjaGl2ZXIu
YXJjaGl2ZV9kaWdlc3QpOiBHaXZlbiBhIGZpbGUtbGlrZSBhcmNoaXZlLCBjYWxjdWxhdGUgaXQn
cyBkaWdlc3QuCisgICAgICAgIChBcmNoaXZlci5hcmNoaXZlX3NpemUpOiBHaXZlbiBhIGZpbGUt
bGlrZSBhcmNoaXZlLCBjYWxjdWxhdGUgaXQncyBzaXplLgorICAgICAgICAoQXJjaGl2ZXIuc2F2
ZSk6CisgICAgICAgIChBcmNoaXZlci5yZXRyaWV2ZSk6CisgICAgICAgICogcmVzdWx0c2RicHkv
cmVzdWx0c2RicHkvbW9kZWwvY2Fzc2FuZHJhX2FyY2hpdmVyLnB5OiBBZGRlZC4KKyAgICAgICAg
KENhc3NhbmRyYUFyY2hpdmVyKToKKyAgICAgICAgKENhc3NhbmRyYUFyY2hpdmVyLkFyY2hpdmVD
aHVua3MpOiBNb3ZlZCBmcm9tIEFyY2hpdmVDb250ZXh0LgorICAgICAgICAoQ2Fzc2FuZHJhQXJj
aGl2ZXIuX19pbml0X18pOgorICAgICAgICAoQ2Fzc2FuZHJhQXJjaGl2ZXIuX19lbnRlcl9fKToK
KyAgICAgICAgKENhc3NhbmRyYUFyY2hpdmVyLl9fZXhpdF9fKToKKyAgICAgICAgKENhc3NhbmRy
YUFyY2hpdmVyLnNhdmUpOiBTcGxpdCB0aGUgcHJvdmlkZWQgYXJjaGl2ZSBpbnRvIGNodW5rcyBm
b3Igc2F2aW5nLCBtb3ZlZAorICAgICAgICBmcm9tIEFyY2hpdmVDb250ZXh0LgorICAgICAgICAo
Q2Fzc2FuZHJhQXJjaGl2ZXIucmV0cmlldmUpOiBSZXRyaWV2ZSBhbiBhcmNoaXZlIHdpdGggdGhl
IHByb3ZpZGVkIGhhc2gsIG1vdmVkCisgICAgICAgIGZyb20gQXJjaGl2ZUNvbnRleHQuCisKIDIw
MjAtMDItMDUgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdS
RVNTSU9OKHIyNTU1OTUpOiBwYWdlIG5vdCBjbG9zZWQgYWZ0ZXIgYmVmb3JldW5sb2FkIGhhbmRs
ZXIgcmV0dXJucyB0cnVlCkluZGV4OiBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2Rl
bC9hcmNoaXZlX2NvbnRleHQucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvcmVzdWx0c2RicHkvcmVz
dWx0c2RicHkvbW9kZWwvYXJjaGl2ZV9jb250ZXh0LnB5CShyZXZpc2lvbiAyNTU4MTIpCisrKyBU
b29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC9hcmNoaXZlX2NvbnRleHQucHkJKHdv
cmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxOS0yMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMjEsNyArMjEsNiBAQAogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiBpbXBvcnQgY2FsZW5kYXIKLWltcG9y
dCBoYXNobGliCiBpbXBvcnQgaW8KIGltcG9ydCBqc29uCiBpbXBvcnQgdGltZQpAQCAtMzMsNiAr
MzIsOCBAQCBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBPcmRlcmVkRGljdAogZnJvbSBkYXRldGlt
ZSBpbXBvcnQgZGF0ZXRpbWUKIGZyb20gcmVzdWx0c2RicHkuY29udHJvbGxlci5jb21taXQgaW1w
b3J0IENvbW1pdAogZnJvbSByZXN1bHRzZGJweS5jb250cm9sbGVyLmNvbmZpZ3VyYXRpb24gaW1w
b3J0IENvbmZpZ3VyYXRpb24KK2Zyb20gcmVzdWx0c2RicHkubW9kZWwuYXJjaGl2ZXIgaW1wb3J0
IEFyY2hpdmVyCitmcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLmNhc3NhbmRyYV9hcmNoaXZlciBpbXBv
cnQgQ2Fzc2FuZHJhQXJjaGl2ZXIKIGZyb20gcmVzdWx0c2RicHkubW9kZWwuY29tbWl0X2NvbnRl
eHQgaW1wb3J0IENvbW1pdENvbnRleHQKIGZyb20gcmVzdWx0c2RicHkubW9kZWwuY29uZmlndXJh
dGlvbl9jb250ZXh0IGltcG9ydCBDbHVzdGVyZWRCeUNvbmZpZ3VyYXRpb24KIGZyb20gcmVzdWx0
c2RicHkubW9kZWwudXBsb2FkX2NvbnRleHQgaW1wb3J0IFVwbG9hZENvbnRleHQKQEAgLTQ4LDcg
KzQ5LDYgQEAgZGVmIF9nZXRfdGltZShpbnB1dF90aW1lKToKIAogY2xhc3MgQXJjaGl2ZUNvbnRl
eHQob2JqZWN0KToKICAgICBERUZBVUxUX0xJTUlUID0gMTAKLSAgICBDSFVOS19TSVpFID0gMTAg
KiAxMDI0ICogMTAyNCAgIyBDYXNzYW5kcmEgZG9lc24ndCBkbyB3ZWxsIHdpdGggZGF0YSBibG9i
cyBvZiBtb3JlIHRoYW4gMTAgTUIKICAgICBNRU1PUllfTElNSVQgPSAyICogMTAyNCAqIDEwMjQg
KiAxMDI0ICAjIERvbid0IGFsbG93IG1vcmUgdGhhbiAyIGdpZ3Mgb2YgYXJjaGl2ZXMgaW4gbWVt
b3J5IGF0IG9uZSB0aW1lCiAKICAgICBjbGFzcyBBcmNoaXZlTWV0YURhdGFCeUNvbW1pdChDbHVz
dGVyZWRCeUNvbmZpZ3VyYXRpb24pOgpAQCAtNjksMTQgKzY5LDYgQEAgY2xhc3MgQXJjaGl2ZUNv
bnRleHQob2JqZWN0KToKICAgICAgICAgICAgICAgICBzaXplPXNlbGYuc2l6ZSwKICAgICAgICAg
ICAgICkKIAotICAgICMgQWNjb3JkaW5nIHRvIGh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25m
bHVlbmNlL2Rpc3BsYXkvQ0FTU0FORFJBMi9DYXNzYW5kcmFMaW1pdGF0aW9ucywgd2Ugc2hvdWxk
IHNoYXJkCi0gICAgIyBsYXJnZSBkYXRhIGJsb2JzLgotICAgIGNsYXNzIEFyY2hpdmVDaHVua3Mo
TW9kZWwpOgotICAgICAgICBfX3RhYmxlX25hbWVfXyA9ICdhcmNoaXZlX2NodW5rc18wMScKLSAg
ICAgICAgZGlnZXN0ID0gY29sdW1ucy5UZXh0KHBhcnRpdGlvbl9rZXk9VHJ1ZSwgcmVxdWlyZWQ9
VHJ1ZSkKLSAgICAgICAgaW5kZXggPSBjb2x1bW5zLkludGVnZXIocHJpbWFyeV9rZXk9VHJ1ZSwg
cmVxdWlyZWQ9VHJ1ZSkKLSAgICAgICAgY2h1bmsgPSBjb2x1bW5zLkJsb2IocmVxdWlyZWQ9VHJ1
ZSkKLQogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBhc3NlcnRfemlwZmlsZShjbHMsIGFyY2hp
dmUpOgogICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShhcmNoaXZlLCBpby5CeXRlc0lPKToKQEAg
LTkzLDIwICs4NSwyMiBAQCBjbGFzcyBBcmNoaXZlQ29udGV4dChvYmplY3QpOgogICAgICAgICBz
ZWxmLmNvbmZpZ3VyYXRpb25fY29udGV4dCA9IGNvbmZpZ3VyYXRpb25fY29udGV4dAogICAgICAg
ICBzZWxmLmNvbW1pdF9jb250ZXh0ID0gY29tbWl0X2NvbnRleHQKICAgICAgICAgc2VsZi5jYXNz
YW5kcmEgPSBzZWxmLmNvbmZpZ3VyYXRpb25fY29udGV4dC5jYXNzYW5kcmEKKyAgICAgICAgc2Vs
Zi5hcmNoaXZlciA9IENhc3NhbmRyYUFyY2hpdmVyKHNlbGYuY2Fzc2FuZHJhKQogICAgICAgICBz
ZWxmLnR0bF9zZWNvbmRzID0gdHRsX3NlY29uZHMKIAogICAgICAgICB3aXRoIHNlbGY6CiAgICAg
ICAgICAgICBzZWxmLmNhc3NhbmRyYS5jcmVhdGVfdGFibGUoc2VsZi5BcmNoaXZlTWV0YURhdGFC
eUNvbW1pdCkKLSAgICAgICAgICAgIHNlbGYuY2Fzc2FuZHJhLmNyZWF0ZV90YWJsZShzZWxmLkFy
Y2hpdmVDaHVua3MpCiAgICAgICAgICAgICBzZWxmLmNhc3NhbmRyYS5jcmVhdGVfdGFibGUoVXBs
b2FkQ29udGV4dC5TdWl0ZXNCeUNvbmZpZ3VyYXRpb24pCiAKICAgICBkZWYgX19lbnRlcl9fKHNl
bGYpOgogICAgICAgICBzZWxmLmNvbmZpZ3VyYXRpb25fY29udGV4dC5fX2VudGVyX18oKQogICAg
ICAgICBzZWxmLmNvbW1pdF9jb250ZXh0Ll9fZW50ZXJfXygpCisgICAgICAgIHNlbGYuYXJjaGl2
ZXIuX19lbnRlcl9fKCkKIAogICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3Mp
OgogICAgICAgICBzZWxmLmNvbW1pdF9jb250ZXh0Ll9fZXhpdF9fKCphcmdzLCAqKmt3YXJncykK
ICAgICAgICAgc2VsZi5jb25maWd1cmF0aW9uX2NvbnRleHQuX19leGl0X18oKmFyZ3MsICoqa3dh
cmdzKQorICAgICAgICBzZWxmLmFyY2hpdmVyLl9fZXhpdF9fKCphcmdzLCAqKmt3YXJncykKIAog
ICAgIGRlZiByZWdpc3RlcihzZWxmLCBhcmNoaXZlLCBjb25maWd1cmF0aW9uLCBjb21taXRzLCBz
dWl0ZSwgdGltZXN0YW1wPU5vbmUpOgogICAgICAgICBzZWxmLmFzc2VydF96aXBmaWxlKGFyY2hp
dmUpCkBAIC0xMjIsMjYgKzExNiwxNCBAQCBjbGFzcyBBcmNoaXZlQ29udGV4dChvYmplY3QpOgog
ICAgICAgICAgICAgICAgIHNlbGYuY29uZmlndXJhdGlvbl9jb250ZXh0Lmluc2VydF9yb3dfd2l0
aF9jb25maWd1cmF0aW9uKAogICAgICAgICAgICAgICAgICAgICBVcGxvYWRDb250ZXh0LlN1aXRl
c0J5Q29uZmlndXJhdGlvbi5fX3RhYmxlX25hbWVfXywgY29uZmlndXJhdGlvbiwgc3VpdGU9c3Vp
dGUsIGJyYW5jaD1icmFuY2gsIHR0bD10dGwsCiAgICAgICAgICAgICAgICAgKQotCi0gICAgICAg
ICAgICAgICAgIyBCcmVha2luZyB1cCB0aGUgYXJjaGl2ZSBpbnRvIGNodW5rcwotICAgICAgICAg
ICAgICAgIGluZGV4ID0gMAotICAgICAgICAgICAgICAgIHNpemUgPSBsZW4oYXJjaGl2ZS5nZXR2
YWx1ZSgpKQotICAgICAgICAgICAgICAgIGRpZ2VzdCA9IGhhc2hsaWIubWQ1KGFyY2hpdmUuZ2V0
dmFsdWUoKSkuaGV4ZGlnZXN0KCkKLSAgICAgICAgICAgICAgICBhcmNoaXZlLnNlZWsoMCkKLSAg
ICAgICAgICAgICAgICB3aGlsZSBzaXplID4gaW5kZXggKiBzZWxmLkNIVU5LX1NJWkU6Ci0gICAg
ICAgICAgICAgICAgICAgIHNlbGYuY2Fzc2FuZHJhLmluc2VydF9yb3coCi0gICAgICAgICAgICAg
ICAgICAgICAgICBzZWxmLkFyY2hpdmVDaHVua3MuX190YWJsZV9uYW1lX18sCi0gICAgICAgICAg
ICAgICAgICAgICAgICBkaWdlc3Q9ZGlnZXN0LCBpbmRleD1pbmRleCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGNodW5rPWFyY2hpdmUucmVhZChzZWxmLkNIVU5LX1NJWkUpLAotICAgICAgICAg
ICAgICAgICAgICApCi0gICAgICAgICAgICAgICAgICAgIGluZGV4ICs9IDEKKyAgICAgICAgICAg
ICAgICBkaWdlc3QgPSBzZWxmLmFyY2hpdmVyLnNhdmUoYXJjaGl2ZSwgcmV0YWluX2Zvcj10dGwp
CiAKICAgICAgICAgICAgICAgICBzZWxmLmNvbmZpZ3VyYXRpb25fY29udGV4dC5pbnNlcnRfcm93
X3dpdGhfY29uZmlndXJhdGlvbigKICAgICAgICAgICAgICAgICAgICAgc2VsZi5BcmNoaXZlTWV0
YURhdGFCeUNvbW1pdC5fX3RhYmxlX25hbWVfXywgY29uZmlndXJhdGlvbj1jb25maWd1cmF0aW9u
LCBzdWl0ZT1zdWl0ZSwKICAgICAgICAgICAgICAgICAgICAgYnJhbmNoPWJyYW5jaCwgdXVpZD11
dWlkLCB0dGw9dHRsLAogICAgICAgICAgICAgICAgICAgICBzZGs9Y29uZmlndXJhdGlvbi5zZGsg
b3IgJz8nLCBzdGFydF90aW1lPXRpbWVzdGFtcCwKICAgICAgICAgICAgICAgICAgICAgZGlnZXN0
PWRpZ2VzdCwKLSAgICAgICAgICAgICAgICAgICAgc2l6ZT1zaXplLAorICAgICAgICAgICAgICAg
ICAgICBzaXplPUFyY2hpdmVyLmFyY2hpdmVfc2l6ZShhcmNoaXZlKSwKICAgICAgICAgICAgICAg
ICApCiAKICAgICBkZWYgZmluZF9hcmNoaXZlKApAQCAtMTg1LDMyICsxNjcsMTYgQEAgY2xhc3Mg
QXJjaGl2ZUNvbnRleHQob2JqZWN0KToKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl
CiAKICAgICAgICAgICAgICAgICAgICAgaWYgbm90IGFyY2hpdmVfYnlfZGlnZXN0LmdldCh2YWx1
ZS5nZXQoJ2RpZ2VzdCcpKToKLSAgICAgICAgICAgICAgICAgICAgICAgIHJvd3MgPSBzZWxmLmNh
c3NhbmRyYS5zZWxlY3RfZnJvbV90YWJsZSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
ZWxmLkFyY2hpdmVDaHVua3MuX190YWJsZV9uYW1lX18sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZGlnZXN0PXZhbHVlLmdldCgnZGlnZXN0JyksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbGltaXQ9MSArIGludCh2YWx1ZS5nZXQoJ3NpemUnLCAwKSAvIHNlbGYuQ0hVTktfU0la
RSksCi0gICAgICAgICAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICAgICAgICAgICAgICBp
ZiBsZW4ocm93cykgPT0gMDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGFyY2hpdmUgPSBzZWxm
LmFyY2hpdmVyLnJldHJpZXZlKHZhbHVlLmdldCgnZGlnZXN0JyksIHZhbHVlLmdldCgnc2l6ZScs
IE5vbmUpKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IGFyY2hpdmU6CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29udGludWUKLQotICAgICAgICAgICAgICAgICAgICAgICAg
ZGlnZXN0ID0gaGFzaGxpYi5tZDUoKQotICAgICAgICAgICAgICAgICAgICAgICAgYXJjaGl2ZSA9
IGlvLkJ5dGVzSU8oKQotICAgICAgICAgICAgICAgICAgICAgICAgYXJjaGl2ZV9zaXplID0gMAot
ICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHJvdyBpbiByb3dzOgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGFyY2hpdmVfc2l6ZSArPSBsZW4ocm93LmNodW5rKQotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRpZ2VzdC51cGRhdGUocm93LmNodW5rKQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGFyY2hpdmUud3JpdGUocm93LmNodW5rKQotCi0gICAgICAgICAgICAgICAg
ICAgICAgICBpZiBhcmNoaXZlX3NpemUgIT0gdmFsdWUuZ2V0KCdzaXplJywgMCkgb3IgdmFsdWUu
Z2V0KCdkaWdlc3QnLCAnJykgIT0gZGlnZXN0LmhleGRpZ2VzdCgpOgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignRmFpbGVkIHRvIHJlY29uc3RydWN0IGFy
Y2hpdmUgZnJvbSBjaHVua3MnKQotCiAgICAgICAgICAgICAgICAgICAgICAgICBhcmNoaXZlX2J5
X2RpZ2VzdFt2YWx1ZS5nZXQoJ2RpZ2VzdCcpXSA9IGFyY2hpdmUKIAogICAgICAgICAgICAgICAg
ICAgICBhcmNoaXZlX2J5X2RpZ2VzdC5nZXQodmFsdWUuZ2V0KCdkaWdlc3QnKSkuc2VlaygwKQog
ICAgICAgICAgICAgICAgICAgICByZXN1bHQuc2V0ZGVmYXVsdChjb25maWcsIFtdKQogICAgICAg
ICAgICAgICAgICAgICByZXN1bHRbY29uZmlnXS5hcHBlbmQoZGljdCgKICAgICAgICAgICAgICAg
ICAgICAgICAgIGFyY2hpdmU9YXJjaGl2ZV9ieV9kaWdlc3QuZ2V0KHZhbHVlLmdldCgnZGlnZXN0
JykpLAotICAgICAgICAgICAgICAgICAgICAgICAgZGlnZXN0PWRpZ2VzdC5oZXhkaWdlc3QoKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgIGRpZ2VzdD12YWx1ZS5nZXQoJ2RpZ2VzdCcpLAogICAg
ICAgICAgICAgICAgICAgICAgICAgdXVpZD12YWx1ZVsndXVpZCddLAogICAgICAgICAgICAgICAg
ICAgICAgICAgc3RhcnRfdGltZT12YWx1ZVsnc3RhcnRfdGltZSddLAogICAgICAgICAgICAgICAg
ICAgICApKQpJbmRleDogVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvYXJjaGl2
ZXIucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwv
YXJjaGl2ZXIucHkJKG5vbmV4aXN0ZW50KQorKysgVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2Ri
cHkvbW9kZWwvYXJjaGl2ZXIucHkJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NSBAQAorIyBD
b3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisj
CisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyAiQVMgSVMiIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworaW1wb3J0IG9zCitpbXBvcnQgaGFz
aGxpYgorCisKK2NsYXNzIEFyY2hpdmVyKG9iamVjdCk6CisgICAgQGNsYXNzbWV0aG9kCisgICAg
ZGVmIGFyY2hpdmVfZGlnZXN0KGNscywgYXJjaGl2ZSk6CisgICAgICAgIGRpZ2VzdCA9IGhhc2hs
aWIubWQ1KGFyY2hpdmUuZ2V0dmFsdWUoKSkuaGV4ZGlnZXN0KCkKKyAgICAgICAgYXJjaGl2ZS5z
ZWVrKDApCisgICAgICAgIHJldHVybiBkaWdlc3QKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRl
ZiBhcmNoaXZlX3NpemUoY2xzLCBhcmNoaXZlKToKKyAgICAgICAgYXJjaGl2ZS5zZWVrKDAsIG9z
LlNFRUtfRU5EKQorICAgICAgICBzaXplID0gYXJjaGl2ZS50ZWxsKCkKKyAgICAgICAgYXJjaGl2
ZS5zZWVrKDApCisgICAgICAgIHJldHVybiBzaXplCisKKyAgICBkZWYgc2F2ZShzZWxmLCBhcmNo
aXZlLCByZXRhaW5fZm9yPU5vbmUpOgorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9y
CisKKyAgICBkZWYgcmV0cmlldmUoc2VsZiwgZGlnZXN0LCBzaXplPU5vbmUpOgorICAgICAgICBy
YWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCkluZGV4OiBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRz
ZGJweS9tb2RlbC9jYXNzYW5kcmFfYXJjaGl2ZXIucHkKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvcmVz
dWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvY2Fzc2FuZHJhX2FyY2hpdmVyLnB5CShub25leGlz
dGVudCkKKysrIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL2Nhc3NhbmRyYV9h
cmNoaXZlci5weQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDg1IEBACisjIENvcHlyaWdodCAo
QykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
IyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJB
UyBJUyIgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBvcnQgaW8KKworZnJvbSBjYXNzYW5kcmEuY3Fs
ZW5naW5lIGltcG9ydCBjb2x1bW5zCitmcm9tIGNhc3NhbmRyYS5jcWxlbmdpbmUubW9kZWxzIGlt
cG9ydCBNb2RlbAorZnJvbSByZXN1bHRzZGJweS5tb2RlbC5hcmNoaXZlciBpbXBvcnQgQXJjaGl2
ZXIKKworCitjbGFzcyBDYXNzYW5kcmFBcmNoaXZlcihBcmNoaXZlcik6CisgICAgTUFYX0FSQ0hJ
VkUgPSA1MDAgKiAxMDI0ICogMTAyNCAgIyBBcmNoaXZlcyBzaG91bGQgYmUgc21hbGxlciB0aGFu
IDUwMCBNQgorICAgIENIVU5LX1NJWkUgPSAxMCAqIDEwMjQgKiAxMDI0ICAgICMgQ2Fzc2FuZHJh
IGRvZXNuJ3QgZG8gd2VsbCB3aXRoIGRhdGEgYmxvYnMgb2YgbW9yZSB0aGFuIDEwIE1CCisKKyAg
ICAjIEFjY29yZGluZyB0byBodHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNw
bGF5L0NBU1NBTkRSQTIvQ2Fzc2FuZHJhTGltaXRhdGlvbnMsIHdlIHNob3VsZCBzaGFyZAorICAg
ICMgbGFyZ2UgZGF0YSBibG9icy4KKyAgICBjbGFzcyBBcmNoaXZlQ2h1bmtzKE1vZGVsKToKKyAg
ICAgICAgX190YWJsZV9uYW1lX18gPSAnYXJjaGl2ZV9jaHVua3NfMDEnCisgICAgICAgIGRpZ2Vz
dCA9IGNvbHVtbnMuVGV4dChwYXJ0aXRpb25fa2V5PVRydWUsIHJlcXVpcmVkPVRydWUpCisgICAg
ICAgIGluZGV4ID0gY29sdW1ucy5JbnRlZ2VyKHByaW1hcnlfa2V5PVRydWUsIHJlcXVpcmVkPVRy
dWUpCisgICAgICAgIGNodW5rID0gY29sdW1ucy5CbG9iKHJlcXVpcmVkPVRydWUpCisKKyAgICBk
ZWYgX19pbml0X18oc2VsZiwgY2Fzc2FuZHJhKToKKyAgICAgICAgc2VsZi5jYXNzYW5kcmEgPSBj
YXNzYW5kcmEKKyAgICAgICAgd2l0aCBzZWxmOgorICAgICAgICAgICAgc2VsZi5jYXNzYW5kcmEu
Y3JlYXRlX3RhYmxlKHNlbGYuQXJjaGl2ZUNodW5rcykKKworICAgIGRlZiBfX2VudGVyX18oc2Vs
Zik6CisgICAgICAgIHNlbGYuY2Fzc2FuZHJhLl9fZW50ZXJfXygpCisKKyAgICBkZWYgX19leGl0
X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgc2VsZi5jYXNzYW5kcmEuX19leGl0
X18oKmFyZ3MsICoqa3dhcmdzKQorCisgICAgZGVmIHNhdmUoc2VsZiwgYXJjaGl2ZSwgcmV0YWlu
X2Zvcj1Ob25lKToKKyAgICAgICAgaW5kZXggPSAwCisgICAgICAgIHNpemUgPSBzZWxmLmFyY2hp
dmVfc2l6ZShhcmNoaXZlKQorICAgICAgICBpZiBzaXplID4gc2VsZi5NQVhfQVJDSElWRToKKyAg
ICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0FyY2hpdmUgbGFyZ2VyIHRoYW4gNTAwIE1CJykK
KyAgICAgICAgZGlnZXN0ID0gc2VsZi5hcmNoaXZlX2RpZ2VzdChhcmNoaXZlKQorICAgICAgICB3
aGlsZSBzaXplID4gaW5kZXggKiBzZWxmLkNIVU5LX1NJWkU6CisgICAgICAgICAgICBzZWxmLmNh
c3NhbmRyYS5pbnNlcnRfcm93KAorICAgICAgICAgICAgICAgIHNlbGYuQXJjaGl2ZUNodW5rcy5f
X3RhYmxlX25hbWVfXywKKyAgICAgICAgICAgICAgICBkaWdlc3Q9ZGlnZXN0LCBpbmRleD1pbmRl
eCwKKyAgICAgICAgICAgICAgICBjaHVuaz1hcmNoaXZlLnJlYWQoc2VsZi5DSFVOS19TSVpFKSwK
KyAgICAgICAgICAgICAgICB0dGw9cmV0YWluX2ZvciwKKyAgICAgICAgICAgICkKKyAgICAgICAg
ICAgIGluZGV4ICs9IDEKKyAgICAgICAgcmV0dXJuIGRpZ2VzdAorCisgICAgZGVmIHJldHJpZXZl
KHNlbGYsIGRpZ2VzdCwgc2l6ZT1Ob25lKToKKyAgICAgICAgcm93cyA9IHNlbGYuY2Fzc2FuZHJh
LnNlbGVjdF9mcm9tX3RhYmxlKAorICAgICAgICAgICAgc2VsZi5BcmNoaXZlQ2h1bmtzLl9fdGFi
bGVfbmFtZV9fLAorICAgICAgICAgICAgZGlnZXN0PWRpZ2VzdCwKKyAgICAgICAgICAgIGxpbWl0
PTEgKyBpbnQoc2l6ZSBvciBzZWxmLk1BWF9BUkNISVZFIC8gc2VsZi5DSFVOS19TSVpFKSwKKyAg
ICAgICAgKQorICAgICAgICBpZiBsZW4ocm93cykgPT0gMDoKKyAgICAgICAgICAgIHJldHVybiBO
b25lCisKKyAgICAgICAgYXJjaGl2ZSA9IGlvLkJ5dGVzSU8oKQorICAgICAgICBmb3Igcm93IGlu
IHJvd3M6CisgICAgICAgICAgICBhcmNoaXZlLndyaXRlKHJvdy5jaHVuaykKKworICAgICAgICBp
ZiAoc2l6ZSBhbmQgc2VsZi5hcmNoaXZlX3NpemUoYXJjaGl2ZSkgIT0gc2l6ZSkgb3IgZGlnZXN0
ICE9IHNlbGYuYXJjaGl2ZV9kaWdlc3QoYXJjaGl2ZSk6CisgICAgICAgICAgICByYWlzZSBSdW50
aW1lRXJyb3IoJ0ZhaWxlZCB0byByZWNvbnN0cnVjdCBhcmNoaXZlIGZyb20gY2h1bmtzJykKKwor
ICAgICAgICByZXR1cm4gYXJjaGl2ZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>389876</attachid>
            <date>2020-02-05 14:58:50 -0800</date>
            <delta_ts>2020-02-06 16:18:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207277-20200205145849.patch</filename>
            <type>text/plain</type>
            <size>14511</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI1NTg2MCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDM2IEBACisyMDIwLTAyLTA1ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICByZXN1bHRzLndlYmtpdC5vcmc6IEFic3RyYWN0IGFyY2hpdmUgc3RvcmFn
ZSBzb2x1dGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIwNzI3NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvYXJjaGl2ZV9jb250ZXh0LnB5Ogor
ICAgICAgICAoQXJjaGl2ZUNvbnRleHQpOgorICAgICAgICAoQXJjaGl2ZUNvbnRleHQuQXJjaGl2
ZU1ldGFEYXRhQnlDb21taXQudW5wYWNrKToKKyAgICAgICAgKEFyY2hpdmVDb250ZXh0Ll9faW5p
dF9fKTogQWRkIGFyY2hpdmVyIG1lbWJlci4KKyAgICAgICAgKEFyY2hpdmVDb250ZXh0Ll9fZW50
ZXJfXyk6IGFyY2hpdmVyIGlzIGEgY29udGV4dCBtYW5hZ2VyLgorICAgICAgICAoQXJjaGl2ZUNv
bnRleHQuX19leGl0X18pOiBEaXR0by4KKyAgICAgICAgKEFyY2hpdmVDb250ZXh0LnJlZ2lzdGVy
KTogVGhlIGFyY2hpdmVyIG1lbWJlciBvd25zIHNhdmluZyBhbiBhcmNoaXZlLgorICAgICAgICAo
QXJjaGl2ZUNvbnRleHQuZmluZF9hcmNoaXZlKTogVGhlIGFyY2hpdmVyIG1lbWJlciBvd25zIHJl
dHJpZXZpbmcgYW4gYXJjaGl2ZS4KKyAgICAgICAgKEFyY2hpdmVDb250ZXh0LkFyY2hpdmVDaHVu
a3MpOiBNb3ZlIHRvIENhc3NhbmRyYUFyY2hpdmVyLgorICAgICAgICAqIHJlc3VsdHNkYnB5L3Jl
c3VsdHNkYnB5L21vZGVsL2FyY2hpdmVyLnB5OiBBZGRlZC4KKyAgICAgICAgKEFyY2hpdmVyKTog
QmFzZSBjbGFzcyBmb3IgYWxsIEFyY2hpdmluZyBzeXN0ZW1zLgorICAgICAgICAoQXJjaGl2ZXIu
YXJjaGl2ZV9kaWdlc3QpOiBHaXZlbiBhIGZpbGUtbGlrZSBhcmNoaXZlLCBjYWxjdWxhdGUgaXQn
cyBkaWdlc3QuCisgICAgICAgIChBcmNoaXZlci5hcmNoaXZlX3NpemUpOiBHaXZlbiBhIGZpbGUt
bGlrZSBhcmNoaXZlLCBjYWxjdWxhdGUgaXQncyBzaXplLgorICAgICAgICAoQXJjaGl2ZXIuc2F2
ZSk6CisgICAgICAgIChBcmNoaXZlci5yZXRyaWV2ZSk6CisgICAgICAgICogcmVzdWx0c2RicHkv
cmVzdWx0c2RicHkvbW9kZWwvY2Fzc2FuZHJhX2FyY2hpdmVyLnB5OiBBZGRlZC4KKyAgICAgICAg
KENhc3NhbmRyYUFyY2hpdmVyKToKKyAgICAgICAgKENhc3NhbmRyYUFyY2hpdmVyLkFyY2hpdmVD
aHVua3MpOiBNb3ZlZCBmcm9tIEFyY2hpdmVDb250ZXh0LgorICAgICAgICAoQ2Fzc2FuZHJhQXJj
aGl2ZXIuX19pbml0X18pOgorICAgICAgICAoQ2Fzc2FuZHJhQXJjaGl2ZXIuX19lbnRlcl9fKToK
KyAgICAgICAgKENhc3NhbmRyYUFyY2hpdmVyLl9fZXhpdF9fKToKKyAgICAgICAgKENhc3NhbmRy
YUFyY2hpdmVyLnNhdmUpOiBTcGxpdCB0aGUgcHJvdmlkZWQgYXJjaGl2ZSBpbnRvIGNodW5rcyBm
b3Igc2F2aW5nLCBtb3ZlZAorICAgICAgICBmcm9tIEFyY2hpdmVDb250ZXh0LgorICAgICAgICAo
Q2Fzc2FuZHJhQXJjaGl2ZXIucmV0cmlldmUpOiBSZXRyaWV2ZSBhbiBhcmNoaXZlIHdpdGggdGhl
IHByb3ZpZGVkIGhhc2gsIG1vdmVkCisgICAgICAgIGZyb20gQXJjaGl2ZUNvbnRleHQuCisKIDIw
MjAtMDItMDUgIEpvbmF0aGFuIEJlZGFyZCAgPGpiZWRhcmRAYXBwbGUuY29tPgogCiAgICAgICAg
IHJlc3VsdHMud2Via2l0Lm9yZzogQXBwbHkgdHRsIHRvIGFyY2hpdmUgc2hhcmRzCkluZGV4OiBU
b29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC9hcmNoaXZlX2NvbnRleHQucHkKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvYXJjaGl2ZV9j
b250ZXh0LnB5CShyZXZpc2lvbiAyNTU4NjApCisrKyBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRz
ZGJweS9tb2RlbC9hcmNoaXZlX2NvbnRleHQucHkJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw0
IEBACi0jIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisjIENvcHlyaWdodCAoQykgMjAxOS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjEsNyArMjEsNiBAQAogIyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgogCiBpbXBvcnQgY2FsZW5kYXIKLWltcG9ydCBoYXNobGliCiBpbXBvcnQgaW8KIGlt
cG9ydCBqc29uCiBpbXBvcnQgdGltZQpAQCAtMzMsNiArMzIsOCBAQCBmcm9tIGNvbGxlY3Rpb25z
IGltcG9ydCBPcmRlcmVkRGljdAogZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUKIGZyb20g
cmVzdWx0c2RicHkuY29udHJvbGxlci5jb21taXQgaW1wb3J0IENvbW1pdAogZnJvbSByZXN1bHRz
ZGJweS5jb250cm9sbGVyLmNvbmZpZ3VyYXRpb24gaW1wb3J0IENvbmZpZ3VyYXRpb24KK2Zyb20g
cmVzdWx0c2RicHkubW9kZWwuYXJjaGl2ZXIgaW1wb3J0IEFyY2hpdmVyCitmcm9tIHJlc3VsdHNk
YnB5Lm1vZGVsLmNhc3NhbmRyYV9hcmNoaXZlciBpbXBvcnQgQ2Fzc2FuZHJhQXJjaGl2ZXIKIGZy
b20gcmVzdWx0c2RicHkubW9kZWwuY29tbWl0X2NvbnRleHQgaW1wb3J0IENvbW1pdENvbnRleHQK
IGZyb20gcmVzdWx0c2RicHkubW9kZWwuY29uZmlndXJhdGlvbl9jb250ZXh0IGltcG9ydCBDbHVz
dGVyZWRCeUNvbmZpZ3VyYXRpb24KIGZyb20gcmVzdWx0c2RicHkubW9kZWwudXBsb2FkX2NvbnRl
eHQgaW1wb3J0IFVwbG9hZENvbnRleHQKQEAgLTQ4LDcgKzQ5LDYgQEAgZGVmIF9nZXRfdGltZShp
bnB1dF90aW1lKToKIAogY2xhc3MgQXJjaGl2ZUNvbnRleHQob2JqZWN0KToKICAgICBERUZBVUxU
X0xJTUlUID0gMTAKLSAgICBDSFVOS19TSVpFID0gMTAgKiAxMDI0ICogMTAyNCAgIyBDYXNzYW5k
cmEgZG9lc24ndCBkbyB3ZWxsIHdpdGggZGF0YSBibG9icyBvZiBtb3JlIHRoYW4gMTAgTUIKICAg
ICBNRU1PUllfTElNSVQgPSAyICogMTAyNCAqIDEwMjQgKiAxMDI0ICAjIERvbid0IGFsbG93IG1v
cmUgdGhhbiAyIGdpZ3Mgb2YgYXJjaGl2ZXMgaW4gbWVtb3J5IGF0IG9uZSB0aW1lCiAKICAgICBj
bGFzcyBBcmNoaXZlTWV0YURhdGFCeUNvbW1pdChDbHVzdGVyZWRCeUNvbmZpZ3VyYXRpb24pOgpA
QCAtNjksMTQgKzY5LDYgQEAgY2xhc3MgQXJjaGl2ZUNvbnRleHQob2JqZWN0KToKICAgICAgICAg
ICAgICAgICBzaXplPXNlbGYuc2l6ZSwKICAgICAgICAgICAgICkKIAotICAgICMgQWNjb3JkaW5n
IHRvIGh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvQ0FTU0FORFJB
Mi9DYXNzYW5kcmFMaW1pdGF0aW9ucywgd2Ugc2hvdWxkIHNoYXJkCi0gICAgIyBsYXJnZSBkYXRh
IGJsb2JzLgotICAgIGNsYXNzIEFyY2hpdmVDaHVua3MoTW9kZWwpOgotICAgICAgICBfX3RhYmxl
X25hbWVfXyA9ICdhcmNoaXZlX2NodW5rc18wMicKLSAgICAgICAgZGlnZXN0ID0gY29sdW1ucy5U
ZXh0KHBhcnRpdGlvbl9rZXk9VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSkKLSAgICAgICAgaW5kZXggPSBj
b2x1bW5zLkludGVnZXIocHJpbWFyeV9rZXk9VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSkKLSAgICAgICAg
Y2h1bmsgPSBjb2x1bW5zLkJsb2IocmVxdWlyZWQ9VHJ1ZSkKLQogICAgIEBjbGFzc21ldGhvZAog
ICAgIGRlZiBhc3NlcnRfemlwZmlsZShjbHMsIGFyY2hpdmUpOgogICAgICAgICBpZiBub3QgaXNp
bnN0YW5jZShhcmNoaXZlLCBpby5CeXRlc0lPKToKQEAgLTkzLDIwICs4NSwyMiBAQCBjbGFzcyBB
cmNoaXZlQ29udGV4dChvYmplY3QpOgogICAgICAgICBzZWxmLmNvbmZpZ3VyYXRpb25fY29udGV4
dCA9IGNvbmZpZ3VyYXRpb25fY29udGV4dAogICAgICAgICBzZWxmLmNvbW1pdF9jb250ZXh0ID0g
Y29tbWl0X2NvbnRleHQKICAgICAgICAgc2VsZi5jYXNzYW5kcmEgPSBzZWxmLmNvbmZpZ3VyYXRp
b25fY29udGV4dC5jYXNzYW5kcmEKKyAgICAgICAgc2VsZi5hcmNoaXZlciA9IENhc3NhbmRyYUFy
Y2hpdmVyKHNlbGYuY2Fzc2FuZHJhKQogICAgICAgICBzZWxmLnR0bF9zZWNvbmRzID0gdHRsX3Nl
Y29uZHMKIAogICAgICAgICB3aXRoIHNlbGY6CiAgICAgICAgICAgICBzZWxmLmNhc3NhbmRyYS5j
cmVhdGVfdGFibGUoc2VsZi5BcmNoaXZlTWV0YURhdGFCeUNvbW1pdCkKLSAgICAgICAgICAgIHNl
bGYuY2Fzc2FuZHJhLmNyZWF0ZV90YWJsZShzZWxmLkFyY2hpdmVDaHVua3MpCiAgICAgICAgICAg
ICBzZWxmLmNhc3NhbmRyYS5jcmVhdGVfdGFibGUoVXBsb2FkQ29udGV4dC5TdWl0ZXNCeUNvbmZp
Z3VyYXRpb24pCiAKICAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgogICAgICAgICBzZWxmLmNvbmZp
Z3VyYXRpb25fY29udGV4dC5fX2VudGVyX18oKQogICAgICAgICBzZWxmLmNvbW1pdF9jb250ZXh0
Ll9fZW50ZXJfXygpCisgICAgICAgIHNlbGYuYXJjaGl2ZXIuX19lbnRlcl9fKCkKIAogICAgIGRl
ZiBfX2V4aXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgogICAgICAgICBzZWxmLmNvbW1pdF9j
b250ZXh0Ll9fZXhpdF9fKCphcmdzLCAqKmt3YXJncykKICAgICAgICAgc2VsZi5jb25maWd1cmF0
aW9uX2NvbnRleHQuX19leGl0X18oKmFyZ3MsICoqa3dhcmdzKQorICAgICAgICBzZWxmLmFyY2hp
dmVyLl9fZXhpdF9fKCphcmdzLCAqKmt3YXJncykKIAogICAgIGRlZiByZWdpc3RlcihzZWxmLCBh
cmNoaXZlLCBjb25maWd1cmF0aW9uLCBjb21taXRzLCBzdWl0ZSwgdGltZXN0YW1wPU5vbmUpOgog
ICAgICAgICBzZWxmLmFzc2VydF96aXBmaWxlKGFyY2hpdmUpCkBAIC0xMjIsMjcgKzExNiwxNCBA
QCBjbGFzcyBBcmNoaXZlQ29udGV4dChvYmplY3QpOgogICAgICAgICAgICAgICAgIHNlbGYuY29u
ZmlndXJhdGlvbl9jb250ZXh0Lmluc2VydF9yb3dfd2l0aF9jb25maWd1cmF0aW9uKAogICAgICAg
ICAgICAgICAgICAgICBVcGxvYWRDb250ZXh0LlN1aXRlc0J5Q29uZmlndXJhdGlvbi5fX3RhYmxl
X25hbWVfXywgY29uZmlndXJhdGlvbiwgc3VpdGU9c3VpdGUsIGJyYW5jaD1icmFuY2gsIHR0bD10
dGwsCiAgICAgICAgICAgICAgICAgKQotCi0gICAgICAgICAgICAgICAgIyBCcmVha2luZyB1cCB0
aGUgYXJjaGl2ZSBpbnRvIGNodW5rcwotICAgICAgICAgICAgICAgIGluZGV4ID0gMAotICAgICAg
ICAgICAgICAgIHNpemUgPSBsZW4oYXJjaGl2ZS5nZXR2YWx1ZSgpKQotICAgICAgICAgICAgICAg
IGRpZ2VzdCA9IGhhc2hsaWIubWQ1KGFyY2hpdmUuZ2V0dmFsdWUoKSkuaGV4ZGlnZXN0KCkKLSAg
ICAgICAgICAgICAgICBhcmNoaXZlLnNlZWsoMCkKLSAgICAgICAgICAgICAgICB3aGlsZSBzaXpl
ID4gaW5kZXggKiBzZWxmLkNIVU5LX1NJWkU6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuY2Fz
c2FuZHJhLmluc2VydF9yb3coCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLkFyY2hpdmVD
aHVua3MuX190YWJsZV9uYW1lX18sCi0gICAgICAgICAgICAgICAgICAgICAgICBkaWdlc3Q9ZGln
ZXN0LCBpbmRleD1pbmRleCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNodW5rPWFyY2hpdmUu
cmVhZChzZWxmLkNIVU5LX1NJWkUpLAotICAgICAgICAgICAgICAgICAgICAgICAgdHRsPXR0bCwK
LSAgICAgICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgICAgICAgICBpbmRleCArPSAxCisg
ICAgICAgICAgICAgICAgZGlnZXN0ID0gc2VsZi5hcmNoaXZlci5zYXZlKGFyY2hpdmUsIHJldGFp
bl9mb3I9dHRsKQogCiAgICAgICAgICAgICAgICAgc2VsZi5jb25maWd1cmF0aW9uX2NvbnRleHQu
aW5zZXJ0X3Jvd193aXRoX2NvbmZpZ3VyYXRpb24oCiAgICAgICAgICAgICAgICAgICAgIHNlbGYu
QXJjaGl2ZU1ldGFEYXRhQnlDb21taXQuX190YWJsZV9uYW1lX18sIGNvbmZpZ3VyYXRpb249Y29u
ZmlndXJhdGlvbiwgc3VpdGU9c3VpdGUsCiAgICAgICAgICAgICAgICAgICAgIGJyYW5jaD1icmFu
Y2gsIHV1aWQ9dXVpZCwgdHRsPXR0bCwKICAgICAgICAgICAgICAgICAgICAgc2RrPWNvbmZpZ3Vy
YXRpb24uc2RrIG9yICc/Jywgc3RhcnRfdGltZT10aW1lc3RhbXAsCiAgICAgICAgICAgICAgICAg
ICAgIGRpZ2VzdD1kaWdlc3QsCi0gICAgICAgICAgICAgICAgICAgIHNpemU9c2l6ZSwKKyAgICAg
ICAgICAgICAgICAgICAgc2l6ZT1BcmNoaXZlci5hcmNoaXZlX3NpemUoYXJjaGl2ZSksCiAgICAg
ICAgICAgICAgICAgKQogCiAgICAgZGVmIGZpbmRfYXJjaGl2ZSgKQEAgLTE4NiwzMiArMTY3LDE2
IEBAIGNsYXNzIEFyY2hpdmVDb250ZXh0KG9iamVjdCk6CiAgICAgICAgICAgICAgICAgICAgICAg
ICBjb250aW51ZQogCiAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBhcmNoaXZlX2J5X2RpZ2Vz
dC5nZXQodmFsdWUuZ2V0KCdkaWdlc3QnKSk6Ci0gICAgICAgICAgICAgICAgICAgICAgICByb3dz
ID0gc2VsZi5jYXNzYW5kcmEuc2VsZWN0X2Zyb21fdGFibGUoCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2VsZi5BcmNoaXZlQ2h1bmtzLl9fdGFibGVfbmFtZV9fLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRpZ2VzdD12YWx1ZS5nZXQoJ2RpZ2VzdCcpLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGxpbWl0PTEgKyBpbnQodmFsdWUuZ2V0KCdzaXplJywgMCkgLyBzZWxm
LkNIVU5LX1NJWkUpLAotICAgICAgICAgICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgbGVuKHJvd3MpID09IDA6CisgICAgICAgICAgICAgICAgICAgICAgICBhcmNo
aXZlID0gc2VsZi5hcmNoaXZlci5yZXRyaWV2ZSh2YWx1ZS5nZXQoJ2RpZ2VzdCcpLCB2YWx1ZS5n
ZXQoJ3NpemUnLCBOb25lKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBhcmNoaXZl
OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgICAgICAg
ICAgICAgICAgIGRpZ2VzdCA9IGhhc2hsaWIubWQ1KCkKLSAgICAgICAgICAgICAgICAgICAgICAg
IGFyY2hpdmUgPSBpby5CeXRlc0lPKCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGFyY2hpdmVf
c2l6ZSA9IDAKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvciByb3cgaW4gcm93czoKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBhcmNoaXZlX3NpemUgKz0gbGVuKHJvdy5jaHVuaykKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkaWdlc3QudXBkYXRlKHJvdy5jaHVuaykKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBhcmNoaXZlLndyaXRlKHJvdy5jaHVuaykKLQotICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgYXJjaGl2ZV9zaXplICE9IHZhbHVlLmdldCgnc2l6ZScsIDAp
IG9yIHZhbHVlLmdldCgnZGlnZXN0JywgJycpICE9IGRpZ2VzdC5oZXhkaWdlc3QoKToKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ0ZhaWxlZCB0byByZWNv
bnN0cnVjdCBhcmNoaXZlIGZyb20gY2h1bmtzJykKLQogICAgICAgICAgICAgICAgICAgICAgICAg
YXJjaGl2ZV9ieV9kaWdlc3RbdmFsdWUuZ2V0KCdkaWdlc3QnKV0gPSBhcmNoaXZlCiAKICAgICAg
ICAgICAgICAgICAgICAgYXJjaGl2ZV9ieV9kaWdlc3QuZ2V0KHZhbHVlLmdldCgnZGlnZXN0Jykp
LnNlZWsoMCkKICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnNldGRlZmF1bHQoY29uZmlnLCBb
XSkKICAgICAgICAgICAgICAgICAgICAgcmVzdWx0W2NvbmZpZ10uYXBwZW5kKGRpY3QoCiAgICAg
ICAgICAgICAgICAgICAgICAgICBhcmNoaXZlPWFyY2hpdmVfYnlfZGlnZXN0LmdldCh2YWx1ZS5n
ZXQoJ2RpZ2VzdCcpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGRpZ2VzdD1kaWdlc3QuaGV4
ZGlnZXN0KCksCisgICAgICAgICAgICAgICAgICAgICAgICBkaWdlc3Q9dmFsdWUuZ2V0KCdkaWdl
c3QnKSwKICAgICAgICAgICAgICAgICAgICAgICAgIHV1aWQ9dmFsdWVbJ3V1aWQnXSwKICAgICAg
ICAgICAgICAgICAgICAgICAgIHN0YXJ0X3RpbWU9dmFsdWVbJ3N0YXJ0X3RpbWUnXSwKICAgICAg
ICAgICAgICAgICAgICAgKSkKSW5kZXg6IFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21v
ZGVsL2FyY2hpdmVyLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNk
YnB5L21vZGVsL2FyY2hpdmVyLnB5CShub25leGlzdGVudCkKKysrIFRvb2xzL3Jlc3VsdHNkYnB5
L3Jlc3VsdHNkYnB5L21vZGVsL2FyY2hpdmVyLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
NDUgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCBvcwor
aW1wb3J0IGhhc2hsaWIKKworCitjbGFzcyBBcmNoaXZlcihvYmplY3QpOgorICAgIEBjbGFzc21l
dGhvZAorICAgIGRlZiBhcmNoaXZlX2RpZ2VzdChjbHMsIGFyY2hpdmUpOgorICAgICAgICBkaWdl
c3QgPSBoYXNobGliLm1kNShhcmNoaXZlLmdldHZhbHVlKCkpLmhleGRpZ2VzdCgpCisgICAgICAg
IGFyY2hpdmUuc2VlaygwKQorICAgICAgICByZXR1cm4gZGlnZXN0CisKKyAgICBAY2xhc3NtZXRo
b2QKKyAgICBkZWYgYXJjaGl2ZV9zaXplKGNscywgYXJjaGl2ZSk6CisgICAgICAgIGFyY2hpdmUu
c2VlaygwLCBvcy5TRUVLX0VORCkKKyAgICAgICAgc2l6ZSA9IGFyY2hpdmUudGVsbCgpCisgICAg
ICAgIGFyY2hpdmUuc2VlaygwKQorICAgICAgICByZXR1cm4gc2l6ZQorCisgICAgZGVmIHNhdmUo
c2VsZiwgYXJjaGl2ZSwgcmV0YWluX2Zvcj1Ob25lKToKKyAgICAgICAgcmFpc2UgTm90SW1wbGVt
ZW50ZWRFcnJvcgorCisgICAgZGVmIHJldHJpZXZlKHNlbGYsIGRpZ2VzdCwgc2l6ZT1Ob25lKToK
KyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgpJbmRleDogVG9vbHMvcmVzdWx0c2Ri
cHkvcmVzdWx0c2RicHkvbW9kZWwvY2Fzc2FuZHJhX2FyY2hpdmVyLnB5Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL2Nhc3NhbmRyYV9hcmNoaXZlci5w
eQkobm9uZXhpc3RlbnQpCisrKyBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC9j
YXNzYW5kcmFfYXJjaGl2ZXIucHkJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4NSBAQAorIyBD
b3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisj
CisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyAiQVMgSVMiIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworaW1wb3J0IGlvCisKK2Zyb20gY2Fz
c2FuZHJhLmNxbGVuZ2luZSBpbXBvcnQgY29sdW1ucworZnJvbSBjYXNzYW5kcmEuY3FsZW5naW5l
Lm1vZGVscyBpbXBvcnQgTW9kZWwKK2Zyb20gcmVzdWx0c2RicHkubW9kZWwuYXJjaGl2ZXIgaW1w
b3J0IEFyY2hpdmVyCisKKworY2xhc3MgQ2Fzc2FuZHJhQXJjaGl2ZXIoQXJjaGl2ZXIpOgorICAg
IE1BWF9BUkNISVZFID0gNTAwICogMTAyNCAqIDEwMjQgICMgQXJjaGl2ZXMgc2hvdWxkIGJlIHNt
YWxsZXIgdGhhbiA1MDAgTUIKKyAgICBDSFVOS19TSVpFID0gMTAgKiAxMDI0ICogMTAyNCAgICAj
IENhc3NhbmRyYSBkb2Vzbid0IGRvIHdlbGwgd2l0aCBkYXRhIGJsb2JzIG9mIG1vcmUgdGhhbiAx
MCBNQgorCisgICAgIyBBY2NvcmRpbmcgdG8gaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZs
dWVuY2UvZGlzcGxheS9DQVNTQU5EUkEyL0Nhc3NhbmRyYUxpbWl0YXRpb25zLCB3ZSBzaG91bGQg
c2hhcmQKKyAgICAjIGxhcmdlIGRhdGEgYmxvYnMuCisgICAgY2xhc3MgQXJjaGl2ZUNodW5rcyhN
b2RlbCk6CisgICAgICAgIF9fdGFibGVfbmFtZV9fID0gJ2FyY2hpdmVfY2h1bmtzXzAyJworICAg
ICAgICBkaWdlc3QgPSBjb2x1bW5zLlRleHQocGFydGl0aW9uX2tleT1UcnVlLCByZXF1aXJlZD1U
cnVlKQorICAgICAgICBpbmRleCA9IGNvbHVtbnMuSW50ZWdlcihwcmltYXJ5X2tleT1UcnVlLCBy
ZXF1aXJlZD1UcnVlKQorICAgICAgICBjaHVuayA9IGNvbHVtbnMuQmxvYihyZXF1aXJlZD1UcnVl
KQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNhc3NhbmRyYSk6CisgICAgICAgIHNlbGYuY2Fz
c2FuZHJhID0gY2Fzc2FuZHJhCisgICAgICAgIHdpdGggc2VsZjoKKyAgICAgICAgICAgIHNlbGYu
Y2Fzc2FuZHJhLmNyZWF0ZV90YWJsZShzZWxmLkFyY2hpdmVDaHVua3MpCisKKyAgICBkZWYgX19l
bnRlcl9fKHNlbGYpOgorICAgICAgICBzZWxmLmNhc3NhbmRyYS5fX2VudGVyX18oKQorCisgICAg
ZGVmIF9fZXhpdF9fKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIHNlbGYuY2Fzc2Fu
ZHJhLl9fZXhpdF9fKCphcmdzLCAqKmt3YXJncykKKworICAgIGRlZiBzYXZlKHNlbGYsIGFyY2hp
dmUsIHJldGFpbl9mb3I9Tm9uZSk6CisgICAgICAgIGluZGV4ID0gMAorICAgICAgICBzaXplID0g
c2VsZi5hcmNoaXZlX3NpemUoYXJjaGl2ZSkKKyAgICAgICAgaWYgc2l6ZSA+IHNlbGYuTUFYX0FS
Q0hJVkU6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdBcmNoaXZlIGxhcmdlciB0aGFu
IDUwMCBNQicpCisgICAgICAgIGRpZ2VzdCA9IHNlbGYuYXJjaGl2ZV9kaWdlc3QoYXJjaGl2ZSkK
KyAgICAgICAgd2hpbGUgc2l6ZSA+IGluZGV4ICogc2VsZi5DSFVOS19TSVpFOgorICAgICAgICAg
ICAgc2VsZi5jYXNzYW5kcmEuaW5zZXJ0X3JvdygKKyAgICAgICAgICAgICAgICBzZWxmLkFyY2hp
dmVDaHVua3MuX190YWJsZV9uYW1lX18sCisgICAgICAgICAgICAgICAgZGlnZXN0PWRpZ2VzdCwg
aW5kZXg9aW5kZXgsCisgICAgICAgICAgICAgICAgY2h1bms9YXJjaGl2ZS5yZWFkKHNlbGYuQ0hV
TktfU0laRSksCisgICAgICAgICAgICAgICAgdHRsPXJldGFpbl9mb3IsCisgICAgICAgICAgICAp
CisgICAgICAgICAgICBpbmRleCArPSAxCisgICAgICAgIHJldHVybiBkaWdlc3QKKworICAgIGRl
ZiByZXRyaWV2ZShzZWxmLCBkaWdlc3QsIHNpemU9Tm9uZSk6CisgICAgICAgIHJvd3MgPSBzZWxm
LmNhc3NhbmRyYS5zZWxlY3RfZnJvbV90YWJsZSgKKyAgICAgICAgICAgIHNlbGYuQXJjaGl2ZUNo
dW5rcy5fX3RhYmxlX25hbWVfXywKKyAgICAgICAgICAgIGRpZ2VzdD1kaWdlc3QsCisgICAgICAg
ICAgICBsaW1pdD0xICsgaW50KHNpemUgb3Igc2VsZi5NQVhfQVJDSElWRSAvIHNlbGYuQ0hVTktf
U0laRSksCisgICAgICAgICkKKyAgICAgICAgaWYgbGVuKHJvd3MpID09IDA6CisgICAgICAgICAg
ICByZXR1cm4gTm9uZQorCisgICAgICAgIGFyY2hpdmUgPSBpby5CeXRlc0lPKCkKKyAgICAgICAg
Zm9yIHJvdyBpbiByb3dzOgorICAgICAgICAgICAgYXJjaGl2ZS53cml0ZShyb3cuY2h1bmspCisK
KyAgICAgICAgaWYgKHNpemUgYW5kIHNlbGYuYXJjaGl2ZV9zaXplKGFyY2hpdmUpICE9IHNpemUp
IG9yIGRpZ2VzdCAhPSBzZWxmLmFyY2hpdmVfZGlnZXN0KGFyY2hpdmUpOgorICAgICAgICAgICAg
cmFpc2UgUnVudGltZUVycm9yKCdGYWlsZWQgdG8gcmVjb25zdHJ1Y3QgYXJjaGl2ZSBmcm9tIGNo
dW5rcycpCisKKyAgICAgICAgcmV0dXJuIGFyY2hpdmUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390022</attachid>
            <date>2020-02-06 16:18:51 -0800</date>
            <delta_ts>2020-02-10 07:25:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207277-20200206161850.patch</filename>
            <type>text/plain</type>
            <size>14496</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI1NTk5MSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDM2IEBACisyMDIwLTAyLTA2ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICByZXN1bHRzLndlYmtpdC5vcmc6IEFic3RyYWN0IGFyY2hpdmUgc3RvcmFn
ZSBzb2x1dGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIwNzI3NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvYXJjaGl2ZV9jb250ZXh0LnB5Ogor
ICAgICAgICAoQXJjaGl2ZUNvbnRleHQpOgorICAgICAgICAoQXJjaGl2ZUNvbnRleHQuQXJjaGl2
ZU1ldGFEYXRhQnlDb21taXQudW5wYWNrKToKKyAgICAgICAgKEFyY2hpdmVDb250ZXh0Ll9faW5p
dF9fKTogQWRkIGFyY2hpdmVyIG1lbWJlci4KKyAgICAgICAgKEFyY2hpdmVDb250ZXh0Ll9fZW50
ZXJfXyk6IGFyY2hpdmVyIGlzIGEgY29udGV4dCBtYW5hZ2VyLgorICAgICAgICAoQXJjaGl2ZUNv
bnRleHQuX19leGl0X18pOiBEaXR0by4KKyAgICAgICAgKEFyY2hpdmVDb250ZXh0LnJlZ2lzdGVy
KTogVGhlIGFyY2hpdmVyIG1lbWJlciBvd25zIHNhdmluZyBhbiBhcmNoaXZlLgorICAgICAgICAo
QXJjaGl2ZUNvbnRleHQuZmluZF9hcmNoaXZlKTogVGhlIGFyY2hpdmVyIG1lbWJlciBvd25zIHJl
dHJpZXZpbmcgYW4gYXJjaGl2ZS4KKyAgICAgICAgKEFyY2hpdmVDb250ZXh0LkFyY2hpdmVDaHVu
a3MpOiBNb3ZlIHRvIENhc3NhbmRyYUFyY2hpdmVyLgorICAgICAgICAqIHJlc3VsdHNkYnB5L3Jl
c3VsdHNkYnB5L21vZGVsL2FyY2hpdmVyLnB5OiBBZGRlZC4KKyAgICAgICAgKEFyY2hpdmVyKTog
QmFzZSBjbGFzcyBmb3IgYWxsIEFyY2hpdmluZyBzeXN0ZW1zLgorICAgICAgICAoQXJjaGl2ZXIu
YXJjaGl2ZV9kaWdlc3QpOiBHaXZlbiBhIGZpbGUtbGlrZSBhcmNoaXZlLCBjYWxjdWxhdGUgaXQn
cyBkaWdlc3QuCisgICAgICAgIChBcmNoaXZlci5hcmNoaXZlX3NpemUpOiBHaXZlbiBhIGZpbGUt
bGlrZSBhcmNoaXZlLCBjYWxjdWxhdGUgaXQncyBzaXplLgorICAgICAgICAoQXJjaGl2ZXIuc2F2
ZSk6CisgICAgICAgIChBcmNoaXZlci5yZXRyaWV2ZSk6CisgICAgICAgICogcmVzdWx0c2RicHkv
cmVzdWx0c2RicHkvbW9kZWwvY2Fzc2FuZHJhX2FyY2hpdmVyLnB5OiBBZGRlZC4KKyAgICAgICAg
KENhc3NhbmRyYUFyY2hpdmVyKToKKyAgICAgICAgKENhc3NhbmRyYUFyY2hpdmVyLkFyY2hpdmVD
aHVua3MpOiBNb3ZlZCBmcm9tIEFyY2hpdmVDb250ZXh0LgorICAgICAgICAoQ2Fzc2FuZHJhQXJj
aGl2ZXIuX19pbml0X18pOgorICAgICAgICAoQ2Fzc2FuZHJhQXJjaGl2ZXIuX19lbnRlcl9fKToK
KyAgICAgICAgKENhc3NhbmRyYUFyY2hpdmVyLl9fZXhpdF9fKToKKyAgICAgICAgKENhc3NhbmRy
YUFyY2hpdmVyLnNhdmUpOiBTcGxpdCB0aGUgcHJvdmlkZWQgYXJjaGl2ZSBpbnRvIGNodW5rcyBm
b3Igc2F2aW5nLCBtb3ZlZAorICAgICAgICBmcm9tIEFyY2hpdmVDb250ZXh0LgorICAgICAgICAo
Q2Fzc2FuZHJhQXJjaGl2ZXIucmV0cmlldmUpOiBSZXRyaWV2ZSBhbiBhcmNoaXZlIHdpdGggdGhl
IHByb3ZpZGVkIGhhc2gsIG1vdmVkCisgICAgICAgIGZyb20gQXJjaGl2ZUNvbnRleHQuCisKIDIw
MjAtMDItMDYgIEpvbmF0aGFuIEJlZGFyZCAgPGpiZWRhcmRAYXBwbGUuY29tPgogCiAgICAgICAg
IHJlc3VsdHMud2Via2l0b3JnOiBEZWFkIENJIGxpbmtzCkluZGV4OiBUb29scy9yZXN1bHRzZGJw
eS9yZXN1bHRzZGJweS9tb2RlbC9hcmNoaXZlX2NvbnRleHQucHkKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvYXJjaGl2ZV9jb250ZXh0LnB5CShyZXZp
c2lvbiAyNTU5OTEpCisrKyBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC9hcmNo
aXZlX2NvbnRleHQucHkJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdo
dCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAo
QykgMjAxOS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMjEsNyArMjEsNiBAQAogIyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiBpbXBv
cnQgY2FsZW5kYXIKLWltcG9ydCBoYXNobGliCiBpbXBvcnQgaW8KIGltcG9ydCBqc29uCiBpbXBv
cnQgdGltZQpAQCAtMzMsNiArMzIsOCBAQCBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBPcmRlcmVk
RGljdAogZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUKIGZyb20gcmVzdWx0c2RicHkuY29u
dHJvbGxlci5jb21taXQgaW1wb3J0IENvbW1pdAogZnJvbSByZXN1bHRzZGJweS5jb250cm9sbGVy
LmNvbmZpZ3VyYXRpb24gaW1wb3J0IENvbmZpZ3VyYXRpb24KK2Zyb20gcmVzdWx0c2RicHkubW9k
ZWwuYXJjaGl2ZXIgaW1wb3J0IEFyY2hpdmVyCitmcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLmNhc3Nh
bmRyYV9hcmNoaXZlciBpbXBvcnQgQ2Fzc2FuZHJhQXJjaGl2ZXIKIGZyb20gcmVzdWx0c2RicHku
bW9kZWwuY29tbWl0X2NvbnRleHQgaW1wb3J0IENvbW1pdENvbnRleHQKIGZyb20gcmVzdWx0c2Ri
cHkubW9kZWwuY29uZmlndXJhdGlvbl9jb250ZXh0IGltcG9ydCBDbHVzdGVyZWRCeUNvbmZpZ3Vy
YXRpb24KIGZyb20gcmVzdWx0c2RicHkubW9kZWwudXBsb2FkX2NvbnRleHQgaW1wb3J0IFVwbG9h
ZENvbnRleHQKQEAgLTQ4LDcgKzQ5LDYgQEAgZGVmIF9nZXRfdGltZShpbnB1dF90aW1lKToKIAog
Y2xhc3MgQXJjaGl2ZUNvbnRleHQob2JqZWN0KToKICAgICBERUZBVUxUX0xJTUlUID0gMTAKLSAg
ICBDSFVOS19TSVpFID0gMTAgKiAxMDI0ICogMTAyNCAgIyBDYXNzYW5kcmEgZG9lc24ndCBkbyB3
ZWxsIHdpdGggZGF0YSBibG9icyBvZiBtb3JlIHRoYW4gMTAgTUIKICAgICBNRU1PUllfTElNSVQg
PSAyICogMTAyNCAqIDEwMjQgKiAxMDI0ICAjIERvbid0IGFsbG93IG1vcmUgdGhhbiAyIGdpZ3Mg
b2YgYXJjaGl2ZXMgaW4gbWVtb3J5IGF0IG9uZSB0aW1lCiAKICAgICBjbGFzcyBBcmNoaXZlTWV0
YURhdGFCeUNvbW1pdChDbHVzdGVyZWRCeUNvbmZpZ3VyYXRpb24pOgpAQCAtNjksMTQgKzY5LDYg
QEAgY2xhc3MgQXJjaGl2ZUNvbnRleHQob2JqZWN0KToKICAgICAgICAgICAgICAgICBzaXplPXNl
bGYuc2l6ZSwKICAgICAgICAgICAgICkKIAotICAgICMgQWNjb3JkaW5nIHRvIGh0dHBzOi8vY3dp
a2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvQ0FTU0FORFJBMi9DYXNzYW5kcmFMaW1p
dGF0aW9ucywgd2Ugc2hvdWxkIHNoYXJkCi0gICAgIyBsYXJnZSBkYXRhIGJsb2JzLgotICAgIGNs
YXNzIEFyY2hpdmVDaHVua3MoTW9kZWwpOgotICAgICAgICBfX3RhYmxlX25hbWVfXyA9ICdhcmNo
aXZlX2NodW5rc18wMicKLSAgICAgICAgZGlnZXN0ID0gY29sdW1ucy5UZXh0KHBhcnRpdGlvbl9r
ZXk9VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSkKLSAgICAgICAgaW5kZXggPSBjb2x1bW5zLkludGVnZXIo
cHJpbWFyeV9rZXk9VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSkKLSAgICAgICAgY2h1bmsgPSBjb2x1bW5z
LkJsb2IocmVxdWlyZWQ9VHJ1ZSkKLQogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBhc3NlcnRf
emlwZmlsZShjbHMsIGFyY2hpdmUpOgogICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShhcmNoaXZl
LCBpby5CeXRlc0lPKToKQEAgLTkzLDIwICs4NSwyMiBAQCBjbGFzcyBBcmNoaXZlQ29udGV4dChv
YmplY3QpOgogICAgICAgICBzZWxmLmNvbmZpZ3VyYXRpb25fY29udGV4dCA9IGNvbmZpZ3VyYXRp
b25fY29udGV4dAogICAgICAgICBzZWxmLmNvbW1pdF9jb250ZXh0ID0gY29tbWl0X2NvbnRleHQK
ICAgICAgICAgc2VsZi5jYXNzYW5kcmEgPSBzZWxmLmNvbmZpZ3VyYXRpb25fY29udGV4dC5jYXNz
YW5kcmEKKyAgICAgICAgc2VsZi5hcmNoaXZlciA9IENhc3NhbmRyYUFyY2hpdmVyKHNlbGYuY2Fz
c2FuZHJhKQogICAgICAgICBzZWxmLnR0bF9zZWNvbmRzID0gdHRsX3NlY29uZHMKIAogICAgICAg
ICB3aXRoIHNlbGY6CiAgICAgICAgICAgICBzZWxmLmNhc3NhbmRyYS5jcmVhdGVfdGFibGUoc2Vs
Zi5BcmNoaXZlTWV0YURhdGFCeUNvbW1pdCkKLSAgICAgICAgICAgIHNlbGYuY2Fzc2FuZHJhLmNy
ZWF0ZV90YWJsZShzZWxmLkFyY2hpdmVDaHVua3MpCiAgICAgICAgICAgICBzZWxmLmNhc3NhbmRy
YS5jcmVhdGVfdGFibGUoVXBsb2FkQ29udGV4dC5TdWl0ZXNCeUNvbmZpZ3VyYXRpb24pCiAKICAg
ICBkZWYgX19lbnRlcl9fKHNlbGYpOgogICAgICAgICBzZWxmLmNvbmZpZ3VyYXRpb25fY29udGV4
dC5fX2VudGVyX18oKQogICAgICAgICBzZWxmLmNvbW1pdF9jb250ZXh0Ll9fZW50ZXJfXygpCisg
ICAgICAgIHNlbGYuYXJjaGl2ZXIuX19lbnRlcl9fKCkKIAogICAgIGRlZiBfX2V4aXRfXyhzZWxm
LCAqYXJncywgKiprd2FyZ3MpOgogICAgICAgICBzZWxmLmNvbW1pdF9jb250ZXh0Ll9fZXhpdF9f
KCphcmdzLCAqKmt3YXJncykKICAgICAgICAgc2VsZi5jb25maWd1cmF0aW9uX2NvbnRleHQuX19l
eGl0X18oKmFyZ3MsICoqa3dhcmdzKQorICAgICAgICBzZWxmLmFyY2hpdmVyLl9fZXhpdF9fKCph
cmdzLCAqKmt3YXJncykKIAogICAgIGRlZiByZWdpc3RlcihzZWxmLCBhcmNoaXZlLCBjb25maWd1
cmF0aW9uLCBjb21taXRzLCBzdWl0ZSwgdGltZXN0YW1wPU5vbmUpOgogICAgICAgICBzZWxmLmFz
c2VydF96aXBmaWxlKGFyY2hpdmUpCkBAIC0xMjIsMjcgKzExNiwxNCBAQCBjbGFzcyBBcmNoaXZl
Q29udGV4dChvYmplY3QpOgogICAgICAgICAgICAgICAgIHNlbGYuY29uZmlndXJhdGlvbl9jb250
ZXh0Lmluc2VydF9yb3dfd2l0aF9jb25maWd1cmF0aW9uKAogICAgICAgICAgICAgICAgICAgICBV
cGxvYWRDb250ZXh0LlN1aXRlc0J5Q29uZmlndXJhdGlvbi5fX3RhYmxlX25hbWVfXywgY29uZmln
dXJhdGlvbiwgc3VpdGU9c3VpdGUsIGJyYW5jaD1icmFuY2gsIHR0bD10dGwsCiAgICAgICAgICAg
ICAgICAgKQotCi0gICAgICAgICAgICAgICAgIyBCcmVha2luZyB1cCB0aGUgYXJjaGl2ZSBpbnRv
IGNodW5rcwotICAgICAgICAgICAgICAgIGluZGV4ID0gMAotICAgICAgICAgICAgICAgIHNpemUg
PSBsZW4oYXJjaGl2ZS5nZXR2YWx1ZSgpKQotICAgICAgICAgICAgICAgIGRpZ2VzdCA9IGhhc2hs
aWIubWQ1KGFyY2hpdmUuZ2V0dmFsdWUoKSkuaGV4ZGlnZXN0KCkKLSAgICAgICAgICAgICAgICBh
cmNoaXZlLnNlZWsoMCkKLSAgICAgICAgICAgICAgICB3aGlsZSBzaXplID4gaW5kZXggKiBzZWxm
LkNIVU5LX1NJWkU6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuY2Fzc2FuZHJhLmluc2VydF9y
b3coCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLkFyY2hpdmVDaHVua3MuX190YWJsZV9u
YW1lX18sCi0gICAgICAgICAgICAgICAgICAgICAgICBkaWdlc3Q9ZGlnZXN0LCBpbmRleD1pbmRl
eCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNodW5rPWFyY2hpdmUucmVhZChzZWxmLkNIVU5L
X1NJWkUpLAotICAgICAgICAgICAgICAgICAgICAgICAgdHRsPXR0bCwKLSAgICAgICAgICAgICAg
ICAgICAgKQotICAgICAgICAgICAgICAgICAgICBpbmRleCArPSAxCisgICAgICAgICAgICAgICAg
ZGlnZXN0ID0gc2VsZi5hcmNoaXZlci5zYXZlKGFyY2hpdmUsIHJldGFpbl9mb3I9dHRsKQogCiAg
ICAgICAgICAgICAgICAgc2VsZi5jb25maWd1cmF0aW9uX2NvbnRleHQuaW5zZXJ0X3Jvd193aXRo
X2NvbmZpZ3VyYXRpb24oCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuQXJjaGl2ZU1ldGFEYXRh
QnlDb21taXQuX190YWJsZV9uYW1lX18sIGNvbmZpZ3VyYXRpb249Y29uZmlndXJhdGlvbiwgc3Vp
dGU9c3VpdGUsCiAgICAgICAgICAgICAgICAgICAgIGJyYW5jaD1icmFuY2gsIHV1aWQ9dXVpZCwg
dHRsPXR0bCwKICAgICAgICAgICAgICAgICAgICAgc2RrPWNvbmZpZ3VyYXRpb24uc2RrIG9yICc/
Jywgc3RhcnRfdGltZT10aW1lc3RhbXAsCiAgICAgICAgICAgICAgICAgICAgIGRpZ2VzdD1kaWdl
c3QsCi0gICAgICAgICAgICAgICAgICAgIHNpemU9c2l6ZSwKKyAgICAgICAgICAgICAgICAgICAg
c2l6ZT1BcmNoaXZlci5hcmNoaXZlX3NpemUoYXJjaGl2ZSksCiAgICAgICAgICAgICAgICAgKQog
CiAgICAgZGVmIGZpbmRfYXJjaGl2ZSgKQEAgLTE4NiwzMiArMTY3LDE2IEBAIGNsYXNzIEFyY2hp
dmVDb250ZXh0KG9iamVjdCk6CiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogCiAg
ICAgICAgICAgICAgICAgICAgIGlmIG5vdCBhcmNoaXZlX2J5X2RpZ2VzdC5nZXQodmFsdWUuZ2V0
KCdkaWdlc3QnKSk6Ci0gICAgICAgICAgICAgICAgICAgICAgICByb3dzID0gc2VsZi5jYXNzYW5k
cmEuc2VsZWN0X2Zyb21fdGFibGUoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5B
cmNoaXZlQ2h1bmtzLl9fdGFibGVfbmFtZV9fLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRpZ2VzdD12YWx1ZS5nZXQoJ2RpZ2VzdCcpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGxpbWl0PTEgKyBpbnQodmFsdWUuZ2V0KCdzaXplJywgMCkgLyBzZWxmLkNIVU5LX1NJWkUpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgbGVu
KHJvd3MpID09IDA6CisgICAgICAgICAgICAgICAgICAgICAgICBhcmNoaXZlID0gc2VsZi5hcmNo
aXZlci5yZXRyaWV2ZSh2YWx1ZS5nZXQoJ2RpZ2VzdCcpLCB2YWx1ZS5nZXQoJ3NpemUnLCBOb25l
KSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBhcmNoaXZlOgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgICAgICAgICAgICAgICAgIGRpZ2Vz
dCA9IGhhc2hsaWIubWQ1KCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGFyY2hpdmUgPSBpby5C
eXRlc0lPKCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGFyY2hpdmVfc2l6ZSA9IDAKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGZvciByb3cgaW4gcm93czoKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBhcmNoaXZlX3NpemUgKz0gbGVuKHJvdy5jaHVuaykKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkaWdlc3QudXBkYXRlKHJvdy5jaHVuaykKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBhcmNoaXZlLndyaXRlKHJvdy5jaHVuaykKLQotICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgYXJjaGl2ZV9zaXplICE9IHZhbHVlLmdldCgnc2l6ZScsIDApIG9yIHZhbHVlLmdldCgn
ZGlnZXN0JywgJycpICE9IGRpZ2VzdC5oZXhkaWdlc3QoKToKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ0ZhaWxlZCB0byByZWNvbnN0cnVjdCBhcmNoaXZl
IGZyb20gY2h1bmtzJykKLQogICAgICAgICAgICAgICAgICAgICAgICAgYXJjaGl2ZV9ieV9kaWdl
c3RbdmFsdWUuZ2V0KCdkaWdlc3QnKV0gPSBhcmNoaXZlCiAKICAgICAgICAgICAgICAgICAgICAg
YXJjaGl2ZV9ieV9kaWdlc3QuZ2V0KHZhbHVlLmdldCgnZGlnZXN0JykpLnNlZWsoMCkKICAgICAg
ICAgICAgICAgICAgICAgcmVzdWx0LnNldGRlZmF1bHQoY29uZmlnLCBbXSkKICAgICAgICAgICAg
ICAgICAgICAgcmVzdWx0W2NvbmZpZ10uYXBwZW5kKGRpY3QoCiAgICAgICAgICAgICAgICAgICAg
ICAgICBhcmNoaXZlPWFyY2hpdmVfYnlfZGlnZXN0LmdldCh2YWx1ZS5nZXQoJ2RpZ2VzdCcpKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgIGRpZ2VzdD1kaWdlc3QuaGV4ZGlnZXN0KCksCisgICAg
ICAgICAgICAgICAgICAgICAgICBkaWdlc3Q9dmFsdWUuZ2V0KCdkaWdlc3QnKSwKICAgICAgICAg
ICAgICAgICAgICAgICAgIHV1aWQ9dmFsdWVbJ3V1aWQnXSwKICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0YXJ0X3RpbWU9dmFsdWVbJ3N0YXJ0X3RpbWUnXSwKICAgICAgICAgICAgICAgICAgICAg
KSkKSW5kZXg6IFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL2FyY2hpdmVyLnB5
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL2FyY2hp
dmVyLnB5CShub25leGlzdGVudCkKKysrIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21v
ZGVsL2FyY2hpdmVyLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDUgQEAKKyMgQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMg
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgIkFTIElTIiBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQor
IyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
CisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCBvcworaW1wb3J0IGhhc2hsaWIK
KworCitjbGFzcyBBcmNoaXZlcihvYmplY3QpOgorICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBh
cmNoaXZlX2RpZ2VzdChjbHMsIGFyY2hpdmUpOgorICAgICAgICBkaWdlc3QgPSBoYXNobGliLm1k
NShhcmNoaXZlLmdldHZhbHVlKCkpLmhleGRpZ2VzdCgpCisgICAgICAgIGFyY2hpdmUuc2Vlaygw
KQorICAgICAgICByZXR1cm4gZGlnZXN0CisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgYXJj
aGl2ZV9zaXplKGNscywgYXJjaGl2ZSk6CisgICAgICAgIGFyY2hpdmUuc2VlaygwLCBvcy5TRUVL
X0VORCkKKyAgICAgICAgc2l6ZSA9IGFyY2hpdmUudGVsbCgpCisgICAgICAgIGFyY2hpdmUuc2Vl
aygwKQorICAgICAgICByZXR1cm4gc2l6ZQorCisgICAgZGVmIHNhdmUoc2VsZiwgYXJjaGl2ZSwg
cmV0YWluX2Zvcj1Ob25lKToKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgorCisg
ICAgZGVmIHJldHJpZXZlKHNlbGYsIGRpZ2VzdCwgc2l6ZT1Ob25lKToKKyAgICAgICAgcmFpc2Ug
Tm90SW1wbGVtZW50ZWRFcnJvcgpJbmRleDogVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkv
bW9kZWwvY2Fzc2FuZHJhX2FyY2hpdmVyLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL3Jlc3VsdHNk
YnB5L3Jlc3VsdHNkYnB5L21vZGVsL2Nhc3NhbmRyYV9hcmNoaXZlci5weQkobm9uZXhpc3RlbnQp
CisrKyBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC9jYXNzYW5kcmFfYXJjaGl2
ZXIucHkJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4NSBAQAorIyBDb3B5cmlnaHQgKEMpIDIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMi
IEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKworaW1wb3J0IGlvCisKK2Zyb20gY2Fzc2FuZHJhLmNxbGVuZ2lu
ZSBpbXBvcnQgY29sdW1ucworZnJvbSBjYXNzYW5kcmEuY3FsZW5naW5lLm1vZGVscyBpbXBvcnQg
TW9kZWwKK2Zyb20gcmVzdWx0c2RicHkubW9kZWwuYXJjaGl2ZXIgaW1wb3J0IEFyY2hpdmVyCisK
KworY2xhc3MgQ2Fzc2FuZHJhQXJjaGl2ZXIoQXJjaGl2ZXIpOgorICAgIE1BWF9BUkNISVZFID0g
NTAwICogMTAyNCAqIDEwMjQgICMgQXJjaGl2ZXMgc2hvdWxkIGJlIHNtYWxsZXIgdGhhbiA1MDAg
TUIKKyAgICBDSFVOS19TSVpFID0gMTAgKiAxMDI0ICogMTAyNCAgICAjIENhc3NhbmRyYSBkb2Vz
bid0IGRvIHdlbGwgd2l0aCBkYXRhIGJsb2JzIG9mIG1vcmUgdGhhbiAxMCBNQgorCisgICAgIyBB
Y2NvcmRpbmcgdG8gaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9D
QVNTQU5EUkEyL0Nhc3NhbmRyYUxpbWl0YXRpb25zLCB3ZSBzaG91bGQgc2hhcmQKKyAgICAjIGxh
cmdlIGRhdGEgYmxvYnMuCisgICAgY2xhc3MgQXJjaGl2ZUNodW5rcyhNb2RlbCk6CisgICAgICAg
IF9fdGFibGVfbmFtZV9fID0gJ2FyY2hpdmVfY2h1bmtzXzAyJworICAgICAgICBkaWdlc3QgPSBj
b2x1bW5zLlRleHQocGFydGl0aW9uX2tleT1UcnVlLCByZXF1aXJlZD1UcnVlKQorICAgICAgICBp
bmRleCA9IGNvbHVtbnMuSW50ZWdlcihwcmltYXJ5X2tleT1UcnVlLCByZXF1aXJlZD1UcnVlKQor
ICAgICAgICBjaHVuayA9IGNvbHVtbnMuQmxvYihyZXF1aXJlZD1UcnVlKQorCisgICAgZGVmIF9f
aW5pdF9fKHNlbGYsIGNhc3NhbmRyYSk6CisgICAgICAgIHNlbGYuY2Fzc2FuZHJhID0gY2Fzc2Fu
ZHJhCisgICAgICAgIHdpdGggc2VsZjoKKyAgICAgICAgICAgIHNlbGYuY2Fzc2FuZHJhLmNyZWF0
ZV90YWJsZShzZWxmLkFyY2hpdmVDaHVua3MpCisKKyAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgor
ICAgICAgICBzZWxmLmNhc3NhbmRyYS5fX2VudGVyX18oKQorCisgICAgZGVmIF9fZXhpdF9fKHNl
bGYsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIHNlbGYuY2Fzc2FuZHJhLl9fZXhpdF9fKCph
cmdzLCAqKmt3YXJncykKKworICAgIGRlZiBzYXZlKHNlbGYsIGFyY2hpdmUsIHJldGFpbl9mb3I9
Tm9uZSk6CisgICAgICAgIGluZGV4ID0gMAorICAgICAgICBzaXplID0gc2VsZi5hcmNoaXZlX3Np
emUoYXJjaGl2ZSkKKyAgICAgICAgaWYgc2l6ZSA+IHNlbGYuTUFYX0FSQ0hJVkU6CisgICAgICAg
ICAgICByYWlzZSBWYWx1ZUVycm9yKCdBcmNoaXZlIGxhcmdlciB0aGFuIDUwMCBNQicpCisgICAg
ICAgIGRpZ2VzdCA9IHNlbGYuYXJjaGl2ZV9kaWdlc3QoYXJjaGl2ZSkKKyAgICAgICAgd2hpbGUg
c2l6ZSA+IGluZGV4ICogc2VsZi5DSFVOS19TSVpFOgorICAgICAgICAgICAgc2VsZi5jYXNzYW5k
cmEuaW5zZXJ0X3JvdygKKyAgICAgICAgICAgICAgICBzZWxmLkFyY2hpdmVDaHVua3MuX190YWJs
ZV9uYW1lX18sCisgICAgICAgICAgICAgICAgZGlnZXN0PWRpZ2VzdCwgaW5kZXg9aW5kZXgsCisg
ICAgICAgICAgICAgICAgY2h1bms9YXJjaGl2ZS5yZWFkKHNlbGYuQ0hVTktfU0laRSksCisgICAg
ICAgICAgICAgICAgdHRsPXJldGFpbl9mb3IsCisgICAgICAgICAgICApCisgICAgICAgICAgICBp
bmRleCArPSAxCisgICAgICAgIHJldHVybiBkaWdlc3QKKworICAgIGRlZiByZXRyaWV2ZShzZWxm
LCBkaWdlc3QsIHNpemU9Tm9uZSk6CisgICAgICAgIHJvd3MgPSBzZWxmLmNhc3NhbmRyYS5zZWxl
Y3RfZnJvbV90YWJsZSgKKyAgICAgICAgICAgIHNlbGYuQXJjaGl2ZUNodW5rcy5fX3RhYmxlX25h
bWVfXywKKyAgICAgICAgICAgIGRpZ2VzdD1kaWdlc3QsCisgICAgICAgICAgICBsaW1pdD0xICsg
aW50KHNpemUgb3Igc2VsZi5NQVhfQVJDSElWRSAvIHNlbGYuQ0hVTktfU0laRSksCisgICAgICAg
ICkKKyAgICAgICAgaWYgbGVuKHJvd3MpID09IDA6CisgICAgICAgICAgICByZXR1cm4gTm9uZQor
CisgICAgICAgIGFyY2hpdmUgPSBpby5CeXRlc0lPKCkKKyAgICAgICAgZm9yIHJvdyBpbiByb3dz
OgorICAgICAgICAgICAgYXJjaGl2ZS53cml0ZShyb3cuY2h1bmspCisKKyAgICAgICAgaWYgKHNp
emUgYW5kIHNlbGYuYXJjaGl2ZV9zaXplKGFyY2hpdmUpICE9IHNpemUpIG9yIGRpZ2VzdCAhPSBz
ZWxmLmFyY2hpdmVfZGlnZXN0KGFyY2hpdmUpOgorICAgICAgICAgICAgcmFpc2UgUnVudGltZUVy
cm9yKCdGYWlsZWQgdG8gcmVjb25zdHJ1Y3QgYXJjaGl2ZSBmcm9tIGNodW5rcycpCisKKyAgICAg
ICAgcmV0dXJuIGFyY2hpdmUK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390251</attachid>
            <date>2020-02-10 07:25:04 -0800</date>
            <delta_ts>2020-02-10 08:10:26 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-207277-20200210072503.patch</filename>
            <type>text/plain</type>
            <size>14508</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI1NjE2NykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDM2IEBACisyMDIwLTAyLTEwICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICByZXN1bHRzLndlYmtpdC5vcmc6IEFic3RyYWN0IGFyY2hpdmUgc3RvcmFn
ZSBzb2x1dGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIwNzI3NworCisgICAgICAgIFJ1YmJlci1zdGFtcGVkIGJ5IEFha2FzaCBKYWluLgorCisg
ICAgICAgICogcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvYXJjaGl2ZV9jb250ZXh0LnB5
OgorICAgICAgICAoQXJjaGl2ZUNvbnRleHQpOgorICAgICAgICAoQXJjaGl2ZUNvbnRleHQuQXJj
aGl2ZU1ldGFEYXRhQnlDb21taXQudW5wYWNrKToKKyAgICAgICAgKEFyY2hpdmVDb250ZXh0Ll9f
aW5pdF9fKTogQWRkIGFyY2hpdmVyIG1lbWJlci4KKyAgICAgICAgKEFyY2hpdmVDb250ZXh0Ll9f
ZW50ZXJfXyk6IGFyY2hpdmVyIGlzIGEgY29udGV4dCBtYW5hZ2VyLgorICAgICAgICAoQXJjaGl2
ZUNvbnRleHQuX19leGl0X18pOiBEaXR0by4KKyAgICAgICAgKEFyY2hpdmVDb250ZXh0LnJlZ2lz
dGVyKTogVGhlIGFyY2hpdmVyIG1lbWJlciBvd25zIHNhdmluZyBhbiBhcmNoaXZlLgorICAgICAg
ICAoQXJjaGl2ZUNvbnRleHQuZmluZF9hcmNoaXZlKTogVGhlIGFyY2hpdmVyIG1lbWJlciBvd25z
IHJldHJpZXZpbmcgYW4gYXJjaGl2ZS4KKyAgICAgICAgKEFyY2hpdmVDb250ZXh0LkFyY2hpdmVD
aHVua3MpOiBNb3ZlIHRvIENhc3NhbmRyYUFyY2hpdmVyLgorICAgICAgICAqIHJlc3VsdHNkYnB5
L3Jlc3VsdHNkYnB5L21vZGVsL2FyY2hpdmVyLnB5OiBBZGRlZC4KKyAgICAgICAgKEFyY2hpdmVy
KTogQmFzZSBjbGFzcyBmb3IgYWxsIEFyY2hpdmluZyBzeXN0ZW1zLgorICAgICAgICAoQXJjaGl2
ZXIuYXJjaGl2ZV9kaWdlc3QpOiBHaXZlbiBhIGZpbGUtbGlrZSBhcmNoaXZlLCBjYWxjdWxhdGUg
aXQncyBkaWdlc3QuCisgICAgICAgIChBcmNoaXZlci5hcmNoaXZlX3NpemUpOiBHaXZlbiBhIGZp
bGUtbGlrZSBhcmNoaXZlLCBjYWxjdWxhdGUgaXQncyBzaXplLgorICAgICAgICAoQXJjaGl2ZXIu
c2F2ZSk6CisgICAgICAgIChBcmNoaXZlci5yZXRyaWV2ZSk6CisgICAgICAgICogcmVzdWx0c2Ri
cHkvcmVzdWx0c2RicHkvbW9kZWwvY2Fzc2FuZHJhX2FyY2hpdmVyLnB5OiBBZGRlZC4KKyAgICAg
ICAgKENhc3NhbmRyYUFyY2hpdmVyKToKKyAgICAgICAgKENhc3NhbmRyYUFyY2hpdmVyLkFyY2hp
dmVDaHVua3MpOiBNb3ZlZCBmcm9tIEFyY2hpdmVDb250ZXh0LgorICAgICAgICAoQ2Fzc2FuZHJh
QXJjaGl2ZXIuX19pbml0X18pOgorICAgICAgICAoQ2Fzc2FuZHJhQXJjaGl2ZXIuX19lbnRlcl9f
KToKKyAgICAgICAgKENhc3NhbmRyYUFyY2hpdmVyLl9fZXhpdF9fKToKKyAgICAgICAgKENhc3Nh
bmRyYUFyY2hpdmVyLnNhdmUpOiBTcGxpdCB0aGUgcHJvdmlkZWQgYXJjaGl2ZSBpbnRvIGNodW5r
cyBmb3Igc2F2aW5nLCBtb3ZlZAorICAgICAgICBmcm9tIEFyY2hpdmVDb250ZXh0LgorICAgICAg
ICAoQ2Fzc2FuZHJhQXJjaGl2ZXIucmV0cmlldmUpOiBSZXRyaWV2ZSBhbiBhcmNoaXZlIHdpdGgg
dGhlIHByb3ZpZGVkIGhhc2gsIG1vdmVkCisgICAgICAgIGZyb20gQXJjaGl2ZUNvbnRleHQuCisK
IDIwMjAtMDItMDkgIExhdXJvIE1vdXJhICA8bG1vdXJhQGlnYWxpYS5jb20+CiAKICAgICAgICAg
W0dUS11bV1BFXSBFeHBvc2UgYWxsb3dUb3BOYXZpZ2F0aW9uVG9EYXRhVVJMCkluZGV4OiBUb29s
cy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC9hcmNoaXZlX2NvbnRleHQucHkKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvYXJjaGl2ZV9jb250
ZXh0LnB5CShyZXZpc2lvbiAyNTYxNjcpCisrKyBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJw
eS9tb2RlbC9hcmNoaXZlX2NvbnRleHQucHkJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBA
Ci0jIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisj
IENvcHlyaWdodCAoQykgMjAxOS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjEsNyArMjEsNiBAQAogIyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgogCiBpbXBvcnQgY2FsZW5kYXIKLWltcG9ydCBoYXNobGliCiBpbXBvcnQgaW8KIGltcG9y
dCBqc29uCiBpbXBvcnQgdGltZQpAQCAtMzMsNiArMzIsOCBAQCBmcm9tIGNvbGxlY3Rpb25zIGlt
cG9ydCBPcmRlcmVkRGljdAogZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUKIGZyb20gcmVz
dWx0c2RicHkuY29udHJvbGxlci5jb21taXQgaW1wb3J0IENvbW1pdAogZnJvbSByZXN1bHRzZGJw
eS5jb250cm9sbGVyLmNvbmZpZ3VyYXRpb24gaW1wb3J0IENvbmZpZ3VyYXRpb24KK2Zyb20gcmVz
dWx0c2RicHkubW9kZWwuYXJjaGl2ZXIgaW1wb3J0IEFyY2hpdmVyCitmcm9tIHJlc3VsdHNkYnB5
Lm1vZGVsLmNhc3NhbmRyYV9hcmNoaXZlciBpbXBvcnQgQ2Fzc2FuZHJhQXJjaGl2ZXIKIGZyb20g
cmVzdWx0c2RicHkubW9kZWwuY29tbWl0X2NvbnRleHQgaW1wb3J0IENvbW1pdENvbnRleHQKIGZy
b20gcmVzdWx0c2RicHkubW9kZWwuY29uZmlndXJhdGlvbl9jb250ZXh0IGltcG9ydCBDbHVzdGVy
ZWRCeUNvbmZpZ3VyYXRpb24KIGZyb20gcmVzdWx0c2RicHkubW9kZWwudXBsb2FkX2NvbnRleHQg
aW1wb3J0IFVwbG9hZENvbnRleHQKQEAgLTQ4LDcgKzQ5LDYgQEAgZGVmIF9nZXRfdGltZShpbnB1
dF90aW1lKToKIAogY2xhc3MgQXJjaGl2ZUNvbnRleHQob2JqZWN0KToKICAgICBERUZBVUxUX0xJ
TUlUID0gMTAKLSAgICBDSFVOS19TSVpFID0gMTAgKiAxMDI0ICogMTAyNCAgIyBDYXNzYW5kcmEg
ZG9lc24ndCBkbyB3ZWxsIHdpdGggZGF0YSBibG9icyBvZiBtb3JlIHRoYW4gMTAgTUIKICAgICBN
RU1PUllfTElNSVQgPSAyICogMTAyNCAqIDEwMjQgKiAxMDI0ICAjIERvbid0IGFsbG93IG1vcmUg
dGhhbiAyIGdpZ3Mgb2YgYXJjaGl2ZXMgaW4gbWVtb3J5IGF0IG9uZSB0aW1lCiAKICAgICBjbGFz
cyBBcmNoaXZlTWV0YURhdGFCeUNvbW1pdChDbHVzdGVyZWRCeUNvbmZpZ3VyYXRpb24pOgpAQCAt
NjksMTQgKzY5LDYgQEAgY2xhc3MgQXJjaGl2ZUNvbnRleHQob2JqZWN0KToKICAgICAgICAgICAg
ICAgICBzaXplPXNlbGYuc2l6ZSwKICAgICAgICAgICAgICkKIAotICAgICMgQWNjb3JkaW5nIHRv
IGh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvQ0FTU0FORFJBMi9D
YXNzYW5kcmFMaW1pdGF0aW9ucywgd2Ugc2hvdWxkIHNoYXJkCi0gICAgIyBsYXJnZSBkYXRhIGJs
b2JzLgotICAgIGNsYXNzIEFyY2hpdmVDaHVua3MoTW9kZWwpOgotICAgICAgICBfX3RhYmxlX25h
bWVfXyA9ICdhcmNoaXZlX2NodW5rc18wMicKLSAgICAgICAgZGlnZXN0ID0gY29sdW1ucy5UZXh0
KHBhcnRpdGlvbl9rZXk9VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSkKLSAgICAgICAgaW5kZXggPSBjb2x1
bW5zLkludGVnZXIocHJpbWFyeV9rZXk9VHJ1ZSwgcmVxdWlyZWQ9VHJ1ZSkKLSAgICAgICAgY2h1
bmsgPSBjb2x1bW5zLkJsb2IocmVxdWlyZWQ9VHJ1ZSkKLQogICAgIEBjbGFzc21ldGhvZAogICAg
IGRlZiBhc3NlcnRfemlwZmlsZShjbHMsIGFyY2hpdmUpOgogICAgICAgICBpZiBub3QgaXNpbnN0
YW5jZShhcmNoaXZlLCBpby5CeXRlc0lPKToKQEAgLTkzLDIwICs4NSwyMiBAQCBjbGFzcyBBcmNo
aXZlQ29udGV4dChvYmplY3QpOgogICAgICAgICBzZWxmLmNvbmZpZ3VyYXRpb25fY29udGV4dCA9
IGNvbmZpZ3VyYXRpb25fY29udGV4dAogICAgICAgICBzZWxmLmNvbW1pdF9jb250ZXh0ID0gY29t
bWl0X2NvbnRleHQKICAgICAgICAgc2VsZi5jYXNzYW5kcmEgPSBzZWxmLmNvbmZpZ3VyYXRpb25f
Y29udGV4dC5jYXNzYW5kcmEKKyAgICAgICAgc2VsZi5hcmNoaXZlciA9IENhc3NhbmRyYUFyY2hp
dmVyKHNlbGYuY2Fzc2FuZHJhKQogICAgICAgICBzZWxmLnR0bF9zZWNvbmRzID0gdHRsX3NlY29u
ZHMKIAogICAgICAgICB3aXRoIHNlbGY6CiAgICAgICAgICAgICBzZWxmLmNhc3NhbmRyYS5jcmVh
dGVfdGFibGUoc2VsZi5BcmNoaXZlTWV0YURhdGFCeUNvbW1pdCkKLSAgICAgICAgICAgIHNlbGYu
Y2Fzc2FuZHJhLmNyZWF0ZV90YWJsZShzZWxmLkFyY2hpdmVDaHVua3MpCiAgICAgICAgICAgICBz
ZWxmLmNhc3NhbmRyYS5jcmVhdGVfdGFibGUoVXBsb2FkQ29udGV4dC5TdWl0ZXNCeUNvbmZpZ3Vy
YXRpb24pCiAKICAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgogICAgICAgICBzZWxmLmNvbmZpZ3Vy
YXRpb25fY29udGV4dC5fX2VudGVyX18oKQogICAgICAgICBzZWxmLmNvbW1pdF9jb250ZXh0Ll9f
ZW50ZXJfXygpCisgICAgICAgIHNlbGYuYXJjaGl2ZXIuX19lbnRlcl9fKCkKIAogICAgIGRlZiBf
X2V4aXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgogICAgICAgICBzZWxmLmNvbW1pdF9jb250
ZXh0Ll9fZXhpdF9fKCphcmdzLCAqKmt3YXJncykKICAgICAgICAgc2VsZi5jb25maWd1cmF0aW9u
X2NvbnRleHQuX19leGl0X18oKmFyZ3MsICoqa3dhcmdzKQorICAgICAgICBzZWxmLmFyY2hpdmVy
Ll9fZXhpdF9fKCphcmdzLCAqKmt3YXJncykKIAogICAgIGRlZiByZWdpc3RlcihzZWxmLCBhcmNo
aXZlLCBjb25maWd1cmF0aW9uLCBjb21taXRzLCBzdWl0ZSwgdGltZXN0YW1wPU5vbmUpOgogICAg
ICAgICBzZWxmLmFzc2VydF96aXBmaWxlKGFyY2hpdmUpCkBAIC0xMjIsMjcgKzExNiwxNCBAQCBj
bGFzcyBBcmNoaXZlQ29udGV4dChvYmplY3QpOgogICAgICAgICAgICAgICAgIHNlbGYuY29uZmln
dXJhdGlvbl9jb250ZXh0Lmluc2VydF9yb3dfd2l0aF9jb25maWd1cmF0aW9uKAogICAgICAgICAg
ICAgICAgICAgICBVcGxvYWRDb250ZXh0LlN1aXRlc0J5Q29uZmlndXJhdGlvbi5fX3RhYmxlX25h
bWVfXywgY29uZmlndXJhdGlvbiwgc3VpdGU9c3VpdGUsIGJyYW5jaD1icmFuY2gsIHR0bD10dGws
CiAgICAgICAgICAgICAgICAgKQotCi0gICAgICAgICAgICAgICAgIyBCcmVha2luZyB1cCB0aGUg
YXJjaGl2ZSBpbnRvIGNodW5rcwotICAgICAgICAgICAgICAgIGluZGV4ID0gMAotICAgICAgICAg
ICAgICAgIHNpemUgPSBsZW4oYXJjaGl2ZS5nZXR2YWx1ZSgpKQotICAgICAgICAgICAgICAgIGRp
Z2VzdCA9IGhhc2hsaWIubWQ1KGFyY2hpdmUuZ2V0dmFsdWUoKSkuaGV4ZGlnZXN0KCkKLSAgICAg
ICAgICAgICAgICBhcmNoaXZlLnNlZWsoMCkKLSAgICAgICAgICAgICAgICB3aGlsZSBzaXplID4g
aW5kZXggKiBzZWxmLkNIVU5LX1NJWkU6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuY2Fzc2Fu
ZHJhLmluc2VydF9yb3coCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLkFyY2hpdmVDaHVu
a3MuX190YWJsZV9uYW1lX18sCi0gICAgICAgICAgICAgICAgICAgICAgICBkaWdlc3Q9ZGlnZXN0
LCBpbmRleD1pbmRleCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNodW5rPWFyY2hpdmUucmVh
ZChzZWxmLkNIVU5LX1NJWkUpLAotICAgICAgICAgICAgICAgICAgICAgICAgdHRsPXR0bCwKLSAg
ICAgICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgICAgICAgICBpbmRleCArPSAxCisgICAg
ICAgICAgICAgICAgZGlnZXN0ID0gc2VsZi5hcmNoaXZlci5zYXZlKGFyY2hpdmUsIHJldGFpbl9m
b3I9dHRsKQogCiAgICAgICAgICAgICAgICAgc2VsZi5jb25maWd1cmF0aW9uX2NvbnRleHQuaW5z
ZXJ0X3Jvd193aXRoX2NvbmZpZ3VyYXRpb24oCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuQXJj
aGl2ZU1ldGFEYXRhQnlDb21taXQuX190YWJsZV9uYW1lX18sIGNvbmZpZ3VyYXRpb249Y29uZmln
dXJhdGlvbiwgc3VpdGU9c3VpdGUsCiAgICAgICAgICAgICAgICAgICAgIGJyYW5jaD1icmFuY2gs
IHV1aWQ9dXVpZCwgdHRsPXR0bCwKICAgICAgICAgICAgICAgICAgICAgc2RrPWNvbmZpZ3VyYXRp
b24uc2RrIG9yICc/Jywgc3RhcnRfdGltZT10aW1lc3RhbXAsCiAgICAgICAgICAgICAgICAgICAg
IGRpZ2VzdD1kaWdlc3QsCi0gICAgICAgICAgICAgICAgICAgIHNpemU9c2l6ZSwKKyAgICAgICAg
ICAgICAgICAgICAgc2l6ZT1BcmNoaXZlci5hcmNoaXZlX3NpemUoYXJjaGl2ZSksCiAgICAgICAg
ICAgICAgICAgKQogCiAgICAgZGVmIGZpbmRfYXJjaGl2ZSgKQEAgLTE4NiwzMiArMTY3LDE2IEBA
IGNsYXNzIEFyY2hpdmVDb250ZXh0KG9iamVjdCk6CiAgICAgICAgICAgICAgICAgICAgICAgICBj
b250aW51ZQogCiAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBhcmNoaXZlX2J5X2RpZ2VzdC5n
ZXQodmFsdWUuZ2V0KCdkaWdlc3QnKSk6Ci0gICAgICAgICAgICAgICAgICAgICAgICByb3dzID0g
c2VsZi5jYXNzYW5kcmEuc2VsZWN0X2Zyb21fdGFibGUoCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2VsZi5BcmNoaXZlQ2h1bmtzLl9fdGFibGVfbmFtZV9fLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGRpZ2VzdD12YWx1ZS5nZXQoJ2RpZ2VzdCcpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGxpbWl0PTEgKyBpbnQodmFsdWUuZ2V0KCdzaXplJywgMCkgLyBzZWxmLkNI
VU5LX1NJWkUpLAotICAgICAgICAgICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgbGVuKHJvd3MpID09IDA6CisgICAgICAgICAgICAgICAgICAgICAgICBhcmNoaXZl
ID0gc2VsZi5hcmNoaXZlci5yZXRyaWV2ZSh2YWx1ZS5nZXQoJ2RpZ2VzdCcpLCB2YWx1ZS5nZXQo
J3NpemUnLCBOb25lKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBhcmNoaXZlOgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgICAgICAgICAg
ICAgICAgIGRpZ2VzdCA9IGhhc2hsaWIubWQ1KCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGFy
Y2hpdmUgPSBpby5CeXRlc0lPKCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGFyY2hpdmVfc2l6
ZSA9IDAKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvciByb3cgaW4gcm93czoKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBhcmNoaXZlX3NpemUgKz0gbGVuKHJvdy5jaHVuaykKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkaWdlc3QudXBkYXRlKHJvdy5jaHVuaykKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBhcmNoaXZlLndyaXRlKHJvdy5jaHVuaykKLQotICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgYXJjaGl2ZV9zaXplICE9IHZhbHVlLmdldCgnc2l6ZScsIDApIG9y
IHZhbHVlLmdldCgnZGlnZXN0JywgJycpICE9IGRpZ2VzdC5oZXhkaWdlc3QoKToKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ0ZhaWxlZCB0byByZWNvbnN0
cnVjdCBhcmNoaXZlIGZyb20gY2h1bmtzJykKLQogICAgICAgICAgICAgICAgICAgICAgICAgYXJj
aGl2ZV9ieV9kaWdlc3RbdmFsdWUuZ2V0KCdkaWdlc3QnKV0gPSBhcmNoaXZlCiAKICAgICAgICAg
ICAgICAgICAgICAgYXJjaGl2ZV9ieV9kaWdlc3QuZ2V0KHZhbHVlLmdldCgnZGlnZXN0JykpLnNl
ZWsoMCkKICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnNldGRlZmF1bHQoY29uZmlnLCBbXSkK
ICAgICAgICAgICAgICAgICAgICAgcmVzdWx0W2NvbmZpZ10uYXBwZW5kKGRpY3QoCiAgICAgICAg
ICAgICAgICAgICAgICAgICBhcmNoaXZlPWFyY2hpdmVfYnlfZGlnZXN0LmdldCh2YWx1ZS5nZXQo
J2RpZ2VzdCcpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGRpZ2VzdD1kaWdlc3QuaGV4ZGln
ZXN0KCksCisgICAgICAgICAgICAgICAgICAgICAgICBkaWdlc3Q9dmFsdWUuZ2V0KCdkaWdlc3Qn
KSwKICAgICAgICAgICAgICAgICAgICAgICAgIHV1aWQ9dmFsdWVbJ3V1aWQnXSwKICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0YXJ0X3RpbWU9dmFsdWVbJ3N0YXJ0X3RpbWUnXSwKICAgICAgICAg
ICAgICAgICAgICAgKSkKSW5kZXg6IFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVs
L2FyY2hpdmVyLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5
L21vZGVsL2FyY2hpdmVyLnB5CShub25leGlzdGVudCkKKysrIFRvb2xzL3Jlc3VsdHNkYnB5L3Jl
c3VsdHNkYnB5L21vZGVsL2FyY2hpdmVyLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDUg
QEAKKyMgQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
CisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCBvcworaW1w
b3J0IGhhc2hsaWIKKworCitjbGFzcyBBcmNoaXZlcihvYmplY3QpOgorICAgIEBjbGFzc21ldGhv
ZAorICAgIGRlZiBhcmNoaXZlX2RpZ2VzdChjbHMsIGFyY2hpdmUpOgorICAgICAgICBkaWdlc3Qg
PSBoYXNobGliLm1kNShhcmNoaXZlLmdldHZhbHVlKCkpLmhleGRpZ2VzdCgpCisgICAgICAgIGFy
Y2hpdmUuc2VlaygwKQorICAgICAgICByZXR1cm4gZGlnZXN0CisKKyAgICBAY2xhc3NtZXRob2QK
KyAgICBkZWYgYXJjaGl2ZV9zaXplKGNscywgYXJjaGl2ZSk6CisgICAgICAgIGFyY2hpdmUuc2Vl
aygwLCBvcy5TRUVLX0VORCkKKyAgICAgICAgc2l6ZSA9IGFyY2hpdmUudGVsbCgpCisgICAgICAg
IGFyY2hpdmUuc2VlaygwKQorICAgICAgICByZXR1cm4gc2l6ZQorCisgICAgZGVmIHNhdmUoc2Vs
ZiwgYXJjaGl2ZSwgcmV0YWluX2Zvcj1Ob25lKToKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50
ZWRFcnJvcgorCisgICAgZGVmIHJldHJpZXZlKHNlbGYsIGRpZ2VzdCwgc2l6ZT1Ob25lKToKKyAg
ICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgpJbmRleDogVG9vbHMvcmVzdWx0c2RicHkv
cmVzdWx0c2RicHkvbW9kZWwvY2Fzc2FuZHJhX2FyY2hpdmVyLnB5Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL2Nhc3NhbmRyYV9hcmNoaXZlci5weQko
bm9uZXhpc3RlbnQpCisrKyBUb29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC9jYXNz
YW5kcmFfYXJjaGl2ZXIucHkJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4NSBAQAorIyBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
IyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisj
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyAiQVMgSVMiIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworaW1wb3J0IGlvCisKK2Zyb20gY2Fzc2Fu
ZHJhLmNxbGVuZ2luZSBpbXBvcnQgY29sdW1ucworZnJvbSBjYXNzYW5kcmEuY3FsZW5naW5lLm1v
ZGVscyBpbXBvcnQgTW9kZWwKK2Zyb20gcmVzdWx0c2RicHkubW9kZWwuYXJjaGl2ZXIgaW1wb3J0
IEFyY2hpdmVyCisKKworY2xhc3MgQ2Fzc2FuZHJhQXJjaGl2ZXIoQXJjaGl2ZXIpOgorICAgIE1B
WF9BUkNISVZFID0gNTAwICogMTAyNCAqIDEwMjQgICMgQXJjaGl2ZXMgc2hvdWxkIGJlIHNtYWxs
ZXIgdGhhbiA1MDAgTUIKKyAgICBDSFVOS19TSVpFID0gMTAgKiAxMDI0ICogMTAyNCAgICAjIENh
c3NhbmRyYSBkb2Vzbid0IGRvIHdlbGwgd2l0aCBkYXRhIGJsb2JzIG9mIG1vcmUgdGhhbiAxMCBN
QgorCisgICAgIyBBY2NvcmRpbmcgdG8gaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVu
Y2UvZGlzcGxheS9DQVNTQU5EUkEyL0Nhc3NhbmRyYUxpbWl0YXRpb25zLCB3ZSBzaG91bGQgc2hh
cmQKKyAgICAjIGxhcmdlIGRhdGEgYmxvYnMuCisgICAgY2xhc3MgQXJjaGl2ZUNodW5rcyhNb2Rl
bCk6CisgICAgICAgIF9fdGFibGVfbmFtZV9fID0gJ2FyY2hpdmVfY2h1bmtzXzAyJworICAgICAg
ICBkaWdlc3QgPSBjb2x1bW5zLlRleHQocGFydGl0aW9uX2tleT1UcnVlLCByZXF1aXJlZD1UcnVl
KQorICAgICAgICBpbmRleCA9IGNvbHVtbnMuSW50ZWdlcihwcmltYXJ5X2tleT1UcnVlLCByZXF1
aXJlZD1UcnVlKQorICAgICAgICBjaHVuayA9IGNvbHVtbnMuQmxvYihyZXF1aXJlZD1UcnVlKQor
CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNhc3NhbmRyYSk6CisgICAgICAgIHNlbGYuY2Fzc2Fu
ZHJhID0gY2Fzc2FuZHJhCisgICAgICAgIHdpdGggc2VsZjoKKyAgICAgICAgICAgIHNlbGYuY2Fz
c2FuZHJhLmNyZWF0ZV90YWJsZShzZWxmLkFyY2hpdmVDaHVua3MpCisKKyAgICBkZWYgX19lbnRl
cl9fKHNlbGYpOgorICAgICAgICBzZWxmLmNhc3NhbmRyYS5fX2VudGVyX18oKQorCisgICAgZGVm
IF9fZXhpdF9fKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIHNlbGYuY2Fzc2FuZHJh
Ll9fZXhpdF9fKCphcmdzLCAqKmt3YXJncykKKworICAgIGRlZiBzYXZlKHNlbGYsIGFyY2hpdmUs
IHJldGFpbl9mb3I9Tm9uZSk6CisgICAgICAgIGluZGV4ID0gMAorICAgICAgICBzaXplID0gc2Vs
Zi5hcmNoaXZlX3NpemUoYXJjaGl2ZSkKKyAgICAgICAgaWYgc2l6ZSA+IHNlbGYuTUFYX0FSQ0hJ
VkU6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdBcmNoaXZlIGxhcmdlciB0aGFuIDUw
MCBNQicpCisgICAgICAgIGRpZ2VzdCA9IHNlbGYuYXJjaGl2ZV9kaWdlc3QoYXJjaGl2ZSkKKyAg
ICAgICAgd2hpbGUgc2l6ZSA+IGluZGV4ICogc2VsZi5DSFVOS19TSVpFOgorICAgICAgICAgICAg
c2VsZi5jYXNzYW5kcmEuaW5zZXJ0X3JvdygKKyAgICAgICAgICAgICAgICBzZWxmLkFyY2hpdmVD
aHVua3MuX190YWJsZV9uYW1lX18sCisgICAgICAgICAgICAgICAgZGlnZXN0PWRpZ2VzdCwgaW5k
ZXg9aW5kZXgsCisgICAgICAgICAgICAgICAgY2h1bms9YXJjaGl2ZS5yZWFkKHNlbGYuQ0hVTktf
U0laRSksCisgICAgICAgICAgICAgICAgdHRsPXJldGFpbl9mb3IsCisgICAgICAgICAgICApCisg
ICAgICAgICAgICBpbmRleCArPSAxCisgICAgICAgIHJldHVybiBkaWdlc3QKKworICAgIGRlZiBy
ZXRyaWV2ZShzZWxmLCBkaWdlc3QsIHNpemU9Tm9uZSk6CisgICAgICAgIHJvd3MgPSBzZWxmLmNh
c3NhbmRyYS5zZWxlY3RfZnJvbV90YWJsZSgKKyAgICAgICAgICAgIHNlbGYuQXJjaGl2ZUNodW5r
cy5fX3RhYmxlX25hbWVfXywKKyAgICAgICAgICAgIGRpZ2VzdD1kaWdlc3QsCisgICAgICAgICAg
ICBsaW1pdD0xICsgaW50KHNpemUgb3Igc2VsZi5NQVhfQVJDSElWRSAvIHNlbGYuQ0hVTktfU0la
RSksCisgICAgICAgICkKKyAgICAgICAgaWYgbGVuKHJvd3MpID09IDA6CisgICAgICAgICAgICBy
ZXR1cm4gTm9uZQorCisgICAgICAgIGFyY2hpdmUgPSBpby5CeXRlc0lPKCkKKyAgICAgICAgZm9y
IHJvdyBpbiByb3dzOgorICAgICAgICAgICAgYXJjaGl2ZS53cml0ZShyb3cuY2h1bmspCisKKyAg
ICAgICAgaWYgKHNpemUgYW5kIHNlbGYuYXJjaGl2ZV9zaXplKGFyY2hpdmUpICE9IHNpemUpIG9y
IGRpZ2VzdCAhPSBzZWxmLmFyY2hpdmVfZGlnZXN0KGFyY2hpdmUpOgorICAgICAgICAgICAgcmFp
c2UgUnVudGltZUVycm9yKCdGYWlsZWQgdG8gcmVjb25zdHJ1Y3QgYXJjaGl2ZSBmcm9tIGNodW5r
cycpCisKKyAgICAgICAgcmV0dXJuIGFyY2hpdmUK
</data>

          </attachment>
      

    </bug>

</bugzilla>