<?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>139418</bug_id>
          
          <creation_ts>2014-12-08 15:29:25 -0800</creation_ts>
          <short_desc>A &quot;cached&quot; null setter should throw a TypeException when called in strict mode and doesn&apos;t</short_desc>
          <delta_ts>2015-01-20 17:29:59 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>139229</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Saboff">msaboff</reporter>
          <assigned_to name="Michael Saboff">msaboff</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1053551</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2014-12-08 15:29:25 -0800</bug_when>
    <thetext>The put by id caching only has logic to return undefined when a setter is null.  The ECMAScript spec requires that a null setter throws a TypeException.  The (soon to be) attached test demonstrates the problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1053552</commentid>
    <comment_count>1</comment_count>
      <attachid>242855</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2014-12-08 15:34:27 -0800</bug_when>
    <thetext>Created attachment 242855
Test to demonstrate issue</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1053580</commentid>
    <comment_count>2</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2014-12-08 16:34:56 -0800</bug_when>
    <thetext>&lt;rdar://problem/19183271&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1062586</commentid>
    <comment_count>3</comment_count>
      <attachid>244949</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2015-01-19 18:22:44 -0800</bug_when>
    <thetext>Created attachment 244949
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1062633</commentid>
    <comment_count>4</comment_count>
      <attachid>244949</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-01-19 21:05:44 -0800</bug_when>
    <thetext>Comment on attachment 244949
Patch

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

r+ modulo style

&gt; Source/JavaScriptCore/runtime/NullSetterFunction.h:27
&gt; +#ifndef NullSetterFunction_h
&gt; +#define  NullSetterFunction_h

Remove the extra space.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1062646</commentid>
    <comment_count>5</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2015-01-19 21:27:59 -0800</bug_when>
    <thetext>Committed r178696: &lt;http://trac.webkit.org/changeset/178696&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1062839</commentid>
    <comment_count>6</comment_count>
      <attachid>244949</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-01-20 12:10:47 -0800</bug_when>
    <thetext>Comment on attachment 244949
Patch

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

&gt; Source/JavaScriptCore/runtime/NullSetterFunction.cpp:96
&gt; +ConstructType NullSetterFunction::getConstructData(JSCell*, ConstructData&amp; constructData)
&gt; +{
&gt; +    constructData.native.function = constructReturnUndefined;
&gt; +    return ConstructTypeHost;
&gt; +}

This looks wrong. A setter can&apos;t be called as a constructor, can it? I don&apos;t think your test covers this case, either. You should probably remove the constructor path.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1062959</commentid>
    <comment_count>7</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2015-01-20 17:29:59 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; Comment on attachment 244949 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=244949&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/NullSetterFunction.cpp:96
&gt; &gt; +ConstructType NullSetterFunction::getConstructData(JSCell*, ConstructData&amp; constructData)
&gt; &gt; +{
&gt; &gt; +    constructData.native.function = constructReturnUndefined;
&gt; &gt; +    return ConstructTypeHost;
&gt; &gt; +}
&gt; 
&gt; This looks wrong. A setter can&apos;t be called as a constructor, can it? I don&apos;t
&gt; think your test covers this case, either. You should probably remove the
&gt; constructor path.

Filed &lt;https://bugs.webkit.org/show_bug.cgi?id=140708&gt; - &quot;Eliminate construct methods from NullGetterFunction and NullSetterFunction classes&quot; to track removing the constructor path.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>242855</attachid>
            <date>2014-12-08 15:34:27 -0800</date>
            <delta_ts>2014-12-08 15:34:27 -0800</delta_ts>
            <desc>Test to demonstrate issue</desc>
            <filename>139418-test.patch</filename>
            <type>application/octet-stream</type>
            <size>2553</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3MtMTM5NDE4LWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzLTEzOTQxOC1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzLTEzOTQxOC1leHBlY3RlZC50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSw5IEBACitSZWdyZXNzaW9uIHRlc3QgZm9yIGh0dHBzOi8v
