<?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>102156</bug_id>
          
          <creation_ts>2012-11-13 17:08:58 -0800</creation_ts>
          <short_desc>[V8] Simplify V8DOMWindowShell::getEntered</short_desc>
          <delta_ts>2012-11-19 16:21:51 -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>New Bugs</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>
          
          <blocked>102158</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>dcarney</cc>
    
    <cc>eric</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>766198</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-13 17:08:58 -0800</bug_when>
    <thetext>[V8] Simplify V8DOMWindowShell::getEntered</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>766207</commentid>
    <comment_count>1</comment_count>
      <attachid>174033</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-13 17:12:20 -0800</bug_when>
    <thetext>Created attachment 174033
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>766217</commentid>
    <comment_count>2</comment_count>
      <attachid>174033</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-11-13 17:26:28 -0800</bug_when>
    <thetext>Comment on attachment 174033
Patch

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

The change looks reasonable, but is a bit confusing. Sometimes you use &apos;V8DOMWindowShell::isolated(v8::Context::GetEntered())&apos;, sometimes you use &apos;v8::Context::InContext() &amp;&amp; V8DOMWindowShell::isolated(v8::Context::GetEntered())&apos;, and sometimes you use &apos;DOMWrapperWorld::isolatedWorldsExist()) &amp;&amp; v8::Context::InContext()&apos;. To make it clear what kind of check should be used in each place, shall we make a well-named helper function to do the checks?

&gt; Source/WebCore/bindings/v8/DOMDataStore.cpp:60
&gt; +    V8DOMWindowShell* context = V8DOMWindowShell::isolated(v8::Context::GetEntered());

Nit: context =&gt; shell.

