<?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>166879</bug_id>
          
          <creation_ts>2017-01-09 23:12:50 -0800</creation_ts>
          <short_desc>Calling async arrow function which is in a class&apos;s member function will cause error</short_desc>
          <delta_ts>2017-05-21 14:08:18 -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>JavaScriptCore</component>
          <version>WebKit 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="Shuan Zhao">hszhsh</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>caitp</cc>
    
    <cc>commit-queue</cc>
    
    <cc>gskachkov</cc>
    
    <cc>keith_miller</cc>
    
    <cc>lzsoft.cja</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1265300</commentid>
    <comment_count>0</comment_count>
    <who name="Shuan Zhao">hszhsh</who>
    <bug_when>2017-01-09 23:12:50 -0800</bug_when>
    <thetext>The test code is as follows. When I run the code, I got the error “Can&apos;t find private variable: @derivedConstructor”.

function doSomething(callback) {
    callback();
}

class Test {
    testFunc() {
        doSomething(async () =&gt; {
            console.log(&quot;testFunc&quot;);
            await sleep(2);
            console.log(&quot;testFunc end&quot;);
        });
    }
}

let test = new Test();
test.testFunc();</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1265323</commentid>
    <comment_count>1</comment_count>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2017-01-10 02:53:38 -0800</bug_when>
    <thetext>I think root of the issue because property @derivedConstructor is not put to the virtual scope in testFunc. When we implemented simple arrow function we check if we super used inside and do put derivedConstructor to the virtual scope, before it it used within arrow function. 
So I think solution is adding additional check (generator.isSuperUsedInInnerArrowFunction()) in this line https://github.com/WebKit/webkit/blob/master/Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp#L3505 
If I&apos;ll try to prepare fix, but it will be later today.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1265353</commentid>
    <comment_count>2</comment_count>
      <attachid>298461</attachid>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2017-01-10 06:48:45 -0800</bug_when>
    <thetext>Created attachment 298461
Patch

Fix for the issue</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1265511</commentid>
    <comment_count>3</comment_count>
      <attachid>298461</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-01-10 13:14:36 -0800</bug_when>
    <thetext>Comment on attachment 298461
Patch

Clearing flags on attachment: 298461

Committed r210558: &lt;http://trac.webkit.org/changeset/210558&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1265512</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-01-10 13:14:40 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1265653</commentid>
    <comment_count>5</comment_count>
    <who name="Shuan Zhao">hszhsh</who>
    <bug_when>2017-01-10 18:56:51 -0800</bug_when>
    <thetext>I see this issue is solved, but there&apos;s another problem. I have updated the test code:

function runSomething(callback) {
	callback();
}

class Test {
	testFunc() {
		this.prop = &quot;123&quot;;
		runSomething(async () =&gt; {
			console.log(&quot;callback &quot; + this.prop); // It&apos;s ok here
			await sleep(2);
			console.log(&quot;callback end &quot; + this.prop); // TypeError: undefined is not an object (evaluating &apos;this.prop&apos;)
		});
	}
}

let t = new Test();
t.testFunc();

Is it another bug? The code above is ok with V8.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1265697</commentid>
    <comment_count>6</comment_count>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2017-01-11 00:02:04 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; I see this issue is solved, but there&apos;s another problem. I have updated the
&gt; test code:
&gt; 
&gt; function runSomething(callback) {
&gt; 	callback();
&gt; }
&gt; 
&gt; class Test {
&gt; 	testFunc() {
&gt; 		this.prop = &quot;123&quot;;
&gt; 		runSomething(async () =&gt; {
&gt; 			console.log(&quot;callback &quot; + this.prop); // It&apos;s ok here
&gt; 			await sleep(2);
&gt; 			console.log(&quot;callback end &quot; + this.prop); // TypeError: undefined is not
&gt; an object (evaluating &apos;this.prop&apos;)
&gt; 		});
&gt; 	}
&gt; }
&gt; 
&gt; let t = new Test();
&gt; t.testFunc();
&gt; 
&gt; Is it another bug? The code above is ok with V8.