d2Via2l0Lm9yZy9iLzEzOTQxOC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBM
YXlvdXRUZXN0cy9qcy9yZWdyZXNzLTEzOTQxOC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2pzL3JlZ3Jlc3MtMTM5NDE4Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9q
cy9yZWdyZXNzLTEzOTQxOC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAgQEAKKzwh
RE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhl
YWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9yZWdyZXNzLTEzOTQx
OC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9qcy9zY3Jp
cHQtdGVzdHMvcmVncmVzcy0xMzk0MTguanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMv
c2NyaXB0LXRlc3RzL3JlZ3Jlc3MtMTM5NDE4LmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvanMvc2NyaXB0LXRlc3RzL3JlZ3Jlc3MtMTM5NDE4LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsNTQgQEAKK2Rlc2NyaXB0aW9uKAorIlJlZ3Jlc3Npb24gdGVzdCBmb3IgaHR0cHM6Ly93
ZWJraXQub3JnL2IvMTM5NDE4LiIKKyk7CisKK2Z1bmN0aW9uIElubmVyT2JqZWN0Tm9TZXR0ZXIo
KQoreworICAgIHRoaXMuX2VuYWJsZWQgPSBmYWxzZTsKK30KKworSW5uZXJPYmplY3ROb1NldHRl
ci5wcm90b3R5cGUgPSB7CisgICAgZ2V0IGVuYWJsZWQoKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IHRoaXMuX2VuYWJsZWQ7CisgICAgfQorfQorCitmdW5jdGlvbiBTdHJpY3RPdXRlck9iamVjdChp
bm5lcikKK3sKKyAgICB0aGlzLl9pbm5lck9iamVjdCA9IGlubmVyOworfQorCitTdHJpY3RPdXRl
ck9iamVjdC5wcm90b3R5cGUgPSB7CisgICAgZ2V0IGVuYWJsZWQoKQorICAgIHsKKwkidXNlIHN0
cmljdCI7CisgICAgICAgIHJldHVybiB0aGlzLl9pbm5lck9iamVjdC5lbmFibGVkOworICAgIH0s
CisKKyAgICBzZXQgZW5hYmxlZCh4KQorICAgIHsKKwkidXNlIHN0cmljdCI7CisgICAgICAgIHRo
aXMuX2lubmVyT2JqZWN0LmVuYWJsZWQgPSB4OworICAgIH0KK30KKwordmFyIGlubmVyTm9TZXR0
ZXIgPSBuZXcgSW5uZXJPYmplY3ROb1NldHRlcjsKK3ZhciBzdHJpY3RPdXRlck5vSW5uZXJTZXR0
ZXIgPSBuZXcgU3RyaWN0T3V0ZXJPYmplY3QoaW5uZXJOb1NldHRlcik7CisKK2ZvciAodmFyIGkg
PSAwOyBpIDwgMTAwMDsgKytpKSB7CisgICAgdmFyICBub0V4Y2VwdGlvbldpdGhNaXNzaW5nU2V0
dGVyID0gIk1pc3Npbmcgc2V0dGVyIGNhbGxlZCB3aXRoIHN0cmljdCBtb2RlIHNob3VsZCB0aHJv
dyBleGNlcHRpb24gYW5kIGRpZG4ndCEiOworICAgIHRyeSB7CisJc3RyaWN0T3V0ZXJOb0lubmVy
U2V0dGVyLmVuYWJsZWQgPSB0cnVlOworICAgICAgICB0aHJvdyAgbm9FeGNlcHRpb25XaXRoTWlz
c2luZ1NldHRlcjsKKyAgICB9IGNhdGNoIChlKSB7CisJaWYgKGUgaW5zdGFuY2VvZiBUeXBlRXJy
b3IpCisJICAgIDsgLy8gVGhpcyBpcyB0aGUgZXhwZWN0ZWQgZXhjZXB0aW9uCisgICAgICAgIGVs
c2UgaWYgKCEoKGUgaW5zdGFuY2VvZiBTdHJpbmcpICYmIChlID09ICBub0V4Y2VwdGlvbldpdGhN
aXNzaW5nU2V0dGVyKSkpCisJICAgIHRocm93IGUgLy8gcmV0aHJvdyAibWlzc2luZyBleGNlcHRp
b24iIGV4Y2VwdGlvbgorCWVsc2UKKyAgICAgICAgICAgIHRocm93ICJNaXNzaW5nIHNldHRlciBj
YWxsZWQgd2l0aCBzdHJpY3QgbW9kZSB0aHJldyB3cm9uZyBleGNlcHRpb246ICIgKyBlOworICAg
IH0KKyAgICBpZiAoc3RyaWN0T3V0ZXJOb0lubmVyU2V0dGVyLmVuYWJsZWQpCisgICAgICAgIHRo
cm93ICJTZXR0ZXIgdW5leHBlY3RlZGx5IG1vZGlmaWVkIHZhbHVlIjsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>244949</attachid>
            <date>2015-01-19 18:22:44 -0800</date>
            <delta_ts>2015-01-19 21:05:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>139418.patch</filename>
            <type>text/plain</type>
            <size>23045</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTc4Njg3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ4IEBA
