<?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>70064</bug_id>
          
          <creation_ts>2011-10-13 15:20:00 -0700</creation_ts>
          <short_desc>Chromium: The NPObjectWrapper class used by V8 bindings to wrap the window object is not allocated correctly.</short_desc>
          <delta_ts>2011-10-13 17:36:59 -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>WebKit Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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="Ananta Iyengar">ananta</reporter>
          <assigned_to name="Ananta Iyengar">ananta</assigned_to>
          <cc>inferno</cc>
    
    <cc>japhet</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>483552</commentid>
    <comment_count>0</comment_count>
    <who name="Ananta Iyengar">ananta</who>
    <bug_when>2011-10-13 15:20:00 -0700</bug_when>
    <thetext>This is a Chromium only bug. The NPAllocate function in this class should allocate the NPProxyObject
structure. It ends up allocating the NPObectWrapper instance which is wrong.

The getObjectForCall function in this class should return NULL if it fails to find the underlying NPObject.
It currently returns the same object back which could cause a recursive crash.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>483612</commentid>
    <comment_count>1</comment_count>
      <attachid>110923</attachid>
    <who name="Ananta Iyengar">ananta</who>
    <bug_when>2011-10-13 16:20:01 -0700</bug_when>
    <thetext>Created attachment 110923
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>483635</commentid>
    <comment_count>2</comment_count>
      <attachid>110923</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-13 16:39:25 -0700</bug_when>
    <thetext>Comment on attachment 110923
proposed patch

Rejecting attachment 110923 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
]&quot; exit_code: 1

Parsed 3 diffs from patch file(s).
patching file Source/WebCore/ChangeLog
Hunk #1 succeeded at 1 with fuzz 3.
patching file Source/WebCore/bindings/v8/NPObjectWrapper.cpp
Hunk #1 FAILED at 84.
1 out of 1 hunk FAILED -- saving rejects to file Source/WebCore/bindings/v8/NPObjectWrapper.cpp.rej
patching file Source/WebCore/bindings/v8/NPObjectWrapper.h

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, u&apos;--reviewer&apos;, u&apos;Nate Chapin&apos;, u&apos;--force&apos;]&quot; exit_code: 1

Full output: http://queues.webkit.org/results/10052372</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>483652</commentid>
    <comment_count>3</comment_count>
      <attachid>110934</attachid>
    <who name="Ananta Iyengar">ananta</who>
    <bug_when>2011-10-13 16:54:06 -0700</bug_when>
    <thetext>Created attachment 110934
Patch with line endings fixed.

This patch was already reviewed by Nate Chapin (japhet@chromium.org). It failed to apply probably
due to inconsistent line endings. That has been fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>483676</commentid>
    <comment_count>4</comment_count>
      <attachid>110941</attachid>
    <who name="Abhishek Arya">inferno</who>
    <bug_when>2011-10-13 17:26:57 -0700</bug_when>
    <thetext>Created attachment 110941
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>483680</commentid>
    <comment_count>5</comment_count>
      <attachid>110941</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-10-13 17:29:31 -0700</bug_when>
    <thetext>Comment on attachment 110941
Patch

Ok.  Forwarding Nate&apos;s R+.  Thanks for cleaning up the style and line endings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>483681</commentid>
    <comment_count>6</comment_count>
      <attachid>110941</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-13 17:31:22 -0700</bug_when>
    <thetext>Comment on attachment 110941
Patch

Rejecting attachment 110941 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
Hunk #2 FAILED at 53.
Hunk #3 FAILED at 138.
Hunk #4 FAILED at 159.
4 out of 4 hunks FAILED -- saving rejects to file Source/WebCore/bindings/v8/NPObjectWrapper.cpp.rej
patching file Source/WebCore/bindings/v8/NPObjectWrapper.h
Hunk #1 FAILED at 1.
Hunk #2 FAILED at 71.
2 out of 2 hunks FAILED -- saving rejects to file Source/WebCore/bindings/v8/NPObjectWrapper.h.rej

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, u&apos;--reviewer&apos;, u&apos;Adam Barth&apos;, u&apos;--force&apos;]&quot; exit_code: 1

Full output: http://queues.webkit.org/results/10052386</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>483683</commentid>
    <comment_count>7</comment_count>
    <who name="Abhishek Arya">inferno</who>
    <bug_when>2011-10-13 17:36:59 -0700</bug_when>
    <thetext>Committed r97429: &lt;http://trac.webkit.org/changeset/97429&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>110923</attachid>
            <date>2011-10-13 16:20:01 -0700</date>
            <delta_ts>2011-10-13 16:54:06 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>2756</size>
            <attacher name="Ananta Iyengar">ananta</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk3NDE3KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTEtMTAtMTMgIEFuYW50YW5h
cmF5YW5hbiBHIEl5ZW5nYXIgIDxhbmFudGFAY2hyb21pdW0ub3JnPgorCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MDA2NAorICAgICAgICAKKyAgICAg
ICAgVGhlIE5QT2JqZWN0V3JhcHBlciBjbGFzcyB1c2VkIGJ5IFY4IGJpbmRpbmdzIGluIENocm9t
aXVtIHRvIHdyYXAgdGhlIHdpbmRvdworICAgICAgICBzY3JpcHQgb2JqZWN0IHdhcyBhbGxvY2F0
aW5nIGFuIGluc3RhbmNlIG9mIGl0c2VsZiBpbiB0aGUgTlBBbGxvY2F0ZQorICAgICAgICBpbXBs
ZW1lbnRhdGlvbiBhbmQgcmV0dXJuaW5nIHRoaXMgcG9pbnRlci4gSXQgc2hvdWxkIGJlIHJldHVy
bmluZyBhIHBvaW50ZXIKKyAgICAgICAgdG8gdGhlIHdyYXBwZWQgTlBPYmplY3Qgc3RydWN0dXJl
IChOUFByb3h5T2JqZWN0KS4gVGhlIG1lbWJlciBmdW5jdGlvbgorICAgICAgICBnZXRVbmRlcmx5
aW5nTlBPYmplY3Qgc2hvdWxkIHJldHVybiAwIGlmIHdlIGZhaWwgdG8gZmluZCB0aGUgdW5kZXJs
eWluZyBOUE9iamVjdAorICAgICAgICBmb3IgdGhlIGNhbGwuIEl0IHdhcyBpbmNvcnJlY3RseSBy
ZXR1cm5pbmcgYSBwb2ludGVyIHRvIHRoZSBzYW1lIE5QT2JqZWN0IGluCisgICAgICAgIHRoaXMg
Y2FzZSB3aGljaCBjb3VsZCBjYXVzZSByZWN1cnNpb24uIAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBhcyB0aGVyZSBpcyBubyBj
aGFuZ2UgaW4gZnVuY3Rpb25hbGl0eS4KKworICAgICAgICAqIGJpbmRpbmdzL3Y4L05QT2JqZWN0
V3JhcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOUE9iamVjdFdyYXBwZXI6OmdldE9iamVj
dEZvckNhbGwpOgorICAgICAgICAoV2ViQ29yZTo6TlBPYmplY3RXcmFwcGVyOjpOUEFsbG9jYXRl
KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9OUE9iamVjdFdyYXBwZXIuaDoKKwogMjAxMS0xMC0x
MyAgSm9zaHVhIEJlbGwgIDxqc2JlbGxAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIG1ha2UgSURC
RmFjdG9yeS5vcGVuIHdhaXQgZm9yIHBlbmRpbmcgc2V0VmVyc2lvbiB0cmFuc2FjdGlvbnMgdG8g
Y29tcGxldGUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L05QT2JqZWN0V3JhcHBl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvTlBPYmplY3RX
cmFwcGVyLmNwcAkocmV2aXNpb24gOTc0MTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9OUE9iamVjdFdyYXBwZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NCwxMSArODQsMTEgQEAg
TlBPYmplY3QqIE5QT2JqZWN0V3JhcHBlcjo6Z2V0VW5kZXJseWluZwogDQogTlBPYmplY3QqIE5Q
T2JqZWN0V3JhcHBlcjo6Z2V0T2JqZWN0Rm9yQ2FsbChOUE9iamVjdCogb2JqKSB7DQogICBOUE9i
amVjdCogYWN0dWFsT2JqZWN0ID0gZ2V0VW5kZXJseWluZ05QT2JqZWN0KG9iaik7DQotICByZXR1
cm4gYWN0dWFsT2JqZWN0ID8gYWN0dWFsT2JqZWN0IDogb2JqOw0KKyAgcmV0dXJuIGFjdHVhbE9i
amVjdCA/IGFjdHVhbE9iamVjdCA6IDA7DQogfQ0KIA0KIE5QT2JqZWN0KiBOUE9iamVjdFdyYXBw
ZXI6Ok5QQWxsb2NhdGUoTlBQLCBOUENsYXNzKikgewotICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PE5QT2JqZWN0Kj4obmV3IE5QT2JqZWN0V3JhcHBlcigwKSk7CisgICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8TlBPYmplY3QqPihuZXcgTlBQcm94eU9iamVjdCk7CiB9CiAKIHZvaWQgTlBP
YmplY3RXcmFwcGVyOjpOUERlYWxsb2NhdGUoTlBPYmplY3QqIG9iaikgewpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvTlBPYmplY3RXcmFwcGVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvTlBPYmplY3RXcmFwcGVyLmgJKHJldmlzaW9uIDk3NDE1
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvTlBPYmplY3RXcmFwcGVyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gb2JqZWN0
IHRvIGJlIGNsZWFyZWQgb3V0IHdoZW4gdGhpcyBvYmplY3QgaXMgZGVzdHJveWVkLiBUaGlzIGlz
IHRvIGVuc3VyZQ0KIC8vIHRoYXQgY2FsbGVycyB0cnlpbmcgdG8gYWNjZXNzIHRoZSB1bmRlcmx5
aW5nIG9iamVjdCBkb24ndCBjcmFzaCB3aGlsZQ0KIC8vIGludm9raW5nIG1ldGhvZHMgb24gdGhl
IE5QT2JqZWN0Lg0KLWNsYXNzIE5QT2JqZWN0V3JhcHBlciA6IHB1YmxpYyBOUE9iamVjdCB7DQor
Y2xhc3MgTlBPYmplY3RXcmFwcGVyIHsNCiBwdWJsaWM6DQogICAgIC8vIENyZWF0ZXMgYW4gaW5z
dGFuY2Ugb2YgdGhlIE5QT2JqZWN0V3JhcHBlciBjbGFzcyBhbmQgd3JhcHMgdGhlIG9iamVjdA0K
ICAgICAvLyBwYXNzZWQgaW4uDQo=
</data>
<flag name="review"
          id="108580"
          type_id="1"
          status="+"
          setter="japhet"
    />
    <flag name="commit-queue"
          id="108584"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>110934</attachid>
            <date>2011-10-13 16:54:06 -0700</date>
            <delta_ts>2011-10-13 17:26:54 -0700</delta_ts>
            <desc>Patch with line endings fixed.</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>15495</size>
            <attacher name="Ananta Iyengar">ananta</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk3NDE3KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTEtMTAtMTMgIEFuYW50YW5h
