<?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>103862</bug_id>
          
          <creation_ts>2012-12-02 23:53:17 -0800</creation_ts>
          <short_desc>[V8] Make v8::Null(isolate) faster by caching the value in V8 bindings</short_desc>
          <delta_ts>2012-12-04 10:29:30 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore JavaScript</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="Kentaro Hara">haraken</reporter>
          <assigned_to name="Kentaro Hara">haraken</assigned_to>
          <cc>abarth</cc>
    
    <cc>japhet</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>781180</commentid>
    <comment_count>0</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-12-02 23:53:17 -0800</bug_when>
    <thetext>Performance comparison between V8 and JSC revealed that DOM attributes that return v8::Null(isolate) are much slower than JSC. (https://docs.google.com/a/chromium.org/spreadsheet/ccc?key=0AlobCOyvTnPKdDg5S0dMdGRGRTRSaW53V1ppVzh6eXc#gid=2)

We can optimize v8::Null(isolate) by caching the value to V8PerIsolateData. (Although I don&apos;t like the optimization, it looks difficult to optimize v8::Null(isolate) more.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781187</commentid>
    <comment_count>1</comment_count>
      <attachid>177196</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-12-03 00:01:05 -0800</bug_when>
    <thetext>Created attachment 177196
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781466</commentid>
    <comment_count>2</comment_count>
      <attachid>177196</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-12-03 08:03:42 -0800</bug_when>
    <thetext>Comment on attachment 177196
Patch

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

&gt; Source/WebCore/bindings/v8/V8PerIsolateData.h:143
&gt; +    v8::Handle&lt;v8::Value&gt; m_v8Null;

Do we need to use a ScopedPersistent here?  It&apos;s unclear to me whether V8 promises to return a persistent handel to null via v8::Null</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781585</commentid>
    <comment_count>3</comment_count>
      <attachid>177196</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-12-03 10:17:25 -0800</bug_when>
    <thetext>Comment on attachment 177196
Patch

This patch seems to be causing lots of crashes on the ews bots.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782041</commentid>
    <comment_count>4</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-12-03 16:52:45 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 177196 [details])
&gt; This patch seems to be causing lots of crashes on the ews bots.

The problem will be fixed in bug 103949.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782289</commentid>
    <comment_count>5</comment_count>
      <attachid>177427</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-12-03 23:56:53 -0800</bug_when>
    <thetext>Created attachment 177427
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782679</commentid>
    <comment_count>6</comment_count>
      <attachid>177427</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-04 10:29:27 -0800</bug_when>
    <thetext>Comment on attachment 177427
Patch

Clearing flags on attachment: 177427

Committed r136526: &lt;http://trac.webkit.org/changeset/136526&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782680</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-04 10:29:30 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177196</attachid>
            <date>2012-12-03 00:01:05 -0800</date>
            <delta_ts>2012-12-03 23:56:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103862-20121203165832.patch</filename>
            <type>text/plain</type>
            <size>14058</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2MzYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzQxMTA4YTIwYzljNzFm
NmRmNjlkNTgyYmY1MzQzMTU4ODg5MmFiZi4uMWEzMjE3Y2RjZjlmZmEyOWE5OWVkODdkMDcxZDgy
N2NkNmQwZmE4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDEyLTEyLTAyICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbVjhdIE1ha2Ugdjg6
Ok51bGwoaXNvbGF0ZSkgZmFzdGVyIGJ5IGNhY2hpbmcgdGhlIHZhbHVlIGluIFY4IGJpbmRpbmdz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDM4NjIK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQZXJmb3Jt
YW5jZSBjb21wYXJpc29uIGJldHdlZW4gVjggYW5kIEpTQyByZXZlYWxlZCB0aGF0IERPTSBhdHRy
aWJ1dGVzCisgICAgICAgIHRoYXQgcmV0dXJuIHY4OjpOdWxsKGlzb2xhdGUpIGFyZSBtdWNoIHNs
b3dlciB0aGFuIEpTQy4KKyAgICAgICAgKGh0dHBzOi8vZG9jcy5nb29nbGUuY29tL2EvY2hyb21p
dW0ub3JnL3NwcmVhZHNoZWV0L2NjYz9rZXk9MEFsb2JDT3l2VG5QS2REZzVTMGRNZEdSR1JUUlNh
VzUzVjFwcFZ6aDZlWGMjZ2lkPTIpCisKKyAgICAgICAgV2UgY2FuIG9wdGltaXplIHY4OjpOdWxs
KGlzb2xhdGUpIGJ5IGNhY2hpbmcgdGhlIHZhbHVlIHRvIFY4UGVySXNvbGF0ZURhdGEuCisgICAg
ICAgIChBbHRob3VnaCBJIGRvbid0IGxpa2UgdGhlIG9wdGltaXphdGlvbiwgaXQgbG9va3MgZGlm
ZmljdWx0IHRvIG9wdGltaXplCisgICAgICAgIHY4OjpOdWxsKGlzb2xhdGUpIG1vcmUuKQorCisg
ICAgICAgIFtCaW5kaW5ncy91bmRlZmluZWQtZmlyc3QtY2hpbGQuaHRtbF0KKyAgICAgICAgQmVm
b3JlOiA5NjkgcnVucy9zZWMsIDk3MCBydW5zL3NlYywgOTYyIHJ1bnMvc2VjCisgICAgICAgIEFm
dGVyOiAgMTA4NiBydW5zL3NlYywgMTA4NSBydW5zL3NlYywgMTA4NiBydW5zL3NlYworCisgICAg
ICAgIE5vIHRlc3RzLiBObyBjaGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbToKKyAgICAgICAgKEdlbmVyYXRlSGVhZGVyKToK
KyAgICAgICAgKEdlbmVyYXRlTm9ybWFsQXR0ckdldHRlcik6CisgICAgICAgIChHZW5lcmF0ZUZ1
bmN0aW9uQ2FsbGJhY2spOgorICAgICAgICAoTmF0aXZlVG9KU1ZhbHVlKToKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Tm9kZS5oOgorICAgICAgICAoV2ViQ29yZTo6
dG9WOEZhc3QpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmou
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OmNvbnRlbnREb2N1bWVu
dEF0dHJHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OmdldFNW
R0RvY3VtZW50Q2FsbGJhY2spOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9W
OFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVY4SW50ZXJuYWw6OnZhbHVlQXR0
ckdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50
ZXJmYWNlVjhJbnRlcm5hbDo6cmVhZG9ubHlWYWx1ZUF0dHJHZXR0ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVY4SW50ZXJuYWw6OmNhY2hl
ZFZhbHVlQXR0ckdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlVjhJbnRlcm5hbDo6Y2FjaGVkUmVhZG9ubHlWYWx1ZUF0dHJHZXR0ZXIp
OgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4QmluZGluZy5oOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChXZWJDb3JlOjp2OE51bGwpOgorICAgICAgICAoV2ViQ29yZTo6djhOdWxsV2l0
aENoZWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOFBlcklzb2xhdGVEYXRhLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlY4UGVySXNvbGF0ZURhdGE6OlY4UGVySXNvbGF0ZURhdGEpOgorICAg
ICAgICAqIGJpbmRpbmdzL3Y4L1Y4UGVySXNvbGF0ZURhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlY4UGVySXNvbGF0ZURhdGE6OnY4TnVsbCk6CisgICAgICAgIChWOFBlcklzb2xhdGVEYXRhKToK
KwogMjAxMi0xMi0wMiAgTWFyeSBXdSAgPG1hcnkud3VAdG9yY2htb2JpbGUuY29tLmNuPgogCiAg
ICAgICAgIHNob3VsZCBzbmlmZiBpdCBpZiBtaW1ldHlwZSBkb24ndCBjb250YWluIGEgc2xhc2gu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JWOC5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4
LnBtCmluZGV4IGEzNGY1NjljZjVjMDhkZDRhNWZlNDA1ZjhhYzY5ZjA2ZGQ4MWY0NTAuLjU2ZGNk
MDhhNDBjNGEwYmMxYzE3ZTQ0MDNkOTE4MTNjZjQ0NzY2ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCkBAIC01ODgsNyArNTg4
LDcgQEAgRU5ECiBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0KCR7bmF0aXZl
VHlwZX0qIGltcGwsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8sIE5vZGUqIGhvbGRlcikK
IHsKICAgICBpZiAoVU5MSUtFTFkoIWltcGwpKQotICAgICAgICByZXR1cm4gdjg6Ok51bGwoaW5m
by5HZXRJc29sYXRlKCkpOworICAgICAgICByZXR1cm4gdjhOdWxsKGluZm8uR2V0SXNvbGF0ZSgp
KTsKICAgICAvLyBXaGF0IHdlJ2QgcmVhbGx5IGxpa2UgdG8gY2hlY2sgaGVyZSBpcyB3aGV0aGVy
IHdlJ3JlIGluIHRoZSBtYWluIHdvcmxkIG9yCiAgICAgLy8gaW4gYW4gaXNvbGF0ZWQgd29ybGQu
IFRoZSBmYXN0ZXN0IHdheSB3ZSBrbm93IGhvdyB0byBkbyB0aGF0IGlzIHRvIGNoZWNrCiAgICAg
Ly8gd2hldGhlciB0aGUgaG9sZGVyJ3MgaW5saW5lIHdyYXBwZXIgaXMgdGhlIHNhbWUgd3JhcHBl
ciB3ZSBzZWUgaW4gdGhlCkBAIC05NzAsNyArOTcwLDcgQEAgRU5ECiAKICAgICAjIEdlbmVyYXRl
IHNlY3VyaXR5IGNoZWNrcyBpZiBuZWNlc3NhcnkKICAgICBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0
dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2hlY2tTZWN1cml0eUZvck5vZGUifSkgewotICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgIGlmICghQmluZGluZ1NlY3VyaXR5Ojpz
aG91bGRBbGxvd0FjY2Vzc1RvTm9kZShCaW5kaW5nU3RhdGU6Omluc3RhbmNlKCksIGltcC0+IiAu
ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZSAuICIoKSkpXG4gICAgICAgIHJldHVybiB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4odjg6Ok51bGwoaW5mby5HZXRJc29sYXRlKCkpKTtcblxuIik7Cisg
ICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6
OnNob3VsZEFsbG93QWNjZXNzVG9Ob2RlKEJpbmRpbmdTdGF0ZTo6aW5zdGFuY2UoKSwgaW1wLT4i
IC4gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lIC4gIigpKSlcbiAgICAgICAgcmV0dXJuIHY4
OjpIYW5kbGU8djg6OlZhbHVlPih2OE51bGwoaW5mby5HZXRJc29sYXRlKCkpKTtcblxuIik7CiAg
ICAgfQogCiAgICAgbXkgJHVzZUV4Y2VwdGlvbnMgPSAxIGlmIEB7JGF0dHJpYnV0ZS0+Z2V0dGVy
RXhjZXB0aW9uc307CkBAIC0xMTI0LDcgKzExMjQsNyBAQCBFTkQKICAgICAgICAgbXkgJGdldHRl
ckZ1bmMgPSAkY29kZUdlbmVyYXRvci0+V0tfbGNmaXJzdCgkYXR0cmlidXRlLT5zaWduYXR1cmUt
Pm5hbWUpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCA8PEVORCk7CiAgICAgU2Vy
aWFsaXplZFNjcmlwdFZhbHVlKiBzZXJpYWxpemVkID0gaW1wLT4ke2dldHRlckZ1bmN9KCk7Ci0g
ICAgdmFsdWUgPSBzZXJpYWxpemVkID8gc2VyaWFsaXplZC0+ZGVzZXJpYWxpemUoKSA6IHY4OjpI
YW5kbGU8djg6OlZhbHVlPih2ODo6TnVsbChpbmZvLkdldElzb2xhdGUoKSkpOworICAgIHZhbHVl
ID0gc2VyaWFsaXplZCA/IHNlcmlhbGl6ZWQtPmRlc2VyaWFsaXplKCkgOiB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4odjhOdWxsKGluZm8uR2V0SXNvbGF0ZSgpKSk7CiAgICAgaW5mby5Ib2xkZXIoKS0+
U2V0SGlkZGVuVmFsdWUocHJvcGVydHlOYW1lLCB2YWx1ZSk7CiAgICAgcmV0dXJuIHZhbHVlOwog
RU5ECkBAIC0xNjA4LDcgKzE2MDgsNyBAQCBFTkQKIAogICAgIGlmICgkZnVuY3Rpb24tPnNpZ25h
dHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNoZWNrU2VjdXJpdHlGb3JOb2RlIn0pIHsKICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6
c2hvdWxkQWxsb3dBY2Nlc3NUb05vZGUoQmluZGluZ1N0YXRlOjppbnN0YW5jZSgpLCBpbXAtPiIg
LiAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZSAuICIoZWMpKSlcbiIpOwotICAgICAgICBwdXNo
KEBpbXBsQ29udGVudERlY2xzLCAiICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+
KHY4OjpOdWxsKGFyZ3MuR2V0SXNvbGF0ZSgpKSk7XG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENv
bnRlbnREZWNscywgIiAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPih2OE51bGwo
YXJncy5HZXRJc29sYXRlKCkpKTtcbiIpOwogRU5ECiAgICAgfQogCkBAIC00MTIzLDEyICs0MTIz
LDEyIEBAIHN1YiBOYXRpdmVUb0pTVmFsdWUKIAogICAgIGlmICgkdHlwZSBlcSAiRXZlbnRMaXN0
ZW5lciIpIHsKICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIlY4QWJzdHJhY3RFdmVudExpc3Rl
bmVyLmgiKTsKLSAgICAgICAgcmV0dXJuICIke3ZhbHVlfSA/IHY4OjpIYW5kbGU8djg6OlZhbHVl
PihzdGF0aWNfY2FzdDxWOEFic3RyYWN0RXZlbnRMaXN0ZW5lcio+KCR7dmFsdWV9KS0+Z2V0TGlz
dGVuZXJPYmplY3QoaW1wLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpKSA6IHY4OjpIYW5kbGU8
djg6OlZhbHVlPigiIC4gKCRnZXRJc29sYXRlID8gInY4OjpOdWxsKCRnZXRJc29sYXRlKSIgOiAi
djg6Ok51bGwoKSIpIC4gIikiOworICAgICAgICByZXR1cm4gIiR7dmFsdWV9ID8gdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+KHN0YXRpY19jYXN0PFY4QWJzdHJhY3RFdmVudExpc3RlbmVyKj4oJHt2YWx1
ZX0pLT5nZXRMaXN0ZW5lck9iamVjdChpbXAtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkpIDog
djg6OkhhbmRsZTx2ODo6VmFsdWU+KCIgLiAoJGdldElzb2xhdGUgPyAidjhOdWxsKCRnZXRJc29s
YXRlKSIgOiAidjg6Ok51bGwoKSIpIC4gIikiOwogICAgIH0KIAogICAgIGlmICgkdHlwZSBlcSAi
U2VyaWFsaXplZFNjcmlwdFZhbHVlIikgewogICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiJHR5
cGUuaCIpOwotICAgICAgICByZXR1cm4gIiR2YWx1ZSA/ICR2YWx1ZS0+ZGVzZXJpYWxpemUoKSA6
IHY4OjpIYW5kbGU8djg6OlZhbHVlPigiIC4gKCRnZXRJc29sYXRlID8gInY4OjpOdWxsKCRnZXRJ
c29sYXRlKSIgOiAidjg6Ok51bGwoKSIpIC4gIikiOworICAgICAgICByZXR1cm4gIiR2YWx1ZSA/
ICR2YWx1ZS0+ZGVzZXJpYWxpemUoKSA6IHY4OjpIYW5kbGU8djg6OlZhbHVlPigiIC4gKCRnZXRJ
c29sYXRlID8gInY4TnVsbCgkZ2V0SXNvbGF0ZSkiIDogInY4OjpOdWxsKCkiKSAuICIpIjsKICAg
ICB9CiAKICAgICBBZGRUb0ltcGxJbmNsdWRlcygid3RmL1JlZkNvdW50ZWQuaCIpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5vZGUu
aCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROb2RlLmgK
aW5kZXggOWFjYjFlNDUxYWZkYjIzMGE0MzBhOWVlMGU0ZGY2OWIyZTY0ZjQ3My4uYmY5MmQ2OGY2
ODg1M2ExMGNiZjMwZjdjOWZjNTBhM2Q1YWY1ZDcwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5vZGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Tm9kZS5oCkBAIC04Myw3ICs4Myw3
IEBAIGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChUZXN0Tm9kZSogaW1wbCwgdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvCiBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IHRvVjhGYXN0KFRlc3ROb2RlKiBpbXBsLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvLCBO
b2RlKiBob2xkZXIpCiB7CiAgICAgaWYgKFVOTElLRUxZKCFpbXBsKSkKLSAgICAgICAgcmV0dXJu
IHY4OjpOdWxsKGluZm8uR2V0SXNvbGF0ZSgpKTsKKyAgICAgICAgcmV0dXJuIHY4TnVsbChpbmZv
LkdldElzb2xhdGUoKSk7CiAgICAgLy8gV2hhdCB3ZSdkIHJlYWxseSBsaWtlIHRvIGNoZWNrIGhl
cmUgaXMgd2hldGhlciB3ZSdyZSBpbiB0aGUgbWFpbiB3b3JsZCBvcgogICAgIC8vIGluIGFuIGlz
b2xhdGVkIHdvcmxkLiBUaGUgZmFzdGVzdCB3YXkgd2Uga25vdyBob3cgdG8gZG8gdGhhdCBpcyB0
byBjaGVjawogICAgIC8vIHdoZXRoZXIgdGhlIGhvbGRlcidzIGlubGluZSB3cmFwcGVyIGlzIHRo
ZSBzYW1lIHdyYXBwZXIgd2Ugc2VlIGluIHRoZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcAppbmRleCBiOGU2YjE1NTU1M2Iz
OThjNTBkMTlkOGU4OTA5OTgyMTA3M2Q3YzUxLi4xZmU5MzNhY2Q0NmUwMWU4MzJiNjVlODFkMTk3
ZGE5Nzc4NWQwNDUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVjgvVjhUZXN0T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcApAQCAtOTIwLDcgKzkyMCw3IEBAIHN0YXRpYyB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gY29udGVudERvY3VtZW50QXR0ckdldHRlcih2ODo6TG9jYWw8djg6
OlN0cmluZz4gbmFtCiAgICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai5jb250ZW50RG9jdW1lbnQu
X2dldCIpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xk
ZXIoKSk7CiAgICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9Ob2Rl
KEJpbmRpbmdTdGF0ZTo6aW5zdGFuY2UoKSwgaW1wLT5jb250ZW50RG9jdW1lbnQoKSkpCi0gICAg
ICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4odjg6Ok51bGwoaW5mby5HZXRJc29sYXRl
KCkpKTsKKyAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPih2OE51bGwoaW5mby5H
ZXRJc29sYXRlKCkpKTsKIAogICAgIHJldHVybiB0b1Y4KGltcC0+Y29udGVudERvY3VtZW50KCks
IGluZm8uSG9sZGVyKCksIGluZm8uR2V0SXNvbGF0ZSgpKTsKIH0KQEAgLTE4NDcsNyArMTg0Nyw3
IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZ2V0U1ZHRG9jdW1lbnRDYWxsYmFjayhj
b25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAg
IHsKICAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb05vZGUoQmlu
ZGluZ1N0YXRlOjppbnN0YW5jZSgpLCBpbXAtPmdldFNWR0RvY3VtZW50KGVjKSkpCi0gICAgICAg
IHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4odjg6Ok51bGwoYXJncy5HZXRJc29sYXRlKCkp
KTsKKyAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPih2OE51bGwoYXJncy5HZXRJ
c29sYXRlKCkpKTsKICAgICBSZWZQdHI8U1ZHRG9jdW1lbnQ+IHJlc3VsdCA9IGltcC0+Z2V0U1ZH
RG9jdW1lbnQoZWMpOwogICAgIGlmIChVTkxJS0VMWShlYykpCiAgICAgICAgIGdvdG8gZmFpbDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRl
c3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZS5jcHAKaW5kZXggNTk2ODZkNzA5NmFiMDg0NTY3ODE1MmQ3MDBkZmYzYzgzZTNkMDlhZC4uYjgx
NDQxZmIxZDk5MGYwNzcxYmQwZTEwOGZlNDk5NTVhNGM2M2IxMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUludGVyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Y4L1Y4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKQEAgLTQ4LDcg
KzQ4LDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZUF0dHJHZXR0ZXIodjg6
OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHYKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5U
ZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLnZhbHVlLl9nZXQiKTsKICAgICBUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKiBpbXAgPSBWOFRlc3RTZXJpYWxpemVkU2Ny
aXB0VmFsdWVJbnRlcmZhY2U6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwotICAgIHJldHVybiBp
bXAtPnZhbHVlKCkgPyBpbXAtPnZhbHVlKCktPmRlc2VyaWFsaXplKCkgOiB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4odjg6Ok51bGwoaW5mby5HZXRJc29sYXRlKCkpKTsKKyAgICByZXR1cm4gaW1wLT52
YWx1ZSgpID8gaW1wLT52YWx1ZSgpLT5kZXNlcmlhbGl6ZSgpIDogdjg6OkhhbmRsZTx2ODo6VmFs
dWU+KHY4TnVsbChpbmZvLkdldElzb2xhdGUoKSkpOwogfQogCiBzdGF0aWMgdm9pZCB2YWx1ZUF0
dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+
IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQpAQCAtNjQsNyArNjQsNyBAQCBz
dGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHJlYWRvbmx5VmFsdWVBdHRyR2V0dGVyKHY4OjpM
b2NhbDx2ODo6U3RyaW5nPiBuYW1lLAogewogICAgIElOQ19TVEFUUygiRE9NLlRlc3RTZXJpYWxp
emVkU2NyaXB0VmFsdWVJbnRlcmZhY2UucmVhZG9ubHlWYWx1ZS5fZ2V0Iik7CiAgICAgVGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSogaW1wID0gVjhUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKLSAgICByZXR1cm4gaW1w
LT5yZWFkb25seVZhbHVlKCkgPyBpbXAtPnJlYWRvbmx5VmFsdWUoKS0+ZGVzZXJpYWxpemUoKSA6
IHY4OjpIYW5kbGU8djg6OlZhbHVlPih2ODo6TnVsbChpbmZvLkdldElzb2xhdGUoKSkpOworICAg
IHJldHVybiBpbXAtPnJlYWRvbmx5VmFsdWUoKSA/IGltcC0+cmVhZG9ubHlWYWx1ZSgpLT5kZXNl
cmlhbGl6ZSgpIDogdjg6OkhhbmRsZTx2ODo6VmFsdWU+KHY4TnVsbChpbmZvLkdldElzb2xhdGUo
KSkpOwogfQogCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNhY2hlZFZhbHVlQXR0ckdl
dHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYg
aW5mbykKQEAgLTc2LDcgKzc2LDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjYWNo
ZWRWYWx1ZUF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGMKICAgICAgICAg
cmV0dXJuIHZhbHVlOwogICAgIFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqIGlt
cCA9IFY4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6dG9OYXRpdmUoaW5mby5I
b2xkZXIoKSk7CiAgICAgU2VyaWFsaXplZFNjcmlwdFZhbHVlKiBzZXJpYWxpemVkID0gaW1wLT5j
YWNoZWRWYWx1ZSgpOwotICAgIHZhbHVlID0gc2VyaWFsaXplZCA/IHNlcmlhbGl6ZWQtPmRlc2Vy
aWFsaXplKCkgOiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4odjg6Ok51bGwoaW5mby5HZXRJc29sYXRl
KCkpKTsKKyAgICB2YWx1ZSA9IHNlcmlhbGl6ZWQgPyBzZXJpYWxpemVkLT5kZXNlcmlhbGl6ZSgp
IDogdjg6OkhhbmRsZTx2ODo6VmFsdWU+KHY4TnVsbChpbmZvLkdldElzb2xhdGUoKSkpOwogICAg
IGluZm8uSG9sZGVyKCktPlNldEhpZGRlblZhbHVlKHByb3BlcnR5TmFtZSwgdmFsdWUpOwogICAg
IHJldHVybiB2YWx1ZTsKIH0KQEAgLTExNCw3ICsxMTQsNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IGNhY2hlZFJlYWRvbmx5VmFsdWVBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3Ry
aW5nPgogICAgICAgICByZXR1cm4gdmFsdWU7CiAgICAgVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZSogaW1wID0gVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjp0
b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKICAgICBTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHNlcmlh
bGl6ZWQgPSBpbXAtPmNhY2hlZFJlYWRvbmx5VmFsdWUoKTsKLSAgICB2YWx1ZSA9IHNlcmlhbGl6
ZWQgPyBzZXJpYWxpemVkLT5kZXNlcmlhbGl6ZSgpIDogdjg6OkhhbmRsZTx2ODo6VmFsdWU+KHY4
OjpOdWxsKGluZm8uR2V0SXNvbGF0ZSgpKSk7CisgICAgdmFsdWUgPSBzZXJpYWxpemVkID8gc2Vy
aWFsaXplZC0+ZGVzZXJpYWxpemUoKSA6IHY4OjpIYW5kbGU8djg6OlZhbHVlPih2OE51bGwoaW5m
by5HZXRJc29sYXRlKCkpKTsKICAgICBpbmZvLkhvbGRlcigpLT5TZXRIaWRkZW5WYWx1ZShwcm9w
ZXJ0eU5hbWUsIHZhbHVlKTsKICAgICByZXR1cm4gdmFsdWU7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1Y4QmluZGluZy5oCmluZGV4IDVkMmUwNjA5MDlkNDZkZjc1ZmNmODk2NjgwNGRiNTdi
ZDgwMGNmMmQuLjE3MWQzMWJmYmFiOWI2MmQ2NjljYmE5MGNjNzFmYjVkNDNkZTQ1MzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5oCkBAIC03MSwxMyArNzEsMjEgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgIC8vIEEgaGVscGVyIGZvciB0aHJvd2luZyBKYXZhU2NyaXB0
IFR5cGVFcnJvciBmb3Igbm90IGVub3VnaCBhcmd1bWVudHMuCiAgICAgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHRocm93Tm90RW5vdWdoQXJndW1lbnRzRXJyb3Iodjg6Oklzb2xhdGUqKTsKIAorICAg
IC8vIEEgZmFzdCBhY2Nlc3NvciBmb3Igdjg6Ok51bGwoaXNvbGF0ZSkuIGlzb2xhdGUgbXVzdCBu
b3QgYmUgMC4KKyAgICAvLyBJZiBpc29sYXRlIGNhbiBiZSAwLCB1c2UgdjhOdWxsV2l0aENoZWNr
KCkuCisgICAgaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2OE51bGwodjg6Oklzb2xhdGUq
IGlzb2xhdGUpCisgICAgeworICAgICAgICBBU1NFUlQoaXNvbGF0ZSk7CisgICAgICAgIHJldHVy
biBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT52OE51bGwoKTsKKyAgICB9CisKICAg
ICAvLyBTaW5jZSB2ODo6TnVsbChpc29sYXRlKSBjcmFzaGVzIGlmIHdlIHBhc3MgYSBudWxsIGlz
b2xhdGUsCiAgICAgLy8gd2UgbmVlZCB0byB1c2UgdjhOdWxsV2l0aENoZWNrKGlzb2xhdGUpIGlm
IGFuIGlzb2xhdGUgY2FuIGJlIG51bGwuCiAgICAgLy8KICAgICAvLyBGSVhNRTogUmVtb3ZlIGFs
bCBudWxsIGlzb2xhdGVzIGZyb20gVjggYmluZGluZ3MsIGFuZCByZW1vdmUgdjhOdWxsV2l0aENo
ZWNrKGlzb2xhdGUpLgogICAgIGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdjhOdWxsV2l0
aENoZWNrKHY4OjpJc29sYXRlKiBpc29sYXRlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGlzb2xh
dGUgPyB2ODo6TnVsbChpc29sYXRlKSA6IHY4OjpOdWxsKCk7CisgICAgICAgIHJldHVybiBpc29s
YXRlID8gdjhOdWxsKGlzb2xhdGUpIDogdjg6OkhhbmRsZTx2ODo6VmFsdWU+KHY4OjpOdWxsKCkp
OwogICAgIH0KIAogICAgIC8vIENvbnZlcnQgdjggdHlwZXMgdG8gYSBXVEY6OlN0cmluZy4gSWYg
dGhlIFY4IHN0cmluZyBpcyBub3QgYWxyZWFkeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvVjhQZXJJc29sYXRlRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9WOFBlcklzb2xhdGVEYXRhLmNwcAppbmRleCA0Y2JkMmZmMmFhYzg1MGI4ODA3Y2YwZjg5
ZWJlZWQ5N2RhZDc1ZTUzLi5hZWRiZTM4ZmRjNWQyZTgyY2Y0ODFiMGRhMTg3N2JlMTYyZWM4MzBk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFBlcklzb2xhdGVEYXRh
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFBlcklzb2xhdGVEYXRhLmNw
cApAQCAtNDYsNiArNDYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBWOFBlcklzb2xhdGVEYXRh
OjpWOFBlcklzb2xhdGVEYXRhKHY4OjpJc29sYXRlKiBpc29sYXRlKQogICAgIDogbV9zdHJpbmdD
YWNoZShhZG9wdFB0cihuZXcgU3RyaW5nQ2FjaGUoKSkpCiAgICAgLCBtX2ludGVnZXJDYWNoZShh
ZG9wdFB0cihuZXcgSW50ZWdlckNhY2hlKCkpKQorICAgICwgbV92OE51bGwodjg6Ok51bGwoaXNv
bGF0ZSkpCiAgICAgLCBtX2RvbURhdGFTdG9yZSgwKQogICAgICwgbV9oaWRkZW5Qcm9wZXJ0eU5h
bWUoYWRvcHRQdHIobmV3IFY4SGlkZGVuUHJvcGVydHlOYW1lKCkpKQogICAgICwgbV9jb25zdHJ1
Y3Rvck1vZGUoQ29uc3RydWN0b3JNb2RlOjpDcmVhdGVOZXdPYmplY3QpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFBlcklzb2xhdGVEYXRhLmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOFBlcklzb2xhdGVEYXRhLmgKaW5kZXggYWZlMTE0Nzc0YzBmZTM2
OWEyOWVlYThmNjkxZjMzZDI5OGZkZjBkNi4uM2RlMGE4ODY1Y2I0M2FiMDFkMTM3OWRlMDk5Mjkw
MGZkMmQyZTUxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQZXJJ
c29sYXRlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UGVySXNvbGF0
ZURhdGEuaApAQCAtNzgsNiArNzgsOCBAQCBwdWJsaWM6CiAgICAgU3RyaW5nQ2FjaGUqIHN0cmlu
Z0NhY2hlKCkgeyByZXR1cm4gbV9zdHJpbmdDYWNoZS5nZXQoKTsgfQogICAgIEludGVnZXJDYWNo
ZSogaW50ZWdlckNhY2hlKCkgeyByZXR1cm4gbV9pbnRlZ2VyQ2FjaGUuZ2V0KCk7IH0KIAorICAg
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2OE51bGwoKSB7IHJldHVybiBtX3Y4TnVsbDsgfQorCiAg
ICAgdjg6OlBlcnNpc3RlbnQ8djg6OlZhbHVlPiBlbnN1cmVMaXZlUm9vdCgpOwogCiAjaWYgRU5B
QkxFKElOU1BFQ1RPUikKQEAgLTEzOCw2ICsxNDAsNyBAQCBwcml2YXRlOgogICAgIHY4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBtX2xhenlFdmVudExpc3RlbmVyVG9TdHJpbmdU
ZW1wbGF0ZTsKICAgICBPd25QdHI8U3RyaW5nQ2FjaGU+IG1fc3RyaW5nQ2FjaGU7CiAgICAgT3du
UHRyPEludGVnZXJDYWNoZT4gbV9pbnRlZ2VyQ2FjaGU7CisgICAgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IG1fdjhOdWxsOwogCiAgICAgVmVjdG9yPERPTURhdGFTdG9yZSo+IG1fZG9tRGF0YUxpc3Q7
CiAgICAgRE9NRGF0YVN0b3JlKiBtX2RvbURhdGFTdG9yZTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177427</attachid>
            <date>2012-12-03 23:56:53 -0800</date>
            <delta_ts>2012-12-04 10:29:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103862-20121204165418.patch</filename>
            <type>text/plain</type>
            <size>13943</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2NDc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjdiYjBiZjk5NTM1Yjgx
NjIxOGRlMWFlNjQzZGQyOTJhZWQ3MjY3MS4uMDY3NWJmMTcyYTY0ZmI5YjQ1MTU5MDkxYTAwNThh
YWYwMDBmOWYyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDEyLTEyLTAyICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbVjhdIE1ha2Ugdjg6
Ok51bGwoaXNvbGF0ZSkgZmFzdGVyIGJ5IGNhY2hpbmcgdGhlIHZhbHVlIGluIFY4IGJpbmRpbmdz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDM4NjIK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQZXJmb3Jt
YW5jZSBjb21wYXJpc29uIGJldHdlZW4gVjggYW5kIEpTQyByZXZlYWxlZCB0aGF0IERPTSBhdHRy
aWJ1dGVzCisgICAgICAgIHRoYXQgcmV0dXJuIHY4OjpOdWxsKGlzb2xhdGUpIGFyZSBtdWNoIHNs
b3dlciB0aGFuIEpTQy4KKyAgICAgICAgKGh0dHBzOi8vZG9jcy5nb29nbGUuY29tL2EvY2hyb21p
dW0ub3JnL3NwcmVhZHNoZWV0L2NjYz9rZXk9MEFsb2JDT3l2VG5QS2REZzVTMGRNZEdSR1JUUlNh
VzUzVjFwcFZ6aDZlWGMjZ2lkPTIpCisKKyAgICAgICAgV2UgY2FuIG9wdGltaXplIHY4OjpOdWxs
KGlzb2xhdGUpIGJ5IGNhY2hpbmcgdGhlIHZhbHVlIHRvIFY4UGVySXNvbGF0ZURhdGEuCisgICAg
ICAgIChBbHRob3VnaCBJIGRvbid0IGxpa2UgdGhlIG9wdGltaXphdGlvbiwgaXQgbG9va3MgZGlm
ZmljdWx0IHRvIG9wdGltaXplCisgICAgICAgIHY4OjpOdWxsKGlzb2xhdGUpIG1vcmUuKQorCisg
ICAgICAgIFtCaW5kaW5ncy91bmRlZmluZWQtZmlyc3QtY2hpbGQuaHRtbF0KKyAgICAgICAgQmVm
b3JlOiA5NjkgcnVucy9zZWMsIDk3MCBydW5zL3NlYywgOTYyIHJ1bnMvc2VjCisgICAgICAgIEFm
dGVyOiAgMTA4NiBydW5zL3NlYywgMTA4NSBydW5zL3NlYywgMTA4NiBydW5zL3NlYworCisgICAg
ICAgIE5vIHRlc3RzLiBObyBjaGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbToKKyAgICAgICAgKEdlbmVyYXRlSGVhZGVyKToK
KyAgICAgICAgKEdlbmVyYXRlTm9ybWFsQXR0ckdldHRlcik6CisgICAgICAgIChHZW5lcmF0ZUZ1
bmN0aW9uQ2FsbGJhY2spOgorICAgICAgICAoTmF0aXZlVG9KU1ZhbHVlKToKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Tm9kZS5oOgorICAgICAgICAoV2ViQ29yZTo6
dG9WOEZhc3QpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmou
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OmNvbnRlbnREb2N1bWVu
dEF0dHJHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OmdldFNW
R0RvY3VtZW50Q2FsbGJhY2spOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9W
OFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVY4SW50ZXJuYWw6OnZhbHVlQXR0
ckdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50
ZXJmYWNlVjhJbnRlcm5hbDo6cmVhZG9ubHlWYWx1ZUF0dHJHZXR0ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVY4SW50ZXJuYWw6OmNhY2hl
ZFZhbHVlQXR0ckdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlVjhJbnRlcm5hbDo6Y2FjaGVkUmVhZG9ubHlWYWx1ZUF0dHJHZXR0ZXIp
OgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4QmluZGluZy5oOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChXZWJDb3JlOjp2OE51bGwpOgorICAgICAgICAoV2ViQ29yZTo6djhOdWxsV2l0
aENoZWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOFBlcklzb2xhdGVEYXRhLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlY4UGVySXNvbGF0ZURhdGE6OlY4UGVySXNvbGF0ZURhdGEpOgorICAg
ICAgICAqIGJpbmRpbmdzL3Y4L1Y4UGVySXNvbGF0ZURhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlY4UGVySXNvbGF0ZURhdGE6OnY4TnVsbCk6CisgICAgICAgIChWOFBlcklzb2xhdGVEYXRhKToK
KwogMjAxMi0xMi0wMyAgS2VudGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgW1Y4XSBFbnRlciBhbiBJc29sYXRlIGJlZm9yZSBpbml0aWFsaXppbmcgUGVySXNvbGF0
ZURhdGEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvclY4LnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9yVjgucG0KaW5kZXggYTM0ZjU2OWNmNWMwOGRkNGE1ZmU0MDVmOGFjNjlmMDZkZDgxZjQ1MC4u
NTZkY2QwOGE0MGM0YTBiYzFjMTdlNDQwM2Q5MTgxM2NmNDQ3NjZmOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KQEAgLTU4OCw3
ICs1ODgsNyBAQCBFTkQKIGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3QoJHtu
YXRpdmVUeXBlfSogaW1wbCwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbywgTm9kZSogaG9s
ZGVyKQogewogICAgIGlmIChVTkxJS0VMWSghaW1wbCkpCi0gICAgICAgIHJldHVybiB2ODo6TnVs
bChpbmZvLkdldElzb2xhdGUoKSk7CisgICAgICAgIHJldHVybiB2OE51bGwoaW5mby5HZXRJc29s
YXRlKCkpOwogICAgIC8vIFdoYXQgd2UnZCByZWFsbHkgbGlrZSB0byBjaGVjayBoZXJlIGlzIHdo
ZXRoZXIgd2UncmUgaW4gdGhlIG1haW4gd29ybGQgb3IKICAgICAvLyBpbiBhbiBpc29sYXRlZCB3
b3JsZC4gVGhlIGZhc3Rlc3Qgd2F5IHdlIGtub3cgaG93IHRvIGRvIHRoYXQgaXMgdG8gY2hlY2sK
ICAgICAvLyB3aGV0aGVyIHRoZSBob2xkZXIncyBpbmxpbmUgd3JhcHBlciBpcyB0aGUgc2FtZSB3
cmFwcGVyIHdlIHNlZSBpbiB0aGUKQEAgLTk3MCw3ICs5NzAsNyBAQCBFTkQKIAogICAgICMgR2Vu
ZXJhdGUgc2VjdXJpdHkgY2hlY2tzIGlmIG5lY2Vzc2FyeQogICAgIGlmICgkYXR0cmlidXRlLT5z
aWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDaGVja1NlY3VyaXR5Rm9yTm9kZSJ9KSB7
Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgaWYgKCFCaW5kaW5nU2VjdXJp
dHk6OnNob3VsZEFsbG93QWNjZXNzVG9Ob2RlKEJpbmRpbmdTdGF0ZTo6aW5zdGFuY2UoKSwgaW1w
LT4iIC4gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lIC4gIigpKSlcbiAgICAgICAgcmV0dXJu
IHY4OjpIYW5kbGU8djg6OlZhbHVlPih2ODo6TnVsbChpbmZvLkdldElzb2xhdGUoKSkpO1xuXG4i
KTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICBpZiAoIUJpbmRpbmdTZWN1
cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb05vZGUoQmluZGluZ1N0YXRlOjppbnN0YW5jZSgpLCBp
bXAtPiIgLiAkYXR0cmlidXRlLT5zaWduYXR1cmUtPm5hbWUgLiAiKCkpKVxuICAgICAgICByZXR1
cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KHY4TnVsbChpbmZvLkdldElzb2xhdGUoKSkpO1xuXG4i
KTsKICAgICB9CiAKICAgICBteSAkdXNlRXhjZXB0aW9ucyA9IDEgaWYgQHskYXR0cmlidXRlLT5n
ZXR0ZXJFeGNlcHRpb25zfTsKQEAgLTExMjQsNyArMTEyNCw3IEBAIEVORAogICAgICAgICBteSAk
Z2V0dGVyRnVuYyA9ICRjb2RlR2VuZXJhdG9yLT5XS19sY2ZpcnN0KCRhdHRyaWJ1dGUtPnNpZ25h
dHVyZS0+bmFtZSk7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsIDw8RU5EKTsKICAg
ICBTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHNlcmlhbGl6ZWQgPSBpbXAtPiR7Z2V0dGVyRnVuY30o
KTsKLSAgICB2YWx1ZSA9IHNlcmlhbGl6ZWQgPyBzZXJpYWxpemVkLT5kZXNlcmlhbGl6ZSgpIDog
djg6OkhhbmRsZTx2ODo6VmFsdWU+KHY4OjpOdWxsKGluZm8uR2V0SXNvbGF0ZSgpKSk7CisgICAg
dmFsdWUgPSBzZXJpYWxpemVkID8gc2VyaWFsaXplZC0+ZGVzZXJpYWxpemUoKSA6IHY4OjpIYW5k
bGU8djg6OlZhbHVlPih2OE51bGwoaW5mby5HZXRJc29sYXRlKCkpKTsKICAgICBpbmZvLkhvbGRl
cigpLT5TZXRIaWRkZW5WYWx1ZShwcm9wZXJ0eU5hbWUsIHZhbHVlKTsKICAgICByZXR1cm4gdmFs
dWU7CiBFTkQKQEAgLTE2MDgsNyArMTYwOCw3IEBAIEVORAogCiAgICAgaWYgKCRmdW5jdGlvbi0+
c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2hlY2tTZWN1cml0eUZvck5vZGUifSkg
ewogICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgIGlmICghQmluZGluZ1NlY3Vy
aXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvTm9kZShCaW5kaW5nU3RhdGU6Omluc3RhbmNlKCksIGlt
cC0+IiAuICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lIC4gIihlYykpKVxuIik7Ci0gICAgICAg
IHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4odjg6Ok51bGwoYXJncy5HZXRJc29sYXRlKCkpKTtcbiIpOworICAgICAgICBwdXNoKEBp
bXBsQ29udGVudERlY2xzLCAiICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KHY4
TnVsbChhcmdzLkdldElzb2xhdGUoKSkpO1xuIik7CiBFTkQKICAgICB9CiAKQEAgLTQxMjMsMTIg
KzQxMjMsMTIgQEAgc3ViIE5hdGl2ZVRvSlNWYWx1ZQogCiAgICAgaWYgKCR0eXBlIGVxICJFdmVu
dExpc3RlbmVyIikgewogICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiVjhBYnN0cmFjdEV2ZW50
TGlzdGVuZXIuaCIpOwotICAgICAgICByZXR1cm4gIiR7dmFsdWV9ID8gdjg6OkhhbmRsZTx2ODo6
VmFsdWU+KHN0YXRpY19jYXN0PFY4QWJzdHJhY3RFdmVudExpc3RlbmVyKj4oJHt2YWx1ZX0pLT5n
ZXRMaXN0ZW5lck9iamVjdChpbXAtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkpIDogdjg6Okhh
bmRsZTx2ODo6VmFsdWU+KCIgLiAoJGdldElzb2xhdGUgPyAidjg6Ok51bGwoJGdldElzb2xhdGUp
IiA6ICJ2ODo6TnVsbCgpIikgLiAiKSI7CisgICAgICAgIHJldHVybiAiJHt2YWx1ZX0gPyB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4oc3RhdGljX2Nhc3Q8VjhBYnN0cmFjdEV2ZW50TGlzdGVuZXIqPigk
e3ZhbHVlfSktPmdldExpc3RlbmVyT2JqZWN0KGltcC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
KSkgOiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oIiAuICgkZ2V0SXNvbGF0ZSA/ICJ2OE51bGwoJGdl
dElzb2xhdGUpIiA6ICJ2ODo6TnVsbCgpIikgLiAiKSI7CiAgICAgfQogCiAgICAgaWYgKCR0eXBl
IGVxICJTZXJpYWxpemVkU2NyaXB0VmFsdWUiKSB7CiAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVz
KCIkdHlwZS5oIik7Ci0gICAgICAgIHJldHVybiAiJHZhbHVlID8gJHZhbHVlLT5kZXNlcmlhbGl6
ZSgpIDogdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCIgLiAoJGdldElzb2xhdGUgPyAidjg6Ok51bGwo
JGdldElzb2xhdGUpIiA6ICJ2ODo6TnVsbCgpIikgLiAiKSI7CisgICAgICAgIHJldHVybiAiJHZh
bHVlID8gJHZhbHVlLT5kZXNlcmlhbGl6ZSgpIDogdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCIgLiAo
JGdldElzb2xhdGUgPyAidjhOdWxsKCRnZXRJc29sYXRlKSIgOiAidjg6Ok51bGwoKSIpIC4gIiki
OwogICAgIH0KIAogICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJ3dGYvUmVmQ291bnRlZC5oIik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
Tm9kZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5v
ZGUuaAppbmRleCA5YWNiMWU0NTFhZmRiMjMwYTQzMGE5ZWUwZTRkZjY5YjJlNjRmNDczLi5iZjky
ZDY4ZjY4ODUzYTEwY2JmMzBmN2M5ZmM1MGEzZDVhZjVkNzA4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Tm9kZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROb2RlLmgKQEAgLTgzLDcg
KzgzLDcgQEAgaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KFRlc3ROb2RlKiBpbXBs
LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW8KIGlubGluZSB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gdG9WOEZhc3QoVGVzdE5vZGUqIGltcGwsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGlu
Zm8sIE5vZGUqIGhvbGRlcikKIHsKICAgICBpZiAoVU5MSUtFTFkoIWltcGwpKQotICAgICAgICBy
ZXR1cm4gdjg6Ok51bGwoaW5mby5HZXRJc29sYXRlKCkpOworICAgICAgICByZXR1cm4gdjhOdWxs
KGluZm8uR2V0SXNvbGF0ZSgpKTsKICAgICAvLyBXaGF0IHdlJ2QgcmVhbGx5IGxpa2UgdG8gY2hl
Y2sgaGVyZSBpcyB3aGV0aGVyIHdlJ3JlIGluIHRoZSBtYWluIHdvcmxkIG9yCiAgICAgLy8gaW4g
YW4gaXNvbGF0ZWQgd29ybGQuIFRoZSBmYXN0ZXN0IHdheSB3ZSBrbm93IGhvdyB0byBkbyB0aGF0
IGlzIHRvIGNoZWNrCiAgICAgLy8gd2hldGhlciB0aGUgaG9sZGVyJ3MgaW5saW5lIHdyYXBwZXIg
aXMgdGhlIHNhbWUgd3JhcHBlciB3ZSBzZWUgaW4gdGhlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwCmluZGV4IGI4ZTZiMTU1
NTUzYjM5OGM1MGQxOWQ4ZTg5MDk5ODIxMDczZDdjNTEuLjFmZTkzM2FjZDQ2ZTAxZTgzMmI2NWU4
MWQxOTdkYTk3Nzg1ZDA0NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwCkBAIC05MjAsNyArOTIwLDcgQEAgc3RhdGlj
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb250ZW50RG9jdW1lbnRBdHRyR2V0dGVyKHY4OjpMb2Nh
bDx2ODo6U3RyaW5nPiBuYW0KICAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLmNvbnRlbnREb2N1
bWVudC5fZ2V0Iik7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZv
LkhvbGRlcigpKTsKICAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NU
b05vZGUoQmluZGluZ1N0YXRlOjppbnN0YW5jZSgpLCBpbXAtPmNvbnRlbnREb2N1bWVudCgpKSkK
LSAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPih2ODo6TnVsbChpbmZvLkdldElz
b2xhdGUoKSkpOworICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KHY4TnVsbChp
bmZvLkdldElzb2xhdGUoKSkpOwogCiAgICAgcmV0dXJuIHRvVjgoaW1wLT5jb250ZW50RG9jdW1l
bnQoKSwgaW5mby5Ib2xkZXIoKSwgaW5mby5HZXRJc29sYXRlKCkpOwogfQpAQCAtMTg0Nyw3ICsx
ODQ3LDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBnZXRTVkdEb2N1bWVudENhbGxi
YWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
CiAgICAgewogICAgIGlmICghQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvTm9k
ZShCaW5kaW5nU3RhdGU6Omluc3RhbmNlKCksIGltcC0+Z2V0U1ZHRG9jdW1lbnQoZWMpKSkKLSAg
ICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPih2ODo6TnVsbChhcmdzLkdldElzb2xh
dGUoKSkpOworICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KHY4TnVsbChhcmdz
LkdldElzb2xhdGUoKSkpOwogICAgIFJlZlB0cjxTVkdEb2N1bWVudD4gcmVzdWx0ID0gaW1wLT5n
ZXRTVkdEb2N1bWVudChlYyk7CiAgICAgaWYgKFVOTElLRUxZKGVjKSkKICAgICAgICAgZ290byBm
YWlsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4
L1Y4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50
ZXJmYWNlLmNwcAppbmRleCA1OTY4NmQ3MDk2YWIwODQ1Njc4MTUyZDcwMGRmZjNjODNlM2QwOWFk
Li5iODE0NDFmYjFkOTkwZjA3NzFiZDBlMTA4ZmU0OTk1NWE0YzYzYjEwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcApAQCAt
NDgsNyArNDgsNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlQXR0ckdldHRl
cih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3QgdgogewogICAgIElOQ19TVEFUUygi
RE9NLlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UudmFsdWUuX2dldCIpOwogICAg
IFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqIGltcCA9IFY4VGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7Ci0gICAgcmV0
dXJuIGltcC0+dmFsdWUoKSA/IGltcC0+dmFsdWUoKS0+ZGVzZXJpYWxpemUoKSA6IHY4OjpIYW5k
bGU8djg6OlZhbHVlPih2ODo6TnVsbChpbmZvLkdldElzb2xhdGUoKSkpOworICAgIHJldHVybiBp
bXAtPnZhbHVlKCkgPyBpbXAtPnZhbHVlKCktPmRlc2VyaWFsaXplKCkgOiB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4odjhOdWxsKGluZm8uR2V0SXNvbGF0ZSgpKSk7CiB9CiAKIHN0YXRpYyB2b2lkIHZh
bHVlQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpW
YWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCkBAIC02NCw3ICs2NCw3
IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVhZG9ubHlWYWx1ZUF0dHJHZXR0ZXIo
djg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsCiB7CiAgICAgSU5DX1NUQVRTKCJET00uVGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5yZWFkb25seVZhbHVlLl9nZXQiKTsKICAgICBU
ZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKiBpbXAgPSBWOFRlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2U6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwotICAgIHJldHVy
biBpbXAtPnJlYWRvbmx5VmFsdWUoKSA/IGltcC0+cmVhZG9ubHlWYWx1ZSgpLT5kZXNlcmlhbGl6
ZSgpIDogdjg6OkhhbmRsZTx2ODo6VmFsdWU+KHY4OjpOdWxsKGluZm8uR2V0SXNvbGF0ZSgpKSk7
CisgICAgcmV0dXJuIGltcC0+cmVhZG9ubHlWYWx1ZSgpID8gaW1wLT5yZWFkb25seVZhbHVlKCkt
PmRlc2VyaWFsaXplKCkgOiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4odjhOdWxsKGluZm8uR2V0SXNv
bGF0ZSgpKSk7CiB9CiAKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY2FjaGVkVmFsdWVB
dHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJ
bmZvJiBpbmZvKQpAQCAtNzYsNyArNzYsNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IGNhY2hlZFZhbHVlQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgYwogICAg
ICAgICByZXR1cm4gdmFsdWU7CiAgICAgVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZSogaW1wID0gVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjp0b05hdGl2ZShp
bmZvLkhvbGRlcigpKTsKICAgICBTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHNlcmlhbGl6ZWQgPSBp
bXAtPmNhY2hlZFZhbHVlKCk7Ci0gICAgdmFsdWUgPSBzZXJpYWxpemVkID8gc2VyaWFsaXplZC0+
ZGVzZXJpYWxpemUoKSA6IHY4OjpIYW5kbGU8djg6OlZhbHVlPih2ODo6TnVsbChpbmZvLkdldElz
b2xhdGUoKSkpOworICAgIHZhbHVlID0gc2VyaWFsaXplZCA/IHNlcmlhbGl6ZWQtPmRlc2VyaWFs
aXplKCkgOiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4odjhOdWxsKGluZm8uR2V0SXNvbGF0ZSgpKSk7
CiAgICAgaW5mby5Ib2xkZXIoKS0+U2V0SGlkZGVuVmFsdWUocHJvcGVydHlOYW1lLCB2YWx1ZSk7
CiAgICAgcmV0dXJuIHZhbHVlOwogfQpAQCAtMTE0LDcgKzExNCw3IEBAIHN0YXRpYyB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gY2FjaGVkUmVhZG9ubHlWYWx1ZUF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4
OjpTdHJpbmc+CiAgICAgICAgIHJldHVybiB2YWx1ZTsKICAgICBUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlKiBpbXAgPSBWOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZh
Y2U6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwogICAgIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSog
c2VyaWFsaXplZCA9IGltcC0+Y2FjaGVkUmVhZG9ubHlWYWx1ZSgpOwotICAgIHZhbHVlID0gc2Vy
aWFsaXplZCA/IHNlcmlhbGl6ZWQtPmRlc2VyaWFsaXplKCkgOiB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4odjg6Ok51bGwoaW5mby5HZXRJc29sYXRlKCkpKTsKKyAgICB2YWx1ZSA9IHNlcmlhbGl6ZWQg
PyBzZXJpYWxpemVkLT5kZXNlcmlhbGl6ZSgpIDogdjg6OkhhbmRsZTx2ODo6VmFsdWU+KHY4TnVs
bChpbmZvLkdldElzb2xhdGUoKSkpOwogICAgIGluZm8uSG9sZGVyKCktPlNldEhpZGRlblZhbHVl
KHByb3BlcnR5TmFtZSwgdmFsdWUpOwogICAgIHJldHVybiB2YWx1ZTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5oIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvVjhCaW5kaW5nLmgKaW5kZXggNWQyZTA2MDkwOWQ0NmRmNzVmY2Y4OTY2ODA0
ZGI1N2JkODAwY2YyZC4uMTcxZDMxYmZiYWI5YjYyZDY2OWNiYTkwY2M3MWZiNWQ0M2RlNDUzMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmgKQEAgLTcxLDEzICs3MSwyMSBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgLy8gQSBoZWxwZXIgZm9yIHRocm93aW5nIEphdmFT
Y3JpcHQgVHlwZUVycm9yIGZvciBub3QgZW5vdWdoIGFyZ3VtZW50cy4KICAgICB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gdGhyb3dOb3RFbm91Z2hBcmd1bWVudHNFcnJvcih2ODo6SXNvbGF0ZSopOwog
CisgICAgLy8gQSBmYXN0IGFjY2Vzc29yIGZvciB2ODo6TnVsbChpc29sYXRlKS4gaXNvbGF0ZSBt
dXN0IG5vdCBiZSAwLgorICAgIC8vIElmIGlzb2xhdGUgY2FuIGJlIDAsIHVzZSB2OE51bGxXaXRo
Q2hlY2soKS4KKyAgICBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHY4TnVsbCh2ODo6SXNv
bGF0ZSogaXNvbGF0ZSkKKyAgICB7CisgICAgICAgIEFTU0VSVChpc29sYXRlKTsKKyAgICAgICAg
cmV0dXJuIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnY4TnVsbCgpOworICAgIH0K
KwogICAgIC8vIFNpbmNlIHY4OjpOdWxsKGlzb2xhdGUpIGNyYXNoZXMgaWYgd2UgcGFzcyBhIG51
bGwgaXNvbGF0ZSwKICAgICAvLyB3ZSBuZWVkIHRvIHVzZSB2OE51bGxXaXRoQ2hlY2soaXNvbGF0
ZSkgaWYgYW4gaXNvbGF0ZSBjYW4gYmUgbnVsbC4KICAgICAvLwogICAgIC8vIEZJWE1FOiBSZW1v
dmUgYWxsIG51bGwgaXNvbGF0ZXMgZnJvbSBWOCBiaW5kaW5ncywgYW5kIHJlbW92ZSB2OE51bGxX
aXRoQ2hlY2soaXNvbGF0ZSkuCiAgICAgaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2OE51
bGxXaXRoQ2hlY2sodjg6Oklzb2xhdGUqIGlzb2xhdGUpCiAgICAgewotICAgICAgICByZXR1cm4g
aXNvbGF0ZSA/IHY4OjpOdWxsKGlzb2xhdGUpIDogdjg6Ok51bGwoKTsKKyAgICAgICAgcmV0dXJu
IGlzb2xhdGUgPyB2OE51bGwoaXNvbGF0ZSkgOiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4odjg6Ok51
bGwoKSk7CiAgICAgfQogCiAgICAgLy8gQ29udmVydCB2OCB0eXBlcyB0byBhIFdURjo6U3RyaW5n
LiBJZiB0aGUgVjggc3RyaW5nIGlzIG5vdCBhbHJlYWR5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOFBlcklzb2xhdGVEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1Y4UGVySXNvbGF0ZURhdGEuY3BwCmluZGV4IDRjYmQyZmYyYWFjODUwYjg4MDdj
ZjBmODllYmVlZDk3ZGFkNzVlNTMuLjQ1MWI2MmJlNTQ3MGUyZmE4NzM4YTc3YjYxMWVhYjIwMDJk
ZmI3YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UGVySXNvbGF0
ZURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UGVySXNvbGF0ZURh
dGEuY3BwCkBAIC01Nyw2ICs1Nyw3IEBAIFY4UGVySXNvbGF0ZURhdGE6OlY4UGVySXNvbGF0ZURh
dGEodjg6Oklzb2xhdGUqIGlzb2xhdGUpCiAgICAgLCBtX2djRXZlbnREYXRhKGFkb3B0UHRyKG5l
dyBHQ0V2ZW50RGF0YSgpKSkKICAgICAsIG1fc2hvdWxkQ29sbGVjdEdhcmJhZ2VTb29uKGZhbHNl
KQogeworICAgIG1fdjhOdWxsLnNldCh2ODo6TnVsbChpc29sYXRlKSk7CiB9CiAKIFY4UGVySXNv
bGF0ZURhdGE6On5WOFBlcklzb2xhdGVEYXRhKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1Y4UGVySXNvbGF0ZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4UGVySXNvbGF0ZURhdGEuaAppbmRleCBhZmUxMTQ3NzRjMGZlMzY5YTI5ZWVhOGY2OTFm
MzNkMjk4ZmRmMGQ2Li43ZTk2NTg5ZGFiNDk3NGNkNWVkNWE1YWUyYzdmYzRlYzk5ZDE2NWRlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFBlcklzb2xhdGVEYXRhLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQZXJJc29sYXRlRGF0YS5oCkBAIC03
OCw2ICs3OCw4IEBAIHB1YmxpYzoKICAgICBTdHJpbmdDYWNoZSogc3RyaW5nQ2FjaGUoKSB7IHJl
dHVybiBtX3N0cmluZ0NhY2hlLmdldCgpOyB9CiAgICAgSW50ZWdlckNhY2hlKiBpbnRlZ2VyQ2Fj
aGUoKSB7IHJldHVybiBtX2ludGVnZXJDYWNoZS5nZXQoKTsgfQogCisgICAgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IHY4TnVsbCgpIHsgcmV0dXJuIG1fdjhOdWxsLmdldCgpOyB9CisKICAgICB2ODo6
UGVyc2lzdGVudDx2ODo6VmFsdWU+IGVuc3VyZUxpdmVSb290KCk7CiAKICNpZiBFTkFCTEUoSU5T
UEVDVE9SKQpAQCAtMTM4LDYgKzE0MCw3IEBAIHByaXZhdGU6CiAgICAgdjg6OlBlcnNpc3RlbnQ8
djg6OkZ1bmN0aW9uVGVtcGxhdGU+IG1fbGF6eUV2ZW50TGlzdGVuZXJUb1N0cmluZ1RlbXBsYXRl
OwogICAgIE93blB0cjxTdHJpbmdDYWNoZT4gbV9zdHJpbmdDYWNoZTsKICAgICBPd25QdHI8SW50
ZWdlckNhY2hlPiBtX2ludGVnZXJDYWNoZTsKKyAgICBTY29wZWRQZXJzaXN0ZW50PHY4OjpWYWx1
ZT4gbV92OE51bGw7CiAKICAgICBWZWN0b3I8RE9NRGF0YVN0b3JlKj4gbV9kb21EYXRhTGlzdDsK
ICAgICBET01EYXRhU3RvcmUqIG1fZG9tRGF0YVN0b3JlOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>