<?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>143612</bug_id>
          
          <creation_ts>2015-04-10 11:23:18 -0700</creation_ts>
          <short_desc>[Mac] &quot;Save to Downloads&quot; does nothing for local images</short_desc>
          <delta_ts>2015-04-21 18:28:30 -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>WebKit Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=143794</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="Brent Fulgham">bfulgham</reporter>
          <assigned_to name="Brent Fulgham">bfulgham</assigned_to>
          <cc>andersca</cc>
    
    <cc>ap</cc>
    
    <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jonlee</cc>
    
    <cc>mitz</cc>
    
    <cc>sam</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1084348</commentid>
    <comment_count>0</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-04-10 11:23:18 -0700</bug_when>
    <thetext>The &apos;Save to Downloads&apos; menu option does nothing when you are viewing a local image in the browser.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1084349</commentid>
    <comment_count>1</comment_count>
      <attachid>250524</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-04-10 11:29:31 -0700</bug_when>
    <thetext>Created attachment 250524
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1084350</commentid>
    <comment_count>2</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-04-10 11:30:14 -0700</bug_when>
    <thetext>&lt;rdar://problem/18858089&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1084352</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-04-10 11:31:21 -0700</bug_when>
    <thetext>Attachment 250524 did not pass style-queue:


ERROR: Source/WebKit/mac/WebView/WebView.mm:1851:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit/mac/WebView/WebView.mm:1853:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/Cocoa/WebProcessPoolCocoa.mm:479:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/Cocoa/WebProcessPoolCocoa.mm:481:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 4 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1084353</commentid>
    <comment_count>4</comment_count>
      <attachid>250524</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-04-10 11:47:28 -0700</bug_when>
    <thetext>Comment on attachment 250524
Patch

After talking to thorton and andersca about this, we will move this away from Download code into the menu handling or view.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1084357</commentid>
    <comment_count>5</comment_count>
      <attachid>250525</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-04-10 12:01:36 -0700</bug_when>
    <thetext>Created attachment 250525
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1084359</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-04-10 12:03:08 -0700</bug_when>
    <thetext>Attachment 250525 did not pass style-queue:


ERROR: Source/WebKit/mac/WebView/WebView.mm:1851:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit/mac/WebView/WebView.mm:1853:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/Cocoa/WebProcessPoolCocoa.mm:479:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/Cocoa/WebProcessPoolCocoa.mm:481:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 4 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1084377</commentid>
    <comment_count>7</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-04-10 13:45:56 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Comment on attachment 250524 [details]
&gt; Patch
&gt; 
&gt; After talking to thorton and andersca about this, we will move this away
&gt; from Download code into the menu handling or view.

After looking at this, I think it&apos;s better to leave it in the WebProcessPool sources, because there are a number of entry points that use the &quot;processPool().download(...)&quot; method to invoke this operation.

I would have to add a test for the URL as a local file in each of the six places this happens, and dispatch to the &quot;local file copy&quot; or the original download method. The current patch hides that inside the download method.

Six locations:
1. Save image locally (Action menu)
2. Save image locally (Context menu)
3. Save media locally (Action menu)
4. Save media locally (Context menu)
5. Save link locally (Action menu)
6. Save link locally (Context menu).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1084378</commentid>
    <comment_count>8</comment_count>
      <attachid>250531</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-04-10 13:46:29 -0700</bug_when>
    <thetext>Created attachment 250531
Patch v2 (iOS Build Fix)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1084379</commentid>
    <comment_count>9</comment_count>
      <attachid>250531</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-04-10 13:47:05 -0700</bug_when>
    <thetext>Comment on attachment 250531
Patch v2 (iOS Build Fix)

The iOS build doesn&apos;t like NSInteger used as a format argument. I switched to using &apos;int&apos; values for these simple counters.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1084380</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-04-10 13:48:24 -0700</bug_when>
    <thetext>Attachment 250531 did not pass style-queue:


ERROR: Source/WebKit/mac/WebView/WebView.mm:1851:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit/mac/WebView/WebView.mm:1853:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/Cocoa/WebProcessPoolCocoa.mm:479:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/Cocoa/WebProcessPoolCocoa.mm:481:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 4 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1084381</commentid>
    <comment_count>11</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-04-10 13:48:55 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; Attachment 250531 [details] did not pass style-queue:
&gt; 
&gt; 
&gt; ERROR: Source/WebKit/mac/WebView/WebView.mm:1851:  Weird number of spaces at
&gt; line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
&gt; ERROR: Source/WebKit/mac/WebView/WebView.mm:1853:  Weird number of spaces at
&gt; line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
&gt; ERROR: Source/WebKit2/UIProcess/Cocoa/WebProcessPoolCocoa.mm:479:  Weird
&gt; number of spaces at line-start.  Are you using a 4-space indent? 
&gt; [whitespace/indent] [3]
&gt; ERROR: Source/WebKit2/UIProcess/Cocoa/WebProcessPoolCocoa.mm:481:  Weird
&gt; number of spaces at line-start.  Are you using a 4-space indent? 
&gt; [whitespace/indent] [3]
&gt; Total errors found: 4 in 6 files
&gt; 
&gt; 
&gt; If any of these errors are false positives, please file a bug against
&gt; check-webkit-style.

This is just Objective C formatting.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1084409</commentid>
    <comment_count>12</comment_count>
      <attachid>250531</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2015-04-10 16:48:47 -0700</bug_when>
    <thetext>Comment on attachment 250531
Patch v2 (iOS Build Fix)

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

&gt; Source/WebKit/mac/WebView/WebView.mm:1847
&gt; +static void performLocalFileDownload(NSURL* sourceURL)

I think this should be called &quot;save to downloads&quot; or something along those lines.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1084425</commentid>
    <comment_count>13</comment_count>
      <attachid>250545</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-04-10 17:40:33 -0700</bug_when>
    <thetext>Created attachment 250545
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1084426</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-04-10 17:43:02 -0700</bug_when>
    <thetext>Attachment 250545 did not pass style-queue:


ERROR: Source/WebKit/mac/WebView/WebView.mm:1851:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit/mac/WebView/WebView.mm:1853:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/Cocoa/WebProcessPoolCocoa.mm:479:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/Cocoa/WebProcessPoolCocoa.mm:481:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 4 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1084464</commentid>
    <comment_count>15</comment_count>
      <attachid>250545</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-04-10 19:59:33 -0700</bug_when>
    <thetext>Comment on attachment 250545
Patch

r=me but I don’t think this is quite right.

Did you test the case where the filename is already the maximum length and we can’t append the hyphen and number? What do we do in that case? I’m guessing we’ll just run an infinite loop.

Can we put this function somewhere we can use it in both cases so we don’t have to have two copies?

What prevents the app from being quit while it is still writing the file if it’s a long file that takes a long time to copy? I am guessing that in that case we’ll leave a partial file (&quot;damaged image&quot;) in the file system. Also, do we need to do anything to prevent sudden termination while writing the file?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1084476</commentid>
    <comment_count>16</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-04-10 21:29:56 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; Comment on attachment 250545 [details]
&gt; Patch
&gt; 
&gt; r=me but I don’t think this is quite right.
&gt; 
&gt; Did you test the case where the filename is already the maximum length and
&gt; we can’t append the hyphen and number? What do we do in that case? I’m
&gt; guessing we’ll just run an infinite loop.

The loop only iterates if the error is that the file already exists. I&apos;ll have to test whether attempting to copy to a file name that is longer than the max length (and we have an existing file name that matches the proposed name -- up to the limit) fails with the &apos;file exists&apos; error, or a different error (e.g., file name is too long).

&gt; Can we put this function somewhere we can use it in both cases so we don’t
&gt; have to have two copies?

Yes. It seems like this should be something attached to the existing FileName class.

&gt; What prevents the app from being quit while it is still writing the file if
&gt; it’s a long file that takes a long time to copy? I am guessing that in that
&gt; case we’ll leave a partial file (&quot;damaged image&quot;) in the file system. Also,
&gt; do we need to do anything to prevent sudden termination while writing the
&gt; file?

It seems like the downside of early termination is low -- the file already exists on the user&apos;s disk, so it&apos;s not as if some ephemeral resource could be lost forever.

However, I might want to use the &apos;atomic&apos; flag on the file copy, so the OS only places the file in the final location if the copy completes. I can make that change as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1084722</commentid>
    <comment_count>17</comment_count>
      <attachid>250622</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-04-12 21:45:33 -0700</bug_when>
    <thetext>Created attachment 250622
Patch (revised per drain&apos;s comments)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1084723</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-04-12 21:47:07 -0700</bug_when>
    <thetext>Attachment 250622 did not pass style-queue:


ERROR: Source/WebCore/platform/mac/FileSystemMac.mm:107:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/mac/FileSystemMac.mm:109:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/mac/FileSystemMac.mm:159:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/mac/FileSystemMac.mm:160:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/mac/FileSystemMac.mm:161:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/mac/FileSystemMac.mm:162:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/mac/FileSystemMac.mm:163:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/mac/FileSystemMac.mm:164:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Total errors found: 8 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1084724</commentid>
    <comment_count>19</comment_count>
      <attachid>250622</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-04-12 21:47:21 -0700</bug_when>
    <thetext>Comment on attachment 250622
Patch (revised per drain&apos;s comments)

Updated patch to deal with:
1. Avoid partial/corrupt file copies by treating operations atomically:
(a) Initial copy to temp directory. If it fails, nothing is lost.
(b) Final move from temp directory to Downloads is an atomic operation.
2. Check for exceeding max path length.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1084725</commentid>
    <comment_count>20</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-04-12 21:48:02 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; Comment on attachment 250545 [details]
&gt; Patch
&gt; 
&gt; r=me but I don’t think this is quite right.

I uploaded a new patch -- but it has enough changes that I&apos;d appreciate you giving it another look.

Thanks!

-Brent</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1084818</commentid>
    <comment_count>21</comment_count>
      <attachid>250641</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-04-13 09:20:46 -0700</bug_when>
    <thetext>Created attachment 250641
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1084821</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-04-13 09:22:42 -0700</bug_when>
    <thetext>Attachment 250641 did not pass style-queue:


ERROR: Source/WebCore/platform/mac/FileSystemMac.mm:107:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/mac/FileSystemMac.mm:109:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/mac/FileSystemMac.mm:159:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/mac/FileSystemMac.mm:160:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/mac/FileSystemMac.mm:161:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/mac/FileSystemMac.mm:162:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/mac/FileSystemMac.mm:163:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/mac/FileSystemMac.mm:164:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Total errors found: 8 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1084823</commentid>
    <comment_count>23</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-04-13 09:24:00 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; Attachment 250641 [details] did not pass style-queue:
&gt; 
These are just complaints about our Objective C indentation style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1084850</commentid>
    <comment_count>24</comment_count>
      <attachid>250641</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-04-13 10:16:21 -0700</bug_when>
    <thetext>Comment on attachment 250641
Patch

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

I know I already reviewed this once, but I think what we have here is the wrong approach. Safari, at least, doesn’t always download to the system downloads directory. I don’t think this can be done correctly without involving the host application. I think we want to work with the existing API or add some new API so we can plug this in to the existing downloads code in WebKit apps.

&gt; Source/WebCore/platform/FileSystem.h:207
&gt; +#if PLATFORM(MAC)

I like to keep the platform-specific stuff sorted in alphabetical order. So I would put MAC after GTK and before SOUP. And add a blank line for SOUP so it’s got its own paragraph.

&gt; Source/WebCore/platform/FileSystem.h:208
&gt; +class URL;

This forward declaration can be unconditional and be at the top of the file.

&gt; Source/WebCore/platform/FileSystem.h:209
&gt; +WEBCORE_EXPORT void saveToDownloadFolder(const URL&amp;);

It’s a little peculiar that this uses URL and the rest of the file system stuff uses Strings for paths, but it’s certainly cleaner code this way. Since this is Mac-specific anyway, why not have it take an NSURL * directly?

&gt; Source/WebCore/platform/FileSystem.h:211
&gt;  } // namespace WebCore

Should add a blank line here.

&gt; Source/WebCore/platform/mac/FileSystemMac.mm:119
&gt; +    NSError *error = nil;
&gt; +    NSURL *downloadDirectoryURL = [[NSFileManager defaultManager] URLForDirectory:NSDownloadsDirectory
&gt; +                                                                         inDomain:NSUserDomainMask
&gt; +                                                                appropriateForURL:nil
&gt; +                                                                           create:NO
&gt; +                                                                            error:&amp;error];
&gt; +    if (!downloadDirectoryURL) {
&gt; +        LOG_ERROR(&quot;Unable to locate User&apos;s Download directory. %@&quot;, error);
&gt; +        return;
&gt; +    }
&gt; +
&gt; +    NSString *targetName = sourceURL.lastPathComponent;
&gt; +    NSString *extension = sourceURL.pathExtension;
&gt; +    NSInteger extensionLength = extension ? extension.length + 1 : 0;
&gt; +    NSString *baseFileName = [targetName substringToIndex:targetName.length - extensionLength];

Should do all of this on the other thread too. No reason to do it on the main thread.

&gt; Source/WebCore/platform/mac/FileSystemMac.mm:133
&gt; +        // Copy file to temporary location:

It’s nice to do this atomically. But to get this right we also would want to make sure we don’t lose the file if we just happen to quit shortly after starting to write it. That can be done by synchronously waiting for the work to complete during app exit and by preventing sudden termination. This is done in IconDatabase, for example, although I’m not sure it will work properly when the work is done in the web process rather than the UI process; for our case, though, it’s the UI process. Outside of WebKit there is something I wrote called CoalescedAsynchronousWriter that deals with this too, but I can’t think of other code in WebKit that does this. To make it work we’d need to add a separate FileSystem.h function to call at quit time.

&gt; Source/WebCore/platform/mac/FileSystemMac.mm:138
&gt; +            LOG_ERROR(&quot;Error writing %@ to temporary location %@: %@&quot;, sourceURL, tempURL, copyError);
&gt; +            return;

Not good to fail silently.

&gt; Source/WebCore/platform/mac/FileSystemMac.mm:146
&gt; +                return;

Not good to fail silently. Also, it will take a very long time to count up to 2^32, so this will probably hang the queue for a long time if this is happening.

&gt; Source/WebCore/platform/mac/FileSystemMac.mm:154
&gt; +            if (copyURL.absoluteString.length &gt;= PATH_MAX) {
&gt; +                LOG_ERROR(&quot;File path &apos;%@&apos; &apos;exceeds system path length. Unable to perform download.&quot;, copyURL);
&gt; +                return;
&gt; +            }

I don’t think this check is correct. For one thing, it’s checking the length of a URL against the path maximum, and the URL is longer than the file system path inside the URL. For another, PATH_MAX is the limit of the file system API, but not necessarily the actual practical limit of the file system itself. For example, I think there’s a 255 UTF-16 code unit limit on file names on HFS+ volumes. Not on the entire path, but just on the file name.

It’s also not good to have this fail silently. The real downloading machinery puts up a sheet if it fails.

&gt; Source/WebCore/platform/mac/FileSystemMac.mm:166
&gt; +            LOG_ERROR(&quot;Error copying &apos;%@&apos; from temporary location &apos;%@&apos; to final target &apos;%@&apos;: %@&quot;, sourceURL, tempURL, copyURL, copyError);
&gt; +            return;

Not good to fail silently.

&gt; Source/WebKit/mac/WebView/WebView.mm:1852
&gt; +    WebCore::URL coreUrl(URL);

WebKit style would be coreURL, not coreUrl.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1085170</commentid>
    <comment_count>25</comment_count>
      <attachid>250641</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-04-14 10:05:48 -0700</bug_when>
    <thetext>Comment on attachment 250641
Patch

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

&gt;&gt; Source/WebCore/platform/FileSystem.h:207
&gt;&gt; +#if PLATFORM(MAC)
&gt; 
&gt; I like to keep the platform-specific stuff sorted in alphabetical order. So I would put MAC after GTK and before SOUP. And add a blank line for SOUP so it’s got its own paragraph.

OK!

&gt;&gt; Source/WebCore/platform/FileSystem.h:208
&gt;&gt; +class URL;
&gt; 
&gt; This forward declaration can be unconditional and be at the top of the file.

OK!

&gt;&gt; Source/WebCore/platform/FileSystem.h:209
&gt;&gt; +WEBCORE_EXPORT void saveToDownloadFolder(const URL&amp;);
&gt; 
&gt; It’s a little peculiar that this uses URL and the rest of the file system stuff uses Strings for paths, but it’s certainly cleaner code this way. Since this is Mac-specific anyway, why not have it take an NSURL * directly?

Sure, I could use an NSURL instead. Done!

&gt;&gt; Source/WebCore/platform/FileSystem.h:211
&gt;&gt;  } // namespace WebCore
&gt; 
&gt; Should add a blank line here.

OK!

&gt;&gt; Source/WebCore/platform/mac/FileSystemMac.mm:119
&gt;&gt; +    NSString *baseFileName = [targetName substringToIndex:targetName.length - extensionLength];
&gt; 
&gt; Should do all of this on the other thread too. No reason to do it on the main thread.

OK!

&gt;&gt; Source/WebKit/mac/WebView/WebView.mm:1852
&gt;&gt; +    WebCore::URL coreUrl(URL);
&gt; 
&gt; WebKit style would be coreURL, not coreUrl.

OK!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1085389</commentid>
    <comment_count>26</comment_count>
      <attachid>250774</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-04-14 19:24:41 -0700</bug_when>
    <thetext>Created attachment 250774
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1085391</commentid>
    <comment_count>27</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-04-14 19:26:11 -0700</bug_when>
    <thetext>Attachment 250774 did not pass style-queue:


ERROR: Source/WebCore/platform/mac/FileSystemMac.mm:107:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/mac/FileSystemMac.mm:109:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/mac/FileSystemMac.mm:165:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/mac/FileSystemMac.mm:166:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/mac/FileSystemMac.mm:167:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/mac/FileSystemMac.mm:168:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/mac/FileSystemMac.mm:169:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/mac/FileSystemMac.mm:170:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Total errors found: 8 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1085392</commentid>
    <comment_count>28</comment_count>
      <attachid>250775</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-04-14 19:26:33 -0700</bug_when>
    <thetext>Created attachment 250775
Patch (v4 More improvements)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1085393</commentid>
    <comment_count>29</comment_count>
      <attachid>250775</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-04-14 19:27:38 -0700</bug_when>
    <thetext>Comment on attachment 250775
Patch (v4 More improvements)

This change includes a mechanism to give feedback to the caller (and delegates). This is sufficient, for example, to allow a registered download client to see that the download (file copy) failed due to disk space or other issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1085394</commentid>
    <comment_count>30</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-04-14 19:29:11 -0700</bug_when>
    <thetext>Attachment 250775 did not pass style-queue:


ERROR: Source/WebCore/platform/mac/FileSystemMac.mm:107:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/mac/FileSystemMac.mm:109:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/mac/FileSystemMac.mm:165:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/mac/FileSystemMac.mm:166:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/mac/FileSystemMac.mm:167:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/mac/FileSystemMac.mm:168:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/mac/FileSystemMac.mm:169:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/mac/FileSystemMac.mm:170:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Total errors found: 8 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1086324</commentid>
    <comment_count>31</comment_count>
      <attachid>250775</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-04-17 09:13:07 -0700</bug_when>
    <thetext>Comment on attachment 250775
Patch (v4 More improvements)

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

We discussed these comments and many others in your office. This is getting closer to the right approach but still not something we should land.