&gt; Source/WebCore/bindings/v8/WorldContextHandle.cpp:-51
&gt; -        if (!context.IsEmpty()) {

Is it OK to remove this check? (I don&apos;t fully understand WorldContextHandle.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>766225</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-13 17:31:11 -0800</bug_when>
    <thetext>&gt; The change looks reasonable, but is a bit confusing. Sometimes you use &apos;V8DOMWindowShell::isolated(v8::Context::GetEntered())&apos;, sometimes you use &apos;v8::Context::InContext() &amp;&amp; V8DOMWindowShell::isolated(v8::Context::GetEntered())&apos;,

Yeah, I&apos;m skipping the v8::Context::InContext calls in locations where we know that V8 is on the stack.

&gt; and sometimes you use &apos;DOMWrapperWorld::isolatedWorldsExist()) &amp;&amp; v8::Context::InContext()&apos;.

isolatedWorldsExist is just a performance optimization.  It&apos;s only needed in extremely performance sensitive code.

&gt; To make it clear what kind of check should be used in each place, shall we make a well-named helper function to do the checks?

Sure.  Do you have thoughts on what to name these functions?

&gt; &gt; Source/WebCore/bindings/v8/DOMDataStore.cpp:60
&gt; &gt; +    V8DOMWindowShell* context = V8DOMWindowShell::isolated(v8::Context::GetEntered());
&gt; 
&gt; Nit: context =&gt; shell.
&gt; 
&gt; &gt; Source/WebCore/bindings/v8/WorldContextHandle.cpp:-51
&gt; &gt; -        if (!context.IsEmpty()) {
&gt; 
&gt; Is it OK to remove this check? (I don&apos;t fully understand WorldContextHandle.)

Yes.  If we&apos;re in a context, it&apos;s impossible for the current context to be empty.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769246</commentid>
    <comment_count>4</comment_count>
    <who name="Dan Carney">dcarney</who>
    <bug_when>2012-11-16 07:20:09 -0800</bug_when>
    <thetext>This patch looks great, and I&apos;d really like to build on it. Kentaro, any chance you want to take another look?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770240</commentid>
    <comment_count>5</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-11-18 17:29:19 -0800</bug_when>
    <thetext>Sorry for the delayed review.

(In reply to comment #3)
&gt; &gt; and sometimes you use &apos;DOMWrapperWorld::isolatedWorldsExist()) &amp;&amp; v8::Context::InContext()&apos;.
&gt; 
&gt; isolatedWorldsExist is just a performance optimization.  It&apos;s only needed in extremely performance sensitive code.
&gt; 
&gt; &gt; To make it clear what kind of check should be used in each place, shall we make a well-named helper function to do the checks?
&gt; 
&gt; Sure.  Do you have thoughts on what to name these functions?

(1) How about implementing:

  V8IsolatedWorld* getEnteredIsolatedWorld() {
    if (!v8::Context::InContext())
      return 0;
    V8DOMWindowShell* shell = V8DOMWindowShell::isolated(v8::Context::GetEntered());
    if (!shell)
      return 0;
    return shell-&gt;world();
  }

and use getEnteredIsolatedWorld() as much as possible.

(2) At a performance-sensitive place, you can use &apos;DOMWrapperWorld::isolatedWorldsExist()) &amp;&amp; v8::Context::InContext()&apos; instead of getEnteredIsolatedWorld(). It would be better to add a comment about that.

(Context and IsolatedWorld are one of the most difficult concepts to understand. So I want to make what each code is doing clearer.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771113</commentid>
    <comment_count>6</comment_count>
      <attachid>175060</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-19 15:43:46 -0800</bug_when>
    <thetext>Created attachment 175060
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771126</commentid>
    <comment_count>7</comment_count>
      <attachid>175060</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-11-19 15:52:32 -0800</bug_when>
    <thetext>Comment on attachment 175060
Patch

Still looks fine.  Appears you&apos;ve answered haraken&apos;s concerns.  Your judgement as to if you feel you need to wait for him to see it again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771156</commentid>
    <comment_count>8</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-19 16:12:50 -0800</bug_when>
    <thetext>I think we&apos;ve gotten enough data from him that it&apos;s ok to land this and unblock bug 102158 and Dan&apos;s work.  Thanks for the review.

@haraken: If there&apos;s more you&apos;d like me to change here, I&apos;m happy to do more work in a followup patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771158</commentid>
    <comment_count>9</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-11-19 16:13:35 -0800</bug_when>
    <thetext>LGTM too:)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771167</commentid>
    <comment_count>10</comment_count>
      <attachid>175060</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-19 16:21:48 -0800</bug_when>
    <thetext>Comment on attachment 175060
Patch

Clearing flags on attachment: 175060

Committed r135208: &lt;http://trac.webkit.org/changeset/135208&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771168</commentid>
    <comment_count>11</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-19 16:21:51 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174033</attachid>
            <date>2012-11-13 17:12:20 -0800</date>
            <delta_ts>2012-11-19 15:43:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-102156-20121113171020.patch</filename>
            <type>text/plain</type>
            <size>13434</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM0NDk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWVhNmQ4YWY3OTVjMzhh
ZmMzYjdmYmZmNmU5OTEyNTE5N2NmNmQ4Ni4uYTBhZTM0MmMxZWNjMGFmZmZmOTA0ZjlkMDk3ZDQy
NjdmMDMzZjdlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDEyLTExLTEzICBBZGFt
IEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1Y4XSBTaW1wbGlmeSBWOERP
TVdpbmRvd1NoZWxsOjpnZXRFbnRlcmVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMDIxNTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGlzIGFuIGluY3JlbWVudGFsIHN0ZXAgdG93YXJk
cyBtZXJnaW5nCisgICAgICAgIFY4RE9NV3JhcHBlcjo6Z2V0Q2FjaGVkV3JhcHBlcihOb2RlKikg
d2l0aCB0aGUgZ2VuZXJhbCBjYXNlIGZvciBsb29raW5nCisgICAgICAgIHVwIERPTSB3cmFwcGVy
cy4gSW4gb3JkZXIgdG8gbWVyZ2Ugd2l0aCB0aGUgZ2VuZXJhbCBjYXNlLCB3ZSBuZWVkIHRvCisg
ICAgICAgIGdldCBkb3duIHRvIGNhbGxpbmcgdjg6OkNvbnRleHQ6OkdldEN1cnJlbnQgb25jZSwg
d2hpY2ggbWVhbnMgd2UgbmVlZAorICAgICAgICB0byBmYWN0b3IgdGhlIGNhbGwgdG8gdjg6OkNv
bnRleHQ6OkdldEVudGVyZWQgb3V0IG9mIFY4RE9NV2luZG93U2hlbGwuCisKKyAgICAgICAgQXMg
YSBzaWRlLWJlbmVmaXQgdG8gdGhpcyBjaGFuZ2UsIHdlIGNhbiByZW1vdmUgc29tZSByZWR1bmRh
bnQgY2hlY2tzCisgICAgICAgIGZvciBpc29sYXRlZFdvcmxkc0V4aXN0IGFuZCB2ODo6Q29udGV4
dDo6SW5Db250ZXh0IGZyb20gY2FsbGVycyBvZgorICAgICAgICBWOERPTVdpbmRvd1NoZWxsOjpn
ZXRFbnRlcmVkLCBpbmNsdWRpbmcgaW4gZ2V0Q2FjaGVkV3JhcHBlci4KKworICAgICAgICAqIGJp
bmRpbmdzL3Y4L0RPTURhdGFTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01EYXRhU3Rv
cmU6OmN1cnJlbnQpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6c2hvdWxkQnlwYXNzTWFpbldv
cmxkQ29udGVudFNlY3VyaXR5UG9saWN5KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRy
b2xsZXI6OmN1cnJlbnRXb3JsZENvbnRleHQpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9N
V2luZG93U2hlbGwuaDoKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV2luZG93U2hlbGw6Omlzb2xh
dGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV2luZG93U2hlbGw6OnBlckNvbnRleHREYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV2luZG93U2hlbGw6OndvcmxkKToKKyAgICAgICAg
KFY4RE9NV2luZG93U2hlbGwpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5o
OgorICAgICAgICAoV2ViQ29yZTo6VjhET01XcmFwcGVyOjpnZXRDYWNoZWRXcmFwcGVyKToKKyAg
ICAgICAgKiBiaW5kaW5ncy92OC9Xb3JsZENvbnRleHRIYW5kbGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V29ybGRDb250ZXh0SGFuZGxlOjpXb3JsZENvbnRleHRIYW5kbGUpOgorICAgICAgICAq
IGJpbmRpbmdzL3Y4L2N1c3RvbS9WOERvY3VtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlY4RG9jdW1lbnQ6OmRpc3BhdGNoV3JhcEN1c3RvbSk6CisgICAgICAgICogYmluZGluZ3Mv
djgvY3VzdG9tL1Y4SFRNTERvY3VtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4
SFRNTERvY3VtZW50OjpkaXNwYXRjaFdyYXBDdXN0b20pOgorICAgICAgICAqIGJpbmRpbmdzL3Y4
L2N1c3RvbS9WOFNWR0RvY3VtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4U1ZH
RG9jdW1lbnQ6OmRpc3BhdGNoV3JhcEN1c3RvbSk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4WE1MSHR0cFJlcXVlc3RDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpW
OFhNTEh0dHBSZXF1ZXN0Ojpjb25zdHJ1Y3RvckNhbGxiYWNrKToKKwogMjAxMi0xMS0xMyAgTWFy
ayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgSlNFdmVudExpc3RlbmVyIHNo
b3VsZCBub3QgYWNjZXNzIG1fanNGdW5jdGlvbiB3aGVuIGl0cyB3cmFwcGVyIGlzIGdvbmUuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhU3RvcmUuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmNwcAppbmRleCA4MzljNDM5
NzQzOTVkY2JlYzg1ZWNlZjAyODMxMzhlY2U5YWRkYmZkLi43ZTA4ZjBiZWQ0NDUyMDlhY2ZkZjVh
Yjk4N2Y4ODM0NDI1ZmI2MzI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9ET01EYXRhU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURh
dGFTdG9yZS5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgRE9NRGF0YVN0b3JlKiBET01EYXRhU3RvcmU6
OmN1cnJlbnQodjg6Oklzb2xhdGUqIGlzb2xhdGUpCiAgICAgVjhQZXJJc29sYXRlRGF0YSogZGF0
YSA9IGlzb2xhdGUgPyBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpIDogVjhQZXJJc29s
YXRlRGF0YTo6Y3VycmVudCgpOwogICAgIGlmIChVTkxJS0VMWSghIWRhdGEtPmRvbURhdGFTdG9y
ZSgpKSkKICAgICAgICAgcmV0dXJuIGRhdGEtPmRvbURhdGFTdG9yZSgpOwotICAgIFY4RE9NV2lu
ZG93U2hlbGwqIGNvbnRleHQgPSBWOERPTVdpbmRvd1NoZWxsOjpnZXRFbnRlcmVkKCk7CisgICAg
VjhET01XaW5kb3dTaGVsbCogY29udGV4dCA9IFY4RE9NV2luZG93U2hlbGw6Omlzb2xhdGVkKHY4
OjpDb250ZXh0OjpHZXRFbnRlcmVkKCkpOwogICAgIGlmIChVTkxJS0VMWSghIWNvbnRleHQpKQog
ICAgICAgICByZXR1cm4gY29udGV4dC0+d29ybGQoKS0+aXNvbGF0ZWRXb3JsZERPTURhdGFTdG9y
ZSgpOwogICAgIHJldHVybiAmbWFpbldvcmxkRE9NRGF0YVN0b3JlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCBiNTMwNmJhNjc2Mjk0
OGNhNzgxMGI1OGY5OWM1OGZjODY4MTM4ODhhLi4yOGVlNDA4MGNiNWJiYjU3OGY2ODkyNTdkN2E2
NGJhNTE5NDkyZjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3Jp
cHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRD
b250cm9sbGVyLmNwcApAQCAtNDIzLDkgKzQyMywxMiBAQCB2b2lkIFNjcmlwdENvbnRyb2xsZXI6
OmV2YWx1YXRlSW5Jc29sYXRlZFdvcmxkKGludCB3b3JsZElELCBjb25zdCBWZWN0b3I8U2NyaXB0
UwogCiBib29sIFNjcmlwdENvbnRyb2xsZXI6OnNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRT
ZWN1cml0eVBvbGljeSgpCiB7Ci0gICAgaWYgKFY4RE9NV2luZG93U2hlbGwqIGlzb2xhdGVkV29y
bGRTaGVsbCA9IFY4RE9NV2luZG93U2hlbGw6OmdldEVudGVyZWQoKSkKLSAgICAgICAgcmV0dXJu
IGlzb2xhdGVkV29ybGRTaGVsbC0+d29ybGQoKS0+aXNvbGF0ZWRXb3JsZEhhc0NvbnRlbnRTZWN1
cml0eVBvbGljeSgpOwotICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIXY4OjpDb250ZXh0OjpJ
bkNvbnRleHQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIFY4RE9NV2luZG93U2hlbGwq
IHNoZWxsID0gVjhET01XaW5kb3dTaGVsbDo6aXNvbGF0ZWQodjg6OkNvbnRleHQ6OkdldEVudGVy
ZWQoKSk7CisgICAgaWYgKCFzaGVsbCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVy
biBzaGVsbC0+d29ybGQoKS0+aXNvbGF0ZWRXb3JsZEhhc0NvbnRlbnRTZWN1cml0eVBvbGljeSgp
OwogfQogCiBUZXh0UG9zaXRpb24gU2NyaXB0Q29udHJvbGxlcjo6ZXZlbnRIYW5kbGVyUG9zaXRp
b24oKSBjb25zdApAQCAtNDQyLDExICs0NDUsMTMgQEAgdm9pZCBTY3JpcHRDb250cm9sbGVyOjpm
aW5pc2hlZFdpdGhFdmVudChFdmVudCogZXZlbnQpCiAKIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4g
U2NyaXB0Q29udHJvbGxlcjo6Y3VycmVudFdvcmxkQ29udGV4dCgpCiB7Ci0gICAgaWYgKFY4RE9N
V2luZG93U2hlbGwqIGlzb2xhdGVkU2hlbGwgPSBWOERPTVdpbmRvd1NoZWxsOjpnZXRFbnRlcmVk
KCkpIHsKLSAgICAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkNvbnRleHQ+IGNvbnRleHQgPSBpc29s
YXRlZFNoZWxsLT5jb250ZXh0KCk7Ci0gICAgICAgIGlmIChjb250ZXh0LklzRW1wdHkoKSB8fCBt
X2ZyYW1lICE9IHRvRnJhbWVJZk5vdERldGFjaGVkKGNvbnRleHQpKQorICAgIGlmICh2ODo6Q29u
dGV4dDo6SW5Db250ZXh0KCkpIHsKKyAgICAgICAgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gY29u
dGV4dCA9IHY4OjpDb250ZXh0OjpHZXRFbnRlcmVkKCk7CisgICAgICAgIGlmIChWOERPTVdpbmRv
d1NoZWxsOjppc29sYXRlZChjb250ZXh0KSkgeworICAgICAgICAgICAgaWYgKG1fZnJhbWUgPT0g
dG9GcmFtZUlmTm90RGV0YWNoZWQoY29udGV4dCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHY4
OjpMb2NhbDx2ODo6Q29udGV4dD46Ok5ldyhjb250ZXh0KTsKICAgICAgICAgICAgIHJldHVybiB2
ODo6TG9jYWw8djg6OkNvbnRleHQ+KCk7Ci0gICAgICAgIHJldHVybiB2ODo6TG9jYWw8djg6OkNv
bnRleHQ+OjpOZXcoY29udGV4dCk7CisgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIHY4OjpM
b2NhbDx2ODo6Q29udGV4dD46Ok5ldyh3aW5kb3dTaGVsbChtYWluVGhyZWFkTm9ybWFsV29ybGQo
KSktPmNvbnRleHQoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOERPTVdpbmRvd1NoZWxsLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdp
bmRvd1NoZWxsLmgKaW5kZXggY2RiNjg3YmI3ZjU4MzhiNGQyYzJjMjZlNTkwMzEyMjE2YzA3ZmQ4
Zi4uZmJlMjUyZDM3ZmY4MGI0ZjUwOTA3NjI2MjdhNzcxOWY0Y2M2NzdiZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuaApAQCAtODAsMjkgKzgwLDE2
IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZGVzdHJveUdsb2JhbCgpOwogCi0gICAgVjhQZXJDb250
ZXh0RGF0YSogcGVyQ29udGV4dERhdGEoKSB7IHJldHVybiBtX3BlckNvbnRleHREYXRhLmdldCgp
OyB9Ci0KLSAgICBET01XcmFwcGVyV29ybGQqIHdvcmxkKCkgeyByZXR1cm4gbV93b3JsZC5nZXQo
KTsgfQotCi0gICAgLy8gUmV0dXJucyB0aGUgaXNvbGF0ZWQgd29ybGQgYXNzb2NpYXRlZCB3aXRo
Ci0gICAgLy8gdjg6OkNvbnRleHQ6OkdldEVudGVyZWQoKS4gQmVjYXVzZSB3b3JsZHMgYXJlIGlz
b2xhdGVkLCB0aGUgZW50aXJlCi0gICAgLy8gSmF2YVNjcmlwdCBjYWxsIHN0YWNrIHNob3VsZCBi
ZSBmcm9tIHRoZSBzYW1lIGlzb2xhdGVkIHdvcmxkLgotICAgIC8vIFJldHVybnMgMCBpZiB0aGUg
ZW50ZXJlZCBjb250ZXh0IGlzIGZyb20gdGhlIG1haW4gd29ybGQuCi0gICAgLy8KLSAgICAvLyBG
SVhNRTogQ29uc2lkZXIgZWRnZSBjYXNlcyB3aXRoIERPTSBtdXRhdGlvbiBldmVudHMgdGhhdCBt
aWdodAotICAgIC8vIHZpb2xhdGUgdGhpcyBpbnZhcmlhbnQuCi0gICAgLy8KLSAgICAvLyBGSVhN
RTogVGhpcyBpcyBwb29ybHkgbmFtZWQgYWZ0ZXIgdGhlIGRlbGV0aW9uIG9mIGlzb2xhdGVkIGNv
bnRleHRzLgotICAgIHN0YXRpYyBWOERPTVdpbmRvd1NoZWxsKiBnZXRFbnRlcmVkKCkKKyAgICBz
dGF0aWMgVjhET01XaW5kb3dTaGVsbCogaXNvbGF0ZWQodjg6OkhhbmRsZTx2ODo6Q29udGV4dD4g
Y29udGV4dCkKICAgICB7Ci0gICAgICAgIGlmICghRE9NV3JhcHBlcldvcmxkOjppc29sYXRlZFdv
cmxkc0V4aXN0KCkpCi0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgaWYgKCF2ODo6Q29u
dGV4dDo6SW5Db250ZXh0KCkpCi0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PFY4RE9NV2luZG93U2hlbGwqPih2ODo6Q29udGV4dDo6R2V0RW50ZXJlZCgp
LT5HZXRBbGlnbmVkUG9pbnRlckZyb21FbWJlZGRlckRhdGEodjhDb250ZXh0SXNvbGF0ZWRXaW5k
b3dTaGVsbCkpOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VjhET01XaW5kb3dTaGVsbCo+
KGNvbnRleHQtPkdldEFsaWduZWRQb2ludGVyRnJvbUVtYmVkZGVyRGF0YSh2OENvbnRleHRJc29s
YXRlZFdpbmRvd1NoZWxsKSk7CiAgICAgfQogCisgICAgVjhQZXJDb250ZXh0RGF0YSogcGVyQ29u
dGV4dERhdGEoKSB7IHJldHVybiBtX3BlckNvbnRleHREYXRhLmdldCgpOyB9CisgICAgRE9NV3Jh
cHBlcldvcmxkKiB3b3JsZCgpIHsgcmV0dXJuIG1fd29ybGQuZ2V0KCk7IH0KKwogICAgIHZvaWQg
ZGVzdHJveUlzb2xhdGVkU2hlbGwoKTsKKwogcHJpdmF0ZToKICAgICBWOERPTVdpbmRvd1NoZWxs
KEZyYW1lKiwgUGFzc1JlZlB0cjxET01XcmFwcGVyV29ybGQ+KTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9WOERPTVdyYXBwZXIuaAppbmRleCA0OWRhMGRhYmJkZDM5YmZhOTcwYmM4ODgz
NzI1MzY1MzIwYzk4YWE4Li4yZGE5ZTczMjg4ZDdjYzRiZDY0ZDQ3MmVkZjljZWYyMjZkYTNjMmZi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuaApAQCAtMTE1LDE0
ICsxMTUsMTUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBzdGF0aWMgdjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PiBnZXRDYWNoZWRXcmFwcGVyKE5vZGUqIG5vZGUpCiAgICAgICAgIHsKICAg
ICAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgICAgICAgICBpZiAoTElLRUxZ
KCFET01XcmFwcGVyV29ybGQ6Omlzb2xhdGVkV29ybGRzRXhpc3QoKSkpCisgICAgICAgICAgICBp
ZiAoTElLRUxZKCFET01XcmFwcGVyV29ybGQ6Omlzb2xhdGVkV29ybGRzRXhpc3QoKSkgfHwgIXY4
OjpDb250ZXh0OjpJbkNvbnRleHQoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gbm9kZS0+d3Jh
cHBlcigpOwogCi0gICAgICAgICAgICBWOERPTVdpbmRvd1NoZWxsKiBjb250ZXh0ID0gVjhET01X
aW5kb3dTaGVsbDo6Z2V0RW50ZXJlZCgpOwotICAgICAgICAgICAgaWYgKExJS0VMWSghY29udGV4
dCkpCisgICAgICAgICAgICB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjb250ZXh0ID0gdjg6OkNv
bnRleHQ6OkdldEVudGVyZWQoKTsKKyAgICAgICAgICAgIFY4RE9NV2luZG93U2hlbGwqIHNoZWxs
ID0gVjhET01XaW5kb3dTaGVsbDo6aXNvbGF0ZWQoY29udGV4dCk7CisgICAgICAgICAgICBpZiAo
TElLRUxZKCFzaGVsbCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG5vZGUtPndyYXBwZXIoKTsK
IAotICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQtPndvcmxkKCktPmlzb2xhdGVkV29ybGRET01E
YXRhU3RvcmUoKS0+Z2V0KG5vZGUpOworICAgICAgICAgICAgcmV0dXJuIHNoZWxsLT53b3JsZCgp
LT5pc29sYXRlZFdvcmxkRE9NRGF0YVN0b3JlKCktPmdldChub2RlKTsKICAgICAgICAgfQogCiAg
ICAgcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmxk
Q29udGV4dEhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JsZENvbnRl
eHRIYW5kbGUuY3BwCmluZGV4IDM0YjljMTliZjU5ODA4NTFmMmYyNmIyZmJhM2NiNGU3MzgyNjU5
ZjkuLmUyZjY4N2I4NTcxZmNhYWIzNzJiYTNhZDJjMTNlMTQ3M2RmMDQ2YWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmxkQ29udGV4dEhhbmRsZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV29ybGRDb250ZXh0SGFuZGxlLmNwcApAQCAtNDQs
MjcgKzQ0LDIxIEBAIFdvcmxkQ29udGV4dEhhbmRsZTo6V29ybGRDb250ZXh0SGFuZGxlKFdvcmxk
VG9Vc2Ugd29ybGRUb1VzZSkKICAgICBpZiAod29ybGRUb1VzZSA9PSBVc2VNYWluV29ybGQgfHwg
d29ybGRUb1VzZSA9PSBVc2VXb3JrZXJXb3JsZCkKICAgICAgICAgcmV0dXJuOwogCi0jaWYgRU5B
QkxFKFdPUktFUlMpCi0gICAgLy8gRklYTUUgV2UgYXJlIGR1cGxpY2F0aW5nIGEgbG90IG9mIGVm
Zm9ydCBoZXJlIGNoZWNraW5nIHRoZSBjb250ZXh0IGZvciB0aGUgd29ya2VyIGFuZCBmb3IgdGhl
IGlzb2xhdGVkIHdvcmxkLgogICAgIGlmICh2ODo6Q29udGV4dDo6SW5Db250ZXh0KCkpIHsKICAg
ICAgICAgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gY29udGV4dCA9IHY4OjpDb250ZXh0OjpHZXRD
dXJyZW50KCk7Ci0gICAgICAgIGlmICghY29udGV4dC5Jc0VtcHR5KCkpIHsKLSAgICAgICAgICAg
IGlmIChVTkxJS0VMWSghVjhET01XcmFwcGVyOjppc1dyYXBwZXJPZlR5cGUodG9Jbm5lckdsb2Jh
bE9iamVjdChjb250ZXh0KSwgJlY4RE9NV2luZG93OjppbmZvKSkpIHsKLSAgICAgICAgICAgICAg
ICBtX3dvcmxkVG9Vc2UgPSBVc2VXb3JrZXJXb3JsZDsKLSAgICAgICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgICAgICB9CisjaWYgRU5BQkxFKFdPUktFUlMpCisgICAgICAgIGlmIChVTkxJS0VM
WSghVjhET01XcmFwcGVyOjppc1dyYXBwZXJPZlR5cGUodG9Jbm5lckdsb2JhbE9iamVjdChjb250
ZXh0KSwgJlY4RE9NV2luZG93OjppbmZvKSkpIHsKKyAgICAgICAgICAgIG1fd29ybGRUb1VzZSA9
IFVzZVdvcmtlcldvcmxkOworICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgfQog
I2VuZGlmCi0KLSAgICBWOERPTVdpbmRvd1NoZWxsKiBzaGVsbCA9IFY4RE9NV2luZG93U2hlbGw6
OmdldEVudGVyZWQoKTsKLSAgICBpZiAoTElLRUxZKCFzaGVsbCkpIHsKLSAgICAgICAgbV93b3Js
ZFRvVXNlID0gVXNlTWFpbldvcmxkOwotICAgICAgICByZXR1cm47CisgICAgICAgIGlmIChWOERP
TVdpbmRvd1NoZWxsOjppc29sYXRlZChjb250ZXh0KSkgeworICAgICAgICAgICAgbV9jb250ZXh0
ID0gU2hhcmVkUGVyc2lzdGVudDx2ODo6Q29udGV4dD46OmNyZWF0ZShjb250ZXh0KTsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQogICAgIH0KIAotICAgIEFTU0VSVCghc2hlbGwtPmNv
bnRleHQoKS5Jc0VtcHR5KCkpOwotICAgIG1fY29udGV4dCA9IFNoYXJlZFBlcnNpc3RlbnQ8djg6
OkNvbnRleHQ+OjpjcmVhdGUoc2hlbGwtPmNvbnRleHQoKSk7CisgICAgbV93b3JsZFRvVXNlID0g
VXNlTWFpbldvcmxkOwogfQogCiB2ODo6TG9jYWw8djg6OkNvbnRleHQ+IFdvcmxkQ29udGV4dEhh
bmRsZTo6YWRqdXN0ZWRDb250ZXh0KFNjcmlwdENvbnRyb2xsZXIqIHNjcmlwdCkgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERvY3VtZW50Q3Vz
dG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERvY3VtZW50Q3Vz
dG9tLmNwcAppbmRleCA3MjNmZjI5OTJiNzZkMWFlMzFkMWI4YzhlNDkyZmUxNTI2N2YyNjY3Li4y
MWZhMDYwODVhZDUwZTgyYzA4NGMwYjUyMWViMDJkNzU1NTU2ODEwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEb2N1bWVudEN1c3RvbS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RG9jdW1lbnRDdXN0b20uY3BwCkBA
IC0xMDcsNyArMTA3LDcgQEAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBWOERvY3VtZW50OjpkaXNw
YXRjaFdyYXBDdXN0b20oRG9jdW1lbnQqIGltcGwsIHY4OjpIYW5kbGUKICAgICB2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBWOERvY3VtZW50Ojp3cmFwU2xvdyhpbXBsLCBjcmVhdGlv
bkNvbnRleHQsIGlzb2xhdGUpOwogICAgIGlmICh3cmFwcGVyLklzRW1wdHkoKSkKICAgICAgICAg
cmV0dXJuIHdyYXBwZXI7Ci0gICAgaWYgKCFWOERPTVdpbmRvd1NoZWxsOjpnZXRFbnRlcmVkKCkp
IHsKKyAgICBpZiAoIXY4OjpDb250ZXh0OjpJbkNvbnRleHQoKSB8fCAhVjhET01XaW5kb3dTaGVs
bDo6aXNvbGF0ZWQodjg6OkNvbnRleHQ6OkdldEVudGVyZWQoKSkpIHsKICAgICAgICAgaWYgKEZy
YW1lKiBmcmFtZSA9IGltcGwtPmZyYW1lKCkpCiAgICAgICAgICAgICBmcmFtZS0+c2NyaXB0KCkt
PndpbmRvd1NoZWxsKG1haW5UaHJlYWROb3JtYWxXb3JsZCgpKS0+dXBkYXRlRG9jdW1lbnRXcmFw
cGVyKHdyYXBwZXIpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOEhUTUxEb2N1bWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhIVE1MRG9jdW1lbnRDdXN0b20uY3BwCmluZGV4IDIwM2FiYjUyYzVh
ZjQwNDU1MGZlOGE4ZmYzMTZiZWU4NjFjZmMzMjQuLmEzNjlhY2M4ZDdmMGFkNGVjMjA0MDI0NTVh
NTJkMjM0NWZjMDcwMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOEhUTUxEb2N1bWVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4SFRNTERvY3VtZW50Q3VzdG9tLmNwcApAQCAtMTc0LDcgKzE3NCw3IEBA
IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gVjhIVE1MRG9jdW1lbnQ6OmRpc3BhdGNoV3JhcEN1c3Rv
bShIVE1MRG9jdW1lbnQqIGltcGwsIHY4CiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFw
cGVyID0gVjhIVE1MRG9jdW1lbnQ6OndyYXBTbG93KGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNv
bGF0ZSk7CiAgICAgaWYgKHdyYXBwZXIuSXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gd3JhcHBl
cjsKLSAgICBpZiAoIVY4RE9NV2luZG93U2hlbGw6OmdldEVudGVyZWQoKSkgeworICAgIGlmICgh
djg6OkNvbnRleHQ6OkluQ29udGV4dCgpIHx8ICFWOERPTVdpbmRvd1NoZWxsOjppc29sYXRlZCh2
ODo6Q29udGV4dDo6R2V0RW50ZXJlZCgpKSkgewogICAgICAgICBpZiAoRnJhbWUqIGZyYW1lID0g
aW1wbC0+ZnJhbWUoKSkKICAgICAgICAgICAgIGZyYW1lLT5zY3JpcHQoKS0+d2luZG93U2hlbGwo
bWFpblRocmVhZE5vcm1hbFdvcmxkKCkpLT51cGRhdGVEb2N1bWVudFdyYXBwZXIod3JhcHBlcik7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
U1ZHRG9jdW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4U1ZHRG9jdW1lbnRDdXN0b20uY3BwCmluZGV4IGMyOGMzNjViNzg5MzYyOTVlYzMyOGM0YTMw
NTI0NjhhMmM2ZDhkNjkuLjlhOTE4MDYwZmI1YzFjZTM0Njc3ZDRjZGM3MTg0ZjdlOGE1YmRkYmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNWR0RvY3Vt
ZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhT
VkdEb2N1bWVudEN1c3RvbS5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PiBWOFNWR0RvY3VtZW50OjpkaXNwYXRjaFdyYXBDdXN0b20oU1ZHRG9jdW1lbnQqIGltcGws
IHY4OjoKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBWOFNWR0RvY3VtZW50
Ojp3cmFwU2xvdyhpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogICAgIGlmICh3cmFw
cGVyLklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHdyYXBwZXI7Ci0gICAgaWYgKCFWOERPTVdp
bmRvd1NoZWxsOjpnZXRFbnRlcmVkKCkpIHsKKyAgICBpZiAoIXY4OjpDb250ZXh0OjpJbkNvbnRl
eHQoKSB8fCAhVjhET01XaW5kb3dTaGVsbDo6aXNvbGF0ZWQodjg6OkNvbnRleHQ6OkdldEVudGVy
ZWQoKSkpIHsKICAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IGltcGwtPmZyYW1lKCkpCiAgICAg
ICAgICAgICBmcmFtZS0+c2NyaXB0KCktPndpbmRvd1NoZWxsKG1haW5UaHJlYWROb3JtYWxXb3Js
ZCgpKS0+dXBkYXRlRG9jdW1lbnRXcmFwcGVyKHdyYXBwZXIpOwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFhNTEh0dHBSZXF1ZXN0Q29uc3Ry
dWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4WE1MSHR0cFJl
cXVlc3RDb25zdHJ1Y3Rvci5jcHAKaW5kZXggMDc4NmExOGQ2ODBmMjkyYzVjZmUwNzY4MTI1ODdh
ZjFjZGI2NzA2Ny4uYjNjYmFjM2JlMWQ3ODNmMWE1ZjJlZDY2ZGNkN2IyNzJmNGZiYjg3YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4WE1MSHR0cFJlcXVl
c3RDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4WE1MSHR0cFJlcXVlc3RDb25zdHJ1Y3Rvci5jcHAKQEAgLTU1LDggKzU1LDEwIEBAIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBWOFhNTEh0dHBSZXF1ZXN0Ojpjb25zdHJ1Y3RvckNhbGxiYWNrKGNv
bnN0IHY4OjpBcmd1bWVudHMmCiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCA9
IGdldFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKIAogICAgIFJlZlB0cjxTZWN1cml0eU9yaWdp
bj4gc2VjdXJpdHlPcmlnaW47Ci0gICAgaWYgKFY4RE9NV2luZG93U2hlbGwqIGlzb2xhdGVkV29y
bGRTaGVsbCA9IFY4RE9NV2luZG93U2hlbGw6OmdldEVudGVyZWQoKSkKLSAgICAgICAgc2VjdXJp
dHlPcmlnaW4gPSBpc29sYXRlZFdvcmxkU2hlbGwtPndvcmxkKCktPmlzb2xhdGVkV29ybGRTZWN1
cml0eU9yaWdpbigpOworICAgIGlmIChjb250ZXh0LT5pc0RvY3VtZW50KCkpIHsKKyAgICAgICAg
aWYgKFY4RE9NV2luZG93U2hlbGwqIHNoZWxsID0gVjhET01XaW5kb3dTaGVsbDo6aXNvbGF0ZWQo
djg6OkNvbnRleHQ6OkdldEVudGVyZWQoKSkpCisgICAgICAgICAgICBzZWN1cml0eU9yaWdpbiA9
IHNoZWxsLT53b3JsZCgpLT5pc29sYXRlZFdvcmxkU2VjdXJpdHlPcmlnaW4oKTsKKyAgICB9CiAK
ICAgICBSZWZQdHI8WE1MSHR0cFJlcXVlc3Q+IHhtbEh0dHBSZXF1ZXN0ID0gWE1MSHR0cFJlcXVl
c3Q6OmNyZWF0ZShjb250ZXh0LCBzZWN1cml0eU9yaWdpbik7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175060</attachid>
            <date>2012-11-19 15:43:46 -0800</date>
            <delta_ts>2012-11-19 16:21:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-102156-20121119154136.patch</filename>
            <type>text/plain</type>
            <size>14126</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1MTg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzg0MWY1MjQ1NWQ1ZDUw
YmQ2MWY4ZGNjNDhkZmFkMWYyZTUwYWE0ZC4uMWJjY2QwNjg4NGU1YWIyMTg5ZGNiODQ5NWJmYmI0
NmFkNGFhNmY3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDEyLTExLTE5ICBBZGFt
IEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1Y4XSBTaW1wbGlmeSBWOERP
TVdpbmRvd1NoZWxsOjpnZXRFbnRlcmVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMDIxNTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGlzIGFuIGluY3JlbWVudGFsIHN0ZXAgdG93YXJk
cyBtZXJnaW5nCisgICAgICAgIFY4RE9NV3JhcHBlcjo6Z2V0Q2FjaGVkV3JhcHBlcihOb2RlKikg
d2l0aCB0aGUgZ2VuZXJhbCBjYXNlIGZvciBsb29raW5nCisgICAgICAgIHVwIERPTSB3cmFwcGVy
cy4gSW4gb3JkZXIgdG8gbWVyZ2Ugd2l0aCB0aGUgZ2VuZXJhbCBjYXNlLCB3ZSBuZWVkIHRvCisg
ICAgICAgIGdldCBkb3duIHRvIGNhbGxpbmcgdjg6OkNvbnRleHQ6OkdldEN1cnJlbnQgb25jZSwg
d2hpY2ggbWVhbnMgd2UgbmVlZAorICAgICAgICB0byBmYWN0b3IgdGhlIGNhbGwgdG8gdjg6OkNv
bnRleHQ6OkdldEVudGVyZWQgb3V0IG9mIFY4RE9NV2luZG93U2hlbGwuCisKKyAgICAgICAgQXMg
YSBzaWRlLWJlbmVmaXQgdG8gdGhpcyBjaGFuZ2UsIHdlIGNhbiByZW1vdmUgc29tZSByZWR1bmRh
bnQgY2hlY2tzCisgICAgICAgIGZvciBpc29sYXRlZFdvcmxkc0V4aXN0IGFuZCB2ODo6Q29udGV4
dDo6SW5Db250ZXh0IGZyb20gY2FsbGVycyBvZgorICAgICAgICBWOERPTVdpbmRvd1NoZWxsOjpn
ZXRFbnRlcmVkLCBpbmNsdWRpbmcgaW4gZ2V0Q2FjaGVkV3JhcHBlci4KKworICAgICAgICAqIGJp
bmRpbmdzL3Y4L0RPTURhdGFTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01EYXRhU3Rv
cmU6OmN1cnJlbnQpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6c2hvdWxkQnlwYXNzTWFpbldv
cmxkQ29udGVudFNlY3VyaXR5UG9saWN5KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRy
b2xsZXI6OmN1cnJlbnRXb3JsZENvbnRleHQpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9N
V2luZG93U2hlbGwuaDoKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV2luZG93U2hlbGw6Omlzb2xh
dGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV2luZG93U2hlbGw6OnBlckNvbnRleHREYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV2luZG93U2hlbGw6OndvcmxkKToKKyAgICAgICAg
KFY4RE9NV2luZG93U2hlbGwpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5o
OgorICAgICAgICAoV2ViQ29yZTo6VjhET01XcmFwcGVyOjpnZXRDYWNoZWRXcmFwcGVyKToKKyAg
ICAgICAgKiBiaW5kaW5ncy92OC9Xb3JsZENvbnRleHRIYW5kbGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V29ybGRDb250ZXh0SGFuZGxlOjpXb3JsZENvbnRleHRIYW5kbGUpOgorICAgICAgICAq
IGJpbmRpbmdzL3Y4L2N1c3RvbS9WOERvY3VtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlY4RG9jdW1lbnQ6OmRpc3BhdGNoV3JhcEN1c3RvbSk6CisgICAgICAgICogYmluZGluZ3Mv
djgvY3VzdG9tL1Y4SFRNTERvY3VtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4
SFRNTERvY3VtZW50OjpkaXNwYXRjaFdyYXBDdXN0b20pOgorICAgICAgICAqIGJpbmRpbmdzL3Y4
L2N1c3RvbS9WOFNWR0RvY3VtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4U1ZH
RG9jdW1lbnQ6OmRpc3BhdGNoV3JhcEN1c3RvbSk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4WE1MSHR0cFJlcXVlc3RDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpW
OFhNTEh0dHBSZXF1ZXN0Ojpjb25zdHJ1Y3RvckNhbGxiYWNrKToKKwogMjAxMi0xMS0xOSAgVG9u
eSBDaGFuZyAgPHRvbnlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJlbW92ZSAnaXMnIHByZWZp
eCBmcm9tIFdlYlNldHRpbmdzOjppc1dlYlNlY3VyaXR5RW5hYmxlZCBhbmQgV2ViU2V0dGluZ3M6
OmlzU3BhdGlhbE5hdmlnYXRpb25FbmFibGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9ET01EYXRhU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
RE9NRGF0YVN0b3JlLmNwcAppbmRleCBlM2JhOTEyZTM5ZDExMDI0NDk1NTk2OTk4NDkzZTM3ZTAz
NjBmNThiLi40NTY5ODc1MTNhOTNkY2QyZmM2OGMxZjMxMTQ1MTAzYzZkNzYzNmVmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhU3RvcmUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURhdGFTdG9yZS5jcHAKQEAgLTU3LDkgKzU3LDkg
QEAgRE9NRGF0YVN0b3JlKiBET01EYXRhU3RvcmU6OmN1cnJlbnQodjg6Oklzb2xhdGUqIGlzb2xh
dGUpCiAgICAgVjhQZXJJc29sYXRlRGF0YSogZGF0YSA9IGlzb2xhdGUgPyBWOFBlcklzb2xhdGVE
YXRhOjpmcm9tKGlzb2xhdGUpIDogVjhQZXJJc29sYXRlRGF0YTo6Y3VycmVudCgpOwogICAgIGlm
IChVTkxJS0VMWSghIWRhdGEtPmRvbURhdGFTdG9yZSgpKSkKICAgICAgICAgcmV0dXJuIGRhdGEt
PmRvbURhdGFTdG9yZSgpOwotICAgIFY4RE9NV2luZG93U2hlbGwqIGNvbnRleHQgPSBWOERPTVdp
bmRvd1NoZWxsOjpnZXRFbnRlcmVkKCk7Ci0gICAgaWYgKFVOTElLRUxZKCEhY29udGV4dCkpCi0g
ICAgICAgIHJldHVybiBjb250ZXh0LT53b3JsZCgpLT5pc29sYXRlZFdvcmxkRE9NRGF0YVN0b3Jl
KCk7CisgICAgVjhET01XaW5kb3dTaGVsbCogc2hlbGwgPSBWOERPTVdpbmRvd1NoZWxsOjppc29s
YXRlZCh2ODo6Q29udGV4dDo6R2V0RW50ZXJlZCgpKTsKKyAgICBpZiAoVU5MSUtFTFkoISFzaGVs
bCkpCisgICAgICAgIHJldHVybiBzaGVsbC0+d29ybGQoKS0+aXNvbGF0ZWRXb3JsZERPTURhdGFT
dG9yZSgpOwogICAgIHJldHVybiAmbWFpbldvcmxkRE9NRGF0YVN0b3JlOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDBlYTA1
MGQ2YzQxNjVkNGRhNWYzOWYyMDhjODRmMDdjNDMzMzI4MTUuLjQ4ZDViY2RmY2FiNDFlOTNjZDVh
NjQ2ODY5ODU5Y2E3NzliYTI5NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1NjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC00MjMsOCArNDIzLDggQEAgdm9pZCBTY3JpcHRDb250
cm9sbGVyOjpldmFsdWF0ZUluSXNvbGF0ZWRXb3JsZChpbnQgd29ybGRJRCwgY29uc3QgVmVjdG9y
PFNjcmlwdFMKIAogYm9vbCBTY3JpcHRDb250cm9sbGVyOjpzaG91bGRCeXBhc3NNYWluV29ybGRD
b250ZW50U2VjdXJpdHlQb2xpY3koKQogewotICAgIGlmIChWOERPTVdpbmRvd1NoZWxsKiBpc29s
YXRlZFdvcmxkU2hlbGwgPSBWOERPTVdpbmRvd1NoZWxsOjpnZXRFbnRlcmVkKCkpCi0gICAgICAg
IHJldHVybiBpc29sYXRlZFdvcmxkU2hlbGwtPndvcmxkKCktPmlzb2xhdGVkV29ybGRIYXNDb250
ZW50U2VjdXJpdHlQb2xpY3koKTsKKyAgICBpZiAoRE9NV3JhcHBlcldvcmxkKiB3b3JsZCA9IHdv
cmxkRm9yRW50ZXJlZENvbnRleHRJZklzb2xhdGVkKCkpCisgICAgICAgIHJldHVybiB3b3JsZC0+
aXNvbGF0ZWRXb3JsZEhhc0NvbnRlbnRTZWN1cml0eVBvbGljeSgpOwogICAgIHJldHVybiBmYWxz
ZTsKIH0KIApAQCAtNDQyLDExICs0NDIsMTMgQEAgdm9pZCBTY3JpcHRDb250cm9sbGVyOjpmaW5p
c2hlZFdpdGhFdmVudChFdmVudCogZXZlbnQpCiAKIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gU2Ny
aXB0Q29udHJvbGxlcjo6Y3VycmVudFdvcmxkQ29udGV4dCgpCiB7Ci0gICAgaWYgKFY4RE9NV2lu
ZG93U2hlbGwqIGlzb2xhdGVkU2hlbGwgPSBWOERPTVdpbmRvd1NoZWxsOjpnZXRFbnRlcmVkKCkp
IHsKLSAgICAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkNvbnRleHQ+IGNvbnRleHQgPSBpc29sYXRl
ZFNoZWxsLT5jb250ZXh0KCk7Ci0gICAgICAgIGlmIChjb250ZXh0LklzRW1wdHkoKSB8fCBtX2Zy
YW1lICE9IHRvRnJhbWVJZk5vdERldGFjaGVkKGNvbnRleHQpKQorICAgIGlmICh2ODo6Q29udGV4
dDo6SW5Db250ZXh0KCkpIHsKKyAgICAgICAgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gY29udGV4
dCA9IHY4OjpDb250ZXh0OjpHZXRFbnRlcmVkKCk7CisgICAgICAgIGlmIChWOERPTVdpbmRvd1No
ZWxsOjppc29sYXRlZChjb250ZXh0KSkgeworICAgICAgICAgICAgaWYgKG1fZnJhbWUgPT0gdG9G
cmFtZUlmTm90RGV0YWNoZWQoY29udGV4dCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHY4OjpM
b2NhbDx2ODo6Q29udGV4dD46Ok5ldyhjb250ZXh0KTsKICAgICAgICAgICAgIHJldHVybiB2ODo6
TG9jYWw8djg6OkNvbnRleHQ+KCk7Ci0gICAgICAgIHJldHVybiB2ODo6TG9jYWw8djg6OkNvbnRl
eHQ+OjpOZXcoY29udGV4dCk7CisgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIHY4OjpMb2Nh
bDx2ODo6Q29udGV4dD46Ok5ldyh3aW5kb3dTaGVsbChtYWluVGhyZWFkTm9ybWFsV29ybGQoKSkt
PmNvbnRleHQoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9W
OEJpbmRpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5oCmluZGV4
IGQ5ZTM3Njg5M2NkMTI2MmFlMmFlYTg1NThkZDQ4MTg0OTcwNzlkNjMuLjBhMWRjMDlhMTllMTA5
NzA0ZTY5M2NjNDY5ZTNmYjg5YTc1YzYzOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1Y4QmluZGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
QmluZGluZy5oCkBAIC0zNzksNiArMzc5LDE2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAv
LyBhIGNvbnRleHQsIGlmIHRoZSB3aW5kb3cgaXMgY3VycmVudGx5IGJlaW5nIGRpc3BsYXllZCBp
biB0aGUgRnJhbWUuCiAgICAgRnJhbWUqIHRvRnJhbWVJZk5vdERldGFjaGVkKHY4OjpIYW5kbGU8
djg6OkNvbnRleHQ+KTsKIAorICAgIGlubGluZSBET01XcmFwcGVyV29ybGQqIHdvcmxkRm9yRW50
ZXJlZENvbnRleHRJZklzb2xhdGVkKCkKKyAgICB7CisgICAgICAgIGlmICghdjg6OkNvbnRleHQ6
OkluQ29udGV4dCgpKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIFY4RE9NV2luZG93
U2hlbGwqIHNoZWxsID0gVjhET01XaW5kb3dTaGVsbDo6aXNvbGF0ZWQodjg6OkNvbnRleHQ6Okdl
dEVudGVyZWQoKSk7CisgICAgICAgIGlmICghc2hlbGwpCisgICAgICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgcmV0dXJuIHNoZWxsLT53b3JsZCgpOworICAgIH0KKwogICAgIC8vIElmIHRoZSBj
dXJyZW50IGNvbnRleHQgY2F1c2VzIG91dCBvZiBtZW1vcnksIEphdmFTY3JpcHQgc2V0dGluZwog
ICAgIC8vIGlzIGRpc2FibGVkIGFuZCBpdCByZXR1cm5zIHRydWUuCiAgICAgYm9vbCBoYW5kbGVP
dXRPZk1lbW9yeSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhE
T01XaW5kb3dTaGVsbC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XaW5kb3dT
aGVsbC5oCmluZGV4IGNkYjY4N2JiN2Y1ODM4YjRkMmMyYzI2ZTU5MDMxMjIxNmMwN2ZkOGYuLmZi
ZTI1MmQzN2ZmODBiNGY1MDkwNzYyNjI3YTc3MTlmNGNjNjc3YmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmgKQEAgLTgwLDI5ICs4MCwxNiBAQCBw
dWJsaWM6CiAKICAgICB2b2lkIGRlc3Ryb3lHbG9iYWwoKTsKIAotICAgIFY4UGVyQ29udGV4dERh
dGEqIHBlckNvbnRleHREYXRhKCkgeyByZXR1cm4gbV9wZXJDb250ZXh0RGF0YS5nZXQoKTsgfQot
Ci0gICAgRE9NV3JhcHBlcldvcmxkKiB3b3JsZCgpIHsgcmV0dXJuIG1fd29ybGQuZ2V0KCk7IH0K
LQotICAgIC8vIFJldHVybnMgdGhlIGlzb2xhdGVkIHdvcmxkIGFzc29jaWF0ZWQgd2l0aAotICAg
IC8vIHY4OjpDb250ZXh0OjpHZXRFbnRlcmVkKCkuIEJlY2F1c2Ugd29ybGRzIGFyZSBpc29sYXRl
ZCwgdGhlIGVudGlyZQotICAgIC8vIEphdmFTY3JpcHQgY2FsbCBzdGFjayBzaG91bGQgYmUgZnJv
bSB0aGUgc2FtZSBpc29sYXRlZCB3b3JsZC4KLSAgICAvLyBSZXR1cm5zIDAgaWYgdGhlIGVudGVy
ZWQgY29udGV4dCBpcyBmcm9tIHRoZSBtYWluIHdvcmxkLgotICAgIC8vCi0gICAgLy8gRklYTUU6
IENvbnNpZGVyIGVkZ2UgY2FzZXMgd2l0aCBET00gbXV0YXRpb24gZXZlbnRzIHRoYXQgbWlnaHQK
LSAgICAvLyB2aW9sYXRlIHRoaXMgaW52YXJpYW50LgotICAgIC8vCi0gICAgLy8gRklYTUU6IFRo
aXMgaXMgcG9vcmx5IG5hbWVkIGFmdGVyIHRoZSBkZWxldGlvbiBvZiBpc29sYXRlZCBjb250ZXh0
cy4KLSAgICBzdGF0aWMgVjhET01XaW5kb3dTaGVsbCogZ2V0RW50ZXJlZCgpCisgICAgc3RhdGlj
IFY4RE9NV2luZG93U2hlbGwqIGlzb2xhdGVkKHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNvbnRl
eHQpCiAgICAgewotICAgICAgICBpZiAoIURPTVdyYXBwZXJXb3JsZDo6aXNvbGF0ZWRXb3JsZHNF
eGlzdCgpKQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIGlmICghdjg6OkNvbnRleHQ6
OkluQ29udGV4dCgpKQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDxWOERPTVdpbmRvd1NoZWxsKj4odjg6OkNvbnRleHQ6OkdldEVudGVyZWQoKS0+R2V0
QWxpZ25lZFBvaW50ZXJGcm9tRW1iZWRkZXJEYXRhKHY4Q29udGV4dElzb2xhdGVkV2luZG93U2hl
bGwpKTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFY4RE9NV2luZG93U2hlbGwqPihjb250
ZXh0LT5HZXRBbGlnbmVkUG9pbnRlckZyb21FbWJlZGRlckRhdGEodjhDb250ZXh0SXNvbGF0ZWRX
aW5kb3dTaGVsbCkpOwogICAgIH0KIAorICAgIFY4UGVyQ29udGV4dERhdGEqIHBlckNvbnRleHRE
YXRhKCkgeyByZXR1cm4gbV9wZXJDb250ZXh0RGF0YS5nZXQoKTsgfQorICAgIERPTVdyYXBwZXJX
b3JsZCogd29ybGQoKSB7IHJldHVybiBtX3dvcmxkLmdldCgpOyB9CisKICAgICB2b2lkIGRlc3Ry
b3lJc29sYXRlZFNoZWxsKCk7CisKIHByaXZhdGU6CiAgICAgVjhET01XaW5kb3dTaGVsbChGcmFt
ZSosIFBhc3NSZWZQdHI8RE9NV3JhcHBlcldvcmxkPik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvVjhET01XcmFwcGVyLmgKaW5kZXggYmU4ODQxOGZiMmJjOGFkYmUzOWRhMTAzNDIyNGI4
ZWYzZWM1NjA3MC4uNmY0M2U3MjRkNTJjZmY1YmZmNTAzNjVlMzEzMjE3ZTFjNmJkOThmOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmgKQEAgLTExNSwxNCArMTE1
LDE1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4gZ2V0Q2FjaGVkV3JhcHBlcihOb2RlKiBub2RlKQogICAgICAgICB7CiAgICAgICAg
ICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgICAgICAgICAgaWYgKExJS0VMWSghRE9N
V3JhcHBlcldvcmxkOjppc29sYXRlZFdvcmxkc0V4aXN0KCkpKQorICAgICAgICAgICAgaWYgKExJ
S0VMWSghRE9NV3JhcHBlcldvcmxkOjppc29sYXRlZFdvcmxkc0V4aXN0KCkpIHx8ICF2ODo6Q29u
dGV4dDo6SW5Db250ZXh0KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG5vZGUtPndyYXBwZXIo
KTsKIAotICAgICAgICAgICAgVjhET01XaW5kb3dTaGVsbCogY29udGV4dCA9IFY4RE9NV2luZG93
U2hlbGw6OmdldEVudGVyZWQoKTsKLSAgICAgICAgICAgIGlmIChMSUtFTFkoIWNvbnRleHQpKQor
ICAgICAgICAgICAgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gY29udGV4dCA9IHY4OjpDb250ZXh0
OjpHZXRFbnRlcmVkKCk7CisgICAgICAgICAgICBWOERPTVdpbmRvd1NoZWxsKiBzaGVsbCA9IFY4
RE9NV2luZG93U2hlbGw6Omlzb2xhdGVkKGNvbnRleHQpOworICAgICAgICAgICAgaWYgKExJS0VM
WSghc2hlbGwpKQogICAgICAgICAgICAgICAgIHJldHVybiBub2RlLT53cmFwcGVyKCk7CiAKLSAg
ICAgICAgICAgIHJldHVybiBjb250ZXh0LT53b3JsZCgpLT5pc29sYXRlZFdvcmxkRE9NRGF0YVN0
b3JlKCktPmdldChub2RlKTsKKyAgICAgICAgICAgIHJldHVybiBzaGVsbC0+d29ybGQoKS0+aXNv
bGF0ZWRXb3JsZERPTURhdGFTdG9yZSgpLT5nZXQobm9kZSk7CiAgICAgICAgIH0KIAogICAgIHBy
aXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JsZENvbnRl
eHRIYW5kbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV29ybGRDb250ZXh0SGFu
ZGxlLmNwcAppbmRleCAzNGI5YzE5YmY1OTgwODUxZjJmMjZiMmZiYTNjYjRlNzM4MjY1OWY5Li5l
MmY2ODdiODU3MWZjYWFiMzcyYmEzYWQyYzEzZTE0NzNkZjA0NmFlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JsZENvbnRleHRIYW5kbGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmxkQ29udGV4dEhhbmRsZS5jcHAKQEAgLTQ0LDI3ICs0
NCwyMSBAQCBXb3JsZENvbnRleHRIYW5kbGU6OldvcmxkQ29udGV4dEhhbmRsZShXb3JsZFRvVXNl
IHdvcmxkVG9Vc2UpCiAgICAgaWYgKHdvcmxkVG9Vc2UgPT0gVXNlTWFpbldvcmxkIHx8IHdvcmxk
VG9Vc2UgPT0gVXNlV29ya2VyV29ybGQpCiAgICAgICAgIHJldHVybjsKIAotI2lmIEVOQUJMRShX
T1JLRVJTKQotICAgIC8vIEZJWE1FIFdlIGFyZSBkdXBsaWNhdGluZyBhIGxvdCBvZiBlZmZvcnQg
aGVyZSBjaGVja2luZyB0aGUgY29udGV4dCBmb3IgdGhlIHdvcmtlciBhbmQgZm9yIHRoZSBpc29s
YXRlZCB3b3JsZC4KICAgICBpZiAodjg6OkNvbnRleHQ6OkluQ29udGV4dCgpKSB7CiAgICAgICAg
IHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNvbnRleHQgPSB2ODo6Q29udGV4dDo6R2V0Q3VycmVu
dCgpOwotICAgICAgICBpZiAoIWNvbnRleHQuSXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBpZiAo
VU5MSUtFTFkoIVY4RE9NV3JhcHBlcjo6aXNXcmFwcGVyT2ZUeXBlKHRvSW5uZXJHbG9iYWxPYmpl
Y3QoY29udGV4dCksICZWOERPTVdpbmRvdzo6aW5mbykpKSB7Ci0gICAgICAgICAgICAgICAgbV93
b3JsZFRvVXNlID0gVXNlV29ya2VyV29ybGQ7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICAgICAgfQorI2lmIEVOQUJMRShXT1JLRVJTKQorICAgICAgICBpZiAoVU5MSUtFTFkoIVY4
RE9NV3JhcHBlcjo6aXNXcmFwcGVyT2ZUeXBlKHRvSW5uZXJHbG9iYWxPYmplY3QoY29udGV4dCks
ICZWOERPTVdpbmRvdzo6aW5mbykpKSB7CisgICAgICAgICAgICBtX3dvcmxkVG9Vc2UgPSBVc2VX
b3JrZXJXb3JsZDsKKyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgIH0KICNlbmRp
ZgotCi0gICAgVjhET01XaW5kb3dTaGVsbCogc2hlbGwgPSBWOERPTVdpbmRvd1NoZWxsOjpnZXRF
bnRlcmVkKCk7Ci0gICAgaWYgKExJS0VMWSghc2hlbGwpKSB7Ci0gICAgICAgIG1fd29ybGRUb1Vz
ZSA9IFVzZU1haW5Xb3JsZDsKLSAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAoVjhET01XaW5k
b3dTaGVsbDo6aXNvbGF0ZWQoY29udGV4dCkpIHsKKyAgICAgICAgICAgIG1fY29udGV4dCA9IFNo
YXJlZFBlcnNpc3RlbnQ8djg6OkNvbnRleHQ+OjpjcmVhdGUoY29udGV4dCk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KICAgICB9CiAKLSAgICBBU1NFUlQoIXNoZWxsLT5jb250ZXh0
KCkuSXNFbXB0eSgpKTsKLSAgICBtX2NvbnRleHQgPSBTaGFyZWRQZXJzaXN0ZW50PHY4OjpDb250
ZXh0Pjo6Y3JlYXRlKHNoZWxsLT5jb250ZXh0KCkpOworICAgIG1fd29ybGRUb1VzZSA9IFVzZU1h
aW5Xb3JsZDsKIH0KIAogdjg6OkxvY2FsPHY4OjpDb250ZXh0PiBXb3JsZENvbnRleHRIYW5kbGU6
OmFkanVzdGVkQ29udGV4dChTY3JpcHRDb250cm9sbGVyKiBzY3JpcHQpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEb2N1bWVudEN1c3RvbS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEb2N1bWVudEN1c3RvbS5j
cHAKaW5kZXggNmU5Yzk2NGI5NDIwOWU1YWZhYmRhOGY4NTY0MmMwOGZlOThkYmRhNy4uZDE3Zjg1
ODcxNWE5MTk0NjBjYWM2YzgxYmUyYWRhZmQ4ZjFmMzVkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RG9jdW1lbnRDdXN0b20uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERvY3VtZW50Q3VzdG9tLmNwcApAQCAtMTA3
LDcgKzEwNyw3IEBAIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcChEb2N1bWVudCogaW1wbCwg
djg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRlCiAgICAgdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiB3cmFwcGVyID0gVjhEb2N1bWVudDo6Y3JlYXRlV3JhcHBlcihpbXBsLCBjcmVhdGlv
bkNvbnRleHQsIGlzb2xhdGUpOwogICAgIGlmICh3cmFwcGVyLklzRW1wdHkoKSkKICAgICAgICAg
cmV0dXJuIHdyYXBwZXI7Ci0gICAgaWYgKCFWOERPTVdpbmRvd1NoZWxsOjpnZXRFbnRlcmVkKCkp
IHsKKyAgICBpZiAoIXdvcmxkRm9yRW50ZXJlZENvbnRleHRJZklzb2xhdGVkKCkpIHsKICAgICAg
ICAgaWYgKEZyYW1lKiBmcmFtZSA9IGltcGwtPmZyYW1lKCkpCiAgICAgICAgICAgICBmcmFtZS0+
c2NyaXB0KCktPndpbmRvd1NoZWxsKG1haW5UaHJlYWROb3JtYWxXb3JsZCgpKS0+dXBkYXRlRG9j
dW1lbnRXcmFwcGVyKHdyYXBwZXIpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxEb2N1bWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRG9jdW1lbnRDdXN0b20uY3BwCmluZGV4IDk3
Y2JmYTYxMGMyNDhkYzZlMzBmMGQ1MWQ4ZTQyN2EzN2UyMWE2YmQuLjhlZGU3MDczOGNiODc0NjJh
Yjk2MTg1NjEwN2JkOTIzOWJhODFhYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOEhUTUxEb2N1bWVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTERvY3VtZW50Q3VzdG9tLmNwcApAQCAtMTc0LDcg
KzE3NCw3IEBAIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcChIVE1MRG9jdW1lbnQqIGltcGws
IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25DCiAgICAgdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PiB3cmFwcGVyID0gVjhIVE1MRG9jdW1lbnQ6OmNyZWF0ZVdyYXBwZXIoaW1wbCwgY3JlYXRp
b25Db250ZXh0LCBpc29sYXRlKTsKICAgICBpZiAod3JhcHBlci5Jc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybiB3cmFwcGVyOwotICAgIGlmICghVjhET01XaW5kb3dTaGVsbDo6Z2V0RW50ZXJlZCgp
KSB7CisgICAgaWYgKCF3b3JsZEZvckVudGVyZWRDb250ZXh0SWZJc29sYXRlZCgpKSB7CiAgICAg
ICAgIGlmIChGcmFtZSogZnJhbWUgPSBpbXBsLT5mcmFtZSgpKQogICAgICAgICAgICAgZnJhbWUt
PnNjcmlwdCgpLT53aW5kb3dTaGVsbChtYWluVGhyZWFkTm9ybWFsV29ybGQoKSktPnVwZGF0ZURv
Y3VtZW50V3JhcHBlcih3cmFwcGVyKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTVkdEb2N1bWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTVkdEb2N1bWVudEN1c3RvbS5jcHAKaW5kZXggNjNl
NTBlOTBlMDg5Y2NjNTc3MzE5NWUyNmJhYmQ4MTcyMzI0NzU4Yi4uMTgyMzgxYzE0ZDgzZTk5Mzkz
NTBhZDNiOGQ3OTkxZWVmODVjY2JlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4U1ZHRG9jdW1lbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNWR0RvY3VtZW50Q3VzdG9tLmNwcApAQCAtNDQsNyArNDQs
NyBAQCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXAoU1ZHRG9jdW1lbnQqIGltcGwsIHY4OjpI
YW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25DbwogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
d3JhcHBlciA9IFY4U1ZHRG9jdW1lbnQ6OmNyZWF0ZVdyYXBwZXIoaW1wbCwgY3JlYXRpb25Db250
ZXh0LCBpc29sYXRlKTsKICAgICBpZiAod3JhcHBlci5Jc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
biB3cmFwcGVyOwotICAgIGlmICghVjhET01XaW5kb3dTaGVsbDo6Z2V0RW50ZXJlZCgpKSB7Cisg
ICAgaWYgKCF3b3JsZEZvckVudGVyZWRDb250ZXh0SWZJc29sYXRlZCgpKSB7CiAgICAgICAgIGlm
IChGcmFtZSogZnJhbWUgPSBpbXBsLT5mcmFtZSgpKQogICAgICAgICAgICAgZnJhbWUtPnNjcmlw
dCgpLT53aW5kb3dTaGVsbChtYWluVGhyZWFkTm9ybWFsV29ybGQoKSktPnVwZGF0ZURvY3VtZW50
V3JhcHBlcih3cmFwcGVyKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhYTUxIdHRwUmVxdWVzdENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFhNTEh0dHBSZXF1ZXN0Q29uc3RydWN0b3IuY3Bw
CmluZGV4IDlmMTY4MDAwNzlkNWQ4YjBiZDJiZDdjNzE1YjM4MTJkYzc3YzEwYzguLmIwMWZlMWE5
MDkzMGJkZmFkZDhmMDQ5Y2ZhZGNmMGJkYTVlNzdhODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFhNTEh0dHBSZXF1ZXN0Q29uc3RydWN0b3IuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFhNTEh0dHBSZXF1ZXN0Q29u
c3RydWN0b3IuY3BwCkBAIC01NSw4ICs1NSwxMCBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhY
TUxIdHRwUmVxdWVzdDo6Y29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJgog
ICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBnZXRTY3JpcHRFeGVjdXRpb25D
b250ZXh0KCk7CiAKICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luOwot
ICAgIGlmIChWOERPTVdpbmRvd1NoZWxsKiBpc29sYXRlZFdvcmxkU2hlbGwgPSBWOERPTVdpbmRv
d1NoZWxsOjpnZXRFbnRlcmVkKCkpCi0gICAgICAgIHNlY3VyaXR5T3JpZ2luID0gaXNvbGF0ZWRX
b3JsZFNoZWxsLT53b3JsZCgpLT5pc29sYXRlZFdvcmxkU2VjdXJpdHlPcmlnaW4oKTsKKyAgICBp
ZiAoY29udGV4dC0+aXNEb2N1bWVudCgpKSB7CisgICAgICAgIGlmIChET01XcmFwcGVyV29ybGQq
IHdvcmxkID0gd29ybGRGb3JFbnRlcmVkQ29udGV4dElmSXNvbGF0ZWQoKSkKKyAgICAgICAgICAg
IHNlY3VyaXR5T3JpZ2luID0gd29ybGQtPmlzb2xhdGVkV29ybGRTZWN1cml0eU9yaWdpbigpOwor
ICAgIH0KIAogICAgIFJlZlB0cjxYTUxIdHRwUmVxdWVzdD4geG1sSHR0cFJlcXVlc3QgPSBYTUxI
dHRwUmVxdWVzdDo6Y3JlYXRlKGNvbnRleHQsIHNlY3VyaXR5T3JpZ2luKTsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>