<?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>170839</bug_id>
          
          <creation_ts>2017-04-13 17:59:29 -0700</creation_ts>
          <short_desc>Implement a way in WebItemProviderPasteboard to perform actions after file loading completes</short_desc>
          <delta_ts>2017-04-17 10:17:46 -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>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>aestes</cc>
    
    <cc>bdakin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>megan_gardner</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1297238</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-04-13 17:59:29 -0700</bug_when>
    <thetext>Work towards &lt;rdar://problem/31286130&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1297277</commentid>
    <comment_count>1</comment_count>
      <attachid>307074</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-04-13 19:46:55 -0700</bug_when>
    <thetext>Created attachment 307074
Part two</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1297334</commentid>
    <comment_count>2</comment_count>
      <attachid>307093</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-04-13 22:36:09 -0700</bug_when>
    <thetext>Created attachment 307093
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1297471</commentid>
    <comment_count>3</comment_count>
      <attachid>307137</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-04-14 12:52:32 -0700</bug_when>
    <thetext>Created attachment 307137
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1297475</commentid>
    <comment_count>4</comment_count>
      <attachid>307137</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-04-14 13:13:10 -0700</bug_when>
    <thetext>Comment on attachment 307137
Patch

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

&gt; Source/WebCore/ChangeLog:22
&gt; +        (-[WebItemProviderPasteboard tryToLoadProvidedContentIntoFileURLs:]):

I renamed this method in the source, but didn&apos;t update the ChangeLogs -- I&apos;ll fix this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1297478</commentid>
    <comment_count>5</comment_count>
      <attachid>307137</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2017-04-14 13:23:02 -0700</bug_when>
    <thetext>Comment on attachment 307137
Patch

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

&gt; Source/WebCore/platform/ios/WebItemProviderPasteboard.h:34
&gt; +typedef void (^WebItemProviderFileLoadBlock)(NSArray &lt;NSURL *&gt; *);

I think our style is to not include a space between NSArray and &lt;.

&gt; Source/WebCore/platform/ios/WebItemProviderPasteboard.mm:267
&gt; +    NSString *temporaryFilename = suggestedName ?: (NSString *)String::number(cryptographicallyRandomNumber());

If each temporary file is stored inside a unique directory name, and a suggested name isn&apos;t provided, do we need to use a cryptographically random name for the temporary file? Could it just be a fixed name?

&gt; Source/WebCore/platform/ios/WebItemProviderPasteboard.mm:280
&gt; +            if (!UTTypeConformsTo((__bridge CFStringRef)identifier, kUTTypeContent))

Is a bridging cast needed here?

&gt; Source/WebCore/platform/ios/WebItemProviderPasteboard.mm:298
&gt; +    dispatch_group_t fileLoadingGroup = dispatch_group_create();

Can we use OSObjectPtr here?

