<?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>203168</bug_id>
          
          <creation_ts>2019-10-18 15:54:48 -0700</creation_ts>
          <short_desc>[Clipboard API] Implement ClipboardItem.getType() for platform clipboard items</short_desc>
          <delta_ts>2019-10-21 13:21:21 -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>HTML Editing</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="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>bdakin</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>kangil.han</cc>
    
    <cc>megan_gardner</cc>
    
    <cc>rniwa</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1581581</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-10-18 15:54:48 -0700</bug_when>
    <thetext>ClipboardItem.getType returns a promise that resolves to a Blob containing data for the given type.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1581750</commentid>
    <comment_count>1</comment_count>
      <attachid>381380</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-10-19 17:49:09 -0700</bug_when>
    <thetext>Created attachment 381380
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1581751</commentid>
    <comment_count>2</comment_count>
      <attachid>381381</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-10-19 17:58:27 -0700</bug_when>
    <thetext>Created attachment 381381
Fix Win/GTK/WPE</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1581874</commentid>
    <comment_count>3</comment_count>
      <attachid>381381</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2019-10-21 10:29:07 -0700</bug_when>
    <thetext>Comment on attachment 381381
Fix Win/GTK/WPE

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

&gt; Source/WebCore/Modules/async-clipboard/Clipboard.cpp:148
&gt; +        m_activeSession = WTF::nullopt;

Why does trying to get the type of a non-active item clear the Clipboard&apos;s &quot;active session&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1581880</commentid>
    <comment_count>4</comment_count>
      <attachid>381381</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-10-21 10:37:24 -0700</bug_when>
    <thetext>Comment on attachment 381381
Fix Win/GTK/WPE

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

&gt;&gt; Source/WebCore/Modules/async-clipboard/Clipboard.cpp:148
&gt;&gt; +        m_activeSession = WTF::nullopt;
&gt; 
&gt; Why does trying to get the type of a non-active item clear the Clipboard&apos;s &quot;active session&quot;?

Good catch! Yeah, this would mean that trying to fetch an invalid clipboard item’s data would cause currently valid items to become invalidated, which is wrong.

Removed the `m_activeSession = WTF::nullopt;`; I will also add a new layout test to exercise this scenario.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1581894</commentid>
    <comment_count>5</comment_count>
      <attachid>381419</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-10-21 11:07:44 -0700</bug_when>
    <thetext>Created attachment 381419
Fix &amp; new layout test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1581980</commentid>
    <comment_count>6</comment_count>
      <attachid>381419</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-21 13:20:01 -0700</bug_when>
    <thetext>Comment on attachment 381419
Fix &amp; new layout test

Clearing flags on attachment: 381419

Committed r251377: &lt;https://trac.webkit.org/changeset/251377&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1581981</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-21 13:20:03 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1581983</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-10-21 13:21:21 -0700</bug_when>
    <thetext>&lt;rdar://problem/56473973&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>381380</attachid>
            <date>2019-10-19 17:49:09 -0700</date>
            <delta_ts>2019-10-19 17:58:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203168-20191019174908.patch</filename>
            <type>text/plain</type>
            <size>48668</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxMzE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzU0MzZkNzQ4MmE0ZmQw
ZTg4Zjg2ZmU1ZDRjZGFlZjZjMmZhMGY2Ny4uYjhjMTU3YWM2NDI3ZDdmMGUxYzIyNWYwOWZmZWQ3
MzMzODc0YTUwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDE5LTEwLTE5ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtDbGlwYm9hcmQg
QVBJXSBJbXBsZW1lbnQgQ2xpcGJvYXJkSXRlbS5nZXRUeXBlKCkgZm9yIHBsYXRmb3JtIGNsaXBi
b2FyZCBpdGVtcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjAzMTY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGhpcyBwYXRjaCBjb21wbGV0ZXMgc3VwcG9ydCBmb3IgQ2xpcGJvYXJkSXRlbS5nZXRUeXBl
KCkuCisKKyAgICAgICAgVGVzdHM6ICBlZGl0aW5nL2FzeW5jLWNsaXBib2FyZC9jbGlwYm9hcmQt
Y2hhbmdlLWRhdGEtd2hpbGUtZ2V0dGluZy10eXBlLmh0bWwKKyAgICAgICAgICAgICAgICBlZGl0
aW5nL2FzeW5jLWNsaXBib2FyZC9jbGlwYm9hcmQtaXRlbS1nZXQtdHlwZS1iYXNpYy5odG1sCisg
ICAgICAgICAgICAgICAgQ2xpcGJvYXJkVGVzdHMuUmVhZE11bHRpcGxlSXRlbXMKKworICAgICAg
ICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDbGlwYm9hcmQ6OmdldFR5cGUpOgorCisgICAgICAgIEltcGxlbWVudCBnZXRUeXBlKCku
IElmIHRoZSBnaXZlbiBjbGlwYm9hcmQgaXRlbSBpcyBiZWluZyB0cmFja2VkIGFzIG9uZSBvZiB0
aGUgYWN0aXZlIGNsaXBib2FyZCBpdGVtcywgdGhlbgorICAgICAgICBhbGxvdyBpdCB0byByZWFk
IGRhdGEgZnJvbSB0aGUgcGxhdGZvcm0gcGFzdGVib2FyZC4gV2UgdXNlIGV4aXN0aW5nIHBhc3Rl
Ym9hcmQgcmVhZGluZyBtZXRob2RzIGFuZCBjbGFzc2VzCisgICAgICAgIChQYXN0ZWJvYXJkUGxh
aW5UZXh0IGFuZCBXZWJDb250ZW50TWFya3VwUmVhZGVyKSB0byBhc2sgdGhlIHBsYXRmb3JtIHBh
c3RlYm9hcmQgZm9yIHRleHQgYW5kIG1hcmt1cCBkYXRhLAorICAgICAgICByZXNwZWN0aXZlbHks
IGFuZCBnbyB0aHJvdWdoIHJlYWRVUkwoKSBmb3IgInRleHQvdXJpLWxpc3QiLgorCisgICAgICAg
IEJlZm9yZSBleHBvc2luZyBhbnkgZGF0YSB0byB0aGUgcGFnZSwgd2UgYWRkaXRpb25hbGx5IGNo
ZWNrIHRoYXQgdGhlIGNoYW5nZSBjb3VudCBvZiB0aGUgcGFzdGVib2FyZCBpcyBzdGlsbAorICAg
ICAgICB3aGF0IHdlIHN0YXJ0ZWQgd2l0aCB3aGVuIHNldHRpbmcgdXAgdGhlIGN1cnJlbnQgc2Vz
c2lvbi4gSWYgdGhpcyBpcyBub3QgdGhlIGNhc2UsIHdlIHJlamVjdCB0aGUgcHJvbWlzZSBhbmQK
KyAgICAgICAgaW1tZWRpYXRlbHkgY2xlYXIgb3V0IHRoZSBzZXNzaW9uLgorCisgICAgICAgIChX
ZWJDb3JlOjpDbGlwYm9hcmQ6OmFjdGl2ZVBhc3RlYm9hcmQpOgorICAgICAgICAqIE1vZHVsZXMv
YXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZC5oOgorICAgICAgICAqIGRvbS9EYXRhVHJhbnNmZXIu
aDoKKworICAgICAgICBEcml2ZS1ieSB0d2VhazogbWFrZSB0aGUgV2ViQ29udGVudFJlYWRpbmdQ
b2xpY3kgZW51bSBjbGFzcyBuYXJyb3dlci4KKworICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9h
cmQuaDoKKworICAgICAgICBBZGQgYW4gZW51bSBmbGFnIGZvciBhbGxvd2luZyBvciBpZ25vcmlu
ZyB0aGUgcGxhdGZvcm0gVVJMIHR5cGUgd2hlbiByZWFkaW5nIHBsYWluIHRleHQgZnJvbSB0aGUg
cGxhdGZvcm0KKyAgICAgICAgcGFzdGVib2FyZC4gV2UgdXNlIHRoaXMgaW4gQ2xpcGJvYXJkOjpn
ZXRUeXBlKCkgdG8gaWdub3JlIFVSTHMgb24gdGhlIHBsYXRmb3JtIHBhc3RlYm9hcmQgd2hlbiBw
bGFpbiB0ZXh0LCBzaW5jZQorICAgICAgICB0aGUgcGxhaW4gdGV4dCByZWFkZXIgd291bGQgb3Ro
ZXJ3aXNlIHByZWZlciBVUkxzIG92ZXIgcGxhaW4gdGV4dCBieSBkZWZhdWx0LCBhbmQgcmVhZCB0
aGUgVVJMIHR5cGUgaW5zdGVhZCBvZgorICAgICAgICB0aGUgcGxhaW4gdGV4dCB0eXBlLgorCisg
ICAgICAgICogcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2d0ay9QYXN0ZWJvYXJkR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJl
YWQpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tOgorICAgICAgICAo
V2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZCk6CisgICAgICAgICogcGxhdGZvcm0vbGlid3BlL1Bh
c3RlYm9hcmRMaWJXUEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZCk6
CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW06CisgICAgICAgIChXZWJD
b3JlOjpQYXN0ZWJvYXJkOjpyZWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vUGFzdGVib2Fy
ZFdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFkKToKKwogMjAxOS0x
MC0xOCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBb
Q2xpcGJvYXJkIEFQSV0gUmVmYWN0b3IgUGFzdGVib2FyZDo6cmVhZCgpIHRvIHRha2UgYW4gb3B0
aW9uYWwgaXRlbSBpbmRleApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3lu
Yy1jbGlwYm9hcmQvQ2xpcGJvYXJkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMt
Y2xpcGJvYXJkL0NsaXBib2FyZC5jcHAKaW5kZXggYWNjNTgxNDA2NmNkMmEyZThlMGM1ZDU1NDA3
YmZhNTg0ZWQyY2MyNy4uOWI5NDllNWM3YjljZmEyZTFiZmE2MjYwMmJlNDZhZDY3YjJkNDFiNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJv
YXJkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlw
Ym9hcmQuY3BwCkBAIC0zNCw2ICszNCw4IEBACiAjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJy
ZWQuaCIKICNpbmNsdWRlICJOYXZpZ2F0b3IuaCIKICNpbmNsdWRlICJQYXN0ZWJvYXJkLmgiCisj
aW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCisjaW5jbHVkZSAiV2ViQ29udGVudFJlYWRlci5oIgog
I2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
QEAgLTEyNiw5ICsxMjgsNjUgQEAgdm9pZCBDbGlwYm9hcmQ6OnJlYWQoUmVmPERlZmVycmVkUHJv
bWlzZT4mJiBwcm9taXNlKQogCiB2b2lkIENsaXBib2FyZDo6Z2V0VHlwZShDbGlwYm9hcmRJdGVt
JiBpdGVtLCBjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlz
ZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oaXRlbSk7Ci0gICAgVU5VU0VEX1BBUkFNKHR5cGUpOwot
ICAgIHByb21pc2UtPnJlamVjdChOb3RTdXBwb3J0ZWRFcnJvcik7CisgICAgaWYgKCFtX2FjdGl2
ZVNlc3Npb24pIHsKKyAgICAgICAgcHJvbWlzZS0+cmVqZWN0KE5vdEFsbG93ZWRFcnJvcik7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGZyYW1lID0gbWFrZVJlZlB0cih0aGlz
LT5mcmFtZSgpKTsKKyAgICBpZiAoIWZyYW1lKSB7CisgICAgICAgIG1fYWN0aXZlU2Vzc2lvbiA9
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcHJvbWlzZS0+cmVqZWN0KE5vdEFsbG93ZWRFcnJvcik7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGl0ZW1JbmRleCA9IG1fYWN0aXZl
U2Vzc2lvbi0+aXRlbXMuZmluZE1hdGNoaW5nKFsmXSAoYXV0byYgYWN0aXZlSXRlbSkgeworICAg
ICAgICByZXR1cm4gYWN0aXZlSXRlbS5wdHIoKSA9PSAmaXRlbTsKKyAgICB9KTsKKworICAgIGlm
IChpdGVtSW5kZXggPT0gbm90Rm91bmQpIHsKKyAgICAgICAgbV9hY3RpdmVTZXNzaW9uID0gV1RG
OjpudWxsb3B0OworICAgICAgICBwcm9taXNlLT5yZWplY3QoTm90QWxsb3dlZEVycm9yKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghaXRlbS50eXBlcygpLmNvbnRhaW5zKHR5
cGUpKSB7CisgICAgICAgIHByb21pc2UtPnJlamVjdChOb3RBbGxvd2VkRXJyb3IpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgU3RyaW5nIHJlc3VsdEFzU3RyaW5nOworCisgICAgaWYg
KHR5cGUgPT0gInRleHQvdXJpLWxpc3QiX3MpIHsKKyAgICAgICAgU3RyaW5nIHRpdGxlOworICAg
ICAgICByZXN1bHRBc1N0cmluZyA9IGFjdGl2ZVBhc3RlYm9hcmQoKS5yZWFkVVJMKGl0ZW1JbmRl
eCwgdGl0bGUpLnN0cmluZygpOworICAgIH0KKworICAgIGlmICh0eXBlID09ICJ0ZXh0L3BsYWlu
Il9zKSB7CisgICAgICAgIFBhc3RlYm9hcmRQbGFpblRleHQgcGxhaW5UZXh0UmVhZGVyOworICAg
ICAgICBhY3RpdmVQYXN0ZWJvYXJkKCkucmVhZChwbGFpblRleHRSZWFkZXIsIFBsYWluVGV4dFVS
TFJlYWRpbmdQb2xpY3k6Oklnbm9yZVVSTCwgaXRlbUluZGV4KTsKKyAgICAgICAgcmVzdWx0QXNT
dHJpbmcgPSBXVEZNb3ZlKHBsYWluVGV4dFJlYWRlci50ZXh0KTsKKyAgICB9CisKKyAgICBpZiAo
dHlwZSA9PSAidGV4dC9odG1sIl9zKSB7CisgICAgICAgIFdlYkNvbnRlbnRNYXJrdXBSZWFkZXIg
bWFya3VwUmVhZGVyIHsgKmZyYW1lIH07CisgICAgICAgIGFjdGl2ZVBhc3RlYm9hcmQoKS5yZWFk
KG1hcmt1cFJlYWRlciwgV2ViQ29udGVudFJlYWRpbmdQb2xpY3k6Ok9ubHlSaWNoVGV4dFR5cGVz
LCBpdGVtSW5kZXgpOworICAgICAgICByZXN1bHRBc1N0cmluZyA9IFdURk1vdmUobWFya3VwUmVh
ZGVyLm1hcmt1cCk7CisgICAgfQorCisgICAgLy8gRklYTUU6IFN1cHBvcnQgcmVhZGluZyAiaW1h
Z2UvcG5nIiBhcyB3ZWxsIGFzIGN1c3RvbSBkYXRhLgorICAgIC8vIEZJWE1FOiBJbnN0ZWFkIG9m
IGNoZWNraW5nIGNoYW5nZUNvdW50IGhlcmUsIHdlIHNob3VsZCBzZW5kIHRoZSBjaGFuZ2VDb3Vu
dCBvdmVyIHRvIHRoZSBVSSBwcm9jZXNzIHRvIGJlIHZldHRlZAorICAgIC8vIHdoZW4gYXR0ZW1w
dGluZyB0byByZWFkIHRoZSBkYXRhIGluIHRoZSBmaXJzdCBwbGFjZS4KKyAgICBpZiAobV9hY3Rp
dmVTZXNzaW9uLT5jaGFuZ2VDb3VudCAhPSBhY3RpdmVQYXN0ZWJvYXJkKCkuY2hhbmdlQ291bnQo
KSkgeworICAgICAgICBtX2FjdGl2ZVNlc3Npb24gPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIHBy
b21pc2UtPnJlamVjdChOb3RBbGxvd2VkRXJyb3IpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgaWYgKCFyZXN1bHRBc1N0cmluZy5pc051bGwoKSkKKyAgICAgICAgcHJvbWlzZS0+cmVz
b2x2ZTxJRExJbnRlcmZhY2U8QmxvYj4+KENsaXBib2FyZEl0ZW06OmJsb2JGcm9tU3RyaW5nKHJl
c3VsdEFzU3RyaW5nLCB0eXBlKSk7CisgICAgZWxzZQorICAgICAgICBwcm9taXNlLT5yZWplY3Qo
Tm90QWxsb3dlZEVycm9yKTsKIH0KIAogdm9pZCBDbGlwYm9hcmQ6OndyaXRlKGNvbnN0IFZlY3Rv
cjxSZWZQdHI8Q2xpcGJvYXJkSXRlbT4+JiBpdGVtcywgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBw
cm9taXNlKQpAQCAtMTQyLDQgKzIwMCwxMSBAQCBGcmFtZSogQ2xpcGJvYXJkOjpmcmFtZSgpIGNv
bnN0CiAgICAgcmV0dXJuIG1fbmF2aWdhdG9yID8gbV9uYXZpZ2F0b3ItPmZyYW1lKCkgOiBudWxs
cHRyOwogfQogCitQYXN0ZWJvYXJkJiBDbGlwYm9hcmQ6OmFjdGl2ZVBhc3RlYm9hcmQoKQorewor
ICAgIEFTU0VSVChtX2FjdGl2ZVNlc3Npb24pOworICAgIEFTU0VSVChtX2FjdGl2ZVNlc3Npb24t
PnBhc3RlYm9hcmQpOworICAgIHJldHVybiAqbV9hY3RpdmVTZXNzaW9uLT5wYXN0ZWJvYXJkOwor
fQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2Fy
ZC9DbGlwYm9hcmQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0Ns
aXBib2FyZC5oCmluZGV4IDIxNzMxNGJkMzZlOGVlNWZlNDAwZThhMjM0YTc4NjU5OTI2YWFlYjku
Ljg3YWU1N2FjODQwZTc3YTA3ZTdlOTFmNjAxMzEzMmEwMzU2MmMxNGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZC5oCkBAIC03Myw2
ICs3Myw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZWZFdmVudFRhcmdldCgpIGZpbmFsIHsgcmVm
KCk7IH0KICAgICB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBmaW5hbCB7IGRlcmVmKCk7IH0KIAor
ICAgIFBhc3RlYm9hcmQmIGFjdGl2ZVBhc3RlYm9hcmQoKTsKKwogICAgIE9wdGlvbmFsPFNlc3Np
b24+IG1fYWN0aXZlU2Vzc2lvbjsKICAgICBXZWFrUHRyPE5hdmlnYXRvcj4gbV9uYXZpZ2F0b3I7
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5oIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5oCmluZGV4IDY1MDc5M2NmODZiMWExZGZkNDE5
YjliMzMzNTk5M2FkOTU2ODA0ZjEuLmU1Y2ZhZjg1NmZiMjg4M2ZjMTU0ZGRjODhiMGQ3NzIzYmM5
ODhiMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmgKQEAgLTM5LDcgKzM5LDcgQEAgY2xh
c3MgRWxlbWVudDsKIGNsYXNzIEZpbGVMaXN0OwogY2xhc3MgRmlsZTsKIGNsYXNzIFBhc3RlYm9h
cmQ7Ci1lbnVtIGNsYXNzIFdlYkNvbnRlbnRSZWFkaW5nUG9saWN5OworZW51bSBjbGFzcyBXZWJD
b250ZW50UmVhZGluZ1BvbGljeSA6IGJvb2w7CiAKIGNsYXNzIERhdGFUcmFuc2ZlciA6IHB1Ymxp
YyBSZWZDb3VudGVkPERhdGFUcmFuc2Zlcj4gewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGFzdGVib2FyZC5oCmluZGV4IDMxNDEzMjVjYjJlMjQxMzhiYzQ2NDUxMmIwYTQyOWQ5MDNhYzkw
MjQuLjNiY2RkODIzNWMzZGExOTU3ZTEzZjI0OTRiYTlmZGM0Y2RlMWVjZWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKQEAgLTY1LDcgKzY1LDggQEAgY2xhc3MgUmFuZ2U7CiBj
bGFzcyBTZWxlY3Rpb25EYXRhOwogY2xhc3MgU2hhcmVkQnVmZmVyOwogCi1lbnVtIGNsYXNzIFdl
YkNvbnRlbnRSZWFkaW5nUG9saWN5IHsgQW55VHlwZSwgT25seVJpY2hUZXh0VHlwZXMgfTsKK2Vu
dW0gY2xhc3MgUGxhaW5UZXh0VVJMUmVhZGluZ1BvbGljeSA6IGJvb2wgeyBJZ25vcmVVUkwsIEFs
bG93VVJMIH07CitlbnVtIGNsYXNzIFdlYkNvbnRlbnRSZWFkaW5nUG9saWN5IDogYm9vbCB7IEFu
eVR5cGUsIE9ubHlSaWNoVGV4dFR5cGVzIH07CiBlbnVtIFNob3VsZFNlcmlhbGl6ZVNlbGVjdGVk
VGV4dEZvckRhdGFUcmFuc2ZlciB7IERlZmF1bHRTZWxlY3RlZFRleHRUeXBlLCBJbmNsdWRlSW1h
Z2VBbHRUZXh0Rm9yRGF0YVRyYW5zZmVyIH07CiAKIC8vIEZvciB3cml0aW5nIHRvIHRoZSBwYXN0
ZWJvYXJkLiBHZW5lcmFsbHkgc29ydGVkIHdpdGggdGhlIHJpY2hlc3QgZm9ybWF0cyBvbiB0b3Au
CkBAIC0xOTgsNyArMTk5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgV0VCQ09SRV9FWFBPUlQg
dm9pZCBjbGVhcigpOwogICAgIHZpcnR1YWwgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhcihjb25z
dCBTdHJpbmcmIHR5cGUpOwogCi0gICAgdmlydHVhbCBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlYWQo
UGFzdGVib2FyZFBsYWluVGV4dCYsIE9wdGlvbmFsPHNpemVfdD4gaXRlbUluZGV4ID0gV1RGOjpu
dWxsb3B0KTsKKyAgICB2aXJ0dWFsIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVhZChQYXN0ZWJvYXJk
UGxhaW5UZXh0JiwgUGxhaW5UZXh0VVJMUmVhZGluZ1BvbGljeSA9IFBsYWluVGV4dFVSTFJlYWRp
bmdQb2xpY3k6OkFsbG93VVJMLCBPcHRpb25hbDxzaXplX3Q+IGl0ZW1JbmRleCA9IFdURjo6bnVs
bG9wdCk7CiAgICAgdmlydHVhbCBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlYWQoUGFzdGVib2FyZFdl
YkNvbnRlbnRSZWFkZXImLCBXZWJDb250ZW50UmVhZGluZ1BvbGljeSA9IFdlYkNvbnRlbnRSZWFk
aW5nUG9saWN5OjpBbnlUeXBlLCBPcHRpb25hbDxzaXplX3Q+IGl0ZW1JbmRleCA9IFdURjo6bnVs
bG9wdCk7CiAgICAgdmlydHVhbCBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlYWQoUGFzdGVib2FyZEZp
bGVSZWFkZXImKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGlj
UGFzdGVib2FyZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5o
CmluZGV4IDBlNzY0ZWFjNDQ0YzY2MTJiODhiY2RhODM1N2ZhMTA1Y2NkMzlkMmIuLmE2ZDUwZDhh
YjdmYTQ3NzlkNTY4ZmE5YThmY2IyNGVhZjg3ZDQwMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TdGF0aWNQYXN0ZWJvYXJkLmgKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogICAgIHZv
aWQgY2xlYXIoKSBmaW5hbDsKICAgICB2b2lkIGNsZWFyKGNvbnN0IFN0cmluZyYgdHlwZSkgZmlu
YWw7CiAKLSAgICB2b2lkIHJlYWQoUGFzdGVib2FyZFBsYWluVGV4dCYsIE9wdGlvbmFsPHNpemVf
dD4gPSBXVEY6Om51bGxvcHQpIGZpbmFsIHsgfQorICAgIHZvaWQgcmVhZChQYXN0ZWJvYXJkUGxh
aW5UZXh0JiwgUGxhaW5UZXh0VVJMUmVhZGluZ1BvbGljeSA9IFBsYWluVGV4dFVSTFJlYWRpbmdQ
b2xpY3k6OkFsbG93VVJMLCBPcHRpb25hbDxzaXplX3Q+ID0gV1RGOjpudWxsb3B0KSBmaW5hbCB7
IH0KICAgICB2b2lkIHJlYWQoUGFzdGVib2FyZFdlYkNvbnRlbnRSZWFkZXImLCBXZWJDb250ZW50
UmVhZGluZ1BvbGljeSwgT3B0aW9uYWw8c2l6ZV90PiA9IFdURjo6bnVsbG9wdCkgZmluYWwgeyB9
CiAKICAgICB2b2lkIHdyaXRlKGNvbnN0IFBhc3RlYm9hcmRVUkwmKSBmaW5hbCB7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcAppbmRleCBlYzk3ZjEz
Y2I0M2JlODk5YmU5ZDFkZGExOWI4NzY0MGIwNjc0Y2FjLi4yNzJiMTI4NWYyMzNhZGFhZDA4ZDIw
MWVhODQzNmVkNGE1MGI3MTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvUGFzdGVib2FyZEd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bh
c3RlYm9hcmRHdGsuY3BwCkBAIC0yMzIsNyArMjMyLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjpzZXRE
cmFnSW1hZ2UoRHJhZ0ltYWdlLCBjb25zdCBJbnRQb2ludCYpCiB9CiAjZW5kaWYKIAotdm9pZCBQ
YXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRQbGFpblRleHQmIHRleHQsIE9wdGlvbmFsPHNpemVf
dD4pCit2b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZFBsYWluVGV4dCYgdGV4dCwgUGxh
aW5UZXh0VVJMUmVhZGluZ1BvbGljeSA9IFBsYWluVGV4dFVSTFJlYWRpbmdQb2xpY3k6OkFsbG93
VVJMLCBPcHRpb25hbDxzaXplX3Q+KQogewogICAgIHJlYWRGcm9tQ2xpcGJvYXJkKCk7CiAgICAg
dGV4dC50ZXh0ID0gbV9zZWxlY3Rpb25EYXRhLT50ZXh0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCmluZGV4IGY2MjczZjBhZTdiM2E2YTJmMDk1MDhk
MTQzMDRmYmIwYmFkYzkxYmYuLmVkMmYwZTNhMDJiZjU4MGYyNzIxYzU5OTY2MjgyN2VjZTFiZmEz
Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9T
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCkBA
IC0xNTAsMTcgKzE1MCwyNCBAQCBib29sIFBhc3RlYm9hcmQ6OmNhblNtYXJ0UmVwbGFjZSgpCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkUGxh
aW5UZXh0JiB0ZXh0LCBPcHRpb25hbDxzaXplX3Q+IGl0ZW1JbmRleCkKK3ZvaWQgUGFzdGVib2Fy
ZDo6cmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0JiB0ZXh0LCBQbGFpblRleHRVUkxSZWFkaW5nUG9s
aWN5IGFsbG93VVJMLCBPcHRpb25hbDxzaXplX3Q+IGl0ZW1JbmRleCkKIHsKICAgICBhdXRvIGl0
ZW1JbmRleFRvUXVlcnkgPSBpdGVtSW5kZXgudmFsdWVPcigwKTsKIAogICAgIFBhc3RlYm9hcmRT
dHJhdGVneSYgc3RyYXRlZ3kgPSAqcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJh
dGVneSgpOwotICAgIHRleHQudGV4dCA9IHN0cmF0ZWd5LnJlYWRTdHJpbmdGcm9tUGFzdGVib2Fy
ZChpdGVtSW5kZXhUb1F1ZXJ5LCBrVVRUeXBlVVJMLCBtX3Bhc3RlYm9hcmROYW1lKTsKLSAgICBp
ZiAoIXRleHQudGV4dC5pc0VtcHR5KCkpIHsKLSAgICAgICAgdGV4dC5pc1VSTCA9IHRydWU7Ci0g
ICAgICAgIHJldHVybjsKKworICAgIGlmIChhbGxvd1VSTCA9PSBQbGFpblRleHRVUkxSZWFkaW5n
UG9saWN5OjpBbGxvd1VSTCkgeworICAgICAgICB0ZXh0LnRleHQgPSBzdHJhdGVneS5yZWFkU3Ry
aW5nRnJvbVBhc3RlYm9hcmQoaXRlbUluZGV4VG9RdWVyeSwga1VUVHlwZVVSTCwgbV9wYXN0ZWJv
YXJkTmFtZSk7CisgICAgICAgIGlmICghdGV4dC50ZXh0LmlzRW1wdHkoKSkgeworICAgICAgICAg
ICAgdGV4dC5pc1VSTCA9IHRydWU7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KICAg
ICB9CiAKKyAgICAvLyBXZSBhc2sgZm9yIHRoZSAicHVibGljLnRleHQiIHJlcHJlc2VudGF0aW9u
IG9ubHkgYXMgYSBsZWdhY3kgZmFsbGJhY2ssIGluIGNhc2UgYXBwcyBzdGlsbCBkaXJlY3RseSB3
cml0ZQorICAgIC8vIHBsYWluIHRleHQgZm9yIHRoaXMgYWJzdHJhY3QgVVRJLiBJbiBhbG1vc3Qg
YWxsIGNhc2VzLCB0aGUgbW9yZSBjb3JyZWN0IGNob2ljZSB3b3VsZCBiZSB0byB3cml0ZSB0bwor
ICAgIC8vIG9uZSBvZiB0aGUgY29uY3JldGUgInB1YmxpYy5wbGFpbi10ZXh0IiByZXByZXNlbnRh
dGlvbnMgKGUuZy4ga1VUVHlwZVVURjgpLiBJbiB0aGUgZnV0dXJlLCB3ZSBzaG91bGQKKyAgICAv
LyBjb25zaWRlciByZW1vdmluZyBzdXBwb3J0IGZvciByZWFkaW5nIHBsYWluIHRleHQgZnJvbSAi
cHVibGljLnRleHQiLgogICAgIHRleHQudGV4dCA9IHN0cmF0ZWd5LnJlYWRTdHJpbmdGcm9tUGFz
dGVib2FyZChpdGVtSW5kZXhUb1F1ZXJ5LCBrVVRUeXBlUGxhaW5UZXh0LCBtX3Bhc3RlYm9hcmRO
YW1lKTsKICAgICBpZiAodGV4dC50ZXh0LmlzRW1wdHkoKSkKICAgICAgICAgdGV4dC50ZXh0ID0g
c3RyYXRlZ3kucmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKGl0ZW1JbmRleFRvUXVlcnksIGtVVFR5
cGVUZXh0LCBtX3Bhc3RlYm9hcmROYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJkTGliV1BFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2xpYndwZS9QYXN0ZWJvYXJkTGliV1BFLmNwcAppbmRleCA3ZDc4MDA5NjJkMjU2ZmQ5Njg4
NmQ5MTBjOWIxNjhhNmY3ZTBkNjI2Li4yMGRmYmZlMmNlOTVhNjFiY2MwNjkzNGYwZWNhZWRjYTcx
NzQ1ZDdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9saWJ3cGUvUGFzdGVi
b2FyZExpYldQRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1Bhc3Rl
Ym9hcmRMaWJXUEUuY3BwCkBAIC05NSw3ICs5NSw3IEBAIHZvaWQgUGFzdGVib2FyZDo6Y2xlYXIo
Y29uc3QgU3RyaW5nJikKIHsKIH0KIAotdm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRQ
bGFpblRleHQmIHRleHQsIE9wdGlvbmFsPHNpemVfdD4pCit2b2lkIFBhc3RlYm9hcmQ6OnJlYWQo
UGFzdGVib2FyZFBsYWluVGV4dCYgdGV4dCwgUGxhaW5UZXh0VVJMUmVhZGluZ1BvbGljeSA9IFBs
YWluVGV4dFVSTFJlYWRpbmdQb2xpY3k6OkFsbG93VVJMLCBPcHRpb25hbDxzaXplX3Q+KQogewog
ICAgIHRleHQudGV4dCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3ko
KS0+cmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKDAsICJ0ZXh0L3BsYWluO2NoYXJzZXQ9dXRmLTgi
LCBuYW1lKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bh
c3RlYm9hcmRNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1h
Yy5tbQppbmRleCBhM2U0YjI5YjYyNThmN2Q5ZGFhOTUyNjg1NTU4Y2NkNGNhNDM5MDZkLi44OGY0
NGI2MjYzZjYwMTM5Njk0YTYzZmIwOTc4NTI5ZThjMjc5ZTc2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQpAQCAtMzE4LDcgKzMxOCw3IEBAIHN0YXRp
YyBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgoY29u
c3QgU3RyaW5nJiB0eXBlLCBPCiAgICAgcmV0dXJuIHN0cmF0ZWd5LmJ1ZmZlckZvclR5cGUodHlw
ZSwgcGFzdGVib2FyZE5hbWUpOwogfQogCi12b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2Fy
ZFBsYWluVGV4dCYgdGV4dCwgT3B0aW9uYWw8c2l6ZV90PiBpdGVtSW5kZXgpCit2b2lkIFBhc3Rl
Ym9hcmQ6OnJlYWQoUGFzdGVib2FyZFBsYWluVGV4dCYgdGV4dCwgUGxhaW5UZXh0VVJMUmVhZGlu
Z1BvbGljeSBhbGxvd1VSTCwgT3B0aW9uYWw8c2l6ZV90PiBpdGVtSW5kZXgpCiB7CiAgICAgYXV0
byYgc3RyYXRlZ3kgPSAqcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgp
OwogCkBAIC0zOTUsOCArMzk1LDEwIEBAIHZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJk
UGxhaW5UZXh0JiB0ZXh0LCBPcHRpb25hbDxzaXplX3Q+IGl0ZW1JbmRleCkKICAgICB9CiAKICAg
ICAvLyBGSVhNRTogVGhlIGNvZGUgYWJvdmUgbG9va3MgYXQgdGhlIHR5cGVzIHZlY3RvciBmaXJz
dCwgYnV0IHRoaXMganVzdCBnZXRzIHRoZSBzdHJpbmcgd2l0aG91dCBjaGVja2luZy4gV2h5IHRo
ZSBkaWZmZXJlbmNlPwotICAgIHRleHQudGV4dCA9IHJlYWRTdHJpbmdBdFByZWZlcnJlZEl0ZW1J
bmRleChsZWdhY3lVUkxQYXN0ZWJvYXJkVHlwZSgpLCBpdGVtSW5kZXgsIHN0cmF0ZWd5LCBtX3Bh
c3RlYm9hcmROYW1lKTsKLSAgICB0ZXh0LmlzVVJMID0gIXRleHQudGV4dC5pc051bGwoKTsKKyAg
ICBpZiAoYWxsb3dVUkwgPT0gUGxhaW5UZXh0VVJMUmVhZGluZ1BvbGljeTo6QWxsb3dVUkwpIHsK
KyAgICAgICAgdGV4dC50ZXh0ID0gcmVhZFN0cmluZ0F0UHJlZmVycmVkSXRlbUluZGV4KGxlZ2Fj
eVVSTFBhc3RlYm9hcmRUeXBlKCksIGl0ZW1JbmRleCwgc3RyYXRlZ3ksIG1fcGFzdGVib2FyZE5h
bWUpOworICAgICAgICB0ZXh0LmlzVVJMID0gIXRleHQudGV4dC5pc051bGwoKTsKKyAgICB9CiB9
CiAKIHZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkV2ViQ29udGVudFJlYWRlciYgcmVh
ZGVyLCBXZWJDb250ZW50UmVhZGluZ1BvbGljeSBwb2xpY3ksIE9wdGlvbmFsPHNpemVfdD4gaXRl
bUluZGV4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9h
cmRXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3Bw
CmluZGV4IDQ1YTM3Y2FjODNjYjI1YWUzZjFiOTRkYzExYzEwZjBlMjI2MDMzNDYuLmYzNjY3ZTE1
ODBlMzE1OGY3M2FlMTJmMzVlYzBmOWVlNTM5YzRjOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKQEAgLTc4OSw3ICs3ODksNyBAQCBib29sIFBh
c3RlYm9hcmQ6OmNhblNtYXJ0UmVwbGFjZSgpCiAgICAgcmV0dXJuIDo6SXNDbGlwYm9hcmRGb3Jt
YXRBdmFpbGFibGUoV2ViU21hcnRQYXN0ZUZvcm1hdCk7CiB9CiAKLXZvaWQgUGFzdGVib2FyZDo6
cmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0JiB0ZXh0LCBPcHRpb25hbDxzaXplX3Q+KQordm9pZCBQ
YXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRQbGFpblRleHQmIHRleHQsIFBsYWluVGV4dFVSTFJl
YWRpbmdQb2xpY3kgPSBQbGFpblRleHRVUkxSZWFkaW5nUG9saWN5OjpBbGxvd1VSTCwgT3B0aW9u
YWw8c2l6ZV90PikKIHsKICAgICBpZiAoOjpJc0NsaXBib2FyZEZvcm1hdEF2YWlsYWJsZShDRl9V
TklDT0RFVEVYVCkgJiYgOjpPcGVuQ2xpcGJvYXJkKG1fb3duZXIpKSB7CiAgICAgICAgIGlmIChI
QU5ETEUgY2JEYXRhID0gOjpHZXRDbGlwYm9hcmREYXRhKENGX1VOSUNPREVURVhUKSkgewpkaWZm
IC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDA4NWRiOGI2
NzA4OGY2YmZiNDQ5OTAxNWZkMzI4N2Q5ZjQ5MzAwN2EuLjJmMTE2ZDRmZmVjNDZiYjgwZTM3MTEy
YzIyYTQ1Nzg2MTQ2NjJhODkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29s
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NSBAQAorMjAxOS0xMC0xOSAgV2Vuc29uIEhzaWVoICA8
d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBbQ2xpcGJvYXJkIEFQSV0gSW1wbGVt
ZW50IENsaXBib2FyZEl0ZW0uZ2V0VHlwZSgpIGZvciBwbGF0Zm9ybSBjbGlwYm9hcmQgaXRlbXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMzE2OAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBzdXBw
b3J0IGZvciB0aGUgbmV3IGxheW91dCB0ZXN0cywgYXMgd2VsbCBhcyBhIG5ldyBBUEkgdGVzdC4K
KworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MuaDoK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tOgor
ICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXJJT1M6OmNvcHlUZXh0KToKKworICAgICAg
ICBJbXBsZW1lbnQgVUlTY3JpcHRDb250cm9sbGVyLmNvcHlUZXh0IGluIFdlYktpdDEuIFRoaXMg
aXMgdXNlZCBpbiBvbmUgb2YgdGhlIG5ldyBsYXlvdXQgdGVzdHMsIHdoaWNoIHBhc3NlcyBpbgor
ICAgICAgICBXZWJLaXQxIG9uIG1hY09TIGFuZCBpT1MuCisKKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS9tYWMvRHVtcFJlbmRlclRyZWVQYXN0ZWJvYXJkLm1tOgorICAgICAgICAoLVtMb2NhbFBh
c3RlYm9hcmQgZGVjbGFyZVR5cGVzOm93bmVyOl0pOgorICAgICAgICAoLVtMb2NhbFBhc3RlYm9h
cmQgYWRkVHlwZXM6b3duZXI6XSk6CisgICAgICAgICgtW0xvY2FsUGFzdGVib2FyZCBfYWRkVHlw
ZXNXaXRob3V0VXBkYXRpbmdDaGFuZ2VDb3VudDpvd25lcjpdKToKKworICAgICAgICBBZGp1c3Qg
bG9naWMgd2hlbiBkZWNsYXJpbmcgdHlwZXMgb24gdGhlIHBsYXRmb3JtIHBhc3RlYm9hcmQsIHN1
Y2ggdGhhdCBpdCBiZWhhdmVzIG1vcmUgbGlrZSB0aGUgcGxhdGZvcm07IHdoZW4KKyAgICAgICAg
ZGVjbGFyaW5nIHR5cGVzLCBldmVuIGlmIHRoZSBvd25lciBkb2Vzbid0IGNoYW5nZSwgdGhlIGNo
YW5nZSBjb3VudCBzaG91bGQgc3RpbGwgZ2V0IGJ1bXBlZCB1cCBieSAxLgorCisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvbWFjL1VJU2NyaXB0Q29udHJvbGxlck1hYy5oOgorICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL21hYy9VSVNjcmlwdENvbnRyb2xsZXJNYWMubW06CisgICAgICAgIChXVFI6
OlVJU2NyaXB0Q29udHJvbGxlck1hYzo6Y29weVRleHQpOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ2xpcGJvYXJkVGVzdHMubW06IEFkZGVkLgor
ICAgICAgICAoLVtUZXN0V0tXZWJWaWV3IHJlYWRDbGlwYm9hcmRdKToKKyAgICAgICAgKGNyZWF0
ZVdlYlZpZXdGb3JDbGlwYm9hcmRUZXN0cyk6CisgICAgICAgICh3cml0ZU11bHRpcGxlT2JqZWN0
c1RvUGxhdGZvcm1QYXN0ZWJvYXJkKToKKworICAgICAgICBBZGQgYSBuZXcgQVBJIHRlc3QgdG8g
dmVyaWZ5IHRoYXQgY2xpcGJvYXJkIGl0ZW1zIGNvbnRhaW4gdGhlIHJpZ2h0IGRhdGEgd2hlbiB3
cml0aW5nIG11bHRpcGxlIGl0ZW1zIChlYWNoIHdpdGgKKyAgICAgICAgZGlmZmVyZW50IHNldHMg
b2YgdHlwZXMpIHRvIHRoZSBwbGF0Zm9ybSBwYXN0ZWJvYXJkIHVzaW5nIG5hdGl2ZSBBUElzLgor
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9jbGlwYm9hcmQuaHRt
bDogQWRkZWQuCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9tYWMvV2ViS2l0VGVzdFJ1bm5l
clBhc3RlYm9hcmQubW06CisgICAgICAgICgtW0xvY2FsUGFzdGVib2FyZCBkZWNsYXJlVHlwZXM6
b3duZXI6XSk6CisgICAgICAgICgtW0xvY2FsUGFzdGVib2FyZCBhZGRUeXBlczpvd25lcjpdKToK
KyAgICAgICAgKC1bTG9jYWxQYXN0ZWJvYXJkIF9hZGRUeXBlc1dpdGhvdXRVcGRhdGluZ0NoYW5n
ZUNvdW50Om93bmVyOl0pOgorCiAyMDE5LTEwLTE4ICBKaWV3ZW4gVGFuICA8amlld2VuX3RhbkBh
cHBsZS5jb20+CiAKICAgICAgICAgW1dlYkF1dGhuXSBXYXJuIHVzZXJzIHdoZW4gbm8gY3JlZGVu
dGlhbHMgYXJlIGZvdW5kCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9pb3MvVUlT
Y3JpcHRDb250cm9sbGVySU9TLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9pb3MvVUlTY3JpcHRD
b250cm9sbGVySU9TLmgKaW5kZXggODgxODFlOWFhYzVhYmEwZDhmMzhlZjJlNDIyZjg5N2EwODE2
ZDM4Zi4uN2EyYTJlMDVjNTE5NTc5MjU1Y2Q0OGU0Yjc3YTcxMjZhODBkZDNhMCAxMDA2NDQKLS0t
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5oCisrKyBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MuaApAQCAtNDks
NiArNDksNyBAQCBwdWJsaWM6CiAgICAgZG91YmxlIG1pbmltdW1ab29tU2NhbGUoKSBjb25zdCBv
dmVycmlkZTsKICAgICBkb3VibGUgbWF4aW11bVpvb21TY2FsZSgpIGNvbnN0IG92ZXJyaWRlOwog
ICAgIEpTT2JqZWN0UmVmIGNvbnRlbnRWaXNpYmxlUmVjdCgpIGNvbnN0IG92ZXJyaWRlOworICAg
IHZvaWQgY29weVRleHQoSlNTdHJpbmdSZWYpIG92ZXJyaWRlOwogfTsKIAogfQpkaWZmIC0tZ2l0
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbSBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0KaW5kZXggNDJh
NmI5NTZhZTQzMWE2NzNiMzBjMzc5NGRjODgwZWU0YmM2NGQ2MC4uMDAwNmUzZDZkNWZkYmU1MGEw
YzkyMjEyOWYxYWQ1NDcwMTMwOTc0MSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
aW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9p
b3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbXBvcnQg
IkR1bXBSZW5kZXJUcmVlQnJvd3NlclZpZXcuaCIKICNpbXBvcnQgIlVJU2NyaXB0Q29udGV4dC5o
IgorI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvT3BhcXVlSlNTdHJpbmcuaD4KICNpbXBvcnQgPFdl
YkNvcmUvRmxvYXRSZWN0Lmg+CiAjaW1wb3J0IDx3dGYvTWFpblRocmVhZC5oPgogCkBAIC0xMzEs
NiArMTMyLDExIEBAIEpTT2JqZWN0UmVmIFVJU2NyaXB0Q29udHJvbGxlcklPUzo6Y29udGVudFZp
c2libGVSZWN0KCkgY29uc3QKICAgICByZXR1cm4gbV9jb250ZXh0LT5vYmplY3RGcm9tUmVjdChy
ZWN0KTsKIH0KIAordm9pZCBVSVNjcmlwdENvbnRyb2xsZXJJT1M6OmNvcHlUZXh0KEpTU3RyaW5n
UmVmIHRleHQpCit7CisgICAgVUlQYXN0ZWJvYXJkLmdlbmVyYWxQYXN0ZWJvYXJkLnN0cmluZyA9
IHRleHQtPnN0cmluZygpOworfQorCiB9CiAKICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZ
KQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlUGFz
dGVib2FyZC5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZVBhc3Rl
Ym9hcmQubW0KaW5kZXggZjk1MzBmNGQzMTNhOWNhYzdiZDk4NWFlNDE1NGZmYWFjNWE2ZmQ4Ny4u
ZTg3ZGY4YjhhMWJlOTljNzhmZjRhZmU1N2Y4MDIzZmI2MzMxNGIwZSAxMDA2NDQKLS0tIGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlUGFzdGVib2FyZC5tbQorKysgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWVQYXN0ZWJvYXJkLm1tCkBAIC0x
MjMsNyArMTIzLDggQEAgLSAoTlNJbnRlZ2VyKWRlY2xhcmVUeXBlczooTlNBcnJheSAqKW5ld1R5
cGVzIG93bmVyOihpZCluZXdPd25lcgogICAgIF90eXBlcy5jbGVhcigpOwogICAgIF9kYXRhLmNs
ZWFyKCk7CiAKLSAgICByZXR1cm4gW3NlbGYgYWRkVHlwZXM6bmV3VHlwZXMgb3duZXI6bmV3T3du
ZXJdOworICAgIFtzZWxmIF9hZGRUeXBlc1dpdGhvdXRVcGRhdGluZ0NoYW5nZUNvdW50Om5ld1R5
cGVzIG93bmVyOm5ld093bmVyXTsKKyAgICByZXR1cm4gKytfY2hhbmdlQ291bnQ7CiB9CiAKIHN0
YXRpYyBib29sIGlzVVRJKE5TU3RyaW5nICp0eXBlKQpAQCAtMTQxLDE3ICsxNDIsMjEgQEAgc3Rh
dGljIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdG9VVEkoTlNTdHJpbmcgKnR5cGUpCiAgICAgcmV0
dXJuIGFkb3B0Q0YoVVRUeXBlQ3JlYXRlUHJlZmVycmVkSWRlbnRpZmllckZvclRhZyhrVVRUYWdD
bGFzc05TUGJvYXJkVHlwZSwgKF9fYnJpZGdlIENGU3RyaW5nUmVmKXR5cGUsIG51bGxwdHIpKTsK
IH0KIAotLSAoTlNJbnRlZ2VyKWFkZFR5cGVzOihOU0FycmF5ICopbmV3VHlwZXMgb3duZXI6KGlk
KW5ld093bmVyCistIChOU0ludGVnZXIpYWRkVHlwZXM6KE5TQXJyYXk8TlNQYXN0ZWJvYXJkVHlw
ZT4gKiluZXdUeXBlcyBvd25lcjooaWQpbmV3T3duZXIKIHsKLSAgICBpZiAoX293bmVyICE9IG5l
d093bmVyKSB7Ci0gICAgICAgIF9vd25lciA9IG5ld093bmVyOworICAgIGF1dG8gcHJldmlvdXNP
d25lciA9IF9vd25lcjsKKyAgICBbc2VsZiBfYWRkVHlwZXNXaXRob3V0VXBkYXRpbmdDaGFuZ2VD
b3VudDpuZXdUeXBlcyBvd25lcjpuZXdPd25lcl07CisgICAgaWYgKHByZXZpb3VzT3duZXIgIT0g
bmV3T3duZXIpCiAgICAgICAgICsrX2NoYW5nZUNvdW50OwotICAgIH0KKyAgICByZXR1cm4gX2No
YW5nZUNvdW50OworfQorCistICh2b2lkKV9hZGRUeXBlc1dpdGhvdXRVcGRhdGluZ0NoYW5nZUNv
dW50OihOU0FycmF5ICopbmV3VHlwZXMgb3duZXI6KGlkKW5ld093bmVyCit7CisgICAgX293bmVy
ID0gbmV3T3duZXI7CiAKICAgICBmb3IgKE5TU3RyaW5nICp0eXBlIGluIG5ld1R5cGVzKQogICAg
ICAgICBfdHlwZXMuYWRkKHRvVVRJKHR5cGUpKTsKLQotICAgIHJldHVybiBfY2hhbmdlQ291bnQ7
CiB9CiAKIC0gKE5TSW50ZWdlciljaGFuZ2VDb3VudApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvbWFjL1VJU2NyaXB0Q29udHJvbGxlck1hYy5oIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvbWFjL1VJU2NyaXB0Q29udHJvbGxlck1hYy5oCmluZGV4IGQyNjQwN2M4NzVhZmQ5NDcxYzI2
NGQ0MDMzMzMzN2IzYzVhYTliMjcuLjBlN2VjMjgyMTM0NjI3MzViM2M2NmFlMGY2MjQyMjcxZGY4
ODQyNjMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9VSVNjcmlwdENvbnRy
b2xsZXJNYWMuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVUlTY3JpcHRDb250cm9s
bGVyTWFjLmgKQEAgLTQ5LDYgKzQ5LDcgQEAgcHVibGljOgogICAgIHZvaWQgdG9nZ2xlQ2Fwc0xv
Y2soSlNWYWx1ZVJlZikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzaW11bGF0ZUFjY2Vzc2liaWxpdHlT
ZXR0aW5nc0NoYW5nZU5vdGlmaWNhdGlvbihKU1ZhbHVlUmVmKSBvdmVycmlkZTsKICAgICBOU1Vu
ZG9NYW5hZ2VyICpwbGF0Zm9ybVVuZG9NYW5hZ2VyKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9p
ZCBjb3B5VGV4dChKU1N0cmluZ1JlZikgb3ZlcnJpZGU7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVUlTY3JpcHRDb250cm9sbGVyTWFjLm1tIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvbWFjL1VJU2NyaXB0Q29udHJvbGxlck1hYy5tbQppbmRleCA3OTg5ZWI0
MDhmZGMzZjZhMjQ1NzI3ZmM5ZTdjZjBhYjUzMjBhYzY1Li45OTZmYjkyZWUzZjQ5Nzk2MjQ0ODc5
NDg1OWE5Yzg1OWExZThkYWYxIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMv
VUlTY3JpcHRDb250cm9sbGVyTWFjLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9V
SVNjcmlwdENvbnRyb2xsZXJNYWMubW0KQEAgLTMxLDYgKzMxLDcgQEAKICNpbXBvcnQgPEphdmFT
Y3JpcHRDb3JlL0pTQ29udGV4dC5oPgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSlNTdHJpbmdS
ZWZDRi5oPgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSlNWYWx1ZS5oPgorI2ltcG9ydCA8SmF2
YVNjcmlwdENvcmUvT3BhcXVlSlNTdHJpbmcuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJLaXQuaD4K
ICNpbXBvcnQgPFdlYktpdC9XZWJWaWV3UHJpdmF0ZS5oPgogCkBAIC0xNDYsNiArMTQ3LDEzIEBA
IE5TVW5kb01hbmFnZXIgKlVJU2NyaXB0Q29udHJvbGxlck1hYzo6cGxhdGZvcm1VbmRvTWFuYWdl
cigpIGNvbnN0CiAgICAgcmV0dXJuIG5pbDsKIH0KIAordm9pZCBVSVNjcmlwdENvbnRyb2xsZXJN
YWM6OmNvcHlUZXh0KEpTU3RyaW5nUmVmIHRleHQpCit7CisgICAgTlNQYXN0ZWJvYXJkICpwYXN0
ZWJvYXJkID0gTlNQYXN0ZWJvYXJkLmdlbmVyYWxQYXN0ZWJvYXJkOworICAgIFtwYXN0ZWJvYXJk
IGRlY2xhcmVUeXBlczpbTlNBcnJheSBhcnJheVdpdGhPYmplY3Q6TlNQYXN0ZWJvYXJkVHlwZVN0
cmluZ10gb3duZXI6bmlsXTsKKyAgICBbcGFzdGVib2FyZCBzZXRTdHJpbmc6dGV4dC0+c3RyaW5n
KCkgZm9yVHlwZTpOU1Bhc3RlYm9hcmRUeXBlU3RyaW5nXTsKK30KKwogfQogCiAjZW5kaWYgLy8g
UExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0
QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RX
ZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBiODBlODI0NDBlZGU1YWE3
M2FhMmE4ODM1NWMzZTllNzE2MmYzN2Y4Li4xYjhiZGQ0ZjM4MjQ3YzlhM2U5MDk4NDkzODJjOTM5
MzE5Y2QzNjdhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEku
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RX
ZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtOTc0LDYgKzk3NCw4IEBACiAJ
CUY0MUFCOUE4MUVGNDY5NkIwMDgzRkEwOCAvKiBwcmV2ZW50LW9wZXJhdGlvbi5odG1sIGluIENv
cHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0MUFCOTk0
MUVGNDY5MkMwMDgzRkEwOCAvKiBwcmV2ZW50LW9wZXJhdGlvbi5odG1sICovOyB9OwogCQlGNDFB
QjlBOTFFRjQ2OTZCMDA4M0ZBMDggLyogcHJldmVudC1zdGFydC5odG1sIGluIENvcHkgUmVzb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0MUFCOTlBMUVGNDY5MkMw
MDgzRkEwOCAvKiBwcmV2ZW50LXN0YXJ0Lmh0bWwgKi87IH07CiAJCUY0MUFCOUFBMUVGNDY5NkIw
MDgzRkEwOCAvKiB0ZXh0YXJlYS10by1pbnB1dC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0MUFCOTk1MUVGNDY5MkMwMDgzRkEwOCAv
KiB0ZXh0YXJlYS10by1pbnB1dC5odG1sICovOyB9OworCQlGNDIyQTNFOTIzNUFDQTlCMDBDRjAw
Q0EgLyogQ2xpcGJvYXJkVGVzdHMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGNDIyQTNFODIzNUFDQTlCMDBDRjAwQ0EgLyogQ2xpcGJvYXJkVGVzdHMu
bW0gKi87IH07CisJCUY0MjJBM0VCMjM1QkIxNjIwMENGMDBDQSAvKiBjbGlwYm9hcmQuaHRtbCBp
biBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDIy
QTNFQTIzNUJCMTQ1MDBDRjAwQ0EgLyogY2xpcGJvYXJkLmh0bWwgKi87IH07CiAJCUY0MkQ2MzQ0
MjJBMTcyOUYwMEQyRkIzQSAvKiBBdXRvY29ycmVjdGlvblRlc3RzSU9TLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQyRDYzNDMyMkExNzI5RjAwRDJG
QjNBIC8qIEF1dG9jb3JyZWN0aW9uVGVzdHNJT1MubW0gKi87IH07CiAJCUY0MkRBNTE2MUQ4Q0VG
RTQwMDMzNkY0MCAvKiBsYXJnZS1pbnB1dC1maWVsZC1mb2N1cy1vbmxvYWQuaHRtbCBpbiBDb3B5
IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDJEQTUxNTFE
OENFRkRCMDAzMzZGNDAgLyogbGFyZ2UtaW5wdXQtZmllbGQtZm9jdXMtb25sb2FkLmh0bWwgKi87
IH07CiAJCUY0MzRDQTFBMjJFNjVCQ0EwMDVEREIyNiAvKiBTY3JvbGxUb1JldmVhbFNlbGVjdGlv
bi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0MzRD
QTE5MjJFNjVCQ0EwMDVEREIyNiAvKiBTY3JvbGxUb1JldmVhbFNlbGVjdGlvbi5tbSAqLzsgfTsK
QEAgLTExNzcsNiArMTE3OSw3IEBACiAJCQkJMkVGRjA2QzcxRDg4NkE1ODAwMDRCQjMwIC8qIGNo
YW5nZS12aWRlby1zb3VyY2Utb24tZW5kLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJ
OUJENDIzOUMxRTA0QzAxQzAwMjAwMzk1IC8qIGNoaW5lc2UtY2hhcmFjdGVyLXdpdGgtaW1hZ2Uu
aHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQk4MzlBQTM1RjIxQTI2QjAzMDA5ODBERDYg
LyogY2xpZW50LXNpZGUtcmVkaXJlY3QuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKKwkJCQlG
NDIyQTNFQjIzNUJCMTYyMDBDRjAwQ0EgLyogY2xpcGJvYXJkLmh0bWwgaW4gQ29weSBSZXNvdXJj
ZXMgKi8sCiAJCQkJMUE1MEFBMjAxQTJBNTFGQzAwRjRDMzQ1IC8qIGNsb3NlLWZyb20td2l0aGlu
LWNyZWF0ZS1wYWdlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJOUIyNzBGRUUxRERD
MkMwQjAwMkQ1M0YzIC8qIGNsb3NlZC1zaGFkb3ctdHJlZS10ZXN0Lmh0bWwgaW4gQ29weSBSZXNv
dXJjZXMgKi8sCiAJCQkJOUI5MzMyQ0UyMzIwQzc0NTAwMkQ1MEU4IC8qIGNvY29hLXdyaXRlci1t
YXJrdXAtd2l0aC1saXN0cy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLApAQCAtMjQ3NCw2ICsy
NDc3LDggQEAKIAkJRjQxQUI5OUMxRUY0NjkyQzAwODNGQTA4IC8qIGNvbnRlbnRlZGl0YWJsZS1h
bmQtdGV4dGFyZWEuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJjb250ZW50ZWRpdGFibGUtYW5kLXRleHRhcmVh
Lmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDFBQjk5RDFFRjQ2OTJDMDA4
M0ZBMDggLyogbGluay1hbmQtdGFyZ2V0LWRpdi5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gImxpbmstYW5kLXRh
cmdldC1kaXYuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0MUFCOTlFMUVG
NDY5MkMwMDgzRkEwOCAvKiBkaXYtYW5kLWxhcmdlLWltYWdlLmh0bWwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiZGl2
LWFuZC1sYXJnZS1pbWFnZS5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjQy
MkEzRTgyMzVBQ0E5QjAwQ0YwMENBIC8qIENsaXBib2FyZFRlc3RzLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gQ2xpcGJvYXJkVGVzdHMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUY0MjJBM0VBMjM1QkIxNDUwMENGMDBDQSAvKiBjbGlwYm9hcmQuaHRtbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQuaHRtbDsgcGF0aCA9IGNsaXBib2FyZC5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlGNDJENjM0MzIyQTE3MjlGMDBEMkZCM0EgLyogQXV0b2NvcnJlY3Rpb25UZXN0c0lPUy5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEF1dG9jb3JyZWN0aW9uVGVzdHNJT1MubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0MkRBNTE1MUQ4Q0VGREIwMDMzNkY0MCAvKiBsYXJn
ZS1pbnB1dC1maWVsZC1mb2N1cy1vbmxvYWQuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgbmFt
ZSA9ICJsYXJnZS1pbnB1dC1maWVsZC1mb2N1cy1vbmxvYWQuaHRtbCI7IHBhdGggPSAiVGVzdHMv
V2ViS2l0Q29jb2EvbGFyZ2UtaW5wdXQtZmllbGQtZm9jdXMtb25sb2FkLmh0bWwiOyBzb3VyY2VU
cmVlID0gU09VUkNFX1JPT1Q7IH07CiAJCUY0MzRDQTE5MjJFNjVCQ0EwMDVEREIyNiAvKiBTY3Jv
bGxUb1JldmVhbFNlbGVjdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNjcm9sbFRvUmV2
ZWFsU2VsZWN0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjc4Nyw2ICsy
NzkyLDcgQEAKIAkJCQkxQzJCODE4MTFDODkxRUZBMDBBNTUyOUYgLyogQ2FuY2VsRm9udFN1YnJl
c291cmNlUGx1Z0luLm1tICovLAogCQkJCTVDMjNERjBBMjI0NUM5RDcwMEY0NTRCNiAvKiBDaGFs
bGVuZ2UubW0gKi8sCiAJCQkJNUNCMThCQTcxRjU2NDVCMjAwRUUyM0M0IC8qIENsaWNrQXV0b0Zp
bGxCdXR0b24ubW0gKi8sCisJCQkJRjQyMkEzRTgyMzVBQ0E5QjAwQ0YwMENBIC8qIENsaXBib2Fy
ZFRlc3RzLm1tICovLAogCQkJCUNERjkyMjM2MjE2RDE4NjQwMDY0N0FBNyAvKiBDbG9zZVdlYlZp
ZXdBZnRlckVudGVyRnVsbHNjcmVlbi5tbSAqLywKIAkJCQlDREYwQjc4OTIxNkQ0ODQzMDA0MjFF
Q0MgLyogQ2xvc2VXZWJWaWV3RHVyaW5nRW50ZXJGdWxsc2NyZWVuLm1tICovLAogCQkJCTFBQUQx
OUY1MUM3Q0UyMDMwMDgzMUU0NyAvKiBDb2RpbmcubW0gKi8sCkBAIC0zMjMzLDYgKzMyMzksNyBA
QAogCQkJCTJFRkYwNkM0MUQ4ODY3NzAwMDA0QkIzMCAvKiBjaGFuZ2UtdmlkZW8tc291cmNlLW9u
LWNsaWNrLmh0bWwgKi8sCiAJCQkJMkVGRjA2QzYxRDg4NkE1NjAwMDRCQjMwIC8qIGNoYW5nZS12
aWRlby1zb3VyY2Utb24tZW5kLmh0bWwgKi8sCiAJCQkJODM5QUEzNUUyMUEyNkFDRDAwOTgwREQ2
IC8qIGNsaWVudC1zaWRlLXJlZGlyZWN0Lmh0bWwgKi8sCisJCQkJRjQyMkEzRUEyMzVCQjE0NTAw
Q0YwMENBIC8qIGNsaXBib2FyZC5odG1sICovLAogCQkJCTlCOTMzMkNEMjMyMEM3M0UwMDJENTBF
OCAvKiBjb2NvYS13cml0ZXItbWFya3VwLXdpdGgtbGlzdHMuaHRtbCAqLywKIAkJCQk5QkFFMTc3
QTIyRTJCQjZCMDBERjMwOTggLyogY29jb2Etd3JpdGVyLW1hcmt1cC13aXRoLXN5c3RlbS1mb250
cy5odG1sICovLAogCQkJCUU1MDM2Rjc3MjExQkMyMjgwMEJGREJFMiAvKiBjb2xvci1kcm9wLmh0
bWwgKi8sCkBAIC00NDY5LDYgKzQ0NzYsNyBAQAogCQkJCTU3MzAzQkM5MjAwODI0RDMwMDM1NTk2
NSAvKiBDQk9SVmFsdWVUZXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTU3MzAzQkNBMjAwODJD
MDEwMDM1NTk2NSAvKiBDQk9SV3JpdGVyVGVzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1QzIz
REYwQjIyNDYwMTU4MDBGNDU0QjYgLyogQ2hhbGxlbmdlLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJ
RjQyMkEzRTkyMzVBQ0E5QjAwQ0YwMENBIC8qIENsaXBib2FyZFRlc3RzLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJN0NDRTdFRTYxQTQxMUFFNjAwNDQ3QzRDIC8qIENsb3NlRnJvbVdpdGhpbkNyZWF0
ZVBhZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFQjcxQTQxMUE3RTAwNDQ3QzRDIC8q
IENsb3NlTmV3V2luZG93SW5OYXZpZ2F0aW9uUG9saWN5RGVsZWdhdGUubW0gaW4gU291cmNlcyAq
LywKIAkJCQk3Q0NFN0VFNTFBNDExQUU2MDA0NDdDNEMgLyogQ2xvc2VUaGVuVGVybWluYXRlLmNw
cCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9DbGlwYm9hcmRUZXN0cy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvQ2xpcGJvYXJkVGVzdHMubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDE2ZjI3ZmQ3YjI4Zjc4
YzlmYTcwNzU2MmQ3Y2M5ZGExZGNkOGRjNQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ2xpcGJvYXJkVGVzdHMubW0KQEAgLTAsMCArMSwx
MzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKworI2ltcG9ydCAiUGxhdGZv
cm1VdGlsaXRpZXMuaCIKKyNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKKyNpbXBvcnQgIlVJS2l0
U1BJLmgiCisjaW1wb3J0IDxDb3JlU2VydmljZXMvQ29yZVNlcnZpY2VzLmg+CisjaW1wb3J0IDxX
ZWJLaXQvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9fV0tFeHBlcmlt
ZW50YWxGZWF0dXJlLmg+CisKK0BpbnRlcmZhY2UgVGVzdFdLV2ViVmlldyAoQ2xpcGJvYXJkVGVz
dHMpCisKKy0gKHZvaWQpcmVhZENsaXBib2FyZDsKKworQGVuZAorCitAaW1wbGVtZW50YXRpb24g
VGVzdFdLV2ViVmlldyAoQ2xpcGJvYXJkVGVzdHMpCisKKy0gKHZvaWQpcmVhZENsaXBib2FyZAor
eworICAgIF9fYmxvY2sgYm9vbCBkb25lID0gZmFsc2U7CisgICAgW3NlbGYgcGVyZm9ybUFmdGVy
UmVjZWl2aW5nTWVzc2FnZTpAInJlYWRDbGlwYm9hcmQiIGFjdGlvbjpeeworICAgICAgICBkb25l
ID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBbc2VsZiBldmFsdWF0ZUphdmFTY3JpcHQ6QCJyZWFkQ2xp
cGJvYXJkKCkiIGNvbXBsZXRpb25IYW5kbGVyOm5pbF07CisgICAgVGVzdFdlYktpdEFQSTo6VXRp
bDo6cnVuKCZkb25lKTsKK30KKworQGVuZAorCitzdGF0aWMgUmV0YWluUHRyPFRlc3RXS1dlYlZp
ZXc+IGNyZWF0ZVdlYlZpZXdGb3JDbGlwYm9hcmRUZXN0cygpCit7CisjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKKyAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKKyAgICBkaXNw
YXRjaF9vbmNlKCZvbmNlVG9rZW4sIF57CisgICAgICAgIC8vIFVJUGFzdGVib2FyZCdzIHR5cGUg
Y29lcmNpb24gY29kZXBhdGhzIG9ubHkgdGFrZSBlZmZlY3Qgd2hlbiB0aGUgVUlBcHBsaWNhdGlv
biBoYXMgYmVlbiBpbml0aWFsaXplZC4KKyAgICAgICAgVUlBcHBsaWNhdGlvbkluaXRpYWxpemUo
KTsKKyAgICB9KTsKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQorCisgICAgYXV0byBj
b25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGlu
aXRdKTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdIF9zZXRET01QYXN0ZUFsbG93
ZWQ6WUVTXTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdIF9zZXRKYXZhU2NyaXB0
Q2FuQWNjZXNzQ2xpcGJvYXJkOllFU107CisgICAgZm9yIChfV0tFeHBlcmltZW50YWxGZWF0dXJl
ICpmZWF0dXJlIGluIFtXS1ByZWZlcmVuY2VzIF9leHBlcmltZW50YWxGZWF0dXJlc10pIHsKKyAg
ICAgICAgaWYgKFtmZWF0dXJlLmtleSBpc0VxdWFsVG9TdHJpbmc6QCJBc3luY0NsaXBib2FyZEFQ
SUVuYWJsZWQiXSkgeworICAgICAgICAgICAgW1tjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSBf
c2V0RW5hYmxlZDpZRVMgZm9yRXhwZXJpbWVudGFsRmVhdHVyZTpmZWF0dXJlXTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHRO
UyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCA0
MDAsIDQwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAgW3dlYlZp
ZXcgc3luY2hyb25vdXNseUxvYWRUZXN0UGFnZU5hbWVkOkAiY2xpcGJvYXJkIl07CisgICAgcmV0
dXJuIHdlYlZpZXc7Cit9CisKK3N0YXRpYyB2b2lkIHdyaXRlTXVsdGlwbGVPYmplY3RzVG9QbGF0
Zm9ybVBhc3RlYm9hcmQoKQoreworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBhdXRvIGZpcnN0SXRl
bSA9IGFkb3B0TlMoW1tOU1Bhc3RlYm9hcmRJdGVtIGFsbG9jXSBpbml0XSk7CisgICAgW2ZpcnN0
SXRlbSBzZXRTdHJpbmc6QCJIZWxsbyIgZm9yVHlwZTpOU1Bhc3RlYm9hcmRUeXBlU3RyaW5nXTsK
KworICAgIGF1dG8gc2Vjb25kSXRlbSA9IGFkb3B0TlMoW1tOU1Bhc3RlYm9hcmRJdGVtIGFsbG9j
XSBpbml0XSk7CisgICAgW3NlY29uZEl0ZW0gc2V0U3RyaW5nOkAiaHR0cHM6Ly9hcHBsZS5jb20v
IiBmb3JUeXBlOk5TUGFzdGVib2FyZFR5cGVVUkxdOworCisgICAgYXV0byB0aGlyZEl0ZW0gPSBh
ZG9wdE5TKFtbTlNQYXN0ZWJvYXJkSXRlbSBhbGxvY10gaW5pdF0pOworICAgIFt0aGlyZEl0ZW0g
c2V0U3RyaW5nOkAiPHN0cm9uZyBzdHlsZT0nY29sb3I6IHJnYigwLCAyNTUsIDApOyc+SGVsbG8g
d29ybGQ8L3N0cm9uZz4iIGZvclR5cGU6TlNQYXN0ZWJvYXJkVHlwZUhUTUxdOworCisgICAgYXV0
byBmb3VydGhJdGVtID0gYWRvcHROUyhbW05TUGFzdGVib2FyZEl0ZW0gYWxsb2NdIGluaXRdKTsK
KyAgICBbZm91cnRoSXRlbSBzZXRTdHJpbmc6QCJXZWJLaXQiIGZvclR5cGU6TlNQYXN0ZWJvYXJk
VHlwZVN0cmluZ107CisgICAgW2ZvdXJ0aEl0ZW0gc2V0U3RyaW5nOkAiaHR0cHM6Ly93ZWJraXQu
b3JnLyIgZm9yVHlwZTpOU1Bhc3RlYm9hcmRUeXBlVVJMXTsKKyAgICBbZm91cnRoSXRlbSBzZXRT
dHJpbmc6QCI8YSBocmVmPSdodHRwczovL3dlYmtpdC5vcmcvJz5IZWxsbyB3b3JsZDwvYT4iIGZv
clR5cGU6TlNQYXN0ZWJvYXJkVHlwZUhUTUxdOworCisgICAgTlNQYXN0ZWJvYXJkICpwYXN0ZWJv
YXJkID0gTlNQYXN0ZWJvYXJkLmdlbmVyYWxQYXN0ZWJvYXJkOworICAgIFtwYXN0ZWJvYXJkIGNs
ZWFyQ29udGVudHNdOworICAgIFtwYXN0ZWJvYXJkIHdyaXRlT2JqZWN0czpAW2ZpcnN0SXRlbS5n
ZXQoKSwgc2Vjb25kSXRlbS5nZXQoKSwgdGhpcmRJdGVtLmdldCgpLCBmb3VydGhJdGVtLmdldCgp
XV07CisjZWxzZQorICAgIGF1dG8gZmlyc3RJdGVtID0gYWRvcHROUyhbW05TSXRlbVByb3ZpZGVy
IGFsbG9jXSBpbml0V2l0aE9iamVjdDpAIkhlbGxvIl0pOworICAgIGF1dG8gc2Vjb25kSXRlbSA9
IGFkb3B0TlMoW1tOU0l0ZW1Qcm92aWRlciBhbGxvY10gaW5pdFdpdGhPYmplY3Q6W05TVVJMIFVS
TFdpdGhTdHJpbmc6QCJodHRwczovL2FwcGxlLmNvbS8iXV0pOworICAgIGF1dG8gdGhpcmRJdGVt
ID0gYWRvcHROUyhbW05TSXRlbVByb3ZpZGVyIGFsbG9jXSBpbml0XSk7CisgICAgW3RoaXJkSXRl
bSByZWdpc3RlckRhdGFSZXByZXNlbnRhdGlvbkZvclR5cGVJZGVudGlmaWVyOihfX2JyaWRnZSBO
U1N0cmluZyAqKWtVVFR5cGVIVE1MIHZpc2liaWxpdHk6TlNJdGVtUHJvdmlkZXJSZXByZXNlbnRh
dGlvblZpc2liaWxpdHlBbGwgbG9hZEhhbmRsZXI6WyZdICh2b2lkICheY29tcGxldGlvbkhhbmRs
ZXIpKE5TRGF0YSAqLCBOU0Vycm9yICopKSAtPiBOU1Byb2dyZXNzICogeworICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihbQCI8c3Ryb25nIHN0eWxlPSdjb2xvcjogcmdiKDAsIDI1NSwgMCk7Jz5I
ZWxsbyB3b3JsZDwvc3Ryb25nPiIgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2Rp
bmddLCBuaWwpOworICAgICAgICByZXR1cm4gbmlsOworICAgIH1dOworCisgICAgYXV0byBmb3Vy
dGhJdGVtID0gYWRvcHROUyhbW05TSXRlbVByb3ZpZGVyIGFsbG9jXSBpbml0XSk7CisgICAgW2Zv
dXJ0aEl0ZW0gcmVnaXN0ZXJPYmplY3Q6QCJXZWJLaXQiIHZpc2liaWxpdHk6TlNJdGVtUHJvdmlk
ZXJSZXByZXNlbnRhdGlvblZpc2liaWxpdHlBbGxdOworICAgIFtmb3VydGhJdGVtIHJlZ2lzdGVy
T2JqZWN0OltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cHM6Ly93ZWJraXQub3JnLyJdIHZpc2li
aWxpdHk6TlNJdGVtUHJvdmlkZXJSZXByZXNlbnRhdGlvblZpc2liaWxpdHlBbGxdOworICAgIFtm
b3VydGhJdGVtIHJlZ2lzdGVyRGF0YVJlcHJlc2VudGF0aW9uRm9yVHlwZUlkZW50aWZpZXI6KF9f
YnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZUhUTUwgdmlzaWJpbGl0eTpOU0l0ZW1Qcm92aWRlclJl
cHJlc2VudGF0aW9uVmlzaWJpbGl0eUFsbCBsb2FkSGFuZGxlcjpbJl0gKHZvaWQgKF5jb21wbGV0
aW9uSGFuZGxlcikoTlNEYXRhICosIE5TRXJyb3IgKikpIC0+IE5TUHJvZ3Jlc3MgKiB7CisgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKFtAIjxhIGhyZWY9J2h0dHBzOi8vd2Via2l0Lm9yZy8nPkhl
bGxvIHdvcmxkPC9hPiIgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddLCBu
aWwpOworICAgICAgICByZXR1cm4gbmlsOworICAgIH1dOworCisgICAgVUlQYXN0ZWJvYXJkLmdl
bmVyYWxQYXN0ZWJvYXJkLml0ZW1Qcm92aWRlcnMgPSBAWyBmaXJzdEl0ZW0uZ2V0KCksIHNlY29u
ZEl0ZW0uZ2V0KCksIHRoaXJkSXRlbS5nZXQoKSwgZm91cnRoSXRlbS5nZXQoKSBdOworI2VuZGlm
Cit9CisKK1RFU1QoQ2xpcGJvYXJkVGVzdHMsIFJlYWRNdWx0aXBsZUl0ZW1zKQoreworICAgIGF1
dG8gd2ViVmlldyA9IGNyZWF0ZVdlYlZpZXdGb3JDbGlwYm9hcmRUZXN0cygpOworICAgIHdyaXRl
TXVsdGlwbGVPYmplY3RzVG9QbGF0Zm9ybVBhc3RlYm9hcmQoKTsKKyAgICBbd2ViVmlldyByZWFk
Q2xpcGJvYXJkXTsKKworICAgIEVYUEVDVF9XS19TVFJFUSgiIiwgW3dlYlZpZXcgc3RyaW5nQnlF
dmFsdWF0aW5nSmF2YVNjcmlwdDpAImV4Y2VwdGlvbiA/IGV4Y2VwdGlvbi5tZXNzYWdlIDogJyci
XSk7CisgICAgRVhQRUNUX0VRKDRVLCBbW3dlYlZpZXcgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNj
cmlwdDpAImNsaXBib2FyZERhdGEubGVuZ3RoIl0gdW5zaWduZWRJbnRWYWx1ZV0pOworICAgIEVY
UEVDVF9XS19TVFJFUSgiSGVsbG8iLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2Ny
aXB0OkAiY2xpcGJvYXJkRGF0YVswXVsndGV4dC9wbGFpbiddIl0pOworICAgIEVYUEVDVF9XS19T
VFJFUSgiaHR0cHM6Ly9hcHBsZS5jb20vIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2
YVNjcmlwdDpAImNsaXBib2FyZERhdGFbMV1bJ3RleHQvdXJpLWxpc3QnXSJdKTsKKyAgICBFWFBF
Q1RfV0tfU1RSRVEoInJnYigwLCAyNTUsIDApIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5n
SmF2YVNjcmlwdDpAImdldENvbXB1dGVkU3R5bGUoY2xpcGJvYXJkRGF0YVsyXVsndGV4dC9odG1s
J10ucXVlcnlTZWxlY3Rvcignc3Ryb25nJykpLmNvbG9yIl0pOworICAgIEVYUEVDVF9XS19TVFJF
USgiV2ViS2l0IiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImNsaXBi
b2FyZERhdGFbM11bJ3RleHQvcGxhaW4nXSJdKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoImh0dHBz
Oi8vd2Via2l0Lm9yZy8iLCBbd2ViVmlldyBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAi
Y2xpcGJvYXJkRGF0YVszXVsndGV4dC91cmktbGlzdCddIl0pOworICAgIEVYUEVDVF9XS19TVFJF
USgiaHR0cHM6Ly93ZWJraXQub3JnLyIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFT
Y3JpcHQ6QCJjbGlwYm9hcmREYXRhWzNdWyd0ZXh0L2h0bWwnXS5xdWVyeVNlbGVjdG9yKCdhJyku
aHJlZiJdKTsKK30KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvY2xpcGJvYXJkLmh0bWwgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL2NsaXBib2FyZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZhMzgyOTA4ZGZkOWIyMDM4MTUxZDQyNjg0
ZjE4MDNhOWY4MDNiZDYKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL2NsaXBib2FyZC5odG1sCkBAIC0wLDAgKzEsNTcgQEAKKzwhRE9DVFlQ
RT4KKzxodG1sPgorPHNjcmlwdD4KK2Z1bmN0aW9uIGxvYWRUZXh0KGJsb2IpIHsKKyAgICByZXR1
cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4geworICAgICAgICBjb25zdCByZWFk
ZXIgPSBuZXcgRmlsZVJlYWRlcjsKKyAgICAgICAgcmVhZGVyLmFkZEV2ZW50TGlzdGVuZXIoImxv
YWQiLCAoKSA9PiByZXNvbHZlKHJlYWRlci5yZXN1bHQpLCB7IG9uY2U6IHRydWUgfSk7CisgICAg
ICAgIHJlYWRlci5hZGRFdmVudExpc3RlbmVyKCJlcnJvciIsIHJlamVjdCwgeyBvbmNlOiB0cnVl
IH0pOworICAgICAgICByZWFkZXIucmVhZEFzVGV4dChibG9iKTsKKyAgICB9KTsKK30KKworZnVu
Y3Rpb24gbG9hZEltYWdlKGJsb2IpIHsKKyAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUs
IHJlamVjdCkgPT4geworICAgICAgICBjb25zdCBpbWFnZSA9IG5ldyBJbWFnZTsKKyAgICAgICAg
aW1hZ2UuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsICgpID0+IHJlc29sdmUoaW1hZ2UpLCB7IG9u
Y2U6IHRydWUgfSk7CisgICAgICAgIGltYWdlLmFkZEV2ZW50TGlzdGVuZXIoImVycm9yIiwgcmVq
ZWN0LCB7IG9uY2U6IHRydWUgfSk7CisgICAgICAgIGltYWdlLnNyYyA9IFVSTC5jcmVhdGVPYmpl
Y3RVUkwoYmxvYik7CisgICAgfSk7Cit9CisKK2Z1bmN0aW9uIGxvYWREb2N1bWVudChibG9iKSB7
CisgICAgcmV0dXJuIG5ldyBQcm9taXNlKGFzeW5jIHJlc29sdmUgPT4geworICAgICAgICByZXNv
bHZlKG5ldyBET01QYXJzZXIoKS5wYXJzZUZyb21TdHJpbmcoYXdhaXQgbG9hZFRleHQoYmxvYiks
ICJ0ZXh0L2h0bWwiKSk7CisgICAgfSk7Cit9CisKK2NsaXBib2FyZERhdGEgPSBbXTsKK2V4Y2Vw
dGlvbiA9IG51bGw7CisKK2FzeW5jIGZ1bmN0aW9uIHJlYWRDbGlwYm9hcmQoKSB7CisgICAgdHJ5
IHsKKyAgICAgICAgY29uc3QgaXRlbXMgPSBhd2FpdCBuYXZpZ2F0b3IuY2xpcGJvYXJkLnJlYWQo
KTsKKyAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7CisgICAgICAgICAgICBsZXQg
aXRlbURhdGEgPSB7fTsKKyAgICAgICAgICAgIGZvciAoY29uc3QgdHlwZSBvZiBpdGVtLnR5cGVz
KSB7CisgICAgICAgICAgICAgICAgY29uc3QgYmxvYiA9IGF3YWl0IGl0ZW0uZ2V0VHlwZSh0eXBl
KTsKKyAgICAgICAgICAgICAgICBpZiAodHlwZSA9PT0gInRleHQvaHRtbCIpCisgICAgICAgICAg
ICAgICAgICAgIGl0ZW1EYXRhW3R5cGVdID0gYXdhaXQgbG9hZERvY3VtZW50KGJsb2IpOworICAg
ICAgICAgICAgICAgIGVsc2UgaWYgKHR5cGUgPT09ICJpbWFnZS9wbmciKQorICAgICAgICAgICAg
ICAgICAgICBpdGVtRGF0YVt0eXBlXSA9IGF3YWl0IGxvYWRJbWFnZShibG9iKTsKKyAgICAgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGl0ZW1EYXRhW3R5cGVdID0gYXdhaXQg
bG9hZFRleHQoYmxvYik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjbGlwYm9hcmREYXRh
LnB1c2goaXRlbURhdGEpOworICAgICAgICB9CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBl
eGNlcHRpb24gPSBlOworICAgIH0gZmluYWxseSB7CisgICAgICAgIHdlYmtpdC5tZXNzYWdlSGFu
ZGxlcnMudGVzdEhhbmRsZXIucG9zdE1lc3NhZ2UoInJlYWRDbGlwYm9hcmQiKTsKKyAgICB9Cit9
Cis8L3NjcmlwdD4KKzxib2R5PgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL21hYy9XZWJLaXRUZXN0UnVubmVyUGFzdGVib2FyZC5tbSBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1dlYktpdFRlc3RSdW5uZXJQYXN0ZWJvYXJkLm1tCmlu
ZGV4IDlkYmY2ZGQyNDQ4YzIxMTU3M2I1NmFiMDYxM2FmMTE2Mjc3YTRjNmEuLjZhNDJiY2FiYTQ2
MzQ0NWMxM2ZkZTNhMWUwNzA0NjkyMGExOTc0YjQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvbWFjL1dlYktpdFRlc3RSdW5uZXJQYXN0ZWJvYXJkLm1tCisrKyBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvbWFjL1dlYktpdFRlc3RSdW5uZXJQYXN0ZWJvYXJkLm1tCkBAIC0xNDAs
MTAgKzE0MCwxOSBAQCAtIChOU0ludGVnZXIpY2xlYXJDb250ZW50cwogLSAoTlNJbnRlZ2VyKWRl
Y2xhcmVUeXBlczooTlNBcnJheSAqKW5ld1R5cGVzIG93bmVyOihpZCluZXdPd25lcgogewogICAg
IFtzZWxmIF9jbGVhckNvbnRlbnRzV2l0aG91dFVwZGF0aW5nQ2hhbmdlQ291bnRdOwotICAgIHJl
dHVybiBbc2VsZiBhZGRUeXBlczpuZXdUeXBlcyBvd25lcjpuZXdPd25lcl07CisgICAgW3NlbGYg
X2FkZFR5cGVzV2l0aG91dFVwZGF0aW5nQ2hhbmdlQ291bnQ6bmV3VHlwZXMgb3duZXI6bmV3T3du
ZXJdOworICAgIHJldHVybiArK2NoYW5nZUNvdW50OworfQorCistIChOU0ludGVnZXIpYWRkVHlw
ZXM6KE5TQXJyYXk8TlNQYXN0ZWJvYXJkVHlwZT4gKiluZXdUeXBlcyBvd25lcjooaWQpbmV3T3du
ZXIKK3sKKyAgICBbc2VsZiBfYWRkVHlwZXNXaXRob3V0VXBkYXRpbmdDaGFuZ2VDb3VudDpuZXdU
eXBlcyBvd25lcjpuZXdPd25lcl07CisgICAgLy8gRklYTUU6IElkZWFsbHksIHdlIHdvdWxkIGtl
ZXAgdHJhY2sgb2YgdGhlIGN1cnJlbnQgb3duZXIgYW5kIG9ubHkgYnVtcCB0aGUgY2hhbmdlCisg
ICAgLy8gY291bnQgaWYgdGhlIG5ldyBvd25lciBpcyBkaWZmZXJlbnQuCisgICAgcmV0dXJuICsr
Y2hhbmdlQ291bnQ7CiB9CiAKLS0gKE5TSW50ZWdlcilhZGRUeXBlczooTlNBcnJheSAqKW5ld1R5
cGVzIG93bmVyOihpZCluZXdPd25lcgorLSAodm9pZClfYWRkVHlwZXNXaXRob3V0VXBkYXRpbmdD
aGFuZ2VDb3VudDooTlNBcnJheSAqKW5ld1R5cGVzIG93bmVyOihpZCluZXdPd25lcgogewogICAg
IHVuc2lnbmVkIGNvdW50ID0gW25ld1R5cGVzIGNvdW50XTsKICAgICB1bnNpZ25lZCBpOwpAQCAt
MTU5LDcgKzE2OCw2IEBAIC0gKE5TSW50ZWdlcilhZGRUeXBlczooTlNBcnJheSAqKW5ld1R5cGVz
IG93bmVyOihpZCluZXdPd25lcgogICAgICAgICBpZiAobmV3T3duZXIgJiYgW25ld093bmVyIHJl
c3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IocGFzdGVib2FyZDpwcm92aWRlRGF0YUZvclR5cGU6
KV0pCiAgICAgICAgICAgICBbbmV3T3duZXIgcGFzdGVib2FyZDpzZWxmIHByb3ZpZGVEYXRhRm9y
VHlwZTpzZXRUeXBlXTsKICAgICB9Ci0gICAgcmV0dXJuICsrY2hhbmdlQ291bnQ7CiB9CiAKIC0g
KE5TSW50ZWdlciljaGFuZ2VDb3VudApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGZhN2Y3ZjcwNWZiNDYyOGY0YWJiNTY0ZmU0
OTNhMDE5ZjJhZmNhYzEuLmI5YjQ3Y2YwZWI2NDE0NjgzNGMzYzgwODI2YzViNDRiMDg0MGRkZTkg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAxOS0xMC0xOSAgV2Vuc29uIEhzaWVoICA8d2Vuc29u
X2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBbQ2xpcGJvYXJkIEFQSV0gSW1wbGVtZW50IENs
aXBib2FyZEl0ZW0uZ2V0VHlwZSgpIGZvciBwbGF0Zm9ybSBjbGlwYm9hcmQgaXRlbXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMzE2OAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIGNvdXBsZSBv
ZiBuZXcgbGF5b3V0IHRlc3RzLgorCisgICAgICAgICogZWRpdGluZy9hc3luYy1jbGlwYm9hcmQv
Y2xpcGJvYXJkLWNoYW5nZS1kYXRhLXdoaWxlLWdldHRpbmctdHlwZS1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGVkaXRpbmcvYXN5bmMtY2xpcGJvYXJkL2NsaXBib2FyZC1jaGFuZ2Ut
ZGF0YS13aGlsZS1nZXR0aW5nLXR5cGUuaHRtbDogQWRkZWQuCisKKyAgICAgICAgQWRkIGEgbGF5
b3V0IHRlc3QgdG8gdmVyaWZ5IHRoYXQgaWYgdGhlIHBhc3RlYm9hcmQgY2hhbmdlcyByaWdodCBh
ZnRlciB0aGUgcGFnZSBoYXMgb2J0YWluZWQgY2xpcGJvYXJkIGl0ZW1zLAorICAgICAgICB0aGUg
cGFnZSBzaG91bGQgbm90IGJlIGFibGUgdG8gZmV0Y2ggdGhlIG5ldyBjb250ZW50cyBvZiB0aGUg
cGFzdGVib2FyZCB1c2luZyB0aGVzZSBjbGlwYm9hcmQgaXRlbXMuCisKKyAgICAgICAgKiBlZGl0
aW5nL2FzeW5jLWNsaXBib2FyZC9jbGlwYm9hcmQtaXRlbS1nZXQtdHlwZS1iYXNpYy1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvYXN5bmMtY2xpcGJvYXJkL2NsaXBib2Fy
ZC1pdGVtLWdldC10eXBlLWJhc2ljLmh0bWw6IEFkZGVkLgorCisgICAgICAgIEFkZCBhIGxheW91
dCB0ZXN0IHRvIHZlcmlmeSB0aGF0IGFmdGVyIHdyaXRpbmcgbXVsdGlwbGUgdHlwZXMgdG8gdGhl
IGNsaXBib2FyZCB1c2luZyB0aGUgRGF0YVRyYW5zZmVyIEFQSSwgd2UKKyAgICAgICAgc2hvdWxk
IGJlIGFibGUgdG8gcmVhZCB0aGVtIGJhY2sgdXNpbmcgdGhlIGFzeW5jIGNsaXBib2FyZCBBUEks
IGFzIGEgc2luZ2xlIENsaXBib2FyZEl0ZW0sIGFuZCBhbHNvIGdldCBkYXRhIG91dAorICAgICAg
ICBvZiB0aGUgY2xpcGJvYXJkIGl0ZW0gdXNpbmcgQ2xpcGJvYXJkSXRlbS5nZXRUeXBlLgorCisg
ICAgICAgICogZWRpdGluZy9hc3luYy1jbGlwYm9hcmQvcmVzb3VyY2VzL2FzeW5jLWNsaXBib2Fy
ZC1oZWxwZXJzLmpzOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zOgor
ICAgICAgICAqIHJlc291cmNlcy91aS1oZWxwZXIuanM6CisgICAgICAgICh3aW5kb3cuVUlIZWxw
ZXIuYXN5bmMuY29weVRleHQpOgorICAgICAgICAod2luZG93LlVJSGVscGVyKToKKwogMjAxOS0x
MC0xOCAgSmlld2VuIFRhbiAgPGppZXdlbl90YW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJB
dXRobl0gV2FybiB1c2VycyB3aGVuIG5vIGNyZWRlbnRpYWxzIGFyZSBmb3VuZApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9hc3luYy1jbGlwYm9hcmQvY2xpcGJvYXJkLWNoYW5nZS1k
YXRhLXdoaWxlLWdldHRpbmctdHlwZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5n
L2FzeW5jLWNsaXBib2FyZC9jbGlwYm9hcmQtY2hhbmdlLWRhdGEtd2hpbGUtZ2V0dGluZy10eXBl
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MTFlOGQwN2RjNmUyNTNkYTM3YTgwZmYzMzUzZDU4
ODkxNjAyNjk4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9hc3luYy1j
bGlwYm9hcmQvY2xpcGJvYXJkLWNoYW5nZS1kYXRhLXdoaWxlLWdldHRpbmctdHlwZS1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwxMSBAQAorVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgaWYgcGxhdGZv
cm0gcGFzdGVib2FyZCBjb250ZW50cyBhcmUgY2hhbmdlZCBiZWZvcmUgcmVhZGluZyBmcm9tIGEg
Q2xpcGJvYXJkSXRlbSwgdGhlIG5ldyBjb250ZW50cyBvZiB0aGUgcGFzdGVib2FyZCBzaG91bGQg
bm90IGJlIGV4cG9zZWQgdG8gdGhlIHBhZ2UgYW5kIHRoZSByZXN1bHQgb2YgZ2V0VHlwZSgpIHNo
b3VsZCBiZSByZWplY3RlZC4gVGhpcyB0ZXN0IHJlcXVpcmVzIFdlYktpdFRlc3RSdW5uZXIuCisK
K09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZv
bGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGl0ZW1zLmxlbmd0aCBpcyAxCitQ
QVNTIEhhbmRsZWQgZXhjZXB0aW9uOiBOb3RBbGxvd2VkRXJyb3IKK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9lZGl0aW5nL2FzeW5jLWNsaXBib2FyZC9jbGlwYm9hcmQtY2hhbmdlLWRhdGEtd2hpbGUtZ2V0
dGluZy10eXBlLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL2FzeW5jLWNsaXBib2FyZC9jbGlw
Ym9hcmQtY2hhbmdlLWRhdGEtd2hpbGUtZ2V0dGluZy10eXBlLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzYy
YTQ2YjYxZWQwODc5ZjI5M2FjN2FiYTYyMDJlMmI4ODJhYTcxYQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2VkaXRpbmcvYXN5bmMtY2xpcGJvYXJkL2NsaXBib2FyZC1jaGFuZ2UtZGF0
YS13aGlsZS1nZXR0aW5nLXR5cGUuaHRtbApAQCAtMCwwICsxLDMyIEBACis8IURPQ1RZUEUgaHRt
bD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyB1c2VGbGV4aWJsZVZpZXdwb3J0PXRydWUgZXhw
ZXJpbWVudGFsOkFzeW5jQ2xpcGJvYXJkQVBJRW5hYmxlZD10cnVlIF0gLS0+Cis8aHRtbD4KKyAg
ICA8bWV0YSBjaGFyc2V0PSJ1dGY4Ij4KKyAgICA8aGVhZD4KKyAgICAgICAgPG1ldGEgbmFtZT0i
dmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xLCB1
c2VyLXNjYWxhYmxlPW5vIj4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0iLi9yZXNvdXJj
ZXMvYXN5bmMtY2xpcGJvYXJkLWhlbHBlcnMuanMiPjwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAg
ICA8c2NyaXB0PgorICAgICAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICBhc3lu
YyBmdW5jdGlvbiBydW5UZXN0KCkgeworICAgICAgICAgICAgZGVzY3JpcHRpb24oIlRoaXMgdGVz
dCB2ZXJpZmllcyB0aGF0IGlmIHBsYXRmb3JtIHBhc3RlYm9hcmQgY29udGVudHMgYXJlIGNoYW5n
ZWQgYmVmb3JlIHJlYWRpbmcgZnJvbSBhIENsaXBib2FyZEl0ZW0sIHRoZSBuZXcgY29udGVudHMg
b2YgdGhlIHBhc3RlYm9hcmQgc2hvdWxkIG5vdCBiZSBleHBvc2VkIHRvIHRoZSBwYWdlIGFuZCB0
aGUgcmVzdWx0IG9mIGdldFR5cGUoKSBzaG91bGQgYmUgcmVqZWN0ZWQuIFRoaXMgdGVzdCByZXF1
aXJlcyBXZWJLaXRUZXN0UnVubmVyLiIpOworCisgICAgICAgICAgICBhd2FpdCBVSUhlbHBlci5j
b3B5VGV4dCgiRm9vIik7CisgICAgICAgICAgICBpdGVtcyA9IGF3YWl0IG5hdmlnYXRvci5jbGlw
Ym9hcmQucmVhZCgpOworICAgICAgICAgICAgc2hvdWxkQmUoIml0ZW1zLmxlbmd0aCIsICIxIik7
CisgICAgICAgICAgICBhd2FpdCBVSUhlbHBlci5jb3B5VGV4dCgiQmFyIik7CisgICAgICAgICAg
ICB0cnkgeworICAgICAgICAgICAgICAgIGNvbnN0IHRleHRCbG9iID0gYXdhaXQgaXRlbXNbMF0u
Z2V0VHlwZSgidGV4dC9wbGFpbiIpOworICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoYERpZCBu
b3QgaGFuZGxlIGV4Y2VwdGlvbiAoaW5zdGVhZCwgZ290IHRleHQ6ICIke2F3YWl0IGxvYWRUZXh0
KHRleHRCbG9iKX0iKWApOworICAgICAgICAgICAgfSBjYXRjaCAoZXhjZXB0aW9uKSB7CisgICAg
ICAgICAgICAgICAgdGVzdFBhc3NlZChgSGFuZGxlZCBleGNlcHRpb246ICR7ZXhjZXB0aW9uLm5h
bWV9YCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAg
ICAgfQorCisgICAgICAgIGFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBydW5UZXN0KTsKKyAgICA8
L3NjcmlwdD4KKyAgICA8Ym9keT48L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9lZGl0aW5nL2FzeW5jLWNsaXBib2FyZC9jbGlwYm9hcmQtaXRlbS1nZXQtdHlwZS1iYXNp
Yy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL2FzeW5jLWNsaXBib2FyZC9jbGlw
Ym9hcmQtaXRlbS1nZXQtdHlwZS1iYXNpYy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjE0NjNi
MGEzNDNlZGJjNTY1ZGZkYTE2NjVmZjU3ODE5ZTgxNGJmNAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2VkaXRpbmcvYXN5bmMtY2xpcGJvYXJkL2NsaXBib2FyZC1pdGVtLWdldC10eXBl
LWJhc2ljLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEzIEBACitUaGlzIHRlc3QgdmVyaWZpZXMg
dGhhdCBDbGlwYm9hcmRJdGVtLmdldFR5cGUoKSBjYW4gYmUgdXNlZCB0byBnZXQgY2xpcGJvYXJk
IGRhdGEgd3JpdHRlbiB1c2luZyBEYXRhVHJhbnNmZXIgQVBJcy4gVG8gdGVzdCBtYW51YWxseSwg
Y2xpY2sgdGhlIHRvcCBidXR0b24gdG8gd3JpdGUgdG8gdGhlIHBhc3RlYm9hcmQsIGFuZCB0aGVu
IGNsaWNrIHRoZSBib3R0b20gYnV0dG9uIHRvIHBhc3RlLgorCitPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCisKK1BBU1MgaXRlbXMubGVuZ3RoIGlzIDEKK1BBU1MgaXRlbS50eXBlcy5sZW5ndGgg
aXMgMworUEFTUyB0ZXh0IGlzICJBcHBsZSwgSW5jLiIKK1BBU1MgdXJsIGlzICJodHRwczovL3d3
dy5hcHBsZS5jb20vIgorUEFTUyBkb2MucXVlcnlTZWxlY3RvcignYScpLmhyZWYgaXMgImh0dHBz
Oi8vd3d3LmFwcGxlLmNvbS8iCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9hc3luYy1jbGlw
Ym9hcmQvY2xpcGJvYXJkLWl0ZW0tZ2V0LXR5cGUtYmFzaWMuaHRtbCBiL0xheW91dFRlc3RzL2Vk
aXRpbmcvYXN5bmMtY2xpcGJvYXJkL2NsaXBib2FyZC1pdGVtLWdldC10eXBlLWJhc2ljLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMTM1Y2M1M2ZlYzc5YTNmZjQ1MGQ3ODMyNjg2ZWVlNjA1ZDg4NGE4NwotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvYXN5bmMtY2xpcGJvYXJkL2NsaXBi
b2FyZC1pdGVtLWdldC10eXBlLWJhc2ljLmh0bWwKQEAgLTAsMCArMSw2NSBAQAorPCFET0NUWVBF
IGh0bWw+IDwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgdXNlRmxleGlibGVWaWV3cG9ydD10cnVl
IGV4cGVyaW1lbnRhbDpBc3luY0NsaXBib2FyZEFQSUVuYWJsZWQ9dHJ1ZSBdIC0tPgorPGh0bWw+
CisgICAgPG1ldGEgY2hhcnNldD0idXRmOCI+CisgICAgPGhlYWQ+CisgICAgICAgIDxtZXRhIG5h
bWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9
MSwgdXNlci1zY2FsYWJsZT1ubyI+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNv
dXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4vcmVz
b3VyY2VzL2FzeW5jLWNsaXBib2FyZC1oZWxwZXJzLmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHN0
eWxlPgorICAgICAgICAgICAgYnV0dG9uIHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTsK
KyAgICAgICAgICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAgICAgICAgICAgfQorICAgICAgICA8
L3N0eWxlPgorICAgIDwvaGVhZD4KKyAgICA8c2NyaXB0PgorICAgICAgICBqc1Rlc3RJc0FzeW5j
ID0gdHJ1ZTsKKworICAgICAgICBhc3luYyBmdW5jdGlvbiBydW5UZXN0KCkgeworICAgICAgICAg
ICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IENsaXBib2FyZEl0ZW0uZ2V0
VHlwZSgpIGNhbiBiZSB1c2VkIHRvIGdldCBjbGlwYm9hcmQgZGF0YSB3cml0dGVuIHVzaW5nIERh
dGFUcmFuc2ZlciBBUElzLiBUbyB0ZXN0IG1hbnVhbGx5LCBjbGljayB0aGUgdG9wIGJ1dHRvbiB0
byB3cml0ZSB0byB0aGUgcGFzdGVib2FyZCwgYW5kIHRoZW4gY2xpY2sgdGhlIGJvdHRvbSBidXR0
b24gdG8gcGFzdGUuIik7CisKKyAgICAgICAgICAgIGNvbnN0IGNvcHlCdXR0b24gPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgiY29weSIpOworICAgICAgICAgICAgY29uc3QgcGFzdGVCdXR0b24g
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGFzdGUiKTsKKworICAgICAgICAgICAgY29weUJ1
dHRvbi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsICgpID0+IHsKKyAgICAgICAgICAgICAgICB3
cml0ZVRvQ2xpcGJvYXJkVXNpbmdEYXRhVHJhbnNmZXIoeworICAgICAgICAgICAgICAgICAgICAi
dGV4dC9odG1sIiA6ICI8YSBocmVmPSdodHRwczovL3d3dy5hcHBsZS5jb20vJz5BcHBsZTwvYT4i
LAorICAgICAgICAgICAgICAgICAgICAidGV4dC91cmktbGlzdCIgOiAiaHR0cHM6Ly93d3cuYXBw
bGUuY29tLyIsCisgICAgICAgICAgICAgICAgICAgICJ0ZXh0L3BsYWluIiA6ICJBcHBsZSwgSW5j
LiIKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0sIHsgb25jZTogdHJ1ZSB9KTsK
KworICAgICAgICAgICAgcGFzdGVCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBhc3lu
YyAoKSA9PiB7CisgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgaXRl
bXMgPSBhd2FpdCBuYXZpZ2F0b3IuY2xpcGJvYXJkLnJlYWQoKTsKKyAgICAgICAgICAgICAgICAg
ICAgc2hvdWxkQmUoIml0ZW1zLmxlbmd0aCIsICIxIik7CisgICAgICAgICAgICAgICAgICAgIGl0
ZW0gPSBpdGVtc1swXTsKKyAgICAgICAgICAgICAgICAgICAgc2hvdWxkQmUoIml0ZW0udHlwZXMu
bGVuZ3RoIiwgIjMiKTsKKyAgICAgICAgICAgICAgICAgICAgdGV4dCA9IGF3YWl0IGxvYWRUZXh0
KGF3YWl0IGl0ZW0uZ2V0VHlwZSgidGV4dC9wbGFpbiIpKTsKKyAgICAgICAgICAgICAgICAgICAg
dXJsID0gYXdhaXQgbG9hZFRleHQoYXdhaXQgaXRlbS5nZXRUeXBlKCJ0ZXh0L3VyaS1saXN0Iikp
OworICAgICAgICAgICAgICAgICAgICBkb2MgPSBhd2FpdCBsb2FkRG9jdW1lbnQoYXdhaXQgaXRl
bS5nZXRUeXBlKCJ0ZXh0L2h0bWwiKSk7CisgICAgICAgICAgICAgICAgICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygidGV4dCIsICJBcHBsZSwgSW5jLiIpOworICAgICAgICAgICAgICAgICAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoInVybCIsICJodHRwczovL3d3dy5hcHBsZS5jb20vIik7Cisg
ICAgICAgICAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZG9jLnF1ZXJ5U2VsZWN0
b3IoJ2EnKS5ocmVmIiwgImh0dHBzOi8vd3d3LmFwcGxlLmNvbS8iKTsKKyAgICAgICAgICAgICAg
ICB9IGNhdGNoIChleGNlcHRpb24pIHsKKyAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZChg
Q2F1Z2h0IHVuZXhwZWN0ZWQgZXhjZXB0aW9uOiAke2V4Y2VwdGlvbi5uYW1lfWApOworICAgICAg
ICAgICAgICAgIH0gZmluYWxseSB7CisgICAgICAgICAgICAgICAgICAgIFtjb3B5QnV0dG9uLCBw
YXN0ZUJ1dHRvbl0ubWFwKGJ1dHRvbiA9PiBidXR0b24ucmVtb3ZlKCkpOworICAgICAgICAgICAg
ICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9
LCB7IG9uY2U6IHRydWUgfSk7CisKKyAgICAgICAgICAgIGF3YWl0IFVJSGVscGVyLmFjdGl2YXRl
RWxlbWVudChjb3B5QnV0dG9uKTsKKyAgICAgICAgICAgIGF3YWl0IFVJSGVscGVyLmFjdGl2YXRl
RWxlbWVudChwYXN0ZUJ1dHRvbik7CisgICAgICAgIH0KKworICAgICAgICBhZGRFdmVudExpc3Rl
bmVyKCJsb2FkIiwgcnVuVGVzdCk7CisgICAgPC9zY3JpcHQ+CisgICAgPGJvZHk+CisgICAgICAg
IDxidXR0b24gaWQ9ImNvcHkiPkNsaWNrIGhlcmUgdG8gY29weTwvYnV0dG9uPgorICAgICAgICA8
YnV0dG9uIGlkPSJwYXN0ZSI+Q2xpY2sgaGVyZSB0byBwYXN0ZTwvYnV0dG9uPgorICAgICAgICA8
ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+CisgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRp
bmcvYXN5bmMtY2xpcGJvYXJkL3Jlc291cmNlcy9hc3luYy1jbGlwYm9hcmQtaGVscGVycy5qcyBi
L0xheW91dFRlc3RzL2VkaXRpbmcvYXN5bmMtY2xpcGJvYXJkL3Jlc291cmNlcy9hc3luYy1jbGlw
Ym9hcmQtaGVscGVycy5qcwppbmRleCA5ZjQ4YjYwOTY5NmRiOGI4MjBkNmMxZmRjOGJhMWE3MTBh
YmVmN2E3Li41NzY0N2M5NTFmNDc1ODk1ZDNhNDlhNjYyMDRmZjYxMzBhMGY1MGI4IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9lZGl0aW5nL2FzeW5jLWNsaXBib2FyZC9yZXNvdXJjZXMvYXN5bmMt
Y2xpcGJvYXJkLWhlbHBlcnMuanMKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9hc3luYy1jbGlw
Ym9hcmQvcmVzb3VyY2VzL2FzeW5jLWNsaXBib2FyZC1oZWxwZXJzLmpzCkBAIC0zMCw2ICszMCwx
MiBAQCBmdW5jdGlvbiBsb2FkSW1hZ2UoYmxvYikgewogICAgIH0pOwogfQogCitmdW5jdGlvbiBs
b2FkRG9jdW1lbnQoYmxvYikgeworICAgIHJldHVybiBuZXcgUHJvbWlzZShhc3luYyByZXNvbHZl
ID0+IHsKKyAgICAgICAgcmVzb2x2ZShuZXcgRE9NUGFyc2VyKCkucGFyc2VGcm9tU3RyaW5nKGF3
YWl0IGxvYWRUZXh0KGJsb2IpLCAidGV4dC9odG1sIikpOworICAgIH0pOworfQorCiBmdW5jdGlv
biB3cml0ZVRvQ2xpcGJvYXJkVXNpbmdEYXRhVHJhbnNmZXIoZGF0YSkgewogICAgIGNvbnN0IGlu
cHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTsKICAgICBkb2N1bWVudC5ib2R5
LmFwcGVuZENoaWxkKGlucHV0KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dp
bi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3Rh
dGlvbnMKaW5kZXggYzkyNDFkZTZiZWFlMTlmNmI0OWMwZjc3NDVjOWEwZmY4N2Y0MWI0MS4uOTdh
Njg4Yjk1YmRmZWUyNDY4ZjNjMzc4NGNmZDQ3OGM2M2ExZGYyZSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTExOTEsNiArMTE5MSw4IEBAIGh0dHAvdGVz
dHMvc2VjdXJpdHkvY2xpcGJvYXJkL2NvcHktcGFzdGUtaHRtbC1hY3Jvc3Mtb3JpZ2luLXN0cmlw
cy1tc28tbGlzdC5odG1sCiAKIHdlYmtpdC5vcmcvYi8yMDMxMDAgZWRpdGluZy9hc3luYy1jbGlw
Ym9hcmQvY2xpcGJvYXJkLXJlYWQtYmFzaWMuaHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzIw
MzEwMCBlZGl0aW5nL2FzeW5jLWNsaXBib2FyZC9jbGlwYm9hcmQtY2hhbmdlLWRhdGEtd2hpbGUt
cmVhZGluZy5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMjAzMTAwIGVkaXRpbmcvYXN5bmMt
Y2xpcGJvYXJkL2NsaXBib2FyZC1jaGFuZ2UtZGF0YS13aGlsZS1nZXR0aW5nLXR5cGUuaHRtbCBb
IFNraXAgXQord2Via2l0Lm9yZy9iLzIwMzEwMCBlZGl0aW5nL2FzeW5jLWNsaXBib2FyZC9jbGlw
Ym9hcmQtaXRlbS1nZXQtdHlwZS1iYXNpYy5odG1sIFsgU2tpcCBdCiAKIHdlYmtpdC5vcmcvYi8x
NDA3ODMgWyBSZWxlYXNlIF0gZWRpdGluZy9wYXN0ZWJvYXJkL2NvcHktc3RhbmRhbG9uZS1pbWFn
ZS5odG1sIFsgRmFpbHVyZSBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xNDA3ODMg
WyBEZWJ1ZyBdIGVkaXRpbmcvcGFzdGVib2FyZC9jb3B5LXN0YW5kYWxvbmUtaW1hZ2UuaHRtbCBb
IFNraXAgXSAjIERlYnVnIEFzc2VydGlvbgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcmVzb3Vy
Y2VzL3VpLWhlbHBlci5qcyBiL0xheW91dFRlc3RzL3Jlc291cmNlcy91aS1oZWxwZXIuanMKaW5k
ZXggYzAxMDYxMmQwZDlmNzM1NjhmYmJkZTQ2Y2UxZTVmMDNmMTFiYTI4YS4uM2NjMDkzMTJhODUw
NzQxNzdjZjEwNTczZDg0NWQzMTkxZGJjNzg4MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcmVz
b3VyY2VzL3VpLWhlbHBlci5qcworKysgYi9MYXlvdXRUZXN0cy9yZXNvdXJjZXMvdWktaGVscGVy
LmpzCkBAIC0xMDM2LDQgKzEwMzYsOSBAQCB3aW5kb3cuVUlIZWxwZXIgPSBjbGFzcyBVSUhlbHBl
ciB7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CisKKyAgICBzdGF0
aWMgYXN5bmMgY29weVRleHQodGV4dCkgeworICAgICAgICBjb25zdCBjb3B5VGV4dFNjcmlwdCA9
IGB1aUNvbnRyb2xsZXIuY29weVRleHQoXGAke3RleHQucmVwbGFjZSgvYC9nLCAiXFxgIil9XGAp
KClgOworICAgICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB0ZXN0UnVubmVyLnJ1
blVJU2NyaXB0KGNvcHlUZXh0U2NyaXB0LCByZXNvbHZlKSk7CisgICAgfQogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>381381</attachid>
            <date>2019-10-19 17:58:27 -0700</date>
            <delta_ts>2019-10-21 11:07:42 -0700</delta_ts>
            <desc>Fix Win/GTK/WPE</desc>
            <filename>bug-203168-20191019175826.patch</filename>
            <type>text/plain</type>
            <size>48554</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxMzE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzU0MzZkNzQ4MmE0ZmQw
ZTg4Zjg2ZmU1ZDRjZGFlZjZjMmZhMGY2Ny4uYjhjMTU3YWM2NDI3ZDdmMGUxYzIyNWYwOWZmZWQ3
MzMzODc0YTUwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDE5LTEwLTE5ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtDbGlwYm9hcmQg
QVBJXSBJbXBsZW1lbnQgQ2xpcGJvYXJkSXRlbS5nZXRUeXBlKCkgZm9yIHBsYXRmb3JtIGNsaXBi
b2FyZCBpdGVtcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjAzMTY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGhpcyBwYXRjaCBjb21wbGV0ZXMgc3VwcG9ydCBmb3IgQ2xpcGJvYXJkSXRlbS5nZXRUeXBl
KCkuCisKKyAgICAgICAgVGVzdHM6ICBlZGl0aW5nL2FzeW5jLWNsaXBib2FyZC9jbGlwYm9hcmQt
Y2hhbmdlLWRhdGEtd2hpbGUtZ2V0dGluZy10eXBlLmh0bWwKKyAgICAgICAgICAgICAgICBlZGl0
aW5nL2FzeW5jLWNsaXBib2FyZC9jbGlwYm9hcmQtaXRlbS1nZXQtdHlwZS1iYXNpYy5odG1sCisg
ICAgICAgICAgICAgICAgQ2xpcGJvYXJkVGVzdHMuUmVhZE11bHRpcGxlSXRlbXMKKworICAgICAg
ICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDbGlwYm9hcmQ6OmdldFR5cGUpOgorCisgICAgICAgIEltcGxlbWVudCBnZXRUeXBlKCku
IElmIHRoZSBnaXZlbiBjbGlwYm9hcmQgaXRlbSBpcyBiZWluZyB0cmFja2VkIGFzIG9uZSBvZiB0
aGUgYWN0aXZlIGNsaXBib2FyZCBpdGVtcywgdGhlbgorICAgICAgICBhbGxvdyBpdCB0byByZWFk
IGRhdGEgZnJvbSB0aGUgcGxhdGZvcm0gcGFzdGVib2FyZC4gV2UgdXNlIGV4aXN0aW5nIHBhc3Rl
Ym9hcmQgcmVhZGluZyBtZXRob2RzIGFuZCBjbGFzc2VzCisgICAgICAgIChQYXN0ZWJvYXJkUGxh
aW5UZXh0IGFuZCBXZWJDb250ZW50TWFya3VwUmVhZGVyKSB0byBhc2sgdGhlIHBsYXRmb3JtIHBh
c3RlYm9hcmQgZm9yIHRleHQgYW5kIG1hcmt1cCBkYXRhLAorICAgICAgICByZXNwZWN0aXZlbHks
IGFuZCBnbyB0aHJvdWdoIHJlYWRVUkwoKSBmb3IgInRleHQvdXJpLWxpc3QiLgorCisgICAgICAg
IEJlZm9yZSBleHBvc2luZyBhbnkgZGF0YSB0byB0aGUgcGFnZSwgd2UgYWRkaXRpb25hbGx5IGNo
ZWNrIHRoYXQgdGhlIGNoYW5nZSBjb3VudCBvZiB0aGUgcGFzdGVib2FyZCBpcyBzdGlsbAorICAg
ICAgICB3aGF0IHdlIHN0YXJ0ZWQgd2l0aCB3aGVuIHNldHRpbmcgdXAgdGhlIGN1cnJlbnQgc2Vz
c2lvbi4gSWYgdGhpcyBpcyBub3QgdGhlIGNhc2UsIHdlIHJlamVjdCB0aGUgcHJvbWlzZSBhbmQK
KyAgICAgICAgaW1tZWRpYXRlbHkgY2xlYXIgb3V0IHRoZSBzZXNzaW9uLgorCisgICAgICAgIChX
ZWJDb3JlOjpDbGlwYm9hcmQ6OmFjdGl2ZVBhc3RlYm9hcmQpOgorICAgICAgICAqIE1vZHVsZXMv
YXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZC5oOgorICAgICAgICAqIGRvbS9EYXRhVHJhbnNmZXIu
aDoKKworICAgICAgICBEcml2ZS1ieSB0d2VhazogbWFrZSB0aGUgV2ViQ29udGVudFJlYWRpbmdQ
b2xpY3kgZW51bSBjbGFzcyBuYXJyb3dlci4KKworICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9h
cmQuaDoKKworICAgICAgICBBZGQgYW4gZW51bSBmbGFnIGZvciBhbGxvd2luZyBvciBpZ25vcmlu
ZyB0aGUgcGxhdGZvcm0gVVJMIHR5cGUgd2hlbiByZWFkaW5nIHBsYWluIHRleHQgZnJvbSB0aGUg
cGxhdGZvcm0KKyAgICAgICAgcGFzdGVib2FyZC4gV2UgdXNlIHRoaXMgaW4gQ2xpcGJvYXJkOjpn
ZXRUeXBlKCkgdG8gaWdub3JlIFVSTHMgb24gdGhlIHBsYXRmb3JtIHBhc3RlYm9hcmQgd2hlbiBw
bGFpbiB0ZXh0LCBzaW5jZQorICAgICAgICB0aGUgcGxhaW4gdGV4dCByZWFkZXIgd291bGQgb3Ro
ZXJ3aXNlIHByZWZlciBVUkxzIG92ZXIgcGxhaW4gdGV4dCBieSBkZWZhdWx0LCBhbmQgcmVhZCB0
aGUgVVJMIHR5cGUgaW5zdGVhZCBvZgorICAgICAgICB0aGUgcGxhaW4gdGV4dCB0eXBlLgorCisg
ICAgICAgICogcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2d0ay9QYXN0ZWJvYXJkR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJl
YWQpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tOgorICAgICAgICAo
V2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZCk6CisgICAgICAgICogcGxhdGZvcm0vbGlid3BlL1Bh
c3RlYm9hcmRMaWJXUEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZCk6
CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW06CisgICAgICAgIChXZWJD
b3JlOjpQYXN0ZWJvYXJkOjpyZWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vUGFzdGVib2Fy
ZFdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFkKToKKwogMjAxOS0x
MC0xOCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBb
Q2xpcGJvYXJkIEFQSV0gUmVmYWN0b3IgUGFzdGVib2FyZDo6cmVhZCgpIHRvIHRha2UgYW4gb3B0
aW9uYWwgaXRlbSBpbmRleApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3lu
Yy1jbGlwYm9hcmQvQ2xpcGJvYXJkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMt
Y2xpcGJvYXJkL0NsaXBib2FyZC5jcHAKaW5kZXggYWNjNTgxNDA2NmNkMmEyZThlMGM1ZDU1NDA3
YmZhNTg0ZWQyY2MyNy4uOWI5NDllNWM3YjljZmEyZTFiZmE2MjYwMmJlNDZhZDY3YjJkNDFiNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJv
YXJkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlw
Ym9hcmQuY3BwCkBAIC0zNCw2ICszNCw4IEBACiAjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJy
ZWQuaCIKICNpbmNsdWRlICJOYXZpZ2F0b3IuaCIKICNpbmNsdWRlICJQYXN0ZWJvYXJkLmgiCisj
aW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCisjaW5jbHVkZSAiV2ViQ29udGVudFJlYWRlci5oIgog
I2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
QEAgLTEyNiw5ICsxMjgsNjUgQEAgdm9pZCBDbGlwYm9hcmQ6OnJlYWQoUmVmPERlZmVycmVkUHJv
bWlzZT4mJiBwcm9taXNlKQogCiB2b2lkIENsaXBib2FyZDo6Z2V0VHlwZShDbGlwYm9hcmRJdGVt
JiBpdGVtLCBjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlz
ZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oaXRlbSk7Ci0gICAgVU5VU0VEX1BBUkFNKHR5cGUpOwot
ICAgIHByb21pc2UtPnJlamVjdChOb3RTdXBwb3J0ZWRFcnJvcik7CisgICAgaWYgKCFtX2FjdGl2
ZVNlc3Npb24pIHsKKyAgICAgICAgcHJvbWlzZS0+cmVqZWN0KE5vdEFsbG93ZWRFcnJvcik7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGZyYW1lID0gbWFrZVJlZlB0cih0aGlz
LT5mcmFtZSgpKTsKKyAgICBpZiAoIWZyYW1lKSB7CisgICAgICAgIG1fYWN0aXZlU2Vzc2lvbiA9
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcHJvbWlzZS0+cmVqZWN0KE5vdEFsbG93ZWRFcnJvcik7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGl0ZW1JbmRleCA9IG1fYWN0aXZl
U2Vzc2lvbi0+aXRlbXMuZmluZE1hdGNoaW5nKFsmXSAoYXV0byYgYWN0aXZlSXRlbSkgeworICAg
ICAgICByZXR1cm4gYWN0aXZlSXRlbS5wdHIoKSA9PSAmaXRlbTsKKyAgICB9KTsKKworICAgIGlm
IChpdGVtSW5kZXggPT0gbm90Rm91bmQpIHsKKyAgICAgICAgbV9hY3RpdmVTZXNzaW9uID0gV1RG
OjpudWxsb3B0OworICAgICAgICBwcm9taXNlLT5yZWplY3QoTm90QWxsb3dlZEVycm9yKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghaXRlbS50eXBlcygpLmNvbnRhaW5zKHR5
cGUpKSB7CisgICAgICAgIHByb21pc2UtPnJlamVjdChOb3RBbGxvd2VkRXJyb3IpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgU3RyaW5nIHJlc3VsdEFzU3RyaW5nOworCisgICAgaWYg
KHR5cGUgPT0gInRleHQvdXJpLWxpc3QiX3MpIHsKKyAgICAgICAgU3RyaW5nIHRpdGxlOworICAg
ICAgICByZXN1bHRBc1N0cmluZyA9IGFjdGl2ZVBhc3RlYm9hcmQoKS5yZWFkVVJMKGl0ZW1JbmRl
eCwgdGl0bGUpLnN0cmluZygpOworICAgIH0KKworICAgIGlmICh0eXBlID09ICJ0ZXh0L3BsYWlu
Il9zKSB7CisgICAgICAgIFBhc3RlYm9hcmRQbGFpblRleHQgcGxhaW5UZXh0UmVhZGVyOworICAg
ICAgICBhY3RpdmVQYXN0ZWJvYXJkKCkucmVhZChwbGFpblRleHRSZWFkZXIsIFBsYWluVGV4dFVS
TFJlYWRpbmdQb2xpY3k6Oklnbm9yZVVSTCwgaXRlbUluZGV4KTsKKyAgICAgICAgcmVzdWx0QXNT
dHJpbmcgPSBXVEZNb3ZlKHBsYWluVGV4dFJlYWRlci50ZXh0KTsKKyAgICB9CisKKyAgICBpZiAo
dHlwZSA9PSAidGV4dC9odG1sIl9zKSB7CisgICAgICAgIFdlYkNvbnRlbnRNYXJrdXBSZWFkZXIg
bWFya3VwUmVhZGVyIHsgKmZyYW1lIH07CisgICAgICAgIGFjdGl2ZVBhc3RlYm9hcmQoKS5yZWFk
KG1hcmt1cFJlYWRlciwgV2ViQ29udGVudFJlYWRpbmdQb2xpY3k6Ok9ubHlSaWNoVGV4dFR5cGVz
LCBpdGVtSW5kZXgpOworICAgICAgICByZXN1bHRBc1N0cmluZyA9IFdURk1vdmUobWFya3VwUmVh
ZGVyLm1hcmt1cCk7CisgICAgfQorCisgICAgLy8gRklYTUU6IFN1cHBvcnQgcmVhZGluZyAiaW1h
Z2UvcG5nIiBhcyB3ZWxsIGFzIGN1c3RvbSBkYXRhLgorICAgIC8vIEZJWE1FOiBJbnN0ZWFkIG9m
IGNoZWNraW5nIGNoYW5nZUNvdW50IGhlcmUsIHdlIHNob3VsZCBzZW5kIHRoZSBjaGFuZ2VDb3Vu
dCBvdmVyIHRvIHRoZSBVSSBwcm9jZXNzIHRvIGJlIHZldHRlZAorICAgIC8vIHdoZW4gYXR0ZW1w
dGluZyB0byByZWFkIHRoZSBkYXRhIGluIHRoZSBmaXJzdCBwbGFjZS4KKyAgICBpZiAobV9hY3Rp
dmVTZXNzaW9uLT5jaGFuZ2VDb3VudCAhPSBhY3RpdmVQYXN0ZWJvYXJkKCkuY2hhbmdlQ291bnQo
KSkgeworICAgICAgICBtX2FjdGl2ZVNlc3Npb24gPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIHBy
b21pc2UtPnJlamVjdChOb3RBbGxvd2VkRXJyb3IpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgaWYgKCFyZXN1bHRBc1N0cmluZy5pc051bGwoKSkKKyAgICAgICAgcHJvbWlzZS0+cmVz
b2x2ZTxJRExJbnRlcmZhY2U8QmxvYj4+KENsaXBib2FyZEl0ZW06OmJsb2JGcm9tU3RyaW5nKHJl
c3VsdEFzU3RyaW5nLCB0eXBlKSk7CisgICAgZWxzZQorICAgICAgICBwcm9taXNlLT5yZWplY3Qo
Tm90QWxsb3dlZEVycm9yKTsKIH0KIAogdm9pZCBDbGlwYm9hcmQ6OndyaXRlKGNvbnN0IFZlY3Rv
cjxSZWZQdHI8Q2xpcGJvYXJkSXRlbT4+JiBpdGVtcywgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBw
cm9taXNlKQpAQCAtMTQyLDQgKzIwMCwxMSBAQCBGcmFtZSogQ2xpcGJvYXJkOjpmcmFtZSgpIGNv
bnN0CiAgICAgcmV0dXJuIG1fbmF2aWdhdG9yID8gbV9uYXZpZ2F0b3ItPmZyYW1lKCkgOiBudWxs
cHRyOwogfQogCitQYXN0ZWJvYXJkJiBDbGlwYm9hcmQ6OmFjdGl2ZVBhc3RlYm9hcmQoKQorewor
ICAgIEFTU0VSVChtX2FjdGl2ZVNlc3Npb24pOworICAgIEFTU0VSVChtX2FjdGl2ZVNlc3Npb24t
PnBhc3RlYm9hcmQpOworICAgIHJldHVybiAqbV9hY3RpdmVTZXNzaW9uLT5wYXN0ZWJvYXJkOwor
fQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2Fy
ZC9DbGlwYm9hcmQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0Ns
aXBib2FyZC5oCmluZGV4IDIxNzMxNGJkMzZlOGVlNWZlNDAwZThhMjM0YTc4NjU5OTI2YWFlYjku
Ljg3YWU1N2FjODQwZTc3YTA3ZTdlOTFmNjAxMzEzMmEwMzU2MmMxNGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZC5oCkBAIC03Myw2
ICs3Myw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZWZFdmVudFRhcmdldCgpIGZpbmFsIHsgcmVm
KCk7IH0KICAgICB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBmaW5hbCB7IGRlcmVmKCk7IH0KIAor
ICAgIFBhc3RlYm9hcmQmIGFjdGl2ZVBhc3RlYm9hcmQoKTsKKwogICAgIE9wdGlvbmFsPFNlc3Np
b24+IG1fYWN0aXZlU2Vzc2lvbjsKICAgICBXZWFrUHRyPE5hdmlnYXRvcj4gbV9uYXZpZ2F0b3I7
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5oIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5oCmluZGV4IDY1MDc5M2NmODZiMWExZGZkNDE5
YjliMzMzNTk5M2FkOTU2ODA0ZjEuLmU1Y2ZhZjg1NmZiMjg4M2ZjMTU0ZGRjODhiMGQ3NzIzYmM5
ODhiMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmgKQEAgLTM5LDcgKzM5LDcgQEAgY2xh
c3MgRWxlbWVudDsKIGNsYXNzIEZpbGVMaXN0OwogY2xhc3MgRmlsZTsKIGNsYXNzIFBhc3RlYm9h
cmQ7Ci1lbnVtIGNsYXNzIFdlYkNvbnRlbnRSZWFkaW5nUG9saWN5OworZW51bSBjbGFzcyBXZWJD
b250ZW50UmVhZGluZ1BvbGljeSA6IGJvb2w7CiAKIGNsYXNzIERhdGFUcmFuc2ZlciA6IHB1Ymxp
YyBSZWZDb3VudGVkPERhdGFUcmFuc2Zlcj4gewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGFzdGVib2FyZC5oCmluZGV4IDMxNDEzMjVjYjJlMjQxMzhiYzQ2NDUxMmIwYTQyOWQ5MDNhYzkw
MjQuLjNiY2RkODIzNWMzZGExOTU3ZTEzZjI0OTRiYTlmZGM0Y2RlMWVjZWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKQEAgLTY1LDcgKzY1LDggQEAgY2xhc3MgUmFuZ2U7CiBj
bGFzcyBTZWxlY3Rpb25EYXRhOwogY2xhc3MgU2hhcmVkQnVmZmVyOwogCi1lbnVtIGNsYXNzIFdl
YkNvbnRlbnRSZWFkaW5nUG9saWN5IHsgQW55VHlwZSwgT25seVJpY2hUZXh0VHlwZXMgfTsKK2Vu
dW0gY2xhc3MgUGxhaW5UZXh0VVJMUmVhZGluZ1BvbGljeSA6IGJvb2wgeyBJZ25vcmVVUkwsIEFs
bG93VVJMIH07CitlbnVtIGNsYXNzIFdlYkNvbnRlbnRSZWFkaW5nUG9saWN5IDogYm9vbCB7IEFu
eVR5cGUsIE9ubHlSaWNoVGV4dFR5cGVzIH07CiBlbnVtIFNob3VsZFNlcmlhbGl6ZVNlbGVjdGVk
VGV4dEZvckRhdGFUcmFuc2ZlciB7IERlZmF1bHRTZWxlY3RlZFRleHRUeXBlLCBJbmNsdWRlSW1h
Z2VBbHRUZXh0Rm9yRGF0YVRyYW5zZmVyIH07CiAKIC8vIEZvciB3cml0aW5nIHRvIHRoZSBwYXN0
ZWJvYXJkLiBHZW5lcmFsbHkgc29ydGVkIHdpdGggdGhlIHJpY2hlc3QgZm9ybWF0cyBvbiB0b3Au
CkBAIC0xOTgsNyArMTk5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgV0VCQ09SRV9FWFBPUlQg
dm9pZCBjbGVhcigpOwogICAgIHZpcnR1YWwgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhcihjb25z
dCBTdHJpbmcmIHR5cGUpOwogCi0gICAgdmlydHVhbCBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlYWQo
UGFzdGVib2FyZFBsYWluVGV4dCYsIE9wdGlvbmFsPHNpemVfdD4gaXRlbUluZGV4ID0gV1RGOjpu
dWxsb3B0KTsKKyAgICB2aXJ0dWFsIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVhZChQYXN0ZWJvYXJk
UGxhaW5UZXh0JiwgUGxhaW5UZXh0VVJMUmVhZGluZ1BvbGljeSA9IFBsYWluVGV4dFVSTFJlYWRp
bmdQb2xpY3k6OkFsbG93VVJMLCBPcHRpb25hbDxzaXplX3Q+IGl0ZW1JbmRleCA9IFdURjo6bnVs
bG9wdCk7CiAgICAgdmlydHVhbCBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlYWQoUGFzdGVib2FyZFdl
YkNvbnRlbnRSZWFkZXImLCBXZWJDb250ZW50UmVhZGluZ1BvbGljeSA9IFdlYkNvbnRlbnRSZWFk
aW5nUG9saWN5OjpBbnlUeXBlLCBPcHRpb25hbDxzaXplX3Q+IGl0ZW1JbmRleCA9IFdURjo6bnVs
bG9wdCk7CiAgICAgdmlydHVhbCBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlYWQoUGFzdGVib2FyZEZp
bGVSZWFkZXImKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGlj
UGFzdGVib2FyZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5o
CmluZGV4IDBlNzY0ZWFjNDQ0YzY2MTJiODhiY2RhODM1N2ZhMTA1Y2NkMzlkMmIuLmE2ZDUwZDhh
YjdmYTQ3NzlkNTY4ZmE5YThmY2IyNGVhZjg3ZDQwMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TdGF0aWNQYXN0ZWJvYXJkLmgKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogICAgIHZv
aWQgY2xlYXIoKSBmaW5hbDsKICAgICB2b2lkIGNsZWFyKGNvbnN0IFN0cmluZyYgdHlwZSkgZmlu
YWw7CiAKLSAgICB2b2lkIHJlYWQoUGFzdGVib2FyZFBsYWluVGV4dCYsIE9wdGlvbmFsPHNpemVf
dD4gPSBXVEY6Om51bGxvcHQpIGZpbmFsIHsgfQorICAgIHZvaWQgcmVhZChQYXN0ZWJvYXJkUGxh
aW5UZXh0JiwgUGxhaW5UZXh0VVJMUmVhZGluZ1BvbGljeSA9IFBsYWluVGV4dFVSTFJlYWRpbmdQ
b2xpY3k6OkFsbG93VVJMLCBPcHRpb25hbDxzaXplX3Q+ID0gV1RGOjpudWxsb3B0KSBmaW5hbCB7
IH0KICAgICB2b2lkIHJlYWQoUGFzdGVib2FyZFdlYkNvbnRlbnRSZWFkZXImLCBXZWJDb250ZW50
UmVhZGluZ1BvbGljeSwgT3B0aW9uYWw8c2l6ZV90PiA9IFdURjo6bnVsbG9wdCkgZmluYWwgeyB9
CiAKICAgICB2b2lkIHdyaXRlKGNvbnN0IFBhc3RlYm9hcmRVUkwmKSBmaW5hbCB7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcAppbmRleCBlYzk3ZjEz
Y2I0M2JlODk5YmU5ZDFkZGExOWI4NzY0MGIwNjc0Y2FjLi4yMDY3ODIwNzVkZmNhNjJmOGY1OThl
MWJkNGFmNzUyNjVkZmZhNzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvUGFzdGVib2FyZEd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bh
c3RlYm9hcmRHdGsuY3BwCkBAIC0yMzIsNyArMjMyLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjpzZXRE
cmFnSW1hZ2UoRHJhZ0ltYWdlLCBjb25zdCBJbnRQb2ludCYpCiB9CiAjZW5kaWYKIAotdm9pZCBQ
YXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRQbGFpblRleHQmIHRleHQsIE9wdGlvbmFsPHNpemVf
dD4pCit2b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZFBsYWluVGV4dCYgdGV4dCwgUGxh
aW5UZXh0VVJMUmVhZGluZ1BvbGljeSwgT3B0aW9uYWw8c2l6ZV90PikKIHsKICAgICByZWFkRnJv
bUNsaXBib2FyZCgpOwogICAgIHRleHQudGV4dCA9IG1fc2VsZWN0aW9uRGF0YS0+dGV4dCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQppbmRleCBmNjI3
M2YwYWU3YjNhNmEyZjA5NTA4ZDE0MzA0ZmJiMGJhZGM5MWJmLi5lZDJmMGUzYTAyYmY1ODBmMjcy
MWM1OTk2NjI4MjdlY2UxYmZhM2NjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvUGFzdGVib2FyZElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
UGFzdGVib2FyZElPUy5tbQpAQCAtMTUwLDE3ICsxNTAsMjQgQEAgYm9vbCBQYXN0ZWJvYXJkOjpj
YW5TbWFydFJlcGxhY2UoKQogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIFBhc3RlYm9hcmQ6
OnJlYWQoUGFzdGVib2FyZFBsYWluVGV4dCYgdGV4dCwgT3B0aW9uYWw8c2l6ZV90PiBpdGVtSW5k
ZXgpCit2b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZFBsYWluVGV4dCYgdGV4dCwgUGxh
aW5UZXh0VVJMUmVhZGluZ1BvbGljeSBhbGxvd1VSTCwgT3B0aW9uYWw8c2l6ZV90PiBpdGVtSW5k
ZXgpCiB7CiAgICAgYXV0byBpdGVtSW5kZXhUb1F1ZXJ5ID0gaXRlbUluZGV4LnZhbHVlT3IoMCk7
CiAKICAgICBQYXN0ZWJvYXJkU3RyYXRlZ3kmIHN0cmF0ZWd5ID0gKnBsYXRmb3JtU3RyYXRlZ2ll
cygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKTsKLSAgICB0ZXh0LnRleHQgPSBzdHJhdGVneS5yZWFk
U3RyaW5nRnJvbVBhc3RlYm9hcmQoaXRlbUluZGV4VG9RdWVyeSwga1VUVHlwZVVSTCwgbV9wYXN0
ZWJvYXJkTmFtZSk7Ci0gICAgaWYgKCF0ZXh0LnRleHQuaXNFbXB0eSgpKSB7Ci0gICAgICAgIHRl
eHQuaXNVUkwgPSB0cnVlOwotICAgICAgICByZXR1cm47CisKKyAgICBpZiAoYWxsb3dVUkwgPT0g
UGxhaW5UZXh0VVJMUmVhZGluZ1BvbGljeTo6QWxsb3dVUkwpIHsKKyAgICAgICAgdGV4dC50ZXh0
ID0gc3RyYXRlZ3kucmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKGl0ZW1JbmRleFRvUXVlcnksIGtV
VFR5cGVVUkwsIG1fcGFzdGVib2FyZE5hbWUpOworICAgICAgICBpZiAoIXRleHQudGV4dC5pc0Vt
cHR5KCkpIHsKKyAgICAgICAgICAgIHRleHQuaXNVUkwgPSB0cnVlOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CiAgICAgfQogCisgICAgLy8gV2UgYXNrIGZvciB0aGUgInB1YmxpYy50
ZXh0IiByZXByZXNlbnRhdGlvbiBvbmx5IGFzIGEgbGVnYWN5IGZhbGxiYWNrLCBpbiBjYXNlIGFw
cHMgc3RpbGwgZGlyZWN0bHkgd3JpdGUKKyAgICAvLyBwbGFpbiB0ZXh0IGZvciB0aGlzIGFic3Ry
YWN0IFVUSS4gSW4gYWxtb3N0IGFsbCBjYXNlcywgdGhlIG1vcmUgY29ycmVjdCBjaG9pY2Ugd291
bGQgYmUgdG8gd3JpdGUgdG8KKyAgICAvLyBvbmUgb2YgdGhlIGNvbmNyZXRlICJwdWJsaWMucGxh
aW4tdGV4dCIgcmVwcmVzZW50YXRpb25zIChlLmcuIGtVVFR5cGVVVEY4KS4gSW4gdGhlIGZ1dHVy
ZSwgd2Ugc2hvdWxkCisgICAgLy8gY29uc2lkZXIgcmVtb3Zpbmcgc3VwcG9ydCBmb3IgcmVhZGlu
ZyBwbGFpbiB0ZXh0IGZyb20gInB1YmxpYy50ZXh0Ii4KICAgICB0ZXh0LnRleHQgPSBzdHJhdGVn
eS5yZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoaXRlbUluZGV4VG9RdWVyeSwga1VUVHlwZVBsYWlu
VGV4dCwgbV9wYXN0ZWJvYXJkTmFtZSk7CiAgICAgaWYgKHRleHQudGV4dC5pc0VtcHR5KCkpCiAg
ICAgICAgIHRleHQudGV4dCA9IHN0cmF0ZWd5LnJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChpdGVt
SW5kZXhUb1F1ZXJ5LCBrVVRUeXBlVGV4dCwgbV9wYXN0ZWJvYXJkTmFtZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9saWJ3cGUvUGFzdGVib2FyZExpYldQRS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9saWJ3cGUvUGFzdGVib2FyZExpYldQRS5jcHAKaW5kZXgg
N2Q3ODAwOTYyZDI1NmZkOTY4ODZkOTEwYzliMTY4YTZmN2UwZDYyNi4uYjYzMGRmYjdkNmU1YWEw
ZDNmZjc1MzljZDhkMGI5MmU1N2UxMmE1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbGlid3BlL1Bhc3RlYm9hcmRMaWJXUEUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJkTGliV1BFLmNwcApAQCAtOTUsNyArOTUsNyBAQCB2b2lk
IFBhc3RlYm9hcmQ6OmNsZWFyKGNvbnN0IFN0cmluZyYpCiB7CiB9CiAKLXZvaWQgUGFzdGVib2Fy
ZDo6cmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0JiB0ZXh0LCBPcHRpb25hbDxzaXplX3Q+KQordm9p
ZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRQbGFpblRleHQmIHRleHQsIFBsYWluVGV4dFVS
TFJlYWRpbmdQb2xpY3ksIE9wdGlvbmFsPHNpemVfdD4pCiB7CiAgICAgdGV4dC50ZXh0ID0gcGxh
dGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5yZWFkU3RyaW5nRnJvbVBh
c3RlYm9hcmQoMCwgInRleHQvcGxhaW47Y2hhcnNldD11dGYtOCIsIG5hbWUoKSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCmluZGV4IGEzZTRiMjli
NjI1OGY3ZDlkYWE5NTI2ODU1NThjY2Q0Y2E0MzkwNmQuLjg4ZjQ0YjYyNjNmNjAxMzk2OTRhNjNm
YjA5Nzg1MjllOGMyNzllNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9QYXN0ZWJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0
ZWJvYXJkTWFjLm1tCkBAIC0zMTgsNyArMzE4LDcgQEAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IHJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRleChjb25zdCBTdHJpbmcmIHR5cGUsIE8K
ICAgICByZXR1cm4gc3RyYXRlZ3kuYnVmZmVyRm9yVHlwZSh0eXBlLCBwYXN0ZWJvYXJkTmFtZSk7
CiB9CiAKLXZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0JiB0ZXh0LCBP
cHRpb25hbDxzaXplX3Q+IGl0ZW1JbmRleCkKK3ZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJv
YXJkUGxhaW5UZXh0JiB0ZXh0LCBQbGFpblRleHRVUkxSZWFkaW5nUG9saWN5IGFsbG93VVJMLCBP
cHRpb25hbDxzaXplX3Q+IGl0ZW1JbmRleCkKIHsKICAgICBhdXRvJiBzdHJhdGVneSA9ICpwbGF0
Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCk7CiAKQEAgLTM5NSw4ICszOTUs
MTAgQEAgdm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRQbGFpblRleHQmIHRleHQsIE9w
dGlvbmFsPHNpemVfdD4gaXRlbUluZGV4KQogICAgIH0KIAogICAgIC8vIEZJWE1FOiBUaGUgY29k
ZSBhYm92ZSBsb29rcyBhdCB0aGUgdHlwZXMgdmVjdG9yIGZpcnN0LCBidXQgdGhpcyBqdXN0IGdl
dHMgdGhlIHN0cmluZyB3aXRob3V0IGNoZWNraW5nLiBXaHkgdGhlIGRpZmZlcmVuY2U/Ci0gICAg
dGV4dC50ZXh0ID0gcmVhZFN0cmluZ0F0UHJlZmVycmVkSXRlbUluZGV4KGxlZ2FjeVVSTFBhc3Rl
Ym9hcmRUeXBlKCksIGl0ZW1JbmRleCwgc3RyYXRlZ3ksIG1fcGFzdGVib2FyZE5hbWUpOwotICAg
IHRleHQuaXNVUkwgPSAhdGV4dC50ZXh0LmlzTnVsbCgpOworICAgIGlmIChhbGxvd1VSTCA9PSBQ
bGFpblRleHRVUkxSZWFkaW5nUG9saWN5OjpBbGxvd1VSTCkgeworICAgICAgICB0ZXh0LnRleHQg
PSByZWFkU3RyaW5nQXRQcmVmZXJyZWRJdGVtSW5kZXgobGVnYWN5VVJMUGFzdGVib2FyZFR5cGUo
KSwgaXRlbUluZGV4LCBzdHJhdGVneSwgbV9wYXN0ZWJvYXJkTmFtZSk7CisgICAgICAgIHRleHQu
aXNVUkwgPSAhdGV4dC50ZXh0LmlzTnVsbCgpOworICAgIH0KIH0KIAogdm9pZCBQYXN0ZWJvYXJk
OjpyZWFkKFBhc3RlYm9hcmRXZWJDb250ZW50UmVhZGVyJiByZWFkZXIsIFdlYkNvbnRlbnRSZWFk
aW5nUG9saWN5IHBvbGljeSwgT3B0aW9uYWw8c2l6ZV90PiBpdGVtSW5kZXgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKaW5kZXggNDVhMzdjYWM4M2Ni
MjVhZTNmMWI5NGRjMTFjMTBmMGUyMjYwMzM0Ni4uMjhkODczYzQ2MTJkYmRjZTQxNzljM2EzOGVk
MGRjMGE1MGI4ODc4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bh
c3RlYm9hcmRXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJv
YXJkV2luLmNwcApAQCAtNzg5LDcgKzc4OSw3IEBAIGJvb2wgUGFzdGVib2FyZDo6Y2FuU21hcnRS
ZXBsYWNlKCkKICAgICByZXR1cm4gOjpJc0NsaXBib2FyZEZvcm1hdEF2YWlsYWJsZShXZWJTbWFy
dFBhc3RlRm9ybWF0KTsKIH0KIAotdm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRQbGFp
blRleHQmIHRleHQsIE9wdGlvbmFsPHNpemVfdD4pCit2b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFz
dGVib2FyZFBsYWluVGV4dCYgdGV4dCwgUGxhaW5UZXh0VVJMUmVhZGluZ1BvbGljeSwgT3B0aW9u
YWw8c2l6ZV90PikKIHsKICAgICBpZiAoOjpJc0NsaXBib2FyZEZvcm1hdEF2YWlsYWJsZShDRl9V
TklDT0RFVEVYVCkgJiYgOjpPcGVuQ2xpcGJvYXJkKG1fb3duZXIpKSB7CiAgICAgICAgIGlmIChI
QU5ETEUgY2JEYXRhID0gOjpHZXRDbGlwYm9hcmREYXRhKENGX1VOSUNPREVURVhUKSkgewpkaWZm
IC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDA4NWRiOGI2
NzA4OGY2YmZiNDQ5OTAxNWZkMzI4N2Q5ZjQ5MzAwN2EuLjJmMTE2ZDRmZmVjNDZiYjgwZTM3MTEy
YzIyYTQ1Nzg2MTQ2NjJhODkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29s
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NSBAQAorMjAxOS0xMC0xOSAgV2Vuc29uIEhzaWVoICA8
d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBbQ2xpcGJvYXJkIEFQSV0gSW1wbGVt
ZW50IENsaXBib2FyZEl0ZW0uZ2V0VHlwZSgpIGZvciBwbGF0Zm9ybSBjbGlwYm9hcmQgaXRlbXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMzE2OAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBzdXBw
b3J0IGZvciB0aGUgbmV3IGxheW91dCB0ZXN0cywgYXMgd2VsbCBhcyBhIG5ldyBBUEkgdGVzdC4K
KworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MuaDoK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tOgor
ICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXJJT1M6OmNvcHlUZXh0KToKKworICAgICAg
ICBJbXBsZW1lbnQgVUlTY3JpcHRDb250cm9sbGVyLmNvcHlUZXh0IGluIFdlYktpdDEuIFRoaXMg
aXMgdXNlZCBpbiBvbmUgb2YgdGhlIG5ldyBsYXlvdXQgdGVzdHMsIHdoaWNoIHBhc3NlcyBpbgor
ICAgICAgICBXZWJLaXQxIG9uIG1hY09TIGFuZCBpT1MuCisKKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS9tYWMvRHVtcFJlbmRlclRyZWVQYXN0ZWJvYXJkLm1tOgorICAgICAgICAoLVtMb2NhbFBh
c3RlYm9hcmQgZGVjbGFyZVR5cGVzOm93bmVyOl0pOgorICAgICAgICAoLVtMb2NhbFBhc3RlYm9h
cmQgYWRkVHlwZXM6b3duZXI6XSk6CisgICAgICAgICgtW0xvY2FsUGFzdGVib2FyZCBfYWRkVHlw
ZXNXaXRob3V0VXBkYXRpbmdDaGFuZ2VDb3VudDpvd25lcjpdKToKKworICAgICAgICBBZGp1c3Qg
bG9naWMgd2hlbiBkZWNsYXJpbmcgdHlwZXMgb24gdGhlIHBsYXRmb3JtIHBhc3RlYm9hcmQsIHN1
Y2ggdGhhdCBpdCBiZWhhdmVzIG1vcmUgbGlrZSB0aGUgcGxhdGZvcm07IHdoZW4KKyAgICAgICAg
ZGVjbGFyaW5nIHR5cGVzLCBldmVuIGlmIHRoZSBvd25lciBkb2Vzbid0IGNoYW5nZSwgdGhlIGNo
YW5nZSBjb3VudCBzaG91bGQgc3RpbGwgZ2V0IGJ1bXBlZCB1cCBieSAxLgorCisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvbWFjL1VJU2NyaXB0Q29udHJvbGxlck1hYy5oOgorICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL21hYy9VSVNjcmlwdENvbnRyb2xsZXJNYWMubW06CisgICAgICAgIChXVFI6
OlVJU2NyaXB0Q29udHJvbGxlck1hYzo6Y29weVRleHQpOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ2xpcGJvYXJkVGVzdHMubW06IEFkZGVkLgor
ICAgICAgICAoLVtUZXN0V0tXZWJWaWV3IHJlYWRDbGlwYm9hcmRdKToKKyAgICAgICAgKGNyZWF0
ZVdlYlZpZXdGb3JDbGlwYm9hcmRUZXN0cyk6CisgICAgICAgICh3cml0ZU11bHRpcGxlT2JqZWN0
c1RvUGxhdGZvcm1QYXN0ZWJvYXJkKToKKworICAgICAgICBBZGQgYSBuZXcgQVBJIHRlc3QgdG8g
dmVyaWZ5IHRoYXQgY2xpcGJvYXJkIGl0ZW1zIGNvbnRhaW4gdGhlIHJpZ2h0IGRhdGEgd2hlbiB3
cml0aW5nIG11bHRpcGxlIGl0ZW1zIChlYWNoIHdpdGgKKyAgICAgICAgZGlmZmVyZW50IHNldHMg
b2YgdHlwZXMpIHRvIHRoZSBwbGF0Zm9ybSBwYXN0ZWJvYXJkIHVzaW5nIG5hdGl2ZSBBUElzLgor
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9jbGlwYm9hcmQuaHRt
bDogQWRkZWQuCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9tYWMvV2ViS2l0VGVzdFJ1bm5l
clBhc3RlYm9hcmQubW06CisgICAgICAgICgtW0xvY2FsUGFzdGVib2FyZCBkZWNsYXJlVHlwZXM6
b3duZXI6XSk6CisgICAgICAgICgtW0xvY2FsUGFzdGVib2FyZCBhZGRUeXBlczpvd25lcjpdKToK
KyAgICAgICAgKC1bTG9jYWxQYXN0ZWJvYXJkIF9hZGRUeXBlc1dpdGhvdXRVcGRhdGluZ0NoYW5n
ZUNvdW50Om93bmVyOl0pOgorCiAyMDE5LTEwLTE4ICBKaWV3ZW4gVGFuICA8amlld2VuX3RhbkBh
cHBsZS5jb20+CiAKICAgICAgICAgW1dlYkF1dGhuXSBXYXJuIHVzZXJzIHdoZW4gbm8gY3JlZGVu
dGlhbHMgYXJlIGZvdW5kCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9pb3MvVUlT
Y3JpcHRDb250cm9sbGVySU9TLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9pb3MvVUlTY3JpcHRD
b250cm9sbGVySU9TLmgKaW5kZXggODgxODFlOWFhYzVhYmEwZDhmMzhlZjJlNDIyZjg5N2EwODE2
ZDM4Zi4uN2EyYTJlMDVjNTE5NTc5MjU1Y2Q0OGU0Yjc3YTcxMjZhODBkZDNhMCAxMDA2NDQKLS0t
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5oCisrKyBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MuaApAQCAtNDks
NiArNDksNyBAQCBwdWJsaWM6CiAgICAgZG91YmxlIG1pbmltdW1ab29tU2NhbGUoKSBjb25zdCBv
dmVycmlkZTsKICAgICBkb3VibGUgbWF4aW11bVpvb21TY2FsZSgpIGNvbnN0IG92ZXJyaWRlOwog
ICAgIEpTT2JqZWN0UmVmIGNvbnRlbnRWaXNpYmxlUmVjdCgpIGNvbnN0IG92ZXJyaWRlOworICAg
IHZvaWQgY29weVRleHQoSlNTdHJpbmdSZWYpIG92ZXJyaWRlOwogfTsKIAogfQpkaWZmIC0tZ2l0
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbSBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0KaW5kZXggNDJh
NmI5NTZhZTQzMWE2NzNiMzBjMzc5NGRjODgwZWU0YmM2NGQ2MC4uMDAwNmUzZDZkNWZkYmU1MGEw
YzkyMjEyOWYxYWQ1NDcwMTMwOTc0MSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
aW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9p
b3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbXBvcnQg
IkR1bXBSZW5kZXJUcmVlQnJvd3NlclZpZXcuaCIKICNpbXBvcnQgIlVJU2NyaXB0Q29udGV4dC5o
IgorI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvT3BhcXVlSlNTdHJpbmcuaD4KICNpbXBvcnQgPFdl
YkNvcmUvRmxvYXRSZWN0Lmg+CiAjaW1wb3J0IDx3dGYvTWFpblRocmVhZC5oPgogCkBAIC0xMzEs
NiArMTMyLDExIEBAIEpTT2JqZWN0UmVmIFVJU2NyaXB0Q29udHJvbGxlcklPUzo6Y29udGVudFZp
c2libGVSZWN0KCkgY29uc3QKICAgICByZXR1cm4gbV9jb250ZXh0LT5vYmplY3RGcm9tUmVjdChy
ZWN0KTsKIH0KIAordm9pZCBVSVNjcmlwdENvbnRyb2xsZXJJT1M6OmNvcHlUZXh0KEpTU3RyaW5n
UmVmIHRleHQpCit7CisgICAgVUlQYXN0ZWJvYXJkLmdlbmVyYWxQYXN0ZWJvYXJkLnN0cmluZyA9
IHRleHQtPnN0cmluZygpOworfQorCiB9CiAKICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZ
KQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlUGFz
dGVib2FyZC5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZVBhc3Rl
Ym9hcmQubW0KaW5kZXggZjk1MzBmNGQzMTNhOWNhYzdiZDk4NWFlNDE1NGZmYWFjNWE2ZmQ4Ny4u
ZTg3ZGY4YjhhMWJlOTljNzhmZjRhZmU1N2Y4MDIzZmI2MzMxNGIwZSAxMDA2NDQKLS0tIGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlUGFzdGVib2FyZC5tbQorKysgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWVQYXN0ZWJvYXJkLm1tCkBAIC0x
MjMsNyArMTIzLDggQEAgLSAoTlNJbnRlZ2VyKWRlY2xhcmVUeXBlczooTlNBcnJheSAqKW5ld1R5
cGVzIG93bmVyOihpZCluZXdPd25lcgogICAgIF90eXBlcy5jbGVhcigpOwogICAgIF9kYXRhLmNs
ZWFyKCk7CiAKLSAgICByZXR1cm4gW3NlbGYgYWRkVHlwZXM6bmV3VHlwZXMgb3duZXI6bmV3T3du
ZXJdOworICAgIFtzZWxmIF9hZGRUeXBlc1dpdGhvdXRVcGRhdGluZ0NoYW5nZUNvdW50Om5ld1R5
cGVzIG93bmVyOm5ld093bmVyXTsKKyAgICByZXR1cm4gKytfY2hhbmdlQ291bnQ7CiB9CiAKIHN0
YXRpYyBib29sIGlzVVRJKE5TU3RyaW5nICp0eXBlKQpAQCAtMTQxLDE3ICsxNDIsMjEgQEAgc3Rh
dGljIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdG9VVEkoTlNTdHJpbmcgKnR5cGUpCiAgICAgcmV0
dXJuIGFkb3B0Q0YoVVRUeXBlQ3JlYXRlUHJlZmVycmVkSWRlbnRpZmllckZvclRhZyhrVVRUYWdD
bGFzc05TUGJvYXJkVHlwZSwgKF9fYnJpZGdlIENGU3RyaW5nUmVmKXR5cGUsIG51bGxwdHIpKTsK
IH0KIAotLSAoTlNJbnRlZ2VyKWFkZFR5cGVzOihOU0FycmF5ICopbmV3VHlwZXMgb3duZXI6KGlk
KW5ld093bmVyCistIChOU0ludGVnZXIpYWRkVHlwZXM6KE5TQXJyYXk8TlNQYXN0ZWJvYXJkVHlw
ZT4gKiluZXdUeXBlcyBvd25lcjooaWQpbmV3T3duZXIKIHsKLSAgICBpZiAoX293bmVyICE9IG5l
d093bmVyKSB7Ci0gICAgICAgIF9vd25lciA9IG5ld093bmVyOworICAgIGF1dG8gcHJldmlvdXNP
d25lciA9IF9vd25lcjsKKyAgICBbc2VsZiBfYWRkVHlwZXNXaXRob3V0VXBkYXRpbmdDaGFuZ2VD
b3VudDpuZXdUeXBlcyBvd25lcjpuZXdPd25lcl07CisgICAgaWYgKHByZXZpb3VzT3duZXIgIT0g
bmV3T3duZXIpCiAgICAgICAgICsrX2NoYW5nZUNvdW50OwotICAgIH0KKyAgICByZXR1cm4gX2No
YW5nZUNvdW50OworfQorCistICh2b2lkKV9hZGRUeXBlc1dpdGhvdXRVcGRhdGluZ0NoYW5nZUNv
dW50OihOU0FycmF5ICopbmV3VHlwZXMgb3duZXI6KGlkKW5ld093bmVyCit7CisgICAgX293bmVy
ID0gbmV3T3duZXI7CiAKICAgICBmb3IgKE5TU3RyaW5nICp0eXBlIGluIG5ld1R5cGVzKQogICAg
ICAgICBfdHlwZXMuYWRkKHRvVVRJKHR5cGUpKTsKLQotICAgIHJldHVybiBfY2hhbmdlQ291bnQ7
CiB9CiAKIC0gKE5TSW50ZWdlciljaGFuZ2VDb3VudApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvbWFjL1VJU2NyaXB0Q29udHJvbGxlck1hYy5oIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvbWFjL1VJU2NyaXB0Q29udHJvbGxlck1hYy5oCmluZGV4IGQyNjQwN2M4NzVhZmQ5NDcxYzI2
NGQ0MDMzMzMzN2IzYzVhYTliMjcuLjBlN2VjMjgyMTM0NjI3MzViM2M2NmFlMGY2MjQyMjcxZGY4
ODQyNjMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9VSVNjcmlwdENvbnRy
b2xsZXJNYWMuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVUlTY3JpcHRDb250cm9s
bGVyTWFjLmgKQEAgLTQ5LDYgKzQ5LDcgQEAgcHVibGljOgogICAgIHZvaWQgdG9nZ2xlQ2Fwc0xv
Y2soSlNWYWx1ZVJlZikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzaW11bGF0ZUFjY2Vzc2liaWxpdHlT
ZXR0aW5nc0NoYW5nZU5vdGlmaWNhdGlvbihKU1ZhbHVlUmVmKSBvdmVycmlkZTsKICAgICBOU1Vu
ZG9NYW5hZ2VyICpwbGF0Zm9ybVVuZG9NYW5hZ2VyKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9p
ZCBjb3B5VGV4dChKU1N0cmluZ1JlZikgb3ZlcnJpZGU7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVUlTY3JpcHRDb250cm9sbGVyTWFjLm1tIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvbWFjL1VJU2NyaXB0Q29udHJvbGxlck1hYy5tbQppbmRleCA3OTg5ZWI0
MDhmZGMzZjZhMjQ1NzI3ZmM5ZTdjZjBhYjUzMjBhYzY1Li45OTZmYjkyZWUzZjQ5Nzk2MjQ0ODc5
NDg1OWE5Yzg1OWExZThkYWYxIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMv
VUlTY3JpcHRDb250cm9sbGVyTWFjLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9V
SVNjcmlwdENvbnRyb2xsZXJNYWMubW0KQEAgLTMxLDYgKzMxLDcgQEAKICNpbXBvcnQgPEphdmFT
Y3JpcHRDb3JlL0pTQ29udGV4dC5oPgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSlNTdHJpbmdS
ZWZDRi5oPgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSlNWYWx1ZS5oPgorI2ltcG9ydCA8SmF2
YVNjcmlwdENvcmUvT3BhcXVlSlNTdHJpbmcuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJLaXQuaD4K
ICNpbXBvcnQgPFdlYktpdC9XZWJWaWV3UHJpdmF0ZS5oPgogCkBAIC0xNDYsNiArMTQ3LDEzIEBA
IE5TVW5kb01hbmFnZXIgKlVJU2NyaXB0Q29udHJvbGxlck1hYzo6cGxhdGZvcm1VbmRvTWFuYWdl
cigpIGNvbnN0CiAgICAgcmV0dXJuIG5pbDsKIH0KIAordm9pZCBVSVNjcmlwdENvbnRyb2xsZXJN
YWM6OmNvcHlUZXh0KEpTU3RyaW5nUmVmIHRleHQpCit7CisgICAgTlNQYXN0ZWJvYXJkICpwYXN0
ZWJvYXJkID0gTlNQYXN0ZWJvYXJkLmdlbmVyYWxQYXN0ZWJvYXJkOworICAgIFtwYXN0ZWJvYXJk
IGRlY2xhcmVUeXBlczpbTlNBcnJheSBhcnJheVdpdGhPYmplY3Q6TlNQYXN0ZWJvYXJkVHlwZVN0
cmluZ10gb3duZXI6bmlsXTsKKyAgICBbcGFzdGVib2FyZCBzZXRTdHJpbmc6dGV4dC0+c3RyaW5n
KCkgZm9yVHlwZTpOU1Bhc3RlYm9hcmRUeXBlU3RyaW5nXTsKK30KKwogfQogCiAjZW5kaWYgLy8g
UExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0
QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RX
ZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBiODBlODI0NDBlZGU1YWE3
M2FhMmE4ODM1NWMzZTllNzE2MmYzN2Y4Li4xYjhiZGQ0ZjM4MjQ3YzlhM2U5MDk4NDkzODJjOTM5
MzE5Y2QzNjdhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEku
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RX
ZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtOTc0LDYgKzk3NCw4IEBACiAJ
CUY0MUFCOUE4MUVGNDY5NkIwMDgzRkEwOCAvKiBwcmV2ZW50LW9wZXJhdGlvbi5odG1sIGluIENv
cHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0MUFCOTk0
MUVGNDY5MkMwMDgzRkEwOCAvKiBwcmV2ZW50LW9wZXJhdGlvbi5odG1sICovOyB9OwogCQlGNDFB
QjlBOTFFRjQ2OTZCMDA4M0ZBMDggLyogcHJldmVudC1zdGFydC5odG1sIGluIENvcHkgUmVzb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0MUFCOTlBMUVGNDY5MkMw
MDgzRkEwOCAvKiBwcmV2ZW50LXN0YXJ0Lmh0bWwgKi87IH07CiAJCUY0MUFCOUFBMUVGNDY5NkIw
MDgzRkEwOCAvKiB0ZXh0YXJlYS10by1pbnB1dC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0MUFCOTk1MUVGNDY5MkMwMDgzRkEwOCAv
KiB0ZXh0YXJlYS10by1pbnB1dC5odG1sICovOyB9OworCQlGNDIyQTNFOTIzNUFDQTlCMDBDRjAw
Q0EgLyogQ2xpcGJvYXJkVGVzdHMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGNDIyQTNFODIzNUFDQTlCMDBDRjAwQ0EgLyogQ2xpcGJvYXJkVGVzdHMu
bW0gKi87IH07CisJCUY0MjJBM0VCMjM1QkIxNjIwMENGMDBDQSAvKiBjbGlwYm9hcmQuaHRtbCBp
biBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDIy
QTNFQTIzNUJCMTQ1MDBDRjAwQ0EgLyogY2xpcGJvYXJkLmh0bWwgKi87IH07CiAJCUY0MkQ2MzQ0
MjJBMTcyOUYwMEQyRkIzQSAvKiBBdXRvY29ycmVjdGlvblRlc3RzSU9TLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQyRDYzNDMyMkExNzI5RjAwRDJG
QjNBIC8qIEF1dG9jb3JyZWN0aW9uVGVzdHNJT1MubW0gKi87IH07CiAJCUY0MkRBNTE2MUQ4Q0VG
RTQwMDMzNkY0MCAvKiBsYXJnZS1pbnB1dC1maWVsZC1mb2N1cy1vbmxvYWQuaHRtbCBpbiBDb3B5
IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDJEQTUxNTFE
OENFRkRCMDAzMzZGNDAgLyogbGFyZ2UtaW5wdXQtZmllbGQtZm9jdXMtb25sb2FkLmh0bWwgKi87
IH07CiAJCUY0MzRDQTFBMjJFNjVCQ0EwMDVEREIyNiAvKiBTY3JvbGxUb1JldmVhbFNlbGVjdGlv
bi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0MzRD
QTE5MjJFNjVCQ0EwMDVEREIyNiAvKiBTY3JvbGxUb1JldmVhbFNlbGVjdGlvbi5tbSAqLzsgfTsK
QEAgLTExNzcsNiArMTE3OSw3IEBACiAJCQkJMkVGRjA2QzcxRDg4NkE1ODAwMDRCQjMwIC8qIGNo
YW5nZS12aWRlby1zb3VyY2Utb24tZW5kLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJ
OUJENDIzOUMxRTA0QzAxQzAwMjAwMzk1IC8qIGNoaW5lc2UtY2hhcmFjdGVyLXdpdGgtaW1hZ2Uu
aHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQk4MzlBQTM1RjIxQTI2QjAzMDA5ODBERDYg
LyogY2xpZW50LXNpZGUtcmVkaXJlY3QuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKKwkJCQlG
NDIyQTNFQjIzNUJCMTYyMDBDRjAwQ0EgLyogY2xpcGJvYXJkLmh0bWwgaW4gQ29weSBSZXNvdXJj
ZXMgKi8sCiAJCQkJMUE1MEFBMjAxQTJBNTFGQzAwRjRDMzQ1IC8qIGNsb3NlLWZyb20td2l0aGlu
LWNyZWF0ZS1wYWdlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJOUIyNzBGRUUxRERD
MkMwQjAwMkQ1M0YzIC8qIGNsb3NlZC1zaGFkb3ctdHJlZS10ZXN0Lmh0bWwgaW4gQ29weSBSZXNv
dXJjZXMgKi8sCiAJCQkJOUI5MzMyQ0UyMzIwQzc0NTAwMkQ1MEU4IC8qIGNvY29hLXdyaXRlci1t
YXJrdXAtd2l0aC1saXN0cy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLApAQCAtMjQ3NCw2ICsy
NDc3LDggQEAKIAkJRjQxQUI5OUMxRUY0NjkyQzAwODNGQTA4IC8qIGNvbnRlbnRlZGl0YWJsZS1h
bmQtdGV4dGFyZWEuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJjb250ZW50ZWRpdGFibGUtYW5kLXRleHRhcmVh
Lmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDFBQjk5RDFFRjQ2OTJDMDA4
M0ZBMDggLyogbGluay1hbmQtdGFyZ2V0LWRpdi5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gImxpbmstYW5kLXRh
cmdldC1kaXYuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0MUFCOTlFMUVG
NDY5MkMwMDgzRkEwOCAvKiBkaXYtYW5kLWxhcmdlLWltYWdlLmh0bWwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiZGl2
LWFuZC1sYXJnZS1pbWFnZS5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjQy
MkEzRTgyMzVBQ0E5QjAwQ0YwMENBIC8qIENsaXBib2FyZFRlc3RzLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gQ2xpcGJvYXJkVGVzdHMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUY0MjJBM0VBMjM1QkIxNDUwMENGMDBDQSAvKiBjbGlwYm9hcmQuaHRtbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQuaHRtbDsgcGF0aCA9IGNsaXBib2FyZC5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlGNDJENjM0MzIyQTE3MjlGMDBEMkZCM0EgLyogQXV0b2NvcnJlY3Rpb25UZXN0c0lPUy5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEF1dG9jb3JyZWN0aW9uVGVzdHNJT1MubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0MkRBNTE1MUQ4Q0VGREIwMDMzNkY0MCAvKiBsYXJn
ZS1pbnB1dC1maWVsZC1mb2N1cy1vbmxvYWQuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgbmFt
ZSA9ICJsYXJnZS1pbnB1dC1maWVsZC1mb2N1cy1vbmxvYWQuaHRtbCI7IHBhdGggPSAiVGVzdHMv
V2ViS2l0Q29jb2EvbGFyZ2UtaW5wdXQtZmllbGQtZm9jdXMtb25sb2FkLmh0bWwiOyBzb3VyY2VU
cmVlID0gU09VUkNFX1JPT1Q7IH07CiAJCUY0MzRDQTE5MjJFNjVCQ0EwMDVEREIyNiAvKiBTY3Jv
bGxUb1JldmVhbFNlbGVjdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNjcm9sbFRvUmV2
ZWFsU2VsZWN0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjc4Nyw2ICsy
NzkyLDcgQEAKIAkJCQkxQzJCODE4MTFDODkxRUZBMDBBNTUyOUYgLyogQ2FuY2VsRm9udFN1YnJl
c291cmNlUGx1Z0luLm1tICovLAogCQkJCTVDMjNERjBBMjI0NUM5RDcwMEY0NTRCNiAvKiBDaGFs
bGVuZ2UubW0gKi8sCiAJCQkJNUNCMThCQTcxRjU2NDVCMjAwRUUyM0M0IC8qIENsaWNrQXV0b0Zp
bGxCdXR0b24ubW0gKi8sCisJCQkJRjQyMkEzRTgyMzVBQ0E5QjAwQ0YwMENBIC8qIENsaXBib2Fy
ZFRlc3RzLm1tICovLAogCQkJCUNERjkyMjM2MjE2RDE4NjQwMDY0N0FBNyAvKiBDbG9zZVdlYlZp
ZXdBZnRlckVudGVyRnVsbHNjcmVlbi5tbSAqLywKIAkJCQlDREYwQjc4OTIxNkQ0ODQzMDA0MjFF
Q0MgLyogQ2xvc2VXZWJWaWV3RHVyaW5nRW50ZXJGdWxsc2NyZWVuLm1tICovLAogCQkJCTFBQUQx
OUY1MUM3Q0UyMDMwMDgzMUU0NyAvKiBDb2RpbmcubW0gKi8sCkBAIC0zMjMzLDYgKzMyMzksNyBA
QAogCQkJCTJFRkYwNkM0MUQ4ODY3NzAwMDA0QkIzMCAvKiBjaGFuZ2UtdmlkZW8tc291cmNlLW9u
LWNsaWNrLmh0bWwgKi8sCiAJCQkJMkVGRjA2QzYxRDg4NkE1NjAwMDRCQjMwIC8qIGNoYW5nZS12
aWRlby1zb3VyY2Utb24tZW5kLmh0bWwgKi8sCiAJCQkJODM5QUEzNUUyMUEyNkFDRDAwOTgwREQ2
IC8qIGNsaWVudC1zaWRlLXJlZGlyZWN0Lmh0bWwgKi8sCisJCQkJRjQyMkEzRUEyMzVCQjE0NTAw
Q0YwMENBIC8qIGNsaXBib2FyZC5odG1sICovLAogCQkJCTlCOTMzMkNEMjMyMEM3M0UwMDJENTBF
OCAvKiBjb2NvYS13cml0ZXItbWFya3VwLXdpdGgtbGlzdHMuaHRtbCAqLywKIAkJCQk5QkFFMTc3
QTIyRTJCQjZCMDBERjMwOTggLyogY29jb2Etd3JpdGVyLW1hcmt1cC13aXRoLXN5c3RlbS1mb250
cy5odG1sICovLAogCQkJCUU1MDM2Rjc3MjExQkMyMjgwMEJGREJFMiAvKiBjb2xvci1kcm9wLmh0
bWwgKi8sCkBAIC00NDY5LDYgKzQ0NzYsNyBAQAogCQkJCTU3MzAzQkM5MjAwODI0RDMwMDM1NTk2
NSAvKiBDQk9SVmFsdWVUZXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTU3MzAzQkNBMjAwODJD
MDEwMDM1NTk2NSAvKiBDQk9SV3JpdGVyVGVzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1QzIz
REYwQjIyNDYwMTU4MDBGNDU0QjYgLyogQ2hhbGxlbmdlLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJ
RjQyMkEzRTkyMzVBQ0E5QjAwQ0YwMENBIC8qIENsaXBib2FyZFRlc3RzLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJN0NDRTdFRTYxQTQxMUFFNjAwNDQ3QzRDIC8qIENsb3NlRnJvbVdpdGhpbkNyZWF0
ZVBhZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFQjcxQTQxMUE3RTAwNDQ3QzRDIC8q
IENsb3NlTmV3V2luZG93SW5OYXZpZ2F0aW9uUG9saWN5RGVsZWdhdGUubW0gaW4gU291cmNlcyAq
LywKIAkJCQk3Q0NFN0VFNTFBNDExQUU2MDA0NDdDNEMgLyogQ2xvc2VUaGVuVGVybWluYXRlLmNw
cCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9DbGlwYm9hcmRUZXN0cy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvQ2xpcGJvYXJkVGVzdHMubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDE2ZjI3ZmQ3YjI4Zjc4
YzlmYTcwNzU2MmQ3Y2M5ZGExZGNkOGRjNQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ2xpcGJvYXJkVGVzdHMubW0KQEAgLTAsMCArMSwx
MzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKworI2ltcG9ydCAiUGxhdGZv
cm1VdGlsaXRpZXMuaCIKKyNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKKyNpbXBvcnQgIlVJS2l0
U1BJLmgiCisjaW1wb3J0IDxDb3JlU2VydmljZXMvQ29yZVNlcnZpY2VzLmg+CisjaW1wb3J0IDxX
ZWJLaXQvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9fV0tFeHBlcmlt
ZW50YWxGZWF0dXJlLmg+CisKK0BpbnRlcmZhY2UgVGVzdFdLV2ViVmlldyAoQ2xpcGJvYXJkVGVz
dHMpCisKKy0gKHZvaWQpcmVhZENsaXBib2FyZDsKKworQGVuZAorCitAaW1wbGVtZW50YXRpb24g
VGVzdFdLV2ViVmlldyAoQ2xpcGJvYXJkVGVzdHMpCisKKy0gKHZvaWQpcmVhZENsaXBib2FyZAor
eworICAgIF9fYmxvY2sgYm9vbCBkb25lID0gZmFsc2U7CisgICAgW3NlbGYgcGVyZm9ybUFmdGVy
UmVjZWl2aW5nTWVzc2FnZTpAInJlYWRDbGlwYm9hcmQiIGFjdGlvbjpeeworICAgICAgICBkb25l
ID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBbc2VsZiBldmFsdWF0ZUphdmFTY3JpcHQ6QCJyZWFkQ2xp
cGJvYXJkKCkiIGNvbXBsZXRpb25IYW5kbGVyOm5pbF07CisgICAgVGVzdFdlYktpdEFQSTo6VXRp
bDo6cnVuKCZkb25lKTsKK30KKworQGVuZAorCitzdGF0aWMgUmV0YWluUHRyPFRlc3RXS1dlYlZp
ZXc+IGNyZWF0ZVdlYlZpZXdGb3JDbGlwYm9hcmRUZXN0cygpCit7CisjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKKyAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKKyAgICBkaXNw
YXRjaF9vbmNlKCZvbmNlVG9rZW4sIF57CisgICAgICAgIC8vIFVJUGFzdGVib2FyZCdzIHR5cGUg
Y29lcmNpb24gY29kZXBhdGhzIG9ubHkgdGFrZSBlZmZlY3Qgd2hlbiB0aGUgVUlBcHBsaWNhdGlv
biBoYXMgYmVlbiBpbml0aWFsaXplZC4KKyAgICAgICAgVUlBcHBsaWNhdGlvbkluaXRpYWxpemUo
KTsKKyAgICB9KTsKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQorCisgICAgYXV0byBj
b25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGlu
aXRdKTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdIF9zZXRET01QYXN0ZUFsbG93
ZWQ6WUVTXTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdIF9zZXRKYXZhU2NyaXB0
Q2FuQWNjZXNzQ2xpcGJvYXJkOllFU107CisgICAgZm9yIChfV0tFeHBlcmltZW50YWxGZWF0dXJl
ICpmZWF0dXJlIGluIFtXS1ByZWZlcmVuY2VzIF9leHBlcmltZW50YWxGZWF0dXJlc10pIHsKKyAg
ICAgICAgaWYgKFtmZWF0dXJlLmtleSBpc0VxdWFsVG9TdHJpbmc6QCJBc3luY0NsaXBib2FyZEFQ
SUVuYWJsZWQiXSkgeworICAgICAgICAgICAgW1tjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSBf
c2V0RW5hYmxlZDpZRVMgZm9yRXhwZXJpbWVudGFsRmVhdHVyZTpmZWF0dXJlXTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHRO
UyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCA0
MDAsIDQwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAgW3dlYlZp
ZXcgc3luY2hyb25vdXNseUxvYWRUZXN0UGFnZU5hbWVkOkAiY2xpcGJvYXJkIl07CisgICAgcmV0
dXJuIHdlYlZpZXc7Cit9CisKK3N0YXRpYyB2b2lkIHdyaXRlTXVsdGlwbGVPYmplY3RzVG9QbGF0
Zm9ybVBhc3RlYm9hcmQoKQoreworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBhdXRvIGZpcnN0SXRl
bSA9IGFkb3B0TlMoW1tOU1Bhc3RlYm9hcmRJdGVtIGFsbG9jXSBpbml0XSk7CisgICAgW2ZpcnN0
SXRlbSBzZXRTdHJpbmc6QCJIZWxsbyIgZm9yVHlwZTpOU1Bhc3RlYm9hcmRUeXBlU3RyaW5nXTsK
KworICAgIGF1dG8gc2Vjb25kSXRlbSA9IGFkb3B0TlMoW1tOU1Bhc3RlYm9hcmRJdGVtIGFsbG9j
XSBpbml0XSk7CisgICAgW3NlY29uZEl0ZW0gc2V0U3RyaW5nOkAiaHR0cHM6Ly9hcHBsZS5jb20v
IiBmb3JUeXBlOk5TUGFzdGVib2FyZFR5cGVVUkxdOworCisgICAgYXV0byB0aGlyZEl0ZW0gPSBh
ZG9wdE5TKFtbTlNQYXN0ZWJvYXJkSXRlbSBhbGxvY10gaW5pdF0pOworICAgIFt0aGlyZEl0ZW0g
c2V0U3RyaW5nOkAiPHN0cm9uZyBzdHlsZT0nY29sb3I6IHJnYigwLCAyNTUsIDApOyc+SGVsbG8g
d29ybGQ8L3N0cm9uZz4iIGZvclR5cGU6TlNQYXN0ZWJvYXJkVHlwZUhUTUxdOworCisgICAgYXV0
byBmb3VydGhJdGVtID0gYWRvcHROUyhbW05TUGFzdGVib2FyZEl0ZW0gYWxsb2NdIGluaXRdKTsK
KyAgICBbZm91cnRoSXRlbSBzZXRTdHJpbmc6QCJXZWJLaXQiIGZvclR5cGU6TlNQYXN0ZWJvYXJk
VHlwZVN0cmluZ107CisgICAgW2ZvdXJ0aEl0ZW0gc2V0U3RyaW5nOkAiaHR0cHM6Ly93ZWJraXQu
b3JnLyIgZm9yVHlwZTpOU1Bhc3RlYm9hcmRUeXBlVVJMXTsKKyAgICBbZm91cnRoSXRlbSBzZXRT
dHJpbmc6QCI8YSBocmVmPSdodHRwczovL3dlYmtpdC5vcmcvJz5IZWxsbyB3b3JsZDwvYT4iIGZv
clR5cGU6TlNQYXN0ZWJvYXJkVHlwZUhUTUxdOworCisgICAgTlNQYXN0ZWJvYXJkICpwYXN0ZWJv
YXJkID0gTlNQYXN0ZWJvYXJkLmdlbmVyYWxQYXN0ZWJvYXJkOworICAgIFtwYXN0ZWJvYXJkIGNs
ZWFyQ29udGVudHNdOworICAgIFtwYXN0ZWJvYXJkIHdyaXRlT2JqZWN0czpAW2ZpcnN0SXRlbS5n
ZXQoKSwgc2Vjb25kSXRlbS5nZXQoKSwgdGhpcmRJdGVtLmdldCgpLCBmb3VydGhJdGVtLmdldCgp
XV07CisjZWxzZQorICAgIGF1dG8gZmlyc3RJdGVtID0gYWRvcHROUyhbW05TSXRlbVByb3ZpZGVy
IGFsbG9jXSBpbml0V2l0aE9iamVjdDpAIkhlbGxvIl0pOworICAgIGF1dG8gc2Vjb25kSXRlbSA9
IGFkb3B0TlMoW1tOU0l0ZW1Qcm92aWRlciBhbGxvY10gaW5pdFdpdGhPYmplY3Q6W05TVVJMIFVS
TFdpdGhTdHJpbmc6QCJodHRwczovL2FwcGxlLmNvbS8iXV0pOworICAgIGF1dG8gdGhpcmRJdGVt
ID0gYWRvcHROUyhbW05TSXRlbVByb3ZpZGVyIGFsbG9jXSBpbml0XSk7CisgICAgW3RoaXJkSXRl
bSByZWdpc3RlckRhdGFSZXByZXNlbnRhdGlvbkZvclR5cGVJZGVudGlmaWVyOihfX2JyaWRnZSBO
U1N0cmluZyAqKWtVVFR5cGVIVE1MIHZpc2liaWxpdHk6TlNJdGVtUHJvdmlkZXJSZXByZXNlbnRh
dGlvblZpc2liaWxpdHlBbGwgbG9hZEhhbmRsZXI6WyZdICh2b2lkICheY29tcGxldGlvbkhhbmRs
ZXIpKE5TRGF0YSAqLCBOU0Vycm9yICopKSAtPiBOU1Byb2dyZXNzICogeworICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihbQCI8c3Ryb25nIHN0eWxlPSdjb2xvcjogcmdiKDAsIDI1NSwgMCk7Jz5I
ZWxsbyB3b3JsZDwvc3Ryb25nPiIgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2Rp
bmddLCBuaWwpOworICAgICAgICByZXR1cm4gbmlsOworICAgIH1dOworCisgICAgYXV0byBmb3Vy
dGhJdGVtID0gYWRvcHROUyhbW05TSXRlbVByb3ZpZGVyIGFsbG9jXSBpbml0XSk7CisgICAgW2Zv
dXJ0aEl0ZW0gcmVnaXN0ZXJPYmplY3Q6QCJXZWJLaXQiIHZpc2liaWxpdHk6TlNJdGVtUHJvdmlk
ZXJSZXByZXNlbnRhdGlvblZpc2liaWxpdHlBbGxdOworICAgIFtmb3VydGhJdGVtIHJlZ2lzdGVy
T2JqZWN0OltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cHM6Ly93ZWJraXQub3JnLyJdIHZpc2li
aWxpdHk6TlNJdGVtUHJvdmlkZXJSZXByZXNlbnRhdGlvblZpc2liaWxpdHlBbGxdOworICAgIFtm
b3VydGhJdGVtIHJlZ2lzdGVyRGF0YVJlcHJlc2VudGF0aW9uRm9yVHlwZUlkZW50aWZpZXI6KF9f
YnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZUhUTUwgdmlzaWJpbGl0eTpOU0l0ZW1Qcm92aWRlclJl
cHJlc2VudGF0aW9uVmlzaWJpbGl0eUFsbCBsb2FkSGFuZGxlcjpbJl0gKHZvaWQgKF5jb21wbGV0
aW9uSGFuZGxlcikoTlNEYXRhICosIE5TRXJyb3IgKikpIC0+IE5TUHJvZ3Jlc3MgKiB7CisgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKFtAIjxhIGhyZWY9J2h0dHBzOi8vd2Via2l0Lm9yZy8nPkhl
bGxvIHdvcmxkPC9hPiIgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddLCBu
aWwpOworICAgICAgICByZXR1cm4gbmlsOworICAgIH1dOworCisgICAgVUlQYXN0ZWJvYXJkLmdl
bmVyYWxQYXN0ZWJvYXJkLml0ZW1Qcm92aWRlcnMgPSBAWyBmaXJzdEl0ZW0uZ2V0KCksIHNlY29u
ZEl0ZW0uZ2V0KCksIHRoaXJkSXRlbS5nZXQoKSwgZm91cnRoSXRlbS5nZXQoKSBdOworI2VuZGlm
Cit9CisKK1RFU1QoQ2xpcGJvYXJkVGVzdHMsIFJlYWRNdWx0aXBsZUl0ZW1zKQoreworICAgIGF1
dG8gd2ViVmlldyA9IGNyZWF0ZVdlYlZpZXdGb3JDbGlwYm9hcmRUZXN0cygpOworICAgIHdyaXRl
TXVsdGlwbGVPYmplY3RzVG9QbGF0Zm9ybVBhc3RlYm9hcmQoKTsKKyAgICBbd2ViVmlldyByZWFk
Q2xpcGJvYXJkXTsKKworICAgIEVYUEVDVF9XS19TVFJFUSgiIiwgW3dlYlZpZXcgc3RyaW5nQnlF
dmFsdWF0aW5nSmF2YVNjcmlwdDpAImV4Y2VwdGlvbiA/IGV4Y2VwdGlvbi5tZXNzYWdlIDogJyci
XSk7CisgICAgRVhQRUNUX0VRKDRVLCBbW3dlYlZpZXcgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNj
cmlwdDpAImNsaXBib2FyZERhdGEubGVuZ3RoIl0gdW5zaWduZWRJbnRWYWx1ZV0pOworICAgIEVY
UEVDVF9XS19TVFJFUSgiSGVsbG8iLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2Ny
aXB0OkAiY2xpcGJvYXJkRGF0YVswXVsndGV4dC9wbGFpbiddIl0pOworICAgIEVYUEVDVF9XS19T
VFJFUSgiaHR0cHM6Ly9hcHBsZS5jb20vIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2
YVNjcmlwdDpAImNsaXBib2FyZERhdGFbMV1bJ3RleHQvdXJpLWxpc3QnXSJdKTsKKyAgICBFWFBF
Q1RfV0tfU1RSRVEoInJnYigwLCAyNTUsIDApIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5n
SmF2YVNjcmlwdDpAImdldENvbXB1dGVkU3R5bGUoY2xpcGJvYXJkRGF0YVsyXVsndGV4dC9odG1s
J10ucXVlcnlTZWxlY3Rvcignc3Ryb25nJykpLmNvbG9yIl0pOworICAgIEVYUEVDVF9XS19TVFJF
USgiV2ViS2l0IiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImNsaXBi
b2FyZERhdGFbM11bJ3RleHQvcGxhaW4nXSJdKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoImh0dHBz
Oi8vd2Via2l0Lm9yZy8iLCBbd2ViVmlldyBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAi
Y2xpcGJvYXJkRGF0YVszXVsndGV4dC91cmktbGlzdCddIl0pOworICAgIEVYUEVDVF9XS19TVFJF
USgiaHR0cHM6Ly93ZWJraXQub3JnLyIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFT
Y3JpcHQ6QCJjbGlwYm9hcmREYXRhWzNdWyd0ZXh0L2h0bWwnXS5xdWVyeVNlbGVjdG9yKCdhJyku
aHJlZiJdKTsKK30KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvY2xpcGJvYXJkLmh0bWwgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL2NsaXBib2FyZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZhMzgyOTA4ZGZkOWIyMDM4MTUxZDQyNjg0
ZjE4MDNhOWY4MDNiZDYKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL2NsaXBib2FyZC5odG1sCkBAIC0wLDAgKzEsNTcgQEAKKzwhRE9DVFlQ
RT4KKzxodG1sPgorPHNjcmlwdD4KK2Z1bmN0aW9uIGxvYWRUZXh0KGJsb2IpIHsKKyAgICByZXR1
cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4geworICAgICAgICBjb25zdCByZWFk
ZXIgPSBuZXcgRmlsZVJlYWRlcjsKKyAgICAgICAgcmVhZGVyLmFkZEV2ZW50TGlzdGVuZXIoImxv
YWQiLCAoKSA9PiByZXNvbHZlKHJlYWRlci5yZXN1bHQpLCB7IG9uY2U6IHRydWUgfSk7CisgICAg
ICAgIHJlYWRlci5hZGRFdmVudExpc3RlbmVyKCJlcnJvciIsIHJlamVjdCwgeyBvbmNlOiB0cnVl
IH0pOworICAgICAgICByZWFkZXIucmVhZEFzVGV4dChibG9iKTsKKyAgICB9KTsKK30KKworZnVu
Y3Rpb24gbG9hZEltYWdlKGJsb2IpIHsKKyAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUs
IHJlamVjdCkgPT4geworICAgICAgICBjb25zdCBpbWFnZSA9IG5ldyBJbWFnZTsKKyAgICAgICAg
aW1hZ2UuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsICgpID0+IHJlc29sdmUoaW1hZ2UpLCB7IG9u
Y2U6IHRydWUgfSk7CisgICAgICAgIGltYWdlLmFkZEV2ZW50TGlzdGVuZXIoImVycm9yIiwgcmVq
ZWN0LCB7IG9uY2U6IHRydWUgfSk7CisgICAgICAgIGltYWdlLnNyYyA9IFVSTC5jcmVhdGVPYmpl
Y3RVUkwoYmxvYik7CisgICAgfSk7Cit9CisKK2Z1bmN0aW9uIGxvYWREb2N1bWVudChibG9iKSB7
CisgICAgcmV0dXJuIG5ldyBQcm9taXNlKGFzeW5jIHJlc29sdmUgPT4geworICAgICAgICByZXNv
bHZlKG5ldyBET01QYXJzZXIoKS5wYXJzZUZyb21TdHJpbmcoYXdhaXQgbG9hZFRleHQoYmxvYiks
ICJ0ZXh0L2h0bWwiKSk7CisgICAgfSk7Cit9CisKK2NsaXBib2FyZERhdGEgPSBbXTsKK2V4Y2Vw
dGlvbiA9IG51bGw7CisKK2FzeW5jIGZ1bmN0aW9uIHJlYWRDbGlwYm9hcmQoKSB7CisgICAgdHJ5
IHsKKyAgICAgICAgY29uc3QgaXRlbXMgPSBhd2FpdCBuYXZpZ2F0b3IuY2xpcGJvYXJkLnJlYWQo
KTsKKyAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7CisgICAgICAgICAgICBsZXQg
aXRlbURhdGEgPSB7fTsKKyAgICAgICAgICAgIGZvciAoY29uc3QgdHlwZSBvZiBpdGVtLnR5cGVz
KSB7CisgICAgICAgICAgICAgICAgY29uc3QgYmxvYiA9IGF3YWl0IGl0ZW0uZ2V0VHlwZSh0eXBl
KTsKKyAgICAgICAgICAgICAgICBpZiAodHlwZSA9PT0gInRleHQvaHRtbCIpCisgICAgICAgICAg
ICAgICAgICAgIGl0ZW1EYXRhW3R5cGVdID0gYXdhaXQgbG9hZERvY3VtZW50KGJsb2IpOworICAg
ICAgICAgICAgICAgIGVsc2UgaWYgKHR5cGUgPT09ICJpbWFnZS9wbmciKQorICAgICAgICAgICAg
ICAgICAgICBpdGVtRGF0YVt0eXBlXSA9IGF3YWl0IGxvYWRJbWFnZShibG9iKTsKKyAgICAgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGl0ZW1EYXRhW3R5cGVdID0gYXdhaXQg
bG9hZFRleHQoYmxvYik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjbGlwYm9hcmREYXRh
LnB1c2goaXRlbURhdGEpOworICAgICAgICB9CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBl
eGNlcHRpb24gPSBlOworICAgIH0gZmluYWxseSB7CisgICAgICAgIHdlYmtpdC5tZXNzYWdlSGFu
ZGxlcnMudGVzdEhhbmRsZXIucG9zdE1lc3NhZ2UoInJlYWRDbGlwYm9hcmQiKTsKKyAgICB9Cit9
Cis8L3NjcmlwdD4KKzxib2R5PgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL21hYy9XZWJLaXRUZXN0UnVubmVyUGFzdGVib2FyZC5tbSBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1dlYktpdFRlc3RSdW5uZXJQYXN0ZWJvYXJkLm1tCmlu
ZGV4IDlkYmY2ZGQyNDQ4YzIxMTU3M2I1NmFiMDYxM2FmMTE2Mjc3YTRjNmEuLjZhNDJiY2FiYTQ2
MzQ0NWMxM2ZkZTNhMWUwNzA0NjkyMGExOTc0YjQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvbWFjL1dlYktpdFRlc3RSdW5uZXJQYXN0ZWJvYXJkLm1tCisrKyBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvbWFjL1dlYktpdFRlc3RSdW5uZXJQYXN0ZWJvYXJkLm1tCkBAIC0xNDAs
MTAgKzE0MCwxOSBAQCAtIChOU0ludGVnZXIpY2xlYXJDb250ZW50cwogLSAoTlNJbnRlZ2VyKWRl
Y2xhcmVUeXBlczooTlNBcnJheSAqKW5ld1R5cGVzIG93bmVyOihpZCluZXdPd25lcgogewogICAg
IFtzZWxmIF9jbGVhckNvbnRlbnRzV2l0aG91dFVwZGF0aW5nQ2hhbmdlQ291bnRdOwotICAgIHJl
dHVybiBbc2VsZiBhZGRUeXBlczpuZXdUeXBlcyBvd25lcjpuZXdPd25lcl07CisgICAgW3NlbGYg
X2FkZFR5cGVzV2l0aG91dFVwZGF0aW5nQ2hhbmdlQ291bnQ6bmV3VHlwZXMgb3duZXI6bmV3T3du
ZXJdOworICAgIHJldHVybiArK2NoYW5nZUNvdW50OworfQorCistIChOU0ludGVnZXIpYWRkVHlw
ZXM6KE5TQXJyYXk8TlNQYXN0ZWJvYXJkVHlwZT4gKiluZXdUeXBlcyBvd25lcjooaWQpbmV3T3du
ZXIKK3sKKyAgICBbc2VsZiBfYWRkVHlwZXNXaXRob3V0VXBkYXRpbmdDaGFuZ2VDb3VudDpuZXdU
eXBlcyBvd25lcjpuZXdPd25lcl07CisgICAgLy8gRklYTUU6IElkZWFsbHksIHdlIHdvdWxkIGtl
ZXAgdHJhY2sgb2YgdGhlIGN1cnJlbnQgb3duZXIgYW5kIG9ubHkgYnVtcCB0aGUgY2hhbmdlCisg
ICAgLy8gY291bnQgaWYgdGhlIG5ldyBvd25lciBpcyBkaWZmZXJlbnQuCisgICAgcmV0dXJuICsr
Y2hhbmdlQ291bnQ7CiB9CiAKLS0gKE5TSW50ZWdlcilhZGRUeXBlczooTlNBcnJheSAqKW5ld1R5
cGVzIG93bmVyOihpZCluZXdPd25lcgorLSAodm9pZClfYWRkVHlwZXNXaXRob3V0VXBkYXRpbmdD
aGFuZ2VDb3VudDooTlNBcnJheSAqKW5ld1R5cGVzIG93bmVyOihpZCluZXdPd25lcgogewogICAg
IHVuc2lnbmVkIGNvdW50ID0gW25ld1R5cGVzIGNvdW50XTsKICAgICB1bnNpZ25lZCBpOwpAQCAt
MTU5LDcgKzE2OCw2IEBAIC0gKE5TSW50ZWdlcilhZGRUeXBlczooTlNBcnJheSAqKW5ld1R5cGVz
IG93bmVyOihpZCluZXdPd25lcgogICAgICAgICBpZiAobmV3T3duZXIgJiYgW25ld093bmVyIHJl
c3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IocGFzdGVib2FyZDpwcm92aWRlRGF0YUZvclR5cGU6
KV0pCiAgICAgICAgICAgICBbbmV3T3duZXIgcGFzdGVib2FyZDpzZWxmIHByb3ZpZGVEYXRhRm9y
VHlwZTpzZXRUeXBlXTsKICAgICB9Ci0gICAgcmV0dXJuICsrY2hhbmdlQ291bnQ7CiB9CiAKIC0g
KE5TSW50ZWdlciljaGFuZ2VDb3VudApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGZhN2Y3ZjcwNWZiNDYyOGY0YWJiNTY0ZmU0
OTNhMDE5ZjJhZmNhYzEuLmI5YjQ3Y2YwZWI2NDE0NjgzNGMzYzgwODI2YzViNDRiMDg0MGRkZTkg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAxOS0xMC0xOSAgV2Vuc29uIEhzaWVoICA8d2Vuc29u
X2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBbQ2xpcGJvYXJkIEFQSV0gSW1wbGVtZW50IENs
aXBib2FyZEl0ZW0uZ2V0VHlwZSgpIGZvciBwbGF0Zm9ybSBjbGlwYm9hcmQgaXRlbXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMzE2OAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIGNvdXBsZSBv
ZiBuZXcgbGF5b3V0IHRlc3RzLgorCisgICAgICAgICogZWRpdGluZy9hc3luYy1jbGlwYm9hcmQv
Y2xpcGJvYXJkLWNoYW5nZS1kYXRhLXdoaWxlLWdldHRpbmctdHlwZS1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGVkaXRpbmcvYXN5bmMtY2xpcGJvYXJkL2NsaXBib2FyZC1jaGFuZ2Ut
ZGF0YS13aGlsZS1nZXR0aW5nLXR5cGUuaHRtbDogQWRkZWQuCisKKyAgICAgICAgQWRkIGEgbGF5
b3V0IHRlc3QgdG8gdmVyaWZ5IHRoYXQgaWYgdGhlIHBhc3RlYm9hcmQgY2hhbmdlcyByaWdodCBh
ZnRlciB0aGUgcGFnZSBoYXMgb2J0YWluZWQgY2xpcGJvYXJkIGl0ZW1zLAorICAgICAgICB0aGUg
cGFnZSBzaG91bGQgbm90IGJlIGFibGUgdG8gZmV0Y2ggdGhlIG5ldyBjb250ZW50cyBvZiB0aGUg
cGFzdGVib2FyZCB1c2luZyB0aGVzZSBjbGlwYm9hcmQgaXRlbXMuCisKKyAgICAgICAgKiBlZGl0
aW5nL2FzeW5jLWNsaXBib2FyZC9jbGlwYm9hcmQtaXRlbS1nZXQtdHlwZS1iYXNpYy1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvYXN5bmMtY2xpcGJvYXJkL2NsaXBib2Fy
ZC1pdGVtLWdldC10eXBlLWJhc2ljLmh0bWw6IEFkZGVkLgorCisgICAgICAgIEFkZCBhIGxheW91
dCB0ZXN0IHRvIHZlcmlmeSB0aGF0IGFmdGVyIHdyaXRpbmcgbXVsdGlwbGUgdHlwZXMgdG8gdGhl
IGNsaXBib2FyZCB1c2luZyB0aGUgRGF0YVRyYW5zZmVyIEFQSSwgd2UKKyAgICAgICAgc2hvdWxk
IGJlIGFibGUgdG8gcmVhZCB0aGVtIGJhY2sgdXNpbmcgdGhlIGFzeW5jIGNsaXBib2FyZCBBUEks
IGFzIGEgc2luZ2xlIENsaXBib2FyZEl0ZW0sIGFuZCBhbHNvIGdldCBkYXRhIG91dAorICAgICAg
ICBvZiB0aGUgY2xpcGJvYXJkIGl0ZW0gdXNpbmcgQ2xpcGJvYXJkSXRlbS5nZXRUeXBlLgorCisg
ICAgICAgICogZWRpdGluZy9hc3luYy1jbGlwYm9hcmQvcmVzb3VyY2VzL2FzeW5jLWNsaXBib2Fy
ZC1oZWxwZXJzLmpzOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zOgor
ICAgICAgICAqIHJlc291cmNlcy91aS1oZWxwZXIuanM6CisgICAgICAgICh3aW5kb3cuVUlIZWxw
ZXIuYXN5bmMuY29weVRleHQpOgorICAgICAgICAod2luZG93LlVJSGVscGVyKToKKwogMjAxOS0x
MC0xOCAgSmlld2VuIFRhbiAgPGppZXdlbl90YW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJB
dXRobl0gV2FybiB1c2VycyB3aGVuIG5vIGNyZWRlbnRpYWxzIGFyZSBmb3VuZApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9hc3luYy1jbGlwYm9hcmQvY2xpcGJvYXJkLWNoYW5nZS1k
YXRhLXdoaWxlLWdldHRpbmctdHlwZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5n
L2FzeW5jLWNsaXBib2FyZC9jbGlwYm9hcmQtY2hhbmdlLWRhdGEtd2hpbGUtZ2V0dGluZy10eXBl
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MTFlOGQwN2RjNmUyNTNkYTM3YTgwZmYzMzUzZDU4
ODkxNjAyNjk4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9hc3luYy1j
bGlwYm9hcmQvY2xpcGJvYXJkLWNoYW5nZS1kYXRhLXdoaWxlLWdldHRpbmctdHlwZS1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwxMSBAQAorVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgaWYgcGxhdGZv
cm0gcGFzdGVib2FyZCBjb250ZW50cyBhcmUgY2hhbmdlZCBiZWZvcmUgcmVhZGluZyBmcm9tIGEg
Q2xpcGJvYXJkSXRlbSwgdGhlIG5ldyBjb250ZW50cyBvZiB0aGUgcGFzdGVib2FyZCBzaG91bGQg
bm90IGJlIGV4cG9zZWQgdG8gdGhlIHBhZ2UgYW5kIHRoZSByZXN1bHQgb2YgZ2V0VHlwZSgpIHNo
b3VsZCBiZSByZWplY3RlZC4gVGhpcyB0ZXN0IHJlcXVpcmVzIFdlYktpdFRlc3RSdW5uZXIuCisK
K09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZv
bGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGl0ZW1zLmxlbmd0aCBpcyAxCitQ
QVNTIEhhbmRsZWQgZXhjZXB0aW9uOiBOb3RBbGxvd2VkRXJyb3IKK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9lZGl0aW5nL2FzeW5jLWNsaXBib2FyZC9jbGlwYm9hcmQtY2hhbmdlLWRhdGEtd2hpbGUtZ2V0
dGluZy10eXBlLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL2FzeW5jLWNsaXBib2FyZC9jbGlw
Ym9hcmQtY2hhbmdlLWRhdGEtd2hpbGUtZ2V0dGluZy10eXBlLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzYy
YTQ2YjYxZWQwODc5ZjI5M2FjN2FiYTYyMDJlMmI4ODJhYTcxYQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2VkaXRpbmcvYXN5bmMtY2xpcGJvYXJkL2NsaXBib2FyZC1jaGFuZ2UtZGF0
YS13aGlsZS1nZXR0aW5nLXR5cGUuaHRtbApAQCAtMCwwICsxLDMyIEBACis8IURPQ1RZUEUgaHRt
bD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyB1c2VGbGV4aWJsZVZpZXdwb3J0PXRydWUgZXhw
ZXJpbWVudGFsOkFzeW5jQ2xpcGJvYXJkQVBJRW5hYmxlZD10cnVlIF0gLS0+Cis8aHRtbD4KKyAg
ICA8bWV0YSBjaGFyc2V0PSJ1dGY4Ij4KKyAgICA8aGVhZD4KKyAgICAgICAgPG1ldGEgbmFtZT0i
dmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xLCB1
c2VyLXNjYWxhYmxlPW5vIj4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0iLi9yZXNvdXJj
ZXMvYXN5bmMtY2xpcGJvYXJkLWhlbHBlcnMuanMiPjwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAg
ICA8c2NyaXB0PgorICAgICAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICBhc3lu
YyBmdW5jdGlvbiBydW5UZXN0KCkgeworICAgICAgICAgICAgZGVzY3JpcHRpb24oIlRoaXMgdGVz
dCB2ZXJpZmllcyB0aGF0IGlmIHBsYXRmb3JtIHBhc3RlYm9hcmQgY29udGVudHMgYXJlIGNoYW5n
ZWQgYmVmb3JlIHJlYWRpbmcgZnJvbSBhIENsaXBib2FyZEl0ZW0sIHRoZSBuZXcgY29udGVudHMg
b2YgdGhlIHBhc3RlYm9hcmQgc2hvdWxkIG5vdCBiZSBleHBvc2VkIHRvIHRoZSBwYWdlIGFuZCB0
aGUgcmVzdWx0IG9mIGdldFR5cGUoKSBzaG91bGQgYmUgcmVqZWN0ZWQuIFRoaXMgdGVzdCByZXF1
aXJlcyBXZWJLaXRUZXN0UnVubmVyLiIpOworCisgICAgICAgICAgICBhd2FpdCBVSUhlbHBlci5j
b3B5VGV4dCgiRm9vIik7CisgICAgICAgICAgICBpdGVtcyA9IGF3YWl0IG5hdmlnYXRvci5jbGlw
Ym9hcmQucmVhZCgpOworICAgICAgICAgICAgc2hvdWxkQmUoIml0ZW1zLmxlbmd0aCIsICIxIik7
CisgICAgICAgICAgICBhd2FpdCBVSUhlbHBlci5jb3B5VGV4dCgiQmFyIik7CisgICAgICAgICAg
ICB0cnkgeworICAgICAgICAgICAgICAgIGNvbnN0IHRleHRCbG9iID0gYXdhaXQgaXRlbXNbMF0u
Z2V0VHlwZSgidGV4dC9wbGFpbiIpOworICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoYERpZCBu
b3QgaGFuZGxlIGV4Y2VwdGlvbiAoaW5zdGVhZCwgZ290IHRleHQ6ICIke2F3YWl0IGxvYWRUZXh0
KHRleHRCbG9iKX0iKWApOworICAgICAgICAgICAgfSBjYXRjaCAoZXhjZXB0aW9uKSB7CisgICAg
ICAgICAgICAgICAgdGVzdFBhc3NlZChgSGFuZGxlZCBleGNlcHRpb246ICR7ZXhjZXB0aW9uLm5h
bWV9YCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAg
ICAgfQorCisgICAgICAgIGFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBydW5UZXN0KTsKKyAgICA8
L3NjcmlwdD4KKyAgICA8Ym9keT48L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9lZGl0aW5nL2FzeW5jLWNsaXBib2FyZC9jbGlwYm9hcmQtaXRlbS1nZXQtdHlwZS1iYXNp
Yy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL2FzeW5jLWNsaXBib2FyZC9jbGlw
Ym9hcmQtaXRlbS1nZXQtdHlwZS1iYXNpYy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjE0NjNi
MGEzNDNlZGJjNTY1ZGZkYTE2NjVmZjU3ODE5ZTgxNGJmNAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2VkaXRpbmcvYXN5bmMtY2xpcGJvYXJkL2NsaXBib2FyZC1pdGVtLWdldC10eXBl
LWJhc2ljLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEzIEBACitUaGlzIHRlc3QgdmVyaWZpZXMg
dGhhdCBDbGlwYm9hcmRJdGVtLmdldFR5cGUoKSBjYW4gYmUgdXNlZCB0byBnZXQgY2xpcGJvYXJk
IGRhdGEgd3JpdHRlbiB1c2luZyBEYXRhVHJhbnNmZXIgQVBJcy4gVG8gdGVzdCBtYW51YWxseSwg
Y2xpY2sgdGhlIHRvcCBidXR0b24gdG8gd3JpdGUgdG8gdGhlIHBhc3RlYm9hcmQsIGFuZCB0aGVu
IGNsaWNrIHRoZSBib3R0b20gYnV0dG9uIHRvIHBhc3RlLgorCitPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCisKK1BBU1MgaXRlbXMubGVuZ3RoIGlzIDEKK1BBU1MgaXRlbS50eXBlcy5sZW5ndGgg
aXMgMworUEFTUyB0ZXh0IGlzICJBcHBsZSwgSW5jLiIKK1BBU1MgdXJsIGlzICJodHRwczovL3d3
dy5hcHBsZS5jb20vIgorUEFTUyBkb2MucXVlcnlTZWxlY3RvcignYScpLmhyZWYgaXMgImh0dHBz
Oi8vd3d3LmFwcGxlLmNvbS8iCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9hc3luYy1jbGlw
Ym9hcmQvY2xpcGJvYXJkLWl0ZW0tZ2V0LXR5cGUtYmFzaWMuaHRtbCBiL0xheW91dFRlc3RzL2Vk
aXRpbmcvYXN5bmMtY2xpcGJvYXJkL2NsaXBib2FyZC1pdGVtLWdldC10eXBlLWJhc2ljLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMTM1Y2M1M2ZlYzc5YTNmZjQ1MGQ3ODMyNjg2ZWVlNjA1ZDg4NGE4NwotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvYXN5bmMtY2xpcGJvYXJkL2NsaXBi
b2FyZC1pdGVtLWdldC10eXBlLWJhc2ljLmh0bWwKQEAgLTAsMCArMSw2NSBAQAorPCFET0NUWVBF
IGh0bWw+IDwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgdXNlRmxleGlibGVWaWV3cG9ydD10cnVl
IGV4cGVyaW1lbnRhbDpBc3luY0NsaXBib2FyZEFQSUVuYWJsZWQ9dHJ1ZSBdIC0tPgorPGh0bWw+
CisgICAgPG1ldGEgY2hhcnNldD0idXRmOCI+CisgICAgPGhlYWQ+CisgICAgICAgIDxtZXRhIG5h
bWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9
MSwgdXNlci1zY2FsYWJsZT1ubyI+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNv
dXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4vcmVz
b3VyY2VzL2FzeW5jLWNsaXBib2FyZC1oZWxwZXJzLmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHN0
eWxlPgorICAgICAgICAgICAgYnV0dG9uIHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTsK
KyAgICAgICAgICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAgICAgICAgICAgfQorICAgICAgICA8
L3N0eWxlPgorICAgIDwvaGVhZD4KKyAgICA8c2NyaXB0PgorICAgICAgICBqc1Rlc3RJc0FzeW5j
ID0gdHJ1ZTsKKworICAgICAgICBhc3luYyBmdW5jdGlvbiBydW5UZXN0KCkgeworICAgICAgICAg
ICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IENsaXBib2FyZEl0ZW0uZ2V0
VHlwZSgpIGNhbiBiZSB1c2VkIHRvIGdldCBjbGlwYm9hcmQgZGF0YSB3cml0dGVuIHVzaW5nIERh
dGFUcmFuc2ZlciBBUElzLiBUbyB0ZXN0IG1hbnVhbGx5LCBjbGljayB0aGUgdG9wIGJ1dHRvbiB0
byB3cml0ZSB0byB0aGUgcGFzdGVib2FyZCwgYW5kIHRoZW4gY2xpY2sgdGhlIGJvdHRvbSBidXR0
b24gdG8gcGFzdGUuIik7CisKKyAgICAgICAgICAgIGNvbnN0IGNvcHlCdXR0b24gPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgiY29weSIpOworICAgICAgICAgICAgY29uc3QgcGFzdGVCdXR0b24g
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGFzdGUiKTsKKworICAgICAgICAgICAgY29weUJ1
dHRvbi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsICgpID0+IHsKKyAgICAgICAgICAgICAgICB3
cml0ZVRvQ2xpcGJvYXJkVXNpbmdEYXRhVHJhbnNmZXIoeworICAgICAgICAgICAgICAgICAgICAi
dGV4dC9odG1sIiA6ICI8YSBocmVmPSdodHRwczovL3d3dy5hcHBsZS5jb20vJz5BcHBsZTwvYT4i
LAorICAgICAgICAgICAgICAgICAgICAidGV4dC91cmktbGlzdCIgOiAiaHR0cHM6Ly93d3cuYXBw
bGUuY29tLyIsCisgICAgICAgICAgICAgICAgICAgICJ0ZXh0L3BsYWluIiA6ICJBcHBsZSwgSW5j
LiIKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0sIHsgb25jZTogdHJ1ZSB9KTsK
KworICAgICAgICAgICAgcGFzdGVCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBhc3lu
YyAoKSA9PiB7CisgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgaXRl
bXMgPSBhd2FpdCBuYXZpZ2F0b3IuY2xpcGJvYXJkLnJlYWQoKTsKKyAgICAgICAgICAgICAgICAg
ICAgc2hvdWxkQmUoIml0ZW1zLmxlbmd0aCIsICIxIik7CisgICAgICAgICAgICAgICAgICAgIGl0
ZW0gPSBpdGVtc1swXTsKKyAgICAgICAgICAgICAgICAgICAgc2hvdWxkQmUoIml0ZW0udHlwZXMu
bGVuZ3RoIiwgIjMiKTsKKyAgICAgICAgICAgICAgICAgICAgdGV4dCA9IGF3YWl0IGxvYWRUZXh0
KGF3YWl0IGl0ZW0uZ2V0VHlwZSgidGV4dC9wbGFpbiIpKTsKKyAgICAgICAgICAgICAgICAgICAg
dXJsID0gYXdhaXQgbG9hZFRleHQoYXdhaXQgaXRlbS5nZXRUeXBlKCJ0ZXh0L3VyaS1saXN0Iikp
OworICAgICAgICAgICAgICAgICAgICBkb2MgPSBhd2FpdCBsb2FkRG9jdW1lbnQoYXdhaXQgaXRl
bS5nZXRUeXBlKCJ0ZXh0L2h0bWwiKSk7CisgICAgICAgICAgICAgICAgICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygidGV4dCIsICJBcHBsZSwgSW5jLiIpOworICAgICAgICAgICAgICAgICAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoInVybCIsICJodHRwczovL3d3dy5hcHBsZS5jb20vIik7Cisg
ICAgICAgICAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZG9jLnF1ZXJ5U2VsZWN0
b3IoJ2EnKS5ocmVmIiwgImh0dHBzOi8vd3d3LmFwcGxlLmNvbS8iKTsKKyAgICAgICAgICAgICAg
ICB9IGNhdGNoIChleGNlcHRpb24pIHsKKyAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZChg
Q2F1Z2h0IHVuZXhwZWN0ZWQgZXhjZXB0aW9uOiAke2V4Y2VwdGlvbi5uYW1lfWApOworICAgICAg
ICAgICAgICAgIH0gZmluYWxseSB7CisgICAgICAgICAgICAgICAgICAgIFtjb3B5QnV0dG9uLCBw
YXN0ZUJ1dHRvbl0ubWFwKGJ1dHRvbiA9PiBidXR0b24ucmVtb3ZlKCkpOworICAgICAgICAgICAg
ICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9
LCB7IG9uY2U6IHRydWUgfSk7CisKKyAgICAgICAgICAgIGF3YWl0IFVJSGVscGVyLmFjdGl2YXRl
RWxlbWVudChjb3B5QnV0dG9uKTsKKyAgICAgICAgICAgIGF3YWl0IFVJSGVscGVyLmFjdGl2YXRl
RWxlbWVudChwYXN0ZUJ1dHRvbik7CisgICAgICAgIH0KKworICAgICAgICBhZGRFdmVudExpc3Rl
bmVyKCJsb2FkIiwgcnVuVGVzdCk7CisgICAgPC9zY3JpcHQ+CisgICAgPGJvZHk+CisgICAgICAg
IDxidXR0b24gaWQ9ImNvcHkiPkNsaWNrIGhlcmUgdG8gY29weTwvYnV0dG9uPgorICAgICAgICA8
YnV0dG9uIGlkPSJwYXN0ZSI+Q2xpY2sgaGVyZSB0byBwYXN0ZTwvYnV0dG9uPgorICAgICAgICA8
ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+CisgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRp
bmcvYXN5bmMtY2xpcGJvYXJkL3Jlc291cmNlcy9hc3luYy1jbGlwYm9hcmQtaGVscGVycy5qcyBi
L0xheW91dFRlc3RzL2VkaXRpbmcvYXN5bmMtY2xpcGJvYXJkL3Jlc291cmNlcy9hc3luYy1jbGlw
Ym9hcmQtaGVscGVycy5qcwppbmRleCA5ZjQ4YjYwOTY5NmRiOGI4MjBkNmMxZmRjOGJhMWE3MTBh
YmVmN2E3Li41NzY0N2M5NTFmNDc1ODk1ZDNhNDlhNjYyMDRmZjYxMzBhMGY1MGI4IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9lZGl0aW5nL2FzeW5jLWNsaXBib2FyZC9yZXNvdXJjZXMvYXN5bmMt
Y2xpcGJvYXJkLWhlbHBlcnMuanMKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9hc3luYy1jbGlw
Ym9hcmQvcmVzb3VyY2VzL2FzeW5jLWNsaXBib2FyZC1oZWxwZXJzLmpzCkBAIC0zMCw2ICszMCwx
MiBAQCBmdW5jdGlvbiBsb2FkSW1hZ2UoYmxvYikgewogICAgIH0pOwogfQogCitmdW5jdGlvbiBs
b2FkRG9jdW1lbnQoYmxvYikgeworICAgIHJldHVybiBuZXcgUHJvbWlzZShhc3luYyByZXNvbHZl
ID0+IHsKKyAgICAgICAgcmVzb2x2ZShuZXcgRE9NUGFyc2VyKCkucGFyc2VGcm9tU3RyaW5nKGF3
YWl0IGxvYWRUZXh0KGJsb2IpLCAidGV4dC9odG1sIikpOworICAgIH0pOworfQorCiBmdW5jdGlv
biB3cml0ZVRvQ2xpcGJvYXJkVXNpbmdEYXRhVHJhbnNmZXIoZGF0YSkgewogICAgIGNvbnN0IGlu
cHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTsKICAgICBkb2N1bWVudC5ib2R5
LmFwcGVuZENoaWxkKGlucHV0KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dp
bi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3Rh
dGlvbnMKaW5kZXggYzkyNDFkZTZiZWFlMTlmNmI0OWMwZjc3NDVjOWEwZmY4N2Y0MWI0MS4uOTdh
Njg4Yjk1YmRmZWUyNDY4ZjNjMzc4NGNmZDQ3OGM2M2ExZGYyZSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTExOTEsNiArMTE5MSw4IEBAIGh0dHAvdGVz
dHMvc2VjdXJpdHkvY2xpcGJvYXJkL2NvcHktcGFzdGUtaHRtbC1hY3Jvc3Mtb3JpZ2luLXN0cmlw
cy1tc28tbGlzdC5odG1sCiAKIHdlYmtpdC5vcmcvYi8yMDMxMDAgZWRpdGluZy9hc3luYy1jbGlw
Ym9hcmQvY2xpcGJvYXJkLXJlYWQtYmFzaWMuaHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzIw
MzEwMCBlZGl0aW5nL2FzeW5jLWNsaXBib2FyZC9jbGlwYm9hcmQtY2hhbmdlLWRhdGEtd2hpbGUt
cmVhZGluZy5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMjAzMTAwIGVkaXRpbmcvYXN5bmMt
Y2xpcGJvYXJkL2NsaXBib2FyZC1jaGFuZ2UtZGF0YS13aGlsZS1nZXR0aW5nLXR5cGUuaHRtbCBb
IFNraXAgXQord2Via2l0Lm9yZy9iLzIwMzEwMCBlZGl0aW5nL2FzeW5jLWNsaXBib2FyZC9jbGlw
Ym9hcmQtaXRlbS1nZXQtdHlwZS1iYXNpYy5odG1sIFsgU2tpcCBdCiAKIHdlYmtpdC5vcmcvYi8x
NDA3ODMgWyBSZWxlYXNlIF0gZWRpdGluZy9wYXN0ZWJvYXJkL2NvcHktc3RhbmRhbG9uZS1pbWFn
ZS5odG1sIFsgRmFpbHVyZSBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xNDA3ODMg
WyBEZWJ1ZyBdIGVkaXRpbmcvcGFzdGVib2FyZC9jb3B5LXN0YW5kYWxvbmUtaW1hZ2UuaHRtbCBb
IFNraXAgXSAjIERlYnVnIEFzc2VydGlvbgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcmVzb3Vy
Y2VzL3VpLWhlbHBlci5qcyBiL0xheW91dFRlc3RzL3Jlc291cmNlcy91aS1oZWxwZXIuanMKaW5k
ZXggYzAxMDYxMmQwZDlmNzM1NjhmYmJkZTQ2Y2UxZTVmMDNmMTFiYTI4YS4uM2NjMDkzMTJhODUw
NzQxNzdjZjEwNTczZDg0NWQzMTkxZGJjNzg4MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcmVz
b3VyY2VzL3VpLWhlbHBlci5qcworKysgYi9MYXlvdXRUZXN0cy9yZXNvdXJjZXMvdWktaGVscGVy
LmpzCkBAIC0xMDM2LDQgKzEwMzYsOSBAQCB3aW5kb3cuVUlIZWxwZXIgPSBjbGFzcyBVSUhlbHBl
ciB7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CisKKyAgICBzdGF0
aWMgYXN5bmMgY29weVRleHQodGV4dCkgeworICAgICAgICBjb25zdCBjb3B5VGV4dFNjcmlwdCA9
IGB1aUNvbnRyb2xsZXIuY29weVRleHQoXGAke3RleHQucmVwbGFjZSgvYC9nLCAiXFxgIil9XGAp
KClgOworICAgICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB0ZXN0UnVubmVyLnJ1
blVJU2NyaXB0KGNvcHlUZXh0U2NyaXB0LCByZXNvbHZlKSk7CisgICAgfQogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>381419</attachid>
            <date>2019-10-21 11:07:44 -0700</date>
            <delta_ts>2019-10-21 13:20:01 -0700</delta_ts>
            <desc>Fix &amp; new layout test</desc>
            <filename>bug-203168-20191021110743.patch</filename>
            <type>text/plain</type>
            <size>52551</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxMzMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmNiMTdlNzNhMTFlYTIw
MTBlZTI4ZTkyMmRiYTFhNDM1NzFkZDYwNy4uYWZkNTA3YjA1M2EwMWFjMGRjMGZiODA2ZTI1N2My
NDQxZDg4M2EyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDE5LTEwLTE5ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtDbGlwYm9hcmQg
QVBJXSBJbXBsZW1lbnQgQ2xpcGJvYXJkSXRlbS5nZXRUeXBlKCkgZm9yIHBsYXRmb3JtIGNsaXBi
b2FyZCBpdGVtcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjAzMTY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVGltIEhvcnRvbi4KKworICAgICAgICBU
aGlzIHBhdGNoIGNvbXBsZXRlcyBzdXBwb3J0IGZvciBDbGlwYm9hcmRJdGVtLmdldFR5cGUoKS4K
KworICAgICAgICBUZXN0czogIGVkaXRpbmcvYXN5bmMtY2xpcGJvYXJkL2NsaXBib2FyZC1jaGFu
Z2UtZGF0YS13aGlsZS1nZXR0aW5nLXR5cGUuaHRtbAorICAgICAgICAgICAgICAgIGVkaXRpbmcv
YXN5bmMtY2xpcGJvYXJkL2NsaXBib2FyZC1nZXQtdHlwZS13aXRoLW9sZC1pdGVtcy5odG1sCisg
ICAgICAgICAgICAgICAgZWRpdGluZy9hc3luYy1jbGlwYm9hcmQvY2xpcGJvYXJkLWl0ZW0tZ2V0
LXR5cGUtYmFzaWMuaHRtbAorICAgICAgICAgICAgICAgIENsaXBib2FyZFRlc3RzLlJlYWRNdWx0
aXBsZUl0ZW1zCisKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkOjpnZXRUeXBlKToKKworICAgICAgICBJ
bXBsZW1lbnQgZ2V0VHlwZSgpLiBJZiB0aGUgZ2l2ZW4gY2xpcGJvYXJkIGl0ZW0gaXMgYmVpbmcg
dHJhY2tlZCBhcyBvbmUgb2YgdGhlIGFjdGl2ZSBjbGlwYm9hcmQgaXRlbXMsIHRoZW4KKyAgICAg
ICAgYWxsb3cgaXQgdG8gcmVhZCBkYXRhIGZyb20gdGhlIHBsYXRmb3JtIHBhc3RlYm9hcmQuIFdl
IHVzZSBleGlzdGluZyBwYXN0ZWJvYXJkIHJlYWRpbmcgbWV0aG9kcyBhbmQgY2xhc3NlcworICAg
ICAgICAoUGFzdGVib2FyZFBsYWluVGV4dCBhbmQgV2ViQ29udGVudE1hcmt1cFJlYWRlcikgdG8g
YXNrIHRoZSBwbGF0Zm9ybSBwYXN0ZWJvYXJkIGZvciB0ZXh0IGFuZCBtYXJrdXAgZGF0YSwKKyAg
ICAgICAgcmVzcGVjdGl2ZWx5LCBhbmQgZ28gdGhyb3VnaCByZWFkVVJMKCkgZm9yICJ0ZXh0L3Vy
aS1saXN0Ii4KKworICAgICAgICBCZWZvcmUgZXhwb3NpbmcgYW55IGRhdGEgdG8gdGhlIHBhZ2Us
IHdlIGFkZGl0aW9uYWxseSBjaGVjayB0aGF0IHRoZSBjaGFuZ2UgY291bnQgb2YgdGhlIHBhc3Rl
Ym9hcmQgaXMgc3RpbGwKKyAgICAgICAgd2hhdCB3ZSBzdGFydGVkIHdpdGggd2hlbiBzZXR0aW5n
IHVwIHRoZSBjdXJyZW50IHNlc3Npb24uIElmIHRoaXMgaXMgbm90IHRoZSBjYXNlLCB3ZSByZWpl
Y3QgdGhlIHByb21pc2UgYW5kCisgICAgICAgIGltbWVkaWF0ZWx5IGNsZWFyIG91dCB0aGUgc2Vz
c2lvbi4KKworICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkOjphY3RpdmVQYXN0ZWJvYXJkKToK
KyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmQuaDoKKyAgICAgICAg
KiBkb20vRGF0YVRyYW5zZmVyLmg6CisKKyAgICAgICAgRHJpdmUtYnkgdHdlYWs6IG1ha2UgdGhl
IFdlYkNvbnRlbnRSZWFkaW5nUG9saWN5IGVudW0gY2xhc3MgbmFycm93ZXIuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9QYXN0ZWJvYXJkLmg6CisKKyAgICAgICAgQWRkIGFuIGVudW0gZmxhZyBmb3Ig
YWxsb3dpbmcgb3IgaWdub3JpbmcgdGhlIHBsYXRmb3JtIFVSTCB0eXBlIHdoZW4gcmVhZGluZyBw
bGFpbiB0ZXh0IGZyb20gdGhlIHBsYXRmb3JtCisgICAgICAgIHBhc3RlYm9hcmQuIFdlIHVzZSB0
aGlzIGluIENsaXBib2FyZDo6Z2V0VHlwZSgpIHRvIGlnbm9yZSBVUkxzIG9uIHRoZSBwbGF0Zm9y
bSBwYXN0ZWJvYXJkIHdoZW4gcGxhaW4gdGV4dCwgc2luY2UKKyAgICAgICAgdGhlIHBsYWluIHRl
eHQgcmVhZGVyIHdvdWxkIG90aGVyd2lzZSBwcmVmZXIgVVJMcyBvdmVyIHBsYWluIHRleHQgYnkg
ZGVmYXVsdCwgYW5kIHJlYWQgdGhlIFVSTCB0eXBlIGluc3RlYWQgb2YKKyAgICAgICAgdGhlIHBs
YWluIHRleHQgdHlwZS4KKworICAgICAgICAqIHBsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpQYXN0ZWJvYXJkOjpyZWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUGFzdGVib2Fy
ZElPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWQpOgorICAgICAgICAq
IHBsYXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJkTGliV1BFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlBhc3RlYm9hcmQ6OnJlYWQpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFj
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZCk6CisgICAgICAgICogcGxh
dGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2Fy
ZDo6cmVhZCk6CisKIDIwMTktMTAtMjAgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4K
IAogICAgICAgICBbTEZDXVtJRkNdIE1ha2UgSW5saW5lVGV4dEl0ZW0gcmV1c2FibGUgd2hlbiAn
c2VnbWVudCBicmVhaycgYmVoYXZpb3IgY2hhbmdlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZC5jcHAKaW5kZXggYWNjNTgxNDA2NmNk
MmEyZThlMGM1ZDU1NDA3YmZhNTg0ZWQyY2MyNy4uYjgxNDAwZGYyMTI3MzBlNTJhMGYwNThmYTVh
YmJlYjAzMDU0ZWNmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1j
bGlwYm9hcmQvQ2xpcGJvYXJkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5j
LWNsaXBib2FyZC9DbGlwYm9hcmQuY3BwCkBAIC0zNCw2ICszNCw4IEBACiAjaW5jbHVkZSAiSlNE
T01Qcm9taXNlRGVmZXJyZWQuaCIKICNpbmNsdWRlICJOYXZpZ2F0b3IuaCIKICNpbmNsdWRlICJQ
YXN0ZWJvYXJkLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCisjaW5jbHVkZSAiV2ViQ29u
dGVudFJlYWRlci5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKQEAgLTEyNiw5ICsxMjgsNjQgQEAgdm9pZCBDbGlwYm9hcmQ6OnJlYWQo
UmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogCiB2b2lkIENsaXBib2FyZDo6Z2V0VHlw
ZShDbGlwYm9hcmRJdGVtJiBpdGVtLCBjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxEZWZlcnJlZFBy
b21pc2U+JiYgcHJvbWlzZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oaXRlbSk7Ci0gICAgVU5VU0VE
X1BBUkFNKHR5cGUpOwotICAgIHByb21pc2UtPnJlamVjdChOb3RTdXBwb3J0ZWRFcnJvcik7Cisg
ICAgaWYgKCFtX2FjdGl2ZVNlc3Npb24pIHsKKyAgICAgICAgcHJvbWlzZS0+cmVqZWN0KE5vdEFs
bG93ZWRFcnJvcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGZyYW1lID0g
bWFrZVJlZlB0cih0aGlzLT5mcmFtZSgpKTsKKyAgICBpZiAoIWZyYW1lKSB7CisgICAgICAgIG1f
YWN0aXZlU2Vzc2lvbiA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcHJvbWlzZS0+cmVqZWN0KE5v
dEFsbG93ZWRFcnJvcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGl0ZW1J
bmRleCA9IG1fYWN0aXZlU2Vzc2lvbi0+aXRlbXMuZmluZE1hdGNoaW5nKFsmXSAoYXV0byYgYWN0
aXZlSXRlbSkgeworICAgICAgICByZXR1cm4gYWN0aXZlSXRlbS5wdHIoKSA9PSAmaXRlbTsKKyAg
ICB9KTsKKworICAgIGlmIChpdGVtSW5kZXggPT0gbm90Rm91bmQpIHsKKyAgICAgICAgcHJvbWlz
ZS0+cmVqZWN0KE5vdEFsbG93ZWRFcnJvcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBpZiAoIWl0ZW0udHlwZXMoKS5jb250YWlucyh0eXBlKSkgeworICAgICAgICBwcm9taXNlLT5y
ZWplY3QoTm90QWxsb3dlZEVycm9yKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFN0
cmluZyByZXN1bHRBc1N0cmluZzsKKworICAgIGlmICh0eXBlID09ICJ0ZXh0L3VyaS1saXN0Il9z
KSB7CisgICAgICAgIFN0cmluZyB0aXRsZTsKKyAgICAgICAgcmVzdWx0QXNTdHJpbmcgPSBhY3Rp
dmVQYXN0ZWJvYXJkKCkucmVhZFVSTChpdGVtSW5kZXgsIHRpdGxlKS5zdHJpbmcoKTsKKyAgICB9
CisKKyAgICBpZiAodHlwZSA9PSAidGV4dC9wbGFpbiJfcykgeworICAgICAgICBQYXN0ZWJvYXJk
UGxhaW5UZXh0IHBsYWluVGV4dFJlYWRlcjsKKyAgICAgICAgYWN0aXZlUGFzdGVib2FyZCgpLnJl
YWQocGxhaW5UZXh0UmVhZGVyLCBQbGFpblRleHRVUkxSZWFkaW5nUG9saWN5OjpJZ25vcmVVUkws
IGl0ZW1JbmRleCk7CisgICAgICAgIHJlc3VsdEFzU3RyaW5nID0gV1RGTW92ZShwbGFpblRleHRS
ZWFkZXIudGV4dCk7CisgICAgfQorCisgICAgaWYgKHR5cGUgPT0gInRleHQvaHRtbCJfcykgewor
ICAgICAgICBXZWJDb250ZW50TWFya3VwUmVhZGVyIG1hcmt1cFJlYWRlciB7ICpmcmFtZSB9Owor
ICAgICAgICBhY3RpdmVQYXN0ZWJvYXJkKCkucmVhZChtYXJrdXBSZWFkZXIsIFdlYkNvbnRlbnRS
ZWFkaW5nUG9saWN5OjpPbmx5UmljaFRleHRUeXBlcywgaXRlbUluZGV4KTsKKyAgICAgICAgcmVz
dWx0QXNTdHJpbmcgPSBXVEZNb3ZlKG1hcmt1cFJlYWRlci5tYXJrdXApOworICAgIH0KKworICAg
IC8vIEZJWE1FOiBTdXBwb3J0IHJlYWRpbmcgImltYWdlL3BuZyIgYXMgd2VsbCBhcyBjdXN0b20g
ZGF0YS4KKyAgICAvLyBGSVhNRTogSW5zdGVhZCBvZiBjaGVja2luZyBjaGFuZ2VDb3VudCBoZXJl
LCB3ZSBzaG91bGQgc2VuZCB0aGUgY2hhbmdlQ291bnQgb3ZlciB0byB0aGUgVUkgcHJvY2VzcyB0
byBiZSB2ZXR0ZWQKKyAgICAvLyB3aGVuIGF0dGVtcHRpbmcgdG8gcmVhZCB0aGUgZGF0YSBpbiB0
aGUgZmlyc3QgcGxhY2UuCisgICAgaWYgKG1fYWN0aXZlU2Vzc2lvbi0+Y2hhbmdlQ291bnQgIT0g
YWN0aXZlUGFzdGVib2FyZCgpLmNoYW5nZUNvdW50KCkpIHsKKyAgICAgICAgbV9hY3RpdmVTZXNz
aW9uID0gV1RGOjpudWxsb3B0OworICAgICAgICBwcm9taXNlLT5yZWplY3QoTm90QWxsb3dlZEVy
cm9yKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghcmVzdWx0QXNTdHJpbmcu
aXNOdWxsKCkpCisgICAgICAgIHByb21pc2UtPnJlc29sdmU8SURMSW50ZXJmYWNlPEJsb2I+PihD
bGlwYm9hcmRJdGVtOjpibG9iRnJvbVN0cmluZyhyZXN1bHRBc1N0cmluZywgdHlwZSkpOworICAg
IGVsc2UKKyAgICAgICAgcHJvbWlzZS0+cmVqZWN0KE5vdEFsbG93ZWRFcnJvcik7CiB9CiAKIHZv
aWQgQ2xpcGJvYXJkOjp3cml0ZShjb25zdCBWZWN0b3I8UmVmUHRyPENsaXBib2FyZEl0ZW0+PiYg
aXRlbXMsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKQEAgLTE0Miw0ICsxOTksMTEg
QEAgRnJhbWUqIENsaXBib2FyZDo6ZnJhbWUoKSBjb25zdAogICAgIHJldHVybiBtX25hdmlnYXRv
ciA/IG1fbmF2aWdhdG9yLT5mcmFtZSgpIDogbnVsbHB0cjsKIH0KIAorUGFzdGVib2FyZCYgQ2xp
cGJvYXJkOjphY3RpdmVQYXN0ZWJvYXJkKCkKK3sKKyAgICBBU1NFUlQobV9hY3RpdmVTZXNzaW9u
KTsKKyAgICBBU1NFUlQobV9hY3RpdmVTZXNzaW9uLT5wYXN0ZWJvYXJkKTsKKyAgICByZXR1cm4g
Km1fYWN0aXZlU2Vzc2lvbi0+cGFzdGVib2FyZDsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmQuaAppbmRleCAyMTczMTRiZDM2
ZThlZTVmZTQwMGU4YTIzNGE3ODY1OTkyNmFhZWI5Li44N2FlNTdhYzg0MGU3N2EwN2U3ZTkxZjYw
MTMxMzJhMDM1NjJjMTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5j
LWNsaXBib2FyZC9DbGlwYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5j
LWNsaXBib2FyZC9DbGlwYm9hcmQuaApAQCAtNzMsNiArNzMsOCBAQCBwcml2YXRlOgogICAgIHZv
aWQgcmVmRXZlbnRUYXJnZXQoKSBmaW5hbCB7IHJlZigpOyB9CiAgICAgdm9pZCBkZXJlZkV2ZW50
VGFyZ2V0KCkgZmluYWwgeyBkZXJlZigpOyB9CiAKKyAgICBQYXN0ZWJvYXJkJiBhY3RpdmVQYXN0
ZWJvYXJkKCk7CisKICAgICBPcHRpb25hbDxTZXNzaW9uPiBtX2FjdGl2ZVNlc3Npb247CiAgICAg
V2Vha1B0cjxOYXZpZ2F0b3I+IG1fbmF2aWdhdG9yOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNm
ZXIuaAppbmRleCA2NTA3OTNjZjg2YjFhMWRmZDQxOWI5YjMzMzU5OTNhZDk1NjgwNGYxLi5lNWNm
YWY4NTZmYjI4ODNmYzE1NGRkYzg4YjBkNzcyM2JjOTg4YjA0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFU
cmFuc2Zlci5oCkBAIC0zOSw3ICszOSw3IEBAIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBGaWxlTGlz
dDsKIGNsYXNzIEZpbGU7CiBjbGFzcyBQYXN0ZWJvYXJkOwotZW51bSBjbGFzcyBXZWJDb250ZW50
UmVhZGluZ1BvbGljeTsKK2VudW0gY2xhc3MgV2ViQ29udGVudFJlYWRpbmdQb2xpY3kgOiBib29s
OwogCiBjbGFzcyBEYXRhVHJhbnNmZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxEYXRhVHJhbnNmZXI+
IHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9h
cmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaAppbmRleCAzMTQxMzI1
Y2IyZTI0MTM4YmM0NjQ1MTJiMGE0MjlkOTAzYWM5MDI0Li4zYmNkZDgyMzVjM2RhMTk1N2UxM2Yy
NDk0YmE5ZmRjNGNkZTFlY2VhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
YXN0ZWJvYXJkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCkBA
IC02NSw3ICs2NSw4IEBAIGNsYXNzIFJhbmdlOwogY2xhc3MgU2VsZWN0aW9uRGF0YTsKIGNsYXNz
IFNoYXJlZEJ1ZmZlcjsKIAotZW51bSBjbGFzcyBXZWJDb250ZW50UmVhZGluZ1BvbGljeSB7IEFu
eVR5cGUsIE9ubHlSaWNoVGV4dFR5cGVzIH07CitlbnVtIGNsYXNzIFBsYWluVGV4dFVSTFJlYWRp
bmdQb2xpY3kgOiBib29sIHsgSWdub3JlVVJMLCBBbGxvd1VSTCB9OworZW51bSBjbGFzcyBXZWJD
b250ZW50UmVhZGluZ1BvbGljeSA6IGJvb2wgeyBBbnlUeXBlLCBPbmx5UmljaFRleHRUeXBlcyB9
OwogZW51bSBTaG91bGRTZXJpYWxpemVTZWxlY3RlZFRleHRGb3JEYXRhVHJhbnNmZXIgeyBEZWZh
dWx0U2VsZWN0ZWRUZXh0VHlwZSwgSW5jbHVkZUltYWdlQWx0VGV4dEZvckRhdGFUcmFuc2ZlciB9
OwogCiAvLyBGb3Igd3JpdGluZyB0byB0aGUgcGFzdGVib2FyZC4gR2VuZXJhbGx5IHNvcnRlZCB3
aXRoIHRoZSByaWNoZXN0IGZvcm1hdHMgb24gdG9wLgpAQCAtMTk4LDcgKzE5OSw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXIoKTsKICAgICB2aXJ0dWFs
IFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXIoY29uc3QgU3RyaW5nJiB0eXBlKTsKIAotICAgIHZp
cnR1YWwgV0VCQ09SRV9FWFBPUlQgdm9pZCByZWFkKFBhc3RlYm9hcmRQbGFpblRleHQmLCBPcHRp
b25hbDxzaXplX3Q+IGl0ZW1JbmRleCA9IFdURjo6bnVsbG9wdCk7CisgICAgdmlydHVhbCBXRUJD
T1JFX0VYUE9SVCB2b2lkIHJlYWQoUGFzdGVib2FyZFBsYWluVGV4dCYsIFBsYWluVGV4dFVSTFJl
YWRpbmdQb2xpY3kgPSBQbGFpblRleHRVUkxSZWFkaW5nUG9saWN5OjpBbGxvd1VSTCwgT3B0aW9u
YWw8c2l6ZV90PiBpdGVtSW5kZXggPSBXVEY6Om51bGxvcHQpOwogICAgIHZpcnR1YWwgV0VCQ09S
RV9FWFBPUlQgdm9pZCByZWFkKFBhc3RlYm9hcmRXZWJDb250ZW50UmVhZGVyJiwgV2ViQ29udGVu
dFJlYWRpbmdQb2xpY3kgPSBXZWJDb250ZW50UmVhZGluZ1BvbGljeTo6QW55VHlwZSwgT3B0aW9u
YWw8c2l6ZV90PiBpdGVtSW5kZXggPSBXVEY6Om51bGxvcHQpOwogICAgIHZpcnR1YWwgV0VCQ09S
RV9FWFBPUlQgdm9pZCByZWFkKFBhc3RlYm9hcmRGaWxlUmVhZGVyJik7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuaAppbmRleCAwZTc2NGVhYzQ0NGM2NjEyYjg4
YmNkYTgzNTdmYTEwNWNjZDM5ZDJiLi5hNmQ1MGQ4YWI3ZmE0Nzc5ZDU2OGZhOWE4ZmNiMjRlYWY4
N2Q0MDM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TdGF0aWNQYXN0ZWJv
YXJkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5oCkBA
IC01Niw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFyKCkgZmluYWw7CiAgICAgdm9p
ZCBjbGVhcihjb25zdCBTdHJpbmcmIHR5cGUpIGZpbmFsOwogCi0gICAgdm9pZCByZWFkKFBhc3Rl
Ym9hcmRQbGFpblRleHQmLCBPcHRpb25hbDxzaXplX3Q+ID0gV1RGOjpudWxsb3B0KSBmaW5hbCB7
IH0KKyAgICB2b2lkIHJlYWQoUGFzdGVib2FyZFBsYWluVGV4dCYsIFBsYWluVGV4dFVSTFJlYWRp
bmdQb2xpY3kgPSBQbGFpblRleHRVUkxSZWFkaW5nUG9saWN5OjpBbGxvd1VSTCwgT3B0aW9uYWw8
c2l6ZV90PiA9IFdURjo6bnVsbG9wdCkgZmluYWwgeyB9CiAgICAgdm9pZCByZWFkKFBhc3RlYm9h
cmRXZWJDb250ZW50UmVhZGVyJiwgV2ViQ29udGVudFJlYWRpbmdQb2xpY3ksIE9wdGlvbmFsPHNp
emVfdD4gPSBXVEY6Om51bGxvcHQpIGZpbmFsIHsgfQogCiAgICAgdm9pZCB3cml0ZShjb25zdCBQ
YXN0ZWJvYXJkVVJMJikgZmluYWwgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
UGFzdGVib2FyZEd0ay5jcHAKaW5kZXggZWM5N2YxM2NiNDNiZTg5OWJlOWQxZGRhMTliODc2NDBi
MDY3NGNhYy4uMjA2NzgyMDc1ZGZjYTYyZjhmNTk4ZTFiZDRhZjc1MjY1ZGZmYTcyNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcApAQCAtMjMyLDcg
KzIzMiw3IEBAIHZvaWQgUGFzdGVib2FyZDo6c2V0RHJhZ0ltYWdlKERyYWdJbWFnZSwgY29uc3Qg
SW50UG9pbnQmKQogfQogI2VuZGlmCiAKLXZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJk
UGxhaW5UZXh0JiB0ZXh0LCBPcHRpb25hbDxzaXplX3Q+KQordm9pZCBQYXN0ZWJvYXJkOjpyZWFk
KFBhc3RlYm9hcmRQbGFpblRleHQmIHRleHQsIFBsYWluVGV4dFVSTFJlYWRpbmdQb2xpY3ksIE9w
dGlvbmFsPHNpemVfdD4pCiB7CiAgICAgcmVhZEZyb21DbGlwYm9hcmQoKTsKICAgICB0ZXh0LnRl
eHQgPSBtX3NlbGVjdGlvbkRhdGEtPnRleHQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1Bhc3RlYm9hcmRJT1MubW0KaW5kZXggZjYyNzNmMGFlN2IzYTZhMmYwOTUwOGQxNDMwNGZi
YjBiYWRjOTFiZi4uMTAzMWU1MTdhZjZmODQ2M2JmYWQzMjY4ZDEzN2UxZGNhZTdiY2NiZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KQEAgLTE1MCwx
NyArMTUwLDI0IEBAIGJvb2wgUGFzdGVib2FyZDo6Y2FuU21hcnRSZXBsYWNlKCkKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotdm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRQbGFpblRleHQm
IHRleHQsIE9wdGlvbmFsPHNpemVfdD4gaXRlbUluZGV4KQordm9pZCBQYXN0ZWJvYXJkOjpyZWFk
KFBhc3RlYm9hcmRQbGFpblRleHQmIHRleHQsIFBsYWluVGV4dFVSTFJlYWRpbmdQb2xpY3kgYWxs
b3dVUkwsIE9wdGlvbmFsPHNpemVfdD4gaXRlbUluZGV4KQogewogICAgIGF1dG8gaXRlbUluZGV4
VG9RdWVyeSA9IGl0ZW1JbmRleC52YWx1ZU9yKDApOwogCiAgICAgUGFzdGVib2FyZFN0cmF0ZWd5
JiBzdHJhdGVneSA9ICpwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCk7
Ci0gICAgdGV4dC50ZXh0ID0gc3RyYXRlZ3kucmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKGl0ZW1J
bmRleFRvUXVlcnksIGtVVFR5cGVVUkwsIG1fcGFzdGVib2FyZE5hbWUpOwotICAgIGlmICghdGV4
dC50ZXh0LmlzRW1wdHkoKSkgewotICAgICAgICB0ZXh0LmlzVVJMID0gdHJ1ZTsKLSAgICAgICAg
cmV0dXJuOworCisgICAgaWYgKGFsbG93VVJMID09IFBsYWluVGV4dFVSTFJlYWRpbmdQb2xpY3k6
OkFsbG93VVJMKSB7CisgICAgICAgIHRleHQudGV4dCA9IHN0cmF0ZWd5LnJlYWRTdHJpbmdGcm9t
UGFzdGVib2FyZChpdGVtSW5kZXhUb1F1ZXJ5LCBrVVRUeXBlVVJMLCBtX3Bhc3RlYm9hcmROYW1l
KTsKKyAgICAgICAgaWYgKCF0ZXh0LnRleHQuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICB0ZXh0
LmlzVVJMID0gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQogICAgIH0KIAor
ICAgIC8vIFdlIGFzayBmb3IgdGhlICJwdWJsaWMudGV4dCIgcmVwcmVzZW50YXRpb24gb25seSBh
cyBhIGxlZ2FjeSBmYWxsYmFjaywgaW4gY2FzZSBhcHBzIHN0aWxsIGRpcmVjdGx5IHdyaXRlCisg
ICAgLy8gcGxhaW4gdGV4dCBmb3IgdGhpcyBhYnN0cmFjdCBVVEkuIEluIGFsbW9zdCBhbGwgY2Fz
ZXMsIHRoZSBtb3JlIGNvcnJlY3QgY2hvaWNlIHdvdWxkIGJlIHRvIHdyaXRlIHRvCisgICAgLy8g
b25lIG9mIHRoZSBjb25jcmV0ZSAicHVibGljLnBsYWluLXRleHQiIHJlcHJlc2VudGF0aW9ucyAo
ZS5nLiBrVVRUeXBlVVRGOFBsYWluVGV4dCkuIEluIHRoZSBmdXR1cmUsIHdlCisgICAgLy8gc2hv
dWxkIGNvbnNpZGVyIHJlbW92aW5nIHN1cHBvcnQgZm9yIHJlYWRpbmcgcGxhaW4gdGV4dCBmcm9t
ICJwdWJsaWMudGV4dCIuCiAgICAgdGV4dC50ZXh0ID0gc3RyYXRlZ3kucmVhZFN0cmluZ0Zyb21Q
YXN0ZWJvYXJkKGl0ZW1JbmRleFRvUXVlcnksIGtVVFR5cGVQbGFpblRleHQsIG1fcGFzdGVib2Fy
ZE5hbWUpOwogICAgIGlmICh0ZXh0LnRleHQuaXNFbXB0eSgpKQogICAgICAgICB0ZXh0LnRleHQg
PSBzdHJhdGVneS5yZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoaXRlbUluZGV4VG9RdWVyeSwga1VU
VHlwZVRleHQsIG1fcGFzdGVib2FyZE5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbGlid3BlL1Bhc3RlYm9hcmRMaWJXUEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbGlid3BlL1Bhc3RlYm9hcmRMaWJXUEUuY3BwCmluZGV4IDdkNzgwMDk2MmQyNTZmZDk2
ODg2ZDkxMGM5YjE2OGE2ZjdlMGQ2MjYuLmI2MzBkZmI3ZDZlNWFhMGQzZmY3NTM5Y2Q4ZDBiOTJl
NTdlMTJhNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QYXN0
ZWJvYXJkTGliV1BFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9saWJ3cGUvUGFz
dGVib2FyZExpYldQRS5jcHAKQEAgLTk1LDcgKzk1LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjpjbGVh
cihjb25zdCBTdHJpbmcmKQogewogfQogCi12b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2Fy
ZFBsYWluVGV4dCYgdGV4dCwgT3B0aW9uYWw8c2l6ZV90PikKK3ZvaWQgUGFzdGVib2FyZDo6cmVh
ZChQYXN0ZWJvYXJkUGxhaW5UZXh0JiB0ZXh0LCBQbGFpblRleHRVUkxSZWFkaW5nUG9saWN5LCBP
cHRpb25hbDxzaXplX3Q+KQogewogICAgIHRleHQudGV4dCA9IHBsYXRmb3JtU3RyYXRlZ2llcygp
LT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+cmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKDAsICJ0ZXh0
L3BsYWluO2NoYXJzZXQ9dXRmLTgiLCBuYW1lKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQppbmRleCBhM2U0YjI5YjYyNThmN2Q5ZGFhOTUyNjg1
NTU4Y2NkNGNhNDM5MDZkLi44OGY0NGI2MjYzZjYwMTM5Njk0YTYzZmIwOTc4NTI5ZThjMjc5ZTc2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQpAQCAt
MzE4LDcgKzMxOCw3IEBAIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyQXRQ
cmVmZXJyZWRJdGVtSW5kZXgoY29uc3QgU3RyaW5nJiB0eXBlLCBPCiAgICAgcmV0dXJuIHN0cmF0
ZWd5LmJ1ZmZlckZvclR5cGUodHlwZSwgcGFzdGVib2FyZE5hbWUpOwogfQogCi12b2lkIFBhc3Rl
Ym9hcmQ6OnJlYWQoUGFzdGVib2FyZFBsYWluVGV4dCYgdGV4dCwgT3B0aW9uYWw8c2l6ZV90PiBp
dGVtSW5kZXgpCit2b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZFBsYWluVGV4dCYgdGV4
dCwgUGxhaW5UZXh0VVJMUmVhZGluZ1BvbGljeSBhbGxvd1VSTCwgT3B0aW9uYWw8c2l6ZV90PiBp
dGVtSW5kZXgpCiB7CiAgICAgYXV0byYgc3RyYXRlZ3kgPSAqcGxhdGZvcm1TdHJhdGVnaWVzKCkt
PnBhc3RlYm9hcmRTdHJhdGVneSgpOwogCkBAIC0zOTUsOCArMzk1LDEwIEBAIHZvaWQgUGFzdGVi
b2FyZDo6cmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0JiB0ZXh0LCBPcHRpb25hbDxzaXplX3Q+IGl0
ZW1JbmRleCkKICAgICB9CiAKICAgICAvLyBGSVhNRTogVGhlIGNvZGUgYWJvdmUgbG9va3MgYXQg
dGhlIHR5cGVzIHZlY3RvciBmaXJzdCwgYnV0IHRoaXMganVzdCBnZXRzIHRoZSBzdHJpbmcgd2l0
aG91dCBjaGVja2luZy4gV2h5IHRoZSBkaWZmZXJlbmNlPwotICAgIHRleHQudGV4dCA9IHJlYWRT
dHJpbmdBdFByZWZlcnJlZEl0ZW1JbmRleChsZWdhY3lVUkxQYXN0ZWJvYXJkVHlwZSgpLCBpdGVt
SW5kZXgsIHN0cmF0ZWd5LCBtX3Bhc3RlYm9hcmROYW1lKTsKLSAgICB0ZXh0LmlzVVJMID0gIXRl
eHQudGV4dC5pc051bGwoKTsKKyAgICBpZiAoYWxsb3dVUkwgPT0gUGxhaW5UZXh0VVJMUmVhZGlu
Z1BvbGljeTo6QWxsb3dVUkwpIHsKKyAgICAgICAgdGV4dC50ZXh0ID0gcmVhZFN0cmluZ0F0UHJl
ZmVycmVkSXRlbUluZGV4KGxlZ2FjeVVSTFBhc3RlYm9hcmRUeXBlKCksIGl0ZW1JbmRleCwgc3Ry
YXRlZ3ksIG1fcGFzdGVib2FyZE5hbWUpOworICAgICAgICB0ZXh0LmlzVVJMID0gIXRleHQudGV4
dC5pc051bGwoKTsKKyAgICB9CiB9CiAKIHZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJk
V2ViQ29udGVudFJlYWRlciYgcmVhZGVyLCBXZWJDb250ZW50UmVhZGluZ1BvbGljeSBwb2xpY3ks
IE9wdGlvbmFsPHNpemVfdD4gaXRlbUluZGV4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
d2luL1Bhc3RlYm9hcmRXaW4uY3BwCmluZGV4IDQ1YTM3Y2FjODNjYjI1YWUzZjFiOTRkYzExYzEw
ZjBlMjI2MDMzNDYuLjI4ZDg3M2M0NjEyZGJkY2U0MTc5YzNhMzhlZDBkYzBhNTBiODg3OGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKQEAgLTc4
OSw3ICs3ODksNyBAQCBib29sIFBhc3RlYm9hcmQ6OmNhblNtYXJ0UmVwbGFjZSgpCiAgICAgcmV0
dXJuIDo6SXNDbGlwYm9hcmRGb3JtYXRBdmFpbGFibGUoV2ViU21hcnRQYXN0ZUZvcm1hdCk7CiB9
CiAKLXZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0JiB0ZXh0LCBPcHRp
b25hbDxzaXplX3Q+KQordm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRQbGFpblRleHQm
IHRleHQsIFBsYWluVGV4dFVSTFJlYWRpbmdQb2xpY3ksIE9wdGlvbmFsPHNpemVfdD4pCiB7CiAg
ICAgaWYgKDo6SXNDbGlwYm9hcmRGb3JtYXRBdmFpbGFibGUoQ0ZfVU5JQ09ERVRFWFQpICYmIDo6
T3BlbkNsaXBib2FyZChtX293bmVyKSkgewogICAgICAgICBpZiAoSEFORExFIGNiRGF0YSA9IDo6
R2V0Q2xpcGJvYXJkRGF0YShDRl9VTklDT0RFVEVYVCkpIHsKZGlmZiAtLWdpdCBhL1Rvb2xzL0No
YW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAwODVkYjhiNjcwODhmNmJmYjQ0OTkwMTVm
ZDMyODdkOWY0OTMwMDdhLi44NjE3NWRmMmZhYTFlOGFkMzdmNjk1NDljNGNlODJjNGVhMGMxNmI0
IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNDUgQEAKKzIwMTktMTAtMTkgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBs
ZS5jb20+CisKKyAgICAgICAgW0NsaXBib2FyZCBBUEldIEltcGxlbWVudCBDbGlwYm9hcmRJdGVt
LmdldFR5cGUoKSBmb3IgcGxhdGZvcm0gY2xpcGJvYXJkIGl0ZW1zCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDMxNjgKKworICAgICAgICBSZXZpZXdl
ZCBieSBUaW0gSG9ydG9uLgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciB0aGUgbmV3IGxheW91
dCB0ZXN0cywgYXMgd2VsbCBhcyBhIG5ldyBBUEkgdGVzdC4KKworICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tOgorICAgICAgICAoV1RSOjpVSVNjcmlw
dENvbnRyb2xsZXJJT1M6OmNvcHlUZXh0KToKKworICAgICAgICBJbXBsZW1lbnQgVUlTY3JpcHRD
b250cm9sbGVyLmNvcHlUZXh0IGluIFdlYktpdDEuIFRoaXMgaXMgdXNlZCBpbiBvbmUgb2YgdGhl
IG5ldyBsYXlvdXQgdGVzdHMsIHdoaWNoIHBhc3NlcyBpbgorICAgICAgICBXZWJLaXQxIG9uIG1h
Y09TIGFuZCBpT1MuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRy
ZWVQYXN0ZWJvYXJkLm1tOgorICAgICAgICAoLVtMb2NhbFBhc3RlYm9hcmQgZGVjbGFyZVR5cGVz
Om93bmVyOl0pOgorICAgICAgICAoLVtMb2NhbFBhc3RlYm9hcmQgYWRkVHlwZXM6b3duZXI6XSk6
CisgICAgICAgICgtW0xvY2FsUGFzdGVib2FyZCBfYWRkVHlwZXNXaXRob3V0VXBkYXRpbmdDaGFu
Z2VDb3VudDpvd25lcjpdKToKKworICAgICAgICBBZGp1c3QgbG9naWMgd2hlbiBkZWNsYXJpbmcg
dHlwZXMgb24gdGhlIHBsYXRmb3JtIHBhc3RlYm9hcmQsIHN1Y2ggdGhhdCBpdCBiZWhhdmVzIG1v
cmUgbGlrZSB0aGUgcGxhdGZvcm07IHdoZW4KKyAgICAgICAgZGVjbGFyaW5nIHR5cGVzLCBldmVu
IGlmIHRoZSBvd25lciBkb2Vzbid0IGNoYW5nZSwgdGhlIGNoYW5nZSBjb3VudCBzaG91bGQgc3Rp
bGwgZ2V0IGJ1bXBlZCB1cCBieSAxLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL1VJ
U2NyaXB0Q29udHJvbGxlck1hYy5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9VSVNj
cmlwdENvbnRyb2xsZXJNYWMubW06CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlck1h
Yzo6Y29weVRleHQpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvQ2xpcGJvYXJkVGVzdHMubW06IEFkZGVkLgorICAgICAgICAoLVtUZXN0V0tXZWJW
aWV3IHJlYWRDbGlwYm9hcmRdKToKKyAgICAgICAgKGNyZWF0ZVdlYlZpZXdGb3JDbGlwYm9hcmRU
ZXN0cyk6CisgICAgICAgICh3cml0ZU11bHRpcGxlT2JqZWN0c1RvUGxhdGZvcm1QYXN0ZWJvYXJk
KToKKworICAgICAgICBBZGQgYSBuZXcgQVBJIHRlc3QgdG8gdmVyaWZ5IHRoYXQgY2xpcGJvYXJk
IGl0ZW1zIGNvbnRhaW4gdGhlIHJpZ2h0IGRhdGEgd2hlbiB3cml0aW5nIG11bHRpcGxlIGl0ZW1z
IChlYWNoIHdpdGgKKyAgICAgICAgZGlmZmVyZW50IHNldHMgb2YgdHlwZXMpIHRvIHRoZSBwbGF0
Zm9ybSBwYXN0ZWJvYXJkIHVzaW5nIG5hdGl2ZSBBUElzLgorCisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9jbGlwYm9hcmQuaHRtbDogQWRkZWQuCisgICAgICAgICog
V2ViS2l0VGVzdFJ1bm5lci9tYWMvV2ViS2l0VGVzdFJ1bm5lclBhc3RlYm9hcmQubW06CisgICAg
ICAgICgtW0xvY2FsUGFzdGVib2FyZCBkZWNsYXJlVHlwZXM6b3duZXI6XSk6CisgICAgICAgICgt
W0xvY2FsUGFzdGVib2FyZCBhZGRUeXBlczpvd25lcjpdKToKKyAgICAgICAgKC1bTG9jYWxQYXN0
ZWJvYXJkIF9hZGRUeXBlc1dpdGhvdXRVcGRhdGluZ0NoYW5nZUNvdW50Om93bmVyOl0pOgorCiAy
MDE5LTEwLTE4ICBKaWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CiAKICAgICAgICAg
W1dlYkF1dGhuXSBXYXJuIHVzZXJzIHdoZW4gbm8gY3JlZGVudGlhbHMgYXJlIGZvdW5kCmRpZmYg
LS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9TLmgg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9TLmgKaW5kZXgg
ODgxODFlOWFhYzVhYmEwZDhmMzhlZjJlNDIyZjg5N2EwODE2ZDM4Zi4uN2EyYTJlMDVjNTE5NTc5
MjU1Y2Q0OGU0Yjc3YTcxMjZhODBkZDNhMCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MuaApAQCAtNDksNiArNDksNyBAQCBwdWJsaWM6CiAg
ICAgZG91YmxlIG1pbmltdW1ab29tU2NhbGUoKSBjb25zdCBvdmVycmlkZTsKICAgICBkb3VibGUg
bWF4aW11bVpvb21TY2FsZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIEpTT2JqZWN0UmVmIGNvbnRl
bnRWaXNpYmxlUmVjdCgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgY29weVRleHQoSlNTdHJp
bmdSZWYpIG92ZXJyaWRlOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2lv
cy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0KaW5kZXggNDJhNmI5NTZhZTQzMWE2NzNiMzBjMzc5
NGRjODgwZWU0YmM2NGQ2MC4uMDAwNmUzZDZkNWZkYmU1MGEwYzkyMjEyOWYxYWQ1NDcwMTMwOTc0
MSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvaW9zL1VJU2NyaXB0Q29udHJvbGxl
cklPUy5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9pb3MvVUlTY3JpcHRDb250cm9sbGVy
SU9TLm1tCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbXBvcnQgIkR1bXBSZW5kZXJUcmVlQnJvd3Nl
clZpZXcuaCIKICNpbXBvcnQgIlVJU2NyaXB0Q29udGV4dC5oIgorI2ltcG9ydCA8SmF2YVNjcmlw
dENvcmUvT3BhcXVlSlNTdHJpbmcuaD4KICNpbXBvcnQgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+CiAj
aW1wb3J0IDx3dGYvTWFpblRocmVhZC5oPgogCkBAIC0xMzEsNiArMTMyLDExIEBAIEpTT2JqZWN0
UmVmIFVJU2NyaXB0Q29udHJvbGxlcklPUzo6Y29udGVudFZpc2libGVSZWN0KCkgY29uc3QKICAg
ICByZXR1cm4gbV9jb250ZXh0LT5vYmplY3RGcm9tUmVjdChyZWN0KTsKIH0KIAordm9pZCBVSVNj
cmlwdENvbnRyb2xsZXJJT1M6OmNvcHlUZXh0KEpTU3RyaW5nUmVmIHRleHQpCit7CisgICAgVUlQ
YXN0ZWJvYXJkLmdlbmVyYWxQYXN0ZWJvYXJkLnN0cmluZyA9IHRleHQtPnN0cmluZygpOworfQor
CiB9CiAKICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlUGFzdGVib2FyZC5tbSBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZVBhc3RlYm9hcmQubW0KaW5kZXggZjk1MzBm
NGQzMTNhOWNhYzdiZDk4NWFlNDE1NGZmYWFjNWE2ZmQ4Ny4uZTg3ZGY4YjhhMWJlOTljNzhmZjRh
ZmU1N2Y4MDIzZmI2MzMxNGIwZSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFj
L0R1bXBSZW5kZXJUcmVlUGFzdGVib2FyZC5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9t
YWMvRHVtcFJlbmRlclRyZWVQYXN0ZWJvYXJkLm1tCkBAIC0xMjMsNyArMTIzLDggQEAgLSAoTlNJ
bnRlZ2VyKWRlY2xhcmVUeXBlczooTlNBcnJheSAqKW5ld1R5cGVzIG93bmVyOihpZCluZXdPd25l
cgogICAgIF90eXBlcy5jbGVhcigpOwogICAgIF9kYXRhLmNsZWFyKCk7CiAKLSAgICByZXR1cm4g
W3NlbGYgYWRkVHlwZXM6bmV3VHlwZXMgb3duZXI6bmV3T3duZXJdOworICAgIFtzZWxmIF9hZGRU
eXBlc1dpdGhvdXRVcGRhdGluZ0NoYW5nZUNvdW50Om5ld1R5cGVzIG93bmVyOm5ld093bmVyXTsK
KyAgICByZXR1cm4gKytfY2hhbmdlQ291bnQ7CiB9CiAKIHN0YXRpYyBib29sIGlzVVRJKE5TU3Ry
aW5nICp0eXBlKQpAQCAtMTQxLDE3ICsxNDIsMjEgQEAgc3RhdGljIFJldGFpblB0cjxDRlN0cmlu
Z1JlZj4gdG9VVEkoTlNTdHJpbmcgKnR5cGUpCiAgICAgcmV0dXJuIGFkb3B0Q0YoVVRUeXBlQ3Jl
YXRlUHJlZmVycmVkSWRlbnRpZmllckZvclRhZyhrVVRUYWdDbGFzc05TUGJvYXJkVHlwZSwgKF9f
YnJpZGdlIENGU3RyaW5nUmVmKXR5cGUsIG51bGxwdHIpKTsKIH0KIAotLSAoTlNJbnRlZ2VyKWFk
ZFR5cGVzOihOU0FycmF5ICopbmV3VHlwZXMgb3duZXI6KGlkKW5ld093bmVyCistIChOU0ludGVn
ZXIpYWRkVHlwZXM6KE5TQXJyYXk8TlNQYXN0ZWJvYXJkVHlwZT4gKiluZXdUeXBlcyBvd25lcjoo
aWQpbmV3T3duZXIKIHsKLSAgICBpZiAoX293bmVyICE9IG5ld093bmVyKSB7Ci0gICAgICAgIF9v
d25lciA9IG5ld093bmVyOworICAgIGF1dG8gcHJldmlvdXNPd25lciA9IF9vd25lcjsKKyAgICBb
c2VsZiBfYWRkVHlwZXNXaXRob3V0VXBkYXRpbmdDaGFuZ2VDb3VudDpuZXdUeXBlcyBvd25lcjpu
ZXdPd25lcl07CisgICAgaWYgKHByZXZpb3VzT3duZXIgIT0gbmV3T3duZXIpCiAgICAgICAgICsr
X2NoYW5nZUNvdW50OwotICAgIH0KKyAgICByZXR1cm4gX2NoYW5nZUNvdW50OworfQorCistICh2
b2lkKV9hZGRUeXBlc1dpdGhvdXRVcGRhdGluZ0NoYW5nZUNvdW50OihOU0FycmF5ICopbmV3VHlw
ZXMgb3duZXI6KGlkKW5ld093bmVyCit7CisgICAgX293bmVyID0gbmV3T3duZXI7CiAKICAgICBm
b3IgKE5TU3RyaW5nICp0eXBlIGluIG5ld1R5cGVzKQogICAgICAgICBfdHlwZXMuYWRkKHRvVVRJ
KHR5cGUpKTsKLQotICAgIHJldHVybiBfY2hhbmdlQ291bnQ7CiB9CiAKIC0gKE5TSW50ZWdlcilj
aGFuZ2VDb3VudApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1VJU2NyaXB0
Q29udHJvbGxlck1hYy5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1VJU2NyaXB0Q29udHJv
bGxlck1hYy5oCmluZGV4IGQyNjQwN2M4NzVhZmQ5NDcxYzI2NGQ0MDMzMzMzN2IzYzVhYTliMjcu
LjBlN2VjMjgyMTM0NjI3MzViM2M2NmFlMGY2MjQyMjcxZGY4ODQyNjMgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL21hYy9VSVNjcmlwdENvbnRyb2xsZXJNYWMuaAorKysgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9tYWMvVUlTY3JpcHRDb250cm9sbGVyTWFjLmgKQEAgLTQ5LDYgKzQ5
LDcgQEAgcHVibGljOgogICAgIHZvaWQgdG9nZ2xlQ2Fwc0xvY2soSlNWYWx1ZVJlZikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBzaW11bGF0ZUFjY2Vzc2liaWxpdHlTZXR0aW5nc0NoYW5nZU5vdGlmaWNh
dGlvbihKU1ZhbHVlUmVmKSBvdmVycmlkZTsKICAgICBOU1VuZG9NYW5hZ2VyICpwbGF0Zm9ybVVu
ZG9NYW5hZ2VyKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBjb3B5VGV4dChKU1N0cmluZ1Jl
Zikgb3ZlcnJpZGU7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9t
YWMvVUlTY3JpcHRDb250cm9sbGVyTWFjLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1VJ
U2NyaXB0Q29udHJvbGxlck1hYy5tbQppbmRleCA3OTg5ZWI0MDhmZGMzZjZhMjQ1NzI3ZmM5ZTdj
ZjBhYjUzMjBhYzY1Li45OTZmYjkyZWUzZjQ5Nzk2MjQ0ODc5NDg1OWE5Yzg1OWExZThkYWYxIDEw
MDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVUlTY3JpcHRDb250cm9sbGVyTWFj
Lm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9VSVNjcmlwdENvbnRyb2xsZXJNYWMu
bW0KQEAgLTMxLDYgKzMxLDcgQEAKICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0pTQ29udGV4dC5o
PgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSlNTdHJpbmdSZWZDRi5oPgogI2ltcG9ydCA8SmF2
YVNjcmlwdENvcmUvSlNWYWx1ZS5oPgorI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvT3BhcXVlSlNT
dHJpbmcuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJLaXQuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJW
aWV3UHJpdmF0ZS5oPgogCkBAIC0xNDYsNiArMTQ3LDEzIEBAIE5TVW5kb01hbmFnZXIgKlVJU2Ny
aXB0Q29udHJvbGxlck1hYzo6cGxhdGZvcm1VbmRvTWFuYWdlcigpIGNvbnN0CiAgICAgcmV0dXJu
IG5pbDsKIH0KIAordm9pZCBVSVNjcmlwdENvbnRyb2xsZXJNYWM6OmNvcHlUZXh0KEpTU3RyaW5n
UmVmIHRleHQpCit7CisgICAgTlNQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkID0gTlNQYXN0ZWJvYXJk
LmdlbmVyYWxQYXN0ZWJvYXJkOworICAgIFtwYXN0ZWJvYXJkIGRlY2xhcmVUeXBlczpbTlNBcnJh
eSBhcnJheVdpdGhPYmplY3Q6TlNQYXN0ZWJvYXJkVHlwZVN0cmluZ10gb3duZXI6bmlsXTsKKyAg
ICBbcGFzdGVib2FyZCBzZXRTdHJpbmc6dGV4dC0+c3RyaW5nKCkgZm9yVHlwZTpOU1Bhc3RlYm9h
cmRUeXBlU3RyaW5nXTsKK30KKwogfQogCiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCBiODBlODI0NDBlZGU1YWE3M2FhMmE4ODM1NWMzZTllNzE2MmYz
N2Y4Li4xYjhiZGQ0ZjM4MjQ3YzlhM2U5MDk4NDkzODJjOTM5MzE5Y2QzNjdhIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtOTc0LDYgKzk3NCw4IEBACiAJCUY0MUFCOUE4MUVGNDY5NkIwMDgz
RkEwOCAvKiBwcmV2ZW50LW9wZXJhdGlvbi5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0MUFCOTk0MUVGNDY5MkMwMDgzRkEwOCAvKiBw
cmV2ZW50LW9wZXJhdGlvbi5odG1sICovOyB9OwogCQlGNDFBQjlBOTFFRjQ2OTZCMDA4M0ZBMDgg
LyogcHJldmVudC1zdGFydC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEY0MUFCOTlBMUVGNDY5MkMwMDgzRkEwOCAvKiBwcmV2ZW50LXN0
YXJ0Lmh0bWwgKi87IH07CiAJCUY0MUFCOUFBMUVGNDY5NkIwMDgzRkEwOCAvKiB0ZXh0YXJlYS10
by1pbnB1dC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEY0MUFCOTk1MUVGNDY5MkMwMDgzRkEwOCAvKiB0ZXh0YXJlYS10by1pbnB1dC5o
dG1sICovOyB9OworCQlGNDIyQTNFOTIzNUFDQTlCMDBDRjAwQ0EgLyogQ2xpcGJvYXJkVGVzdHMu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDIyQTNF
ODIzNUFDQTlCMDBDRjAwQ0EgLyogQ2xpcGJvYXJkVGVzdHMubW0gKi87IH07CisJCUY0MjJBM0VC
MjM1QkIxNjIwMENGMDBDQSAvKiBjbGlwYm9hcmQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDIyQTNFQTIzNUJCMTQ1MDBDRjAwQ0Eg
LyogY2xpcGJvYXJkLmh0bWwgKi87IH07CiAJCUY0MkQ2MzQ0MjJBMTcyOUYwMEQyRkIzQSAvKiBB
dXRvY29ycmVjdGlvblRlc3RzSU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRjQyRDYzNDMyMkExNzI5RjAwRDJGQjNBIC8qIEF1dG9jb3JyZWN0aW9u
VGVzdHNJT1MubW0gKi87IH07CiAJCUY0MkRBNTE2MUQ4Q0VGRTQwMDMzNkY0MCAvKiBsYXJnZS1p
bnB1dC1maWVsZC1mb2N1cy1vbmxvYWQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDJEQTUxNTFEOENFRkRCMDAzMzZGNDAgLyogbGFy
Z2UtaW5wdXQtZmllbGQtZm9jdXMtb25sb2FkLmh0bWwgKi87IH07CiAJCUY0MzRDQTFBMjJFNjVC
Q0EwMDVEREIyNiAvKiBTY3JvbGxUb1JldmVhbFNlbGVjdGlvbi5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0MzRDQTE5MjJFNjVCQ0EwMDVEREIyNiAv
KiBTY3JvbGxUb1JldmVhbFNlbGVjdGlvbi5tbSAqLzsgfTsKQEAgLTExNzcsNiArMTE3OSw3IEBA
CiAJCQkJMkVGRjA2QzcxRDg4NkE1ODAwMDRCQjMwIC8qIGNoYW5nZS12aWRlby1zb3VyY2Utb24t
ZW5kLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJOUJENDIzOUMxRTA0QzAxQzAwMjAw
Mzk1IC8qIGNoaW5lc2UtY2hhcmFjdGVyLXdpdGgtaW1hZ2UuaHRtbCBpbiBDb3B5IFJlc291cmNl
cyAqLywKIAkJCQk4MzlBQTM1RjIxQTI2QjAzMDA5ODBERDYgLyogY2xpZW50LXNpZGUtcmVkaXJl
Y3QuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKKwkJCQlGNDIyQTNFQjIzNUJCMTYyMDBDRjAw
Q0EgLyogY2xpcGJvYXJkLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJMUE1MEFBMjAx
QTJBNTFGQzAwRjRDMzQ1IC8qIGNsb3NlLWZyb20td2l0aGluLWNyZWF0ZS1wYWdlLmh0bWwgaW4g
Q29weSBSZXNvdXJjZXMgKi8sCiAJCQkJOUIyNzBGRUUxRERDMkMwQjAwMkQ1M0YzIC8qIGNsb3Nl
ZC1zaGFkb3ctdHJlZS10ZXN0Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJOUI5MzMy
Q0UyMzIwQzc0NTAwMkQ1MEU4IC8qIGNvY29hLXdyaXRlci1tYXJrdXAtd2l0aC1saXN0cy5odG1s
IGluIENvcHkgUmVzb3VyY2VzICovLApAQCAtMjQ3NCw2ICsyNDc3LDggQEAKIAkJRjQxQUI5OUMx
RUY0NjkyQzAwODNGQTA4IC8qIGNvbnRlbnRlZGl0YWJsZS1hbmQtdGV4dGFyZWEuaHRtbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsg
cGF0aCA9ICJjb250ZW50ZWRpdGFibGUtYW5kLXRleHRhcmVhLmh0bWwiOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlGNDFBQjk5RDFFRjQ2OTJDMDA4M0ZBMDggLyogbGluay1hbmQtdGFy
Z2V0LWRpdi5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dC5odG1sOyBwYXRoID0gImxpbmstYW5kLXRhcmdldC1kaXYuaHRtbCI7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0MUFCOTlFMUVGNDY5MkMwMDgzRkEwOCAvKiBkaXYt
YW5kLWxhcmdlLWltYWdlLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiZGl2LWFuZC1sYXJnZS1pbWFnZS5odG1s
Ijsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjQyMkEzRTgyMzVBQ0E5QjAwQ0YwMENB
IC8qIENsaXBib2FyZFRlc3RzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQ2xpcGJvYXJkVGVz
dHMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0MjJBM0VBMjM1QkIxNDUwMENG
MDBDQSAvKiBjbGlwYm9hcmQuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IGNsaXBi
b2FyZC5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDJENjM0MzIyQTE3MjlG
MDBEMkZCM0EgLyogQXV0b2NvcnJlY3Rpb25UZXN0c0lPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IEF1dG9jb3JyZWN0aW9uVGVzdHNJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUY0MkRBNTE1MUQ4Q0VGREIwMDMzNkY0MCAvKiBsYXJnZS1pbnB1dC1maWVsZC1mb2N1cy1v
bmxvYWQuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgbmFtZSA9ICJsYXJnZS1pbnB1dC1maWVs
ZC1mb2N1cy1vbmxvYWQuaHRtbCI7IHBhdGggPSAiVGVzdHMvV2ViS2l0Q29jb2EvbGFyZ2UtaW5w
dXQtZmllbGQtZm9jdXMtb25sb2FkLmh0bWwiOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07
CiAJCUY0MzRDQTE5MjJFNjVCQ0EwMDVEREIyNiAvKiBTY3JvbGxUb1JldmVhbFNlbGVjdGlvbi5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNjcm9sbFRvUmV2ZWFsU2VsZWN0aW9uLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjc4Nyw2ICsyNzkyLDcgQEAKIAkJCQkxQzJCODE4
MTFDODkxRUZBMDBBNTUyOUYgLyogQ2FuY2VsRm9udFN1YnJlc291cmNlUGx1Z0luLm1tICovLAog
CQkJCTVDMjNERjBBMjI0NUM5RDcwMEY0NTRCNiAvKiBDaGFsbGVuZ2UubW0gKi8sCiAJCQkJNUNC
MThCQTcxRjU2NDVCMjAwRUUyM0M0IC8qIENsaWNrQXV0b0ZpbGxCdXR0b24ubW0gKi8sCisJCQkJ
RjQyMkEzRTgyMzVBQ0E5QjAwQ0YwMENBIC8qIENsaXBib2FyZFRlc3RzLm1tICovLAogCQkJCUNE
RjkyMjM2MjE2RDE4NjQwMDY0N0FBNyAvKiBDbG9zZVdlYlZpZXdBZnRlckVudGVyRnVsbHNjcmVl
bi5tbSAqLywKIAkJCQlDREYwQjc4OTIxNkQ0ODQzMDA0MjFFQ0MgLyogQ2xvc2VXZWJWaWV3RHVy
aW5nRW50ZXJGdWxsc2NyZWVuLm1tICovLAogCQkJCTFBQUQxOUY1MUM3Q0UyMDMwMDgzMUU0NyAv
KiBDb2RpbmcubW0gKi8sCkBAIC0zMjMzLDYgKzMyMzksNyBAQAogCQkJCTJFRkYwNkM0MUQ4ODY3
NzAwMDA0QkIzMCAvKiBjaGFuZ2UtdmlkZW8tc291cmNlLW9uLWNsaWNrLmh0bWwgKi8sCiAJCQkJ
MkVGRjA2QzYxRDg4NkE1NjAwMDRCQjMwIC8qIGNoYW5nZS12aWRlby1zb3VyY2Utb24tZW5kLmh0
bWwgKi8sCiAJCQkJODM5QUEzNUUyMUEyNkFDRDAwOTgwREQ2IC8qIGNsaWVudC1zaWRlLXJlZGly
ZWN0Lmh0bWwgKi8sCisJCQkJRjQyMkEzRUEyMzVCQjE0NTAwQ0YwMENBIC8qIGNsaXBib2FyZC5o
dG1sICovLAogCQkJCTlCOTMzMkNEMjMyMEM3M0UwMDJENTBFOCAvKiBjb2NvYS13cml0ZXItbWFy
a3VwLXdpdGgtbGlzdHMuaHRtbCAqLywKIAkJCQk5QkFFMTc3QTIyRTJCQjZCMDBERjMwOTggLyog
Y29jb2Etd3JpdGVyLW1hcmt1cC13aXRoLXN5c3RlbS1mb250cy5odG1sICovLAogCQkJCUU1MDM2
Rjc3MjExQkMyMjgwMEJGREJFMiAvKiBjb2xvci1kcm9wLmh0bWwgKi8sCkBAIC00NDY5LDYgKzQ0
NzYsNyBAQAogCQkJCTU3MzAzQkM5MjAwODI0RDMwMDM1NTk2NSAvKiBDQk9SVmFsdWVUZXN0LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTU3MzAzQkNBMjAwODJDMDEwMDM1NTk2NSAvKiBDQk9SV3Jp
dGVyVGVzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1QzIzREYwQjIyNDYwMTU4MDBGNDU0QjYg
LyogQ2hhbGxlbmdlLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJRjQyMkEzRTkyMzVBQ0E5QjAwQ0Yw
MENBIC8qIENsaXBib2FyZFRlc3RzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFRTYxQTQx
MUFFNjAwNDQ3QzRDIC8qIENsb3NlRnJvbVdpdGhpbkNyZWF0ZVBhZ2UuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJN0NDRTdFQjcxQTQxMUE3RTAwNDQ3QzRDIC8qIENsb3NlTmV3V2luZG93SW5OYXZp
Z2F0aW9uUG9saWN5RGVsZWdhdGUubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VFNTFBNDEx
QUU2MDA0NDdDNEMgLyogQ2xvc2VUaGVuVGVybWluYXRlLmNwcCBpbiBTb3VyY2VzICovLApkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9DbGlwYm9hcmRU
ZXN0cy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ2xpcGJvYXJk
VGVzdHMubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZDE2ZjI3ZmQ3YjI4Zjc4YzlmYTcwNzU2MmQ3Y2M5ZGExZGNk
OGRjNQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvQ2xpcGJvYXJkVGVzdHMubW0KQEAgLTAsMCArMSwxMzUgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW1wb3J0ICJjb25maWcuaCIKKworI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKKyNpbXBv
cnQgIlRlc3RXS1dlYlZpZXcuaCIKKyNpbXBvcnQgIlVJS2l0U1BJLmgiCisjaW1wb3J0IDxDb3Jl
U2VydmljZXMvQ29yZVNlcnZpY2VzLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tQcmVmZXJlbmNlc1By
aXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9fV0tFeHBlcmltZW50YWxGZWF0dXJlLmg+CisKK0Bp
bnRlcmZhY2UgVGVzdFdLV2ViVmlldyAoQ2xpcGJvYXJkVGVzdHMpCisKKy0gKHZvaWQpcmVhZENs
aXBib2FyZDsKKworQGVuZAorCitAaW1wbGVtZW50YXRpb24gVGVzdFdLV2ViVmlldyAoQ2xpcGJv
YXJkVGVzdHMpCisKKy0gKHZvaWQpcmVhZENsaXBib2FyZAoreworICAgIF9fYmxvY2sgYm9vbCBk
b25lID0gZmFsc2U7CisgICAgW3NlbGYgcGVyZm9ybUFmdGVyUmVjZWl2aW5nTWVzc2FnZTpAInJl
YWRDbGlwYm9hcmQiIGFjdGlvbjpeeworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAg
ICBbc2VsZiBldmFsdWF0ZUphdmFTY3JpcHQ6QCJyZWFkQ2xpcGJvYXJkKCkiIGNvbXBsZXRpb25I
YW5kbGVyOm5pbF07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKK30KKwor
QGVuZAorCitzdGF0aWMgUmV0YWluUHRyPFRlc3RXS1dlYlZpZXc+IGNyZWF0ZVdlYlZpZXdGb3JD
bGlwYm9hcmRUZXN0cygpCit7CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBzdGF0aWMg
ZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKKyAgICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4s
IF57CisgICAgICAgIC8vIFVJUGFzdGVib2FyZCdzIHR5cGUgY29lcmNpb24gY29kZXBhdGhzIG9u
bHkgdGFrZSBlZmZlY3Qgd2hlbiB0aGUgVUlBcHBsaWNhdGlvbiBoYXMgYmVlbiBpbml0aWFsaXpl
ZC4KKyAgICAgICAgVUlBcHBsaWNhdGlvbkluaXRpYWxpemUoKTsKKyAgICB9KTsKKyNlbmRpZiAv
LyBQTEFURk9STShJT1NfRkFNSUxZKQorCisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHRO
UyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBbW2NvbmZpZ3Vy
YXRpb24gcHJlZmVyZW5jZXNdIF9zZXRET01QYXN0ZUFsbG93ZWQ6WUVTXTsKKyAgICBbW2NvbmZp
Z3VyYXRpb24gcHJlZmVyZW5jZXNdIF9zZXRKYXZhU2NyaXB0Q2FuQWNjZXNzQ2xpcGJvYXJkOllF
U107CisgICAgZm9yIChfV0tFeHBlcmltZW50YWxGZWF0dXJlICpmZWF0dXJlIGluIFtXS1ByZWZl
cmVuY2VzIF9leHBlcmltZW50YWxGZWF0dXJlc10pIHsKKyAgICAgICAgaWYgKFtmZWF0dXJlLmtl
eSBpc0VxdWFsVG9TdHJpbmc6QCJBc3luY0NsaXBib2FyZEFQSUVuYWJsZWQiXSkgeworICAgICAg
ICAgICAgW1tjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSBfc2V0RW5hYmxlZDpZRVMgZm9yRXhw
ZXJpbWVudGFsRmVhdHVyZTpmZWF0dXJlXTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CisgICAgfQorCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxs
b2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCA0MDAsIDQwMCkgY29uZmlndXJhdGlv
bjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRU
ZXN0UGFnZU5hbWVkOkAiY2xpcGJvYXJkIl07CisgICAgcmV0dXJuIHdlYlZpZXc7Cit9CisKK3N0
YXRpYyB2b2lkIHdyaXRlTXVsdGlwbGVPYmplY3RzVG9QbGF0Zm9ybVBhc3RlYm9hcmQoKQorewor
I2lmIFBMQVRGT1JNKE1BQykKKyAgICBhdXRvIGZpcnN0SXRlbSA9IGFkb3B0TlMoW1tOU1Bhc3Rl
Ym9hcmRJdGVtIGFsbG9jXSBpbml0XSk7CisgICAgW2ZpcnN0SXRlbSBzZXRTdHJpbmc6QCJIZWxs
byIgZm9yVHlwZTpOU1Bhc3RlYm9hcmRUeXBlU3RyaW5nXTsKKworICAgIGF1dG8gc2Vjb25kSXRl
bSA9IGFkb3B0TlMoW1tOU1Bhc3RlYm9hcmRJdGVtIGFsbG9jXSBpbml0XSk7CisgICAgW3NlY29u
ZEl0ZW0gc2V0U3RyaW5nOkAiaHR0cHM6Ly9hcHBsZS5jb20vIiBmb3JUeXBlOk5TUGFzdGVib2Fy
ZFR5cGVVUkxdOworCisgICAgYXV0byB0aGlyZEl0ZW0gPSBhZG9wdE5TKFtbTlNQYXN0ZWJvYXJk
SXRlbSBhbGxvY10gaW5pdF0pOworICAgIFt0aGlyZEl0ZW0gc2V0U3RyaW5nOkAiPHN0cm9uZyBz
dHlsZT0nY29sb3I6IHJnYigwLCAyNTUsIDApOyc+SGVsbG8gd29ybGQ8L3N0cm9uZz4iIGZvclR5
cGU6TlNQYXN0ZWJvYXJkVHlwZUhUTUxdOworCisgICAgYXV0byBmb3VydGhJdGVtID0gYWRvcHRO
UyhbW05TUGFzdGVib2FyZEl0ZW0gYWxsb2NdIGluaXRdKTsKKyAgICBbZm91cnRoSXRlbSBzZXRT
dHJpbmc6QCJXZWJLaXQiIGZvclR5cGU6TlNQYXN0ZWJvYXJkVHlwZVN0cmluZ107CisgICAgW2Zv
dXJ0aEl0ZW0gc2V0U3RyaW5nOkAiaHR0cHM6Ly93ZWJraXQub3JnLyIgZm9yVHlwZTpOU1Bhc3Rl
Ym9hcmRUeXBlVVJMXTsKKyAgICBbZm91cnRoSXRlbSBzZXRTdHJpbmc6QCI8YSBocmVmPSdodHRw
czovL3dlYmtpdC5vcmcvJz5IZWxsbyB3b3JsZDwvYT4iIGZvclR5cGU6TlNQYXN0ZWJvYXJkVHlw
ZUhUTUxdOworCisgICAgTlNQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkID0gTlNQYXN0ZWJvYXJkLmdl
bmVyYWxQYXN0ZWJvYXJkOworICAgIFtwYXN0ZWJvYXJkIGNsZWFyQ29udGVudHNdOworICAgIFtw
YXN0ZWJvYXJkIHdyaXRlT2JqZWN0czpAW2ZpcnN0SXRlbS5nZXQoKSwgc2Vjb25kSXRlbS5nZXQo
KSwgdGhpcmRJdGVtLmdldCgpLCBmb3VydGhJdGVtLmdldCgpXV07CisjZWxzZQorICAgIGF1dG8g
Zmlyc3RJdGVtID0gYWRvcHROUyhbW05TSXRlbVByb3ZpZGVyIGFsbG9jXSBpbml0V2l0aE9iamVj
dDpAIkhlbGxvIl0pOworICAgIGF1dG8gc2Vjb25kSXRlbSA9IGFkb3B0TlMoW1tOU0l0ZW1Qcm92
aWRlciBhbGxvY10gaW5pdFdpdGhPYmplY3Q6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwczov
L2FwcGxlLmNvbS8iXV0pOworICAgIGF1dG8gdGhpcmRJdGVtID0gYWRvcHROUyhbW05TSXRlbVBy
b3ZpZGVyIGFsbG9jXSBpbml0XSk7CisgICAgW3RoaXJkSXRlbSByZWdpc3RlckRhdGFSZXByZXNl
bnRhdGlvbkZvclR5cGVJZGVudGlmaWVyOihfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVIVE1M
IHZpc2liaWxpdHk6TlNJdGVtUHJvdmlkZXJSZXByZXNlbnRhdGlvblZpc2liaWxpdHlBbGwgbG9h
ZEhhbmRsZXI6WyZdICh2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TRGF0YSAqLCBOU0Vycm9y
ICopKSAtPiBOU1Byb2dyZXNzICogeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihbQCI8c3Ry
b25nIHN0eWxlPSdjb2xvcjogcmdiKDAsIDI1NSwgMCk7Jz5IZWxsbyB3b3JsZDwvc3Ryb25nPiIg
ZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddLCBuaWwpOworICAgICAgICBy
ZXR1cm4gbmlsOworICAgIH1dOworCisgICAgYXV0byBmb3VydGhJdGVtID0gYWRvcHROUyhbW05T
SXRlbVByb3ZpZGVyIGFsbG9jXSBpbml0XSk7CisgICAgW2ZvdXJ0aEl0ZW0gcmVnaXN0ZXJPYmpl
Y3Q6QCJXZWJLaXQiIHZpc2liaWxpdHk6TlNJdGVtUHJvdmlkZXJSZXByZXNlbnRhdGlvblZpc2li
aWxpdHlBbGxdOworICAgIFtmb3VydGhJdGVtIHJlZ2lzdGVyT2JqZWN0OltOU1VSTCBVUkxXaXRo
U3RyaW5nOkAiaHR0cHM6Ly93ZWJraXQub3JnLyJdIHZpc2liaWxpdHk6TlNJdGVtUHJvdmlkZXJS
ZXByZXNlbnRhdGlvblZpc2liaWxpdHlBbGxdOworICAgIFtmb3VydGhJdGVtIHJlZ2lzdGVyRGF0
YVJlcHJlc2VudGF0aW9uRm9yVHlwZUlkZW50aWZpZXI6KF9fYnJpZGdlIE5TU3RyaW5nICopa1VU
VHlwZUhUTUwgdmlzaWJpbGl0eTpOU0l0ZW1Qcm92aWRlclJlcHJlc2VudGF0aW9uVmlzaWJpbGl0
eUFsbCBsb2FkSGFuZGxlcjpbJl0gKHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNEYXRhICos
IE5TRXJyb3IgKikpIC0+IE5TUHJvZ3Jlc3MgKiB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KFtAIjxhIGhyZWY9J2h0dHBzOi8vd2Via2l0Lm9yZy8nPkhlbGxvIHdvcmxkPC9hPiIgZGF0YVVz
aW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddLCBuaWwpOworICAgICAgICByZXR1cm4g
bmlsOworICAgIH1dOworCisgICAgVUlQYXN0ZWJvYXJkLmdlbmVyYWxQYXN0ZWJvYXJkLml0ZW1Q
cm92aWRlcnMgPSBAWyBmaXJzdEl0ZW0uZ2V0KCksIHNlY29uZEl0ZW0uZ2V0KCksIHRoaXJkSXRl
bS5nZXQoKSwgZm91cnRoSXRlbS5nZXQoKSBdOworI2VuZGlmCit9CisKK1RFU1QoQ2xpcGJvYXJk
VGVzdHMsIFJlYWRNdWx0aXBsZUl0ZW1zKQoreworICAgIGF1dG8gd2ViVmlldyA9IGNyZWF0ZVdl
YlZpZXdGb3JDbGlwYm9hcmRUZXN0cygpOworICAgIHdyaXRlTXVsdGlwbGVPYmplY3RzVG9QbGF0
Zm9ybVBhc3RlYm9hcmQoKTsKKyAgICBbd2ViVmlldyByZWFkQ2xpcGJvYXJkXTsKKworICAgIEVY
UEVDVF9XS19TVFJFUSgiIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpA
ImV4Y2VwdGlvbiA/IGV4Y2VwdGlvbi5tZXNzYWdlIDogJyciXSk7CisgICAgRVhQRUNUX0VRKDRV
LCBbW3dlYlZpZXcgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImNsaXBib2FyZERhdGEu
bGVuZ3RoIl0gdW5zaWduZWRJbnRWYWx1ZV0pOworICAgIEVYUEVDVF9XS19TVFJFUSgiSGVsbG8i
LCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiY2xpcGJvYXJkRGF0YVsw
XVsndGV4dC9wbGFpbiddIl0pOworICAgIEVYUEVDVF9XS19TVFJFUSgiaHR0cHM6Ly9hcHBsZS5j
b20vIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImNsaXBib2FyZERh
dGFbMV1bJ3RleHQvdXJpLWxpc3QnXSJdKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoInJnYigwLCAy
NTUsIDApIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImdldENvbXB1
dGVkU3R5bGUoY2xpcGJvYXJkRGF0YVsyXVsndGV4dC9odG1sJ10ucXVlcnlTZWxlY3Rvcignc3Ry
b25nJykpLmNvbG9yIl0pOworICAgIEVYUEVDVF9XS19TVFJFUSgiV2ViS2l0IiwgW3dlYlZpZXcg
c3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImNsaXBib2FyZERhdGFbM11bJ3RleHQvcGxh
aW4nXSJdKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoImh0dHBzOi8vd2Via2l0Lm9yZy8iLCBbd2Vi
VmlldyBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiY2xpcGJvYXJkRGF0YVszXVsndGV4
dC91cmktbGlzdCddIl0pOworICAgIEVYUEVDVF9XS19TVFJFUSgiaHR0cHM6Ly93ZWJraXQub3Jn
LyIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJjbGlwYm9hcmREYXRh
WzNdWyd0ZXh0L2h0bWwnXS5xdWVyeVNlbGVjdG9yKCdhJykuaHJlZiJdKTsKK30KZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvY2xpcGJvYXJkLmh0bWwg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL2NsaXBib2FyZC5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmZhMzgyOTA4ZGZkOWIyMDM4MTUxZDQyNjg0ZjE4MDNhOWY4MDNiZDYKLS0tIC9k
ZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL2NsaXBi
b2FyZC5odG1sCkBAIC0wLDAgKzEsNTcgQEAKKzwhRE9DVFlQRT4KKzxodG1sPgorPHNjcmlwdD4K
K2Z1bmN0aW9uIGxvYWRUZXh0KGJsb2IpIHsKKyAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29s
dmUsIHJlamVjdCkgPT4geworICAgICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcjsK
KyAgICAgICAgcmVhZGVyLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCAoKSA9PiByZXNvbHZlKHJl
YWRlci5yZXN1bHQpLCB7IG9uY2U6IHRydWUgfSk7CisgICAgICAgIHJlYWRlci5hZGRFdmVudExp
c3RlbmVyKCJlcnJvciIsIHJlamVjdCwgeyBvbmNlOiB0cnVlIH0pOworICAgICAgICByZWFkZXIu
cmVhZEFzVGV4dChibG9iKTsKKyAgICB9KTsKK30KKworZnVuY3Rpb24gbG9hZEltYWdlKGJsb2Ip
IHsKKyAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4geworICAgICAg
ICBjb25zdCBpbWFnZSA9IG5ldyBJbWFnZTsKKyAgICAgICAgaW1hZ2UuYWRkRXZlbnRMaXN0ZW5l
cigibG9hZCIsICgpID0+IHJlc29sdmUoaW1hZ2UpLCB7IG9uY2U6IHRydWUgfSk7CisgICAgICAg
IGltYWdlLmFkZEV2ZW50TGlzdGVuZXIoImVycm9yIiwgcmVqZWN0LCB7IG9uY2U6IHRydWUgfSk7
CisgICAgICAgIGltYWdlLnNyYyA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7CisgICAgfSk7
Cit9CisKK2Z1bmN0aW9uIGxvYWREb2N1bWVudChibG9iKSB7CisgICAgcmV0dXJuIG5ldyBQcm9t
aXNlKGFzeW5jIHJlc29sdmUgPT4geworICAgICAgICByZXNvbHZlKG5ldyBET01QYXJzZXIoKS5w
YXJzZUZyb21TdHJpbmcoYXdhaXQgbG9hZFRleHQoYmxvYiksICJ0ZXh0L2h0bWwiKSk7CisgICAg
fSk7Cit9CisKK2NsaXBib2FyZERhdGEgPSBbXTsKK2V4Y2VwdGlvbiA9IG51bGw7CisKK2FzeW5j
IGZ1bmN0aW9uIHJlYWRDbGlwYm9hcmQoKSB7CisgICAgdHJ5IHsKKyAgICAgICAgY29uc3QgaXRl
bXMgPSBhd2FpdCBuYXZpZ2F0b3IuY2xpcGJvYXJkLnJlYWQoKTsKKyAgICAgICAgZm9yIChjb25z
dCBpdGVtIG9mIGl0ZW1zKSB7CisgICAgICAgICAgICBsZXQgaXRlbURhdGEgPSB7fTsKKyAgICAg
ICAgICAgIGZvciAoY29uc3QgdHlwZSBvZiBpdGVtLnR5cGVzKSB7CisgICAgICAgICAgICAgICAg
Y29uc3QgYmxvYiA9IGF3YWl0IGl0ZW0uZ2V0VHlwZSh0eXBlKTsKKyAgICAgICAgICAgICAgICBp
ZiAodHlwZSA9PT0gInRleHQvaHRtbCIpCisgICAgICAgICAgICAgICAgICAgIGl0ZW1EYXRhW3R5
cGVdID0gYXdhaXQgbG9hZERvY3VtZW50KGJsb2IpOworICAgICAgICAgICAgICAgIGVsc2UgaWYg
KHR5cGUgPT09ICJpbWFnZS9wbmciKQorICAgICAgICAgICAgICAgICAgICBpdGVtRGF0YVt0eXBl
XSA9IGF3YWl0IGxvYWRJbWFnZShibG9iKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgICAgIGl0ZW1EYXRhW3R5cGVdID0gYXdhaXQgbG9hZFRleHQoYmxvYik7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBjbGlwYm9hcmREYXRhLnB1c2goaXRlbURhdGEpOworICAg
ICAgICB9CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBleGNlcHRpb24gPSBlOworICAgIH0g
ZmluYWxseSB7CisgICAgICAgIHdlYmtpdC5tZXNzYWdlSGFuZGxlcnMudGVzdEhhbmRsZXIucG9z
dE1lc3NhZ2UoInJlYWRDbGlwYm9hcmQiKTsKKyAgICB9Cit9Cis8L3NjcmlwdD4KKzxib2R5Pgor
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21h
Yy9XZWJLaXRUZXN0UnVubmVyUGFzdGVib2FyZC5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
bWFjL1dlYktpdFRlc3RSdW5uZXJQYXN0ZWJvYXJkLm1tCmluZGV4IDlkYmY2ZGQyNDQ4YzIxMTU3
M2I1NmFiMDYxM2FmMTE2Mjc3YTRjNmEuLjZhNDJiY2FiYTQ2MzQ0NWMxM2ZkZTNhMWUwNzA0Njky
MGExOTc0YjQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1dlYktpdFRl
c3RSdW5uZXJQYXN0ZWJvYXJkLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1dl
YktpdFRlc3RSdW5uZXJQYXN0ZWJvYXJkLm1tCkBAIC0xNDAsMTAgKzE0MCwxOSBAQCAtIChOU0lu
dGVnZXIpY2xlYXJDb250ZW50cwogLSAoTlNJbnRlZ2VyKWRlY2xhcmVUeXBlczooTlNBcnJheSAq
KW5ld1R5cGVzIG93bmVyOihpZCluZXdPd25lcgogewogICAgIFtzZWxmIF9jbGVhckNvbnRlbnRz
V2l0aG91dFVwZGF0aW5nQ2hhbmdlQ291bnRdOwotICAgIHJldHVybiBbc2VsZiBhZGRUeXBlczpu
ZXdUeXBlcyBvd25lcjpuZXdPd25lcl07CisgICAgW3NlbGYgX2FkZFR5cGVzV2l0aG91dFVwZGF0
aW5nQ2hhbmdlQ291bnQ6bmV3VHlwZXMgb3duZXI6bmV3T3duZXJdOworICAgIHJldHVybiArK2No
YW5nZUNvdW50OworfQorCistIChOU0ludGVnZXIpYWRkVHlwZXM6KE5TQXJyYXk8TlNQYXN0ZWJv
YXJkVHlwZT4gKiluZXdUeXBlcyBvd25lcjooaWQpbmV3T3duZXIKK3sKKyAgICBbc2VsZiBfYWRk
VHlwZXNXaXRob3V0VXBkYXRpbmdDaGFuZ2VDb3VudDpuZXdUeXBlcyBvd25lcjpuZXdPd25lcl07
CisgICAgLy8gRklYTUU6IElkZWFsbHksIHdlIHdvdWxkIGtlZXAgdHJhY2sgb2YgdGhlIGN1cnJl
bnQgb3duZXIgYW5kIG9ubHkgYnVtcCB0aGUgY2hhbmdlCisgICAgLy8gY291bnQgaWYgdGhlIG5l
dyBvd25lciBpcyBkaWZmZXJlbnQuCisgICAgcmV0dXJuICsrY2hhbmdlQ291bnQ7CiB9CiAKLS0g
KE5TSW50ZWdlcilhZGRUeXBlczooTlNBcnJheSAqKW5ld1R5cGVzIG93bmVyOihpZCluZXdPd25l
cgorLSAodm9pZClfYWRkVHlwZXNXaXRob3V0VXBkYXRpbmdDaGFuZ2VDb3VudDooTlNBcnJheSAq
KW5ld1R5cGVzIG93bmVyOihpZCluZXdPd25lcgogewogICAgIHVuc2lnbmVkIGNvdW50ID0gW25l
d1R5cGVzIGNvdW50XTsKICAgICB1bnNpZ25lZCBpOwpAQCAtMTU5LDcgKzE2OCw2IEBAIC0gKE5T
SW50ZWdlcilhZGRUeXBlczooTlNBcnJheSAqKW5ld1R5cGVzIG93bmVyOihpZCluZXdPd25lcgog
ICAgICAgICBpZiAobmV3T3duZXIgJiYgW25ld093bmVyIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2Vs
ZWN0b3IocGFzdGVib2FyZDpwcm92aWRlRGF0YUZvclR5cGU6KV0pCiAgICAgICAgICAgICBbbmV3
T3duZXIgcGFzdGVib2FyZDpzZWxmIHByb3ZpZGVEYXRhRm9yVHlwZTpzZXRUeXBlXTsKICAgICB9
Ci0gICAgcmV0dXJuICsrY2hhbmdlQ291bnQ7CiB9CiAKIC0gKE5TSW50ZWdlciljaGFuZ2VDb3Vu
dApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCmluZGV4IDg4ZDU4OTBjYzQ4MDcxZDRlMTBmY2M3Zjc1Yjc1YmFjMGFkMmNiZTIuLjRhOWJj
YzRiYjM3ZDJmYjYwY2RiNzkwNDZiZmJiNmNlNjg2NTU2N2IgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNyBA
QAorMjAxOS0xMC0xOSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbQ2xpcGJvYXJkIEFQSV0gSW1wbGVtZW50IENsaXBib2FyZEl0ZW0uZ2V0VHlwZSgp
IGZvciBwbGF0Zm9ybSBjbGlwYm9hcmQgaXRlbXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMzE2OAorCisgICAgICAgIFJldmlld2VkIGJ5IFRpbSBI
b3J0b24uCisKKyAgICAgICAgQWRkIDMgbmV3IGxheW91dCB0ZXN0cy4KKworICAgICAgICAqIGVk
aXRpbmcvYXN5bmMtY2xpcGJvYXJkL2NsaXBib2FyZC1jaGFuZ2UtZGF0YS13aGlsZS1nZXR0aW5n
LXR5cGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL2FzeW5jLWNsaXBi
b2FyZC9jbGlwYm9hcmQtY2hhbmdlLWRhdGEtd2hpbGUtZ2V0dGluZy10eXBlLmh0bWw6IEFkZGVk
LgorCisgICAgICAgIEFkZCBhIGxheW91dCB0ZXN0IHRvIHZlcmlmeSB0aGF0IGlmIHRoZSBwYXN0
ZWJvYXJkIGNoYW5nZXMgcmlnaHQgYWZ0ZXIgdGhlIHBhZ2UgaGFzIG9idGFpbmVkIGNsaXBib2Fy
ZCBpdGVtcywKKyAgICAgICAgdGhlIHBhZ2Ugc2hvdWxkIG5vdCBiZSBhYmxlIHRvIGZldGNoIHRo
ZSBuZXcgY29udGVudHMgb2YgdGhlIHBhc3RlYm9hcmQgdXNpbmcgdGhlc2UgY2xpcGJvYXJkIGl0
ZW1zLgorCisgICAgICAgICogZWRpdGluZy9hc3luYy1jbGlwYm9hcmQvY2xpcGJvYXJkLWdldC10
eXBlLXdpdGgtb2xkLWl0ZW1zLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvYXN5bmMt
Y2xpcGJvYXJkL2NsaXBib2FyZC1nZXQtdHlwZS13aXRoLW9sZC1pdGVtcy1leHBlY3RlZC50eHQ6
IEFkZGVkLgorCisgICAgICAgIEFkZCBhIGxheW91dCB0ZXN0IHRvIHZlcmlmeSB0aGF0IGFmdGVy
IGF0dGVtcHRpbmcgdG8gZ2V0IGRhdGEgZnJvbSBpbnZhbGlkIChzdGFsZSkgaXRlbXMsIHRoZSBw
YWdlIGlzIHN0aWxsCisgICAgICAgIGNhcGFibGUgb2YgcmVhZGluZyBkYXRhIGZyb20gdmFsaWQg
Y2xpcGJvYXJkIGl0ZW1zLgorCisgICAgICAgICogZWRpdGluZy9hc3luYy1jbGlwYm9hcmQvY2xp
cGJvYXJkLWl0ZW0tZ2V0LXR5cGUtYmFzaWMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBlZGl0aW5nL2FzeW5jLWNsaXBib2FyZC9jbGlwYm9hcmQtaXRlbS1nZXQtdHlwZS1iYXNpYy5o
dG1sOiBBZGRlZC4KKworICAgICAgICBBZGQgYSBsYXlvdXQgdGVzdCB0byB2ZXJpZnkgdGhhdCBh
ZnRlciB3cml0aW5nIG11bHRpcGxlIHR5cGVzIHRvIHRoZSBjbGlwYm9hcmQgdXNpbmcgdGhlIERh
dGFUcmFuc2ZlciBBUEksIHdlCisgICAgICAgIHNob3VsZCBiZSBhYmxlIHRvIHJlYWQgdGhlbSBi
YWNrIHVzaW5nIHRoZSBhc3luYyBjbGlwYm9hcmQgQVBJLCBhcyBhIHNpbmdsZSBDbGlwYm9hcmRJ
dGVtLCBhbmQgYWxzbyBnZXQgZGF0YSBvdXQKKyAgICAgICAgb2YgdGhlIGNsaXBib2FyZCBpdGVt
IHVzaW5nIENsaXBib2FyZEl0ZW0uZ2V0VHlwZS4KKworICAgICAgICAqIGVkaXRpbmcvYXN5bmMt
Y2xpcGJvYXJkL3Jlc291cmNlcy9hc3luYy1jbGlwYm9hcmQtaGVscGVycy5qczoKKyAgICAgICAg
KiBwbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiByZXNvdXJjZXMvdWkt
aGVscGVyLmpzOgorICAgICAgICAod2luZG93LlVJSGVscGVyLmFzeW5jLmNvcHlUZXh0KToKKyAg
ICAgICAgKHdpbmRvdy5VSUhlbHBlcik6CisKIDIwMTktMTAtMTkgIFJ5b3N1a2UgTml3YSAgPHJu
aXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgRmxha3kgVGVzdDogZmFzdC9ldmVudHMvcmVzaXpl
LXN1YmZyYW1lLWluLXJlbmRlcmluZy11cGRhdGUuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZWRpdGluZy9hc3luYy1jbGlwYm9hcmQvY2xpcGJvYXJkLWNoYW5nZS1kYXRhLXdoaWxlLWdl
dHRpbmctdHlwZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL2FzeW5jLWNsaXBi
b2FyZC9jbGlwYm9hcmQtY2hhbmdlLWRhdGEtd2hpbGUtZ2V0dGluZy10eXBlLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi44MTFlOGQwN2RjNmUyNTNkYTM3YTgwZmYzMzUzZDU4ODkxNjAyNjk4Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9hc3luYy1jbGlwYm9hcmQvY2xp
cGJvYXJkLWNoYW5nZS1kYXRhLXdoaWxlLWdldHRpbmctdHlwZS1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwxMSBAQAorVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgaWYgcGxhdGZvcm0gcGFzdGVib2Fy
ZCBjb250ZW50cyBhcmUgY2hhbmdlZCBiZWZvcmUgcmVhZGluZyBmcm9tIGEgQ2xpcGJvYXJkSXRl
bSwgdGhlIG5ldyBjb250ZW50cyBvZiB0aGUgcGFzdGVib2FyZCBzaG91bGQgbm90IGJlIGV4cG9z
ZWQgdG8gdGhlIHBhZ2UgYW5kIHRoZSByZXN1bHQgb2YgZ2V0VHlwZSgpIHNob3VsZCBiZSByZWpl
Y3RlZC4gVGhpcyB0ZXN0IHJlcXVpcmVzIFdlYktpdFRlc3RSdW5uZXIuCisKK09uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KKworCitQQVNTIGl0ZW1zLmxlbmd0aCBpcyAxCitQQVNTIEhhbmRsZWQg
ZXhjZXB0aW9uOiBOb3RBbGxvd2VkRXJyb3IKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL2Fz
eW5jLWNsaXBib2FyZC9jbGlwYm9hcmQtY2hhbmdlLWRhdGEtd2hpbGUtZ2V0dGluZy10eXBlLmh0
bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL2FzeW5jLWNsaXBib2FyZC9jbGlwYm9hcmQtY2hhbmdl
LWRhdGEtd2hpbGUtZ2V0dGluZy10eXBlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzYyYTQ2YjYxZWQwODc5
ZjI5M2FjN2FiYTYyMDJlMmI4ODJhYTcxYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2VkaXRpbmcvYXN5bmMtY2xpcGJvYXJkL2NsaXBib2FyZC1jaGFuZ2UtZGF0YS13aGlsZS1nZXR0
aW5nLXR5cGUuaHRtbApAQCAtMCwwICsxLDMyIEBACis8IURPQ1RZUEUgaHRtbD4gPCEtLSB3ZWJr
aXQtdGVzdC1ydW5uZXIgWyB1c2VGbGV4aWJsZVZpZXdwb3J0PXRydWUgZXhwZXJpbWVudGFsOkFz
eW5jQ2xpcGJvYXJkQVBJRW5hYmxlZD10cnVlIF0gLS0+Cis8aHRtbD4KKyAgICA8bWV0YSBjaGFy
c2V0PSJ1dGY4Ij4KKyAgICA8aGVhZD4KKyAgICAgICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNv
bnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xLCB1c2VyLXNjYWxhYmxl
PW5vIj4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48
L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy91aS1oZWxwZXIu
anMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0iLi9yZXNvdXJjZXMvYXN5bmMtY2xp
cGJvYXJkLWhlbHBlcnMuanMiPjwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8c2NyaXB0Pgor
ICAgICAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICBhc3luYyBmdW5jdGlvbiBy
dW5UZXN0KCkgeworICAgICAgICAgICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdCB2ZXJpZmllcyB0
aGF0IGlmIHBsYXRmb3JtIHBhc3RlYm9hcmQgY29udGVudHMgYXJlIGNoYW5nZWQgYmVmb3JlIHJl
YWRpbmcgZnJvbSBhIENsaXBib2FyZEl0ZW0sIHRoZSBuZXcgY29udGVudHMgb2YgdGhlIHBhc3Rl
Ym9hcmQgc2hvdWxkIG5vdCBiZSBleHBvc2VkIHRvIHRoZSBwYWdlIGFuZCB0aGUgcmVzdWx0IG9m
IGdldFR5cGUoKSBzaG91bGQgYmUgcmVqZWN0ZWQuIFRoaXMgdGVzdCByZXF1aXJlcyBXZWJLaXRU
ZXN0UnVubmVyLiIpOworCisgICAgICAgICAgICBhd2FpdCBVSUhlbHBlci5jb3B5VGV4dCgiRm9v
Iik7CisgICAgICAgICAgICBpdGVtcyA9IGF3YWl0IG5hdmlnYXRvci5jbGlwYm9hcmQucmVhZCgp
OworICAgICAgICAgICAgc2hvdWxkQmUoIml0ZW1zLmxlbmd0aCIsICIxIik7CisgICAgICAgICAg
ICBhd2FpdCBVSUhlbHBlci5jb3B5VGV4dCgiQmFyIik7CisgICAgICAgICAgICB0cnkgeworICAg
ICAgICAgICAgICAgIGNvbnN0IHRleHRCbG9iID0gYXdhaXQgaXRlbXNbMF0uZ2V0VHlwZSgidGV4
dC9wbGFpbiIpOworICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoYERpZCBub3QgaGFuZGxlIGV4
Y2VwdGlvbiAoaW5zdGVhZCwgZ290IHRleHQ6ICIke2F3YWl0IGxvYWRUZXh0KHRleHRCbG9iKX0i
KWApOworICAgICAgICAgICAgfSBjYXRjaCAoZXhjZXB0aW9uKSB7CisgICAgICAgICAgICAgICAg
dGVzdFBhc3NlZChgSGFuZGxlZCBleGNlcHRpb246ICR7ZXhjZXB0aW9uLm5hbWV9YCk7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBydW5UZXN0KTsKKyAgICA8L3NjcmlwdD4KKyAg
ICA8Ym9keT48L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5n
L2FzeW5jLWNsaXBib2FyZC9jbGlwYm9hcmQtZ2V0LXR5cGUtd2l0aC1vbGQtaXRlbXMtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9hc3luYy1jbGlwYm9hcmQvY2xpcGJvYXJkLWdl
dC10eXBlLXdpdGgtb2xkLWl0ZW1zLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYTFkNDM5ODhh
ZWYxNTA1OTliZGRmMzI2YWNhOWJhYjlkNmI0ZGM2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZWRpdGluZy9hc3luYy1jbGlwYm9hcmQvY2xpcGJvYXJkLWdldC10eXBlLXdpdGgtb2xk
LWl0ZW1zLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUaGlzIHRlc3QgdmVyaWZpZXMg
dGhhdCBpdCdzIHN0aWxsIHBvc3NpYmxlIHRvIHJlYWQgZnJvbSB0aGUgY2xpcGJvYXJkLCBhZnRl
ciBhdHRlbXB0aW5nIHRvIHJlYWQgZGF0YSBmcm9tIHN0YWxlIGl0ZW1zLiBSZXF1aXJlcyBEdW1w
UmVuZGVyVHJlZSBvciBXZWJLaXRUZXN0UnVubmVyLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBz
ZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVU
RSIuCisKKworUEFTUyBpdGVtc0JlZm9yZUNoYW5nZS5sZW5ndGggaXMgMQorUEFTUyB0ZXh0IGlz
ICJIZWxsbyIKK1BBU1MgaXRlbXNBZnRlckNoYW5nZS5sZW5ndGggaXMgMQorUEFTUyBDYXVnaHQg
ZXhwZWN0ZWQgZXhjZXB0aW9uOiBOb3RBbGxvd2VkRXJyb3IKK1BBU1MgdGV4dCBpcyAiV29ybGQi
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9hc3luYy1jbGlwYm9hcmQvY2xpcGJvYXJkLWdl
dC10eXBlLXdpdGgtb2xkLWl0ZW1zLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL2FzeW5jLWNs
aXBib2FyZC9jbGlwYm9hcmQtZ2V0LXR5cGUtd2l0aC1vbGQtaXRlbXMuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li43NWVlNWNlOWVlZmY5M2ZhMTU1ZjdkZDY4MjA3OWVlZWM5NzI2M2M2Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9hc3luYy1jbGlwYm9hcmQvY2xpcGJvYXJkLWdldC10
eXBlLXdpdGgtb2xkLWl0ZW1zLmh0bWwKQEAgLTAsMCArMSw1MyBAQAorPCFET0NUWVBFIGh0bWw+
IDwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgdXNlRmxleGlibGVWaWV3cG9ydD10cnVlIGV4cGVy
aW1lbnRhbDpBc3luY0NsaXBib2FyZEFQSUVuYWJsZWQ9dHJ1ZSBdIC0tPgorPGh0bWw+CisgICAg
PG1ldGEgY2hhcnNldD0idXRmOCI+CisgICAgPGhlYWQ+CisgICAgICAgIDxtZXRhIG5hbWU9InZp
ZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MSwgdXNl
ci1zY2FsYWJsZT1ubyI+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
dWktaGVscGVyLmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4vcmVzb3VyY2Vz
L2FzeW5jLWNsaXBib2FyZC1oZWxwZXJzLmpzIj48L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAg
PHNjcmlwdD4KKyAgICAgICAganNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgYXN5bmMg
ZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICAgICAgICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3Qg
dmVyaWZpZXMgdGhhdCBpdCdzIHN0aWxsIHBvc3NpYmxlIHRvIHJlYWQgZnJvbSB0aGUgY2xpcGJv
YXJkLCBhZnRlciBhdHRlbXB0aW5nIHRvIHJlYWQgZGF0YSBmcm9tIHN0YWxlIGl0ZW1zLiBSZXF1
aXJlcyBEdW1wUmVuZGVyVHJlZSBvciBXZWJLaXRUZXN0UnVubmVyLiIpOworCisgICAgICAgICAg
ICBhd2FpdCBVSUhlbHBlci5jb3B5VGV4dCgiSGVsbG8iKTsKKyAgICAgICAgICAgIGl0ZW1zQmVm
b3JlQ2hhbmdlID0gYXdhaXQgbmF2aWdhdG9yLmNsaXBib2FyZC5yZWFkKCk7CisgICAgICAgICAg
ICBzaG91bGRCZSgiaXRlbXNCZWZvcmVDaGFuZ2UubGVuZ3RoIiwgIjEiKTsKKworICAgICAgICAg
ICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBjb25zdCB0ZXh0QmxvYiA9IGF3YWl0IGl0ZW1zQmVm
b3JlQ2hhbmdlWzBdLmdldFR5cGUoInRleHQvcGxhaW4iKTsKKyAgICAgICAgICAgICAgICB0ZXh0
ID0gYXdhaXQgbG9hZFRleHQodGV4dEJsb2IpOworICAgICAgICAgICAgICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygidGV4dCIsICJIZWxsbyIpOworICAgICAgICAgICAgfSBjYXRjaCAoZXhjZXB0
aW9uKSB7CisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZChgQ2F1Z2h0IHVuZXhwZWN0ZWQgZXhj
ZXB0aW9uOiAke2V4Y2VwdGlvbi5uYW1lfWApOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICBhd2FpdCBVSUhlbHBlci5jb3B5VGV4dCgiV29ybGQiKTsKKyAgICAgICAgICAgIGl0ZW1zQWZ0
ZXJDaGFuZ2UgPSBhd2FpdCBuYXZpZ2F0b3IuY2xpcGJvYXJkLnJlYWQoKTsKKyAgICAgICAgICAg
IHNob3VsZEJlKCJpdGVtc0FmdGVyQ2hhbmdlLmxlbmd0aCIsICIxIik7CisKKyAgICAgICAgICAg
IHRyeSB7CisgICAgICAgICAgICAgICAgY29uc3QgdGV4dEJsb2IgPSBhd2FpdCBpdGVtc0JlZm9y
ZUNoYW5nZVswXS5nZXRUeXBlKCJ0ZXh0L3BsYWluIik7CisgICAgICAgICAgICAgICAgdGVzdEZh
aWxlZChgRXhwZWN0ZWQgZXhjZXB0aW9uIHdoZW4gY2FsbGluZyBnZXRUeXBlKCkuIEluc3RlYWQs
IGdvdCBCbG9iKCR7dGV4dEJsb2Iuc2l6ZX0gYnl0ZXMpYCk7CisgICAgICAgICAgICB9IGNhdGNo
IChleGNlcHRpb24pIHsKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKGBDYXVnaHQgZXhwZWN0
ZWQgZXhjZXB0aW9uOiAke2V4Y2VwdGlvbi5uYW1lfWApOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIGNvbnN0IHRleHRCbG9iID0gYXdhaXQgaXRl
bXNBZnRlckNoYW5nZVswXS5nZXRUeXBlKCJ0ZXh0L3BsYWluIik7CisgICAgICAgICAgICAgICAg
dGV4dCA9IGF3YWl0IGxvYWRUZXh0KHRleHRCbG9iKTsKKyAgICAgICAgICAgICAgICBzaG91bGRC
ZUVxdWFsVG9TdHJpbmcoInRleHQiLCAiV29ybGQiKTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKGV4
Y2VwdGlvbikgeworICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoYENhdWdodCB1bmV4cGVjdGVk
IGV4Y2VwdGlvbjogJHtleGNlcHRpb24ubmFtZX1gKTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBhZGRFdmVudExpc3Rl
bmVyKCJsb2FkIiwgcnVuVGVzdCk7CisgICAgPC9zY3JpcHQ+CisgICAgPGJvZHk+PC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9hc3luYy1jbGlwYm9hcmQv
Y2xpcGJvYXJkLWl0ZW0tZ2V0LXR5cGUtYmFzaWMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
ZWRpdGluZy9hc3luYy1jbGlwYm9hcmQvY2xpcGJvYXJkLWl0ZW0tZ2V0LXR5cGUtYmFzaWMtZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIxNDYzYjBhMzQzZWRiYzU2NWRmZGExNjY1ZmY1NzgxOWU4
MTRiZjQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL2FzeW5jLWNsaXBi
b2FyZC9jbGlwYm9hcmQtaXRlbS1nZXQtdHlwZS1iYXNpYy1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwxMyBAQAorVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgQ2xpcGJvYXJkSXRlbS5nZXRUeXBlKCkg
Y2FuIGJlIHVzZWQgdG8gZ2V0IGNsaXBib2FyZCBkYXRhIHdyaXR0ZW4gdXNpbmcgRGF0YVRyYW5z
ZmVyIEFQSXMuIFRvIHRlc3QgbWFudWFsbHksIGNsaWNrIHRoZSB0b3AgYnV0dG9uIHRvIHdyaXRl
IHRvIHRoZSBwYXN0ZWJvYXJkLCBhbmQgdGhlbiBjbGljayB0aGUgYm90dG9tIGJ1dHRvbiB0byBw
YXN0ZS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNz
YWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitQQVNTIGl0ZW1zLmxlbmd0aCBp
cyAxCitQQVNTIGl0ZW0udHlwZXMubGVuZ3RoIGlzIDMKK1BBU1MgdGV4dCBpcyAiQXBwbGUsIElu
Yy4iCitQQVNTIHVybCBpcyAiaHR0cHM6Ly93d3cuYXBwbGUuY29tLyIKK1BBU1MgZG9jLnF1ZXJ5
U2VsZWN0b3IoJ2EnKS5ocmVmIGlzICJodHRwczovL3d3dy5hcHBsZS5jb20vIgorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2VkaXRpbmcvYXN5bmMtY2xpcGJvYXJkL2NsaXBib2FyZC1pdGVtLWdldC10eXBl
LWJhc2ljLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL2FzeW5jLWNsaXBib2FyZC9jbGlwYm9h
cmQtaXRlbS1nZXQtdHlwZS1iYXNpYy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEzNWNjNTNmZWM3OWEzZmY0
NTBkNzgzMjY4NmVlZTYwNWQ4ODRhODcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9l
ZGl0aW5nL2FzeW5jLWNsaXBib2FyZC9jbGlwYm9hcmQtaXRlbS1nZXQtdHlwZS1iYXNpYy5odG1s
CkBAIC0wLDAgKzEsNjUgQEAKKzwhRE9DVFlQRSBodG1sPiA8IS0tIHdlYmtpdC10ZXN0LXJ1bm5l
ciBbIHVzZUZsZXhpYmxlVmlld3BvcnQ9dHJ1ZSBleHBlcmltZW50YWw6QXN5bmNDbGlwYm9hcmRB
UElFbmFibGVkPXRydWUgXSAtLT4KKzxodG1sPgorICAgIDxtZXRhIGNoYXJzZXQ9InV0ZjgiPgor
ICAgIDxoZWFkPgorICAgICAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9
ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEsIHVzZXItc2NhbGFibGU9bm8iPgorICAgICAg
ICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAg
ICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+
CisgICAgICAgIDxzY3JpcHQgc3JjPSIuL3Jlc291cmNlcy9hc3luYy1jbGlwYm9hcmQtaGVscGVy
cy5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIGJ1dHRvbiB7Cisg
ICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDBw
eDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICA8L2hlYWQ+CisgICAgPHNj
cmlwdD4KKyAgICAgICAganNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgYXN5bmMgZnVu
Y3Rpb24gcnVuVGVzdCgpIHsKKyAgICAgICAgICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3QgdmVy
aWZpZXMgdGhhdCBDbGlwYm9hcmRJdGVtLmdldFR5cGUoKSBjYW4gYmUgdXNlZCB0byBnZXQgY2xp
cGJvYXJkIGRhdGEgd3JpdHRlbiB1c2luZyBEYXRhVHJhbnNmZXIgQVBJcy4gVG8gdGVzdCBtYW51
YWxseSwgY2xpY2sgdGhlIHRvcCBidXR0b24gdG8gd3JpdGUgdG8gdGhlIHBhc3RlYm9hcmQsIGFu
ZCB0aGVuIGNsaWNrIHRoZSBib3R0b20gYnV0dG9uIHRvIHBhc3RlLiIpOworCisgICAgICAgICAg
ICBjb25zdCBjb3B5QnV0dG9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvcHkiKTsKKyAg
ICAgICAgICAgIGNvbnN0IHBhc3RlQnV0dG9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBh
c3RlIik7CisKKyAgICAgICAgICAgIGNvcHlCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2si
LCAoKSA9PiB7CisgICAgICAgICAgICAgICAgd3JpdGVUb0NsaXBib2FyZFVzaW5nRGF0YVRyYW5z
ZmVyKHsKKyAgICAgICAgICAgICAgICAgICAgInRleHQvaHRtbCIgOiAiPGEgaHJlZj0naHR0cHM6
Ly93d3cuYXBwbGUuY29tLyc+QXBwbGU8L2E+IiwKKyAgICAgICAgICAgICAgICAgICAgInRleHQv
dXJpLWxpc3QiIDogImh0dHBzOi8vd3d3LmFwcGxlLmNvbS8iLAorICAgICAgICAgICAgICAgICAg
ICAidGV4dC9wbGFpbiIgOiAiQXBwbGUsIEluYy4iCisgICAgICAgICAgICAgICAgfSk7CisgICAg
ICAgICAgICB9LCB7IG9uY2U6IHRydWUgfSk7CisKKyAgICAgICAgICAgIHBhc3RlQnV0dG9uLmFk
ZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgYXN5bmMgKCkgPT4geworICAgICAgICAgICAgICAgIHRy
eSB7CisgICAgICAgICAgICAgICAgICAgIGl0ZW1zID0gYXdhaXQgbmF2aWdhdG9yLmNsaXBib2Fy
ZC5yZWFkKCk7CisgICAgICAgICAgICAgICAgICAgIHNob3VsZEJlKCJpdGVtcy5sZW5ndGgiLCAi
MSIpOworICAgICAgICAgICAgICAgICAgICBpdGVtID0gaXRlbXNbMF07CisgICAgICAgICAgICAg
ICAgICAgIHNob3VsZEJlKCJpdGVtLnR5cGVzLmxlbmd0aCIsICIzIik7CisgICAgICAgICAgICAg
ICAgICAgIHRleHQgPSBhd2FpdCBsb2FkVGV4dChhd2FpdCBpdGVtLmdldFR5cGUoInRleHQvcGxh
aW4iKSk7CisgICAgICAgICAgICAgICAgICAgIHVybCA9IGF3YWl0IGxvYWRUZXh0KGF3YWl0IGl0
ZW0uZ2V0VHlwZSgidGV4dC91cmktbGlzdCIpKTsKKyAgICAgICAgICAgICAgICAgICAgZG9jID0g
YXdhaXQgbG9hZERvY3VtZW50KGF3YWl0IGl0ZW0uZ2V0VHlwZSgidGV4dC9odG1sIikpOworICAg
ICAgICAgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInRleHQiLCAiQXBwbGUsIElu
Yy4iKTsKKyAgICAgICAgICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ1cmwiLCAi
aHR0cHM6Ly93d3cuYXBwbGUuY29tLyIpOworICAgICAgICAgICAgICAgICAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoImRvYy5xdWVyeVNlbGVjdG9yKCdhJykuaHJlZiIsICJodHRwczovL3d3dy5h
cHBsZS5jb20vIik7CisgICAgICAgICAgICAgICAgfSBjYXRjaCAoZXhjZXB0aW9uKSB7CisgICAg
ICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoYENhdWdodCB1bmV4cGVjdGVkIGV4Y2VwdGlvbjog
JHtleGNlcHRpb24ubmFtZX1gKTsKKyAgICAgICAgICAgICAgICB9IGZpbmFsbHkgeworICAgICAg
ICAgICAgICAgICAgICBbY29weUJ1dHRvbiwgcGFzdGVCdXR0b25dLm1hcChidXR0b24gPT4gYnV0
dG9uLnJlbW92ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwgeyBvbmNlOiB0cnVlIH0pOworCisgICAgICAg
ICAgICBhd2FpdCBVSUhlbHBlci5hY3RpdmF0ZUVsZW1lbnQoY29weUJ1dHRvbik7CisgICAgICAg
ICAgICBhd2FpdCBVSUhlbHBlci5hY3RpdmF0ZUVsZW1lbnQocGFzdGVCdXR0b24pOworICAgICAg
ICB9CisKKyAgICAgICAgYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIHJ1blRlc3QpOworICAgIDwv
c2NyaXB0PgorICAgIDxib2R5PgorICAgICAgICA8YnV0dG9uIGlkPSJjb3B5Ij5DbGljayBoZXJl
IHRvIGNvcHk8L2J1dHRvbj4KKyAgICAgICAgPGJ1dHRvbiBpZD0icGFzdGUiPkNsaWNrIGhlcmUg
dG8gcGFzdGU8L2J1dHRvbj4KKyAgICAgICAgPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2Pgor
ICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL2FzeW5jLWNsaXBib2FyZC9yZXNvdXJjZXMv
YXN5bmMtY2xpcGJvYXJkLWhlbHBlcnMuanMgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL2FzeW5jLWNs
aXBib2FyZC9yZXNvdXJjZXMvYXN5bmMtY2xpcGJvYXJkLWhlbHBlcnMuanMKaW5kZXggOWY0OGI2
MDk2OTZkYjhiODIwZDZjMWZkYzhiYTFhNzEwYWJlZjdhNy4uNTc2NDdjOTUxZjQ3NTg5NWQzYTQ5
YTY2MjA0ZmY2MTMwYTBmNTBiOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZWRpdGluZy9hc3lu
Yy1jbGlwYm9hcmQvcmVzb3VyY2VzL2FzeW5jLWNsaXBib2FyZC1oZWxwZXJzLmpzCisrKyBiL0xh
eW91dFRlc3RzL2VkaXRpbmcvYXN5bmMtY2xpcGJvYXJkL3Jlc291cmNlcy9hc3luYy1jbGlwYm9h
cmQtaGVscGVycy5qcwpAQCAtMzAsNiArMzAsMTIgQEAgZnVuY3Rpb24gbG9hZEltYWdlKGJsb2Ip
IHsKICAgICB9KTsKIH0KIAorZnVuY3Rpb24gbG9hZERvY3VtZW50KGJsb2IpIHsKKyAgICByZXR1
cm4gbmV3IFByb21pc2UoYXN5bmMgcmVzb2x2ZSA9PiB7CisgICAgICAgIHJlc29sdmUobmV3IERP
TVBhcnNlcigpLnBhcnNlRnJvbVN0cmluZyhhd2FpdCBsb2FkVGV4dChibG9iKSwgInRleHQvaHRt
bCIpKTsKKyAgICB9KTsKK30KKwogZnVuY3Rpb24gd3JpdGVUb0NsaXBib2FyZFVzaW5nRGF0YVRy
YW5zZmVyKGRhdGEpIHsKICAgICBjb25zdCBpbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImlucHV0Iik7CiAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpbnB1dCk7CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGY0MTFmYzAyMTNiZjIyYzVk
MWMxZjU0YjQ5MzY4ZjgyZjFmNTdjNGIuLjE5MjhlMzkwMmZjYjgyNjRlOTM5MzViYzBkOGVmNWVi
NWMyMDZlM2EgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0
YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zCkBA
IC0xMTkxLDYgKzExOTEsOSBAQCBodHRwL3Rlc3RzL3NlY3VyaXR5L2NsaXBib2FyZC9jb3B5LXBh
c3RlLWh0bWwtYWNyb3NzLW9yaWdpbi1zdHJpcHMtbXNvLWxpc3QuaHRtbAogCiB3ZWJraXQub3Jn
L2IvMjAzMTAwIGVkaXRpbmcvYXN5bmMtY2xpcGJvYXJkL2NsaXBib2FyZC1yZWFkLWJhc2ljLmh0
bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8yMDMxMDAgZWRpdGluZy9hc3luYy1jbGlwYm9hcmQv
Y2xpcGJvYXJkLWNoYW5nZS1kYXRhLXdoaWxlLXJlYWRpbmcuaHRtbCBbIFNraXAgXQord2Via2l0
Lm9yZy9iLzIwMzEwMCBlZGl0aW5nL2FzeW5jLWNsaXBib2FyZC9jbGlwYm9hcmQtY2hhbmdlLWRh
dGEtd2hpbGUtZ2V0dGluZy10eXBlLmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8yMDMxMDAg
ZWRpdGluZy9hc3luYy1jbGlwYm9hcmQvY2xpcGJvYXJkLWl0ZW0tZ2V0LXR5cGUtYmFzaWMuaHRt
bCBbIFNraXAgXQord2Via2l0Lm9yZy9iLzIwMzEwMCBlZGl0aW5nL2FzeW5jLWNsaXBib2FyZC9j
bGlwYm9hcmQtZ2V0LXR5cGUtd2l0aC1vbGQtaXRlbXMuaHRtbCBbIFNraXAgXQogCiB3ZWJraXQu
b3JnL2IvMTQwNzgzIFsgUmVsZWFzZSBdIGVkaXRpbmcvcGFzdGVib2FyZC9jb3B5LXN0YW5kYWxv
bmUtaW1hZ2UuaHRtbCBbIEZhaWx1cmUgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2Iv
MTQwNzgzIFsgRGVidWcgXSBlZGl0aW5nL3Bhc3RlYm9hcmQvY29weS1zdGFuZGFsb25lLWltYWdl
Lmh0bWwgWyBTa2lwIF0gIyBEZWJ1ZyBBc3NlcnRpb24KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3Jlc291cmNlcy91aS1oZWxwZXIuanMgYi9MYXlvdXRUZXN0cy9yZXNvdXJjZXMvdWktaGVscGVy
LmpzCmluZGV4IGMwMTA2MTJkMGQ5ZjczNTY4ZmJiZGU0NmNlMWU1ZjAzZjExYmEyOGEuLjNjYzA5
MzEyYTg1MDc0MTc3Y2YxMDU3M2Q4NDVkMzE5MWRiYzc4ODAgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3Jlc291cmNlcy91aS1oZWxwZXIuanMKKysrIGIvTGF5b3V0VGVzdHMvcmVzb3VyY2VzL3Vp
LWhlbHBlci5qcwpAQCAtMTAzNiw0ICsxMDM2LDkgQEAgd2luZG93LlVJSGVscGVyID0gY2xhc3Mg
VUlIZWxwZXIgewogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQorCisg
ICAgc3RhdGljIGFzeW5jIGNvcHlUZXh0KHRleHQpIHsKKyAgICAgICAgY29uc3QgY29weVRleHRT
Y3JpcHQgPSBgdWlDb250cm9sbGVyLmNvcHlUZXh0KFxgJHt0ZXh0LnJlcGxhY2UoL2AvZywgIlxc
YCIpfVxgKSgpYDsKKyAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4gdGVzdFJ1
bm5lci5ydW5VSVNjcmlwdChjb3B5VGV4dFNjcmlwdCwgcmVzb2x2ZSkpOworICAgIH0KIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>