<?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>185387</bug_id>
          
          <creation_ts>2018-05-07 11:24:52 -0700</creation_ts>
          <short_desc>webkitpy: Clarify construction of VersionNameMap</short_desc>
          <delta_ts>2018-05-10 08:29:12 -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>NEW</bug_status>
          <resolution></resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=185386</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Daniel Bates">dbates</reporter>
          <assigned_to name="Jonathan Bedard">jbedard</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>jbedard</cc>
    
    <cc>lforschler</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1421350</commentid>
    <comment_count>0</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-05-07 11:24:52 -0700</bug_when>
    <thetext>From my understanding the purpose of VersionNameMap is to map an OS version number to a human readable name (e.g. High Sierra) and vice-versa. Looking at operations to map a version number to a name I count at least 8 ways to do this:

Let P be a PlatformInfo object.

VersionNameMap().to_name(...)
VersionNameMap().to_name(..., platform=&quot;...&quot;)
VersionNameMap(P).to_name(...)
VersionNameMap(P).to_name(..., platform=&quot;...&quot;)
VersionNameMap.map().to_name(...)
VersionNameMap.map().to_name(..., platform=&quot;...&quot;)
VersionNameMap.map(P).to_name(...)
VersionNameMap.map(P).to_name(..., platform=&quot;...&quot;)

And quickly glancing through the code these invocation may give different results regardless of whether both P and platform=&quot;...&quot; are in agreement depending on the presence of Apple Additions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1421371</commentid>
    <comment_count>1</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2018-05-07 12:12:03 -0700</bug_when>
    <thetext>Some of these invocations are only exist because Python doesn&apos;t allow a constructor to be hidden. It is always the case, especially for Apple&apos;s ports, that the VersionNameMap.map(...) function should be used, specifically because of apple_additions.

In some of the other cases, you&apos;re explicitly overriding the default PlatformInfo  object. Given the fact that you shouldn&apos;t be using the default constructor, we can definitely eliminate 1 and 2.  There is also an argument to be made that we shouldn&apos;t define a default PlatformInfo object if the user does not provide us with one.  That would eliminate 5 and 6.

However, we definitely need to keep the ability to override the default platform in to_name.  As mentioned in &lt;https://bugs.webkit.org/show_bug.cgi?id=185386&gt;, we rely on this in iOS where we don&apos;t have an iOS PlatformInfo object when we need to extract version information.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1421536</commentid>
    <comment_count>2</comment_count>
      <attachid>339775</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2018-05-07 17:12:48 -0700</bug_when>
    <thetext>Created attachment 339775
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1421542</commentid>
    <comment_count>3</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2018-05-07 17:16:38 -0700</bug_when>
    <thetext>I&apos;ve uploaded a potential improvement which eliminates 1 and 2, and indicates through a comment that 3 and 4 should be avoided.

There is another way to clarify this code, although it would require more synchronization with apple_additions.  We could have apple_additions update the underlying mapping of the VersionNameMap in the constructor. This would totally eliminate the map(...) function, leaving 1-4 but eliminating 5-8 explicitly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1422723</commentid>
    <comment_count>4</comment_count>
      <attachid>340091</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2018-05-10 08:27:32 -0700</bug_when>
    <thetext>Created attachment 340091
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1422724</commentid>
    <comment_count>5</comment_count>
      <attachid>340091</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2018-05-10 08:29:12 -0700</bug_when>
    <thetext>Comment on attachment 340091
Patch