&gt; Source/WebCore/platform/ios/WebItemProviderPasteboard.mm:303
&gt; +        dispatch_group_async(fileLoadingGroup, dispatch_get_main_queue(), ^() {

No need to specify () in a no-argument block.

&gt; Source/WebCore/platform/ios/WebItemProviderPasteboard.mm:313
&gt; +                    [[NSFileManager defaultManager] linkItemAtURL:url toURL:destinationURL.get() error:&amp;hardLinkError];
&gt; +                    if (!hardLinkError)

It&apos;s idiomatic to check the return value of -linkItemAtURL:toURL:error: instead of checking for a non-nil error. We guarantee that error will be non-nil when an error occurs, but not that it&apos;ll be nil when no error occurs.

&gt; Source/WebCore/platform/ios/WebItemProviderPasteboard.mm:321
&gt; +    dispatch_group_notify(fileLoadingGroup, dispatch_get_main_queue(), ^() {

No need to specify () in a no-argument block.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1297530</commentid>
    <comment_count>6</comment_count>
      <attachid>307154</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-04-14 15:27:07 -0700</bug_when>
    <thetext>Created attachment 307154
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1297580</commentid>
    <comment_count>7</comment_count>
      <attachid>307154</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2017-04-14 17:06:57 -0700</bug_when>
    <thetext>Comment on attachment 307154
Patch

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

You should note all the reviewers in your something somewhere and figure out if it&apos;s enough.

&gt; Source/WebCore/platform/ios/WebItemProviderPasteboard.mm:297
&gt; +    auto fileLoadingGroup =  adoptOSObject(dispatch_group_create());

extra space after =

&gt; Source/WebCore/platform/ios/WebItemProviderPasteboard.mm:302
&gt; +        dispatch_group_async(fileLoadingGroup.get(), dispatch_get_main_queue(), ^ {

You&apos;re gonna use some lambadas.

&gt; Source/WebCore/platform/ios/WebItemProviderPasteboard.mm:309
&gt; +                    [[NSFileManager defaultManager] removeItemAtURL:destinationURL.get() error:nil];

You&apos;re going to get rid of this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1297600</commentid>
    <comment_count>8</comment_count>
      <attachid>307154</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-04-14 17:55:54 -0700</bug_when>
    <thetext>Comment on attachment 307154
Patch

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

&gt;&gt; Source/WebCore/platform/ios/WebItemProviderPasteboard.mm:297
&gt;&gt; +    auto fileLoadingGroup =  adoptOSObject(dispatch_group_create());
&gt; 
&gt; extra space after =

Good catch. Fixed.

&gt;&gt; Source/WebCore/platform/ios/WebItemProviderPasteboard.mm:302
&gt;&gt; +        dispatch_group_async(fileLoadingGroup.get(), dispatch_get_main_queue(), ^ {
&gt; 
&gt; You&apos;re gonna use some lambadas.

Will do!

&gt;&gt; Source/WebCore/platform/ios/WebItemProviderPasteboard.mm:309
&gt;&gt; +                    [[NSFileManager defaultManager] removeItemAtURL:destinationURL.get() error:nil];
&gt; 
&gt; You&apos;re going to get rid of this.

Yep! (Dan Bernstein pointed out earlier that there is no need to try and clear out the destination URL since _webkit_createTemporaryDirectoryWithTemplatePrefix will either succeed and create a new directory, or fail and return nil, and this code the nil case by not adding a URL to the list of completed URLs.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1297643</commentid>
    <comment_count>9</comment_count>
      <attachid>307190</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-04-14 23:04:27 -0700</bug_when>
    <thetext>Created attachment 307190
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1297649</commentid>
    <comment_count>10</comment_count>
      <attachid>307190</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-04-14 23:48:09 -0700</bug_when>
    <thetext>Comment on attachment 307190
Patch for landing

Clearing flags on attachment: 307190

Committed r215389: &lt;http://trac.webkit.org/changeset/215389&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1297660</commentid>
    <comment_count>11</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-04-15 02:24:57 -0700</bug_when>
    <thetext>Internal iOS build fix in &lt;http://trac.webkit.org/changeset/215390&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>307074</attachid>
            <date>2017-04-13 19:46:55 -0700</date>
            <delta_ts>2017-04-13 22:36:08 -0700</delta_ts>
            <desc>Part two</desc>
            <filename>bug-170839-20170413194654.patch</filename>
            <type>text/plain</type>
            <size>7755</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE1MjAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDdhYWVhZjhmYzMyYjI2
N2YzMjFhMGNkZmRhOTE2NzgwNjhhNjhmYy4uMWQ1NjE4MDJiMWU4M2NiNmZlNmFhOTNhOGRmMGM5
NWFjNGFmODlmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI4IEBACiAyMDE3LTA0LTEzICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCisgICAgICAgIEltcGxlbWVudCBh
IHdheSBpbiBXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkIHRvIHBlcmZvcm0gYWN0aW9ucyBhZnRl
ciBmaWxlIGxvYWRpbmcgY29tcGxldGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNzA4MzkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMxMjg2MTMw
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEludHJv
ZHVjZXMgLVtXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkIGRvQWZ0ZXJMb2FkaW5nUHJvdmlkZWRD
b250ZW50SW50b0ZpbGVVUkxzOl0sIHdoaWNoIHBlcmZvcm1zIGFuIGFjdGlvbgorICAgICAgICBh
ZnRlciBhbGwgaXRlbSBwcm92aWRlcnMgd2hpY2ggYXJlIGFibGUgdG8gcHJvdmlkZSBjb250ZW50
IGFyZSBkb25lIGxvYWRpbmcgdGhlaXIgY29udGVudCBpbnRvIHRlbXBvcmFyeSBmaWxlCisgICAg
ICAgIFVSTHMuIElmIG5vIGl0ZW0gcHJvdmlkZXJzIGhhdmUgYXZhaWxhYmxlIGRhdGEsIHdlIHdp
bGwgaW1tZWRpYXRlbHkgaW52b2tlIHRoZSBhY3Rpb24gd2l0aCBhbiBlbXB0eSBVUkwgYXJyYXku
CisKKyAgICAgICAgRm9yIGVhY2ggaXRlbSBwcm92aWRlciB3aXRoIGRhdGEsIHdlIHNhdmUgdGhl
IGxvY2FsIFVSTCByZXR1cm5lZCBpbiB0aGUgbG9hZCBjb21wbGV0aW9uIGJsb2NrIHRvIGEgcmFu
ZG9tbHkKKyAgICAgICAgZ2VuZXJhdGVkIHBhdGggaW4gdGhlIGNvbnRhaW5lcidzIHRlbXBvcmFy
eSBkaXJlY3RvcnkuIFdoZW4gYWxsIGZpbGVzIGFyZSBmaW5pc2hlZCBsb2FkaW5nLCB3ZSB0aGVu
IGludm9rZSB0aGUKKyAgICAgICAgYWN0aW9uIHdpdGggYWxsIGZpbGUgVVJMcyB0aGF0IHN1Y2Nl
c3NmdWxseSBsb2FkZWQuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBzaW5jZSB0aGVyZSBpcyBu
byBjaGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViSXRlbVBy
b3ZpZGVyUGFzdGVib2FyZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlk
ZXJQYXN0ZWJvYXJkLm1tOgorICAgICAgICAodGVtcG9yYXJ5RmlsZVVSTEZvckRhdGFJbnRlcmFj
dGlvbkNvbnRlbnQpOgorICAgICAgICAoLVtXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkIHRyeVRv
TG9hZFByb3ZpZGVkQ29udGVudEludG9GaWxlVVJMczpdKToKKworMjAxNy0wNC0xMyAgV2Vuc29u
IEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKwogICAgICAgICBbV0syXSBTdXBwb3J0
IEljb24gY3JlYXRpb24gZnJvbSBmaWxlIFVSTHMgb24gaU9TCiAgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzA4MDkKICAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzMxMjg2MTMwPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dl
Ykl0ZW1Qcm92aWRlclBhc3RlYm9hcmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9X
ZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLmgKaW5kZXggODRhYWY3ODQ3YzQ0ODFhMzIxZjQ5ZmI1
YWRmNzhhYTM3YTc5MDE3YS4uZWJmOWRiNjVjYTc3MjgwOWU0Mjg1YjA4OWE1MmJkMmQzMjdkMDlj
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92aWRl
clBhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRlbVBy
b3ZpZGVyUGFzdGVib2FyZC5oCkBAIC0zMSw2ICszMSw4IEBACiAKIE5TX0FTU1VNRV9OT05OVUxM
X0JFR0lOCiAKK3R5cGVkZWYgdm9pZCAoXldlYkl0ZW1Qcm92aWRlckZpbGVMb2FkQmxvY2spKE5T
QXJyYXkgPE5TVVJMICo+ICopOworCiBXRUJDT1JFX0VYUE9SVCBAaW50ZXJmYWNlIFdlYkl0ZW1Q
cm92aWRlclBhc3RlYm9hcmQgOiBOU09iamVjdDxBYnN0cmFjdFBhc3RlYm9hcmQ+CiAKICsgKGlu
c3RhbmNldHlwZSlzaGFyZWRJbnN0YW5jZTsKQEAgLTQ3LDYgKzQ5LDkgQEAgV0VCQ09SRV9FWFBP
UlQgQGludGVyZmFjZSBXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkIDogTlNPYmplY3Q8QWJzdHJh
Y3RQYXN0ZWJvYXIKIAogLSAodm9pZCllbnVtZXJhdGVJdGVtUHJvdmlkZXJzV2l0aEJsb2NrOih2
b2lkICheKShVSUl0ZW1Qcm92aWRlciAqaXRlbVByb3ZpZGVyLCBOU1VJbnRlZ2VyIGluZGV4LCBC
T09MICpzdG9wKSlibG9jazsKIAorLy8gVGhlIGdpdmVuIGNvbXBsZXRpb24gYmxvY2sgaXMgYWx3
YXlzIGRpc3BhdGNoZWQgb24gdGhlIG1haW4gdGhyZWFkLgorLSAodm9pZClkb0FmdGVyTG9hZGlu
Z1Byb3ZpZGVkQ29udGVudEludG9GaWxlVVJMczooV2ViSXRlbVByb3ZpZGVyRmlsZUxvYWRCbG9j
aylhY3Rpb247CisKIEBlbmQKIAogTlNfQVNTVU1FX05PTk5VTExfRU5ECmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1t
CmluZGV4IDE5NmU3MmFiYWJlMTA4ZDRlYWI2NjRlYmU2NGViNzAwYWQzYzI4M2QuLmYyODVlOTUy
NWM4OTQzODEzZjI4YjkxMDFiYTAxNjQ4MmM2YTQxOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1tCkBAIC0z
NSw2ICszNSw5IEBACiAjaW1wb3J0IDxVSUtpdC9VSUNvbG9yLmg+CiAjaW1wb3J0IDxVSUtpdC9V
SUltYWdlLmg+CiAjaW1wb3J0IDxVSUtpdC9VSUl0ZW1Qcm92aWRlcldyaXRpbmcuaD4KKyNpbXBv
cnQgPFdlYktpdC9XZWJOU0ZpbGVNYW5hZ2VyRXh0cmFzLmg+CisjaW1wb3J0IDx3dGYvQmxvY2tQ
dHIuaD4KKyNpbXBvcnQgPHd0Zi9DcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlci5oPgogI2lt
cG9ydCA8d3RmL1JldGFpblB0ci5oPgogCiBTT0ZUX0xJTktfRlJBTUVXT1JLKFVJS2l0KQpAQCAt
MjUxLDYgKzI1NCw4MiBAQCBzdGF0aWMgQk9PTCBpc0ltYWdlVHlwZShOU1N0cmluZyAqdHlwZSkK
ICAgICByZXR1cm4gX2NoYW5nZUNvdW50OwogfQogCitzdGF0aWMgTlNVUkwgKnRlbXBvcmFyeUZp
bGVVUkxGb3JEYXRhSW50ZXJhY3Rpb25Db250ZW50KE5TU3RyaW5nICpmaWxlRXh0ZW5zaW9uLCBO
U1N0cmluZyAqc3VnZ2VzdGVkTmFtZSkKK3sKKyAgICBpZiAoIWZpbGVFeHRlbnNpb24ubGVuZ3Ro
KQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgTlNTdHJpbmcgKnRlbXBvcmFyeURhdGFJbnRl
cmFjdGlvbkRpcmVjdG9yeSA9IFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gX3dlYmtp
dF9jcmVhdGVUZW1wb3JhcnlEaXJlY3RvcnlXaXRoVGVtcGxhdGVQcmVmaXg6QCJkYXRhLWludGVy
YWN0aW9uIl07CisgICAgaWYgKCF0ZW1wb3JhcnlEYXRhSW50ZXJhY3Rpb25EaXJlY3RvcnkpCisg
ICAgICAgIHJldHVybiBuaWw7CisKKyAgICBOU1N0cmluZyAqdGVtcG9yYXJ5RmlsZW5hbWU7Cisg
ICAgaWYgKHN1Z2dlc3RlZE5hbWUpCisgICAgICAgIHRlbXBvcmFyeUZpbGVuYW1lID0gW05TU3Ry
aW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlQC4lQCIsIHN1Z2dlc3RlZE5hbWUsIGZpbGVFeHRlbnNp
b25dOworICAgIGVsc2UKKyAgICAgICAgdGVtcG9yYXJ5RmlsZW5hbWUgPSBbTlNTdHJpbmcgc3Ry
aW5nV2l0aEZvcm1hdDpAIiV0dS4lQCIsIGNyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyKCks
IGZpbGVFeHRlbnNpb25dOworCisgICAgcmV0dXJuIFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6W3Rl
bXBvcmFyeURhdGFJbnRlcmFjdGlvbkRpcmVjdG9yeSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21w
b25lbnQ6dGVtcG9yYXJ5RmlsZW5hbWVdXTsKK30KKworLSAodm9pZClkb0FmdGVyTG9hZGluZ1By
b3ZpZGVkQ29udGVudEludG9GaWxlVVJMczooV2ViSXRlbVByb3ZpZGVyRmlsZUxvYWRCbG9jaylh
Y3Rpb24KK3sKKyAgICBhdXRvIGl0ZW1Qcm92aWRlcnNXaXRoRmlsZXMgPSBhZG9wdE5TKFtbTlNN
dXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKKyAgICBhdXRvIGNvbnRlbnRUeXBlSWRlbnRpZmll
cnNUb0xvYWQgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKKyAgICBh
dXRvIGxvYWRlZEZpbGVVUkxzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0
XSk7CisgICAgZm9yIChVSUl0ZW1Qcm92aWRlciAqaXRlbVByb3ZpZGVyIGluIF9pdGVtUHJvdmlk
ZXJzLmdldCgpKSB7CisgICAgICAgIE5TQXJyYXk8TlNTdHJpbmcgKj4gKmlkZW50aWZpZXJzID0g
aXRlbVByb3ZpZGVyLnJlZ2lzdGVyZWRUeXBlSWRlbnRpZmllcnM7CisgICAgICAgIE5TU3RyaW5n
ICp0eXBlSWRlbnRpZmllck9mQ29udGVudFRvU2F2ZSA9IG5pbDsKKyAgICAgICAgZm9yIChOU1N0
cmluZyAqaWRlbnRpZmllciBpbiBpZGVudGlmaWVycykgeworICAgICAgICAgICAgaWYgKCFVVFR5
cGVDb25mb3Jtc1RvKChfX2JyaWRnZSBDRlN0cmluZ1JlZilpZGVudGlmaWVyLCBrVVRUeXBlQ29u
dGVudCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIC8vIEZJWE1F
OiBUaGlzIHNob3VsZCBiZSBjaGVja2VkIGFnYWluc3QgdGhlICdhY2NlcHQnIGF0dHJpYnV0ZSBv
ZiB0aGUgZmlsZSBpbnB1dCB0byBmaWx0ZXIgb3V0IHVud2FudGVkIHR5cGVzLgorICAgICAgICAg
ICAgdHlwZUlkZW50aWZpZXJPZkNvbnRlbnRUb1NhdmUgPSBpZGVudGlmaWVyOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBpZiAodHlwZUlkZW50aWZpZXJPZkNvbnRl
bnRUb1NhdmUpIHsKKyAgICAgICAgICAgIFtpdGVtUHJvdmlkZXJzV2l0aEZpbGVzIGFkZE9iamVj
dDppdGVtUHJvdmlkZXJdOworICAgICAgICAgICAgW2NvbnRlbnRUeXBlSWRlbnRpZmllcnNUb0xv
YWQgYWRkT2JqZWN0OnR5cGVJZGVudGlmaWVyT2ZDb250ZW50VG9TYXZlXTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIGlmICghW2l0ZW1Qcm92aWRlcnNXaXRoRmlsZXMgY291bnRdKSB7CisgICAg
ICAgIGFjdGlvbihAWyBdKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGRpc3BhdGNo
X2dyb3VwX3QgZmlsZUxvYWRpbmdHcm91cCA9IGRpc3BhdGNoX2dyb3VwX2NyZWF0ZSgpOworICAg
IGZvciAoTlNVSW50ZWdlciBpbmRleCA9IDA7IGluZGV4IDwgW2l0ZW1Qcm92aWRlcnNXaXRoRmls
ZXMgY291bnRdOyArK2luZGV4KSB7CisgICAgICAgIFJldGFpblB0cjxVSUl0ZW1Qcm92aWRlcj4g
aXRlbVByb3ZpZGVyID0gW2l0ZW1Qcm92aWRlcnNXaXRoRmlsZXMgb2JqZWN0QXRJbmRleDppbmRl
eF07CisgICAgICAgIFJldGFpblB0cjxOU1N0cmluZz4gY29udGVudElkZW50aWZpZXIgPSBbY29u
dGVudFR5cGVJZGVudGlmaWVyc1RvTG9hZCBvYmplY3RBdEluZGV4OmluZGV4XTsKKyAgICAgICAg
UmV0YWluUHRyPE5TU3RyaW5nPiBzdWdnZXN0ZWROYW1lID0gW2l0ZW1Qcm92aWRlciBzdWdnZXN0
ZWROYW1lXTsKKyAgICAgICAgZGlzcGF0Y2hfZ3JvdXBfZW50ZXIoZmlsZUxvYWRpbmdHcm91cCk7
CisgICAgICAgIGRpc3BhdGNoX2dyb3VwX2FzeW5jKGZpbGVMb2FkaW5nR3JvdXAsIGRpc3BhdGNo
X2dldF9tYWluX3F1ZXVlKCksIFtpdGVtUHJvdmlkZXIsIGNvbnRlbnRJZGVudGlmaWVyLCBzdWdn
ZXN0ZWROYW1lLCBsb2FkZWRGaWxlVVJMcywgZmlsZUxvYWRpbmdHcm91cF0geworICAgICAgICAg
ICAgW2l0ZW1Qcm92aWRlciBsb2FkRmlsZVJlcHJlc2VudGF0aW9uRm9yVHlwZUlkZW50aWZpZXI6
Y29udGVudElkZW50aWZpZXIuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihOU1VSTCAqdXJsLCBO
U0Vycm9yICplcnJvcikgeworICAgICAgICAgICAgICAgIC8vIEFmdGVyIGV4ZWN1dGluZyB0aGlz
IGNvbXBsZXRpb24gYmxvY2ssIFVJS2l0IHJlbW92ZXMgdGhlIGZpbGUgYXQgdGhlIGdpdmVuIFVS
TC4gSG93ZXZlciwgd2UgbmVlZCB0aGlzIGRhdGEgdG8gcGVyc2lzdCBsb25nZXIgZm9yIHRoZSB3
ZWIgY29udGVudCBwcm9jZXNzLgorICAgICAgICAgICAgICAgIC8vIFRvIGFkZHJlc3MgdGhpcywg
d2UgaGFyZCBsaW5rIHRoZSBnaXZlbiBVUkwgdG8gYSBuZXcgdGVtcG9yYXJ5IGZpbGUgaW4gdGhl
IHRlbXBvcmFyeSBkaXJlY3RvcnkuIFRoaXMgZm9sbG93cyB0aGUgc2FtZSBmbG93IGFzIHJlZ3Vs
YXIgZmlsZSB1cGxvYWQsIGluCisgICAgICAgICAgICAgICAgLy8gV0tGaWxlVXBsb2FkUGFuZWwu
bW0uIFRoZSB0ZW1wb3JhcnkgZmlsZXMgYXJlIGNsZWFuZWQgdXAgYnkgdGhlIHN5c3RlbSBhdCBh
IGxhdGVyIHRpbWUuCisgICAgICAgICAgICAgICAgUmV0YWluUHRyPE5TVVJMPiBkZXN0aW5hdGlv
blVSTCA9IHRlbXBvcmFyeUZpbGVVUkxGb3JEYXRhSW50ZXJhY3Rpb25Db250ZW50KHVybC5wYXRo
RXh0ZW5zaW9uLCBzdWdnZXN0ZWROYW1lLmdldCgpKTsKKyAgICAgICAgICAgICAgICBOU0Vycm9y
ICpoYXJkTGlua0Vycm9yID0gbmlsOworICAgICAgICAgICAgICAgIGlmIChkZXN0aW5hdGlvblVS
TCAmJiAhZXJyb3IpIHsKKyAgICAgICAgICAgICAgICAgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1
bHRNYW5hZ2VyXSByZW1vdmVJdGVtQXRVUkw6ZGVzdGluYXRpb25VUkwuZ2V0KCkgZXJyb3I6bmls
XTsKKyAgICAgICAgICAgICAgICAgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBs
aW5rSXRlbUF0VVJMOnVybCB0b1VSTDpkZXN0aW5hdGlvblVSTC5nZXQoKSBlcnJvcjomaGFyZExp
bmtFcnJvcl07CisgICAgICAgICAgICAgICAgICAgIGlmICghaGFyZExpbmtFcnJvcikKKyAgICAg
ICAgICAgICAgICAgICAgICAgIFtsb2FkZWRGaWxlVVJMcyBhZGRPYmplY3Q6ZGVzdGluYXRpb25V
UkwuZ2V0KCldOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBkaXNwYXRjaF9n
cm91cF9sZWF2ZShmaWxlTG9hZGluZ0dyb3VwKTsKKyAgICAgICAgICAgIH1dOworICAgICAgICB9
KTsKKyAgICB9CisKKyAgICBkaXNwYXRjaF9ncm91cF9ub3RpZnkoZmlsZUxvYWRpbmdHcm91cCwg
ZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW2FjdGlvbiwgbG9hZGVkRmlsZVVSTHMsIGZpbGVM
b2FkaW5nR3JvdXBdIHsKKyAgICAgICAgYWN0aW9uKGxvYWRlZEZpbGVVUkxzLmdldCgpKTsKKyAg
ICAgICAgZGlzcGF0Y2hfcmVsZWFzZShmaWxlTG9hZGluZ0dyb3VwKTsKKyAgICB9KTsKK30KKwog
LSAoVUlJdGVtUHJvdmlkZXIgKilpdGVtUHJvdmlkZXJBdEluZGV4OihOU0ludGVnZXIpaW5kZXgK
IHsKICAgICByZXR1cm4gMCA8PSBpbmRleCAmJiBpbmRleCA8IChOU0ludGVnZXIpW19pdGVtUHJv
dmlkZXJzIGNvdW50XSA/IFtfaXRlbVByb3ZpZGVycyBvYmplY3RBdEluZGV4OmluZGV4XSA6IG5p
bDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>307093</attachid>
            <date>2017-04-13 22:36:09 -0700</date>
            <delta_ts>2017-04-14 12:52:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-170839-20170413223608.patch</filename>
            <type>text/plain</type>
            <size>7624</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE1MjAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDdhYWVhZjhmYzMyYjI2
N2YzMjFhMGNkZmRhOTE2NzgwNjhhNjhmYy4uMWQ1NjE4MDJiMWU4M2NiNmZlNmFhOTNhOGRmMGM5
NWFjNGFmODlmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI4IEBACiAyMDE3LTA0LTEzICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCisgICAgICAgIEltcGxlbWVudCBh
IHdheSBpbiBXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkIHRvIHBlcmZvcm0gYWN0aW9ucyBhZnRl
ciBmaWxlIGxvYWRpbmcgY29tcGxldGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNzA4MzkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMxMjg2MTMw
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEludHJv
ZHVjZXMgLVtXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkIGRvQWZ0ZXJMb2FkaW5nUHJvdmlkZWRD
b250ZW50SW50b0ZpbGVVUkxzOl0sIHdoaWNoIHBlcmZvcm1zIGFuIGFjdGlvbgorICAgICAgICBh
ZnRlciBhbGwgaXRlbSBwcm92aWRlcnMgd2hpY2ggYXJlIGFibGUgdG8gcHJvdmlkZSBjb250ZW50
IGFyZSBkb25lIGxvYWRpbmcgdGhlaXIgY29udGVudCBpbnRvIHRlbXBvcmFyeSBmaWxlCisgICAg
ICAgIFVSTHMuIElmIG5vIGl0ZW0gcHJvdmlkZXJzIGhhdmUgYXZhaWxhYmxlIGRhdGEsIHdlIHdp
bGwgaW1tZWRpYXRlbHkgaW52b2tlIHRoZSBhY3Rpb24gd2l0aCBhbiBlbXB0eSBVUkwgYXJyYXku
CisKKyAgICAgICAgRm9yIGVhY2ggaXRlbSBwcm92aWRlciB3aXRoIGRhdGEsIHdlIHNhdmUgdGhl
IGxvY2FsIFVSTCByZXR1cm5lZCBpbiB0aGUgbG9hZCBjb21wbGV0aW9uIGJsb2NrIHRvIGEgcmFu
ZG9tbHkKKyAgICAgICAgZ2VuZXJhdGVkIHBhdGggaW4gdGhlIGNvbnRhaW5lcidzIHRlbXBvcmFy
eSBkaXJlY3RvcnkuIFdoZW4gYWxsIGZpbGVzIGFyZSBmaW5pc2hlZCBsb2FkaW5nLCB3ZSB0aGVu
IGludm9rZSB0aGUKKyAgICAgICAgYWN0aW9uIHdpdGggYWxsIGZpbGUgVVJMcyB0aGF0IHN1Y2Nl
c3NmdWxseSBsb2FkZWQuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBzaW5jZSB0aGVyZSBpcyBu
byBjaGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViSXRlbVBy
b3ZpZGVyUGFzdGVib2FyZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlk
ZXJQYXN0ZWJvYXJkLm1tOgorICAgICAgICAodGVtcG9yYXJ5RmlsZVVSTEZvckRhdGFJbnRlcmFj
dGlvbkNvbnRlbnQpOgorICAgICAgICAoLVtXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkIHRyeVRv
TG9hZFByb3ZpZGVkQ29udGVudEludG9GaWxlVVJMczpdKToKKworMjAxNy0wNC0xMyAgV2Vuc29u
IEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKwogICAgICAgICBbV0syXSBTdXBwb3J0
IEljb24gY3JlYXRpb24gZnJvbSBmaWxlIFVSTHMgb24gaU9TCiAgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzA4MDkKICAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzMxMjg2MTMwPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dl
Ykl0ZW1Qcm92aWRlclBhc3RlYm9hcmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9X
ZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLmgKaW5kZXggODRhYWY3ODQ3YzQ0ODFhMzIxZjQ5ZmI1
YWRmNzhhYTM3YTc5MDE3YS4uZWJmOWRiNjVjYTc3MjgwOWU0Mjg1YjA4OWE1MmJkMmQzMjdkMDlj
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92aWRl
clBhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRlbVBy
b3ZpZGVyUGFzdGVib2FyZC5oCkBAIC0zMSw2ICszMSw4IEBACiAKIE5TX0FTU1VNRV9OT05OVUxM
X0JFR0lOCiAKK3R5cGVkZWYgdm9pZCAoXldlYkl0ZW1Qcm92aWRlckZpbGVMb2FkQmxvY2spKE5T
QXJyYXkgPE5TVVJMICo+ICopOworCiBXRUJDT1JFX0VYUE9SVCBAaW50ZXJmYWNlIFdlYkl0ZW1Q
cm92aWRlclBhc3RlYm9hcmQgOiBOU09iamVjdDxBYnN0cmFjdFBhc3RlYm9hcmQ+CiAKICsgKGlu
c3RhbmNldHlwZSlzaGFyZWRJbnN0YW5jZTsKQEAgLTQ3LDYgKzQ5LDkgQEAgV0VCQ09SRV9FWFBP
UlQgQGludGVyZmFjZSBXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkIDogTlNPYmplY3Q8QWJzdHJh
Y3RQYXN0ZWJvYXIKIAogLSAodm9pZCllbnVtZXJhdGVJdGVtUHJvdmlkZXJzV2l0aEJsb2NrOih2
b2lkICheKShVSUl0ZW1Qcm92aWRlciAqaXRlbVByb3ZpZGVyLCBOU1VJbnRlZ2VyIGluZGV4LCBC
T09MICpzdG9wKSlibG9jazsKIAorLy8gVGhlIGdpdmVuIGNvbXBsZXRpb24gYmxvY2sgaXMgYWx3
YXlzIGRpc3BhdGNoZWQgb24gdGhlIG1haW4gdGhyZWFkLgorLSAodm9pZClkb0FmdGVyTG9hZGlu
Z1Byb3ZpZGVkQ29udGVudEludG9GaWxlVVJMczooV2ViSXRlbVByb3ZpZGVyRmlsZUxvYWRCbG9j
aylhY3Rpb247CisKIEBlbmQKIAogTlNfQVNTVU1FX05PTk5VTExfRU5ECmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1t
CmluZGV4IDE5NmU3MmFiYWJlMTA4ZDRlYWI2NjRlYmU2NGViNzAwYWQzYzI4M2QuLjI2ZTUzOTEy
ZmU5NzExYmE2ZTZjNWU5ODVlOTI1OGQzNWJkYWVjYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1tCkBAIC0z
NSw3ICszNSwxMSBAQAogI2ltcG9ydCA8VUlLaXQvVUlDb2xvci5oPgogI2ltcG9ydCA8VUlLaXQv
VUlJbWFnZS5oPgogI2ltcG9ydCA8VUlLaXQvVUlJdGVtUHJvdmlkZXJXcml0aW5nLmg+CisjaW1w
b3J0IDxXZWJLaXQvV2ViTlNGaWxlTWFuYWdlckV4dHJhcy5oPgorI2ltcG9ydCA8d3RmL0Jsb2Nr
UHRyLmg+CisjaW1wb3J0IDx3dGYvQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIuaD4KICNp
bXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
CiBTT0ZUX0xJTktfRlJBTUVXT1JLKFVJS2l0KQogU09GVF9MSU5LX0NMQVNTKFVJS2l0LCBVSUNv
bG9yKQpAQCAtMjUxLDYgKzI1NSw3OCBAQCBzdGF0aWMgQk9PTCBpc0ltYWdlVHlwZShOU1N0cmlu
ZyAqdHlwZSkKICAgICByZXR1cm4gX2NoYW5nZUNvdW50OwogfQogCitzdGF0aWMgTlNVUkwgKnRl
bXBvcmFyeUZpbGVVUkxGb3JEYXRhSW50ZXJhY3Rpb25Db250ZW50KE5TU3RyaW5nICpmaWxlRXh0
ZW5zaW9uLCBOU1N0cmluZyAqc3VnZ2VzdGVkTmFtZSkKK3sKKyAgICBpZiAoIWZpbGVFeHRlbnNp
b24ubGVuZ3RoKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgTlNTdHJpbmcgKnRlbXBvcmFy
eURhdGFJbnRlcmFjdGlvbkRpcmVjdG9yeSA9IFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdl
cl0gX3dlYmtpdF9jcmVhdGVUZW1wb3JhcnlEaXJlY3RvcnlXaXRoVGVtcGxhdGVQcmVmaXg6QCJk
YXRhLWludGVyYWN0aW9uIl07CisgICAgaWYgKCF0ZW1wb3JhcnlEYXRhSW50ZXJhY3Rpb25EaXJl
Y3RvcnkpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBOU1N0cmluZyAqdGVtcG9yYXJ5Rmls
ZW5hbWUgPSBzdWdnZXN0ZWROYW1lID86IChOU1N0cmluZyAqKVN0cmluZzo6bnVtYmVyKGNyeXB0
b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyKCkpOworICAgIHRlbXBvcmFyeUZpbGVuYW1lID0gW3Rl
bXBvcmFyeUZpbGVuYW1lIHN0cmluZ0J5QXBwZW5kaW5nUGF0aEV4dGVuc2lvbjpmaWxlRXh0ZW5z
aW9uXTsKKyAgICByZXR1cm4gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpbdGVtcG9yYXJ5RGF0YUlu
dGVyYWN0aW9uRGlyZWN0b3J5IHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDp0ZW1wb3Jh
cnlGaWxlbmFtZV1dOworfQorCistICh2b2lkKWRvQWZ0ZXJMb2FkaW5nUHJvdmlkZWRDb250ZW50
SW50b0ZpbGVVUkxzOihXZWJJdGVtUHJvdmlkZXJGaWxlTG9hZEJsb2NrKWFjdGlvbgoreworICAg
IGF1dG8gaXRlbVByb3ZpZGVyc1dpdGhGaWxlcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBh
bGxvY10gaW5pdF0pOworICAgIGF1dG8gY29udGVudFR5cGVJZGVudGlmaWVyc1RvTG9hZCA9IGFk
b3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOworICAgIGF1dG8gbG9hZGVkRmls
ZVVSTHMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKKyAgICBmb3Ig
KFVJSXRlbVByb3ZpZGVyICppdGVtUHJvdmlkZXIgaW4gX2l0ZW1Qcm92aWRlcnMuZ2V0KCkpIHsK
KyAgICAgICAgTlNBcnJheTxOU1N0cmluZyAqPiAqaWRlbnRpZmllcnMgPSBpdGVtUHJvdmlkZXIu
cmVnaXN0ZXJlZFR5cGVJZGVudGlmaWVyczsKKyAgICAgICAgTlNTdHJpbmcgKnR5cGVJZGVudGlm
aWVyT2ZDb250ZW50VG9TYXZlID0gbmlsOworICAgICAgICBmb3IgKE5TU3RyaW5nICppZGVudGlm
aWVyIGluIGlkZW50aWZpZXJzKSB7CisgICAgICAgICAgICBpZiAoIVVUVHlwZUNvbmZvcm1zVG8o
KF9fYnJpZGdlIENGU3RyaW5nUmVmKWlkZW50aWZpZXIsIGtVVFR5cGVDb250ZW50KSkKKyAgICAg
ICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxk
IGJlIGNoZWNrZWQgYWdhaW5zdCB0aGUgJ2FjY2VwdCcgYXR0cmlidXRlIG9mIHRoZSBmaWxlIGlu
cHV0IHRvIGZpbHRlciBvdXQgdW53YW50ZWQgdHlwZXMuCisgICAgICAgICAgICB0eXBlSWRlbnRp
Zmllck9mQ29udGVudFRvU2F2ZSA9IGlkZW50aWZpZXI7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorCisgICAgICAgIGlmICh0eXBlSWRlbnRpZmllck9mQ29udGVudFRvU2F2ZSkgewor
ICAgICAgICAgICAgW2l0ZW1Qcm92aWRlcnNXaXRoRmlsZXMgYWRkT2JqZWN0Oml0ZW1Qcm92aWRl
cl07CisgICAgICAgICAgICBbY29udGVudFR5cGVJZGVudGlmaWVyc1RvTG9hZCBhZGRPYmplY3Q6
dHlwZUlkZW50aWZpZXJPZkNvbnRlbnRUb1NhdmVdOworICAgICAgICB9CisgICAgfQorCisgICAg
aWYgKCFbaXRlbVByb3ZpZGVyc1dpdGhGaWxlcyBjb3VudF0pIHsKKyAgICAgICAgYWN0aW9uKEBb
IF0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgZGlzcGF0Y2hfZ3JvdXBfdCBmaWxl
TG9hZGluZ0dyb3VwID0gZGlzcGF0Y2hfZ3JvdXBfY3JlYXRlKCk7CisgICAgZm9yIChOU1VJbnRl
Z2VyIGluZGV4ID0gMDsgaW5kZXggPCBbaXRlbVByb3ZpZGVyc1dpdGhGaWxlcyBjb3VudF07ICsr
aW5kZXgpIHsKKyAgICAgICAgUmV0YWluUHRyPFVJSXRlbVByb3ZpZGVyPiBpdGVtUHJvdmlkZXIg
PSBbaXRlbVByb3ZpZGVyc1dpdGhGaWxlcyBvYmplY3RBdEluZGV4OmluZGV4XTsKKyAgICAgICAg
UmV0YWluUHRyPE5TU3RyaW5nPiBjb250ZW50SWRlbnRpZmllciA9IFtjb250ZW50VHlwZUlkZW50
aWZpZXJzVG9Mb2FkIG9iamVjdEF0SW5kZXg6aW5kZXhdOworICAgICAgICBSZXRhaW5QdHI8TlNT
dHJpbmc+IHN1Z2dlc3RlZE5hbWUgPSBbaXRlbVByb3ZpZGVyIHN1Z2dlc3RlZE5hbWVdOworICAg
ICAgICBkaXNwYXRjaF9ncm91cF9lbnRlcihmaWxlTG9hZGluZ0dyb3VwKTsKKyAgICAgICAgZGlz
cGF0Y2hfZ3JvdXBfYXN5bmMoZmlsZUxvYWRpbmdHcm91cCwgZGlzcGF0Y2hfZ2V0X21haW5fcXVl
dWUoKSwgXigpIHsKKyAgICAgICAgICAgIFtpdGVtUHJvdmlkZXIgbG9hZEZpbGVSZXByZXNlbnRh
dGlvbkZvclR5cGVJZGVudGlmaWVyOmNvbnRlbnRJZGVudGlmaWVyLmdldCgpIGNvbXBsZXRpb25I
YW5kbGVyOl4oTlNVUkwgKnVybCwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgICAgICAgICAv
LyBBZnRlciBleGVjdXRpbmcgdGhpcyBjb21wbGV0aW9uIGJsb2NrLCBVSUtpdCByZW1vdmVzIHRo
ZSBmaWxlIGF0IHRoZSBnaXZlbiBVUkwuIEhvd2V2ZXIsIHdlIG5lZWQgdGhpcyBkYXRhIHRvIHBl
cnNpc3QgbG9uZ2VyIGZvciB0aGUgd2ViIGNvbnRlbnQgcHJvY2Vzcy4KKyAgICAgICAgICAgICAg
ICAvLyBUbyBhZGRyZXNzIHRoaXMsIHdlIGhhcmQgbGluayB0aGUgZ2l2ZW4gVVJMIHRvIGEgbmV3
IHRlbXBvcmFyeSBmaWxlIGluIHRoZSB0ZW1wb3JhcnkgZGlyZWN0b3J5LiBUaGlzIGZvbGxvd3Mg
dGhlIHNhbWUgZmxvdyBhcyByZWd1bGFyIGZpbGUgdXBsb2FkLCBpbgorICAgICAgICAgICAgICAg
IC8vIFdLRmlsZVVwbG9hZFBhbmVsLm1tLiBUaGUgdGVtcG9yYXJ5IGZpbGVzIGFyZSBjbGVhbmVk
IHVwIGJ5IHRoZSBzeXN0ZW0gYXQgYSBsYXRlciB0aW1lLgorICAgICAgICAgICAgICAgIFJldGFp
blB0cjxOU1VSTD4gZGVzdGluYXRpb25VUkwgPSB0ZW1wb3JhcnlGaWxlVVJMRm9yRGF0YUludGVy
YWN0aW9uQ29udGVudCh1cmwucGF0aEV4dGVuc2lvbiwgc3VnZ2VzdGVkTmFtZS5nZXQoKSk7Cisg
ICAgICAgICAgICAgICAgTlNFcnJvciAqaGFyZExpbmtFcnJvciA9IG5pbDsKKyAgICAgICAgICAg
ICAgICBpZiAoZGVzdGluYXRpb25VUkwgJiYgIWVycm9yKSB7CisgICAgICAgICAgICAgICAgICAg
IFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gcmVtb3ZlSXRlbUF0VVJMOmRlc3RpbmF0
aW9uVVJMLmdldCgpIGVycm9yOm5pbF07CisgICAgICAgICAgICAgICAgICAgIFtbTlNGaWxlTWFu
YWdlciBkZWZhdWx0TWFuYWdlcl0gbGlua0l0ZW1BdFVSTDp1cmwgdG9VUkw6ZGVzdGluYXRpb25V
UkwuZ2V0KCkgZXJyb3I6JmhhcmRMaW5rRXJyb3JdOworICAgICAgICAgICAgICAgICAgICBpZiAo
IWhhcmRMaW5rRXJyb3IpCisgICAgICAgICAgICAgICAgICAgICAgICBbbG9hZGVkRmlsZVVSTHMg
YWRkT2JqZWN0OmRlc3RpbmF0aW9uVVJMLmdldCgpXTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgZGlzcGF0Y2hfZ3JvdXBfbGVhdmUoZmlsZUxvYWRpbmdHcm91cCk7CisgICAg
ICAgICAgICB9XTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgZGlzcGF0Y2hfZ3JvdXBfbm90
aWZ5KGZpbGVMb2FkaW5nR3JvdXAsIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF4oKSB7Cisg
ICAgICAgIGFjdGlvbihsb2FkZWRGaWxlVVJMcy5nZXQoKSk7CisgICAgICAgIGRpc3BhdGNoX3Jl
bGVhc2UoZmlsZUxvYWRpbmdHcm91cCk7CisgICAgfSk7Cit9CisKIC0gKFVJSXRlbVByb3ZpZGVy
ICopaXRlbVByb3ZpZGVyQXRJbmRleDooTlNJbnRlZ2VyKWluZGV4CiB7CiAgICAgcmV0dXJuIDAg
PD0gaW5kZXggJiYgaW5kZXggPCAoTlNJbnRlZ2VyKVtfaXRlbVByb3ZpZGVycyBjb3VudF0gPyBb
X2l0ZW1Qcm92aWRlcnMgb2JqZWN0QXRJbmRleDppbmRleF0gOiBuaWw7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>307137</attachid>
            <date>2017-04-14 12:52:32 -0700</date>
            <delta_ts>2017-04-14 15:27:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-170839-20170414125231.patch</filename>
            <type>text/plain</type>
            <size>7368</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE1MzYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmVhYTZmYzRjMGEzZjJm
ZDFhZDJkZGJhY2MzNGRlZjU1MGY0ZTAzYS4uY2FhYTI1NDc0NmI1NzBiNjlhNDBkYWFlOWIyZTk1
YmVkZmZhNzk0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI4IEBACiAyMDE3LTA0LTEzICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCisgICAgICAgIEltcGxlbWVudCBh
IHdheSBpbiBXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkIHRvIHBlcmZvcm0gYWN0aW9ucyBhZnRl
ciBmaWxlIGxvYWRpbmcgY29tcGxldGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNzA4MzkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMxMjg2MTMw
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEludHJv
ZHVjZXMgLVtXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkIGRvQWZ0ZXJMb2FkaW5nUHJvdmlkZWRD
b250ZW50SW50b0ZpbGVVUkxzOl0sIHdoaWNoIHBlcmZvcm1zIGFuIGFjdGlvbgorICAgICAgICBh
ZnRlciBhbGwgaXRlbSBwcm92aWRlcnMgd2hpY2ggYXJlIGFibGUgdG8gcHJvdmlkZSBjb250ZW50
IGFyZSBkb25lIGxvYWRpbmcgdGhlaXIgY29udGVudCBpbnRvIHRlbXBvcmFyeSBmaWxlCisgICAg
ICAgIFVSTHMuIElmIG5vIGl0ZW0gcHJvdmlkZXJzIGhhdmUgYXZhaWxhYmxlIGRhdGEsIHdlIHdp
bGwgaW1tZWRpYXRlbHkgaW52b2tlIHRoZSBhY3Rpb24gd2l0aCBhbiBlbXB0eSBVUkwgYXJyYXku
CisKKyAgICAgICAgRm9yIGVhY2ggaXRlbSBwcm92aWRlciB3aXRoIGRhdGEsIHdlIHNhdmUgdGhl
IGxvY2FsIFVSTCByZXR1cm5lZCBpbiB0aGUgbG9hZCBjb21wbGV0aW9uIGJsb2NrIHRvIGEgcmFu
ZG9tbHkKKyAgICAgICAgZ2VuZXJhdGVkIHBhdGggaW4gdGhlIGNvbnRhaW5lcidzIHRlbXBvcmFy
eSBkaXJlY3RvcnkuIFdoZW4gYWxsIGZpbGVzIGFyZSBmaW5pc2hlZCBsb2FkaW5nLCB3ZSB0aGVu
IGludm9rZSB0aGUKKyAgICAgICAgYWN0aW9uIHdpdGggYWxsIGZpbGUgVVJMcyB0aGF0IHN1Y2Nl
c3NmdWxseSBsb2FkZWQuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBzaW5jZSB0aGVyZSBpcyBu
byBjaGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViSXRlbVBy
b3ZpZGVyUGFzdGVib2FyZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlk
ZXJQYXN0ZWJvYXJkLm1tOgorICAgICAgICAodGVtcG9yYXJ5RmlsZVVSTEZvckRhdGFJbnRlcmFj
dGlvbkNvbnRlbnQpOgorICAgICAgICAoLVtXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkIHRyeVRv
TG9hZFByb3ZpZGVkQ29udGVudEludG9GaWxlVVJMczpdKToKKworMjAxNy0wNC0xMyAgV2Vuc29u
IEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKwogICAgICAgICBbV0syXSBTdXBwb3J0
IEljb24gY3JlYXRpb24gZnJvbSBmaWxlIFVSTHMgb24gaU9TCiAgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzA4MDkKICAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzMxMjg2MTMwPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dl
Ykl0ZW1Qcm92aWRlclBhc3RlYm9hcmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9X
ZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLmgKaW5kZXggODRhYWY3ODQ3YzQ0ODFhMzIxZjQ5ZmI1
YWRmNzhhYTM3YTc5MDE3YS4uZWJmOWRiNjVjYTc3MjgwOWU0Mjg1YjA4OWE1MmJkMmQzMjdkMDlj
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92aWRl
clBhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRlbVBy
b3ZpZGVyUGFzdGVib2FyZC5oCkBAIC0zMSw2ICszMSw4IEBACiAKIE5TX0FTU1VNRV9OT05OVUxM
X0JFR0lOCiAKK3R5cGVkZWYgdm9pZCAoXldlYkl0ZW1Qcm92aWRlckZpbGVMb2FkQmxvY2spKE5T
QXJyYXkgPE5TVVJMICo+ICopOworCiBXRUJDT1JFX0VYUE9SVCBAaW50ZXJmYWNlIFdlYkl0ZW1Q
cm92aWRlclBhc3RlYm9hcmQgOiBOU09iamVjdDxBYnN0cmFjdFBhc3RlYm9hcmQ+CiAKICsgKGlu
c3RhbmNldHlwZSlzaGFyZWRJbnN0YW5jZTsKQEAgLTQ3LDYgKzQ5LDkgQEAgV0VCQ09SRV9FWFBP
UlQgQGludGVyZmFjZSBXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkIDogTlNPYmplY3Q8QWJzdHJh
Y3RQYXN0ZWJvYXIKIAogLSAodm9pZCllbnVtZXJhdGVJdGVtUHJvdmlkZXJzV2l0aEJsb2NrOih2
b2lkICheKShVSUl0ZW1Qcm92aWRlciAqaXRlbVByb3ZpZGVyLCBOU1VJbnRlZ2VyIGluZGV4LCBC
T09MICpzdG9wKSlibG9jazsKIAorLy8gVGhlIGdpdmVuIGNvbXBsZXRpb24gYmxvY2sgaXMgYWx3
YXlzIGRpc3BhdGNoZWQgb24gdGhlIG1haW4gdGhyZWFkLgorLSAodm9pZClkb0FmdGVyTG9hZGlu
Z1Byb3ZpZGVkQ29udGVudEludG9GaWxlVVJMczooV2ViSXRlbVByb3ZpZGVyRmlsZUxvYWRCbG9j
aylhY3Rpb247CisKIEBlbmQKIAogTlNfQVNTVU1FX05PTk5VTExfRU5ECmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1t
CmluZGV4IDE5NmU3MmFiYWJlMTA4ZDRlYWI2NjRlYmU2NGViNzAwYWQzYzI4M2QuLmIyNTQ4MjZh
MWMyNGI0NmU3MWFhOTMzYjIyYWZmMWEwZmNlNzY5ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1tCkBAIC0z
NSw3ICszNSwxMSBAQAogI2ltcG9ydCA8VUlLaXQvVUlDb2xvci5oPgogI2ltcG9ydCA8VUlLaXQv
VUlJbWFnZS5oPgogI2ltcG9ydCA8VUlLaXQvVUlJdGVtUHJvdmlkZXJXcml0aW5nLmg+CisjaW1w
b3J0IDxXZWJLaXQvV2ViTlNGaWxlTWFuYWdlckV4dHJhcy5oPgorI2ltcG9ydCA8d3RmL0Jsb2Nr
UHRyLmg+CisjaW1wb3J0IDx3dGYvQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIuaD4KICNp
bXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
CiBTT0ZUX0xJTktfRlJBTUVXT1JLKFVJS2l0KQogU09GVF9MSU5LX0NMQVNTKFVJS2l0LCBVSUNv
bG9yKQpAQCAtMjUxLDYgKzI1NSw3NSBAQCBzdGF0aWMgQk9PTCBpc0ltYWdlVHlwZShOU1N0cmlu
ZyAqdHlwZSkKICAgICByZXR1cm4gX2NoYW5nZUNvdW50OwogfQogCitzdGF0aWMgTlNVUkwgKnRl
bXBvcmFyeUZpbGVVUkxGb3JEYXRhSW50ZXJhY3Rpb25Db250ZW50KE5TU3RyaW5nICpmaWxlRXh0
ZW5zaW9uLCBOU1N0cmluZyAqc3VnZ2VzdGVkTmFtZSkKK3sKKyAgICBpZiAoIWZpbGVFeHRlbnNp
b24ubGVuZ3RoKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgTlNTdHJpbmcgKnRlbXBvcmFy
eURhdGFJbnRlcmFjdGlvbkRpcmVjdG9yeSA9IFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdl
cl0gX3dlYmtpdF9jcmVhdGVUZW1wb3JhcnlEaXJlY3RvcnlXaXRoVGVtcGxhdGVQcmVmaXg6QCJk
YXRhLWludGVyYWN0aW9uIl07CisgICAgaWYgKCF0ZW1wb3JhcnlEYXRhSW50ZXJhY3Rpb25EaXJl
Y3RvcnkpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBOU1N0cmluZyAqdGVtcG9yYXJ5Rmls
ZW5hbWUgPSBzdWdnZXN0ZWROYW1lID86IChOU1N0cmluZyAqKVN0cmluZzo6bnVtYmVyKGNyeXB0
b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyKCkpOworICAgIHRlbXBvcmFyeUZpbGVuYW1lID0gW3Rl
bXBvcmFyeUZpbGVuYW1lIHN0cmluZ0J5QXBwZW5kaW5nUGF0aEV4dGVuc2lvbjpmaWxlRXh0ZW5z
aW9uXTsKKyAgICByZXR1cm4gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpbdGVtcG9yYXJ5RGF0YUlu
dGVyYWN0aW9uRGlyZWN0b3J5IHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDp0ZW1wb3Jh
cnlGaWxlbmFtZV1dOworfQorCistICh2b2lkKWRvQWZ0ZXJMb2FkaW5nUHJvdmlkZWRDb250ZW50
SW50b0ZpbGVVUkxzOihXZWJJdGVtUHJvdmlkZXJGaWxlTG9hZEJsb2NrKWFjdGlvbgoreworICAg
IGF1dG8gaXRlbVByb3ZpZGVyc1dpdGhGaWxlcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBh
bGxvY10gaW5pdF0pOworICAgIGF1dG8gY29udGVudFR5cGVJZGVudGlmaWVyc1RvTG9hZCA9IGFk
b3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOworICAgIGF1dG8gbG9hZGVkRmls
ZVVSTHMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKKyAgICBmb3Ig
KFVJSXRlbVByb3ZpZGVyICppdGVtUHJvdmlkZXIgaW4gX2l0ZW1Qcm92aWRlcnMuZ2V0KCkpIHsK
KyAgICAgICAgTlNTdHJpbmcgKnR5cGVJZGVudGlmaWVyT2ZDb250ZW50VG9TYXZlID0gbmlsOwor
ICAgICAgICBmb3IgKE5TU3RyaW5nICppZGVudGlmaWVyIGluIGl0ZW1Qcm92aWRlci5yZWdpc3Rl
cmVkVHlwZUlkZW50aWZpZXJzKSB7CisgICAgICAgICAgICBpZiAoIVVUVHlwZUNvbmZvcm1zVG8o
KF9fYnJpZGdlIENGU3RyaW5nUmVmKWlkZW50aWZpZXIsIGtVVFR5cGVDb250ZW50KSkKKyAgICAg
ICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgdHlwZUlkZW50aWZpZXJPZkNvbnRl
bnRUb1NhdmUgPSBpZGVudGlmaWVyOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKwor
ICAgICAgICBpZiAodHlwZUlkZW50aWZpZXJPZkNvbnRlbnRUb1NhdmUpIHsKKyAgICAgICAgICAg
IFtpdGVtUHJvdmlkZXJzV2l0aEZpbGVzIGFkZE9iamVjdDppdGVtUHJvdmlkZXJdOworICAgICAg
ICAgICAgW2NvbnRlbnRUeXBlSWRlbnRpZmllcnNUb0xvYWQgYWRkT2JqZWN0OnR5cGVJZGVudGlm
aWVyT2ZDb250ZW50VG9TYXZlXTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmICghW2l0ZW1Q
cm92aWRlcnNXaXRoRmlsZXMgY291bnRdKSB7CisgICAgICAgIGFjdGlvbihAWyBdKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIGRpc3BhdGNoX2dyb3VwX3QgZmlsZUxvYWRpbmdHcm91
cCA9IGRpc3BhdGNoX2dyb3VwX2NyZWF0ZSgpOworICAgIGZvciAoTlNVSW50ZWdlciBpbmRleCA9
IDA7IGluZGV4IDwgW2l0ZW1Qcm92aWRlcnNXaXRoRmlsZXMgY291bnRdOyArK2luZGV4KSB7Cisg
ICAgICAgIFJldGFpblB0cjxVSUl0ZW1Qcm92aWRlcj4gaXRlbVByb3ZpZGVyID0gW2l0ZW1Qcm92
aWRlcnNXaXRoRmlsZXMgb2JqZWN0QXRJbmRleDppbmRleF07CisgICAgICAgIFJldGFpblB0cjxO
U1N0cmluZz4gc3VnZ2VzdGVkTmFtZSA9IFtpdGVtUHJvdmlkZXIgc3VnZ2VzdGVkTmFtZV07Cisg
ICAgICAgIGRpc3BhdGNoX2dyb3VwX2VudGVyKGZpbGVMb2FkaW5nR3JvdXApOworICAgICAgICBk
aXNwYXRjaF9ncm91cF9hc3luYyhmaWxlTG9hZGluZ0dyb3VwLCBkaXNwYXRjaF9nZXRfbWFpbl9x
dWV1ZSgpLCBeKCkgeworICAgICAgICAgICAgW2l0ZW1Qcm92aWRlciBsb2FkRmlsZVJlcHJlc2Vu
dGF0aW9uRm9yVHlwZUlkZW50aWZpZXI6W2NvbnRlbnRUeXBlSWRlbnRpZmllcnNUb0xvYWQgb2Jq
ZWN0QXRJbmRleDppbmRleF0gY29tcGxldGlvbkhhbmRsZXI6XihOU1VSTCAqdXJsLCBOU0Vycm9y
ICplcnJvcikgeworICAgICAgICAgICAgICAgIC8vIEFmdGVyIGV4ZWN1dGluZyB0aGlzIGNvbXBs
ZXRpb24gYmxvY2ssIFVJS2l0IHJlbW92ZXMgdGhlIGZpbGUgYXQgdGhlIGdpdmVuIFVSTC4gSG93
ZXZlciwgd2UgbmVlZCB0aGlzIGRhdGEgdG8gcGVyc2lzdCBsb25nZXIgZm9yIHRoZSB3ZWIgY29u
dGVudCBwcm9jZXNzLgorICAgICAgICAgICAgICAgIC8vIFRvIGFkZHJlc3MgdGhpcywgd2UgaGFy
ZCBsaW5rIHRoZSBnaXZlbiBVUkwgdG8gYSBuZXcgdGVtcG9yYXJ5IGZpbGUgaW4gdGhlIHRlbXBv
cmFyeSBkaXJlY3RvcnkuIFRoaXMgZm9sbG93cyB0aGUgc2FtZSBmbG93IGFzIHJlZ3VsYXIgZmls
ZSB1cGxvYWQsIGluCisgICAgICAgICAgICAgICAgLy8gV0tGaWxlVXBsb2FkUGFuZWwubW0uIFRo
ZSB0ZW1wb3JhcnkgZmlsZXMgYXJlIGNsZWFuZWQgdXAgYnkgdGhlIHN5c3RlbSBhdCBhIGxhdGVy
IHRpbWUuCisgICAgICAgICAgICAgICAgUmV0YWluUHRyPE5TVVJMPiBkZXN0aW5hdGlvblVSTCA9
IHRlbXBvcmFyeUZpbGVVUkxGb3JEYXRhSW50ZXJhY3Rpb25Db250ZW50KHVybC5wYXRoRXh0ZW5z
aW9uLCBzdWdnZXN0ZWROYW1lLmdldCgpKTsKKyAgICAgICAgICAgICAgICBOU0Vycm9yICpoYXJk
TGlua0Vycm9yID0gbmlsOworICAgICAgICAgICAgICAgIGlmIChkZXN0aW5hdGlvblVSTCAmJiAh
ZXJyb3IpIHsKKyAgICAgICAgICAgICAgICAgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5h
Z2VyXSByZW1vdmVJdGVtQXRVUkw6ZGVzdGluYXRpb25VUkwuZ2V0KCkgZXJyb3I6bmlsXTsKKyAg
ICAgICAgICAgICAgICAgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBsaW5rSXRl
bUF0VVJMOnVybCB0b1VSTDpkZXN0aW5hdGlvblVSTC5nZXQoKSBlcnJvcjomaGFyZExpbmtFcnJv
cl07CisgICAgICAgICAgICAgICAgICAgIGlmICghaGFyZExpbmtFcnJvcikKKyAgICAgICAgICAg
ICAgICAgICAgICAgIFtsb2FkZWRGaWxlVVJMcyBhZGRPYmplY3Q6ZGVzdGluYXRpb25VUkwuZ2V0
KCldOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBkaXNwYXRjaF9ncm91cF9s
ZWF2ZShmaWxlTG9hZGluZ0dyb3VwKTsKKyAgICAgICAgICAgIH1dOworICAgICAgICB9KTsKKyAg
ICB9CisKKyAgICBkaXNwYXRjaF9ncm91cF9ub3RpZnkoZmlsZUxvYWRpbmdHcm91cCwgZGlzcGF0
Y2hfZ2V0X21haW5fcXVldWUoKSwgXigpIHsKKyAgICAgICAgYWN0aW9uKGxvYWRlZEZpbGVVUkxz
LmdldCgpKTsKKyAgICAgICAgZGlzcGF0Y2hfcmVsZWFzZShmaWxlTG9hZGluZ0dyb3VwKTsKKyAg
ICB9KTsKK30KKwogLSAoVUlJdGVtUHJvdmlkZXIgKilpdGVtUHJvdmlkZXJBdEluZGV4OihOU0lu
dGVnZXIpaW5kZXgKIHsKICAgICByZXR1cm4gMCA8PSBpbmRleCAmJiBpbmRleCA8IChOU0ludGVn
ZXIpW19pdGVtUHJvdmlkZXJzIGNvdW50XSA/IFtfaXRlbVByb3ZpZGVycyBvYmplY3RBdEluZGV4
OmluZGV4XSA6IG5pbDsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>307154</attachid>
            <date>2017-04-14 15:27:07 -0700</date>
            <delta_ts>2017-04-14 17:06:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-170839-20170414152706.patch</filename>
            <type>text/plain</type>
            <size>7208</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE1MzcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzJlN2UxMDY3MjVmZjc3
MmY3MWIwMjY1ODZiYmZkMDczZTcyOTM0Ny4uMDRiMjg3NTQxMmYyYzU0MGZmN2Y5M2MxM2EzN2I1
OWYxODkwOWIwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI4IEBACiAyMDE3LTA0LTEzICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCisgICAgICAgIEltcGxlbWVudCBh
IHdheSBpbiBXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkIHRvIHBlcmZvcm0gYWN0aW9ucyBhZnRl
ciBmaWxlIGxvYWRpbmcgY29tcGxldGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNzA4MzkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMxMjg2MTMw
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEludHJv
ZHVjZXMgLVtXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkIGRvQWZ0ZXJMb2FkaW5nUHJvdmlkZWRD
b250ZW50SW50b0ZpbGVVUkxzOl0sIHdoaWNoIHBlcmZvcm1zIGFuIGFjdGlvbgorICAgICAgICBh
ZnRlciBhbGwgaXRlbSBwcm92aWRlcnMgd2hpY2ggYXJlIGFibGUgdG8gcHJvdmlkZSBjb250ZW50
IGFyZSBkb25lIGxvYWRpbmcgdGhlaXIgY29udGVudCBpbnRvIHRlbXBvcmFyeSBmaWxlCisgICAg
ICAgIFVSTHMuIElmIG5vIGl0ZW0gcHJvdmlkZXJzIGhhdmUgYXZhaWxhYmxlIGRhdGEsIHdlIHdp
bGwgaW1tZWRpYXRlbHkgaW52b2tlIHRoZSBhY3Rpb24gd2l0aCBhbiBlbXB0eSBVUkwgYXJyYXku
CisKKyAgICAgICAgRm9yIGVhY2ggaXRlbSBwcm92aWRlciB3aXRoIGRhdGEsIHdlIHNhdmUgdGhl
IGxvY2FsIFVSTCByZXR1cm5lZCBpbiB0aGUgbG9hZCBjb21wbGV0aW9uIGJsb2NrIHRvIGEgcmFu
ZG9tbHkKKyAgICAgICAgZ2VuZXJhdGVkIHBhdGggaW4gdGhlIGNvbnRhaW5lcidzIHRlbXBvcmFy
eSBkaXJlY3RvcnkuIFdoZW4gYWxsIGZpbGVzIGFyZSBmaW5pc2hlZCBsb2FkaW5nLCB3ZSB0aGVu
IGludm9rZSB0aGUKKyAgICAgICAgYWN0aW9uIHdpdGggYWxsIGZpbGUgVVJMcyB0aGF0IHN1Y2Nl
c3NmdWxseSBsb2FkZWQuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBzaW5jZSB0aGVyZSBpcyBu
byBjaGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViSXRlbVBy
b3ZpZGVyUGFzdGVib2FyZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlk
ZXJQYXN0ZWJvYXJkLm1tOgorICAgICAgICAodGVtcG9yYXJ5RmlsZVVSTEZvckRhdGFJbnRlcmFj
dGlvbkNvbnRlbnQpOgorICAgICAgICAoLVtXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkIGRvQWZ0
ZXJMb2FkaW5nUHJvdmlkZWRDb250ZW50SW50b0ZpbGVVUkxzOl0pOgorCisyMDE3LTA0LTEzICBX
ZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCiAgICAgICAgIFtXSzJdIFN1
cHBvcnQgSWNvbiBjcmVhdGlvbiBmcm9tIGZpbGUgVVJMcyBvbiBpT1MKICAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MDgwOQogICAgICAgICA8cmRhcjov
L3Byb2JsZW0vMzEyODYxMzA+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQuaAppbmRleCA4NGFhZjc4NDdjNDQ4MWEzMjFm
NDlmYjVhZGY3OGFhMzdhNzkwMTdhLi5kODA2ZTAwOWU4OGFmOGMzZDg4YmI0ODVhZGQwMjExODFm
ZThiNzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRlbVBy
b3ZpZGVyUGFzdGVib2FyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJJ
dGVtUHJvdmlkZXJQYXN0ZWJvYXJkLmgKQEAgLTMxLDYgKzMxLDggQEAKIAogTlNfQVNTVU1FX05P
Tk5VTExfQkVHSU4KIAordHlwZWRlZiB2b2lkICheV2ViSXRlbVByb3ZpZGVyRmlsZUxvYWRCbG9j
aykoTlNBcnJheTxOU1VSTCAqPiAqKTsKKwogV0VCQ09SRV9FWFBPUlQgQGludGVyZmFjZSBXZWJJ
dGVtUHJvdmlkZXJQYXN0ZWJvYXJkIDogTlNPYmplY3Q8QWJzdHJhY3RQYXN0ZWJvYXJkPgogCiAr
IChpbnN0YW5jZXR5cGUpc2hhcmVkSW5zdGFuY2U7CkBAIC00Nyw2ICs0OSw5IEBAIFdFQkNPUkVf
RVhQT1JUIEBpbnRlcmZhY2UgV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZCA6IE5TT2JqZWN0PEFi
c3RyYWN0UGFzdGVib2FyCiAKIC0gKHZvaWQpZW51bWVyYXRlSXRlbVByb3ZpZGVyc1dpdGhCbG9j
azoodm9pZCAoXikoVUlJdGVtUHJvdmlkZXIgKml0ZW1Qcm92aWRlciwgTlNVSW50ZWdlciBpbmRl
eCwgQk9PTCAqc3RvcCkpYmxvY2s7CiAKKy8vIFRoZSBnaXZlbiBjb21wbGV0aW9uIGJsb2NrIGlz
IGFsd2F5cyBkaXNwYXRjaGVkIG9uIHRoZSBtYWluIHRocmVhZC4KKy0gKHZvaWQpZG9BZnRlckxv
YWRpbmdQcm92aWRlZENvbnRlbnRJbnRvRmlsZVVSTHM6KFdlYkl0ZW1Qcm92aWRlckZpbGVMb2Fk
QmxvY2spYWN0aW9uOworCiBAZW5kCiAKIE5TX0FTU1VNRV9OT05OVUxMX0VORApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2Fy
ZC5tbQppbmRleCAxOTZlNzJhYmFiZTEwOGQ0ZWFiNjY0ZWJlNjRlYjcwMGFkM2MyODNkLi5hOWFl
ZDBkY2JmYjQ0YzllOTFiMjAyN2MyYjA0MDZjMzg1NjNlMWZhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5tbQpA
QCAtMzUsNiArMzUsOCBAQAogI2ltcG9ydCA8VUlLaXQvVUlDb2xvci5oPgogI2ltcG9ydCA8VUlL
aXQvVUlJbWFnZS5oPgogI2ltcG9ydCA8VUlLaXQvVUlJdGVtUHJvdmlkZXJXcml0aW5nLmg+Cisj
aW1wb3J0IDxXZWJLaXQvV2ViTlNGaWxlTWFuYWdlckV4dHJhcy5oPgorI2ltcG9ydCA8d3RmL09T
T2JqZWN0UHRyLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKIFNPRlRfTElOS19GUkFN
RVdPUksoVUlLaXQpCkBAIC0yNTEsNiArMjUzLDczIEBAIC0gKE5TSW50ZWdlciljaGFuZ2VDb3Vu
dAogICAgIHJldHVybiBfY2hhbmdlQ291bnQ7CiB9CiAKK3N0YXRpYyBOU1VSTCAqdGVtcG9yYXJ5
RmlsZVVSTEZvckRhdGFJbnRlcmFjdGlvbkNvbnRlbnQoTlNTdHJpbmcgKmZpbGVFeHRlbnNpb24s
IE5TU3RyaW5nICpzdWdnZXN0ZWROYW1lKQoreworICAgIHN0YXRpYyBOU1N0cmluZyAqZGVmYXVs
dERhdGFJbnRlcmFjdGlvbkZpbGVOYW1lID0gQCJmaWxlIjsKKyAgICBzdGF0aWMgTlNTdHJpbmcg
KmRhdGFJbnRlcmFjdGlvbkRpcmVjdG9yeVByZWZpeCA9IEAiZGF0YS1pbnRlcmFjdGlvbiI7Cisg
ICAgaWYgKCFmaWxlRXh0ZW5zaW9uLmxlbmd0aCkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAg
IE5TU3RyaW5nICp0ZW1wb3JhcnlEYXRhSW50ZXJhY3Rpb25EaXJlY3RvcnkgPSBbW05TRmlsZU1h
bmFnZXIgZGVmYXVsdE1hbmFnZXJdIF93ZWJraXRfY3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5V2l0
aFRlbXBsYXRlUHJlZml4OmRhdGFJbnRlcmFjdGlvbkRpcmVjdG9yeVByZWZpeF07CisgICAgaWYg
KCF0ZW1wb3JhcnlEYXRhSW50ZXJhY3Rpb25EaXJlY3RvcnkpCisgICAgICAgIHJldHVybiBuaWw7
CisKKyAgICBOU1N0cmluZyAqZmlsZW5hbWVXaXRoRXh0ZW5zaW9uID0gW3N1Z2dlc3RlZE5hbWUg
PzogZGVmYXVsdERhdGFJbnRlcmFjdGlvbkZpbGVOYW1lIHN0cmluZ0J5QXBwZW5kaW5nUGF0aEV4
dGVuc2lvbjpmaWxlRXh0ZW5zaW9uXTsKKyAgICByZXR1cm4gW05TVVJMIGZpbGVVUkxXaXRoUGF0
aDpbdGVtcG9yYXJ5RGF0YUludGVyYWN0aW9uRGlyZWN0b3J5IHN0cmluZ0J5QXBwZW5kaW5nUGF0
aENvbXBvbmVudDpmaWxlbmFtZVdpdGhFeHRlbnNpb25dXTsKK30KKworLSAodm9pZClkb0FmdGVy
TG9hZGluZ1Byb3ZpZGVkQ29udGVudEludG9GaWxlVVJMczooV2ViSXRlbVByb3ZpZGVyRmlsZUxv
YWRCbG9jaylhY3Rpb24KK3sKKyAgICBhdXRvIGl0ZW1Qcm92aWRlcnNXaXRoRmlsZXMgPSBhZG9w
dE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKKyAgICBhdXRvIGNvbnRlbnRUeXBl
SWRlbnRpZmllcnNUb0xvYWQgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRd
KTsKKyAgICBhdXRvIGxvYWRlZEZpbGVVUkxzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFs
bG9jXSBpbml0XSk7CisgICAgZm9yIChVSUl0ZW1Qcm92aWRlciAqaXRlbVByb3ZpZGVyIGluIF9p
dGVtUHJvdmlkZXJzLmdldCgpKSB7CisgICAgICAgIE5TU3RyaW5nICp0eXBlSWRlbnRpZmllck9m
Q29udGVudFRvU2F2ZSA9IG5pbDsKKyAgICAgICAgZm9yIChOU1N0cmluZyAqaWRlbnRpZmllciBp
biBpdGVtUHJvdmlkZXIucmVnaXN0ZXJlZFR5cGVJZGVudGlmaWVycykgeworICAgICAgICAgICAg
aWYgKCFVVFR5cGVDb25mb3Jtc1RvKChDRlN0cmluZ1JlZilpZGVudGlmaWVyLCBrVVRUeXBlQ29u
dGVudCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIHR5cGVJZGVu
dGlmaWVyT2ZDb250ZW50VG9TYXZlID0gaWRlbnRpZmllcjsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisKKyAgICAgICAgaWYgKHR5cGVJZGVudGlmaWVyT2ZDb250ZW50VG9TYXZlKSB7
CisgICAgICAgICAgICBbaXRlbVByb3ZpZGVyc1dpdGhGaWxlcyBhZGRPYmplY3Q6aXRlbVByb3Zp
ZGVyXTsKKyAgICAgICAgICAgIFtjb250ZW50VHlwZUlkZW50aWZpZXJzVG9Mb2FkIGFkZE9iamVj
dDp0eXBlSWRlbnRpZmllck9mQ29udGVudFRvU2F2ZV07CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICBpZiAoIVtpdGVtUHJvdmlkZXJzV2l0aEZpbGVzIGNvdW50XSkgeworICAgICAgICBhY3Rpb24o
QFsgXSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGZpbGVMb2FkaW5nR3Jv
dXAgPSAgYWRvcHRPU09iamVjdChkaXNwYXRjaF9ncm91cF9jcmVhdGUoKSk7CisgICAgZm9yIChO
U1VJbnRlZ2VyIGluZGV4ID0gMDsgaW5kZXggPCBbaXRlbVByb3ZpZGVyc1dpdGhGaWxlcyBjb3Vu
dF07ICsraW5kZXgpIHsKKyAgICAgICAgUmV0YWluUHRyPFVJSXRlbVByb3ZpZGVyPiBpdGVtUHJv
dmlkZXIgPSBbaXRlbVByb3ZpZGVyc1dpdGhGaWxlcyBvYmplY3RBdEluZGV4OmluZGV4XTsKKyAg
ICAgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBzdWdnZXN0ZWROYW1lID0gW2l0ZW1Qcm92aWRlciBz
dWdnZXN0ZWROYW1lXTsKKyAgICAgICAgZGlzcGF0Y2hfZ3JvdXBfZW50ZXIoZmlsZUxvYWRpbmdH
cm91cC5nZXQoKSk7CisgICAgICAgIGRpc3BhdGNoX2dyb3VwX2FzeW5jKGZpbGVMb2FkaW5nR3Jv
dXAuZ2V0KCksIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF4geworICAgICAgICAgICAgW2l0
ZW1Qcm92aWRlciBsb2FkRmlsZVJlcHJlc2VudGF0aW9uRm9yVHlwZUlkZW50aWZpZXI6W2NvbnRl
bnRUeXBlSWRlbnRpZmllcnNUb0xvYWQgb2JqZWN0QXRJbmRleDppbmRleF0gY29tcGxldGlvbkhh
bmRsZXI6XihOU1VSTCAqdXJsLCBOU0Vycm9yICplcnJvcikgeworICAgICAgICAgICAgICAgIC8v
IEFmdGVyIGV4ZWN1dGluZyB0aGlzIGNvbXBsZXRpb24gYmxvY2ssIFVJS2l0IHJlbW92ZXMgdGhl
IGZpbGUgYXQgdGhlIGdpdmVuIFVSTC4gSG93ZXZlciwgd2UgbmVlZCB0aGlzIGRhdGEgdG8gcGVy
c2lzdCBsb25nZXIgZm9yIHRoZSB3ZWIgY29udGVudCBwcm9jZXNzLgorICAgICAgICAgICAgICAg
IC8vIFRvIGFkZHJlc3MgdGhpcywgd2UgaGFyZCBsaW5rIHRoZSBnaXZlbiBVUkwgdG8gYSBuZXcg
dGVtcG9yYXJ5IGZpbGUgaW4gdGhlIHRlbXBvcmFyeSBkaXJlY3RvcnkuIFRoaXMgZm9sbG93cyB0
aGUgc2FtZSBmbG93IGFzIHJlZ3VsYXIgZmlsZSB1cGxvYWQsIGluCisgICAgICAgICAgICAgICAg
Ly8gV0tGaWxlVXBsb2FkUGFuZWwubW0uIFRoZSB0ZW1wb3JhcnkgZmlsZXMgYXJlIGNsZWFuZWQg
dXAgYnkgdGhlIHN5c3RlbSBhdCBhIGxhdGVyIHRpbWUuCisgICAgICAgICAgICAgICAgUmV0YWlu
UHRyPE5TVVJMPiBkZXN0aW5hdGlvblVSTCA9IHRlbXBvcmFyeUZpbGVVUkxGb3JEYXRhSW50ZXJh
Y3Rpb25Db250ZW50KHVybC5wYXRoRXh0ZW5zaW9uLCBzdWdnZXN0ZWROYW1lLmdldCgpKTsKKyAg
ICAgICAgICAgICAgICBpZiAoZGVzdGluYXRpb25VUkwgJiYgIWVycm9yKSB7CisgICAgICAgICAg
ICAgICAgICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gcmVtb3ZlSXRlbUF0VVJM
OmRlc3RpbmF0aW9uVVJMLmdldCgpIGVycm9yOm5pbF07CisgICAgICAgICAgICAgICAgICAgIGlm
IChbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGxpbmtJdGVtQXRVUkw6dXJsIHRvVVJM
OmRlc3RpbmF0aW9uVVJMLmdldCgpIGVycm9yOm5pbF0pCisgICAgICAgICAgICAgICAgICAgICAg
ICBbbG9hZGVkRmlsZVVSTHMgYWRkT2JqZWN0OmRlc3RpbmF0aW9uVVJMLmdldCgpXTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZGlzcGF0Y2hfZ3JvdXBfbGVhdmUoZmlsZUxv
YWRpbmdHcm91cC5nZXQoKSk7CisgICAgICAgICAgICB9XTsKKyAgICAgICAgfSk7CisgICAgfQor
CisgICAgZGlzcGF0Y2hfZ3JvdXBfbm90aWZ5KGZpbGVMb2FkaW5nR3JvdXAuZ2V0KCksIGRpc3Bh
dGNoX2dldF9tYWluX3F1ZXVlKCksIF4geworICAgICAgICBhY3Rpb24obG9hZGVkRmlsZVVSTHMu
Z2V0KCkpOworICAgIH0pOworfQorCiAtIChVSUl0ZW1Qcm92aWRlciAqKWl0ZW1Qcm92aWRlckF0
SW5kZXg6KE5TSW50ZWdlcilpbmRleAogewogICAgIHJldHVybiAwIDw9IGluZGV4ICYmIGluZGV4
IDwgKE5TSW50ZWdlcilbX2l0ZW1Qcm92aWRlcnMgY291bnRdID8gW19pdGVtUHJvdmlkZXJzIG9i
amVjdEF0SW5kZXg6aW5kZXhdIDogbmlsOwo=
</data>
<flag name="review"
          id="328440"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>307190</attachid>
            <date>2017-04-14 23:04:27 -0700</date>
            <delta_ts>2017-04-14 23:48:09 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-170839-20170414230426.patch</filename>
            <type>text/plain</type>
            <size>7331</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE1Mzg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODAzNmU3NDA1ZDk1Mjhi
MDNjMDdhY2FjNTIxYTQ4MTc5ODFhZDYyZS4uYWI0MTRiZTlhMTNlYzQ5ODMxMmE2MjY3MTcwYjk1
MDMxNWMwYzk0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDE3LTA0LTEzICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBh
IHdheSBpbiBXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkIHRvIHBlcmZvcm0gYWN0aW9ucyBhZnRl
ciBmaWxlIGxvYWRpbmcgY29tcGxldGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNzA4MzkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMxMjg2MTMw
PgorCisgICAgICAgIFJldmlld2VkIGJ5IFRpbSBIb3J0b24sIEFuZHkgRXN0ZXMsIGFuZCBEYW4g
QmVybnN0ZWluLgorCisgICAgICAgIEludHJvZHVjZXMgLVtXZWJJdGVtUHJvdmlkZXJQYXN0ZWJv
YXJkIGRvQWZ0ZXJMb2FkaW5nUHJvdmlkZWRDb250ZW50SW50b0ZpbGVVUkxzOl0sIHdoaWNoIHBl
cmZvcm1zIGFuIGFjdGlvbgorICAgICAgICBhZnRlciBhbGwgaXRlbSBwcm92aWRlcnMgd2hpY2gg
YXJlIGFibGUgdG8gcHJvdmlkZSBjb250ZW50IGFyZSBkb25lIGxvYWRpbmcgdGhlaXIgY29udGVu
dCBpbnRvIHRlbXBvcmFyeSBmaWxlCisgICAgICAgIFVSTHMuIElmIG5vIGl0ZW0gcHJvdmlkZXJz
IGhhdmUgYXZhaWxhYmxlIGRhdGEsIHdlIHdpbGwgaW1tZWRpYXRlbHkgaW52b2tlIHRoZSBhY3Rp
b24gd2l0aCBhbiBlbXB0eSBVUkwgYXJyYXkuCisKKyAgICAgICAgRm9yIGVhY2ggaXRlbSBwcm92
aWRlciB3aXRoIGRhdGEsIHdlIHNhdmUgdGhlIGxvY2FsIFVSTCByZXR1cm5lZCBpbiB0aGUgbG9h
ZCBjb21wbGV0aW9uIGJsb2NrIHRvIGEgcmFuZG9tbHkKKyAgICAgICAgZ2VuZXJhdGVkIHBhdGgg
aW4gdGhlIGNvbnRhaW5lcidzIHRlbXBvcmFyeSBkaXJlY3RvcnkuIFdoZW4gYWxsIGZpbGVzIGFy
ZSBmaW5pc2hlZCBsb2FkaW5nLCB3ZSB0aGVuIGludm9rZSB0aGUKKyAgICAgICAgYWN0aW9uIHdp
dGggYWxsIGZpbGUgVVJMcyB0aGF0IHN1Y2Nlc3NmdWxseSBsb2FkZWQuCisKKyAgICAgICAgTm8g
bmV3IHRlc3RzLCBzaW5jZSB0aGVyZSBpcyBubyBjaGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5oOgorICAgICAgICAq
IHBsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1tOgorICAgICAgICAodGVt
cG9yYXJ5RmlsZVVSTEZvckRhdGFJbnRlcmFjdGlvbkNvbnRlbnQpOgorICAgICAgICAoLVtXZWJJ
dGVtUHJvdmlkZXJQYXN0ZWJvYXJkIGRvQWZ0ZXJMb2FkaW5nUHJvdmlkZWRDb250ZW50SW50b0Zp
bGVVUkxzOl0pOgorCiAyMDE3LTA0LTE0ICBOaWtpdGEgVmFzaWx5ZXYgIDxudmFzaWx5ZXZAYXBw
bGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFdlYlNvY2tldHM6IG1lc3NhZ2VzIHdp
dGggbm9uLWxhdGluIGxldHRlcnMgYXJlIGRpc3BsYXllZCBpbmNvcnJlY3RseQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJk
LmgKaW5kZXggODRhYWY3ODQ3YzQ0ODFhMzIxZjQ5ZmI1YWRmNzhhYTM3YTc5MDE3YS4uZDgwNmUw
MDllODhhZjhjM2Q4OGJiNDg1YWRkMDIxMTgxZmU4Yjc2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5oCkBAIC0z
MSw2ICszMSw4IEBACiAKIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCiAKK3R5cGVkZWYgdm9pZCAo
XldlYkl0ZW1Qcm92aWRlckZpbGVMb2FkQmxvY2spKE5TQXJyYXk8TlNVUkwgKj4gKik7CisKIFdF
QkNPUkVfRVhQT1JUIEBpbnRlcmZhY2UgV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZCA6IE5TT2Jq
ZWN0PEFic3RyYWN0UGFzdGVib2FyZD4KIAogKyAoaW5zdGFuY2V0eXBlKXNoYXJlZEluc3RhbmNl
OwpAQCAtNDcsNiArNDksOSBAQCBXRUJDT1JFX0VYUE9SVCBAaW50ZXJmYWNlIFdlYkl0ZW1Qcm92
aWRlclBhc3RlYm9hcmQgOiBOU09iamVjdDxBYnN0cmFjdFBhc3RlYm9hcgogCiAtICh2b2lkKWVu
dW1lcmF0ZUl0ZW1Qcm92aWRlcnNXaXRoQmxvY2s6KHZvaWQgKF4pKFVJSXRlbVByb3ZpZGVyICpp
dGVtUHJvdmlkZXIsIE5TVUludGVnZXIgaW5kZXgsIEJPT0wgKnN0b3ApKWJsb2NrOwogCisvLyBU
aGUgZ2l2ZW4gY29tcGxldGlvbiBibG9jayBpcyBhbHdheXMgZGlzcGF0Y2hlZCBvbiB0aGUgbWFp
biB0aHJlYWQuCistICh2b2lkKWRvQWZ0ZXJMb2FkaW5nUHJvdmlkZWRDb250ZW50SW50b0ZpbGVV
UkxzOihXZWJJdGVtUHJvdmlkZXJGaWxlTG9hZEJsb2NrKWFjdGlvbjsKKwogQGVuZAogCiBOU19B
U1NVTUVfTk9OTlVMTF9FTkQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQubW0KaW5kZXggMTk2ZTcyYWJhYmUxMDhkNGVh
YjY2NGViZTY0ZWI3MDBhZDNjMjgzZC4uMjA5ODc3NDY0NWVlZGJjNTRjNmQ3MDU3MWIwOTI5YTA4
MGY0MjFkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkl0ZW1Q
cm92aWRlclBhc3RlYm9hcmQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dl
Ykl0ZW1Qcm92aWRlclBhc3RlYm9hcmQubW0KQEAgLTM1LDYgKzM1LDkgQEAKICNpbXBvcnQgPFVJ
S2l0L1VJQ29sb3IuaD4KICNpbXBvcnQgPFVJS2l0L1VJSW1hZ2UuaD4KICNpbXBvcnQgPFVJS2l0
L1VJSXRlbVByb3ZpZGVyV3JpdGluZy5oPgorI2ltcG9ydCA8V2ViS2l0L1dlYk5TRmlsZU1hbmFn
ZXJFeHRyYXMuaD4KKyNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgorI2ltcG9ydCA8d3RmL09TT2Jq
ZWN0UHRyLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKIFNPRlRfTElOS19GUkFNRVdP
UksoVUlLaXQpCkBAIC0yNTEsNiArMjU0LDcxIEBAIC0gKE5TSW50ZWdlciljaGFuZ2VDb3VudAog
ICAgIHJldHVybiBfY2hhbmdlQ291bnQ7CiB9CiAKK3N0YXRpYyBOU1VSTCAqdGVtcG9yYXJ5Rmls
ZVVSTEZvckRhdGFJbnRlcmFjdGlvbkNvbnRlbnQoTlNTdHJpbmcgKmZpbGVFeHRlbnNpb24sIE5T
U3RyaW5nICpzdWdnZXN0ZWROYW1lKQoreworICAgIHN0YXRpYyBOU1N0cmluZyAqZGVmYXVsdERh
dGFJbnRlcmFjdGlvbkZpbGVOYW1lID0gQCJmaWxlIjsKKyAgICBzdGF0aWMgTlNTdHJpbmcgKmRh
dGFJbnRlcmFjdGlvbkRpcmVjdG9yeVByZWZpeCA9IEAiZGF0YS1pbnRlcmFjdGlvbiI7CisgICAg
aWYgKCFmaWxlRXh0ZW5zaW9uLmxlbmd0aCkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIE5T
U3RyaW5nICp0ZW1wb3JhcnlEYXRhSW50ZXJhY3Rpb25EaXJlY3RvcnkgPSBbW05TRmlsZU1hbmFn
ZXIgZGVmYXVsdE1hbmFnZXJdIF93ZWJraXRfY3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5V2l0aFRl
bXBsYXRlUHJlZml4OmRhdGFJbnRlcmFjdGlvbkRpcmVjdG9yeVByZWZpeF07CisgICAgaWYgKCF0
ZW1wb3JhcnlEYXRhSW50ZXJhY3Rpb25EaXJlY3RvcnkpCisgICAgICAgIHJldHVybiBuaWw7CisK
KyAgICBOU1N0cmluZyAqZmlsZW5hbWVXaXRoRXh0ZW5zaW9uID0gW3N1Z2dlc3RlZE5hbWUgPzog
ZGVmYXVsdERhdGFJbnRlcmFjdGlvbkZpbGVOYW1lIHN0cmluZ0J5QXBwZW5kaW5nUGF0aEV4dGVu
c2lvbjpmaWxlRXh0ZW5zaW9uXTsKKyAgICByZXR1cm4gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpb
dGVtcG9yYXJ5RGF0YUludGVyYWN0aW9uRGlyZWN0b3J5IHN0cmluZ0J5QXBwZW5kaW5nUGF0aENv
bXBvbmVudDpmaWxlbmFtZVdpdGhFeHRlbnNpb25dXTsKK30KKworLSAodm9pZClkb0FmdGVyTG9h
ZGluZ1Byb3ZpZGVkQ29udGVudEludG9GaWxlVVJMczooV2ViSXRlbVByb3ZpZGVyRmlsZUxvYWRC
bG9jaylhY3Rpb24KK3sKKyAgICBhdXRvIGl0ZW1Qcm92aWRlcnNXaXRoRmlsZXMgPSBhZG9wdE5T
KFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKKyAgICBhdXRvIGNvbnRlbnRUeXBlSWRl
bnRpZmllcnNUb0xvYWQgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsK
KyAgICBhdXRvIGxvYWRlZEZpbGVVUkxzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9j
XSBpbml0XSk7CisgICAgZm9yIChVSUl0ZW1Qcm92aWRlciAqaXRlbVByb3ZpZGVyIGluIF9pdGVt
UHJvdmlkZXJzLmdldCgpKSB7CisgICAgICAgIE5TU3RyaW5nICp0eXBlSWRlbnRpZmllck9mQ29u
dGVudFRvU2F2ZSA9IG5pbDsKKyAgICAgICAgZm9yIChOU1N0cmluZyAqaWRlbnRpZmllciBpbiBp
dGVtUHJvdmlkZXIucmVnaXN0ZXJlZFR5cGVJZGVudGlmaWVycykgeworICAgICAgICAgICAgaWYg
KCFVVFR5cGVDb25mb3Jtc1RvKChDRlN0cmluZ1JlZilpZGVudGlmaWVyLCBrVVRUeXBlQ29udGVu
dCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIHR5cGVJZGVudGlm
aWVyT2ZDb250ZW50VG9TYXZlID0gaWRlbnRpZmllcjsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisKKyAgICAgICAgaWYgKHR5cGVJZGVudGlmaWVyT2ZDb250ZW50VG9TYXZlKSB7Cisg
ICAgICAgICAgICBbaXRlbVByb3ZpZGVyc1dpdGhGaWxlcyBhZGRPYmplY3Q6aXRlbVByb3ZpZGVy
XTsKKyAgICAgICAgICAgIFtjb250ZW50VHlwZUlkZW50aWZpZXJzVG9Mb2FkIGFkZE9iamVjdDp0
eXBlSWRlbnRpZmllck9mQ29udGVudFRvU2F2ZV07CisgICAgICAgIH0KKyAgICB9CisKKyAgICBp
ZiAoIVtpdGVtUHJvdmlkZXJzV2l0aEZpbGVzIGNvdW50XSkgeworICAgICAgICBhY3Rpb24oQFsg
XSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGZpbGVMb2FkaW5nR3JvdXAg
PSBhZG9wdE9TT2JqZWN0KGRpc3BhdGNoX2dyb3VwX2NyZWF0ZSgpKTsKKyAgICBmb3IgKE5TVUlu
dGVnZXIgaW5kZXggPSAwOyBpbmRleCA8IFtpdGVtUHJvdmlkZXJzV2l0aEZpbGVzIGNvdW50XTsg
KytpbmRleCkgeworICAgICAgICBSZXRhaW5QdHI8VUlJdGVtUHJvdmlkZXI+IGl0ZW1Qcm92aWRl
ciA9IFtpdGVtUHJvdmlkZXJzV2l0aEZpbGVzIG9iamVjdEF0SW5kZXg6aW5kZXhdOworICAgICAg
ICBSZXRhaW5QdHI8TlNTdHJpbmc+IHR5cGVJZGVudGlmaWVyID0gW2NvbnRlbnRUeXBlSWRlbnRp
ZmllcnNUb0xvYWQgb2JqZWN0QXRJbmRleDppbmRleF07CisgICAgICAgIFJldGFpblB0cjxOU1N0
cmluZz4gc3VnZ2VzdGVkTmFtZSA9IFtpdGVtUHJvdmlkZXIgc3VnZ2VzdGVkTmFtZV07CisgICAg
ICAgIGRpc3BhdGNoX2dyb3VwX2VudGVyKGZpbGVMb2FkaW5nR3JvdXAuZ2V0KCkpOworICAgICAg
ICBkaXNwYXRjaF9ncm91cF9hc3luYyhmaWxlTG9hZGluZ0dyb3VwLmdldCgpLCBkaXNwYXRjaF9n
ZXRfbWFpbl9xdWV1ZSgpLCBbaXRlbVByb3ZpZGVyLCB0eXBlSWRlbnRpZmllciwgc3VnZ2VzdGVk
TmFtZSwgbG9hZGVkRmlsZVVSTHMsIGZpbGVMb2FkaW5nR3JvdXBdIHsKKyAgICAgICAgICAgIFtp
dGVtUHJvdmlkZXIgbG9hZEZpbGVSZXByZXNlbnRhdGlvbkZvclR5cGVJZGVudGlmaWVyOnR5cGVJ
ZGVudGlmaWVyLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOltzdWdnZXN0ZWROYW1lLCBsb2FkZWRG
aWxlVVJMcywgZmlsZUxvYWRpbmdHcm91cF0gKE5TVVJMICp1cmwsIE5TRXJyb3IgKmVycm9yKSB7
CisgICAgICAgICAgICAgICAgLy8gQWZ0ZXIgZXhlY3V0aW5nIHRoaXMgY29tcGxldGlvbiBibG9j
aywgVUlLaXQgcmVtb3ZlcyB0aGUgZmlsZSBhdCB0aGUgZ2l2ZW4gVVJMLiBIb3dldmVyLCB3ZSBu
ZWVkIHRoaXMgZGF0YSB0byBwZXJzaXN0IGxvbmdlciBmb3IgdGhlIHdlYiBjb250ZW50IHByb2Nl
c3MuCisgICAgICAgICAgICAgICAgLy8gVG8gYWRkcmVzcyB0aGlzLCB3ZSBoYXJkIGxpbmsgdGhl
IGdpdmVuIFVSTCB0byBhIG5ldyB0ZW1wb3JhcnkgZmlsZSBpbiB0aGUgdGVtcG9yYXJ5IGRpcmVj
dG9yeS4gVGhpcyBmb2xsb3dzIHRoZSBzYW1lIGZsb3cgYXMgcmVndWxhciBmaWxlIHVwbG9hZCwg
aW4KKyAgICAgICAgICAgICAgICAvLyBXS0ZpbGVVcGxvYWRQYW5lbC5tbS4gVGhlIHRlbXBvcmFy
eSBmaWxlcyBhcmUgY2xlYW5lZCB1cCBieSB0aGUgc3lzdGVtIGF0IGEgbGF0ZXIgdGltZS4KKyAg
ICAgICAgICAgICAgICBSZXRhaW5QdHI8TlNVUkw+IGRlc3RpbmF0aW9uVVJMID0gdGVtcG9yYXJ5
RmlsZVVSTEZvckRhdGFJbnRlcmFjdGlvbkNvbnRlbnQodXJsLnBhdGhFeHRlbnNpb24sIHN1Z2dl
c3RlZE5hbWUuZ2V0KCkpOworICAgICAgICAgICAgICAgIGlmIChkZXN0aW5hdGlvblVSTCAmJiAh
ZXJyb3IgJiYgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBsaW5rSXRlbUF0VVJMOnVy
bCB0b1VSTDpkZXN0aW5hdGlvblVSTC5nZXQoKSBlcnJvcjpuaWxdKQorICAgICAgICAgICAgICAg
ICAgICBbbG9hZGVkRmlsZVVSTHMgYWRkT2JqZWN0OmRlc3RpbmF0aW9uVVJMLmdldCgpXTsKKyAg
ICAgICAgICAgICAgICBkaXNwYXRjaF9ncm91cF9sZWF2ZShmaWxlTG9hZGluZ0dyb3VwLmdldCgp
KTsKKyAgICAgICAgICAgIH1dOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBkaXNwYXRjaF9n
cm91cF9ub3RpZnkoZmlsZUxvYWRpbmdHcm91cC5nZXQoKSwgZGlzcGF0Y2hfZ2V0X21haW5fcXVl
dWUoKSwgW2ZpbGVMb2FkaW5nR3JvdXAsIGxvYWRlZEZpbGVVUkxzLCBjb21wbGV0aW9uQmxvY2sg
PSBtYWtlQmxvY2tQdHIoYWN0aW9uKV0geworICAgICAgICBjb21wbGV0aW9uQmxvY2sobG9hZGVk
RmlsZVVSTHMuZ2V0KCkpOworICAgIH0pOworfQorCiAtIChVSUl0ZW1Qcm92aWRlciAqKWl0ZW1Q
cm92aWRlckF0SW5kZXg6KE5TSW50ZWdlcilpbmRleAogewogICAgIHJldHVybiAwIDw9IGluZGV4
ICYmIGluZGV4IDwgKE5TSW50ZWdlcilbX2l0ZW1Qcm92aWRlcnMgY291bnRdID8gW19pdGVtUHJv
dmlkZXJzIG9iamVjdEF0SW5kZXg6aW5kZXhdIDogbmlsOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>