<?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>135589</bug_id>
          
          <creation_ts>2014-08-04 18:13:34 -0700</creation_ts>
          <short_desc>REGRESSION (r171968): run-safari --simulator fails to launch Safari on iOS</short_desc>
          <delta_ts>2015-01-16 13:58:28 -0800</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>528+ (Nightly build)</version>
          <rep_platform>iPhone / iPad</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Regression</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="David Farler">dfarler</reporter>
          <assigned_to name="Daniel Bates">dbates</assigned_to>
          <cc>dbates</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>mhock</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1026750</commentid>
    <comment_count>0</comment_count>
    <who name="David Farler">dfarler</who>
    <bug_when>2014-08-04 18:13:34 -0700</bug_when>
    <thetext>Now that IPhoneSimulatorNotification.pm is no longer, we should move over the runSafari mechanism over to simctl launch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1027043</commentid>
    <comment_count>1</comment_count>
      <attachid>236070</attachid>
    <who name="David Farler">dfarler</who>
    <bug_when>2014-08-05 19:01:34 -0700</bug_when>
    <thetext>Created attachment 236070
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1027046</commentid>
    <comment_count>2</comment_count>
      <attachid>236071</attachid>
    <who name="David Farler">dfarler</who>
    <bug_when>2014-08-05 19:08:29 -0700</bug_when>
    <thetext>Created attachment 236071
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1028670</commentid>
    <comment_count>3</comment_count>
      <attachid>236071</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2014-08-12 16:54:13 -0700</bug_when>
    <thetext>Comment on attachment 236071
Patch

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

I&apos;m r-&apos;ing this patch since it seems like we&apos;re missing logic to install the built MobileSafari. This patch also adds a function called installIOSWebKitAppInSimulator(), but doesn&apos;t use it.

&gt; Tools/ChangeLog:3
&gt; +        Move run-safari âsimulator over to simctl launch

Nit: &quot;—&quot; =&gt; &quot;--&quot; (notice these are two dash characters)

&gt; Tools/ChangeLog:14
&gt; +        (runIOSWebKitAppInSimulator):
&gt; +        Use simctl launch.

It seems sufficient to collapse these lines into a single line that reads:

(runIOSWebKitAppInSimulator): Use simctl launch.

&gt; Tools/ChangeLog:16
&gt; +        (installIOSWebKitAppInSimulator):
&gt; +        Use simctl install.

Similarly, it seems sufficient to write this line as:

(installIOSWebKitAppInSimulator): Use simctl install.

&gt; Tools/Scripts/webkitdirs.pm:2200
&gt; +        sleep 2;

This is OK as-is. I wish we could wait for some kind of exit status code or stdout output message instead of polling the file system every 2 seconds.

&gt; Tools/Scripts/webkitdirs.pm:2201
&gt; +    } while ($device-&gt;{state} ne &apos;3&apos;);

Nit: &apos; =&gt; &quot;

Unless you explicitly want to prevent string interpolation, please use double quotes instead of single quotes for string literals.

&gt; Tools/Scripts/webkitdirs.pm:2202
&gt; +    sleep 5;

How did you come to pick 5 seconds to sleep? I take it you picked it from experimenting. Regardless, I suggest we add an inline comment to this line that explains why we are sleeping as well as how this time was chosen. Maybe something like: Wait for services to start; 5 seconds is sufficient in practice.

&gt; Tools/Scripts/webkitdirs.pm:2248
&gt; +sub runIOSWebKitAppInSimulator

Did you intend to remove the prototype for this function? Do you intend to make the second argument required? If so, then we should remove line 2258 (below).

