<?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>97943</bug_id>
          
          <creation_ts>2012-09-28 15:01:30 -0700</creation_ts>
          <short_desc>[V8] The concept of forceNewObject is unneeded (dom-traverse gets 3% faster)</short_desc>
          <delta_ts>2012-10-01 13:41:32 -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>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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>arv</cc>
    
    <cc>dglazkov</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>731012</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-28 15:01:30 -0700</bug_when>
    <thetext>[V8] Male Dromaeo/dom-traverse.html 3% faster</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731014</commentid>
    <comment_count>1</comment_count>
      <attachid>166318</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-28 15:02:12 -0700</bug_when>
    <thetext>Created attachment 166318
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731017</commentid>
    <comment_count>2</comment_count>
      <attachid>166318</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-09-28 15:04:13 -0700</bug_when>
    <thetext>Comment on attachment 166318
Patch

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

&gt; Source/WebCore/ChangeLog:3
&gt; +        [V8] Male Dromaeo/dom-traverse.html 3% faster

Why only male?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731018</commentid>
    <comment_count>3</comment_count>
      <attachid>166320</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-28 15:07:35 -0700</bug_when>
    <thetext>Created attachment 166320
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731028</commentid>
    <comment_count>4</comment_count>
      <attachid>166320</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-28 15:35:55 -0700</bug_when>
    <thetext>Comment on attachment 166320
Patch for landing

Actually, there might be something even better to do.  /me investigates.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731071</commentid>
    <comment_count>5</comment_count>
      <attachid>166333</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-28 17:08:38 -0700</bug_when>
    <thetext>Created attachment 166333
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731096</commentid>
    <comment_count>6</comment_count>
      <attachid>166333</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-09-28 17:45:13 -0700</bug_when>
    <thetext>Comment on attachment 166333
Patch

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

&gt; Source/WebCore/ChangeLog:8
&gt; +        We don&apos;t need the concept of forceNewObject. It doen&apos;t do anything

Great observation! I think JSC is using a similar concept too. Maybe we can remove it from JSC too (in another patch)?

Typo: doen&apos;t

&gt; Source/WebCore/ChangeLog:11
&gt; +        * bindings/scripts/CodeGeneratorV8.pm:

Maybe you need to update run-binding-tests?

&gt; Source/WebCore/bindings/v8/custom/V8NodeCustom.cpp:135
&gt; -    if (!forceNewObject) {
&gt; -        v8::Handle&lt;v8::Value&gt; wrapper = V8DOMWrapper::getCachedWrapper(impl);
&gt; -        if (!wrapper.IsEmpty())
&gt; -            return wrapper;
&gt; -    }
&gt; +    v8::Handle&lt;v8::Value&gt; wrapper = V8DOMWrapper::getCachedWrapper(impl);
&gt; +    if (!wrapper.IsEmpty())
&gt; +        return wrapper;

Before landing, please just double-check that we are clearing the cached wrapper correctly. If we kept a stale cached wrapper, we will end up returning a wrong wrapper object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731107</commentid>
    <comment_count>7</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-28 18:07:14 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 166333 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=166333&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:8
&gt; &gt; +        We don&apos;t need the concept of forceNewObject. It doen&apos;t do anything
&gt; 
&gt; Great observation! I think JSC is using a similar concept too. Maybe we can remove it from JSC too (in another patch)?

JSC uses this IDL attribute to call toJSNewlyCreated, which is what we should do too.  That&apos;s for a future patch though.

&gt; Typo: doen&apos;t

Fixed.

&gt; &gt; Source/WebCore/ChangeLog:11
&gt; &gt; +        * bindings/scripts/CodeGeneratorV8.pm:
&gt; 
&gt; Maybe you need to update run-binding-tests?

I thought so too, but it seemed to work ok.  I would have expected TestNode to show some differences, but it didn&apos;t.

&gt; &gt; Source/WebCore/bindings/v8/custom/V8NodeCustom.cpp:135
&gt; &gt; -    if (!forceNewObject) {
&gt; &gt; -        v8::Handle&lt;v8::Value&gt; wrapper = V8DOMWrapper::getCachedWrapper(impl);
&gt; &gt; -        if (!wrapper.IsEmpty())
&gt; &gt; -            return wrapper;
&gt; &gt; -    }
&gt; &gt; +    v8::Handle&lt;v8::Value&gt; wrapper = V8DOMWrapper::getCachedWrapper(impl);
&gt; &gt; +    if (!wrapper.IsEmpty())
&gt; &gt; +        return wrapper;
&gt; 
&gt; Before landing, please just double-check that we are clearing the cached wrapper correctly. If we kept a stale cached wrapper, we will end up returning a wrong wrapper object.

I&apos;m pretty sure we&apos;re doing this correctly.  The common case was to have forceNewObject be false anyway.  Is there something in particular you&apos;d like me to check?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731108</commentid>
    <comment_count>8</comment_count>
      <attachid>166340</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-28 18:07:40 -0700</bug_when>
    <thetext>Created attachment 166340
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731109</commentid>
    <comment_count>9</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-09-28 18:18:29 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; I&apos;m pretty sure we&apos;re doing this correctly.  The common case was to have forceNewObject be false anyway.  Is there something in particular you&apos;d like me to check?

I checked V8DOMDataStore and V8DOMMap, it looks OK. Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731142</commentid>
    <comment_count>10</comment_count>
      <attachid>166340</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-28 19:50:15 -0700</bug_when>
    <thetext>Comment on attachment 166340
Patch for landing

Clearing flags on attachment: 166340

Committed r129971: &lt;http://trac.webkit.org/changeset/129971&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731143</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-28 19:50:18 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731202</commentid>
    <comment_count>12</comment_count>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2012-09-29 07:59:33 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)
