<?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>173107</bug_id>
          
          <creation_ts>2017-06-08 10:12:00 -0700</creation_ts>
          <short_desc>webkitpy: iOS Simulator uses Mac as its platform</short_desc>
          <delta_ts>2017-06-23 10:48:52 -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>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=173774</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>buildbot</cc>
    
    <cc>dbates</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>glenn</cc>
    
    <cc>lforschler</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1316951</commentid>
    <comment_count>0</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2017-06-08 10:12:00 -0700</bug_when>
    <thetext>Currently, iOS simulators will report that their platform is a Mac.  Notably, asking for the os_name of an iOS Simulator in webkitpy will return &apos;mac.&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1320792</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-06-19 13:00:15 -0700</bug_when>
    <thetext>&lt;rdar://problem/32856125&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1320795</commentid>
    <comment_count>2</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2017-06-19 13:06:09 -0700</bug_when>
    <thetext>We should distinguish between a Mac and an iOS simulator platform.  Although, it should be noted that apart from version information, an iOS simulator platform should be identical to the Mac platform on a given machine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1320853</commentid>
    <comment_count>3</comment_count>
      <attachid>313333</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2017-06-19 14:48:14 -0700</bug_when>
    <thetext>Created attachment 313333
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1320952</commentid>
    <comment_count>4</comment_count>
      <attachid>313333</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2017-06-19 20:27:24 -0700</bug_when>
    <thetext>Comment on attachment 313333
Patch

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

&gt; Tools/Scripts/webkitpy/common/system/platforminfo.py:64
&gt;      def is_mac(self):
&gt; -        return self.os_name == &apos;mac&apos;
&gt; +        return self.os_name == &apos;mac&apos; or self.os_name == &apos;ios-simulator&apos;

I&apos;m confused. I was under the impression from both the description of this bug (comment #0) and the first sentence of comment #2 that we want to distinguish between the Mac and the iOS simulator platform. But PlatformInfo.is_mac() will return true for the iOS simulator platform.

How many callers would we need to update to use the Mac code path when the platform is iOS simulator  if we had this method only return true for the Mac platform?

&gt; Tools/Scripts/webkitpy/port/ios_simulator_platform.py:59
&gt; +    def __init__(self, executive, version=None):
&gt; +        version_results = executive.run_command([&apos;/usr/bin/xcodebuild&apos;, &apos;-showsdks&apos;], error_handler=lambda error: 0)
&gt; +        simulator_sdks = []
&gt; +        for line in version_results.splitlines():
&gt; +            match = IOSSimulatorPlatform.simulator_sdk_re.match(line)
&gt; +            if match:
&gt; +                simulator_sdks.append(match.group(&apos;version&apos;))
&gt; +        if version == None and simulator_sdks:
&gt; +            self._version = simulator_sdks[0]
&gt; +        elif version:
&gt; +            if version not in simulator_sdks:
&gt; +                _log.warn(&apos;{} iOS Simulator SDK is not installed&apos;.format(version))
&gt; +            self._version = version
&gt; +        else:
&gt; +            raise RuntimeError(&apos;No iOS Simulator SDK is installed&apos;)

Is it necessary to do this? I mean, the one caller you have in this patch in SimulatedDevice.__init__() passes the runtime version that was parsed from the output of &quot;xcrun simctl list&quot; as version.

&gt; Tools/Scripts/webkitpy/port/ios_simulator_platform.py:61
&gt; +    @memoized

It is unnecessary to mark this function as @memoized as we are not computing anything. We should only use @memoized when the function performs an expensive computation.

&gt; Tools/Scripts/webkitpy/port/ios_simulator_platform.py:65
&gt; +    @memoized

It is unnecessary to mark this function as @memoized because the computation is not expensive.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1321126</commentid>
    <comment_count>5</comment_count>
      <attachid>313403</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2017-06-20 09:12:54 -0700</bug_when>
    <thetext>Created attachment 313403
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1321127</commentid>
    <comment_count>6</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2017-06-20 09:15:36 -0700</bug_when>
    <thetext>There are a few existing calls to platform.is_mac().  But I have audited them, and all are either a) Used right after a SystemHost() constructor or b) In layout test setup code, before any devices have been created.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1321963</commentid>
    <comment_count>7</comment_count>
      <attachid>313403</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2017-06-22 10:46:53 -0700</bug_when>
    <thetext>Comment on attachment 313403
Patch

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

&gt; Tools/Scripts/webkitpy/common/system/platforminfo_mock.py:37
&gt; +        return self.os_name == &apos;mac&apos; or self.os_name == &apos;ios-simulator&apos;

Is this change still needed?

&gt; Tools/Scripts/webkitpy/port/ios_simulator_platform.py:1
&gt; +# Copyright (C) 2017 Apple Inc. All rights reserved.

For the classes in this file I suggest that we mimic the classes in FakeSysModule and FakePlatformModule defined in &lt;https://trac.webkit.org/browser/trunk/Tools/Scripts/webkitpy/common/system/platforminfo_unittest.py&gt; both in terms of use of the suffix &quot;Module&quot; in the name of the classes and the way they are implemented without a __init__(). The former removes the need to add comments in the code to explain how these classes will be used as substitutes for the Python standard modules. The latter makes the implementation of these classes similar to the implementation of FakeSysModule and FakePlatformModule.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1321971</commentid>
    <comment_count>8</comment_count>
      <attachid>313642</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2017-06-22 11:10:05 -0700</bug_when>
    <thetext>Created attachment 313642
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1322029</commentid>
    <comment_count>9</comment_count>
      <attachid>313642</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2017-06-22 13:31:57 -0700</bug_when>
    <thetext>Comment on attachment 313642
Patch

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

From quickly grepping the code, I see various call sites that use is_mac() that likely need to also check is_ios_simulator() in crashlogs.py, http_server_base.py, http_server.py.

&gt; Tools/Scripts/webkitpy/common/system/platforminfo.py:104
&gt; +        if self.is_mac() or self.is_ios():

Following this change this method now returns None when invoked for the iOS Simulator platform. Is this OK?

&gt; Tools/Scripts/webkitpy/common/system/platforminfo.py:140
&gt; +        if not (self.is_mac() or self.is_ios_simulator()):

Now that we can differentiate between Mac and iOS Simulator, we can limit this function to iOS Simulator:

if not  self.is_ios_simulator():
    return ()

&gt; Tools/Scripts/webkitpy/common/system/platforminfo.py:146
&gt; +        if not (self.is_mac() or self.is_ios_simulator()):

It is difficult to reason about negations. I suggest that we push the negation through this expression and write it as:

if not self.is_mac() and not self.is_ios_simulator():

&gt; Tools/Scripts/webkitpy/common/system/platforminfo.py:147
&gt;              raise NotImplementedError

I know you did not modify this code in this patch. I suggest we return an empty string instead of raising an exception as there is no way to implement this function on non Mac/iOS Simulator platforms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1322051</commentid>
    <comment_count>10</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2017-06-22 14:11:33 -0700</bug_when>
    <thetext>Dan and I discussed this in person today (6/22).  The utility this patch gives us will be easier to achieve by adding a function to ask the Mac platform what the iOS SDK.  Once that functionality is added, I will close this bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>313333</attachid>
            <date>2017-06-19 14:48:14 -0700</date>
            <delta_ts>2017-06-20 09:12:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-173107-20170619144813.patch</filename>
            <type>text/plain</type>
            <size>10044</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIxODUwOSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDQxIEBACisyMDE3LTA2LTE5ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICB3ZWJraXRweTogaU9TIFNpbXVsYXRvciB1c2VzIE1hYyBhcyBpdHMgcGxh
