<?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>183071</bug_id>
          
          <creation_ts>2018-02-22 20:15:16 -0800</creation_ts>
          <short_desc>[JSC] Implement $vm.ftlTrue function for FTL testing</short_desc>
          <delta_ts>2018-02-27 01:36:34 -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>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1401637</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-02-22 20:15:16 -0800</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1401646</commentid>
    <comment_count>1</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-02-22 21:21:50 -0800</bug_when>
    <thetext>Let&apos;s name it $vm.ftlTrue instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1401648</commentid>
    <comment_count>2</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-02-22 21:50:32 -0800</bug_when>
    <thetext>(In reply to Mark Lam from comment #1)
&gt; Let&apos;s name it $vm.ftlTrue instead.

Sounds good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1401739</commentid>
    <comment_count>3</comment_count>
      <attachid>334536</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-02-23 09:40:34 -0800</bug_when>
    <thetext>Created attachment 334536
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1401741</commentid>
    <comment_count>4</comment_count>
      <attachid>334536</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-02-23 09:46:58 -0800</bug_when>
    <thetext>Comment on attachment 334536
Patch

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

r=me with suggestions.

&gt; Source/JavaScriptCore/jsc.cpp:-292
&gt;  static EncodedJSValue JSC_HOST_CALL functionFalse1(ExecState*);
&gt; -static EncodedJSValue JSC_HOST_CALL functionFalse2(ExecState*);

You can rename functionFalse1 to functionFalse now that there&apos;s only one.

&gt; Source/JavaScriptCore/jsc.cpp:518
&gt; -        putDirectNativeFunction(vm, this, Identifier::fromString(&amp;vm, &quot;isFinalTier&quot;), 0, functionFalse2, IsFinalTierIntrinsic, static_cast&lt;unsigned&gt;(PropertyAttribute::DontEnum));
&gt; +        putDirectNativeFunction(vm, this, Identifier::fromString(&amp;vm, &quot;isFinalTier&quot;), 0, functionFalse1, IsFinalTierIntrinsic, static_cast&lt;unsigned&gt;(PropertyAttribute::DontEnum));

Ditto.  Use functionFalse.

&gt; Source/JavaScriptCore/jsc.cpp:-1831
&gt;  EncodedJSValue JSC_HOST_CALL functionFalse1(ExecState*) { return JSValue::encode(jsBoolean(false)); }
&gt; -EncodedJSValue JSC_HOST_CALL functionFalse2(ExecState*) { return JSValue::encode(jsBoolean(false)); }

Ditto.  Use functionFalse.

&gt; JSTests/stress/has-indexed-property-array-storage-ftl.js:8
&gt; +var flag = false;

I suggest renaming &quot;flag&quot; to &quot;didFTLCompile&quot;.

&gt; JSTests/stress/has-indexed-property-slow-put-array-storage-ftl.js:8
&gt; +var flag = false;

I suggest renaming &quot;flag&quot; to &quot;didFTLCompile&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1401743</commentid>
    <comment_count>5</comment_count>
      <attachid>334536</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-02-23 09:50:40 -0800</bug_when>
    <thetext>Comment on attachment 334536
Patch

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

Thanks!

&gt;&gt; Source/JavaScriptCore/jsc.cpp:-292
&gt;&gt; -static EncodedJSValue JSC_HOST_CALL functionFalse2(ExecState*);
&gt; 
&gt; You can rename functionFalse1 to functionFalse now that there&apos;s only one.

Nice, fixed.

&gt;&gt; Source/JavaScriptCore/jsc.cpp:518
&gt;&gt; +        putDirectNativeFunction(vm, this, Identifier::fromString(&amp;vm, &quot;isFinalTier&quot;), 0, functionFalse1, IsFinalTierIntrinsic, static_cast&lt;unsigned&gt;(PropertyAttribute::DontEnum));
&gt; 
&gt; Ditto.  Use functionFalse.

Fixed.

&gt;&gt; Source/JavaScriptCore/jsc.cpp:-1831
&gt;&gt; -EncodedJSValue JSC_HOST_CALL functionFalse2(ExecState*) { return JSValue::encode(jsBoolean(false)); }
&gt; 
&gt; Ditto.  Use functionFalse.

Fixed.

&gt;&gt; JSTests/stress/has-indexed-property-array-storage-ftl.js:8
&gt;&gt; +var flag = false;
&gt; 
&gt; I suggest renaming &quot;flag&quot; to &quot;didFTLCompile&quot;.

Nice. Changed.

&gt;&gt; JSTests/stress/has-indexed-property-slow-put-array-storage-ftl.js:8
&gt;&gt; +var flag = false;
&gt; 
&gt; I suggest renaming &quot;flag&quot; to &quot;didFTLCompile&quot;.

Changed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1401744</commentid>
    <comment_count>6</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-02-23 09:54:13 -0800</bug_when>
    <thetext>Committed r228950: &lt;https://trac.webkit.org/changeset/228950&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1401745</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-02-23 09:55:20 -0800</bug_when>
    <thetext>&lt;rdar://problem/37829272&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1401811</commentid>
    <comment_count>8</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2018-02-23 14:51:46 -0800</bug_when>
    <thetext>32-bit test failures on new tests:

https://build.webkit.org/builders/Apple%20High%20Sierra%2032-bit%20JSC%20%28BuildAndTest%29/builds/1263/steps/webkit-32bit-jsc-test/logs/stdio

stress/has-indexed-property-array-storage-ftl.js.misc-ftl-no-cjit: Exception: Error: bad value: false
stress/has-indexed-property-array-storage-ftl.js.misc-ftl-no-cjit: shouldBe@has-indexed-property-array-storage-ftl.js:5:24
stress/has-indexed-property-array-storage-ftl.js.misc-ftl-no-cjit: global code@has-indexed-property-array-storage-ftl.js:22:9
stress/has-indexed-property-array-storage-ftl.js.misc-ftl-no-cjit: ERROR: Unexpected exit code: 3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1401813</commentid>
    <comment_count>9</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-02-23 14:53:10 -0800</bug_when>
    <thetext>(In reply to Alexey Proskuryakov from comment #8)
&gt; 32-bit test failures on new tests:

the FTL is not supported on 32-bit.  Hence, these are guaranteed to fail.  We should skip these tests on 32-bit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1401978</commentid>
    <comment_count>10</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2018-02-25 23:14:36 -0800</bug_when>
    <thetext>Please do skip them then!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1401988</commentid>
    <comment_count>11</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-02-26 00:57:53 -0800</bug_when>
    <thetext>Committed r228986: &lt;https://trac.webkit.org/changeset/228986&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1402006</commentid>
    <comment_count>12</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-02-26 03:22:09 -0800</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #11)
&gt; Committed r228986: &lt;https://trac.webkit.org/changeset/228986&gt;

OK, skipped!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1402309</commentid>
    <comment_count>13</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-02-27 01:36:34 -0800</bug_when>
    <thetext>Committed r229057: &lt;https://trac.webkit.org/changeset/229057&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>334536</attachid>
            <date>2018-02-23 09:40:34 -0800</date>
            <delta_ts>2018-02-23 09:46:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-183071-20180224024033.patch</filename>
            <type>text/plain</type>
            <size>25882</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI4OTQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
NDA2Mjg5ZDZjMDE5ZTJiOGNhYTE2MzZjMDkxYmQ5ODg5MjVlNzBlLi4yNjFhM2I2ZjEwOWI2NTIy
MDBkOGJjMGQ1ZjZjMTc3OGI3MjViOTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOCBAQAorMjAxOC0wMi0yMyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbSlNDXSBJbXBsZW1lbnQgJHZtLmZ0bFRydWUgZnVuY3Rpb24gZm9y
IEZUTCB0ZXN0aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xODMwNzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGQgJHZtLmZ0bFRydWUsIHdoaWNoIGJlY29tZXMgdHJ1ZSBpZiB0aGUgY2FsbGVyIGlz
IGNvbXBpbGVkIGluIEZUTC4KKyAgICAgICAgVGhpcyBpcyB1c2VmdWwgZm9yIHRlc3Rpbmcgd2hl
dGhlciB0aGUgY2FsbGVyIGZ1bmN0aW9uIGlzIGNvbXBpbGVkIGluIEZUTC4KKworICAgICAgICBX
ZSBhbHNvIHJlbW92ZSBkdXBsaWNhdGUgREZHVHJ1ZSBmdW5jdGlvbiBpbiBqc2MuY3BwLiBXZSBo
YXZlICR2bS5kZmdUcnVlLgorCisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljQ2FsbCk6
CisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKEdsb2JhbE9iamVjdDo6ZmluaXNoQ3JlYXRp
b24pOgorICAgICAgICAoZnVuY3Rpb25GYWxzZTEpOgorICAgICAgICAoZnVuY3Rpb25GYWxzZTIp
OiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSW50cmluc2ljLmNwcDoKKyAgICAgICAgKEpT
Qzo6aW50cmluc2ljTmFtZSk6CisgICAgICAgICogcnVudGltZS9JbnRyaW5zaWMuaDoKKyAgICAg
ICAgKiB0b29scy9KU0RvbGxhclZNLmNwcDoKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25GVExUcnVl
KToKKyAgICAgICAgKEpTQzo6SlNEb2xsYXJWTTo6ZmluaXNoQ3JlYXRpb24pOgorCiAyMDE4LTAy
LTIyICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCiAgICAgICAgIFtG
VExdIFN1cHBvcnQgSGFzSW5kZXhlZFByb3BlcnR5IGZvciBBcnJheVN0b3JhZ2UgYW5kIFNsb3dQ
dXRBcnJheVN0b3JhZ2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Qnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29k
ZVBhcnNlci5jcHAKaW5kZXggYWU4YzZiYzg1MGM1MmVhNzM3OTVjZWZiYWQ1MGFiMDQ0OTIwNzg4
Ny4uOGRiN2Y1Nzk2NjFjNDczZjMxOWU5MWUwODEzOWE1Y2RmOTFlZWY1NiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTI3NzksNiAr
Mjc3OSwxMiBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNDYWxsKE5vZGUq
IGNhbGxlZSwgaW50IHJlc3VsdE9wZXJhbmQsIEludHJpbgogICAgICAgICBzZXQoVmlydHVhbFJl
Z2lzdGVyKHJlc3VsdE9wZXJhbmQpLCBqc0NvbnN0YW50KGpzQm9vbGVhbih0cnVlKSkpOwogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CisKKyAgICBjYXNlIEZUTFRydWVJbnRyaW5zaWM6IHsK
KyAgICAgICAgaW5zZXJ0Q2hlY2tzKCk7CisgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIocmVz
dWx0T3BlcmFuZCksIGpzQ29uc3RhbnQoanNCb29sZWFuKGlzRlRMKG1fZ3JhcGgubV9wbGFuLm1v
ZGUpKSkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CiAgICAgICAgIAogICAgIGNhc2Ug
T1NSRXhpdEludHJpbnNpYzogewogICAgICAgICBpbnNlcnRDaGVja3MoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pz
Yy5jcHAKaW5kZXggMDYwMmU0ZDk0MTE0NTBjYzg4M2MxMjgzZDczZTVkYzI3YTUyN2M3MS4uNzhh
NGQ0ZDI5N2E1NGFiMGUyMTJmYzAzNzJhMWYxYzViZTlkYmYyMSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5j
cHAKQEAgLTI4OSw3ICsyODksNiBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBmdW5jdGlvblRyYW5zZmVyQXJyYXlCdWZmZXIoRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkZhaWxOZXh0TmV3Q29kZUJsb2NrKEV4ZWNT
dGF0ZSopOwogc3RhdGljIE5PX1JFVFVSTl9XSVRIX1ZBTFVFIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZnVuY3Rpb25RdWl0KEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25GYWxzZTEoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkZhbHNlMihFeGVjU3RhdGUqKTsKIHN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uVW5kZWZpbmVkMShFeGVjU3Rh
dGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uVW5kZWZp
bmVkMihFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmN0aW9uSXNJbnQzMihFeGVjU3RhdGUqKTsKQEAgLTUxNSw5ICs1MTQsOCBAQCBjbGFzcyBHbG9i
YWxPYmplY3QgOiBwdWJsaWMgSlNHbG9iYWxPYmplY3QgewogICAgICAgICBhZGRGdW5jdGlvbih2
bSwgImNsZWFyU2FtcGxpbmdGbGFncyIsIGZ1bmN0aW9uQ2xlYXJTYW1wbGluZ0ZsYWdzLCAxKTsK
ICNlbmRpZgogCi0gICAgICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKHZtLCB0aGlzLCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgIkRGR1RydWUiKSwgMCwgZnVuY3Rpb25GYWxzZTEsIERG
R1RydWVJbnRyaW5zaWMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0pKTsKICAgICAgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24odm0sIHRoaXMsIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiT1NSRXhpdCIpLCAwLCBmdW5jdGlvblVuZGVmaW5l
ZDEsIE9TUkV4aXRJbnRyaW5zaWMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0pKTsKLSAgICAgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24odm0sIHRo
aXMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiaXNGaW5hbFRpZXIiKSwgMCwgZnVuY3Rp
b25GYWxzZTIsIElzRmluYWxUaWVySW50cmluc2ljLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CisgICAgICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0
aW9uKHZtLCB0aGlzLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImlzRmluYWxUaWVyIiks
IDAsIGZ1bmN0aW9uRmFsc2UxLCBJc0ZpbmFsVGllckludHJpbnNpYywgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogICAgICAgICBwdXREaXJlY3RO
YXRpdmVGdW5jdGlvbih2bSwgdGhpcywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJwcmVk
aWN0SW50MzIiKSwgMCwgZnVuY3Rpb25VbmRlZmluZWQyLCBTZXRJbnQzMkhlYXBQcmVkaWN0aW9u
SW50cmluc2ljLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtKSk7CiAgICAgICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKHZtLCB0aGlzLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKCZ2bSwgImlzSW50MzIiKSwgMCwgZnVuY3Rpb25Jc0ludDMyLCBDaGVj
a0ludDMySW50cmluc2ljLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtKSk7CiAgICAgICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKHZtLCB0aGlzLCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImZpYXRJbnQ1MiIpLCAwLCBmdW5jdGlvbklkZW50
aXR5LCBGaWF0SW50NTJJbnRyaW5zaWMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pKTsKQEAgLTE4MjgsNyArMTgyNiw2IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25RdWl0KEV4ZWNTdGF0ZSopCiB9CiAKIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25GYWxzZTEoRXhlY1N0YXRlKikgeyByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihmYWxzZSkpOyB9Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGZ1bmN0aW9uRmFsc2UyKEV4ZWNTdGF0ZSopIHsgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc0Jvb2xlYW4oZmFsc2UpKTsgfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmN0aW9uVW5kZWZpbmVkMShFeGVjU3RhdGUqKSB7IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7IH0KIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25VbmRl
ZmluZWQyKEV4ZWNTdGF0ZSopIHsgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2lj
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5jcHAKaW5kZXgg
MWUwOWFiMTA4NTY2ODVkNjE3YmQ2OTY2ZjMwZGM2NzIyMGIyOTE1Mi4uYTBhYTEwOGE4OTVjY2Rj
MmVhMGI4MmQwZTZhMDVkMDZmYTZhNTE1MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50cmluc2ljLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRyaW5zaWMuY3BwCkBAIC0yMTMsNiArMjEzLDggQEAgY29uc3QgY2hhciogaW50cmlu
c2ljTmFtZShJbnRyaW5zaWMgaW50cmluc2ljKQogICAgICAgICByZXR1cm4gIlVuZGVyc2NvcmVQ
cm90b0ludHJpbnNpYyI7CiAgICAgY2FzZSBERkdUcnVlSW50cmluc2ljOgogICAgICAgICByZXR1
cm4gIkRGR1RydWVJbnRyaW5zaWMiOworICAgIGNhc2UgRlRMVHJ1ZUludHJpbnNpYzoKKyAgICAg
ICAgcmV0dXJuICJGVExUcnVlSW50cmluc2ljIjsKICAgICBjYXNlIE9TUkV4aXRJbnRyaW5zaWM6
CiAgICAgICAgIHJldHVybiAiT1NSRXhpdEludHJpbnNpYyI7CiAgICAgY2FzZSBJc0ZpbmFsVGll
ckludHJpbnNpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dHJpbnNpYy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmgKaW5k
ZXggNzg4YWNlYzgyODY2MzQ4ZWEzOGNmNGM5MzQ4MDM3ZTk4MWI0MDdkOS4uNzgzMmUwNmQyZjRi
MTNkOGY3MDkzYzRjY2ExMTI4MmFkOTA2YjEwNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50cmluc2ljLmgKQEAgLTEyNCw2ICsxMjQsNyBAQCBlbnVtIEludHJpbnNpYyB7CiAg
ICAgLy8gRGVidWdnaW5nIGludHJpbnNpY3MuIFRoZXNlIGFyZSBtZWFudCB0byBiZSB1c2VkIGFz
IHRlc3RpbmcgaGFja3Mgd2l0aGluCiAgICAgLy8ganNjLmNwcCBhbmQgc2hvdWxkIG5ldmVyIGJl
IGV4cG9zZWQgdG8gdXNlcnMuCiAgICAgREZHVHJ1ZUludHJpbnNpYywKKyAgICBGVExUcnVlSW50
cmluc2ljLAogICAgIE9TUkV4aXRJbnRyaW5zaWMsCiAgICAgSXNGaW5hbFRpZXJJbnRyaW5zaWMs
CiAgICAgU2V0SW50MzJIZWFwUHJlZGljdGlvbkludHJpbnNpYywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAppbmRleCBkYTk2NjU3ZmU3ZjllZDBiNzdmYmEyMmNm
NzU3N2ZiNDg3ZTMzN2YwLi45ZTA4YWZlZTI1ZGM4MWExOTRlOWMwNDU5OGFiZWNmYWQ3ZGNlMDBh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCkBAIC0xMDQ5
LDYgKzEwNDksMTMgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rp
b25ERkdUcnVlKEV4ZWNTdGF0ZSopCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xl
YW4oZmFsc2UpKTsKIH0KIAorLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBjdXJyZW50IGZyYW1lIGlz
IGEgRlRMIGZyYW1lLgorLy8gVXNhZ2U6IGlzRlRMID0gJHZtLmZ0bFRydWUoKQorc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25GVExUcnVlKEV4ZWNTdGF0ZSopCit7
CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oZmFsc2UpKTsKK30KKwogc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcHVNZmVuY2UoRXhlY1N0
YXRlKikKIHsKICNpZiBDUFUoWDg2XzY0KSAmJiAhT1MoV0lORE9XUykKQEAgLTE3NTksNiArMTc2
Niw3IEBAIHZvaWQgSlNEb2xsYXJWTTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogICAgIGFkZEZ1
bmN0aW9uKHZtLCAiY3Jhc2giLCBmdW5jdGlvbkNyYXNoLCAwKTsKIAogICAgIHB1dERpcmVjdE5h
dGl2ZUZ1bmN0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZt
LCAiZGZnVHJ1ZSIpLCAwLCBmdW5jdGlvbkRGR1RydWUsIERGR1RydWVJbnRyaW5zaWMsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKKyAgICBwdXRE
aXJlY3ROYXRpdmVGdW5jdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKCZ2bSwgImZ0bFRydWUiKSwgMCwgZnVuY3Rpb25GVExUcnVlLCBGVExUcnVlSW50cmluc2lj
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAK
ICAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKCZ2bSwgImNwdU1mZW5jZSIpLCAwLCBmdW5jdGlvbkNwdU1mZW5jZSwgQ1BV
TWZlbmNlSW50cmluc2ljLCAwKTsKICAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbih2bSwgZ2xv
YmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImNwdVJkdHNjIiksIDAsIGZ1
bmN0aW9uQ3B1UmR0c2MsIENQVVJkdHNjSW50cmluc2ljLCAwKTsKZGlmZiAtLWdpdCBhL0pTVGVz
dHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMzY1Yzg0ZDc4ZTNiYTEyMTA4
OTViNWJhNzZiM2M1ZTgwMTNmOGEzMi4uOGIyNTFmMzI3NDgxOTU5MjZmMGExMTYxMTZlOGMxOGM2
NWI1MDM4YiAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw2OSBAQAorMjAxOC0wMi0yMyAgWXVzdWtlIFN1enVraSAgPHV0YXRh
bmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbSlNDXSBJbXBsZW1lbnQgJHZtLmZ0bFRydWUg
ZnVuY3Rpb24gZm9yIEZUTCB0ZXN0aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xODMwNzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIHN0cmVzcy9kZWFkLWZpYXQtdmFsdWUtdG8taW50NTItdGhlbi1l
eGl0LW5vdC1kb3VibGUuanM6CisgICAgICAgIChmb28pOgorICAgICAgICAqIHN0cmVzcy9kZWFk
LWZpYXQtdmFsdWUtdG8taW50NTItdGhlbi1leGl0LW5vdC1pbnQ1Mi5qczoKKyAgICAgICAgKGZv
byk6CisgICAgICAgICogc3RyZXNzL2RlYWQtZmlhdC12YWx1ZS10by1pbnQ1Mi5qczoKKyAgICAg
ICAgKGZvbyk6CisgICAgICAgICogc3RyZXNzL2RlYWQtb3NyLWVudHJ5LXZhbHVlLmpzOgorICAg
ICAgICAoZm9vKToKKyAgICAgICAgKiBzdHJlc3MvZmlhdC12YWx1ZS10by1pbnQ1Mi10aGVuLWV4
aXQtbm90LWRvdWJsZS5qczoKKyAgICAgICAgKGZvbyk6CisgICAgICAgICogc3RyZXNzL2ZpYXQt
dmFsdWUtdG8taW50NTItdGhlbi1leGl0LW5vdC1pbnQ1Mi5qczoKKyAgICAgICAgKGZvbyk6Cisg
ICAgICAgICogc3RyZXNzL2ZpYXQtdmFsdWUtdG8taW50NTItdGhlbi1mYWlsLXRvLWZvbGQuanM6
CisgICAgICAgIChmb28pOgorICAgICAgICAqIHN0cmVzcy9maWF0LXZhbHVlLXRvLWludDUyLXRo
ZW4tZm9sZC5qczoKKyAgICAgICAgKGZvbyk6CisgICAgICAgICogc3RyZXNzL2ZpYXQtdmFsdWUt
dG8taW50NTIuanM6CisgICAgICAgIChmb28pOgorICAgICAgICAqIHN0cmVzcy9mb2xkLWJhc2Vk
LW9uLWludDMyLXByb29mLW11bC1icmFuY2guanM6CisgICAgICAgIChmb28pOgorICAgICAgICAq
IHN0cmVzcy9mb2xkLXByb2ZpbGVkLWNhbGwtdG8tY2FsbC5qczoKKyAgICAgICAgKGZvbyk6Cisg
ICAgICAgICogc3RyZXNzL2ZvbGQtdG8tZG91YmxlLWNvbnN0YW50LXRoZW4tZXhpdC5qczoKKyAg
ICAgICAgKGZvbyk6CisgICAgICAgICogc3RyZXNzL2ZvbGQtdG8taW50NTItY29uc3RhbnQtdGhl
bi1leGl0LmpzOgorICAgICAgICAoZm9vKToKKyAgICAgICAgKiBzdHJlc3MvZm9sZC10by1wcmlt
aXRpdmUtaW4tY2ZhLmpzOgorICAgICAgICAoZm9vKToKKyAgICAgICAgKiBzdHJlc3MvZm9sZC10
by1wcmltaXRpdmUtdG8taWRlbnRpdHktaW4tY2ZhLmpzOgorICAgICAgICAoZm9vKToKKyAgICAg
ICAgKiBzdHJlc3MvaGFzLWluZGV4ZWQtcHJvcGVydHktYXJyYXktc3RvcmFnZS1mdGwuanM6IEFk
ZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAodGVzdDEpOgorICAgICAgICAodGVz
dDIpOgorICAgICAgICAqIHN0cmVzcy9oYXMtaW5kZXhlZC1wcm9wZXJ0eS1zbG93LXB1dC1hcnJh
eS1zdG9yYWdlLWZ0bC5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgICh0
ZXN0MSk6CisgICAgICAgICh0ZXN0Mik6CisgICAgICAgICogc3RyZXNzL2ludDUyLWFpLWFkZC10
aGVuLWZpbHRlci1pbnQzMi5qczoKKyAgICAgICAgKGZvbyk6CisgICAgICAgICogc3RyZXNzL2lu
dDUyLWFpLW11bC1hbmQtY2xlYW4tbmVnLXplcm8tdGhlbi1maWx0ZXItaW50MzIuanM6CisgICAg
ICAgIChmb28pOgorICAgICAgICAqIHN0cmVzcy9pbnQ1Mi1haS1tdWwtdGhlbi1maWx0ZXItaW50
MzIuanM6CisgICAgICAgIChmb28pOgorICAgICAgICAqIHN0cmVzcy9pbnQ1Mi1haS1uZWctdGhl
bi1maWx0ZXItaW50MzIuanM6CisgICAgICAgIChmb28pOgorICAgICAgICAqIHN0cmVzcy9pbnQ1
Mi1haS1zdWItdGhlbi1maWx0ZXItaW50MzIuanM6CisgICAgICAgIChmb28pOgorICAgICAgICAq
IHN0cmVzcy9saWNtLXByZS1oZWFkZXItY2Fubm90LWV4aXQtbmVzdGVkLmpzOgorICAgICAgICAo
Zm9vKToKKyAgICAgICAgKiBzdHJlc3MvbGljbS1wcmUtaGVhZGVyLWNhbm5vdC1leGl0LmpzOgor
ICAgICAgICAoZm9vKToKKyAgICAgICAgKiBzdHJlc3Mvc3BhcnNlLWFycmF5LWVudHJ5LXVwZGF0
ZS0xNDQwNjcuanM6CisgICAgICAgICh1c2VNZW1vcnlUb1RyaWdnZXJHQ3MpOgorICAgICAgICAq
IHN0cmVzcy90ZXN0LXNwZWMtbWlzYy5qczoKKyAgICAgICAgKGZvbyk6CisgICAgICAgICogc3Ry
ZXNzL3RyaWNreS1hcnJheS1ib3VuZHMtY2hlY2tzLmpzOgorICAgICAgICAoZm9vKToKKwogMjAx
OC0wMi0yMiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KIAogICAgICAg
ICBbRlRMXSBTdXBwb3J0IEhhc0luZGV4ZWRQcm9wZXJ0eSBmb3IgQXJyYXlTdG9yYWdlIGFuZCBT
bG93UHV0QXJyYXlTdG9yYWdlCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9kZWFkLWZpYXQt
dmFsdWUtdG8taW50NTItdGhlbi1leGl0LW5vdC1kb3VibGUuanMgYi9KU1Rlc3RzL3N0cmVzcy9k
ZWFkLWZpYXQtdmFsdWUtdG8taW50NTItdGhlbi1leGl0LW5vdC1kb3VibGUuanMKaW5kZXggMzM1
NTEyMzI3MTEyNjg1MDdiMDBmNzAyNTlkMjlhODdhYTE1YWRlZi4uYzczN2E0M2MwYTExNGIxZDc2
MDNmYmQxYmY5YjlkNzk3Y2IwNDc2YyAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3MvZGVhZC1m
aWF0LXZhbHVlLXRvLWludDUyLXRoZW4tZXhpdC1ub3QtZG91YmxlLmpzCisrKyBiL0pTVGVzdHMv
c3RyZXNzL2RlYWQtZmlhdC12YWx1ZS10by1pbnQ1Mi10aGVuLWV4aXQtbm90LWRvdWJsZS5qcwpA
QCAtMSw1ICsxLDUgQEAKIGZ1bmN0aW9uIGZvbygpIHsKLSAgICB2YXIgdmFsdWUgPSBiYXIoREZH
VHJ1ZSgpKTsKKyAgICB2YXIgdmFsdWUgPSBiYXIoJHZtLmRmZ1RydWUoKSk7CiAgICAgZmlhdElu
dDUyKHZhbHVlKTsKICAgICBmaWF0SW50NTIodmFsdWUpOwogfQpkaWZmIC0tZ2l0IGEvSlNUZXN0
cy9zdHJlc3MvZGVhZC1maWF0LXZhbHVlLXRvLWludDUyLXRoZW4tZXhpdC1ub3QtaW50NTIuanMg
Yi9KU1Rlc3RzL3N0cmVzcy9kZWFkLWZpYXQtdmFsdWUtdG8taW50NTItdGhlbi1leGl0LW5vdC1p
bnQ1Mi5qcwppbmRleCA1ZWNjNDA0ODE3NjNhNTllMzQ0ODk0MjQzZTI1MWViNTEwODFhYjc1Li40
ZDI5ZTdmNjI5OTg1OWQ4MDA4NWUxYzJmNDUyNzcxMzk0MGQ2MzBjIDEwMDY0NAotLS0gYS9KU1Rl
c3RzL3N0cmVzcy9kZWFkLWZpYXQtdmFsdWUtdG8taW50NTItdGhlbi1leGl0LW5vdC1pbnQ1Mi5q
cworKysgYi9KU1Rlc3RzL3N0cmVzcy9kZWFkLWZpYXQtdmFsdWUtdG8taW50NTItdGhlbi1leGl0
LW5vdC1pbnQ1Mi5qcwpAQCAtMSw1ICsxLDUgQEAKIGZ1bmN0aW9uIGZvbygpIHsKLSAgICB2YXIg
dmFsdWUgPSBiYXIoREZHVHJ1ZSgpKTsKKyAgICB2YXIgdmFsdWUgPSBiYXIoJHZtLmRmZ1RydWUo
KSk7CiAgICAgZmlhdEludDUyKHZhbHVlKTsKICAgICBmaWF0SW50NTIodmFsdWUpOwogfQpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZGVhZC1maWF0LXZhbHVlLXRvLWludDUyLmpzIGIvSlNU
ZXN0cy9zdHJlc3MvZGVhZC1maWF0LXZhbHVlLXRvLWludDUyLmpzCmluZGV4IDBlNTRkYWFjZDI1
ZWQzYWVmOTYzYmQwZDFhMDkxOGM5OTJhZGJiNDYuLmZiZGUyMDE5NWE1MDNjYzgyYjg1YTUzNjQx
ODMwYWZmNWM0ZDhkMGEgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL2RlYWQtZmlhdC12YWx1
ZS10by1pbnQ1Mi5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9kZWFkLWZpYXQtdmFsdWUtdG8taW50
NTIuanMKQEAgLTEsNSArMSw1IEBACiBmdW5jdGlvbiBmb28oKSB7Ci0gICAgdmFyIHZhbHVlID0g
YmFyKERGR1RydWUoKSk7CisgICAgdmFyIHZhbHVlID0gYmFyKCR2bS5kZmdUcnVlKCkpOwogICAg
IGZpYXRJbnQ1Mih2YWx1ZSk7CiAgICAgZmlhdEludDUyKHZhbHVlKTsKIH0KZGlmZiAtLWdpdCBh
L0pTVGVzdHMvc3RyZXNzL2RlYWQtb3NyLWVudHJ5LXZhbHVlLmpzIGIvSlNUZXN0cy9zdHJlc3Mv
ZGVhZC1vc3ItZW50cnktdmFsdWUuanMKaW5kZXggZGM0NTMzOGM5NTllMzEzYmM4NmE5M2Y1ZmNk
MjFlOWYzMmMxMTAxMi4uZGI2NjM5Y2IyMmIzMDMxMDQ4MzJiYjMzMTE2NjM5ZTg4ZWZlOGQyNyAx
MDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3MvZGVhZC1vc3ItZW50cnktdmFsdWUuanMKKysrIGIv
SlNUZXN0cy9zdHJlc3MvZGVhZC1vc3ItZW50cnktdmFsdWUuanMKQEAgLTMsNyArMyw3IEBAIGZ1
bmN0aW9uIGZvbygpIHsKICAgICB2YXIgcmVzdWx0ID0gMDsKICAgICBPU1JFeGl0KCk7CiAgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7Ci0gICAgICAgIGlmICghREZHVHJ1ZSgp
KQorICAgICAgICBpZiAoISR2bS5kZmdUcnVlKCkpCiAgICAgICAgICAgICByZXN1bHQgKz0gby5m
OwogICAgIH0KICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mv
ZmlhdC12YWx1ZS10by1pbnQ1Mi10aGVuLWV4aXQtbm90LWRvdWJsZS5qcyBiL0pTVGVzdHMvc3Ry
ZXNzL2ZpYXQtdmFsdWUtdG8taW50NTItdGhlbi1leGl0LW5vdC1kb3VibGUuanMKaW5kZXggOWNi
MzViODBiYTAyNTZmOGFiNWU4NjMwY2VkMzNjZTQzZGMzYzhlYi4uYTIwYTVmOGIwNjc5NDRjZWE5
MzAzZDg3NzQwNDUzMTE5YjczMjRmNCAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3MvZmlhdC12
YWx1ZS10by1pbnQ1Mi10aGVuLWV4aXQtbm90LWRvdWJsZS5qcworKysgYi9KU1Rlc3RzL3N0cmVz
cy9maWF0LXZhbHVlLXRvLWludDUyLXRoZW4tZXhpdC1ub3QtZG91YmxlLmpzCkBAIC0xLDUgKzEs
NSBAQAogZnVuY3Rpb24gZm9vKCkgewotICAgIHJldHVybiBmaWF0SW50NTIoYmFyKERGR1RydWUo
KSkpICsgMTsKKyAgICByZXR1cm4gZmlhdEludDUyKGJhcigkdm0uZGZnVHJ1ZSgpKSkgKyAxOwog
fQogCiB2YXIgdGhpbmd5ID0gZmFsc2U7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9maWF0
LXZhbHVlLXRvLWludDUyLXRoZW4tZXhpdC1ub3QtaW50NTIuanMgYi9KU1Rlc3RzL3N0cmVzcy9m
aWF0LXZhbHVlLXRvLWludDUyLXRoZW4tZXhpdC1ub3QtaW50NTIuanMKaW5kZXggMGIxMTI5ZWMx
NzEwMDlkNzE4YWZmYjVjNjc4ZDUyNzc4ZTYxMmMyNi4uZTQ3N2ExMGIzYjI5YzQ3YTJmNWE5MmQ4
OTU0NDc5N2IwODA1MzVkMSAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3MvZmlhdC12YWx1ZS10
by1pbnQ1Mi10aGVuLWV4aXQtbm90LWludDUyLmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL2ZpYXQt
dmFsdWUtdG8taW50NTItdGhlbi1leGl0LW5vdC1pbnQ1Mi5qcwpAQCAtMSw1ICsxLDUgQEAKIGZ1
bmN0aW9uIGZvbygpIHsKLSAgICByZXR1cm4gZmlhdEludDUyKGJhcihERkdUcnVlKCkpKSArIDE7
CisgICAgcmV0dXJuIGZpYXRJbnQ1MihiYXIoJHZtLmRmZ1RydWUoKSkpICsgMTsKIH0KIAogdmFy
IHRoaW5neSA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZmlhdC12YWx1ZS10
by1pbnQ1Mi10aGVuLWZhaWwtdG8tZm9sZC5qcyBiL0pTVGVzdHMvc3RyZXNzL2ZpYXQtdmFsdWUt
dG8taW50NTItdGhlbi1mYWlsLXRvLWZvbGQuanMKaW5kZXggNDQxM2JkN2ZiY2M0YWRkODJhODdk
ZWU3MzBmZjlhYzUwMWZmMGY1MS4uZmRlMGEyOGE3OTNmNzg3ZmExM2ZlYmQ1MjczYjNmOTMwNmU0
YjA4MCAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3MvZmlhdC12YWx1ZS10by1pbnQ1Mi10aGVu
LWZhaWwtdG8tZm9sZC5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9maWF0LXZhbHVlLXRvLWludDUy
LXRoZW4tZmFpbC10by1mb2xkLmpzCkBAIC0xLDUgKzEsNSBAQAogZnVuY3Rpb24gZm9vKCkgewot
ICAgIHJldHVybiBmaWF0SW50NTIoREZHVHJ1ZSgpID8gNS41IDogNDIpICsgMTsKKyAgICByZXR1
cm4gZmlhdEludDUyKCR2bS5kZmdUcnVlKCkgPyA1LjUgOiA0MikgKyAxOwogfQogCiBub0lubGlu
ZShmb28pOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZmlhdC12YWx1ZS10by1pbnQ1Mi10
aGVuLWZvbGQuanMgYi9KU1Rlc3RzL3N0cmVzcy9maWF0LXZhbHVlLXRvLWludDUyLXRoZW4tZm9s
ZC5qcwppbmRleCA4NmYyNmM2OWEwYzNhZmFhZjM2YmY5ODIzMGMyODgzZWQzNzM2ZDY5Li4zODAy
NDBjNzViMWYyOTgyMmMzMGQwNDgzZWZjMTg1NDMzNTNmODE3IDEwMDY0NAotLS0gYS9KU1Rlc3Rz
L3N0cmVzcy9maWF0LXZhbHVlLXRvLWludDUyLXRoZW4tZm9sZC5qcworKysgYi9KU1Rlc3RzL3N0
cmVzcy9maWF0LXZhbHVlLXRvLWludDUyLXRoZW4tZm9sZC5qcwpAQCAtMSw1ICsxLDUgQEAKIGZ1
bmN0aW9uIGZvbygpIHsKLSAgICByZXR1cm4gZmlhdEludDUyKERGR1RydWUoKSA/IDQyIDogNS41
KSArIDE7CisgICAgcmV0dXJuIGZpYXRJbnQ1Migkdm0uZGZnVHJ1ZSgpID8gNDIgOiA1LjUpICsg
MTsKIH0KIAogbm9JbmxpbmUoZm9vKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2ZpYXQt
dmFsdWUtdG8taW50NTIuanMgYi9KU1Rlc3RzL3N0cmVzcy9maWF0LXZhbHVlLXRvLWludDUyLmpz
CmluZGV4IGMzN2MyMWZhN2QwMjJjMTZiYWNhMDFmNzIyZGQwYTk3YWI5MDViOWUuLjk4MzM1ODJk
M2U5NzVjMmU3NGFiODcwZjQ2MDg0NzA0NWRjNGM0MTIgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3Ry
ZXNzL2ZpYXQtdmFsdWUtdG8taW50NTIuanMKKysrIGIvSlNUZXN0cy9zdHJlc3MvZmlhdC12YWx1
ZS10by1pbnQ1Mi5qcwpAQCAtMSw1ICsxLDUgQEAKIGZ1bmN0aW9uIGZvbygpIHsKLSAgICByZXR1
cm4gZmlhdEludDUyKGJhcihERkdUcnVlKCkpKSArIDE7CisgICAgcmV0dXJuIGZpYXRJbnQ1Mihi
YXIoJHZtLmRmZ1RydWUoKSkpICsgMTsKIH0KIAogZnVuY3Rpb24gYmFyKHApIHsKZGlmZiAtLWdp
dCBhL0pTVGVzdHMvc3RyZXNzL2ZvbGQtYmFzZWQtb24taW50MzItcHJvb2YtbXVsLWJyYW5jaC5q
cyBiL0pTVGVzdHMvc3RyZXNzL2ZvbGQtYmFzZWQtb24taW50MzItcHJvb2YtbXVsLWJyYW5jaC5q
cwppbmRleCA0ZDE4ODNkNTIzYTYzZTllYTM2N2ZkMDU2ZmZlODFiZmU1MTgzNWVmLi5hOWM2ZjAx
ODg2ZTQ2NWJkMjZlYmVkZDczYTBmMjJmNDgyMTgzYjY2IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0
cmVzcy9mb2xkLWJhc2VkLW9uLWludDMyLXByb29mLW11bC1icmFuY2guanMKKysrIGIvSlNUZXN0
cy9zdHJlc3MvZm9sZC1iYXNlZC1vbi1pbnQzMi1wcm9vZi1tdWwtYnJhbmNoLmpzCkBAIC0xLDgg
KzEsOCBAQAogZnVuY3Rpb24gZm9vKGEsIGIpIHsKLSAgICB2YXIgdmFsdWUgPSBERkdUcnVlKCkg
PyAtMCA6ICJmb28iOworICAgIHZhciB2YWx1ZSA9ICR2bS5kZmdUcnVlKCkgPyAtMCA6ICJmb28i
OwogICAgIGlmIChhICogYiA9PSB2YWx1ZSkKLSAgICAgICAgcmV0dXJuIFtERkdUcnVlKCksIHRy
dWVdOwotICAgIHJldHVybiBbREZHVHJ1ZSgpLCBmYWxzZV07CisgICAgICAgIHJldHVybiBbJHZt
LmRmZ1RydWUoKSwgdHJ1ZV07CisgICAgcmV0dXJuIFskdm0uZGZnVHJ1ZSgpLCBmYWxzZV07CiB9
CiBub0lubGluZShmb28pOwogCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9mb2xkLXByb2Zp
bGVkLWNhbGwtdG8tY2FsbC5qcyBiL0pTVGVzdHMvc3RyZXNzL2ZvbGQtcHJvZmlsZWQtY2FsbC10
by1jYWxsLmpzCmluZGV4IDM4N2E4OGM0YTI2Njk5YzdmZjFlNjJmMzZjOGFiYmYxYjYwNTgzOTUu
LjBjYTg5OGUzMTgwMTdlNGNjY2EwMjlmMWYzMTI0NDdlMDgxMGI2OTMgMTAwNjQ0Ci0tLSBhL0pT
VGVzdHMvc3RyZXNzL2ZvbGQtcHJvZmlsZWQtY2FsbC10by1jYWxsLmpzCisrKyBiL0pTVGVzdHMv
c3RyZXNzL2ZvbGQtcHJvZmlsZWQtY2FsbC10by1jYWxsLmpzCkBAIC0xLDUgKzEsNSBAQAogZnVu
Y3Rpb24gZm9vKGYpIHsKLSAgICBpZiAoREZHVHJ1ZSgpKQorICAgIGlmICgkdm0uZGZnVHJ1ZSgp
KQogICAgICAgICBmID0gYmFyOwogICAgIHJldHVybiBmKCkuZjsKIH0KZGlmZiAtLWdpdCBhL0pT
VGVzdHMvc3RyZXNzL2ZvbGQtdG8tZG91YmxlLWNvbnN0YW50LXRoZW4tZXhpdC5qcyBiL0pTVGVz
dHMvc3RyZXNzL2ZvbGQtdG8tZG91YmxlLWNvbnN0YW50LXRoZW4tZXhpdC5qcwppbmRleCAwYzI5
ZjBiODMzYzVjYzhhMDEyZTVmZWRmM2Y0NjQxYjc5M2U1Y2QzLi44ZmEyMzI3MTUzYTZhZmE5MjYw
ZTUxOTRlZmNmYTRjYjNlYzkyMjYzIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9mb2xkLXRv
LWRvdWJsZS1jb25zdGFudC10aGVuLWV4aXQuanMKKysrIGIvSlNUZXN0cy9zdHJlc3MvZm9sZC10
by1kb3VibGUtY29uc3RhbnQtdGhlbi1leGl0LmpzCkBAIC0xLDUgKzEsNSBAQAogZnVuY3Rpb24g
Zm9vKGEsIGIpIHsKLSAgICBpZiAoREZHVHJ1ZSgpKQorICAgIGlmICgkdm0uZGZnVHJ1ZSgpKQog
ICAgICAgICBhID0gYiA9IDUuNDsKICAgICB2YXIgYyA9IGEgKyBiOwogICAgIGlmIChpc0ZpbmFs
VGllcigpKQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZm9sZC10by1pbnQ1Mi1jb25zdGFu
dC10aGVuLWV4aXQuanMgYi9KU1Rlc3RzL3N0cmVzcy9mb2xkLXRvLWludDUyLWNvbnN0YW50LXRo
ZW4tZXhpdC5qcwppbmRleCAzMjAxZDliYjNhYzc2M2NiZDk0ZmM3MjFhY2U3MzQ0NTA4MjU2MDgz
Li5lM2I0NzUzNzY2ZmYwOWVmYWRlZjdmYmVjZDg3NzM3MDczY2ZmMDk4IDEwMDY0NAotLS0gYS9K
U1Rlc3RzL3N0cmVzcy9mb2xkLXRvLWludDUyLWNvbnN0YW50LXRoZW4tZXhpdC5qcworKysgYi9K
U1Rlc3RzL3N0cmVzcy9mb2xkLXRvLWludDUyLWNvbnN0YW50LXRoZW4tZXhpdC5qcwpAQCAtMSw1
ICsxLDUgQEAKIGZ1bmN0aW9uIGZvbyhhLCBiKSB7Ci0gICAgaWYgKERGR1RydWUoKSkKKyAgICBp
ZiAoJHZtLmRmZ1RydWUoKSkKICAgICAgICAgYSA9IGIgPSAyMDAwMDAwMDAwOwogICAgIHZhciBj
ID0gYSArIGI7CiAgICAgaWYgKGlzRmluYWxUaWVyKCkpCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0
cmVzcy9mb2xkLXRvLXByaW1pdGl2ZS1pbi1jZmEuanMgYi9KU1Rlc3RzL3N0cmVzcy9mb2xkLXRv
LXByaW1pdGl2ZS1pbi1jZmEuanMKaW5kZXggZWI2ZjlkMThlMzkyODljNGFlMTJmOTQxNTYwMjEz
NmNhNjA0YTZmMi4uODk5YTE3MTIwMzUyNTI5OWY2ZTQ4ZmM5OGYyZTI3Njc1NDY1ZjllZiAxMDA2
NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3MvZm9sZC10by1wcmltaXRpdmUtaW4tY2ZhLmpzCisrKyBi
L0pTVGVzdHMvc3RyZXNzL2ZvbGQtdG8tcHJpbWl0aXZlLWluLWNmYS5qcwpAQCAtMSw1ICsxLDUg
QEAKIGZ1bmN0aW9uIGZvbyh4KSB7Ci0gICAgaWYgKERGR1RydWUoKSkKKyAgICBpZiAoJHZtLmRm
Z1RydWUoKSkKICAgICAgICAgeCA9ICJoZWxsbyI7CiAgICAgcmV0dXJuIHggKyAiIHdvcmxkIjsK
IH0KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2ZvbGQtdG8tcHJpbWl0aXZlLXRvLWlkZW50
aXR5LWluLWNmYS5qcyBiL0pTVGVzdHMvc3RyZXNzL2ZvbGQtdG8tcHJpbWl0aXZlLXRvLWlkZW50
aXR5LWluLWNmYS5qcwppbmRleCA0MTNlMWM4Yjk5ZWI1ZGZkYjg0NDE3ZmYzODUzODFkOWJiMjYy
M2NjLi4yNzc0ODhjYTk3MGUzNWVjY2NmNWRiMmMwMzU1ZDk1YjJiMWI0YTQ2IDEwMDY0NAotLS0g
YS9KU1Rlc3RzL3N0cmVzcy9mb2xkLXRvLXByaW1pdGl2ZS10by1pZGVudGl0eS1pbi1jZmEuanMK
KysrIGIvSlNUZXN0cy9zdHJlc3MvZm9sZC10by1wcmltaXRpdmUtdG8taWRlbnRpdHktaW4tY2Zh
LmpzCkBAIC0xLDUgKzEsNSBAQAogZnVuY3Rpb24gZm9vKHgsIHApIHsKLSAgICBpZiAoREZHVHJ1
ZSgpKQorICAgIGlmICgkdm0uZGZnVHJ1ZSgpKQogICAgICAgICB4ID0gcCA/ICJoZWxsbyIgOiAi
YmFyIjsKICAgICByZXR1cm4geCArICIgd29ybGQiOwogfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9z
dHJlc3MvaGFzLWluZGV4ZWQtcHJvcGVydHktYXJyYXktc3RvcmFnZS1mdGwuanMgYi9KU1Rlc3Rz
L3N0cmVzcy9oYXMtaW5kZXhlZC1wcm9wZXJ0eS1hcnJheS1zdG9yYWdlLWZ0bC5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5kZWYyZjBmNjVkN2Y1ZmUwZWUxNGMzNTNmNmYzYjFlODVhY2NlMGM5Ci0tLSAvZGV2L251
bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvaGFzLWluZGV4ZWQtcHJvcGVydHktYXJyYXktc3RvcmFn
ZS1mdGwuanMKQEAgLTAsMCArMSw0OCBAQAorLy9AIHJ1bkZUTE5vQ0pJVAorCitmdW5jdGlvbiBz
aG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQp
CisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKwor
dmFyIGZsYWcgPSBmYWxzZTsKK3ZhciBmdGxUcnVlID0gJHZtLmZ0bFRydWU7CitmdW5jdGlvbiB0
ZXN0MShhcnJheSkKK3sKKyAgICBmbGFnID0gZnRsVHJ1ZSgpOworICAgIHJldHVybiAyIGluIGFy
cmF5OworfQorbm9JbmxpbmUodGVzdDEpOworCit2YXIgYXJyYXkgPSBbMSwgMiwgMywgNF07Citl
bnN1cmVBcnJheVN0b3JhZ2UoYXJyYXkpOworZmxhZyA9IGZhbHNlOworZm9yICh2YXIgaSA9IDA7
IGkgPCAxZTU7ICsraSkKKyAgICBzaG91bGRCZSh0ZXN0MShhcnJheSksIHRydWUpOworc2hvdWxk
QmUoZmxhZywgdHJ1ZSk7CisKK3ZhciBhcnJheSA9IFsxLCAyLCAsIDRdOworZW5zdXJlQXJyYXlT
dG9yYWdlKGFycmF5KTsKK3Nob3VsZEJlKHRlc3QxKGFycmF5KSwgZmFsc2UpOworCit2YXIgYXJy
YXkgPSBbXTsKK2Vuc3VyZUFycmF5U3RvcmFnZShhcnJheSk7CitzaG91bGRCZSh0ZXN0MShhcnJh
eSksIGZhbHNlKTsKKworZnVuY3Rpb24gdGVzdDIoYXJyYXkpCit7CisgICAgZmxhZyA9IGZ0bFRy
dWUoKTsKKyAgICByZXR1cm4gMiBpbiBhcnJheTsKK30KK25vSW5saW5lKHRlc3QyKTsKKwordmFy
IGFycmF5MSA9IFsxLCAyLCAzLCA0XTsKK2Vuc3VyZUFycmF5U3RvcmFnZShhcnJheTEpOwordmFy
IGFycmF5MiA9IFsxLCAyXTsKK2Vuc3VyZUFycmF5U3RvcmFnZShhcnJheTIpOworZmxhZyA9IGZh
bHNlOworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTU7ICsraSkKKyAgICBzaG91bGRCZSh0ZXN0Mihh
cnJheTIpLCBmYWxzZSk7CitzaG91bGRCZShmbGFnLCB0cnVlKTsKK3Nob3VsZEJlKHRlc3QyKGFy
cmF5MiksIGZhbHNlKTsKK3Nob3VsZEJlKHRlc3QyKGFycmF5MSksIHRydWUpOwpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy9zdHJlc3MvaGFzLWluZGV4ZWQtcHJvcGVydHktc2xvdy1wdXQtYXJyYXktc3Rv
cmFnZS1mdGwuanMgYi9KU1Rlc3RzL3N0cmVzcy9oYXMtaW5kZXhlZC1wcm9wZXJ0eS1zbG93LXB1
dC1hcnJheS1zdG9yYWdlLWZ0bC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZmUyMmJhNGMxMGJjMmE3ZWMxZmU2
MDhhZjIzY2JmYWVmMTlmNTAwCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvaGFz
LWluZGV4ZWQtcHJvcGVydHktc2xvdy1wdXQtYXJyYXktc3RvcmFnZS1mdGwuanMKQEAgLTAsMCAr
MSw2MSBAQAorLy9AIHJ1bkZUTE5vQ0pJVAorCitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4
cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5l
dyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKwordmFyIGZsYWcgPSBmYWxzZTsK
K3ZhciBmdGxUcnVlID0gJHZtLmZ0bFRydWU7CitmdW5jdGlvbiB0ZXN0MShhcnJheSkKK3sKKyAg
ICBmbGFnID0gZnRsVHJ1ZSgpOworICAgIHJldHVybiAyIGluIGFycmF5OworfQorbm9JbmxpbmUo
dGVzdDEpOworCit2YXIgb2JqZWN0ID0geyBhOiAxMCB9OworT2JqZWN0LmRlZmluZVByb3BlcnRp
ZXMob2JqZWN0LCB7CisgICAgIjAiOiB7CisgICAgICAgIGdldDogZnVuY3Rpb24oKSB7IHJldHVy
biB0aGlzLmE7IH0sCisgICAgICAgIHNldDogZnVuY3Rpb24oeCkgeyB0aGlzLmEgPSB4OyB9LAor
ICAgIH0sCit9KTsKKwordmFyIGFycmF5ID0gWzEsIDIsIDMsIDRdOworYXJyYXkuX19wcm90b19f
ID0gb2JqZWN0OworZW5zdXJlQXJyYXlTdG9yYWdlKGFycmF5KTsKK2ZsYWcgPSBmYWxzZTsKK2Zv
ciAodmFyIGkgPSAwOyBpIDwgMWU1OyArK2kpCisgICAgc2hvdWxkQmUodGVzdDEoYXJyYXkpLCB0
cnVlKTsKK3Nob3VsZEJlKGZsYWcsIHRydWUpOworCit2YXIgYXJyYXkgPSBbMSwgMiwgLCA0XTsK
K2FycmF5Ll9fcHJvdG9fXyA9IG9iamVjdDsKK2Vuc3VyZUFycmF5U3RvcmFnZShhcnJheSk7Citz
aG91bGRCZSh0ZXN0MShhcnJheSksIGZhbHNlKTsKKwordmFyIGFycmF5ID0gW107CithcnJheS5f
X3Byb3RvX18gPSBvYmplY3Q7CitlbnN1cmVBcnJheVN0b3JhZ2UoYXJyYXkpOworc2hvdWxkQmUo
dGVzdDEoYXJyYXkpLCBmYWxzZSk7CisKK2Z1bmN0aW9uIHRlc3QyKGFycmF5KQoreworICAgIGZs
YWcgPSBmdGxUcnVlKCk7CisgICAgcmV0dXJuIDIgaW4gYXJyYXk7Cit9Citub0lubGluZSh0ZXN0
Mik7CisKK3ZhciBhcnJheTEgPSBbMSwgMiwgMywgNF07CithcnJheTEuX19wcm90b19fID0gb2Jq
ZWN0OworZW5zdXJlQXJyYXlTdG9yYWdlKGFycmF5MSk7Cit2YXIgYXJyYXkyID0gWzEsIDJdOwor
YXJyYXkyLl9fcHJvdG9fXyA9IG9iamVjdDsKK2Vuc3VyZUFycmF5U3RvcmFnZShhcnJheTIpOwor
ZmxhZyA9IGZhbHNlOworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTU7ICsraSkKKyAgICBzaG91bGRC
ZSh0ZXN0MihhcnJheTIpLCBmYWxzZSk7CitzaG91bGRCZShmbGFnLCB0cnVlKTsKK3Nob3VsZEJl
KHRlc3QyKGFycmF5MiksIGZhbHNlKTsKK3Nob3VsZEJlKHRlc3QyKGFycmF5MSksIHRydWUpOwpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvaW50NTItYWktYWRkLXRoZW4tZmlsdGVyLWludDMy
LmpzIGIvSlNUZXN0cy9zdHJlc3MvaW50NTItYWktYWRkLXRoZW4tZmlsdGVyLWludDMyLmpzCmlu
ZGV4IDAxZTRlNGYzNTdhM2IzZDk1NWRlODZiOGM5NGNhZmI3ZDIyYTY2ZDMuLjNmMDM4ZGNiZmUw
NzRiZGFjMzAyNDU2OTAyODMzZDE4ZTNlODEzNTIgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNz
L2ludDUyLWFpLWFkZC10aGVuLWZpbHRlci1pbnQzMi5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9p
bnQ1Mi1haS1hZGQtdGhlbi1maWx0ZXItaW50MzIuanMKQEAgLTEsNiArMSw2IEBACiBmdW5jdGlv
biBmb28oYSwgYiwgYykgewogICAgIHZhciBvID0ge2Y6NDJ9OwotICAgIGlmIChERkdUcnVlKCkp
CisgICAgaWYgKCR2bS5kZmdUcnVlKCkpCiAgICAgICAgIG8uZiA9IGEgKyBiICsgYzsKICAgICBy
ZXR1cm4gby5mIHwgMDsKIH0KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2ludDUyLWFpLW11
bC1hbmQtY2xlYW4tbmVnLXplcm8tdGhlbi1maWx0ZXItaW50MzIuanMgYi9KU1Rlc3RzL3N0cmVz
cy9pbnQ1Mi1haS1tdWwtYW5kLWNsZWFuLW5lZy16ZXJvLXRoZW4tZmlsdGVyLWludDMyLmpzCmlu
ZGV4IGRhNGNkODJmZmI4MmM0NmZlZTM4MTFiOTU1ZjdiYmU0OWVjMmFhMGQuLjA2MWI3ZWE3ZmU3
MmE3MGMxNGYwYmYyYmExOWFlZDY2ZGM5MWRiNTYgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNz
L2ludDUyLWFpLW11bC1hbmQtY2xlYW4tbmVnLXplcm8tdGhlbi1maWx0ZXItaW50MzIuanMKKysr
IGIvSlNUZXN0cy9zdHJlc3MvaW50NTItYWktbXVsLWFuZC1jbGVhbi1uZWctemVyby10aGVuLWZp
bHRlci1pbnQzMi5qcwpAQCAtMSw2ICsxLDYgQEAKIGZ1bmN0aW9uIGZvbyhhLCBiLCBjKSB7CiAg
ICAgdmFyIG8gPSB7Zjo0Mn07Ci0gICAgaWYgKERGR1RydWUoKSkKKyAgICBpZiAoJHZtLmRmZ1Ry
dWUoKSkKICAgICAgICAgby5mID0gKGEgKiBiICsgNSkgKiBjICsgNTsKICAgICByZXR1cm4gby5m
IHwgMDsKIH0KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2ludDUyLWFpLW11bC10aGVuLWZp
bHRlci1pbnQzMi5qcyBiL0pTVGVzdHMvc3RyZXNzL2ludDUyLWFpLW11bC10aGVuLWZpbHRlci1p
bnQzMi5qcwppbmRleCA3MDQ4ZTIxMDBmODMxNTljYzRhNDMxMzk2MjgwNjEyYTM5MDliY2VjLi41
NDE4MDE3MjhmZDM4MmE1OWE5MzAzNjZiZGZhNDFjOGE4NTMwZWY4IDEwMDY0NAotLS0gYS9KU1Rl
c3RzL3N0cmVzcy9pbnQ1Mi1haS1tdWwtdGhlbi1maWx0ZXItaW50MzIuanMKKysrIGIvSlNUZXN0
cy9zdHJlc3MvaW50NTItYWktbXVsLXRoZW4tZmlsdGVyLWludDMyLmpzCkBAIC0xLDYgKzEsNiBA
QAogZnVuY3Rpb24gZm9vKGEsIGIsIGMpIHsKICAgICB2YXIgbyA9IHtmOjQyfTsKLSAgICBpZiAo
REZHVHJ1ZSgpKQorICAgIGlmICgkdm0uZGZnVHJ1ZSgpKQogICAgICAgICBvLmYgPSBhICogYiAq
IGM7CiAgICAgcmV0dXJuIG8uZiB8IDA7CiB9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9p
bnQ1Mi1haS1uZWctdGhlbi1maWx0ZXItaW50MzIuanMgYi9KU1Rlc3RzL3N0cmVzcy9pbnQ1Mi1h
aS1uZWctdGhlbi1maWx0ZXItaW50MzIuanMKaW5kZXggNjhlNGY4ZWUxMmNmODQ0NTQyMWE3MzI3
YzE5ZmY0MGRlMzNhOTg3Zi4uODJjOTcxYzBkMTY0YTQxN2FiYTAyNjJmNDAyNmQwYWUyOTVkM2Fm
MSAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3MvaW50NTItYWktbmVnLXRoZW4tZmlsdGVyLWlu
dDMyLmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL2ludDUyLWFpLW5lZy10aGVuLWZpbHRlci1pbnQz
Mi5qcwpAQCAtMSw2ICsxLDYgQEAKIGZ1bmN0aW9uIGZvbyhhLCBiKSB7CiAgICAgdmFyIG8gPSB7
Zjo0Mn07Ci0gICAgaWYgKERGR1RydWUoKSkKKyAgICBpZiAoJHZtLmRmZ1RydWUoKSkKICAgICAg
ICAgby5mID0gLShhICsgYik7CiAgICAgcmV0dXJuIG8uZiB8IDA7CiB9CmRpZmYgLS1naXQgYS9K
U1Rlc3RzL3N0cmVzcy9pbnQ1Mi1haS1zdWItdGhlbi1maWx0ZXItaW50MzIuanMgYi9KU1Rlc3Rz
L3N0cmVzcy9pbnQ1Mi1haS1zdWItdGhlbi1maWx0ZXItaW50MzIuanMKaW5kZXggNGY1M2E2ZjJl
Y2FhOTIxMThmZWMyNTlhZDdkOWFhZWNmMGMyMDkxNy4uN2Q3MGIxNTViNzNhZThjMzUxY2NmZDJj
MDUyMGJiNzllZDE3NzcyOSAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3MvaW50NTItYWktc3Vi
LXRoZW4tZmlsdGVyLWludDMyLmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL2ludDUyLWFpLXN1Yi10
aGVuLWZpbHRlci1pbnQzMi5qcwpAQCAtMSw2ICsxLDYgQEAKIGZ1bmN0aW9uIGZvbyhhLCBiKSB7
CiAgICAgdmFyIG8gPSB7Zjo0Mn07Ci0gICAgaWYgKERGR1RydWUoKSkKKyAgICBpZiAoJHZtLmRm
Z1RydWUoKSkKICAgICAgICAgby5mID0gYSAtIGIgLSAyMDAwMDAwMDAwOwogICAgIHJldHVybiBv
LmYgfCAwOwogfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvbGljbS1wcmUtaGVhZGVyLWNh
bm5vdC1leGl0LW5lc3RlZC5qcyBiL0pTVGVzdHMvc3RyZXNzL2xpY20tcHJlLWhlYWRlci1jYW5u
b3QtZXhpdC1uZXN0ZWQuanMKaW5kZXggOTQzZmQ2MjQ1NWNmMDkxNGY5Y2VlYjU0NzlkNjZmMzQ3
ZDExOWQ0OC4uYjg2Njc0N2NjN2Y2MDkyYWNiMjE0NGZjODExZTA0MDQ3MjFjMjJiOSAxMDA2NDQK
LS0tIGEvSlNUZXN0cy9zdHJlc3MvbGljbS1wcmUtaGVhZGVyLWNhbm5vdC1leGl0LW5lc3RlZC5q
cworKysgYi9KU1Rlc3RzL3N0cmVzcy9saWNtLXByZS1oZWFkZXItY2Fubm90LWV4aXQtbmVzdGVk
LmpzCkBAIC00LDcgKzQsNyBAQCBmdW5jdGlvbiBmb28ob2JqZWN0LCBwcmVkaWNhdGUpIHsKICAg
ICBmb3IgKHZhciBqID0gMDsgaiA8IDEwOyArK2opIHsKICAgICAgICAgdmFyIHJlc3VsdCA9IDA7
CiAgICAgICAgIHZhciBpID0gMDsKLSAgICAgICAgaWYgKERGR1RydWUoKSkKKyAgICAgICAgaWYg
KCR2bS5kZmdUcnVlKCkpCiAgICAgICAgICAgICBwcmVkaWNhdGUgPSA0MjsKICAgICAgICAgd2hp
bGUgKHByZWRpY2F0ZSA+PSA0MikgewogICAgICAgICAgICAgcmVzdWx0ICs9IG9iamVjdC5hcnJh
eVtpKytdOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvbGljbS1wcmUtaGVhZGVyLWNhbm5v
dC1leGl0LmpzIGIvSlNUZXN0cy9zdHJlc3MvbGljbS1wcmUtaGVhZGVyLWNhbm5vdC1leGl0Lmpz
CmluZGV4IDBhYTg5MzIwMGZmNjQ2OWUwNWY2YWU3ZjdjODVlMDhmMmY3YjBlNGUuLjhhNDI2MmQ3
NTkzNzE5OGJhNGQzMGE4YzdiOWZjZDFjNDhjZDYwYzQgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3Ry
ZXNzL2xpY20tcHJlLWhlYWRlci1jYW5ub3QtZXhpdC5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9s
aWNtLXByZS1oZWFkZXItY2Fubm90LWV4aXQuanMKQEAgLTMsNyArMyw3IEBACiBmdW5jdGlvbiBm
b28ob2JqZWN0LCBwcmVkaWNhdGUpIHsKICAgICB2YXIgcmVzdWx0ID0gMDsKICAgICB2YXIgaSA9
IDA7Ci0gICAgaWYgKERGR1RydWUoKSkKKyAgICBpZiAoJHZtLmRmZ1RydWUoKSkKICAgICAgICAg
cHJlZGljYXRlID0gNDI7CiAgICAgd2hpbGUgKHByZWRpY2F0ZSA+PSA0MikgewogICAgICAgICBy
ZXN1bHQgKz0gb2JqZWN0LmFycmF5W2krK107CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9z
cGFyc2UtYXJyYXktZW50cnktdXBkYXRlLTE0NDA2Ny5qcyBiL0pTVGVzdHMvc3RyZXNzL3NwYXJz
ZS1hcnJheS1lbnRyeS11cGRhdGUtMTQ0MDY3LmpzCmluZGV4IDI0Y2VhN2M1MmQ3YzJiMmNkZTI1
YjgwNjVmM2UxM2Q4OWQ0YzllNjIuLjY4MDJlZTE3MjE3OTZmOTMyZTFlZWRjNWFkMzIwMjkwMjNh
OWZjODggMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL3NwYXJzZS1hcnJheS1lbnRyeS11cGRh
dGUtMTQ0MDY3LmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL3NwYXJzZS1hcnJheS1lbnRyeS11cGRh
dGUtMTQ0MDY3LmpzCkBAIC0zNiw3ICszNiw3IEBACiAKIGZ1bmN0aW9uIHVzZU1lbW9yeVRvVHJp
Z2dlckdDcygpIHsKICAgICB2YXIgYXJyID0gW107Ci0gICAgdmFyIGxpbWl0ID0gREZHVHJ1ZSgp
ID8gMTAwMDAgOiAxMDA7CisgICAgdmFyIGxpbWl0ID0gJHZtLmRmZ1RydWUoKSA/IDEwMDAwIDog
MTAwOwogICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGltaXQ7IGkrKykKICAgICAgICAgYXJyW2ld
ID0geyBhOiAidXNpbmciICsgaSwgYjogInVwIiArIGksIGM6ICJtZW1vcnkiICsgaSB9OwogICAg
IHJldHVybiBhcnI7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy90ZXN0LXNwZWMtbWlzYy5q
cyBiL0pTVGVzdHMvc3RyZXNzL3Rlc3Qtc3BlYy1taXNjLmpzCmluZGV4IDdkNzE1MDU0MmRmZjEw
ODM5N2JmMWY5Mjc0NDhmOThkN2FlYTRlYTQuLjQxOTRiMGM5YzY3ODFiZjEzOTUxZGNiN2RkYzdi
ZGRiOGNjMDAzOWYgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL3Rlc3Qtc3BlYy1taXNjLmpz
CisrKyBiL0pTVGVzdHMvc3RyZXNzL3Rlc3Qtc3BlYy1taXNjLmpzCkBAIC0xMSw3ICsxMSw3IEBA
IGZ1bmN0aW9uIGdldFgoZnJvbURGRykgewogCiBmdW5jdGlvbiBmb28oaW5kZXgpIHsKICAgICB2
YXIgcmVzdWx0ID0gZmFsc2U7Ci0gICAgdmFyIHggPSBnZXRYKERGR1RydWUoKSk7CisgICAgdmFy
IHggPSBnZXRYKCR2bS5kZmdUcnVlKCkpOwogCiAgICAgeCAqIDI7CiAKZGlmZiAtLWdpdCBhL0pT
VGVzdHMvc3RyZXNzL3RyaWNreS1hcnJheS1ib3VuZHMtY2hlY2tzLmpzIGIvSlNUZXN0cy9zdHJl
c3MvdHJpY2t5LWFycmF5LWJvdW5kcy1jaGVja3MuanMKaW5kZXggOGNmYmUxYTlkMDZkNmJjZDAw
MjI5OGZmMDU1NjE2MTM2MjgyM2FjZS4uNjk5ZjM1MGI2M2MxMDJhMmM2NDkyODljZTk1NDk2Y2I1
NmU5ODVhMSAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3MvdHJpY2t5LWFycmF5LWJvdW5kcy1j
aGVja3MuanMKKysrIGIvSlNUZXN0cy9zdHJlc3MvdHJpY2t5LWFycmF5LWJvdW5kcy1jaGVja3Mu
anMKQEAgLTEsNiArMSw2IEBACiBmdW5jdGlvbiBmb28oYSwgaSwgcCkgewotICAgIGlmIChwIHx8
ICFERkdUcnVlKCkpCi0gICAgICAgIHJldHVybiBbREZHVHJ1ZSgpLCBhWyhpIC0gKERGR1RydWUo
KSA/IDIxNDc0ODM2NDYgOiAwKSkgfCAwXSwgYVtpXSwgYVsoaSArIChERkdUcnVlKCkgPyAyMTQ3
NDgzNjQ2IDogMCkpIHwgMF0sIERGR1RydWUoKV07CisgICAgaWYgKHAgfHwgISR2bS5kZmdUcnVl
KCkpCisgICAgICAgIHJldHVybiBbJHZtLmRmZ1RydWUoKSwgYVsoaSAtICgkdm0uZGZnVHJ1ZSgp
ID8gMjE0NzQ4MzY0NiA6IDApKSB8IDBdLCBhW2ldLCBhWyhpICsgKCR2bS5kZmdUcnVlKCkgPyAy
MTQ3NDgzNjQ2IDogMCkpIHwgMF0sICR2bS5kZmdUcnVlKCldOwogICAgIHJldHVybiBbMTJdOwog
fQogCg==
</data>
<flag name="review"
          id="353290"
          type_id="1"
          status="+"
          setter="mark.lam"
    />
          </attachment>
      

    </bug>

</bugzilla>