<?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>143012</bug_id>
          
          <creation_ts>2015-03-24 12:53:52 -0700</creation_ts>
          <short_desc>ES6: Classes: Early return in sub-class constructor results in returning undefined instead of instance</short_desc>
          <delta_ts>2015-03-24 18:19:28 -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>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="Joseph Pecoraro">joepeck</reporter>
          <assigned_to name="Joseph Pecoraro">joepeck</assigned_to>
          <cc>ggaren</cc>
    
    <cc>joepeck</cc>
    
    <cc>rniwa</cc>
    
    <cc>timothy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1079663</commentid>
    <comment_count>0</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-03-24 12:53:52 -0700</bug_when>
    <thetext>* SUMMARY
Early return in sub-class constructor results in returning undefined instead of instance

* TEST
&lt;script&gt;
class Base { constructor(){ return; } }
class Derived extends Base {
    constructor()
    {
        super();

        // This early return breaks things.
        return;
    }
}

var x = new Derived;
console.log(x); // undefined, should be new Derived.
&lt;/script&gt;


* EXPECTED
Derived instance in `x`.

* ACTUAL
undefined in `x`.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1079673</commentid>
    <comment_count>1</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-03-24 13:13:42 -0700</bug_when>
    <thetext>I think the relevant portion is [[Construct]]:
https://people.mozilla.org/~jorendorff/es6-draft.html#sec-ecmascript-function-objects-construct-argumentslist-newtarget

Which has:

&gt;  13. If result.[[type]] is return, then
&gt;      a. If Type(result.[[value]]) is Object, return NormalCompletion(result.[[value]]).
&gt;      b. If kind is &quot;base&quot;, return NormalCompletion(thisArgument).
&gt;      c. If result.[[value]] is not undefined, throw a TypeError exception.
&gt;  14. Else, ReturnIfAbrupt(result).
&gt;  15. Return envRec.GetThisBinding().


That seems weird to me. It sounds like if you early return from a base class constructor, you will get the &quot;thisArgument&quot;. And if you early return from a derived class constructor we return &quot;envRec.GetThisBinding()&quot;.

Either way, my interpretation is that if we do an implicit return of undefined, we would get some &quot;this&quot; object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1079709</commentid>
    <comment_count>2</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-03-24 14:13:15 -0700</bug_when>
    <thetext>I think I see the issue. I&apos;ll investigate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1079795</commentid>
    <comment_count>3</comment_count>
      <attachid>249370</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-03-24 18:02:58 -0700</bug_when>
    <thetext>Created attachment 249370
[PATCH] Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1079799</commentid>
    <comment_count>4</comment_count>
      <attachid>249370</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-03-24 18:10:46 -0700</bug_when>
    <thetext>Comment on attachment 249370