dGZvcm0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
MzEwNworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzI4NTYxMjU+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmlnaHQgbm93LCB3ZSBhc3N1bWUgdGhh
dCBpT1MgU2ltdWxhdG9ycyBhcmUgaWRlbnRpY2FsIHRvIE1hY3MgaW4gb3VyIHBsYXRmb3JtIAor
ICAgICAgICBjb2RlLiBUaGlzIGlzIG1vc3RseSBjb3JyZWN0LCBleGNlcHQgdGhhdCBpT1Mgc2lt
dWxhdG9ycyBzaG91bGQgcmV0dXJuIHRoZQorICAgICAgICBpT1MgdmVyc2lvbiB0aGV5IGFyZSBy
dW5uaW5nLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3BsYXRm
b3JtaW5mby5weToKKyAgICAgICAgKFBsYXRmb3JtSW5mby5fX2luaXRfXyk6IEFkZCBrbm93bGVk
Z2Ugb2YgJ2lvcy1zaW11YWx0b3InIHBvcnQuCisgICAgICAgIChQbGF0Zm9ybUluZm8uaXNfbWFj
KTogaU9TIFNpbXVsYXRvcnMgYXJlIHJ1bm5pbmcgb24gTWFjcy4KKyAgICAgICAgKFBsYXRmb3Jt
SW5mby5pc19pb3NfZGV2aWNlKTogVHJ1ZSBpZiBydW5uaW5nIG9uIGFuIGlPUyBkZXZpY2UuCisg
ICAgICAgIChQbGF0Zm9ybUluZm8uaXNfaW9zX3NpbXVsYXRvcik6IFRydWUgaWYgcnVubmluZyBv
biBhbiBpT1Mgc2ltdWxhdG9yLgorICAgICAgICAoUGxhdGZvcm1JbmZvLmlzX2lvcyk6IFRydWUg
aWYgcnVubmluZyBvbiBhbiBpT1Mgc2ltdWxhdG9yIG9yIGFuIGlPUyBkZXZpY2UuCisgICAgICAg
IChQbGF0Zm9ybUluZm8uX2RldGVybWluZV9vc19uYW1lKTogQWRkIGtub3dsZWRnZSBvZiAnaW9z
LXNpbXVhbHRvcicgcG9ydC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0
ZW0vcGxhdGZvcm1pbmZvX21vY2sucHk6CisgICAgICAgIChNb2NrUGxhdGZvcm1JbmZvLmlzX21h
Yyk6IGlPUyBTaW11bGF0b3JzIGFyZSBydW5uaW5nIG9uIE1hY3MuCisgICAgICAgIChNb2NrUGxh
dGZvcm1JbmZvLmlzX2lvc19kZXZpY2UpOiBUcnVlIGlmIHJ1bm5pbmcgb24gYW4gaU9TIGRldmlj
ZS4KKyAgICAgICAgKE1vY2tQbGF0Zm9ybUluZm8uaXNfaW9zX3NpbXVsYXRvcik6IFRydWUgaWYg
cnVubmluZyBvbiBhbiBpT1Mgc2ltdWxhdG9yLgorICAgICAgICAoTW9ja1BsYXRmb3JtSW5mby5p
c19pb3MpOiBUcnVlIGlmIHJ1bm5pbmcgb24gYW4gaU9TIHNpbXVsYXRvciBvciBhbiBpT1MgZGV2
aWNlLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC9pb3Nfc2ltdWxhdG9yX3BsYXRm
b3JtLnB5OiBBZGRlZC4KKyAgICAgICAgKElPU1NpbXVsYXRvclN5cyk6CisgICAgICAgIChJT1NT
aW11bGF0b3JTeXMuX19pbml0X18pOiBTZXQgcGxhdGZvcm0gbmFtZSBmb3IgaW9zLXNpbXVsYXRv
cgorICAgICAgICAoSU9TU2ltdWxhdG9yUGxhdGZvcm0pOgorICAgICAgICAoSU9TU2ltdWxhdG9y
UGxhdGZvcm0uX19pbml0X18pOiBVc2UgeGNvZGVidWlsZCB0byBkZXRlcm1pbmUgdGhlIGlPUyBT
REtzCisgICAgICAgIGF2YWlsYWJsZSBmb3Igc2ltdWxhdG9ycy4gU2V0IHZlcnNpb24gaWYgb25l
IGlzIHByb3ZpZGVkLCBvdGhlcndpc2UsIHVzZQorICAgICAgICB0aGUgZmlyc3QgaW9zIHNpbXVs
YXRvciBTREsuCisgICAgICAgIChJT1NTaW11bGF0b3JQbGF0Zm9ybS5yZWxlYXNlKTogUmV0dXJu
IHZlcnNpb24gc3RyaW5nLgorICAgICAgICAoSU9TU2ltdWxhdG9yUGxhdGZvcm0ucGxhdGZvcm0p
OiBDb21iaW5lIG9wZXJhdGluZyBzeXN0ZW0gbmFtZSB3aXRoIHZlcnNpb24gc3RyaW5nLgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC9pb3Nfc2ltdWxhdG9yX3VuaXR0ZXN0LnB5Ogor
ICAgICAgICAoSU9TU2ltdWxhdG9yVGVzdCk6IFJlbW92ZSBGSVhNRSBhbmQgdGVzdGluZyB3b3Jr
LWFyb3VuZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3hjb2RlL3NpbXVsYXRlZF9kZXZp
Y2UucHk6CisgICAgICAgIChTaW11bGF0ZWREZXZpY2UuX19pbml0X18pOiBDb25zdHJ1Y3QgUGxh
dGZvcm1JbmZvIGZyb20gcnVudGltZSBmb3IgU2ltdWxhdGVkRGV2aWNlLgorCiAyMDE3LTA2LTE5
ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgT3BlbmluZyBjZXJ0
YWluIG1haWxzIGJyaW5ncyB1cCBhIG1haWwgdGhhdCBncm93cyBpbmRlZmluaXRlbHkuCkluZGV4
OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vcGxhdGZvcm1pbmZvLnB5Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9wbGF0Zm9y
bWluZm8ucHkJKHJldmlzaW9uIDIxODQ5OSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29t
bW9uL3N5c3RlbS9wbGF0Zm9ybWluZm8ucHkJKHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUyLDcg
QEAgY2xhc3MgUGxhdGZvcm1JbmZvKG9iamVjdCk6CiAgICAgICAgIHNlbGYub3NfbmFtZSA9IHNl
bGYuX2RldGVybWluZV9vc19uYW1lKHN5c19tb2R1bGUucGxhdGZvcm0pCiAgICAgICAgIGlmIHNl
bGYub3NfbmFtZSA9PSAnbGludXgnOgogICAgICAgICAgICAgc2VsZi5vc192ZXJzaW9uID0gc2Vs
Zi5fZGV0ZXJtaW5lX2xpbnV4X3ZlcnNpb24oKQotICAgICAgICBpZiBzZWxmLm9zX25hbWUgPT0g
J2ZyZWVic2QnIG9yIHNlbGYub3NfbmFtZSA9PSAnb3BlbmJzZCcgb3Igc2VsZi5vc19uYW1lID09
ICduZXRic2QnIG9yIHNlbGYub3NfbmFtZSA9PSAnaW9zJzoKKyAgICAgICAgaWYgc2VsZi5vc19u
YW1lID09ICdmcmVlYnNkJyBvciBzZWxmLm9zX25hbWUgPT0gJ29wZW5ic2QnIG9yIHNlbGYub3Nf
bmFtZSA9PSAnbmV0YnNkJyBvciBzZWxmLmlzX2lvcygpOgogICAgICAgICAgICAgc2VsZi5vc192
ZXJzaW9uID0gcGxhdGZvcm1fbW9kdWxlLnJlbGVhc2UoKQogICAgICAgICBpZiBzZWxmLm9zX25h
bWUuc3RhcnRzd2l0aCgnbWFjJyk6CiAgICAgICAgICAgICBzZWxmLm9zX3ZlcnNpb24gPSBzZWxm
Ll9kZXRlcm1pbmVfbWFjX3ZlcnNpb24ocGxhdGZvcm1fbW9kdWxlLm1hY192ZXIoKVswXSkKQEAg
LTYxLDExICs2MSwxNyBAQCBjbGFzcyBQbGF0Zm9ybUluZm8ob2JqZWN0KToKICAgICAgICAgc2Vs
Zi5faXNfY3lnd2luID0gc3lzX21vZHVsZS5wbGF0Zm9ybSA9PSAnY3lnd2luJwogCiAgICAgZGVm
IGlzX21hYyhzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYub3NfbmFtZSA9PSAnbWFjJworICAg
ICAgICByZXR1cm4gc2VsZi5vc19uYW1lID09ICdtYWMnIG9yIHNlbGYub3NfbmFtZSA9PSAnaW9z
LXNpbXVsYXRvcicKIAotICAgIGRlZiBpc19pb3Moc2VsZik6CisgICAgZGVmIGlzX2lvc19kZXZp
Y2Uoc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLm9zX25hbWUgPT0gJ2lvcycKIAorICAgIGRl
ZiBpc19pb3Nfc2ltdWxhdG9yKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5vc19uYW1lID09
ICdpb3Mtc2ltdWxhdG9yJworCisgICAgZGVmIGlzX2lvcyhzZWxmKToKKyAgICAgICAgcmV0dXJu
IHNlbGYuaXNfaW9zX2RldmljZSgpIG9yIHNlbGYuaXNfaW9zX3NpbXVsYXRvcigpCisKICAgICBk
ZWYgaXNfd2luKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5vc19uYW1lID09ICd3aW4nCiAK
QEAgLTE0Niw2ICsxNTIsOCBAQCBjbGFzcyBQbGF0Zm9ybUluZm8ob2JqZWN0KToKICAgICAgICAg
ICAgIHJldHVybiAnbWFjJwogICAgICAgICBpZiBzeXNfcGxhdGZvcm0gPT0gJ2lvcyc6CiAgICAg
ICAgICAgICByZXR1cm4gJ2lvcycKKyAgICAgICAgaWYgc3lzX3BsYXRmb3JtID09ICdpb3Mtc2lt
dWxhdG9yJzoKKyAgICAgICAgICAgIHJldHVybiAnaW9zLXNpbXVsYXRvcicKICAgICAgICAgaWYg
c3lzX3BsYXRmb3JtLnN0YXJ0c3dpdGgoJ2xpbnV4Jyk6CiAgICAgICAgICAgICByZXR1cm4gJ2xp
bnV4JwogICAgICAgICBpZiBzeXNfcGxhdGZvcm0uc3RhcnRzd2l0aCgnd2luJykgb3Igc3lzX3Bs
YXRmb3JtID09ICdjeWd3aW4nOgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24v
c3lzdGVtL3BsYXRmb3JtaW5mb19tb2NrLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvY29tbW9uL3N5c3RlbS9wbGF0Zm9ybWluZm9fbW9jay5weQkocmV2aXNpb24gMjE4
NDk5KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3BsYXRmb3JtaW5m
b19tb2NrLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zNCwxMSArMzQsMTcgQEAgY2xhc3MgTW9ja1Bs
YXRmb3JtSW5mbyhvYmplY3QpOgogICAgICAgICBzZWxmLmV4cGVjdGVkX3hjb2RlX3NpbWN0bF9s
aXN0ID0gTm9uZQogCiAgICAgZGVmIGlzX21hYyhzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYu
b3NfbmFtZSA9PSAnbWFjJworICAgICAgICByZXR1cm4gc2VsZi5vc19uYW1lID09ICdtYWMnIG9y
IHNlbGYub3NfbmFtZSA9PSAnaW9zLXNpbXVsYXRvcicKIAotICAgIGRlZiBpc19pb3Moc2VsZik6
CisgICAgZGVmIGlzX2lvc19kZXZpY2Uoc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLm9zX25h
bWUgPT0gJ2lvcycKIAorICAgIGRlZiBpc19pb3Nfc2ltdWxhdG9yKHNlbGYpOgorICAgICAgICBy
ZXR1cm4gc2VsZi5vc19uYW1lID09ICdpb3Mtc2ltdWxhdG9yJworCisgICAgZGVmIGlzX2lvcyhz
ZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuaXNfaW9zX2RldmljZSgpIG9yIHNlbGYuaXNfaW9z
X3NpbXVsYXRvcigpCisKICAgICBkZWYgaXNfbGludXgoc2VsZik6CiAgICAgICAgIHJldHVybiBz
ZWxmLm9zX25hbWUgPT0gJ2xpbnV4JwogCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Bv
cnQvaW9zX3NpbXVsYXRvcl9wbGF0Zm9ybS5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3BvcnQvaW9zX3NpbXVsYXRvcl9wbGF0Zm9ybS5weQkobm9uZXhpc3RlbnQpCisr
KyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvaW9zX3NpbXVsYXRvcl9wbGF0Zm9ybS5weQko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDY3IEBACisjIENvcHlyaWdodCAoQykgMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQK
KyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisj
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisKK2ltcG9ydCBsb2dnaW5nCitpbXBvcnQgcmUKKworZnJvbSB3ZWJraXRw
eS5jb21tb24ubWVtb2l6ZWQgaW1wb3J0IG1lbW9pemVkCisKK19sb2cgPSBsb2dnaW5nLmdldExv
Z2dlcihfX25hbWVfXykKKworCisjIHN5cyBpcyBhY3R1YWxseSBhIG1vZHVsZSwgYnV0IHRyZWF0
aW5nIGl0IGxpa2UgYSBjbGFzcyBpcyBlYXNpZXIuCisjIFNpbmNlIFB5dGhvbiB1c2VzIGR1Y2sg
dHlwaW5nLCBldmVyeXRoaW5nIHdvcmtzIGZpbmUuCitjbGFzcyBJT1NTaW11bGF0b3JTeXMob2Jq
ZWN0KToKKworICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgc2VsZi5wbGF0Zm9ybSA9
ICdpb3Mtc2ltdWxhdG9yJworCisKKyMgcGxhdGZvcm0gaXMgYWN0dWFsbHkgYSBtb2R1bGUsIGJ1
dCB0cmVhdGluZyBpdCBsaWtlIGEgY2xhc3MgaXMgZWFzaWVyLgorIyBTaW5jZSBQeXRob24gdXNl
cyBkdWNrIHR5cGluZywgZXZlcnl0aGluZyB3b3JrcyBmaW5lLgorY2xhc3MgSU9TU2ltdWxhdG9y
UGxhdGZvcm0ob2JqZWN0KToKKworICAgIHNpbXVsYXRvcl9zZGtfcmUgPSByZS5jb21waWxlKCdc
cypTaW11bGF0b3IgLSBpT1MgKD9QPHZlcnNpb24+Wy4wLTldKylccyooP1A8YXJndW1lbnQ+Lisp
JykKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBleGVjdXRpdmUsIHZlcnNpb249Tm9uZSk6Cisg
ICAgICAgIHZlcnNpb25fcmVzdWx0cyA9IGV4ZWN1dGl2ZS5ydW5fY29tbWFuZChbJy91c3IvYmlu
L3hjb2RlYnVpbGQnLCAnLXNob3dzZGtzJ10sIGVycm9yX2hhbmRsZXI9bGFtYmRhIGVycm9yOiAw
KQorICAgICAgICBzaW11bGF0b3Jfc2RrcyA9IFtdCisgICAgICAgIGZvciBsaW5lIGluIHZlcnNp
b25fcmVzdWx0cy5zcGxpdGxpbmVzKCk6CisgICAgICAgICAgICBtYXRjaCA9IElPU1NpbXVsYXRv
clBsYXRmb3JtLnNpbXVsYXRvcl9zZGtfcmUubWF0Y2gobGluZSkKKyAgICAgICAgICAgIGlmIG1h
dGNoOgorICAgICAgICAgICAgICAgIHNpbXVsYXRvcl9zZGtzLmFwcGVuZChtYXRjaC5ncm91cCgn
dmVyc2lvbicpKQorICAgICAgICBpZiB2ZXJzaW9uID09IE5vbmUgYW5kIHNpbXVsYXRvcl9zZGtz
OgorICAgICAgICAgICAgc2VsZi5fdmVyc2lvbiA9IHNpbXVsYXRvcl9zZGtzWzBdCisgICAgICAg
IGVsaWYgdmVyc2lvbjoKKyAgICAgICAgICAgIGlmIHZlcnNpb24gbm90IGluIHNpbXVsYXRvcl9z
ZGtzOgorICAgICAgICAgICAgICAgIF9sb2cud2Fybigne30gaU9TIFNpbXVsYXRvciBTREsgaXMg
bm90IGluc3RhbGxlZCcuZm9ybWF0KHZlcnNpb24pKQorICAgICAgICAgICAgc2VsZi5fdmVyc2lv
biA9IHZlcnNpb24KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJv
cignTm8gaU9TIFNpbXVsYXRvciBTREsgaXMgaW5zdGFsbGVkJykKKworICAgIEBtZW1vaXplZAor
ICAgIGRlZiByZWxlYXNlKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fdmVyc2lvbgorCisg
ICAgQG1lbW9pemVkCisgICAgZGVmIHBsYXRmb3JtKHNlbGYpOgorICAgICAgICByZXR1cm4gJ1Np
bXVsYXRvciAtIGlPUyB7fScuZm9ybWF0KHNlbGYucmVsZWFzZSgpKQpJbmRleDogVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9wb3J0L2lvc19zaW11bGF0b3JfdW5pdHRlc3QucHkKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2lvc19zaW11bGF0b3JfdW5pdHRlc3QucHkJ
KHJldmlzaW9uIDIxODQ5OSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9pb3Nfc2lt
dWxhdG9yX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zMCw4ICszMCw3IEBAIGZyb20g
d2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmVfbW8KIAogCiBjbGFzcyBJT1NTaW11bGF0
b3JUZXN0KGlvc190ZXN0Y2FzZS5JT1NUZXN0KToKLSAgICAjIEZJWE1FOiBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTczMTA3Ci0gICAgb3NfbmFtZSA9ICdtYWMnCisg
ICAgb3NfbmFtZSA9ICdpb3Mtc2ltdWxhdG9yJwogICAgIG9zX3ZlcnNpb24gPSAnJwogICAgIHBv
cnRfbmFtZSA9ICdpb3Mtc2ltdWxhdG9yJwogICAgIHBvcnRfbWFrZXIgPSBJT1NTaW11bGF0b3JQ
b3J0CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3hjb2RlL3NpbXVsYXRlZF9kZXZpY2Uu
cHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS94Y29kZS9zaW11bGF0ZWRf
ZGV2aWNlLnB5CShyZXZpc2lvbiAyMTg0OTkpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3hj
b2RlL3NpbXVsYXRlZF9kZXZpY2UucHkJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDggQEAg
aW1wb3J0IHN1YnByb2Nlc3MKIAogZnJvbSB3ZWJraXRweS54Y29kZS5zaW11bGF0b3IgaW1wb3J0
IFNpbXVsYXRvcgogZnJvbSB3ZWJraXRweS5jb21tb24uaG9zdCBpbXBvcnQgSG9zdAorZnJvbSB3
ZWJraXRweS5jb21tb24uc3lzdGVtLnBsYXRmb3JtaW5mbyBpbXBvcnQgUGxhdGZvcm1JbmZvCitm
cm9tIHdlYmtpdHB5LnBvcnQuaW9zX3NpbXVsYXRvcl9wbGF0Zm9ybSBpbXBvcnQgSU9TU2ltdWxh
dG9yU3lzLCBJT1NTaW11bGF0b3JQbGF0Zm9ybQogCiBfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIo
X19uYW1lX18pCiAKQEAgLTU4LDcgKzYwLDExIEBAIGNsYXNzIFNpbXVsYXRlZERldmljZShvYmpl
Y3QpOgogICAgICAgICBzZWxmLmV4ZWN1dGl2ZSA9IGhvc3QuZXhlY3V0aXZlCiAgICAgICAgIHNl
bGYuZmlsZXN5c3RlbSA9IGhvc3QuZmlsZXN5c3RlbQogICAgICAgICBzZWxmLnVzZXIgPSBOb25l
Ci0gICAgICAgIHNlbGYucGxhdGZvcm0gPSBob3N0LnBsYXRmb3JtCisgICAgICAgIHNlbGYucGxh
dGZvcm0gPSBQbGF0Zm9ybUluZm8oCisgICAgICAgICAgICBJT1NTaW11bGF0b3JTeXMoKSwKKyAg
ICAgICAgICAgIElPU1NpbXVsYXRvclBsYXRmb3JtKHNlbGYuZXhlY3V0aXZlLCAnLicuam9pbiht
YXAoc3RyLCBydW50aW1lLnZlcnNpb24pKSksCisgICAgICAgICAgICBzZWxmLmV4ZWN1dGl2ZSwK
KyAgICAgICAgKQogICAgICAgICBzZWxmLndvcmtzcGFjZSA9IGhvc3Qud29ya3NwYWNlCiAKICAg
ICBAcHJvcGVydHkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>313403</attachid>
            <date>2017-06-20 09:12:54 -0700</date>
            <delta_ts>2017-06-22 11:10:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-173107-20170620091253.patch</filename>
            <type>text/plain</type>
            <size>11987</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIxODU5MikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDQ2IEBACisyMDE3LTA2LTIwICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICB3ZWJraXRweTogaU9TIFNpbXVsYXRvciB1c2VzIE1hYyBhcyBpdHMgcGxh