cmF5YW5hbiBHIEl5ZW5nYXIgIDxhbmFudGFAY2hyb21pdW0ub3JnPgorCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MDA2NAorICAgICAgICAKKyAgICAg
ICAgVGhlIE5QT2JqZWN0V3JhcHBlciBjbGFzcyB1c2VkIGJ5IFY4IGJpbmRpbmdzIGluIENocm9t
aXVtIHRvIHdyYXAgdGhlIHdpbmRvdworICAgICAgICBzY3JpcHQgb2JqZWN0IHdhcyBhbGxvY2F0
aW5nIGFuIGluc3RhbmNlIG9mIGl0c2VsZiBpbiB0aGUgTlBBbGxvY2F0ZQorICAgICAgICBpbXBs
ZW1lbnRhdGlvbiBhbmQgcmV0dXJuaW5nIHRoaXMgcG9pbnRlci4gSXQgc2hvdWxkIGJlIHJldHVy
bmluZyBhIHBvaW50ZXIKKyAgICAgICAgdG8gdGhlIHdyYXBwZWQgTlBPYmplY3Qgc3RydWN0dXJl
IChOUFByb3h5T2JqZWN0KS4gVGhlIG1lbWJlciBmdW5jdGlvbgorICAgICAgICBnZXRVbmRlcmx5
aW5nTlBPYmplY3Qgc2hvdWxkIHJldHVybiAwIGlmIHdlIGZhaWwgdG8gZmluZCB0aGUgdW5kZXJs
eWluZyBOUE9iamVjdAorICAgICAgICBmb3IgdGhlIGNhbGwuIEl0IHdhcyBpbmNvcnJlY3RseSBy
ZXR1cm5pbmcgYSBwb2ludGVyIHRvIHRoZSBzYW1lIE5QT2JqZWN0IGluCisgICAgICAgIHRoaXMg
Y2FzZSB3aGljaCBjb3VsZCBjYXVzZSByZWN1cnNpb24uIAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5hdGUgQ2hhcGluLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBhcyB0aGVyZSBpcyBubyBjaGFu
Z2UgaW4gZnVuY3Rpb25hbGl0eS4KKworICAgICAgICAqIGJpbmRpbmdzL3Y4L05QT2JqZWN0V3Jh
cHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOUE9iamVjdFdyYXBwZXI6OmdldE9iamVjdEZv
ckNhbGwpOgorICAgICAgICAoV2ViQ29yZTo6TlBPYmplY3RXcmFwcGVyOjpOUEFsbG9jYXRlKToK
KyAgICAgICAgKiBiaW5kaW5ncy92OC9OUE9iamVjdFdyYXBwZXIuaDoKKwogMjAxMS0xMC0xMyAg
Sm9zaHVhIEJlbGwgIDxqc2JlbGxAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIG1ha2UgSURCRmFj
dG9yeS5vcGVuIHdhaXQgZm9yIHBlbmRpbmcgc2V0VmVyc2lvbiB0cmFuc2FjdGlvbnMgdG8gY29t
cGxldGUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L05QT2JqZWN0V3JhcHBlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvTlBPYmplY3RXcmFw
cGVyLmNwcAkocmV2aXNpb24gOTc0MTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9O
UE9iamVjdFdyYXBwZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQzICsxLDQzIEBACi0vKg0K
LSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0K
LSAqDQotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0DQotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQ0KLSAqIG1ldDoNCi0gKg0KLSAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0DQotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUNCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyDQotICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQ0KLSAqIGRpc3RyaWJ1dGlvbi4NCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzDQotICogY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20NCi0gKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLg0KLSAq
DQotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUw0KLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UDQotICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SDQotICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQNCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwNCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UDQotICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
DQotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZDQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVA0KLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQ0KLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuDQotICovDQotDQotI2luY2x1ZGUgImNvbmZpZy5oIg0KLSNpbmNsdWRlICJO
UE9iamVjdFdyYXBwZXIuaCINCi0NCi1uYW1lc3BhY2UgV2ViQ29yZSB7DQotDQorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmli
dXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJOUE9iamVjdFdyYXBwZXIuaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCiBzdHJ1Y3QgTlBQcm94eU9iamVjdCB7CiAgICAgTlBPYmplY3Qgb2JqZWN0OwogICAg
IE5QT2JqZWN0V3JhcHBlciogd3JhcHBlcjsKIH07Ci0NCisKIE5QQ2xhc3MgTlBPYmplY3RXcmFw
cGVyOjptX25wQ2xhc3NXcmFwcGVyID0gewogICAgIE5QX0NMQVNTX1NUUlVDVF9WRVJTSU9OLAog
ICAgIE5QT2JqZWN0V3JhcHBlcjo6TlBBbGxvY2F0ZSwKQEAgLTUzLDU2ICs1Myw1NiBAQCBOUENs
YXNzIE5QT2JqZWN0V3JhcHBlcjo6bV9ucENsYXNzV3JhcHBlCiAgICAgTlBPYmplY3RXcmFwcGVy
OjpOUE5FbnVtZXJhdGUsCiAgICAgTlBPYmplY3RXcmFwcGVyOjpOUE5Db25zdHJ1Y3QKIH07Ci0N
Ci1OUE9iamVjdFdyYXBwZXI6Ok5QT2JqZWN0V3JhcHBlcihOUE9iamVjdCogb2JqKQ0KLSAgICA6
IG1fd3JhcHBlZE5QT2JqZWN0KG9iaikgew0KLX0NCi0NCi1OUE9iamVjdCogTlBPYmplY3RXcmFw
cGVyOjpjcmVhdGUoTlBPYmplY3QqIG9iamVjdCkgew0KLSAgICBBU1NFUlQob2JqZWN0KTsNCi0g
ICAgTlBQcm94eU9iamVjdCogcHJveHlPYmplY3QgPSByZWludGVycHJldF9jYXN0PE5QUHJveHlP
YmplY3QqPihfTlBOX0NyZWF0ZU9iamVjdCgwLCAmbV9ucENsYXNzV3JhcHBlcikpOw0KLSAgICBw
cm94eU9iamVjdC0+d3JhcHBlciA9IG5ldyBOUE9iamVjdFdyYXBwZXIob2JqZWN0KTsNCi0gICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8TlBPYmplY3QqPihwcm94eU9iamVjdCk7DQotfQ0KLQ0K
LXZvaWQgTlBPYmplY3RXcmFwcGVyOjpjbGVhcigpIHsNCi0gICAgbV93cmFwcGVkTlBPYmplY3Qg
PSAwOyAgIA0KLX0NCi0NCi1OUE9iamVjdFdyYXBwZXIqIE5QT2JqZWN0V3JhcHBlcjo6Z2V0V3Jh
cHBlcihOUE9iamVjdCogb2JqKSB7DQotICAgIGlmICgmbV9ucENsYXNzV3JhcHBlciA9PSBvYmot
Pl9jbGFzcykgew0KLSAgICAgICAgTlBQcm94eU9iamVjdCogcHJveHlPYmplY3QgPSByZWludGVy
cHJldF9jYXN0PE5QUHJveHlPYmplY3QqPihvYmopOw0KLSAgICAgICAgcmV0dXJuIHByb3h5T2Jq
ZWN0LT53cmFwcGVyOw0KLSAgICB9DQotICAgIHJldHVybiAwOw0KLX0NCi0NCi1OUE9iamVjdCog
TlBPYmplY3RXcmFwcGVyOjpnZXRVbmRlcmx5aW5nTlBPYmplY3QoTlBPYmplY3QqIG9iaikgew0K
LSAgICBOUE9iamVjdFdyYXBwZXIqIHdyYXBwZXIgPSBnZXRXcmFwcGVyKG9iaik7DQotICAgIHJl
dHVybiB3cmFwcGVyID8gd3JhcHBlci0+bV93cmFwcGVkTlBPYmplY3QgOiAwOw0KLX0NCi0NCi1O
UE9iamVjdCogTlBPYmplY3RXcmFwcGVyOjpnZXRPYmplY3RGb3JDYWxsKE5QT2JqZWN0KiBvYmop
IHsNCi0gIE5QT2JqZWN0KiBhY3R1YWxPYmplY3QgPSBnZXRVbmRlcmx5aW5nTlBPYmplY3Qob2Jq
KTsNCi0gIHJldHVybiBhY3R1YWxPYmplY3QgPyBhY3R1YWxPYmplY3QgOiBvYmo7DQotfQ0KLQ0K
KworTlBPYmplY3RXcmFwcGVyOjpOUE9iamVjdFdyYXBwZXIoTlBPYmplY3QqIG9iaikKKyAgICA6
IG1fd3JhcHBlZE5QT2JqZWN0KG9iaikgeworfQorCitOUE9iamVjdCogTlBPYmplY3RXcmFwcGVy
OjpjcmVhdGUoTlBPYmplY3QqIG9iamVjdCkgeworICAgIEFTU0VSVChvYmplY3QpOworICAgIE5Q
UHJveHlPYmplY3QqIHByb3h5T2JqZWN0ID0gcmVpbnRlcnByZXRfY2FzdDxOUFByb3h5T2JqZWN0
Kj4oX05QTl9DcmVhdGVPYmplY3QoMCwgJm1fbnBDbGFzc1dyYXBwZXIpKTsKKyAgICBwcm94eU9i
amVjdC0+d3JhcHBlciA9IG5ldyBOUE9iamVjdFdyYXBwZXIob2JqZWN0KTsKKyAgICByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDxOUE9iamVjdCo+KHByb3h5T2JqZWN0KTsKK30KKwordm9pZCBOUE9i
amVjdFdyYXBwZXI6OmNsZWFyKCkgeworICAgIG1fd3JhcHBlZE5QT2JqZWN0ID0gMDsgICAKK30K
KworTlBPYmplY3RXcmFwcGVyKiBOUE9iamVjdFdyYXBwZXI6OmdldFdyYXBwZXIoTlBPYmplY3Qq
IG9iaikgeworICAgIGlmICgmbV9ucENsYXNzV3JhcHBlciA9PSBvYmotPl9jbGFzcykgeworICAg
ICAgICBOUFByb3h5T2JqZWN0KiBwcm94eU9iamVjdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8TlBQcm94
eU9iamVjdCo+KG9iaik7CisgICAgICAgIHJldHVybiBwcm94eU9iamVjdC0+d3JhcHBlcjsKKyAg
ICB9CisgICAgcmV0dXJuIDA7Cit9CisKK05QT2JqZWN0KiBOUE9iamVjdFdyYXBwZXI6OmdldFVu
ZGVybHlpbmdOUE9iamVjdChOUE9iamVjdCogb2JqKSB7CisgICAgTlBPYmplY3RXcmFwcGVyKiB3
cmFwcGVyID0gZ2V0V3JhcHBlcihvYmopOworICAgIHJldHVybiB3cmFwcGVyID8gd3JhcHBlci0+
bV93cmFwcGVkTlBPYmplY3QgOiAwOworfQorCitOUE9iamVjdCogTlBPYmplY3RXcmFwcGVyOjpn
ZXRPYmplY3RGb3JDYWxsKE5QT2JqZWN0KiBvYmopIHsKKyAgTlBPYmplY3QqIGFjdHVhbE9iamVj
dCA9IGdldFVuZGVybHlpbmdOUE9iamVjdChvYmopOworICByZXR1cm4gYWN0dWFsT2JqZWN0ID8g
YWN0dWFsT2JqZWN0IDogMDsKK30KKwogTlBPYmplY3QqIE5QT2JqZWN0V3JhcHBlcjo6TlBBbGxv
Y2F0ZShOUFAsIE5QQ2xhc3MqKSB7Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8TlBPYmpl
Y3QqPihuZXcgTlBPYmplY3RXcmFwcGVyKDApKTsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDxOUE9iamVjdCo+KG5ldyBOUFByb3h5T2JqZWN0KTsKIH0KIAogdm9pZCBOUE9iamVjdFdyYXBw
ZXI6Ok5QRGVhbGxvY2F0ZShOUE9iamVjdCogb2JqKSB7Ci0gICAgTlBQcm94eU9iamVjdCogcHJv
eHlPYmplY3QgPSByZWludGVycHJldF9jYXN0PE5QUHJveHlPYmplY3QqPihvYmopOw0KKyAgICBO
UFByb3h5T2JqZWN0KiBwcm94eU9iamVjdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8TlBQcm94eU9iamVj
dCo+KG9iaik7CiAgICAgZGVsZXRlIHByb3h5T2JqZWN0LT53cmFwcGVyOwogICAgIGRlbGV0ZSBw
cm94eU9iamVjdDsKIH0KLQ0KKwogdm9pZCBOUE9iamVjdFdyYXBwZXI6Ok5QUEludmFsaWRhdGUo
TlBPYmplY3QqIG9iaikgewogICAgIE5QT2JqZWN0KiBhY3R1YWxPYmplY3QgPSBnZXRPYmplY3RG
b3JDYWxsKG9iaik7CiAgICAgaWYgKGFjdHVhbE9iamVjdCAmJiBhY3R1YWxPYmplY3QtPl9jbGFz
cy0+aW52YWxpZGF0ZSkKICAgICAgICAgYWN0dWFsT2JqZWN0LT5fY2xhc3MtPmludmFsaWRhdGUo
YWN0dWFsT2JqZWN0KTsKIH0KLQ0KKwogYm9vbCBOUE9iamVjdFdyYXBwZXI6Ok5QSGFzTWV0aG9k
KE5QT2JqZWN0KiBvYmosIE5QSWRlbnRpZmllciBuYW1lKSB7CiAgICAgTlBPYmplY3QqIGFjdHVh
bE9iamVjdCA9IGdldE9iamVjdEZvckNhbGwob2JqKTsKICAgICByZXR1cm4gYWN0dWFsT2JqZWN0
ID8gX05QTl9IYXNNZXRob2QoMCwgYWN0dWFsT2JqZWN0LCBuYW1lKSA6IGZhbHNlOwpAQCAtMTU5
LDUgKzE1OSw1IEBAIGJvb2wgTlBPYmplY3RXcmFwcGVyOjpOUEludm9rZVByaXZhdGUoTlAKICAg
ICAgICAgcmV0dXJuIF9OUE5fSW52b2tlKDAsIGFjdHVhbE9iamVjdCwgbmFtZSwgYXJncywgYXJn
Q291bnQsIHJlc3VsdCk7CiAgICAgfQogfQotDQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQ0KKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvTlBPYmplY3RXcmFwcGVyLmNwcApfX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46
ZW9sLXN0eWxlCiAgICsgTEYKCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9OUE9i
amVjdFdyYXBwZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9O
UE9iamVjdFdyYXBwZXIuaAkocmV2aXNpb24gOTc0MTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9OUE9iamVjdFdyYXBwZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2MSArMSw2MSBA
QAotLyoNCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4NCi0gKg0KLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dA0KLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUNCi0gKiBtZXQ6DQot
ICoNCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodA0KLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4NCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlDQotICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cg0KLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUNCi0gKiBkaXN0cmlidXRpb24uDQotICogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cw0KLSAqIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tDQot
ICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4NCi0gKg0KLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMNCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVA0KLSAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUg0K
LSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUDQotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsDQotICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVA0KLSAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLA0KLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQ0KLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQNCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UNCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLg0KLSAqLw0KLQ0KLSNpZm5kZWYgTlBPYmplY3RXcmFwcGVyX2gN
Ci0jZGVmaW5lIE5QT2JqZWN0V3JhcHBlcl9oDQotDQotI2luY2x1ZGUgIm5wcnVudGltZV9pbXBs
LmgiDQotDQotbmFtZXNwYWNlIFdlYkNvcmUgew0KLQ0KLS8vIFRoaXMgY2xhc3Mgd3JhcHMgYSBO
UE9iamVjdCBhbmQgcHJvdmlkZXMgZnVuY3Rpb25hbGl0eSBmb3IgdGhlIHdyYXBwZWQNCi0vLyBv
YmplY3QgdG8gYmUgY2xlYXJlZCBvdXQgd2hlbiB0aGlzIG9iamVjdCBpcyBkZXN0cm95ZWQuIFRo
aXMgaXMgdG8gZW5zdXJlDQotLy8gdGhhdCBjYWxsZXJzIHRyeWluZyB0byBhY2Nlc3MgdGhlIHVu
ZGVybHlpbmcgb2JqZWN0IGRvbid0IGNyYXNoIHdoaWxlDQotLy8gaW52b2tpbmcgbWV0aG9kcyBv
biB0aGUgTlBPYmplY3QuDQotY2xhc3MgTlBPYmplY3RXcmFwcGVyIDogcHVibGljIE5QT2JqZWN0
IHsNCi1wdWJsaWM6DQotICAgIC8vIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgdGhlIE5QT2JqZWN0
V3JhcHBlciBjbGFzcyBhbmQgd3JhcHMgdGhlIG9iamVjdA0KLSAgICAvLyBwYXNzZWQgaW4uDQot
ICAgIHN0YXRpYyBOUE9iamVjdCogY3JlYXRlKE5QT2JqZWN0KiBvYmplY3QpOw0KLQ0KLSAgICAv
LyBUaGlzIG1ldGhvZCBzaG91bGQgYmUgY2FsbGVkIHRvIGludmFsaWRhdGUgdGhlIHVuZGVybHlp
bmcgTlBPYmplY3QgcG9pbnRlci4NCi0gICAgdm9pZCBjbGVhcigpOw0KLQ0KLSAgICAvLyBSZXR1
cm5zIGEgcG9pbnRlciB0byBOUE9iamVjdFdyYXBwZXIgaWYgdGhlIG9iamVjdCBwYXNzZWQgaW4g
d2FzIHdyYXBwZWQgYnkgdXMuDQotICAgIHN0YXRpYyBOUE9iamVjdFdyYXBwZXIqIGdldFdyYXBw
ZXIoTlBPYmplY3QqIG9iaik7DQotDQotICAgIC8vIFJldHVybnMgYSBwb2ludGVyIHRvIHRoZSB1
bmRlcmx5aW5nIHJhdyBOUE9iamVjdCBwb2ludGVyIG9yIDAgaWYgdGhlIG9iamVjdA0KLSAgICAv
LyBwYXNzZWQgaW4gd2FzIG5vdCB3cmFwcGVkLg0KLSAgICBzdGF0aWMgTlBPYmplY3QqIGdldFVu
ZGVybHlpbmdOUE9iamVjdChOUE9iamVjdCogb2JqKTsNCi0NCi0gICAgLy8gTlBPYmplY3QgZnVu
Y3Rpb25zIGltcGxlbWVudGVkIGJ5IHRoZSB3cmFwcGVyLg0KKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICog
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE5QT2JqZWN0V3JhcHBl
cl9oCisjZGVmaW5lIE5QT2JqZWN0V3JhcHBlcl9oCisKKyNpbmNsdWRlICJucHJ1bnRpbWVfaW1w
bC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIFRoaXMgY2xhc3Mgd3JhcHMgYSBOUE9i
amVjdCBhbmQgcHJvdmlkZXMgZnVuY3Rpb25hbGl0eSBmb3IgdGhlIHdyYXBwZWQKKy8vIG9iamVj
dCB0byBiZSBjbGVhcmVkIG91dCB3aGVuIHRoaXMgb2JqZWN0IGlzIGRlc3Ryb3llZC4gVGhpcyBp
cyB0byBlbnN1cmUKKy8vIHRoYXQgY2FsbGVycyB0cnlpbmcgdG8gYWNjZXNzIHRoZSB1bmRlcmx5
aW5nIG9iamVjdCBkb24ndCBjcmFzaCB3aGlsZQorLy8gaW52b2tpbmcgbWV0aG9kcyBvbiB0aGUg
TlBPYmplY3QuCitjbGFzcyBOUE9iamVjdFdyYXBwZXIgeworcHVibGljOgorICAgIC8vIENyZWF0
ZXMgYW4gaW5zdGFuY2Ugb2YgdGhlIE5QT2JqZWN0V3JhcHBlciBjbGFzcyBhbmQgd3JhcHMgdGhl
IG9iamVjdAorICAgIC8vIHBhc3NlZCBpbi4KKyAgICBzdGF0aWMgTlBPYmplY3QqIGNyZWF0ZShO
UE9iamVjdCogb2JqZWN0KTsKKworICAgIC8vIFRoaXMgbWV0aG9kIHNob3VsZCBiZSBjYWxsZWQg
dG8gaW52YWxpZGF0ZSB0aGUgdW5kZXJseWluZyBOUE9iamVjdCBwb2ludGVyLgorICAgIHZvaWQg
Y2xlYXIoKTsKKworICAgIC8vIFJldHVybnMgYSBwb2ludGVyIHRvIE5QT2JqZWN0V3JhcHBlciBp
ZiB0aGUgb2JqZWN0IHBhc3NlZCBpbiB3YXMgd3JhcHBlZCBieSB1cy4KKyAgICBzdGF0aWMgTlBP
YmplY3RXcmFwcGVyKiBnZXRXcmFwcGVyKE5QT2JqZWN0KiBvYmopOworCisgICAgLy8gUmV0dXJu
cyBhIHBvaW50ZXIgdG8gdGhlIHVuZGVybHlpbmcgcmF3IE5QT2JqZWN0IHBvaW50ZXIgb3IgMCBp
ZiB0aGUgb2JqZWN0CisgICAgLy8gcGFzc2VkIGluIHdhcyBub3Qgd3JhcHBlZC4KKyAgICBzdGF0
aWMgTlBPYmplY3QqIGdldFVuZGVybHlpbmdOUE9iamVjdChOUE9iamVjdCogb2JqKTsKKworICAg
IC8vIE5QT2JqZWN0IGZ1bmN0aW9ucyBpbXBsZW1lbnRlZCBieSB0aGUgd3JhcHBlci4KICAgICBz
dGF0aWMgTlBPYmplY3QqIE5QQWxsb2NhdGUoTlBQLCBOUENsYXNzKik7CiAgICAgc3RhdGljIHZv
aWQgTlBEZWFsbG9jYXRlKE5QT2JqZWN0KiBvYmopOwogICAgIHN0YXRpYyB2b2lkIE5QUEludmFs
aWRhdGUoTlBPYmplY3QgKm9iaik7CkBAIC03MSwxOCArNzEsMTggQEAgcHVibGljOgogICAgIHN0
YXRpYyBib29sIE5QSW52b2tlUHJpdmF0ZShOUFAgbnBwLCBOUE9iamVjdCogb2JqLGJvb2wgaXNE
ZWZhdWx0LCBOUElkZW50aWZpZXIgbmFtZSwgY29uc3QgTlBWYXJpYW50KiBhcmdzLCB1aW50MzJf
dCBhcmdDb3VudCwgTlBWYXJpYW50KiByZXN1bHQpOwogCiBwcml2YXRlOgotICAgIE5QT2JqZWN0
V3JhcHBlcihOUE9iamVjdCogb2JqKTsNCi0NCi0gICAgLy8gUmV0dXJucyB0aGUgdW5kZXJseWlu
ZyBOUE9iamVjdCBpZiB0aGUgb2JqZWN0IHBhc3NlZCBpbiB3YXMgd3JhcHBlZC4gT3RoZXJ3aXNl
DQotICAgIC8vIGp1c3QgcmV0dXJucyB0aGUgb2JqZWN0IHBhc3NlZCBpbi4NCi0gICAgc3RhdGlj
IE5QT2JqZWN0KiBnZXRPYmplY3RGb3JDYWxsKE5QT2JqZWN0KiBvYmopOw0KLQ0KKyAgICBOUE9i
amVjdFdyYXBwZXIoTlBPYmplY3QqIG9iaik7CisKKyAgICAvLyBSZXR1cm5zIHRoZSB1bmRlcmx5
aW5nIE5QT2JqZWN0IGlmIHRoZSBvYmplY3QgcGFzc2VkIGluIHdhcyB3cmFwcGVkLiBPdGhlcndp
c2UKKyAgICAvLyBqdXN0IHJldHVybnMgdGhlIG9iamVjdCBwYXNzZWQgaW4uCisgICAgc3RhdGlj
IE5QT2JqZWN0KiBnZXRPYmplY3RGb3JDYWxsKE5QT2JqZWN0KiBvYmopOworCiAgICAgc3RhdGlj
IE5QQ2xhc3MgbV9ucENsYXNzV3JhcHBlcjsKICAgICAvLyBXZWFrIE5QT2JqZWN0IHBvb2ludGVy
LgogICAgIE5QT2JqZWN0KiBtX3dyYXBwZWROUE9iamVjdDsKLX07DQotDQotfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQ0KLQ0KLSNlbmRpZiAvLyBOUE9iamVjdFdyYXBwZXJfaA0KLQ0KK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIE5QT2JqZWN0V3JhcHBlcl9oCisKClBy
b3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L05QT2JqZWN0V3Jh
cHBlci5oCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKICAgKyBMRgoK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>110941</attachid>
            <date>2011-10-13 17:26:57 -0700</date>
            <delta_ts>2011-10-13 17:31:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-70064-20111013172656.patch</filename>
            <type>text/plain</type>
            <size>18444</size>
            <attacher name="Abhishek Arya">inferno</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk3NDI1KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTEtMTAtMTMgIEFuYW50YW5h