[PATCH] Proposed Fix

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

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:1943
&gt; +        if (!derived)
&gt; +            emitUnaryNoDstOp(op_ret, &amp;m_thisRegister);
&gt; +        else {

I think this reads better if we checked if (derived) and put emitUnaryNoDstOp(op_ret, &amp;m_thisRegister); after the if block.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1079804</commentid>
    <comment_count>5</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-03-24 18:19:28 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/181924</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249370</attachid>
            <date>2015-03-24 18:02:58 -0700</date>
            <delta_ts>2015-03-24 18:10:46 -0700</delta_ts>
            <desc>[PATCH] Proposed Fix</desc>
            <filename>cosntructor-return.patch</filename>
            <type>text/plain</type>
            <size>26944</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAzNTc1ZmVjLi45N2E3NjY1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjIgQEAKIDIwMTUtMDMt
MjQgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAorICAgICAgICBFUzY6
IENsYXNzZXM6IEVhcmx5IHJldHVybiBpbiBzdWItY2xhc3MgY29uc3RydWN0b3IgcmVzdWx0cyBp
biByZXR1cm5pbmcgdW5kZWZpbmVkIGluc3RlYWQgb2YgaW5zdGFuY2UKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MzAxMgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICoganMvY2xhc3MtY29uc3RydWN0b3It
cmV0dXJuLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvY2xhc3MtY29uc3RydWN0
b3ItcmV0dXJuLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9jbGFzcy1j
b25zdHJ1Y3Rvci1yZXR1cm4uanM6IEFkZGVkLgorICAgICAgICBOZXcgdGVzdCBjb3ZlcmluZyBk
aWZmZXJlbnQgcmV0dXJuIHZhbHVlcyBmcm9tIGNvbnN0cnVjdG9ycy4KKworICAgICAgICAqIGpz
L2NsYXNzLXN5bnRheC1zdXBlci1leHBlY3RlZC50eHQ6CisgICAgICAgICoganMvc2NyaXB0LXRl
c3RzL2NsYXNzLXN5bnRheC1zdXBlci5qczoKKyAgICAgICAgRml4IHRlc3QuIFJldHVybmluZyB1
bmRlZmluZWQgaXMgdGhlIHNhbWUgYXMgYW4gaW1wbGljaXQgcmV0dXJuCisgICAgICAgIGFuZCBz
aG91bGQgcmV0dXJuIGB0aGlzYC4KKworMjAxNS0wMy0yNCAgSm9zZXBoIFBlY29yYXJvICA8cGVj
b3Jhcm9AYXBwbGUuY29tPgorCiAgICAgICAgIFVucmV2aWV3ZWQgZ2FyZGVuaW5nIGFmdGVyIHIx
ODE5MDEuCiAKICAgICAgICAgKiBwbGF0Zm9ybS9tYWMvaHR0cC90ZXN0cy9tZWRpYS9tZWRpYS1z
b3VyY2UvbWVkaWFzb3VyY2Utc291cmNlYnVmZmVyLW1vZGUtZXhwZWN0ZWQudHh0OgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvanMvY2xhc3MtY29uc3RydWN0b3ItcmV0dXJuLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2pzL2NsYXNzLWNvbnN0cnVjdG9yLXJldHVybi1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjg5MmFjYwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2pzL2NsYXNzLWNvbnN0cnVjdG9yLXJldHVybi1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSw5NSBAQAorVGVzdHMgZm9yIEVTNiBjbGFzcyBjb25zdHJ1Y3RvciByZXR1
cm4gdmFsdWVzCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitCYXNlIGNsYXNzCitQ
QVNTIChuZXcgQmFzZU5vUmV0dXJuKSBpbnN0YW5jZW9mIEJhc2VOb1JldHVybiBpcyB0cnVlCitQ
QVNTIChuZXcgQmFzZVJldHVybkltcGxpY2l0KSBpbnN0YW5jZW9mIEJhc2VSZXR1cm5JbXBsaWNp
dCBpcyB0cnVlCitQQVNTIChuZXcgQmFzZVJldHVybkltcGxpY2l0KSAhPT0gdW5kZWZpbmVkIGlz
IHRydWUKK1BBU1MgKG5ldyBCYXNlUmV0dXJuVW5kZWZpbmVkKSBpbnN0YW5jZW9mIEJhc2VSZXR1
cm5VbmRlZmluZWQgaXMgdHJ1ZQorUEFTUyAobmV3IEJhc2VSZXR1cm5VbmRlZmluZWQpICE9PSB1
bmRlZmluZWQgaXMgdHJ1ZQorUEFTUyAobmV3IEJhc2VSZXR1cm5UaGlzKSBpbnN0YW5jZW9mIEJh
c2VSZXR1cm5UaGlzIGlzIHRydWUKK1BBU1MgKG5ldyBCYXNlUmV0dXJuT2JqZWN0KSBpbnN0YW5j
ZW9mIEJhc2VSZXR1cm5PYmplY3QgaXMgZmFsc2UKK1BBU1MgdHlwZW9mIChuZXcgQmFzZVJldHVy
bk9iamVjdCkgPT09ICJvYmplY3QiIGlzIHRydWUKK1BBU1MgKG5ldyBCYXNlUmV0dXJuT2JqZWN0
MikgaW5zdGFuY2VvZiBCYXNlUmV0dXJuT2JqZWN0IGlzIGZhbHNlCitQQVNTIChuZXcgQmFzZVJl
dHVybk9iamVjdDIpID09PSBnbG9iYWxWYXJpYWJsZSBpcyB0cnVlCitQQVNTIChuZXcgQmFzZVJl
dHVyblN0cmluZykgaW5zdGFuY2VvZiBCYXNlUmV0dXJuU3RyaW5nIGlzIHRydWUKK1BBU1MgdHlw
ZW9mIChuZXcgQmFzZVJldHVyblN0cmluZykgIT09ICJzdHJpbmciIGlzIHRydWUKK1BBU1MgKG5l
dyBCYXNlUmV0dXJuTnVtYmVyKSBpbnN0YW5jZW9mIEJhc2VSZXR1cm5OdW1iZXIgaXMgdHJ1ZQor
UEFTUyB0eXBlb2YgKG5ldyBCYXNlUmV0dXJuTnVtYmVyKSAhPT0gIm51bWJlciIgaXMgdHJ1ZQor
UEFTUyAobmV3IEJhc2VSZXR1cm5OdWxsKSBpbnN0YW5jZW9mIEJhc2VSZXR1cm5OdWxsIGlzIHRy
dWUKK1BBU1MgKG5ldyBCYXNlUmV0dXJuTnVsbCkgIT09IG51bGwgaXMgdHJ1ZQorUEFTUyAobmV3
IEJhc2VSZXR1cm5TeW1ib2wpIGluc3RhbmNlb2YgQmFzZVJldHVyblN5bWJvbCBpcyB0cnVlCitQ
QVNTIChuZXcgQmFzZVJldHVyblN5bWJvbCkgIT09IGdsb2JhbFN5bWJvbCBpcyB0cnVlCitQQVNT
IChuZXcgQmFzZVRocm93KSB0aHJldyBleGNlcHRpb24gVGhyb3duIEV4Y2VwdGlvbiBTdHJpbmcu
CisKK0Z1bmN0aW9uIGNvbnN0cnVjdG9yIChub24tY2xhc3MpCitQQVNTIChuZXcgRnVuY3Rpb25O
b1JldHVybikgaW5zdGFuY2VvZiBGdW5jdGlvbk5vUmV0dXJuIGlzIHRydWUKK1BBU1MgKG5ldyBG
dW5jdGlvblJldHVybkltcGxpY2l0KSBpbnN0YW5jZW9mIEZ1bmN0aW9uUmV0dXJuSW1wbGljaXQg
aXMgdHJ1ZQorUEFTUyAobmV3IEZ1bmN0aW9uUmV0dXJuSW1wbGljaXQpICE9PSB1bmRlZmluZWQg
aXMgdHJ1ZQorUEFTUyAobmV3IEZ1bmN0aW9uUmV0dXJuVW5kZWZpbmVkKSBpbnN0YW5jZW9mIEZ1
bmN0aW9uUmV0dXJuVW5kZWZpbmVkIGlzIHRydWUKK1BBU1MgKG5ldyBGdW5jdGlvblJldHVyblVu
ZGVmaW5lZCkgIT09IHVuZGVmaW5lZCBpcyB0cnVlCitQQVNTIChuZXcgRnVuY3Rpb25SZXR1cm5U
aGlzKSBpbnN0YW5jZW9mIEZ1bmN0aW9uUmV0dXJuVGhpcyBpcyB0cnVlCitQQVNTIChuZXcgRnVu
Y3Rpb25SZXR1cm5PYmplY3QpIGluc3RhbmNlb2YgRnVuY3Rpb25SZXR1cm5PYmplY3QgaXMgZmFs
c2UKK1BBU1MgdHlwZW9mIChuZXcgRnVuY3Rpb25SZXR1cm5PYmplY3QpID09PSAib2JqZWN0IiBp
cyB0cnVlCitQQVNTIChuZXcgRnVuY3Rpb25SZXR1cm5PYmplY3QyKSBpbnN0YW5jZW9mIEZ1bmN0
aW9uUmV0dXJuT2JqZWN0IGlzIGZhbHNlCitQQVNTIChuZXcgRnVuY3Rpb25SZXR1cm5PYmplY3Qy
KSA9PT0gZ2xvYmFsVmFyaWFibGUgaXMgdHJ1ZQorUEFTUyAobmV3IEZ1bmN0aW9uUmV0dXJuU3Ry
aW5nKSBpbnN0YW5jZW9mIEZ1bmN0aW9uUmV0dXJuU3RyaW5nIGlzIHRydWUKK1BBU1MgdHlwZW9m
IChuZXcgRnVuY3Rpb25SZXR1cm5TdHJpbmcpICE9PSAic3RyaW5nIiBpcyB0cnVlCitQQVNTIChu
ZXcgRnVuY3Rpb25SZXR1cm5OdW1iZXIpIGluc3RhbmNlb2YgRnVuY3Rpb25SZXR1cm5OdW1iZXIg
aXMgdHJ1ZQorUEFTUyB0eXBlb2YgKG5ldyBGdW5jdGlvblJldHVybk51bWJlcikgIT09ICJudW1i
ZXIiIGlzIHRydWUKK1BBU1MgKG5ldyBGdW5jdGlvblJldHVybk51bGwpIGluc3RhbmNlb2YgRnVu
Y3Rpb25SZXR1cm5OdWxsIGlzIHRydWUKK1BBU1MgKG5ldyBGdW5jdGlvblJldHVybk51bGwpICE9
PSBudWxsIGlzIHRydWUKK1BBU1MgKG5ldyBGdW5jdGlvblJldHVyblN5bWJvbCkgaW5zdGFuY2Vv
ZiBGdW5jdGlvblJldHVyblN5bWJvbCBpcyB0cnVlCitQQVNTIChuZXcgRnVuY3Rpb25SZXR1cm5T
eW1ib2wpICE9PSBnbG9iYWxTeW1ib2wgaXMgdHJ1ZQorUEFTUyAobmV3IEZ1bmN0aW9uVGhyb3cp
IHRocmV3IGV4Y2VwdGlvbiBUaHJvd24gRXhjZXB0aW9uIFN0cmluZy4KKworRGVyaXZlZCBjbGFz
cyBjYWxsaW5nIHN1cGVyKCkKK1BBU1MgKG5ldyBEZXJpdmVkTm9SZXR1cm4pIGluc3RhbmNlb2Yg
RGVyaXZlZE5vUmV0dXJuIGlzIHRydWUKK1BBU1MgKG5ldyBEZXJpdmVkUmV0dXJuSW1wbGljaXQp
IGluc3RhbmNlb2YgRGVyaXZlZFJldHVybkltcGxpY2l0IGlzIHRydWUKK1BBU1MgKG5ldyBEZXJp
dmVkUmV0dXJuSW1wbGljaXQpICE9PSB1bmRlZmluZWQgaXMgdHJ1ZQorUEFTUyAobmV3IERlcml2
ZWRSZXR1cm5VbmRlZmluZWQpIGluc3RhbmNlb2YgRGVyaXZlZFJldHVyblVuZGVmaW5lZCBpcyB0
cnVlCitQQVNTIChuZXcgRGVyaXZlZFJldHVyblVuZGVmaW5lZCkgIT09IHVuZGVmaW5lZCBpcyB0
cnVlCitQQVNTIChuZXcgRGVyaXZlZFJldHVyblRoaXMpIGluc3RhbmNlb2YgRGVyaXZlZFJldHVy
blRoaXMgaXMgdHJ1ZQorUEFTUyAobmV3IERlcml2ZWRSZXR1cm5PYmplY3QpIGluc3RhbmNlb2Yg
RGVyaXZlZFJldHVybk9iamVjdCBpcyBmYWxzZQorUEFTUyB0eXBlb2YgKG5ldyBEZXJpdmVkUmV0
dXJuT2JqZWN0KSA9PT0gIm9iamVjdCIgaXMgdHJ1ZQorUEFTUyAobmV3IERlcml2ZWRSZXR1cm5P
YmplY3QyKSBpbnN0YW5jZW9mIERlcml2ZWRSZXR1cm5PYmplY3QyIGlzIGZhbHNlCitQQVNTIChu
ZXcgRGVyaXZlZFJldHVybk9iamVjdDIpID09PSBnbG9iYWxWYXJpYWJsZSBpcyB0cnVlCitQQVNT
IChuZXcgRGVyaXZlZFJldHVyblN0cmluZykgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQ2Fu
bm90IHJldHVybiBhIG5vbi1vYmplY3QgdHlwZSBpbiB0aGUgY29uc3RydWN0b3Igb2YgYSBkZXJp
dmVkIGNsYXNzLi4KK1BBU1MgKG5ldyBEZXJpdmVkUmV0dXJuTnVtYmVyKSB0aHJldyBleGNlcHRp
b24gVHlwZUVycm9yOiBDYW5ub3QgcmV0dXJuIGEgbm9uLW9iamVjdCB0eXBlIGluIHRoZSBjb25z
dHJ1Y3RvciBvZiBhIGRlcml2ZWQgY2xhc3MuLgorUEFTUyAobmV3IERlcml2ZWRSZXR1cm5OdWxs
KSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBDYW5ub3QgcmV0dXJuIGEgbm9uLW9iamVjdCB0
eXBlIGluIHRoZSBjb25zdHJ1Y3RvciBvZiBhIGRlcml2ZWQgY2xhc3MuLgorUEFTUyAobmV3IERl
cml2ZWRSZXR1cm5TeW1ib2wpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IENhbm5vdCByZXR1
cm4gYSBub24tb2JqZWN0IHR5cGUgaW4gdGhlIGNvbnN0cnVjdG9yIG9mIGEgZGVyaXZlZCBjbGFz
cy4uCitQQVNTIChuZXcgRGVyaXZlZFRocm93KSB0aHJldyBleGNlcHRpb24gVGhyb3duIEV4Y2Vw
dGlvbiBTdHJpbmcuCisKK0Rlcml2ZWQgY2xhc3Mgbm90IGNhbGxpbmcgc3VwZXIoKQorUEFTUyAo
bmV3IERlcml2ZWROb1N1cGVyTm9SZXR1cm4pIHRocmV3IGV4Y2VwdGlvbiBSZWZlcmVuY2VFcnJv
cjogQ2Fubm90IGFjY2VzcyB1bmluaXRpYWxpemVkIHZhcmlhYmxlLi4KK1BBU1MgKG5ldyBEZXJp
dmVkTm9TdXBlclJldHVybkltcGxpY2l0KSB0aHJldyBleGNlcHRpb24gUmVmZXJlbmNlRXJyb3I6
IENhbid0IGZpbmQgdmFyaWFibGU6IERlcml2ZWROb1N1cGVyUmV0dXJuSW1wbGljaXQuCitQQVNT
IChuZXcgRGVyaXZlZE5vU3VwZXJSZXR1cm5VbmRlZmluZWQpIHRocmV3IGV4Y2VwdGlvbiBSZWZl
cmVuY2VFcnJvcjogQ2Fubm90IGFjY2VzcyB1bmluaXRpYWxpemVkIHZhcmlhYmxlLi4KK1BBU1Mg
KG5ldyBEZXJpdmVkTm9TdXBlclJldHVyblRoaXMpIHRocmV3IGV4Y2VwdGlvbiBSZWZlcmVuY2VF
cnJvcjogQ2Fubm90IGFjY2VzcyB1bmluaXRpYWxpemVkIHZhcmlhYmxlLi4KK1BBU1MgKG5ldyBE
ZXJpdmVkTm9TdXBlclJldHVybk9iamVjdCkgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNT
IChuZXcgRGVyaXZlZE5vU3VwZXJSZXR1cm5PYmplY3QyKSBkaWQgbm90IHRocm93IGV4Y2VwdGlv
bi4KK1BBU1MgKG5ldyBEZXJpdmVkTm9TdXBlclJldHVyblN0cmluZykgdGhyZXcgZXhjZXB0aW9u
IFR5cGVFcnJvcjogQ2Fubm90IHJldHVybiBhIG5vbi1vYmplY3QgdHlwZSBpbiB0aGUgY29uc3Ry
dWN0b3Igb2YgYSBkZXJpdmVkIGNsYXNzLi4KK1BBU1MgKG5ldyBEZXJpdmVkTm9TdXBlclJldHVy
bk51bWJlcikgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQ2Fubm90IHJldHVybiBhIG5vbi1v
YmplY3QgdHlwZSBpbiB0aGUgY29uc3RydWN0b3Igb2YgYSBkZXJpdmVkIGNsYXNzLi4KK1BBU1Mg
KG5ldyBEZXJpdmVkTm9TdXBlclJldHVybk51bGwpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6
IENhbm5vdCByZXR1cm4gYSBub24tb2JqZWN0IHR5cGUgaW4gdGhlIGNvbnN0cnVjdG9yIG9mIGEg
ZGVyaXZlZCBjbGFzcy4uCitQQVNTIChuZXcgRGVyaXZlZE5vU3VwZXJSZXR1cm5TeW1ib2wpIHRo
cmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IENhbm5vdCByZXR1cm4gYSBub24tb2JqZWN0IHR5cGUg
aW4gdGhlIGNvbnN0cnVjdG9yIG9mIGEgZGVyaXZlZCBjbGFzcy4uCitQQVNTIChuZXcgRGVyaXZl
ZE5vU3VwZXJUaHJvdykgdGhyZXcgZXhjZXB0aW9uIFRocm93biBFeGNlcHRpb24gU3RyaW5nLgor
CitEZXJpdmVkIGNsYXNzIHdpdGggZGVmYXVsdCBjb25zdHJ1Y3RvciBhbmQgYmFzZSBjbGFzcyBy
ZXR1cm5pbmcgZGlmZmVyZW50IHZhbHVlcworUEFTUyAobmV3IERlcml2ZWREZWZhdWx0Q29uc3Ry
dWN0b3JXaXRoQmFzZU5vUmV0dXJuKSBpbnN0YW5jZW9mIERlcml2ZWREZWZhdWx0Q29uc3RydWN0
b3JXaXRoQmFzZU5vUmV0dXJuIGlzIHRydWUKK1BBU1MgKG5ldyBEZXJpdmVkRGVmYXVsdENvbnN0
cnVjdG9yV2l0aEJhc2VSZXR1cm5JbXBsaWNpdCkgaW5zdGFuY2VvZiBEZXJpdmVkRGVmYXVsdENv
bnN0cnVjdG9yV2l0aEJhc2VSZXR1cm5JbXBsaWNpdCBpcyB0cnVlCitQQVNTIChuZXcgRGVyaXZl
ZERlZmF1bHRDb25zdHJ1Y3RvcldpdGhCYXNlUmV0dXJuVW5kZWZpbmVkKSBpbnN0YW5jZW9mIERl
cml2ZWREZWZhdWx0Q29uc3RydWN0b3JXaXRoQmFzZVJldHVyblVuZGVmaW5lZCBpcyB0cnVlCitQ
QVNTIChuZXcgRGVyaXZlZERlZmF1bHRDb25zdHJ1Y3RvcldpdGhCYXNlUmV0dXJuT2JqZWN0KSBp
bnN0YW5jZW9mIERlcml2ZWREZWZhdWx0Q29uc3RydWN0b3JXaXRoQmFzZVJldHVybk9iamVjdCBp
cyBmYWxzZQorUEFTUyB0eXBlb2YgKG5ldyBEZXJpdmVkRGVmYXVsdENvbnN0cnVjdG9yV2l0aEJh
c2VSZXR1cm5PYmplY3QpID09PSAib2JqZWN0IiBpcyB0cnVlCitQQVNTIChuZXcgRGVyaXZlZERl
ZmF1bHRDb25zdHJ1Y3RvcldpdGhCYXNlUmV0dXJuT2JqZWN0MikgaW5zdGFuY2VvZiBEZXJpdmVk
RGVmYXVsdENvbnN0cnVjdG9yV2l0aEJhc2VSZXR1cm5PYmplY3QyIGlzIGZhbHNlCitQQVNTIChu
ZXcgRGVyaXZlZERlZmF1bHRDb25zdHJ1Y3RvcldpdGhCYXNlUmV0dXJuT2JqZWN0MikgPT09IGds
b2JhbFZhcmlhYmxlIGlzIHRydWUKK1BBU1MgKG5ldyBEZXJpdmVkRGVmYXVsdENvbnN0cnVjdG9y
V2l0aEJhc2VSZXR1cm5UaGlzKSBpbnN0YW5jZW9mIERlcml2ZWREZWZhdWx0Q29uc3RydWN0b3JX
aXRoQmFzZVJldHVyblRoaXMgaXMgdHJ1ZQorUEFTUyAobmV3IERlcml2ZWREZWZhdWx0Q29uc3Ry
dWN0b3JXaXRoQmFzZVJldHVyblN0cmluZykgaW5zdGFuY2VvZiBEZXJpdmVkRGVmYXVsdENvbnN0
cnVjdG9yV2l0aEJhc2VSZXR1cm5TdHJpbmcgaXMgdHJ1ZQorUEFTUyAobmV3IERlcml2ZWREZWZh
dWx0Q29uc3RydWN0b3JXaXRoQmFzZVJldHVybk51bWJlcikgaW5zdGFuY2VvZiBEZXJpdmVkRGVm
YXVsdENvbnN0cnVjdG9yV2l0aEJhc2VSZXR1cm5OdW1iZXIgaXMgdHJ1ZQorUEFTUyAobmV3IERl
cml2ZWREZWZhdWx0Q29uc3RydWN0b3JXaXRoQmFzZVJldHVybk51bGwpIGluc3RhbmNlb2YgRGVy
aXZlZERlZmF1bHRDb25zdHJ1Y3RvcldpdGhCYXNlUmV0dXJuTnVsbCBpcyB0cnVlCitQQVNTIChu
ZXcgRGVyaXZlZERlZmF1bHRDb25zdHJ1Y3RvcldpdGhCYXNlUmV0dXJuU3ltYm9sKSBpbnN0YW5j
ZW9mIERlcml2ZWREZWZhdWx0Q29uc3RydWN0b3JXaXRoQmFzZVJldHVyblN5bWJvbCBpcyB0cnVl
CitQQVNTIChuZXcgRGVyaXZlZERlZmF1bHRDb25zdHJ1Y3RvcldpdGhCYXNlVGhyb3cpIHRocmV3
IGV4Y2VwdGlvbiBUaHJvd24gRXhjZXB0aW9uIFN0cmluZy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9q
cy9jbGFzcy1jb25zdHJ1Y3Rvci1yZXR1cm4uaHRtbCBiL0xheW91dFRlc3RzL2pzL2NsYXNzLWNv
bnN0cnVjdG9yLXJldHVybi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LmRhYjI0MWEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9jbGFzcy1jb25zdHJ1
Y3Rvci1yZXR1cm4uaHRtbApAQCAtMCwwICsxLDggQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9jbGFzcy1jb25zdHJ1Y3Rvci1yZXR1cm4u
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMv
Y2xhc3Mtc3ludGF4LXN1cGVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL2NsYXNzLXN5
bnRheC1zdXBlci1leHBlY3RlZC50eHQKaW5kZXggMjM0Nzk5Zi4uYjJhZDkzNCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvanMvY2xhc3Mtc3ludGF4LXN1cGVyLWV4cGVjdGVkLnR4dAorKysgYi9M
YXlvdXRUZXN0cy9qcy9jbGFzcy1zeW50YXgtc3VwZXItZXhwZWN0ZWQudHh0CkBAIC0yNCwxMiAr
MjQsMTQgQEAgUEFTUyAobmV3IHgpLm1ldGhvZDEoKSB0aHJldyBleGNlcHRpb24gUmVmZXJlbmNl
RXJyb3I6IENhbm5vdCBkZWxldGUgYSBzdXBlciBwcm8KIFBBU1MgKG5ldyB4KS5tZXRob2QyKCkg
dGhyZXcgZXhjZXB0aW9uIFJlZmVyZW5jZUVycm9yOiBDYW5ub3QgZGVsZXRlIGEgc3VwZXIgcHJv
cGVydHkuCiBQQVNTIG5ldyAoY2xhc3MgeyBjb25zdHJ1Y3RvcigpIHsgcmV0dXJuIHVuZGVmaW5l
ZDsgfSB9KSBpbnN0YW5jZW9mIE9iamVjdCBpcyB0cnVlCiBQQVNTIG5ldyAoY2xhc3MgeyBjb25z
dHJ1Y3RvcigpIHsgcmV0dXJuIDE7IH0gfSkgaW5zdGFuY2VvZiBPYmplY3QgaXMgdHJ1ZQotUEFT
UyBuZXcgKGNsYXNzIGV4dGVuZHMgQmFzZSB7IGNvbnN0cnVjdG9yKCkgeyByZXR1cm4gdW5kZWZp
bmVkIH0gfSkgaXMgdW5kZWZpbmVkCitQQVNTIG5ldyAoY2xhc3MgZXh0ZW5kcyBCYXNlIHsgY29u
c3RydWN0b3IoKSB7IHJldHVybiB1bmRlZmluZWQgfSB9KSB0aHJldyBleGNlcHRpb24gUmVmZXJl
bmNlRXJyb3I6IENhbm5vdCBhY2Nlc3MgdW5pbml0aWFsaXplZCB2YXJpYWJsZS4uCitQQVNTIG5l
dyAoY2xhc3MgZXh0ZW5kcyBCYXNlIHsgY29uc3RydWN0b3IoKSB7IHN1cGVyKCk7IHJldHVybiB1
bmRlZmluZWQgfSB9KSBpbnN0YW5jZW9mIE9iamVjdCBpcyB0cnVlCiBQQVNTIHggPSB7IH07IG5l
dyAoY2xhc3MgZXh0ZW5kcyBCYXNlIHsgY29uc3RydWN0b3IoKSB7IHJldHVybiB4IH0gfSk7IGlz
IHgKIFBBU1MgeCBpbnN0YW5jZW9mIEJhc2UgaXMgZmFsc2UKIFBBU1MgbmV3IChjbGFzcyBleHRl
bmRzIEJhc2UgeyBjb25zdHJ1Y3RvcigpIHsgfSB9KSB0aHJldyBleGNlcHRpb24gUmVmZXJlbmNl
RXJyb3I6IENhbm5vdCBhY2Nlc3MgdW5pbml0aWFsaXplZCB2YXJpYWJsZS4uCiBQQVNTIG5ldyAo
Y2xhc3MgZXh0ZW5kcyBCYXNlIHsgY29uc3RydWN0b3IoKSB7IHJldHVybiAxOyB9IH0pIHRocmV3
IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IENhbm5vdCByZXR1cm4gYSBub24tb2JqZWN0IHR5cGUgaW4g
dGhlIGNvbnN0cnVjdG9yIG9mIGEgZGVyaXZlZCBjbGFzcy4uCi1QQVNTIG5ldyAoY2xhc3MgZXh0
ZW5kcyBudWxsIHsgY29uc3RydWN0b3IoKSB7IHJldHVybiB1bmRlZmluZWQgfSB9KSBpcyB1bmRl
ZmluZWQKK1BBU1MgbmV3IChjbGFzcyBleHRlbmRzIG51bGwgeyBjb25zdHJ1Y3RvcigpIHsgcmV0
dXJuIHVuZGVmaW5lZCB9IH0pIHRocmV3IGV4Y2VwdGlvbiBSZWZlcmVuY2VFcnJvcjogQ2Fubm90
IGFjY2VzcyB1bmluaXRpYWxpemVkIHZhcmlhYmxlLi4KK1BBU1MgbmV3IChjbGFzcyBleHRlbmRz
IG51bGwgeyBjb25zdHJ1Y3RvcigpIHsgc3VwZXIoKTsgcmV0dXJuIHVuZGVmaW5lZCB9IH0pIGlu
c3RhbmNlb2YgT2JqZWN0IGlzIHRydWUKIFBBU1MgeCA9IHsgfTsgbmV3IChjbGFzcyBleHRlbmRz
IG51bGwgeyBjb25zdHJ1Y3RvcigpIHsgcmV0dXJuIHggfSB9KTsgaXMgeAogUEFTUyB4IGluc3Rh
bmNlb2YgT2JqZWN0IGlzIHRydWUKIFBBU1MgbmV3IChjbGFzcyBleHRlbmRzIG51bGwgeyBjb25z
dHJ1Y3RvcigpIHsgfSB9KSB0aHJldyBleGNlcHRpb24gUmVmZXJlbmNlRXJyb3I6IENhbm5vdCBh
Y2Nlc3MgdW5pbml0aWFsaXplZCB2YXJpYWJsZS4uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9q
cy9zY3JpcHQtdGVzdHMvY2xhc3MtY29uc3RydWN0b3ItcmV0dXJuLmpzIGIvTGF5b3V0VGVzdHMv
anMvc2NyaXB0LXRlc3RzL2NsYXNzLWNvbnN0cnVjdG9yLXJldHVybi5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMzkzMDI3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvanMvc2NyaXB0LXRlc3RzL2NsYXNzLWNvbnN0cnVjdG9yLXJldHVybi5qcwpAQCAtMCww
ICsxLDE5MiBAQAorZGVzY3JpcHRpb24oJ1Rlc3RzIGZvciBFUzYgY2xhc3MgY29uc3RydWN0b3Ig
cmV0dXJuIHZhbHVlcycpOworCisvLyBFUzYKKy8vIC0gOS4yLjIgW1tDb25zdHJ1Y3RdXSAoRUNN
QVNjcmlwdCBGdW5jdGlvbiBPYmplY3RzKQorLy8gLSAxMi4zLjUuMSBSdW50aW1lIFNlbWFudGlj
czogRXZhbHVhdGlvbiAoVGhlIHN1cGVyIEtleXdvcmQpCisvLyAtIDE0LjUuMTQgUnVudGltZSBT
ZW1hbnRpY3M6IENsYXNzRGVmaW5pdGlvbkV2YWx1YXRpb24gKERlZmF1bHQgQ29uc3RydWN0b3Ip
CisKK3ZhciBnbG9iYWxWYXJpYWJsZSA9IHtuYW1lOiJnbG9iYWxWYXJpYWJsZSJ9OwordmFyIGds
b2JhbFN5bWJvbCA9IFN5bWJvbCgpOworCitkZWJ1ZygnQmFzZSBjbGFzcycpOworY2xhc3MgQmFz
ZU5vUmV0dXJuIHsgY29uc3RydWN0b3IoKSB7IH0gfTsKK2NsYXNzIEJhc2VSZXR1cm5JbXBsaWNp
dCB7IGNvbnN0cnVjdG9yKCkgeyByZXR1cm47IH0gfTsKK2NsYXNzIEJhc2VSZXR1cm5VbmRlZmlu
ZWQgeyBjb25zdHJ1Y3RvcigpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfSB9OworY2xhc3MgQmFzZVJl
dHVyblRoaXMgeyBjb25zdHJ1Y3RvcigpIHsgcmV0dXJuIHRoaXM7IH0gfTsKK2NsYXNzIEJhc2VS
ZXR1cm5PYmplY3QgeyBjb25zdHJ1Y3RvcigpIHsgcmV0dXJuIHthOjF9OyB9IH07CitjbGFzcyBC
YXNlUmV0dXJuT2JqZWN0MiB7IGNvbnN0cnVjdG9yKCkgeyByZXR1cm4gZ2xvYmFsVmFyaWFibGU7
IH0gfTsKK2NsYXNzIEJhc2VSZXR1cm5TdHJpbmcgeyBjb25zdHJ1Y3RvcigpIHsgcmV0dXJuICJ0
ZXN0IjsgfSB9OworY2xhc3MgQmFzZVJldHVybk51bWJlciB7IGNvbnN0cnVjdG9yKCkgeyByZXR1
cm4gMTsgfSB9OworY2xhc3MgQmFzZVJldHVybk51bGwgeyBjb25zdHJ1Y3RvcigpIHsgcmV0dXJu
IG51bGw7IH0gfTsKK2NsYXNzIEJhc2VSZXR1cm5TeW1ib2wgeyBjb25zdHJ1Y3RvcigpIHsgcmV0
dXJuIFN5bWJvbCgpOyB9IH07CitjbGFzcyBCYXNlVGhyb3cgeyBjb25zdHJ1Y3RvcigpIHsgdGhy
b3cgIlRocm93biBFeGNlcHRpb24gU3RyaW5nIjsgfSB9OworCisvLyBCYXNlIC0gSW1wbGljaXQg
PT4gcmV0dXJuIHRoaXMuCitzaG91bGRCZVRydWUoJyhuZXcgQmFzZU5vUmV0dXJuKSBpbnN0YW5j
ZW9mIEJhc2VOb1JldHVybicpOworCisvLyBCYXNlIC0gRWFybHkgcmV0dXJuID0+IHJldHVybiB0
aGlzLgorc2hvdWxkQmVUcnVlKCcobmV3IEJhc2VSZXR1cm5JbXBsaWNpdCkgaW5zdGFuY2VvZiBC
YXNlUmV0dXJuSW1wbGljaXQnKTsKK3Nob3VsZEJlVHJ1ZSgnKG5ldyBCYXNlUmV0dXJuSW1wbGlj
aXQpICE9PSB1bmRlZmluZWQnKTsKK3Nob3VsZEJlVHJ1ZSgnKG5ldyBCYXNlUmV0dXJuVW5kZWZp
bmVkKSBpbnN0YW5jZW9mIEJhc2VSZXR1cm5VbmRlZmluZWQnKTsKK3Nob3VsZEJlVHJ1ZSgnKG5l
dyBCYXNlUmV0dXJuVW5kZWZpbmVkKSAhPT0gdW5kZWZpbmVkJyk7CisKKy8vIEJhc2UgLSByZXR1
cm4gdGhpcyA9PiByZXR1cm4gdGhpcy4KK3Nob3VsZEJlVHJ1ZSgnKG5ldyBCYXNlUmV0dXJuVGhp
cykgaW5zdGFuY2VvZiBCYXNlUmV0dXJuVGhpcycpOworCisvLyBCYXNlIC0gcmV0dXJuIE9iamVj
dCA9PiByZXR1cm4gb2JqZWN0LCBub3QgaW5zdGFuY2UuCitzaG91bGRCZUZhbHNlKCcobmV3IEJh
c2VSZXR1cm5PYmplY3QpIGluc3RhbmNlb2YgQmFzZVJldHVybk9iamVjdCcpOworc2hvdWxkQmVU
cnVlKCd0eXBlb2YgKG5ldyBCYXNlUmV0dXJuT2JqZWN0KSA9PT0gIm9iamVjdCInKTsKK3Nob3Vs
ZEJlRmFsc2UoJyhuZXcgQmFzZVJldHVybk9iamVjdDIpIGluc3RhbmNlb2YgQmFzZVJldHVybk9i
amVjdCcpOworc2hvdWxkQmVUcnVlKCcobmV3IEJhc2VSZXR1cm5PYmplY3QyKSA9PT0gZ2xvYmFs
VmFyaWFibGUnKTsKKworLy8gQmFzZSAtIHJldHVybiBub24tT2JqZWN0ID0+IHJldHVybiB0aGlz
Lgorc2hvdWxkQmVUcnVlKCcobmV3IEJhc2VSZXR1cm5TdHJpbmcpIGluc3RhbmNlb2YgQmFzZVJl
dHVyblN0cmluZycpOworc2hvdWxkQmVUcnVlKCd0eXBlb2YgKG5ldyBCYXNlUmV0dXJuU3RyaW5n
KSAhPT0gInN0cmluZyInKTsKK3Nob3VsZEJlVHJ1ZSgnKG5ldyBCYXNlUmV0dXJuTnVtYmVyKSBp
bnN0YW5jZW9mIEJhc2VSZXR1cm5OdW1iZXInKTsKK3Nob3VsZEJlVHJ1ZSgndHlwZW9mIChuZXcg
QmFzZVJldHVybk51bWJlcikgIT09ICJudW1iZXIiJyk7CitzaG91bGRCZVRydWUoJyhuZXcgQmFz
ZVJldHVybk51bGwpIGluc3RhbmNlb2YgQmFzZVJldHVybk51bGwnKTsKK3Nob3VsZEJlVHJ1ZSgn
KG5ldyBCYXNlUmV0dXJuTnVsbCkgIT09IG51bGwnKTsKK3Nob3VsZEJlVHJ1ZSgnKG5ldyBCYXNl
UmV0dXJuU3ltYm9sKSBpbnN0YW5jZW9mIEJhc2VSZXR1cm5TeW1ib2wnKTsKK3Nob3VsZEJlVHJ1
ZSgnKG5ldyBCYXNlUmV0dXJuU3ltYm9sKSAhPT0gZ2xvYmFsU3ltYm9sJyk7CisKKy8vIEJhc2Ug
LSB0aHJvdyA9PiB0aHJvdworc2hvdWxkVGhyb3coJyhuZXcgQmFzZVRocm93KScpOworCisvLyBT
YW1lIGJlaGF2aW9yIGZvciBGdW5jdGlvbnMuCitkZWJ1ZygnJyk7IGRlYnVnKCdGdW5jdGlvbiBj
b25zdHJ1Y3RvciAobm9uLWNsYXNzKScpOworZnVuY3Rpb24gRnVuY3Rpb25Ob1JldHVybigpIHsg
fTsKK2Z1bmN0aW9uIEZ1bmN0aW9uUmV0dXJuSW1wbGljaXQoKSB7IHJldHVybjsgfTsKK2Z1bmN0
aW9uIEZ1bmN0aW9uUmV0dXJuVW5kZWZpbmVkKCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9OworZnVu
Y3Rpb24gRnVuY3Rpb25SZXR1cm5UaGlzKCkgeyByZXR1cm4gdGhpczsgfTsKK2Z1bmN0aW9uIEZ1
bmN0aW9uUmV0dXJuT2JqZWN0KCkgeyByZXR1cm4ge2E6MX07IH07CitmdW5jdGlvbiBGdW5jdGlv
blJldHVybk9iamVjdDIoKSB7IHJldHVybiBnbG9iYWxWYXJpYWJsZTsgfTsKK2Z1bmN0aW9uIEZ1
bmN0aW9uUmV0dXJuU3RyaW5nKCkgeyByZXR1cm4gInRlc3QiOyB9OworZnVuY3Rpb24gRnVuY3Rp
b25SZXR1cm5OdW1iZXIoKSB7IHJldHVybiAxOyB9OworZnVuY3Rpb24gRnVuY3Rpb25SZXR1cm5O
dWxsKCkgeyByZXR1cm4gbnVsbDsgfTsKK2Z1bmN0aW9uIEZ1bmN0aW9uUmV0dXJuU3ltYm9sKCkg
eyByZXR1cm4gU3ltYm9sKCk7IH07CitmdW5jdGlvbiBGdW5jdGlvblRocm93KCkgeyB0aHJvdyAi
VGhyb3duIEV4Y2VwdGlvbiBTdHJpbmciOyB9OworCitzaG91bGRCZVRydWUoJyhuZXcgRnVuY3Rp
b25Ob1JldHVybikgaW5zdGFuY2VvZiBGdW5jdGlvbk5vUmV0dXJuJyk7CitzaG91bGRCZVRydWUo
JyhuZXcgRnVuY3Rpb25SZXR1cm5JbXBsaWNpdCkgaW5zdGFuY2VvZiBGdW5jdGlvblJldHVybklt
cGxpY2l0Jyk7CitzaG91bGRCZVRydWUoJyhuZXcgRnVuY3Rpb25SZXR1cm5JbXBsaWNpdCkgIT09
IHVuZGVmaW5lZCcpOworc2hvdWxkQmVUcnVlKCcobmV3IEZ1bmN0aW9uUmV0dXJuVW5kZWZpbmVk
KSBpbnN0YW5jZW9mIEZ1bmN0aW9uUmV0dXJuVW5kZWZpbmVkJyk7CitzaG91bGRCZVRydWUoJyhu
ZXcgRnVuY3Rpb25SZXR1cm5VbmRlZmluZWQpICE9PSB1bmRlZmluZWQnKTsKK3Nob3VsZEJlVHJ1
ZSgnKG5ldyBGdW5jdGlvblJldHVyblRoaXMpIGluc3RhbmNlb2YgRnVuY3Rpb25SZXR1cm5UaGlz
Jyk7CitzaG91bGRCZUZhbHNlKCcobmV3IEZ1bmN0aW9uUmV0dXJuT2JqZWN0KSBpbnN0YW5jZW9m
IEZ1bmN0aW9uUmV0dXJuT2JqZWN0Jyk7CitzaG91bGRCZVRydWUoJ3R5cGVvZiAobmV3IEZ1bmN0
aW9uUmV0dXJuT2JqZWN0KSA9PT0gIm9iamVjdCInKTsKK3Nob3VsZEJlRmFsc2UoJyhuZXcgRnVu
Y3Rpb25SZXR1cm5PYmplY3QyKSBpbnN0YW5jZW9mIEZ1bmN0aW9uUmV0dXJuT2JqZWN0Jyk7Citz
aG91bGRCZVRydWUoJyhuZXcgRnVuY3Rpb25SZXR1cm5PYmplY3QyKSA9PT0gZ2xvYmFsVmFyaWFi
bGUnKTsKK3Nob3VsZEJlVHJ1ZSgnKG5ldyBGdW5jdGlvblJldHVyblN0cmluZykgaW5zdGFuY2Vv
ZiBGdW5jdGlvblJldHVyblN0cmluZycpOworc2hvdWxkQmVUcnVlKCd0eXBlb2YgKG5ldyBGdW5j
dGlvblJldHVyblN0cmluZykgIT09ICJzdHJpbmciJyk7CitzaG91bGRCZVRydWUoJyhuZXcgRnVu
Y3Rpb25SZXR1cm5OdW1iZXIpIGluc3RhbmNlb2YgRnVuY3Rpb25SZXR1cm5OdW1iZXInKTsKK3No
b3VsZEJlVHJ1ZSgndHlwZW9mIChuZXcgRnVuY3Rpb25SZXR1cm5OdW1iZXIpICE9PSAibnVtYmVy
IicpOworc2hvdWxkQmVUcnVlKCcobmV3IEZ1bmN0aW9uUmV0dXJuTnVsbCkgaW5zdGFuY2VvZiBG
dW5jdGlvblJldHVybk51bGwnKTsKK3Nob3VsZEJlVHJ1ZSgnKG5ldyBGdW5jdGlvblJldHVybk51
bGwpICE9PSBudWxsJyk7CitzaG91bGRCZVRydWUoJyhuZXcgRnVuY3Rpb25SZXR1cm5TeW1ib2wp
IGluc3RhbmNlb2YgRnVuY3Rpb25SZXR1cm5TeW1ib2wnKTsKK3Nob3VsZEJlVHJ1ZSgnKG5ldyBG
dW5jdGlvblJldHVyblN5bWJvbCkgIT09IGdsb2JhbFN5bWJvbCcpOworc2hvdWxkVGhyb3coJyhu
ZXcgRnVuY3Rpb25UaHJvdyknKTsKKworCitkZWJ1ZygnJyk7IGRlYnVnKCdEZXJpdmVkIGNsYXNz
IGNhbGxpbmcgc3VwZXIoKScpOworY2xhc3MgRGVyaXZlZE5vUmV0dXJuIGV4dGVuZHMgQmFzZU5v
UmV0dXJuIHsgY29uc3RydWN0b3IoKSB7IHN1cGVyKCk7IH0gfTsKK2NsYXNzIERlcml2ZWRSZXR1
cm5JbXBsaWNpdCBleHRlbmRzIEJhc2VOb1JldHVybiB7IGNvbnN0cnVjdG9yKCkgeyBzdXBlcigp
OyByZXR1cm47IH0gfTsKK2NsYXNzIERlcml2ZWRSZXR1cm5VbmRlZmluZWQgZXh0ZW5kcyBCYXNl
Tm9SZXR1cm4geyBjb25zdHJ1Y3RvcigpIHsgc3VwZXIoKTsgcmV0dXJuIHVuZGVmaW5lZDsgfSB9
OworY2xhc3MgRGVyaXZlZFJldHVyblRoaXMgZXh0ZW5kcyBCYXNlTm9SZXR1cm4geyBjb25zdHJ1
Y3RvcigpIHsgc3VwZXIoKTsgcmV0dXJuIHRoaXM7IH0gfTsKK2NsYXNzIERlcml2ZWRSZXR1cm5P
YmplY3QgZXh0ZW5kcyBCYXNlTm9SZXR1cm4geyBjb25zdHJ1Y3RvcigpIHsgc3VwZXIoKTsgcmV0
dXJuIHthOjF9OyB9IH07CitjbGFzcyBEZXJpdmVkUmV0dXJuT2JqZWN0MiBleHRlbmRzIEJhc2VO
b1JldHVybiB7IGNvbnN0cnVjdG9yKCkgeyBzdXBlcigpOyByZXR1cm4gZ2xvYmFsVmFyaWFibGU7
IH0gfTsKK2NsYXNzIERlcml2ZWRSZXR1cm5TdHJpbmcgZXh0ZW5kcyBCYXNlTm9SZXR1cm4geyBj
b25zdHJ1Y3RvcigpIHsgc3VwZXIoKTsgcmV0dXJuICJ0ZXN0IjsgfSB9OworY2xhc3MgRGVyaXZl
ZFJldHVybk51bWJlciBleHRlbmRzIEJhc2VOb1JldHVybiB7IGNvbnN0cnVjdG9yKCkgeyBzdXBl
cigpOyByZXR1cm4gMTsgfSB9OworY2xhc3MgRGVyaXZlZFJldHVybk51bGwgZXh0ZW5kcyBCYXNl
Tm9SZXR1cm4geyBjb25zdHJ1Y3RvcigpIHsgc3VwZXIoKTsgcmV0dXJuIG51bGw7IH0gfTsKK2Ns
YXNzIERlcml2ZWRSZXR1cm5TeW1ib2wgZXh0ZW5kcyBCYXNlTm9SZXR1cm4geyBjb25zdHJ1Y3Rv
cigpIHsgc3VwZXIoKTsgcmV0dXJuIGdsb2JhbFN5bWJvbDsgfSB9OworY2xhc3MgRGVyaXZlZFRo
cm93IGV4dGVuZHMgQmFzZU5vUmV0dXJuIHsgY29uc3RydWN0b3IoKSB7IHN1cGVyKCk7IHRocm93
ICJUaHJvd24gRXhjZXB0aW9uIFN0cmluZyI7IH0gfTsKKworLy8gRGVyaXZlZCAtIEltcGxpY2l0
ID0+IHJldHVybiB0aGlzLgorc2hvdWxkQmVUcnVlKCcobmV3IERlcml2ZWROb1JldHVybikgaW5z
dGFuY2VvZiBEZXJpdmVkTm9SZXR1cm4nKTsKKworLy8gRGVyaXZlZCAtIEVhcmx5IHJldHVybiA9
PiByZXR1cm4gdGhpcy4KK3Nob3VsZEJlVHJ1ZSgnKG5ldyBEZXJpdmVkUmV0dXJuSW1wbGljaXQp
IGluc3RhbmNlb2YgRGVyaXZlZFJldHVybkltcGxpY2l0Jyk7CitzaG91bGRCZVRydWUoJyhuZXcg
RGVyaXZlZFJldHVybkltcGxpY2l0KSAhPT0gdW5kZWZpbmVkJyk7CitzaG91bGRCZVRydWUoJyhu
ZXcgRGVyaXZlZFJldHVyblVuZGVmaW5lZCkgaW5zdGFuY2VvZiBEZXJpdmVkUmV0dXJuVW5kZWZp
bmVkJyk7CitzaG91bGRCZVRydWUoJyhuZXcgRGVyaXZlZFJldHVyblVuZGVmaW5lZCkgIT09IHVu
ZGVmaW5lZCcpOworCisvLyBEZXJpdmVkIC0gcmV0dXJuIHRoaXMgPT4gcmV0dXJuIHRoaXMuCitz
aG91bGRCZVRydWUoJyhuZXcgRGVyaXZlZFJldHVyblRoaXMpIGluc3RhbmNlb2YgRGVyaXZlZFJl
dHVyblRoaXMnKTsKKworLy8gRGVyaXZlZCAtIHJldHVybiBPYmplY3QgPT4gcmV0dXJuIG9iamVj
dCwgbm90IGluc3RhbmNlLgorc2hvdWxkQmVGYWxzZSgnKG5ldyBEZXJpdmVkUmV0dXJuT2JqZWN0
KSBpbnN0YW5jZW9mIERlcml2ZWRSZXR1cm5PYmplY3QnKTsKK3Nob3VsZEJlVHJ1ZSgndHlwZW9m
IChuZXcgRGVyaXZlZFJldHVybk9iamVjdCkgPT09ICJvYmplY3QiJyk7CitzaG91bGRCZUZhbHNl
KCcobmV3IERlcml2ZWRSZXR1cm5PYmplY3QyKSBpbnN0YW5jZW9mIERlcml2ZWRSZXR1cm5PYmpl
Y3QyJyk7CitzaG91bGRCZVRydWUoJyhuZXcgRGVyaXZlZFJldHVybk9iamVjdDIpID09PSBnbG9i
YWxWYXJpYWJsZScpOworCisvLyBEZXJpdmVkIC0gcmV0dXJuIG5vbi1PYmplY3QgPT4gZXhjZXB0
aW9uLgorc2hvdWxkVGhyb3coJyhuZXcgRGVyaXZlZFJldHVyblN0cmluZyknKTsKK3Nob3VsZFRo
cm93KCcobmV3IERlcml2ZWRSZXR1cm5OdW1iZXIpJyk7CitzaG91bGRUaHJvdygnKG5ldyBEZXJp
dmVkUmV0dXJuTnVsbCknKTsKK3Nob3VsZFRocm93KCcobmV3IERlcml2ZWRSZXR1cm5TeW1ib2wp
Jyk7CitzaG91bGRUaHJvdygnKG5ldyBEZXJpdmVkVGhyb3cpJyk7CisKKworZGVidWcoJycpOyBk
ZWJ1ZygnRGVyaXZlZCBjbGFzcyBub3QgY2FsbGluZyBzdXBlcigpJyk7CitjbGFzcyBEZXJpdmVk
Tm9TdXBlck5vUmV0dXJuIGV4dGVuZHMgQmFzZU5vUmV0dXJuIHsgY29uc3RydWN0b3IoKSB7IH0g
fTsKK2NsYXNzIERlcml2ZWROb1N1cGVyUmV0dXJuIGV4dGVuZHMgQmFzZU5vUmV0dXJuIHsgY29u
c3RydWN0b3IoKSB7IHJldHVybjsgfSB9OworY2xhc3MgRGVyaXZlZE5vU3VwZXJSZXR1cm5VbmRl
ZmluZWQgZXh0ZW5kcyBCYXNlTm9SZXR1cm4geyBjb25zdHJ1Y3RvcigpIHsgcmV0dXJuIHVuZGVm
aW5lZDsgfSB9OworY2xhc3MgRGVyaXZlZE5vU3VwZXJSZXR1cm5PYmplY3QgZXh0ZW5kcyBCYXNl
Tm9SZXR1cm4geyBjb25zdHJ1Y3RvcigpIHsgcmV0dXJuIHthOjF9OyB9IH07CitjbGFzcyBEZXJp
dmVkTm9TdXBlclJldHVybk9iamVjdDIgZXh0ZW5kcyBCYXNlTm9SZXR1cm4geyBjb25zdHJ1Y3Rv
cigpIHsgcmV0dXJuIGdsb2JhbFZhcmlhYmxlOyB9IH07CitjbGFzcyBEZXJpdmVkTm9TdXBlclJl
dHVyblRoaXMgZXh0ZW5kcyBCYXNlTm9SZXR1cm4geyBjb25zdHJ1Y3RvcigpIHsgcmV0dXJuIHRo
aXM7IH0gfTsKK2NsYXNzIERlcml2ZWROb1N1cGVyUmV0dXJuU3RyaW5nIGV4dGVuZHMgQmFzZU5v
UmV0dXJuIHsgY29uc3RydWN0b3IoKSB7IHJldHVybiAidGVzdCI7IH0gfTsKK2NsYXNzIERlcml2
ZWROb1N1cGVyUmV0dXJuTnVtYmVyIGV4dGVuZHMgQmFzZU5vUmV0dXJuIHsgY29uc3RydWN0b3Io
KSB7IHJldHVybiAxOyB9IH07CitjbGFzcyBEZXJpdmVkTm9TdXBlclJldHVybk51bGwgZXh0ZW5k
cyBCYXNlTm9SZXR1cm4geyBjb25zdHJ1Y3RvcigpIHsgcmV0dXJuIG51bGw7IH0gfTsKK2NsYXNz
IERlcml2ZWROb1N1cGVyUmV0dXJuU3ltYm9sIGV4dGVuZHMgQmFzZU5vUmV0dXJuIHsgY29uc3Ry
dWN0b3IoKSB7IHJldHVybiBnbG9iYWxTeW1ib2w7IH0gfTsKK2NsYXNzIERlcml2ZWROb1N1cGVy
VGhyb3cgZXh0ZW5kcyBCYXNlTm9SZXR1cm4geyBjb25zdHJ1Y3RvcigpIHsgdGhyb3cgIlRocm93
biBFeGNlcHRpb24gU3RyaW5nIjsgfSB9OworCisvLyBEZXJpdmVkIHdpdGhvdXQgc3VwZXIoKSAt
IEltcGxpY2l0ID0+IHJldHVybiB0aGlzID0+IFREWi4KK3Nob3VsZFRocm93KCcobmV3IERlcml2
ZWROb1N1cGVyTm9SZXR1cm4pJyk7CisKKy8vIERlcml2ZWQgd2l0aG91dCBzdXBlcigpIC0gRWFy
bHkgcmV0dXJuID0+IHJldHVybiB0aGlzID0+IFREWi4KK3Nob3VsZFRocm93KCcobmV3IERlcml2
ZWROb1N1cGVyUmV0dXJuSW1wbGljaXQpJyk7CitzaG91bGRUaHJvdygnKG5ldyBEZXJpdmVkTm9T
dXBlclJldHVyblVuZGVmaW5lZCknKTsKKworLy8gRGVyaXZlZCB3aXRob3V0IHN1cGVyKCkgLSBy
ZXR1cm4gdGhpcyA9PiByZXR1cm4gdGhpcyA9PiBURFoKK3Nob3VsZFRocm93KCcobmV3IERlcml2
ZWROb1N1cGVyUmV0dXJuVGhpcyknKTsKKworLy8gRGVyaXZlZCB3aXRob3V0IHN1cGVyKCkgLSBy
ZXR1cm4gT2JqZWN0ID0+IG5vIHRoaXMgYWNjZXNzID0+IHJldHVybiBvYmplY3QsIG5vdCBpbnN0
YW5jZQorc2hvdWxkTm90VGhyb3coJyhuZXcgRGVyaXZlZE5vU3VwZXJSZXR1cm5PYmplY3QpJyk7
CitzaG91bGROb3RUaHJvdygnKG5ldyBEZXJpdmVkTm9TdXBlclJldHVybk9iamVjdDIpJyk7CisK
Ky8vIERlcml2ZWQgd2l0aG91dCBzdXBlcigpIC0gcmV0dXJuIG5vbi1PYmplY3QgPT4gZXhjZXB0
aW9uCitzaG91bGRUaHJvdygnKG5ldyBEZXJpdmVkTm9TdXBlclJldHVyblN0cmluZyknKTsgLy8g
VHlwZUVycm9yCitzaG91bGRUaHJvdygnKG5ldyBEZXJpdmVkTm9TdXBlclJldHVybk51bWJlcikn
KTsgLy8gVHlwZUVycm9yCitzaG91bGRUaHJvdygnKG5ldyBEZXJpdmVkTm9TdXBlclJldHVybk51
bGwpJyk7IC8vIFR5cGVFcnJvcgorc2hvdWxkVGhyb3coJyhuZXcgRGVyaXZlZE5vU3VwZXJSZXR1
cm5TeW1ib2wpJyk7IC8vIFR5cGVFcnJvcgorc2hvdWxkVGhyb3coJyhuZXcgRGVyaXZlZE5vU3Vw
ZXJUaHJvdyknKTsgLy8gVGhyb3duIGV4Y2VwdGlvbgorCisKK2RlYnVnKCcnKTsgZGVidWcoJ0Rl
cml2ZWQgY2xhc3Mgd2l0aCBkZWZhdWx0IGNvbnN0cnVjdG9yIGFuZCBiYXNlIGNsYXNzIHJldHVy
bmluZyBkaWZmZXJlbnQgdmFsdWVzJyk7CitjbGFzcyBEZXJpdmVkRGVmYXVsdENvbnN0cnVjdG9y
V2l0aEJhc2VOb1JldHVybiBleHRlbmRzIEJhc2VOb1JldHVybiB7IH07CitjbGFzcyBEZXJpdmVk
RGVmYXVsdENvbnN0cnVjdG9yV2l0aEJhc2VSZXR1cm5JbXBsaWNpdCBleHRlbmRzIEJhc2VSZXR1
cm5JbXBsaWNpdCB7IH07CitjbGFzcyBEZXJpdmVkRGVmYXVsdENvbnN0cnVjdG9yV2l0aEJhc2VS
ZXR1cm5VbmRlZmluZWQgZXh0ZW5kcyBCYXNlUmV0dXJuVW5kZWZpbmVkIHsgfTsKK2NsYXNzIERl
cml2ZWREZWZhdWx0Q29uc3RydWN0b3JXaXRoQmFzZVJldHVyblRoaXMgZXh0ZW5kcyBCYXNlUmV0
dXJuVGhpcyB7IH07CitjbGFzcyBEZXJpdmVkRGVmYXVsdENvbnN0cnVjdG9yV2l0aEJhc2VSZXR1
cm5PYmplY3QgZXh0ZW5kcyBCYXNlUmV0dXJuT2JqZWN0IHsgfTsKK2NsYXNzIERlcml2ZWREZWZh
dWx0Q29uc3RydWN0b3JXaXRoQmFzZVJldHVybk9iamVjdDIgZXh0ZW5kcyBCYXNlUmV0dXJuT2Jq
ZWN0MiB7IH07CitjbGFzcyBEZXJpdmVkRGVmYXVsdENvbnN0cnVjdG9yV2l0aEJhc2VSZXR1cm5T
dHJpbmcgZXh0ZW5kcyBCYXNlUmV0dXJuU3RyaW5nIHsgfTsKK2NsYXNzIERlcml2ZWREZWZhdWx0
Q29uc3RydWN0b3JXaXRoQmFzZVJldHVybk51bWJlciBleHRlbmRzIEJhc2VSZXR1cm5OdW1iZXIg
eyB9OworY2xhc3MgRGVyaXZlZERlZmF1bHRDb25zdHJ1Y3RvcldpdGhCYXNlUmV0dXJuTnVsbCBl
eHRlbmRzIEJhc2VSZXR1cm5OdWxsIHsgfTsKK2NsYXNzIERlcml2ZWREZWZhdWx0Q29uc3RydWN0
b3JXaXRoQmFzZVJldHVyblN5bWJvbCBleHRlbmRzIEJhc2VSZXR1cm5TeW1ib2wgeyB9OworY2xh
c3MgRGVyaXZlZERlZmF1bHRDb25zdHJ1Y3RvcldpdGhCYXNlVGhyb3cgZXh0ZW5kcyBCYXNlVGhy
b3cgeyB9OworCisvLyBEZXJpdmVkIGRlZmF1bHQgY29uc3RydWN0b3IgLSBpbXBsaWNpdCAic3Vw
ZXIoLi4uYXJndW1lbnRzKSIgcmV0dXJuIHRoZSByZXN1bHQgb2YgdGhlIGJhc2UgKE9iamVjdCBv
ciB0aGlzKS4KK3Nob3VsZEJlVHJ1ZSgnKG5ldyBEZXJpdmVkRGVmYXVsdENvbnN0cnVjdG9yV2l0
aEJhc2VOb1JldHVybikgaW5zdGFuY2VvZiBEZXJpdmVkRGVmYXVsdENvbnN0cnVjdG9yV2l0aEJh
c2VOb1JldHVybicpOworc2hvdWxkQmVUcnVlKCcobmV3IERlcml2ZWREZWZhdWx0Q29uc3RydWN0
b3JXaXRoQmFzZVJldHVybkltcGxpY2l0KSBpbnN0YW5jZW9mIERlcml2ZWREZWZhdWx0Q29uc3Ry
dWN0b3JXaXRoQmFzZVJldHVybkltcGxpY2l0Jyk7CitzaG91bGRCZVRydWUoJyhuZXcgRGVyaXZl
ZERlZmF1bHRDb25zdHJ1Y3RvcldpdGhCYXNlUmV0dXJuVW5kZWZpbmVkKSBpbnN0YW5jZW9mIERl
cml2ZWREZWZhdWx0Q29uc3RydWN0b3JXaXRoQmFzZVJldHVyblVuZGVmaW5lZCcpOworc2hvdWxk
QmVGYWxzZSgnKG5ldyBEZXJpdmVkRGVmYXVsdENvbnN0cnVjdG9yV2l0aEJhc2VSZXR1cm5PYmpl
Y3QpIGluc3RhbmNlb2YgRGVyaXZlZERlZmF1bHRDb25zdHJ1Y3RvcldpdGhCYXNlUmV0dXJuT2Jq
ZWN0Jyk7CitzaG91bGRCZVRydWUoJ3R5cGVvZiAobmV3IERlcml2ZWREZWZhdWx0Q29uc3RydWN0
b3JXaXRoQmFzZVJldHVybk9iamVjdCkgPT09ICJvYmplY3QiJyk7CitzaG91bGRCZUZhbHNlKCco
bmV3IERlcml2ZWREZWZhdWx0Q29uc3RydWN0b3JXaXRoQmFzZVJldHVybk9iamVjdDIpIGluc3Rh
bmNlb2YgRGVyaXZlZERlZmF1bHRDb25zdHJ1Y3RvcldpdGhCYXNlUmV0dXJuT2JqZWN0MicpOwor
c2hvdWxkQmVUcnVlKCcobmV3IERlcml2ZWREZWZhdWx0Q29uc3RydWN0b3JXaXRoQmFzZVJldHVy
bk9iamVjdDIpID09PSBnbG9iYWxWYXJpYWJsZScpOworc2hvdWxkQmVUcnVlKCcobmV3IERlcml2
ZWREZWZhdWx0Q29uc3RydWN0b3JXaXRoQmFzZVJldHVyblRoaXMpIGluc3RhbmNlb2YgRGVyaXZl
ZERlZmF1bHRDb25zdHJ1Y3RvcldpdGhCYXNlUmV0dXJuVGhpcycpOworc2hvdWxkQmVUcnVlKCco
bmV3IERlcml2ZWREZWZhdWx0Q29uc3RydWN0b3JXaXRoQmFzZVJldHVyblN0cmluZykgaW5zdGFu
Y2VvZiBEZXJpdmVkRGVmYXVsdENvbnN0cnVjdG9yV2l0aEJhc2VSZXR1cm5TdHJpbmcnKTsKK3No
b3VsZEJlVHJ1ZSgnKG5ldyBEZXJpdmVkRGVmYXVsdENvbnN0cnVjdG9yV2l0aEJhc2VSZXR1cm5O
dW1iZXIpIGluc3RhbmNlb2YgRGVyaXZlZERlZmF1bHRDb25zdHJ1Y3RvcldpdGhCYXNlUmV0dXJu
TnVtYmVyJyk7CitzaG91bGRCZVRydWUoJyhuZXcgRGVyaXZlZERlZmF1bHRDb25zdHJ1Y3Rvcldp
dGhCYXNlUmV0dXJuTnVsbCkgaW5zdGFuY2VvZiBEZXJpdmVkRGVmYXVsdENvbnN0cnVjdG9yV2l0
aEJhc2VSZXR1cm5OdWxsJyk7CitzaG91bGRCZVRydWUoJyhuZXcgRGVyaXZlZERlZmF1bHRDb25z
dHJ1Y3RvcldpdGhCYXNlUmV0dXJuU3ltYm9sKSBpbnN0YW5jZW9mIERlcml2ZWREZWZhdWx0Q29u
c3RydWN0b3JXaXRoQmFzZVJldHVyblN5bWJvbCcpOworc2hvdWxkVGhyb3coJyhuZXcgRGVyaXZl
ZERlZmF1bHRDb25zdHJ1Y3RvcldpdGhCYXNlVGhyb3cpJyk7CisKK3ZhciBzdWNjZXNzZnVsbHlQ
YXJzZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Ns
YXNzLXN5bnRheC1zdXBlci5qcyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9jbGFzcy1z
eW50YXgtc3VwZXIuanMKaW5kZXggYjI3YWRiZS4uODU1ZGYzNiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvanMvc2NyaXB0LXRlc3RzL2NsYXNzLXN5bnRheC1zdXBlci5qcworKysgYi9MYXlvdXRU
ZXN0cy9qcy9zY3JpcHQtdGVzdHMvY2xhc3Mtc3ludGF4LXN1cGVyLmpzCkBAIC00OSwxMiArNDks
MTQgQEAgc2hvdWxkVGhyb3coJyhuZXcgeCkubWV0aG9kMSgpJywgJyJSZWZlcmVuY2VFcnJvcjog
Q2Fubm90IGRlbGV0ZSBhIHN1cGVyIHByb3BlcnQKIHNob3VsZFRocm93KCcobmV3IHgpLm1ldGhv
ZDIoKScsICciUmVmZXJlbmNlRXJyb3I6IENhbm5vdCBkZWxldGUgYSBzdXBlciBwcm9wZXJ0eSIn
KTsKIHNob3VsZEJlVHJ1ZSgnbmV3IChjbGFzcyB7IGNvbnN0cnVjdG9yKCkgeyByZXR1cm4gdW5k
ZWZpbmVkOyB9IH0pIGluc3RhbmNlb2YgT2JqZWN0Jyk7CiBzaG91bGRCZVRydWUoJ25ldyAoY2xh
c3MgeyBjb25zdHJ1Y3RvcigpIHsgcmV0dXJuIDE7IH0gfSkgaW5zdGFuY2VvZiBPYmplY3QnKTsK
LXNob3VsZEJlKCduZXcgKGNsYXNzIGV4dGVuZHMgQmFzZSB7IGNvbnN0cnVjdG9yKCkgeyByZXR1
cm4gdW5kZWZpbmVkIH0gfSknLCAndW5kZWZpbmVkJyk7CitzaG91bGRUaHJvdygnbmV3IChjbGFz
cyBleHRlbmRzIEJhc2UgeyBjb25zdHJ1Y3RvcigpIHsgcmV0dXJuIHVuZGVmaW5lZCB9IH0pJyk7
CitzaG91bGRCZVRydWUoJ25ldyAoY2xhc3MgZXh0ZW5kcyBCYXNlIHsgY29uc3RydWN0b3IoKSB7
IHN1cGVyKCk7IHJldHVybiB1bmRlZmluZWQgfSB9KSBpbnN0YW5jZW9mIE9iamVjdCcpOwogc2hv
dWxkQmUoJ3ggPSB7IH07IG5ldyAoY2xhc3MgZXh0ZW5kcyBCYXNlIHsgY29uc3RydWN0b3IoKSB7
IHJldHVybiB4IH0gfSk7JywgJ3gnKTsKIHNob3VsZEJlRmFsc2UoJ3ggaW5zdGFuY2VvZiBCYXNl
Jyk7CiBzaG91bGRUaHJvdygnbmV3IChjbGFzcyBleHRlbmRzIEJhc2UgeyBjb25zdHJ1Y3Rvcigp
IHsgfSB9KScsICciUmVmZXJlbmNlRXJyb3I6IENhbm5vdCBhY2Nlc3MgdW5pbml0aWFsaXplZCB2
YXJpYWJsZS4iJyk7CiBzaG91bGRUaHJvdygnbmV3IChjbGFzcyBleHRlbmRzIEJhc2UgeyBjb25z
dHJ1Y3RvcigpIHsgcmV0dXJuIDE7IH0gfSknLCAnIlR5cGVFcnJvcjogQ2Fubm90IHJldHVybiBh
IG5vbi1vYmplY3QgdHlwZSBpbiB0aGUgY29uc3RydWN0b3Igb2YgYSBkZXJpdmVkIGNsYXNzLiIn
KTsKLXNob3VsZEJlKCduZXcgKGNsYXNzIGV4dGVuZHMgbnVsbCB7IGNvbnN0cnVjdG9yKCkgeyBy
ZXR1cm4gdW5kZWZpbmVkIH0gfSknLCAndW5kZWZpbmVkJyk7CitzaG91bGRUaHJvdygnbmV3IChj
bGFzcyBleHRlbmRzIG51bGwgeyBjb25zdHJ1Y3RvcigpIHsgcmV0dXJuIHVuZGVmaW5lZCB9IH0p
Jyk7CitzaG91bGRCZVRydWUoJ25ldyAoY2xhc3MgZXh0ZW5kcyBudWxsIHsgY29uc3RydWN0b3Io
KSB7IHN1cGVyKCk7IHJldHVybiB1bmRlZmluZWQgfSB9KSBpbnN0YW5jZW9mIE9iamVjdCcpOwog
c2hvdWxkQmUoJ3ggPSB7IH07IG5ldyAoY2xhc3MgZXh0ZW5kcyBudWxsIHsgY29uc3RydWN0b3Io
KSB7IHJldHVybiB4IH0gfSk7JywgJ3gnKTsKIHNob3VsZEJlVHJ1ZSgneCBpbnN0YW5jZW9mIE9i
amVjdCcpOwogc2hvdWxkVGhyb3coJ25ldyAoY2xhc3MgZXh0ZW5kcyBudWxsIHsgY29uc3RydWN0
b3IoKSB7IH0gfSknLCAnIlJlZmVyZW5jZUVycm9yOiBDYW5ub3QgYWNjZXNzIHVuaW5pdGlhbGl6
ZWQgdmFyaWFibGUuIicpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5n
ZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggNjMyNGMxMS4uYmJl
MDA1ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTcgQEAKIDIwMTUtMDMt
MjQgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAorICAgICAgICBFUzY6
IENsYXNzZXM6IEVhcmx5IHJldHVybiBpbiBzdWItY2xhc3MgY29uc3RydWN0b3IgcmVzdWx0cyBp
biByZXR1cm5pbmcgdW5kZWZpbmVkIGluc3RlYWQgb2YgaW5zdGFuY2UKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MzAxMgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXR1
cm4pOgorICAgICAgICBGaXggaGFuZGxpbmcgb2YgInVuZGVmaW5lZCIgd2hlbiByZXR1cm5lZCBm
cm9tIGEgRGVyaXZlZCBjbGFzcy4gSXQgd2FzCisgICAgICAgIHJldHVybmluZyAidW5kZWZpbmVk
IiB3aGVuIGl0IHNob3VsZCBoYXZlIHJldHVybmVkICJ0aGlzIi4KKworMjAxNS0wMy0yNCAgSm9z
ZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgorCiAgICAgICAgIEVTNjogT2JqZWN0
IExpdGVyYWwgTWV0aG9kcyB0b1N0cmluZyBpcyBtaXNzaW5nIG1ldGhvZCBuYW1lCiAgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDI5OTIKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmNwcAppbmRleCBjMjZkYzM1Li41NjEwOTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtMTkz
MCwyNCArMTkzMCwyOSBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJldHVy
bihSZWdpc3RlcklEKiBzcmMpCiAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtX2xleGlj
YWxFbnZpcm9ubWVudFJlZ2lzdGVyID8gbV9sZXhpY2FsRW52aXJvbm1lbnRSZWdpc3Rlci0+aW5k
ZXgoKSA6IGVtaXRMb2FkKDAsIEpTVmFsdWUoKSktPmluZGV4KCkpOwogICAgIH0KIAotICAgIGJv
b2wgdGhpc01pZ2h0QmVVbmluaXRpYWxpemVkID0gY29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3Ry
dWN0b3JLaW5kOjpEZXJpdmVkOwotICAgIGJvb2wgc3JjSXNUaGlzID0gc3JjLT5pbmRleCgpID09
IG1fdGhpc1JlZ2lzdGVyLmluZGV4KCk7Ci0gICAgaWYgKGlzQ29uc3RydWN0b3IoKSAmJiAoIXNy
Y0lzVGhpcyB8fCB0aGlzTWlnaHRCZVVuaW5pdGlhbGl6ZWQpKSB7Ci0gICAgICAgIFJlZlB0cjxM
YWJlbD4gaXNPYmplY3RPclVuZGVmaW5lZExhYmVsID0gbmV3TGFiZWwoKTsKLQotICAgICAgICBp
ZiAoc3JjSXNUaGlzICYmIHRoaXNNaWdodEJlVW5pbml0aWFsaXplZCkKKyAgICBpZiAoaXNDb25z
dHJ1Y3RvcigpKSB7CisgICAgICAgIGJvb2wgZGVyaXZlZCA9IGNvbnN0cnVjdG9yS2luZCgpID09
IENvbnN0cnVjdG9yS2luZDo6RGVyaXZlZDsKKyAgICAgICAgaWYgKGRlcml2ZWQgJiYgc3JjLT5p
bmRleCgpID09IG1fdGhpc1JlZ2lzdGVyLmluZGV4KCkpCiAgICAgICAgICAgICBlbWl0VERaQ2hl
Y2soc3JjKTsKIAotICAgICAgICBlbWl0SnVtcElmVHJ1ZShlbWl0SXNPYmplY3QobmV3VGVtcG9y
YXJ5KCksIHNyYyksIGlzT2JqZWN0T3JVbmRlZmluZWRMYWJlbC5nZXQoKSk7CisgICAgICAgIFJl
ZlB0cjxMYWJlbD4gaXNPYmplY3RMYWJlbCA9IG5ld0xhYmVsKCk7CisgICAgICAgIGVtaXRKdW1w
SWZUcnVlKGVtaXRJc09iamVjdChuZXdUZW1wb3JhcnkoKSwgc3JjKSwgaXNPYmplY3RMYWJlbC5n
ZXQoKSk7CiAKLSAgICAgICAgaWYgKHRoaXNNaWdodEJlVW5pbml0aWFsaXplZCkgewotICAgICAg
ICAgICAgZW1pdEp1bXBJZlRydWUoZW1pdElzVW5kZWZpbmVkKG5ld1RlbXBvcmFyeSgpLCBzcmMp
LCBpc09iamVjdE9yVW5kZWZpbmVkTGFiZWwuZ2V0KCkpOworICAgICAgICBpZiAoIWRlcml2ZWQp
CisgICAgICAgICAgICBlbWl0VW5hcnlOb0RzdE9wKG9wX3JldCwgJm1fdGhpc1JlZ2lzdGVyKTsK
KyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBSZWZQdHI8TGFiZWw+IGlzVW5kZWZpbmVkTGFi
ZWwgPSBuZXdMYWJlbCgpOworICAgICAgICAgICAgZW1pdEp1bXBJZlRydWUoZW1pdElzVW5kZWZp
bmVkKG5ld1RlbXBvcmFyeSgpLCBzcmMpLCBpc1VuZGVmaW5lZExhYmVsLmdldCgpKTsKICAgICAg
ICAgICAgIGVtaXRUaHJvd1R5cGVFcnJvcigiQ2Fubm90IHJldHVybiBhIG5vbi1vYmplY3QgdHlw
ZSBpbiB0aGUgY29uc3RydWN0b3Igb2YgYSBkZXJpdmVkIGNsYXNzLiIpOwotICAgICAgICB9IGVs
c2UKKyAgICAgICAgICAgIGVtaXRMYWJlbChpc1VuZGVmaW5lZExhYmVsLmdldCgpKTsKKyAgICAg
ICAgICAgIGlmIChjb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQp
CisgICAgICAgICAgICAgICAgZW1pdFREWkNoZWNrKCZtX3RoaXNSZWdpc3Rlcik7CiAgICAgICAg
ICAgICBlbWl0VW5hcnlOb0RzdE9wKG9wX3JldCwgJm1fdGhpc1JlZ2lzdGVyKTsKKyAgICAgICAg
fQogCi0gICAgICAgIGVtaXRMYWJlbChpc09iamVjdE9yVW5kZWZpbmVkTGFiZWwuZ2V0KCkpOwor
ICAgICAgICBlbWl0TGFiZWwoaXNPYmplY3RMYWJlbC5nZXQoKSk7CiAgICAgfQorCiAgICAgcmV0
dXJuIGVtaXRVbmFyeU5vRHN0T3Aob3BfcmV0LCBzcmMpOwogfQogCg==
</data>
<flag name="review"
          id="274177"
          type_id="1"
          status="+"
          setter="rniwa"
    />
    <flag name="commit-queue"
          id="274178"
          type_id="3"
          status="-"
          setter="rniwa"
    />
          </attachment>
      

    </bug>

</bugzilla>