Yeah, unfortunately it is another bug. Async arrow function &apos;lost&apos; _this_, by some reason, during restore state after await.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1311147</commentid>
    <comment_count>7</comment_count>
    <who name="JingAn Chen">lzsoft.cja</who>
    <bug_when>2017-05-21 11:38:43 -0700</bug_when>
    <thetext>This bug is confirmed fixed in Safari Tech Preview as on May 21st, 2017. However, the current Safari macOS/iOS (10.1.1/10.3.2) still has it. Is there an ETA for the fix to be landed on normal Safari? In other words, how often does the push happens from Safari Tech Preview to Safari? Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1311161</commentid>
    <comment_count>8</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-05-21 14:08:18 -0700</bug_when>
    <thetext>(In reply to JingAn Chen from comment #7)
&gt; This bug is confirmed fixed in Safari Tech Preview as on May 21st, 2017.
&gt; However, the current Safari macOS/iOS (10.1.1/10.3.2) still has it. Is there
&gt; an ETA for the fix to be landed on normal Safari? In other words, how often
&gt; does the push happens from Safari Tech Preview to Safari? Thanks!

This is the WebKit bug tracker. We don&apos;t comment on Safari release plans here.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>298461</attachid>
            <date>2017-01-10 06:48:45 -0800</date>
            <delta_ts>2017-01-10 13:14:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-166879-20170110164708.patch</filename>
            <type>text/plain</type>
            <size>8847</size>
            <attacher name="GSkachkov">gskachkov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEwMTQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
NjcyZGU4MjE5NjA1Y2I5Y2VjMWI4MTEyNjExYWEwNzhjYzRmZDVhLi44MmI4YWQ4MWJmMWMxMzY2
YWM1OTQxYThkYWViMDI4ZjJjMzlmMzFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOSBAQAorMjAxNy0wMS0xMCAgU2thY2hrb3YgT2xla3NhbmRyICA8Z3NrYWNoa292QGdt
YWlsLmNvbT4KKworICAgICAgICBDYWxsaW5nIGFzeW5jIGFycm93IGZ1bmN0aW9uIHdoaWNoIGlz
IGluIGEgY2xhc3MncyBtZW1iZXIgZnVuY3Rpb24gd2lsbCBjYXVzZSBlcnJvcgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY2ODc5CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ3VycmVudCBwYXRjaCBmaXhl
ZCBsb2FkaW5nICdzdXBlcicgaW4gYXN5bmMgYXJyb3cgZnVuY3Rpb24uIEVycm9yZWQgYXBwZWFy
IGJlY3Vhc2UgCisgICAgICAgIHN1cGVyIHdhcyBsb2FkZWQgYWx3YXlzIG5ldmVydGhlcmxlc3Mg
aWYgaXQgdXNlZCBpbiBhc3luYyBhcnJvdyBmdW5jdGlvbiBvciBub3QsIGJ1dCBieXRlY29tcGls
ZXIKKyAgICAgICAgcHV0IHRvIGFycm93IGZ1bmN0aW9uIGNvbnRleHQgb25seSBpZiBpdCB1c2Vk
IHdpdGhpbiBhcnJvdyBmdW5jdGlvbi4gU28gdG8gZml4IHRoaXMgaXNzdWUgd2UgbmVlZCB0byAK
KyAgICAgICAgY2hlY2sgaWYgc3VwZXIgd2FzIHVzZWQgaW4gYXJyb3cgZnVuY3Rpb24uIAorCisg
ICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgICogYnl0
ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uTm9kZTo6
ZW1pdEJ5dGVjb2RlKToKKwogMjAxNy0wMS0wOSAgU2thY2hrb3YgT2xla3NhbmRyICA8Z3NrYWNo
a292QGdtYWlsLmNvbT4KIAogICAgICAgICBbRVNOZXh0XSBBc3luYyBpdGVyYXRpb24gLSBJbXBs
ZW1lbnQgQXN5bmMgR2VuZXJhdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggMjhmMzY2YWFlMjQ4ODg2MWRi
NjE2OTg5MjQxZjVmYmVlODhjODk5Ny4uOGNmNzhlMjVjOWQ2MjNkNzJjMDcwNzFlNDI1MGVlZmE5
NDdmMWE3MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtOTExLDEwICs5MTEsMTAgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIHZvaWQgZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lvbkNvbW1vbihSZWdpc3Rl
cklEKiwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqKTsKICAgICAgICAgCiAgICAgICAgIGJvb2wgaXNO
ZXdUYXJnZXRVc2VkSW5Jbm5lckFycm93RnVuY3Rpb24oKTsKLSAgICAgICAgYm9vbCBpc1N1cGVy
VXNlZEluSW5uZXJBcnJvd0Z1bmN0aW9uKCk7CiAgICAgICAgIGJvb2wgaXNBcmd1bWVudHNVc2Vk
SW5Jbm5lckFycm93RnVuY3Rpb24oKTsKIAogICAgIHB1YmxpYzoKKyAgICAgICAgYm9vbCBpc1N1
cGVyVXNlZEluSW5uZXJBcnJvd0Z1bmN0aW9uKCk7CiAgICAgICAgIGJvb2wgaXNTdXBlckNhbGxV
c2VkSW5Jbm5lckFycm93RnVuY3Rpb24oKTsKICAgICAgICAgYm9vbCBpc1RoaXNVc2VkSW5Jbm5l
ckFycm93RnVuY3Rpb24oKTsKICAgICAgICAgdm9pZCBwdXNoTGV4aWNhbFNjb3BlKFZhcmlhYmxl
RW52aXJvbm1lbnROb2RlKiwgVERaQ2hlY2tPcHRpbWl6YXRpb24sIE5lc3RlZFNjb3BlVHlwZSA9
IE5lc3RlZFNjb3BlVHlwZTo6SXNOb3ROZXN0ZWQsIFJlZ2lzdGVySUQqKiBjb25zdGFudFN5bWJv
bFRhYmxlUmVzdWx0ID0gbnVsbHB0ciwgYm9vbCBzaG91bGRJbml0aWFsaXplQmxvY2tTY29wZWRG
dW5jdGlvbnMgPSB0cnVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCBiNjQxNTA5NTViNmUzOWM0OTZkYTIyYmQzMWZi
ZTk3ZTYzMDZlMGM4Li5iZTc4MzA5NDIyNTNhYzZmMWI4NjllN2EzYjQ2ZGUyMWJlODdjNWZiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdl
bi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVn
ZW4uY3BwCkBAIC0zNTE1LDggKzM1MTUsNyBAQCB2b2lkIEZ1bmN0aW9uTm9kZTo6ZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqKQogICAgICAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gbmV4dCA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKICAgICAg
ICAgZ2VuZXJhdG9yLmVtaXROb2RlKG5leHQuZ2V0KCksIGZ1bmNFeHByKTsKIAotICAgICAgICBp
ZiAoZ2VuZXJhdG9yLnN1cGVyQmluZGluZygpID09IFN1cGVyQmluZGluZzo6TmVlZGVkIHx8IGdl
bmVyYXRvci5wYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jQXJyb3dGdW5jdGlv
bk1vZGUpIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBEb24ndCBhbHdheXMgbG9hZCBob21lIG9i
amVjdCBmb3IgYXN5bmMgYXJyb3dzCisgICAgICAgIGlmIChnZW5lcmF0b3Iuc3VwZXJCaW5kaW5n
KCkgPT0gU3VwZXJCaW5kaW5nOjpOZWVkZWQgfHwgKGdlbmVyYXRvci5wYXJzZU1vZGUoKSA9PSBT
b3VyY2VQYXJzZU1vZGU6OkFzeW5jQXJyb3dGdW5jdGlvbk1vZGUgJiYgZ2VuZXJhdG9yLmlzU3Vw
ZXJVc2VkSW5Jbm5lckFycm93RnVuY3Rpb24oKSkpIHsKICAgICAgICAgICAgIFJlZlB0cjxSZWdp
c3RlcklEPiBob21lT2JqZWN0ID0gZW1pdEhvbWVPYmplY3RGb3JDYWxsZWUoZ2VuZXJhdG9yKTsK
ICAgICAgICAgICAgIGVtaXRQdXRIb21lT2JqZWN0KGdlbmVyYXRvciwgbmV4dC5nZXQoKSwgaG9t
ZU9iamVjdC5nZXQoKSk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9n
IGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYzFkNjc2MDAzNzcyMTk5YzNkNzdkYWY2MjI0MTE0
MDIzNTFmMmRiNi4uNjUzOWFjZjk5ZjQ1YjhmZDY3ZmE5ZDg2NjU2ZmFhYTM1MTJmM2M0NCAxMDA2
NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNSBAQAorMjAxNy0wMS0xMCAgU2thY2hrb3YgT2xla3NhbmRyICA8Z3NrYWNoa292QGdt
YWlsLmNvbT4KKworICAgICAgICBDYWxsaW5nIGFzeW5jIGFycm93IGZ1bmN0aW9uIHdoaWNoIGlz
IGluIGEgY2xhc3MncyBtZW1iZXIgZnVuY3Rpb24gd2lsbCBjYXVzZSBlcnJvcgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY2ODc5CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdHJlc3MvYXN5bmMtYXJy
b3ctZnVuY3Rpb25zLWxleGljYWwtYmluZGluZy1pbi1jbGFzcy5qczogQWRkZWQuCisgICAgICAg
IChzaG91bGRCZSk6CisgICAgICAgIChzaG91bGRCZUFzeW5jKToKKyAgICAgICAgKEJhc2VDbGFz
cy5wcm90b3R5cGUuYmFzZUNsYXNzVmFsdWUpOgorICAgICAgICAoQmFzZUNsYXNzLnByb3RvdHlw
ZS5nZXQgcHJvcGVydHkpOgorICAgICAgICAoQmFzZUNsYXNzKToKKyAgICAgICAgKHJ1blNvbWV0
aGluZyk6CisgICAgICAgIChDaGlsZENsYXNzLnByb3RvdHlwZS5jbGFzc1ZhbHVlKToKKyAgICAg
ICAgKENoaWxkQ2xhc3MucHJvdG90eXBlLmdldCBjbGFzc1Byb3BlcnR5KToKKyAgICAgICAgKENo
aWxkQ2xhc3MucHJvdG90eXBlLmFzeW5jVmFsdWVFeHApOgorICAgICAgICAoQ2hpbGRDbGFzcy5w
cm90b3R5cGUuYXN5bmNWYWx1ZUJvZHkpOgorICAgICAgICAoQ2hpbGRDbGFzcy5wcm90b3R5cGUu
YXN5bmNUaGlzUHJvcEV4cCk6CisgICAgICAgIChDaGlsZENsYXNzLnByb3RvdHlwZS5hc3luY1Ro
aXNQcm9wQm9keSk6CisgICAgICAgIChDaGlsZENsYXNzLnByb3RvdHlwZS5hc3luY1RoaXNQcm9w
SW5FdmFsRXhwKToKKyAgICAgICAgKENoaWxkQ2xhc3MucHJvdG90eXBlLmFzeW5jVGhpc1Byb3BJ
bkV2YWxCb2R5KToKKyAgICAgICAgKENoaWxkQ2xhc3MucHJvdG90eXBlLmFzeW5jVGhpc1ZhbHVl
RXhwKToKKyAgICAgICAgKENoaWxkQ2xhc3MucHJvdG90eXBlLmFzeW5jVGhpc1ZhbHVlQm9keSk6
CisgICAgICAgIChDaGlsZENsYXNzLnByb3RvdHlwZS5hc3luY1RoaXNWYWx1ZUluRXZhbEV4cCk6
CisgICAgICAgIChDaGlsZENsYXNzLnByb3RvdHlwZS5hc3luY1RoaXNWYWx1ZUluRXZhbEJvZHkp
OgorICAgICAgICAoQ2hpbGRDbGFzcyk6CisgICAgICAgIChDaGlsZENsYXNzMik6CisgICAgICAg
IChDaGlsZENsYXNzMi5wcm90b3R5cGUuY2xhc3NWYWx1ZSk6CisgICAgICAgIChDaGlsZENsYXNz
Mi5wcm90b3R5cGUuZ2V0IGNsYXNzUHJvcGVydHkpOgorICAgICAgICAqIHN0cmVzcy9hc3luYy1h
cnJvdy1mdW5jdGlvbnMtbGV4aWNhbC1zdXBlci1iaW5kaW5nLmpzOgorCiAyMDE3LTAxLTA5ICBT
a2FjaGtvdiBPbGVrc2FuZHIgIDxnc2thY2hrb3ZAZ21haWwuY29tPgogCiAgICAgICAgIFtFU05l
eHRdIEFzeW5jIGl0ZXJhdGlvbiAtIEltcGxlbWVudCBBc3luYyBHZW5lcmF0b3IKZGlmZiAtLWdp
dCBhL0pTVGVzdHMvc3RyZXNzL2FzeW5jLWFycm93LWZ1bmN0aW9ucy1sZXhpY2FsLWJpbmRpbmct
aW4tY2xhc3MuanMgYi9KU1Rlc3RzL3N0cmVzcy9hc3luYy1hcnJvdy1mdW5jdGlvbnMtbGV4aWNh
bC1iaW5kaW5nLWluLWNsYXNzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE2ZmMwZGZkNTUwOWUzNjBkOWZkMWYz
OTA3MGYxMjI1NDhiMTEwOTgKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9hc3lu
Yy1hcnJvdy1mdW5jdGlvbnMtbGV4aWNhbC1iaW5kaW5nLWluLWNsYXNzLmpzCkBAIC0wLDAgKzEs
MTAzIEBACitmdW5jdGlvbiBzaG91bGRCZShleHBlY3RlZCwgYWN0dWFsLCBtc2cpIHsKKyAgICBp
ZiAobXNnID09PSB2b2lkIDApCisgICAgICAgIG1zZyA9ICIiOworICAgIGVsc2UKKyAgICAgICAg
bXNnID0gIiBmb3IgIiArIG1zZzsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCJiYWQgdmFsdWUiICsgbXNnICsgIjogIiArIGFjdHVhbCArICIu
IEV4cGVjdGVkICIgKyBleHBlY3RlZCk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZEJlQXN5bmMoZXhw
ZWN0ZWQsIHJ1biwgbXNnKSB7CisgICAgbGV0IGFjdHVhbDsKKyAgICB2YXIgaGFkRXJyb3IgPSBm
YWxzZTsKKyAgICBydW4oKS50aGVuKGZ1bmN0aW9uKHZhbHVlKSB7IGFjdHVhbCA9IHZhbHVlOyB9
LAorICAgICAgICAgICAgICAgZnVuY3Rpb24oZXJyb3IpIHsgaGFkRXJyb3IgPSB0cnVlOyBhY3R1
YWwgPSBlcnJvcjsgfSk7CisgICAgZHJhaW5NaWNyb3Rhc2tzKCk7CisKKyAgICBpZiAoaGFkRXJy
b3IpCisgICAgICAgIHRocm93IGFjdHVhbDsKKworICAgIHNob3VsZEJlKGV4cGVjdGVkLCBhY3R1
YWwsIG1zZyk7Cit9CisKK2NsYXNzIEJhc2VDbGFzcyB7CisgICAgYmFzZUNsYXNzVmFsdWUoKSB7
CisgICAgICAgIHJldHVybiAiQmFzZUNsYXNzVmFsdWUiOworICAgIH0KKyAgICBnZXQgcHJvcGVy
dHkoKSB7CisgICAgICAgIHJldHVybiAidGVzdCEiOworICAgIH0KK30KKworZnVuY3Rpb24gcnVu
U29tZXRoaW5nKGNhbGxiYWNrKSB7CisgICAgY2FsbGJhY2soKTsKK30KKworY2xhc3MgQ2hpbGRD
bGFzcyBleHRlbmRzIEJhc2VDbGFzcyB7CisgICAgY2xhc3NWYWx1ZSgpIHsKKyAgICAgICAgcmV0
dXJuICJjbGFzc1ZhbHVlIjsKKyAgICB9CisgICAgZ2V0IGNsYXNzUHJvcGVydHkoKSB7CisgICAg
ICAgIHJldHVybiAiY2xhc3NQcm9wZXJ0eSI7CisgICAgfQorICAgIGFzeW5jVmFsdWVFeHAoKSB7
CisgICAgICAgIHJldHVybiBhc3luYyB4ID0+ICd2YWx1ZSc7CisgICAgfQorICAgIGFzeW5jVmFs
dWVCb2R5KCkgeworICAgICAgICByZXR1cm4gYXN5bmMgeCA9PiB7IHJldHVybiAndmFsdWUnOyB9
OworICAgIH0KKyAgICBhc3luY1RoaXNQcm9wRXhwKCkgeworICAgICAgICByZXR1cm4gYXN5bmMg
eCA9PiB0aGlzLmNsYXNzUHJvcGVydHk7CisgICAgfQorICAgIGFzeW5jVGhpc1Byb3BCb2R5KCkg
eworICAgICAgICByZXR1cm4gYXN5bmMgeCA9PiB7IHJldHVybiB0aGlzLmNsYXNzUHJvcGVydHk7
IH07CisgICAgfQorICAgIGFzeW5jVGhpc1Byb3BJbkV2YWxFeHAoKSB7CisgICAgICAgIHJldHVy
biBhc3luYyB4ID0+IGV2YWwoJ3RoaXMuY2xhc3NQcm9wZXJ0eScpOworICAgIH0KKyAgICBhc3lu
Y1RoaXNQcm9wSW5FdmFsQm9keSgpIHsKKyAgICAgICAgcmV0dXJuIGFzeW5jIHggPT4geyByZXR1
cm4gZXZhbCgndGhpcy5jbGFzc1Byb3BlcnR5Jyk7IH07CisgICAgfQorICAgIGFzeW5jVGhpc1Zh
bHVlRXhwKCkgeworICAgICAgICByZXR1cm4gYXN5bmMgeCA9PiB0aGlzLmNsYXNzVmFsdWUoKTsK
KyAgICB9CisgICAgYXN5bmNUaGlzVmFsdWVCb2R5KCkgeworICAgICAgICByZXR1cm4gYXN5bmMg
eCA9PiB7IHJldHVybiB0aGlzLmNsYXNzVmFsdWUoKTsgfTsKKyAgICB9CisgICAgYXN5bmNUaGlz
VmFsdWVJbkV2YWxFeHAoKSB7CisgICAgICAgIHJldHVybiBhc3luYyB4ID0+IGV2YWwoJ3RoaXMu
Y2xhc3NWYWx1ZSgpJyk7CisgICAgfQorICAgIGFzeW5jVGhpc1ZhbHVlSW5FdmFsQm9keSgpIHsK
KyAgICAgICAgcmV0dXJuIGFzeW5jIHggPT4geyByZXR1cm4gZXZhbCgndGhpcy5jbGFzc1ZhbHVl
KCknKTsgfTsKKyAgICB9Cit9CisKK3Nob3VsZEJlQXN5bmMoInZhbHVlIiwgbmV3IENoaWxkQ2xh
c3MoKS5hc3luY1ZhbHVlRXhwKCkpOworc2hvdWxkQmVBc3luYygidmFsdWUiLCBuZXcgQ2hpbGRD
bGFzcygpLmFzeW5jVmFsdWVCb2R5KCkpOworCitzaG91bGRCZUFzeW5jKCJjbGFzc1Byb3BlcnR5
IiwgbmV3IENoaWxkQ2xhc3MoKS5hc3luY1RoaXNQcm9wRXhwKCkpOworc2hvdWxkQmVBc3luYygi
Y2xhc3NQcm9wZXJ0eSIsIG5ldyBDaGlsZENsYXNzKCkuYXN5bmNUaGlzUHJvcEJvZHkoKSk7CisK
K3Nob3VsZEJlQXN5bmMoImNsYXNzUHJvcGVydHkiLCBuZXcgQ2hpbGRDbGFzcygpLmFzeW5jVGhp
c1Byb3BJbkV2YWxFeHAoKSk7CitzaG91bGRCZUFzeW5jKCJjbGFzc1Byb3BlcnR5IiwgbmV3IENo
aWxkQ2xhc3MoKS5hc3luY1RoaXNQcm9wSW5FdmFsQm9keSgpKTsKKworc2hvdWxkQmVBc3luYygi
Y2xhc3NWYWx1ZSIsIG5ldyBDaGlsZENsYXNzKCkuYXN5bmNUaGlzVmFsdWVFeHAoKSk7CitzaG91
bGRCZUFzeW5jKCJjbGFzc1ZhbHVlIiwgbmV3IENoaWxkQ2xhc3MoKS5hc3luY1RoaXNWYWx1ZUJv
ZHkoKSk7CisKK3Nob3VsZEJlQXN5bmMoImNsYXNzVmFsdWUiLCBuZXcgQ2hpbGRDbGFzcygpLmFz
eW5jVGhpc1ZhbHVlSW5FdmFsRXhwKCkpOworc2hvdWxkQmVBc3luYygiY2xhc3NWYWx1ZSIsIG5l
dyBDaGlsZENsYXNzKCkuYXN5bmNUaGlzVmFsdWVJbkV2YWxCb2R5KCkpOworCitjbGFzcyBDaGls
ZENsYXNzMiBleHRlbmRzIEJhc2VDbGFzcyB7CisgICAgY29uc3RydWN0b3IoKSB7CisgICAgICAg
IHN1cGVyKCk7CisgICAgICAgIHJldHVybiBhc3luYyAoKSA9PiB0aGlzLmNsYXNzVmFsdWUoKSAr
ICcgJyArIHRoaXMuY2xhc3NQcm9wZXJ0eTsKKyAgICB9CisgICAgY2xhc3NWYWx1ZSgpIHsKKyAg
ICAgICAgcmV0dXJuICJjbGFzc1ZhbHVlIjsKKyAgICB9CisgICAgZ2V0IGNsYXNzUHJvcGVydHko
KSB7CisgICAgICAgIHJldHVybiAiY2xhc3NQcm9wZXJ0eSI7CisgICAgfQorfQorCitzaG91bGRC
ZUFzeW5jKCJjbGFzc1ZhbHVlIGNsYXNzUHJvcGVydHkiLCBuZXcgQ2hpbGRDbGFzczIoKSk7CmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9hc3luYy1hcnJvdy1mdW5jdGlvbnMtbGV4aWNhbC1z
dXBlci1iaW5kaW5nLmpzIGIvSlNUZXN0cy9zdHJlc3MvYXN5bmMtYXJyb3ctZnVuY3Rpb25zLWxl
eGljYWwtc3VwZXItYmluZGluZy5qcwppbmRleCBmN2ZmZWUxNzFhYTJjOGNlZjlhM2U4MDY3MzQ4
MGE1NmJkOGIwYjAwLi5hMDAwNDYzYmFiOWMzNTFmNjk5YTAxZjgwY2FiYjMwYzcyMzIwZTY3IDEw
MDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9hc3luYy1hcnJvdy1mdW5jdGlvbnMtbGV4aWNhbC1z
dXBlci1iaW5kaW5nLmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL2FzeW5jLWFycm93LWZ1bmN0aW9u
cy1sZXhpY2FsLXN1cGVyLWJpbmRpbmcuanMKQEAgLTM4LDcgKzM4LDYgQEAgY2xhc3MgQ2hpbGRD
bGFzcyBleHRlbmRzIEJhc2VDbGFzcyB7CiAgICAgfQogfQogCi0vLyBGSVhNRTogc3VwZXIgYmlu
ZGluZ3MgaW4gYXN5bmMgYXJyb3cgZnVuY3Rpb25zIGFyZSBicm9rZW4KIHNob3VsZEJlQXN5bmMo
IkJhc2VDbGFzc1ZhbHVlIiwgbmV3IENoaWxkQ2xhc3MoKS5hc3luY1N1cGVyUHJvcCgpKTsKIHNo
b3VsZEJlQXN5bmMoIkJhc2VDbGFzc1ZhbHVlIiwgbmV3IENoaWxkQ2xhc3MoKS5hc3luY1N1cGVy
UHJvcDIoKSk7CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>