cmF5YW5hbiBHIEl5ZW5nYXIgIDxhbmFudGFAY2hyb21pdW0ub3JnPgorCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MDA2NAorICAgICAgICAKKyAgICAg
ICAgVGhlIE5QT2JqZWN0V3JhcHBlciBjbGFzcyB1c2VkIGJ5IFY4IGJpbmRpbmdzIGluIENocm9t
aXVtIHRvIHdyYXAgdGhlIHdpbmRvdworICAgICAgICBzY3JpcHQgb2JqZWN0IHdhcyBhbGxvY2F0
aW5nIGFuIGluc3RhbmNlIG9mIGl0c2VsZiBpbiB0aGUgTlBBbGxvY2F0ZQorICAgICAgICBpbXBs
ZW1lbnRhdGlvbiBhbmQgcmV0dXJuaW5nIHRoaXMgcG9pbnRlci4gSXQgc2hvdWxkIGJlIHJldHVy
bmluZyBhIHBvaW50ZXIKKyAgICAgICAgdG8gdGhlIHdyYXBwZWQgTlBPYmplY3Qgc3RydWN0dXJl
IChOUFByb3h5T2JqZWN0KS4gVGhlIG1lbWJlciBmdW5jdGlvbgorICAgICAgICBnZXRVbmRlcmx5
aW5nTlBPYmplY3Qgc2hvdWxkIHJldHVybiAwIGlmIHdlIGZhaWwgdG8gZmluZCB0aGUgdW5kZXJs
eWluZyBOUE9iamVjdAorICAgICAgICBmb3IgdGhlIGNhbGwuIEl0IHdhcyBpbmNvcnJlY3RseSBy
ZXR1cm5pbmcgYSBwb2ludGVyIHRvIHRoZSBzYW1lIE5QT2JqZWN0IGluCisgICAgICAgIHRoaXMg
Y2FzZSB3aGljaCBjb3VsZCBjYXVzZSByZWN1cnNpb24uIAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5hdGUgQ2hhcGluLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBhcyB0aGVyZSBpcyBubyBjaGFu
Z2UgaW4gZnVuY3Rpb25hbGl0eS4KKworICAgICAgICAqIGJpbmRpbmdzL3Y4L05QT2JqZWN0V3Jh
cHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOUE9iamVjdFdyYXBwZXI6OmdldE9iamVjdEZv
ckNhbGwpOgorICAgICAgICAoV2ViQ29yZTo6TlBPYmplY3RXcmFwcGVyOjpOUEFsbG9jYXRlKToK
KyAgICAgICAgKiBiaW5kaW5ncy92OC9OUE9iamVjdFdyYXBwZXIuaDoKKwogMjAxMS0xMC0xMyAg
S2VudGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVnYXJkaW5n
IGNvbnN0cnVjdG9yLCByZXBsYWNlIFtDb25zdHJ1Y3RvcldpdGg9Li4uXSBJREwgd2l0aCBbQ2Fs
bFdpdGg9Li4uXSBJREwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L05QT2JqZWN0
V3JhcHBlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvTlBP
YmplY3RXcmFwcGVyLmNwcAkocmV2aXNpb24gOTc0MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9OUE9iamVjdFdyYXBwZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQzICsxLDQz
IEBACi0vKg0KLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLg0KLSAqDQotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0DQotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQ0KLSAqIG1ldDoN
Ci0gKg0KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0DQotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUNCi0gKiBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyDQotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQ0KLSAqIGRpc3RyaWJ1dGlvbi4NCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzDQotICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20N
Ci0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLg0KLSAqDQotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUw0KLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UDQotICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
DQotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQNCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwNCi0gKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UDQotICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsDQotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZDQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVA0KLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQ0KLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuDQotICovDQotDQotI2luY2x1ZGUgImNvbmZpZy5oIg0KLSNp
bmNsdWRlICJOUE9iamVjdFdyYXBwZXIuaCINCi0NCi1uYW1lc3BhY2UgV2ViQ29yZSB7DQotDQor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisg
KiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJOUE9iamVjdFdyYXBwZXIuaCIKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCiBzdHJ1Y3QgTlBQcm94eU9iamVjdCB7CiAgICAgTlBPYmplY3Qgb2Jq
ZWN0OwogICAgIE5QT2JqZWN0V3JhcHBlciogd3JhcHBlcjsKIH07Ci0NCisKIE5QQ2xhc3MgTlBP
YmplY3RXcmFwcGVyOjptX25wQ2xhc3NXcmFwcGVyID0gewogICAgIE5QX0NMQVNTX1NUUlVDVF9W
RVJTSU9OLAogICAgIE5QT2JqZWN0V3JhcHBlcjo6TlBBbGxvY2F0ZSwKQEAgLTUzLDgyICs1Myw5
NyBAQCBOUENsYXNzIE5QT2JqZWN0V3JhcHBlcjo6bV9ucENsYXNzV3JhcHBlCiAgICAgTlBPYmpl
Y3RXcmFwcGVyOjpOUE5FbnVtZXJhdGUsCiAgICAgTlBPYmplY3RXcmFwcGVyOjpOUE5Db25zdHJ1
Y3QKIH07Ci0NCi1OUE9iamVjdFdyYXBwZXI6Ok5QT2JqZWN0V3JhcHBlcihOUE9iamVjdCogb2Jq
KQ0KLSAgICA6IG1fd3JhcHBlZE5QT2JqZWN0KG9iaikgew0KLX0NCi0NCi1OUE9iamVjdCogTlBP
YmplY3RXcmFwcGVyOjpjcmVhdGUoTlBPYmplY3QqIG9iamVjdCkgew0KLSAgICBBU1NFUlQob2Jq
ZWN0KTsNCi0gICAgTlBQcm94eU9iamVjdCogcHJveHlPYmplY3QgPSByZWludGVycHJldF9jYXN0
PE5QUHJveHlPYmplY3QqPihfTlBOX0NyZWF0ZU9iamVjdCgwLCAmbV9ucENsYXNzV3JhcHBlcikp
Ow0KLSAgICBwcm94eU9iamVjdC0+d3JhcHBlciA9IG5ldyBOUE9iamVjdFdyYXBwZXIob2JqZWN0
KTsNCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8TlBPYmplY3QqPihwcm94eU9iamVjdCk7
DQotfQ0KLQ0KLXZvaWQgTlBPYmplY3RXcmFwcGVyOjpjbGVhcigpIHsNCi0gICAgbV93cmFwcGVk
TlBPYmplY3QgPSAwOyAgIA0KLX0NCi0NCi1OUE9iamVjdFdyYXBwZXIqIE5QT2JqZWN0V3JhcHBl
cjo6Z2V0V3JhcHBlcihOUE9iamVjdCogb2JqKSB7DQotICAgIGlmICgmbV9ucENsYXNzV3JhcHBl
ciA9PSBvYmotPl9jbGFzcykgew0KLSAgICAgICAgTlBQcm94eU9iamVjdCogcHJveHlPYmplY3Qg
PSByZWludGVycHJldF9jYXN0PE5QUHJveHlPYmplY3QqPihvYmopOw0KLSAgICAgICAgcmV0dXJu
IHByb3h5T2JqZWN0LT53cmFwcGVyOw0KLSAgICB9DQotICAgIHJldHVybiAwOw0KLX0NCi0NCi1O
UE9iamVjdCogTlBPYmplY3RXcmFwcGVyOjpnZXRVbmRlcmx5aW5nTlBPYmplY3QoTlBPYmplY3Qq
IG9iaikgew0KLSAgICBOUE9iamVjdFdyYXBwZXIqIHdyYXBwZXIgPSBnZXRXcmFwcGVyKG9iaik7
DQotICAgIHJldHVybiB3cmFwcGVyID8gd3JhcHBlci0+bV93cmFwcGVkTlBPYmplY3QgOiAwOw0K
LX0NCi0NCi1OUE9iamVjdCogTlBPYmplY3RXcmFwcGVyOjpnZXRPYmplY3RGb3JDYWxsKE5QT2Jq
ZWN0KiBvYmopIHsNCi0gIE5QT2JqZWN0KiBhY3R1YWxPYmplY3QgPSBnZXRVbmRlcmx5aW5nTlBP
YmplY3Qob2JqKTsNCi0gIHJldHVybiBhY3R1YWxPYmplY3QgPyBhY3R1YWxPYmplY3QgOiBvYmo7
DQotfQ0KLQ0KLU5QT2JqZWN0KiBOUE9iamVjdFdyYXBwZXI6Ok5QQWxsb2NhdGUoTlBQLCBOUENs
YXNzKikgewotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PE5QT2JqZWN0Kj4obmV3IE5QT2Jq
ZWN0V3JhcHBlcigwKSk7CisKK05QT2JqZWN0V3JhcHBlcjo6TlBPYmplY3RXcmFwcGVyKE5QT2Jq
ZWN0KiBvYmopCisgICAgOiBtX3dyYXBwZWROUE9iamVjdChvYmopCit7CiB9CiAKLXZvaWQgTlBP
YmplY3RXcmFwcGVyOjpOUERlYWxsb2NhdGUoTlBPYmplY3QqIG9iaikgewotICAgIE5QUHJveHlP
YmplY3QqIHByb3h5T2JqZWN0ID0gcmVpbnRlcnByZXRfY2FzdDxOUFByb3h5T2JqZWN0Kj4ob2Jq
KTsNCitOUE9iamVjdCogTlBPYmplY3RXcmFwcGVyOjpjcmVhdGUoTlBPYmplY3QqIG9iamVjdCkK
K3sKKyAgICBBU1NFUlQob2JqZWN0KTsKKyAgICBOUFByb3h5T2JqZWN0KiBwcm94eU9iamVjdCA9
IHJlaW50ZXJwcmV0X2Nhc3Q8TlBQcm94eU9iamVjdCo+KF9OUE5fQ3JlYXRlT2JqZWN0KDAsICZt
X25wQ2xhc3NXcmFwcGVyKSk7CisgICAgcHJveHlPYmplY3QtPndyYXBwZXIgPSBuZXcgTlBPYmpl
Y3RXcmFwcGVyKG9iamVjdCk7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8TlBPYmplY3Qq
Pihwcm94eU9iamVjdCk7Cit9CisKK3ZvaWQgTlBPYmplY3RXcmFwcGVyOjpjbGVhcigpCit7Cisg
ICAgbV93cmFwcGVkTlBPYmplY3QgPSAwOyAgIAorfQorCitOUE9iamVjdFdyYXBwZXIqIE5QT2Jq
ZWN0V3JhcHBlcjo6Z2V0V3JhcHBlcihOUE9iamVjdCogb2JqKQoreworICAgIGlmICgmbV9ucENs
YXNzV3JhcHBlciA9PSBvYmotPl9jbGFzcykgeworICAgICAgICBOUFByb3h5T2JqZWN0KiBwcm94
eU9iamVjdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8TlBQcm94eU9iamVjdCo+KG9iaik7CisgICAgICAg
IHJldHVybiBwcm94eU9iamVjdC0+d3JhcHBlcjsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisK
K05QT2JqZWN0KiBOUE9iamVjdFdyYXBwZXI6OmdldFVuZGVybHlpbmdOUE9iamVjdChOUE9iamVj
dCogb2JqKQoreworICAgIE5QT2JqZWN0V3JhcHBlciogd3JhcHBlciA9IGdldFdyYXBwZXIob2Jq
KTsKKyAgICByZXR1cm4gd3JhcHBlciA/IHdyYXBwZXItPm1fd3JhcHBlZE5QT2JqZWN0IDogMDsK
K30KKworTlBPYmplY3QqIE5QT2JqZWN0V3JhcHBlcjo6Z2V0T2JqZWN0Rm9yQ2FsbChOUE9iamVj
dCogb2JqKQoreworICAgIE5QT2JqZWN0KiBhY3R1YWxPYmplY3QgPSBnZXRVbmRlcmx5aW5nTlBP
YmplY3Qob2JqKTsKKyAgICByZXR1cm4gYWN0dWFsT2JqZWN0ID8gYWN0dWFsT2JqZWN0IDogMDsK
K30KKworTlBPYmplY3QqIE5QT2JqZWN0V3JhcHBlcjo6TlBBbGxvY2F0ZShOUFAsIE5QQ2xhc3Mq
KQoreworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PE5QT2JqZWN0Kj4obmV3IE5QUHJveHlP
YmplY3QpOworfQorCit2b2lkIE5QT2JqZWN0V3JhcHBlcjo6TlBEZWFsbG9jYXRlKE5QT2JqZWN0
KiBvYmopCit7CisgICAgTlBQcm94eU9iamVjdCogcHJveHlPYmplY3QgPSByZWludGVycHJldF9j
YXN0PE5QUHJveHlPYmplY3QqPihvYmopOwogICAgIGRlbGV0ZSBwcm94eU9iamVjdC0+d3JhcHBl
cjsKICAgICBkZWxldGUgcHJveHlPYmplY3Q7CiB9Ci0NCi12b2lkIE5QT2JqZWN0V3JhcHBlcjo6
TlBQSW52YWxpZGF0ZShOUE9iamVjdCogb2JqKSB7CisKK3ZvaWQgTlBPYmplY3RXcmFwcGVyOjpO
UFBJbnZhbGlkYXRlKE5QT2JqZWN0KiBvYmopCit7CiAgICAgTlBPYmplY3QqIGFjdHVhbE9iamVj
dCA9IGdldE9iamVjdEZvckNhbGwob2JqKTsKICAgICBpZiAoYWN0dWFsT2JqZWN0ICYmIGFjdHVh
bE9iamVjdC0+X2NsYXNzLT5pbnZhbGlkYXRlKQogICAgICAgICBhY3R1YWxPYmplY3QtPl9jbGFz
cy0+aW52YWxpZGF0ZShhY3R1YWxPYmplY3QpOwogfQotDQotYm9vbCBOUE9iamVjdFdyYXBwZXI6
Ok5QSGFzTWV0aG9kKE5QT2JqZWN0KiBvYmosIE5QSWRlbnRpZmllciBuYW1lKSB7CisKK2Jvb2wg
TlBPYmplY3RXcmFwcGVyOjpOUEhhc01ldGhvZChOUE9iamVjdCogb2JqLCBOUElkZW50aWZpZXIg
bmFtZSkKK3sKICAgICBOUE9iamVjdCogYWN0dWFsT2JqZWN0ID0gZ2V0T2JqZWN0Rm9yQ2FsbChv
YmopOwogICAgIHJldHVybiBhY3R1YWxPYmplY3QgPyBfTlBOX0hhc01ldGhvZCgwLCBhY3R1YWxP
YmplY3QsIG5hbWUpIDogZmFsc2U7CiB9CiAKLWJvb2wgTlBPYmplY3RXcmFwcGVyOjpOUEludm9r
ZShOUE9iamVjdCogb2JqLCBOUElkZW50aWZpZXIgbmFtZSwgY29uc3QgTlBWYXJpYW50KiBhcmdz
LCB1aW50MzJfdCBhcmdDb3VudCwgTlBWYXJpYW50KiByZXN1bHQpIHsKK2Jvb2wgTlBPYmplY3RX
cmFwcGVyOjpOUEludm9rZShOUE9iamVjdCogb2JqLCBOUElkZW50aWZpZXIgbmFtZSwgY29uc3Qg
TlBWYXJpYW50KiBhcmdzLCB1aW50MzJfdCBhcmdDb3VudCwgTlBWYXJpYW50KiByZXN1bHQpCit7
CiAgICAgTlBPYmplY3QqIGFjdHVhbE9iamVjdCA9IGdldE9iamVjdEZvckNhbGwob2JqKTsKICAg
ICByZXR1cm4gYWN0dWFsT2JqZWN0ID8gX05QTl9JbnZva2UoMCwgYWN0dWFsT2JqZWN0LCBuYW1l
LCBhcmdzLCBhcmdDb3VudCwgcmVzdWx0KSA6IGZhbHNlOwogfQogCi1ib29sIE5QT2JqZWN0V3Jh
cHBlcjo6TlBJbnZva2VEZWZhdWx0KE5QT2JqZWN0KiBvYmosIGNvbnN0IE5QVmFyaWFudCogYXJn
cywgdWludDMyX3QgYXJnQ291bnQsIE5QVmFyaWFudCogcmVzdWx0KSB7Citib29sIE5QT2JqZWN0
V3JhcHBlcjo6TlBJbnZva2VEZWZhdWx0KE5QT2JqZWN0KiBvYmosIGNvbnN0IE5QVmFyaWFudCog
YXJncywgdWludDMyX3QgYXJnQ291bnQsIE5QVmFyaWFudCogcmVzdWx0KQorewogICAgIE5QT2Jq
ZWN0KiBhY3R1YWxPYmplY3QgPSBnZXRPYmplY3RGb3JDYWxsKG9iaik7CiAgICAgcmV0dXJuIGFj
dHVhbE9iamVjdCA/IF9OUE5fSW52b2tlRGVmYXVsdCgwLCBhY3R1YWxPYmplY3QsIGFyZ3MsIGFy
Z0NvdW50LCByZXN1bHQpIDogZmFsc2U7CiB9CiAgCi1ib29sIE5QT2JqZWN0V3JhcHBlcjo6TlBI
YXNQcm9wZXJ0eShOUE9iamVjdCogb2JqLCBOUElkZW50aWZpZXIgbmFtZSkgeworYm9vbCBOUE9i
amVjdFdyYXBwZXI6Ok5QSGFzUHJvcGVydHkoTlBPYmplY3QqIG9iaiwgTlBJZGVudGlmaWVyIG5h
bWUpCit7CiAgICAgTlBPYmplY3QqIGFjdHVhbE9iamVjdCA9IGdldE9iamVjdEZvckNhbGwob2Jq
KTsKICAgICByZXR1cm4gYWN0dWFsT2JqZWN0ID8gX05QTl9IYXNQcm9wZXJ0eSgwLCBhY3R1YWxP
YmplY3QsIG5hbWUpIDogZmFsc2U7CiB9CiAKLWJvb2wgTlBPYmplY3RXcmFwcGVyOjpOUEdldFBy
b3BlcnR5KE5QT2JqZWN0KiBvYmosIE5QSWRlbnRpZmllciBuYW1lLCBOUFZhcmlhbnQqIHJlc3Vs
dCkgeworYm9vbCBOUE9iamVjdFdyYXBwZXI6Ok5QR2V0UHJvcGVydHkoTlBPYmplY3QqIG9iaiwg
TlBJZGVudGlmaWVyIG5hbWUsIE5QVmFyaWFudCogcmVzdWx0KQorewogICAgIE5QT2JqZWN0KiBh
Y3R1YWxPYmplY3QgPSBnZXRPYmplY3RGb3JDYWxsKG9iaik7CiAgICAgcmV0dXJuIGFjdHVhbE9i
amVjdCA/IF9OUE5fR2V0UHJvcGVydHkoMCwgYWN0dWFsT2JqZWN0LCBuYW1lLCByZXN1bHQpIDog
ZmFsc2U7CiB9CiAKLWJvb2wgTlBPYmplY3RXcmFwcGVyOjpOUFNldFByb3BlcnR5KE5QT2JqZWN0
KiBvYmosIE5QSWRlbnRpZmllciBuYW1lLCBjb25zdCBOUFZhcmlhbnQqIHZhbHVlKSB7Citib29s
IE5QT2JqZWN0V3JhcHBlcjo6TlBTZXRQcm9wZXJ0eShOUE9iamVjdCogb2JqLCBOUElkZW50aWZp
ZXIgbmFtZSwgY29uc3QgTlBWYXJpYW50KiB2YWx1ZSkKK3sKICAgICBOUE9iamVjdCogYWN0dWFs
T2JqZWN0ID0gZ2V0T2JqZWN0Rm9yQ2FsbChvYmopOwogICAgIHJldHVybiBhY3R1YWxPYmplY3Qg
PyBfTlBOX1NldFByb3BlcnR5KDAsIGFjdHVhbE9iamVjdCwgbmFtZSwgdmFsdWUpIDogZmFsc2U7
CiB9CkBAIC0xMzgsMTcgKzE1MywyMCBAQCBib29sIE5QT2JqZWN0V3JhcHBlcjo6TlBSZW1vdmVQ
cm9wZXJ0eShOCiAgICAgcmV0dXJuIGFjdHVhbE9iamVjdCA/IF9OUE5fUmVtb3ZlUHJvcGVydHko
MCwgYWN0dWFsT2JqZWN0LCBuYW1lKSA6IGZhbHNlOwogfQogCi1ib29sIE5QT2JqZWN0V3JhcHBl
cjo6TlBORW51bWVyYXRlKE5QT2JqZWN0KiBvYmosIE5QSWRlbnRpZmllcioqIHZhbHVlLCB1aW50
MzJfdCogY291bnQpIHsKK2Jvb2wgTlBPYmplY3RXcmFwcGVyOjpOUE5FbnVtZXJhdGUoTlBPYmpl
Y3QqIG9iaiwgTlBJZGVudGlmaWVyKiogdmFsdWUsIHVpbnQzMl90KiBjb3VudCkKK3sKICAgICBO
UE9iamVjdCogYWN0dWFsT2JqZWN0ID0gZ2V0T2JqZWN0Rm9yQ2FsbChvYmopOwogICAgIHJldHVy
biBhY3R1YWxPYmplY3QgPyBfTlBOX0VudW1lcmF0ZSgwLCBhY3R1YWxPYmplY3QsIHZhbHVlLCBj
b3VudCkgOiBmYWxzZTsKIH0KIAotYm9vbCBOUE9iamVjdFdyYXBwZXI6Ok5QTkNvbnN0cnVjdChO
UE9iamVjdCogb2JqLCBjb25zdCBOUFZhcmlhbnQqIGFyZ3MsIHVpbnQzMl90IGFyZ0NvdW50LCBO
UFZhcmlhbnQqIHJlc3VsdCkgeworYm9vbCBOUE9iamVjdFdyYXBwZXI6Ok5QTkNvbnN0cnVjdChO
UE9iamVjdCogb2JqLCBjb25zdCBOUFZhcmlhbnQqIGFyZ3MsIHVpbnQzMl90IGFyZ0NvdW50LCBO
UFZhcmlhbnQqIHJlc3VsdCkKK3sKICAgICBOUE9iamVjdCogYWN0dWFsT2JqZWN0ID0gZ2V0T2Jq
ZWN0Rm9yQ2FsbChvYmopOwogICAgIHJldHVybiBhY3R1YWxPYmplY3QgPyBfTlBOX0NvbnN0cnVj
dCgwLCBhY3R1YWxPYmplY3QsIGFyZ3MsIGFyZ0NvdW50LCByZXN1bHQpIDogZmFsc2U7CiB9CiAK
LWJvb2wgTlBPYmplY3RXcmFwcGVyOjpOUEludm9rZVByaXZhdGUoTlBQIG5wcCwgTlBPYmplY3Qq
IG9iaiwgYm9vbCBpc0RlZmF1bHQsIE5QSWRlbnRpZmllciBuYW1lLCBjb25zdCBOUFZhcmlhbnQq
IGFyZ3MsIHVpbnQzMl90IGFyZ0NvdW50LCBOUFZhcmlhbnQqIHJlc3VsdCkgeworYm9vbCBOUE9i
amVjdFdyYXBwZXI6Ok5QSW52b2tlUHJpdmF0ZShOUFAgbnBwLCBOUE9iamVjdCogb2JqLCBib29s
IGlzRGVmYXVsdCwgTlBJZGVudGlmaWVyIG5hbWUsIGNvbnN0IE5QVmFyaWFudCogYXJncywgdWlu
dDMyX3QgYXJnQ291bnQsIE5QVmFyaWFudCogcmVzdWx0KQorewogICAgIE5QT2JqZWN0KiBhY3R1
YWxPYmplY3QgPSBnZXRPYmplY3RGb3JDYWxsKG9iaik7CiAgICAgaWYgKCFhY3R1YWxPYmplY3Qp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE1OSw1ICsxNzcsNSBAQCBib29sIE5QT2JqZWN0
V3JhcHBlcjo6TlBJbnZva2VQcml2YXRlKE5QCiAgICAgICAgIHJldHVybiBfTlBOX0ludm9rZSgw
LCBhY3R1YWxPYmplY3QsIG5hbWUsIGFyZ3MsIGFyZ0NvdW50LCByZXN1bHQpOwogICAgIH0KIH0K
LQ0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUNCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L05QT2JqZWN0V3JhcHBlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L05QT2JqZWN0V3JhcHBlci5oCShyZXZp
c2lvbiA5NzQyNSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L05QT2JqZWN0V3JhcHBl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYxICsxLDYxIEBACi0vKg0KLSAqIENvcHlyaWdodCAo
QykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KLSAqDQotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0DQotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQ0KLSAqIG1ldDoNCi0gKg0KLSAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0DQot
ICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLg0KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUNCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyDQotICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQ0KLSAqIGRpc3Ry
aWJ1dGlvbi4NCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzDQotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20NCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLg0KLSAqDQotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
Uw0KLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UDQotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SDQotICogQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQNCi0gKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwNCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UDQotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsDQotICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZDQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVA0KLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQ0KLSAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuDQot
ICovDQotDQotI2lmbmRlZiBOUE9iamVjdFdyYXBwZXJfaA0KLSNkZWZpbmUgTlBPYmplY3RXcmFw
cGVyX2gNCi0NCi0jaW5jbHVkZSAibnBydW50aW1lX2ltcGwuaCINCi0NCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7DQotDQotLy8gVGhpcyBjbGFzcyB3cmFwcyBhIE5QT2JqZWN0IGFuZCBwcm92aWRlcyBm
dW5jdGlvbmFsaXR5IGZvciB0aGUgd3JhcHBlZA0KLS8vIG9iamVjdCB0byBiZSBjbGVhcmVkIG91
dCB3aGVuIHRoaXMgb2JqZWN0IGlzIGRlc3Ryb3llZC4gVGhpcyBpcyB0byBlbnN1cmUNCi0vLyB0
aGF0IGNhbGxlcnMgdHJ5aW5nIHRvIGFjY2VzcyB0aGUgdW5kZXJseWluZyBvYmplY3QgZG9uJ3Qg
Y3Jhc2ggd2hpbGUNCi0vLyBpbnZva2luZyBtZXRob2RzIG9uIHRoZSBOUE9iamVjdC4NCi1jbGFz
cyBOUE9iamVjdFdyYXBwZXIgOiBwdWJsaWMgTlBPYmplY3Qgew0KLXB1YmxpYzoNCi0gICAgLy8g
Q3JlYXRlcyBhbiBpbnN0YW5jZSBvZiB0aGUgTlBPYmplY3RXcmFwcGVyIGNsYXNzIGFuZCB3cmFw
cyB0aGUgb2JqZWN0DQotICAgIC8vIHBhc3NlZCBpbi4NCi0gICAgc3RhdGljIE5QT2JqZWN0KiBj
cmVhdGUoTlBPYmplY3QqIG9iamVjdCk7DQotDQotICAgIC8vIFRoaXMgbWV0aG9kIHNob3VsZCBi
ZSBjYWxsZWQgdG8gaW52YWxpZGF0ZSB0aGUgdW5kZXJseWluZyBOUE9iamVjdCBwb2ludGVyLg0K
LSAgICB2b2lkIGNsZWFyKCk7DQotDQotICAgIC8vIFJldHVybnMgYSBwb2ludGVyIHRvIE5QT2Jq
ZWN0V3JhcHBlciBpZiB0aGUgb2JqZWN0IHBhc3NlZCBpbiB3YXMgd3JhcHBlZCBieSB1cy4NCi0g
ICAgc3RhdGljIE5QT2JqZWN0V3JhcHBlciogZ2V0V3JhcHBlcihOUE9iamVjdCogb2JqKTsNCi0N
Ci0gICAgLy8gUmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlIHVuZGVybHlpbmcgcmF3IE5QT2JqZWN0
IHBvaW50ZXIgb3IgMCBpZiB0aGUgb2JqZWN0DQotICAgIC8vIHBhc3NlZCBpbiB3YXMgbm90IHdy
YXBwZWQuDQotICAgIHN0YXRpYyBOUE9iamVjdCogZ2V0VW5kZXJseWluZ05QT2JqZWN0KE5QT2Jq
ZWN0KiBvYmopOw0KLQ0KLSAgICAvLyBOUE9iamVjdCBmdW5jdGlvbnMgaW1wbGVtZW50ZWQgYnkg
dGhlIHdyYXBwZXIuDQorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICog
bWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICog
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgTlBPYmplY3RXcmFwcGVyX2gKKyNkZWZpbmUgTlBPYmplY3RX
cmFwcGVyX2gKKworI2luY2x1ZGUgIm5wcnVudGltZV9pbXBsLmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworLy8gVGhpcyBjbGFzcyB3cmFwcyBhIE5QT2JqZWN0IGFuZCBwcm92aWRlcyBmdW5j
dGlvbmFsaXR5IGZvciB0aGUgd3JhcHBlZAorLy8gb2JqZWN0IHRvIGJlIGNsZWFyZWQgb3V0IHdo
ZW4gdGhpcyBvYmplY3QgaXMgZGVzdHJveWVkLiBUaGlzIGlzIHRvIGVuc3VyZQorLy8gdGhhdCBj
YWxsZXJzIHRyeWluZyB0byBhY2Nlc3MgdGhlIHVuZGVybHlpbmcgb2JqZWN0IGRvbid0IGNyYXNo
IHdoaWxlCisvLyBpbnZva2luZyBtZXRob2RzIG9uIHRoZSBOUE9iamVjdC4KK2NsYXNzIE5QT2Jq
ZWN0V3JhcHBlciB7CitwdWJsaWM6CisgICAgLy8gQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiB0aGUg
TlBPYmplY3RXcmFwcGVyIGNsYXNzIGFuZCB3cmFwcyB0aGUgb2JqZWN0CisgICAgLy8gcGFzc2Vk
IGluLgorICAgIHN0YXRpYyBOUE9iamVjdCogY3JlYXRlKE5QT2JqZWN0KiBvYmplY3QpOworCisg
ICAgLy8gVGhpcyBtZXRob2Qgc2hvdWxkIGJlIGNhbGxlZCB0byBpbnZhbGlkYXRlIHRoZSB1bmRl
cmx5aW5nIE5QT2JqZWN0IHBvaW50ZXIuCisgICAgdm9pZCBjbGVhcigpOworCisgICAgLy8gUmV0
dXJucyBhIHBvaW50ZXIgdG8gTlBPYmplY3RXcmFwcGVyIGlmIHRoZSBvYmplY3QgcGFzc2VkIGlu
IHdhcyB3cmFwcGVkIGJ5IHVzLgorICAgIHN0YXRpYyBOUE9iamVjdFdyYXBwZXIqIGdldFdyYXBw
ZXIoTlBPYmplY3QqIG9iaik7CisKKyAgICAvLyBSZXR1cm5zIGEgcG9pbnRlciB0byB0aGUgdW5k
ZXJseWluZyByYXcgTlBPYmplY3QgcG9pbnRlciBvciAwIGlmIHRoZSBvYmplY3QKKyAgICAvLyBw
YXNzZWQgaW4gd2FzIG5vdCB3cmFwcGVkLgorICAgIHN0YXRpYyBOUE9iamVjdCogZ2V0VW5kZXJs
eWluZ05QT2JqZWN0KE5QT2JqZWN0KiBvYmopOworCisgICAgLy8gTlBPYmplY3QgZnVuY3Rpb25z
IGltcGxlbWVudGVkIGJ5IHRoZSB3cmFwcGVyLgogICAgIHN0YXRpYyBOUE9iamVjdCogTlBBbGxv
Y2F0ZShOUFAsIE5QQ2xhc3MqKTsKICAgICBzdGF0aWMgdm9pZCBOUERlYWxsb2NhdGUoTlBPYmpl
Y3QqIG9iaik7CiAgICAgc3RhdGljIHZvaWQgTlBQSW52YWxpZGF0ZShOUE9iamVjdCAqb2JqKTsK
QEAgLTcxLDE4ICs3MSwxOCBAQCBwdWJsaWM6DQogICAgIHN0YXRpYyBib29sIE5QSW52b2tlUHJp
dmF0ZShOUFAgbnBwLCBOUE9iamVjdCogb2JqLGJvb2wgaXNEZWZhdWx0LCBOUElkZW50aWZpZXIg
bmFtZSwgY29uc3QgTlBWYXJpYW50KiBhcmdzLCB1aW50MzJfdCBhcmdDb3VudCwgTlBWYXJpYW50
KiByZXN1bHQpOwogCiBwcml2YXRlOgotICAgIE5QT2JqZWN0V3JhcHBlcihOUE9iamVjdCogb2Jq
KTsNCi0NCi0gICAgLy8gUmV0dXJucyB0aGUgdW5kZXJseWluZyBOUE9iamVjdCBpZiB0aGUgb2Jq
ZWN0IHBhc3NlZCBpbiB3YXMgd3JhcHBlZC4gT3RoZXJ3aXNlDQotICAgIC8vIGp1c3QgcmV0dXJu
cyB0aGUgb2JqZWN0IHBhc3NlZCBpbi4NCi0gICAgc3RhdGljIE5QT2JqZWN0KiBnZXRPYmplY3RG
b3JDYWxsKE5QT2JqZWN0KiBvYmopOw0KLQ0KKyAgICBOUE9iamVjdFdyYXBwZXIoTlBPYmplY3Qq
IG9iaik7CisKKyAgICAvLyBSZXR1cm5zIHRoZSB1bmRlcmx5aW5nIE5QT2JqZWN0IGlmIHRoZSBv
YmplY3QgcGFzc2VkIGluIHdhcyB3cmFwcGVkLiBPdGhlcndpc2UKKyAgICAvLyBqdXN0IHJldHVy
bnMgdGhlIG9iamVjdCBwYXNzZWQgaW4uCisgICAgc3RhdGljIE5QT2JqZWN0KiBnZXRPYmplY3RG
b3JDYWxsKE5QT2JqZWN0KiBvYmopOworCiAgICAgc3RhdGljIE5QQ2xhc3MgbV9ucENsYXNzV3Jh
cHBlcjsKICAgICAvLyBXZWFrIE5QT2JqZWN0IHBvb2ludGVyLgogICAgIE5QT2JqZWN0KiBtX3dy
YXBwZWROUE9iamVjdDsKLX07DQotDQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQ0KLQ0KLSNlbmRp
ZiAvLyBOUE9iamVjdFdyYXBwZXJfaA0KLQ0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIE5QT2JqZWN0V3JhcHBlcl9oCisK
</data>
<flag name="review"
          id="108603"
          type_id="1"
          status="+"
          setter="abarth"
    />
    <flag name="commit-queue"
          id="108604"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
      

    </bug>

</bugzilla>