CisyMDE1LTAxLTE5ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAg
ICAgIEEgImNhY2hlZCIgbnVsbCBzZXR0ZXIgc2hvdWxkIHRocm93IGEgVHlwZUV4Y2VwdGlvbiB3
aGVuIGNhbGxlZCBpbiBzdHJpY3QgbW9kZSBhbmQgZG9lc24ndAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM5NDE4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFkZSBhIG5ldyBOdWxsU2V0dGVyRnVuY3Rp
b24gY2xhc3Mgc2ltaWxhciB0byBOdWxsR2V0dGVyRnVuY3Rpb24uICBUaGUgZGlmZmVyZW5jZSBp
cyB0aGF0IAorICAgICAgICBOdWxsU2V0dGVyRnVuY3Rpb24gd2lsbCB0aHJvdyBhIFR5cGVFcnJv
ciBwZXIgdGhlIEVDTUEyNjIgc3BlYyBmb3IgYSBzdHJpY3QgbW9kZSBjYWxsZXIuCisKKyAgICAg
ICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2o6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9K
YXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgQWRkZWQgbmV3IGZpbGVzIE51bGxT
ZXR0ZXJGdW5jdGlvbi5jcHAgYW5kIE51bGxTZXR0ZXJGdW5jdGlvbi5oLgorCisgICAgICAgICog
cnVudGltZS9HZXR0ZXJTZXR0ZXIuaDoKKyAgICAgICAgKEpTQzo6R2V0dGVyU2V0dGVyOjpHZXR0
ZXJTZXR0ZXIpOgorICAgICAgICAoSlNDOjpHZXR0ZXJTZXR0ZXI6OmlzU2V0dGVyTnVsbCk6Cisg
ICAgICAgIChKU0M6OkdldHRlclNldHRlcjo6c2V0U2V0dGVyKToKKyAgICAgICAgQ2hhbmdlIHNl
dHRlciBpbnN0YW5jZXMgZnJvbSB1c2luZyBOdWxsR2V0dGVyRnVuY3Rpb24gdG8gdXNpbmcgTnVs
bFNldHRlckZ1bmN0aW9uLgorCisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6
CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0KToKKyAgICAgICAgKiBydW50aW1l
L0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpudWxsU2V0
dGVyRnVuY3Rpb24pOgorICAgICAgICBBZGRlZCBtX251bGxTZXR0ZXJGdW5jdGlvbiBhbmQgYWNj
ZXNzb3IuCisKKyAgICAgICAgKiBydW50aW1lL051bGxTZXR0ZXJGdW5jdGlvbi5jcHA6IEFkZGVk
LgorICAgICAgICAoSlNDOjpHZXRDYWxsZXJTdHJpY3RuZXNzRnVuY3Rvcjo6R2V0Q2FsbGVyU3Ry
aWN0bmVzc0Z1bmN0b3IpOgorICAgICAgICAoSlNDOjpHZXRDYWxsZXJTdHJpY3RuZXNzRnVuY3Rv
cjo6b3BlcmF0b3IoKSk6CisgICAgICAgIChKU0M6OkdldENhbGxlclN0cmljdG5lc3NGdW5jdG9y
OjpjYWxsZXJJc1N0cmljdCk6CisgICAgICAgIChKU0M6OmNhbGxlcklzU3RyaWN0KToKKyAgICAg
ICAgTWV0aG9kIHRvIGRldGVybWluZSBpZiB0aGUgY2FsbGVyIGlzIGluIHN0cmljdCBtb2RlLgor
CisgICAgICAgIChKU0M6OmNhbGxSZXR1cm5VbmRlZmluZWQpOgorICAgICAgICAoSlNDOjpjb25z
dHJ1Y3RSZXR1cm5VbmRlZmluZWQpOgorICAgICAgICAoSlNDOjpOdWxsU2V0dGVyRnVuY3Rpb246
OmdldENhbGxEYXRhKToKKyAgICAgICAgKEpTQzo6TnVsbFNldHRlckZ1bmN0aW9uOjpnZXRDb25z
dHJ1Y3REYXRhKToKKyAgICAgICAgKiBydW50aW1lL051bGxTZXR0ZXJGdW5jdGlvbi5oOiBBZGRl
ZC4KKyAgICAgICAgKEpTQzo6TnVsbFNldHRlckZ1bmN0aW9uOjpjcmVhdGUpOgorICAgICAgICAo
SlNDOjpOdWxsU2V0dGVyRnVuY3Rpb246OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6
Ok51bGxTZXR0ZXJGdW5jdGlvbjo6TnVsbFNldHRlckZ1bmN0aW9uKToKKyAgICAgICAgQ2xhc3Mg
d2l0aCBoYW5kbGVycyBmb3IgYSBudWxsIHNldHRlci4KKwogMjAxNS0wMS0xOSAgQnJpYW4gSi4g
QnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rvbi5lZHU+CiAKICAgICAgICAgV2ViIFJlcGxheTogY29u
dmVydCB0byBpczxUPiBhbmQgZG93bmNhc3Q8VD4gZm9yIGRlY29kaW5nIHJlcGxheSBpbnB1dHMK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDE3ODY1MSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtNTE0LDYgKzUxNCw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9SVU5USU1FX1NPVVJDRVMKICAg
ICBydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwCiAgICAgcnVudGltZS9OYXRpdmVF
cnJvclByb3RvdHlwZS5jcHAKICAgICBydW50aW1lL051bGxHZXR0ZXJGdW5jdGlvbi5jcHAKKyAg
ICBydW50aW1lL051bGxTZXR0ZXJGdW5jdGlvbi5jcHAKICAgICBydW50aW1lL051bWJlckNvbnN0
cnVjdG9yLmNwcAogICAgIHJ1bnRpbWUvTnVtYmVyT2JqZWN0LmNwcAogICAgIHJ1bnRpbWUvTnVt
YmVyUHJvdG90eXBlLmNwcApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvago9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qCShyZXZpc2lvbiAxNzg2NTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC03
NzksNiArNzc5LDcgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcTmF0aXZl
RXJyb3JDb25zdHJ1Y3Rvci5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50
aW1lXE5hdGl2ZUVycm9yUHJvdG90eXBlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXHJ1bnRpbWVcTnVsbEdldHRlckZ1bmN0aW9uLmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXHJ1bnRpbWVcTnVsbFNldHRlckZ1bmN0aW9uLmNwcCIgLz4KICAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcTnVtYmVyQ29uc3RydWN0b3IuY3BwIiAvPgogICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxOdW1iZXJPYmplY3QuY3BwIiAvPgogICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxOdW1iZXJQcm90b3R5cGUuY3BwIiAvPgpAQCAt
MTU3Myw2ICsxNTc0LDcgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcTmF0
aXZlRXJyb3JDb25zdHJ1Y3Rvci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVu
dGltZVxOYXRpdmVFcnJvclByb3RvdHlwZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5ccnVudGltZVxOdWxsR2V0dGVyRnVuY3Rpb24uaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXHJ1bnRpbWVcTnVsbFNldHRlckZ1bmN0aW9uLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxydW50aW1lXE51bWJlckNvbnN0cnVjdG9yLmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxydW50aW1lXE51bWJlck9iamVjdC5oIiAvPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5ccnVudGltZVxOdW1iZXJQcm90b3R5cGUuaCIgLz4KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHBy
b2ouZmlsdGVycwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMJKHJldmlzaW9uIDE3
ODY1MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwkod29ya2luZyBjb3B5KQpAQCAtNzU5LDYgKzc1
OSw5IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXE51bGxHZXR0ZXJGdW5j
dGlvbi5jcHAiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBp
bGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXE51bGxTZXR0ZXJGdW5jdGlv
bi5jcHAiPgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+
CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXE51bWJlckNvbnN0cnVjdG9yLmNw
cCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAg
LTI3NzQsNiArMjc3Nyw5IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXE51
bGxHZXR0ZXJGdW5jdGlvbi5oIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgogICAg
IDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxOdWxsU2V0
dGVyRnVuY3Rpb24uaCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0Ns
SW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcTnVtYmVyQ29uc3Ry
dWN0b3IuaCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVk
ZT4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNzg2NTEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtOTE4LDYgKzkxOCw3IEBACiAJCTY1MTRGMjE5MThC
M0UxNjcwMDk4RkY4QiAvKiBCeXRlY29kZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDY1MTRGMjE3MThCM0UxNjcwMDk4RkY4QiAvKiBCeXRlY29kZXMu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2NTMw
M0Q2NDE0NDdCOUUxMDBEM0Y5MDQgLyogUGFyc2VyVG9rZW5zLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTMwM0Q2MzE0NDdCOUUxMDBEM0Y5MDQgLyog
UGFyc2VyVG9rZW5zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNjU0NkY1MjExQTMyQjMxMzAwNkYwN0Q1IC8qIE51bGxHZXR0ZXJGdW5jdGlvbi5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTQ2RjUx
RjFBMzJBNTlDMDA2RjA3RDUgLyogTnVsbEdldHRlckZ1bmN0aW9uLmNwcCAqLzsgfTsKKwkJNjU1
MjVGQzUxQTZERDgwMTAwN0I1NDk1IC8qIE51bGxTZXR0ZXJGdW5jdGlvbi5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTUyNUZDMzFBNkREM0IzMDA3
QjU0OTUgLyogTnVsbFNldHRlckZ1bmN0aW9uLmNwcCAqLzsgfTsKIAkJNjU1M0EzMzExN0ExRjFF
RTAwOENGNkYzIC8qIENvbW1vblNsb3dQYXRoc0V4Y2VwdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU1M0EzMkYxN0ExRjFFRTAwOENGNkYz
IC8qIENvbW1vblNsb3dQYXRoc0V4Y2VwdGlvbnMuY3BwICovOyB9OwogCQk2NTUzQTMzMjE3QTFG
MUVFMDA4Q0Y2RjMgLyogQ29tbW9uU2xvd1BhdGhzRXhjZXB0aW9ucy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU1M0EzMzAxN0ExRjFFRTAwOENGNkYz
IC8qIENvbW1vblNsb3dQYXRoc0V4Y2VwdGlvbnMuaCAqLzsgfTsKIAkJNjU1RUIyOUIxMENFMjU4
MTAwMUE5OTBFIC8qIE5vZGVzQ29kZWdlbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA2NTVFQjI5QTEwQ0UyNTgxMDAxQTk5MEUgLyogTm9kZXNDb2Rl
Z2VuLmNwcCAqLzsgfTsKQEAgLTI1NjUsNiArMjU2Niw4IEBACiAJCTY1NDAwQzEwMEE2OUJBRjIw
MDUwOTg4NyAvKiBQcm9wZXJ0eU5hbWVBcnJheS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUHJvcGVydHlOYW1lQXJyYXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNjU0NkY1MUYxQTMyQTU5QzAwNkYwN0Q1IC8qIE51bGxHZXR0ZXJGdW5jdGlvbi5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IGxpbmVFbmRpbmcgPSAwOyBwYXRoID0gTnVsbEdl
dHRlckZ1bmN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgeGNMYW5ndWFnZVNwZWNp
ZmljYXRpb25JZGVudGlmaWVyID0geGNvZGUubGFuZy5jcHA7IH07CiAJCTY1NDZGNTIwMUEzMkE1
OUMwMDZGMDdENSAvKiBOdWxsR2V0dGVyRnVuY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gTnVsbEdldHRlckZ1bmN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTY1NTI1RkMzMUE2REQzQjMwMDdCNTQ5NSAvKiBOdWxsU2V0dGVyRnVuY3Rpb24uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTnVsbFNldHRlckZ1bmN0aW9u
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNjU1MjVGQzQxQTZERDNCMzAwN0I1
NDk1IC8qIE51bGxTZXR0ZXJGdW5jdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBOdWxsU2V0dGVyRnVuY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NjU1M0EzMkYxN0ExRjFFRTAwOENGNkYzIC8qIENvbW1vblNsb3dQYXRoc0V4Y2VwdGlvbnMuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29tbW9uU2xvd1BhdGhzRXhj
ZXB0aW9ucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1NTNBMzMwMTdBMUYx
RUUwMDhDRjZGMyAvKiBDb21tb25TbG93UGF0aHNFeGNlcHRpb25zLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IENvbW1vblNsb3dQYXRoc0V4Y2VwdGlvbnMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjU1RUIyOUExMENFMjU4MTAwMUE5OTBFIC8qIE5vZGVzQ29k
ZWdlbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOb2Rlc0NvZGVn
ZW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDQ0NCw2ICs0NDQ3LDggQEAK
IAkJCQlCQzAyRTkwQjBFMTgzOURCMDAwRjkyOTcgLyogTmF0aXZlRXJyb3JQcm90b3R5cGUuaCAq
LywKIAkJCQk2NTQ2RjUxRjFBMzJBNTlDMDA2RjA3RDUgLyogTnVsbEdldHRlckZ1bmN0aW9uLmNw
cCAqLywKIAkJCQk2NTQ2RjUyMDFBMzJBNTlDMDA2RjA3RDUgLyogTnVsbEdldHRlckZ1bmN0aW9u
LmggKi8sCisJCQkJNjU1MjVGQzMxQTZERDNCMzAwN0I1NDk1IC8qIE51bGxTZXR0ZXJGdW5jdGlv
bi5jcHAgKi8sCisJCQkJNjU1MjVGQzQxQTZERDNCMzAwN0I1NDk1IC8qIE51bGxTZXR0ZXJGdW5j
dGlvbi5oICovLAogCQkJCUJDMjY4MEMyMEUxNkQ0RTkwMEEwNkU5MiAvKiBOdW1iZXJDb25zdHJ1
Y3Rvci5jcHAgKi8sCiAJCQkJQkMyNjgwQzMwRTE2RDRFOTAwQTA2RTkyIC8qIE51bWJlckNvbnN0
cnVjdG9yLmggKi8sCiAJCQkJRjY5MkE4NzAwMjU1NTk3RDAxRkY2MEY3IC8qIE51bWJlck9iamVj
dC5jcHAgKi8sCkBAIC03MTc5LDYgKzcxODQsNyBAQAogCQkJCTE0OEYyMUI3MTA3RUM1NDcwMDQy
RUMyQyAvKiBOb2Rlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2NTVFQjI5QjEwQ0UyNTgxMDAx
QTk5MEUgLyogTm9kZXNDb2RlZ2VuLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTY1NDZGNTIxMUEz
MkIzMTMwMDZGMDdENSAvKiBOdWxsR2V0dGVyRnVuY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJNjU1MjVGQzUxQTZERDgwMTAwN0I1NDk1IC8qIE51bGxTZXR0ZXJGdW5jdGlvbi5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkxNDQ2OURFMjEwN0VDN0U3MDA2NTA0NDYgLyogTnVtYmVyQ29uc3Ry
dWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ0NjlERTMxMDdFQzdFNzAwNjUwNDQ2IC8q
IE51bWJlck9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDQ2OURFNDEwN0VDN0U3MDA2
NTA0NDYgLyogTnVtYmVyUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmgJKHJldmlzaW9uIDE3ODY1
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCiAjaW5j
bHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJOdWxsR2V0dGVyRnVuY3Rpb24uaCIK
KyNpbmNsdWRlICJOdWxsU2V0dGVyRnVuY3Rpb24uaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIK
IAogbmFtZXNwYWNlIEpTQyB7CkBAIC00OCw3ICs0OSw3IEBAIHByaXZhdGU6CiAgICAgICAgIDog
SlNDZWxsKHZtLCB2bS5nZXR0ZXJTZXR0ZXJTdHJ1Y3R1cmUuZ2V0KCkpCiAgICAgewogICAgICAg
ICBtX2dldHRlci5zZXQodm0sIHRoaXMsIGdsb2JhbE9iamVjdC0+bnVsbEdldHRlckZ1bmN0aW9u
KCkpOwotICAgICAgICBtX3NldHRlci5zZXQodm0sIHRoaXMsIGdsb2JhbE9iamVjdC0+bnVsbEdl
dHRlckZ1bmN0aW9uKCkpOworICAgICAgICBtX3NldHRlci5zZXQodm0sIHRoaXMsIGdsb2JhbE9i
amVjdC0+bnVsbFNldHRlckZ1bmN0aW9uKCkpOwogICAgIH0KIAogcHVibGljOgpAQCAtNzMsNyAr
NzQsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgYm9vbCBpc0dldHRlck51bGwoKSBjb25zdCB7
IHJldHVybiAhIWpzRHluYW1pY0Nhc3Q8TnVsbEdldHRlckZ1bmN0aW9uKj4obV9nZXR0ZXIuZ2V0
KCkpOyB9Ci0gICAgYm9vbCBpc1NldHRlck51bGwoKSBjb25zdCB7IHJldHVybiAhIWpzRHluYW1p
Y0Nhc3Q8TnVsbEdldHRlckZ1bmN0aW9uKj4obV9zZXR0ZXIuZ2V0KCkpOyB9CisgICAgYm9vbCBp
c1NldHRlck51bGwoKSBjb25zdCB7IHJldHVybiAhIWpzRHluYW1pY0Nhc3Q8TnVsbFNldHRlckZ1
bmN0aW9uKj4obV9zZXR0ZXIuZ2V0KCkpOyB9CiAKICAgICAvLyBTZXQgdGhlIGdldHRlci4gSXQn
cyBvbmx5IHZhbGlkIHRvIGNhbGwgdGhpcyBpZiB5b3UndmUgbmV2ZXIgc2V0IHRoZSBnZXR0ZXIg
b24gdGhpcwogICAgIC8vIG9iamVjdC4KQEAgLTEwMSw3ICsxMDIsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzZXRTZXR0ZXIoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09i
amVjdCogc2V0dGVyKQogICAgIHsKICAgICAgICAgaWYgKCFzZXR0ZXIpCi0gICAgICAgICAgICBz
ZXR0ZXIgPSBqc0Nhc3Q8SlNPYmplY3QqPihnbG9iYWxPYmplY3QtPm51bGxHZXR0ZXJGdW5jdGlv
bigpKTsKKyAgICAgICAgICAgIHNldHRlciA9IGpzQ2FzdDxKU09iamVjdCo+KGdsb2JhbE9iamVj
dC0+bnVsbFNldHRlckZ1bmN0aW9uKCkpOwogCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzU2V0
dGVyTnVsbCgpKTsKICAgICAgICAgV1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAJKHJldmlz
aW9uIDE3ODY1MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAwLDYgKzEwMCw3IEBACiAjaW5jbHVkZSAiTmF0
aXZlRXJyb3JDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIk5hdGl2ZUVycm9yUHJvdG90eXBlLmgi
CiAjaW5jbHVkZSAiTnVsbEdldHRlckZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiTnVsbFNldHRlckZ1
bmN0aW9uLmgiCiAjaW5jbHVkZSAiTnVtYmVyQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJOdW1i
ZXJQcm90b3R5cGUuaCIKICNpbmNsdWRlICJPYmpDQ2FsbGJhY2tGdW5jdGlvbi5oIgpAQCAtMjM0
LDYgKzIzNSw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQogICAgIG1fY2Fs
bEZ1bmN0aW9uLnNldCh2bSwgdGhpcywgY2FsbEZ1bmN0aW9uKTsKICAgICBtX2FwcGx5RnVuY3Rp
b24uc2V0KHZtLCB0aGlzLCBhcHBseUZ1bmN0aW9uKTsKICAgICBtX251bGxHZXR0ZXJGdW5jdGlv
bi5zZXQodm0sIHRoaXMsIE51bGxHZXR0ZXJGdW5jdGlvbjo6Y3JlYXRlKHZtLCBOdWxsR2V0dGVy
RnVuY3Rpb246OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5n
ZXQoKSkpKTsKKyAgICBtX251bGxTZXR0ZXJGdW5jdGlvbi5zZXQodm0sIHRoaXMsIE51bGxTZXR0
ZXJGdW5jdGlvbjo6Y3JlYXRlKHZtLCBOdWxsU2V0dGVyRnVuY3Rpb246OmNyZWF0ZVN0cnVjdHVy
ZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSkpKTsKICAgICBtX29iamVjdFBy
b3RvdHlwZS5zZXQodm0sIHRoaXMsIE9iamVjdFByb3RvdHlwZTo6Y3JlYXRlKHZtLCB0aGlzLCBP
YmplY3RQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywganNOdWxsKCkpKSk7CiAg
ICAgR2V0dGVyU2V0dGVyKiBwcm90b0FjY2Vzc29yID0gR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0s
IHRoaXMpOwogICAgIHByb3RvQWNjZXNzb3ItPnNldEdldHRlcih2bSwgdGhpcywgSlNGdW5jdGlv
bjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJpbmcoKSwgZ2xvYmFsRnVuY1Byb3RvR2V0dGVyKSk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmgJKHJldmlzaW9uIDE3ODY1MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTgwLDYgKzgwLDcgQEAgY2xhc3MgUmVn
RXhwQ29uc3RydWN0b3I7CiBjbGFzcyBSZWdFeHBQcm90b3R5cGU7CiBjbGFzcyBTb3VyY2VDb2Rl
OwogY2xhc3MgTnVsbEdldHRlckZ1bmN0aW9uOworY2xhc3MgTnVsbFNldHRlckZ1bmN0aW9uOwog
c3RydWN0IEFjdGl2YXRpb25TdGFja05vZGU7CiBzdHJ1Y3QgSGFzaFRhYmxlOwogCkBAIC0xNzUs
NiArMTc2LDcgQEAgcHJvdGVjdGVkOgogICAgIFdyaXRlQmFycmllcjxPYmplY3RDb25zdHJ1Y3Rv
cj4gbV9vYmplY3RDb25zdHJ1Y3RvcjsKIAogICAgIFdyaXRlQmFycmllcjxOdWxsR2V0dGVyRnVu
Y3Rpb24+IG1fbnVsbEdldHRlckZ1bmN0aW9uOworICAgIFdyaXRlQmFycmllcjxOdWxsU2V0dGVy
RnVuY3Rpb24+IG1fbnVsbFNldHRlckZ1bmN0aW9uOwogCiAgICAgV3JpdGVCYXJyaWVyPEpTRnVu
Y3Rpb24+IG1fZXZhbEZ1bmN0aW9uOwogICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBtX2Nh
bGxGdW5jdGlvbjsKQEAgLTM3NCw2ICszNzYsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIE51
bGxHZXR0ZXJGdW5jdGlvbiogbnVsbEdldHRlckZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9u
dWxsR2V0dGVyRnVuY3Rpb24uZ2V0KCk7IH0KKyAgICBOdWxsU2V0dGVyRnVuY3Rpb24qIG51bGxT
ZXR0ZXJGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbnVsbFNldHRlckZ1bmN0aW9uLmdldCgp
OyB9CiAKICAgICBKU0Z1bmN0aW9uKiBldmFsRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2V2
YWxGdW5jdGlvbi5nZXQoKTsgfQogICAgIEpTRnVuY3Rpb24qIGNhbGxGdW5jdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1fY2FsbEZ1bmN0aW9uLmdldCgpOyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9OdWxsU2V0dGVyRnVuY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bGxTZXR0ZXJGdW5jdGlvbi5jcHAJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdWxsU2V0dGVyRnVuY3Rpb24u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
TnVsbFNldHRlckZ1bmN0aW9uLmgiCisKKyNpbmNsdWRlICJFcnJvci5oIgorI2luY2x1ZGUgIkpT
Q0lubGluZXMuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIlN0
YWNrVmlzaXRvci5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIE51bGxT
ZXR0ZXJGdW5jdGlvbjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCAwLCBD
UkVBVEVfTUVUSE9EX1RBQkxFKE51bGxTZXR0ZXJGdW5jdGlvbikgfTsKKworCitjbGFzcyBHZXRD
YWxsZXJTdHJpY3RuZXNzRnVuY3RvciB7CitwdWJsaWM6CisgICAgR2V0Q2FsbGVyU3RyaWN0bmVz
c0Z1bmN0b3IoKQorICAgICAgICA6IG1faXRlcmF0aW9ucygwKQorICAgICAgICAsIG1fY2FsbGVy
SXNTdHJpY3QoZmFsc2UpCisgICAgeworICAgIH0KKworICAgIFN0YWNrVmlzaXRvcjo6U3RhdHVz
IG9wZXJhdG9yKCkoU3RhY2tWaXNpdG9yJiB2aXNpdG9yKQorICAgIHsKKyAgICAgICAgKyttX2l0
ZXJhdGlvbnM7CisgICAgICAgIGlmIChtX2l0ZXJhdGlvbnMgPCAyKQorICAgICAgICAgICAgcmV0
dXJuIFN0YWNrVmlzaXRvcjo6Q29udGludWU7CisKKyAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxv
Y2sgPSB2aXNpdG9yLT5jb2RlQmxvY2soKTsKKyAgICAgICAgbV9jYWxsZXJJc1N0cmljdCA9IGNv
ZGVCbG9jayAmJiBjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpOworICAgICAgICByZXR1cm4gU3Rh
Y2tWaXNpdG9yOjpEb25lOworICAgIH0KKworICAgIGJvb2wgY2FsbGVySXNTdHJpY3QoKSBjb25z
dCB7IHJldHVybiBtX2NhbGxlcklzU3RyaWN0OyB9CisKK3ByaXZhdGU6CisgICAgaW50IG1faXRl
cmF0aW9uczsKKyAgICBib29sIG1fY2FsbGVySXNTdHJpY3Q7Cit9OworCitzdGF0aWMgYm9vbCBj
YWxsZXJJc1N0cmljdChFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgR2V0Q2FsbGVyU3RyaWN0bmVz
c0Z1bmN0b3IgaXRlcjsKKyAgICBleGVjLT5pdGVyYXRlKGl0ZXIpOworICAgIHJldHVybiBpdGVy
LmNhbGxlcklzU3RyaWN0KCk7Cit9CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGNhbGxSZXR1cm5VbmRlZmluZWQoRXhlY1N0YXRlKiBleGVjKQoreworICAgIGlmIChjYWxs
ZXJJc1N0cmljdChleGVjKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5
cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlNldHRpbmcgYSBwcm9wZXJ0eSB0aGF0IGhhcyBv
bmx5IGEgZ2V0dGVyIikpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOworfQorCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RS
ZXR1cm5VbmRlZmluZWQoRXhlY1N0YXRlKiBleGVjKQoreworICAgIGlmIChjYWxsZXJJc1N0cmlj
dChleGVjKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihl
eGVjLCBBU0NJSUxpdGVyYWwoIlNldHRpbmcgYSBwcm9wZXJ0eSB0aGF0IGhhcyBvbmx5IGEgZ2V0
dGVyIikpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworfQor
CitDYWxsVHlwZSBOdWxsU2V0dGVyRnVuY3Rpb246OmdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxE
YXRhJiBjYWxsRGF0YSkKK3sKKyAgICBjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjYWxsUmV0
dXJuVW5kZWZpbmVkOworICAgIHJldHVybiBDYWxsVHlwZUhvc3Q7Cit9CisKK0NvbnN0cnVjdFR5
cGUgTnVsbFNldHRlckZ1bmN0aW9uOjpnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVj
dERhdGEmIGNvbnN0cnVjdERhdGEpCit7CisgICAgY29uc3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rp
b24gPSBjb25zdHJ1Y3RSZXR1cm5VbmRlZmluZWQ7CisgICAgcmV0dXJuIENvbnN0cnVjdFR5cGVI
b3N0OworfQorCit9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdWxsU2V0
dGVyRnVuY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9OdWxsU2V0dGVyRnVuY3Rpb24uaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL051bGxTZXR0ZXJGdW5jdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIE51bGxTZXR0ZXJGdW5jdGlvbl9oCisjZGVmaW5lICBOdWxsU2V0dGVyRnVuY3Rpb25f
aAorCisjaW5jbHVkZSAiSW50ZXJuYWxGdW5jdGlvbi5oIgorCituYW1lc3BhY2UgSlNDIHsKKwor
Y2xhc3MgTnVsbFNldHRlckZ1bmN0aW9uIDogcHVibGljIEludGVybmFsRnVuY3Rpb24geworcHVi
bGljOgorICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNlOworCisgICAgc3RhdGljIE51
bGxTZXR0ZXJGdW5jdGlvbiogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisg
ICAgeworICAgICAgICBOdWxsU2V0dGVyRnVuY3Rpb24qIGZ1bmN0aW9uID0gbmV3IChOb3ROdWxs
LCBhbGxvY2F0ZUNlbGw8IE51bGxTZXR0ZXJGdW5jdGlvbj4odm0uaGVhcCkpICBOdWxsU2V0dGVy
RnVuY3Rpb24odm0sIHN0cnVjdHVyZSk7CisgICAgICAgIGZ1bmN0aW9uLT5maW5pc2hDcmVhdGlv
bih2bSwgU3RyaW5nKCkpOworICAgICAgICByZXR1cm4gZnVuY3Rpb247CisgICAgfQorCisgICAg
REVDTEFSRV9FWFBPUlRfSU5GTzsKKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVj
dHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90
eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxP
YmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBp
bmZvKCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBOdWxsU2V0dGVyRnVuY3Rpb24oVk0mIHZt
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCisg
ICAgeworICAgIH0KKyAgICBzdGF0aWMgQ29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpT
Q2VsbCosIENvbnN0cnVjdERhdGEmKTsKKyAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEo
SlNDZWxsKiwgQ2FsbERhdGEmKTsKK307CisKK30KKworI2VuZGlmIC8vIE51bGxTZXR0ZXJGdW5j
dGlvbl9oCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNzg2ODcpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMSBAQAorMjAxNS0wMS0xOSAgTWljaGFlbCBT
YWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KKworICAgICAgICBBICJjYWNoZWQiIG51bGwgc2V0
dGVyIHNob3VsZCB0aHJvdyBhIFR5cGVFeGNlcHRpb24gd2hlbiBjYWxsZWQgaW4gc3RyaWN0IG1v
ZGUgYW5kIGRvZXNuJ3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEzOTQxOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIE5ldyByZWdyZXNzaW9uIHRlc3QuCisKKyAgICAgICAgKiBqcy9yZWdyZXNzLTEzOTQx
OC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3MtMTM5NDE4Lmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9yZWdyZXNzLTEzOTQxOC5qczogQWRk
ZWQuCisgICAgICAgIChJbm5lck9iamVjdE5vU2V0dGVyKToKKyAgICAgICAgKElubmVyT2JqZWN0
Tm9TZXR0ZXIucHJvdG90eXBlLmdldCBlbmFibGVkKToKKyAgICAgICAgKFN0cmljdE91dGVyT2Jq
ZWN0KToKKyAgICAgICAgKFN0cmljdE91dGVyT2JqZWN0LnByb3RvdHlwZS5nZXQgZW5hYmxlZCk6
CisgICAgICAgIChTdHJpY3RPdXRlck9iamVjdC5wcm90b3R5cGUuc2V0IGVuYWJsZWQpOgorCiAy
MDE1LTAxLTE5ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgogCiAgICAgICAg
IFtXaW5dIFVucmV2aWV3ZWQgV2luZG93cyBnYXJkZW5pbmcuCkluZGV4OiBMYXlvdXRUZXN0cy9q
cy9yZWdyZXNzLTEzOTQxOC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
anMvcmVncmVzcy0xMzk0MTgtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvanMvcmVncmVzcy0xMzk0MTgtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsOSBAQAorUmVncmVzc2lvbiB0ZXN0IGZvciBodHRwczovL3dlYmtpdC5vcmcvYi8xMzk0MTgu
CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVz
cy0xMzk0MTguaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzLTEzOTQx
OC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy0xMzk0MTguaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMg
Ii0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4u
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxz
Y3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvcmVncmVzcy0xMzk0MTguanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL3JlZ3Jlc3MtMTM5
NDE4LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9yZWdyZXNz
LTEzOTQxOC5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9y
ZWdyZXNzLTEzOTQxOC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU0IEBACitkZXNjcmlw
dGlvbigKKyJSZWdyZXNzaW9uIHRlc3QgZm9yIGh0dHBzOi8vd2Via2l0Lm9yZy9iLzEzOTQxOC4i
CispOworCitmdW5jdGlvbiBJbm5lck9iamVjdE5vU2V0dGVyKCkKK3sKKyAgICB0aGlzLl9lbmFi
bGVkID0gZmFsc2U7Cit9CisKK0lubmVyT2JqZWN0Tm9TZXR0ZXIucHJvdG90eXBlID0geworICAg
IGdldCBlbmFibGVkKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9lbmFibGVkOworICAg
IH0KK30KKworZnVuY3Rpb24gU3RyaWN0T3V0ZXJPYmplY3QoaW5uZXIpCit7CisgICAgdGhpcy5f
aW5uZXJPYmplY3QgPSBpbm5lcjsKK30KKworU3RyaWN0T3V0ZXJPYmplY3QucHJvdG90eXBlID0g
eworICAgIGdldCBlbmFibGVkKCkKKyAgICB7CisgICAgICAgICJ1c2Ugc3RyaWN0IjsKKyAgICAg
ICAgcmV0dXJuIHRoaXMuX2lubmVyT2JqZWN0LmVuYWJsZWQ7CisgICAgfSwKKworICAgIHNldCBl
bmFibGVkKHgpCisgICAgeworICAgICAgICAidXNlIHN0cmljdCI7CisgICAgICAgIHRoaXMuX2lu
bmVyT2JqZWN0LmVuYWJsZWQgPSB4OworICAgIH0KK30KKwordmFyIGlubmVyTm9TZXR0ZXIgPSBu
ZXcgSW5uZXJPYmplY3ROb1NldHRlcjsKK3ZhciBzdHJpY3RPdXRlck5vSW5uZXJTZXR0ZXIgPSBu
ZXcgU3RyaWN0T3V0ZXJPYmplY3QoaW5uZXJOb1NldHRlcik7CisKK2ZvciAodmFyIGkgPSAwOyBp
IDwgMTAwMDsgKytpKSB7CisgICAgdmFyICBub0V4Y2VwdGlvbldpdGhNaXNzaW5nU2V0dGVyID0g
Ik1pc3Npbmcgc2V0dGVyIGNhbGxlZCB3aXRoIHN0cmljdCBtb2RlIHNob3VsZCB0aHJvdyBleGNl
cHRpb24gYW5kIGRpZG4ndCEiOworICAgIHRyeSB7CisgICAgICAgIHN0cmljdE91dGVyTm9Jbm5l
clNldHRlci5lbmFibGVkID0gdHJ1ZTsKKyAgICAgICAgdGhyb3cgIG5vRXhjZXB0aW9uV2l0aE1p
c3NpbmdTZXR0ZXI7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBpZiAoZSBpbnN0YW5jZW9m
IFR5cGVFcnJvcikKKyAgICAgICAgICAgIDsgLy8gVGhpcyBpcyB0aGUgZXhwZWN0ZWQgZXhjZXB0
aW9uCisgICAgICAgIGVsc2UgaWYgKCEoKGUgaW5zdGFuY2VvZiBTdHJpbmcpICYmIChlID09ICBu
b0V4Y2VwdGlvbldpdGhNaXNzaW5nU2V0dGVyKSkpCisgICAgICAgICAgICB0aHJvdyBlIC8vIHJl
dGhyb3cgIm1pc3NpbmcgZXhjZXB0aW9uIiBleGNlcHRpb24KKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgdGhyb3cgIk1pc3Npbmcgc2V0dGVyIGNhbGxlZCB3aXRoIHN0cmljdCBtb2RlIHRocmV3
IHdyb25nIGV4Y2VwdGlvbjogIiArIGU7CisgICAgfQorICAgIGlmIChzdHJpY3RPdXRlck5vSW5u
ZXJTZXR0ZXIuZW5hYmxlZCkKKyAgICAgICAgdGhyb3cgIlNldHRlciB1bmV4cGVjdGVkbHkgbW9k
aWZpZWQgdmFsdWUiOworfQo=
</data>
<flag name="review"
          id="269881"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
      

    </bug>

</bugzilla>