<?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>109041</bug_id>
          
          <creation_ts>2013-02-06 05:20:39 -0800</creation_ts>
          <short_desc>[chromium] move webrtc mocks to testrunner library</short_desc>
          <delta_ts>2013-02-12 00:49:24 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>91308</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter>jochen</reporter>
          <assigned_to>jochen</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>tommyw</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>826361</commentid>
    <comment_count>0</comment_count>
    <who name="">jochen</who>
    <bug_when>2013-02-06 05:20:39 -0800</bug_when>
    <thetext>for now, we&apos;ll stick with the mocks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829504</commentid>
    <comment_count>1</comment_count>
      <attachid>187526</attachid>
    <who name="">jochen</who>
    <bug_when>2013-02-11 01:41:51 -0800</bug_when>
    <thetext>Created attachment 187526
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829507</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-11 01:50:46 -0800</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829535</commentid>
    <comment_count>3</comment_count>
      <attachid>187526</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-11 02:58:04 -0800</bug_when>
    <thetext>Comment on attachment 187526
Patch

Attachment 187526 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/16497116

New failing tests:
fast/mediastream/RTCPeerConnection-statsSelector.html
fast/mediastream/RTCPeerConnection-stats.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829556</commentid>
    <comment_count>4</comment_count>
      <attachid>187526</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-11 03:32:32 -0800</bug_when>
    <thetext>Comment on attachment 187526
Patch

Attachment 187526 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/16488225

New failing tests:
fast/mediastream/RTCPeerConnection-statsSelector.html
fast/mediastream/RTCPeerConnection-stats.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829573</commentid>
    <comment_count>5</comment_count>
    <who name="">jochen</who>
    <bug_when>2013-02-11 04:16:11 -0800</bug_when>
    <thetext>The tests fail because of a bug in webkit_support. Fix here: https://codereview.chromium.org/12212107</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829860</commentid>
    <comment_count>6</comment_count>
      <attachid>187526</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-02-11 10:35:00 -0800</bug_when>
    <thetext>Comment on attachment 187526
Patch

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

&gt; Tools/DumpRenderTree/chromium/DumpRenderTree.cpp:91
&gt; +    MockWebKitPlatformSupport* getMockPlatform() { return m_mockPlatform.get(); }

getMockPlatform -&gt; mockPlatform (we tend to skip the &quot;get&quot; prefix)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830632</commentid>
    <comment_count>7</comment_count>
      <attachid>187787</attachid>
    <who name="">jochen</who>
    <bug_when>2013-02-12 00:11:20 -0800</bug_when>
    <thetext>Created attachment 187787
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830666</commentid>
    <comment_count>8</comment_count>
      <attachid>187787</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-12 00:49:20 -0800</bug_when>
    <thetext>Comment on attachment 187787
Patch for landing

Clearing flags on attachment: 187787

Committed r142593: &lt;http://trac.webkit.org/changeset/142593&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830667</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-12 00:49:24 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187526</attachid>
            <date>2013-02-11 01:41:51 -0800</date>
            <delta_ts>2013-02-12 00:11:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109041-20130211103822.patch</filename>
            <type>text/plain</type>
            <size>133155</size>
            <attacher>jochen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyNDMwCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNzcwZTI5ZmNhOTQzYTI5ZDA1Njg1YTRmNjZhN2YxMDgy
ODRiMzJjMi4uOTU2ZDc5MzJjMTI0MTgxZTMwNzBiMWM1YzVlNjYyMmY3ZWQ3ODhmYSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1
MiBAQAorMjAxMy0wMi0xMSAgSm9jaGVuIEVpc2luZ2VyICA8am9jaGVuQGNocm9taXVtLm9yZz4K
KworICAgICAgICBbY2hyb21pdW1dIG1vdmUgd2VicnRjIG1vY2tzIHRvIHRlc3RydW5uZXIgbGli
cmFyeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5
MDQxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpOgorICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL0R1bXBSZW5kZXJUcmVlLmNwcDoKKyAgICAgICAgKFdlYktpdFN1cHBvcnRU
ZXN0RW52aXJvbm1lbnQpOgorICAgICAgICAoV2ViS2l0U3VwcG9ydFRlc3RFbnZpcm9ubWVudDo6
Z2V0TW9ja1BsYXRmb3JtKToKKyAgICAgICAgKG1haW4pOgorICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL01vY2tXZWJLaXRQbGF0Zm9ybVN1cHBvcnQuY3BwOgorICAgICAgICAoTW9j
a1dlYktpdFBsYXRmb3JtU3VwcG9ydDo6c2V0SW50ZXJmYWNlcyk6CisgICAgICAgIChNb2NrV2Vi
S2l0UGxhdGZvcm1TdXBwb3J0OjpjcmVhdGVNZWRpYVN0cmVhbUNlbnRlcik6CisgICAgICAgIChN
b2NrV2ViS2l0UGxhdGZvcm1TdXBwb3J0OjpjcmVhdGVSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIp
OgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJLaXRQbGF0Zm9ybVN1
cHBvcnQuaDoKKyAgICAgICAgKFdlYlRlc3RSdW5uZXIpOgorICAgICAgICAoTW9ja1dlYktpdFBs
YXRmb3JtU3VwcG9ydCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1
bm5lci9wdWJsaWMvV2ViVGVzdEludGVyZmFjZXMuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdFBy
b3h5Lmg6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcik6CisgICAg
ICAgIChXZWJUZXN0UnVubmVyOjpXZWJUZXN0UHJveHk6OnNob3dDb250ZXh0TWVudSk6CisgICAg
ICAgIChXZWJUZXN0UnVubmVyOjpXZWJUZXN0UHJveHk6OnVzZXJNZWRpYUNsaWVudCk6CisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvTW9ja0NvbnN0cmFp
bnRzLmNwcDogUmVuYW1lZCBmcm9tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tD
b25zdHJhaW50cy5jcHAuCisgICAgICAgIChXZWJUZXN0UnVubmVyOjpNb2NrQ29uc3RyYWludHM6
OnZlcmlmeUNvbnN0cmFpbnRzKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXIpOgorICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL01vY2tDb25zdHJhaW50cy5o
OiBSZW5hbWVkIGZyb20gVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja0NvbnN0cmFp
bnRzLmguCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcik6CisgICAg
ICAgIChNb2NrQ29uc3RyYWludHMpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1Rlc3RSdW5uZXIvc3JjL01vY2tXZWJNZWRpYVN0cmVhbUNlbnRlci5jcHA6IFJlbmFtZWQgZnJv
bSBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViTWVkaWFTdHJlYW1DZW50ZXIu
Y3BwLgorICAgICAgICAoV2ViVGVzdFJ1bm5lcik6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpN
b2NrV2ViTWVkaWFTdHJlYW1DZW50ZXI6Ok1vY2tXZWJNZWRpYVN0cmVhbUNlbnRlcik6CisgICAg
ICAgIChXZWJUZXN0UnVubmVyOjpNb2NrV2ViTWVkaWFTdHJlYW1DZW50ZXI6OnF1ZXJ5TWVkaWFT
dHJlYW1Tb3VyY2VzKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6Ok1vY2tXZWJNZWRpYVN0cmVh
bUNlbnRlcjo6ZGlkRW5hYmxlTWVkaWFTdHJlYW1UcmFjayk6CisgICAgICAgIChXZWJUZXN0UnVu
bmVyOjpNb2NrV2ViTWVkaWFTdHJlYW1DZW50ZXI6OmRpZERpc2FibGVNZWRpYVN0cmVhbVRyYWNr
KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6Ok1vY2tXZWJNZWRpYVN0cmVhbUNlbnRlcjo6ZGlk
QWRkTWVkaWFTdHJlYW1UcmFjayk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpNb2NrV2ViTWVk
aWFTdHJlYW1DZW50ZXI6OmRpZFJlbW92ZU1lZGlhU3RyZWFtVHJhY2spOgorICAgICAgICAoV2Vi
VGVzdFJ1bm5lcjo6TW9ja1dlYk1lZGlhU3RyZWFtQ2VudGVyOjpkaWRTdG9wTG9jYWxNZWRpYVN0
cmVhbSk6CisgICAgICAgIChNb2NrV2ViQXVkaW9EZXN0aW5hdGlvbkNvbnN1bWVyKToKKyAgICAg
ICAgKFdlYlRlc3RSdW5uZXI6Ok1vY2tXZWJBdWRpb0Rlc3RpbmF0aW9uQ29uc3VtZXI6On5Nb2Nr
V2ViQXVkaW9EZXN0aW5hdGlvbkNvbnN1bWVyKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6Ok1v
Y2tXZWJNZWRpYVN0cmVhbUNlbnRlcjo6ZGlkQ3JlYXRlTWVkaWFTdHJlYW0pOgorICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL01vY2tXZWJNZWRpYVN0cmVh
bUNlbnRlci5oOiBSZW5hbWVkIGZyb20gVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9j
a1dlYk1lZGlhU3RyZWFtQ2VudGVyLmguCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2Vi
VGVzdFJ1bm5lcik6CisgICAgICAgIChNb2NrV2ViTWVkaWFTdHJlYW1DZW50ZXIpOgorICAgICAg
ICAoV2ViVGVzdFJ1bm5lcjo6TW9ja1dlYk1lZGlhU3RyZWFtQ2VudGVyOjpNb2NrV2ViTWVkaWFT
dHJlYW1DZW50ZXIpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5u
ZXIvc3JjL01vY2tXZWJSVENEVE1GU2VuZGVySGFuZGxlci5jcHA6IFJlbmFtZWQgZnJvbSBUb29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViUlRDRFRNRlNlbmRlckhhbmRsZXIuY3Bw
LgorICAgICAgICAoV2ViVGVzdFJ1bm5lcik6CisgICAgICAgIChEVE1GU2VuZGVyVG9uZVRhc2sp
OgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6RFRNRlNlbmRlclRvbmVUYXNrOjpEVE1GU2VuZGVy
VG9uZVRhc2spOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6TW9ja1dlYlJUQ0RUTUZTZW5kZXJI
YW5kbGVyOjpNb2NrV2ViUlRDRFRNRlNlbmRlckhhbmRsZXIpOgorICAgICAgICAoV2ViVGVzdFJ1
bm5lcjo6TW9ja1dlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyOjpzZXRDbGllbnQpOgorICAgICAgICAo
V2ViVGVzdFJ1bm5lcjo6TW9ja1dlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyOjpjdXJyZW50VG9uZUJ1
ZmZlcik6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpNb2NrV2ViUlRDRFRNRlNlbmRlckhhbmRs
ZXI6OmNhbkluc2VydERUTUYpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6TW9ja1dlYlJUQ0RU
TUZTZW5kZXJIYW5kbGVyOjppbnNlcnREVE1GKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9UZXN0UnVubmVyL3NyYy9Nb2NrV2ViUlRDRFRNRlNlbmRlckhhbmRsZXIuaDogUmVu
YW1lZCBmcm9tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJSVENEVE1GU2Vu
ZGVySGFuZGxlci5oLgorICAgICAgICAoV2ViVGVzdFJ1bm5lcik6CisgICAgICAgIChNb2NrV2Vi
UlRDRFRNRlNlbmRlckhhbmRsZXIpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6TW9ja1dlYlJU
Q0RUTUZTZW5kZXJIYW5kbGVyOjp0YXNrTGlzdCk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpN
b2NrV2ViUlRDRFRNRlNlbmRlckhhbmRsZXI6OmNsZWFyVG9uZUJ1ZmZlcik6CisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvTW9ja1dlYlJUQ0RhdGFDaGFu
bmVsSGFuZGxlci5jcHA6IFJlbmFtZWQgZnJvbSBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9Nb2NrV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcC4KKyAgICAgICAgKFdlYlRlc3RSdW5u
ZXIpOgorICAgICAgICAoRGF0YUNoYW5uZWxSZWFkeVN0YXRlVGFzayk6CisgICAgICAgIChXZWJU
ZXN0UnVubmVyOjpEYXRhQ2hhbm5lbFJlYWR5U3RhdGVUYXNrOjpEYXRhQ2hhbm5lbFJlYWR5U3Rh
dGVUYXNrKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6Ok1vY2tXZWJSVENEYXRhQ2hhbm5lbEhh
bmRsZXI6Ok1vY2tXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIpOgorICAgICAgICAoV2ViVGVzdFJ1
bm5lcjo6TW9ja1dlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6c2V0Q2xpZW50KToKKyAgICAgICAg
KFdlYlRlc3RSdW5uZXI6Ok1vY2tXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OmJ1ZmZlcmVkQW1v
dW50KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6Ok1vY2tXZWJSVENEYXRhQ2hhbm5lbEhhbmRs
ZXI6OnNlbmRTdHJpbmdEYXRhKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6Ok1vY2tXZWJSVENE
YXRhQ2hhbm5lbEhhbmRsZXI6OnNlbmRSYXdEYXRhKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6
Ok1vY2tXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OmNsb3NlKToKKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9Nb2NrV2ViUlRDRGF0YUNoYW5uZWxIYW5k
bGVyLmg6IFJlbmFtZWQgZnJvbSBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2Vi
UlRDRGF0YUNoYW5uZWxIYW5kbGVyLmguCisgICAgICAgIChXZWJUZXN0UnVubmVyKToKKyAgICAg
ICAgKE1vY2tXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIpOgorICAgICAgICAoV2ViVGVzdFJ1bm5l
cjo6TW9ja1dlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6dGFza0xpc3QpOgorICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL01vY2tXZWJSVENQZWVyQ29ubmVj
dGlvbkhhbmRsZXIuY3BwOiBSZW5hbWVkIGZyb20gVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5jcHAuCisgICAgICAgIChXZWJUZXN0
UnVubmVyKToKKyAgICAgICAgKFJUQ1Nlc3Npb25EZXNjcmlwdGlvblJlcXVlc3RTdWNjZWRlZFRh
c2spOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6UlRDU2Vzc2lvbkRlc2NyaXB0aW9uUmVxdWVz
dFN1Y2NlZGVkVGFzazo6UlRDU2Vzc2lvbkRlc2NyaXB0aW9uUmVxdWVzdFN1Y2NlZGVkVGFzayk6
CisgICAgICAgIChSVENTZXNzaW9uRGVzY3JpcHRpb25SZXF1ZXN0RmFpbGVkVGFzayk6CisgICAg
ICAgIChXZWJUZXN0UnVubmVyOjpSVENTZXNzaW9uRGVzY3JpcHRpb25SZXF1ZXN0RmFpbGVkVGFz
azo6UlRDU2Vzc2lvbkRlc2NyaXB0aW9uUmVxdWVzdEZhaWxlZFRhc2spOgorICAgICAgICAoUlRD
U3RhdHNSZXF1ZXN0U3VjY2VlZGVkVGFzayk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpSVENT
dGF0c1JlcXVlc3RTdWNjZWVkZWRUYXNrOjpSVENTdGF0c1JlcXVlc3RTdWNjZWVkZWRUYXNrKToK
KyAgICAgICAgKFJUQ1ZvaWRSZXF1ZXN0VGFzayk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpS
VENWb2lkUmVxdWVzdFRhc2s6OlJUQ1ZvaWRSZXF1ZXN0VGFzayk6CisgICAgICAgIChSVENQZWVy
Q29ubmVjdGlvblN0YXRlVGFzayk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpSVENQZWVyQ29u
bmVjdGlvblN0YXRlVGFzazo6UlRDUGVlckNvbm5lY3Rpb25TdGF0ZVRhc2spOgorICAgICAgICAo
UmVtb3RlRGF0YUNoYW5uZWxUYXNrKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlJlbW90ZURh
dGFDaGFubmVsVGFzazo6UmVtb3RlRGF0YUNoYW5uZWxUYXNrKToKKyAgICAgICAgKFdlYlRlc3RS
dW5uZXI6Ok1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI6Ok1vY2tXZWJSVENQZWVyQ29u
bmVjdGlvbkhhbmRsZXIpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6TW9ja1dlYlJUQ1BlZXJD
b25uZWN0aW9uSGFuZGxlcjo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpN
b2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyOjpjcmVhdGVPZmZlcik6CisgICAgICAgIChX
ZWJUZXN0UnVubmVyOjpNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyOjpjcmVhdGVBbnN3
ZXIpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6TW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFu
ZGxlcjo6c2V0TG9jYWxEZXNjcmlwdGlvbik6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpNb2Nr
V2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyOjpzZXRSZW1vdGVEZXNjcmlwdGlvbik6CisgICAg
ICAgIChXZWJUZXN0UnVubmVyOjpNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyOjpsb2Nh
bERlc2NyaXB0aW9uKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6Ok1vY2tXZWJSVENQZWVyQ29u
bmVjdGlvbkhhbmRsZXI6OnJlbW90ZURlc2NyaXB0aW9uKToKKyAgICAgICAgKFdlYlRlc3RSdW5u
ZXI6Ok1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI6OnVwZGF0ZUlDRSk6CisgICAgICAg
IChXZWJUZXN0UnVubmVyOjpNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyOjphZGRJQ0VD
YW5kaWRhdGUpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6TW9ja1dlYlJUQ1BlZXJDb25uZWN0
aW9uSGFuZGxlcjo6YWRkU3RyZWFtKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6Ok1vY2tXZWJS
VENQZWVyQ29ubmVjdGlvbkhhbmRsZXI6OnJlbW92ZVN0cmVhbSk6CisgICAgICAgIChXZWJUZXN0
UnVubmVyOjpNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyOjpnZXRTdGF0cyk6CisgICAg
ICAgIChXZWJUZXN0UnVubmVyOjpNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyOjpjcmVh
dGVEYXRhQ2hhbm5lbCk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpNb2NrV2ViUlRDUGVlckNv
bm5lY3Rpb25IYW5kbGVyOjpjcmVhdGVEVE1GU2VuZGVyKToKKyAgICAgICAgKFdlYlRlc3RSdW5u
ZXI6Ok1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI6OnN0b3ApOgorICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL01vY2tXZWJSVENQZWVyQ29ubmVj
dGlvbkhhbmRsZXIuaDogUmVuYW1lZCBmcm9tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L01vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaC4KKyAgICAgICAgKFdlYktpdCk6Cisg
ICAgICAgIChXZWJUZXN0UnVubmVyKToKKyAgICAgICAgKE1vY2tXZWJSVENQZWVyQ29ubmVjdGlv
bkhhbmRsZXIpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6TW9ja1dlYlJUQ1BlZXJDb25uZWN0
aW9uSGFuZGxlcjo6dGFza0xpc3QpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6TW9ja1dlYlJU
Q1BlZXJDb25uZWN0aW9uSGFuZGxlcjo6TW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcik6
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdElu
dGVyZmFjZXMuY3BwOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdEludGVyZmFjZXM6OlRl
c3RJbnRlcmZhY2VzKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RJbnRlcmZhY2VzOjpz
ZXREZWxlZ2F0ZSk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpUZXN0SW50ZXJmYWNlczo6ZGVs
ZWdhdGUpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcik6CisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdEludGVyZmFjZXMuaDoKKyAgICAgICAgKFRl
c3RJbnRlcmZhY2VzKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVu
bmVyL3NyYy9XZWJUZXN0SW50ZXJmYWNlcy5jcHA6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpX
ZWJUZXN0SW50ZXJmYWNlczo6Y3JlYXRlTWVkaWFTdHJlYW1DZW50ZXIpOgorICAgICAgICAoV2Vi
VGVzdFJ1bm5lcik6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJUZXN0SW50ZXJmYWNlczo6
Y3JlYXRlV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyKToKKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUZXN0UHJveHkuY3BwOgorICAgICAgICAo
V2ViVGVzdFJ1bm5lcjo6V2ViVGVzdFByb3h5QmFzZTo6dXNlck1lZGlhQ2xpZW50KToKKyAgICAg
ICAgKFdlYlRlc3RSdW5uZXIpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rl
c3RSdW5uZXIvc3JjL1dlYlVzZXJNZWRpYUNsaWVudE1vY2suY3BwOiBSZW5hbWVkIGZyb20gVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVXNlck1lZGlhQ2xpZW50TW9jay5jcHAuCisg
ICAgICAgIChXZWJUZXN0UnVubmVyKToKKyAgICAgICAgKFVzZXJNZWRpYVJlcXVlc3RUYXNrKToK
KyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlVzZXJNZWRpYVJlcXVlc3RUYXNrOjpVc2VyTWVkaWFS
ZXF1ZXN0VGFzayk6CisgICAgICAgIChNb2NrRXh0cmFEYXRhKToKKyAgICAgICAgKFdlYlRlc3RS
dW5uZXI6OldlYlVzZXJNZWRpYUNsaWVudE1vY2s6OldlYlVzZXJNZWRpYUNsaWVudE1vY2spOgor
ICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVXNlck1lZGlhQ2xpZW50TW9jazo6cmVxdWVzdFVz
ZXJNZWRpYSk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJVc2VyTWVkaWFDbGllbnRNb2Nr
OjpjYW5jZWxVc2VyTWVkaWFSZXF1ZXN0KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9UZXN0UnVubmVyL3NyYy9XZWJVc2VyTWVkaWFDbGllbnRNb2NrLmg6IFJlbmFtZWQgZnJv
bSBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJVc2VyTWVkaWFDbGllbnRNb2NrLmgu
CisgICAgICAgIChXZWJUZXN0UnVubmVyKToKKyAgICAgICAgKFdlYlVzZXJNZWRpYUNsaWVudE1v
Y2spOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVXNlck1lZGlhQ2xpZW50TW9jazo6fldl
YlVzZXJNZWRpYUNsaWVudE1vY2spOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVXNlck1l
ZGlhQ2xpZW50TW9jazo6dGFza0xpc3QpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1Rlc3RTaGVsbC5jcHA6CisgICAgICAgIChUZXN0U2hlbGw6OmluaXRpYWxpemUpOgorICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5oOgorICAgICAgICAoVGVz
dFNoZWxsKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5j
cHA6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaDoKKyAg
ICAgICAgKFdlYlZpZXdIb3N0KToKKwogMjAxMy0wMi0xMCAgVGltIEhvcnRvbiAgPHRpbW90aHlf
aG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIGF0dGVtcHRlZCBidWlsZCBm
aXggZm9yIEd0ayBhZnRlciByMTQyNDEyCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9EdW1wUmVuZGVyVHJlZS5neXBpIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRy
ZWUuZ3lwaQppbmRleCBhYWRiY2M5MzMxMmUwMjg0MmQ2NzI0MGU5NmYzNzE4ZDEyZjdmMDdjLi4z
MDQ2MDVjZWI2OGQ4ZGM5NTY3ODI3OWE5YzA4YWNhNGMyMmE2YjBhIDEwMDY0NAotLS0gYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpCisrKyBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cGkKQEAgLTgsMjAgKzgsMTAgQEAKICAgICAgICAgICAg
ICdjaHJvbWl1bS9EUlREZXZUb29sc0NsaWVudC5jcHAnLAogICAgICAgICAgICAgJ2Nocm9taXVt
L0RSVERldlRvb2xzQ2xpZW50LmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL0R1bXBSZW5kZXJU
cmVlLmNwcCcsCi0gICAgICAgICAgICAnY2hyb21pdW0vTW9ja0NvbnN0cmFpbnRzLmNwcCcsCi0g
ICAgICAgICAgICAnY2hyb21pdW0vTW9ja0NvbnN0cmFpbnRzLmgnLAogICAgICAgICAgICAgJ2No
cm9taXVtL01vY2tXZWJLaXRQbGF0Zm9ybVN1cHBvcnQuY3BwJywKICAgICAgICAgICAgICdjaHJv
bWl1bS9Nb2NrV2ViS2l0UGxhdGZvcm1TdXBwb3J0LmgnLAotICAgICAgICAgICAgJ2Nocm9taXVt
L01vY2tXZWJNZWRpYVN0cmVhbUNlbnRlci5jcHAnLAotICAgICAgICAgICAgJ2Nocm9taXVtL01v
Y2tXZWJNZWRpYVN0cmVhbUNlbnRlci5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9Nb2NrV2Vi
UHJlcmVuZGVyaW5nU3VwcG9ydC5jcHAnLAogICAgICAgICAgICAgJ2Nocm9taXVtL01vY2tXZWJQ
cmVyZW5kZXJpbmdTdXBwb3J0LmgnLAotICAgICAgICAgICAgJ2Nocm9taXVtL01vY2tXZWJSVENQ
ZWVyQ29ubmVjdGlvbkhhbmRsZXIuY3BwJywKLSAgICAgICAgICAgICdjaHJvbWl1bS9Nb2NrV2Vi
UlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmgnLAotICAgICAgICAgICAgJ2Nocm9taXVtL01vY2tX
ZWJSVENEVE1GU2VuZGVySGFuZGxlci5jcHAnLAotICAgICAgICAgICAgJ2Nocm9taXVtL01vY2tX
ZWJSVENEVE1GU2VuZGVySGFuZGxlci5oJywKLSAgICAgICAgICAgICdjaHJvbWl1bS9Nb2NrV2Vi
UlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcCcsCi0gICAgICAgICAgICAnY2hyb21pdW0vTW9ja1dl
YlJUQ0RhdGFDaGFubmVsSGFuZGxlci5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9Nb2NrV2Vi
U3BlZWNoSW5wdXRDb250cm9sbGVyLmNwcCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vTW9ja1dl
YlNwZWVjaElucHV0Q29udHJvbGxlci5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9Nb2NrV2Vi
U3BlZWNoUmVjb2duaXplci5jcHAnLApAQCAtNDgsOCArMzgsNiBAQAogICAgICAgICAgICAgJ2No
cm9taXVtL1dlYlRoZW1lRW5naW5lRFJUTWFjLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL1dl
YlRoZW1lRW5naW5lRFJUV2luLmNwcCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vV2ViVGhlbWVF
bmdpbmVEUlRXaW4uaCcsCi0gICAgICAgICAgICAnY2hyb21pdW0vV2ViVXNlck1lZGlhQ2xpZW50
TW9jay5jcHAnLAotICAgICAgICAgICAgJ2Nocm9taXVtL1dlYlVzZXJNZWRpYUNsaWVudE1vY2su
aCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwJywKICAgICAgICAgICAg
ICdjaHJvbWl1bS9XZWJWaWV3SG9zdC5oJywKICAgICAgICAgXSwKQEAgLTc1LDI3ICs2MywzOSBA
QAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0dhbWVwYWRDb250cm9sbGVy
LmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0tleUNvZGVNYXBwaW5n
LmNwcCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvS2V5Q29kZU1hcHBp
bmcuaCcsCisgICAgICAgICAgICAnY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvTW9ja0NvbnN0cmFp
bnRzLmNwcCcsCisgICAgICAgICAgICAnY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvTW9ja0NvbnN0
cmFpbnRzLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL01vY2tHcmFt
bWFyQ2hlY2suY3BwJywKICAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9Nb2Nr
R3JhbW1hckNoZWNrLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL01v
Y2tTcGVsbENoZWNrLmNwcCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMv
TW9ja1NwZWxsQ2hlY2suaCcsCisgICAgICAgICAgICAnY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMv
TW9ja1dlYk1lZGlhU3RyZWFtQ2VudGVyLmNwcCcsCisgICAgICAgICAgICAnY2hyb21pdW0vVGVz
dFJ1bm5lci9zcmMvTW9ja1dlYk1lZGlhU3RyZWFtQ2VudGVyLmgnLAorICAgICAgICAgICAgJ2No
cm9taXVtL1Rlc3RSdW5uZXIvc3JjL01vY2tXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwJywK
KyAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9Nb2NrV2ViUlRDRGF0YUNoYW5u
ZWxIYW5kbGVyLmgnLAorICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL01vY2tX
ZWJSVENEVE1GU2VuZGVySGFuZGxlci5jcHAnLAorICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RS
dW5uZXIvc3JjL01vY2tXZWJSVENEVE1GU2VuZGVySGFuZGxlci5oJywKKyAgICAgICAgICAgICdj
aHJvbWl1bS9UZXN0UnVubmVyL3NyYy9Nb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmNw
cCcsCisgICAgICAgICAgICAnY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvTW9ja1dlYlJUQ1BlZXJD
b25uZWN0aW9uSGFuZGxlci5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0UnVubmVyL3Ny
Yy9TcGVsbENoZWNrQ2xpZW50LmNwcCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vVGVzdFJ1bm5l
ci9zcmMvU3BlbGxDaGVja0NsaWVudC5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0UnVu
bmVyL3NyYy9UZXN0Q29tbW9uLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIv
c3JjL1Rlc3RJbnRlcmZhY2VzLmNwcCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vVGVzdFJ1bm5l
ci9zcmMvVGVzdEludGVyZmFjZXMuaCcsCi0gICAgICAgICAgICAnY2hyb21pdW0vVGVzdFJ1bm5l
ci9zcmMvVGV4dElucHV0Q29udHJvbGxlci5jcHAnLAotICAgICAgICAgICAgJ2Nocm9taXVtL1Rl
c3RSdW5uZXIvc3JjL1RleHRJbnB1dENvbnRyb2xsZXIuaCcsCisgICAgICAgICAgICAnY2hyb21p
dW0vVGVzdFJ1bm5lci9zcmMvVGVzdFBsdWdpbi5jcHAnLAorICAgICAgICAgICAgJ2Nocm9taXVt
L1Rlc3RSdW5uZXIvc3JjL1Rlc3RQbHVnaW4uaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vVGVz
dFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5jcHAnLAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RS
dW5uZXIvc3JjL1Rlc3RSdW5uZXIuaCcsCisgICAgICAgICAgICAnY2hyb21pdW0vVGVzdFJ1bm5l
ci9zcmMvVGV4dElucHV0Q29udHJvbGxlci5jcHAnLAorICAgICAgICAgICAgJ2Nocm9taXVtL1Rl
c3RSdW5uZXIvc3JjL1RleHRJbnB1dENvbnRyb2xsZXIuaCcsCiAgICAgICAgICAgICAnY2hyb21p
dW0vVGVzdFJ1bm5lci9zcmMvV2ViUGVybWlzc2lvbnMuY3BwJywKICAgICAgICAgICAgICdjaHJv
bWl1bS9UZXN0UnVubmVyL3NyYy9XZWJQZXJtaXNzaW9ucy5oJywKICAgICAgICAgICAgICdjaHJv
bWl1bS9UZXN0UnVubmVyL3NyYy9XZWJQcmVmZXJlbmNlcy5jcHAnLAogICAgICAgICAgICAgJ2No
cm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRhc2suY3BwJywKICAgICAgICAgICAgICdjaHJvbWl1
bS9UZXN0UnVubmVyL3NyYy9XZWJUZXN0SW50ZXJmYWNlcy5jcHAnLAotICAgICAgICAgICAgJ2No
cm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RQbHVnaW4uY3BwJywKLSAgICAgICAgICAgICdjaHJv
bWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UGx1Z2luLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVt
L1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RQcm94eS5jcHAnLAorICAgICAgICAgICAgJ2Nocm9taXVt
L1Rlc3RSdW5uZXIvc3JjL1dlYlVzZXJNZWRpYUNsaWVudE1vY2suY3BwJywKKyAgICAgICAgICAg
ICdjaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJVc2VyTWVkaWFDbGllbnRNb2NrLmgnLAogICAg
ICAgICBdLAogICAgICAgICAndGVzdF9wbHVnaW5fZmlsZXMnOiBbCiAgICAgICAgICAgICAnVGVz
dE5ldHNjYXBlUGx1Z0luL1BsdWdpbk9iamVjdC5jcHAnLApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vRHVtcFJlbmRlclRyZWUuY3BwIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vRHVtcFJlbmRlclRyZWUuY3BwCmluZGV4IGM0OTIxMWM0NThhYWU0ODEz
YTIxMmMwYTA1OTc5MTRkNDBmNDNhNzYuLjc4NzhiZTBkYjg4NDhiZTI5ZGYyZDZmMjBmNjI5MDU3
ODllMjE3MjIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0R1bXBS
ZW5kZXJUcmVlLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EdW1wUmVu
ZGVyVHJlZS5jcHAKQEAgLTg3LDYgKzg3LDkgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgd2Vi
a2l0X3N1cHBvcnQ6OlRlYXJEb3duVGVzdEVudmlyb25tZW50KCk7CiAgICAgfQorCisgICAgTW9j
a1dlYktpdFBsYXRmb3JtU3VwcG9ydCogZ2V0TW9ja1BsYXRmb3JtKCkgeyByZXR1cm4gbV9tb2Nr
UGxhdGZvcm0uZ2V0KCk7IH0KKwogcHJpdmF0ZToKICAgICBPd25QdHI8TW9ja1dlYktpdFBsYXRm
b3JtU3VwcG9ydD4gbV9tb2NrUGxhdGZvcm07CiB9OwpAQCAtMjUyLDcgKzI1NSw3IEBAIGludCBt
YWluKGludCBhcmdjLCBjaGFyKiBhcmd2W10pCiAgICAgICAgICAgICAvLyAweDIwMDAwMDAwbXMg
aXMgYmlnIGVub3VnaCBmb3IgdGhlIHB1cnBvc2UgdG8gYXZvaWQgdGltZW91dCBpbiBkZWJ1Z2dp
bmcuCiAgICAgICAgICAgICBzaGVsbC5zZXRMYXlvdXRUZXN0VGltZW91dCgweDIwMDAwMDAwKTsK
ICAgICAgICAgfQotICAgICAgICBzaGVsbC5pbml0aWFsaXplKCk7CisgICAgICAgIHNoZWxsLmlu
aXRpYWxpemUodGVzdEVudmlyb25tZW50LmdldE1vY2tQbGF0Zm9ybSgpKTsKICAgICAgICAgaWYg
KHNlcnZlck1vZGUgJiYgIXRlc3RzLnNpemUoKSkgewogI2lmIE9TKEFORFJPSUQpCiAgICAgICAg
ICAgICAvLyBTZW5kIGEgc2lnbmFsIHRvIGhvc3QgdG8gaW5kaWNhdGUgRFJUIGlzIHJlYWR5IHRv
IHByb2Nlc3MgY29tbWFuZHMuCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9Nb2NrQ29uc3RyYWludHMuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
TW9ja0NvbnN0cmFpbnRzLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTRmMTU4
NDJlZjBhNTliN2ExYTk3YWNmYzUyZDY1Nzk4ZGIxYTMxYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9N
b2NrQ29uc3RyYWludHMuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNzkgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0
cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0g
KiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRl
ICJjb25maWcuaCIKLSNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotCi0jaW5jbHVkZSAiTW9ja0Nv
bnN0cmFpbnRzLmgiCi0KLSNpbmNsdWRlIDxwdWJsaWMvV2ViTWVkaWFDb25zdHJhaW50cy5oPgot
Ci11c2luZyBuYW1lc3BhY2UgV2ViS2l0OwotCi1uYW1lc3BhY2UgTW9ja0NvbnN0cmFpbnRzIHsK
LQotc3RhdGljIGJvb2wgaXNTdXBwb3J0ZWQoY29uc3QgV2ViU3RyaW5nJiBjb25zdHJhaW50KQot
ewotICAgIHJldHVybiBjb25zdHJhaW50ID09ICJ2YWxpZF9hbmRfc3VwcG9ydGVkXzEiIHx8IGNv
bnN0cmFpbnQgPT0gInZhbGlkX2FuZF9zdXBwb3J0ZWRfMiI7Ci19Ci0KLXN0YXRpYyBib29sIGlz
VmFsaWQoY29uc3QgV2ViU3RyaW5nJiBjb25zdHJhaW50KQotewotICAgIHJldHVybiBpc1N1cHBv
cnRlZChjb25zdHJhaW50KSB8fCBjb25zdHJhaW50ID09ICJ2YWxpZF9idXRfdW5zdXBwb3J0ZWRf
MSIgfHwgY29uc3RyYWludCA9PSAidmFsaWRfYnV0X3Vuc3VwcG9ydGVkXzIiOwotfQotCi1ib29s
IHZlcmlmeUNvbnN0cmFpbnRzKGNvbnN0IFdlYk1lZGlhQ29uc3RyYWludHMmIGNvbnN0cmFpbnRz
KQotewotICAgIFdlYlZlY3RvcjxXZWJNZWRpYUNvbnN0cmFpbnQ+IG1hbmRhdG9yeUNvbnN0cmFp
bnRzOwotICAgIGNvbnN0cmFpbnRzLmdldE1hbmRhdG9yeUNvbnN0cmFpbnRzKG1hbmRhdG9yeUNv
bnN0cmFpbnRzKTsKLSAgICBpZiAobWFuZGF0b3J5Q29uc3RyYWludHMuc2l6ZSgpKSB7Ci0gICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWFuZGF0b3J5Q29uc3RyYWludHMuc2l6ZSgpOyAr
K2kpIHsKLSAgICAgICAgICAgIGNvbnN0IFdlYk1lZGlhQ29uc3RyYWludCYgY3VyciA9IG1hbmRh
dG9yeUNvbnN0cmFpbnRzW2ldOwotICAgICAgICAgICAgaWYgKCFpc1N1cHBvcnRlZChjdXJyLm1f
bmFtZSkgfHwgY3Vyci5tX3ZhbHVlICE9ICIxIikKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBXZWJWZWN0b3I8V2ViTWVkaWFDb25zdHJhaW50
PiBvcHRpb25hbENvbnN0cmFpbnRzOwotICAgIGNvbnN0cmFpbnRzLmdldE9wdGlvbmFsQ29uc3Ry
YWludHMob3B0aW9uYWxDb25zdHJhaW50cyk7Ci0gICAgaWYgKG9wdGlvbmFsQ29uc3RyYWludHMu
c2l6ZSgpKSB7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb3B0aW9uYWxDb25zdHJh
aW50cy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgY29uc3QgV2ViTWVkaWFDb25zdHJhaW50
JiBjdXJyID0gb3B0aW9uYWxDb25zdHJhaW50c1tpXTsKLSAgICAgICAgICAgIGlmICghaXNWYWxp
ZChjdXJyLm1fbmFtZSkgfHwgY3Vyci5tX3ZhbHVlICE9ICIwIikKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQot
fSAvLyBuYW1lc3BhY2UgTW9ja0NvbnN0cmFpbnRzCi0KLSNlbmRpZiAvLyBFTkFCTEUoTUVESUFf
U1RSRUFNKQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja0Nv
bnN0cmFpbnRzLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrQ29uc3RyYWlu
dHMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmJmMGRhOWIxYmE4YjhjMTg4NjMw
NDg0NjdkZjBiY2ExZDM4ZjNmYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrQ29uc3RyYWludHMu
aAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwot
ICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAot
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIE1vY2tDb25zdHJhaW50c19o
Ci0jZGVmaW5lIE1vY2tDb25zdHJhaW50c19oCi0KLSNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQot
Ci1uYW1lc3BhY2UgV2ViS2l0IHsKLWNsYXNzIFdlYk1lZGlhQ29uc3RyYWludHM7Ci19Ci0KLW5h
bWVzcGFjZSBNb2NrQ29uc3RyYWludHMgewotCi1ib29sIHZlcmlmeUNvbnN0cmFpbnRzKGNvbnN0
IFdlYktpdDo6V2ViTWVkaWFDb25zdHJhaW50cyYpOwotCi19IC8vIG5hbWVzcGFjZSBNb2NrQ29u
c3RyYWludHMKLQotI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCi0KLSNlbmRpZiAvLyBN
b2NrQ29uc3RyYWludHNfaAotCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9Nb2NrV2ViS2l0UGxhdGZvcm1TdXBwb3J0LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL01vY2tXZWJLaXRQbGF0Zm9ybVN1cHBvcnQuY3BwCmluZGV4IDc5YWU5ZjIyOWQ0
NTg4YWE0ZjFlNzliNjM1YTQ4NWIzZTg2ZTM5MjguLmZlOGUxMDA1N2U3N2FiMWNhMzIwODAzMTMx
YTA0NjZjMjAwODVlNzkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L01vY2tXZWJLaXRQbGF0Zm9ybVN1cHBvcnQuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL01vY2tXZWJLaXRQbGF0Zm9ybVN1cHBvcnQuY3BwCkBAIC0zMSwxMiArMzEsMTMg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJNb2NrV2ViS2l0UGxhdGZvcm1TdXBw
b3J0LmgiCiAKLSNpbmNsdWRlICJNb2NrV2ViTWVkaWFTdHJlYW1DZW50ZXIuaCIKLSNpbmNsdWRl
ICJNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmgiCisjaW5jbHVkZSAiV2ViVGVzdElu
dGVyZmFjZXMuaCIKKyNpbmNsdWRlIDxwdWJsaWMvV2ViTWVkaWFTdHJlYW1DZW50ZXIuaD4KICNp
bmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAK
IHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Cit1c2luZyBuYW1lc3BhY2UgV2ViVGVzdFJ1bm5lcjsK
IAogUGFzc093blB0cjxNb2NrV2ViS2l0UGxhdGZvcm1TdXBwb3J0PiBNb2NrV2ViS2l0UGxhdGZv
cm1TdXBwb3J0OjpjcmVhdGUoKQogewpAQCAtNTEsNiArNTIsMTEgQEAgTW9ja1dlYktpdFBsYXRm
b3JtU3VwcG9ydDo6fk1vY2tXZWJLaXRQbGF0Zm9ybVN1cHBvcnQoKQogewogfQogCit2b2lkIE1v
Y2tXZWJLaXRQbGF0Zm9ybVN1cHBvcnQ6OnNldEludGVyZmFjZXMoV2ViVGVzdEludGVyZmFjZXMq
IGludGVyZmFjZXMpCit7CisgICAgbV9pbnRlcmZhY2VzID0gaW50ZXJmYWNlczsKK30KKwogdm9p
ZCBNb2NrV2ViS2l0UGxhdGZvcm1TdXBwb3J0OjpjcnlwdG9ncmFwaGljYWxseVJhbmRvbVZhbHVl
cyh1bnNpZ25lZCBjaGFyKiwgc2l6ZV90KQogewogICAgIENSQVNIKCk7CkBAIC01OSwxNCArNjUs
MTggQEAgdm9pZCBNb2NrV2ViS2l0UGxhdGZvcm1TdXBwb3J0OjpjcnlwdG9ncmFwaGljYWxseVJh
bmRvbVZhbHVlcyh1bnNpZ25lZCBjaGFyKiwgc2kKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQog
V2ViTWVkaWFTdHJlYW1DZW50ZXIqIE1vY2tXZWJLaXRQbGF0Zm9ybVN1cHBvcnQ6OmNyZWF0ZU1l
ZGlhU3RyZWFtQ2VudGVyKFdlYk1lZGlhU3RyZWFtQ2VudGVyQ2xpZW50KiBjbGllbnQpCiB7Cisg
ICAgQVNTRVJUKG1faW50ZXJmYWNlcyk7CisKICAgICBpZiAoIW1fbW9ja01lZGlhU3RyZWFtQ2Vu
dGVyKQotICAgICAgICBtX21vY2tNZWRpYVN0cmVhbUNlbnRlciA9IGFkb3B0UHRyKG5ldyBNb2Nr
V2ViTWVkaWFTdHJlYW1DZW50ZXIoY2xpZW50KSk7CisgICAgICAgIG1fbW9ja01lZGlhU3RyZWFt
Q2VudGVyID0gYWRvcHRQdHIobV9pbnRlcmZhY2VzLT5jcmVhdGVNZWRpYVN0cmVhbUNlbnRlcihj
bGllbnQpKTsKIAogICAgIHJldHVybiBtX21vY2tNZWRpYVN0cmVhbUNlbnRlci5nZXQoKTsKIH0K
IAogV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyKiBNb2NrV2ViS2l0UGxhdGZvcm1TdXBwb3J0
OjpjcmVhdGVSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIoV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5k
bGVyQ2xpZW50KiBjbGllbnQpCiB7Ci0gICAgcmV0dXJuIG5ldyBNb2NrV2ViUlRDUGVlckNvbm5l
Y3Rpb25IYW5kbGVyKGNsaWVudCk7CisgICAgQVNTRVJUKG1faW50ZXJmYWNlcyk7CisKKyAgICBy
ZXR1cm4gbV9pbnRlcmZhY2VzLT5jcmVhdGVXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIoY2xp
ZW50KTsKIH0KICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYktpdFBsYXRmb3JtU3VwcG9ydC5oIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYktpdFBsYXRmb3JtU3VwcG9ydC5o
CmluZGV4IDFlNTQ0MzgwOTI1OWE1ZDg4NzI2NDhmNjUxNDQ4MWRhOGU0YzYzYzIuLjIyMDIyMTU1
Zjk0NWRkZGQ2NGEyMTMxNmI0ZGFkZDQyZGIyODk5MGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaAorKysgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViS2l0UGxhdGZvcm1TdXBwb3J0LmgKQEAg
LTM1LDExICszNSwxNiBAQAogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYv
UGFzc093blB0ci5oPgogCituYW1lc3BhY2UgV2ViVGVzdFJ1bm5lciB7CitjbGFzcyBXZWJUZXN0
SW50ZXJmYWNlczsKK30KKwogY2xhc3MgTW9ja1dlYktpdFBsYXRmb3JtU3VwcG9ydCA6IHB1Ymxp
YyBXZWJLaXQ6OlBsYXRmb3JtIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxNb2Nr
V2ViS2l0UGxhdGZvcm1TdXBwb3J0PiBjcmVhdGUoKTsKICAgICB+TW9ja1dlYktpdFBsYXRmb3Jt
U3VwcG9ydCgpOwogCisgICAgdm9pZCBzZXRJbnRlcmZhY2VzKFdlYlRlc3RSdW5uZXI6OldlYlRl
c3RJbnRlcmZhY2VzKik7CiAgICAgdmlydHVhbCB2b2lkIGNyeXB0b2dyYXBoaWNhbGx5UmFuZG9t
VmFsdWVzKHVuc2lnbmVkIGNoYXIqIGJ1ZmZlciwgc2l6ZV90IGxlbmd0aCkgT1ZFUlJJREU7CiAK
ICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQpAQCAtNTAsNiArNTUsOCBAQCBwdWJsaWM6CiBwcml2
YXRlOgogICAgIE1vY2tXZWJLaXRQbGF0Zm9ybVN1cHBvcnQoKTsKIAorICAgIFdlYlRlc3RSdW5u
ZXI6OldlYlRlc3RJbnRlcmZhY2VzKiBtX2ludGVyZmFjZXM7CisKICNpZiBFTkFCTEUoTUVESUFf
U1RSRUFNKQogICAgIE93blB0cjxXZWJLaXQ6OldlYk1lZGlhU3RyZWFtQ2VudGVyPiBtX21vY2tN
ZWRpYVN0cmVhbUNlbnRlcjsKICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0t
Z2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYk1lZGlhU3RyZWFtQ2Vu
dGVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJNZWRpYVN0cmVh
bUNlbnRlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkzZGM2YTZkNzU4NjZl
YWRjYjY4MTQ0YmQyYTdhNThiZjY5ZDU2NjAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYk1l
ZGlhU3RyZWFtQ2VudGVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDExMSArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRp
c3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
LSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1
ZGUgImNvbmZpZy5oIgotI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0KLSNpbmNsdWRlICJNb2Nr
V2ViTWVkaWFTdHJlYW1DZW50ZXIuaCIKLQotI2luY2x1ZGUgPHB1YmxpYy9XZWJBdWRpb0Rlc3Rp
bmF0aW9uQ29uc3VtZXIuaD4KLSNpbmNsdWRlIDxwdWJsaWMvV2ViTWVkaWFTdHJlYW0uaD4KLSNp
bmNsdWRlIDxwdWJsaWMvV2ViTWVkaWFTdHJlYW1DZW50ZXJDbGllbnQuaD4KLSNpbmNsdWRlIDxw
dWJsaWMvV2ViTWVkaWFTdHJlYW1Tb3VyY2UuaD4KLSNpbmNsdWRlIDxwdWJsaWMvV2ViTWVkaWFT
dHJlYW1Tb3VyY2VzUmVxdWVzdC5oPgotI2luY2x1ZGUgPHB1YmxpYy9XZWJNZWRpYVN0cmVhbVRy
YWNrLmg+Ci0jaW5jbHVkZSA8cHVibGljL1dlYlZlY3Rvci5oPgotCi11c2luZyBuYW1lc3BhY2Ug
V2ViS2l0OwotCi1Nb2NrV2ViTWVkaWFTdHJlYW1DZW50ZXI6Ok1vY2tXZWJNZWRpYVN0cmVhbUNl
bnRlcihXZWJNZWRpYVN0cmVhbUNlbnRlckNsaWVudCogY2xpZW50KQotewotfQotCi12b2lkIE1v
Y2tXZWJNZWRpYVN0cmVhbUNlbnRlcjo6cXVlcnlNZWRpYVN0cmVhbVNvdXJjZXMoY29uc3QgV2Vi
TWVkaWFTdHJlYW1Tb3VyY2VzUmVxdWVzdCYgcmVxdWVzdCkKLXsKLSAgICBXZWJWZWN0b3I8V2Vi
TWVkaWFTdHJlYW1Tb3VyY2U+IGF1ZGlvU291cmNlcywgdmlkZW9Tb3VyY2VzOwotICAgIHJlcXVl
c3QuZGlkQ29tcGxldGVRdWVyeShhdWRpb1NvdXJjZXMsIHZpZGVvU291cmNlcyk7Ci19Ci0KLXZv
aWQgTW9ja1dlYk1lZGlhU3RyZWFtQ2VudGVyOjpkaWRFbmFibGVNZWRpYVN0cmVhbVRyYWNrKGNv
bnN0IFdlYk1lZGlhU3RyZWFtJiwgY29uc3QgV2ViTWVkaWFTdHJlYW1UcmFjayYgY29tcG9uZW50
KQotewotICAgIGNvbXBvbmVudC5zb3VyY2UoKS5zZXRSZWFkeVN0YXRlKFdlYk1lZGlhU3RyZWFt
U291cmNlOjpSZWFkeVN0YXRlTGl2ZSk7Ci19Ci0KLXZvaWQgTW9ja1dlYk1lZGlhU3RyZWFtQ2Vu
dGVyOjpkaWREaXNhYmxlTWVkaWFTdHJlYW1UcmFjayhjb25zdCBXZWJNZWRpYVN0cmVhbSYsIGNv
bnN0IFdlYk1lZGlhU3RyZWFtVHJhY2smIGNvbXBvbmVudCkKLXsKLSAgICBjb21wb25lbnQuc291
cmNlKCkuc2V0UmVhZHlTdGF0ZShXZWJNZWRpYVN0cmVhbVNvdXJjZTo6UmVhZHlTdGF0ZU11dGVk
KTsKLX0KLQotYm9vbCBNb2NrV2ViTWVkaWFTdHJlYW1DZW50ZXI6OmRpZEFkZE1lZGlhU3RyZWFt
VHJhY2soY29uc3QgV2ViTWVkaWFTdHJlYW0mLCBjb25zdCBXZWJNZWRpYVN0cmVhbVRyYWNrJikK
LXsKLSAgICByZXR1cm4gdHJ1ZTsKLX07Ci0KLWJvb2wgTW9ja1dlYk1lZGlhU3RyZWFtQ2VudGVy
OjpkaWRSZW1vdmVNZWRpYVN0cmVhbVRyYWNrKGNvbnN0IFdlYk1lZGlhU3RyZWFtJiwgY29uc3Qg
V2ViTWVkaWFTdHJlYW1UcmFjayYpCi17Ci0gICAgcmV0dXJuIHRydWU7Ci19OwotCi12b2lkIE1v
Y2tXZWJNZWRpYVN0cmVhbUNlbnRlcjo6ZGlkU3RvcExvY2FsTWVkaWFTdHJlYW0oY29uc3QgV2Vi
TWVkaWFTdHJlYW0mIHN0cmVhbSkKLXsKLSAgICBXZWJWZWN0b3I8V2ViTWVkaWFTdHJlYW1UcmFj
az4gYXVkaW9Db21wb25lbnRzOwotICAgIHN0cmVhbS5hdWRpb1NvdXJjZXMoYXVkaW9Db21wb25l
bnRzKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGF1ZGlvQ29tcG9uZW50cy5zaXplKCk7
ICsraSkKLSAgICAgICAgYXVkaW9Db21wb25lbnRzW2ldLnNvdXJjZSgpLnNldFJlYWR5U3RhdGUo
V2ViTWVkaWFTdHJlYW1Tb3VyY2U6OlJlYWR5U3RhdGVFbmRlZCk7Ci0KLSAgICBXZWJWZWN0b3I8
V2ViTWVkaWFTdHJlYW1UcmFjaz4gdmlkZW9Db21wb25lbnRzOwotICAgIHN0cmVhbS52aWRlb1Nv
dXJjZXModmlkZW9Db21wb25lbnRzKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHZpZGVv
Q29tcG9uZW50cy5zaXplKCk7ICsraSkKLSAgICAgICAgdmlkZW9Db21wb25lbnRzW2ldLnNvdXJj
ZSgpLnNldFJlYWR5U3RhdGUoV2ViTWVkaWFTdHJlYW1Tb3VyY2U6OlJlYWR5U3RhdGVFbmRlZCk7
Ci19Ci0KLWNsYXNzIE1vY2tXZWJBdWRpb0Rlc3RpbmF0aW9uQ29uc3VtZXIgOiBwdWJsaWMgV2Vi
QXVkaW9EZXN0aW5hdGlvbkNvbnN1bWVyIHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5Nb2NrV2Vi
QXVkaW9EZXN0aW5hdGlvbkNvbnN1bWVyKCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldEZvcm1h
dChzaXplX3QgbnVtYmVyT2ZDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSkgT1ZFUlJJREUgeyB9
Ci0gICAgdmlydHVhbCB2b2lkIGNvbnN1bWVBdWRpbyhjb25zdCBXZWJWZWN0b3I8Y29uc3QgZmxv
YXQqPiYsIHNpemVfdCBudW1iZXJfb2ZfZnJhbWVzKSBPVkVSUklERSB7IH0KLX07Ci0KLXZvaWQg
TW9ja1dlYk1lZGlhU3RyZWFtQ2VudGVyOjpkaWRDcmVhdGVNZWRpYVN0cmVhbShXZWJNZWRpYVN0
cmVhbSYgc3RyZWFtKQotewotICAgIFdlYlZlY3RvcjxXZWJNZWRpYVN0cmVhbVRyYWNrPiBhdWRp
b0NvbXBvbmVudHM7Ci0gICAgc3RyZWFtLmF1ZGlvU291cmNlcyhhdWRpb0NvbXBvbmVudHMpOwot
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXVkaW9Db21wb25lbnRzLnNpemUoKTsgKytpKSB7
Ci0gICAgICAgIFdlYk1lZGlhU3RyZWFtU291cmNlIHNvdXJjZSA9IGF1ZGlvQ29tcG9uZW50c1tp
XS5zb3VyY2UoKTsKLSAgICAgICAgaWYgKHNvdXJjZS5yZXF1aXJlc0F1ZGlvQ29uc3VtZXIoKSkg
ewotICAgICAgICAgICAgTW9ja1dlYkF1ZGlvRGVzdGluYXRpb25Db25zdW1lciogY29uc3VtZXIg
PSBuZXcgTW9ja1dlYkF1ZGlvRGVzdGluYXRpb25Db25zdW1lcigpOwotICAgICAgICAgICAgc291
cmNlLmFkZEF1ZGlvQ29uc3VtZXIoY29uc3VtZXIpOwotICAgICAgICAgICAgc291cmNlLnJlbW92
ZUF1ZGlvQ29uc3VtZXIoY29uc3VtZXIpOwotICAgICAgICAgICAgZGVsZXRlIGNvbnN1bWVyOwot
ICAgICAgICB9Ci0gICAgfQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJNZWRpYVN0cmVh
bUNlbnRlci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYk1lZGlhU3Ry
ZWFtQ2VudGVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVlMGQ3M2ExYjY2YTUw
NGE5MTJiZjRiNThhMzQwYWMyNDE5MTc3ZTYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYk1l
ZGlhU3RyZWFtQ2VudGVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1OSArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3Ry
aWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBN
b2NrV2ViTWVkaWFTdHJlYW1DZW50ZXJfaAotI2RlZmluZSBNb2NrV2ViTWVkaWFTdHJlYW1DZW50
ZXJfaAotCi0jaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLSNpbmNsdWRlIDxwdWJsaWMvV2ViTWVk
aWFTdHJlYW1DZW50ZXIuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci1jbGFzcyBXZWJNZWRpYVN0
cmVhbUNlbnRlckNsaWVudDsKLX07Ci0KLWNsYXNzIE1vY2tXZWJNZWRpYVN0cmVhbUNlbnRlciA6
IHB1YmxpYyBXZWJLaXQ6OldlYk1lZGlhU3RyZWFtQ2VudGVyIHsKLXB1YmxpYzoKLSAgICBleHBs
aWNpdCBNb2NrV2ViTWVkaWFTdHJlYW1DZW50ZXIoV2ViS2l0OjpXZWJNZWRpYVN0cmVhbUNlbnRl
ckNsaWVudCopOwotCi0gICAgdmlydHVhbCB2b2lkIHF1ZXJ5TWVkaWFTdHJlYW1Tb3VyY2VzKGNv
bnN0IFdlYktpdDo6V2ViTWVkaWFTdHJlYW1Tb3VyY2VzUmVxdWVzdCYpIE9WRVJSSURFOwotICAg
IHZpcnR1YWwgdm9pZCBkaWRFbmFibGVNZWRpYVN0cmVhbVRyYWNrKGNvbnN0IFdlYktpdDo6V2Vi
TWVkaWFTdHJlYW0mLCBjb25zdCBXZWJLaXQ6OldlYk1lZGlhU3RyZWFtVHJhY2smKSBPVkVSUklE
RTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkRGlzYWJsZU1lZGlhU3RyZWFtVHJhY2soY29uc3QgV2Vi
S2l0OjpXZWJNZWRpYVN0cmVhbSYsIGNvbnN0IFdlYktpdDo6V2ViTWVkaWFTdHJlYW1UcmFjayYp
IE9WRVJSSURFOwotICAgIHZpcnR1YWwgYm9vbCBkaWRBZGRNZWRpYVN0cmVhbVRyYWNrKGNvbnN0
IFdlYktpdDo6V2ViTWVkaWFTdHJlYW0mLCBjb25zdCBXZWJLaXQ6OldlYk1lZGlhU3RyZWFtVHJh
Y2smKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGJvb2wgZGlkUmVtb3ZlTWVkaWFTdHJlYW1UcmFj
ayhjb25zdCBXZWJLaXQ6OldlYk1lZGlhU3RyZWFtJiwgY29uc3QgV2ViS2l0OjpXZWJNZWRpYVN0
cmVhbVRyYWNrJikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFN0b3BMb2NhbE1lZGlh
U3RyZWFtKGNvbnN0IFdlYktpdDo6V2ViTWVkaWFTdHJlYW0mKSBPVkVSUklERTsKLSAgICB2aXJ0
dWFsIHZvaWQgZGlkQ3JlYXRlTWVkaWFTdHJlYW0oV2ViS2l0OjpXZWJNZWRpYVN0cmVhbSYpIE9W
RVJSSURFOwotCi1wcml2YXRlOgotICAgIE1vY2tXZWJNZWRpYVN0cmVhbUNlbnRlcigpIHsgfQot
fTsKLQotI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCi0jZW5kaWYgLy8gTW9ja1dlYk1l
ZGlhU3RyZWFtQ2VudGVyX2gKLQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vTW9ja1dlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL01vY2tXZWJSVENEVE1GU2VuZGVySGFuZGxlci5jcHAKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGQ0YzJkYmRlNzY5ZjFmYzkyYmYzZjUxMTgzYWM2MTRiN2VjN2Rk
MzIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyLmNwcAor
KysgL2Rldi9udWxsCkBAIC0xLDk0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEdPT0dMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgR09PR0xFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaWYgRU5BQkxFKE1F
RElBX1NUUkVBTSkKLQotI2luY2x1ZGUgIk1vY2tXZWJSVENEVE1GU2VuZGVySGFuZGxlci5oIgot
Ci0jaW5jbHVkZSAiVGFzay5oIgotI2luY2x1ZGUgPGFzc2VydC5oPgotI2luY2x1ZGUgPHB1Ymxp
Yy9XZWJNZWRpYVN0cmVhbVNvdXJjZS5oPgotI2luY2x1ZGUgPHB1YmxpYy9XZWJSVENEVE1GU2Vu
ZGVySGFuZGxlckNsaWVudC5oPgotCi11c2luZyBuYW1lc3BhY2UgV2ViS2l0OwotdXNpbmcgbmFt
ZXNwYWNlIFdlYlRlc3RSdW5uZXI7Ci0KLWNsYXNzIERUTUZTZW5kZXJUb25lVGFzayA6IHB1Ymxp
YyBXZWJNZXRob2RUYXNrPE1vY2tXZWJSVENEVE1GU2VuZGVySGFuZGxlcj4gewotcHVibGljOgot
ICAgIERUTUZTZW5kZXJUb25lVGFzayhNb2NrV2ViUlRDRFRNRlNlbmRlckhhbmRsZXIqIG9iamVj
dCwgV2ViUlRDRFRNRlNlbmRlckhhbmRsZXJDbGllbnQqIGNsaWVudCkKLSAgICAgICAgOiBXZWJN
ZXRob2RUYXNrPE1vY2tXZWJSVENEVE1GU2VuZGVySGFuZGxlcj4ob2JqZWN0KQotICAgICAgICAs
IG1fY2xpZW50KGNsaWVudCkKLSAgICB7Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkIHJ1bklm
VmFsaWQoKSBPVkVSUklERQotICAgIHsKLSAgICAgICAgV2ViU3RyaW5nIHRvbmVzID0gbV9vYmpl
Y3QtPmN1cnJlbnRUb25lQnVmZmVyKCk7Ci0gICAgICAgIG1fb2JqZWN0LT5jbGVhclRvbmVCdWZm
ZXIoKTsKLSAgICAgICAgbV9jbGllbnQtPmRpZFBsYXlUb25lKHRvbmVzKTsKLSAgICB9Ci0KLXBy
aXZhdGU6Ci0gICAgV2ViUlRDRFRNRlNlbmRlckhhbmRsZXJDbGllbnQqIG1fY2xpZW50OwotfTsK
LQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLU1vY2tXZWJSVENEVE1GU2VuZGVySGFuZGxlcjo6
TW9ja1dlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyKGNvbnN0IFdlYk1lZGlhU3RyZWFtVHJhY2smIHRy
YWNrKQotICAgIDogbV9jbGllbnQoMCkKLSAgICAsIG1fdHJhY2sodHJhY2spCi17Ci19Ci0KLXZv
aWQgTW9ja1dlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyOjpzZXRDbGllbnQoV2ViUlRDRFRNRlNlbmRl
ckhhbmRsZXJDbGllbnQqIGNsaWVudCkKLXsKLSAgICBtX2NsaWVudCA9IGNsaWVudDsKLX0KLQot
V2ViU3RyaW5nIE1vY2tXZWJSVENEVE1GU2VuZGVySGFuZGxlcjo6Y3VycmVudFRvbmVCdWZmZXIo
KQotewotICAgIHJldHVybiBtX3RvbmVCdWZmZXI7Ci19Ci0KLWJvb2wgTW9ja1dlYlJUQ0RUTUZT
ZW5kZXJIYW5kbGVyOjpjYW5JbnNlcnREVE1GKCkKLXsKLSAgICBhc3NlcnQobV9jbGllbnQgJiYg
IW1fdHJhY2suaXNOdWxsKCkpOwotICAgIHJldHVybiBtX3RyYWNrLnNvdXJjZSgpLnR5cGUoKSA9
PSBXZWJNZWRpYVN0cmVhbVNvdXJjZTo6VHlwZUF1ZGlvICYmIG1fdHJhY2suaXNFbmFibGVkKCkg
JiYgbV90cmFjay5zb3VyY2UoKS5yZWFkeVN0YXRlKCkgPT0gV2ViTWVkaWFTdHJlYW1Tb3VyY2U6
OlJlYWR5U3RhdGVMaXZlOwotfQotCi1ib29sIE1vY2tXZWJSVENEVE1GU2VuZGVySGFuZGxlcjo6
aW5zZXJ0RFRNRihjb25zdCBXZWJTdHJpbmcmIHRvbmVzLCBsb25nIGR1cmF0aW9uLCBsb25nIGlu
dGVyVG9uZUdhcCkKLXsKLSAgICBhc3NlcnQobV9jbGllbnQpOwotICAgIGlmICghY2FuSW5zZXJ0
RFRNRigpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBtX3RvbmVCdWZmZXIgPSB0b25l
czsKLSAgICBwb3N0VGFzayhuZXcgRFRNRlNlbmRlclRvbmVUYXNrKHRoaXMsIG1fY2xpZW50KSk7
Ci0gICAgcG9zdFRhc2sobmV3IERUTUZTZW5kZXJUb25lVGFzayh0aGlzLCBtX2NsaWVudCkpOwot
ICAgIHJldHVybiB0cnVlOwotfQotCi0jZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJSVENEVE1GU2Vu
ZGVySGFuZGxlci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlJUQ0RU
TUZTZW5kZXJIYW5kbGVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJmYzZjNTJl
OTM2NzY3YjlkYjNlNThlMWEzOWNlZTU0MGYxODRlNjguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9j
a1dlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1OCArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBHT09HTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEdPT0dMRSBJTkMuIE9SCi0g
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRl
ZiBNb2NrV2ViUlRDRFRNRlNlbmRlckhhbmRsZXJfaAotI2RlZmluZSBNb2NrV2ViUlRDRFRNRlNl
bmRlckhhbmRsZXJfaAotCi0jaW5jbHVkZSAiV2ViVGFzay5oIgotI2luY2x1ZGUgPHB1YmxpYy9X
ZWJNZWRpYVN0cmVhbVRyYWNrLmg+Ci0jaW5jbHVkZSA8cHVibGljL1dlYlJUQ0RUTUZTZW5kZXJI
YW5kbGVyLmg+Ci0jaW5jbHVkZSA8cHVibGljL1dlYlN0cmluZy5oPgotCi1jbGFzcyBNb2NrV2Vi
UlRDRFRNRlNlbmRlckhhbmRsZXIgOiBwdWJsaWMgV2ViS2l0OjpXZWJSVENEVE1GU2VuZGVySGFu
ZGxlciB7Ci1wdWJsaWM6Ci0gICAgZXhwbGljaXQgTW9ja1dlYlJUQ0RUTUZTZW5kZXJIYW5kbGVy
KGNvbnN0IFdlYktpdDo6V2ViTWVkaWFTdHJlYW1UcmFjayYpOwotCi0gICAgdmlydHVhbCB2b2lk
IHNldENsaWVudChXZWJLaXQ6OldlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyQ2xpZW50KikgT1ZFUlJJ
REU7Ci0KLSAgICB2aXJ0dWFsIFdlYktpdDo6V2ViU3RyaW5nIGN1cnJlbnRUb25lQnVmZmVyKCkg
T1ZFUlJJREU7Ci0KLSAgICB2aXJ0dWFsIGJvb2wgY2FuSW5zZXJ0RFRNRigpIE9WRVJSSURFOwot
ICAgIHZpcnR1YWwgYm9vbCBpbnNlcnREVE1GKGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJiB0b25l
cywgbG9uZyBkdXJhdGlvbiwgbG9uZyBpbnRlclRvbmVHYXApIE9WRVJSSURFOwotCi0gICAgLy8g
V2ViVGFzayByZWxhdGVkIG1ldGhvZHMKLSAgICBXZWJUZXN0UnVubmVyOjpXZWJUYXNrTGlzdCog
dGFza0xpc3QoKSB7IHJldHVybiAmbV90YXNrTGlzdDsgfQotICAgIHZvaWQgY2xlYXJUb25lQnVm
ZmVyKCkgeyBtX3RvbmVCdWZmZXIucmVzZXQoKTsgfQotCi1wcml2YXRlOgotICAgIE1vY2tXZWJS
VENEVE1GU2VuZGVySGFuZGxlcigpOwotCi0gICAgV2ViS2l0OjpXZWJSVENEVE1GU2VuZGVySGFu
ZGxlckNsaWVudCogbV9jbGllbnQ7Ci0gICAgV2ViS2l0OjpXZWJNZWRpYVN0cmVhbVRyYWNrIG1f
dHJhY2s7Ci0gICAgV2ViS2l0OjpXZWJTdHJpbmcgbV90b25lQnVmZmVyOwotICAgIFdlYlRlc3RS
dW5uZXI6OldlYlRhc2tMaXN0IG1fdGFza0xpc3Q7Ci19OwotCi0jZW5kaWYgLy8gTW9ja1dlYlJU
Q0RUTUZTZW5kZXJIYW5kbGVyX2gKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL01vY2tXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vTW9ja1dlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVmODRkODVkZTdmOGUyZjNjYzRjYjBlMjIwN2ZiNWQ2ZmEy
NjE4YWQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5j
cHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgotICogQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCi0gKiBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVk
ZSAiY29uZmlnLmgiCi0jaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLQotI2luY2x1ZGUgIk1vY2tX
ZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuaCIKLQotI2luY2x1ZGUgIlRhc2suaCIKLSNpbmNsdWRl
IDxhc3NlcnQuaD4KLSNpbmNsdWRlIDxwdWJsaWMvV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xp
ZW50Lmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Ci11c2luZyBuYW1lc3BhY2UgV2ViVGVz
dFJ1bm5lcjsKLQotY2xhc3MgRGF0YUNoYW5uZWxSZWFkeVN0YXRlVGFzayA6IHB1YmxpYyBXZWJN
ZXRob2RUYXNrPE1vY2tXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI+IHsKLXB1YmxpYzoKLSAgICBE
YXRhQ2hhbm5lbFJlYWR5U3RhdGVUYXNrKE1vY2tXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIqIG9i
amVjdCwgV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50KiBkYXRhQ2hhbm5lbENsaWVudCwg
V2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50OjpSZWFkeVN0YXRlIHN0YXRlKQotICAgICAg
ICA6IFdlYk1ldGhvZFRhc2s8TW9ja1dlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcj4ob2JqZWN0KQot
ICAgICAgICAsIG1fZGF0YUNoYW5uZWxDbGllbnQoZGF0YUNoYW5uZWxDbGllbnQpCi0gICAgICAg
ICwgbV9zdGF0ZShzdGF0ZSkKLSAgICB7Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkIHJ1bklm
VmFsaWQoKSBPVkVSUklERQotICAgIHsKLSAgICAgICAgbV9kYXRhQ2hhbm5lbENsaWVudC0+ZGlk
Q2hhbmdlUmVhZHlTdGF0ZShtX3N0YXRlKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgV2ViUlRD
RGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50KiBtX2RhdGFDaGFubmVsQ2xpZW50OwotICAgIFdlYlJU
Q0RhdGFDaGFubmVsSGFuZGxlckNsaWVudDo6UmVhZHlTdGF0ZSBtX3N0YXRlOwotfTsKLQotLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vCi0KLU1vY2tXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6Ok1vY2tX
ZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIoV2ViU3RyaW5nIGxhYmVsLCBib29sIHJlbGlhYmxlKQot
ICAgIDogbV9jbGllbnQoMCkKLSAgICAsIG1fbGFiZWwobGFiZWwpCi0gICAgLCBtX3JlbGlhYmxl
KHJlbGlhYmxlKQotewotfQotCi12b2lkIE1vY2tXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OnNl
dENsaWVudChXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQqIGNsaWVudCkKLXsKLSAgICBt
X2NsaWVudCA9IGNsaWVudDsKLSAgICBpZiAobV9jbGllbnQpCi0gICAgICAgIHBvc3RUYXNrKG5l
dyBEYXRhQ2hhbm5lbFJlYWR5U3RhdGVUYXNrKHRoaXMsIG1fY2xpZW50LCBXZWJSVENEYXRhQ2hh
bm5lbEhhbmRsZXJDbGllbnQ6OlJlYWR5U3RhdGVPcGVuKSk7Ci19Ci0KLXVuc2lnbmVkIGxvbmcg
TW9ja1dlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6YnVmZmVyZWRBbW91bnQoKQotewotICAgIHJl
dHVybiAwOwotfQotCi1ib29sIE1vY2tXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OnNlbmRTdHJp
bmdEYXRhKGNvbnN0IFdlYlN0cmluZyYgZGF0YSkKLXsKLSAgICBhc3NlcnQobV9jbGllbnQpOwot
ICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlU3RyaW5nRGF0YShkYXRhKTsKLSAgICByZXR1cm4gdHJ1
ZTsKLX0KLQotYm9vbCBNb2NrV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpzZW5kUmF3RGF0YShj
b25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkKLXsKLSAgICBhc3NlcnQobV9jbGllbnQpOwot
ICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlUmF3RGF0YShkYXRhLCBzaXplKTsKLSAgICByZXR1cm4g
dHJ1ZTsKLX0KLQotdm9pZCBNb2NrV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpjbG9zZSgpCi17
Ci0gICAgYXNzZXJ0KG1fY2xpZW50KTsKLSAgICBwb3N0VGFzayhuZXcgRGF0YUNoYW5uZWxSZWFk
eVN0YXRlVGFzayh0aGlzLCBtX2NsaWVudCwgV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50
OjpSZWFkeVN0YXRlQ2xvc2VkKSk7Ci19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFN
KQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlJUQ0Rh
dGFDaGFubmVsSGFuZGxlci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dl
YlJUQ0RhdGFDaGFubmVsSGFuZGxlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1
OGZmZTdjNWJhZDgzOTdjNzI0YzQxZDYxZmEyOTlkM2FiNDk5Y2JlLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL01vY2tXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDU2
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQot
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OCi0gKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMKLSAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgTW9ja1dlYlJUQ0RhdGFDaGFubmVsSGFu
ZGxlcl9oCi0jZGVmaW5lIE1vY2tXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXJfaAotCi0jaW5jbHVk
ZSAiV2ViVGFzay5oIgotI2luY2x1ZGUgPHB1YmxpYy9XZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIu
aD4KLSNpbmNsdWRlIDxwdWJsaWMvV2ViU3RyaW5nLmg+Ci0KLWNsYXNzIE1vY2tXZWJSVENEYXRh
Q2hhbm5lbEhhbmRsZXIgOiBwdWJsaWMgV2ViS2l0OjpXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIg
ewotcHVibGljOgotICAgIE1vY2tXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIoV2ViS2l0OjpXZWJT
dHJpbmcgbGFiZWwsIGJvb2wgcmVsaWFibGUpOwotCi0gICAgdmlydHVhbCB2b2lkIHNldENsaWVu
dChXZWJLaXQ6OldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCopIE9WRVJSSURFOwotICAg
IHZpcnR1YWwgV2ViS2l0OjpXZWJTdHJpbmcgbGFiZWwoKSBPVkVSUklERSB7IHJldHVybiBtX2xh
YmVsOyB9Ci0gICAgdmlydHVhbCBib29sIGlzUmVsaWFibGUoKSBPVkVSUklERSB7IHJldHVybiBt
X3JlbGlhYmxlOyB9Ci0gICAgdmlydHVhbCB1bnNpZ25lZCBsb25nIGJ1ZmZlcmVkQW1vdW50KCkg
T1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29sIHNlbmRTdHJpbmdEYXRhKGNvbnN0IFdlYktpdDo6
V2ViU3RyaW5nJikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29sIHNlbmRSYXdEYXRhKGNvbnN0
IGNoYXIqLCBzaXplX3QpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBjbG9zZSgpIE9WRVJS
SURFOwotCi0gICAgLy8gV2ViVGFzayByZWxhdGVkIG1ldGhvZHMKLSAgICBXZWJUZXN0UnVubmVy
OjpXZWJUYXNrTGlzdCogdGFza0xpc3QoKSB7IHJldHVybiAmbV90YXNrTGlzdDsgfQotCi1wcml2
YXRlOgotICAgIE1vY2tXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIoKTsKLQotICAgIFdlYktpdDo6
V2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50KiBtX2NsaWVudDsKLSAgICBXZWJLaXQ6Oldl
YlN0cmluZyBtX2xhYmVsOwotICAgIGJvb2wgbV9yZWxpYWJsZTsKLSAgICBXZWJUZXN0UnVubmVy
OjpXZWJUYXNrTGlzdCBtX3Rhc2tMaXN0OwotfTsKLQotI2VuZGlmIC8vIE1vY2tXZWJSVENEYXRh
Q2hhbm5lbEhhbmRsZXJfaApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5jcHAgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9Nb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmNwcApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDAzODdkMzVkOGU1ZjM0YTllOTIzOTU5ZjY0MmNmN2Qy
OGQ2NjRkMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5k
bGVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDMwOSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4K
LSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
Ci0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0KLSNpbmNsdWRlICJNb2NrV2ViUlRDUGVlckNv
bm5lY3Rpb25IYW5kbGVyLmgiCi0KLSNpbmNsdWRlICJNb2NrQ29uc3RyYWludHMuaCIKLSNpbmNs
dWRlICJNb2NrV2ViUlRDRFRNRlNlbmRlckhhbmRsZXIuaCIKLSNpbmNsdWRlICJNb2NrV2ViUlRD
RGF0YUNoYW5uZWxIYW5kbGVyLmgiCi0jaW5jbHVkZSAiVGFzay5oIgotI2luY2x1ZGUgPHB1Ymxp
Yy9XZWJNZWRpYUNvbnN0cmFpbnRzLmg+Ci0jaW5jbHVkZSA8cHVibGljL1dlYk1lZGlhU3RyZWFt
Lmg+Ci0jaW5jbHVkZSA8cHVibGljL1dlYk1lZGlhU3RyZWFtVHJhY2suaD4KLSNpbmNsdWRlIDxw
dWJsaWMvV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50Lmg+Ci0jaW5jbHVkZSA8cHVi
bGljL1dlYlJUQ1Nlc3Npb25EZXNjcmlwdGlvbi5oPgotI2luY2x1ZGUgPHB1YmxpYy9XZWJSVENT
ZXNzaW9uRGVzY3JpcHRpb25SZXF1ZXN0Lmg+Ci0jaW5jbHVkZSA8cHVibGljL1dlYlJUQ1N0YXRz
UmVxdWVzdC5oPgotI2luY2x1ZGUgPHB1YmxpYy9XZWJSVENTdGF0c1Jlc3BvbnNlLmg+Ci0jaW5j
bHVkZSA8cHVibGljL1dlYlJUQ1ZvaWRSZXF1ZXN0Lmg+Ci0jaW5jbHVkZSA8cHVibGljL1dlYlN0
cmluZy5oPgotI2luY2x1ZGUgPHB1YmxpYy9XZWJWZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYvRGF0
ZU1hdGguaD4KLQotdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKLXVzaW5nIG5hbWVzcGFjZSBXZWJU
ZXN0UnVubmVyOwotCi1jbGFzcyBSVENTZXNzaW9uRGVzY3JpcHRpb25SZXF1ZXN0U3VjY2VkZWRU
YXNrIDogcHVibGljIFdlYk1ldGhvZFRhc2s8TW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxl
cj4gewotcHVibGljOgotICAgIFJUQ1Nlc3Npb25EZXNjcmlwdGlvblJlcXVlc3RTdWNjZWRlZFRh
c2soTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlciogb2JqZWN0LCBjb25zdCBXZWJSVENT
ZXNzaW9uRGVzY3JpcHRpb25SZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXZWJSVENTZXNzaW9uRGVz
Y3JpcHRpb24mIHJlc3VsdCkKLSAgICAgICAgOiBXZWJNZXRob2RUYXNrPE1vY2tXZWJSVENQZWVy
Q29ubmVjdGlvbkhhbmRsZXI+KG9iamVjdCkKLSAgICAgICAgLCBtX3JlcXVlc3QocmVxdWVzdCkK
LSAgICAgICAgLCBtX3Jlc3VsdChyZXN1bHQpCi0gICAgewotICAgIH0KLQotICAgIHZpcnR1YWwg
dm9pZCBydW5JZlZhbGlkKCkgT1ZFUlJJREUKLSAgICB7Ci0gICAgICAgIG1fcmVxdWVzdC5yZXF1
ZXN0U3VjY2VlZGVkKG1fcmVzdWx0KTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgV2ViUlRDU2Vz
c2lvbkRlc2NyaXB0aW9uUmVxdWVzdCBtX3JlcXVlc3Q7Ci0gICAgV2ViUlRDU2Vzc2lvbkRlc2Ny
aXB0aW9uIG1fcmVzdWx0OwotfTsKLQotY2xhc3MgUlRDU2Vzc2lvbkRlc2NyaXB0aW9uUmVxdWVz
dEZhaWxlZFRhc2sgOiBwdWJsaWMgV2ViTWV0aG9kVGFzazxNb2NrV2ViUlRDUGVlckNvbm5lY3Rp
b25IYW5kbGVyPiB7Ci1wdWJsaWM6Ci0gICAgUlRDU2Vzc2lvbkRlc2NyaXB0aW9uUmVxdWVzdEZh
aWxlZFRhc2soTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlciogb2JqZWN0LCBjb25zdCBX
ZWJSVENTZXNzaW9uRGVzY3JpcHRpb25SZXF1ZXN0JiByZXF1ZXN0KQotICAgICAgICA6IFdlYk1l
dGhvZFRhc2s8TW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcj4ob2JqZWN0KQotICAgICAg
ICAsIG1fcmVxdWVzdChyZXF1ZXN0KQotICAgIHsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQg
cnVuSWZWYWxpZCgpIE9WRVJSSURFCi0gICAgewotICAgICAgICBtX3JlcXVlc3QucmVxdWVzdEZh
aWxlZCgiVEVTVF9FUlJPUiIpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBXZWJSVENTZXNzaW9u
RGVzY3JpcHRpb25SZXF1ZXN0IG1fcmVxdWVzdDsKLX07Ci0KLWNsYXNzIFJUQ1N0YXRzUmVxdWVz
dFN1Y2NlZWRlZFRhc2sgOiBwdWJsaWMgV2ViTWV0aG9kVGFzazxNb2NrV2ViUlRDUGVlckNvbm5l
Y3Rpb25IYW5kbGVyPiB7Ci1wdWJsaWM6Ci0gICAgUlRDU3RhdHNSZXF1ZXN0U3VjY2VlZGVkVGFz
ayhNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyKiBvYmplY3QsIGNvbnN0IFdlYktpdDo6
V2ViUlRDU3RhdHNSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXZWJLaXQ6OldlYlJUQ1N0YXRzUmVz
cG9uc2UmIHJlc3BvbnNlKQotICAgICAgICA6IFdlYk1ldGhvZFRhc2s8TW9ja1dlYlJUQ1BlZXJD
b25uZWN0aW9uSGFuZGxlcj4ob2JqZWN0KQotICAgICAgICAsIG1fcmVxdWVzdChyZXF1ZXN0KQot
ICAgICAgICAsIG1fcmVzcG9uc2UocmVzcG9uc2UpCi0gICAgewotICAgIH0KLQotICAgIHZpcnR1
YWwgdm9pZCBydW5JZlZhbGlkKCkgT1ZFUlJJREUKLSAgICB7Ci0gICAgICAgIG1fcmVxdWVzdC5y
ZXF1ZXN0U3VjY2VlZGVkKG1fcmVzcG9uc2UpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBXZWJL
aXQ6OldlYlJUQ1N0YXRzUmVxdWVzdCBtX3JlcXVlc3Q7Ci0gICAgV2ViS2l0OjpXZWJSVENTdGF0
c1Jlc3BvbnNlIG1fcmVzcG9uc2U7Ci19OwotCi1jbGFzcyBSVENWb2lkUmVxdWVzdFRhc2sgOiBw
dWJsaWMgV2ViTWV0aG9kVGFzazxNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyPiB7Ci1w
dWJsaWM6Ci0gICAgUlRDVm9pZFJlcXVlc3RUYXNrKE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhh
bmRsZXIqIG9iamVjdCwgY29uc3QgV2ViUlRDVm9pZFJlcXVlc3QmIHJlcXVlc3QsIGJvb2wgc3Vj
Y2VlZGVkKQotICAgICAgICA6IFdlYk1ldGhvZFRhc2s8TW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9u
SGFuZGxlcj4ob2JqZWN0KQotICAgICAgICAsIG1fcmVxdWVzdChyZXF1ZXN0KQotICAgICAgICAs
IG1fc3VjY2VlZGVkKHN1Y2NlZWRlZCkKLSAgICB7Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lk
IHJ1bklmVmFsaWQoKSBPVkVSUklERQotICAgIHsKLSAgICAgICAgaWYgKG1fc3VjY2VlZGVkKQot
ICAgICAgICAgICAgbV9yZXF1ZXN0LnJlcXVlc3RTdWNjZWVkZWQoKTsKLSAgICAgICAgZWxzZQot
ICAgICAgICAgICAgbV9yZXF1ZXN0LnJlcXVlc3RGYWlsZWQoIlRFU1RfRVJST1IiKTsKLSAgICB9
Ci0KLXByaXZhdGU6Ci0gICAgV2ViUlRDVm9pZFJlcXVlc3QgbV9yZXF1ZXN0OwotICAgIGJvb2wg
bV9zdWNjZWVkZWQ7Ci19OwotCi1jbGFzcyBSVENQZWVyQ29ubmVjdGlvblN0YXRlVGFzayA6IHB1
YmxpYyBXZWJNZXRob2RUYXNrPE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI+IHsKLXB1
YmxpYzoKLSAgICBSVENQZWVyQ29ubmVjdGlvblN0YXRlVGFzayhNb2NrV2ViUlRDUGVlckNvbm5l
Y3Rpb25IYW5kbGVyKiBvYmplY3QsIFdlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudCog
Y2xpZW50LCBXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQ6OklDRUNvbm5lY3Rpb25T
dGF0ZSBjb25uZWN0aW9uU3RhdGUsIFdlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudDo6
SUNFR2F0aGVyaW5nU3RhdGUgZ2F0aGVyaW5nU3RhdGUpCi0gICAgICAgIDogV2ViTWV0aG9kVGFz
azxNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyPihvYmplY3QpCi0gICAgICAgICwgbV9j
bGllbnQoY2xpZW50KQotICAgICAgICAsIG1fY29ubmVjdGlvblN0YXRlKGNvbm5lY3Rpb25TdGF0
ZSkKLSAgICAgICAgLCBtX2dhdGhlcmluZ1N0YXRlKGdhdGhlcmluZ1N0YXRlKQotICAgIHsKLSAg
ICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgcnVuSWZWYWxpZCgpIE9WRVJSSURFCi0gICAgewotICAg
ICAgICBtX2NsaWVudC0+ZGlkQ2hhbmdlSUNFR2F0aGVyaW5nU3RhdGUobV9nYXRoZXJpbmdTdGF0
ZSk7Ci0gICAgICAgIG1fY2xpZW50LT5kaWRDaGFuZ2VJQ0VDb25uZWN0aW9uU3RhdGUobV9jb25u
ZWN0aW9uU3RhdGUpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBXZWJSVENQZWVyQ29ubmVjdGlv
bkhhbmRsZXJDbGllbnQqIG1fY2xpZW50OwotICAgIFdlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxl
ckNsaWVudDo6SUNFQ29ubmVjdGlvblN0YXRlIG1fY29ubmVjdGlvblN0YXRlOwotICAgIFdlYlJU
Q1BlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudDo6SUNFR2F0aGVyaW5nU3RhdGUgbV9nYXRoZXJp
bmdTdGF0ZTsKLX07Ci0KLWNsYXNzIFJlbW90ZURhdGFDaGFubmVsVGFzayA6IHB1YmxpYyBXZWJN
ZXRob2RUYXNrPE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI+IHsKLXB1YmxpYzoKLSAg
ICBSZW1vdGVEYXRhQ2hhbm5lbFRhc2soTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlciog
b2JqZWN0LCBXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQqIGNsaWVudCkKLSAgICAg
ICAgOiBXZWJNZXRob2RUYXNrPE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI+KG9iamVj
dCkKLSAgICAgICAgLCBtX2NsaWVudChjbGllbnQpCi0gICAgewotICAgIH0KLQotICAgIHZpcnR1
YWwgdm9pZCBydW5JZlZhbGlkKCkgT1ZFUlJJREUKLSAgICB7Ci0gICAgICAgIFdlYlJUQ0RhdGFD
aGFubmVsSGFuZGxlciogcmVtb3RlRGF0YUNoYW5uZWwgPSBuZXcgTW9ja1dlYlJUQ0RhdGFDaGFu
bmVsSGFuZGxlcigiTW9ja1JlbW90ZURhdGFDaGFubmVsIiwgdHJ1ZSk7Ci0gICAgICAgIG1fY2xp
ZW50LT5kaWRBZGRSZW1vdGVEYXRhQ2hhbm5lbChyZW1vdGVEYXRhQ2hhbm5lbCk7Ci0gICAgfQot
Ci1wcml2YXRlOgotICAgIFdlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudCogbV9jbGll
bnQ7Ci19OwotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotTW9ja1dlYlJUQ1BlZXJDb25uZWN0
aW9uSGFuZGxlcjo6TW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcihXZWJSVENQZWVyQ29u
bmVjdGlvbkhhbmRsZXJDbGllbnQqIGNsaWVudCkKLSAgICA6IG1fY2xpZW50KGNsaWVudCkKLSAg
ICAsIG1fc3RvcHBlZChmYWxzZSkKLSAgICAsIG1fc3RyZWFtQ291bnQoMCkKLXsKLX0KLQotYm9v
bCBNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyOjppbml0aWFsaXplKGNvbnN0IFdlYlJU
Q0NvbmZpZ3VyYXRpb24mLCBjb25zdCBXZWJNZWRpYUNvbnN0cmFpbnRzJiBjb25zdHJhaW50cykK
LXsKLSAgICBpZiAoTW9ja0NvbnN0cmFpbnRzOjp2ZXJpZnlDb25zdHJhaW50cyhjb25zdHJhaW50
cykpIHsKLSAgICAgICAgcG9zdFRhc2sobmV3IFJUQ1BlZXJDb25uZWN0aW9uU3RhdGVUYXNrKHRo
aXMsIG1fY2xpZW50LCBXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQ6OklDRUNvbm5l
Y3Rpb25TdGF0ZUNvbXBsZXRlZCwgV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50OjpJ
Q0VHYXRoZXJpbmdTdGF0ZUNvbXBsZXRlKSk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0K
LQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotdm9pZCBNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25I
YW5kbGVyOjpjcmVhdGVPZmZlcihjb25zdCBXZWJSVENTZXNzaW9uRGVzY3JpcHRpb25SZXF1ZXN0
JiByZXF1ZXN0LCBjb25zdCBXZWJNZWRpYUNvbnN0cmFpbnRzJiBjb25zdHJhaW50cykKLXsKLSAg
ICBXZWJTdHJpbmcgc2hvdWxkU3VjY2VlZDsKLSAgICBpZiAoY29uc3RyYWludHMuZ2V0TWFuZGF0
b3J5Q29uc3RyYWludFZhbHVlKCJzdWNjZWVkIiwgc2hvdWxkU3VjY2VlZCkgJiYgc2hvdWxkU3Vj
Y2VlZCA9PSAidHJ1ZSIpIHsKLSAgICAgICAgV2ViUlRDU2Vzc2lvbkRlc2NyaXB0aW9uIHNlc3Np
b25EZXNjcmlwdGlvbjsKLSAgICAgICAgc2Vzc2lvbkRlc2NyaXB0aW9uLmluaXRpYWxpemUoIm9m
ZmVyIiwgImxvY2FsIik7Ci0gICAgICAgIHBvc3RUYXNrKG5ldyBSVENTZXNzaW9uRGVzY3JpcHRp
b25SZXF1ZXN0U3VjY2VkZWRUYXNrKHRoaXMsIHJlcXVlc3QsIHNlc3Npb25EZXNjcmlwdGlvbikp
OwotICAgIH0gZWxzZQotICAgICAgICBwb3N0VGFzayhuZXcgUlRDU2Vzc2lvbkRlc2NyaXB0aW9u
UmVxdWVzdEZhaWxlZFRhc2sodGhpcywgcmVxdWVzdCkpOwotfQotCi12b2lkIE1vY2tXZWJSVENQ
ZWVyQ29ubmVjdGlvbkhhbmRsZXI6OmNyZWF0ZUFuc3dlcihjb25zdCBXZWJSVENTZXNzaW9uRGVz
Y3JpcHRpb25SZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXZWJNZWRpYUNvbnN0cmFpbnRzJikKLXsK
LSAgICBpZiAoIW1fcmVtb3RlRGVzY3JpcHRpb24uaXNOdWxsKCkpIHsKLSAgICAgICAgV2ViUlRD
U2Vzc2lvbkRlc2NyaXB0aW9uIHNlc3Npb25EZXNjcmlwdGlvbjsKLSAgICAgICAgc2Vzc2lvbkRl
c2NyaXB0aW9uLmluaXRpYWxpemUoImFuc3dlciIsICJsb2NhbCIpOwotICAgICAgICBwb3N0VGFz
ayhuZXcgUlRDU2Vzc2lvbkRlc2NyaXB0aW9uUmVxdWVzdFN1Y2NlZGVkVGFzayh0aGlzLCByZXF1
ZXN0LCBzZXNzaW9uRGVzY3JpcHRpb24pKTsKLSAgICB9IGVsc2UKLSAgICAgICAgcG9zdFRhc2so
bmV3IFJUQ1Nlc3Npb25EZXNjcmlwdGlvblJlcXVlc3RGYWlsZWRUYXNrKHRoaXMsIHJlcXVlc3Qp
KTsKLX0KLQotdm9pZCBNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyOjpzZXRMb2NhbERl
c2NyaXB0aW9uKGNvbnN0IFdlYlJUQ1ZvaWRSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXZWJSVENT
ZXNzaW9uRGVzY3JpcHRpb24mIGxvY2FsRGVzY3JpcHRpb24pCi17Ci0gICAgaWYgKCFsb2NhbERl
c2NyaXB0aW9uLmlzTnVsbCgpICYmIGxvY2FsRGVzY3JpcHRpb24uc2RwKCkgPT0gImxvY2FsIikg
ewotICAgICAgICBtX2xvY2FsRGVzY3JpcHRpb24gPSBsb2NhbERlc2NyaXB0aW9uOwotICAgICAg
ICBwb3N0VGFzayhuZXcgUlRDVm9pZFJlcXVlc3RUYXNrKHRoaXMsIHJlcXVlc3QsIHRydWUpKTsK
LSAgICB9IGVsc2UKLSAgICAgICAgcG9zdFRhc2sobmV3IFJUQ1ZvaWRSZXF1ZXN0VGFzayh0aGlz
LCByZXF1ZXN0LCBmYWxzZSkpOwotfQotCi12b2lkIE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhh
bmRsZXI6OnNldFJlbW90ZURlc2NyaXB0aW9uKGNvbnN0IFdlYlJUQ1ZvaWRSZXF1ZXN0JiByZXF1
ZXN0LCBjb25zdCBXZWJSVENTZXNzaW9uRGVzY3JpcHRpb24mIHJlbW90ZURlc2NyaXB0aW9uKQot
ewotICAgIGlmICghcmVtb3RlRGVzY3JpcHRpb24uaXNOdWxsKCkgJiYgcmVtb3RlRGVzY3JpcHRp
b24uc2RwKCkgPT0gInJlbW90ZSIpIHsKLSAgICAgICAgbV9yZW1vdGVEZXNjcmlwdGlvbiA9IHJl
bW90ZURlc2NyaXB0aW9uOwotICAgICAgICBwb3N0VGFzayhuZXcgUlRDVm9pZFJlcXVlc3RUYXNr
KHRoaXMsIHJlcXVlc3QsIHRydWUpKTsKLSAgICB9IGVsc2UKLSAgICAgICAgcG9zdFRhc2sobmV3
IFJUQ1ZvaWRSZXF1ZXN0VGFzayh0aGlzLCByZXF1ZXN0LCBmYWxzZSkpOwotfQotCi1XZWJSVENT
ZXNzaW9uRGVzY3JpcHRpb24gTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcjo6bG9jYWxE
ZXNjcmlwdGlvbigpCi17Ci0gICAgcmV0dXJuIG1fbG9jYWxEZXNjcmlwdGlvbjsKLX0KLQotV2Vi
UlRDU2Vzc2lvbkRlc2NyaXB0aW9uIE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI6OnJl
bW90ZURlc2NyaXB0aW9uKCkKLXsKLSAgICByZXR1cm4gbV9yZW1vdGVEZXNjcmlwdGlvbjsKLX0K
LQotYm9vbCBNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyOjp1cGRhdGVJQ0UoY29uc3Qg
V2ViUlRDQ29uZmlndXJhdGlvbiYsIGNvbnN0IFdlYk1lZGlhQ29uc3RyYWludHMmKQotewotICAg
IHJldHVybiB0cnVlOwotfQotCi1ib29sIE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI6
OmFkZElDRUNhbmRpZGF0ZShjb25zdCBXZWJSVENJQ0VDYW5kaWRhdGUmIGljZUNhbmRpZGF0ZSkK
LXsKLSAgICBtX2NsaWVudC0+ZGlkR2VuZXJhdGVJQ0VDYW5kaWRhdGUoaWNlQ2FuZGlkYXRlKTsK
LSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5k
bGVyOjphZGRTdHJlYW0oY29uc3QgV2ViTWVkaWFTdHJlYW0mIHN0cmVhbSwgY29uc3QgV2ViTWVk
aWFDb25zdHJhaW50cyYpCi17Ci0gICAgbV9zdHJlYW1Db3VudCArPSAxOwotICAgIG1fY2xpZW50
LT5kaWRBZGRSZW1vdGVTdHJlYW0oc3RyZWFtKTsKLSAgICBtX2NsaWVudC0+bmVnb3RpYXRpb25O
ZWVkZWQoKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdm9pZCBNb2NrV2ViUlRDUGVlckNvbm5l
Y3Rpb25IYW5kbGVyOjpyZW1vdmVTdHJlYW0oY29uc3QgV2ViTWVkaWFTdHJlYW0mIHN0cmVhbSkK
LXsKLSAgICBtX3N0cmVhbUNvdW50IC09IDE7Ci0gICAgbV9jbGllbnQtPmRpZFJlbW92ZVJlbW90
ZVN0cmVhbShzdHJlYW0pOwotICAgIG1fY2xpZW50LT5uZWdvdGlhdGlvbk5lZWRlZCgpOwotfQot
Ci12b2lkIE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI6OmdldFN0YXRzKGNvbnN0IFdl
YlJUQ1N0YXRzUmVxdWVzdCYgcmVxdWVzdCkKLXsKLSAgICBXZWJSVENTdGF0c1Jlc3BvbnNlIHJl
c3BvbnNlID0gcmVxdWVzdC5jcmVhdGVSZXNwb25zZSgpOwotICAgIGRvdWJsZSBjdXJyZW50RGF0
ZSA9IFdURjo6anNDdXJyZW50VGltZSgpOwotICAgIGlmIChyZXF1ZXN0Lmhhc1NlbGVjdG9yKCkp
IHsKLSAgICAgICAgV2ViTWVkaWFTdHJlYW0gc3RyZWFtID0gcmVxdWVzdC5zdHJlYW0oKTsKLSAg
ICAgICAgLy8gRklYTUU6IFRoZXJlIGlzIG5vIGNoZWNrIHRoYXQgdGhlIGZldGNoZWQgdmFsdWVz
IGFyZSB2YWxpZC4KLSAgICAgICAgc2l6ZV90IHJlcG9ydEluZGV4ID0gcmVzcG9uc2UuYWRkUmVw
b3J0KCk7Ci0gICAgICAgIHJlc3BvbnNlLmFkZEVsZW1lbnQocmVwb3J0SW5kZXgsIHRydWUsIGN1
cnJlbnREYXRlKTsKLSAgICAgICAgcmVzcG9uc2UuYWRkU3RhdGlzdGljKHJlcG9ydEluZGV4LCB0
cnVlLCAidHlwZSIsICJ2aWRlbyIpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgbV9zdHJlYW1Db3VudDsgKytpKSB7Ci0gICAgICAgICAgICBzaXplX3QgcmVwb3J0
SW5kZXggPSByZXNwb25zZS5hZGRSZXBvcnQoKTsKLSAgICAgICAgICAgIHJlc3BvbnNlLmFkZEVs
ZW1lbnQocmVwb3J0SW5kZXgsIHRydWUsIGN1cnJlbnREYXRlKTsKLSAgICAgICAgICAgIHJlc3Bv
bnNlLmFkZFN0YXRpc3RpYyhyZXBvcnRJbmRleCwgdHJ1ZSwgInR5cGUiLCAiYXVkaW8iKTsKLSAg
ICAgICAgICAgIHJlcG9ydEluZGV4ID0gcmVzcG9uc2UuYWRkUmVwb3J0KCk7Ci0gICAgICAgICAg
ICByZXNwb25zZS5hZGRFbGVtZW50KHJlcG9ydEluZGV4LCB0cnVlLCBjdXJyZW50RGF0ZSk7Ci0g
ICAgICAgICAgICByZXNwb25zZS5hZGRTdGF0aXN0aWMocmVwb3J0SW5kZXgsIHRydWUsICJ0eXBl
IiwgInZpZGVvIik7Ci0gICAgICAgICAgICAvLyBXZSBhZGQgYW4gZW1wdHkgcmVtb3RlIHJlcG9y
dCBlbGVtZW50LgotICAgICAgICAgICAgcmVzcG9uc2UuYWRkRWxlbWVudChyZXBvcnRJbmRleCwg
ZmFsc2UsIGN1cnJlbnREYXRlKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBwb3N0VGFzayhuZXcg
UlRDU3RhdHNSZXF1ZXN0U3VjY2VlZGVkVGFzayh0aGlzLCByZXF1ZXN0LCByZXNwb25zZSkpOwot
fQotCi1XZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIqIE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhh
bmRsZXI6OmNyZWF0ZURhdGFDaGFubmVsKGNvbnN0IFdlYlN0cmluZyYgbGFiZWwsIGJvb2wgcmVs
aWFibGUpCi17Ci0gICAgcG9zdFRhc2sobmV3IFJlbW90ZURhdGFDaGFubmVsVGFzayh0aGlzLCBt
X2NsaWVudCkpOwotCi0gICAgcmV0dXJuIG5ldyBNb2NrV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVy
KGxhYmVsLCByZWxpYWJsZSk7Ci19Ci0KLVdlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyKiBNb2NrV2Vi
UlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyOjpjcmVhdGVEVE1GU2VuZGVyKGNvbnN0IFdlYk1lZGlh
U3RyZWFtVHJhY2smIHRyYWNrKQotewotICAgIHJldHVybiBuZXcgTW9ja1dlYlJUQ0RUTUZTZW5k
ZXJIYW5kbGVyKHRyYWNrKTsKLX0KLQotdm9pZCBNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5k
bGVyOjpzdG9wKCkKLXsKLSAgICBtX3N0b3BwZWQgPSB0cnVlOwotfQotCi0jZW5kaWYgLy8gRU5B
QkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL01vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaCBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL01vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMzg0MWFhYmNlNmUxMGFjYmQ4MmY3ZTY2MTI4ZWIyM2NjNmY1
YmRhMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVy
LmgKKysrIC9kZXYvbnVsbApAQCAtMSw4NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
LSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
LSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBNb2NrV2ViUlRDUGVlckNv
bm5lY3Rpb25IYW5kbGVyX2gKLSNkZWZpbmUgTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxl
cl9oCi0KLSNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotCi0jaW5jbHVkZSAiV2ViVGFzay5oIgot
I2luY2x1ZGUgPHB1YmxpYy9XZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaD4KLSNpbmNsdWRl
IDxwdWJsaWMvV2ViUlRDU2Vzc2lvbkRlc2NyaXB0aW9uLmg+Ci0jaW5jbHVkZSA8cHVibGljL1dl
YlJUQ1Nlc3Npb25EZXNjcmlwdGlvblJlcXVlc3QuaD4KLSNpbmNsdWRlIDxwdWJsaWMvV2ViUlRD
U3RhdHNSZXF1ZXN0Lmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotY2xhc3MgV2ViUlRDUGVlckNv
bm5lY3Rpb25IYW5kbGVyQ2xpZW50OwotfTsKLQotY2xhc3MgTW9ja1dlYlJUQ1BlZXJDb25uZWN0
aW9uSGFuZGxlciA6IHB1YmxpYyBXZWJLaXQ6OldlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlciB7
Ci1wdWJsaWM6Ci0gICAgZXhwbGljaXQgTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcihX
ZWJLaXQ6OldlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudCopOwotCi0gICAgdmlydHVh
bCBib29sIGluaXRpYWxpemUoY29uc3QgV2ViS2l0OjpXZWJSVENDb25maWd1cmF0aW9uJiwgY29u
c3QgV2ViS2l0OjpXZWJNZWRpYUNvbnN0cmFpbnRzJikgT1ZFUlJJREU7Ci0KLSAgICB2aXJ0dWFs
IHZvaWQgY3JlYXRlT2ZmZXIoY29uc3QgV2ViS2l0OjpXZWJSVENTZXNzaW9uRGVzY3JpcHRpb25S
ZXF1ZXN0JiwgY29uc3QgV2ViS2l0OjpXZWJNZWRpYUNvbnN0cmFpbnRzJikgT1ZFUlJJREU7Ci0g
ICAgdmlydHVhbCB2b2lkIGNyZWF0ZUFuc3dlcihjb25zdCBXZWJLaXQ6OldlYlJUQ1Nlc3Npb25E
ZXNjcmlwdGlvblJlcXVlc3QmLCBjb25zdCBXZWJLaXQ6OldlYk1lZGlhQ29uc3RyYWludHMmKSBP
VkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0TG9jYWxEZXNjcmlwdGlvbihjb25zdCBXZWJL
aXQ6OldlYlJUQ1ZvaWRSZXF1ZXN0JiwgY29uc3QgV2ViS2l0OjpXZWJSVENTZXNzaW9uRGVzY3Jp
cHRpb24mKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0UmVtb3RlRGVzY3JpcHRpb24o
Y29uc3QgV2ViS2l0OjpXZWJSVENWb2lkUmVxdWVzdCYsIGNvbnN0IFdlYktpdDo6V2ViUlRDU2Vz
c2lvbkRlc2NyaXB0aW9uJikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBXZWJLaXQ6OldlYlJUQ1Nl
c3Npb25EZXNjcmlwdGlvbiBsb2NhbERlc2NyaXB0aW9uKCkgT1ZFUlJJREU7Ci0gICAgdmlydHVh
bCBXZWJLaXQ6OldlYlJUQ1Nlc3Npb25EZXNjcmlwdGlvbiByZW1vdGVEZXNjcmlwdGlvbigpIE9W
RVJSSURFOwotICAgIHZpcnR1YWwgYm9vbCB1cGRhdGVJQ0UoY29uc3QgV2ViS2l0OjpXZWJSVEND
b25maWd1cmF0aW9uJiwgY29uc3QgV2ViS2l0OjpXZWJNZWRpYUNvbnN0cmFpbnRzJikgT1ZFUlJJ
REU7Ci0gICAgdmlydHVhbCBib29sIGFkZElDRUNhbmRpZGF0ZShjb25zdCBXZWJLaXQ6OldlYlJU
Q0lDRUNhbmRpZGF0ZSYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgYm9vbCBhZGRTdHJlYW0oY29u
c3QgV2ViS2l0OjpXZWJNZWRpYVN0cmVhbSYsIGNvbnN0IFdlYktpdDo6V2ViTWVkaWFDb25zdHJh
aW50cyYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVTdHJlYW0oY29uc3QgV2Vi
S2l0OjpXZWJNZWRpYVN0cmVhbSYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBnZXRTdGF0
cyhjb25zdCBXZWJLaXQ6OldlYlJUQ1N0YXRzUmVxdWVzdCYpIE9WRVJSSURFOwotICAgIHZpcnR1
YWwgV2ViS2l0OjpXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIqIGNyZWF0ZURhdGFDaGFubmVsKGNv
bnN0IFdlYktpdDo6V2ViU3RyaW5nJiBsYWJlbCwgYm9vbCByZWxpYWJsZSkgT1ZFUlJJREU7Ci0g
ICAgdmlydHVhbCBXZWJLaXQ6OldlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyKiBjcmVhdGVEVE1GU2Vu
ZGVyKGNvbnN0IFdlYktpdDo6V2ViTWVkaWFTdHJlYW1UcmFjayYpIE9WRVJSSURFOwotICAgIHZp
cnR1YWwgdm9pZCBzdG9wKCkgT1ZFUlJJREU7Ci0KLSAgICAvLyBXZWJUYXNrIHJlbGF0ZWQgbWV0
aG9kcwotICAgIFdlYlRlc3RSdW5uZXI6OldlYlRhc2tMaXN0KiB0YXNrTGlzdCgpIHsgcmV0dXJu
ICZtX3Rhc2tMaXN0OyB9Ci0KLXByaXZhdGU6Ci0gICAgTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9u
SGFuZGxlcigpIHsgfQotCi0gICAgV2ViS2l0OjpXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJD
bGllbnQqIG1fY2xpZW50OwotICAgIGJvb2wgbV9zdG9wcGVkOwotICAgIFdlYlRlc3RSdW5uZXI6
OldlYlRhc2tMaXN0IG1fdGFza0xpc3Q7Ci0gICAgV2ViS2l0OjpXZWJSVENTZXNzaW9uRGVzY3Jp
cHRpb24gbV9sb2NhbERlc2NyaXB0aW9uOwotICAgIFdlYktpdDo6V2ViUlRDU2Vzc2lvbkRlc2Ny
aXB0aW9uIG1fcmVtb3RlRGVzY3JpcHRpb247Ci0gICAgaW50IG1fc3RyZWFtQ291bnQ7Ci19Owot
Ci0jZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKLQotI2VuZGlmIC8vIE1vY2tXZWJSVENQ
ZWVyQ29ubmVjdGlvbkhhbmRsZXJfaAotCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0SW50ZXJmYWNlcy5oIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdEludGVyZmFj
ZXMuaAppbmRleCA5ODZjYjhmNzQxYTg5MTViMDM0MWM2ZWYwN2Y5OTRkOTJmYzQwNTZlLi4wMDYy
MDNjY2EyMGFiMmVhMDk4NDE3NTA2MGU2ODQ4ZmY3OGM0MDQwIDEwMDY0NAotLS0gYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0SW50ZXJmYWNl
cy5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGlj
L1dlYlRlc3RJbnRlcmZhY2VzLmgKQEAgLTM2LDYgKzM2LDEwIEBACiAKIG5hbWVzcGFjZSBXZWJL
aXQgewogY2xhc3MgV2ViRnJhbWU7CitjbGFzcyBXZWJNZWRpYVN0cmVhbUNlbnRlcjsKK2NsYXNz
IFdlYk1lZGlhU3RyZWFtQ2VudGVyQ2xpZW50OworY2xhc3MgV2ViUlRDUGVlckNvbm5lY3Rpb25I
YW5kbGVyOworY2xhc3MgV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50OwogY2xhc3Mg
V2ViVVJMOwogY2xhc3MgV2ViVmlldzsKIH0KQEAgLTYwLDYgKzY0LDkgQEAgcHVibGljOgogCiAg
ICAgV2ViVGVzdFJ1bm5lciogdGVzdFJ1bm5lcigpOwogCisgICAgV2ViS2l0OjpXZWJNZWRpYVN0
cmVhbUNlbnRlciogY3JlYXRlTWVkaWFTdHJlYW1DZW50ZXIoV2ViS2l0OjpXZWJNZWRpYVN0cmVh
bUNlbnRlckNsaWVudCopOworICAgIFdlYktpdDo6V2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVy
KiBjcmVhdGVXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIoV2ViS2l0OjpXZWJSVENQZWVyQ29u
bmVjdGlvbkhhbmRsZXJDbGllbnQqKTsKKwogI2lmIFdFQlRFU1RSVU5ORVJfSU1QTEVNRU5UQVRJ
T04KICAgICBUZXN0SW50ZXJmYWNlcyogdGVzdEludGVyZmFjZXMoKTsKICNlbmRpZgpkaWZmIC0t
Z2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2Vi
VGVzdFByb3h5LmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1
YmxpYy9XZWJUZXN0UHJveHkuaAppbmRleCA5MDYyNDViZGM0OGVmNjYxOTI5MDZkNTRjYmI4YWZk
YTg5ZDNiZjFkLi5mYWU4M2U4MTZjZGRiYWM3YTM2NzA4ZDM1OWEzYmU5YzE4ZGQxNjhmIDEwMDY0
NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9X
ZWJUZXN0UHJveHkuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVu
bmVyL3B1YmxpYy9XZWJUZXN0UHJveHkuaApAQCAtNjUsNiArNjUsNyBAQCBjbGFzcyBXZWJTdHJp
bmc7CiBjbGFzcyBXZWJVUkw7CiBjbGFzcyBXZWJVUkxSZXF1ZXN0OwogY2xhc3MgV2ViVVJMUmVz
cG9uc2U7CitjbGFzcyBXZWJVc2VyTWVkaWFDbGllbnQ7CiBjbGFzcyBXZWJWaWV3Owogc3RydWN0
IFdlYkNvbnNvbGVNZXNzYWdlOwogc3RydWN0IFdlYkNvbnRleHRNZW51RGF0YTsKQEAgLTgxLDYg
KzgyLDcgQEAgY2xhc3MgVGVzdEludGVyZmFjZXM7CiBjbGFzcyBXZWJUZXN0RGVsZWdhdGU7CiBj
bGFzcyBXZWJUZXN0SW50ZXJmYWNlczsKIGNsYXNzIFdlYlRlc3RSdW5uZXI7CitjbGFzcyBXZWJV
c2VyTWVkaWFDbGllbnRNb2NrOwogCiBjbGFzcyBXRUJURVNUUlVOTkVSX0VYUE9SVCBXZWJUZXN0
UHJveHlCYXNlIHsKIHB1YmxpYzoKQEAgLTEyOSw2ICsxMzEsNyBAQCBwcm90ZWN0ZWQ6CiAgICAg
Ym9vbCBpc1NtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCgpOwogICAgIGJvb2wgaXNTZWxlY3RUcmFp
bGluZ1doaXRlc3BhY2VFbmFibGVkKCk7CiAgICAgdm9pZCBzaG93Q29udGV4dE1lbnUoV2ViS2l0
OjpXZWJGcmFtZSosIGNvbnN0IFdlYktpdDo6V2ViQ29udGV4dE1lbnVEYXRhJik7CisgICAgV2Vi
S2l0OjpXZWJVc2VyTWVkaWFDbGllbnQqIHVzZXJNZWRpYUNsaWVudCgpOwogCiAgICAgdm9pZCB3
aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0KFdlYktpdDo6V2ViRnJhbWUqLCBjb25zdCBXZWJLaXQ6
OldlYlVSTCYgZnJvbSwgY29uc3QgV2ViS2l0OjpXZWJVUkwmIHRvLCBkb3VibGUgaW50ZXJ2YWws
IGRvdWJsZSBmaXJlX3RpbWUpOwogICAgIHZvaWQgZGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3QoV2Vi
S2l0OjpXZWJGcmFtZSopOwpAQCAtMTcwLDYgKzE3Myw3IEBAIHByaXZhdGU6CiAgICAgV2ViVGVz
dERlbGVnYXRlKiBtX2RlbGVnYXRlOwogCiAgICAgc3RkOjphdXRvX3B0cjxTcGVsbENoZWNrQ2xp
ZW50PiBtX3NwZWxsY2hlY2s7CisgICAgc3RkOjphdXRvX3B0cjxXZWJVc2VyTWVkaWFDbGllbnRN
b2NrPiBtX3VzZXJNZWRpYUNsaWVudDsKIAogICAgIFdlYktpdDo6V2ViUmVjdCBtX3BhaW50UmVj
dDsKICAgICBzdGQ6Om1hcDx1bnNpZ25lZCwgc3RkOjpzdHJpbmc+IG1fcmVzb3VyY2VJZGVudGlm
aWVyTWFwOwpAQCAtMzMxLDExICszMzUsMTUgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0
dXJuIFdlYlRlc3RQcm94eUJhc2U6OmlzU2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCgp
OwogICAgIH0KLSAgICB2b2lkIHNob3dDb250ZXh0TWVudShXZWJLaXQ6OldlYkZyYW1lKiBmcmFt
ZSwgY29uc3QgV2ViS2l0OjpXZWJDb250ZXh0TWVudURhdGEmIGNvbnRleHRNZW51RGF0YSkKKyAg
ICB2aXJ0dWFsIHZvaWQgc2hvd0NvbnRleHRNZW51KFdlYktpdDo6V2ViRnJhbWUqIGZyYW1lLCBj
b25zdCBXZWJLaXQ6OldlYkNvbnRleHRNZW51RGF0YSYgY29udGV4dE1lbnVEYXRhKQogICAgIHsK
ICAgICAgICAgV2ViVGVzdFByb3h5QmFzZTo6c2hvd0NvbnRleHRNZW51KGZyYW1lLCBjb250ZXh0
TWVudURhdGEpOwogICAgICAgICBCYXNlOjpzaG93Q29udGV4dE1lbnUoZnJhbWUsIGNvbnRleHRN
ZW51RGF0YSk7CiAgICAgfQorICAgIHZpcnR1YWwgV2ViS2l0OjpXZWJVc2VyTWVkaWFDbGllbnQq
IHVzZXJNZWRpYUNsaWVudCgpCisgICAgeworICAgICAgICByZXR1cm4gV2ViVGVzdFByb3h5QmFz
ZTo6dXNlck1lZGlhQ2xpZW50KCk7CisgICAgfQogCiAgICAgLy8gV2ViRnJhbWVDbGllbnQgaW1w
bGVtZW50YXRpb24uCiAgICAgdmlydHVhbCB2b2lkIHdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3Qo
V2ViS2l0OjpXZWJGcmFtZSogZnJhbWUsIGNvbnN0IFdlYktpdDo6V2ViVVJMJiBmcm9tLCBjb25z
dCBXZWJLaXQ6OldlYlVSTCYgdG8sIGRvdWJsZSBpbnRlcnZhbCwgZG91YmxlIGZpcmVUaW1lKQpk
aWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMv
TW9ja0NvbnN0cmFpbnRzLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RS
dW5uZXIvc3JjL01vY2tDb25zdHJhaW50cy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODM0ZGVlYWQ4YWFkMjUy
ZmZlNzUwZDRkMjAxZTFlODU0MThlYTdmZAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL01vY2tDb25zdHJhaW50cy5jcHAKQEAg
LTAsMCArMSw3OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICog
bWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICog
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNb2NrQ29uc3RyYWlu
dHMuaCIKKworI2luY2x1ZGUgPHB1YmxpYy9XZWJNZWRpYUNvbnN0cmFpbnRzLmg+CisKK3VzaW5n
IG5hbWVzcGFjZSBXZWJLaXQ7CisKK25hbWVzcGFjZSBXZWJUZXN0UnVubmVyIHsKKworbmFtZXNw
YWNlIHsKKworYm9vbCBpc1N1cHBvcnRlZChjb25zdCBXZWJTdHJpbmcmIGNvbnN0cmFpbnQpCit7
CisgICAgcmV0dXJuIGNvbnN0cmFpbnQgPT0gInZhbGlkX2FuZF9zdXBwb3J0ZWRfMSIgfHwgY29u
c3RyYWludCA9PSAidmFsaWRfYW5kX3N1cHBvcnRlZF8yIjsKK30KKworYm9vbCBpc1ZhbGlkKGNv
bnN0IFdlYlN0cmluZyYgY29uc3RyYWludCkKK3sKKyAgICByZXR1cm4gaXNTdXBwb3J0ZWQoY29u
c3RyYWludCkgfHwgY29uc3RyYWludCA9PSAidmFsaWRfYnV0X3Vuc3VwcG9ydGVkXzEiIHx8IGNv
bnN0cmFpbnQgPT0gInZhbGlkX2J1dF91bnN1cHBvcnRlZF8yIjsKK30KKworfQorCitib29sIE1v
Y2tDb25zdHJhaW50czo6dmVyaWZ5Q29uc3RyYWludHMoY29uc3QgV2ViTWVkaWFDb25zdHJhaW50
cyYgY29uc3RyYWludHMpCit7CisgICAgV2ViVmVjdG9yPFdlYk1lZGlhQ29uc3RyYWludD4gbWFu
ZGF0b3J5Q29uc3RyYWludHM7CisgICAgY29uc3RyYWludHMuZ2V0TWFuZGF0b3J5Q29uc3RyYWlu
dHMobWFuZGF0b3J5Q29uc3RyYWludHMpOworICAgIGlmIChtYW5kYXRvcnlDb25zdHJhaW50cy5z
aXplKCkpIHsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtYW5kYXRvcnlDb25zdHJh
aW50cy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgY29uc3QgV2ViTWVkaWFDb25zdHJhaW50
JiBjdXJyID0gbWFuZGF0b3J5Q29uc3RyYWludHNbaV07CisgICAgICAgICAgICBpZiAoIWlzU3Vw
cG9ydGVkKGN1cnIubV9uYW1lKSB8fCBjdXJyLm1fdmFsdWUgIT0gIjEiKQorICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIFdlYlZlY3RvcjxXZWJN
ZWRpYUNvbnN0cmFpbnQ+IG9wdGlvbmFsQ29uc3RyYWludHM7CisgICAgY29uc3RyYWludHMuZ2V0
T3B0aW9uYWxDb25zdHJhaW50cyhvcHRpb25hbENvbnN0cmFpbnRzKTsKKyAgICBpZiAob3B0aW9u
YWxDb25zdHJhaW50cy5zaXplKCkpIHsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBv
cHRpb25hbENvbnN0cmFpbnRzLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBjb25zdCBXZWJN
ZWRpYUNvbnN0cmFpbnQmIGN1cnIgPSBvcHRpb25hbENvbnN0cmFpbnRzW2ldOworICAgICAgICAg
ICAgaWYgKCFpc1ZhbGlkKGN1cnIubV9uYW1lKSB8fCBjdXJyLm1fdmFsdWUgIT0gIjAiKQorICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVy
biB0cnVlOworfQorCit9CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9UZXN0UnVubmVyL3NyYy9Nb2NrQ29uc3RyYWludHMuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL01vY2tDb25zdHJhaW50cy5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI3
MTAxYzQzYzY5MmQzZGMxNzA4ZmExZWI0MmUzYmMwNWM1NWE1YzIKLS0tIC9kZXYvbnVsbAorKysg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9Nb2NrQ29uc3Ry
YWludHMuaApAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBNb2NrQ29uc3RyYWludHNfaAorI2RlZmlu
ZSBNb2NrQ29uc3RyYWludHNfaAorCituYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIFdlYk1lZGlh
Q29uc3RyYWludHM7Cit9CisKK25hbWVzcGFjZSBXZWJUZXN0UnVubmVyIHsKKworY2xhc3MgTW9j
a0NvbnN0cmFpbnRzIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgYm9vbCB2ZXJpZnlDb25zdHJhaW50
cyhjb25zdCBXZWJLaXQ6OldlYk1lZGlhQ29uc3RyYWludHMmKTsKK307CisKK30KKworI2VuZGlm
IC8vIE1vY2tDb25zdHJhaW50c19oCisKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL01vY2tXZWJNZWRpYVN0cmVhbUNlbnRlci5jcHAgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9Nb2NrV2ViTWVkaWFT
dHJlYW1DZW50ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI5OGU0MzVlMWNiYmVkNTg0NDA2NGE4NzA5MGY0
Y2M0NDg3M2Q0MWEKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9UZXN0UnVubmVyL3NyYy9Nb2NrV2ViTWVkaWFTdHJlYW1DZW50ZXIuY3BwCkBAIC0wLDAg
KzEsMTExIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6
CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
KyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1vY2tXZWJNZWRpYVN0cmVh
bUNlbnRlci5oIgorCisjaW5jbHVkZSA8cHVibGljL1dlYkF1ZGlvRGVzdGluYXRpb25Db25zdW1l
ci5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJNZWRpYVN0cmVhbS5oPgorI2luY2x1ZGUgPHB1Ymxp
Yy9XZWJNZWRpYVN0cmVhbUNlbnRlckNsaWVudC5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJNZWRp
YVN0cmVhbVNvdXJjZS5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJNZWRpYVN0cmVhbVNvdXJjZXNS
ZXF1ZXN0Lmg+CisjaW5jbHVkZSA8cHVibGljL1dlYk1lZGlhU3RyZWFtVHJhY2suaD4KKyNpbmNs
dWRlIDxwdWJsaWMvV2ViVmVjdG9yLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK25h
bWVzcGFjZSBXZWJUZXN0UnVubmVyIHsKKworTW9ja1dlYk1lZGlhU3RyZWFtQ2VudGVyOjpNb2Nr
V2ViTWVkaWFTdHJlYW1DZW50ZXIoV2ViTWVkaWFTdHJlYW1DZW50ZXJDbGllbnQqIGNsaWVudCkK
K3sKK30KKwordm9pZCBNb2NrV2ViTWVkaWFTdHJlYW1DZW50ZXI6OnF1ZXJ5TWVkaWFTdHJlYW1T
b3VyY2VzKGNvbnN0IFdlYk1lZGlhU3RyZWFtU291cmNlc1JlcXVlc3QmIHJlcXVlc3QpCit7Cisg
ICAgV2ViVmVjdG9yPFdlYk1lZGlhU3RyZWFtU291cmNlPiBhdWRpb1NvdXJjZXMsIHZpZGVvU291
cmNlczsKKyAgICByZXF1ZXN0LmRpZENvbXBsZXRlUXVlcnkoYXVkaW9Tb3VyY2VzLCB2aWRlb1Nv
dXJjZXMpOworfQorCit2b2lkIE1vY2tXZWJNZWRpYVN0cmVhbUNlbnRlcjo6ZGlkRW5hYmxlTWVk
aWFTdHJlYW1UcmFjayhjb25zdCBXZWJNZWRpYVN0cmVhbSYsIGNvbnN0IFdlYk1lZGlhU3RyZWFt
VHJhY2smIGNvbXBvbmVudCkKK3sKKyAgICBjb21wb25lbnQuc291cmNlKCkuc2V0UmVhZHlTdGF0
ZShXZWJNZWRpYVN0cmVhbVNvdXJjZTo6UmVhZHlTdGF0ZUxpdmUpOworfQorCit2b2lkIE1vY2tX
ZWJNZWRpYVN0cmVhbUNlbnRlcjo6ZGlkRGlzYWJsZU1lZGlhU3RyZWFtVHJhY2soY29uc3QgV2Vi
TWVkaWFTdHJlYW0mLCBjb25zdCBXZWJNZWRpYVN0cmVhbVRyYWNrJiBjb21wb25lbnQpCit7Cisg
ICAgY29tcG9uZW50LnNvdXJjZSgpLnNldFJlYWR5U3RhdGUoV2ViTWVkaWFTdHJlYW1Tb3VyY2U6
OlJlYWR5U3RhdGVNdXRlZCk7Cit9CisKK2Jvb2wgTW9ja1dlYk1lZGlhU3RyZWFtQ2VudGVyOjpk
aWRBZGRNZWRpYVN0cmVhbVRyYWNrKGNvbnN0IFdlYk1lZGlhU3RyZWFtJiwgY29uc3QgV2ViTWVk
aWFTdHJlYW1UcmFjayYpCit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgTW9ja1dlYk1l
ZGlhU3RyZWFtQ2VudGVyOjpkaWRSZW1vdmVNZWRpYVN0cmVhbVRyYWNrKGNvbnN0IFdlYk1lZGlh
U3RyZWFtJiwgY29uc3QgV2ViTWVkaWFTdHJlYW1UcmFjayYpCit7CisgICAgcmV0dXJuIHRydWU7
Cit9CisKK3ZvaWQgTW9ja1dlYk1lZGlhU3RyZWFtQ2VudGVyOjpkaWRTdG9wTG9jYWxNZWRpYVN0
cmVhbShjb25zdCBXZWJNZWRpYVN0cmVhbSYgc3RyZWFtKQoreworICAgIFdlYlZlY3RvcjxXZWJN
ZWRpYVN0cmVhbVRyYWNrPiBhdWRpb0NvbXBvbmVudHM7CisgICAgc3RyZWFtLmF1ZGlvU291cmNl
cyhhdWRpb0NvbXBvbmVudHMpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXVkaW9Db21w
b25lbnRzLnNpemUoKTsgKytpKQorICAgICAgICBhdWRpb0NvbXBvbmVudHNbaV0uc291cmNlKCku
c2V0UmVhZHlTdGF0ZShXZWJNZWRpYVN0cmVhbVNvdXJjZTo6UmVhZHlTdGF0ZUVuZGVkKTsKKwor
ICAgIFdlYlZlY3RvcjxXZWJNZWRpYVN0cmVhbVRyYWNrPiB2aWRlb0NvbXBvbmVudHM7CisgICAg
c3RyZWFtLnZpZGVvU291cmNlcyh2aWRlb0NvbXBvbmVudHMpOworICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgdmlkZW9Db21wb25lbnRzLnNpemUoKTsgKytpKQorICAgICAgICB2aWRlb0NvbXBv
bmVudHNbaV0uc291cmNlKCkuc2V0UmVhZHlTdGF0ZShXZWJNZWRpYVN0cmVhbVNvdXJjZTo6UmVh
ZHlTdGF0ZUVuZGVkKTsKK30KKworY2xhc3MgTW9ja1dlYkF1ZGlvRGVzdGluYXRpb25Db25zdW1l
ciA6IHB1YmxpYyBXZWJBdWRpb0Rlc3RpbmF0aW9uQ29uc3VtZXIgeworcHVibGljOgorICAgIHZp
cnR1YWwgfk1vY2tXZWJBdWRpb0Rlc3RpbmF0aW9uQ29uc3VtZXIoKSB7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgc2V0Rm9ybWF0KHNpemVfdCBudW1iZXJPZkNoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRl
KSBPVkVSUklERSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgY29uc3VtZUF1ZGlvKGNvbnN0IFdlYlZl
Y3Rvcjxjb25zdCBmbG9hdCo+Jiwgc2l6ZV90IG51bWJlcl9vZl9mcmFtZXMpIE9WRVJSSURFIHsg
fQorfTsKKwordm9pZCBNb2NrV2ViTWVkaWFTdHJlYW1DZW50ZXI6OmRpZENyZWF0ZU1lZGlhU3Ry
ZWFtKFdlYk1lZGlhU3RyZWFtJiBzdHJlYW0pCit7CisgICAgV2ViVmVjdG9yPFdlYk1lZGlhU3Ry
ZWFtVHJhY2s+IGF1ZGlvQ29tcG9uZW50czsKKyAgICBzdHJlYW0uYXVkaW9Tb3VyY2VzKGF1ZGlv
Q29tcG9uZW50cyk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhdWRpb0NvbXBvbmVudHMu
c2l6ZSgpOyArK2kpIHsKKyAgICAgICAgV2ViTWVkaWFTdHJlYW1Tb3VyY2Ugc291cmNlID0gYXVk
aW9Db21wb25lbnRzW2ldLnNvdXJjZSgpOworICAgICAgICBpZiAoc291cmNlLnJlcXVpcmVzQXVk
aW9Db25zdW1lcigpKSB7CisgICAgICAgICAgICBNb2NrV2ViQXVkaW9EZXN0aW5hdGlvbkNvbnN1
bWVyKiBjb25zdW1lciA9IG5ldyBNb2NrV2ViQXVkaW9EZXN0aW5hdGlvbkNvbnN1bWVyKCk7Cisg
ICAgICAgICAgICBzb3VyY2UuYWRkQXVkaW9Db25zdW1lcihjb25zdW1lcik7CisgICAgICAgICAg
ICBzb3VyY2UucmVtb3ZlQXVkaW9Db25zdW1lcihjb25zdW1lcik7CisgICAgICAgICAgICBkZWxl
dGUgY29uc3VtZXI7CisgICAgICAgIH0KKyAgICB9Cit9CisKK30KZGlmZiAtLWdpdCBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL01vY2tXZWJNZWRpYVN0cmVh
bUNlbnRlci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMv
TW9ja1dlYk1lZGlhU3RyZWFtQ2VudGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWMwMjhhMjZiYzVhZjNiYzZm
NzgwMjg3NWEyOGQzYjQyMzEzMTU0NgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL01vY2tXZWJNZWRpYVN0cmVhbUNlbnRlci5o
CkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
KyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIE1vY2tXZWJNZWRpYVN0cmVhbUNlbnRlcl9oCisjZGVm
aW5lIE1vY2tXZWJNZWRpYVN0cmVhbUNlbnRlcl9oCisKKyNpbmNsdWRlICJUZXN0Q29tbW9uLmgi
CisjaW5jbHVkZSA8cHVibGljL1dlYk1lZGlhU3RyZWFtQ2VudGVyLmg+CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworY2xhc3MgV2ViTWVkaWFTdHJlYW1DZW50ZXJDbGllbnQ7Cit9OworCituYW1lc3Bh
Y2UgV2ViVGVzdFJ1bm5lciB7CisKK2NsYXNzIE1vY2tXZWJNZWRpYVN0cmVhbUNlbnRlciA6IHB1
YmxpYyBXZWJLaXQ6OldlYk1lZGlhU3RyZWFtQ2VudGVyIHsKK3B1YmxpYzoKKyAgICBleHBsaWNp
dCBNb2NrV2ViTWVkaWFTdHJlYW1DZW50ZXIoV2ViS2l0OjpXZWJNZWRpYVN0cmVhbUNlbnRlckNs
aWVudCopOworCisgICAgdmlydHVhbCB2b2lkIHF1ZXJ5TWVkaWFTdHJlYW1Tb3VyY2VzKGNvbnN0
IFdlYktpdDo6V2ViTWVkaWFTdHJlYW1Tb3VyY2VzUmVxdWVzdCYpIE9WRVJSSURFOworICAgIHZp
cnR1YWwgdm9pZCBkaWRFbmFibGVNZWRpYVN0cmVhbVRyYWNrKGNvbnN0IFdlYktpdDo6V2ViTWVk
aWFTdHJlYW0mLCBjb25zdCBXZWJLaXQ6OldlYk1lZGlhU3RyZWFtVHJhY2smKSBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIHZvaWQgZGlkRGlzYWJsZU1lZGlhU3RyZWFtVHJhY2soY29uc3QgV2ViS2l0
OjpXZWJNZWRpYVN0cmVhbSYsIGNvbnN0IFdlYktpdDo6V2ViTWVkaWFTdHJlYW1UcmFjayYpIE9W
RVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBkaWRBZGRNZWRpYVN0cmVhbVRyYWNrKGNvbnN0IFdl
YktpdDo6V2ViTWVkaWFTdHJlYW0mLCBjb25zdCBXZWJLaXQ6OldlYk1lZGlhU3RyZWFtVHJhY2sm
KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgZGlkUmVtb3ZlTWVkaWFTdHJlYW1UcmFjayhj
b25zdCBXZWJLaXQ6OldlYk1lZGlhU3RyZWFtJiwgY29uc3QgV2ViS2l0OjpXZWJNZWRpYVN0cmVh
bVRyYWNrJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpZFN0b3BMb2NhbE1lZGlhU3Ry
ZWFtKGNvbnN0IFdlYktpdDo6V2ViTWVkaWFTdHJlYW0mKSBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IHZvaWQgZGlkQ3JlYXRlTWVkaWFTdHJlYW0oV2ViS2l0OjpXZWJNZWRpYVN0cmVhbSYpIE9WRVJS
SURFOworCitwcml2YXRlOgorICAgIE1vY2tXZWJNZWRpYVN0cmVhbUNlbnRlcigpIHsgfQorfTsK
KworfQorCisjZW5kaWYgLy8gTW9ja1dlYk1lZGlhU3RyZWFtQ2VudGVyX2gKKwpkaWZmIC0tZ2l0
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvTW9ja1dlYlJU
Q0RUTUZTZW5kZXJIYW5kbGVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rl
c3RSdW5uZXIvc3JjL01vY2tXZWJSVENEVE1GU2VuZGVySGFuZGxlci5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
OTVhYTc5NmRmNDJmMjQwNjM5ZDEzOWNmNTk3ZmYzMzUwZGZiNjVkMAotLS0gL2Rldi9udWxsCisr
KyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL01vY2tXZWJS
VENEVE1GU2VuZGVySGFuZGxlci5jcHAKQEAgLTAsMCArMSw5NCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgR09PR0xFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBHT09HTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJNb2NrV2ViUlRDRFRNRlNlbmRlckhhbmRsZXIuaCIKKworI2luY2x1ZGUgIldlYlRl
c3REZWxlZ2F0ZS5oIgorI2luY2x1ZGUgPGFzc2VydC5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJN
ZWRpYVN0cmVhbVNvdXJjZS5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJSVENEVE1GU2VuZGVySGFu
ZGxlckNsaWVudC5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCituYW1lc3BhY2UgV2Vi
VGVzdFJ1bm5lciB7CisKK2NsYXNzIERUTUZTZW5kZXJUb25lVGFzayA6IHB1YmxpYyBXZWJNZXRo
b2RUYXNrPE1vY2tXZWJSVENEVE1GU2VuZGVySGFuZGxlcj4geworcHVibGljOgorICAgIERUTUZT
ZW5kZXJUb25lVGFzayhNb2NrV2ViUlRDRFRNRlNlbmRlckhhbmRsZXIqIG9iamVjdCwgV2ViUlRD
RFRNRlNlbmRlckhhbmRsZXJDbGllbnQqIGNsaWVudCkKKyAgICAgICAgOiBXZWJNZXRob2RUYXNr
PE1vY2tXZWJSVENEVE1GU2VuZGVySGFuZGxlcj4ob2JqZWN0KQorICAgICAgICAsIG1fY2xpZW50
KGNsaWVudCkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHJ1bklmVmFsaWQoKSBP
VkVSUklERQorICAgIHsKKyAgICAgICAgV2ViU3RyaW5nIHRvbmVzID0gbV9vYmplY3QtPmN1cnJl
bnRUb25lQnVmZmVyKCk7CisgICAgICAgIG1fb2JqZWN0LT5jbGVhclRvbmVCdWZmZXIoKTsKKyAg
ICAgICAgbV9jbGllbnQtPmRpZFBsYXlUb25lKHRvbmVzKTsKKyAgICB9CisKK3ByaXZhdGU6Cisg
ICAgV2ViUlRDRFRNRlNlbmRlckhhbmRsZXJDbGllbnQqIG1fY2xpZW50OworfTsKKworLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vCisKK01vY2tXZWJSVENEVE1GU2VuZGVySGFuZGxlcjo6TW9ja1dlYlJU
Q0RUTUZTZW5kZXJIYW5kbGVyKGNvbnN0IFdlYk1lZGlhU3RyZWFtVHJhY2smIHRyYWNrLCBXZWJU
ZXN0RGVsZWdhdGUqIGRlbGVnYXRlKQorICAgIDogbV9jbGllbnQoMCkKKyAgICAsIG1fdHJhY2so
dHJhY2spCisgICAgLCBtX2RlbGVnYXRlKGRlbGVnYXRlKQoreworfQorCit2b2lkIE1vY2tXZWJS
VENEVE1GU2VuZGVySGFuZGxlcjo6c2V0Q2xpZW50KFdlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyQ2xp
ZW50KiBjbGllbnQpCit7CisgICAgbV9jbGllbnQgPSBjbGllbnQ7Cit9CisKK1dlYlN0cmluZyBN
b2NrV2ViUlRDRFRNRlNlbmRlckhhbmRsZXI6OmN1cnJlbnRUb25lQnVmZmVyKCkKK3sKKyAgICBy
ZXR1cm4gbV90b25lQnVmZmVyOworfQorCitib29sIE1vY2tXZWJSVENEVE1GU2VuZGVySGFuZGxl
cjo6Y2FuSW5zZXJ0RFRNRigpCit7CisgICAgYXNzZXJ0KG1fY2xpZW50ICYmICFtX3RyYWNrLmlz
TnVsbCgpKTsKKyAgICByZXR1cm4gbV90cmFjay5zb3VyY2UoKS50eXBlKCkgPT0gV2ViTWVkaWFT
dHJlYW1Tb3VyY2U6OlR5cGVBdWRpbyAmJiBtX3RyYWNrLmlzRW5hYmxlZCgpICYmIG1fdHJhY2su
c291cmNlKCkucmVhZHlTdGF0ZSgpID09IFdlYk1lZGlhU3RyZWFtU291cmNlOjpSZWFkeVN0YXRl
TGl2ZTsKK30KKworYm9vbCBNb2NrV2ViUlRDRFRNRlNlbmRlckhhbmRsZXI6Omluc2VydERUTUYo
Y29uc3QgV2ViU3RyaW5nJiB0b25lcywgbG9uZyBkdXJhdGlvbiwgbG9uZyBpbnRlclRvbmVHYXAp
Cit7CisgICAgYXNzZXJ0KG1fY2xpZW50KTsKKyAgICBpZiAoIWNhbkluc2VydERUTUYoKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgbV90b25lQnVmZmVyID0gdG9uZXM7CisgICAgbV9k
ZWxlZ2F0ZS0+cG9zdFRhc2sobmV3IERUTUZTZW5kZXJUb25lVGFzayh0aGlzLCBtX2NsaWVudCkp
OworICAgIG1fZGVsZWdhdGUtPnBvc3RUYXNrKG5ldyBEVE1GU2VuZGVyVG9uZVRhc2sodGhpcywg
bV9jbGllbnQpKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworfQpkaWZmIC0tZ2l0IGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvTW9ja1dlYlJUQ0RUTUZTZW5k
ZXJIYW5kbGVyLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3Ny
Yy9Nb2NrV2ViUlRDRFRNRlNlbmRlckhhbmRsZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mOTBkYWI4ODRjZmZk
YWIzYTY5NGE1YzhiYjg4MjJlYTBmNzhhZGNlCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvTW9ja1dlYlJUQ0RUTUZTZW5kZXJI
YW5kbGVyLmgKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgR09PR0xFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBHT09HTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTW9ja1dlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyX2gK
KyNkZWZpbmUgTW9ja1dlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyX2gKKworI2luY2x1ZGUgIlRlc3RD
b21tb24uaCIKKyNpbmNsdWRlICJXZWJUYXNrLmgiCisjaW5jbHVkZSA8cHVibGljL1dlYk1lZGlh
U3RyZWFtVHJhY2suaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViUlRDRFRNRlNlbmRlckhhbmRsZXIu
aD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJUZXN0UnVu
bmVyIHsKKworY2xhc3MgV2ViVGVzdERlbGVnYXRlOworCitjbGFzcyBNb2NrV2ViUlRDRFRNRlNl
bmRlckhhbmRsZXIgOiBwdWJsaWMgV2ViS2l0OjpXZWJSVENEVE1GU2VuZGVySGFuZGxlciB7Citw
dWJsaWM6CisgICAgTW9ja1dlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyKGNvbnN0IFdlYktpdDo6V2Vi
TWVkaWFTdHJlYW1UcmFjayYsIFdlYlRlc3REZWxlZ2F0ZSopOworCisgICAgdmlydHVhbCB2b2lk
IHNldENsaWVudChXZWJLaXQ6OldlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyQ2xpZW50KikgT1ZFUlJJ
REU7CisKKyAgICB2aXJ0dWFsIFdlYktpdDo6V2ViU3RyaW5nIGN1cnJlbnRUb25lQnVmZmVyKCkg
T1ZFUlJJREU7CisKKyAgICB2aXJ0dWFsIGJvb2wgY2FuSW5zZXJ0RFRNRigpIE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgYm9vbCBpbnNlcnREVE1GKGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJiB0b25l
cywgbG9uZyBkdXJhdGlvbiwgbG9uZyBpbnRlclRvbmVHYXApIE9WRVJSSURFOworCisgICAgLy8g
V2ViVGFzayByZWxhdGVkIG1ldGhvZHMKKyAgICBXZWJUYXNrTGlzdCogdGFza0xpc3QoKSB7IHJl
dHVybiAmbV90YXNrTGlzdDsgfQorICAgIHZvaWQgY2xlYXJUb25lQnVmZmVyKCkgeyBtX3RvbmVC
dWZmZXIucmVzZXQoKTsgfQorCitwcml2YXRlOgorICAgIE1vY2tXZWJSVENEVE1GU2VuZGVySGFu
ZGxlcigpOworCisgICAgV2ViS2l0OjpXZWJSVENEVE1GU2VuZGVySGFuZGxlckNsaWVudCogbV9j
bGllbnQ7CisgICAgV2ViS2l0OjpXZWJNZWRpYVN0cmVhbVRyYWNrIG1fdHJhY2s7CisgICAgV2Vi
S2l0OjpXZWJTdHJpbmcgbV90b25lQnVmZmVyOworICAgIFdlYlRhc2tMaXN0IG1fdGFza0xpc3Q7
CisgICAgV2ViVGVzdERlbGVnYXRlKiBtX2RlbGVnYXRlOworfTsKKworfQorCisjZW5kaWYgLy8g
TW9ja1dlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyX2gKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL01vY2tXZWJSVENEYXRhQ2hhbm5lbEhhbmRs
ZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvTW9j
a1dlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTIxNmJjMzRjOWRkYjgx
MDEzYzI4YjI4YzBlNTkwZWM5MDIyODgyZgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL01vY2tXZWJSVENEYXRhQ2hhbm5lbEhh
bmRsZXIuY3BwCkBAIC0wLDAgKzEsOTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQor
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJNb2NrV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmgiCisKKyNpbmNs
dWRlICJXZWJUZXN0RGVsZWdhdGUuaCIKKyNpbmNsdWRlIDxhc3NlcnQuaD4KKyNpbmNsdWRlIDxw
dWJsaWMvV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50Lmg+CisKK3VzaW5nIG5hbWVzcGFj
ZSBXZWJLaXQ7CisKK25hbWVzcGFjZSBXZWJUZXN0UnVubmVyIHsKKworY2xhc3MgRGF0YUNoYW5u
ZWxSZWFkeVN0YXRlVGFzayA6IHB1YmxpYyBXZWJNZXRob2RUYXNrPE1vY2tXZWJSVENEYXRhQ2hh
bm5lbEhhbmRsZXI+IHsKK3B1YmxpYzoKKyAgICBEYXRhQ2hhbm5lbFJlYWR5U3RhdGVUYXNrKE1v
Y2tXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIqIG9iamVjdCwgV2ViUlRDRGF0YUNoYW5uZWxIYW5k
bGVyQ2xpZW50KiBkYXRhQ2hhbm5lbENsaWVudCwgV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xp
ZW50OjpSZWFkeVN0YXRlIHN0YXRlKQorICAgICAgICA6IFdlYk1ldGhvZFRhc2s8TW9ja1dlYlJU
Q0RhdGFDaGFubmVsSGFuZGxlcj4ob2JqZWN0KQorICAgICAgICAsIG1fZGF0YUNoYW5uZWxDbGll
bnQoZGF0YUNoYW5uZWxDbGllbnQpCisgICAgICAgICwgbV9zdGF0ZShzdGF0ZSkKKyAgICB7Cisg
ICAgfQorCisgICAgdmlydHVhbCB2b2lkIHJ1bklmVmFsaWQoKSBPVkVSUklERQorICAgIHsKKyAg
ICAgICAgbV9kYXRhQ2hhbm5lbENsaWVudC0+ZGlkQ2hhbmdlUmVhZHlTdGF0ZShtX3N0YXRlKTsK
KyAgICB9CisKK3ByaXZhdGU6CisgICAgV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50KiBt
X2RhdGFDaGFubmVsQ2xpZW50OworICAgIFdlYlJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudDo6
UmVhZHlTdGF0ZSBtX3N0YXRlOworfTsKKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisKK01vY2tX
ZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6Ok1vY2tXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIoV2Vi
U3RyaW5nIGxhYmVsLCBib29sIHJlbGlhYmxlLCBXZWJUZXN0RGVsZWdhdGUqIGRlbGVnYXRlKQor
ICAgIDogbV9jbGllbnQoMCkKKyAgICAsIG1fbGFiZWwobGFiZWwpCisgICAgLCBtX3JlbGlhYmxl
KHJlbGlhYmxlKQorICAgICwgbV9kZWxlZ2F0ZShkZWxlZ2F0ZSkKK3sKK30KKwordm9pZCBNb2Nr
V2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpzZXRDbGllbnQoV2ViUlRDRGF0YUNoYW5uZWxIYW5k
bGVyQ2xpZW50KiBjbGllbnQpCit7CisgICAgbV9jbGllbnQgPSBjbGllbnQ7CisgICAgaWYgKG1f
Y2xpZW50KQorICAgICAgICBtX2RlbGVnYXRlLT5wb3N0VGFzayhuZXcgRGF0YUNoYW5uZWxSZWFk
eVN0YXRlVGFzayh0aGlzLCBtX2NsaWVudCwgV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50
OjpSZWFkeVN0YXRlT3BlbikpOworfQorCit1bnNpZ25lZCBsb25nIE1vY2tXZWJSVENEYXRhQ2hh
bm5lbEhhbmRsZXI6OmJ1ZmZlcmVkQW1vdW50KCkKK3sKKyAgICByZXR1cm4gMDsKK30KKworYm9v
bCBNb2NrV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpzZW5kU3RyaW5nRGF0YShjb25zdCBXZWJT
dHJpbmcmIGRhdGEpCit7CisgICAgYXNzZXJ0KG1fY2xpZW50KTsKKyAgICBtX2NsaWVudC0+ZGlk
UmVjZWl2ZVN0cmluZ0RhdGEoZGF0YSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgTW9j
a1dlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6c2VuZFJhd0RhdGEoY29uc3QgY2hhciogZGF0YSwg
c2l6ZV90IHNpemUpCit7CisgICAgYXNzZXJ0KG1fY2xpZW50KTsKKyAgICBtX2NsaWVudC0+ZGlk
UmVjZWl2ZVJhd0RhdGEoZGF0YSwgc2l6ZSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQg
TW9ja1dlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6Y2xvc2UoKQoreworICAgIGFzc2VydChtX2Ns
aWVudCk7CisgICAgbV9kZWxlZ2F0ZS0+cG9zdFRhc2sobmV3IERhdGFDaGFubmVsUmVhZHlTdGF0
ZVRhc2sodGhpcywgbV9jbGllbnQsIFdlYlJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudDo6UmVh
ZHlTdGF0ZUNsb3NlZCkpOworfQorCit9CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9Nb2NrV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmgg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9Nb2NrV2ViUlRD
RGF0YUNoYW5uZWxIYW5kbGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2M5MzgxMWNlMjM5MDA2ZTY2ZTExMDI3
NDYxYWRmNzVkZjVkNGNjMgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL01vY2tXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuaApA
QCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE1vY2tXZWJSVENEYXRhQ2hh
bm5lbEhhbmRsZXJfaAorI2RlZmluZSBNb2NrV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyX2gKKwor
I2luY2x1ZGUgIlRlc3RDb21tb24uaCIKKyNpbmNsdWRlICJXZWJUYXNrLmgiCisjaW5jbHVkZSA8
cHVibGljL1dlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJT
dHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYlRlc3RSdW5uZXIgeworCitjbGFzcyBXZWJUZXN0RGVs
ZWdhdGU7CisKK2NsYXNzIE1vY2tXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIgOiBwdWJsaWMgV2Vi
S2l0OjpXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIgeworcHVibGljOgorICAgIE1vY2tXZWJSVENE
YXRhQ2hhbm5lbEhhbmRsZXIoV2ViS2l0OjpXZWJTdHJpbmcgbGFiZWwsIGJvb2wgcmVsaWFibGUs
IFdlYlRlc3REZWxlZ2F0ZSopOworCisgICAgdmlydHVhbCB2b2lkIHNldENsaWVudChXZWJLaXQ6
OldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCopIE9WRVJSSURFOworICAgIHZpcnR1YWwg
V2ViS2l0OjpXZWJTdHJpbmcgbGFiZWwoKSBPVkVSUklERSB7IHJldHVybiBtX2xhYmVsOyB9Cisg
ICAgdmlydHVhbCBib29sIGlzUmVsaWFibGUoKSBPVkVSUklERSB7IHJldHVybiBtX3JlbGlhYmxl
OyB9CisgICAgdmlydHVhbCB1bnNpZ25lZCBsb25nIGJ1ZmZlcmVkQW1vdW50KCkgT1ZFUlJJREU7
CisgICAgdmlydHVhbCBib29sIHNlbmRTdHJpbmdEYXRhKGNvbnN0IFdlYktpdDo6V2ViU3RyaW5n
JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIHNlbmRSYXdEYXRhKGNvbnN0IGNoYXIqLCBz
aXplX3QpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBjbG9zZSgpIE9WRVJSSURFOworCisg
ICAgLy8gV2ViVGFzayByZWxhdGVkIG1ldGhvZHMKKyAgICBXZWJUYXNrTGlzdCogdGFza0xpc3Qo
KSB7IHJldHVybiAmbV90YXNrTGlzdDsgfQorCitwcml2YXRlOgorICAgIE1vY2tXZWJSVENEYXRh
Q2hhbm5lbEhhbmRsZXIoKTsKKworICAgIFdlYktpdDo6V2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVy
Q2xpZW50KiBtX2NsaWVudDsKKyAgICBXZWJLaXQ6OldlYlN0cmluZyBtX2xhYmVsOworICAgIGJv
b2wgbV9yZWxpYWJsZTsKKyAgICBXZWJUYXNrTGlzdCBtX3Rhc2tMaXN0OworICAgIFdlYlRlc3RE
ZWxlZ2F0ZSogbV9kZWxlZ2F0ZTsKK307CisKK30KKworI2VuZGlmIC8vIE1vY2tXZWJSVENEYXRh
Q2hhbm5lbEhhbmRsZXJfaApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vVGVzdFJ1bm5lci9zcmMvTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5jcHAgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9Nb2NrV2ViUlRDUGVl
ckNvbm5lY3Rpb25IYW5kbGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hOTFjZDE2MTk0NmIyZmFlYzFjNjYz
NjQ1NjgxMjE5NjA5MmZlMWYxCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxl
ci5jcHAKQEAgLTAsMCArMSwzMTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICog
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTW9j
a1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5oIgorCisjaW5jbHVkZSAiTW9ja0NvbnN0cmFp
bnRzLmgiCisjaW5jbHVkZSAiTW9ja1dlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyLmgiCisjaW5jbHVk
ZSAiTW9ja1dlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5oIgorI2luY2x1ZGUgIlRlc3RJbnRlcmZh
Y2VzLmgiCisjaW5jbHVkZSAiV2ViVGVzdERlbGVnYXRlLmgiCisjaW5jbHVkZSA8cHVibGljL1dl
Yk1lZGlhQ29uc3RyYWludHMuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViTWVkaWFTdHJlYW0uaD4K
KyNpbmNsdWRlIDxwdWJsaWMvV2ViTWVkaWFTdHJlYW1UcmFjay5oPgorI2luY2x1ZGUgPHB1Ymxp
Yy9XZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQuaD4KKyNpbmNsdWRlIDxwdWJsaWMv
V2ViUlRDU2Vzc2lvbkRlc2NyaXB0aW9uLmg+CisjaW5jbHVkZSA8cHVibGljL1dlYlJUQ1Nlc3Np
b25EZXNjcmlwdGlvblJlcXVlc3QuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViUlRDU3RhdHNSZXF1
ZXN0Lmg+CisjaW5jbHVkZSA8cHVibGljL1dlYlJUQ1N0YXRzUmVzcG9uc2UuaD4KKyNpbmNsdWRl
IDxwdWJsaWMvV2ViUlRDVm9pZFJlcXVlc3QuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViU3RyaW5n
Lmg+CisjaW5jbHVkZSA8cHVibGljL1dlYlZlY3Rvci5oPgorCit1c2luZyBuYW1lc3BhY2UgV2Vi
S2l0OworCituYW1lc3BhY2UgV2ViVGVzdFJ1bm5lciB7CisKK2NsYXNzIFJUQ1Nlc3Npb25EZXNj
cmlwdGlvblJlcXVlc3RTdWNjZWRlZFRhc2sgOiBwdWJsaWMgV2ViTWV0aG9kVGFzazxNb2NrV2Vi
UlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyPiB7CitwdWJsaWM6CisgICAgUlRDU2Vzc2lvbkRlc2Ny
aXB0aW9uUmVxdWVzdFN1Y2NlZGVkVGFzayhNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVy
KiBvYmplY3QsIGNvbnN0IFdlYlJUQ1Nlc3Npb25EZXNjcmlwdGlvblJlcXVlc3QmIHJlcXVlc3Qs
IGNvbnN0IFdlYlJUQ1Nlc3Npb25EZXNjcmlwdGlvbiYgcmVzdWx0KQorICAgICAgICA6IFdlYk1l
dGhvZFRhc2s8TW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcj4ob2JqZWN0KQorICAgICAg
ICAsIG1fcmVxdWVzdChyZXF1ZXN0KQorICAgICAgICAsIG1fcmVzdWx0KHJlc3VsdCkKKyAgICB7
CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHJ1bklmVmFsaWQoKSBPVkVSUklERQorICAgIHsK
KyAgICAgICAgbV9yZXF1ZXN0LnJlcXVlc3RTdWNjZWVkZWQobV9yZXN1bHQpOworICAgIH0KKwor
cHJpdmF0ZToKKyAgICBXZWJSVENTZXNzaW9uRGVzY3JpcHRpb25SZXF1ZXN0IG1fcmVxdWVzdDsK
KyAgICBXZWJSVENTZXNzaW9uRGVzY3JpcHRpb24gbV9yZXN1bHQ7Cit9OworCitjbGFzcyBSVENT
ZXNzaW9uRGVzY3JpcHRpb25SZXF1ZXN0RmFpbGVkVGFzayA6IHB1YmxpYyBXZWJNZXRob2RUYXNr
PE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI+IHsKK3B1YmxpYzoKKyAgICBSVENTZXNz
aW9uRGVzY3JpcHRpb25SZXF1ZXN0RmFpbGVkVGFzayhNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25I
YW5kbGVyKiBvYmplY3QsIGNvbnN0IFdlYlJUQ1Nlc3Npb25EZXNjcmlwdGlvblJlcXVlc3QmIHJl
cXVlc3QpCisgICAgICAgIDogV2ViTWV0aG9kVGFzazxNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25I
YW5kbGVyPihvYmplY3QpCisgICAgICAgICwgbV9yZXF1ZXN0KHJlcXVlc3QpCisgICAgeworICAg
IH0KKworICAgIHZpcnR1YWwgdm9pZCBydW5JZlZhbGlkKCkgT1ZFUlJJREUKKyAgICB7CisgICAg
ICAgIG1fcmVxdWVzdC5yZXF1ZXN0RmFpbGVkKCJURVNUX0VSUk9SIik7CisgICAgfQorCitwcml2
YXRlOgorICAgIFdlYlJUQ1Nlc3Npb25EZXNjcmlwdGlvblJlcXVlc3QgbV9yZXF1ZXN0OworfTsK
KworY2xhc3MgUlRDU3RhdHNSZXF1ZXN0U3VjY2VlZGVkVGFzayA6IHB1YmxpYyBXZWJNZXRob2RU
YXNrPE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI+IHsKK3B1YmxpYzoKKyAgICBSVENT
dGF0c1JlcXVlc3RTdWNjZWVkZWRUYXNrKE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIq
IG9iamVjdCwgY29uc3QgV2ViS2l0OjpXZWJSVENTdGF0c1JlcXVlc3QmIHJlcXVlc3QsIGNvbnN0
IFdlYktpdDo6V2ViUlRDU3RhdHNSZXNwb25zZSYgcmVzcG9uc2UpCisgICAgICAgIDogV2ViTWV0
aG9kVGFzazxNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyPihvYmplY3QpCisgICAgICAg
ICwgbV9yZXF1ZXN0KHJlcXVlc3QpCisgICAgICAgICwgbV9yZXNwb25zZShyZXNwb25zZSkKKyAg
ICB7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHJ1bklmVmFsaWQoKSBPVkVSUklERQorICAg
IHsKKyAgICAgICAgbV9yZXF1ZXN0LnJlcXVlc3RTdWNjZWVkZWQobV9yZXNwb25zZSk7CisgICAg
fQorCitwcml2YXRlOgorICAgIFdlYktpdDo6V2ViUlRDU3RhdHNSZXF1ZXN0IG1fcmVxdWVzdDsK
KyAgICBXZWJLaXQ6OldlYlJUQ1N0YXRzUmVzcG9uc2UgbV9yZXNwb25zZTsKK307CisKK2NsYXNz
IFJUQ1ZvaWRSZXF1ZXN0VGFzayA6IHB1YmxpYyBXZWJNZXRob2RUYXNrPE1vY2tXZWJSVENQZWVy
Q29ubmVjdGlvbkhhbmRsZXI+IHsKK3B1YmxpYzoKKyAgICBSVENWb2lkUmVxdWVzdFRhc2soTW9j
a1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlciogb2JqZWN0LCBjb25zdCBXZWJSVENWb2lkUmVx
dWVzdCYgcmVxdWVzdCwgYm9vbCBzdWNjZWVkZWQpCisgICAgICAgIDogV2ViTWV0aG9kVGFzazxN
b2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyPihvYmplY3QpCisgICAgICAgICwgbV9yZXF1
ZXN0KHJlcXVlc3QpCisgICAgICAgICwgbV9zdWNjZWVkZWQoc3VjY2VlZGVkKQorICAgIHsKKyAg
ICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgcnVuSWZWYWxpZCgpIE9WRVJSSURFCisgICAgeworICAg
ICAgICBpZiAobV9zdWNjZWVkZWQpCisgICAgICAgICAgICBtX3JlcXVlc3QucmVxdWVzdFN1Y2Nl
ZWRlZCgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX3JlcXVlc3QucmVxdWVzdEZhaWxl
ZCgiVEVTVF9FUlJPUiIpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBXZWJSVENWb2lkUmVxdWVz
dCBtX3JlcXVlc3Q7CisgICAgYm9vbCBtX3N1Y2NlZWRlZDsKK307CisKK2NsYXNzIFJUQ1BlZXJD
b25uZWN0aW9uU3RhdGVUYXNrIDogcHVibGljIFdlYk1ldGhvZFRhc2s8TW9ja1dlYlJUQ1BlZXJD
b25uZWN0aW9uSGFuZGxlcj4geworcHVibGljOgorICAgIFJUQ1BlZXJDb25uZWN0aW9uU3RhdGVU
YXNrKE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIqIG9iamVjdCwgV2ViUlRDUGVlckNv
bm5lY3Rpb25IYW5kbGVyQ2xpZW50KiBjbGllbnQsIFdlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxl
ckNsaWVudDo6SUNFQ29ubmVjdGlvblN0YXRlIGNvbm5lY3Rpb25TdGF0ZSwgV2ViUlRDUGVlckNv
bm5lY3Rpb25IYW5kbGVyQ2xpZW50OjpJQ0VHYXRoZXJpbmdTdGF0ZSBnYXRoZXJpbmdTdGF0ZSkK
KyAgICAgICAgOiBXZWJNZXRob2RUYXNrPE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI+
KG9iamVjdCkKKyAgICAgICAgLCBtX2NsaWVudChjbGllbnQpCisgICAgICAgICwgbV9jb25uZWN0
aW9uU3RhdGUoY29ubmVjdGlvblN0YXRlKQorICAgICAgICAsIG1fZ2F0aGVyaW5nU3RhdGUoZ2F0
aGVyaW5nU3RhdGUpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBydW5JZlZhbGlk
KCkgT1ZFUlJJREUKKyAgICB7CisgICAgICAgIG1fY2xpZW50LT5kaWRDaGFuZ2VJQ0VHYXRoZXJp
bmdTdGF0ZShtX2dhdGhlcmluZ1N0YXRlKTsKKyAgICAgICAgbV9jbGllbnQtPmRpZENoYW5nZUlD
RUNvbm5lY3Rpb25TdGF0ZShtX2Nvbm5lY3Rpb25TdGF0ZSk7CisgICAgfQorCitwcml2YXRlOgor
ICAgIFdlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudCogbV9jbGllbnQ7CisgICAgV2Vi
UlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50OjpJQ0VDb25uZWN0aW9uU3RhdGUgbV9jb25u
ZWN0aW9uU3RhdGU7CisgICAgV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50OjpJQ0VH
YXRoZXJpbmdTdGF0ZSBtX2dhdGhlcmluZ1N0YXRlOworfTsKKworY2xhc3MgUmVtb3RlRGF0YUNo
YW5uZWxUYXNrIDogcHVibGljIFdlYk1ldGhvZFRhc2s8TW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9u
SGFuZGxlcj4geworcHVibGljOgorICAgIFJlbW90ZURhdGFDaGFubmVsVGFzayhNb2NrV2ViUlRD
UGVlckNvbm5lY3Rpb25IYW5kbGVyKiBvYmplY3QsIFdlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxl
ckNsaWVudCogY2xpZW50LCBXZWJUZXN0RGVsZWdhdGUqIGRlbGVnYXRlKQorICAgICAgICA6IFdl
Yk1ldGhvZFRhc2s8TW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcj4ob2JqZWN0KQorICAg
ICAgICAsIG1fY2xpZW50KGNsaWVudCkKKyAgICAgICAgLCBtX2RlbGVnYXRlKGRlbGVnYXRlKQor
ICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgcnVuSWZWYWxpZCgpIE9WRVJSSURFCisg
ICAgeworICAgICAgICBXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIqIHJlbW90ZURhdGFDaGFubmVs
ID0gbmV3IE1vY2tXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIoIk1vY2tSZW1vdGVEYXRhQ2hhbm5l
bCIsIHRydWUsIG1fZGVsZWdhdGUpOworICAgICAgICBtX2NsaWVudC0+ZGlkQWRkUmVtb3RlRGF0
YUNoYW5uZWwocmVtb3RlRGF0YUNoYW5uZWwpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBXZWJS
VENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQqIG1fY2xpZW50OworICAgIFdlYlRlc3REZWxl
Z2F0ZSogbV9kZWxlZ2F0ZTsKK307CisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLworCitNb2NrV2Vi
UlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyOjpNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVy
KFdlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudCogY2xpZW50LCBUZXN0SW50ZXJmYWNl
cyogaW50ZXJmYWNlcykKKyAgICA6IG1fY2xpZW50KGNsaWVudCkKKyAgICAsIG1fc3RvcHBlZChm
YWxzZSkKKyAgICAsIG1fc3RyZWFtQ291bnQoMCkKKyAgICAsIG1faW50ZXJmYWNlcyhpbnRlcmZh
Y2VzKQoreworfQorCitib29sIE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI6OmluaXRp
YWxpemUoY29uc3QgV2ViUlRDQ29uZmlndXJhdGlvbiYsIGNvbnN0IFdlYk1lZGlhQ29uc3RyYWlu
dHMmIGNvbnN0cmFpbnRzKQoreworICAgIGlmIChNb2NrQ29uc3RyYWludHM6OnZlcmlmeUNvbnN0
cmFpbnRzKGNvbnN0cmFpbnRzKSkgeworICAgICAgICBtX2ludGVyZmFjZXMtPmRlbGVnYXRlKCkt
PnBvc3RUYXNrKG5ldyBSVENQZWVyQ29ubmVjdGlvblN0YXRlVGFzayh0aGlzLCBtX2NsaWVudCwg
V2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50OjpJQ0VDb25uZWN0aW9uU3RhdGVDb21w
bGV0ZWQsIFdlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudDo6SUNFR2F0aGVyaW5nU3Rh
dGVDb21wbGV0ZSkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisKK3ZvaWQgTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcjo6Y3JlYXRl
T2ZmZXIoY29uc3QgV2ViUlRDU2Vzc2lvbkRlc2NyaXB0aW9uUmVxdWVzdCYgcmVxdWVzdCwgY29u
c3QgV2ViTWVkaWFDb25zdHJhaW50cyYgY29uc3RyYWludHMpCit7CisgICAgV2ViU3RyaW5nIHNo
b3VsZFN1Y2NlZWQ7CisgICAgaWYgKGNvbnN0cmFpbnRzLmdldE1hbmRhdG9yeUNvbnN0cmFpbnRW
YWx1ZSgic3VjY2VlZCIsIHNob3VsZFN1Y2NlZWQpICYmIHNob3VsZFN1Y2NlZWQgPT0gInRydWUi
KSB7CisgICAgICAgIFdlYlJUQ1Nlc3Npb25EZXNjcmlwdGlvbiBzZXNzaW9uRGVzY3JpcHRpb247
CisgICAgICAgIHNlc3Npb25EZXNjcmlwdGlvbi5pbml0aWFsaXplKCJvZmZlciIsICJsb2NhbCIp
OworICAgICAgICBtX2ludGVyZmFjZXMtPmRlbGVnYXRlKCktPnBvc3RUYXNrKG5ldyBSVENTZXNz
aW9uRGVzY3JpcHRpb25SZXF1ZXN0U3VjY2VkZWRUYXNrKHRoaXMsIHJlcXVlc3QsIHNlc3Npb25E
ZXNjcmlwdGlvbikpOworICAgIH0gZWxzZQorICAgICAgICBtX2ludGVyZmFjZXMtPmRlbGVnYXRl
KCktPnBvc3RUYXNrKG5ldyBSVENTZXNzaW9uRGVzY3JpcHRpb25SZXF1ZXN0RmFpbGVkVGFzayh0
aGlzLCByZXF1ZXN0KSk7Cit9CisKK3ZvaWQgTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxl
cjo6Y3JlYXRlQW5zd2VyKGNvbnN0IFdlYlJUQ1Nlc3Npb25EZXNjcmlwdGlvblJlcXVlc3QmIHJl
cXVlc3QsIGNvbnN0IFdlYk1lZGlhQ29uc3RyYWludHMmKQoreworICAgIGlmICghbV9yZW1vdGVE
ZXNjcmlwdGlvbi5pc051bGwoKSkgeworICAgICAgICBXZWJSVENTZXNzaW9uRGVzY3JpcHRpb24g
c2Vzc2lvbkRlc2NyaXB0aW9uOworICAgICAgICBzZXNzaW9uRGVzY3JpcHRpb24uaW5pdGlhbGl6
ZSgiYW5zd2VyIiwgImxvY2FsIik7CisgICAgICAgIG1faW50ZXJmYWNlcy0+ZGVsZWdhdGUoKS0+
cG9zdFRhc2sobmV3IFJUQ1Nlc3Npb25EZXNjcmlwdGlvblJlcXVlc3RTdWNjZWRlZFRhc2sodGhp
cywgcmVxdWVzdCwgc2Vzc2lvbkRlc2NyaXB0aW9uKSk7CisgICAgfSBlbHNlCisgICAgICAgIG1f
aW50ZXJmYWNlcy0+ZGVsZWdhdGUoKS0+cG9zdFRhc2sobmV3IFJUQ1Nlc3Npb25EZXNjcmlwdGlv
blJlcXVlc3RGYWlsZWRUYXNrKHRoaXMsIHJlcXVlc3QpKTsKK30KKwordm9pZCBNb2NrV2ViUlRD
UGVlckNvbm5lY3Rpb25IYW5kbGVyOjpzZXRMb2NhbERlc2NyaXB0aW9uKGNvbnN0IFdlYlJUQ1Zv
aWRSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXZWJSVENTZXNzaW9uRGVzY3JpcHRpb24mIGxvY2Fs
RGVzY3JpcHRpb24pCit7CisgICAgaWYgKCFsb2NhbERlc2NyaXB0aW9uLmlzTnVsbCgpICYmIGxv
Y2FsRGVzY3JpcHRpb24uc2RwKCkgPT0gImxvY2FsIikgeworICAgICAgICBtX2xvY2FsRGVzY3Jp
cHRpb24gPSBsb2NhbERlc2NyaXB0aW9uOworICAgICAgICBtX2ludGVyZmFjZXMtPmRlbGVnYXRl
KCktPnBvc3RUYXNrKG5ldyBSVENWb2lkUmVxdWVzdFRhc2sodGhpcywgcmVxdWVzdCwgdHJ1ZSkp
OworICAgIH0gZWxzZQorICAgICAgICBtX2ludGVyZmFjZXMtPmRlbGVnYXRlKCktPnBvc3RUYXNr
KG5ldyBSVENWb2lkUmVxdWVzdFRhc2sodGhpcywgcmVxdWVzdCwgZmFsc2UpKTsKK30KKwordm9p
ZCBNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyOjpzZXRSZW1vdGVEZXNjcmlwdGlvbihj
b25zdCBXZWJSVENWb2lkUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2ViUlRDU2Vzc2lvbkRlc2Ny
aXB0aW9uJiByZW1vdGVEZXNjcmlwdGlvbikKK3sKKyAgICBpZiAoIXJlbW90ZURlc2NyaXB0aW9u
LmlzTnVsbCgpICYmIHJlbW90ZURlc2NyaXB0aW9uLnNkcCgpID09ICJyZW1vdGUiKSB7CisgICAg
ICAgIG1fcmVtb3RlRGVzY3JpcHRpb24gPSByZW1vdGVEZXNjcmlwdGlvbjsKKyAgICAgICAgbV9p
bnRlcmZhY2VzLT5kZWxlZ2F0ZSgpLT5wb3N0VGFzayhuZXcgUlRDVm9pZFJlcXVlc3RUYXNrKHRo
aXMsIHJlcXVlc3QsIHRydWUpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgbV9pbnRlcmZhY2VzLT5k
ZWxlZ2F0ZSgpLT5wb3N0VGFzayhuZXcgUlRDVm9pZFJlcXVlc3RUYXNrKHRoaXMsIHJlcXVlc3Qs
IGZhbHNlKSk7Cit9CisKK1dlYlJUQ1Nlc3Npb25EZXNjcmlwdGlvbiBNb2NrV2ViUlRDUGVlckNv
bm5lY3Rpb25IYW5kbGVyOjpsb2NhbERlc2NyaXB0aW9uKCkKK3sKKyAgICByZXR1cm4gbV9sb2Nh
bERlc2NyaXB0aW9uOworfQorCitXZWJSVENTZXNzaW9uRGVzY3JpcHRpb24gTW9ja1dlYlJUQ1Bl
ZXJDb25uZWN0aW9uSGFuZGxlcjo6cmVtb3RlRGVzY3JpcHRpb24oKQoreworICAgIHJldHVybiBt
X3JlbW90ZURlc2NyaXB0aW9uOworfQorCitib29sIE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhh
bmRsZXI6OnVwZGF0ZUlDRShjb25zdCBXZWJSVENDb25maWd1cmF0aW9uJiwgY29uc3QgV2ViTWVk
aWFDb25zdHJhaW50cyYpCit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgTW9ja1dlYlJU
Q1BlZXJDb25uZWN0aW9uSGFuZGxlcjo6YWRkSUNFQ2FuZGlkYXRlKGNvbnN0IFdlYlJUQ0lDRUNh
bmRpZGF0ZSYgaWNlQ2FuZGlkYXRlKQoreworICAgIG1fY2xpZW50LT5kaWRHZW5lcmF0ZUlDRUNh
bmRpZGF0ZShpY2VDYW5kaWRhdGUpOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIE1vY2tX
ZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI6OmFkZFN0cmVhbShjb25zdCBXZWJNZWRpYVN0cmVh
bSYgc3RyZWFtLCBjb25zdCBXZWJNZWRpYUNvbnN0cmFpbnRzJikKK3sKKyAgICBtX3N0cmVhbUNv
dW50ICs9IDE7CisgICAgbV9jbGllbnQtPmRpZEFkZFJlbW90ZVN0cmVhbShzdHJlYW0pOworICAg
IG1fY2xpZW50LT5uZWdvdGlhdGlvbk5lZWRlZCgpOworICAgIHJldHVybiB0cnVlOworfQorCit2
b2lkIE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI6OnJlbW92ZVN0cmVhbShjb25zdCBX
ZWJNZWRpYVN0cmVhbSYgc3RyZWFtKQoreworICAgIG1fc3RyZWFtQ291bnQgLT0gMTsKKyAgICBt
X2NsaWVudC0+ZGlkUmVtb3ZlUmVtb3RlU3RyZWFtKHN0cmVhbSk7CisgICAgbV9jbGllbnQtPm5l
Z290aWF0aW9uTmVlZGVkKCk7Cit9CisKK3ZvaWQgTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFu
ZGxlcjo6Z2V0U3RhdHMoY29uc3QgV2ViUlRDU3RhdHNSZXF1ZXN0JiByZXF1ZXN0KQoreworICAg
IFdlYlJUQ1N0YXRzUmVzcG9uc2UgcmVzcG9uc2UgPSByZXF1ZXN0LmNyZWF0ZVJlc3BvbnNlKCk7
CisgICAgZG91YmxlIGN1cnJlbnREYXRlID0gbV9pbnRlcmZhY2VzLT5kZWxlZ2F0ZSgpLT5nZXRD
dXJyZW50VGltZUluTWlsbGlzZWNvbmQoKTsKKyAgICBpZiAocmVxdWVzdC5oYXNTZWxlY3Rvcigp
KSB7CisgICAgICAgIFdlYk1lZGlhU3RyZWFtIHN0cmVhbSA9IHJlcXVlc3Quc3RyZWFtKCk7Cisg
ICAgICAgIC8vIEZJWE1FOiBUaGVyZSBpcyBubyBjaGVjayB0aGF0IHRoZSBmZXRjaGVkIHZhbHVl
cyBhcmUgdmFsaWQuCisgICAgICAgIHNpemVfdCByZXBvcnRJbmRleCA9IHJlc3BvbnNlLmFkZFJl
cG9ydCgpOworICAgICAgICByZXNwb25zZS5hZGRFbGVtZW50KHJlcG9ydEluZGV4LCB0cnVlLCBj
dXJyZW50RGF0ZSk7CisgICAgICAgIHJlc3BvbnNlLmFkZFN0YXRpc3RpYyhyZXBvcnRJbmRleCwg
dHJ1ZSwgInR5cGUiLCAidmlkZW8iKTsKKyAgICB9IGVsc2UgeworICAgICAgICBmb3IgKGludCBp
ID0gMDsgaSA8IG1fc3RyZWFtQ291bnQ7ICsraSkgeworICAgICAgICAgICAgc2l6ZV90IHJlcG9y
dEluZGV4ID0gcmVzcG9uc2UuYWRkUmVwb3J0KCk7CisgICAgICAgICAgICByZXNwb25zZS5hZGRF
bGVtZW50KHJlcG9ydEluZGV4LCB0cnVlLCBjdXJyZW50RGF0ZSk7CisgICAgICAgICAgICByZXNw
b25zZS5hZGRTdGF0aXN0aWMocmVwb3J0SW5kZXgsIHRydWUsICJ0eXBlIiwgImF1ZGlvIik7Cisg
ICAgICAgICAgICByZXBvcnRJbmRleCA9IHJlc3BvbnNlLmFkZFJlcG9ydCgpOworICAgICAgICAg
ICAgcmVzcG9uc2UuYWRkRWxlbWVudChyZXBvcnRJbmRleCwgdHJ1ZSwgY3VycmVudERhdGUpOwor
ICAgICAgICAgICAgcmVzcG9uc2UuYWRkU3RhdGlzdGljKHJlcG9ydEluZGV4LCB0cnVlLCAidHlw
ZSIsICJ2aWRlbyIpOworICAgICAgICAgICAgLy8gV2UgYWRkIGFuIGVtcHR5IHJlbW90ZSByZXBv
cnQgZWxlbWVudC4KKyAgICAgICAgICAgIHJlc3BvbnNlLmFkZEVsZW1lbnQocmVwb3J0SW5kZXgs
IGZhbHNlLCBjdXJyZW50RGF0ZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgbV9pbnRlcmZhY2Vz
LT5kZWxlZ2F0ZSgpLT5wb3N0VGFzayhuZXcgUlRDU3RhdHNSZXF1ZXN0U3VjY2VlZGVkVGFzayh0
aGlzLCByZXF1ZXN0LCByZXNwb25zZSkpOworfQorCitXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIq
IE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI6OmNyZWF0ZURhdGFDaGFubmVsKGNvbnN0
IFdlYlN0cmluZyYgbGFiZWwsIGJvb2wgcmVsaWFibGUpCit7CisgICAgbV9pbnRlcmZhY2VzLT5k
ZWxlZ2F0ZSgpLT5wb3N0VGFzayhuZXcgUmVtb3RlRGF0YUNoYW5uZWxUYXNrKHRoaXMsIG1fY2xp
ZW50LCBtX2ludGVyZmFjZXMtPmRlbGVnYXRlKCkpKTsKKworICAgIHJldHVybiBuZXcgTW9ja1dl
YlJUQ0RhdGFDaGFubmVsSGFuZGxlcihsYWJlbCwgcmVsaWFibGUsIG1faW50ZXJmYWNlcy0+ZGVs
ZWdhdGUoKSk7Cit9CisKK1dlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyKiBNb2NrV2ViUlRDUGVlckNv
bm5lY3Rpb25IYW5kbGVyOjpjcmVhdGVEVE1GU2VuZGVyKGNvbnN0IFdlYk1lZGlhU3RyZWFtVHJh
Y2smIHRyYWNrKQoreworICAgIHJldHVybiBuZXcgTW9ja1dlYlJUQ0RUTUZTZW5kZXJIYW5kbGVy
KHRyYWNrLCBtX2ludGVyZmFjZXMtPmRlbGVnYXRlKCkpOworfQorCit2b2lkIE1vY2tXZWJSVENQ
ZWVyQ29ubmVjdGlvbkhhbmRsZXI6OnN0b3AoKQoreworICAgIG1fc3RvcHBlZCA9IHRydWU7Cit9
CisKK30KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5u
ZXIvc3JjL01vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaCBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL01vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhh
bmRsZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi45NjVhMjA4M2IxM2NmYWRmZGU5MzgwN2E2OTUxMWNjN2Y2YTUx
MzM4Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVz
dFJ1bm5lci9zcmMvTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5oCkBAIC0wLDAgKzEs
ODggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAq
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJfaAorI2RlZmluZSBN
b2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyX2gKKworI2luY2x1ZGUgIlRlc3RDb21tb24u
aCIKKyNpbmNsdWRlICJXZWJUYXNrLmgiCisjaW5jbHVkZSA8cHVibGljL1dlYlJUQ1BlZXJDb25u
ZWN0aW9uSGFuZGxlci5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJSVENTZXNzaW9uRGVzY3JpcHRp
b24uaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViUlRDU2Vzc2lvbkRlc2NyaXB0aW9uUmVxdWVzdC5o
PgorI2luY2x1ZGUgPHB1YmxpYy9XZWJSVENTdGF0c1JlcXVlc3QuaD4KKworbmFtZXNwYWNlIFdl
YktpdCB7CitjbGFzcyBXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQ7Cit9OworCitu
YW1lc3BhY2UgV2ViVGVzdFJ1bm5lciB7CisKK2NsYXNzIFRlc3RJbnRlcmZhY2VzOworCitjbGFz
cyBNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyIDogcHVibGljIFdlYktpdDo6V2ViUlRD
UGVlckNvbm5lY3Rpb25IYW5kbGVyIHsKK3B1YmxpYzoKKyAgICBNb2NrV2ViUlRDUGVlckNvbm5l
Y3Rpb25IYW5kbGVyKFdlYktpdDo6V2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50Kiwg
VGVzdEludGVyZmFjZXMqKTsKKworICAgIHZpcnR1YWwgYm9vbCBpbml0aWFsaXplKGNvbnN0IFdl
YktpdDo6V2ViUlRDQ29uZmlndXJhdGlvbiYsIGNvbnN0IFdlYktpdDo6V2ViTWVkaWFDb25zdHJh
aW50cyYpIE9WRVJSSURFOworCisgICAgdmlydHVhbCB2b2lkIGNyZWF0ZU9mZmVyKGNvbnN0IFdl
YktpdDo6V2ViUlRDU2Vzc2lvbkRlc2NyaXB0aW9uUmVxdWVzdCYsIGNvbnN0IFdlYktpdDo6V2Vi
TWVkaWFDb25zdHJhaW50cyYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVBbnN3
ZXIoY29uc3QgV2ViS2l0OjpXZWJSVENTZXNzaW9uRGVzY3JpcHRpb25SZXF1ZXN0JiwgY29uc3Qg
V2ViS2l0OjpXZWJNZWRpYUNvbnN0cmFpbnRzJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lk
IHNldExvY2FsRGVzY3JpcHRpb24oY29uc3QgV2ViS2l0OjpXZWJSVENWb2lkUmVxdWVzdCYsIGNv
bnN0IFdlYktpdDo6V2ViUlRDU2Vzc2lvbkRlc2NyaXB0aW9uJikgT1ZFUlJJREU7CisgICAgdmly
dHVhbCB2b2lkIHNldFJlbW90ZURlc2NyaXB0aW9uKGNvbnN0IFdlYktpdDo6V2ViUlRDVm9pZFJl
cXVlc3QmLCBjb25zdCBXZWJLaXQ6OldlYlJUQ1Nlc3Npb25EZXNjcmlwdGlvbiYpIE9WRVJSSURF
OworICAgIHZpcnR1YWwgV2ViS2l0OjpXZWJSVENTZXNzaW9uRGVzY3JpcHRpb24gbG9jYWxEZXNj
cmlwdGlvbigpIE9WRVJSSURFOworICAgIHZpcnR1YWwgV2ViS2l0OjpXZWJSVENTZXNzaW9uRGVz
Y3JpcHRpb24gcmVtb3RlRGVzY3JpcHRpb24oKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wg
dXBkYXRlSUNFKGNvbnN0IFdlYktpdDo6V2ViUlRDQ29uZmlndXJhdGlvbiYsIGNvbnN0IFdlYktp
dDo6V2ViTWVkaWFDb25zdHJhaW50cyYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBhZGRJ
Q0VDYW5kaWRhdGUoY29uc3QgV2ViS2l0OjpXZWJSVENJQ0VDYW5kaWRhdGUmKSBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIGJvb2wgYWRkU3RyZWFtKGNvbnN0IFdlYktpdDo6V2ViTWVkaWFTdHJlYW0m
LCBjb25zdCBXZWJLaXQ6OldlYk1lZGlhQ29uc3RyYWludHMmKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIHZvaWQgcmVtb3ZlU3RyZWFtKGNvbnN0IFdlYktpdDo6V2ViTWVkaWFTdHJlYW0mKSBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0U3RhdHMoY29uc3QgV2ViS2l0OjpXZWJSVENTdGF0
c1JlcXVlc3QmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFdlYktpdDo6V2ViUlRDRGF0YUNoYW5u
ZWxIYW5kbGVyKiBjcmVhdGVEYXRhQ2hhbm5lbChjb25zdCBXZWJLaXQ6OldlYlN0cmluZyYgbGFi
ZWwsIGJvb2wgcmVsaWFibGUpIE9WRVJSSURFOworICAgIHZpcnR1YWwgV2ViS2l0OjpXZWJSVENE
VE1GU2VuZGVySGFuZGxlciogY3JlYXRlRFRNRlNlbmRlcihjb25zdCBXZWJLaXQ6OldlYk1lZGlh
U3RyZWFtVHJhY2smKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpIE9WRVJSSURF
OworCisgICAgLy8gV2ViVGFzayByZWxhdGVkIG1ldGhvZHMKKyAgICBXZWJUYXNrTGlzdCogdGFz
a0xpc3QoKSB7IHJldHVybiAmbV90YXNrTGlzdDsgfQorCitwcml2YXRlOgorICAgIE1vY2tXZWJS
VENQZWVyQ29ubmVjdGlvbkhhbmRsZXIoKSB7IH0KKworICAgIFdlYktpdDo6V2ViUlRDUGVlckNv
bm5lY3Rpb25IYW5kbGVyQ2xpZW50KiBtX2NsaWVudDsKKyAgICBib29sIG1fc3RvcHBlZDsKKyAg
ICBXZWJUYXNrTGlzdCBtX3Rhc2tMaXN0OworICAgIFdlYktpdDo6V2ViUlRDU2Vzc2lvbkRlc2Ny
aXB0aW9uIG1fbG9jYWxEZXNjcmlwdGlvbjsKKyAgICBXZWJLaXQ6OldlYlJUQ1Nlc3Npb25EZXNj
cmlwdGlvbiBtX3JlbW90ZURlc2NyaXB0aW9uOworICAgIGludCBtX3N0cmVhbUNvdW50OworICAg
IFRlc3RJbnRlcmZhY2VzKiBtX2ludGVyZmFjZXM7Cit9OworCit9CisKKyNlbmRpZiAvLyBNb2Nr
V2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyX2gKKwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdEludGVyZmFjZXMuY3BwIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdEludGVyZmFjZXMu
Y3BwCmluZGV4IGVjYmEzZTk4MzU3NDc3MGY3NDZiMTJhNmM2N2RmNTVjN2JiZTQwMzYuLmUzNGRh
YzM0MWZhNmNiYjFiYzc4M2I4NDUwZWU5YTM5YTE2NTIxYzcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RJbnRlcmZhY2VzLmNwcAor
KysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0SW50
ZXJmYWNlcy5jcHAKQEAgLTUyLDYgKzUyLDcgQEAgVGVzdEludGVyZmFjZXM6OlRlc3RJbnRlcmZh
Y2VzKCkKICAgICAsIG1fdGV4dElucHV0Q29udHJvbGxlcihuZXcgVGV4dElucHV0Q29udHJvbGxl
cigpKQogICAgICwgbV90ZXN0UnVubmVyKG5ldyBUZXN0UnVubmVyKCkpCiAgICAgLCBtX3dlYlZp
ZXcoMCkKKyAgICAsIG1fZGVsZWdhdGUoMCkKIHsKIH0KIApAQCAtODcsNiArODgsNyBAQCB2b2lk
IFRlc3RJbnRlcmZhY2VzOjpzZXREZWxlZ2F0ZShXZWJUZXN0RGVsZWdhdGUqIGRlbGVnYXRlKQog
ICAgIG1fZ2FtZXBhZENvbnRyb2xsZXItPnNldERlbGVnYXRlKGRlbGVnYXRlKTsKICAgICAvLyBt
X3RleHRJbnB1dENvbnRyb2xsZXIgZG9lc24ndCBkZXBlbmQgb24gV2ViVGVzdERlbGVnYXRlLgog
ICAgIG1fdGVzdFJ1bm5lci0+c2V0RGVsZWdhdGUoZGVsZWdhdGUpOworICAgIG1fZGVsZWdhdGUg
PSBkZWxlZ2F0ZTsKIH0KIAogdm9pZCBUZXN0SW50ZXJmYWNlczo6YmluZFRvKFdlYkZyYW1lKiBm
cmFtZSkKQEAgLTE0Nyw0ICsxNDksOSBAQCBXZWJWaWV3KiBUZXN0SW50ZXJmYWNlczo6d2ViVmll
dygpCiAgICAgcmV0dXJuIG1fd2ViVmlldzsKIH0KIAorV2ViVGVzdERlbGVnYXRlKiBUZXN0SW50
ZXJmYWNlczo6ZGVsZWdhdGUoKQoreworICAgIHJldHVybiBtX2RlbGVnYXRlOworfQorCiB9CmRp
ZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9U
ZXN0SW50ZXJmYWNlcy5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5l
ci9zcmMvVGVzdEludGVyZmFjZXMuaAppbmRleCAzODA2NmMwNjFiNTM4Y2VkZWI5MTE1ZTQxZTZi
MGVlMjZiZWEwMWFkLi5lYzNhMWRlMjg2OThjZmEwZTc2ODA5YWI0NzI0MDk4NmQwOGMzYzM1IDEw
MDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9U
ZXN0SW50ZXJmYWNlcy5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RS
dW5uZXIvc3JjL1Rlc3RJbnRlcmZhY2VzLmgKQEAgLTY0LDYgKzY0LDcgQEAgcHVibGljOgogICAg
IEV2ZW50U2VuZGVyKiBldmVudFNlbmRlcigpOwogICAgIFRlc3RSdW5uZXIqIHRlc3RSdW5uZXIo
KTsKICAgICBXZWJLaXQ6OldlYlZpZXcqIHdlYlZpZXcoKTsKKyAgICBXZWJUZXN0RGVsZWdhdGUq
IGRlbGVnYXRlKCk7CiAKIAogcHJpdmF0ZToKQEAgLTczLDYgKzc0LDcgQEAgcHJpdmF0ZToKICAg
ICBzdGQ6OmF1dG9fcHRyPFRleHRJbnB1dENvbnRyb2xsZXI+IG1fdGV4dElucHV0Q29udHJvbGxl
cjsKICAgICBzdGQ6OmF1dG9fcHRyPFRlc3RSdW5uZXI+IG1fdGVzdFJ1bm5lcjsKICAgICBXZWJL
aXQ6OldlYlZpZXcqIG1fd2ViVmlldzsKKyAgICBXZWJUZXN0RGVsZWdhdGUqIG1fZGVsZWdhdGU7
CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0
UnVubmVyL3NyYy9XZWJUZXN0SW50ZXJmYWNlcy5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUZXN0SW50ZXJmYWNlcy5jcHAKaW5kZXggNzI1N2Rm
M2QzNWFlNmI2ZjBmYmI4YzJmNjllNjRmNDk1MmU5M2NkYi4uYmM0M2Q2YWE1NTdiMzRmZWU4ZjUy
MzQ4NTkwZjBiNjIzN2Q3MWFhYiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdEludGVyZmFjZXMuY3BwCisrKyBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RJbnRlcmZhY2VzLmNw
cApAQCAtMzEsNiArMzEsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYlRl
c3RJbnRlcmZhY2VzLmgiCiAKKyNpbmNsdWRlICJNb2NrV2ViTWVkaWFTdHJlYW1DZW50ZXIuaCIK
KyNpbmNsdWRlICJNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmgiCiAjaW5jbHVkZSAi
VGVzdEludGVyZmFjZXMuaCIKICNpbmNsdWRlICJUZXN0UnVubmVyLmgiCiAKQEAgLTg3LDQgKzg5
LDE0IEBAIFRlc3RJbnRlcmZhY2VzKiBXZWJUZXN0SW50ZXJmYWNlczo6dGVzdEludGVyZmFjZXMo
KQogICAgIHJldHVybiBtX2ludGVyZmFjZXMuZ2V0KCk7CiB9CiAKK1dlYk1lZGlhU3RyZWFtQ2Vu
dGVyKiBXZWJUZXN0SW50ZXJmYWNlczo6Y3JlYXRlTWVkaWFTdHJlYW1DZW50ZXIoV2ViTWVkaWFT
dHJlYW1DZW50ZXJDbGllbnQqIGNsaWVudCkKK3sKKyAgICByZXR1cm4gbmV3IE1vY2tXZWJNZWRp
YVN0cmVhbUNlbnRlcihjbGllbnQpOworfQorCitXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIq
IFdlYlRlc3RJbnRlcmZhY2VzOjpjcmVhdGVXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIoV2Vi
UlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50KiBjbGllbnQpCit7CisgICAgcmV0dXJuIG5l
dyBNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyKGNsaWVudCwgbV9pbnRlcmZhY2VzLmdl
dCgpKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
VGVzdFJ1bm5lci9zcmMvV2ViVGVzdFByb3h5LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RQcm94eS5jcHAKaW5kZXggMGUwNGU5NWQwY2E1
ODIxMTJmMWU4ZDlhYTZmYWI5YWUwMDc5MzFiMy4uOWM4ZThkNzYxOGY2YmM5ZTkwNzIwY2QyZjBi
M2E2ZGQ4NzA1Mzc1ZiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
VGVzdFJ1bm5lci9zcmMvV2ViVGVzdFByb3h5LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUZXN0UHJveHkuY3BwCkBAIC01NCw2ICs1NCw3
IEBACiAjaW5jbHVkZSAiV2ViVGVzdERlbGVnYXRlLmgiCiAjaW5jbHVkZSAiV2ViVGVzdEludGVy
ZmFjZXMuaCIKICNpbmNsdWRlICJXZWJUZXN0UnVubmVyLmgiCisjaW5jbHVkZSAiV2ViVXNlck1l
ZGlhQ2xpZW50TW9jay5oIgogI2luY2x1ZGUgIldlYlZpZXcuaCIKICNpbmNsdWRlIDxwdWJsaWMv
V2ViQ1N0cmluZy5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJVUkxFcnJvci5oPgpAQCAtNjMyLDYg
KzYzMywxMyBAQCB2b2lkIFdlYlRlc3RQcm94eUJhc2U6OnNob3dDb250ZXh0TWVudShXZWJGcmFt
ZSosIGNvbnN0IFdlYkNvbnRleHRNZW51RGF0YSYgY29udAogICAgIG1fdGVzdEludGVyZmFjZXMt
PmV2ZW50U2VuZGVyKCktPnNldENvbnRleHRNZW51RGF0YShjb250ZXh0TWVudURhdGEpOwogfQog
CitXZWJVc2VyTWVkaWFDbGllbnQqIFdlYlRlc3RQcm94eUJhc2U6OnVzZXJNZWRpYUNsaWVudCgp
Cit7CisgICAgaWYgKCFtX3VzZXJNZWRpYUNsaWVudC5nZXQoKSkKKyAgICAgICAgbV91c2VyTWVk
aWFDbGllbnQgPSBhdXRvX3B0cjxXZWJVc2VyTWVkaWFDbGllbnRNb2NrPihuZXcgV2ViVXNlck1l
ZGlhQ2xpZW50TW9jayhtX2RlbGVnYXRlKSk7CisgICAgcmV0dXJuIG1fdXNlck1lZGlhQ2xpZW50
LmdldCgpOworfQorCiB2b2lkIFdlYlRlc3RQcm94eUJhc2U6OndpbGxQZXJmb3JtQ2xpZW50UmVk
aXJlY3QoV2ViRnJhbWUqIGZyYW1lLCBjb25zdCBXZWJVUkwmLCBjb25zdCBXZWJVUkwmIHRvLCBk
b3VibGUsIGRvdWJsZSkKIHsKICAgICBpZiAobV90ZXN0SW50ZXJmYWNlcy0+dGVzdFJ1bm5lcigp
LT5zaG91bGREdW1wRnJhbWVMb2FkQ2FsbGJhY2tzKCkpIHsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlVzZXJNZWRpYUNsaWVudE1v
Y2suY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2Vi
VXNlck1lZGlhQ2xpZW50TW9jay5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzI2NzliNDVmOWNlNzVjNDMwMTgy
YWI3OTZmNjM2Y2Q3OWE1ZGFjNwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlVzZXJNZWRpYUNsaWVudE1vY2suY3BwCkBA
IC0wLDAgKzEsMTI2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisg
KiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisg
KiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlVzZXJNZWRp
YUNsaWVudE1vY2suaCIKKworI2luY2x1ZGUgIk1vY2tDb25zdHJhaW50cy5oIgorI2luY2x1ZGUg
IldlYkRvY3VtZW50LmgiCisjaW5jbHVkZSAiV2ViTWVkaWFTdHJlYW1SZWdpc3RyeS5oIgorI2lu
Y2x1ZGUgIldlYlRlc3REZWxlZ2F0ZS5oIgorI2luY2x1ZGUgIldlYlVzZXJNZWRpYVJlcXVlc3Qu
aCIKKyNpbmNsdWRlIDxwdWJsaWMvV2ViTWVkaWFDb25zdHJhaW50cy5oPgorI2luY2x1ZGUgPHB1
YmxpYy9XZWJNZWRpYVN0cmVhbS5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJNZWRpYVN0cmVhbVNv
dXJjZS5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJWZWN0b3IuaD4KKwordXNpbmcgbmFtZXNwYWNl
IFdlYktpdDsKKworbmFtZXNwYWNlIFdlYlRlc3RSdW5uZXIgeworCitjbGFzcyBVc2VyTWVkaWFS
ZXF1ZXN0VGFzayA6IHB1YmxpYyBXZWJNZXRob2RUYXNrPFdlYlVzZXJNZWRpYUNsaWVudE1vY2s+
IHsKK3B1YmxpYzoKKyAgICBVc2VyTWVkaWFSZXF1ZXN0VGFzayhXZWJVc2VyTWVkaWFDbGllbnRN
b2NrKiBvYmplY3QsIGNvbnN0IFdlYlVzZXJNZWRpYVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdl
Yk1lZGlhU3RyZWFtIHJlc3VsdCkKKyAgICAgICAgOiBXZWJNZXRob2RUYXNrPFdlYlVzZXJNZWRp
YUNsaWVudE1vY2s+KG9iamVjdCkKKyAgICAgICAgLCBtX3JlcXVlc3QocmVxdWVzdCkKKyAgICAg
ICAgLCBtX3Jlc3VsdChyZXN1bHQpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBy
dW5JZlZhbGlkKCkgT1ZFUlJJREUKKyAgICB7CisgICAgICAgIGlmIChtX3Jlc3VsdC5pc051bGwo
KSkKKyAgICAgICAgICAgIG1fcmVxdWVzdC5yZXF1ZXN0RmFpbGVkKCk7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIG1fcmVxdWVzdC5yZXF1ZXN0U3VjY2VlZGVkKG1fcmVzdWx0KTsKKyAgICB9
CisKK3ByaXZhdGU6CisgICAgV2ViVXNlck1lZGlhUmVxdWVzdCBtX3JlcXVlc3Q7CisgICAgV2Vi
TWVkaWFTdHJlYW0gbV9yZXN1bHQ7Cit9OworCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLworCitjbGFzcyBNb2NrRXh0cmFEYXRhIDogcHVibGljIFdlYk1lZGlhU3RyZWFtOjpFeHRy
YURhdGEgeworcHVibGljOgorICAgIGludCBmb287Cit9OworCitXZWJVc2VyTWVkaWFDbGllbnRN
b2NrOjpXZWJVc2VyTWVkaWFDbGllbnRNb2NrKFdlYlRlc3REZWxlZ2F0ZSogZGVsZWdhdGUpCisg
ICAgOiBtX2RlbGVnYXRlKGRlbGVnYXRlKQoreworfQorCit2b2lkIFdlYlVzZXJNZWRpYUNsaWVu
dE1vY2s6OnJlcXVlc3RVc2VyTWVkaWEoY29uc3QgV2ViVXNlck1lZGlhUmVxdWVzdCYgc3RyZWFt
UmVxdWVzdCwgY29uc3QgV2ViVmVjdG9yPFdlYk1lZGlhU3RyZWFtU291cmNlPiYgYXVkaW9Tb3Vy
Y2VzVmVjdG9yLCBjb25zdCBXZWJWZWN0b3I8V2ViTWVkaWFTdHJlYW1Tb3VyY2U+JiB2aWRlb1Nv
dXJjZXNWZWN0b3IpCit7CisgICAgV0VCS0lUX0FTU0VSVCghc3RyZWFtUmVxdWVzdC5pc051bGwo
KSk7CisgICAgV2ViVXNlck1lZGlhUmVxdWVzdCByZXF1ZXN0ID0gc3RyZWFtUmVxdWVzdDsKKwor
ICAgIGlmIChyZXF1ZXN0Lm93bmVyRG9jdW1lbnQoKS5pc051bGwoKSB8fCAhcmVxdWVzdC5vd25l
ckRvY3VtZW50KCkuZnJhbWUoKSkgeworICAgICAgICBtX2RlbGVnYXRlLT5wb3N0VGFzayhuZXcg
VXNlck1lZGlhUmVxdWVzdFRhc2sodGhpcywgcmVxdWVzdCwgV2ViTWVkaWFTdHJlYW0oKSkpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgV2ViTWVkaWFDb25zdHJhaW50cyBjb25zdHJh
aW50cyA9IHJlcXVlc3QuYXVkaW9Db25zdHJhaW50cygpOworICAgIGlmICghY29uc3RyYWludHMu
aXNOdWxsKCkgJiYgIU1vY2tDb25zdHJhaW50czo6dmVyaWZ5Q29uc3RyYWludHMoY29uc3RyYWlu
dHMpKSB7CisgICAgICAgIG1fZGVsZWdhdGUtPnBvc3RUYXNrKG5ldyBVc2VyTWVkaWFSZXF1ZXN0
VGFzayh0aGlzLCByZXF1ZXN0LCBXZWJNZWRpYVN0cmVhbSgpKSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisgICAgY29uc3RyYWludHMgPSByZXF1ZXN0LnZpZGVvQ29uc3RyYWludHMoKTsKKyAg
ICBpZiAoIWNvbnN0cmFpbnRzLmlzTnVsbCgpICYmICFNb2NrQ29uc3RyYWludHM6OnZlcmlmeUNv
bnN0cmFpbnRzKGNvbnN0cmFpbnRzKSkgeworICAgICAgICBtX2RlbGVnYXRlLT5wb3N0VGFzayhu
ZXcgVXNlck1lZGlhUmVxdWVzdFRhc2sodGhpcywgcmVxdWVzdCwgV2ViTWVkaWFTdHJlYW0oKSkp
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY29uc3Qgc2l6ZV90IHplcm8gPSAwOwor
ICAgIGNvbnN0IHNpemVfdCBvbmUgPSAxOworICAgIFdlYlZlY3RvcjxXZWJNZWRpYVN0cmVhbVNv
dXJjZT4gYXVkaW9Tb3VyY2VzKHJlcXVlc3QuYXVkaW8oKSA/IG9uZSA6IHplcm8pOworICAgIFdl
YlZlY3RvcjxXZWJNZWRpYVN0cmVhbVNvdXJjZT4gdmlkZW9Tb3VyY2VzKHJlcXVlc3QudmlkZW8o
KSA/IG9uZSA6IHplcm8pOworCisgICAgaWYgKHJlcXVlc3QuYXVkaW8oKSkKKyAgICAgICAgYXVk
aW9Tb3VyY2VzWzBdLmluaXRpYWxpemUoIk1vY2tBdWRpb0RldmljZSMxIiwgV2ViTWVkaWFTdHJl
YW1Tb3VyY2U6OlR5cGVBdWRpbywgIk1vY2sgYXVkaW8gZGV2aWNlIik7CisKKyAgICBpZiAocmVx
dWVzdC52aWRlbygpKQorICAgICAgICB2aWRlb1NvdXJjZXNbMF0uaW5pdGlhbGl6ZSgiTW9ja1Zp
ZGVvRGV2aWNlIzEiLCBXZWJNZWRpYVN0cmVhbVNvdXJjZTo6VHlwZVZpZGVvLCAiTW9jayB2aWRl
byBkZXZpY2UiKTsKKworICAgIFdlYk1lZGlhU3RyZWFtIHN0cmVhbTsKKyAgICBzdHJlYW0uaW5p
dGlhbGl6ZSgiZm9vYmFyIiwgYXVkaW9Tb3VyY2VzLCB2aWRlb1NvdXJjZXMpOworCisgICAgc3Ry
ZWFtLnNldEV4dHJhRGF0YShuZXcgTW9ja0V4dHJhRGF0YSgpKTsKKworICAgIG1fZGVsZWdhdGUt
PnBvc3RUYXNrKG5ldyBVc2VyTWVkaWFSZXF1ZXN0VGFzayh0aGlzLCByZXF1ZXN0LCBzdHJlYW0p
KTsKK30KKwordm9pZCBXZWJVc2VyTWVkaWFDbGllbnRNb2NrOjpjYW5jZWxVc2VyTWVkaWFSZXF1
ZXN0KGNvbnN0IFdlYlVzZXJNZWRpYVJlcXVlc3QmKQoreworfQorCit9CmRpZmYgLS1naXQgYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJVc2VyTWVkaWFD
bGllbnRNb2NrLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3Ny
Yy9XZWJVc2VyTWVkaWFDbGllbnRNb2NrLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWM5OTJhMDY5OWZmYzJmZWNh
ZDQ5YTY5OTkyNDljYWFhYTYyZDQyYwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlVzZXJNZWRpYUNsaWVudE1vY2suaApA
QCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisg
KiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisg
KiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJVc2VyTWVkaWFDbGllbnRNb2NrX2gKKyNkZWZpbmUg
V2ViVXNlck1lZGlhQ2xpZW50TW9ja19oCisKKyNpbmNsdWRlICJUZXN0Q29tbW9uLmgiCisjaW5j
bHVkZSAiV2ViVGFzay5oIgorI2luY2x1ZGUgIldlYlVzZXJNZWRpYUNsaWVudC5oIgorI2luY2x1
ZGUgPHB1YmxpYy9XZWJDb21tb24uaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViU3RyaW5nLmg+Cisj
aW5jbHVkZSA8cHVibGljL1dlYlVSTC5oPgorCituYW1lc3BhY2UgV2ViVGVzdFJ1bm5lciB7CisK
K2NsYXNzIFdlYlRlc3REZWxlZ2F0ZTsKKworY2xhc3MgV2ViVXNlck1lZGlhQ2xpZW50TW9jayA6
IHB1YmxpYyBXZWJLaXQ6OldlYlVzZXJNZWRpYUNsaWVudCB7CitwdWJsaWM6CisgICAgZXhwbGlj
aXQgV2ViVXNlck1lZGlhQ2xpZW50TW9jayhXZWJUZXN0RGVsZWdhdGUqKTsKKyAgICB+V2ViVXNl
ck1lZGlhQ2xpZW50TW9jaygpIHsgfQorCisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RVc2VyTWVk
aWEoY29uc3QgV2ViS2l0OjpXZWJVc2VyTWVkaWFSZXF1ZXN0JiwgY29uc3QgV2ViS2l0OjpXZWJW
ZWN0b3I8V2ViS2l0OjpXZWJNZWRpYVN0cmVhbVNvdXJjZT4mLCBjb25zdCBXZWJLaXQ6OldlYlZl
Y3RvcjxXZWJLaXQ6OldlYk1lZGlhU3RyZWFtU291cmNlPiYpIE9WRVJSSURFOworICAgIHZpcnR1
YWwgdm9pZCBjYW5jZWxVc2VyTWVkaWFSZXF1ZXN0KGNvbnN0IFdlYktpdDo6V2ViVXNlck1lZGlh
UmVxdWVzdCYpOworCisgICAgLy8gVGFzayByZWxhdGVkIG1ldGhvZHMKKyAgICBXZWJUYXNrTGlz
dCogdGFza0xpc3QoKSB7IHJldHVybiAmbV90YXNrTGlzdDsgfQorCitwcml2YXRlOgorICAgIFdl
YlRhc2tMaXN0IG1fdGFza0xpc3Q7CisgICAgV2ViVGVzdERlbGVnYXRlKiBtX2RlbGVnYXRlOwor
fTsKKworfQorCisjZW5kaWYgLy8gV2ViVXNlck1lZGlhQ2xpZW50TW9ja19oCmRpZmYgLS1naXQg
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwuY3BwIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmNwcAppbmRleCBkNjYxNWVlZjdlN2M0MWEz
ODFlMmNhYWNlMTJkODVkYmMzMTVhYmRiLi44NGNhYzA1NGVlOTM0MmI0OTdiYzllYjQ0MmNhMzEx
NzkxNzYzMDhiIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0
U2hlbGwuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5j
cHAKQEAgLTMzLDYgKzMzLDcgQEAKIAogI2luY2x1ZGUgIkRSVERldlRvb2xzQWdlbnQuaCIKICNp
bmNsdWRlICJEUlREZXZUb29sc0NsaWVudC5oIgorI2luY2x1ZGUgIk1vY2tXZWJLaXRQbGF0Zm9y
bVN1cHBvcnQuaCIKICNpbmNsdWRlICJNb2NrV2ViUHJlcmVuZGVyaW5nU3VwcG9ydC5oIgogI2lu
Y2x1ZGUgIldlYkFycmF5QnVmZmVyVmlldy5oIgogI2luY2x1ZGUgIldlYkNhY2hlLmgiCkBAIC0x
NTksOSArMTYwLDEwIEBAIFRlc3RTaGVsbDo6VGVzdFNoZWxsKCkKICAgICBtX3RpbWVvdXQgPSAz
MCAqIDEwMDA7CiB9CiAKLXZvaWQgVGVzdFNoZWxsOjppbml0aWFsaXplKCkKK3ZvaWQgVGVzdFNo
ZWxsOjppbml0aWFsaXplKE1vY2tXZWJLaXRQbGF0Zm9ybVN1cHBvcnQqIHBsYXRmb3JtU3VwcG9y
dCkKIHsKICAgICBtX3Rlc3RJbnRlcmZhY2VzID0gYWRvcHRQdHIobmV3IFdlYlRlc3RJbnRlcmZh
Y2VzKCkpOworICAgIHBsYXRmb3JtU3VwcG9ydC0+c2V0SW50ZXJmYWNlcyhtX3Rlc3RJbnRlcmZh
Y2VzLmdldCgpKTsKICAgICBtX2RldlRvb2xzVGVzdEludGVyZmFjZXMgPSBhZG9wdFB0cihuZXcg
V2ViVGVzdEludGVyZmFjZXMoKSk7CiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVOQUJM
RShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKICAgICBtX25vdGlmaWNhdGlvblByZXNlbnRlciA9IGFk
b3B0UHRyKG5ldyBOb3RpZmljYXRpb25QcmVzZW50ZXIodGhpcykpOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmggYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwuaAppbmRleCA3YTE3MWM3NDM3YzY2ZDg3NTk4MjgwZjYz
YmFmN2JlYzViMTU0ZDc0Li5kMTNhMzI5YjM3ODU5ZmJiMjUzOGIwNDlkYjZlODE0ZTQwNzRjMTVj
IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwuaAor
KysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwuaApAQCAtNTYsNiAr
NTYsNyBAQCBjbGFzcyBEUlREZXZUb29sc0FnZW50OwogY2xhc3MgRFJURGV2VG9vbHNDYWxsQXJn
czsKIGNsYXNzIERSVERldlRvb2xzQ2xpZW50OwogY2xhc3MgTW9ja1dlYlByZXJlbmRlcmluZ1N1
cHBvcnQ7CitjbGFzcyBNb2NrV2ViS2l0UGxhdGZvcm1TdXBwb3J0OwogCiBzdHJ1Y3QgVGVzdFBh
cmFtcyB7CiAgICAgYm9vbCBkdW1wVHJlZTsKQEAgLTc3LDcgKzc4LDcgQEAgcHVibGljOgogICAg
IFRlc3RTaGVsbCgpOwogICAgIH5UZXN0U2hlbGwoKTsKIAotICAgIHZvaWQgaW5pdGlhbGl6ZSgp
OworICAgIHZvaWQgaW5pdGlhbGl6ZShNb2NrV2ViS2l0UGxhdGZvcm1TdXBwb3J0Kik7CiAKICAg
ICAvLyBUaGUgbWFpbiBXZWJWaWV3LgogICAgIFdlYktpdDo6V2ViVmlldyogd2ViVmlldygpIGNv
bnN0IHsgcmV0dXJuIG1fd2ViVmlldzsgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vV2ViVXNlck1lZGlhQ2xpZW50TW9jay5jcHAgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9XZWJVc2VyTWVkaWFDbGllbnRNb2NrLmNwcApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggNjYwYWYxNDQ1YjlkNDQ4YTg1ZWM4MjJlMzg5NmIyZWNhZTMwMjM3Ny4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJVc2VyTWVkaWFDbGllbnRNb2NrLmNwcAorKysgL2Rldi9u
dWxsCkBAIC0xLDEyOCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
LSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2lmIEVOQUJMRShNRURJ
QV9TVFJFQU0pCi0KLSNpbmNsdWRlICJXZWJVc2VyTWVkaWFDbGllbnRNb2NrLmgiCi0KLSNpbmNs
dWRlICJNb2NrQ29uc3RyYWludHMuaCIKLSNpbmNsdWRlICJUYXNrLmgiCi0jaW5jbHVkZSAiV2Vi
RG9jdW1lbnQuaCIKLSNpbmNsdWRlICJXZWJNZWRpYVN0cmVhbVJlZ2lzdHJ5LmgiCi0jaW5jbHVk
ZSAiV2ViVXNlck1lZGlhUmVxdWVzdC5oIgotI2luY2x1ZGUgPHB1YmxpYy9XZWJNZWRpYUNvbnN0
cmFpbnRzLmg+Ci0jaW5jbHVkZSA8cHVibGljL1dlYk1lZGlhU3RyZWFtLmg+Ci0jaW5jbHVkZSA8
cHVibGljL1dlYk1lZGlhU3RyZWFtU291cmNlLmg+Ci0jaW5jbHVkZSA8cHVibGljL1dlYlZlY3Rv
ci5oPgotI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJL
aXQ7Ci11c2luZyBuYW1lc3BhY2UgV2ViVGVzdFJ1bm5lcjsKLQotY2xhc3MgVXNlck1lZGlhUmVx
dWVzdFRhc2sgOiBwdWJsaWMgV2ViTWV0aG9kVGFzazxXZWJVc2VyTWVkaWFDbGllbnRNb2NrPiB7
Ci1wdWJsaWM6Ci0gICAgVXNlck1lZGlhUmVxdWVzdFRhc2soV2ViVXNlck1lZGlhQ2xpZW50TW9j
ayogb2JqZWN0LCBjb25zdCBXZWJVc2VyTWVkaWFSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXZWJN
ZWRpYVN0cmVhbSByZXN1bHQpCi0gICAgICAgIDogV2ViTWV0aG9kVGFzazxXZWJVc2VyTWVkaWFD
bGllbnRNb2NrPihvYmplY3QpCi0gICAgICAgICwgbV9yZXF1ZXN0KHJlcXVlc3QpCi0gICAgICAg
ICwgbV9yZXN1bHQocmVzdWx0KQotICAgIHsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgcnVu
SWZWYWxpZCgpIE9WRVJSSURFCi0gICAgewotICAgICAgICBpZiAobV9yZXN1bHQuaXNOdWxsKCkp
Ci0gICAgICAgICAgICBtX3JlcXVlc3QucmVxdWVzdEZhaWxlZCgpOwotICAgICAgICBlbHNlCi0g
ICAgICAgICAgICBtX3JlcXVlc3QucmVxdWVzdFN1Y2NlZWRlZChtX3Jlc3VsdCk7Ci0gICAgfQot
Ci1wcml2YXRlOgotICAgIFdlYlVzZXJNZWRpYVJlcXVlc3QgbV9yZXF1ZXN0OwotICAgIFdlYk1l
ZGlhU3RyZWFtIG1fcmVzdWx0OwotfTsKLQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8KLQotY2xhc3MgTW9ja0V4dHJhRGF0YSA6IHB1YmxpYyBXZWJNZWRpYVN0cmVhbTo6RXh0cmFE
YXRhIHsKLXB1YmxpYzoKLSAgICBpbnQgZm9vOwotfTsKLQotUGFzc093blB0cjxXZWJVc2VyTWVk
aWFDbGllbnRNb2NrPiBXZWJVc2VyTWVkaWFDbGllbnRNb2NrOjpjcmVhdGUoKQotewotICAgIHJl
dHVybiBhZG9wdFB0cihuZXcgV2ViVXNlck1lZGlhQ2xpZW50TW9jaygpKTsKLX0KLQotdm9pZCBX
ZWJVc2VyTWVkaWFDbGllbnRNb2NrOjpyZXF1ZXN0VXNlck1lZGlhKGNvbnN0IFdlYlVzZXJNZWRp
YVJlcXVlc3QmIHN0cmVhbVJlcXVlc3QsIGNvbnN0IFdlYlZlY3RvcjxXZWJNZWRpYVN0cmVhbVNv
dXJjZT4mIGF1ZGlvU291cmNlc1ZlY3RvciwgY29uc3QgV2ViVmVjdG9yPFdlYk1lZGlhU3RyZWFt
U291cmNlPiYgdmlkZW9Tb3VyY2VzVmVjdG9yKQotewotICAgIEFTU0VSVCghc3RyZWFtUmVxdWVz
dC5pc051bGwoKSk7Ci0gICAgV2ViVXNlck1lZGlhUmVxdWVzdCByZXF1ZXN0ID0gc3RyZWFtUmVx
dWVzdDsKLQotICAgIGlmIChyZXF1ZXN0Lm93bmVyRG9jdW1lbnQoKS5pc051bGwoKSB8fCAhcmVx
dWVzdC5vd25lckRvY3VtZW50KCkuZnJhbWUoKSkgewotICAgICAgICBwb3N0VGFzayhuZXcgVXNl
ck1lZGlhUmVxdWVzdFRhc2sodGhpcywgcmVxdWVzdCwgV2ViTWVkaWFTdHJlYW0oKSkpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgV2ViTWVkaWFDb25zdHJhaW50cyBjb25zdHJhaW50
cyA9IHJlcXVlc3QuYXVkaW9Db25zdHJhaW50cygpOwotICAgIGlmICghY29uc3RyYWludHMuaXNO
dWxsKCkgJiYgIU1vY2tDb25zdHJhaW50czo6dmVyaWZ5Q29uc3RyYWludHMoY29uc3RyYWludHMp
KSB7Ci0gICAgICAgIHBvc3RUYXNrKG5ldyBVc2VyTWVkaWFSZXF1ZXN0VGFzayh0aGlzLCByZXF1
ZXN0LCBXZWJNZWRpYVN0cmVhbSgpKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY29u
c3RyYWludHMgPSByZXF1ZXN0LnZpZGVvQ29uc3RyYWludHMoKTsKLSAgICBpZiAoIWNvbnN0cmFp
bnRzLmlzTnVsbCgpICYmICFNb2NrQ29uc3RyYWludHM6OnZlcmlmeUNvbnN0cmFpbnRzKGNvbnN0
cmFpbnRzKSkgewotICAgICAgICBwb3N0VGFzayhuZXcgVXNlck1lZGlhUmVxdWVzdFRhc2sodGhp
cywgcmVxdWVzdCwgV2ViTWVkaWFTdHJlYW0oKSkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgY29uc3Qgc2l6ZV90IHplcm8gPSAwOwotICAgIGNvbnN0IHNpemVfdCBvbmUgPSAxOwot
ICAgIFdlYlZlY3RvcjxXZWJNZWRpYVN0cmVhbVNvdXJjZT4gYXVkaW9Tb3VyY2VzKHJlcXVlc3Qu
YXVkaW8oKSA/IG9uZSA6IHplcm8pOwotICAgIFdlYlZlY3RvcjxXZWJNZWRpYVN0cmVhbVNvdXJj
ZT4gdmlkZW9Tb3VyY2VzKHJlcXVlc3QudmlkZW8oKSA/IG9uZSA6IHplcm8pOwotCi0gICAgaWYg
KHJlcXVlc3QuYXVkaW8oKSkKLSAgICAgICAgYXVkaW9Tb3VyY2VzWzBdLmluaXRpYWxpemUoIk1v
Y2tBdWRpb0RldmljZSMxIiwgV2ViTWVkaWFTdHJlYW1Tb3VyY2U6OlR5cGVBdWRpbywgIk1vY2sg
YXVkaW8gZGV2aWNlIik7Ci0KLSAgICBpZiAocmVxdWVzdC52aWRlbygpKQotICAgICAgICB2aWRl
b1NvdXJjZXNbMF0uaW5pdGlhbGl6ZSgiTW9ja1ZpZGVvRGV2aWNlIzEiLCBXZWJNZWRpYVN0cmVh
bVNvdXJjZTo6VHlwZVZpZGVvLCAiTW9jayB2aWRlbyBkZXZpY2UiKTsKLQotICAgIFdlYk1lZGlh
U3RyZWFtIHN0cmVhbTsKLSAgICBzdHJlYW0uaW5pdGlhbGl6ZSgiZm9vYmFyIiwgYXVkaW9Tb3Vy
Y2VzLCB2aWRlb1NvdXJjZXMpOwotCi0gICAgc3RyZWFtLnNldEV4dHJhRGF0YShuZXcgTW9ja0V4
dHJhRGF0YSgpKTsKLQotICAgIHBvc3RUYXNrKG5ldyBVc2VyTWVkaWFSZXF1ZXN0VGFzayh0aGlz
LCByZXF1ZXN0LCBzdHJlYW0pKTsKLX0KLQotdm9pZCBXZWJVc2VyTWVkaWFDbGllbnRNb2NrOjpj
YW5jZWxVc2VyTWVkaWFSZXF1ZXN0KGNvbnN0IFdlYlVzZXJNZWRpYVJlcXVlc3QmKQotewotfQot
Ci0jZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1dlYlVzZXJNZWRpYUNsaWVudE1vY2suaCBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1dlYlVzZXJNZWRpYUNsaWVudE1vY2suaApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggZWY0Y2I1MWQxYWZjZmRmM2YwNTIyNWQ3ODBiNjI1YTA5YTI0NDU0
ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJVc2VyTWVkaWFDbGllbnRNb2NrLmgKKysrIC9kZXYv
bnVsbApAQCAtMSw2MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
LSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBXZWJVc2VyTWVkaWFDbGllbnRNb2NrX2gKLSNk
ZWZpbmUgV2ViVXNlck1lZGlhQ2xpZW50TW9ja19oCi0KLSNpZiBFTkFCTEUoTUVESUFfU1RSRUFN
KQotCi0jaW5jbHVkZSAiV2ViVGFzay5oIgotI2luY2x1ZGUgIldlYlVzZXJNZWRpYUNsaWVudC5o
IgotI2luY2x1ZGUgIndlYmtpdC9zdXBwb3J0L3Rlc3RfbWVkaWFfc3RyZWFtX2NsaWVudC5oIgot
I2luY2x1ZGUgPHB1YmxpYy9XZWJDb21tb24uaD4KLSNpbmNsdWRlIDxwdWJsaWMvV2ViU3RyaW5n
Lmg+Ci0jaW5jbHVkZSA8cHVibGljL1dlYlVSTC5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRy
Lmg+Ci0KLWNsYXNzIFdlYlVzZXJNZWRpYUNsaWVudE1vY2sgOiBwdWJsaWMgV2ViS2l0OjpXZWJV
c2VyTWVkaWFDbGllbnQgewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPFdlYlVzZXJN
ZWRpYUNsaWVudE1vY2s+IGNyZWF0ZSgpOwotICAgIH5XZWJVc2VyTWVkaWFDbGllbnRNb2NrKCkg
eyB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFVzZXJNZWRpYShjb25zdCBXZWJLaXQ6Oldl
YlVzZXJNZWRpYVJlcXVlc3QmLCBjb25zdCBXZWJLaXQ6OldlYlZlY3RvcjxXZWJLaXQ6OldlYk1l
ZGlhU3RyZWFtU291cmNlPiYsIGNvbnN0IFdlYktpdDo6V2ViVmVjdG9yPFdlYktpdDo6V2ViTWVk
aWFTdHJlYW1Tb3VyY2U+JikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGNhbmNlbFVzZXJN
ZWRpYVJlcXVlc3QoY29uc3QgV2ViS2l0OjpXZWJVc2VyTWVkaWFSZXF1ZXN0Jik7Ci0KLSAgICAv
LyBUYXNrIHJlbGF0ZWQgbWV0aG9kcwotICAgIFdlYlRlc3RSdW5uZXI6OldlYlRhc2tMaXN0KiB0
YXNrTGlzdCgpIHsgcmV0dXJuICZtX3Rhc2tMaXN0OyB9Ci0KLXByaXZhdGU6Ci0gICAgV2ViVXNl
ck1lZGlhQ2xpZW50TW9jaygpIHsgfQotCi0gICAgV2ViVGVzdFJ1bm5lcjo6V2ViVGFza0xpc3Qg
bV90YXNrTGlzdDsKLX07Ci0KLSNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQotCi0jZW5k
aWYgLy8gV2ViVXNlck1lZGlhQ2xpZW50TW9ja19oCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAKaW5kZXggOTdlMTY4Y2E2MWI1OWIzYWMzNzExNTY1MDJj
ZDI1ZjkwOGNiYWZlZC4uYTg2YjUzNDFlMmRmYzVlM2ViODg4ZWFmOGY4NzRhZGYxNTU3MDViNSAx
MDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3Bw
CisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcApAQCAt
NTgsNyArNTgsNiBAQAogI2luY2x1ZGUgIldlYlNjcmVlbkluZm8uaCIKICNpbmNsdWRlICJXZWJT
ZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJXZWJTdG9yYWdlTmFtZXNwYWNlLmgi
Ci0jaW5jbHVkZSAiV2ViVXNlck1lZGlhQ2xpZW50TW9jay5oIgogI2luY2x1ZGUgIldlYlZpZXcu
aCIKICNpbmNsdWRlICJXZWJXaW5kb3dGZWF0dXJlcy5oIgogI2luY2x1ZGUgInNraWEvZXh0L3Bs
YXRmb3JtX2NhbnZhcy5oIgpAQCAtMzIwLDIwICszMTksNiBAQCBXZWJEZXZpY2VPcmllbnRhdGlv
bkNsaWVudCogV2ViVmlld0hvc3Q6OmRldmljZU9yaWVudGF0aW9uQ2xpZW50KCkKICAgICByZXR1
cm4gZGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrKCk7CiB9CiAKLSNpZiBFTkFCTEUoTUVESUFf
U1RSRUFNKQotV2ViVXNlck1lZGlhQ2xpZW50KiBXZWJWaWV3SG9zdDo6dXNlck1lZGlhQ2xpZW50
KCkKLXsKLSAgICByZXR1cm4gdXNlck1lZGlhQ2xpZW50TW9jaygpOwotfQotCi1XZWJVc2VyTWVk
aWFDbGllbnRNb2NrKiBXZWJWaWV3SG9zdDo6dXNlck1lZGlhQ2xpZW50TW9jaygpCi17Ci0gICAg
aWYgKCFtX3VzZXJNZWRpYUNsaWVudE1vY2suZ2V0KCkpCi0gICAgICAgIG1fdXNlck1lZGlhQ2xp
ZW50TW9jayA9IFdlYlVzZXJNZWRpYUNsaWVudE1vY2s6OmNyZWF0ZSgpOwotICAgIHJldHVybiBt
X3VzZXJNZWRpYUNsaWVudE1vY2suZ2V0KCk7Ci19Ci0jZW5kaWYKLQogLy8gV2ViV2lkZ2V0Q2xp
ZW50IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCiAKIHZvaWQgV2ViVmlld0hvc3Q6OmRpZEF1dG9SZXNpemUoY29uc3QgV2ViU2l6ZSYg
bmV3U2l6ZSkKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZp
ZXdIb3N0LmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oCmlu
ZGV4IDVhNzg3MTY0ZjYxZDZkNWY1OTJjMjFlOWNlNjQ2Y2VhY2NhMjUzNjMuLmRlZDI2MjkzNjE1
YjQxZGIzZjJlMTllZGJkODBhYWVmMzFhZDBiYzcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vV2ViVmlld0hvc3QuaApAQCAtNDksNyArNDksNiBAQCBjbGFzcyBNb2NrV2ViU3Bl
ZWNoSW5wdXRDb250cm9sbGVyOwogY2xhc3MgTW9ja1dlYlNwZWVjaFJlY29nbml6ZXI7CiBjbGFz
cyBTa0NhbnZhczsKIGNsYXNzIFRlc3RTaGVsbDsKLWNsYXNzIFdlYlVzZXJNZWRpYUNsaWVudE1v
Y2s7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViRnJhbWU7CkBAIC0yMjEsOSArMjIw
LDYgQEAgY2xhc3MgV2ViVmlld0hvc3QgOiBwdWJsaWMgV2ViS2l0OjpXZWJWaWV3Q2xpZW50LCBw
dWJsaWMgV2ViS2l0OjpXZWJGcmFtZUNsaWVudCwKICAgICB2aXJ0dWFsIFdlYktpdDo6V2ViU3Bl
ZWNoUmVjb2duaXplciogc3BlZWNoUmVjb2duaXplcigpIE9WRVJSSURFOwogI2VuZGlmCiAgICAg
dmlydHVhbCBXZWJLaXQ6OldlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50KiBkZXZpY2VPcmllbnRh
dGlvbkNsaWVudCgpIE9WRVJSSURFOwotI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0gICAgdmly
dHVhbCBXZWJLaXQ6OldlYlVzZXJNZWRpYUNsaWVudCogdXNlck1lZGlhQ2xpZW50KCk7Ci0jZW5k
aWYKICAgICB2aXJ0dWFsIHZvaWQgcHJpbnRQYWdlKFdlYktpdDo6V2ViRnJhbWUqKTsKIAogICAg
IC8vIFdlYktpdDo6V2ViV2lkZ2V0Q2xpZW50CkBAIC0zMTgsNyArMzE0LDYgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGRpc2NhcmRCYWNraW5nU3RvcmUoKTsKIAogI2lmIEVOQUJMRShNRURJQV9TVFJF
QU0pCi0gICAgV2ViVXNlck1lZGlhQ2xpZW50TW9jayogdXNlck1lZGlhQ2xpZW50TW9jaygpOwog
ICAgIHdlYmtpdF9zdXBwb3J0OjpUZXN0TWVkaWFTdHJlYW1DbGllbnQqIHRlc3RNZWRpYVN0cmVh
bUNsaWVudCgpOwogI2VuZGlmCiAKQEAgLTM3MCw3ICszNjUsNiBAQCBwcml2YXRlOgogI2VuZGlm
CiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotICAgIE93blB0cjxXZWJVc2VyTWVkaWFDbGll
bnRNb2NrPiBtX3VzZXJNZWRpYUNsaWVudE1vY2s7CiAgICAgT3duUHRyPHdlYmtpdF9zdXBwb3J0
OjpUZXN0TWVkaWFTdHJlYW1DbGllbnQ+IG1fdGVzdE1lZGlhU3RyZWFtQ2xpZW50OwogI2VuZGlm
CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187787</attachid>
            <date>2013-02-12 00:11:20 -0800</date>
            <delta_ts>2013-02-12 00:49:20 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-109041-20130212090749.patch</filename>
            <type>text/plain</type>
            <size>134437</size>
            <attacher>jochen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyNTg1CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZGY1MzkzYmE1ZjhjNGMyZWViYzZkMmQ0NWFkYWM1NWQ5
NTc0NDVjZi4uYzBjYmE1ZTRhMjMyNTg0YmVmZjdhNTcxZmYxNmIzZWNiMWJkN2MwNiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDE1
NCBAQAogMjAxMy0wMi0xMSAgSm9jaGVuIEVpc2luZ2VyICA8am9jaGVuQGNocm9taXVtLm9yZz4K
IAorICAgICAgICBbY2hyb21pdW1dIG1vdmUgd2VicnRjIG1vY2tzIHRvIHRlc3RydW5uZXIgbGli
cmFyeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5
MDQxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KKworICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cGk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vRHVtcFJlbmRlclRyZWUuY3BwOgorICAgICAgICAoV2ViS2l0U3VwcG9ydFRlc3RF
bnZpcm9ubWVudCk6CisgICAgICAgIChXZWJLaXRTdXBwb3J0VGVzdEVudmlyb25tZW50Ojptb2Nr
UGxhdGZvcm0pOgorICAgICAgICAobWFpbik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vTW9ja1dlYktpdFBsYXRmb3JtU3VwcG9ydC5jcHA6CisgICAgICAgIChNb2NrV2ViS2l0
UGxhdGZvcm1TdXBwb3J0OjpzZXRJbnRlcmZhY2VzKToKKyAgICAgICAgKE1vY2tXZWJLaXRQbGF0
Zm9ybVN1cHBvcnQ6OmNyZWF0ZU1lZGlhU3RyZWFtQ2VudGVyKToKKyAgICAgICAgKE1vY2tXZWJL
aXRQbGF0Zm9ybVN1cHBvcnQ6OmNyZWF0ZVJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcik6CisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYktpdFBsYXRmb3JtU3VwcG9ydC5o
OgorICAgICAgICAoV2ViVGVzdFJ1bm5lcik6CisgICAgICAgIChNb2NrV2ViS2l0UGxhdGZvcm1T
dXBwb3J0KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1
YmxpYy9XZWJUZXN0SW50ZXJmYWNlcy5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0UHJveHkuaDoK
KyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJUZXN0UnVubmVyKToKKyAgICAgICAgKFdl
YlRlc3RSdW5uZXI6OldlYlRlc3RQcm94eTo6c2hvd0NvbnRleHRNZW51KToKKyAgICAgICAgKFdl
YlRlc3RSdW5uZXI6OldlYlRlc3RQcm94eTo6dXNlck1lZGlhQ2xpZW50KToKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9Nb2NrQ29uc3RyYWludHMuY3Bw
OiBSZW5hbWVkIGZyb20gVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja0NvbnN0cmFp
bnRzLmNwcC4KKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6Ok1vY2tDb25zdHJhaW50czo6dmVyaWZ5
Q29uc3RyYWludHMpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcik6CisgICAgICAgICogRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvTW9ja0NvbnN0cmFpbnRzLmg6IFJlbmFt
ZWQgZnJvbSBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrQ29uc3RyYWludHMuaC4K
KyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJUZXN0UnVubmVyKToKKyAgICAgICAgKE1v
Y2tDb25zdHJhaW50cyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1
bm5lci9zcmMvTW9ja1dlYk1lZGlhU3RyZWFtQ2VudGVyLmNwcDogUmVuYW1lZCBmcm9tIFRvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJNZWRpYVN0cmVhbUNlbnRlci5jcHAuCisg
ICAgICAgIChXZWJUZXN0UnVubmVyKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6Ok1vY2tXZWJN
ZWRpYVN0cmVhbUNlbnRlcjo6TW9ja1dlYk1lZGlhU3RyZWFtQ2VudGVyKToKKyAgICAgICAgKFdl
YlRlc3RSdW5uZXI6Ok1vY2tXZWJNZWRpYVN0cmVhbUNlbnRlcjo6cXVlcnlNZWRpYVN0cmVhbVNv
dXJjZXMpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6TW9ja1dlYk1lZGlhU3RyZWFtQ2VudGVy
OjpkaWRFbmFibGVNZWRpYVN0cmVhbVRyYWNrKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6Ok1v
Y2tXZWJNZWRpYVN0cmVhbUNlbnRlcjo6ZGlkRGlzYWJsZU1lZGlhU3RyZWFtVHJhY2spOgorICAg
ICAgICAoV2ViVGVzdFJ1bm5lcjo6TW9ja1dlYk1lZGlhU3RyZWFtQ2VudGVyOjpkaWRBZGRNZWRp
YVN0cmVhbVRyYWNrKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6Ok1vY2tXZWJNZWRpYVN0cmVh
bUNlbnRlcjo6ZGlkUmVtb3ZlTWVkaWFTdHJlYW1UcmFjayk6CisgICAgICAgIChXZWJUZXN0UnVu
bmVyOjpNb2NrV2ViTWVkaWFTdHJlYW1DZW50ZXI6OmRpZFN0b3BMb2NhbE1lZGlhU3RyZWFtKToK
KyAgICAgICAgKE1vY2tXZWJBdWRpb0Rlc3RpbmF0aW9uQ29uc3VtZXIpOgorICAgICAgICAoV2Vi
VGVzdFJ1bm5lcjo6TW9ja1dlYkF1ZGlvRGVzdGluYXRpb25Db25zdW1lcjo6fk1vY2tXZWJBdWRp
b0Rlc3RpbmF0aW9uQ29uc3VtZXIpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6TW9ja1dlYk1l
ZGlhU3RyZWFtQ2VudGVyOjpkaWRDcmVhdGVNZWRpYVN0cmVhbSk6CisgICAgICAgICogRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvTW9ja1dlYk1lZGlhU3RyZWFtQ2VudGVy
Lmg6IFJlbmFtZWQgZnJvbSBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViTWVk
aWFTdHJlYW1DZW50ZXIuaC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJUZXN0UnVu
bmVyKToKKyAgICAgICAgKE1vY2tXZWJNZWRpYVN0cmVhbUNlbnRlcik6CisgICAgICAgIChXZWJU
ZXN0UnVubmVyOjpNb2NrV2ViTWVkaWFTdHJlYW1DZW50ZXI6Ok1vY2tXZWJNZWRpYVN0cmVhbUNl
bnRlcik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMv
TW9ja1dlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyLmNwcDogUmVuYW1lZCBmcm9tIFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJSVENEVE1GU2VuZGVySGFuZGxlci5jcHAuCisgICAg
ICAgIChXZWJUZXN0UnVubmVyKToKKyAgICAgICAgKERUTUZTZW5kZXJUb25lVGFzayk6CisgICAg
ICAgIChXZWJUZXN0UnVubmVyOjpEVE1GU2VuZGVyVG9uZVRhc2s6OkRUTUZTZW5kZXJUb25lVGFz
ayk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpNb2NrV2ViUlRDRFRNRlNlbmRlckhhbmRsZXI6
Ok1vY2tXZWJSVENEVE1GU2VuZGVySGFuZGxlcik6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpN
b2NrV2ViUlRDRFRNRlNlbmRlckhhbmRsZXI6OnNldENsaWVudCk6CisgICAgICAgIChXZWJUZXN0
UnVubmVyOjpNb2NrV2ViUlRDRFRNRlNlbmRlckhhbmRsZXI6OmN1cnJlbnRUb25lQnVmZmVyKToK
KyAgICAgICAgKFdlYlRlc3RSdW5uZXI6Ok1vY2tXZWJSVENEVE1GU2VuZGVySGFuZGxlcjo6Y2Fu
SW5zZXJ0RFRNRik6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpNb2NrV2ViUlRDRFRNRlNlbmRl
ckhhbmRsZXI6Omluc2VydERUTUYpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1Rlc3RSdW5uZXIvc3JjL01vY2tXZWJSVENEVE1GU2VuZGVySGFuZGxlci5oOiBSZW5hbWVkIGZy
b20gVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlJUQ0RUTUZTZW5kZXJIYW5k
bGVyLmguCisgICAgICAgIChXZWJUZXN0UnVubmVyKToKKyAgICAgICAgKE1vY2tXZWJSVENEVE1G
U2VuZGVySGFuZGxlcik6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpNb2NrV2ViUlRDRFRNRlNl
bmRlckhhbmRsZXI6OnRhc2tMaXN0KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6Ok1vY2tXZWJS
VENEVE1GU2VuZGVySGFuZGxlcjo6Y2xlYXJUb25lQnVmZmVyKToKKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9Nb2NrV2ViUlRDRGF0YUNoYW5uZWxIYW5k
bGVyLmNwcDogUmVuYW1lZCBmcm9tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tX
ZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwLgorICAgICAgICAoV2ViVGVzdFJ1bm5lcik6Cisg
ICAgICAgIChEYXRhQ2hhbm5lbFJlYWR5U3RhdGVUYXNrKToKKyAgICAgICAgKFdlYlRlc3RSdW5u
ZXI6OkRhdGFDaGFubmVsUmVhZHlTdGF0ZVRhc2s6OkRhdGFDaGFubmVsUmVhZHlTdGF0ZVRhc2sp
OgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6TW9ja1dlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6
TW9ja1dlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcik6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpN
b2NrV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpzZXRDbGllbnQpOgorICAgICAgICAoV2ViVGVz
dFJ1bm5lcjo6TW9ja1dlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6YnVmZmVyZWRBbW91bnQpOgor
ICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6TW9ja1dlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6c2Vu
ZFN0cmluZ0RhdGEpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6TW9ja1dlYlJUQ0RhdGFDaGFu
bmVsSGFuZGxlcjo6c2VuZFJhd0RhdGEpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6TW9ja1dl
YlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6Y2xvc2UpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL01vY2tXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuaDog
UmVuYW1lZCBmcm9tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJSVENEYXRh
Q2hhbm5lbEhhbmRsZXIuaC4KKyAgICAgICAgKFdlYlRlc3RSdW5uZXIpOgorICAgICAgICAoTW9j
a1dlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcik6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpNb2Nr
V2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjp0YXNrTGlzdCk6CisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFu
ZGxlci5jcHA6IFJlbmFtZWQgZnJvbSBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2Nr
V2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmNwcC4KKyAgICAgICAgKFdlYlRlc3RSdW5uZXIp
OgorICAgICAgICAoUlRDU2Vzc2lvbkRlc2NyaXB0aW9uUmVxdWVzdFN1Y2NlZGVkVGFzayk6Cisg
ICAgICAgIChXZWJUZXN0UnVubmVyOjpSVENTZXNzaW9uRGVzY3JpcHRpb25SZXF1ZXN0U3VjY2Vk
ZWRUYXNrOjpSVENTZXNzaW9uRGVzY3JpcHRpb25SZXF1ZXN0U3VjY2VkZWRUYXNrKToKKyAgICAg
ICAgKFJUQ1Nlc3Npb25EZXNjcmlwdGlvblJlcXVlc3RGYWlsZWRUYXNrKToKKyAgICAgICAgKFdl
YlRlc3RSdW5uZXI6OlJUQ1Nlc3Npb25EZXNjcmlwdGlvblJlcXVlc3RGYWlsZWRUYXNrOjpSVENT
ZXNzaW9uRGVzY3JpcHRpb25SZXF1ZXN0RmFpbGVkVGFzayk6CisgICAgICAgIChSVENTdGF0c1Jl
cXVlc3RTdWNjZWVkZWRUYXNrKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlJUQ1N0YXRzUmVx
dWVzdFN1Y2NlZWRlZFRhc2s6OlJUQ1N0YXRzUmVxdWVzdFN1Y2NlZWRlZFRhc2spOgorICAgICAg
ICAoUlRDVm9pZFJlcXVlc3RUYXNrKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlJUQ1ZvaWRS
ZXF1ZXN0VGFzazo6UlRDVm9pZFJlcXVlc3RUYXNrKToKKyAgICAgICAgKFJUQ1BlZXJDb25uZWN0
aW9uU3RhdGVUYXNrKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlJUQ1BlZXJDb25uZWN0aW9u
U3RhdGVUYXNrOjpSVENQZWVyQ29ubmVjdGlvblN0YXRlVGFzayk6CisgICAgICAgIChSZW1vdGVE
YXRhQ2hhbm5lbFRhc2spOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6UmVtb3RlRGF0YUNoYW5u
ZWxUYXNrOjpSZW1vdGVEYXRhQ2hhbm5lbFRhc2spOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6
TW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcjo6TW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9u
SGFuZGxlcik6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpNb2NrV2ViUlRDUGVlckNvbm5lY3Rp
b25IYW5kbGVyOjppbml0aWFsaXplKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6Ok1vY2tXZWJS
VENQZWVyQ29ubmVjdGlvbkhhbmRsZXI6OmNyZWF0ZU9mZmVyKToKKyAgICAgICAgKFdlYlRlc3RS
dW5uZXI6Ok1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI6OmNyZWF0ZUFuc3dlcik6Cisg
ICAgICAgIChXZWJUZXN0UnVubmVyOjpNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyOjpz
ZXRMb2NhbERlc2NyaXB0aW9uKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6Ok1vY2tXZWJSVENQ
ZWVyQ29ubmVjdGlvbkhhbmRsZXI6OnNldFJlbW90ZURlc2NyaXB0aW9uKToKKyAgICAgICAgKFdl
YlRlc3RSdW5uZXI6Ok1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI6OmxvY2FsRGVzY3Jp
cHRpb24pOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6TW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9u
SGFuZGxlcjo6cmVtb3RlRGVzY3JpcHRpb24pOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6TW9j
a1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcjo6dXBkYXRlSUNFKToKKyAgICAgICAgKFdlYlRl
c3RSdW5uZXI6Ok1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI6OmFkZElDRUNhbmRpZGF0
ZSk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5k
bGVyOjphZGRTdHJlYW0pOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6TW9ja1dlYlJUQ1BlZXJD
b25uZWN0aW9uSGFuZGxlcjo6cmVtb3ZlU3RyZWFtKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6
Ok1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI6OmdldFN0YXRzKToKKyAgICAgICAgKFdl
YlRlc3RSdW5uZXI6Ok1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI6OmNyZWF0ZURhdGFD
aGFubmVsKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6Ok1vY2tXZWJSVENQZWVyQ29ubmVjdGlv
bkhhbmRsZXI6OmNyZWF0ZURUTUZTZW5kZXIpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6TW9j
a1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcjo6c3RvcCk6CisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFu
ZGxlci5oOiBSZW5hbWVkIGZyb20gVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dl
YlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5oLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAg
KFdlYlRlc3RSdW5uZXIpOgorICAgICAgICAoTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxl
cik6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5k
bGVyOjp0YXNrTGlzdCk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpNb2NrV2ViUlRDUGVlckNv
bm5lY3Rpb25IYW5kbGVyOjpNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyKToKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0SW50ZXJmYWNl
cy5jcHA6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpUZXN0SW50ZXJmYWNlczo6VGVzdEludGVy
ZmFjZXMpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdEludGVyZmFjZXM6OnNldERlbGVn
YXRlKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RJbnRlcmZhY2VzOjpkZWxlZ2F0ZSk6
CisgICAgICAgIChXZWJUZXN0UnVubmVyKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0SW50ZXJmYWNlcy5oOgorICAgICAgICAoVGVzdEludGVy
ZmFjZXMpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3Jj
L1dlYlRlc3RJbnRlcmZhY2VzLmNwcDoKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRlc3RJ
bnRlcmZhY2VzOjpjcmVhdGVNZWRpYVN0cmVhbUNlbnRlcik6CisgICAgICAgIChXZWJUZXN0UnVu
bmVyKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRlc3RJbnRlcmZhY2VzOjpjcmVhdGVX
ZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RQcm94eS5jcHA6CisgICAgICAgIChXZWJUZXN0
UnVubmVyOjpXZWJUZXN0UHJveHlCYXNlOjp1c2VyTWVkaWFDbGllbnQpOgorICAgICAgICAoV2Vi
VGVzdFJ1bm5lcik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5l
ci9zcmMvV2ViVXNlck1lZGlhQ2xpZW50TW9jay5jcHA6IFJlbmFtZWQgZnJvbSBUb29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJVc2VyTWVkaWFDbGllbnRNb2NrLmNwcC4KKyAgICAgICAg
KFdlYlRlc3RSdW5uZXIpOgorICAgICAgICAoVXNlck1lZGlhUmVxdWVzdFRhc2spOgorICAgICAg
ICAoV2ViVGVzdFJ1bm5lcjo6VXNlck1lZGlhUmVxdWVzdFRhc2s6OlVzZXJNZWRpYVJlcXVlc3RU
YXNrKToKKyAgICAgICAgKE1vY2tFeHRyYURhdGEpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6
V2ViVXNlck1lZGlhQ2xpZW50TW9jazo6V2ViVXNlck1lZGlhQ2xpZW50TW9jayk6CisgICAgICAg
IChXZWJUZXN0UnVubmVyOjpXZWJVc2VyTWVkaWFDbGllbnRNb2NrOjpyZXF1ZXN0VXNlck1lZGlh
KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlVzZXJNZWRpYUNsaWVudE1vY2s6OmNhbmNl
bFVzZXJNZWRpYVJlcXVlc3QpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rl
c3RSdW5uZXIvc3JjL1dlYlVzZXJNZWRpYUNsaWVudE1vY2suaDogUmVuYW1lZCBmcm9tIFRvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlVzZXJNZWRpYUNsaWVudE1vY2suaC4KKyAgICAg
ICAgKFdlYlRlc3RSdW5uZXIpOgorICAgICAgICAoV2ViVXNlck1lZGlhQ2xpZW50TW9jayk6Cisg
ICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJVc2VyTWVkaWFDbGllbnRNb2NrOjp+V2ViVXNlck1l
ZGlhQ2xpZW50TW9jayk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJVc2VyTWVkaWFDbGll
bnRNb2NrOjp0YXNrTGlzdCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVz
dFNoZWxsLmNwcDoKKyAgICAgICAgKFRlc3RTaGVsbDo6aW5pdGlhbGl6ZSk6CisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmg6CisgICAgICAgIChUZXN0U2hlbGwp
OgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcDoKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oOgorICAgICAgICAo
V2ViVmlld0hvc3QpOgorCisyMDEzLTAyLTExICBKb2NoZW4gRWlzaW5nZXIgIDxqb2NoZW5AY2hy
b21pdW0ub3JnPgorCiAgICAgICAgIFtjaHJvbWl1bV0gbW92ZSBwcmludFBhZ2UoKSBpbXBsZW1l
bnRhdGlvbiB0byB0ZXN0UnVubmVyIGxpYnJhcnkKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEwOTQzNgogCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJl
bmRlclRyZWUuZ3lwaQppbmRleCBhYWRiY2M5MzMxMmUwMjg0MmQ2NzI0MGU5NmYzNzE4ZDEyZjdm
MDdjLi4zMDQ2MDVjZWI2OGQ4ZGM5NTY3ODI3OWE5YzA4YWNhNGMyMmE2YjBhIDEwMDY0NAotLS0g
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpCisrKyBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cGkKQEAgLTgsMjAgKzgsMTAgQEAKICAgICAg
ICAgICAgICdjaHJvbWl1bS9EUlREZXZUb29sc0NsaWVudC5jcHAnLAogICAgICAgICAgICAgJ2No
cm9taXVtL0RSVERldlRvb2xzQ2xpZW50LmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL0R1bXBS
ZW5kZXJUcmVlLmNwcCcsCi0gICAgICAgICAgICAnY2hyb21pdW0vTW9ja0NvbnN0cmFpbnRzLmNw
cCcsCi0gICAgICAgICAgICAnY2hyb21pdW0vTW9ja0NvbnN0cmFpbnRzLmgnLAogICAgICAgICAg
ICAgJ2Nocm9taXVtL01vY2tXZWJLaXRQbGF0Zm9ybVN1cHBvcnQuY3BwJywKICAgICAgICAgICAg
ICdjaHJvbWl1bS9Nb2NrV2ViS2l0UGxhdGZvcm1TdXBwb3J0LmgnLAotICAgICAgICAgICAgJ2No
cm9taXVtL01vY2tXZWJNZWRpYVN0cmVhbUNlbnRlci5jcHAnLAotICAgICAgICAgICAgJ2Nocm9t
aXVtL01vY2tXZWJNZWRpYVN0cmVhbUNlbnRlci5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9N
b2NrV2ViUHJlcmVuZGVyaW5nU3VwcG9ydC5jcHAnLAogICAgICAgICAgICAgJ2Nocm9taXVtL01v
Y2tXZWJQcmVyZW5kZXJpbmdTdXBwb3J0LmgnLAotICAgICAgICAgICAgJ2Nocm9taXVtL01vY2tX
ZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuY3BwJywKLSAgICAgICAgICAgICdjaHJvbWl1bS9N
b2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmgnLAotICAgICAgICAgICAgJ2Nocm9taXVt
L01vY2tXZWJSVENEVE1GU2VuZGVySGFuZGxlci5jcHAnLAotICAgICAgICAgICAgJ2Nocm9taXVt
L01vY2tXZWJSVENEVE1GU2VuZGVySGFuZGxlci5oJywKLSAgICAgICAgICAgICdjaHJvbWl1bS9N
b2NrV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcCcsCi0gICAgICAgICAgICAnY2hyb21pdW0v
TW9ja1dlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9N
b2NrV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyLmNwcCcsCiAgICAgICAgICAgICAnY2hyb21pdW0v
TW9ja1dlYlNwZWVjaElucHV0Q29udHJvbGxlci5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9N
b2NrV2ViU3BlZWNoUmVjb2duaXplci5jcHAnLApAQCAtNDgsOCArMzgsNiBAQAogICAgICAgICAg
ICAgJ2Nocm9taXVtL1dlYlRoZW1lRW5naW5lRFJUTWFjLmgnLAogICAgICAgICAgICAgJ2Nocm9t
aXVtL1dlYlRoZW1lRW5naW5lRFJUV2luLmNwcCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vV2Vi
VGhlbWVFbmdpbmVEUlRXaW4uaCcsCi0gICAgICAgICAgICAnY2hyb21pdW0vV2ViVXNlck1lZGlh
Q2xpZW50TW9jay5jcHAnLAotICAgICAgICAgICAgJ2Nocm9taXVtL1dlYlVzZXJNZWRpYUNsaWVu
dE1vY2suaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwJywKICAgICAg
ICAgICAgICdjaHJvbWl1bS9XZWJWaWV3SG9zdC5oJywKICAgICAgICAgXSwKQEAgLTc1LDI3ICs2
MywzOSBAQAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0dhbWVwYWRDb250
cm9sbGVyLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0tleUNvZGVN
YXBwaW5nLmNwcCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvS2V5Q29k
ZU1hcHBpbmcuaCcsCisgICAgICAgICAgICAnY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvTW9ja0Nv
bnN0cmFpbnRzLmNwcCcsCisgICAgICAgICAgICAnY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvTW9j
a0NvbnN0cmFpbnRzLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL01v
Y2tHcmFtbWFyQ2hlY2suY3BwJywKICAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0UnVubmVyL3Ny
Yy9Nb2NrR3JhbW1hckNoZWNrLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIv
c3JjL01vY2tTcGVsbENoZWNrLmNwcCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vVGVzdFJ1bm5l
ci9zcmMvTW9ja1NwZWxsQ2hlY2suaCcsCisgICAgICAgICAgICAnY2hyb21pdW0vVGVzdFJ1bm5l
ci9zcmMvTW9ja1dlYk1lZGlhU3RyZWFtQ2VudGVyLmNwcCcsCisgICAgICAgICAgICAnY2hyb21p
dW0vVGVzdFJ1bm5lci9zcmMvTW9ja1dlYk1lZGlhU3RyZWFtQ2VudGVyLmgnLAorICAgICAgICAg
ICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL01vY2tXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIu
Y3BwJywKKyAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9Nb2NrV2ViUlRDRGF0
YUNoYW5uZWxIYW5kbGVyLmgnLAorICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIvc3Jj
L01vY2tXZWJSVENEVE1GU2VuZGVySGFuZGxlci5jcHAnLAorICAgICAgICAgICAgJ2Nocm9taXVt
L1Rlc3RSdW5uZXIvc3JjL01vY2tXZWJSVENEVE1GU2VuZGVySGFuZGxlci5oJywKKyAgICAgICAg
ICAgICdjaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9Nb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5k
bGVyLmNwcCcsCisgICAgICAgICAgICAnY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvTW9ja1dlYlJU
Q1BlZXJDb25uZWN0aW9uSGFuZGxlci5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0UnVu
bmVyL3NyYy9TcGVsbENoZWNrQ2xpZW50LmNwcCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vVGVz
dFJ1bm5lci9zcmMvU3BlbGxDaGVja0NsaWVudC5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9U
ZXN0UnVubmVyL3NyYy9UZXN0Q29tbW9uLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RS
dW5uZXIvc3JjL1Rlc3RJbnRlcmZhY2VzLmNwcCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vVGVz
dFJ1bm5lci9zcmMvVGVzdEludGVyZmFjZXMuaCcsCi0gICAgICAgICAgICAnY2hyb21pdW0vVGVz
dFJ1bm5lci9zcmMvVGV4dElucHV0Q29udHJvbGxlci5jcHAnLAotICAgICAgICAgICAgJ2Nocm9t
aXVtL1Rlc3RSdW5uZXIvc3JjL1RleHRJbnB1dENvbnRyb2xsZXIuaCcsCisgICAgICAgICAgICAn
Y2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFBsdWdpbi5jcHAnLAorICAgICAgICAgICAgJ2No
cm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RQbHVnaW4uaCcsCiAgICAgICAgICAgICAnY2hyb21p
dW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5jcHAnLAogICAgICAgICAgICAgJ2Nocm9taXVt
L1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuaCcsCisgICAgICAgICAgICAnY2hyb21pdW0vVGVz
dFJ1bm5lci9zcmMvVGV4dElucHV0Q29udHJvbGxlci5jcHAnLAorICAgICAgICAgICAgJ2Nocm9t
aXVtL1Rlc3RSdW5uZXIvc3JjL1RleHRJbnB1dENvbnRyb2xsZXIuaCcsCiAgICAgICAgICAgICAn
Y2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViUGVybWlzc2lvbnMuY3BwJywKICAgICAgICAgICAg
ICdjaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJQZXJtaXNzaW9ucy5oJywKICAgICAgICAgICAg
ICdjaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJQcmVmZXJlbmNlcy5jcHAnLAogICAgICAgICAg
ICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRhc2suY3BwJywKICAgICAgICAgICAgICdj
aHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUZXN0SW50ZXJmYWNlcy5jcHAnLAotICAgICAgICAg
ICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RQbHVnaW4uY3BwJywKLSAgICAgICAgICAg
ICdjaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UGx1Z2luLmgnLAogICAgICAgICAgICAgJ2No
cm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RQcm94eS5jcHAnLAorICAgICAgICAgICAgJ2No
cm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlVzZXJNZWRpYUNsaWVudE1vY2suY3BwJywKKyAgICAg
ICAgICAgICdjaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJVc2VyTWVkaWFDbGllbnRNb2NrLmgn
LAogICAgICAgICBdLAogICAgICAgICAndGVzdF9wbHVnaW5fZmlsZXMnOiBbCiAgICAgICAgICAg
ICAnVGVzdE5ldHNjYXBlUGx1Z0luL1BsdWdpbk9iamVjdC5jcHAnLApkaWZmIC0tZ2l0IGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRHVtcFJlbmRlclRyZWUuY3BwIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vRHVtcFJlbmRlclRyZWUuY3BwCmluZGV4IGM0OTIxMWM0NThh
YWU0ODEzYTIxMmMwYTA1OTc5MTRkNDBmNDNhNzYuLmI4NjM0MTFiN2ZiNDlmZDMyY2FmNTY4ODI1
ZGJkNzU0OTVjYmRhMjMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L0R1bXBSZW5kZXJUcmVlLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9E
dW1wUmVuZGVyVHJlZS5jcHAKQEAgLTg3LDYgKzg3LDkgQEAgcHVibGljOgogICAgIHsKICAgICAg
ICAgd2Via2l0X3N1cHBvcnQ6OlRlYXJEb3duVGVzdEVudmlyb25tZW50KCk7CiAgICAgfQorCisg
ICAgTW9ja1dlYktpdFBsYXRmb3JtU3VwcG9ydCogbW9ja1BsYXRmb3JtKCkgeyByZXR1cm4gbV9t
b2NrUGxhdGZvcm0uZ2V0KCk7IH0KKwogcHJpdmF0ZToKICAgICBPd25QdHI8TW9ja1dlYktpdFBs
YXRmb3JtU3VwcG9ydD4gbV9tb2NrUGxhdGZvcm07CiB9OwpAQCAtMjUyLDcgKzI1NSw3IEBAIGlu
dCBtYWluKGludCBhcmdjLCBjaGFyKiBhcmd2W10pCiAgICAgICAgICAgICAvLyAweDIwMDAwMDAw
bXMgaXMgYmlnIGVub3VnaCBmb3IgdGhlIHB1cnBvc2UgdG8gYXZvaWQgdGltZW91dCBpbiBkZWJ1
Z2dpbmcuCiAgICAgICAgICAgICBzaGVsbC5zZXRMYXlvdXRUZXN0VGltZW91dCgweDIwMDAwMDAw
KTsKICAgICAgICAgfQotICAgICAgICBzaGVsbC5pbml0aWFsaXplKCk7CisgICAgICAgIHNoZWxs
LmluaXRpYWxpemUodGVzdEVudmlyb25tZW50Lm1vY2tQbGF0Zm9ybSgpKTsKICAgICAgICAgaWYg
KHNlcnZlck1vZGUgJiYgIXRlc3RzLnNpemUoKSkgewogI2lmIE9TKEFORFJPSUQpCiAgICAgICAg
ICAgICAvLyBTZW5kIGEgc2lnbmFsIHRvIGhvc3QgdG8gaW5kaWNhdGUgRFJUIGlzIHJlYWR5IHRv
IHByb2Nlc3MgY29tbWFuZHMuCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9Nb2NrQ29uc3RyYWludHMuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
TW9ja0NvbnN0cmFpbnRzLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTRmMTU4
NDJlZjBhNTliN2ExYTk3YWNmYzUyZDY1Nzk4ZGIxYTMxYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9N
b2NrQ29uc3RyYWludHMuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNzkgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0
cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0g
KiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRl
ICJjb25maWcuaCIKLSNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotCi0jaW5jbHVkZSAiTW9ja0Nv
bnN0cmFpbnRzLmgiCi0KLSNpbmNsdWRlIDxwdWJsaWMvV2ViTWVkaWFDb25zdHJhaW50cy5oPgot
Ci11c2luZyBuYW1lc3BhY2UgV2ViS2l0OwotCi1uYW1lc3BhY2UgTW9ja0NvbnN0cmFpbnRzIHsK
LQotc3RhdGljIGJvb2wgaXNTdXBwb3J0ZWQoY29uc3QgV2ViU3RyaW5nJiBjb25zdHJhaW50KQot
ewotICAgIHJldHVybiBjb25zdHJhaW50ID09ICJ2YWxpZF9hbmRfc3VwcG9ydGVkXzEiIHx8IGNv
bnN0cmFpbnQgPT0gInZhbGlkX2FuZF9zdXBwb3J0ZWRfMiI7Ci19Ci0KLXN0YXRpYyBib29sIGlz
VmFsaWQoY29uc3QgV2ViU3RyaW5nJiBjb25zdHJhaW50KQotewotICAgIHJldHVybiBpc1N1cHBv
cnRlZChjb25zdHJhaW50KSB8fCBjb25zdHJhaW50ID09ICJ2YWxpZF9idXRfdW5zdXBwb3J0ZWRf
MSIgfHwgY29uc3RyYWludCA9PSAidmFsaWRfYnV0X3Vuc3VwcG9ydGVkXzIiOwotfQotCi1ib29s
IHZlcmlmeUNvbnN0cmFpbnRzKGNvbnN0IFdlYk1lZGlhQ29uc3RyYWludHMmIGNvbnN0cmFpbnRz
KQotewotICAgIFdlYlZlY3RvcjxXZWJNZWRpYUNvbnN0cmFpbnQ+IG1hbmRhdG9yeUNvbnN0cmFp
bnRzOwotICAgIGNvbnN0cmFpbnRzLmdldE1hbmRhdG9yeUNvbnN0cmFpbnRzKG1hbmRhdG9yeUNv
bnN0cmFpbnRzKTsKLSAgICBpZiAobWFuZGF0b3J5Q29uc3RyYWludHMuc2l6ZSgpKSB7Ci0gICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWFuZGF0b3J5Q29uc3RyYWludHMuc2l6ZSgpOyAr
K2kpIHsKLSAgICAgICAgICAgIGNvbnN0IFdlYk1lZGlhQ29uc3RyYWludCYgY3VyciA9IG1hbmRh
dG9yeUNvbnN0cmFpbnRzW2ldOwotICAgICAgICAgICAgaWYgKCFpc1N1cHBvcnRlZChjdXJyLm1f
bmFtZSkgfHwgY3Vyci5tX3ZhbHVlICE9ICIxIikKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBXZWJWZWN0b3I8V2ViTWVkaWFDb25zdHJhaW50
PiBvcHRpb25hbENvbnN0cmFpbnRzOwotICAgIGNvbnN0cmFpbnRzLmdldE9wdGlvbmFsQ29uc3Ry
YWludHMob3B0aW9uYWxDb25zdHJhaW50cyk7Ci0gICAgaWYgKG9wdGlvbmFsQ29uc3RyYWludHMu
c2l6ZSgpKSB7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb3B0aW9uYWxDb25zdHJh
aW50cy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgY29uc3QgV2ViTWVkaWFDb25zdHJhaW50
JiBjdXJyID0gb3B0aW9uYWxDb25zdHJhaW50c1tpXTsKLSAgICAgICAgICAgIGlmICghaXNWYWxp
ZChjdXJyLm1fbmFtZSkgfHwgY3Vyci5tX3ZhbHVlICE9ICIwIikKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQot
fSAvLyBuYW1lc3BhY2UgTW9ja0NvbnN0cmFpbnRzCi0KLSNlbmRpZiAvLyBFTkFCTEUoTUVESUFf
U1RSRUFNKQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja0Nv
bnN0cmFpbnRzLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrQ29uc3RyYWlu
dHMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmJmMGRhOWIxYmE4YjhjMTg4NjMw
NDg0NjdkZjBiY2ExZDM4ZjNmYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrQ29uc3RyYWludHMu
aAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwot
ICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAot
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIE1vY2tDb25zdHJhaW50c19o
Ci0jZGVmaW5lIE1vY2tDb25zdHJhaW50c19oCi0KLSNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQot
Ci1uYW1lc3BhY2UgV2ViS2l0IHsKLWNsYXNzIFdlYk1lZGlhQ29uc3RyYWludHM7Ci19Ci0KLW5h
bWVzcGFjZSBNb2NrQ29uc3RyYWludHMgewotCi1ib29sIHZlcmlmeUNvbnN0cmFpbnRzKGNvbnN0
IFdlYktpdDo6V2ViTWVkaWFDb25zdHJhaW50cyYpOwotCi19IC8vIG5hbWVzcGFjZSBNb2NrQ29u
c3RyYWludHMKLQotI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCi0KLSNlbmRpZiAvLyBN
b2NrQ29uc3RyYWludHNfaAotCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9Nb2NrV2ViS2l0UGxhdGZvcm1TdXBwb3J0LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL01vY2tXZWJLaXRQbGF0Zm9ybVN1cHBvcnQuY3BwCmluZGV4IDc5YWU5ZjIyOWQ0
NTg4YWE0ZjFlNzliNjM1YTQ4NWIzZTg2ZTM5MjguLmZlOGUxMDA1N2U3N2FiMWNhMzIwODAzMTMx
YTA0NjZjMjAwODVlNzkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L01vY2tXZWJLaXRQbGF0Zm9ybVN1cHBvcnQuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL01vY2tXZWJLaXRQbGF0Zm9ybVN1cHBvcnQuY3BwCkBAIC0zMSwxMiArMzEsMTMg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJNb2NrV2ViS2l0UGxhdGZvcm1TdXBw
b3J0LmgiCiAKLSNpbmNsdWRlICJNb2NrV2ViTWVkaWFTdHJlYW1DZW50ZXIuaCIKLSNpbmNsdWRl
ICJNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmgiCisjaW5jbHVkZSAiV2ViVGVzdElu
dGVyZmFjZXMuaCIKKyNpbmNsdWRlIDxwdWJsaWMvV2ViTWVkaWFTdHJlYW1DZW50ZXIuaD4KICNp
bmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAK
IHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Cit1c2luZyBuYW1lc3BhY2UgV2ViVGVzdFJ1bm5lcjsK
IAogUGFzc093blB0cjxNb2NrV2ViS2l0UGxhdGZvcm1TdXBwb3J0PiBNb2NrV2ViS2l0UGxhdGZv
cm1TdXBwb3J0OjpjcmVhdGUoKQogewpAQCAtNTEsNiArNTIsMTEgQEAgTW9ja1dlYktpdFBsYXRm
b3JtU3VwcG9ydDo6fk1vY2tXZWJLaXRQbGF0Zm9ybVN1cHBvcnQoKQogewogfQogCit2b2lkIE1v
Y2tXZWJLaXRQbGF0Zm9ybVN1cHBvcnQ6OnNldEludGVyZmFjZXMoV2ViVGVzdEludGVyZmFjZXMq
IGludGVyZmFjZXMpCit7CisgICAgbV9pbnRlcmZhY2VzID0gaW50ZXJmYWNlczsKK30KKwogdm9p
ZCBNb2NrV2ViS2l0UGxhdGZvcm1TdXBwb3J0OjpjcnlwdG9ncmFwaGljYWxseVJhbmRvbVZhbHVl
cyh1bnNpZ25lZCBjaGFyKiwgc2l6ZV90KQogewogICAgIENSQVNIKCk7CkBAIC01OSwxNCArNjUs
MTggQEAgdm9pZCBNb2NrV2ViS2l0UGxhdGZvcm1TdXBwb3J0OjpjcnlwdG9ncmFwaGljYWxseVJh
bmRvbVZhbHVlcyh1bnNpZ25lZCBjaGFyKiwgc2kKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQog
V2ViTWVkaWFTdHJlYW1DZW50ZXIqIE1vY2tXZWJLaXRQbGF0Zm9ybVN1cHBvcnQ6OmNyZWF0ZU1l
ZGlhU3RyZWFtQ2VudGVyKFdlYk1lZGlhU3RyZWFtQ2VudGVyQ2xpZW50KiBjbGllbnQpCiB7Cisg
ICAgQVNTRVJUKG1faW50ZXJmYWNlcyk7CisKICAgICBpZiAoIW1fbW9ja01lZGlhU3RyZWFtQ2Vu
dGVyKQotICAgICAgICBtX21vY2tNZWRpYVN0cmVhbUNlbnRlciA9IGFkb3B0UHRyKG5ldyBNb2Nr
V2ViTWVkaWFTdHJlYW1DZW50ZXIoY2xpZW50KSk7CisgICAgICAgIG1fbW9ja01lZGlhU3RyZWFt
Q2VudGVyID0gYWRvcHRQdHIobV9pbnRlcmZhY2VzLT5jcmVhdGVNZWRpYVN0cmVhbUNlbnRlcihj
bGllbnQpKTsKIAogICAgIHJldHVybiBtX21vY2tNZWRpYVN0cmVhbUNlbnRlci5nZXQoKTsKIH0K
IAogV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyKiBNb2NrV2ViS2l0UGxhdGZvcm1TdXBwb3J0
OjpjcmVhdGVSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIoV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5k
bGVyQ2xpZW50KiBjbGllbnQpCiB7Ci0gICAgcmV0dXJuIG5ldyBNb2NrV2ViUlRDUGVlckNvbm5l
Y3Rpb25IYW5kbGVyKGNsaWVudCk7CisgICAgQVNTRVJUKG1faW50ZXJmYWNlcyk7CisKKyAgICBy
ZXR1cm4gbV9pbnRlcmZhY2VzLT5jcmVhdGVXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIoY2xp
ZW50KTsKIH0KICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYktpdFBsYXRmb3JtU3VwcG9ydC5oIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYktpdFBsYXRmb3JtU3VwcG9ydC5o
CmluZGV4IDFlNTQ0MzgwOTI1OWE1ZDg4NzI2NDhmNjUxNDQ4MWRhOGU0YzYzYzIuLjIyMDIyMTU1
Zjk0NWRkZGQ2NGEyMTMxNmI0ZGFkZDQyZGIyODk5MGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaAorKysgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViS2l0UGxhdGZvcm1TdXBwb3J0LmgKQEAg
LTM1LDExICszNSwxNiBAQAogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYv
UGFzc093blB0ci5oPgogCituYW1lc3BhY2UgV2ViVGVzdFJ1bm5lciB7CitjbGFzcyBXZWJUZXN0
SW50ZXJmYWNlczsKK30KKwogY2xhc3MgTW9ja1dlYktpdFBsYXRmb3JtU3VwcG9ydCA6IHB1Ymxp
YyBXZWJLaXQ6OlBsYXRmb3JtIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxNb2Nr
V2ViS2l0UGxhdGZvcm1TdXBwb3J0PiBjcmVhdGUoKTsKICAgICB+TW9ja1dlYktpdFBsYXRmb3Jt
U3VwcG9ydCgpOwogCisgICAgdm9pZCBzZXRJbnRlcmZhY2VzKFdlYlRlc3RSdW5uZXI6OldlYlRl
c3RJbnRlcmZhY2VzKik7CiAgICAgdmlydHVhbCB2b2lkIGNyeXB0b2dyYXBoaWNhbGx5UmFuZG9t
VmFsdWVzKHVuc2lnbmVkIGNoYXIqIGJ1ZmZlciwgc2l6ZV90IGxlbmd0aCkgT1ZFUlJJREU7CiAK
ICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQpAQCAtNTAsNiArNTUsOCBAQCBwdWJsaWM6CiBwcml2
YXRlOgogICAgIE1vY2tXZWJLaXRQbGF0Zm9ybVN1cHBvcnQoKTsKIAorICAgIFdlYlRlc3RSdW5u
ZXI6OldlYlRlc3RJbnRlcmZhY2VzKiBtX2ludGVyZmFjZXM7CisKICNpZiBFTkFCTEUoTUVESUFf
U1RSRUFNKQogICAgIE93blB0cjxXZWJLaXQ6OldlYk1lZGlhU3RyZWFtQ2VudGVyPiBtX21vY2tN
ZWRpYVN0cmVhbUNlbnRlcjsKICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0t
Z2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYk1lZGlhU3RyZWFtQ2Vu
dGVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJNZWRpYVN0cmVh
bUNlbnRlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkzZGM2YTZkNzU4NjZl
YWRjYjY4MTQ0YmQyYTdhNThiZjY5ZDU2NjAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYk1l
ZGlhU3RyZWFtQ2VudGVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDExMSArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRp
c3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
LSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1
ZGUgImNvbmZpZy5oIgotI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0KLSNpbmNsdWRlICJNb2Nr
V2ViTWVkaWFTdHJlYW1DZW50ZXIuaCIKLQotI2luY2x1ZGUgPHB1YmxpYy9XZWJBdWRpb0Rlc3Rp
bmF0aW9uQ29uc3VtZXIuaD4KLSNpbmNsdWRlIDxwdWJsaWMvV2ViTWVkaWFTdHJlYW0uaD4KLSNp
bmNsdWRlIDxwdWJsaWMvV2ViTWVkaWFTdHJlYW1DZW50ZXJDbGllbnQuaD4KLSNpbmNsdWRlIDxw
dWJsaWMvV2ViTWVkaWFTdHJlYW1Tb3VyY2UuaD4KLSNpbmNsdWRlIDxwdWJsaWMvV2ViTWVkaWFT
dHJlYW1Tb3VyY2VzUmVxdWVzdC5oPgotI2luY2x1ZGUgPHB1YmxpYy9XZWJNZWRpYVN0cmVhbVRy
YWNrLmg+Ci0jaW5jbHVkZSA8cHVibGljL1dlYlZlY3Rvci5oPgotCi11c2luZyBuYW1lc3BhY2Ug
V2ViS2l0OwotCi1Nb2NrV2ViTWVkaWFTdHJlYW1DZW50ZXI6Ok1vY2tXZWJNZWRpYVN0cmVhbUNl
bnRlcihXZWJNZWRpYVN0cmVhbUNlbnRlckNsaWVudCogY2xpZW50KQotewotfQotCi12b2lkIE1v
Y2tXZWJNZWRpYVN0cmVhbUNlbnRlcjo6cXVlcnlNZWRpYVN0cmVhbVNvdXJjZXMoY29uc3QgV2Vi
TWVkaWFTdHJlYW1Tb3VyY2VzUmVxdWVzdCYgcmVxdWVzdCkKLXsKLSAgICBXZWJWZWN0b3I8V2Vi
TWVkaWFTdHJlYW1Tb3VyY2U+IGF1ZGlvU291cmNlcywgdmlkZW9Tb3VyY2VzOwotICAgIHJlcXVl
c3QuZGlkQ29tcGxldGVRdWVyeShhdWRpb1NvdXJjZXMsIHZpZGVvU291cmNlcyk7Ci19Ci0KLXZv
aWQgTW9ja1dlYk1lZGlhU3RyZWFtQ2VudGVyOjpkaWRFbmFibGVNZWRpYVN0cmVhbVRyYWNrKGNv
bnN0IFdlYk1lZGlhU3RyZWFtJiwgY29uc3QgV2ViTWVkaWFTdHJlYW1UcmFjayYgY29tcG9uZW50
KQotewotICAgIGNvbXBvbmVudC5zb3VyY2UoKS5zZXRSZWFkeVN0YXRlKFdlYk1lZGlhU3RyZWFt
U291cmNlOjpSZWFkeVN0YXRlTGl2ZSk7Ci19Ci0KLXZvaWQgTW9ja1dlYk1lZGlhU3RyZWFtQ2Vu
dGVyOjpkaWREaXNhYmxlTWVkaWFTdHJlYW1UcmFjayhjb25zdCBXZWJNZWRpYVN0cmVhbSYsIGNv
bnN0IFdlYk1lZGlhU3RyZWFtVHJhY2smIGNvbXBvbmVudCkKLXsKLSAgICBjb21wb25lbnQuc291
cmNlKCkuc2V0UmVhZHlTdGF0ZShXZWJNZWRpYVN0cmVhbVNvdXJjZTo6UmVhZHlTdGF0ZU11dGVk
KTsKLX0KLQotYm9vbCBNb2NrV2ViTWVkaWFTdHJlYW1DZW50ZXI6OmRpZEFkZE1lZGlhU3RyZWFt
VHJhY2soY29uc3QgV2ViTWVkaWFTdHJlYW0mLCBjb25zdCBXZWJNZWRpYVN0cmVhbVRyYWNrJikK
LXsKLSAgICByZXR1cm4gdHJ1ZTsKLX07Ci0KLWJvb2wgTW9ja1dlYk1lZGlhU3RyZWFtQ2VudGVy
OjpkaWRSZW1vdmVNZWRpYVN0cmVhbVRyYWNrKGNvbnN0IFdlYk1lZGlhU3RyZWFtJiwgY29uc3Qg
V2ViTWVkaWFTdHJlYW1UcmFjayYpCi17Ci0gICAgcmV0dXJuIHRydWU7Ci19OwotCi12b2lkIE1v
Y2tXZWJNZWRpYVN0cmVhbUNlbnRlcjo6ZGlkU3RvcExvY2FsTWVkaWFTdHJlYW0oY29uc3QgV2Vi
TWVkaWFTdHJlYW0mIHN0cmVhbSkKLXsKLSAgICBXZWJWZWN0b3I8V2ViTWVkaWFTdHJlYW1UcmFj
az4gYXVkaW9Db21wb25lbnRzOwotICAgIHN0cmVhbS5hdWRpb1NvdXJjZXMoYXVkaW9Db21wb25l
bnRzKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGF1ZGlvQ29tcG9uZW50cy5zaXplKCk7
ICsraSkKLSAgICAgICAgYXVkaW9Db21wb25lbnRzW2ldLnNvdXJjZSgpLnNldFJlYWR5U3RhdGUo
V2ViTWVkaWFTdHJlYW1Tb3VyY2U6OlJlYWR5U3RhdGVFbmRlZCk7Ci0KLSAgICBXZWJWZWN0b3I8
V2ViTWVkaWFTdHJlYW1UcmFjaz4gdmlkZW9Db21wb25lbnRzOwotICAgIHN0cmVhbS52aWRlb1Nv
dXJjZXModmlkZW9Db21wb25lbnRzKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHZpZGVv
Q29tcG9uZW50cy5zaXplKCk7ICsraSkKLSAgICAgICAgdmlkZW9Db21wb25lbnRzW2ldLnNvdXJj
ZSgpLnNldFJlYWR5U3RhdGUoV2ViTWVkaWFTdHJlYW1Tb3VyY2U6OlJlYWR5U3RhdGVFbmRlZCk7
Ci19Ci0KLWNsYXNzIE1vY2tXZWJBdWRpb0Rlc3RpbmF0aW9uQ29uc3VtZXIgOiBwdWJsaWMgV2Vi
QXVkaW9EZXN0aW5hdGlvbkNvbnN1bWVyIHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5Nb2NrV2Vi
QXVkaW9EZXN0aW5hdGlvbkNvbnN1bWVyKCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldEZvcm1h
dChzaXplX3QgbnVtYmVyT2ZDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSkgT1ZFUlJJREUgeyB9
Ci0gICAgdmlydHVhbCB2b2lkIGNvbnN1bWVBdWRpbyhjb25zdCBXZWJWZWN0b3I8Y29uc3QgZmxv
YXQqPiYsIHNpemVfdCBudW1iZXJfb2ZfZnJhbWVzKSBPVkVSUklERSB7IH0KLX07Ci0KLXZvaWQg
TW9ja1dlYk1lZGlhU3RyZWFtQ2VudGVyOjpkaWRDcmVhdGVNZWRpYVN0cmVhbShXZWJNZWRpYVN0
cmVhbSYgc3RyZWFtKQotewotICAgIFdlYlZlY3RvcjxXZWJNZWRpYVN0cmVhbVRyYWNrPiBhdWRp
b0NvbXBvbmVudHM7Ci0gICAgc3RyZWFtLmF1ZGlvU291cmNlcyhhdWRpb0NvbXBvbmVudHMpOwot
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXVkaW9Db21wb25lbnRzLnNpemUoKTsgKytpKSB7
Ci0gICAgICAgIFdlYk1lZGlhU3RyZWFtU291cmNlIHNvdXJjZSA9IGF1ZGlvQ29tcG9uZW50c1tp
XS5zb3VyY2UoKTsKLSAgICAgICAgaWYgKHNvdXJjZS5yZXF1aXJlc0F1ZGlvQ29uc3VtZXIoKSkg
ewotICAgICAgICAgICAgTW9ja1dlYkF1ZGlvRGVzdGluYXRpb25Db25zdW1lciogY29uc3VtZXIg
PSBuZXcgTW9ja1dlYkF1ZGlvRGVzdGluYXRpb25Db25zdW1lcigpOwotICAgICAgICAgICAgc291
cmNlLmFkZEF1ZGlvQ29uc3VtZXIoY29uc3VtZXIpOwotICAgICAgICAgICAgc291cmNlLnJlbW92
ZUF1ZGlvQ29uc3VtZXIoY29uc3VtZXIpOwotICAgICAgICAgICAgZGVsZXRlIGNvbnN1bWVyOwot
ICAgICAgICB9Ci0gICAgfQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJNZWRpYVN0cmVh
bUNlbnRlci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYk1lZGlhU3Ry
ZWFtQ2VudGVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVlMGQ3M2ExYjY2YTUw
NGE5MTJiZjRiNThhMzQwYWMyNDE5MTc3ZTYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYk1l
ZGlhU3RyZWFtQ2VudGVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1OSArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3Ry
aWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBN
b2NrV2ViTWVkaWFTdHJlYW1DZW50ZXJfaAotI2RlZmluZSBNb2NrV2ViTWVkaWFTdHJlYW1DZW50
ZXJfaAotCi0jaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLSNpbmNsdWRlIDxwdWJsaWMvV2ViTWVk
aWFTdHJlYW1DZW50ZXIuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci1jbGFzcyBXZWJNZWRpYVN0
cmVhbUNlbnRlckNsaWVudDsKLX07Ci0KLWNsYXNzIE1vY2tXZWJNZWRpYVN0cmVhbUNlbnRlciA6
IHB1YmxpYyBXZWJLaXQ6OldlYk1lZGlhU3RyZWFtQ2VudGVyIHsKLXB1YmxpYzoKLSAgICBleHBs
aWNpdCBNb2NrV2ViTWVkaWFTdHJlYW1DZW50ZXIoV2ViS2l0OjpXZWJNZWRpYVN0cmVhbUNlbnRl
ckNsaWVudCopOwotCi0gICAgdmlydHVhbCB2b2lkIHF1ZXJ5TWVkaWFTdHJlYW1Tb3VyY2VzKGNv
bnN0IFdlYktpdDo6V2ViTWVkaWFTdHJlYW1Tb3VyY2VzUmVxdWVzdCYpIE9WRVJSSURFOwotICAg
IHZpcnR1YWwgdm9pZCBkaWRFbmFibGVNZWRpYVN0cmVhbVRyYWNrKGNvbnN0IFdlYktpdDo6V2Vi
TWVkaWFTdHJlYW0mLCBjb25zdCBXZWJLaXQ6OldlYk1lZGlhU3RyZWFtVHJhY2smKSBPVkVSUklE
RTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkRGlzYWJsZU1lZGlhU3RyZWFtVHJhY2soY29uc3QgV2Vi
S2l0OjpXZWJNZWRpYVN0cmVhbSYsIGNvbnN0IFdlYktpdDo6V2ViTWVkaWFTdHJlYW1UcmFjayYp
IE9WRVJSSURFOwotICAgIHZpcnR1YWwgYm9vbCBkaWRBZGRNZWRpYVN0cmVhbVRyYWNrKGNvbnN0
IFdlYktpdDo6V2ViTWVkaWFTdHJlYW0mLCBjb25zdCBXZWJLaXQ6OldlYk1lZGlhU3RyZWFtVHJh
Y2smKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGJvb2wgZGlkUmVtb3ZlTWVkaWFTdHJlYW1UcmFj
ayhjb25zdCBXZWJLaXQ6OldlYk1lZGlhU3RyZWFtJiwgY29uc3QgV2ViS2l0OjpXZWJNZWRpYVN0
cmVhbVRyYWNrJikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFN0b3BMb2NhbE1lZGlh
U3RyZWFtKGNvbnN0IFdlYktpdDo6V2ViTWVkaWFTdHJlYW0mKSBPVkVSUklERTsKLSAgICB2aXJ0
dWFsIHZvaWQgZGlkQ3JlYXRlTWVkaWFTdHJlYW0oV2ViS2l0OjpXZWJNZWRpYVN0cmVhbSYpIE9W
RVJSSURFOwotCi1wcml2YXRlOgotICAgIE1vY2tXZWJNZWRpYVN0cmVhbUNlbnRlcigpIHsgfQot
fTsKLQotI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCi0jZW5kaWYgLy8gTW9ja1dlYk1l
ZGlhU3RyZWFtQ2VudGVyX2gKLQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vTW9ja1dlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL01vY2tXZWJSVENEVE1GU2VuZGVySGFuZGxlci5jcHAKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGQ0YzJkYmRlNzY5ZjFmYzkyYmYzZjUxMTgzYWM2MTRiN2VjN2Rk
MzIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyLmNwcAor
KysgL2Rldi9udWxsCkBAIC0xLDk0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEdPT0dMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgR09PR0xFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaWYgRU5BQkxFKE1F
RElBX1NUUkVBTSkKLQotI2luY2x1ZGUgIk1vY2tXZWJSVENEVE1GU2VuZGVySGFuZGxlci5oIgot
Ci0jaW5jbHVkZSAiVGFzay5oIgotI2luY2x1ZGUgPGFzc2VydC5oPgotI2luY2x1ZGUgPHB1Ymxp
Yy9XZWJNZWRpYVN0cmVhbVNvdXJjZS5oPgotI2luY2x1ZGUgPHB1YmxpYy9XZWJSVENEVE1GU2Vu
ZGVySGFuZGxlckNsaWVudC5oPgotCi11c2luZyBuYW1lc3BhY2UgV2ViS2l0OwotdXNpbmcgbmFt
ZXNwYWNlIFdlYlRlc3RSdW5uZXI7Ci0KLWNsYXNzIERUTUZTZW5kZXJUb25lVGFzayA6IHB1Ymxp
YyBXZWJNZXRob2RUYXNrPE1vY2tXZWJSVENEVE1GU2VuZGVySGFuZGxlcj4gewotcHVibGljOgot
ICAgIERUTUZTZW5kZXJUb25lVGFzayhNb2NrV2ViUlRDRFRNRlNlbmRlckhhbmRsZXIqIG9iamVj
dCwgV2ViUlRDRFRNRlNlbmRlckhhbmRsZXJDbGllbnQqIGNsaWVudCkKLSAgICAgICAgOiBXZWJN
ZXRob2RUYXNrPE1vY2tXZWJSVENEVE1GU2VuZGVySGFuZGxlcj4ob2JqZWN0KQotICAgICAgICAs
IG1fY2xpZW50KGNsaWVudCkKLSAgICB7Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkIHJ1bklm
VmFsaWQoKSBPVkVSUklERQotICAgIHsKLSAgICAgICAgV2ViU3RyaW5nIHRvbmVzID0gbV9vYmpl
Y3QtPmN1cnJlbnRUb25lQnVmZmVyKCk7Ci0gICAgICAgIG1fb2JqZWN0LT5jbGVhclRvbmVCdWZm
ZXIoKTsKLSAgICAgICAgbV9jbGllbnQtPmRpZFBsYXlUb25lKHRvbmVzKTsKLSAgICB9Ci0KLXBy
aXZhdGU6Ci0gICAgV2ViUlRDRFRNRlNlbmRlckhhbmRsZXJDbGllbnQqIG1fY2xpZW50OwotfTsK
LQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLU1vY2tXZWJSVENEVE1GU2VuZGVySGFuZGxlcjo6
TW9ja1dlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyKGNvbnN0IFdlYk1lZGlhU3RyZWFtVHJhY2smIHRy
YWNrKQotICAgIDogbV9jbGllbnQoMCkKLSAgICAsIG1fdHJhY2sodHJhY2spCi17Ci19Ci0KLXZv
aWQgTW9ja1dlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyOjpzZXRDbGllbnQoV2ViUlRDRFRNRlNlbmRl
ckhhbmRsZXJDbGllbnQqIGNsaWVudCkKLXsKLSAgICBtX2NsaWVudCA9IGNsaWVudDsKLX0KLQot
V2ViU3RyaW5nIE1vY2tXZWJSVENEVE1GU2VuZGVySGFuZGxlcjo6Y3VycmVudFRvbmVCdWZmZXIo
KQotewotICAgIHJldHVybiBtX3RvbmVCdWZmZXI7Ci19Ci0KLWJvb2wgTW9ja1dlYlJUQ0RUTUZT
ZW5kZXJIYW5kbGVyOjpjYW5JbnNlcnREVE1GKCkKLXsKLSAgICBhc3NlcnQobV9jbGllbnQgJiYg
IW1fdHJhY2suaXNOdWxsKCkpOwotICAgIHJldHVybiBtX3RyYWNrLnNvdXJjZSgpLnR5cGUoKSA9
PSBXZWJNZWRpYVN0cmVhbVNvdXJjZTo6VHlwZUF1ZGlvICYmIG1fdHJhY2suaXNFbmFibGVkKCkg
JiYgbV90cmFjay5zb3VyY2UoKS5yZWFkeVN0YXRlKCkgPT0gV2ViTWVkaWFTdHJlYW1Tb3VyY2U6
OlJlYWR5U3RhdGVMaXZlOwotfQotCi1ib29sIE1vY2tXZWJSVENEVE1GU2VuZGVySGFuZGxlcjo6
aW5zZXJ0RFRNRihjb25zdCBXZWJTdHJpbmcmIHRvbmVzLCBsb25nIGR1cmF0aW9uLCBsb25nIGlu
dGVyVG9uZUdhcCkKLXsKLSAgICBhc3NlcnQobV9jbGllbnQpOwotICAgIGlmICghY2FuSW5zZXJ0
RFRNRigpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBtX3RvbmVCdWZmZXIgPSB0b25l
czsKLSAgICBwb3N0VGFzayhuZXcgRFRNRlNlbmRlclRvbmVUYXNrKHRoaXMsIG1fY2xpZW50KSk7
Ci0gICAgcG9zdFRhc2sobmV3IERUTUZTZW5kZXJUb25lVGFzayh0aGlzLCBtX2NsaWVudCkpOwot
ICAgIHJldHVybiB0cnVlOwotfQotCi0jZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJSVENEVE1GU2Vu
ZGVySGFuZGxlci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlJUQ0RU
TUZTZW5kZXJIYW5kbGVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJmYzZjNTJl
OTM2NzY3YjlkYjNlNThlMWEzOWNlZTU0MGYxODRlNjguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9j
a1dlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1OCArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBHT09HTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEdPT0dMRSBJTkMuIE9SCi0g
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRl
ZiBNb2NrV2ViUlRDRFRNRlNlbmRlckhhbmRsZXJfaAotI2RlZmluZSBNb2NrV2ViUlRDRFRNRlNl
bmRlckhhbmRsZXJfaAotCi0jaW5jbHVkZSAiV2ViVGFzay5oIgotI2luY2x1ZGUgPHB1YmxpYy9X
ZWJNZWRpYVN0cmVhbVRyYWNrLmg+Ci0jaW5jbHVkZSA8cHVibGljL1dlYlJUQ0RUTUZTZW5kZXJI
YW5kbGVyLmg+Ci0jaW5jbHVkZSA8cHVibGljL1dlYlN0cmluZy5oPgotCi1jbGFzcyBNb2NrV2Vi
UlRDRFRNRlNlbmRlckhhbmRsZXIgOiBwdWJsaWMgV2ViS2l0OjpXZWJSVENEVE1GU2VuZGVySGFu
ZGxlciB7Ci1wdWJsaWM6Ci0gICAgZXhwbGljaXQgTW9ja1dlYlJUQ0RUTUZTZW5kZXJIYW5kbGVy
KGNvbnN0IFdlYktpdDo6V2ViTWVkaWFTdHJlYW1UcmFjayYpOwotCi0gICAgdmlydHVhbCB2b2lk
IHNldENsaWVudChXZWJLaXQ6OldlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyQ2xpZW50KikgT1ZFUlJJ
REU7Ci0KLSAgICB2aXJ0dWFsIFdlYktpdDo6V2ViU3RyaW5nIGN1cnJlbnRUb25lQnVmZmVyKCkg
T1ZFUlJJREU7Ci0KLSAgICB2aXJ0dWFsIGJvb2wgY2FuSW5zZXJ0RFRNRigpIE9WRVJSSURFOwot
ICAgIHZpcnR1YWwgYm9vbCBpbnNlcnREVE1GKGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJiB0b25l
cywgbG9uZyBkdXJhdGlvbiwgbG9uZyBpbnRlclRvbmVHYXApIE9WRVJSSURFOwotCi0gICAgLy8g
V2ViVGFzayByZWxhdGVkIG1ldGhvZHMKLSAgICBXZWJUZXN0UnVubmVyOjpXZWJUYXNrTGlzdCog
dGFza0xpc3QoKSB7IHJldHVybiAmbV90YXNrTGlzdDsgfQotICAgIHZvaWQgY2xlYXJUb25lQnVm
ZmVyKCkgeyBtX3RvbmVCdWZmZXIucmVzZXQoKTsgfQotCi1wcml2YXRlOgotICAgIE1vY2tXZWJS
VENEVE1GU2VuZGVySGFuZGxlcigpOwotCi0gICAgV2ViS2l0OjpXZWJSVENEVE1GU2VuZGVySGFu
ZGxlckNsaWVudCogbV9jbGllbnQ7Ci0gICAgV2ViS2l0OjpXZWJNZWRpYVN0cmVhbVRyYWNrIG1f
dHJhY2s7Ci0gICAgV2ViS2l0OjpXZWJTdHJpbmcgbV90b25lQnVmZmVyOwotICAgIFdlYlRlc3RS
dW5uZXI6OldlYlRhc2tMaXN0IG1fdGFza0xpc3Q7Ci19OwotCi0jZW5kaWYgLy8gTW9ja1dlYlJU
Q0RUTUZTZW5kZXJIYW5kbGVyX2gKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL01vY2tXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vTW9ja1dlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVmODRkODVkZTdmOGUyZjNjYzRjYjBlMjIwN2ZiNWQ2ZmEy
NjE4YWQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5j
cHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgotICogQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCi0gKiBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVk
ZSAiY29uZmlnLmgiCi0jaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLQotI2luY2x1ZGUgIk1vY2tX
ZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuaCIKLQotI2luY2x1ZGUgIlRhc2suaCIKLSNpbmNsdWRl
IDxhc3NlcnQuaD4KLSNpbmNsdWRlIDxwdWJsaWMvV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xp
ZW50Lmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Ci11c2luZyBuYW1lc3BhY2UgV2ViVGVz
dFJ1bm5lcjsKLQotY2xhc3MgRGF0YUNoYW5uZWxSZWFkeVN0YXRlVGFzayA6IHB1YmxpYyBXZWJN
ZXRob2RUYXNrPE1vY2tXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI+IHsKLXB1YmxpYzoKLSAgICBE
YXRhQ2hhbm5lbFJlYWR5U3RhdGVUYXNrKE1vY2tXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIqIG9i
amVjdCwgV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50KiBkYXRhQ2hhbm5lbENsaWVudCwg
V2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50OjpSZWFkeVN0YXRlIHN0YXRlKQotICAgICAg
ICA6IFdlYk1ldGhvZFRhc2s8TW9ja1dlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcj4ob2JqZWN0KQot
ICAgICAgICAsIG1fZGF0YUNoYW5uZWxDbGllbnQoZGF0YUNoYW5uZWxDbGllbnQpCi0gICAgICAg
ICwgbV9zdGF0ZShzdGF0ZSkKLSAgICB7Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkIHJ1bklm
VmFsaWQoKSBPVkVSUklERQotICAgIHsKLSAgICAgICAgbV9kYXRhQ2hhbm5lbENsaWVudC0+ZGlk
Q2hhbmdlUmVhZHlTdGF0ZShtX3N0YXRlKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgV2ViUlRD
RGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50KiBtX2RhdGFDaGFubmVsQ2xpZW50OwotICAgIFdlYlJU
Q0RhdGFDaGFubmVsSGFuZGxlckNsaWVudDo6UmVhZHlTdGF0ZSBtX3N0YXRlOwotfTsKLQotLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vCi0KLU1vY2tXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6Ok1vY2tX
ZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIoV2ViU3RyaW5nIGxhYmVsLCBib29sIHJlbGlhYmxlKQot
ICAgIDogbV9jbGllbnQoMCkKLSAgICAsIG1fbGFiZWwobGFiZWwpCi0gICAgLCBtX3JlbGlhYmxl
KHJlbGlhYmxlKQotewotfQotCi12b2lkIE1vY2tXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OnNl
dENsaWVudChXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQqIGNsaWVudCkKLXsKLSAgICBt
X2NsaWVudCA9IGNsaWVudDsKLSAgICBpZiAobV9jbGllbnQpCi0gICAgICAgIHBvc3RUYXNrKG5l
dyBEYXRhQ2hhbm5lbFJlYWR5U3RhdGVUYXNrKHRoaXMsIG1fY2xpZW50LCBXZWJSVENEYXRhQ2hh
bm5lbEhhbmRsZXJDbGllbnQ6OlJlYWR5U3RhdGVPcGVuKSk7Ci19Ci0KLXVuc2lnbmVkIGxvbmcg
TW9ja1dlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6YnVmZmVyZWRBbW91bnQoKQotewotICAgIHJl
dHVybiAwOwotfQotCi1ib29sIE1vY2tXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OnNlbmRTdHJp
bmdEYXRhKGNvbnN0IFdlYlN0cmluZyYgZGF0YSkKLXsKLSAgICBhc3NlcnQobV9jbGllbnQpOwot
ICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlU3RyaW5nRGF0YShkYXRhKTsKLSAgICByZXR1cm4gdHJ1
ZTsKLX0KLQotYm9vbCBNb2NrV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpzZW5kUmF3RGF0YShj
b25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkKLXsKLSAgICBhc3NlcnQobV9jbGllbnQpOwot
ICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlUmF3RGF0YShkYXRhLCBzaXplKTsKLSAgICByZXR1cm4g
dHJ1ZTsKLX0KLQotdm9pZCBNb2NrV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpjbG9zZSgpCi17
Ci0gICAgYXNzZXJ0KG1fY2xpZW50KTsKLSAgICBwb3N0VGFzayhuZXcgRGF0YUNoYW5uZWxSZWFk
eVN0YXRlVGFzayh0aGlzLCBtX2NsaWVudCwgV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50
OjpSZWFkeVN0YXRlQ2xvc2VkKSk7Ci19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFN
KQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlJUQ0Rh
dGFDaGFubmVsSGFuZGxlci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dl
YlJUQ0RhdGFDaGFubmVsSGFuZGxlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1
OGZmZTdjNWJhZDgzOTdjNzI0YzQxZDYxZmEyOTlkM2FiNDk5Y2JlLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL01vY2tXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDU2
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQot
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OCi0gKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMKLSAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgTW9ja1dlYlJUQ0RhdGFDaGFubmVsSGFu
ZGxlcl9oCi0jZGVmaW5lIE1vY2tXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXJfaAotCi0jaW5jbHVk
ZSAiV2ViVGFzay5oIgotI2luY2x1ZGUgPHB1YmxpYy9XZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIu
aD4KLSNpbmNsdWRlIDxwdWJsaWMvV2ViU3RyaW5nLmg+Ci0KLWNsYXNzIE1vY2tXZWJSVENEYXRh
Q2hhbm5lbEhhbmRsZXIgOiBwdWJsaWMgV2ViS2l0OjpXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIg
ewotcHVibGljOgotICAgIE1vY2tXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIoV2ViS2l0OjpXZWJT
dHJpbmcgbGFiZWwsIGJvb2wgcmVsaWFibGUpOwotCi0gICAgdmlydHVhbCB2b2lkIHNldENsaWVu
dChXZWJLaXQ6OldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCopIE9WRVJSSURFOwotICAg
IHZpcnR1YWwgV2ViS2l0OjpXZWJTdHJpbmcgbGFiZWwoKSBPVkVSUklERSB7IHJldHVybiBtX2xh
YmVsOyB9Ci0gICAgdmlydHVhbCBib29sIGlzUmVsaWFibGUoKSBPVkVSUklERSB7IHJldHVybiBt
X3JlbGlhYmxlOyB9Ci0gICAgdmlydHVhbCB1bnNpZ25lZCBsb25nIGJ1ZmZlcmVkQW1vdW50KCkg
T1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29sIHNlbmRTdHJpbmdEYXRhKGNvbnN0IFdlYktpdDo6
V2ViU3RyaW5nJikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29sIHNlbmRSYXdEYXRhKGNvbnN0
IGNoYXIqLCBzaXplX3QpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBjbG9zZSgpIE9WRVJS
SURFOwotCi0gICAgLy8gV2ViVGFzayByZWxhdGVkIG1ldGhvZHMKLSAgICBXZWJUZXN0UnVubmVy
OjpXZWJUYXNrTGlzdCogdGFza0xpc3QoKSB7IHJldHVybiAmbV90YXNrTGlzdDsgfQotCi1wcml2
YXRlOgotICAgIE1vY2tXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIoKTsKLQotICAgIFdlYktpdDo6
V2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50KiBtX2NsaWVudDsKLSAgICBXZWJLaXQ6Oldl
YlN0cmluZyBtX2xhYmVsOwotICAgIGJvb2wgbV9yZWxpYWJsZTsKLSAgICBXZWJUZXN0UnVubmVy
OjpXZWJUYXNrTGlzdCBtX3Rhc2tMaXN0OwotfTsKLQotI2VuZGlmIC8vIE1vY2tXZWJSVENEYXRh
Q2hhbm5lbEhhbmRsZXJfaApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5jcHAgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9Nb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmNwcApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDAzODdkMzVkOGU1ZjM0YTllOTIzOTU5ZjY0MmNmN2Qy
OGQ2NjRkMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5k
bGVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDMwOSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4K
LSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
Ci0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0KLSNpbmNsdWRlICJNb2NrV2ViUlRDUGVlckNv
bm5lY3Rpb25IYW5kbGVyLmgiCi0KLSNpbmNsdWRlICJNb2NrQ29uc3RyYWludHMuaCIKLSNpbmNs
dWRlICJNb2NrV2ViUlRDRFRNRlNlbmRlckhhbmRsZXIuaCIKLSNpbmNsdWRlICJNb2NrV2ViUlRD
RGF0YUNoYW5uZWxIYW5kbGVyLmgiCi0jaW5jbHVkZSAiVGFzay5oIgotI2luY2x1ZGUgPHB1Ymxp
Yy9XZWJNZWRpYUNvbnN0cmFpbnRzLmg+Ci0jaW5jbHVkZSA8cHVibGljL1dlYk1lZGlhU3RyZWFt
Lmg+Ci0jaW5jbHVkZSA8cHVibGljL1dlYk1lZGlhU3RyZWFtVHJhY2suaD4KLSNpbmNsdWRlIDxw
dWJsaWMvV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50Lmg+Ci0jaW5jbHVkZSA8cHVi
bGljL1dlYlJUQ1Nlc3Npb25EZXNjcmlwdGlvbi5oPgotI2luY2x1ZGUgPHB1YmxpYy9XZWJSVENT
ZXNzaW9uRGVzY3JpcHRpb25SZXF1ZXN0Lmg+Ci0jaW5jbHVkZSA8cHVibGljL1dlYlJUQ1N0YXRz
UmVxdWVzdC5oPgotI2luY2x1ZGUgPHB1YmxpYy9XZWJSVENTdGF0c1Jlc3BvbnNlLmg+Ci0jaW5j
bHVkZSA8cHVibGljL1dlYlJUQ1ZvaWRSZXF1ZXN0Lmg+Ci0jaW5jbHVkZSA8cHVibGljL1dlYlN0
cmluZy5oPgotI2luY2x1ZGUgPHB1YmxpYy9XZWJWZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYvRGF0
ZU1hdGguaD4KLQotdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKLXVzaW5nIG5hbWVzcGFjZSBXZWJU
ZXN0UnVubmVyOwotCi1jbGFzcyBSVENTZXNzaW9uRGVzY3JpcHRpb25SZXF1ZXN0U3VjY2VkZWRU
YXNrIDogcHVibGljIFdlYk1ldGhvZFRhc2s8TW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxl
cj4gewotcHVibGljOgotICAgIFJUQ1Nlc3Npb25EZXNjcmlwdGlvblJlcXVlc3RTdWNjZWRlZFRh
c2soTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlciogb2JqZWN0LCBjb25zdCBXZWJSVENT
ZXNzaW9uRGVzY3JpcHRpb25SZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXZWJSVENTZXNzaW9uRGVz
Y3JpcHRpb24mIHJlc3VsdCkKLSAgICAgICAgOiBXZWJNZXRob2RUYXNrPE1vY2tXZWJSVENQZWVy
Q29ubmVjdGlvbkhhbmRsZXI+KG9iamVjdCkKLSAgICAgICAgLCBtX3JlcXVlc3QocmVxdWVzdCkK
LSAgICAgICAgLCBtX3Jlc3VsdChyZXN1bHQpCi0gICAgewotICAgIH0KLQotICAgIHZpcnR1YWwg
dm9pZCBydW5JZlZhbGlkKCkgT1ZFUlJJREUKLSAgICB7Ci0gICAgICAgIG1fcmVxdWVzdC5yZXF1
ZXN0U3VjY2VlZGVkKG1fcmVzdWx0KTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgV2ViUlRDU2Vz
c2lvbkRlc2NyaXB0aW9uUmVxdWVzdCBtX3JlcXVlc3Q7Ci0gICAgV2ViUlRDU2Vzc2lvbkRlc2Ny
aXB0aW9uIG1fcmVzdWx0OwotfTsKLQotY2xhc3MgUlRDU2Vzc2lvbkRlc2NyaXB0aW9uUmVxdWVz
dEZhaWxlZFRhc2sgOiBwdWJsaWMgV2ViTWV0aG9kVGFzazxNb2NrV2ViUlRDUGVlckNvbm5lY3Rp
b25IYW5kbGVyPiB7Ci1wdWJsaWM6Ci0gICAgUlRDU2Vzc2lvbkRlc2NyaXB0aW9uUmVxdWVzdEZh
aWxlZFRhc2soTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlciogb2JqZWN0LCBjb25zdCBX
ZWJSVENTZXNzaW9uRGVzY3JpcHRpb25SZXF1ZXN0JiByZXF1ZXN0KQotICAgICAgICA6IFdlYk1l
dGhvZFRhc2s8TW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcj4ob2JqZWN0KQotICAgICAg
ICAsIG1fcmVxdWVzdChyZXF1ZXN0KQotICAgIHsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQg
cnVuSWZWYWxpZCgpIE9WRVJSSURFCi0gICAgewotICAgICAgICBtX3JlcXVlc3QucmVxdWVzdEZh
aWxlZCgiVEVTVF9FUlJPUiIpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBXZWJSVENTZXNzaW9u
RGVzY3JpcHRpb25SZXF1ZXN0IG1fcmVxdWVzdDsKLX07Ci0KLWNsYXNzIFJUQ1N0YXRzUmVxdWVz
dFN1Y2NlZWRlZFRhc2sgOiBwdWJsaWMgV2ViTWV0aG9kVGFzazxNb2NrV2ViUlRDUGVlckNvbm5l
Y3Rpb25IYW5kbGVyPiB7Ci1wdWJsaWM6Ci0gICAgUlRDU3RhdHNSZXF1ZXN0U3VjY2VlZGVkVGFz
ayhNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyKiBvYmplY3QsIGNvbnN0IFdlYktpdDo6
V2ViUlRDU3RhdHNSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXZWJLaXQ6OldlYlJUQ1N0YXRzUmVz
cG9uc2UmIHJlc3BvbnNlKQotICAgICAgICA6IFdlYk1ldGhvZFRhc2s8TW9ja1dlYlJUQ1BlZXJD
b25uZWN0aW9uSGFuZGxlcj4ob2JqZWN0KQotICAgICAgICAsIG1fcmVxdWVzdChyZXF1ZXN0KQot
ICAgICAgICAsIG1fcmVzcG9uc2UocmVzcG9uc2UpCi0gICAgewotICAgIH0KLQotICAgIHZpcnR1
YWwgdm9pZCBydW5JZlZhbGlkKCkgT1ZFUlJJREUKLSAgICB7Ci0gICAgICAgIG1fcmVxdWVzdC5y
ZXF1ZXN0U3VjY2VlZGVkKG1fcmVzcG9uc2UpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBXZWJL
aXQ6OldlYlJUQ1N0YXRzUmVxdWVzdCBtX3JlcXVlc3Q7Ci0gICAgV2ViS2l0OjpXZWJSVENTdGF0
c1Jlc3BvbnNlIG1fcmVzcG9uc2U7Ci19OwotCi1jbGFzcyBSVENWb2lkUmVxdWVzdFRhc2sgOiBw
dWJsaWMgV2ViTWV0aG9kVGFzazxNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyPiB7Ci1w
dWJsaWM6Ci0gICAgUlRDVm9pZFJlcXVlc3RUYXNrKE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhh
bmRsZXIqIG9iamVjdCwgY29uc3QgV2ViUlRDVm9pZFJlcXVlc3QmIHJlcXVlc3QsIGJvb2wgc3Vj
Y2VlZGVkKQotICAgICAgICA6IFdlYk1ldGhvZFRhc2s8TW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9u
SGFuZGxlcj4ob2JqZWN0KQotICAgICAgICAsIG1fcmVxdWVzdChyZXF1ZXN0KQotICAgICAgICAs
IG1fc3VjY2VlZGVkKHN1Y2NlZWRlZCkKLSAgICB7Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lk
IHJ1bklmVmFsaWQoKSBPVkVSUklERQotICAgIHsKLSAgICAgICAgaWYgKG1fc3VjY2VlZGVkKQot
ICAgICAgICAgICAgbV9yZXF1ZXN0LnJlcXVlc3RTdWNjZWVkZWQoKTsKLSAgICAgICAgZWxzZQot
ICAgICAgICAgICAgbV9yZXF1ZXN0LnJlcXVlc3RGYWlsZWQoIlRFU1RfRVJST1IiKTsKLSAgICB9
Ci0KLXByaXZhdGU6Ci0gICAgV2ViUlRDVm9pZFJlcXVlc3QgbV9yZXF1ZXN0OwotICAgIGJvb2wg
bV9zdWNjZWVkZWQ7Ci19OwotCi1jbGFzcyBSVENQZWVyQ29ubmVjdGlvblN0YXRlVGFzayA6IHB1
YmxpYyBXZWJNZXRob2RUYXNrPE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI+IHsKLXB1
YmxpYzoKLSAgICBSVENQZWVyQ29ubmVjdGlvblN0YXRlVGFzayhNb2NrV2ViUlRDUGVlckNvbm5l
Y3Rpb25IYW5kbGVyKiBvYmplY3QsIFdlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudCog
Y2xpZW50LCBXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQ6OklDRUNvbm5lY3Rpb25T
dGF0ZSBjb25uZWN0aW9uU3RhdGUsIFdlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudDo6
SUNFR2F0aGVyaW5nU3RhdGUgZ2F0aGVyaW5nU3RhdGUpCi0gICAgICAgIDogV2ViTWV0aG9kVGFz
azxNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyPihvYmplY3QpCi0gICAgICAgICwgbV9j
bGllbnQoY2xpZW50KQotICAgICAgICAsIG1fY29ubmVjdGlvblN0YXRlKGNvbm5lY3Rpb25TdGF0
ZSkKLSAgICAgICAgLCBtX2dhdGhlcmluZ1N0YXRlKGdhdGhlcmluZ1N0YXRlKQotICAgIHsKLSAg
ICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgcnVuSWZWYWxpZCgpIE9WRVJSSURFCi0gICAgewotICAg
ICAgICBtX2NsaWVudC0+ZGlkQ2hhbmdlSUNFR2F0aGVyaW5nU3RhdGUobV9nYXRoZXJpbmdTdGF0
ZSk7Ci0gICAgICAgIG1fY2xpZW50LT5kaWRDaGFuZ2VJQ0VDb25uZWN0aW9uU3RhdGUobV9jb25u
ZWN0aW9uU3RhdGUpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBXZWJSVENQZWVyQ29ubmVjdGlv
bkhhbmRsZXJDbGllbnQqIG1fY2xpZW50OwotICAgIFdlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxl
ckNsaWVudDo6SUNFQ29ubmVjdGlvblN0YXRlIG1fY29ubmVjdGlvblN0YXRlOwotICAgIFdlYlJU
Q1BlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudDo6SUNFR2F0aGVyaW5nU3RhdGUgbV9nYXRoZXJp
bmdTdGF0ZTsKLX07Ci0KLWNsYXNzIFJlbW90ZURhdGFDaGFubmVsVGFzayA6IHB1YmxpYyBXZWJN
ZXRob2RUYXNrPE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI+IHsKLXB1YmxpYzoKLSAg
ICBSZW1vdGVEYXRhQ2hhbm5lbFRhc2soTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlciog
b2JqZWN0LCBXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQqIGNsaWVudCkKLSAgICAg
ICAgOiBXZWJNZXRob2RUYXNrPE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI+KG9iamVj
dCkKLSAgICAgICAgLCBtX2NsaWVudChjbGllbnQpCi0gICAgewotICAgIH0KLQotICAgIHZpcnR1
YWwgdm9pZCBydW5JZlZhbGlkKCkgT1ZFUlJJREUKLSAgICB7Ci0gICAgICAgIFdlYlJUQ0RhdGFD
aGFubmVsSGFuZGxlciogcmVtb3RlRGF0YUNoYW5uZWwgPSBuZXcgTW9ja1dlYlJUQ0RhdGFDaGFu
bmVsSGFuZGxlcigiTW9ja1JlbW90ZURhdGFDaGFubmVsIiwgdHJ1ZSk7Ci0gICAgICAgIG1fY2xp
ZW50LT5kaWRBZGRSZW1vdGVEYXRhQ2hhbm5lbChyZW1vdGVEYXRhQ2hhbm5lbCk7Ci0gICAgfQot
Ci1wcml2YXRlOgotICAgIFdlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudCogbV9jbGll
bnQ7Ci19OwotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotTW9ja1dlYlJUQ1BlZXJDb25uZWN0
aW9uSGFuZGxlcjo6TW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcihXZWJSVENQZWVyQ29u
bmVjdGlvbkhhbmRsZXJDbGllbnQqIGNsaWVudCkKLSAgICA6IG1fY2xpZW50KGNsaWVudCkKLSAg
ICAsIG1fc3RvcHBlZChmYWxzZSkKLSAgICAsIG1fc3RyZWFtQ291bnQoMCkKLXsKLX0KLQotYm9v
bCBNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyOjppbml0aWFsaXplKGNvbnN0IFdlYlJU
Q0NvbmZpZ3VyYXRpb24mLCBjb25zdCBXZWJNZWRpYUNvbnN0cmFpbnRzJiBjb25zdHJhaW50cykK
LXsKLSAgICBpZiAoTW9ja0NvbnN0cmFpbnRzOjp2ZXJpZnlDb25zdHJhaW50cyhjb25zdHJhaW50
cykpIHsKLSAgICAgICAgcG9zdFRhc2sobmV3IFJUQ1BlZXJDb25uZWN0aW9uU3RhdGVUYXNrKHRo
aXMsIG1fY2xpZW50LCBXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQ6OklDRUNvbm5l
Y3Rpb25TdGF0ZUNvbXBsZXRlZCwgV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50OjpJ
Q0VHYXRoZXJpbmdTdGF0ZUNvbXBsZXRlKSk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0K
LQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotdm9pZCBNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25I
YW5kbGVyOjpjcmVhdGVPZmZlcihjb25zdCBXZWJSVENTZXNzaW9uRGVzY3JpcHRpb25SZXF1ZXN0
JiByZXF1ZXN0LCBjb25zdCBXZWJNZWRpYUNvbnN0cmFpbnRzJiBjb25zdHJhaW50cykKLXsKLSAg
ICBXZWJTdHJpbmcgc2hvdWxkU3VjY2VlZDsKLSAgICBpZiAoY29uc3RyYWludHMuZ2V0TWFuZGF0
b3J5Q29uc3RyYWludFZhbHVlKCJzdWNjZWVkIiwgc2hvdWxkU3VjY2VlZCkgJiYgc2hvdWxkU3Vj
Y2VlZCA9PSAidHJ1ZSIpIHsKLSAgICAgICAgV2ViUlRDU2Vzc2lvbkRlc2NyaXB0aW9uIHNlc3Np
b25EZXNjcmlwdGlvbjsKLSAgICAgICAgc2Vzc2lvbkRlc2NyaXB0aW9uLmluaXRpYWxpemUoIm9m
ZmVyIiwgImxvY2FsIik7Ci0gICAgICAgIHBvc3RUYXNrKG5ldyBSVENTZXNzaW9uRGVzY3JpcHRp
b25SZXF1ZXN0U3VjY2VkZWRUYXNrKHRoaXMsIHJlcXVlc3QsIHNlc3Npb25EZXNjcmlwdGlvbikp
OwotICAgIH0gZWxzZQotICAgICAgICBwb3N0VGFzayhuZXcgUlRDU2Vzc2lvbkRlc2NyaXB0aW9u
UmVxdWVzdEZhaWxlZFRhc2sodGhpcywgcmVxdWVzdCkpOwotfQotCi12b2lkIE1vY2tXZWJSVENQ
ZWVyQ29ubmVjdGlvbkhhbmRsZXI6OmNyZWF0ZUFuc3dlcihjb25zdCBXZWJSVENTZXNzaW9uRGVz
Y3JpcHRpb25SZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXZWJNZWRpYUNvbnN0cmFpbnRzJikKLXsK
LSAgICBpZiAoIW1fcmVtb3RlRGVzY3JpcHRpb24uaXNOdWxsKCkpIHsKLSAgICAgICAgV2ViUlRD
U2Vzc2lvbkRlc2NyaXB0aW9uIHNlc3Npb25EZXNjcmlwdGlvbjsKLSAgICAgICAgc2Vzc2lvbkRl
c2NyaXB0aW9uLmluaXRpYWxpemUoImFuc3dlciIsICJsb2NhbCIpOwotICAgICAgICBwb3N0VGFz
ayhuZXcgUlRDU2Vzc2lvbkRlc2NyaXB0aW9uUmVxdWVzdFN1Y2NlZGVkVGFzayh0aGlzLCByZXF1
ZXN0LCBzZXNzaW9uRGVzY3JpcHRpb24pKTsKLSAgICB9IGVsc2UKLSAgICAgICAgcG9zdFRhc2so
bmV3IFJUQ1Nlc3Npb25EZXNjcmlwdGlvblJlcXVlc3RGYWlsZWRUYXNrKHRoaXMsIHJlcXVlc3Qp
KTsKLX0KLQotdm9pZCBNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyOjpzZXRMb2NhbERl
c2NyaXB0aW9uKGNvbnN0IFdlYlJUQ1ZvaWRSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXZWJSVENT
ZXNzaW9uRGVzY3JpcHRpb24mIGxvY2FsRGVzY3JpcHRpb24pCi17Ci0gICAgaWYgKCFsb2NhbERl
c2NyaXB0aW9uLmlzTnVsbCgpICYmIGxvY2FsRGVzY3JpcHRpb24uc2RwKCkgPT0gImxvY2FsIikg
ewotICAgICAgICBtX2xvY2FsRGVzY3JpcHRpb24gPSBsb2NhbERlc2NyaXB0aW9uOwotICAgICAg
ICBwb3N0VGFzayhuZXcgUlRDVm9pZFJlcXVlc3RUYXNrKHRoaXMsIHJlcXVlc3QsIHRydWUpKTsK
LSAgICB9IGVsc2UKLSAgICAgICAgcG9zdFRhc2sobmV3IFJUQ1ZvaWRSZXF1ZXN0VGFzayh0aGlz
LCByZXF1ZXN0LCBmYWxzZSkpOwotfQotCi12b2lkIE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhh
bmRsZXI6OnNldFJlbW90ZURlc2NyaXB0aW9uKGNvbnN0IFdlYlJUQ1ZvaWRSZXF1ZXN0JiByZXF1
ZXN0LCBjb25zdCBXZWJSVENTZXNzaW9uRGVzY3JpcHRpb24mIHJlbW90ZURlc2NyaXB0aW9uKQot
ewotICAgIGlmICghcmVtb3RlRGVzY3JpcHRpb24uaXNOdWxsKCkgJiYgcmVtb3RlRGVzY3JpcHRp
b24uc2RwKCkgPT0gInJlbW90ZSIpIHsKLSAgICAgICAgbV9yZW1vdGVEZXNjcmlwdGlvbiA9IHJl
bW90ZURlc2NyaXB0aW9uOwotICAgICAgICBwb3N0VGFzayhuZXcgUlRDVm9pZFJlcXVlc3RUYXNr
KHRoaXMsIHJlcXVlc3QsIHRydWUpKTsKLSAgICB9IGVsc2UKLSAgICAgICAgcG9zdFRhc2sobmV3
IFJUQ1ZvaWRSZXF1ZXN0VGFzayh0aGlzLCByZXF1ZXN0LCBmYWxzZSkpOwotfQotCi1XZWJSVENT
ZXNzaW9uRGVzY3JpcHRpb24gTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcjo6bG9jYWxE
ZXNjcmlwdGlvbigpCi17Ci0gICAgcmV0dXJuIG1fbG9jYWxEZXNjcmlwdGlvbjsKLX0KLQotV2Vi
UlRDU2Vzc2lvbkRlc2NyaXB0aW9uIE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI6OnJl
bW90ZURlc2NyaXB0aW9uKCkKLXsKLSAgICByZXR1cm4gbV9yZW1vdGVEZXNjcmlwdGlvbjsKLX0K
LQotYm9vbCBNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyOjp1cGRhdGVJQ0UoY29uc3Qg
V2ViUlRDQ29uZmlndXJhdGlvbiYsIGNvbnN0IFdlYk1lZGlhQ29uc3RyYWludHMmKQotewotICAg
IHJldHVybiB0cnVlOwotfQotCi1ib29sIE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI6
OmFkZElDRUNhbmRpZGF0ZShjb25zdCBXZWJSVENJQ0VDYW5kaWRhdGUmIGljZUNhbmRpZGF0ZSkK
LXsKLSAgICBtX2NsaWVudC0+ZGlkR2VuZXJhdGVJQ0VDYW5kaWRhdGUoaWNlQ2FuZGlkYXRlKTsK
LSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5k
bGVyOjphZGRTdHJlYW0oY29uc3QgV2ViTWVkaWFTdHJlYW0mIHN0cmVhbSwgY29uc3QgV2ViTWVk
aWFDb25zdHJhaW50cyYpCi17Ci0gICAgbV9zdHJlYW1Db3VudCArPSAxOwotICAgIG1fY2xpZW50
LT5kaWRBZGRSZW1vdGVTdHJlYW0oc3RyZWFtKTsKLSAgICBtX2NsaWVudC0+bmVnb3RpYXRpb25O
ZWVkZWQoKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdm9pZCBNb2NrV2ViUlRDUGVlckNvbm5l
Y3Rpb25IYW5kbGVyOjpyZW1vdmVTdHJlYW0oY29uc3QgV2ViTWVkaWFTdHJlYW0mIHN0cmVhbSkK
LXsKLSAgICBtX3N0cmVhbUNvdW50IC09IDE7Ci0gICAgbV9jbGllbnQtPmRpZFJlbW92ZVJlbW90
ZVN0cmVhbShzdHJlYW0pOwotICAgIG1fY2xpZW50LT5uZWdvdGlhdGlvbk5lZWRlZCgpOwotfQot
Ci12b2lkIE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI6OmdldFN0YXRzKGNvbnN0IFdl
YlJUQ1N0YXRzUmVxdWVzdCYgcmVxdWVzdCkKLXsKLSAgICBXZWJSVENTdGF0c1Jlc3BvbnNlIHJl
c3BvbnNlID0gcmVxdWVzdC5jcmVhdGVSZXNwb25zZSgpOwotICAgIGRvdWJsZSBjdXJyZW50RGF0
ZSA9IFdURjo6anNDdXJyZW50VGltZSgpOwotICAgIGlmIChyZXF1ZXN0Lmhhc1NlbGVjdG9yKCkp
IHsKLSAgICAgICAgV2ViTWVkaWFTdHJlYW0gc3RyZWFtID0gcmVxdWVzdC5zdHJlYW0oKTsKLSAg
ICAgICAgLy8gRklYTUU6IFRoZXJlIGlzIG5vIGNoZWNrIHRoYXQgdGhlIGZldGNoZWQgdmFsdWVz
IGFyZSB2YWxpZC4KLSAgICAgICAgc2l6ZV90IHJlcG9ydEluZGV4ID0gcmVzcG9uc2UuYWRkUmVw
b3J0KCk7Ci0gICAgICAgIHJlc3BvbnNlLmFkZEVsZW1lbnQocmVwb3J0SW5kZXgsIHRydWUsIGN1
cnJlbnREYXRlKTsKLSAgICAgICAgcmVzcG9uc2UuYWRkU3RhdGlzdGljKHJlcG9ydEluZGV4LCB0
cnVlLCAidHlwZSIsICJ2aWRlbyIpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgbV9zdHJlYW1Db3VudDsgKytpKSB7Ci0gICAgICAgICAgICBzaXplX3QgcmVwb3J0
SW5kZXggPSByZXNwb25zZS5hZGRSZXBvcnQoKTsKLSAgICAgICAgICAgIHJlc3BvbnNlLmFkZEVs
ZW1lbnQocmVwb3J0SW5kZXgsIHRydWUsIGN1cnJlbnREYXRlKTsKLSAgICAgICAgICAgIHJlc3Bv
bnNlLmFkZFN0YXRpc3RpYyhyZXBvcnRJbmRleCwgdHJ1ZSwgInR5cGUiLCAiYXVkaW8iKTsKLSAg
ICAgICAgICAgIHJlcG9ydEluZGV4ID0gcmVzcG9uc2UuYWRkUmVwb3J0KCk7Ci0gICAgICAgICAg
ICByZXNwb25zZS5hZGRFbGVtZW50KHJlcG9ydEluZGV4LCB0cnVlLCBjdXJyZW50RGF0ZSk7Ci0g
ICAgICAgICAgICByZXNwb25zZS5hZGRTdGF0aXN0aWMocmVwb3J0SW5kZXgsIHRydWUsICJ0eXBl
IiwgInZpZGVvIik7Ci0gICAgICAgICAgICAvLyBXZSBhZGQgYW4gZW1wdHkgcmVtb3RlIHJlcG9y
dCBlbGVtZW50LgotICAgICAgICAgICAgcmVzcG9uc2UuYWRkRWxlbWVudChyZXBvcnRJbmRleCwg
ZmFsc2UsIGN1cnJlbnREYXRlKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBwb3N0VGFzayhuZXcg
UlRDU3RhdHNSZXF1ZXN0U3VjY2VlZGVkVGFzayh0aGlzLCByZXF1ZXN0LCByZXNwb25zZSkpOwot
fQotCi1XZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIqIE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhh
bmRsZXI6OmNyZWF0ZURhdGFDaGFubmVsKGNvbnN0IFdlYlN0cmluZyYgbGFiZWwsIGJvb2wgcmVs
aWFibGUpCi17Ci0gICAgcG9zdFRhc2sobmV3IFJlbW90ZURhdGFDaGFubmVsVGFzayh0aGlzLCBt
X2NsaWVudCkpOwotCi0gICAgcmV0dXJuIG5ldyBNb2NrV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVy
KGxhYmVsLCByZWxpYWJsZSk7Ci19Ci0KLVdlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyKiBNb2NrV2Vi
UlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyOjpjcmVhdGVEVE1GU2VuZGVyKGNvbnN0IFdlYk1lZGlh
U3RyZWFtVHJhY2smIHRyYWNrKQotewotICAgIHJldHVybiBuZXcgTW9ja1dlYlJUQ0RUTUZTZW5k
ZXJIYW5kbGVyKHRyYWNrKTsKLX0KLQotdm9pZCBNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5k
bGVyOjpzdG9wKCkKLXsKLSAgICBtX3N0b3BwZWQgPSB0cnVlOwotfQotCi0jZW5kaWYgLy8gRU5B
QkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL01vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaCBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL01vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMzg0MWFhYmNlNmUxMGFjYmQ4MmY3ZTY2MTI4ZWIyM2NjNmY1
YmRhMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVy
LmgKKysrIC9kZXYvbnVsbApAQCAtMSw4NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
LSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
LSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBNb2NrV2ViUlRDUGVlckNv
bm5lY3Rpb25IYW5kbGVyX2gKLSNkZWZpbmUgTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxl
cl9oCi0KLSNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotCi0jaW5jbHVkZSAiV2ViVGFzay5oIgot
I2luY2x1ZGUgPHB1YmxpYy9XZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaD4KLSNpbmNsdWRl
IDxwdWJsaWMvV2ViUlRDU2Vzc2lvbkRlc2NyaXB0aW9uLmg+Ci0jaW5jbHVkZSA8cHVibGljL1dl
YlJUQ1Nlc3Npb25EZXNjcmlwdGlvblJlcXVlc3QuaD4KLSNpbmNsdWRlIDxwdWJsaWMvV2ViUlRD
U3RhdHNSZXF1ZXN0Lmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotY2xhc3MgV2ViUlRDUGVlckNv
bm5lY3Rpb25IYW5kbGVyQ2xpZW50OwotfTsKLQotY2xhc3MgTW9ja1dlYlJUQ1BlZXJDb25uZWN0
aW9uSGFuZGxlciA6IHB1YmxpYyBXZWJLaXQ6OldlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlciB7
Ci1wdWJsaWM6Ci0gICAgZXhwbGljaXQgTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcihX
ZWJLaXQ6OldlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudCopOwotCi0gICAgdmlydHVh
bCBib29sIGluaXRpYWxpemUoY29uc3QgV2ViS2l0OjpXZWJSVENDb25maWd1cmF0aW9uJiwgY29u
c3QgV2ViS2l0OjpXZWJNZWRpYUNvbnN0cmFpbnRzJikgT1ZFUlJJREU7Ci0KLSAgICB2aXJ0dWFs
IHZvaWQgY3JlYXRlT2ZmZXIoY29uc3QgV2ViS2l0OjpXZWJSVENTZXNzaW9uRGVzY3JpcHRpb25S
ZXF1ZXN0JiwgY29uc3QgV2ViS2l0OjpXZWJNZWRpYUNvbnN0cmFpbnRzJikgT1ZFUlJJREU7Ci0g
ICAgdmlydHVhbCB2b2lkIGNyZWF0ZUFuc3dlcihjb25zdCBXZWJLaXQ6OldlYlJUQ1Nlc3Npb25E
ZXNjcmlwdGlvblJlcXVlc3QmLCBjb25zdCBXZWJLaXQ6OldlYk1lZGlhQ29uc3RyYWludHMmKSBP
VkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0TG9jYWxEZXNjcmlwdGlvbihjb25zdCBXZWJL
aXQ6OldlYlJUQ1ZvaWRSZXF1ZXN0JiwgY29uc3QgV2ViS2l0OjpXZWJSVENTZXNzaW9uRGVzY3Jp
cHRpb24mKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0UmVtb3RlRGVzY3JpcHRpb24o
Y29uc3QgV2ViS2l0OjpXZWJSVENWb2lkUmVxdWVzdCYsIGNvbnN0IFdlYktpdDo6V2ViUlRDU2Vz
c2lvbkRlc2NyaXB0aW9uJikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBXZWJLaXQ6OldlYlJUQ1Nl
c3Npb25EZXNjcmlwdGlvbiBsb2NhbERlc2NyaXB0aW9uKCkgT1ZFUlJJREU7Ci0gICAgdmlydHVh
bCBXZWJLaXQ6OldlYlJUQ1Nlc3Npb25EZXNjcmlwdGlvbiByZW1vdGVEZXNjcmlwdGlvbigpIE9W
RVJSSURFOwotICAgIHZpcnR1YWwgYm9vbCB1cGRhdGVJQ0UoY29uc3QgV2ViS2l0OjpXZWJSVEND
b25maWd1cmF0aW9uJiwgY29uc3QgV2ViS2l0OjpXZWJNZWRpYUNvbnN0cmFpbnRzJikgT1ZFUlJJ
REU7Ci0gICAgdmlydHVhbCBib29sIGFkZElDRUNhbmRpZGF0ZShjb25zdCBXZWJLaXQ6OldlYlJU
Q0lDRUNhbmRpZGF0ZSYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgYm9vbCBhZGRTdHJlYW0oY29u
c3QgV2ViS2l0OjpXZWJNZWRpYVN0cmVhbSYsIGNvbnN0IFdlYktpdDo6V2ViTWVkaWFDb25zdHJh
aW50cyYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVTdHJlYW0oY29uc3QgV2Vi
S2l0OjpXZWJNZWRpYVN0cmVhbSYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBnZXRTdGF0
cyhjb25zdCBXZWJLaXQ6OldlYlJUQ1N0YXRzUmVxdWVzdCYpIE9WRVJSSURFOwotICAgIHZpcnR1
YWwgV2ViS2l0OjpXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIqIGNyZWF0ZURhdGFDaGFubmVsKGNv
bnN0IFdlYktpdDo6V2ViU3RyaW5nJiBsYWJlbCwgYm9vbCByZWxpYWJsZSkgT1ZFUlJJREU7Ci0g
ICAgdmlydHVhbCBXZWJLaXQ6OldlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyKiBjcmVhdGVEVE1GU2Vu
ZGVyKGNvbnN0IFdlYktpdDo6V2ViTWVkaWFTdHJlYW1UcmFjayYpIE9WRVJSSURFOwotICAgIHZp
cnR1YWwgdm9pZCBzdG9wKCkgT1ZFUlJJREU7Ci0KLSAgICAvLyBXZWJUYXNrIHJlbGF0ZWQgbWV0
aG9kcwotICAgIFdlYlRlc3RSdW5uZXI6OldlYlRhc2tMaXN0KiB0YXNrTGlzdCgpIHsgcmV0dXJu
ICZtX3Rhc2tMaXN0OyB9Ci0KLXByaXZhdGU6Ci0gICAgTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9u
SGFuZGxlcigpIHsgfQotCi0gICAgV2ViS2l0OjpXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJD
bGllbnQqIG1fY2xpZW50OwotICAgIGJvb2wgbV9zdG9wcGVkOwotICAgIFdlYlRlc3RSdW5uZXI6
OldlYlRhc2tMaXN0IG1fdGFza0xpc3Q7Ci0gICAgV2ViS2l0OjpXZWJSVENTZXNzaW9uRGVzY3Jp
cHRpb24gbV9sb2NhbERlc2NyaXB0aW9uOwotICAgIFdlYktpdDo6V2ViUlRDU2Vzc2lvbkRlc2Ny
aXB0aW9uIG1fcmVtb3RlRGVzY3JpcHRpb247Ci0gICAgaW50IG1fc3RyZWFtQ291bnQ7Ci19Owot
Ci0jZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKLQotI2VuZGlmIC8vIE1vY2tXZWJSVENQ
ZWVyQ29ubmVjdGlvbkhhbmRsZXJfaAotCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0SW50ZXJmYWNlcy5oIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdEludGVyZmFj
ZXMuaAppbmRleCA5ODZjYjhmNzQxYTg5MTViMDM0MWM2ZWYwN2Y5OTRkOTJmYzQwNTZlLi4wMDYy
MDNjY2EyMGFiMmVhMDk4NDE3NTA2MGU2ODQ4ZmY3OGM0MDQwIDEwMDY0NAotLS0gYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0SW50ZXJmYWNl
cy5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGlj
L1dlYlRlc3RJbnRlcmZhY2VzLmgKQEAgLTM2LDYgKzM2LDEwIEBACiAKIG5hbWVzcGFjZSBXZWJL
aXQgewogY2xhc3MgV2ViRnJhbWU7CitjbGFzcyBXZWJNZWRpYVN0cmVhbUNlbnRlcjsKK2NsYXNz
IFdlYk1lZGlhU3RyZWFtQ2VudGVyQ2xpZW50OworY2xhc3MgV2ViUlRDUGVlckNvbm5lY3Rpb25I
YW5kbGVyOworY2xhc3MgV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50OwogY2xhc3Mg
V2ViVVJMOwogY2xhc3MgV2ViVmlldzsKIH0KQEAgLTYwLDYgKzY0LDkgQEAgcHVibGljOgogCiAg
ICAgV2ViVGVzdFJ1bm5lciogdGVzdFJ1bm5lcigpOwogCisgICAgV2ViS2l0OjpXZWJNZWRpYVN0
cmVhbUNlbnRlciogY3JlYXRlTWVkaWFTdHJlYW1DZW50ZXIoV2ViS2l0OjpXZWJNZWRpYVN0cmVh
bUNlbnRlckNsaWVudCopOworICAgIFdlYktpdDo6V2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVy
KiBjcmVhdGVXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIoV2ViS2l0OjpXZWJSVENQZWVyQ29u
bmVjdGlvbkhhbmRsZXJDbGllbnQqKTsKKwogI2lmIFdFQlRFU1RSVU5ORVJfSU1QTEVNRU5UQVRJ
T04KICAgICBUZXN0SW50ZXJmYWNlcyogdGVzdEludGVyZmFjZXMoKTsKICNlbmRpZgpkaWZmIC0t
Z2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2Vi
VGVzdFByb3h5LmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1
YmxpYy9XZWJUZXN0UHJveHkuaAppbmRleCBmNTViZTdhYjIwYzI2ZjRlNjI3NmRlOTc0MDllNWEz
NDQ4YWNhYjAwLi4zNTBlMTM3MTQ5NjVmNzU5ZjBjMmYwYjRkMmQxMTEwNTNkZGRlZjhmIDEwMDY0
NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9X
ZWJUZXN0UHJveHkuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVu
bmVyL3B1YmxpYy9XZWJUZXN0UHJveHkuaApAQCAtNjMsNiArNjMsNyBAQCBjbGFzcyBXZWJTdHJp
bmc7CiBjbGFzcyBXZWJVUkw7CiBjbGFzcyBXZWJVUkxSZXF1ZXN0OwogY2xhc3MgV2ViVVJMUmVz
cG9uc2U7CitjbGFzcyBXZWJVc2VyTWVkaWFDbGllbnQ7CiBjbGFzcyBXZWJWaWV3Owogc3RydWN0
IFdlYkNvbnNvbGVNZXNzYWdlOwogc3RydWN0IFdlYkNvbnRleHRNZW51RGF0YTsKQEAgLTc5LDYg
KzgwLDcgQEAgY2xhc3MgVGVzdEludGVyZmFjZXM7CiBjbGFzcyBXZWJUZXN0RGVsZWdhdGU7CiBj
bGFzcyBXZWJUZXN0SW50ZXJmYWNlczsKIGNsYXNzIFdlYlRlc3RSdW5uZXI7CitjbGFzcyBXZWJV
c2VyTWVkaWFDbGllbnRNb2NrOwogCiBjbGFzcyBXRUJURVNUUlVOTkVSX0VYUE9SVCBXZWJUZXN0
UHJveHlCYXNlIHsKIHB1YmxpYzoKQEAgLTEyNSw2ICsxMjcsNyBAQCBwcm90ZWN0ZWQ6CiAgICAg
Ym9vbCBpc1NtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCgpOwogICAgIGJvb2wgaXNTZWxlY3RUcmFp
bGluZ1doaXRlc3BhY2VFbmFibGVkKCk7CiAgICAgdm9pZCBzaG93Q29udGV4dE1lbnUoV2ViS2l0
OjpXZWJGcmFtZSosIGNvbnN0IFdlYktpdDo6V2ViQ29udGV4dE1lbnVEYXRhJik7CisgICAgV2Vi
S2l0OjpXZWJVc2VyTWVkaWFDbGllbnQqIHVzZXJNZWRpYUNsaWVudCgpOwogICAgIHZvaWQgcHJp
bnRQYWdlKFdlYktpdDo6V2ViRnJhbWUqKTsKIAogICAgIHZvaWQgd2lsbFBlcmZvcm1DbGllbnRS
ZWRpcmVjdChXZWJLaXQ6OldlYkZyYW1lKiwgY29uc3QgV2ViS2l0OjpXZWJVUkwmIGZyb20sIGNv
bnN0IFdlYktpdDo6V2ViVVJMJiB0bywgZG91YmxlIGludGVydmFsLCBkb3VibGUgZmlyZV90aW1l
KTsKQEAgLTE2Nyw2ICsxNzAsNyBAQCBwcml2YXRlOgogICAgIFdlYlRlc3REZWxlZ2F0ZSogbV9k
ZWxlZ2F0ZTsKIAogICAgIHN0ZDo6YXV0b19wdHI8U3BlbGxDaGVja0NsaWVudD4gbV9zcGVsbGNo
ZWNrOworICAgIHN0ZDo6YXV0b19wdHI8V2ViVXNlck1lZGlhQ2xpZW50TW9jaz4gbV91c2VyTWVk
aWFDbGllbnQ7CiAKICAgICBXZWJLaXQ6OldlYlJlY3QgbV9wYWludFJlY3Q7CiAgICAgc3RkOjpt
YXA8dW5zaWduZWQsIHN0ZDo6c3RyaW5nPiBtX3Jlc291cmNlSWRlbnRpZmllck1hcDsKQEAgLTMy
Myw2ICszMjcsMTAgQEAgcHVibGljOgogICAgICAgICBXZWJUZXN0UHJveHlCYXNlOjpzaG93Q29u
dGV4dE1lbnUoZnJhbWUsIGNvbnRleHRNZW51RGF0YSk7CiAgICAgICAgIEJhc2U6OnNob3dDb250
ZXh0TWVudShmcmFtZSwgY29udGV4dE1lbnVEYXRhKTsKICAgICB9CisgICAgdmlydHVhbCBXZWJL
aXQ6OldlYlVzZXJNZWRpYUNsaWVudCogdXNlck1lZGlhQ2xpZW50KCkKKyAgICB7CisgICAgICAg
IHJldHVybiBXZWJUZXN0UHJveHlCYXNlOjp1c2VyTWVkaWFDbGllbnQoKTsKKyAgICB9CiAgICAg
dmlydHVhbCB2b2lkIHByaW50UGFnZShXZWJLaXQ6OldlYkZyYW1lKiBmcmFtZSkKICAgICB7CiAg
ICAgICAgIFdlYlRlc3RQcm94eUJhc2U6OnByaW50UGFnZShmcmFtZSk7CmRpZmYgLS1naXQgYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9Nb2NrQ29uc3RyYWlu
dHMuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvTW9j
a0NvbnN0cmFpbnRzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MzRkZWVhZDhhYWQyNTJmZmU3NTBkNGQyMDFl
MWU4NTQxOGVhN2ZkCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vVGVzdFJ1bm5lci9zcmMvTW9ja0NvbnN0cmFpbnRzLmNwcApAQCAtMCwwICsxLDc5IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
KyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1vY2tDb25zdHJhaW50cy5oIgorCisjaW5j
bHVkZSA8cHVibGljL1dlYk1lZGlhQ29uc3RyYWludHMuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdl
YktpdDsKKworbmFtZXNwYWNlIFdlYlRlc3RSdW5uZXIgeworCituYW1lc3BhY2UgeworCitib29s
IGlzU3VwcG9ydGVkKGNvbnN0IFdlYlN0cmluZyYgY29uc3RyYWludCkKK3sKKyAgICByZXR1cm4g
Y29uc3RyYWludCA9PSAidmFsaWRfYW5kX3N1cHBvcnRlZF8xIiB8fCBjb25zdHJhaW50ID09ICJ2
YWxpZF9hbmRfc3VwcG9ydGVkXzIiOworfQorCitib29sIGlzVmFsaWQoY29uc3QgV2ViU3RyaW5n
JiBjb25zdHJhaW50KQoreworICAgIHJldHVybiBpc1N1cHBvcnRlZChjb25zdHJhaW50KSB8fCBj
b25zdHJhaW50ID09ICJ2YWxpZF9idXRfdW5zdXBwb3J0ZWRfMSIgfHwgY29uc3RyYWludCA9PSAi
dmFsaWRfYnV0X3Vuc3VwcG9ydGVkXzIiOworfQorCit9CisKK2Jvb2wgTW9ja0NvbnN0cmFpbnRz
Ojp2ZXJpZnlDb25zdHJhaW50cyhjb25zdCBXZWJNZWRpYUNvbnN0cmFpbnRzJiBjb25zdHJhaW50
cykKK3sKKyAgICBXZWJWZWN0b3I8V2ViTWVkaWFDb25zdHJhaW50PiBtYW5kYXRvcnlDb25zdHJh
aW50czsKKyAgICBjb25zdHJhaW50cy5nZXRNYW5kYXRvcnlDb25zdHJhaW50cyhtYW5kYXRvcnlD
b25zdHJhaW50cyk7CisgICAgaWYgKG1hbmRhdG9yeUNvbnN0cmFpbnRzLnNpemUoKSkgeworICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1hbmRhdG9yeUNvbnN0cmFpbnRzLnNpemUoKTsg
KytpKSB7CisgICAgICAgICAgICBjb25zdCBXZWJNZWRpYUNvbnN0cmFpbnQmIGN1cnIgPSBtYW5k
YXRvcnlDb25zdHJhaW50c1tpXTsKKyAgICAgICAgICAgIGlmICghaXNTdXBwb3J0ZWQoY3Vyci5t
X25hbWUpIHx8IGN1cnIubV92YWx1ZSAhPSAiMSIpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICB9CisgICAgfQorCisgICAgV2ViVmVjdG9yPFdlYk1lZGlhQ29uc3RyYWlu
dD4gb3B0aW9uYWxDb25zdHJhaW50czsKKyAgICBjb25zdHJhaW50cy5nZXRPcHRpb25hbENvbnN0
cmFpbnRzKG9wdGlvbmFsQ29uc3RyYWludHMpOworICAgIGlmIChvcHRpb25hbENvbnN0cmFpbnRz
LnNpemUoKSkgeworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG9wdGlvbmFsQ29uc3Ry
YWludHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIGNvbnN0IFdlYk1lZGlhQ29uc3RyYWlu
dCYgY3VyciA9IG9wdGlvbmFsQ29uc3RyYWludHNbaV07CisgICAgICAgICAgICBpZiAoIWlzVmFs
aWQoY3Vyci5tX25hbWUpIHx8IGN1cnIubV92YWx1ZSAhPSAiMCIpCisgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisK
K30KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIv
c3JjL01vY2tDb25zdHJhaW50cy5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVz
dFJ1bm5lci9zcmMvTW9ja0NvbnN0cmFpbnRzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjcxMDFjNDNjNjkyZDNk
YzE3MDhmYTFlYjQyZTNiYzA1YzU1YTVjMgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL01vY2tDb25zdHJhaW50cy5oCkBAIC0w
LDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1l
dDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIE1vY2tDb25zdHJhaW50c19oCisjZGVmaW5lIE1vY2tDb25zdHJh
aW50c19oCisKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgV2ViTWVkaWFDb25zdHJhaW50czsK
K30KKworbmFtZXNwYWNlIFdlYlRlc3RSdW5uZXIgeworCitjbGFzcyBNb2NrQ29uc3RyYWludHMg
eworcHVibGljOgorICAgIHN0YXRpYyBib29sIHZlcmlmeUNvbnN0cmFpbnRzKGNvbnN0IFdlYktp
dDo6V2ViTWVkaWFDb25zdHJhaW50cyYpOworfTsKKworfQorCisjZW5kaWYgLy8gTW9ja0NvbnN0
cmFpbnRzX2gKKwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVz
dFJ1bm5lci9zcmMvTW9ja1dlYk1lZGlhU3RyZWFtQ2VudGVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL01vY2tXZWJNZWRpYVN0cmVhbUNlbnRlci5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYjk4ZTQzNWUxY2JiZWQ1ODQ0MDY0YTg3MDkwZjRjYzQ0ODczZDQxYQot
LS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5u
ZXIvc3JjL01vY2tXZWJNZWRpYVN0cmVhbUNlbnRlci5jcHAKQEAgLTAsMCArMSwxMTEgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICog
ZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTW9ja1dlYk1lZGlhU3RyZWFtQ2VudGVyLmgiCisK
KyNpbmNsdWRlIDxwdWJsaWMvV2ViQXVkaW9EZXN0aW5hdGlvbkNvbnN1bWVyLmg+CisjaW5jbHVk
ZSA8cHVibGljL1dlYk1lZGlhU3RyZWFtLmg+CisjaW5jbHVkZSA8cHVibGljL1dlYk1lZGlhU3Ry
ZWFtQ2VudGVyQ2xpZW50Lmg+CisjaW5jbHVkZSA8cHVibGljL1dlYk1lZGlhU3RyZWFtU291cmNl
Lmg+CisjaW5jbHVkZSA8cHVibGljL1dlYk1lZGlhU3RyZWFtU291cmNlc1JlcXVlc3QuaD4KKyNp
bmNsdWRlIDxwdWJsaWMvV2ViTWVkaWFTdHJlYW1UcmFjay5oPgorI2luY2x1ZGUgPHB1YmxpYy9X
ZWJWZWN0b3IuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworbmFtZXNwYWNlIFdlYlRl
c3RSdW5uZXIgeworCitNb2NrV2ViTWVkaWFTdHJlYW1DZW50ZXI6Ok1vY2tXZWJNZWRpYVN0cmVh
bUNlbnRlcihXZWJNZWRpYVN0cmVhbUNlbnRlckNsaWVudCogY2xpZW50KQoreworfQorCit2b2lk
IE1vY2tXZWJNZWRpYVN0cmVhbUNlbnRlcjo6cXVlcnlNZWRpYVN0cmVhbVNvdXJjZXMoY29uc3Qg
V2ViTWVkaWFTdHJlYW1Tb3VyY2VzUmVxdWVzdCYgcmVxdWVzdCkKK3sKKyAgICBXZWJWZWN0b3I8
V2ViTWVkaWFTdHJlYW1Tb3VyY2U+IGF1ZGlvU291cmNlcywgdmlkZW9Tb3VyY2VzOworICAgIHJl
cXVlc3QuZGlkQ29tcGxldGVRdWVyeShhdWRpb1NvdXJjZXMsIHZpZGVvU291cmNlcyk7Cit9CisK
K3ZvaWQgTW9ja1dlYk1lZGlhU3RyZWFtQ2VudGVyOjpkaWRFbmFibGVNZWRpYVN0cmVhbVRyYWNr
KGNvbnN0IFdlYk1lZGlhU3RyZWFtJiwgY29uc3QgV2ViTWVkaWFTdHJlYW1UcmFjayYgY29tcG9u
ZW50KQoreworICAgIGNvbXBvbmVudC5zb3VyY2UoKS5zZXRSZWFkeVN0YXRlKFdlYk1lZGlhU3Ry
ZWFtU291cmNlOjpSZWFkeVN0YXRlTGl2ZSk7Cit9CisKK3ZvaWQgTW9ja1dlYk1lZGlhU3RyZWFt
Q2VudGVyOjpkaWREaXNhYmxlTWVkaWFTdHJlYW1UcmFjayhjb25zdCBXZWJNZWRpYVN0cmVhbSYs
IGNvbnN0IFdlYk1lZGlhU3RyZWFtVHJhY2smIGNvbXBvbmVudCkKK3sKKyAgICBjb21wb25lbnQu
c291cmNlKCkuc2V0UmVhZHlTdGF0ZShXZWJNZWRpYVN0cmVhbVNvdXJjZTo6UmVhZHlTdGF0ZU11
dGVkKTsKK30KKworYm9vbCBNb2NrV2ViTWVkaWFTdHJlYW1DZW50ZXI6OmRpZEFkZE1lZGlhU3Ry
ZWFtVHJhY2soY29uc3QgV2ViTWVkaWFTdHJlYW0mLCBjb25zdCBXZWJNZWRpYVN0cmVhbVRyYWNr
JikKK3sKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBNb2NrV2ViTWVkaWFTdHJlYW1DZW50
ZXI6OmRpZFJlbW92ZU1lZGlhU3RyZWFtVHJhY2soY29uc3QgV2ViTWVkaWFTdHJlYW0mLCBjb25z
dCBXZWJNZWRpYVN0cmVhbVRyYWNrJikKK3sKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBN
b2NrV2ViTWVkaWFTdHJlYW1DZW50ZXI6OmRpZFN0b3BMb2NhbE1lZGlhU3RyZWFtKGNvbnN0IFdl
Yk1lZGlhU3RyZWFtJiBzdHJlYW0pCit7CisgICAgV2ViVmVjdG9yPFdlYk1lZGlhU3RyZWFtVHJh
Y2s+IGF1ZGlvQ29tcG9uZW50czsKKyAgICBzdHJlYW0uYXVkaW9Tb3VyY2VzKGF1ZGlvQ29tcG9u
ZW50cyk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhdWRpb0NvbXBvbmVudHMuc2l6ZSgp
OyArK2kpCisgICAgICAgIGF1ZGlvQ29tcG9uZW50c1tpXS5zb3VyY2UoKS5zZXRSZWFkeVN0YXRl
KFdlYk1lZGlhU3RyZWFtU291cmNlOjpSZWFkeVN0YXRlRW5kZWQpOworCisgICAgV2ViVmVjdG9y
PFdlYk1lZGlhU3RyZWFtVHJhY2s+IHZpZGVvQ29tcG9uZW50czsKKyAgICBzdHJlYW0udmlkZW9T
b3VyY2VzKHZpZGVvQ29tcG9uZW50cyk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2aWRl
b0NvbXBvbmVudHMuc2l6ZSgpOyArK2kpCisgICAgICAgIHZpZGVvQ29tcG9uZW50c1tpXS5zb3Vy
Y2UoKS5zZXRSZWFkeVN0YXRlKFdlYk1lZGlhU3RyZWFtU291cmNlOjpSZWFkeVN0YXRlRW5kZWQp
OworfQorCitjbGFzcyBNb2NrV2ViQXVkaW9EZXN0aW5hdGlvbkNvbnN1bWVyIDogcHVibGljIFdl
YkF1ZGlvRGVzdGluYXRpb25Db25zdW1lciB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+TW9ja1dl
YkF1ZGlvRGVzdGluYXRpb25Db25zdW1lcigpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRGb3Jt
YXQoc2l6ZV90IG51bWJlck9mQ2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUpIE9WRVJSSURFIHsg
fQorICAgIHZpcnR1YWwgdm9pZCBjb25zdW1lQXVkaW8oY29uc3QgV2ViVmVjdG9yPGNvbnN0IGZs
b2F0Kj4mLCBzaXplX3QgbnVtYmVyX29mX2ZyYW1lcykgT1ZFUlJJREUgeyB9Cit9OworCit2b2lk
IE1vY2tXZWJNZWRpYVN0cmVhbUNlbnRlcjo6ZGlkQ3JlYXRlTWVkaWFTdHJlYW0oV2ViTWVkaWFT
dHJlYW0mIHN0cmVhbSkKK3sKKyAgICBXZWJWZWN0b3I8V2ViTWVkaWFTdHJlYW1UcmFjaz4gYXVk
aW9Db21wb25lbnRzOworICAgIHN0cmVhbS5hdWRpb1NvdXJjZXMoYXVkaW9Db21wb25lbnRzKTsK
KyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGF1ZGlvQ29tcG9uZW50cy5zaXplKCk7ICsraSkg
eworICAgICAgICBXZWJNZWRpYVN0cmVhbVNvdXJjZSBzb3VyY2UgPSBhdWRpb0NvbXBvbmVudHNb
aV0uc291cmNlKCk7CisgICAgICAgIGlmIChzb3VyY2UucmVxdWlyZXNBdWRpb0NvbnN1bWVyKCkp
IHsKKyAgICAgICAgICAgIE1vY2tXZWJBdWRpb0Rlc3RpbmF0aW9uQ29uc3VtZXIqIGNvbnN1bWVy
ID0gbmV3IE1vY2tXZWJBdWRpb0Rlc3RpbmF0aW9uQ29uc3VtZXIoKTsKKyAgICAgICAgICAgIHNv
dXJjZS5hZGRBdWRpb0NvbnN1bWVyKGNvbnN1bWVyKTsKKyAgICAgICAgICAgIHNvdXJjZS5yZW1v
dmVBdWRpb0NvbnN1bWVyKGNvbnN1bWVyKTsKKyAgICAgICAgICAgIGRlbGV0ZSBjb25zdW1lcjsK
KyAgICAgICAgfQorICAgIH0KK30KKworfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvTW9ja1dlYk1lZGlhU3RyZWFtQ2VudGVyLmggYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9Nb2NrV2ViTWVkaWFT
dHJlYW1DZW50ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYzAyOGEyNmJjNWFmM2JjNmY3ODAyODc1YTI4ZDNi
NDIzMTMxNTQ2Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vVGVzdFJ1bm5lci9zcmMvTW9ja1dlYk1lZGlhU3RyZWFtQ2VudGVyLmgKQEAgLTAsMCArMSw2
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoK
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgTW9ja1dlYk1lZGlhU3RyZWFtQ2VudGVyX2gKKyNkZWZpbmUgTW9ja1dlYk1l
ZGlhU3RyZWFtQ2VudGVyX2gKKworI2luY2x1ZGUgIlRlc3RDb21tb24uaCIKKyNpbmNsdWRlIDxw
dWJsaWMvV2ViTWVkaWFTdHJlYW1DZW50ZXIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CitjbGFz
cyBXZWJNZWRpYVN0cmVhbUNlbnRlckNsaWVudDsKK307CisKK25hbWVzcGFjZSBXZWJUZXN0UnVu
bmVyIHsKKworY2xhc3MgTW9ja1dlYk1lZGlhU3RyZWFtQ2VudGVyIDogcHVibGljIFdlYktpdDo6
V2ViTWVkaWFTdHJlYW1DZW50ZXIgeworcHVibGljOgorICAgIGV4cGxpY2l0IE1vY2tXZWJNZWRp
YVN0cmVhbUNlbnRlcihXZWJLaXQ6OldlYk1lZGlhU3RyZWFtQ2VudGVyQ2xpZW50Kik7CisKKyAg
ICB2aXJ0dWFsIHZvaWQgcXVlcnlNZWRpYVN0cmVhbVNvdXJjZXMoY29uc3QgV2ViS2l0OjpXZWJN
ZWRpYVN0cmVhbVNvdXJjZXNSZXF1ZXN0JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRp
ZEVuYWJsZU1lZGlhU3RyZWFtVHJhY2soY29uc3QgV2ViS2l0OjpXZWJNZWRpYVN0cmVhbSYsIGNv
bnN0IFdlYktpdDo6V2ViTWVkaWFTdHJlYW1UcmFjayYpIE9WRVJSSURFOworICAgIHZpcnR1YWwg
dm9pZCBkaWREaXNhYmxlTWVkaWFTdHJlYW1UcmFjayhjb25zdCBXZWJLaXQ6OldlYk1lZGlhU3Ry
ZWFtJiwgY29uc3QgV2ViS2l0OjpXZWJNZWRpYVN0cmVhbVRyYWNrJikgT1ZFUlJJREU7CisgICAg
dmlydHVhbCBib29sIGRpZEFkZE1lZGlhU3RyZWFtVHJhY2soY29uc3QgV2ViS2l0OjpXZWJNZWRp
YVN0cmVhbSYsIGNvbnN0IFdlYktpdDo6V2ViTWVkaWFTdHJlYW1UcmFjayYpIE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgYm9vbCBkaWRSZW1vdmVNZWRpYVN0cmVhbVRyYWNrKGNvbnN0IFdlYktpdDo6
V2ViTWVkaWFTdHJlYW0mLCBjb25zdCBXZWJLaXQ6OldlYk1lZGlhU3RyZWFtVHJhY2smKSBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkU3RvcExvY2FsTWVkaWFTdHJlYW0oY29uc3QgV2Vi
S2l0OjpXZWJNZWRpYVN0cmVhbSYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVh
dGVNZWRpYVN0cmVhbShXZWJLaXQ6OldlYk1lZGlhU3RyZWFtJikgT1ZFUlJJREU7CisKK3ByaXZh
dGU6CisgICAgTW9ja1dlYk1lZGlhU3RyZWFtQ2VudGVyKCkgeyB9Cit9OworCit9CisKKyNlbmRp
ZiAvLyBNb2NrV2ViTWVkaWFTdHJlYW1DZW50ZXJfaAorCmRpZmYgLS1naXQgYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9Nb2NrV2ViUlRDRFRNRlNlbmRlckhh
bmRsZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMv
TW9ja1dlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NWFhNzk2ZGY0MmYy
NDA2MzlkMTM5Y2Y1OTdmZjMzNTBkZmI2NWQwCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvTW9ja1dlYlJUQ0RUTUZTZW5kZXJI
YW5kbGVyLmNwcApAQCAtMCwwICsxLDk0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBHT09HTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEdPT0dMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1vY2tX
ZWJSVENEVE1GU2VuZGVySGFuZGxlci5oIgorCisjaW5jbHVkZSAiV2ViVGVzdERlbGVnYXRlLmgi
CisjaW5jbHVkZSA8YXNzZXJ0Lmg+CisjaW5jbHVkZSA8cHVibGljL1dlYk1lZGlhU3RyZWFtU291
cmNlLmg+CisjaW5jbHVkZSA8cHVibGljL1dlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyQ2xpZW50Lmg+
CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK25hbWVzcGFjZSBXZWJUZXN0UnVubmVyIHsK
KworY2xhc3MgRFRNRlNlbmRlclRvbmVUYXNrIDogcHVibGljIFdlYk1ldGhvZFRhc2s8TW9ja1dl
YlJUQ0RUTUZTZW5kZXJIYW5kbGVyPiB7CitwdWJsaWM6CisgICAgRFRNRlNlbmRlclRvbmVUYXNr
KE1vY2tXZWJSVENEVE1GU2VuZGVySGFuZGxlciogb2JqZWN0LCBXZWJSVENEVE1GU2VuZGVySGFu
ZGxlckNsaWVudCogY2xpZW50KQorICAgICAgICA6IFdlYk1ldGhvZFRhc2s8TW9ja1dlYlJUQ0RU
TUZTZW5kZXJIYW5kbGVyPihvYmplY3QpCisgICAgICAgICwgbV9jbGllbnQoY2xpZW50KQorICAg
IHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgcnVuSWZWYWxpZCgpIE9WRVJSSURFCisgICAg
eworICAgICAgICBXZWJTdHJpbmcgdG9uZXMgPSBtX29iamVjdC0+Y3VycmVudFRvbmVCdWZmZXIo
KTsKKyAgICAgICAgbV9vYmplY3QtPmNsZWFyVG9uZUJ1ZmZlcigpOworICAgICAgICBtX2NsaWVu
dC0+ZGlkUGxheVRvbmUodG9uZXMpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBXZWJSVENEVE1G
U2VuZGVySGFuZGxlckNsaWVudCogbV9jbGllbnQ7Cit9OworCisvLy8vLy8vLy8vLy8vLy8vLy8v
Ly8KKworTW9ja1dlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyOjpNb2NrV2ViUlRDRFRNRlNlbmRlckhh
bmRsZXIoY29uc3QgV2ViTWVkaWFTdHJlYW1UcmFjayYgdHJhY2ssIFdlYlRlc3REZWxlZ2F0ZSog
ZGVsZWdhdGUpCisgICAgOiBtX2NsaWVudCgwKQorICAgICwgbV90cmFjayh0cmFjaykKKyAgICAs
IG1fZGVsZWdhdGUoZGVsZWdhdGUpCit7Cit9CisKK3ZvaWQgTW9ja1dlYlJUQ0RUTUZTZW5kZXJI
YW5kbGVyOjpzZXRDbGllbnQoV2ViUlRDRFRNRlNlbmRlckhhbmRsZXJDbGllbnQqIGNsaWVudCkK
K3sKKyAgICBtX2NsaWVudCA9IGNsaWVudDsKK30KKworV2ViU3RyaW5nIE1vY2tXZWJSVENEVE1G
U2VuZGVySGFuZGxlcjo6Y3VycmVudFRvbmVCdWZmZXIoKQoreworICAgIHJldHVybiBtX3RvbmVC
dWZmZXI7Cit9CisKK2Jvb2wgTW9ja1dlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyOjpjYW5JbnNlcnRE
VE1GKCkKK3sKKyAgICBhc3NlcnQobV9jbGllbnQgJiYgIW1fdHJhY2suaXNOdWxsKCkpOworICAg
IHJldHVybiBtX3RyYWNrLnNvdXJjZSgpLnR5cGUoKSA9PSBXZWJNZWRpYVN0cmVhbVNvdXJjZTo6
VHlwZUF1ZGlvICYmIG1fdHJhY2suaXNFbmFibGVkKCkgJiYgbV90cmFjay5zb3VyY2UoKS5yZWFk
eVN0YXRlKCkgPT0gV2ViTWVkaWFTdHJlYW1Tb3VyY2U6OlJlYWR5U3RhdGVMaXZlOworfQorCiti
b29sIE1vY2tXZWJSVENEVE1GU2VuZGVySGFuZGxlcjo6aW5zZXJ0RFRNRihjb25zdCBXZWJTdHJp
bmcmIHRvbmVzLCBsb25nIGR1cmF0aW9uLCBsb25nIGludGVyVG9uZUdhcCkKK3sKKyAgICBhc3Nl
cnQobV9jbGllbnQpOworICAgIGlmICghY2FuSW5zZXJ0RFRNRigpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBtX3RvbmVCdWZmZXIgPSB0b25lczsKKyAgICBtX2RlbGVnYXRlLT5wb3N0
VGFzayhuZXcgRFRNRlNlbmRlclRvbmVUYXNrKHRoaXMsIG1fY2xpZW50KSk7CisgICAgbV9kZWxl
Z2F0ZS0+cG9zdFRhc2sobmV3IERUTUZTZW5kZXJUb25lVGFzayh0aGlzLCBtX2NsaWVudCkpOwor
ICAgIHJldHVybiB0cnVlOworfQorCit9CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9Nb2NrV2ViUlRDRFRNRlNlbmRlckhhbmRsZXIuaCBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL01vY2tXZWJSVENE
VE1GU2VuZGVySGFuZGxlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY5MGRhYjg4NGNmZmRhYjNhNjk0YTVjOGJi
ODgyMmVhMGY3OGFkY2UKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9UZXN0UnVubmVyL3NyYy9Nb2NrV2ViUlRDRFRNRlNlbmRlckhhbmRsZXIuaApAQCAt
MCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBHT09HTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEdPT0dM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBNb2NrV2ViUlRDRFRNRlNlbmRlckhhbmRsZXJfaAorI2RlZmluZSBNb2Nr
V2ViUlRDRFRNRlNlbmRlckhhbmRsZXJfaAorCisjaW5jbHVkZSAiVGVzdENvbW1vbi5oIgorI2lu
Y2x1ZGUgIldlYlRhc2suaCIKKyNpbmNsdWRlIDxwdWJsaWMvV2ViTWVkaWFTdHJlYW1UcmFjay5o
PgorI2luY2x1ZGUgPHB1YmxpYy9XZWJSVENEVE1GU2VuZGVySGFuZGxlci5oPgorI2luY2x1ZGUg
PHB1YmxpYy9XZWJTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYlRlc3RSdW5uZXIgeworCitjbGFz
cyBXZWJUZXN0RGVsZWdhdGU7CisKK2NsYXNzIE1vY2tXZWJSVENEVE1GU2VuZGVySGFuZGxlciA6
IHB1YmxpYyBXZWJLaXQ6OldlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyIHsKK3B1YmxpYzoKKyAgICBN
b2NrV2ViUlRDRFRNRlNlbmRlckhhbmRsZXIoY29uc3QgV2ViS2l0OjpXZWJNZWRpYVN0cmVhbVRy
YWNrJiwgV2ViVGVzdERlbGVnYXRlKik7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q2xpZW50KFdl
YktpdDo6V2ViUlRDRFRNRlNlbmRlckhhbmRsZXJDbGllbnQqKSBPVkVSUklERTsKKworICAgIHZp
cnR1YWwgV2ViS2l0OjpXZWJTdHJpbmcgY3VycmVudFRvbmVCdWZmZXIoKSBPVkVSUklERTsKKwor
ICAgIHZpcnR1YWwgYm9vbCBjYW5JbnNlcnREVE1GKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBi
b29sIGluc2VydERUTUYoY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmIHRvbmVzLCBsb25nIGR1cmF0
aW9uLCBsb25nIGludGVyVG9uZUdhcCkgT1ZFUlJJREU7CisKKyAgICAvLyBXZWJUYXNrIHJlbGF0
ZWQgbWV0aG9kcworICAgIFdlYlRhc2tMaXN0KiB0YXNrTGlzdCgpIHsgcmV0dXJuICZtX3Rhc2tM
aXN0OyB9CisgICAgdm9pZCBjbGVhclRvbmVCdWZmZXIoKSB7IG1fdG9uZUJ1ZmZlci5yZXNldCgp
OyB9CisKK3ByaXZhdGU6CisgICAgTW9ja1dlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyKCk7CisKKyAg
ICBXZWJLaXQ6OldlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyQ2xpZW50KiBtX2NsaWVudDsKKyAgICBX
ZWJLaXQ6OldlYk1lZGlhU3RyZWFtVHJhY2sgbV90cmFjazsKKyAgICBXZWJLaXQ6OldlYlN0cmlu
ZyBtX3RvbmVCdWZmZXI7CisgICAgV2ViVGFza0xpc3QgbV90YXNrTGlzdDsKKyAgICBXZWJUZXN0
RGVsZWdhdGUqIG1fZGVsZWdhdGU7Cit9OworCit9CisKKyNlbmRpZiAvLyBNb2NrV2ViUlRDRFRN
RlNlbmRlckhhbmRsZXJfaApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vVGVzdFJ1bm5lci9zcmMvTW9ja1dlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9Nb2NrV2ViUlRDRGF0YUNo
YW5uZWxIYW5kbGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMjE2YmMzNGM5ZGRiODEwMTNjMjhiMjhjMGU1
OTBlYzkwMjI4ODJmCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vVGVzdFJ1bm5lci9zcmMvTW9ja1dlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKQEAg
LTAsMCArMSw5NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIk1vY2tXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuaCIKKworI2luY2x1ZGUgIldlYlRlc3RE
ZWxlZ2F0ZS5oIgorI2luY2x1ZGUgPGFzc2VydC5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJSVENE
YXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKwor
bmFtZXNwYWNlIFdlYlRlc3RSdW5uZXIgeworCitjbGFzcyBEYXRhQ2hhbm5lbFJlYWR5U3RhdGVU
YXNrIDogcHVibGljIFdlYk1ldGhvZFRhc2s8TW9ja1dlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcj4g
eworcHVibGljOgorICAgIERhdGFDaGFubmVsUmVhZHlTdGF0ZVRhc2soTW9ja1dlYlJUQ0RhdGFD
aGFubmVsSGFuZGxlciogb2JqZWN0LCBXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQqIGRh
dGFDaGFubmVsQ2xpZW50LCBXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQ6OlJlYWR5U3Rh
dGUgc3RhdGUpCisgICAgICAgIDogV2ViTWV0aG9kVGFzazxNb2NrV2ViUlRDRGF0YUNoYW5uZWxI
YW5kbGVyPihvYmplY3QpCisgICAgICAgICwgbV9kYXRhQ2hhbm5lbENsaWVudChkYXRhQ2hhbm5l
bENsaWVudCkKKyAgICAgICAgLCBtX3N0YXRlKHN0YXRlKQorICAgIHsKKyAgICB9CisKKyAgICB2
aXJ0dWFsIHZvaWQgcnVuSWZWYWxpZCgpIE9WRVJSSURFCisgICAgeworICAgICAgICBtX2RhdGFD
aGFubmVsQ2xpZW50LT5kaWRDaGFuZ2VSZWFkeVN0YXRlKG1fc3RhdGUpOworICAgIH0KKworcHJp
dmF0ZToKKyAgICBXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQqIG1fZGF0YUNoYW5uZWxD
bGllbnQ7CisgICAgV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50OjpSZWFkeVN0YXRlIG1f
c3RhdGU7Cit9OworCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8KKworTW9ja1dlYlJUQ0RhdGFDaGFu
bmVsSGFuZGxlcjo6TW9ja1dlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcihXZWJTdHJpbmcgbGFiZWws
IGJvb2wgcmVsaWFibGUsIFdlYlRlc3REZWxlZ2F0ZSogZGVsZWdhdGUpCisgICAgOiBtX2NsaWVu
dCgwKQorICAgICwgbV9sYWJlbChsYWJlbCkKKyAgICAsIG1fcmVsaWFibGUocmVsaWFibGUpCisg
ICAgLCBtX2RlbGVnYXRlKGRlbGVnYXRlKQoreworfQorCit2b2lkIE1vY2tXZWJSVENEYXRhQ2hh
bm5lbEhhbmRsZXI6OnNldENsaWVudChXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQqIGNs
aWVudCkKK3sKKyAgICBtX2NsaWVudCA9IGNsaWVudDsKKyAgICBpZiAobV9jbGllbnQpCisgICAg
ICAgIG1fZGVsZWdhdGUtPnBvc3RUYXNrKG5ldyBEYXRhQ2hhbm5lbFJlYWR5U3RhdGVUYXNrKHRo
aXMsIG1fY2xpZW50LCBXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQ6OlJlYWR5U3RhdGVP
cGVuKSk7Cit9CisKK3Vuc2lnbmVkIGxvbmcgTW9ja1dlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6
YnVmZmVyZWRBbW91bnQoKQoreworICAgIHJldHVybiAwOworfQorCitib29sIE1vY2tXZWJSVENE
YXRhQ2hhbm5lbEhhbmRsZXI6OnNlbmRTdHJpbmdEYXRhKGNvbnN0IFdlYlN0cmluZyYgZGF0YSkK
K3sKKyAgICBhc3NlcnQobV9jbGllbnQpOworICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlU3RyaW5n
RGF0YShkYXRhKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBNb2NrV2ViUlRDRGF0YUNo
YW5uZWxIYW5kbGVyOjpzZW5kUmF3RGF0YShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkK
K3sKKyAgICBhc3NlcnQobV9jbGllbnQpOworICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlUmF3RGF0
YShkYXRhLCBzaXplKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBNb2NrV2ViUlRDRGF0
YUNoYW5uZWxIYW5kbGVyOjpjbG9zZSgpCit7CisgICAgYXNzZXJ0KG1fY2xpZW50KTsKKyAgICBt
X2RlbGVnYXRlLT5wb3N0VGFzayhuZXcgRGF0YUNoYW5uZWxSZWFkeVN0YXRlVGFzayh0aGlzLCBt
X2NsaWVudCwgV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50OjpSZWFkeVN0YXRlQ2xvc2Vk
KSk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rl
c3RSdW5uZXIvc3JjL01vY2tXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuaCBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL01vY2tXZWJSVENEYXRhQ2hhbm5lbEhh
bmRsZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4zYzkzODExY2UyMzkwMDZlNjZlMTEwMjc0NjFhZGY3NWRmNWQ0
Y2MyCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVz
dFJ1bm5lci9zcmMvTW9ja1dlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5oCkBAIC0wLDAgKzEsNjQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
CisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTW9ja1dlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcl9o
CisjZGVmaW5lIE1vY2tXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXJfaAorCisjaW5jbHVkZSAiVGVz
dENvbW1vbi5oIgorI2luY2x1ZGUgIldlYlRhc2suaCIKKyNpbmNsdWRlIDxwdWJsaWMvV2ViUlRD
RGF0YUNoYW5uZWxIYW5kbGVyLmg+CisjaW5jbHVkZSA8cHVibGljL1dlYlN0cmluZy5oPgorCitu
YW1lc3BhY2UgV2ViVGVzdFJ1bm5lciB7CisKK2NsYXNzIFdlYlRlc3REZWxlZ2F0ZTsKKworY2xh
c3MgTW9ja1dlYlJUQ0RhdGFDaGFubmVsSGFuZGxlciA6IHB1YmxpYyBXZWJLaXQ6OldlYlJUQ0Rh
dGFDaGFubmVsSGFuZGxlciB7CitwdWJsaWM6CisgICAgTW9ja1dlYlJUQ0RhdGFDaGFubmVsSGFu
ZGxlcihXZWJLaXQ6OldlYlN0cmluZyBsYWJlbCwgYm9vbCByZWxpYWJsZSwgV2ViVGVzdERlbGVn
YXRlKik7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q2xpZW50KFdlYktpdDo6V2ViUlRDRGF0YUNo
YW5uZWxIYW5kbGVyQ2xpZW50KikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBXZWJLaXQ6OldlYlN0
cmluZyBsYWJlbCgpIE9WRVJSSURFIHsgcmV0dXJuIG1fbGFiZWw7IH0KKyAgICB2aXJ0dWFsIGJv
b2wgaXNSZWxpYWJsZSgpIE9WRVJSSURFIHsgcmV0dXJuIG1fcmVsaWFibGU7IH0KKyAgICB2aXJ0
dWFsIHVuc2lnbmVkIGxvbmcgYnVmZmVyZWRBbW91bnQoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IGJvb2wgc2VuZFN0cmluZ0RhdGEoY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmKSBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIGJvb2wgc2VuZFJhd0RhdGEoY29uc3QgY2hhciosIHNpemVfdCkgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCB2b2lkIGNsb3NlKCkgT1ZFUlJJREU7CisKKyAgICAvLyBXZWJUYXNr
IHJlbGF0ZWQgbWV0aG9kcworICAgIFdlYlRhc2tMaXN0KiB0YXNrTGlzdCgpIHsgcmV0dXJuICZt
X3Rhc2tMaXN0OyB9CisKK3ByaXZhdGU6CisgICAgTW9ja1dlYlJUQ0RhdGFDaGFubmVsSGFuZGxl
cigpOworCisgICAgV2ViS2l0OjpXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQqIG1fY2xp
ZW50OworICAgIFdlYktpdDo6V2ViU3RyaW5nIG1fbGFiZWw7CisgICAgYm9vbCBtX3JlbGlhYmxl
OworICAgIFdlYlRhc2tMaXN0IG1fdGFza0xpc3Q7CisgICAgV2ViVGVzdERlbGVnYXRlKiBtX2Rl
bGVnYXRlOworfTsKKworfQorCisjZW5kaWYgLy8gTW9ja1dlYlJUQ0RhdGFDaGFubmVsSGFuZGxl
cl9oCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVy
L3NyYy9Nb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL01vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhh
bmRsZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE5MWNkMTYxOTQ2YjJmYWVjMWM2NjM2NDU2ODEyMTk2MDky
ZmUxZjEKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9U
ZXN0UnVubmVyL3NyYy9Nb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmNwcApAQCAtMCww
ICsxLDMxMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0
OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
CisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNb2NrV2ViUlRDUGVlckNv
bm5lY3Rpb25IYW5kbGVyLmgiCisKKyNpbmNsdWRlICJNb2NrQ29uc3RyYWludHMuaCIKKyNpbmNs
dWRlICJNb2NrV2ViUlRDRFRNRlNlbmRlckhhbmRsZXIuaCIKKyNpbmNsdWRlICJNb2NrV2ViUlRD
RGF0YUNoYW5uZWxIYW5kbGVyLmgiCisjaW5jbHVkZSAiVGVzdEludGVyZmFjZXMuaCIKKyNpbmNs
dWRlICJXZWJUZXN0RGVsZWdhdGUuaCIKKyNpbmNsdWRlIDxwdWJsaWMvV2ViTWVkaWFDb25zdHJh
aW50cy5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJNZWRpYVN0cmVhbS5oPgorI2luY2x1ZGUgPHB1
YmxpYy9XZWJNZWRpYVN0cmVhbVRyYWNrLmg+CisjaW5jbHVkZSA8cHVibGljL1dlYlJUQ1BlZXJD
b25uZWN0aW9uSGFuZGxlckNsaWVudC5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJSVENTZXNzaW9u
RGVzY3JpcHRpb24uaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViUlRDU2Vzc2lvbkRlc2NyaXB0aW9u
UmVxdWVzdC5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJSVENTdGF0c1JlcXVlc3QuaD4KKyNpbmNs
dWRlIDxwdWJsaWMvV2ViUlRDU3RhdHNSZXNwb25zZS5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJS
VENWb2lkUmVxdWVzdC5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJTdHJpbmcuaD4KKyNpbmNsdWRl
IDxwdWJsaWMvV2ViVmVjdG9yLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK25hbWVz
cGFjZSBXZWJUZXN0UnVubmVyIHsKKworY2xhc3MgUlRDU2Vzc2lvbkRlc2NyaXB0aW9uUmVxdWVz
dFN1Y2NlZGVkVGFzayA6IHB1YmxpYyBXZWJNZXRob2RUYXNrPE1vY2tXZWJSVENQZWVyQ29ubmVj
dGlvbkhhbmRsZXI+IHsKK3B1YmxpYzoKKyAgICBSVENTZXNzaW9uRGVzY3JpcHRpb25SZXF1ZXN0
U3VjY2VkZWRUYXNrKE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIqIG9iamVjdCwgY29u
c3QgV2ViUlRDU2Vzc2lvbkRlc2NyaXB0aW9uUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2ViUlRD
U2Vzc2lvbkRlc2NyaXB0aW9uJiByZXN1bHQpCisgICAgICAgIDogV2ViTWV0aG9kVGFzazxNb2Nr
V2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyPihvYmplY3QpCisgICAgICAgICwgbV9yZXF1ZXN0
KHJlcXVlc3QpCisgICAgICAgICwgbV9yZXN1bHQocmVzdWx0KQorICAgIHsKKyAgICB9CisKKyAg
ICB2aXJ0dWFsIHZvaWQgcnVuSWZWYWxpZCgpIE9WRVJSSURFCisgICAgeworICAgICAgICBtX3Jl
cXVlc3QucmVxdWVzdFN1Y2NlZWRlZChtX3Jlc3VsdCk7CisgICAgfQorCitwcml2YXRlOgorICAg
IFdlYlJUQ1Nlc3Npb25EZXNjcmlwdGlvblJlcXVlc3QgbV9yZXF1ZXN0OworICAgIFdlYlJUQ1Nl
c3Npb25EZXNjcmlwdGlvbiBtX3Jlc3VsdDsKK307CisKK2NsYXNzIFJUQ1Nlc3Npb25EZXNjcmlw
dGlvblJlcXVlc3RGYWlsZWRUYXNrIDogcHVibGljIFdlYk1ldGhvZFRhc2s8TW9ja1dlYlJUQ1Bl
ZXJDb25uZWN0aW9uSGFuZGxlcj4geworcHVibGljOgorICAgIFJUQ1Nlc3Npb25EZXNjcmlwdGlv
blJlcXVlc3RGYWlsZWRUYXNrKE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIqIG9iamVj
dCwgY29uc3QgV2ViUlRDU2Vzc2lvbkRlc2NyaXB0aW9uUmVxdWVzdCYgcmVxdWVzdCkKKyAgICAg
ICAgOiBXZWJNZXRob2RUYXNrPE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI+KG9iamVj
dCkKKyAgICAgICAgLCBtX3JlcXVlc3QocmVxdWVzdCkKKyAgICB7CisgICAgfQorCisgICAgdmly
dHVhbCB2b2lkIHJ1bklmVmFsaWQoKSBPVkVSUklERQorICAgIHsKKyAgICAgICAgbV9yZXF1ZXN0
LnJlcXVlc3RGYWlsZWQoIlRFU1RfRVJST1IiKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgV2Vi
UlRDU2Vzc2lvbkRlc2NyaXB0aW9uUmVxdWVzdCBtX3JlcXVlc3Q7Cit9OworCitjbGFzcyBSVENT
dGF0c1JlcXVlc3RTdWNjZWVkZWRUYXNrIDogcHVibGljIFdlYk1ldGhvZFRhc2s8TW9ja1dlYlJU
Q1BlZXJDb25uZWN0aW9uSGFuZGxlcj4geworcHVibGljOgorICAgIFJUQ1N0YXRzUmVxdWVzdFN1
Y2NlZWRlZFRhc2soTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlciogb2JqZWN0LCBjb25z
dCBXZWJLaXQ6OldlYlJUQ1N0YXRzUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2ViS2l0OjpXZWJS
VENTdGF0c1Jlc3BvbnNlJiByZXNwb25zZSkKKyAgICAgICAgOiBXZWJNZXRob2RUYXNrPE1vY2tX
ZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI+KG9iamVjdCkKKyAgICAgICAgLCBtX3JlcXVlc3Qo
cmVxdWVzdCkKKyAgICAgICAgLCBtX3Jlc3BvbnNlKHJlc3BvbnNlKQorICAgIHsKKyAgICB9CisK
KyAgICB2aXJ0dWFsIHZvaWQgcnVuSWZWYWxpZCgpIE9WRVJSSURFCisgICAgeworICAgICAgICBt
X3JlcXVlc3QucmVxdWVzdFN1Y2NlZWRlZChtX3Jlc3BvbnNlKTsKKyAgICB9CisKK3ByaXZhdGU6
CisgICAgV2ViS2l0OjpXZWJSVENTdGF0c1JlcXVlc3QgbV9yZXF1ZXN0OworICAgIFdlYktpdDo6
V2ViUlRDU3RhdHNSZXNwb25zZSBtX3Jlc3BvbnNlOworfTsKKworY2xhc3MgUlRDVm9pZFJlcXVl
c3RUYXNrIDogcHVibGljIFdlYk1ldGhvZFRhc2s8TW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFu
ZGxlcj4geworcHVibGljOgorICAgIFJUQ1ZvaWRSZXF1ZXN0VGFzayhNb2NrV2ViUlRDUGVlckNv
bm5lY3Rpb25IYW5kbGVyKiBvYmplY3QsIGNvbnN0IFdlYlJUQ1ZvaWRSZXF1ZXN0JiByZXF1ZXN0
LCBib29sIHN1Y2NlZWRlZCkKKyAgICAgICAgOiBXZWJNZXRob2RUYXNrPE1vY2tXZWJSVENQZWVy
Q29ubmVjdGlvbkhhbmRsZXI+KG9iamVjdCkKKyAgICAgICAgLCBtX3JlcXVlc3QocmVxdWVzdCkK
KyAgICAgICAgLCBtX3N1Y2NlZWRlZChzdWNjZWVkZWQpCisgICAgeworICAgIH0KKworICAgIHZp
cnR1YWwgdm9pZCBydW5JZlZhbGlkKCkgT1ZFUlJJREUKKyAgICB7CisgICAgICAgIGlmIChtX3N1
Y2NlZWRlZCkKKyAgICAgICAgICAgIG1fcmVxdWVzdC5yZXF1ZXN0U3VjY2VlZGVkKCk7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIG1fcmVxdWVzdC5yZXF1ZXN0RmFpbGVkKCJURVNUX0VSUk9S
Iik7CisgICAgfQorCitwcml2YXRlOgorICAgIFdlYlJUQ1ZvaWRSZXF1ZXN0IG1fcmVxdWVzdDsK
KyAgICBib29sIG1fc3VjY2VlZGVkOworfTsKKworY2xhc3MgUlRDUGVlckNvbm5lY3Rpb25TdGF0
ZVRhc2sgOiBwdWJsaWMgV2ViTWV0aG9kVGFzazxNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5k
bGVyPiB7CitwdWJsaWM6CisgICAgUlRDUGVlckNvbm5lY3Rpb25TdGF0ZVRhc2soTW9ja1dlYlJU
Q1BlZXJDb25uZWN0aW9uSGFuZGxlciogb2JqZWN0LCBXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRs
ZXJDbGllbnQqIGNsaWVudCwgV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50OjpJQ0VD
b25uZWN0aW9uU3RhdGUgY29ubmVjdGlvblN0YXRlLCBXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRs
ZXJDbGllbnQ6OklDRUdhdGhlcmluZ1N0YXRlIGdhdGhlcmluZ1N0YXRlKQorICAgICAgICA6IFdl
Yk1ldGhvZFRhc2s8TW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcj4ob2JqZWN0KQorICAg
ICAgICAsIG1fY2xpZW50KGNsaWVudCkKKyAgICAgICAgLCBtX2Nvbm5lY3Rpb25TdGF0ZShjb25u
ZWN0aW9uU3RhdGUpCisgICAgICAgICwgbV9nYXRoZXJpbmdTdGF0ZShnYXRoZXJpbmdTdGF0ZSkK
KyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHJ1bklmVmFsaWQoKSBPVkVSUklERQor
ICAgIHsKKyAgICAgICAgbV9jbGllbnQtPmRpZENoYW5nZUlDRUdhdGhlcmluZ1N0YXRlKG1fZ2F0
aGVyaW5nU3RhdGUpOworICAgICAgICBtX2NsaWVudC0+ZGlkQ2hhbmdlSUNFQ29ubmVjdGlvblN0
YXRlKG1fY29ubmVjdGlvblN0YXRlKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgV2ViUlRDUGVl
ckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50KiBtX2NsaWVudDsKKyAgICBXZWJSVENQZWVyQ29ubmVj
dGlvbkhhbmRsZXJDbGllbnQ6OklDRUNvbm5lY3Rpb25TdGF0ZSBtX2Nvbm5lY3Rpb25TdGF0ZTsK
KyAgICBXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQ6OklDRUdhdGhlcmluZ1N0YXRl
IG1fZ2F0aGVyaW5nU3RhdGU7Cit9OworCitjbGFzcyBSZW1vdGVEYXRhQ2hhbm5lbFRhc2sgOiBw
dWJsaWMgV2ViTWV0aG9kVGFzazxNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyPiB7Citw
dWJsaWM6CisgICAgUmVtb3RlRGF0YUNoYW5uZWxUYXNrKE1vY2tXZWJSVENQZWVyQ29ubmVjdGlv
bkhhbmRsZXIqIG9iamVjdCwgV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50KiBjbGll
bnQsIFdlYlRlc3REZWxlZ2F0ZSogZGVsZWdhdGUpCisgICAgICAgIDogV2ViTWV0aG9kVGFzazxN
b2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyPihvYmplY3QpCisgICAgICAgICwgbV9jbGll
bnQoY2xpZW50KQorICAgICAgICAsIG1fZGVsZWdhdGUoZGVsZWdhdGUpCisgICAgeworICAgIH0K
KworICAgIHZpcnR1YWwgdm9pZCBydW5JZlZhbGlkKCkgT1ZFUlJJREUKKyAgICB7CisgICAgICAg
IFdlYlJUQ0RhdGFDaGFubmVsSGFuZGxlciogcmVtb3RlRGF0YUNoYW5uZWwgPSBuZXcgTW9ja1dl
YlJUQ0RhdGFDaGFubmVsSGFuZGxlcigiTW9ja1JlbW90ZURhdGFDaGFubmVsIiwgdHJ1ZSwgbV9k
ZWxlZ2F0ZSk7CisgICAgICAgIG1fY2xpZW50LT5kaWRBZGRSZW1vdGVEYXRhQ2hhbm5lbChyZW1v
dGVEYXRhQ2hhbm5lbCk7CisgICAgfQorCitwcml2YXRlOgorICAgIFdlYlJUQ1BlZXJDb25uZWN0
aW9uSGFuZGxlckNsaWVudCogbV9jbGllbnQ7CisgICAgV2ViVGVzdERlbGVnYXRlKiBtX2RlbGVn
YXRlOworfTsKKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisKK01vY2tXZWJSVENQZWVyQ29ubmVj
dGlvbkhhbmRsZXI6Ok1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIoV2ViUlRDUGVlckNv
bm5lY3Rpb25IYW5kbGVyQ2xpZW50KiBjbGllbnQsIFRlc3RJbnRlcmZhY2VzKiBpbnRlcmZhY2Vz
KQorICAgIDogbV9jbGllbnQoY2xpZW50KQorICAgICwgbV9zdG9wcGVkKGZhbHNlKQorICAgICwg
bV9zdHJlYW1Db3VudCgwKQorICAgICwgbV9pbnRlcmZhY2VzKGludGVyZmFjZXMpCit7Cit9CisK
K2Jvb2wgTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcjo6aW5pdGlhbGl6ZShjb25zdCBX
ZWJSVENDb25maWd1cmF0aW9uJiwgY29uc3QgV2ViTWVkaWFDb25zdHJhaW50cyYgY29uc3RyYWlu
dHMpCit7CisgICAgaWYgKE1vY2tDb25zdHJhaW50czo6dmVyaWZ5Q29uc3RyYWludHMoY29uc3Ry
YWludHMpKSB7CisgICAgICAgIG1faW50ZXJmYWNlcy0+ZGVsZWdhdGUoKS0+cG9zdFRhc2sobmV3
IFJUQ1BlZXJDb25uZWN0aW9uU3RhdGVUYXNrKHRoaXMsIG1fY2xpZW50LCBXZWJSVENQZWVyQ29u
bmVjdGlvbkhhbmRsZXJDbGllbnQ6OklDRUNvbm5lY3Rpb25TdGF0ZUNvbXBsZXRlZCwgV2ViUlRD
UGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50OjpJQ0VHYXRoZXJpbmdTdGF0ZUNvbXBsZXRlKSk7
CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKwor
dm9pZCBNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyOjpjcmVhdGVPZmZlcihjb25zdCBX
ZWJSVENTZXNzaW9uRGVzY3JpcHRpb25SZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXZWJNZWRpYUNv
bnN0cmFpbnRzJiBjb25zdHJhaW50cykKK3sKKyAgICBXZWJTdHJpbmcgc2hvdWxkU3VjY2VlZDsK
KyAgICBpZiAoY29uc3RyYWludHMuZ2V0TWFuZGF0b3J5Q29uc3RyYWludFZhbHVlKCJzdWNjZWVk
Iiwgc2hvdWxkU3VjY2VlZCkgJiYgc2hvdWxkU3VjY2VlZCA9PSAidHJ1ZSIpIHsKKyAgICAgICAg
V2ViUlRDU2Vzc2lvbkRlc2NyaXB0aW9uIHNlc3Npb25EZXNjcmlwdGlvbjsKKyAgICAgICAgc2Vz
c2lvbkRlc2NyaXB0aW9uLmluaXRpYWxpemUoIm9mZmVyIiwgImxvY2FsIik7CisgICAgICAgIG1f
aW50ZXJmYWNlcy0+ZGVsZWdhdGUoKS0+cG9zdFRhc2sobmV3IFJUQ1Nlc3Npb25EZXNjcmlwdGlv
blJlcXVlc3RTdWNjZWRlZFRhc2sodGhpcywgcmVxdWVzdCwgc2Vzc2lvbkRlc2NyaXB0aW9uKSk7
CisgICAgfSBlbHNlCisgICAgICAgIG1faW50ZXJmYWNlcy0+ZGVsZWdhdGUoKS0+cG9zdFRhc2so
bmV3IFJUQ1Nlc3Npb25EZXNjcmlwdGlvblJlcXVlc3RGYWlsZWRUYXNrKHRoaXMsIHJlcXVlc3Qp
KTsKK30KKwordm9pZCBNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyOjpjcmVhdGVBbnN3
ZXIoY29uc3QgV2ViUlRDU2Vzc2lvbkRlc2NyaXB0aW9uUmVxdWVzdCYgcmVxdWVzdCwgY29uc3Qg
V2ViTWVkaWFDb25zdHJhaW50cyYpCit7CisgICAgaWYgKCFtX3JlbW90ZURlc2NyaXB0aW9uLmlz
TnVsbCgpKSB7CisgICAgICAgIFdlYlJUQ1Nlc3Npb25EZXNjcmlwdGlvbiBzZXNzaW9uRGVzY3Jp
cHRpb247CisgICAgICAgIHNlc3Npb25EZXNjcmlwdGlvbi5pbml0aWFsaXplKCJhbnN3ZXIiLCAi
bG9jYWwiKTsKKyAgICAgICAgbV9pbnRlcmZhY2VzLT5kZWxlZ2F0ZSgpLT5wb3N0VGFzayhuZXcg
UlRDU2Vzc2lvbkRlc2NyaXB0aW9uUmVxdWVzdFN1Y2NlZGVkVGFzayh0aGlzLCByZXF1ZXN0LCBz
ZXNzaW9uRGVzY3JpcHRpb24pKTsKKyAgICB9IGVsc2UKKyAgICAgICAgbV9pbnRlcmZhY2VzLT5k
ZWxlZ2F0ZSgpLT5wb3N0VGFzayhuZXcgUlRDU2Vzc2lvbkRlc2NyaXB0aW9uUmVxdWVzdEZhaWxl
ZFRhc2sodGhpcywgcmVxdWVzdCkpOworfQorCit2b2lkIE1vY2tXZWJSVENQZWVyQ29ubmVjdGlv
bkhhbmRsZXI6OnNldExvY2FsRGVzY3JpcHRpb24oY29uc3QgV2ViUlRDVm9pZFJlcXVlc3QmIHJl
cXVlc3QsIGNvbnN0IFdlYlJUQ1Nlc3Npb25EZXNjcmlwdGlvbiYgbG9jYWxEZXNjcmlwdGlvbikK
K3sKKyAgICBpZiAoIWxvY2FsRGVzY3JpcHRpb24uaXNOdWxsKCkgJiYgbG9jYWxEZXNjcmlwdGlv
bi5zZHAoKSA9PSAibG9jYWwiKSB7CisgICAgICAgIG1fbG9jYWxEZXNjcmlwdGlvbiA9IGxvY2Fs
RGVzY3JpcHRpb247CisgICAgICAgIG1faW50ZXJmYWNlcy0+ZGVsZWdhdGUoKS0+cG9zdFRhc2so
bmV3IFJUQ1ZvaWRSZXF1ZXN0VGFzayh0aGlzLCByZXF1ZXN0LCB0cnVlKSk7CisgICAgfSBlbHNl
CisgICAgICAgIG1faW50ZXJmYWNlcy0+ZGVsZWdhdGUoKS0+cG9zdFRhc2sobmV3IFJUQ1ZvaWRS
ZXF1ZXN0VGFzayh0aGlzLCByZXF1ZXN0LCBmYWxzZSkpOworfQorCit2b2lkIE1vY2tXZWJSVENQ
ZWVyQ29ubmVjdGlvbkhhbmRsZXI6OnNldFJlbW90ZURlc2NyaXB0aW9uKGNvbnN0IFdlYlJUQ1Zv
aWRSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXZWJSVENTZXNzaW9uRGVzY3JpcHRpb24mIHJlbW90
ZURlc2NyaXB0aW9uKQoreworICAgIGlmICghcmVtb3RlRGVzY3JpcHRpb24uaXNOdWxsKCkgJiYg
cmVtb3RlRGVzY3JpcHRpb24uc2RwKCkgPT0gInJlbW90ZSIpIHsKKyAgICAgICAgbV9yZW1vdGVE
ZXNjcmlwdGlvbiA9IHJlbW90ZURlc2NyaXB0aW9uOworICAgICAgICBtX2ludGVyZmFjZXMtPmRl
bGVnYXRlKCktPnBvc3RUYXNrKG5ldyBSVENWb2lkUmVxdWVzdFRhc2sodGhpcywgcmVxdWVzdCwg
dHJ1ZSkpOworICAgIH0gZWxzZQorICAgICAgICBtX2ludGVyZmFjZXMtPmRlbGVnYXRlKCktPnBv
c3RUYXNrKG5ldyBSVENWb2lkUmVxdWVzdFRhc2sodGhpcywgcmVxdWVzdCwgZmFsc2UpKTsKK30K
KworV2ViUlRDU2Vzc2lvbkRlc2NyaXB0aW9uIE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRs
ZXI6OmxvY2FsRGVzY3JpcHRpb24oKQoreworICAgIHJldHVybiBtX2xvY2FsRGVzY3JpcHRpb247
Cit9CisKK1dlYlJUQ1Nlc3Npb25EZXNjcmlwdGlvbiBNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25I
YW5kbGVyOjpyZW1vdGVEZXNjcmlwdGlvbigpCit7CisgICAgcmV0dXJuIG1fcmVtb3RlRGVzY3Jp
cHRpb247Cit9CisKK2Jvb2wgTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcjo6dXBkYXRl
SUNFKGNvbnN0IFdlYlJUQ0NvbmZpZ3VyYXRpb24mLCBjb25zdCBXZWJNZWRpYUNvbnN0cmFpbnRz
JikKK3sKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBNb2NrV2ViUlRDUGVlckNvbm5lY3Rp
b25IYW5kbGVyOjphZGRJQ0VDYW5kaWRhdGUoY29uc3QgV2ViUlRDSUNFQ2FuZGlkYXRlJiBpY2VD
YW5kaWRhdGUpCit7CisgICAgbV9jbGllbnQtPmRpZEdlbmVyYXRlSUNFQ2FuZGlkYXRlKGljZUNh
bmRpZGF0ZSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgTW9ja1dlYlJUQ1BlZXJDb25u
ZWN0aW9uSGFuZGxlcjo6YWRkU3RyZWFtKGNvbnN0IFdlYk1lZGlhU3RyZWFtJiBzdHJlYW0sIGNv
bnN0IFdlYk1lZGlhQ29uc3RyYWludHMmKQoreworICAgIG1fc3RyZWFtQ291bnQgKz0gMTsKKyAg
ICBtX2NsaWVudC0+ZGlkQWRkUmVtb3RlU3RyZWFtKHN0cmVhbSk7CisgICAgbV9jbGllbnQtPm5l
Z290aWF0aW9uTmVlZGVkKCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgTW9ja1dlYlJU
Q1BlZXJDb25uZWN0aW9uSGFuZGxlcjo6cmVtb3ZlU3RyZWFtKGNvbnN0IFdlYk1lZGlhU3RyZWFt
JiBzdHJlYW0pCit7CisgICAgbV9zdHJlYW1Db3VudCAtPSAxOworICAgIG1fY2xpZW50LT5kaWRS
ZW1vdmVSZW1vdGVTdHJlYW0oc3RyZWFtKTsKKyAgICBtX2NsaWVudC0+bmVnb3RpYXRpb25OZWVk
ZWQoKTsKK30KKwordm9pZCBNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyOjpnZXRTdGF0
cyhjb25zdCBXZWJSVENTdGF0c1JlcXVlc3QmIHJlcXVlc3QpCit7CisgICAgV2ViUlRDU3RhdHNS
ZXNwb25zZSByZXNwb25zZSA9IHJlcXVlc3QuY3JlYXRlUmVzcG9uc2UoKTsKKyAgICBkb3VibGUg
Y3VycmVudERhdGUgPSBtX2ludGVyZmFjZXMtPmRlbGVnYXRlKCktPmdldEN1cnJlbnRUaW1lSW5N
aWxsaXNlY29uZCgpOworICAgIGlmIChyZXF1ZXN0Lmhhc1NlbGVjdG9yKCkpIHsKKyAgICAgICAg
V2ViTWVkaWFTdHJlYW0gc3RyZWFtID0gcmVxdWVzdC5zdHJlYW0oKTsKKyAgICAgICAgLy8gRklY
TUU6IFRoZXJlIGlzIG5vIGNoZWNrIHRoYXQgdGhlIGZldGNoZWQgdmFsdWVzIGFyZSB2YWxpZC4K
KyAgICAgICAgc2l6ZV90IHJlcG9ydEluZGV4ID0gcmVzcG9uc2UuYWRkUmVwb3J0KCk7CisgICAg
ICAgIHJlc3BvbnNlLmFkZEVsZW1lbnQocmVwb3J0SW5kZXgsIHRydWUsIGN1cnJlbnREYXRlKTsK
KyAgICAgICAgcmVzcG9uc2UuYWRkU3RhdGlzdGljKHJlcG9ydEluZGV4LCB0cnVlLCAidHlwZSIs
ICJ2aWRlbyIpOworICAgIH0gZWxzZSB7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbV9z
dHJlYW1Db3VudDsgKytpKSB7CisgICAgICAgICAgICBzaXplX3QgcmVwb3J0SW5kZXggPSByZXNw
b25zZS5hZGRSZXBvcnQoKTsKKyAgICAgICAgICAgIHJlc3BvbnNlLmFkZEVsZW1lbnQocmVwb3J0
SW5kZXgsIHRydWUsIGN1cnJlbnREYXRlKTsKKyAgICAgICAgICAgIHJlc3BvbnNlLmFkZFN0YXRp
c3RpYyhyZXBvcnRJbmRleCwgdHJ1ZSwgInR5cGUiLCAiYXVkaW8iKTsKKyAgICAgICAgICAgIHJl
cG9ydEluZGV4ID0gcmVzcG9uc2UuYWRkUmVwb3J0KCk7CisgICAgICAgICAgICByZXNwb25zZS5h
ZGRFbGVtZW50KHJlcG9ydEluZGV4LCB0cnVlLCBjdXJyZW50RGF0ZSk7CisgICAgICAgICAgICBy
ZXNwb25zZS5hZGRTdGF0aXN0aWMocmVwb3J0SW5kZXgsIHRydWUsICJ0eXBlIiwgInZpZGVvIik7
CisgICAgICAgICAgICAvLyBXZSBhZGQgYW4gZW1wdHkgcmVtb3RlIHJlcG9ydCBlbGVtZW50Lgor
ICAgICAgICAgICAgcmVzcG9uc2UuYWRkRWxlbWVudChyZXBvcnRJbmRleCwgZmFsc2UsIGN1cnJl
bnREYXRlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBtX2ludGVyZmFjZXMtPmRlbGVnYXRlKCkt
PnBvc3RUYXNrKG5ldyBSVENTdGF0c1JlcXVlc3RTdWNjZWVkZWRUYXNrKHRoaXMsIHJlcXVlc3Qs
IHJlc3BvbnNlKSk7Cit9CisKK1dlYlJUQ0RhdGFDaGFubmVsSGFuZGxlciogTW9ja1dlYlJUQ1Bl
ZXJDb25uZWN0aW9uSGFuZGxlcjo6Y3JlYXRlRGF0YUNoYW5uZWwoY29uc3QgV2ViU3RyaW5nJiBs
YWJlbCwgYm9vbCByZWxpYWJsZSkKK3sKKyAgICBtX2ludGVyZmFjZXMtPmRlbGVnYXRlKCktPnBv
c3RUYXNrKG5ldyBSZW1vdGVEYXRhQ2hhbm5lbFRhc2sodGhpcywgbV9jbGllbnQsIG1faW50ZXJm
YWNlcy0+ZGVsZWdhdGUoKSkpOworCisgICAgcmV0dXJuIG5ldyBNb2NrV2ViUlRDRGF0YUNoYW5u
ZWxIYW5kbGVyKGxhYmVsLCByZWxpYWJsZSwgbV9pbnRlcmZhY2VzLT5kZWxlZ2F0ZSgpKTsKK30K
KworV2ViUlRDRFRNRlNlbmRlckhhbmRsZXIqIE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRs
ZXI6OmNyZWF0ZURUTUZTZW5kZXIoY29uc3QgV2ViTWVkaWFTdHJlYW1UcmFjayYgdHJhY2spCit7
CisgICAgcmV0dXJuIG5ldyBNb2NrV2ViUlRDRFRNRlNlbmRlckhhbmRsZXIodHJhY2ssIG1faW50
ZXJmYWNlcy0+ZGVsZWdhdGUoKSk7Cit9CisKK3ZvaWQgTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9u
SGFuZGxlcjo6c3RvcCgpCit7CisgICAgbV9zdG9wcGVkID0gdHJ1ZTsKK30KKworfQpkaWZmIC0t
Z2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvTW9ja1dl
YlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vVGVzdFJ1bm5lci9zcmMvTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjk2NWEyMDgzYjEzY2ZhZGZkZTkzODA3YTY5NTExY2M3ZjZhNTEzMzgKLS0tIC9kZXYv
bnVsbAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9N
b2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmgKQEAgLTAsMCArMSw4OCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0
cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisg
KiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
TW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcl9oCisjZGVmaW5lIE1vY2tXZWJSVENQZWVy
Q29ubmVjdGlvbkhhbmRsZXJfaAorCisjaW5jbHVkZSAiVGVzdENvbW1vbi5oIgorI2luY2x1ZGUg
IldlYlRhc2suaCIKKyNpbmNsdWRlIDxwdWJsaWMvV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVy
Lmg+CisjaW5jbHVkZSA8cHVibGljL1dlYlJUQ1Nlc3Npb25EZXNjcmlwdGlvbi5oPgorI2luY2x1
ZGUgPHB1YmxpYy9XZWJSVENTZXNzaW9uRGVzY3JpcHRpb25SZXF1ZXN0Lmg+CisjaW5jbHVkZSA8
cHVibGljL1dlYlJUQ1N0YXRzUmVxdWVzdC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNz
IFdlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudDsKK307CisKK25hbWVzcGFjZSBXZWJU
ZXN0UnVubmVyIHsKKworY2xhc3MgVGVzdEludGVyZmFjZXM7CisKK2NsYXNzIE1vY2tXZWJSVENQ
ZWVyQ29ubmVjdGlvbkhhbmRsZXIgOiBwdWJsaWMgV2ViS2l0OjpXZWJSVENQZWVyQ29ubmVjdGlv
bkhhbmRsZXIgeworcHVibGljOgorICAgIE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIo
V2ViS2l0OjpXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQqLCBUZXN0SW50ZXJmYWNl
cyopOworCisgICAgdmlydHVhbCBib29sIGluaXRpYWxpemUoY29uc3QgV2ViS2l0OjpXZWJSVEND
b25maWd1cmF0aW9uJiwgY29uc3QgV2ViS2l0OjpXZWJNZWRpYUNvbnN0cmFpbnRzJikgT1ZFUlJJ
REU7CisKKyAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlT2ZmZXIoY29uc3QgV2ViS2l0OjpXZWJSVENT
ZXNzaW9uRGVzY3JpcHRpb25SZXF1ZXN0JiwgY29uc3QgV2ViS2l0OjpXZWJNZWRpYUNvbnN0cmFp
bnRzJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGNyZWF0ZUFuc3dlcihjb25zdCBXZWJL
aXQ6OldlYlJUQ1Nlc3Npb25EZXNjcmlwdGlvblJlcXVlc3QmLCBjb25zdCBXZWJLaXQ6OldlYk1l
ZGlhQ29uc3RyYWludHMmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0TG9jYWxEZXNj
cmlwdGlvbihjb25zdCBXZWJLaXQ6OldlYlJUQ1ZvaWRSZXF1ZXN0JiwgY29uc3QgV2ViS2l0OjpX
ZWJSVENTZXNzaW9uRGVzY3JpcHRpb24mKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0
UmVtb3RlRGVzY3JpcHRpb24oY29uc3QgV2ViS2l0OjpXZWJSVENWb2lkUmVxdWVzdCYsIGNvbnN0
IFdlYktpdDo6V2ViUlRDU2Vzc2lvbkRlc2NyaXB0aW9uJikgT1ZFUlJJREU7CisgICAgdmlydHVh
bCBXZWJLaXQ6OldlYlJUQ1Nlc3Npb25EZXNjcmlwdGlvbiBsb2NhbERlc2NyaXB0aW9uKCkgT1ZF
UlJJREU7CisgICAgdmlydHVhbCBXZWJLaXQ6OldlYlJUQ1Nlc3Npb25EZXNjcmlwdGlvbiByZW1v
dGVEZXNjcmlwdGlvbigpIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCB1cGRhdGVJQ0UoY29u
c3QgV2ViS2l0OjpXZWJSVENDb25maWd1cmF0aW9uJiwgY29uc3QgV2ViS2l0OjpXZWJNZWRpYUNv
bnN0cmFpbnRzJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGFkZElDRUNhbmRpZGF0ZShj
b25zdCBXZWJLaXQ6OldlYlJUQ0lDRUNhbmRpZGF0ZSYpIE9WRVJSSURFOworICAgIHZpcnR1YWwg
Ym9vbCBhZGRTdHJlYW0oY29uc3QgV2ViS2l0OjpXZWJNZWRpYVN0cmVhbSYsIGNvbnN0IFdlYktp
dDo6V2ViTWVkaWFDb25zdHJhaW50cyYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZW1v
dmVTdHJlYW0oY29uc3QgV2ViS2l0OjpXZWJNZWRpYVN0cmVhbSYpIE9WRVJSSURFOworICAgIHZp
cnR1YWwgdm9pZCBnZXRTdGF0cyhjb25zdCBXZWJLaXQ6OldlYlJUQ1N0YXRzUmVxdWVzdCYpIE9W
RVJSSURFOworICAgIHZpcnR1YWwgV2ViS2l0OjpXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIqIGNy
ZWF0ZURhdGFDaGFubmVsKGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJiBsYWJlbCwgYm9vbCByZWxp
YWJsZSkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBXZWJLaXQ6OldlYlJUQ0RUTUZTZW5kZXJIYW5k
bGVyKiBjcmVhdGVEVE1GU2VuZGVyKGNvbnN0IFdlYktpdDo6V2ViTWVkaWFTdHJlYW1UcmFjayYp
IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzdG9wKCkgT1ZFUlJJREU7CisKKyAgICAvLyBX
ZWJUYXNrIHJlbGF0ZWQgbWV0aG9kcworICAgIFdlYlRhc2tMaXN0KiB0YXNrTGlzdCgpIHsgcmV0
dXJuICZtX3Rhc2tMaXN0OyB9CisKK3ByaXZhdGU6CisgICAgTW9ja1dlYlJUQ1BlZXJDb25uZWN0
aW9uSGFuZGxlcigpIHsgfQorCisgICAgV2ViS2l0OjpXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRs
ZXJDbGllbnQqIG1fY2xpZW50OworICAgIGJvb2wgbV9zdG9wcGVkOworICAgIFdlYlRhc2tMaXN0
IG1fdGFza0xpc3Q7CisgICAgV2ViS2l0OjpXZWJSVENTZXNzaW9uRGVzY3JpcHRpb24gbV9sb2Nh
bERlc2NyaXB0aW9uOworICAgIFdlYktpdDo6V2ViUlRDU2Vzc2lvbkRlc2NyaXB0aW9uIG1fcmVt
b3RlRGVzY3JpcHRpb247CisgICAgaW50IG1fc3RyZWFtQ291bnQ7CisgICAgVGVzdEludGVyZmFj
ZXMqIG1faW50ZXJmYWNlczsKK307CisKK30KKworI2VuZGlmIC8vIE1vY2tXZWJSVENQZWVyQ29u
bmVjdGlvbkhhbmRsZXJfaAorCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0SW50ZXJmYWNlcy5jcHAgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0SW50ZXJmYWNlcy5jcHAKaW5kZXggYzdi
ODEzMzQ5ZTNlNWEyN2ZjMzgxYjI1Y2VkMjRjMGViMjYyM2RiMC4uYjQ0M2RmNTBmMzhiNmRmNjYy
YTMxM2I5YTI0ZTA2M2ZlYWIxOTJiMCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdEludGVyZmFjZXMuY3BwCisrKyBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RJbnRlcmZhY2VzLmNwcApA
QCAtNTMsNiArNTMsNyBAQCBUZXN0SW50ZXJmYWNlczo6VGVzdEludGVyZmFjZXMoKQogICAgICwg
bV90ZXh0SW5wdXRDb250cm9sbGVyKG5ldyBUZXh0SW5wdXRDb250cm9sbGVyKCkpCiAgICAgLCBt
X3Rlc3RSdW5uZXIobmV3IFRlc3RSdW5uZXIoKSkKICAgICAsIG1fd2ViVmlldygwKQorICAgICwg
bV9kZWxlZ2F0ZSgwKQogewogfQogCkBAIC04OCw2ICs4OSw3IEBAIHZvaWQgVGVzdEludGVyZmFj
ZXM6OnNldERlbGVnYXRlKFdlYlRlc3REZWxlZ2F0ZSogZGVsZWdhdGUpCiAgICAgbV9nYW1lcGFk
Q29udHJvbGxlci0+c2V0RGVsZWdhdGUoZGVsZWdhdGUpOwogICAgIC8vIG1fdGV4dElucHV0Q29u
dHJvbGxlciBkb2Vzbid0IGRlcGVuZCBvbiBXZWJUZXN0RGVsZWdhdGUuCiAgICAgbV90ZXN0UnVu
bmVyLT5zZXREZWxlZ2F0ZShkZWxlZ2F0ZSk7CisgICAgbV9kZWxlZ2F0ZSA9IGRlbGVnYXRlOwog
fQogCiB2b2lkIFRlc3RJbnRlcmZhY2VzOjpiaW5kVG8oV2ViRnJhbWUqIGZyYW1lKQpAQCAtMTQ5
LDQgKzE1MSw5IEBAIFdlYlZpZXcqIFRlc3RJbnRlcmZhY2VzOjp3ZWJWaWV3KCkKICAgICByZXR1
cm4gbV93ZWJWaWV3OwogfQogCitXZWJUZXN0RGVsZWdhdGUqIFRlc3RJbnRlcmZhY2VzOjpkZWxl
Z2F0ZSgpCit7CisgICAgcmV0dXJuIG1fZGVsZWdhdGU7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RJbnRlcmZhY2Vz
LmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0SW50
ZXJmYWNlcy5oCmluZGV4IDM4MDY2YzA2MWI1MzhjZWRlYjkxMTVlNDFlNmIwZWUyNmJlYTAxYWQu
LmVjM2ExZGUyODY5OGNmYTBlNzY4MDlhYjQ3MjQwOTg2ZDA4YzNjMzUgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RJbnRlcmZhY2Vz
LmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVz
dEludGVyZmFjZXMuaApAQCAtNjQsNiArNjQsNyBAQCBwdWJsaWM6CiAgICAgRXZlbnRTZW5kZXIq
IGV2ZW50U2VuZGVyKCk7CiAgICAgVGVzdFJ1bm5lciogdGVzdFJ1bm5lcigpOwogICAgIFdlYktp
dDo6V2ViVmlldyogd2ViVmlldygpOworICAgIFdlYlRlc3REZWxlZ2F0ZSogZGVsZWdhdGUoKTsK
IAogCiBwcml2YXRlOgpAQCAtNzMsNiArNzQsNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6YXV0b19w
dHI8VGV4dElucHV0Q29udHJvbGxlcj4gbV90ZXh0SW5wdXRDb250cm9sbGVyOwogICAgIHN0ZDo6
YXV0b19wdHI8VGVzdFJ1bm5lcj4gbV90ZXN0UnVubmVyOwogICAgIFdlYktpdDo6V2ViVmlldyog
bV93ZWJWaWV3OworICAgIFdlYlRlc3REZWxlZ2F0ZSogbV9kZWxlZ2F0ZTsKIH07CiAKIH0KZGlm
ZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dl
YlRlc3RJbnRlcmZhY2VzLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RS
dW5uZXIvc3JjL1dlYlRlc3RJbnRlcmZhY2VzLmNwcAppbmRleCA3MjU3ZGYzZDM1YWU2YjZmMGZi
YjhjMmY2OWU2NGY0OTUyZTkzY2RiLi5iYzQzZDZhYTU1N2IzNGZlZThmNTIzNDg1OTBmMGI2MjM3
ZDcxYWFiIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVu
bmVyL3NyYy9XZWJUZXN0SW50ZXJmYWNlcy5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdEludGVyZmFjZXMuY3BwCkBAIC0zMSw2ICsz
MSw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViVGVzdEludGVyZmFjZXMu
aCIKIAorI2luY2x1ZGUgIk1vY2tXZWJNZWRpYVN0cmVhbUNlbnRlci5oIgorI2luY2x1ZGUgIk1v
Y2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaCIKICNpbmNsdWRlICJUZXN0SW50ZXJmYWNl
cy5oIgogI2luY2x1ZGUgIlRlc3RSdW5uZXIuaCIKIApAQCAtODcsNCArODksMTQgQEAgVGVzdElu
dGVyZmFjZXMqIFdlYlRlc3RJbnRlcmZhY2VzOjp0ZXN0SW50ZXJmYWNlcygpCiAgICAgcmV0dXJu
IG1faW50ZXJmYWNlcy5nZXQoKTsKIH0KIAorV2ViTWVkaWFTdHJlYW1DZW50ZXIqIFdlYlRlc3RJ
bnRlcmZhY2VzOjpjcmVhdGVNZWRpYVN0cmVhbUNlbnRlcihXZWJNZWRpYVN0cmVhbUNlbnRlckNs
aWVudCogY2xpZW50KQoreworICAgIHJldHVybiBuZXcgTW9ja1dlYk1lZGlhU3RyZWFtQ2VudGVy
KGNsaWVudCk7Cit9CisKK1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlciogV2ViVGVzdEludGVy
ZmFjZXM6OmNyZWF0ZVdlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcihXZWJSVENQZWVyQ29ubmVj
dGlvbkhhbmRsZXJDbGllbnQqIGNsaWVudCkKK3sKKyAgICByZXR1cm4gbmV3IE1vY2tXZWJSVENQ
ZWVyQ29ubmVjdGlvbkhhbmRsZXIoY2xpZW50LCBtX2ludGVyZmFjZXMuZ2V0KCkpOworfQorCiB9
CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3Ny
Yy9XZWJUZXN0UHJveHkuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1
bm5lci9zcmMvV2ViVGVzdFByb3h5LmNwcAppbmRleCA2YmU2YTQ3NmQ0NWVhNGJmNzc2MDVhZjNm
OWE4OWI4YjI2N2VlN2NiLi4wODE4ZDIxZjFjZDg3NTY3M2JiNWU0ZDA5MTlmNmVlMzM0NGFiNGY0
IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3Ny
Yy9XZWJUZXN0UHJveHkuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rl
c3RSdW5uZXIvc3JjL1dlYlRlc3RQcm94eS5jcHAKQEAgLTUyLDYgKzUyLDcgQEAKICNpbmNsdWRl
ICJXZWJUZXN0RGVsZWdhdGUuaCIKICNpbmNsdWRlICJXZWJUZXN0SW50ZXJmYWNlcy5oIgogI2lu
Y2x1ZGUgIldlYlRlc3RSdW5uZXIuaCIKKyNpbmNsdWRlICJXZWJVc2VyTWVkaWFDbGllbnRNb2Nr
LmgiCiAjaW5jbHVkZSAiV2ViVmlldy5oIgogI2luY2x1ZGUgPHB1YmxpYy9XZWJDU3RyaW5nLmg+
CiAjaW5jbHVkZSA8cHVibGljL1dlYlVSTEVycm9yLmg+CkBAIC01OTUsNiArNTk2LDEzIEBAIHZv
aWQgV2ViVGVzdFByb3h5QmFzZTo6c2hvd0NvbnRleHRNZW51KFdlYkZyYW1lKiwgY29uc3QgV2Vi
Q29udGV4dE1lbnVEYXRhJiBjb250CiAgICAgbV90ZXN0SW50ZXJmYWNlcy0+ZXZlbnRTZW5kZXIo
KS0+c2V0Q29udGV4dE1lbnVEYXRhKGNvbnRleHRNZW51RGF0YSk7CiB9CiAKK1dlYlVzZXJNZWRp
YUNsaWVudCogV2ViVGVzdFByb3h5QmFzZTo6dXNlck1lZGlhQ2xpZW50KCkKK3sKKyAgICBpZiAo
IW1fdXNlck1lZGlhQ2xpZW50LmdldCgpKQorICAgICAgICBtX3VzZXJNZWRpYUNsaWVudCA9IGF1
dG9fcHRyPFdlYlVzZXJNZWRpYUNsaWVudE1vY2s+KG5ldyBXZWJVc2VyTWVkaWFDbGllbnRNb2Nr
KG1fZGVsZWdhdGUpKTsKKyAgICByZXR1cm4gbV91c2VyTWVkaWFDbGllbnQuZ2V0KCk7Cit9CisK
IC8vIFNpbXVsYXRlIGEgcHJpbnQgYnkgZ29pbmcgaW50byBwcmludCBtb2RlIGFuZCB0aGVuIGV4
aXQgc3RyYWlnaHQgYXdheS4KIHZvaWQgV2ViVGVzdFByb3h5QmFzZTo6cHJpbnRQYWdlKFdlYkZy
YW1lKiBmcmFtZSkKIHsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1Rlc3RSdW5uZXIvc3JjL1dlYlVzZXJNZWRpYUNsaWVudE1vY2suY3BwIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVXNlck1lZGlhQ2xpZW50TW9jay5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMzI2NzliNDVmOWNlNzVjNDMwMTgyYWI3OTZmNjM2Y2Q3OWE1ZGFjNwot
LS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5u
ZXIvc3JjL1dlYlVzZXJNZWRpYUNsaWVudE1vY2suY3BwCkBAIC0wLDAgKzEsMTI2IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRp
c3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
KyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlVzZXJNZWRpYUNsaWVudE1vY2suaCIKKworI2lu
Y2x1ZGUgIk1vY2tDb25zdHJhaW50cy5oIgorI2luY2x1ZGUgIldlYkRvY3VtZW50LmgiCisjaW5j
bHVkZSAiV2ViTWVkaWFTdHJlYW1SZWdpc3RyeS5oIgorI2luY2x1ZGUgIldlYlRlc3REZWxlZ2F0
ZS5oIgorI2luY2x1ZGUgIldlYlVzZXJNZWRpYVJlcXVlc3QuaCIKKyNpbmNsdWRlIDxwdWJsaWMv
V2ViTWVkaWFDb25zdHJhaW50cy5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJNZWRpYVN0cmVhbS5o
PgorI2luY2x1ZGUgPHB1YmxpYy9XZWJNZWRpYVN0cmVhbVNvdXJjZS5oPgorI2luY2x1ZGUgPHB1
YmxpYy9XZWJWZWN0b3IuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworbmFtZXNwYWNl
IFdlYlRlc3RSdW5uZXIgeworCitjbGFzcyBVc2VyTWVkaWFSZXF1ZXN0VGFzayA6IHB1YmxpYyBX
ZWJNZXRob2RUYXNrPFdlYlVzZXJNZWRpYUNsaWVudE1vY2s+IHsKK3B1YmxpYzoKKyAgICBVc2Vy
TWVkaWFSZXF1ZXN0VGFzayhXZWJVc2VyTWVkaWFDbGllbnRNb2NrKiBvYmplY3QsIGNvbnN0IFdl
YlVzZXJNZWRpYVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdlYk1lZGlhU3RyZWFtIHJlc3VsdCkK
KyAgICAgICAgOiBXZWJNZXRob2RUYXNrPFdlYlVzZXJNZWRpYUNsaWVudE1vY2s+KG9iamVjdCkK
KyAgICAgICAgLCBtX3JlcXVlc3QocmVxdWVzdCkKKyAgICAgICAgLCBtX3Jlc3VsdChyZXN1bHQp
CisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBydW5JZlZhbGlkKCkgT1ZFUlJJREUK
KyAgICB7CisgICAgICAgIGlmIChtX3Jlc3VsdC5pc051bGwoKSkKKyAgICAgICAgICAgIG1fcmVx
dWVzdC5yZXF1ZXN0RmFpbGVkKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fcmVxdWVz
dC5yZXF1ZXN0U3VjY2VlZGVkKG1fcmVzdWx0KTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgV2Vi
VXNlck1lZGlhUmVxdWVzdCBtX3JlcXVlc3Q7CisgICAgV2ViTWVkaWFTdHJlYW0gbV9yZXN1bHQ7
Cit9OworCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworCitjbGFzcyBNb2NrRXh0
cmFEYXRhIDogcHVibGljIFdlYk1lZGlhU3RyZWFtOjpFeHRyYURhdGEgeworcHVibGljOgorICAg
IGludCBmb287Cit9OworCitXZWJVc2VyTWVkaWFDbGllbnRNb2NrOjpXZWJVc2VyTWVkaWFDbGll
bnRNb2NrKFdlYlRlc3REZWxlZ2F0ZSogZGVsZWdhdGUpCisgICAgOiBtX2RlbGVnYXRlKGRlbGVn
YXRlKQoreworfQorCit2b2lkIFdlYlVzZXJNZWRpYUNsaWVudE1vY2s6OnJlcXVlc3RVc2VyTWVk
aWEoY29uc3QgV2ViVXNlck1lZGlhUmVxdWVzdCYgc3RyZWFtUmVxdWVzdCwgY29uc3QgV2ViVmVj
dG9yPFdlYk1lZGlhU3RyZWFtU291cmNlPiYgYXVkaW9Tb3VyY2VzVmVjdG9yLCBjb25zdCBXZWJW
ZWN0b3I8V2ViTWVkaWFTdHJlYW1Tb3VyY2U+JiB2aWRlb1NvdXJjZXNWZWN0b3IpCit7CisgICAg
V0VCS0lUX0FTU0VSVCghc3RyZWFtUmVxdWVzdC5pc051bGwoKSk7CisgICAgV2ViVXNlck1lZGlh
UmVxdWVzdCByZXF1ZXN0ID0gc3RyZWFtUmVxdWVzdDsKKworICAgIGlmIChyZXF1ZXN0Lm93bmVy
RG9jdW1lbnQoKS5pc051bGwoKSB8fCAhcmVxdWVzdC5vd25lckRvY3VtZW50KCkuZnJhbWUoKSkg
eworICAgICAgICBtX2RlbGVnYXRlLT5wb3N0VGFzayhuZXcgVXNlck1lZGlhUmVxdWVzdFRhc2so
dGhpcywgcmVxdWVzdCwgV2ViTWVkaWFTdHJlYW0oKSkpOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgV2ViTWVkaWFDb25zdHJhaW50cyBjb25zdHJhaW50cyA9IHJlcXVlc3QuYXVkaW9D
b25zdHJhaW50cygpOworICAgIGlmICghY29uc3RyYWludHMuaXNOdWxsKCkgJiYgIU1vY2tDb25z
dHJhaW50czo6dmVyaWZ5Q29uc3RyYWludHMoY29uc3RyYWludHMpKSB7CisgICAgICAgIG1fZGVs
ZWdhdGUtPnBvc3RUYXNrKG5ldyBVc2VyTWVkaWFSZXF1ZXN0VGFzayh0aGlzLCByZXF1ZXN0LCBX
ZWJNZWRpYVN0cmVhbSgpKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgY29uc3RyYWlu
dHMgPSByZXF1ZXN0LnZpZGVvQ29uc3RyYWludHMoKTsKKyAgICBpZiAoIWNvbnN0cmFpbnRzLmlz
TnVsbCgpICYmICFNb2NrQ29uc3RyYWludHM6OnZlcmlmeUNvbnN0cmFpbnRzKGNvbnN0cmFpbnRz
KSkgeworICAgICAgICBtX2RlbGVnYXRlLT5wb3N0VGFzayhuZXcgVXNlck1lZGlhUmVxdWVzdFRh
c2sodGhpcywgcmVxdWVzdCwgV2ViTWVkaWFTdHJlYW0oKSkpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgY29uc3Qgc2l6ZV90IHplcm8gPSAwOworICAgIGNvbnN0IHNpemVfdCBvbmUg
PSAxOworICAgIFdlYlZlY3RvcjxXZWJNZWRpYVN0cmVhbVNvdXJjZT4gYXVkaW9Tb3VyY2VzKHJl
cXVlc3QuYXVkaW8oKSA/IG9uZSA6IHplcm8pOworICAgIFdlYlZlY3RvcjxXZWJNZWRpYVN0cmVh
bVNvdXJjZT4gdmlkZW9Tb3VyY2VzKHJlcXVlc3QudmlkZW8oKSA/IG9uZSA6IHplcm8pOworCisg
ICAgaWYgKHJlcXVlc3QuYXVkaW8oKSkKKyAgICAgICAgYXVkaW9Tb3VyY2VzWzBdLmluaXRpYWxp
emUoIk1vY2tBdWRpb0RldmljZSMxIiwgV2ViTWVkaWFTdHJlYW1Tb3VyY2U6OlR5cGVBdWRpbywg
Ik1vY2sgYXVkaW8gZGV2aWNlIik7CisKKyAgICBpZiAocmVxdWVzdC52aWRlbygpKQorICAgICAg
ICB2aWRlb1NvdXJjZXNbMF0uaW5pdGlhbGl6ZSgiTW9ja1ZpZGVvRGV2aWNlIzEiLCBXZWJNZWRp
YVN0cmVhbVNvdXJjZTo6VHlwZVZpZGVvLCAiTW9jayB2aWRlbyBkZXZpY2UiKTsKKworICAgIFdl
Yk1lZGlhU3RyZWFtIHN0cmVhbTsKKyAgICBzdHJlYW0uaW5pdGlhbGl6ZSgiZm9vYmFyIiwgYXVk
aW9Tb3VyY2VzLCB2aWRlb1NvdXJjZXMpOworCisgICAgc3RyZWFtLnNldEV4dHJhRGF0YShuZXcg
TW9ja0V4dHJhRGF0YSgpKTsKKworICAgIG1fZGVsZWdhdGUtPnBvc3RUYXNrKG5ldyBVc2VyTWVk
aWFSZXF1ZXN0VGFzayh0aGlzLCByZXF1ZXN0LCBzdHJlYW0pKTsKK30KKwordm9pZCBXZWJVc2Vy
TWVkaWFDbGllbnRNb2NrOjpjYW5jZWxVc2VyTWVkaWFSZXF1ZXN0KGNvbnN0IFdlYlVzZXJNZWRp
YVJlcXVlc3QmKQoreworfQorCit9CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJVc2VyTWVkaWFDbGllbnRNb2NrLmggYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJVc2VyTWVkaWFDbGllbnRN
b2NrLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZWM5OTJhMDY5OWZmYzJmZWNhZDQ5YTY5OTkyNDljYWFhYTYyZDQy
YwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RS
dW5uZXIvc3JjL1dlYlVzZXJNZWRpYUNsaWVudE1vY2suaApAQCAtMCwwICsxLDYzIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRp
c3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
KyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBXZWJVc2VyTWVkaWFDbGllbnRNb2NrX2gKKyNkZWZpbmUgV2ViVXNlck1lZGlhQ2xpZW50TW9j
a19oCisKKyNpbmNsdWRlICJUZXN0Q29tbW9uLmgiCisjaW5jbHVkZSAiV2ViVGFzay5oIgorI2lu
Y2x1ZGUgIldlYlVzZXJNZWRpYUNsaWVudC5oIgorI2luY2x1ZGUgPHB1YmxpYy9XZWJDb21tb24u
aD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViU3RyaW5nLmg+CisjaW5jbHVkZSA8cHVibGljL1dlYlVS
TC5oPgorCituYW1lc3BhY2UgV2ViVGVzdFJ1bm5lciB7CisKK2NsYXNzIFdlYlRlc3REZWxlZ2F0
ZTsKKworY2xhc3MgV2ViVXNlck1lZGlhQ2xpZW50TW9jayA6IHB1YmxpYyBXZWJLaXQ6OldlYlVz
ZXJNZWRpYUNsaWVudCB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgV2ViVXNlck1lZGlhQ2xpZW50
TW9jayhXZWJUZXN0RGVsZWdhdGUqKTsKKyAgICB+V2ViVXNlck1lZGlhQ2xpZW50TW9jaygpIHsg
fQorCisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RVc2VyTWVkaWEoY29uc3QgV2ViS2l0OjpXZWJV
c2VyTWVkaWFSZXF1ZXN0JiwgY29uc3QgV2ViS2l0OjpXZWJWZWN0b3I8V2ViS2l0OjpXZWJNZWRp
YVN0cmVhbVNvdXJjZT4mLCBjb25zdCBXZWJLaXQ6OldlYlZlY3RvcjxXZWJLaXQ6OldlYk1lZGlh
U3RyZWFtU291cmNlPiYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxVc2VyTWVk
aWFSZXF1ZXN0KGNvbnN0IFdlYktpdDo6V2ViVXNlck1lZGlhUmVxdWVzdCYpOworCisgICAgLy8g
VGFzayByZWxhdGVkIG1ldGhvZHMKKyAgICBXZWJUYXNrTGlzdCogdGFza0xpc3QoKSB7IHJldHVy
biAmbV90YXNrTGlzdDsgfQorCitwcml2YXRlOgorICAgIFdlYlRhc2tMaXN0IG1fdGFza0xpc3Q7
CisgICAgV2ViVGVzdERlbGVnYXRlKiBtX2RlbGVnYXRlOworfTsKKworfQorCisjZW5kaWYgLy8g
V2ViVXNlck1lZGlhQ2xpZW50TW9ja19oCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9UZXN0U2hlbGwuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
VGVzdFNoZWxsLmNwcAppbmRleCBmYjRmOTI4NTE3NmU1YmEwMjQyODM4N2QxNjdkOGMxNGFlZWJm
ZjAzLi4xMzM2YjAwOGE1NGI4NzFhNTUyMjdkMTIwOWM4MjkyNDkxNmM0ZDcxIDEwMDY0NAotLS0g
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwuY3BwCisrKyBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5jcHAKQEAgLTMzLDYgKzMzLDcgQEAK
IAogI2luY2x1ZGUgIkRSVERldlRvb2xzQWdlbnQuaCIKICNpbmNsdWRlICJEUlREZXZUb29sc0Ns
aWVudC5oIgorI2luY2x1ZGUgIk1vY2tXZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaCIKICNpbmNsdWRl
ICJNb2NrV2ViUHJlcmVuZGVyaW5nU3VwcG9ydC5oIgogI2luY2x1ZGUgIldlYkFycmF5QnVmZmVy
Vmlldy5oIgogI2luY2x1ZGUgIldlYkRhdGFTb3VyY2UuaCIKQEAgLTE1OCw5ICsxNTksMTAgQEAg
VGVzdFNoZWxsOjpUZXN0U2hlbGwoKQogICAgIG1fdGltZW91dCA9IDMwICogMTAwMDsKIH0KIAot
dm9pZCBUZXN0U2hlbGw6OmluaXRpYWxpemUoKQordm9pZCBUZXN0U2hlbGw6OmluaXRpYWxpemUo
TW9ja1dlYktpdFBsYXRmb3JtU3VwcG9ydCogcGxhdGZvcm1TdXBwb3J0KQogewogICAgIG1fdGVz
dEludGVyZmFjZXMgPSBhZG9wdFB0cihuZXcgV2ViVGVzdEludGVyZmFjZXMoKSk7CisgICAgcGxh
dGZvcm1TdXBwb3J0LT5zZXRJbnRlcmZhY2VzKG1fdGVzdEludGVyZmFjZXMuZ2V0KCkpOwogICAg
IG1fZGV2VG9vbHNUZXN0SW50ZXJmYWNlcyA9IGFkb3B0UHRyKG5ldyBXZWJUZXN0SW50ZXJmYWNl
cygpKTsKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklD
QVRJT05TKQogICAgIG1fbm90aWZpY2F0aW9uUHJlc2VudGVyID0gYWRvcHRQdHIobmV3IE5vdGlm
aWNhdGlvblByZXNlbnRlcih0aGlzKSk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9UZXN0U2hlbGwuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rl
c3RTaGVsbC5oCmluZGV4IDdhMTcxYzc0MzdjNjZkODc1OTgyODBmNjNiYWY3YmVjNWIxNTRkNzQu
LmQxM2EzMjliMzc4NTlmYmIyNTM4YjA0OWRiNmU4MTRlNDA3NGMxNWMgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5oCisrKyBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5oCkBAIC01Niw2ICs1Niw3IEBAIGNsYXNzIERS
VERldlRvb2xzQWdlbnQ7CiBjbGFzcyBEUlREZXZUb29sc0NhbGxBcmdzOwogY2xhc3MgRFJURGV2
VG9vbHNDbGllbnQ7CiBjbGFzcyBNb2NrV2ViUHJlcmVuZGVyaW5nU3VwcG9ydDsKK2NsYXNzIE1v
Y2tXZWJLaXRQbGF0Zm9ybVN1cHBvcnQ7CiAKIHN0cnVjdCBUZXN0UGFyYW1zIHsKICAgICBib29s
IGR1bXBUcmVlOwpAQCAtNzcsNyArNzgsNyBAQCBwdWJsaWM6CiAgICAgVGVzdFNoZWxsKCk7CiAg
ICAgflRlc3RTaGVsbCgpOwogCi0gICAgdm9pZCBpbml0aWFsaXplKCk7CisgICAgdm9pZCBpbml0
aWFsaXplKE1vY2tXZWJLaXRQbGF0Zm9ybVN1cHBvcnQqKTsKIAogICAgIC8vIFRoZSBtYWluIFdl
YlZpZXcuCiAgICAgV2ViS2l0OjpXZWJWaWV3KiB3ZWJWaWV3KCkgY29uc3QgeyByZXR1cm4gbV93
ZWJWaWV3OyB9CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJV
c2VyTWVkaWFDbGllbnRNb2NrLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dl
YlVzZXJNZWRpYUNsaWVudE1vY2suY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2
NjBhZjE0NDViOWQ0NDhhODVlYzgyMmUzODk2YjJlY2FlMzAyMzc3Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1dlYlVzZXJNZWRpYUNsaWVudE1vY2suY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTI4ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAq
Ci0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
LSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLQotI2lu
Y2x1ZGUgIldlYlVzZXJNZWRpYUNsaWVudE1vY2suaCIKLQotI2luY2x1ZGUgIk1vY2tDb25zdHJh
aW50cy5oIgotI2luY2x1ZGUgIlRhc2suaCIKLSNpbmNsdWRlICJXZWJEb2N1bWVudC5oIgotI2lu
Y2x1ZGUgIldlYk1lZGlhU3RyZWFtUmVnaXN0cnkuaCIKLSNpbmNsdWRlICJXZWJVc2VyTWVkaWFS
ZXF1ZXN0LmgiCi0jaW5jbHVkZSA8cHVibGljL1dlYk1lZGlhQ29uc3RyYWludHMuaD4KLSNpbmNs
dWRlIDxwdWJsaWMvV2ViTWVkaWFTdHJlYW0uaD4KLSNpbmNsdWRlIDxwdWJsaWMvV2ViTWVkaWFT
dHJlYW1Tb3VyY2UuaD4KLSNpbmNsdWRlIDxwdWJsaWMvV2ViVmVjdG9yLmg+Ci0jaW5jbHVkZSA8
d3RmL0Fzc2VydGlvbnMuaD4KLQotdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKLXVzaW5nIG5hbWVz
cGFjZSBXZWJUZXN0UnVubmVyOwotCi1jbGFzcyBVc2VyTWVkaWFSZXF1ZXN0VGFzayA6IHB1Ymxp
YyBXZWJNZXRob2RUYXNrPFdlYlVzZXJNZWRpYUNsaWVudE1vY2s+IHsKLXB1YmxpYzoKLSAgICBV
c2VyTWVkaWFSZXF1ZXN0VGFzayhXZWJVc2VyTWVkaWFDbGllbnRNb2NrKiBvYmplY3QsIGNvbnN0
IFdlYlVzZXJNZWRpYVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdlYk1lZGlhU3RyZWFtIHJlc3Vs
dCkKLSAgICAgICAgOiBXZWJNZXRob2RUYXNrPFdlYlVzZXJNZWRpYUNsaWVudE1vY2s+KG9iamVj
dCkKLSAgICAgICAgLCBtX3JlcXVlc3QocmVxdWVzdCkKLSAgICAgICAgLCBtX3Jlc3VsdChyZXN1
bHQpCi0gICAgewotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCBydW5JZlZhbGlkKCkgT1ZFUlJJ
REUKLSAgICB7Ci0gICAgICAgIGlmIChtX3Jlc3VsdC5pc051bGwoKSkKLSAgICAgICAgICAgIG1f
cmVxdWVzdC5yZXF1ZXN0RmFpbGVkKCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fcmVx
dWVzdC5yZXF1ZXN0U3VjY2VlZGVkKG1fcmVzdWx0KTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAg
V2ViVXNlck1lZGlhUmVxdWVzdCBtX3JlcXVlc3Q7Ci0gICAgV2ViTWVkaWFTdHJlYW0gbV9yZXN1
bHQ7Ci19OwotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi1jbGFzcyBNb2Nr
RXh0cmFEYXRhIDogcHVibGljIFdlYk1lZGlhU3RyZWFtOjpFeHRyYURhdGEgewotcHVibGljOgot
ICAgIGludCBmb287Ci19OwotCi1QYXNzT3duUHRyPFdlYlVzZXJNZWRpYUNsaWVudE1vY2s+IFdl
YlVzZXJNZWRpYUNsaWVudE1vY2s6OmNyZWF0ZSgpCi17Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5l
dyBXZWJVc2VyTWVkaWFDbGllbnRNb2NrKCkpOwotfQotCi12b2lkIFdlYlVzZXJNZWRpYUNsaWVu
dE1vY2s6OnJlcXVlc3RVc2VyTWVkaWEoY29uc3QgV2ViVXNlck1lZGlhUmVxdWVzdCYgc3RyZWFt
UmVxdWVzdCwgY29uc3QgV2ViVmVjdG9yPFdlYk1lZGlhU3RyZWFtU291cmNlPiYgYXVkaW9Tb3Vy
Y2VzVmVjdG9yLCBjb25zdCBXZWJWZWN0b3I8V2ViTWVkaWFTdHJlYW1Tb3VyY2U+JiB2aWRlb1Nv
dXJjZXNWZWN0b3IpCi17Ci0gICAgQVNTRVJUKCFzdHJlYW1SZXF1ZXN0LmlzTnVsbCgpKTsKLSAg
ICBXZWJVc2VyTWVkaWFSZXF1ZXN0IHJlcXVlc3QgPSBzdHJlYW1SZXF1ZXN0OwotCi0gICAgaWYg
KHJlcXVlc3Qub3duZXJEb2N1bWVudCgpLmlzTnVsbCgpIHx8ICFyZXF1ZXN0Lm93bmVyRG9jdW1l
bnQoKS5mcmFtZSgpKSB7Ci0gICAgICAgIHBvc3RUYXNrKG5ldyBVc2VyTWVkaWFSZXF1ZXN0VGFz
ayh0aGlzLCByZXF1ZXN0LCBXZWJNZWRpYVN0cmVhbSgpKSk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBXZWJNZWRpYUNvbnN0cmFpbnRzIGNvbnN0cmFpbnRzID0gcmVxdWVzdC5hdWRp
b0NvbnN0cmFpbnRzKCk7Ci0gICAgaWYgKCFjb25zdHJhaW50cy5pc051bGwoKSAmJiAhTW9ja0Nv
bnN0cmFpbnRzOjp2ZXJpZnlDb25zdHJhaW50cyhjb25zdHJhaW50cykpIHsKLSAgICAgICAgcG9z
dFRhc2sobmV3IFVzZXJNZWRpYVJlcXVlc3RUYXNrKHRoaXMsIHJlcXVlc3QsIFdlYk1lZGlhU3Ry
ZWFtKCkpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjb25zdHJhaW50cyA9IHJlcXVl
c3QudmlkZW9Db25zdHJhaW50cygpOwotICAgIGlmICghY29uc3RyYWludHMuaXNOdWxsKCkgJiYg
IU1vY2tDb25zdHJhaW50czo6dmVyaWZ5Q29uc3RyYWludHMoY29uc3RyYWludHMpKSB7Ci0gICAg
ICAgIHBvc3RUYXNrKG5ldyBVc2VyTWVkaWFSZXF1ZXN0VGFzayh0aGlzLCByZXF1ZXN0LCBXZWJN
ZWRpYVN0cmVhbSgpKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBjb25zdCBzaXpl
X3QgemVybyA9IDA7Ci0gICAgY29uc3Qgc2l6ZV90IG9uZSA9IDE7Ci0gICAgV2ViVmVjdG9yPFdl
Yk1lZGlhU3RyZWFtU291cmNlPiBhdWRpb1NvdXJjZXMocmVxdWVzdC5hdWRpbygpID8gb25lIDog
emVybyk7Ci0gICAgV2ViVmVjdG9yPFdlYk1lZGlhU3RyZWFtU291cmNlPiB2aWRlb1NvdXJjZXMo
cmVxdWVzdC52aWRlbygpID8gb25lIDogemVybyk7Ci0KLSAgICBpZiAocmVxdWVzdC5hdWRpbygp
KQotICAgICAgICBhdWRpb1NvdXJjZXNbMF0uaW5pdGlhbGl6ZSgiTW9ja0F1ZGlvRGV2aWNlIzEi
LCBXZWJNZWRpYVN0cmVhbVNvdXJjZTo6VHlwZUF1ZGlvLCAiTW9jayBhdWRpbyBkZXZpY2UiKTsK
LQotICAgIGlmIChyZXF1ZXN0LnZpZGVvKCkpCi0gICAgICAgIHZpZGVvU291cmNlc1swXS5pbml0
aWFsaXplKCJNb2NrVmlkZW9EZXZpY2UjMSIsIFdlYk1lZGlhU3RyZWFtU291cmNlOjpUeXBlVmlk
ZW8sICJNb2NrIHZpZGVvIGRldmljZSIpOwotCi0gICAgV2ViTWVkaWFTdHJlYW0gc3RyZWFtOwot
ICAgIHN0cmVhbS5pbml0aWFsaXplKCJmb29iYXIiLCBhdWRpb1NvdXJjZXMsIHZpZGVvU291cmNl
cyk7Ci0KLSAgICBzdHJlYW0uc2V0RXh0cmFEYXRhKG5ldyBNb2NrRXh0cmFEYXRhKCkpOwotCi0g
ICAgcG9zdFRhc2sobmV3IFVzZXJNZWRpYVJlcXVlc3RUYXNrKHRoaXMsIHJlcXVlc3QsIHN0cmVh
bSkpOwotfQotCi12b2lkIFdlYlVzZXJNZWRpYUNsaWVudE1vY2s6OmNhbmNlbFVzZXJNZWRpYVJl
cXVlc3QoY29uc3QgV2ViVXNlck1lZGlhUmVxdWVzdCYpCi17Ci19Ci0KLSNlbmRpZiAvLyBFTkFC
TEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vV2ViVXNlck1lZGlhQ2xpZW50TW9jay5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vV2ViVXNlck1lZGlhQ2xpZW50TW9jay5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBlZjRjYjUxZDFhZmNmZGYzZjA1MjI1ZDc4MGI2MjVhMDlhMjQ0NTRkLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1dlYlVzZXJNZWRpYUNsaWVudE1vY2suaAorKysgL2Rldi9udWxsCkBAIC0xLDYzICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAq
Ci0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
LSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaWZuZGVmIFdlYlVzZXJNZWRpYUNsaWVudE1vY2tfaAotI2RlZmluZSBXZWJVc2VyTWVk
aWFDbGllbnRNb2NrX2gKLQotI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0KLSNpbmNsdWRlICJX
ZWJUYXNrLmgiCi0jaW5jbHVkZSAiV2ViVXNlck1lZGlhQ2xpZW50LmgiCi0jaW5jbHVkZSAid2Vi
a2l0L3N1cHBvcnQvdGVzdF9tZWRpYV9zdHJlYW1fY2xpZW50LmgiCi0jaW5jbHVkZSA8cHVibGlj
L1dlYkNvbW1vbi5oPgotI2luY2x1ZGUgPHB1YmxpYy9XZWJTdHJpbmcuaD4KLSNpbmNsdWRlIDxw
dWJsaWMvV2ViVVJMLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KLQotY2xhc3MgV2Vi
VXNlck1lZGlhQ2xpZW50TW9jayA6IHB1YmxpYyBXZWJLaXQ6OldlYlVzZXJNZWRpYUNsaWVudCB7
Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8V2ViVXNlck1lZGlhQ2xpZW50TW9jaz4g
Y3JlYXRlKCk7Ci0gICAgfldlYlVzZXJNZWRpYUNsaWVudE1vY2soKSB7IH0KLQotICAgIHZpcnR1
YWwgdm9pZCByZXF1ZXN0VXNlck1lZGlhKGNvbnN0IFdlYktpdDo6V2ViVXNlck1lZGlhUmVxdWVz
dCYsIGNvbnN0IFdlYktpdDo6V2ViVmVjdG9yPFdlYktpdDo6V2ViTWVkaWFTdHJlYW1Tb3VyY2U+
JiwgY29uc3QgV2ViS2l0OjpXZWJWZWN0b3I8V2ViS2l0OjpXZWJNZWRpYVN0cmVhbVNvdXJjZT4m
KSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsVXNlck1lZGlhUmVxdWVzdChjb25z
dCBXZWJLaXQ6OldlYlVzZXJNZWRpYVJlcXVlc3QmKTsKLQotICAgIC8vIFRhc2sgcmVsYXRlZCBt
ZXRob2RzCi0gICAgV2ViVGVzdFJ1bm5lcjo6V2ViVGFza0xpc3QqIHRhc2tMaXN0KCkgeyByZXR1
cm4gJm1fdGFza0xpc3Q7IH0KLQotcHJpdmF0ZToKLSAgICBXZWJVc2VyTWVkaWFDbGllbnRNb2Nr
KCkgeyB9Ci0KLSAgICBXZWJUZXN0UnVubmVyOjpXZWJUYXNrTGlzdCBtX3Rhc2tMaXN0OwotfTsK
LQotI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCi0KLSNlbmRpZiAvLyBXZWJVc2VyTWVk
aWFDbGllbnRNb2NrX2gKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1dlYlZpZXdIb3N0LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdI
b3N0LmNwcAppbmRleCAyODUzNjExOTBlYzllZTU5OGNjZTg3YzRiNTZmYTk1MjQwMzJkZjUxLi5j
NTQ1OTMwYWFkM2U2YjJjZmE4YWY1ZjU0ZDNkMDliZGIyNzc1MDkwIDEwMDY0NAotLS0gYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAKKysrIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwCkBAIC01OCw3ICs1OCw2IEBACiAj
aW5jbHVkZSAiV2ViU2NyZWVuSW5mby5oIgogI2luY2x1ZGUgIldlYlNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5oIgogI2luY2x1ZGUgIldlYlN0b3JhZ2VOYW1lc3BhY2UuaCIKLSNpbmNsdWRlICJXZWJV
c2VyTWVkaWFDbGllbnRNb2NrLmgiCiAjaW5jbHVkZSAiV2ViVmlldy5oIgogI2luY2x1ZGUgIldl
YldpbmRvd0ZlYXR1cmVzLmgiCiAjaW5jbHVkZSAic2tpYS9leHQvcGxhdGZvcm1fY2FudmFzLmgi
CkBAIC0zMjAsMjAgKzMxOSw2IEBAIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50KiBXZWJWaWV3
SG9zdDo6ZGV2aWNlT3JpZW50YXRpb25DbGllbnQoKQogICAgIHJldHVybiBkZXZpY2VPcmllbnRh
dGlvbkNsaWVudE1vY2soKTsKIH0KIAotI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi1XZWJVc2Vy
TWVkaWFDbGllbnQqIFdlYlZpZXdIb3N0Ojp1c2VyTWVkaWFDbGllbnQoKQotewotICAgIHJldHVy
biB1c2VyTWVkaWFDbGllbnRNb2NrKCk7Ci19Ci0KLVdlYlVzZXJNZWRpYUNsaWVudE1vY2sqIFdl
YlZpZXdIb3N0Ojp1c2VyTWVkaWFDbGllbnRNb2NrKCkKLXsKLSAgICBpZiAoIW1fdXNlck1lZGlh
Q2xpZW50TW9jay5nZXQoKSkKLSAgICAgICAgbV91c2VyTWVkaWFDbGllbnRNb2NrID0gV2ViVXNl
ck1lZGlhQ2xpZW50TW9jazo6Y3JlYXRlKCk7Ci0gICAgcmV0dXJuIG1fdXNlck1lZGlhQ2xpZW50
TW9jay5nZXQoKTsKLX0KLSNlbmRpZgotCiAvLyBXZWJXaWRnZXRDbGllbnQgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogdm9pZCBX
ZWJWaWV3SG9zdDo6ZGlkQXV0b1Jlc2l6ZShjb25zdCBXZWJTaXplJiBuZXdTaXplKQpkaWZmIC0t
Z2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaCBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmgKaW5kZXggYjlkZmM0MWRhZDBi
M2UwNDVhY2VhMTlhYzlmNTUzMmIyMzU5NWU1My4uZDNhZTljMjM0YTYzNmE1YzZjODRjZWVmM2Jk
YjkzZDk3MjgyODYwZCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
V2ViVmlld0hvc3QuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3
SG9zdC5oCkBAIC00OCw3ICs0OCw2IEBAIGNsYXNzIE1vY2tXZWJTcGVlY2hJbnB1dENvbnRyb2xs
ZXI7CiBjbGFzcyBNb2NrV2ViU3BlZWNoUmVjb2duaXplcjsKIGNsYXNzIFNrQ2FudmFzOwogY2xh
c3MgVGVzdFNoZWxsOwotY2xhc3MgV2ViVXNlck1lZGlhQ2xpZW50TW9jazsKIAogbmFtZXNwYWNl
IFdlYktpdCB7CiBjbGFzcyBXZWJGcmFtZTsKQEAgLTIxNiw5ICsyMTUsNiBAQCBjbGFzcyBXZWJW
aWV3SG9zdCA6IHB1YmxpYyBXZWJLaXQ6OldlYlZpZXdDbGllbnQsIHB1YmxpYyBXZWJLaXQ6Oldl
YkZyYW1lQ2xpZW50LAogICAgIHZpcnR1YWwgV2ViS2l0OjpXZWJTcGVlY2hSZWNvZ25pemVyKiBz
cGVlY2hSZWNvZ25pemVyKCkgT1ZFUlJJREU7CiAjZW5kaWYKICAgICB2aXJ0dWFsIFdlYktpdDo6
V2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQqIGRldmljZU9yaWVudGF0aW9uQ2xpZW50KCkgT1ZF
UlJJREU7Ci0jaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLSAgICB2aXJ0dWFsIFdlYktpdDo6V2Vi
VXNlck1lZGlhQ2xpZW50KiB1c2VyTWVkaWFDbGllbnQoKTsKLSNlbmRpZgogCiAgICAgLy8gV2Vi
S2l0OjpXZWJXaWRnZXRDbGllbnQKICAgICB2aXJ0dWFsIHZvaWQgZGlkQXV0b1Jlc2l6ZShjb25z
dCBXZWJLaXQ6OldlYlNpemUmIG5ld1NpemUpOwpAQCAtMzEyLDcgKzMwOCw2IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBkaXNjYXJkQmFja2luZ1N0b3JlKCk7CiAKICNpZiBFTkFCTEUoTUVESUFfU1RS
RUFNKQotICAgIFdlYlVzZXJNZWRpYUNsaWVudE1vY2sqIHVzZXJNZWRpYUNsaWVudE1vY2soKTsK
ICAgICB3ZWJraXRfc3VwcG9ydDo6VGVzdE1lZGlhU3RyZWFtQ2xpZW50KiB0ZXN0TWVkaWFTdHJl
YW1DbGllbnQoKTsKICNlbmRpZgogCkBAIC0zNjQsNyArMzU5LDYgQEAgcHJpdmF0ZToKICNlbmRp
ZgogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLSAgICBPd25QdHI8V2ViVXNlck1lZGlhQ2xp
ZW50TW9jaz4gbV91c2VyTWVkaWFDbGllbnRNb2NrOwogICAgIE93blB0cjx3ZWJraXRfc3VwcG9y
dDo6VGVzdE1lZGlhU3RyZWFtQ2xpZW50PiBtX3Rlc3RNZWRpYVN0cmVhbUNsaWVudDsKICNlbmRp
ZgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKaW5kZXggNmU1M2QxZmFjM2UxMjk0ZGY4MzAyYmYxNGMxNmYwNTMyMjg1ODk5Ny4uMzhm
NDM0ZmJlZjg0OGFjMzA2ODcxY2M0ZjZjZTE4OWRkMjgzNmY5YyAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1
IEBACisyMDEzLTAyLTEyICBKb2NoZW4gRWlzaW5nZXIgIDxqb2NoZW5AY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFtjaHJvbWl1bV0gbW92ZSB3ZWJydGMgbW9ja3MgdG8gdGVzdHJ1bm5lciBsaWJy
YXJ5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDkw
NDEKKworICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgorCisgICAgICAgIFRlbXBvcmFy
aWx5IGRpc2FibGUgdHdvIFdlYlJUQyB0ZXN0cyB0aGF0IGZhaWwgZHVlIHRvIGEgYnVnIGluCisg
ICAgICAgIHdlYmtpdF9zdXBwb3J0J3MgZ2V0Q3VycmVudFRpbWVNaWxsc2Vjb25kLgorCisgICAg
ICAgICogcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9uczoKKwogMjAxMy0wMi0xMSAg
S3dhbmdZb25nIENob2kgIDxreTAuY2hvaUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBbRUZMXSBT
b21lIHBsYWNlaG9sZGVyIHBhaW50IG9yZGVyIHRlc3RzIGFyZSBwYXNzaW5nIG5vdwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggMjcyNGVj
Yjg4OWUxZDdiZThkMjE2M2IyYzcxMzU1MjQ0ZWU1ZjNkNS4uZWI5MmFhNjM0YjYzZWU0ZGJlNzMy
NjJlMzNhMmViMGFkMjgyYTgzYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hy
b21pdW0vVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS9UZXN0RXhwZWN0YXRpb25zCkBAIC0yMzksNiArMjM5LDEwIEBAIHdlYmtpdC5vcmcvYi85Mjk0
MiBmYXN0L2V2ZW50cy9jb25zdHJ1Y3RvcnMvZGV2aWNlLXByb3hpbWl0eS1ldmVudC1jb25zdHJ1
Y3Rvci5oCiAjIE1pc3Npbmcgc3VwcG9ydCBpbiBEUlQgZm9yIEdlb2xvY2F0aW9uJ3MgQ29vcmRp
bmF0ZSBhdHRyaWJ1dGVzLgogd2Via2l0Lm9yZy9iLzk4MjEyIGZhc3QvZG9tL0dlb2xvY2F0aW9u
L2Nvb3JkaW5hdGVzLWludGVyZmFjZS1hdHRyaWJ1dGVzLmh0bWwgWyBGYWlsdXJlIF0KIAorIyBE
aXNhYmxlIHVudGlsIGNocm9taXVtIHNpZGUgb2YgZ2V0Q3VycmVudFRpbWVNaWxsaXNlY29uZCBp
cyBmaXhlZC4KK0J1Zyhqb2NoZW4pIGZhc3QvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24t
c3RhdHNTZWxlY3Rvci5odG1sIFsgRmFpbHVyZSBdCitCdWcoam9jaGVuKSBmYXN0L21lZGlhc3Ry
ZWFtL1JUQ1BlZXJDb25uZWN0aW9uLXN0YXRzLmh0bWwgWyBGYWlsdXJlIF0KKwogIyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQogIyBXT05URklYIFRFU1RTCiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>