&gt; Source/WebKit2/UIProcess/WebProcessPool.cpp:883
&gt; +        WebCore::saveToDownloadFolder(request.url(), ^(bool success, String path, NSError *error) {

These should use C++ lambdas instead of Objective-C blocks so we can see what is captured and make sure there are no threading mistakes. You can pass a lambda to a function that takes a block in Objective-C++.

&gt; Source/WebKit2/UIProcess/WebProcessPool.cpp:885
&gt; +            dispatch_async(dispatch_get_main_queue(), ^() {

These should use C++ lambdas instead of Objective-C blocks so we can see what is captured and make sure there are no threading mistakes. You can pass a lambda to a function that takes a block in Objective-C++.

&gt; Source/WebKit/mac/WebView/WebView.mm:1861
&gt; +        WebCore::saveToDownloadFolder(URL, ^(bool success, String destination, NSError *error) {

These should use C++ lambdas instead of Objective-C blocks so we can see what is captured and make sure there are no threading mistakes. You can pass a lambda to a function that takes a block in Objective-C++.

&gt; Source/WebKit/mac/WebView/WebView.mm:1863
&gt; +            dispatch_async(dispatch_get_main_queue(), ^{

These should use C++ lambdas instead of Objective-C blocks so we can see what is captured and make sure there are no threading mistakes. You can pass a lambda to a function that takes a block in Objective-C++.

&gt; Source/WebKit/mac/WebView/WebView.mm:1865
&gt; +                    [_private-&gt;downloadDelegate download:download didCreateDestination:destination];

I don’t think it’s safe to capture the String in this block. Instead I think you need to convert it to a RetainPtr&lt;NSString&gt; before calling dispatch_async, and capture that.

Similarly, I think we need to capture a RetainPtr&lt;WebDownload&gt;, not a raw pointer to a WebDownload, to guarantee we won’t be accessing a deleted object. Same thing for self.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1087265</commentid>
    <comment_count>32</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2015-04-21 18:28:30 -0700</bug_when>
    <thetext>&lt;rdar://problem/20644982&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>250524</attachid>
            <date>2015-04-10 11:29:31 -0700</date>
            <delta_ts>2015-04-10 12:01:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143612-20150410112839.patch</filename>
            <type>text/plain</type>
            <size>8893</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MjYzNSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDE1LTA0LTEwICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtNYWNdICJTYXZlIHRvIERv
d25sb2FkcyIgZG9lcyBub3RoaW5nIGZvciBsb2NhbCBpbWFnZXMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MzYxMgorICAgICAgICA8cmRhcjovL3By
b2JsZW0vMTg4NTgwODk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgV2hlbiBhIGxvY2FsIGZpbGUgaXMgZGlzcGxheWVkIGluIHRoZSBXZWJWaWV3LCB1
c2luZyB0aGUgIlNhdmUgdG8gRG93bmxvYWRzIgorICAgICAgICBjb250ZXh0IG1lbnUgb3B0aW9u
IGRvZXNuJ3QgY29weSB0aGUgZmlsZSB0byBEb3dubG9hZHMuIFRoaXMgY2hhbmdlIGlkZW50aWZp
ZXMKKyAgICAgICAgdGhpcyBjYXNlLCBhbmQgcGVyZm9ybXMgYSBmaWxlIGNvcHkuCisKKyAgICAg
ICAgKiBTaGFyZWQvRG93bmxvYWRzL0Rvd25sb2FkLmg6CisgICAgICAgICogVUlQcm9jZXNzL0Nv
Y29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQ
b29sOjpwZXJmb3JtTG9jYWxGaWxlRG93bmxvYWQpOiBOZXcgaGVscGVyIGZ1bmN0aW9uLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQb29sOjpkb3dubG9hZCk6IElkZW50aWZ5IGEgbG9jYWwgZmlsZSAnZG93bmxvYWQn
LCBhbmQgY2FsbAorICAgICAgICBoZWxwZXIgZnVuY3Rpb24gdG8gZG8gdGhlIHdvcmsuCisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6CisKIDIwMTUtMDQtMTAgIEVyaWMgQ2Fy
bHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgW01hY10gUmVmYWN0b3Ig
TWVkaWFQbGF5YmFja1RhcmdldApJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fk
cy9Eb3dubG9hZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9h
ZHMvRG93bmxvYWQuaAkocmV2aXNpb24gMTgyNjMwKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVk
L0Rvd25sb2Fkcy9Eb3dubG9hZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTUsNiArMTE1LDEwIEBA
IHByaXZhdGU6CiAKICAgICB2b2lkIHBsYXRmb3JtSW52YWxpZGF0ZSgpOwogCisjaWYgUExBVEZP
Uk0oTUFDKQorICAgIHZvaWQgaGFuZGxlTG9jYWxGaWxlRG93bmxvYWQoKTsKKyNlbmRpZgorCiAg
ICAgU3RyaW5nIHJldHJpZXZlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoY29uc3Qg
U3RyaW5nJiBmaWxlbmFtZSwgYm9vbCYgYWxsb3dPdmVyd3JpdGUpOwogCiAgICAgRG93bmxvYWRN
YW5hZ2VyJiBtX2Rvd25sb2FkTWFuYWdlcjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmNwcAkocmV2aXNpb24gMTgyNjMwKQorKysgU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODczLDYg
Kzg3MywxMyBAQCBQYXNzUmVmUHRyPFdlYlBhZ2VQcm94eT4gV2ViUHJvY2Vzc1Bvb2w6CiAKIERv
d25sb2FkUHJveHkqIFdlYlByb2Nlc3NQb29sOjpkb3dubG9hZChXZWJQYWdlUHJveHkqIGluaXRp
YXRpbmdQYWdlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7CisjaWYgUExBVEZP
Uk0oQ09DT0EpCisgICAgaWYgKHJlcXVlc3QudXJsKCkuaXNMb2NhbEZpbGUoKSkgeworICAgICAg
ICBwZXJmb3JtTG9jYWxGaWxlRG93bmxvYWQocmVxdWVzdCk7CisgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgIH0KKyNlbmRpZgorICAgIAogICAgIERvd25sb2FkUHJveHkqIGRvd25sb2FkUHJv
eHkgPSBjcmVhdGVEb3dubG9hZFByb3h5KHJlcXVlc3QpOwogICAgIHVpbnQ2NF90IGluaXRpYXRp
bmdQYWdlSUQgPSBpbml0aWF0aW5nUGFnZSA/IGluaXRpYXRpbmdQYWdlLT5wYWdlSUQoKSA6IDA7
CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCShyZXZp
c2lvbiAxODI2MzApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
aAkod29ya2luZyBjb3B5KQpAQCAtMjc0LDYgKzI3NCw3IEBAIHB1YmxpYzoKIAogI2lmIFBMQVRG
T1JNKENPQ09BKQogICAgIHN0YXRpYyBib29sIG9taXRQREZTdXBwb3J0KCk7CisgICAgdm9pZCBw
ZXJmb3JtTG9jYWxGaWxlRG93bmxvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7
CiAjZW5kaWYKIAogICAgIHZvaWQgZnVsbEtleWJvYXJkQWNjZXNzTW9kZUNoYW5nZWQoYm9vbCBm
dWxsS2V5Ym9hcmRBY2Nlc3NFbmFibGVkKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCShyZXZpc2lvbiAxODI2
MzApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2Nv
YS5tbQkod29ya2luZyBjb3B5KQpAQCAtNDY5LDYgKzQ2OSw0MyBAQCB2b2lkIFdlYlByb2Nlc3NQ
b29sOjpyZXNldEhTVFNIb3N0cygpCiAgICAgX0NGTmV0d29ya1Jlc2V0SFNUU0hvc3RzV2l0aFNl
c3Npb24ocHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpKTsKIH0KIAordm9pZCBXZWJQcm9jZXNzUG9v
bDo6cGVyZm9ybUxvY2FsRmlsZURvd25sb2FkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCkKK3sKKyAgICBBU1NFUlQocmVxdWVzdC51cmwoKS5pc0xvY2FsRmlsZSgpKTsKKworICAgIE5T
VVJMICpzb3VyY2VVUkwgPSByZXF1ZXN0LnVybCgpOworICAgIE5TRXJyb3IgKmVycm9yOworICAg
IE5TVVJMICpkb3dubG9hZERpcmVjdG9yeVVSTCA9IFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFu
YWdlcl0gVVJMRm9yRGlyZWN0b3J5Ok5TRG93bmxvYWRzRGlyZWN0b3J5CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW5Eb21haW46TlNVc2VyRG9tYWluTWFzaworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcHJvcHJpYXRlRm9yVVJMOm5p
bAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY3JlYXRlOk5PCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3I6
JmVycm9yXTsKKyAgICBpZiAoIWRvd25sb2FkRGlyZWN0b3J5VVJMKSB7CisgICAgICAgIExPR19F
UlJPUigiVW5hYmxlIHRvIGxvY2F0ZSBVc2VyJ3MgRG93bmxvYWQgZGlyZWN0b3J5LiAlQCIsIGVy
cm9yKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGRpc3BhdGNoX2FzeW5jKGRpc3Bh
dGNoX2dldF9nbG9iYWxfcXVldWUoRElTUEFUQ0hfUVVFVUVfUFJJT1JJVFlfREVGQVVMVCwgMCks
IF57CisgICAgICAgIE5TVVJMICpjb3B5VVJMID0gW2Rvd25sb2FkRGlyZWN0b3J5VVJMIFVSTEJ5
QXBwZW5kaW5nUGF0aENvbXBvbmVudDpzb3VyY2VVUkwubGFzdFBhdGhDb21wb25lbnQgaXNEaXJl
Y3Rvcnk6Tk9dOworICAgICAgICBOU1N0cmluZyAqZXh0ZW5zaW9uID0gY29weVVSTC5wYXRoRXh0
ZW5zaW9uOworICAgICAgICBOU0ludGVnZXIgZXh0ZW5zaW9uTGVuZ3RoID0gZXh0ZW5zaW9uID8g
ZXh0ZW5zaW9uLmxlbmd0aCArIDEgOiAwOworICAgICAgICBOU1N0cmluZyAqZmlsZU5hbWUgPSBb
c291cmNlVVJMLmxhc3RQYXRoQ29tcG9uZW50IHN1YnN0cmluZ1RvSW5kZXg6c291cmNlVVJMLmxh
c3RQYXRoQ29tcG9uZW50Lmxlbmd0aCAtIGV4dGVuc2lvbkxlbmd0aF07CisKKyAgICAgICAgTlNJ
bnRlZ2VyIGNvdW50ZXIgPSAxOworICAgICAgICBOU0Vycm9yICpjb3B5RXJyb3I7CisgICAgICAg
IHdoaWxlICghW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjb3B5SXRlbUF0VVJMOnNv
dXJjZVVSTCB0b1VSTDpjb3B5VVJMIGVycm9yOiZjb3B5RXJyb3JdKSB7CisgICAgICAgICAgICBp
ZiAoY29weUVycm9yLmNvZGUgIT0gTlNGaWxlV3JpdGVGaWxlRXhpc3RzRXJyb3IpIHsKKyAgICAg
ICAgICAgICAgICBMT0dfRVJST1IoIkVycm9yIGNvcHlpbmcgJUAgdG8gJUA6ICVAIiwgc291cmNl
VVJMLCBjb3B5VVJMLCBjb3B5RXJyb3IpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgTlNTdHJpbmcgKm5ld0ZpbGVuYW1lID0gW05TU3RyaW5n
IHN0cmluZ1dpdGhGb3JtYXQ6QCIlQC0lbGQuJUAiLCBmaWxlTmFtZSwgY291bnRlciwgZXh0ZW5z
aW9uXTsKKyAgICAgICAgICAgIGNvcHlVUkwgPSBbZG93bmxvYWREaXJlY3RvcnlVUkwgVVJMQnlB
cHBlbmRpbmdQYXRoQ29tcG9uZW50Om5ld0ZpbGVuYW1lIGlzRGlyZWN0b3J5Ok5PXTsKKyAgICAg
ICAgICAgICsrY291bnRlcjsKKyAgICAgICAgfQorICAgIH0pOworfQorCiBpbnQgbmV0d29ya1By
b2Nlc3NMYXRlbmN5UU9TKCkKIHsKICAgICBzdGF0aWMgaW50IHFvcyA9IFtbTlNVc2VyRGVmYXVs
dHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIGludGVnZXJGb3JLZXk6QCJXZWJLaXROZXR3b3JrUHJv
Y2Vzc0xhdGVuY3lRT1MiXTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MjYzNSkK
KysrIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDIwIEBACisyMDE1LTA0LTEwICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgor
CisgICAgICAgIFtNYWNdICJTYXZlIHRvIERvd25sb2FkcyIgZG9lcyBub3RoaW5nIGZvciBsb2Nh
bCBpbWFnZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE0MzYxMgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTg4NTgwODk+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hlbiBhIGxvY2FsIGZpbGUgaXMg
ZGlzcGxheWVkIGluIHRoZSBXZWJWaWV3LCB1c2luZyB0aGUgIlNhdmUgdG8gRG93bmxvYWRzIgor
ICAgICAgICBjb250ZXh0IG1lbnUgb3B0aW9uIGRvZXNuJ3QgY29weSB0aGUgZmlsZSB0byBEb3du
bG9hZHMuIFRoaXMgY2hhbmdlIGlkZW50aWZpZXMKKyAgICAgICAgdGhpcyBjYXNlLCBhbmQgcGVy
Zm9ybXMgYSBmaWxlIGNvcHkuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAg
ICAgIChwZXJmb3JtTG9jYWxGaWxlRG93bmxvYWQpOiBOZXcgaGVscGVyIGZ1bmN0aW9uLgorICAg
ICAgICAoLVtXZWJWaWV3IF9kb3dubG9hZFVSTDpdKTogSWYgVVJMIGlzIGEgbG9jYWwgZmlsZSwg
cGVyZm9ybSBhIGxvY2FsIGZpbGUKKyAgICAgICAgY29weSwgcmF0aGVyIHRoYW4gaW52b2tpbmcg
dGhlIG5ldHdvcmstYmFzZWQgZG93bmxvYWQgbG9naWMuCisKIDIwMTUtMDQtMTAgIEVyaWMgQ2Fy
bHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgW01hY10gUmVmYWN0b3Ig
TWVkaWFQbGF5YmFja1RhcmdldApJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJW
aWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5t
bQkocmV2aXNpb24gMTgyNjMwKQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xODQ0LDEwICsxODQ0LDQ5IEBAICsgKE5TU3RyaW5nICop
X01JTUVUeXBlRm9yRmlsZTooTlNTdHJpbmcKICAgICByZXR1cm4gTUlNRVR5cGU7CiB9CiAKK3N0
YXRpYyB2b2lkIHBlcmZvcm1Mb2NhbEZpbGVEb3dubG9hZChOU1VSTCogc291cmNlVVJMKQorewor
ICAgIE5TRXJyb3IgKmVycm9yOworICAgIE5TVVJMICpkb3dubG9hZERpcmVjdG9yeVVSTCA9IFtb
TlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gVVJMRm9yRGlyZWN0b3J5Ok5TRG93bmxvYWRz
RGlyZWN0b3J5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5Eb21haW46TlNVc2VyRG9tYWluTWFzaworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGFwcHJvcHJpYXRlRm9yVVJMOm5pbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlOk5PCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZXJyb3I6JmVycm9yXTsKKyAgICBpZiAoIWRvd25sb2FkRGlyZWN0
b3J5VVJMKSB7CisgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGxvY2F0ZSBVc2VyJ3MgRG93
bmxvYWQgZGlyZWN0b3J5LiAlQCIsIGVycm9yKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICAKKyAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfZ2xvYmFsX3F1ZXVlKERJU1BBVENI
X1FVRVVFX1BSSU9SSVRZX0RFRkFVTFQsIDApLCBeeworICAgICAgICBOU1VSTCAqY29weVVSTCA9
IFtkb3dubG9hZERpcmVjdG9yeVVSTCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6c291cmNl
VVJMLmxhc3RQYXRoQ29tcG9uZW50IGlzRGlyZWN0b3J5Ok5PXTsKKyAgICAgICAgTlNTdHJpbmcg
KmV4dGVuc2lvbiA9IGNvcHlVUkwucGF0aEV4dGVuc2lvbjsKKyAgICAgICAgTlNJbnRlZ2VyIGV4
dGVuc2lvbkxlbmd0aCA9IGV4dGVuc2lvbiA/IGV4dGVuc2lvbi5sZW5ndGggKyAxIDogMDsKKyAg
ICAgICAgTlNTdHJpbmcgKmZpbGVOYW1lID0gW3NvdXJjZVVSTC5sYXN0UGF0aENvbXBvbmVudCBz
dWJzdHJpbmdUb0luZGV4OnNvdXJjZVVSTC5sYXN0UGF0aENvbXBvbmVudC5sZW5ndGggLSBleHRl
bnNpb25MZW5ndGhdOworICAgICAgICAKKyAgICAgICAgTlNJbnRlZ2VyIGNvdW50ZXIgPSAxOwor
ICAgICAgICBOU0Vycm9yICpjb3B5RXJyb3I7CisgICAgICAgIHdoaWxlICghW1tOU0ZpbGVNYW5h
Z2VyIGRlZmF1bHRNYW5hZ2VyXSBjb3B5SXRlbUF0VVJMOnNvdXJjZVVSTCB0b1VSTDpjb3B5VVJM
IGVycm9yOiZjb3B5RXJyb3JdKSB7CisgICAgICAgICAgICBpZiAoY29weUVycm9yLmNvZGUgIT0g
TlNGaWxlV3JpdGVGaWxlRXhpc3RzRXJyb3IpIHsKKyAgICAgICAgICAgICAgICBMT0dfRVJST1Io
IkVycm9yIGNvcHlpbmcgJUAgdG8gJUA6ICVAIiwgc291cmNlVVJMLCBjb3B5VVJMLCBjb3B5RXJy
b3IpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IAorICAgICAgICAgICAgTlNTdHJpbmcgKm5ld0ZpbGVuYW1lID0gW05TU3RyaW5nIHN0cmluZ1dp
dGhGb3JtYXQ6QCIlQC0lbGQuJUAiLCBmaWxlTmFtZSwgY291bnRlciwgZXh0ZW5zaW9uXTsKKyAg
ICAgICAgICAgIGNvcHlVUkwgPSBbZG93bmxvYWREaXJlY3RvcnlVUkwgVVJMQnlBcHBlbmRpbmdQ
YXRoQ29tcG9uZW50Om5ld0ZpbGVuYW1lIGlzRGlyZWN0b3J5Ok5PXTsKKyAgICAgICAgICAgICsr
Y291bnRlcjsKKyAgICAgICAgfQorICAgIH0pOworfQorCiAtIChXZWJEb3dubG9hZCAqKV9kb3du
bG9hZFVSTDooTlNVUkwgKilVUkwKIHsKICAgICBBU1NFUlQoVVJMKTsKICAgICAKKyAgICBpZiAo
V2ViQ29yZTo6VVJMKFVSTCkuaXNMb2NhbEZpbGUoKSkgeworICAgICAgICBwZXJmb3JtTG9jYWxG
aWxlRG93bmxvYWQoVVJMKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorICAgIAog
ICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtbTlNVUkxSZXF1ZXN0IGFsbG9jXSBpbml0V2l0
aFVSTDpVUkxdOwogICAgIFdlYkRvd25sb2FkICpkb3dubG9hZCA9IFtXZWJEb3dubG9hZCBfZG93
bmxvYWRXaXRoUmVxdWVzdDpyZXF1ZXN0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRlbGVnYXRlOl9wcml2YXRlLT5kb3dubG9hZERlbGVnYXRl
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>250525</attachid>
            <date>2015-04-10 12:01:36 -0700</date>
            <delta_ts>2015-04-10 13:46:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143612-20150410120044.patch</filename>
            <type>text/plain</type>
            <size>8333</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MjYzNSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBACisyMDE1LTA0LTEwICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtNYWNdICJTYXZlIHRvIERv
d25sb2FkcyIgZG9lcyBub3RoaW5nIGZvciBsb2NhbCBpbWFnZXMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MzYxMgorICAgICAgICA8cmRhcjovL3By
b2JsZW0vMTg4NTgwODk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgV2hlbiBhIGxvY2FsIGZpbGUgaXMgZGlzcGxheWVkIGluIHRoZSBXZWJWaWV3LCB1
c2luZyB0aGUgIlNhdmUgdG8gRG93bmxvYWRzIgorICAgICAgICBjb250ZXh0IG1lbnUgb3B0aW9u
IGRvZXNuJ3QgY29weSB0aGUgZmlsZSB0byBEb3dubG9hZHMuIFRoaXMgY2hhbmdlIGlkZW50aWZp
ZXMKKyAgICAgICAgdGhpcyBjYXNlLCBhbmQgcGVyZm9ybXMgYSBmaWxlIGNvcHkuCisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbToKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnBlcmZvcm1Mb2NhbEZpbGVEb3dubG9hZCk6IE5ldyBoZWxw
ZXIgZnVuY3Rpb24uCisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmRvd25sb2FkKTogSWRlbnRpZnkgYSBsb2Nh
bCBmaWxlICdkb3dubG9hZCcsIGFuZCBjYWxsCisgICAgICAgIGhlbHBlciBmdW5jdGlvbiB0byBk
byB0aGUgd29yay4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKwogMjAx
NS0wNC0xMCAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbTWFjXSBSZWZhY3RvciBNZWRpYVBsYXliYWNrVGFyZ2V0CkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAJKHJldmlzaW9uIDE4MjYzMCkKKysrIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTg3Myw2ICs4NzMsMTMgQEAgUGFzc1JlZlB0cjxXZWJQYWdlUHJveHk+IFdlYlByb2Nlc3NQ
b29sOgogCiBEb3dubG9hZFByb3h5KiBXZWJQcm9jZXNzUG9vbDo6ZG93bmxvYWQoV2ViUGFnZVBy
b3h5KiBpbml0aWF0aW5nUGFnZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewor
I2lmIFBMQVRGT1JNKENPQ09BKQorICAgIGlmIChyZXF1ZXN0LnVybCgpLmlzTG9jYWxGaWxlKCkp
IHsKKyAgICAgICAgcGVyZm9ybUxvY2FsRmlsZURvd25sb2FkKHJlcXVlc3QpOworICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICB9CisjZW5kaWYKKyAgICAKICAgICBEb3dubG9hZFByb3h5KiBk
b3dubG9hZFByb3h5ID0gY3JlYXRlRG93bmxvYWRQcm94eShyZXF1ZXN0KTsKICAgICB1aW50NjRf
dCBpbml0aWF0aW5nUGFnZUlEID0gaW5pdGlhdGluZ1BhZ2UgPyBpbml0aWF0aW5nUGFnZS0+cGFn
ZUlEKCkgOiAwOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuaAkocmV2aXNpb24gMTgyNjMwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3NCw2ICsyNzQsNyBAQCBwdWJsaWM6CiAK
ICNpZiBQTEFURk9STShDT0NPQSkKICAgICBzdGF0aWMgYm9vbCBvbWl0UERGU3VwcG9ydCgpOwor
ICAgIHZvaWQgcGVyZm9ybUxvY2FsRmlsZURvd25sb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYpOwogI2VuZGlmCiAKICAgICB2b2lkIGZ1bGxLZXlib2FyZEFjY2Vzc01vZGVDaGFu
Z2VkKGJvb2wgZnVsbEtleWJvYXJkQWNjZXNzRW5hYmxlZCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQkocmV2
aXNpb24gMTgyNjMwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nl
c3NQb29sQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTQ2OSw2ICs0NjksNDMgQEAgdm9pZCBX
ZWJQcm9jZXNzUG9vbDo6cmVzZXRIU1RTSG9zdHMoKQogICAgIF9DRk5ldHdvcmtSZXNldEhTVFNI
b3N0c1dpdGhTZXNzaW9uKHByaXZhdGVCcm93c2luZ1Nlc3Npb24oKSk7CiB9CiAKK3ZvaWQgV2Vi
UHJvY2Vzc1Bvb2w6OnBlcmZvcm1Mb2NhbEZpbGVEb3dubG9hZChjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QpCit7CisgICAgQVNTRVJUKHJlcXVlc3QudXJsKCkuaXNMb2NhbEZpbGUoKSk7
CisKKyAgICBOU1VSTCAqc291cmNlVVJMID0gcmVxdWVzdC51cmwoKTsKKyAgICBOU0Vycm9yICpl
cnJvcjsKKyAgICBOU1VSTCAqZG93bmxvYWREaXJlY3RvcnlVUkwgPSBbW05TRmlsZU1hbmFnZXIg
ZGVmYXVsdE1hbmFnZXJdIFVSTEZvckRpcmVjdG9yeTpOU0Rvd25sb2Fkc0RpcmVjdG9yeQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGluRG9tYWluOk5TVXNlckRvbWFpbk1hc2sKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHByb3ByaWF0
ZUZvclVSTDpuaWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZTpOTworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGVycm9yOiZlcnJvcl07CisgICAgaWYgKCFkb3dubG9hZERpcmVjdG9yeVVSTCkgeworICAg
ICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBsb2NhdGUgVXNlcidzIERvd25sb2FkIGRpcmVjdG9y
eS4gJUAiLCBlcnJvcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBkaXNwYXRjaF9h
c3luYyhkaXNwYXRjaF9nZXRfZ2xvYmFsX3F1ZXVlKERJU1BBVENIX1FVRVVFX1BSSU9SSVRZX0RF
RkFVTFQsIDApLCBeeworICAgICAgICBOU1VSTCAqY29weVVSTCA9IFtkb3dubG9hZERpcmVjdG9y
eVVSTCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6c291cmNlVVJMLmxhc3RQYXRoQ29tcG9u
ZW50IGlzRGlyZWN0b3J5Ok5PXTsKKyAgICAgICAgTlNTdHJpbmcgKmV4dGVuc2lvbiA9IGNvcHlV
UkwucGF0aEV4dGVuc2lvbjsKKyAgICAgICAgTlNJbnRlZ2VyIGV4dGVuc2lvbkxlbmd0aCA9IGV4
dGVuc2lvbiA/IGV4dGVuc2lvbi5sZW5ndGggKyAxIDogMDsKKyAgICAgICAgTlNTdHJpbmcgKmZp
bGVOYW1lID0gW3NvdXJjZVVSTC5sYXN0UGF0aENvbXBvbmVudCBzdWJzdHJpbmdUb0luZGV4OnNv
dXJjZVVSTC5sYXN0UGF0aENvbXBvbmVudC5sZW5ndGggLSBleHRlbnNpb25MZW5ndGhdOworCisg
ICAgICAgIE5TSW50ZWdlciBjb3VudGVyID0gMTsKKyAgICAgICAgTlNFcnJvciAqY29weUVycm9y
OworICAgICAgICB3aGlsZSAoIVtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY29weUl0
ZW1BdFVSTDpzb3VyY2VVUkwgdG9VUkw6Y29weVVSTCBlcnJvcjomY29weUVycm9yXSkgeworICAg
ICAgICAgICAgaWYgKGNvcHlFcnJvci5jb2RlICE9IE5TRmlsZVdyaXRlRmlsZUV4aXN0c0Vycm9y
KSB7CisgICAgICAgICAgICAgICAgTE9HX0VSUk9SKCJFcnJvciBjb3B5aW5nICVAIHRvICVAOiAl
QCIsIHNvdXJjZVVSTCwgY29weVVSTCwgY29weUVycm9yKTsKKyAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIE5TU3RyaW5nICpuZXdGaWxlbmFtZSA9
IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAtJWxkLiVAIiwgZmlsZU5hbWUsIGNvdW50
ZXIsIGV4dGVuc2lvbl07CisgICAgICAgICAgICBjb3B5VVJMID0gW2Rvd25sb2FkRGlyZWN0b3J5
VVJMIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpuZXdGaWxlbmFtZSBpc0RpcmVjdG9yeTpO
T107CisgICAgICAgICAgICArK2NvdW50ZXI7CisgICAgICAgIH0KKyAgICB9KTsKK30KKwogaW50
IG5ldHdvcmtQcm9jZXNzTGF0ZW5jeVFPUygpCiB7CiAgICAgc3RhdGljIGludCBxb3MgPSBbW05T
VXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBpbnRlZ2VyRm9yS2V5OkAiV2ViS2l0
TmV0d29ya1Byb2Nlc3NMYXRlbmN5UU9TIl07CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lv
biAxODI2MzUpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwyMCBAQAorMjAxNS0wNC0xMCAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFw
cGxlLmNvbT4KKworICAgICAgICBbTWFjXSAiU2F2ZSB0byBEb3dubG9hZHMiIGRvZXMgbm90aGlu
ZyBmb3IgbG9jYWwgaW1hZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNDM2MTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzE4ODU4MDg5PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gYSBsb2Nh
bCBmaWxlIGlzIGRpc3BsYXllZCBpbiB0aGUgV2ViVmlldywgdXNpbmcgdGhlICJTYXZlIHRvIERv
d25sb2FkcyIKKyAgICAgICAgY29udGV4dCBtZW51IG9wdGlvbiBkb2Vzbid0IGNvcHkgdGhlIGZp
bGUgdG8gRG93bmxvYWRzLiBUaGlzIGNoYW5nZSBpZGVudGlmaWVzCisgICAgICAgIHRoaXMgY2Fz
ZSwgYW5kIHBlcmZvcm1zIGEgZmlsZSBjb3B5LgorCisgICAgICAgICogV2ViVmlldy9XZWJWaWV3
Lm1tOgorICAgICAgICAocGVyZm9ybUxvY2FsRmlsZURvd25sb2FkKTogTmV3IGhlbHBlciBmdW5j
dGlvbi4KKyAgICAgICAgKC1bV2ViVmlldyBfZG93bmxvYWRVUkw6XSk6IElmIFVSTCBpcyBhIGxv
Y2FsIGZpbGUsIHBlcmZvcm0gYSBsb2NhbCBmaWxlCisgICAgICAgIGNvcHksIHJhdGhlciB0aGFu
IGludm9raW5nIHRoZSBuZXR3b3JrLWJhc2VkIGRvd25sb2FkIGxvZ2ljLgorCiAyMDE1LTA0LTEw
ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFtNYWNd
IFJlZmFjdG9yIE1lZGlhUGxheWJhY2tUYXJnZXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYlZpZXcubW0JKHJldmlzaW9uIDE4MjYzMCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTg0NCwxMCArMTg0NCw0OSBAQCArIChO
U1N0cmluZyAqKV9NSU1FVHlwZUZvckZpbGU6KE5TU3RyaW5nCiAgICAgcmV0dXJuIE1JTUVUeXBl
OwogfQogCitzdGF0aWMgdm9pZCBwZXJmb3JtTG9jYWxGaWxlRG93bmxvYWQoTlNVUkwqIHNvdXJj
ZVVSTCkKK3sKKyAgICBOU0Vycm9yICplcnJvcjsKKyAgICBOU1VSTCAqZG93bmxvYWREaXJlY3Rv
cnlVUkwgPSBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIFVSTEZvckRpcmVjdG9yeTpO
U0Rvd25sb2Fkc0RpcmVjdG9yeQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluRG9tYWluOk5TVXNlckRvbWFp
bk1hc2sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBhcHByb3ByaWF0ZUZvclVSTDpuaWwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNy
ZWF0ZTpOTworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yOiZlcnJvcl07CisgICAgaWYgKCFkb3du
bG9hZERpcmVjdG9yeVVSTCkgeworICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBsb2NhdGUg
VXNlcidzIERvd25sb2FkIGRpcmVjdG9yeS4gJUAiLCBlcnJvcik7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisgICAgCisgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X2dsb2JhbF9xdWV1
ZShESVNQQVRDSF9RVUVVRV9QUklPUklUWV9ERUZBVUxULCAwKSwgXnsKKyAgICAgICAgTlNVUkwg
KmNvcHlVUkwgPSBbZG93bmxvYWREaXJlY3RvcnlVUkwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9u
ZW50OnNvdXJjZVVSTC5sYXN0UGF0aENvbXBvbmVudCBpc0RpcmVjdG9yeTpOT107CisgICAgICAg
IE5TU3RyaW5nICpleHRlbnNpb24gPSBjb3B5VVJMLnBhdGhFeHRlbnNpb247CisgICAgICAgIE5T
SW50ZWdlciBleHRlbnNpb25MZW5ndGggPSBleHRlbnNpb24gPyBleHRlbnNpb24ubGVuZ3RoICsg
MSA6IDA7CisgICAgICAgIE5TU3RyaW5nICpmaWxlTmFtZSA9IFtzb3VyY2VVUkwubGFzdFBhdGhD
b21wb25lbnQgc3Vic3RyaW5nVG9JbmRleDpzb3VyY2VVUkwubGFzdFBhdGhDb21wb25lbnQubGVu
Z3RoIC0gZXh0ZW5zaW9uTGVuZ3RoXTsKKyAgICAgICAgCisgICAgICAgIE5TSW50ZWdlciBjb3Vu
dGVyID0gMTsKKyAgICAgICAgTlNFcnJvciAqY29weUVycm9yOworICAgICAgICB3aGlsZSAoIVtb
TlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY29weUl0ZW1BdFVSTDpzb3VyY2VVUkwgdG9V
Ukw6Y29weVVSTCBlcnJvcjomY29weUVycm9yXSkgeworICAgICAgICAgICAgaWYgKGNvcHlFcnJv
ci5jb2RlICE9IE5TRmlsZVdyaXRlRmlsZUV4aXN0c0Vycm9yKSB7CisgICAgICAgICAgICAgICAg
TE9HX0VSUk9SKCJFcnJvciBjb3B5aW5nICVAIHRvICVAOiAlQCIsIHNvdXJjZVVSTCwgY29weVVS
TCwgY29weUVycm9yKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAKKyAgICAgICAgICAgIE5TU3RyaW5nICpuZXdGaWxlbmFtZSA9IFtOU1N0cmlu
ZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAtJWxkLiVAIiwgZmlsZU5hbWUsIGNvdW50ZXIsIGV4dGVu
c2lvbl07CisgICAgICAgICAgICBjb3B5VVJMID0gW2Rvd25sb2FkRGlyZWN0b3J5VVJMIFVSTEJ5
QXBwZW5kaW5nUGF0aENvbXBvbmVudDpuZXdGaWxlbmFtZSBpc0RpcmVjdG9yeTpOT107CisgICAg
ICAgICAgICArK2NvdW50ZXI7CisgICAgICAgIH0KKyAgICB9KTsKK30KKwogLSAoV2ViRG93bmxv
YWQgKilfZG93bmxvYWRVUkw6KE5TVVJMICopVVJMCiB7CiAgICAgQVNTRVJUKFVSTCk7CiAgICAg
CisgICAgaWYgKFdlYkNvcmU6OlVSTChVUkwpLmlzTG9jYWxGaWxlKCkpIHsKKyAgICAgICAgcGVy
Zm9ybUxvY2FsRmlsZURvd25sb2FkKFVSTCk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAg
IH0KKyAgICAKICAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBbW05TVVJMUmVxdWVzdCBhbGxv
Y10gaW5pdFdpdGhVUkw6VVJMXTsKICAgICBXZWJEb3dubG9hZCAqZG93bmxvYWQgPSBbV2ViRG93
bmxvYWQgX2Rvd25sb2FkV2l0aFJlcXVlc3Q6cmVxdWVzdAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxlZ2F0ZTpfcHJpdmF0ZS0+ZG93bmxv
YWREZWxlZ2F0ZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>250531</attachid>
            <date>2015-04-10 13:46:29 -0700</date>
            <delta_ts>2015-04-10 17:40:29 -0700</delta_ts>
            <desc>Patch v2 (iOS Build Fix)</desc>
            <filename>bug-143612-20150410134536.patch</filename>
            <type>text/plain</type>
            <size>8319</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MjYzNSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBACisyMDE1LTA0LTEwICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtNYWNdICJTYXZlIHRvIERv
d25sb2FkcyIgZG9lcyBub3RoaW5nIGZvciBsb2NhbCBpbWFnZXMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MzYxMgorICAgICAgICA8cmRhcjovL3By
b2JsZW0vMTg4NTgwODk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgV2hlbiBhIGxvY2FsIGZpbGUgaXMgZGlzcGxheWVkIGluIHRoZSBXZWJWaWV3LCB1
c2luZyB0aGUgIlNhdmUgdG8gRG93bmxvYWRzIgorICAgICAgICBjb250ZXh0IG1lbnUgb3B0aW9u
IGRvZXNuJ3QgY29weSB0aGUgZmlsZSB0byBEb3dubG9hZHMuIFRoaXMgY2hhbmdlIGlkZW50aWZp
ZXMKKyAgICAgICAgdGhpcyBjYXNlLCBhbmQgcGVyZm9ybXMgYSBmaWxlIGNvcHkuCisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbToKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnBlcmZvcm1Mb2NhbEZpbGVEb3dubG9hZCk6IE5ldyBoZWxw
ZXIgZnVuY3Rpb24uCisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmRvd25sb2FkKTogSWRlbnRpZnkgYSBsb2Nh
bCBmaWxlICdkb3dubG9hZCcsIGFuZCBjYWxsCisgICAgICAgIGhlbHBlciBmdW5jdGlvbiB0byBk
byB0aGUgd29yay4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKwogMjAx
NS0wNC0xMCAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbTWFjXSBSZWZhY3RvciBNZWRpYVBsYXliYWNrVGFyZ2V0CkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAJKHJldmlzaW9uIDE4MjYzMCkKKysrIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTg3Myw2ICs4NzMsMTMgQEAgUGFzc1JlZlB0cjxXZWJQYWdlUHJveHk+IFdlYlByb2Nlc3NQ
b29sOgogCiBEb3dubG9hZFByb3h5KiBXZWJQcm9jZXNzUG9vbDo6ZG93bmxvYWQoV2ViUGFnZVBy
b3h5KiBpbml0aWF0aW5nUGFnZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewor
I2lmIFBMQVRGT1JNKENPQ09BKQorICAgIGlmIChyZXF1ZXN0LnVybCgpLmlzTG9jYWxGaWxlKCkp
IHsKKyAgICAgICAgcGVyZm9ybUxvY2FsRmlsZURvd25sb2FkKHJlcXVlc3QpOworICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICB9CisjZW5kaWYKKyAgICAKICAgICBEb3dubG9hZFByb3h5KiBk
b3dubG9hZFByb3h5ID0gY3JlYXRlRG93bmxvYWRQcm94eShyZXF1ZXN0KTsKICAgICB1aW50NjRf
dCBpbml0aWF0aW5nUGFnZUlEID0gaW5pdGlhdGluZ1BhZ2UgPyBpbml0aWF0aW5nUGFnZS0+cGFn
ZUlEKCkgOiAwOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuaAkocmV2aXNpb24gMTgyNjMwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3NCw2ICsyNzQsNyBAQCBwdWJsaWM6CiAK
ICNpZiBQTEFURk9STShDT0NPQSkKICAgICBzdGF0aWMgYm9vbCBvbWl0UERGU3VwcG9ydCgpOwor
ICAgIHZvaWQgcGVyZm9ybUxvY2FsRmlsZURvd25sb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYpOwogI2VuZGlmCiAKICAgICB2b2lkIGZ1bGxLZXlib2FyZEFjY2Vzc01vZGVDaGFu
Z2VkKGJvb2wgZnVsbEtleWJvYXJkQWNjZXNzRW5hYmxlZCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQkocmV2
aXNpb24gMTgyNjMwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nl
c3NQb29sQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTQ2OSw2ICs0NjksNDMgQEAgdm9pZCBX
ZWJQcm9jZXNzUG9vbDo6cmVzZXRIU1RTSG9zdHMoKQogICAgIF9DRk5ldHdvcmtSZXNldEhTVFNI
b3N0c1dpdGhTZXNzaW9uKHByaXZhdGVCcm93c2luZ1Nlc3Npb24oKSk7CiB9CiAKK3ZvaWQgV2Vi
UHJvY2Vzc1Bvb2w6OnBlcmZvcm1Mb2NhbEZpbGVEb3dubG9hZChjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QpCit7CisgICAgQVNTRVJUKHJlcXVlc3QudXJsKCkuaXNMb2NhbEZpbGUoKSk7
CisKKyAgICBOU1VSTCAqc291cmNlVVJMID0gcmVxdWVzdC51cmwoKTsKKyAgICBOU0Vycm9yICpl
cnJvcjsKKyAgICBOU1VSTCAqZG93bmxvYWREaXJlY3RvcnlVUkwgPSBbW05TRmlsZU1hbmFnZXIg
ZGVmYXVsdE1hbmFnZXJdIFVSTEZvckRpcmVjdG9yeTpOU0Rvd25sb2Fkc0RpcmVjdG9yeQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGluRG9tYWluOk5TVXNlckRvbWFpbk1hc2sKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHByb3ByaWF0
ZUZvclVSTDpuaWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZTpOTworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGVycm9yOiZlcnJvcl07CisgICAgaWYgKCFkb3dubG9hZERpcmVjdG9yeVVSTCkgeworICAg
ICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBsb2NhdGUgVXNlcidzIERvd25sb2FkIGRpcmVjdG9y
eS4gJUAiLCBlcnJvcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBkaXNwYXRjaF9h
c3luYyhkaXNwYXRjaF9nZXRfZ2xvYmFsX3F1ZXVlKERJU1BBVENIX1FVRVVFX1BSSU9SSVRZX0RF
RkFVTFQsIDApLCBeeworICAgICAgICBOU1VSTCAqY29weVVSTCA9IFtkb3dubG9hZERpcmVjdG9y
eVVSTCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6c291cmNlVVJMLmxhc3RQYXRoQ29tcG9u
ZW50IGlzRGlyZWN0b3J5Ok5PXTsKKyAgICAgICAgTlNTdHJpbmcgKmV4dGVuc2lvbiA9IGNvcHlV
UkwucGF0aEV4dGVuc2lvbjsKKyAgICAgICAgTlNJbnRlZ2VyIGV4dGVuc2lvbkxlbmd0aCA9IGV4
dGVuc2lvbiA/IGV4dGVuc2lvbi5sZW5ndGggKyAxIDogMDsKKyAgICAgICAgTlNTdHJpbmcgKmZp
bGVOYW1lID0gW3NvdXJjZVVSTC5sYXN0UGF0aENvbXBvbmVudCBzdWJzdHJpbmdUb0luZGV4OnNv
dXJjZVVSTC5sYXN0UGF0aENvbXBvbmVudC5sZW5ndGggLSBleHRlbnNpb25MZW5ndGhdOworCisg
ICAgICAgIGludCBjb3VudGVyID0gMTsKKyAgICAgICAgTlNFcnJvciAqY29weUVycm9yOworICAg
ICAgICB3aGlsZSAoIVtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY29weUl0ZW1BdFVS
TDpzb3VyY2VVUkwgdG9VUkw6Y29weVVSTCBlcnJvcjomY29weUVycm9yXSkgeworICAgICAgICAg
ICAgaWYgKGNvcHlFcnJvci5jb2RlICE9IE5TRmlsZVdyaXRlRmlsZUV4aXN0c0Vycm9yKSB7Cisg
ICAgICAgICAgICAgICAgTE9HX0VSUk9SKCJFcnJvciBjb3B5aW5nICVAIHRvICVAOiAlQCIsIHNv
dXJjZVVSTCwgY29weVVSTCwgY29weUVycm9yKTsKKyAgICAgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIE5TU3RyaW5nICpuZXdGaWxlbmFtZSA9IFtOU1N0
cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAtJWQuJUAiLCBmaWxlTmFtZSwgY291bnRlciwgZXh0
ZW5zaW9uXTsKKyAgICAgICAgICAgIGNvcHlVUkwgPSBbZG93bmxvYWREaXJlY3RvcnlVUkwgVVJM
QnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50Om5ld0ZpbGVuYW1lIGlzRGlyZWN0b3J5Ok5PXTsKKyAg
ICAgICAgICAgICsrY291bnRlcjsKKyAgICAgICAgfQorICAgIH0pOworfQorCiBpbnQgbmV0d29y
a1Byb2Nlc3NMYXRlbmN5UU9TKCkKIHsKICAgICBzdGF0aWMgaW50IHFvcyA9IFtbTlNVc2VyRGVm
YXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIGludGVnZXJGb3JLZXk6QCJXZWJLaXROZXR3b3Jr
UHJvY2Vzc0xhdGVuY3lRT1MiXTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MjYz
NSkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDIwIEBACisyMDE1LTA0LTEwICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29t
PgorCisgICAgICAgIFtNYWNdICJTYXZlIHRvIERvd25sb2FkcyIgZG9lcyBub3RoaW5nIGZvciBs
b2NhbCBpbWFnZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE0MzYxMgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTg4NTgwODk+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hlbiBhIGxvY2FsIGZpbGUg
aXMgZGlzcGxheWVkIGluIHRoZSBXZWJWaWV3LCB1c2luZyB0aGUgIlNhdmUgdG8gRG93bmxvYWRz
IgorICAgICAgICBjb250ZXh0IG1lbnUgb3B0aW9uIGRvZXNuJ3QgY29weSB0aGUgZmlsZSB0byBE
b3dubG9hZHMuIFRoaXMgY2hhbmdlIGlkZW50aWZpZXMKKyAgICAgICAgdGhpcyBjYXNlLCBhbmQg
cGVyZm9ybXMgYSBmaWxlIGNvcHkuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06Cisg
ICAgICAgIChwZXJmb3JtTG9jYWxGaWxlRG93bmxvYWQpOiBOZXcgaGVscGVyIGZ1bmN0aW9uLgor
ICAgICAgICAoLVtXZWJWaWV3IF9kb3dubG9hZFVSTDpdKTogSWYgVVJMIGlzIGEgbG9jYWwgZmls
ZSwgcGVyZm9ybSBhIGxvY2FsIGZpbGUKKyAgICAgICAgY29weSwgcmF0aGVyIHRoYW4gaW52b2tp
bmcgdGhlIG5ldHdvcmstYmFzZWQgZG93bmxvYWQgbG9naWMuCisKIDIwMTUtMDQtMTAgIEVyaWMg
Q2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgW01hY10gUmVmYWN0
b3IgTWVkaWFQbGF5YmFja1RhcmdldApJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmll
dy5tbQkocmV2aXNpb24gMTgyNjMwKQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJW
aWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xODQ0LDEwICsxODQ0LDQ5IEBAICsgKE5TU3RyaW5n
ICopX01JTUVUeXBlRm9yRmlsZTooTlNTdHJpbmcKICAgICByZXR1cm4gTUlNRVR5cGU7CiB9CiAK
K3N0YXRpYyB2b2lkIHBlcmZvcm1Mb2NhbEZpbGVEb3dubG9hZChOU1VSTCogc291cmNlVVJMKQor
eworICAgIE5TRXJyb3IgKmVycm9yOworICAgIE5TVVJMICpkb3dubG9hZERpcmVjdG9yeVVSTCA9
IFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gVVJMRm9yRGlyZWN0b3J5Ok5TRG93bmxv
YWRzRGlyZWN0b3J5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5Eb21haW46TlNVc2VyRG9tYWluTWFzawor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGFwcHJvcHJpYXRlRm9yVVJMOm5pbAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlOk5P
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZXJyb3I6JmVycm9yXTsKKyAgICBpZiAoIWRvd25sb2FkRGly
ZWN0b3J5VVJMKSB7CisgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGxvY2F0ZSBVc2VyJ3Mg
RG93bmxvYWQgZGlyZWN0b3J5LiAlQCIsIGVycm9yKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyAgICAKKyAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfZ2xvYmFsX3F1ZXVlKERJU1BB
VENIX1FVRVVFX1BSSU9SSVRZX0RFRkFVTFQsIDApLCBeeworICAgICAgICBOU1VSTCAqY29weVVS
TCA9IFtkb3dubG9hZERpcmVjdG9yeVVSTCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6c291
cmNlVVJMLmxhc3RQYXRoQ29tcG9uZW50IGlzRGlyZWN0b3J5Ok5PXTsKKyAgICAgICAgTlNTdHJp
bmcgKmV4dGVuc2lvbiA9IGNvcHlVUkwucGF0aEV4dGVuc2lvbjsKKyAgICAgICAgTlNJbnRlZ2Vy
IGV4dGVuc2lvbkxlbmd0aCA9IGV4dGVuc2lvbiA/IGV4dGVuc2lvbi5sZW5ndGggKyAxIDogMDsK
KyAgICAgICAgTlNTdHJpbmcgKmZpbGVOYW1lID0gW3NvdXJjZVVSTC5sYXN0UGF0aENvbXBvbmVu
dCBzdWJzdHJpbmdUb0luZGV4OnNvdXJjZVVSTC5sYXN0UGF0aENvbXBvbmVudC5sZW5ndGggLSBl
eHRlbnNpb25MZW5ndGhdOworICAgICAgICAKKyAgICAgICAgaW50IGNvdW50ZXIgPSAxOworICAg
ICAgICBOU0Vycm9yICpjb3B5RXJyb3I7CisgICAgICAgIHdoaWxlICghW1tOU0ZpbGVNYW5hZ2Vy
IGRlZmF1bHRNYW5hZ2VyXSBjb3B5SXRlbUF0VVJMOnNvdXJjZVVSTCB0b1VSTDpjb3B5VVJMIGVy
cm9yOiZjb3B5RXJyb3JdKSB7CisgICAgICAgICAgICBpZiAoY29weUVycm9yLmNvZGUgIT0gTlNG
aWxlV3JpdGVGaWxlRXhpc3RzRXJyb3IpIHsKKyAgICAgICAgICAgICAgICBMT0dfRVJST1IoIkVy
cm9yIGNvcHlpbmcgJUAgdG8gJUA6ICVAIiwgc291cmNlVVJMLCBjb3B5VVJMLCBjb3B5RXJyb3Ip
OworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAor
ICAgICAgICAgICAgTlNTdHJpbmcgKm5ld0ZpbGVuYW1lID0gW05TU3RyaW5nIHN0cmluZ1dpdGhG
b3JtYXQ6QCIlQC0lZC4lQCIsIGZpbGVOYW1lLCBjb3VudGVyLCBleHRlbnNpb25dOworICAgICAg
ICAgICAgY29weVVSTCA9IFtkb3dubG9hZERpcmVjdG9yeVVSTCBVUkxCeUFwcGVuZGluZ1BhdGhD
b21wb25lbnQ6bmV3RmlsZW5hbWUgaXNEaXJlY3Rvcnk6Tk9dOworICAgICAgICAgICAgKytjb3Vu
dGVyOworICAgICAgICB9CisgICAgfSk7Cit9CisKIC0gKFdlYkRvd25sb2FkICopX2Rvd25sb2Fk
VVJMOihOU1VSTCAqKVVSTAogewogICAgIEFTU0VSVChVUkwpOwogICAgIAorICAgIGlmIChXZWJD
b3JlOjpVUkwoVVJMKS5pc0xvY2FsRmlsZSgpKSB7CisgICAgICAgIHBlcmZvcm1Mb2NhbEZpbGVE
b3dubG9hZChVUkwpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgCiAgICAg
TlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW1tOU1VSTFJlcXVlc3QgYWxsb2NdIGluaXRXaXRoVVJM
OlVSTF07CiAgICAgV2ViRG93bmxvYWQgKmRvd25sb2FkID0gW1dlYkRvd25sb2FkIF9kb3dubG9h
ZFdpdGhSZXF1ZXN0OnJlcXVlc3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZGVsZWdhdGU6X3ByaXZhdGUtPmRvd25sb2FkRGVsZWdhdGUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>250545</attachid>
            <date>2015-04-10 17:40:33 -0700</date>
            <delta_ts>2015-04-12 21:45:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143612-20150410173940.patch</filename>
            <type>text/plain</type>
            <size>8299</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MjYzNSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBACisyMDE1LTA0LTEwICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtNYWNdICJTYXZlIHRvIERv
d25sb2FkcyIgZG9lcyBub3RoaW5nIGZvciBsb2NhbCBpbWFnZXMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MzYxMgorICAgICAgICA8cmRhcjovL3By
b2JsZW0vMTg4NTgwODk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgV2hlbiBhIGxvY2FsIGZpbGUgaXMgZGlzcGxheWVkIGluIHRoZSBXZWJWaWV3LCB1
c2luZyB0aGUgIlNhdmUgdG8gRG93bmxvYWRzIgorICAgICAgICBjb250ZXh0IG1lbnUgb3B0aW9u
IGRvZXNuJ3QgY29weSB0aGUgZmlsZSB0byBEb3dubG9hZHMuIFRoaXMgY2hhbmdlIGlkZW50aWZp
ZXMKKyAgICAgICAgdGhpcyBjYXNlLCBhbmQgcGVyZm9ybXMgYSBmaWxlIGNvcHkuCisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbToKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnBlcmZvcm1Mb2NhbEZpbGVEb3dubG9hZCk6IE5ldyBoZWxw
ZXIgZnVuY3Rpb24uCisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmRvd25sb2FkKTogSWRlbnRpZnkgYSBsb2Nh
bCBmaWxlICdkb3dubG9hZCcsIGFuZCBjYWxsCisgICAgICAgIGhlbHBlciBmdW5jdGlvbiB0byBk
byB0aGUgd29yay4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKwogMjAx
NS0wNC0xMCAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbTWFjXSBSZWZhY3RvciBNZWRpYVBsYXliYWNrVGFyZ2V0CkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAJKHJldmlzaW9uIDE4MjYzMCkKKysrIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTg3Myw2ICs4NzMsMTMgQEAgUGFzc1JlZlB0cjxXZWJQYWdlUHJveHk+IFdlYlByb2Nlc3NQ
b29sOgogCiBEb3dubG9hZFByb3h5KiBXZWJQcm9jZXNzUG9vbDo6ZG93bmxvYWQoV2ViUGFnZVBy
b3h5KiBpbml0aWF0aW5nUGFnZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewor
I2lmIFBMQVRGT1JNKENPQ09BKQorICAgIGlmIChyZXF1ZXN0LnVybCgpLmlzTG9jYWxGaWxlKCkp
IHsKKyAgICAgICAgc2F2ZVRvRG93bmxvYWRGb2xkZXIocmVxdWVzdCk7CisgICAgICAgIHJldHVy
biBudWxscHRyOworICAgIH0KKyNlbmRpZgorICAgIAogICAgIERvd25sb2FkUHJveHkqIGRvd25s
b2FkUHJveHkgPSBjcmVhdGVEb3dubG9hZFByb3h5KHJlcXVlc3QpOwogICAgIHVpbnQ2NF90IGlu
aXRpYXRpbmdQYWdlSUQgPSBpbml0aWF0aW5nUGFnZSA/IGluaXRpYXRpbmdQYWdlLT5wYWdlSUQo
KSA6IDA7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5o
CShyZXZpc2lvbiAxODI2MzApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuaAkod29ya2luZyBjb3B5KQpAQCAtMjc0LDYgKzI3NCw3IEBAIHB1YmxpYzoKIAogI2lm
IFBMQVRGT1JNKENPQ09BKQogICAgIHN0YXRpYyBib29sIG9taXRQREZTdXBwb3J0KCk7CisgICAg
dm9pZCBzYXZlVG9Eb3dubG9hZEZvbGRlcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
KTsKICNlbmRpZgogCiAgICAgdm9pZCBmdWxsS2V5Ym9hcmRBY2Nlc3NNb2RlQ2hhbmdlZChib29s
IGZ1bGxLZXlib2FyZEFjY2Vzc0VuYWJsZWQpOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0JKHJldmlzaW9uIDE4
MjYzMCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENv
Y29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00NjksNiArNDY5LDQzIEBAIHZvaWQgV2ViUHJvY2Vz
c1Bvb2w6OnJlc2V0SFNUU0hvc3RzKCkKICAgICBfQ0ZOZXR3b3JrUmVzZXRIU1RTSG9zdHNXaXRo
U2Vzc2lvbihwcml2YXRlQnJvd3NpbmdTZXNzaW9uKCkpOwogfQogCit2b2lkIFdlYlByb2Nlc3NQ
b29sOjpzYXZlVG9Eb3dubG9hZEZvbGRlcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qp
Cit7CisgICAgQVNTRVJUKHJlcXVlc3QudXJsKCkuaXNMb2NhbEZpbGUoKSk7CisKKyAgICBOU1VS
TCAqc291cmNlVVJMID0gcmVxdWVzdC51cmwoKTsKKyAgICBOU0Vycm9yICplcnJvcjsKKyAgICBO
U1VSTCAqZG93bmxvYWREaXJlY3RvcnlVUkwgPSBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFn
ZXJdIFVSTEZvckRpcmVjdG9yeTpOU0Rvd25sb2Fkc0RpcmVjdG9yeQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGluRG9tYWluOk5TVXNlckRvbWFpbk1hc2sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHByb3ByaWF0ZUZvclVSTDpuaWwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNyZWF0ZTpOTworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yOiZl
cnJvcl07CisgICAgaWYgKCFkb3dubG9hZERpcmVjdG9yeVVSTCkgeworICAgICAgICBMT0dfRVJS
T1IoIlVuYWJsZSB0byBsb2NhdGUgVXNlcidzIERvd25sb2FkIGRpcmVjdG9yeS4gJUAiLCBlcnJv
cik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRj
aF9nZXRfZ2xvYmFsX3F1ZXVlKERJU1BBVENIX1FVRVVFX1BSSU9SSVRZX0RFRkFVTFQsIDApLCBe
eworICAgICAgICBOU1VSTCAqY29weVVSTCA9IFtkb3dubG9hZERpcmVjdG9yeVVSTCBVUkxCeUFw
cGVuZGluZ1BhdGhDb21wb25lbnQ6c291cmNlVVJMLmxhc3RQYXRoQ29tcG9uZW50IGlzRGlyZWN0
b3J5Ok5PXTsKKyAgICAgICAgTlNTdHJpbmcgKmV4dGVuc2lvbiA9IGNvcHlVUkwucGF0aEV4dGVu
c2lvbjsKKyAgICAgICAgTlNJbnRlZ2VyIGV4dGVuc2lvbkxlbmd0aCA9IGV4dGVuc2lvbiA/IGV4
dGVuc2lvbi5sZW5ndGggKyAxIDogMDsKKyAgICAgICAgTlNTdHJpbmcgKmZpbGVOYW1lID0gW3Nv
dXJjZVVSTC5sYXN0UGF0aENvbXBvbmVudCBzdWJzdHJpbmdUb0luZGV4OnNvdXJjZVVSTC5sYXN0
UGF0aENvbXBvbmVudC5sZW5ndGggLSBleHRlbnNpb25MZW5ndGhdOworCisgICAgICAgIGludCBj
b3VudGVyID0gMTsKKyAgICAgICAgTlNFcnJvciAqY29weUVycm9yOworICAgICAgICB3aGlsZSAo
IVtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY29weUl0ZW1BdFVSTDpzb3VyY2VVUkwg
dG9VUkw6Y29weVVSTCBlcnJvcjomY29weUVycm9yXSkgeworICAgICAgICAgICAgaWYgKGNvcHlF
cnJvci5jb2RlICE9IE5TRmlsZVdyaXRlRmlsZUV4aXN0c0Vycm9yKSB7CisgICAgICAgICAgICAg
ICAgTE9HX0VSUk9SKCJFcnJvciBjb3B5aW5nICVAIHRvICVAOiAlQCIsIHNvdXJjZVVSTCwgY29w
eVVSTCwgY29weUVycm9yKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIE5TU3RyaW5nICpuZXdGaWxlbmFtZSA9IFtOU1N0cmluZyBzdHJpbmdX
aXRoRm9ybWF0OkAiJUAtJWQuJUAiLCBmaWxlTmFtZSwgY291bnRlciwgZXh0ZW5zaW9uXTsKKyAg
ICAgICAgICAgIGNvcHlVUkwgPSBbZG93bmxvYWREaXJlY3RvcnlVUkwgVVJMQnlBcHBlbmRpbmdQ
YXRoQ29tcG9uZW50Om5ld0ZpbGVuYW1lIGlzRGlyZWN0b3J5Ok5PXTsKKyAgICAgICAgICAgICsr
Y291bnRlcjsKKyAgICAgICAgfQorICAgIH0pOworfQorCiBpbnQgbmV0d29ya1Byb2Nlc3NMYXRl
bmN5UU9TKCkKIHsKICAgICBzdGF0aWMgaW50IHFvcyA9IFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRh
cmRVc2VyRGVmYXVsdHNdIGludGVnZXJGb3JLZXk6QCJXZWJLaXROZXR3b3JrUHJvY2Vzc0xhdGVu
Y3lRT1MiXTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MjYzNSkKKysrIFNvdXJj
ZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisy
MDE1LTA0LTEwICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAg
IFtNYWNdICJTYXZlIHRvIERvd25sb2FkcyIgZG9lcyBub3RoaW5nIGZvciBsb2NhbCBpbWFnZXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MzYxMgor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTg4NTgwODk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hlbiBhIGxvY2FsIGZpbGUgaXMgZGlzcGxheWVk
IGluIHRoZSBXZWJWaWV3LCB1c2luZyB0aGUgIlNhdmUgdG8gRG93bmxvYWRzIgorICAgICAgICBj
b250ZXh0IG1lbnUgb3B0aW9uIGRvZXNuJ3QgY29weSB0aGUgZmlsZSB0byBEb3dubG9hZHMuIFRo
aXMgY2hhbmdlIGlkZW50aWZpZXMKKyAgICAgICAgdGhpcyBjYXNlLCBhbmQgcGVyZm9ybXMgYSBm
aWxlIGNvcHkuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgIChwZXJm
b3JtTG9jYWxGaWxlRG93bmxvYWQpOiBOZXcgaGVscGVyIGZ1bmN0aW9uLgorICAgICAgICAoLVtX
ZWJWaWV3IF9kb3dubG9hZFVSTDpdKTogSWYgVVJMIGlzIGEgbG9jYWwgZmlsZSwgcGVyZm9ybSBh
IGxvY2FsIGZpbGUKKyAgICAgICAgY29weSwgcmF0aGVyIHRoYW4gaW52b2tpbmcgdGhlIG5ldHdv
cmstYmFzZWQgZG93bmxvYWQgbG9naWMuCisKIDIwMTUtMDQtMTAgIEVyaWMgQ2FybHNvbiAgPGVy
aWMuY2FybHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgW01hY10gUmVmYWN0b3IgTWVkaWFQbGF5
YmFja1RhcmdldApJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkocmV2aXNp
b24gMTgyNjMwKQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xODQ0LDEwICsxODQ0LDQ5IEBAICsgKE5TU3RyaW5nICopX01JTUVUeXBl
Rm9yRmlsZTooTlNTdHJpbmcKICAgICByZXR1cm4gTUlNRVR5cGU7CiB9CiAKK3N0YXRpYyB2b2lk
IHNhdmVUb0Rvd25sb2FkRm9sZGVyKE5TVVJMKiBzb3VyY2VVUkwpCit7CisgICAgTlNFcnJvciAq
ZXJyb3I7CisgICAgTlNVUkwgKmRvd25sb2FkRGlyZWN0b3J5VVJMID0gW1tOU0ZpbGVNYW5hZ2Vy
IGRlZmF1bHRNYW5hZ2VyXSBVUkxGb3JEaXJlY3Rvcnk6TlNEb3dubG9hZHNEaXJlY3RvcnkKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbkRvbWFpbjpOU1VzZXJEb21haW5NYXNrCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwcm9wcmlh
dGVGb3JVUkw6bmlsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGU6Tk8KKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBlcnJvcjomZXJyb3JdOworICAgIGlmICghZG93bmxvYWREaXJlY3RvcnlVUkwpIHsKKyAg
ICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gbG9jYXRlIFVzZXIncyBEb3dubG9hZCBkaXJlY3Rv
cnkuICVAIiwgZXJyb3IpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIGRpc3Bh
dGNoX2FzeW5jKGRpc3BhdGNoX2dldF9nbG9iYWxfcXVldWUoRElTUEFUQ0hfUVVFVUVfUFJJT1JJ
VFlfREVGQVVMVCwgMCksIF57CisgICAgICAgIE5TVVJMICpjb3B5VVJMID0gW2Rvd25sb2FkRGly
ZWN0b3J5VVJMIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpzb3VyY2VVUkwubGFzdFBhdGhD
b21wb25lbnQgaXNEaXJlY3Rvcnk6Tk9dOworICAgICAgICBOU1N0cmluZyAqZXh0ZW5zaW9uID0g
Y29weVVSTC5wYXRoRXh0ZW5zaW9uOworICAgICAgICBOU0ludGVnZXIgZXh0ZW5zaW9uTGVuZ3Ro
ID0gZXh0ZW5zaW9uID8gZXh0ZW5zaW9uLmxlbmd0aCArIDEgOiAwOworICAgICAgICBOU1N0cmlu
ZyAqZmlsZU5hbWUgPSBbc291cmNlVVJMLmxhc3RQYXRoQ29tcG9uZW50IHN1YnN0cmluZ1RvSW5k
ZXg6c291cmNlVVJMLmxhc3RQYXRoQ29tcG9uZW50Lmxlbmd0aCAtIGV4dGVuc2lvbkxlbmd0aF07
CisgICAgICAgIAorICAgICAgICBpbnQgY291bnRlciA9IDE7CisgICAgICAgIE5TRXJyb3IgKmNv
cHlFcnJvcjsKKyAgICAgICAgd2hpbGUgKCFbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJd
IGNvcHlJdGVtQXRVUkw6c291cmNlVVJMIHRvVVJMOmNvcHlVUkwgZXJyb3I6JmNvcHlFcnJvcl0p
IHsKKyAgICAgICAgICAgIGlmIChjb3B5RXJyb3IuY29kZSAhPSBOU0ZpbGVXcml0ZUZpbGVFeGlz
dHNFcnJvcikgeworICAgICAgICAgICAgICAgIExPR19FUlJPUigiRXJyb3IgY29weWluZyAlQCB0
byAlQDogJUAiLCBzb3VyY2VVUkwsIGNvcHlVUkwsIGNvcHlFcnJvcik7CisgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBOU1N0
cmluZyAqbmV3RmlsZW5hbWUgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVALSVkLiVA
IiwgZmlsZU5hbWUsIGNvdW50ZXIsIGV4dGVuc2lvbl07CisgICAgICAgICAgICBjb3B5VVJMID0g
W2Rvd25sb2FkRGlyZWN0b3J5VVJMIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpuZXdGaWxl
bmFtZSBpc0RpcmVjdG9yeTpOT107CisgICAgICAgICAgICArK2NvdW50ZXI7CisgICAgICAgIH0K
KyAgICB9KTsKK30KKwogLSAoV2ViRG93bmxvYWQgKilfZG93bmxvYWRVUkw6KE5TVVJMICopVVJM
CiB7CiAgICAgQVNTRVJUKFVSTCk7CiAgICAgCisgICAgaWYgKFdlYkNvcmU6OlVSTChVUkwpLmlz
TG9jYWxGaWxlKCkpIHsKKyAgICAgICAgc2F2ZVRvRG93bmxvYWRGb2xkZXIoVVJMKTsKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorICAgIAogICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVz
dCA9IFtbTlNVUkxSZXF1ZXN0IGFsbG9jXSBpbml0V2l0aFVSTDpVUkxdOwogICAgIFdlYkRvd25s
b2FkICpkb3dubG9hZCA9IFtXZWJEb3dubG9hZCBfZG93bmxvYWRXaXRoUmVxdWVzdDpyZXF1ZXN0
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRl
bGVnYXRlOl9wcml2YXRlLT5kb3dubG9hZERlbGVnYXRlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>250622</attachid>
            <date>2015-04-12 21:45:33 -0700</date>
            <delta_ts>2015-04-13 09:20:42 -0700</delta_ts>
            <desc>Patch (revised per drain&apos;s comments)</desc>
            <filename>bug-143612-20150412214439.patch</filename>
            <type>text/plain</type>
            <size>10522</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MjY3NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDE1LTA0LTEyICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtNYWNdICJTYXZlIHRvIERv
d25sb2FkcyIgZG9lcyBub3RoaW5nIGZvciBsb2NhbCBpbWFnZXMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MzYxMgorICAgICAgICA8cmRhcjovL3By
b2JsZW0vMTg4NTgwODk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9GaWxlU3lzdGVtLmg6CisgICAgICAgICogcGxhdGZvcm0vbWFj
L0ZpbGVTeXN0ZW1NYWMubW06CisgICAgICAgIChXZWJDb3JlOjpzYXZlVG9Eb3dubG9hZEZvbGRl
cik6IE5ldyBoZWxwZXIgZnVuY3Rpb24gdXNlZCBieSBXSzEvV0syIHRvIGFsbG93CisgICAgICAg
ICdkb3dubG9hZCcgb2YgbG9jYWwgZmlsZXMuCisKIDIwMTUtMDQtMTIgIFN1bmdtYW5uIENobyAg
PHN1bmdtYW5uLmNob0BuYXZlcmNvcnAuY29tPgogCiAgICAgICAgIEZpeCB0cml2YWwgdHlwb3Mg
cmVsYXRlZCB0byB0aGUgd29yZCAiY29vcmRpbmF0ZSIuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9GaWxlU3lzdGVtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vRmlsZVN5c3RlbS5oCShyZXZpc2lvbiAxODI2MzApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9GaWxlU3lzdGVtLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAxMSwgMjAxNSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggQ29sbGFib3JhLCBM
dGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0yMDQsNiArMjA0
LDEwIEBAIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBsb2NhbFVzZXJTcGVjaWZpY1MKIFN0cmluZyBy
b2FtaW5nVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpOwogI2VuZGlmCiAKKyNpZiBQTEFU
Rk9STShNQUMpCitjbGFzcyBVUkw7CitXRUJDT1JFX0VYUE9SVCB2b2lkIHNhdmVUb0Rvd25sb2Fk
Rm9sZGVyKGNvbnN0IFVSTCYpOworI2VuZGlmCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNl
bmRpZiAvLyBGaWxlU3lzdGVtX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9G
aWxlU3lzdGVtTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9GaWxlU3lzdGVtTWFjLm1tCShyZXZpc2lvbiAxODI2MzApCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvRmlsZVN5c3RlbU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDExLCAyMDE1IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MjksNiArMjksNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJGaWxlU3lzdGVtLmgi
CiAKKyNpbXBvcnQgIlVSTC5oIgogI2ltcG9ydCAiV2ViQ29yZU5TVVJMRXh0cmFzLmgiCiAjaW1w
b3J0ICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+
CkBAIC05Niw2ICs5Nyw3OCBAQCBib29sIGV4Y2x1ZGVGcm9tQmFja3VwKGNvbnN0IFN0cmluZyYg
cGF0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3ZvaWQgc2F2ZVRvRG93bmxvYWRGb2xkZXIoY29u
c3QgVVJMJiB1cmwpCit7CisgICAgQVNTRVJUKHVybC5pc0xvY2FsRmlsZSgpKTsKKyAgICAKKyAg
ICBOU1VSTCAqc291cmNlVVJMID0gdXJsOworICAgIE5TRXJyb3IgKmVycm9yID0gbmlsOworICAg
IE5TVVJMICpkb3dubG9hZERpcmVjdG9yeVVSTCA9IFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFu
YWdlcl0gVVJMRm9yRGlyZWN0b3J5Ok5TRG93bmxvYWRzRGlyZWN0b3J5CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW5Eb21haW46TlNVc2VyRG9tYWluTWFzaworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcHJvcHJpYXRlRm9yVVJMOm5p
bAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY3JlYXRlOk5PCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3I6
JmVycm9yXTsKKyAgICBpZiAoIWRvd25sb2FkRGlyZWN0b3J5VVJMKSB7CisgICAgICAgIExPR19F
UlJPUigiVW5hYmxlIHRvIGxvY2F0ZSBVc2VyJ3MgRG93bmxvYWQgZGlyZWN0b3J5LiAlQCIsIGVy
cm9yKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIE5TU3RyaW5nICp0YXJnZXROYW1l
ID0gc291cmNlVVJMLmxhc3RQYXRoQ29tcG9uZW50OworICAgIE5TU3RyaW5nICpleHRlbnNpb24g
PSBzb3VyY2VVUkwucGF0aEV4dGVuc2lvbjsKKyAgICBOU0ludGVnZXIgZXh0ZW5zaW9uTGVuZ3Ro
ID0gZXh0ZW5zaW9uID8gZXh0ZW5zaW9uLmxlbmd0aCArIDEgOiAwOworICAgIE5TU3RyaW5nICpi
YXNlRmlsZU5hbWUgPSBbdGFyZ2V0TmFtZSBzdWJzdHJpbmdUb0luZGV4OnRhcmdldE5hbWUubGVu
Z3RoIC0gZXh0ZW5zaW9uTGVuZ3RoXTsKKworICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dl
dF9nbG9iYWxfcXVldWUoRElTUEFUQ0hfUVVFVUVfUFJJT1JJVFlfREVGQVVMVCwgMCksIF57Cisg
ICAgICAgIFBsYXRmb3JtRmlsZUhhbmRsZSB0ZW1wb3JhcnlGaWxlSGFuZGxlOworICAgICAgICBT
dHJpbmcgdGVtcG9yYXJ5RmlsZVBhdGggPSBvcGVuVGVtcG9yYXJ5RmlsZShiYXNlRmlsZU5hbWUs
IHRlbXBvcmFyeUZpbGVIYW5kbGUpOworICAgICAgICBpZiAodGVtcG9yYXJ5RmlsZVBhdGguaXNO
dWxsKCkgfHwgdGVtcG9yYXJ5RmlsZUhhbmRsZSA9PSBXZWJDb3JlOjppbnZhbGlkUGxhdGZvcm1G
aWxlSGFuZGxlKSB7CisgICAgICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byB3cml0ZSB0byB0
ZW1wb3JhcnkgbG9jYXRpb24gJXMiLCB0ZW1wb3JhcnlGaWxlUGF0aC51dGY4KCkuZGF0YSgpKTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFJlbW92ZSB0aGUg
dGVtcG9yYXJ5IHBhdGggdG8gbWFrZSBpdCBhdmFpbGFibGUgZm9yIE5TRmlsZU1hbmFnZXIgdG8g
dXNlOgorICAgICAgICBjbG9zZUZpbGUodGVtcG9yYXJ5RmlsZUhhbmRsZSk7CisgICAgICAgIGRl
bGV0ZUZpbGUodGVtcG9yYXJ5RmlsZVBhdGgpOworICAgICAgICAKKyAgICAgICAgLy8gQ29weSBm
aWxlIHRvIHRlbXBvcmFyeSBsb2NhdGlvbjoKKyAgICAgICAgTlNVUkwgKnRlbXBVUkwgPSBbTlNV
UkwgZmlsZVVSTFdpdGhQYXRoOnRlbXBvcmFyeUZpbGVQYXRoIGlzRGlyZWN0b3J5Ok5PXTsKKyAg
ICAgICAgTlNFcnJvciAqY29weUVycm9yID0gbmlsOworICAgICAgICBpZiAoIVtbTlNGaWxlTWFu
YWdlciBkZWZhdWx0TWFuYWdlcl0gY29weUl0ZW1BdFVSTDpzb3VyY2VVUkwgdG9VUkw6dGVtcFVS
TCBlcnJvcjomY29weUVycm9yXSkgeworICAgICAgICAgICAgTE9HX0VSUk9SKCJFcnJvciB3cml0
aW5nICVAIHRvIHRlbXBvcmFyeSBsb2NhdGlvbiAlQDogJUAiLCBzb3VyY2VVUkwsIHRlbXBVUkws
IGNvcHlFcnJvcik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBO
U1VSTCAqY29weVVSTCA9IFtkb3dubG9hZERpcmVjdG9yeVVSTCBVUkxCeUFwcGVuZGluZ1BhdGhD
b21wb25lbnQ6dGFyZ2V0TmFtZSBpc0RpcmVjdG9yeTpOT107CisgICAgICAgIE5TVVJMICpyZXN1
bHRpbmdVUkwgPSBuaWw7CisgICAgICAgIHVuc2lnbmVkIGNvdW50ZXIgPSAxOworICAgICAgICB3
aGlsZSAoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOmNv
cHlVUkwucGF0aF0pIHsKKyAgICAgICAgICAgIGlmIChjb3VudGVyID09IHN0ZDo6bnVtZXJpY19s
aW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAg
ICAgICAgIE5TU3RyaW5nICpuZXdGaWxlbmFtZSA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0
OkAiJUAtJWQuJUAiLCBiYXNlRmlsZU5hbWUsIGNvdW50ZXIsIGV4dGVuc2lvbl07CisgICAgICAg
ICAgICBjb3B5VVJMID0gW2Rvd25sb2FkRGlyZWN0b3J5VVJMIFVSTEJ5QXBwZW5kaW5nUGF0aENv
bXBvbmVudDpuZXdGaWxlbmFtZSBpc0RpcmVjdG9yeTpOT107CisKKyAgICAgICAgICAgIGlmIChj
b3B5VVJMLmFic29sdXRlU3RyaW5nLmxlbmd0aCA+PSBQQVRIX01BWCkgeworICAgICAgICAgICAg
ICAgIExPR19FUlJPUigiRmlsZSBwYXRoICclQCcgJ2V4Y2VlZHMgc3lzdGVtIHBhdGggbGVuZ3Ro
LiBVbmFibGUgdG8gcGVyZm9ybSBkb3dubG9hZC4iLCBjb3B5VVJMKTsKKyAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICsrY291bnRlcjsKKyAgICAg
ICAgfQorCisgICAgICAgIGlmICghW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSByZXBs
YWNlSXRlbUF0VVJMOmNvcHlVUkwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHdpdGhJdGVtQXRVUkw6dGVtcFVSTAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrdXBJdGVtTmFtZTpuaWwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6TlNGaWxl
TWFuYWdlckl0ZW1SZXBsYWNlbWVudFVzaW5nTmV3TWV0YWRhdGFPbmx5CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRpbmdJdGVtVVJMOiZyZXN1bHRp
bmdVUkwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZXJyb3I6JmNvcHlFcnJvcl0pIHsKKyAgICAgICAgICAgIExPR19FUlJPUigiRXJyb3Ig
Y29weWluZyAnJUAnIGZyb20gdGVtcG9yYXJ5IGxvY2F0aW9uICclQCcgdG8gZmluYWwgdGFyZ2V0
ICclQCc6ICVAIiwgc291cmNlVVJMLCB0ZW1wVVJMLCBjb3B5VVJMLCBjb3B5RXJyb3IpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBBU1NFUlQoW2Nv
cHlVUkwuYWJzb2x1dGVTdHJpbmcgaXNFcXVhbFRvU3RyaW5nOnJlc3VsdGluZ1VSTC5hYnNvbHV0
ZVN0cmluZ10pOworICAgIH0pOworfQogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MjYzNSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDE1LTA0LTEyICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtNYWNdICJTYXZlIHRvIERv
d25sb2FkcyIgZG9lcyBub3RoaW5nIGZvciBsb2NhbCBpbWFnZXMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MzYxMgorICAgICAgICA8cmRhcjovL3By
b2JsZW0vMTg4NTgwODk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgV2hlbiBhIGxvY2FsIGZpbGUgaXMgZGlzcGxheWVkIGluIHRoZSBXZWJWaWV3LCB1
c2luZyB0aGUgIlNhdmUgdG8gRG93bmxvYWRzIgorICAgICAgICBjb250ZXh0IG1lbnUgb3B0aW9u
IGRvZXNuJ3QgY29weSB0aGUgZmlsZSB0byBEb3dubG9hZHMuIFRoaXMgY2hhbmdlIGlkZW50aWZp
ZXMKKyAgICAgICAgdGhpcyBjYXNlLCBhbmQgcGVyZm9ybXMgYSBmaWxlIGNvcHkuCisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbToKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmRvd25sb2FkKTogSWRlbnRpZnkgYSBsb2NhbCBmaWxlICdk
b3dubG9hZCcsIGFuZCBjYWxsCisgICAgICAgIGhlbHBlciBmdW5jdGlvbiAoV2ViQ29yZTo6c2F2
ZVRvRG93bmxvYWRGb2xkZXIpIHRvIGRvIHRoZSB3b3JrLgorCiAyMDE1LTA0LTEwICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFtNYWNdIFJlZmFjdG9y
IE1lZGlhUGxheWJhY2tUYXJnZXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmNwcAkocmV2aXNpb24gMTgyNjMwKQorKysgU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEsIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDExLCAyMDEyLCAy
MDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtNjEsNiArNjEsNyBAQAogI2luY2x1ZGUgIldlYlJlc291cmNl
Q2FjaGVNYW5hZ2VyUHJveHkuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlLmgiCiAjaW5j
bHVkZSA8V2ViQ29yZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTGFuZ3VhZ2UuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0xpbmtIYXNoLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Mb2dnaW5nLmg+CkBAIC04
NzMsNiArODc0LDEzIEBAIFBhc3NSZWZQdHI8V2ViUGFnZVByb3h5PiBXZWJQcm9jZXNzUG9vbDoK
IAogRG93bmxvYWRQcm94eSogV2ViUHJvY2Vzc1Bvb2w6OmRvd25sb2FkKFdlYlBhZ2VQcm94eSog
aW5pdGlhdGluZ1BhZ2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKKyNpZiBQ
TEFURk9STShDT0NPQSkKKyAgICBpZiAocmVxdWVzdC51cmwoKS5pc0xvY2FsRmlsZSgpKSB7Cisg
ICAgICAgIFdlYkNvcmU6OnNhdmVUb0Rvd25sb2FkRm9sZGVyKHJlcXVlc3QudXJsKCkpOworICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisjZW5kaWYKKyAgICAKICAgICBEb3dubG9hZFBy
b3h5KiBkb3dubG9hZFByb3h5ID0gY3JlYXRlRG93bmxvYWRQcm94eShyZXF1ZXN0KTsKICAgICB1
aW50NjRfdCBpbml0aWF0aW5nUGFnZUlEID0gaW5pdGlhdGluZ1BhZ2UgPyBpbml0aWF0aW5nUGFn
ZS0+cGFnZUlEKCkgOiAwOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxODI2MzUp
CisrKyBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwyMCBAQAorMjAxNS0wNC0xMiAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4K
KworICAgICAgICBbTWFjXSAiU2F2ZSB0byBEb3dubG9hZHMiIGRvZXMgbm90aGluZyBmb3IgbG9j
YWwgaW1hZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNDM2MTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzE4ODU4MDg5PgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gYSBsb2NhbCBmaWxlIGlz
IGRpc3BsYXllZCBpbiB0aGUgV2ViVmlldywgdXNpbmcgdGhlICJTYXZlIHRvIERvd25sb2FkcyIK
KyAgICAgICAgY29udGV4dCBtZW51IG9wdGlvbiBkb2Vzbid0IGNvcHkgdGhlIGZpbGUgdG8gRG93
bmxvYWRzLiBUaGlzIGNoYW5nZSBpZGVudGlmaWVzCisgICAgICAgIHRoaXMgY2FzZSwgYW5kIHBl
cmZvcm1zIGEgZmlsZSBjb3B5LgorCisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAg
ICAgICAocGVyZm9ybUxvY2FsRmlsZURvd25sb2FkKTogTmV3IGhlbHBlciBmdW5jdGlvbi4KKyAg
ICAgICAgKC1bV2ViVmlldyBfZG93bmxvYWRVUkw6XSk6IElmIFVSTCBpcyBhIGxvY2FsIGZpbGUs
IHBlcmZvcm0gYSBsb2NhbCBmaWxlCisgICAgICAgIGNvcHksIHJhdGhlciB0aGFuIGludm9raW5n
IHRoZSBuZXR3b3JrLWJhc2VkIGRvd25sb2FkIGxvZ2ljLgorCiAyMDE1LTA0LTEwICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFtNYWNdIFJlZmFjdG9y
IE1lZGlhUGxheWJhY2tUYXJnZXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
Vmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcu
bW0JKHJldmlzaW9uIDE4MjYzMCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmll
dy5tbQkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDUtMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDUtMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMDYgRGF2aWQgU21pdGggKGNhdGZpc2gubWFuQGdtYWlsLmNvbSkKICAq
IENvcHlyaWdodCAoQykgMjAxMCBJZ2FsaWEgUy5MCiAgKgpAQCAtMTMyLDYgKzEzMiw3IEBACiAj
aW1wb3J0IDxXZWJDb3JlL0VkaXRvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9FdmVudEhhbmRsZXIu
aD4KICNpbXBvcnQgPFdlYkNvcmUvRXhjZXB0aW9uSGFuZGxlcnMuaD4KKyNpbXBvcnQgPFdlYkNv
cmUvRmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Gb2N1c0NvbnRyb2xsZXIuaD4KICNp
bXBvcnQgPFdlYkNvcmUvRnJhbWVMb2FkZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvRnJhbWVTZWxl
Y3Rpb24uaD4KQEAgLTE4NDcsNiArMTg0OCwxMiBAQCArIChOU1N0cmluZyAqKV9NSU1FVHlwZUZv
ckZpbGU6KE5TU3RyaW5nCiAtIChXZWJEb3dubG9hZCAqKV9kb3dubG9hZFVSTDooTlNVUkwgKilV
UkwKIHsKICAgICBBU1NFUlQoVVJMKTsKKworICAgIFdlYkNvcmU6OlVSTCBjb3JlVXJsKFVSTCk7
CisgICAgaWYgKGNvcmVVcmwuaXNMb2NhbEZpbGUoKSkgeworICAgICAgICBXZWJDb3JlOjpzYXZl
VG9Eb3dubG9hZEZvbGRlcihjb3JlVXJsKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
fQogICAgIAogICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtbTlNVUkxSZXF1ZXN0IGFsbG9j
XSBpbml0V2l0aFVSTDpVUkxdOwogICAgIFdlYkRvd25sb2FkICpkb3dubG9hZCA9IFtXZWJEb3du
bG9hZCBfZG93bmxvYWRXaXRoUmVxdWVzdDpyZXF1ZXN0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>250641</attachid>
            <date>2015-04-13 09:20:46 -0700</date>
            <delta_ts>2015-04-14 19:24:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143612-20150413091951.patch</filename>
            <type>text/plain</type>
            <size>10520</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MjY3NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDE1LTA0LTEyICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtNYWNdICJTYXZlIHRvIERv
d25sb2FkcyIgZG9lcyBub3RoaW5nIGZvciBsb2NhbCBpbWFnZXMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MzYxMgorICAgICAgICA8cmRhcjovL3By
b2JsZW0vMTg4NTgwODk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9GaWxlU3lzdGVtLmg6CisgICAgICAgICogcGxhdGZvcm0vbWFj
L0ZpbGVTeXN0ZW1NYWMubW06CisgICAgICAgIChXZWJDb3JlOjpzYXZlVG9Eb3dubG9hZEZvbGRl
cik6IE5ldyBoZWxwZXIgZnVuY3Rpb24gdXNlZCBieSBXSzEvV0syIHRvIGFsbG93CisgICAgICAg
ICdkb3dubG9hZCcgb2YgbG9jYWwgZmlsZXMuCisKIDIwMTUtMDQtMTIgIFN1bmdtYW5uIENobyAg
PHN1bmdtYW5uLmNob0BuYXZlcmNvcnAuY29tPgogCiAgICAgICAgIEZpeCB0cml2YWwgdHlwb3Mg
cmVsYXRlZCB0byB0aGUgd29yZCAiY29vcmRpbmF0ZSIuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9GaWxlU3lzdGVtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vRmlsZVN5c3RlbS5oCShyZXZpc2lvbiAxODI2MzApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9GaWxlU3lzdGVtLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAxMSwgMjAxNSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggQ29sbGFib3JhLCBM
dGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0yMDQsNiArMjA0
LDEwIEBAIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBsb2NhbFVzZXJTcGVjaWZpY1MKIFN0cmluZyBy
b2FtaW5nVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpOwogI2VuZGlmCiAKKyNpZiBQTEFU
Rk9STShNQUMpCitjbGFzcyBVUkw7CitXRUJDT1JFX0VYUE9SVCB2b2lkIHNhdmVUb0Rvd25sb2Fk
Rm9sZGVyKGNvbnN0IFVSTCYpOworI2VuZGlmCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNl
bmRpZiAvLyBGaWxlU3lzdGVtX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9G
aWxlU3lzdGVtTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9GaWxlU3lzdGVtTWFjLm1tCShyZXZpc2lvbiAxODI2MzApCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvRmlsZVN5c3RlbU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDExLCAyMDE1IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MjksNiArMjksNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJGaWxlU3lzdGVtLmgi
CiAKKyNpbXBvcnQgIlVSTC5oIgogI2ltcG9ydCAiV2ViQ29yZU5TVVJMRXh0cmFzLmgiCiAjaW1w
b3J0ICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+
CkBAIC05Niw2ICs5Nyw3OCBAQCBib29sIGV4Y2x1ZGVGcm9tQmFja3VwKGNvbnN0IFN0cmluZyYg
cGF0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3ZvaWQgc2F2ZVRvRG93bmxvYWRGb2xkZXIoY29u
c3QgVVJMJiB1cmwpCit7CisgICAgQVNTRVJUKHVybC5pc0xvY2FsRmlsZSgpKTsKKyAgICAKKyAg
ICBOU1VSTCAqc291cmNlVVJMID0gdXJsOworICAgIE5TRXJyb3IgKmVycm9yID0gbmlsOworICAg
IE5TVVJMICpkb3dubG9hZERpcmVjdG9yeVVSTCA9IFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFu
YWdlcl0gVVJMRm9yRGlyZWN0b3J5Ok5TRG93bmxvYWRzRGlyZWN0b3J5CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW5Eb21haW46TlNVc2VyRG9tYWluTWFzaworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcHJvcHJpYXRlRm9yVVJMOm5p
bAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY3JlYXRlOk5PCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3I6
JmVycm9yXTsKKyAgICBpZiAoIWRvd25sb2FkRGlyZWN0b3J5VVJMKSB7CisgICAgICAgIExPR19F
UlJPUigiVW5hYmxlIHRvIGxvY2F0ZSBVc2VyJ3MgRG93bmxvYWQgZGlyZWN0b3J5LiAlQCIsIGVy
cm9yKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIE5TU3RyaW5nICp0YXJnZXROYW1l
ID0gc291cmNlVVJMLmxhc3RQYXRoQ29tcG9uZW50OworICAgIE5TU3RyaW5nICpleHRlbnNpb24g
PSBzb3VyY2VVUkwucGF0aEV4dGVuc2lvbjsKKyAgICBOU0ludGVnZXIgZXh0ZW5zaW9uTGVuZ3Ro
ID0gZXh0ZW5zaW9uID8gZXh0ZW5zaW9uLmxlbmd0aCArIDEgOiAwOworICAgIE5TU3RyaW5nICpi
YXNlRmlsZU5hbWUgPSBbdGFyZ2V0TmFtZSBzdWJzdHJpbmdUb0luZGV4OnRhcmdldE5hbWUubGVu
Z3RoIC0gZXh0ZW5zaW9uTGVuZ3RoXTsKKworICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dl
dF9nbG9iYWxfcXVldWUoRElTUEFUQ0hfUVVFVUVfUFJJT1JJVFlfREVGQVVMVCwgMCksIF57Cisg
ICAgICAgIFBsYXRmb3JtRmlsZUhhbmRsZSB0ZW1wb3JhcnlGaWxlSGFuZGxlOworICAgICAgICBT
dHJpbmcgdGVtcG9yYXJ5RmlsZVBhdGggPSBvcGVuVGVtcG9yYXJ5RmlsZShiYXNlRmlsZU5hbWUs
IHRlbXBvcmFyeUZpbGVIYW5kbGUpOworICAgICAgICBpZiAodGVtcG9yYXJ5RmlsZVBhdGguaXNO
dWxsKCkgfHwgdGVtcG9yYXJ5RmlsZUhhbmRsZSA9PSBXZWJDb3JlOjppbnZhbGlkUGxhdGZvcm1G
aWxlSGFuZGxlKSB7CisgICAgICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byB3cml0ZSB0byB0
ZW1wb3JhcnkgbG9jYXRpb24gJXMiLCB0ZW1wb3JhcnlGaWxlUGF0aC51dGY4KCkuZGF0YSgpKTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFJlbW92ZSB0aGUg
dGVtcG9yYXJ5IHBhdGggdG8gbWFrZSBpdCBhdmFpbGFibGUgZm9yIE5TRmlsZU1hbmFnZXIgdG8g
dXNlOgorICAgICAgICBjbG9zZUZpbGUodGVtcG9yYXJ5RmlsZUhhbmRsZSk7CisgICAgICAgIGRl
bGV0ZUZpbGUodGVtcG9yYXJ5RmlsZVBhdGgpOworICAgICAgICAKKyAgICAgICAgLy8gQ29weSBm
aWxlIHRvIHRlbXBvcmFyeSBsb2NhdGlvbjoKKyAgICAgICAgTlNVUkwgKnRlbXBVUkwgPSBbTlNV
UkwgZmlsZVVSTFdpdGhQYXRoOnRlbXBvcmFyeUZpbGVQYXRoIGlzRGlyZWN0b3J5Ok5PXTsKKyAg
ICAgICAgTlNFcnJvciAqY29weUVycm9yID0gbmlsOworICAgICAgICBpZiAoIVtbTlNGaWxlTWFu
YWdlciBkZWZhdWx0TWFuYWdlcl0gY29weUl0ZW1BdFVSTDpzb3VyY2VVUkwgdG9VUkw6dGVtcFVS
TCBlcnJvcjomY29weUVycm9yXSkgeworICAgICAgICAgICAgTE9HX0VSUk9SKCJFcnJvciB3cml0
aW5nICVAIHRvIHRlbXBvcmFyeSBsb2NhdGlvbiAlQDogJUAiLCBzb3VyY2VVUkwsIHRlbXBVUkws
IGNvcHlFcnJvcik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBO
U1VSTCAqY29weVVSTCA9IFtkb3dubG9hZERpcmVjdG9yeVVSTCBVUkxCeUFwcGVuZGluZ1BhdGhD
b21wb25lbnQ6dGFyZ2V0TmFtZSBpc0RpcmVjdG9yeTpOT107CisgICAgICAgIE5TVVJMICpyZXN1
bHRpbmdVUkwgPSBuaWw7CisgICAgICAgIHVuc2lnbmVkIGNvdW50ZXIgPSAxOworICAgICAgICB3
aGlsZSAoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOmNv
cHlVUkwucGF0aF0pIHsKKyAgICAgICAgICAgIGlmIChjb3VudGVyID09IHN0ZDo6bnVtZXJpY19s
aW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAg
ICAgICAgIE5TU3RyaW5nICpuZXdGaWxlbmFtZSA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0
OkAiJUAtJWQuJUAiLCBiYXNlRmlsZU5hbWUsIGNvdW50ZXIsIGV4dGVuc2lvbl07CisgICAgICAg
ICAgICBjb3B5VVJMID0gW2Rvd25sb2FkRGlyZWN0b3J5VVJMIFVSTEJ5QXBwZW5kaW5nUGF0aENv
bXBvbmVudDpuZXdGaWxlbmFtZSBpc0RpcmVjdG9yeTpOT107CisKKyAgICAgICAgICAgIGlmIChj
b3B5VVJMLmFic29sdXRlU3RyaW5nLmxlbmd0aCA+PSBQQVRIX01BWCkgeworICAgICAgICAgICAg
ICAgIExPR19FUlJPUigiRmlsZSBwYXRoICclQCcgJ2V4Y2VlZHMgc3lzdGVtIHBhdGggbGVuZ3Ro
LiBVbmFibGUgdG8gcGVyZm9ybSBkb3dubG9hZC4iLCBjb3B5VVJMKTsKKyAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICsrY291bnRlcjsKKyAgICAg
ICAgfQorCisgICAgICAgIGlmICghW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSByZXBs
YWNlSXRlbUF0VVJMOmNvcHlVUkwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHdpdGhJdGVtQXRVUkw6dGVtcFVSTAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrdXBJdGVtTmFtZTpuaWwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6TlNGaWxl
TWFuYWdlckl0ZW1SZXBsYWNlbWVudFVzaW5nTmV3TWV0YWRhdGFPbmx5CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRpbmdJdGVtVVJMOiZyZXN1bHRp
bmdVUkwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZXJyb3I6JmNvcHlFcnJvcl0pIHsKKyAgICAgICAgICAgIExPR19FUlJPUigiRXJyb3Ig
Y29weWluZyAnJUAnIGZyb20gdGVtcG9yYXJ5IGxvY2F0aW9uICclQCcgdG8gZmluYWwgdGFyZ2V0
ICclQCc6ICVAIiwgc291cmNlVVJMLCB0ZW1wVVJMLCBjb3B5VVJMLCBjb3B5RXJyb3IpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBBU1NFUlQoW2Nv
cHlVUkwuYWJzb2x1dGVTdHJpbmcgaXNFcXVhbFRvU3RyaW5nOnJlc3VsdGluZ1VSTC5hYnNvbHV0
ZVN0cmluZ10pOworICAgIH0pOworfQogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MjYzNSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDE1LTA0LTEyICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtNYWNdICJTYXZlIHRvIERv
d25sb2FkcyIgZG9lcyBub3RoaW5nIGZvciBsb2NhbCBpbWFnZXMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MzYxMgorICAgICAgICA8cmRhcjovL3By
b2JsZW0vMTg4NTgwODk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgV2hlbiBhIGxvY2FsIGZpbGUgaXMgZGlzcGxheWVkIGluIHRoZSBXZWJWaWV3LCB1
c2luZyB0aGUgIlNhdmUgdG8gRG93bmxvYWRzIgorICAgICAgICBjb250ZXh0IG1lbnUgb3B0aW9u
IGRvZXNuJ3QgY29weSB0aGUgZmlsZSB0byBEb3dubG9hZHMuIFRoaXMgY2hhbmdlIGlkZW50aWZp
ZXMKKyAgICAgICAgdGhpcyBjYXNlLCBhbmQgcGVyZm9ybXMgYSBmaWxlIGNvcHkuCisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbToKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmRvd25sb2FkKTogSWRlbnRpZnkgYSBsb2NhbCBmaWxlICdk
b3dubG9hZCcsIGFuZCBjYWxsCisgICAgICAgIGhlbHBlciBmdW5jdGlvbiAoV2ViQ29yZTo6c2F2
ZVRvRG93bmxvYWRGb2xkZXIpIHRvIGRvIHRoZSB3b3JrLgorCiAyMDE1LTA0LTEwICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFtNYWNdIFJlZmFjdG9y
IE1lZGlhUGxheWJhY2tUYXJnZXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmNwcAkocmV2aXNpb24gMTgyNjMwKQorKysgU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEsIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDExLCAyMDEyLCAy
MDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtNjEsNiArNjEsNyBAQAogI2luY2x1ZGUgIldlYlJlc291cmNl
Q2FjaGVNYW5hZ2VyUHJveHkuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlLmgiCiAjaW5j
bHVkZSA8V2ViQ29yZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTGFuZ3VhZ2UuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0xpbmtIYXNoLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Mb2dnaW5nLmg+CkBAIC04
NzMsNiArODc0LDEzIEBAIFBhc3NSZWZQdHI8V2ViUGFnZVByb3h5PiBXZWJQcm9jZXNzUG9vbDoK
IAogRG93bmxvYWRQcm94eSogV2ViUHJvY2Vzc1Bvb2w6OmRvd25sb2FkKFdlYlBhZ2VQcm94eSog
aW5pdGlhdGluZ1BhZ2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKKyNpZiBQ
TEFURk9STShNQUMpCisgICAgaWYgKHJlcXVlc3QudXJsKCkuaXNMb2NhbEZpbGUoKSkgeworICAg
ICAgICBXZWJDb3JlOjpzYXZlVG9Eb3dubG9hZEZvbGRlcihyZXF1ZXN0LnVybCgpKTsKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorI2VuZGlmCisgICAgCiAgICAgRG93bmxvYWRQcm94
eSogZG93bmxvYWRQcm94eSA9IGNyZWF0ZURvd25sb2FkUHJveHkocmVxdWVzdCk7CiAgICAgdWlu
dDY0X3QgaW5pdGlhdGluZ1BhZ2VJRCA9IGluaXRpYXRpbmdQYWdlID8gaW5pdGlhdGluZ1BhZ2Ut
PnBhZ2VJRCgpIDogMDsKIApJbmRleDogU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMTgyNjM1KQor
KysgU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MjAgQEAKKzIwMTUtMDQtMTIgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CisK
KyAgICAgICAgW01hY10gIlNhdmUgdG8gRG93bmxvYWRzIiBkb2VzIG5vdGhpbmcgZm9yIGxvY2Fs
IGltYWdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTQzNjEyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xODg1ODA4OT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGVuIGEgbG9jYWwgZmlsZSBpcyBk
aXNwbGF5ZWQgaW4gdGhlIFdlYlZpZXcsIHVzaW5nIHRoZSAiU2F2ZSB0byBEb3dubG9hZHMiCisg
ICAgICAgIGNvbnRleHQgbWVudSBvcHRpb24gZG9lc24ndCBjb3B5IHRoZSBmaWxlIHRvIERvd25s
b2Fkcy4gVGhpcyBjaGFuZ2UgaWRlbnRpZmllcworICAgICAgICB0aGlzIGNhc2UsIGFuZCBwZXJm
b3JtcyBhIGZpbGUgY29weS4KKworICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAg
ICAgKHBlcmZvcm1Mb2NhbEZpbGVEb3dubG9hZCk6IE5ldyBoZWxwZXIgZnVuY3Rpb24uCisgICAg
ICAgICgtW1dlYlZpZXcgX2Rvd25sb2FkVVJMOl0pOiBJZiBVUkwgaXMgYSBsb2NhbCBmaWxlLCBw
ZXJmb3JtIGEgbG9jYWwgZmlsZQorICAgICAgICBjb3B5LCByYXRoZXIgdGhhbiBpbnZva2luZyB0
aGUgbmV0d29yay1iYXNlZCBkb3dubG9hZCBsb2dpYy4KKwogMjAxNS0wNC0xMCAgRXJpYyBDYXJs
c29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBbTWFjXSBSZWZhY3RvciBN
ZWRpYVBsYXliYWNrVGFyZ2V0CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZp
ZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1t
CShyZXZpc2lvbiAxODI2MzApCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDA1LTIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDA1LTIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29w
eXJpZ2h0IChDKSAyMDA2IERhdmlkIFNtaXRoIChjYXRmaXNoLm1hbkBnbWFpbC5jb20pCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMTAgSWdhbGlhIFMuTAogICoKQEAgLTEzMiw2ICsxMzIsNyBAQAogI2lt
cG9ydCA8V2ViQ29yZS9FZGl0b3IuaD4KICNpbXBvcnQgPFdlYkNvcmUvRXZlbnRIYW5kbGVyLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL0V4Y2VwdGlvbkhhbmRsZXJzLmg+CisjaW1wb3J0IDxXZWJDb3Jl
L0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPFdlYkNvcmUvRm9jdXNDb250cm9sbGVyLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL0ZyYW1lTG9hZGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lU2VsZWN0
aW9uLmg+CkBAIC0xODQ3LDYgKzE4NDgsMTIgQEAgKyAoTlNTdHJpbmcgKilfTUlNRVR5cGVGb3JG
aWxlOihOU1N0cmluZwogLSAoV2ViRG93bmxvYWQgKilfZG93bmxvYWRVUkw6KE5TVVJMICopVVJM
CiB7CiAgICAgQVNTRVJUKFVSTCk7CisKKyAgICBXZWJDb3JlOjpVUkwgY29yZVVybChVUkwpOwor
ICAgIGlmIChjb3JlVXJsLmlzTG9jYWxGaWxlKCkpIHsKKyAgICAgICAgV2ViQ29yZTo6c2F2ZVRv
RG93bmxvYWRGb2xkZXIoY29yZVVybCk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0K
ICAgICAKICAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBbW05TVVJMUmVxdWVzdCBhbGxvY10g
aW5pdFdpdGhVUkw6VVJMXTsKICAgICBXZWJEb3dubG9hZCAqZG93bmxvYWQgPSBbV2ViRG93bmxv
YWQgX2Rvd25sb2FkV2l0aFJlcXVlc3Q6cmVxdWVzdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>250774</attachid>
            <date>2015-04-14 19:24:41 -0700</date>
            <delta_ts>2015-04-14 19:26:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143612-20150414192344.patch</filename>
            <type>text/plain</type>
            <size>13153</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4Mjc0OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDE1LTA0LTE0ICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtNYWNdICJTYXZlIHRvIERv
d25sb2FkcyIgZG9lcyBub3RoaW5nIGZvciBsb2NhbCBpbWFnZXMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MzYxMgorICAgICAgICA8cmRhcjovL3By
b2JsZW0vMTg4NTgwODk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9GaWxlU3lzdGVtLmg6CisgICAgICAgICogcGxhdGZvcm0vbWFj
L0ZpbGVTeXN0ZW1NYWMubW06CisgICAgICAgIChXZWJDb3JlOjpzYXZlVG9Eb3dubG9hZEZvbGRl
cik6IE5ldyBoZWxwZXIgZnVuY3Rpb24gdXNlZCBieSBXSzEvV0syIHRvIGFsbG93CisgICAgICAg
ICdkb3dubG9hZCcgb2YgbG9jYWwgZmlsZXMuCisKIDIwMTUtMDQtMTMgIEJldGggRGFraW4gIDxi
ZGFraW5AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBmb3JjZSBwcm9wZXJ0eSB0byBNb3VzZUV2
ZW50cwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uaAkocmV2aXNpb24gMTgy
NzQ4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAx
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcs
IDIwMDgsIDIwMTEsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29w
eXJpZ2h0IChDKSAyMDA4IENvbGxhYm9yYSwgTHRkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dApAQCAtNDQsNiArNDQsMTEgQEAgdHlwZWRlZiBzdHJ1Y3QgX19DRkJ1bmRs
ZSogQ0ZCdW5kbGVSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0NGRGF0YSogQ0ZEYXRhUmVm
OwogI2VuZGlmCiAKKyNpZiBVU0UoRk9VTkRBVElPTikKK09CSkNfQ0xBU1MgTlNFcnJvcjsKK09C
SkNfQ0xBU1MgTlNVUkw7CisjZW5kaWYKKwogI2lmIE9TKFdJTkRPV1MpCiAvLyBUaGVzZSBhcmUg
dG8gYXZvaWQgaW5jbHVkaW5nIDx3aW5iYXNlLmg+IGluIGEgaGVhZGVyIGZvciBDaHJvbWl1bQog
dHlwZWRlZiB2b2lkICpIQU5ETEU7CkBAIC0xOTUsNiArMjAwLDEyIEBAIFN0cmluZyBmaWxlbmFt
ZUZvckRpc3BsYXkoY29uc3QgU3RyaW5nJikKIENTdHJpbmcgYXBwbGljYXRpb25EaXJlY3RvcnlQ
YXRoKCk7CiBDU3RyaW5nIHNoYXJlZFJlc291cmNlc1BhdGgoKTsKICNlbmRpZgorICAgIAorI2lm
IFBMQVRGT1JNKE1BQykKK3R5cGVkZWYgdm9pZCAoXiBTYXZlQ29tcGxldGlvbkJsb2NrKShib29s
IHN1Y2NlZWRlZCwgU3RyaW5nIHBhdGgsIE5TRXJyb3IgKmVycm9yKTsKK1dFQkNPUkVfRVhQT1JU
IHZvaWQgc2F2ZVRvRG93bmxvYWRGb2xkZXIoTlNVUkwqLCBTYXZlQ29tcGxldGlvbkJsb2NrKTsK
KyNlbmRpZgorCiAjaWYgVVNFKFNPVVApCiB1aW50NjRfdCBnZXRWb2x1bWVGcmVlU2l6ZUZvclBh
dGgoY29uc3QgY2hhciopOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvRmlsZVN5c3RlbU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvRmlsZVN5c3RlbU1hYy5tbQkocmV2aXNpb24gMTgyNzQ4KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL0ZpbGVTeXN0ZW1NYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDExIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNywgMjAxMSwgMjAxNSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTI5LDggKzI5LDEwIEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIkZpbGVTeXN0
ZW0uaCIKIAorI2ltcG9ydCAiVVJMLmgiCiAjaW1wb3J0ICJXZWJDb3JlTlNVUkxFeHRyYXMuaCIK
ICNpbXBvcnQgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKKyNpbXBvcnQgPHd0Zi9NYWluVGhy
ZWFkLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9DU3Ry
aW5nLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTk2LDYgKzk4LDg2IEBA
IGJvb2wgZXhjbHVkZUZyb21CYWNrdXAoY29uc3QgU3RyaW5nJiBwYXQKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAordm9pZCBzYXZlVG9Eb3dubG9hZEZvbGRlcihOU1VSTCAqc291cmNlVVJMLCBTYXZl
Q29tcGxldGlvbkJsb2NrIGNvbXBsZXRpb25CbG9jaykKK3sKKyAgICBBU1NFUlQoVVJMKHNvdXJj
ZVVSTCkuaXNMb2NhbEZpbGUoKSk7CisKKyAgICBOU0Vycm9yICplcnJvcjsKKyAgICBOU1VSTCAq
ZG93bmxvYWREaXJlY3RvcnlVUkwgPSBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIFVS
TEZvckRpcmVjdG9yeTpOU0Rvd25sb2Fkc0RpcmVjdG9yeQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluRG9t
YWluOk5TVXNlckRvbWFpbk1hc2sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHByb3ByaWF0ZUZvclVSTDpuaWwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNyZWF0ZTpOTworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yOiZlcnJvcl07
CisgICAgaWYgKCFkb3dubG9hZERpcmVjdG9yeVVSTCkgeworICAgICAgICBMT0dfRVJST1IoIlVu
YWJsZSB0byBsb2NhdGUgVXNlcidzIERvd25sb2FkIGRpcmVjdG9yeS4gJUAiLCBlcnJvcik7Cisg
ICAgICAgIGNvbXBsZXRpb25CbG9jayhmYWxzZSwgIiIsIGVycm9yKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9nbG9iYWxfcXVldWUo
RElTUEFUQ0hfUVVFVUVfUFJJT1JJVFlfREVGQVVMVCwgMCksIF57CisgICAgICAgIE5TU3RyaW5n
ICp0YXJnZXROYW1lID0gc291cmNlVVJMLmxhc3RQYXRoQ29tcG9uZW50OworICAgICAgICBOU1N0
cmluZyAqZXh0ZW5zaW9uID0gc291cmNlVVJMLnBhdGhFeHRlbnNpb247CisgICAgICAgIE5TSW50
ZWdlciBleHRlbnNpb25MZW5ndGggPSBleHRlbnNpb24gPyBleHRlbnNpb24ubGVuZ3RoICsgMSA6
IDA7CisgICAgICAgIE5TU3RyaW5nICpiYXNlRmlsZU5hbWUgPSBbdGFyZ2V0TmFtZSBzdWJzdHJp
bmdUb0luZGV4OnRhcmdldE5hbWUubGVuZ3RoIC0gZXh0ZW5zaW9uTGVuZ3RoXTsKKyAgICAgICAg
CisgICAgICAgIFBsYXRmb3JtRmlsZUhhbmRsZSB0ZW1wb3JhcnlGaWxlSGFuZGxlOworICAgICAg
ICBTdHJpbmcgdGVtcG9yYXJ5RmlsZVBhdGggPSBvcGVuVGVtcG9yYXJ5RmlsZShiYXNlRmlsZU5h
bWUsIHRlbXBvcmFyeUZpbGVIYW5kbGUpOworICAgICAgICBpZiAodGVtcG9yYXJ5RmlsZVBhdGgu
aXNOdWxsKCkgfHwgdGVtcG9yYXJ5RmlsZUhhbmRsZSA9PSBXZWJDb3JlOjppbnZhbGlkUGxhdGZv
cm1GaWxlSGFuZGxlKSB7CisgICAgICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byB3cml0ZSB0
byB0ZW1wb3JhcnkgbG9jYXRpb24gJXMiLCB0ZW1wb3JhcnlGaWxlUGF0aC51dGY4KCkuZGF0YSgp
KTsKKyAgICAgICAgICAgIGNvbXBsZXRpb25CbG9jayhmYWxzZSwgIiIsIFtOU0Vycm9yIGVycm9y
V2l0aERvbWFpbjpAImNvbS5hcHBsZS5XZWJLaXQiIGNvZGU6MSB1c2VySW5mbzpuaWxdKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFJlbW92ZSB0aGUgdGVt
cG9yYXJ5IHBhdGggdG8gbWFrZSBpdCBhdmFpbGFibGUgZm9yIE5TRmlsZU1hbmFnZXIgdG8gdXNl
OgorICAgICAgICBjbG9zZUZpbGUodGVtcG9yYXJ5RmlsZUhhbmRsZSk7CisgICAgICAgIGRlbGV0
ZUZpbGUodGVtcG9yYXJ5RmlsZVBhdGgpOworICAgICAgICAKKyAgICAgICAgLy8gQ29weSBmaWxl
IHRvIHRlbXBvcmFyeSBsb2NhdGlvbjoKKyAgICAgICAgTlNVUkwgKnRlbXBVUkwgPSBbTlNVUkwg
ZmlsZVVSTFdpdGhQYXRoOnRlbXBvcmFyeUZpbGVQYXRoIGlzRGlyZWN0b3J5Ok5PXTsKKyAgICAg
ICAgTlNFcnJvciAqY29weUVycm9yID0gbmlsOworICAgICAgICBpZiAoIVtbTlNGaWxlTWFuYWdl
ciBkZWZhdWx0TWFuYWdlcl0gY29weUl0ZW1BdFVSTDpzb3VyY2VVUkwgdG9VUkw6dGVtcFVSTCBl
cnJvcjomY29weUVycm9yXSkgeworICAgICAgICAgICAgTE9HX0VSUk9SKCJFcnJvciB3cml0aW5n
ICVAIHRvIHRlbXBvcmFyeSBsb2NhdGlvbiAlQDogJUAiLCBzb3VyY2VVUkwsIHRlbXBVUkwsIGNv
cHlFcnJvcik7CisgICAgICAgICAgICBjb21wbGV0aW9uQmxvY2soZmFsc2UsICIiLCBjb3B5RXJy
b3IpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgTlNVUkwgKmNv
cHlVUkwgPSBbZG93bmxvYWREaXJlY3RvcnlVUkwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50
OnRhcmdldE5hbWUgaXNEaXJlY3Rvcnk6Tk9dOworICAgICAgICBOU1VSTCAqcmVzdWx0aW5nVVJM
ID0gbmlsOworICAgICAgICB1bnNpZ25lZCBjb3VudGVyID0gMTsKKyAgICAgICAgd2hpbGUgKFtb
TlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpjb3B5VVJMLnBh
dGhdKSB7CisgICAgICAgICAgICBpZiAoY291bnRlciA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVu
c2lnbmVkPjo6bWF4KCkpIHsKKyAgICAgICAgICAgICAgICBMT0dfRVJST1IoIkV4Y2VlZGVkIG1h
eGltdW0gaW50ZWdlciBzaXplIHdoaWxlIHRyeWluZyB0byBjcmVhdGUgYSB1bmlxdWUgZmlsZW5h
bWVuICVAOiAlQCIsIGNvcHlVUkwsIGNvcHlFcnJvcik7CisgICAgICAgICAgICAgICAgY29tcGxl
dGlvbkJsb2NrKGZhbHNlLCAiIiwgY29weUVycm9yKTsKKyAgICAgICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIE5TU3RyaW5nICpuZXdGaWxlbmFtZSA9IFtO
U1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAtJWQuJUAiLCBiYXNlRmlsZU5hbWUsIGNvdW50
ZXIsIGV4dGVuc2lvbl07CisgICAgICAgICAgICBjb3B5VVJMID0gW2Rvd25sb2FkRGlyZWN0b3J5
VVJMIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpuZXdGaWxlbmFtZSBpc0RpcmVjdG9yeTpO
T107CisgICAgICAgICAgICBpZiAoY29weVVSTC5hYnNvbHV0ZVN0cmluZy5sZW5ndGggPj0gUEFU
SF9NQVgpIHsKKyAgICAgICAgICAgICAgICBMT0dfRVJST1IoIkZpbGUgcGF0aCAnJUAnICdleGNl
ZWRzIHN5c3RlbSBwYXRoIGxlbmd0aC4gVW5hYmxlIHRvIHBlcmZvcm0gZG93bmxvYWQuIiwgY29w
eVVSTCk7CisgICAgICAgICAgICAgICAgY29tcGxldGlvbkJsb2NrKGZhbHNlLCAiIiwgW05TRXJy
b3IgZXJyb3JXaXRoRG9tYWluOkAiY29tLmFwcGxlLldlYktpdCIgY29kZToyIHVzZXJJbmZvOm5p
bF0pOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgKytjb3VudGVyOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFbW05TRmlsZU1hbmFnZXIg
ZGVmYXVsdE1hbmFnZXJdIHJlcGxhY2VJdGVtQXRVUkw6Y29weVVSTAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aEl0ZW1BdFVSTDp0ZW1wVVJMCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2t1cEl0ZW1O
YW1lOm5pbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgb3B0aW9uczpOU0ZpbGVNYW5hZ2VySXRlbVJlcGxhY2VtZW50VXNpbmdOZXdNZXRhZGF0
YU9ubHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3Vs
dGluZ0l0ZW1VUkw6JnJlc3VsdGluZ1VSTAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcjomY29weUVycm9yXSkgeworICAgICAgICAg
ICAgTE9HX0VSUk9SKCJFcnJvciBjb3B5aW5nICclQCcgZnJvbSB0ZW1wb3JhcnkgbG9jYXRpb24g
JyVAJyB0byBmaW5hbCB0YXJnZXQgJyVAJzogJUAiLCBzb3VyY2VVUkwsIHRlbXBVUkwsIGNvcHlV
UkwsIGNvcHlFcnJvcik7CisgICAgICAgICAgICBjb21wbGV0aW9uQmxvY2soTk8sICIiLCBjb3B5
RXJyb3IpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIAorICAgICAg
ICBBU1NFUlQoW2NvcHlVUkwuYWJzb2x1dGVTdHJpbmcgaXNFcXVhbFRvU3RyaW5nOnJlc3VsdGlu
Z1VSTC5hYnNvbHV0ZVN0cmluZ10pOworCisgICAgICAgIGNvbXBsZXRpb25CbG9jayh0cnVlLCBy
ZXN1bHRpbmdVUkwucGF0aCwgbmlsKTsKKyAgICB9KTsKK30KICNlbmRpZgogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAxODI3NDgpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOSBAQAorMjAxNS0w
NC0xNCAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KKworICAgICAgICBbTWFj
XSAiU2F2ZSB0byBEb3dubG9hZHMiIGRvZXMgbm90aGluZyBmb3IgbG9jYWwgaW1hZ2VzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDM2MTIKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzE4ODU4MDg5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gYSBsb2NhbCBmaWxlIGlzIGRpc3BsYXllZCBpbiB0
aGUgV2ViVmlldywgdXNpbmcgdGhlICJTYXZlIHRvIERvd25sb2FkcyIKKyAgICAgICAgY29udGV4
dCBtZW51IG9wdGlvbiBkb2Vzbid0IGNvcHkgdGhlIGZpbGUgdG8gRG93bmxvYWRzLiBUaGlzIGNo
YW5nZSBpZGVudGlmaWVzCisgICAgICAgIHRoaXMgY2FzZSwgYW5kIHBlcmZvcm1zIGEgZmlsZSBj
b3B5LgorCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW06
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpkb3dubG9hZCk6IElkZW50aWZ5IGEg
bG9jYWwgZmlsZSAnZG93bmxvYWQnLCBhbmQgY2FsbAorICAgICAgICBoZWxwZXIgZnVuY3Rpb24g
KFdlYkNvcmU6OnNhdmVUb0Rvd25sb2FkRm9sZGVyKSB0byBkbyB0aGUgd29yay4KKwogMjAxNS0w
NC0xMyAgQmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGZvcmNl
IHByb3BlcnR5IHRvIE1vdXNlRXZlbnRzCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5jcHAJKHJldmlzaW9uIDE4Mjc0OCkKKysrIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDExLCAyMDEyLCAyMDEzIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMSwgMjAx
MiwgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTYxLDYgKzYxLDcgQEAKICNpbmNsdWRlICJXZWJSZXNv
dXJjZUNhY2hlTWFuYWdlclByb3h5LmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgog
I2luY2x1ZGUgPFdlYkNvcmUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0xhbmd1YWdlLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9MaW5rSGFzaC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTG9nZ2luZy5oPgpA
QCAtODc2LDYgKzg3NywyNiBAQCBEb3dubG9hZFByb3h5KiBXZWJQcm9jZXNzUG9vbDo6ZG93bmxv
YWQoCiAgICAgRG93bmxvYWRQcm94eSogZG93bmxvYWRQcm94eSA9IGNyZWF0ZURvd25sb2FkUHJv
eHkocmVxdWVzdCk7CiAgICAgdWludDY0X3QgaW5pdGlhdGluZ1BhZ2VJRCA9IGluaXRpYXRpbmdQ
YWdlID8gaW5pdGlhdGluZ1BhZ2UtPnBhZ2VJRCgpIDogMDsKIAorICAgIAorI2lmIFBMQVRGT1JN
KE1BQykKKyAgICBpZiAocmVxdWVzdC51cmwoKS5pc0xvY2FsRmlsZSgpKSB7CisgICAgICAgIGRv
d25sb2FkQ2xpZW50KCkuZGlkU3RhcnQodGhpcywgZG93bmxvYWRQcm94eSk7CisgICAgICAgIFdl
YkNvcmU6OnNhdmVUb0Rvd25sb2FkRm9sZGVyKHJlcXVlc3QudXJsKCksIF4oYm9vbCBzdWNjZXNz
LCBTdHJpbmcgcGF0aCwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgICAgIFJldGFpblB0cjxO
U0Vycm9yPiBibG9ja0Vycm9yID0gZXJyb3I7CisgICAgICAgICAgICBkaXNwYXRjaF9hc3luYyhk
aXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeKCkgeworICAgICAgICAgICAgICAgIGlmIChzdWNj
ZXNzKSB7CisgICAgICAgICAgICAgICAgICAgIGRvd25sb2FkQ2xpZW50KCkuZGlkQ3JlYXRlRGVz
dGluYXRpb24odGhpcywgZG93bmxvYWRQcm94eSwgcGF0aCk7CisgICAgICAgICAgICAgICAgICAg
IGRvd25sb2FkQ2xpZW50KCkuZGlkRmluaXNoKHRoaXMsIGRvd25sb2FkUHJveHkpOworICAgICAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAg
ICAgZG93bmxvYWRDbGllbnQoKS5kaWRGYWlsKHRoaXMsIGRvd25sb2FkUHJveHksIGJsb2NrRXJy
b3IuZ2V0KCkpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm4g
ZG93bmxvYWRQcm94eTsKKyAgICB9CisjZW5kaWYKKyAgICAKICNpZiBFTkFCTEUoTkVUV09SS19Q
Uk9DRVNTKQogICAgIGlmICh1c2VzTmV0d29ya1Byb2Nlc3MoKSAmJiBuZXR3b3JrUHJvY2Vzcygp
KSB7CiAgICAgICAgIC8vIEZJWE1FIChOZXR3b3JrUHJvY2Vzcyk6IFJlcGxpY2F0ZSB3aGF0ZXZl
ciBGcmFtZUxvYWRlcjo6c2V0T3JpZ2luYWxVUkxGb3JEb3dubG9hZFJlcXVlc3QgZG9lcyB3aXRo
IHRoZSByZXF1ZXN0IGhlcmUuCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxODI3NDgp
CisrKyBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwyMCBAQAorMjAxNS0wNC0xNCAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4K
KworICAgICAgICBbTWFjXSAiU2F2ZSB0byBEb3dubG9hZHMiIGRvZXMgbm90aGluZyBmb3IgbG9j
YWwgaW1hZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNDM2MTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzE4ODU4MDg5PgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gYSBsb2NhbCBmaWxlIGlz
IGRpc3BsYXllZCBpbiB0aGUgV2ViVmlldywgdXNpbmcgdGhlICJTYXZlIHRvIERvd25sb2FkcyIK
KyAgICAgICAgY29udGV4dCBtZW51IG9wdGlvbiBkb2Vzbid0IGNvcHkgdGhlIGZpbGUgdG8gRG93
bmxvYWRzLiBUaGlzIGNoYW5nZSBpZGVudGlmaWVzCisgICAgICAgIHRoaXMgY2FzZSwgYW5kIHBl
cmZvcm1zIGEgZmlsZSBjb3B5LgorCisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAg
ICAgICAocGVyZm9ybUxvY2FsRmlsZURvd25sb2FkKTogTmV3IGhlbHBlciBmdW5jdGlvbi4KKyAg
ICAgICAgKC1bV2ViVmlldyBfZG93bmxvYWRVUkw6XSk6IElmIFVSTCBpcyBhIGxvY2FsIGZpbGUs
IHBlcmZvcm0gYSBsb2NhbCBmaWxlCisgICAgICAgIGNvcHksIHJhdGhlciB0aGFuIGludm9raW5n
IHRoZSBuZXR3b3JrLWJhc2VkIGRvd25sb2FkIGxvZ2ljLgorCiAyMDE1LTA0LTEzICBCZXRoIERh
a2luICA8YmRha2luQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgZm9yY2UgcHJvcGVydHkgdG8g
TW91c2VFdmVudHMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHJldmlz
aW9uIDE4Mjc0OCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUtMjAx
MyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUt
MjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQg
KEMpIDIwMDYgRGF2aWQgU21pdGggKGNhdGZpc2gubWFuQGdtYWlsLmNvbSkKICAqIENvcHlyaWdo
dCAoQykgMjAxMCBJZ2FsaWEgUy5MCiAgKgpAQCAtMTMyLDYgKzEzMiw3IEBACiAjaW1wb3J0IDxX
ZWJDb3JlL0VkaXRvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9FdmVudEhhbmRsZXIuaD4KICNpbXBv
cnQgPFdlYkNvcmUvRXhjZXB0aW9uSGFuZGxlcnMuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRmlsZVN5
c3RlbS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Gb2N1c0NvbnRyb2xsZXIuaD4KICNpbXBvcnQgPFdl
YkNvcmUvRnJhbWVMb2FkZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvRnJhbWVTZWxlY3Rpb24uaD4K
QEAgLTE4NDcsMTMgKzE4NDgsMzEgQEAgKyAoTlNTdHJpbmcgKilfTUlNRVR5cGVGb3JGaWxlOihO
U1N0cmluZwogLSAoV2ViRG93bmxvYWQgKilfZG93bmxvYWRVUkw6KE5TVVJMICopVVJMCiB7CiAg
ICAgQVNTRVJUKFVSTCk7Ci0gICAgCisKICAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBbW05T
VVJMUmVxdWVzdCBhbGxvY10gaW5pdFdpdGhVUkw6VVJMXTsKICAgICBXZWJEb3dubG9hZCAqZG93
bmxvYWQgPSBbV2ViRG93bmxvYWQgX2Rvd25sb2FkV2l0aFJlcXVlc3Q6cmVxdWVzdAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxlZ2F0ZTpf
cHJpdmF0ZS0+ZG93bmxvYWREZWxlZ2F0ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeTpuaWxdOwogICAgIFtyZXF1ZXN0IHJlbGVh
c2VdOwotICAgIAorCisjaWYgUExBVEZPUk0oTUFDKQorICAgIGlmIChXZWJDb3JlOjpVUkwoVVJM
KS5pc0xvY2FsRmlsZSgpKSB7CisgICAgICAgIFtfcHJpdmF0ZS0+ZG93bmxvYWREZWxlZ2F0ZSBk
b3dubG9hZERpZEJlZ2luOmRvd25sb2FkXTsKKyAgICAgICAgV2ViQ29yZTo6c2F2ZVRvRG93bmxv
YWRGb2xkZXIoVVJMLCBeKGJvb2wgc3VjY2VzcywgU3RyaW5nIGRlc3RpbmF0aW9uLCBOU0Vycm9y
ICplcnJvcikgeworICAgICAgICAgICAgUmV0YWluUHRyPE5TRXJyb3I+IGJsb2NrRXJyb3IgPSBl
cnJvcjsKKyAgICAgICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVl
KCksIF57CisgICAgICAgICAgICAgICAgaWYgKHN1Y2Nlc3MpIHsKKyAgICAgICAgICAgICAgICAg
ICAgW19wcml2YXRlLT5kb3dubG9hZERlbGVnYXRlIGRvd25sb2FkOmRvd25sb2FkIGRpZENyZWF0
ZURlc3RpbmF0aW9uOmRlc3RpbmF0aW9uXTsKKyAgICAgICAgICAgICAgICAgICAgW19wcml2YXRl
LT5kb3dubG9hZERlbGVnYXRlIGRvd25sb2FkRGlkRmluaXNoOmRvd25sb2FkXTsKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAg
IFtfcHJpdmF0ZS0+ZG93bmxvYWREZWxlZ2F0ZSBkb3dubG9hZDpkb3dubG9hZCBkaWRGYWlsV2l0
aEVycm9yOmJsb2NrRXJyb3IuZ2V0KCldOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOwor
ICAgIH0KKyNlbmRpZgorCiAgICAgcmV0dXJuIGRvd25sb2FkOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>250775</attachid>
            <date>2015-04-14 19:26:33 -0700</date>
            <delta_ts>2015-04-17 09:13:07 -0700</delta_ts>
            <desc>Patch (v4 More improvements)</desc>
            <filename>bug-143612-20150414192537.patch</filename>
            <type>text/plain</type>
            <size>12933</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4Mjc0OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDE1LTA0LTE0ICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtNYWNdICJTYXZlIHRvIERv
d25sb2FkcyIgZG9lcyBub3RoaW5nIGZvciBsb2NhbCBpbWFnZXMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MzYxMgorICAgICAgICA8cmRhcjovL3By
b2JsZW0vMTg4NTgwODk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9GaWxlU3lzdGVtLmg6CisgICAgICAgICogcGxhdGZvcm0vbWFj
L0ZpbGVTeXN0ZW1NYWMubW06CisgICAgICAgIChXZWJDb3JlOjpzYXZlVG9Eb3dubG9hZEZvbGRl
cik6IE5ldyBoZWxwZXIgZnVuY3Rpb24gdXNlZCBieSBXSzEvV0syIHRvIGFsbG93CisgICAgICAg
ICdkb3dubG9hZCcgb2YgbG9jYWwgZmlsZXMuCisKIDIwMTUtMDQtMTMgIEJldGggRGFraW4gIDxi
ZGFraW5AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBmb3JjZSBwcm9wZXJ0eSB0byBNb3VzZUV2
ZW50cwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uaAkocmV2aXNpb24gMTgy
NzQ4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAx
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcs
IDIwMDgsIDIwMTEsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29w
eXJpZ2h0IChDKSAyMDA4IENvbGxhYm9yYSwgTHRkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dApAQCAtNDQsNiArNDQsMTEgQEAgdHlwZWRlZiBzdHJ1Y3QgX19DRkJ1bmRs
ZSogQ0ZCdW5kbGVSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0NGRGF0YSogQ0ZEYXRhUmVm
OwogI2VuZGlmCiAKKyNpZiBVU0UoRk9VTkRBVElPTikKK09CSkNfQ0xBU1MgTlNFcnJvcjsKK09C
SkNfQ0xBU1MgTlNVUkw7CisjZW5kaWYKKwogI2lmIE9TKFdJTkRPV1MpCiAvLyBUaGVzZSBhcmUg
dG8gYXZvaWQgaW5jbHVkaW5nIDx3aW5iYXNlLmg+IGluIGEgaGVhZGVyIGZvciBDaHJvbWl1bQog
dHlwZWRlZiB2b2lkICpIQU5ETEU7CkBAIC0xOTUsNiArMjAwLDEyIEBAIFN0cmluZyBmaWxlbmFt
ZUZvckRpc3BsYXkoY29uc3QgU3RyaW5nJikKIENTdHJpbmcgYXBwbGljYXRpb25EaXJlY3RvcnlQ
YXRoKCk7CiBDU3RyaW5nIHNoYXJlZFJlc291cmNlc1BhdGgoKTsKICNlbmRpZgorICAgIAorI2lm
IFBMQVRGT1JNKE1BQykKK3R5cGVkZWYgdm9pZCAoXiBTYXZlQ29tcGxldGlvbkJsb2NrKShib29s
IHN1Y2NlZWRlZCwgU3RyaW5nIHBhdGgsIE5TRXJyb3IgKmVycm9yKTsKK1dFQkNPUkVfRVhQT1JU
IHZvaWQgc2F2ZVRvRG93bmxvYWRGb2xkZXIoTlNVUkwqLCBTYXZlQ29tcGxldGlvbkJsb2NrKTsK
KyNlbmRpZgorCiAjaWYgVVNFKFNPVVApCiB1aW50NjRfdCBnZXRWb2x1bWVGcmVlU2l6ZUZvclBh
dGgoY29uc3QgY2hhciopOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvRmlsZVN5c3RlbU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvRmlsZVN5c3RlbU1hYy5tbQkocmV2aXNpb24gMTgyNzQ4KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL0ZpbGVTeXN0ZW1NYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDExIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNywgMjAxMSwgMjAxNSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTI5LDggKzI5LDEwIEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIkZpbGVTeXN0
ZW0uaCIKIAorI2ltcG9ydCAiVVJMLmgiCiAjaW1wb3J0ICJXZWJDb3JlTlNVUkxFeHRyYXMuaCIK
ICNpbXBvcnQgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKKyNpbXBvcnQgPHd0Zi9NYWluVGhy
ZWFkLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9DU3Ry
aW5nLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTk2LDYgKzk4LDg2IEBA
IGJvb2wgZXhjbHVkZUZyb21CYWNrdXAoY29uc3QgU3RyaW5nJiBwYXQKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAordm9pZCBzYXZlVG9Eb3dubG9hZEZvbGRlcihOU1VSTCAqc291cmNlVVJMLCBTYXZl
Q29tcGxldGlvbkJsb2NrIGNvbXBsZXRpb25CbG9jaykKK3sKKyAgICBBU1NFUlQoVVJMKHNvdXJj
ZVVSTCkuaXNMb2NhbEZpbGUoKSk7CisKKyAgICBOU0Vycm9yICplcnJvcjsKKyAgICBOU1VSTCAq
ZG93bmxvYWREaXJlY3RvcnlVUkwgPSBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIFVS
TEZvckRpcmVjdG9yeTpOU0Rvd25sb2Fkc0RpcmVjdG9yeQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluRG9t
YWluOk5TVXNlckRvbWFpbk1hc2sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHByb3ByaWF0ZUZvclVSTDpuaWwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNyZWF0ZTpOTworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yOiZlcnJvcl07
CisgICAgaWYgKCFkb3dubG9hZERpcmVjdG9yeVVSTCkgeworICAgICAgICBMT0dfRVJST1IoIlVu
YWJsZSB0byBsb2NhdGUgVXNlcidzIERvd25sb2FkIGRpcmVjdG9yeS4gJUAiLCBlcnJvcik7Cisg
ICAgICAgIGNvbXBsZXRpb25CbG9jayhmYWxzZSwgIiIsIGVycm9yKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9nbG9iYWxfcXVldWUo
RElTUEFUQ0hfUVVFVUVfUFJJT1JJVFlfREVGQVVMVCwgMCksIF57CisgICAgICAgIE5TU3RyaW5n
ICp0YXJnZXROYW1lID0gc291cmNlVVJMLmxhc3RQYXRoQ29tcG9uZW50OworICAgICAgICBOU1N0
cmluZyAqZXh0ZW5zaW9uID0gc291cmNlVVJMLnBhdGhFeHRlbnNpb247CisgICAgICAgIE5TSW50
ZWdlciBleHRlbnNpb25MZW5ndGggPSBleHRlbnNpb24gPyBleHRlbnNpb24ubGVuZ3RoICsgMSA6
IDA7CisgICAgICAgIE5TU3RyaW5nICpiYXNlRmlsZU5hbWUgPSBbdGFyZ2V0TmFtZSBzdWJzdHJp
bmdUb0luZGV4OnRhcmdldE5hbWUubGVuZ3RoIC0gZXh0ZW5zaW9uTGVuZ3RoXTsKKyAgICAgICAg
CisgICAgICAgIFBsYXRmb3JtRmlsZUhhbmRsZSB0ZW1wb3JhcnlGaWxlSGFuZGxlOworICAgICAg
ICBTdHJpbmcgdGVtcG9yYXJ5RmlsZVBhdGggPSBvcGVuVGVtcG9yYXJ5RmlsZShiYXNlRmlsZU5h
bWUsIHRlbXBvcmFyeUZpbGVIYW5kbGUpOworICAgICAgICBpZiAodGVtcG9yYXJ5RmlsZVBhdGgu
aXNOdWxsKCkgfHwgdGVtcG9yYXJ5RmlsZUhhbmRsZSA9PSBXZWJDb3JlOjppbnZhbGlkUGxhdGZv
cm1GaWxlSGFuZGxlKSB7CisgICAgICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byB3cml0ZSB0
byB0ZW1wb3JhcnkgbG9jYXRpb24gJXMiLCB0ZW1wb3JhcnlGaWxlUGF0aC51dGY4KCkuZGF0YSgp
KTsKKyAgICAgICAgICAgIGNvbXBsZXRpb25CbG9jayhmYWxzZSwgIiIsIFtOU0Vycm9yIGVycm9y
V2l0aERvbWFpbjpAImNvbS5hcHBsZS5XZWJLaXQiIGNvZGU6MSB1c2VySW5mbzpuaWxdKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFJlbW92ZSB0aGUgdGVt
cG9yYXJ5IHBhdGggdG8gbWFrZSBpdCBhdmFpbGFibGUgZm9yIE5TRmlsZU1hbmFnZXIgdG8gdXNl
OgorICAgICAgICBjbG9zZUZpbGUodGVtcG9yYXJ5RmlsZUhhbmRsZSk7CisgICAgICAgIGRlbGV0
ZUZpbGUodGVtcG9yYXJ5RmlsZVBhdGgpOworICAgICAgICAKKyAgICAgICAgLy8gQ29weSBmaWxl
IHRvIHRlbXBvcmFyeSBsb2NhdGlvbjoKKyAgICAgICAgTlNVUkwgKnRlbXBVUkwgPSBbTlNVUkwg
ZmlsZVVSTFdpdGhQYXRoOnRlbXBvcmFyeUZpbGVQYXRoIGlzRGlyZWN0b3J5Ok5PXTsKKyAgICAg
ICAgTlNFcnJvciAqY29weUVycm9yID0gbmlsOworICAgICAgICBpZiAoIVtbTlNGaWxlTWFuYWdl
ciBkZWZhdWx0TWFuYWdlcl0gY29weUl0ZW1BdFVSTDpzb3VyY2VVUkwgdG9VUkw6dGVtcFVSTCBl
cnJvcjomY29weUVycm9yXSkgeworICAgICAgICAgICAgTE9HX0VSUk9SKCJFcnJvciB3cml0aW5n
ICVAIHRvIHRlbXBvcmFyeSBsb2NhdGlvbiAlQDogJUAiLCBzb3VyY2VVUkwsIHRlbXBVUkwsIGNv
cHlFcnJvcik7CisgICAgICAgICAgICBjb21wbGV0aW9uQmxvY2soZmFsc2UsICIiLCBjb3B5RXJy
b3IpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgTlNVUkwgKmNv
cHlVUkwgPSBbZG93bmxvYWREaXJlY3RvcnlVUkwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50
OnRhcmdldE5hbWUgaXNEaXJlY3Rvcnk6Tk9dOworICAgICAgICBOU1VSTCAqcmVzdWx0aW5nVVJM
ID0gbmlsOworICAgICAgICB1bnNpZ25lZCBjb3VudGVyID0gMTsKKyAgICAgICAgd2hpbGUgKFtb
TlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpjb3B5VVJMLnBh
dGhdKSB7CisgICAgICAgICAgICBpZiAoY291bnRlciA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVu
c2lnbmVkPjo6bWF4KCkpIHsKKyAgICAgICAgICAgICAgICBMT0dfRVJST1IoIkV4Y2VlZGVkIG1h
eGltdW0gaW50ZWdlciBzaXplIHdoaWxlIHRyeWluZyB0byBjcmVhdGUgYSB1bmlxdWUgZmlsZW5h
bWVuICVAOiAlQCIsIGNvcHlVUkwsIGNvcHlFcnJvcik7CisgICAgICAgICAgICAgICAgY29tcGxl
dGlvbkJsb2NrKGZhbHNlLCAiIiwgY29weUVycm9yKTsKKyAgICAgICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIE5TU3RyaW5nICpuZXdGaWxlbmFtZSA9IFtO
U1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAtJWQuJUAiLCBiYXNlRmlsZU5hbWUsIGNvdW50
ZXIsIGV4dGVuc2lvbl07CisgICAgICAgICAgICBjb3B5VVJMID0gW2Rvd25sb2FkRGlyZWN0b3J5
VVJMIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpuZXdGaWxlbmFtZSBpc0RpcmVjdG9yeTpO
T107CisgICAgICAgICAgICBpZiAoY29weVVSTC5hYnNvbHV0ZVN0cmluZy5sZW5ndGggPj0gUEFU
SF9NQVgpIHsKKyAgICAgICAgICAgICAgICBMT0dfRVJST1IoIkZpbGUgcGF0aCAnJUAnICdleGNl
ZWRzIHN5c3RlbSBwYXRoIGxlbmd0aC4gVW5hYmxlIHRvIHBlcmZvcm0gZG93bmxvYWQuIiwgY29w
eVVSTCk7CisgICAgICAgICAgICAgICAgY29tcGxldGlvbkJsb2NrKGZhbHNlLCAiIiwgW05TRXJy
b3IgZXJyb3JXaXRoRG9tYWluOkAiY29tLmFwcGxlLldlYktpdCIgY29kZToyIHVzZXJJbmZvOm5p
bF0pOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgKytjb3VudGVyOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFbW05TRmlsZU1hbmFnZXIg
ZGVmYXVsdE1hbmFnZXJdIHJlcGxhY2VJdGVtQXRVUkw6Y29weVVSTAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aEl0ZW1BdFVSTDp0ZW1wVVJMCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2t1cEl0ZW1O
YW1lOm5pbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgb3B0aW9uczpOU0ZpbGVNYW5hZ2VySXRlbVJlcGxhY2VtZW50VXNpbmdOZXdNZXRhZGF0
YU9ubHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3Vs
dGluZ0l0ZW1VUkw6JnJlc3VsdGluZ1VSTAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcjomY29weUVycm9yXSkgeworICAgICAgICAg
ICAgTE9HX0VSUk9SKCJFcnJvciBjb3B5aW5nICclQCcgZnJvbSB0ZW1wb3JhcnkgbG9jYXRpb24g
JyVAJyB0byBmaW5hbCB0YXJnZXQgJyVAJzogJUAiLCBzb3VyY2VVUkwsIHRlbXBVUkwsIGNvcHlV
UkwsIGNvcHlFcnJvcik7CisgICAgICAgICAgICBjb21wbGV0aW9uQmxvY2soTk8sICIiLCBjb3B5
RXJyb3IpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIAorICAgICAg
ICBBU1NFUlQoW2NvcHlVUkwuYWJzb2x1dGVTdHJpbmcgaXNFcXVhbFRvU3RyaW5nOnJlc3VsdGlu
Z1VSTC5hYnNvbHV0ZVN0cmluZ10pOworCisgICAgICAgIGNvbXBsZXRpb25CbG9jayh0cnVlLCBy
ZXN1bHRpbmdVUkwucGF0aCwgbmlsKTsKKyAgICB9KTsKK30KICNlbmRpZgogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAxODI3NDgpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOSBAQAorMjAxNS0w
NC0xNCAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KKworICAgICAgICBbTWFj
XSAiU2F2ZSB0byBEb3dubG9hZHMiIGRvZXMgbm90aGluZyBmb3IgbG9jYWwgaW1hZ2VzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDM2MTIKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzE4ODU4MDg5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gYSBsb2NhbCBmaWxlIGlzIGRpc3BsYXllZCBpbiB0
aGUgV2ViVmlldywgdXNpbmcgdGhlICJTYXZlIHRvIERvd25sb2FkcyIKKyAgICAgICAgY29udGV4
dCBtZW51IG9wdGlvbiBkb2Vzbid0IGNvcHkgdGhlIGZpbGUgdG8gRG93bmxvYWRzLiBUaGlzIGNo
YW5nZSBpZGVudGlmaWVzCisgICAgICAgIHRoaXMgY2FzZSwgYW5kIHBlcmZvcm1zIGEgZmlsZSBj
b3B5LgorCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW06
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpkb3dubG9hZCk6IElkZW50aWZ5IGEg
bG9jYWwgZmlsZSAnZG93bmxvYWQnLCBhbmQgY2FsbAorICAgICAgICBoZWxwZXIgZnVuY3Rpb24g
KFdlYkNvcmU6OnNhdmVUb0Rvd25sb2FkRm9sZGVyKSB0byBkbyB0aGUgd29yay4KKwogMjAxNS0w
NC0xMyAgQmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGZvcmNl
IHByb3BlcnR5IHRvIE1vdXNlRXZlbnRzCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5jcHAJKHJldmlzaW9uIDE4Mjc0OCkKKysrIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDExLCAyMDEyLCAyMDEzIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMSwgMjAx
MiwgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTYxLDYgKzYxLDcgQEAKICNpbmNsdWRlICJXZWJSZXNv
dXJjZUNhY2hlTWFuYWdlclByb3h5LmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgog
I2luY2x1ZGUgPFdlYkNvcmUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0xhbmd1YWdlLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9MaW5rSGFzaC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTG9nZ2luZy5oPgpA
QCAtODc2LDYgKzg3NywyNSBAQCBEb3dubG9hZFByb3h5KiBXZWJQcm9jZXNzUG9vbDo6ZG93bmxv
YWQoCiAgICAgRG93bmxvYWRQcm94eSogZG93bmxvYWRQcm94eSA9IGNyZWF0ZURvd25sb2FkUHJv
eHkocmVxdWVzdCk7CiAgICAgdWludDY0X3QgaW5pdGlhdGluZ1BhZ2VJRCA9IGluaXRpYXRpbmdQ
YWdlID8gaW5pdGlhdGluZ1BhZ2UtPnBhZ2VJRCgpIDogMDsKIAorI2lmIFBMQVRGT1JNKE1BQykK
KyAgICBpZiAocmVxdWVzdC51cmwoKS5pc0xvY2FsRmlsZSgpKSB7CisgICAgICAgIGRvd25sb2Fk
Q2xpZW50KCkuZGlkU3RhcnQodGhpcywgZG93bmxvYWRQcm94eSk7CisgICAgICAgIFdlYkNvcmU6
OnNhdmVUb0Rvd25sb2FkRm9sZGVyKHJlcXVlc3QudXJsKCksIF4oYm9vbCBzdWNjZXNzLCBTdHJp
bmcgcGF0aCwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgICAgIFJldGFpblB0cjxOU0Vycm9y
PiBibG9ja0Vycm9yID0gZXJyb3I7CisgICAgICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRj
aF9nZXRfbWFpbl9xdWV1ZSgpLCBeKCkgeworICAgICAgICAgICAgICAgIGlmIChzdWNjZXNzKSB7
CisgICAgICAgICAgICAgICAgICAgIGRvd25sb2FkQ2xpZW50KCkuZGlkQ3JlYXRlRGVzdGluYXRp
b24odGhpcywgZG93bmxvYWRQcm94eSwgcGF0aCk7CisgICAgICAgICAgICAgICAgICAgIGRvd25s
b2FkQ2xpZW50KCkuZGlkRmluaXNoKHRoaXMsIGRvd25sb2FkUHJveHkpOworICAgICAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgZG93
bmxvYWRDbGllbnQoKS5kaWRGYWlsKHRoaXMsIGRvd25sb2FkUHJveHksIGJsb2NrRXJyb3IuZ2V0
KCkpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm4gZG93bmxv
YWRQcm94eTsKKyAgICB9CisjZW5kaWYKKyAgICAKICNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNT
KQogICAgIGlmICh1c2VzTmV0d29ya1Byb2Nlc3MoKSAmJiBuZXR3b3JrUHJvY2VzcygpKSB7CiAg
ICAgICAgIC8vIEZJWE1FIChOZXR3b3JrUHJvY2Vzcyk6IFJlcGxpY2F0ZSB3aGF0ZXZlciBGcmFt
ZUxvYWRlcjo6c2V0T3JpZ2luYWxVUkxGb3JEb3dubG9hZFJlcXVlc3QgZG9lcyB3aXRoIHRoZSBy
ZXF1ZXN0IGhlcmUuCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxODI3NDgpCisrKyBT
b3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMCBA
QAorMjAxNS0wNC0xNCAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KKworICAg
ICAgICBbTWFjXSAiU2F2ZSB0byBEb3dubG9hZHMiIGRvZXMgbm90aGluZyBmb3IgbG9jYWwgaW1h
Z2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDM2
MTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzE4ODU4MDg5PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gYSBsb2NhbCBmaWxlIGlzIGRpc3Bs
YXllZCBpbiB0aGUgV2ViVmlldywgdXNpbmcgdGhlICJTYXZlIHRvIERvd25sb2FkcyIKKyAgICAg
ICAgY29udGV4dCBtZW51IG9wdGlvbiBkb2Vzbid0IGNvcHkgdGhlIGZpbGUgdG8gRG93bmxvYWRz
LiBUaGlzIGNoYW5nZSBpZGVudGlmaWVzCisgICAgICAgIHRoaXMgY2FzZSwgYW5kIHBlcmZvcm1z
IGEgZmlsZSBjb3B5LgorCisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAo
cGVyZm9ybUxvY2FsRmlsZURvd25sb2FkKTogTmV3IGhlbHBlciBmdW5jdGlvbi4KKyAgICAgICAg
KC1bV2ViVmlldyBfZG93bmxvYWRVUkw6XSk6IElmIFVSTCBpcyBhIGxvY2FsIGZpbGUsIHBlcmZv
cm0gYSBsb2NhbCBmaWxlCisgICAgICAgIGNvcHksIHJhdGhlciB0aGFuIGludm9raW5nIHRoZSBu
ZXR3b3JrLWJhc2VkIGRvd25sb2FkIGxvZ2ljLgorCiAyMDE1LTA0LTEzICBCZXRoIERha2luICA8
YmRha2luQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgZm9yY2UgcHJvcGVydHkgdG8gTW91c2VF
dmVudHMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHJldmlzaW9uIDE4
Mjc0OCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUtMjAxMyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUtMjAxMywg
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MDYgRGF2aWQgU21pdGggKGNhdGZpc2gubWFuQGdtYWlsLmNvbSkKICAqIENvcHlyaWdodCAoQykg
MjAxMCBJZ2FsaWEgUy5MCiAgKgpAQCAtMTMyLDYgKzEzMiw3IEBACiAjaW1wb3J0IDxXZWJDb3Jl
L0VkaXRvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9FdmVudEhhbmRsZXIuaD4KICNpbXBvcnQgPFdl
YkNvcmUvRXhjZXB0aW9uSGFuZGxlcnMuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRmlsZVN5c3RlbS5o
PgogI2ltcG9ydCA8V2ViQ29yZS9Gb2N1c0NvbnRyb2xsZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUv
RnJhbWVMb2FkZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvRnJhbWVTZWxlY3Rpb24uaD4KQEAgLTE4
NTMsNyArMTg1NCwyNSBAQCAtIChXZWJEb3dubG9hZCAqKV9kb3dubG9hZFVSTDooTlNVUkwgKilV
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRl
bGVnYXRlOl9wcml2YXRlLT5kb3dubG9hZERlbGVnYXRlCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5Om5pbF07CiAgICAgW3JlcXVl
c3QgcmVsZWFzZV07Ci0gICAgCisKKyNpZiBQTEFURk9STShNQUMpCisgICAgaWYgKFdlYkNvcmU6
OlVSTChVUkwpLmlzTG9jYWxGaWxlKCkpIHsKKyAgICAgICAgW19wcml2YXRlLT5kb3dubG9hZERl
bGVnYXRlIGRvd25sb2FkRGlkQmVnaW46ZG93bmxvYWRdOworICAgICAgICBXZWJDb3JlOjpzYXZl
VG9Eb3dubG9hZEZvbGRlcihVUkwsIF4oYm9vbCBzdWNjZXNzLCBTdHJpbmcgZGVzdGluYXRpb24s
IE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgICAgICBSZXRhaW5QdHI8TlNFcnJvcj4gYmxvY2tF
cnJvciA9IGVycm9yOworICAgICAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21h
aW5fcXVldWUoKSwgXnsKKyAgICAgICAgICAgICAgICBpZiAoc3VjY2VzcykgeworICAgICAgICAg
ICAgICAgICAgICBbX3ByaXZhdGUtPmRvd25sb2FkRGVsZWdhdGUgZG93bmxvYWQ6ZG93bmxvYWQg
ZGlkQ3JlYXRlRGVzdGluYXRpb246ZGVzdGluYXRpb25dOworICAgICAgICAgICAgICAgICAgICBb
X3ByaXZhdGUtPmRvd25sb2FkRGVsZWdhdGUgZG93bmxvYWREaWRGaW5pc2g6ZG93bmxvYWRdOwor
ICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAgICAgW19wcml2YXRlLT5kb3dubG9hZERlbGVnYXRlIGRvd25sb2FkOmRvd25sb2FkIGRp
ZEZhaWxXaXRoRXJyb3I6YmxvY2tFcnJvci5nZXQoKV07CisgICAgICAgICAgICB9KTsKKyAgICAg
ICAgfSk7CisgICAgfQorI2VuZGlmCisKICAgICByZXR1cm4gZG93bmxvYWQ7CiB9CiAK
</data>
<flag name="review"
          id="275568"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>