dGZvcm0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
MzEwNworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzI4NTYxMjU+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmlnaHQgbm93LCB3ZSBhc3N1bWUgdGhh
dCBpT1MgU2ltdWxhdG9ycyBhcmUgaWRlbnRpY2FsIHRvIE1hY3MgaW4gb3VyIHBsYXRmb3JtIAor
ICAgICAgICBjb2RlLiBUaGlzIGlzIG1vc3RseSBjb3JyZWN0LCBleGNlcHQgdGhhdCBpT1Mgc2lt
dWxhdG9ycyBzaG91bGQgcmV0dXJuIHRoZQorICAgICAgICBpT1MgdmVyc2lvbiB0aGV5IGFyZSBy
dW5uaW5nLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3BsYXRm
b3JtaW5mby5weToKKyAgICAgICAgKFBsYXRmb3JtSW5mby5fX2luaXRfXyk6IEFkZCBrbm93bGVk
Z2Ugb2YgJ2lvcy1zaW11YWx0b3InIHBvcnQuCisgICAgICAgIChQbGF0Zm9ybUluZm8uaXNfaW9z
X2RldmljZSk6IFRydWUgaWYgcnVubmluZyBvbiBhbiBpT1MgZGV2aWNlLgorICAgICAgICAoUGxh
dGZvcm1JbmZvLmlzX2lvc19zaW11bGF0b3IpOiBUcnVlIGlmIHJ1bm5pbmcgb24gYW4gaU9TIHNp
bXVsYXRvci4KKyAgICAgICAgKFBsYXRmb3JtSW5mby5pc19pb3MpOiBUcnVlIGlmIHJ1bm5pbmcg
b24gYW4gaU9TIHNpbXVsYXRvciBvciBhbiBpT1MgZGV2aWNlLgorICAgICAgICAoUGxhdGZvcm1J
bmZvLnRvdGFsX2J5dGVzX21lbW9yeSk6IENvbW1hbmQgZXhpc3RzIG9uIE1hYyBhbmQgaU9TLgor
ICAgICAgICAoUGxhdGZvcm1JbmZvLnhjb2RlX3Nka192ZXJzaW9uKTogWGNvZGUgZXhpc3RzIG9u
IGJvdGggTWFjIGFuZCBpT1MgU2ltdWxhdG9yLgorICAgICAgICAoUGxhdGZvcm1JbmZvLnhjb2Rl
X3NpbWN0bF9saXN0KTogRGl0dG8uCisgICAgICAgIChQbGF0Zm9ybUluZm8ueGNvZGVfdmVyc2lv
bik6IERpdHRvLgorICAgICAgICAoUGxhdGZvcm1JbmZvLl9kZXRlcm1pbmVfb3NfbmFtZSk6IEFk
ZCBrbm93bGVkZ2Ugb2YgJ2lvcy1zaW11YWx0b3InIHBvcnQuCisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS9jb21tb24vc3lzdGVtL3BsYXRmb3JtaW5mb19tb2NrLnB5OgorICAgICAgICAoTW9j
a1BsYXRmb3JtSW5mby5pc19tYWMpOiBpT1MgU2ltdWxhdG9ycyBhcmUgcnVubmluZyBvbiBNYWNz
LgorICAgICAgICAoTW9ja1BsYXRmb3JtSW5mby5pc19pb3NfZGV2aWNlKTogVHJ1ZSBpZiBydW5u
aW5nIG9uIGFuIGlPUyBkZXZpY2UuCisgICAgICAgIChNb2NrUGxhdGZvcm1JbmZvLmlzX2lvc19z
aW11bGF0b3IpOiBUcnVlIGlmIHJ1bm5pbmcgb24gYW4gaU9TIHNpbXVsYXRvci4KKyAgICAgICAg
KE1vY2tQbGF0Zm9ybUluZm8uaXNfaW9zKTogVHJ1ZSBpZiBydW5uaW5nIG9uIGFuIGlPUyBzaW11
bGF0b3Igb3IgYW4gaU9TIGRldmljZS4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQv
ZGFyd2luLnB5OgorICAgICAgICAoRGFyd2luUG9ydC5zYW1wbGVfcHJvY2Vzcyk6IEFwcGVuZCBz
dWRvIGZvciBib3RoIE1hYyBhbmQgaU9TIFNpbXVsYXRvci4KKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L3BvcnQvaW9zX3NpbXVsYXRvcl9wbGF0Zm9ybS5weTogQWRkZWQuCisgICAgICAgIChJ
T1NTaW11bGF0b3JTeXMpOgorICAgICAgICAoSU9TU2ltdWxhdG9yU3lzLl9faW5pdF9fKTogU2V0
IHBsYXRmb3JtIG5hbWUgZm9yIGlvcy1zaW11bGF0b3IKKyAgICAgICAgKElPU1NpbXVsYXRvclBs
YXRmb3JtKToKKyAgICAgICAgKElPU1NpbXVsYXRvclBsYXRmb3JtLl9faW5pdF9fKTogVXNlIHhj
b2RlYnVpbGQgdG8gZGV0ZXJtaW5lIHRoZSBpT1MgU0RLcworICAgICAgICBhdmFpbGFibGUgZm9y
IHNpbXVsYXRvcnMuIFNldCB2ZXJzaW9uIGlmIG9uZSBpcyBwcm92aWRlZCwgb3RoZXJ3aXNlLCB1
c2UKKyAgICAgICAgdGhlIGZpcnN0IGlvcyBzaW11bGF0b3IgU0RLLgorICAgICAgICAoSU9TU2lt
dWxhdG9yUGxhdGZvcm0ucmVsZWFzZSk6IFJldHVybiB2ZXJzaW9uIHN0cmluZy4KKyAgICAgICAg
KElPU1NpbXVsYXRvclBsYXRmb3JtLnBsYXRmb3JtKTogQ29tYmluZSBvcGVyYXRpbmcgc3lzdGVt
IG5hbWUgd2l0aCB2ZXJzaW9uIHN0cmluZy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Bv
cnQvaW9zX3NpbXVsYXRvcl91bml0dGVzdC5weToKKyAgICAgICAgKElPU1NpbXVsYXRvclRlc3Qp
OiBSZW1vdmUgRklYTUUgYW5kIHRlc3Rpbmcgd29yay1hcm91bmQuCisgICAgICAgICogU2NyaXB0
cy93ZWJraXRweS94Y29kZS9zaW11bGF0ZWRfZGV2aWNlLnB5OgorICAgICAgICAoU2ltdWxhdGVk
RGV2aWNlLl9faW5pdF9fKTogQ29uc3RydWN0IFBsYXRmb3JtSW5mbyBmcm9tIHJ1bnRpbWUgZm9y
IFNpbXVsYXRlZERldmljZS4KKwogMjAxNy0wNi0yMCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hz
aWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TIERuRF0gW1dLMl0gUmVtb3ZlIGN1c3RvbSBs
b2dpYyBmb3IgZGlzYW1iaWd1YXRpbmcgbG9uZyBwcmVzcyBhY3Rpb24gc2hlZXQgZ2VzdHVyZXMg
YW5kIGRyYWcgbGlmdApJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVt
L3BsYXRmb3JtaW5mby5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2Nv
bW1vbi9zeXN0ZW0vcGxhdGZvcm1pbmZvLnB5CShyZXZpc2lvbiAyMTg0OTkpCisrKyBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vcGxhdGZvcm1pbmZvLnB5CSh3b3JraW5nIGNv
cHkpCkBAIC01Miw3ICs1Miw3IEBAIGNsYXNzIFBsYXRmb3JtSW5mbyhvYmplY3QpOgogICAgICAg
ICBzZWxmLm9zX25hbWUgPSBzZWxmLl9kZXRlcm1pbmVfb3NfbmFtZShzeXNfbW9kdWxlLnBsYXRm
b3JtKQogICAgICAgICBpZiBzZWxmLm9zX25hbWUgPT0gJ2xpbnV4JzoKICAgICAgICAgICAgIHNl
bGYub3NfdmVyc2lvbiA9IHNlbGYuX2RldGVybWluZV9saW51eF92ZXJzaW9uKCkKLSAgICAgICAg
aWYgc2VsZi5vc19uYW1lID09ICdmcmVlYnNkJyBvciBzZWxmLm9zX25hbWUgPT0gJ29wZW5ic2Qn
IG9yIHNlbGYub3NfbmFtZSA9PSAnbmV0YnNkJyBvciBzZWxmLm9zX25hbWUgPT0gJ2lvcyc6Cisg
ICAgICAgIGlmIHNlbGYub3NfbmFtZSA9PSAnZnJlZWJzZCcgb3Igc2VsZi5vc19uYW1lID09ICdv
cGVuYnNkJyBvciBzZWxmLm9zX25hbWUgPT0gJ25ldGJzZCcgb3Igc2VsZi5pc19pb3MoKToKICAg
ICAgICAgICAgIHNlbGYub3NfdmVyc2lvbiA9IHBsYXRmb3JtX21vZHVsZS5yZWxlYXNlKCkKICAg
ICAgICAgaWYgc2VsZi5vc19uYW1lLnN0YXJ0c3dpdGgoJ21hYycpOgogICAgICAgICAgICAgc2Vs
Zi5vc192ZXJzaW9uID0gc2VsZi5fZGV0ZXJtaW5lX21hY192ZXJzaW9uKHBsYXRmb3JtX21vZHVs
ZS5tYWNfdmVyKClbMF0pCkBAIC02Myw5ICs2MywxNSBAQCBjbGFzcyBQbGF0Zm9ybUluZm8ob2Jq
ZWN0KToKICAgICBkZWYgaXNfbWFjKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5vc19uYW1l
ID09ICdtYWMnCiAKLSAgICBkZWYgaXNfaW9zKHNlbGYpOgorICAgIGRlZiBpc19pb3NfZGV2aWNl
KHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5vc19uYW1lID09ICdpb3MnCiAKKyAgICBkZWYg
aXNfaW9zX3NpbXVsYXRvcihzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYub3NfbmFtZSA9PSAn
aW9zLXNpbXVsYXRvcicKKworICAgIGRlZiBpc19pb3Moc2VsZik6CisgICAgICAgIHJldHVybiBz
ZWxmLmlzX2lvc19kZXZpY2UoKSBvciBzZWxmLmlzX2lvc19zaW11bGF0b3IoKQorCiAgICAgZGVm
IGlzX3dpbihzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYub3NfbmFtZSA9PSAnd2luJwogCkBA
IC05NSw3ICsxMDEsNyBAQCBjbGFzcyBQbGF0Zm9ybUluZm8ob2JqZWN0KToKICAgICAgICAgcmV0
dXJuIHNlbGYuX3BsYXRmb3JtX21vZHVsZS5wbGF0Zm9ybSgpCiAKICAgICBkZWYgdG90YWxfYnl0
ZXNfbWVtb3J5KHNlbGYpOgotICAgICAgICBpZiBzZWxmLmlzX21hYygpOgorICAgICAgICBpZiBz
ZWxmLmlzX21hYygpIG9yIHNlbGYuaXNfaW9zKCk6CiAgICAgICAgICAgICByZXR1cm4gbG9uZyhz
ZWxmLl9leGVjdXRpdmUucnVuX2NvbW1hbmQoWyJzeXNjdGwiLCAiLW4iLCAiaHcubWVtc2l6ZSJd
KSkKICAgICAgICAgcmV0dXJuIE5vbmUKIApAQCAtMTI1LDE5ICsxMzEsMTkgQEAgY2xhc3MgUGxh
dGZvcm1JbmZvKG9iamVjdCk6CiAgICAgICAgICAgICByZXR1cm4gc3lzLm1heGludAogCiAgICAg
ZGVmIHhjb2RlX3Nka192ZXJzaW9uKHNlbGYsIHNka19uYW1lKToKLSAgICAgICAgaWYgc2VsZi5p
c19tYWMoKToKKyAgICAgICAgaWYgc2VsZi5pc19tYWMoKSBvciBzZWxmLmlzX2lvc19zaW11bGF0
b3IoKToKICAgICAgICAgICAgICMgQXNzdW1lcyB0aGF0IHhjcnVuIGRvZXMgbm90IHdyaXRlIHRv
IHN0YW5kYXJkIG91dHB1dCBvbiBmYWlsdXJlIChlLmcuIFNESyBkb2VzIG5vdCBleGlzdCkuCiAg
ICAgICAgICAgICByZXR1cm4gc2VsZi5fZXhlY3V0aXZlLnJ1bl9jb21tYW5kKFsieGNydW4iLCAi
LS1zZGsiLCBzZGtfbmFtZSwgIi0tc2hvdy1zZGstdmVyc2lvbiJdLCByZXR1cm5fc3RkZXJyPUZh
bHNlLCBlcnJvcl9oYW5kbGVyPUV4ZWN1dGl2ZS5pZ25vcmVfZXJyb3IpLnJzdHJpcCgpCiAgICAg
ICAgIHJldHVybiAnJwogCiAgICAgZGVmIHhjb2RlX3NpbWN0bF9saXN0KHNlbGYpOgotICAgICAg
ICBpZiBub3Qgc2VsZi5pc19tYWMoKToKKyAgICAgICAgaWYgbm90IChzZWxmLmlzX21hYygpIG9y
IHNlbGYuaXNfaW9zX3NpbXVsYXRvcigpKToKICAgICAgICAgICAgIHJldHVybiAoKQogICAgICAg
ICBvdXRwdXQgPSBzZWxmLl9leGVjdXRpdmUucnVuX2NvbW1hbmQoWyd4Y3J1bicsICdzaW1jdGwn
LCAnbGlzdCddLCByZXR1cm5fc3RkZXJyPUZhbHNlKQogICAgICAgICByZXR1cm4gKGxpbmUgZm9y
IGxpbmUgaW4gb3V0cHV0LnNwbGl0bGluZXMoKSkKIAogICAgIGRlZiB4Y29kZV92ZXJzaW9uKHNl
bGYpOgotICAgICAgICBpZiBub3Qgc2VsZi5pc19tYWMoKToKKyAgICAgICAgaWYgbm90IChzZWxm
LmlzX21hYygpIG9yIHNlbGYuaXNfaW9zX3NpbXVsYXRvcigpKToKICAgICAgICAgICAgIHJhaXNl
IE5vdEltcGxlbWVudGVkRXJyb3IKICAgICAgICAgcmV0dXJuIHNlbGYuX2V4ZWN1dGl2ZS5ydW5f
Y29tbWFuZChbJ3hjb2RlYnVpbGQnLCAnLXZlcnNpb24nXSkuc3BsaXQoKVsxXQogCkBAIC0xNDYs
NiArMTUyLDggQEAgY2xhc3MgUGxhdGZvcm1JbmZvKG9iamVjdCk6CiAgICAgICAgICAgICByZXR1
cm4gJ21hYycKICAgICAgICAgaWYgc3lzX3BsYXRmb3JtID09ICdpb3MnOgogICAgICAgICAgICAg
cmV0dXJuICdpb3MnCisgICAgICAgIGlmIHN5c19wbGF0Zm9ybSA9PSAnaW9zLXNpbXVsYXRvcic6
CisgICAgICAgICAgICByZXR1cm4gJ2lvcy1zaW11bGF0b3InCiAgICAgICAgIGlmIHN5c19wbGF0
Zm9ybS5zdGFydHN3aXRoKCdsaW51eCcpOgogICAgICAgICAgICAgcmV0dXJuICdsaW51eCcKICAg
ICAgICAgaWYgc3lzX3BsYXRmb3JtLnN0YXJ0c3dpdGgoJ3dpbicpIG9yIHN5c19wbGF0Zm9ybSA9
PSAnY3lnd2luJzoKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9w
bGF0Zm9ybWluZm9fbW9jay5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9zeXN0ZW0vcGxhdGZvcm1pbmZvX21vY2sucHkJKHJldmlzaW9uIDIxODQ5OSkKKysr
IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9wbGF0Zm9ybWluZm9fbW9jay5w
eQkod29ya2luZyBjb3B5KQpAQCAtMzQsMTEgKzM0LDE3IEBAIGNsYXNzIE1vY2tQbGF0Zm9ybUlu
Zm8ob2JqZWN0KToKICAgICAgICAgc2VsZi5leHBlY3RlZF94Y29kZV9zaW1jdGxfbGlzdCA9IE5v
bmUKIAogICAgIGRlZiBpc19tYWMoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLm9zX25hbWUg
PT0gJ21hYycKKyAgICAgICAgcmV0dXJuIHNlbGYub3NfbmFtZSA9PSAnbWFjJyBvciBzZWxmLm9z
X25hbWUgPT0gJ2lvcy1zaW11bGF0b3InCiAKLSAgICBkZWYgaXNfaW9zKHNlbGYpOgorICAgIGRl
ZiBpc19pb3NfZGV2aWNlKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5vc19uYW1lID09ICdp
b3MnCiAKKyAgICBkZWYgaXNfaW9zX3NpbXVsYXRvcihzZWxmKToKKyAgICAgICAgcmV0dXJuIHNl
bGYub3NfbmFtZSA9PSAnaW9zLXNpbXVsYXRvcicKKworICAgIGRlZiBpc19pb3Moc2VsZik6Cisg
ICAgICAgIHJldHVybiBzZWxmLmlzX2lvc19kZXZpY2UoKSBvciBzZWxmLmlzX2lvc19zaW11bGF0
b3IoKQorCiAgICAgZGVmIGlzX2xpbnV4KHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5vc19u
YW1lID09ICdsaW51eCcKIApJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2Rhcndp
bi5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvZGFyd2luLnB5
CShyZXZpc2lvbiAyMTg0OTkpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvZGFyd2lu
LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xNjIsNyArMTYyLDcgQEAgY2xhc3MgRGFyd2luUG9ydChB
cHBsZVBvcnQpOgogICAgICAgICAgICAgJy1maWxlJywKICAgICAgICAgICAgIERhcndpblBvcnQu
c3BpbmR1bXBfZmlsZV9wYXRoKGhvc3QsIG5hbWUsIHBpZCwgc3RyKHRlbXBkaXIpKSwKICAgICAg
ICAgXQotICAgICAgICBpZiBzZWxmLmhvc3QucGxhdGZvcm0uaXNfbWFjKCk6CisgICAgICAgIGlm
IHNlbGYuaG9zdC5wbGF0Zm9ybS5pc19tYWMoKSBvciBzZWxmLmhvc3QucGxhdGZvcm0uaXNfaW9z
X3NpbXVsYXRvcigpOgogICAgICAgICAgICAgY29tbWFuZCA9IFsnL3Vzci9iaW4vc3VkbycsICct
biddICsgY29tbWFuZAogICAgICAgICBleGl0X3N0YXR1cyA9IGhvc3QuZXhlY3V0aXZlLnJ1bl9j
b21tYW5kKGNvbW1hbmQsIHJldHVybl9leGl0X2NvZGU9VHJ1ZSkKICAgICAgICAgaWYgZXhpdF9z
dGF0dXM6CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvaW9zX3NpbXVsYXRvcl9w
bGF0Zm9ybS5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvaW9z
X3NpbXVsYXRvcl9wbGF0Zm9ybS5weQkobm9uZXhpc3RlbnQpCisrKyBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L3BvcnQvaW9zX3NpbXVsYXRvcl9wbGF0Zm9ybS5weQkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDU5IEBACisjIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyMgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN
UExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2lt
cG9ydCBsb2dnaW5nCitpbXBvcnQgcmUKKworX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFt
ZV9fKQorCisKKyMgc3lzIGlzIGFjdHVhbGx5IGEgbW9kdWxlLCBidXQgdHJlYXRpbmcgaXQgbGlr
ZSBhIGNsYXNzIGlzIGVhc2llci4KKyMgU2luY2UgUHl0aG9uIHVzZXMgZHVjayB0eXBpbmcsIGV2
ZXJ5dGhpbmcgd29ya3MgZmluZS4KK2NsYXNzIElPU1NpbXVsYXRvclN5cyhvYmplY3QpOgorCisg
ICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICBzZWxmLnBsYXRmb3JtID0gJ2lvcy1zaW11
bGF0b3InCisKKworIyBwbGF0Zm9ybSBpcyBhY3R1YWxseSBhIG1vZHVsZSwgYnV0IHRyZWF0aW5n
IGl0IGxpa2UgYSBjbGFzcyBpcyBlYXNpZXIuCisjIFNpbmNlIFB5dGhvbiB1c2VzIGR1Y2sgdHlw
aW5nLCBldmVyeXRoaW5nIHdvcmtzIGZpbmUuCitjbGFzcyBJT1NTaW11bGF0b3JQbGF0Zm9ybShv
YmplY3QpOgorCisgICAgc2ltdWxhdG9yX3Nka19yZSA9IHJlLmNvbXBpbGUoJ1xzKlNpbXVsYXRv
ciAtIGlPUyAoP1A8dmVyc2lvbj5bLjAtOV0rKVxzKig/UDxhcmd1bWVudD4uKyknKQorCisgICAg
ZGVmIF9faW5pdF9fKHNlbGYsIGV4ZWN1dGl2ZSwgdmVyc2lvbj1Ob25lKToKKyAgICAgICAgaWYg
dmVyc2lvbjoKKyAgICAgICAgICAgIHNlbGYuX3ZlcnNpb24gPSB2ZXJzaW9uCisgICAgICAgICAg
ICByZXR1cm4KKyAgICAgICAgdmVyc2lvbl9yZXN1bHRzID0gZXhlY3V0aXZlLnJ1bl9jb21tYW5k
KFsnL3Vzci9iaW4veGNvZGVidWlsZCcsICctc2hvd3Nka3MnXSwgZXJyb3JfaGFuZGxlcj1sYW1i
ZGEgZXJyb3I6IDApCisgICAgICAgIGZvciBsaW5lIGluIHZlcnNpb25fcmVzdWx0cy5zcGxpdGxp
bmVzKCk6CisgICAgICAgICAgICBtYXRjaCA9IElPU1NpbXVsYXRvclBsYXRmb3JtLnNpbXVsYXRv
cl9zZGtfcmUubWF0Y2gobGluZSkKKyAgICAgICAgICAgIGlmIG1hdGNoOgorICAgICAgICAgICAg
ICAgIHNlbGYuX3ZlcnNpb24gPSBtYXRjaC5ncm91cCgndmVyc2lvbicpCisgICAgICAgICAgICAg
ICAgcmFpc2UKKyAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdObyBpT1MgU2ltdWxhdG9yIFNE
SyBpcyBpbnN0YWxsZWQnKQorCisgICAgZGVmIHJlbGVhc2Uoc2VsZik6CisgICAgICAgIHJldHVy
biBzZWxmLl92ZXJzaW9uCisKKyAgICBkZWYgcGxhdGZvcm0oc2VsZik6CisgICAgICAgIHJldHVy
biAnU2ltdWxhdG9yIC0gaU9TIHt9Jy5mb3JtYXQoc2VsZi5yZWxlYXNlKCkpCkluZGV4OiBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvaW9zX3NpbXVsYXRvcl91bml0dGVzdC5weQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvaW9zX3NpbXVsYXRvcl91bml0dGVz
dC5weQkocmV2aXNpb24gMjE4NDk5KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2lv
c19zaW11bGF0b3JfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTMwLDggKzMwLDcgQEAg
ZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZV9tbwogCiAKIGNsYXNzIElPU1Np
bXVsYXRvclRlc3QoaW9zX3Rlc3RjYXNlLklPU1Rlc3QpOgotICAgICMgRklYTUU6IGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzMxMDcKLSAgICBvc19uYW1lID0gJ21h
YycKKyAgICBvc19uYW1lID0gJ2lvcy1zaW11bGF0b3InCiAgICAgb3NfdmVyc2lvbiA9ICcnCiAg
ICAgcG9ydF9uYW1lID0gJ2lvcy1zaW11bGF0b3InCiAgICAgcG9ydF9tYWtlciA9IElPU1NpbXVs
YXRvclBvcnQKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkveGNvZGUvc2ltdWxhdGVkX2Rl
dmljZS5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3hjb2RlL3NpbXVs
YXRlZF9kZXZpY2UucHkJKHJldmlzaW9uIDIxODQ5OSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkveGNvZGUvc2ltdWxhdGVkX2RldmljZS5weQkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcs
OCBAQCBpbXBvcnQgc3VicHJvY2VzcwogCiBmcm9tIHdlYmtpdHB5Lnhjb2RlLnNpbXVsYXRvciBp
bXBvcnQgU2ltdWxhdG9yCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5ob3N0IGltcG9ydCBIb3N0Citm
cm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ucGxhdGZvcm1pbmZvIGltcG9ydCBQbGF0Zm9ybUlu
Zm8KK2Zyb20gd2Via2l0cHkucG9ydC5pb3Nfc2ltdWxhdG9yX3BsYXRmb3JtIGltcG9ydCBJT1NT
aW11bGF0b3JTeXMsIElPU1NpbXVsYXRvclBsYXRmb3JtCiAKIF9sb2cgPSBsb2dnaW5nLmdldExv
Z2dlcihfX25hbWVfXykKIApAQCAtNTgsNyArNjAsMTEgQEAgY2xhc3MgU2ltdWxhdGVkRGV2aWNl
KG9iamVjdCk6CiAgICAgICAgIHNlbGYuZXhlY3V0aXZlID0gaG9zdC5leGVjdXRpdmUKICAgICAg
ICAgc2VsZi5maWxlc3lzdGVtID0gaG9zdC5maWxlc3lzdGVtCiAgICAgICAgIHNlbGYudXNlciA9
IE5vbmUKLSAgICAgICAgc2VsZi5wbGF0Zm9ybSA9IGhvc3QucGxhdGZvcm0KKyAgICAgICAgc2Vs
Zi5wbGF0Zm9ybSA9IFBsYXRmb3JtSW5mbygKKyAgICAgICAgICAgIElPU1NpbXVsYXRvclN5cygp
LAorICAgICAgICAgICAgSU9TU2ltdWxhdG9yUGxhdGZvcm0oc2VsZi5leGVjdXRpdmUsICcuJy5q
b2luKG1hcChzdHIsIHJ1bnRpbWUudmVyc2lvbikpKSwKKyAgICAgICAgICAgIHNlbGYuZXhlY3V0
aXZlLAorICAgICAgICApCiAgICAgICAgIHNlbGYud29ya3NwYWNlID0gaG9zdC53b3Jrc3BhY2UK
IAogICAgIEBwcm9wZXJ0eQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>313642</attachid>
            <date>2017-06-22 11:10:05 -0700</date>
            <delta_ts>2017-06-22 14:11:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-173107-20170622111004.patch</filename>
            <type>text/plain</type>
            <size>10776</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIxODcwNSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDQ0IEBACisyMDE3LTA2LTIyICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICB3ZWJraXRweTogaU9TIFNpbXVsYXRvciB1c2VzIE1hYyBhcyBpdHMgcGxh