&gt; &gt; (From update of attachment 166333 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=166333&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/ChangeLog:8
&gt; &gt; &gt; +        We don&apos;t need the concept of forceNewObject. It doen&apos;t do anything
&gt; &gt; 
&gt; &gt; Great observation! I think JSC is using a similar concept too. Maybe we can remove it from JSC too (in another patch)?
&gt; 
&gt; JSC uses this IDL attribute to call toJSNewlyCreated, which is what we should do too.  That&apos;s for a future patch though.
&gt; 
&gt; &gt; Typo: doen&apos;t
&gt; 
&gt; Fixed.
&gt; 
&gt; &gt; &gt; Source/WebCore/ChangeLog:11
&gt; &gt; &gt; +        * bindings/scripts/CodeGeneratorV8.pm:
&gt; &gt; 
&gt; &gt; Maybe you need to update run-binding-tests?
&gt; 
&gt; I thought so too, but it seemed to work ok.  I would have expected TestNode to show some differences, but it didn&apos;t.

The test idl files don&apos;t have any method with [ReturnNewObject]. You could have added a line to it to ensure that the generated code looks right.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731214</commentid>
    <comment_count>13</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-29 08:50:17 -0700</bug_when>
    <thetext>&gt; The test idl files don&apos;t have any method with [ReturnNewObject]. You could have added a line to it to ensure that the generated code looks right.

Good idea. I&apos;ll add one when we add toV8NewlyCreated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731937</commentid>
    <comment_count>14</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-01 13:41:32 -0700</bug_when>
    <thetext>Turns out not to have effected the perf test on the bot.  This perf test is more noisy than I realized, so the perf change might just be noise.  :(</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166318</attachid>
            <date>2012-09-28 15:02:12 -0700</date>
            <delta_ts>2012-09-28 15:07:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97943-20120928150129.patch</filename>
            <type>text/plain</type>
            <size>1649</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5OTQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWIyOGE1YTkyNDc1OTU5
YWVkZWU4NThlZDA2NzE3NzcxM2EyNzlmNy4uM2NhZTg4YjI4MWVkZjg5MWZmMjJjMGEwYjIzMmUw
OGViNzc2NjU3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTA5LTI4ICBBZGFt
IEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1Y4XSBNYWxlIERyb21hZW8v
ZG9tLXRyYXZlcnNlLmh0bWwgMyUgZmFzdGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD05Nzk0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRoZXJlJ3Mgbm8gbmVlZCB0byB0YWtlIHRoaXMgYnJhbmNoIGlu
IHRoZSBob3QgcGF0aCBvZiB0b1Y4KE5vZGUqKS4KKworICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvclY4LnBtOgorICAgICAgICAoR2VuZXJhdGVIZWFkZXIpOgorCiAyMDEy
LTA5LTI4ICBCZW4gV2FnbmVyICA8YnVuZ2VtYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIENo
cm9taXVtIHNob3VsZCByZXNwZWN0ICd0ZXh0LXJlbmRlcmluZzpnZW9tZXRyaWNQcmVjaXNpb24n
IGJ5IGRpc2FibGluZyBoaW50aW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQppbmRleCAyZDM1ZDNkNmYyMjllYzU4OGZjYWJiZWNl
YWYzNjc3Y2IyOWM3ZjhlLi4xNjBjYjZkZjk3ZjI2ODQ4Yjk1MDgwZDg3ZjVlYWM5YjU2YjMwZmQx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JWOC5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JWOC5wbQpAQCAtNTI2LDEyICs1MjYsMTAgQEAgaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiB0b1Y4KE5vZGUqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db24KIHsK
ICAgICBpZiAoVU5MSUtFTFkoIWltcGwpKQogICAgICAgICByZXR1cm4gdjhOdWxsV2l0aENoZWNr
KGlzb2xhdGUpOwotICAgIGlmIChVTkxJS0VMWShmb3JjZU5ld09iamVjdCkpCi0gICAgICAgIHJl
dHVybiB0b1Y4U2xvdyhpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUsIGZvcmNlTmV3T2Jq
ZWN0KTsKICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd3JhcHBlciA9IFY4RE9NV3JhcHBlcjo6
Z2V0Q2FjaGVkV3JhcHBlcihpbXBsKTsKICAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm4gd3JhcHBlcjsKLSAgICByZXR1cm4gdG9WOFNsb3coaW1wbCwgY3JlYXRpb25D
b250ZXh0LCBpc29sYXRlLCBmYWxzZSk7CisgICAgcmV0dXJuIHRvVjhTbG93KGltcGwsIGNyZWF0
aW9uQ29udGV4dCwgaXNvbGF0ZSwgZm9yY2VOZXdPYmplY3QpOwogfQogRU5ECiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166320</attachid>
            <date>2012-09-28 15:07:35 -0700</date>
            <delta_ts>2012-09-28 17:08:35 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-97943-20120928150651.patch</filename>
            <type>text/plain</type>
            <size>1650</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5OTQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWIyOGE1YTkyNDc1OTU5
YWVkZWU4NThlZDA2NzE3NzcxM2EyNzlmNy4uYWY4YTQ1ZjUwMzM5NzQ5YzZkZGIxZDAxNWI4NjI0
OWQ5YmE3NjhhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTA5LTI4ICBBZGFt
IEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1Y4XSBNYWtlIERyb21hZW8v
ZG9tLXRyYXZlcnNlLmh0bWwgMyUgZmFzdGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD05Nzk0MworCisgICAgICAgIFJldmlld2VkIGJ5IERpbWl0cmkg
R2xhemtvdi4KKworICAgICAgICBUaGVyZSdzIG5vIG5lZWQgdG8gdGFrZSB0aGlzIGJyYW5jaCBp
biB0aGUgaG90IHBhdGggb2YgdG9WOChOb2RlKikuCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JWOC5wbToKKyAgICAgICAgKEdlbmVyYXRlSGVhZGVyKToKKwogMjAx
Mi0wOS0yOCAgQmVuIFdhZ25lciAgPGJ1bmdlbWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBD
aHJvbWl1bSBzaG91bGQgcmVzcGVjdCAndGV4dC1yZW5kZXJpbmc6Z2VvbWV0cmljUHJlY2lzaW9u
JyBieSBkaXNhYmxpbmcgaGludGluZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KaW5kZXggMmQzNWQzZDZmMjI5ZWM1ODhmY2FiYmVj
ZWFmMzY3N2NiMjljN2Y4ZS4uMTYwY2I2ZGY5N2YyNjg0OGI5NTA4MGQ4N2Y1ZWFjOWI1NmIzMGZk
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9yVjgucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9yVjgucG0KQEAgLTUyNiwxMiArNTI2LDEwIEBAIGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gdG9WOChOb2RlKiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29uCiB7
CiAgICAgaWYgKFVOTElLRUxZKCFpbXBsKSkKICAgICAgICAgcmV0dXJuIHY4TnVsbFdpdGhDaGVj
ayhpc29sYXRlKTsKLSAgICBpZiAoVU5MSUtFTFkoZm9yY2VOZXdPYmplY3QpKQotICAgICAgICBy
ZXR1cm4gdG9WOFNsb3coaW1wbCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlLCBmb3JjZU5ld09i
amVjdCk7CiAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdyYXBwZXIgPSBWOERPTVdyYXBwZXI6
OmdldENhY2hlZFdyYXBwZXIoaW1wbCk7CiAgICAgaWYgKCF3cmFwcGVyLklzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuIHdyYXBwZXI7Ci0gICAgcmV0dXJuIHRvVjhTbG93KGltcGwsIGNyZWF0aW9u
Q29udGV4dCwgaXNvbGF0ZSwgZmFsc2UpOworICAgIHJldHVybiB0b1Y4U2xvdyhpbXBsLCBjcmVh
dGlvbkNvbnRleHQsIGlzb2xhdGUsIGZvcmNlTmV3T2JqZWN0KTsKIH0KIEVORAogICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166333</attachid>
            <date>2012-09-28 17:08:38 -0700</date>
            <delta_ts>2012-09-28 18:07:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97943-20120928170754.patch</filename>
            <type>text/plain</type>
            <size>18824</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5OTQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWIyOGE1YTkyNDc1OTU5
YWVkZWU4NThlZDA2NzE3NzcxM2EyNzlmNy4uZjgwOGE3YWM5YWE5ZWY1MDU5NDgyMzc5MjllNDdi
ODkxMDRhYWQyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDEyLTA5LTI4ICBBZGFt
IEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1Y4XSBUaGUgY29uY2VwdCBv
ZiBmb3JjZU5ld09iamVjdCBpcyB1bm5lZWRlZCAoZG9tLXRyYXZlcnNlIGdldHMgMyUgZmFzdGVy
KQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTc5NDMK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBkb24n
dCBuZWVkIHRoZSBjb25jZXB0IG9mIGZvcmNlTmV3T2JqZWN0LiBJdCBkb2VuJ3QgZG8gYW55dGhp
bmcKKyAgICAgICAgdXNlZnVsIGFuZCBpdCBtYWtlcyB0aGUgYmluZGluZ3Mgc2xvd2VyLgorCisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG06CisgICAgICAgIChH
ZW5lcmF0ZUhlYWRlcik6CisgICAgICAgIChHZW5lcmF0ZVRvVjhDb252ZXJ0ZXJzKToKKyAgICAg
ICAgKE5hdGl2ZVRvSlNWYWx1ZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4RG9j
dW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9WOCk6CisgICAgICAgICogYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTERvY3VtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnRvVjgpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxFbGVtZW50Q3Vz
dG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvVjgpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4
L2N1c3RvbS9WOE5vZGVDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9WOFNsb3cpOgor
ICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFNWR0RvY3VtZW50Q3VzdG9tLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnRvVjgpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFNW
R0VsZW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9WOCk6CisgICAgICAgICog
ZG9tL21ha2VfbmFtZXMucGw6CisgICAgICAgIChwcmludFdyYXBwZXJGYWN0b3J5Q3BwRmlsZSk6
CisgICAgICAgIChwcmludFdyYXBwZXJGYWN0b3J5SGVhZGVyRmlsZSk6CisKIDIwMTItMDktMjgg
IEJlbiBXYWduZXIgIDxidW5nZW1hbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQ2hyb21pdW0g
c2hvdWxkIHJlc3BlY3QgJ3RleHQtcmVuZGVyaW5nOmdlb21ldHJpY1ByZWNpc2lvbicgYnkgZGlz
YWJsaW5nIGhpbnRpbmcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JWOC5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvclY4LnBtCmluZGV4IDJkMzVkM2Q2ZjIyOWVjNTg4ZmNhYmJlY2VhZjM2Nzdj
YjI5YzdmOGUuLjUxNDVkMTE2ODZhNGU0Yzc5MGU1ZmQ1MjYyNjNlNTRlM2Q4ODMzZjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBt
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBt
CkBAIC0zNzIsMTAgKzM3Miw2IEBAIEVORAogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAi
ZmFsc2U7XG4iKTsKICAgICB9CiAKLSAgICBteSAkZm9yY2VOZXdPYmplY3RQYXJhbWV0ZXIgPSBJ
c0RPTU5vZGVUeXBlKCRpbnRlcmZhY2VOYW1lKSA/ICIsIGJvb2wgZm9yY2VOZXdPYmplY3QgPSBm
YWxzZSIgOiAiIjsKLSAgICBteSAkZm9yY2VOZXdPYmplY3RJbnB1dCA9IElzRE9NTm9kZVR5cGUo
JGludGVyZmFjZU5hbWUpID8gIiwgYm9vbCBmb3JjZU5ld09iamVjdCIgOiAiIjsKLSAgICBteSAk
Zm9yY2VOZXdPYmplY3RDYWxsID0gSXNET01Ob2RlVHlwZSgkaW50ZXJmYWNlTmFtZSkgPyAiLCBm
b3JjZU5ld09iamVjdCIgOiAiIjsKLQogICAgIHB1c2goQGhlYWRlckNvbnRlbnQsIDw8RU5EKTsK
ICAgICBzdGF0aWMgYm9vbCBIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4pOwogICAg
IHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gR2V0UmF3VGVtcGxh
dGUoKTsKQEAgLTM4NCw3ICszODAsNyBAQCBFTkQKICAgICB7CiAgICAgICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PCR7bmF0aXZlVHlwZX0qPihvYmplY3QtPkdldFBvaW50ZXJGcm9tSW50ZXJu
YWxGaWVsZCh2OERPTVdyYXBwZXJPYmplY3RJbmRleCkpOwogICAgIH0KLSAgICBpbmxpbmUgc3Rh
dGljIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcCgke25hdGl2ZVR5cGV9Kiwgdjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQgPSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KCks
IHY4OjpJc29sYXRlKiA9IDAke2ZvcmNlTmV3T2JqZWN0UGFyYW1ldGVyfSk7CisgICAgaW5saW5l
IHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXAoJHtuYXRpdmVUeXBlfSosIHY4OjpI
YW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0ID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0
PigpLCB2ODo6SXNvbGF0ZSogPSAwKTsKICAgICBzdGF0aWMgdm9pZCBkZXJlZk9iamVjdCh2b2lk
Kik7CiAgICAgc3RhdGljIHZvaWQgdmlzaXRET01XcmFwcGVyKERPTURhdGFTdG9yZSosIHZvaWQq
LCB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0Pik7CiAgICAgc3RhdGljIFdyYXBwZXJUeXBlSW5m
byBpbmZvOwpAQCAtNDgzLDEwICs0NzksOSBAQCBwcml2YXRlOgogRU5ECiAKICAgICBwdXNoKEBo
ZWFkZXJDb250ZW50LCA8PEVORCk7Ci12ODo6SGFuZGxlPHY4OjpPYmplY3Q+ICR7Y2xhc3NOYW1l
fTo6d3JhcCgke25hdGl2ZVR5cGV9KiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0
aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUke2ZvcmNlTmV3T2JqZWN0SW5wdXR9KQor
djg6OkhhbmRsZTx2ODo6T2JqZWN0PiAke2NsYXNzTmFtZX06OndyYXAoJHtuYXRpdmVUeXBlfSog
aW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRl
KiBpc29sYXRlKQogewogRU5ECi0gICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBpZiAoIWZv
cmNlTmV3T2JqZWN0KSB7XG4iKSBpZiBJc0RPTU5vZGVUeXBlKCRpbnRlcmZhY2VOYW1lKTsKICAg
ICBteSAkZG9tTWFwRnVuY3Rpb24gPSBHZXREb21NYXBGdW5jdGlvbigkZGF0YU5vZGUsICRpbnRl
cmZhY2VOYW1lLCAiaXNvbGF0ZSIpOwogICAgIG15ICRnZXRDYWNoZWRXcmFwcGVyID0gSXNOb2Rl
U3ViVHlwZSgkZGF0YU5vZGUpID8gIlY4RE9NV3JhcHBlcjo6Z2V0Q2FjaGVkV3JhcHBlcihpbXBs
KSIgOiAiJHtkb21NYXBGdW5jdGlvbn0uZ2V0KGltcGwpIjsKICAgICBwdXNoKEBoZWFkZXJDb250
ZW50LCA8PEVORCk7CkBAIC00OTQsNyArNDg5LDYgQEAgRU5ECiAgICAgICAgIGlmICghd3JhcHBl
ci5Jc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm4gd3JhcHBlcjsKIEVORAotICAgIHB1c2go
QGhlYWRlckNvbnRlbnQsICIgICAgfVxuIikgaWYgSXNET01Ob2RlVHlwZSgkaW50ZXJmYWNlTmFt
ZSk7CiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgPDxFTkQpOwogICAgIHJldHVybiAke2NsYXNz
TmFtZX06OndyYXBTbG93KGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiB9CkBAIC01
MDUsNDEgKzQ5OSwzOSBAQCBFTkQKICAgICB9IGVsc2lmICghKCRkYXRhTm9kZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57IkN1c3RvbVRvSlNPYmplY3QifSBvciAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0
cmlidXRlcy0+eyJWOEN1c3RvbVRvSlNPYmplY3QifSkpIHsKICAgICAgICAgcHVzaChAaGVhZGVy
Q29udGVudCwgPDxFTkQpOwogCi1pbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoJHtu
YXRpdmVUeXBlfSogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQg
PSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KCksIHY4OjpJc29sYXRlKiBpc29sYXRlID0gMCR7Zm9y
Y2VOZXdPYmplY3RQYXJhbWV0ZXJ9KQoraW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4
KCR7bmF0aXZlVHlwZX0qIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250
ZXh0ID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0PigpLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSA9IDAp
CiB7CiAgICAgaWYgKCFpbXBsKQogICAgICAgICByZXR1cm4gdjhOdWxsV2l0aENoZWNrKGlzb2xh
dGUpOwotICAgIHJldHVybiAke2NsYXNzTmFtZX06OndyYXAoaW1wbCwgY3JlYXRpb25Db250ZXh0
LCBpc29sYXRlJHtmb3JjZU5ld09iamVjdENhbGx9KTsKKyAgICByZXR1cm4gJHtjbGFzc05hbWV9
Ojp3cmFwKGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiB9CiBFTkQKICAgICB9IGVs
c2lmICgkaW50ZXJmYWNlTmFtZSBuZSAnTm9kZScpIHsKICAgICAgICAgcHVzaChAaGVhZGVyQ29u
dGVudCwgPDxFTkQpOwogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOCgke25hdGl2ZVR5cGV9
Kiwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQgPSB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+KCksIHY4OjpJc29sYXRlKiA9IDAke2ZvcmNlTmV3T2JqZWN0UGFyYW1ldGVyfSk7
Cit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOCgke25hdGl2ZVR5cGV9Kiwgdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQgPSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KCksIHY4
OjpJc29sYXRlKiA9IDApOwogRU5ECiAgICAgfSBlbHNlIHsKICAgICAgICAgcHVzaChAaGVhZGVy
Q29udGVudCwgPDxFTkQpOwogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOFNsb3coTm9kZSos
IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSosIGJv
b2wpOwordjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhTbG93KE5vZGUqLCB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqKTsKIAotaW5saW5lIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiB0b1Y4KE5vZGUqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
Y3JlYXRpb25Db250ZXh0ID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0PigpLCB2ODo6SXNvbGF0ZSog
aXNvbGF0ZSA9IDAsIGJvb2wgZm9yY2VOZXdPYmplY3QgPSBmYWxzZSkKK2lubGluZSB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gdG9WOChOb2RlKiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNy
ZWF0aW9uQ29udGV4dCA9IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKSwgdjg6Oklzb2xhdGUqIGlz
b2xhdGUgPSAwKQogewogICAgIGlmIChVTkxJS0VMWSghaW1wbCkpCiAgICAgICAgIHJldHVybiB2
OE51bGxXaXRoQ2hlY2soaXNvbGF0ZSk7Ci0gICAgaWYgKFVOTElLRUxZKGZvcmNlTmV3T2JqZWN0
KSkKLSAgICAgICAgcmV0dXJuIHRvVjhTbG93KGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0
ZSwgZm9yY2VOZXdPYmplY3QpOwogICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3cmFwcGVyID0g
VjhET01XcmFwcGVyOjpnZXRDYWNoZWRXcmFwcGVyKGltcGwpOwogICAgIGlmICghd3JhcHBlci5J
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB3cmFwcGVyOwotICAgIHJldHVybiB0b1Y4U2xvdyhp
bXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUsIGZhbHNlKTsKKyAgICByZXR1cm4gdG9WOFNs
b3coaW1wbCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKIH0KIEVORAogICAgIH0KIAogICAg
IHB1c2goQGhlYWRlckNvbnRlbnQsIDw8RU5EKTsKLWlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gdG9WOChQYXNzUmVmUHRyPCAke25hdGl2ZVR5cGV9ID4gaW1wbCwgdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQgPSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KCksIHY4OjpJ
c29sYXRlKiBpc29sYXRlID0gMCR7Zm9yY2VOZXdPYmplY3RQYXJhbWV0ZXJ9KQoraW5saW5lIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KFBhc3NSZWZQdHI8ICR7bmF0aXZlVHlwZX0gPiBpbXBs
LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCA9IHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4oKSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUgPSAwKQogewotICAgIHJldHVybiB0b1Y4
KGltcGwuZ2V0KCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSR7Zm9yY2VOZXdPYmplY3RDYWxs
fSk7CisgICAgcmV0dXJuIHRvVjgoaW1wbC5nZXQoKSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRl
KTsKIH0KIEVORAogCkBAIC0zMzU3LDggKzMzNDksNiBAQCBzdWIgR2VuZXJhdGVUb1Y4Q29udmVy
dGVycwogICAgIG15ICRuYXRpdmVUeXBlID0gc2hpZnQ7CiAKICAgICBteSAkZG9tTWFwTmFtZSA9
IEdldERvbU1hcE5hbWUoJGRhdGFOb2RlLCAkaW50ZXJmYWNlTmFtZSk7Ci0gICAgbXkgJGZvcmNl
TmV3T2JqZWN0SW5wdXQgPSBJc0RPTU5vZGVUeXBlKCRpbnRlcmZhY2VOYW1lKSA/ICIsIGJvb2wg
Zm9yY2VOZXdPYmplY3QiIDogIiI7Ci0gICAgbXkgJGZvcmNlTmV3T2JqZWN0Q2FsbCA9IElzRE9N
Tm9kZVR5cGUoJGludGVyZmFjZU5hbWUpID8gIiwgZm9yY2VOZXdPYmplY3QiIDogIiI7CiAgICAg
bXkgJHdyYXBTbG93QXJndW1lbnRUeXBlID0gR2V0UGFzc1JlZlB0clR5cGUoJG5hdGl2ZVR5cGUp
OwogICAgIG15ICRiYXNlVHlwZSA9IEJhc2VJbnRlcmZhY2VOYW1lKCRkYXRhTm9kZSk7CiAKQEAg
LTQwODQsOSArNDA3NCw4IEBAIHN1YiBOYXRpdmVUb0pTVmFsdWUKIAogICAgIEFkZEluY2x1ZGVz
Rm9yVHlwZSgkdHlwZSk7CiAKLSAgICAjIHNwZWNpYWwgY2FzZSBmb3Igbm9uLURPTSBub2RlIGlu
dGVyZmFjZXMKICAgICBpZiAoSXNET01Ob2RlVHlwZSgkdHlwZSkpIHsKLSAgICAgICAgcmV0dXJu
ICJ0b1Y4KCR7dmFsdWV9JGdldENyZWF0aW9uQ29udGV4dEFyZyRnZXRJc29sYXRlQXJnIiAuICgk
c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiUmV0dXJuTmV3T2JqZWN0In0gPyAiLCB0
cnVlKSIgOiAiKSIpOworICAgICAgICByZXR1cm4gInRvVjgoJHZhbHVlJGdldENyZWF0aW9uQ29u
dGV4dEFyZyRnZXRJc29sYXRlQXJnKSI7CiAgICAgfQogCiAgICAgaWYgKCR0eXBlIGVxICJFdmVu
dFRhcmdldCIpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOERvY3VtZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOERvY3VtZW50Q3VzdG9tLmNwcAppbmRleCBkNjg1N2JiOTY2NjA4ODhjZTZlZTkwZWJjNzk4
YmNhOGRmZDIzZDM2Li44MWQyNDQyYWJkYTUwNTVhYWM1NGQwYWM3NTYzYmNkN2U2NzZhMDRkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEb2N1bWVudEN1
c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RG9jdW1l
bnRDdXN0b20uY3BwCkBAIC05NSwxNyArOTUsMTcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4
RG9jdW1lbnQ6OmV2YWx1YXRlQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKICAg
ICByZXR1cm4gdG9WOChyZXN1bHQucmVsZWFzZSgpLCBhcmdzLkhvbGRlcigpLCBhcmdzLkdldElz
b2xhdGUoKSk7CiB9CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KERvY3VtZW50KiBpbXBs
LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlz
b2xhdGUsIGJvb2wgZm9yY2VOZXdPYmplY3QpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChE
b2N1bWVudCogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4
OjpJc29sYXRlKiBpc29sYXRlKQogewogICAgIGlmICghaW1wbCkKICAgICAgICAgcmV0dXJuIHY4
TnVsbFdpdGhDaGVjayhpc29sYXRlKTsKICAgICBpZiAoaW1wbC0+aXNIVE1MRG9jdW1lbnQoKSkK
LSAgICAgICAgcmV0dXJuIHRvVjgoc3RhdGljX2Nhc3Q8SFRNTERvY3VtZW50Kj4oaW1wbCksIGNy
ZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSwgZm9yY2VOZXdPYmplY3QpOworICAgICAgICByZXR1cm4g
dG9WOChzdGF0aWNfY2FzdDxIVE1MRG9jdW1lbnQqPihpbXBsKSwgY3JlYXRpb25Db250ZXh0LCBp
c29sYXRlKTsKICNpZiBFTkFCTEUoU1ZHKQogICAgIGlmIChpbXBsLT5pc1NWR0RvY3VtZW50KCkp
Ci0gICAgICAgIHJldHVybiB0b1Y4KHN0YXRpY19jYXN0PFNWR0RvY3VtZW50Kj4oaW1wbCksIGNy
ZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSwgZm9yY2VOZXdPYmplY3QpOworICAgICAgICByZXR1cm4g
dG9WOChzdGF0aWNfY2FzdDxTVkdEb2N1bWVudCo+KGltcGwpLCBjcmVhdGlvbkNvbnRleHQsIGlz
b2xhdGUpOwogI2VuZGlmCi0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gVjhE
b2N1bWVudDo6d3JhcChpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUsIGZvcmNlTmV3T2Jq
ZWN0KTsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBWOERvY3VtZW50Ojp3
cmFwKGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiAgICAgaWYgKHdyYXBwZXIuSXNF
bXB0eSgpKQogICAgICAgICByZXR1cm4gd3JhcHBlcjsKICAgICBpZiAoIVY4RE9NV2luZG93U2hl
bGw6OmdldEVudGVyZWQoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4SFRNTERvY3VtZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOEhUTUxEb2N1bWVudEN1c3RvbS5jcHAKaW5kZXggZTUwYTI2MDNlNDQ3
YTFmNjM0YzliNmYzYTliY2M4OGE4MjQ4M2FkNi4uMGQ0NzE5ZmE1YTY5YmFjZDgxOTRhYjRlYjc4
MjdjYzdlZDRiZTMzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4SFRNTERvY3VtZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhIVE1MRG9jdW1lbnRDdXN0b20uY3BwCkBAIC0xNzYsMTEgKzE3NiwxMSBA
QCB2b2lkIFY4SFRNTERvY3VtZW50OjphbGxBY2Nlc3NvclNldHRlcih2ODo6TG9jYWw8djg6OlN0
cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OgogICAgIGluZm8uVGhpcygpLT5Gb3JjZVNldChuYW1l
LCB2YWx1ZSk7CiB9CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KEhUTUxEb2N1bWVudCog
aW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRl
KiBpc29sYXRlLCBib29sIGZvcmNlTmV3T2JqZWN0KQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRv
VjgoSFRNTERvY3VtZW50KiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29u
dGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7CiAgICAgaWYgKCFpbXBsKQogICAgICAgICBy
ZXR1cm4gdjhOdWxsV2l0aENoZWNrKGlzb2xhdGUpOwotICAgIHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4gd3JhcHBlciA9IFY4SFRNTERvY3VtZW50Ojp3cmFwKGltcGwsIGNyZWF0aW9uQ29udGV4dCwg
aXNvbGF0ZSwgZm9yY2VOZXdPYmplY3QpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3Jh
cHBlciA9IFY4SFRNTERvY3VtZW50Ojp3cmFwKGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0
ZSk7CiAgICAgaWYgKHdyYXBwZXIuSXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gd3JhcHBlcjsK
ICAgICBpZiAoIVY4RE9NV2luZG93U2hlbGw6OmdldEVudGVyZWQoKSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEVsZW1lbnRDdXN0b20uY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEVsZW1lbnRDdXN0b20u
Y3BwCmluZGV4IDI1MWY3NjIyYzhjYmQ2ODk5MGY4OWQyZmM2OTIwYWFlMDEwZGFjNzguLjYzYzBm
NjU4ZjBiNDRhOWZkOGI0ZjRkMTFjMzdmNTY0NDYxYTU4YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxFbGVtZW50Q3VzdG9tLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRWxlbWVudEN1c3RvbS5jcHAK
QEAgLTQwLDExICs0MCwxMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXY4OjpIYW5kbGU8
djg6OlZhbHVlPiB0b1Y4KEhUTUxFbGVtZW50KiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIGJvb2wgZm9yY2VOZXdPYmpl
Y3QpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChIVE1MRWxlbWVudCogaW1wbCwgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQog
ewogICAgIGlmICghaW1wbCkKICAgICAgICAgcmV0dXJuIHY4TnVsbFdpdGhDaGVjayhpc29sYXRl
KTsKLSAgICByZXR1cm4gY3JlYXRlVjhIVE1MV3JhcHBlcihpbXBsLCBjcmVhdGlvbkNvbnRleHQs
IGlzb2xhdGUsIGZvcmNlTmV3T2JqZWN0KTsKKyAgICByZXR1cm4gY3JlYXRlVjhIVE1MV3JhcHBl
cihpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogfQogCiAjaWYgRU5BQkxFKE1JQ1JP
REFUQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE5v
ZGVDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Tm9kZUN1
c3RvbS5jcHAKaW5kZXggNmVmNDZkYWY3ODY3M2M3ZGI4MTQzZjRkMDcyNzc3N2Y0YTk4NTNlMC4u
OGE5OGE3NmU2ZmJmMzEwZTRkNDYwNGU1MGJkNTJhMDI5OWI0ODExZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Tm9kZUN1c3RvbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Tm9kZUN1c3RvbS5jcHAKQEAgLTEyNSw1
MCArMTI1LDQ5IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOE5vZGU6OmFwcGVuZENoaWxkQ2Fs
bGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKICAgICByZXR1cm4gdjg6Ok51bGwoYXJn
cy5HZXRJc29sYXRlKCkpOwogfQogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOFNsb3coTm9k
ZSogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29s
YXRlKiBpc29sYXRlLCBib29sIGZvcmNlTmV3T2JqZWN0KQordjg6OkhhbmRsZTx2ODo6VmFsdWU+
IHRvVjhTbG93KE5vZGUqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250
ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKIHsKICAgICBpZiAoIWltcGwpCiAgICAgICAgIHJl
dHVybiB2OE51bGxXaXRoQ2hlY2soaXNvbGF0ZSk7CiAKLSAgICBpZiAoIWZvcmNlTmV3T2JqZWN0
KSB7Ci0gICAgICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3cmFwcGVyID0gVjhET01XcmFwcGVy
OjpnZXRDYWNoZWRXcmFwcGVyKGltcGwpOwotICAgICAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgp
KQotICAgICAgICAgICAgcmV0dXJuIHdyYXBwZXI7Ci0gICAgfQorICAgIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiB3cmFwcGVyID0gVjhET01XcmFwcGVyOjpnZXRDYWNoZWRXcmFwcGVyKGltcGwpOwor
ICAgIGlmICghd3JhcHBlci5Jc0VtcHR5KCkpCisgICAgICAgIHJldHVybiB3cmFwcGVyOworCiAg
ICAgc3dpdGNoIChpbXBsLT5ub2RlVHlwZSgpKSB7CiAgICAgY2FzZSBOb2RlOjpFTEVNRU5UX05P
REU6CiAgICAgICAgIGlmIChpbXBsLT5pc0hUTUxFbGVtZW50KCkpCi0gICAgICAgICAgICByZXR1
cm4gdG9WOCh0b0hUTUxFbGVtZW50KGltcGwpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUsIGZv
cmNlTmV3T2JqZWN0KTsKKyAgICAgICAgICAgIHJldHVybiB0b1Y4KHRvSFRNTEVsZW1lbnQoaW1w
bCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiAjaWYgRU5BQkxFKFNWRykKICAgICAgICAg
aWYgKGltcGwtPmlzU1ZHRWxlbWVudCgpKQotICAgICAgICAgICAgcmV0dXJuIHRvVjgoc3RhdGlj
X2Nhc3Q8U1ZHRWxlbWVudCo+KGltcGwpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUsIGZvcmNl
TmV3T2JqZWN0KTsKKyAgICAgICAgICAgIHJldHVybiB0b1Y4KHN0YXRpY19jYXN0PFNWR0VsZW1l
bnQqPihpbXBsKSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKICNlbmRpZgotICAgICAgICBy
ZXR1cm4gVjhFbGVtZW50Ojp3cmFwKHN0YXRpY19jYXN0PEVsZW1lbnQqPihpbXBsKSwgY3JlYXRp
b25Db250ZXh0LCBpc29sYXRlLCBmb3JjZU5ld09iamVjdCk7CisgICAgICAgIHJldHVybiBWOEVs
ZW1lbnQ6OndyYXAoc3RhdGljX2Nhc3Q8RWxlbWVudCo+KGltcGwpLCBjcmVhdGlvbkNvbnRleHQs
IGlzb2xhdGUpOwogICAgIGNhc2UgTm9kZTo6QVRUUklCVVRFX05PREU6Ci0gICAgICAgIHJldHVy
biB0b1Y4KHN0YXRpY19jYXN0PEF0dHIqPihpbXBsKSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRl
LCBmb3JjZU5ld09iamVjdCk7CisgICAgICAgIHJldHVybiB0b1Y4KHN0YXRpY19jYXN0PEF0dHIq
PihpbXBsKSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKICAgICBjYXNlIE5vZGU6OlRFWFRf
Tk9ERToKLSAgICAgICAgcmV0dXJuIHRvVjgodG9UZXh0KGltcGwpLCBjcmVhdGlvbkNvbnRleHQs
IGlzb2xhdGUsIGZvcmNlTmV3T2JqZWN0KTsKKyAgICAgICAgcmV0dXJuIHRvVjgodG9UZXh0KGlt
cGwpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogICAgIGNhc2UgTm9kZTo6Q0RBVEFfU0VD
VElPTl9OT0RFOgotICAgICAgICByZXR1cm4gdG9WOChzdGF0aWNfY2FzdDxDREFUQVNlY3Rpb24q
PihpbXBsKSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlLCBmb3JjZU5ld09iamVjdCk7CisgICAg
ICAgIHJldHVybiB0b1Y4KHN0YXRpY19jYXN0PENEQVRBU2VjdGlvbio+KGltcGwpLCBjcmVhdGlv
bkNvbnRleHQsIGlzb2xhdGUpOwogICAgIGNhc2UgTm9kZTo6RU5USVRZX1JFRkVSRU5DRV9OT0RF
OgotICAgICAgICByZXR1cm4gdG9WOChzdGF0aWNfY2FzdDxFbnRpdHlSZWZlcmVuY2UqPihpbXBs
KSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlLCBmb3JjZU5ld09iamVjdCk7CisgICAgICAgIHJl
dHVybiB0b1Y4KHN0YXRpY19jYXN0PEVudGl0eVJlZmVyZW5jZSo+KGltcGwpLCBjcmVhdGlvbkNv
bnRleHQsIGlzb2xhdGUpOwogICAgIGNhc2UgTm9kZTo6RU5USVRZX05PREU6Ci0gICAgICAgIHJl
dHVybiB0b1Y4KHN0YXRpY19jYXN0PEVudGl0eSo+KGltcGwpLCBjcmVhdGlvbkNvbnRleHQsIGlz
b2xhdGUsIGZvcmNlTmV3T2JqZWN0KTsKKyAgICAgICAgcmV0dXJuIHRvVjgoc3RhdGljX2Nhc3Q8
RW50aXR5Kj4oaW1wbCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiAgICAgY2FzZSBOb2Rl
OjpQUk9DRVNTSU5HX0lOU1RSVUNUSU9OX05PREU6Ci0gICAgICAgIHJldHVybiB0b1Y4KHN0YXRp
Y19jYXN0PFByb2Nlc3NpbmdJbnN0cnVjdGlvbio+KGltcGwpLCBjcmVhdGlvbkNvbnRleHQsIGlz
b2xhdGUsIGZvcmNlTmV3T2JqZWN0KTsKKyAgICAgICAgcmV0dXJuIHRvVjgoc3RhdGljX2Nhc3Q8
UHJvY2Vzc2luZ0luc3RydWN0aW9uKj4oaW1wbCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7
CiAgICAgY2FzZSBOb2RlOjpDT01NRU5UX05PREU6Ci0gICAgICAgIHJldHVybiB0b1Y4KHN0YXRp
Y19jYXN0PENvbW1lbnQqPihpbXBsKSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlLCBmb3JjZU5l
d09iamVjdCk7CisgICAgICAgIHJldHVybiB0b1Y4KHN0YXRpY19jYXN0PENvbW1lbnQqPihpbXBs
KSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKICAgICBjYXNlIE5vZGU6OkRPQ1VNRU5UX05P
REU6Ci0gICAgICAgIHJldHVybiB0b1Y4KHN0YXRpY19jYXN0PERvY3VtZW50Kj4oaW1wbCksIGNy
ZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSwgZm9yY2VOZXdPYmplY3QpOworICAgICAgICByZXR1cm4g
dG9WOChzdGF0aWNfY2FzdDxEb2N1bWVudCo+KGltcGwpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xh
dGUpOwogICAgIGNhc2UgTm9kZTo6RE9DVU1FTlRfVFlQRV9OT0RFOgotICAgICAgICByZXR1cm4g
dG9WOChzdGF0aWNfY2FzdDxEb2N1bWVudFR5cGUqPihpbXBsKSwgY3JlYXRpb25Db250ZXh0LCBp
c29sYXRlLCBmb3JjZU5ld09iamVjdCk7CisgICAgICAgIHJldHVybiB0b1Y4KHN0YXRpY19jYXN0
PERvY3VtZW50VHlwZSo+KGltcGwpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogICAgIGNh
c2UgTm9kZTo6RE9DVU1FTlRfRlJBR01FTlRfTk9ERToKLSAgICAgICAgcmV0dXJuIHRvVjgoc3Rh
dGljX2Nhc3Q8RG9jdW1lbnRGcmFnbWVudCo+KGltcGwpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xh
dGUsIGZvcmNlTmV3T2JqZWN0KTsKKyAgICAgICAgcmV0dXJuIHRvVjgoc3RhdGljX2Nhc3Q8RG9j
dW1lbnRGcmFnbWVudCo+KGltcGwpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogICAgIGNh
c2UgTm9kZTo6Tk9UQVRJT05fTk9ERToKLSAgICAgICAgcmV0dXJuIHRvVjgoc3RhdGljX2Nhc3Q8
Tm90YXRpb24qPihpbXBsKSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlLCBmb3JjZU5ld09iamVj
dCk7CisgICAgICAgIHJldHVybiB0b1Y4KHN0YXRpY19jYXN0PE5vdGF0aW9uKj4oaW1wbCksIGNy
ZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7IC8v
IFhQQVRIX05BTUVTUEFDRV9OT0RFCiAgICAgfQotICAgIHJldHVybiBWOE5vZGU6OndyYXAoaW1w
bCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlLCBmb3JjZU5ld09iamVjdCk7CisgICAgcmV0dXJu
IFY4Tm9kZTo6d3JhcChpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogfQogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4U1ZHRG9jdW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4U1ZHRG9jdW1lbnRDdXN0b20uY3BwCmluZGV4IGRhMTY2YTdhZmZmM2I3YWM1
OTVhMDI4MmJlZWY5NzU4MGU1Y2E4M2YuLjA5OTFkZmMxNzgwOTZjNzZjN2NiODI3YWEwZmJkZTMy
NWZjMDQyNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OFNWR0RvY3VtZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhTVkdEb2N1bWVudEN1c3RvbS5jcHAKQEAgLTM4LDExICszOCwxMSBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KFNWR0RvY3VtZW50
KiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xh
dGUqIGlzb2xhdGUsIGJvb2wgZm9yY2VOZXdPYmplY3QpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
dG9WOChTVkdEb2N1bWVudCogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNv
bnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQogewogICAgIGlmICghaW1wbCkKICAgICAgICAg
cmV0dXJuIHY4TnVsbFdpdGhDaGVjayhpc29sYXRlKTsKLSAgICB2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IHdyYXBwZXIgPSBWOFNWR0RvY3VtZW50Ojp3cmFwKGltcGwsIGNyZWF0aW9uQ29udGV4dCwg
aXNvbGF0ZSwgZm9yY2VOZXdPYmplY3QpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3Jh
cHBlciA9IFY4U1ZHRG9jdW1lbnQ6OndyYXAoaW1wbCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRl
KTsKICAgICBpZiAod3JhcHBlci5Jc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB3cmFwcGVyOwog
ICAgIGlmICghVjhET01XaW5kb3dTaGVsbDo6Z2V0RW50ZXJlZCgpKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTVkdFbGVtZW50Q3VzdG9tLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNWR0VsZW1lbnRDdXN0b20uY3Bw
CmluZGV4IDg4NjIxMTg4MGE0MWVmMDI2YzExZTI0Nzk1OTk3M2Q1YjU2ZGM1NjkuLjcyYWMxZDYw
NDViMWY3ODc5NGI5ZDIyYWM3YmYwNzU4ZGFlY2FjNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNWR0VsZW1lbnRDdXN0b20uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNWR0VsZW1lbnRDdXN0b20uY3BwCkBAIC0z
NywxMSArMzcsMTEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gdG9WOChTVkdFbGVtZW50KiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0
aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIGJvb2wgZm9yY2VOZXdPYmplY3QpCit2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChTVkdFbGVtZW50KiBpbXBsLCB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7CiAgICAg
aWYgKCFpbXBsKQogICAgICAgICByZXR1cm4gdjhOdWxsV2l0aENoZWNrKGlzb2xhdGUpOwotICAg
IHJldHVybiBjcmVhdGVWOFNWR1dyYXBwZXIoaW1wbCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRl
LCBmb3JjZU5ld09iamVjdCk7CisgICAgcmV0dXJuIGNyZWF0ZVY4U1ZHV3JhcHBlcihpbXBsLCBj
cmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vbWFrZV9uYW1lcy5wbCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9tYWtlX25hbWVzLnBsCmluZGV4IDg4N2MxYTlkYmZmMGFiY2ZjMTE0NWI4MTdiZmYx
N2FhZWY1NTIwZjAuLjM2MmIwODUwY2YyYzAxZGJlMzhmNjIyMjlmMTEzOTZlN2QzYzRiZGYgMTAw
NzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9tYWtlX25hbWVzLnBsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9tYWtlX25hbWVzLnBsCkBAIC0xMTc2LDcgKzExNzYsNyBAQCBFTkQKIDsKICAg
ICB9IGVsc2lmICgkd3JhcHBlckZhY3RvcnlUeXBlIGVxICJWOCIpIHsKICAgICAgICAgcHJpbnQg
RiA8PEVORAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNyZWF0ZVY4JHBhcmFtZXRlcnN7bmFtZXNw
YWNlfVdyYXBwZXIoJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnQqIGVsZW1lbnQsIHY4OjpI
YW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwg
Ym9vbCBmb3JjZU5ld09iamVjdCkKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBjcmVhdGVWOCRwYXJh
bWV0ZXJze25hbWVzcGFjZX1XcmFwcGVyKCRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50KiBl
bGVtZW50LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xh
dGUqIGlzb2xhdGUpCiB7CiAgICAgdHlwZWRlZiBIYXNoTWFwPFdURjo6QXRvbWljU3RyaW5nSW1w
bCosIENyZWF0ZSRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50V3JhcHBlckZ1bmN0aW9uPiBG
dW5jdGlvbk1hcDsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEZ1bmN0aW9uTWFwLCBtYXAsICgp
KTsKQEAgLTEyMTgsNyArMTIxOCw3IEBAIEVORAogICAgIH0gZWxzaWYgKCR3cmFwcGVyRmFjdG9y
eVR5cGUgZXEgIlY4IikgewogICAgICAgICBwcmludCBGIDw8RU5ECiAgICAgICAgIHJldHVybiBj
cmVhdGVXcmFwcGVyRnVuY3Rpb24oZWxlbWVudCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsK
LSAgICByZXR1cm4gVjgkcGFyYW1ldGVyc3tmYWxsYmFja0ludGVyZmFjZU5hbWV9Ojp3cmFwKHRv
JHBhcmFtZXRlcnN7ZmFsbGJhY2tJbnRlcmZhY2VOYW1lfShlbGVtZW50KSwgY3JlYXRpb25Db250
ZXh0LCBpc29sYXRlLCBmb3JjZU5ld09iamVjdCk7CisgICAgcmV0dXJuIFY4JHBhcmFtZXRlcnN7
ZmFsbGJhY2tJbnRlcmZhY2VOYW1lfTo6d3JhcCh0byRwYXJhbWV0ZXJze2ZhbGxiYWNrSW50ZXJm
YWNlTmFtZX0oZWxlbWVudCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiBFTkQKIDsKICAg
ICB9CkBAIC0xMjc4LDcgKzEyNzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFz
cyAkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudDsKIAotICAgIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBjcmVhdGVWOCRwYXJhbWV0ZXJze25hbWVzcGFjZX1XcmFwcGVyKCRwYXJhbWV0ZXJze25h
bWVzcGFjZX1FbGVtZW50Kiwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQs
IHY4OjpJc29sYXRlKiwgYm9vbCk7CisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNyZWF0ZVY4
JHBhcmFtZXRlcnN7bmFtZXNwYWNlfVdyYXBwZXIoJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1l
bnQqLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUq
KTsKIH0KIEVORAogOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166340</attachid>
            <date>2012-09-28 18:07:40 -0700</date>
            <delta_ts>2012-09-28 19:50:15 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-97943-20120928180657.patch</filename>
            <type>text/plain</type>
            <size>18823</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5OTQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWIyOGE1YTkyNDc1OTU5
YWVkZWU4NThlZDA2NzE3NzcxM2EyNzlmNy4uMDUzYzA0ZWJhMTkxNjRkNjJiOWE0Nzk0OTRlM2Qx
YTBkMGMyODU2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDEyLTA5LTI4ICBBZGFt
IEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1Y4XSBUaGUgY29uY2VwdCBv
ZiBmb3JjZU5ld09iamVjdCBpcyB1bm5lZWRlZCAoZG9tLXRyYXZlcnNlIGdldHMgMyUgZmFzdGVy
KQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTc5NDMK
KworICAgICAgICBSZXZpZXdlZCBieSBLZW50YXJvIEhhcmEuCisKKyAgICAgICAgV2UgZG9uJ3Qg
bmVlZCB0aGUgY29uY2VwdCBvZiBmb3JjZU5ld09iamVjdC4gSXQgZG9lc24ndCBkbyBhbnl0aGlu
ZworICAgICAgICB1c2VmdWwgYW5kIGl0IG1ha2VzIHRoZSBiaW5kaW5ncyBzbG93ZXIuCisKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbToKKyAgICAgICAgKEdl
bmVyYXRlSGVhZGVyKToKKyAgICAgICAgKEdlbmVyYXRlVG9WOENvbnZlcnRlcnMpOgorICAgICAg
ICAoTmF0aXZlVG9KU1ZhbHVlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhEb2N1
bWVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b1Y4KToKKyAgICAgICAgKiBiaW5k
aW5ncy92OC9jdXN0b20vVjhIVE1MRG9jdW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6dG9WOCk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEVsZW1lbnRDdXN0
b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9WOCk6CisgICAgICAgICogYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4Tm9kZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b1Y4U2xvdyk6Cisg
ICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1ZHRG9jdW1lbnRDdXN0b20uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6dG9WOCk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1ZH
RWxlbWVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b1Y4KToKKyAgICAgICAgKiBk
b20vbWFrZV9uYW1lcy5wbDoKKyAgICAgICAgKHByaW50V3JhcHBlckZhY3RvcnlDcHBGaWxlKToK
KyAgICAgICAgKHByaW50V3JhcHBlckZhY3RvcnlIZWFkZXJGaWxlKToKKwogMjAxMi0wOS0yOCAg
QmVuIFdhZ25lciAgPGJ1bmdlbWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBDaHJvbWl1bSBz
aG91bGQgcmVzcGVjdCAndGV4dC1yZW5kZXJpbmc6Z2VvbWV0cmljUHJlY2lzaW9uJyBieSBkaXNh
YmxpbmcgaGludGluZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvclY4LnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9yVjgucG0KaW5kZXggMmQzNWQzZDZmMjI5ZWM1ODhmY2FiYmVjZWFmMzY3N2Ni
MjljN2Y4ZS4uNTE0NWQxMTY4NmE0ZTRjNzkwZTVmZDUyNjI2M2U1NGUzZDg4MzNmNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0K
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0K
QEAgLTM3MiwxMCArMzcyLDYgQEAgRU5ECiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJm
YWxzZTtcbiIpOwogICAgIH0KIAotICAgIG15ICRmb3JjZU5ld09iamVjdFBhcmFtZXRlciA9IElz
RE9NTm9kZVR5cGUoJGludGVyZmFjZU5hbWUpID8gIiwgYm9vbCBmb3JjZU5ld09iamVjdCA9IGZh
bHNlIiA6ICIiOwotICAgIG15ICRmb3JjZU5ld09iamVjdElucHV0ID0gSXNET01Ob2RlVHlwZSgk
aW50ZXJmYWNlTmFtZSkgPyAiLCBib29sIGZvcmNlTmV3T2JqZWN0IiA6ICIiOwotICAgIG15ICRm
b3JjZU5ld09iamVjdENhbGwgPSBJc0RPTU5vZGVUeXBlKCRpbnRlcmZhY2VOYW1lKSA/ICIsIGZv
cmNlTmV3T2JqZWN0IiA6ICIiOwotCiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgPDxFTkQpOwog
ICAgIHN0YXRpYyBib29sIEhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPik7CiAgICAg
c3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBHZXRSYXdUZW1wbGF0
ZSgpOwpAQCAtMzg0LDcgKzM4MCw3IEBAIEVORAogICAgIHsKICAgICAgICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8JHtuYXRpdmVUeXBlfSo+KG9iamVjdC0+R2V0UG9pbnRlckZyb21JbnRlcm5h
bEZpZWxkKHY4RE9NV3JhcHBlck9iamVjdEluZGV4KSk7CiAgICAgfQotICAgIGlubGluZSBzdGF0
aWMgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwKCR7bmF0aXZlVHlwZX0qLCB2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCA9IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKSwg
djg6Oklzb2xhdGUqID0gMCR7Zm9yY2VOZXdPYmplY3RQYXJhbWV0ZXJ9KTsKKyAgICBpbmxpbmUg
c3RhdGljIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcCgke25hdGl2ZVR5cGV9Kiwgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQgPSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
KCksIHY4OjpJc29sYXRlKiA9IDApOwogICAgIHN0YXRpYyB2b2lkIGRlcmVmT2JqZWN0KHZvaWQq
KTsKICAgICBzdGF0aWMgdm9pZCB2aXNpdERPTVdyYXBwZXIoRE9NRGF0YVN0b3JlKiwgdm9pZCos
IHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+KTsKICAgICBzdGF0aWMgV3JhcHBlclR5cGVJbmZv
IGluZm87CkBAIC00ODMsMTAgKzQ3OSw5IEBAIHByaXZhdGU6CiBFTkQKIAogICAgIHB1c2goQGhl
YWRlckNvbnRlbnQsIDw8RU5EKTsKLXY4OjpIYW5kbGU8djg6Ok9iamVjdD4gJHtjbGFzc05hbWV9
Ojp3cmFwKCR7bmF0aXZlVHlwZX0qIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRp
b25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSR7Zm9yY2VOZXdPYmplY3RJbnB1dH0pCit2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+ICR7Y2xhc3NOYW1lfTo6d3JhcCgke25hdGl2ZVR5cGV9KiBp
bXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUq
IGlzb2xhdGUpCiB7CiBFTkQKLSAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIGlmICghZm9y
Y2VOZXdPYmplY3QpIHtcbiIpIGlmIElzRE9NTm9kZVR5cGUoJGludGVyZmFjZU5hbWUpOwogICAg
IG15ICRkb21NYXBGdW5jdGlvbiA9IEdldERvbU1hcEZ1bmN0aW9uKCRkYXRhTm9kZSwgJGludGVy
ZmFjZU5hbWUsICJpc29sYXRlIik7CiAgICAgbXkgJGdldENhY2hlZFdyYXBwZXIgPSBJc05vZGVT
dWJUeXBlKCRkYXRhTm9kZSkgPyAiVjhET01XcmFwcGVyOjpnZXRDYWNoZWRXcmFwcGVyKGltcGwp
IiA6ICIke2RvbU1hcEZ1bmN0aW9ufS5nZXQoaW1wbCkiOwogICAgIHB1c2goQGhlYWRlckNvbnRl
bnQsIDw8RU5EKTsKQEAgLTQ5NCw3ICs0ODksNiBAQCBFTkQKICAgICAgICAgaWYgKCF3cmFwcGVy
LklzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybiB3cmFwcGVyOwogRU5ECi0gICAgcHVzaChA
aGVhZGVyQ29udGVudCwgIiAgICB9XG4iKSBpZiBJc0RPTU5vZGVUeXBlKCRpbnRlcmZhY2VOYW1l
KTsKICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCA8PEVORCk7CiAgICAgcmV0dXJuICR7Y2xhc3NO
YW1lfTo6d3JhcFNsb3coaW1wbCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKIH0KQEAgLTUw
NSw0MSArNDk5LDM5IEBAIEVORAogICAgIH0gZWxzaWYgKCEoJGRhdGFOb2RlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPnsiQ3VzdG9tVG9KU09iamVjdCJ9IG9yICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57IlY4Q3VzdG9tVG9KU09iamVjdCJ9KSkgewogICAgICAgICBwdXNoKEBoZWFkZXJD
b250ZW50LCA8PEVORCk7CiAKLWlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOCgke25h
dGl2ZVR5cGV9KiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCA9
IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUgPSAwJHtmb3Jj
ZU5ld09iamVjdFBhcmFtZXRlcn0pCitpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgo
JHtuYXRpdmVUeXBlfSogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRl
eHQgPSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KCksIHY4OjpJc29sYXRlKiBpc29sYXRlID0gMCkK
IHsKICAgICBpZiAoIWltcGwpCiAgICAgICAgIHJldHVybiB2OE51bGxXaXRoQ2hlY2soaXNvbGF0
ZSk7Ci0gICAgcmV0dXJuICR7Y2xhc3NOYW1lfTo6d3JhcChpbXBsLCBjcmVhdGlvbkNvbnRleHQs
IGlzb2xhdGUke2ZvcmNlTmV3T2JqZWN0Q2FsbH0pOworICAgIHJldHVybiAke2NsYXNzTmFtZX06
OndyYXAoaW1wbCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKIH0KIEVORAogICAgIH0gZWxz
aWYgKCRpbnRlcmZhY2VOYW1lIG5lICdOb2RlJykgewogICAgICAgICBwdXNoKEBoZWFkZXJDb250
ZW50LCA8PEVORCk7CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KCR7bmF0aXZlVHlwZX0q
LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCA9IHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4oKSwgdjg6Oklzb2xhdGUqID0gMCR7Zm9yY2VOZXdPYmplY3RQYXJhbWV0ZXJ9KTsK
K3Y4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KCR7bmF0aXZlVHlwZX0qLCB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCA9IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKSwgdjg6
Oklzb2xhdGUqID0gMCk7CiBFTkQKICAgICB9IGVsc2UgewogICAgICAgICBwdXNoKEBoZWFkZXJD
b250ZW50LCA8PEVORCk7CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4U2xvdyhOb2RlKiwg
djg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiwgYm9v
bCk7Cit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOFNsb3coTm9kZSosIHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSopOwogCi1pbmxpbmUgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IHRvVjgoTm9kZSogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBj
cmVhdGlvbkNvbnRleHQgPSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KCksIHY4OjpJc29sYXRlKiBp
c29sYXRlID0gMCwgYm9vbCBmb3JjZU5ld09iamVjdCA9IGZhbHNlKQoraW5saW5lIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiB0b1Y4KE5vZGUqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3Jl
YXRpb25Db250ZXh0ID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0PigpLCB2ODo6SXNvbGF0ZSogaXNv
bGF0ZSA9IDApCiB7CiAgICAgaWYgKFVOTElLRUxZKCFpbXBsKSkKICAgICAgICAgcmV0dXJuIHY4
TnVsbFdpdGhDaGVjayhpc29sYXRlKTsKLSAgICBpZiAoVU5MSUtFTFkoZm9yY2VOZXdPYmplY3Qp
KQotICAgICAgICByZXR1cm4gdG9WOFNsb3coaW1wbCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRl
LCBmb3JjZU5ld09iamVjdCk7CiAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdyYXBwZXIgPSBW
OERPTVdyYXBwZXI6OmdldENhY2hlZFdyYXBwZXIoaW1wbCk7CiAgICAgaWYgKCF3cmFwcGVyLklz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHdyYXBwZXI7Ci0gICAgcmV0dXJuIHRvVjhTbG93KGlt
cGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSwgZmFsc2UpOworICAgIHJldHVybiB0b1Y4U2xv
dyhpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogfQogRU5ECiAgICAgfQogCiAgICAg
cHVzaChAaGVhZGVyQ29udGVudCwgPDxFTkQpOwotaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiB0b1Y4KFBhc3NSZWZQdHI8ICR7bmF0aXZlVHlwZX0gPiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+IGNyZWF0aW9uQ29udGV4dCA9IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKSwgdjg6Oklz
b2xhdGUqIGlzb2xhdGUgPSAwJHtmb3JjZU5ld09iamVjdFBhcmFtZXRlcn0pCitpbmxpbmUgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoUGFzc1JlZlB0cjwgJHtuYXRpdmVUeXBlfSA+IGltcGws
IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0ID0gdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PigpLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSA9IDApCiB7Ci0gICAgcmV0dXJuIHRvVjgo
aW1wbC5nZXQoKSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlJHtmb3JjZU5ld09iamVjdENhbGx9
KTsKKyAgICByZXR1cm4gdG9WOChpbXBsLmdldCgpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUp
OwogfQogRU5ECiAKQEAgLTMzNTcsOCArMzM0OSw2IEBAIHN1YiBHZW5lcmF0ZVRvVjhDb252ZXJ0
ZXJzCiAgICAgbXkgJG5hdGl2ZVR5cGUgPSBzaGlmdDsKIAogICAgIG15ICRkb21NYXBOYW1lID0g
R2V0RG9tTWFwTmFtZSgkZGF0YU5vZGUsICRpbnRlcmZhY2VOYW1lKTsKLSAgICBteSAkZm9yY2VO
ZXdPYmplY3RJbnB1dCA9IElzRE9NTm9kZVR5cGUoJGludGVyZmFjZU5hbWUpID8gIiwgYm9vbCBm
b3JjZU5ld09iamVjdCIgOiAiIjsKLSAgICBteSAkZm9yY2VOZXdPYmplY3RDYWxsID0gSXNET01O
b2RlVHlwZSgkaW50ZXJmYWNlTmFtZSkgPyAiLCBmb3JjZU5ld09iamVjdCIgOiAiIjsKICAgICBt
eSAkd3JhcFNsb3dBcmd1bWVudFR5cGUgPSBHZXRQYXNzUmVmUHRyVHlwZSgkbmF0aXZlVHlwZSk7
CiAgICAgbXkgJGJhc2VUeXBlID0gQmFzZUludGVyZmFjZU5hbWUoJGRhdGFOb2RlKTsKIApAQCAt
NDA4NCw5ICs0MDc0LDggQEAgc3ViIE5hdGl2ZVRvSlNWYWx1ZQogCiAgICAgQWRkSW5jbHVkZXNG
b3JUeXBlKCR0eXBlKTsKIAotICAgICMgc3BlY2lhbCBjYXNlIGZvciBub24tRE9NIG5vZGUgaW50
ZXJmYWNlcwogICAgIGlmIChJc0RPTU5vZGVUeXBlKCR0eXBlKSkgewotICAgICAgICByZXR1cm4g
InRvVjgoJHt2YWx1ZX0kZ2V0Q3JlYXRpb25Db250ZXh0QXJnJGdldElzb2xhdGVBcmciIC4gKCRz
aWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJSZXR1cm5OZXdPYmplY3QifSA/ICIsIHRy
dWUpIiA6ICIpIik7CisgICAgICAgIHJldHVybiAidG9WOCgkdmFsdWUkZ2V0Q3JlYXRpb25Db250
ZXh0QXJnJGdldElzb2xhdGVBcmcpIjsKICAgICB9CiAKICAgICBpZiAoJHR5cGUgZXEgIkV2ZW50
VGFyZ2V0IikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4RG9jdW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4RG9jdW1lbnRDdXN0b20uY3BwCmluZGV4IGQ2ODU3YmI5NjY2MDg4OGNlNmVlOTBlYmM3OThi
Y2E4ZGZkMjNkMzYuLjgxZDI0NDJhYmRhNTA1NWFhYzU0ZDBhYzc1NjNiY2Q3ZTY3NmEwNGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERvY3VtZW50Q3Vz
dG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEb2N1bWVu
dEN1c3RvbS5jcHAKQEAgLTk1LDE3ICs5NSwxNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhE
b2N1bWVudDo6ZXZhbHVhdGVDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogICAg
IHJldHVybiB0b1Y4KHJlc3VsdC5yZWxlYXNlKCksIGFyZ3MuSG9sZGVyKCksIGFyZ3MuR2V0SXNv
bGF0ZSgpKTsKIH0KIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoRG9jdW1lbnQqIGltcGws
IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNv
bGF0ZSwgYm9vbCBmb3JjZU5ld09iamVjdCkKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KERv
Y3VtZW50KiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6
Oklzb2xhdGUqIGlzb2xhdGUpCiB7CiAgICAgaWYgKCFpbXBsKQogICAgICAgICByZXR1cm4gdjhO
dWxsV2l0aENoZWNrKGlzb2xhdGUpOwogICAgIGlmIChpbXBsLT5pc0hUTUxEb2N1bWVudCgpKQot
ICAgICAgICByZXR1cm4gdG9WOChzdGF0aWNfY2FzdDxIVE1MRG9jdW1lbnQqPihpbXBsKSwgY3Jl
YXRpb25Db250ZXh0LCBpc29sYXRlLCBmb3JjZU5ld09iamVjdCk7CisgICAgICAgIHJldHVybiB0
b1Y4KHN0YXRpY19jYXN0PEhUTUxEb2N1bWVudCo+KGltcGwpLCBjcmVhdGlvbkNvbnRleHQsIGlz
b2xhdGUpOwogI2lmIEVOQUJMRShTVkcpCiAgICAgaWYgKGltcGwtPmlzU1ZHRG9jdW1lbnQoKSkK
LSAgICAgICAgcmV0dXJuIHRvVjgoc3RhdGljX2Nhc3Q8U1ZHRG9jdW1lbnQqPihpbXBsKSwgY3Jl
YXRpb25Db250ZXh0LCBpc29sYXRlLCBmb3JjZU5ld09iamVjdCk7CisgICAgICAgIHJldHVybiB0
b1Y4KHN0YXRpY19jYXN0PFNWR0RvY3VtZW50Kj4oaW1wbCksIGNyZWF0aW9uQ29udGV4dCwgaXNv
bGF0ZSk7CiAjZW5kaWYKLSAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBWOERv
Y3VtZW50Ojp3cmFwKGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSwgZm9yY2VOZXdPYmpl
Y3QpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IFY4RG9jdW1lbnQ6Ondy
YXAoaW1wbCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKICAgICBpZiAod3JhcHBlci5Jc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybiB3cmFwcGVyOwogICAgIGlmICghVjhET01XaW5kb3dTaGVs
bDo6Z2V0RW50ZXJlZCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhIVE1MRG9jdW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4SFRNTERvY3VtZW50Q3VzdG9tLmNwcAppbmRleCBlNTBhMjYwM2U0NDdh
MWY2MzRjOWI2ZjNhOWJjYzg4YTgyNDgzYWQ2Li4wZDQ3MTlmYTVhNjliYWNkODE5NGFiNGViNzgy
N2NjN2VkNGJlMzM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhIVE1MRG9jdW1lbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOEhUTUxEb2N1bWVudEN1c3RvbS5jcHAKQEAgLTE3NiwxMSArMTc2LDExIEBA
IHZvaWQgVjhIVE1MRG9jdW1lbnQ6OmFsbEFjY2Vzc29yU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3Ry
aW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6CiAgICAgaW5mby5UaGlzKCktPkZvcmNlU2V0KG5hbWUs
IHZhbHVlKTsKIH0KIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoSFRNTERvY3VtZW50KiBp
bXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUq
IGlzb2xhdGUsIGJvb2wgZm9yY2VOZXdPYmplY3QpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9W
OChIVE1MRG9jdW1lbnQqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250
ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKIHsKICAgICBpZiAoIWltcGwpCiAgICAgICAgIHJl
dHVybiB2OE51bGxXaXRoQ2hlY2soaXNvbGF0ZSk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0
PiB3cmFwcGVyID0gVjhIVE1MRG9jdW1lbnQ6OndyYXAoaW1wbCwgY3JlYXRpb25Db250ZXh0LCBp
c29sYXRlLCBmb3JjZU5ld09iamVjdCk7CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFw
cGVyID0gVjhIVE1MRG9jdW1lbnQ6OndyYXAoaW1wbCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRl
KTsKICAgICBpZiAod3JhcHBlci5Jc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB3cmFwcGVyOwog
ICAgIGlmICghVjhET01XaW5kb3dTaGVsbDo6Z2V0RW50ZXJlZCgpKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRWxlbWVudEN1c3RvbS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRWxlbWVudEN1c3RvbS5j
cHAKaW5kZXggMjUxZjc2MjJjOGNiZDY4OTkwZjg5ZDJmYzY5MjBhYWUwMTBkYWM3OC4uNjNjMGY2
NThmMGI0NGE5ZmQ4YjRmNGQxMWMzN2Y1NjQ0NjFhNThiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEVsZW1lbnRDdXN0b20uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxFbGVtZW50Q3VzdG9tLmNwcApA
QCAtNDAsMTEgKzQwLDExIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IHRvVjgoSFRNTEVsZW1lbnQqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
Y3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgYm9vbCBmb3JjZU5ld09iamVj
dCkKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KEhUTUxFbGVtZW50KiBpbXBsLCB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7
CiAgICAgaWYgKCFpbXBsKQogICAgICAgICByZXR1cm4gdjhOdWxsV2l0aENoZWNrKGlzb2xhdGUp
OwotICAgIHJldHVybiBjcmVhdGVWOEhUTUxXcmFwcGVyKGltcGwsIGNyZWF0aW9uQ29udGV4dCwg
aXNvbGF0ZSwgZm9yY2VOZXdPYmplY3QpOworICAgIHJldHVybiBjcmVhdGVWOEhUTUxXcmFwcGVy
KGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiB9CiAKICNpZiBFTkFCTEUoTUlDUk9E
QVRBKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Tm9k
ZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhOb2RlQ3Vz
dG9tLmNwcAppbmRleCA2ZWY0NmRhZjc4NjczYzdkYjgxNDNmNGQwNzI3Nzc3ZjRhOTg1M2UwLi44
YTk4YTc2ZTZmYmYzMTBlNGQ0NjA0ZTUwYmQ1MmEwMjk5YjQ4MTFkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhOb2RlQ3VzdG9tLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhOb2RlQ3VzdG9tLmNwcApAQCAtMTI1LDUw
ICsxMjUsNDkgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Tm9kZTo6YXBwZW5kQ2hpbGRDYWxs
YmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogICAgIHJldHVybiB2ODo6TnVsbChhcmdz
LkdldElzb2xhdGUoKSk7CiB9CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4U2xvdyhOb2Rl
KiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xh
dGUqIGlzb2xhdGUsIGJvb2wgZm9yY2VOZXdPYmplY3QpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
dG9WOFNsb3coTm9kZSogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRl
eHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQogewogICAgIGlmICghaW1wbCkKICAgICAgICAgcmV0
dXJuIHY4TnVsbFdpdGhDaGVjayhpc29sYXRlKTsKIAotICAgIGlmICghZm9yY2VOZXdPYmplY3Qp
IHsKLSAgICAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdyYXBwZXIgPSBWOERPTVdyYXBwZXI6
OmdldENhY2hlZFdyYXBwZXIoaW1wbCk7Ci0gICAgICAgIGlmICghd3JhcHBlci5Jc0VtcHR5KCkp
Ci0gICAgICAgICAgICByZXR1cm4gd3JhcHBlcjsKLSAgICB9CisgICAgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHdyYXBwZXIgPSBWOERPTVdyYXBwZXI6OmdldENhY2hlZFdyYXBwZXIoaW1wbCk7Cisg
ICAgaWYgKCF3cmFwcGVyLklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHdyYXBwZXI7CisKICAg
ICBzd2l0Y2ggKGltcGwtPm5vZGVUeXBlKCkpIHsKICAgICBjYXNlIE5vZGU6OkVMRU1FTlRfTk9E
RToKICAgICAgICAgaWYgKGltcGwtPmlzSFRNTEVsZW1lbnQoKSkKLSAgICAgICAgICAgIHJldHVy
biB0b1Y4KHRvSFRNTEVsZW1lbnQoaW1wbCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSwgZm9y
Y2VOZXdPYmplY3QpOworICAgICAgICAgICAgcmV0dXJuIHRvVjgodG9IVE1MRWxlbWVudChpbXBs
KSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKICNpZiBFTkFCTEUoU1ZHKQogICAgICAgICBp
ZiAoaW1wbC0+aXNTVkdFbGVtZW50KCkpCi0gICAgICAgICAgICByZXR1cm4gdG9WOChzdGF0aWNf
Y2FzdDxTVkdFbGVtZW50Kj4oaW1wbCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSwgZm9yY2VO
ZXdPYmplY3QpOworICAgICAgICAgICAgcmV0dXJuIHRvVjgoc3RhdGljX2Nhc3Q8U1ZHRWxlbWVu
dCo+KGltcGwpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogI2VuZGlmCi0gICAgICAgIHJl
dHVybiBWOEVsZW1lbnQ6OndyYXAoc3RhdGljX2Nhc3Q8RWxlbWVudCo+KGltcGwpLCBjcmVhdGlv
bkNvbnRleHQsIGlzb2xhdGUsIGZvcmNlTmV3T2JqZWN0KTsKKyAgICAgICAgcmV0dXJuIFY4RWxl
bWVudDo6d3JhcChzdGF0aWNfY2FzdDxFbGVtZW50Kj4oaW1wbCksIGNyZWF0aW9uQ29udGV4dCwg
aXNvbGF0ZSk7CiAgICAgY2FzZSBOb2RlOjpBVFRSSUJVVEVfTk9ERToKLSAgICAgICAgcmV0dXJu
IHRvVjgoc3RhdGljX2Nhc3Q8QXR0cio+KGltcGwpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUs
IGZvcmNlTmV3T2JqZWN0KTsKKyAgICAgICAgcmV0dXJuIHRvVjgoc3RhdGljX2Nhc3Q8QXR0cio+
KGltcGwpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogICAgIGNhc2UgTm9kZTo6VEVYVF9O
T0RFOgotICAgICAgICByZXR1cm4gdG9WOCh0b1RleHQoaW1wbCksIGNyZWF0aW9uQ29udGV4dCwg
aXNvbGF0ZSwgZm9yY2VOZXdPYmplY3QpOworICAgICAgICByZXR1cm4gdG9WOCh0b1RleHQoaW1w
bCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiAgICAgY2FzZSBOb2RlOjpDREFUQV9TRUNU
SU9OX05PREU6Ci0gICAgICAgIHJldHVybiB0b1Y4KHN0YXRpY19jYXN0PENEQVRBU2VjdGlvbio+
KGltcGwpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUsIGZvcmNlTmV3T2JqZWN0KTsKKyAgICAg
ICAgcmV0dXJuIHRvVjgoc3RhdGljX2Nhc3Q8Q0RBVEFTZWN0aW9uKj4oaW1wbCksIGNyZWF0aW9u
Q29udGV4dCwgaXNvbGF0ZSk7CiAgICAgY2FzZSBOb2RlOjpFTlRJVFlfUkVGRVJFTkNFX05PREU6
Ci0gICAgICAgIHJldHVybiB0b1Y4KHN0YXRpY19jYXN0PEVudGl0eVJlZmVyZW5jZSo+KGltcGwp
LCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUsIGZvcmNlTmV3T2JqZWN0KTsKKyAgICAgICAgcmV0
dXJuIHRvVjgoc3RhdGljX2Nhc3Q8RW50aXR5UmVmZXJlbmNlKj4oaW1wbCksIGNyZWF0aW9uQ29u
dGV4dCwgaXNvbGF0ZSk7CiAgICAgY2FzZSBOb2RlOjpFTlRJVFlfTk9ERToKLSAgICAgICAgcmV0
dXJuIHRvVjgoc3RhdGljX2Nhc3Q8RW50aXR5Kj4oaW1wbCksIGNyZWF0aW9uQ29udGV4dCwgaXNv
bGF0ZSwgZm9yY2VOZXdPYmplY3QpOworICAgICAgICByZXR1cm4gdG9WOChzdGF0aWNfY2FzdDxF
bnRpdHkqPihpbXBsKSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKICAgICBjYXNlIE5vZGU6
OlBST0NFU1NJTkdfSU5TVFJVQ1RJT05fTk9ERToKLSAgICAgICAgcmV0dXJuIHRvVjgoc3RhdGlj
X2Nhc3Q8UHJvY2Vzc2luZ0luc3RydWN0aW9uKj4oaW1wbCksIGNyZWF0aW9uQ29udGV4dCwgaXNv
bGF0ZSwgZm9yY2VOZXdPYmplY3QpOworICAgICAgICByZXR1cm4gdG9WOChzdGF0aWNfY2FzdDxQ
cm9jZXNzaW5nSW5zdHJ1Y3Rpb24qPihpbXBsKSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsK
ICAgICBjYXNlIE5vZGU6OkNPTU1FTlRfTk9ERToKLSAgICAgICAgcmV0dXJuIHRvVjgoc3RhdGlj
X2Nhc3Q8Q29tbWVudCo+KGltcGwpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUsIGZvcmNlTmV3
T2JqZWN0KTsKKyAgICAgICAgcmV0dXJuIHRvVjgoc3RhdGljX2Nhc3Q8Q29tbWVudCo+KGltcGwp
LCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogICAgIGNhc2UgTm9kZTo6RE9DVU1FTlRfTk9E
RToKLSAgICAgICAgcmV0dXJuIHRvVjgoc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihpbXBsKSwgY3Jl
YXRpb25Db250ZXh0LCBpc29sYXRlLCBmb3JjZU5ld09iamVjdCk7CisgICAgICAgIHJldHVybiB0
b1Y4KHN0YXRpY19jYXN0PERvY3VtZW50Kj4oaW1wbCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0
ZSk7CiAgICAgY2FzZSBOb2RlOjpET0NVTUVOVF9UWVBFX05PREU6Ci0gICAgICAgIHJldHVybiB0
b1Y4KHN0YXRpY19jYXN0PERvY3VtZW50VHlwZSo+KGltcGwpLCBjcmVhdGlvbkNvbnRleHQsIGlz
b2xhdGUsIGZvcmNlTmV3T2JqZWN0KTsKKyAgICAgICAgcmV0dXJuIHRvVjgoc3RhdGljX2Nhc3Q8
RG9jdW1lbnRUeXBlKj4oaW1wbCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiAgICAgY2Fz
ZSBOb2RlOjpET0NVTUVOVF9GUkFHTUVOVF9OT0RFOgotICAgICAgICByZXR1cm4gdG9WOChzdGF0
aWNfY2FzdDxEb2N1bWVudEZyYWdtZW50Kj4oaW1wbCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0
ZSwgZm9yY2VOZXdPYmplY3QpOworICAgICAgICByZXR1cm4gdG9WOChzdGF0aWNfY2FzdDxEb2N1
bWVudEZyYWdtZW50Kj4oaW1wbCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiAgICAgY2Fz
ZSBOb2RlOjpOT1RBVElPTl9OT0RFOgotICAgICAgICByZXR1cm4gdG9WOChzdGF0aWNfY2FzdDxO
b3RhdGlvbio+KGltcGwpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUsIGZvcmNlTmV3T2JqZWN0
KTsKKyAgICAgICAgcmV0dXJuIHRvVjgoc3RhdGljX2Nhc3Q8Tm90YXRpb24qPihpbXBsKSwgY3Jl
YXRpb25Db250ZXh0LCBpc29sYXRlKTsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsgLy8g
WFBBVEhfTkFNRVNQQUNFX05PREUKICAgICB9Ci0gICAgcmV0dXJuIFY4Tm9kZTo6d3JhcChpbXBs
LCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUsIGZvcmNlTmV3T2JqZWN0KTsKKyAgICByZXR1cm4g
VjhOb2RlOjp3cmFwKGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiB9CiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhTVkdEb2N1bWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhTVkdEb2N1bWVudEN1c3RvbS5jcHAKaW5kZXggZGExNjZhN2FmZmYzYjdhYzU5
NWEwMjgyYmVlZjk3NTgwZTVjYTgzZi4uMDk5MWRmYzE3ODA5NmM3NmM3Y2I4MjdhYTBmYmRlMzI1
ZmMwNDI1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
U1ZHRG9jdW1lbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOFNWR0RvY3VtZW50Q3VzdG9tLmNwcApAQCAtMzgsMTEgKzM4LDExIEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoU1ZHRG9jdW1lbnQq
IGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0
ZSogaXNvbGF0ZSwgYm9vbCBmb3JjZU5ld09iamVjdCkKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiB0
b1Y4KFNWR0RvY3VtZW50KiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29u
dGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7CiAgICAgaWYgKCFpbXBsKQogICAgICAgICBy
ZXR1cm4gdjhOdWxsV2l0aENoZWNrKGlzb2xhdGUpOwotICAgIHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4gd3JhcHBlciA9IFY4U1ZHRG9jdW1lbnQ6OndyYXAoaW1wbCwgY3JlYXRpb25Db250ZXh0LCBp
c29sYXRlLCBmb3JjZU5ld09iamVjdCk7CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFw
cGVyID0gVjhTVkdEb2N1bWVudDo6d3JhcChpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUp
OwogICAgIGlmICh3cmFwcGVyLklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CiAg
ICAgaWYgKCFWOERPTVdpbmRvd1NoZWxsOjpnZXRFbnRlcmVkKCkpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNWR0VsZW1lbnRDdXN0b20uY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1ZHRWxlbWVudEN1c3RvbS5jcHAK
aW5kZXggODg2MjExODgwYTQxZWYwMjZjMTFlMjQ3OTU5OTczZDViNTZkYzU2OS4uNzJhYzFkNjA0
NWIxZjc4Nzk0YjlkMjJhYzdiZjA3NThkYWVjYWM0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1ZHRWxlbWVudEN1c3RvbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1ZHRWxlbWVudEN1c3RvbS5jcHAKQEAgLTM3
LDExICszNywxMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXY4OjpIYW5kbGU8djg6OlZh
bHVlPiB0b1Y4KFNWR0VsZW1lbnQqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRp
b25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgYm9vbCBmb3JjZU5ld09iamVjdCkKK3Y4
OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KFNWR0VsZW1lbnQqIGltcGwsIHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKIHsKICAgICBp
ZiAoIWltcGwpCiAgICAgICAgIHJldHVybiB2OE51bGxXaXRoQ2hlY2soaXNvbGF0ZSk7Ci0gICAg
cmV0dXJuIGNyZWF0ZVY4U1ZHV3JhcHBlcihpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUs
IGZvcmNlTmV3T2JqZWN0KTsKKyAgICByZXR1cm4gY3JlYXRlVjhTVkdXcmFwcGVyKGltcGwsIGNy
ZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9tYWtlX25hbWVzLnBsIGIvU291cmNlL1dlYkNv
cmUvZG9tL21ha2VfbmFtZXMucGwKaW5kZXggODg3YzFhOWRiZmYwYWJjZmMxMTQ1YjgxN2JmZjE3
YWFlZjU1MjBmMC4uMzYyYjA4NTBjZjJjMDFkYmUzOGY2MjIyOWYxMTM5NmU3ZDNjNGJkZiAxMDA3
NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL21ha2VfbmFtZXMucGwKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL21ha2VfbmFtZXMucGwKQEAgLTExNzYsNyArMTE3Niw3IEBAIEVORAogOwogICAg
IH0gZWxzaWYgKCR3cmFwcGVyRmFjdG9yeVR5cGUgZXEgIlY4IikgewogICAgICAgICBwcmludCBG
IDw8RU5ECi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY3JlYXRlVjgkcGFyYW1ldGVyc3tuYW1lc3Bh
Y2V9V3JhcHBlcigkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudCogZWxlbWVudCwgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBi
b29sIGZvcmNlTmV3T2JqZWN0KQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNyZWF0ZVY4JHBhcmFt
ZXRlcnN7bmFtZXNwYWNlfVdyYXBwZXIoJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnQqIGVs
ZW1lbnQsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0
ZSogaXNvbGF0ZSkKIHsKICAgICB0eXBlZGVmIEhhc2hNYXA8V1RGOjpBdG9taWNTdHJpbmdJbXBs
KiwgQ3JlYXRlJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnRXcmFwcGVyRnVuY3Rpb24+IEZ1
bmN0aW9uTWFwOwogICAgIERFRklORV9TVEFUSUNfTE9DQUwoRnVuY3Rpb25NYXAsIG1hcCwgKCkp
OwpAQCAtMTIxOCw3ICsxMjE4LDcgQEAgRU5ECiAgICAgfSBlbHNpZiAoJHdyYXBwZXJGYWN0b3J5
VHlwZSBlcSAiVjgiKSB7CiAgICAgICAgIHByaW50IEYgPDxFTkQKICAgICAgICAgcmV0dXJuIGNy
ZWF0ZVdyYXBwZXJGdW5jdGlvbihlbGVtZW50LCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwot
ICAgIHJldHVybiBWOCRwYXJhbWV0ZXJze2ZhbGxiYWNrSW50ZXJmYWNlTmFtZX06OndyYXAodG8k
cGFyYW1ldGVyc3tmYWxsYmFja0ludGVyZmFjZU5hbWV9KGVsZW1lbnQpLCBjcmVhdGlvbkNvbnRl
eHQsIGlzb2xhdGUsIGZvcmNlTmV3T2JqZWN0KTsKKyAgICByZXR1cm4gVjgkcGFyYW1ldGVyc3tm
YWxsYmFja0ludGVyZmFjZU5hbWV9Ojp3cmFwKHRvJHBhcmFtZXRlcnN7ZmFsbGJhY2tJbnRlcmZh
Y2VOYW1lfShlbGVtZW50KSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKIEVORAogOwogICAg
IH0KQEAgLTEyNzgsNyArMTI3OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNz
ICRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50OwogCi0gICAgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IGNyZWF0ZVY4JHBhcmFtZXRlcnN7bmFtZXNwYWNlfVdyYXBwZXIoJHBhcmFtZXRlcnN7bmFt
ZXNwYWNlfUVsZW1lbnQqLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwg
djg6Oklzb2xhdGUqLCBib29sKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY3JlYXRlVjgk
cGFyYW1ldGVyc3tuYW1lc3BhY2V9V3JhcHBlcigkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVu
dCosIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSop
OwogfQogRU5ECiA7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>