&gt; Tools/Scripts/webkitdirs.pm:2269
&gt; +    foreach my $key (keys(%simulatorENV)) {

Nit: We tend to omit the parentheses around keys() in our Perl code, and hence I would write this line as:

foreach my $key (keys %simulatorENV) {

&gt; Tools/Scripts/webkitdirs.pm:2274
&gt; +    system(&apos;xcrun&apos;, &apos;-sdk&apos;, &apos;iphonesimulator&apos;, &apos;simctl&apos;, &apos;launch&apos;, $simulatedDevice-&gt;{UDID}, $appIdentifier, @$applicationArguments);

Nit: &apos; =&gt; &quot;

Unless you explicitly want to prevent string interpolation, please use double quotes instead of single quotes for string literals.

&gt; Tools/Scripts/webkitdirs.pm:2275
&gt; +    return $?;

Instead of explicitly querying the special variable $? for the exit status I suggest that we inline the previous line into this line and use exitStatus() to retrieve the actual exit status, such that this line reads:

return exitStatus(system(&quot;xcrun&quot;, &quot;-sdk&quot;, &quot;iphonesimulator&quot;, &quot;simctl&quot;, &quot;launch&quot;, $simulatedDevice-&gt;{UDID}, $appIdentifier, @$applicationArguments));

The benefit of this approach is that it improves the readability of the code by making use of the return value of system() instead of indirectly querying for the exit status.

&gt; Tools/Scripts/webkitdirs.pm:2292
&gt; +sub installIOSWebKitAppInSimulator($$;$)

Where is this function used?

Also, the third argument of this function isn&apos;t used in the proposed changes.

&gt; Tools/Scripts/webkitdirs.pm:2300
&gt; +    system(&apos;xcrun&apos;, &apos;-sdk&apos;, &apos;iphonesimulator&apos;, &apos;simctl&apos;, &apos;install&apos;, $simulatedDevice-&gt;{UDID}, $appBundle);
&gt; +    return $?;

Similarly, I would write this as:

return exitStatus(system(&quot;xcrun&quot;, &quot;-sdk&quot;, &quot;iphonesimulator&quot;, &quot;simctl&quot;, &quot;install&quot;, $simulatedDevice-&gt;{UDID}, $appBundle);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1028681</commentid>
    <comment_count>4</comment_count>
    <who name="David Farler">dfarler</who>
    <bug_when>2014-08-12 17:38:32 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 236071 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=236071&amp;action=review
&gt; 
&gt; I&apos;m r-&apos;ing this patch since it seems like we&apos;re missing logic to install the built MobileSafari. This patch also adds a function called installIOSWebKitAppInSimulator(), but doesn&apos;t use it.

I appreciate the comments. I’m fixing all of them but a few comments for some below.

&gt; &gt; Tools/Scripts/webkitdirs.pm:2200
&gt; &gt; +        sleep 2;
&gt; 
&gt; This is OK as-is. I wish we could wait for some kind of exit status code or stdout output message instead of polling the file system every 2 seconds.

Same here. I’ll see if we can get a synchronous simctl method to wait until all simulator services are ready, although I’m not sure if such signals even exist yet.

&gt; &gt; Tools/Scripts/webkitdirs.pm:2202
&gt; &gt; +    sleep 5;
&gt; 
&gt; How did you come to pick 5 seconds to sleep? I take it you picked it from experimenting. Regardless, I suggest we add an inline comment to this line that explains why we are sleeping as well as how this time was chosen. Maybe something like: Wait for services to start; 5 seconds is sufficient in practice.

This is similar to the sleep 2 - there just isn’t a fully synchronous version of this but I’ll see if we can get an enhancement for the future. This is from my experience an ok value but I’m going to up this by a second or two and add a comment.

&gt; 
&gt; &gt; Tools/Scripts/webkitdirs.pm:2248
&gt; &gt; +sub runIOSWebKitAppInSimulator
&gt; 
&gt; Did you intend to remove the prototype for this function? Do you intend to make the second argument required? If so, then we should remove line 2258 (below).

I didn’t - I will add it back.

&gt; &gt; Tools/Scripts/webkitdirs.pm:2292
&gt; &gt; +sub installIOSWebKitAppInSimulator($$;$)
&gt; 
&gt; Where is this function used?

I forgot to add back the invocation to this. I noticed that the tool was installing a copy from the actual SDK itself, which we don’t want to do — we only want to install a MobileSafari if it is from the product directory, which I’ve added back. I renamed mobileSafariBundle to defaultSDKMobileSafariBundle.

We may need to revisit this in the future. It is pretty strongly advised not to inspect the list of installed applications for a device in the CoreSimulator API. When installing a copy of an application, it doesn’t go into the SDK, but into ~/Library/Developer/CoreSimulator/devices/$UUID/data/Containers/Bundle/Application/$APPUUID/AppName.app. So, it might be necessary to nuke contents and settings or forcefully uninstall an app by its identifier in some cases (speculating here).

&gt; 
&gt; Also, the third argument of this function isn&apos;t used in the proposed changes.

I’ll add back the optional simulatorOptions to pick up optional environment or arguments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1061020</commentid>
    <comment_count>5</comment_count>
      <attachid>244566</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2015-01-13 18:03:02 -0800</bug_when>
    <thetext>Created attachment 244566
Work-in-progress patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1061725</commentid>
    <comment_count>6</comment_count>
      <attachid>244738</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2015-01-15 17:51:54 -0800</bug_when>
    <thetext>Created attachment 244738
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1061858</commentid>
    <comment_count>7</comment_count>
      <attachid>244738</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2015-01-16 11:26:12 -0800</bug_when>
    <thetext>Comment on attachment 244738
Patch

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

r=me

&gt; Tools/Scripts/webkitdirs.pm:2145
&gt; +    return substr($appBundle, 0, length($simulatorApplicationsPath)) eq $simulatorApplicationsPath;

Nit:  I think there is a slightly safer way to do this with File::Spec using abs2rel() with $simulatorApplicationsPath as the base and making sure the result doesn&apos;t have any &quot;..&quot; directories in the path, but this is probably fine until someone complains.  :)

This does not have to be fixed to land the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1061937</commentid>
    <comment_count>8</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2015-01-16 13:17:27 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; &gt; Tools/Scripts/webkitdirs.pm:2145
&gt; &gt; +    return substr($appBundle, 0, length($simulatorApplicationsPath)) eq $simulatorApplicationsPath;
&gt; 
&gt; Nit:  I think there is a slightly safer way to do this with File::Spec using
&gt; abs2rel() with $simulatorApplicationsPath as the base and making sure the
&gt; result doesn&apos;t have any &quot;..&quot; directories in the path, but this is probably
&gt; fine until someone complains.  :)

Instead of using File::Spec-&gt;abs2rel() and looking for &quot;..&quot;, I&apos;ll perform a string prefix match of Cwd::realpath($appBundle) with $simulatorApplicationsPath. Cwd::realpath() will compute the canonical pathname with respect to the filesystem, resolving symbolic links and relative-path components:

sub isIOSSimulatorSystemInstalledApp($)
{
    my ($appBundle) = @_;
    my $simulatorApplicationsPath = iosSimulatorApplicationsPath();
    return substr(realpath($appBundle), 0, length($simulatorApplicationsPath)) eq $simulatorApplicationsPath;
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1061956</commentid>
    <comment_count>9</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2015-01-16 13:58:28 -0800</bug_when>
    <thetext>Committed r178601: &lt;http://trac.webkit.org/changeset/178601&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>236070</attachid>
            <date>2014-08-05 19:01:34 -0700</date>
            <delta_ts>2014-08-05 19:08:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-135589-20140805190122.patch</filename>
            <type>text/plain</type>
            <size>8283</size>
            <attacher name="David Farler">dfarler</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTcyMTE4CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYzhkMGM4MmJmM2ZjNzk2Yjk0YTgyMWE5NDNlOTk0MGM5
ODI2NGE5OC4uOThjZTBjNmMwNWI4OWM2NmU4Y2U1MzhmNzAyZmRjNTAxOTBkOTg2OCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI0
IEBACiAyMDE0LTA4LTA1ICBEYXZpZCBGYXJsZXIgIDxkZmFybGVyQGFwcGxlLmNvbT4KIAorICAg
ICAgICBNb3ZlIHJ1bi1zYWZhcmkg4oCUc2ltdWxhdG9yIG92ZXIgdG8gc2ltY3RsIGxhdW5jaAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM1NTg5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdGRpcnMucG06CisgICAgICAgIChvcGVuSU9TU2ltdWxhdG9yKToKKyAgICAgICAgU3dp
dGNoIHRvIC1DdXJyZW50RGV2aWNlVURJRCBhbmQgd2FpdCBmb3IgdGhlIGRlc2lyZWQKKyAgICAg
ICAgZGV2aWNlIHRvIGhpdCB0aGUgQm9vdGVkIHN0YXRlLCB0aGVuIHNsZWVwIGZvciA1IHNlY29u
ZHMKKyAgICAgICAgZm9yIG90aGVyIHNlcnZpY2VzIHRvIGNvbWUgdXAuCisgICAgICAgIChydW5J
T1NXZWJLaXRBcHBJblNpbXVsYXRvcik6CisgICAgICAgIFVzZSBzaW1jdGwgbGF1bmNoLgorICAg
ICAgICAoaW5zdGFsbElPU1dlYktpdEFwcEluU2ltdWxhdG9yKToKKyAgICAgICAgVXNlIHNpbWN0
bCBpbnN0YWxsLgorICAgICAgICAobG9hZElQaG9uZVNpbXVsYXRvck5vdGlmaWNhdGlvbklmTmVl
ZGVkKTogRGVsZXRlZC4KKyAgICAgICAgKGluc3RhbGxBbmRMYXVuY2hJT1NXZWJLaXRBcHBJblNp
bXVsYXRvcik6IERlbGV0ZWQuCisKKzIwMTQtMDgtMDUgIERhdmlkIEZhcmxlciAgPGRmYXJsZXJA
YXBwbGUuY29tPgorCiAgICAgICAgIFtpT1NdIFJ1biBJbWFnZURpZmYgaW4gdGhlIHNpbSBib290
c3RyYXAKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEz
NTYyNAogCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdGRpcnMucG0gYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdGRpcnMucG0KaW5kZXggYTg5MjVkMWFiNDAyZDVjYzIyYmY0MGM2ZTRmOGE4
MDZiOTBlZjk5Ny4uZDg3YWE5NWFiMzc1ZWU3MzU5Njg0Njk5MGEwNzU0MGU5ZjcxNTZjYiAxMDA3
NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRkaXJzLnBtCisrKyBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0ZGlycy5wbQpAQCAtNjMsNyArNjMsOCBAQCBCRUdJTiB7CiAgICAgICAgJmN1cnJlbnRT
Vk5SZXZpc2lvbgogICAgICAgICZkZWJ1Z1NhZmFyaQogICAgICAgICZmaW5kT3JDcmVhdGVTaW11
bGF0b3JGb3JJT1NEZXZpY2UKLSAgICAgICAmaW5zdGFsbEFuZExhdW5jaElPU1dlYktpdEFwcElu
U2ltdWxhdG9yCisgICAgICAgJmluc3RhbGxJT1NXZWJLaXRBcHBJblNpbXVsYXRvcgorICAgICAg
ICZydW5JT1NXZWJLaXRBcHBJblNpbXVsYXRvcgogICAgICAgICZpb3NTaW11bGF0b3JEZXZpY2VC
eU5hbWUKICAgICAgICAmbm1QYXRoCiAgICAgICAgJm9wZW5JT1NTaW11bGF0b3IKQEAgLTIxODYs
MzAgKzIxODcsMTkgQEAgc3ViIGFwcERpc3BsYXlOYW1lRnJvbUJ1bmRsZSgkKQogICAgIHJldHVy
biAkYnVuZGxlRGlzcGxheU5hbWU7CiB9CiAKLXN1YiBsb2FkSVBob25lU2ltdWxhdG9yTm90aWZp
Y2F0aW9uSWZOZWVkZWQoKQotewotICAgIHJldHVybiBpZiAkZGlkTG9hZElQaG9uZVNpbXVsYXRv
ck5vdGlmaWNhdGlvbjsKLSAgICBwdXNoKEBJTkMsIHByb2R1Y3REaXIoKSAuICIvbGliL3Blcmw1
L2Rhcndpbi10aHJlYWQtbXVsdGktMmxldmVsIik7Ci0gICAgcmVxdWlyZSBJUGhvbmVTaW11bGF0
b3JOb3RpZmljYXRpb247Ci0gICAgJGRpZExvYWRJUGhvbmVTaW11bGF0b3JOb3RpZmljYXRpb24g
PSAxOwotfQotCi1zdWIgb3BlbklPU1NpbXVsYXRvcigpCitzdWIgb3BlbklPU1NpbXVsYXRvcigk
KQogeworICAgIG15ICRzaW11bGF0ZWREZXZpY2UgPSBzaGlmdDsKICAgICBjaG9tcChteSAkZGV2
ZWxvcGVyRGlyZWN0b3J5ID0gJEVOVntERVZFTE9QRVJfRElSfSB8fCBgeGNvZGUtc2VsZWN0IC0t
cHJpbnQtcGF0aGApOwogICAgIG15ICRpb3NTaW11bGF0b3JQYXRoID0gRmlsZTo6U3BlYy0+Y2F0
ZmlsZSgkZGV2ZWxvcGVyRGlyZWN0b3J5LCAiQXBwbGljYXRpb25zIiwgImlPUyBTaW11bGF0b3Iu
YXBwIik7CiAKLSAgICBsb2FkSVBob25lU2ltdWxhdG9yTm90aWZpY2F0aW9uSWZOZWVkZWQoKTsK
LQotICAgIG15ICRpUGhvbmVTaW11bGF0b3JOb3RpZmljYXRpb24gPSBuZXcgSVBob25lU2ltdWxh
dG9yTm90aWZpY2F0aW9uOwotICAgICRpUGhvbmVTaW11bGF0b3JOb3RpZmljYXRpb24tPnN0YXJ0
T2JzZXJ2aW5nUmVhZHlOb3RpZmljYXRpb24oKTsKLSAgICBzeXN0ZW0oIm9wZW4iLCAiLWEiLCAk
aW9zU2ltdWxhdG9yUGF0aCwgIi0tYXJncyIsICItU2Vzc2lvbk9uTGF1bmNoIiwgIk5PIikgPT0g
MCBvciBkaWUgIkZhaWxlZCB0byBvcGVuICRpb3NTaW11bGF0b3JQYXRoOiAkISI7Ci0gICAgd2hp
bGUgKCEkaVBob25lU2ltdWxhdG9yTm90aWZpY2F0aW9uLT5oYXNSZWNlaXZlZFJlYWR5Tm90aWZp
Y2F0aW9uKCkpIHsKLSAgICAgICAgbXkgJGRhdGUgPSBOU0RhdGUtPmFsbG9jKCktPmluaXRXaXRo
VGltZUludGVydmFsU2luY2VOb3dfKDAuMSk7Ci0gICAgICAgIE5TUnVuTG9vcC0+Y3VycmVudFJ1
bkxvb3AtPnJ1blVudGlsRGF0ZV8oJGRhdGUpOwotICAgICAgICAkZGF0ZS0+cmVsZWFzZSgpOwot
ICAgIH0KLSAgICAkaVBob25lU2ltdWxhdG9yTm90aWZpY2F0aW9uLT5zdG9wT2JzZXJ2aW5nUmVh
ZHlOb3RpZmljYXRpb24oKTsKKyAgICBzeXN0ZW0oIm9wZW4iLCAiLWEiLCAkaW9zU2ltdWxhdG9y
UGF0aCwgIi0tYXJncyIsICItQ3VycmVudERldmljZVVESUQiLCAkc2ltdWxhdGVkRGV2aWNlLT57
VURJRH0pID09IDAgb3IgZGllICJGYWlsZWQgdG8gb3BlbiAkaW9zU2ltdWxhdG9yUGF0aDogJCEi
OworICAgIG15ICRkZXZpY2U7CisgICAgZG8geworICAgICAgICAkZGV2aWNlID0gaW9zU2ltdWxh
dG9yRGV2aWNlQnlOYW1lKCRzaW11bGF0ZWREZXZpY2UtPntuYW1lfSk7CisgICAgICAgIHNsZWVw
IDI7CisgICAgfSB3aGlsZSAoJGRldmljZS0+e3N0YXRlfSBuZSAnMycpOworICAgIHNsZWVwIDU7
CiB9CiAKIHN1YiBxdWl0SU9TU2ltdWxhdG9yKCkKQEAgLTIyNTUsMTIgKzIyNDUsMTUgQEAgc3Vi
IGZpbmRPckNyZWF0ZVNpbXVsYXRvckZvcklPU0RldmljZSgkKQogICAgIHJldHVybiBjcmVhdGVp
T1NTaW11bGF0b3JEZXZpY2UoJHNpbXVsYXRvck5hbWUsICRzaW11bGF0b3JEZXZpY2VUeXBlLCBp
b3NTaW11bGF0b3JSdW50aW1lKCkpOwogfQogCi1zdWIgcnVuSU9TV2ViS2l0QXBwSW5TaW11bGF0
b3IoJDskKQorc3ViIHJ1bklPU1dlYktpdEFwcEluU2ltdWxhdG9yCiB7CiAgICAgbXkgKCRhcHBC
dW5kbGUsICRzaW11bGF0b3JPcHRpb25zKSA9IEBfOwogICAgIG15ICRwcm9kdWN0RGlyID0gcHJv
ZHVjdERpcigpOwogICAgIG15ICRhcHBEaXNwbGF5TmFtZSA9IGFwcERpc3BsYXlOYW1lRnJvbUJ1
bmRsZSgkYXBwQnVuZGxlKTsKICAgICBwcmludCAiU3RhcnRpbmcgJGFwcERpc3BsYXlOYW1lIHdp
dGggRFlMRF9GUkFNRVdPUktfUEFUSCBzZXQgdG8gcG9pbnQgdG8gYnVpbHQgV2ViS2l0IGluICRw
cm9kdWN0RGlyLlxuIjsKKyAgICBteSAkc2ltdWxhdGVkRGV2aWNlID0gZmluZE9yQ3JlYXRlU2lt
dWxhdG9yRm9ySU9TRGV2aWNlKCJGb3IgV2ViS2l0IERldmVsb3BtZW50Iik7CisgICAgcXVpdElP
U1NpbXVsYXRvcigpOworICAgIG9wZW5JT1NTaW11bGF0b3IoJHNpbXVsYXRlZERldmljZSk7CiAK
ICAgICAkc2ltdWxhdG9yT3B0aW9ucyA9IHt9IHVubGVzcyAkc2ltdWxhdG9yT3B0aW9uczsKIApA
QCAtMjI3MSw4ICsyMjY0LDE0IEBAIHN1YiBydW5JT1NXZWJLaXRBcHBJblNpbXVsYXRvcigkOyQp
CiAgICAgICAgIHNldHVwSU9TV2ViS2l0RW52aXJvbm1lbnQoJHByb2R1Y3REaXIpOwogICAgICAg
ICAlc2ltdWxhdG9yRU5WID0gJUVOVjsKICAgICB9Ci0gICAgJHNpbXVsYXRvck9wdGlvbnMtPnth
cHBsaWNhdGlvbkVudmlyb25tZW50fSA9IFwlc2ltdWxhdG9yRU5WOwotICAgIHJldHVybiBpbnN0
YWxsQW5kTGF1bmNoSU9TV2ViS2l0QXBwSW5TaW11bGF0b3IoJGFwcEJ1bmRsZSwgZmluZE9yQ3Jl
YXRlU2ltdWxhdG9yRm9ySU9TRGV2aWNlKCJGb3IgV2ViS2l0IERldmVsb3BtZW50IiksICRzaW11
bGF0b3JPcHRpb25zKSA8PSAwOworICAgIG15ICRhcHBsaWNhdGlvbkFyZ3VtZW50cyA9IFxAQVJH
VjsKKyAgICAkYXBwbGljYXRpb25Bcmd1bWVudHMgPSAkc2ltdWxhdG9yT3B0aW9ucy0+e2FwcGxp
Y2F0aW9uQXJndW1lbnRzfSBpZiAkc2ltdWxhdG9yT3B0aW9ucyAmJiAkc2ltdWxhdG9yT3B0aW9u
cy0+e2FwcGxpY2F0aW9uQXJndW1lbnRzfTsKKyAgICBmb3JlYWNoIG15ICRrZXkgKGtleXMoJXNp
bXVsYXRvckVOVikpIHsKKyAgICAgICAgJEVOVnsiU0lNQ1RMX0NISUxEXyRrZXkifSA9ICRzaW11
bGF0b3JFTlZ7JGtleX07CisgICAgfQorICAgIHByaW50ICJMYXVuY2hpbmcgLi4uXG4iOworICAg
IHN5c3RlbSgneGNydW4nLCAnLXNkaycsICdpcGhvbmVzaW11bGF0b3InLCAnc2ltY3RsJywgJ2xh
dW5jaCcsICRzaW11bGF0ZWREZXZpY2UtPntVRElEfSwgYXBwSWRlbnRpZmVyRnJvbUJ1bmRsZSgk
YXBwQnVuZGxlKSwgQCRhcHBsaWNhdGlvbkFyZ3VtZW50cyk7CisgICAgcmV0dXJuICQ/OwogfQog
CiAjIExhdW5jaGVzIHRoZSBpT1MgV2ViS2l0LWJhc2VkIGFwcGxpY2F0aW9uIGluIHRoZSBzcGVj
aWZpZWQgc2ltdWxhdG9yIGRldmljZSBhbmQgZHluYW1pY2FsbHkKQEAgLTIyODksNjEgKzIyODgs
MTUgQEAgc3ViIHJ1bklPU1dlYktpdEFwcEluU2ltdWxhdG9yKCQ7JCkKICMgICAgIGFwcGxpY2F0
aW9uRW52aXJvbm1lbnQ6IGEgaGFzaCByZWZlcmVuY2UgcmVwcmVzZW50aW5nIHRoZSBlbnZpcm9u
bWVudCB2YXJpYWJsZXMgdG8gdXNlIHdoZW4gbGF1bmNoaW5nIHRoZSBhcHAgKGRlZmF1bHRzIHRv
IHt9KS4KICMKICMgUmV0dXJucyB0aGUgcHJvY2VzcyBpZGVudGlmaWVyIG9mIHRoZSBsYXVuY2hl
ZCBhcHAuCi1zdWIgaW5zdGFsbEFuZExhdW5jaElPU1dlYktpdEFwcEluU2ltdWxhdG9yKCQkOyQp
CitzdWIgaW5zdGFsbElPU1dlYktpdEFwcEluU2ltdWxhdG9yKCQkOyQpCiB7CiAgICAgbXkgKCRh
cHBCdW5kbGUsICRzaW11bGF0ZWREZXZpY2UsICRzaW11bGF0b3JPcHRpb25zKSA9IEBfOwogCi0g
ICAgbG9hZElQaG9uZVNpbXVsYXRvck5vdGlmaWNhdGlvbklmTmVlZGVkKCk7Ci0KLSAgICBteSAk
bWFrZU5TRGljdGlvbmFyeUZyb21IYXNoID0gc3ViIHsKLSAgICAgICAgbXkgKCRkaWN0KSA9IEBf
OwotICAgICAgICBteSAkcmVzdWx0ID0gTlNNdXRhYmxlRGljdGlvbmFyeS0+YWxsb2MoKS0+aW5p
dFdpdGhDYXBhY2l0eV8oc2NhbGFyKGtleXMgJXskZGljdH0pKTsKLSAgICAgICAgZm9yIG15ICRr
ZXkgKGtleXMgJXskZGljdH0pIHsKLSAgICAgICAgICAgICRyZXN1bHQtPnNldE9iamVjdF9mb3JL
ZXlfKE5TU3RyaW5nLT5zdHJpbmdXaXRoQ1N0cmluZ18oJGRpY3QtPnska2V5fSksIE5TU3RyaW5n
LT5zdHJpbmdXaXRoQ1N0cmluZ18oJGtleSkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiAk
cmVzdWx0LT5hdXRvcmVsZWFzZSgpOwotICAgIH07Ci0gICAgbXkgJG1ha2VOU0FycmF5RnJvbUFy
cmF5ID0gc3ViIHsKLSAgICAgICAgbXkgKCRhcnJheSkgPSBAXzsKLSAgICAgICAgbXkgJHJlc3Vs
dCA9IE5TTXV0YWJsZUFycmF5LT5hbGxvYygpLT5pbml0V2l0aENhcGFjaXR5XyhzY2FsYXIoQHsk
YXJyYXl9KSk7Ci0gICAgICAgIGZvciBteSAkaXRlbSAoQHskYXJyYXl9KSB7Ci0gICAgICAgICAg
ICAkcmVzdWx0LT5hZGRPYmplY3RfKE5TU3RyaW5nLT5zdHJpbmdXaXRoQ1N0cmluZ18oJGl0ZW0p
KTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gJHJlc3VsdC0+YXV0b3JlbGVhc2UoKTsKLSAg
ICB9OwotCi0gICAgbXkgJHNpbXVsYXRvckVOVkhhc2hSZWYgPSB7fTsKLSAgICAkc2ltdWxhdG9y
RU5WSGFzaFJlZiA9ICRzaW11bGF0b3JPcHRpb25zLT57YXBwbGljYXRpb25FbnZpcm9ubWVudH0g
aWYgJHNpbXVsYXRvck9wdGlvbnMgJiYgJHNpbXVsYXRvck9wdGlvbnMtPnthcHBsaWNhdGlvbkVu
dmlyb25tZW50fTsKLSAgICBteSAkYXBwbGljYXRpb25Bcmd1bWVudHMgPSBcQEFSR1Y7Ci0gICAg
JGFwcGxpY2F0aW9uQXJndW1lbnRzID0gJHNpbXVsYXRvck9wdGlvbnMtPnthcHBsaWNhdGlvbkFy
Z3VtZW50c30gaWYgJHNpbXVsYXRvck9wdGlvbnMgJiYgJHNpbXVsYXRvck9wdGlvbnMtPnthcHBs
aWNhdGlvbkFyZ3VtZW50c307Ci0gICAgbXkgJHNlc3Npb25VVUlEOwotICAgIGlmICgkc2ltdWxh
dG9yT3B0aW9ucyAmJiAkc2ltdWxhdG9yT3B0aW9ucy0+e3Nlc3Npb25VVUlEfSkgewotICAgICAg
ICAkc2Vzc2lvblVVSUQgPSAkc2ltdWxhdG9yT3B0aW9ucy0+e3Nlc3Npb25VVUlEfTsKLSAgICB9
IGVsc2UgewotICAgICAgICAkc2Vzc2lvblVVSUQgPSAidGhlQXdlc29tZVVuaXF1ZVNlc3Npb25J
ZGVudGlmaWVyRm9yIiAuIGFwcERpc3BsYXlOYW1lRnJvbUJ1bmRsZSgkYXBwQnVuZGxlKTsKLSAg
ICB9CiAgICAgIyBGSVhNRTogV2Ugc2hvdWxkIGhhdmUgdGhlIGlPUyBhcHBsaWNhdGlvbiBhZG9w
dCB0aGUgZmlsZXMgZGVzY3JpcHRvcnMgZm9yIG91ciBzdGFuZGFyZCBvdXRwdXQgYW5kIGVycm9y
IHN0cmVhbXMuCi0gICAgbXkgJHNlc3Npb25JbmZvID0gewotICAgICAgICBhcHBsaWNhdGlvbkFy
Z3VtZW50cyA9PiAmJG1ha2VOU0FycmF5RnJvbUFycmF5KCRhcHBsaWNhdGlvbkFyZ3VtZW50cyks
Ci0gICAgICAgIGFwcGxpY2F0aW9uRW52aXJvbm1lbnQgPT4gJiRtYWtlTlNEaWN0aW9uYXJ5RnJv
bUhhc2goJHNpbXVsYXRvckVOVkhhc2hSZWYpLAotICAgICAgICBhcHBsaWNhdGlvbklkZW50aWZp
ZXIgPT4gTlNTdHJpbmctPnN0cmluZ1dpdGhDU3RyaW5nXyhhcHBJZGVudGlmZXJGcm9tQnVuZGxl
KCRhcHBCdW5kbGUpKSwKLSAgICAgICAgYXBwbGljYXRpb25QYXRoID0+IE5TU3RyaW5nLT5zdHJp
bmdXaXRoQ1N0cmluZ18oJGFwcEJ1bmRsZSksCi0gICAgICAgIGRldmljZVVESUQgPT4gTlNTdHJp
bmctPnN0cmluZ1dpdGhDU3RyaW5nXygkc2ltdWxhdGVkRGV2aWNlLT57VURJRH0pLAotICAgICAg
ICBzZXNzaW9uVVVJRCA9PiBOU1N0cmluZy0+c3RyaW5nV2l0aENTdHJpbmdfKCRzZXNzaW9uVVVJ
RCksCi0gICAgfTsKLQotICAgIG9wZW5JT1NTaW11bGF0b3IoKTsKLQotICAgIG15ICRpUGhvbmVT
aW11bGF0b3JOb3RpZmljYXRpb24gPSBuZXcgSVBob25lU2ltdWxhdG9yTm90aWZpY2F0aW9uOwot
ICAgICRpUGhvbmVTaW11bGF0b3JOb3RpZmljYXRpb24tPnN0YXJ0T2JzZXJ2aW5nQXBwbGljYXRp
b25MYXVuY2hlZE5vdGlmaWNhdGlvbigpOwotICAgICRpUGhvbmVTaW11bGF0b3JOb3RpZmljYXRp
b24tPnBvc3RTdGFydFNlc3Npb25Ob3RpZmljYXRpb24oJHNlc3Npb25JbmZvKTsKLSAgICB3aGls
ZSAoISRpUGhvbmVTaW11bGF0b3JOb3RpZmljYXRpb24tPmhhc1JlY2VpdmVkQXBwbGljYXRpb25M
YXVuY2hlZE5vdGlmaWNhdGlvbigpKSB7Ci0gICAgICAgIG15ICRkYXRlID0gTlNEYXRlLT5hbGxv
YygpLT5pbml0V2l0aFRpbWVJbnRlcnZhbFNpbmNlTm93XygwLjEpOwotICAgICAgICBOU1J1bkxv
b3AtPmN1cnJlbnRSdW5Mb29wLT5ydW5VbnRpbERhdGVfKCRkYXRlKTsKLSAgICAgICAgJGRhdGUt
PnJlbGVhc2UoKTsKLSAgICB9Ci0gICAgJGlQaG9uZVNpbXVsYXRvck5vdGlmaWNhdGlvbi0+c3Rv
cE9ic2VydmluZ0FwcGxpY2F0aW9uTGF1bmNoZWROb3RpZmljYXRpb24oKTsKLSAgICByZXR1cm4g
JGlQaG9uZVNpbXVsYXRvck5vdGlmaWNhdGlvbi0+YXBwbGljYXRpb25MYXVuY2hlZEFwcGxpY2F0
aW9uUElEKCk7CisgICAgb3BlbklPU1NpbXVsYXRvcigkc2ltdWxhdGVkRGV2aWNlKTsKKyAgICBw
cmludCAiSW5zdGFsbGluZyAkYXBwQnVuZGxlIC4uLlxuIjsKKyAgICBzeXN0ZW0oJ3hjcnVuJywg
Jy1zZGsnLCAnaXBob25lc2ltdWxhdG9yJywgJ3NpbWN0bCcsICdpbnN0YWxsJywgJHNpbXVsYXRl
ZERldmljZS0+e1VESUR9LCAkYXBwQnVuZGxlKTsKKyAgICByZXR1cm4gJD87CiB9CiAKIHN1YiBy
dW5JT1NXZWJLaXRBcHAoJCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>236071</attachid>
            <date>2014-08-05 19:08:29 -0700</date>
            <delta_ts>2015-01-13 18:02:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-135589-20140805190817.patch</filename>
            <type>text/plain</type>
            <size>8339</size>
            <attacher name="David Farler">dfarler</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTcyMTE4CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYzhkMGM4MmJmM2ZjNzk2Yjk0YTgyMWE5NDNlOTk0MGM5
ODI2NGE5OC4uOThjZTBjNmMwNWI4OWM2NmU4Y2U1MzhmNzAyZmRjNTAxOTBkOTg2OCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI0
IEBACiAyMDE0LTA4LTA1ICBEYXZpZCBGYXJsZXIgIDxkZmFybGVyQGFwcGxlLmNvbT4KIAorICAg
ICAgICBNb3ZlIHJ1bi1zYWZhcmkg4oCUc2ltdWxhdG9yIG92ZXIgdG8gc2ltY3RsIGxhdW5jaAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM1NTg5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdGRpcnMucG06CisgICAgICAgIChvcGVuSU9TU2ltdWxhdG9yKToKKyAgICAgICAgU3dp
dGNoIHRvIC1DdXJyZW50RGV2aWNlVURJRCBhbmQgd2FpdCBmb3IgdGhlIGRlc2lyZWQKKyAgICAg
ICAgZGV2aWNlIHRvIGhpdCB0aGUgQm9vdGVkIHN0YXRlLCB0aGVuIHNsZWVwIGZvciA1IHNlY29u
ZHMKKyAgICAgICAgZm9yIG90aGVyIHNlcnZpY2VzIHRvIGNvbWUgdXAuCisgICAgICAgIChydW5J
T1NXZWJLaXRBcHBJblNpbXVsYXRvcik6CisgICAgICAgIFVzZSBzaW1jdGwgbGF1bmNoLgorICAg
ICAgICAoaW5zdGFsbElPU1dlYktpdEFwcEluU2ltdWxhdG9yKToKKyAgICAgICAgVXNlIHNpbWN0
bCBpbnN0YWxsLgorICAgICAgICAobG9hZElQaG9uZVNpbXVsYXRvck5vdGlmaWNhdGlvbklmTmVl
ZGVkKTogRGVsZXRlZC4KKyAgICAgICAgKGluc3RhbGxBbmRMYXVuY2hJT1NXZWJLaXRBcHBJblNp
bXVsYXRvcik6IERlbGV0ZWQuCisKKzIwMTQtMDgtMDUgIERhdmlkIEZhcmxlciAgPGRmYXJsZXJA
YXBwbGUuY29tPgorCiAgICAgICAgIFtpT1NdIFJ1biBJbWFnZURpZmYgaW4gdGhlIHNpbSBib290
c3RyYXAKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEz
NTYyNAogCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdGRpcnMucG0gYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdGRpcnMucG0KaW5kZXggYTg5MjVkMWFiNDAyZDVjYzIyYmY0MGM2ZTRmOGE4
MDZiOTBlZjk5Ny4uNWM3ZmYyOGI5NGJjODFmOTk0ZmI3ZmE5MGNiOTUxMmY3YmEwMDQ3YSAxMDA3
NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRkaXJzLnBtCisrKyBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0ZGlycy5wbQpAQCAtNjMsNyArNjMsOCBAQCBCRUdJTiB7CiAgICAgICAgJmN1cnJlbnRT
Vk5SZXZpc2lvbgogICAgICAgICZkZWJ1Z1NhZmFyaQogICAgICAgICZmaW5kT3JDcmVhdGVTaW11
bGF0b3JGb3JJT1NEZXZpY2UKLSAgICAgICAmaW5zdGFsbEFuZExhdW5jaElPU1dlYktpdEFwcElu
U2ltdWxhdG9yCisgICAgICAgJmluc3RhbGxJT1NXZWJLaXRBcHBJblNpbXVsYXRvcgorICAgICAg
ICZydW5JT1NXZWJLaXRBcHBJblNpbXVsYXRvcgogICAgICAgICZpb3NTaW11bGF0b3JEZXZpY2VC
eU5hbWUKICAgICAgICAmbm1QYXRoCiAgICAgICAgJm9wZW5JT1NTaW11bGF0b3IKQEAgLTIxODYs
MzAgKzIxODcsMTkgQEAgc3ViIGFwcERpc3BsYXlOYW1lRnJvbUJ1bmRsZSgkKQogICAgIHJldHVy
biAkYnVuZGxlRGlzcGxheU5hbWU7CiB9CiAKLXN1YiBsb2FkSVBob25lU2ltdWxhdG9yTm90aWZp
Y2F0aW9uSWZOZWVkZWQoKQotewotICAgIHJldHVybiBpZiAkZGlkTG9hZElQaG9uZVNpbXVsYXRv
ck5vdGlmaWNhdGlvbjsKLSAgICBwdXNoKEBJTkMsIHByb2R1Y3REaXIoKSAuICIvbGliL3Blcmw1
L2Rhcndpbi10aHJlYWQtbXVsdGktMmxldmVsIik7Ci0gICAgcmVxdWlyZSBJUGhvbmVTaW11bGF0
b3JOb3RpZmljYXRpb247Ci0gICAgJGRpZExvYWRJUGhvbmVTaW11bGF0b3JOb3RpZmljYXRpb24g
PSAxOwotfQotCi1zdWIgb3BlbklPU1NpbXVsYXRvcigpCitzdWIgb3BlbklPU1NpbXVsYXRvcigk
KQogeworICAgIG15ICRzaW11bGF0ZWREZXZpY2UgPSBzaGlmdDsKICAgICBjaG9tcChteSAkZGV2
ZWxvcGVyRGlyZWN0b3J5ID0gJEVOVntERVZFTE9QRVJfRElSfSB8fCBgeGNvZGUtc2VsZWN0IC0t
cHJpbnQtcGF0aGApOwogICAgIG15ICRpb3NTaW11bGF0b3JQYXRoID0gRmlsZTo6U3BlYy0+Y2F0
ZmlsZSgkZGV2ZWxvcGVyRGlyZWN0b3J5LCAiQXBwbGljYXRpb25zIiwgImlPUyBTaW11bGF0b3Iu
YXBwIik7CiAKLSAgICBsb2FkSVBob25lU2ltdWxhdG9yTm90aWZpY2F0aW9uSWZOZWVkZWQoKTsK
LQotICAgIG15ICRpUGhvbmVTaW11bGF0b3JOb3RpZmljYXRpb24gPSBuZXcgSVBob25lU2ltdWxh
dG9yTm90aWZpY2F0aW9uOwotICAgICRpUGhvbmVTaW11bGF0b3JOb3RpZmljYXRpb24tPnN0YXJ0
T2JzZXJ2aW5nUmVhZHlOb3RpZmljYXRpb24oKTsKLSAgICBzeXN0ZW0oIm9wZW4iLCAiLWEiLCAk
aW9zU2ltdWxhdG9yUGF0aCwgIi0tYXJncyIsICItU2Vzc2lvbk9uTGF1bmNoIiwgIk5PIikgPT0g
MCBvciBkaWUgIkZhaWxlZCB0byBvcGVuICRpb3NTaW11bGF0b3JQYXRoOiAkISI7Ci0gICAgd2hp
bGUgKCEkaVBob25lU2ltdWxhdG9yTm90aWZpY2F0aW9uLT5oYXNSZWNlaXZlZFJlYWR5Tm90aWZp
Y2F0aW9uKCkpIHsKLSAgICAgICAgbXkgJGRhdGUgPSBOU0RhdGUtPmFsbG9jKCktPmluaXRXaXRo
VGltZUludGVydmFsU2luY2VOb3dfKDAuMSk7Ci0gICAgICAgIE5TUnVuTG9vcC0+Y3VycmVudFJ1
bkxvb3AtPnJ1blVudGlsRGF0ZV8oJGRhdGUpOwotICAgICAgICAkZGF0ZS0+cmVsZWFzZSgpOwot
ICAgIH0KLSAgICAkaVBob25lU2ltdWxhdG9yTm90aWZpY2F0aW9uLT5zdG9wT2JzZXJ2aW5nUmVh
ZHlOb3RpZmljYXRpb24oKTsKKyAgICBzeXN0ZW0oIm9wZW4iLCAiLWEiLCAkaW9zU2ltdWxhdG9y
UGF0aCwgIi0tYXJncyIsICItQ3VycmVudERldmljZVVESUQiLCAkc2ltdWxhdGVkRGV2aWNlLT57
VURJRH0pID09IDAgb3IgZGllICJGYWlsZWQgdG8gb3BlbiAkaW9zU2ltdWxhdG9yUGF0aDogJCEi
OworICAgIG15ICRkZXZpY2U7CisgICAgZG8geworICAgICAgICAkZGV2aWNlID0gaW9zU2ltdWxh
dG9yRGV2aWNlQnlOYW1lKCRzaW11bGF0ZWREZXZpY2UtPntuYW1lfSk7CisgICAgICAgIHNsZWVw
IDI7CisgICAgfSB3aGlsZSAoJGRldmljZS0+e3N0YXRlfSBuZSAnMycpOworICAgIHNsZWVwIDU7
CiB9CiAKIHN1YiBxdWl0SU9TU2ltdWxhdG9yKCkKQEAgLTIyNTUsMTIgKzIyNDUsMTUgQEAgc3Vi
IGZpbmRPckNyZWF0ZVNpbXVsYXRvckZvcklPU0RldmljZSgkKQogICAgIHJldHVybiBjcmVhdGVp
T1NTaW11bGF0b3JEZXZpY2UoJHNpbXVsYXRvck5hbWUsICRzaW11bGF0b3JEZXZpY2VUeXBlLCBp
b3NTaW11bGF0b3JSdW50aW1lKCkpOwogfQogCi1zdWIgcnVuSU9TV2ViS2l0QXBwSW5TaW11bGF0
b3IoJDskKQorc3ViIHJ1bklPU1dlYktpdEFwcEluU2ltdWxhdG9yCiB7CiAgICAgbXkgKCRhcHBC
dW5kbGUsICRzaW11bGF0b3JPcHRpb25zKSA9IEBfOwogICAgIG15ICRwcm9kdWN0RGlyID0gcHJv
ZHVjdERpcigpOwogICAgIG15ICRhcHBEaXNwbGF5TmFtZSA9IGFwcERpc3BsYXlOYW1lRnJvbUJ1
bmRsZSgkYXBwQnVuZGxlKTsKICAgICBwcmludCAiU3RhcnRpbmcgJGFwcERpc3BsYXlOYW1lIHdp
dGggRFlMRF9GUkFNRVdPUktfUEFUSCBzZXQgdG8gcG9pbnQgdG8gYnVpbHQgV2ViS2l0IGluICRw
cm9kdWN0RGlyLlxuIjsKKyAgICBteSAkc2ltdWxhdGVkRGV2aWNlID0gZmluZE9yQ3JlYXRlU2lt
dWxhdG9yRm9ySU9TRGV2aWNlKCJGb3IgV2ViS2l0IERldmVsb3BtZW50Iik7CisgICAgcXVpdElP
U1NpbXVsYXRvcigpOworICAgIG9wZW5JT1NTaW11bGF0b3IoJHNpbXVsYXRlZERldmljZSk7CiAK
ICAgICAkc2ltdWxhdG9yT3B0aW9ucyA9IHt9IHVubGVzcyAkc2ltdWxhdG9yT3B0aW9uczsKIApA
QCAtMjI3MSw4ICsyMjY0LDE1IEBAIHN1YiBydW5JT1NXZWJLaXRBcHBJblNpbXVsYXRvcigkOyQp
CiAgICAgICAgIHNldHVwSU9TV2ViS2l0RW52aXJvbm1lbnQoJHByb2R1Y3REaXIpOwogICAgICAg
ICAlc2ltdWxhdG9yRU5WID0gJUVOVjsKICAgICB9Ci0gICAgJHNpbXVsYXRvck9wdGlvbnMtPnth
cHBsaWNhdGlvbkVudmlyb25tZW50fSA9IFwlc2ltdWxhdG9yRU5WOwotICAgIHJldHVybiBpbnN0
YWxsQW5kTGF1bmNoSU9TV2ViS2l0QXBwSW5TaW11bGF0b3IoJGFwcEJ1bmRsZSwgZmluZE9yQ3Jl
YXRlU2ltdWxhdG9yRm9ySU9TRGV2aWNlKCJGb3IgV2ViS2l0IERldmVsb3BtZW50IiksICRzaW11
bGF0b3JPcHRpb25zKSA8PSAwOworICAgIG15ICRhcHBsaWNhdGlvbkFyZ3VtZW50cyA9IFxAQVJH
VjsKKyAgICAkYXBwbGljYXRpb25Bcmd1bWVudHMgPSAkc2ltdWxhdG9yT3B0aW9ucy0+e2FwcGxp
Y2F0aW9uQXJndW1lbnRzfSBpZiAkc2ltdWxhdG9yT3B0aW9ucyAmJiAkc2ltdWxhdG9yT3B0aW9u
cy0+e2FwcGxpY2F0aW9uQXJndW1lbnRzfTsKKyAgICBmb3JlYWNoIG15ICRrZXkgKGtleXMoJXNp
bXVsYXRvckVOVikpIHsKKyAgICAgICAgJEVOVnsiU0lNQ1RMX0NISUxEXyRrZXkifSA9ICRzaW11
bGF0b3JFTlZ7JGtleX07CisgICAgfQorICAgIG15ICRhcHBJZGVudGlmaWVyID0gYXBwSWRlbnRp
ZmVyRnJvbUJ1bmRsZSgkYXBwQnVuZGxlKTsKKyAgICBwcmludCAiTGF1bmNoaW5nICRhcHBJZGVu
dGlmaWVyIC4uLlxuIjsKKyAgICBzeXN0ZW0oJ3hjcnVuJywgJy1zZGsnLCAnaXBob25lc2ltdWxh
dG9yJywgJ3NpbWN0bCcsICdsYXVuY2gnLCAkc2ltdWxhdGVkRGV2aWNlLT57VURJRH0sICRhcHBJ
ZGVudGlmaWVyLCBAJGFwcGxpY2F0aW9uQXJndW1lbnRzKTsKKyAgICByZXR1cm4gJD87CiB9CiAK
ICMgTGF1bmNoZXMgdGhlIGlPUyBXZWJLaXQtYmFzZWQgYXBwbGljYXRpb24gaW4gdGhlIHNwZWNp
ZmllZCBzaW11bGF0b3IgZGV2aWNlIGFuZCBkeW5hbWljYWxseQpAQCAtMjI4OSw2MSArMjI4OSwx
NSBAQCBzdWIgcnVuSU9TV2ViS2l0QXBwSW5TaW11bGF0b3IoJDskKQogIyAgICAgYXBwbGljYXRp
b25FbnZpcm9ubWVudDogYSBoYXNoIHJlZmVyZW5jZSByZXByZXNlbnRpbmcgdGhlIGVudmlyb25t
ZW50IHZhcmlhYmxlcyB0byB1c2Ugd2hlbiBsYXVuY2hpbmcgdGhlIGFwcCAoZGVmYXVsdHMgdG8g
e30pLgogIwogIyBSZXR1cm5zIHRoZSBwcm9jZXNzIGlkZW50aWZpZXIgb2YgdGhlIGxhdW5jaGVk
IGFwcC4KLXN1YiBpbnN0YWxsQW5kTGF1bmNoSU9TV2ViS2l0QXBwSW5TaW11bGF0b3IoJCQ7JCkK
K3N1YiBpbnN0YWxsSU9TV2ViS2l0QXBwSW5TaW11bGF0b3IoJCQ7JCkKIHsKICAgICBteSAoJGFw
cEJ1bmRsZSwgJHNpbXVsYXRlZERldmljZSwgJHNpbXVsYXRvck9wdGlvbnMpID0gQF87CiAKLSAg
ICBsb2FkSVBob25lU2ltdWxhdG9yTm90aWZpY2F0aW9uSWZOZWVkZWQoKTsKLQotICAgIG15ICRt
YWtlTlNEaWN0aW9uYXJ5RnJvbUhhc2ggPSBzdWIgewotICAgICAgICBteSAoJGRpY3QpID0gQF87
Ci0gICAgICAgIG15ICRyZXN1bHQgPSBOU011dGFibGVEaWN0aW9uYXJ5LT5hbGxvYygpLT5pbml0
V2l0aENhcGFjaXR5XyhzY2FsYXIoa2V5cyAleyRkaWN0fSkpOwotICAgICAgICBmb3IgbXkgJGtl
eSAoa2V5cyAleyRkaWN0fSkgewotICAgICAgICAgICAgJHJlc3VsdC0+c2V0T2JqZWN0X2Zvcktl
eV8oTlNTdHJpbmctPnN0cmluZ1dpdGhDU3RyaW5nXygkZGljdC0+eyRrZXl9KSwgTlNTdHJpbmct
PnN0cmluZ1dpdGhDU3RyaW5nXygka2V5KSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuICRy
ZXN1bHQtPmF1dG9yZWxlYXNlKCk7Ci0gICAgfTsKLSAgICBteSAkbWFrZU5TQXJyYXlGcm9tQXJy
YXkgPSBzdWIgewotICAgICAgICBteSAoJGFycmF5KSA9IEBfOwotICAgICAgICBteSAkcmVzdWx0
ID0gTlNNdXRhYmxlQXJyYXktPmFsbG9jKCktPmluaXRXaXRoQ2FwYWNpdHlfKHNjYWxhcihAeyRh
cnJheX0pKTsKLSAgICAgICAgZm9yIG15ICRpdGVtIChAeyRhcnJheX0pIHsKLSAgICAgICAgICAg
ICRyZXN1bHQtPmFkZE9iamVjdF8oTlNTdHJpbmctPnN0cmluZ1dpdGhDU3RyaW5nXygkaXRlbSkp
OwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiAkcmVzdWx0LT5hdXRvcmVsZWFzZSgpOwotICAg
IH07Ci0KLSAgICBteSAkc2ltdWxhdG9yRU5WSGFzaFJlZiA9IHt9OwotICAgICRzaW11bGF0b3JF
TlZIYXNoUmVmID0gJHNpbXVsYXRvck9wdGlvbnMtPnthcHBsaWNhdGlvbkVudmlyb25tZW50fSBp
ZiAkc2ltdWxhdG9yT3B0aW9ucyAmJiAkc2ltdWxhdG9yT3B0aW9ucy0+e2FwcGxpY2F0aW9uRW52
aXJvbm1lbnR9OwotICAgIG15ICRhcHBsaWNhdGlvbkFyZ3VtZW50cyA9IFxAQVJHVjsKLSAgICAk
YXBwbGljYXRpb25Bcmd1bWVudHMgPSAkc2ltdWxhdG9yT3B0aW9ucy0+e2FwcGxpY2F0aW9uQXJn
dW1lbnRzfSBpZiAkc2ltdWxhdG9yT3B0aW9ucyAmJiAkc2ltdWxhdG9yT3B0aW9ucy0+e2FwcGxp
Y2F0aW9uQXJndW1lbnRzfTsKLSAgICBteSAkc2Vzc2lvblVVSUQ7Ci0gICAgaWYgKCRzaW11bGF0
b3JPcHRpb25zICYmICRzaW11bGF0b3JPcHRpb25zLT57c2Vzc2lvblVVSUR9KSB7Ci0gICAgICAg
ICRzZXNzaW9uVVVJRCA9ICRzaW11bGF0b3JPcHRpb25zLT57c2Vzc2lvblVVSUR9OwotICAgIH0g
ZWxzZSB7Ci0gICAgICAgICRzZXNzaW9uVVVJRCA9ICJ0aGVBd2Vzb21lVW5pcXVlU2Vzc2lvbklk
ZW50aWZpZXJGb3IiIC4gYXBwRGlzcGxheU5hbWVGcm9tQnVuZGxlKCRhcHBCdW5kbGUpOwotICAg
IH0KICAgICAjIEZJWE1FOiBXZSBzaG91bGQgaGF2ZSB0aGUgaU9TIGFwcGxpY2F0aW9uIGFkb3B0
IHRoZSBmaWxlcyBkZXNjcmlwdG9ycyBmb3Igb3VyIHN0YW5kYXJkIG91dHB1dCBhbmQgZXJyb3Ig
c3RyZWFtcy4KLSAgICBteSAkc2Vzc2lvbkluZm8gPSB7Ci0gICAgICAgIGFwcGxpY2F0aW9uQXJn
dW1lbnRzID0+ICYkbWFrZU5TQXJyYXlGcm9tQXJyYXkoJGFwcGxpY2F0aW9uQXJndW1lbnRzKSwK
LSAgICAgICAgYXBwbGljYXRpb25FbnZpcm9ubWVudCA9PiAmJG1ha2VOU0RpY3Rpb25hcnlGcm9t
SGFzaCgkc2ltdWxhdG9yRU5WSGFzaFJlZiksCi0gICAgICAgIGFwcGxpY2F0aW9uSWRlbnRpZmll
ciA9PiBOU1N0cmluZy0+c3RyaW5nV2l0aENTdHJpbmdfKGFwcElkZW50aWZlckZyb21CdW5kbGUo
JGFwcEJ1bmRsZSkpLAotICAgICAgICBhcHBsaWNhdGlvblBhdGggPT4gTlNTdHJpbmctPnN0cmlu
Z1dpdGhDU3RyaW5nXygkYXBwQnVuZGxlKSwKLSAgICAgICAgZGV2aWNlVURJRCA9PiBOU1N0cmlu
Zy0+c3RyaW5nV2l0aENTdHJpbmdfKCRzaW11bGF0ZWREZXZpY2UtPntVRElEfSksCi0gICAgICAg
IHNlc3Npb25VVUlEID0+IE5TU3RyaW5nLT5zdHJpbmdXaXRoQ1N0cmluZ18oJHNlc3Npb25VVUlE
KSwKLSAgICB9OwotCi0gICAgb3BlbklPU1NpbXVsYXRvcigpOwotCi0gICAgbXkgJGlQaG9uZVNp
bXVsYXRvck5vdGlmaWNhdGlvbiA9IG5ldyBJUGhvbmVTaW11bGF0b3JOb3RpZmljYXRpb247Ci0g
ICAgJGlQaG9uZVNpbXVsYXRvck5vdGlmaWNhdGlvbi0+c3RhcnRPYnNlcnZpbmdBcHBsaWNhdGlv
bkxhdW5jaGVkTm90aWZpY2F0aW9uKCk7Ci0gICAgJGlQaG9uZVNpbXVsYXRvck5vdGlmaWNhdGlv
bi0+cG9zdFN0YXJ0U2Vzc2lvbk5vdGlmaWNhdGlvbigkc2Vzc2lvbkluZm8pOwotICAgIHdoaWxl
ICghJGlQaG9uZVNpbXVsYXRvck5vdGlmaWNhdGlvbi0+aGFzUmVjZWl2ZWRBcHBsaWNhdGlvbkxh
dW5jaGVkTm90aWZpY2F0aW9uKCkpIHsKLSAgICAgICAgbXkgJGRhdGUgPSBOU0RhdGUtPmFsbG9j
KCktPmluaXRXaXRoVGltZUludGVydmFsU2luY2VOb3dfKDAuMSk7Ci0gICAgICAgIE5TUnVuTG9v
cC0+Y3VycmVudFJ1bkxvb3AtPnJ1blVudGlsRGF0ZV8oJGRhdGUpOwotICAgICAgICAkZGF0ZS0+
cmVsZWFzZSgpOwotICAgIH0KLSAgICAkaVBob25lU2ltdWxhdG9yTm90aWZpY2F0aW9uLT5zdG9w
T2JzZXJ2aW5nQXBwbGljYXRpb25MYXVuY2hlZE5vdGlmaWNhdGlvbigpOwotICAgIHJldHVybiAk
aVBob25lU2ltdWxhdG9yTm90aWZpY2F0aW9uLT5hcHBsaWNhdGlvbkxhdW5jaGVkQXBwbGljYXRp
b25QSUQoKTsKKyAgICBvcGVuSU9TU2ltdWxhdG9yKCRzaW11bGF0ZWREZXZpY2UpOworICAgIHBy
aW50ICJJbnN0YWxsaW5nICRhcHBCdW5kbGUgLi4uXG4iOworICAgIHN5c3RlbSgneGNydW4nLCAn
LXNkaycsICdpcGhvbmVzaW11bGF0b3InLCAnc2ltY3RsJywgJ2luc3RhbGwnLCAkc2ltdWxhdGVk
RGV2aWNlLT57VURJRH0sICRhcHBCdW5kbGUpOworICAgIHJldHVybiAkPzsKIH0KIAogc3ViIHJ1
bklPU1dlYktpdEFwcCgkKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>244566</attachid>
            <date>2015-01-13 18:03:02 -0800</date>
            <delta_ts>2015-01-15 17:51:51 -0800</delta_ts>
            <desc>Work-in-progress patch</desc>
            <filename>bug-135589-20150113180306.patch</filename>
            <type>text/plain</type>
            <size>11940</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc4MzYzCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMWUzZWEzMjk2MDI3NzI4ZGE4Mzg5MDVmODcyYjcxNTUy
MGUxYWRmNC4uYzBlOGRmOGFhYjg4ZDg3OWUxZGVjNTViZTgxNjY2YzU2NzFlZmMwZiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMz
IEBACisyMDE1LTAxLTEzICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAg
ICAgICBSRUdSRVNTSU9OIChyMTcxOTY4KTogcnVuLXNhZmFyaSAtLXNpbXVsYXRvciBmYWlscyB0
byBsYXVuY2ggU2FmYXJpIG9uIGlPUworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTM1NTg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgRGVyaXZlZCBmcm9tIGEgcGF0Y2ggYnkgRGF2aWQgRmFybGVyLgorCisg
ICAgICAgIEZvbGxvd2luZyB0aGUgcmVtb3ZhbCBJUGhvbmVTaW11bGF0b3JOb3RpZmljYXRpb24u
cG0gaW4gPGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzE3MTk2OD4KKyAgICAgICAg
cnVuLXNhZmFyaSAtLXNpbXVsYXRvciBmYWlscyB0byBsYXVuY2ggU2FmYXJpIG9uIGlPUy4gV2Ug
bmVlZCB0byBpbXBsZW1lbnQgcnVuLXNhZmFyaQorICAgICAgICBpbiB0ZXJtcyBvZiB0aGUgc2lt
Y3RsIGNvbW1hbmQgbGluZSB1dGlsaXR5LgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRkaXJz
LnBtOgorICAgICAgICAoaW9zU2ltdWxhdG9yQXBwbGljYXRpb25zUGF0aCk6IEFkZGVkLgorICAg
ICAgICAoaW5zdGFsbGVkTW9iaWxlU2FmYXJpQnVuZGxlKTogSW1wbGVtZW50IGluIHRlcm1zIG9m
IGlvc1NpbXVsYXRvckFwcGxpY2F0aW9uc1BhdGgoKS4KKyAgICAgICAgKG9wZW5JT1NTaW11bGF0
b3IpOiBNb2RpZmllZCB0byBsYXVuY2ggaU9TIFNpbXVsYXRvciB1c2luZyBPUEVOKDEpLgorICAg
ICAgICAocXVpdElPU1NpbXVsYXRvcik6IEFkZGVkLgorICAgICAgICAoaW9zU2ltdWxhdG9yRGV2
aWNlQnlOYW1lKTogTW9kaWZpZWQgdG8gZmluZCB0aGUgZmlyc3Qgc2ltdWxhdG9yIGRldmljZSB0
aGF0IG1hdGNoZXMKKyAgICAgICAgdGhlIHNwZWNpZmllZCBuYW1lIGFuZCBjdXJyZW50bHkgc2Vs
ZWN0ZWQgaU9TIHJ1bnRpbWUuCisgICAgICAgIChpc0lPU1NpbXVsYXRvclN5c3RlbUluc3RhbGxl
ZEFwcCk6IEFkZGVkLgorICAgICAgICAocnVuSU9TV2ViS2l0QXBwSW5TaW11bGF0b3IpOiBNb2Rp
ZmllZCB0byB1c2Ugc2ltY3RsIGxhdW5jaCB0byBsYXVuY2ggYW4gYXBwLiBGb3Igbm93IHdlCisg
ICAgICAgIG9ubHkgc3VwcG9ydCBsYXVuY2hpbmcgc3lzdGVtLWluc3RhbGxlZCBhcHBzLiBXZSB3
aWxsIGFkZCBzdXBwb3J0IGZvciBpbnN0YWxsaW5nIGFuZAorICAgICAgICBsYXVuY2hpbmcgY3Vz
dG9tIGJ1aWx0IGFwcHMgaW4gYSBzdWJzZXF1ZW50IGNvbW1pdChzKS4KKyAgICAgICAgKHJ1blNh
ZmFyaSk6IE9ubHkgbGF1bmNoIHRoZSBzeXN0ZW0taW5zdGFsbGVkIFNhZmFyaSBhcHAgZm9yIG5v
dy4gQWRkZWQgRklYTUUgY29tbWVudCB0bworICAgICAgICBwYXNzIG1vYmlsZVNhZmFyaUJ1bmRs
ZSgpIHRvIHJ1bklPU1dlYktpdEFwcEluU2ltdWxhdG9yKCkgb25jZSB3ZSBpbXBsZW1lbnQgc3Vw
cG9ydCB0bworICAgICAgICBsYXVuY2hpbmcgY3VzdG9tIGJ1aWx0IGFwcHMgaW4gdGhlIGlPUyBT
aW11bGF0b3IuCisgICAgICAgIChsb2FkSVBob25lU2ltdWxhdG9yTm90aWZpY2F0aW9uSWZOZWVk
ZWQpOiBEZWxldGVkLgorICAgICAgICAoaW5zdGFsbEFuZExhdW5jaElPU1dlYktpdEFwcEluU2lt
dWxhdG9yKTogRGVsZXRlZC4KKwogMjAxNS0wMS0xMiAgSHVuc2VvcCBKZW9uZyAgPGhzODUuamVv
bmdAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0VGTF1bR1RLXSBGaXggYnVpbGQgYWZ0ZXIgcjE3
ODMwOSAgCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdGRpcnMucG0gYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdGRpcnMucG0KaW5kZXggODYxOTliOGNiOGJjYmMxMmVjYzlhOWE2MTA0NTJi
N2VmMjMyMzhkYi4uOTUwMDc3ODU4YjJjNGEyMzhhODZlYzgzOWU4ODRiYzJiYmEwYWRmZiAxMDA3
NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRkaXJzLnBtCisrKyBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0ZGlycy5wbQpAQCAtNjMsNyArNjMsNiBAQCBCRUdJTiB7CiAgICAgICAgJmN1cnJlbnRT
Vk5SZXZpc2lvbgogICAgICAgICZkZWJ1Z1NhZmFyaQogICAgICAgICZmaW5kT3JDcmVhdGVTaW11
bGF0b3JGb3JJT1NEZXZpY2UKLSAgICAgICAmaW5zdGFsbEFuZExhdW5jaElPU1dlYktpdEFwcElu
U2ltdWxhdG9yCiAgICAgICAgJmlvc1NpbXVsYXRvckRldmljZUJ5TmFtZQogICAgICAgICZubVBh
dGgKICAgICAgICAmb3BlbklPU1NpbXVsYXRvcgpAQCAtODYsNiArODUsNyBAQCBCRUdJTiB7CiAK
IHVzZSBjb25zdGFudCBVU0VfT1BFTl9DT01NQU5EID0+IDE7ICMgVXNlZCBpbiBydW5NYWNXZWJL
aXRBcHAoKS4KIHVzZSBjb25zdGFudCBJTkNMVURFX09QVElPTlNfRk9SX0RFQlVHR0lORyA9PiAx
OwordXNlIGNvbnN0YW50IFNJTVVMQVRPUl9ERVZJQ0VfU1RBVEVfQk9PVEVEID0+ICIzIjsKIAog
b3VyIEBFWFBPUlRfT0s7CiAKQEAgLTIwMjYsOSArMjAyNiwxNCBAQCBzdWIgc2V0dXBJT1NXZWJL
aXRFbnZpcm9ubWVudCgkKQogICAgIHNldFVwR3VhcmRNYWxsb2NJZk5lZWRlZCgpOwogfQogCitz
dWIgaW9zU2ltdWxhdG9yQXBwbGljYXRpb25zUGF0aCgpCit7CisgICAgcmV0dXJuIEZpbGU6OlNw
ZWMtPmNhdGZpbGUoWGNvZGVTREtQYXRoKCksICJBcHBsaWNhdGlvbnMiKTsKK30KKwogc3ViIGlu
c3RhbGxlZE1vYmlsZVNhZmFyaUJ1bmRsZSgpCiB7Ci0gICAgcmV0dXJuIEZpbGU6OlNwZWMtPmNh
dGZpbGUoWGNvZGVTREtQYXRoKCksICJBcHBsaWNhdGlvbnMiLCAiTW9iaWxlU2FmYXJpLmFwcCIp
OworICAgIHJldHVybiBGaWxlOjpTcGVjLT5jYXRmaWxlKGlvc1NpbXVsYXRvckFwcGxpY2F0aW9u
c1BhdGgoKSwgIk1vYmlsZVNhZmFyaS5hcHAiKTsKIH0KIAogc3ViIG1vYmlsZVNhZmFyaUJ1bmRs
ZSgpCkBAIC0yMDY2LDQ0ICsyMDcxLDM2IEBAIHN1YiBhcHBEaXNwbGF5TmFtZUZyb21CdW5kbGUo
JCkKICAgICByZXR1cm4gJGJ1bmRsZURpc3BsYXlOYW1lOwogfQogCi1zdWIgbG9hZElQaG9uZVNp
bXVsYXRvck5vdGlmaWNhdGlvbklmTmVlZGVkKCkKLXsKLSAgICByZXR1cm4gaWYgJGRpZExvYWRJ
UGhvbmVTaW11bGF0b3JOb3RpZmljYXRpb247Ci0gICAgcHVzaChASU5DLCBwcm9kdWN0RGlyKCkg
LiAiL2xpYi9wZXJsNS9kYXJ3aW4tdGhyZWFkLW11bHRpLTJsZXZlbCIpOwotICAgIHJlcXVpcmUg
SVBob25lU2ltdWxhdG9yTm90aWZpY2F0aW9uOwotICAgICRkaWRMb2FkSVBob25lU2ltdWxhdG9y
Tm90aWZpY2F0aW9uID0gMTsKLX0KLQotc3ViIG9wZW5JT1NTaW11bGF0b3IoKQorc3ViIG9wZW5J
T1NTaW11bGF0b3IoJCkKIHsKKyAgICBteSAoJHNpbXVsYXRlZERldmljZSkgPSBAXzsKICAgICBj
aG9tcChteSAkZGV2ZWxvcGVyRGlyZWN0b3J5ID0gJEVOVntERVZFTE9QRVJfRElSfSB8fCBgeGNv
ZGUtc2VsZWN0IC0tcHJpbnQtcGF0aGApOwogICAgIG15ICRpb3NTaW11bGF0b3JQYXRoID0gRmls
ZTo6U3BlYy0+Y2F0ZmlsZSgkZGV2ZWxvcGVyRGlyZWN0b3J5LCAiQXBwbGljYXRpb25zIiwgImlP
UyBTaW11bGF0b3IuYXBwIik7CiAKLSAgICBsb2FkSVBob25lU2ltdWxhdG9yTm90aWZpY2F0aW9u
SWZOZWVkZWQoKTsKKyAgICBzeXN0ZW0oIm9wZW4iLCAiLWEiLCAkaW9zU2ltdWxhdG9yUGF0aCwg
Ii0tYXJncyIsICItQ3VycmVudERldmljZVVESUQiLCAkc2ltdWxhdGVkRGV2aWNlLT57VURJRH0p
ID09IDAgb3IgZGllICJGYWlsZWQgdG8gb3BlbiAkaW9zU2ltdWxhdG9yUGF0aDogJCEiOworICAg
IG15ICRkZXZpY2U7CisgICAgZG8geworICAgICAgICAkZGV2aWNlID0gaW9zU2ltdWxhdG9yRGV2
aWNlQnlOYW1lKCRzaW11bGF0ZWREZXZpY2UtPntuYW1lfSk7CisgICAgICAgIHNsZWVwKDIpOwor
ICAgIH0gd2hpbGUgKCRkZXZpY2UtPntzdGF0ZX0gbmUgU0lNVUxBVE9SX0RFVklDRV9TVEFURV9C
T09URUQpOworfQogCi0gICAgbXkgJGlQaG9uZVNpbXVsYXRvck5vdGlmaWNhdGlvbiA9IG5ldyBJ
UGhvbmVTaW11bGF0b3JOb3RpZmljYXRpb247Ci0gICAgJGlQaG9uZVNpbXVsYXRvck5vdGlmaWNh
dGlvbi0+c3RhcnRPYnNlcnZpbmdSZWFkeU5vdGlmaWNhdGlvbigpOwotICAgIHN5c3RlbSgib3Bl
biIsICItYSIsICRpb3NTaW11bGF0b3JQYXRoLCAiLS1hcmdzIiwgIi1TZXNzaW9uT25MYXVuY2gi
LCAiTk8iKSA9PSAwIG9yIGRpZSAiRmFpbGVkIHRvIG9wZW4gJGlvc1NpbXVsYXRvclBhdGg6ICQh
IjsKLSAgICB3aGlsZSAoISRpUGhvbmVTaW11bGF0b3JOb3RpZmljYXRpb24tPmhhc1JlY2VpdmVk
UmVhZHlOb3RpZmljYXRpb24oKSkgewotICAgICAgICBteSAkZGF0ZSA9IE5TRGF0ZS0+YWxsb2Mo
KS0+aW5pdFdpdGhUaW1lSW50ZXJ2YWxTaW5jZU5vd18oMC4xKTsKLSAgICAgICAgTlNSdW5Mb29w
LT5jdXJyZW50UnVuTG9vcC0+cnVuVW50aWxEYXRlXygkZGF0ZSk7Ci0gICAgICAgICRkYXRlLT5y
ZWxlYXNlKCk7Ci0gICAgfQotICAgICRpUGhvbmVTaW11bGF0b3JOb3RpZmljYXRpb24tPnN0b3BP
YnNlcnZpbmdSZWFkeU5vdGlmaWNhdGlvbigpOworc3ViIHF1aXRJT1NTaW11bGF0b3IoKQorewor
ICAgIHJldHVybiBzeXN0ZW0geyJvc2FzY3JpcHQifSAib3Nhc2NyaXB0IiwgIi1lIiwgJ3RlbGwg
YXBwbGljYXRpb24gImlPUyBTaW11bGF0b3IiIHRvIHF1aXQnOwogfQogCiBzdWIgaW9zU2ltdWxh
dG9yRGV2aWNlQnlOYW1lKCQpCiB7CiAgICAgbXkgKCRzaW11bGF0b3JOYW1lKSA9IEBfOwotICAg
IG15IEBkZXZpY2VzID0gZ3JlcCB7JF8tPntuYW1lfSBlcSAkc2ltdWxhdG9yTmFtZX0gaU9TU2lt
dWxhdG9yRGV2aWNlcygpOwotICAgIG15ICRkZXZpY2VUb1VzZSA9ICRkZXZpY2VzWzBdOwotICAg
IGlmIChAZGV2aWNlcyA+IDEpIHsKLSAgICAgICAgcHJpbnQgIldhcm5pbmc6IEZvdW5kIG1vcmUg
dGhhbiBvbmUgc2ltdWxhdG9yIGRldmljZSBuYW1lZCAnJHNpbXVsYXRvck5hbWUnLlxuIjsKLSAg
ICAgICAgcHJpbnQgIiAgICAgICAgIFVzaW5nIHNpbXVsYXRvciBkZXZpY2Ugd2l0aCBVRElEOiAk
ZGV2aWNlVG9Vc2UtPntVRElEfS5cbiI7Ci0gICAgICAgIHByaW50ICIgICAgICAgICBUbyBzZWUg
dGhlIGxpc3Qgb2Ygc2ltdWxhdG9yIGRldmljZXMsIHJ1bjpcbiI7Ci0gICAgICAgIHByaW50ICIg
ICAgICAgICB4Y3J1biAtLXNkayBpcGhvbmVzaW11bGF0b3Igc2ltY3RsIGxpc3RcbiI7CisgICAg
bXkgJHNpbXVsYXRvclJ1bnRpbWUgPSBpb3NTaW11bGF0b3JSdW50aW1lKCk7CisgICAgbXkgQGRl
dmljZXMgPSBpT1NTaW11bGF0b3JEZXZpY2VzKCk7CisgICAgZm9yIG15ICRkZXZpY2UgKEBkZXZp
Y2VzKSB7CisgICAgICAgIGlmICgkZGV2aWNlLT57bmFtZX0gZXEgJHNpbXVsYXRvck5hbWUgJiYg
JGRldmljZS0+e3J1bnRpbWV9IGVxICRzaW11bGF0b3JSdW50aW1lKSB7CisgICAgICAgICAgICBy
ZXR1cm4gJGRldmljZTsKKyAgICAgICAgfQogICAgIH0KLSAgICByZXR1cm4gJGRldmljZVRvVXNl
OworICAgIHJldHVybiB1bmRlZjsKIH0KIAogc3ViIGlvc1NpbXVsYXRvclJ1bnRpbWUoKQpAQCAt
MjEzMCwxMiArMjEyNywyNSBAQCBzdWIgZmluZE9yQ3JlYXRlU2ltdWxhdG9yRm9ySU9TRGV2aWNl
KCQpCiAgICAgcmV0dXJuIGNyZWF0ZWlPU1NpbXVsYXRvckRldmljZSgkc2ltdWxhdG9yTmFtZSwg
JHNpbXVsYXRvckRldmljZVR5cGUsIGlvc1NpbXVsYXRvclJ1bnRpbWUoKSk7CiB9CiAKK3N1YiBp
c0lPU1NpbXVsYXRvclN5c3RlbUluc3RhbGxlZEFwcCgkKQoreworICAgIG15ICgkYXBwQnVuZGxl
KSA9IEBfOworICAgIG15ICRzaW11bGF0b3JBcHBsaWNhdGlvbnNQYXRoID0gaW9zU2ltdWxhdG9y
QXBwbGljYXRpb25zUGF0aCgpOworICAgIHJldHVybiBzdWJzdHIoJGFwcEJ1bmRsZSwgMCwgbGVu
Z3RoKCRzaW11bGF0b3JBcHBsaWNhdGlvbnNQYXRoKSkgZXEgJHNpbXVsYXRvckFwcGxpY2F0aW9u
c1BhdGg7Cit9CisKIHN1YiBydW5JT1NXZWJLaXRBcHBJblNpbXVsYXRvcigkOyQpCiB7CiAgICAg
bXkgKCRhcHBCdW5kbGUsICRzaW11bGF0b3JPcHRpb25zKSA9IEBfOwogICAgIG15ICRwcm9kdWN0
RGlyID0gcHJvZHVjdERpcigpOwotICAgIG15ICRhcHBEaXNwbGF5TmFtZSA9IGFwcERpc3BsYXlO
YW1lRnJvbUJ1bmRsZSgkYXBwQnVuZGxlKTsKLSAgICBwcmludCAiU3RhcnRpbmcgJGFwcERpc3Bs
YXlOYW1lIHdpdGggRFlMRF9GUkFNRVdPUktfUEFUSCBzZXQgdG8gcG9pbnQgdG8gYnVpbHQgV2Vi
S2l0IGluICRwcm9kdWN0RGlyLlxuIjsKKyAgICBpZiAoIWlzSU9TU2ltdWxhdG9yU3lzdGVtSW5z
dGFsbGVkQXBwKCRhcHBCdW5kbGUpKSB7CisgICAgICAgIGRpZSAiUnVubmluZyBhIG5vbi1zeXN0
ZW0gYXBwIGlzIG5vdCBzdXBwb3J0ZWQuXG4iOworICAgIH0KKworICAgIG15ICRhcHBEaXNwbGF5
TmFtZSA9IGFwcERpc3BsYXlOYW1lRnJvbUJ1bmRsZSgkYXBwQnVuZGxlKTs7CisgICAgbXkgJHNp
bXVsYXRlZERldmljZSA9IGZpbmRPckNyZWF0ZVNpbXVsYXRvckZvcklPU0RldmljZSgiRm9yIFdl
YktpdCBEZXZlbG9wbWVudCIpOworICAgIHF1aXRJT1NTaW11bGF0b3IoKTsKKyAgICBvcGVuSU9T
U2ltdWxhdG9yKCRzaW11bGF0ZWREZXZpY2UpOwogCiAgICAgJHNpbXVsYXRvck9wdGlvbnMgPSB7
fSB1bmxlc3MgJHNpbXVsYXRvck9wdGlvbnM7CiAKQEAgLTIxNDYsNzkgKzIxNTYsMTcgQEAgc3Vi
IHJ1bklPU1dlYktpdEFwcEluU2ltdWxhdG9yKCQ7JCkKICAgICAgICAgc2V0dXBJT1NXZWJLaXRF
bnZpcm9ubWVudCgkcHJvZHVjdERpcik7CiAgICAgICAgICVzaW11bGF0b3JFTlYgPSAlRU5WOwog
ICAgIH0KLSAgICAkc2ltdWxhdG9yT3B0aW9ucy0+e2FwcGxpY2F0aW9uRW52aXJvbm1lbnR9ID0g
XCVzaW11bGF0b3JFTlY7Ci0gICAgcmV0dXJuIGluc3RhbGxBbmRMYXVuY2hJT1NXZWJLaXRBcHBJ
blNpbXVsYXRvcigkYXBwQnVuZGxlLCBmaW5kT3JDcmVhdGVTaW11bGF0b3JGb3JJT1NEZXZpY2Uo
IkZvciBXZWJLaXQgRGV2ZWxvcG1lbnQiKSwgJHNpbXVsYXRvck9wdGlvbnMpIDw9IDA7Ci19Ci0K
LSMgTGF1bmNoZXMgdGhlIGlPUyBXZWJLaXQtYmFzZWQgYXBwbGljYXRpb24gaW4gdGhlIHNwZWNp
ZmllZCBzaW11bGF0b3IgZGV2aWNlIGFuZCBkeW5hbWljYWxseQotIyBsaW5rZWQgYWdhaW5zdCB0
aGUgYnVpbHQgV2ViS2l0LiBUaGUgYXBwbGljYXRpb24gd2lsbCBiZSBpbnN0YWxsZWQgaWYgYXBw
bGljYWJsZS4KLSMKLSMgQXJnczoKLSMgICAkYXBwQnVuZGxlOiB0aGUgcGF0aCB0byB0aGUgYXBw
IGJ1bmRsZSB0byBsYXVuY2guCi0jICAgJHNpbXVsYXRlZERldmljZTogdGhlIHNpbXVsYXRvciBk
ZXZpY2UgdG8gdXNlIHRvIHJ1biB0aGUgYXBwLgotIyAgICRzaW11bGF0b3JPcHRpb25zOiBhIGhh
c2ggcmVmZXJlbmNlIHJlcHJlc2VudGluZyBvcHRpb25hbCBzaW11bGF0b3Igb3B0aW9ucy4KLSMg
ICAgIHNlc3Npb25VVUlEOiBhIHVuaXF1ZSBpZGVudGlmaWVyIHRvIHVzZSBmb3IgdGhlIGlPUyBT
aW11bGF0b3Igc2Vzc2lvbi4gRGVmYXVsdHMgdG8gYW4gaWRlbnRpZmllcgotIyAgICAgICAgICAg
ICAgICAgIG9mIHRoZSBmb3JtICJ0aGVBd2Vzb21lVW5pcXVlU2Vzc2lvbklkZW50aWZpZXJGb3JY
IiB3aGVyZSBYIGlzIHRoZSBkaXNwbGF5IG5hbWUgb2YKLSMgICAgICAgICAgICAgICAgICB0aGUg
c3BlY2lmaWVkIGFwcC4KLSMgICAgIGFwcGxpY2F0aW9uQXJndW1lbnRzOiBhbiBhcnJheSByZWZl
cmVuY2UgcmVwcmVzZW50aW5nIHRoZSBhcmd1bWVudHMgdG8gcGFzcyB0byB0aGUgYXBwIChkZWZh
dWx0cyB0byBcQEFSR1YpLgotIyAgICAgYXBwbGljYXRpb25FbnZpcm9ubWVudDogYSBoYXNoIHJl
ZmVyZW5jZSByZXByZXNlbnRpbmcgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlcyB0byB1c2Ugd2hl
biBsYXVuY2hpbmcgdGhlIGFwcCAoZGVmYXVsdHMgdG8ge30pLgotIwotIyBSZXR1cm5zIHRoZSBw
cm9jZXNzIGlkZW50aWZpZXIgb2YgdGhlIGxhdW5jaGVkIGFwcC4KLXN1YiBpbnN0YWxsQW5kTGF1
bmNoSU9TV2ViS2l0QXBwSW5TaW11bGF0b3IoJCQ7JCkKLXsKLSAgICBteSAoJGFwcEJ1bmRsZSwg
JHNpbXVsYXRlZERldmljZSwgJHNpbXVsYXRvck9wdGlvbnMpID0gQF87Ci0KLSAgICBsb2FkSVBo
b25lU2ltdWxhdG9yTm90aWZpY2F0aW9uSWZOZWVkZWQoKTsKLQotICAgIG15ICRtYWtlTlNEaWN0
aW9uYXJ5RnJvbUhhc2ggPSBzdWIgewotICAgICAgICBteSAoJGRpY3QpID0gQF87Ci0gICAgICAg
IG15ICRyZXN1bHQgPSBOU011dGFibGVEaWN0aW9uYXJ5LT5hbGxvYygpLT5pbml0V2l0aENhcGFj
aXR5XyhzY2FsYXIoa2V5cyAleyRkaWN0fSkpOwotICAgICAgICBmb3IgbXkgJGtleSAoa2V5cyAl
eyRkaWN0fSkgewotICAgICAgICAgICAgJHJlc3VsdC0+c2V0T2JqZWN0X2ZvcktleV8oTlNTdHJp
bmctPnN0cmluZ1dpdGhDU3RyaW5nXygkZGljdC0+eyRrZXl9KSwgTlNTdHJpbmctPnN0cmluZ1dp
dGhDU3RyaW5nXygka2V5KSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuICRyZXN1bHQtPmF1
dG9yZWxlYXNlKCk7Ci0gICAgfTsKLSAgICBteSAkbWFrZU5TQXJyYXlGcm9tQXJyYXkgPSBzdWIg
ewotICAgICAgICBteSAoJGFycmF5KSA9IEBfOwotICAgICAgICBteSAkcmVzdWx0ID0gTlNNdXRh
YmxlQXJyYXktPmFsbG9jKCktPmluaXRXaXRoQ2FwYWNpdHlfKHNjYWxhcihAeyRhcnJheX0pKTsK
LSAgICAgICAgZm9yIG15ICRpdGVtIChAeyRhcnJheX0pIHsKLSAgICAgICAgICAgICRyZXN1bHQt
PmFkZE9iamVjdF8oTlNTdHJpbmctPnN0cmluZ1dpdGhDU3RyaW5nXygkaXRlbSkpOwotICAgICAg
ICB9Ci0gICAgICAgIHJldHVybiAkcmVzdWx0LT5hdXRvcmVsZWFzZSgpOwotICAgIH07Ci0KLSAg
ICBteSAkc2ltdWxhdG9yRU5WSGFzaFJlZiA9IHt9OwotICAgICRzaW11bGF0b3JFTlZIYXNoUmVm
ID0gJHNpbXVsYXRvck9wdGlvbnMtPnthcHBsaWNhdGlvbkVudmlyb25tZW50fSBpZiAkc2ltdWxh
dG9yT3B0aW9ucyAmJiAkc2ltdWxhdG9yT3B0aW9ucy0+e2FwcGxpY2F0aW9uRW52aXJvbm1lbnR9
OwogICAgIG15ICRhcHBsaWNhdGlvbkFyZ3VtZW50cyA9IFxAQVJHVjsKICAgICAkYXBwbGljYXRp
b25Bcmd1bWVudHMgPSAkc2ltdWxhdG9yT3B0aW9ucy0+e2FwcGxpY2F0aW9uQXJndW1lbnRzfSBp
ZiAkc2ltdWxhdG9yT3B0aW9ucyAmJiAkc2ltdWxhdG9yT3B0aW9ucy0+e2FwcGxpY2F0aW9uQXJn
dW1lbnRzfTsKLSAgICBteSAkc2Vzc2lvblVVSUQ7Ci0gICAgaWYgKCRzaW11bGF0b3JPcHRpb25z
ICYmICRzaW11bGF0b3JPcHRpb25zLT57c2Vzc2lvblVVSUR9KSB7Ci0gICAgICAgICRzZXNzaW9u
VVVJRCA9ICRzaW11bGF0b3JPcHRpb25zLT57c2Vzc2lvblVVSUR9OwotICAgIH0gZWxzZSB7Ci0g
ICAgICAgICRzZXNzaW9uVVVJRCA9ICJ0aGVBd2Vzb21lVW5pcXVlU2Vzc2lvbklkZW50aWZpZXJG
b3IiIC4gYXBwRGlzcGxheU5hbWVGcm9tQnVuZGxlKCRhcHBCdW5kbGUpOwotICAgIH0KLSAgICAj
IEZJWE1FOiBXZSBzaG91bGQgaGF2ZSB0aGUgaU9TIGFwcGxpY2F0aW9uIGFkb3B0IHRoZSBmaWxl
cyBkZXNjcmlwdG9ycyBmb3Igb3VyIHN0YW5kYXJkIG91dHB1dCBhbmQgZXJyb3Igc3RyZWFtcy4K
LSAgICBteSAkc2Vzc2lvbkluZm8gPSB7Ci0gICAgICAgIGFwcGxpY2F0aW9uQXJndW1lbnRzID0+
ICYkbWFrZU5TQXJyYXlGcm9tQXJyYXkoJGFwcGxpY2F0aW9uQXJndW1lbnRzKSwKLSAgICAgICAg
YXBwbGljYXRpb25FbnZpcm9ubWVudCA9PiAmJG1ha2VOU0RpY3Rpb25hcnlGcm9tSGFzaCgkc2lt
dWxhdG9yRU5WSGFzaFJlZiksCi0gICAgICAgIGFwcGxpY2F0aW9uSWRlbnRpZmllciA9PiBOU1N0
cmluZy0+c3RyaW5nV2l0aENTdHJpbmdfKGFwcElkZW50aWZpZXJGcm9tQnVuZGxlKCRhcHBCdW5k
bGUpKSwKLSAgICAgICAgYXBwbGljYXRpb25QYXRoID0+IE5TU3RyaW5nLT5zdHJpbmdXaXRoQ1N0
cmluZ18oJGFwcEJ1bmRsZSksCi0gICAgICAgIGRldmljZVVESUQgPT4gTlNTdHJpbmctPnN0cmlu
Z1dpdGhDU3RyaW5nXygkc2ltdWxhdGVkRGV2aWNlLT57VURJRH0pLAotICAgICAgICBzZXNzaW9u
VVVJRCA9PiBOU1N0cmluZy0+c3RyaW5nV2l0aENTdHJpbmdfKCRzZXNzaW9uVVVJRCksCi0gICAg
fTsKLQotICAgIG9wZW5JT1NTaW11bGF0b3IoKTsKIAotICAgIG15ICRpUGhvbmVTaW11bGF0b3JO
b3RpZmljYXRpb24gPSBuZXcgSVBob25lU2ltdWxhdG9yTm90aWZpY2F0aW9uOwotICAgICRpUGhv
bmVTaW11bGF0b3JOb3RpZmljYXRpb24tPnN0YXJ0T2JzZXJ2aW5nQXBwbGljYXRpb25MYXVuY2hl
ZE5vdGlmaWNhdGlvbigpOwotICAgICRpUGhvbmVTaW11bGF0b3JOb3RpZmljYXRpb24tPnBvc3RT
dGFydFNlc3Npb25Ob3RpZmljYXRpb24oJHNlc3Npb25JbmZvKTsKLSAgICB3aGlsZSAoISRpUGhv
bmVTaW11bGF0b3JOb3RpZmljYXRpb24tPmhhc1JlY2VpdmVkQXBwbGljYXRpb25MYXVuY2hlZE5v
dGlmaWNhdGlvbigpKSB7Ci0gICAgICAgIG15ICRkYXRlID0gTlNEYXRlLT5hbGxvYygpLT5pbml0
V2l0aFRpbWVJbnRlcnZhbFNpbmNlTm93XygwLjEpOwotICAgICAgICBOU1J1bkxvb3AtPmN1cnJl
bnRSdW5Mb29wLT5ydW5VbnRpbERhdGVfKCRkYXRlKTsKLSAgICAgICAgJGRhdGUtPnJlbGVhc2Uo
KTsKKyAgICAjIFByZWZpeCB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGVzIHdpdGggU0lNQ1RMX0NI
SUxEXyBwZXIgYHhjcnVuIHNpbWN0bCBoZWxwIGxhdW5jaGAuCisgICAgZm9yZWFjaCBteSAka2V5
IChrZXlzICVzaW11bGF0b3JFTlYpIHsKKyAgICAgICAgJEVOVnsiU0lNQ1RMX0NISUxEXyRrZXki
fSA9ICRzaW11bGF0b3JFTlZ7JGtleX07CiAgICAgfQotICAgICRpUGhvbmVTaW11bGF0b3JOb3Rp
ZmljYXRpb24tPnN0b3BPYnNlcnZpbmdBcHBsaWNhdGlvbkxhdW5jaGVkTm90aWZpY2F0aW9uKCk7
Ci0gICAgcmV0dXJuICRpUGhvbmVTaW11bGF0b3JOb3RpZmljYXRpb24tPmFwcGxpY2F0aW9uTGF1
bmNoZWRBcHBsaWNhdGlvblBJRCgpOworCisgICAgbXkgJGFwcElkZW50aWZpZXIgPSBhcHBJZGVu
dGlmaWVyRnJvbUJ1bmRsZSgkYXBwQnVuZGxlKTsKKyAgICBwcmludCAiU3RhcnRpbmcgJGFwcERp
c3BsYXlOYW1lIHdpdGggRFlMRF9GUkFNRVdPUktfUEFUSCBzZXQgdG8gcG9pbnQgdG8gYnVpbHQg
V2ViS2l0IGluICRwcm9kdWN0RGlyLlxuIjsKKyAgICByZXR1cm4gZXhpdFN0YXR1cyhzeXN0ZW0o
InhjcnVuIiwgIi1zZGsiLCAiaXBob25lc2ltdWxhdG9yIiwgInNpbWN0bCIsICJsYXVuY2giLCAk
c2ltdWxhdGVkRGV2aWNlLT57VURJRH0sICRhcHBJZGVudGlmaWVyLCBAJGFwcGxpY2F0aW9uQXJn
dW1lbnRzKSk7CiB9CiAKIHN1YiBydW5JT1NXZWJLaXRBcHAoJCkKQEAgLTIzMDcsNyArMjI1NSw5
IEBAIHN1YiBkZWJ1Z1NhZmFyaQogc3ViIHJ1blNhZmFyaQogewogICAgIGlmIChpc0lPU1dlYktp
dCgpKSB7Ci0gICAgICAgIHJldHVybiBydW5JT1NXZWJLaXRBcHAobW9iaWxlU2FmYXJpQnVuZGxl
KCkpOworICAgICAgICAjIEZJWE1FOiBXZSBzaG91bGQgY2FsbCBtb2JpbGVTYWZhcmlCdW5kbGUo
KSBvbmNlIHdlIHRlYWNoIHJ1bklPU1dlYktpdEFwcCgpCisgICAgICAgICMgaG93IHRvIGluc3Rh
bGwgYW5kIGxhdW5jaCBjdXN0b20tYnVpbHQgaU9TIGFwcHMuCisgICAgICAgIHJldHVybiBydW5J
T1NXZWJLaXRBcHAoaW5zdGFsbGVkTW9iaWxlU2FmYXJpQnVuZGxlKCkpOwogICAgIH0KIAogICAg
IGlmIChpc0FwcGxlTWFjV2ViS2l0KCkpIHsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>244738</attachid>
            <date>2015-01-15 17:51:54 -0800</date>
            <delta_ts>2015-01-16 11:26:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-135589-20150115175200.patch</filename>
            <type>text/plain</type>
            <size>12295</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDE3ODU0NykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDMxIEBACisyMDE1LTAxLTE1ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4K
KworICAgICAgICBSRUdSRVNTSU9OIChyMTcxOTY4KTogcnVuLXNhZmFyaSAtLXNpbXVsYXRvciBm
YWlscyB0byBsYXVuY2ggU2FmYXJpIG9uIGlPUworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM1NTg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgRGVyaXZlZCBmcm9tIGEgcGF0Y2ggYnkgRGF2aWQgRmFybGVy
LgorCisgICAgICAgIEZvbGxvd2luZyB0aGUgcmVtb3ZhbCBJUGhvbmVTaW11bGF0b3JOb3RpZmlj
YXRpb24ucG0gaW4gPGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzE3MTk2OD4KKyAg
ICAgICAgcnVuLXNhZmFyaSAtLXNpbXVsYXRvciBmYWlscyB0byBsYXVuY2ggU2FmYXJpIG9uIGlP
Uy4gV2UgbmVlZCB0byBpbXBsZW1lbnQgcnVuLXNhZmFyaQorICAgICAgICBpbiB0ZXJtcyBvZiB0
aGUgc2ltY3RsIGNvbW1hbmQgbGluZSB1dGlsaXR5LgorCisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRkaXJzLnBtOiBBZGRlZCBjb25zdGFudCBTSU1VTEFUT1JfREVWSUNFX1NUQVRFX0JPT1RFRC4K
KyAgICAgICAgKGVyYXNlSU9TU2ltdWxhdG9yRGV2aWNlKTogQWRkZWQuCisgICAgICAgIChib290
ZWRJT1NTaW11bGF0b3JEZXZpY2UpOiBBZGRlZC4KKyAgICAgICAgKGlvc1NpbXVsYXRvckFwcGxp
Y2F0aW9uc1BhdGgpOiBBZGRlZC4KKyAgICAgICAgKGluc3RhbGxlZE1vYmlsZVNhZmFyaUJ1bmRs
ZSk6IEltcGxlbWVudGVkIGluIHRlcm1zIG9mIGlvc1NpbXVsYXRvckFwcGxpY2F0aW9uc1BhdGgo
KS4KKyAgICAgICAgKG9wZW5JT1NTaW11bGF0b3IpOiBNb2RpZmllZCB0byBsYXVuY2ggaU9TIFNp
bXVsYXRvciB1c2luZyBPUEVOKDEpLgorICAgICAgICAocXVpdElPU1NpbXVsYXRvcik6IEFkZGVk
LgorICAgICAgICAoaW9zU2ltdWxhdG9yRGV2aWNlQnlOYW1lKTogTW9kaWZpZWQgdG8gZmluZCB0
aGUgZmlyc3Qgc2ltdWxhdG9yIGRldmljZSB0aGF0IG1hdGNoZXMKKyAgICAgICAgdGhlIHNwZWNp
ZmllZCBuYW1lIGFuZCBjdXJyZW50bHkgc2VsZWN0ZWQgaU9TIHJ1bnRpbWUuCisgICAgICAgIChp
c0lPU1NpbXVsYXRvclN5c3RlbUluc3RhbGxlZEFwcCk6IEFkZGVkLgorICAgICAgICAocnVuSU9T
V2ViS2l0QXBwSW5TaW11bGF0b3IpOiBNb2RpZmllZCB0byB1c2Ugc2ltY3RsIGxhdW5jaCB0byBs
YXVuY2ggYW4gYXBwIGluIHRoZSBzaW11bGF0b3IuCisgICAgICAgIChkZWxldGVpT1NTaW11bGF0
b3JEZXZpY2UpOiBEZWxldGVkLgorICAgICAgICAobG9hZElQaG9uZVNpbXVsYXRvck5vdGlmaWNh
dGlvbklmTmVlZGVkKTogRGVsZXRlZC4KKyAgICAgICAgKGluc3RhbGxBbmRMYXVuY2hJT1NXZWJL
aXRBcHBJblNpbXVsYXRvcik6IERlbGV0ZWQuCisKIDIwMTUtMDEtMTUgIEJyZW50IEZ1bGdoYW0g
IDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgW1dpbl0gTWlzY2VsbGFuZW91cyBEUlQg
Zml4ZXMKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0ZGlycy5wbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9TY3JpcHRzL3dlYmtpdGRpcnMucG0JKHJldmlzaW9uIDE3ODQ4NSkKKysrIFRvb2xzL1Nj
cmlwdHMvd2Via2l0ZGlycy5wbQkod29ya2luZyBjb3B5KQpAQCAtNjMsNyArNjMsNiBAQCBCRUdJ
TiB7CiAgICAgICAgJmN1cnJlbnRTVk5SZXZpc2lvbgogICAgICAgICZkZWJ1Z1NhZmFyaQogICAg
ICAgICZmaW5kT3JDcmVhdGVTaW11bGF0b3JGb3JJT1NEZXZpY2UKLSAgICAgICAmaW5zdGFsbEFu
ZExhdW5jaElPU1dlYktpdEFwcEluU2ltdWxhdG9yCiAgICAgICAgJmlvc1NpbXVsYXRvckRldmlj
ZUJ5TmFtZQogICAgICAgICZubVBhdGgKICAgICAgICAmb3BlbklPU1NpbXVsYXRvcgpAQCAtODYs
NiArODUsNyBAQCBCRUdJTiB7CiAKIHVzZSBjb25zdGFudCBVU0VfT1BFTl9DT01NQU5EID0+IDE7
ICMgVXNlZCBpbiBydW5NYWNXZWJLaXRBcHAoKS4KIHVzZSBjb25zdGFudCBJTkNMVURFX09QVElP
TlNfRk9SX0RFQlVHR0lORyA9PiAxOwordXNlIGNvbnN0YW50IFNJTVVMQVRPUl9ERVZJQ0VfU1RB
VEVfQk9PVEVEID0+ICIzIjsKIAogb3VyIEBFWFBPUlRfT0s7CiAKQEAgLTExNzgsMTAgKzExNzgs
MjEgQEAgc3ViIGNyZWF0ZWlPU1NpbXVsYXRvckRldmljZQogICAgIGRpZSAiRGV2aWNlICRuYW1l
ICRkZXZpY2VUeXBlSWQgJHJ1bnRpbWVJZCB3YXNuJ3QgZm91bmQgaW4gIiAuIGlPU1NpbXVsYXRv
ckRldmljZXNQYXRoKCk7CiB9CiAKLXN1YiBkZWxldGVpT1NTaW11bGF0b3JEZXZpY2UKK3N1YiBl
cmFzZUlPU1NpbXVsYXRvckRldmljZSgkKQogewogICAgIG15ICR1ZGlkID0gc2hpZnQ7Ci0gICAg
cmV0dXJuIHN5c3RlbSgieGNydW4iLCAiLS1zZGsiLCAiaXBob25lc2ltdWxhdG9yIiwgInNpbWN0
bCIsICJkZWxldGUiLCAkdWRpZCk7CisgICAgcmV0dXJuIGV4aXRTdGF0dXMoc3lzdGVtKCJ4Y3J1
biIsICItLXNkayIsICJpcGhvbmVzaW11bGF0b3IiLCAic2ltY3RsIiwgImVyYXNlIiwgJHVkaWQp
KSA9PSAwOworfQorCitzdWIgYm9vdGVkSU9TU2ltdWxhdG9yRGV2aWNlKCkKK3sKKyAgICBteSBA
ZGV2aWNlcyA9IGlPU1NpbXVsYXRvckRldmljZXMoKTsKKyAgICBmb3IgbXkgJGRldmljZSAoQGRl
dmljZXMpIHsKKyAgICAgICAgaWYgKCRkZXZpY2UtPntzdGF0ZX0gZXEgU0lNVUxBVE9SX0RFVklD
RV9TVEFURV9CT09URUQpIHsKKyAgICAgICAgICAgIHJldHVybiAkZGV2aWNlOworICAgICAgICB9
CisgICAgfQorICAgIHJldHVybiB1bmRlZjsKIH0KIAogc3ViIHdpbGxVc2VJT1NEZXZpY2VTREtX
aGVuQnVpbGRpbmcoKQpAQCAtMjAyNiw5ICsyMDM3LDE0IEBAIHN1YiBzZXR1cElPU1dlYktpdEVu
dmlyb25tZW50KCQpCiAgICAgc2V0VXBHdWFyZE1hbGxvY0lmTmVlZGVkKCk7CiB9CiAKK3N1YiBp
b3NTaW11bGF0b3JBcHBsaWNhdGlvbnNQYXRoKCkKK3sKKyAgICByZXR1cm4gRmlsZTo6U3BlYy0+
Y2F0ZGlyKFhjb2RlU0RLUGF0aCgpLCAiQXBwbGljYXRpb25zIik7Cit9CisKIHN1YiBpbnN0YWxs
ZWRNb2JpbGVTYWZhcmlCdW5kbGUoKQogewotICAgIHJldHVybiBGaWxlOjpTcGVjLT5jYXRmaWxl
KFhjb2RlU0RLUGF0aCgpLCAiQXBwbGljYXRpb25zIiwgIk1vYmlsZVNhZmFyaS5hcHAiKTsKKyAg
ICByZXR1cm4gRmlsZTo6U3BlYy0+Y2F0ZmlsZShpb3NTaW11bGF0b3JBcHBsaWNhdGlvbnNQYXRo
KCksICJNb2JpbGVTYWZhcmkuYXBwIik7CiB9CiAKIHN1YiBtb2JpbGVTYWZhcmlCdW5kbGUoKQpA
QCAtMjA2Niw0NCArMjA4MiwzNiBAQCBzdWIgYXBwRGlzcGxheU5hbWVGcm9tQnVuZGxlKCQpCiAg
ICAgcmV0dXJuICRidW5kbGVEaXNwbGF5TmFtZTsKIH0KIAotc3ViIGxvYWRJUGhvbmVTaW11bGF0
b3JOb3RpZmljYXRpb25JZk5lZWRlZCgpCi17Ci0gICAgcmV0dXJuIGlmICRkaWRMb2FkSVBob25l
U2ltdWxhdG9yTm90aWZpY2F0aW9uOwotICAgIHB1c2goQElOQywgcHJvZHVjdERpcigpIC4gIi9s
aWIvcGVybDUvZGFyd2luLXRocmVhZC1tdWx0aS0ybGV2ZWwiKTsKLSAgICByZXF1aXJlIElQaG9u
ZVNpbXVsYXRvck5vdGlmaWNhdGlvbjsKLSAgICAkZGlkTG9hZElQaG9uZVNpbXVsYXRvck5vdGlm
aWNhdGlvbiA9IDE7Ci19Ci0KLXN1YiBvcGVuSU9TU2ltdWxhdG9yKCkKK3N1YiBvcGVuSU9TU2lt
dWxhdG9yKCQpCiB7CisgICAgbXkgKCRzaW11bGF0ZWREZXZpY2UpID0gQF87CiAgICAgY2hvbXAo
bXkgJGRldmVsb3BlckRpcmVjdG9yeSA9ICRFTlZ7REVWRUxPUEVSX0RJUn0gfHwgYHhjb2RlLXNl
bGVjdCAtLXByaW50LXBhdGhgKTsKICAgICBteSAkaW9zU2ltdWxhdG9yUGF0aCA9IEZpbGU6OlNw
ZWMtPmNhdGZpbGUoJGRldmVsb3BlckRpcmVjdG9yeSwgIkFwcGxpY2F0aW9ucyIsICJpT1MgU2lt
dWxhdG9yLmFwcCIpOwogCi0gICAgbG9hZElQaG9uZVNpbXVsYXRvck5vdGlmaWNhdGlvbklmTmVl
ZGVkKCk7CisgICAgc3lzdGVtKCJvcGVuIiwgIi1hIiwgJGlvc1NpbXVsYXRvclBhdGgsICItLWFy
Z3MiLCAiLUN1cnJlbnREZXZpY2VVRElEIiwgJHNpbXVsYXRlZERldmljZS0+e1VESUR9KSA9PSAw
IG9yIGRpZSAiRmFpbGVkIHRvIG9wZW4gJGlvc1NpbXVsYXRvclBhdGg6ICQhIjsKKyAgICBteSAk
ZGV2aWNlOworICAgIGRvIHsKKyAgICAgICAgJGRldmljZSA9IGlvc1NpbXVsYXRvckRldmljZUJ5
TmFtZSgkc2ltdWxhdGVkRGV2aWNlLT57bmFtZX0pOworICAgICAgICBzbGVlcCgyKTsKKyAgICB9
IHdoaWxlICgkZGV2aWNlLT57c3RhdGV9IG5lIFNJTVVMQVRPUl9ERVZJQ0VfU1RBVEVfQk9PVEVE
KTsKK30KIAotICAgIG15ICRpUGhvbmVTaW11bGF0b3JOb3RpZmljYXRpb24gPSBuZXcgSVBob25l
U2ltdWxhdG9yTm90aWZpY2F0aW9uOwotICAgICRpUGhvbmVTaW11bGF0b3JOb3RpZmljYXRpb24t
PnN0YXJ0T2JzZXJ2aW5nUmVhZHlOb3RpZmljYXRpb24oKTsKLSAgICBzeXN0ZW0oIm9wZW4iLCAi
LWEiLCAkaW9zU2ltdWxhdG9yUGF0aCwgIi0tYXJncyIsICItU2Vzc2lvbk9uTGF1bmNoIiwgIk5P
IikgPT0gMCBvciBkaWUgIkZhaWxlZCB0byBvcGVuICRpb3NTaW11bGF0b3JQYXRoOiAkISI7Ci0g
ICAgd2hpbGUgKCEkaVBob25lU2ltdWxhdG9yTm90aWZpY2F0aW9uLT5oYXNSZWNlaXZlZFJlYWR5
Tm90aWZpY2F0aW9uKCkpIHsKLSAgICAgICAgbXkgJGRhdGUgPSBOU0RhdGUtPmFsbG9jKCktPmlu
aXRXaXRoVGltZUludGVydmFsU2luY2VOb3dfKDAuMSk7Ci0gICAgICAgIE5TUnVuTG9vcC0+Y3Vy
cmVudFJ1bkxvb3AtPnJ1blVudGlsRGF0ZV8oJGRhdGUpOwotICAgICAgICAkZGF0ZS0+cmVsZWFz
ZSgpOwotICAgIH0KLSAgICAkaVBob25lU2ltdWxhdG9yTm90aWZpY2F0aW9uLT5zdG9wT2JzZXJ2
aW5nUmVhZHlOb3RpZmljYXRpb24oKTsKK3N1YiBxdWl0SU9TU2ltdWxhdG9yKCkKK3sKKyAgICBy
ZXR1cm4gc3lzdGVtIHsib3Nhc2NyaXB0In0gIm9zYXNjcmlwdCIsICItZSIsICd0ZWxsIGFwcGxp
Y2F0aW9uICJpT1MgU2ltdWxhdG9yIiB0byBxdWl0JzsKIH0KIAogc3ViIGlvc1NpbXVsYXRvckRl
dmljZUJ5TmFtZSgkKQogewogICAgIG15ICgkc2ltdWxhdG9yTmFtZSkgPSBAXzsKLSAgICBteSBA
ZGV2aWNlcyA9IGdyZXAgeyRfLT57bmFtZX0gZXEgJHNpbXVsYXRvck5hbWV9IGlPU1NpbXVsYXRv
ckRldmljZXMoKTsKLSAgICBteSAkZGV2aWNlVG9Vc2UgPSAkZGV2aWNlc1swXTsKLSAgICBpZiAo
QGRldmljZXMgPiAxKSB7Ci0gICAgICAgIHByaW50ICJXYXJuaW5nOiBGb3VuZCBtb3JlIHRoYW4g
b25lIHNpbXVsYXRvciBkZXZpY2UgbmFtZWQgJyRzaW11bGF0b3JOYW1lJy5cbiI7Ci0gICAgICAg
IHByaW50ICIgICAgICAgICBVc2luZyBzaW11bGF0b3IgZGV2aWNlIHdpdGggVURJRDogJGRldmlj
ZVRvVXNlLT57VURJRH0uXG4iOwotICAgICAgICBwcmludCAiICAgICAgICAgVG8gc2VlIHRoZSBs
aXN0IG9mIHNpbXVsYXRvciBkZXZpY2VzLCBydW46XG4iOwotICAgICAgICBwcmludCAiICAgICAg
ICAgeGNydW4gLS1zZGsgaXBob25lc2ltdWxhdG9yIHNpbWN0bCBsaXN0XG4iOworICAgIG15ICRz
aW11bGF0b3JSdW50aW1lID0gaW9zU2ltdWxhdG9yUnVudGltZSgpOworICAgIG15IEBkZXZpY2Vz
ID0gaU9TU2ltdWxhdG9yRGV2aWNlcygpOworICAgIGZvciBteSAkZGV2aWNlIChAZGV2aWNlcykg
eworICAgICAgICBpZiAoJGRldmljZS0+e25hbWV9IGVxICRzaW11bGF0b3JOYW1lICYmICRkZXZp
Y2UtPntydW50aW1lfSBlcSAkc2ltdWxhdG9yUnVudGltZSkgeworICAgICAgICAgICAgcmV0dXJu
ICRkZXZpY2U7CisgICAgICAgIH0KICAgICB9Ci0gICAgcmV0dXJuICRkZXZpY2VUb1VzZTsKKyAg
ICByZXR1cm4gdW5kZWY7CiB9CiAKIHN1YiBpb3NTaW11bGF0b3JSdW50aW1lKCkKQEAgLTIxMzAs
MTIgKzIxMzgsMjUgQEAgc3ViIGZpbmRPckNyZWF0ZVNpbXVsYXRvckZvcklPU0RldmljZSgkKQog
ICAgIHJldHVybiBjcmVhdGVpT1NTaW11bGF0b3JEZXZpY2UoJHNpbXVsYXRvck5hbWUsICRzaW11
bGF0b3JEZXZpY2VUeXBlLCBpb3NTaW11bGF0b3JSdW50aW1lKCkpOwogfQogCitzdWIgaXNJT1NT
aW11bGF0b3JTeXN0ZW1JbnN0YWxsZWRBcHAoJCkKK3sKKyAgICBteSAoJGFwcEJ1bmRsZSkgPSBA
XzsKKyAgICBteSAkc2ltdWxhdG9yQXBwbGljYXRpb25zUGF0aCA9IGlvc1NpbXVsYXRvckFwcGxp
Y2F0aW9uc1BhdGgoKTsKKyAgICByZXR1cm4gc3Vic3RyKCRhcHBCdW5kbGUsIDAsIGxlbmd0aCgk
c2ltdWxhdG9yQXBwbGljYXRpb25zUGF0aCkpIGVxICRzaW11bGF0b3JBcHBsaWNhdGlvbnNQYXRo
OworfQorCiBzdWIgcnVuSU9TV2ViS2l0QXBwSW5TaW11bGF0b3IoJDskKQogewogICAgIG15ICgk
YXBwQnVuZGxlLCAkc2ltdWxhdG9yT3B0aW9ucykgPSBAXzsKICAgICBteSAkcHJvZHVjdERpciA9
IHByb2R1Y3REaXIoKTsKLSAgICBteSAkYXBwRGlzcGxheU5hbWUgPSBhcHBEaXNwbGF5TmFtZUZy
b21CdW5kbGUoJGFwcEJ1bmRsZSk7Ci0gICAgcHJpbnQgIlN0YXJ0aW5nICRhcHBEaXNwbGF5TmFt
ZSB3aXRoIERZTERfRlJBTUVXT1JLX1BBVEggc2V0IHRvIHBvaW50IHRvIGJ1aWx0IFdlYktpdCBp
biAkcHJvZHVjdERpci5cbiI7CisgICAgbXkgJGFwcERpc3BsYXlOYW1lID0gYXBwRGlzcGxheU5h
bWVGcm9tQnVuZGxlKCRhcHBCdW5kbGUpOzsKKyAgICBteSAkc2ltdWxhdGVkRGV2aWNlID0gZmlu
ZE9yQ3JlYXRlU2ltdWxhdG9yRm9ySU9TRGV2aWNlKCJGb3IgV2ViS2l0IERldmVsb3BtZW50Iik7
CisKKyAgICBteSAkYm9vdGVkU2ltdWxhdG9yRGV2aWNlID0gYm9vdGVkSU9TU2ltdWxhdG9yRGV2
aWNlKCk7CisgICAgaWYgKCEkYm9vdGVkU2ltdWxhdG9yRGV2aWNlIHx8ICRib290ZWRTaW11bGF0
b3JEZXZpY2UtPntVRElEfSBuZSAkc2ltdWxhdGVkRGV2aWNlLT57VURJRH0pIHsKKyAgICAgICAg
cXVpdElPU1NpbXVsYXRvcigpOworICAgICAgICBvcGVuSU9TU2ltdWxhdG9yKCRzaW11bGF0ZWRE
ZXZpY2UpOworICAgIH0KIAogICAgICRzaW11bGF0b3JPcHRpb25zID0ge30gdW5sZXNzICRzaW11
bGF0b3JPcHRpb25zOwogCkBAIC0yMTQ2LDc5ICsyMTY3LDIzIEBAIHN1YiBydW5JT1NXZWJLaXRB
cHBJblNpbXVsYXRvcigkOyQpCiAgICAgICAgIHNldHVwSU9TV2ViS2l0RW52aXJvbm1lbnQoJHBy
b2R1Y3REaXIpOwogICAgICAgICAlc2ltdWxhdG9yRU5WID0gJUVOVjsKICAgICB9Ci0gICAgJHNp
bXVsYXRvck9wdGlvbnMtPnthcHBsaWNhdGlvbkVudmlyb25tZW50fSA9IFwlc2ltdWxhdG9yRU5W
OwotICAgIHJldHVybiBpbnN0YWxsQW5kTGF1bmNoSU9TV2ViS2l0QXBwSW5TaW11bGF0b3IoJGFw
cEJ1bmRsZSwgZmluZE9yQ3JlYXRlU2ltdWxhdG9yRm9ySU9TRGV2aWNlKCJGb3IgV2ViS2l0IERl
dmVsb3BtZW50IiksICRzaW11bGF0b3JPcHRpb25zKSA8PSAwOwotfQotCi0jIExhdW5jaGVzIHRo
ZSBpT1MgV2ViS2l0LWJhc2VkIGFwcGxpY2F0aW9uIGluIHRoZSBzcGVjaWZpZWQgc2ltdWxhdG9y
IGRldmljZSBhbmQgZHluYW1pY2FsbHkKLSMgbGlua2VkIGFnYWluc3QgdGhlIGJ1aWx0IFdlYktp
dC4gVGhlIGFwcGxpY2F0aW9uIHdpbGwgYmUgaW5zdGFsbGVkIGlmIGFwcGxpY2FibGUuCi0jCi0j
IEFyZ3M6Ci0jICAgJGFwcEJ1bmRsZTogdGhlIHBhdGggdG8gdGhlIGFwcCBidW5kbGUgdG8gbGF1
bmNoLgotIyAgICRzaW11bGF0ZWREZXZpY2U6IHRoZSBzaW11bGF0b3IgZGV2aWNlIHRvIHVzZSB0
byBydW4gdGhlIGFwcC4KLSMgICAkc2ltdWxhdG9yT3B0aW9uczogYSBoYXNoIHJlZmVyZW5jZSBy
ZXByZXNlbnRpbmcgb3B0aW9uYWwgc2ltdWxhdG9yIG9wdGlvbnMuCi0jICAgICBzZXNzaW9uVVVJ
RDogYSB1bmlxdWUgaWRlbnRpZmllciB0byB1c2UgZm9yIHRoZSBpT1MgU2ltdWxhdG9yIHNlc3Np
b24uIERlZmF1bHRzIHRvIGFuIGlkZW50aWZpZXIKLSMgICAgICAgICAgICAgICAgICBvZiB0aGUg
Zm9ybSAidGhlQXdlc29tZVVuaXF1ZVNlc3Npb25JZGVudGlmaWVyRm9yWCIgd2hlcmUgWCBpcyB0
aGUgZGlzcGxheSBuYW1lIG9mCi0jICAgICAgICAgICAgICAgICAgdGhlIHNwZWNpZmllZCBhcHAu
Ci0jICAgICBhcHBsaWNhdGlvbkFyZ3VtZW50czogYW4gYXJyYXkgcmVmZXJlbmNlIHJlcHJlc2Vu
dGluZyB0aGUgYXJndW1lbnRzIHRvIHBhc3MgdG8gdGhlIGFwcCAoZGVmYXVsdHMgdG8gXEBBUkdW
KS4KLSMgICAgIGFwcGxpY2F0aW9uRW52aXJvbm1lbnQ6IGEgaGFzaCByZWZlcmVuY2UgcmVwcmVz
ZW50aW5nIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gdXNlIHdoZW4gbGF1bmNoaW5nIHRo
ZSBhcHAgKGRlZmF1bHRzIHRvIHt9KS4KLSMKLSMgUmV0dXJucyB0aGUgcHJvY2VzcyBpZGVudGlm
aWVyIG9mIHRoZSBsYXVuY2hlZCBhcHAuCi1zdWIgaW5zdGFsbEFuZExhdW5jaElPU1dlYktpdEFw
cEluU2ltdWxhdG9yKCQkOyQpCi17Ci0gICAgbXkgKCRhcHBCdW5kbGUsICRzaW11bGF0ZWREZXZp
Y2UsICRzaW11bGF0b3JPcHRpb25zKSA9IEBfOwotCi0gICAgbG9hZElQaG9uZVNpbXVsYXRvck5v
dGlmaWNhdGlvbklmTmVlZGVkKCk7Ci0KLSAgICBteSAkbWFrZU5TRGljdGlvbmFyeUZyb21IYXNo
ID0gc3ViIHsKLSAgICAgICAgbXkgKCRkaWN0KSA9IEBfOwotICAgICAgICBteSAkcmVzdWx0ID0g
TlNNdXRhYmxlRGljdGlvbmFyeS0+YWxsb2MoKS0+aW5pdFdpdGhDYXBhY2l0eV8oc2NhbGFyKGtl
eXMgJXskZGljdH0pKTsKLSAgICAgICAgZm9yIG15ICRrZXkgKGtleXMgJXskZGljdH0pIHsKLSAg
ICAgICAgICAgICRyZXN1bHQtPnNldE9iamVjdF9mb3JLZXlfKE5TU3RyaW5nLT5zdHJpbmdXaXRo
Q1N0cmluZ18oJGRpY3QtPnska2V5fSksIE5TU3RyaW5nLT5zdHJpbmdXaXRoQ1N0cmluZ18oJGtl
eSkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiAkcmVzdWx0LT5hdXRvcmVsZWFzZSgpOwot
ICAgIH07Ci0gICAgbXkgJG1ha2VOU0FycmF5RnJvbUFycmF5ID0gc3ViIHsKLSAgICAgICAgbXkg
KCRhcnJheSkgPSBAXzsKLSAgICAgICAgbXkgJHJlc3VsdCA9IE5TTXV0YWJsZUFycmF5LT5hbGxv
YygpLT5pbml0V2l0aENhcGFjaXR5XyhzY2FsYXIoQHskYXJyYXl9KSk7Ci0gICAgICAgIGZvciBt
eSAkaXRlbSAoQHskYXJyYXl9KSB7Ci0gICAgICAgICAgICAkcmVzdWx0LT5hZGRPYmplY3RfKE5T
U3RyaW5nLT5zdHJpbmdXaXRoQ1N0cmluZ18oJGl0ZW0pKTsKLSAgICAgICAgfQotICAgICAgICBy
ZXR1cm4gJHJlc3VsdC0+YXV0b3JlbGVhc2UoKTsKLSAgICB9OwotCi0gICAgbXkgJHNpbXVsYXRv
ckVOVkhhc2hSZWYgPSB7fTsKLSAgICAkc2ltdWxhdG9yRU5WSGFzaFJlZiA9ICRzaW11bGF0b3JP
cHRpb25zLT57YXBwbGljYXRpb25FbnZpcm9ubWVudH0gaWYgJHNpbXVsYXRvck9wdGlvbnMgJiYg
JHNpbXVsYXRvck9wdGlvbnMtPnthcHBsaWNhdGlvbkVudmlyb25tZW50fTsKICAgICBteSAkYXBw
bGljYXRpb25Bcmd1bWVudHMgPSBcQEFSR1Y7CiAgICAgJGFwcGxpY2F0aW9uQXJndW1lbnRzID0g
JHNpbXVsYXRvck9wdGlvbnMtPnthcHBsaWNhdGlvbkFyZ3VtZW50c30gaWYgJHNpbXVsYXRvck9w
dGlvbnMgJiYgJHNpbXVsYXRvck9wdGlvbnMtPnthcHBsaWNhdGlvbkFyZ3VtZW50c307Ci0gICAg
bXkgJHNlc3Npb25VVUlEOwotICAgIGlmICgkc2ltdWxhdG9yT3B0aW9ucyAmJiAkc2ltdWxhdG9y
T3B0aW9ucy0+e3Nlc3Npb25VVUlEfSkgewotICAgICAgICAkc2Vzc2lvblVVSUQgPSAkc2ltdWxh
dG9yT3B0aW9ucy0+e3Nlc3Npb25VVUlEfTsKLSAgICB9IGVsc2UgewotICAgICAgICAkc2Vzc2lv
blVVSUQgPSAidGhlQXdlc29tZVVuaXF1ZVNlc3Npb25JZGVudGlmaWVyRm9yIiAuIGFwcERpc3Bs
YXlOYW1lRnJvbUJ1bmRsZSgkYXBwQnVuZGxlKTsKLSAgICB9Ci0gICAgIyBGSVhNRTogV2Ugc2hv
dWxkIGhhdmUgdGhlIGlPUyBhcHBsaWNhdGlvbiBhZG9wdCB0aGUgZmlsZXMgZGVzY3JpcHRvcnMg
Zm9yIG91ciBzdGFuZGFyZCBvdXRwdXQgYW5kIGVycm9yIHN0cmVhbXMuCi0gICAgbXkgJHNlc3Np
b25JbmZvID0gewotICAgICAgICBhcHBsaWNhdGlvbkFyZ3VtZW50cyA9PiAmJG1ha2VOU0FycmF5
RnJvbUFycmF5KCRhcHBsaWNhdGlvbkFyZ3VtZW50cyksCi0gICAgICAgIGFwcGxpY2F0aW9uRW52
aXJvbm1lbnQgPT4gJiRtYWtlTlNEaWN0aW9uYXJ5RnJvbUhhc2goJHNpbXVsYXRvckVOVkhhc2hS
ZWYpLAotICAgICAgICBhcHBsaWNhdGlvbklkZW50aWZpZXIgPT4gTlNTdHJpbmctPnN0cmluZ1dp
dGhDU3RyaW5nXyhhcHBJZGVudGlmaWVyRnJvbUJ1bmRsZSgkYXBwQnVuZGxlKSksCi0gICAgICAg
IGFwcGxpY2F0aW9uUGF0aCA9PiBOU1N0cmluZy0+c3RyaW5nV2l0aENTdHJpbmdfKCRhcHBCdW5k
bGUpLAotICAgICAgICBkZXZpY2VVRElEID0+IE5TU3RyaW5nLT5zdHJpbmdXaXRoQ1N0cmluZ18o
JHNpbXVsYXRlZERldmljZS0+e1VESUR9KSwKLSAgICAgICAgc2Vzc2lvblVVSUQgPT4gTlNTdHJp
bmctPnN0cmluZ1dpdGhDU3RyaW5nXygkc2Vzc2lvblVVSUQpLAotICAgIH07CiAKLSAgICBvcGVu
SU9TU2ltdWxhdG9yKCk7CisgICAgIyBQcmVmaXggdGhlIGVudmlyb25tZW50IHZhcmlhYmxlcyB3
aXRoIFNJTUNUTF9DSElMRF8gcGVyIGB4Y3J1biBzaW1jdGwgaGVscCBsYXVuY2hgLgorICAgIGZv
cmVhY2ggbXkgJGtleSAoa2V5cyAlc2ltdWxhdG9yRU5WKSB7CisgICAgICAgICRFTlZ7IlNJTUNU
TF9DSElMRF8ka2V5In0gPSAkc2ltdWxhdG9yRU5WeyRrZXl9OworICAgIH0KIAotICAgIG15ICRp
UGhvbmVTaW11bGF0b3JOb3RpZmljYXRpb24gPSBuZXcgSVBob25lU2ltdWxhdG9yTm90aWZpY2F0
aW9uOwotICAgICRpUGhvbmVTaW11bGF0b3JOb3RpZmljYXRpb24tPnN0YXJ0T2JzZXJ2aW5nQXBw
bGljYXRpb25MYXVuY2hlZE5vdGlmaWNhdGlvbigpOwotICAgICRpUGhvbmVTaW11bGF0b3JOb3Rp
ZmljYXRpb24tPnBvc3RTdGFydFNlc3Npb25Ob3RpZmljYXRpb24oJHNlc3Npb25JbmZvKTsKLSAg
ICB3aGlsZSAoISRpUGhvbmVTaW11bGF0b3JOb3RpZmljYXRpb24tPmhhc1JlY2VpdmVkQXBwbGlj
YXRpb25MYXVuY2hlZE5vdGlmaWNhdGlvbigpKSB7Ci0gICAgICAgIG15ICRkYXRlID0gTlNEYXRl
LT5hbGxvYygpLT5pbml0V2l0aFRpbWVJbnRlcnZhbFNpbmNlTm93XygwLjEpOwotICAgICAgICBO
U1J1bkxvb3AtPmN1cnJlbnRSdW5Mb29wLT5ydW5VbnRpbERhdGVfKCRkYXRlKTsKLSAgICAgICAg
JGRhdGUtPnJlbGVhc2UoKTsKKyAgICAjIEZJWE1FOiBXZSBzaG91bGQgYWxzbyBlcmFzZSB0aGUg
aU9TIFNpbXVsYXRvciBkZXZpY2Ugd2hlbiBhbHRlcm5hdGluZyBiZXR3ZWVuIHJ1bm5pbmcgYQor
ICAgICMgY3VzdG9tLWJ1aWx0IE1vYmlsZVNhZmFyaSBhbmQgdGhlIHN5c3RlbS1pbnN0YWxsZWQg
TW9iaWxlU2FmYXJpLgorICAgIGlmICghaXNJT1NTaW11bGF0b3JTeXN0ZW1JbnN0YWxsZWRBcHAo
JGFwcEJ1bmRsZSkpIHsKKyAgICAgICAgZXJhc2VJT1NTaW11bGF0b3JEZXZpY2UoJHNpbXVsYXRl
ZERldmljZS0+e1VESUR9KSBvciBkaWU7CiAgICAgfQotICAgICRpUGhvbmVTaW11bGF0b3JOb3Rp
ZmljYXRpb24tPnN0b3BPYnNlcnZpbmdBcHBsaWNhdGlvbkxhdW5jaGVkTm90aWZpY2F0aW9uKCk7
Ci0gICAgcmV0dXJuICRpUGhvbmVTaW11bGF0b3JOb3RpZmljYXRpb24tPmFwcGxpY2F0aW9uTGF1
bmNoZWRBcHBsaWNhdGlvblBJRCgpOworCisgICAgbXkgJGFwcElkZW50aWZpZXIgPSBhcHBJZGVu
dGlmaWVyRnJvbUJ1bmRsZSgkYXBwQnVuZGxlKTsKKyAgICBwcmludCAiU3RhcnRpbmcgJGFwcERp
c3BsYXlOYW1lIHdpdGggRFlMRF9GUkFNRVdPUktfUEFUSCBzZXQgdG8gcG9pbnQgdG8gYnVpbHQg
V2ViS2l0IGluICRwcm9kdWN0RGlyLlxuIjsKKyAgICByZXR1cm4gZXhpdFN0YXR1cyhzeXN0ZW0o
InhjcnVuIiwgIi0tc2RrIiwgImlwaG9uZXNpbXVsYXRvciIsICJzaW1jdGwiLCAibGF1bmNoIiwg
JHNpbXVsYXRlZERldmljZS0+e1VESUR9LCAkYXBwSWRlbnRpZmllciwgQCRhcHBsaWNhdGlvbkFy
Z3VtZW50cykpOwogfQogCiBzdWIgcnVuSU9TV2ViS2l0QXBwKCQpCg==
</data>
<flag name="review"
          id="269668"
          type_id="1"
          status="+"
          setter="ddkilzer"
    />
          </attachment>
      

    </bug>

</bugzilla>