dGZvcm0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
MzEwNworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzI4NTYxMjU+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmlnaHQgbm93LCB3ZSBhc3N1bWUgdGhh
dCBpT1MgU2ltdWxhdG9ycyBhcmUgaWRlbnRpY2FsIHRvIE1hY3MgaW4gb3VyIHBsYXRmb3JtIAor
ICAgICAgICBjb2RlLiBUaGlzIGlzIG1vc3RseSBjb3JyZWN0LCBleGNlcHQgdGhhdCBpT1Mgc2lt
dWxhdG9ycyBzaG91bGQgcmV0dXJuIHRoZQorICAgICAgICBpT1MgdmVyc2lvbiB0aGV5IGFyZSBy
dW5uaW5nLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3BsYXRm
b3JtaW5mby5weToKKyAgICAgICAgKFBsYXRmb3JtSW5mby5fX2luaXRfXyk6IEFkZCBrbm93bGVk
Z2Ugb2YgJ2lvcy1zaW11YWx0b3InIHBvcnQuCisgICAgICAgIChQbGF0Zm9ybUluZm8uaXNfaW9z
X2RldmljZSk6IFRydWUgaWYgcnVubmluZyBvbiBhbiBpT1MgZGV2aWNlLgorICAgICAgICAoUGxh
dGZvcm1JbmZvLmlzX2lvc19zaW11bGF0b3IpOiBUcnVlIGlmIHJ1bm5pbmcgb24gYW4gaU9TIHNp
bXVsYXRvci4KKyAgICAgICAgKFBsYXRmb3JtSW5mby5pc19pb3MpOiBUcnVlIGlmIHJ1bm5pbmcg
b24gYW4gaU9TIHNpbXVsYXRvciBvciBhbiBpT1MgZGV2aWNlLgorICAgICAgICAoUGxhdGZvcm1J
bmZvLnRvdGFsX2J5dGVzX21lbW9yeSk6IENvbW1hbmQgZXhpc3RzIG9uIE1hYyBhbmQgaU9TLgor
ICAgICAgICAoUGxhdGZvcm1JbmZvLnhjb2RlX3Nka192ZXJzaW9uKTogWGNvZGUgZXhpc3RzIG9u
IGJvdGggTWFjIGFuZCBpT1MgU2ltdWxhdG9yLgorICAgICAgICAoUGxhdGZvcm1JbmZvLnhjb2Rl
X3NpbWN0bF9saXN0KTogRGl0dG8uCisgICAgICAgIChQbGF0Zm9ybUluZm8ueGNvZGVfdmVyc2lv
bik6IERpdHRvLgorICAgICAgICAoUGxhdGZvcm1JbmZvLl9kZXRlcm1pbmVfb3NfbmFtZSk6IEFk
ZCBrbm93bGVkZ2Ugb2YgJ2lvcy1zaW11YWx0b3InIHBvcnQuCisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS9jb21tb24vc3lzdGVtL3BsYXRmb3JtaW5mb19tb2NrLnB5OgorICAgICAgICAoTW9j
a1BsYXRmb3JtSW5mby5pc19tYWMpOiBpT1MgU2ltdWxhdG9ycyBhcmUgcnVubmluZyBvbiBNYWNz
LgorICAgICAgICAoTW9ja1BsYXRmb3JtSW5mby5pc19pb3NfZGV2aWNlKTogVHJ1ZSBpZiBydW5u
aW5nIG9uIGFuIGlPUyBkZXZpY2UuCisgICAgICAgIChNb2NrUGxhdGZvcm1JbmZvLmlzX2lvc19z
aW11bGF0b3IpOiBUcnVlIGlmIHJ1bm5pbmcgb24gYW4gaU9TIHNpbXVsYXRvci4KKyAgICAgICAg
KE1vY2tQbGF0Zm9ybUluZm8uaXNfaW9zKTogVHJ1ZSBpZiBydW5uaW5nIG9uIGFuIGlPUyBzaW11
bGF0b3Igb3IgYW4gaU9TIGRldmljZS4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQv
ZGFyd2luLnB5OgorICAgICAgICAoRGFyd2luUG9ydC5zYW1wbGVfcHJvY2Vzcyk6IEFwcGVuZCBz
dWRvIGZvciBib3RoIE1hYyBhbmQgaU9TIFNpbXVsYXRvci4KKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L3BvcnQvaW9zX3NpbXVsYXRvcl9wbGF0Zm9ybS5weTogQWRkZWQuCisgICAgICAgIChJ
T1NTaW11bGF0b3JTeXNNb2R1bGUpOgorICAgICAgICAoSU9TU2ltdWxhdG9yU3lzTW9kdWxlLl9f
aW5pdF9fKTogU2V0IHBsYXRmb3JtIG5hbWUgZm9yIGlvcy1zaW11bGF0b3IKKyAgICAgICAgKElP
U1NpbXVsYXRvclBsYXRmb3JtTW9kdWxlKToKKyAgICAgICAgKElPU1NpbXVsYXRvclBsYXRmb3Jt
TW9kdWxlLl9faW5pdF9fKTogQ29uc3RydWN0IHdpdGggdmVyc2lvbiBzdHJpbmcuCisgICAgICAg
IChJT1NTaW11bGF0b3JQbGF0Zm9ybS5yZWxlYXNlKTogUmV0dXJuIHZlcnNpb24gc3RyaW5nLgor
ICAgICAgICAoSU9TU2ltdWxhdG9yUGxhdGZvcm0ucGxhdGZvcm0pOiBDb21iaW5lIG9wZXJhdGlu
ZyBzeXN0ZW0gbmFtZSB3aXRoIHZlcnNpb24gc3RyaW5nLgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvcG9ydC9pb3Nfc2ltdWxhdG9yX3VuaXR0ZXN0LnB5OgorICAgICAgICAoSU9TU2ltdWxh
dG9yVGVzdCk6IFJlbW92ZSBGSVhNRSBhbmQgdGVzdGluZyB3b3JrLWFyb3VuZC4KKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L3hjb2RlL3NpbXVsYXRlZF9kZXZpY2UucHk6CisgICAgICAgIChT
aW11bGF0ZWREZXZpY2UuX19pbml0X18pOiBDb25zdHJ1Y3QgUGxhdGZvcm1JbmZvIGZyb20gcnVu
dGltZSBmb3IgU2ltdWxhdGVkRGV2aWNlLgorCiAyMDE3LTA2LTIyICBNYXR0IExld2lzICA8amxl
d2lzM0BhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIxODYz
My4KSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9wbGF0Zm9ybWlu
Zm8ucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVt
L3BsYXRmb3JtaW5mby5weQkocmV2aXNpb24gMjE4NzA1KQorKysgVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9jb21tb24vc3lzdGVtL3BsYXRmb3JtaW5mby5weQkod29ya2luZyBjb3B5KQpAQCAtNTIs
NyArNTIsNyBAQCBjbGFzcyBQbGF0Zm9ybUluZm8ob2JqZWN0KToKICAgICAgICAgc2VsZi5vc19u
YW1lID0gc2VsZi5fZGV0ZXJtaW5lX29zX25hbWUoc3lzX21vZHVsZS5wbGF0Zm9ybSkKICAgICAg
ICAgaWYgc2VsZi5vc19uYW1lID09ICdsaW51eCc6CiAgICAgICAgICAgICBzZWxmLm9zX3ZlcnNp
b24gPSBzZWxmLl9kZXRlcm1pbmVfbGludXhfdmVyc2lvbigpCi0gICAgICAgIGlmIHNlbGYub3Nf
bmFtZSA9PSAnZnJlZWJzZCcgb3Igc2VsZi5vc19uYW1lID09ICdvcGVuYnNkJyBvciBzZWxmLm9z
X25hbWUgPT0gJ25ldGJzZCcgb3Igc2VsZi5vc19uYW1lID09ICdpb3MnOgorICAgICAgICBpZiBz
ZWxmLm9zX25hbWUgPT0gJ2ZyZWVic2QnIG9yIHNlbGYub3NfbmFtZSA9PSAnb3BlbmJzZCcgb3Ig
c2VsZi5vc19uYW1lID09ICduZXRic2QnIG9yIHNlbGYuaXNfaW9zKCk6CiAgICAgICAgICAgICBz
ZWxmLm9zX3ZlcnNpb24gPSBwbGF0Zm9ybV9tb2R1bGUucmVsZWFzZSgpCiAgICAgICAgIGlmIHNl
bGYub3NfbmFtZS5zdGFydHN3aXRoKCdtYWMnKToKICAgICAgICAgICAgIHNlbGYub3NfdmVyc2lv
biA9IHNlbGYuX2RldGVybWluZV9tYWNfdmVyc2lvbihwbGF0Zm9ybV9tb2R1bGUubWFjX3Zlcigp
WzBdKQpAQCAtNjMsOSArNjMsMTUgQEAgY2xhc3MgUGxhdGZvcm1JbmZvKG9iamVjdCk6CiAgICAg
ZGVmIGlzX21hYyhzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYub3NfbmFtZSA9PSAnbWFjJwog
Ci0gICAgZGVmIGlzX2lvcyhzZWxmKToKKyAgICBkZWYgaXNfaW9zX2RldmljZShzZWxmKToKICAg
ICAgICAgcmV0dXJuIHNlbGYub3NfbmFtZSA9PSAnaW9zJwogCisgICAgZGVmIGlzX2lvc19zaW11
bGF0b3Ioc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLm9zX25hbWUgPT0gJ2lvcy1zaW11bGF0
b3InCisKKyAgICBkZWYgaXNfaW9zKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5pc19pb3Nf
ZGV2aWNlKCkgb3Igc2VsZi5pc19pb3Nfc2ltdWxhdG9yKCkKKwogICAgIGRlZiBpc193aW4oc2Vs
Zik6CiAgICAgICAgIHJldHVybiBzZWxmLm9zX25hbWUgPT0gJ3dpbicKIApAQCAtOTUsNyArMTAx
LDcgQEAgY2xhc3MgUGxhdGZvcm1JbmZvKG9iamVjdCk6CiAgICAgICAgIHJldHVybiBzZWxmLl9w
bGF0Zm9ybV9tb2R1bGUucGxhdGZvcm0oKQogCiAgICAgZGVmIHRvdGFsX2J5dGVzX21lbW9yeShz
ZWxmKToKLSAgICAgICAgaWYgc2VsZi5pc19tYWMoKToKKyAgICAgICAgaWYgc2VsZi5pc19tYWMo
KSBvciBzZWxmLmlzX2lvcygpOgogICAgICAgICAgICAgcmV0dXJuIGxvbmcoc2VsZi5fZXhlY3V0
aXZlLnJ1bl9jb21tYW5kKFsic3lzY3RsIiwgIi1uIiwgImh3Lm1lbXNpemUiXSkpCiAgICAgICAg
IHJldHVybiBOb25lCiAKQEAgLTEyNSwxOSArMTMxLDE5IEBAIGNsYXNzIFBsYXRmb3JtSW5mbyhv
YmplY3QpOgogICAgICAgICAgICAgcmV0dXJuIHN5cy5tYXhpbnQKIAogICAgIGRlZiB4Y29kZV9z
ZGtfdmVyc2lvbihzZWxmLCBzZGtfbmFtZSk6Ci0gICAgICAgIGlmIHNlbGYuaXNfbWFjKCk6Cisg
ICAgICAgIGlmIHNlbGYuaXNfbWFjKCkgb3Igc2VsZi5pc19pb3Nfc2ltdWxhdG9yKCk6CiAgICAg
ICAgICAgICAjIEFzc3VtZXMgdGhhdCB4Y3J1biBkb2VzIG5vdCB3cml0ZSB0byBzdGFuZGFyZCBv
dXRwdXQgb24gZmFpbHVyZSAoZS5nLiBTREsgZG9lcyBub3QgZXhpc3QpLgogICAgICAgICAgICAg
cmV0dXJuIHNlbGYuX2V4ZWN1dGl2ZS5ydW5fY29tbWFuZChbInhjcnVuIiwgIi0tc2RrIiwgc2Rr
X25hbWUsICItLXNob3ctc2RrLXZlcnNpb24iXSwgcmV0dXJuX3N0ZGVycj1GYWxzZSwgZXJyb3Jf
aGFuZGxlcj1FeGVjdXRpdmUuaWdub3JlX2Vycm9yKS5yc3RyaXAoKQogICAgICAgICByZXR1cm4g
JycKIAogICAgIGRlZiB4Y29kZV9zaW1jdGxfbGlzdChzZWxmKToKLSAgICAgICAgaWYgbm90IHNl
bGYuaXNfbWFjKCk6CisgICAgICAgIGlmIG5vdCAoc2VsZi5pc19tYWMoKSBvciBzZWxmLmlzX2lv
c19zaW11bGF0b3IoKSk6CiAgICAgICAgICAgICByZXR1cm4gKCkKICAgICAgICAgb3V0cHV0ID0g
c2VsZi5fZXhlY3V0aXZlLnJ1bl9jb21tYW5kKFsneGNydW4nLCAnc2ltY3RsJywgJ2xpc3QnXSwg
cmV0dXJuX3N0ZGVycj1GYWxzZSkKICAgICAgICAgcmV0dXJuIChsaW5lIGZvciBsaW5lIGluIG91
dHB1dC5zcGxpdGxpbmVzKCkpCiAKICAgICBkZWYgeGNvZGVfdmVyc2lvbihzZWxmKToKLSAgICAg
ICAgaWYgbm90IHNlbGYuaXNfbWFjKCk6CisgICAgICAgIGlmIG5vdCAoc2VsZi5pc19tYWMoKSBv
ciBzZWxmLmlzX2lvc19zaW11bGF0b3IoKSk6CiAgICAgICAgICAgICByYWlzZSBOb3RJbXBsZW1l
bnRlZEVycm9yCiAgICAgICAgIHJldHVybiBzZWxmLl9leGVjdXRpdmUucnVuX2NvbW1hbmQoWyd4
Y29kZWJ1aWxkJywgJy12ZXJzaW9uJ10pLnNwbGl0KClbMV0KIApAQCAtMTQ2LDYgKzE1Miw4IEBA
IGNsYXNzIFBsYXRmb3JtSW5mbyhvYmplY3QpOgogICAgICAgICAgICAgcmV0dXJuICdtYWMnCiAg
ICAgICAgIGlmIHN5c19wbGF0Zm9ybSA9PSAnaW9zJzoKICAgICAgICAgICAgIHJldHVybiAnaW9z
JworICAgICAgICBpZiBzeXNfcGxhdGZvcm0gPT0gJ2lvcy1zaW11bGF0b3InOgorICAgICAgICAg
ICAgcmV0dXJuICdpb3Mtc2ltdWxhdG9yJwogICAgICAgICBpZiBzeXNfcGxhdGZvcm0uc3RhcnRz
d2l0aCgnbGludXgnKToKICAgICAgICAgICAgIHJldHVybiAnbGludXgnCiAgICAgICAgIGlmIHN5
c19wbGF0Zm9ybS5zdGFydHN3aXRoKCd3aW4nKSBvciBzeXNfcGxhdGZvcm0gPT0gJ2N5Z3dpbic6
CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vcGxhdGZvcm1pbmZv
X21vY2sucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lz
dGVtL3BsYXRmb3JtaW5mb19tb2NrLnB5CShyZXZpc2lvbiAyMTg3MDUpCisrKyBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vcGxhdGZvcm1pbmZvX21vY2sucHkJKHdvcmtpbmcg
Y29weSkKQEAgLTM2LDkgKzM2LDE1IEBAIGNsYXNzIE1vY2tQbGF0Zm9ybUluZm8ob2JqZWN0KToK
ICAgICBkZWYgaXNfbWFjKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5vc19uYW1lID09ICdt
YWMnCiAKLSAgICBkZWYgaXNfaW9zKHNlbGYpOgorICAgIGRlZiBpc19pb3NfZGV2aWNlKHNlbGYp
OgogICAgICAgICByZXR1cm4gc2VsZi5vc19uYW1lID09ICdpb3MnCiAKKyAgICBkZWYgaXNfaW9z
X3NpbXVsYXRvcihzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYub3NfbmFtZSA9PSAnaW9zLXNp
bXVsYXRvcicKKworICAgIGRlZiBpc19pb3Moc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLmlz
X2lvc19kZXZpY2UoKSBvciBzZWxmLmlzX2lvc19zaW11bGF0b3IoKQorCiAgICAgZGVmIGlzX2xp
bnV4KHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5vc19uYW1lID09ICdsaW51eCcKIApJbmRl
eDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2Rhcndpbi5weQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvZGFyd2luLnB5CShyZXZpc2lvbiAyMTg3MDUpCisr
KyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvZGFyd2luLnB5CSh3b3JraW5nIGNvcHkpCkBA
IC0xNjIsNyArMTYyLDcgQEAgY2xhc3MgRGFyd2luUG9ydChBcHBsZVBvcnQpOgogICAgICAgICAg
ICAgJy1maWxlJywKICAgICAgICAgICAgIERhcndpblBvcnQuc3BpbmR1bXBfZmlsZV9wYXRoKGhv
c3QsIG5hbWUsIHBpZCwgc3RyKHRlbXBkaXIpKSwKICAgICAgICAgXQotICAgICAgICBpZiBzZWxm
Lmhvc3QucGxhdGZvcm0uaXNfbWFjKCk6CisgICAgICAgIGlmIHNlbGYuaG9zdC5wbGF0Zm9ybS5p
c19tYWMoKSBvciBzZWxmLmhvc3QucGxhdGZvcm0uaXNfaW9zX3NpbXVsYXRvcigpOgogICAgICAg
ICAgICAgY29tbWFuZCA9IFsnL3Vzci9iaW4vc3VkbycsICctbiddICsgY29tbWFuZAogICAgICAg
ICBleGl0X3N0YXR1cyA9IGhvc3QuZXhlY3V0aXZlLnJ1bl9jb21tYW5kKGNvbW1hbmQsIHJldHVy
bl9leGl0X2NvZGU9VHJ1ZSkKICAgICAgICAgaWYgZXhpdF9zdGF0dXM6CkluZGV4OiBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L3BvcnQvaW9zX3NpbXVsYXRvcl9wbGF0Zm9ybS5weQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvaW9zX3NpbXVsYXRvcl9wbGF0Zm9ybS5w
eQkobm9uZXhpc3RlbnQpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvaW9zX3NpbXVs
YXRvcl9wbGF0Zm9ybS5weQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM4IEBACisjIENvcHly
aWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisj
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMg
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJyBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKworY2xhc3MgSU9TU2ltdWxhdG9yU3lz
TW9kdWxlKG9iamVjdCk6CisKKyAgICBwbGF0Zm9ybSA9ICdpb3Mtc2ltdWxhdG9yJworCisKK2Ns
YXNzIElPU1NpbXVsYXRvclBsYXRmb3JtTW9kdWxlKG9iamVjdCk6CisKKyAgICBkZWYgX19pbml0
X18oc2VsZiwgdmVyc2lvbik6CisgICAgICAgIHNlbGYuX3ZlcnNpb24gPSB2ZXJzaW9uCisKKyAg
ICBkZWYgcmVsZWFzZShzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX3ZlcnNpb24KKworICAg
IGRlZiBwbGF0Zm9ybShzZWxmKToKKyAgICAgICAgcmV0dXJuICdTaW11bGF0b3IgLSBpT1Mge30n
LmZvcm1hdChzZWxmLnJlbGVhc2UoKSkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9y
dC9pb3Nfc2ltdWxhdG9yX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvcG9ydC9pb3Nfc2ltdWxhdG9yX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyMTg3MDUp
CisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvaW9zX3NpbXVsYXRvcl91bml0dGVzdC5w
eQkod29ya2luZyBjb3B5KQpAQCAtMzAsOCArMzAsNyBAQCBmcm9tIHdlYmtpdHB5LmNvbW1vbi5z
eXN0ZW0uZXhlY3V0aXZlX21vCiAKIAogY2xhc3MgSU9TU2ltdWxhdG9yVGVzdChpb3NfdGVzdGNh
c2UuSU9TVGVzdCk6Ci0gICAgIyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3MzEwNwotICAgIG9zX25hbWUgPSAnbWFjJworICAgIG9zX25hbWUgPSAnaW9z
LXNpbXVsYXRvcicKICAgICBvc192ZXJzaW9uID0gJycKICAgICBwb3J0X25hbWUgPSAnaW9zLXNp
bXVsYXRvcicKICAgICBwb3J0X21ha2VyID0gSU9TU2ltdWxhdG9yUG9ydApJbmRleDogVG9vbHMv
U2NyaXB0cy93ZWJraXRweS94Y29kZS9zaW11bGF0ZWRfZGV2aWNlLnB5Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkveGNvZGUvc2ltdWxhdGVkX2RldmljZS5weQkocmV2aXNp
b24gMjE4NzA1KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS94Y29kZS9zaW11bGF0ZWRfZGV2
aWNlLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw4IEBAIGltcG9ydCBzdWJwcm9jZXNz
CiAKIGZyb20gd2Via2l0cHkueGNvZGUuc2ltdWxhdG9yIGltcG9ydCBTaW11bGF0b3IKIGZyb20g
d2Via2l0cHkuY29tbW9uLmhvc3QgaW1wb3J0IEhvc3QKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5
c3RlbS5wbGF0Zm9ybWluZm8gaW1wb3J0IFBsYXRmb3JtSW5mbworZnJvbSB3ZWJraXRweS5wb3J0
Lmlvc19zaW11bGF0b3JfcGxhdGZvcm0gaW1wb3J0IElPU1NpbXVsYXRvclN5c01vZHVsZSwgSU9T
U2ltdWxhdG9yUGxhdGZvcm1Nb2R1bGUKIAogX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFt
ZV9fKQogCkBAIC01OCw3ICs2MCwxMSBAQCBjbGFzcyBTaW11bGF0ZWREZXZpY2Uob2JqZWN0KToK
ICAgICAgICAgc2VsZi5leGVjdXRpdmUgPSBob3N0LmV4ZWN1dGl2ZQogICAgICAgICBzZWxmLmZp
bGVzeXN0ZW0gPSBob3N0LmZpbGVzeXN0ZW0KICAgICAgICAgc2VsZi51c2VyID0gTm9uZQotICAg
ICAgICBzZWxmLnBsYXRmb3JtID0gaG9zdC5wbGF0Zm9ybQorICAgICAgICBzZWxmLnBsYXRmb3Jt
ID0gUGxhdGZvcm1JbmZvKAorICAgICAgICAgICAgSU9TU2ltdWxhdG9yU3lzTW9kdWxlKCksCisg
ICAgICAgICAgICBJT1NTaW11bGF0b3JQbGF0Zm9ybU1vZHVsZSgnLicuam9pbihtYXAoc3RyLCBy
dW50aW1lLnZlcnNpb24pKSksCisgICAgICAgICAgICBzZWxmLmV4ZWN1dGl2ZSwKKyAgICAgICAg
KQogICAgICAgICBzZWxmLndvcmtzcGFjZSA9IGhvc3Qud29ya3NwYWNlCiAKICAgICBAcHJvcGVy
dHkK
</data>

          </attachment>
      

    </bug>

</bugzilla>