<?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>87234</bug_id>
          
          <creation_ts>2012-05-23 01:56:31 -0700</creation_ts>
          <short_desc>Cleanup: introduce toFile() to reduce static cast from Blob to File</short_desc>
          <delta_ts>2012-05-24 11:07:43 -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>WebCore Misc.</component>
          <version>528+ (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="Kinuko Yasuda">kinuko</reporter>
          <assigned_to name="Kinuko Yasuda">kinuko</assigned_to>
          <cc>abarth</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>631399</commentid>
    <comment_count>0</comment_count>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2012-05-23 01:56:31 -0700</bug_when>
    <thetext>Cleanup: introduce Blob::asFile() to reduce static casting from Blob to File for better readability.
This must be a purely mechanical change which has no side effect.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>631403</commentid>
    <comment_count>1</comment_count>
      <attachid>143504</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2012-05-23 01:59:06 -0700</bug_when>
    <thetext>Created attachment 143504
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>631539</commentid>
    <comment_count>2</comment_count>
      <attachid>143504</attachid>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2012-05-23 05:26:34 -0700</bug_when>
    <thetext>Comment on attachment 143504
Patch

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

I&apos;m not a reviewer, but this patch looks good to me. I have a small suggestion.

&gt; Source/WebKit/chromium/src/WebDragData.cpp:89
&gt; +                if (blob-&gt;asFile()) {
&gt; +                    const File* file = blob-&gt;asFile();

Minor suggestion: here you could use &quot;if (const File* file = blob-&gt;asFile())&quot; instead of writing blob-&gt;asFile() twice.

There are other places in the patch where you declare/initialize outside the if-statement but it could be done in the condition too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>631595</commentid>
    <comment_count>3</comment_count>
      <attachid>143556</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2012-05-23 06:26:51 -0700</bug_when>
    <thetext>Created attachment 143556
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>631596</commentid>
    <comment_count>4</comment_count>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2012-05-23 06:28:17 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 143504 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=143504&amp;action=review
&gt; 
&gt; I&apos;m not a reviewer, but this patch looks good to me. I have a small suggestion.
&gt; 
&gt; &gt; Source/WebKit/chromium/src/WebDragData.cpp:89
&gt; &gt; +                if (blob-&gt;asFile()) {
&gt; &gt; +                    const File* file = blob-&gt;asFile();
&gt; 
&gt; Minor suggestion: here you could use &quot;if (const File* file = blob-&gt;asFile())&quot; instead of writing blob-&gt;asFile() twice.
&gt; 
&gt; There are other places in the patch where you declare/initialize outside the if-statement but it could be done in the condition too.

Looks neat, I converted some conditions to look like that. Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>632099</commentid>
    <comment_count>5</comment_count>
      <attachid>143556</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-05-23 15:06:27 -0700</bug_when>
    <thetext>Comment on attachment 143556
Patch

This is not quite the pattern used elsewhere in WebCore. Compare to:

inline Element* toElement(Node* node)
{
    ASSERT(!node || node-&gt;isElementNode());
    return static_cast&lt;Element*&gt;(node);
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>632143</commentid>
    <comment_count>6</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-05-23 16:04:30 -0700</bug_when>
    <thetext>&gt; This is not quite the pattern used elsewhere in WebCore. Compare to:

We use both patterns.  It&apos;s a trade-off between performance and avoiding bugs.  (I&apos;m not familiar enough with where all this function is/will be used to comment on which approach is better here.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>632663</commentid>
    <comment_count>7</comment_count>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2012-05-24 05:36:59 -0700</bug_when>
    <thetext>Having the second look at the change, I felt that keeping an explicit isFile() boolean method and having a separate toFile() might be better, we need two more tiny methods than asFile() approach.  I&apos;m happy if I can get rid of static-cast&apos;s to make it easier to modify this code, so I&apos;d simply take toFile() approach.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>632665</commentid>
    <comment_count>8</comment_count>
      <attachid>143797</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2012-05-24 05:37:23 -0700</bug_when>
    <thetext>Created attachment 143797
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>632871</commentid>
    <comment_count>9</comment_count>
      <attachid>143797</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-05-24 09:28:11 -0700</bug_when>
    <thetext>Comment on attachment 143797
Patch

LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>632955</commentid>
    <comment_count>10</comment_count>
      <attachid>143797</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-24 11:07:38 -0700</bug_when>
    <thetext>Comment on attachment 143797
Patch

Clearing flags on attachment: 143797

Committed r118394: &lt;http://trac.webkit.org/changeset/118394&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>632956</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-24 11:07:43 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>143504</attachid>
            <date>2012-05-23 01:59:06 -0700</date>
            <delta_ts>2012-05-23 06:26:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-87234-20120523175904.patch</filename>
            <type>text/plain</type>
            <size>15338</size>
            <attacher name="Kinuko Yasuda">kinuko</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE4MTMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2IwZWUxY2Q4ZWIxMzVk
NzJiMTc0N2ExZmI3OWE4MzE3NGQ5YjFjNy4uNDFiZTA0NmNiYzgzZDVkN2QxZGFiZDI3YzhkYjg3
YTlkOWRjNDQ1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDEyLTA1LTIzICBLaW51
a28gWWFzdWRhICA8a2ludWtvQGNocm9taXVtLm9yZz4KKworICAgICAgICBDbGVhbnVwOiBpbnRy
b2R1Y2UgQmxvYjo6YXNGaWxlKCkgdG8gcmVkdWNlIHN0YXRpYyBjYXN0CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NzIzNAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBhcyB0aGlzIG11
c3QgaGF2ZSBubyBzaWRlIGVmZmVjdC4KKworICAgICAgICAqIE1vZHVsZXMvZmlsZXN5c3RlbS9j
aHJvbWl1bS9EYXRhVHJhbnNmZXJJdGVtRmlsZVN5c3RlbUNocm9taXVtLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRhdGFUcmFuc2Zlckl0ZW1GaWxlU3lzdGVtOjp3ZWJraXRHZXRBc0VudHJ5KToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0Jsb2JDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6dG9KUyk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4QmxvYkN1c3RvbS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjp0b1Y4KToKKyAgICAgICAgKiBmaWxlYXBpL0Jsb2IuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QmxvYjo6d2Via2l0U2xpY2UpOgorICAgICAgICAqIGZpbGVhcGkv
QmxvYi5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpCbG9iOjphc0Zp
bGUpOiBBZGRlZC4KKyAgICAgICAgKEJsb2IpOgorICAgICAgICAqIGZpbGVhcGkvRmlsZS5oOgor
ICAgICAgICAoV2ViQ29yZTo6RmlsZTo6YXNGaWxlKTogQWRkZWQuCisgICAgICAgICogZmlsZWFw
aS9GaWxlUmVhZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVSZWFkZXI6OnJlYWRBc0Fy
cmF5QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVSZWFkZXI6OnJlYWRBc0JpbmFyeVN0
cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlUmVhZGVyOjpyZWFkQXNUZXh0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkZpbGVSZWFkZXI6OnJlYWRBc0RhdGFVUkwpOgorICAgICAgICAqIGZpbGVh
cGkvV2ViS2l0QmxvYkJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QmxvYkJ1
aWxkZXI6OmFwcGVuZCk6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJkQ2hy
b21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkQ2hyb21pdW06OmZpbGVzKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZvcm1EYXRhOjphcHBlbmRLZXlWYWx1ZVBhaXJJdGVtcyk6CisgICAgICAgICogeG1sL1hN
TEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpzZW5k
KToKKwogMjAxMi0wNS0yMiAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KIAog
ICAgICAgICBbUmVmYWN0b3JpbmddIEVsZW1lbnRTaGFkb3c6Om1fbmVlZHNSZWRpc3RyaWJ1dGlu
ZyAgc2hvdWxkIGJlIG9uIENvbnRlbnREaXN0cmlidXRvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZwppbmRleCBmNTlmODQ3YTYxNWY0NTQ3ODIzYzVhOGFhNWEwNGM3MjVlOGYyMDJiLi5kZjc0MmQ4
NjQyNTNkYjBhODA5YjBkMGI3Yzk2MTQ4N2JhMDcxYzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEyLTA1LTIzICBLaW51a28gWWFzdWRhICA8a2ludWtv
QGNocm9taXVtLm9yZz4KKworICAgICAgICBDbGVhbnVwOiBpbnRyb2R1Y2UgQmxvYjo6YXNGaWxl
KCkgdG8gcmVkdWNlIHN0YXRpYyBjYXN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD04NzIzNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogc3JjL1dlYkRyYWdEYXRhLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViRHJhZ0RhdGE6Oml0ZW1zKToKKwogMjAxMi0wNS0yMiAgQWxleGFuZHJlIEVsaWFzICA8YWVs
aWFzQGdvb2dsZS5jb20+CiAKICAgICAgICAgW2Nocm9taXVtXSBBcHBseSB2aWV3cG9ydCB0YWcg
aW5pdGlhbC1zY2FsZSBvbmx5IG9uY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmlsZXN5c3RlbS9jaHJvbWl1bS9EYXRhVHJhbnNmZXJJdGVtRmlsZVN5c3RlbUNocm9taXVt
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9jaHJvbWl1bS9EYXRhVHJh
bnNmZXJJdGVtRmlsZVN5c3RlbUNocm9taXVtLmNwcAppbmRleCBhNmJiM2NkZjk1YzM2YmQ2MjA2
ZTY2Yjk3YWQwYjY1YzczZjM1NzA1Li4yNTUzYjU2NjIyODRjMDE2Mzg1YTQzM2JkMzU5MmE2NTE2
MjFmNDcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vY2hy
b21pdW0vRGF0YVRyYW5zZmVySXRlbUZpbGVTeXN0ZW1DaHJvbWl1bS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL2Nocm9taXVtL0RhdGFUcmFuc2Zlckl0ZW1GaWxl
U3lzdGVtQ2hyb21pdW0uY3BwCkBAIC0xMDYsNyArMTA2LDcgQEAgdm9pZCBEYXRhVHJhbnNmZXJJ
dGVtRmlsZVN5c3RlbTo6d2Via2l0R2V0QXNFbnRyeShEYXRhVHJhbnNmZXJJdGVtKiBpdGVtLCBT
Y3JpcHQKICAgICAvLyBUaGUgY2xpcGJvYXJkIG1heSBub3QgYmUgaW4gYSByZWFkYWJsZSBzdGF0
ZS4KICAgICBpZiAoIWZpbGUpCiAgICAgICAgIHJldHVybjsKLSAgICBBU1NFUlQoZmlsZS0+aXNG
aWxlKCkpOworICAgIEFTU0VSVChmaWxlLT5hc0ZpbGUoKSk7CiAKICAgICBEcmFnZ2VkSXNvbGF0
ZWRGaWxlU3lzdGVtKiBmaWxlc3lzdGVtID0gRHJhZ2dlZElzb2xhdGVkRmlsZVN5c3RlbTo6ZnJv
bShpdGVtUG9saWN5V3JhcHBlci0+Y2xpcGJvYXJkKCktPmRhdGFPYmplY3QoKS5nZXQoKSk7CiAg
ICAgRE9NRmlsZVN5c3RlbSogZG9tRmlsZVN5c3RlbSA9IGZpbGVzeXN0ZW0gPyBmaWxlc3lzdGVt
LT5nZXRET01GaWxlU3lzdGVtKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpIDogMDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmxvYkN1c3RvbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Jsb2JDdXN0b20uY3BwCmluZGV4IDMzOTJmM2NlNmM3Yjhj
YzBhNjI0OWViMGU4ZmI2OTNmZjFlOGZjY2EuLmE2ZGI5OTQ2MTE1ZjFhOWE5MTQxN2NlYTQ1Yjk2
ZTQ3NzZiZTcyODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmxv
YkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCbG9iQ3VzdG9t
LmNwcApAQCAtNTIsNyArNTIsNyBAQCBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBleGVjLCBKU0RP
TUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBCbG9iKiBibG9iKQogICAgIGlmICghYmxvYikK
ICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwogCi0gICAgaWYgKGJsb2ItPmlzRmlsZSgpKQorICAg
IGlmIChibG9iLT5hc0ZpbGUoKSkKICAgICAgICAgcmV0dXJuIENSRUFURV9ET01fV1JBUFBFUihl
eGVjLCBnbG9iYWxPYmplY3QsIEZpbGUsIGJsb2IpOwogCiAgICAgcmV0dXJuIENSRUFURV9ET01f
V1JBUFBFUihleGVjLCBnbG9iYWxPYmplY3QsIEJsb2IsIGJsb2IpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QmxvYkN1c3RvbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhCbG9iQ3VzdG9tLmNwcAppbmRleCBhZTA3MmRh
MWNkNjgwMTRiYjEyNTlmZmU3NTgxNTBiNTUyMWY2NDYzLi4yZDhkNjAzNjQ4M2MxZTQxMjJkMzNj
ODg4MmRmYTRjOWJkOGJhYzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhCbG9iQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhCbG9iQ3VzdG9tLmNwcApAQCAtNDksNyArNDksNyBAQCB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gdG9WOChCbG9iKiBpbXBsLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKICAgICBpZiAo
IWltcGwpCiAgICAgICAgIHJldHVybiB2ODo6TnVsbCgpOwogCi0gICAgaWYgKGltcGwtPmlzRmls
ZSgpKQorICAgIGlmIChpbXBsLT5hc0ZpbGUoKSkKICAgICAgICAgcmV0dXJuIHRvVjgoc3RhdGlj
X2Nhc3Q8RmlsZSo+KGltcGwpLCBpc29sYXRlKTsKIAogICAgIHJldHVybiBWOEJsb2I6OndyYXAo
aW1wbCwgaXNvbGF0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2Iu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmNwcAppbmRleCAxOTdhMjYxOGZkYTMx
OGIwNjNlYzNiYjI3MWM2NGZiNWQ3MzQ1YmU2Li43NTBiOGNmYzZhYmMzMjBlOWZjZjJkMzU3MmUz
OGMwZjRiZDQwMzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5jcHAKQEAgLTc5LDEwICs3OSwxMSBA
QCBQYXNzUmVmUHRyPEJsb2I+IEJsb2I6OndlYmtpdFNsaWNlKGxvbmcgbG9uZyBzdGFydCwgbG9u
ZyBsb25nIGVuZCwgY29uc3QgU3RyaW5nJgogICAgIC8vIFRoZSBtb2RpZmljYXRpb24gdGltZSB3
aWxsIGJlIHVzZWQgdG8gdmVyaWZ5IGlmIHRoZSBmaWxlIGhhcyBiZWVuIGNoYW5nZWQgb3Igbm90
LCB3aGVuIHRoZSB1bmRlcmx5aW5nIGRhdGEgYXJlIGFjY2Vzc2VkLgogICAgIGxvbmcgbG9uZyBz
aXplOwogICAgIGRvdWJsZSBtb2RpZmljYXRpb25UaW1lOwotICAgIGlmIChpc0ZpbGUoKSkKKyAg
ICBjb25zdCBGaWxlKiBmaWxlID0gYXNGaWxlKCk7CisgICAgaWYgKGZpbGUpIHsKICAgICAgICAg
Ly8gRklYTUU6IFRoaXMgaW52b2x2ZXMgc3luY2hyb25vdXMgZmlsZSBvcGVyYXRpb24uIFdlIG5l
ZWQgdG8gZmlndXJlIG91dCBob3cgdG8gbWFrZSBpdCBhc3luY2hyb25vdXMuCi0gICAgICAgIHN0
YXRpY19jYXN0PGNvbnN0IEZpbGUqPih0aGlzKS0+Y2FwdHVyZVNuYXBzaG90KHNpemUsIG1vZGlm
aWNhdGlvblRpbWUpOwotICAgIGVsc2UgeworICAgICAgICBmaWxlLT5jYXB0dXJlU25hcHNob3Qo
c2l6ZSwgbW9kaWZpY2F0aW9uVGltZSk7CisgICAgfSBlbHNlIHsKICAgICAgICAgQVNTRVJUKG1f
c2l6ZSAhPSAtMSk7CiAgICAgICAgIHNpemUgPSBtX3NpemU7CiAgICAgfQpAQCAtMTA5LDggKzEx
MCw4IEBAIFBhc3NSZWZQdHI8QmxvYj4gQmxvYjo6d2Via2l0U2xpY2UobG9uZyBsb25nIHN0YXJ0
LCBsb25nIGxvbmcgZW5kLCBjb25zdCBTdHJpbmcmCiAgICAgbG9uZyBsb25nIGxlbmd0aCA9IGVu
ZCAtIHN0YXJ0OwogICAgIE93blB0cjxCbG9iRGF0YT4gYmxvYkRhdGEgPSBCbG9iRGF0YTo6Y3Jl
YXRlKCk7CiAgICAgYmxvYkRhdGEtPnNldENvbnRlbnRUeXBlKGNvbnRlbnRUeXBlKTsKLSAgICBp
ZiAoaXNGaWxlKCkpCi0gICAgICAgIGJsb2JEYXRhLT5hcHBlbmRGaWxlKHN0YXRpY19jYXN0PGNv
bnN0IEZpbGUqPih0aGlzKS0+cGF0aCgpLCBzdGFydCwgbGVuZ3RoLCBtb2RpZmljYXRpb25UaW1l
KTsKKyAgICBpZiAoZmlsZSkKKyAgICAgICAgYmxvYkRhdGEtPmFwcGVuZEZpbGUoZmlsZS0+cGF0
aCgpLCBzdGFydCwgbGVuZ3RoLCBtb2RpZmljYXRpb25UaW1lKTsKICAgICBlbHNlCiAgICAgICAg
IGJsb2JEYXRhLT5hcHBlbmRCbG9iKG1faW50ZXJuYWxVUkwsIHN0YXJ0LCBsZW5ndGgpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaCBiL1NvdXJjZS9XZWJDb3Jl
L2ZpbGVhcGkvQmxvYi5oCmluZGV4IGY1ZjE4NTJmOGQ1Mjc0YmM0YzcwYWFkMTc5MTk5ZGU2NDgy
ZjI3NzAuLjEzNjgzMjU0YTg0MzU4YTcyNmM5ZDk4NzA3NDc0ZjYzYmEzN2MyMGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvQmxvYi5oCkBAIC00MSw2ICs0MSw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAor
Y2xhc3MgRmlsZTsKKwogY2xhc3MgQmxvYiA6IHB1YmxpYyBSZWZDb3VudGVkPEJsb2I+IHsKIHB1
YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxCbG9iPiBjcmVhdGUoKQpAQCAtNjUsNyArNjcs
NyBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90
eXBlOyB9CiAKICAgICB2aXJ0dWFsIHVuc2lnbmVkIGxvbmcgbG9uZyBzaXplKCkgY29uc3QgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihtX3NpemUpOyB9Ci0gICAgdmly
dHVhbCBib29sIGlzRmlsZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBj
b25zdCBGaWxlKiBhc0ZpbGUoKSBjb25zdCB7IHJldHVybiAwOyB9CiAKICNpZiBFTkFCTEUoQkxP
QikKICAgICBQYXNzUmVmUHRyPEJsb2I+IHdlYmtpdFNsaWNlKGxvbmcgbG9uZyBzdGFydCA9IDAs
IGxvbmcgbG9uZyBlbmQgPSBzdGQ6Om51bWVyaWNfbGltaXRzPGxvbmcgbG9uZz46Om1heCgpLCBj
b25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlID0gU3RyaW5nKCkpIGNvbnN0OwpAQCAtODIsNyArODQs
NyBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gYXMgYW4gaWRlbnRpZmllciBmb3IgdGhpcyBibG9iLiBU
aGUgaW50ZXJuYWwgVVJMIGlzIG5ldmVyIHVzZWQgdG8gc291cmNlIHRoZSBibG9iJ3MgY29udGVu
dAogICAgIC8vIGludG8gYW4gSFRNTCBvciBmb3IgRmlsZVJlYWQnaW5nLCBwdWJsaWMgYmxvYiBV
UkxzIG11c3QgYmUgdXNlZCBmb3IgdGhvc2UgcHVycG9zZXMuCiAgICAgS1VSTCBtX2ludGVybmFs
VVJMOwotICAgIAorCiAgICAgU3RyaW5nIG1fdHlwZTsKICAgICBsb25nIGxvbmcgbV9zaXplOwog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5oIGIvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9GaWxlLmgKaW5kZXggNjMzMWEyZDQ5OTc2NzJiNmZmMWI0ZDY2NmVhZjQ3
ZGM1MDk5NWQwMy4uOTVhODY5ZTk5ZjA0OWU4MWQxNDRjNGZlYmQ2ZjUwMDFkNWJiOGIzMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9GaWxlLmgKQEAgLTcyLDcgKzcyLDcgQEAgcHVibGljOgogICAgIH0KIAogICAg
IHZpcnR1YWwgdW5zaWduZWQgbG9uZyBsb25nIHNpemUoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJv
b2wgaXNGaWxlKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgY29uc3QgRmls
ZSogYXNGaWxlKCkgY29uc3QgeyByZXR1cm4gdGhpczsgfQogCiAgICAgY29uc3QgU3RyaW5nJiBw
YXRoKCkgY29uc3QgeyByZXR1cm4gbV9wYXRoOyB9CiAgICAgY29uc3QgU3RyaW5nJiBuYW1lKCkg
Y29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxl
YXBpL0ZpbGVSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmNw
cAppbmRleCAwN2M0YjY3NDYxMTExNjFlZmYyOTk1OWFiMWQyZmJkYzFjMDEzMTJmLi40ZGJjZTdk
ZmI3ZDcyYjJkMmQ2OGNlNzEzYjRhYWYzYzNkZDZmMDFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL0ZpbGVSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkv
RmlsZVJlYWRlci5jcHAKQEAgLTk1LDcgKzk1LDcgQEAgdm9pZCBGaWxlUmVhZGVyOjpyZWFkQXNB
cnJheUJ1ZmZlcihCbG9iKiBibG9iLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICBpZiAoIWJsb2Ip
CiAgICAgICAgIHJldHVybjsKIAotICAgIExPRyhGaWxlQVBJLCAiRmlsZVJlYWRlcjogcmVhZGlu
ZyBhcyBhcnJheSBidWZmZXI6ICVzICVzXG4iLCBibG9iLT51cmwoKS5zdHJpbmcoKS51dGY4KCku
ZGF0YSgpLCBibG9iLT5pc0ZpbGUoKSA/IHN0YXRpY19jYXN0PEZpbGUqPihibG9iKS0+cGF0aCgp
LnV0ZjgoKS5kYXRhKCkgOiAiIik7CisgICAgTE9HKEZpbGVBUEksICJGaWxlUmVhZGVyOiByZWFk
aW5nIGFzIGFycmF5IGJ1ZmZlcjogJXMgJXNcbiIsIGJsb2ItPnVybCgpLnN0cmluZygpLnV0Zjgo
KS5kYXRhKCksIGJsb2ItPmFzRmlsZSgpID8gYmxvYi0+YXNGaWxlKCktPnBhdGgoKS51dGY4KCku
ZGF0YSgpIDogIiIpOwogCiAgICAgcmVhZEludGVybmFsKGJsb2IsIEZpbGVSZWFkZXJMb2FkZXI6
OlJlYWRBc0FycmF5QnVmZmVyLCBlYyk7CiB9CkBAIC0xMDUsNyArMTA1LDcgQEAgdm9pZCBGaWxl
UmVhZGVyOjpyZWFkQXNCaW5hcnlTdHJpbmcoQmxvYiogYmxvYiwgRXhjZXB0aW9uQ29kZSYgZWMp
CiAgICAgaWYgKCFibG9iKQogICAgICAgICByZXR1cm47CiAKLSAgICBMT0coRmlsZUFQSSwgIkZp
bGVSZWFkZXI6IHJlYWRpbmcgYXMgYmluYXJ5OiAlcyAlc1xuIiwgYmxvYi0+dXJsKCkuc3RyaW5n
KCkudXRmOCgpLmRhdGEoKSwgYmxvYi0+aXNGaWxlKCkgPyBzdGF0aWNfY2FzdDxGaWxlKj4oYmxv
YiktPnBhdGgoKS51dGY4KCkuZGF0YSgpIDogIiIpOworICAgIExPRyhGaWxlQVBJLCAiRmlsZVJl
YWRlcjogcmVhZGluZyBhcyBiaW5hcnk6ICVzICVzXG4iLCBibG9iLT51cmwoKS5zdHJpbmcoKS51
dGY4KCkuZGF0YSgpLCBibG9iLT5hc0ZpbGUoKSA/IGJsb2ItPmFzRmlsZSgpLT5wYXRoKCkudXRm
OCgpLmRhdGEoKSA6ICIiKTsKIAogICAgIHJlYWRJbnRlcm5hbChibG9iLCBGaWxlUmVhZGVyTG9h
ZGVyOjpSZWFkQXNCaW5hcnlTdHJpbmcsIGVjKTsKIH0KQEAgLTExNSw3ICsxMTUsNyBAQCB2b2lk
IEZpbGVSZWFkZXI6OnJlYWRBc1RleHQoQmxvYiogYmxvYiwgY29uc3QgU3RyaW5nJiBlbmNvZGlu
ZywgRXhjZXB0aW9uQ29kZSYgZQogICAgIGlmICghYmxvYikKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgTE9HKEZpbGVBUEksICJGaWxlUmVhZGVyOiByZWFkaW5nIGFzIHRleHQ6ICVzICVzXG4iLCBi
bG9iLT51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBibG9iLT5pc0ZpbGUoKSA/IHN0YXRp
Y19jYXN0PEZpbGUqPihibG9iKS0+cGF0aCgpLnV0ZjgoKS5kYXRhKCkgOiAiIik7CisgICAgTE9H
KEZpbGVBUEksICJGaWxlUmVhZGVyOiByZWFkaW5nIGFzIHRleHQ6ICVzICVzXG4iLCBibG9iLT51
cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBibG9iLT5hc0ZpbGUoKSA/IGJsb2ItPmFzRmls
ZSgpLT5wYXRoKCkudXRmOCgpLmRhdGEoKSA6ICIiKTsKIAogICAgIG1fZW5jb2RpbmcgPSBlbmNv
ZGluZzsKICAgICByZWFkSW50ZXJuYWwoYmxvYiwgRmlsZVJlYWRlckxvYWRlcjo6UmVhZEFzVGV4
dCwgZWMpOwpAQCAtMTMxLDcgKzEzMSw3IEBAIHZvaWQgRmlsZVJlYWRlcjo6cmVhZEFzRGF0YVVS
TChCbG9iKiBibG9iLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICBpZiAoIWJsb2IpCiAgICAgICAg
IHJldHVybjsKIAotICAgIExPRyhGaWxlQVBJLCAiRmlsZVJlYWRlcjogcmVhZGluZyBhcyBkYXRh
IFVSTDogJXMgJXNcbiIsIGJsb2ItPnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIGJsb2It
PmlzRmlsZSgpID8gc3RhdGljX2Nhc3Q8RmlsZSo+KGJsb2IpLT5wYXRoKCkudXRmOCgpLmRhdGEo
KSA6ICIiKTsKKyAgICBMT0coRmlsZUFQSSwgIkZpbGVSZWFkZXI6IHJlYWRpbmcgYXMgZGF0YSBV
Ukw6ICVzICVzXG4iLCBibG9iLT51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBibG9iLT5h
c0ZpbGUoKSA/IGJsb2ItPmFzRmlsZSgpLT5wYXRoKCkudXRmOCgpLmRhdGEoKSA6ICIiKTsKIAog
ICAgIHJlYWRJbnRlcm5hbChibG9iLCBGaWxlUmVhZGVyTG9hZGVyOjpSZWFkQXNEYXRhVVJMLCBl
Yyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1dlYktpdEJsb2JCdWls
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvV2ViS2l0QmxvYkJ1aWxkZXIuY3BwCmlu
ZGV4IGE4MTBhZDhmNTQyZDE5ZjE2YzUzY2ExNzdkZDMwZDU1NjFmMWUxOTYuLjdmM2U2MTI2MjBl
Y2EyOGU0ZTJjZWY0ODBhYzE4MDk2NGExOWU2ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2ZpbGVhcGkvV2ViS2l0QmxvYkJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvV2ViS2l0QmxvYkJ1aWxkZXIuY3BwCkBAIC0xMDEsMTAgKzEwMSwxMCBAQCB2b2lkIFdlYktp
dEJsb2JCdWlsZGVyOjphcHBlbmQoQmxvYiogYmxvYikKIHsKICAgICBpZiAoIWJsb2IpCiAgICAg
ICAgIHJldHVybjsKLSAgICBpZiAoYmxvYi0+aXNGaWxlKCkpIHsKKyAgICBjb25zdCBGaWxlKiBm
aWxlID0gYmxvYi0+YXNGaWxlKCk7CisgICAgaWYgKGZpbGUpIHsKICAgICAgICAgLy8gSWYgdGhl
IGJsb2IgaXMgZmlsZSB0aGF0IGlzIG5vdCBzbmFwc2hvdGVkLCBjYXB0dXJlIHRoZSBzbmFwc2hv
dCBub3cuCiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGludm9sdmVzIHN5bmNocm9ub3VzIGZpbGUg
b3BlcmF0aW9uLiBXZSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRvIG1ha2UgaXQgYXN5bmNocm9u
b3VzLgotICAgICAgICBGaWxlKiBmaWxlID0gc3RhdGljX2Nhc3Q8RmlsZSo+KGJsb2IpOwogICAg
ICAgICBsb25nIGxvbmcgc25hcHNob3RTaXplOwogICAgICAgICBkb3VibGUgc25hcHNob3RNb2Rp
ZmljYXRpb25UaW1lOwogICAgICAgICBmaWxlLT5jYXB0dXJlU25hcHNob3Qoc25hcHNob3RTaXpl
LCBzbmFwc2hvdE1vZGlmaWNhdGlvblRpbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJkQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJkQ2hyb21pdW0uY3BwCmluZGV4IDI1ZTg5YzMxZTVi
M2Q4M2UyYjdmMGViZDQyMGEwZTE1MDM4YmVmNjAuLjNmMjkwYTgyMDQ0MGQyMjYwMjBmYTc0YTQ5
MThjMzczMjdhMmVhMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9t
aXVtL0NsaXBib2FyZENocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
aHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5jcHAKQEAgLTMxMiw3ICszMTIsNyBAQCBQYXNzUmVm
UHRyPEZpbGVMaXN0PiBDbGlwYm9hcmRDaHJvbWl1bTo6ZmlsZXMoKSBjb25zdAogICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbV9kYXRhT2JqZWN0LT5sZW5ndGgoKTsgKytpKSB7CiAgICAgICAg
IGlmIChtX2RhdGFPYmplY3QtPml0ZW0oaSktPmtpbmQoKSA9PSBEYXRhVHJhbnNmZXJJdGVtOjpr
aW5kRmlsZSkgewogICAgICAgICAgICAgUmVmUHRyPEJsb2I+IGJsb2IgPSBtX2RhdGFPYmplY3Qt
Pml0ZW0oaSktPmdldEFzRmlsZSgpOwotICAgICAgICAgICAgaWYgKGJsb2IgJiYgYmxvYi0+aXNG
aWxlKCkpCisgICAgICAgICAgICBpZiAoYmxvYiAmJiBibG9iLT5hc0ZpbGUoKSkKICAgICAgICAg
ICAgICAgICBmaWxlcy0+YXBwZW5kKHN0YXRpY19jYXN0PEZpbGUqPihibG9iLmdldCgpKSk7CiAg
ICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0Zvcm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURh
dGEuY3BwCmluZGV4IGY1ODE3NDYyMTk4MjY0NmI2ZWJmZjRkODgxNjgwMmM0MjEzMjgxMTkuLjM1
YWMwYjFlYTgyZTQ0ODI4MWQzZGMxNGY1NjY3NDk5MWNkNjAzNDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCkBAIC0yMDQsOSArMjA0LDkgQEAgdm9p
ZCBGb3JtRGF0YTo6YXBwZW5kS2V5VmFsdWVQYWlySXRlbXMoY29uc3QgRm9ybURhdGFMaXN0JiBs
aXN0LCBjb25zdCBUZXh0RW5jb2QKICAgICAgICAgICAgIC8vIElmIHRoZSBjdXJyZW50IHR5cGUg
aXMgYmxvYiwgdGhlbiB3ZSBhbHNvIG5lZWQgdG8gaW5jbHVkZSB0aGUgZmlsZW5hbWUKICAgICAg
ICAgICAgIGlmICh2YWx1ZS5ibG9iKCkpIHsKICAgICAgICAgICAgICAgICBTdHJpbmcgbmFtZTsK
LSAgICAgICAgICAgICAgICBpZiAodmFsdWUuYmxvYigpLT5pc0ZpbGUoKSkgeworICAgICAgICAg
ICAgICAgIGNvbnN0IEZpbGUqIGZpbGUgPSB2YWx1ZS5ibG9iKCktPmFzRmlsZSgpOworICAgICAg
ICAgICAgICAgIGlmIChmaWxlKSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIEZvciBmaWxlIGJs
b2IsIHVzZSB0aGUgZmlsZW5hbWUgKG9yIHJlbGF0aXZlIHBhdGggaWYgaXQgaXMgcHJlc2VudCkg
YXMgdGhlIG5hbWUuCi0gICAgICAgICAgICAgICAgICAgIEZpbGUqIGZpbGUgPSBzdGF0aWNfY2Fz
dDxGaWxlKj4odmFsdWUuYmxvYigpKTsKICNpZiBFTkFCTEUoRElSRUNUT1JZX1VQTE9BRCkgICAg
ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIG5hbWUgPSBmaWxlLT53ZWJraXRSZWxh
dGl2ZVBhdGgoKS5pc0VtcHR5KCkgPyBmaWxlLT5uYW1lKCkgOiBmaWxlLT53ZWJraXRSZWxhdGl2
ZVBhdGgoKTsKICNlbHNlCkBAIC0yNDcsMTAgKzI0NywxMSBAQCB2b2lkIEZvcm1EYXRhOjphcHBl
bmRLZXlWYWx1ZVBhaXJJdGVtcyhjb25zdCBGb3JtRGF0YUxpc3QmIGxpc3QsIGNvbnN0IFRleHRF
bmNvZAogICAgICAgICAgICAgLy8gQXBwZW5kIGJvZHkKICAgICAgICAgICAgIGFwcGVuZERhdGEo
aGVhZGVyLmRhdGEoKSwgaGVhZGVyLnNpemUoKSk7CiAgICAgICAgICAgICBpZiAodmFsdWUuYmxv
YigpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHZhbHVlLmJsb2IoKS0+aXNGaWxlKCkpIHsKKyAg
ICAgICAgICAgICAgICBjb25zdCBGaWxlKiBmaWxlID0gdmFsdWUuYmxvYigpLT5hc0ZpbGUoKTsK
KyAgICAgICAgICAgICAgICBpZiAoZmlsZSkgewogICAgICAgICAgICAgICAgICAgICAvLyBEbyBu
b3QgYWRkIHRoZSBmaWxlIGlmIHRoZSBwYXRoIGlzIGVtcHR5LgotICAgICAgICAgICAgICAgICAg
ICBpZiAoIXN0YXRpY19jYXN0PEZpbGUqPih2YWx1ZS5ibG9iKCkpLT5wYXRoKCkuaXNFbXB0eSgp
KQotICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kRmlsZShzdGF0aWNfY2FzdDxGaWxlKj4o
dmFsdWUuYmxvYigpKS0+cGF0aCgpLCBzaG91bGRHZW5lcmF0ZUZpbGUpOworICAgICAgICAgICAg
ICAgICAgICBpZiAoIWZpbGUtPnBhdGgoKS5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgICAg
ICAgICBhcHBlbmRGaWxlKGZpbGUtPnBhdGgoKSwgc2hvdWxkR2VuZXJhdGVGaWxlKTsKICAgICAg
ICAgICAgICAgICB9CiAjaWYgRU5BQkxFKEJMT0IpCiAgICAgICAgICAgICAgICAgZWxzZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKaW5kZXggMDU5NjcyYjIyZGU5NWRlNmQ3NzY5
YTJjNmU5YjA2N2EyM2RiNTBhNy4uZWE1MjlmMzJlMDMzOTc2NzMxNjMwYTQ5ZDg4OGYwY2MzMjYx
YWExNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCkBAIC02MTUsOCArNjE1
LDggQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6c2VuZChCbG9iKiBib2R5LCBFeGNlcHRpb25Db2Rl
JiBlYykKICAgICAgICAgLy8gRklYTUU6IFNob3VsZCB3ZSBzZXQgYSBDb250ZW50LVR5cGUgaWYg
b25lIGlzIG5vdCBzZXQuCiAgICAgICAgIC8vIEZJWE1FOiBhZGQgc3VwcG9ydCBmb3IgdXBsb2Fk
aW5nIGJ1bmRsZXMuCiAgICAgICAgIG1fcmVxdWVzdEVudGl0eUJvZHkgPSBGb3JtRGF0YTo6Y3Jl
YXRlKCk7Ci0gICAgICAgIGlmIChib2R5LT5pc0ZpbGUoKSkKLSAgICAgICAgICAgIG1fcmVxdWVz
dEVudGl0eUJvZHktPmFwcGVuZEZpbGUoc3RhdGljX2Nhc3Q8RmlsZSo+KGJvZHkpLT5wYXRoKCkp
OworICAgICAgICBpZiAoYm9keS0+YXNGaWxlKCkpCisgICAgICAgICAgICBtX3JlcXVlc3RFbnRp
dHlCb2R5LT5hcHBlbmRGaWxlKGJvZHktPmFzRmlsZSgpLT5wYXRoKCkpOwogI2lmIEVOQUJMRShC
TE9CKQogICAgICAgICBlbHNlCiAgICAgICAgICAgICBtX3JlcXVlc3RFbnRpdHlCb2R5LT5hcHBl
bmRCbG9iKGJvZHktPnVybCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYkRyYWdEYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRyYWdE
YXRhLmNwcAppbmRleCBmOTg0NmVmZDg2ZmY3NTFlMjMxYTA3M2FmMDNiZjQ1MTA1YzI4ODhmLi45
Mzc2NzA1YTZkNTU5MmMxOTMxNDc2ODJmZjdjMGRmZDM5OTkwZTM3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEcmFnRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViRHJhZ0RhdGEuY3BwCkBAIC04NSw4ICs4NSw4IEBAIFdlYlZlY3Rv
cjxXZWJEcmFnRGF0YTo6SXRlbT4gV2ViRHJhZ0RhdGE6Oml0ZW1zKCkgY29uc3QKICAgICAgICAg
ICAgIH0gZWxzZSBpZiAob3JpZ2luYWxJdGVtLT5pc0ZpbGVuYW1lKCkpIHsKICAgICAgICAgICAg
ICAgICBpdGVtLnN0b3JhZ2VUeXBlID0gSXRlbTo6U3RvcmFnZVR5cGVGaWxlbmFtZTsKICAgICAg
ICAgICAgICAgICBSZWZQdHI8V2ViQ29yZTo6QmxvYj4gYmxvYiA9IG9yaWdpbmFsSXRlbS0+Z2V0
QXNGaWxlKCk7Ci0gICAgICAgICAgICAgICAgaWYgKGJsb2ItPmlzRmlsZSgpKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIEZpbGUqIGZpbGUgPSBzdGF0aWNfY2FzdDxGaWxlKj4oYmxvYi5nZXQoKSk7
CisgICAgICAgICAgICAgICAgaWYgKGJsb2ItPmFzRmlsZSgpKSB7CisgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEZpbGUqIGZpbGUgPSBibG9iLT5hc0ZpbGUoKTsKICAgICAgICAgICAgICAgICAg
ICAgaXRlbS5maWxlbmFtZURhdGEgPSBmaWxlLT5wYXRoKCk7CiAgICAgICAgICAgICAgICAgICAg
IGl0ZW0uZGlzcGxheU5hbWVEYXRhID0gZmlsZS0+bmFtZSgpOwogICAgICAgICAgICAgICAgIH0g
ZWxzZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>143556</attachid>
            <date>2012-05-23 06:26:51 -0700</date>
            <delta_ts>2012-05-24 05:37:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-87234-20120523222650.patch</filename>
            <type>text/plain</type>
            <size>15275</size>
            <attacher name="Kinuko Yasuda">kinuko</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE4MTMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2IwZWUxY2Q4ZWIxMzVk
NzJiMTc0N2ExZmI3OWE4MzE3NGQ5YjFjNy4uNDFiZTA0NmNiYzgzZDVkN2QxZGFiZDI3YzhkYjg3
YTlkOWRjNDQ1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDEyLTA1LTIzICBLaW51
a28gWWFzdWRhICA8a2ludWtvQGNocm9taXVtLm9yZz4KKworICAgICAgICBDbGVhbnVwOiBpbnRy
b2R1Y2UgQmxvYjo6YXNGaWxlKCkgdG8gcmVkdWNlIHN0YXRpYyBjYXN0CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NzIzNAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBhcyB0aGlzIG11
c3QgaGF2ZSBubyBzaWRlIGVmZmVjdC4KKworICAgICAgICAqIE1vZHVsZXMvZmlsZXN5c3RlbS9j
aHJvbWl1bS9EYXRhVHJhbnNmZXJJdGVtRmlsZVN5c3RlbUNocm9taXVtLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRhdGFUcmFuc2Zlckl0ZW1GaWxlU3lzdGVtOjp3ZWJraXRHZXRBc0VudHJ5KToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0Jsb2JDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6dG9KUyk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4QmxvYkN1c3RvbS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjp0b1Y4KToKKyAgICAgICAgKiBmaWxlYXBpL0Jsb2IuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QmxvYjo6d2Via2l0U2xpY2UpOgorICAgICAgICAqIGZpbGVhcGkv
QmxvYi5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpCbG9iOjphc0Zp
bGUpOiBBZGRlZC4KKyAgICAgICAgKEJsb2IpOgorICAgICAgICAqIGZpbGVhcGkvRmlsZS5oOgor
ICAgICAgICAoV2ViQ29yZTo6RmlsZTo6YXNGaWxlKTogQWRkZWQuCisgICAgICAgICogZmlsZWFw
aS9GaWxlUmVhZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVSZWFkZXI6OnJlYWRBc0Fy
cmF5QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVSZWFkZXI6OnJlYWRBc0JpbmFyeVN0
cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlUmVhZGVyOjpyZWFkQXNUZXh0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkZpbGVSZWFkZXI6OnJlYWRBc0RhdGFVUkwpOgorICAgICAgICAqIGZpbGVh
cGkvV2ViS2l0QmxvYkJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QmxvYkJ1
aWxkZXI6OmFwcGVuZCk6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJkQ2hy
b21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkQ2hyb21pdW06OmZpbGVzKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZvcm1EYXRhOjphcHBlbmRLZXlWYWx1ZVBhaXJJdGVtcyk6CisgICAgICAgICogeG1sL1hN
TEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpzZW5k
KToKKwogMjAxMi0wNS0yMiAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KIAog
ICAgICAgICBbUmVmYWN0b3JpbmddIEVsZW1lbnRTaGFkb3c6Om1fbmVlZHNSZWRpc3RyaWJ1dGlu
ZyAgc2hvdWxkIGJlIG9uIENvbnRlbnREaXN0cmlidXRvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZwppbmRleCBmNTlmODQ3YTYxNWY0NTQ3ODIzYzVhOGFhNWEwNGM3MjVlOGYyMDJiLi5kZjc0MmQ4
NjQyNTNkYjBhODA5YjBkMGI3Yzk2MTQ4N2JhMDcxYzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEyLTA1LTIzICBLaW51a28gWWFzdWRhICA8a2ludWtv
QGNocm9taXVtLm9yZz4KKworICAgICAgICBDbGVhbnVwOiBpbnRyb2R1Y2UgQmxvYjo6YXNGaWxl
KCkgdG8gcmVkdWNlIHN0YXRpYyBjYXN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD04NzIzNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogc3JjL1dlYkRyYWdEYXRhLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViRHJhZ0RhdGE6Oml0ZW1zKToKKwogMjAxMi0wNS0yMiAgQWxleGFuZHJlIEVsaWFzICA8YWVs
aWFzQGdvb2dsZS5jb20+CiAKICAgICAgICAgW2Nocm9taXVtXSBBcHBseSB2aWV3cG9ydCB0YWcg
aW5pdGlhbC1zY2FsZSBvbmx5IG9uY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmlsZXN5c3RlbS9jaHJvbWl1bS9EYXRhVHJhbnNmZXJJdGVtRmlsZVN5c3RlbUNocm9taXVt
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9jaHJvbWl1bS9EYXRhVHJh
bnNmZXJJdGVtRmlsZVN5c3RlbUNocm9taXVtLmNwcAppbmRleCBhNmJiM2NkZjk1YzM2YmQ2MjA2
ZTY2Yjk3YWQwYjY1YzczZjM1NzA1Li4yNTUzYjU2NjIyODRjMDE2Mzg1YTQzM2JkMzU5MmE2NTE2
MjFmNDcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vY2hy
b21pdW0vRGF0YVRyYW5zZmVySXRlbUZpbGVTeXN0ZW1DaHJvbWl1bS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL2Nocm9taXVtL0RhdGFUcmFuc2Zlckl0ZW1GaWxl
U3lzdGVtQ2hyb21pdW0uY3BwCkBAIC0xMDYsNyArMTA2LDcgQEAgdm9pZCBEYXRhVHJhbnNmZXJJ
dGVtRmlsZVN5c3RlbTo6d2Via2l0R2V0QXNFbnRyeShEYXRhVHJhbnNmZXJJdGVtKiBpdGVtLCBT
Y3JpcHQKICAgICAvLyBUaGUgY2xpcGJvYXJkIG1heSBub3QgYmUgaW4gYSByZWFkYWJsZSBzdGF0
ZS4KICAgICBpZiAoIWZpbGUpCiAgICAgICAgIHJldHVybjsKLSAgICBBU1NFUlQoZmlsZS0+aXNG
aWxlKCkpOworICAgIEFTU0VSVChmaWxlLT5hc0ZpbGUoKSk7CiAKICAgICBEcmFnZ2VkSXNvbGF0
ZWRGaWxlU3lzdGVtKiBmaWxlc3lzdGVtID0gRHJhZ2dlZElzb2xhdGVkRmlsZVN5c3RlbTo6ZnJv
bShpdGVtUG9saWN5V3JhcHBlci0+Y2xpcGJvYXJkKCktPmRhdGFPYmplY3QoKS5nZXQoKSk7CiAg
ICAgRE9NRmlsZVN5c3RlbSogZG9tRmlsZVN5c3RlbSA9IGZpbGVzeXN0ZW0gPyBmaWxlc3lzdGVt
LT5nZXRET01GaWxlU3lzdGVtKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpIDogMDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmxvYkN1c3RvbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Jsb2JDdXN0b20uY3BwCmluZGV4IDMzOTJmM2NlNmM3Yjhj
YzBhNjI0OWViMGU4ZmI2OTNmZjFlOGZjY2EuLmE2ZGI5OTQ2MTE1ZjFhOWE5MTQxN2NlYTQ1Yjk2
ZTQ3NzZiZTcyODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmxv
YkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCbG9iQ3VzdG9t
LmNwcApAQCAtNTIsNyArNTIsNyBAQCBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBleGVjLCBKU0RP
TUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBCbG9iKiBibG9iKQogICAgIGlmICghYmxvYikK
ICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwogCi0gICAgaWYgKGJsb2ItPmlzRmlsZSgpKQorICAg
IGlmIChibG9iLT5hc0ZpbGUoKSkKICAgICAgICAgcmV0dXJuIENSRUFURV9ET01fV1JBUFBFUihl
eGVjLCBnbG9iYWxPYmplY3QsIEZpbGUsIGJsb2IpOwogCiAgICAgcmV0dXJuIENSRUFURV9ET01f
V1JBUFBFUihleGVjLCBnbG9iYWxPYmplY3QsIEJsb2IsIGJsb2IpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QmxvYkN1c3RvbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhCbG9iQ3VzdG9tLmNwcAppbmRleCBhZTA3MmRh
MWNkNjgwMTRiYjEyNTlmZmU3NTgxNTBiNTUyMWY2NDYzLi4yZDhkNjAzNjQ4M2MxZTQxMjJkMzNj
ODg4MmRmYTRjOWJkOGJhYzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhCbG9iQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhCbG9iQ3VzdG9tLmNwcApAQCAtNDksNyArNDksNyBAQCB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gdG9WOChCbG9iKiBpbXBsLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKICAgICBpZiAo
IWltcGwpCiAgICAgICAgIHJldHVybiB2ODo6TnVsbCgpOwogCi0gICAgaWYgKGltcGwtPmlzRmls
ZSgpKQorICAgIGlmIChpbXBsLT5hc0ZpbGUoKSkKICAgICAgICAgcmV0dXJuIHRvVjgoc3RhdGlj
X2Nhc3Q8RmlsZSo+KGltcGwpLCBpc29sYXRlKTsKIAogICAgIHJldHVybiBWOEJsb2I6OndyYXAo
aW1wbCwgaXNvbGF0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2Iu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmNwcAppbmRleCAxOTdhMjYxOGZkYTMx
OGIwNjNlYzNiYjI3MWM2NGZiNWQ3MzQ1YmU2Li43NTBiOGNmYzZhYmMzMjBlOWZjZjJkMzU3MmUz
OGMwZjRiZDQwMzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5jcHAKQEAgLTc5LDEwICs3OSwxMSBA
QCBQYXNzUmVmUHRyPEJsb2I+IEJsb2I6OndlYmtpdFNsaWNlKGxvbmcgbG9uZyBzdGFydCwgbG9u
ZyBsb25nIGVuZCwgY29uc3QgU3RyaW5nJgogICAgIC8vIFRoZSBtb2RpZmljYXRpb24gdGltZSB3
aWxsIGJlIHVzZWQgdG8gdmVyaWZ5IGlmIHRoZSBmaWxlIGhhcyBiZWVuIGNoYW5nZWQgb3Igbm90
LCB3aGVuIHRoZSB1bmRlcmx5aW5nIGRhdGEgYXJlIGFjY2Vzc2VkLgogICAgIGxvbmcgbG9uZyBz
aXplOwogICAgIGRvdWJsZSBtb2RpZmljYXRpb25UaW1lOwotICAgIGlmIChpc0ZpbGUoKSkKKyAg
ICBjb25zdCBGaWxlKiBmaWxlID0gYXNGaWxlKCk7CisgICAgaWYgKGZpbGUpIHsKICAgICAgICAg
Ly8gRklYTUU6IFRoaXMgaW52b2x2ZXMgc3luY2hyb25vdXMgZmlsZSBvcGVyYXRpb24uIFdlIG5l
ZWQgdG8gZmlndXJlIG91dCBob3cgdG8gbWFrZSBpdCBhc3luY2hyb25vdXMuCi0gICAgICAgIHN0
YXRpY19jYXN0PGNvbnN0IEZpbGUqPih0aGlzKS0+Y2FwdHVyZVNuYXBzaG90KHNpemUsIG1vZGlm
aWNhdGlvblRpbWUpOwotICAgIGVsc2UgeworICAgICAgICBmaWxlLT5jYXB0dXJlU25hcHNob3Qo
c2l6ZSwgbW9kaWZpY2F0aW9uVGltZSk7CisgICAgfSBlbHNlIHsKICAgICAgICAgQVNTRVJUKG1f
c2l6ZSAhPSAtMSk7CiAgICAgICAgIHNpemUgPSBtX3NpemU7CiAgICAgfQpAQCAtMTA5LDggKzEx
MCw4IEBAIFBhc3NSZWZQdHI8QmxvYj4gQmxvYjo6d2Via2l0U2xpY2UobG9uZyBsb25nIHN0YXJ0
LCBsb25nIGxvbmcgZW5kLCBjb25zdCBTdHJpbmcmCiAgICAgbG9uZyBsb25nIGxlbmd0aCA9IGVu
ZCAtIHN0YXJ0OwogICAgIE93blB0cjxCbG9iRGF0YT4gYmxvYkRhdGEgPSBCbG9iRGF0YTo6Y3Jl
YXRlKCk7CiAgICAgYmxvYkRhdGEtPnNldENvbnRlbnRUeXBlKGNvbnRlbnRUeXBlKTsKLSAgICBp
ZiAoaXNGaWxlKCkpCi0gICAgICAgIGJsb2JEYXRhLT5hcHBlbmRGaWxlKHN0YXRpY19jYXN0PGNv
bnN0IEZpbGUqPih0aGlzKS0+cGF0aCgpLCBzdGFydCwgbGVuZ3RoLCBtb2RpZmljYXRpb25UaW1l
KTsKKyAgICBpZiAoZmlsZSkKKyAgICAgICAgYmxvYkRhdGEtPmFwcGVuZEZpbGUoZmlsZS0+cGF0
aCgpLCBzdGFydCwgbGVuZ3RoLCBtb2RpZmljYXRpb25UaW1lKTsKICAgICBlbHNlCiAgICAgICAg
IGJsb2JEYXRhLT5hcHBlbmRCbG9iKG1faW50ZXJuYWxVUkwsIHN0YXJ0LCBsZW5ndGgpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaCBiL1NvdXJjZS9XZWJDb3Jl
L2ZpbGVhcGkvQmxvYi5oCmluZGV4IGY1ZjE4NTJmOGQ1Mjc0YmM0YzcwYWFkMTc5MTk5ZGU2NDgy
ZjI3NzAuLjEzNjgzMjU0YTg0MzU4YTcyNmM5ZDk4NzA3NDc0ZjYzYmEzN2MyMGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvQmxvYi5oCkBAIC00MSw2ICs0MSw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAor
Y2xhc3MgRmlsZTsKKwogY2xhc3MgQmxvYiA6IHB1YmxpYyBSZWZDb3VudGVkPEJsb2I+IHsKIHB1
YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxCbG9iPiBjcmVhdGUoKQpAQCAtNjUsNyArNjcs
NyBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90
eXBlOyB9CiAKICAgICB2aXJ0dWFsIHVuc2lnbmVkIGxvbmcgbG9uZyBzaXplKCkgY29uc3QgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihtX3NpemUpOyB9Ci0gICAgdmly
dHVhbCBib29sIGlzRmlsZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBj
b25zdCBGaWxlKiBhc0ZpbGUoKSBjb25zdCB7IHJldHVybiAwOyB9CiAKICNpZiBFTkFCTEUoQkxP
QikKICAgICBQYXNzUmVmUHRyPEJsb2I+IHdlYmtpdFNsaWNlKGxvbmcgbG9uZyBzdGFydCA9IDAs
IGxvbmcgbG9uZyBlbmQgPSBzdGQ6Om51bWVyaWNfbGltaXRzPGxvbmcgbG9uZz46Om1heCgpLCBj
b25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlID0gU3RyaW5nKCkpIGNvbnN0OwpAQCAtODIsNyArODQs
NyBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gYXMgYW4gaWRlbnRpZmllciBmb3IgdGhpcyBibG9iLiBU
aGUgaW50ZXJuYWwgVVJMIGlzIG5ldmVyIHVzZWQgdG8gc291cmNlIHRoZSBibG9iJ3MgY29udGVu
dAogICAgIC8vIGludG8gYW4gSFRNTCBvciBmb3IgRmlsZVJlYWQnaW5nLCBwdWJsaWMgYmxvYiBV
UkxzIG11c3QgYmUgdXNlZCBmb3IgdGhvc2UgcHVycG9zZXMuCiAgICAgS1VSTCBtX2ludGVybmFs
VVJMOwotICAgIAorCiAgICAgU3RyaW5nIG1fdHlwZTsKICAgICBsb25nIGxvbmcgbV9zaXplOwog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5oIGIvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9GaWxlLmgKaW5kZXggNjMzMWEyZDQ5OTc2NzJiNmZmMWI0ZDY2NmVhZjQ3
ZGM1MDk5NWQwMy4uOTVhODY5ZTk5ZjA0OWU4MWQxNDRjNGZlYmQ2ZjUwMDFkNWJiOGIzMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9GaWxlLmgKQEAgLTcyLDcgKzcyLDcgQEAgcHVibGljOgogICAgIH0KIAogICAg
IHZpcnR1YWwgdW5zaWduZWQgbG9uZyBsb25nIHNpemUoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJv
b2wgaXNGaWxlKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgY29uc3QgRmls
ZSogYXNGaWxlKCkgY29uc3QgeyByZXR1cm4gdGhpczsgfQogCiAgICAgY29uc3QgU3RyaW5nJiBw
YXRoKCkgY29uc3QgeyByZXR1cm4gbV9wYXRoOyB9CiAgICAgY29uc3QgU3RyaW5nJiBuYW1lKCkg
Y29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxl
YXBpL0ZpbGVSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmNw
cAppbmRleCAwN2M0YjY3NDYxMTExNjFlZmYyOTk1OWFiMWQyZmJkYzFjMDEzMTJmLi40ZGJjZTdk
ZmI3ZDcyYjJkMmQ2OGNlNzEzYjRhYWYzYzNkZDZmMDFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL0ZpbGVSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkv
RmlsZVJlYWRlci5jcHAKQEAgLTk1LDcgKzk1LDcgQEAgdm9pZCBGaWxlUmVhZGVyOjpyZWFkQXNB
cnJheUJ1ZmZlcihCbG9iKiBibG9iLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICBpZiAoIWJsb2Ip
CiAgICAgICAgIHJldHVybjsKIAotICAgIExPRyhGaWxlQVBJLCAiRmlsZVJlYWRlcjogcmVhZGlu
ZyBhcyBhcnJheSBidWZmZXI6ICVzICVzXG4iLCBibG9iLT51cmwoKS5zdHJpbmcoKS51dGY4KCku
ZGF0YSgpLCBibG9iLT5pc0ZpbGUoKSA/IHN0YXRpY19jYXN0PEZpbGUqPihibG9iKS0+cGF0aCgp
LnV0ZjgoKS5kYXRhKCkgOiAiIik7CisgICAgTE9HKEZpbGVBUEksICJGaWxlUmVhZGVyOiByZWFk
aW5nIGFzIGFycmF5IGJ1ZmZlcjogJXMgJXNcbiIsIGJsb2ItPnVybCgpLnN0cmluZygpLnV0Zjgo
KS5kYXRhKCksIGJsb2ItPmFzRmlsZSgpID8gYmxvYi0+YXNGaWxlKCktPnBhdGgoKS51dGY4KCku
ZGF0YSgpIDogIiIpOwogCiAgICAgcmVhZEludGVybmFsKGJsb2IsIEZpbGVSZWFkZXJMb2FkZXI6
OlJlYWRBc0FycmF5QnVmZmVyLCBlYyk7CiB9CkBAIC0xMDUsNyArMTA1LDcgQEAgdm9pZCBGaWxl
UmVhZGVyOjpyZWFkQXNCaW5hcnlTdHJpbmcoQmxvYiogYmxvYiwgRXhjZXB0aW9uQ29kZSYgZWMp
CiAgICAgaWYgKCFibG9iKQogICAgICAgICByZXR1cm47CiAKLSAgICBMT0coRmlsZUFQSSwgIkZp
bGVSZWFkZXI6IHJlYWRpbmcgYXMgYmluYXJ5OiAlcyAlc1xuIiwgYmxvYi0+dXJsKCkuc3RyaW5n
KCkudXRmOCgpLmRhdGEoKSwgYmxvYi0+aXNGaWxlKCkgPyBzdGF0aWNfY2FzdDxGaWxlKj4oYmxv
YiktPnBhdGgoKS51dGY4KCkuZGF0YSgpIDogIiIpOworICAgIExPRyhGaWxlQVBJLCAiRmlsZVJl
YWRlcjogcmVhZGluZyBhcyBiaW5hcnk6ICVzICVzXG4iLCBibG9iLT51cmwoKS5zdHJpbmcoKS51
dGY4KCkuZGF0YSgpLCBibG9iLT5hc0ZpbGUoKSA/IGJsb2ItPmFzRmlsZSgpLT5wYXRoKCkudXRm
OCgpLmRhdGEoKSA6ICIiKTsKIAogICAgIHJlYWRJbnRlcm5hbChibG9iLCBGaWxlUmVhZGVyTG9h
ZGVyOjpSZWFkQXNCaW5hcnlTdHJpbmcsIGVjKTsKIH0KQEAgLTExNSw3ICsxMTUsNyBAQCB2b2lk
IEZpbGVSZWFkZXI6OnJlYWRBc1RleHQoQmxvYiogYmxvYiwgY29uc3QgU3RyaW5nJiBlbmNvZGlu
ZywgRXhjZXB0aW9uQ29kZSYgZQogICAgIGlmICghYmxvYikKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgTE9HKEZpbGVBUEksICJGaWxlUmVhZGVyOiByZWFkaW5nIGFzIHRleHQ6ICVzICVzXG4iLCBi
bG9iLT51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBibG9iLT5pc0ZpbGUoKSA/IHN0YXRp
Y19jYXN0PEZpbGUqPihibG9iKS0+cGF0aCgpLnV0ZjgoKS5kYXRhKCkgOiAiIik7CisgICAgTE9H
KEZpbGVBUEksICJGaWxlUmVhZGVyOiByZWFkaW5nIGFzIHRleHQ6ICVzICVzXG4iLCBibG9iLT51
cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBibG9iLT5hc0ZpbGUoKSA/IGJsb2ItPmFzRmls
ZSgpLT5wYXRoKCkudXRmOCgpLmRhdGEoKSA6ICIiKTsKIAogICAgIG1fZW5jb2RpbmcgPSBlbmNv
ZGluZzsKICAgICByZWFkSW50ZXJuYWwoYmxvYiwgRmlsZVJlYWRlckxvYWRlcjo6UmVhZEFzVGV4
dCwgZWMpOwpAQCAtMTMxLDcgKzEzMSw3IEBAIHZvaWQgRmlsZVJlYWRlcjo6cmVhZEFzRGF0YVVS
TChCbG9iKiBibG9iLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICBpZiAoIWJsb2IpCiAgICAgICAg
IHJldHVybjsKIAotICAgIExPRyhGaWxlQVBJLCAiRmlsZVJlYWRlcjogcmVhZGluZyBhcyBkYXRh
IFVSTDogJXMgJXNcbiIsIGJsb2ItPnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIGJsb2It
PmlzRmlsZSgpID8gc3RhdGljX2Nhc3Q8RmlsZSo+KGJsb2IpLT5wYXRoKCkudXRmOCgpLmRhdGEo
KSA6ICIiKTsKKyAgICBMT0coRmlsZUFQSSwgIkZpbGVSZWFkZXI6IHJlYWRpbmcgYXMgZGF0YSBV
Ukw6ICVzICVzXG4iLCBibG9iLT51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBibG9iLT5h
c0ZpbGUoKSA/IGJsb2ItPmFzRmlsZSgpLT5wYXRoKCkudXRmOCgpLmRhdGEoKSA6ICIiKTsKIAog
ICAgIHJlYWRJbnRlcm5hbChibG9iLCBGaWxlUmVhZGVyTG9hZGVyOjpSZWFkQXNEYXRhVVJMLCBl
Yyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1dlYktpdEJsb2JCdWls
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvV2ViS2l0QmxvYkJ1aWxkZXIuY3BwCmlu
ZGV4IGE4MTBhZDhmNTQyZDE5ZjE2YzUzY2ExNzdkZDMwZDU1NjFmMWUxOTYuLmE4Y2JkOTViZDI1
NWU4OTIzOTQ0YmJiYWJmMGZlNjExMjhmNWViZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2ZpbGVhcGkvV2ViS2l0QmxvYkJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvV2ViS2l0QmxvYkJ1aWxkZXIuY3BwCkBAIC0xMDEsMTAgKzEwMSw5IEBAIHZvaWQgV2ViS2l0
QmxvYkJ1aWxkZXI6OmFwcGVuZChCbG9iKiBibG9iKQogewogICAgIGlmICghYmxvYikKICAgICAg
ICAgcmV0dXJuOwotICAgIGlmIChibG9iLT5pc0ZpbGUoKSkgeworICAgIGlmIChjb25zdCBGaWxl
KiBmaWxlID0gYmxvYi0+YXNGaWxlKCkpIHsKICAgICAgICAgLy8gSWYgdGhlIGJsb2IgaXMgZmls
ZSB0aGF0IGlzIG5vdCBzbmFwc2hvdGVkLCBjYXB0dXJlIHRoZSBzbmFwc2hvdCBub3cuCiAgICAg
ICAgIC8vIEZJWE1FOiBUaGlzIGludm9sdmVzIHN5bmNocm9ub3VzIGZpbGUgb3BlcmF0aW9uLiBX
ZSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRvIG1ha2UgaXQgYXN5bmNocm9ub3VzLgotICAgICAg
ICBGaWxlKiBmaWxlID0gc3RhdGljX2Nhc3Q8RmlsZSo+KGJsb2IpOwogICAgICAgICBsb25nIGxv
bmcgc25hcHNob3RTaXplOwogICAgICAgICBkb3VibGUgc25hcHNob3RNb2RpZmljYXRpb25UaW1l
OwogICAgICAgICBmaWxlLT5jYXB0dXJlU25hcHNob3Qoc25hcHNob3RTaXplLCBzbmFwc2hvdE1v
ZGlmaWNhdGlvblRpbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hy
b21pdW0vQ2xpcGJvYXJkQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hy
b21pdW0vQ2xpcGJvYXJkQ2hyb21pdW0uY3BwCmluZGV4IDI1ZTg5YzMxZTViM2Q4M2UyYjdmMGVi
ZDQyMGEwZTE1MDM4YmVmNjAuLjNmMjkwYTgyMDQ0MGQyMjYwMjBmYTc0YTQ5MThjMzczMjdhMmVh
MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0NsaXBib2Fy
ZENocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DbGlw
Ym9hcmRDaHJvbWl1bS5jcHAKQEAgLTMxMiw3ICszMTIsNyBAQCBQYXNzUmVmUHRyPEZpbGVMaXN0
PiBDbGlwYm9hcmRDaHJvbWl1bTo6ZmlsZXMoKSBjb25zdAogICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbV9kYXRhT2JqZWN0LT5sZW5ndGgoKTsgKytpKSB7CiAgICAgICAgIGlmIChtX2RhdGFP
YmplY3QtPml0ZW0oaSktPmtpbmQoKSA9PSBEYXRhVHJhbnNmZXJJdGVtOjpraW5kRmlsZSkgewog
ICAgICAgICAgICAgUmVmUHRyPEJsb2I+IGJsb2IgPSBtX2RhdGFPYmplY3QtPml0ZW0oaSktPmdl
dEFzRmlsZSgpOwotICAgICAgICAgICAgaWYgKGJsb2IgJiYgYmxvYi0+aXNGaWxlKCkpCisgICAg
ICAgICAgICBpZiAoYmxvYiAmJiBibG9iLT5hc0ZpbGUoKSkKICAgICAgICAgICAgICAgICBmaWxl
cy0+YXBwZW5kKHN0YXRpY19jYXN0PEZpbGUqPihibG9iLmdldCgpKSk7CiAgICAgICAgIH0KICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRh
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCmluZGV4
IGY1ODE3NDYyMTk4MjY0NmI2ZWJmZjRkODgxNjgwMmM0MjEzMjgxMTkuLjQ0NzdlMDRiMjgzMTRj
NzRhYzMwZDk3MGFmOWQ0OGViZTU2ZjhmNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvRm9ybURhdGEuY3BwCkBAIC0yMDQsOSArMjA0LDkgQEAgdm9pZCBGb3JtRGF0YTo6
YXBwZW5kS2V5VmFsdWVQYWlySXRlbXMoY29uc3QgRm9ybURhdGFMaXN0JiBsaXN0LCBjb25zdCBU
ZXh0RW5jb2QKICAgICAgICAgICAgIC8vIElmIHRoZSBjdXJyZW50IHR5cGUgaXMgYmxvYiwgdGhl
biB3ZSBhbHNvIG5lZWQgdG8gaW5jbHVkZSB0aGUgZmlsZW5hbWUKICAgICAgICAgICAgIGlmICh2
YWx1ZS5ibG9iKCkpIHsKICAgICAgICAgICAgICAgICBTdHJpbmcgbmFtZTsKLSAgICAgICAgICAg
ICAgICBpZiAodmFsdWUuYmxvYigpLT5pc0ZpbGUoKSkgeworICAgICAgICAgICAgICAgIGNvbnN0
IEZpbGUqIGZpbGUgPSB2YWx1ZS5ibG9iKCktPmFzRmlsZSgpOworICAgICAgICAgICAgICAgIGlm
IChmaWxlKSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIEZvciBmaWxlIGJsb2IsIHVzZSB0aGUg
ZmlsZW5hbWUgKG9yIHJlbGF0aXZlIHBhdGggaWYgaXQgaXMgcHJlc2VudCkgYXMgdGhlIG5hbWUu
Ci0gICAgICAgICAgICAgICAgICAgIEZpbGUqIGZpbGUgPSBzdGF0aWNfY2FzdDxGaWxlKj4odmFs
dWUuYmxvYigpKTsKICNpZiBFTkFCTEUoRElSRUNUT1JZX1VQTE9BRCkgICAgICAgICAgICAgICAg
CiAgICAgICAgICAgICAgICAgICAgIG5hbWUgPSBmaWxlLT53ZWJraXRSZWxhdGl2ZVBhdGgoKS5p
c0VtcHR5KCkgPyBmaWxlLT5uYW1lKCkgOiBmaWxlLT53ZWJraXRSZWxhdGl2ZVBhdGgoKTsKICNl
bHNlCkBAIC0yNDcsMTAgKzI0NywxMCBAQCB2b2lkIEZvcm1EYXRhOjphcHBlbmRLZXlWYWx1ZVBh
aXJJdGVtcyhjb25zdCBGb3JtRGF0YUxpc3QmIGxpc3QsIGNvbnN0IFRleHRFbmNvZAogICAgICAg
ICAgICAgLy8gQXBwZW5kIGJvZHkKICAgICAgICAgICAgIGFwcGVuZERhdGEoaGVhZGVyLmRhdGEo
KSwgaGVhZGVyLnNpemUoKSk7CiAgICAgICAgICAgICBpZiAodmFsdWUuYmxvYigpKSB7Ci0gICAg
ICAgICAgICAgICAgaWYgKHZhbHVlLmJsb2IoKS0+aXNGaWxlKCkpIHsKKyAgICAgICAgICAgICAg
ICBpZiAoY29uc3QgRmlsZSogZmlsZSA9IHZhbHVlLmJsb2IoKS0+YXNGaWxlKCkpIHsKICAgICAg
ICAgICAgICAgICAgICAgLy8gRG8gbm90IGFkZCB0aGUgZmlsZSBpZiB0aGUgcGF0aCBpcyBlbXB0
eS4KLSAgICAgICAgICAgICAgICAgICAgaWYgKCFzdGF0aWNfY2FzdDxGaWxlKj4odmFsdWUuYmxv
YigpKS0+cGF0aCgpLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZEZp
bGUoc3RhdGljX2Nhc3Q8RmlsZSo+KHZhbHVlLmJsb2IoKSktPnBhdGgoKSwgc2hvdWxkR2VuZXJh
dGVGaWxlKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFmaWxlLT5wYXRoKCkuaXNFbXB0eSgp
KQorICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kRmlsZShmaWxlLT5wYXRoKCksIHNob3Vs
ZEdlbmVyYXRlRmlsZSk7CiAgICAgICAgICAgICAgICAgfQogI2lmIEVOQUJMRShCTE9CKQogICAg
ICAgICAgICAgICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRw
UmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCmluZGV4
IDA1OTY3MmIyMmRlOTVkZTZkNzc2OWEyYzZlOWIwNjdhMjNkYjUwYTcuLmQ1OWFjMTYzZDZjZjlh
ZTE2ZDU3Mzk1ZTZjNWQxZjZmZGUwZTkyNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3ht
bC9YTUxIdHRwUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1
ZXN0LmNwcApAQCAtNjE1LDggKzYxNSw4IEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OnNlbmQoQmxv
YiogYm9keSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgICAgIC8vIEZJWE1FOiBTaG91bGQgd2Ug
c2V0IGEgQ29udGVudC1UeXBlIGlmIG9uZSBpcyBub3Qgc2V0LgogICAgICAgICAvLyBGSVhNRTog
YWRkIHN1cHBvcnQgZm9yIHVwbG9hZGluZyBidW5kbGVzLgogICAgICAgICBtX3JlcXVlc3RFbnRp
dHlCb2R5ID0gRm9ybURhdGE6OmNyZWF0ZSgpOwotICAgICAgICBpZiAoYm9keS0+aXNGaWxlKCkp
Ci0gICAgICAgICAgICBtX3JlcXVlc3RFbnRpdHlCb2R5LT5hcHBlbmRGaWxlKHN0YXRpY19jYXN0
PEZpbGUqPihib2R5KS0+cGF0aCgpKTsKKyAgICAgICAgaWYgKGNvbnN0IEZpbGUqIGZpbGUgPSBi
b2R5LT5hc0ZpbGUoKSkKKyAgICAgICAgICAgIG1fcmVxdWVzdEVudGl0eUJvZHktPmFwcGVuZEZp
bGUoZmlsZS0+cGF0aCgpKTsKICNpZiBFTkFCTEUoQkxPQikKICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgbV9yZXF1ZXN0RW50aXR5Qm9keS0+YXBwZW5kQmxvYihib2R5LT51cmwoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEcmFnRGF0YS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEcmFnRGF0YS5jcHAKaW5kZXggZjk4NDZlZmQ4NmZm
NzUxZTIzMWEwNzNhZjAzYmY0NTEwNWMyODg4Zi4uNGQ3MmI2MDg4ZWU1NDc1Y2ZhNDFkZjM2NGVm
MzFjY2E0ZWNjZTQ3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
RHJhZ0RhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRyYWdEYXRh
LmNwcApAQCAtODUsOCArODUsNyBAQCBXZWJWZWN0b3I8V2ViRHJhZ0RhdGE6Okl0ZW0+IFdlYkRy
YWdEYXRhOjppdGVtcygpIGNvbnN0CiAgICAgICAgICAgICB9IGVsc2UgaWYgKG9yaWdpbmFsSXRl
bS0+aXNGaWxlbmFtZSgpKSB7CiAgICAgICAgICAgICAgICAgaXRlbS5zdG9yYWdlVHlwZSA9IEl0
ZW06OlN0b3JhZ2VUeXBlRmlsZW5hbWU7CiAgICAgICAgICAgICAgICAgUmVmUHRyPFdlYkNvcmU6
OkJsb2I+IGJsb2IgPSBvcmlnaW5hbEl0ZW0tPmdldEFzRmlsZSgpOwotICAgICAgICAgICAgICAg
IGlmIChibG9iLT5pc0ZpbGUoKSkgewotICAgICAgICAgICAgICAgICAgICBGaWxlKiBmaWxlID0g
c3RhdGljX2Nhc3Q8RmlsZSo+KGJsb2IuZ2V0KCkpOworICAgICAgICAgICAgICAgIGlmIChjb25z
dCBGaWxlKiBmaWxlID0gYmxvYi0+YXNGaWxlKCkpIHsKICAgICAgICAgICAgICAgICAgICAgaXRl
bS5maWxlbmFtZURhdGEgPSBmaWxlLT5wYXRoKCk7CiAgICAgICAgICAgICAgICAgICAgIGl0ZW0u
ZGlzcGxheU5hbWVEYXRhID0gZmlsZS0+bmFtZSgpOwogICAgICAgICAgICAgICAgIH0gZWxzZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>143797</attachid>
            <date>2012-05-24 05:37:23 -0700</date>
            <delta_ts>2012-05-24 11:07:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-87234-20120524213722.patch</filename>
            <type>text/plain</type>
            <size>12453</size>
            <attacher name="Kinuko Yasuda">kinuko</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE4MzM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjA0ZDNjODdlNTQxMDZm
ODA5ZjBkZTk3OGFkNWQyZDU1YjZiYjNjMy4uMDUzOGJlY2M2MDlhYzhmZWYzZWRjYzIxZGVjY2Nj
ODM1NmJmOGIxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDEyLTA1LTI0ICBLaW51
a28gWWFzdWRhICA8a2ludWtvQGNocm9taXVtLm9yZz4KKworICAgICAgICBDbGVhbnVwOiBpbnRy
b2R1Y2UgdG9GaWxlKCkgdG8gcmVkdWNlIHN0YXRpYyBjYXN0IGZyb20gQmxvYiB0byBGaWxlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NzIzNAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0
cyBhcyB0aGlzIG11c3QgaGF2ZSBubyBzaWRlIGVmZmVjdC4KKworICAgICAgICAqIGJpbmRpbmdz
L3Y4L2N1c3RvbS9WOEJsb2JDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9WOCk6Cisg
ICAgICAgICogZmlsZWFwaS9CbG9iLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJsb2I6OndlYmtp
dFNsaWNlKToKKyAgICAgICAgKiBmaWxlYXBpL0Jsb2IuaDoKKyAgICAgICAgKEJsb2IpOgorICAg
ICAgICAqIGZpbGVhcGkvRmlsZS5oOgorICAgICAgICAoV2ViQ29yZTo6dG9GaWxlKTogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVSZWFkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RmlsZVJlYWRlcjo6cmVhZEFzQXJyYXlCdWZmZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6RmlsZVJlYWRlcjo6cmVhZEFzQmluYXJ5U3RyaW5nKToKKyAgICAgICAgKFdl
YkNvcmU6OkZpbGVSZWFkZXI6OnJlYWRBc1RleHQpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVJl
YWRlcjo6cmVhZEFzRGF0YVVSTCk6CisgICAgICAgICogZmlsZWFwaS9XZWJLaXRCbG9iQnVpbGRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRCbG9iQnVpbGRlcjo6YXBwZW5kKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDbGlwYm9hcmRDaHJvbWl1bTo6ZmlsZXMpOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvRm9ybURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybURhdGE6OmFwcGVu
ZEtleVZhbHVlUGFpckl0ZW1zKToKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OnNlbmQpOgorCiAyMDEyLTA1LTI0ICBL
cmlzdMOzZiBLb3N6dHnDsyAgPGtrcmlzdG9mQGluZi51LXN6ZWdlZC5odT4KIAogICAgICAgICBb
UXRdIEJ1aWxkZml4IGZvciB0aGUgbWluaW1hbCBidWlsZCBiZWNhdXNlIHRoZSByMTE4MTk3IGJy
b2tlIGl0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA5ZTY2YzliZjRhMjEyMWVlMGMx
Yjc2MTg3YzQ3MWZiOTBlYTgzNjRmLi5jZjlkMzVkYmU3ZGE4MWI4ZGEyOWJjYzQ4ZGIxODBiM2M2
NjE4MjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEy
LTA1LTI0ICBLaW51a28gWWFzdWRhICA8a2ludWtvQGNocm9taXVtLm9yZz4KKworICAgICAgICBD
bGVhbnVwOiBpbnRyb2R1Y2UgdG9GaWxlKCkgdG8gcmVkdWNlIHN0YXRpYyBjYXN0IGZyb20gQmxv
YiB0byBGaWxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD04NzIzNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogc3JjL1dlYkRyYWdEYXRhLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRHJhZ0RhdGE6Oml0
ZW1zKToKKwogMjAxMi0wNS0yMyAgT2phbiBWYWZhaSAgPG9qYW5AY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIGFkZCBiYWNrIHRoZSBhYmlsaXR5IHRvIGRpc2FibGUgZmxleGJveApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QmxvYkN1c3RvbS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhCbG9iQ3VzdG9tLmNwcAppbmRleCBh
ZTA3MmRhMWNkNjgwMTRiYjEyNTlmZmU3NTgxNTBiNTUyMWY2NDYzLi5iNmRlMzRjMWVlYjA2OWY1
YjFlY2FkMGNlMzU5MmE2ZGNiZTgyN2RkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhCbG9iQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhCbG9iQ3VzdG9tLmNwcApAQCAtNTAsNyArNTAsNyBAQCB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gdG9WOChCbG9iKiBpbXBsLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKICAg
ICAgICAgcmV0dXJuIHY4OjpOdWxsKCk7CiAKICAgICBpZiAoaW1wbC0+aXNGaWxlKCkpCi0gICAg
ICAgIHJldHVybiB0b1Y4KHN0YXRpY19jYXN0PEZpbGUqPihpbXBsKSwgaXNvbGF0ZSk7CisgICAg
ICAgIHJldHVybiB0b1Y4KHRvRmlsZShpbXBsKSwgaXNvbGF0ZSk7CiAKICAgICByZXR1cm4gVjhC
bG9iOjp3cmFwKGltcGwsIGlzb2xhdGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9CbG9iLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5jcHAKaW5kZXgg
MTk3YTI2MThmZGEzMThiMDYzZWMzYmIyNzFjNjRmYjVkNzM0NWJlNi4uMjM4NWVjN2QxZDk2OGMz
NmMxNWY3NzQzZjJlNDUzYTI5NGIyZmM0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9CbG9iLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuY3BwCkBAIC03
OSwxMCArNzksMTAgQEAgUGFzc1JlZlB0cjxCbG9iPiBCbG9iOjp3ZWJraXRTbGljZShsb25nIGxv
bmcgc3RhcnQsIGxvbmcgbG9uZyBlbmQsIGNvbnN0IFN0cmluZyYKICAgICAvLyBUaGUgbW9kaWZp
Y2F0aW9uIHRpbWUgd2lsbCBiZSB1c2VkIHRvIHZlcmlmeSBpZiB0aGUgZmlsZSBoYXMgYmVlbiBj
aGFuZ2VkIG9yIG5vdCwgd2hlbiB0aGUgdW5kZXJseWluZyBkYXRhIGFyZSBhY2Nlc3NlZC4KICAg
ICBsb25nIGxvbmcgc2l6ZTsKICAgICBkb3VibGUgbW9kaWZpY2F0aW9uVGltZTsKLSAgICBpZiAo
aXNGaWxlKCkpCisgICAgaWYgKGlzRmlsZSgpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGlu
dm9sdmVzIHN5bmNocm9ub3VzIGZpbGUgb3BlcmF0aW9uLiBXZSBuZWVkIHRvIGZpZ3VyZSBvdXQg
aG93IHRvIG1ha2UgaXQgYXN5bmNocm9ub3VzLgotICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBG
aWxlKj4odGhpcyktPmNhcHR1cmVTbmFwc2hvdChzaXplLCBtb2RpZmljYXRpb25UaW1lKTsKLSAg
ICBlbHNlIHsKKyAgICAgICAgdG9GaWxlKHRoaXMpLT5jYXB0dXJlU25hcHNob3Qoc2l6ZSwgbW9k
aWZpY2F0aW9uVGltZSk7CisgICAgfSBlbHNlIHsKICAgICAgICAgQVNTRVJUKG1fc2l6ZSAhPSAt
MSk7CiAgICAgICAgIHNpemUgPSBtX3NpemU7CiAgICAgfQpAQCAtMTEwLDcgKzExMCw3IEBAIFBh
c3NSZWZQdHI8QmxvYj4gQmxvYjo6d2Via2l0U2xpY2UobG9uZyBsb25nIHN0YXJ0LCBsb25nIGxv
bmcgZW5kLCBjb25zdCBTdHJpbmcmCiAgICAgT3duUHRyPEJsb2JEYXRhPiBibG9iRGF0YSA9IEJs
b2JEYXRhOjpjcmVhdGUoKTsKICAgICBibG9iRGF0YS0+c2V0Q29udGVudFR5cGUoY29udGVudFR5
cGUpOwogICAgIGlmIChpc0ZpbGUoKSkKLSAgICAgICAgYmxvYkRhdGEtPmFwcGVuZEZpbGUoc3Rh
dGljX2Nhc3Q8Y29uc3QgRmlsZSo+KHRoaXMpLT5wYXRoKCksIHN0YXJ0LCBsZW5ndGgsIG1vZGlm
aWNhdGlvblRpbWUpOworICAgICAgICBibG9iRGF0YS0+YXBwZW5kRmlsZSh0b0ZpbGUodGhpcykt
PnBhdGgoKSwgc3RhcnQsIGxlbmd0aCwgbW9kaWZpY2F0aW9uVGltZSk7CiAgICAgZWxzZQogICAg
ICAgICBibG9iRGF0YS0+YXBwZW5kQmxvYihtX2ludGVybmFsVVJMLCBzdGFydCwgbGVuZ3RoKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmggYi9Tb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL0Jsb2IuaAppbmRleCBmNWYxODUyZjhkNTI3NGJjNGM3MGFhZDE3OTE5OWRl
NjQ4MmYyNzcwLi45YmM2MjM0YWM4ZDI1MmUwMWM5M2U1MGFjZDcyZWM5MDkwMTYwMzYwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL0Jsb2IuaApAQCAtODIsNyArODIsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gYXMg
YW4gaWRlbnRpZmllciBmb3IgdGhpcyBibG9iLiBUaGUgaW50ZXJuYWwgVVJMIGlzIG5ldmVyIHVz
ZWQgdG8gc291cmNlIHRoZSBibG9iJ3MgY29udGVudAogICAgIC8vIGludG8gYW4gSFRNTCBvciBm
b3IgRmlsZVJlYWQnaW5nLCBwdWJsaWMgYmxvYiBVUkxzIG11c3QgYmUgdXNlZCBmb3IgdGhvc2Ug
cHVycG9zZXMuCiAgICAgS1VSTCBtX2ludGVybmFsVVJMOwotICAgIAorCiAgICAgU3RyaW5nIG1f
dHlwZTsKICAgICBsb25nIGxvbmcgbV9zaXplOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvRmlsZS5oIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmgKaW5kZXgg
NjMzMWEyZDQ5OTc2NzJiNmZmMWI0ZDY2NmVhZjQ3ZGM1MDk5NWQwMy4uZTg1MmM2YWRmNjdjYzdi
ZDkwNDY1ZTFjMzI2ZTI4MTkxYTkxMTNjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9GaWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmgKQEAgLTExMSw2
ICsxMTEsMTggQEAgcHJpdmF0ZToKICNlbmRpZgogfTsKIAoraW5saW5lIEZpbGUqIHRvRmlsZShC
bG9iKiBibG9iKQoreworICAgIEFTU0VSVCghYmxvYiB8fCBibG9iLT5pc0ZpbGUoKSk7CisgICAg
cmV0dXJuIHN0YXRpY19jYXN0PEZpbGUqPihibG9iKTsKK30KKworaW5saW5lIGNvbnN0IEZpbGUq
IHRvRmlsZShjb25zdCBCbG9iKiBibG9iKQoreworICAgIEFTU0VSVCghYmxvYiB8fCBibG9iLT5p
c0ZpbGUoKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEZpbGUqPihibG9iKTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRmlsZV9oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9GaWxlUmVhZGVyLmNwcAppbmRleCA5YmU0M2FhYTg0OTY2ZTI0MjZkNjViMjhkOWY1
NWZkZWE5Nzk3YjNhLi5lMDViMWQ5NzEyZDM3MjdmNTc4Mzg3YWM5ZTQ5NTFiMTQzNjkwOTFiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5jcHAKQEAgLTkwLDcgKzkwLDcgQEAgdm9p
ZCBGaWxlUmVhZGVyOjpyZWFkQXNBcnJheUJ1ZmZlcihCbG9iKiBibG9iLCBFeGNlcHRpb25Db2Rl
JiBlYykKICAgICBpZiAoIWJsb2IpCiAgICAgICAgIHJldHVybjsKIAotICAgIExPRyhGaWxlQVBJ
LCAiRmlsZVJlYWRlcjogcmVhZGluZyBhcyBhcnJheSBidWZmZXI6ICVzICVzXG4iLCBibG9iLT51
cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBibG9iLT5pc0ZpbGUoKSA/IHN0YXRpY19jYXN0
PEZpbGUqPihibG9iKS0+cGF0aCgpLnV0ZjgoKS5kYXRhKCkgOiAiIik7CisgICAgTE9HKEZpbGVB
UEksICJGaWxlUmVhZGVyOiByZWFkaW5nIGFzIGFycmF5IGJ1ZmZlcjogJXMgJXNcbiIsIGJsb2It
PnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIGJsb2ItPmlzRmlsZSgpID8gdG9GaWxlKGJs
b2IpLT5wYXRoKCkudXRmOCgpLmRhdGEoKSA6ICIiKTsKIAogICAgIHJlYWRJbnRlcm5hbChibG9i
LCBGaWxlUmVhZGVyTG9hZGVyOjpSZWFkQXNBcnJheUJ1ZmZlciwgZWMpOwogfQpAQCAtMTAwLDcg
KzEwMCw3IEBAIHZvaWQgRmlsZVJlYWRlcjo6cmVhZEFzQmluYXJ5U3RyaW5nKEJsb2IqIGJsb2Is
IEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIGlmICghYmxvYikKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgTE9HKEZpbGVBUEksICJGaWxlUmVhZGVyOiByZWFkaW5nIGFzIGJpbmFyeTogJXMgJXNcbiIs
IGJsb2ItPnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIGJsb2ItPmlzRmlsZSgpID8gc3Rh
dGljX2Nhc3Q8RmlsZSo+KGJsb2IpLT5wYXRoKCkudXRmOCgpLmRhdGEoKSA6ICIiKTsKKyAgICBM
T0coRmlsZUFQSSwgIkZpbGVSZWFkZXI6IHJlYWRpbmcgYXMgYmluYXJ5OiAlcyAlc1xuIiwgYmxv
Yi0+dXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgYmxvYi0+aXNGaWxlKCkgPyB0b0ZpbGUo
YmxvYiktPnBhdGgoKS51dGY4KCkuZGF0YSgpIDogIiIpOwogCiAgICAgcmVhZEludGVybmFsKGJs
b2IsIEZpbGVSZWFkZXJMb2FkZXI6OlJlYWRBc0JpbmFyeVN0cmluZywgZWMpOwogfQpAQCAtMTEw
LDcgKzExMCw3IEBAIHZvaWQgRmlsZVJlYWRlcjo6cmVhZEFzVGV4dChCbG9iKiBibG9iLCBjb25z
dCBTdHJpbmcmIGVuY29kaW5nLCBFeGNlcHRpb25Db2RlJiBlCiAgICAgaWYgKCFibG9iKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBMT0coRmlsZUFQSSwgIkZpbGVSZWFkZXI6IHJlYWRpbmcgYXMg
dGV4dDogJXMgJXNcbiIsIGJsb2ItPnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIGJsb2It
PmlzRmlsZSgpID8gc3RhdGljX2Nhc3Q8RmlsZSo+KGJsb2IpLT5wYXRoKCkudXRmOCgpLmRhdGEo
KSA6ICIiKTsKKyAgICBMT0coRmlsZUFQSSwgIkZpbGVSZWFkZXI6IHJlYWRpbmcgYXMgdGV4dDog
JXMgJXNcbiIsIGJsb2ItPnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIGJsb2ItPmlzRmls
ZSgpID8gdG9GaWxlKGJsb2IpLT5wYXRoKCkudXRmOCgpLmRhdGEoKSA6ICIiKTsKIAogICAgIG1f
ZW5jb2RpbmcgPSBlbmNvZGluZzsKICAgICByZWFkSW50ZXJuYWwoYmxvYiwgRmlsZVJlYWRlckxv
YWRlcjo6UmVhZEFzVGV4dCwgZWMpOwpAQCAtMTI2LDcgKzEyNiw3IEBAIHZvaWQgRmlsZVJlYWRl
cjo6cmVhZEFzRGF0YVVSTChCbG9iKiBibG9iLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICBpZiAo
IWJsb2IpCiAgICAgICAgIHJldHVybjsKIAotICAgIExPRyhGaWxlQVBJLCAiRmlsZVJlYWRlcjog
cmVhZGluZyBhcyBkYXRhIFVSTDogJXMgJXNcbiIsIGJsb2ItPnVybCgpLnN0cmluZygpLnV0Zjgo
KS5kYXRhKCksIGJsb2ItPmlzRmlsZSgpID8gc3RhdGljX2Nhc3Q8RmlsZSo+KGJsb2IpLT5wYXRo
KCkudXRmOCgpLmRhdGEoKSA6ICIiKTsKKyAgICBMT0coRmlsZUFQSSwgIkZpbGVSZWFkZXI6IHJl
YWRpbmcgYXMgZGF0YSBVUkw6ICVzICVzXG4iLCBibG9iLT51cmwoKS5zdHJpbmcoKS51dGY4KCku
ZGF0YSgpLCBibG9iLT5pc0ZpbGUoKSA/IHRvRmlsZShibG9iKS0+cGF0aCgpLnV0ZjgoKS5kYXRh
KCkgOiAiIik7CiAKICAgICByZWFkSW50ZXJuYWwoYmxvYiwgRmlsZVJlYWRlckxvYWRlcjo6UmVh
ZEFzRGF0YVVSTCwgZWMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9X
ZWJLaXRCbG9iQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1dlYktpdEJsb2JC
dWlsZGVyLmNwcAppbmRleCBhODEwYWQ4ZjU0MmQxOWYxNmM1M2NhMTc3ZGQzMGQ1NTYxZjFlMTk2
Li5lODdiZmU1NTU3MGM3NTA5MDQxNjE1YTI2YzZkY2E1MjFhMzYwNjA2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9maWxlYXBpL1dlYktpdEJsb2JCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL1dlYktpdEJsb2JCdWlsZGVyLmNwcApAQCAtMTAyLDkgKzEwMiw5IEBA
IHZvaWQgV2ViS2l0QmxvYkJ1aWxkZXI6OmFwcGVuZChCbG9iKiBibG9iKQogICAgIGlmICghYmxv
YikKICAgICAgICAgcmV0dXJuOwogICAgIGlmIChibG9iLT5pc0ZpbGUoKSkgeworICAgICAgICBG
aWxlKiBmaWxlID0gdG9GaWxlKGJsb2IpOwogICAgICAgICAvLyBJZiB0aGUgYmxvYiBpcyBmaWxl
IHRoYXQgaXMgbm90IHNuYXBzaG90ZWQsIGNhcHR1cmUgdGhlIHNuYXBzaG90IG5vdy4KICAgICAg
ICAgLy8gRklYTUU6IFRoaXMgaW52b2x2ZXMgc3luY2hyb25vdXMgZmlsZSBvcGVyYXRpb24uIFdl
IG5lZWQgdG8gZmlndXJlIG91dCBob3cgdG8gbWFrZSBpdCBhc3luY2hyb25vdXMuCi0gICAgICAg
IEZpbGUqIGZpbGUgPSBzdGF0aWNfY2FzdDxGaWxlKj4oYmxvYik7CiAgICAgICAgIGxvbmcgbG9u
ZyBzbmFwc2hvdFNpemU7CiAgICAgICAgIGRvdWJsZSBzbmFwc2hvdE1vZGlmaWNhdGlvblRpbWU7
CiAgICAgICAgIGZpbGUtPmNhcHR1cmVTbmFwc2hvdChzbmFwc2hvdFNpemUsIHNuYXBzaG90TW9k
aWZpY2F0aW9uVGltZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJv
bWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJv
bWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5jcHAKaW5kZXggMjVlODljMzFlNWIzZDgzZTJiN2YwZWJk
NDIwYTBlMTUwMzhiZWY2MC4uNTk4NDM2ZGY1Zjk4YmQ1NTkxZmYyYWE1OWU1ZGVjNWE5ZjVhYTI2
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJk
Q2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0NsaXBi
b2FyZENocm9taXVtLmNwcApAQCAtMzEzLDcgKzMxMyw3IEBAIFBhc3NSZWZQdHI8RmlsZUxpc3Q+
IENsaXBib2FyZENocm9taXVtOjpmaWxlcygpIGNvbnN0CiAgICAgICAgIGlmIChtX2RhdGFPYmpl
Y3QtPml0ZW0oaSktPmtpbmQoKSA9PSBEYXRhVHJhbnNmZXJJdGVtOjpraW5kRmlsZSkgewogICAg
ICAgICAgICAgUmVmUHRyPEJsb2I+IGJsb2IgPSBtX2RhdGFPYmplY3QtPml0ZW0oaSktPmdldEFz
RmlsZSgpOwogICAgICAgICAgICAgaWYgKGJsb2IgJiYgYmxvYi0+aXNGaWxlKCkpCi0gICAgICAg
ICAgICAgICAgZmlsZXMtPmFwcGVuZChzdGF0aWNfY2FzdDxGaWxlKj4oYmxvYi5nZXQoKSkpOwor
ICAgICAgICAgICAgICAgIGZpbGVzLT5hcHBlbmQodG9GaWxlKGJsb2IuZ2V0KCkpKTsKICAgICAg
ICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9Gb3JtRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRh
LmNwcAppbmRleCBmNTgxNzQ2MjE5ODI2NDZiNmViZmY0ZDg4MTY4MDJjNDIxMzI4MTE5Li5lYmYy
NzNjZDVjOGUxMzE2M2M5YWNhZjYyZDE0YmY1MDQwZjhjZGRiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcApAQCAtMjA1LDggKzIwNSw4IEBAIHZvaWQg
Rm9ybURhdGE6OmFwcGVuZEtleVZhbHVlUGFpckl0ZW1zKGNvbnN0IEZvcm1EYXRhTGlzdCYgbGlz
dCwgY29uc3QgVGV4dEVuY29kCiAgICAgICAgICAgICBpZiAodmFsdWUuYmxvYigpKSB7CiAgICAg
ICAgICAgICAgICAgU3RyaW5nIG5hbWU7CiAgICAgICAgICAgICAgICAgaWYgKHZhbHVlLmJsb2Io
KS0+aXNGaWxlKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgRmlsZSogZmlsZSA9IHRvRmlsZSh2
YWx1ZS5ibG9iKCkpOwogICAgICAgICAgICAgICAgICAgICAvLyBGb3IgZmlsZSBibG9iLCB1c2Ug
dGhlIGZpbGVuYW1lIChvciByZWxhdGl2ZSBwYXRoIGlmIGl0IGlzIHByZXNlbnQpIGFzIHRoZSBu
YW1lLgotICAgICAgICAgICAgICAgICAgICBGaWxlKiBmaWxlID0gc3RhdGljX2Nhc3Q8RmlsZSo+
KHZhbHVlLmJsb2IoKSk7CiAjaWYgRU5BQkxFKERJUkVDVE9SWV9VUExPQUQpICAgICAgICAgICAg
ICAgIAogICAgICAgICAgICAgICAgICAgICBuYW1lID0gZmlsZS0+d2Via2l0UmVsYXRpdmVQYXRo
KCkuaXNFbXB0eSgpID8gZmlsZS0+bmFtZSgpIDogZmlsZS0+d2Via2l0UmVsYXRpdmVQYXRoKCk7
CiAjZWxzZQpAQCAtMjQ4LDkgKzI0OCwxMCBAQCB2b2lkIEZvcm1EYXRhOjphcHBlbmRLZXlWYWx1
ZVBhaXJJdGVtcyhjb25zdCBGb3JtRGF0YUxpc3QmIGxpc3QsIGNvbnN0IFRleHRFbmNvZAogICAg
ICAgICAgICAgYXBwZW5kRGF0YShoZWFkZXIuZGF0YSgpLCBoZWFkZXIuc2l6ZSgpKTsKICAgICAg
ICAgICAgIGlmICh2YWx1ZS5ibG9iKCkpIHsKICAgICAgICAgICAgICAgICBpZiAodmFsdWUuYmxv
YigpLT5pc0ZpbGUoKSkgeworICAgICAgICAgICAgICAgICAgICBGaWxlKiBmaWxlID0gdG9GaWxl
KHZhbHVlLmJsb2IoKSk7CiAgICAgICAgICAgICAgICAgICAgIC8vIERvIG5vdCBhZGQgdGhlIGZp
bGUgaWYgdGhlIHBhdGggaXMgZW1wdHkuCi0gICAgICAgICAgICAgICAgICAgIGlmICghc3RhdGlj
X2Nhc3Q8RmlsZSo+KHZhbHVlLmJsb2IoKSktPnBhdGgoKS5pc0VtcHR5KCkpCi0gICAgICAgICAg
ICAgICAgICAgICAgICBhcHBlbmRGaWxlKHN0YXRpY19jYXN0PEZpbGUqPih2YWx1ZS5ibG9iKCkp
LT5wYXRoKCksIHNob3VsZEdlbmVyYXRlRmlsZSk7CisgICAgICAgICAgICAgICAgICAgIGlmICgh
ZmlsZS0+cGF0aCgpLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZEZp
bGUoZmlsZS0+cGF0aCgpLCBzaG91bGRHZW5lcmF0ZUZpbGUpOwogICAgICAgICAgICAgICAgIH0K
ICNpZiBFTkFCTEUoQkxPQikKICAgICAgICAgICAgICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hN
TEh0dHBSZXF1ZXN0LmNwcAppbmRleCAwNTk2NzJiMjJkZTk1ZGU2ZDc3NjlhMmM2ZTliMDY3YTIz
ZGI1MGE3Li4wZTllMGFiNGJmZWExZWYzOWFkZjkwYmE5M2E3ZThlMGYyNGU0MTk5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKQEAgLTYxNiw3ICs2MTYsNyBAQCB2b2lkIFhN
TEh0dHBSZXF1ZXN0OjpzZW5kKEJsb2IqIGJvZHksIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgICAg
ICAvLyBGSVhNRTogYWRkIHN1cHBvcnQgZm9yIHVwbG9hZGluZyBidW5kbGVzLgogICAgICAgICBt
X3JlcXVlc3RFbnRpdHlCb2R5ID0gRm9ybURhdGE6OmNyZWF0ZSgpOwogICAgICAgICBpZiAoYm9k
eS0+aXNGaWxlKCkpCi0gICAgICAgICAgICBtX3JlcXVlc3RFbnRpdHlCb2R5LT5hcHBlbmRGaWxl
KHN0YXRpY19jYXN0PEZpbGUqPihib2R5KS0+cGF0aCgpKTsKKyAgICAgICAgICAgIG1fcmVxdWVz
dEVudGl0eUJvZHktPmFwcGVuZEZpbGUodG9GaWxlKGJvZHkpLT5wYXRoKCkpOwogI2lmIEVOQUJM
RShCTE9CKQogICAgICAgICBlbHNlCiAgICAgICAgICAgICBtX3JlcXVlc3RFbnRpdHlCb2R5LT5h
cHBlbmRCbG9iKGJvZHktPnVybCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYkRyYWdEYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRy
YWdEYXRhLmNwcAppbmRleCBmOTg0NmVmZDg2ZmY3NTFlMjMxYTA3M2FmMDNiZjQ1MTA1YzI4ODhm
Li5iY2IwYWQzOGE1MWYwZWIyYTRmYzNmM2NlYmM2OGEwNjNlMGM0ZGNmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEcmFnRGF0YS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViRHJhZ0RhdGEuY3BwCkBAIC04Niw3ICs4Niw3IEBAIFdlYlZl
Y3RvcjxXZWJEcmFnRGF0YTo6SXRlbT4gV2ViRHJhZ0RhdGE6Oml0ZW1zKCkgY29uc3QKICAgICAg
ICAgICAgICAgICBpdGVtLnN0b3JhZ2VUeXBlID0gSXRlbTo6U3RvcmFnZVR5cGVGaWxlbmFtZTsK
ICAgICAgICAgICAgICAgICBSZWZQdHI8V2ViQ29yZTo6QmxvYj4gYmxvYiA9IG9yaWdpbmFsSXRl
bS0+Z2V0QXNGaWxlKCk7CiAgICAgICAgICAgICAgICAgaWYgKGJsb2ItPmlzRmlsZSgpKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIEZpbGUqIGZpbGUgPSBzdGF0aWNfY2FzdDxGaWxlKj4oYmxvYi5n
ZXQoKSk7CisgICAgICAgICAgICAgICAgICAgIEZpbGUqIGZpbGUgPSB0b0ZpbGUoYmxvYi5nZXQo
KSk7CiAgICAgICAgICAgICAgICAgICAgIGl0ZW0uZmlsZW5hbWVEYXRhID0gZmlsZS0+cGF0aCgp
OwogICAgICAgICAgICAgICAgICAgICBpdGVtLmRpc3BsYXlOYW1lRGF0YSA9IGZpbGUtPm5hbWUo
KTsKICAgICAgICAgICAgICAgICB9IGVsc2UK
</data>

          </attachment>
      

    </bug>

</bugzilla>