This patch combines what will eventually be 3 changes (2 associated with this bug and one associated with &lt;https://bugs.webkit.org/show_bug.cgi?id=185386&gt;).  I wanted to first ensure that the direction of this patch satisfies Dan&apos;s concerns about the clarity of VersionNameMap before moving forward.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>339775</attachid>
            <date>2018-05-07 17:12:48 -0700</date>
            <delta_ts>2018-05-10 08:27:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-185387-20180507171248.patch</filename>
            <type>text/plain</type>
            <size>7348</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIzMTQ2NykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDI4IEBACisyMDE4LTA1LTA3ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICB3ZWJraXRweTogQ2xhcmlmeSBjb25zdHJ1Y3Rpb24gb2YgVmVyc2lvbk5h
bWVNYXAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4
NTM4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRo
ZSBWZXJzaW9uTmFtZU1hcCBzaG91bGQgbm90IGJlIGluc3RhbnRpYXRlZCBkaXJlY3RseSwgb25s
eSB0aHJvdWdoCisgICAgICAgIHRoZSBtYXAoKSBmdW5jdGlvbiBzbyB0aGF0IGl0IHVzZXMgdGhl
IGFwcGxlX2FkZGl0aW9ucyB2YXJpYXRpb24gb2YgdGhlCisgICAgICAgIFZlcnNpb25OYW1lTWFw
IGlmIGF2YWlsYWJsZS4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3ZlcnNp
b25fbmFtZV9tYXAucHk6CisgICAgICAgIChWZXJzaW9uTmFtZU1hcC5tYXApOiBNb3ZlIGRlZmF1
bHQgcGxhdGZvcm0gZGVmaW5pdGlvbiBmcm9tIF9faW5pdF9fLgorICAgICAgICAoVmVyc2lvbk5h
bWVNYXAuX19pbml0X18pOiBObyBsb25nZXIgZGVmaW5lIHBsYXRmb3JtIGJ5IGRlZmF1bHQuCisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vdmVyc2lvbl9uYW1lX21hcF91bml0dGVz
dC5weToKKyAgICAgICAgKFZlcnNpb25NYXBUZXN0Q2FzZS50ZXN0X2RlZmF1bHRfc3lzdGVtX3Bs
YXRmb3JtKTogVXNlIG1hcCBzdGF0aWMgZnVuY3Rpb24KKyAgICAgICAgaW5zdGVhZCBvZiBjb25z
dHJ1Y3Rvci4KKyAgICAgICAgKFZlcnNpb25NYXBUZXN0Q2FzZS50ZXN0X21hY192ZXJzaW9uX2J5
X25hbWUpOiBEaXR0by4KKyAgICAgICAgKFZlcnNpb25NYXBUZXN0Q2FzZS50ZXN0X2lvc192ZXJz
aW9uX2J5X25hbWUpOiBEaXR0by4KKyAgICAgICAgKFZlcnNpb25NYXBUZXN0Q2FzZS50ZXN0X21h
Y19uYW1lX2J5X3ZlcnNpb24pOiBEaXR0by4KKyAgICAgICAgKFZlcnNpb25NYXBUZXN0Q2FzZS50
ZXN0X2lvc19uYW1lX2J5X3ZlcnNpb24pOiBEaXR0by4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dHB5L3BvcnQvbWFjX3VuaXR0ZXN0LnB5OgorICAgICAgICAoTWFjVGVzdC50ZXN0X2ZhY3Rvcnlf
d2l0aF9mdXR1cmVfdmVyc2lvbik6IFVzZSBtYXAgc3RhdGljIGZ1bmN0aW9uIGluc3RlYWQKKyAg
ICAgICAgb2YgY29uc3RydWN0b3IuCisKIDIwMTgtMDUtMDcgIExlbyBCYWx0ZXIgIDxsZW9uYXJk
by5iYWx0ZXJAZ21haWwuY29tPgogCiAgICAgICAgIFRlc3QyNjItUnVubmVyOiBBZGQgYmFzZSBt
b2R1bGUgdG8gdGhlIGxvY2FsIGRlcHMgLSB1bmljb3JlL0V4YWN0LnBsCkluZGV4OiBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2NvbW1vbi92ZXJzaW9uX25hbWVfbWFwLnB5Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3ZlcnNpb25fbmFtZV9tYXAucHkJKHJldmlz
aW9uIDIzMTQ2MykKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3ZlcnNpb25fbmFt
ZV9tYXAucHkJKHdvcmtpbmcgY29weSkKQEAgLTM2LDE1ICszNiwxNyBAQCBjbGFzcyBWZXJzaW9u
TmFtZU1hcChvYmplY3QpOgogICAgIEBzdGF0aWNtZXRob2QKICAgICBAbWVtb2l6ZWQKICAgICBk
ZWYgbWFwKHBsYXRmb3JtPU5vbmUpOgorICAgICAgICBpZiBwbGF0Zm9ybSBpcyBOb25lOgorICAg
ICAgICAgICAgZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLnN5c3RlbWhvc3QgaW1wb3J0IFN5
c3RlbUhvc3QKKyAgICAgICAgICAgIHBsYXRmb3JtID0gU3lzdGVtSG9zdCgpLnBsYXRmb3JtCisK
ICAgICAgICAgZnJvbSB3ZWJraXRweS5wb3J0LmNvbmZpZyBpbXBvcnQgYXBwbGVfYWRkaXRpb25z
CiAgICAgICAgIGlmIGFwcGxlX2FkZGl0aW9ucygpOgogICAgICAgICAgICAgcmV0dXJuIGFwcGxl
X2FkZGl0aW9ucygpLnZlcnNpb25fbmFtZV9tYXBwaW5nKHBsYXRmb3JtKQogICAgICAgICByZXR1
cm4gVmVyc2lvbk5hbWVNYXAocGxhdGZvcm09cGxhdGZvcm0pCiAKLSAgICBkZWYgX19pbml0X18o
c2VsZiwgcGxhdGZvcm09Tm9uZSk6Ci0gICAgICAgIGlmIHBsYXRmb3JtIGlzIE5vbmU6Ci0gICAg
ICAgICAgICBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uc3lzdGVtaG9zdCBpbXBvcnQgU3lz
dGVtSG9zdAotICAgICAgICAgICAgcGxhdGZvcm0gPSBTeXN0ZW1Ib3N0KCkucGxhdGZvcm0KKyAg
ICAjIEF2b2lkIGluc3RhbnRpYXRpbmcgZGlyZWN0bHkgc2luY2UgdGhpcyB3aWxsIGJ5cGFzcyB0
aGUgYXBwbGVfYWRkaXRpb25zIGNoZWNrLgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwbGF0Zm9y
bSk6CiAgICAgICAgIHNlbGYubWFwcGluZyA9IHt9CiAKICAgICAgICAgc2VsZi5kZWZhdWx0X3N5
c3RlbV9wbGF0Zm9ybSA9IHBsYXRmb3JtLm9zX25hbWUKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvY29tbW9uL3ZlcnNpb25fbmFtZV9tYXBfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vdmVyc2lvbl9uYW1lX21hcF91bml0dGVzdC5w
eQkocmV2aXNpb24gMjMxNDYzKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vdmVy
c2lvbl9uYW1lX21hcF91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMzEsMTEgKzMxLDEx
IEBAIGNsYXNzIFZlcnNpb25NYXBUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2EKIAogICAgIGRlZiB0
ZXN0X2RlZmF1bHRfc3lzdGVtX3BsYXRmb3JtKHNlbGYpOgogICAgICAgICBob3N0ID0gU3lzdGVt
SG9zdCgpCi0gICAgICAgIG1hcCA9IFZlcnNpb25OYW1lTWFwKHBsYXRmb3JtPWhvc3QucGxhdGZv
cm0pCisgICAgICAgIG1hcCA9IFZlcnNpb25OYW1lTWFwLm1hcChob3N0LnBsYXRmb3JtKQogICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKG1hcC5kZWZhdWx0X3N5c3RlbV9wbGF0Zm9ybSwgaG9zdC5w
bGF0Zm9ybS5vc19uYW1lKQogCiAgICAgZGVmIHRlc3RfbWFjX3ZlcnNpb25fYnlfbmFtZShzZWxm
KToKLSAgICAgICAgbWFwID0gVmVyc2lvbk5hbWVNYXAoKQorICAgICAgICBtYXAgPSBWZXJzaW9u
TmFtZU1hcC5tYXAoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCgnbWFjJywgVmVyc2lvbigx
MCwgMTIpKSwgbWFwLmZyb21fbmFtZSgnU2llcnJhJykpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoKCdtYWMnLCBWZXJzaW9uKDEwLCAxMikpLCBtYXAuZnJvbV9uYW1lKCdzaWVycmEnKSkKICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoJ21hYycsIFZlcnNpb24oMTAsIDExKSksIG1hcC5mcm9t
X25hbWUoJ0VsIENhcGl0YW4nKSkKQEAgLTQzLDcgKzQzLDcgQEAgY2xhc3MgVmVyc2lvbk1hcFRl
c3RDYXNlKHVuaXR0ZXN0LlRlc3RDYQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCgnbWFjJywg
VmVyc2lvbigxMCwgMTEpKSwgbWFwLmZyb21fbmFtZSgnZWwgQ2FwaXRhbicpKQogCiAgICAgZGVm
IHRlc3RfaW9zX3ZlcnNpb25fYnlfbmFtZShzZWxmKToKLSAgICAgICAgbWFwID0gVmVyc2lvbk5h
bWVNYXAoKQorICAgICAgICBtYXAgPSBWZXJzaW9uTmFtZU1hcC5tYXAoKQogICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKCgnaW9zJywgVmVyc2lvbigxMSkpLCBtYXAuZnJvbV9uYW1lKCdpT1MgMTEn
KSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoJ2lvcycsIFZlcnNpb24oMTEpKSwgbWFwLmZy
b21fbmFtZSgnaW9zMTEnKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoJ2lvcycsIFZlcnNp
b24oMTEpKSwgbWFwLmZyb21fbmFtZSgnaU9TIDExLjInKSkKQEAgLTUxLDEzICs1MSwxMyBAQCBj
bGFzcyBWZXJzaW9uTWFwVGVzdENhc2UodW5pdHRlc3QuVGVzdENhCiAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoKCdpb3MnLCBWZXJzaW9uKDExKSksIG1hcC5mcm9tX25hbWUoJ2lPUzExLjInKSkK
IAogICAgIGRlZiB0ZXN0X21hY19uYW1lX2J5X3ZlcnNpb24oc2VsZik6Ci0gICAgICAgIG1hcCA9
IFZlcnNpb25OYW1lTWFwKCkKKyAgICAgICAgbWFwID0gVmVyc2lvbk5hbWVNYXAubWFwKCkKICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnU2llcnJhJywgbWFwLnRvX25hbWUodmVyc2lvbj1WZXJz
aW9uKDEwLCAxMiksIHBsYXRmb3JtPSdtYWMnKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgn
RWwgQ2FwaXRhbicsIG1hcC50b19uYW1lKHZlcnNpb249VmVyc2lvbigxMCwgMTEpLCBwbGF0Zm9y
bT0nbWFjJykpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0VsIENhcGl0YW4nLCBtYXAudG9f
bmFtZSh2ZXJzaW9uPVZlcnNpb24oMTAsIDExLCAzKSwgcGxhdGZvcm09J21hYycpKQogCiAgICAg
ZGVmIHRlc3RfaW9zX25hbWVfYnlfdmVyc2lvbihzZWxmKToKLSAgICAgICAgbWFwID0gVmVyc2lv
bk5hbWVNYXAoKQorICAgICAgICBtYXAgPSBWZXJzaW9uTmFtZU1hcC5tYXAoKQogICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKCdpT1MgMTEnLCBtYXAudG9fbmFtZSh2ZXJzaW9uPVZlcnNpb24oMTEp
LCBwbGF0Zm9ybT0naW9zJykpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2lPUyAxMCcsIG1h
cC50b19uYW1lKHZlcnNpb249VmVyc2lvbigxMCksIHBsYXRmb3JtPSdpb3MnKSkKICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgnaU9TIDEwJywgbWFwLnRvX25hbWUodmVyc2lvbj1WZXJzaW9uKDEw
LCAzKSwgcGxhdGZvcm09J2lvcycpKQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0
L21hY191bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Bv
cnQvbWFjX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyMzE0NjMpCisrKyBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L3BvcnQvbWFjX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xNjAsMTkgKzE2
MCwxOSBAQCBjbGFzcyBNYWNUZXN0KGRhcndpbl90ZXN0Y2FzZS5EYXJ3aW5UZXN0CiAgICAgZGVm
IHRlc3RfZmFjdG9yeV93aXRoX2Z1dHVyZV92ZXJzaW9uKHNlbGYpOgogICAgICAgICBwb3J0ID0g
c2VsZi5tYWtlX3BvcnQob3B0aW9ucz1Nb2NrT3B0aW9ucyh3ZWJraXRfdGVzdF9ydW5uZXI9VHJ1
ZSksIG9zX3ZlcnNpb249TWFjVGVzdC5GVVRVUkVfVkVSU0lPTiwgb3NfbmFtZT0nbWFjJywgcG9y
dF9uYW1lPSdtYWMnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcnQuZHJpdmVyX25hbWUo
KSwgJ1dlYktpdFRlc3RSdW5uZXInKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcnQudmVy
c2lvbl9uYW1lKCksIFZlcnNpb25OYW1lTWFwKCkudG9fbmFtZShNYWNQb3J0LkNVUlJFTlRfVkVS
U0lPTiwgcGxhdGZvcm09TWFjUG9ydC5wb3J0X25hbWUpKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHBvcnQudmVyc2lvbl9uYW1lKCksIFZlcnNpb25OYW1lTWFwLm1hcCgpLnRvX25hbWUoTWFj
UG9ydC5DVVJSRU5UX1ZFUlNJT04sIHBsYXRmb3JtPU1hY1BvcnQucG9ydF9uYW1lKSkKIAogICAg
ICAgICBwb3J0ID0gc2VsZi5tYWtlX3BvcnQob3B0aW9ucz1Nb2NrT3B0aW9ucyh3ZWJraXRfdGVz
dF9ydW5uZXI9RmFsc2UpLCBvc192ZXJzaW9uPU1hY1Rlc3QuRlVUVVJFX1ZFUlNJT04sIG9zX25h
bWU9J21hYycsIHBvcnRfbmFtZT0nbWFjJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0
LmRyaXZlcl9uYW1lKCksICdEdW1wUmVuZGVyVHJlZScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwocG9ydC52ZXJzaW9uX25hbWUoKSwgVmVyc2lvbk5hbWVNYXAoKS50b19uYW1lKE1hY1BvcnQu
Q1VSUkVOVF9WRVJTSU9OLCBwbGF0Zm9ybT1NYWNQb3J0LnBvcnRfbmFtZSkpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwocG9ydC52ZXJzaW9uX25hbWUoKSwgVmVyc2lvbk5hbWVNYXAubWFwKCku
dG9fbmFtZShNYWNQb3J0LkNVUlJFTlRfVkVSU0lPTiwgcGxhdGZvcm09TWFjUG9ydC5wb3J0X25h
bWUpKQogCiAgICAgICAgIHBvcnQgPSBzZWxmLm1ha2VfcG9ydChvcHRpb25zPU1vY2tPcHRpb25z
KHdlYmtpdF90ZXN0X3J1bm5lcj1GYWxzZSksIG9zX3ZlcnNpb249TWFjVGVzdC5GVVRVUkVfVkVS
U0lPTiwgb3NfbmFtZT0nbWFjJywgcG9ydF9uYW1lPSdtYWMtd2syJykKICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChwb3J0LmRyaXZlcl9uYW1lKCksICdXZWJLaXRUZXN0UnVubmVyJykKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0LnZlcnNpb25fbmFtZSgpLCBWZXJzaW9uTmFtZU1hcCgp
LnRvX25hbWUoTWFjUG9ydC5DVVJSRU5UX1ZFUlNJT04sIHBsYXRmb3JtPU1hY1BvcnQucG9ydF9u
YW1lKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0LnZlcnNpb25fbmFtZSgpLCBWZXJz
aW9uTmFtZU1hcC5tYXAoKS50b19uYW1lKE1hY1BvcnQuQ1VSUkVOVF9WRVJTSU9OLCBwbGF0Zm9y
bT1NYWNQb3J0LnBvcnRfbmFtZSkpCiAKICAgICAgICAgcG9ydCA9IHNlbGYubWFrZV9wb3J0KG9w
dGlvbnM9TW9ja09wdGlvbnMod2Via2l0X3Rlc3RfcnVubmVyPVRydWUpLCBvc192ZXJzaW9uPU1h
Y1Rlc3QuRlVUVVJFX1ZFUlNJT04sIG9zX25hbWU9J21hYycsIHBvcnRfbmFtZT0nbWFjLXdrMicp
CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5kcml2ZXJfbmFtZSgpLCAnV2ViS2l0VGVz
dFJ1bm5lcicpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC52ZXJzaW9uX25hbWUoKSwg
VmVyc2lvbk5hbWVNYXAoKS50b19uYW1lKE1hY1BvcnQuQ1VSUkVOVF9WRVJTSU9OLCBwbGF0Zm9y
bT1NYWNQb3J0LnBvcnRfbmFtZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC52ZXJz
aW9uX25hbWUoKSwgVmVyc2lvbk5hbWVNYXAubWFwKCkudG9fbmFtZShNYWNQb3J0LkNVUlJFTlRf
VkVSU0lPTiwgcGxhdGZvcm09TWFjUG9ydC5wb3J0X25hbWUpKQogCiAgICAgZGVmIHRlc3RfZmFj
dG9yeV93aXRoX2Z1dHVyZV92ZXJzaW9uX2FuZF9hcHBsZV9hZGRpdGlvbnMoc2VsZik6CiAgICAg
ICAgIHdpdGggcG9ydF90ZXN0Y2FzZS5iaW5kX21vY2tfYXBwbGVfYWRkaXRpb25zKCk6Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>340091</attachid>
            <date>2018-05-10 08:27:32 -0700</date>
            <delta_ts>2018-05-10 08:29:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-185387-20180510102730.patch</filename>
            <type>text/plain</type>
            <size>28907</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIzMTY0MCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDU5IEBACisyMDE4LTA1LTEwICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICB3ZWJraXRweTogQ2xhcmlmeSBjb25zdHJ1Y3Rpb24gb2YgVmVyc2lvbk5h
bWVNYXAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4
NTM4NworCisgICAgICAgIFBBVENIIEZPUiBSRUZFUkVOQ0UuCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9z
eXN0ZW0vcGxhdGZvcm1pbmZvLnB5OgorICAgICAgICAoUGxhdGZvcm1JbmZvLm9zX3ZlcnNpb25f
bmFtZSk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3BsYXRmb3Jt
aW5mb19tb2NrLnB5OgorICAgICAgICAoTW9ja1BsYXRmb3JtSW5mby5vc192ZXJzaW9uX25hbWUp
OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3ZlcnNpb24ucHk6CisgICAgICAg
IChWZXJzaW9uLmZyb21fbmFtZSk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24v
dmVyc2lvbl9uYW1lX21hcC5weToKKyAgICAgICAgKFZlcnNpb25OYW1lTWFwKToKKyAgICAgICAg
KFZlcnNpb25OYW1lTWFwLl9faW5pdF9fKToKKyAgICAgICAgKFZlcnNpb25OYW1lTWFwLnRvX25h
bWUpOgorICAgICAgICAoVmVyc2lvbk5hbWVNYXAubmFtZXMpOgorICAgICAgICAoVmVyc2lvbk5h
bWVNYXAubWFwcGluZ19mb3JfcGxhdGZvcm0pOgorICAgICAgICAoVmVyc2lvbk5hbWVNYXAubWFw
KTogRGVsZXRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi92ZXJzaW9uX25h
bWVfbWFwX3VuaXR0ZXN0LnB5OgorICAgICAgICAoVmVyc2lvbk1hcFRlc3RDYXNlLnRlc3RfZGVm
YXVsdF9zeXN0ZW1fcGxhdGZvcm0pOgorICAgICAgICAoVmVyc2lvbk1hcFRlc3RDYXNlLnRlc3Rf
bWFjX25hbWVfYnlfdmVyc2lvbik6CisgICAgICAgIChWZXJzaW9uTWFwVGVzdENhc2UudGVzdF9p
b3NfbmFtZV9ieV92ZXJzaW9uKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvYXBw
bGUucHk6CisgICAgICAgIChBcHBsZVBvcnQuX2FsbG93ZWRfdmVyc2lvbnMpOgorICAgICAgICAo
QXBwbGVQb3J0Ll9nZW5lcmF0ZV9hbGxfdGVzdF9jb25maWd1cmF0aW9ucyk6CisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS9wb3J0L2Jhc2UucHk6CisgICAgICAgIChQb3J0LnZlcnNpb25fbmFt
ZSk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L2Rhcndpbl90ZXN0Y2FzZS5weToK
KyAgICAgICAgKERhcndpblRlc3QuYXNzZXJ0X25hbWUpOgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvcG9ydC9pb3MucHk6CisgICAgICAgIChJT1NQb3J0LnZlcnNpb25fbmFtZSk6CisgICAg
ICAgIChJT1NQb3J0LmRlZmF1bHRfYmFzZWxpbmVfc2VhcmNoX3BhdGgpOgorICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cHkvcG9ydC9tYWMucHk6CisgICAgICAgIChNYWNQb3J0Ll9faW5pdF9fKToK
KyAgICAgICAgKE1hY1BvcnQuZGVmYXVsdF9iYXNlbGluZV9zZWFyY2hfcGF0aCk6CisgICAgICAg
IChNYWNQb3J0LmNvbmZpZ3VyYXRpb25fc3BlY2lmaWVyX21hY3Jvcyk6CisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRweS9wb3J0L21hY191bml0dGVzdC5weToKKyAgICAgICAgKE1hY1Rlc3QudGVz
dF9mYWN0b3J5X3dpdGhfZnV0dXJlX3ZlcnNpb24pOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvcG9ydC9wb3J0X3Rlc3RjYXNlLnB5OgorICAgICAgICAoYmluZF9tb2NrX2FwcGxlX2FkZGl0
aW9ucy5Nb2NrQXBwbGVBZGRpdGlvbnMuaW5zZXJ0X3ZlcnNpb25fbmFtZV9tYXBwaW5nKToKKyAg
ICAgICAgKGJpbmRfbW9ja19hcHBsZV9hZGRpdGlvbnMpOgorICAgICAgICAoYmluZF9tb2NrX2Fw
cGxlX2FkZGl0aW9ucy5Nb2NrQXBwbGVBZGRpdGlvbnMudmVyc2lvbl9uYW1lX21hcHBpbmcpOiBE
ZWxldGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC90ZXN0LnB5OgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC93aW4ucHk6CisgICAgICAgIChXaW5Qb3J0Ll9faW5p
dF9fKToKKyAgICAgICAgKFdpblBvcnQuZGVmYXVsdF9iYXNlbGluZV9zZWFyY2hfcGF0aCk6Cisg
ICAgICAgIChXaW5DYWlyb1BvcnQuZGVmYXVsdF9iYXNlbGluZV9zZWFyY2hfcGF0aCk6CisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L3dpbl91bml0dGVzdC5weToKKyAgICAgICAgKFdp
blBvcnRUZXN0Ll9hc3NlcnRfdmVyc2lvbik6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS94
Y29kZS9kZXZpY2VfdHlwZS5weToKKyAgICAgICAgKERldmljZVR5cGUuX19zdHJfXyk6CisKIDIw
MTgtMDUtMTAgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFtHVEtdIEFkZCBzdXBwb3J0IGZvciBzZXR0aW5ncyBjb29raWVzIHBvbGljeSBhbmQg
c3RvcmFnZSB0eXBlIGluIE1pbmlCcm93c2VyCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi92ZXJzaW9uLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL3ZlcnNpb24ucHkJKHJldmlzaW9uIDIzMTU5NSkKKysrIFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvY29tbW9uL3ZlcnNpb24ucHkJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAg
Y2xhc3MgVmVyc2lvbihvYmplY3QpOgogICAgIEBzdGF0aWNtZXRob2QKICAgICBkZWYgZnJvbV9u
YW1lKG5hbWUpOgogICAgICAgICBmcm9tIHZlcnNpb25fbmFtZV9tYXAgaW1wb3J0IFZlcnNpb25O
YW1lTWFwCi0gICAgICAgIHJldHVybiBWZXJzaW9uTmFtZU1hcC5tYXAoKS5mcm9tX25hbWUobmFt
ZSlbMV0KKyAgICAgICAgcmV0dXJuIFZlcnNpb25OYW1lTWFwKCkuZnJvbV9uYW1lKG5hbWUpWzFd
CiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgbWFqb3I9MCwgbWlub3I9MCwgdGlueT0wLCBtaWNy
bz0wLCBuYW5vPTApOgogICAgICAgICBzZWxmLm1ham9yID0gaW50KG1ham9yKQpJbmRleDogVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vdmVyc2lvbl9uYW1lX21hcC5weQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi92ZXJzaW9uX25hbWVfbWFwLnB5CShy
ZXZpc2lvbiAyMzE1OTUpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi92ZXJzaW9u
X25hbWVfbWFwLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zMiwyMiArMzIsMTMgQEAgSU5URVJOQUxf
VEFCTEUgPSAnaW50ZXJuYWwnCiAKIGNsYXNzIFZlcnNpb25OYW1lTWFwKG9iamVjdCk6CiAKLSAg
ICAjIEFsbG93cyBhcHBsZV9hZGRpdGlvbnMgdG8gZGVmaW5lIGEgY3VzdG9tIG1hcHBpbmcKLSAg
ICBAc3RhdGljbWV0aG9kCi0gICAgQG1lbW9pemVkCi0gICAgZGVmIG1hcChwbGF0Zm9ybT1Ob25l
KToKLSAgICAgICAgZnJvbSB3ZWJraXRweS5wb3J0LmNvbmZpZyBpbXBvcnQgYXBwbGVfYWRkaXRp
b25zCi0gICAgICAgIGlmIGFwcGxlX2FkZGl0aW9ucygpOgotICAgICAgICAgICAgcmV0dXJuIGFw
cGxlX2FkZGl0aW9ucygpLnZlcnNpb25fbmFtZV9tYXBwaW5nKHBsYXRmb3JtKQotICAgICAgICBy
ZXR1cm4gVmVyc2lvbk5hbWVNYXAocGxhdGZvcm09cGxhdGZvcm0pCi0KICAgICBkZWYgX19pbml0
X18oc2VsZiwgcGxhdGZvcm09Tm9uZSk6CiAgICAgICAgIGlmIHBsYXRmb3JtIGlzIE5vbmU6CiAg
ICAgICAgICAgICBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uc3lzdGVtaG9zdCBpbXBvcnQg
U3lzdGVtSG9zdAotICAgICAgICAgICAgcGxhdGZvcm0gPSBTeXN0ZW1Ib3N0KCkucGxhdGZvcm0K
KyAgICAgICAgICAgIHBsYXRmb3JtID0gU3lzdGVtSG9zdCgpLnBsYXRmb3JtLm9zX25hbWUKICAg
ICAgICAgc2VsZi5tYXBwaW5nID0ge30KIAotICAgICAgICBzZWxmLmRlZmF1bHRfc3lzdGVtX3Bs
YXRmb3JtID0gcGxhdGZvcm0ub3NfbmFtZQorICAgICAgICBzZWxmLmRlZmF1bHRfc3lzdGVtX3Bs
YXRmb3JtID0gcGxhdGZvcm0KICAgICAgICAgc2VsZi5tYXBwaW5nW1BVQkxJQ19UQUJMRV0gPSB7
CiAgICAgICAgICAgICAnbWFjJzogewogICAgICAgICAgICAgICAgICdMZW9wYXJkJzogVmVyc2lv
bigxMCwgNSksCkBAIC03OSw2ICs3MCw5IEBAIGNsYXNzIFZlcnNpb25OYW1lTWFwKG9iamVjdCk6
CiAKICAgICAgICAgIyB3aW5jYWlybyB1c2VzIHRoZSBzYW1lIHZlcnNpb25zIGFzIFdpbmRvd3MK
ICAgICAgICAgc2VsZi5tYXBwaW5nW1BVQkxJQ19UQUJMRV1bJ3dpbmNhaXJvJ10gPSBzZWxmLm1h
cHBpbmdbUFVCTElDX1RBQkxFXVsnd2luJ10KKyAgICAgICAgZnJvbSB3ZWJraXRweS5wb3J0LmNv
bmZpZyBpbXBvcnQgYXBwbGVfYWRkaXRpb25zCisgICAgICAgIGlmIGFwcGxlX2FkZGl0aW9ucygp
OgorICAgICAgICAgICAgYXBwbGVfYWRkaXRpb25zKCkuaW5zZXJ0X3ZlcnNpb25fbmFtZV9tYXBw
aW5nKHNlbGYpCiAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgX2F1dG9tYXBfdG9fbWFqb3Jf
dmVyc2lvbihjbHMsIHByZWZpeCwgbWluaW11bT1WZXJzaW9uKDEpLCBtYXhpbXVtPVZlcnNpb24o
MSkpOgpAQCAtODgsOSArODIsOSBAQCBjbGFzcyBWZXJzaW9uTmFtZU1hcChvYmplY3QpOgogICAg
ICAgICAgICAgcmVzdWx0Wyd7fSB7fScuZm9ybWF0KHByZWZpeCwgc3RyKFZlcnNpb24obWluaW11
bS5tYWpvciArIGkpKSldID0gVmVyc2lvbihtaW5pbXVtLm1ham9yICsgaSkKICAgICAgICAgcmV0
dXJuIHJlc3VsdAogCi0gICAgZGVmIHRvX25hbWUoc2VsZiwgdmVyc2lvbiwgcGxhdGZvcm09Tm9u
ZSwgdGFibGU9UFVCTElDX1RBQkxFKToKKyAgICBkZWYgdG9fbmFtZShzZWxmLCB2ZXJzaW9uLCB0
YWJsZT1QVUJMSUNfVEFCTEUpOgogICAgICAgICBjbG9zZXN0X21hdGNoID0gKE5vbmUsIE5vbmUp
Ci0gICAgICAgIGZvciBvc19uYW1lLCBvc192ZXJzaW9uIGluIHNlbGYubWFwcGluZ19mb3JfcGxh
dGZvcm0ocGxhdGZvcm0sIHRhYmxlKS5pdGVyaXRlbXMoKToKKyAgICAgICAgZm9yIG9zX25hbWUs
IG9zX3ZlcnNpb24gaW4gc2VsZi5tYXBwaW5nX2Zvcl9wbGF0Zm9ybSh0YWJsZSkuaXRlcml0ZW1z
KCk6CiAgICAgICAgICAgICBpZiB2ZXJzaW9uID09IG9zX3ZlcnNpb246CiAgICAgICAgICAgICAg
ICAgcmV0dXJuIG9zX25hbWUKICAgICAgICAgICAgIGVsaWYgdmVyc2lvbiBpbiBvc192ZXJzaW9u
OgpAQCAtMTM0LDEzICsxMjgsMTIgQEAgY2xhc3MgVmVyc2lvbk5hbWVNYXAob2JqZWN0KToKICAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAob3NfbmFtZSwgdmVyc2lvbikKICAgICAgICAg
cmV0dXJuIChOb25lLCBOb25lKQogCi0gICAgZGVmIG5hbWVzKHNlbGYsIHBsYXRmb3JtPU5vbmUs
IHRhYmxlPVBVQkxJQ19UQUJMRSk6CisgICAgZGVmIG5hbWVzKHNlbGYsIHRhYmxlPVBVQkxJQ19U
QUJMRSk6CiAgICAgICAgICIiInJldHVybiBsaXN0IG9mIG9zX25hbWUgZm9yIHBsYXRmb3JtIiIi
Ci0gICAgICAgIG1hcHBpbmcgPSBzZWxmLm1hcHBpbmdfZm9yX3BsYXRmb3JtKHBsYXRmb3JtLCB0
YWJsZSkKKyAgICAgICAgbWFwcGluZyA9IHNlbGYubWFwcGluZ19mb3JfcGxhdGZvcm0odGFibGUp
CiAgICAgICAgIG5hbWVzID0gW29zX25hbWUgZm9yIG9zX25hbWUgaW4gbWFwcGluZ10KICAgICAg
ICAgcmV0dXJuIHNvcnRlZChuYW1lcywga2V5PWxhbWJkYSBvc19uYW1lOiBtYXBwaW5nW29zX25h
bWVdKQogCi0gICAgZGVmIG1hcHBpbmdfZm9yX3BsYXRmb3JtKHNlbGYsIHBsYXRmb3JtPU5vbmUs
IHRhYmxlPVBVQkxJQ19UQUJMRSk6CisgICAgZGVmIG1hcHBpbmdfZm9yX3BsYXRmb3JtKHNlbGYs
IHRhYmxlPVBVQkxJQ19UQUJMRSk6CiAgICAgICAgICIiInJldHVybiBwcm9wZXIgb3NfbmFtZTog
b3NfdmVyc2lvbiBtYXBwaW5nIGZvciBwbGF0Zm9ybSIiIgotICAgICAgICBwbGF0Zm9ybSA9IHNl
bGYuZGVmYXVsdF9zeXN0ZW1fcGxhdGZvcm0gaWYgcGxhdGZvcm0gaXMgTm9uZSBlbHNlIHBsYXRm
b3JtCi0gICAgICAgIHJldHVybiBzZWxmLm1hcHBpbmcuZ2V0KHRhYmxlLCB7fSkuZ2V0KHBsYXRm
b3JtLCB7fSkKKyAgICAgICAgcmV0dXJuIHNlbGYubWFwcGluZy5nZXQodGFibGUsIHt9KS5nZXQo
c2VsZi5kZWZhdWx0X3N5c3RlbV9wbGF0Zm9ybSwge30pCkluZGV4OiBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi92ZXJzaW9uX25hbWVfbWFwX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3ZlcnNpb25fbmFtZV9tYXBfdW5pdHRlc3Qu
cHkJKHJldmlzaW9uIDIzMTU5NSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3Zl
cnNpb25fbmFtZV9tYXBfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcg
QEAgY2xhc3MgVmVyc2lvbk1hcFRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYQogCiAgICAgZGVmIHRl
c3RfZGVmYXVsdF9zeXN0ZW1fcGxhdGZvcm0oc2VsZik6CiAgICAgICAgIGhvc3QgPSBTeXN0ZW1I
b3N0KCkKLSAgICAgICAgbWFwID0gVmVyc2lvbk5hbWVNYXAocGxhdGZvcm09aG9zdC5wbGF0Zm9y
bSkKKyAgICAgICAgbWFwID0gVmVyc2lvbk5hbWVNYXAocGxhdGZvcm09aG9zdC5wbGF0Zm9ybS5v
c19uYW1lKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1hcC5kZWZhdWx0X3N5c3RlbV9wbGF0
Zm9ybSwgaG9zdC5wbGF0Zm9ybS5vc19uYW1lKQogCiAgICAgZGVmIHRlc3RfbWFjX3ZlcnNpb25f
YnlfbmFtZShzZWxmKToKQEAgLTUxLDEzICs1MSwxMyBAQCBjbGFzcyBWZXJzaW9uTWFwVGVzdENh
c2UodW5pdHRlc3QuVGVzdENhCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKCdpb3MnLCBWZXJz
aW9uKDExKSksIG1hcC5mcm9tX25hbWUoJ2lPUzExLjInKSkKIAogICAgIGRlZiB0ZXN0X21hY19u
YW1lX2J5X3ZlcnNpb24oc2VsZik6Ci0gICAgICAgIG1hcCA9IFZlcnNpb25OYW1lTWFwKCkKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnU2llcnJhJywgbWFwLnRvX25hbWUodmVyc2lvbj1WZXJz
aW9uKDEwLCAxMiksIHBsYXRmb3JtPSdtYWMnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgn
RWwgQ2FwaXRhbicsIG1hcC50b19uYW1lKHZlcnNpb249VmVyc2lvbigxMCwgMTEpLCBwbGF0Zm9y
bT0nbWFjJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0VsIENhcGl0YW4nLCBtYXAudG9f
bmFtZSh2ZXJzaW9uPVZlcnNpb24oMTAsIDExLCAzKSwgcGxhdGZvcm09J21hYycpKQorICAgICAg
ICBtYXAgPSBWZXJzaW9uTmFtZU1hcChwbGF0Zm9ybT0nbWFjJykKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgnU2llcnJhJywgbWFwLnRvX25hbWUodmVyc2lvbj1WZXJzaW9uKDEwLCAxMikpKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdFbCBDYXBpdGFuJywgbWFwLnRvX25hbWUodmVyc2lv
bj1WZXJzaW9uKDEwLCAxMSkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdFbCBDYXBpdGFu
JywgbWFwLnRvX25hbWUodmVyc2lvbj1WZXJzaW9uKDEwLCAxMSwgMykpKQogCiAgICAgZGVmIHRl
c3RfaW9zX25hbWVfYnlfdmVyc2lvbihzZWxmKToKLSAgICAgICAgbWFwID0gVmVyc2lvbk5hbWVN
YXAoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdpT1MgMTEnLCBtYXAudG9fbmFtZSh2ZXJz
aW9uPVZlcnNpb24oMTEpLCBwbGF0Zm9ybT0naW9zJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoJ2lPUyAxMCcsIG1hcC50b19uYW1lKHZlcnNpb249VmVyc2lvbigxMCksIHBsYXRmb3JtPSdp
b3MnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnaU9TIDEwJywgbWFwLnRvX25hbWUodmVy
c2lvbj1WZXJzaW9uKDEwLCAzKSwgcGxhdGZvcm09J2lvcycpKQorICAgICAgICBtYXAgPSBWZXJz
aW9uTmFtZU1hcChwbGF0Zm9ybT0naW9zJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnaU9T
IDExJywgbWFwLnRvX25hbWUodmVyc2lvbj1WZXJzaW9uKDExKSkpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoJ2lPUyAxMCcsIG1hcC50b19uYW1lKHZlcnNpb249VmVyc2lvbigxMCkpKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKCdpT1MgMTAnLCBtYXAudG9fbmFtZSh2ZXJzaW9uPVZlcnNp
b24oMTAsIDMpKSkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9w
bGF0Zm9ybWluZm8ucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21t
b24vc3lzdGVtL3BsYXRmb3JtaW5mby5weQkocmV2aXNpb24gMjMxNTk1KQorKysgVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3BsYXRmb3JtaW5mby5weQkod29ya2luZyBjb3B5
KQpAQCAtMTE4LDEwICsxMTgsMTAgQEAgY2xhc3MgUGxhdGZvcm1JbmZvKG9iamVjdCk6CiAgICAg
ICAgIGlmIG5vdCBzZWxmLm9zX3ZlcnNpb246CiAgICAgICAgICAgICByZXR1cm4gTm9uZQogICAg
ICAgICBpZiB0YWJsZToKLSAgICAgICAgICAgIHJldHVybiBWZXJzaW9uTmFtZU1hcC5tYXAoc2Vs
ZikudG9fbmFtZShzZWxmLm9zX3ZlcnNpb24sIHRhYmxlPXRhYmxlKQotICAgICAgICB2ZXJzaW9u
X25hbWUgPSBWZXJzaW9uTmFtZU1hcC5tYXAoc2VsZikudG9fbmFtZShzZWxmLm9zX3ZlcnNpb24s
IHRhYmxlPVBVQkxJQ19UQUJMRSkKKyAgICAgICAgICAgIHJldHVybiBWZXJzaW9uTmFtZU1hcChw
bGF0Zm9ybT1zZWxmLm9zX25hbWUpLnRvX25hbWUoc2VsZi5vc192ZXJzaW9uLCB0YWJsZT10YWJs
ZSkKKyAgICAgICAgdmVyc2lvbl9uYW1lID0gVmVyc2lvbk5hbWVNYXAocGxhdGZvcm09c2VsZi5v
c19uYW1lKS50b19uYW1lKHNlbGYub3NfdmVyc2lvbiwgdGFibGU9UFVCTElDX1RBQkxFKQogICAg
ICAgICBpZiBub3QgdmVyc2lvbl9uYW1lOgotICAgICAgICAgICAgdmVyc2lvbl9uYW1lID0gVmVy
c2lvbk5hbWVNYXAubWFwKHNlbGYpLnRvX25hbWUoc2VsZi5vc192ZXJzaW9uLCB0YWJsZT1JTlRF
Uk5BTF9UQUJMRSkKKyAgICAgICAgICAgIHZlcnNpb25fbmFtZSA9IFZlcnNpb25OYW1lTWFwKHBs
YXRmb3JtPXNlbGYub3NfbmFtZSkudG9fbmFtZShzZWxmLm9zX3ZlcnNpb24sIHRhYmxlPUlOVEVS
TkFMX1RBQkxFKQogICAgICAgICByZXR1cm4gdmVyc2lvbl9uYW1lCiAKICAgICBkZWYgdG90YWxf
Ynl0ZXNfbWVtb3J5KHNlbGYpOgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24v
c3lzdGVtL3BsYXRmb3JtaW5mb19tb2NrLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvY29tbW9uL3N5c3RlbS9wbGF0Zm9ybWluZm9fbW9jay5weQkocmV2aXNpb24gMjMx
NTk1KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3BsYXRmb3JtaW5m
b19tb2NrLnB5CSh3b3JraW5nIGNvcHkpCkBAIC02NiwxMCArNjYsMTAgQEAgY2xhc3MgTW9ja1Bs
YXRmb3JtSW5mbyhvYmplY3QpOgogICAgICAgICBpZiBub3Qgc2VsZi5vc192ZXJzaW9uOgogICAg
ICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICAgaWYgdGFibGU6Ci0gICAgICAgICAgICByZXR1
cm4gVmVyc2lvbk5hbWVNYXAubWFwKHNlbGYpLnRvX25hbWUoc2VsZi5vc192ZXJzaW9uLCB0YWJs
ZT10YWJsZSkKLSAgICAgICAgdmVyc2lvbl9uYW1lID0gVmVyc2lvbk5hbWVNYXAubWFwKHNlbGYp
LnRvX25hbWUoc2VsZi5vc192ZXJzaW9uLCB0YWJsZT1QVUJMSUNfVEFCTEUpCisgICAgICAgICAg
ICByZXR1cm4gVmVyc2lvbk5hbWVNYXAocGxhdGZvcm09c2VsZi5vc19uYW1lKS50b19uYW1lKHNl
bGYub3NfdmVyc2lvbiwgdGFibGU9dGFibGUpCisgICAgICAgIHZlcnNpb25fbmFtZSA9IFZlcnNp
b25OYW1lTWFwKHBsYXRmb3JtPXNlbGYub3NfbmFtZSkudG9fbmFtZShzZWxmLm9zX3ZlcnNpb24s
IHRhYmxlPVBVQkxJQ19UQUJMRSkKICAgICAgICAgaWYgbm90IHZlcnNpb25fbmFtZToKLSAgICAg
ICAgICAgIHZlcnNpb25fbmFtZSA9IFZlcnNpb25OYW1lTWFwLm1hcChzZWxmKS50b19uYW1lKHNl
bGYub3NfdmVyc2lvbiwgdGFibGU9SU5URVJOQUxfVEFCTEUpCisgICAgICAgICAgICB2ZXJzaW9u
X25hbWUgPSBWZXJzaW9uTmFtZU1hcChwbGF0Zm9ybT1zZWxmLm9zX25hbWUpLnRvX25hbWUoc2Vs
Zi5vc192ZXJzaW9uLCB0YWJsZT1JTlRFUk5BTF9UQUJMRSkKICAgICAgICAgcmV0dXJuIHZlcnNp
b25fbmFtZQogCiAgICAgZGVmIHRvdGFsX2J5dGVzX21lbW9yeShzZWxmKToKSW5kZXg6IFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvcG9ydC9hcHBsZS5weQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3BvcnQvYXBwbGUucHkJKHJldmlzaW9uIDIzMTU5NSkKKysrIFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvcG9ydC9hcHBsZS5weQkod29ya2luZyBjb3B5KQpAQCAtOTksNyArOTks
NyBAQCBjbGFzcyBBcHBsZVBvcnQoUG9ydCk6CiAgICAgZGVmIF9hbGxvd2VkX3ZlcnNpb25zKHNl
bGYpOgogICAgICAgICB2ZXJzaW9ucyA9IHNldCgpCiAgICAgICAgIGZvciB0YWJsZSBpbiBbUFVC
TElDX1RBQkxFLCBJTlRFUk5BTF9UQUJMRV06Ci0gICAgICAgICAgICB2ZXJzaW9ucy51cGRhdGUo
VmVyc2lvbk5hbWVNYXAubWFwKHNlbGYuaG9zdC5wbGF0Zm9ybSkubWFwcGluZ19mb3JfcGxhdGZv
cm0ocGxhdGZvcm09c2VsZi5wb3J0X25hbWUuc3BsaXQoJy0nKVswXSwgdGFibGU9dGFibGUpLnZh
bHVlcygpKQorICAgICAgICAgICAgdmVyc2lvbnMudXBkYXRlKFZlcnNpb25OYW1lTWFwKHBsYXRm
b3JtPXNlbGYucG9ydF9uYW1lLnNwbGl0KCctJylbMF0pLm1hcHBpbmdfZm9yX3BsYXRmb3JtKHRh
YmxlPXRhYmxlKS52YWx1ZXMoKSkKICAgICAgICAgcmV0dXJuIHNvcnRlZCh2ZXJzaW9ucykKIAog
ICAgIGRlZiBfZ2VuZXJhdGVfYWxsX3Rlc3RfY29uZmlndXJhdGlvbnMoc2VsZik6CkBAIC0xMDgs
NyArMTA4LDcgQEAgY2xhc3MgQXBwbGVQb3J0KFBvcnQpOgogICAgICAgICAgICAgZm9yIGJ1aWxk
X3R5cGUgaW4gc2VsZi5BTExfQlVJTERfVFlQRVM6CiAgICAgICAgICAgICAgICAgZm9yIGFyY2hp
dGVjdHVyZSBpbiBzZWxmLkFSQ0hJVEVDVFVSRVM6CiAgICAgICAgICAgICAgICAgICAgIGZvciB0
YWJsZSBpbiBbUFVCTElDX1RBQkxFLCBJTlRFUk5BTF9UQUJMRV06Ci0gICAgICAgICAgICAgICAg
ICAgICAgICB2ZXJzaW9uX25hbWUgPSBWZXJzaW9uTmFtZU1hcC5tYXAoc2VsZi5ob3N0LnBsYXRm
b3JtKS50b19uYW1lKHZlcnNpb24sIHBsYXRmb3JtPXNlbGYucG9ydF9uYW1lLnNwbGl0KCctJylb
MF0sIHRhYmxlPXRhYmxlKQorICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbl9uYW1lID0g
VmVyc2lvbk5hbWVNYXAocGxhdGZvcm09c2VsZi5wb3J0X25hbWUuc3BsaXQoJy0nKVswXSkudG9f
bmFtZSh2ZXJzaW9uLCB0YWJsZT10YWJsZSkKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHZl
cnNpb25fbmFtZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9ucy5h
cHBlbmQoVGVzdENvbmZpZ3VyYXRpb24odmVyc2lvbj12ZXJzaW9uX25hbWUsIGFyY2hpdGVjdHVy
ZT1hcmNoaXRlY3R1cmUsIGJ1aWxkX3R5cGU9YnVpbGRfdHlwZSkpCiAgICAgICAgIHJldHVybiBj
b25maWd1cmF0aW9ucwpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2Jhc2UucHkK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2Jhc2UucHkJKHJldmlz
aW9uIDIzMTU5NSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9iYXNlLnB5CSh3b3Jr
aW5nIGNvcHkpCkBAIC03OTUsOSArNzk1LDkgQEAgY2xhc3MgUG9ydChvYmplY3QpOgogICAgICAg
ICBleHBlY3RhdGlvbnMsIGRldGVybWluaW5nIHNlYXJjaCBwYXRocywgYW5kIGxvZ2dpbmcgaW5m
b3JtYXRpb24uIiIiCiAgICAgICAgIGlmIHNlbGYuX29zX3ZlcnNpb24gaXMgTm9uZToKICAgICAg
ICAgICAgIHJldHVybiBOb25lCi0gICAgICAgIHJlc3VsdCA9IFZlcnNpb25OYW1lTWFwLm1hcChz
ZWxmLmhvc3QucGxhdGZvcm0pLnRvX25hbWUoc2VsZi5fb3NfdmVyc2lvbiwgdGFibGU9UFVCTElD
X1RBQkxFKQorICAgICAgICByZXN1bHQgPSBWZXJzaW9uTmFtZU1hcChzZWxmLmhvc3QucGxhdGZv
cm0ub3NfbmFtZSkudG9fbmFtZShzZWxmLl9vc192ZXJzaW9uLCB0YWJsZT1QVUJMSUNfVEFCTEUp
CiAgICAgICAgIGlmIG5vdCByZXN1bHQ6Ci0gICAgICAgICAgICByZXN1bHQgPSBWZXJzaW9uTmFt
ZU1hcC5tYXAoc2VsZi5ob3N0LnBsYXRmb3JtKS50b19uYW1lKHNlbGYuX29zX3ZlcnNpb24sIHRh
YmxlPUlOVEVSTkFMX1RBQkxFKQorICAgICAgICAgICAgcmVzdWx0ID0gVmVyc2lvbk5hbWVNYXAo
c2VsZi5ob3N0LnBsYXRmb3JtLm9zX25hbWUpLnRvX25hbWUoc2VsZi5fb3NfdmVyc2lvbiwgdGFi
bGU9SU5URVJOQUxfVEFCTEUpCiAgICAgICAgIHJldHVybiByZXN1bHQKIAogICAgIGRlZiBnZXRf
b3B0aW9uKHNlbGYsIG5hbWUsIGRlZmF1bHRfdmFsdWU9Tm9uZSk6CkluZGV4OiBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3BvcnQvZGFyd2luX3Rlc3RjYXNlLnB5Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvcG9ydC9kYXJ3aW5fdGVzdGNhc2UucHkJKHJldmlzaW9uIDIzMTU5
NSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9kYXJ3aW5fdGVzdGNhc2UucHkJKHdv
cmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAgY2xhc3MgRGFyd2luVGVzdChwb3J0X3Rlc3Rj
YXNlLlBvcnRUZXN0QwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYubWFrZV9wb3J0KG9w
dGlvbnM9TW9ja09wdGlvbnMoZ3VhcmRfbWFsbG9jPVRydWUpKS5kZWZhdWx0X3RpbWVvdXRfbXMo
KSwgMzUwMDAwKQogCiAgICAgZGVmIGFzc2VydF9uYW1lKHNlbGYsIHBvcnRfbmFtZSwgb3NfdmVy
c2lvbl9zdHJpbmcsIGV4cGVjdGVkKToKLSAgICAgICAgaG9zdCA9IE1vY2tTeXN0ZW1Ib3N0KG9z
X25hbWU9c2VsZi5vc19uYW1lLCBvc192ZXJzaW9uPVZlcnNpb25OYW1lTWFwLm1hcCgpLmZyb21f
bmFtZShvc192ZXJzaW9uX3N0cmluZylbMV0pCisgICAgICAgIGhvc3QgPSBNb2NrU3lzdGVtSG9z
dChvc19uYW1lPXNlbGYub3NfbmFtZSwgb3NfdmVyc2lvbj1WZXJzaW9uTmFtZU1hcCgpLmZyb21f
bmFtZShvc192ZXJzaW9uX3N0cmluZylbMV0pCiAgICAgICAgIHBvcnQgPSBzZWxmLm1ha2VfcG9y
dChob3N0PWhvc3QsIHBvcnRfbmFtZT1wb3J0X25hbWUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoZXhwZWN0ZWQsIHBvcnQubmFtZSgpKQogCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3BvcnQvaW9zLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9p
b3MucHkJKHJldmlzaW9uIDIzMTU5NSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9p
b3MucHkJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDcgQEAgY2xhc3MgSU9TUG9ydChEYXJ3
aW5Qb3J0KToKICAgICBkZWYgdmVyc2lvbl9uYW1lKHNlbGYpOgogICAgICAgICBpZiBzZWxmLl9v
c192ZXJzaW9uIGlzIE5vbmU6CiAgICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICByZXR1
cm4gVmVyc2lvbk5hbWVNYXAubWFwKHNlbGYuaG9zdC5wbGF0Zm9ybSkudG9fbmFtZShzZWxmLl9v
c192ZXJzaW9uLCBwbGF0Zm9ybT1JT1NQb3J0LnBvcnRfbmFtZSkKKyAgICAgICAgcmV0dXJuIFZl
cnNpb25OYW1lTWFwKHBsYXRmb3JtPUlPU1BvcnQucG9ydF9uYW1lKS50b19uYW1lKHNlbGYuX29z
X3ZlcnNpb24pCiAKICAgICBkZWYgZHJpdmVyX2NtZF9saW5lX2Zvcl9sb2dnaW5nKHNlbGYpOgog
ICAgICAgICAjIEF2b2lkIGNyZWF0aW5nL2Nvbm5lY3RpbmcgdG8gZGV2aWNlcyBqdXN0IGZvciBs
b2dnaW5nIHRoZSBjb21tYW5kbGluZS4KQEAgLTExMSw3ICsxMTEsNyBAQCBjbGFzcyBJT1NQb3J0
KERhcndpblBvcnQpOgogICAgICAgICBmb3IgdmVyc2lvbiBpbiB2ZXJzaW9uc190b19mYWxsYmFj
azoKICAgICAgICAgICAgIGFwcGxlX25hbWUgPSBOb25lCiAgICAgICAgICAgICBpZiBhcHBsZV9h
ZGRpdGlvbnMoKToKLSAgICAgICAgICAgICAgICBhcHBsZV9uYW1lID0gVmVyc2lvbk5hbWVNYXAu
bWFwKHNlbGYuaG9zdC5wbGF0Zm9ybSkudG9fbmFtZSh2ZXJzaW9uLCBwbGF0Zm9ybT1JT1NQb3J0
LnBvcnRfbmFtZSwgdGFibGU9SU5URVJOQUxfVEFCTEUpCisgICAgICAgICAgICAgICAgYXBwbGVf
bmFtZSA9IFZlcnNpb25OYW1lTWFwKHBsYXRmb3JtPUlPU1BvcnQucG9ydF9uYW1lKS50b19uYW1l
KHZlcnNpb24sIHRhYmxlPUlOVEVSTkFMX1RBQkxFKQogCiAgICAgICAgICAgICBpZiBhcHBsZV9u
YW1lOgogICAgICAgICAgICAgICAgIGV4cGVjdGF0aW9ucy5hcHBlbmQoc2VsZi5fYXBwbGVfYmFz
ZWxpbmVfcGF0aCgne30te30te30nLmZvcm1hdChzZWxmLnBvcnRfbmFtZSwgYXBwbGVfbmFtZS5s
b3dlcigpLnJlcGxhY2UoJyAnLCAnJyksIHdrX3N0cmluZykpKQpAQCAtMTMwLDcgKzEzMCw3IEBA
IGNsYXNzIElPU1BvcnQoRGFyd2luUG9ydCk6CiAgICAgICAgIGZvciB2ZXJzaW9uIGluIHZlcnNp
b25zX3RvX2ZhbGxiYWNrOgogICAgICAgICAgICAgYXBwbGVfbmFtZSA9IE5vbmUKICAgICAgICAg
ICAgIGlmIGFwcGxlX2FkZGl0aW9ucygpOgotICAgICAgICAgICAgICAgIGFwcGxlX25hbWUgPSBW
ZXJzaW9uTmFtZU1hcC5tYXAoc2VsZi5ob3N0LnBsYXRmb3JtKS50b19uYW1lKHZlcnNpb24sIHBs
YXRmb3JtPUlPU1BvcnQucG9ydF9uYW1lLCB0YWJsZT1JTlRFUk5BTF9UQUJMRSkKKyAgICAgICAg
ICAgICAgICBhcHBsZV9uYW1lID0gVmVyc2lvbk5hbWVNYXAocGxhdGZvcm09SU9TUG9ydC5wb3J0
X25hbWUpLnRvX25hbWUodmVyc2lvbiwgdGFibGU9SU5URVJOQUxfVEFCTEUpCiAgICAgICAgICAg
ICBpZiBhcHBsZV9uYW1lOgogICAgICAgICAgICAgICAgIGV4cGVjdGF0aW9ucy5hcHBlbmQoc2Vs
Zi5fYXBwbGVfYmFzZWxpbmVfcGF0aCgne30te30nLmZvcm1hdChJT1NQb3J0LnBvcnRfbmFtZSwg
YXBwbGVfbmFtZS5sb3dlcigpLnJlcGxhY2UoJyAnLCAnJykpKSkKICAgICAgICAgICAgIGV4cGVj
dGF0aW9ucy5hcHBlbmQoc2VsZi5fd2Via2l0X2Jhc2VsaW5lX3BhdGgoJ3t9LXt9Jy5mb3JtYXQo
SU9TUG9ydC5wb3J0X25hbWUsIHZlcnNpb24ubWFqb3IpKSkKSW5kZXg6IFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvcG9ydC9tYWMucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9wb3J0L21hYy5weQkocmV2aXNpb24gMjMxNTk1KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9wb3J0L21hYy5weQkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNyBAQCBjbGFzcyBNYWNQ
b3J0KERhcndpblBvcnQpOgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGhvc3QsIHBvcnRfbmFt
ZSwgKiprd2FyZ3MpOgogICAgICAgICBEYXJ3aW5Qb3J0Ll9faW5pdF9fKHNlbGYsIGhvc3QsIHBv
cnRfbmFtZSwgKiprd2FyZ3MpCi0gICAgICAgIHZlcnNpb25fbmFtZV9tYXAgPSBWZXJzaW9uTmFt
ZU1hcC5tYXAoaG9zdC5wbGF0Zm9ybSkKKyAgICAgICAgdmVyc2lvbl9uYW1lX21hcCA9IFZlcnNp
b25OYW1lTWFwKHBsYXRmb3JtPWhvc3QucGxhdGZvcm0ub3NfbmFtZSkKICAgICAgICAgc2VsZi5f
b3NfdmVyc2lvbiA9IE5vbmUKICAgICAgICAgc3BsaXRfcG9ydF9uYW1lID0gcG9ydF9uYW1lLnNw
bGl0KCctJykKICAgICAgICAgaWYgbGVuKHNwbGl0X3BvcnRfbmFtZSkgPiAxIGFuZCBzcGxpdF9w
b3J0X25hbWVbMV0gIT0gJ3drMic6CkBAIC03Miw3ICs3Miw3IEBAIGNsYXNzIE1hY1BvcnQoRGFy
d2luUG9ydCk6CiAgICAgQG1lbW9pemVkCiAgICAgZGVmIGRlZmF1bHRfYmFzZWxpbmVfc2VhcmNo
X3BhdGgoc2VsZik6CiAgICAgICAgIHZlcnNpb25zX3RvX2ZhbGxiYWNrID0gW10KLSAgICAgICAg
dmVyc2lvbl9uYW1lX21hcCA9IFZlcnNpb25OYW1lTWFwLm1hcChzZWxmLmhvc3QucGxhdGZvcm0p
CisgICAgICAgIHZlcnNpb25fbmFtZV9tYXAgPSBWZXJzaW9uTmFtZU1hcChwbGF0Zm9ybT1zZWxm
LnBvcnRfbmFtZSkKIAogICAgICAgICBpZiBzZWxmLl9vc192ZXJzaW9uID09IHNlbGYuQ1VSUkVO
VF9WRVJTSU9OOgogICAgICAgICAgICAgdmVyc2lvbnNfdG9fZmFsbGJhY2sgPSBbc2VsZi5DVVJS
RU5UX1ZFUlNJT05dCkBAIC05MCwxMiArOTAsMTIgQEAgY2xhc3MgTWFjUG9ydChEYXJ3aW5Qb3J0
KToKIAogICAgICAgICBleHBlY3RhdGlvbnMgPSBbXQogICAgICAgICBmb3IgdmVyc2lvbiBpbiB2
ZXJzaW9uc190b19mYWxsYmFjazoKLSAgICAgICAgICAgIHZlcnNpb25fbmFtZSA9IHZlcnNpb25f
bmFtZV9tYXAudG9fbmFtZSh2ZXJzaW9uLCBwbGF0Zm9ybT1zZWxmLnBvcnRfbmFtZSkKKyAgICAg
ICAgICAgIHZlcnNpb25fbmFtZSA9IHZlcnNpb25fbmFtZV9tYXAudG9fbmFtZSh2ZXJzaW9uKQog
ICAgICAgICAgICAgaWYgdmVyc2lvbl9uYW1lOgogICAgICAgICAgICAgICAgIHN0YW5kYXJkaXpl
ZF92ZXJzaW9uX25hbWUgPSB2ZXJzaW9uX25hbWUubG93ZXIoKS5yZXBsYWNlKCcgJywgJycpCiAg
ICAgICAgICAgICBhcHBsZV9uYW1lID0gTm9uZQogICAgICAgICAgICAgaWYgYXBwbGVfYWRkaXRp
b25zKCk6Ci0gICAgICAgICAgICAgICAgYXBwbGVfbmFtZSA9IHZlcnNpb25fbmFtZV9tYXAudG9f
bmFtZSh2ZXJzaW9uLCBwbGF0Zm9ybT1zZWxmLnBvcnRfbmFtZSwgdGFibGU9SU5URVJOQUxfVEFC
TEUpCisgICAgICAgICAgICAgICAgYXBwbGVfbmFtZSA9IHZlcnNpb25fbmFtZV9tYXAudG9fbmFt
ZSh2ZXJzaW9uLCB0YWJsZT1JTlRFUk5BTF9UQUJMRSkKIAogICAgICAgICAgICAgaWYgYXBwbGVf
bmFtZToKICAgICAgICAgICAgICAgICBleHBlY3RhdGlvbnMuYXBwZW5kKHNlbGYuX2FwcGxlX2Jh
c2VsaW5lX3BhdGgoJ21hYy17fS17fScuZm9ybWF0KGFwcGxlX25hbWUubG93ZXIoKS5yZXBsYWNl
KCcgJywgJycpLCB3a19zdHJpbmcpKSkKQEAgLTEyMCwxNiArMTIwLDE2IEBAIGNsYXNzIE1hY1Bv
cnQoRGFyd2luUG9ydCk6CiAgICAgQG1lbW9pemVkCiAgICAgZGVmIGNvbmZpZ3VyYXRpb25fc3Bl
Y2lmaWVyX21hY3JvcyhzZWxmKToKICAgICAgICAgY29uZmlnX21hcCA9IHt9Ci0gICAgICAgIHZl
cnNpb25fbmFtZV9tYXAgPSBWZXJzaW9uTmFtZU1hcC5tYXAoc2VsZi5ob3N0LnBsYXRmb3JtKQor
ICAgICAgICB2ZXJzaW9uX25hbWVfbWFwID0gVmVyc2lvbk5hbWVNYXAocGxhdGZvcm09c2VsZi5w
b3J0X25hbWUpCiAgICAgICAgIGZvciB2ZXJzaW9uIGluIHNlbGYuX2FsbG93ZWRfdmVyc2lvbnMo
KToKICAgICAgICAgICAgIHZlcnNpb25fbmFtZXMgPSBbXQogICAgICAgICAgICAgZm9yIG5ld2Vy
IGluIHNlbGYuX2FsbG93ZWRfdmVyc2lvbnMoKVtzZWxmLl9hbGxvd2VkX3ZlcnNpb25zKCkuaW5k
ZXgodmVyc2lvbik6XToKLSAgICAgICAgICAgICAgICB2ZXJzaW9uX25hbWUgPSB2ZXJzaW9uX25h
bWVfbWFwLnRvX25hbWUobmV3ZXIsIHBsYXRmb3JtPXNlbGYucG9ydF9uYW1lKQorICAgICAgICAg
ICAgICAgIHZlcnNpb25fbmFtZSA9IHZlcnNpb25fbmFtZV9tYXAudG9fbmFtZShuZXdlcikKICAg
ICAgICAgICAgICAgICBpZiBub3QgdmVyc2lvbl9uYW1lOgotICAgICAgICAgICAgICAgICAgICB2
ZXJzaW9uX25hbWUgPSB2ZXJzaW9uX25hbWVfbWFwLnRvX25hbWUobmV3ZXIsIHBsYXRmb3JtPXNl
bGYucG9ydF9uYW1lLCB0YWJsZT1JTlRFUk5BTF9UQUJMRSkKKyAgICAgICAgICAgICAgICAgICAg
dmVyc2lvbl9uYW1lID0gdmVyc2lvbl9uYW1lX21hcC50b19uYW1lKG5ld2VyLCB0YWJsZT1JTlRF
Uk5BTF9UQUJMRSkKICAgICAgICAgICAgICAgICB2ZXJzaW9uX25hbWVzLmFwcGVuZCh2ZXJzaW9u
X25hbWUubG93ZXIoKS5yZXBsYWNlKCcgJywgJycpKQogICAgICAgICAgICAgZm9yIHRhYmxlIGlu
IFtQVUJMSUNfVEFCTEUsIElOVEVSTkFMX1RBQkxFXToKLSAgICAgICAgICAgICAgICB2ZXJzaW9u
X25hbWUgPSB2ZXJzaW9uX25hbWVfbWFwLnRvX25hbWUodmVyc2lvbiwgcGxhdGZvcm09c2VsZi5w
b3J0X25hbWUsIHRhYmxlPXRhYmxlKQorICAgICAgICAgICAgICAgIHZlcnNpb25fbmFtZSA9IHZl
cnNpb25fbmFtZV9tYXAudG9fbmFtZSh2ZXJzaW9uLCB0YWJsZT10YWJsZSkKICAgICAgICAgICAg
ICAgICBpZiBub3QgdmVyc2lvbl9uYW1lOgogICAgICAgICAgICAgICAgICAgICBjb250aW51ZQog
ICAgICAgICAgICAgICAgIGNvbmZpZ19tYXBbdmVyc2lvbl9uYW1lLmxvd2VyKCkucmVwbGFjZSgn
ICcsICcnKSArICcrJ10gPSB2ZXJzaW9uX25hbWVzCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtp
dHB5L3BvcnQvbWFjX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvcG9ydC9tYWNfdW5pdHRlc3QucHkJKHJldmlzaW9uIDIzMTU5NSkKKysrIFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvcG9ydC9tYWNfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTE2
MCwxOSArMTYwLDE5IEBAIGNsYXNzIE1hY1Rlc3QoZGFyd2luX3Rlc3RjYXNlLkRhcndpblRlc3QK
ICAgICBkZWYgdGVzdF9mYWN0b3J5X3dpdGhfZnV0dXJlX3ZlcnNpb24oc2VsZik6CiAgICAgICAg
IHBvcnQgPSBzZWxmLm1ha2VfcG9ydChvcHRpb25zPU1vY2tPcHRpb25zKHdlYmtpdF90ZXN0X3J1
bm5lcj1UcnVlKSwgb3NfdmVyc2lvbj1NYWNUZXN0LkZVVFVSRV9WRVJTSU9OLCBvc19uYW1lPSdt
YWMnLCBwb3J0X25hbWU9J21hYycpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5kcml2
ZXJfbmFtZSgpLCAnV2ViS2l0VGVzdFJ1bm5lcicpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
cG9ydC52ZXJzaW9uX25hbWUoKSwgVmVyc2lvbk5hbWVNYXAoKS50b19uYW1lKE1hY1BvcnQuQ1VS
UkVOVF9WRVJTSU9OLCBwbGF0Zm9ybT1NYWNQb3J0LnBvcnRfbmFtZSkpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwocG9ydC52ZXJzaW9uX25hbWUoKSwgVmVyc2lvbk5hbWVNYXAocGxhdGZvcm09
TWFjUG9ydC5wb3J0X25hbWUpLnRvX25hbWUoTWFjUG9ydC5DVVJSRU5UX1ZFUlNJT04pKQogCiAg
ICAgICAgIHBvcnQgPSBzZWxmLm1ha2VfcG9ydChvcHRpb25zPU1vY2tPcHRpb25zKHdlYmtpdF90
ZXN0X3J1bm5lcj1GYWxzZSksIG9zX3ZlcnNpb249TWFjVGVzdC5GVVRVUkVfVkVSU0lPTiwgb3Nf
bmFtZT0nbWFjJywgcG9ydF9uYW1lPSdtYWMnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBv
cnQuZHJpdmVyX25hbWUoKSwgJ0R1bXBSZW5kZXJUcmVlJykKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChwb3J0LnZlcnNpb25fbmFtZSgpLCBWZXJzaW9uTmFtZU1hcCgpLnRvX25hbWUoTWFjUG9y
dC5DVVJSRU5UX1ZFUlNJT04sIHBsYXRmb3JtPU1hY1BvcnQucG9ydF9uYW1lKSkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChwb3J0LnZlcnNpb25fbmFtZSgpLCBWZXJzaW9uTmFtZU1hcChwbGF0
Zm9ybT1NYWNQb3J0LnBvcnRfbmFtZSkudG9fbmFtZShNYWNQb3J0LkNVUlJFTlRfVkVSU0lPTikp
CiAKICAgICAgICAgcG9ydCA9IHNlbGYubWFrZV9wb3J0KG9wdGlvbnM9TW9ja09wdGlvbnMod2Vi
a2l0X3Rlc3RfcnVubmVyPUZhbHNlKSwgb3NfdmVyc2lvbj1NYWNUZXN0LkZVVFVSRV9WRVJTSU9O
LCBvc19uYW1lPSdtYWMnLCBwb3J0X25hbWU9J21hYy13azInKQogICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHBvcnQuZHJpdmVyX25hbWUoKSwgJ1dlYktpdFRlc3RSdW5uZXInKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHBvcnQudmVyc2lvbl9uYW1lKCksIFZlcnNpb25OYW1lTWFwKCkudG9f
bmFtZShNYWNQb3J0LkNVUlJFTlRfVkVSU0lPTiwgcGxhdGZvcm09TWFjUG9ydC5wb3J0X25hbWUp
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcnQudmVyc2lvbl9uYW1lKCksIFZlcnNpb25O
YW1lTWFwKHBsYXRmb3JtPU1hY1BvcnQucG9ydF9uYW1lKS50b19uYW1lKE1hY1BvcnQuQ1VSUkVO
VF9WRVJTSU9OKSkKIAogICAgICAgICBwb3J0ID0gc2VsZi5tYWtlX3BvcnQob3B0aW9ucz1Nb2Nr
T3B0aW9ucyh3ZWJraXRfdGVzdF9ydW5uZXI9VHJ1ZSksIG9zX3ZlcnNpb249TWFjVGVzdC5GVVRV
UkVfVkVSU0lPTiwgb3NfbmFtZT0nbWFjJywgcG9ydF9uYW1lPSdtYWMtd2syJykKICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChwb3J0LmRyaXZlcl9uYW1lKCksICdXZWJLaXRUZXN0UnVubmVyJykK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0LnZlcnNpb25fbmFtZSgpLCBWZXJzaW9uTmFt
ZU1hcCgpLnRvX25hbWUoTWFjUG9ydC5DVVJSRU5UX1ZFUlNJT04sIHBsYXRmb3JtPU1hY1BvcnQu
cG9ydF9uYW1lKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0LnZlcnNpb25fbmFtZSgp
LCBWZXJzaW9uTmFtZU1hcChwbGF0Zm9ybT1NYWNQb3J0LnBvcnRfbmFtZSkudG9fbmFtZShNYWNQ
b3J0LkNVUlJFTlRfVkVSU0lPTikpCiAKICAgICBkZWYgdGVzdF9mYWN0b3J5X3dpdGhfZnV0dXJl
X3ZlcnNpb25fYW5kX2FwcGxlX2FkZGl0aW9ucyhzZWxmKToKICAgICAgICAgd2l0aCBwb3J0X3Rl
c3RjYXNlLmJpbmRfbW9ja19hcHBsZV9hZGRpdGlvbnMoKToKSW5kZXg6IFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvcG9ydC9wb3J0X3Rlc3RjYXNlLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvcG9ydC9wb3J0X3Rlc3RjYXNlLnB5CShyZXZpc2lvbiAyMzE1OTUpCisrKyBU
b29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvcG9ydF90ZXN0Y2FzZS5weQkod29ya2luZyBjb3B5
KQpAQCAtODgsMjIgKzg4LDE4IEBAIGRlZiBiaW5kX21vY2tfYXBwbGVfYWRkaXRpb25zKCk6CiAg
ICAgICAgICAgICByZXR1cm4gJy9hZGRpdGlvbmFsX3Rlc3RpbmdfcGF0aC8nCiAKICAgICAgICAg
QHN0YXRpY21ldGhvZAotICAgICAgICBkZWYgdmVyc2lvbl9uYW1lX21hcHBpbmcocGxhdGZvcm09
Tm9uZSk6Ci0gICAgICAgICAgICByZXN1bHQgPSBWZXJzaW9uTmFtZU1hcChwbGF0Zm9ybSkKLSAg
ICAgICAgICAgIHJlc3VsdC5tYXBwaW5nW0lOVEVSTkFMX1RBQkxFXSA9IHt9Ci0gICAgICAgICAg
ICBmb3IgcGxhdGZvcm0gaW4gcmVzdWx0Lm1hcHBpbmdbUFVCTElDX1RBQkxFXToKLSAgICAgICAg
ICAgICAgICByZXN1bHQubWFwcGluZ1tJTlRFUk5BTF9UQUJMRV1bcGxhdGZvcm1dID0ge30KLSAg
ICAgICAgICAgICAgICBmb3IgbmFtZSwgdmVyc2lvbiBpbiByZXN1bHQubWFwcGluZ1tQVUJMSUNf
VEFCTEVdW3BsYXRmb3JtXS5pdGVyaXRlbXMoKToKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0
Lm1hcHBpbmdbSU5URVJOQUxfVEFCTEVdW3BsYXRmb3JtXVsnYWRkLScgKyBuYW1lXSA9IHZlcnNp
b24KLSAgICAgICAgICAgIHJldHVybiByZXN1bHQKKyAgICAgICAgZGVmIGluc2VydF92ZXJzaW9u
X25hbWVfbWFwcGluZyh2ZXJzaW9uX25hbWVfbWFwKToKKyAgICAgICAgICAgIHZlcnNpb25fbmFt
ZV9tYXAubWFwcGluZ1tJTlRFUk5BTF9UQUJMRV0gPSB7fQorICAgICAgICAgICAgZm9yIHBsYXRm
b3JtIGluIHZlcnNpb25fbmFtZV9tYXAubWFwcGluZ1tQVUJMSUNfVEFCTEVdOgorICAgICAgICAg
ICAgICAgIHZlcnNpb25fbmFtZV9tYXAubWFwcGluZ1tJTlRFUk5BTF9UQUJMRV1bcGxhdGZvcm1d
ID0ge30KKyAgICAgICAgICAgICAgICBmb3IgbmFtZSwgdmVyc2lvbiBpbiB2ZXJzaW9uX25hbWVf
bWFwLm1hcHBpbmdbUFVCTElDX1RBQkxFXVtwbGF0Zm9ybV0uaXRlcml0ZW1zKCk6CisgICAgICAg
ICAgICAgICAgICAgIHZlcnNpb25fbmFtZV9tYXAubWFwcGluZ1tJTlRFUk5BTF9UQUJMRV1bcGxh
dGZvcm1dWydhZGQtJyArIG5hbWVdID0gdmVyc2lvbgogCiAgICAgIyBhcHBsZV9hZGRpdGlvbnMg
aXMgYSBtZW1vaXplZCBmdW5jdGlvbi4gVGFrZSBhZHZhbnRhZ2Ugb2YgdGhpcyBmYWN0IGFuZCBt
YW5pcHVsYXRlIHRoZSBjYWNoZQogICAgICMgdG8gdGVtcG9yYXJpbHkgcmV0dXJuIGEgbW9ja2Vk
IHJlc3VsdAogICAgIGFwcGxlX2FkZGl0aW9ucy5fcmVzdWx0c19jYWNoZVsoKV0gPSBNb2NrQXBw
bGVBZGRpdGlvbnMKLSAgICBWZXJzaW9uTmFtZU1hcC5tYXAuX3Jlc3VsdHNfY2FjaGUgPSB7fQog
ICAgIHlpZWxkCiAgICAgYXBwbGVfYWRkaXRpb25zLl9yZXN1bHRzX2NhY2hlWygpXSA9IE5vbmUK
LSAgICBWZXJzaW9uTmFtZU1hcC5tYXAuX3Jlc3VsdHNfY2FjaGUgPSB7fQogCiAKIGNsYXNzIFBv
cnRUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtp
dHB5L3BvcnQvdGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Bv
cnQvdGVzdC5weQkocmV2aXNpb24gMjMxNTk1KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9w
b3J0L3Rlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTM3NiwxMiArMzc2LDEyIEBAIGNsYXNzIFRl
c3RQb3J0KFBvcnQpOgogICAgICAgICBpZiBzZWxmLl9vcGVyYXRpbmdfc3lzdGVtID09ICdsaW51
eCc6CiAgICAgICAgICAgICBzZWxmLl9vc192ZXJzaW9uID0gTm9uZQogICAgICAgICBlbHNlOgot
ICAgICAgICAgICAgc2VsZi5fb3NfdmVyc2lvbiA9IFZlcnNpb25OYW1lTWFwLm1hcChzZWxmLmhv
c3QucGxhdGZvcm0pLmZyb21fbmFtZShzZWxmLl9uYW1lLnNwbGl0KCctJylbMl0pWzFdCisgICAg
ICAgICAgICBzZWxmLl9vc192ZXJzaW9uID0gVmVyc2lvbk5hbWVNYXAocGxhdGZvcm09c2VsZi5o
b3N0LnBsYXRmb3JtLm9zX25hbWUpLmZyb21fbmFtZShzZWxmLl9uYW1lLnNwbGl0KCctJylbMl0p
WzFdCiAKICAgICBkZWYgdmVyc2lvbl9uYW1lKHNlbGYpOgogICAgICAgICBpZiBzZWxmLl9vc192
ZXJzaW9uIGlzIE5vbmU6CiAgICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICByZXR1cm4g
VmVyc2lvbk5hbWVNYXAubWFwKHNlbGYuaG9zdC5wbGF0Zm9ybSkudG9fbmFtZShzZWxmLl9vc192
ZXJzaW9uLCBwbGF0Zm9ybT1zZWxmLl9vcGVyYXRpbmdfc3lzdGVtLCB0YWJsZT1QVUJMSUNfVEFC
TEUpCisgICAgICAgIHJldHVybiBWZXJzaW9uTmFtZU1hcChwbGF0Zm9ybT1zZWxmLl9vcGVyYXRp
bmdfc3lzdGVtKS50b19uYW1lKHNlbGYuX29zX3ZlcnNpb24sIHRhYmxlPVBVQkxJQ19UQUJMRSkK
IAogICAgIGRlZiBkZWZhdWx0X3BpeGVsX3Rlc3RzKHNlbGYpOgogICAgICAgICByZXR1cm4gVHJ1
ZQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3dpbi5weQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvd2luLnB5CShyZXZpc2lvbiAyMzE1OTUpCisr
KyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvd2luLnB5CSh3b3JraW5nIGNvcHkpCkBAIC05
Miw3ICs5Miw3IEBAIGNsYXNzIFdpblBvcnQoQXBwbGVQb3J0KToKICAgICBkZWYgX19pbml0X18o
c2VsZiwgaG9zdCwgcG9ydF9uYW1lLCAqKmt3YXJncyk6CiAgICAgICAgIEFwcGxlUG9ydC5fX2lu
aXRfXyhzZWxmLCBob3N0LCBwb3J0X25hbWUsICoqa3dhcmdzKQogICAgICAgICBpZiBwb3J0X25h
bWUuc3BsaXQoJy0nKSA+IDE6Ci0gICAgICAgICAgICBzZWxmLl9vc192ZXJzaW9uID0gVmVyc2lv
bk5hbWVNYXAubWFwKGhvc3QucGxhdGZvcm0pLmZyb21fbmFtZShwb3J0X25hbWUuc3BsaXQoJy0n
KVsxXSlbMV0KKyAgICAgICAgICAgIHNlbGYuX29zX3ZlcnNpb24gPSBWZXJzaW9uTmFtZU1hcChw
bGF0Zm9ybT1ob3N0LnBsYXRmb3JtLm9zX25hbWUpLmZyb21fbmFtZShwb3J0X25hbWUuc3BsaXQo
Jy0nKVsxXSlbMV0KICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYuX29zX3ZlcnNpb24g
PSBzZWxmLmhvc3QucGxhdGZvcm0ub3NfdmVyc2lvbgogCkBAIC0xMTEsMTMgKzExMSwxMyBAQCBj
bGFzcyBXaW5Qb3J0KEFwcGxlUG9ydCk6CiAgICAgICAgIHJldHVybiBleHBlY3RlZF90ZXh0ICE9
IGFjdHVhbF90ZXh0CiAKICAgICBkZWYgZGVmYXVsdF9iYXNlbGluZV9zZWFyY2hfcGF0aChzZWxm
KToKLSAgICAgICAgdmVyc2lvbl9uYW1lX21hcCA9IFZlcnNpb25OYW1lTWFwLm1hcChzZWxmLmhv
c3QucGxhdGZvcm0pCisgICAgICAgIHZlcnNpb25fbmFtZV9tYXAgPSBWZXJzaW9uTmFtZU1hcChw
bGF0Zm9ybT1zZWxmLnBvcnRfbmFtZSkKICAgICAgICAgaWYgc2VsZi5fb3NfdmVyc2lvbiA8IHNl
bGYuVkVSU0lPTl9NSU4gb3Igc2VsZi5fb3NfdmVyc2lvbiA+IHNlbGYuVkVSU0lPTl9NQVg6CiAg
ICAgICAgICAgICBmYWxsYmFja192ZXJzaW9ucyA9IFtzZWxmLl9vc192ZXJzaW9uXQogICAgICAg
ICBlbHNlOgotICAgICAgICAgICAgc29ydGVkX3ZlcnNpb25zID0gc29ydGVkKHZlcnNpb25fbmFt
ZV9tYXAubWFwcGluZ19mb3JfcGxhdGZvcm0ocGxhdGZvcm09c2VsZi5wb3J0X25hbWUpLnZhbHVl
cygpKQorICAgICAgICAgICAgc29ydGVkX3ZlcnNpb25zID0gc29ydGVkKHZlcnNpb25fbmFtZV9t
YXAubWFwcGluZ19mb3JfcGxhdGZvcm0oKS52YWx1ZXMoKSkKICAgICAgICAgICAgIGZhbGxiYWNr
X3ZlcnNpb25zID0gc29ydGVkX3ZlcnNpb25zW3NvcnRlZF92ZXJzaW9ucy5pbmRleChzZWxmLl9v
c192ZXJzaW9uKTpdCi0gICAgICAgIGZhbGxiYWNrX25hbWVzID0gWyd3aW4tJyArIHZlcnNpb25f
bmFtZV9tYXAudG9fbmFtZSh2ZXJzaW9uLCBwbGF0Zm9ybT1zZWxmLnBvcnRfbmFtZSkubG93ZXIo
KS5yZXBsYWNlKCcgJywgJycpIGZvciB2ZXJzaW9uIGluIGZhbGxiYWNrX3ZlcnNpb25zXQorICAg
ICAgICBmYWxsYmFja19uYW1lcyA9IFsnd2luLScgKyB2ZXJzaW9uX25hbWVfbWFwLnRvX25hbWUo
dmVyc2lvbikubG93ZXIoKS5yZXBsYWNlKCcgJywgJycpIGZvciB2ZXJzaW9uIGluIGZhbGxiYWNr
X3ZlcnNpb25zXQogICAgICAgICBmYWxsYmFja19uYW1lcy5hcHBlbmQoJ3dpbicpCiAKICAgICAg
ICAgIyBGSVhNRTogVGhlIEFwcGxlV2luIHBvcnQgZmFsbHMgYmFjayB0byBBcHBsZU1hYyBmb3Ig
c29tZSByZXN1bHRzLiAgRXZlbnR1YWxseSB3ZSdsbCBoYXZlIGEgc2hhcmVkICdhcHBsZScgcG9y
dC4KQEAgLTQ2MSwxMyArNDYxLDEzIEBAIGNsYXNzIFdpbkNhaXJvUG9ydChXaW5Qb3J0KToKICAg
ICBURVNUX1BBVEhfU0VQQVJBVE9SID0gb3Muc2VwCiAKICAgICBkZWYgZGVmYXVsdF9iYXNlbGlu
ZV9zZWFyY2hfcGF0aChzZWxmKToKLSAgICAgICAgdmVyc2lvbl9uYW1lX21hcCA9IFZlcnNpb25O
YW1lTWFwLm1hcChzZWxmLmhvc3QucGxhdGZvcm0pCisgICAgICAgIHZlcnNpb25fbmFtZV9tYXAg
PSBWZXJzaW9uTmFtZU1hcChwbGF0Zm9ybT1zZWxmLnBvcnRfbmFtZSkKICAgICAgICAgaWYgc2Vs
Zi5fb3NfdmVyc2lvbiA8IHNlbGYuVkVSU0lPTl9NSU4gb3Igc2VsZi5fb3NfdmVyc2lvbiA+IHNl
bGYuVkVSU0lPTl9NQVg6CiAgICAgICAgICAgICBmYWxsYmFja192ZXJzaW9ucyA9IFtzZWxmLl9v
c192ZXJzaW9uXQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgc29ydGVkX3ZlcnNpb25zID0g
c29ydGVkKHZlcnNpb25fbmFtZV9tYXAubWFwcGluZ19mb3JfcGxhdGZvcm0ocGxhdGZvcm09c2Vs
Zi5wb3J0X25hbWUpLnZhbHVlcygpKQorICAgICAgICAgICAgc29ydGVkX3ZlcnNpb25zID0gc29y
dGVkKHZlcnNpb25fbmFtZV9tYXAubWFwcGluZ19mb3JfcGxhdGZvcm0oKS52YWx1ZXMoKSkKICAg
ICAgICAgICAgIGZhbGxiYWNrX3ZlcnNpb25zID0gc29ydGVkX3ZlcnNpb25zW3NvcnRlZF92ZXJz
aW9ucy5pbmRleChzZWxmLl9vc192ZXJzaW9uKTpdCi0gICAgICAgIGZhbGxiYWNrX25hbWVzID0g
Wyd3aW5jYWlyby0nICsgdmVyc2lvbl9uYW1lX21hcC50b19uYW1lKHZlcnNpb24sIHBsYXRmb3Jt
PXNlbGYucG9ydF9uYW1lKS5sb3dlcigpLnJlcGxhY2UoJyAnLCAnJykgZm9yIHZlcnNpb24gaW4g
ZmFsbGJhY2tfdmVyc2lvbnNdCisgICAgICAgIGZhbGxiYWNrX25hbWVzID0gWyd3aW5jYWlyby0n
ICsgdmVyc2lvbl9uYW1lX21hcC50b19uYW1lKHZlcnNpb24pLmxvd2VyKCkucmVwbGFjZSgnICcs
ICcnKSBmb3IgdmVyc2lvbiBpbiBmYWxsYmFja192ZXJzaW9uc10KICAgICAgICAgZmFsbGJhY2tf
bmFtZXMuYXBwZW5kKCd3aW5jYWlybycpCiAgICAgICAgIHJldHVybiBtYXAoc2VsZi5fd2Via2l0
X2Jhc2VsaW5lX3BhdGgsIGZhbGxiYWNrX25hbWVzKQogCkluZGV4OiBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L3BvcnQvd2luX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvcG9ydC93aW5fdW5pdHRlc3QucHkJKHJldmlzaW9uIDIzMTU5NSkKKysrIFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvcG9ydC93aW5fdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAg
LTcxLDcgKzcxLDcgQEAgY2xhc3MgV2luUG9ydFRlc3QocG9ydF90ZXN0Y2FzZS5Qb3J0VGVzdAog
ICAgIGRlZiBfYXNzZXJ0X3ZlcnNpb24oc2VsZiwgcG9ydF9uYW1lLCBleHBlY3RlZF92ZXJzaW9u
KToKICAgICAgICAgaG9zdCA9IE1vY2tTeXN0ZW1Ib3N0KG9zX25hbWU9J3dpbicsIG9zX3ZlcnNp
b249ZXhwZWN0ZWRfdmVyc2lvbikKICAgICAgICAgcG9ydCA9IFdpblBvcnQoaG9zdCwgcG9ydF9u
YW1lPXBvcnRfbmFtZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0LnZlcnNpb25fbmFt
ZSgpLCBWZXJzaW9uTmFtZU1hcC5tYXAoKS50b19uYW1lKGV4cGVjdGVkX3ZlcnNpb24sIHBsYXRm
b3JtPSd3aW4nLCB0YWJsZT1QVUJMSUNfVEFCTEUpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KHBvcnQudmVyc2lvbl9uYW1lKCksIFZlcnNpb25OYW1lTWFwKHBsYXRmb3JtPSd3aW4nKS50b19u
YW1lKGV4cGVjdGVkX3ZlcnNpb24sIHRhYmxlPVBVQkxJQ19UQUJMRSkpCiAKICAgICBkZWYgdGVz
dF92ZXJzaW9ucyhzZWxmKToKICAgICAgICAgc2VsZi5fYXNzZXJ0X3ZlcnNpb24oJ3dpbi14cCcs
IFZlcnNpb24uZnJvbV9uYW1lKCdYUCcpKQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS94
Y29kZS9kZXZpY2VfdHlwZS5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3hjb2RlL2RldmljZV90eXBlLnB5CShyZXZpc2lvbiAyMzE1OTUpCisrKyBUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3hjb2RlL2RldmljZV90eXBlLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xMTEsNyAr
MTExLDcgQEAgY2xhc3MgRGV2aWNlVHlwZShvYmplY3QpOgogICAgICAgICByZXR1cm4gJ3toYXJk
d2FyZV9mYW1pbHl9e2hhcmR3YXJlX3R5cGV9IHJ1bm5pbmcge3ZlcnNpb259Jy5mb3JtYXQoCiAg
ICAgICAgICAgICBoYXJkd2FyZV9mYW1pbHk9c2VsZi5oYXJkd2FyZV9mYW1pbHkgaWYgc2VsZi5o
YXJkd2FyZV9mYW1pbHkgZWxzZSAnRGV2aWNlJywKICAgICAgICAgICAgIGhhcmR3YXJlX3R5cGU9
JyB7fScuZm9ybWF0KHNlbGYuaGFyZHdhcmVfdHlwZSkgaWYgc2VsZi5oYXJkd2FyZV90eXBlIGVs
c2UgJycsCi0gICAgICAgICAgICB2ZXJzaW9uPVZlcnNpb25OYW1lTWFwLm1hcCgpLnRvX25hbWUo
c2VsZi5zb2Z0d2FyZV92ZXJzaW9uLCBwbGF0Zm9ybT1zZWxmLnNvZnR3YXJlX3ZhcmlhbnQubG93
ZXIoKSkgaWYgc2VsZi5zb2Z0d2FyZV92ZXJzaW9uIGVsc2Ugc2VsZi5zb2Z0d2FyZV92YXJpYW50
LAorICAgICAgICAgICAgdmVyc2lvbj1WZXJzaW9uTmFtZU1hcChwbGF0Zm9ybT1zZWxmLnNvZnR3
YXJlX3ZhcmlhbnQubG93ZXIoKSkudG9fbmFtZShzZWxmLnNvZnR3YXJlX3ZlcnNpb24pIGlmIHNl
bGYuc29mdHdhcmVfdmVyc2lvbiBlbHNlIHNlbGYuc29mdHdhcmVfdmFyaWFudCwKICAgICAgICAg
KQogCiAgICAgIyBUaGlzIHRlY2huaXF1ZSBvZiBtYXRjaGluZyB0cmVhdHMgJ05vbmUnIGEgd2ls
ZC1jYXJkLgo=
</data>
<flag name="commit-queue"
          id="358330"
          type_id="3"
          status="-"
          setter="jbedard"
    />
          </attachment>
      

    </bug>

</bugzilla>