<?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>208989</bug_id>
          
          <creation_ts>2020-03-12 03:39:29 -0700</creation_ts>
          <short_desc>[WebXR] Import wpt tests</short_desc>
          <delta_ts>2020-03-16 09:10:16 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>208988</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Sergio Villar Senin">svillar</reporter>
          <assigned_to name="Sergio Villar Senin">svillar</assigned_to>
          <cc>dino</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1629127</commentid>
    <comment_count>0</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2020-03-12 03:39:29 -0700</bug_when>
    <thetext>[WebXR] Import wpt tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1629129</commentid>
    <comment_count>1</comment_count>
      <attachid>393356</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2020-03-12 03:42:45 -0700</bug_when>
    <thetext>Created attachment 393356
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1629537</commentid>
    <comment_count>2</comment_count>
      <attachid>393356</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-03-13 02:28:56 -0700</bug_when>
    <thetext>Comment on attachment 393356
Patch

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

&gt; LayoutTests/TestExpectations:4144
&gt; +webkit.org/b/208988 imported/w3c/web-platform-tests/webxr/xrWebGLLayer_viewports.https.html [ Skip ]

Maybe simply skip the whole folder?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1630313</commentid>
    <comment_count>3</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2020-03-16 07:06:12 -0700</bug_when>
    <thetext>(In reply to youenn fablet from comment #2)
&gt; Comment on attachment 393356 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=393356&amp;action=review
&gt; 
&gt; &gt; LayoutTests/TestExpectations:4144
&gt; &gt; +webkit.org/b/208988 imported/w3c/web-platform-tests/webxr/xrWebGLLayer_viewports.https.html [ Skip ]
&gt; 
&gt; Maybe simply skip the whole folder?

The reason why I&apos;m listing then individually is because I&apos;m planning to unskip them one by one as I implement the APIs. I think it was possible to skip a whole folder and then mark individual tests as passing, but as I saw none in TestExpectations I decided to do it this way...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1630334</commentid>
    <comment_count>4</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2020-03-16 09:04:06 -0700</bug_when>
    <thetext>(In reply to Sergio Villar Senin from comment #3)
&gt; (In reply to youenn fablet from comment #2)
&gt; &gt; Comment on attachment 393356 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=393356&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; LayoutTests/TestExpectations:4144
&gt; &gt; &gt; +webkit.org/b/208988 imported/w3c/web-platform-tests/webxr/xrWebGLLayer_viewports.https.html [ Skip ]
&gt; &gt; 
&gt; &gt; Maybe simply skip the whole folder?
&gt; 
&gt; The reason why I&apos;m listing then individually is because I&apos;m planning to
&gt; unskip them one by one as I implement the APIs. I think it was possible to
&gt; skip a whole folder and then mark individual tests as passing, but as I saw
&gt; none in TestExpectations I decided to do it this way...

There are examples of this in platform specific TestExpectations so I think I&apos;ll change it. Thanks for the suggestion</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1630336</commentid>
    <comment_count>5</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2020-03-16 09:09:59 -0700</bug_when>
    <thetext>Committed r258499: &lt;https://trac.webkit.org/changeset/258499&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1630337</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-03-16 09:10:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/60496729&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>393356</attachid>
            <date>2020-03-12 03:42:45 -0700</date>
            <delta_ts>2020-03-13 02:28:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208989-20200312114240.patch</filename>
            <type>text/plain</type>
            <size>334147</size>
            <attacher name="Sergio Villar Senin">svillar</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4MzE5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZTRlNjk4N2QzNDI0YzMyNTYyOGYw
ODE1NWIwNjAzODRhNjA4OTY1MS4uOTc3NTAxZGZjMTdmMDRhNThlMzAwOTc1ZWI1YmQ0MmYxYjUz
NzE5OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDIwLTAzLTEyICBTZXJnaW8gVmlsbGFyIFNl
bmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgorCisgICAgICAgIFtXZWJYUl0gSW1wb3J0IHdwdCB0
ZXN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4
OTg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBU
ZXN0RXhwZWN0YXRpb25zOiBNYXJrIGFsbCBvZiB0aGVtIGFzIHNraXBwZWQuCisKIDIwMjAtMDMt
MTIgIERpZWdvIFBpbm8gR2FyY2lhICA8ZHBpbm9AaWdhbGlhLmNvbT4KIAogICAgICAgICBbV1BF
XSBHYXJkZW5pbmcsIGV4cGVjdGVkIHRvIGZhaWwgYnV0IHBhc3NlZApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy9DaGFuZ2VMb2cKaW5kZXggOWZmYzYyMmVmZjNiYWM2N2M4Y2Y3MGU4OTJhNmI2ZDYzMzgxZjVk
My4uMjc0OThkOWRmOTQwMmIwNzJjMjViYWMwOWFjZGY2Mjg4MTYwN2RjMiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTM5IEBACisyMDIwLTAzLTEyICBTZXJnaW8g
VmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgorCisgICAgICAgIFtXZWJYUl0gSW1w
b3J0IHdwdCB0ZXN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjA4OTg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiByZXNvdXJjZXMvaW1wb3J0LWV4cGVjdGF0aW9ucy5qc29uOgorICAgICAgICAqIHdl
Yi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9NRVRBLnltbDogQWRkZWQuCisgICAgICAgICogd2ViLXBs
YXRmb3JtLXRlc3RzL3dlYnhyL2FyLW1vZHVsZS9pZGxoYXJuZXNzLmh0dHBzLndpbmRvdy5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvYXItbW9kdWxlL2lk
bGhhcm5lc3MuaHR0cHMud2luZG93LmpzOiBBZGRlZC4KKyAgICAgICAgKGFzeW5jIGlkbF9hcnJh
eSk6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL2FyLW1vZHVsZS93M2MtaW1w
b3J0LmxvZzogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL2FyLW1v
ZHVsZS94ckRldmljZV9pc1Nlc3Npb25TdXBwb3J0ZWRfaW1tZXJzaXZlLWFyLmh0dHBzLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9hci1tb2R1bGUveHJE
ZXZpY2VfcmVxdWVzdFNlc3Npb25faW1tZXJzaXZlLWFyLmh0dHBzLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9hci1tb2R1bGUveHJTZXNzaW9uX2Vudmly
b25tZW50QmxlbmRNb2RlLmh0dHBzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9y
bS10ZXN0cy93ZWJ4ci9kb20tb3ZlcmxheS9hcl9kb21fb3ZlcmxheS5odHRwcy5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvZG9tLW92ZXJsYXkvdzNjLWlt
cG9ydC5sb2c6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9ldmVu
dHNfaW5wdXRfc291cmNlX3JlY3JlYXRpb24uaHR0cHMuaHRtbDogQWRkZWQuCisgICAgICAgICog
d2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL2V2ZW50c19pbnB1dF9zb3VyY2VzX2NoYW5nZS5odHRw
cy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvZXZlbnRz
X3JlZmVyZW5jZVNwYWNlX3Jlc2V0X2ltbWVyc2l2ZS5odHRwcy5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvZXZlbnRzX3JlZmVyZW5jZVNwYWNlX3Jlc2V0
X2lubGluZS5odHRwcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMv
d2VieHIvZXZlbnRzX3Nlc3Npb25fc2VsZWN0Lmh0dHBzLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9ldmVudHNfc2Vzc2lvbl9zZWxlY3Rfc3ViZnJhbWUu
aHR0cHMuaHRtbDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL2V2
ZW50c19zZXNzaW9uX3NxdWVlemUuaHR0cHMuaHRtbDogQWRkZWQuCisgICAgICAgICogd2ViLXBs
YXRmb3JtLXRlc3RzL3dlYnhyL2V4Y2x1c2l2ZV9yZXF1ZXN0RnJhbWVfbm9sYXllci5odHRwcy5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvZ2FtZXBhZHMt
bW9kdWxlL2lkbGhhcm5lc3MuaHR0cHMud2luZG93Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdl
Yi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9nYW1lcGFkcy1tb2R1bGUvaWRsaGFybmVzcy5odHRwcy53
aW5kb3cuanM6IEFkZGVkLgorICAgICAgICAoYXN5bmMgaWRsX2FycmF5KToKKyAgICAgICAgKiB3
ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvZ2FtZXBhZHMtbW9kdWxlL3czYy1pbXBvcnQubG9nOiBB
ZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvZ2FtZXBhZHMtbW9kdWxl
L3hySW5wdXRTb3VyY2VfZ2FtZXBhZF9kaXNjb25uZWN0Lmh0dHBzLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9nYW1lcGFkcy1tb2R1bGUveHJJbnB1dFNv
dXJjZV9nYW1lcGFkX2lucHV0X3JlZ2lzdGVyZWQuaHR0cHMuaHRtbDogQWRkZWQuCisgICAgICAg
ICogd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL2dldElucHV0UG9zZV9oYW5kZWRuZXNzLmh0dHBz
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9nZXRJbnB1
dFBvc2VfcG9pbnRlci5odHRwcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0t
dGVzdHMvd2VieHIvZ2V0Vmlld2VyUG9zZV9lbXVsYXRlZFBvc2l0aW9uLmh0dHBzLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9oaXQtdGVzdC9hcl9oaXR0
ZXN0X3N1YnNjcmlwdGlvbl9yZWZTcGFjZXMuaHR0cHMuaHRtbDogQWRkZWQuCisgICAgICAgICog
d2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL2hpdC10ZXN0L2FyX2hpdHRlc3Rfc3Vic2NyaXB0aW9u
X3N0YXRlcy5odHRwcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMv
d2VieHIvaGl0LXRlc3QvdzNjLWltcG9ydC5sb2c6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0
Zm9ybS10ZXN0cy93ZWJ4ci9oaXQtdGVzdC94clJheV9jb25zdHJ1Y3Rvci5odHRwcy5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvaGl0LXRlc3QveHJSYXlf
bWF0cml4Lmh0dHBzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93
ZWJ4ci9pZGxoYXJuZXNzLmh0dHBzLndpbmRvdy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWIt
cGxhdGZvcm0tdGVzdHMvd2VieHIvaWRsaGFybmVzcy5odHRwcy53aW5kb3cuanM6IEFkZGVkLgor
ICAgICAgICAoYXN5bmMgaWRsX2FycmF5KToKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMv
d2VieHIvbmF2aWdhdG9yX3hyX3NhbWVPYmplY3QuaHR0cHMuaHRtbDogQWRkZWQuCisgICAgICAg
ICogd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3JlbmRlcl9zdGF0ZV92ZXJ0aWNhbF9mb3ZfaW1t
ZXJzaXZlLmh0dHBzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93
ZWJ4ci9yZW5kZXJfc3RhdGVfdmVydGljYWxfZm92X2lubGluZS5odHRwcy5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvcmVzb3VyY2VzL3czYy1pbXBvcnQu
bG9nOiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvcmVzb3VyY2Vz
L3dlYnhyX2NoZWNrLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93
ZWJ4ci9yZXNvdXJjZXMvd2VieHJfbWF0aF91dGlscy5qczogQWRkZWQuCisgICAgICAgIChsZXQu
dHJhbnNmb3JtX3BvaW50X2J5X21hdHJpeCk6CisgICAgICAgIChsZXQubm9ybWFsaXplX3F1YXRl
cm5pb24pOgorICAgICAgICAobGV0LmNvbmp1Z2F0ZV9xdWF0ZXJuaW9uKToKKyAgICAgICAgKGxl
dC5tdWx0aXBseV9xdWF0ZXJuaW9ucyk6CisgICAgICAgIChsZXQubm9ybWFsaXplX3BlcnNwZWN0
aXZlKToKKyAgICAgICAgKGxldC50cmFuc2Zvcm1fcG9pbnRfYnlfcXVhdGVybmlvbik6CisgICAg
ICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3Jlc291cmNlcy93ZWJ4cl90ZXN0X2Fzc2Vy
dHMuanM6IEFkZGVkLgorICAgICAgICAoY29uc3QuYXNzZXJ0X3BvaW50X2FwcHJveF9lcXVhbHMp
OgorICAgICAgICAoY29uc3QuYXNzZXJ0X3BvaW50X3NpZ25pZmljYW50bHlfbm90X2VxdWFscyk6
CisgICAgICAgIChjb25zdC5hc3NlcnRfdHJhbnNmb3JtX2FwcHJveF9lcXVhbHMpOgorICAgICAg
ICAoY29uc3QuYXNzZXJ0X21hdHJpeF9hcHByb3hfZXF1YWxzKToKKyAgICAgICAgKGNvbnN0LmFz
c2VydF9tYXRyaXhfc2lnbmlmaWNhbnRseV9ub3RfZXF1YWxzKToKKyAgICAgICAgKGNvbnN0LmFz
c2VydF9yYXlfYXBwcm94X2VxdWFscyk6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dl
YnhyL3Jlc291cmNlcy93ZWJ4cl90ZXN0X2NvbnN0YW50cy5qczogQWRkZWQuCisgICAgICAgICog
d2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3Jlc291cmNlcy93ZWJ4cl90ZXN0X2NvbnN0YW50c19m
YWtlX3dvcmxkLmpzOiBBZGRlZC4KKyAgICAgICAgKGNyZWF0ZUZha2VXb3JsZCk6CisgICAgICAg
ICogd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3Jlc291cmNlcy93ZWJ4cl91dGlsLmpzOiBBZGRl
ZC4KKyAgICAgICAgKHhyX3Byb21pc2VfdGVzdCk6CisgICAgICAgIChhc3luYyBsZXQpOgorICAg
ICAgICAoYXN5bmMgeHJfc2Vzc2lvbl9wcm9taXNlX3Rlc3QpOgorICAgICAgICAoYXN5bmMgcHJv
bWlzZV9zaW11bGF0ZV91c2VyX2FjdGl2YXRpb24pOgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10
ZXN0cy93ZWJ4ci93M2MtaW1wb3J0LmxvZzogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3Jt
LXRlc3RzL3dlYnhyL3dlYkdMQ2FudmFzQ29udGV4dF9jcmVhdGVfeHJjb21wYXRpYmxlLmh0dHBz
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci93ZWJHTENh
bnZhc0NvbnRleHRfbWFrZWNvbXBhdGlibGVfY29udGV4dGxvc3QuaHR0cHMuaHRtbDogQWRkZWQu
CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3dlYnhyLXN1cHBvcnRlZC1ieS1m
ZWF0dXJlLXBvbGljeS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMv
d2VieHIvd2VieHJfYXZhaWxhYmlsaXR5Lmh0dHAuc3ViLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci93ZWJ4cl9mZWF0dXJlX3BvbGljeS5odHRwcy5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvd2VieHJfZmVhdHVy
ZV9wb2xpY3kuaHR0cHMuaHRtbC5oZWFkZXJzOiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZv
cm0tdGVzdHMvd2VieHIveHJCb3VuZGVkUmVmZXJlbmNlU3BhY2VfdXBkYXRlcy5odHRwcy5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJEZXZpY2VfZGlz
Y29ubmVjdF9lbmRzLmh0dHBzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10
ZXN0cy93ZWJ4ci94ckRldmljZV9pc1Nlc3Npb25TdXBwb3J0ZWRfaW1tZXJzaXZlLmh0dHBzLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94ckRldmljZV9p
c1Nlc3Npb25TdXBwb3J0ZWRfaW1tZXJzaXZlX3Vuc3VwcG9ydGVkLmh0dHBzLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94ckRldmljZV9pc1Nlc3Npb25T
dXBwb3J0ZWRfaW5saW5lLmh0dHBzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9y
bS10ZXN0cy93ZWJ4ci94ckRldmljZV9yZXF1ZXN0U2Vzc2lvbl9pbW1lcnNpdmUuaHR0cHMuaHRt
bDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyRGV2aWNlX3Jl
cXVlc3RTZXNzaW9uX2ltbWVyc2l2ZV9ub19nZXN0dXJlLmh0dHBzLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94ckRldmljZV9yZXF1ZXN0U2Vzc2lvbl9p
bW1lcnNpdmVfdW5zdXBwb3J0ZWQuaHR0cHMuaHRtbDogQWRkZWQuCisgICAgICAgICogd2ViLXBs
YXRmb3JtLXRlc3RzL3dlYnhyL3hyRGV2aWNlX3JlcXVlc3RTZXNzaW9uX25vX21vZGUuaHR0cHMu
aHRtbDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyRGV2aWNl
X3JlcXVlc3RTZXNzaW9uX25vbl9pbW1lcnNpdmVfbm9fZ2VzdHVyZS5odHRwcy5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJEZXZpY2VfcmVxdWVzdFNl
c3Npb25fb3B0aW9uYWxGZWF0dXJlcy5odHRwcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWIt
cGxhdGZvcm0tdGVzdHMvd2VieHIveHJEZXZpY2VfcmVxdWVzdFNlc3Npb25fcmVxdWlyZWRGZWF0
dXJlc191bmtub3duLmh0dHBzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10
ZXN0cy93ZWJ4ci94ckZyYW1lX2dldFBvc2UuaHR0cHMuaHRtbDogQWRkZWQuCisgICAgICAgICog
d2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyRnJhbWVfZ2V0Vmlld2VyUG9zZV9nZXRQb3NlLmh0
dHBzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94ckZy
YW1lX2xpZmV0aW1lLmh0dHBzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10
ZXN0cy93ZWJ4ci94ckZyYW1lX3Nlc3Npb25fc2FtZU9iamVjdC5odHRwcy5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJJbnB1dFNvdXJjZV9hZGRfcmVt
b3ZlLmh0dHBzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4
ci94cklucHV0U291cmNlX2VtdWxhdGVkUG9zaXRpb24uaHR0cHMuaHRtbDogQWRkZWQuCisgICAg
ICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hySW5wdXRTb3VyY2VfcHJvZmlsZXMuaHR0
cHMuaHRtbDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hySW5w
dXRTb3VyY2Vfc2FtZU9iamVjdC5odHRwcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxh
dGZvcm0tdGVzdHMvd2VieHIveHJQb3NlX3RyYW5zZm9ybV9zYW1lT2JqZWN0Lmh0dHBzLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clJlZmVyZW5jZVNw
YWNlX29yaWdpbk9mZnNldC5odHRwcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZv
cm0tdGVzdHMvd2VieHIveHJSZWZlcmVuY2VTcGFjZV9vcmlnaW5PZmZzZXRCb3VuZGVkLmh0dHBz
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clJlZmVy
ZW5jZVNwYWNlX29yaWdpbk9mZnNldF92aWV3ZXIuaHR0cHMuaHRtbDogQWRkZWQuCisgICAgICAg
ICogd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyUmlnaWRUcmFuc2Zvcm1fY29uc3RydWN0b3Iu
aHR0cHMuaHRtbDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hy
UmlnaWRUcmFuc2Zvcm1faW52ZXJzZS5odHRwcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWIt
cGxhdGZvcm0tdGVzdHMvd2VieHIveHJSaWdpZFRyYW5zZm9ybV9tYXRyaXguaHR0cHMuaHRtbDog
QWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyUmlnaWRUcmFuc2Zv
cm1fc2FtZU9iamVjdC5odHRwcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0t
dGVzdHMvd2VieHIveHJTZXNzaW9uX2NhbmNlbEFuaW1hdGlvbkZyYW1lLmh0dHBzLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clNlc3Npb25fY2FuY2Vs
QW5pbWF0aW9uRnJhbWVfaW52YWxpZGhhbmRsZS5odHRwcy5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiB3ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJTZXNzaW9uX2VuZC5odHRwcy5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJTZXNzaW9uX2ZlYXR1cmVz
X2RldmljZVN1cHBvcnQuaHR0cHMuaHRtbDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3Jt
LXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl9pbnB1dF9ldmVudHNfZW5kLmh0dHBzLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clNlc3Npb25fcHJldmVudF9t
dWx0aXBsZV9leGNsdXNpdmUuaHR0cHMuaHRtbDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRm
b3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl9yZXF1ZXN0QW5pbWF0aW9uRnJhbWVfY2FsbGJhY2tf
Y2FsbHMuaHR0cHMuaHRtbDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dl
YnhyL3hyU2Vzc2lvbl9yZXF1ZXN0QW5pbWF0aW9uRnJhbWVfZGF0YV92YWxpZC5odHRwcy5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJTZXNzaW9uX3Jl
cXVlc3RBbmltYXRpb25GcmFtZV9nZXRWaWV3ZXJQb3NlLmh0dHBzLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clNlc3Npb25fcmVxdWVzdEFuaW1hdGlv
bkZyYW1lX3RpbWVzdGFtcC5odHRwcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZv
cm0tdGVzdHMvd2VieHIveHJTZXNzaW9uX3JlcXVlc3RSZWZlcmVuY2VTcGFjZS5odHRwcy5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJTZXNzaW9uX3Jl
cXVlc3RSZWZlcmVuY2VTcGFjZV9mZWF0dXJlcy5odHRwcy5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiB3ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJTZXNzaW9uX3NhbWVPYmplY3QuaHR0cHMuaHRt
bDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl92
aWV3ZXJfYXZhaWxhYmlsaXR5Lmh0dHBzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0
Zm9ybS10ZXN0cy93ZWJ4ci94clNlc3Npb25fdmlld2VyX3JlZmVyZW5jZVNwYWNlLmh0dHBzLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clNlc3Npb25f
dmlzaWJpbGl0eVN0YXRlLmh0dHBzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9y
bS10ZXN0cy93ZWJ4ci94clN0YXRpb25hcnlSZWZlcmVuY2VTcGFjZV9mbG9vcmxldmVsX3VwZGF0
ZXMuaHR0cHMuaHRtbDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhy
L3hyVmlld19leWVzLmh0dHBzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10
ZXN0cy93ZWJ4ci94clZpZXdfbWF0Y2guaHR0cHMuaHRtbDogQWRkZWQuCisgICAgICAgICogd2Vi
LXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyVmlld19vbmVmcmFtZXVwZGF0ZS5odHRwcy5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJWaWV3X3NhbWVPYmpl
Y3QuaHR0cHMuaHRtbDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhy
L3hyVmlld2VyUG9zZV92aWV3c19zYW1lT2JqZWN0Lmh0dHBzLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clZpZXdwb3J0X3ZhbGlkLmh0dHBzLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94cldlYkdMTGF5ZXJf
Y29uc3RydWN0b3IuaHR0cHMuaHRtbDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRl
c3RzL3dlYnhyL3hyV2ViR0xMYXllcl9mcmFtZWJ1ZmZlcl9kcmF3Lmh0dHBzLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94cldlYkdMTGF5ZXJfZnJhbWVi
dWZmZXJfc2FtZU9iamVjdC5odHRwcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZv
cm0tdGVzdHMvd2VieHIveHJXZWJHTExheWVyX2ZyYW1lYnVmZmVyX3NjYWxlLmh0dHBzLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94cldlYkdMTGF5ZXJf
b3BhcXVlX2ZyYW1lYnVmZmVyLmh0dHBzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0
Zm9ybS10ZXN0cy93ZWJ4ci94cldlYkdMTGF5ZXJfb3BhcXVlX2ZyYW1lYnVmZmVyX3N0ZW5jaWwu
aHR0cHMuaHRtbDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hy
V2ViR0xMYXllcl92aWV3cG9ydHMuaHR0cHMuaHRtbDogQWRkZWQuCisKIDIwMjAtMDMtMTEgIEFu
dG9pbmUgUXVpbnQgIDxncmFvdXRzQHdlYmtpdC5vcmc+CiAKICAgICAgICAgWyBtYWNPUyB3azEg
XSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYi1hbmltYXRpb25zL3RpbWluZy1t
b2RlbC9hbmltYXRpb25zL3BhdXNpbmctYW4tYW5pbWF0aW9uLmh0bWwgaXMgZmxha3kgZmFpbGlu
ZwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3Rz
L1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggODA1NDYzZDc5NTRkZGM2OGY3NjJlMGE0Nzc0OTIzZDMy
Y2UzZmU3Yi4uOTA5MTIyZGFmMzk0ZWUxMDlkMGY3NTg0M2JhZDEzNzdiZjI4NmU3MSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9UZXN0
RXhwZWN0YXRpb25zCkBAIC00MDUwLDMgKzQwNTAsOTUgQEAgd2Via2l0Lm9yZy9iLzIwNzI2MSBb
IERlYnVnIF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWJhY2tncm91
bmQKIHdlYmtpdC5vcmcvYi8yMDcyNjIgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
ZWItYW5pbWF0aW9ucy90aW1pbmctbW9kZWwvYW5pbWF0aW9ucy9zeW5jLXN0YXJ0LXRpbWVzLmh0
bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQogCiB3ZWJraXQub3JnL2IvMjAyMTA5IGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViLWFuaW1hdGlvbnMvdGltaW5nLW1vZGVsL3Rp
bWVsaW5lcy91cGRhdGUtYW5kLXNlbmQtZXZlbnRzLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQorCisj
IFdlYlhSIGlzIGJlaW5nIGltcGxlbWVudGVkCit3ZWJraXQub3JnL2IvMjA4OTg4IGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvYXItbW9kdWxlL2lkbGhhcm5lc3MuaHR0cHMu
d2luZG93Lmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8yMDg5ODggaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9hci1tb2R1bGUveHJEZXZpY2VfaXNTZXNzaW9uU3VwcG9y
dGVkX2ltbWVyc2l2ZS1hci5odHRwcy5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMjA4OTg4
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvYXItbW9kdWxlL3hyRGV2aWNl
X3JlcXVlc3RTZXNzaW9uX2ltbWVyc2l2ZS1hci5odHRwcy5odG1sIFsgU2tpcCBdCit3ZWJraXQu
b3JnL2IvMjA4OTg4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvYXItbW9k
dWxlL3hyU2Vzc2lvbl9lbnZpcm9ubWVudEJsZW5kTW9kZS5odHRwcy5odG1sIFsgU2tpcCBdCit3
ZWJraXQub3JnL2IvMjA4OTg4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIv
ZG9tLW92ZXJsYXkvYXJfZG9tX292ZXJsYXkuaHR0cHMuaHRtbCBbIFNraXAgXQord2Via2l0Lm9y
Zy9iLzIwODk4OCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL2V2ZW50c19p
bnB1dF9zb3VyY2VfcmVjcmVhdGlvbi5odHRwcy5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2Iv
MjA4OTg4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvZXZlbnRzX2lucHV0
X3NvdXJjZXNfY2hhbmdlLmh0dHBzLmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8yMDg5ODgg
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9ldmVudHNfcmVmZXJlbmNlU3Bh
Y2VfcmVzZXRfaW1tZXJzaXZlLmh0dHBzLmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8yMDg5
ODggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9ldmVudHNfcmVmZXJlbmNl
U3BhY2VfcmVzZXRfaW5saW5lLmh0dHBzLmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8yMDg5
ODggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9ldmVudHNfc2Vzc2lvbl9z
ZWxlY3QuaHR0cHMuaHRtbCBbIFNraXAgXQord2Via2l0Lm9yZy9iLzIwODk4OCBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL2V2ZW50c19zZXNzaW9uX3NlbGVjdF9zdWJmcmFt
ZS5odHRwcy5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMjA4OTg4IGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvZXZlbnRzX3Nlc3Npb25fc3F1ZWV6ZS5odHRwcy5odG1s
IFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMjA4OTg4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd2VieHIvZXhjbHVzaXZlX3JlcXVlc3RGcmFtZV9ub2xheWVyLmh0dHBzLmh0bWwgWyBT
a2lwIF0KK3dlYmtpdC5vcmcvYi8yMDg5ODggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93ZWJ4ci9nYW1lcGFkcy1tb2R1bGUvaWRsaGFybmVzcy5odHRwcy53aW5kb3cuaHRtbCBbIFNr
aXAgXQord2Via2l0Lm9yZy9iLzIwODk4OCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dlYnhyL2dhbWVwYWRzLW1vZHVsZS94cklucHV0U291cmNlX2dhbWVwYWRfZGlzY29ubmVjdC5o
dHRwcy5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMjA4OTg4IGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd2VieHIvZ2FtZXBhZHMtbW9kdWxlL3hySW5wdXRTb3VyY2VfZ2FtZXBh
ZF9pbnB1dF9yZWdpc3RlcmVkLmh0dHBzLmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8yMDg5
ODggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9nZXRJbnB1dFBvc2VfaGFu
ZGVkbmVzcy5odHRwcy5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMjA4OTg4IGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvZ2V0SW5wdXRQb3NlX3BvaW50ZXIuaHR0cHMu
aHRtbCBbIFNraXAgXQord2Via2l0Lm9yZy9iLzIwODk4OCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dlYnhyL2dldFZpZXdlclBvc2VfZW11bGF0ZWRQb3NpdGlvbi5odHRwcy5odG1s
IFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMjA4OTg4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd2VieHIvaGl0LXRlc3QvYXJfaGl0dGVzdF9zdWJzY3JpcHRpb25fcmVmU3BhY2VzLmh0
dHBzLmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8yMDg5ODggaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93ZWJ4ci9oaXQtdGVzdC9hcl9oaXR0ZXN0X3N1YnNjcmlwdGlvbl9zdGF0
ZXMuaHR0cHMuaHRtbCBbIFNraXAgXQord2Via2l0Lm9yZy9iLzIwODk4OCBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL2hpdC10ZXN0L3hyUmF5X2NvbnN0cnVjdG9yLmh0dHBz
Lmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8yMDg5ODggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93ZWJ4ci9oaXQtdGVzdC94clJheV9tYXRyaXguaHR0cHMuaHRtbCBbIFNraXAg
XQord2Via2l0Lm9yZy9iLzIwODk4OCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dl
YnhyL2lkbGhhcm5lc3MuaHR0cHMud2luZG93Lmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8y
MDg5ODggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9uYXZpZ2F0b3JfeHJf
c2FtZU9iamVjdC5odHRwcy5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMjA4OTg4IGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvcmVuZGVyX3N0YXRlX3ZlcnRpY2FsX2Zv
dl9pbW1lcnNpdmUuaHR0cHMuaHRtbCBbIFNraXAgXQord2Via2l0Lm9yZy9iLzIwODk4OCBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3JlbmRlcl9zdGF0ZV92ZXJ0aWNhbF9m
b3ZfaW5saW5lLmh0dHBzLmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8yMDg5ODggaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci93ZWJHTENhbnZhc0NvbnRleHRfY3JlYXRl
X3hyY29tcGF0aWJsZS5odHRwcy5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMjA4OTg4IGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvd2ViR0xDYW52YXNDb250ZXh0X21h
a2Vjb21wYXRpYmxlX2NvbnRleHRsb3N0Lmh0dHBzLmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcv
Yi8yMDg5ODggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci93ZWJ4ci1zdXBw
b3J0ZWQtYnktZmVhdHVyZS1wb2xpY3kuaHRtbCBbIFNraXAgXQord2Via2l0Lm9yZy9iLzIwODk4
OCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3dlYnhyX2F2YWlsYWJpbGl0
eS5odHRwLnN1Yi5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMjA4OTg4IGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvd2VieHJfZmVhdHVyZV9wb2xpY3kuaHR0cHMuaHRt
bCBbIFNraXAgXQord2Via2l0Lm9yZy9iLzIwODk4OCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3dlYnhyL3hyQm91bmRlZFJlZmVyZW5jZVNwYWNlX3VwZGF0ZXMuaHR0cHMuaHRtbCBb
IFNraXAgXQord2Via2l0Lm9yZy9iLzIwODk4OCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dlYnhyL3hyRGV2aWNlX2Rpc2Nvbm5lY3RfZW5kcy5odHRwcy5odG1sIFsgU2tpcCBdCit3
ZWJraXQub3JnL2IvMjA4OTg4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIv
eHJEZXZpY2VfaXNTZXNzaW9uU3VwcG9ydGVkX2ltbWVyc2l2ZS5odHRwcy5odG1sIFsgU2tpcCBd
Cit3ZWJraXQub3JnL2IvMjA4OTg4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Vi
eHIveHJEZXZpY2VfaXNTZXNzaW9uU3VwcG9ydGVkX2ltbWVyc2l2ZV91bnN1cHBvcnRlZC5odHRw
cy5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMjA4OTg4IGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd2VieHIveHJEZXZpY2VfaXNTZXNzaW9uU3VwcG9ydGVkX2lubGluZS5odHRw
cy5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMjA4OTg4IGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd2VieHIveHJEZXZpY2VfcmVxdWVzdFNlc3Npb25faW1tZXJzaXZlLmh0dHBz
Lmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8yMDg5ODggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93ZWJ4ci94ckRldmljZV9yZXF1ZXN0U2Vzc2lvbl9pbW1lcnNpdmVfbm9fZ2Vz
dHVyZS5odHRwcy5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMjA4OTg4IGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJEZXZpY2VfcmVxdWVzdFNlc3Npb25faW1tZXJz
aXZlX3Vuc3VwcG9ydGVkLmh0dHBzLmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8yMDg5ODgg
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94ckRldmljZV9yZXF1ZXN0U2Vz
c2lvbl9ub19tb2RlLmh0dHBzLmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8yMDg5ODggaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94ckRldmljZV9yZXF1ZXN0U2Vzc2lv
bl9ub25faW1tZXJzaXZlX25vX2dlc3R1cmUuaHR0cHMuaHRtbCBbIFNraXAgXQord2Via2l0Lm9y
Zy9iLzIwODk4OCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyRGV2aWNl
X3JlcXVlc3RTZXNzaW9uX29wdGlvbmFsRmVhdHVyZXMuaHR0cHMuaHRtbCBbIFNraXAgXQord2Vi
a2l0Lm9yZy9iLzIwODk4OCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hy
RGV2aWNlX3JlcXVlc3RTZXNzaW9uX3JlcXVpcmVkRmVhdHVyZXNfdW5rbm93bi5odHRwcy5odG1s
IFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMjA4OTg4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd2VieHIveHJGcmFtZV9nZXRQb3NlLmh0dHBzLmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5v
cmcvYi8yMDg5ODggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94ckZyYW1l
X2dldFZpZXdlclBvc2VfZ2V0UG9zZS5odHRwcy5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2Iv
MjA4OTg4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJGcmFtZV9saWZl
dGltZS5odHRwcy5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMjA4OTg4IGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJGcmFtZV9zZXNzaW9uX3NhbWVPYmplY3QuaHR0
cHMuaHRtbCBbIFNraXAgXQord2Via2l0Lm9yZy9iLzIwODk4OCBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dlYnhyL3hySW5wdXRTb3VyY2VfYWRkX3JlbW92ZS5odHRwcy5odG1sIFsg
U2tpcCBdCit3ZWJraXQub3JnL2IvMjA4OTg4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd2VieHIveHJJbnB1dFNvdXJjZV9lbXVsYXRlZFBvc2l0aW9uLmh0dHBzLmh0bWwgWyBTa2lw
IF0KK3dlYmtpdC5vcmcvYi8yMDg5ODggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
ZWJ4ci94cklucHV0U291cmNlX3Byb2ZpbGVzLmh0dHBzLmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5v
cmcvYi8yMDg5ODggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94cklucHV0
U291cmNlX3NhbWVPYmplY3QuaHR0cHMuaHRtbCBbIFNraXAgXQord2Via2l0Lm9yZy9iLzIwODk4
OCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyUG9zZV90cmFuc2Zvcm1f
c2FtZU9iamVjdC5odHRwcy5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMjA4OTg4IGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJSZWZlcmVuY2VTcGFjZV9vcmlnaW5P
ZmZzZXQuaHR0cHMuaHRtbCBbIFNraXAgXQord2Via2l0Lm9yZy9iLzIwODk4OCBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyUmVmZXJlbmNlU3BhY2Vfb3JpZ2luT2Zmc2V0
Qm91bmRlZC5odHRwcy5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMjA4OTg4IGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJSZWZlcmVuY2VTcGFjZV9vcmlnaW5PZmZz
ZXRfdmlld2VyLmh0dHBzLmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8yMDg5ODggaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clJpZ2lkVHJhbnNmb3JtX2NvbnN0cnVj
dG9yLmh0dHBzLmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8yMDg5ODggaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clJpZ2lkVHJhbnNmb3JtX2ludmVyc2UuaHR0cHMu
aHRtbCBbIFNraXAgXQord2Via2l0Lm9yZy9iLzIwODk4OCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dlYnhyL3hyUmlnaWRUcmFuc2Zvcm1fbWF0cml4Lmh0dHBzLmh0bWwgWyBTa2lw
IF0KK3dlYmtpdC5vcmcvYi8yMDg5ODggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
ZWJ4ci94clJpZ2lkVHJhbnNmb3JtX3NhbWVPYmplY3QuaHR0cHMuaHRtbCBbIFNraXAgXQord2Vi
a2l0Lm9yZy9iLzIwODk4OCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hy
U2Vzc2lvbl9jYW5jZWxBbmltYXRpb25GcmFtZS5odHRwcy5odG1sIFsgU2tpcCBdCit3ZWJraXQu
b3JnL2IvMjA4OTg4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJTZXNz
aW9uX2NhbmNlbEFuaW1hdGlvbkZyYW1lX2ludmFsaWRoYW5kbGUuaHR0cHMuaHRtbCBbIFNraXAg
XQord2Via2l0Lm9yZy9iLzIwODk4OCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dl
YnhyL3hyU2Vzc2lvbl9lbmQuaHR0cHMuaHRtbCBbIFNraXAgXQord2Via2l0Lm9yZy9iLzIwODk4
OCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl9mZWF0dXJl
c19kZXZpY2VTdXBwb3J0Lmh0dHBzLmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8yMDg5ODgg
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clNlc3Npb25faW5wdXRfZXZl
bnRzX2VuZC5odHRwcy5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMjA4OTg4IGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJTZXNzaW9uX3ByZXZlbnRfbXVsdGlwbGVf
ZXhjbHVzaXZlLmh0dHBzLmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8yMDg5ODggaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clNlc3Npb25fcmVxdWVzdEFuaW1hdGlv
bkZyYW1lX2NhbGxiYWNrX2NhbGxzLmh0dHBzLmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8y
MDg5ODggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clNlc3Npb25fcmVx
dWVzdEFuaW1hdGlvbkZyYW1lX2RhdGFfdmFsaWQuaHR0cHMuaHRtbCBbIFNraXAgXQord2Via2l0
Lm9yZy9iLzIwODk4OCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vz
c2lvbl9yZXF1ZXN0QW5pbWF0aW9uRnJhbWVfZ2V0Vmlld2VyUG9zZS5odHRwcy5odG1sIFsgU2tp
cCBdCit3ZWJraXQub3JnL2IvMjA4OTg4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2VieHIveHJTZXNzaW9uX3JlcXVlc3RBbmltYXRpb25GcmFtZV90aW1lc3RhbXAuaHR0cHMuaHRt
bCBbIFNraXAgXQord2Via2l0Lm9yZy9iLzIwODk4OCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl9yZXF1ZXN0UmVmZXJlbmNlU3BhY2UuaHR0cHMuaHRtbCBb
IFNraXAgXQord2Via2l0Lm9yZy9iLzIwODk4OCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dlYnhyL3hyU2Vzc2lvbl9yZXF1ZXN0UmVmZXJlbmNlU3BhY2VfZmVhdHVyZXMuaHR0cHMu
aHRtbCBbIFNraXAgXQord2Via2l0Lm9yZy9iLzIwODk4OCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl9zYW1lT2JqZWN0Lmh0dHBzLmh0bWwgWyBTa2lwIF0K
K3dlYmtpdC5vcmcvYi8yMDg5ODggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4
ci94clNlc3Npb25fdmlld2VyX2F2YWlsYWJpbGl0eS5odHRwcy5odG1sIFsgU2tpcCBdCit3ZWJr
aXQub3JnL2IvMjA4OTg4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJT
ZXNzaW9uX3ZpZXdlcl9yZWZlcmVuY2VTcGFjZS5odHRwcy5odG1sIFsgU2tpcCBdCit3ZWJraXQu
b3JnL2IvMjA4OTg4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJTZXNz
aW9uX3Zpc2liaWxpdHlTdGF0ZS5odHRwcy5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMjA4
OTg4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJTdGF0aW9uYXJ5UmVm
ZXJlbmNlU3BhY2VfZmxvb3JsZXZlbF91cGRhdGVzLmh0dHBzLmh0bWwgWyBTa2lwIF0KK3dlYmtp
dC5vcmcvYi8yMDg5ODggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clZp
ZXdfZXllcy5odHRwcy5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMjA4OTg4IGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJWaWV3X21hdGNoLmh0dHBzLmh0bWwgWyBT
a2lwIF0KK3dlYmtpdC5vcmcvYi8yMDg5ODggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93ZWJ4ci94clZpZXdfb25lZnJhbWV1cGRhdGUuaHR0cHMuaHRtbCBbIFNraXAgXQord2Via2l0
Lm9yZy9iLzIwODk4OCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyVmll
d19zYW1lT2JqZWN0Lmh0dHBzLmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8yMDg5ODggaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clZpZXdlclBvc2Vfdmlld3Nfc2Ft
ZU9iamVjdC5odHRwcy5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMjA4OTg4IGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJWaWV3cG9ydF92YWxpZC5odHRwcy5odG1s
IFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMjA4OTg4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd2VieHIveHJXZWJHTExheWVyX2NvbnN0cnVjdG9yLmh0dHBzLmh0bWwgWyBTa2lwIF0K
K3dlYmtpdC5vcmcvYi8yMDg5ODggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4
ci94cldlYkdMTGF5ZXJfZnJhbWVidWZmZXJfZHJhdy5odHRwcy5odG1sIFsgU2tpcCBdCit3ZWJr
aXQub3JnL2IvMjA4OTg4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJX
ZWJHTExheWVyX2ZyYW1lYnVmZmVyX3NhbWVPYmplY3QuaHR0cHMuaHRtbCBbIFNraXAgXQord2Vi
a2l0Lm9yZy9iLzIwODk4OCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hy
V2ViR0xMYXllcl9mcmFtZWJ1ZmZlcl9zY2FsZS5odHRwcy5odG1sIFsgU2tpcCBdCit3ZWJraXQu
b3JnL2IvMjA4OTg4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJXZWJH
TExheWVyX29wYXF1ZV9mcmFtZWJ1ZmZlci5odHRwcy5odG1sIFsgU2tpcCBdCit3ZWJraXQub3Jn
L2IvMjA4OTg4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJXZWJHTExh
eWVyX29wYXF1ZV9mcmFtZWJ1ZmZlcl9zdGVuY2lsLmh0dHBzLmh0bWwgWyBTa2lwIF0KK3dlYmtp
dC5vcmcvYi8yMDg5ODggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94cldl
YkdMTGF5ZXJfdmlld3BvcnRzLmh0dHBzLmh0bWwgWyBTa2lwIF0KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy9yZXNvdXJjZXMvaW1wb3J0LWV4cGVjdGF0aW9ucy5qc29uIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3Jlc291cmNlcy9pbXBvcnQtZXhwZWN0YXRpb25zLmpz
b24KaW5kZXggN2UxZTNkMGUwZmNjY2U2OGMwZWMwNDQ4ZGM4ZjI4NjliOWE4ZjdjNy4uMTU0ZTRm
OTY3ODEzNmZkZTYzZTJiZWM0ODMwZGM4OTY5YmEwZDljOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3Jlc291cmNlcy9pbXBvcnQtZXhwZWN0YXRpb25zLmpzb24KKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3Jlc291cmNlcy9pbXBvcnQtZXhwZWN0YXRpb25zLmpz
b24KQEAgLTM5Nyw2ICszOTcsNyBAQAogICAgICJ3ZWItcGxhdGZvcm0tdGVzdHMvd2VidXNiIjog
InNraXAiLCAKICAgICAid2ViLXBsYXRmb3JtLXRlc3RzL3dlYnZyIjogInNraXAiLCAKICAgICAi
d2ViLXBsYXRmb3JtLXRlc3RzL3dlYnZ0dCI6ICJza2lwIiwgCisgICAgIndlYi1wbGF0Zm9ybS10
ZXN0cy93ZWJ4ciI6ICJpbXBvcnQiLAogICAgICJ3ZWItcGxhdGZvcm0tdGVzdHMvd29ya2VycyI6
ICJpbXBvcnQiLCAKICAgICAid2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtsZXRzIjogInNraXAiLCAK
ICAgICAid2ViLXBsYXRmb3JtLXRlc3RzL3gtZnJhbWUtb3B0aW9ucyI6ICJza2lwIiwgCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhy
L01FVEEueW1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
ZWJ4ci9NRVRBLnltbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MjBhZmVjMjAwMDcyMWQwNGFhZTllZDg5YmNhNDky
OTdmYTMxZDRiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9NRVRBLnltbApAQCAtMCwwICsxLDMgQEAKK3NwZWM6IGh0
dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHIvc3BlYy9sYXRlc3QvCitzdWdnZXN0
ZWRfcmV2aWV3ZXJzOgorICAtIGtsYXVzdwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9hci1tb2R1bGUvaWRsaGFybmVzcy5odHRw
cy53aW5kb3cuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd2VieHIvYXItbW9kdWxlL2lkbGhhcm5lc3MuaHR0cHMud2luZG93Lmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMjM4MjkxMzUyOGU2OTNiM2E1ZDU2YzY2MGE0NTA2MDk4MGI1NDhjMwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIv
YXItbW9kdWxlL2lkbGhhcm5lc3MuaHR0cHMud2luZG93Lmh0bWwKQEAgLTAsMCArMSBAQAorPCEt
LSBUaGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9yIFdlYktpdCB0ZXN0IGluZnJhc3RydWN0dXJlIHRv
IHJ1biB0aGUgdGVtcGxhdGVkIHRlc3QgLS0+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
ZWJ4ci9hci1tb2R1bGUvaWRsaGFybmVzcy5odHRwcy53aW5kb3cuanMgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL2FyLW1vZHVsZS9pZGxoYXJuZXNz
Lmh0dHBzLndpbmRvdy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMjY4ZjRlYTJhNWViMjI4ZmI0OWE2ZjA2ZDg5
MDVmOGQ5NDgwYWU3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9hci1tb2R1bGUvaWRsaGFybmVzcy5odHRwcy53aW5k
b3cuanMKQEAgLTAsMCArMSwxNiBAQAorLy8gTUVUQTogc2NyaXB0PS9yZXNvdXJjZXMvV2ViSURM
UGFyc2VyLmpzCisvLyBNRVRBOiBzY3JpcHQ9L3Jlc291cmNlcy9pZGxoYXJuZXNzLmpzCisKKyd1
c2Ugc3RyaWN0JzsKKworLy8gaHR0cHM6Ly9pbW1lcnNpdmUtd2ViLmdpdGh1Yi5pby93ZWJ4ci1h
ci1tb2R1bGUvCisKK2lkbF90ZXN0KAorICBbJ3dlYnhyLWFyLW1vZHVsZSddLAorICBbJ3dlYnhy
JywgJ2RvbSddLAorICBhc3luYyBpZGxfYXJyYXkgPT4geworICAgIGlkbF9hcnJheS5hZGRfb2Jq
ZWN0cyh7CisgICAgICAvLyBUT0RPOiBYUlNlc3Npb24KKyAgICB9KTsKKyAgfQorKTsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIv
YXItbW9kdWxlL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93ZWJ4ci9hci1tb2R1bGUvdzNjLWltcG9ydC5sb2cKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
OTAyYmU1YTBmNmEyNTk4NzgwZTBjZGVhMmM0MjdmMjJjNmU4YmNhZAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvYXIt
bW9kdWxlL3czYy1pbXBvcnQubG9nCkBAIC0wLDAgKzEsMjAgQEAKK1RoZSB0ZXN0cyBpbiB0aGlz
IGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgorRG8gTk9U
IG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCitJbnN0ZWFkLCBjcmVhdGUg
YSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6CisJaHR0cHM6Ly9naXRodWIuY29tL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93cHQKKworVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0
LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKKworRG8gTk9UIG1vZGlmeSBvciByZW1v
dmUgdGhpcyBmaWxlLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1Byb3BlcnRpZXMgcmVxdWlyaW5nIHZl
bmRvciBwcmVmaXhlczoKK05vbmUKK1Byb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHBy
ZWZpeGVzOgorTm9uZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMaXN0IG9mIGZpbGVzOgorL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvYXItbW9kdWxlL2lkbGhh
cm5lc3MuaHR0cHMud2luZG93LmpzCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93ZWJ4ci9hci1tb2R1bGUveHJEZXZpY2VfaXNTZXNzaW9uU3VwcG9ydGVkX2lt
bWVyc2l2ZS1hci5odHRwcy5odG1sCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93ZWJ4ci9hci1tb2R1bGUveHJEZXZpY2VfcmVxdWVzdFNlc3Npb25faW1tZXJz
aXZlLWFyLmh0dHBzLmh0bWwKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3dlYnhyL2FyLW1vZHVsZS94clNlc3Npb25fZW52aXJvbm1lbnRCbGVuZE1vZGUuaHR0
cHMuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93ZWJ4ci9hci1tb2R1bGUveHJEZXZpY2VfaXNTZXNzaW9uU3VwcG9ydGVkX2ltbWVy
c2l2ZS1hci5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93ZWJ4ci9hci1tb2R1bGUveHJEZXZpY2VfaXNTZXNzaW9uU3VwcG9ydGVkX2ltbWVy
c2l2ZS1hci5odHRwcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJjZDM2YTE3ZjYyMjQzZWVkZDllZWQ4ZWZj
YWM0MTZmNWYwMjlkOGQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL2FyLW1vZHVsZS94ckRldmljZV9pc1Nlc3Npb25T
dXBwb3J0ZWRfaW1tZXJzaXZlLWFyLmh0dHBzLmh0bWwKQEAgLTAsMCArMSwzNCBAQAorPCFET0NU
WVBFIGh0bWw+Cis8Ym9keT4KKyAgPHNjcmlwdCBzcmM9L3Jlc291cmNlcy90ZXN0aGFybmVzcy5q
cz48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9L3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5q
cz48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy93ZWJ4cl91dGlsLmpzIj48
L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy93ZWJ4cl90ZXN0X2NvbnN0YW50
cy5qcyI+PC9zY3JpcHQ+CisgIDxzY3JpcHQ+CisgICAgeHJfcHJvbWlzZV90ZXN0KAorICAgICAg
ImlzU2Vzc2lvblN1cHBvcnRlZCByZXNvbHZlcyB0byB0cnVlIGZvciBpbW1lcnNpdmUtYXIgb24g
YSBzdXBwb3J0ZWQgZGV2aWNlIiwKKyAgICAgICh0KSA9PiB7CisgICAgICAgIHJldHVybiBuYXZp
Z2F0b3IueHIudGVzdC5zaW11bGF0ZURldmljZUNvbm5lY3Rpb24oSU1NRVJTSVZFX0FSX0RFVklD
RSkKKyAgICAgICAgICAudGhlbiggKGNvbnRyb2xsZXIpID0+IHsKKyAgICAgICAgICAgIHJldHVy
biBuYXZpZ2F0b3IueHIuaXNTZXNzaW9uU3VwcG9ydGVkKCdpbW1lcnNpdmUtYXInKS50aGVuKChz
dXBwb3J0ZWQpID0+IHsKKyAgICAgICAgICAgICAgdC5zdGVwKCgpID0+IHsKKyAgICAgICAgICAg
ICAgICBhc3NlcnRfdHJ1ZShzdXBwb3J0ZWQpOworICAgICAgICAgICAgICB9KTsKKyAgICAgICAg
ICAgIH0pOworICAgICAgICAgIH0pOworICAgICAgfSk7CisKKyAgICB4cl9wcm9taXNlX3Rlc3Qo
CisgICAgICAiaXNTZXNzaW9uU3VwcG9ydGVkIHJlc29sdmVzIHRvIGZhbHNlIGZvciBpbW1lcnNp
dmUtYXIgb24gYW4gdW5zdXBwb3J0ZWQgZGV2aWNlIiwKKyAgICAgICh0KSA9PiB7CisgICAgICAg
IHJldHVybiBuYXZpZ2F0b3IueHIudGVzdC5zaW11bGF0ZURldmljZUNvbm5lY3Rpb24oVFJBQ0tF
RF9JTU1FUlNJVkVfREVWSUNFKQorICAgICAgICAgIC50aGVuKCAoY29udHJvbGxlcikgPT4gewor
ICAgICAgICAgICAgcmV0dXJuIG5hdmlnYXRvci54ci5pc1Nlc3Npb25TdXBwb3J0ZWQoJ2ltbWVy
c2l2ZS1hcicpLnRoZW4oKHN1cHBvcnRlZCkgPT4geworICAgICAgICAgICAgICB0LnN0ZXAoKCkg
PT4geworICAgICAgICAgICAgICAgIGFzc2VydF9mYWxzZShzdXBwb3J0ZWQpOworICAgICAgICAg
ICAgICB9KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgIH0pOworICAgICAgfSk7Cis8L3Nj
cmlwdD4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd2VieHIvYXItbW9kdWxlL3hyRGV2aWNlX3JlcXVlc3RTZXNzaW9uX2lt
bWVyc2l2ZS1hci5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93ZWJ4ci9hci1tb2R1bGUveHJEZXZpY2VfcmVxdWVzdFNlc3Npb25faW1tZXJz
aXZlLWFyLmh0dHBzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWJlNTZkZDYwZWM4MWRlODU5NWJmY2E3ZTFm
ZDM5ZTZlOTU1NGIzMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvYXItbW9kdWxlL3hyRGV2aWNlX3JlcXVlc3RTZXNz
aW9uX2ltbWVyc2l2ZS1hci5odHRwcy5odG1sCkBAIC0wLDAgKzEsMjggQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGJvZHk+CisgIDxzY3JpcHQgc3JjPS9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanM+PC9z
Y3JpcHQ+CisgIDxzY3JpcHQgc3JjPS9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanM+PC9z
Y3JpcHQ+CisgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvd2VieHJfdXRpbC5qcyI+PC9zY3Jp
cHQ+CisgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvd2VieHJfdGVzdF9jb25zdGFudHMuanMi
Pjwvc2NyaXB0PgorICA8Y2FudmFzPjwvY2FudmFzPgorICA8c2NyaXB0PgorICAgIHhyX3Nlc3Np
b25fcHJvbWlzZV90ZXN0KAorICAgICAgIlRlc3RzIHJlcXVlc3RTZXNzaW9uIGFjY2VwdHMgaW1t
ZXJzaXZlLWFyIG1vZGUiLAorICAgICAgKHNlc3Npb24pID0+IHsKKyAgICAgICAgYXNzZXJ0X25v
dF9lcXVhbHMoc2Vzc2lvbiwgbnVsbCk7CisgICAgICB9LCBJTU1FUlNJVkVfQVJfREVWSUNFLCAn
aW1tZXJzaXZlLWFyJywge30pOworCisgICAgeHJfcHJvbWlzZV90ZXN0KAorICAgICAgIlRlc3Rz
IHJlcXVlc3RTZXNzaW9uIHJlamVjdHMgaW1tZXJzaXZlLWFyIG1vZGUgd2hlbiB1bnN1cHBvcnRl
ZCIsCisgICAgICAodCkgPT4geworICAgICAgICByZXR1cm4gbmF2aWdhdG9yLnhyLnRlc3Quc2lt
dWxhdGVEZXZpY2VDb25uZWN0aW9uKFRSQUNLRURfSU1NRVJTSVZFX0RFVklDRSkKKyAgICAgICAg
ICAudGhlbigoY29udHJvbGxlcikgPT4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHsKKyAgICAg
ICAgICAgIG5hdmlnYXRvci54ci50ZXN0LnNpbXVsYXRlVXNlckFjdGl2YXRpb24oKCkgPT4gewor
ICAgICAgICAgICAgICByZXNvbHZlKHByb21pc2VfcmVqZWN0c19kb20oCisgICAgICAgICAgICAg
ICAgdCwgIk5vdFN1cHBvcnRlZEVycm9yIiwKKyAgICAgICAgICAgICAgICBuYXZpZ2F0b3IueHIu
cmVxdWVzdFNlc3Npb24oJ2ltbWVyc2l2ZS1hcicsIHt9KSkpOworICAgICAgICAgICAgfSk7Cisg
ICAgICAgICAgfSkpOworICAgICAgfSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvYXItbW9k
dWxlL3hyU2Vzc2lvbl9lbnZpcm9ubWVudEJsZW5kTW9kZS5odHRwcy5odG1sIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9hci1tb2R1bGUveHJTZXNz
aW9uX2Vudmlyb25tZW50QmxlbmRNb2RlLmh0dHBzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGEyZGRjMjhk
OGRjOGM0OTAzYjk4NWRiZTA4ZjlhZDAzNGVmMGYxYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvYXItbW9kdWxlL3hy
U2Vzc2lvbl9lbnZpcm9ubWVudEJsZW5kTW9kZS5odHRwcy5odG1sCkBAIC0wLDAgKzEsMjQgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGJvZHk+CisgIDxzY3JpcHQgc3JjPS9yZXNvdXJjZXMvdGVzdGhh
cm5lc3MuanM+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPS9yZXNvdXJjZXMvdGVzdGhhcm5lc3Ny
ZXBvcnQuanM+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvd2VieHJfdXRp
bC5qcyI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvd2VieHJfdGVzdF9j
b25zdGFudHMuanMiPjwvc2NyaXB0PgorICA8Y2FudmFzPjwvY2FudmFzPgorICA8c2NyaXB0Pgor
ICAgIHhyX3Nlc3Npb25fcHJvbWlzZV90ZXN0KAorICAgICAgIlRlc3RzIGVudmlyb25tZW50Qmxl
bmRNb2RlIGZvciBhbiBBUiBkZXZpY2UiLAorICAgICAgKHNlc3Npb24pID0+IHsKKyAgICAgICAg
YXNzZXJ0X25vdF9lcXVhbHMoc2Vzc2lvbi5lbnZpcm9ubWVudEJsZW5kTW9kZSwgIm9wYXF1ZSIp
OworICAgICAgICBhc3NlcnRfaW5fYXJyYXkoc2Vzc2lvbi5lbnZpcm9ubWVudEJsZW5kTW9kZSwg
WyJhbHBoYS1ibGVuZCIsICJhZGRpdGl2ZSJdKTsKKyAgICAgIH0sIElNTUVSU0lWRV9BUl9ERVZJ
Q0UsICdpbW1lcnNpdmUtYXInLCB7fSk7CisKKworICAgIHhyX3Nlc3Npb25fcHJvbWlzZV90ZXN0
KAorICAgICAgIlRlc3RzIGVudmlyb25tZW50QmxlbmRNb2RlIGZvciBhIFZSIGRldmljZSIsCisg
ICAgICAoc2Vzc2lvbikgPT4geworICAgICAgICBhc3NlcnRfbm90X2VxdWFscyhzZXNzaW9uLmVu
dmlyb25tZW50QmxlbmRNb2RlLCAiYWxwaGEtYmxlbmQiKTsKKyAgICAgICAgYXNzZXJ0X2luX2Fy
cmF5KHNlc3Npb24uZW52aXJvbm1lbnRCbGVuZE1vZGUsIFsib3BhcXVlIiwgImFkZGl0aXZlIl0p
OworICAgICAgfSwgVFJBQ0tFRF9JTU1FUlNJVkVfREVWSUNFLCAnaW1tZXJzaXZlLXZyJywge30p
OworPC9zY3JpcHQ+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL2RvbS1vdmVybGF5L2FyX2RvbV9vdmVybGF5Lmh0
dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dl
YnhyL2RvbS1vdmVybGF5L2FyX2RvbV9vdmVybGF5Lmh0dHBzLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTVl
YWM3OGQ5Mjg4YjUwN2NiZDU4MTQzYzk0ZWE1NDUxNDVkOTQ0MQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvZG9tLW92
ZXJsYXkvYXJfZG9tX292ZXJsYXkuaHR0cHMuaHRtbApAQCAtMCwwICsxLDI4NiBAQAorPCFET0NU
WVBFIGh0bWw+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3dlYnhyX3V0aWwuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy93ZWJ4cl90ZXN0X2NvbnN0YW50cy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3dlYnhyX3Rlc3RfYXNzZXJ0cy5qcyI+PC9z
Y3JpcHQ+CisKKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisgIGRpdiB7CisgICAgICBwYWRkaW5n
OiAxMHB4OworICAgICAgbWluLXdpZHRoOiAxMHB4OworICAgICAgbWluLWhlaWdodDogMTBweDsK
KyAgfQorICBpZnJhbWUgeworICAgIGJvcmRlcjogMDsKKyAgICB3aWR0aDogMjBweDsKKyAgICBo
ZWlnaHQ6IDIwcHg7CisgIH0KKzwvc3R5bGU+Cis8ZGl2IGlkPSJkaXZfb3ZlcmxheSI+CisgIDxk
aXYgaWQ9ImlubmVyX2EiPgorICA8L2Rpdj4KKyAgPGRpdiBpZD0iaW5uZXJfYiI+CisgIDwvZGl2
PgorICA8IS0tIFRoaXMgU1ZHIGlmcmFtZSBpcyB0cmVhdGVkIGFzIGNyb3NzLW9yaWdpbiBjb250
ZW50LiAtLT4KKyAgPGlmcmFtZSBpZD0iaWZyYW1lIiBzcmM9J2RhdGE6aW1hZ2Uvc3ZnK3htbCw8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPjxyZWN0IGhlaWdodD0iMjAiIHdpZHRoPSIyMCIgZmls
bD0icmVkIiBmaWxsLW9wYWNpdHk9IjAuMyIvPjwvc3ZnPic+CisgIDwvaWZyYW1lPgorICA8Y2Fu
dmFzPgorICA8L2NhbnZhcz4KKzwvZGl2PgorPGRpdiBpZD0iZGl2X290aGVyIj4KKyAgPHA+dGVz
dCB0ZXh0PC9wPgorPC9kaXY+CisKKzxzY3JpcHQ+CisKK2NvbnN0IGZha2VEZXZpY2VJbml0UGFy
YW1zID0geworICBzdXBwb3J0ZWRNb2RlczogWyJpbW1lcnNpdmUtYXIiXSwKKyAgdmlld3M6IFZB
TElEX1ZJRVdTLAorICB2aWV3ZXJPcmlnaW46IElERU5USVRZX1RSQU5TRk9STSwKKyAgc3VwcG9y
dGVkRmVhdHVyZXM6IEFMTF9GRUFUVVJFUywKK307CisKK2xldCB0ZXN0QmFzaWNQcm9wZXJ0aWVz
ID0gZnVuY3Rpb24ob3ZlcmxheUVsZW1lbnQsIHNlc3Npb24sIGZha2VEZXZpY2VDb250cm9sbGVy
LCB0KSB7CisgIGFzc2VydF9lcXVhbHMoc2Vzc2lvbi5tb2RlLCAnaW1tZXJzaXZlLWFyJyk7Cisg
IGFzc2VydF9ub3RfZXF1YWxzKHNlc3Npb24uZW52aXJvbm1lbnRCbGVuZE1vZGUsICdvcGFxdWUn
KTsKKworICBhc3NlcnRfdHJ1ZShvdmVybGF5RWxlbWVudCAhPSBudWxsKTsKKyAgYXNzZXJ0X3Ry
dWUob3ZlcmxheUVsZW1lbnQgaW5zdGFuY2VvZiBFbGVtZW50KTsKKworICAvLyBWZXJpZnkgdGhh
dCB0aGUgRE9NIG92ZXJsYXkgdHlwZSBpcyBvbmUgb2YgdGhlIGtub3duIHR5cGVzLgorICBhc3Nl
cnRfaW5fYXJyYXkoc2Vzc2lvbi5kb21PdmVybGF5U3RhdGUudHlwZSwKKyAgICAgICAgICAgICAg
ICAgIFsic2NyZWVuIiwgImZsb2F0aW5nIiwgImhlYWQtbG9ja2VkIl0pOworCisgIC8vIFZlcmlm
eSBTYW1lT2JqZWN0IHByb3BlcnR5IGZvciBkb21PdmVybGF5U3RhdGUKKyAgYXNzZXJ0X3RydWUo
c2Vzc2lvbi5kb21PdmVybGF5U3RhdGUgPT09IHNlc3Npb24uZG9tT3ZlcmxheVN0YXRlKTsKKwor
ICAvLyBUaGUgb3ZlcmxheSBlbGVtZW50IHNob3VsZCBoYXZlIGEgdHJhbnNwYXJlbnQgYmFja2dy
b3VuZC4KKyAgYXNzZXJ0X2VxdWFscyh3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShvdmVybGF5RWxl
bWVudCkuYmFja2dyb3VuZENvbG9yLAorICAgICAgICAgICAgICAgICdyZ2JhKDAsIDAsIDAsIDAp
Jyk7CisKKyAgLy8gQ2hlY2sgdGhhdCB0aGUgcHNldWRvc3R5bGUgaXMgc2V0LgorICBhc3NlcnRf
ZXF1YWxzKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJzp4ci1vdmVybGF5JyksIG92ZXJsYXlFbGVt
ZW50KTsKKworICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHsKKyAgICBzZXNzaW9u
LnJlcXVlc3RBbmltYXRpb25GcmFtZSgodGltZSwgeHJGcmFtZSkgPT4geworICAgICAgcmVzb2x2
ZSgpOworICAgIH0pOworICB9KTsKK307CisKK2xldCB0ZXN0RnVsbHNjcmVlbiA9IGZ1bmN0aW9u
KG92ZXJsYXlFbGVtZW50LCBzZXNzaW9uLCBmYWtlRGV2aWNlQ29udHJvbGxlciwgdCkgeworICAv
LyBJZiB0aGUgYnJvd3NlciBpbXBsZW1lbnRzIERPTSBPdmVybGF5IHVzaW5nIEZ1bGxzY3JlZW4g
QVBJLAorICAvLyBpdCBtdXN0IG5vdCBiZSBwb3NzaWJsZSB0byBjaGFuZ2UgdGhlIERPTSBPdmVy
bGF5IGVsZW1lbnQgYnkgdXNpbmcKKyAgLy8gRnVsbHNjcmVlbiBBUEksIGFuZCBhdHRlbXB0cyB0
byBkbyBzbyBtdXN0IGJlIHJlamVjdGVkLgorICAvLyBTaW5jZSB0aGlzIGlzIHVwIHRvIHRoZSBV
QSwgdGhpcyB0ZXN0IGFsc28gcGFzc2VzIGlmIHRoZSBmdWxsc2NyZWVuCisgIC8vIGVsZW1lbnQg
aXMgZGlmZmVyZW50IGZyb20gdGhlIG92ZXJsYXkgZWxlbWVudC4KKworICBsZXQgcmFmUHJvbWlz
ZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7CisgICAgc2Vzc2lvbi5yZXF1ZXN0QW5pbWF0
aW9uRnJhbWUoKHRpbWUsIHhyRnJhbWUpID0+IHsKKyAgICAgIHJlc29sdmUoKTsKKyAgICB9KTsK
KyAgfSk7CisgIGxldCBwcm9taXNlcyA9IFtyYWZQcm9taXNlXTsKKworICBpZiAoZG9jdW1lbnQu
ZnVsbHNjcmVlbkVsZW1lbnQgPT0gb3ZlcmxheUVsZW1lbnQpIHsKKyAgICBsZXQgZWxlbSA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdkaXZfb3RoZXInKTsKKyAgICBhc3NlcnRfdHJ1ZShlbGVt
ICE9IG51bGwpOworICAgIGFzc2VydF9ub3RfZXF1YWxzKGVsZW0sIG92ZXJsYXlFbGVtZW50KTsK
KworICAgIGxldCBmdWxsc2NyZWVuUHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWpl
Y3QpID0+IHsKKyAgICAgIGVsZW0ucmVxdWVzdEZ1bGxzY3JlZW4oKS50aGVuKCgpID0+IHsKKyAg
ICAgICAgYXNzZXJ0X3VucmVhY2hlZCgiZnVsbHNjcmVlbiBjaGFuZ2Ugc2hvdWxkIGJlIGJsb2Nr
ZWQiKTsKKyAgICAgICAgcmVqZWN0KCk7CisgICAgICB9KS5jYXRjaCgoKSA9PiB7CisgICAgICAg
IHJlc29sdmUoKTsKKyAgICAgIH0pOworICAgIH0pOworICAgIHByb21pc2VzLnB1c2goZnVsbHNj
cmVlblByb21pc2UpOworICB9CisKKyAgcmV0dXJuIFByb21pc2UuYWxsKHByb21pc2VzKTsKK307
CisKK2xldCB3YXRjaGVyU3RlcCA9IG5ldyBFdmVudCgid2F0Y2hlcnN0ZXAiKTsKK2xldCB3YXRj
aGVyRG9uZSA9IG5ldyBFdmVudCgid2F0Y2hlcmRvbmUiKTsKKworbGV0IHRlc3RJbnB1dCA9IGZ1
bmN0aW9uKG92ZXJsYXlFbGVtZW50LCBzZXNzaW9uLCBmYWtlRGV2aWNlQ29udHJvbGxlciwgdCkg
eworCisgIC8vIFVzZSB0d28gRElWcyBmb3IgdGhpcyB0ZXN0LiAiaW5uZXJfYSIgdXNlcyBhICJi
ZWZvcmV4cnNlbGVjdCIgaGFuZGxlcgorICAvLyB0aGF0IHVzZXMgcHJldmVudERlZmF1bHQoKS4g
Q29udHJvbGxlciBpbnRlcmFjdGlvbnMgd2l0aCBpdCBzaG91bGQgdHJpZ2dlcgorICAvLyB0aGF0
IGV2ZW50LCBhbmQgbm90IGdlbmVyYXRlIGFuIFhSIHNlbGVjdCBldmVudC4KKworICBsZXQgaW5u
ZXJfYSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbm5lcl9hJyk7CisgIGFzc2VydF90cnVl
KGlubmVyX2EgIT0gbnVsbCk7CisgIGxldCBpbm5lcl9iID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2lubmVyX2InKTsKKyAgYXNzZXJ0X3RydWUoaW5uZXJfYiAhPSBudWxsKTsKKworICBsZXQg
Z290X2JlZm9yZXhyc2VsZWN0ID0gZmFsc2U7CisgIGlubmVyX2EuYWRkRXZlbnRMaXN0ZW5lcign
YmVmb3JleHJzZWxlY3QnLCAoZXYpID0+IHsKKyAgICBldi5wcmV2ZW50RGVmYXVsdCgpOworICAg
IGdvdF9iZWZvcmV4cnNlbGVjdCA9IHRydWU7CisgIH0pOworCisgIGxldCBldmVudFdhdGNoZXIg
PSBuZXcgRXZlbnRXYXRjaGVyKAorICAgIHQsIHNlc3Npb24sIFsid2F0Y2hlcnN0ZXAiLCAic2Vs
ZWN0IiwgIndhdGNoZXJkb25lIl0pOworCisgIC8vIFNldCB1cCB0aGUgZXhwZWN0ZWQgc2VxdWVu
Y2Ugb2YgZXZlbnRzLiBUaGUgdGVzdCB0cmlnZ2VycyB0d28gc2VsZWN0CisgIC8vIGFjdGlvbnMs
IGJ1dCBvbmx5IHRoZSBzZWNvbmQgb25lIHNob3VsZCBnZW5lcmF0ZSBhICJzZWxlY3QiIGV2ZW50
LgorICAvLyBVc2UgYSAid2F0Y2hlcnN0ZXAiIGluIGJldHdlZW4gdG8gdmVyaWZ5IHRoaXMuCisg
IGxldCBldmVudFByb21pc2UgPSBldmVudFdhdGNoZXIud2FpdF9mb3IoCisgICAgWyJ3YXRjaGVy
c3RlcCIsICJzZWxlY3QiLCAid2F0Y2hlcmRvbmUiXSk7CisKKyAgbGV0IGlucHV0X3NvdXJjZSA9
CisgICAgICBmYWtlRGV2aWNlQ29udHJvbGxlci5zaW11bGF0ZUlucHV0U291cmNlQ29ubmVjdGlv
bihTQ1JFRU5fQ09OVFJPTExFUik7CisgIHNlc3Npb24ucmVxdWVzdFJlZmVyZW5jZVNwYWNlKCd2
aWV3ZXInKS50aGVuKGZ1bmN0aW9uKHZpZXdlclNwYWNlKSB7CisgICAgLy8gUHJlc3MgdGhlIHBy
aW1hcnkgaW5wdXQgYnV0dG9uIGFuZCB0aGVuIHJlbGVhc2UgaXQgYSBzaG9ydCB0aW1lIGxhdGVy
LgorICAgIHNlc3Npb24ucmVxdWVzdEFuaW1hdGlvbkZyYW1lKCh0aW1lLCB4ckZyYW1lKSA9PiB7
CisgICAgICBpbnB1dF9zb3VyY2Uuc2V0T3ZlcmxheVBvaW50ZXJQb3NpdGlvbihpbm5lcl9hLm9m
ZnNldExlZnQgKyAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW5uZXJfYS5vZmZzZXRUb3AgKyAxKTsKKyAgICAgIGlucHV0X3NvdXJjZS5zdGFydFNlbGVj
dGlvbigpOworCisgICAgICBzZXNzaW9uLnJlcXVlc3RBbmltYXRpb25GcmFtZSgodGltZSwgeHJG
cmFtZSkgPT4geworICAgICAgICBpbnB1dF9zb3VyY2UuZW5kU2VsZWN0aW9uKCk7CisKKyAgICAg
ICAgc2Vzc2lvbi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKHRpbWUsIHhyRnJhbWUpID0+IHsKKyAg
ICAgICAgICAvLyBOZWVkIHRvIHByb2Nlc3Mgb25lIG1vcmUgZnJhbWUgdG8gYWxsb3cgc2VsZWN0
IHRvIHByb3BhZ2F0ZS4KKyAgICAgICAgICBzZXNzaW9uLnJlcXVlc3RBbmltYXRpb25GcmFtZSgo
dGltZSwgeHJGcmFtZSkgPT4geworICAgICAgICAgICAgc2Vzc2lvbi5kaXNwYXRjaEV2ZW50KHdh
dGNoZXJTdGVwKTsKKworICAgICAgICAgICAgYXNzZXJ0X3RydWUoZ290X2JlZm9yZXhyc2VsZWN0
KTsKKworICAgICAgICAgICAgc2Vzc2lvbi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKHRpbWUsIHhy
RnJhbWUpID0+IHsKKyAgICAgICAgICAgICAgaW5wdXRfc291cmNlLnNldE92ZXJsYXlQb2ludGVy
UG9zaXRpb24oaW5uZXJfYi5vZmZzZXRMZWZ0ICsgMSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5uZXJfYi5vZmZzZXRUb3AgKyAxKTsKKyAg
ICAgICAgICAgICAgaW5wdXRfc291cmNlLnN0YXJ0U2VsZWN0aW9uKCk7CisKKyAgICAgICAgICAg
ICAgc2Vzc2lvbi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKHRpbWUsIHhyRnJhbWUpID0+IHsKKyAg
ICAgICAgICAgICAgICBpbnB1dF9zb3VyY2UuZW5kU2VsZWN0aW9uKCk7CisKKyAgICAgICAgICAg
ICAgICBzZXNzaW9uLnJlcXVlc3RBbmltYXRpb25GcmFtZSgodGltZSwgeHJGcmFtZSkgPT4gewor
ICAgICAgICAgICAgICAgICAgLy8gTmVlZCB0byBwcm9jZXNzIG9uZSBtb3JlIGZyYW1lIHRvIGFs
bG93IHNlbGVjdCB0byBwcm9wYWdhdGUuCisgICAgICAgICAgICAgICAgICBzZXNzaW9uLmRpc3Bh
dGNoRXZlbnQod2F0Y2hlckRvbmUpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAg
ICB9KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICAg
IH0pOworICAgIH0pOworICB9KTsKKyAgcmV0dXJuIGV2ZW50UHJvbWlzZTsKK307CisKK2xldCB0
ZXN0Q3Jvc3NPcmlnaW5Db250ZW50ID0gZnVuY3Rpb24ob3ZlcmxheUVsZW1lbnQsIHNlc3Npb24s
IGZha2VEZXZpY2VDb250cm9sbGVyLCB0KSB7CisgIGxldCBpZnJhbWUgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnaWZyYW1lJyk7CisgIGFzc2VydF90cnVlKGlmcmFtZSAhPSBudWxsKTsKKyAg
bGV0IGlubmVyX2IgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW5uZXJfYicpOworICBhc3Nl
cnRfdHJ1ZShpbm5lcl9iICE9IG51bGwpOworCisgIGxldCBldmVudFdhdGNoZXIgPSBuZXcgRXZl
bnRXYXRjaGVyKAorICAgIHQsIHNlc3Npb24sIFsid2F0Y2hlcnN0ZXAiLCAic2VsZWN0IiwgIndh
dGNoZXJkb25lIl0pOworCisgIC8vIFNldCB1cCB0aGUgZXhwZWN0ZWQgc2VxdWVuY2Ugb2YgZXZl
bnRzLiBUaGUgdGVzdCB0cmlnZ2VycyB0d28gc2VsZWN0CisgIC8vIGFjdGlvbnMsIGJ1dCBvbmx5
IHRoZSBzZWNvbmQgb25lIHNob3VsZCBnZW5lcmF0ZSBhICJzZWxlY3QiIGV2ZW50LgorICAvLyBV
c2UgYSAid2F0Y2hlcnN0ZXAiIGluIGJldHdlZW4gdG8gdmVyaWZ5IHRoaXMuCisgIGxldCBldmVu
dFByb21pc2UgPSBldmVudFdhdGNoZXIud2FpdF9mb3IoCisgICAgWyJ3YXRjaGVyc3RlcCIsICJz
ZWxlY3QiLCAid2F0Y2hlcmRvbmUiXSk7CisKKyAgbGV0IGlucHV0X3NvdXJjZSA9CisgICAgICBm
YWtlRGV2aWNlQ29udHJvbGxlci5zaW11bGF0ZUlucHV0U291cmNlQ29ubmVjdGlvbihTQ1JFRU5f
Q09OVFJPTExFUik7CisgIHNlc3Npb24ucmVxdWVzdFJlZmVyZW5jZVNwYWNlKCd2aWV3ZXInKS50
aGVuKGZ1bmN0aW9uKHZpZXdlclNwYWNlKSB7CisgICAgLy8gUHJlc3MgdGhlIHByaW1hcnkgaW5w
dXQgYnV0dG9uIGFuZCB0aGVuIHJlbGVhc2UgaXQgYSBzaG9ydCB0aW1lIGxhdGVyLgorICAgIHNl
c3Npb24ucmVxdWVzdEFuaW1hdGlvbkZyYW1lKCh0aW1lLCB4ckZyYW1lKSA9PiB7CisgICAgICBp
bnB1dF9zb3VyY2Uuc2V0T3ZlcmxheVBvaW50ZXJQb3NpdGlvbihpZnJhbWUub2Zmc2V0TGVmdCAr
IDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZnJhbWUu
b2Zmc2V0VG9wICsgMSk7CisgICAgICBpbnB1dF9zb3VyY2Uuc3RhcnRTZWxlY3Rpb24oKTsKKwor
ICAgICAgc2Vzc2lvbi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKHRpbWUsIHhyRnJhbWUpID0+IHsK
KyAgICAgICAgaW5wdXRfc291cmNlLmVuZFNlbGVjdGlvbigpOworCisgICAgICAgIHNlc3Npb24u
cmVxdWVzdEFuaW1hdGlvbkZyYW1lKCh0aW1lLCB4ckZyYW1lKSA9PiB7CisgICAgICAgICAgLy8g
TmVlZCB0byBwcm9jZXNzIG9uZSBtb3JlIGZyYW1lIHRvIGFsbG93IHNlbGVjdCB0byBwcm9wYWdh
dGUuCisgICAgICAgICAgc2Vzc2lvbi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKHRpbWUsIHhyRnJh
bWUpID0+IHsKKyAgICAgICAgICAgIHNlc3Npb24uZGlzcGF0Y2hFdmVudCh3YXRjaGVyU3RlcCk7
CisKKyAgICAgICAgICAgIHNlc3Npb24ucmVxdWVzdEFuaW1hdGlvbkZyYW1lKCh0aW1lLCB4ckZy
YW1lKSA9PiB7CisgICAgICAgICAgICAgIGlucHV0X3NvdXJjZS5zZXRPdmVybGF5UG9pbnRlclBv
c2l0aW9uKGlubmVyX2Iub2Zmc2V0TGVmdCArIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlubmVyX2Iub2Zmc2V0VG9wICsgMSk7CisgICAg
ICAgICAgICAgIGlucHV0X3NvdXJjZS5zdGFydFNlbGVjdGlvbigpOworCisgICAgICAgICAgICAg
IHNlc3Npb24ucmVxdWVzdEFuaW1hdGlvbkZyYW1lKCh0aW1lLCB4ckZyYW1lKSA9PiB7CisgICAg
ICAgICAgICAgICAgaW5wdXRfc291cmNlLmVuZFNlbGVjdGlvbigpOworCisgICAgICAgICAgICAg
ICAgc2Vzc2lvbi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKHRpbWUsIHhyRnJhbWUpID0+IHsKKyAg
ICAgICAgICAgICAgICAgIC8vIE5lZWQgdG8gcHJvY2VzcyBvbmUgbW9yZSBmcmFtZSB0byBhbGxv
dyBzZWxlY3QgdG8gcHJvcGFnYXRlLgorICAgICAgICAgICAgICAgICAgc2Vzc2lvbi5kaXNwYXRj
aEV2ZW50KHdhdGNoZXJEb25lKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAg
fSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgICB9
KTsKKyAgICB9KTsKKyAgfSk7CisgIHJldHVybiBldmVudFByb21pc2U7Cit9OworCit4cl9wcm9t
aXNlX3Rlc3QoCisiRW5zdXJlcyBET00gT3ZlcmxheSByZWplY3RlZCB3aXRob3V0IHJvb3QgZWxl
bWVudCIsCisodCkgPT4geworICByZXR1cm4gbmF2aWdhdG9yLnhyLnRlc3Quc2ltdWxhdGVEZXZp
Y2VDb25uZWN0aW9uKGZha2VEZXZpY2VJbml0UGFyYW1zKQorICAudGhlbigoKSA9PiB7CisgICAg
cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKKyAgICAgIG5hdmlnYXRv
ci54ci50ZXN0LnNpbXVsYXRlVXNlckFjdGl2YXRpb24oKCkgPT4geworICAgICAgICByZXNvbHZl
KAorICAgICAgICAgIHByb21pc2VfcmVqZWN0c19kb20odCwgIk5vdFN1cHBvcnRlZEVycm9yIiwK
KyAgICAgICAgICAgIG5hdmlnYXRvci54ci5yZXF1ZXN0U2Vzc2lvbignaW1tZXJzaXZlLWFyJywK
KyAgICAgICAgICAgICAge3JlcXVpcmVkRmVhdHVyZXM6IFsnZG9tLW92ZXJsYXknXX0pCisgICAg
ICAgICAgICAudGhlbihzZXNzaW9uID0+IHNlc3Npb24uZW5kKCkpLAorICAgICAgICAgICAgIlNo
b3VsZCByZWplY3Qgd2hlbiBub3Qgc3BlY2lmeWluZyBET00gb3ZlcmxheSByb290IikKKyAgICAg
ICAgKTsKKyAgICAgIH0pOworICAgIH0pOworICB9KTsKK30pOworCit4cl9zZXNzaW9uX3Byb21p
c2VfdGVzdCgKKyAgIkVuc3VyZXMgRE9NIE92ZXJsYXkgZmVhdHVyZSB3b3JrcyBmb3IgaW1tZXJz
aXZlLWFyLCBib2R5IGVsZW1lbnQiLAorICB0ZXN0QmFzaWNQcm9wZXJ0aWVzLmJpbmQodGhpcywg
ZG9jdW1lbnQuYm9keSksCisgIGZha2VEZXZpY2VJbml0UGFyYW1zLCAnaW1tZXJzaXZlLWFyJywK
KyAgICB7cmVxdWlyZWRGZWF0dXJlczogWydkb20tb3ZlcmxheSddLAorICAgICBkb21PdmVybGF5
OiB7IHJvb3Q6IGRvY3VtZW50LmJvZHkgfSB9KTsKKworeHJfc2Vzc2lvbl9wcm9taXNlX3Rlc3Qo
CisgICJFbnN1cmVzIERPTSBPdmVybGF5IGZlYXR1cmUgd29ya3MgZm9yIGltbWVyc2l2ZS1hciwg
ZGl2IGVsZW1lbnQiLAorICB0ZXN0QmFzaWNQcm9wZXJ0aWVzLmJpbmQodGhpcywgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ2Rpdl9vdmVybGF5JykpLAorICBmYWtlRGV2aWNlSW5pdFBhcmFtcywg
J2ltbWVyc2l2ZS1hcicsCisgICAge3JlcXVpcmVkRmVhdHVyZXM6IFsnZG9tLW92ZXJsYXknXSwK
KyAgICAgZG9tT3ZlcmxheTogeyByb290OiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGl2X292
ZXJsYXknKSB9IH0pOworCit4cl9zZXNzaW9uX3Byb21pc2VfdGVzdCgKKyAgIkVuc3VyZXMgRE9N
IE92ZXJsYXkgaW5wdXQgZGVkdXBsaWNhdGlvbiB3b3JrcyIsCisgIHRlc3RJbnB1dC5iaW5kKHRo
aXMsIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkaXZfb3ZlcmxheScpKSwKKyAgZmFrZURldmlj
ZUluaXRQYXJhbXMsICdpbW1lcnNpdmUtYXInLCB7CisgICAgcmVxdWlyZWRGZWF0dXJlczogWydk
b20tb3ZlcmxheSddLAorICAgIGRvbU92ZXJsYXk6IHsgcm9vdDogZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2Rpdl9vdmVybGF5JykgfQorICB9KTsKKworeHJfc2Vzc2lvbl9wcm9taXNlX3Rlc3Qo
CisgICJFbnN1cmVzIERPTSBPdmVybGF5IEZ1bGxzY3JlZW4gQVBJIGRvZXNuJ3QgY2hhbmdlIERP
TSBvdmVybGF5IiwKKyAgdGVzdEZ1bGxzY3JlZW4uYmluZCh0aGlzLCBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnZGl2X292ZXJsYXknKSksCisgIGZha2VEZXZpY2VJbml0UGFyYW1zLCAnaW1tZXJz
aXZlLWFyJywgeworICAgIHJlcXVpcmVkRmVhdHVyZXM6IFsnZG9tLW92ZXJsYXknXSwKKyAgICBk
b21PdmVybGF5OiB7IHJvb3Q6IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkaXZfb3ZlcmxheScp
IH0KKyAgfSk7CisKK3hyX3Nlc3Npb25fcHJvbWlzZV90ZXN0KAorICAiRW5zdXJlcyBET00gT3Zl
cmxheSBpbnRlcmFjdGlvbnMgb24gY3Jvc3Mgb3JpZ2luIGlmcmFtZSBhcmUgaWdub3JlZCIsCisg
IHRlc3RDcm9zc09yaWdpbkNvbnRlbnQuYmluZCh0aGlzLCBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnZGl2X292ZXJsYXknKSksCisgIGZha2VEZXZpY2VJbml0UGFyYW1zLCAnaW1tZXJzaXZlLWFy
JywgeworICAgIHJlcXVpcmVkRmVhdHVyZXM6IFsnZG9tLW92ZXJsYXknXSwKKyAgICBkb21PdmVy
bGF5OiB7IHJvb3Q6IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkaXZfb3ZlcmxheScpIH0KKyAg
fSk7CisKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9kb20tb3ZlcmxheS93M2MtaW1wb3J0LmxvZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvZG9tLW92ZXJsYXkv
dzNjLWltcG9ydC5sb2cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTcwOTkxZDNjZjRiMTM2ZTZkZDhlMjkxNDM0YWEy
MjQ2MWU3MDNlNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvZG9tLW92ZXJsYXkvdzNjLWltcG9ydC5sb2cKQEAgLTAs
MCArMSwxNyBAQAorVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJv
bSB0aGUgVzNDIHJlcG9zaXRvcnkuCitEbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5
IGluIFdlYktpdC4KK0luc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdp
dGh1YjoKKwlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAorCitUaGVu
IHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWlt
cG9ydAorCitEbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCisKKy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgorTm9uZQorUHJvcGVy
dHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6CitOb25lCistLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KK0xpc3Qgb2YgZmlsZXM6CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93ZWJ4ci9kb20tb3ZlcmxheS9hcl9kb21fb3ZlcmxheS5odHRwcy5odG1sCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhy
L2V2ZW50c19pbnB1dF9zb3VyY2VfcmVjcmVhdGlvbi5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9ldmVudHNfaW5wdXRfc291cmNl
X3JlY3JlYXRpb24uaHR0cHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lY2I0YjAyMmJmMDk0MTBjYWU0NGI0
ZjVhM2M3MWJjNWMwNTQxODFlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9ldmVudHNfaW5wdXRfc291cmNlX3JlY3Jl
YXRpb24uaHR0cHMuaHRtbApAQCAtMCwwICsxLDE0NCBAQAorPCFET0NUWVBFIGh0bWw+Cis8c2Ny
aXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL3dlYnhyX3V0aWwuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291
cmNlcy93ZWJ4cl90ZXN0X2NvbnN0YW50cy5qcyI+PC9zY3JpcHQ+Cis8Y2FudmFzIGlkPSJ3ZWJn
bC1jYW52YXMiPjwvY2FudmFzPgorCis8c2NyaXB0PgorbGV0IHRlc3ROYW1lID0gIklucHV0IHNv
dXJjZXMgYXJlIHJlLWNyZWF0ZWQgd2hlbiBoYW5kZWRuZXNzIG9yIHRhcmdldCByYXkgbW9kZSBj
aGFuZ2VzIjsKKworbGV0IHdhdGNoZXJEb25lID0gbmV3IEV2ZW50KCJ3YXRjaGVyZG9uZSIpOwor
CitsZXQgZmFrZURldmljZUluaXRQYXJhbXMgPSBUUkFDS0VEX0lNTUVSU0lWRV9ERVZJQ0U7CisK
K2xldCB0ZXN0RnVuY3Rpb24gPSBmdW5jdGlvbihzZXNzaW9uLCBmYWtlRGV2aWNlQ29udHJvbGxl
ciwgdCkgeworICBsZXQgZXZlbnRXYXRjaGVyID0gbmV3IEV2ZW50V2F0Y2hlcih0LCBzZXNzaW9u
LCBbIndhdGNoZXJkb25lIl0pOworICBsZXQgZXZlbnRQcm9taXNlID0gZXZlbnRXYXRjaGVyLndh
aXRfZm9yKFsid2F0Y2hlcmRvbmUiXSk7CisKKyAgbGV0IGlucHV0Q2hhbmdlRXZlbnRzID0gMDsK
KyAgbGV0IGNhY2hlZF9pbnB1dF9zb3VyY2UgPSBudWxsOworICBmdW5jdGlvbiBvbklucHV0U291
cmNlc0NoYW5nZShldmVudCkgeworICAgIHQuc3RlcCgoKSA9PiB7CisgICAgICBpbnB1dENoYW5n
ZUV2ZW50cysrOworICAgICAgYXNzZXJ0X2VxdWFscyhldmVudC5zZXNzaW9uLCBzZXNzaW9uKTsK
KworICAgICAgaWYgKGlucHV0Q2hhbmdlRXZlbnRzID09IDEpIHsKKyAgICAgICAgLy8gVGhlIGZp
cnN0IGNoYW5nZSBldmVudCBzaG91bGQgYmUgYWRkaW5nIG91ciBjb250cm9sbGVyLgorICAgICAg
ICB2YWxpZGF0ZUFkZGVkKGV2ZW50LmFkZGVkLCAxKTsKKyAgICAgICAgdmFsaWRhdGVSZW1vdmVk
KGV2ZW50LnJlbW92ZWQsIDApOworICAgICAgICBjYWNoZWRfaW5wdXRfc291cmNlID0gZ2V0SW5w
dXRTb3VyY2VzKClbMF07CisgICAgICAgIGFzc2VydF9ub3RfZXF1YWxzKGNhY2hlZF9pbnB1dF9z
b3VyY2UsIG51bGwpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGNhY2hlZF9pbnB1dF9zb3VyY2Uu
aGFuZGVkbmVzcywgIm5vbmUiKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhjYWNoZWRfaW5wdXRf
c291cmNlLnRhcmdldFJheU1vZGUsICJnYXplIik7CisgICAgICAgIGFzc2VydFByb2ZpbGVzRXF1
YWwoY2FjaGVkX2lucHV0X3NvdXJjZS5wcm9maWxlcywgWyJhIiwgImIiXSk7CisgICAgICB9IGVs
c2UgaWYgKGlucHV0Q2hhbmdlRXZlbnRzID09IDIpIHsKKyAgICAgICAgLy8gVGhlIHNlY29uZCBl
dmVudCBzaG91bGQgYmUgcmVwbGFjaW5nIHRoZSBjb250cm9sbGVyIHdpdGggb25lIHRoYXQgaGFz
CisgICAgICAgIC8vIHRoZSB1cGRhdGVkIHRhcmdldCByYXkgbW9kZS4KKyAgICAgICAgdmFsaWRh
dGVJbnB1dFNvdXJjZUNoYW5nZShldmVudCwgIm5vbmUiLCAidHJhY2tlZC1wb2ludGVyIiwgWyJh
IiwgImIiXSk7CisgICAgICAgIGNhY2hlZF9pbnB1dF9zb3VyY2UgPSBnZXRJbnB1dFNvdXJjZXMo
KVswXTsKKyAgICAgIH0gZWxzZSBpZiAoaW5wdXRDaGFuZ2VFdmVudHMgPT0gMykgeworICAgICAg
ICAvLyBUaGUgdGhpcmQgZXZlbnQgc2hvdWxkIGJlIHJlcGxhY2luZyB0aGUgY29udHJvbGxlciB3
aXRoIG9uZSB0aGF0IGhhcworICAgICAgICAvLyB0aGUgdXBkYXRlZCBoYW5kZWRuZXNzLgorICAg
ICAgICB2YWxpZGF0ZUlucHV0U291cmNlQ2hhbmdlKGV2ZW50LCAibGVmdCIsICJ0cmFja2VkLXBv
aW50ZXIiLCBbImEiLCAiYiJdKTsKKyAgICAgICAgY2FjaGVkX2lucHV0X3NvdXJjZSA9IGdldElu
cHV0U291cmNlcygpWzBdOworICAgICAgfSBlbHNlIGlmIChpbnB1dENoYW5nZUV2ZW50cyA9PSA0
KSB7CisgICAgICAgIC8vIFRoZSBmb3VydGggZXZlbnQgc2hvdWxkIGJlIHVwZGF0aW5nIHRoZSBz
ZWNvbmQgdmFsdWUgaW4gdGhlIHByb2ZpbGVzCisgICAgICAgIC8vIGFycmF5LgorICAgICAgICB2
YWxpZGF0ZUlucHV0U291cmNlQ2hhbmdlKGV2ZW50LCAibGVmdCIsICJ0cmFja2VkLXBvaW50ZXIi
LCBbImEiLCAiYyJdKTsKKyAgICAgICAgY2FjaGVkX2lucHV0X3NvdXJjZSA9IGdldElucHV0U291
cmNlcygpWzBdOworICAgICAgfSBlbHNlIGlmIChpbnB1dENoYW5nZUV2ZW50cyA9PSA1KSB7Cisg
ICAgICAgIC8vIFRoZSBmaWZ0aCBldmVudCBzaG91bGQgYmUgcmVtb3ZpbmcgdGhlIHNlY29uZCB2
YWx1ZSBmcm9tIHRoZSBwcm9maWxlcworICAgICAgICAvLyBhcnJheS4KKyAgICAgICAgdmFsaWRh
dGVJbnB1dFNvdXJjZUNoYW5nZShldmVudCwgImxlZnQiLCAidHJhY2tlZC1wb2ludGVyIiwgWyJh
Il0pOworICAgICAgICBzZXNzaW9uLmRpc3BhdGNoRXZlbnQod2F0Y2hlckRvbmUpOworICAgICAg
fQorICAgIH0pOworICB9CisKKyAgZnVuY3Rpb24gYXNzZXJ0UHJvZmlsZXNFcXVhbChwcm9maWxl
cywgZXhwZWN0ZWRfcHJvZmlsZXMpIHsKKyAgICBhc3NlcnRfZXF1YWxzKHByb2ZpbGVzLmxlbmd0
aCwgZXhwZWN0ZWRfcHJvZmlsZXMubGVuZ3RoKTsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBy
b2ZpbGVzLmxlbmd0aDsgKytpKSB7CisgICAgICBhc3NlcnRfZXF1YWxzKHByb2ZpbGVzW2ldLCBl
eHBlY3RlZF9wcm9maWxlc1tpXSk7CisgICAgfQorICB9CisKKyAgZnVuY3Rpb24gdmFsaWRhdGVJ
bnB1dFNvdXJjZUNoYW5nZSgKKyAgICAgIGV2ZW50LCBleHBlY3RlZF9oYW5kLCBleHBlY3RlZF9t
b2RlLCBleHBlY3RlZF9wcm9maWxlcykgeworICAgIHZhbGlkYXRlQWRkZWQoZXZlbnQuYWRkZWQs
IDEpOworICAgIHZhbGlkYXRlUmVtb3ZlZChldmVudC5yZW1vdmVkLCAxKTsKKyAgICBhc3NlcnRf
dHJ1ZShldmVudC5yZW1vdmVkLmluY2x1ZGVzKGNhY2hlZF9pbnB1dF9zb3VyY2UpKTsKKyAgICBh
c3NlcnRfZmFsc2UoZXZlbnQuYWRkZWQuaW5jbHVkZXMoY2FjaGVkX2lucHV0X3NvdXJjZSkpOwor
ICAgIGxldCBzb3VyY2UgPSBldmVudC5hZGRlZFswXTsKKyAgICBhc3NlcnRfZXF1YWxzKHNvdXJj
ZS5oYW5kZWRuZXNzLCBleHBlY3RlZF9oYW5kKTsKKyAgICBhc3NlcnRfZXF1YWxzKHNvdXJjZS50
YXJnZXRSYXlNb2RlLCBleHBlY3RlZF9tb2RlKTsKKyAgICBhc3NlcnRQcm9maWxlc0VxdWFsKHNv
dXJjZS5wcm9maWxlcywgZXhwZWN0ZWRfcHJvZmlsZXMpOworICB9CisKKyAgZnVuY3Rpb24gdmFs
aWRhdGVBZGRlZChhZGRlZCwgbGVuZ3RoKSB7CisgICAgdC5zdGVwKCgpID0+IHsKKyAgICAgIGFz
c2VydF9ub3RfZXF1YWxzKGFkZGVkLCBudWxsKTsKKyAgICAgIGFzc2VydF9lcXVhbHMoYWRkZWQu
bGVuZ3RoLCBsZW5ndGgsCisgICAgICAgICAgIkFkZGVkIGxlbmd0aCBtYXRjaGVzIGV4cGVjdGF0
aW9ucyIpOworCisgICAgICBsZXQgY3VycmVudFNvdXJjZXMgPSBnZXRJbnB1dFNvdXJjZXMoKTsK
KyAgICAgIGFkZGVkLmZvckVhY2goKHNvdXJjZSkgPT4geworICAgICAgICBhc3NlcnRfdHJ1ZShj
dXJyZW50U291cmNlcy5pbmNsdWRlcyhzb3VyY2UpLAorICAgICAgICAgICJFdmVyeSBlbGVtZW50
IGluIGFkZGVkIHNob3VsZCBiZSBpbiB0aGUgaW5wdXQgc291cmNlIGxpc3QiKTsKKyAgICAgIH0p
OworICAgIH0pOworICB9CisKKyAgZnVuY3Rpb24gdmFsaWRhdGVSZW1vdmVkKHJlbW92ZWQsIGxl
bmd0aCkgeworICAgIHQuc3RlcCgoKSA9PiB7CisgICAgICBhc3NlcnRfbm90X2VxdWFscyhyZW1v
dmVkLCBudWxsKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhyZW1vdmVkLmxlbmd0aCwgbGVuZ3Ro
LAorICAgICAgICAgICAgIlJlbW92ZWQgbGVuZ3RoIG1hdGNoZXMgZXhwZWN0YXRpb25zIik7CisK
KyAgICAgIGxldCBjdXJyZW50U291cmNlcyA9IGdldElucHV0U291cmNlcygpOworICAgICAgcmVt
b3ZlZC5mb3JFYWNoKChzb3VyY2UpID0+IHsKKyAgICAgICAgYXNzZXJ0X2ZhbHNlKGN1cnJlbnRT
b3VyY2VzLmluY2x1ZGVzKHNvdXJjZSksCisgICAgICAgICAgIk5vIGVsZW1lbnQgaW4gcmVtb3Zl
ZCBzaG91bGQgYmUgaW4gdGhlIGlucHV0IHNvdXJjZSBsaXN0Iik7CisgICAgICB9KTsKKyAgICB9
KTsKKyAgfQorCisgIGZ1bmN0aW9uIGdldElucHV0U291cmNlcygpIHsKKyAgICByZXR1cm4gQXJy
YXkuZnJvbShzZXNzaW9uLmlucHV0U291cmNlcy52YWx1ZXMoKSk7CisgIH0KKworICBzZXNzaW9u
LmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0c291cmNlc2NoYW5nZScsIG9uSW5wdXRTb3VyY2VzQ2hh
bmdlLCBmYWxzZSk7CisKKyAgLy8gQ3JlYXRlIGEgZ2F6ZSBiYXNlZCBpbnB1dCBzb3VyY2Ugd2l0
aCBubyBoYW5kZWRuZXNzIHRoYXQgd2UgY2FuIGNoYW5nZQorICAvLyB0byB2YWxpZGF0ZSBTYW1l
T2JqZWN0IHByb3BlcnRpZXMuCisgIGxldCBpbnB1dF9zb3VyY2UgPSBmYWtlRGV2aWNlQ29udHJv
bGxlci5zaW11bGF0ZUlucHV0U291cmNlQ29ubmVjdGlvbih7CisgICAgaGFuZGVkbmVzczogIm5v
bmUiLAorICAgIHRhcmdldFJheU1vZGU6ICJnYXplIiwKKyAgICBwb2ludGVyT3JpZ2luOiBWQUxJ
RF9QT0lOVEVSX1RSQU5TRk9STSwKKyAgICBwcm9maWxlczogWyJhIiwgImIiXQorICB9KTsKKwor
ICAvLyBNYWtlIG91ciBmaXJzdCBpbnB1dCBzb3VyY2UgY2hhbmdlIGFmdGVyIG9uZSBmcmFtZSwg
YW5kIHdhaXQgYW4gYWRkaXRpb25hbAorICAvLyBmcmFtZSBmb3IgdGhhdCBjaGFuZ2UgdG8gcHJv
cG9nYXRlLiBUaGVuIG1ha2UgYWRkaXRpb25hbCBjaGFuZ2VzLCB3YWl0aW5nCisgIC8vIG9uZSBm
cmFtZSBhZnRlciBlYWNoIG9uZSB0byB2ZXJpZnkgdGhhdCB0aGV5IGZpcmVkIGFuIGlucHV0c291
cmNlc2NoYW5nZWQKKyAgLy8gZXZlbnQuCisgIHNlc3Npb24ucmVxdWVzdEFuaW1hdGlvbkZyYW1l
KCh0aW1lLCB4ckZyYW1lKSA9PiB7CisgICAgaW5wdXRfc291cmNlLnNldFRhcmdldFJheU1vZGUo
InRyYWNrZWQtcG9pbnRlciIpOworICAgIHNlc3Npb24ucmVxdWVzdEFuaW1hdGlvbkZyYW1lKCh0
aW1lLCB4ckZyYW1lKSA9PiB7CisgICAgICBpbnB1dF9zb3VyY2Uuc2V0SGFuZGVkbmVzcygibGVm
dCIpOworICAgICAgc2Vzc2lvbi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKHRpbWUsIHhyRnJhbWUp
ID0+IHsKKyAgICAgICAgaW5wdXRfc291cmNlLnNldFByb2ZpbGVzKFsiYSIsICJjIl0pOworICAg
ICAgICBzZXNzaW9uLnJlcXVlc3RBbmltYXRpb25GcmFtZSgodGltZSwgeHJGcmFtZSkgPT4gewor
ICAgICAgICAgIGlucHV0X3NvdXJjZS5zZXRQcm9maWxlcyhbImEiXSk7CisgICAgICAgICAgc2Vz
c2lvbi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKHRpbWUsIHhyRnJhbWUpID0+IHt9KTsKKyAgICAg
ICAgfSk7CisgICAgICB9KTsKKyAgICB9KTsKKyAgfSk7CisKKyAgcmV0dXJuIGV2ZW50UHJvbWlz
ZTsKK307CisKK3hyX3Nlc3Npb25fcHJvbWlzZV90ZXN0KAorICB0ZXN0TmFtZSwgdGVzdEZ1bmN0
aW9uLCBmYWtlRGV2aWNlSW5pdFBhcmFtcywgJ2ltbWVyc2l2ZS12cicpOworPC9zY3JpcHQ+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dl
YnhyL2V2ZW50c19pbnB1dF9zb3VyY2VzX2NoYW5nZS5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9ldmVudHNfaW5wdXRfc291cmNl
c19jaGFuZ2UuaHR0cHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMDdjYzliNTQ0ZTNhMzk1YzE0NjU1ZDBm
NDM1NjQ4NWYwNWQ3YmY1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9ldmVudHNfaW5wdXRfc291cmNlc19jaGFuZ2Uu
aHR0cHMuaHRtbApAQCAtMCwwICsxLDExNCBAQAorPCFET0NUWVBFIGh0bWw+Cis8c2NyaXB0IHNy
Yz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jl
c291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL3dlYnhyX3V0aWwuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy93
ZWJ4cl90ZXN0X2NvbnN0YW50cy5qcyI+PC9zY3JpcHQ+Cis8Y2FudmFzIGlkPSJ3ZWJnbC1jYW52
YXMiPjwvY2FudmFzPgorCis8c2NyaXB0PgorbGV0IHRlc3ROYW1lID0gIlRyYW5zaWVudCBpbnB1
dCBzb3VyY2VzIGZpcmUgZXZlbnRzIGluIHRoZSByaWdodCBvcmRlciI7CisKK2xldCB3YXRjaGVy
RG9uZSA9IG5ldyBFdmVudCgid2F0Y2hlcmRvbmUiKTsKKworbGV0IGZha2VEZXZpY2VJbml0UGFy
YW1zID0gVFJBQ0tFRF9JTU1FUlNJVkVfREVWSUNFOworCitsZXQgdGVzdEZ1bmN0aW9uID0gZnVu
Y3Rpb24oc2Vzc2lvbiwgZmFrZURldmljZUNvbnRyb2xsZXIsIHQpIHsKKyAgbGV0IGV2ZW50V2F0
Y2hlciA9IG5ldyBFdmVudFdhdGNoZXIoCisgICAgdCwgc2Vzc2lvbiwgWyJpbnB1dHNvdXJjZXNj
aGFuZ2UiLCAic2VsZWN0c3RhcnQiLCAic2VsZWN0IiwgInNlbGVjdGVuZCIsICJ3YXRjaGVyZG9u
ZSJdKTsKKyAgbGV0IGV2ZW50UHJvbWlzZSA9IGV2ZW50V2F0Y2hlci53YWl0X2ZvcigKKyAgICBb
ImlucHV0c291cmNlc2NoYW5nZSIsICJzZWxlY3RzdGFydCIsICJzZWxlY3QiLCAic2VsZWN0ZW5k
IiwgImlucHV0c291cmNlc2NoYW5nZSIsICJ3YXRjaGVyZG9uZSJdKTsKKworICBsZXQgaW5wdXRD
aGFuZ2VFdmVudHMgPSAwOworICBsZXQgY2FjaGVkX2lucHV0X3NvdXJjZSA9IG51bGw7CisgIGZ1
bmN0aW9uIG9uSW5wdXRTb3VyY2VzQ2hhbmdlKGV2ZW50KSB7CisgICAgdC5zdGVwKCgpID0+IHsK
KyAgICAgIGlucHV0Q2hhbmdlRXZlbnRzKys7CisgICAgICBhc3NlcnRfZXF1YWxzKGV2ZW50LnNl
c3Npb24sIHNlc3Npb24pOworICAgICAgdmFsaWRhdGVTYW1lT2JqZWN0KGV2ZW50KTsKKworICAg
ICAgLy8gVGhlIGZpcnN0IGNoYW5nZSBldmVudCBzaG91bGQgYmUgYWRkaW5nIG91ciBjb250cm9s
bGVyLgorICAgICAgaWYgKGlucHV0Q2hhbmdlRXZlbnRzID09PSAxKSB7CisgICAgICAgIHZhbGlk
YXRlQWRkZWQoZXZlbnQuYWRkZWQsIDEpOworICAgICAgICB2YWxpZGF0ZVJlbW92ZWQoZXZlbnQu
cmVtb3ZlZCwgMCk7CisgICAgICAgIGNhY2hlZF9pbnB1dF9zb3VyY2UgPSBzZXNzaW9uLmlucHV0
U291cmNlc1swXTsKKyAgICAgICAgYXNzZXJ0X25vdF9lcXVhbHMoY2FjaGVkX2lucHV0X3NvdXJj
ZSwgbnVsbCk7CisgICAgICB9IGVsc2UgaWYgKGlucHV0Q2hhbmdlRXZlbnRzID09PSAyKSB7Cisg
ICAgICAgIC8vIFRoZSBzZWNvbmQgZXZlbnQgc2hvdWxkIGJlIHJlbW92aW5nIG91ciBjb250cm9s
bGVyLgorICAgICAgICB2YWxpZGF0ZUFkZGVkKGV2ZW50LmFkZGVkLCAwKTsKKyAgICAgICAgdmFs
aWRhdGVSZW1vdmVkKGV2ZW50LnJlbW92ZWQsIDEpOworICAgICAgICBhc3NlcnRfdHJ1ZShldmVu
dC5yZW1vdmVkLmluY2x1ZGVzKGNhY2hlZF9pbnB1dF9zb3VyY2UpKTsKKyAgICAgICAgc2Vzc2lv
bi5kaXNwYXRjaEV2ZW50KHdhdGNoZXJEb25lKTsKKyAgICAgIH0KKyAgICB9KTsKKyAgfQorCisg
IGZ1bmN0aW9uIHZhbGlkYXRlQWRkZWQoYWRkZWQsIGxlbmd0aCkgeworICAgIHQuc3RlcCgoKSA9
PiB7CisgICAgICBhc3NlcnRfbm90X2VxdWFscyhhZGRlZCwgbnVsbCk7CisgICAgICBhc3NlcnRf
ZXF1YWxzKGFkZGVkLmxlbmd0aCwgbGVuZ3RoLAorICAgICAgICAgICJBZGRlZCBsZW5ndGggbWF0
Y2hlcyBleHBlY3RhdGlvbnMiKTsKKworICAgICAgbGV0IGN1cnJlbnRTb3VyY2VzID0gQXJyYXku
ZnJvbShzZXNzaW9uLmlucHV0U291cmNlcy52YWx1ZXMoKSk7CisgICAgICBhZGRlZC5mb3JFYWNo
KChzb3VyY2UpID0+IHsKKyAgICAgICAgYXNzZXJ0X3RydWUoY3VycmVudFNvdXJjZXMuaW5jbHVk
ZXMoc291cmNlKSwKKyAgICAgICAgICAiRXZlcnkgZWxlbWVudCBpbiBhZGRlZCBzaG91bGQgYmUg
aW4gdGhlIGlucHV0IHNvdXJjZSBsaXN0Iik7CisgICAgICB9KTsKKyAgICB9KTsKKyAgfQorCisg
IGZ1bmN0aW9uIHZhbGlkYXRlUmVtb3ZlZChyZW1vdmVkLCBsZW5ndGgpIHsKKyAgICB0LnN0ZXAo
KCkgPT4geworICAgICAgYXNzZXJ0X25vdF9lcXVhbHMocmVtb3ZlZCwgbnVsbCk7CisgICAgICAg
IGFzc2VydF9lcXVhbHMocmVtb3ZlZC5sZW5ndGgsIGxlbmd0aCwKKyAgICAgICAgICAgICJSZW1v
dmVkIGxlbmd0aCBtYXRjaGVzIGV4cGVjdGF0aW9ucyIpOworCisgICAgICBsZXQgY3VycmVudFNv
dXJjZXMgPSBBcnJheS5mcm9tKHNlc3Npb24uaW5wdXRTb3VyY2VzLnZhbHVlcygpKTsKKyAgICAg
IHJlbW92ZWQuZm9yRWFjaCgoc291cmNlKSA9PiB7CisgICAgICAgIGFzc2VydF9mYWxzZShjdXJy
ZW50U291cmNlcy5pbmNsdWRlcyhzb3VyY2UpLAorICAgICAgICAgICJObyBlbGVtZW50IGluIHJl
bW92ZWQgc2hvdWxkIGJlIGluIHRoZSBpbnB1dCBzb3VyY2UgbGlzdCIpOworICAgICAgfSk7Cisg
ICAgfSk7CisgIH0KKworICAvLyBWZXJpZmllcyB0aGF0IHRoZSBzYW1lIG9iamVjdCBpcyByZXR1
cm5lZCBlYWNoIHRpbWUgYXR0cmlidXRlcyBhcmUgYWNjZXNzZWQKKyAgLy8gb24gYW4gWFJJbnB1
dFNvdXJjZXNDaGFuZ2VFdmVudCwgYXMgcmVxdWlyZWQgYnkgdGhlIHNwZWMuCisgIGZ1bmN0aW9u
IHZhbGlkYXRlU2FtZU9iamVjdChldmVudCkgeworICAgIGxldCBldmVudFNlc3Npb24gPSBldmVu
dC5zZXNzaW9uOworICAgIGxldCBhZGRlZCA9IGV2ZW50LmFkZGVkOworICAgIGxldCByZW1vdmVk
ID0gZXZlbnQucmVtb3ZlZDsKKworICAgIHQuc3RlcCgoKSA9PiB7CisgICAgICBhc3NlcnRfZXF1
YWxzKGV2ZW50U2Vzc2lvbiwgZXZlbnQuc2Vzc2lvbiwKKyAgICAgICAgIlhSSW5wdXRTb3VyY2Vz
Q2hhbmdlRXZlbnQuc2Vzc2lvbiByZXR1cm5zIHRoZSBzYW1lIG9iamVjdC4iKTsKKyAgICAgIGFz
c2VydF9lcXVhbHMoYWRkZWQsIGV2ZW50LmFkZGVkLAorICAgICAgICAiWFJJbnB1dFNvdXJjZXND
aGFuZ2VFdmVudC5hZGRlZCByZXR1cm5zIHRoZSBzYW1lIG9iamVjdC4iKTsKKyAgICAgIGFzc2Vy
dF9lcXVhbHMocmVtb3ZlZCwgZXZlbnQucmVtb3ZlZCwKKyAgICAgICAgIlhSSW5wdXRTb3VyY2Vz
Q2hhbmdlRXZlbnQucmVtb3ZlZCByZXR1cm5zIHRoZSBzYW1lIG9iamVjdC4iKTsKKyAgICB9KTsK
KyAgfQorCisgIHNlc3Npb24uYWRkRXZlbnRMaXN0ZW5lcignaW5wdXRzb3VyY2VzY2hhbmdlJywg
b25JbnB1dFNvdXJjZXNDaGFuZ2UsIGZhbHNlKTsKKworICAvLyBDcmVhdGUgb3VyIGlucHV0IHNv
dXJjZSBhbmQgaW1tZWRpYXRlbHkgdG9nZ2xlIHRoZSBwcmltYXJ5IGlucHV0IHNvIHRoYXQKKyAg
Ly8gaXQgYXBwZWFycyBhcyBhbHJlYWR5IG5lZWRpbmcgdG8gc2VuZCBhIGNsaWNrIGV2ZW50IHdo
ZW4gaXQgYXBwZWFycy4KKyAgbGV0IGlucHV0X3NvdXJjZSA9IGZha2VEZXZpY2VDb250cm9sbGVy
LnNpbXVsYXRlSW5wdXRTb3VyY2VDb25uZWN0aW9uKHsKKyAgICBoYW5kZWRuZXNzOiAicmlnaHQi
LAorICAgIHRhcmdldFJheU1vZGU6ICJ0cmFja2VkLXBvaW50ZXIiLAorICAgIHBvaW50ZXJPcmln
aW46IFZBTElEX1BPSU5URVJfVFJBTlNGT1JNLAorICAgIHByb2ZpbGVzOiBbXSwKKyAgICBzZWxl
Y3Rpb25DbGlja2VkOiB0cnVlCisgIH0pOworCisgIC8vIE1ha2Ugb3VyIGlucHV0IHNvdXJjZSBk
aXNhcHBlYXIgYWZ0ZXIgb25lIGZyYW1lLCBhbmQgd2FpdCBhbiBhZGRpdGlvbmFsCisgIC8vIGZy
YW1lIGZvciB0aGF0IGRpc2FwcGVhcmFuY2UgdG8gcHJvcG9nYXRlLgorICBzZXNzaW9uLnJlcXVl
c3RBbmltYXRpb25GcmFtZSgodGltZSwgeHJGcmFtZSkgPT4geworICAgIGlucHV0X3NvdXJjZS5k
aXNjb25uZWN0KCk7CisgICAgc2Vzc2lvbi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKHRpbWUsIHhy
RnJhbWUpID0+IHt9KTsKKyAgfSk7CisKKyAgcmV0dXJuIGV2ZW50UHJvbWlzZTsKK307CisKK3hy
X3Nlc3Npb25fcHJvbWlzZV90ZXN0KAorICB0ZXN0TmFtZSwgdGVzdEZ1bmN0aW9uLCBmYWtlRGV2
aWNlSW5pdFBhcmFtcywgJ2ltbWVyc2l2ZS12cicpOworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL2V2ZW50c19y
ZWZlcmVuY2VTcGFjZV9yZXNldF9pbW1lcnNpdmUuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvZXZlbnRzX3JlZmVyZW5jZVNwYWNl
X3Jlc2V0X2ltbWVyc2l2ZS5odHRwcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJkYTM3ODhhMzlhMjBkYjMz
OTZkNTQyZjdmYjBkYzVkNDg2YzJhYTMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL2V2ZW50c19yZWZlcmVuY2VTcGFj
ZV9yZXNldF9pbW1lcnNpdmUuaHR0cHMuaHRtbApAQCAtMCwwICsxLDUxIEBACis8IURPQ1RZUEUg
aHRtbD4KKzxzY3JpcHQgc3JjPS9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanM+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9InJlc291cmNlcy93ZWJ4cl91dGlsLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvd2VieHJfdGVzdF9jb25zdGFudHMuanMiPjwvc2NyaXB0PgorPGNhbnZhcyBp
ZD0id2ViZ2wtY2FudmFzIj48L2NhbnZhcz4KKworPHNjcmlwdD4KK2xldCBpbW1lcnNpdmVUZXN0
TmFtZSA9ICJYUlNlc3Npb24gcmVzZXRwb3NlIGZyb20gYSBkZXZpY2UgcHJvcGVybHkgZmlyZXMg
b2ZmICIgKworICAidGhlIHJpZ2h0IGV2ZW50cyBmb3IgaW1tZXJzaXZlIHNlc3Npb25zIjsKKwor
bGV0IHdhdGNoZXJEb25lID0gbmV3IEV2ZW50KCJ3YXRjaGVyZG9uZSIpOworCitsZXQgZmFrZURl
dmljZUluaXRQYXJhbXMgPSBUUkFDS0VEX0lNTUVSU0lWRV9ERVZJQ0U7CisKK2xldCB0ZXN0RnVu
Y3Rpb24gPSBmdW5jdGlvbihzZXNzaW9uLCBmYWtlRGV2aWNlQ29udHJvbGxlciwgdCkgeworICBs
ZXQgcmVzZXRQcm9taXNlID0gc2Vzc2lvbi5yZXF1ZXN0UmVmZXJlbmNlU3BhY2UoJ2xvY2FsJykK
KyAgLnRoZW4oKHJlZlNwYWNlKSA9PiB7CisgICAgbGV0IGV2ZW50V2F0Y2hlciA9IG5ldyBFdmVu
dFdhdGNoZXIoCisgICAgICAgIHQsIHJlZlNwYWNlLCBbInJlc2V0IiwgIndhdGNoZXJkb25lIl0p
OworICAgIHJlZlNwYWNlLmFkZEV2ZW50TGlzdGVuZXIoInJlc2V0IiwgKGV2ZW50KSA9PiB7Cisg
ICAgICB0LnN0ZXAoKCkgPT4geworICAgICAgICBhc3NlcnRfZXF1YWxzKGV2ZW50LnJlZmVyZW5j
ZVNwYWNlLCByZWZTcGFjZSk7CisKKyAgICAgICAgLy8gQWxzbyBtYWtlIHN1cmUgdGhlIHNhbWUg
b2JqZWN0cyBhcmUgcmV0dXJuZWQgZWFjaCB0aW1lIHRoZXNlCisgICAgICAgIC8vIGF0dHJpYnV0
ZXMgYXJlIGFjY2Vzc2VkLgorICAgICAgICBsZXQgZXZlbnRSZWZTcGFjZSA9IGV2ZW50LnJlZmVy
ZW5jZVNwYWNlOworICAgICAgICBsZXQgdHJhbnNmb3JtID0gZXZlbnQudHJhbnNmb3JtOworICAg
ICAgICBhc3NlcnRfZXF1YWxzKGV2ZW50UmVmU3BhY2UsIGV2ZW50LnJlZmVyZW5jZVNwYWNlLAor
ICAgICAgICAgICJYUlJlZmVyZW5jZVNwYWNlRXZlbnQucmVmZXJlbmNlU3BhY2UgcmV0dXJucyB0
aGUgc2FtZSBvYmplY3QuIik7CisgICAgICAgIGFzc2VydF9lcXVhbHModHJhbnNmb3JtLCBldmVu
dC50cmFuc2Zvcm0sCisgICAgICAgICAgIlhSUmVmZXJlbmNlU3BhY2VFdmVudC50cmFuc2Zvcm0g
cmV0dXJucyB0aGUgc2FtZSBvYmplY3QuIik7CisgICAgICB9KTsKKworICAgICAgcmVmU3BhY2Uu
ZGlzcGF0Y2hFdmVudCh3YXRjaGVyRG9uZSk7CisgICAgfSwgZmFsc2UpOworICAgIHJldHVybiBl
dmVudFdhdGNoZXIud2FpdF9mb3IoWyJyZXNldCIsICJ3YXRjaGVyZG9uZSJdKTsKKyAgfSk7CisK
KyAgZmFrZURldmljZUNvbnRyb2xsZXIuc2ltdWxhdGVSZXNldFBvc2UoKTsKKworICAvLyBUaGUg
dHJpZ2dlcmVkIHJlc2V0UG9zZSBldmVudCBzaG91bGQgYXJyaXZlIGFmdGVyIHRoZSBuZXh0IEFu
aW1hdGlvbiBGcmFtZQorICBzZXNzaW9uLnJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7fSk7
CisKKyAgcmV0dXJuIHJlc2V0UHJvbWlzZTsKK307CisKK3hyX3Nlc3Npb25fcHJvbWlzZV90ZXN0
KAorICBpbW1lcnNpdmVUZXN0TmFtZSwgdGVzdEZ1bmN0aW9uLCBmYWtlRGV2aWNlSW5pdFBhcmFt
cywgJ2ltbWVyc2l2ZS12cicpOworCis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvZXZlbnRzX3JlZmVyZW5jZVNw
YWNlX3Jlc2V0X2lubGluZS5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9ldmVudHNfcmVmZXJlbmNlU3BhY2VfcmVzZXRfaW5saW5l
Lmh0dHBzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjNhYmNjODE3YmRmM2U1M2MyMjI4NGExNGQwM2UzMWUx
MTg0ZTFhMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd2VieHIvZXZlbnRzX3JlZmVyZW5jZVNwYWNlX3Jlc2V0X2lubGluZS5o
dHRwcy5odG1sCkBAIC0wLDAgKzEsNTMgQEAKKzwhRE9DVFlQRSBodG1sPgorPHNjcmlwdCBzcmM9
L3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcz48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPS9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3NyZXBvcnQuanM+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L3dlYnhyX3V0aWwuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy93ZWJ4cl90
ZXN0X2NvbnN0YW50cy5qcyI+PC9zY3JpcHQ+Cis8Y2FudmFzIGlkPSJ3ZWJnbC1jYW52YXMiPjwv
Y2FudmFzPgorCis8c2NyaXB0PgorbGV0IG5vbkltbWVyc2l2ZVRlc3ROYW1lID0gIlhSU2Vzc2lv
biByZXNldHBvc2UgZnJvbSBhIGRldmljZSBwcm9wZXJseSBmaXJlcyBvZmYgIiArCisgICJ0aGUg
cmlnaHQgZXZlbnRzIGZvciBub24taW1tZXJzaXZlIHNlc3Npb25zIjsKKworbGV0IHdhdGNoZXJE
b25lID0gbmV3IEV2ZW50KCJ3YXRjaGVyZG9uZSIpOworCitsZXQgZmFrZURldmljZUluaXRQYXJh
bXMgPSBUUkFDS0VEX0lNTUVSU0lWRV9ERVZJQ0U7CisKK2xldCB0ZXN0RnVuY3Rpb24gPSBmdW5j
dGlvbihzZXNzaW9uLCBmYWtlRGV2aWNlQ29udHJvbGxlciwgdCkgeworICBsZXQgcmVzZXRQcm9t
aXNlID0gc2Vzc2lvbi5yZXF1ZXN0UmVmZXJlbmNlU3BhY2UoJ2xvY2FsJykKKyAgLnRoZW4oKHJl
ZlNwYWNlKSA9PiB7CisgICAgbGV0IGV2ZW50V2F0Y2hlciA9IG5ldyBFdmVudFdhdGNoZXIoCisg
ICAgICAgIHQsIHJlZlNwYWNlLCBbInJlc2V0IiwgIndhdGNoZXJkb25lIl0pOworICAgIHJlZlNw
YWNlLmFkZEV2ZW50TGlzdGVuZXIoInJlc2V0IiwgKGV2ZW50KSA9PiB7CisgICAgICB0LnN0ZXAo
KCkgPT4geworICAgICAgICBhc3NlcnRfZXF1YWxzKGV2ZW50LnJlZmVyZW5jZVNwYWNlLCByZWZT
cGFjZSk7CisKKyAgICAgICAgLy8gQWxzbyBtYWtlIHN1cmUgdGhlIHNhbWUgb2JqZWN0cyBhcmUg
cmV0dXJuZWQgZWFjaCB0aW1lIHRoZXNlCisgICAgICAgIC8vIGF0dHJpYnV0ZXMgYXJlIGFjY2Vz
c2VkLgorICAgICAgICBsZXQgZXZlbnRSZWZTcGFjZSA9IGV2ZW50LnJlZmVyZW5jZVNwYWNlOwor
ICAgICAgICBsZXQgdHJhbnNmb3JtID0gZXZlbnQudHJhbnNmb3JtOworICAgICAgICBhc3NlcnRf
ZXF1YWxzKGV2ZW50UmVmU3BhY2UsIGV2ZW50LnJlZmVyZW5jZVNwYWNlLAorICAgICAgICAgICJY
UlJlZmVyZW5jZVNwYWNlRXZlbnQucmVmZXJlbmNlU3BhY2UgcmV0dXJucyB0aGUgc2FtZSBvYmpl
Y3QuIik7CisgICAgICAgIGFzc2VydF9lcXVhbHModHJhbnNmb3JtLCBldmVudC50cmFuc2Zvcm0s
CisgICAgICAgICAgIlhSUmVmZXJlbmNlU3BhY2VFdmVudC50cmFuc2Zvcm0gcmV0dXJucyB0aGUg
c2FtZSBvYmplY3QuIik7CisgICAgICB9KTsKKworICAgICAgcmVmU3BhY2UuZGlzcGF0Y2hFdmVu
dCh3YXRjaGVyRG9uZSk7CisgICAgfSwgZmFsc2UpOworICAgIHJldHVybiBldmVudFdhdGNoZXIu
d2FpdF9mb3IoWyJyZXNldCIsICJ3YXRjaGVyZG9uZSJdKTsKKyAgfSk7CisKKyAgZmFrZURldmlj
ZUNvbnRyb2xsZXIuc2ltdWxhdGVSZXNldFBvc2UoKTsKKworICAvLyBUaGUgdHJpZ2dlcmVkIHJl
c2V0UG9zZSBldmVudCBzaG91bGQgYXJyaXZlIGFmdGVyIHRoZSBuZXh0IEFuaW1hdGlvbiBGcmFt
ZQorICBzZXNzaW9uLnJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7fSk7CisKKyAgcmV0dXJu
IHJlc2V0UHJvbWlzZTsKK307CisKK3hyX3Nlc3Npb25fcHJvbWlzZV90ZXN0KAorICBub25JbW1l
cnNpdmVUZXN0TmFtZSwgdGVzdEZ1bmN0aW9uLCBmYWtlRGV2aWNlSW5pdFBhcmFtcywgJ2lubGlu
ZScsIHsKKyAgICByZXF1aXJlZEZlYXR1cmVzOiBbJ2xvY2FsJ10sCisgIH0pOworCis8L3Njcmlw
dD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd2VieHIvZXZlbnRzX3Nlc3Npb25fc2VsZWN0Lmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL2V2ZW50c19zZXNzaW9uX3NlbGVj
dC5odHRwcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJjNTAxYjY5MzQ5N2RkZjU4Y2NhYmQ0NDkxODU4MjYz
YzRkZmJkYmMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dlYnhyL2V2ZW50c19zZXNzaW9uX3NlbGVjdC5odHRwcy5odG1sCkBA
IC0wLDAgKzEsMTE1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvd2VieHJf
dXRpbC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3dlYnhyX3Rlc3RfY29u
c3RhbnRzLmpzIj48L3NjcmlwdD4KKzxjYW52YXMgaWQ9IndlYmdsLWNhbnZhcyI+PC9jYW52YXM+
CisKKzxzY3JpcHQ+CitsZXQgdGVzdE5hbWUgPSAiWFJJbnB1dFNvdXJjZXMgcHJpbWFyeSBpbnB1
dCBwcmVzc2VzIHByb3Blcmx5IGZpcmVzIG9mZiB0aGUgIgorICArICJyaWdodCBldmVudHMiOwor
CitsZXQgd2F0Y2hlckRvbmUgPSBuZXcgRXZlbnQoIndhdGNoZXJkb25lIik7CisKK2xldCBmYWtl
RGV2aWNlSW5pdFBhcmFtcyA9IFRSQUNLRURfSU1NRVJTSVZFX0RFVklDRTsKKworbGV0IHhyVmll
d2VyU3BhY2UgPSBudWxsOworCitsZXQgdGVzdEZ1bmN0aW9uID0gZnVuY3Rpb24oc2Vzc2lvbiwg
ZmFrZURldmljZUNvbnRyb2xsZXIsIHQpIHsKKyAgbGV0IGV2ZW50V2F0Y2hlciA9IG5ldyBFdmVu
dFdhdGNoZXIoCisgICAgdCwgc2Vzc2lvbiwgWyJzZWxlY3RzdGFydCIsICJzZWxlY3QiLCAic2Vs
ZWN0ZW5kIiwgIndhdGNoZXJkb25lIl0pOworICBsZXQgZXZlbnRQcm9taXNlID0gZXZlbnRXYXRj
aGVyLndhaXRfZm9yKAorICAgIFsic2VsZWN0c3RhcnQiLCAic2VsZWN0IiwgInNlbGVjdGVuZCIs
ICJ3YXRjaGVyZG9uZSJdKTsKKworICBmdW5jdGlvbiB0cnlDYWxsaW5nRnJhbWVNZXRob2RzKGZy
YW1lKSB7CisgICAgdC5zdGVwKCgpID0+IHsKKyAgICAgIC8vIEZyYW1lIGlzIGFjdGl2ZSBidXQg
bm90IGFuIGFuaW1hdGlvbiBmcmFtZSwgc28gY2FsbGluZyBnZXRQb3NlIGlzCisgICAgICAvLyBh
bGxvd2VkIHdoaWxlIGdldFZpZXdlclBvc2UgaXMgbm90LgorICAgICAgYXNzZXJ0X3Rocm93c19k
b20oJ0ludmFsaWRTdGF0ZUVycm9yJywgKCkgPT4gZnJhbWUuZ2V0Vmlld2VyUG9zZShjdXJyZW50
UmVmZXJlbmNlU3BhY2UpKTsKKyAgICAgIGxldCBwb3NlID0gZnJhbWUuZ2V0UG9zZSh4clZpZXdl
clNwYWNlLCBjdXJyZW50UmVmZXJlbmNlU3BhY2UpOworICAgICAgYXNzZXJ0X25vdF9lcXVhbHMo
cG9zZSwgbnVsbCk7CisgICAgICBhc3NlcnRfdHJ1ZShwb3NlIGluc3RhbmNlb2YgWFJQb3NlKTsK
KyAgICAgIGFzc2VydF9mYWxzZShwb3NlIGluc3RhbmNlb2YgWFJWaWV3ZXJQb3NlKTsKKyAgICB9
KTsKKyAgfQorCisgIGZ1bmN0aW9uIG9uU2Vzc2lvblNlbGVjdFN0YXJ0KGV2ZW50KSB7CisgICAg
dC5zdGVwKCAoKSA9PiB7CisgICAgICBsZXQgaW5wdXRfc291cmNlcyA9IHNlc3Npb24uaW5wdXRT
b3VyY2VzOworICAgICAgYXNzZXJ0X2VxdWFscyhldmVudC5mcmFtZS5zZXNzaW9uLCBzZXNzaW9u
KTsKKyAgICAgIGFzc2VydF9lcXVhbHMoZXZlbnQuaW5wdXRTb3VyY2UsIGlucHV0X3NvdXJjZXNb
MF0pOworICAgICAgdmFsaWRhdGVTYW1lT2JqZWN0KGV2ZW50KTsKKyAgICAgIHRyeUNhbGxpbmdG
cmFtZU1ldGhvZHMoZXZlbnQuZnJhbWUpOworICAgIH0pOworICB9CisKKyAgZnVuY3Rpb24gb25T
ZXNzaW9uU2VsZWN0RW5kKGV2ZW50KSB7CisgICAgdC5zdGVwKCAoKSA9PiB7CisgICAgICBsZXQg
aW5wdXRfc291cmNlcyA9IHNlc3Npb24uaW5wdXRTb3VyY2VzOworICAgICAgYXNzZXJ0X2VxdWFs
cyhldmVudC5mcmFtZS5zZXNzaW9uLCBzZXNzaW9uKTsKKyAgICAgIGFzc2VydF9lcXVhbHMoZXZl
bnQuaW5wdXRTb3VyY2UsIGlucHV0X3NvdXJjZXNbMF0pOworICAgICAgdmFsaWRhdGVTYW1lT2Jq
ZWN0KGV2ZW50KTsKKyAgICAgIHRyeUNhbGxpbmdGcmFtZU1ldGhvZHMoZXZlbnQuZnJhbWUpOwor
ICAgIH0pOworICAgIHNlc3Npb24uZGlzcGF0Y2hFdmVudCh3YXRjaGVyRG9uZSk7CisgIH0KKwor
ICBmdW5jdGlvbiBvblNlc3Npb25TZWxlY3QoZXZlbnQpIHsKKyAgICB0LnN0ZXAoICgpID0+IHsK
KyAgICAgIGxldCBpbnB1dF9zb3VyY2VzID0gc2Vzc2lvbi5pbnB1dFNvdXJjZXM7CisgICAgICBh
c3NlcnRfZXF1YWxzKGV2ZW50LmZyYW1lLnNlc3Npb24sIHNlc3Npb24pOworICAgICAgYXNzZXJ0
X2VxdWFscyhldmVudC5pbnB1dFNvdXJjZSwgaW5wdXRfc291cmNlc1swXSk7CisgICAgICB2YWxp
ZGF0ZVNhbWVPYmplY3QoZXZlbnQpOworICAgICAgdHJ5Q2FsbGluZ0ZyYW1lTWV0aG9kcyhldmVu
dC5mcmFtZSk7CisgICAgfSk7CisgIH0KKworICAvLyBWZXJpZmllcyB0aGF0IHRoZSBzYW1lIG9i
amVjdCBpcyByZXR1cm5lZCBlYWNoIHRpbWUgYXR0cmlidXRlcyBhcmUgYWNjZXNzZWQKKyAgLy8g
b24gYW4gWFJJbnB1dFNvcnVjZUV2ZW50LCBhcyByZXF1aXJlZCBieSB0aGUgc3BlYy4KKyAgZnVu
Y3Rpb24gdmFsaWRhdGVTYW1lT2JqZWN0KGV2ZW50KSB7CisgICAgbGV0IGZyYW1lID0gZXZlbnQu
ZnJhbWU7CisgICAgbGV0IHNvdXJjZSA9IGV2ZW50LmlucHV0U291cmNlOworICAgIHQuc3RlcCgo
KSA9PiB7CisgICAgICBhc3NlcnRfZXF1YWxzKGZyYW1lLCBldmVudC5mcmFtZSwKKyAgICAgICAg
IlhSSW5wdXRTb3VyY2VFdmVudC5mcmFtZSByZXR1cm5zIHRoZSBzYW1lIG9iamVjdC4iKTsKKyAg
ICAgIGFzc2VydF9lcXVhbHMoc291cmNlLCBldmVudC5pbnB1dFNvdXJjZSwKKyAgICAgICAgIlhS
SW5wdXRTb3VyY2VFdmVudC5pbnB1dFNvdXJjZSByZXR1cm5zIHRoZSBzYW1lIG9iamVjdC4iKTsK
KyAgICB9KTsKKyAgfQorCisgIHNlc3Npb24uYWRkRXZlbnRMaXN0ZW5lcigic2VsZWN0c3RhcnQi
LCBvblNlc3Npb25TZWxlY3RTdGFydCwgZmFsc2UpOworICBzZXNzaW9uLmFkZEV2ZW50TGlzdGVu
ZXIoInNlbGVjdGVuZCIsIG9uU2Vzc2lvblNlbGVjdEVuZCwgZmFsc2UpOworICBzZXNzaW9uLmFk
ZEV2ZW50TGlzdGVuZXIoInNlbGVjdCIsIG9uU2Vzc2lvblNlbGVjdCwgZmFsc2UpOworCisgIGxl
dCBpbnB1dF9zb3VyY2UgPQorICAgIGZha2VEZXZpY2VDb250cm9sbGVyLnNpbXVsYXRlSW5wdXRT
b3VyY2VDb25uZWN0aW9uKFZBTElEX0NPTlRST0xMRVIpOworICBsZXQgY3VycmVudFJlZmVyZW5j
ZVNwYWNlID0gbnVsbDsKKworICBzZXNzaW9uLnJlcXVlc3RSZWZlcmVuY2VTcGFjZSgndmlld2Vy
JykudGhlbihmdW5jdGlvbih2aWV3ZXJTcGFjZSkgeworICAgIHhyVmlld2VyU3BhY2UgPSB2aWV3
ZXJTcGFjZTsKKworICAgIHNlc3Npb24ucmVxdWVzdFJlZmVyZW5jZVNwYWNlKCdsb2NhbCcpLnRo
ZW4oKHJlZmVyZW5jZVNwYWNlKSA9PiB7CisgICAgICBjdXJyZW50UmVmZXJlbmNlU3BhY2UgPSBy
ZWZlcmVuY2VTcGFjZTsKKworICAgICAgLy8gUHJlc3MgdGhlIHByaW1hcnkgaW5wdXQgYnV0dG9u
IGFuZCB0aGVuIHJlbGVhc2UgaXQgYSBzaG9ydCB0aW1lIGxhdGVyLgorICAgICAgc2Vzc2lvbi5y
ZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKHRpbWUsIHhyRnJhbWUpID0+IHsKKyAgICAgICAgaW5wdXRf
c291cmNlLnN0YXJ0U2VsZWN0aW9uKCk7CisKKyAgICAgICAgICBzZXNzaW9uLnJlcXVlc3RBbmlt
YXRpb25GcmFtZSgodGltZSwgeHJGcmFtZSkgPT4geworICAgICAgICAgICAgaW5wdXRfc291cmNl
LmVuZFNlbGVjdGlvbigpOworCisgICAgICAgICAgICBzZXNzaW9uLnJlcXVlc3RBbmltYXRpb25G
cmFtZSgodGltZSwgeHJGcmFtZSkgPT4geworICAgICAgICAgICAgICAvLyBOZWVkIHRvIHByb2Nl
c3Mgb25lIG1vcmUgZnJhbWUgdG8gYWxsb3cgc2VsZWN0IHRvIHByb3BlZ2F0ZS4KKyAgICAgICAg
ICAgIH0pOworICAgICAgICAgIH0pOworICAgICAgfSk7CisgICAgfSk7CisgIH0pOworCisgIHJl
dHVybiBldmVudFByb21pc2U7Cit9OworCit4cl9zZXNzaW9uX3Byb21pc2VfdGVzdCgKKyAgdGVz
dE5hbWUsIHRlc3RGdW5jdGlvbiwgZmFrZURldmljZUluaXRQYXJhbXMsICdpbW1lcnNpdmUtdnIn
KTsKKworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dlYnhyL2V2ZW50c19zZXNzaW9uX3NlbGVjdF9zdWJmcmFtZS5odHRw
cy5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4
ci9ldmVudHNfc2Vzc2lvbl9zZWxlY3Rfc3ViZnJhbWUuaHR0cHMuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
ZTJjMjM0MjRjMDg5M2I2YTU2M2MyYWEyZmJkOTk5ZTUwYjFjZmVmCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9ldmVu
dHNfc2Vzc2lvbl9zZWxlY3Rfc3ViZnJhbWUuaHR0cHMuaHRtbApAQCAtMCwwICsxLDY2IEBACis8
IURPQ1RZUEUgaHRtbD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvd2VieHJfdXRpbC5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3dlYnhyX3Rlc3RfY29uc3RhbnRzLmpzIj48L3Njcmlw
dD4KKzxjYW52YXMgaWQ9IndlYmdsLWNhbnZhcyI+PC9jYW52YXM+CisKKzxzY3JpcHQ+CitsZXQg
dGVzdE5hbWUgPSAiRW5zdXJlcyB0aGF0IGFuIFhSSW5wdXRTb3VyY2VzIHByaW1hcnkgaW5wdXQg
YmVpbmcgcHJlc3NlZCBhbmQgIgorICArICJyZWxlYXNlZCBpbiB0aGUgc3BhY2Ugb2YgYSBzaW5n
bGUgZnJhbWUgcHJvcGVybHkgZmlyZXMgb2ZmIHRoZSByaWdodCAiCisgICsgImV2ZW50cyI7CisK
K2xldCB3YXRjaGVyRG9uZSA9IG5ldyBFdmVudCgid2F0Y2hlcmRvbmUiKTsKKworbGV0IGZha2VE
ZXZpY2VJbml0UGFyYW1zID0gVFJBQ0tFRF9JTU1FUlNJVkVfREVWSUNFOworCitsZXQgdGVzdEZ1
bmN0aW9uID0gZnVuY3Rpb24oc2Vzc2lvbiwgZmFrZURldmljZUNvbnRyb2xsZXIsIHQpIHsKKyAg
bGV0IGV2ZW50V2F0Y2hlciA9IG5ldyBFdmVudFdhdGNoZXIoCisgICAgdCwgc2Vzc2lvbiwgWyJz
ZWxlY3RzdGFydCIsICJzZWxlY3RlbmQiLCAic2VsZWN0IiwgIndhdGNoZXJkb25lIl0pOworICBs
ZXQgZXZlbnRQcm9taXNlID0gZXZlbnRXYXRjaGVyLndhaXRfZm9yKAorICAgIFsic2VsZWN0c3Rh
cnQiLCAic2VsZWN0ZW5kIiwgInNlbGVjdCIsICJ3YXRjaGVyZG9uZSJdKTsKKworICBmdW5jdGlv
biBvblNlc3Npb25TZWxlY3RTdGFydChldmVudCkgeworICAgIHQuc3RlcCggKCkgPT4geworICAg
ICAgbGV0IGlucHV0X3NvdXJjZXMgPSBzZXNzaW9uLmlucHV0U291cmNlczsKKyAgICAgIGFzc2Vy
dF9lcXVhbHMoZXZlbnQuZnJhbWUuc2Vzc2lvbiwgc2Vzc2lvbik7CisgICAgICBhc3NlcnRfZXF1
YWxzKGV2ZW50LmlucHV0U291cmNlLCBpbnB1dF9zb3VyY2VzWzBdKTsKKyAgICB9KTsKKyAgfQor
CisgIGZ1bmN0aW9uIG9uU2Vzc2lvblNlbGVjdEVuZChldmVudCkgeworICAgIHQuc3RlcCggKCkg
PT4geworICAgICAgbGV0IGlucHV0X3NvdXJjZXMgPSBzZXNzaW9uLmlucHV0U291cmNlczsKKyAg
ICAgIGFzc2VydF9lcXVhbHMoZXZlbnQuZnJhbWUuc2Vzc2lvbiwgc2Vzc2lvbik7CisgICAgICBh
c3NlcnRfZXF1YWxzKGV2ZW50LmlucHV0U291cmNlLCBpbnB1dF9zb3VyY2VzWzBdKTsKKyAgICB9
KTsKKyAgfQorCisgIGZ1bmN0aW9uIG9uU2Vzc2lvblNlbGVjdChldmVudCkgeworICAgIHQuc3Rl
cCggKCkgPT4geworICAgICAgbGV0IGlucHV0X3NvdXJjZXMgPSBzZXNzaW9uLmlucHV0U291cmNl
czsKKyAgICAgIGFzc2VydF9lcXVhbHMoZXZlbnQuZnJhbWUuc2Vzc2lvbiwgc2Vzc2lvbik7Cisg
ICAgICBhc3NlcnRfZXF1YWxzKGV2ZW50LmlucHV0U291cmNlLCBpbnB1dF9zb3VyY2VzWzBdKTsK
KyAgICB9KTsKKyAgICBzZXNzaW9uLmRpc3BhdGNoRXZlbnQod2F0Y2hlckRvbmUpOworICB9Cisg
IHNlc3Npb24uYWRkRXZlbnRMaXN0ZW5lcigic2VsZWN0c3RhcnQiLCBvblNlc3Npb25TZWxlY3RT
dGFydCwgZmFsc2UpOworICBzZXNzaW9uLmFkZEV2ZW50TGlzdGVuZXIoInNlbGVjdGVuZCIsIG9u
U2Vzc2lvblNlbGVjdEVuZCwgZmFsc2UpOworICBzZXNzaW9uLmFkZEV2ZW50TGlzdGVuZXIoInNl
bGVjdCIsIG9uU2Vzc2lvblNlbGVjdCwgZmFsc2UpOworCisgIGxldCBpbnB1dF9zb3VyY2UgPSBm
YWtlRGV2aWNlQ29udHJvbGxlci5zaW11bGF0ZUlucHV0U291cmNlQ29ubmVjdGlvbihWQUxJRF9D
T05UUk9MTEVSKTsKKworICAvLyBQcmVzcyB0aGUgcHJpbWFyeSBpbnB1dCBidXR0b24gYW5kIHRo
ZW4gcmVsZWFzZSBpdCBhIHNob3J0IHRpbWUgbGF0ZXIuCisgIHNlc3Npb24ucmVxdWVzdEFuaW1h
dGlvbkZyYW1lKCh0aW1lLCB4ckZyYW1lKSA9PiB7CisgICAgaW5wdXRfc291cmNlLnNpbXVsYXRl
U2VsZWN0KCk7CisKKyAgICBzZXNzaW9uLnJlcXVlc3RBbmltYXRpb25GcmFtZSgodGltZSwgeHJG
cmFtZSkgPT4geworICAgICAgLy8gTmVlZCB0byBwcm9jZXNzIG9uZSBtb3JlIGZyYW1lIHRvIGFs
bG93IHNlbGVjdCB0byBwcm9wZWdhdGUuCisgICAgfSk7CisgIH0pOworfTsKKworeHJfc2Vzc2lv
bl9wcm9taXNlX3Rlc3QoCisgIHRlc3ROYW1lLCB0ZXN0RnVuY3Rpb24sIGZha2VEZXZpY2VJbml0
UGFyYW1zLCAnaW1tZXJzaXZlLXZyJyk7CisKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9ldmVudHNfc2Vzc2lv
bl9zcXVlZXplLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dlYnhyL2V2ZW50c19zZXNzaW9uX3NxdWVlemUuaHR0cHMuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi41OWU0ZTNmNzJjNWQ2M2NmZjQ3YjZhN2UxZGZiYWM2MTk0MjAzNTM0Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4
ci9ldmVudHNfc2Vzc2lvbl9zcXVlZXplLmh0dHBzLmh0bWwKQEAgLTAsMCArMSwxMzcgQEAKKzwh
RE9DVFlQRSBodG1sPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy93ZWJ4cl91dGlsLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvd2VieHJfdGVzdF9jb25zdGFudHMuanMiPjwvc2NyaXB0
PgorPGNhbnZhcyBpZD0id2ViZ2wtY2FudmFzIj48L2NhbnZhcz4KKworPHNjcmlwdD4KK2xldCB0
ZXN0TmFtZSA9ICJYUklucHV0U291cmNlcyBwcmltYXJ5IGlucHV0IHByZXNzZXMgcHJvcGVybHkg
ZmlyZXMgb2ZmIHRoZSAiCisgICsgInJpZ2h0IGV2ZW50cyI7CisKK2xldCB3YXRjaGVyRG9uZSA9
IG5ldyBFdmVudCgid2F0Y2hlcmRvbmUiKTsKKworbGV0IGZha2VEZXZpY2VJbml0UGFyYW1zID0g
VFJBQ0tFRF9JTU1FUlNJVkVfREVWSUNFOworCitsZXQgeHJWaWV3ZXJTcGFjZSA9IG51bGw7CisK
K2xldCB0ZXN0RnVuY3Rpb24gPSBmdW5jdGlvbihzZXNzaW9uLCBmYWtlRGV2aWNlQ29udHJvbGxl
ciwgdCkgeworICBsZXQgZXZlbnRXYXRjaGVyID0gbmV3IEV2ZW50V2F0Y2hlcigKKyAgICB0LCBz
ZXNzaW9uLCBbInNxdWVlemVzdGFydCIsICJzcXVlZXplIiwgInNxdWVlemVlbmQiLCAid2F0Y2hl
cmRvbmUiXSk7CisgIGxldCBldmVudFByb21pc2UgPSBldmVudFdhdGNoZXIud2FpdF9mb3IoCisg
ICAgWyJzcXVlZXplc3RhcnQiLCAic3F1ZWV6ZSIsICJzcXVlZXplZW5kIiwgIndhdGNoZXJkb25l
Il0pOworCisgIGZ1bmN0aW9uIHRyeUNhbGxpbmdGcmFtZU1ldGhvZHMoZnJhbWUpIHsKKyAgICB0
LnN0ZXAoKCkgPT4geworICAgICAgLy8gRnJhbWUgaXMgYWN0aXZlIGJ1dCBub3QgYW4gYW5pbWF0
aW9uIGZyYW1lLCBzbyBjYWxsaW5nIGdldFBvc2UgaXMKKyAgICAgIC8vIGFsbG93ZWQgd2hpbGUg
Z2V0Vmlld2VyUG9zZSBpcyBub3QuCisgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgnSW52YWxpZFN0
YXRlRXJyb3InLCAoKSA9PiBmcmFtZS5nZXRWaWV3ZXJQb3NlKGN1cnJlbnRSZWZlcmVuY2VTcGFj
ZSkpOworICAgICAgbGV0IHBvc2UgPSBmcmFtZS5nZXRQb3NlKHhyVmlld2VyU3BhY2UsIGN1cnJl
bnRSZWZlcmVuY2VTcGFjZSk7CisgICAgICBhc3NlcnRfbm90X2VxdWFscyhwb3NlLCBudWxsKTsK
KyAgICAgIGFzc2VydF90cnVlKHBvc2UgaW5zdGFuY2VvZiBYUlBvc2UpOworICAgICAgYXNzZXJ0
X2ZhbHNlKHBvc2UgaW5zdGFuY2VvZiBYUlZpZXdlclBvc2UpOworICAgIH0pOworICB9CisKKyAg
ZnVuY3Rpb24gb25TZXNzaW9uU3F1ZWV6ZVN0YXJ0KGV2ZW50KSB7CisgICAgdC5zdGVwKCAoKSA9
PiB7CisgICAgICBsZXQgaW5wdXRfc291cmNlcyA9IHNlc3Npb24uaW5wdXRTb3VyY2VzOworICAg
ICAgYXNzZXJ0X2VxdWFscyhldmVudC5mcmFtZS5zZXNzaW9uLCBzZXNzaW9uKTsKKyAgICAgIGFz
c2VydF9lcXVhbHMoZXZlbnQuaW5wdXRTb3VyY2UsIGlucHV0X3NvdXJjZXNbMF0pOworICAgICAg
dmFsaWRhdGVTYW1lT2JqZWN0KGV2ZW50KTsKKyAgICAgIHRyeUNhbGxpbmdGcmFtZU1ldGhvZHMo
ZXZlbnQuZnJhbWUpOworICAgIH0pOworICB9CisKKyAgZnVuY3Rpb24gb25TZXNzaW9uU3F1ZWV6
ZUVuZChldmVudCkgeworICAgIHQuc3RlcCggKCkgPT4geworICAgICAgbGV0IGlucHV0X3NvdXJj
ZXMgPSBzZXNzaW9uLmlucHV0U291cmNlczsKKyAgICAgIGFzc2VydF9lcXVhbHMoZXZlbnQuZnJh
bWUuc2Vzc2lvbiwgc2Vzc2lvbik7CisgICAgICBhc3NlcnRfZXF1YWxzKGV2ZW50LmlucHV0U291
cmNlLCBpbnB1dF9zb3VyY2VzWzBdKTsKKyAgICAgIHZhbGlkYXRlU2FtZU9iamVjdChldmVudCk7
CisgICAgICB0cnlDYWxsaW5nRnJhbWVNZXRob2RzKGV2ZW50LmZyYW1lKTsKKyAgICB9KTsKKyAg
ICBzZXNzaW9uLmRpc3BhdGNoRXZlbnQod2F0Y2hlckRvbmUpOworICB9CisKKyAgZnVuY3Rpb24g
b25TZXNzaW9uU3F1ZWV6ZShldmVudCkgeworICAgIHQuc3RlcCggKCkgPT4geworICAgICAgbGV0
IGlucHV0X3NvdXJjZXMgPSBzZXNzaW9uLmlucHV0U291cmNlczsKKyAgICAgIGFzc2VydF9lcXVh
bHMoZXZlbnQuZnJhbWUuc2Vzc2lvbiwgc2Vzc2lvbik7CisgICAgICBhc3NlcnRfZXF1YWxzKGV2
ZW50LmlucHV0U291cmNlLCBpbnB1dF9zb3VyY2VzWzBdKTsKKyAgICAgIHZhbGlkYXRlU2FtZU9i
amVjdChldmVudCk7CisgICAgICB0cnlDYWxsaW5nRnJhbWVNZXRob2RzKGV2ZW50LmZyYW1lKTsK
KyAgICB9KTsKKyAgfQorCisgIC8vIFZlcmlmaWVzIHRoYXQgdGhlIHNhbWUgb2JqZWN0IGlzIHJl
dHVybmVkIGVhY2ggdGltZSBhdHRyaWJ1dGVzIGFyZSBhY2Nlc3NlZAorICAvLyBvbiBhbiBYUklu
cHV0U29ydWNlRXZlbnQsIGFzIHJlcXVpcmVkIGJ5IHRoZSBzcGVjLgorICBmdW5jdGlvbiB2YWxp
ZGF0ZVNhbWVPYmplY3QoZXZlbnQpIHsKKyAgICBsZXQgZnJhbWUgPSBldmVudC5mcmFtZTsKKyAg
ICBsZXQgc291cmNlID0gZXZlbnQuaW5wdXRTb3VyY2U7CisgICAgdC5zdGVwKCgpID0+IHsKKyAg
ICAgIGFzc2VydF9lcXVhbHMoZnJhbWUsIGV2ZW50LmZyYW1lLAorICAgICAgICAiWFJJbnB1dFNv
dXJjZUV2ZW50LmZyYW1lIHJldHVybnMgdGhlIHNhbWUgb2JqZWN0LiIpOworICAgICAgYXNzZXJ0
X2VxdWFscyhzb3VyY2UsIGV2ZW50LmlucHV0U291cmNlLAorICAgICAgICAiWFJJbnB1dFNvdXJj
ZUV2ZW50LmlucHV0U291cmNlIHJldHVybnMgdGhlIHNhbWUgb2JqZWN0LiIpOworICAgIH0pOwor
ICB9CisKKyAgc2Vzc2lvbi5hZGRFdmVudExpc3RlbmVyKCJzcXVlZXplc3RhcnQiLCBvblNlc3Np
b25TcXVlZXplU3RhcnQsIGZhbHNlKTsKKyAgc2Vzc2lvbi5hZGRFdmVudExpc3RlbmVyKCJzcXVl
ZXplZW5kIiwgb25TZXNzaW9uU3F1ZWV6ZUVuZCwgZmFsc2UpOworICBzZXNzaW9uLmFkZEV2ZW50
TGlzdGVuZXIoInNxdWVlemUiLCBvblNlc3Npb25TcXVlZXplLCBmYWxzZSk7CisKKyAgbGV0IHBy
ZXNzZWRfZ3JpcF9idXR0b24gPSB7CisgICAgYnV0dG9uVHlwZTogImdyaXAiLAorICAgIHByZXNz
ZWQ6IHRydWUsCisgICAgdG91Y2hlZDogdHJ1ZSwKKyAgICBwcmVzc2VkVmFsdWU6IDEuMAorICB9
OworCisgIGxldCB1bnByZXNzZWRfZ3JpcF9idXR0b24gPSB7CisgICAgYnV0dG9uVHlwZTogImdy
aXAiLAorICAgIHByZXNzZWQ6IGZhbHNlLAorICAgIHRvdWNoZWQ6IGZhbHNlLAorICAgIHByZXNz
ZWRWYWx1ZTogMC4wCisgIH07CisKKyAgbGV0IGdyaXBDb250cm9sbGVyID0geworICAgICAgaGFu
ZGVkbmVzczogIm5vbmUiLAorICAgICAgdGFyZ2V0UmF5TW9kZTogInRyYWNrZWQtcG9pbnRlciIs
CisgICAgICBwb2ludGVyT3JpZ2luOiBWQUxJRF9QT0lOVEVSX1RSQU5TRk9STSwKKyAgICAgIHBy
b2ZpbGVzOiBbXSwKKyAgICAgIHN1cHBvcnRlZEJ1dHRvbnM6IFsgdW5wcmVzc2VkX2dyaXBfYnV0
dG9uIF0KKyAgfTsKKworICBsZXQgaW5wdXRfc291cmNlID0KKyAgICBmYWtlRGV2aWNlQ29udHJv
bGxlci5zaW11bGF0ZUlucHV0U291cmNlQ29ubmVjdGlvbihncmlwQ29udHJvbGxlcik7CisgIGxl
dCBjdXJyZW50UmVmZXJlbmNlU3BhY2UgPSBudWxsOworCisgIHNlc3Npb24ucmVxdWVzdFJlZmVy
ZW5jZVNwYWNlKCd2aWV3ZXInKS50aGVuKGZ1bmN0aW9uKHZpZXdlclNwYWNlKSB7CisgICAgeHJW
aWV3ZXJTcGFjZSA9IHZpZXdlclNwYWNlOworCisgICAgc2Vzc2lvbi5yZXF1ZXN0UmVmZXJlbmNl
U3BhY2UoJ2xvY2FsJykudGhlbigocmVmZXJlbmNlU3BhY2UpID0+IHsKKyAgICAgIGN1cnJlbnRS
ZWZlcmVuY2VTcGFjZSA9IHJlZmVyZW5jZVNwYWNlOworCisgICAgICAvL1NpbXVsYXRlIGEgZ3Jp
cCBzdGFydGluZyB0aGVuIHJlbGVhc2UgaXQgYSBzaG9ydCB0aW1lIGxhdGVyLgorICAgICAgc2Vz
c2lvbi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKHRpbWUsIHhyRnJhbWUpID0+IHsKKyAgICAgICAg
aW5wdXRfc291cmNlLnVwZGF0ZUJ1dHRvblN0YXRlKHByZXNzZWRfZ3JpcF9idXR0b24pOworCisg
ICAgICAgICAgc2Vzc2lvbi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKHRpbWUsIHhyRnJhbWUpID0+
IHsKKyAgICAgICAgICAgIGlucHV0X3NvdXJjZS51cGRhdGVCdXR0b25TdGF0ZSh1bnByZXNzZWRf
Z3JpcF9idXR0b24pOworCisgICAgICAgICAgICBzZXNzaW9uLnJlcXVlc3RBbmltYXRpb25GcmFt
ZSgodGltZSwgeHJGcmFtZSkgPT4geworICAgICAgICAgICAgICAvLyBOZWVkIHRvIHByb2Nlc3Mg
b25lIG1vcmUgZnJhbWUgdG8gYWxsb3cgZ3JpcCB0byBwcm9wZWdhdGUuCisgICAgICAgICAgICB9
KTsKKyAgICAgICAgICB9KTsKKyAgICAgIH0pOworICAgIH0pOworICB9KTsKKworICByZXR1cm4g
ZXZlbnRQcm9taXNlOworfTsKKworeHJfc2Vzc2lvbl9wcm9taXNlX3Rlc3QoCisgIHRlc3ROYW1l
LCB0ZXN0RnVuY3Rpb24sIGZha2VEZXZpY2VJbml0UGFyYW1zLCAnaW1tZXJzaXZlLXZyJyk7CisK
Kzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93ZWJ4ci9leGNsdXNpdmVfcmVxdWVzdEZyYW1lX25vbGF5ZXIuaHR0cHMuaHRt
bCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvZXhj
bHVzaXZlX3JlcXVlc3RGcmFtZV9ub2xheWVyLmh0dHBzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjc2ODQ3
YTg3NjkwNzNiYjQ3NTM3MDJmMzJkZDVjMmNjYzlkMzUzMgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvZXhjbHVzaXZl
X3JlcXVlc3RGcmFtZV9ub2xheWVyLmh0dHBzLmh0bWwKQEAgLTAsMCArMSw1OCBAQAorPCFET0NU
WVBFIGh0bWw+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3dlYnhyX3V0aWwuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9InJlc291cmNlcy93ZWJ4cl90ZXN0X2NvbnN0YW50cy5qcyI+PC9zY3JpcHQ+Cis8
Y2FudmFzIC8+CisKKzxzY3JpcHQ+CitsZXQgaW1tZXJzaXZlVGVzdE5hbWUgPSAiWFJTZXNzaW9u
IHJlcXVlc3RBbmltYXRpb25GcmFtZSBtdXN0IGZhaWwgaWYgdGhlIHNlc3Npb24gaGFzICIKKyAg
KyAibm8gYmFzZUxheWVyIGZvciBpbW1lcnNpdmUiOworCitsZXQgbm9uSW1tZXJzaXZlVGVzdE5h
bWUgPSAiWFJTZXNzaW9uIHJlcXVlc3RBbmltYXRpb25GcmFtZSBtdXN0IGZhaWwgaWYgdGhlIHNl
c3Npb24gaGFzICIKKyAgKyAibm8gYmFzZUxheWVyIGZvciBub24gaW1tZXJzaXZlIjsKKworbGV0
IGZha2VEZXZpY2VJbml0UGFyYW1zID0gVFJBQ0tFRF9JTU1FUlNJVkVfREVWSUNFOworCitsZXQg
dGVzdEZ1bmN0aW9uID0gKHNlc3Npb24sIGNvbnRyb2xsZXIsIHQsIHNlc3Npb25PYmplY3RzKSA9
PiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CisgIC8vIENsZWFyIHRoZSBiYXNl
IGxheWVyIHRoYXQgdGhlIGJvaWxlcnBsYXRlIHNldHMuICBUaGlzIGVuc3VyZXMgdGhhdCB0aGUg
ckFGCisgIC8vIHdvbid0IGZpcmUuICBJZiB0aGUgZmlyZSAqZG9lcyogZmlyZSwgaXQgd2lsbCBm
YWlsIGJlY2F1c2UgdGhlIGJhc2VMYXllcgorICAvLyB3b24ndCBtYXRjaCB0aGUgbmV3IGJhc2Vs
YXllciB3ZSBsYXRlciBjcmVhdGUuCisgIHNlc3Npb24udXBkYXRlUmVuZGVyU3RhdGUoeworICAg
IGJhc2VMYXllcjogbnVsbAorICB9KTsKKyAgbGV0IHdlYmdsQ2FudmFzID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoJ2NhbnZhcycpWzBdOworICBsZXQgZ2wgPSBzZXNzaW9uT2JqZWN0
cy5nbDsKKworICAvLyBTZXNzaW9uIG11c3QgaGF2ZSBhIGJhc2VMYXllciBvciBmcmFtZSByZXF1
ZXN0cyB3aWxsIGJlIGlnbm9yZWQuCisgIGxldCB3ZWJnbExheWVyID0gbmV3IFhSV2ViR0xMYXll
cihzZXNzaW9uLCBnbCk7CisKKyAgZnVuY3Rpb24gb25FYXJseUZyYW1lKHRpbWUsIHZyRnJhbWUp
IHsKKyAgICAvLyBXZSBzaG91bGRuJ3QgYmUgYWxsb3dlZCB0byByZWFjaCB0aGlzIGNhbGxiYWNr
IHdpdGggbm8gYmFzZUxheWVyCisgICAgdC5zdGVwKCgpID0+IHsKKyAgICAgIGFzc2VydF9lcXVh
bHMoc2Vzc2lvbi5yZW5kZXJTdGF0ZS5iYXNlTGF5ZXIsIHdlYmdsTGF5ZXIpOworICAgIH0pOwor
ICAgIHJlc29sdmUoKTsKKyAgfQorCisgIC8vIFRoaXMgY2FsbGJhY2sgc2hvdWxkbid0IGdvIHRo
cm91Z2gsIHNpbmNlIHRoZSBzZXNzaW9uIGRvZXNuJ3QKKyAgLy8gaGF2ZSBhIGJhc2VMYXllciB3
aGVuIHRoaXMgY2FsbCBpcyBtYWRlLgorICBsZXQgaGFuZGxlID0gc2Vzc2lvbi5yZXF1ZXN0QW5p
bWF0aW9uRnJhbWUob25FYXJseUZyYW1lKTsKKyAgLy8gU2hvdWxkIHN0aWxsIGdpdmUgdXMgYSB2
YWxpZCBoYW5kbGUsIHRob3VnaC4KKyAgYXNzZXJ0X25vdF9lcXVhbHMoaGFuZGxlLCAwKTsKKwor
ICAvLyBXYWl0IGZvciBhIGJpdCBhbmQgc2V0IHRoZSBiYXNlTGF5ZXIuCisgIHQuc3RlcF90aW1l
b3V0KCgpID0+IHsKKyAgICAvLyBPbmNlIHRoZSBiYXNlIGxheWVyIGlzIHNldCB0aGUgcHJldmlv
dXNseSByZWdpc3RlcmVkIGNhbGxiYWNrIHNob3VsZCBydW4uCisgICAgc2Vzc2lvbi51cGRhdGVS
ZW5kZXJTdGF0ZSh7CisgICAgICAgIGJhc2VMYXllcjogd2ViZ2xMYXllcgorICAgIH0pOworICB9
LCAzMDApOworfSk7CisKK3hyX3Nlc3Npb25fcHJvbWlzZV90ZXN0KAorICBpbW1lcnNpdmVUZXN0
TmFtZSwgdGVzdEZ1bmN0aW9uLCBmYWtlRGV2aWNlSW5pdFBhcmFtcywgJ2ltbWVyc2l2ZS12cicp
OworeHJfc2Vzc2lvbl9wcm9taXNlX3Rlc3QoCisgIG5vbkltbWVyc2l2ZVRlc3ROYW1lLCB0ZXN0
RnVuY3Rpb24sIGZha2VEZXZpY2VJbml0UGFyYW1zLCAnaW5saW5lJyk7CisKKzwvc2NyaXB0Pgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
ZWJ4ci9nYW1lcGFkcy1tb2R1bGUvaWRsaGFybmVzcy5odHRwcy53aW5kb3cuaHRtbCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvZ2FtZXBhZHMtbW9k
dWxlL2lkbGhhcm5lc3MuaHR0cHMud2luZG93Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjM4MjkxMzUyOGU2
OTNiM2E1ZDU2YzY2MGE0NTA2MDk4MGI1NDhjMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvZ2FtZXBhZHMtbW9kdWxl
L2lkbGhhcm5lc3MuaHR0cHMud2luZG93Lmh0bWwKQEAgLTAsMCArMSBAQAorPCEtLSBUaGlzIGZp
bGUgaXMgcmVxdWlyZWQgZm9yIFdlYktpdCB0ZXN0IGluZnJhc3RydWN0dXJlIHRvIHJ1biB0aGUg
dGVtcGxhdGVkIHRlc3QgLS0+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9nYW1l
cGFkcy1tb2R1bGUvaWRsaGFybmVzcy5odHRwcy53aW5kb3cuanMgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL2dhbWVwYWRzLW1vZHVsZS9pZGxoYXJu
ZXNzLmh0dHBzLndpbmRvdy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NTA5YzY3YTg0NzEwOWYyZmRhZWQ1YmU0
OWM4Nzc3N2UxOTI3YTEyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9nYW1lcGFkcy1tb2R1bGUvaWRsaGFybmVzcy5o
dHRwcy53aW5kb3cuanMKQEAgLTAsMCArMSwxNiBAQAorLy8gTUVUQTogc2NyaXB0PS9yZXNvdXJj
ZXMvV2ViSURMUGFyc2VyLmpzCisvLyBNRVRBOiBzY3JpcHQ9L3Jlc291cmNlcy9pZGxoYXJuZXNz
LmpzCisKKyd1c2Ugc3RyaWN0JzsKKworLy8gaHR0cHM6Ly9pbW1lcnNpdmUtd2ViLmdpdGh1Yi5p
by93ZWJ4ci1nYW1lcGFkcy1tb2R1bGUvCisKK2lkbF90ZXN0KAorICBbJ3dlYnhyLWdhbWVwYWRz
LW1vZHVsZSddLAorICBbJ3dlYnhyJywgJ2RvbSddLAorICBhc3luYyBpZGxfYXJyYXkgPT4gewor
ICAgIGlkbF9hcnJheS5hZGRfb2JqZWN0cyh7CisgICAgICAvLyBUT0RPOiBYUklucHV0U291cmNl
CisgICAgfSk7CisgIH0KKyk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL2dhbWVwYWRzLW1vZHVsZS93M2MtaW1wb3J0LmxvZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvZ2FtZXBh
ZHMtbW9kdWxlL3czYy1pbXBvcnQubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFmMWVkYzRkNDkyMmFmOWVmMDE2
MjUwY2ViYzBkYTlhYTNjMjRhZTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL2dhbWVwYWRzLW1vZHVsZS93M2MtaW1w
b3J0LmxvZwpAQCAtMCwwICsxLDE5IEBACitUaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2Vy
ZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KK0RvIE5PVCBtb2RpZnkgdGhlc2Ug
dGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgorSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0
IG9uIHRoZSBXUFQgZ2l0aHViOgorCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVz
dHMvd3B0CisKK1RoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4g
V2ViS2l0IHRvIHJlaW1wb3J0CisKK0RvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4K
KworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCitQcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6
CitOb25lCitQcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKK05vbmUK
Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorTGlzdCBvZiBmaWxlczoKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL2dhbWVwYWRzLW1vZHVsZS9pZGxoYXJuZXNzLmh0
dHBzLndpbmRvdy5qcworL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd2VieHIvZ2FtZXBhZHMtbW9kdWxlL3hySW5wdXRTb3VyY2VfZ2FtZXBhZF9kaXNjb25uZWN0
Lmh0dHBzLmh0bWwKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dlYnhyL2dhbWVwYWRzLW1vZHVsZS94cklucHV0U291cmNlX2dhbWVwYWRfaW5wdXRfcmVnaXN0
ZXJlZC5odHRwcy5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dlYnhyL2dhbWVwYWRzLW1vZHVsZS94cklucHV0U291cmNlX2dhbWVw
YWRfZGlzY29ubmVjdC5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93ZWJ4ci9nYW1lcGFkcy1tb2R1bGUveHJJbnB1dFNvdXJjZV9nYW1lcGFk
X2Rpc2Nvbm5lY3QuaHR0cHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YjhmZjRhNTljOGU1MDNkNGYzMWZl
MzNmOWZhMWRlZTZhZjEwMDAzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9nYW1lcGFkcy1tb2R1bGUveHJJbnB1dFNv
dXJjZV9nYW1lcGFkX2Rpc2Nvbm5lY3QuaHR0cHMuaHRtbApAQCAtMCwwICsxLDE2MCBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3dlYnhyX3V0aWwuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy93ZWJ4cl90ZXN0X2NvbnN0YW50cy5qcyI+PC9z
Y3JpcHQ+Cis8Y2FudmFzIGlkPSJ3ZWJnbC1jYW52YXMiPjwvY2FudmFzPgorCis8c2NyaXB0Pgor
bGV0IHRlc3ROYW1lID0gIldlYlhSIElucHV0U291cmNlJ3MgZ2FtZXBhZCBnZXRzIGRpc2Nvbm5l
Y3RlZCB3aGVuIHRoZSBpbnB1dCBzb3VyY2UgaXMgcmVtb3ZlZCI7CisKK2xldCB3YXRjaGVyRG9u
ZSA9IG5ldyBFdmVudCgid2F0Y2hlcmRvbmUiKTsKKworbGV0IGZha2VEZXZpY2VJbml0UGFyYW1z
ID0gVFJBQ0tFRF9JTU1FUlNJVkVfREVWSUNFOworCitsZXQgdGVzdEZ1bmN0aW9uID0gZnVuY3Rp
b24oc2Vzc2lvbiwgZmFrZURldmljZUNvbnRyb2xsZXIsIHQpIHsKKyAgbGV0IGV2ZW50V2F0Y2hl
ciA9IG5ldyBFdmVudFdhdGNoZXIodCwgc2Vzc2lvbiwgWyJ3YXRjaGVyZG9uZSJdKTsKKyAgbGV0
IGV2ZW50UHJvbWlzZSA9IGV2ZW50V2F0Y2hlci53YWl0X2ZvcihbIndhdGNoZXJkb25lIl0pOwor
CisgIGxldCBpbnB1dENoYW5nZUV2ZW50cyA9IDA7CisgIGxldCBjYWNoZWRfaW5wdXRfc291cmNl
ID0gbnVsbDsKKyAgZnVuY3Rpb24gb25JbnB1dFNvdXJjZXNDaGFuZ2UoZXZlbnQpIHsKKyAgICB0
LnN0ZXAoKCkgPT4geworICAgICAgaW5wdXRDaGFuZ2VFdmVudHMrKzsKKworICAgICAgLy8gVGhl
IGZpcnN0IGNoYW5nZSBldmVudCBzaG91bGQgYmUgYWRkaW5nIG91ciBjb250cm9sbGVyL2dhbWVw
YWQuCisgICAgICBpZiAoaW5wdXRDaGFuZ2VFdmVudHMgPT09IDEpIHsKKyAgICAgICAgLy8gV2Ug
c2hvdWxkIGhhdmUgb25lIGlucHV0IHNvdXJjZQorICAgICAgICBhc3NlcnRfZXF1YWxzKHNlc3Np
b24uaW5wdXRTb3VyY2VzLmxlbmd0aCwgMSwKKyAgICAgICAgICAic2hvdWxkIGluaXRpYWxseSBo
YXZlIGFuIGlucHV0IHNvdXJjZSIpOworICAgICAgICBhc3NlcnRHYW1lcGFkQ29ubmVjdGVkKCk7
CisgICAgICB9IGVsc2UgaWYgKGlucHV0Q2hhbmdlRXZlbnRzID09PSAyKSB7CisgICAgICAgIC8v
IFRoZSBzZWNvbmQgZXZlbnQgc2hvdWxkIGJlIGRpc2Nvbm5lY3Rpbmcgb3VyIGdhbWVwYWQsIHdl
IHNob3VsZCBzdGlsbAorICAgICAgICAvLyBoYXZlIGFuIGlucHV0IHNvdXJjZS4KKyAgICAgICAg
YXNzZXJ0X2VxdWFscyhzZXNzaW9uLmlucHV0U291cmNlcy5sZW5ndGgsIDEsCisgICAgICAgICAg
InJlbW92aW5nIHRoZSBnYW1lcGFkIHNob3VsZG4ndCByZW1vdmUgdGhlIGlucHV0IHNvdXJjZSIp
OworICAgICAgICAvLyBIb3dldmVyLCBkaXNjb25uZWN0aW5nIHRoZSBnYW1lcGFkIGZyb20gdGhl
IGlucHV0IHNvdXJjZSBzaG91bGQgY2F1c2UKKyAgICAgICAgLy8gdGhlIGlucHV0IHNvdXJjZSB0
byBiZSByZS1jcmVhdGVkLiBWZXJpZnkgdGhpcy4KKyAgICAgICAgYXNzZXJ0SW5wdXRTb3VyY2VS
ZWNyZWF0ZWQoZXZlbnQpOworICAgICAgICBhc3NlcnRHYW1lcGFkRGlzY29ubmVjdGVkKCk7Cisg
ICAgICAgIGNhY2hlZF9pbnB1dF9zb3VyY2UgPSBzZXNzaW9uLmlucHV0U291cmNlc1swXTsKKyAg
ICAgIH0gZWxzZSBpZiAoaW5wdXRDaGFuZ2VFdmVudHMgPT09IDMpIHsKKyAgICAgICAgYXNzZXJ0
X2VxdWFscyhzZXNzaW9uLmlucHV0U291cmNlcy5sZW5ndGgsIDEsCisgICAgICAgICAgInJlLWFk
ZGluZyB0aGUgZ2FtZXBhZCBzaG91bGRuJ3QgYWRkIGFuIGV4dHJhIGlucHV0IHNvdXJjZSIpOwor
ICAgICAgICAvLyBUaGUgdGhpcmQgZXZlbnQgc2hvdWxkIGJlIHJlY29ubmVjdGluZyBvdXIgZ2Ft
ZXBhZCwgd2Ugc2hvdWxkIHN0aWxsCisgICAgICAgIC8vIGhhdmUgYW4gaW5wdXQgc291cmNlLiBI
b3dldmVyLCBpdCBzaG91bGQgaGF2ZSBiZWVuIHJlLWNyZWF0ZWQuCisgICAgICAgIGFzc2VydElu
cHV0U291cmNlUmVjcmVhdGVkKGV2ZW50KTsKKyAgICAgICAgYXNzZXJ0R2FtZXBhZENvbm5lY3Rl
ZCgpOworICAgICAgfSBlbHNlIGlmIChpbnB1dENoYW5nZUV2ZW50cyA9PT0gNCkgeworICAgICAg
ICAvLyBUaGUgZm91cnRoIGV2ZW50IHNob3VsZCBiZSBkaXNjb25uZWN0aW5nIG91ciBnYW1lcGFk
LCB3ZSBzaG91bGQgbm8KKyAgICAgICAgLy8gbG9uZ2VyIGhhdmUgYW4gaW5wdXQgc291cmNlLgor
ICAgICAgICBhc3NlcnRfZXF1YWxzKHNlc3Npb24uaW5wdXRTb3VyY2VzLmxlbmd0aCwgMCwKKyAg
ICAgICAgICAiaW5wdXQgc291cmNlIHNob3VsZCBoYXZlIGJlZW4gZGlzY29ubmVjdGVkIik7Cisg
ICAgICAgIGFzc2VydEdhbWVwYWREaXNjb25uZWN0ZWQoKTsKKyAgICAgIH0gZWxzZSBpZiAoaW5w
dXRDaGFuZ2VFdmVudHMgPT09IDUpIHsKKyAgICAgICAgLy8gVGhlIGZpZnRoIGV2ZW50IHNob3Vs
ZCBiZSByZS1jb25uZWN0aW5nIG91ciBnYW1lcGFkIHRvIHByZXAgZm9yCisgICAgICAgIC8vIGVu
ZGluZyB0aGUgc2Vzc2lvbi4KKyAgICAgICAgYXNzZXJ0X2VxdWFscyhzZXNzaW9uLmlucHV0U291
cmNlcy5sZW5ndGgsIDEsCisgICAgICAgICAgImlucHV0IHNvdXJjZSBzaG91bGQgaGF2ZSBiZWVu
IHJlLWNvbm5lY3RlZCIpOworICAgICAgICBhc3NlcnRHYW1lcGFkQ29ubmVjdGVkKCk7CisgICAg
ICAgIHNlc3Npb24uZGlzcGF0Y2hFdmVudCh3YXRjaGVyRG9uZSk7CisgICAgICB9CisgICAgfSk7
CisgIH0KKworICBmdW5jdGlvbiBhc3NlcnRJbnB1dFNvdXJjZVJlY3JlYXRlZChldmVudCkgewor
ICAgIGFzc2VydF9lcXVhbHMoZXZlbnQuYWRkZWQubGVuZ3RoLCAxKTsKKyAgICBhc3NlcnRfZXF1
YWxzKGV2ZW50LnJlbW92ZWQubGVuZ3RoLCAxKTsKKyAgICBhc3NlcnRfZXF1YWxzKHNlc3Npb24u
aW5wdXRTb3VyY2VzWzBdLCBldmVudC5hZGRlZFswXSk7CisgICAgYXNzZXJ0X2VxdWFscyhjYWNo
ZWRfaW5wdXRfc291cmNlLCBldmVudC5yZW1vdmVkWzBdKTsKKyAgfQorCisgIGZ1bmN0aW9uIGFz
c2VydEdhbWVwYWRDb25uZWN0ZWQoKSB7CisgICAgY2FjaGVkX2lucHV0X3NvdXJjZSA9IHNlc3Np
b24uaW5wdXRTb3VyY2VzWzBdOworICAgIGFzc2VydF9ub3RfZXF1YWxzKGNhY2hlZF9pbnB1dF9z
b3VyY2UsIG51bGwsCisgICAgICAiRXhwZWN0IHRvIGdldCBhIGNhY2hlZF9pbnB1dF9zb3VyY2Us
IGl0ZXJhdGlvbjogIiArIGlucHV0Q2hhbmdlRXZlbnRzKTsKKyAgICBhc3NlcnRfbm90X2VxdWFs
cyhjYWNoZWRfaW5wdXRfc291cmNlLmdhbWVwYWQsIG51bGwsCisgICAgICAiRXhwZWN0IHRvIGhh
dmUgYSBnYW1lcGFkLCBpdGVyYXRpb246ICIgKyBpbnB1dENoYW5nZUV2ZW50cyk7CisgICAgYXNz
ZXJ0X2VxdWFscyhjYWNoZWRfaW5wdXRfc291cmNlLmdhbWVwYWQuaW5kZXgsIC0xLAorICAgICAg
IldlYlhSIEdhbWVwYWQuaW5kZXggbXVzdCBiZSAtMSwgaXRlcmF0aW9uOiAiICsgaW5wdXRDaGFu
Z2VFdmVudHMpOworICAgIGFzc2VydF9lcXVhbHMoY2FjaGVkX2lucHV0X3NvdXJjZS5nYW1lcGFk
LmlkLCAiIiwKKyAgICAgICJXZWJYUiBHYW1lcGFkLmlkIG11c3QgYmUgZW1wdHkgc3RyaW5nLCBp
dGVyYXRpb246ICIgKyBpbnB1dENoYW5nZUV2ZW50cyk7CisgICAgYXNzZXJ0X3RydWUoY2FjaGVk
X2lucHV0X3NvdXJjZS5nYW1lcGFkLmNvbm5lY3RlZCwKKyAgICAgICJFeHBlY3QgdGhlIGdhbWVw
YWQgdG8gYmUgY29ubmVjdGVkLCBpdGVyYXRpb246ICIgKyBpbnB1dENoYW5nZUV2ZW50cyk7Cisg
IH0KKworICBmdW5jdGlvbiBhc3NlcnRHYW1lcGFkRGlzY29ubmVjdGVkKCkgeworICAgIGFzc2Vy
dF9ub3RfZXF1YWxzKGNhY2hlZF9pbnB1dF9zb3VyY2UsIG51bGwsCisgICAgICAiRXhwZWN0IHRv
IGhhdmUgYSBjYWNoZWRfaW5wdXRfc291cmNlLCBpdGVyYXRpb246ICIgKyBpbnB1dENoYW5nZUV2
ZW50cyk7CisgICAgYXNzZXJ0X25vdF9lcXVhbHMoY2FjaGVkX2lucHV0X3NvdXJjZS5nYW1lcGFk
LCBudWxsLAorICAgICAgIkV4cGVjdCB0byBoYXZlIGEgZ2FtZXBhZCBvbiBjYWNoZWRfaW5wdXRf
c291cmNlLCBpdGVyYXRpb246ICIgKyBpbnB1dENoYW5nZUV2ZW50cyk7CisgICAgYXNzZXJ0X2Vx
dWFscyhjYWNoZWRfaW5wdXRfc291cmNlLmdhbWVwYWQuaW5kZXgsIC0xLAorICAgICAgIldlYlhS
IEdhbWVwYWQuaW5kZXggbXVzdCBiZSAtMSwgaXRlcmF0aW9uOiAiICsgaW5wdXRDaGFuZ2VFdmVu
dHMpOworICAgIGFzc2VydF9lcXVhbHMoY2FjaGVkX2lucHV0X3NvdXJjZS5nYW1lcGFkLmlkLCAi
IiwKKyAgICAgICJXZWJYUiBHYW1lcGFkLmlkIG11c3QgYmUgZW1wdHkgc3RyaW5nLCBpdGVyYXRp
b246ICIgKyBpbnB1dENoYW5nZUV2ZW50cyk7CisgICAgYXNzZXJ0X2ZhbHNlKGNhY2hlZF9pbnB1
dF9zb3VyY2UuZ2FtZXBhZC5jb25uZWN0ZWQsCisgICAgICAiRXhwZWN0IGNhY2hlZCBnYW1lcGFk
IHRvIGJlIGRpc2Nvbm5lY3RlZCwgaXRlcmF0aW9uOiAiICsgaW5wdXRDaGFuZ2VFdmVudHMpOwor
ICB9CisKKyAgc2Vzc2lvbi5hZGRFdmVudExpc3RlbmVyKCdpbnB1dHNvdXJjZXNjaGFuZ2UnLCBv
bklucHV0U291cmNlc0NoYW5nZSwgZmFsc2UpOworCisgIC8vIEEgc2V0IG9mIHN1cHBvcnRlZCBi
dXR0b25zIHdoaWNoIHNob3VsZCBjYXVzZSB0aGUgcnVudGltZSB0byB0cmVhdCB0aGUKKyAgLy8g
Y29udHJvbGxlciBhcyBzdXBwb3J0aW5nIGEgZ2FtZXBhZC4KKyAgbGV0IGdhbWVwYWRCdXR0b25z
ID0gWworICAgIHsKKyAgICAgIGJ1dHRvblR5cGU6ICdncmlwJywKKyAgICAgIHByZXNzZWQ6IGZh
bHNlLAorICAgICAgdG91Y2hlZDogZmFsc2UsCisgICAgICBwcmVzc2VkVmFsdWU6IDAKKyAgICB9
LAorICAgIHsKKyAgICAgIGJ1dHRvblR5cGU6ICd0b3VjaHBhZCcsCisgICAgICBwcmVzc2VkOiBm
YWxzZSwKKyAgICAgIHRvdWNoZWQ6IGZhbHNlLAorICAgICAgcHJlc3NlZFZhbHVlOiAwCisgICAg
fQorICBdOworCisgIGxldCBpbnB1dF9zb3VyY2UgPSBmYWtlRGV2aWNlQ29udHJvbGxlci5zaW11
bGF0ZUlucHV0U291cmNlQ29ubmVjdGlvbih7CisgICAgaGFuZGVkbmVzczogInJpZ2h0IiwKKyAg
ICB0YXJnZXRSYXlNb2RlOiAidHJhY2tlZC1wb2ludGVyIiwKKyAgICBwb2ludGVyT3JpZ2luOiBW
QUxJRF9QT0lOVEVSX1RSQU5TRk9STSwKKyAgICBwcm9maWxlczogW10sCisgICAgc3VwcG9ydGVk
QnV0dG9uczogZ2FtZXBhZEJ1dHRvbnMKKyAgfSk7CisKKyAgLy8gSW5wdXQgZXZlbnRzIG5lZWQg
b25lIGZyYW1lIHRvIHByb3BhZ2F0ZSwgc28gdGhpcyBkb2VzIChpbiBvcmRlciBhbmQgcnVubmlu
ZworICAvLyBhIHJBRiBhZnRlciBlYWNoIHN0ZXA6CisgIC8vIDEuIERpc2Nvbm5lY3QgdGhlIGdh
bWVwYWQgKHNvIHdlIGNhbiB2ZXJpZnkgdGhhdCB0aGUgZ2FtZXBhZCBpcyBkaXNjb25uZWN0ZWQp
CisgIC8vIDIuIFJlY29ubmVjdCB0aGUgZ2FtZXBhZCAoc28gd2UgY2FuIHNldCB1cCB0byBkaXNj
b25uZWN0IHRoZSBjb250cm9sbGVyKQorICAvLyAzLiBEaXNjb25uZWN0IHRoZSBjb250cm9sbGVy
IChzbyB3ZSBjYW4gdmVyaWZ5IHRoYXQgaXQncyBnYW1lcGFkIGdldHMgZGlzY29ubmVjdGVkKS4K
KyAgLy8gNC4gQWRkcyB0aGUgY29udHJvbGxlciBiYWNrIChzbyB3ZSBjYW4gdGVzdCB0aGUgZW5k
IFNlc3Npb24pCisgIC8vIDUuIFdhaXRzIGZvciBhbGwgb2YgdGhlIGlucHV0IGV2ZW50cyB0byBm
aW5pc2ggcHJvcGFnYXRpbmcsIHRoZW4gZW5kcyB0aGUKKyAgLy8gc2Vzc2lvbiwgYXQgd2hpY2gg
cG9pbnQgdGhlIGNvbnRyb2xsZXIgc2hvdWxkIGJlIGRpc2Nvbm5lY3RlZC4KKyAgcmV0dXJuIG5l
dyBQcm9taXNlKChyZXNvbHZlKSA9PiB7CisgICAgc2Vzc2lvbi5yZXF1ZXN0QW5pbWF0aW9uRnJh
bWUoKCkgPT4geworICAgICAgaW5wdXRfc291cmNlLnNldFN1cHBvcnRlZEJ1dHRvbnMoW10pOwor
ICAgICAgc2Vzc2lvbi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4geworICAgICAgICBpbnB1
dF9zb3VyY2Uuc2V0U3VwcG9ydGVkQnV0dG9ucyhnYW1lcGFkQnV0dG9ucyk7CisgICAgICAgIHNl
c3Npb24ucmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHsKKyAgICAgICAgICBpbnB1dF9zb3Vy
Y2UuZGlzY29ubmVjdCgpOworICAgICAgICAgIHNlc3Npb24ucmVxdWVzdEFuaW1hdGlvbkZyYW1l
KCgpID0+IHsKKyAgICAgICAgICAgIGlucHV0X3NvdXJjZS5yZWNvbm5lY3QoKTsKKyAgICAgICAg
ICAgIHNlc3Npb24ucmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHsKKyAgICAgICAgICAgICAg
ZXZlbnRQcm9taXNlLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIHNlc3Npb24uZW5kKCku
dGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgICBhc3NlcnRHYW1lcGFkRGlzY29ubmVjdGVk
KCk7CisgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7CisgICAgICAgICAgICAgICAgfSk7Cisg
ICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgfSk7CisgICAgICAg
IH0pOworICAgICAgfSk7CisgICAgfSk7CisgIH0pOworfTsKKworeHJfc2Vzc2lvbl9wcm9taXNl
X3Rlc3QoCisgIHRlc3ROYW1lLCB0ZXN0RnVuY3Rpb24sIGZha2VEZXZpY2VJbml0UGFyYW1zLCAn
aW1tZXJzaXZlLXZyJyk7Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvZ2FtZXBhZHMtbW9kdWxlL3hySW5wdXRT
b3VyY2VfZ2FtZXBhZF9pbnB1dF9yZWdpc3RlcmVkLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL2dhbWVwYWRzLW1vZHVsZS94cklu
cHV0U291cmNlX2dhbWVwYWRfaW5wdXRfcmVnaXN0ZXJlZC5odHRwcy5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjAzOGUyOGRjZmZiZDUwNzEwNWRhNTdmYjFjZWQwNTVlYTgzODk2YzAKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL2dh
bWVwYWRzLW1vZHVsZS94cklucHV0U291cmNlX2dhbWVwYWRfaW5wdXRfcmVnaXN0ZXJlZC5odHRw
cy5odG1sCkBAIC0wLDAgKzEsMTMxIEBACis8IURPQ1RZUEUgaHRtbD4KKzxzY3JpcHQgc3JjPSIv
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNv
dXJjZXMvd2VieHJfdXRpbC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2Vz
L3dlYnhyX3Rlc3RfY29uc3RhbnRzLmpzIj48L3NjcmlwdD4KKzxjYW52YXMgaWQ9IndlYmdsLWNh
bnZhcyI+PC9jYW52YXM+CisKKzxzY3JpcHQ+CitsZXQgdGVzdE5hbWUgPSAiV2ViWFIgSW5wdXRT
b3VyY2UncyBnYW1lcGFkIHByb3Blcmx5IHJlZ2lzdGVycyBpbnB1dCI7CisKK2xldCBmYWtlRGV2
aWNlSW5pdFBhcmFtcyA9IFRSQUNLRURfSU1NRVJTSVZFX0RFVklDRTsKKworbGV0IHRlc3RGdW5j
dGlvbiA9IGZ1bmN0aW9uKHNlc3Npb24sIGZha2VEZXZpY2VDb250cm9sbGVyLCB0KSB7CisKKyAg
Ly8gVGhlcmUgc2hvdWxkIG9ubHkgYmUgb25lIGlucHV0IHNvdXJjZSBjaGFuZ2UgZXZlbnQsIHdo
aWNoIGlzIGZyb20gYWRkaW5nCisgIC8vIHRoZSBpbnB1dCBzb3VyY2UgYXQgdGhlIHN0YXJ0IG9m
IHRoZSB0ZXN0LgorICBsZXQgaW5wdXRDaGFuZ2VFdmVudHMgPSAwOworICBmdW5jdGlvbiBvbklu
cHV0U291cmNlc0NoYW5nZShldmVudCkgeworICAgIGFzc2VydF9lcXVhbHMoaW5wdXRDaGFuZ2VF
dmVudHMsIDAsCisgICAgICAiR2FtZXBhZCBidXR0b24gb3IgaW5wdXQgYXhpcyB2YWx1ZSBjaGFu
Z2VzIHNob3VsZCBub3QgZmlyZSBhbiBpbnB1dCBzb3VyY2UgY2hhbmdlIGV2ZW50LiIpOworICAg
IGlucHV0Q2hhbmdlRXZlbnRzKys7CisgIH0KKworICBzZXNzaW9uLmFkZEV2ZW50TGlzdGVuZXIo
J2lucHV0c291cmNlc2NoYW5nZScsIG9uSW5wdXRTb3VyY2VzQ2hhbmdlLCBmYWxzZSk7CisKKyAg
Ly8gQ3JlYXRlIG91ciBpbnB1dCBzb3VyY2UgYW5kIGltbWVkaWF0ZWx5IHRvZ2dsZSB0aGUgcHJp
bWFyeSBpbnB1dCBzbyB0aGF0CisgIC8vIGl0IGFwcGVhcnMgYXMgYWxyZWFkeSBuZWVkaW5nIHRv
IHNlbmQgYSBjbGljayBldmVudCB3aGVuIGl0IGFwcGVhcnMuCisgIGxldCBpbnB1dF9zb3VyY2Ug
PSBmYWtlRGV2aWNlQ29udHJvbGxlci5zaW11bGF0ZUlucHV0U291cmNlQ29ubmVjdGlvbih7Cisg
ICAgaGFuZGVkbmVzczogInJpZ2h0IiwKKyAgICB0YXJnZXRSYXlNb2RlOiAidHJhY2tlZC1wb2lu
dGVyIiwKKyAgICBwb2ludGVyT3JpZ2luOiBWQUxJRF9QT0lOVEVSX1RSQU5TRk9STSwKKyAgICBw
cm9maWxlczogW10sCisgICAgc3VwcG9ydGVkQnV0dG9uczogWworICAgICAgeworICAgICAgICBi
dXR0b25UeXBlOiAnZ3JpcCcsCisgICAgICAgIHByZXNzZWQ6IGZhbHNlLAorICAgICAgICB0b3Vj
aGVkOiBmYWxzZSwKKyAgICAgICAgcHJlc3NlZFZhbHVlOiAwCisgICAgICB9LAorICAgICAgewor
ICAgICAgICBidXR0b25UeXBlOiAndG91Y2hwYWQnLAorICAgICAgICBwcmVzc2VkOiBmYWxzZSwK
KyAgICAgICAgdG91Y2hlZDogZmFsc2UsCisgICAgICAgIHByZXNzZWRWYWx1ZTogMAorICAgICAg
fQorICAgIF0KKyAgfSk7CisKKyAgbGV0IGNhY2hlZF9pbnB1dF9zb3VyY2UgPSBudWxsOworICBs
ZXQgY2FjaGVkX2dhbWVwYWQgPSBudWxsOworCisgIGZ1bmN0aW9uIGFzc2VydFNhbWVPYmplY3Rz
KCkgeworICAgIGFzc2VydF9lcXVhbHMoc2Vzc2lvbi5pbnB1dFNvdXJjZXNbMF0sIGNhY2hlZF9p
bnB1dF9zb3VyY2UpOworICAgIGFzc2VydF9lcXVhbHMoY2FjaGVkX2lucHV0X3NvdXJjZS5nYW1l
cGFkLCBjYWNoZWRfZ2FtZXBhZCk7CisKKyAgICAvLyBBbHNvIG1ha2Ugc3VyZSB0aGF0IFdlYlhS
IGdhbWVwYWRzIGhhdmUgdGhlIGluZGV4IGFuZCBpZCB2YWx1ZXMgcmVxdWlyZWQKKyAgICAvLyBi
eSB0aGUgc3BlYy4KKyAgICBhc3NlcnRfZXF1YWxzKGNhY2hlZF9nYW1lcGFkLmluZGV4LCAtMSk7
CisgICAgYXNzZXJ0X2VxdWFscyhjYWNoZWRfZ2FtZXBhZC5pZCwgIiIpOworICB9CisKKyAgLy8g
SW5wdXQgZXZlbnRzIGFuZCBnYW1lcGFkIHN0YXRlIGNoYW5nZXMgKGJ1dHRvbiBwcmVzc2VzLCBh
eGlzIG1vdmVtZW50cykKKyAgLy8gbmVlZCBvbmUgZnJhbWUgdG8gcHJvcGFnYXRlLCBzbyB0aGlz
IGRvZXMgKGluIG9yZGVyIGFuZCBydW5uaW5nIGEgckFGIGFmdGVyCisgIC8vIGVhY2ggc3RlcCk6
CisgIC8vIDEpIFByZXNzIHRoZSBtb2NrIGdhbWVwYWQncyBidXR0b24gKHNvIHdlIGNhbiB2ZXJp
ZnkgdGhlIGJ1dHRvbiBwcmVzcyBtYWtlcworICAvLyAgICBpdHMgd2F5IHRvIHRoZSBXZWJYUiBn
YW1lcGFkIGFuZCB0aGF0IGl0IGRvZXMgbm90IGZpcmUgYW4KKyAgLy8gICAgaW5wdXRzb3VyY2Vz
Y2hhbmdlIGV2ZW50KS4KKyAgLy8gMikgVXBkYXRlIHRoZSBtb2NrIGdhbWVwYWQncyBpbnB1dCBh
eGVzIHZhbHVlcyAoc28gd2UgY2FuIHZlcmlmeSB0aGUKKyAgLy8gICAgdXBkYXRlZCB2YWx1ZXMg
bWFrZSB0aGVpciB3YXkgdG8gdGhlIFdlYlhSIGdhbWVwYWQgYW5kIHRoYXQgaXQgZG9lcyBub3QK
KyAgLy8gICAgZmlyZSBhbiBpbnB1dHNvdXJjZXNjaGFuZ2UgZXZlbnQpLgorICByZXR1cm4gbmV3
IFByb21pc2UoKHJlc29sdmUpID0+IHsKKyAgICBzZXNzaW9uLnJlcXVlc3RBbmltYXRpb25GcmFt
ZSgoKSA9PiB7CisgICAgICAvLyBNYWtlIHN1cmUgdGhlIGV4cG9zZWQgZ2FtZXBhZCBoYXMgdGhl
IG51bWJlciBvZiBidXR0b25zIGFuZCBheGVzIHdlCisgICAgICAvLyByZXF1ZXN0ZWQuCisgICAg
ICAvLyAzIEJ1dHRvbnM6IHRyaWdnZXIsIGdyaXAsIHRvdWNocGFkCisgICAgICAvLyAyIEF4ZXMg
ZnJvbSB0aGUgdG91Y2hwYWQKKyAgICAgIGNhY2hlZF9pbnB1dF9zb3VyY2UgPSBzZXNzaW9uLmlu
cHV0U291cmNlc1swXTsKKyAgICAgIGNhY2hlZF9nYW1lcGFkID0gY2FjaGVkX2lucHV0X3NvdXJj
ZS5nYW1lcGFkOworICAgICAgdC5zdGVwKCgpID0+IHsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhj
YWNoZWRfZ2FtZXBhZC5pbmRleCwgLTEpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGNhY2hlZF9n
YW1lcGFkLmlkLCAiIik7CisgICAgICAgIGFzc2VydF9lcXVhbHMoY2FjaGVkX2dhbWVwYWQuYnV0
dG9ucy5sZW5ndGgsIDMpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGNhY2hlZF9nYW1lcGFkLmF4
ZXMubGVuZ3RoLCAyKTsKKyAgICAgICAgLy8gSW5pdGlhbGx5LCB0aGUgYnV0dG9uIHNob3VsZCBu
b3QgYmUgcHJlc3NlZCBhbmQgdGhlIGF4ZXMgdmFsdWVzIHNob3VsZAorICAgICAgICAvLyBiZSBz
ZXQgdG8gMC4KKyAgICAgICAgYXNzZXJ0X2ZhbHNlKGNhY2hlZF9nYW1lcGFkLmJ1dHRvbnNbMV0u
cHJlc3NlZCk7CisgICAgICAgIGFzc2VydF9lcXVhbHMoY2FjaGVkX2dhbWVwYWQuYXhlc1swXSwg
MCk7CisgICAgICAgIGFzc2VydF9lcXVhbHMoY2FjaGVkX2dhbWVwYWQuYXhlc1sxXSwgMCk7Cisg
ICAgICB9LCAiVmVyaWZ5IGluaXRpYWwgc3RhdGUiKTsKKyAgICAgIC8vIFNpbXVsYXRlIGJ1dHRv
biBwcmVzcy4KKyAgICAgIGlucHV0X3NvdXJjZS51cGRhdGVCdXR0b25TdGF0ZSh7CisgICAgICAg
IGJ1dHRvblR5cGU6ICdncmlwJywKKyAgICAgICAgcHJlc3NlZDogdHJ1ZSwKKyAgICAgICAgdG91
Y2hlZDogdHJ1ZSwKKyAgICAgICAgdmFsdWU6IDEuMAorICAgICAgfSk7CisgICAgICBzZXNzaW9u
LnJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7CisgICAgICAgIHQuc3RlcCgoKSA9PiB7Cisg
ICAgICAgICAgYXNzZXJ0U2FtZU9iamVjdHMoKTsKKyAgICAgICAgICBhc3NlcnRfdHJ1ZShjYWNo
ZWRfZ2FtZXBhZC5idXR0b25zWzFdLnByZXNzZWQpOworICAgICAgICB9LCAiR2FtZXBhZCBpcyB1
cGRhdGVkIGluIHBsYWNlIHdoZW4gYSBidXR0b24gaXMgcHJlc3NlZCIpOworCisgICAgICAgIC8v
IFNpbXVsYXRlIGlucHV0IGF4ZXMgbW92ZW1lbnQuCisgICAgICAgIGlucHV0X3NvdXJjZS51cGRh
dGVCdXR0b25TdGF0ZSh7CisgICAgICAgICAgYnV0dG9uVHlwZTogJ3RvdWNocGFkJywKKyAgICAg
ICAgICBwcmVzc2VkOiBmYWxzZSwKKyAgICAgICAgICB0b3VjaGVkOiB0cnVlLAorICAgICAgICAg
IHZhbHVlOiAwLAorICAgICAgICAgIHhWYWx1ZTogMC41LAorICAgICAgICAgIHlWYWx1ZTogLTAu
NQorICAgICAgICB9KTsKKyAgICAgICAgc2Vzc2lvbi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkg
PT4geworICAgICAgICAgIC8vIElucHV0IHNvdXJjZSBhbmQgZ2FtZXBhZCBzaG91bGQgbm90IGJl
IHJlLWNyZWF0ZWQuIFRoZXkgc2hvdWxkIGJlCisgICAgICAgICAgLy8gdXBkYXRlZCBpbiBwbGFj
ZSB3aGVuIGlucHV0IGF4ZXMgdmFsdWVzIGNoYW5nZS4KKyAgICAgICAgICB0LnN0ZXAoKCkgPT4g
eworICAgICAgICAgICAgYXNzZXJ0U2FtZU9iamVjdHMoKTsKKyAgICAgICAgICAgIGFzc2VydF9l
cXVhbHMoY2FjaGVkX2dhbWVwYWQuYXhlc1swXSwgMC41KTsKKyAgICAgICAgICAgIGFzc2VydF9l
cXVhbHMoY2FjaGVkX2dhbWVwYWQuYXhlc1sxXSwgLTAuNSk7CisgICAgICAgICAgICAvLyBCdXR0
b24gdGhhdCB3YXMgcHJlc3NlZCBsYXN0IGZyYW1lIHNob3VsZCBzdGlsbCBiZSBwcmVzc2VkLgor
ICAgICAgICAgICAgYXNzZXJ0X3RydWUoY2FjaGVkX2dhbWVwYWQuYnV0dG9uc1sxXS5wcmVzc2Vk
KTsKKyAgICAgICAgICB9LCAiR2FtZXBhZCBpcyB1cGRhdGVkIGluIHBsYWNlIHdoZW4gYXhlcyB2
YWx1ZXMgY2hhbmdlIik7CisgICAgICAgICAgcmVzb2x2ZSgpOworICAgICAgICB9KTsKKyAgICAg
IH0pOworICAgIH0pOworICB9KTsKK307CisKK3hyX3Nlc3Npb25fcHJvbWlzZV90ZXN0KAorICB0
ZXN0TmFtZSwgdGVzdEZ1bmN0aW9uLCBmYWtlRGV2aWNlSW5pdFBhcmFtcywgJ2ltbWVyc2l2ZS12
cicpOworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dlYnhyL2dldElucHV0UG9zZV9oYW5kZWRuZXNzLmh0dHBzLmh0bWwg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL2dldElu
cHV0UG9zZV9oYW5kZWRuZXNzLmh0dHBzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWEzMTBjNmRkNzcyNzQ2
MzFkMGVmOWU3NTFjNmYxOTVkZWY5YzNkMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvZ2V0SW5wdXRQb3NlX2hhbmRl
ZG5lc3MuaHR0cHMuaHRtbApAQCAtMCwwICsxLDg0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxzY3Jp
cHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvd2VieHJfdXRpbC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL3dlYnhyX3Rlc3RfY29uc3RhbnRzLmpzIj48L3NjcmlwdD4KKzxjYW52YXMgaWQ9IndlYmds
LWNhbnZhcyI+PC9jYW52YXM+CisKKzxzY3JpcHQ+CisKK2xldCB0ZXN0TmFtZSA9ICJYUklucHV0
U291cmNlcyBwcm9wZXJseSBjb21tdW5pY2F0ZSB0aGVpciBoYW5kZWRuZXNzIjsKKworbGV0IGZh
a2VEZXZpY2VJbml0UGFyYW1zID0gVFJBQ0tFRF9JTU1FUlNJVkVfREVWSUNFOworCitsZXQgdGVz
dEZ1bmN0aW9uID0KKyAgKHNlc3Npb24sIGZha2VEZXZpY2VDb250cm9sbGVyLCB0KSA9PiBuZXcg
UHJvbWlzZSgocmVzb2x2ZSkgPT4geworICAgIGxldCBpbnB1dF9zb3VyY2UgPSBmYWtlRGV2aWNl
Q29udHJvbGxlci5zaW11bGF0ZUlucHV0U291cmNlQ29ubmVjdGlvbih7CisgICAgICBoYW5kZWRu
ZXNzOiAibm9uZSIsCisgICAgICB0YXJnZXRSYXlNb2RlOiAidHJhY2tlZC1wb2ludGVyIiwKKyAg
ICAgIHBvaW50ZXJPcmlnaW46IFZBTElEX1BPSU5URVJfVFJBTlNGT1JNLAorICAgICAgcHJvZmls
ZXM6IFtdCisgICAgfSk7CisKKyAgICBmdW5jdGlvbiBDaGVja05vbmUodGltZSwgeHJGcmFtZSkg
eworICAgICAgbGV0IHNvdXJjZSA9IHNlc3Npb24uaW5wdXRTb3VyY2VzWzBdOworCisgICAgICB0
LnN0ZXAoICgpID0+IHsKKyAgICAgICAgYXNzZXJ0X25vdF9lcXVhbHMoc291cmNlLCBudWxsKTsK
KyAgICAgICAgLy8gSGFuZGVkbmVzcyBzaG91bGQgYmUgIm5vbmUiIGJ5IGRlZmF1bHQuCisgICAg
ICAgIGFzc2VydF9lcXVhbHMoc291cmNlLmhhbmRlZG5lc3MsICJub25lIik7CisgICAgICB9KTsK
KworICAgICAgaW5wdXRfc291cmNlLnNldEhhbmRlZG5lc3MoInJpZ2h0Iik7CisKKyAgICAgIHNl
c3Npb24ucmVxdWVzdEFuaW1hdGlvbkZyYW1lKENoZWNrUmlnaHQpOworICAgIH0KKworICAgIGZ1
bmN0aW9uIENoZWNrUmlnaHQodGltZSwgeHJGcmFtZSkgeworICAgICAgbGV0IHNvdXJjZSA9IHNl
c3Npb24uaW5wdXRTb3VyY2VzWzBdOworCisgICAgICB0LnN0ZXAoICgpID0+IHsKKyAgICAgICAg
YXNzZXJ0X25vdF9lcXVhbHMoc291cmNlLCBudWxsKTsKKyAgICAgICAgLy8gSGFuZGVkbmVzcyB3
YXMgc2V0IHRvICJyaWdodCIsIG1ha2Ugc3VyZSBpdCBwcm9wZWdhdGVzLgorICAgICAgICBhc3Nl
cnRfZXF1YWxzKHNvdXJjZS5oYW5kZWRuZXNzLCAicmlnaHQiKTsKKyAgICAgIH0pOworCisgICAg
ICBpbnB1dF9zb3VyY2Uuc2V0SGFuZGVkbmVzcygibGVmdCIpOworCisgICAgICBzZXNzaW9uLnJl
cXVlc3RBbmltYXRpb25GcmFtZShDaGVja0xlZnQpOworICAgIH0KKworICAgIGZ1bmN0aW9uIENo
ZWNrTGVmdCh0aW1lLCB4ckZyYW1lKSB7CisgICAgICBsZXQgc291cmNlID0gc2Vzc2lvbi5pbnB1
dFNvdXJjZXNbMF07CisKKyAgICAgIHQuc3RlcCggKCkgPT4geworICAgICAgICBhc3NlcnRfbm90
X2VxdWFscyhzb3VyY2UsIG51bGwpOworICAgICAgICAvLyBIYW5kZWRuZXNzIHdhcyBzZXQgdG8g
ImxlZnQiLCBtYWtlIHN1cmUgaXQgcHJvcGVnYXRlcy4KKyAgICAgICAgYXNzZXJ0X2VxdWFscyhz
b3VyY2UuaGFuZGVkbmVzcywgImxlZnQiKTsKKyAgICAgIH0pOworCisgICAgICBpbnB1dF9zb3Vy
Y2Uuc2V0SGFuZGVkbmVzcygibm9uZSIpOworCisgICAgICBzZXNzaW9uLnJlcXVlc3RBbmltYXRp
b25GcmFtZShDaGVja05vbmVBZ2Fpbik7CisgICAgfQorCisgICAgZnVuY3Rpb24gQ2hlY2tOb25l
QWdhaW4odGltZSwgeHJGcmFtZSkgeworICAgICAgbGV0IHNvdXJjZSA9IHNlc3Npb24uaW5wdXRT
b3VyY2VzWzBdOworCisgICAgICB0LnN0ZXAoICgpID0+IHsKKyAgICAgICAgYXNzZXJ0X25vdF9l
cXVhbHMoc291cmNlLCBudWxsKTsKKyAgICAgICAgLy8gSGFuZGVkbmVzcyB3YXMgc2V0IHRvICJu
b25lIiBhZ2FpbiwgbWFrZSBzdXJlIGl0IHByb3BlZ2F0ZXMuCisgICAgICAgIGFzc2VydF9lcXVh
bHMoc291cmNlLmhhbmRlZG5lc3MsICJub25lIik7CisgICAgICB9KTsKKworICAgICAgcmVzb2x2
ZSgpOworICAgIH0KKworICAgIC8vIEhhbmRlZG5lc3Mgb25seSB1cGRhdGVzIGR1cmluZyBhbiBY
UiBmcmFtZS4KKyAgICBzZXNzaW9uLnJlcXVlc3RBbmltYXRpb25GcmFtZShDaGVja05vbmUpOwor
ICB9KTsKKworeHJfc2Vzc2lvbl9wcm9taXNlX3Rlc3QoCisgIHRlc3ROYW1lLCB0ZXN0RnVuY3Rp
b24sIGZha2VEZXZpY2VJbml0UGFyYW1zLCAnaW1tZXJzaXZlLXZyJyk7CisKKzwvc2NyaXB0Pgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
ZWJ4ci9nZXRJbnB1dFBvc2VfcG9pbnRlci5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9nZXRJbnB1dFBvc2VfcG9pbnRlci5odHRw
cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmM4NTQ1OTk5MDgwODkyNzAxODU4YjQyNWQ4MTQxYWUwZDNiM2M0
NjkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dlYnhyL2dldElucHV0UG9zZV9wb2ludGVyLmh0dHBzLmh0bWwKQEAgLTAsMCAr
MSw5OCBAQAorPCFET0NUWVBFIGh0bWw+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFy
bmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3Jl
cG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3dlYnhyX3V0aWwuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy93ZWJ4cl90ZXN0X2NvbnN0YW50cy5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3dlYnhyX3Rlc3RfYXNzZXJ0cy5q
cyI+PC9zY3JpcHQ+Cis8Y2FudmFzIGlkPSJ3ZWJnbC1jYW52YXMiPjwvY2FudmFzPgorCis8c2Ny
aXB0PgorCitsZXQgdGVzdE5hbWUgPSAiWFJJbnB1dFNvdXJjZXMgd2l0aCBhIHRhcmdldCByYXkg
bW9kZSBvZiAndHJhY2tlZC1wb2ludGVyJyAiCisgICsgInByb3Blcmx5IGNvbW11bmljYXRlIHRo
ZWlyIHBvc2VzIjsKKworbGV0IGZha2VEZXZpY2VJbml0UGFyYW1zID0gVFJBQ0tFRF9JTU1FUlNJ
VkVfREVWSUNFOworCitsZXQgdGVzdEZ1bmN0aW9uID0KKyAgKHNlc3Npb24sIGZha2VEZXZpY2VD
b250cm9sbGVyLCB0KSA9PiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4geworICAgIGxldCBpbnB1
dF9zb3VyY2UgPSBmYWtlRGV2aWNlQ29udHJvbGxlci5zaW11bGF0ZUlucHV0U291cmNlQ29ubmVj
dGlvbih7CisgICAgICBoYW5kZWRuZXNzOiAicmlnaHQiLAorICAgICAgdGFyZ2V0UmF5TW9kZTog
InRyYWNrZWQtcG9pbnRlciIsCisgICAgICBwb2ludGVyT3JpZ2luOiBJREVOVElUWV9UUkFOU0ZP
Uk0sCisgICAgICBwcm9maWxlczogW10KKyAgICB9KTsKKworICAgIC8vIERvbid0IHNldCBhIGdy
aXAgbWF0cml4IHlldAorCisgICAgLy8gTXVzdCBoYXZlIGEgcmVmZXJlbmNlIHNwYWNlIHRvIGdl
dCBpbnB1dCBwb3Nlcy4gZXllLWxldmVsIGRvZXNuJ3QgYXBwbHkKKyAgICAvLyBhbnkgdHJhbnNm
b3JtcyB0byB0aGUgZ2l2ZW4gbWF0cml4LgorICAgIHNlc3Npb24ucmVxdWVzdFJlZmVyZW5jZVNw
YWNlKCdsb2NhbCcpLnRoZW4oIChyZWZlcmVuY2VTcGFjZSkgPT4geworCisgICAgICBmdW5jdGlv
biBDaGVja0ludmFsaWRHcmlwKHRpbWUsIHhyRnJhbWUpIHsKKyAgICAgICAgbGV0IHNvdXJjZSA9
IHNlc3Npb24uaW5wdXRTb3VyY2VzWzBdOworICAgICAgICBsZXQgZ3JpcF9wb3NlID0geHJGcmFt
ZS5nZXRQb3NlKHNvdXJjZS5ncmlwU3BhY2UsIHJlZmVyZW5jZVNwYWNlKTsKKworICAgICAgICB0
LnN0ZXAoICgpID0+IHsKKyAgICAgICAgICAvLyBUaGUgaW5wdXQgcG9zZSBzaG91bGQgYmUgbnVs
bCB3aGVuIG5vIGdyaXAgbWF0cml4IGlzIHByb3ZpZGVkLgorICAgICAgICAgIGFzc2VydF9lcXVh
bHMoc291cmNlLnRhcmdldFJheU1vZGUsICJ0cmFja2VkLXBvaW50ZXIiKTsKKyAgICAgICAgICBh
c3NlcnRfZXF1YWxzKGdyaXBfcG9zZSwgbnVsbCk7CisgICAgICAgIH0pOworCisgICAgICAgIGlu
cHV0X3NvdXJjZS5zZXRHcmlwT3JpZ2luKFZBTElEX0dSSVBfVFJBTlNGT1JNKTsKKworICAgICAg
ICBzZXNzaW9uLnJlcXVlc3RBbmltYXRpb25GcmFtZShDaGVja1ZhbGlkR3JpcCk7CisgICAgICB9
CisKKyAgICAgIGZ1bmN0aW9uIENoZWNrVmFsaWRHcmlwKHRpbWUsIHhyRnJhbWUpIHsKKyAgICAg
ICAgbGV0IHNvdXJjZSA9IHNlc3Npb24uaW5wdXRTb3VyY2VzWzBdOworCisgICAgICAgIGxldCBn
cmlwX3Bvc2UgPSB4ckZyYW1lLmdldFBvc2Uoc291cmNlLmdyaXBTcGFjZSwgcmVmZXJlbmNlU3Bh
Y2UpOworCisgICAgICAgIGxldCBpbnB1dF9wb3NlID0geHJGcmFtZS5nZXRQb3NlKHNvdXJjZS50
YXJnZXRSYXlTcGFjZSwgcmVmZXJlbmNlU3BhY2UpOworCisgICAgICAgIHQuc3RlcCggKCkgPT4g
eworICAgICAgICAgIC8vIFdoZW4gYSBncmlwIG1hdHJpeCBpcyBwcmVzZW50IGJ1dCBubyBwb2lu
dGVyIG9mZnNldCBpcyBzcGVjaWZpZWQsCisgICAgICAgICAgLy8gdGhlIGdyaXAgYW5kIHBvaW50
ZXIgbWF0cmljZXMgc2hvdWxkIGJlIHRoZSBzYW1lLgorICAgICAgICAgIGFzc2VydF9ub3RfZXF1
YWxzKGdyaXBfcG9zZSwgbnVsbCk7CisgICAgICAgICAgYXNzZXJ0X21hdHJpeF9hcHByb3hfZXF1
YWxzKGdyaXBfcG9zZS50cmFuc2Zvcm0ubWF0cml4LCBWQUxJRF9HUklQLAorICAgICAgICAgICAg
RkxPQVRfRVBTSUxPTiwgIkdyaXAgbWF0cml4IGlzIG5vdCBlcXVhbCB0byBpbnB1dC4iKTsKKyAg
ICAgICAgICBhc3NlcnRfbWF0cml4X2FwcHJveF9lcXVhbHMoaW5wdXRfcG9zZS50cmFuc2Zvcm0u
bWF0cml4LAorICAgICAgICAgICAgZ3JpcF9wb3NlLnRyYW5zZm9ybS5tYXRyaXgsIEZMT0FUX0VQ
U0lMT04sCisgICAgICAgICAgICAiR3JpcCBtYXRyaXggaXMgbm90IGVxdWFsIHRvIHRhcmdldCBy
YXkgbWF0cml4LiIpOworICAgICAgICB9KTsKKworICAgICAgICBpbnB1dF9zb3VyY2Uuc2V0UG9p
bnRlck9yaWdpbihWQUxJRF9QT0lOVEVSX1RSQU5TRk9STSk7CisKKyAgICAgICAgc2Vzc2lvbi5y
ZXF1ZXN0QW5pbWF0aW9uRnJhbWUoQ2hlY2tWYWxpZEdyaXBBbmRQb2ludGVyKTsKKyAgICAgIH0K
KworICAgICAgZnVuY3Rpb24gQ2hlY2tWYWxpZEdyaXBBbmRQb2ludGVyKHRpbWUsIHhyRnJhbWUp
IHsKKyAgICAgICAgbGV0IHNvdXJjZSA9IHNlc3Npb24uaW5wdXRTb3VyY2VzWzBdOworCisgICAg
ICAgIGxldCBncmlwX3Bvc2UgPSB4ckZyYW1lLmdldFBvc2Uoc291cmNlLmdyaXBTcGFjZSwgcmVm
ZXJlbmNlU3BhY2UpOworICAgICAgICBsZXQgaW5wdXRfcG9zZSA9IHhyRnJhbWUuZ2V0UG9zZShz
b3VyY2UudGFyZ2V0UmF5U3BhY2UsIHJlZmVyZW5jZVNwYWNlKTsKKworICAgICAgICB0LnN0ZXAo
ICgpID0+IHsKKyAgICAgICAgICAvLyBXaGVuIGEgZ3JpcCBtYXRyaXggYW5kIHBvaW50ZXIgb2Zm
c2V0IGFyZSBzcGVjaWZpZWQsCisgICAgICAgICAgLy8gcG9pbnRlciBtYXRyaXggc2hvdWxkIGJl
IGdyaXAgbWF0cml4IG11bHRpcGxpZWQgd2l0aCB0aGUgcG9pbnRlcgorICAgICAgICAgIC8vIG9m
ZnNldC4KKyAgICAgICAgICBhc3NlcnRfbm90X2VxdWFscyhncmlwX3Bvc2UsIG51bGwpOworICAg
ICAgICAgIGFzc2VydF9tYXRyaXhfYXBwcm94X2VxdWFscyhncmlwX3Bvc2UudHJhbnNmb3JtLm1h
dHJpeCwgVkFMSURfR1JJUCwKKyAgICAgICAgICAgIEZMT0FUX0VQU0lMT04sICJHcmlwIG1hdHJp
eCBpcyBub3QgZXF1YWwgdG8gaW5wdXQgdmFsaWQgZ3JpcC4iKTsKKyAgICAgICAgICBhc3NlcnRf
bWF0cml4X2FwcHJveF9lcXVhbHMoaW5wdXRfcG9zZS50cmFuc2Zvcm0ubWF0cml4LAorICAgICAg
ICAgICAgVkFMSURfR1JJUF9XSVRIX1BPSU5URVJfT0ZGU0VULCBGTE9BVF9FUFNJTE9OLAorICAg
ICAgICAgICAgIkdyaXAgbWF0cml4IG5vdCBtdWx0aXBsZWQgcHJvcGVybHkuIik7CisgICAgICAg
IH0pOworCisgICAgICAgIHJlc29sdmUoKTsKKyAgICAgIH0KKworICAgICAgLy8gQ2FuIG9ubHkg
cmVxdWVzdCBpbnB1dCBwb3NlcyBpbiBhbiB4ciBmcmFtZS4KKyAgICAgIHNlc3Npb24ucmVxdWVz
dEFuaW1hdGlvbkZyYW1lKENoZWNrSW52YWxpZEdyaXApOworICAgIH0pOworICB9KTsKKworeHJf
c2Vzc2lvbl9wcm9taXNlX3Rlc3QoCisgIHRlc3ROYW1lLCB0ZXN0RnVuY3Rpb24sIGZha2VEZXZp
Y2VJbml0UGFyYW1zLCAnaW1tZXJzaXZlLXZyJyk7CisKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9nZXRWaWV3
ZXJQb3NlX2VtdWxhdGVkUG9zaXRpb24uaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvZ2V0Vmlld2VyUG9zZV9lbXVsYXRlZFBvc2l0
aW9uLmh0dHBzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjAxYTliNzIyMDhmYWU0ZjY0ZGVkODA4MmI3YmEx
MTAwMDUxNzMxMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvZ2V0Vmlld2VyUG9zZV9lbXVsYXRlZFBvc2l0aW9uLmh0
dHBzLmh0bWwKQEAgLTAsMCArMSw1MSBAQAorPCFET0NUWVBFIGh0bWw+Cis8Ym9keT4KKyAgPHNj
cmlwdCBzcmM9L3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcz48L3NjcmlwdD4KKyAgPHNjcmlwdCBz
cmM9L3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcz48L3NjcmlwdD4KKyAgPHNjcmlwdCBz
cmM9InJlc291cmNlcy93ZWJ4cl91dGlsLmpzIj48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9InJl
c291cmNlcy93ZWJ4cl90ZXN0X2NvbnN0YW50cy5qcyI+PC9zY3JpcHQ+CisgIDxjYW52YXM+PC9j
YW52YXM+CisKKyAgPHNjcmlwdD4KKworICAgIGxldCB0ZXN0TmFtZSA9ICJYUkZyYW1lIGdldFZp
ZXdlclBvc2UgaGFzIGVtdWxhdGVkUG9zaXRpb24gc2V0IHByb3Blcmx5LiI7CisKKyAgICBjb25z
dCBwb3NlVHJhbnNmb3JtID0geworICAgICAgICBwb3NpdGlvbjogWzEsIDEsIDFdLAorICAgICAg
ICBvcmllbnRhdGlvbjogWzAuNSwgMC41LCAwLjUsIDAuNV0KKyAgICB9OworCisgICAgbGV0IHRl
c3RGdW5jdGlvbiA9IGZ1bmN0aW9uKHNlc3Npb24sIGZha2VEZXZpY2VDb250cm9sbGVyLCB0KSB7
CisgICAgICByZXR1cm4gc2Vzc2lvbi5yZXF1ZXN0UmVmZXJlbmNlU3BhY2UoJ2xvY2FsJykKKyAg
ICAgICAgLnRoZW4oKHJlZmVyZW5jZVNwYWNlKSA9PiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVq
ZWN0KSA9PiB7CisgICAgICAgICAgZnVuY3Rpb24gQ2hlY2tQb3NpdGlvbk5vdEVtdWxhdGVkKHRp
bWUsIHZyRnJhbWUpeworICAgICAgICAgICAgdC5zdGVwKCgpID0+IHsKKyAgICAgICAgICAgICAg
bGV0IHBvc2UgPSB2ckZyYW1lLmdldFZpZXdlclBvc2UocmVmZXJlbmNlU3BhY2UpOworICAgICAg
ICAgICAgICBhc3NlcnRfbm90X2VxdWFscyhwb3NlLCBudWxsKTsKKyAgICAgICAgICAgICAgYXNz
ZXJ0X2VxdWFscyhwb3NlLmVtdWxhdGVkUG9zaXRpb24sIGZhbHNlKTsKKyAgICAgICAgICAgICAg
ZmFrZURldmljZUNvbnRyb2xsZXIuc2V0Vmlld2VyT3JpZ2luKHBvc2VUcmFuc2Zvcm0sIHRydWUp
OworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIHNlc3Npb24ucmVxdWVzdEFuaW1hdGlv
bkZyYW1lKENoZWNrUG9zaXRpb25FbXVsYXRlZCk7CisgICAgICAgICAgfQorCisgICAgICAgICAg
ZnVuY3Rpb24gQ2hlY2tQb3NpdGlvbkVtdWxhdGVkKHRpbWUsIHZyRnJhbWUpIHsKKyAgICAgICAg
ICAgIHQuc3RlcCgoKSA9PiB7CisgICAgICAgICAgICAgIGxldCBwb3NlID0gdnJGcmFtZS5nZXRW
aWV3ZXJQb3NlKHJlZmVyZW5jZVNwYWNlKTsKKyAgICAgICAgICAgICAgYXNzZXJ0X25vdF9lcXVh
bHMocG9zZSwgbnVsbCk7CisgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocG9zZS5lbXVsYXRl
ZFBvc2l0aW9uLCB0cnVlKTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICAvLyBGaW5p
c2hlZC4KKyAgICAgICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAgICB9CisKKyAgICAgICAgICBz
ZXNzaW9uLnJlcXVlc3RBbmltYXRpb25GcmFtZShDaGVja1Bvc2l0aW9uTm90RW11bGF0ZWQpOwor
ICAgICAgICB9KSk7CisgICAgfTsKKworICAgIHhyX3Nlc3Npb25fcHJvbWlzZV90ZXN0KHRlc3RO
YW1lLCB0ZXN0RnVuY3Rpb24sCisgICAgICBUUkFDS0VEX0lNTUVSU0lWRV9ERVZJQ0UsICdpbW1l
cnNpdmUtdnInKTsKKworICA8L3NjcmlwdD4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvaGl0LXRlc3QvYXJfaGl0
dGVzdF9zdWJzY3JpcHRpb25fcmVmU3BhY2VzLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL2hpdC10ZXN0L2FyX2hpdHRlc3Rfc3Vi
c2NyaXB0aW9uX3JlZlNwYWNlcy5odHRwcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQxY2UzMTU0ZTZjZTk2
N2YwZWQ4ODIyZTRiODJkYWI2YWVhZDdkZDMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL2hpdC10ZXN0L2FyX2hpdHRl
c3Rfc3Vic2NyaXB0aW9uX3JlZlNwYWNlcy5odHRwcy5odG1sCkBAIC0wLDAgKzEsMTU4IEBACis8
IURPQ1RZUEUgaHRtbD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvd2VieHJfdXRpbC5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3dlYnhyX3Rlc3RfYXNzZXJ0cy5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3dlYnhyX3Rlc3RfY29uc3RhbnRzLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvd2VieHJfdGVzdF9jb25zdGFu
dHNfZmFrZV93b3JsZC5qcyI+PC9zY3JpcHQ+Cis8Y2FudmFzIC8+CisKKzxzY3JpcHQ+CisKKy8v
IDFtIGFib3ZlIHdvcmxkIG9yaWdpbi4KK2NvbnN0IFZJRVdFUl9PUklHSU5fVFJBTlNGT1JNID0g
eworICBwb3NpdGlvbjogWzAsIDEsIDBdLAorICBvcmllbnRhdGlvbjogWzAsIDAsIDAsIDFdLAor
fTsKKworLy8gMC4yNW0gYWJvdmUgd29ybGQgb3JpZ2luLgorY29uc3QgRkxPT1JfT1JJR0lOX1RS
QU5TRk9STSA9IHsKKyAgcG9zaXRpb246IFswLCAtMC4yNSwgMF0sCisgIG9yaWVudGF0aW9uOiBb
MCwgMCwgMCwgMV0sCit9OworCitjb25zdCBmYWtlRGV2aWNlSW5pdFBhcmFtcyA9IHsKKyAgc3Vw
cG9ydGVkTW9kZXM6IFsiaW1tZXJzaXZlLWFyIl0sCisgIHZpZXdzOiBWQUxJRF9WSUVXUywKKyAg
Zmxvb3JPcmlnaW46IEZMT09SX09SSUdJTl9UUkFOU0ZPUk0sICAgIC8vIGFrYSBmbG9vcl9mcm9t
X21vam8KKyAgdmlld2VyT3JpZ2luOiBWSUVXRVJfT1JJR0lOX1RSQU5TRk9STSwgIC8vIGFrYSBt
b2pvX2Zyb21fdmlld2VyCisgIHN1cHBvcnRlZEZlYXR1cmVzOiBBTExfRkVBVFVSRVMsCisgIHdv
cmxkOiBjcmVhdGVGYWtlV29ybGQoNS4wLCAyLjAsIDUuMCksICAvLyB3ZWJ4cl90ZXN0X2NvbnN0
YW50c19mYWtlX3dvcmxkLmpzIGhhcyBkZXRhaWxlZCBkZXNjcmlwdGlvbiBvZiB0aGUgZmFrZSB3
b3JsZAorfTsKKworLy8gR2VuZXJhdGVzIGEgdGVzdCBmdW5jdGlvbiBnaXZlbiB0aGUgcGFyYW1l
dGVycyBmb3IgdGhlIGhpdCB0ZXN0LgorLy8gfHJheXwgLSByYXkgdGhhdCB3aWxsIGJlIHVzZWQg
dG8gc3Vic2NyaWJlIHRvIGhpdCB0ZXN0LgorLy8gfGV4cGVjdGVkUG9zZXN8IC0gYXJyYXkgb2Yg
ZXhwZWN0ZWQgcG9zZSBvYmplY3RzLiBUaGUgcG9zZXMgYXJlIGV4cGVjdGVkIHRvIGJlIGV4cHJl
c3NlZCBpbiBsb2NhbCBzcGFjZS4KKy8vICAgICAgICAgICAgICAgICAgIE51bGwgZW50cmllcyBp
biB0aGUgYXJyYXkgbWVhbiB0aGF0IHRoZSBnaXZlbiBlbnRyeSB3aWxsIG5vdCBiZSB2YWxpZGF0
ZWQuCisvLyB8cmVmU3BhY2VOYW1lfCAtIFhSUmVmZXJlbmNlU3BhY2VUeXBlIC0gZWl0aGVyICds
b2NhbCcsICdsb2NhbC1mbG9vcicgb3IgJ3ZpZXdlcicuCitsZXQgdGVzdEZ1bmN0aW9uR2VuZXJh
dG9yID0gZnVuY3Rpb24ocmF5LCBleHBlY3RlZFBvc2VzLCByZWZTcGFjZU5hbWUpIHsKKyAgY29u
c3QgdGVzdEZ1bmN0aW9uID0gZnVuY3Rpb24oc2Vzc2lvbiwgZmFrZURldmljZUNvbnRyb2xsZXIs
IHQpIHsKKyAgICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgICAgc2Vzc2lvbi5yZXF1ZXN0UmVm
ZXJlbmNlU3BhY2UoJ2xvY2FsJyksCisgICAgICBzZXNzaW9uLnJlcXVlc3RSZWZlcmVuY2VTcGFj
ZSgndmlld2VyJyksCisgICAgICBzZXNzaW9uLnJlcXVlc3RSZWZlcmVuY2VTcGFjZSgnbG9jYWwt
Zmxvb3InKSwKKyAgICBdKS50aGVuKChbbG9jYWxSZWZTcGFjZSwgdmlld2VyUmVmU3BhY2UsIGxv
Y2FsRmxvb3JSZWZTcGFjZV0pID0+IHsKKworICAgICAgY29uc3QgcmVmU3BhY2VOYW1lVG9TcGFj
ZSA9IHsKKyAgICAgICAgJ2xvY2FsJyA6IGxvY2FsUmVmU3BhY2UsCisgICAgICAgICd2aWV3ZXIn
IDogdmlld2VyUmVmU3BhY2UsCisgICAgICAgICdsb2NhbC1mbG9vcicgOiBsb2NhbEZsb29yUmVm
U3BhY2UKKyAgICAgIH07CisKKyAgICAgIGNvbnN0IGhpdFRlc3RPcHRpb25zSW5pdCA9IHsKKyAg
ICAgICAgc3BhY2U6IHJlZlNwYWNlTmFtZVRvU3BhY2VbcmVmU3BhY2VOYW1lXSwKKyAgICAgICAg
b2Zmc2V0UmF5OiByYXksCisgICAgICB9OworCisgICAgICByZXR1cm4gc2Vzc2lvbi5yZXF1ZXN0
SGl0VGVzdFNvdXJjZShoaXRUZXN0T3B0aW9uc0luaXQpLnRoZW4oCisgICAgICAgIChoaXRUZXN0
U291cmNlKSA9PiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CisKKyAgICAgICAg
Y29uc3QgcmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2sgPSBmdW5jdGlvbih0aW1lLCBmcmFt
ZSkgeworICAgICAgICAgIGNvbnN0IGhpdFRlc3RSZXN1bHRzID0gZnJhbWUuZ2V0SGl0VGVzdFJl
c3VsdHMoaGl0VGVzdFNvdXJjZSk7CisKKyAgICAgICAgICB0LnN0ZXAoKCkgPT4geworICAgICAg
ICAgICAgYXNzZXJ0X2VxdWFscyhoaXRUZXN0UmVzdWx0cy5sZW5ndGgsIGV4cGVjdGVkUG9zZXMu
bGVuZ3RoLCAiUmVzdWx0cyBsZW5ndGggc2hvdWxkIG1hdGNoIGV4cGVjdGVkIHJlc3VsdHMgbGVu
Z3RoIik7CisgICAgICAgICAgICBmb3IoY29uc3QgW2luZGV4LCBleHBlY3RlZFBvc2VdIG9mIGV4
cGVjdGVkUG9zZXMuZW50cmllcygpKSB7CisgICAgICAgICAgICAgIGNvbnN0IHBvc2UgPSBoaXRU
ZXN0UmVzdWx0c1tpbmRleF0uZ2V0UG9zZShsb2NhbFJlZlNwYWNlKTsKKyAgICAgICAgICAgICAg
YXNzZXJ0X3RydWUocG9zZSAhPSBudWxsLCAiRWFjaCBoaXQgdGVzdCByZXN1bHQgc2hvdWxkIGhh
dmUgYSBwb3NlIGluIHZpZXdlciBzcGFjZSIpOworICAgICAgICAgICAgICBpZihleHBlY3RlZFBv
c2UgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIGFzc2VydF90cmFuc2Zvcm1fYXBwcm94X2Vx
dWFscyhwb3NlLnRyYW5zZm9ybSwgZXhwZWN0ZWRQb3NlKTsKKyAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgfQorICAgICAgICAgIH0pOworCisgICAgICAgICAgcmVzb2x2ZSgpOworICAgICAg
ICB9OworCisgICAgICAgIHQuc3RlcCgoKSA9PiB7CisgICAgICAgICAgYXNzZXJ0X3RydWUoaGl0
VGVzdFNvdXJjZSAhPSBudWxsLCAiSGl0IHRlc3Qgc291cmNlIHNob3VsZCBub3QgYmUgbnVsbCIp
OworICAgICAgICB9KTsKKworICAgICAgICBzZXNzaW9uLnJlcXVlc3RBbmltYXRpb25GcmFtZShy
ZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFjayk7CisgICAgICB9KSk7CisgICAgfSk7CisgIH07
CisKKyAgcmV0dXJuIHRlc3RGdW5jdGlvbjsKK307CisKKy8vIEdlbmVyYXRlcyBhIHRlc3QgZnVu
Y3Rpb24gdGhhdCB3aWxsIHVzZSBsb2NhbCBzcGFjZSBmb3IgaGl0IHRlc3Qgc3Vic2NyaXB0aW9u
LgorLy8gU2VlIHRlc3RGdW5jdGlvbkdlbmVyYXRvciBmb3IgZXhwbGFuYXRpb24gb2Ygb3RoZXIg
cGFyYW1ldGVycy4KK2NvbnN0IGxvY2FsQmFzZWRUZXN0RnVuY3Rpb25HZW5lcmF0b3IgPSBmdW5j
dGlvbihyYXksIGV4cGVjdGVkUG9zZXMpIHsKKyAgcmV0dXJuIHRlc3RGdW5jdGlvbkdlbmVyYXRv
cihyYXksIGV4cGVjdGVkUG9zZXMsICdsb2NhbCcpOworfTsKKworLy8gR2VuZXJhdGVzIGEgdGVz
dCBmdW5jdGlvbiB0aGF0IHdpbGwgdXNlIHZpZXdlciBzcGFjZSBmb3IgaGl0IHRlc3Qgc3Vic2Ny
aXB0aW9uLgorLy8gU2VlIHRlc3RGdW5jdGlvbkdlbmVyYXRvciBmb3IgZXhwbGFuYXRpb24gb2Yg
b3RoZXIgcGFyYW1ldGVycy4KK2NvbnN0IHZpZXdlckJhc2VkVGVzdEZ1bmN0aW9uR2VuZXJhdG9y
ID0gZnVuY3Rpb24ocmF5LCBleHBlY3RlZFBvc2VzKSB7CisgIHJldHVybiB0ZXN0RnVuY3Rpb25H
ZW5lcmF0b3IocmF5LCBleHBlY3RlZFBvc2VzLCAndmlld2VyJyk7Cit9OworCisvLyBHZW5lcmF0
ZXMgYSB0ZXN0IGZ1bmN0aW9uIHRoYXQgd2lsbCB1c2UgbG9jYWwtZmxvb3Igc3BhY2UgZm9yIGhp
dCB0ZXN0IHN1YnNjcmlwdGlvbi4KKy8vIFNlZSB0ZXN0RnVuY3Rpb25HZW5lcmF0b3IgZm9yIGV4
cGxhbmF0aW9uIG9mIG90aGVyIHBhcmFtZXRlcnMuCitjb25zdCBsb2NhbEZsb29yQmFzZWRUZXN0
RnVuY3Rpb25HZW5lcmF0b3IgPSBmdW5jdGlvbihyYXksIGV4cGVjdGVkUG9zZXMpIHsKKyAgcmV0
dXJuIHRlc3RGdW5jdGlvbkdlbmVyYXRvcihyYXksIGV4cGVjdGVkUG9zZXMsICdsb2NhbC1mbG9v
cicpOworfTsKKworLy8gQWxsIHRlc3QgY2FzZXMgcmVxdWlyZSBsb2NhbC1mbG9vciBhbmQgaGl0
LXRlc3QuCitjb25zdCBzZXNzaW9uSW5pdCA9IHsgJ3JlcXVpcmVkRmVhdHVyZXMnOiBbJ2xvY2Fs
LWZsb29yJywgJ2hpdC10ZXN0J10gfTsKKworLy8gUG9zZSBvZiB0aGUgZmlyc3QgZXhwZWN0ZWQg
aGl0IHRlc3QgcmVzdWx0IC0gc3RyYWlnaHQgYWhlYWQgb2YgdGhlIHZpZXdlciwgdmlld2VyLWZh
Y2luZy4KK2NvbnN0IHBvc2VfMSA9IHsKKyAgcG9zaXRpb246IHt4OiAwLjAsIHk6IDEuMCwgejog
LTIuNSwgdzogMS4wfSwKKyAgb3JpZW50YXRpb246IHt4OiAwLjAsIHk6IC0wLjcwNywgejogLTAu
NzA3LCB3OiAwLjB9LAorICAgIC8vIEhpdCB0ZXN0IEFQSSB3aWxsIHNldCBZIGF4aXMgdG8gdGhl
IHN1cmZhY2Ugbm9ybWFsIGF0IHRoZSBpbnRlcnNlY3Rpb24gcG9pbnQsCisgICAgLy8gWiBheGlz
IHRvd2FyZHMgdGhlIHJheSBvcmlnaW4gYW5kIFggYXhpcyB0byBjcm9zcyBwcm9kdWN0IG9mIFkg
YXhpcyAmIFogYXhpcy4KKyAgICAvLyBJZiB0aGUgc3VyZmFjZSBub3JtYWwgYW5kIFogYXhpcyB3
b3VsZCBiZSBwYXJhbGxlbCwgdGhlIGhpdCB0ZXN0IEFQSQorICAgIC8vIHdpbGwgYXR0ZW1wdCB0
byB1c2UgYHVwYCB2ZWN0b3IgKFswLCAxLCAwXSkgYXMgdGhlIFogYXhpcywgYW5kIGlmIGl0IHNv
IGhhcHBlbnMgdGhhdCBaIGF4aXMKKyAgICAvLyBhbmQgdGhlIHN1cmZhY2Ugbm9ybWFsIHdvdWxk
IHN0aWxsIGJlIHBhcmFsbGVsLCBpdCB3aWxsIHVzZSB0aGUgYHJpZ2h0YCB2ZWN0b3IgKFsxLCAw
LCAwXSkgYXMgdGhlIFogYXhpcy4KKyAgICAvLyBJbiB0aGlzIHBhcnRpY3VsYXIgY2FzZSwgYHVw
YCB2ZWN0b3Igd2lsbCB3b3JrIHNvIHRoZSByZXN1bHRpbmcgcG9zZS5vcmllbnRhdGlvbgorICAg
IC8vIGJlY29tZXMgYSByb3RhdGlvbiBhcm91bmQgWzAsIDEsIDFdIHZlY3RvciBieSAxODAgZGVn
cmVlcy4KK307CisKK3hyX3Nlc3Npb25fcHJvbWlzZV90ZXN0KAorICAiRW5zdXJlcyBzdWJzY3Jp
cHRpb24gdG8gaGl0IHRlc3Qgd29ya3Mgd2l0aCB2aWV3ZXIgc3BhY2UgLSBzdHJhaWdodCBhaGVh
ZCAtIHBsYW5lIiwKKyAgdmlld2VyQmFzZWRUZXN0RnVuY3Rpb25HZW5lcmF0b3IobmV3IFhSUmF5
KCksIFtwb3NlXzFdKSwKKyAgZmFrZURldmljZUluaXRQYXJhbXMsICdpbW1lcnNpdmUtYXInLCBz
ZXNzaW9uSW5pdCk7CisKK3hyX3Nlc3Npb25fcHJvbWlzZV90ZXN0KCJFbnN1cmVzIHN1YnNjcmlw
dGlvbiB0byBoaXQgdGVzdCB3b3JrcyB3aXRoIHZpZXdlciBzcGFjZSAtIHN0cmFpZ2h0IHVwIC0g
bm8gcmVzdWx0cyIsCisgIHZpZXdlckJhc2VkVGVzdEZ1bmN0aW9uR2VuZXJhdG9yKG5ldyBYUlJh
eSh7fSwge3g6IDAuMCwgeTogMS4wLCB6IDogMC4wfSksIFtdKSwKKyAgZmFrZURldmljZUluaXRQ
YXJhbXMsICdpbW1lcnNpdmUtYXInLCBzZXNzaW9uSW5pdCk7CisKK2NvbnN0IHBvc2VfMiA9IHsK
KyAgcG9zaXRpb246IHt4OiAwLjAsIHk6IDAuMCwgejogLTIuNSwgdzogMS4wfSwKKyAgb3JpZW50
YXRpb246IHt4OiAwLjAsIHk6IC0wLjcwNywgejogLTAuNzA3LCB3OiAwLjB9LAorICAgIC8vIFNl
ZSBjb21tZW50IGZvciBwb3NlXzEub3JpZW50YXRpb24gZm9yIGRldGFpbHMuCisgICAgLy8gSW4g
dGhpcyBjYXNlLCB0aGUgaGl0IHRlc3QgcG9zZSB3aWxsIGhhdmUgWSBhbmQgWiBheGlzIHRvd2Fy
ZHMgdGhlIHJheSBvcmlnaW4gc28gaXQgd29uJ3QgYmUgdXNlZCwKKyAgICAvLyBidXQgYHVwYCB2
ZWN0b3Igd2lsbCB3b3JrIHNvIHRoZSByZXN1bHRpbmcgcG9zZS5vcmllbnRhdGlvbgorICAgIC8v
IGJlY29tZXMgYSByb3RhdGlvbiBhcm91bmQgWzAsIDEsIDFdIHZlY3RvciBieSAxODAgZGVncmVl
cy4KK307CisKK3hyX3Nlc3Npb25fcHJvbWlzZV90ZXN0KCJFbnN1cmVzIHN1YnNjcmlwdGlvbiB0
byBoaXQgdGVzdCB3b3JrcyB3aXRoIGxvY2FsIHNwYWNlIiwKKyAgbG9jYWxCYXNlZFRlc3RGdW5j
dGlvbkdlbmVyYXRvcihuZXcgWFJSYXkoKSwgW3Bvc2VfMl0pLAorICBmYWtlRGV2aWNlSW5pdFBh
cmFtcywgJ2ltbWVyc2l2ZS1hcicsIHNlc3Npb25Jbml0KTsKKworY29uc3QgcG9zZV8zID0gewor
ICBwb3NpdGlvbjoge3g6IDAuMCwgeTogMC4yNSwgejogLTIuNSwgdzogMS4wfSwKKyAgb3JpZW50
YXRpb246IHt4OiAwLjAsIHk6IC0wLjcwNywgejogLTAuNzA3LCB3OiAwLjB9LAorICAgIC8vIFNl
ZSBjb21tZW50IGZvciBwb3NlXzEub3JpZW50YXRpb24gZm9yIGRldGFpbHMuCisgICAgLy8gSW4g
dGhpcyBjYXNlLCB0aGUgaGl0IHRlc3QgcG9zZSB3aWxsIGhhdmUgWSBhbmQgWiBheGlzIHRvd2Fy
ZHMgdGhlIHJheSBvcmlnaW4gc28gaXQgd29uJ3QgYmUgdXNlZCwKKyAgICAvLyBidXQgYHVwYCB2
ZWN0b3Igd2lsbCB3b3JrIHNvIHRoZSByZXN1bHRpbmcgcG9zZS5vcmllbnRhdGlvbgorICAgIC8v
IGJlY29tZXMgYSByb3RhdGlvbiBhcm91bmQgWzAsIDEsIDFdIHZlY3RvciBieSAxODAgZGVncmVl
cy4KK307CisKK3hyX3Nlc3Npb25fcHJvbWlzZV90ZXN0KCJFbnN1cmVzIHN1YnNjcmlwdGlvbiB0
byBoaXQgdGVzdCB3b3JrcyB3aXRoIGxvY2FsLWZsb29yIHNwYWNlIiwKKyAgbG9jYWxGbG9vckJh
c2VkVGVzdEZ1bmN0aW9uR2VuZXJhdG9yKG5ldyBYUlJheSgpLCBbcG9zZV8zXSksCisgIGZha2VE
ZXZpY2VJbml0UGFyYW1zLCAnaW1tZXJzaXZlLWFyJywgc2Vzc2lvbkluaXQpOworCis8L3Njcmlw
dD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd2VieHIvaGl0LXRlc3QvYXJfaGl0dGVzdF9zdWJzY3JpcHRpb25fc3RhdGVzLmh0dHBzLmh0
bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL2hp
dC10ZXN0L2FyX2hpdHRlc3Rfc3Vic2NyaXB0aW9uX3N0YXRlcy5odHRwcy5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjk4OTQ3ZGEyNjM3MDNlMjk1ODhjNWFjNDMyMTM3ZDllY2E2OWQwNDYKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhy
L2hpdC10ZXN0L2FyX2hpdHRlc3Rfc3Vic2NyaXB0aW9uX3N0YXRlcy5odHRwcy5odG1sCkBAIC0w
LDAgKzEsNjUgQEAKKzwhRE9DVFlQRSBodG1sPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVz
dGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5l
c3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy93ZWJ4cl91
dGlsLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvd2VieHJfdGVzdF9h
c3NlcnRzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvd2VieHJfdGVz
dF9jb25zdGFudHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy93ZWJ4
cl90ZXN0X2NvbnN0YW50c19mYWtlX3dvcmxkLmpzIj48L3NjcmlwdD4KKzxjYW52YXMgLz4KKwor
PHNjcmlwdD4KKworY29uc3QgZmFrZURldmljZUluaXRQYXJhbXMgPSB7CisgIHN1cHBvcnRlZE1v
ZGVzOiBbImltbWVyc2l2ZS1hciJdLAorICB2aWV3czogVkFMSURfVklFV1MsCisgIHN1cHBvcnRl
ZEZlYXR1cmVzOiBBTExfRkVBVFVSRVMsCit9OworCisvLyB8c2hvdWxkU3VjY2VlZHwgLSB0cnVl
IGlmIHRoZSBoaXQgdGVzdCByZXF1ZXN0IGlzIGV4cGVjdGVkIHRvIHN1Y2NlZWQsIGZhbHNlIG90
aGVyd2lzZQorLy8gfGVuZFNlc3Npb258IC0gdHJ1ZSBpZiB0aGUgdGVzdCBjYXNlIHNob3VsZCBj
YWxsIHNlc3Npb24uZW5kKCkgcHJpb3IgdG8gcmVxdWVzdGluZyBoaXQgdGVzdAorY29uc3QgdGVz
dEZ1bmN0aW9uR2VuZXJhdG9yID0gZnVuY3Rpb24oc2hvdWxkU3VjY2VlZCwgZW5kU2Vzc2lvbikg
eworICBjb25zdCB0ZXN0RnVuY3Rpb24gPSBmdW5jdGlvbihzZXNzaW9uLCBmYWtlRGV2aWNlQ29u
dHJvbGxlciwgdCkgeworICAgIHNlc3Npb24ucmVxdWVzdFJlZmVyZW5jZVNwYWNlKCd2aWV3ZXIn
KS50aGVuKCh2aWV3ZXJSZWZTcGFjZSkgPT4geworCisgICAgICBjb25zdCBoaXRUZXN0T3B0aW9u
c0luaXQgPSB7CisgICAgICAgIHNwYWNlOiB2aWV3ZXJSZWZTcGFjZSwKKyAgICAgICAgb2Zmc2V0
UmF5OiBuZXcgWFJSYXkoKSwKKyAgICAgIH07CisKKyAgICAgIGlmKGVuZFNlc3Npb24pIHsKKyAg
ICAgICAgc2Vzc2lvbi5lbmQoKTsKKyAgICAgIH0KKworICAgICAgcmV0dXJuIHNlc3Npb24ucmVx
dWVzdEhpdFRlc3RTb3VyY2UoaGl0VGVzdE9wdGlvbnNJbml0KS50aGVuKChoaXRUZXN0U291cmNl
KSA9PiB7CisgICAgICAgIHQuc3RlcCgoKSA9PiB7CisgICAgICAgICAgYXNzZXJ0X3RydWUoc2hv
dWxkU3VjY2VlZCwKKyAgICAgICAgICAgICJgcmVxdWVzdEhpdFRlc3RTb3VyY2VgIHN1Y2NlZWRl
ZCB3aGVuIGl0IHdhcyBleHBlY3RlZCB0byBmYWlsIik7CisgICAgICAgIH0pOworICAgICAgfSku
Y2F0Y2goKGVycm9yKSA9PiB7CisgICAgICAgIHQuc3RlcCgoKSA9PiB7CisgICAgICAgICAgYXNz
ZXJ0X2ZhbHNlKHNob3VsZFN1Y2NlZWQsCisgICAgICAgICAgICAiYHJlcXVlc3RIaXRUZXN0U291
cmNlYCBmYWlsZWQgd2hlbiBpdCB3YXMgZXhwZWN0ZWQgdG8gc3VjY2VlZCwgZXJyb3I6ICIgKyBl
cnJvcik7CisgICAgICAgIH0pOworICAgICAgfSk7CisgICAgfSk7CisgIH07CisKKyAgcmV0dXJu
IHRlc3RGdW5jdGlvbjsKK307CisKK3hyX3Nlc3Npb25fcHJvbWlzZV90ZXN0KCJIaXQgdGVzdCBz
dWJzY3JpcHRpb24gc3VjY2VlZHMgaWYgdGhlIGZlYXR1cmUgd2FzIHJlcXVlc3RlZCIsCisgIHRl
c3RGdW5jdGlvbkdlbmVyYXRvcigvKnNob3VsZFN1Y2NlZWQ9Ki90cnVlLCAvKmVuZFNlc3Npb249
Ki9mYWxzZSksCisgIGZha2VEZXZpY2VJbml0UGFyYW1zLAorICAnaW1tZXJzaXZlLWFyJywgeyAn
cmVxdWlyZWRGZWF0dXJlcyc6IFsnaGl0LXRlc3QnXSB9KTsKKworeHJfc2Vzc2lvbl9wcm9taXNl
X3Rlc3QoIkhpdCB0ZXN0IHN1YnNjcmlwdGlvbiBmYWlscyBpZiB0aGUgZmVhdHVyZSB3YXMgbm90
IHJlcXVlc3RlZCIsCisgIHRlc3RGdW5jdGlvbkdlbmVyYXRvcigvKnNob3VsZFN1Y2NlZWQ9Ki9m
YWxzZSwgLyplbmRTZXNzaW9uPSovZmFsc2UpLAorICBmYWtlRGV2aWNlSW5pdFBhcmFtcywKKyAg
J2ltbWVyc2l2ZS1hcicsIHt9KTsKKworeHJfc2Vzc2lvbl9wcm9taXNlX3Rlc3QoIkhpdCB0ZXN0
IHN1YnNjcmlwdGlvbiBmYWlscyBpZiB0aGUgZmVhdHVyZSB3YXMgcmVxdWVzdGVkIGJ1dCB0aGUg
c2Vzc2lvbiBhbHJlYWR5IGVuZGVkIiwKKyAgdGVzdEZ1bmN0aW9uR2VuZXJhdG9yKC8qc2hvdWxk
U3VjY2VlZD0qL2ZhbHNlLCAvKmVuZFNlc3Npb249Ki90cnVlKSwKKyAgZmFrZURldmljZUluaXRQ
YXJhbXMsCisgICdpbW1lcnNpdmUtYXInLCB7ICdyZXF1aXJlZEZlYXR1cmVzJzogWydoaXQtdGVz
dCddIH0pOworCis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvaGl0LXRlc3QvdzNjLWltcG9ydC5sb2cgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL2hpdC10ZXN0L3cz
Yy1pbXBvcnQubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUwZjM4YjJkZTllMzA2OTQzOTg1NDQxNWE1MThkYWVh
ZjFkNTRmYTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dlYnhyL2hpdC10ZXN0L3czYy1pbXBvcnQubG9nCkBAIC0wLDAgKzEs
MjAgQEAKK1RoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhl
IFczQyByZXBvc2l0b3J5LgorRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBX
ZWJLaXQuCitJbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6
CisJaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKKworVGhlbiBydW4g
dGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQK
KworRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgorCistLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
K1Byb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKK05vbmUKK1Byb3BlcnR5IHZh
bHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgorTm9uZQorLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitM
aXN0IG9mIGZpbGVzOgorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd2VieHIvaGl0LXRlc3QvYXJfaGl0dGVzdF9zdWJzY3JpcHRpb25fcmVmU3BhY2VzLmh0dHBz
Lmh0bWwKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhy
L2hpdC10ZXN0L2FyX2hpdHRlc3Rfc3Vic2NyaXB0aW9uX3N0YXRlcy5odHRwcy5odG1sCisvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9oaXQtdGVzdC94
clJheV9jb25zdHJ1Y3Rvci5odHRwcy5odG1sCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9oaXQtdGVzdC94clJheV9tYXRyaXguaHR0cHMuaHRtbApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
ZWJ4ci9oaXQtdGVzdC94clJheV9jb25zdHJ1Y3Rvci5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9oaXQtdGVzdC94clJheV9jb25z
dHJ1Y3Rvci5odHRwcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA4ZjIwMTQyZTM4ZTkzNjZiZDAxNmZiOTI2
NjZiNTEzNjEyOGZlZjYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL2hpdC10ZXN0L3hyUmF5X2NvbnN0cnVjdG9yLmh0
dHBzLmh0bWwKQEAgLTAsMCArMSwxNDcgQEAKKzwhRE9DVFlQRSBodG1sPgorPHNjcmlwdCBzcmM9
Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNv
dXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jl
c291cmNlcy93ZWJ4cl90ZXN0X2NvbnN0YW50cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vcmVzb3VyY2VzL3dlYnhyX3Rlc3RfYXNzZXJ0cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pgor
CitsZXQgY29uc3RydWN0b3JfdGVzdF9uYW1lID0gIlhSUmF5IGNvbnN0cnVjdG9ycyB3b3JrIjsK
KworbGV0IGNvbnN0cnVjdG9yX3Rlc3RzID0gZnVuY3Rpb24oKSB7CisgIC8vIENvbnN0cnVjdG9y
IHRlc3RzIGZvciBYUlJheS4KKyAgLy8gU3BlYzogaHR0cHM6Ly9pbW1lcnNpdmUtd2ViLmdpdGh1
Yi5pby93ZWJ4ci8jeHJyYXktaW50ZXJmYWNlCisKKyAgLy8KKyAgLy8gQ29uc3RydWN0b3IgMSAt
IGZyb20gb3JpZ2luIGFuZCBkaXJlY3Rpb24KKyAgLy8KKworICB7CisgICAgLy8gQ2hlY2sgZGVm
YXVsdHMgLSBzaG91bGQgYmUgMCwwLDAsMSBmb3Igb3JpZ2luIGFuZCAwLDAsLTEsMCBmb3IgZGly
ZWN0aW9uLAorICAgIC8vIGlkZW50aXR5IG1hdHJpeCBmb3IgdGhlIHRyYW5zZm9ybToKKyAgICBs
ZXQgeHJSYXkgPSBuZXcgWFJSYXkoKTsKKyAgICBhc3NlcnRfcG9pbnRfYXBwcm94X2VxdWFscygK
KyAgICAgIHhyUmF5Lm9yaWdpbiwge3ggOiAwLjAsIHkgOiAwLjAsIHogOiAwLjAsIHcgOiAxLjB9
LAorICAgICAgRkxPQVRfRVBTSUxPTiwgIm9yaWdpbi1kZWZhdWx0OiIpOworICAgIGFzc2VydF9w
b2ludF9hcHByb3hfZXF1YWxzKAorICAgICAgeHJSYXkuZGlyZWN0aW9uLCB7eCA6IDAuMCwgeSA6
IDAuMCwgeiA6IC0xLjAsIHcgOiAwLjB9LAorICAgICAgRkxPQVRfRVBTSUxPTiwgImRpcmVjdGlv
bi1kZWZhdWx0OiIpOworICAgIGFzc2VydF9tYXRyaXhfYXBwcm94X2VxdWFscygKKyAgICAgIHhy
UmF5Lm1hdHJpeCwgSURFTlRJVFlfTUFUUklYLAorICAgICAgRkxPQVRfRVBTSUxPTiwgIm1hdHJp
eC1kZWZhdWx0OiIpOworICB9CisKKyAgeworICAgIC8vIENoZWNrIGN1c3RvbSB2YWx1ZSBmb3Ig
b3JpZ2luLCBkZWZhdWx0IGZvciBkaXJlY3Rpb246CisgICAgbGV0IG9yaWdpbkRpY3QgPSB7eCA6
IDExLjAsIHkgOiAxMi4wLCB6IDogMTMuMCwgdyA6IDEuMH07CisgICAgbGV0IHhyUmF5MiA9IG5l
dyBYUlJheShET01Qb2ludC5mcm9tUG9pbnQob3JpZ2luRGljdCkpOworICAgIGxldCB4clJheTMg
PSBuZXcgWFJSYXkoRE9NUG9pbnRSZWFkT25seS5mcm9tUG9pbnQob3JpZ2luRGljdCkpOworICAg
IGxldCBtYXRyaXgxID0gWyAxLCAgMCwgIDAsIDAsCisgICAgICAgICAgICAgICAgICAgIDAsICAx
LCAgMCwgMCwKKyAgICAgICAgICAgICAgICAgICAgMCwgIDAsICAxLCAwLAorICAgICAgICAgICAg
ICAgICAgIDExLCAxMiwgMTMsIDFdOworCisgICAgYXNzZXJ0X3BvaW50X2FwcHJveF9lcXVhbHMo
CisgICAgICB4clJheTIub3JpZ2luLCBvcmlnaW5EaWN0LAorICAgICAgRkxPQVRfRVBTSUxPTiwg
Im9yaWdpbi1jdXN0b20tZGlyZWN0aW9uLWRlZmF1bHQ6Iik7CisgICAgYXNzZXJ0X3BvaW50X2Fw
cHJveF9lcXVhbHMoCisgICAgICB4clJheTIuZGlyZWN0aW9uLCB7eCA6IDAuMCwgeSA6IDAuMCwg
eiA6IC0xLjAsIHcgOiAwLjB9LAorICAgICAgRkxPQVRfRVBTSUxPTiwgImRpcmVjdGlvbi1jdXN0
b20tZGlyZWN0aW9uLWRlZmF1bHQ6Iik7CisgICAgYXNzZXJ0X21hdHJpeF9hcHByb3hfZXF1YWxz
KAorICAgICAgeHJSYXkyLm1hdHJpeCwgbWF0cml4MSwKKyAgICAgIEZMT0FUX0VQU0lMT04sICJt
YXRyaXgtY3VzdG9tLWRpcmVjdGlvbi1kZWZhdWx0OiIpOworCisgICAgYXNzZXJ0X3JheV9hcHBy
b3hfZXF1YWxzKHhyUmF5MiwgeHJSYXkzLCBGTE9BVF9FUFNJTE9OLCAicmF5Mi1yYXkzLWRpcmVj
dGlvbi1kZWZhdWx0OiIpOworICB9CisKKyAgeworICAgIC8vIENoZWNrIGN1c3RvbSB2YWx1ZXMg
LSByYXkgcm90YXRlZCBmcm9tIC1aIG9udG8gK1gsCisgICAgLy8gbm90IHBsYWNlZCBhdCBvcmln
aW46CisgICAgLy8gLSBmcm9tIERPTVBvaW50CisgICAgLy8gLSBmcm9tIERPTVBvaW50UmVhZE9u
bHkKKyAgICBsZXQgb3JpZ2luRGljdCA9IHt4IDogMTAuMCwgeSA6IDEwLjAsIHogOiAxMC4wLCB3
IDogMS4wfTsKKyAgICBsZXQgZGlyZWN0aW9uRGljdCA9IHt4IDogMTAuMCwgeSA6IDAuMCwgeiA6
IDAuMCwgdyA6IDAuMH07CisgICAgbGV0IGRpcmVjdGlvbk5vcm0gPSB7eCA6ICAxLjAsIHkgOiAw
LjAsIHogOiAwLjAsIHcgOiAwLjB9OworICAgIC8vIGNvbHVtbi1tYWpvcgorICAgIGxldCBtYXRy
aXgxID0gWyAwLCAgMCwgIDEsICAwLAorICAgICAgICAgICAgICAgICAgICAwLCAgMSwgIDAsICAw
LAorICAgICAgICAgICAgICAgICAgIC0xLCAgMCwgIDAsICAwLAorICAgICAgICAgICAgICAgICAg
IDEwLCAxMCwgMTAsICAxXTsKKworICAgIGxldCB4clJheTIgPSBuZXcgWFJSYXkoCisgICAgICBE
T01Qb2ludC5mcm9tUG9pbnQob3JpZ2luRGljdCksCisgICAgICBET01Qb2ludC5mcm9tUG9pbnQo
ZGlyZWN0aW9uRGljdCkpOworCisgICAgbGV0IHhyUmF5MyA9IG5ldyBYUlJheSgKKyAgICAgIERP
TVBvaW50UmVhZE9ubHkuZnJvbVBvaW50KG9yaWdpbkRpY3QpLAorICAgICAgRE9NUG9pbnRSZWFk
T25seS5mcm9tUG9pbnQoZGlyZWN0aW9uRGljdCkpOworCisgICAgYXNzZXJ0X3BvaW50X2FwcHJv
eF9lcXVhbHMoCisgICAgICB4clJheTIub3JpZ2luLCBvcmlnaW5EaWN0LAorICAgICAgRkxPQVRf
RVBTSUxPTiwgIm9yaWdpbi1jdXN0b206Iik7CisgICAgYXNzZXJ0X3BvaW50X2FwcHJveF9lcXVh
bHMoCisgICAgICB4clJheTIuZGlyZWN0aW9uLCBkaXJlY3Rpb25Ob3JtLAorICAgICAgRkxPQVRf
RVBTSUxPTiwgImRpcmVjdGlvbi1jdXN0b206Iik7CisgICAgYXNzZXJ0X21hdHJpeF9hcHByb3hf
ZXF1YWxzKAorICAgICAgeHJSYXkyLm1hdHJpeCwgbWF0cml4MSwKKyAgICAgIEZMT0FUX0VQU0lM
T04sICJtYXRyaXgtY3VzdG9tOiIpOworCisgICAgYXNzZXJ0X3JheV9hcHByb3hfZXF1YWxzKHhy
UmF5MiwgeHJSYXkzLCBGTE9BVF9FUFNJTE9OLCAicmF5Mi1yYXkzOiIpOworICB9CisKKyAgewor
ICAgIC8vIENoZWNrIHRoYXQgd2UgdGhyb3cgZXhjZXB0aW9uIG9uIGRpcmVjdGlvbiB0b28gY2xv
c2UgdG8gMCwwLDA6CisgICAgbGV0IG9yaWdpbkRpY3QgPSB7eCA6IDEwLjAsIHkgOiAxMC4wLCB6
IDogMTAuMCwgdyA6IDEuMH07CisgICAgbGV0IGRpcmVjdGlvbkRpY3QgPSB7eCA6IDAuMCwgeSA6
IDAuMCwgeiA6IDAuMCwgdyA6IDAuMH07CisKKyAgICB0cnkgeworICAgICAgbGV0IHhyUmF5ID0g
bmV3IFhSUmF5KAorICAgICAgICBET01Qb2ludC5mcm9tUG9pbnQob3JpZ2luRGljdCksCisgICAg
ICAgIERPTVBvaW50LmZyb21Qb2ludChkaXJlY3Rpb25EaWN0KSk7CisKKyAgICAgIGFzc2VydChm
YWxzZSwgIm9yaWdpbi1jdXN0b20tZGlyZWN0aW9uLXplcm86ZXhjZXB0aW9uIG5vdCB0aHJvd24i
KTsKKyAgICB9CisgICAgY2F0Y2goZSkKKyAgICB7CisgICAgICBpZihlIGluc3RhbmNlb2YgRE9N
RXhjZXB0aW9uKSB7CisgICAgICAgIGFzc2VydF9lcXVhbHMoZS5uYW1lLCAiSW52YWxpZFN0YXRl
RXJyb3IiLCAib3JpZ2luLWN1c3RvbS1kaXJlY3Rpb24temVybzppbmNvcnJlY3QgRE9NIGV4Y2Vw
dGlvbiB0aHJvd24iKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIGFzc2VydChmYWxzZSwgIm9y
aWdpbi1jdXN0b20tZGlyZWN0aW9uLXplcm86b3RoZXIgZXhjZXB0aW9uIHRocm93bjogIiArIGUp
OworICAgICAgfQorICAgIH0KKyAgfQorCisgIC8vCisgIC8vIENvbnN0cnVjdG9yIDIgLSBmcm9t
IHJpZ2lkIHRyYW5zZm9ybS4KKyAgLy8KKworICB7CisgICAgLy8gTm90IHBsYWNlZCBhdCBvcmln
aW4sIHJheSByb3RhdGVkIGJ5IDEzNSBkZWdyZWVzIGFyb3VuZCBZOgorICAgIGxldCBvcmlnaW5E
aWN0ID0ge3ggOiAxMC4wLCB5IDogMTAuMCwgeiA6IDEwLjAsIHcgOiAxLjB9OworICAgIGxldCBk
aXJlY3Rpb25RdWF0ZXJuaW9uRGljdCA9IHsgeCA6IDAsIHkgOiAwLjkyMzksIHogOiAwLCB3IDog
MC4zODI3IH07CisgICAgbGV0IGRpcmVjdGlvbk5vcm0yID0geyB4IDogLTAuNzA3LCB5IDogMC4w
LCB6IDogMC43MDcsIHcgOiAwLjAgfTsKKyAgICBsZXQgbWF0cml4MiA9IFstMC43MDcsICAwLCAg
LTAuNzA3LCAgIDAsCisgICAgICAgICAgICAgICAgICAgIDAuLCAgICAgMSwgICAwLCAgICAgICAw
LAorICAgICAgICAgICAgICAgICAgICAwLjcwNywgIDAsICAtMC43MDcsICAgMCwKKyAgICAgICAg
ICAgICAgICAgICAxMC4sICAgIDEwLCAgMTAuLCAgICAgIDFdOworCisgICAgbGV0IHhyUmF5NCA9
IG5ldyBYUlJheSgKKyAgICAgIG5ldyBYUlJpZ2lkVHJhbnNmb3JtKAorICAgICAgICBET01Qb2lu
dC5mcm9tUG9pbnQob3JpZ2luRGljdCksCisgICAgICAgIERPTVBvaW50LmZyb21Qb2ludChkaXJl
Y3Rpb25RdWF0ZXJuaW9uRGljdCkpKTsKKworICAgIGFzc2VydF9wb2ludF9hcHByb3hfZXF1YWxz
KAorICAgICAgeHJSYXk0Lm9yaWdpbiwgb3JpZ2luRGljdCwKKyAgICAgIEZMT0FUX0VQU0lMT04s
ICJvcmlnaW4tY3VzdG9tLXJpZ2lkOiIpOworICAgIGFzc2VydF9wb2ludF9hcHByb3hfZXF1YWxz
KAorICAgICAgeHJSYXk0LmRpcmVjdGlvbiwgZGlyZWN0aW9uTm9ybTIsCisgICAgICBGTE9BVF9F
UFNJTE9OLCAiZGlyZWN0aW9uLWN1c3RvbS1yaWdpZDoiKTsKKworICAgIGFzc2VydF9tYXRyaXhf
YXBwcm94X2VxdWFscygKKyAgICAgIHhyUmF5NC5tYXRyaXgsIG1hdHJpeDIsCisgICAgICBGTE9B
VF9FUFNJTE9OLCAibWF0cml4LWN1c3RvbS1yaWdpZDoiKTsKKyAgfQorfTsKKwordGVzdChjb25z
dHJ1Y3Rvcl90ZXN0cywgY29uc3RydWN0b3JfdGVzdF9uYW1lKTsKKworPC9zY3JpcHQ+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhy
L2hpdC10ZXN0L3hyUmF5X21hdHJpeC5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9oaXQtdGVzdC94clJheV9tYXRyaXguaHR0cHMu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi43N2YxMzRhNzVmZmZlODU3MDVlODY3Y2Q0N2NiMWM1MDM0ZGY1OWIz
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93ZWJ4ci9oaXQtdGVzdC94clJheV9tYXRyaXguaHR0cHMuaHRtbApAQCAtMCwwICsx
LDEwMSBAQAorPCFET0NUWVBFIGh0bWw+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFy
bmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3Jl
cG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3dlYnhyX3Rlc3Rf
Y29uc3RhbnRzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvd2VieHJf
dGVzdF9hc3NlcnRzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvd2Vi
eHJfbWF0aF91dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCitsZXQgbWF0cml4X3Rlc3Rz
X25hbWUgPSAiWFJSYXkgbWF0cml4IHdvcmtzIjsKKworbGV0IG1hdHJpeF90ZXN0cyA9IGZ1bmN0
aW9uKCkgeworICAvLyBNYXRyaXggdGVzdHMgZm9yIFhSUmF5LgorICAvLyBTcGVjOiBodHRwczov
L2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLyN4cnJheS1pbnRlcmZhY2UKKworICBjb25z
dCBpbml0aWFsT3JpZ2luID0ge3ggOiAwLCB5IDogMCwgeiA6IDAsIHcgOiAxfTsKKyAgY29uc3Qg
aW5pdGlhbERpcmVjdGlvbiA9IHt4IDogMCwgeSA6IDAsIHogOiAtMSwgdyA6IDB9OworCisgIC8v
IFRlc3QgMS4gU2ltcGxlIHRyYW5zbGF0aW9uIGFuZCByb3RhdGlvbi4KKyAgeworICAgIGxldCBv
cmlnaW5EaWN0ID0ge3ggOiAxMC4wLCB5IDogMTAuMCwgeiA6IDEwLjAsIHcgOiAxLjB9OworICAg
IGxldCBkaXJlY3Rpb25EaWN0ID0ge3ggOiAxMC4wLCB5IDogMC4wLCB6IDogMC4wLCB3IDogMC4w
fTsKKyAgICBsZXQgZGlyZWN0aW9uTm9ybSA9IHt4IDogIDEuMCwgeSA6IDAuMCwgeiA6IDAuMCwg
dyA6IDAuMH07CisgICAgbGV0IHhyUmF5ID0gbmV3IFhSUmF5KAorICAgICAgRE9NUG9pbnQuZnJv
bVBvaW50KG9yaWdpbkRpY3QpLAorICAgICAgRE9NUG9pbnQuZnJvbVBvaW50KGRpcmVjdGlvbkRp
Y3QpKTsKKworICAgIGxldCB0cmFuc2Zvcm1lZE9yaWdpbiA9IG5vcm1hbGl6ZV9wZXJzcGVjdGl2
ZSh0cmFuc2Zvcm1fcG9pbnRfYnlfbWF0cml4KHhyUmF5Lm1hdHJpeCwgaW5pdGlhbE9yaWdpbikp
OworICAgIGxldCB0cmFuc2Zvcm1lZERpcmVjdGlvbiA9IG5vcm1hbGl6ZV9wZXJzcGVjdGl2ZSh0
cmFuc2Zvcm1fcG9pbnRfYnlfbWF0cml4KHhyUmF5Lm1hdHJpeCwgaW5pdGlhbERpcmVjdGlvbikp
OworCisgICAgYXNzZXJ0X3BvaW50X2FwcHJveF9lcXVhbHMoCisgICAgICBvcmlnaW5EaWN0LCB0
cmFuc2Zvcm1lZE9yaWdpbiwKKyAgICAgIEZMT0FUX0VQU0lMT04sICJvcmlnaW4tdGVzdDE6Iik7
CisgICAgYXNzZXJ0X3BvaW50X2FwcHJveF9lcXVhbHMoCisgICAgICBkaXJlY3Rpb25Ob3JtLCB0
cmFuc2Zvcm1lZERpcmVjdGlvbiwKKyAgICAgIEZMT0FUX0VQU0lMT04sICJkaXJlY3Rpb24tdGVz
dDE6Iik7CisgIH0KKworICAvLyBUZXN0IDIuIENvLWxpbmVhciBkaXJlY3Rpb24gLSByb3RhdGlv
biBieSAxODAgZGVnLgorICB7CisgICAgbGV0IG9yaWdpbkRpY3QgPSB7eCA6IDEwLjAsIHkgOiAx
MC4wLCB6IDogMTAuMCwgdyA6IDEuMH07CisgICAgbGV0IGRpcmVjdGlvbkRpY3QgPSB7eCA6IDAu
MCwgeSA6IDAuMCwgeiA6IDEuMCwgdyA6IDAuMH07CisgICAgbGV0IGRpcmVjdGlvbk5vcm0gPSB7
eCA6IDAuMCwgeSA6IDAuMCwgeiA6IDEuMCwgdyA6IDAuMH07CisgICAgbGV0IHhyUmF5ID0gbmV3
IFhSUmF5KAorICAgICAgRE9NUG9pbnQuZnJvbVBvaW50KG9yaWdpbkRpY3QpLAorICAgICAgRE9N
UG9pbnQuZnJvbVBvaW50KGRpcmVjdGlvbkRpY3QpKTsKKworICAgIGxldCB0cmFuc2Zvcm1lZE9y
aWdpbiA9IG5vcm1hbGl6ZV9wZXJzcGVjdGl2ZSh0cmFuc2Zvcm1fcG9pbnRfYnlfbWF0cml4KHhy
UmF5Lm1hdHJpeCwgaW5pdGlhbE9yaWdpbikpOworICAgIGxldCB0cmFuc2Zvcm1lZERpcmVjdGlv
biA9IG5vcm1hbGl6ZV9wZXJzcGVjdGl2ZSh0cmFuc2Zvcm1fcG9pbnRfYnlfbWF0cml4KHhyUmF5
Lm1hdHJpeCwgaW5pdGlhbERpcmVjdGlvbikpOworCisgICAgYXNzZXJ0X3BvaW50X2FwcHJveF9l
cXVhbHMoCisgICAgICBvcmlnaW5EaWN0LCB0cmFuc2Zvcm1lZE9yaWdpbiwKKyAgICAgIEZMT0FU
X0VQU0lMT04sICJvcmlnaW4tdGVzdDI6Iik7CisgICAgYXNzZXJ0X3BvaW50X2FwcHJveF9lcXVh
bHMoCisgICAgICBkaXJlY3Rpb25Ob3JtLCB0cmFuc2Zvcm1lZERpcmVjdGlvbiwKKyAgICAgIEZM
T0FUX0VQU0lMT04sICJkaXJlY3Rpb24tdGVzdDI6Iik7CisgIH0KKworICAvLyBUZXN0IDMuIE5v
IHRyYW5zbGF0aW9uLgorICB7CisgICAgbGV0IG9yaWdpbkRpY3QgPSB7eCA6IDAuMCwgeSA6IDAu
MCwgeiA6IDAuMCwgdyA6IDEuMH07CisgICAgbGV0IGRpcmVjdGlvbkRpY3QgPSB7eCA6IDEwLjAs
IHkgOiAwLjAsIHogOiAwLjAsIHcgOiAwLjB9OworICAgIGxldCBkaXJlY3Rpb25Ob3JtID0ge3gg
OiAgMS4wLCB5IDogMC4wLCB6IDogMC4wLCB3IDogMC4wfTsKKyAgICBsZXQgeHJSYXkgPSBuZXcg
WFJSYXkoCisgICAgICBET01Qb2ludC5mcm9tUG9pbnQob3JpZ2luRGljdCksCisgICAgICBET01Q
b2ludC5mcm9tUG9pbnQoZGlyZWN0aW9uRGljdCkpOworCisgICAgbGV0IHRyYW5zZm9ybWVkT3Jp
Z2luID0gbm9ybWFsaXplX3BlcnNwZWN0aXZlKHRyYW5zZm9ybV9wb2ludF9ieV9tYXRyaXgoeHJS
YXkubWF0cml4LCBpbml0aWFsT3JpZ2luKSk7CisgICAgbGV0IHRyYW5zZm9ybWVkRGlyZWN0aW9u
ID0gbm9ybWFsaXplX3BlcnNwZWN0aXZlKHRyYW5zZm9ybV9wb2ludF9ieV9tYXRyaXgoeHJSYXku
bWF0cml4LCBpbml0aWFsRGlyZWN0aW9uKSk7CisKKyAgICBhc3NlcnRfcG9pbnRfYXBwcm94X2Vx
dWFscygKKyAgICAgIG9yaWdpbkRpY3QsIHRyYW5zZm9ybWVkT3JpZ2luLAorICAgICAgRkxPQVRf
RVBTSUxPTiwgIm9yaWdpbi10ZXN0MzoiKTsKKyAgICBhc3NlcnRfcG9pbnRfYXBwcm94X2VxdWFs
cygKKyAgICAgIGRpcmVjdGlvbk5vcm0sIHRyYW5zZm9ybWVkRGlyZWN0aW9uLAorICAgICAgRkxP
QVRfRVBTSUxPTiwgImRpcmVjdGlvbi10ZXN0MzoiKTsKKyAgfQorCisgIC8vIFRlc3QgNC4gTm8g
cm90YXRpb24uCisgIHsKKyAgICBsZXQgb3JpZ2luRGljdCA9IHt4IDogMTAuMCwgeSA6IDEwLjAs
IHogOiAxMC4wLCB3IDogMS4wfTsKKyAgICBsZXQgZGlyZWN0aW9uRGljdCA9IHt4IDogMC4wLCB5
IDogMC4wLCB6IDogLTEuMCwgdyA6IDAuMH07CisgICAgbGV0IGRpcmVjdGlvbk5vcm0gPSB7eCA6
IDAuMCwgeSA6IDAuMCwgeiA6IC0xLjAsIHcgOiAwLjB9OworICAgIGxldCB4clJheSA9IG5ldyBY
UlJheSgKKyAgICAgIERPTVBvaW50LmZyb21Qb2ludChvcmlnaW5EaWN0KSwKKyAgICAgIERPTVBv
aW50LmZyb21Qb2ludChkaXJlY3Rpb25EaWN0KSk7CisKKyAgICBsZXQgdHJhbnNmb3JtZWRPcmln
aW4gPSBub3JtYWxpemVfcGVyc3BlY3RpdmUodHJhbnNmb3JtX3BvaW50X2J5X21hdHJpeCh4clJh
eS5tYXRyaXgsIGluaXRpYWxPcmlnaW4pKTsKKyAgICBsZXQgdHJhbnNmb3JtZWREaXJlY3Rpb24g
PSBub3JtYWxpemVfcGVyc3BlY3RpdmUodHJhbnNmb3JtX3BvaW50X2J5X21hdHJpeCh4clJheS5t
YXRyaXgsIGluaXRpYWxEaXJlY3Rpb24pKTsKKworICAgIGFzc2VydF9wb2ludF9hcHByb3hfZXF1
YWxzKAorICAgICAgb3JpZ2luRGljdCwgdHJhbnNmb3JtZWRPcmlnaW4sCisgICAgICBGTE9BVF9F
UFNJTE9OLCAib3JpZ2luLXRlc3Q0OiIpOworICAgIGFzc2VydF9wb2ludF9hcHByb3hfZXF1YWxz
KAorICAgICAgZGlyZWN0aW9uTm9ybSwgdHJhbnNmb3JtZWREaXJlY3Rpb24sCisgICAgICBGTE9B
VF9FUFNJTE9OLCAiZGlyZWN0aW9uLXRlc3Q0OiIpOworICB9Cit9OworCit0ZXN0KG1hdHJpeF90
ZXN0cywgbWF0cml4X3Rlc3RzX25hbWUpOworCis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvaWRsaGFybmVzcy5o
dHRwcy53aW5kb3cuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd2VieHIvaWRsaGFybmVzcy5odHRwcy53aW5kb3cuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMzgy
OTEzNTI4ZTY5M2IzYTVkNTZjNjYwYTQ1MDYwOTgwYjU0OGMzCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9pZGxoYXJu
ZXNzLmh0dHBzLndpbmRvdy5odG1sCkBAIC0wLDAgKzEgQEAKKzwhLS0gVGhpcyBmaWxlIGlzIHJl
cXVpcmVkIGZvciBXZWJLaXQgdGVzdCBpbmZyYXN0cnVjdHVyZSB0byBydW4gdGhlIHRlbXBsYXRl
ZCB0ZXN0IC0tPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvaWRsaGFybmVzcy5o
dHRwcy53aW5kb3cuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dlYnhyL2lkbGhhcm5lc3MuaHR0cHMud2luZG93LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA0YjJlM2Q5
MWViMzhhY2I1MTJlYzQ2OWIxYmIyNjFkOGViNjI1YjIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL2lkbGhhcm5lc3Mu
aHR0cHMud2luZG93LmpzCkBAIC0wLDAgKzEsMTcgQEAKKy8vIE1FVEE6IHNjcmlwdD0vcmVzb3Vy
Y2VzL1dlYklETFBhcnNlci5qcworLy8gTUVUQTogc2NyaXB0PS9yZXNvdXJjZXMvaWRsaGFybmVz
cy5qcworCisndXNlIHN0cmljdCc7CisKKy8vIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIu
aW8vd2VieHIvCisKK2lkbF90ZXN0KAorICBbJ3dlYnhyJ10sCisgIFsncGVybWlzc2lvbnMnLCAn
d2ViZ2wxJywgJ2h0bWwnLCAnZG9tJ10sCisgIGFzeW5jIGlkbF9hcnJheSA9PiB7CisgICAgaWRs
X2FycmF5LmFkZF9vYmplY3RzKHsKKyAgICAgIE5hdmlnYXRvcjogWyduYXZpZ2F0b3InXSwKKyAg
ICAgIFhSOiBbJ25hdmlnYXRvci54ciddLAorICAgIH0pOworICB9CispOwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9uYXZpZ2F0
b3JfeHJfc2FtZU9iamVjdC5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9uYXZpZ2F0b3JfeHJfc2FtZU9iamVjdC5odHRwcy5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjU2Y2Q2NWM0ZTQyZGJlN2JiOWQ2NTI1NDdlNjVmMDQ5MWUwNWY4MzEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dlYnhyL25hdmlnYXRvcl94cl9zYW1lT2JqZWN0Lmh0dHBzLmh0bWwKQEAgLTAsMCArMSwz
MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVz
cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9y
dC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3dlYnhyX3V0aWwuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy93ZWJ4cl90ZXN0X2NvbnN0YW50cy5qcyI+
PC9zY3JpcHQ+Cis8Y2FudmFzIGlkPSJ3ZWJnbC1jYW52YXMiPjwvY2FudmFzPgorCis8c2NyaXB0
PgorbGV0IHRlc3ROYW1lID0gIk5hdmlnYXRvci54ciBtZWV0cyBbU2FtZU9iamVjdF0gcmVxdWly
ZW1lbnQiOworCitsZXQgdGVzdEZ1bmN0aW9uID0gZnVuY3Rpb24oc2Vzc2lvbiwgZmFrZURldmlj
ZUNvbnRyb2xsZXIsIHQpIHsKKyAgbGV0IHhyID0gbmF2aWdhdG9yLnhyOworCisgIHJldHVybiBu
ZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4geworICAgIC8vIE1ha2Ugc3VyZSB0aGUgbmF2aWdhdG9y
LnhyIG9iamVjdCBpcyB0aGUgc2FtZSBvbiBlYWNoIGZyYW1lLgorICAgIHNlc3Npb24ucmVxdWVz
dEFuaW1hdGlvbkZyYW1lKCh0aW1lLCB4ckZyYW1lKSA9PiB7CisgICAgICB0LnN0ZXAoKCkgPT4g
eworICAgICAgICBhc3NlcnRfZXF1YWxzKG5hdmlnYXRvci54ciwgeHIsICJuYXZpZ2F0b3IueHIg
cmV0dXJucyB0aGUgc2FtZSBvYmplY3QiKTsKKyAgICAgIH0pOworICAgICAgc2Vzc2lvbi5yZXF1
ZXN0QW5pbWF0aW9uRnJhbWUoKHRpbWUsIHhyRnJhbWUpID0+IHsKKyAgICAgICAgdC5zdGVwKCgp
ID0+IHsKKyAgICAgICAgICBhc3NlcnRfZXF1YWxzKG5hdmlnYXRvci54ciwgeHIsCisgICAgICAg
ICAgICAibmFpdmdhdG9yLnhyIHJldHVybnMgdGhlIHNhbWUgb2JqZWN0Iik7CisgICAgICAgIH0p
OworICAgICAgICByZXNvbHZlKCk7CisgICAgICB9KTsKKyAgICB9KTsKKyAgfSk7Cit9OworCit4
cl9zZXNzaW9uX3Byb21pc2VfdGVzdCgKKyAgdGVzdE5hbWUsIHRlc3RGdW5jdGlvbiwgVFJBQ0tF
RF9JTU1FUlNJVkVfREVWSUNFLCAnaW1tZXJzaXZlLXZyJyk7Cis8L3NjcmlwdD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvcmVu
ZGVyX3N0YXRlX3ZlcnRpY2FsX2Zvdl9pbW1lcnNpdmUuaHR0cHMuaHRtbCBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvcmVuZGVyX3N0YXRlX3ZlcnRp
Y2FsX2Zvdl9pbW1lcnNpdmUuaHR0cHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ODU0MzhjYWJmNmE2MzNk
ZjQyYTBmOTRjMDQ5MjJlNzI3NDAxM2UxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9yZW5kZXJfc3RhdGVfdmVydGlj
YWxfZm92X2ltbWVyc2l2ZS5odHRwcy5odG1sCkBAIC0wLDAgKzEsNDIgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9InJlc291cmNlcy93ZWJ4cl91dGlsLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvd2VieHJfdGVzdF9jb25zdGFudHMuanMiPjwvc2NyaXB0PgorPGNhbnZh
cyAvPgorCis8c2NyaXB0PgorbGV0IHRlc3ROYW1lID0gImlubGluZVZlcnRpY2FsRmllbGRPZlZp
ZXcgaXMgc2V0IGFwcHJvcHJpYXRlbHkgb24gaW1tZXJzaXZlbHkgc2Vzc2lvbnMiOworCitsZXQg
ZmFrZURldmljZUluaXRQYXJhbXMgPSBUUkFDS0VEX0lNTUVSU0lWRV9ERVZJQ0U7CisKK2xldCB0
ZXN0RnVuY3Rpb24gPSBmdW5jdGlvbihzZXNzaW9uLCBmYWtlRGV2aWNlQ29udHJvbGxlciwgdCkg
eworICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4geworICAgICAgLy8g
aW5saW5lVmVydGljYWxGaWVsZE9mVmlldyBzaG91bGQgYmUgbnVsbCBmb3IgaW1tZXJzaXZlIHNl
c3Npb25zOworICAgICAgdC5zdGVwKCgpID0+IHsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhzZXNz
aW9uLnJlbmRlclN0YXRlLmlubGluZVZlcnRpY2FsRmllbGRPZlZpZXcsIG51bGwpOworICAgICAg
fSk7CisKKyAgICAgIC8vIFRyeWluZyB0byBzZXQgaXQgc2hvdWxkIHRocm93IGFuIGV4Y2VwdGlv
bgorICAgICAgdHJ5IHsKKyAgICAgICAgc2Vzc2lvbi51cGRhdGVSZW5kZXJTdGF0ZSh7CisgICAg
ICAgICAgaW5saW5lVmVydGljYWxGaWVsZE9mVmlldzogMS4wCisgICAgICAgIH0pOworCisgICAg
ICAgIHQuc3RlcCgoKSA9PiB7CisgICAgICAgICAgYXNzZXJ0X3VucmVhY2hlZCgiU2hvdWxkIG5v
dCBiZSBhYmxlIHRvIHNldCBpbmxpbmVWZXJ0aWNhbEZpZWxkT2ZWaWV3IG9uIGltbWVyc2l2ZSBz
ZXNzaW9ucyIpOworICAgICAgICB9KTsKKyAgICAgIH0gY2F0Y2goZXJyKSB7CisgICAgICAgIHQu
c3RlcCgoKSA9PiB7CisgICAgICAgICAgYXNzZXJ0X2VxdWFscyhlcnIubmFtZSwgIkludmFsaWRT
dGF0ZUVycm9yIik7CisgICAgICAgIH0pOworICAgICAgfQorCisgICAgICByZXNvbHZlKCk7Cisg
IH0pOworfTsKKworeHJfc2Vzc2lvbl9wcm9taXNlX3Rlc3QoCisgIHRlc3ROYW1lLCB0ZXN0RnVu
Y3Rpb24sIGZha2VEZXZpY2VJbml0UGFyYW1zLCAnaW1tZXJzaXZlLXZyJyk7CisKKzwvc2NyaXB0
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93ZWJ4ci9yZW5kZXJfc3RhdGVfdmVydGljYWxfZm92X2lubGluZS5odHRwcy5odG1sIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9yZW5kZXJfc3Rh
dGVfdmVydGljYWxfZm92X2lubGluZS5odHRwcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhiZjM4NGY0ZjE1
MGIwYjJlODQxYjMzZDY3ZTI5MDAxMTY5NGMwZjQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3JlbmRlcl9zdGF0ZV92
ZXJ0aWNhbF9mb3ZfaW5saW5lLmh0dHBzLmh0bWwKQEAgLTAsMCArMSw5MCBAQAorPCFET0NUWVBF
IGh0bWw+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3dlYnhyX3V0aWwuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9InJlc291cmNlcy93ZWJ4cl90ZXN0X2NvbnN0YW50cy5qcyI+PC9zY3JpcHQ+Cis8Y2Fu
dmFzIC8+CisKKzxzY3JpcHQ+CitsZXQgdGVzdE5hbWUgPSAiaW5saW5lVmVydGljYWxGaWVsZE9m
VmlldyBpcyBzZXQgYXBwcm9wcmlhdGVseSBvbiBpbmxpbmUgc2Vzc2lvbnMiOworCitsZXQgZmFr
ZURldmljZUluaXRQYXJhbXMgPSBWQUxJRF9OT05fSU1NRVJTSVZFX0RFVklDRTsKKworLy8gVGhl
c2UgYXJlIHRoZSBtaW4sIG1heCwgYW5kIGRlZmF1bHQgZnJvbSB0aGUgV2ViWFIgU3BlYworbGV0
IG1pbkZPViA9IDAuMDsKK2xldCBtYXhGT1YgPSBNYXRoLlBJOworbGV0IGRlZmF1bHRGT1YgPSBN
YXRoLlBJLzI7CisKK2Z1bmN0aW9uIGFzc2VydE5vdEVxdWFscyhuMSwgbjIsIG1lc3NhZ2UpIHsK
KyAgYXNzZXJ0X2dyZWF0ZXJfdGhhbihNYXRoLmFicyhuMS1uMiksIEZMT0FUX0VQU0lMT04sIG1l
c3NhZ2UpOworfQorCitsZXQgdGVzdEZ1bmN0aW9uID0gZnVuY3Rpb24oc2Vzc2lvbiwgZmFrZURl
dmljZUNvbnRyb2xsZXIsIHQpIHsKKyAgLy8gSGVscGVyIG1ldGhvZCBiZWNhdXNlIHRoZSByZW5k
ZXJTdGF0ZSBkb2VzIG5vdCAocGVyIHRoZSBzcGVjKSBnZXQgdXBkYXRlZAorICAvLyB1bnRpbCB0
aGUgbmV4dCByQUYgYWZ0ZXIgaXQgd2FzIHVwZGF0ZWQsIHNvIHRoaXMgbWV0aG9kIHJldHVybnMg
YSBwcm9taXNlCisgIC8vIHdoaWNoIHdpbGwgcmVzb2x2ZSB3aGVuIHRoZSB1cGRhdGVkIHN0YXRl
IHNob3VsZCBiZSBhcHBsaWVkLgorICBmdW5jdGlvbiB1cGRhdGVBbmRBcHBseUlubGluZUZPVihm
b3YpIHsKKyAgICBzZXNzaW9uLnVwZGF0ZVJlbmRlclN0YXRlKHsKKyAgICAgIGlubGluZVZlcnRp
Y2FsRmllbGRPZlZpZXc6IGZvdgorICAgIH0pOworCisgICAgcmV0dXJuIG5ldyBQcm9taXNlKChy
ZXNvbHZlLCByZWplY3QpID0+IHsKKyAgICAgIHNlc3Npb24ucmVxdWVzdEFuaW1hdGlvbkZyYW1l
KCgpID0+IHsgcmVzb2x2ZSgpOyB9KTsKKyAgICB9KTsKKyAgfQorCisgIC8vIEhlbHBlciBtZXRo
b2QgdG8ga2VlcCB0aGUgbGluZSBsZW5ndGggcmVhc29uYWJsZSB3aXRoIGEgbG9uZyBhdHRyaWJ1
dGUgbmFtZQorICAvLyBhbmQgZW5zdXJlIHRoYXQgdGhlIG51bGxhYmxlIHZhbHVlIGFjdHVhbGx5
IGhhcyBhIHZhbHVlLgorICBmdW5jdGlvbiBnZXRGT1YoKSB7CisgICAgbGV0IGZvdiA9IHNlc3Np
b24ucmVuZGVyU3RhdGUuaW5saW5lVmVydGljYWxGaWVsZE9mVmlldzsKKyAgICB0LnN0ZXAoKCkg
PT4geworICAgICAgYXNzZXJ0X25vdF9lcXVhbHMoZm92LCBudWxsKTsKKyAgICB9KTsKKworICAg
IHJldHVybiBmb3Y7CisgIH0KKworICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVj
dCkgPT4geworICAgICAgLy8gQmVnaW4gYnkgdmFsaWRhdGluZyB0aGF0IHRoZSBkZWZhdWx0IGlz
IHNldCBhcyBleHBlY3RlZC9zcGVjY2VkLgorICAgICAgdC5zdGVwKCgpID0+IHsKKyAgICAgICAg
YXNzZXJ0X2FwcHJveF9lcXVhbHMoZ2V0Rk9WKCksIGRlZmF1bHRGT1YsIEZMT0FUX0VQU0lMT04s
ICJkZWZhdWx0Iik7CisgICAgICB9KTsKKworICAgICAgLy8gU2V0IHNvbWV0aGluZyBiZWxvdyBt
aW4sIGFuZCBhc3NlcnQgdGhhdCBpdCBpcyBub3Qgc2V0IGJlbG93IHRoZSBtaW4sCisgICAgICAv
LyBhbmQgc2lnbmlmaWNhbnRseSBkaWZmZXJlbnQgZnJvbSB0aGUgZGVmYXVsdC4KKyAgICAgIHVw
ZGF0ZUFuZEFwcGx5SW5saW5lRk9WKC0xMCkudGhlbigoKSA9PiB7CisKKyAgICAgICAgdC5zdGVw
KCgpID0+IHsKKyAgICAgICAgICBsZXQgY3VycmVudEZPViA9IGdldEZPVigpOworICAgICAgICAg
IGFzc2VydF9ncmVhdGVyX3RoYW4oY3VycmVudEZPViwgbWluRk9WLCAiRk9WIG11c3QgYmUgc2V0
IHRvIHNvbWV0aGluZyBncmVhdGVyIHRoYW4gbWluIik7CisgICAgICAgICAgYXNzZXJ0X2xlc3Nf
dGhhbihjdXJyZW50Rk9WLCBtYXhGT1YsICJGT1YgbXVzdCBiZSBzZXQgdG8gc29tZXRoaW5nIGxl
c3MgdGhhbiBtYXgiKTsKKyAgICAgICAgICBhc3NlcnROb3RFcXVhbHMoY3VycmVudEZPViwgZGVm
YXVsdEZPViwgIkZPViBzaG91bGQgbm8gbG9uZ2VyIGJlIHNldCB0byB0aGUgZGVmYXVsdCIpOwor
ICAgICAgICB9KTsKKworICAgICAgICAvLyBTZXQgc29tZXRoaW5nIGFib3ZlIHRoZSBtYXggYW5k
IGFzc2VydCB0aGF0IGl0IGlzIHNldCB0byB0aGUgbWF4LgorICAgICAgICB1cGRhdGVBbmRBcHBs
eUlubGluZUZPVigxMCkudGhlbigoKT0+IHsKKyAgICAgICAgICB0LnN0ZXAoKCk9PiB7CisgICAg
ICAgICAgICBsZXQgY3VycmVudEZPViA9IGdldEZPVigpOworICAgICAgICAgICAgYXNzZXJ0X2dy
ZWF0ZXJfdGhhbihjdXJyZW50Rk9WLCBtaW5GT1YsICJGT1YgbXVzdCBiZSBzZXQgdG8gc29tZXRo
aW5nIGdyZWF0ZXIgdGhhbiBtaW4iKTsKKyAgICAgICAgICAgIGFzc2VydF9sZXNzX3RoYW4oY3Vy
cmVudEZPViwgbWF4Rk9WLCAiRk9WIG11c3QgYmUgc2V0IHRvIHNvbWV0aGluZyBsZXNzIHRoYW4g
bWF4Iik7CisgICAgICAgICAgICBhc3NlcnROb3RFcXVhbHMoY3VycmVudEZPViwgZGVmYXVsdEZP
ViwgIkZPViBzaG91bGQgbm90IGJlIHNldCB0byB0aGUgZGVmYXVsdCIpOworICAgICAgICAgIH0p
OworCisgICAgICAgICAgLy8gU2V0IHRvIHNvbWV0aGluZyByZWFzb25hYmxlIGFuZCBhc3NlcnQg
dGhhdCB0aGUgdmFsdWUgZ2V0cyBzZXQuCisgICAgICAgICAgbGV0IG5vcm1hbEZPViA9IDEuNTsK
KyAgICAgICAgICB1cGRhdGVBbmRBcHBseUlubGluZUZPVihub3JtYWxGT1YpLnRoZW4oKCkgPT4g
eworICAgICAgICAgICAgdC5zdGVwKCgpID0+IHsKKyAgICAgICAgICAgICAgYXNzZXJ0X2FwcHJv
eF9lcXVhbHMoZ2V0Rk9WKCksIG5vcm1hbEZPViwgRkxPQVRfRVBTSUxPTiwgIkZPViB3aXRoaW4g
bWluIGFuZCBtYXggc2hvdWxkIGdldCBzZXQiKTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAg
ICAgICByZXNvbHZlKCk7CisgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgICAgfSk7Cisg
IH0pOworfTsKKworeHJfc2Vzc2lvbl9wcm9taXNlX3Rlc3QoCisgIHRlc3ROYW1lLCB0ZXN0RnVu
Y3Rpb24sIGZha2VEZXZpY2VJbml0UGFyYW1zLCAnaW5saW5lJyk7CisKKzwvc2NyaXB0PgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4
ci9yZXNvdXJjZXMvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dlYnhyL3Jlc291cmNlcy93M2MtaW1wb3J0LmxvZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li43OGYxNDllMmNkNWJiNDZkYWExNzNjMDNhYWU0YmVmYmI3NjhjMzVjCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9y
ZXNvdXJjZXMvdzNjLWltcG9ydC5sb2cKQEAgLTAsMCArMSwyMiBAQAorVGhlIHRlc3RzIGluIHRo
aXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCitEbyBO
T1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KK0luc3RlYWQsIGNyZWF0
ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKKwlodHRwczovL2dpdGh1Yi5jb20v
d2ViLXBsYXRmb3JtLXRlc3RzL3dwdAorCitUaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBv
cnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAorCitEbyBOT1QgbW9kaWZ5IG9yIHJl
bW92ZSB0aGlzIGZpbGUuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorUHJvcGVydGllcyByZXF1aXJpbmcg
dmVuZG9yIHByZWZpeGVzOgorTm9uZQorUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3Ig
cHJlZml4ZXM6CitOb25lCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xpc3Qgb2YgZmlsZXM6CisvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9yZXNvdXJjZXMvd2Vi
eHJfY2hlY2suaHRtbAorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd2VieHIvcmVzb3VyY2VzL3dlYnhyX21hdGhfdXRpbHMuanMKKy9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3Jlc291cmNlcy93ZWJ4cl90ZXN0X2Fz
c2VydHMuanMKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dl
YnhyL3Jlc291cmNlcy93ZWJ4cl90ZXN0X2NvbnN0YW50cy5qcworL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvcmVzb3VyY2VzL3dlYnhyX3Rlc3RfY29u
c3RhbnRzX2Zha2Vfd29ybGQuanMKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dlYnhyL3Jlc291cmNlcy93ZWJ4cl91dGlsLmpzCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3Jlc291cmNlcy93
ZWJ4cl9jaGVjay5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93ZWJ4ci9yZXNvdXJjZXMvd2VieHJfY2hlY2suaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZDhlNWIz
ODdkYzg4NTg4OTIxY2NmYTQ5ZGQxNGRiNTgwMDk5MDBjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9yZXNvdXJjZXMv
d2VieHJfY2hlY2suaHRtbApAQCAtMCwwICsxLDE3IEBACis8c2NyaXB0IHNyYz13ZWJ4cl91dGls
LmpzPjwvc2NyaXB0PgorPHNjcmlwdD4KKyd1c2Ugc3RyaWN0JzsKK2xldCBkZWZpbmVkT2JqZWN0
cyA9IFtdOworbGV0IHVuZGVmaW5lZE9iamVjdHMgPSBbXTsKKworZm9yRWFjaFdlYnhyT2JqZWN0
KChvYmosIG5hbWUpID0+IHsKKyAgICBpZihvYmogPT0gdW5kZWZpbmVkKSB7CisgICAgICAgIHVu
ZGVmaW5lZE9iamVjdHMucHVzaChuYW1lKTsKKyAgICB9IGVsc2UgeworICAgICAgICBkZWZpbmVk
T2JqZWN0cy5wdXNoKG5hbWUpOworICAgIH0KK30pOworCit3aW5kb3cucGFyZW50LnBvc3RNZXNz
YWdlKHsgdW5kZWZpbmVkT2JqZWN0cywgZGVmaW5lZE9iamVjdHN9LCAnKicpOworCis8L3Njcmlw
dD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3Jlc291cmNlcy93ZWJ4cl9tYXRo
X3V0aWxzLmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
ZWJ4ci9yZXNvdXJjZXMvd2VieHJfbWF0aF91dGlscy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYjU1ZmI3Mjk3
ODY5MDQyN2FhYzM4Yjg0ZDFlYWMyNGU4MzhkMGViCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9yZXNvdXJjZXMvd2Vi
eHJfbWF0aF91dGlscy5qcwpAQCAtMCwwICsxLDYxIEBACisvLyB8bWF0cml4fCAtIEZsb2F0MzJB
cnJheSwgfGlucHV0fCAtIHBvaW50LWxpa2UgZGljdCAobXVzdCBoYXZlIHgsIHksIHosIHcpCits
ZXQgdHJhbnNmb3JtX3BvaW50X2J5X21hdHJpeCA9IGZ1bmN0aW9uKG1hdHJpeCwgaW5wdXQpIHsK
KyAgcmV0dXJuIHsKKyAgICB4IDogbWF0cml4WzBdICogaW5wdXQueCArIG1hdHJpeFs0XSAqIGlu
cHV0LnkgKyBtYXRyaXhbOF0gKiBpbnB1dC56ICsgbWF0cml4WzEyXSAqIGlucHV0LncsCisgICAg
eSA6IG1hdHJpeFsxXSAqIGlucHV0LnggKyBtYXRyaXhbNV0gKiBpbnB1dC55ICsgbWF0cml4Wzld
ICogaW5wdXQueiArIG1hdHJpeFsxM10gKiBpbnB1dC53LAorICAgIHogOiBtYXRyaXhbMl0gKiBp
bnB1dC54ICsgbWF0cml4WzZdICogaW5wdXQueSArIG1hdHJpeFsxMF0gKiBpbnB1dC56ICsgbWF0
cml4WzE0XSAqIGlucHV0LncsCisgICAgdyA6IG1hdHJpeFszXSAqIGlucHV0LnggKyBtYXRyaXhb
N10gKiBpbnB1dC55ICsgbWF0cml4WzExXSAqIGlucHV0LnogKyBtYXRyaXhbMTVdICogaW5wdXQu
dywKKyAgfTsKK30KKworLy8gQ3JlYXRlcyBhIHVuaXQtbGVuZ3RoIHF1YXRlcm5pb24uCisvLyB8
aW5wdXR8IC0gcG9pbnQtbGlrZSBkaWN0IChtdXN0IGhhdmUgeCwgeSwgeiwgdykKK2xldCBub3Jt
YWxpemVfcXVhdGVybmlvbiA9IGZ1bmN0aW9uKGlucHV0KSB7CisgIGNvbnN0IGxlbmd0aF9zcXVh
cmVkID0gaW5wdXQueCAqIGlucHV0LnggKyBpbnB1dC55ICogaW5wdXQueSArIGlucHV0LnogKiBp
bnB1dC56ICsgaW5wdXQudyAqIGlucHV0Lnc7CisgIGNvbnN0IGxlbmd0aCA9IE1hdGguc3FydChs
ZW5ndGhfc3F1YXJlZCk7CisKKyAgcmV0dXJuIHt4IDogaW5wdXQueCAvIGxlbmd0aCwgeSA6IGlu
cHV0LnkgLyBsZW5ndGgsIHogOiBpbnB1dC56IC8gbGVuZ3RoLCB3IDogaW5wdXQudyAvIGxlbmd0
aH07Cit9CisKKy8vIHxpbnB1dHwgLSBwb2ludC1saWtlIGRpY3QgKG11c3QgaGF2ZSB4LCB5LCB6
LCB3KQorbGV0IGNvbmp1Z2F0ZV9xdWF0ZXJuaW9uID0gZnVuY3Rpb24oaW5wdXQpIHsKKyAgcmV0
dXJuIHt4IDogLWlucHV0LngsIHkgOiAtaW5wdXQueSwgeiA6IC1pbnB1dC56LCB3IDogaW5wdXQu
d307Cit9CisKK2xldCBtdWx0aXBseV9xdWF0ZXJuaW9ucyA9IGZ1bmN0aW9uKHExLCBxMikgewor
ICByZXR1cm4geworICAgIHcgOiBxMS53ICogcTIudyAtIHExLnggKiBxMi54IC0gcTEueSAqIHEy
LnkgLSBxMS56ICogcTIueiwKKyAgICB4IDogcTEudyAqIHEyLnggKyBxMS54ICogcTIudyArIHEx
LnkgKiBxMi56IC0gcTEueiAqIHEyLnksCisgICAgeSA6IHExLncgKiBxMi55IC0gcTEueCAqIHEy
LnogKyBxMS55ICogcTIudyArIHExLnogKiBxMi54LAorICAgIHogOiBxMS53ICogcTIueiArIHEx
LnggKiBxMi55IC0gcTEueSAqIHEyLnggKyBxMS56ICogcTIudywKKyAgfQorfQorCisvLyB8cG9p
bnR8IC0gcG9pbnQtbGlrZSBkaWN0IChtdXN0IGhhdmUgeCwgeSwgeiwgdykKK2xldCBub3JtYWxp
emVfcGVyc3BlY3RpdmUgPSBmdW5jdGlvbihwb2ludCkgeworICBpZihwb2ludC53ID09IDAgfHwg
cG9pbnQudyA9PSAxKSByZXR1cm4gcG9pbnQ7CisKKyAgcmV0dXJuIHsKKyAgICB4IDogcG9pbnQu
eCAvIHBvaW50LncsCisgICAgeSA6IHBvaW50LnkgLyBwb2ludC53LAorICAgIHogOiBwb2ludC56
IC8gcG9pbnQudywKKyAgICB3IDogMQorICB9OworfQorCisvLyB8cXVhdGVybmlvbnwgLSBwb2lu
dC1saWtlIGRpY3QgKG11c3QgaGF2ZSB4LCB5LCB6LCB3KSwKKy8vIHxpbnB1dHwgLSBwb2ludC1s
aWtlIGRpY3QgKG11c3QgaGF2ZSB4LCB5LCB6LCB3KQorbGV0IHRyYW5zZm9ybV9wb2ludF9ieV9x
dWF0ZXJuaW9uID0gZnVuY3Rpb24ocXVhdGVybmlvbiwgaW5wdXQpIHsKKyAgY29uc3QgcV9ub3Jt
YWxpemVkID0gbm9ybWFsaXplX3F1YXRlcm5pb24ocXVhdGVybmlvbik7CisgIGNvbnN0IHFfY29u
aiA9IGNvbmp1Z2F0ZV9xdWF0ZXJuaW9uKHFfbm9ybWFsaXplZCk7CisgIGNvbnN0IHBfaW4gPSBu
b3JtYWxpemVfcGVyc3BlY3RpdmUoaW5wdXQpOworCisgIC8vIGNvbnN0cnVjdCBhIHF1YXRlcm5p
b24gb3V0IG9mIHRoZSBwb2ludCAodGFrZSB4eXogJiB6ZXJvIHRoZSByZWFsIHBhcnQpLgorICBj
b25zdCBwID0ge3ggOiBwX2luLngsIHkgOiBwX2luLnksIHogOiBwX2luLnosIHcgOiAwfTsKKwor
ICAvLyB0cmFuc2Zvcm0gdGhlIGlucHV0IHBvaW50CisgIGNvbnN0IHBfbXVsID0gbXVsdGlwbHlf
cXVhdGVybmlvbnMoIHFfbm9ybWFsaXplZCwgbXVsdGlwbHlfcXVhdGVybmlvbnMocCwgcV9jb25q
KSApOworCisgIC8vIGFkZCBiYWNrIHRoZSB3IGNvbXBvbmVudCBvZiB0aGUgaW5wdXQKKyAgcmV0
dXJuIHsgeCA6IHBfbXVsLngsIHkgOiBwX211bC55LCB6IDogcF9tdWwueiwgdyA6IHBfaW4udyB9
OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93ZWJ4ci9yZXNvdXJjZXMvd2VieHJfdGVzdF9hc3NlcnRzLmpzIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9yZXNvdXJjZXMvd2VieHJfdGVz
dF9hc3NlcnRzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM4ZjEzNjRjZTAzY2U5Njg5MGNkYTk3ZGNjMjI2Yjhl
NDcyZGQzMzIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dlYnhyL3Jlc291cmNlcy93ZWJ4cl90ZXN0X2Fzc2VydHMuanMKQEAg
LTAsMCArMSwxNTkgQEAKKy8vIFV0aWxpdHkgYXNzZXJ0IGZ1bmN0aW9ucy4KKy8vIFJlbGllcyBv
biByZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMgdG8gYmUgaW5jbHVkZWQgYmVmb3JlIHRoaXMgZmls
ZS4KKy8vIFJlbGllcyBvbiB3ZWJ4cl90ZXN0X2NvbnN0YW50cy5qcyB0byBiZSBpbmNsdWRlZCBi
ZWZvcmUgdGhpcyBmaWxlLgorCisvLyB8cDF8LCB8cDJ8IC0gb2JqZWN0cyB3aXRoIHgsIHksIHos
IHcgY29tcG9uZW50cyB0aGF0IGFyZSBmbG9hdGluZyBwb2ludCBudW1iZXJzCisvLyB8ZXBzaWxv
bnwgLSBmbG9hdCBzcGVjaWZ5aW5nIHByZWNpc2lvbgorLy8gfHByZWZpeHwgLSBzdHJpbmcgdXNl
ZCBhcyBhIHByZWZpeCBmb3IgbG9nZ2luZworY29uc3QgYXNzZXJ0X3BvaW50X2FwcHJveF9lcXVh
bHMgPSBmdW5jdGlvbihwMSwgcDIsIGVwc2lsb24gPSBGTE9BVF9FUFNJTE9OLCBwcmVmaXggPSAi
IikgeworICBpZiAocDEgPT0gbnVsbCAmJiBwMiA9PSBudWxsKSB7CisgICAgcmV0dXJuOworICB9
CisKKyAgYXNzZXJ0X25vdF9lcXVhbHMocDEsIG51bGwsIHByZWZpeCArICJwMSBtdXN0IGJlIG5v
bi1udWxsIik7CisgIGFzc2VydF9ub3RfZXF1YWxzKHAyLCBudWxsLCBwcmVmaXggKyAicDIgbXVz
dCBiZSBub24tbnVsbCIpOworCisgIGxldCBtaXNtYXRjaGVkX2NvbXBvbmVudCA9IG51bGw7Cisg
IGZvciAoY29uc3QgdiBvZiBbJ3gnLCAneScsICd6JywgJ3cnXSkgeworICAgIGlmIChNYXRoLmFi
cyhwMVt2XSAtIHAyW3ZdKSA+IGVwc2lsb24pIHsKKyAgICAgIG1pc21hdGNoZWRfY29tcG9uZW50
ID0gdjsKKyAgICAgIGJyZWFrOworICAgIH0KKyAgfQorCisgIGlmIChtaXNtYXRjaGVkX2NvbXBv
bmVudCAhPT0gbnVsbCkgeworICAgIGxldCBlcnJvcl9tZXNzYWdlID0gcHJlZml4ICsgJyBQb2lu
dCBjb21wYXJpc29uIGZhaWxlZC5cbic7CisgICAgZXJyb3JfbWVzc2FnZSArPSBgIHAxOiB7eDog
JHtwMS54fSwgeTogJHtwMS55fSwgejogJHtwMS56fSwgdzogJHtwMS53fX1cbmA7CisgICAgZXJy
b3JfbWVzc2FnZSArPSBgIHAyOiB7eDogJHtwMi54fSwgeTogJHtwMi55fSwgejogJHtwMi56fSwg
dzogJHtwMi53fX1cbmA7CisgICAgZXJyb3JfbWVzc2FnZSArPSBgIERpZmZlcmVuY2UgaW4gY29t
cG9uZW50ICR7bWlzbWF0Y2hlZF9jb21wb25lbnR9IGV4Y2VlZGVkIHRoZSBnaXZlbiBlcHNpbG9u
LlxuYDsKKyAgICBhc3NlcnRfYXBwcm94X2VxdWFscyhwMlttaXNtYXRjaGVkX2NvbXBvbmVudF0s
IHAxW21pc21hdGNoZWRfY29tcG9uZW50XSwgZXBzaWxvbiwgZXJyb3JfbWVzc2FnZSk7CisgIH0K
K307CisKKy8vIHxwMXwsIHxwMnwgLSBvYmplY3RzIHdpdGggeCwgeSwgeiwgdyBjb21wb25lbnRz
IHRoYXQgYXJlIGZsb2F0aW5nIHBvaW50IG51bWJlcnMKKy8vIHxlcHNpbG9ufCAtIGZsb2F0IHNw
ZWNpZnlpbmcgcHJlY2lzaW9uCisvLyB8cHJlZml4fCAtIHN0cmluZyB1c2VkIGFzIGEgcHJlZml4
IGZvciBsb2dnaW5nCitjb25zdCBhc3NlcnRfcG9pbnRfc2lnbmlmaWNhbnRseV9ub3RfZXF1YWxz
ID0gZnVuY3Rpb24ocDEsIHAyLCBlcHNpbG9uID0gRkxPQVRfRVBTSUxPTiwgcHJlZml4ID0gIiIp
IHsKKworICBhc3NlcnRfbm90X2VxdWFscyhwMSwgbnVsbCwgcHJlZml4ICsgInAxIG11c3QgYmUg
bm9uLW51bGwiKTsKKyAgYXNzZXJ0X25vdF9lcXVhbHMocDIsIG51bGwsIHByZWZpeCArICJwMiBt
dXN0IGJlIG5vbi1udWxsIik7CisKKyAgbGV0IG1pc21hdGNoZWRfY29tcG9uZW50ID0gbnVsbDsK
KyAgZm9yIChjb25zdCB2IG9mIFsneCcsICd5JywgJ3onLCAndyddKSB7CisgICAgaWYgKE1hdGgu
YWJzKHAxW3ZdIC0gcDJbdl0pID4gZXBzaWxvbikgeworICAgICAgbWlzbWF0Y2hlZF9jb21wb25l
bnQgPSB2OworICAgICAgYnJlYWs7CisgICAgfQorICB9CisKKyAgaWYgKG1pc21hdGNoZWRfY29t
cG9uZW50ID09PSBudWxsKSB7CisgICAgbGV0IGVycm9yX21lc3NhZ2UgPSBwcmVmaXggKyAnIFBv
aW50IGNvbXBhcmlzb24gZmFpbGVkLlxuJzsKKyAgICBlcnJvcl9tZXNzYWdlICs9IGAgcDE6IHt4
OiAke3AxLnh9LCB5OiAke3AxLnl9LCB6OiAke3AxLnp9LCB3OiAke3AxLnd9fVxuYDsKKyAgICBl
cnJvcl9tZXNzYWdlICs9IGAgcDI6IHt4OiAke3AyLnh9LCB5OiAke3AyLnl9LCB6OiAke3AyLnp9
LCB3OiAke3AyLnd9fVxuYDsKKyAgICBlcnJvcl9tZXNzYWdlICs9IGAgRGlmZmVyZW5jZSBpbiBj
b21wb25lbnRzIGRpZCBub3QgZXhjZWVkZWQgdGhlIGdpdmVuIGVwc2lsb24uXG5gOworICAgIGFz
c2VydF91bnJlYWNoZWQoZXJyb3JfbWVzc2FnZSk7CisgIH0KK307CisKKy8vIHx0MXwsIHx0Mnwg
LSBvYmplY3RzIGNvbnRhaW5pbmcgcG9zaXRpb24gYW5kIG9yaWVudGF0aW9uLgorLy8gfGVwc2ls
b258IC0gZmxvYXQgc3BlY2lmeWluZyBwcmVjaXNpb24KKy8vIHxwcmVmaXh8IC0gc3RyaW5nIHVz
ZWQgYXMgYSBwcmVmaXggZm9yIGxvZ2dpbmcKK2NvbnN0IGFzc2VydF90cmFuc2Zvcm1fYXBwcm94
X2VxdWFscyA9IGZ1bmN0aW9uKHQxLCB0MiwgZXBzaWxvbiA9IEZMT0FUX0VQU0lMT04sIHByZWZp
eCA9ICIiKSB7CisgIGlmICh0MSA9PSBudWxsICYmIHQyID09IG51bGwpIHsKKyAgICByZXR1cm47
CisgIH0KKworICBhc3NlcnRfbm90X2VxdWFscyh0MSwgbnVsbCwgcHJlZml4ICsgInQxIG11c3Qg
YmUgbm9uLW51bGwiKTsKKyAgYXNzZXJ0X25vdF9lcXVhbHModDIsIG51bGwsIHByZWZpeCArICJ0
MiBtdXN0IGJlIG5vbi1udWxsIik7CisKKyAgYXNzZXJ0X3BvaW50X2FwcHJveF9lcXVhbHModDEu
cG9zaXRpb24sIHQyLnBvc2l0aW9uLCBlcHNpbG9uLCBwcmVmaXggKyAicG9zaXRpb25zIG11c3Qg
YmUgZXF1YWwiKTsKKyAgYXNzZXJ0X3BvaW50X2FwcHJveF9lcXVhbHModDEub3JpZW50YXRpb24s
IHQyLm9yaWVudGF0aW9uLCBlcHNpbG9uLCBwcmVmaXggKyAib3JpZW50YXRpb25zIG11c3QgYmUg
ZXF1YWwiKTsKK307CisKKy8vIHxtMXwsIHxtMnwgLSBhcnJheXMgb2YgZmxvYXRpbmcgcG9pbnQg
bnVtYmVycworLy8gfGVwc2lsb258IC0gZmxvYXQgc3BlY2lmeWluZyBwcmVjaXNpb24KKy8vIHxw
cmVmaXh8IC0gc3RyaW5nIHVzZWQgYXMgYSBwcmVmaXggZm9yIGxvZ2dpbmcKK2NvbnN0IGFzc2Vy
dF9tYXRyaXhfYXBwcm94X2VxdWFscyA9IGZ1bmN0aW9uKG0xLCBtMiwgZXBzaWxvbiA9IEZMT0FU
X0VQU0lMT04sIHByZWZpeCA9ICIiKSB7CisgIGlmIChtMSA9PSBudWxsICYmIG0yID09IG51bGwp
IHsKKyAgICByZXR1cm47CisgIH0KKworICBhc3NlcnRfbm90X2VxdWFscyhtMSwgbnVsbCwgcHJl
Zml4ICsgIm0xIG11c3QgYmUgbm9uLW51bGwiKTsKKyAgYXNzZXJ0X25vdF9lcXVhbHMobTIsIG51
bGwsIHByZWZpeCArICJtMiBtdXN0IGJlIG5vbi1udWxsIik7CisKKyAgYXNzZXJ0X2VxdWFscyht
MS5sZW5ndGgsIDE2LCBwcmVmaXggKyAibTEgbXVzdCBoYXZlIGxlbmd0aCBvZiAxNiIpOworICBh
c3NlcnRfZXF1YWxzKG0yLmxlbmd0aCwgMTYsIHByZWZpeCArICJtMiBtdXN0IGhhdmUgbGVuZ3Ro
IG9mIDE2Iik7CisKKyAgbGV0IG1pc21hdGNoZWRfZWxlbWVudCA9IC0xOworICBmb3IgKGxldCBp
ID0gMDsgaSA8IDE2OyArK2kpIHsKKyAgICBpZiAoTWF0aC5hYnMobTFbaV0gLSBtMltpXSkgPiBl
cHNpbG9uKSB7CisgICAgICBtaXNtYXRjaGVkX2VsZW1lbnQgPSBpOworICAgICAgYnJlYWs7Cisg
ICAgfQorICB9CisKKyAgaWYgKG1pc21hdGNoZWRfZWxlbWVudCA+IC0xKSB7CisgICAgbGV0IGVy
cm9yX21lc3NhZ2UgPSBwcmVmaXggKyAnTWF0cml4IGNvbXBhcmlzb24gZmFpbGVkLlxuJzsKKyAg
ICBlcnJvcl9tZXNzYWdlICs9ICcgRGlmZmVyZW5jZSBpbiBlbGVtZW50ICcgKyBtaXNtYXRjaGVk
X2VsZW1lbnQgKworICAgICAgICAnIGV4Y2VlZGVkIHRoZSBnaXZlbiBlcHNpbG9uLlxuJzsKKwor
ICAgIGVycm9yX21lc3NhZ2UgKz0gJyBNYXRyaXggMTogWycgKyBtMS5qb2luKCcsJykgKyAnXVxu
JzsKKyAgICBlcnJvcl9tZXNzYWdlICs9ICcgTWF0cml4IDI6IFsnICsgbTIuam9pbignLCcpICsg
J11cbic7CisKKyAgICBhc3NlcnRfYXBwcm94X2VxdWFscygKKyAgICAgICAgbTFbbWlzbWF0Y2hl
ZF9lbGVtZW50XSwgbTJbbWlzbWF0Y2hlZF9lbGVtZW50XSwgZXBzaWxvbiwKKyAgICAgICAgZXJy
b3JfbWVzc2FnZSk7CisgIH0KK307CisKKy8vIHxtMXwsIHxtMnwgLSBhcnJheXMgb2YgZmxvYXRp
bmcgcG9pbnQgbnVtYmVycworLy8gfGVwc2lsb258IC0gZmxvYXQgc3BlY2lmeWluZyBwcmVjaXNp
b24KKy8vIHxwcmVmaXh8IC0gc3RyaW5nIHVzZWQgYXMgYSBwcmVmaXggZm9yIGxvZ2dpbmcKK2Nv
bnN0IGFzc2VydF9tYXRyaXhfc2lnbmlmaWNhbnRseV9ub3RfZXF1YWxzID0gZnVuY3Rpb24obTEs
IG0yLCBlcHNpbG9uID0gRkxPQVRfRVBTSUxPTiwgcHJlZml4ID0gIiIpIHsKKyAgaWYgKG0xID09
IG51bGwgJiYgbTIgPT0gbnVsbCkgeworICAgIHJldHVybjsKKyAgfQorCisgIGFzc2VydF9ub3Rf
ZXF1YWxzKG0xLCBudWxsLCBwcmVmaXggKyAibTEgbXVzdCBiZSBub24tbnVsbCIpOworICBhc3Nl
cnRfbm90X2VxdWFscyhtMiwgbnVsbCwgcHJlZml4ICsgIm0yIG11c3QgYmUgbm9uLW51bGwiKTsK
KworICBhc3NlcnRfZXF1YWxzKG0xLmxlbmd0aCwgMTYsIHByZWZpeCArICJtMSBtdXN0IGhhdmUg
bGVuZ3RoIG9mIDE2Iik7CisgIGFzc2VydF9lcXVhbHMobTIubGVuZ3RoLCAxNiwgcHJlZml4ICsg
Im0yIG11c3QgaGF2ZSBsZW5ndGggb2YgMTYiKTsKKworICBsZXQgbWlzbWF0Y2ggPSBmYWxzZTsK
KyAgZm9yIChsZXQgaSA9IDA7IGkgPCAxNjsgKytpKSB7CisgICAgaWYgKE1hdGguYWJzKG0xW2ld
IC0gbTJbaV0pID4gZXBzaWxvbikgeworICAgICAgbWlzbWF0Y2ggPSB0cnVlOworICAgICAgYnJl
YWs7CisgICAgfQorICB9CisKKyAgaWYgKCFtaXNtYXRjaCkgeworICAgIGxldCBtMV9zdHIgPSAn
Wyc7CisgICAgbGV0IG0yX3N0ciA9ICdbJzsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDE2OyAr
K2kpIHsKKyAgICAgIG0xX3N0ciArPSBtMVtpXSArIChpIDwgMTUgPyAnLCAnIDogJycpOworICAg
ICAgbTJfc3RyICs9IG0yW2ldICsgKGkgPCAxNSA/ICcsICcgOiAnJyk7CisgICAgfQorICAgIG0x
X3N0ciArPSAnXSc7CisgICAgbTJfc3RyICs9ICddJzsKKworICAgIGxldCBlcnJvcl9tZXNzYWdl
ID0gcHJlZml4ICsgJ01hdHJpeCBjb21wYXJpc29uIGZhaWxlZC5cbic7CisgICAgZXJyb3JfbWVz
c2FnZSArPQorICAgICAgICAnIE5vIGVsZW1lbnQgZXhjZWVkZWQgdGhlIGdpdmVuIGVwc2lsb24g
JyArIGVwc2lsb24gKyAnLlxuJzsKKworICAgIGVycm9yX21lc3NhZ2UgKz0gJyBNYXRyaXggQTog
JyArIG0xX3N0ciArICdcbic7CisgICAgZXJyb3JfbWVzc2FnZSArPSAnIE1hdHJpeCBCOiAnICsg
bTJfc3RyICsgJ1xuJzsKKworICAgIGFzc2VydF91bnJlYWNoZWQoZXJyb3JfbWVzc2FnZSk7Cisg
IH0KK307CisKKy8vIHxyMXwsIHxyMnwgLSBYUlJheSBvYmplY3RzCisvLyB8ZXBzaWxvbnwgLSBm
bG9hdCBzcGVjaWZ5aW5nIHByZWNpc2lvbgorLy8gfHByZWZpeHwgLSBzdHJpbmcgdXNlZCBhcyBh
IHByZWZpeCBmb3IgbG9nZ2luZworY29uc3QgYXNzZXJ0X3JheV9hcHByb3hfZXF1YWxzID0gZnVu
Y3Rpb24ocjEsIHIyLCBlcHNpbG9uID0gRkxPQVRfRVBTSUxPTiwgcHJlZml4ID0gIiIpIHsKKyAg
YXNzZXJ0X3BvaW50X2FwcHJveF9lcXVhbHMocjEub3JpZ2luLCByMi5vcmlnaW4sIGVwc2lsb24s
IHByZWZpeCArICJvcmlnaW46Iik7CisgIGFzc2VydF9wb2ludF9hcHByb3hfZXF1YWxzKHIxLmRp
cmVjdGlvbiwgcjIuZGlyZWN0aW9uLCBlcHNpbG9uLCBwcmVmaXggKyAiZGlyZWN0aW9uOiIpOwor
ICBhc3NlcnRfbWF0cml4X2FwcHJveF9lcXVhbHMocjEubWF0cml4LCByMi5tYXRyaXgsIGVwc2ls
b24sIHByZWZpeCArICJtYXRyaXg6Iik7Cit9OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9yZXNvdXJjZXMvd2VieHJfdGVzdF9j
b25zdGFudHMuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dlYnhyL3Jlc291cmNlcy93ZWJ4cl90ZXN0X2NvbnN0YW50cy5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kOTJk
YTNkOGYzNDg3NTY0OGE2ZTUwM2MxNGRhZjdkODM5MTUwMjNhCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9yZXNvdXJj
ZXMvd2VieHJfdGVzdF9jb25zdGFudHMuanMKQEAgLTAsMCArMSwxNzYgQEAKKy8vIGFzc2VydF9l
cXVhbHMgY2FuIGZhaWwgd2hlbiBjb21wYXJpbmcgZmxvYXRzIGR1ZSB0byBwcmVjaXNpb24gZXJy
b3JzLCBzbworLy8gdXNlIGFzc2VydF9hcHByb3hfZXF1YWxzIHdpdGggdGhpcyBjb25zdGFudCBp
bnN0ZWFkCitjb25zdCBGTE9BVF9FUFNJTE9OID0gMC4wMDE7CisKKy8vIElkZW50aXR5IG1hdHJp
eAorY29uc3QgSURFTlRJVFlfTUFUUklYID0gWzEsIDAsIDAsIDAsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgMCwgMSwgMCwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAwLCAwLCAxLCAw
LAorICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIDAsIDFdOworCitjb25zdCBJREVOVElU
WV9UUkFOU0ZPUk0gPSB7CisgICAgcG9zaXRpb246IFswLCAwLCAwXSwKKyAgICBvcmllbnRhdGlv
bjogWzAsIDAsIDAsIDFdLAorfTsKKworLy8gQSB2YWxpZCBwb3NlIG1hdHJpeC90cmFuc2Zvcm0g
Zm9yICB3aGVuIHdlIGRvbid0IGNhcmUgYWJvdXQgc3BlY2lmaWMgdmFsdWVzCisvLyBOb3RlIHRo
YXQgdGhlc2UgdHdvIHNob3VsZCBiZSBpZGVudGljYWwsIGp1c3QgZGlmZmVyZW50IHJlcHJlc2Vu
dGF0aW9ucworY29uc3QgVkFMSURfUE9TRV9NQVRSSVggPSBbMCwgMSwgMCwgMCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDAsIDAsIDEsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAxLCAwLCAwLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgMSwgMSwgMSwgMV07CisK
K2NvbnN0IFZBTElEX1BPU0VfVFJBTlNGT1JNID0geworICAgIHBvc2l0aW9uOiBbMSwgMSwgMV0s
CisgICAgb3JpZW50YXRpb246IFswLjUsIDAuNSwgMC41LCAwLjVdCit9OworCitjb25zdCBWQUxJ
RF9QUk9KRUNUSU9OX01BVFJJWCA9CisgICAgWzEsIDAsIDAsIDAsIDAsIDEsIDAsIDAsIDMsIDIs
IC0xLCAtMSwgMCwgMCwgLTAuMiwgMF07CisKKy8vIFRoaXMgaXMgYSBkZWNvbXBvc2VkIHZlcnNp
b24gb2YgdGhlIGFib3ZlLgorY29uc3QgVkFMSURfRklFTERfT0ZfVklFVyA9IHsKKyAgICB1cERl
Z3JlZXM6IDcxLjU2NSwKKyAgICBkb3duRGVncmVlczogLTQ1LAorICAgIGxlZnREZWdyZWVzOi02
My40MzQ5LAorICAgIHJpZ2h0RGVncmVlczogNzUuOTYzNworfTsKKworLy8gQSB2YWxpZCBpbnB1
dCBncmlwIG1hdHJpeCBmb3IgIHdoZW4gd2UgZG9uJ3QgY2FyZSBhYm91dCBzcGVjaWZpYyB2YWx1
ZXMKK2NvbnN0IFZBTElEX0dSSVAgPSBbMSwgMCwgMCwgMCwKKyAgICAgICAgICAgICAgICAgICAg
MCwgMSwgMCwgMCwKKyAgICAgICAgICAgICAgICAgICAgMCwgMCwgMSwgMCwKKyAgICAgICAgICAg
ICAgICAgICAgNCwgMywgMiwgMV07CisKK2NvbnN0IFZBTElEX0dSSVBfVFJBTlNGT1JNID0gewor
ICAgIHBvc2l0aW9uOiBbNCwgMywgMl0sCisgICAgb3JpZW50YXRpb246IFswLCAwLCAwLCAxXQor
fTsKKworLy8gQSB2YWxpZCBpbnB1dCBwb2ludGVyIG9mZnNldCBmb3IgIHdoZW4gd2UgZG9uJ3Qg
Y2FyZSBhYm91dCBzcGVjaWZpYyB2YWx1ZXMKK2NvbnN0IFZBTElEX1BPSU5URVJfT0ZGU0VUID0g
WzEsIDAsIDAsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAxLCAwLCAwLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCwgMSwgMCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDAsIDAsIDEsIDFdOworCitjb25zdCBWQUxJRF9QT0lOVEVSX1RSQU5T
Rk9STSA9IHsKKyAgICBwb3NpdGlvbjogWzAsIDAsIDFdLAorICAgIG9yaWVudGF0aW9uOiBbMCwg
MCwgMCwgMV0KK307CisKK2NvbnN0IFZBTElEX0dSSVBfV0lUSF9QT0lOVEVSX09GRlNFVCA9IFsx
LCAwLCAwLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDEs
IDAsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCwgMSwg
MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LCAzLCAzLCAxXTsK
KworLy8gQSBWYWxpZCBMb2NhbCB0byBmbG9vciBtYXRyaXgvdHJhbnNmb3JtIGZvciB3aGVuIHdl
IGRvbid0IGNhcmUgYWJvdXQgc3BlY2lmaWMKKy8vIHZhbHVlcy4gIE5vdGUgdGhhdCB0aGVzZSBz
aG91bGQgYmUgaWRlbnRpY2FsLCBqdXN0IGRpZmZlcmVudCByZXByZXNlbnRhdGlvbnMuCitjb25z
dCBWQUxJRF9GTE9PUl9PUklHSU5fTUFUUklYID0gWzEsIDAsICAgIDAsICAwLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDEsICAgIDAsICAwLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsICAgIDEsICAwLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDEsIDEuNjUsIC0xLCAxXTsKKworY29uc3QgVkFMSURfRkxP
T1JfT1JJR0lOID0geworICAgIHBvc2l0aW9uOiBbMS4wLCAxLjY1LCAtMS4wXSwKKyAgICBvcmll
bnRhdGlvbjogWzAsIDAsIDAsIDFdCit9OworCitjb25zdCBWQUxJRF9CT1VORFMgPSBbCisgICAg
eyB4OiAzLjAsIHo6IC0yLjAgfSwKKyAgICB7IHg6IDMuNSwgejogMC4wIH0sCisgICAgeyB4OiAz
LjAsIHo6IDIuMCB9LAorICAgIHsgeDogLTMuMCwgejogMi4wIH0sCisgICAgeyB4OiAtMy41LCB6
OiAwLjAgfSwKKyAgICB7IHg6IC0zLjAsIHo6IC0yLjAgfQorXTsKKworY29uc3QgVkFMSURfUkVT
T0xVVElPTiA9IHsKKyAgICB3aWR0aDogMjAwLAorICAgIGhlaWdodDogMjAwCit9OworCitjb25z
dCBMRUZUX09GRlNFVCA9IHsKKyAgICBwb3NpdGlvbjogWy0wLjEsIDAsIDBdLAorICAgIG9yaWVu
dGF0aW9uOiBbMCwgMCwgMCwgMV0KK307CisKK2NvbnN0IFJJR0hUX09GRlNFVCA9IHsKKyAgICBw
b3NpdGlvbjogWzAuMSwgMCwgMF0sCisgICAgb3JpZW50YXRpb246IFswLCAwLCAwLCAxXQorfTsK
KworY29uc3QgVkFMSURfVklFV1MgPSBbeworICAgICAgICBleWU6ImxlZnQiLAorICAgICAgICBw
cm9qZWN0aW9uTWF0cml4OiBWQUxJRF9QUk9KRUNUSU9OX01BVFJJWCwKKyAgICAgICAgdmlld09m
ZnNldDogTEVGVF9PRkZTRVQsCisgICAgICAgIHJlc29sdXRpb246IFZBTElEX1JFU09MVVRJT04K
KyAgICB9LCB7CisgICAgICAgIGV5ZToicmlnaHQiLAorICAgICAgICBwcm9qZWN0aW9uTWF0cml4
OiBWQUxJRF9QUk9KRUNUSU9OX01BVFJJWCwKKyAgICAgICAgdmlld09mZnNldDogUklHSFRfT0ZG
U0VULAorICAgICAgICByZXNvbHV0aW9uOiBWQUxJRF9SRVNPTFVUSU9OCisgICAgfSwKK107CisK
K2NvbnN0IE5PTl9JTU1FUlNJVkVfVklFV1MgPSBbeworICAgICAgICBleWU6ICJub25lIiwKKyAg
ICAgICAgcHJvamVjdGlvbk1hdHJpeDogVkFMSURfUFJPSkVDVElPTl9NQVRSSVgsCisgICAgICAg
IHZpZXdPZmZzZXQ6IElERU5USVRZX1RSQU5TRk9STSwKKyAgICAgICAgcmVzb2x1dGlvbjogVkFM
SURfUkVTT0xVVElPTiwKKyAgICB9CitdOworCitjb25zdCBBTExfRkVBVFVSRVMgPSBbCisgICd2
aWV3ZXInLAorICAnbG9jYWwnLAorICAnbG9jYWwtZmxvb3InLAorICAnYm91bmRlZC1mbG9vcics
CisgICd1bmJvdW5kZWQnLAorICAnaGl0LXRlc3QnLAorICAnZG9tLW92ZXJsYXknLAorXTsKKwor
Y29uc3QgVFJBQ0tFRF9JTU1FUlNJVkVfREVWSUNFID0geworICAgIHN1cHBvcnRzSW1tZXJzaXZl
OiB0cnVlLAorICAgIHN1cHBvcnRlZE1vZGVzOiBbICJpbmxpbmUiLCAiaW1tZXJzaXZlLXZyIl0s
CisgICAgdmlld3M6IFZBTElEX1ZJRVdTLAorICAgIHZpZXdlck9yaWdpbjogSURFTlRJVFlfVFJB
TlNGT1JNLAorICAgIHN1cHBvcnRlZEZlYXR1cmVzOiBBTExfRkVBVFVSRVMKK307CisKK2NvbnN0
IElNTUVSU0lWRV9BUl9ERVZJQ0UgPSB7CisgIHN1cHBvcnRzSW1tZXJzaXZlOiB0cnVlLAorICBz
dXBwb3J0ZWRNb2RlczogWyAiaW5saW5lIiwgImltbWVyc2l2ZS1hciJdLAorICB2aWV3czogVkFM
SURfVklFV1MsCisgIHZpZXdlck9yaWdpbjogSURFTlRJVFlfVFJBTlNGT1JNLAorICBzdXBwb3J0
ZWRGZWF0dXJlczogQUxMX0ZFQVRVUkVTCit9OworCitjb25zdCBWQUxJRF9OT05fSU1NRVJTSVZF
X0RFVklDRSA9IHsKKyAgICBzdXBwb3J0c0ltbWVyc2l2ZTogZmFsc2UsCisgICAgc3VwcG9ydGVk
TW9kZXM6IFsiaW5saW5lIl0sCisgICAgdmlld3M6IE5PTl9JTU1FUlNJVkVfVklFV1MsCisgICAg
dmlld2VyT3JpZ2luOiBJREVOVElUWV9UUkFOU0ZPUk0sCisgICAgc3VwcG9ydGVkRmVhdHVyZXM6
IEFMTF9GRUFUVVJFUworfTsKKworY29uc3QgVkFMSURfQ09OVFJPTExFUiA9IHsKKyAgICBoYW5k
ZWRuZXNzOiAibm9uZSIsCisgICAgdGFyZ2V0UmF5TW9kZTogInRyYWNrZWQtcG9pbnRlciIsCisg
ICAgcG9pbnRlck9yaWdpbjogVkFMSURfUE9JTlRFUl9UUkFOU0ZPUk0sCisgICAgcHJvZmlsZXM6
IFtdCit9OworCitjb25zdCBSSUdIVF9DT05UUk9MTEVSID0geworICAgIGhhbmRlZG5lc3M6ICJy
aWdodCIsCisgICAgdGFyZ2V0UmF5TW9kZTogInRyYWNrZWQtcG9pbnRlciIsCisgICAgcG9pbnRl
ck9yaWdpbjogVkFMSURfUE9JTlRFUl9UUkFOU0ZPUk0sCisgICAgcHJvZmlsZXM6IFtdCit9Owor
Citjb25zdCBTQ1JFRU5fQ09OVFJPTExFUiA9IHsKKyAgICBoYW5kZWRuZXNzOiAibm9uZSIsCisg
ICAgdGFyZ2V0UmF5TW9kZTogInNjcmVlbiIsCisgICAgcG9pbnRlck9yaWdpbjogVkFMSURfUE9J
TlRFUl9UUkFOU0ZPUk0sCisgICAgcHJvZmlsZXM6IFtdCit9OwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9yZXNvdXJjZXMvd2Vi
eHJfdGVzdF9jb25zdGFudHNfZmFrZV93b3JsZC5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvcmVzb3VyY2VzL3dlYnhyX3Rlc3RfY29uc3RhbnRz
X2Zha2Vfd29ybGQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGUyYWRjNjMzZmQ4OGJjMTNhNGFiNjJiZWU4NmI0
ZjNmYmQxOTQ3OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvcmVzb3VyY2VzL3dlYnhyX3Rlc3RfY29uc3RhbnRzX2Zh
a2Vfd29ybGQuanMKQEAgLTAsMCArMSw3OSBAQAorJ3VzZSBzdHJpY3QnOworCisvLyBUaGlzIGZp
bGUgaW50cm9kdWNlcyBjb25zdGFudHMgdXNlZCB0byBtb2NrIGZha2Ugd29ybGQgZm9yIHRoZSBw
dXJwb3NlcyBvZiBoaXQgdGVzdC4KKworLy8gR2VuZXJhdGVzIEZha2VYUldvcmxkSW5pdCBkaWN0
aW9uYXJ5IHdpdGggZ2l2ZW4gZGltZW5zaW9ucy4KKy8vIFRoZSBnZW5lcmF0ZWQgZmFrZSB3b3Js
ZCB3aWxsIGhhdmUgZmxvb3IgYW5kIGZyb250IHdhbGwgdHJlYXRlZCBhcyBwbGFuZXMsCisvLyBz
aWRlIHdhbGxzIHRyZWF0ZWQgYXMgbWVzaGVzLCBhbmQgY2VpbGluZyB0cmVhdGVkIGFzIHBvaW50
cy4KKy8vIHdpZHRoIC0gWCBheGlzLCBpbiBtZXRlcnMKKy8vIGhlaWdodCAtIFkgYXhpcywgaW4g
bWV0ZXJzCisvLyBsZW5ndGggLSBaIGF4aXMsIGluIG1ldGVycworZnVuY3Rpb24gY3JlYXRlRmFr
ZVdvcmxkKAorICB3aWR0aCwgaGVpZ2h0LCBsZW5ndGgsCisgIGZyb250X3dhbGxfYW5kX2Zsb29y
X3R5cGUgPSAicGxhbmUiLAorICBzaWRlX3dhbGxzX3R5cGUgPSAibWVzaCIsCisgIGNlaWxpbmdf
dHlwZSA9ICJwb2ludCIpIHsKKyAgLy8gVmVydGljZXM6CisgIGNvbnN0IEJPVFRPTV9MRUZUX0ZS
T05UID0geyB4OiAtd2lkdGgvMiwgeTogMCwgejogLWxlbmd0aC8yLCB3OiAxfTsKKyAgY29uc3Qg
Qk9UVE9NX1JJR0hUX0ZST05UID0geyB4OiB3aWR0aC8yLCB5OiAwLCB6OiAtbGVuZ3RoLzIsIHc6
IDF9OworCisgIGNvbnN0IFRPUF9MRUZUX0ZST05UID0geyB4OiAtd2lkdGgvMiwgeTogaGVpZ2h0
LCB6OiAtbGVuZ3RoLzIsIHc6IDF9OworICBjb25zdCBUT1BfUklHSFRfRlJPTlQgPSB7IHg6IHdp
ZHRoLzIsIHk6IGhlaWdodCwgejogLWxlbmd0aC8yLCB3OiAxfTsKKworICBjb25zdCBCT1RUT01f
TEVGVF9CQUNLID0geyB4OiAtd2lkdGgvMiwgeTogMCwgejogbGVuZ3RoLzIsIHc6IDF9OworICBj
b25zdCBCT1RUT01fUklHSFRfQkFDSyA9IHsgeDogd2lkdGgvMiwgeTogMCwgejogbGVuZ3RoLzIs
IHc6IDF9OworCisgIGNvbnN0IFRPUF9MRUZUX0JBQ0sgPSB7IHg6IC13aWR0aC8yLCB5OiBoZWln
aHQsIHo6IGxlbmd0aC8yLCB3OiAxfTsKKyAgY29uc3QgVE9QX1JJR0hUX0JBQ0sgPSB7IHg6IHdp
ZHRoLzIsIHk6IGhlaWdodCwgejogbGVuZ3RoLzIsIHc6IDF9OworCisgIC8vIEZhY2VzOgorICBj
b25zdCBGUk9OVF9XQUxMX0FORF9GTE9PUl9GQUNFUyA9IFsKKyAgICAvLyBGcm9udCB3YWxsOgor
ICAgIFtCT1RUT01fTEVGVF9GUk9OVCwgQk9UVE9NX1JJR0hUX0ZST05ULCBUT1BfUklHSFRfRlJP
TlRdLAorICAgIFtCT1RUT01fTEVGVF9GUk9OVCwgVE9QX1JJR0hUX0ZST05ULCBUT1BfTEVGVF9G
Uk9OVF0sCisgICAgLy8gRmxvb3I6CisgICAgW0JPVFRPTV9MRUZUX0ZST05ULCBCT1RUT01fUklH
SFRfRlJPTlQsIEJPVFRPTV9SSUdIVF9CQUNLXSwKKyAgICBbQk9UVE9NX0xFRlRfRlJPTlQsIEJP
VFRPTV9MRUZUX0JBQ0ssIEJPVFRPTV9SSUdIVF9CQUNLXSwKKyAgXTsKKworICBjb25zdCBDRUlM
SU5HX0ZBQ0VTID0gWworICAgIC8vIENlaWxpbmc6CisgICAgW1RPUF9MRUZUX0ZST05ULCBUT1Bf
UklHSFRfRlJPTlQsIFRPUF9SSUdIVF9CQUNLXSwKKyAgICBbVE9QX0xFRlRfRlJPTlQsIFRPUF9M
RUZUX0JBQ0ssIFRPUF9SSUdIVF9CQUNLXSwKKyAgXTsKKworICBjb25zdCBTSURFX1dBTExTX0ZB
Q0VTID0gWworICAgIC8vIExlZnQ6CisgICAgW0JPVFRPTV9MRUZUX0ZST05ULCBUT1BfTEVGVF9G
Uk9OVCwgVE9QX0xFRlRfQkFDS10sCisgICAgW0JPVFRPTV9MRUZUX0ZST05ULCBCT1RUT01fTEVG
VF9CQUNLLCBUT1BfTEVGVF9CQUNLXSwKKyAgICAvLyBSaWdodDoKKyAgICBbQk9UVE9NX1JJR0hU
X0ZST05ULCBUT1BfUklHSFRfRlJPTlQsIFRPUF9SSUdIVF9CQUNLXSwKKyAgICBbQk9UVE9NX1JJ
R0hUX0ZST05ULCBCT1RUT01fUklHSFRfQkFDSywgVE9QX1JJR0hUX0JBQ0tdLAorICBdOworCisg
IC8vIFJlZ2lvbnM6CisgIGNvbnN0IEZST05UX1dBTExfQU5EX0ZMT09SX1JFR0lPTiA9IHsKKyAg
ICB0eXBlOiBmcm9udF93YWxsX2FuZF9mbG9vcl90eXBlLAorICAgIGZhY2VzOiBGUk9OVF9XQUxM
X0FORF9GTE9PUl9GQUNFUywKKyAgfTsKKworICBjb25zdCBTSURFX1dBTExTX1JFR0lPTiA9IHsK
KyAgICB0eXBlOiBzaWRlX3dhbGxzX3R5cGUsCisgICAgZmFjZXM6IFNJREVfV0FMTFNfRkFDRVMs
CisgIH07CisKKyAgY29uc3QgQ0VJTElOR19SRUdJT04gPSB7CisgICAgdHlwZTogY2VpbGluZ190
eXBlLAorICAgIGZhY2VzOiBDRUlMSU5HX0ZBQ0VTLAorICB9OworCisgIHJldHVybiB7CisgICAg
aGl0VGVzdFJlZ2lvbnMgOiBbCisgICAgICBGUk9OVF9XQUxMX0FORF9GTE9PUl9SRUdJT04sCisg
ICAgICBTSURFX1dBTExTX1JFR0lPTiwKKyAgICAgIENFSUxJTkdfUkVHSU9OLAorICAgIF0KKyAg
fTsKK30KKworY29uc3QgVkFMSURfRkFLRV9XT1JMRCA9IGNyZWF0ZUZha2VXb3JsZCg1LjAsIDIu
MCwgNS4wKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvd2VieHIvcmVzb3VyY2VzL3dlYnhyX3V0aWwuanMgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3Jlc291cmNlcy93ZWJ4cl91dGlsLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjcyYTIxYzBmZjI5ZTI2NmM5NTA1MWUyNzgwZjU5NGQ0NGRhMDY1NmIKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dlYnhyL3Jlc291cmNlcy93ZWJ4cl91dGlsLmpzCkBAIC0wLDAgKzEsMTg4IEBACisvLyBU
aGVzZSB0ZXN0cyByZWx5IG9uIHRoZSBVc2VyIEFnZW50IHByb3ZpZGluZyBhbiBpbXBsZW1lbnRh
dGlvbiBvZiB0aGUKKy8vIFdlYlhSIFRlc3RpbmcgQVBJIChodHRwczovL2dpdGh1Yi5jb20vaW1t
ZXJzaXZlLXdlYi93ZWJ4ci10ZXN0LWFwaSkuCisvLworLy8gSW4gQ2hyb21pdW0tYmFzZWQgYnJv
d3NlcnMsIHRoaXMgaW1wbGVtZW50YXRpb24gaXMgcHJvdmlkZWQgYnkgYSBKYXZhU2NyaXB0Cisv
LyBzaGltIGluIG9yZGVyIHRvIHJlZHVjZSB0aGUgYW1vdW50IG9mIHRlc3Qtb25seSBjb2RlIHNo
aXBwZWQgdG8gdXNlcnMuIFRvCisvLyBlbmFibGUgdGhlc2UgdGVzdHMgdGhlIGJyb3dzZXIgbXVz
dCBiZSBydW4gd2l0aCB0aGVzZSBvcHRpb25zOgorLy8KKy8vICAgLS1lbmFibGUtYmxpbmstZmVh
dHVyZXM9TW9qb0pTLE1vam9KU1Rlc3QKKworZnVuY3Rpb24geHJfcHJvbWlzZV90ZXN0KG5hbWUs
IGZ1bmMsIHByb3BlcnRpZXMpIHsKKyAgcHJvbWlzZV90ZXN0KGFzeW5jICh0KSA9PiB7CisgICAg
Ly8gUGVyZm9ybSBhbnkgcmVxdWlyZWQgdGVzdCBzZXR1cDoKKworICAgIGlmICh3aW5kb3cuWFJU
ZXN0ID09PSB1bmRlZmluZWQpIHsKKyAgICAgIC8vIENocm9tZSBzZXR1cAorICAgICAgYXdhaXQg
bG9hZENocm9taXVtUmVzb3VyY2VzOworICAgIH0KKworICAgIC8vIEVuc3VyZSB0aGF0IGFueSBk
ZXZpY2VzIGFyZSBkaXNjb25uZWN0ZWQgd2hlbiBkb25lLiBJZiB0aGlzIHdlcmUgZG9uZSBpbgor
ICAgIC8vIGEgLnRoZW4oKSBmb3IgdGhlIHN1Y2Nlc3MgY2FzZSwgYSB0ZXN0IHRoYXQgZXhwZWN0
ZWQgZmFpbHVyZSB3b3VsZAorICAgIC8vIGFscmVhZHkgYmUgbWFya2VkIGRvbmUgYXQgdGhlIHRp
bWUgdGhhdCBydW5zIGFuZCB0aGUgc2h1dGRvd24gd291bGQKKyAgICAvLyBpbnRlcmZlcmUgd2l0
aCB0aGUgbmV4dCB0ZXN0LgorICAgIHQuYWRkX2NsZWFudXAoYXN5bmMgKCkgPT4geworICAgICAg
Ly8gRW5zdXJlIHN5c3RlbSBzdGF0ZSBpcyBjbGVhbmVkIHVwLgorICAgICAgYXdhaXQgbmF2aWdh
dG9yLnhyLnRlc3QuZGlzY29ubmVjdEFsbERldmljZXMoKTsKKyAgICB9KTsKKworICAgIHJldHVy
biBmdW5jKHQpOworICB9LCBuYW1lLCBwcm9wZXJ0aWVzKTsKK30KKworLy8gQSB0ZXN0IGZ1bmN0
aW9uIHdoaWNoIHJ1bnMgdGhyb3VnaCB0aGUgY29tbW9uIHN0ZXBzIG9mIHJlcXVlc3RpbmcgYSBz
ZXNzaW9uLgorLy8gQ2FsbHMgdGhlIHBhc3NlZCBpbiB0ZXN0IGZ1bmN0aW9uIHdpdGggdGhlIHNl
c3Npb24sIHRoZSBjb250cm9sbGVyIGZvciB0aGUKKy8vIGRldmljZSwgYW5kIHRoZSB0ZXN0IG9i
amVjdC4KKy8vIFJlcXVpcmVzIGEgd2ViZ2xDYW52YXMgb24gdGhlIHBhZ2UuCitmdW5jdGlvbiB4
cl9zZXNzaW9uX3Byb21pc2VfdGVzdCgKKyAgICBuYW1lLCBmdW5jLCBmYWtlRGV2aWNlSW5pdCwg
c2Vzc2lvbk1vZGUsIHNlc3Npb25Jbml0LCBwcm9wZXJ0aWVzLCBnbGNvbnRleHRQcm9wZXJ0aWVz
UGFyYW0sIGdsbGF5ZXJQcm9wZXJ0aWVzUGFyYW0pIHsKKyAgbGV0IHRlc3REZXZpY2VDb250cm9s
bGVyOworICBsZXQgdGVzdFNlc3Npb247CisgIGxldCBzZXNzaW9uT2JqZWN0cyA9IHt9OworICBj
b25zdCBnbGNvbnRleHRQcm9wZXJ0aWVzID0gKGdsY29udGV4dFByb3BlcnRpZXNQYXJhbSkgPyBn
bGNvbnRleHRQcm9wZXJ0aWVzUGFyYW0gOiB7fTsKKyAgY29uc3QgZ2xsYXllclByb3BlcnRpZXMg
PSAoZ2xsYXllclByb3BlcnRpZXNQYXJhbSkgPyBnbGxheWVyUHJvcGVydGllc1BhcmFtIDoge307
CisKKyAgY29uc3Qgd2ViZ2xDYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgn
Y2FudmFzJylbMF07CisgIC8vIFdlIGNhbid0IHVzZSBhc3NlcnRfdHJ1ZSBoZXJlIGJlY2F1c2Ug
aXQgY2F1c2VzIHRoZSB3cHQgdGVzdGhhcm5lc3MgdG8gdHJlYXQKKyAgLy8gdGhpcyBhcyBhIHRl
c3QgcGFnZSBhbmQgbm90IGFzIGEgdGVzdC4KKyAgaWYgKCF3ZWJnbENhbnZhcykgeworICAgIHBy
b21pc2VfdGVzdChhc3luYyAodCkgPT4geworICAgICAgUHJvbWlzZS5yZWplY3QoJ3hyX3Nlc3Np
b25fcHJvbWlzZV90ZXN0IHJlcXVpcmVzIGEgY2FudmFzIG9uIHRoZSBwYWdlIScpOworICAgIH0s
IG5hbWUsIHByb3BlcnRpZXMpOworICB9CisgIGxldCBnbCA9IHdlYmdsQ2FudmFzLmdldENvbnRl
eHQoJ3dlYmdsJywge2FscGhhOiBmYWxzZSwgYW50aWFsaWFzOiBmYWxzZSwgLi4uZ2xjb250ZXh0
UHJvcGVydGllc30pOworICBzZXNzaW9uT2JqZWN0cy5nbCA9IGdsOworCisgIHhyX3Byb21pc2Vf
dGVzdCgKKyAgICAgIG5hbWUsCisgICAgICAodCkgPT4geworICAgICAgICAgIC8vIEVuc3VyZSB0
aGF0IGFueSBwZW5kaW5nIHNlc3Npb25zIGFyZSBlbmRlZCB3aGVuIGRvbmUuIFRoaXMgbmVlZHMg
dG8KKyAgICAgICAgICAvLyB1c2UgYSBjbGVhbnVwIGZ1bmN0aW9uIHRvIGVuc3VyZSBwcm9wZXIg
c2VxdWVuY2luZy4gSWYgdGhpcyB3ZXJlCisgICAgICAgICAgLy8gZG9uZSBpbiBhIC50aGVuKCkg
Zm9yIHRoZSBzdWNjZXNzIGNhc2UsIGEgdGVzdCB0aGF0IGV4cGVjdGVkCisgICAgICAgICAgLy8g
ZmFpbHVyZSB3b3VsZCBhbHJlYWR5IGJlIG1hcmtlZCBkb25lIGF0IHRoZSB0aW1lIHRoYXQgcnVu
cywgYW5kIHRoZQorICAgICAgICAgIC8vIHNodXRkb3duIHdvdWxkIGludGVyZmVyZSB3aXRoIHRo
ZSBuZXh0IHRlc3Qgd2hpY2ggbWF5IGhhdmUgc3RhcnRlZC4KKyAgICAgICAgICB0LmFkZF9jbGVh
bnVwKGFzeW5jICgpID0+IHsKKyAgICAgICAgICAgIC8vIElmIGEgc2Vzc2lvbiB3YXMgY3JlYXRl
ZCwgZW5kIGl0LgorICAgICAgICAgICAgaWYgKHRlc3RTZXNzaW9uKSB7CisgICAgICAgICAgICAg
IGF3YWl0IHRlc3RTZXNzaW9uLmVuZCgpLmNhdGNoKCgpID0+IHt9KTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICB9KTsKKworICAgICAgICAgIHJldHVybiBuYXZpZ2F0b3IueHIudGVzdC5zaW11
bGF0ZURldmljZUNvbm5lY3Rpb24oZmFrZURldmljZUluaXQpCisgICAgICAgICAgICAgIC50aGVu
KChjb250cm9sbGVyKSA9PiB7CisgICAgICAgICAgICAgICAgdGVzdERldmljZUNvbnRyb2xsZXIg
PSBjb250cm9sbGVyOworICAgICAgICAgICAgICAgIHJldHVybiBnbC5tYWtlWFJDb21wYXRpYmxl
KCk7CisgICAgICAgICAgICAgIH0pCisgICAgICAgICAgICAgIC50aGVuKCgpID0+IG5ldyBQcm9t
aXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgICAvLyBQZXJm
b3JtIHRoZSBzZXNzaW9uIHJlcXVlc3QgaW4gYSB1c2VyIGdlc3R1cmUuCisgICAgICAgICAgICAg
ICAgICAgICAgbmF2aWdhdG9yLnhyLnRlc3Quc2ltdWxhdGVVc2VyQWN0aXZhdGlvbigoKSA9PiB7
CisgICAgICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0b3IueHIucmVxdWVzdFNlc3Npb24oc2Vz
c2lvbk1vZGUsIHNlc3Npb25Jbml0IHx8IHt9KQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC50aGVuKChzZXNzaW9uKSA9PiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0
U2Vzc2lvbiA9IHNlc3Npb247CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9u
Lm1vZGUgPSBzZXNzaW9uTW9kZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBn
bExheWVyID0gbmV3IFhSV2ViR0xMYXllcihzZXNzaW9uLCBnbCwgZ2xsYXllclByb3BlcnRpZXMp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xMYXllci5jb250ZXh0ID0gZ2w7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTZXNzaW9uIG11c3QgaGF2ZSBhIGJhc2VM
YXllciBvciBmcmFtZSByZXF1ZXN0cworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
d2lsbCBiZSBpZ25vcmVkLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbi51
cGRhdGVSZW5kZXJTdGF0ZSh7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFz
ZUxheWVyOiBnbExheWVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNlc3Npb25PYmplY3RzLmdsTGF5ZXIgPSBnbExheWVy
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShmdW5jKHNlc3Npb24sIHRl
c3REZXZpY2VDb250cm9sbGVyLCB0LCBzZXNzaW9uT2JqZWN0cykpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmNhdGNoKChlcnIp
ID0+IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdCgKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAnU2Vzc2lvbiB3aXRoIHBhcmFtcyAnICsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBKU09OLnN0cmluZ2lmeShzZXNzaW9uTW9kZSkgKwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgd2FzIHJlamVjdGVkIG9uIGRldmlj
ZSAnICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKU09OLnN0cmluZ2lmeShm
YWtlRGV2aWNlSW5pdCkgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgd2l0
aCBlcnJvcjogJyArIGVycik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CisgICAg
ICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgIH0pKTsKKyAgICAgIH0sCisgICAg
ICBwcm9wZXJ0aWVzKTsKK30KKworCisvLyBUaGlzIGZ1bmN0aW9uIHdyYXBzIHRoZSBwcm92aWRl
ZCBmdW5jdGlvbiBpbiBhCisvLyBzaW11bGF0ZVVzZXJBY3RpdmF0aW9uKCkgY2FsbCwgYW5kIHJl
c29sdmVzIHRoZSBwcm9taXNlIHdpdGggdGhlCisvLyByZXN1bHQgb2YgZnVuYygpLCBvciBhbiBl
cnJvciBpZiBvbmUgaXMgdGhyb3duCitmdW5jdGlvbiBwcm9taXNlX3NpbXVsYXRlX3VzZXJfYWN0
aXZhdGlvbihmdW5jKSB7CisgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9
PiB7CisgICAgbmF2aWdhdG9yLnhyLnRlc3Quc2ltdWxhdGVVc2VyQWN0aXZhdGlvbigoKSA9PiB7
CisgICAgICB0cnkgeyBsZXQgYSA9IGZ1bmMoKTsgcmVzb2x2ZShhKTsgfSBjYXRjaChlKSB7IHJl
amVjdChlKTsgfQorICAgIH0pOworICB9KTsKK30KKworLy8gVGhpcyBmdW5jdGlvbnMgY2FsbHMg
YSBjYWxsYmFjayB3aXRoIGVhY2ggQVBJIG9iamVjdCBhcyBzcGVjaWZpZWQKKy8vIGJ5IGh0dHBz
Oi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHIvc3BlYy9sYXRlc3QvLCBhbGxvd2luZwor
Ly8gY2hlY2tzIHRvIGJlIG1hZGUgb24gYWxsIG9qZWN0cy4KKy8vIEFyZ3VlbWVudHM6CisvLyAg
ICAgIGNhbGxiYWNrOiBBIGNhbGxiYWNrIGZ1bmN0aW9uIHdpdGggdHdvIGFyZ3VlbWVudHMsIHRo
ZSBmaXJzdAorLy8gICAgICAgICAgICAgICAgYmVpbmcgdGhlIEFQSSBvYmplY3QsIHRoZSBzZWNv
bmQgYmVpbmcgdGhlIG5hbWUgb2YKKy8vICAgICAgICAgICAgICAgIHRoYXQgQVBJIG9iamVjdC4K
K2Z1bmN0aW9uIGZvckVhY2hXZWJ4ck9iamVjdChjYWxsYmFjaykgeworICBjYWxsYmFjayh3aW5k
b3cubmF2aWdhdG9yLnhyLCAnbmF2aWdhdG9yLnhyJyk7CisgIGNhbGxiYWNrKHdpbmRvdy5YUlNl
c3Npb24sICdYUlNlc3Npb24nKTsKKyAgY2FsbGJhY2sod2luZG93LlhSU2Vzc2lvbkNyZWF0aW9u
T3B0aW9ucywgJ1hSU2Vzc2lvbkNyZWF0aW9uT3B0aW9ucycpOworICBjYWxsYmFjayh3aW5kb3cu
WFJGcmFtZVJlcXVlc3RDYWxsYmFjaywgJ1hSRnJhbWVSZXF1ZXN0Q2FsbGJhY2snKTsKKyAgY2Fs
bGJhY2sod2luZG93LlhSUHJlc2VudGF0aW9uQ29udGV4dCwgJ1hSUHJlc2VudGF0aW9uQ29udGV4
dCcpOworICBjYWxsYmFjayh3aW5kb3cuWFJGcmFtZSwgJ1hSRnJhbWUnKTsKKyAgY2FsbGJhY2so
d2luZG93LlhSVmlldywgJ1hSVmlldycpOworICBjYWxsYmFjayh3aW5kb3cuWFJWaWV3cG9ydCwg
J1hSVmlld3BvcnQnKTsKKyAgY2FsbGJhY2sod2luZG93LlhSVmlld2VyUG9zZSwgJ1hSVmlld2Vy
UG9zZScpOworICBjYWxsYmFjayh3aW5kb3cuWFJXZWJHTExheWVyLCAnWFJXZWJHTExheWVyJyk7
CisgIGNhbGxiYWNrKHdpbmRvdy5YUldlYkdMTGF5ZXJJbml0LCAnWFJXZWJHTExheWVySW5pdCcp
OworICBjYWxsYmFjayh3aW5kb3cuWFJDb29yZGluYXRlU3lzdGVtLCAnWFJDb29yZGluYXRlU3lz
dGVtJyk7CisgIGNhbGxiYWNrKHdpbmRvdy5YUkZyYW1lT2ZSZWZlcmVuY2UsICdYUkZyYW1lT2ZS
ZWZlcmVuY2UnKTsKKyAgY2FsbGJhY2sod2luZG93LlhSU3RhZ2VCb3VuZHMsICdYUlN0YWdlQm91
bmRzJyk7CisgIGNhbGxiYWNrKHdpbmRvdy5YUlNlc3Npb25FdmVudCwgJ1hSU2Vzc2lvbkV2ZW50
Jyk7CisgIGNhbGxiYWNrKHdpbmRvdy5YUkNvb3JkaW5hdGVTeXN0ZW1FdmVudCwgJ1hSQ29vcmRp
bmF0ZVN5c3RlbUV2ZW50Jyk7Cit9CisKKy8vIENvZGUgZm9yIGxvYWRpbmcgdGVzdCBBUEkgaW4g
Q2hyb21pdW0uCitsZXQgbG9hZENocm9taXVtUmVzb3VyY2VzID0gUHJvbWlzZS5yZXNvbHZlKCku
dGhlbigoKSA9PiB7CisgIGlmICghKCdNb2pvSW50ZXJmYWNlSW50ZXJjZXB0b3InIGluIHNlbGYp
KSB7CisgICAgLy8gRG8gbm90aGluZyBvbiBub24tQ2hyb21pdW0tYmFzZWQgYnJvd3NlcnMgb3Ig
d2hlbiB0aGUgTW9qbyBiaW5kaW5ncyBhcmUKKyAgICAvLyBub3QgcHJlc2VudCBpbiB0aGUgZ2xv
YmFsIG5hbWVzcGFjZS4KKyAgICByZXR1cm47CisgIH0KKworICBsZXQgY2hyb21pdW1SZXNvdXJj
ZXMgPSBbCisgICAgJy9nZW4vbGF5b3V0X3Rlc3RfZGF0YS9tb2pvL3B1YmxpYy9qcy9tb2pvX2Jp
bmRpbmdzLmpzJywKKyAgICAnL2dlbi9tb2pvL3B1YmxpYy9tb2pvbS9iYXNlL3RpbWUubW9qb20u
anMnLAorICAgICcvZ2VuL2dwdS9pcGMvY29tbW9uL21haWxib3hfaG9sZGVyLm1vam9tLmpzJywK
KyAgICAnL2dlbi9ncHUvaXBjL2NvbW1vbi9zeW5jX3Rva2VuLm1vam9tLmpzJywKKyAgICAnL2dl
bi91aS9kaXNwbGF5L21vam9tL2Rpc3BsYXkubW9qb20uanMnLAorICAgICcvZ2VuL3VpL2dmeC9n
ZW9tZXRyeS9tb2pvbS9nZW9tZXRyeS5tb2pvbS5qcycsCisgICAgJy9nZW4vdWkvZ2Z4L21vam9t
L2dwdV9mZW5jZV9oYW5kbGUubW9qb20uanMnLAorICAgICcvZ2VuL3VpL2dmeC9tb2pvbS90cmFu
c2Zvcm0ubW9qb20uanMnLAorICAgICcvZ2VuL2RldmljZS92ci9wdWJsaWMvbW9qb20vdnJfc2Vy
dmljZS5tb2pvbS5qcycsCisgICAgJy9yZXNvdXJjZXMvY2hyb21pdW0vd2VieHItdGVzdC1tYXRo
LWhlbHBlci5qcycsCisgICAgJy9yZXNvdXJjZXMvY2hyb21pdW0vd2VieHItdGVzdC5qcycsCisg
ICAgJy9yZXNvdXJjZXMvdGVzdGRyaXZlci5qcycsCisgICAgJy9yZXNvdXJjZXMvdGVzdGRyaXZl
ci12ZW5kb3IuanMnLAorICBdOworCisgIC8vIFRoaXMgaW5mcmFzdHJ1Y3R1cmUgaXMgYWxzbyB1
c2VkIGJ5IENocm9taXVtLXNwZWNpZmljIGludGVybmFsIHRlc3RzIHRoYXQKKyAgLy8gbWF5IG5l
ZWQgYWRkaXRpb25hbCByZXNvdXJjZXMgKGUuZy4gaW50ZXJuYWwgQVBJIGV4dGVuc2lvbnMpLCB0
aGlzIGFsbG93cworICAvLyB0aG9zZSB0ZXN0cyB0byByZWx5IG9uIHRoaXMgaW5mcmFzdHJ1Y3R1
cmUgd2hpbGUgZW5zdXJpbmcgdGhhdCBubyB0ZXN0cworICAvLyBtYWtlIGl0IGludG8gcHVibGlj
IFdQVHMgdGhhdCByZWx5IG9uIEFQSXMgb3V0c2lkZSBvZiB0aGUgd2VieHIgdGVzdCBBUEkuCisg
IGlmICh0eXBlb2YoYWRkaXRpb25hbENocm9taXVtUmVzb3VyY2VzKSAhPT0gJ3VuZGVmaW5lZCcp
IHsKKyAgICBjaHJvbWl1bVJlc291cmNlcyA9IGNocm9taXVtUmVzb3VyY2VzLmNvbmNhdChhZGRp
dGlvbmFsQ2hyb21pdW1SZXNvdXJjZXMpOworICB9CisKKyAgbGV0IGNoYWluID0gUHJvbWlzZS5y
ZXNvbHZlKCk7CisgICAgY2hyb21pdW1SZXNvdXJjZXMuZm9yRWFjaChwYXRoID0+IHsKKyAgICAg
IGxldCBzY3JpcHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTsKKyAgICAgIHNj
cmlwdC5zcmMgPSBwYXRoOworICAgICAgc2NyaXB0LmFzeW5jID0gZmFsc2U7CisgICAgICBjaGFp
biA9IGNoYWluLnRoZW4oKCkgPT4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzY3JpcHQub25sb2FkID0gKCkgPT4gcmVzb2x2ZSgpOworICAgICAg
ICAgICAgICAgICAgICAgICAgIH0pKTsKKyAgICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQo
c2NyaXB0KTsKKyAgfSk7CisKKyAgcmV0dXJuIGNoYWluOworfSk7CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3czYy1pbXBvcnQu
bG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci93
M2MtaW1wb3J0LmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNjdjZDE2OTk0MzE5YmZiY2U3OTdkOWE0MmUwMWRh
ODVkODY5YTE0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci93M2MtaW1wb3J0LmxvZwpAQCAtMCwwICsxLDk2IEBACitU
aGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVw
b3NpdG9yeS4KK0RvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0Lgor
SW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgorCWh0dHBz
Oi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0CisKK1RoZW4gcnVuIHRoZSBUb29s
cy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0CisKK0RvIE5P
VCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitQcm9wZXJ0
aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6CitOb25lCitQcm9wZXJ0eSB2YWx1ZXMgcmVx
dWlyaW5nIHZlbmRvciBwcmVmaXhlczoKK05vbmUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGlzdCBvZiBm
aWxlczoKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhy
L01FVEEueW1sCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
ZWJ4ci9ldmVudHNfaW5wdXRfc291cmNlX3JlY3JlYXRpb24uaHR0cHMuaHRtbAorL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvZXZlbnRzX2lucHV0X3Nv
dXJjZXNfY2hhbmdlLmh0dHBzLmh0bWwKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dlYnhyL2V2ZW50c19yZWZlcmVuY2VTcGFjZV9yZXNldF9pbW1lcnNpdmUu
aHR0cHMuaHRtbAorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2VieHIvZXZlbnRzX3JlZmVyZW5jZVNwYWNlX3Jlc2V0X2lubGluZS5odHRwcy5odG1sCisvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9ldmVudHNfc2Vz
c2lvbl9zZWxlY3QuaHR0cHMuaHRtbAorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd2VieHIvZXZlbnRzX3Nlc3Npb25fc2VsZWN0X3N1YmZyYW1lLmh0dHBzLmh0
bWwKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL2V2
ZW50c19zZXNzaW9uX3NxdWVlemUuaHR0cHMuaHRtbAorL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvZXhjbHVzaXZlX3JlcXVlc3RGcmFtZV9ub2xheWVy
Lmh0dHBzLmh0bWwKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dlYnhyL2dldElucHV0UG9zZV9oYW5kZWRuZXNzLmh0dHBzLmh0bWwKKy9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL2dldElucHV0UG9zZV9wb2ludGVy
Lmh0dHBzLmh0bWwKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dlYnhyL2dldFZpZXdlclBvc2VfZW11bGF0ZWRQb3NpdGlvbi5odHRwcy5odG1sCisvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9pZGxoYXJuZXNzLmh0
dHBzLndpbmRvdy5qcworL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd2VieHIvbmF2aWdhdG9yX3hyX3NhbWVPYmplY3QuaHR0cHMuaHRtbAorL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvcmVuZGVyX3N0YXRlX3ZlcnRp
Y2FsX2Zvdl9pbW1lcnNpdmUuaHR0cHMuaHRtbAorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvcmVuZGVyX3N0YXRlX3ZlcnRpY2FsX2Zvdl9pbmxpbmUu
aHR0cHMuaHRtbAorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2VieHIvd2ViR0xDYW52YXNDb250ZXh0X2NyZWF0ZV94cmNvbXBhdGlibGUuaHR0cHMuaHRtbAor
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvd2ViR0xD
YW52YXNDb250ZXh0X21ha2Vjb21wYXRpYmxlX2NvbnRleHRsb3N0Lmh0dHBzLmh0bWwKKy9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3dlYnhyLXN1cHBv
cnRlZC1ieS1mZWF0dXJlLXBvbGljeS5odG1sCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci93ZWJ4cl9hdmFpbGFiaWxpdHkuaHR0cC5zdWIuaHRtbAor
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvd2VieHJf
ZmVhdHVyZV9wb2xpY3kuaHR0cHMuaHRtbAorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd2VieHIvd2VieHJfZmVhdHVyZV9wb2xpY3kuaHR0cHMuaHRtbC5oZWFk
ZXJzCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94
ckJvdW5kZWRSZWZlcmVuY2VTcGFjZV91cGRhdGVzLmh0dHBzLmh0bWwKKy9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyRGV2aWNlX2Rpc2Nvbm5lY3Rf
ZW5kcy5odHRwcy5odG1sCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93ZWJ4ci94ckRldmljZV9pc1Nlc3Npb25TdXBwb3J0ZWRfaW1tZXJzaXZlLmh0dHBzLmh0
bWwKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hy
RGV2aWNlX2lzU2Vzc2lvblN1cHBvcnRlZF9pbW1lcnNpdmVfdW5zdXBwb3J0ZWQuaHR0cHMuaHRt
bAorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJE
ZXZpY2VfaXNTZXNzaW9uU3VwcG9ydGVkX2lubGluZS5odHRwcy5odG1sCisvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94ckRldmljZV9yZXF1ZXN0U2Vz
c2lvbl9pbW1lcnNpdmUuaHR0cHMuaHRtbAorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd2VieHIveHJEZXZpY2VfcmVxdWVzdFNlc3Npb25faW1tZXJzaXZlX25v
X2dlc3R1cmUuaHR0cHMuaHRtbAorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvd2VieHIveHJEZXZpY2VfcmVxdWVzdFNlc3Npb25faW1tZXJzaXZlX3Vuc3VwcG9y
dGVkLmh0dHBzLmh0bWwKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dlYnhyL3hyRGV2aWNlX3JlcXVlc3RTZXNzaW9uX25vX21vZGUuaHR0cHMuaHRtbAorL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJEZXZpY2Vf
cmVxdWVzdFNlc3Npb25fbm9uX2ltbWVyc2l2ZV9ub19nZXN0dXJlLmh0dHBzLmh0bWwKKy9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyRGV2aWNlX3Jl
cXVlc3RTZXNzaW9uX29wdGlvbmFsRmVhdHVyZXMuaHR0cHMuaHRtbAorL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJEZXZpY2VfcmVxdWVzdFNlc3Np
b25fcmVxdWlyZWRGZWF0dXJlc191bmtub3duLmh0dHBzLmh0bWwKKy9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyRnJhbWVfZ2V0UG9zZS5odHRwcy5o
dG1sCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94
ckZyYW1lX2dldFZpZXdlclBvc2VfZ2V0UG9zZS5odHRwcy5odG1sCisvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94ckZyYW1lX2xpZmV0aW1lLmh0dHBz
Lmh0bWwKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhy
L3hyRnJhbWVfc2Vzc2lvbl9zYW1lT2JqZWN0Lmh0dHBzLmh0bWwKKy9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hySW5wdXRTb3VyY2VfYWRkX3JlbW92
ZS5odHRwcy5odG1sCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93ZWJ4ci94cklucHV0U291cmNlX2VtdWxhdGVkUG9zaXRpb24uaHR0cHMuaHRtbAorL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJJbnB1dFNvdXJj
ZV9wcm9maWxlcy5odHRwcy5odG1sCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93ZWJ4ci94cklucHV0U291cmNlX3NhbWVPYmplY3QuaHR0cHMuaHRtbAorL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJQb3NlX3Ry
YW5zZm9ybV9zYW1lT2JqZWN0Lmh0dHBzLmh0bWwKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyUmVmZXJlbmNlU3BhY2Vfb3JpZ2luT2Zmc2V0Lmh0
dHBzLmh0bWwKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dl
YnhyL3hyUmVmZXJlbmNlU3BhY2Vfb3JpZ2luT2Zmc2V0Qm91bmRlZC5odHRwcy5odG1sCisvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clJlZmVyZW5j
ZVNwYWNlX29yaWdpbk9mZnNldF92aWV3ZXIuaHR0cHMuaHRtbAorL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJSaWdpZFRyYW5zZm9ybV9jb25zdHJ1
Y3Rvci5odHRwcy5odG1sCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93ZWJ4ci94clJpZ2lkVHJhbnNmb3JtX2ludmVyc2UuaHR0cHMuaHRtbAorL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJSaWdpZFRyYW5zZm9y
bV9tYXRyaXguaHR0cHMuaHRtbAorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvd2VieHIveHJSaWdpZFRyYW5zZm9ybV9zYW1lT2JqZWN0Lmh0dHBzLmh0bWwKKy9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lv
bl9jYW5jZWxBbmltYXRpb25GcmFtZS5odHRwcy5odG1sCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clNlc3Npb25fY2FuY2VsQW5pbWF0aW9uRnJh
bWVfaW52YWxpZGhhbmRsZS5odHRwcy5odG1sCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clNlc3Npb25fZW5kLmh0dHBzLmh0bWwKKy9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl9mZWF0
dXJlc19kZXZpY2VTdXBwb3J0Lmh0dHBzLmh0bWwKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl9pbnB1dF9ldmVudHNfZW5kLmh0dHBz
Lmh0bWwKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhy
L3hyU2Vzc2lvbl9wcmV2ZW50X211bHRpcGxlX2V4Y2x1c2l2ZS5odHRwcy5odG1sCisvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clNlc3Npb25fcmVx
dWVzdEFuaW1hdGlvbkZyYW1lX2NhbGxiYWNrX2NhbGxzLmh0dHBzLmh0bWwKKy9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl9yZXF1ZXN0
QW5pbWF0aW9uRnJhbWVfZGF0YV92YWxpZC5odHRwcy5odG1sCisvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clNlc3Npb25fcmVxdWVzdEFuaW1hdGlv
bkZyYW1lX2dldFZpZXdlclBvc2UuaHR0cHMuaHRtbAorL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJTZXNzaW9uX3JlcXVlc3RBbmltYXRpb25GcmFt
ZV90aW1lc3RhbXAuaHR0cHMuaHRtbAorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd2VieHIveHJTZXNzaW9uX3JlcXVlc3RSZWZlcmVuY2VTcGFjZS5odHRwcy5o
dG1sCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94
clNlc3Npb25fcmVxdWVzdFJlZmVyZW5jZVNwYWNlX2ZlYXR1cmVzLmh0dHBzLmh0bWwKKy9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl9z
YW1lT2JqZWN0Lmh0dHBzLmh0bWwKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl92aWV3ZXJfYXZhaWxhYmlsaXR5Lmh0dHBzLmh0bWwK
Ky9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vz
c2lvbl92aWV3ZXJfcmVmZXJlbmNlU3BhY2UuaHR0cHMuaHRtbAorL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJTZXNzaW9uX3Zpc2liaWxpdHlTdGF0
ZS5odHRwcy5odG1sCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93ZWJ4ci94clN0YXRpb25hcnlSZWZlcmVuY2VTcGFjZV9mbG9vcmxldmVsX3VwZGF0ZXMuaHR0
cHMuaHRtbAorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Vi
eHIveHJWaWV3X2V5ZXMuaHR0cHMuaHRtbAorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd2VieHIveHJWaWV3X21hdGNoLmh0dHBzLmh0bWwKKy9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyVmlld19vbmVmcmFtZXVw
ZGF0ZS5odHRwcy5odG1sCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93ZWJ4ci94clZpZXdfc2FtZU9iamVjdC5odHRwcy5odG1sCisvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clZpZXdlclBvc2Vfdmlld3Nfc2Ft
ZU9iamVjdC5odHRwcy5odG1sCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93ZWJ4ci94clZpZXdwb3J0X3ZhbGlkLmh0dHBzLmh0bWwKKy9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyV2ViR0xMYXllcl9jb25zdHJ1
Y3Rvci5odHRwcy5odG1sCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93ZWJ4ci94cldlYkdMTGF5ZXJfZnJhbWVidWZmZXJfZHJhdy5odHRwcy5odG1sCisvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94cldlYkdMTGF5
ZXJfZnJhbWVidWZmZXJfc2FtZU9iamVjdC5odHRwcy5odG1sCisvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94cldlYkdMTGF5ZXJfZnJhbWVidWZmZXJf
c2NhbGUuaHR0cHMuaHRtbAorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd2VieHIveHJXZWJHTExheWVyX29wYXF1ZV9mcmFtZWJ1ZmZlci5odHRwcy5odG1sCisv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94cldlYkdM
TGF5ZXJfb3BhcXVlX2ZyYW1lYnVmZmVyX3N0ZW5jaWwuaHR0cHMuaHRtbAorL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJXZWJHTExheWVyX3ZpZXdw
b3J0cy5odHRwcy5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dlYnhyL3dlYkdMQ2FudmFzQ29udGV4dF9jcmVhdGVfeHJjb21wYXRp
YmxlLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dlYnhyL3dlYkdMQ2FudmFzQ29udGV4dF9jcmVhdGVfeHJjb21wYXRpYmxlLmh0dHBzLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYjgzYjk2MDFhZWQxOTMwYjU2ODcxNTRiOWY1YTFiNjg3N2JiOTg4YQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd2VieHIvd2ViR0xDYW52YXNDb250ZXh0X2NyZWF0ZV94cmNvbXBhdGlibGUuaHR0cHMu
aHRtbApAQCAtMCwwICsxLDI2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxib2R5PgorICA8c2NyaXB0
IHNyYz0vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzPjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0v
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzPjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0i
cmVzb3VyY2VzL3dlYnhyX3V0aWwuanMiPjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL3dlYnhyX3Rlc3RfY29uc3RhbnRzLmpzIj48L3NjcmlwdD4KKyAgPGNhbnZhcyBpZD0id2Vi
Z2wtY2FudmFzIj48L2NhbnZhcz4KKyAgPHNjcmlwdD4KKyAgICB4cl9wcm9taXNlX3Rlc3QoIkFu
IFhSLWNvbXBhdGlibGUgd2ViZ2xDYW52YXNDb250ZXh0IGNhbiBiZSBjcmVhdGVkIiwKKyAgICAg
ICh0KSA9PiB7CisgICAgICAgIHJldHVybiBuYXZpZ2F0b3IueHIudGVzdC5zaW11bGF0ZURldmlj
ZUNvbm5lY3Rpb24oVFJBQ0tFRF9JTU1FUlNJVkVfREVWSUNFKQorICAgICAgICAgIC50aGVuKCAo
Y29udHJvbGxlcikgPT4geworICAgICAgICAgICAgd2ViZ2xDYW52YXMgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnd2ViZ2wtY2FudmFzJyk7CisgICAgICAgICAgICBnbCA9IHdlYmdsQ2FudmFz
LmdldENvbnRleHQoJ3dlYmdsJywge3hyQ29tcGF0aWJsZTogdHJ1ZX0pOworICAgICAgICAgICAg
YXNzZXJ0X3RydWUoZ2wuZ2V0Q29udGV4dEF0dHJpYnV0ZXMoKS54ckNvbXBhdGlibGUpOworCisg
ICAgICAgICAgICAvLyBDaGVjayB0aGF0IGFuIG9mZnNjcmVlbiBjb250ZXh0IGJlaGF2ZXMgbm8g
ZGlmZmVyZW50LgorICAgICAgICAgICAgbGV0IG9mZnNjcmVlbkNhbnZhcyA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoJ2NhbnZhcycpOworICAgICAgICAgICAgbGV0IG9mZnNjcmVlbkdsID0gd2Vi
Z2xDYW52YXMuZ2V0Q29udGV4dCgKKyAgICAgICAgICAgICAgJ3dlYmdsJywge3hyQ29tcGF0aWJs
ZTogdHJ1ZX0pOworICAgICAgICAgICAgYXNzZXJ0X3RydWUob2Zmc2NyZWVuR2wuZ2V0Q29udGV4
dEF0dHJpYnV0ZXMoKS54ckNvbXBhdGlibGUpOworICAgICAgICAgIH0pOworICAgICAgfSk7CisK
KyAgPC9zY3JpcHQ+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3dlYkdMQ2FudmFzQ29udGV4dF9tYWtlY29tcGF0
aWJsZV9jb250ZXh0bG9zdC5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci93ZWJHTENhbnZhc0NvbnRleHRfbWFrZWNvbXBhdGlibGVf
Y29udGV4dGxvc3QuaHR0cHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41M2ZhNGZkOGFmMjNkMWIwZWE0Nzcy
YTUyODZiYjhiODFhMmExMjIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci93ZWJHTENhbnZhc0NvbnRleHRfbWFrZWNv
bXBhdGlibGVfY29udGV4dGxvc3QuaHR0cHMuaHRtbApAQCAtMCwwICsxLDIzIEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxib2R5PgorICA8c2NyaXB0IHNyYz0vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpz
Pjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0Lmpz
Pjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3dlYnhyX3V0aWwuanMiPjwvc2Ny
aXB0PgorICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3dlYnhyX3Rlc3RfY29uc3RhbnRzLmpzIj48
L3NjcmlwdD4KKyAgPGNhbnZhcyBpZD0id2ViZ2wtY2FudmFzIj48L2NhbnZhcz4KKyAgPHNjcmlw
dD4KKworICAgIHhyX3Byb21pc2VfdGVzdCgKKyAgICAgICJBIGxvc3Qgd2ViZ2xDYW52YXNDb250
ZXh0IHNob3VsZCBub3QgYmUgYWJsZSB0byBzZXQgeHIgY29tcGF0aWJpbGl0eSIsCisgICAgICh0
KSA9PiB7CisgICAgICByZXR1cm4gbmF2aWdhdG9yLnhyLnRlc3Quc2ltdWxhdGVEZXZpY2VDb25u
ZWN0aW9uKFRSQUNLRURfSU1NRVJTSVZFX0RFVklDRSkKKyAgICAgICAgLnRoZW4oIChjb250cm9s
bGVyKSA9PiB7CisgICAgICAgICAgd2ViZ2xDYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnd2ViZ2wtY2FudmFzJyk7CisgICAgICAgICAgZ2wgPSB3ZWJnbENhbnZhcy5nZXRDb250ZXh0
KCd3ZWJnbCcsIHt4ckNvbXBhdGlibGU6IHRydWV9KTsKKyAgICAgICAgICBnbC5nZXRFeHRlbnNp
b24oJ1dFQkdMX2xvc2VfY29udGV4dCcpLmxvc2VDb250ZXh0KCk7CisgICAgICAgICAgcmV0dXJu
IHByb21pc2VfcmVqZWN0c19kb20odCwgJ0ludmFsaWRTdGF0ZUVycm9yJywgZ2wubWFrZVhSQ29t
cGF0aWJsZSgpKTsKKyAgICAgICAgfSk7CisgICAgfSk7CisKKyAgPC9zY3JpcHQ+Cis8L2JvZHk+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dlYnhyL3dlYnhyLXN1cHBvcnRlZC1ieS1mZWF0dXJlLXBvbGljeS5odG1sIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci93ZWJ4ci1zdXBwb3J0ZWQt
YnktZmVhdHVyZS1wb2xpY3kuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yODQzODQ5YTM0YTgxOGExYTdhYmQ3
M2VhODczOTE3YTE3Mzk5ODhkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci93ZWJ4ci1zdXBwb3J0ZWQtYnktZmVhdHVy
ZS1wb2xpY3kuaHRtbApAQCAtMCwwICsxLDEwIEBACis8IURPQ1RZUEUgaHRtbD4KKzx0aXRsZT5U
ZXN0IHRoYXQgeHIgaXMgYWR2ZXJ0aXNlZCBpbiB0aGUgZmVhdHVyZSBsaXN0PC90aXRsZT4KKzxs
aW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cHM6Ly9pbW1lcnNpdmUtd2ViLmdpdGh1Yi5pby93ZWJ4
ci8jZmVhdHVyZS1wb2xpY3kiPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3Mu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQu
anMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK3Rlc3QoKCkgPT4geworICAgIGFzc2VydF9pbl9hcnJh
eSgneHItc3BhdGlhbC10cmFja2luZycsIGRvY3VtZW50LmZlYXR1cmVQb2xpY3kuZmVhdHVyZXMo
KSk7Cit9LCAnZG9jdW1lbnQuZmVhdHVyZVBvbGljeS5mZWF0dXJlcyBzaG91bGQgYWR2ZXJ0aXNl
IHhyLXNwYXRpYWwtdHJhY2tpbmcuJyk7Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvd2VieHJfYXZhaWxhYmls
aXR5Lmh0dHAuc3ViLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3dlYnhyL3dlYnhyX2F2YWlsYWJpbGl0eS5odHRwLnN1Yi5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjMyOTEwNThmNGQxYjMzMWQxNjVkMDU5ZjAzNDIwNDAyZjUwYzdjMDUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3dl
YnhyX2F2YWlsYWJpbGl0eS5odHRwLnN1Yi5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGJvZHk+CisgIDxzY3JpcHQgc3JjPS9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanM+
PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPS9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanM+
PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPS93ZWJ4ci9yZXNvdXJjZXMvd2VieHJfdXRpbC5qcz48
L3NjcmlwdD4KKyAgPHNjcmlwdD4KKyAgICAndXNlIHN0cmljdCc7CisKKyAgICB2YXIgc2FtZV9v
cmlnaW5fc3JjID0gJy93ZWJ4ci9yZXNvdXJjZXMvJzsKKyAgICB2YXIgY3Jvc3Nfb3JpZ2luX2h0
dHBzX3NyYyA9ICdodHRwczovL3t7aG9zdHNbYWx0XVtdfX06e3twb3J0c1todHRwc11bMF19fScg
KworICAgICAgc2FtZV9vcmlnaW5fc3JjOworCisgICAgdGVzdCh0ID0+IHsKKyAgICAgIGZvckVh
Y2hXZWJ4ck9iamVjdCgob2JqLCBuYW1lKSA9PiB7CisgICAgICAgIGFzc2VydF9lcXVhbHMob2Jq
LCB1bmRlZmluZWQsIG5hbWUgKyAnIHdhcyBkZWZpbmVkIGluIGluc2VjdXJlIGNvbnRleHQuJyk7
CisgICAgICB9KTsKKyAgICB9LCAnVGVzdCB3ZWJ4ciBub3QgYXZhaWxhYmxlIGluIGluc2VjdXJl
IGNvbnRleHQnKTsKKworICAgIGFzeW5jX3Rlc3QodCA9PiB7CisgICAgICBsZXQgZnJhbWUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCdpZnJhbWUnKTsKKyAgICAgIGZyYW1lLnNyYyA9IGNyb3Nz
X29yaWdpbl9odHRwc19zcmMgKyAnd2VieHJfY2hlY2suaHRtbCc7CisKKyAgICAgIHdpbmRvdy5h
ZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgdC5zdGVwX2Z1bmMoZnVuY3Rpb24gaGFuZGxlcihl
dnQpIHsKKyAgICAgICAgICBpZiAoZXZ0LnNvdXJjZSA9PT0gZnJhbWUuY29udGVudFdpbmRvdykg
eworICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChmcmFtZSk7CisgICAgICAg
ICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIGhhbmRsZXIpOworCisg
ICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGV2dC5kYXRhLmRlZmluZWRPYmplY3RzLmxlbmd0aCwg
MCwKKyAgICAgICAgICAgICAgIlNvbWUgb2JqZWN0cyB3ZXJlIGRlZmluZWQgaW4gaW5zZWN1cmUg
Y29udGV4dDogIiArCisgICAgICAgICAgICAgIGV2dC5kYXRhLmRlZmluZWRPYmplY3RzLnRvU3Ry
aW5nKCkpOworICAgICAgICAgICAgdC5kb25lKCk7CisgICAgICAgICAgfQorICAgICAgfSkpOwor
CisgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGZyYW1lKTsKKyAgICB9LCAnVGVzdCB3
ZWJ4ciBub3QgYXZhaWxhYmxlIGluIHNlY3VyZSBjb250ZXh0IGluIGluc2VjdXJlIGNvbnRleHQn
KTsKKworICA8L3NjcmlwdD4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvd2VieHJfZmVhdHVyZV9wb2xpY3kuaHR0
cHMuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Vi
eHIvd2VieHJfZmVhdHVyZV9wb2xpY3kuaHR0cHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZjNkMDNiNDhl
NTg4MWQ3NGQ5MmQxODcyNDM4MTRkYzlmYTU4YjdkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci93ZWJ4cl9mZWF0dXJl
X3BvbGljeS5odHRwcy5odG1sCkBAIC0wLDAgKzEsODEgQEAKKzwhRE9DVFlQRSBodG1sPgorPHNj
cmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9InJlc291cmNlcy93ZWJ4cl91dGlsLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvd2VieHJfdGVzdF9jb25zdGFudHMuanMiPjwvc2NyaXB0PgorPGNhbnZhcyAvPgorCis8
c2NyaXB0PgoreHJfcHJvbWlzZV90ZXN0KAorIlZhbGlkYXRlIGlzU2Vzc2lvblN1cHBvcnRlZCBi
ZWhhdmlvciB3aXRob3V0IHhyLXNwYXRpYWwtdHJhY2tpbmcgcG9saWN5IiwKKyh0KSA9PiB7Cisg
IC8vIElubGluZSBzaG91bGQgbmV2ZXIgcmVqZWN0LgorICByZXR1cm4gbmF2aWdhdG9yLnhyLmlz
U2Vzc2lvblN1cHBvcnRlZCgiaW5saW5lIikudGhlbigoc3VwcG9ydGVkKSA9PiB7CisgICAgdC5z
dGVwKCgpID0+IHsKKyAgICAgIGFzc2VydF90cnVlKHN1cHBvcnRlZCwKKyAgICAgICAgImlubGlu
ZSBzaG91bGQgYWx3YXlzIGJlIHN1cHBvcnRlZCwgZXZlbiB3aXRob3V0IGZlYXR1cmUgcG9saWN5
Iik7CisgICAgfSk7CisKKyAgICAvLyBJdCBzaG91bGRuJ3QgbWF0dGVyIHRoYXQgdGhlcmUncyBu
byBkZXZpY2UgY29ubmVjdGVkLCB0aGUgU2VjdXJpdHlFcnJvcgorICAgIC8vIHNob3VsZCByZWpl
Y3QgZmlyc3QuCisgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19kb20odCwgIlNlY3VyaXR5RXJy
b3IiLAorICAgICAgbmF2aWdhdG9yLnhyLmlzU2Vzc2lvblN1cHBvcnRlZCgiaW1tZXJzaXZlLXZy
IiksCisgICAgICAiSW1tZXJzaXZlIGlzU2Vzc2lvblN1cHBvcnRlZCBzaG91bGQgcmVqZWN0Iik7
CisgIH0pOworfSk7CisKK3hyX3Byb21pc2VfdGVzdCgKKyJWYWxpZGF0ZSByZXF1ZXN0U2Vzc2lv
biBiZWhhdmlvciB3aXRob3V0IHhyLXNwYXRpYWwtdHJhY2tpbmcgcG9saWN5IiwKKyh0KSA9PiB7
CisgIHJldHVybiBuYXZpZ2F0b3IueHIudGVzdC5zaW11bGF0ZURldmljZUNvbm5lY3Rpb24oVFJB
Q0tFRF9JTU1FUlNJVkVfREVWSUNFKQorICAudGhlbigoKSA9PiB7CisgICAgcmV0dXJuIG5ldyBQ
cm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKKyAgICAgIG5hdmlnYXRvci54ci50ZXN0LnNp
bXVsYXRlVXNlckFjdGl2YXRpb24oKCkgPT4geworCisgICAgICAgIC8vIFRlY2huaWNhbGx5IHRo
ZSBmaXJzdCAicmVxdWVzdFNlc3Npb24iIGRvZXNuJ3QgbmVlZCBlaXRoZXIgdGhlIGRldmljZQor
ICAgICAgICAvLyBvciB0aGUgYWN0aXZhdGlvbiwgYnV0IHRoaXMgbWFrZXMgdGhlIHRlc3QgY29k
ZSBhIGxpdHRsZSBjbGVhbmVyIHNpbmNlCisgICAgICAgIC8vIHRoZSBvdGhlcnMgZG8sIGFzIGxh
Y2tpbmcgdXNlciBhY3RpdmF0aW9uIG9yIGEgdmFsaWQgYmFja2luZyBkZXZpY2UKKyAgICAgICAg
Ly8gc2hvdWxkIGFsc28gY2F1c2UgdGhlIHNlc3Npb24gdG8gcmVqZWN0LiBJbiBvcmRlciB0byBn
dWFyYW50ZWUgdGhhdAorICAgICAgICAvLyB3ZSdyZSBzZWVpbmcgdGhlIHJlamVjdGlvbiB3ZSB3
YW50LCB3ZSBlbGltaW5hdGUgdGhvc2UgYXMgcG9zc2liaWxpdGllcy4KKyAgICAgICAgcmVzb2x2
ZShQcm9taXNlLmFsbChbCisgICAgICAgICAgbmF2aWdhdG9yLnhyLnJlcXVlc3RTZXNzaW9uKCJp
bmxpbmUiKS50aGVuKHNlc3Npb24gPT4gc2Vzc2lvbi5lbmQoKSksCisKKyAgICAgICAgICBwcm9t
aXNlX3JlamVjdHNfZG9tKHQsICJOb3RTdXBwb3J0ZWRFcnJvciIsCisgICAgICAgICAgICBuYXZp
Z2F0b3IueHIucmVxdWVzdFNlc3Npb24oImlubGluZSIsIHsgcmVxdWlyZWRGZWF0dXJlczogWyJs
b2NhbCJdIH0pLAorICAgICAgICAgICAgIklubGluZSB3aXRoIGZlYXR1cmVzIHNob3VsZCByZWpl
Y3Qgd2l0aG91dCBmZWF0dXJlIHBvbGljeSIpLAorCisgICAgICAgICAgcHJvbWlzZV9yZWplY3Rz
X2RvbSh0LCAiTm90U3VwcG9ydGVkRXJyb3IiLAorICAgICAgICAgICAgbmF2aWdhdG9yLnhyLnJl
cXVlc3RTZXNzaW9uKCJpbW1lcnNpdmUtdnIiKSwKKyAgICAgICAgICAgICJJbW1lcnNpdmUtdnIg
c2hvdWxkIHJlamVjdCB3aXRob3V0IGZlYXR1cmUgcG9saWN5IikKKyAgICAgICAgICBdKSk7Cisg
ICAgICB9KTsKKyAgICB9KTsKKyAgfSk7Cit9KTsKKworeHJfcHJvbWlzZV90ZXN0KAorIlZhbGlk
YXRlIGRldmljZWNoYW5nZSBldmVudCBiZWhhdmlvciB3aXRob3V0IHhyLXNwYXRpYWwtdHJhY2tp
bmcgcG9saWN5IiwKKyh0KSA9PiB7CisgIG5hdmlnYXRvci54ci5hZGRFdmVudExpc3RlbmVyKCJk
ZXZpY2VjaGFuZ2UiLCAoKSA9PiB7CisgICAgdC5zdGVwKCgpID0+IHsgYXNzZXJ0X3VucmVhY2hl
ZCgiZGV2aWNlY2hhbmdlIHNob3VsZCBub3QgZmlyZSIpOyB9KTsKKyAgfSkKKworICAvLyBXZSBu
ZWVkIHRvIHlpZWxkIGEgc2hvcnQgdGltZSB0byBlbnN1cmUgdGhhdCBhbnkgZXZlbnQgcmVnaXN0
cmF0aW9uIGhhcworICAvLyBwcm9wYWdhdGVkLCBhcyB0aGlzIGNhbiB0YWtlIHNvbWUgdGltZS4K
KyAgLy8gTm90ZSB0aGF0IGRldmljZSBjb25uZWN0aW9uIGlzIG5vdCBndWFyYW50ZWVkIHRvIGZp
cmUgcGVyIHRoZSBzcGVjLCBpZiBpdCdzCisgIC8vIHRoZSBmaXJzdCBjb25uZWN0aW9uLCBidXQg
ZGlzY29ubmVjdCBkZWZpbml0ZWx5IHNob3VsZC4KKyAgdC5zdGVwX3RpbWVvdXQoKCkgPT4gewor
ICAgIG5hdmlnYXRvci54ci50ZXN0LnNpbXVsYXRlRGV2aWNlQ29ubmVjdGlvbihUUkFDS0VEX0lN
TUVSU0lWRV9ERVZJQ0UpCisgICAgLnRoZW4oKHRlc3REZXZpY2VDb250cm9sbGVyKSA9PiB7Cisg
ICAgICAgcmV0dXJuIHRlc3REZXZpY2VDb250cm9sbGVyLmRpc2Nvbm5lY3QoKTsKKyAgICB9KTsK
KyAgfSwgMTAwKTsKKworICAvLyBXYWl0IGFuIGV2ZW4gbG9uZ2VyIHRpbWUgYmVmb3JlIGZpbmlz
aGluZyB0aGUgdGVzdCwgc28gdGhhdCBpZiB0aGUgZXZlbnQKKyAgLy8gd2VyZSB0byBmaXJlLCBp
dCB3b3VsZCd2ZSBieSBub3cuCisgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gewor
ICAgIHQuc3RlcF90aW1lb3V0KCgpID0+IHsgcmVzb2x2ZSgpOyB9LCAyMDAwKTsKKyAgfSk7CisK
K30pOworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dlYnhyL3dlYnhyX2ZlYXR1cmVfcG9saWN5Lmh0dHBzLmh0bWwuaGVh
ZGVycyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIv
d2VieHJfZmVhdHVyZV9wb2xpY3kuaHR0cHMuaHRtbC5oZWFkZXJzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJjNzU4
OTYyMzMyZTcyMzQ1M2YzMWE2Y2I4ZDNkZmMzYWMyOTJkNDQKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3dlYnhyX2Zl
YXR1cmVfcG9saWN5Lmh0dHBzLmh0bWwuaGVhZGVycwpAQCAtMCwwICsxIEBACitGZWF0dXJlLVBv
bGljeTogeHItc3BhdGlhbC10cmFja2luZyAnbm9uZScKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJCb3VuZGVkUmVmZXJlbmNl
U3BhY2VfdXBkYXRlcy5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93ZWJ4ci94ckJvdW5kZWRSZWZlcmVuY2VTcGFjZV91cGRhdGVzLmh0dHBz
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uOTA0M2Q1OWUzYjIzMThmYWIxODJiODVhYjI5ZDE1ZWE0ZTJiNDFj
YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvd2VieHIveHJCb3VuZGVkUmVmZXJlbmNlU3BhY2VfdXBkYXRlcy5odHRwcy5odG1s
CkBAIC0wLDAgKzEsNTkgQEAKKzwhRE9DVFlQRSBodG1sPgorPHNjcmlwdCBzcmM9L3Jlc291cmNl
cy90ZXN0aGFybmVzcy5qcz48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPS9yZXNvdXJjZXMvdGVzdGhh
cm5lc3NyZXBvcnQuanM+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3dlYnhyX3V0
aWwuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy93ZWJ4cl90ZXN0X2NvbnN0
YW50cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3dlYnhyX3Rlc3RfYXNz
ZXJ0cy5qcyI+PC9zY3JpcHQ+Cis8Y2FudmFzPjwvY2FudmFzPgorCis8c2NyaXB0PgorbGV0IHRl
c3ROYW1lID0KKyAgIidYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZSB1cGRhdGVzIHByb3Blcmx5IHdo
ZW4gdGhlIGNoYW5nZXMgYXJlIGFwcGxpZWQiOworCitsZXQgZmFrZURldmljZUluaXRQYXJhbXMg
PSB7CisgICAgc3VwcG9ydHNJbW1lcnNpdmU6IHRydWUsCisgICAgc3VwcG9ydGVkTW9kZXM6IFsi
aW5saW5lIiwgImltbWVyc2l2ZS12ciJdLAorICAgIHZpZXdzOiBWQUxJRF9WSUVXUywKKyAgICB2
aWV3ZXJPcmlnaW46IElERU5USVRZX1RSQU5TRk9STSwKKyAgICBmbG9vck9yaWdpbjogVkFMSURf
RkxPT1JfT1JJR0lOLAorICAgIHN1cHBvcnRlZEZlYXR1cmVzOiBBTExfRkVBVFVSRVMKK307CisK
K2xldCB0ZXN0RnVuY3Rpb24gPSBmdW5jdGlvbihzZXNzaW9uLCBmYWtlRGV2aWNlQ29udHJvbGxl
ciwgdCkgeworCisgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7Cisg
ICAgc2Vzc2lvbi5yZXF1ZXN0UmVmZXJlbmNlU3BhY2UoJ2JvdW5kZWQtZmxvb3InKQorICAgICAg
LnRoZW4oKHJlZmVyZW5jZVNwYWNlKSA9PiB7CisgICAgICAgICAgdC5zdGVwKCgpID0+IHsKKyAg
ICAgICAgICAgICAgLy8gQSBib3VuZGVkIHNwYWNlIG1heSBiZSBjcmVhdGVkIGlmIG5vIGJvdW5k
cyBoYXZlIGJlZW4gc2V0IGJ1dCB0aGUgc3lzdGVtIGhhcyB0aGUgY2FwYWJpbGl0eSB0byBzdXBw
b3J0IGJvdW5kZWQtZmxvb3IKKyAgICAgICAgICAgICAgLy8gQSBsYWNrIG9mIGJvdW5kcyBpcyBp
bmRpY2F0ZWQgYnkgYW4gZW1wdHkgYm91bmRzR2VvbWV0cnkKKyAgICAgICAgICAgICAgYXNzZXJ0
X3RydWUocmVmZXJlbmNlU3BhY2UuYm91bmRzR2VvbWV0cnkubGVuZ3RoID09IDApOworICAgICAg
ICAgIH0pOworCisgICAgICAgICAgZnVuY3Rpb24gb25GcmFtZSh0aW1lLCB4ckZyYW1lKSB7Cisg
ICAgICAgICAgICAvLyBBZnRlciB0aGUgYm91bmRzIGhhdmUgYmVlbiBleHBsaWNpdGx5IHNldCwg
dGhleSBzaG91bGQgYmUgd2hhdCB3ZSBleHBlY3QuCisgICAgICAgICAgICB0LnN0ZXAoKCkgPT4g
eworICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJlZmVyZW5jZVNwYWNlLmJvdW5kc0dlb21l
dHJ5Lmxlbmd0aCwgVkFMSURfQk9VTkRTLmxlbmd0aCk7CisgICAgICAgICAgICAgIGZvciAoaSA9
IDA7IGkgPCBWQUxJRF9CT1VORFMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgICAgICBsZXQg
dmFsaWRfcG9pbnQgPSBWQUxJRF9CT1VORFNbaV07CisgICAgICAgICAgICAgICAgbGV0IGJvdW5k
c19wb2ludCA9IHJlZmVyZW5jZVNwYWNlLmJvdW5kc0dlb21ldHJ5W2ldOworICAgICAgICAgICAg
ICAgIGFzc2VydF9lcXVhbHModmFsaWRfcG9pbnQueCwgYm91bmRzX3BvaW50LngpOworICAgICAg
ICAgICAgICAgIGFzc2VydF9lcXVhbHMoYm91bmRzX3BvaW50LnksIDAuMCk7CisgICAgICAgICAg
ICAgICAgYXNzZXJ0X2VxdWFscyh2YWxpZF9wb2ludC56LCBib3VuZHNfcG9pbnQueik7CisgICAg
ICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhib3VuZHNfcG9pbnQudywgMS4wKTsKKyAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIHJlc29sdmUoKTsKKyAgICAg
ICAgICB9CisKKyAgICAgICAgICAvLyBOb3cgc2V0IHRoZSBib3VuZHMgZXhwbGljaXRseSBhbmQg
Y2hlY2sgYWdhaW4gb24gdGhlIG5leHQgZnJhbWUuCisgICAgICAgICAgZmFrZURldmljZUNvbnRy
b2xsZXIuc2V0Qm91bmRzR2VvbWV0cnkoVkFMSURfQk9VTkRTKTsKKyAgICAgICAgICBzZXNzaW9u
LnJlcXVlc3RBbmltYXRpb25GcmFtZShvbkZyYW1lKTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9
OworCit4cl9zZXNzaW9uX3Byb21pc2VfdGVzdCh0ZXN0TmFtZSwgdGVzdEZ1bmN0aW9uLCBmYWtl
RGV2aWNlSW5pdFBhcmFtcywgJ2ltbWVyc2l2ZS12cicsIHsgJ3JlcXVpcmVkRmVhdHVyZXMnOiBb
J2JvdW5kZWQtZmxvb3InXSB9KTsKKworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyRGV2aWNlX2Rpc2Nvbm5l
Y3RfZW5kcy5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93ZWJ4ci94ckRldmljZV9kaXNjb25uZWN0X2VuZHMuaHR0cHMuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5hY2U2NGU4ZjQxMjEyZDJlMjFhNDUwZWY2OTU4YmYyYjc1MDhhMGRhCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4
ci94ckRldmljZV9kaXNjb25uZWN0X2VuZHMuaHR0cHMuaHRtbApAQCAtMCwwICsxLDM5IEBACis8
IURPQ1RZUEUgaHRtbD4KKzxib2R5PgorICA8c2NyaXB0IHNyYz0vcmVzb3VyY2VzL3Rlc3RoYXJu
ZXNzLmpzPjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVw
b3J0LmpzPjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3dlYnhyX3V0aWwuanMi
Pjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3dlYnhyX3Rlc3RfY29uc3RhbnRz
LmpzIj48L3NjcmlwdD4KKyAgPGNhbnZhcz48L2NhbnZhcz4KKworICA8c2NyaXB0PgorICAgIGNv
bnN0IHRlc3ROYW1lID0gIkltbWVyc2l2ZSBzZXNzaW9uIGVuZHMgd2hlbiBkZXZpY2UgaXMgZGlz
Y29ubmVjdGVkIjsKKyAgICBsZXQgd2F0Y2hlckRvbmUgPSBuZXcgRXZlbnQoIndhdGNoZXJkb25l
Iik7CisgICAgY29uc3QgZmFrZURldmljZUluaXRQYXJhbXMgPSBUUkFDS0VEX0lNTUVSU0lWRV9E
RVZJQ0U7CisKKyAgICBsZXQgdGVzdEZ1bmN0aW9uID0gZnVuY3Rpb24oc2Vzc2lvbiwgdGVzdERl
dmljZUNvbnRyb2xsZXIsIHQpIHsKKyAgICAgIGxldCBzZXNzaW9uV2F0Y2hlciA9IG5ldyBFdmVu
dFdhdGNoZXIodCwgc2Vzc2lvbiwgWyJlbmQiLCAid2F0Y2hlcmRvbmUiXSk7CisgICAgICBsZXQg
c2Vzc2lvblByb21pc2UgPSBzZXNzaW9uV2F0Y2hlci53YWl0X2ZvcihbImVuZCIsICJ3YXRjaGVy
ZG9uZSJdKTsKKworICAgICAgbGV0IHhyV2F0Y2hlciA9IG5ldyBFdmVudFdhdGNoZXIodCwgbmF2
aWdhdG9yLnhyLCBbImRldmljZWNoYW5nZSJdKTsKKyAgICAgIGxldCB4clByb21pc2UgPSB4cldh
dGNoZXIud2FpdF9mb3IoWyJkZXZpY2VjaGFuZ2UiXSk7CisKKyAgICAgIGZ1bmN0aW9uIG9uU2Vz
c2lvbkVuZChldmVudCkgeworICAgICAgICB0LnN0ZXAoICgpID0+IHsKKyAgICAgICAgICBhc3Nl
cnRfZXF1YWxzKGV2ZW50LnNlc3Npb24sIHNlc3Npb24pOworICAgICAgICAgIHNlc3Npb24uZGlz
cGF0Y2hFdmVudCh3YXRjaGVyRG9uZSk7CisgICAgICAgIH0pOworICAgICAgfQorCisgICAgICBz
ZXNzaW9uLmFkZEV2ZW50TGlzdGVuZXIoImVuZCIsIG9uU2Vzc2lvbkVuZCwgZmFsc2UpOworCisg
ICAgICAvLyBUaGUgamF2YXNjcmlwdCBuZWVkcyB0byB5aWVsZCBzbyB0aGF0IHRoZSBldmVudCBy
ZWdpc3RyYXRpb24gcHJvY2Vzc2VzLgorICAgICAgdC5zdGVwX3RpbWVvdXQoKCkgPT4geyB0ZXN0
RGV2aWNlQ29udHJvbGxlci5kaXNjb25uZWN0KCk7IH0sIDApOworCisgICAgICByZXR1cm4gUHJv
bWlzZS5hbGwoW3Nlc3Npb25Qcm9taXNlLCB4clByb21pc2VdKTsKKyAgICB9OworCisgICAgeHJf
c2Vzc2lvbl9wcm9taXNlX3Rlc3QodGVzdE5hbWUsIHRlc3RGdW5jdGlvbiwKKyAgICAgIGZha2VE
ZXZpY2VJbml0UGFyYW1zLCAnaW1tZXJzaXZlLXZyJyk7CisgIDwvc2NyaXB0PgorPC9ib2R5Pgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
ZWJ4ci94ckRldmljZV9pc1Nlc3Npb25TdXBwb3J0ZWRfaW1tZXJzaXZlLmh0dHBzLmh0bWwgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyRGV2aWNl
X2lzU2Vzc2lvblN1cHBvcnRlZF9pbW1lcnNpdmUuaHR0cHMuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZjEx
MjlmZTE2ZTU1OTJlYzliNjk4MmU5ZGVmYmVlNzhmOTYzYTMxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94ckRldmlj
ZV9pc1Nlc3Npb25TdXBwb3J0ZWRfaW1tZXJzaXZlLmh0dHBzLmh0bWwKQEAgLTAsMCArMSwyMSBA
QAorPCFET0NUWVBFIGh0bWw+Cis8Ym9keT4KKyAgPHNjcmlwdCBzcmM9L3Jlc291cmNlcy90ZXN0
aGFybmVzcy5qcz48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9L3Jlc291cmNlcy90ZXN0aGFybmVz
c3JlcG9ydC5qcz48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9InJlc291cmNlcy93ZWJ4cl91dGls
LmpzIj48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9InJlc291cmNlcy93ZWJ4cl90ZXN0X2NvbnN0
YW50cy5qcyI+PC9zY3JpcHQ+CisgIDxzY3JpcHQ+CisgICAgeHJfcHJvbWlzZV90ZXN0KAorICAg
ICAgImlzU2Vzc2lvblN1cHBvcnRlZCByZXNvbHZlcyB0byB0cnVlIHdoZW4gaW1tZXJzaXZlIG9w
dGlvbnMgc3VwcG9ydGVkIiwKKyAgICAgICh0KSA9PiB7CisgICAgICAgIHJldHVybiBuYXZpZ2F0
b3IueHIudGVzdC5zaW11bGF0ZURldmljZUNvbm5lY3Rpb24oVFJBQ0tFRF9JTU1FUlNJVkVfREVW
SUNFKQorICAgICAgICAgIC50aGVuKCAoY29udHJvbGxlcikgPT4geworICAgICAgICAgICAgcmV0
dXJuIG5hdmlnYXRvci54ci5pc1Nlc3Npb25TdXBwb3J0ZWQoJ2ltbWVyc2l2ZS12cicpLnRoZW4o
KHN1cHBvcnRlZCkgPT4geworICAgICAgICAgICAgICB0LnN0ZXAoKCkgPT4geworICAgICAgICAg
ICAgICAgIGFzc2VydF90cnVlKHN1cHBvcnRlZCk7CisgICAgICAgICAgICAgIH0pOworICAgICAg
ICAgICAgfSk7CisgICAgICAgICAgfSk7CisgICAgICB9KTsKKyAgPC9zY3JpcHQ+Cis8L2JvZHk+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dlYnhyL3hyRGV2aWNlX2lzU2Vzc2lvblN1cHBvcnRlZF9pbW1lcnNpdmVfdW5zdXBwb3J0ZWQu
aHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2VieHIveHJEZXZpY2VfaXNTZXNzaW9uU3VwcG9ydGVkX2ltbWVyc2l2ZV91bnN1cHBvcnRlZC5o
dHRwcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQxYWUzMzg3ODdlNDViMTNmZjQyZWZhZTc1MmViOGEzOWY1
ZmZiYzgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dlYnhyL3hyRGV2aWNlX2lzU2Vzc2lvblN1cHBvcnRlZF9pbW1lcnNpdmVf
dW5zdXBwb3J0ZWQuaHR0cHMuaHRtbApAQCAtMCwwICsxLDIxIEBACis8IURPQ1RZUEUgaHRtbD4K
Kzxib2R5PgorICA8c2NyaXB0IHNyYz0vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzPjwvc2NyaXB0
PgorICA8c2NyaXB0IHNyYz0vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzPjwvc2NyaXB0
PgorICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3dlYnhyX3V0aWwuanMiPjwvc2NyaXB0PgorICA8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL3dlYnhyX3Rlc3RfY29uc3RhbnRzLmpzIj48L3NjcmlwdD4K
KyAgPHNjcmlwdD4KKyAgICB4cl9wcm9taXNlX3Rlc3QoCisgICAgICAiaXNTZXNzaW9uU3VwcG9y
dGVkIHJlc29sdmVzIHRvIGZhbHNlIHdoZW4gb3B0aW9ucyBub3Qgc3VwcG9ydGVkIiwKKyAgICAg
ICh0KSA9PiB7CisgICAgICByZXR1cm4gbmF2aWdhdG9yLnhyLnRlc3Quc2ltdWxhdGVEZXZpY2VD
b25uZWN0aW9uKFZBTElEX05PTl9JTU1FUlNJVkVfREVWSUNFKQorICAgICAgICAudGhlbiggKGNv
bnRyb2xsZXIpID0+IHsKKyAgICAgICAgICByZXR1cm4gbmF2aWdhdG9yLnhyLmlzU2Vzc2lvblN1
cHBvcnRlZCgnaW1tZXJzaXZlLXZyJykudGhlbigoc3VwcG9ydGVkKSA9PiB7CisgICAgICAgICAg
ICB0LnN0ZXAoKCkgPT4geworICAgICAgICAgICAgICBhc3NlcnRfZmFsc2Uoc3VwcG9ydGVkKTsK
KyAgICAgICAgICAgIH0pOworICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICB9KTsKKyAg
PC9zY3JpcHQ+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyRGV2aWNlX2lzU2Vzc2lvblN1cHBvcnRlZF9pbmxp
bmUuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd2VieHIveHJEZXZpY2VfaXNTZXNzaW9uU3VwcG9ydGVkX2lubGluZS5odHRwcy5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmJmOGQxNGE4ZjUxZWNjNmVlYjc3MjgwMGJlNDIzYWJmZWZkMzU4ODAKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dlYnhyL3hyRGV2aWNlX2lzU2Vzc2lvblN1cHBvcnRlZF9pbmxpbmUuaHR0cHMuaHRtbApAQCAt
MCwwICsxLDIyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxib2R5PgorICA8c2NyaXB0IHNyYz0vcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzLmpzPjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0vcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzcmVwb3J0LmpzPjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L3dlYnhyX3V0aWwuanMiPjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3dlYnhy
X3Rlc3RfY29uc3RhbnRzLmpzIj48L3NjcmlwdD4KKyAgPHNjcmlwdD4KKyAgICB4cl9wcm9taXNl
X3Rlc3QoCisgICAgICAiaXNTZXNzaW9uU3VwcG9ydGVkIHJlc29sdmVzIHRvIHRydWUgd2hlbiBp
bmxpbmUgb3B0aW9ucyBzdXBwb3J0ZWQiLAorICAgICAgKHQpID0+IHsKKyAgICAgIHJldHVybiBu
YXZpZ2F0b3IueHIudGVzdC5zaW11bGF0ZURldmljZUNvbm5lY3Rpb24oVFJBQ0tFRF9JTU1FUlNJ
VkVfREVWSUNFKQorICAgICAgICAudGhlbiggKGNvbnRyb2xsZXIpID0+IHsKKyAgICAgICAgICAv
LyBJbmxpbmUgc2Vzc2lvbnMgc2hvdWxkIGJlIHN1cHBvcnRlZC4KKyAgICAgICAgICByZXR1cm4g
bmF2aWdhdG9yLnhyLmlzU2Vzc2lvblN1cHBvcnRlZCgnaW5saW5lJykudGhlbigoc3VwcG9ydGVk
KSA9PiB7CisgICAgICAgICAgICB0LnN0ZXAoKCkgPT4geworICAgICAgICAgICAgICBhc3NlcnRf
dHJ1ZShzdXBwb3J0ZWQpOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgfSk7CisgICAgICAg
IH0pOworICAgIH0pOworICA8L3NjcmlwdD4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJEZXZpY2VfcmVxdWVz
dFNlc3Npb25faW1tZXJzaXZlLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyRGV2aWNlX3JlcXVlc3RTZXNzaW9uX2ltbWVyc2l2
ZS5odHRwcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJlMGJiMzI5OTViODZlZTU3NmMxZTU1NDE0ZDdmN2Q4
MWExZTBmYzEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyRGV2aWNlX3JlcXVlc3RTZXNzaW9uX2ltbWVyc2l2ZS5o
dHRwcy5odG1sCkBAIC0wLDAgKzEsMjcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGJvZHk+CisgIDxz
Y3JpcHQgc3JjPS9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanM+PC9zY3JpcHQ+CisgIDxzY3JpcHQg
c3JjPS9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanM+PC9zY3JpcHQ+CisgIDxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvd2VieHJfdXRpbC5qcyI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvd2VieHJfdGVzdF9jb25zdGFudHMuanMiPjwvc2NyaXB0PgorICA8Y2FudmFzPjwv
Y2FudmFzPgorICA8c2NyaXB0PgorICAgIHhyX3Nlc3Npb25fcHJvbWlzZV90ZXN0KAorICAgICAg
IlRlc3RzIHJlcXVlc3RTZXNzaW9uIHJlc29sdmVzIHdoZW4gc3VwcG9ydGVkIiwKKyAgICAgIChz
ZXNzaW9uKSA9PiB7CisgICAgICAgIGFzc2VydF9ub3RfZXF1YWxzKHNlc3Npb24sIG51bGwpOwor
ICAgICAgfSwgVFJBQ0tFRF9JTU1FUlNJVkVfREVWSUNFLCAnaW1tZXJzaXZlLXZyJyk7CisKKyAg
ICB4cl9zZXNzaW9uX3Byb21pc2VfdGVzdCgKKyAgICAgICJUZXN0cyByZXF1ZXN0U2Vzc2lvbiBh
Y2NlcHRzIFhSU2Vzc2lvbkluaXQgZGljdGlvbmFyeSIsCisgICAgICAoc2Vzc2lvbikgPT4gewor
ICAgICAgICBhc3NlcnRfbm90X2VxdWFscyhzZXNzaW9uLCBudWxsKTsKKyAgICAgIH0sIFRSQUNL
RURfSU1NRVJTSVZFX0RFVklDRSwgJ2ltbWVyc2l2ZS12cicsIHt9KTsKKworICAgIHhyX3Nlc3Np
b25fcHJvbWlzZV90ZXN0KAorICAgICAgIlRlc3RzIHJlcXVlc3RTZXNzaW9uIGlnbm9yZXMgdW5r
bm93biBvcHRpb25hbEZlYXR1cmVzIiwKKyAgICAgIChzZXNzaW9uKSA9PiB7CisgICAgICAgIGFz
c2VydF9ub3RfZXF1YWxzKHNlc3Npb24sIG51bGwpOworICAgICAgfSwgVFJBQ0tFRF9JTU1FUlNJ
VkVfREVWSUNFLCAnaW1tZXJzaXZlLXZyJywge29wdGlvbmFsRmVhdHVyZXM6IFsndW5pY29ybnMn
XX0pOworICA8L3NjcmlwdD4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJEZXZpY2VfcmVxdWVzdFNlc3Npb25f
aW1tZXJzaXZlX25vX2dlc3R1cmUuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJEZXZpY2VfcmVxdWVzdFNlc3Npb25faW1tZXJz
aXZlX25vX2dlc3R1cmUuaHR0cHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMTI0YTIxMjMwMjgyN2I5Zjhk
YzAzZThhMzRkZWU4NzBjZWEyYmYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94ckRldmljZV9yZXF1ZXN0U2Vzc2lv
bl9pbW1lcnNpdmVfbm9fZ2VzdHVyZS5odHRwcy5odG1sCkBAIC0wLDAgKzEsMTYgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGJvZHk+CisgIDxzY3JpcHQgc3JjPS9yZXNvdXJjZXMvdGVzdGhhcm5lc3Mu
anM+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPS9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQu
anM+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvd2VieHJfdXRpbC5qcyI+PC9z
Y3JpcHQ+CisgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvd2VieHJfdGVzdF9jb25zdGFudHMuanMi
Pjwvc2NyaXB0PgorICA8c2NyaXB0PgorICAgIHhyX3Byb21pc2VfdGVzdCgKKyAgICAgICJSZXF1
ZXN0aW5nIGltbWVyc2l2ZSBzZXNzaW9uIG91dHNpZGUgb2YgYSB1c2VyIGdlc3R1cmUgcmVqZWN0
cyIsCisgICAgICAodCkgPT4geworICAgICAgICByZXR1cm4gbmF2aWdhdG9yLnhyLnRlc3Quc2lt
dWxhdGVEZXZpY2VDb25uZWN0aW9uKFRSQUNLRURfSU1NRVJTSVZFX0RFVklDRSkKKyAgICAgICAg
ICAudGhlbiggKGNvbnRyb2xsZXIpID0+IHByb21pc2VfcmVqZWN0c19kb20oCisgICAgICAgICAg
ICB0LCAnU2VjdXJpdHlFcnJvcicsIG5hdmlnYXRvci54ci5yZXF1ZXN0U2Vzc2lvbignaW1tZXJz
aXZlLXZyJykpKTsKKyAgICAgIH0pOworICA8L3NjcmlwdD4KKzwvYm9keT4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJEZXZp
Y2VfcmVxdWVzdFNlc3Npb25faW1tZXJzaXZlX3Vuc3VwcG9ydGVkLmh0dHBzLmh0bWwgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyRGV2aWNlX3Jl
cXVlc3RTZXNzaW9uX2ltbWVyc2l2ZV91bnN1cHBvcnRlZC5odHRwcy5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjllM2QyZjBjZDkyMGVkMGI3NTQyNTlmMTdkMTBmZTk5MTkzYThiNjQKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hy
RGV2aWNlX3JlcXVlc3RTZXNzaW9uX2ltbWVyc2l2ZV91bnN1cHBvcnRlZC5odHRwcy5odG1sCkBA
IC0wLDAgKzEsMjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGJvZHk+CisgIDxzY3JpcHQgc3JjPS9y
ZXNvdXJjZXMvdGVzdGhhcm5lc3MuanM+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPS9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3NyZXBvcnQuanM+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvd2VieHJfdXRpbC5qcyI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvd2Vi
eHJfdGVzdF9jb25zdGFudHMuanMiPjwvc2NyaXB0PgorICA8c2NyaXB0PgorICAgIHhyX3Byb21p
c2VfdGVzdCgKKyAgICAgICJSZXF1ZXN0aW5nIGFuIGltbWVyc2l2ZSBzZXNzaW9uIHdoZW4gdW5z
dXBwb3J0ZWQgcmVqZWN0cyIsCisgICAgICAodCkgPT4geworICAgICAgICByZXR1cm4gbmF2aWdh
dG9yLnhyLnRlc3Quc2ltdWxhdGVEZXZpY2VDb25uZWN0aW9uKFZBTElEX05PTl9JTU1FUlNJVkVf
REVWSUNFKQorICAgICAgICAgIC50aGVuKCAoY29udHJvbGxlcikgPT4gbmV3IFByb21pc2UoKHJl
c29sdmUpID0+IHsKKyAgICAgICAgICAgIG5hdmlnYXRvci54ci50ZXN0LnNpbXVsYXRlVXNlckFj
dGl2YXRpb24oICgpID0+IHsKKyAgICAgICAgICAgICAgcmVzb2x2ZShwcm9taXNlX3JlamVjdHNf
ZG9tKAorICAgICAgICAgICAgICAgIHQsCisgICAgICAgICAgICAgICAgIk5vdFN1cHBvcnRlZEVy
cm9yIiwKKyAgICAgICAgICAgICAgICBuYXZpZ2F0b3IueHIucmVxdWVzdFNlc3Npb24oJ2ltbWVy
c2l2ZS12cicpCisgICAgICAgICAgICAgICkpCisgICAgICAgICAgICB9KTsKKyAgICAgICAgICB9
KSk7CisgICAgICB9KTsKKyAgPC9zY3JpcHQ+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyRGV2aWNlX3JlcXVl
c3RTZXNzaW9uX25vX21vZGUuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJEZXZpY2VfcmVxdWVzdFNlc3Npb25fbm9fbW9kZS5o
dHRwcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjljMWViYjdlZmQ3YmZjMGI1MTg3M2RmNTE0MzUzMDMyMmY0
Mjg0MGEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dlYnhyL3hyRGV2aWNlX3JlcXVlc3RTZXNzaW9uX25vX21vZGUuaHR0cHMu
aHRtbApAQCAtMCwwICsxLDIyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxib2R5PgorICA8c2NyaXB0
IHNyYz0vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzPjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0v
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzPjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0i
cmVzb3VyY2VzL3dlYnhyX3V0aWwuanMiPjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL3dlYnhyX3Rlc3RfY29uc3RhbnRzLmpzIj48L3NjcmlwdD4KKyAgPHNjcmlwdD4KKyAgICB4
cl9wcm9taXNlX3Rlc3QoCisgICAgICAiUmVxdWVzdGluZyBhIHNlc3Npb24gd2l0aCBubyBtb2Rl
IHJlamVjdHMiLAorICAgICAgKHQpID0+IHsKKyAgICAgICAgcmV0dXJuIG5hdmlnYXRvci54ci50
ZXN0LnNpbXVsYXRlRGV2aWNlQ29ubmVjdGlvbihWQUxJRF9OT05fSU1NRVJTSVZFX0RFVklDRSkK
KyAgICAgICAgICAudGhlbiggKGNvbnRyb2xsZXIpID0+IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9
PiB7CisgICAgICAgICAgICBuYXZpZ2F0b3IueHIudGVzdC5zaW11bGF0ZVVzZXJBY3RpdmF0aW9u
KCAoKSA9PiB7CisgICAgICAgICAgICAgIHQuc3RlcF9mdW5jKCgpID0+IHsKKyAgICAgICAgICAg
ICAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4gbmF2aWdhdG9yLnhyLnJlcXVl
c3RTZXNzaW9uKCkpCisgICAgICAgICAgICAgIH0pCisgICAgICAgICAgICAgIHJlc29sdmUoKQor
ICAgICAgICAgICAgfSk7CisgICAgICAgICAgfSkpOworICAgICAgfSk7CisgIDwvc2NyaXB0Pgor
PC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93ZWJ4ci94ckRldmljZV9yZXF1ZXN0U2Vzc2lvbl9ub25faW1tZXJzaXZlX25vX2dl
c3R1cmUuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd2VieHIveHJEZXZpY2VfcmVxdWVzdFNlc3Npb25fbm9uX2ltbWVyc2l2ZV9ub19nZXN0
dXJlLmh0dHBzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTk5NTA1OTI1NTg1MTNmMjUzMGFhZWRhYTg2Zjg5
Yzk1NTE2Njg2MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJEZXZpY2VfcmVxdWVzdFNlc3Npb25fbm9uX2ltbWVy
c2l2ZV9ub19nZXN0dXJlLmh0dHBzLmh0bWwKQEAgLTAsMCArMSwxNiBAQAorPCFET0NUWVBFIGh0
bWw+Cis8Ym9keT4KKyAgPHNjcmlwdCBzcmM9L3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcz48L3Nj
cmlwdD4KKyAgPHNjcmlwdCBzcmM9L3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcz48L3Nj
cmlwdD4KKyAgPHNjcmlwdCBzcmM9InJlc291cmNlcy93ZWJ4cl91dGlsLmpzIj48L3NjcmlwdD4K
KyAgPHNjcmlwdCBzcmM9InJlc291cmNlcy93ZWJ4cl90ZXN0X2NvbnN0YW50cy5qcyI+PC9zY3Jp
cHQ+CisgIDxzY3JpcHQ+CisgICAgeHJfcHJvbWlzZV90ZXN0KAorICAgICAgIlJlcXVlc3Rpbmcg
bm9uLWltbWVyc2l2ZSBzZXNzaW9uIG91dHNpZGUgb2YgYSB1c2VyIGdlc3R1cmUgc3VjY2VlZHMi
LAorICAgICAgKHQpID0+IHsKKyAgICAgICAgcmV0dXJuIG5hdmlnYXRvci54ci50ZXN0LnNpbXVs
YXRlRGV2aWNlQ29ubmVjdGlvbihWQUxJRF9OT05fSU1NRVJTSVZFX0RFVklDRSkKKyAgICAgICAg
ICAudGhlbiggKGNvbnRyb2xsZXIpID0+IG5hdmlnYXRvci54ci5yZXF1ZXN0U2Vzc2lvbignaW5s
aW5lJykpCisgICAgICAgICAgLnRoZW4oIChzZXNzaW9uKSA9PiB7IGFzc2VydF9ub3RfZXF1YWxz
KHNlc3Npb24sIG51bGwpOyB9KTsKKyAgICAgIH0pOworICA8L3NjcmlwdD4KKzwvYm9keT4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Vi
eHIveHJEZXZpY2VfcmVxdWVzdFNlc3Npb25fb3B0aW9uYWxGZWF0dXJlcy5odHRwcy5odG1sIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94ckRldmlj
ZV9yZXF1ZXN0U2Vzc2lvbl9vcHRpb25hbEZlYXR1cmVzLmh0dHBzLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MDA3MWI4MWU4Mjg2MDNjMzc2NWVkYzFmZWEzZmY2NTliM2UzOTQ1MgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJE
ZXZpY2VfcmVxdWVzdFNlc3Npb25fb3B0aW9uYWxGZWF0dXJlcy5odHRwcy5odG1sCkBAIC0wLDAg
KzEsMzMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGJvZHk+CisgIDxzY3JpcHQgc3JjPS9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3MuanM+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPS9yZXNvdXJjZXMvdGVz
dGhhcm5lc3NyZXBvcnQuanM+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvd2Vi
eHJfdXRpbC5qcyI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvd2VieHJfdGVz
dF9jb25zdGFudHMuanMiPjwvc2NyaXB0PgorICA8Y2FudmFzPjwvY2FudmFzPgorICA8c2NyaXB0
PgorICAgIHhyX3Nlc3Npb25fcHJvbWlzZV90ZXN0KAorICAgICAgIlRlc3RzIHJlcXVlc3RTZXNz
aW9uIGFjY2VwdHMgWFJTZXNzaW9uSW5pdCBkaWN0aW9uYXJ5IiwKKyAgICAgIChzZXNzaW9uKSA9
PiB7CisgICAgICAgIGFzc2VydF9ub3RfZXF1YWxzKHNlc3Npb24sIG51bGwpOworICAgICAgfSwg
VFJBQ0tFRF9JTU1FUlNJVkVfREVWSUNFLCAnaW1tZXJzaXZlLXZyJywge30pOworCisgICAgeHJf
c2Vzc2lvbl9wcm9taXNlX3Rlc3QoCisgICAgICAiVGVzdHMgcmVxdWVzdFNlc3Npb24gYWNjZXB0
cyBYUlNlc3Npb25Jbml0IGRpY3Rpb25hcnkgd2l0aCBlbXB0eSBmZWF0dXJlIGxpc3RzIiwKKyAg
ICAgIChzZXNzaW9uKSA9PiB7CisgICAgICAgIGFzc2VydF9ub3RfZXF1YWxzKHNlc3Npb24sIG51
bGwpOworICAgICAgfSwgVFJBQ0tFRF9JTU1FUlNJVkVfREVWSUNFLCAnaW1tZXJzaXZlLXZyJywg
e3JlcXVpcmVkRmVhdHVyZXM6IFtdLCBvcHRpb25hbEZlYXR1cmVzOiBbXX0pOworCisgICAgeHJf
c2Vzc2lvbl9wcm9taXNlX3Rlc3QoCisgICAgICAiVGVzdHMgcmVxdWVzdFNlc3Npb24gaWdub3Jl
cyB1bmtub3duIHN0cmluZ3MgaW4gb3B0aW9uYWxGZWF0dXJlcyIsCisgICAgICAoc2Vzc2lvbikg
PT4geworICAgICAgICBhc3NlcnRfbm90X2VxdWFscyhzZXNzaW9uLCBudWxsKTsKKyAgICAgIH0s
IFRSQUNLRURfSU1NRVJTSVZFX0RFVklDRSwgJ2ltbWVyc2l2ZS12cicsIHtvcHRpb25hbEZlYXR1
cmVzOiBbJ3VuaWNvcm5zJ119KTsKKworICAgIHhyX3Nlc3Npb25fcHJvbWlzZV90ZXN0KAorICAg
ICAgIlRlc3RzIHJlcXVlc3RTZXNzaW9uIGlnbm9yZXMgdW5rbm93biBvYmplY3RzIGluIG9wdGlv
bmFsRmVhdHVyZXMiLAorICAgICAgKHNlc3Npb24pID0+IHsKKyAgICAgICAgYXNzZXJ0X25vdF9l
cXVhbHMoc2Vzc2lvbiwgbnVsbCk7CisgICAgICB9LCBUUkFDS0VEX0lNTUVSU0lWRV9ERVZJQ0Us
ICdpbW1lcnNpdmUtdnInLCB7b3B0aW9uYWxGZWF0dXJlczogW3sgdW5pY29ybnM6ICJwbGVhc2Ui
IH1dfSk7CisgIDwvc2NyaXB0PgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94ckRldmljZV9yZXF1ZXN0U2Vzc2lv
bl9yZXF1aXJlZEZlYXR1cmVzX3Vua25vd24uaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJEZXZpY2VfcmVxdWVzdFNlc3Npb25f
cmVxdWlyZWRGZWF0dXJlc191bmtub3duLmh0dHBzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmRhNDBhZjcw
MGEzZjFjODRkNjFkMDU2OWI1ZWQ5ODk0YjZmYjAyYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJEZXZpY2VfcmVx
dWVzdFNlc3Npb25fcmVxdWlyZWRGZWF0dXJlc191bmtub3duLmh0dHBzLmh0bWwKQEAgLTAsMCAr
MSwzNSBAQAorPCFET0NUWVBFIGh0bWw+Cis8Ym9keT4KKyAgPHNjcmlwdCBzcmM9L3Jlc291cmNl
cy90ZXN0aGFybmVzcy5qcz48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9L3Jlc291cmNlcy90ZXN0
aGFybmVzc3JlcG9ydC5qcz48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9InJlc291cmNlcy93ZWJ4
cl91dGlsLmpzIj48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9InJlc291cmNlcy93ZWJ4cl90ZXN0
X2NvbnN0YW50cy5qcyI+PC9zY3JpcHQ+CisgIDxjYW52YXM+PC9jYW52YXM+CisgIDxzY3JpcHQ+
CisgICAgeHJfcHJvbWlzZV90ZXN0KAorICAgICAgIlRlc3RzIHJlcXVlc3RTZXNzaW9uIHJlamVj
dHMgZm9yIHVua25vd24gcmVxdWlyZWRGZWF0dXJlcyIsCisgICAgICAodCkgPT4geworICAgICAg
ICByZXR1cm4gbmF2aWdhdG9yLnhyLnRlc3Quc2ltdWxhdGVEZXZpY2VDb25uZWN0aW9uKFRSQUNL
RURfSU1NRVJTSVZFX0RFVklDRSkKKyAgICAgICAgICAudGhlbiggKGNvbnRyb2xsZXIpID0+IG5l
dyBQcm9taXNlKChyZXNvbHZlKSA9PiB7CisgICAgICAgICAgICBuYXZpZ2F0b3IueHIudGVzdC5z
aW11bGF0ZVVzZXJBY3RpdmF0aW9uKCAoKSA9PiB7CisgICAgICAgICAgICAgIHJlc29sdmUocHJv
bWlzZV9yZWplY3RzX2RvbSgKKyAgICAgICAgICAgICAgICB0LAorICAgICAgICAgICAgICAgICJO
b3RTdXBwb3J0ZWRFcnJvciIsCisgICAgICAgICAgICAgICAgbmF2aWdhdG9yLnhyLnJlcXVlc3RT
ZXNzaW9uKCdpbW1lcnNpdmUtdnInLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB7cmVxdWlyZWRGZWF0dXJlczogWyd1bmRlZmluZWQtdW5pY29ybnMnXX0pLAor
ICAgICAgICAgICAgICAgICJ1bmV4cGVjdGVkIHJlcXVlc3RTZXNzaW9uIHN1Y2Nlc3MiCisgICAg
ICAgICAgICAgICkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHByb21pc2Vf
cmVqZWN0c19kb20oCisgICAgICAgICAgICAgICAgICB0LAorICAgICAgICAgICAgICAgICAgIk5v
dFN1cHBvcnRlZEVycm9yIiwKKyAgICAgICAgICAgICAgICAgIG5hdmlnYXRvci54ci5yZXF1ZXN0
U2Vzc2lvbignaW1tZXJzaXZlLXZyJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAge3JlcXVpcmVkRmVhdHVyZXM6IFt7dW5pY29ybnM6ICJwbGVhc2UifV19KSwK
KyAgICAgICAgICAgICAgICAgICJ1bmV4cGVjdGVkIHJlcXVlc3RTZXNzaW9uIHN1Y2Nlc3Mgd2l0
aCB1bmtub3duIG9iamVjdCIKKyAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgICB9KSk7
CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICB9KSk7CisgICAgICB9KTsKKworICA8L3Njcmlw
dD4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd2VieHIveHJGcmFtZV9nZXRQb3NlLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyRnJhbWVfZ2V0UG9zZS5o
dHRwcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFmM2UzNzY1ZGY0ZTBhNDMxOWVhOTQ4NDJmMjM2OGU2NzM5
NDhjNGMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dlYnhyL3hyRnJhbWVfZ2V0UG9zZS5odHRwcy5odG1sCkBAIC0wLDAgKzEs
MTAyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJu
ZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVw
b3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvd2VieHJfdGVzdF9jb25z
dGFudHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy93ZWJ4cl91dGlsLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvd2VieHJfdGVzdF9hc3NlcnRzLmpz
Ij48L3NjcmlwdD4KKzxjYW52YXM+PC9jYW52YXM+CisKKzxzY3JpcHQ+CisKK2xldCBpbW1lcnNp
dmVUZXN0TmFtZSA9ICJYUkZyYW1lLmdldFBvc2Ugd29ya3MgZm9yIGltbWVyc2l2ZSBzZXNzaW9u
cyI7CitsZXQgbm9uSW1tZXJzaXZlVGVzdE5hbWUgPSAiWFJGcmFtZS5nZXRQb3NlIHdvcmtzIGZv
ciBub24taW1tZXJzaXZlIHNlc3Npb25zIjsKKworbGV0IGZha2VEZXZpY2VJbml0UGFyYW1zID0g
VFJBQ0tFRF9JTU1FUlNJVkVfREVWSUNFOworCitsZXQgdGVzdEZ1bmN0aW9uID0gZnVuY3Rpb24o
c2Vzc2lvbiwgZmFrZURldmljZUNvbnRyb2xsZXIsIHQpIHsKKyAgcmV0dXJuIFByb21pc2UuYWxs
KFsKKyAgICBzZXNzaW9uLnJlcXVlc3RSZWZlcmVuY2VTcGFjZSgnbG9jYWwnKSwKKyAgICBzZXNz
aW9uLnJlcXVlc3RSZWZlcmVuY2VTcGFjZSgnbG9jYWwnKQorICBdKS50aGVuKChzcGFjZXMpID0+
IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7CisgICAgZnVuY3Rpb24gb25GcmFtZSh0aW1lLCB4
ckZyYW1lKSB7CisgICAgICBjb25zdCByYWRpYW5zID0gTWF0aC5QSSAvIDIuMDsgLy8gOTAgZGVn
cmVlcworCisgICAgICAvLyBCb3RoIGV5ZS1sZXZlbCBzcGFjZXMgc3RhcnQgb3V0IHdpdGggb3Jp
Z2luT2Zmc2V0ID0gaWRlbnRpdHkgbWF0cml4LgorICAgICAgbGV0IHNwYWNlMSA9IHNwYWNlc1sw
XTsKKyAgICAgIGxldCBzcGFjZTIgPSBzcGFjZXNbMV07CisKKyAgICAgIGxldCBvZmZzZXQgPSBu
ZXcgWFJSaWdpZFRyYW5zZm9ybSgKKyAgICAgICAgRE9NUG9pbnRSZWFkT25seS5mcm9tUG9pbnQo
eworICAgICAgICAgIHg6IDIsCisgICAgICAgICAgeTogMywKKyAgICAgICAgICB6OiA0LAorICAg
ICAgICAgIHc6IDEsCisgICAgICAgIH0pKTsKKworICAgICAgbGV0IHRyYW5zbGF0ZWRTcGFjZTEg
PSBzcGFjZTEuZ2V0T2Zmc2V0UmVmZXJlbmNlU3BhY2Uob2Zmc2V0KTsKKyAgICAgIGxldCB0cmFu
c2xhdGVkX2Zyb21fYmFzZSA9IHhyRnJhbWUuZ2V0UG9zZSh0cmFuc2xhdGVkU3BhY2UxLCBzcGFj
ZTEpOworCisgICAgICAvLyBHZXR0aW5nIHRoZSB0cmFuc2Zvcm0gb2YgYW4gb2Zmc2V0IHNwYWNl
IGZyb20gdGhlIHNwYWNlIGl0IHdhcyBiYXNlZCBvbgorICAgICAgLy8gc2hvdWxkIGJlIHRoZSBz
YW1lIGFzIHRoZSBpbml0aWFsbHkgYXBwbGllZCBvZmZzZXQuCisgICAgICB0LnN0ZXAoKCkgPT4g
eworICAgICAgICBhc3NlcnRfbWF0cml4X2FwcHJveF9lcXVhbHModHJhbnNsYXRlZF9mcm9tX2Jh
c2UudHJhbnNmb3JtLm1hdHJpeCwgb2Zmc2V0Lm1hdHJpeCwgRkxPQVRfRVBTSUxPTik7CisgICAg
ICB9KTsKKworICAgICAgLy8gUm90YXRlIDkwIGRlZ3JlZXMgYWJvdXQgeCBheGlzLCB0aGVuIG1v
dmUgMSBtZXRlciBhbG9uZyB5IGF4aXMuCisgICAgICBzcGFjZTEgPSBzcGFjZTEuZ2V0T2Zmc2V0
UmVmZXJlbmNlU3BhY2UobmV3IFhSUmlnaWRUcmFuc2Zvcm0oCisgICAgICAgIERPTVBvaW50UmVh
ZE9ubHkuZnJvbVBvaW50KHsKKyAgICAgICAgICB4IDogMCwKKyAgICAgICAgICB5IDogMSwKKyAg
ICAgICAgICB6IDogMCwKKyAgICAgICAgICB3IDogMQorICAgICAgICB9KSwKKyAgICAgICAgRE9N
UG9pbnRSZWFkT25seS5mcm9tUG9pbnQoeworICAgICAgICAgIHggOiBNYXRoLnNpbihyYWRpYW5z
IC8gMiksCisgICAgICAgICAgeSA6IDAsCisgICAgICAgICAgeiA6IDAsCisgICAgICAgICAgdyA6
IE1hdGguY29zKHJhZGlhbnMgLyAyKQorICAgICAgICB9KQorICAgICAgKSk7CisKKyAgICAgIC8v
IFJvdGF0ZSA5MCBkZWdyZWVzIGFib3V0IHogYXhpcywgdGhlbiBtb3ZlIDEgbWV0ZXIgYWxvbmcg
eCBheGlzLgorICAgICAgc3BhY2UyID0gc3BhY2UyLmdldE9mZnNldFJlZmVyZW5jZVNwYWNlKG5l
dyBYUlJpZ2lkVHJhbnNmb3JtKAorICAgICAgICBET01Qb2ludFJlYWRPbmx5LmZyb21Qb2ludCh7
CisgICAgICAgICAgeCA6IDEsCisgICAgICAgICAgeSA6IDAsCisgICAgICAgICAgeiA6IDAsCisg
ICAgICAgICAgdyA6IDEKKyAgICAgICAgfSksCisgICAgICAgIERPTVBvaW50UmVhZE9ubHkuZnJv
bVBvaW50KHsKKyAgICAgICAgICB4IDogMCwKKyAgICAgICAgICB5IDogMCwKKyAgICAgICAgICB6
IDogTWF0aC5zaW4ocmFkaWFucyAvIDIpLAorICAgICAgICAgIHcgOiBNYXRoLmNvcyhyYWRpYW5z
IC8gMikKKyAgICAgICAgfSkKKyAgICAgICkpOworCisgICAgICBsZXQgc3BhY2UyX2Zyb21fc3Bh
Y2UxID0geHJGcmFtZS5nZXRQb3NlKHNwYWNlMSwgc3BhY2UyKTsKKyAgICAgIGNvbnN0IEVYUEVD
VEVEX1BPU0VfTUFUUklYID0gWworICAgICAgICAgMCwgLTEsIDAsIDAsIC8vIDFzdCBjb2x1bW4K
KyAgICAgICAgIDAsICAwLCAxLCAwLCAvLyAybmQgY29sdW1uCisgICAgICAgIC0xLCAgMCwgMCwg
MCwgLy8gM3JkIGNvbHVtbgorICAgICAgICAgMSwgIDEsIDAsIDEgLy8gNHRoIGNvbHVtbgorICAg
ICAgXTsKKworICAgICAgdC5zdGVwKCgpID0+IHsKKyAgICAgICAgYXNzZXJ0X21hdHJpeF9hcHBy
b3hfZXF1YWxzKHNwYWNlMl9mcm9tX3NwYWNlMS50cmFuc2Zvcm0ubWF0cml4LCBFWFBFQ1RFRF9Q
T1NFX01BVFJJWCwgRkxPQVRfRVBTSUxPTik7CisgICAgICB9KTsKKworICAgICAgLy8gRmluaXNo
ZWQgdGVzdC4KKyAgICAgIHJlc29sdmUoKTsKKyAgICB9CisKKyAgICBzZXNzaW9uLnJlcXVlc3RB
bmltYXRpb25GcmFtZShvbkZyYW1lKTsKKyAgfSkpOworfTsKKworeHJfc2Vzc2lvbl9wcm9taXNl
X3Rlc3QoaW1tZXJzaXZlVGVzdE5hbWUsIHRlc3RGdW5jdGlvbiwKKyAgZmFrZURldmljZUluaXRQ
YXJhbXMsICdpbW1lcnNpdmUtdnInKTsKK3hyX3Nlc3Npb25fcHJvbWlzZV90ZXN0KG5vbkltbWVy
c2l2ZVRlc3ROYW1lLCB0ZXN0RnVuY3Rpb24sCisgIGZha2VEZXZpY2VJbml0UGFyYW1zLCAnaW5s
aW5lJywgeyAncmVxdWlyZWRGZWF0dXJlcyc6IFsnbG9jYWwnXSB9KTsKKworPC9zY3JpcHQ+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dl
YnhyL3hyRnJhbWVfZ2V0Vmlld2VyUG9zZV9nZXRQb3NlLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyRnJhbWVfZ2V0Vmlld2Vy
UG9zZV9nZXRQb3NlLmh0dHBzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2QyNjk4M2ZjOTYzYzNlZjRiMDA3
MjZkMDU1ZjZiMWE4NWQyZDVmOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJGcmFtZV9nZXRWaWV3ZXJQb3NlX2dl
dFBvc2UuaHR0cHMuaHRtbApAQCAtMCwwICsxLDYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxib2R5
PgorICA8c2NyaXB0IHNyYz0vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzPjwvc2NyaXB0PgorICA8
c2NyaXB0IHNyYz0vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzPjwvc2NyaXB0PgorICA8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL3dlYnhyX3V0aWwuanMiPjwvc2NyaXB0PgorICA8c2NyaXB0
IHNyYz0icmVzb3VyY2VzL3dlYnhyX3Rlc3RfY29uc3RhbnRzLmpzIj48L3NjcmlwdD4KKyAgPHNj
cmlwdCBzcmM9InJlc291cmNlcy93ZWJ4cl90ZXN0X2Fzc2VydHMuanMiPjwvc2NyaXB0PgorICA8
Y2FudmFzPjwvY2FudmFzPgorCisgIDxzY3JpcHQ+CisKKyAgICBsZXQgdGVzdE5hbWUgPSAiWFJG
cmFtZSBnZXRWaWV3ZXJQb3NlKHJlZlNwYWNlKSBtYXRjaGVzIGdldFBvc2Uodmlld2VyLCByZWZT
cGFjZSkuIjsKKworICAgIC8vIFVzZWQgZm9yIHZpZXdlciBvcmlnaW4sIHRoZSBhY3R1YWwgdmFs
dWVzIHNob3VsZCBub3QgbWF0dGVyIGZvciB0aGUgdGVzdC4KKyAgICBjb25zdCBwb3NlVHJhbnNm
b3JtID0geworICAgICAgICBwb3NpdGlvbjogWzEsIDIsIDNdLAorICAgICAgICBvcmllbnRhdGlv
bjogWzAuNSwgMC41LCAwLjUsIDAuNV0gLy8gMTIwIGRlZ3JlZXMgYXJvdW5kIFsxLCAxLCAxXSBh
eGlzCisgICAgfTsKKworICAgIC8vIFVzZSB0aGUgc2FtZSBkZXZpY2UgYXMgdHJhY2tlZCBpbW1l
cnNpdmUgZGV2aWNlLCBidXQgbW9kaWZ5IHRoZSB2aWV3ZXIgb3JpZ2luLgorICAgIGNvbnN0IGRl
dmljZUluaXRQYXJhbXMgPSBPYmplY3QuYXNzaWduKHt9LCBUUkFDS0VEX0lNTUVSU0lWRV9ERVZJ
Q0UsIHt2aWV3ZXJPcmlnaW46IHBvc2VUcmFuc2Zvcm19KTsKKworICAgIC8vIFVzZWQgd2hlbiBj
cmVhdGluZyBhIHJlZmVyZW5jZSBzcGFjZSB0aGF0IGlzIG9mZnNldCBmcm9tIGxvY2FsIHNwYWNl
LgorICAgIC8vIEFjdHVhbCB2YWx1ZXMgc2hvdWxkIG5vdCBtYXR0ZXIgZm9yIHRoZSB0ZXN0Lgor
ICAgIGNvbnN0IG9mZnNldFNwYWNlVHJhbnNmb3JtID0gbmV3IFhSUmlnaWRUcmFuc2Zvcm0oCisg
ICAgICB7IHg6IDEuMDAsIHk6IC0xLjUwLCB6OiAxMC4wMCwgdzogMS4wIH0sCisgICAgICB7IHg6
IDAuMjcsIHk6ICAwLjAwLCB6OiAgMC4yNywgdzogMC45Mn0sICAvLyA0NSBkZWdyZWVzIGFyb3Vu
ZCBbMSwgMCwgMV0gYXhpcworICAgICk7CisKKyAgICBjb25zdCB0ZXN0RnVuY3Rpb24gPSBmdW5j
dGlvbihzZXNzaW9uLCBmYWtlRGV2aWNlQ29udHJvbGxlciwgdCkgeworICAgICAgcmV0dXJuIFBy
b21pc2UuYWxsKFsKKyAgICAgICAgc2Vzc2lvbi5yZXF1ZXN0UmVmZXJlbmNlU3BhY2UoJ2xvY2Fs
JyksCisgICAgICAgIHNlc3Npb24ucmVxdWVzdFJlZmVyZW5jZVNwYWNlKCd2aWV3ZXInKSwKKyAg
ICAgIF0pLnRoZW4oKFtyZWZlcmVuY2VTcGFjZSwgdmlld2VyUmVmU3BhY2VdKSA9PiBuZXcgUHJv
bWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CisgICAgICAgIGNvbnN0IG9mZnNldFJlZlNwYWNl
ID0gcmVmZXJlbmNlU3BhY2UuZ2V0T2Zmc2V0UmVmZXJlbmNlU3BhY2Uob2Zmc2V0U3BhY2VUcmFu
c2Zvcm0pOworCisgICAgICAgIGZ1bmN0aW9uIG9uRnJhbWUodGltZSwgZnJhbWUpeworICAgICAg
ICAgIHQuc3RlcCgoKSA9PiB7CisgICAgICAgICAgICBjb25zdCBwb3NlMSA9IGZyYW1lLmdldFZp
ZXdlclBvc2UocmVmZXJlbmNlU3BhY2UpOworICAgICAgICAgICAgY29uc3QgcG9zZTIgPSBmcmFt
ZS5nZXRQb3NlKHZpZXdlclJlZlNwYWNlLCByZWZlcmVuY2VTcGFjZSk7CisgICAgICAgICAgICBh
c3NlcnRfbm90X2VxdWFscyhwb3NlMSwgbnVsbCk7CisgICAgICAgICAgICBhc3NlcnRfbm90X2Vx
dWFscyhwb3NlMiwgbnVsbCk7CisgICAgICAgICAgICBhc3NlcnRfbWF0cml4X2FwcHJveF9lcXVh
bHMocG9zZTEudHJhbnNmb3JtLm1hdHJpeCwgcG9zZTIudHJhbnNmb3JtLm1hdHJpeCk7CisKKyAg
ICAgICAgICAgIGNvbnN0IHBvc2UzID0gZnJhbWUuZ2V0Vmlld2VyUG9zZShvZmZzZXRSZWZTcGFj
ZSk7CisgICAgICAgICAgICBjb25zdCBwb3NlNCA9IGZyYW1lLmdldFBvc2Uodmlld2VyUmVmU3Bh
Y2UsIG9mZnNldFJlZlNwYWNlKTsKKyAgICAgICAgICAgIGFzc2VydF9ub3RfZXF1YWxzKHBvc2Uz
LCBudWxsKTsKKyAgICAgICAgICAgIGFzc2VydF9ub3RfZXF1YWxzKHBvc2U0LCBudWxsKTsKKyAg
ICAgICAgICAgIGFzc2VydF9tYXRyaXhfYXBwcm94X2VxdWFscyhwb3NlMy50cmFuc2Zvcm0ubWF0
cml4LCBwb3NlNC50cmFuc2Zvcm0ubWF0cml4KTsKKyAgICAgICAgICB9KTsKKworICAgICAgICAg
IHJlc29sdmUoKTsKKyAgICAgICAgfQorCisgICAgICAgIHNlc3Npb24ucmVxdWVzdEFuaW1hdGlv
bkZyYW1lKG9uRnJhbWUpOworICAgICAgfSkpOworICAgIH07CisKKyAgICB4cl9zZXNzaW9uX3By
b21pc2VfdGVzdCh0ZXN0TmFtZSwgdGVzdEZ1bmN0aW9uLAorICAgICAgZGV2aWNlSW5pdFBhcmFt
cywgJ2ltbWVyc2l2ZS12cicpOworCisgIDwvc2NyaXB0PgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94ckZyYW1l
X2xpZmV0aW1lLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dlYnhyL3hyRnJhbWVfbGlmZXRpbWUuaHR0cHMuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43
YzcxZjBhZjNkZGE5NjBiYjRjNzIzZTRjZDhhMTI2N2RiNDVhM2U2Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94ckZy
YW1lX2xpZmV0aW1lLmh0dHBzLmh0bWwKQEAgLTAsMCArMSw1OCBAQAorPCFET0NUWVBFIGh0bWw+
Cis8Ym9keT4KKyAgPHNjcmlwdCBzcmM9L3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcz48L3Njcmlw
dD4KKyAgPHNjcmlwdCBzcmM9L3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcz48L3Njcmlw
dD4KKyAgPHNjcmlwdCBzcmM9InJlc291cmNlcy93ZWJ4cl91dGlsLmpzIj48L3NjcmlwdD4KKyAg
PHNjcmlwdCBzcmM9InJlc291cmNlcy93ZWJ4cl90ZXN0X2NvbnN0YW50cy5qcyI+PC9zY3JpcHQ+
CisgIDxjYW52YXM+PC9jYW52YXM+CisKKyAgPHNjcmlwdD4KKyAgICBsZXQgaW1tZXJzaXZlVGVz
dE5hbWUgPSAiWFJGcmFtZSBtZXRob2RzIHRocm93IGV4Y2VwdGlvbnMgb3V0c2lkZSBvZiB0aGUg
IiArCisgICAgICAicmVxdWVzdEFuaW1hdGlvbkZyYW1lIGNhbGxiYWNrIGZvciBpbW1lcnNpdmUg
c2Vzc2lvbnMiOworICAgIGxldCBub25JbW1lcnNpdmVUZXN0TmFtZSA9ICJYUkZyYW1lIG1ldGhv
ZHMgdGhyb3cgZXhjZXB0aW9ucyBvdXRzaWRlIG9mIHRoZSAiICsKKyAgICAgICJyZXF1ZXN0QW5p
bWF0aW9uRnJhbWUgY2FsbGJhY2sgZm9yIG5vbi1pbW1lcnNpdmUgc2Vzc2lvbnMiOworCisgICAg
bGV0IGZha2VEZXZpY2VJbml0UGFyYW1zID0gVFJBQ0tFRF9JTU1FUlNJVkVfREVWSUNFOworCisg
ICAgbGV0IHRlc3RGdW5jdGlvbiA9ICh0ZXN0U2Vzc2lvbiwgdGVzdENvbnRyb2xsZXIsIHQpID0+
IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7CisgICAgICBsZXQgc3RhbGVGcmFtZSA9IG51bGw7
CisgICAgICBsZXQgY3VycmVudFJlZmVyZW5jZVNwYWNlID0gbnVsbDsKKyAgICAgIGxldCBjdXJy
ZW50Vmlld2VyU3BhY2UgPSBudWxsOworCisgICAgICBmdW5jdGlvbiBvbkZyYW1lKHRpbWUsIHhy
RnJhbWUpIHsKKyAgICAgICAgdC5zdGVwKCgpID0+IHsKKyAgICAgICAgICBhc3NlcnRfdHJ1ZSh4
ckZyYW1lIGluc3RhbmNlb2YgWFJGcmFtZSk7CisgICAgICAgIH0pOworCisgICAgICAgIHN0YWxl
RnJhbWUgPSB4ckZyYW1lOworICAgICAgICBzdGVwX3RpbWVvdXQoYWZ0ZXJGcmFtZSwgMCk7Cisg
ICAgICB9CisKKyAgICAgIGZ1bmN0aW9uIGFmdGVyRnJhbWUoKSB7CisgICAgICAgIHQuc3RlcCgo
KSA9PiB7CisgICAgICAgICAgLy8gQXR0ZW1wdGluZyB0byBjYWxsIGEgbWV0aG9kIG9uIHRoZSBm
cmFtZSBvdXRzaWRlIHRoZSBjYWxsYmFjayB0aGF0CisgICAgICAgICAgLy8gb3JpZ2luYWxseSBw
cm92aWRlZCBpdCBzaG91bGQgY2F1c2UgaXQgdG8gdGhyb3cgYW4gZXhjZXB0aW9uLgorICAgICAg
ICAgIGFzc2VydF90aHJvd3NfZG9tKCdJbnZhbGlkU3RhdGVFcnJvcicsICgpID0+IHN0YWxlRnJh
bWUuZ2V0Vmlld2VyUG9zZShjdXJyZW50UmVmZXJlbmNlU3BhY2UpKTsKKyAgICAgICAgICBhc3Nl
cnRfdGhyb3dzX2RvbSgnSW52YWxpZFN0YXRlRXJyb3InLCAoKSA9PiBzdGFsZUZyYW1lLmdldFBv
c2UoY3VycmVudFZpZXdlclNwYWNlLCBjdXJyZW50UmVmZXJlbmNlU3BhY2UpKTsKKyAgICAgICAg
fSk7CisKKyAgICAgICAgLy8gVGVzdCBkb2VzIG5vdCBjb21wbGV0ZSB1bnRpbCB0aGUgdGhpcyBm
dW5jdGlvbiBoYXMgZXhlY3V0ZWQuCisgICAgICAgIHJlc29sdmUoKTsKKyAgICAgIH0KKworICAg
ICAgdGVzdFNlc3Npb24ucmVxdWVzdFJlZmVyZW5jZVNwYWNlKCd2aWV3ZXInKS50aGVuKCh2aWV3
ZXJTcGFjZSkgPT4geworICAgICAgICBjdXJyZW50Vmlld2VyU3BhY2UgPSB2aWV3ZXJTcGFjZTsK
KyAgICAgICAgdGVzdFNlc3Npb24ucmVxdWVzdFJlZmVyZW5jZVNwYWNlKCdsb2NhbCcpLnRoZW4o
KHJlZmVyZW5jZVNwYWNlKSA9PiB7CisgICAgICAgICAgY3VycmVudFJlZmVyZW5jZVNwYWNlID0g
cmVmZXJlbmNlU3BhY2U7CisgICAgICAgICAgdGVzdFNlc3Npb24ucmVxdWVzdEFuaW1hdGlvbkZy
YW1lKG9uRnJhbWUpOworICAgICAgICB9KTsKKyAgICAgIH0pOworICAgIH0pOworCisgICAgeHJf
c2Vzc2lvbl9wcm9taXNlX3Rlc3QoaW1tZXJzaXZlVGVzdE5hbWUsIHRlc3RGdW5jdGlvbiwKKyAg
ICAgIGZha2VEZXZpY2VJbml0UGFyYW1zLCAnaW1tZXJzaXZlLXZyJyk7CisgICAgeHJfc2Vzc2lv
bl9wcm9taXNlX3Rlc3Qobm9uSW1tZXJzaXZlVGVzdE5hbWUsIHRlc3RGdW5jdGlvbiwKKyAgICAg
IGZha2VEZXZpY2VJbml0UGFyYW1zLCAnaW5saW5lJywgeyAncmVxdWlyZWRGZWF0dXJlcyc6IFsn
bG9jYWwnXSB9KTsKKworICA8L3NjcmlwdD4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJGcmFtZV9zZXNzaW9u
X3NhbWVPYmplY3QuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd2VieHIveHJGcmFtZV9zZXNzaW9uX3NhbWVPYmplY3QuaHR0cHMuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5jYmJlZjY4NzEzYjI5OTE5NDU4Mjc4OTk0MDcwMzZhOGE5MjA1YTE0Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93ZWJ4ci94ckZyYW1lX3Nlc3Npb25fc2FtZU9iamVjdC5odHRwcy5odG1sCkBAIC0wLDAgKzEs
MjYgQEAKKzwhRE9DVFlQRSBodG1sPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5l
c3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBv
cnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy93ZWJ4cl91dGlsLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvd2VieHJfdGVzdF9jb25zdGFudHMuanMi
Pjwvc2NyaXB0PgorPGNhbnZhcyBpZD0id2ViZ2wtY2FudmFzIj48L2NhbnZhcz4KKworPHNjcmlw
dD4KK2xldCB0ZXN0TmFtZSA9ICJYUkZyYW1lLnNlc3Npb24gbWVldHMgW1NhbWVPYmplY3RdIHJl
cXVpcmVtZW50IjsKKworbGV0IHRlc3RGdW5jdGlvbiA9IGZ1bmN0aW9uKHNlc3Npb24sIGZha2VE
ZXZpY2VDb250cm9sbGVyLCB0KSB7CisgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4g
eworICAgIHNlc3Npb24ucmVxdWVzdEFuaW1hdGlvbkZyYW1lKCh0aW1lLCB4ckZyYW1lKSA9PiB7
CisgICAgICBsZXQgc2Vzc2lvbiA9IHhyRnJhbWUuc2Vzc2lvbjsKKyAgICAgIHQuc3RlcCgoKSA9
PiB7CisgICAgICAgIGFzc2VydF9lcXVhbHMoc2Vzc2lvbiwgeHJGcmFtZS5zZXNzaW9uLAorICAg
ICAgICAgICJYUkZyYW1lLnNlc3Npb24gcmV0dXJucyB0aGUgc2FtZSBvYmplY3QuIik7CisgICAg
ICB9KTsKKyAgICAgIHJlc29sdmUoKTsKKyAgICB9KTsKKyAgfSk7Cit9OworCit4cl9zZXNzaW9u
X3Byb21pc2VfdGVzdCgKKyAgdGVzdE5hbWUsIHRlc3RGdW5jdGlvbiwgVFJBQ0tFRF9JTU1FUlNJ
VkVfREVWSUNFLCAnaW1tZXJzaXZlLXZyJyk7Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJJbnB1dFNvdXJj
ZV9hZGRfcmVtb3ZlLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dlYnhyL3hySW5wdXRTb3VyY2VfYWRkX3JlbW92ZS5odHRwcy5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjMzMjY0ZGRkNjhhYjA5ZTJlZDZhNTk2NjE0MTE2YmQxMjI1ZjI2NjUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dlYnhyL3hySW5wdXRTb3VyY2VfYWRkX3JlbW92ZS5odHRwcy5odG1sCkBAIC0wLDAgKzEsNjkg
QEAKKzwhRE9DVFlQRSBodG1sPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3Mu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy93ZWJ4cl91dGlsLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvd2VieHJfdGVzdF9jb25zdGFudHMuanMiPjwv
c2NyaXB0PgorPGNhbnZhcyBpZD0id2ViZ2wtY2FudmFzIj48L2NhbnZhcz4KKworPHNjcmlwdD4K
KworbGV0IHRlc3ROYW1lID0gIlhSSW5wdXRTb3VyY2VzIGNhbiBiZSBwcm9wZXJseSBhZGRlZCBh
bmQgcmVtb3ZlZCBmcm9tIHRoZSAiCisgICsgInNlc3Npb24iOworCitsZXQgZmFrZURldmljZUlu
aXRQYXJhbXMgPSBUUkFDS0VEX0lNTUVSU0lWRV9ERVZJQ0U7CisKK2xldCB0ZXN0RnVuY3Rpb24g
PSAoc2Vzc2lvbiwgZmFrZURldmljZUNvbnRyb2xsZXIsIHQpID0+IG5ldyBQcm9taXNlKChyZXNv
bHZlKSA9PiB7CisgICAgbGV0IGlucHV0X3NvdXJjZXMgPSBzZXNzaW9uLmlucHV0U291cmNlczsK
KworICAgIHQuc3RlcCggKCkgPT4geworICAgICAgYXNzZXJ0X2VxdWFscyhpbnB1dF9zb3VyY2Vz
Lmxlbmd0aCwgMCk7CisgICAgfSk7CisKKyAgICBsZXQgaW5wdXRfc291cmNlXzEgPSBmYWtlRGV2
aWNlQ29udHJvbGxlci5zaW11bGF0ZUlucHV0U291cmNlQ29ubmVjdGlvbihSSUdIVF9DT05UUk9M
TEVSKTsKKworICAgIHNlc3Npb24ucmVxdWVzdEFuaW1hdGlvbkZyYW1lKCh0aW1lLCB4ckZyYW1l
KSA9PiB7CisgICAgICBsZXQgaW5wdXRfc291cmNlcyA9IHNlc3Npb24uaW5wdXRTb3VyY2VzOwor
CisgICAgICB0LnN0ZXAoICgpID0+IHsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhpbnB1dF9zb3Vy
Y2VzLmxlbmd0aCwgMSk7CisgICAgICAgIGFzc2VydF9lcXVhbHMoaW5wdXRfc291cmNlc1swXS50
YXJnZXRSYXlNb2RlLCAidHJhY2tlZC1wb2ludGVyIik7CisgICAgICAgIGFzc2VydF9lcXVhbHMo
aW5wdXRfc291cmNlc1swXS5oYW5kZWRuZXNzLCAicmlnaHQiKTsKKyAgICAgIH0pOworCisgICAg
ICBsZXQgaW5wdXRfc291cmNlXzIgPSBmYWtlRGV2aWNlQ29udHJvbGxlci5zaW11bGF0ZUlucHV0
U291cmNlQ29ubmVjdGlvbih7CisgICAgICAgIGhhbmRlZG5lc3M6ICJub25lIiwKKyAgICAgICAg
dGFyZ2V0UmF5TW9kZTogImdhemUiLAorICAgICAgICBwb2ludGVyT3JpZ2luOiBWQUxJRF9QT0lO
VEVSX1RSQU5TRk9STSwKKyAgICAgICAgcHJvZmlsZXM6IFtdCisgICAgICB9KTsKKworICAgICAg
c2Vzc2lvbi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKHRpbWUsIHhyRnJhbWUpID0+IHsKKyAgICAg
ICAgbGV0IGlucHV0X3NvdXJjZXMgPSBzZXNzaW9uLmlucHV0U291cmNlczsKKworICAgICAgICB0
LnN0ZXAoICgpID0+IHsKKyAgICAgICAgICBhc3NlcnRfZXF1YWxzKGlucHV0X3NvdXJjZXMubGVu
Z3RoLCAyKTsKKyAgICAgICAgICBhc3NlcnRfZXF1YWxzKGlucHV0X3NvdXJjZXNbMV0udGFyZ2V0
UmF5TW9kZSwgImdhemUiKTsKKyAgICAgICAgICBhc3NlcnRfZXF1YWxzKGlucHV0X3NvdXJjZXNb
MV0uaGFuZGVkbmVzcywgIm5vbmUiKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgaW5wdXRfc291
cmNlXzEuZGlzY29ubmVjdCgpOworCisgICAgICAgIHNlc3Npb24ucmVxdWVzdEFuaW1hdGlvbkZy
YW1lKCh0aW1lLCB4ckZyYW1lKSA9PiB7CisgICAgICAgICAgbGV0IGlucHV0X3NvdXJjZXMgPSBz
ZXNzaW9uLmlucHV0U291cmNlczsKKworICAgICAgICAgIHQuc3RlcCggKCkgPT4geworICAgICAg
ICAgICAgYXNzZXJ0X2VxdWFscyhpbnB1dF9zb3VyY2VzLmxlbmd0aCwgMSk7CisgICAgICAgICAg
ICBhc3NlcnRfZXF1YWxzKGlucHV0X3NvdXJjZXNbMF0udGFyZ2V0UmF5TW9kZSwgImdhemUiKTsK
KyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoaW5wdXRfc291cmNlc1swXS5oYW5kZWRuZXNzLCAi
bm9uZSIpOworICAgICAgICAgIH0pOworCisgICAgICAgICAgcmVzb2x2ZSgpOworICAgICAgICB9
KTsKKyAgICAgIH0pOworICAgIH0pOworICB9KTsKKworeHJfc2Vzc2lvbl9wcm9taXNlX3Rlc3Qo
CisgIHRlc3ROYW1lLCB0ZXN0RnVuY3Rpb24sIGZha2VEZXZpY2VJbml0UGFyYW1zLCAnaW1tZXJz
aXZlLXZyJyk7CisKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94cklucHV0U291cmNlX2VtdWxhdGVkUG9zaXRp
b24uaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd2VieHIveHJJbnB1dFNvdXJjZV9lbXVsYXRlZFBvc2l0aW9uLmh0dHBzLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uN2IwZmRhNDUwODc0OGM4MWEwODY1ZDEzNzg0N2ZkN2YxM2EzZmY5NwotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Vi
eHIveHJJbnB1dFNvdXJjZV9lbXVsYXRlZFBvc2l0aW9uLmh0dHBzLmh0bWwKQEAgLTAsMCArMSw2
MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVz
cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9y
dC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3dlYnhyX3V0aWwuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy93ZWJ4cl90ZXN0X2NvbnN0YW50cy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3dlYnhyX3Rlc3RfYXNzZXJ0cy5qcyI+
PC9zY3JpcHQ+Cis8Y2FudmFzIGlkPSJ3ZWJnbC1jYW52YXMiPjwvY2FudmFzPgorCis8c2NyaXB0
PgorCitsZXQgdGVzdE5hbWUgPSAiUG9zZXMgZnJvbSBYUklucHV0U291cmNlLmdyaXBTcGFjZSBo
YXZlIGVtdWxhdGVkUG9zaXRpb24gc2V0ICIKKyAgKyAicHJvcGVybHkiOworCitsZXQgZmFrZURl
dmljZUluaXRQYXJhbXMgPSBUUkFDS0VEX0lNTUVSU0lWRV9ERVZJQ0U7CisKK2xldCB0ZXN0RnVu
Y3Rpb24gPQorICAoc2Vzc2lvbiwgZmFrZURldmljZUNvbnRyb2xsZXIsIHQpID0+IG5ldyBQcm9t
aXNlKChyZXNvbHZlKSA9PiB7CisgICAgbGV0IGlucHV0X3NvdXJjZSA9IGZha2VEZXZpY2VDb250
cm9sbGVyLnNpbXVsYXRlSW5wdXRTb3VyY2VDb25uZWN0aW9uKHsKKyAgICAgIGhhbmRlZG5lc3M6
ICJyaWdodCIsCisgICAgICB0YXJnZXRSYXlNb2RlOiAidHJhY2tlZC1wb2ludGVyIiwKKyAgICAg
IHBvaW50ZXJPcmlnaW46IElERU5USVRZX1RSQU5TRk9STSwKKyAgICAgIGdyaXBPcmlnaW46IFZB
TElEX0dSSVBfVFJBTlNGT1JNLAorICAgICAgcHJvZmlsZXM6IFtdCisgICAgfSk7CisKKyAgICAv
LyBNdXN0IGhhdmUgYSByZWZlcmVuY2Ugc3BhY2UgdG8gZ2V0IGlucHV0IHBvc2VzLiBleWUtbGV2
ZWwgZG9lc24ndCBhcHBseQorICAgIC8vIGFueSB0cmFuc2Zvcm1zIHRvIHRoZSBnaXZlbiBtYXRy
aXguCisgICAgc2Vzc2lvbi5yZXF1ZXN0UmVmZXJlbmNlU3BhY2UoJ2xvY2FsJykudGhlbiggKHJl
ZmVyZW5jZVNwYWNlKSA9PiB7CisKKyAgICAgIGZ1bmN0aW9uIENoZWNrUG9zaXRpb25Ob3RFbXVs
YXRlZCh0aW1lLCB4ckZyYW1lKSB7CisgICAgICAgIGxldCBzb3VyY2UgPSBzZXNzaW9uLmlucHV0
U291cmNlc1swXTsKKyAgICAgICAgbGV0IGdyaXBfcG9zZSA9IHhyRnJhbWUuZ2V0UG9zZShzb3Vy
Y2UuZ3JpcFNwYWNlLCByZWZlcmVuY2VTcGFjZSk7CisKKyAgICAgICAgdC5zdGVwKCgpID0+IHsK
KyAgICAgICAgICBhc3NlcnRfbm90X2VxdWFscyhncmlwX3Bvc2UsIG51bGwpOworICAgICAgICAg
IGFzc2VydF9lcXVhbHMoZ3JpcF9wb3NlLmVtdWxhdGVkUG9zaXRpb24sIGZhbHNlKTsKKyAgICAg
ICAgfSk7CisKKyAgICAgICAgaW5wdXRfc291cmNlLnNldEdyaXBPcmlnaW4oVkFMSURfR1JJUF9U
UkFOU0ZPUk0sIHRydWUpOworICAgICAgICBzZXNzaW9uLnJlcXVlc3RBbmltYXRpb25GcmFtZShD
aGVja1Bvc2l0aW9uRW11bGF0ZWQpOworICAgICAgfQorCisgICAgICBmdW5jdGlvbiBDaGVja1Bv
c2l0aW9uRW11bGF0ZWQodGltZSwgeHJGcmFtZSkgeworICAgICAgICBsZXQgc291cmNlID0gc2Vz
c2lvbi5pbnB1dFNvdXJjZXNbMF07CisgICAgICAgIGxldCBncmlwX3Bvc2UgPSB4ckZyYW1lLmdl
dFBvc2Uoc291cmNlLmdyaXBTcGFjZSwgcmVmZXJlbmNlU3BhY2UpOworCisgICAgICAgIHQuc3Rl
cCgoKSA9PiB7CisgICAgICAgICAgYXNzZXJ0X25vdF9lcXVhbHMoZ3JpcF9wb3NlLCBudWxsKTsK
KyAgICAgICAgICBhc3NlcnRfZXF1YWxzKGdyaXBfcG9zZS5lbXVsYXRlZFBvc2l0aW9uLCB0cnVl
KTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgcmVzb2x2ZSgpOworICAgICAgfQorCisgICAgICAv
LyBDYW4gb25seSByZXF1ZXN0IGlucHV0IHBvc2VzIGluIGFuIHhyIGZyYW1lLgorICAgICAgc2Vz
c2lvbi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoQ2hlY2tQb3NpdGlvbk5vdEVtdWxhdGVkKTsKKyAg
ICB9KTsKKyAgfSk7CisKK3hyX3Nlc3Npb25fcHJvbWlzZV90ZXN0KAorICB0ZXN0TmFtZSwgdGVz
dEZ1bmN0aW9uLCBmYWtlRGV2aWNlSW5pdFBhcmFtcywgJ2ltbWVyc2l2ZS12cicpOworCis8L3Nj
cmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd2VieHIveHJJbnB1dFNvdXJjZV9wcm9maWxlcy5odHRwcy5odG1sIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94cklucHV0U291cmNlX3By
b2ZpbGVzLmh0dHBzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzIwNzNjNjMxZjhlY2ZjM2IxOWMzM2VkMDNl
NmI5OTk5NTUzY2ZlYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJJbnB1dFNvdXJjZV9wcm9maWxlcy5odHRwcy5o
dG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhRE9DVFlQRSBodG1sPgorPHNjcmlwdCBzcmM9Ii9yZXNv
dXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMv
dGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy93
ZWJ4cl91dGlsLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvd2VieHJfdGVz
dF9jb25zdGFudHMuanMiPjwvc2NyaXB0PgorPGNhbnZhcyBpZD0id2ViZ2wtY2FudmFzIj48L2Nh
bnZhcz4KKworPHNjcmlwdD4KK2xldCB0ZXN0TmFtZSA9ICJXZWJYUiBJbnB1dFNvdXJjZSdzIHBy
b2ZpbGVzIGxpc3QgY2FuIGJlIHNldCI7CisKK2xldCBmYWtlRGV2aWNlSW5pdFBhcmFtcyA9IFRS
QUNLRURfSU1NRVJTSVZFX0RFVklDRTsKKworbGV0IHRlc3RGdW5jdGlvbiA9IGZ1bmN0aW9uKHNl
c3Npb24sIGZha2VEZXZpY2VDb250cm9sbGVyLCB0KSB7CisKKyAgbGV0IGlucHV0X3NvdXJjZSA9
IGZha2VEZXZpY2VDb250cm9sbGVyLnNpbXVsYXRlSW5wdXRTb3VyY2VDb25uZWN0aW9uKHsKKyAg
ICBoYW5kZWRuZXNzOiAicmlnaHQiLAorICAgIHRhcmdldFJheU1vZGU6ICJ0cmFja2VkLXBvaW50
ZXIiLAorICAgIHBvaW50ZXJPcmlnaW46IFZBTElEX1BPSU5URVJfVFJBTlNGT1JNLAorICAgIHBy
b2ZpbGVzOiBbIm1vc3Qtc3BlY2lmaWMtbmFtZSIsICJsZXNzLXNwZWNpZmljLW5hbWUiXQorICB9
KTsKKworICAvLyBJbnB1dCBldmVudHMgYW5kIHN0YXRlIGNoYW5nZXMgbmVlZCBvbmUgZnJhbWUg
dG8gcHJvcGFnYXRlLCB3aGljaCBpcyB3aHkgd2UKKyAgLy8gYXJlIHJlcXVlc3RpbmcgYW4gYW5p
bWF0aW9uIGZyYW1lIGJlZm9yZSBjaGVja2luZyB0aGUgcHJvZmlsZXMgbGlzdC4KKyAgcmV0dXJu
IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7CisgICAgc2Vzc2lvbi5yZXF1ZXN0QW5pbWF0aW9u
RnJhbWUoKCkgPT4geworICAgICAgbGV0IHByb2ZpbGVzID0gc2Vzc2lvbi5pbnB1dFNvdXJjZXNb
MF0ucHJvZmlsZXM7CisgICAgICB0LnN0ZXAoKCkgPT4geworICAgICAgICBhc3NlcnRfZXF1YWxz
KHByb2ZpbGVzLmxlbmd0aCwgMik7CisgICAgICAgIGFzc2VydF9lcXVhbHMocHJvZmlsZXNbMF0s
ICJtb3N0LXNwZWNpZmljLW5hbWUiKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhwcm9maWxlc1sx
XSwgImxlc3Mtc3BlY2lmaWMtbmFtZSIpOworICAgICAgfSwgIlZlcmlmeSBwcm9maWxlcyBsaXN0
IGlzIHNldCIpOworICAgICAgcmVzb2x2ZSgpOworICAgIH0pOworICB9KTsKK307CisKK3hyX3Nl
c3Npb25fcHJvbWlzZV90ZXN0KAorICB0ZXN0TmFtZSwgdGVzdEZ1bmN0aW9uLCBmYWtlRGV2aWNl
SW5pdFBhcmFtcywgJ2ltbWVyc2l2ZS12cicpOworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hySW5wdXRTb3Vy
Y2Vfc2FtZU9iamVjdC5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93ZWJ4ci94cklucHV0U291cmNlX3NhbWVPYmplY3QuaHR0cHMuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi43ODI0MGRlMmY5MDE5MjE4MDYxZTQ1MzU5Y2ZhZDdjZDI4MDU3ZDUyCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93ZWJ4ci94cklucHV0U291cmNlX3NhbWVPYmplY3QuaHR0cHMuaHRtbApAQCAtMCwwICsxLDYz
IEBACis8IURPQ1RZUEUgaHRtbD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvd2VieHJfdXRpbC5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3dlYnhyX3Rlc3RfY29uc3RhbnRzLmpzIj48
L3NjcmlwdD4KKzxjYW52YXMgaWQ9IndlYmdsLWNhbnZhcyI+PC9jYW52YXM+CisKKzxzY3JpcHQ+
CitsZXQgdGVzdE5hbWUgPSAiWFJJbnB1dFNvdXJjZSBhdHRyaWJ1dGVzIG1lZXQgW1NhbWVPYmpl
Y3RdIHJlcXVpcmVtZW50IjsKKworbGV0IHRlc3RGdW5jdGlvbiA9IGZ1bmN0aW9uKHNlc3Npb24s
IGZha2VEZXZpY2VDb250cm9sbGVyLCB0KSB7CisgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2
ZSkgPT4geworICAgIGxldCBpbnB1dF9zb3VyY2UgPSBmYWtlRGV2aWNlQ29udHJvbGxlci5zaW11
bGF0ZUlucHV0U291cmNlQ29ubmVjdGlvbih7CisgICAgICBoYW5kZWRuZXNzOiAicmlnaHQiLAor
ICAgICAgdGFyZ2V0UmF5TW9kZTogInRyYWNrZWQtcG9pbnRlciIsCisgICAgICBwb2ludGVyT3Jp
Z2luOiBWQUxJRF9QT0lOVEVSX1RSQU5TRk9STSwKKyAgICAgIGdyaXBPcmlnaW46IFZBTElEX0dS
SVBfVFJBTlNGT1JNLAorICAgICAgcHJvZmlsZXM6IFsiZm9vIiwgImJhciJdCisgICAgfSk7CisK
KyAgICBzZXNzaW9uLnJlcXVlc3RBbmltYXRpb25GcmFtZSgodGltZSwgeHJGcmFtZSkgPT4gewor
ICAgICAgbGV0IHNvdXJjZSA9IHNlc3Npb24uaW5wdXRTb3VyY2VzWzBdOworICAgICAgbGV0IHRh
cmdldFJheVNwYWNlID0gc291cmNlLnRhcmdldFJheVNwYWNlOworICAgICAgbGV0IGdyaXBTcGFj
ZSA9IHNvdXJjZS5ncmlwU3BhY2U7CisgICAgICBsZXQgcHJvZmlsZXMgPSBzb3VyY2UucHJvZmls
ZXM7CisKKyAgICAgIHQuc3RlcCgoKSA9PiB7CisgICAgICAgIGFzc2VydF9ub3RfZXF1YWxzKHRh
cmdldFJheVNwYWNlLCBudWxsLAorICAgICAgICAgICJ0YXJnZXQgcmF5IHNwYWNlIG11c3Qgbm90
IGJlIG51bGwiKTsKKyAgICAgICAgYXNzZXJ0X25vdF9lcXVhbHMoZ3JpcFNwYWNlLCBudWxsLCAi
Z3JpcCBzcGFjZSBtdXN0IG5vdCBiZSBudWxsIik7CisKKyAgICAgICAgLy8gTWFrZSBzdXJlIFtT
YW1lT2JqZWN0XSBhdHRyaWJ1dGVzIGFjdHVhbGx5IGhhdmUgdGhlIHNhbWUgb2JqZWN0CisgICAg
ICAgIC8vIHJldHVybmVkIGVhY2ggdGltZSB0aGV5IGFyZSBhY2Nlc3NlZC4KKyAgICAgICAgYXNz
ZXJ0X2VxdWFscyh0YXJnZXRSYXlTcGFjZSwgc291cmNlLnRhcmdldFJheVNwYWNlLAorICAgICAg
ICAgICJYUklucHV0U291cmNlLnRhcmdldFJheVNwYWNlIHJldHVybnMgdGhlIHNhbWUgb2JqZWN0
LiIpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGdyaXBTcGFjZSwgc291cmNlLmdyaXBTcGFjZSwK
KyAgICAgICAgICAiWFJJbnB1dFNvdXJjZS5ncmlwU3BhY2UgcmV0dXJucyB0aGUgc2FtZSBvYmpl
Y3QuIik7CisgICAgICAgIGFzc2VydF9lcXVhbHMocHJvZmlsZXMsIHNvdXJjZS5wcm9maWxlcywK
KyAgICAgICAgICAiWFJJbnB1dFNvdXJjZS5wcm9maWxlcyByZXR1cm5zIHRoZSBzYW1lIG9iamVj
dC4iKTsKKyAgICAgIH0pOworCisgICAgICBzZXNzaW9uLnJlcXVlc3RBbmltYXRpb25GcmFtZSgo
dGltZSwgeHJGcmFtZSkgPT4geworICAgICAgICAvLyBNYWtlIHN1cmUgdGhlIGF0dHJpYnV0ZXMg
c3RpbGwgcmV0dXJuIHRoZSBzYW1lIG9iamVjdCBvbiB0aGUgbmV4dAorICAgICAgICAvLyBmcmFt
ZSB3aGVuIG5vdGhpbmcgaGFzIGhhcHBlbmVkIHRoYXQgd291bGQgY2F1c2UgdGhlIGlucHV0IHNv
dXJjZQorICAgICAgICAvLyB0byBiZSByZWNyZWF0ZWQuCisgICAgICAgIHQuc3RlcCgoKSA9PiB7
CisgICAgICAgICAgYXNzZXJ0X2VxdWFscyh0YXJnZXRSYXlTcGFjZSwgc291cmNlLnRhcmdldFJh
eVNwYWNlLAorICAgICAgICAgICAgIlhSSW5wdXRTb3VyY2UudGFyZ2V0UmF5U3BhY2UgcmV0dXJu
cyB0aGUgc2FtZSBvYmplY3QgZWFjaCBmcmFtZS4iKTsKKyAgICAgICAgICBhc3NlcnRfZXF1YWxz
KGdyaXBTcGFjZSwgc291cmNlLmdyaXBTcGFjZSwKKyAgICAgICAgICAgICJYUklucHV0U291cmNl
LmdyaXBTcGFjZSByZXR1cm5zIHRoZSBzYW1lIG9iamVjdCBlYWNoIGZyYW1lLiIpOworICAgICAg
ICAgIGFzc2VydF9lcXVhbHMocHJvZmlsZXMsIHNvdXJjZS5wcm9maWxlcywKKyAgICAgICAgICAg
ICJYUklucHV0U291cmNlLnByb2ZpbGVzIHJldHVybnMgdGhlIHNhbWUgb2JqZWN0IGVhY2ggZnJh
bWUuIik7CisgICAgICAgIH0pOworCisgICAgICAgIHJlc29sdmUoKTsKKyAgICAgIH0pOworICAg
IH0pOworICB9KTsKK307CisKK3hyX3Nlc3Npb25fcHJvbWlzZV90ZXN0KAorICB0ZXN0TmFtZSwg
dGVzdEZ1bmN0aW9uLCBUUkFDS0VEX0lNTUVSU0lWRV9ERVZJQ0UsICdpbW1lcnNpdmUtdnInKTsK
Kzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93ZWJ4ci94clBvc2VfdHJhbnNmb3JtX3NhbWVPYmplY3QuaHR0cHMuaHRtbCBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJQb3Nl
X3RyYW5zZm9ybV9zYW1lT2JqZWN0Lmh0dHBzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzllZWQ0Y2RlYzQ2
NjNiM2EwYTQwMWFmZjgwMTI2ZTRkYWQ3NjdmOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJQb3NlX3RyYW5zZm9y
bV9zYW1lT2JqZWN0Lmh0dHBzLmh0bWwKQEAgLTAsMCArMSw0MyBAQAorPCFET0NUWVBFIGh0bWw+
Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL3dlYnhyX3V0aWwuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
InJlc291cmNlcy93ZWJ4cl90ZXN0X2NvbnN0YW50cy5qcyI+PC9zY3JpcHQ+Cis8Y2FudmFzIGlk
PSJ3ZWJnbC1jYW52YXMiPjwvY2FudmFzPgorCis8c2NyaXB0PgorbGV0IHRlc3ROYW1lID0gIlhS
UG9zZS50cmFuc2Zvcm0gbWVldHMgW1NhbWVPYmplY3RdIHJlcXVpcmVtZW50IjsKKworbGV0IHRl
c3RGdW5jdGlvbiA9IGZ1bmN0aW9uKHNlc3Npb24sIGZha2VEZXZpY2VDb250cm9sbGVyLCB0KSB7
CisgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4geworICAgIGxldCBpbnB1dF9zb3Vy
Y2UgPSBmYWtlRGV2aWNlQ29udHJvbGxlci5zaW11bGF0ZUlucHV0U291cmNlQ29ubmVjdGlvbih7
CisgICAgICBoYW5kZWRuZXNzOiAicmlnaHQiLAorICAgICAgdGFyZ2V0UmF5TW9kZTogInRyYWNr
ZWQtcG9pbnRlciIsCisgICAgICBwb2ludGVyT3JpZ2luOiBWQUxJRF9QT0lOVEVSX1RSQU5TRk9S
TSwKKyAgICAgIGdyaXBPcmlnaW46IFZBTElEX0dSSVBfVFJBTlNGT1JNLAorICAgICAgcHJvZmls
ZXM6IFtdCisgICAgfSk7CisKKyAgICBzZXNzaW9uLnJlcXVlc3RSZWZlcmVuY2VTcGFjZSgnbG9j
YWwnKS50aGVuKChyZWZlcmVuY2VTcGFjZSkgPT4geworICAgICAgc2Vzc2lvbi5yZXF1ZXN0QW5p
bWF0aW9uRnJhbWUoKHRpbWUsIHhyRnJhbWUpID0+IHsKKyAgICAgICAgbGV0IHNvdXJjZSA9IHNl
c3Npb24uaW5wdXRTb3VyY2VzWzBdOworICAgICAgICBsZXQgaW5wdXRfcG9zZSA9IHhyRnJhbWUu
Z2V0UG9zZShzb3VyY2UudGFyZ2V0UmF5U3BhY2UsIHJlZmVyZW5jZVNwYWNlKTsKKworICAgICAg
ICAvLyBNYWtlIHN1cmUgdGhhdCB0aGUgdHJhbnNmb3JtIGF0dHJpYnV0ZSBpcyB0aGUgc2FtZSBv
YmplY3QgZWFjaCB0aW1lCisgICAgICAgIC8vIHdlIGFjY2VzcyBpdC4gVGhpcyB2ZXJpZmllcyB0
aGF0IHRoZSBYUlBvc2UgZG9lcyAqbm90KiBkbyBzb21ldGhpbmcKKyAgICAgICAgLy8gc3BlYy1u
b25jb21wbGlhbnQgc3VjaCBhcyBjcmVhdGluZyBhbmQgcmV0dXJuaW5nIGEgbmV3CisgICAgICAg
IC8vIFhSUmlnaWRUcmFuc2Zvcm0gb2JqZWN0IGVhY2ggdGltZSB0aGUgYXR0cmlidXRlIGlzIGFj
Y2Vzc2VkLgorICAgICAgICBsZXQgdHJhbnNmb3JtID0gaW5wdXRfcG9zZS50cmFuc2Zvcm07Cisg
ICAgICAgIHQuc3RlcCgoKSA9PiB7CisgICAgICAgICAgYXNzZXJ0X2VxdWFscyh0cmFuc2Zvcm0s
IGlucHV0X3Bvc2UudHJhbnNmb3JtLAorICAgICAgICAgICAgIlhSUG9zZS50cmFuc2Zvcm0gcmV0
dXJucyB0aGUgc2FtZSBvYmplY3QuIik7CisgICAgICAgIH0pOworICAgICAgICByZXNvbHZlKCk7
CisgICAgICB9KTsKKyAgICB9KTsKKyAgfSk7Cit9OworCit4cl9zZXNzaW9uX3Byb21pc2VfdGVz
dCgKKyAgdGVzdE5hbWUsIHRlc3RGdW5jdGlvbiwgVFJBQ0tFRF9JTU1FUlNJVkVfREVWSUNFLCAn
aW1tZXJzaXZlLXZyJyk7Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJSZWZlcmVuY2VTcGFjZV9vcmlnaW5P
ZmZzZXQuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd2VieHIveHJSZWZlcmVuY2VTcGFjZV9vcmlnaW5PZmZzZXQuaHR0cHMuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi45ODhkOTk3MjhkNGJlNDE0MjRhN2MwOWQ2MjJhNWE5YjliNjA4YTI3Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
ZWJ4ci94clJlZmVyZW5jZVNwYWNlX29yaWdpbk9mZnNldC5odHRwcy5odG1sCkBAIC0wLDAgKzEs
MTM2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJu
ZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVw
b3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvd2VieHJfdXRpbC5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3dlYnhyX3Rlc3RfY29uc3RhbnRzLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvd2VieHJfdGVzdF9hc3NlcnRzLmpz
Ij48L3NjcmlwdD4KKzxjYW52YXMgaWQ9IndlYmdsLWNhbnZhcyI+PC9jYW52YXM+CisKKzxzY3Jp
cHQ+CitsZXQgdGVzdE5hbWUgPSAiVXBkYXRpbmcgWFJSZWZlcmVuY2VTcGFjZSBvcmlnaW4gb2Zm
c2V0IHVwZGF0ZXMgdmlldyBhbmQgaW5wdXQgbWF0cmljZXMuIjsKKworY29uc3QgVklFV19PRkZT
RVRfV0lUSF9ST1RBVElPTiA9IHsKKyAgcG9zaXRpb246IFs0LCAzLCAyXSwKKyAgb3JpZW50YXRp
b246IFswLCAtMC43MDcxLCAwLCAwLjcwNzEgXQorfTsKKworY29uc3QgVklFV1NfV0lUSF9PRkZT
RVQgPSBbeworICBleWU6ImxlZnQiLAorICBwcm9qZWN0aW9uTWF0cml4OiBWQUxJRF9QUk9KRUNU
SU9OX01BVFJJWCwKKyAgdmlld09mZnNldDogVklFV19PRkZTRVRfV0lUSF9ST1RBVElPTiwKKyAg
cmVzb2x1dGlvbjogVkFMSURfUkVTT0xVVElPTgorfSwgeworICBleWU6InJpZ2h0IiwKKyAgcHJv
amVjdGlvbk1hdHJpeDogVkFMSURfUFJPSkVDVElPTl9NQVRSSVgsCisgIHZpZXdPZmZzZXQ6IFZJ
RVdfT0ZGU0VUX1dJVEhfUk9UQVRJT04sCisgIHJlc29sdXRpb246IFZBTElEX1JFU09MVVRJT04K
K31dOworCitsZXQgZmFrZURldmljZUluaXRQYXJhbXMgPSB7CisgIHN1cHBvcnRzSW1tZXJzaXZl
OiB0cnVlLAorICBzdXBwb3J0ZWRNb2RlczogWyJpbmxpbmUiLCAiaW1tZXJzaXZlLXZyIl0sCisg
IHZpZXdlck9yaWdpbjogVkFMSURfUE9TRV9UUkFOU0ZPUk0sCisgIHZpZXdzOiBWSUVXU19XSVRI
X09GRlNFVCwKKyAgc3VwcG9ydGVkRmVhdHVyZXM6IEFMTF9GRUFUVVJFUworfTsKKworbGV0IHRl
c3RGdW5jdGlvbiA9CisgIChzZXNzaW9uLCBmYWtlRGV2aWNlQ29udHJvbGxlciwgdCkgPT4gbmV3
IFByb21pc2UoKHJlc29sdmUpID0+IHsKKyAgICBjb25zdCBHUklQX1RSQU5TRk9STV9XSVRIX1JP
VEFUSU9OID0geworICAgICAgcG9zaXRpb246IFsxLCAyLCAzXSwKKyAgICAgIG9yaWVudGF0aW9u
OiBbMCwgMC43MDcxLCAwLCAwLjcwNzFdCisgICAgfTsKKworICAgIGNvbnN0IFBPSU5URVJfVFJB
TlNGT1JNX1dJVEhfUk9UQVRJT04gPSB7CisgICAgICBwb3NpdGlvbjogWzIsIDAsIDFdLAorICAg
ICAgb3JpZW50YXRpb246IFswLCAwLCAwLjcwNzEsIDAuNzA3MV0KKyAgICB9OworCisgICAgbGV0
IGlucHV0X3NvdXJjZSA9IGZha2VEZXZpY2VDb250cm9sbGVyLnNpbXVsYXRlSW5wdXRTb3VyY2VD
b25uZWN0aW9uKHsKKyAgICAgIGhhbmRlZG5lc3M6ICJyaWdodCIsCisgICAgICB0YXJnZXRSYXlN
b2RlOiAidHJhY2tlZC1wb2ludGVyIiwKKyAgICAgIHBvaW50ZXJPcmlnaW46IFBPSU5URVJfVFJB
TlNGT1JNX1dJVEhfUk9UQVRJT04sCisgICAgICBncmlwT3JpZ2luOiBHUklQX1RSQU5TRk9STV9X
SVRIX1JPVEFUSU9OLAorICAgICAgcHJvZmlsZXM6IFtdCisgICAgfSk7CisKKyAgICBjb25zdCBS
QURJQU5TXzkwRCA9IE1hdGguUEkgLyAyOworCisgICAgY29uc3QgRVhQRUNURURfVklFV19NQVRS
SVhfMSA9IFsxLCAwLCAwLCAwLCAwLCAwLCAtMSwgMCwgMCwgMSwgMCwgMCwgLTMsIC00LCA1LCAx
XTsKKyAgICBjb25zdCBFWFBFQ1RFRF9HUklQX01BVFJJWF8xID0gWzAsIDAsIC0xLCAwLCAwLCAx
LCAwLCAwLCAxLCAwLCAwLCAwLCAxLCAyLCAzLCAxXTsKKyAgICBjb25zdCBFWFBFQ1RFRF9SQVlf
TUFUUklYXzEgPSBbMCwgMSwgMCwgMCwgMCwgMCwgMSwgMCwgMSwgMCwgMCwgMCwgMiwgMiwgMSwg
MV07CisKKyAgICBjb25zdCBFWFBFQ1RFRF9WSUVXX01BVFJJWF8yID0gWzEsIDAsIDAsIDAsIDAs
IDEsIDAsIDAsIDAsIDAsIDEsIDAsIDcsIDEsIDgsIDFdOworICAgIGNvbnN0IEVYUEVDVEVEX0dS
SVBfTUFUUklYXzIgPSBbMCwgLTEsIDAsIDAsIDAsIDAsIC0xLCAwLCAxLCAwLCAwLCAwLCAtOSwg
LTIsIC01LCAxXTsKKyAgICBjb25zdCBFWFBFQ1RFRF9SQVlfTUFUUklYXzIgPSBbMCwgMCwgLTEs
IDAsIDAsIDEsIDAsIDAsIDEsIDAsIDAsIDAsIC04LCAtNCwgLTUsIDFdOworCisgICAgY29uc3Qg
RVhQRUNURURfVklFV19NQVRSSVhfMyA9IFswLCAwLCAtMSwgMCwgMCwgMSwgMCwgMCwgMSwgMCwg
MCwgMCwgMTIsIDMsIDgsIDFdOworICAgIGNvbnN0IEVYUEVDVEVEX0dSSVBfTUFUUklYXzMgPSBb
MCwgLTEsIDAsIDAsIDEsIDAsIDAsIDAsIDAsIDAsIDEsIDAsIDUsIC00LCAtMTQsIDFdOworICAg
IGNvbnN0IEVYUEVDVEVEX1JBWV9NQVRSSVhfMyA9IFsxLCAwLCAwLCAwLCAwLCAxLCAwLCAwLCAw
LCAwLCAxLCAwLCA1LCAtNiwgLTEzLCAxXTsKKworICAgIC8vIE11c3QgaGF2ZSBhIHJlZmVyZW5j
ZSBzcGFjZSB0byBnZXQgaW5wdXQgcG9zZXMuIGV5ZS1sZXZlbCBkb2Vzbid0IGFwcGx5CisgICAg
Ly8gYW55IHRyYW5zZm9ybXMgdG8gdGhlIGdpdmVuIG1hdHJpeC4KKyAgICBzZXNzaW9uLnJlcXVl
c3RSZWZlcmVuY2VTcGFjZSgnbG9jYWwnKS50aGVuKCAocmVmZXJlbmNlU3BhY2UpID0+IHsKKyAg
ICAgIGZ1bmN0aW9uIE9uRnJhbWUodGltZSwgZnJhbWUpIHsKKyAgICAgICAgbGV0IHNvdXJjZSA9
IHNlc3Npb24uaW5wdXRTb3VyY2VzWzBdOworCisgICAgICAgIGZ1bmN0aW9uIENoZWNrU3RhdGUo
cmVmZXJlbmNlU3BhY2UsIGV4cGVjdGVkX3ZpZXdfbWF0cml4LCBleHBlY3RlZF9ncmlwX21hdHJp
eCwgZXhwZWN0ZWRfcmF5X21hdHJpeCkgeworICAgICAgICAgIHQuc3RlcCgoKSA9PiB7CisgICAg
ICAgICAgICBsZXQgcG9zZSA9IGZyYW1lLmdldFZpZXdlclBvc2UocmVmZXJlbmNlU3BhY2UpOwor
ICAgICAgICAgICAgbGV0IGdyaXBfcG9zZSA9IGZyYW1lLmdldFBvc2Uoc291cmNlLmdyaXBTcGFj
ZSwgcmVmZXJlbmNlU3BhY2UpOworICAgICAgICAgICAgbGV0IGlucHV0X3Bvc2UgPSBmcmFtZS5n
ZXRQb3NlKHNvdXJjZS50YXJnZXRSYXlTcGFjZSwgcmVmZXJlbmNlU3BhY2UpOworCisgICAgICAg
ICAgICBsZXQgdmlld19tYXRyaXggPSBwb3NlLnZpZXdzWzBdLnRyYW5zZm9ybS5pbnZlcnNlLm1h
dHJpeDsKKyAgICAgICAgICAgIGxldCBncmlwX21hdHJpeCA9IGdyaXBfcG9zZS50cmFuc2Zvcm0u
bWF0cml4OworICAgICAgICAgICAgbGV0IHJheV9tYXRyaXggPSBpbnB1dF9wb3NlLnRyYW5zZm9y
bS5tYXRyaXg7CisKKyAgICAgICAgICAgIGFzc2VydF9tYXRyaXhfYXBwcm94X2VxdWFscyh2aWV3
X21hdHJpeCwgZXhwZWN0ZWRfdmlld19tYXRyaXgpOworICAgICAgICAgICAgYXNzZXJ0X21hdHJp
eF9hcHByb3hfZXF1YWxzKGdyaXBfbWF0cml4LCBleHBlY3RlZF9ncmlwX21hdHJpeCk7CisgICAg
ICAgICAgICBhc3NlcnRfbWF0cml4X2FwcHJveF9lcXVhbHMocmF5X21hdHJpeCwgZXhwZWN0ZWRf
cmF5X21hdHJpeCk7CisgICAgICAgICAgfSk7CisgICAgICAgIH0KKworICAgICAgICBDaGVja1N0
YXRlKHJlZmVyZW5jZVNwYWNlLCBFWFBFQ1RFRF9WSUVXX01BVFJJWF8xLCBFWFBFQ1RFRF9HUklQ
X01BVFJJWF8xLCBFWFBFQ1RFRF9SQVlfTUFUUklYXzEpOworCisgICAgICAgIGNvbnN0IG5ld19w
b3NpdGlvbjEgPSB7CisgICAgICAgICAgeDogMTAsCisgICAgICAgICAgeTogLTMsCisgICAgICAg
ICAgejogNSwKKyAgICAgICAgfTsKKyAgICAgICAgY29uc3QgbmV3X29yaWVudGF0aW9uMSA9IHsK
KyAgICAgICAgICB4OiBNYXRoLnNpbihSQURJQU5TXzkwRCAvIDIpLAorICAgICAgICAgIHk6IDAs
CisgICAgICAgICAgejogMCwKKyAgICAgICAgICB3OiBNYXRoLmNvcyhSQURJQU5TXzkwRCAvIDIp
LAorICAgICAgICB9OworCisgICAgICAgIHJlZmVyZW5jZVNwYWNlID0gcmVmZXJlbmNlU3BhY2Uu
Z2V0T2Zmc2V0UmVmZXJlbmNlU3BhY2UobmV3IFhSUmlnaWRUcmFuc2Zvcm0obmV3X3Bvc2l0aW9u
MSwgbmV3X29yaWVudGF0aW9uMSkpOworICAgICAgICBDaGVja1N0YXRlKHJlZmVyZW5jZVNwYWNl
LCBFWFBFQ1RFRF9WSUVXX01BVFJJWF8yLCBFWFBFQ1RFRF9HUklQX01BVFJJWF8yLCBFWFBFQ1RF
RF9SQVlfTUFUUklYXzIpOworCisgICAgICAgIGNvbnN0IG5ld19wb3NpdGlvbjIgPSB7CisgICAg
ICAgICAgeDogNSwKKyAgICAgICAgICB5OiAyLAorICAgICAgICAgIHo6IDAsCisgICAgICAgIH07
CisgICAgICAgIGNvbnN0IG5ld19vcmllbnRhdGlvbjIgPSB7CisgICAgICAgICAgeDogMCwKKyAg
ICAgICAgICB5OiBNYXRoLnNpbihSQURJQU5TXzkwRCAvIDIpLAorICAgICAgICAgIHo6IDAsCisg
ICAgICAgICAgdzogTWF0aC5jb3MoUkFESUFOU185MEQgLyAyKSwKKyAgICAgICAgfTsKKworICAg
ICAgICByZWZlcmVuY2VTcGFjZSA9IHJlZmVyZW5jZVNwYWNlLmdldE9mZnNldFJlZmVyZW5jZVNw
YWNlKG5ldyBYUlJpZ2lkVHJhbnNmb3JtKG5ld19wb3NpdGlvbjIsIG5ld19vcmllbnRhdGlvbjIp
KTsKKyAgICAgICAgQ2hlY2tTdGF0ZShyZWZlcmVuY2VTcGFjZSwgRVhQRUNURURfVklFV19NQVRS
SVhfMywgRVhQRUNURURfR1JJUF9NQVRSSVhfMywgRVhQRUNURURfUkFZX01BVFJJWF8zKTsKKwor
ICAgICAgICByZXNvbHZlKCk7CisgICAgICB9CisKKyAgICAgIC8vIENhbiBvbmx5IHJlcXVlc3Qg
aW5wdXQgcG9zZXMgaW4gYW4geHIgZnJhbWUuCisgICAgICBzZXNzaW9uLnJlcXVlc3RBbmltYXRp
b25GcmFtZShPbkZyYW1lKTsKKyAgICB9KTsKKyAgfSk7CisKK3hyX3Nlc3Npb25fcHJvbWlzZV90
ZXN0KAorICB0ZXN0TmFtZSwgdGVzdEZ1bmN0aW9uLCBmYWtlRGV2aWNlSW5pdFBhcmFtcywgJ2lt
bWVyc2l2ZS12cicpOworCis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJSZWZlcmVuY2VTcGFjZV9vcmlnaW5P
ZmZzZXRCb3VuZGVkLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dlYnhyL3hyUmVmZXJlbmNlU3BhY2Vfb3JpZ2luT2Zmc2V0Qm91bmRlZC5o
dHRwcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdlZjg4MGMzMmMwOTIzMjQzYjUxOTMxMjRlNjgxMmU5NjM5
MWRjYzEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dlYnhyL3hyUmVmZXJlbmNlU3BhY2Vfb3JpZ2luT2Zmc2V0Qm91bmRlZC5o
dHRwcy5odG1sCkBAIC0wLDAgKzEsMjQ2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxzY3JpcHQgc3Jj
PSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvd2VieHJfdXRpbC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3dl
YnhyX3Rlc3RfY29uc3RhbnRzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
d2VieHJfdGVzdF9hc3NlcnRzLmpzIj48L3NjcmlwdD4KKzxjYW52YXMgaWQ9IndlYmdsLWNhbnZh
cyI+PC9jYW52YXM+CisKKzxzY3JpcHQ+CisKK2NvbnN0IHRlc3ROYW1lID0gIlVwZGF0aW5nIFhS
Qm91bmRlZFJlZmVyZW5jZVNwYWNlIG9yaWdpbiBvZmZzZXQgdXBkYXRlcyB2aWV3LCBpbnB1dCBt
YXRyaWNlcywgYW5kIGJvdW5kcyBnZW9tZXRyeS4iOworCitjb25zdCBJTklUSUFMX1ZJRVdfT0ZG
U0VUID0geworICBwb3NpdGlvbjogWzEsIDIsIDNdLAorICBvcmllbnRhdGlvbjogWzAsMCwwLDFd
Cit9OworCitjb25zdCBWSUVXU19XSVRIX09GRlNFVCA9IFt7CisgICAgZXllOiJsZWZ0IiwKKyAg
ICBwcm9qZWN0aW9uTWF0cml4OiBWQUxJRF9QUk9KRUNUSU9OX01BVFJJWCwKKyAgICB2aWV3T2Zm
c2V0OiBJTklUSUFMX1ZJRVdfT0ZGU0VULAorICAgIHJlc29sdXRpb246IFZBTElEX1JFU09MVVRJ
T04KKyAgfSwgeworICAgIGV5ZToicmlnaHQiLAorICAgIHByb2plY3Rpb25NYXRyaXg6IFZBTElE
X1BST0pFQ1RJT05fTUFUUklYLAorICAgIHZpZXdPZmZzZXQ6IElOSVRJQUxfVklFV19PRkZTRVQs
CisgICAgcmVzb2x1dGlvbjogVkFMSURfUkVTT0xVVElPTgorfV07CisKK2NvbnN0IEZMT09SX1RS
QU5TRk9STSA9IHsKKyAgcG9zaXRpb246IFswLjEsIDAuMiwgMC4zXSwKKyAgb3JpZW50YXRpb246
IFswLCAwLCAwLCAxXQorfTsKKworY29uc3QgZmFrZURldmljZUluaXRQYXJhbXMgPSB7CisgIHN1
cHBvcnRzSW1tZXJzaXZlOiB0cnVlLAorICBzdXBwb3J0ZWRNb2RlczogWyJpbmxpbmUiLCAiaW1t
ZXJzaXZlLXZyIl0sCisgIHZpZXdzOiBWSUVXU19XSVRIX09GRlNFVCwKKyAgdmlld2VyT3JpZ2lu
OiBJREVOVElUWV9UUkFOU0ZPUk0sCisgIGZsb29yT3JpZ2luOiBGTE9PUl9UUkFOU0ZPUk0sCisg
IHN1cHBvcnRlZEZlYXR1cmVzOiBBTExfRkVBVFVSRVMsCisgIGJvdW5kc0Nvb3JkaW5hdGVzOiBb
CisgICAgeyB4OiAgMSwgejogLTEuNSB9LAorICAgIHsgeDogIDEsIHo6ICAxLjUgfSwKKyAgICB7
IHg6IC0xLCB6OiAgMS41IH0sCisgICAgeyB4OiAtMSwgejogLTEuNSB9CisgIF0KK307CisKK2Z1
bmN0aW9uIHRlc3RGdW5jdGlvbihzZXNzaW9uLCBmYWtlRGV2aWNlQ29udHJvbGxlciwgdCkgewor
ICBjb25zdCBJTklUSUFMX0dSSVBfVFJBTlNGT1JNID0geworICAgIHBvc2l0aW9uOiBbMSwgMiwg
M10sCisgICAgb3JpZW50YXRpb246IFswLCAwLCAwLCAxXQorICB9OworCisgIGNvbnN0IExPQ0FM
X1BPSU5URVJfVFJBTlNGT1JNID0geworICAgIHBvc2l0aW9uOiBbMC4wMSwgMC4wMiwgMC4wM10s
CisgICAgb3JpZW50YXRpb246IFswLCAwLCAwLCAxXQorICB9CisKKyAgbGV0IGlucHV0X3NvdXJj
ZSA9IGZha2VEZXZpY2VDb250cm9sbGVyLnNpbXVsYXRlSW5wdXRTb3VyY2VDb25uZWN0aW9uKHsK
KyAgICBoYW5kZWRuZXNzOiAicmlnaHQiLAorICAgIHRhcmdldFJheU1vZGU6ICJ0cmFja2VkLXBv
aW50ZXIiLAorICAgIHBvaW50ZXJPcmlnaW46IExPQ0FMX1BPSU5URVJfVFJBTlNGT1JNLAorICAg
IGdyaXBPcmlnaW46IElOSVRJQUxfR1JJUF9UUkFOU0ZPUk0sCisgICAgcHJvZmlsZXM6IFtdCisg
IH0pOworCisgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CisgICAg
c2Vzc2lvbi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKHRpbWUsIGZyYW1lKSA9PiB7CisgICAgICBs
ZXQgaW5wdXRfc291cmNlID0gc2Vzc2lvbi5pbnB1dFNvdXJjZXNbMF07CisKKyAgICAgIHNlc3Np
b24ucmVxdWVzdFJlZmVyZW5jZVNwYWNlKCdib3VuZGVkLWZsb29yJykudGhlbigocmVmZXJlbmNl
U3BhY2UpID0+IHsKKworICAgICAgICBmdW5jdGlvbiBDaGVja1N0YXRlKAorICAgICAgICAgIHJl
ZmVyZW5jZV9zcGFjZSwKKyAgICAgICAgICBleHBlY3RlZF92aWV3X21hdHJpeCwKKyAgICAgICAg
ICBleHBlY3RlZF9ncmlwX21hdHJpeCwKKyAgICAgICAgICBleHBlY3RlZF9yYXlfbWF0cml4LAor
ICAgICAgICAgIGV4cGVjdGVkX2JvdW5kc19nZW9tZXRyeQorICAgICAgICApIHsKKyAgICAgICAg
ICB0LnN0ZXAoKCkgPT4geworICAgICAgICAgICAgbGV0IHBvc2UgPSBmcmFtZS5nZXRWaWV3ZXJQ
b3NlKHJlZmVyZW5jZV9zcGFjZSk7CisgICAgICAgICAgICBsZXQgZ3JpcF9wb3NlID0gZnJhbWUu
Z2V0UG9zZShpbnB1dF9zb3VyY2UuZ3JpcFNwYWNlLCByZWZlcmVuY2Vfc3BhY2UpOworICAgICAg
ICAgICAgbGV0IGlucHV0X3Bvc2UgPSBmcmFtZS5nZXRQb3NlKGlucHV0X3NvdXJjZS50YXJnZXRS
YXlTcGFjZSwgcmVmZXJlbmNlX3NwYWNlKTsKKworICAgICAgICAgICAgbGV0IHZpZXdfbWF0cml4
ID0gcG9zZS52aWV3c1swXS50cmFuc2Zvcm0uaW52ZXJzZS5tYXRyaXg7CisgICAgICAgICAgICBs
ZXQgZ3JpcF9tYXRyaXggPSBncmlwX3Bvc2UudHJhbnNmb3JtLm1hdHJpeDsKKyAgICAgICAgICAg
IGxldCByYXlfbWF0cml4ID0gaW5wdXRfcG9zZS50cmFuc2Zvcm0ubWF0cml4OworCisgICAgICAg
ICAgICBhc3NlcnRfbWF0cml4X2FwcHJveF9lcXVhbHModmlld19tYXRyaXgsIGV4cGVjdGVkX3Zp
ZXdfbWF0cml4KTsKKyAgICAgICAgICAgIGFzc2VydF9tYXRyaXhfYXBwcm94X2VxdWFscyhncmlw
X21hdHJpeCwgZXhwZWN0ZWRfZ3JpcF9tYXRyaXgpOworICAgICAgICAgICAgYXNzZXJ0X21hdHJp
eF9hcHByb3hfZXF1YWxzKHJheV9tYXRyaXgsIGV4cGVjdGVkX3JheV9tYXRyaXgpOworCisgICAg
ICAgICAgICBhc3NlcnRfZXF1YWxzKHJlZmVyZW5jZV9zcGFjZS5ib3VuZHNHZW9tZXRyeS5sZW5n
dGgsIGV4cGVjdGVkX2JvdW5kc19nZW9tZXRyeS5sZW5ndGgpOworICAgICAgICAgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCByZWZlcmVuY2Vfc3BhY2UuYm91bmRzR2VvbWV0cnkubGVuZ3RoOyArK2kp
IHsKKyAgICAgICAgICAgICAgYXNzZXJ0X3BvaW50X2FwcHJveF9lcXVhbHMocmVmZXJlbmNlX3Nw
YWNlLmJvdW5kc0dlb21ldHJ5W2ldLCBleHBlY3RlZF9ib3VuZHNfZ2VvbWV0cnlbaV0pOworICAg
ICAgICAgICAgfQorICAgICAgICAgIH0pOworICAgICAgICB9CisKKyAgICAgICAgY29uc3QgRVhQ
RUNURURfVklFV19NQVRSSVhfMSA9IFsKKyAgICAgICAgICAgMSwgICAgMCwgICAgMCwgICAwLAor
ICAgICAgICAgICAwLCAgICAxLCAgICAwLCAgIDAsCisgICAgICAgICAgIDAsICAgIDAsICAgIDEs
ICAgMCwKKyAgICAgICAgICAtMS4xLCAtMi4yLCAtMy4zLCAxLAorICAgICAgICBdOworICAgICAg
ICBjb25zdCBFWFBFQ1RFRF9HUklQX01BVFJJWF8xID0gWworICAgICAgICAgIDEsICAgMCwgICAw
LCAgIDAsCisgICAgICAgICAgMCwgICAxLCAgIDAsICAgMCwKKyAgICAgICAgICAwLCAgIDAsICAg
MSwgICAwLAorICAgICAgICAgIDEuMSwgMi4yLCAzLjMsIDEsCisgICAgICAgIF07CisgICAgICAg
IGNvbnN0IEVYUEVDVEVEX1JBWV9NQVRSSVhfMSA9ICBbCisgICAgICAgICAgMSwgICAgMCwgICAg
MCwgICAgMCwKKyAgICAgICAgICAwLCAgICAxLCAgICAwLCAgICAwLAorICAgICAgICAgIDAsICAg
IDAsICAgIDEsICAgIDAsCisgICAgICAgICAgMS4xMSwgMi4yMiwgMy4zMywgMSwKKyAgICAgICAg
XTsKKworICAgICAgICBjb25zdCBFWFBFQ1RFRF9CT1VORFNfR0VPTUVUUllfMSA9IFsKKyAgICAg
ICAgICB7eDogIDEsIHk6IDAsIHo6IC0xLjUsIHc6IDF9LAorICAgICAgICAgIHt4OiAgMSwgeTog
MCwgejogIDEuNSwgdzogMX0sCisgICAgICAgICAge3g6IC0xLCB5OiAwLCB6OiAgMS41LCB3OiAx
fSwKKyAgICAgICAgICB7eDogLTEsIHk6IDAsIHo6IC0xLjUsIHc6IDF9LAorICAgICAgICBdOwor
CisgICAgICAgIC8vIENoZWNrIHN0YXRlIGFmdGVyIGluaXRpYWxpemF0aW9uCisgICAgICAgIENo
ZWNrU3RhdGUoCisgICAgICAgICAgcmVmZXJlbmNlU3BhY2UsCisgICAgICAgICAgRVhQRUNURURf
VklFV19NQVRSSVhfMSwKKyAgICAgICAgICBFWFBFQ1RFRF9HUklQX01BVFJJWF8xLAorICAgICAg
ICAgIEVYUEVDVEVEX1JBWV9NQVRSSVhfMSwKKyAgICAgICAgICBFWFBFQ1RFRF9CT1VORFNfR0VP
TUVUUllfMQorICAgICAgICApOworCisgICAgICAgIGNvbnN0IFJBRElBTlNfOTBEID0gTWF0aC5Q
SSAvIDI7CisKKyAgICAgICAgLy8gUGVyZm9ybSBhcmJpdHJhcnkgdHJhbnNmb3JtYXRpb24gdG8g
cmVmZXJlbmNlIHNwYWNlIG9yaWdpbk9mZnNldAorICAgICAgICBjb25zdCBuZXdfcG9zaXRpb24x
ID0geworICAgICAgICAgIHg6IDEwLCAvLyBUcmFuc2xhdGUgMTAgdW5pdHMgYWxvbmcgdGhlIHgt
YXhpcworICAgICAgICAgIHk6IC0zLCAvLyBUcmFuc2xhdGUgLTMgdW5pdHMgYWxvbmcgdGhlIHkt
YXhpcworICAgICAgICAgIHo6ICA1LCAvLyBUcmFuc2xhdGUgNSB1bml0cyBhbG9uZyB0aGUgei1h
eGlzCisgICAgICAgIH07CisgICAgICAgIGNvbnN0IG5ld19vcmllbnRhdGlvbjEgPSB7CisgICAg
ICAgICAgeDogTWF0aC5zaW4oUkFESUFOU185MEQgLyAyKSwgLy8gUm90YXRlIDkwIGRlZ3JlZXMg
YXJvdW5kIHRoZSB4LWF4aXMKKyAgICAgICAgICB5OiAwLAorICAgICAgICAgIHo6IDAsCisgICAg
ICAgICAgdzogTWF0aC5jb3MoUkFESUFOU185MEQgLyAyKSwKKyAgICAgICAgfTsKKyAgICAgICAg
cmVmZXJlbmNlU3BhY2UgPSByZWZlcmVuY2VTcGFjZS5nZXRPZmZzZXRSZWZlcmVuY2VTcGFjZShu
ZXcgWFJSaWdpZFRyYW5zZm9ybShuZXdfcG9zaXRpb24xLCBuZXdfb3JpZW50YXRpb24xKSk7CisK
KyAgICAgICAgY29uc3QgRVhQRUNURURfVklFV19NQVRSSVhfMiA9IFsKKyAgICAgICAgICAxLCAg
ICAwLCAgIDAsICAgMCwKKyAgICAgICAgICAwLCAgICAwLCAgIDEsICAgMCwKKyAgICAgICAgICAw
LCAgIC0xLCAgIDAsICAgMCwKKyAgICAgICAgICA4LjksIC01LjIsIDEuNywgMSwKKyAgICAgICAg
XTsKKyAgICAgICAgY29uc3QgRVhQRUNURURfR1JJUF9NQVRSSVhfMiA9IFsKKyAgICAgICAgICAg
MSwgICAgMCwgICAgMCwgICAwLAorICAgICAgICAgICAwLCAgICAwLCAgIC0xLCAgIDAsCisgICAg
ICAgICAgIDAsICAgIDEsICAgIDAsICAgMCwKKyAgICAgICAgICAtOC45LCAtMS43LCAtNS4yLCAx
LAorICAgICAgICBdOworICAgICAgICBjb25zdCBFWFBFQ1RFRF9SQVlfTUFUUklYXzIgPSBbCisg
ICAgICAgICAgIDEsICAgICAwLCAgICAgMCwgICAgMCwKKyAgICAgICAgICAgMCwgICAgIDAsICAg
IC0xLCAgICAwLAorICAgICAgICAgICAwLCAgICAgMSwgICAgIDAsICAgIDAsCisgICAgICAgICAg
LTguODksIC0xLjY3LCAtNS4yMiwgMSwKKyAgICAgICAgXTsKKworICAgICAgICBjb25zdCBFWFBF
Q1RFRF9CT1VORFNfR0VPTUVUUllfMiA9IFsKKyAgICAgICAgICB7eDogIC05LCB5OiAtNi41LCB6
OiAtMywgdzogMX0sCisgICAgICAgICAge3g6ICAtOSwgeTogLTMuNSwgejogLTMsIHc6IDF9LAor
ICAgICAgICAgIHt4OiAtMTEsIHk6IC0zLjUsIHo6IC0zLCB3OiAxfSwKKyAgICAgICAgICB7eDog
LTExLCB5OiAtNi41LCB6OiAtMywgdzogMX0sCisgICAgICAgIF07CisKKyAgICAgICAgLy8gQ2hl
Y2sgc3RhdGUgYWZ0ZXIgdHJhbnNmb3JtYXRpb24KKyAgICAgICAgQ2hlY2tTdGF0ZSgKKyAgICAg
ICAgICByZWZlcmVuY2VTcGFjZSwKKyAgICAgICAgICBFWFBFQ1RFRF9WSUVXX01BVFJJWF8yLAor
ICAgICAgICAgIEVYUEVDVEVEX0dSSVBfTUFUUklYXzIsCisgICAgICAgICAgRVhQRUNURURfUkFZ
X01BVFJJWF8yLAorICAgICAgICAgIEVYUEVDVEVEX0JPVU5EU19HRU9NRVRSWV8yCisgICAgICAg
ICk7CisKKyAgICAgICAgLy8gUGVyZm9ybSBhcmJpdHJhcnkgdHJhbnNmb3JtYXRpb24gdG8gcmVm
ZXJlbmNlIHNwYWNlIG9yaWdpbk9mZnNldAorICAgICAgICBjb25zdCBuZXdfcG9zaXRpb24yID0g
eworICAgICAgICAgIHg6IDUsIC8vIFRyYW5zbGF0ZSA1IHVuaXRzIGFsb25nIHRoZSB4LWF4aXMK
KyAgICAgICAgICB5OiAyLCAvLyBUcmFuc2xhdGUgMiB1bml0cyBhbG9uZyB0aGUgeS1heGlzCisg
ICAgICAgICAgejogMCwKKyAgICAgICAgfTsKKyAgICAgICAgY29uc3QgbmV3X29yaWVudGF0aW9u
MiA9IHsKKyAgICAgICAgICB4OiAwLAorICAgICAgICAgIHk6IE1hdGguc2luKFJBRElBTlNfOTBE
IC8gMiksIC8vIFJvdGF0ZSA5MCBkZWdyZWVzIGFib3V0IHRoZSB5LWF4aXMKKyAgICAgICAgICB6
OiAwLAorICAgICAgICAgIHc6IE1hdGguY29zKFJBRElBTlNfOTBEIC8gMiksCisgICAgICAgIH07
CisgICAgICAgIHJlZmVyZW5jZVNwYWNlID0gcmVmZXJlbmNlU3BhY2UuZ2V0T2Zmc2V0UmVmZXJl
bmNlU3BhY2UobmV3IFhSUmlnaWRUcmFuc2Zvcm0obmV3X3Bvc2l0aW9uMiwgbmV3X29yaWVudGF0
aW9uMikpOworCisgICAgICAgIGNvbnN0IEVYUEVDVEVEX1ZJRVdfTUFUUklYXzMgPSBbCisgICAg
ICAgICAgIDAsICAgIDEsICAgMCwgICAwLAorICAgICAgICAgICAwLCAgICAwLCAgIDEsICAgMCwK
KyAgICAgICAgICAgMSwgICAgMCwgICAwLCAgIDAsCisgICAgICAgICAgMTMuOSwgLTUuMiwgMy43
LCAxLAorICAgICAgICBdOworICAgICAgICBjb25zdCBFWFBFQ1RFRF9HUklQX01BVFJJWF8zID0g
WworICAgICAgICAgIDAsICAgIDAsICAgICAxLCAgIDAsCisgICAgICAgICAgMSwgICAgMCwgICAg
IDAsICAgMCwKKyAgICAgICAgICAwLCAgICAxLCAgICAgMCwgICAwLAorICAgICAgICAgIDUuMiwg
LTMuNywgLTEzLjksIDEsCisgICAgICAgIF07CisgICAgICAgIGNvbnN0IEVYUEVDVEVEX1JBWV9N
QVRSSVhfMyA9IFsKKyAgICAgICAgICAwLCAgICAgMCwgICAgICAxLCAgICAwLAorICAgICAgICAg
IDEsICAgICAwLCAgICAgIDAsICAgIDAsCisgICAgICAgICAgMCwgICAgIDEsICAgICAgMCwgICAg
MCwKKyAgICAgICAgICA1LjIyLCAtMy42NywgLTEzLjg5LCAxLAorICAgICAgICBdOworCisgICAg
ICAgIGNvbnN0IEVYUEVDVEVEX0JPVU5EU19HRU9NRVRSWV8zID0gWworICAgICAgICAgIHt4OiAz
LCB5OiAtOC41LCB6OiAtMTQsIHc6IDF9LAorICAgICAgICAgIHt4OiAzLCB5OiAtNS41LCB6OiAt
MTQsIHc6IDF9LAorICAgICAgICAgIHt4OiAzLCB5OiAtNS41LCB6OiAtMTYsIHc6IDF9LAorICAg
ICAgICAgIHt4OiAzLCB5OiAtOC41LCB6OiAtMTYsIHc6IDF9LAorICAgICAgICBdOworCisgICAg
ICAgIC8vIENoZWNrIHN0YXRlIGFmdGVyIHRyYW5zZm9ybWF0aW9uCisgICAgICAgIENoZWNrU3Rh
dGUoCisgICAgICAgICAgcmVmZXJlbmNlU3BhY2UsCisgICAgICAgICAgRVhQRUNURURfVklFV19N
QVRSSVhfMywKKyAgICAgICAgICBFWFBFQ1RFRF9HUklQX01BVFJJWF8zLAorICAgICAgICAgIEVY
UEVDVEVEX1JBWV9NQVRSSVhfMywKKyAgICAgICAgICBFWFBFQ1RFRF9CT1VORFNfR0VPTUVUUllf
MworICAgICAgICApOworCisgICAgICAgIHJlc29sdmUoKTsKKyAgICAgIH0pOworICAgIH0pOwor
ICB9KTsKK307CisKK3hyX3Nlc3Npb25fcHJvbWlzZV90ZXN0KAorICB0ZXN0TmFtZSwgdGVzdEZ1
bmN0aW9uLCBmYWtlRGV2aWNlSW5pdFBhcmFtcywgJ2ltbWVyc2l2ZS12cicsIHsgJ3JlcXVpcmVk
RmVhdHVyZXMnOiBbJ2JvdW5kZWQtZmxvb3InXSB9KTsKKworPC9zY3JpcHQ+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyUmVm
ZXJlbmNlU3BhY2Vfb3JpZ2luT2Zmc2V0X3ZpZXdlci5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clJlZmVyZW5jZVNwYWNlX29y
aWdpbk9mZnNldF92aWV3ZXIuaHR0cHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41Y2QwZjAyNzI2NmVlZTJh
MzQxZTViNWQwNjIyMjdkMjAxM2VlNjdiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clJlZmVyZW5jZVNwYWNlX29y
aWdpbk9mZnNldF92aWV3ZXIuaHR0cHMuaHRtbApAQCAtMCwwICsxLDU1IEBACis8IURPQ1RZUEUg
aHRtbD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvd2VieHJfdXRpbC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0icmVzb3VyY2VzL3dlYnhyX3Rlc3RfY29uc3RhbnRzLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvd2VieHJfdGVzdF9hc3NlcnRzLmpzIj48L3NjcmlwdD4KKzxjYW52
YXMgaWQ9IndlYmdsLWNhbnZhcyI+PC9jYW52YXM+CisKKzxzY3JpcHQ+CitsZXQgdGVzdE5hbWUg
PSAiQ3JlYXRpbmcgWFJSZWZlcmVuY2VTcGFjZSBvcmlnaW4gb2Zmc2V0IG9mZiBvZiBgdmlld2Vy
YCBzcGFjZSB3b3Jrcy4iOworCitsZXQgZmFrZURldmljZUluaXRQYXJhbXMgPSB7CisgIHN1cHBv
cnRzSW1tZXJzaXZlOiB0cnVlLAorICBzdXBwb3J0ZWRNb2RlczogWyJpbmxpbmUiLCAiaW1tZXJz
aXZlLXZyIl0sCisgIHZpZXdlck9yaWdpbjogVkFMSURfUE9TRV9UUkFOU0ZPUk0sCisgIHZpZXdz
OiBWQUxJRF9WSUVXUywKKyAgc3VwcG9ydGVkRmVhdHVyZXM6IEFMTF9GRUFUVVJFUworfTsKKwor
bGV0IG9yaWdpbk9mZnNldFBvc2l0aW9uID0gbmV3IERPTVBvaW50UmVhZE9ubHkoMCwgMCwgMSk7
CisKK2xldCB0ZXN0RnVuY3Rpb24gPQorICAoc2Vzc2lvbiwgZmFrZURldmljZUNvbnRyb2xsZXIs
IHQpID0+IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7CisKKyAgICBzZXNzaW9uLnJlcXVlc3RS
ZWZlcmVuY2VTcGFjZSgnbG9jYWwnKS50aGVuKCAobG9jYWxTcGFjZSkgPT4geworICAgICAgc2Vz
c2lvbi5yZXF1ZXN0UmVmZXJlbmNlU3BhY2UoJ3ZpZXdlcicpLnRoZW4oICh2aWV3ZXJTcGFjZSkg
PT4geworCisgICAgICAgIGxldCBvZmZzZXRTcGFjZSA9IHZpZXdlclNwYWNlLmdldE9mZnNldFJl
ZmVyZW5jZVNwYWNlKAorICAgICAgICAgIG5ldyBYUlJpZ2lkVHJhbnNmb3JtKG9yaWdpbk9mZnNl
dFBvc2l0aW9uKSk7CisKKyAgICAgICAgZnVuY3Rpb24gT25GcmFtZSh0aW1lLCBmcmFtZSkgewor
ICAgICAgICAgIGxldCB2aWV3ZXJQb3NlID0gZnJhbWUuZ2V0UG9zZSh2aWV3ZXJTcGFjZSwgbG9j
YWxTcGFjZSk7CisgICAgICAgICAgbGV0IG9mZnNldFBvc2UgPSBmcmFtZS5nZXRQb3NlKG9mZnNl
dFNwYWNlLCBsb2NhbFNwYWNlKTsKKworICAgICAgICAgIGxldCB2aWV3ZXJQb3NlMiA9IGZyYW1l
LmdldFBvc2UobG9jYWxTcGFjZSAsdmlld2VyU3BhY2UpOworICAgICAgICAgIGxldCBvZmZzZXRQ
b3NlMiA9IGZyYW1lLmdldFBvc2UobG9jYWxTcGFjZSwgb2Zmc2V0U3BhY2UpOworCisgICAgICAg
ICAgdC5zdGVwKCgpID0+IHsKKyAgICAgICAgICAgIGFzc2VydF9wb2ludF9zaWduaWZpY2FudGx5
X25vdF9lcXVhbHModmlld2VyUG9zZS50cmFuc2Zvcm0ucG9zaXRpb24sIG9mZnNldFBvc2UudHJh
bnNmb3JtLnBvc2l0aW9uKTsKKyAgICAgICAgICAgIGFzc2VydF9wb2ludF9zaWduaWZpY2FudGx5
X25vdF9lcXVhbHModmlld2VyUG9zZTIudHJhbnNmb3JtLnBvc2l0aW9uLCBvZmZzZXRQb3NlMi50
cmFuc2Zvcm0ucG9zaXRpb24pOworICAgICAgICAgIH0pOworCisgICAgICAgICAgcmVzb2x2ZSgp
OworICAgICAgICB9CisKKyAgICAgICAgLy8gQ2FuIG9ubHkgcmVxdWVzdCBpbnB1dCBwb3NlcyBp
biBhbiB4ciBmcmFtZS4KKyAgICAgICAgc2Vzc2lvbi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoT25G
cmFtZSk7CisgICAgICB9KTsKKyAgICB9KTsKKyAgfSk7CisKK3hyX3Nlc3Npb25fcHJvbWlzZV90
ZXN0KAorICB0ZXN0TmFtZSwgdGVzdEZ1bmN0aW9uLCBmYWtlRGV2aWNlSW5pdFBhcmFtcywgJ2lt
bWVyc2l2ZS12cicpOworCis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJSaWdpZFRyYW5zZm9ybV9jb25zdHJ1
Y3Rvci5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93ZWJ4ci94clJpZ2lkVHJhbnNmb3JtX2NvbnN0cnVjdG9yLmh0dHBzLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNWUwNTVlZmM0MWI3NGZjOTY4YjA5NzYxMGU4ZGViYTM4ZjI2NDJkZgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Vi
eHIveHJSaWdpZFRyYW5zZm9ybV9jb25zdHJ1Y3Rvci5odHRwcy5odG1sCkBAIC0wLDAgKzEsMTE0
IEBACis8IURPQ1RZUEUgaHRtbD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvd2VieHJfdXRpbC5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3dlYnhyX3Rlc3RfY29uc3RhbnRzLmpzIj48
L3NjcmlwdD4KKzxjYW52YXMgaWQ9IndlYmdsLWNhbnZhcyI+PC9jYW52YXM+Cis8c2NyaXB0Pgor
CitsZXQgdGVzdE5hbWUgPSAiWFJSaWdpZFRyYW5zZm9ybSBjb25zdHJ1Y3RvciB3b3JrcyI7Cits
ZXQgZmFrZURldmljZUluaXRQYXJhbXMgPSBUUkFDS0VEX0lNTUVSU0lWRV9ERVZJQ0U7CisKK2xl
dCB0ZXN0RnVuY3Rpb24gPQorICAoc2Vzc2lvbiwgZmFrZURldmljZUNvbnRyb2xsZXIsIHQpID0+
IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKKyAgbGV0IGNvb3JkRGljdCA9IGZ1
bmN0aW9uKGNvb3JkcykgeworICAgIGxldCB0ZW1wRGljdCA9IHsKKyAgICAgICAgeCA6IGNvb3Jk
c1swXSwKKyAgICAgICAgeSA6IGNvb3Jkc1sxXSwKKyAgICAgICAgeiA6IGNvb3Jkc1syXQorICAg
IH0KKworICAgIGlmIChjb29yZHMubGVuZ3RoID49IDQpIHsKKyAgICAgICAgdGVtcERpY3RbInci
XSA9IGNvb3Jkc1szXTsKKyAgICB9CisKKyAgICByZXR1cm4gdGVtcERpY3Q7CisgIH07CisKKyAg
bGV0IGNyZWF0ZURPTVBvaW50ID0gZnVuY3Rpb24oY29vcmRzKSB7CisgICAgcmV0dXJuIERPTVBv
aW50LmZyb21Qb2ludChjb29yZERpY3QoY29vcmRzKSk7CisgIH07CisKKyAgbGV0IGNyZWF0ZURP
TVBvaW50UmVhZE9ubHkgPSBmdW5jdGlvbihjb29yZHMpIHsKKyAgICByZXR1cm4gRE9NUG9pbnRS
ZWFkT25seS5mcm9tUG9pbnQoY29vcmREaWN0KGNvb3JkcykpOworICB9OworCisgIGxldCBxdWF0
ZXJuaW9uTGVuZ3RoID0gZnVuY3Rpb24ocG9pbnQpIHsKKyAgICByZXR1cm4gTWF0aC5zcXJ0KAor
ICAgICAgICAocG9pbnQueCAqIHBvaW50LngpICsKKyAgICAgICAgKHBvaW50LnkgKiBwb2ludC55
KSArCisgICAgICAgIChwb2ludC56ICogcG9pbnQueikgKworICAgICAgICAocG9pbnQudyAqIHBv
aW50LncpKTsKKyAgfTsKKworICBsZXQgY2hlY2tET01Qb2ludCA9IGZ1bmN0aW9uKHBvaW50LCB4
LCB5LCB6LCB3LCBkZXNjKSB7CisgICAgdC5zdGVwKCgpID0+IHsKKyAgICAgIGFzc2VydF9hcHBy
b3hfZXF1YWxzKHBvaW50LngsIHgsIEZMT0FUX0VQU0lMT04sIGAke2Rlc2N9OiB4IHZhbHVlYCk7
CisgICAgICBhc3NlcnRfYXBwcm94X2VxdWFscyhwb2ludC55LCB5LCBGTE9BVF9FUFNJTE9OLCBg
JHtkZXNjfTogeSB2YWx1ZWApOworICAgICAgYXNzZXJ0X2FwcHJveF9lcXVhbHMocG9pbnQueiwg
eiwgRkxPQVRfRVBTSUxPTiwgYCR7ZGVzY306IHogdmFsdWVgKTsKKyAgICAgIGFzc2VydF9hcHBy
b3hfZXF1YWxzKHBvaW50LncsIHcsIEZMT0FUX0VQU0lMT04sIGAke2Rlc2N9OiB3IHZhbHVlYCk7
CisgICAgfSk7CisgIH07CisKKyAgbGV0IGNoZWNrVHJhbnNmb3JtID0gZnVuY3Rpb24odHJhbnNm
b3JtT2JqLCBkZXNjKSB7CisgICAgdC5zdGVwKCgpID0+IHsKKyAgICAgIGFzc2VydF9ub3RfZXF1
YWxzKHRyYW5zZm9ybU9iaiwgbnVsbCwgYCR7ZGVzY306IGV4aXN0c2ApOworICAgICAgYXNzZXJ0
X25vdF9lcXVhbHModHJhbnNmb3JtT2JqLnBvc2l0aW9uLCBudWxsLCBgJHtkZXNjfTogcG9zaXRp
b24gZXhpc3RzYCk7CisgICAgICBhc3NlcnRfbm90X2VxdWFscyh0cmFuc2Zvcm1PYmoub3JpZW50
YXRpb24sIG51bGwsIGAke2Rlc2N9OiBvcmllbnRhdGlvbiBleGlzdHNgKTsKKyAgICAgIGFzc2Vy
dF9ub3RfZXF1YWxzKHRyYW5zZm9ybU9iai5tYXRyaXgsIG51bGwsIGAke2Rlc2N9OiBtYXRyaXgg
ZXhpc3RzYCk7CisgICAgICBhc3NlcnRfZXF1YWxzKHRyYW5zZm9ybU9iai5tYXRyaXgubGVuZ3Ro
LCAxNiwgYCR7ZGVzY306IG1hdHJpeCBvZiBjb3JyZWN0IGxlbmd0aGApOworICAgIH0pOworICB9
OworCisgIC8vIHRlc3QgY3JlYXRpbmcgdHJhbnNmb3JtIHdpdGggc3BlY2lmaWVkIHBvc2l0aW9u
IGFuZCBvcmllbnRhdGlvbgorICAvLyBtYWtlIHN1cmUgdGhhdCBvcmllbnRhdGlvbiB3YXMgbm9y
bWFsaXplZCB0byBoYXZlIGxlbmd0aCA9IDEuMAorICBsZXQgdHJhbnNmb3JtID0gbmV3IFhSUmln
aWRUcmFuc2Zvcm0oCisgICAgICBjcmVhdGVET01Qb2ludChbMS4wLCAyLjAsIDMuMF0pLAorICAg
ICAgY3JlYXRlRE9NUG9pbnQoWzEuMSwgMi4xLCAzLjEsIDEuMF0pKTsKKyAgY2hlY2tUcmFuc2Zv
cm0odHJhbnNmb3JtLCAiQXJiaXRyYXJ5IHRyYW5zZm9ybSIpOworICBjaGVja0RPTVBvaW50KHRy
YW5zZm9ybS5wb3NpdGlvbiwgMS4wLCAyLjAsIDMuMCwgMS4wLCAiQXJiaXRyYXJ5IHRyYW5zZm9y
bSBwb3NpdGlvbiIpOworICBhc3NlcnRfYXBwcm94X2VxdWFscyhxdWF0ZXJuaW9uTGVuZ3RoKHRy
YW5zZm9ybS5vcmllbnRhdGlvbiksIDEuMCwgRkxPQVRfRVBTSUxPTiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIkFyYml0cmFyeSB0cmFuc2Zvcm0gaXMgbm9ybWFsaXplZCIpOworCisgIC8vIHRl
c3QgY3JlYXRpbmcgaWRlbnRpdHkgdHJhbnNmb3JtCisgIGxldCBpZGVudGl0eSA9IG5ldyBYUlJp
Z2lkVHJhbnNmb3JtKCk7CisgIGNoZWNrVHJhbnNmb3JtKGlkZW50aXR5LCAiSWRlbnRpdHkgdHJh
bnNmb3JtIik7CisgIGNoZWNrRE9NUG9pbnQoaWRlbnRpdHkucG9zaXRpb24sIDAuMCwgMC4wLCAw
LjAsIDEuMCwgIklkZW50aXR5IHRyYW5zZm9ybSBwb3NpdGlvbiIpOworICBjaGVja0RPTVBvaW50
KGlkZW50aXR5Lm9yaWVudGF0aW9uLCAwLjAsIDAuMCwgMC4wLCAxLjAsICJJZGVudGl0eSB0cmFu
c2Zvcm0gb3JpZW50YXRpb24iKTsKKworICAvLyBjcmVhdGUgdHJhbnNmb3JtIHdpdGggb25seSBw
b3NpdGlvbiBzcGVjaWZpZWQKKyAgdHJhbnNmb3JtID0gbmV3IFhSUmlnaWRUcmFuc2Zvcm0oY3Jl
YXRlRE9NUG9pbnQoWzEuMCwgMi4wLCAzLjBdKSk7CisgIGNoZWNrVHJhbnNmb3JtKHRyYW5zZm9y
bSwgIlBvc2l0aW9uLW9ubHkiKTsKKworICAvLyBjcmVhdGUgdHJhbnNmb3JtIHdpdGggb25seSBv
cmllbnRhdGlvbiBzcGVjaWZpZWQKKyAgdHJhbnNmb3JtID0gbmV3IFhSUmlnaWRUcmFuc2Zvcm0o
dW5kZWZpbmVkLCBjcmVhdGVET01Qb2ludChbMS4xLCAyLjEsIDMuMSwgMS4wXSkpOworICBjaGVj
a1RyYW5zZm9ybSh0cmFuc2Zvcm0sICJvcmllbnRhdGlvbi1vbmx5Iik7CisKKyAgLy8gY3JlYXRl
IHRyYW5zZm9ybSB3aXRoIERPTVBvaW50UmVhZE9ubHkKKyAgdHJhbnNmb3JtID0gbmV3IFhSUmln
aWRUcmFuc2Zvcm0oCisgICAgICBjcmVhdGVET01Qb2ludFJlYWRPbmx5KFsxLjAsIDIuMCwgMy4w
XSksCisgICAgICBjcmVhdGVET01Qb2ludFJlYWRPbmx5KFsxLjEsIDIuMSwgMy4xLCAxLjBdKSk7
CisgIGNoZWNrVHJhbnNmb3JtKHRyYW5zZm9ybSwgIkNyZWF0ZWQgd2l0aCBET01Qb2ludFJlYWRP
bmx5Iik7CisKKyAgLy8gY3JlYXRlIHRyYW5zZm9ybSB3aXRoIGRpY3Rpb25hcnkKKyAgdHJhbnNm
b3JtID0gbmV3IFhSUmlnaWRUcmFuc2Zvcm0oCisgICAgICBjb29yZERpY3QoWzEuMCwgMi4wLCAz
LjBdKSwKKyAgICAgIGNvb3JkRGljdChbMS4xLCAyLjEsIDMuMSwgMS4wXSkpOworICBjaGVja1Ry
YW5zZm9ybSh0cmFuc2Zvcm0sICJDcmVhdGVkIHdpdGggZGljdCIpOworCisgIGFzc2VydF90aHJv
d3NfanMoVHlwZUVycm9yLCAoKSA9PiBuZXcgWFJSaWdpZFRyYW5zZm9ybSgKKyAgICAgIGNvb3Jk
RGljdChbMS4wLCAyLjAsIDMuMCwgMC41XSksCisgICAgICBjb29yZERpY3QoWzEuMSwgMi4xLCAz
LjEsIDEuMF0pCisgICksICJDb25zdHJ1Y3RvciBzaG91bGQgdGhyb3cgVHlwZUVycm9yIGZvciBu
b24tMSBwb3NpdGlvbiB3IHZhbHVlcyIpOworCisgIGFzc2VydF90aHJvd3NfZG9tKCJJbnZhbGlk
U3RhdGVFcnJvciIsICgpID0+IG5ldyBYUlJpZ2lkVHJhbnNmb3JtKAorICAgICAgY29vcmREaWN0
KFsxLjAsIDIuMCwgMy4wLCAxLjBdKSwKKyAgICAgIGNvb3JkRGljdChbMCwgMCwgMCwgMF0pCisg
ICksICJDb25zdHJ1Y3RvciBzaG91bGQgdGhyb3cgSW52YWxpZFN0YXRlRXJyb3IgZm9yIG5vbi1u
b3JtYWxpemVhYmxlIG9yaWVudGF0aW9uIHZhbHVlcyIpOworICByZXNvbHZlKCk7Cit9KTsKKwor
eHJfc2Vzc2lvbl9wcm9taXNlX3Rlc3QodGVzdE5hbWUsIHRlc3RGdW5jdGlvbiwgZmFrZURldmlj
ZUluaXRQYXJhbXMsCisgICAgJ2ltbWVyc2l2ZS12cicpOworCis8L3NjcmlwdD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJS
aWdpZFRyYW5zZm9ybV9pbnZlcnNlLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyUmlnaWRUcmFuc2Zvcm1faW52ZXJzZS5odHRw
cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjMwOThmYjY0OTM2MzQ5ZTU4YWE2YTkxOWE4ZWM5N2Q2MzM0ZTVl
MDIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dlYnhyL3hyUmlnaWRUcmFuc2Zvcm1faW52ZXJzZS5odHRwcy5odG1sCkBAIC0w
LDAgKzEsMTA4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rl
c3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJu
ZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvd2VieHJfdXRp
bC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3dlYnhyX3Rlc3RfY29uc3Rh
bnRzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvd2VieHJfdGVzdF9hc3Nl
cnRzLmpzIj48L3NjcmlwdD4KKzxjYW52YXMgaWQ9IndlYmdsLWNhbnZhcyI+PC9jYW52YXM+Cis8
c2NyaXB0PgorCitsZXQgdGVzdE5hbWUgPSAiWFJSaWdpZFRyYW5zZm9ybSBpbnZlcnNlIHdvcmtz
IjsKK2xldCBmYWtlRGV2aWNlSW5pdFBhcmFtcyA9IFRSQUNLRURfSU1NRVJTSVZFX0RFVklDRTsK
KworbGV0IHRlc3RGdW5jdGlvbiA9CisgIChzZXNzaW9uLCBmYWtlRGV2aWNlQ29udHJvbGxlciwg
dCkgPT4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4geworCisgIC8vIEFuIGlkZW50
aXR5IHRyYW5zZm9ybSBzaG91bGQgYmUgZXF1YWwgdG8gaXQncyBpbnZlcnNlLgorICBsZXQgaWRl
bnRpdHlfdHJhbnNmb3JtID0gbmV3IFhSUmlnaWRUcmFuc2Zvcm0oKTsKKyAgdC5zdGVwKCgpID0+
IHsKKyAgICBhc3NlcnRfdHJhbnNmb3JtX2FwcHJveF9lcXVhbHMoaWRlbnRpdHlfdHJhbnNmb3Jt
LCBpZGVudGl0eV90cmFuc2Zvcm0uaW52ZXJzZSk7CisgIH0pOworCisgIC8vIEludmVyc2VkIHRy
YW5zZm9ybXMgc2hvdWxkIHlpZWxkIHRoZSBleHBlY3RlZCByZXN1bHRzCisgIGxldCB0cmFuc2Zv
cm0gPSBuZXcgWFJSaWdpZFRyYW5zZm9ybSgKKyAgICAgIHsgeDogMS4wLCB5OiAyLjAsIHo6IDMu
MCB9LAorICAgICAgeyB4OiAwLjAsIHk6IDAuMCwgejogMC4wLCB3OiAxLjAgfSk7CisgIGxldCBp
bnZlcnNlX3RyYW5zZm9ybSA9IHRyYW5zZm9ybS5pbnZlcnNlOworICBsZXQgZXhwZWN0ZWRfaW52
ZXJzZSA9IG5ldyBYUlJpZ2lkVHJhbnNmb3JtKAorICAgICAgeyB4OiAtMS4wLCB5OiAtMi4wLCB6
OiAtMy4wIH0sCisgICAgICB7IHg6IDAuMCwgeTogMC4wLCB6OiAwLjAsIHc6IDEuMCB9KTsKKyAg
dC5zdGVwKCgpID0+IHsKKyAgICBhc3NlcnRfdHJhbnNmb3JtX2FwcHJveF9lcXVhbHMoaW52ZXJz
ZV90cmFuc2Zvcm0sIGV4cGVjdGVkX2ludmVyc2UpOworICB9KTsKKworICB0cmFuc2Zvcm0gPSBu
ZXcgWFJSaWdpZFRyYW5zZm9ybSgKKyAgICAgIHsgeDogMC4wLCB5OiAwLjAsIHo6IDAuMCB9LAor
ICAgICAgeyB4OiAxLjAsIHk6IDAuMCwgejogMC4wLCB3OiAxLjAgfSk7CisgIGludmVyc2VfdHJh
bnNmb3JtID0gdHJhbnNmb3JtLmludmVyc2U7CisgIGV4cGVjdGVkX2ludmVyc2UgPSBuZXcgWFJS
aWdpZFRyYW5zZm9ybSgKKyAgICAgIHsgeDogMC4wLCB5OiAwLjAsIHo6IDAuMCB9LAorICAgICAg
eyB4OiAtMS4wLCB5OiAwLjAsIHo6IDAuMCwgdzogMS4wIH0pOworICB0LnN0ZXAoKCkgPT4gewor
ICAgIGFzc2VydF90cmFuc2Zvcm1fYXBwcm94X2VxdWFscyhpbnZlcnNlX3RyYW5zZm9ybSwgZXhw
ZWN0ZWRfaW52ZXJzZSk7CisgIH0pOworCisgIHRyYW5zZm9ybSA9IG5ldyBYUlJpZ2lkVHJhbnNm
b3JtKAorICAgICAgeyB4OiAxLjAsIHk6IDIuMCwgejogMy4wIH0sCisgICAgICB7IHg6IDAuMCwg
eTogMS4wLCB6OiAwLjAsIHc6IDEuMCB9KTsKKyAgaW52ZXJzZV90cmFuc2Zvcm0gPSB0cmFuc2Zv
cm0uaW52ZXJzZTsKKyAgZXhwZWN0ZWRfaW52ZXJzZSA9IG5ldyBYUlJpZ2lkVHJhbnNmb3JtKAor
ICAgICAgeyB4OiAzLjAsIHk6IC0yLjAsIHo6IC0xLjAgfSwKKyAgICAgIHsgeDogMC4wLCB5OiAt
MS4wLCB6OiAwLjAsIHc6IDEuMCB9KTsKKyAgdC5zdGVwKCgpID0+IHsKKyAgICBhc3NlcnRfdHJh
bnNmb3JtX2FwcHJveF9lcXVhbHMoaW52ZXJzZV90cmFuc2Zvcm0sIGV4cGVjdGVkX2ludmVyc2Up
OworICB9KTsKKworICAvLyBUcmFuc2Zvcm1zIHNob3VsZCBiZSBlcXVhbCB0byB0aGUgaW52ZXJz
ZSBvZiB0aGVpciBpbnZlcnNlLgorICB0cmFuc2Zvcm0gPSBuZXcgWFJSaWdpZFRyYW5zZm9ybSgK
KyAgICAgIHsgeDogMS4wLCB5OiAyLjAsIHo6IDMuMCB9LAorICAgICAgeyB4OiAxLjAsIHk6IDIu
MCwgejogMy4wLCB3OiA0LjAgfSk7CisgIGludmVyc2VfdHJhbnNmb3JtID0gdHJhbnNmb3JtLmlu
dmVyc2U7CisgIHQuc3RlcCgoKSA9PiB7CisgICAgYXNzZXJ0X3RyYW5zZm9ybV9hcHByb3hfZXF1
YWxzKHRyYW5zZm9ybSwgaW52ZXJzZV90cmFuc2Zvcm0uaW52ZXJzZSk7CisgIH0pOworCisgIHRy
YW5zZm9ybSA9IG5ldyBYUlJpZ2lkVHJhbnNmb3JtKAorICAgICAgeyB4OiAtOS4wLCB5OiA4LjAs
IHo6IC03LjAgfSwKKyAgICAgIHsgeDogNi4wLCB5OiAtNS4wLCB6OiA0LjAsIHc6IDMuMCB9KTsK
KyAgaW52ZXJzZV90cmFuc2Zvcm0gPSB0cmFuc2Zvcm0uaW52ZXJzZTsKKyAgdC5zdGVwKCgpID0+
IHsKKyAgICBhc3NlcnRfdHJhbnNmb3JtX2FwcHJveF9lcXVhbHModHJhbnNmb3JtLCBpbnZlcnNl
X3RyYW5zZm9ybS5pbnZlcnNlKTsKKyAgfSk7CisKKyAgdHJhbnNmb3JtID0gbmV3IFhSUmlnaWRU
cmFuc2Zvcm0oCisgICAgICB7IHg6IC0yLjAsIHk6IDEuMCwgejogLTQuMCB9LAorICAgICAgeyB4
OiAwLjAsIHk6IDEuMCwgejogMC4wLCB3OiAxLjAgfSk7CisgIGludmVyc2VfdHJhbnNmb3JtID0g
dHJhbnNmb3JtLmludmVyc2U7CisgIHQuc3RlcCgoKSA9PiB7CisgICAgYXNzZXJ0X3RyYW5zZm9y
bV9hcHByb3hfZXF1YWxzKHRyYW5zZm9ybSwgaW52ZXJzZV90cmFuc2Zvcm0uaW52ZXJzZSk7Cisg
IH0pOworCisgIHRyYW5zZm9ybSA9IG5ldyBYUlJpZ2lkVHJhbnNmb3JtKAorICAgICAgeyB4OiAy
LjAsIHk6IC0xLjAsIHo6IDQuMCB9LAorICAgICAgeyB4OiAxLjAsIHk6IDAuMCwgejogMC4wLCB3
OiAxLjAgfSk7CisgIGludmVyc2VfdHJhbnNmb3JtID0gdHJhbnNmb3JtLmludmVyc2U7CisgIHQu
c3RlcCgoKSA9PiB7CisgICAgYXNzZXJ0X3RyYW5zZm9ybV9hcHByb3hfZXF1YWxzKHRyYW5zZm9y
bSwgaW52ZXJzZV90cmFuc2Zvcm0uaW52ZXJzZSk7CisgIH0pOworCisgIC8vIEludmVyc2Ugc2hv
dWxkIGFsd2F5cyByZXR1cm4gdGhlIHNhbWUgb2JqZWN0LCBhbmQgY2FsbGluZyBpbnZlcnNlIG9u
IHRoYXQKKyAgLy8gb2JqZWN0IHNob3VsZCByZXR1cm4gdGhlIG9yaWdpbmFsIG9iamVjdC4KKyAg
dHJhbnNmb3JtID0gbmV3IFhSUmlnaWRUcmFuc2Zvcm0oCisgICAgICB7IHg6IDEuMCwgeTogLTIu
MCwgejogMy4wIH0sCisgICAgICB7IHg6IDAuMCwgeTogMC4wLCB6OiAxLjAsIHc6IDEuMCB9KTsK
KyAgaW52ZXJzZV90cmFuc2Zvcm0gPSB0cmFuc2Zvcm0uaW52ZXJzZTsKKyAgdC5zdGVwKCgpID0+
IHsKKyAgICBhc3NlcnRfdHJ1ZSh0cmFuc2Zvcm0uaW52ZXJzZSA9PT0gaW52ZXJzZV90cmFuc2Zv
cm0pOworICAgIGFzc2VydF90cnVlKGludmVyc2VfdHJhbnNmb3JtLmludmVyc2UgPT09IHRyYW5z
Zm9ybSk7CisgICAgYXNzZXJ0X3RydWUodHJhbnNmb3JtLmludmVyc2UuaW52ZXJzZSA9PT0gdHJh
bnNmb3JtKTsKKyAgICBhc3NlcnRfdHJ1ZSh0cmFuc2Zvcm0uaW52ZXJzZS5pbnZlcnNlLmludmVy
c2UgPT09IGludmVyc2VfdHJhbnNmb3JtKTsKKyAgfSk7CisKKyAgcmVzb2x2ZSgpOworfSk7CisK
K3hyX3Nlc3Npb25fcHJvbWlzZV90ZXN0KHRlc3ROYW1lLCB0ZXN0RnVuY3Rpb24sIGZha2VEZXZp
Y2VJbml0UGFyYW1zLAorICAgICdpbW1lcnNpdmUtdnInKTsKKworPC9zY3JpcHQ+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hy
UmlnaWRUcmFuc2Zvcm1fbWF0cml4Lmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyUmlnaWRUcmFuc2Zvcm1fbWF0cml4Lmh0dHBz
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZGY4MDQxOTNmZmU5ZWI4N2RiYjE2MzgzY2IzMzNhNWZlMGEwNjU0
NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvd2VieHIveHJSaWdpZFRyYW5zZm9ybV9tYXRyaXguaHR0cHMuaHRtbApAQCAtMCww
ICsxLDQ1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
cmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvd2VieHJfdGVzdF9j
b25zdGFudHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy93ZWJ4cl90ZXN0
X2Fzc2VydHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy93ZWJ4cl9tYXRo
X3V0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisKK2xldCBtYXRyaXhfdGVzdHNfbmFtZSA9
ICJYUlJpZ2lkVHJhbnNmb3JtIG1hdHJpeCB3b3JrcyI7CisKK2xldCBtYXRyaXhfdGVzdHMgPSBm
dW5jdGlvbigpIHsKKyAgLy8gTWF0cml4IHRlc3RzIGZvciBYUlJpZ2lkVHJhbnNmb3JtLgorCisg
IC8vIFRlc3QgMS4gQ2hlY2sgaWYgbWF0cml4IHJvdGF0ZXMgdGhlIHZlY3RvciB0aGUgc2FtZSB3
YXkgYXMgcXVhdGVybmlvbgorICAvLyB1c2VkIHRvIGNvbnN0cnVjdCBpdC4gVGhpcyBkb2VzIG5v
dCBwZXJmb3JtIGEgdHJhbnNsYXRpb24uCisgIHsKKyAgICAvLyBwb2ludAorICAgIGNvbnN0IG9y
aWdpbkRpY3QgPSB7eCA6IDAsIHkgOiAwLCB6IDogMCwgdyA6IDF9OworICAgIC8vIHF1YXRlcm5p
b24gLSBzaG91bGQgYmUgbm9ybWFsaXplZAorICAgIGNvbnN0IG9yaWVudGF0aW9uRGljdCA9IHt4
IDogMCwgeSA6IDAuMzgwNTM1NiwgeiA6IDAuNzYxMDcxMiwgdyA6IDAuNTI1MzIyIH0KKworICAg
IGxldCByaWdpZFRyYW5zZm9ybSA9IG5ldyBYUlJpZ2lkVHJhbnNmb3JtKAorICAgICAgICBET01Q
b2ludC5mcm9tUG9pbnQob3JpZ2luRGljdCksCisgICAgICAgIERPTVBvaW50LmZyb21Qb2ludChv
cmllbnRhdGlvbkRpY3QpKTsKKworICAgIGNvbnN0IHBvaW50XzAgPSB7eCA6IDEwLCB5IDogMTEs
IHogOiAxMiwgdyA6IDF9OworCisgICAgLy8gdHJhbnNmb3JtIHRoZSBwb2ludCBieSBtYXRyaXgg
ZnJvbSByaWdpZCB0cmFuc2Zvcm0KKyAgICBjb25zdCBwb2ludF90cmFuc2Zvcm1lZF8wID0gbm9y
bWFsaXplX3BlcnNwZWN0aXZlKHRyYW5zZm9ybV9wb2ludF9ieV9tYXRyaXgocmlnaWRUcmFuc2Zv
cm0ubWF0cml4LCBwb2ludF8wKSk7CisgICAgY29uc3QgcG9pbnRfdHJhbnNmb3JtZWRfMSA9IHRy
YW5zZm9ybV9wb2ludF9ieV9xdWF0ZXJuaW9uKG9yaWVudGF0aW9uRGljdCwgcG9pbnRfMCk7Cisg
ICAgY29uc3QgcG9pbnRfdHJhbnNmb3JtZWRfMiA9IHRyYW5zZm9ybV9wb2ludF9ieV9xdWF0ZXJu
aW9uKHJpZ2lkVHJhbnNmb3JtLm9yaWVudGF0aW9uLCBwb2ludF8wKTsKKworICAgIGFzc2VydF9w
b2ludF9hcHByb3hfZXF1YWxzKAorICAgICAgcG9pbnRfdHJhbnNmb3JtZWRfMSwgcG9pbnRfdHJh
bnNmb3JtZWRfMCwKKyAgICAgIEZMT0FUX0VQU0lMT04sICJieS1pbml0aWFsLXF1YXRlcm5pb24t
YW5kLW1hdHJpeDoiKTsKKworICAgIGFzc2VydF9wb2ludF9hcHByb3hfZXF1YWxzKAorICAgICAg
cG9pbnRfdHJhbnNmb3JtZWRfMiwgcG9pbnRfdHJhbnNmb3JtZWRfMCwKKyAgICAgIEZMT0FUX0VQ
U0lMT04sICJieS10cmFuc2Zvcm0ncy1xdWF0ZXJuaW9uLWFuZC1tYXRyaXg6Iik7CisgIH0KK307
CisKK3Rlc3QobWF0cml4X3Rlc3RzLCBtYXRyaXhfdGVzdHNfbmFtZSk7CisKKzwvc2NyaXB0Pgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
ZWJ4ci94clJpZ2lkVHJhbnNmb3JtX3NhbWVPYmplY3QuaHR0cHMuaHRtbCBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJSaWdpZFRyYW5zZm9ybV9z
YW1lT2JqZWN0Lmh0dHBzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTdjN2VmMTg1M2VhMjRmOWNlOGYzMzll
MDFjZTllOTI5ZGNhZjIyZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJSaWdpZFRyYW5zZm9ybV9zYW1lT2JqZWN0
Lmh0dHBzLmh0bWwKQEAgLTAsMCArMSw0MSBAQAorPCFET0NUWVBFIGh0bWw+Cis8c2NyaXB0IHNy
Yz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jl
c291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL3dlYnhyX3V0aWwuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy93
ZWJ4cl90ZXN0X2NvbnN0YW50cy5qcyI+PC9zY3JpcHQ+Cis8Y2FudmFzIGlkPSJ3ZWJnbC1jYW52
YXMiPjwvY2FudmFzPgorPHNjcmlwdD4KKworbGV0IHRlc3ROYW1lID0gIlhSUmlnaWRUcmFuc2Zv
cm0gcG9zaXRpb24gYW5kIG9yaWVudGF0aW9uIG1lZXQgW1NhbWVPYmplY3RdIHJlcXVpcmVtZW50
cyI7CisKKy8vIHhyUmlnaWRUcmFuc2Zvcm1faW52ZXJzZS5odHRwcy5odG1sIGFscmVhZHkgY2hl
Y2tzIFtTYW1lT2JqZWN0XSByZXF1aXJlbWVudAorLy8gZm9yIFhSUmlnaWRUcmFuc2Zvcm0uaW52
ZXJzZS4gSXQncyBpbiBhIHNlcGFyYXRlIHRlc3QgYmVjYXVzZSB0aGVyZSBhcmUKKy8vIGFkZGl0
aW9uYWwgY29uc3RyYWludHMgYXJvdW5kIGhvdyB0aGUgaW52ZXJzZSBhdHRyaWJ1dGUgc2hvdWxk
IHdvcmsgYmVzaWRlcworLy8ganVzdCBbU2FtZU9iamVjdF0uCisKK2xldCB0ZXN0RnVuY3Rpb24g
PQorICAoc2Vzc2lvbiwgZmFrZURldmljZUNvbnRyb2xsZXIsIHQpID0+IG5ldyBQcm9taXNlKChy
ZXNvbHZlLCByZWplY3QpID0+IHsKKworICBsZXQgdHJhbnNmb3JtID0gbmV3IFhSUmlnaWRUcmFu
c2Zvcm0oCisgICAgICB7IHg6IC05LjAsIHk6IDguMCwgejogLTcuMCB9LAorICAgICAgeyB4OiA2
LjAsIHk6IC01LjAsIHo6IDQuMCwgdzogMy4wIH0pOworCisgIGxldCBwb3NpdGlvbiA9IHRyYW5z
Zm9ybS5wb3NpdGlvbjsKKyAgbGV0IG9yaWVudGF0aW9uID0gdHJhbnNmb3JtLm9yaWVudGF0aW9u
OworICBsZXQgbWF0cml4ID0gdHJhbnNmb3JtLm1hdHJpeDsKKyAgdC5zdGVwKCgpID0+IHsKKyAg
ICBhc3NlcnRfZXF1YWxzKHBvc2l0aW9uLCB0cmFuc2Zvcm0ucG9zaXRpb24sCisgICAgICAiWFJS
aWdpZFRyYW5zZm9ybS5wb3NpdGlvbiByZXR1cm5zIHRoZSBzYW1lIG9iamVjdC4iKTsKKyAgICBh
c3NlcnRfZXF1YWxzKG9yaWVudGF0aW9uLCB0cmFuc2Zvcm0ub3JpZW50YXRpb24sCisgICAgICAi
WFJSaWdpZFRyYW5zZm9ybS5vcmllbnRhdGlvbiByZXR1cm5zIHRoZSBzYW1lIG9iamVjdC4iKTsK
KyAgICBhc3NlcnRfZXF1YWxzKG1hdHJpeCwgdHJhbnNmb3JtLm1hdHJpeCwKKyAgICAgICJYUlJp
Z2lkVHJhbnNmb3JtLm1hdHJpeCByZXR1cm5zIHRoZSBzYW1lIG9iamVjdC4iKTsKKyAgfSk7CisK
KyAgcmVzb2x2ZSgpOworfSk7CisKK3hyX3Nlc3Npb25fcHJvbWlzZV90ZXN0KHRlc3ROYW1lLCB0
ZXN0RnVuY3Rpb24sIFRSQUNLRURfSU1NRVJTSVZFX0RFVklDRSwKKyAgICAnaW1tZXJzaXZlLXZy
Jyk7CisKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clNlc3Npb25fY2FuY2VsQW5pbWF0aW9uRnJhbWUuaHR0
cHMuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Vi
eHIveHJTZXNzaW9uX2NhbmNlbEFuaW1hdGlvbkZyYW1lLmh0dHBzLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmEyOTRmMjFmMDZkOTg0ODNkOTI3OGQwOGU1MDEyNGQ4NDc3OWFhZAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJT
ZXNzaW9uX2NhbmNlbEFuaW1hdGlvbkZyYW1lLmh0dHBzLmh0bWwKQEAgLTAsMCArMSw1NiBAQAor
PCFET0NUWVBFIGh0bWw+Cis8Ym9keT4KKyAgPHNjcmlwdCBzcmM9L3Jlc291cmNlcy90ZXN0aGFy
bmVzcy5qcz48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9L3Jlc291cmNlcy90ZXN0aGFybmVzc3Jl
cG9ydC5qcz48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9InJlc291cmNlcy93ZWJ4cl91dGlsLmpz
Ij48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9InJlc291cmNlcy93ZWJ4cl90ZXN0X2NvbnN0YW50
cy5qcyI+PC9zY3JpcHQ+CisgIDxjYW52YXM+PC9jYW52YXM+CisKKyAgPHNjcmlwdD4KKyAgICBs
ZXQgaW1tZXJzaXZlVGVzdE5hbWUgPSAiWFJTZXNzaW9uIHJlcXVlc3RBbmltYXRpb25GcmFtZSBj
YWxsYmFja3MgY2FuIGJlICIKKyAgICAgICsgInVucmVnaXN0ZXJlZCB3aXRoIGNhbmNlbEFuaW1h
dGlvbkZyYW1lIGZvciBpbW1lcnNpdmUgc2Vzc2lvbnMiOworICAgIGxldCBub25JbW1lcnNpdmVU
ZXN0TmFtZSA9ICJYUlNlc3Npb24gcmVxdWVzdEFuaW1hdGlvbkZyYW1lIGNhbGxiYWNrcyBjYW4g
YmUgIgorICAgICAgKyAidW5yZWdpc3RlcmVkIHdpdGggY2FuY2VsQW5pbWF0aW9uRnJhbWUgZm9y
IG5vbi1pbW1lcnNpdmUgc2Vzc2lvbnMiOworCisgICAgbGV0IGZha2VEZXZpY2VJbml0UGFyYW1z
ID0gVFJBQ0tFRF9JTU1FUlNJVkVfREVWSUNFOworCisgICAgbGV0IHRlc3RGdW5jdGlvbiA9IChz
ZXNzaW9uKSA9PiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CisKKyAgICAgIC8v
IFNjaGVkdWxlIGFuZCBpbW1lZGlhdGVseSBjYW5jZWwgYW5pbWF0aW9uIGZyYW1lCisgICAgICBz
ZXNzaW9uLmNhbmNlbEFuaW1hdGlvbkZyYW1lKHNlc3Npb24ucmVxdWVzdEFuaW1hdGlvbkZyYW1l
KAorICAgICAgICAodGltZSwgdnJGcmFtZSkgPT4geyByZWplY3QoIkNhbmNlbGxlZCBmcmFtZSBj
YWxsYmFjayB3YXMgY2FsbGVkIik7IH0pKTsKKworICAgICAgbGV0IGNvdW50ZXIgPSAwOworICAg
ICAgbGV0IGhhbmRsZTsKKyAgICAgIGZ1bmN0aW9uIG9uRnJhbWUodGltZSwgdnJGcmFtZSkgewor
ICAgICAgICAvLyBDYW5jZWwgdGhlIHNlY29uZCBhbmltYXRpb24gZnJhbWUuCisgICAgICAgIGlm
IChoYW5kbGUgIT0gMCkgeworICAgICAgICAgIHNlc3Npb24uY2FuY2VsQW5pbWF0aW9uRnJhbWUo
aGFuZGxlKTsKKyAgICAgICAgICBoYW5kbGUgPSAwOworICAgICAgICB9CisKKyAgICAgICAgLy8g
UnVuIGEgZmV3IG1vcmUgYW5pbWF0aW9uIGZyYW1lcyB0byBiZSBzdXJlIHRoYXQgdGhlIGNhbmNl
bGxlZCBmcmFtZSBpc24ndAorICAgICAgICAvLyBnb2luZyB0byBjYWxsLgorICAgICAgICBjb3Vu
dGVyKys7CisgICAgICAgIGlmIChjb3VudGVyID49IDQpIHsKKyAgICAgICAgICAvLyBPaywgd2Un
cmUgZG9uZSBoZXJlLgorICAgICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICBzZXNzaW9uLnJlcXVlc3RBbmltYXRpb25GcmFtZShvbkZyYW1lKTsKKyAgICAgICAg
fQorICAgICAgfQorCisgICAgICAvLyBTY2hlZHVsZSB0d28gYW5pbWF0aW9uIGZyYW1lIGFuZCBj
YW5jZWwgb25lIGR1cmluZyBvbiBhbmltYXRpb24gZnJhbWUuCisgICAgICBzZXNzaW9uLnJlcXVl
c3RBbmltYXRpb25GcmFtZShvbkZyYW1lKTsKKyAgICAgIGhhbmRsZSA9IHNlc3Npb24ucmVxdWVz
dEFuaW1hdGlvbkZyYW1lKAorICAgICAgICAodGltZSwgdnJGcmFtZSkgPT4geyByZWplY3QoIkNh
bmNlbGxlZCBmcmFtZSBjYWxsYmFjayB3YXMgY2FsbGVkIik7IH0pOworICAgIH0pOworCisgICAg
eHJfc2Vzc2lvbl9wcm9taXNlX3Rlc3QoaW1tZXJzaXZlVGVzdE5hbWUsIHRlc3RGdW5jdGlvbiwK
KyAgICAgIGZha2VEZXZpY2VJbml0UGFyYW1zLCAnaW1tZXJzaXZlLXZyJyk7CisgICAgeHJfc2Vz
c2lvbl9wcm9taXNlX3Rlc3Qobm9uSW1tZXJzaXZlVGVzdE5hbWUsIHRlc3RGdW5jdGlvbiwKKyAg
ICAgIGZha2VEZXZpY2VJbml0UGFyYW1zLCAnaW5saW5lJyk7CisKKyAgPC9zY3JpcHQ+Cis8L2Jv
ZHk+CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd2VieHIveHJTZXNzaW9uX2NhbmNlbEFuaW1hdGlvbkZyYW1lX2ludmFsaWRoYW5kbGUu
aHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2VieHIveHJTZXNzaW9uX2NhbmNlbEFuaW1hdGlvbkZyYW1lX2ludmFsaWRoYW5kbGUuaHR0cHMu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi41MWE2MzliOTU2YzhmNjRjM2YyMTlkZjRmYmRlMmU5OTE2MGU5OTU5
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93ZWJ4ci94clNlc3Npb25fY2FuY2VsQW5pbWF0aW9uRnJhbWVfaW52YWxpZGhhbmRs
ZS5odHRwcy5odG1sCkBAIC0wLDAgKzEsNDMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGJvZHk+Cisg
IDxzY3JpcHQgc3JjPS9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanM+PC9zY3JpcHQ+CisgIDxzY3Jp
cHQgc3JjPS9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanM+PC9zY3JpcHQ+CisgIDxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvd2VieHJfdXRpbC5qcyI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvd2VieHJfdGVzdF9jb25zdGFudHMuanMiPjwvc2NyaXB0PgorICA8Y2FudmFz
PjwvY2FudmFzPgorICA8c2NyaXB0PgorICAgIGxldCBpbW1lcnNpdmVUZXN0TmFtZSA9ICJYUlNl
c3Npb24gY2FuY2VsQW5pbWF0aW9uRnJhbWUgZG9lcyBub3QgaGF2ZSB1bmV4cGVjdGVkICIKKyAg
ICAgICsgImJlaGF2aW9yIHdoZW4gZ2l2ZW4gaW52YWxpZCBoYW5kbGVzIG9uIGltbWVyc2l2ZSB0
ZXN0U2Vzc2lvbiI7CisgICAgbGV0IG5vbkltbWVyc2l2ZVRlc3ROYW1lID0gIlhSU2Vzc2lvbiBj
YW5jZWxBbmltYXRpb25GcmFtZSBkb2VzIG5vdCBoYXZlIHVuZXhwZWN0ZWQgIgorICAgICAgKyAi
YmVoYXZpb3Igd2hlbiBnaXZlbiBpbnZhbGlkIGhhbmRsZXMgb24gbm9uLWltbWVyc2l2ZSB0ZXN0
U2Vzc2lvbiI7CisKKyAgICBsZXQgZmFrZURldmljZUluaXRQYXJhbXMgPSBUUkFDS0VEX0lNTUVS
U0lWRV9ERVZJQ0U7CisKKyAgICBsZXQgdGVzdEZ1bmN0aW9uID0gKHRlc3RTZXNzaW9uKSA9PiBu
ZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4geworICAgICAgbGV0IGNvdW50ZXIgPSAwOworCisgICAg
ICBmdW5jdGlvbiBvbkZyYW1lKHRpbWUsIHZyRnJhbWUpIHsKKyAgICAgICAgaWYoY291bnRlciA8
PSAxMCkgeworICAgICAgICAgIHRlc3RTZXNzaW9uLnJlcXVlc3RBbmltYXRpb25GcmFtZShvbkZy
YW1lKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICByZXNvbHZlKCk7CisgICAgICAgIH0K
KyAgICAgICAgY291bnRlcisrOworICAgICAgfQorCisgICAgICBsZXQgaGFuZGxlID0gdGVzdFNl
c3Npb24ucmVxdWVzdEFuaW1hdGlvbkZyYW1lKG9uRnJhbWUpOworICAgICAgdGVzdFNlc3Npb24u
Y2FuY2VsQW5pbWF0aW9uRnJhbWUoMCk7CisgICAgICB0ZXN0U2Vzc2lvbi5jYW5jZWxBbmltYXRp
b25GcmFtZSgtMSk7CisgICAgICB0ZXN0U2Vzc2lvbi5jYW5jZWxBbmltYXRpb25GcmFtZShoYW5k
bGUgKyAxKTsKKyAgICAgIHRlc3RTZXNzaW9uLmNhbmNlbEFuaW1hdGlvbkZyYW1lKGhhbmRsZSAt
IDEpOworICAgICAgdGVzdFNlc3Npb24uY2FuY2VsQW5pbWF0aW9uRnJhbWUoMC41KTsKKyAgICAg
IHRlc3RTZXNzaW9uLmNhbmNlbEFuaW1hdGlvbkZyYW1lKG51bGwpOworICAgIH0pOworCisgICAg
eHJfc2Vzc2lvbl9wcm9taXNlX3Rlc3QoCisgICAgICBpbW1lcnNpdmVUZXN0TmFtZSwgdGVzdEZ1
bmN0aW9uLCBmYWtlRGV2aWNlSW5pdFBhcmFtcywgJ2ltbWVyc2l2ZS12cicpOworICAgIHhyX3Nl
c3Npb25fcHJvbWlzZV90ZXN0KAorICAgICAgbm9uSW1tZXJzaXZlVGVzdE5hbWUsIHRlc3RGdW5j
dGlvbiwgZmFrZURldmljZUluaXRQYXJhbXMsICdpbmxpbmUnKTsKKworICA8L3NjcmlwdD4KKzwv
Ym9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd2VieHIveHJTZXNzaW9uX2VuZC5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clNlc3Npb25fZW5kLmh0dHBzLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZThjMDc4ZWFkOWI3ZWFmNGVkNDMxMmYxNDk0NWRkZmEwNzk5NDYxNAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd2VieHIveHJTZXNzaW9uX2VuZC5odHRwcy5odG1sCkBAIC0wLDAgKzEsNDEgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGJvZHk+CisgIDxzY3JpcHQgc3JjPS9yZXNvdXJjZXMvdGVzdGhhcm5lc3Mu
anM+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPS9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQu
anM+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvd2VieHJfdXRpbC5qcyI+PC9z
Y3JpcHQ+CisgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvd2VieHJfdGVzdF9jb25zdGFudHMuanMi
Pjwvc2NyaXB0PgorICA8Y2FudmFzPjwvY2FudmFzPgorCisgIDxzY3JpcHQ+CisgICAgY29uc3Qg
aW1tZXJzaXZldGVzdE5hbWUgPSAiZW5kIGV2ZW50IGZpcmVzIHdoZW4gaW1tZXJzaXZlIHNlc3Np
b24gZW5kcyI7CisgICAgY29uc3Qgbm9uaW1tZXJzaXZlVGVzdE5hbWUgPSAiZW5kIGV2ZW50IGZp
cmVzIHdoZW4gbm9uLWltbWVyc2l2ZSBzZXNzaW9uIGVuZHMiOworICAgIGxldCB3YXRjaGVyRG9u
ZSA9IG5ldyBFdmVudCgid2F0Y2hlcmRvbmUiKTsKKyAgICBjb25zdCBmYWtlRGV2aWNlSW5pdFBh
cmFtcyA9IFRSQUNLRURfSU1NRVJTSVZFX0RFVklDRTsKKworICAgIGxldCB0ZXN0RnVuY3Rpb24g
PSBmdW5jdGlvbihzZXNzaW9uLCB0ZXN0RGV2aWNlQ29udHJvbGxlciwgdCkgeworICAgICAgbGV0
IGV2ZW50V2F0Y2hlciA9IG5ldyBFdmVudFdhdGNoZXIodCwgc2Vzc2lvbiwgWyJlbmQiLCAid2F0
Y2hlcmRvbmUiXSk7CisgICAgICBsZXQgZXZlbnRQcm9taXNlID0gZXZlbnRXYXRjaGVyLndhaXRf
Zm9yKFsiZW5kIiwgIndhdGNoZXJkb25lIl0pOworCisgICAgICBmdW5jdGlvbiBvblNlc3Npb25F
bmQoZXZlbnQpIHsKKyAgICAgICAgdC5zdGVwKCAoKSA9PiB7CisgICAgICAgICAgYXNzZXJ0X2Vx
dWFscyhldmVudC5zZXNzaW9uLCBzZXNzaW9uKTsKKworICAgICAgICAgIGxldCBldmVudFNlc3Np
b24gPSBldmVudC5zZXNzaW9uOworICAgICAgICAgIGFzc2VydF9lcXVhbHMoZXZlbnRTZXNzaW9u
LCBldmVudC5zZXNzaW9uLAorICAgICAgICAgICAgIlhSU2Vzc2lvbkV2ZW50LnNlc3Npb24gcmV0
dXJucyB0aGUgc2FtZSBvYmplY3QuIik7CisKKyAgICAgICAgICBzZXNzaW9uLmRpc3BhdGNoRXZl
bnQod2F0Y2hlckRvbmUpOworICAgICAgICB9KTsKKyAgICAgIH0KKyAgICAgIHNlc3Npb24uYWRk
RXZlbnRMaXN0ZW5lcigiZW5kIiwgb25TZXNzaW9uRW5kLCBmYWxzZSk7CisgICAgICBzZXNzaW9u
LmVuZCgpOworCisgICAgICByZXR1cm4gZXZlbnRQcm9taXNlOworICAgIH07CisKKyAgICB4cl9z
ZXNzaW9uX3Byb21pc2VfdGVzdChpbW1lcnNpdmV0ZXN0TmFtZSwgdGVzdEZ1bmN0aW9uLAorICAg
ICAgZmFrZURldmljZUluaXRQYXJhbXMsICdpbW1lcnNpdmUtdnInKTsKKyAgICB4cl9zZXNzaW9u
X3Byb21pc2VfdGVzdChub25pbW1lcnNpdmVUZXN0TmFtZSwgdGVzdEZ1bmN0aW9uLAorICAgICAg
ZmFrZURldmljZUluaXRQYXJhbXMsICdpbmxpbmUnKTsKKyAgPC9zY3JpcHQ+Cis8L2JvZHk+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dl
YnhyL3hyU2Vzc2lvbl9mZWF0dXJlc19kZXZpY2VTdXBwb3J0Lmh0dHBzLmh0bWwgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl9mZWF0
dXJlc19kZXZpY2VTdXBwb3J0Lmh0dHBzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmUwNjUyMzIyNDRkOWJk
NDNhMmQ0YzM1Nzc0Mjk2OWQxNGQwZjhmZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJTZXNzaW9uX2ZlYXR1cmVz
X2RldmljZVN1cHBvcnQuaHR0cHMuaHRtbApAQCAtMCwwICsxLDYwIEBACis8IURPQ1RZUEUgaHRt
bD4KKzxib2R5PgorPHNjcmlwdCBzcmM9L3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcz48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPS9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanM+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3dlYnhyX3V0aWwuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9InJlc291cmNlcy93ZWJ4cl90ZXN0X2NvbnN0YW50cy5qcyI+PC9zY3JpcHQ+Cis8Y2Fu
dmFzPjwvY2FudmFzPgorPHNjcmlwdD4KKworICBsZXQgdGVzdE5hbWUgPQorICAgICJJbW1lcnNp
dmUgWFJTZXNzaW9uIHJlcXVlc3RzIHdpdGggbm8gc3VwcG9ydGVkIGRldmljZSBzaG91bGQgcmVq
ZWN0IjsKKworICBsZXQgZmFrZURldmljZUluaXRQYXJhbXMgPSB7CisgICAgc3VwcG9ydHNJbW1l
cnNpdmU6IHRydWUsCisgICAgc3VwcG9ydGVkTW9kZXM6IFsiaW5saW5lIiwgImltbWVyc2l2ZS12
ciJdLAorICAgIHZpZXdzOiBWQUxJRF9WSUVXUywKKyAgICB2aWV3ZXJPcmlnaW46IElERU5USVRZ
X1RSQU5TRk9STSwKKyAgICBzdXBwb3J0ZWRGZWF0dXJlczogWworICAgICJ2aWV3ZXIiLAorICAg
ICJsb2NhbCIsCisgICAgImxvY2FsLWZsb29yIl0KKyAgfTsKKworCisgIHhyX3Byb21pc2VfdGVz
dCh0ZXN0TmFtZSwKKyAgICAodCkgPT4geworICAgIGZ1bmN0aW9uIHNlc3Npb25fcmVzb2x2ZXMo
c2Vzc2lvbk1vZGUsIHNlc3Npb25Jbml0KSB7CisgICAgICByZXR1cm4gbmF2aWdhdG9yLnhyLnJl
cXVlc3RTZXNzaW9uKHNlc3Npb25Nb2RlLCBzZXNzaW9uSW5pdCkKKyAgICAgICAgLnRoZW4oKHNl
c3Npb24pID0+IHsKKyAgICAgICAgICByZXR1cm4gc2Vzc2lvbi5lbmQoKTsKKyAgICAgICAgfSk7
CisgICAgfQorCisgICAgcmV0dXJuIG5hdmlnYXRvci54ci50ZXN0LnNpbXVsYXRlRGV2aWNlQ29u
bmVjdGlvbihmYWtlRGV2aWNlSW5pdFBhcmFtcykKKyAgICAgIC50aGVuKChjb250cm9sbGVyKSA9
PgorICAgICAgICBwcm9taXNlX3NpbXVsYXRlX3VzZXJfYWN0aXZhdGlvbigoKSA9PiB7CisgICAg
ICAgICAgLy8gQXR0ZW1wdGluZyB0byByZXF1ZXN0IHJlcXVpcmVkIGZlYXR1cmVzIHRoYXQgYXJl
bid0IHN1cHBvcnRlZCBieQorICAgICAgICAgIC8vIHRoZSBkZXZpY2Ugc2hvdWxkIHJlamVjdC4K
KworICAgICAgICAgIHJldHVybiBwcm9taXNlX3JlamVjdHNfZG9tKHQsICJOb3RTdXBwb3J0ZWRF
cnJvciIsCisgICAgICAgICAgICBuYXZpZ2F0b3IueHIucmVxdWVzdFNlc3Npb24oImltbWVyc2l2
ZS12ciIsIHsKKyAgICAgICAgICAgICAgcmVxdWlyZWRGZWF0dXJlczogWydib3VuZGVkLWZsb29y
J10KKyAgICAgICAgICAgIH0pKQorICAgICAgICB9KS50aGVuKCgpID0+IHByb21pc2Vfc2ltdWxh
dGVfdXNlcl9hY3RpdmF0aW9uKCgpID0+IHsKKyAgICAgICAgICAgIC8vIEF0dGVtcHRpbmcgdG8g
cmVxdWVzdCB3aXRoIGFuIHVuc3VwcG9ydGVkIGZlYXR1cmUgYXMgb3B0aW9uYWwKKyAgICAgICAg
ICAgIC8vIHNob3VsZCBzdWNjZWVkCisgICAgICAgICAgICByZXR1cm4gc2Vzc2lvbl9yZXNvbHZl
cygiaW1tZXJzaXZlLXZyIiwgeworICAgICAgICAgICAgICBvcHRpb25hbEZlYXR1cmVzOiBbJ2Jv
dW5kZWQtZmxvb3InXQorICAgICAgICAgICAgfSk7CisgICAgICAgIH0pKS50aGVuKCgpID0+IHBy
b21pc2Vfc2ltdWxhdGVfdXNlcl9hY3RpdmF0aW9uKCgpID0+IHsKKyAgICAgICAgICAvLyBBdHRl
bXB0aW5nIHRvIHJlcXVlc3Qgd2l0aCBzdXBwb3J0ZWQgZmVhdHVyZXMgb25seSBzaG91bGQgc3Vj
Y2VlZC4KKyAgICAgICAgICByZXR1cm4gc2Vzc2lvbl9yZXNvbHZlcygiaW1tZXJzaXZlLXZyIiwg
eworICAgICAgICAgICAgcmVxdWlyZWRGZWF0dXJlczogWydsb2NhbCcsICdsb2NhbC1mbG9vcidd
CisgICAgICAgICAgfSkKKyAgICAgICAgfSkpCisgICAgICApOworICB9KTsKKworPC9zY3JpcHQ+
Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl9pbnB1dF9ldmVudHNfZW5kLmh0dHBzLmh0bWwgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lv
bl9pbnB1dF9ldmVudHNfZW5kLmh0dHBzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTkzMmFhZDJmYWQ3OGNl
YjI0NDk5Mjg3NzNkYTNlY2ZlMjM3YjhlNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJTZXNzaW9uX2lucHV0X2V2
ZW50c19lbmQuaHR0cHMuaHRtbApAQCAtMCwwICsxLDgwIEBACis8IURPQ1RZUEUgaHRtbD4KKzxz
Y3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvd2VieHJfdXRpbC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL3dlYnhyX3Rlc3RfY29uc3RhbnRzLmpzIj48L3NjcmlwdD4KKzxjYW52YXMgaWQ9Indl
YmdsLWNhbnZhcyI+PC9jYW52YXM+CisKKzxzY3JpcHQ+CitsZXQgdGVzdE5hbWUgPSAiQ2FsbGlu
ZyBlbmQgZHVyaW5nIGFuIGlucHV0IGNhbGxiYWNrIHN0b3BzIHByb2Nlc3NpbmcgYXQgdGhlIHJp
Z2h0IHRpbWUiOworCitsZXQgZmFrZURldmljZUluaXRQYXJhbXMgPSBUUkFDS0VEX0lNTUVSU0lW
RV9ERVZJQ0U7CisKK2xldCBnbCA9IG51bGw7CisKK2Z1bmN0aW9uIHJlcXVlc3RJbW1lcnNpdmVT
ZXNzaW9uKCkgeworICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gewor
ICAgIG5hdmlnYXRvci54ci50ZXN0LnNpbXVsYXRlVXNlckFjdGl2YXRpb24oKCkgPT4geworICAg
ICAgbmF2aWdhdG9yLnhyLnJlcXVlc3RTZXNzaW9uKCdpbW1lcnNpdmUtdnInKS50aGVuKChzZXNz
aW9uKSA9PiB7CisgICAgICAgIHNlc3Npb24udXBkYXRlUmVuZGVyU3RhdGUoeworICAgICAgICAg
IGJhc2VMYXllcjogbmV3IFhSV2ViR0xMYXllcihzZXNzaW9uLCBnbCkKKyAgICAgICAgfSk7CisK
KyAgICAgICAgcmVzb2x2ZShzZXNzaW9uKTsKKyAgICAgIH0sIChlcnIpID0+IHsKKyAgICAgICAg
cmVqZWN0KGVycik7CisgICAgICB9KTsKKyAgICB9KTsKKyAgfSk7Cit9CisKK2xldCB0ZXN0RnVu
Y3Rpb24gPSBmdW5jdGlvbihzZXNzaW9uLCBmYWtlRGV2aWNlQ29udHJvbGxlciwgdCwgc2Vzc2lv
bk9iamVjdHMpIHsKKyAgZ2wgPSBzZXNzaW9uT2JqZWN0cy5nbDsKKyAgLy8gaGVscGVyIG1ldGhv
ZCB0byBzZW5kIGEgY2xpY2sgYW5kIHRoZW4gcmVxdWVzdCBhIGR1bW15IGFuaW1hdGlvbiBmcmFt
ZSB0bworICAvLyBlbnN1cmUgdGhhdCB0aGUgY2xpY2sgcHJvcGFnYXRlcy4gIFdlJ3JlIGRvaW5n
IGV2ZXJ5dGhpbmcgaW4gdGhlc2UgdGVzdHMKKyAgLy8gZnJvbSBldmVudCB3YXRjaGVycywgd2Ug
anVzdCBuZWVkIHRvIHRyaWdnZXIgdGhlIGFkZC9jbGljayB0byBtYWtlIHRoZQorICAvLyBldmVu
dCBsaXN0ZW5lcnMgY2FsbGJhY2suCisgIGZ1bmN0aW9uIHNlbmRDbGljayhzZXNzaW9uKSB7Cisg
ICAgbGV0IGlucHV0X3NvdXJjZSA9IGZha2VEZXZpY2VDb250cm9sbGVyLnNpbXVsYXRlSW5wdXRT
b3VyY2VDb25uZWN0aW9uKHsKKyAgICAgIGhhbmRlZG5lc3M6ICJyaWdodCIsCisgICAgICB0YXJn
ZXRSYXlNb2RlOiAidHJhY2tlZC1wb2ludGVyIiwKKyAgICAgIHBvaW50ZXJPcmlnaW46IFZBTElE
X1BPSU5URVJfVFJBTlNGT1JNLAorICAgICAgcHJvZmlsZXM6IFtdLAorICAgICAgc2VsZWN0aW9u
Q2xpY2tlZDogdHJ1ZQorICAgIH0pOworICAgIHNlc3Npb24ucmVxdWVzdEFuaW1hdGlvbkZyYW1l
KCgpID0+IHt9KTsKKyAgfQorCisgIGZ1bmN0aW9uIHNlc3Npb25FbmRUZXN0KGVuZEV2ZW50LCBl
dmVudE9yZGVyKSB7CisgICAgcmV0dXJuIHJlcXVlc3RJbW1lcnNpdmVTZXNzaW9uKCkudGhlbigo
c2Vzc2lvbikgPT4geworICAgICAgbGV0IGV2ZW50V2F0Y2hlciA9IG5ldyBFdmVudFdhdGNoZXIo
dCwgc2Vzc2lvbiwKKyAgICAgICAgWyJpbnB1dHNvdXJjZXNjaGFuZ2UiLCAic2VsZWN0c3RhcnQi
LCAic2VsZWN0IiwgInNlbGVjdGVuZCIsICJlbmQiXSk7CisgICAgICBsZXQgZXZlbnRQcm9taXNl
ID0gZXZlbnRXYXRjaGVyLndhaXRfZm9yKGV2ZW50T3JkZXIpOworCisgICAgICBzZXNzaW9uLmFk
ZEV2ZW50TGlzdGVuZXIoZW5kRXZlbnQsICgpPT4geworICAgICAgICBzZXNzaW9uLmVuZCgpOwor
ICAgICAgfSwgZmFsc2UpOworCisgICAgICBzZW5kQ2xpY2soc2Vzc2lvbik7CisgICAgICByZXR1
cm4gZXZlbnRQcm9taXNlOworICAgIH0pOworICB9CisKKyAgLy8gRW5kIG91ciBmaXJzdCBzZXNz
aW9uLCBqdXN0IGZvciBzaW1wbGljaXR5LCB0aGVuIG1ha2UgZW5kIHNlc3Npb24gY2FsbHMKKyAg
Ly8gZHVyaW5nIGVhY2ggb2Ygb3VyIGlucHV0IGV2ZW50cywgYW5kIGVuc3VyZSB0aGF0IGV2ZW50
cyBzdG9wIHByb2Nlc3NpbmcKKyAgLy8gYW5kIG5vIGNyYXNoZXMgb2NjdXIgZnJvbSBjYWxsaW5n
IGVuZCBpbnNpZGUgdGhlIGV2ZW50IGNhbGxiYWNrcy4KKyAgcmV0dXJuIHNlc3Npb24uZW5kKCku
dGhlbigoKSA9PiB7CisgICAgcmV0dXJuIHNlc3Npb25FbmRUZXN0KCJpbnB1dHNvdXJjZXNjaGFu
Z2UiLCBbImlucHV0c291cmNlc2NoYW5nZSIsICJlbmQiXSk7CisgIH0pLnRoZW4oKCkgPT4gewor
ICAgIHJldHVybiBzZXNzaW9uRW5kVGVzdCgic2VsZWN0c3RhcnQiLCBbImlucHV0c291cmNlc2No
YW5nZSIsICJzZWxlY3RzdGFydCIsICJzZWxlY3RlbmQiLCAiZW5kIl0pOworICB9KS50aGVuKCgp
ID0+IHsKKyAgICByZXR1cm4gc2Vzc2lvbkVuZFRlc3QoInNlbGVjdCIsIFsiaW5wdXRzb3VyY2Vz
Y2hhbmdlIiwgInNlbGVjdHN0YXJ0IiwgInNlbGVjdCIsICJzZWxlY3RlbmQiLCAiZW5kIl0pOwor
ICB9KS50aGVuKCgpID0+IHsKKyAgICByZXR1cm4gc2Vzc2lvbkVuZFRlc3QoInNlbGVjdGVuZCIs
IFsiaW5wdXRzb3VyY2VzY2hhbmdlIiwgInNlbGVjdHN0YXJ0IiwgInNlbGVjdCIsICJzZWxlY3Rl
bmQiLCAiZW5kIl0pOworICB9KTsKK307CisKK3hyX3Nlc3Npb25fcHJvbWlzZV90ZXN0KAorICB0
ZXN0TmFtZSwgdGVzdEZ1bmN0aW9uLCBmYWtlRGV2aWNlSW5pdFBhcmFtcywgJ2ltbWVyc2l2ZS12
cicpOworCis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJTZXNzaW9uX3ByZXZlbnRfbXVsdGlwbGVfZXhjbHVz
aXZlLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dlYnhyL3hyU2Vzc2lvbl9wcmV2ZW50X211bHRpcGxlX2V4Y2x1c2l2ZS5odHRwcy5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjYwMmJiYzRjYjlhNDMwOTBhYjJiYzg1NDkzYmIyMjg4ODUyODhjYTEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dlYnhyL3hyU2Vzc2lvbl9wcmV2ZW50X211bHRpcGxlX2V4Y2x1c2l2ZS5odHRwcy5odG1s
CkBAIC0wLDAgKzEsNDMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGJvZHk+CisgIDxzY3JpcHQgc3Jj
PS9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanM+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPS9yZXNv
dXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanM+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvd2VieHJfdXRpbC5qcyI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
d2VieHJfdGVzdF9jb25zdGFudHMuanMiPjwvc2NyaXB0PgorICA8Y2FudmFzPjwvY2FudmFzPgor
CisgIDxzY3JpcHQ+CisgICAgeHJfcHJvbWlzZV90ZXN0KAorICAgICAgIlRlc3QgcHJldmVudGlv
biBvZiBtdWx0aXBsZSBzaW11bHRhbmVvdXMgaW1tZXJzaXZlIHNlc3Npb25zIiwKKyAgICAgICh0
KSA9PiB7CisgICAgICByZXR1cm4gbmF2aWdhdG9yLnhyLnRlc3Quc2ltdWxhdGVEZXZpY2VDb25u
ZWN0aW9uKFRSQUNLRURfSU1NRVJTSVZFX0RFVklDRSkKKyAgICAgICAgLnRoZW4oIChjb250cm9s
bGVyKSA9PiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4geworICAgICAgICAgIG5hdmlnYXRvci54
ci50ZXN0LnNpbXVsYXRlVXNlckFjdGl2YXRpb24oICgpID0+IHsKKyAgICAgICAgICAgIHJlc29s
dmUobmF2aWdhdG9yLnhyLnJlcXVlc3RTZXNzaW9uKCdpbW1lcnNpdmUtdnInKQorICAgICAgICAg
ICAgICAudGhlbiggKHNlc3Npb24pID0+IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7CisgICAg
ICAgICAgICAgICAgbmF2aWdhdG9yLnhyLnRlc3Quc2ltdWxhdGVVc2VyQWN0aXZhdGlvbiggKCkg
PT4geworICAgICAgICAgICAgICAgICAgLy8gUmVxdWVzdGluZyBhIHNlY29uZCBpbW1lcnNpdmUg
c2Vzc2lvbiB3aGVuIGFub3RoZXIgaW1tZXJzaXZlCisgICAgICAgICAgICAgICAgICAvLyBzZXNz
aW9uIGlzIGFjdGl2ZSBzaG91bGQgZmFpbC4gSW1tZXJzaXZlIHNlc3Npb25zCisgICAgICAgICAg
ICAgICAgICAvLyBzaG91bGQgdGFrZSB1cCB0aGUgdXNlcnMgZW50aXJlIHZpZXcsIGFuZCB0aGVy
ZWZvcmUgaXQgc2hvdWxkCisgICAgICAgICAgICAgICAgICAvLyBiZSBpbXBvc3NpYmxlIGZvciBh
IHVzZXIgdG8gYmUgZW5nYWdlZCB3aXRoIG1vcmUgdGhhbiBvbmUuCisgICAgICAgICAgICAgICAg
ICByZXNvbHZlKHByb21pc2VfcmVqZWN0c19kb20oCisgICAgICAgICAgICAgICAgICAgIHQsCisg
ICAgICAgICAgICAgICAgICAgICJJbnZhbGlkU3RhdGVFcnJvciIsCisgICAgICAgICAgICAgICAg
ICAgIG5hdmlnYXRvci54ci5yZXF1ZXN0U2Vzc2lvbignaW1tZXJzaXZlLXZyJykKKyAgICAgICAg
ICAgICAgICAgICkudGhlbiggKCkgPT4geworICAgICAgICAgICAgICAgICAgICAgIC8vIEVuZCB0
aGUgaW1tZXJzaXZlIHNlc3Npb24gYW5kIHRyeSBhZ2Fpbi4gTm93IHRoZSBpbW1lcnNpdmUKKyAg
ICAgICAgICAgICAgICAgICAgICAvLyBzZXNzaW9uIGNyZWF0aW9uIHNob3VsZCBzdWNjZWVkLgor
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZXNzaW9uLmVuZCgpLnRoZW4oICgpID0+IG5l
dyBQcm9taXNlKChyZXNvbHZlKSA9PiB7CisgICAgICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0
b3IueHIudGVzdC5zaW11bGF0ZVVzZXJBY3RpdmF0aW9uKCAoKSA9PiB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlc29sdmUobmF2aWdhdG9yLnhyLnJlcXVlc3RTZXNzaW9uKCdpbW1lcnNp
dmUtdnInKSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICAg
ICAgICB9KSk7CisgICAgICAgICAgICAgICAgICAgIH0pKTsKKyAgICAgICAgICAgICAgICB9KTsK
KyAgICAgICAgICAgIH0pKSk7CisgICAgICAgICAgfSk7CisgICAgICAgIH0pKTsKKyAgICB9KTsK
KworICA8L3NjcmlwdD4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJTZXNzaW9uX3JlcXVlc3RBbmltYXRpb25G
cmFtZV9jYWxsYmFja19jYWxscy5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clNlc3Npb25fcmVxdWVzdEFuaW1hdGlvbkZyYW1l
X2NhbGxiYWNrX2NhbGxzLmh0dHBzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTgyMzFjOGU5ZTcwZWE3M2Ew
YjYzNzg1YmIxMDgzNjI1MTJmMzZlNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJTZXNzaW9uX3JlcXVlc3RBbmlt
YXRpb25GcmFtZV9jYWxsYmFja19jYWxscy5odHRwcy5odG1sCkBAIC0wLDAgKzEsMzMgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGJvZHk+CisgIDxzY3JpcHQgc3JjPS9yZXNvdXJjZXMvdGVzdGhhcm5l
c3MuanM+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPS9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBv
cnQuanM+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvd2VieHJfdXRpbC5qcyI+
PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvd2VieHJfdGVzdF9jb25zdGFudHMu
anMiPjwvc2NyaXB0PgorICA8Y2FudmFzPjwvY2FudmFzPgorCisgIDxzY3JpcHQ+CisgICAgbGV0
IGltbWVyc2l2ZVRlc3ROYW1lID0gIlhSU2Vzc2lvbiByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgY2Fs
bHMgdGhlICIgKworICAgICAgInByb3ZpZGVkIGNhbGxiYWNrIGZvciBhbiBpbW1lcnNpdmUgc2Vz
c2lvbiI7CisgICAgbGV0IG5vbkltbWVyc2l2ZVRlc3ROYW1lID0gIlhSU2Vzc2lvbiByZXF1ZXN0
QW5pbWF0aW9uRnJhbWUgY2FsbHMgdGhlICIgKworICAgICAgInByb3ZpZGVkIGNhbGxiYWNrIGEg
bm9uLWltbWVyc2l2ZSBzZXNzaW9uIjsKKworICAgIGxldCBmYWtlRGV2aWNlSW5pdFBhcmFtcyA9
IFRSQUNLRURfSU1NRVJTSVZFX0RFVklDRTsKKworICAgIGxldCB0ZXN0RnVuY3Rpb24gPSAodGVz
dFNlc3Npb24pID0+IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7CisgICAgICBmdW5jdGlvbiBv
bkZyYW1lKHRpbWUsIHhyRnJhbWUpIHsKKyAgICAgICAgYXNzZXJ0X3RydWUoeHJGcmFtZSBpbnN0
YW5jZW9mIFhSRnJhbWUpOworICAgICAgICAvLyBUZXN0IGRvZXMgbm90IGNvbXBsZXRlIHVudGls
IHRoZSByZXR1cm5lZCBwcm9taXNlIHJlc29sdmVzLgorICAgICAgICByZXNvbHZlKCk7CisgICAg
ICB9CisKKyAgICAgIHRlc3RTZXNzaW9uLnJlcXVlc3RBbmltYXRpb25GcmFtZShvbkZyYW1lKTsK
KyAgICB9KTsKKworICAgIHhyX3Nlc3Npb25fcHJvbWlzZV90ZXN0KGltbWVyc2l2ZVRlc3ROYW1l
LCB0ZXN0RnVuY3Rpb24sCisgICAgICBmYWtlRGV2aWNlSW5pdFBhcmFtcywgJ2ltbWVyc2l2ZS12
cicpOworICAgIHhyX3Nlc3Npb25fcHJvbWlzZV90ZXN0KG5vbkltbWVyc2l2ZVRlc3ROYW1lLCB0
ZXN0RnVuY3Rpb24sCisgICAgICBmYWtlRGV2aWNlSW5pdFBhcmFtcywgJ2lubGluZScpOworCisg
IDwvc2NyaXB0PgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clNlc3Npb25fcmVxdWVzdEFuaW1hdGlvbkZyYW1l
X2RhdGFfdmFsaWQuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd2VieHIveHJTZXNzaW9uX3JlcXVlc3RBbmltYXRpb25GcmFtZV9kYXRhX3Zh
bGlkLmh0dHBzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzYwZmYzZGQ2NTdmOWM1NmQwMWY2ZDk1Mjg3OWJi
MjBkZDlhMGU0NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJTZXNzaW9uX3JlcXVlc3RBbmltYXRpb25GcmFtZV9k
YXRhX3ZhbGlkLmh0dHBzLmh0bWwKQEAgLTAsMCArMSw1OCBAQAorPCFET0NUWVBFIGh0bWw+Cis8
Ym9keT4KKyAgPHNjcmlwdCBzcmM9L3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcz48L3NjcmlwdD4K
KyAgPHNjcmlwdCBzcmM9L3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcz48L3NjcmlwdD4K
KyAgPHNjcmlwdCBzcmM9InJlc291cmNlcy93ZWJ4cl91dGlsLmpzIj48L3NjcmlwdD4KKyAgPHNj
cmlwdCBzcmM9InJlc291cmNlcy93ZWJ4cl90ZXN0X2NvbnN0YW50cy5qcyI+PC9zY3JpcHQ+Cisg
IDxjYW52YXM+PC9jYW52YXM+CisKKyAgPHNjcmlwdD4KKyAgICBjb25zdCB0ZXN0TmFtZSA9ICJS
ZXF1ZXN0QW5pbWF0aW9uRnJhbWUgcmVzb2x2ZXMgd2l0aCBnb29kIGRhdGEiOworCisgICAgY29u
c3QgZmFrZURldmljZUluaXRPcHRpb25zID0gVFJBQ0tFRF9JTU1FUlNJVkVfREVWSUNFOworCisg
ICAgbGV0IHRlc3RTZXNzaW9uOworCisgICAgZnVuY3Rpb24gY2hlY2tWaWV3KHZpZXcpIHsKKyAg
ICAgIGFzc2VydF9ub3RfZXF1YWxzKHZpZXcsIG51bGwpOworICAgICAgYXNzZXJ0X25vdF9lcXVh
bHModmlldy50cmFuc2Zvcm0sIG51bGwpOworCisgICAgICBsZXQgaW52X3ZpZXdfdHJhbnNmb3Jt
ID0gdmlldy50cmFuc2Zvcm0uaW52ZXJzZTsKKyAgICAgIGFzc2VydF9ub3RfZXF1YWxzKGludl92
aWV3X3RyYW5zZm9ybSwgbnVsbCk7CisgICAgICBhc3NlcnRfbm90X2VxdWFscyhpbnZfdmlld190
cmFuc2Zvcm0ubWF0cml4LCBudWxsKTsKKyAgICAgIGFzc2VydF9lcXVhbHMoaW52X3ZpZXdfdHJh
bnNmb3JtLm1hdHJpeC5sZW5ndGgsIDE2KTsKKyAgICB9CisKKyAgICBsZXQgdGVzdEZ1bmN0aW9u
ID0gZnVuY3Rpb24oc2Vzc2lvbiwgdGVzdERldmljZUNvbnRyb2xsZXIpIHsKKyAgICAgIHRlc3RT
ZXNzaW9uID0gc2Vzc2lvbjsKKyAgICAgIHJldHVybiBzZXNzaW9uLnJlcXVlc3RSZWZlcmVuY2VT
cGFjZSgnbG9jYWwnKQorICAgICAgICAudGhlbigocmVmZXJlbmNlU3BhY2UpID0+IG5ldyBQcm9t
aXNlKChyZXNvbHZlKSA9PiB7CisKKyAgICAgICAgICBmdW5jdGlvbiBvbkZyYW1lKHRpbWUsIHhy
RnJhbWUpIHsKKyAgICAgICAgICAgIGFzc2VydF90cnVlKHhyRnJhbWUgaW5zdGFuY2VvZiBYUkZy
YW1lKTsKKworICAgICAgICAgICAgbGV0IHZpZXdlclBvc2UgPSB4ckZyYW1lLmdldFZpZXdlclBv
c2UocmVmZXJlbmNlU3BhY2UpOworCisgICAgICAgICAgICBhc3NlcnRfbm90X2VxdWFscyh2aWV3
ZXJQb3NlLCBudWxsKTsKKyAgICAgICAgICAgIGZvcihsZXQgaSA9IDA7IGkgPCBJREVOVElUWV9N
QVRSSVgubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyh2aWV3ZXJQ
b3NlLnRyYW5zZm9ybS5tYXRyaXhbaV0sIElERU5USVRZX01BVFJJWFtpXSk7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIGFzc2VydF9ub3RfZXF1YWxzKHZpZXdlclBvc2Uudmlld3MsIG51
bGwpOworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyh2aWV3ZXJQb3NlLnZpZXdzLmxlbmd0aCwg
Mik7CisgICAgICAgICAgICBjaGVja1ZpZXcodmlld2VyUG9zZS52aWV3c1swXSk7CisgICAgICAg
ICAgICBjaGVja1ZpZXcodmlld2VyUG9zZS52aWV3c1sxXSk7CisKKyAgICAgICAgICAgIC8vIFRl
c3QgZG9lcyBub3QgY29tcGxldGUgdW50aWwgdGhlIHJldHVybmVkIHByb21pc2UgcmVzb2x2ZXMu
CisgICAgICAgICAgICByZXNvbHZlKCk7CisgICAgICAgICAgfQorCisgICAgICAgICAgdGVzdFNl
c3Npb24ucmVxdWVzdEFuaW1hdGlvbkZyYW1lKG9uRnJhbWUpOworICAgICAgICB9KQorICAgICAg
KTsKKyAgICB9CisKKyAgICB4cl9zZXNzaW9uX3Byb21pc2VfdGVzdCgKKyAgICAgIHRlc3ROYW1l
LCB0ZXN0RnVuY3Rpb24sIGZha2VEZXZpY2VJbml0T3B0aW9ucywgJ2ltbWVyc2l2ZS12cicpOwor
ICA8L3NjcmlwdD4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJTZXNzaW9uX3JlcXVlc3RBbmltYXRpb25GcmFt
ZV9nZXRWaWV3ZXJQb3NlLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl9yZXF1ZXN0QW5pbWF0aW9uRnJhbWVfZ2V0
Vmlld2VyUG9zZS5odHRwcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFiNTRmNWY2ZWMxNDdmOGUxZDM4Nzdi
YjI4YzViYjVjMWZmMTA0YjYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl9yZXF1ZXN0QW5pbWF0aW9u
RnJhbWVfZ2V0Vmlld2VyUG9zZS5odHRwcy5odG1sCkBAIC0wLDAgKzEsODUgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGJvZHk+CisgIDxzY3JpcHQgc3JjPS9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanM+
PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPS9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanM+
PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvd2VieHJfdXRpbC5qcyI+PC9zY3Jp
cHQ+CisgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvd2VieHJfdGVzdF9jb25zdGFudHMuanMiPjwv
c2NyaXB0PgorICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3dlYnhyX3Rlc3RfYXNzZXJ0cy5qcyI+
PC9zY3JpcHQ+CisgIDxjYW52YXM+PC9jYW52YXM+CisKKyAgPHNjcmlwdD4KKworICAgIGxldCBp
bW1lcnNpdmVUZXN0TmFtZSA9CisgICAgICAiWFJGcmFtZSBnZXRWaWV3ZXJQb3NlIHVwZGF0ZXMg
b24gdGhlIG5leHQgZnJhbWUgZm9yIGltbWVyc2l2ZSBzZXNzaW9ucyI7CisgICAgbGV0IG5vbklt
bWVyc2l2ZVRlc3ROYW1lID0KKyAgICAgICJYUkZyYW1lIGdldFZpZXdlclBvc2UgdXBkYXRlcyBv
biB0aGUgbmV4dCBmcmFtZSBmb3Igbm9uLWltbWVyc2l2ZSBzZXNzaW9ucyI7CisKKyAgICBsZXQg
ZmFrZURldmljZUluaXRQYXJhbXMgPSB7CisgICAgICBzdXBwb3J0c0ltbWVyc2l2ZTogdHJ1ZSwK
KyAgICAgIHN1cHBvcnRlZE1vZGVzOiBbImlubGluZSIsICJpbW1lcnNpdmUtdnIiXSwKKyAgICAg
IHZpZXdzOiBWQUxJRF9WSUVXUywKKyAgICAgIHN1cHBvcnRlZEZlYXR1cmVzOiBBTExfRkVBVFVS
RVMKKyAgICB9OworCisgICAgLy8gQSB2YWxpZCBwb3NlIG1hdHJpeC90cmFuc2Zvcm0gZm9yICB3
aGVuIHdlIGRvbid0IGNhcmUgYWJvdXQgc3BlY2lmaWMgdmFsdWVzCisgICAgLy8gTm90ZSB0aGF0
IHRoZXNlIHR3byBzaG91bGQgYmUgaWRlbnRpY2FsLCBqdXN0IGRpZmZlcmVudCByZXByZXNlbnRh
dGlvbnMKKyAgICBjb25zdCBleHBlY3RlZFBvc2VNYXRyaXggPSBbMCwgMSwgMCwgMCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCwgMSwgMCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMSwgMCwgMCwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMSwgMSwgMSwgMV07CisKKyAgICBjb25zdCBwb3NlVHJhbnNmb3JtID0geworICAgICAgICBw
b3NpdGlvbjogWzEsIDEsIDFdLAorICAgICAgICBvcmllbnRhdGlvbjogWzAuNSwgMC41LCAwLjUs
IDAuNV0KKyAgICB9OworCisgICAgbGV0IHRlc3RGdW5jdGlvbiA9IGZ1bmN0aW9uKHNlc3Npb24s
IGZha2VEZXZpY2VDb250cm9sbGVyLCB0KSB7CisgICAgICByZXR1cm4gc2Vzc2lvbi5yZXF1ZXN0
UmVmZXJlbmNlU3BhY2UoJ2xvY2FsJykKKyAgICAgICAgLnRoZW4oKHJlZmVyZW5jZVNwYWNlKSA9
PiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CisgICAgICAgICAgbGV0IGNvdW50
ZXIgPSAwOworICAgICAgICAgIGZ1bmN0aW9uIG9uRnJhbWUodGltZSwgdnJGcmFtZSkgeworICAg
ICAgICAgICAgaWYgKGNvdW50ZXIgPT0gMCkgeworICAgICAgICAgICAgICB0LnN0ZXAoICgpID0+
IHsKKyAgICAgICAgICAgICAgICAvLyBFeHBlY3RpbmcgdG8gbm90IGdldCBhIHBvc2Ugc2luY2Ug
bm9uZSBoYXMgYmVlbiBzdXBwbGllZAorICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHModnJG
cmFtZS5nZXRWaWV3ZXJQb3NlKHJlZmVyZW5jZVNwYWNlKSwgbnVsbCk7CisKKyAgICAgICAgICAg
ICAgICBmYWtlRGV2aWNlQ29udHJvbGxlci5zZXRWaWV3ZXJPcmlnaW4ocG9zZVRyYW5zZm9ybSk7
CisKKyAgICAgICAgICAgICAgICAvLyBDaGVjayB0aGF0IHBvc2UgZG9lcyBub3QgdXBkYXRlIHBv
c2Ugd2l0aGluIHRoZSBzYW1lIGZyYW1lLgorICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMo
dnJGcmFtZS5nZXRWaWV3ZXJQb3NlKHJlZmVyZW5jZVNwYWNlKSwgbnVsbCk7CisgICAgICAgICAg
ICAgIH0pOworCisgICAgICAgICAgICAgIC8vIEluIG9yZGVyIHRvIGF2b2lkIHJhY2UgY29uZGl0
aW9ucywgYWZ0ZXIgd2UndmUgc2V0IHRoZSB2aWV3ZXIKKyAgICAgICAgICAgICAgLy8gcG9zZSwg
d2UgcXVldWUgdXAgdGhlIG5leHQgcmVxdWVzdEFuaW1hdGlvbkZyYW1lLiBUaGlzIHNob3VsZAor
ICAgICAgICAgICAgICAvLyBlbnN1cmUgdGhhdCB0aGUgbmV4dCBmcmFtZSB3aWxsIGJlIGFibGUg
dG8gZ2V0IHRoZSBhcHByb3ByaWF0ZQorICAgICAgICAgICAgICAvLyBwb3NlLgorICAgICAgICAg
ICAgICAvLyBOb3RlIHRoYXQgc2luY2UgdGhlIG5leHQgZnJhbWUgd2lsbCBpbW1lZGlhdGVseSBy
ZXNvbHZlIGFuZCBlbmQKKyAgICAgICAgICAgICAgLy8gdGhlIHRlc3Qgd2Ugb25seSBuZWVkIHRv
IHJlcXVlc3QgYSBuZXcgZnJhbWUgb25jZSwgaGVyZS4KKyAgICAgICAgICAgICAgc2Vzc2lvbi5y
ZXF1ZXN0QW5pbWF0aW9uRnJhbWUob25GcmFtZSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICB0LnN0ZXAoICgpID0+IHsKKyAgICAgICAgICAgICAgICBsZXQgcG9zZSA9IHZy
RnJhbWUuZ2V0Vmlld2VyUG9zZShyZWZlcmVuY2VTcGFjZSk7CisgICAgICAgICAgICAgICAgYXNz
ZXJ0X25vdF9lcXVhbHMocG9zZSwgbnVsbCk7CisKKyAgICAgICAgICAgICAgICBsZXQgcG9zZU1h
dHJpeCA9IHBvc2UudHJhbnNmb3JtLm1hdHJpeDsKKyAgICAgICAgICAgICAgICBhc3NlcnRfbm90
X2VxdWFscyhwb3NlTWF0cml4LCBudWxsKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRfbWF0cml4
X2FwcHJveF9lcXVhbHMocG9zZU1hdHJpeCwgZXhwZWN0ZWRQb3NlTWF0cml4KTsKKyAgICAgICAg
ICAgICAgfSk7CisKKyAgICAgICAgICAgICAgLy8gRmluaXNoZWQuCisgICAgICAgICAgICAgIHJl
c29sdmUoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNvdW50ZXIrKzsKKyAgICAgICAg
ICB9CisKKyAgICAgICAgICBzZXNzaW9uLnJlcXVlc3RBbmltYXRpb25GcmFtZShvbkZyYW1lKTsK
KyAgICAgICAgfSkpOworICAgIH07CisKKyAgICB4cl9zZXNzaW9uX3Byb21pc2VfdGVzdChub25J
bW1lcnNpdmVUZXN0TmFtZSwgdGVzdEZ1bmN0aW9uLAorICAgICAgZmFrZURldmljZUluaXRQYXJh
bXMsICdpbmxpbmUnLCB7ICdyZXF1aXJlZEZlYXR1cmVzJzogWydsb2NhbCddIH0pOworICAgIHhy
X3Nlc3Npb25fcHJvbWlzZV90ZXN0KGltbWVyc2l2ZVRlc3ROYW1lLCB0ZXN0RnVuY3Rpb24sCisg
ICAgICBmYWtlRGV2aWNlSW5pdFBhcmFtcywgJ2ltbWVyc2l2ZS12cicpOworCisgIDwvc2NyaXB0
PgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93ZWJ4ci94clNlc3Npb25fcmVxdWVzdEFuaW1hdGlvbkZyYW1lX3RpbWVzdGFt
cC5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93ZWJ4ci94clNlc3Npb25fcmVxdWVzdEFuaW1hdGlvbkZyYW1lX3RpbWVzdGFtcC5odHRwcy5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjhmNWMyMWNiYTQwMTVkYTEwYjkwMzFmMWNmMTAwMTM4ZTk1OGM0NmUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl9yZXF1ZXN0QW5pbWF0aW9uRnJhbWVfdGltZXN0YW1wLmh0
dHBzLmh0bWwKQEAgLTAsMCArMSw4OSBAQAorPCFET0NUWVBFIGh0bWw+Cis8c2NyaXB0IHNyYz0i
L3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291
cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL3dlYnhyX3V0aWwuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy93ZWJ4
cl90ZXN0X2NvbnN0YW50cy5qcyI+PC9zY3JpcHQ+Cis8Y2FudmFzIC8+CisKKzxzY3JpcHQ+Citj
b25zdCBURU5fU0VDT05EUyA9IDEwMDAwOyAvLyAxMGsgbXMgaW4gdGVuIHNlY29uZHMKK2NvbnN0
IE9ORV9NSU5VVEUgPSA2MDAwMDsgLy8gNjBrIG1zIGluIG9uZSBtaW51dGUKKworbGV0IGltbWVy
c2l2ZVRlc3ROYW1lID0gIlhSRnJhbWUgZ2V0Vmlld2VyUG9zZSB1cGRhdGVzIG9uIHRoZSBuZXh0
IGZyYW1lIGZvciBpbW1lcnNpdmUiOworbGV0IG5vbkltbWVyc2l2ZVRlc3ROYW1lID0gIlhSRnJh
bWUgZ2V0Vmlld2VyUG9zZSB1cGRhdGVzIG9uIHRoZSBuZXh0IGZyYW1lIGZvciBub24taW1tZXJz
aXZlIjsKKworbGV0IGZha2VEZXZpY2VJbml0UGFyYW1zID0gVFJBQ0tFRF9JTU1FUlNJVkVfREVW
SUNFOworCitsZXQgdGVzdEZ1bmN0aW9uID0gZnVuY3Rpb24oc2Vzc2lvbiwgZmFrZURldmljZUNv
bnRyb2xsZXIsIHQpIHsKKyAgcmV0dXJuIHNlc3Npb24ucmVxdWVzdFJlZmVyZW5jZVNwYWNlKCd2
aWV3ZXInKQorICAgIC50aGVuKChyZWZlcmVuY2VTcGFjZSkgPT4gbmV3IFByb21pc2UoKHJlc29s
dmUsIHJlamVjdCkgPT4geworICAgICAgbGV0IGNvdW50ZXIgPSAwOworICAgICAgbGV0IHdpbmRv
d0ZyYW1lVGltZSA9IDA7CisgICAgICBsZXQgZnJhbWVUaW1lID0gMDsKKyAgICAgIGxldCBsYXN0
RnJhbWVUaW1lID0gMDsKKyAgICAgIGxldCBmaXJzdEZyYW1lID0gdHJ1ZTsKKworICAgICAgZnVu
Y3Rpb24gb25GcmFtZUZpcnN0KHRpbWUsIHhyRnJhbWUpIHsKKyAgICAgICAgbGFzdEZyYW1lVGlt
ZSA9IGZyYW1lVGltZTsKKyAgICAgICAgZnJhbWVUaW1lID0gdGltZTsKKyAgICAgICAgZmlyc3RG
cmFtZSA9IGZhbHNlOworICAgICAgICBsZXQgbm93ID0gcGVyZm9ybWFuY2Uubm93KCk7CisKKyAg
ICAgICAgdC5zdGVwKCAoKSA9PiB7CisgICAgICAgICAgLy8gVGhpcyBjYWxsYmFjayBtdXN0IGJl
IHRoZSBmaXJzdCBvbmUgY2FsbGVkLgorICAgICAgICAgIGFzc2VydF9lcXVhbHMoY291bnRlciwg
MCk7CisKKyAgICAgICAgICBpZiAoIWZpcnN0RnJhbWUpIHsKKyAgICAgICAgICAgIGFzc2VydF9n
cmVhdGVyX3RoYW4oZnJhbWVUaW1lLCBsYXN0RnJhbWVUaW1lKTsKKyAgICAgICAgICAgIGFzc2Vy
dF9hcHByb3hfZXF1YWxzKGZyYW1lVGltZSwgbGFzdEZyYW1lVGltZSwgVEVOX1NFQ09ORFMpOwor
ICAgICAgICAgIH0KKworICAgICAgICAgIC8vIFRoZXJlJ3MgZ29pbmcgdG8gYmUgc29tZSBkaXNw
YXJpdHkgYmV0d2VlbiBwZXJmb3JtYW5jZS5ub3coKSBhbmQKKyAgICAgICAgICAvLyB0aGUgdGlt
ZXN0YW1wIHBhc3NlZCBpbnRvIHRoZSBjYWxsYmFjaywgYnV0IGl0IHNob3VsZG4ndCBiZSBodWdl
LgorICAgICAgICAgIC8vIElmIHRoZXkncmUgbW9yZSB0aGFuIHRlbiBzZWNvbmRzIGFwYXJ0IHNv
bWV0aGluZyBoYXMgZ29uZSBob3JyaWJseQorICAgICAgICAgIC8vIHdyb25nLgorICAgICAgICAg
IGFzc2VydF9hcHByb3hfZXF1YWxzKGZyYW1lVGltZSwgbm93LCBURU5fU0VDT05EUyk7CisgICAg
ICAgIH0pOworCisgICAgICAgIGlmIChmaXJzdEZyYW1lKSB7CisgICAgICAgICAgc2Vzc2lvbi5y
ZXF1ZXN0QW5pbWF0aW9uRnJhbWUob25GcmFtZUZpcnN0KTsKKyAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICByZXNvbHZlKCk7CisgICAgICAgIH0KKworICAgICAgICBjb3VudGVyKys7CisgICAg
ICB9CisKKyAgICAgIGZ1bmN0aW9uIG9uRnJhbWVTdWJzZXF1ZW50KHRpbWUsIHhyRnJhbWUpIHsK
KyAgICAgICAgdC5zdGVwKCAoKSA9PiB7CisgICAgICAgICAgLy8gVGhlIHRpbWVzdGFtcCBwYXNz
ZWQgdG8gdGhpcyBjYWxsYmFjayBzaG91bGQgYmUgZXhhY3RseSBlcXVhbCB0bworICAgICAgICAg
IC8vIHRoZSBvbmUgcGFzc2VkIHRvIHRoZSBmaXJzdCBjYWxsYmFjayBpbiB0aGlzIHNldC4KKyAg
ICAgICAgICBhc3NlcnRfZXF1YWxzKHRpbWUsIGZyYW1lVGltZSk7CisgICAgICAgIH0pOworCisg
ICAgICAgIGNvdW50ZXIrKzsKKyAgICAgIH0KKworICAgICAgZnVuY3Rpb24gb25GcmFtZUxhc3Qo
dGltZSwgeHJGcmFtZSkgeworICAgICAgICB0LnN0ZXAoICgpID0+IHsKKyAgICAgICAgICAvLyBN
YWtlIHN1cmUgYWxsIHRoZSBwcmV2aW91cyBjYWxsYmFja3MgZmlyZWQgYXMgZXhwZWN0ZWQuCisg
ICAgICAgICAgYXNzZXJ0X2VxdWFscyhjb3VudGVyLCAxMSk7CisgICAgICAgIH0pOworICAgICAg
fQorCisgICAgICBzZXNzaW9uLnJlcXVlc3RBbmltYXRpb25GcmFtZShvbkZyYW1lRmlyc3QpOwor
ICAgICAgLy8gUXVldWUgdXAgc2V2ZXJhbCBjYWxsYmFja3MKKyAgICAgIGZvciAobGV0IGkgPSAw
OyBpIDwgMTA7ICsraSkgeworICAgICAgICBzZXNzaW9uLnJlcXVlc3RBbmltYXRpb25GcmFtZShv
bkZyYW1lU3Vic2VxdWVudCk7CisgICAgICB9CisgICAgICBzZXNzaW9uLnJlcXVlc3RBbmltYXRp
b25GcmFtZShvbkZyYW1lTGFzdCk7CisKKyAgICB9KSk7Cit9OworCit4cl9zZXNzaW9uX3Byb21p
c2VfdGVzdCgKKyAgaW1tZXJzaXZlVGVzdE5hbWUsIHRlc3RGdW5jdGlvbiwgZmFrZURldmljZUlu
aXRQYXJhbXMsICdpbW1lcnNpdmUtdnInKTsKK3hyX3Nlc3Npb25fcHJvbWlzZV90ZXN0KAorICBu
b25JbW1lcnNpdmVUZXN0TmFtZSwgdGVzdEZ1bmN0aW9uLCBmYWtlRGV2aWNlSW5pdFBhcmFtcywg
J2lubGluZScpOworCis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJTZXNzaW9uX3JlcXVlc3RSZWZlcmVuY2VT
cGFjZS5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93ZWJ4ci94clNlc3Npb25fcmVxdWVzdFJlZmVyZW5jZVNwYWNlLmh0dHBzLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYjE0MWQ2ZDE0ZDUzMTY0OWZkZmYwOTFlMTc2ZWQ2OGVhN2EzNjNjMgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2VieHIveHJTZXNzaW9uX3JlcXVlc3RSZWZlcmVuY2VTcGFjZS5odHRwcy5odG1sCkBAIC0wLDAg
KzEsNzEgQEAKKzwhRE9DVFlQRSBodG1sPgorPGJvZHk+CisgIDxzY3JpcHQgc3JjPS9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3MuanM+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPS9yZXNvdXJjZXMvdGVz
dGhhcm5lc3NyZXBvcnQuanM+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvd2Vi
eHJfdXRpbC5qcyI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvd2VieHJfdGVz
dF9jb25zdGFudHMuanMiPjwvc2NyaXB0PgorICA8Y2FudmFzPjwvY2FudmFzPgorICA8c2NyaXB0
PgorCisgICAgbGV0IGltbWVyc2l2ZVRlc3ROYW1lID0KKyAgICAgICJJbW1lcnNpdmUgWFJTZXNz
aW9uIHJlcXVlc3RSZWZlcmVuY2VTcGFjZSByZXR1cm5zIGV4cGVjdGVkIG9iamVjdHMiOworICAg
IGxldCBub25JbW1lcnNpdmVUZXN0TmFtZSA9CisgICAgICAiTm9uLWltbWVyc2l2ZSBYUlNlc3Np
b24gcmVxdWVzdFJlZmVyZW5jZVNwYWNlIHJldHVybnMgZXhwZWN0ZWQgb2JqZWN0cyI7CisKKyAg
ICBsZXQgZmFrZURldmljZUluaXRQYXJhbXMgPSBUUkFDS0VEX0lNTUVSU0lWRV9ERVZJQ0U7CisK
KyAgICBsZXQgdGVzdEZ1bmN0aW9uID0gZnVuY3Rpb24oc2Vzc2lvbiwgZmFrZURldmljZUNvbnRy
b2xsZXIsIHQpIHsKKyAgICAgIHJldHVybiBwcm9taXNlX3JlamVjdHNfanModCwgVHlwZUVycm9y
LCBzZXNzaW9uLnJlcXVlc3RSZWZlcmVuY2VTcGFjZSgnZm9vJykpCisgICAgICAgIC50aGVuKCgp
ID0+IFByb21pc2UuYWxsKFsKKyAgICAgICAgc2Vzc2lvbi5yZXF1ZXN0UmVmZXJlbmNlU3BhY2Uo
J3ZpZXdlcicpLnRoZW4oIChyZWZlcmVuY2VTcGFjZSkgPT4geworICAgICAgICAgICAgdC5zdGVw
KCgpID0+IHsKKyAgICAgICAgICAgICAgYXNzZXJ0X3RydWUocmVmZXJlbmNlU3BhY2UgaW5zdGFu
Y2VvZiBYUlNwYWNlLAorICAgICAgICAgICAgICAgICJpZGVudGl0eSByZWZlcmVuY2Ugc3BhY2Ug
aXMgbm90IGNvcnJlY3QgdHlwZS4iKTsKKyAgICAgICAgICAgICAgYXNzZXJ0X3RydWUocmVmZXJl
bmNlU3BhY2UgaW5zdGFuY2VvZiBYUlJlZmVyZW5jZVNwYWNlLAorICAgICAgICAgICAgICAgICJp
ZGVudGl0eSByZWZlcmVuY2Ugc3BhY2UgaXMgbm90IGNvcnJlY3QgdHlwZS4iKTsKKyAgICAgICAg
ICAgIH0pOworICAgICAgICAgIH0pLAorICAgICAgICAgIHNlc3Npb24ucmVxdWVzdFJlZmVyZW5j
ZVNwYWNlKCdsb2NhbCcpLnRoZW4oIChyZWZlcmVuY2VTcGFjZSkgPT4geworICAgICAgICAgICAg
dC5zdGVwKCgpID0+IHsKKyAgICAgICAgICAgICAgYXNzZXJ0X3RydWUocmVmZXJlbmNlU3BhY2Ug
aW5zdGFuY2VvZiBYUlNwYWNlLAorICAgICAgICAgICAgICAgICJleWUtbGV2ZWwgc3RhdGlvbmFy
eSByZWZlcmVuY2Ugc3BhY2UgaXMgbm90IGNvcnJlY3QgdHlwZS4iKTsKKyAgICAgICAgICAgICAg
YXNzZXJ0X3RydWUocmVmZXJlbmNlU3BhY2UgaW5zdGFuY2VvZiBYUlJlZmVyZW5jZVNwYWNlLAor
ICAgICAgICAgICAgICAgICJleWUtbGV2ZWwgc3RhdGlvbmFyeSByZWZlcmVuY2Ugc3BhY2UgaXMg
bm90IGNvcnJlY3QgdHlwZS4iKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgIH0pLAorICAg
ICAgICAgIHNlc3Npb24ucmVxdWVzdFJlZmVyZW5jZVNwYWNlKCdsb2NhbC1mbG9vcicpLnRoZW4o
IChyZWZlcmVuY2VTcGFjZSkgPT4geworICAgICAgICAgICAgdC5zdGVwKCgpID0+IHsKKyAgICAg
ICAgICAgICAgYXNzZXJ0X3RydWUocmVmZXJlbmNlU3BhY2UgaW5zdGFuY2VvZiBYUlNwYWNlLAor
ICAgICAgICAgICAgICAgICJmbG9vci1sZXZlbCBzdGF0aW9uYXJ5IHJlZmVyZW5jZSBzcGFjZSBp
cyBub3QgY29ycmVjdCB0eXBlLiIpOworICAgICAgICAgICAgICBhc3NlcnRfdHJ1ZShyZWZlcmVu
Y2VTcGFjZSBpbnN0YW5jZW9mIFhSUmVmZXJlbmNlU3BhY2UsCisgICAgICAgICAgICAgICAgImZs
b29yLWxldmVsIHN0YXRpb25hcnkgcmVmZXJlbmNlIHNwYWNlIGlzIG5vdCBjb3JyZWN0IHR5cGUu
Iik7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICB9KQorICAgICAgICBdKSkKKyAgICAgICAg
LnRoZW4oKCkgPT4geworICAgICAgICAgIGlmIChzZXNzaW9uLm1vZGUgPT0gJ2lubGluZScpIHsK
KyAgICAgICAgICAgIC8vIEJvdW5kZWQgcmVmZXJlbmNlIHNwYWNlcyBhcmUgbm90IGFsbG93ZWQg
aW4gaW5saW5lIHNlc3Npb25zLgorICAgICAgICAgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19k
b20odCwgIk5vdFN1cHBvcnRlZEVycm9yIiwgc2Vzc2lvbi5yZXF1ZXN0UmVmZXJlbmNlU3BhY2Uo
J2JvdW5kZWQtZmxvb3InKSkKKyAgICAgICAgICB9CisgICAgICAgIH0pCisgICAgICAgIC50aGVu
KCgpID0+IHsKKyAgICAgICAgICBpZiAoc2Vzc2lvbi5tb2RlID09ICdpbmxpbmUnKSB7CisgICAg
ICAgICAgICAvLyBVbmJvdW5kZWQgcmVmZXJlbmNlIHNwYWNlcyBhcmUgbm90IGFsbG93ZWQgaW4g
aW5saW5lIHNlc3Npb25zLgorICAgICAgICAgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19kb20o
dCwgIk5vdFN1cHBvcnRlZEVycm9yIiwgc2Vzc2lvbi5yZXF1ZXN0UmVmZXJlbmNlU3BhY2UoJ3Vu
Ym91bmRlZCcpKQorICAgICAgICAgIH0KKyAgICAgICAgfSkKKyAgICB9OworCisgICAgLy8gUmVm
ZXJlbmNlIHNwYWNlcyB0aGF0IGFyZW4ndCBpbmNsdWRlZCBpbiB0aGUgZGVmYXVsdCBmZWF0dXJl
IGxpc3QgbXVzdAorICAgIC8vIGJlIHNwZWNpZmllZCBhcyBhIHJlcXVpcmVkIG9yIG9wdGlvbmFs
IGZlYXR1cmVzIG9uIHNlc3Npb24gY3JlYXRpb24uCisgICAgeHJfc2Vzc2lvbl9wcm9taXNlX3Rl
c3QoCisgICAgICBpbW1lcnNpdmVUZXN0TmFtZSwgdGVzdEZ1bmN0aW9uLCBmYWtlRGV2aWNlSW5p
dFBhcmFtcywgJ2ltbWVyc2l2ZS12cicsCisgICAgICAgIHtyZXF1aXJlZEZlYXR1cmVzOiBbJ2xv
Y2FsLWZsb29yJ10sCisgICAgICAgICBvcHRpb25hbEZlYXR1cmVzOiBbJ2JvdW5kZWQtZmxvb3In
LCAndW5ib3VuZGVkJ119KTsKKyAgICB4cl9zZXNzaW9uX3Byb21pc2VfdGVzdCgKKyAgICAgIG5v
bkltbWVyc2l2ZVRlc3ROYW1lLCB0ZXN0RnVuY3Rpb24sIGZha2VEZXZpY2VJbml0UGFyYW1zLCAn
aW5saW5lJywKKyAgICAgICAge3JlcXVpcmVkRmVhdHVyZXM6IFsnbG9jYWwnXSwKKyAgICAgICAg
IG9wdGlvbmFsRmVhdHVyZXM6IFsnbG9jYWwtZmxvb3InXX0pOworCisgIDwvc2NyaXB0PgorPC9i
b2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93ZWJ4ci94clNlc3Npb25fcmVxdWVzdFJlZmVyZW5jZVNwYWNlX2ZlYXR1cmVzLmh0dHBz
Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhy
L3hyU2Vzc2lvbl9yZXF1ZXN0UmVmZXJlbmNlU3BhY2VfZmVhdHVyZXMuaHR0cHMuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5iZGZkOGM3OWNmYWU4NDAwMzhmNjQyMjM1ZWVjYzFiZTQ2YTE3M2NkCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
ZWJ4ci94clNlc3Npb25fcmVxdWVzdFJlZmVyZW5jZVNwYWNlX2ZlYXR1cmVzLmh0dHBzLmh0bWwK
QEAgLTAsMCArMSw4MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8Ym9keT4KKyAgPHNjcmlwdCBzcmM9
L3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcz48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9L3Jlc291
cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcz48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9InJlc291
cmNlcy93ZWJ4cl91dGlsLmpzIj48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9InJlc291cmNlcy93
ZWJ4cl90ZXN0X2NvbnN0YW50cy5qcyI+PC9zY3JpcHQ+CisgIDxjYW52YXM+PC9jYW52YXM+Cisg
IDxzY3JpcHQ+CisKKyAgICBsZXQgbWFrZVNwYWNlVGVzdCA9IChzcGFjZV90eXBlKSA9PiB7Cisg
ICAgICByZXR1cm4gKHNlc3Npb24sIGZha2VEZXZpY2VDb250cm9sbGVyLCB0KSA9PiB7CisgICAg
ICAgIHJldHVybiBzZXNzaW9uLnJlcXVlc3RSZWZlcmVuY2VTcGFjZShzcGFjZV90eXBlKS50aGVu
KCAocmVmZXJlbmNlU3BhY2UpID0+IHsKKyAgICAgICAgICB0LnN0ZXAoKCkgPT4geworICAgICAg
ICAgICAgYXNzZXJ0X3RydWUocmVmZXJlbmNlU3BhY2UgaW5zdGFuY2VvZiBYUlJlZmVyZW5jZVNw
YWNlLAorICAgICAgICAgICAgICAicmVmZXJlbmNlIHNwYWNlIGlzIG5vdCBjb3JyZWN0IHR5cGUu
Iik7CisgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgICAgfTsKKyAgICB9OworCisgICAg
bGV0IG1ha2VJbnZhbGlkU3BhY2VUZXN0ID0gKHNwYWNlX3R5cGUpID0+IHsKKyAgICAgIHJldHVy
biAoc2Vzc2lvbiwgZmFrZURldmljZUNvbnRyb2xsZXIsIHQpID0+IHsKKyAgICAgICAgICByZXR1
cm4gIHByb21pc2VfcmVqZWN0c19kb20odCwgIk5vdFN1cHBvcnRlZEVycm9yIiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uLnJlcXVlc3RSZWZlcmVuY2VTcGFjZShz
cGFjZV90eXBlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVxdWVzdFJl
ZmVyZW5jZVNwYWNlKCciICsgc3BhY2VfdHlwZSArICInKSIpOworICAgICAgfTsKKyAgICB9Owor
CisgICAgbGV0IGZha2VEZXZpY2VJbml0UGFyYW1zID0gVFJBQ0tFRF9JTU1FUlNJVkVfREVWSUNF
OworCisgICAgLy8gVGVzdCB0aGF0IHJlZmVyZW5jZSBzcGFjZXMgbWF0Y2hpbmcgZGVmYXVsdCBm
ZWF0dXJlcyB3b3JrLgorICAgIHhyX3Nlc3Npb25fcHJvbWlzZV90ZXN0KAorICAgICAgICAiTm9u
LWltbWVyc2l2ZSBzZXNzaW9uIHN1cHBvcnRzIHZpZXdlciBzcGFjZSBieSBkZWZhdWx0IiwKKyAg
ICAgICAgbWFrZVNwYWNlVGVzdCgndmlld2VyJyksIGZha2VEZXZpY2VJbml0UGFyYW1zLCAnaW5s
aW5lJywge30pOworICAgIHhyX3Nlc3Npb25fcHJvbWlzZV90ZXN0KAorICAgICAgICAiSW1tZXJz
aXZlIHNlc3Npb24gc3VwcG9ydHMgdmlld2VyIHNwYWNlIGJ5IGRlZmF1bHQiLAorICAgICAgICBt
YWtlU3BhY2VUZXN0KCd2aWV3ZXInKSwgZmFrZURldmljZUluaXRQYXJhbXMsICdpbW1lcnNpdmUt
dnInLCB7fSk7CisgICAgeHJfc2Vzc2lvbl9wcm9taXNlX3Rlc3QoCisgICAgICAgICJJbW1lcnNp
dmUgc2Vzc2lvbiBzdXBwb3J0cyBsb2NhbCBzcGFjZSBieSBkZWZhdWx0IiwKKyAgICAgICAgbWFr
ZVNwYWNlVGVzdCgnbG9jYWwnKSwgZmFrZURldmljZUluaXRQYXJhbXMsICdpbW1lcnNpdmUtdnIn
LCB7fSk7CisKKyAgICAvLyBUZXN0IHRoYXQgc2Vzc2lvbi1hcHByb3ByaWF0ZSBub24tZGVmYXVs
dCByZWZlcmVuY2Ugc3BhY2VzIHdvcmsgd2hlbiByZXF1ZXN0ZWQKKyAgICB4cl9zZXNzaW9uX3By
b21pc2VfdGVzdCgKKyAgICAgICAgIk5vbi1pbW1lcnNpdmUgc2Vzc2lvbiBzdXBwb3J0cyBsb2Nh
bCBzcGFjZSB3aGVuIHJlcXVpcmVkIiwKKyAgICAgICAgbWFrZVNwYWNlVGVzdCgnbG9jYWwnKSwg
ZmFrZURldmljZUluaXRQYXJhbXMsICdpbmxpbmUnLAorICAgICAgICB7cmVxdWlyZWRGZWF0dXJl
czogWydsb2NhbCddfSk7CisgICAgeHJfc2Vzc2lvbl9wcm9taXNlX3Rlc3QoCisgICAgICAgICJO
b24taW1tZXJzaXZlIHNlc3Npb24gc3VwcG9ydHMgbG9jYWwgc3BhY2Ugd2hlbiBvcHRpb25hbCIs
CisgICAgICAgIG1ha2VTcGFjZVRlc3QoJ2xvY2FsJyksIGZha2VEZXZpY2VJbml0UGFyYW1zLCAn
aW5saW5lJywKKyAgICAgICAge29wdGlvbmFsRmVhdHVyZXM6IFsnbG9jYWwnXX0pOworICAgIHhy
X3Nlc3Npb25fcHJvbWlzZV90ZXN0KAorICAgICAgICAiTm9uLWltbWVyc2l2ZSBzZXNzaW9uIHN1
cHBvcnRzIGxvY2FsLWZsb29yIHNwYWNlIHdoZW4gcmVxdWlyZWQiLAorICAgICAgICBtYWtlU3Bh
Y2VUZXN0KCdsb2NhbC1mbG9vcicpLCBmYWtlRGV2aWNlSW5pdFBhcmFtcywgJ2lubGluZScsCisg
ICAgICAgIHtyZXF1aXJlZEZlYXR1cmVzOiBbJ2xvY2FsLWZsb29yJ119KTsKKyAgICB4cl9zZXNz
aW9uX3Byb21pc2VfdGVzdCgKKyAgICAgICAgIkltbWVyc2l2ZSBzZXNzaW9uIHN1cHBvcnRzIGxv
Y2FsLWZsb29yIHNwYWNlIHdoZW4gcmVxdWlyZWQiLAorICAgICAgICBtYWtlU3BhY2VUZXN0KCds
b2NhbC1mbG9vcicpLCBmYWtlRGV2aWNlSW5pdFBhcmFtcywgJ2ltbWVyc2l2ZS12cicsCisgICAg
ICAgIHtyZXF1aXJlZEZlYXR1cmVzOiBbJ2xvY2FsLWZsb29yJ119KTsKKyAgICB4cl9zZXNzaW9u
X3Byb21pc2VfdGVzdCgKKyAgICAgICAgIkltbWVyc2l2ZSBzZXNzaW9uIHN1cHBvcnRzIGxvY2Fs
LWZsb29yIHNwYWNlIHdoZW4gb3B0aW9uYWwiLAorICAgICAgICBtYWtlU3BhY2VUZXN0KCdsb2Nh
bC1mbG9vcicpLCBmYWtlRGV2aWNlSW5pdFBhcmFtcywgJ2ltbWVyc2l2ZS12cicsCisgICAgICAg
IHtvcHRpb25hbEZlYXR1cmVzOiBbJ2xvY2FsLWZsb29yJ119KTsKKworICAgIC8vIFRlc3QgdGhh
dCBpbmxpbmUgc3BhY2UgY2FuJ3QgcmVxdWVzdCAnYm91bmRlZC1mbG9vcicgb3IgJ3VuYm91bmRl
ZCcKKyAgICB4cl9zZXNzaW9uX3Byb21pc2VfdGVzdCgKKyAgICAgICAgIk5vbi1pbW1lcnNpdmUg
c2Vzc2lvbiByZWplY3RzIGJvdW5kZWQtZmxvb3Igc3BhY2UgZXZlbiB3aGVuIHJlcXVlc3RlZCIs
CisgICAgICAgIG1ha2VJbnZhbGlkU3BhY2VUZXN0KCdib3VuZGVkLWZsb29yJyksIGZha2VEZXZp
Y2VJbml0UGFyYW1zLCAnaW5saW5lJywKKyAgICAgICAge29wdGlvbmFsRmVhdHVyZXM6IFsnYm91
bmRlZC1mbG9vciddfSk7CisgICAgeHJfc2Vzc2lvbl9wcm9taXNlX3Rlc3QoCisgICAgICAgIk5v
bi1pbW1lcnNpdmUgc2Vzc2lvbiByZWplY3RzIHVuYm91bmRlZCBzcGFjZSBldmVuIHdoZW4gcmVx
dWVzdGVkIiwKKyAgICAgICAgbWFrZUludmFsaWRTcGFjZVRlc3QoJ3VuYm91bmRlZCcpLCBmYWtl
RGV2aWNlSW5pdFBhcmFtcywgJ2lubGluZScsCisgICAgICAgIHtvcHRpb25hbEZlYXR1cmVzOiBb
J3VuYm91bmRlZCddfSk7CisKKyAgICAvLyBUZXN0IHRoYXQgcmVmZXJlbmNlIHNwYWNlcyB0aGF0
IGFyZW4ndCBkZWZhdWx0IGZlYXR1cmVzIGFyZSByZWplY3RlZAorICAgIC8vIHdoZW4gbm90IHJl
cXVlc3RlZCBhcyBhIGZlYXR1cmUuCisgICAgeHJfc2Vzc2lvbl9wcm9taXNlX3Rlc3QoCisgICAg
ICAgIk5vbi1pbW1lcnNpdmUgc2Vzc2lvbiByZWplY3RzIGxvY2FsIHNwYWNlIGlmIG5vdCByZXF1
ZXN0ZWQiLAorICAgICAgICBtYWtlSW52YWxpZFNwYWNlVGVzdCgnbG9jYWwnKSwgZmFrZURldmlj
ZUluaXRQYXJhbXMsICdpbmxpbmUnLCB7fSk7CisgICAgeHJfc2Vzc2lvbl9wcm9taXNlX3Rlc3Qo
CisgICAgICAgIkltbWVyc2l2ZSBzZXNzaW9uIHJlamVjdHMgbG9jYWwtZmxvb3Igc3BhY2UgaWYg
bm90IHJlcXVlc3RlZCIsCisgICAgICAgIG1ha2VJbnZhbGlkU3BhY2VUZXN0KCdsb2NhbC1mbG9v
cicpLCBmYWtlRGV2aWNlSW5pdFBhcmFtcywgJ2ltbWVyc2l2ZS12cicsIHt9KTsKKyAgPC9zY3Jp
cHQ+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl9zYW1lT2JqZWN0Lmh0dHBzLmh0bWwgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl9z
YW1lT2JqZWN0Lmh0dHBzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODM3ZmEwYTAwOGQ2Y2RmY2JkOWVlMTM0
ZTdlYzc4YmNlN2MyYjk1YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJTZXNzaW9uX3NhbWVPYmplY3QuaHR0cHMu
aHRtbApAQCAtMCwwICsxLDY3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxzY3JpcHQgc3JjPSIvcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
d2VieHJfdXRpbC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3dlYnhyX3Rl
c3RfY29uc3RhbnRzLmpzIj48L3NjcmlwdD4KKzxjYW52YXMgaWQ9IndlYmdsLWNhbnZhcyI+PC9j
YW52YXM+CisKKzxzY3JpcHQ+CitsZXQgdGVzdE5hbWUgPSAiWFJTZXNzaW9uIGF0dHJpYnV0ZXMg
bWVldCBbU2FtZU9iamVjdF0gcmVxdWlyZW1lbnQiOworCitsZXQgdGVzdEZ1bmN0aW9uID0gZnVu
Y3Rpb24oc2Vzc2lvbiwgZmFrZURldmljZUNvbnRyb2xsZXIsIHQpIHsKKyAgcmV0dXJuIG5ldyBQ
cm9taXNlKChyZXNvbHZlKSA9PiB7CisgICAgbGV0IGlucHV0X3NvdXJjZSA9IGZha2VEZXZpY2VD
b250cm9sbGVyLnNpbXVsYXRlSW5wdXRTb3VyY2VDb25uZWN0aW9uKHsKKyAgICAgIGhhbmRlZG5l
c3M6ICJyaWdodCIsCisgICAgICB0YXJnZXRSYXlNb2RlOiAidHJhY2tlZC1wb2ludGVyIiwKKyAg
ICAgIHBvaW50ZXJPcmlnaW46IFZBTElEX1BPSU5URVJfVFJBTlNGT1JNLAorICAgICAgZ3JpcE9y
aWdpbjogVkFMSURfR1JJUF9UUkFOU0ZPUk0sCisgICAgICBwcm9maWxlczogWyJmb28iLCAiYmFy
Il0KKyAgICB9KTsKKworICAgIHNlc3Npb24ucmVxdWVzdEFuaW1hdGlvbkZyYW1lKCh0aW1lLCB4
ckZyYW1lKSA9PiB7CisgICAgICBsZXQgcmVuZGVyU3RhdGUgPSBzZXNzaW9uLnJlbmRlclN0YXRl
OworICAgICAgbGV0IHNvdXJjZXMgPSBzZXNzaW9uLmlucHV0U291cmNlczsKKworICAgICAgdC5z
dGVwKCgpID0+IHsKKyAgICAgICAgYXNzZXJ0X25vdF9lcXVhbHMocmVuZGVyU3RhdGUsIG51bGws
ICJyZW5kZXJTdGF0ZSBtdXN0IG5vdCBiZSBudWxsLiIpOworICAgICAgICBhc3NlcnRfbm90X2Vx
dWFscyhzb3VyY2VzLCBudWxsLCAiaW5wdXRTb3VyY2VzIG11c3Qgbm90IGJlIG51bGwuIik7CisK
KyAgICAgICAgLy8gTWFrZSBzdXJlIFtTYW1lT2JqZWN0XSBhdHRyaWJ1dGVzIGFjdHVhbGx5IGhh
dmUgdGhlIHNhbWUgb2JqZWN0CisgICAgICAgIC8vIHJldHVybmVkIGVhY2ggdGltZSB0aGV5IGFy
ZSBhY2Nlc3NlZC4KKyAgICAgICAgYXNzZXJ0X2VxdWFscyhyZW5kZXJTdGF0ZSwgc2Vzc2lvbi5y
ZW5kZXJTdGF0ZSwKKyAgICAgICAgICAiWFJTZXNzaW9uLnJlbmRlclN0YXRlIHJldHVybnMgdGhl
IHNhbWUgb2JqZWN0LiIpOworICAgICAgICBhc3NlcnRfZXF1YWxzKHNvdXJjZXMsIHNlc3Npb24u
aW5wdXRTb3VyY2VzLAorICAgICAgICAgICJYUlNlc3Npb24uaW5wdXRTb3VyY2VzIHJldHVybnMg
dGhlIHNhbWUgb2JqZWN0LiIpOworICAgICAgfSk7CisKKyAgICAgIHNlc3Npb24ucmVxdWVzdEFu
aW1hdGlvbkZyYW1lKCh0aW1lLCB4ckZyYW1lKSA9PiB7CisgICAgICAgIHQuc3RlcCgoKSA9PiB7
CisgICAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSBhdHRyaWJ1dGVzIHN0aWxsIHJldHVybiB0aGUg
c2FtZSBvYmplY3Qgb24gdGhlIG5leHQKKyAgICAgICAgICAvLyBmcmFtZS4KKyAgICAgICAgICBh
c3NlcnRfZXF1YWxzKHJlbmRlclN0YXRlLCBzZXNzaW9uLnJlbmRlclN0YXRlLAorICAgICAgICAg
ICAgIlhSU2Vzc2lvbi5yZW5kZXJTdGF0ZSByZXR1cm5zIHRoZSBzYW1lIG9iamVjdC4iKTsKKyAg
ICAgICAgICBhc3NlcnRfZXF1YWxzKHNvdXJjZXMsIHNlc3Npb24uaW5wdXRTb3VyY2VzLAorICAg
ICAgICAgICAgIlhSU2Vzc2lvbi5pbnB1dFNvdXJjZXMgcmV0dXJucyB0aGUgc2FtZSBvYmplY3Qu
Iik7CisgICAgICAgIH0pOworCisgICAgICAgIC8vIEV2ZW4gdGhvdWdoIGNoYW5naW5nIGhhbmRl
ZG5lc3Mgb24gdGhlIGlucHV0IHNvdXJjZSBzaG91bGQgY2F1c2UgdGhhdAorICAgICAgICAvLyBz
b3VyY2UgdG8gYmUgcmUtY3JlYXRlZCwgaXQgc2hvdWxkIG5vdCBjYXVzZSB0aGUgZW50aXJlCisg
ICAgICAgIC8vIFhSSW5wdXRTb3VyY2VBcnJheSBvYmplY3Qgb24gWFJTZXNzaW9uIHRvIGJlIHJl
LWNyZWF0ZWQuCisgICAgICAgIGlucHV0X3NvdXJjZS5zZXRIYW5kZWRuZXNzKCJsZWZ0Iik7Cisg
ICAgICAgIHNlc3Npb24ucmVxdWVzdEFuaW1hdGlvbkZyYW1lKCh0aW1lLCB4ckZyYW1lKSA9PiB7
CisgICAgICAgICAgdC5zdGVwKCgpID0+IHsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocmVu
ZGVyU3RhdGUsIHNlc3Npb24ucmVuZGVyU3RhdGUsCisgICAgICAgICAgICAgICJYUlNlc3Npb24u
cmVuZGVyU3RhdGUgcmV0dXJucyB0aGUgc2FtZSBvYmplY3QuIik7CisgICAgICAgICAgICBhc3Nl
cnRfZXF1YWxzKHNvdXJjZXMsIHNlc3Npb24uaW5wdXRTb3VyY2VzLAorICAgICAgICAgICAgICAi
WFJTZXNzaW9uLmlucHV0U291cmNlcyByZXR1cm5zIHRoZSBzYW1lIG9iamVjdC4iKTsKKyAgICAg
ICAgICB9KTsKKyAgICAgICAgICByZXNvbHZlKCk7CisgICAgICAgIH0pOworICAgICAgfSk7Cisg
ICAgfSk7CisgIH0pOworfTsKKworeHJfc2Vzc2lvbl9wcm9taXNlX3Rlc3QoCisgIHRlc3ROYW1l
LCB0ZXN0RnVuY3Rpb24sIFRSQUNLRURfSU1NRVJTSVZFX0RFVklDRSwgJ2ltbWVyc2l2ZS12cicp
OworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl92aWV3ZXJfYXZhaWxhYmlsaXR5Lmh0dHBzLmh0
bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hy
U2Vzc2lvbl92aWV3ZXJfYXZhaWxhYmlsaXR5Lmh0dHBzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjYzMGJl
MTRhYjkwZjNjNzAwYmQxNWRmZTQ0ODRhNDI3NGVlNjRlMgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJTZXNzaW9u
X3ZpZXdlcl9hdmFpbGFiaWxpdHkuaHR0cHMuaHRtbApAQCAtMCwwICsxLDczIEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxib2R5PgorPHNjcmlwdCBzcmM9L3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcz48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPS9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanM+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3dlYnhyX3V0aWwuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9InJlc291cmNlcy93ZWJ4cl90ZXN0X2NvbnN0YW50cy5qcyI+PC9zY3JpcHQ+
Cis8Y2FudmFzPjwvY2FudmFzPgorPHNjcmlwdD4KKworICBsZXQgdGVzdE5hbWUgPQorICAgICJJ
bmxpbmUgdmlld2VyIHN1cHBvcnQgd2l0aCBubyBkZXZpY2UiOworCisgIC8vIFB1cnBvc2VmdWxs
eSBub3QgY29ubmVjdGluZyBhIGRldmljZSB0byBlbnN1cmUgdGhhdCB2aWV3ZXIgaXMgYWx3YXlz
CisgIC8vIHN1cHBvcnRlZCBpZiB0aGF0IGlzIHRoZSBvbmx5IGZlYXR1cmUgcmVxdWVzdGVkLgor
ICB4cl9wcm9taXNlX3Rlc3QodGVzdE5hbWUsCisgICAgKHQpID0+IHsKKyAgICBmdW5jdGlvbiBz
ZXNzaW9uX3Jlc29sdmVzKHNlc3Npb25Nb2RlLCBzZXNzaW9uSW5pdCkgeworICAgICAgcmV0dXJu
IG5hdmlnYXRvci54ci5yZXF1ZXN0U2Vzc2lvbihzZXNzaW9uTW9kZSwgc2Vzc2lvbkluaXQpCisg
ICAgICAgIC50aGVuKHNlc3Npb24gPT4gc2Vzc2lvbi5lbmQoKSk7CisgICAgfQorCisgICAgZnVu
Y3Rpb24gc2Vzc2lvbl9yZWplY3RzKGV4cGVjdGVkLCBzZXNzaW9uTW9kZSwgc2Vzc2lvbkluaXQp
IHsKKyAgICAgIHJldHVybiBwcm9taXNlX3JlamVjdHNfZG9tKHQsIGV4cGVjdGVkLCBuYXZpZ2F0
b3IueHIucmVxdWVzdFNlc3Npb24oc2Vzc2lvbk1vZGUsIHNlc3Npb25Jbml0KQorICAgICAgICAu
dGhlbihzZXNzaW9uID0+IHNlc3Npb24uZW5kKCkpKTsKKyAgICB9CisKKyAgICByZXR1cm4gc2Vz
c2lvbl9yZXNvbHZlcygnaW5saW5lJywgeworICAgICAgLy8gUmVxdWVzdFNlc3Npb24gd2l0aCAn
dmlld2VyJyBhcyBhIHJlcXVpcmVkIGZlYXRyZSBzaG91bGQgc3VjY2VlZCwgZXZlbgorICAgICAg
Ly8gd2l0aG91dCB1c2VyIGFjdGl2YXRpb24uCisgICAgICByZXF1aXJlZEZlYXR1cmVzOiBbJ3Zp
ZXdlciddCisgICAgfSkKKyAgICAudGhlbigoKSA9PiB7CisgICAgICAvLyBSZXF1ZXN0U2Vzc2lv
biB3aXRoICd2aWV3ZXInIGFzIGFuIG9wdGlvbmFsIGZlYXR1cmUgc2hvdWxkIHN1Y2NlZWQsIGV2
ZW4KKyAgICAgIC8vIHdpdGhvdXQgdXNlciBhY3RpdmF0aW9uLgorICAgICAgcmV0dXJuIHNlc3Np
b25fcmVzb2x2ZXMoJ2lubGluZScsIHsKKyAgICAgICAgb3B0aW9uYWxGZWF0dXJlczogWyd2aWV3
ZXInXQorICAgICAgfSkKKyAgICB9KQorICAgIC50aGVuKCgpID0+IHsKKyAgICAgIC8vIFJlcXVl
c3RTZXNzaW9uIHdpdGggbm8gcmVxdWlyZW1lbnRzIHNob3VsZCBzdWNjZWVkLgorICAgICAgcmV0
dXJuIHNlc3Npb25fcmVzb2x2ZXMoJ2lubGluZScsIHt9KTsKKyAgICB9KQorICAgIC50aGVuKCgp
ID0+IHsKKyAgICAgIC8vIFJlcXVlc3RTZXNzaW9uIHdpdGggbm9uLXZpZXdlciBvcHRpb25hbCBm
ZWF0dXJlcyBzaG91bGQgZmFpbAorICAgICAgLy8gd2l0aG91dCB1c2VyIGFjdGl2YXRpb24uCisg
ICAgICByZXR1cm4gc2Vzc2lvbl9yZWplY3RzKCJTZWN1cml0eUVycm9yIiwgJ2lubGluZScsIHsK
KyAgICAgICAgb3B0aW9uYWxGZWF0dXJlczogWydsb2NhbCddCisgICAgICB9KTsKKyAgICB9KQor
ICAgIC50aGVuKCgpID0+IHsKKyAgICAgIC8vIFJlcXVlc3RTZXNzaW9uIHdpdGggbm9uLXZpZXdl
ciByZXF1aXJlZCBmZWF0dXJlcyBzaG91bGQgZmFpbAorICAgICAgLy8gd2l0aG91dCB1c2VyIGFj
dGl2YXRpb24uCisgICAgICByZXR1cm4gc2Vzc2lvbl9yZWplY3RzKCJTZWN1cml0eUVycm9yIiwg
J2lubGluZScsIHsKKyAgICAgICAgb3B0aW9uYWxGZWF0dXJlczogWydsb2NhbCddCisgICAgICB9
KTsKKyAgICB9KQorICAgIC50aGVuKCgpID0+IHByb21pc2Vfc2ltdWxhdGVfdXNlcl9hY3RpdmF0
aW9uKCgpID0+IHsKKyAgICAgIC8vIFJlcXVlc3RTZXNzaW9uIHdpdGggdW5zdXBwb3J0ZWQgb3B0
aW9uYWwgZmVhdHVyZXMgc2hvdWxkIHN1Y2NlZWQuCisgICAgICByZXR1cm4gc2Vzc2lvbl9yZXNv
bHZlcygnaW5saW5lJywgeworICAgICAgICByZXF1aXJlZEZlYXR1cmVzOiBbJ3ZpZXdlciddLAor
ICAgICAgICBvcHRpb25hbEZlYXR1cmVzOiBbJ2xvY2FsJ10KKyAgICAgIH0pCisgICAgfSkpCisg
ICAgLnRoZW4oKCkgPT4gcHJvbWlzZV9zaW11bGF0ZV91c2VyX2FjdGl2YXRpb24oKCkgPT4gewor
ICAgICAgLy8gUmVxdWVzdCB3aXRoIHVuc3VwcG9ydGVkIHJlcXVpcmVkIGZlYXR1cmVzIHNob3Vs
ZCByZWplY3QuCisgICAgICByZXR1cm4gc2Vzc2lvbl9yZWplY3RzKCJOb3RTdXBwb3J0ZWRFcnJv
ciIsICdpbmxpbmUnLCB7CisgICAgICAgICAgcmVxdWlyZWRGZWF0dXJlczogWydsb2NhbCddCisg
ICAgICB9KTsKKyAgICB9KSk7CisgIH0pOworCis8L3NjcmlwdD4KKzwvYm9keT4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJT
ZXNzaW9uX3ZpZXdlcl9yZWZlcmVuY2VTcGFjZS5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clNlc3Npb25fdmlld2VyX3JlZmVy
ZW5jZVNwYWNlLmh0dHBzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmQ2MDgyYmMzNDY4ZjA5NDk1MzE1MmQy
MjBmY2VhZmEwODNiYWY3NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJTZXNzaW9uX3ZpZXdlcl9yZWZlcmVuY2VT
cGFjZS5odHRwcy5odG1sCkBAIC0wLDAgKzEsNzAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGJvZHk+
CisgIDxzY3JpcHQgc3JjPS9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanM+PC9zY3JpcHQ+CisgIDxz
Y3JpcHQgc3JjPS9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanM+PC9zY3JpcHQ+CisgIDxz
Y3JpcHQgc3JjPSJyZXNvdXJjZXMvd2VieHJfdXRpbC5qcyI+PC9zY3JpcHQ+CisgIDxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvd2VieHJfdGVzdF9jb25zdGFudHMuanMiPjwvc2NyaXB0PgorICA8Y2Fu
dmFzPjwvY2FudmFzPgorCisgIDxzY3JpcHQ+CisKKyAgICBsZXQgaW1tZXJzaXZlVGVzdE5hbWUg
PQorICAgICAgIklkZW50aXR5IHJlZmVyZW5jZSBzcGFjZSBwcm92aWRlcyBjb3JyZWN0IHBvc2Vz
IGZvciBpbW1lcnNpdmUgc2Vzc2lvbnMiOworICAgIGxldCBpbmxpbmVUZXN0TmFtZSA9CisgICAg
ICAiSWRlbnRpdHkgcmVmZXJlbmNlIHNwYWNlIHByb3ZpZGVzIGNvcnJlY3QgcG9zZXMgZm9yIGlu
bGluZSBzZXNzaW9ucyI7CisKKyAgICBsZXQgZmFrZURldmljZUluaXRQYXJhbXMgPSBUUkFDS0VE
X0lNTUVSU0lWRV9ERVZJQ0U7CisKKyAgICBsZXQgdGVzdEZ1bmN0aW9uID0gZnVuY3Rpb24oc2Vz
c2lvbiwgZmFrZURldmljZUNvbnRyb2xsZXIsIHQpIHsKKyAgICAgIHJldHVybiBzZXNzaW9uLnJl
cXVlc3RSZWZlcmVuY2VTcGFjZSgndmlld2VyJykKKyAgICAgICAgLnRoZW4oKHJlZmVyZW5jZVNw
YWNlKSA9PiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CisgICAgICAgICAgbGV0
IGNvdW50ZXIgPSAwOworICAgICAgICAgIGZ1bmN0aW9uIG9uRnJhbWUodGltZSwgeHJGcmFtZSkg
eworICAgICAgICAgICAgc2Vzc2lvbi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUob25GcmFtZSk7Cisg
ICAgICAgICAgICBpZiAoY291bnRlciA9PSAwKSB7CisgICAgICAgICAgICAgIHQuc3RlcCggKCkg
PT4geworICAgICAgICAgICAgICAgIC8vIEV4cGVjdCB0byBhbHdheXMgZ2V0IGEgcG9zZSwgZXZl
biBpZiBub25lIGhhcyBiZWVuIHN1cHBsaWVkLgorICAgICAgICAgICAgICAgIGxldCBwb3NlID0g
eHJGcmFtZS5nZXRWaWV3ZXJQb3NlKHJlZmVyZW5jZVNwYWNlKTsKKyAgICAgICAgICAgICAgICBh
c3NlcnRfbm90X2VxdWFscyhwb3NlLCBudWxsKTsKKworICAgICAgICAgICAgICAgIGxldCBwb3Nl
TWF0cml4ID0gcG9zZS50cmFuc2Zvcm0ubWF0cml4OworICAgICAgICAgICAgICAgIGFzc2VydF9u
b3RfZXF1YWxzKHBvc2VNYXRyaXgsIG51bGwpOworCisgICAgICAgICAgICAgICAgZm9yKGxldCBp
ID0gMDsgaSA8IHBvc2VNYXRyaXgubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgIGFz
c2VydF9lcXVhbHMocG9zZU1hdHJpeFtpXSwgSURFTlRJVFlfTUFUUklYW2ldKTsKKyAgICAgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBmYWtlRGV2aWNlQ29udHJvbGxlci5zZXRWaWV3
ZXJPcmlnaW4oVkFMSURfUE9TRV9UUkFOU0ZPUk0pOworICAgICAgICAgICAgICB9KTsKKyAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgIHQuc3RlcCggKCkgPT4geworICAgICAgICAg
ICAgICAgIC8vIEFzc2VydCB0aGF0IHRoZSBpZGVudGl0eSBtYXRyaXggaXMgYWx3YXlzIGdpdmVu
IGFzIHRoZSBwb3NlCisgICAgICAgICAgICAgICAgLy8gZXZlbiB3aGVuIGEgdmFsaWQgcG9zZSBp
cyBzZXQgYnkgdGhlIGRldmljZS4KKyAgICAgICAgICAgICAgICBsZXQgcG9zZSA9IHhyRnJhbWUu
Z2V0Vmlld2VyUG9zZShyZWZlcmVuY2VTcGFjZSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0X25v
dF9lcXVhbHMocG9zZSwgbnVsbCk7CisKKyAgICAgICAgICAgICAgICBsZXQgcG9zZU1hdHJpeCA9
IHBvc2UudHJhbnNmb3JtLm1hdHJpeDsKKyAgICAgICAgICAgICAgICBhc3NlcnRfbm90X2VxdWFs
cyhwb3NlTWF0cml4LCBudWxsKTsKKworICAgICAgICAgICAgICAgIGZvcihsZXQgaSA9IDA7IGkg
PCBwb3NlTWF0cml4Lmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgICBhc3NlcnRfZXF1
YWxzKHBvc2VNYXRyaXhbaV0sIElERU5USVRZX01BVFJJWFtpXSk7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgICAvLyBGaW5pc2hlZC4KKyAgICAg
ICAgICAgICAgcmVzb2x2ZSgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY291bnRlcisr
OworICAgICAgICAgIH0KKworICAgICAgICAgIHNlc3Npb24ucmVxdWVzdEFuaW1hdGlvbkZyYW1l
KG9uRnJhbWUpOworICAgICAgICB9KSk7CisgICAgfTsKKworICAgIHhyX3Nlc3Npb25fcHJvbWlz
ZV90ZXN0KGlubGluZVRlc3ROYW1lLCB0ZXN0RnVuY3Rpb24sCisgICAgICBmYWtlRGV2aWNlSW5p
dFBhcmFtcywgJ2lubGluZScpOworICAgIHhyX3Nlc3Npb25fcHJvbWlzZV90ZXN0KGltbWVyc2l2
ZVRlc3ROYW1lLCB0ZXN0RnVuY3Rpb24sCisgICAgICBmYWtlRGV2aWNlSW5pdFBhcmFtcywgJ2lt
bWVyc2l2ZS12cicpOworCisgIDwvc2NyaXB0PgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clNlc3Npb25fdmlz
aWJpbGl0eVN0YXRlLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl92aXNpYmlsaXR5U3RhdGUuaHR0cHMuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5lN2E2MDQxMDM2ZjlkN2MwNjEzM2M2MDJjOTc2YTg3Yzg4NjhkYzNlCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93ZWJ4ci94clNlc3Npb25fdmlzaWJpbGl0eVN0YXRlLmh0dHBzLmh0bWwKQEAgLTAsMCArMSw4
MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVz
cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9y
dC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3dlYnhyX3V0aWwuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy93ZWJ4cl90ZXN0X2NvbnN0YW50cy5qcyI+
PC9zY3JpcHQ+Cis8Y2FudmFzIGlkPSJ3ZWJnbC1jYW52YXMiPjwvY2FudmFzPgorCis8c2NyaXB0
PgorbGV0IHRlc3ROYW1lID0gIkVuc3VyZXMgdGhhdCB0aGUgWFJTZXNzaW9uJ3MgdmlzaWJpbGl0
eVN0YXRlIGlzIGNvcnJlY3RseSAiCisgICsgInJlcG9ydGVkIGFuZCB0aGF0IHRoZSBhc3NvY2lh
dGVkIHZpc2liaWxpdHljaGFuZ2UgZXZlbnQgZmlyZXMuIjsKKworbGV0IHdhdGNoZXJEb25lID0g
bmV3IEV2ZW50KCJ3YXRjaGVyZG9uZSIpOworbGV0IGZyYW1lRmlyZWQgPSBuZXcgRXZlbnQoImZy
YW1lZmlyZWQiKTsKKworbGV0IGZha2VEZXZpY2VJbml0UGFyYW1zID0gVFJBQ0tFRF9JTU1FUlNJ
VkVfREVWSUNFOworCitsZXQgdGVzdEZ1bmN0aW9uID0gZnVuY3Rpb24oc2Vzc2lvbiwgZmFrZURl
dmljZUNvbnRyb2xsZXIsIHQpIHsKKyAgbGV0IGV2ZW50V2F0Y2hlciA9IG5ldyBFdmVudFdhdGNo
ZXIoCisgICAgdCwgc2Vzc2lvbiwgWyJ2aXNpYmlsaXR5Y2hhbmdlIiwgInZpc2liaWxpdHljaGFu
Z2UiLCAiZnJhbWVmaXJlZCIsICJ3YXRjaGVyZG9uZSJdKTsKKyAgbGV0IGV2ZW50UHJvbWlzZSA9
IGV2ZW50V2F0Y2hlci53YWl0X2ZvcigKKyAgICBbInZpc2liaWxpdHljaGFuZ2UiLCAidmlzaWJp
bGl0eWNoYW5nZSIsICJmcmFtZWZpcmVkIiwgIndhdGNoZXJkb25lIl0pOworCisgIGZ1bmN0aW9u
IG9uRnJhbWUodGltZXN0YW1wLCBmcmFtZSkgeworICAgIHQuc3RlcCggKCkgPT4geworICAgICAg
Ly8gVGhlIHNlc3Npb24gc2hvdWxkIG5vdCBmaXJlIGFueSBhbmltYXRpb24gZnJhbWVzIHdoaWxl
IHRoZSB2aXNpYmlsaXR5CisgICAgICAvLyBzdGF0ZSBpcyBoaWRkZW4uCisgICAgICBhc3NlcnRf
bm90X2VxdWFscyhzZXNzaW9uLnZpc2liaWxpdHlTdGF0ZSwgImhpZGRlbiIpOworICAgIH0pOwor
CisgICAgLy8gTWFrZSBzdXJlIHRoZSBmcmFtZSBkb2VzIGZpcmUgd2hlbiB0aGUgdmlzaWJpbGl0
eSBpcyBjaGFuZ2VkIGJhY2sgdG8gInZpc2libGUiCisgICAgc2Vzc2lvbi5kaXNwYXRjaEV2ZW50
KGZyYW1lRmlyZWQpOworICB9CisKKyAgZnVuY3Rpb24gb25TZXNzaW9uVmlzaWJpbGl0eUNoYW5n
ZUhpZGRlbihldmVudCkgeworICAgIHQuc3RlcCggKCkgPT4geworICAgICAgYXNzZXJ0X2VxdWFs
cyhzZXNzaW9uLnZpc2liaWxpdHlTdGF0ZSwgImhpZGRlbiIpOworICAgIH0pOworCisgICAgc2Vz
c2lvbi5yZW1vdmVFdmVudExpc3RlbmVyKCJ2aXNpYmlsaXR5Y2hhbmdlIiwgb25TZXNzaW9uVmlz
aWJpbGl0eUNoYW5nZUhpZGRlbiwgZmFsc2UpOworICAgIHNlc3Npb24uYWRkRXZlbnRMaXN0ZW5l
cigidmlzaWJpbGl0eWNoYW5nZSIsIG9uU2Vzc2lvblZpc2liaWxpdHlDaGFuZ2VWaXNpYmxlLCBm
YWxzZSk7CisKKyAgICBzZXNzaW9uLnJlcXVlc3RBbmltYXRpb25GcmFtZShvbkZyYW1lKQorCisg
ICAgdC5zdGVwX3RpbWVvdXQoKCkgPT4geworICAgICAgZmFrZURldmljZUNvbnRyb2xsZXIuc2lt
dWxhdGVWaXNpYmlsaXR5Q2hhbmdlKCJ2aXNpYmxlIik7CisgICAgfSwgMzAwKTsKKyAgfQorCisg
IGZ1bmN0aW9uIG9uU2Vzc2lvblZpc2liaWxpdHlDaGFuZ2VWaXNpYmxlKGV2ZW50KSB7CisgICAg
dC5zdGVwKCAoKSA9PiB7CisgICAgICBhc3NlcnRfZXF1YWxzKHNlc3Npb24udmlzaWJpbGl0eVN0
YXRlLCAidmlzaWJsZSIpOworICAgIH0pOworCisgICAgc2Vzc2lvbi5yZW1vdmVFdmVudExpc3Rl
bmVyKCJ2aXNpYmlsaXR5Y2hhbmdlIiwgb25TZXNzaW9uVmlzaWJpbGl0eUNoYW5nZVZpc2libGUs
IGZhbHNlKTsKKyAgICBzZXNzaW9uLmFkZEV2ZW50TGlzdGVuZXIoInZpc2liaWxpdHljaGFuZ2Ui
LCBvblNlc3Npb25WaXNpYmlsaXR5Q2hhbmdlSW52YWxpZCwgZmFsc2UpOworICAgIGZha2VEZXZp
Y2VDb250cm9sbGVyLnNpbXVsYXRlVmlzaWJpbGl0eUNoYW5nZSgidmlzaWJsZSIpOworCisgICAg
dC5zdGVwX3RpbWVvdXQoKCkgPT4geworICAgICAgc2Vzc2lvbi5kaXNwYXRjaEV2ZW50KHdhdGNo
ZXJEb25lKTsKKyAgICB9LCAzMDApOworICB9CisKKyAgZnVuY3Rpb24gb25TZXNzaW9uVmlzaWJp
bGl0eUNoYW5nZUludmFsaWQoZXZlbnQpIHsKKyAgICB0LnN0ZXAoICgpID0+IHsKKyAgICAgIGFz
c2VydF9ub3RfcmVhY2hlZCgiU2hvdWxkIG5vdCBmaXJlIHZpc2liaWxpdHljaGFuZ2UgZXZlbnRz
IGZvciB0aGUgc2FtZSBzdGF0ZSIpOworICAgIH0pOworICB9CisKKyAgdC5zdGVwKCAoKSA9PiB7
CisgICAgLy8gU2Vzc2lvbiB2aXNpYmlsaXR5IHNob3VsZCBzdGFydCBvdXQgYXMgInZpc2libGUi
CisgICAgYXNzZXJ0X2VxdWFscyhzZXNzaW9uLnZpc2liaWxpdHlTdGF0ZSwgInZpc2libGUiKTsK
KyAgfSk7CisKKyAgc2Vzc2lvbi5hZGRFdmVudExpc3RlbmVyKCJ2aXNpYmlsaXR5Y2hhbmdlIiwg
b25TZXNzaW9uVmlzaWJpbGl0eUNoYW5nZUhpZGRlbiwgZmFsc2UpOworICBmYWtlRGV2aWNlQ29u
dHJvbGxlci5zaW11bGF0ZVZpc2liaWxpdHlDaGFuZ2UoImhpZGRlbiIpOworCisgIHJldHVybiBl
dmVudFByb21pc2U7Cit9OworCit4cl9zZXNzaW9uX3Byb21pc2VfdGVzdCgKKyAgdGVzdE5hbWUs
IHRlc3RGdW5jdGlvbiwgZmFrZURldmljZUluaXRQYXJhbXMsICdpbW1lcnNpdmUtdnInKTsKKwor
PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dlYnhyL3hyU3RhdGlvbmFyeVJlZmVyZW5jZVNwYWNlX2Zsb29ybGV2ZWxfdXBk
YXRlcy5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93ZWJ4ci94clN0YXRpb25hcnlSZWZlcmVuY2VTcGFjZV9mbG9vcmxldmVsX3VwZGF0ZXMu
aHR0cHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZjMzY2YzNTRiOGQzZmRlM2QwYTJlZmQzZDkyYjc4MDM3
YTkxNzhhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93ZWJ4ci94clN0YXRpb25hcnlSZWZlcmVuY2VTcGFjZV9mbG9vcmxldmVs
X3VwZGF0ZXMuaHR0cHMuaHRtbApAQCAtMCwwICsxLDcwIEBACis8IURPQ1RZUEUgaHRtbD4KKzxz
Y3JpcHQgc3JjPS9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanM+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
InJlc291cmNlcy93ZWJ4cl91dGlsLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvd2VieHJfdGVzdF9jb25zdGFudHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291
cmNlcy93ZWJ4cl90ZXN0X2Fzc2VydHMuanMiPjwvc2NyaXB0PgorPGNhbnZhcz48L2NhbnZhcz4K
KworPHNjcmlwdD4KK2xldCBpbW1lcnNpdmVUZXN0TmFtZSA9ICInZmxvb3ItbGV2ZWwnIFhSU3Rh
dGlvbmFyeVJlZmVyZW5jZVNwYWNlIHVwZGF0ZXMgcHJvcGVybHkgd2hlbiAiICsKKyAgInRoZSB0
cmFuc2Zvcm0gY2hhbmdlcyBmb3IgaW1tZXJzaXZlIHNlc3Npb25zIjsKK2xldCBub25JbW1lcnNp
dmVUZXN0TmFtZSA9ICInZmxvb3ItbGV2ZWwnIFhSU3RhdGlvbmFyeVJlZmVyZW5jZVNwYWNlIHVw
ZGF0ZXMgcHJvcGVybHkgd2hlbiAiICsKKyAgInRoZSB0cmFuc2Zvcm0gY2hhbmdlcyBmb3Igbm9u
LWltbWVyc2l2ZSBzZXNzaW9ucyI7CisKK2xldCBmYWtlRGV2aWNlSW5pdFBhcmFtcyA9IFRSQUNL
RURfSU1NRVJTSVZFX0RFVklDRTsKKworbGV0IHRlc3RGdW5jdGlvbiA9IGZ1bmN0aW9uKHNlc3Np
b24sIGZha2VEZXZpY2VDb250cm9sbGVyLCB0KSB7CisgIC8vIERvbid0IG5lZWQgdG8gcmVxdWVz
dCBhIGZyYW1lL2FsbG93IHRoZSBzdGFnZSB1cGRhdGVzIHRvIHByb3BhZ2F0ZSBiZWZvcmUKKyAg
Ly8gcmVxdWVzdGluZyBsb2NhbC1mbG9vciBiZWNhdXNlIGlmIHRoZSBzdGFnZSB0cmFuc2Zvcm0g
aXMgc2V0IGl0IGp1c3Qgd29uJ3QKKyAgLy8gYmUgZW11bGF0ZWQgb24gdGhlIGZpcnN0IGZyYW1l
LCBhbmQgd2Ugd2FpdCBhIGZyYW1lIGJlZm9yZSBjaGVja2luZy4KKyAgcmV0dXJuIHNlc3Npb24u
cmVxdWVzdFJlZmVyZW5jZVNwYWNlKCdsb2NhbC1mbG9vcicpCisgICAgLnRoZW4oKHJlZmVyZW5j
ZVNwYWNlKSA9PiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CisgICAgICBmdW5j
dGlvbiBvbkZpcnN0RnJhbWUodGltZSwgeHJGcmFtZSkgeworICAgICAgICAvLyBPbiB0aGUgZmly
c3QgZnJhbWUgd2hlcmUgdGhlIHBvc2UgaGFzIGJlZW4gaW5pdGlhbGl6ZWQsIHRoZSBzdGFnZQor
ICAgICAgICAvLyBzaG91bGQgYmUgdXNpbmcgYW4gZW11bGF0ZWQgZnJhbWUgb2YgcmVmZXJlbmNl
IGJlY2F1c2UgaXQgaGFzIG5vCisgICAgICAgIC8vIHN0YWdlUGFyYW1ldGVycyB5ZXQuIFNvIHRo
ZSBwb3NlIHNob3VsZCBiZSB+MS41IG1ldGVycyBvZmYgdGhlIGZsb29yLgorICAgICAgICB0LnN0
ZXAoICgpID0+IHsKKyAgICAgICAgICBsZXQgcG9zZSA9IHhyRnJhbWUuZ2V0Vmlld2VyUG9zZShy
ZWZlcmVuY2VTcGFjZSk7CisKKyAgICAgICAgICBsZXQgcG9zZU1hdHJpeCA9IHBvc2UudHJhbnNm
b3JtLm1hdHJpeDsKKyAgICAgICAgICBhc3NlcnRfYXBwcm94X2VxdWFscyhwb3NlTWF0cml4WzEy
XSwgMC4wLCBGTE9BVF9FUFNJTE9OKTsKKyAgICAgICAgICBhc3NlcnRfZ3JlYXRlcl90aGFuKHBv
c2VNYXRyaXhbMTNdLCAxLjApOworICAgICAgICAgIGFzc2VydF9hcHByb3hfZXF1YWxzKHBvc2VN
YXRyaXhbMTRdLCAwLjAsIEZMT0FUX0VQU0lMT04pOworCisgICAgICAgICAgZmFrZURldmljZUNv
bnRyb2xsZXIuc2V0Rmxvb3JPcmlnaW4oVkFMSURfRkxPT1JfT1JJR0lOKTsKKworICAgICAgICAg
IC8vIE5lZWQgdG8gcmVxdWVzdCBvbmUgYW5pbWF0aW9uIGZyYW1lIGZvciB0aGUgbmV3IHN0YWdl
IHRyYW5zZm9ybSB0bworICAgICAgICAgIC8vIHByb3BhZ2F0ZSBiZWZvcmUgd2UgY2hlY2sgdGhh
dCBpdCdzIHdoYXQgd2UgZXhwZWN0LgorICAgICAgICAgIHNlc3Npb24ucmVxdWVzdEFuaW1hdGlv
bkZyYW1lKCgpID0+IHsKKyAgICAgICAgICAgIHNlc3Npb24ucmVxdWVzdEFuaW1hdGlvbkZyYW1l
KG9uRnJhbWUpOworICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICAgIH0KKworICAgICAg
ZnVuY3Rpb24gb25GcmFtZSh0aW1lLCB4ckZyYW1lKSB7CisgICAgICAgIHQuc3RlcCggKCkgPT4g
eworICAgICAgICAgIC8vIENoZWNrIHRoYXQgc3RhZ2UgdHJhbnNmb3JtIHdhcyB1cGRhdGVkLgor
ICAgICAgICAgIGxldCBwb3NlID0geHJGcmFtZS5nZXRWaWV3ZXJQb3NlKHJlZmVyZW5jZVNwYWNl
KTsKKyAgICAgICAgICBhc3NlcnRfbm90X2VxdWFscyhwb3NlLCBudWxsKTsKKworICAgICAgICAg
IGxldCBwb3NlTWF0cml4ID0gcG9zZS50cmFuc2Zvcm0ubWF0cml4OworICAgICAgICAgIGFzc2Vy
dF9tYXRyaXhfYXBwcm94X2VxdWFscyhwb3NlTWF0cml4LCBWQUxJRF9GTE9PUl9PUklHSU5fTUFU
UklYKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgLy8gRmluaXNoZWQuCisgICAgICAgIHJlc29s
dmUoKTsKKyAgICAgIH0KKworICAgICAgLy8gTmVlZCB0byB3YWl0IG9uZSBmcmFtZSBmb3IgdGhl
IHJlbW92YWwgdG8gcHJvcGFnYXRlIGJlZm9yZSB3ZSBjaGVjayB0aGF0CisgICAgICAvLyBldmVy
eXRoaW5nIGlzIGF0IHRoZSBleHBlY3RlZCBlbXVsYXRlZCBwb3NpdGlvbi4KKyAgICAgIHNlc3Np
b24ucmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHsKKyAgICAgICAgc2Vzc2lvbi5yZXF1ZXN0
QW5pbWF0aW9uRnJhbWUob25GaXJzdEZyYW1lKTsKKyAgICAgIH0pOworICAgIH0pKTsKK307CisK
K3hyX3Nlc3Npb25fcHJvbWlzZV90ZXN0KGltbWVyc2l2ZVRlc3ROYW1lLCB0ZXN0RnVuY3Rpb24s
IGZha2VEZXZpY2VJbml0UGFyYW1zLCAnaW1tZXJzaXZlLXZyJywgeyAncmVxdWlyZWRGZWF0dXJl
cyc6IFsnbG9jYWwtZmxvb3InXSB9KTsKK3hyX3Nlc3Npb25fcHJvbWlzZV90ZXN0KG5vbkltbWVy
c2l2ZVRlc3ROYW1lLCB0ZXN0RnVuY3Rpb24sIGZha2VEZXZpY2VJbml0UGFyYW1zLCAnaW5saW5l
JywgeyAncmVxdWlyZWRGZWF0dXJlcyc6IFsnbG9jYWwtZmxvb3InXSB9KTsKKworPC9zY3JpcHQ+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dlYnhyL3hyVmlld19leWVzLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyVmlld19leWVzLmh0dHBzLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uOTU2ZWRiYTk4MzY1ZDkwZWIxODBhZDNjOTY5N2RhZTA5OGJkMjVkYgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIv
eHJWaWV3X2V5ZXMuaHR0cHMuaHRtbApAQCAtMCwwICsxLDQ2IEBACis8IURPQ1RZUEUgaHRtbD4K
KzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvd2VieHJfdGVzdF9jb25zdGFudHMuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9InJlc291cmNlcy93ZWJ4cl91dGlsLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvd2VieHJfdGVzdF9hc3NlcnRzLmpzIj48L3NjcmlwdD4KKzxjYW52YXM+PC9j
YW52YXM+CisKKzxzY3JpcHQ+CisKK2xldCBpbW1lcnNpdmVUZXN0TmFtZSA9ICJYUlZpZXcuZXll
IGlzIGNvcnJlY3QgZm9yIGltbWVyc2l2ZSBzZXNzaW9ucyI7CitsZXQgbm9uSW1tZXJzaXZlVGVz
dE5hbWUgPSAiWFJWaWV3LmV5ZSBpcyBjb3JyZWN0IGZvciBub24taW1tZXJzaXZlIHNlc3Npb25z
IjsKKworbGV0IGZha2VEZXZpY2VJbml0UGFyYW1zID0gVFJBQ0tFRF9JTU1FUlNJVkVfREVWSUNF
OworCitsZXQgdGVzdEZ1bmN0aW9uID0gZnVuY3Rpb24oc2Vzc2lvbiwgZmFrZURldmljZUNvbnRy
b2xsZXIsIHQpIHsKKyAgcmV0dXJuIHNlc3Npb24ucmVxdWVzdFJlZmVyZW5jZVNwYWNlKCd2aWV3
ZXInKQorICAgICAgLnRoZW4oKHNwYWNlKSA9PiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gewor
ICAgIGZ1bmN0aW9uIG9uRnJhbWUodGltZSwgeHJGcmFtZSkgeworICAgICAgbGV0IHZpZXdlcl9w
b3NlID0geHJGcmFtZS5nZXRWaWV3ZXJQb3NlKHNwYWNlKTsKKworICAgICAgaWYgKHNlc3Npb24u
bW9kZSA9PSAnaW5saW5lJykgeworICAgICAgICAvLyBBbiBpbmxpbmUgc2Vzc2lvbiBzaG91bGQg
cmVwb3J0IGEgc2luZ2xlIHZpZXcgd2l0aCBhbiBleWUgdHlwZSAibm9uZSIuCisgICAgICAgIGFz
c2VydF9lcXVhbHModmlld2VyX3Bvc2Uudmlld3MubGVuZ3RoLCAxKTsKKyAgICAgICAgYXNzZXJ0
X2VxdWFscyh2aWV3ZXJfcG9zZS52aWV3c1swXS5leWUsICJub25lIik7CisgICAgICB9IGVsc2Ug
eworICAgICAgICAvLyBBbiBpbW1lcnNpdmUgc2Vzc2lvbiBzaG91bGQgcmVwb3J0IGEgdHdvIHZp
ZXdzIHdpdGggYSBsZWZ0IGFuZCByaWdodCBleWUuCisgICAgICAgIGFzc2VydF9lcXVhbHModmll
d2VyX3Bvc2Uudmlld3MubGVuZ3RoLCAyKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyh2aWV3ZXJf
cG9zZS52aWV3c1swXS5leWUsICJsZWZ0Iik7CisgICAgICAgIGFzc2VydF9lcXVhbHModmlld2Vy
X3Bvc2Uudmlld3NbMV0uZXllLCAicmlnaHQiKTsKKyAgICAgIH0KKworICAgICAgLy8gRmluaXNo
ZWQgdGVzdC4KKyAgICAgIHJlc29sdmUoKTsKKyAgICB9CisKKyAgICBzZXNzaW9uLnJlcXVlc3RB
bmltYXRpb25GcmFtZShvbkZyYW1lKTsKKyAgfSkpOworfTsKKworeHJfc2Vzc2lvbl9wcm9taXNl
X3Rlc3QoaW1tZXJzaXZlVGVzdE5hbWUsIHRlc3RGdW5jdGlvbiwKKyAgZmFrZURldmljZUluaXRQ
YXJhbXMsICdpbW1lcnNpdmUtdnInKTsKK3hyX3Nlc3Npb25fcHJvbWlzZV90ZXN0KG5vbkltbWVy
c2l2ZVRlc3ROYW1lLCB0ZXN0RnVuY3Rpb24sCisgIGZha2VEZXZpY2VJbml0UGFyYW1zLCAnaW5s
aW5lJyk7CisKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clZpZXdfbWF0Y2guaHR0cHMuaHRtbCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJWaWV3X21hdGNo
Lmh0dHBzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGJiNDg4MjZhZTAyZDk5NWU2ZDg3NjNjMDRjZWZlNjRm
NzA1NzI3NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd2VieHIveHJWaWV3X21hdGNoLmh0dHBzLmh0bWwKQEAgLTAsMCArMSw4
OCBAQAorPCFET0NUWVBFIGh0bWw+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVz
cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9y
dC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3dlYnhyX3V0aWwuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy93ZWJ4cl90ZXN0X2NvbnN0YW50cy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3dlYnhyX3Rlc3RfYXNzZXJ0cy5qcyI+
PC9zY3JpcHQ+Cis8Y2FudmFzIC8+CisKKzxzY3JpcHQ+CisKK2xldCB0ZXN0TmFtZSA9ICJYUkZy
YW1lIGNvbnRhaW5zIHRoZSBleHBlY3RlZCB2aWV3cyI7CisKK2NvbnN0IGZha2VWaWV3cyA9IFt7
CisgICAgICAgIGV5ZToibGVmdCIsCisgICAgICAgIHByb2plY3Rpb25NYXRyaXg6IFZBTElEX1BS
T0pFQ1RJT05fTUFUUklYLAorICAgICAgICB2aWV3T2Zmc2V0OiBMRUZUX09GRlNFVCwKKyAgICAg
ICAgcmVzb2x1dGlvbjogVkFMSURfUkVTT0xVVElPTgorICAgIH0sIHsKKyAgICAgICAgZXllOiJy
aWdodCIsCisgICAgICAgIHByb2plY3Rpb25NYXRyaXg6IFZBTElEX1BST0pFQ1RJT05fTUFUUklY
LAorICAgICAgICB2aWV3T2Zmc2V0OiBSSUdIVF9PRkZTRVQsCisgICAgICAgIHJlc29sdXRpb246
IFZBTElEX1JFU09MVVRJT04KKyAgICB9LAorXTsKKworbGV0IGZha2VEZXZpY2VJbml0UGFyYW1z
ID0geworICAgIHN1cHBvcnRzSW1tZXJzaXZlOiB0cnVlLAorICAgIHN1cHBvcnRlZE1vZGVzOiBb
ImlubGluZSIsICJpbW1lcnNpdmUtdnIiXSwKKyAgICB2aWV3czogZmFrZVZpZXdzLAorICAgIHZp
ZXdlck9yaWdpbjogSURFTlRJVFlfVFJBTlNGT1JNLAorICAgIHN1cHBvcnRlZEZlYXR1cmVzOiBB
TExfRkVBVFVSRVMKK307CisKK2xldCB0ZXN0RnVuY3Rpb24gPSBmdW5jdGlvbihzZXNzaW9uLCBm
YWtlRGV2aWNlQ29udHJvbGxlciwgdCkgeworICByZXR1cm4gc2Vzc2lvbi5yZXF1ZXN0UmVmZXJl
bmNlU3BhY2UoJ3ZpZXdlcicpLnRoZW4oZnVuY3Rpb24odmlld2VyU3BhY2UpIHsKKyAgICByZXR1
cm4gc2Vzc2lvbi5yZXF1ZXN0UmVmZXJlbmNlU3BhY2UoJ2xvY2FsJykudGhlbigocmVmZXJlbmNl
U3BhY2UpID0+IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7CisgICAgICBmdW5jdGlvbiBvbkZy
YW1lKHRpbWUsIHhyRnJhbWUpIHsKKyAgICAgICAgbGV0IHBvc2UgPSB4ckZyYW1lLmdldFZpZXdl
clBvc2UocmVmZXJlbmNlU3BhY2UpOworICAgICAgICBhc3NlcnRfbm90X2VxdWFscyhwb3NlLCBu
dWxsKTsKKyAgICAgICAgYXNzZXJ0X25vdF9lcXVhbHMocG9zZS52aWV3cywgbnVsbCk7CisgICAg
ICAgIGFzc2VydF9lcXVhbHMocG9zZS52aWV3cy5sZW5ndGgsIDIpOworCisgICAgICAgIHsKKyAg
ICAgICAgICBsZXQgcG9zZTIgPSB4ckZyYW1lLmdldFBvc2Uodmlld2VyU3BhY2UsIHJlZmVyZW5j
ZVNwYWNlKTsKKyAgICAgICAgICBhc3NlcnRfbm90X2VxdWFscyhwb3NlMiwgbnVsbCk7CisKKyAg
ICAgICAgICAvLyBUaGlzIHBvc2Ugc2hvdWxkIGhhdmUgdGhlIHNhbWUgdHJhbnNmb3JtIGFzIHRo
ZSB2aWV3ZXIgcG9zZSwgYnV0IHdpdGhvdXQKKyAgICAgICAgICAvLyB0aGUgdmlld3MgYXJyYXku
IEl0IHNob3VsZCBiZSBhbiBYUlBvc2UgaW5zdGVhZCBvZiB0aGUgWFJWaWV3ZXJQb3NlIGRlcml2
ZWQKKyAgICAgICAgICAvLyBjbGFzcy4KKyAgICAgICAgICBhc3NlcnRfdHJ1ZShwb3NlMiBpbnN0
YW5jZW9mIFhSUG9zZSk7CisgICAgICAgICAgYXNzZXJ0X2ZhbHNlKHBvc2UyIGluc3RhbmNlb2Yg
WFJWaWV3ZXJQb3NlKTsKKyAgICAgICAgICBhc3NlcnRfbm90X2VxdWFscyhwb3NlMi50cmFuc2Zv
cm0sIG51bGwpOworICAgICAgICAgIGFzc2VydF9ub3RfZXF1YWxzKHBvc2UyLnRyYW5zZm9ybS5t
YXRyaXgsIG51bGwpOworICAgICAgICAgIGFzc2VydF9tYXRyaXhfYXBwcm94X2VxdWFscyhwb3Nl
LnRyYW5zZm9ybS5tYXRyaXgsIHBvc2UyLnRyYW5zZm9ybS5tYXRyaXgpOworICAgICAgICB9CisK
KyAgICAgICAgLy8gRW5zdXJlIHRoYXQgdHdvIHZpZXdzIGFyZSBwcm92aWRlZC4KKyAgICAgICAg
bGV0IGxlZnRWaWV3ID0gcG9zZS52aWV3c1swXTsKKyAgICAgICAgbGV0IHJpZ2h0VmlldyA9IHBv
c2Uudmlld3NbMV07CisKKyAgICAgICAgLy8gRW5zdXJlIHRoYXQgdGhlIHZpZXdzIGFyZSB0aGUg
cmlnaHQgdHlwZS4KKyAgICAgICAgYXNzZXJ0X3RydWUobGVmdFZpZXcgaW5zdGFuY2VvZiBYUlZp
ZXcpOworICAgICAgICBhc3NlcnRfdHJ1ZShyaWdodFZpZXcgaW5zdGFuY2VvZiBYUlZpZXcpOwor
CisgICAgICAgIC8vIEVuc3VyZSB0aGF0IHRoZXkgaGF2ZSB0aGUgZXhwZWN0ZWQgZXllIGVudW1z
LgorICAgICAgICBhc3NlcnRfZXF1YWxzKGxlZnRWaWV3LmV5ZSwgImxlZnQiKTsKKyAgICAgICAg
YXNzZXJ0X2VxdWFscyhyaWdodFZpZXcuZXllLCAicmlnaHQiKTsKKworICAgICAgICAvLyBFbnN1
cmUgdGhleSBoYXZlIHRoZSBleHBlY3RlZCBwcm9qZWN0aW9uIG1hdHJpY2VzLgorICAgICAgICBh
c3NlcnRfbm90X2VxdWFscyhsZWZ0Vmlldy5wcm9qZWN0aW9uTWF0cml4LCBudWxsKTsKKyAgICAg
ICAgYXNzZXJ0X25vdF9lcXVhbHMocmlnaHRWaWV3LnByb2plY3Rpb25NYXRyaXgsIG51bGwpOwor
CisgICAgICAgIGFzc2VydF9tYXRyaXhfYXBwcm94X2VxdWFscyhsZWZ0Vmlldy5wcm9qZWN0aW9u
TWF0cml4LCBWQUxJRF9QUk9KRUNUSU9OX01BVFJJWCk7CisgICAgICAgIGFzc2VydF9tYXRyaXhf
YXBwcm94X2VxdWFscyhyaWdodFZpZXcucHJvamVjdGlvbk1hdHJpeCwgVkFMSURfUFJPSkVDVElP
Tl9NQVRSSVgpOworCisgICAgICAgIC8vIEZpbmlzaGVkIHRlc3QuCisgICAgICAgIHJlc29sdmUo
KTsKKyAgICAgIH0KKworICAgICAgc2Vzc2lvbi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUob25GcmFt
ZSk7CisgICAgfSkpOworICB9KTsKK307CisKK3hyX3Nlc3Npb25fcHJvbWlzZV90ZXN0KAorICB0
ZXN0TmFtZSwgdGVzdEZ1bmN0aW9uLCBmYWtlRGV2aWNlSW5pdFBhcmFtcywgJ2ltbWVyc2l2ZS12
cicpOworCis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJWaWV3X29uZWZyYW1ldXBkYXRlLmh0dHBzLmh0bWwg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyVmll
d19vbmVmcmFtZXVwZGF0ZS5odHRwcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY2NzE3MjFlNGM1NDA1OTM3
M2U3YTAzMTEzMmRkZGI0MTIzNzA5NGMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyVmlld19vbmVmcmFtZXVwZGF0
ZS5odHRwcy5odG1sCkBAIC0wLDAgKzEsODcgQEAKKzwhRE9DVFlQRSBodG1sPgorPHNjcmlwdCBz
cmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9y
ZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJl
c291cmNlcy93ZWJ4cl91dGlsLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
d2VieHJfdGVzdF9jb25zdGFudHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNl
cy93ZWJ4cl90ZXN0X2Fzc2VydHMuanMiPjwvc2NyaXB0PgorPGNhbnZhcyAvPgorCis8c2NyaXB0
PgorCitsZXQgdGVzdE5hbWUgPSAiWFJWaWV3IHByb2plY3Rpb24gbWF0cmljZXMgdXBkYXRlIG5l
YXIgYW5kIGZhciBkZXB0aHMgb24gdGhlICIKKyAgKyAibmV4dCBmcmFtZSI7CisKK2NvbnN0IGZh
a2VWaWV3cyA9IFt7CisgICAgICAgIGV5ZToibGVmdCIsCisgICAgICAgIHZpZXdPZmZzZXQ6IExF
RlRfT0ZGU0VULAorICAgICAgICByZXNvbHV0aW9uOiBWQUxJRF9SRVNPTFVUSU9OLAorICAgICAg
ICBmaWVsZE9mVmlldzogVkFMSURfRklFTERfT0ZfVklFVywKKyAgICAgICAgLy8gVGhlIHdlYnhy
LXRlc3QtYXBpIHJlcXVpcmVzIHRoYXQgd2Ugc3RpbGwgc2V0IHRoaXMgZm9yIG5vdywgYnV0IGl0
IGlzCisgICAgICAgIC8vIHN1cHBvc2VkIHRvIGJlIGlnbm9yZWQuCisgICAgICAgIHByb2plY3Rp
b25NYXRyaXg6IElERU5USVRZX01BVFJJWAorICAgIH0sIHsKKyAgICAgICAgZXllOiJyaWdodCIs
CisgICAgICAgIHZpZXdPZmZzZXQ6IFJJR0hUX09GRlNFVCwKKyAgICAgICAgcmVzb2x1dGlvbjog
VkFMSURfUkVTT0xVVElPTiwKKyAgICAgICAgZmllbGRPZlZpZXc6IFZBTElEX0ZJRUxEX09GX1ZJ
RVcsCisgICAgICAgIC8vIFRoZSB3ZWJ4ci10ZXN0LWFwaSByZXF1aXJlcyB0aGF0IHdlIHN0aWxs
IHNldCB0aGlzIGZvciBub3csIGJ1dCBpdCBpcworICAgICAgICAvLyBzdXBwb3NlZCB0byBiZSBp
Z25vcmVkLgorICAgICAgICBwcm9qZWN0aW9uTWF0cml4OiBJREVOVElUWV9NQVRSSVgKKyAgICB9
LAorXTsKKworbGV0IGZha2VEZXZpY2VJbml0UGFyYW1zID0geworICAgIHN1cHBvcnRzSW1tZXJz
aXZlOiB0cnVlLAorICAgIHN1cHBvcnRlZE1vZGVzOiBbImlubGluZSIsICJpbW1lcnNpdmUtdnIi
XSwKKyAgICB2aWV3czogZmFrZVZpZXdzLAorICAgIHZpZXdlck9yaWdpbjogSURFTlRJVFlfVFJB
TlNGT1JNLAorICAgIHN1cHBvcnRlZEZlYXR1cmVzOiBBTExfRkVBVFVSRVMKK307CisKK2xldCB0
ZXN0RnVuY3Rpb24gPSBmdW5jdGlvbihzZXNzaW9uLCBmYWtlRGV2aWNlQ29udHJvbGxlciwgdCkg
eworICByZXR1cm4gc2Vzc2lvbi5yZXF1ZXN0UmVmZXJlbmNlU3BhY2UoJ2xvY2FsJykKKyAgICAu
dGhlbigocmVmZXJlbmNlU3BhY2UpID0+IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PnsKKyAgICAg
IGxldCBjb3VudGVyID0gMDsKKworICAgICAgZnVuY3Rpb24gb25GcmFtZSh0aW1lLCB4ckZyYW1l
KSB7CisgICAgICAgIGxldCBwb3NlID0geHJGcmFtZS5nZXRWaWV3ZXJQb3NlKHJlZmVyZW5jZVNw
YWNlKTsKKyAgICAgICAgYXNzZXJ0X25vdF9lcXVhbHMocG9zZSwgbnVsbCk7CisgICAgICAgIGFz
c2VydF9ub3RfZXF1YWxzKHBvc2Uudmlld3MsIG51bGwpOworICAgICAgICBhc3NlcnRfZXF1YWxz
KHBvc2Uudmlld3MubGVuZ3RoLCAyKTsKKyAgICAgICAgaWYgKGNvdW50ZXIgPT0gMCkgeworICAg
ICAgICAgIHNlc3Npb24ucmVxdWVzdEFuaW1hdGlvbkZyYW1lKG9uRnJhbWUpOworCisgICAgICAg
ICAgYXNzZXJ0X21hdHJpeF9hcHByb3hfZXF1YWxzKHBvc2Uudmlld3NbMF0ucHJvamVjdGlvbk1h
dHJpeCwgVkFMSURfUFJPSkVDVElPTl9NQVRSSVgpOworICAgICAgICAgIGFzc2VydF9tYXRyaXhf
YXBwcm94X2VxdWFscyhwb3NlLnZpZXdzWzFdLnByb2plY3Rpb25NYXRyaXgsIFZBTElEX1BST0pF
Q1RJT05fTUFUUklYKTsKKworICAgICAgICAgIC8vIFVwZGF0ZSB0aGUgbmVhciBhbmQgZmFyIGRl
cHRocyBmb3IgdGhlIHNlc3Npb24uCisgICAgICAgICAgc2Vzc2lvbi51cGRhdGVSZW5kZXJTdGF0
ZSh7CisgICAgICAgICAgICBkZXB0aE5lYXI6IDEuMCwKKyAgICAgICAgICAgIGRlcHRoRmFyOiAx
MC4wIH0pOworCisgICAgICAgICAgLy8gVGhlIHByb2plY3Rpb24gbWF0cmljZXMgdGhlIHZpZXdz
IHJlcG9ydCBzaG91bGQgbm90IHRha2UgaW50bworICAgICAgICAgIC8vIGFjY291bnQgdGhlIG5l
dyBzZXNzaW9uIGRlcHRoIHZhbHVlcyB0aGlzIGZyYW1lLgorICAgICAgICAgIGFzc2VydF9tYXRy
aXhfYXBwcm94X2VxdWFscyhwb3NlLnZpZXdzWzBdLnByb2plY3Rpb25NYXRyaXgsIFZBTElEX1BS
T0pFQ1RJT05fTUFUUklYKTsKKyAgICAgICAgICBhc3NlcnRfbWF0cml4X2FwcHJveF9lcXVhbHMo
cG9zZS52aWV3c1sxXS5wcm9qZWN0aW9uTWF0cml4LCBWQUxJRF9QUk9KRUNUSU9OX01BVFJJWCk7
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgLy8gTmV3IGRlcHRoIHZhbHVlcyBzaG91bGQg
YmUgcmV0YWluZWQgYmV0d2VlbiBmcmFtZXMuCisgICAgICAgICAgYXNzZXJ0X2VxdWFscyhzZXNz
aW9uLnJlbmRlclN0YXRlLmRlcHRoTmVhciwgMS4wKTsKKyAgICAgICAgICBhc3NlcnRfZXF1YWxz
KHNlc3Npb24ucmVuZGVyU3RhdGUuZGVwdGhGYXIsIDEwLjApOworCisgICAgICAgICAgLy8gUHJv
amVjdGlvbiBtYXRyaWNpZXMgc2hvdWxkIG5vdyByZWZsZWN0IHRoZSBuZXcgZGVwdGggdmFsdWVz
LCBpLmUuCisgICAgICAgICAgLy8gaGF2ZSBjaGFuZ2VkLgorICAgICAgICAgIGFzc2VydF9tYXRy
aXhfc2lnbmlmaWNhbnRseV9ub3RfZXF1YWxzKHBvc2Uudmlld3NbMF0ucHJvamVjdGlvbk1hdHJp
eCwgVkFMSURfUFJPSkVDVElPTl9NQVRSSVgpOworICAgICAgICAgIGFzc2VydF9tYXRyaXhfc2ln
bmlmaWNhbnRseV9ub3RfZXF1YWxzKHBvc2Uudmlld3NbMV0ucHJvamVjdGlvbk1hdHJpeCwgVkFM
SURfUFJPSkVDVElPTl9NQVRSSVgpOworICAgICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAgfQor
ICAgICAgICBjb3VudGVyKys7CisgICAgICB9CisKKyAgICAgIHNlc3Npb24ucmVxdWVzdEFuaW1h
dGlvbkZyYW1lKHQuc3RlcF9mdW5jKG9uRnJhbWUpKTsKKyAgfSkpOworfTsKKworeHJfc2Vzc2lv
bl9wcm9taXNlX3Rlc3QoCisgIHRlc3ROYW1lLCB0ZXN0RnVuY3Rpb24sIGZha2VEZXZpY2VJbml0
UGFyYW1zLCAnaW1tZXJzaXZlLXZyJyk7CisKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clZpZXdfc2FtZU9i
amVjdC5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93ZWJ4ci94clZpZXdfc2FtZU9iamVjdC5odHRwcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEyMTNi
Y2IxZjExNjZhODc2ZWNiN2UwZDc2MjYwMDkyNTI1ZTNjZDYKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyVmlld19z
YW1lT2JqZWN0Lmh0dHBzLmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCFET0NUWVBFIGh0bWw+Cis8
c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0icmVzb3VyY2VzL3dlYnhyX3V0aWwuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJl
c291cmNlcy93ZWJ4cl90ZXN0X2NvbnN0YW50cy5qcyI+PC9zY3JpcHQ+Cis8Y2FudmFzIGlkPSJ3
ZWJnbC1jYW52YXMiPjwvY2FudmFzPgorCis8c2NyaXB0PgorbGV0IHRlc3ROYW1lID0gIlhSVmll
dyBhdHRyaWJ1dGVzIG1lZXQgW1NhbWVPYmplY3RdIHJlcXVpcmVtZW50IjsKKworbGV0IHRlc3RG
dW5jdGlvbiA9IGZ1bmN0aW9uKHNlc3Npb24sIGZha2VEZXZpY2VDb250cm9sbGVyLCB0KSB7Cisg
IHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4geworICAgIHNlc3Npb24ucmVxdWVzdFJl
ZmVyZW5jZVNwYWNlKCdsb2NhbCcpLnRoZW4oKHJlZmVyZW5jZVNwYWNlKSA9PiB7CisgICAgICBz
ZXNzaW9uLnJlcXVlc3RBbmltYXRpb25GcmFtZSgodGltZSwgeHJGcmFtZSkgPT4geworICAgICAg
ICAvLyBNYWtlIHN1cmUgdGhhdCB0aGUgcHJvamVjdGlvbk1hdHJpeCBhbmQgdHJhbnNmb3JtIGF0
dHJpYnV0ZXMgb24KKyAgICAgICAgLy8gWFJWaWV3IGFsd2F5cyByZXR1cm4gdGhlIHNhbWUgb2Jq
ZWN0LgorICAgICAgICBsZXQgdmlld2VyUG9zZSA9IHhyRnJhbWUuZ2V0Vmlld2VyUG9zZShyZWZl
cmVuY2VTcGFjZSk7CisgICAgICAgIGxldCB2aWV3ID0gdmlld2VyUG9zZS52aWV3c1swXTsKKwor
ICAgICAgICBsZXQgdHJhbnNmb3JtID0gdmlldy50cmFuc2Zvcm07CisgICAgICAgIGxldCBwcm9q
ZWN0aW9uTWF0cml4ID0gdmlldy5wcm9qZWN0aW9uTWF0cml4OworCisgICAgICAgIHQuc3RlcCgo
KSA9PiB7CisgICAgICAgICAgYXNzZXJ0X2VxdWFscyh0cmFuc2Zvcm0sIHZpZXcudHJhbnNmb3Jt
LAorICAgICAgICAgICAgIlhSVmlldy50cmFuc2Zvcm0gcmV0dXJucyB0aGUgc2FtZSBvYmplY3Qu
Iik7CisgICAgICAgICAgYXNzZXJ0X2VxdWFscyhwcm9qZWN0aW9uTWF0cml4LCB2aWV3LnByb2pl
Y3Rpb25NYXRyaXgsCisgICAgICAgICAgICAiWFJWaWV3LnByb2plY3Rpb25NYXRyaXggcmV0dXJu
cyB0aGUgc2FtZSBvYmplY3QuIik7CisgICAgICAgIH0pOworCisgICAgICAgIHJlc29sdmUoKTsK
KyAgICAgIH0pOworICAgIH0pOworICB9KTsKK307CisKK3hyX3Nlc3Npb25fcHJvbWlzZV90ZXN0
KAorICB0ZXN0TmFtZSwgdGVzdEZ1bmN0aW9uLCBUUkFDS0VEX0lNTUVSU0lWRV9ERVZJQ0UsICdp
bW1lcnNpdmUtdnInKTsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clZpZXdlclBvc2Vfdmlld3Nfc2FtZU9i
amVjdC5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93ZWJ4ci94clZpZXdlclBvc2Vfdmlld3Nfc2FtZU9iamVjdC5odHRwcy5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmVjMWVlNjk2NGYwZGRjZmM5M2UxYmUxM2ZmMGI0ZDA5YTJhZjU5ZWMKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dl
YnhyL3hyVmlld2VyUG9zZV92aWV3c19zYW1lT2JqZWN0Lmh0dHBzLmh0bWwKQEAgLTAsMCArMSwz
NCBAQAorPCFET0NUWVBFIGh0bWw+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVz
cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9y
dC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3dlYnhyX3V0aWwuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy93ZWJ4cl90ZXN0X2NvbnN0YW50cy5qcyI+
PC9zY3JpcHQ+Cis8Y2FudmFzIGlkPSJ3ZWJnbC1jYW52YXMiPjwvY2FudmFzPgorCis8c2NyaXB0
PgorbGV0IHRlc3ROYW1lID0gIlhSVmlld2VyUG9zZS52aWV3cyBtZWV0cyBbU2FtZU9iamVjdF0g
cmVxdWlyZW1lbnQiOworCitsZXQgdGVzdEZ1bmN0aW9uID0gZnVuY3Rpb24oc2Vzc2lvbiwgZmFr
ZURldmljZUNvbnRyb2xsZXIsIHQpIHsKKyAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9
PiB7CisgICAgc2Vzc2lvbi5yZXF1ZXN0UmVmZXJlbmNlU3BhY2UoJ2xvY2FsJykudGhlbigocmVm
ZXJlbmNlU3BhY2UpID0+IHsKKyAgICAgIHNlc3Npb24ucmVxdWVzdEFuaW1hdGlvbkZyYW1lKCh0
aW1lLCB4ckZyYW1lKSA9PiB7CisgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHRoZSB2aWV3cyBh
dHRyaWJ1dGUgaXMgdGhlIHNhbWUgb2JqZWN0IGVhY2ggdGltZSB3ZQorICAgICAgICAvLyBhY2Nl
c3MgaXQuIFRoaXMgdmVyaWZpZXMgdGhhdCBYUlZpZXdlclBvc2UgZG9lcyAqbm90KiBkbyBzb21l
dGhpbmcKKyAgICAgICAgLy8gc3BlYy1ub25jb21wbGlhbnQgc3VjaCBhcyBjcmVhdGluZyBhbmQg
cmV0dXJuaW5nIGEgbmV3IFhSVmlldyBhcnJheQorICAgICAgICAvLyBlYWNoIHRpbWUgdGhlIGF0
dHJpYnV0ZSBpcyBhY2Nlc3NlZC4KKyAgICAgICAgbGV0IHZpZXdlclBvc2UgPSB4ckZyYW1lLmdl
dFZpZXdlclBvc2UocmVmZXJlbmNlU3BhY2UpOworICAgICAgICBsZXQgdmlld3MgPSB2aWV3ZXJQ
b3NlLnZpZXdzOworICAgICAgICB0LnN0ZXAoKCkgPT4geworICAgICAgICAgIGFzc2VydF9lcXVh
bHModmlld2VyUG9zZS52aWV3cywgdmlld3MsCisgICAgICAgICAgICAiWFJWaWV3ZXJQb3NlLnZp
ZXdzIHJldHVybnMgdGhlIHNhbWUgb2JqZWN0LiIpOworICAgICAgICB9KTsKKworICAgICAgICBy
ZXNvbHZlKCk7CisgICAgICB9KTsKKyAgICB9KTsKKyAgfSk7Cit9OworCit4cl9zZXNzaW9uX3By
b21pc2VfdGVzdCgKKyAgdGVzdE5hbWUsIHRlc3RGdW5jdGlvbiwgVFJBQ0tFRF9JTU1FUlNJVkVf
REVWSUNFLCAnaW1tZXJzaXZlLXZyJyk7Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJWaWV3cG9ydF92YWxp
ZC5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93ZWJ4ci94clZpZXdwb3J0X3ZhbGlkLmh0dHBzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWI3ZDk4MmQ1
OTYxODdmMTM4MWJlZTczZWFjMjk5MDkwMGEzN2Y4ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJWaWV3cG9ydF92
YWxpZC5odHRwcy5odG1sCkBAIC0wLDAgKzEsNzQgQEAKKzwhRE9DVFlQRSBodG1sPgorPHNjcmlw
dCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
InJlc291cmNlcy93ZWJ4cl91dGlsLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvd2VieHJfdGVzdF9jb25zdGFudHMuanMiPjwvc2NyaXB0PgorPGNhbnZhcyAvPgorCis8c2Ny
aXB0PgorbGV0IHRlc3ROYW1lID0gIlhSVmlld3BvcnQgYXR0cmlidXRlcyBhcmUgdmFsaWQiOwor
CitsZXQgZmFrZURldmljZUluaXRQYXJhbXMgPSBUUkFDS0VEX0lNTUVSU0lWRV9ERVZJQ0U7CisK
K2xldCB0ZXN0RnVuY3Rpb24gPSBmdW5jdGlvbihzZXNzaW9uLCBmYWtlRGV2aWNlQ29udHJvbGxl
ciwgdCwgc2Vzc2lvbk9iamVjdHMpIHsKKyAgcmV0dXJuIHNlc3Npb24ucmVxdWVzdFJlZmVyZW5j
ZVNwYWNlKCdsb2NhbCcpCisgICAgLnRoZW4oKHJlZmVyZW5jZVNwYWNlKSA9PiBuZXcgUHJvbWlz
ZSgocmVzb2x2ZSkgPT57CisgICAgICBsZXQgd2ViZ2xMYXllciA9IHNlc3Npb25PYmplY3RzLmds
TGF5ZXI7CisgICAgICBmdW5jdGlvbiBvbkZyYW1lKHRpbWUsIHhyRnJhbWUpIHsKKyAgICAgICAg
bGV0IHBvc2UgPSB4ckZyYW1lLmdldFZpZXdlclBvc2UocmVmZXJlbmNlU3BhY2UpOworICAgICAg
ICBhc3NlcnRfbm90X2VxdWFscyhwb3NlLCBudWxsKTsKKyAgICAgICAgYXNzZXJ0X25vdF9lcXVh
bHMocG9zZS52aWV3cywgbnVsbCk7CisgICAgICAgIGFzc2VydF9lcXVhbHMocG9zZS52aWV3cy5s
ZW5ndGgsIDIpOworCisgICAgICAgIGxldCBsZWZ0VmlldyA9IHBvc2Uudmlld3NbMF07CisgICAg
ICAgIGxldCByaWdodFZpZXcgPSBwb3NlLnZpZXdzWzFdOworCisgICAgICAgIGxldCBsZWZ0Vmll
d3BvcnQgPSB3ZWJnbExheWVyLmdldFZpZXdwb3J0KGxlZnRWaWV3KTsKKyAgICAgICAgbGV0IHJp
Z2h0Vmlld3BvcnQgPSB3ZWJnbExheWVyLmdldFZpZXdwb3J0KHJpZ2h0Vmlldyk7CisKKyAgICAg
ICAgdC5zdGVwKCgpID0+IHsKKyAgICAgICAgICAvLyBFbnN1cmUgdGhlIHZpZXdzIHJlcG9ydCB0
aGUgZXhwZWN0ZWQgdmlld3BvcnRzIGludG8gdGhlIFdlYkdMIGxheWVyLgorICAgICAgICAgIGFz
c2VydF90cnVlKGxlZnRWaWV3cG9ydCBpbnN0YW5jZW9mIFhSVmlld3BvcnQpOworICAgICAgICAg
IGFzc2VydF90cnVlKHJpZ2h0Vmlld3BvcnQgaW5zdGFuY2VvZiBYUlZpZXdwb3J0KTsKKworICAg
ICAgICAgIGFzc2VydF9ub3RfZXF1YWxzKGxlZnRWaWV3cG9ydCwgbnVsbCk7CisgICAgICAgICAg
YXNzZXJ0X25vdF9lcXVhbHMocmlnaHRWaWV3cG9ydCwgbnVsbCk7CisKKyAgICAgICAgICAvLyBF
eGFjdCB2aWV3cG9ydCB2YWx1ZXMgZG9uJ3QgbWF0dGVyLCBidXQgdGhleSBtdXN0IHBhc3Mgc2V2
ZXJhbCB0ZXN0czoKKworICAgICAgICAgIC8vIFZpZXdwb3J0cyBoYXZlIG5vbi16ZXJvIHdpZHRo
cyBhbmQgaGVpZ2h0cy4KKyAgICAgICAgICBhc3NlcnRfZ3JlYXRlcl90aGFuKGxlZnRWaWV3cG9y
dC53aWR0aCwgMCk7CisgICAgICAgICAgYXNzZXJ0X2dyZWF0ZXJfdGhhbihsZWZ0Vmlld3BvcnQu
aGVpZ2h0LCAwKTsKKyAgICAgICAgICBhc3NlcnRfZ3JlYXRlcl90aGFuKHJpZ2h0Vmlld3BvcnQu
d2lkdGgsIDApOworICAgICAgICAgIGFzc2VydF9ncmVhdGVyX3RoYW4ocmlnaHRWaWV3cG9ydC5o
ZWlnaHQsIDApOworCisgICAgICAgICAgLy8gVmlld3BvcnRzIGFyZSBsb2NhdGVkIHdpdGhpbiB0
aGUgZnJhbWVidWZmZXIuCisgICAgICAgICAgYXNzZXJ0X2dyZWF0ZXJfdGhhbl9lcXVhbChsZWZ0
Vmlld3BvcnQueCwgMCk7CisgICAgICAgICAgYXNzZXJ0X2dyZWF0ZXJfdGhhbl9lcXVhbChsZWZ0
Vmlld3BvcnQueSwgMCk7CisgICAgICAgICAgYXNzZXJ0X2dyZWF0ZXJfdGhhbl9lcXVhbChsZWZ0
Vmlld3BvcnQueCwgMCk7CisgICAgICAgICAgYXNzZXJ0X2dyZWF0ZXJfdGhhbl9lcXVhbChsZWZ0
Vmlld3BvcnQueSwgMCk7CisKKyAgICAgICAgICBhc3NlcnRfbGVzc190aGFuX2VxdWFsKAorICAg
ICAgICAgICAgbGVmdFZpZXdwb3J0LnggKyBsZWZ0Vmlld3BvcnQud2lkdGgsIHdlYmdsTGF5ZXIu
ZnJhbWVidWZmZXJXaWR0aCk7CisgICAgICAgICAgYXNzZXJ0X2xlc3NfdGhhbl9lcXVhbCgKKyAg
ICAgICAgICAgIGxlZnRWaWV3cG9ydC55ICsgbGVmdFZpZXdwb3J0LmhlaWdodCwgd2ViZ2xMYXll
ci5mcmFtZWJ1ZmZlckhlaWdodCk7CisgICAgICAgICAgYXNzZXJ0X2xlc3NfdGhhbl9lcXVhbCgK
KyAgICAgICAgICAgIHJpZ2h0Vmlld3BvcnQueCArIHJpZ2h0Vmlld3BvcnQud2lkdGgsIHdlYmds
TGF5ZXIuZnJhbWVidWZmZXJXaWR0aCk7CisgICAgICAgICAgYXNzZXJ0X2xlc3NfdGhhbl9lcXVh
bCgKKyAgICAgICAgICAgIHJpZ2h0Vmlld3BvcnQueSArIHJpZ2h0Vmlld3BvcnQuaGVpZ2h0LCB3
ZWJnbExheWVyLmZyYW1lYnVmZmVySGVpZ2h0KTsKKworICAgICAgICAgIC8vIEFzc3VtZXMgdGhh
dCB0aGUgbGVmdCB2aWV3cG9ydCB3aWxsIGFsd2F5cyBiZSBwaHlzaWNhbGx5IHRvIHRoZSBsZWZ0
CisgICAgICAgICAgLy8gb2YgdGhlIHJpZ2h0IHZpZXdwb3J0LgorICAgICAgICAgIGFzc2VydF9s
ZXNzX3RoYW5fZXF1YWwobGVmdFZpZXdwb3J0LnggKyBsZWZ0Vmlld3BvcnQud2lkdGgsIHJpZ2h0
Vmlld3BvcnQueCk7CisgICAgICAgIH0pOworCisgICAgICAgIHJlc29sdmUoKTsKKyAgICAgIH0K
KyAgICAgIHNlc3Npb24ucmVxdWVzdEFuaW1hdGlvbkZyYW1lKG9uRnJhbWUpOworICB9KSk7Cit9
OworCit4cl9zZXNzaW9uX3Byb21pc2VfdGVzdCgKKyAgdGVzdE5hbWUsIHRlc3RGdW5jdGlvbiwg
ZmFrZURldmljZUluaXRQYXJhbXMsICdpbW1lcnNpdmUtdnInKTsKKworPC9zY3JpcHQ+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhy
L3hyV2ViR0xMYXllcl9jb25zdHJ1Y3Rvci5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94cldlYkdMTGF5ZXJfY29uc3RydWN0b3Iu
aHR0cHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZGE3ZWM4MDMxMGY3ZmY4YWFjNTgyYTk4NDEwODg2YWI0
ZDFiODFkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93ZWJ4ci94cldlYkdMTGF5ZXJfY29uc3RydWN0b3IuaHR0cHMuaHRtbApA
QCAtMCwwICsxLDgzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvd2VieHJf
dXRpbC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3dlYnhyX3Rlc3RfY29u
c3RhbnRzLmpzIj48L3NjcmlwdD4KKzxjYW52YXMgLz4KKworPHNjcmlwdD4KK3hyX3Byb21pc2Vf
dGVzdCgiRW5zdXJlIHRoYXQgWFJXZWJHTExheWVyJ3MgY29uc3RydWN0b3IgdGhyb3dzIGFwcHJv
cHJpYXRlIGVycm9ycyIsCisgICh0KSA9PiB7CisgIGxldCB3ZWJnbENhbnZhcyA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdjYW52YXMnKVswXTsKKyAgbGV0IGdsQXR0cmlidXRlcyA9
IHsKKyAgICBhbHBoYTogZmFsc2UsCisgICAgYW50aWFsaWFzOiBmYWxzZSwKKyAgICB4ckNvbXBh
dGlibGU6IGZhbHNlLAorICB9OworICBsZXQgZ2wgPSB3ZWJnbENhbnZhcy5nZXRDb250ZXh0KCd3
ZWJnbCcsIGdsQXR0cmlidXRlcyk7CisgIHJldHVybiBuYXZpZ2F0b3IueHIudGVzdC5zaW11bGF0
ZURldmljZUNvbm5lY3Rpb24oVFJBQ0tFRF9JTU1FUlNJVkVfREVWSUNFKQorICAgIC50aGVuKCgp
ID0+IHsKKyAgICAgIHJldHVybiBuYXZpZ2F0b3IueHIucmVxdWVzdFNlc3Npb24oJ2lubGluZScp
CisgICAgICAgIC50aGVuKChzZXNzaW9uKSA9PiB7CisgICAgICAgICAgdHJ5IHsKKyAgICAgICAg
ICAgIGxldCB3ZWJnbExheWVySW5jb21wYXRpYmxlID0gbmV3IFhSV2ViR0xMYXllcihzZXNzaW9u
LCBnbCk7CisgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7CisgICAgICAgICAgICBhc3NlcnRfdW5y
ZWFjaGVkKCJJbmxpbmUgWFJXZWJHTExheWVycyBzaG91bGQgbm90IGZhaWwgd2hlbiBjcmVhdGVk
IHdpdGggYSBjb250ZXh0IHRoYXQgaXMgbm90IFhSQ29tcGF0aWJsZSIpOworICAgICAgICAgIH0K
KyAgICAgICAgfSk7CisgICAgfSkKKyAgICAudGhlbigoKSA9PiB7CisgICAgICByZXR1cm4gbmV3
IFByb21pc2UoKHJlc29sdmUpID0+IHsKKyAgICAgICAgbmF2aWdhdG9yLnhyLnRlc3Quc2ltdWxh
dGVVc2VyQWN0aXZhdGlvbigoKSA9PiB7CisgICAgICAgICAgbmF2aWdhdG9yLnhyLnJlcXVlc3RT
ZXNzaW9uKCdpbW1lcnNpdmUtdnInKQorICAgICAgICAgIC50aGVuKChzZXNzaW9uKSA9PiB7Cisg
ICAgICAgICAgICB0LnN0ZXBfZnVuYygoKSA9PiB7CisgICAgICAgICAgICAgIHRyeSB7CisgICAg
ICAgICAgICAgICAgbGV0IHdlYmdsTGF5ZXJJbmNvbXBhdGlibGUgPSBuZXcgWFJXZWJHTExheWVy
KHNlc3Npb24sIGdsKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRfdW5yZWFjaGVkKCJYUldlYkdM
TGF5ZXIgc2hvdWxkIGZhaWwgd2hlbiBjcmVhdGVkIHdpdGggYSBjb250ZXh0IHRoYXQgaXMgbm90
IFhSQ29tcGF0aWJsZSIpCisgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycikgeworICAgICAgICAg
ICAgICAgIGFzc2VydF9lcXVhbHMoZXJyLm5hbWUsICJJbnZhbGlkU3RhdGVFcnJvciIpOworICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9KQorCisgICAgICAgICAgICBnbC5tYWtlWFJDb21w
YXRpYmxlKCk7CisKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgIGxldCB3ZWJnbExh
eWVyR29vZCA9IG5ldyBYUldlYkdMTGF5ZXIoc2Vzc2lvbiwgZ2wpOworICAgICAgICAgICAgfSBj
YXRjaCAoZXJyKSB7CisgICAgICAgICAgICAgIHJlamVjdCgiWFJXZWJHTExheWVyIHNob3VsZCBu
b3QgZmFpbCB3aXRoIHZhbGlkIGFyZ3VtZW50cyIpOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBsZXQgbG9zZV9jb250ZXh0X2V4dCA9IGdsLmdldEV4dGVuc2lvbignV0VCR0xfbG9zZV9j
b250ZXh0Jyk7CisKKyAgICAgICAgICAgIHdlYmdsQ2FudmFzLmFkZEV2ZW50TGlzdGVuZXIoJ3dl
YmdsY29udGV4dGxvc3QnLCAoZXYpID0+IHsKKyAgICAgICAgICAgICAgZXYucHJldmVudERlZmF1
bHQoKTsKKworICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIGxldCB3ZWJnbExh
eWVyQmFkQ29udGV4dCA9IG5ldyBYUldlYkdMTGF5ZXIoc2Vzc2lvbiwgZ2wpOworICAgICAgICAg
ICAgICAgIHJlamVjdCgiWFJXZWJHTExheWVyIHNob3VsZCBmYWlsIHdoZW4gY3JlYXRlZCB3aXRo
IGEgbG9zdCBjb250ZXh0Iik7CisgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycikgeworICAgICAg
ICAgICAgICAgIGFzc2VydF9lcXVhbHMoZXJyLm5hbWUsICdJbnZhbGlkU3RhdGVFcnJvcicpOwor
ICAgICAgICAgICAgICAgIHQuc3RlcF90aW1lb3V0KCgpID0+IHsgbG9zZV9jb250ZXh0X2V4dC5y
ZXN0b3JlQ29udGV4dCgpOyB9LCAxMDApOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9
KTsKKworICAgICAgICAgICAgd2ViZ2xDYW52YXMuYWRkRXZlbnRMaXN0ZW5lcignd2ViZ2xjb250
ZXh0cmVzdG9yZWQnLCAoZXYpID0+IHsKKyAgICAgICAgICAgICAgcmVzb2x2ZShzZXNzaW9uLmVu
ZCgpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAg
ICBsZXQgd2ViZ2xMYXllckJhZFNlc3Npb24gPSBuZXcgWFJXZWJHTExheWVyKHNlc3Npb24sIGds
KTsKKyAgICAgICAgICAgICAgICAgIGFzc2VydF91bnJlYWNoZWQoIlhSV2ViR0xMYXllciBzaG91
bGQgZmFpbCB3aGVuIGNyZWF0ZWQgd2l0aCBhbiBlbmRlZCBzZXNzaW9uIik7CisgICAgICAgICAg
ICAgICAgfSBjYXRjaCAoZXJyKSB7CisgICAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGVy
ci5uYW1lLCAnSW52YWxpZFN0YXRlRXJyb3InKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgIH0pKTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBsb3NlX2NvbnRleHRf
ZXh0Lmxvc2VDb250ZXh0KCk7CisgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgICAgfSk7
CisgICAgfSk7Cit9KTsKKworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyV2ViR0xMYXllcl9mcmFtZWJ1ZmZl
cl9kcmF3Lmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3dlYnhyL3hyV2ViR0xMYXllcl9mcmFtZWJ1ZmZlcl9kcmF3Lmh0dHBzLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZGQ0MDg2NWU0NDVhYWZjZTg4ZjU5NDFmNDEyNzIzNmMzNmYwMWYyZAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2VieHIveHJXZWJHTExheWVyX2ZyYW1lYnVmZmVyX2RyYXcuaHR0cHMuaHRtbApAQCAtMCwwICsx
LDkzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJu
ZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVw
b3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvd2VieHJfdXRpbC5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3dlYnhyX3Rlc3RfY29uc3RhbnRzLmpz
Ij48L3NjcmlwdD4KKzxjYW52YXMgLz4KKworPHNjcmlwdD4KKworbGV0IHRlc3ROYW1lID0KKyAg
IkVuc3VyZSBhIFdlYkdMIGxheWVyJ3MgZnJhbWVidWZmZXIgY2FuIG9ubHkgYmUgZHJhd24gdG8g
aW5zaWRlIGEgWFIgZnJhbWUiOworCitsZXQgZmFrZURldmljZUluaXRQYXJhbXMgPSBUUkFDS0VE
X0lNTUVSU0lWRV9ERVZJQ0U7CisKKy8vIFZlcnkgc2ltcGxlIHByb2dyYW0gc2V0dXAgd2l0aCBu
byBlcnJvciBjaGVja2luZy4KK2Z1bmN0aW9uIHNldHVwUHJvZ3JhbShnbCwgdmVydGV4U3JjLCBm
cmFnbWVudFNyYykgeworICBsZXQgcHJvZ3JhbSA9IGdsLmNyZWF0ZVByb2dyYW0oKTsKKworICBs
ZXQgdmVydGV4U2hhZGVyID0gZ2wuY3JlYXRlU2hhZGVyKGdsLlZFUlRFWF9TSEFERVIpOworICBn
bC5zaGFkZXJTb3VyY2UodmVydGV4U2hhZGVyLCB2ZXJ0ZXhTcmMpOworICBnbC5jb21waWxlU2hh
ZGVyKHZlcnRleFNoYWRlcik7CisgIGdsLmF0dGFjaFNoYWRlcihwcm9ncmFtLCB2ZXJ0ZXhTaGFk
ZXIpOworCisgIGxldCBmcmFnbWVudFNoYWRlciA9IGdsLmNyZWF0ZVNoYWRlcihnbC5GUkFHTUVO
VF9TSEFERVIpOworICBnbC5zaGFkZXJTb3VyY2UoZnJhZ21lbnRTaGFkZXIsIGZyYWdtZW50U3Jj
KTsKKyAgZ2wuY29tcGlsZVNoYWRlcihmcmFnbWVudFNoYWRlcik7CisgIGdsLmF0dGFjaFNoYWRl
cihwcm9ncmFtLCBmcmFnbWVudFNoYWRlcik7CisKKyAgZ2wubGlua1Byb2dyYW0ocHJvZ3JhbSk7
CisgIGdsLnVzZVByb2dyYW0ocHJvZ3JhbSk7CisKKyAgcmV0dXJuIHByb2dyYW07Cit9CisKK2xl
dCB0ZXN0RnVuY3Rpb24gPQorICAoc2Vzc2lvbiwgZmFrZURldmljZUNvbnRyb2xsZXIsIHQsIHNl
c3Npb25PYmplY3RzKSA9PiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CisgIGxl
dCBnbCA9IHNlc3Npb25PYmplY3RzLmdsOworICBsZXQgd2ViZ2xMYXllciA9IHNlc3Npb25PYmpl
Y3RzLmdsTGF5ZXI7CisgIC8vIFNldHVwIHNpbXBsZSBXZWJHTCBnZW9tZXRyeSB0byBkcmF3IHdp
dGguCisgIGxldCBwcm9ncmFtID0gc2V0dXBQcm9ncmFtKGdsLAorICAgICJhdHRyaWJ1dGUgdmVj
NCB2UG9zaXRpb247IHZvaWQgbWFpbigpIHsgZ2xfUG9zaXRpb24gPSB2UG9zaXRpb247IH0iLAor
ICAgICJ2b2lkIG1haW4oKSB7IGdsX0ZyYWdDb2xvciA9IHZlYzQoMS4wLDAuMCwwLjAsMS4wKTsg
fSIKKyAgKTsKKworICBsZXQgdmVydGV4T2JqZWN0ID0gZ2wuY3JlYXRlQnVmZmVyKCk7CisgIGds
LmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCB2ZXJ0ZXhPYmplY3QpOworICBnbC5idWZmZXJE
YXRhKAorICAgIGdsLkFSUkFZX0JVRkZFUiwKKyAgICBuZXcgRmxvYXQzMkFycmF5KFsgMCwwLjUs
MCwgLTAuNSwtMC41LDAsIDAuNSwtMC41LDAgXSksCisgICAgZ2wuU1RBVElDX0RSQVcpOworICBn
bC5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSgwKTsKKyAgZ2wudmVydGV4QXR0cmliUG9pbnRlcigw
LCAzLCBnbC5GTE9BVCwgZmFsc2UsIDAsIDApOworCisgIGxldCBpbmRleE9iamVjdCA9IGdsLmNy
ZWF0ZUJ1ZmZlcigpOworICBnbC5iaW5kQnVmZmVyKGdsLkVMRU1FTlRfQVJSQVlfQlVGRkVSLCBp
bmRleE9iamVjdCk7CisgIGdsLmJ1ZmZlckRhdGEoZ2wuRUxFTUVOVF9BUlJBWV9CVUZGRVIsIG5l
dyBVaW50MTZBcnJheShbMCwgMSwgMl0pLCBnbC5TVEFUSUNfRFJBVyk7CisKKyAgbGV0IHhyRnJh
bWVidWZmZXIgPSB3ZWJnbExheWVyLmZyYW1lYnVmZmVyOworCisgIGZ1bmN0aW9uIHJ1bkRyYXdU
ZXN0cyhleHBlY3RlZEVycm9yKSB7CisgICAgLy8gTWFrZSBzdXJlIHdlJ3JlIHN0YXJ0aW5nIHdp
dGggYSBjbGVhbiBlcnJvciBzbGF0ZS4KKyAgICBhc3NlcnRfZXF1YWxzKGdsLmdldEVycm9yKCks
IGdsLk5PX0VSUk9SKTsKKworICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwg
eHJGcmFtZWJ1ZmZlcik7CisgICAgYXNzZXJ0X2VxdWFscyhnbC5nZXRFcnJvcigpLCBnbC5OT19F
UlJPUik7CisKKyAgICBnbC5jbGVhcihnbC5DT0xPUl9CVUZGRVJfQklUKTsKKyAgICBhc3NlcnRf
ZXF1YWxzKGdsLmdldEVycm9yKCksIGdsW2V4cGVjdGVkRXJyb3JdKTsKKworICAgIGdsLmNsZWFy
KGdsLkRFUFRIX0JVRkZFUl9CSVQpOworICAgIGFzc2VydF9lcXVhbHMoZ2wuZ2V0RXJyb3IoKSwg
Z2xbZXhwZWN0ZWRFcnJvcl0pOworCisgICAgZ2wuZHJhd0FycmF5cyhnbC5UUklBTkdMRVMsIDAs
IDMpOworICAgIGFzc2VydF9lcXVhbHMoZ2wuZ2V0RXJyb3IoKSwgZ2xbZXhwZWN0ZWRFcnJvcl0p
OworCisgICAgZ2wuZHJhd0VsZW1lbnRzKGdsLlRSSUFOR0xFUywgMywgZ2wuVU5TSUdORURfQllU
RSwgMCk7CisgICAgYXNzZXJ0X2VxdWFscyhnbC5nZXRFcnJvcigpLCBnbFtleHBlY3RlZEVycm9y
XSk7CisgIH0KKworICAvLyBEcmF3aW5nIG9wZXJhdGlvbnMgb3V0c2lkZSBvZiBhIFhSIGZyYW1l
IHNob3VsZCBmYWlsLgorICBydW5EcmF3VGVzdHMoIklOVkFMSURfRlJBTUVCVUZGRVJfT1BFUkFU
SU9OIik7CisKKyAgLy8gRHJhd2luZyBvcGVyYXRpb25zIHdpdGhpbiBhIFhSIGZyYW1lIHNob3Vs
ZCBzdWNjZWVkLgorICBzZXNzaW9uLnJlcXVlc3RBbmltYXRpb25GcmFtZSgodGltZSwgeHJGcmFt
ZSkgPT4geworICAgIHJ1bkRyYXdUZXN0cygiTk9fRVJST1IiKTsKKyAgICByZXNvbHZlKCk7Cisg
IH0pOworfSk7CisKK3hyX3Nlc3Npb25fcHJvbWlzZV90ZXN0KAorICB0ZXN0TmFtZSwgdGVzdEZ1
bmN0aW9uLCBmYWtlRGV2aWNlSW5pdFBhcmFtcywgJ2ltbWVyc2l2ZS12cicpOworCis8L3Njcmlw
dD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd2VieHIveHJXZWJHTExheWVyX2ZyYW1lYnVmZmVyX3NhbWVPYmplY3QuaHR0cHMuaHRtbCBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJXZWJH
TExheWVyX2ZyYW1lYnVmZmVyX3NhbWVPYmplY3QuaHR0cHMuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMGY2
Mzc4NjNiNmFlYzQ2ZDM2ZDNkMTQwMDIxOWNlN2FlYmI0OTRhCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94cldlYkdM
TGF5ZXJfZnJhbWVidWZmZXJfc2FtZU9iamVjdC5odHRwcy5odG1sCkBAIC0wLDAgKzEsMjYgQEAK
KzwhRE9DVFlQRSBodG1sPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy93ZWJ4cl91dGlsLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvd2VieHJfdGVzdF9jb25zdGFudHMuanMiPjwvc2Ny
aXB0PgorPGNhbnZhcyAvPgorCis8c2NyaXB0PgorCitsZXQgdGVzdE5hbWUgPSAiWFJXZWJHTExh
eWVyLmZyYW1lYnVmZmVyIG1lZXRzIFtTYW1lT2JqZWN0XSByZXF1aXJlbWVudCI7CisKK2xldCB0
ZXN0RnVuY3Rpb24gPQorICAoc2Vzc2lvbiwgZmFrZURldmljZUNvbnRyb2xsZXIsIHQsIHNlc3Np
b25PYmplY3RzKSA9PiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CisgIGxldCBs
YXllciA9IG5ldyBYUldlYkdMTGF5ZXIoc2Vzc2lvbiwgc2Vzc2lvbk9iamVjdHMuZ2wsIHt9KTsK
KyAgbGV0IGZyYW1lYnVmZmVyID0gbGF5ZXIuZnJhbWVidWZmZXI7CisgIHQuc3RlcCgoKSA9PiB7
CisgICAgYXNzZXJ0X2VxdWFscyhmcmFtZWJ1ZmZlciwgbGF5ZXIuZnJhbWVidWZmZXIsCisgICAg
ICAiWFJXZWJHTExheWVyLmZyYW1lYnVmZmVyIHJldHVybnMgdGhlIHNhbWUgb2JqZWN0LiIpOwor
ICB9KTsKKyAgcmVzb2x2ZSgpOworfSk7CisKK3hyX3Nlc3Npb25fcHJvbWlzZV90ZXN0KAorICB0
ZXN0TmFtZSwgdGVzdEZ1bmN0aW9uLCBUUkFDS0VEX0lNTUVSU0lWRV9ERVZJQ0UsICdpbW1lcnNp
dmUtdnInKTsKKworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyV2ViR0xMYXllcl9mcmFtZWJ1ZmZlcl9zY2Fs
ZS5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93ZWJ4ci94cldlYkdMTGF5ZXJfZnJhbWVidWZmZXJfc2NhbGUuaHR0cHMuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi43YjVjZWRiMWM4Mzk4N2RhZjQzNWY2NjJlNTY4N2NmNmUxYmIwNTU5Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4
ci94cldlYkdMTGF5ZXJfZnJhbWVidWZmZXJfc2NhbGUuaHR0cHMuaHRtbApAQCAtMCwwICsxLDU5
IEBACis8IURPQ1RZUEUgaHRtbD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvd2VieHJfdXRpbC5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3dlYnhyX3Rlc3RfY29uc3RhbnRzLmpzIj48
L3NjcmlwdD4KKzxjYW52YXMgLz4KKworPHNjcmlwdD4KKworbGV0IHRlc3ROYW1lID0gIkVuc3Vy
ZSBmcmFtZWJ1ZmZlciBzY2FsaW5nIHdvcmtzIGFzIGV4cGVjdGVkLiI7CisKK2xldCBmYWtlRGV2
aWNlSW5pdFBhcmFtcyA9IFRSQUNLRURfSU1NRVJTSVZFX0RFVklDRTsKKworbGV0IHRlc3RGdW5j
dGlvbiA9CisgIChzZXNzaW9uLCBmYWtlRGV2aWNlQ29udHJvbGxlciwgdCwgc2Vzc2lvbk9iamVj
dHMpID0+IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKKyAgbGV0IGdsID0gc2Vz
c2lvbk9iamVjdHMuZ2w7CisgIGxldCB3ZWJnbExheWVyID0gc2Vzc2lvbk9iamVjdHMuZ2xMYXll
cjsKKyAgbGV0IGRlZmF1bHRGcmFtZWJ1ZmZlcldpZHRoID0gd2ViZ2xMYXllci5mcmFtZWJ1ZmZl
cldpZHRoOworICBsZXQgZGVmYXVsdEZyYW1lYnVmZmVySGVpZ2h0ID0gd2ViZ2xMYXllci5mcmFt
ZWJ1ZmZlckhlaWdodDsKKyAgbGV0IG5hdGl2ZVNjYWxlID0gWFJXZWJHTExheWVyLmdldE5hdGl2
ZUZyYW1lYnVmZmVyU2NhbGVGYWN0b3Ioc2Vzc2lvbik7CisKKyAgdC5zdGVwKCgpID0+IHsKKyAg
ICAvLyBFbnN1cmUgdGhlIGZyYW1lYnVmZmVyIGRlZmF1bHQgc2l6ZXMgYW5kIG5hdGl2ZSBzY2Fs
ZSBhcmUgYWxsIG5vbi16ZXJvLgorICAgIGFzc2VydF9ncmVhdGVyX3RoYW4oZGVmYXVsdEZyYW1l
YnVmZmVyV2lkdGgsIDApOworICAgIGFzc2VydF9ncmVhdGVyX3RoYW4oZGVmYXVsdEZyYW1lYnVm
ZmVySGVpZ2h0LCAwKTsKKyAgICBhc3NlcnRfZ3JlYXRlcl90aGFuKG5hdGl2ZVNjYWxlLCAwKTsK
KworICAgIC8vIFRoZSBuYXRpdmUgc2NhbGUgc2hvdWxkIGJlIHRoZSBpbnZlcnNlIGZvciB0aGUg
ZGVmYXVsdCBmcmFtZWJ1ZmZlciBzY2FsZS4KKyAgICBhc3NlcnRfYXBwcm94X2VxdWFscyhuYXRp
dmVTY2FsZSwgMS9mYWtlRGV2aWNlQ29udHJvbGxlci5kaXNwbGF5SW5mb18ud2VieHJEZWZhdWx0
RnJhbWVidWZmZXJTY2FsZSwgRkxPQVRfRVBTSUxPTik7CisgIH0pOworCisgIHdlYmdsTGF5ZXIg
PSBuZXcgWFJXZWJHTExheWVyKHNlc3Npb24sIGdsLCB7IGZyYW1lYnVmZmVyU2NhbGVGYWN0b3I6
IG5hdGl2ZVNjYWxlIH0pOworICB0LnN0ZXAoKCkgPT4geworICAgIC8vIEVuc3VyZSB0aGF0IHJl
cXVlc3RpbmcgYSBuYXRpdmUgc2NhbGUgZnJhbWVidWZmZXIgZ2l2ZXMgdGhlIGV4cGVjdGVkIHJl
c3VsdC4KKyAgICBhc3NlcnRfYXBwcm94X2VxdWFscyh3ZWJnbExheWVyLmZyYW1lYnVmZmVyV2lk
dGgsIGRlZmF1bHRGcmFtZWJ1ZmZlcldpZHRoKm5hdGl2ZVNjYWxlLCAyKTsKKyAgICBhc3NlcnRf
YXBwcm94X2VxdWFscyh3ZWJnbExheWVyLmZyYW1lYnVmZmVySGVpZ2h0LCBkZWZhdWx0RnJhbWVi
dWZmZXJIZWlnaHQqbmF0aXZlU2NhbGUsIDIpOworICB9KTsKKworICB3ZWJnbExheWVyID0gbmV3
IFhSV2ViR0xMYXllcihzZXNzaW9uLCBnbCwgeyBmcmFtZWJ1ZmZlclNjYWxlRmFjdG9yOiAwIH0p
OworICB0LnN0ZXAoKCkgPT4geworICAgIC8vIEVuc3VyZSB0aGF0IHRoZSBmcmFtZWJ1ZmZlciBo
YXMgYSBsb3dlciBib3VuZHMgY2xhbXAuCisgICAgYXNzZXJ0X2dyZWF0ZXJfdGhhbih3ZWJnbExh
eWVyLmZyYW1lYnVmZmVyV2lkdGgsIDApOworICAgIGFzc2VydF9ncmVhdGVyX3RoYW4od2ViZ2xM
YXllci5mcmFtZWJ1ZmZlckhlaWdodCwgMCk7CisgIH0pOworCisgIHdlYmdsTGF5ZXIgPSBuZXcg
WFJXZWJHTExheWVyKHNlc3Npb24sIGdsLCB7IGZyYW1lYnVmZmVyU2NhbGVGYWN0b3I6IDEwMCB9
KTsKKyAgdC5zdGVwKCgpID0+IHsKKyAgICAvLyBFbnN1cmUgdGhhdCB0aGUgZnJhbWVidWZmZXIg
aGFzIGEgcmVhc29uYWJsZSB1cHBlciBib3VuZHMgY2xhbXAuCisgICAgYXNzZXJ0X2xlc3NfdGhh
bih3ZWJnbExheWVyLmZyYW1lYnVmZmVyV2lkdGgsIGRlZmF1bHRGcmFtZWJ1ZmZlcldpZHRoKjEw
MCk7CisgICAgYXNzZXJ0X2xlc3NfdGhhbih3ZWJnbExheWVyLmZyYW1lYnVmZmVySGVpZ2h0LCBk
ZWZhdWx0RnJhbWVidWZmZXJIZWlnaHQqMTAwKTsKKyAgfSk7CisKKyAgcmVzb2x2ZSgpOworfSk7
CisKK3hyX3Nlc3Npb25fcHJvbWlzZV90ZXN0KAorICB0ZXN0TmFtZSwgdGVzdEZ1bmN0aW9uLCBm
YWtlRGV2aWNlSW5pdFBhcmFtcywgJ2ltbWVyc2l2ZS12cicpOworCis8L3NjcmlwdD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIv
eHJXZWJHTExheWVyX29wYXF1ZV9mcmFtZWJ1ZmZlci5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94cldlYkdMTGF5ZXJfb3BhcXVl
X2ZyYW1lYnVmZmVyLmh0dHBzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQyN2E5MTU1ZTZhNjNlNzBhNGEw
ZjIyZTE2YzUxZjEwMjE0ZDc5NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJXZWJHTExheWVyX29wYXF1ZV9mcmFt
ZWJ1ZmZlci5odHRwcy5odG1sCkBAIC0wLDAgKzEsMTIxIEBACis8IURPQ1RZUEUgaHRtbD4KKzxz
Y3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvd2VieHJfdXRpbC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL3dlYnhyX3Rlc3RfY29uc3RhbnRzLmpzIj48L3NjcmlwdD4KKzxjYW52YXMgLz4KKwor
PHNjcmlwdD4KK2xldCBpbW1lcnNpdmVUZXN0TmFtZSA9ICJFbnN1cmUgdGhhdCB0aGUgZnJhbWVi
dWZmZXIgZ2l2ZW4gYnkgdGhlIFdlYkdMIGxheWVyIiArCisgICIgaXMgb3BhcXVlIGZvciBpbW1l
cnNpdmUiOworbGV0IG5vbkltbWVyc2l2ZVRlc3ROYW1lID0gIkVuc3VyZSB0aGF0IHRoZSBmcmFt
ZWJ1ZmZlciBnaXZlbiBieSB0aGUgV2ViR0wgbGF5ZXIiICsKKyAgIiBpcyBvcGFxdWUgZm9yIG5v
bi1pbW1lcnNpdmUiOworCitsZXQgZmFrZURldmljZUluaXRQYXJhbXMgPSBUUkFDS0VEX0lNTUVS
U0lWRV9ERVZJQ0U7CisKK2xldCB0ZXN0RnVuY3Rpb24gPQorICAoc2Vzc2lvbiwgZmFrZURldmlj
ZUNvbnRyb2xsZXIsIHQsIHNlc3Npb25PYmplY3RzKSA9PiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwg
cmVqZWN0KSA9PiB7CisgIGxldCBnbCA9IHNlc3Npb25PYmplY3RzLmdsOworICBsZXQgd2ViZ2xM
YXllciA9IHNlc3Npb25PYmplY3RzLmdsTGF5ZXI7CisgIGxldCB4ckZyYW1lYnVmZmVyID0gd2Vi
Z2xMYXllci5mcmFtZWJ1ZmZlcjsKKworICAvLyBNYWtlIHN1cmUgd2UncmUgc3RhcnRpbmcgd2l0
aCBhIGNsZWFuIGVycm9yIHNsYXRlLgorICBhc3NlcnRfZXF1YWxzKGdsLmdldEVycm9yKCksIGds
Lk5PX0VSUk9SKTsKKworICBpZiAoc2Vzc2lvbi5tb2RlID09ICdpbmxpbmUnKSB7CisgICAgLy8g
Q3JlYXRpbmcgYSBsYXllciB3aXRoIGFuIGlubGluZSBzZXNzaW9uIHNob3VsZCByZXR1cm4gYSBm
cmFtZWJ1ZmZlciBvZgorICAgIC8vIG51bGwsIGFuZCBhcyBzdWNoIG1vc3Qgb2YgdGhlc2UgdGVz
dHMgd29uJ3QgYXBwbHkuCisgICAgYXNzZXJ0X2VxdWFscyh4ckZyYW1lYnVmZmVyLCBudWxsKTsK
KyAgICByZXNvbHZlKCk7CisgICAgcmV0dXJuOworICB9CisKKyAgYXNzZXJ0X25vdF9lcXVhbHMo
eHJGcmFtZWJ1ZmZlciwgbnVsbCk7CisKKyAgLy8gVGhlIFhSIGZyYW1lYnVmZmVyIGlzIG5vdCBi
b3VuZCB0byB0aGUgR0wgY29udGV4dCBieSBkZWZhdWx0LgorICBhc3NlcnRfbm90X2VxdWFscyh4
ckZyYW1lYnVmZmVyLCBnbC5nZXRQYXJhbWV0ZXIoZ2wuRlJBTUVCVUZGRVJfQklORElORykpOwor
CisgIGFzc2VydF9ncmVhdGVyX3RoYW4od2ViZ2xMYXllci5mcmFtZWJ1ZmZlcldpZHRoLCAwKTsK
KyAgYXNzZXJ0X2dyZWF0ZXJfdGhhbih3ZWJnbExheWVyLmZyYW1lYnVmZmVySGVpZ2h0LCAwKTsK
KworICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIHhyRnJhbWVidWZmZXIpOwor
ICBhc3NlcnRfZXF1YWxzKGdsLmdldEVycm9yKCksIGdsLk5PX0VSUk9SKTsKKworICBnbC5kZWxl
dGVGcmFtZWJ1ZmZlcih4ckZyYW1lYnVmZmVyKTsKKyAgYXNzZXJ0X2VxdWFscyhnbC5nZXRFcnJv
cigpLCBnbC5JTlZBTElEX09QRVJBVElPTik7CisKKyAgLy8gTWFrZSBzdXJlIHRoZSBmcmFtZWJ1
ZmZlciBpcyBzdGlsbCBib3VuZCBhZnRlciBmYWlsZWQgYXR0ZW1wdCB0byBkZWxldGUuCisgIGxl
dCBib3VuZEZyYW1lYnVmZmVyID0gZ2wuZ2V0UGFyYW1ldGVyKGdsLkZSQU1FQlVGRkVSX0JJTkRJ
TkcpOworICBhc3NlcnRfZXF1YWxzKHhyRnJhbWVidWZmZXIsIGJvdW5kRnJhbWVidWZmZXIpOwor
ICBhc3NlcnRfZXF1YWxzKGdsLmdldEVycm9yKCksIGdsLk5PX0VSUk9SKTsKKworICAvLyBFbnN1
cmUgdGhlIGZyYW1lYnVmZmVyIGF0dGFjaG1lbnQgcHJvcGVydGllcyBjYW5ub3QgYmUgaW5zcGVj
dGVkLgorICBsZXQgYXR0YWNobWVudHMgPSBbCisgICAgZ2wuQ09MT1JfQVRUQUNITUVOVDAsCisg
ICAgZ2wuREVQVEhfQVRUQUNITUVOVCwKKyAgICBnbC5TVEVOQ0lMX0FUVEFDSE1FTlQsCisgIF07
CisKKyAgbGV0IHBhcmFtZXRlcnMgPSBbCisgICAgZ2wuRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9P
QkpFQ1RfVFlQRSwKKyAgICBnbC5GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9OQU1FLAor
ICAgIGdsLkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9MRVZFTCwKKyAgICBnbC5GUkFN
RUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRVUkVfQ1VCRV9NQVBfRkFDRSwKKyAgXTsKKworICBmb3Ig
KGxldCBhdHRhY2htZW50IG9mIGF0dGFjaG1lbnRzKSB7CisgICAgZm9yIChsZXQgcGFyYW1ldGVy
IG9mIHBhcmFtZXRlcnMpIHsKKyAgICAgIGxldCB2YWx1ZSA9IGdsLmdldEZyYW1lYnVmZmVyQXR0
YWNobWVudFBhcmFtZXRlcihnbC5GUkFNRUJVRkZFUiwgYXR0YWNobWVudCwgcGFyYW1ldGVyKTsK
KyAgICAgIGFzc2VydF9lcXVhbHModmFsdWUsIG51bGwpOworICAgICAgYXNzZXJ0X2VxdWFscyhn
bC5nZXRFcnJvcigpLCBnbC5JTlZBTElEX09QRVJBVElPTik7CisgICAgfQorICB9CisKKyAgbGV0
IHdpZHRoID0gNjQ7CisgIGxldCBoZWlnaHQgPSA2NDsKKworICAvLyBFbnN1cmUgdGhlIGZyYW1l
YnVmZmVyIHRleHR1cmUgMkQgYXR0YWNobWVudG1lbnRzIGNhbm5vdCBiZSBjaGFuZ2VkLgorICB2
YXIgdGV4dHVyZSA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgZ2wuYmluZFRleHR1cmUoZ2wuVEVY
VFVSRV8yRCwgdGV4dHVyZSk7CisgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wu
VEVYVFVSRV9NSU5fRklMVEVSLCBnbC5ORUFSRVNUKTsKKyAgZ2wudGV4UGFyYW1ldGVyaShnbC5U
RVhUVVJFXzJELCBnbC5URVhUVVJFX01BR19GSUxURVIsIGdsLk5FQVJFU1QpOworICBnbC50ZXhQ
YXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfV1JBUF9TLCBnbC5DTEFNUF9UT19F
REdFKTsKKyAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX1dSQVBf
VCwgZ2wuQ0xBTVBfVE9fRURHRSk7CisgIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwg
Z2wuUkdCQSwgd2lkdGgsIGhlaWdodCwgMCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgbnVs
bCk7CisKKyAgZ2wuZnJhbWVidWZmZXJUZXh0dXJlMkQoZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9S
X0FUVEFDSE1FTlQwLCBnbC5URVhUVVJFXzJELCB0ZXh0dXJlLCAwKTsKKyAgYXNzZXJ0X2VxdWFs
cyhnbC5nZXRFcnJvcigpLCBnbC5JTlZBTElEX09QRVJBVElPTik7CisKKyAgLy8gRW5zdXJlIHRo
ZSBmcmFtZWJ1ZmZlciByZW5kZXJidWZmZXIgYXR0YWNobWVudG1lbnRzIGNhbm5vdCBiZSBjaGFu
Z2VkLgorICBsZXQgcmVuZGVyYnVmZmVyID0gZ2wuY3JlYXRlUmVuZGVyYnVmZmVyKCk7CisgIGds
LmJpbmRSZW5kZXJidWZmZXIoZ2wuUkVOREVSQlVGRkVSLCByZW5kZXJidWZmZXIpOworICBnbC5y
ZW5kZXJidWZmZXJTdG9yYWdlKGdsLlJFTkRFUkJVRkZFUiwgZ2wuREVQVEhfQ09NUE9ORU5UMTYs
IHdpZHRoLCBoZWlnaHQpOworICBnbC5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcigKKyAgICBnbC5G
UkFNRUJVRkZFUiwKKyAgICBnbC5ERVBUSF9BVFRBQ0hNRU5ULAorICAgIGdsLlJFTkRFUkJVRkZF
UiwKKyAgICByZW5kZXJidWZmZXIpOworICBhc3NlcnRfZXF1YWxzKGdsLmdldEVycm9yKCksIGds
LklOVkFMSURfT1BFUkFUSU9OKTsKKworICBnbC5yZW5kZXJidWZmZXJTdG9yYWdlKGdsLlJFTkRF
UkJVRkZFUiwgZ2wuREVQVEhfU1RFTkNJTCwgd2lkdGgsIGhlaWdodCk7CisgIGdsLmZyYW1lYnVm
ZmVyUmVuZGVyYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBnbC5ERVBUSF9TVEVOQ0lMX0FUVEFDSE1F
TlQsIGdsLlJFTkRFUkJVRkZFUiwgcmVuZGVyYnVmZmVyKTsKKyAgYXNzZXJ0X2VxdWFscyhnbC5n
ZXRFcnJvcigpLCBnbC5JTlZBTElEX09QRVJBVElPTik7CisKKyAgLy8gRnJhbWVidWZmZXIgc3Rh
dHVzIG11c3QgYmUgdW5zdXBwb3J0ZWQgb3V0c2lkZSBvZiBhIFhSIGZyYW1lIGNhbGxiYWNrLgor
ICBhc3NlcnRfZXF1YWxzKGdsLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZGRVIp
LCBnbC5GUkFNRUJVRkZFUl9VTlNVUFBPUlRFRCk7CisKKyAgc2Vzc2lvbi5yZXF1ZXN0QW5pbWF0
aW9uRnJhbWUoKHRpbWUsIHhyRnJhbWUpID0+IHsKKyAgICAvLyBGcmFtZWJ1ZmZlciBzdGF0dXMg
bXVzdCBiZSBjb21wbGV0ZSBpbnNpZGUgb2YgYSBYUiBmcmFtZSBjYWxsYmFjay4KKyAgICBhc3Nl
cnRfZXF1YWxzKGdsLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZGRVIpLCBnbC5G
UkFNRUJVRkZFUl9DT01QTEVURSk7CisgICAgLy8gRmluaXNoZWQuCisgICAgcmVzb2x2ZSgpOwor
ICB9KTsKK30pOworCit4cl9zZXNzaW9uX3Byb21pc2VfdGVzdCgKKyAgaW1tZXJzaXZlVGVzdE5h
bWUsIHRlc3RGdW5jdGlvbiwgZmFrZURldmljZUluaXRQYXJhbXMsICdpbW1lcnNpdmUtdnInKTsK
KworeHJfc2Vzc2lvbl9wcm9taXNlX3Rlc3QoCisgIG5vbkltbWVyc2l2ZVRlc3ROYW1lLCB0ZXN0
RnVuY3Rpb24sIGZha2VEZXZpY2VJbml0UGFyYW1zLCAnaW5saW5lJyk7CisKKzwvc2NyaXB0Pgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
ZWJ4ci94cldlYkdMTGF5ZXJfb3BhcXVlX2ZyYW1lYnVmZmVyX3N0ZW5jaWwuaHR0cHMuaHRtbCBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJXZWJH
TExheWVyX29wYXF1ZV9mcmFtZWJ1ZmZlcl9zdGVuY2lsLmh0dHBzLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
OGUzZTYwY2NhMDU4YTBkOGViODdmMjM1MTY5OTI3MzA5YjUyODc3MAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJX
ZWJHTExheWVyX29wYXF1ZV9mcmFtZWJ1ZmZlcl9zdGVuY2lsLmh0dHBzLmh0bWwKQEAgLTAsMCAr
MSwyMjQgQEAKKzwhRE9DVFlQRSBodG1sPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhh
cm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3Ny
ZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy93ZWJ4cl91dGlsLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvd2VieHJfdGVzdF9jb25zdGFudHMu
anMiPjwvc2NyaXB0PgorPGNhbnZhcyAvPgorCis8c2NyaXB0PgorbGV0IGltbWVyc2l2ZVRlc3RO
YW1lID0gIkVuc3VyZSB0aGF0IHRoZSBmcmFtZWJ1ZmZlciBnaXZlbiBieSB0aGUgV2ViR0wgbGF5
ZXIiICsKKyAgIiB3b3JrcyB3aXRoIHN0ZW5jaWwgZm9yIGltbWVyc2l2ZSI7CitsZXQgbm9uSW1t
ZXJzaXZlVGVzdE5hbWUgPSAiRW5zdXJlIHRoYXQgdGhlIGZyYW1lYnVmZmVyIGdpdmVuIGJ5IHRo
ZSBXZWJHTCBsYXllciIgKworICAiIHdvcmtzIHdpdGggc3RlbmNpbCBmb3Igbm9uLWltbWVyc2l2
ZSI7CisKK2xldCBmYWtlRGV2aWNlSW5pdFBhcmFtcyA9IFRSQUNLRURfSU1NRVJTSVZFX0RFVklD
RTsKKworZnVuY3Rpb24gY3JlYXRlU2hhZGVyKGdsLCB0eXBlLCBzb3VyY2UpIHsKKyAgdmFyIHNo
YWRlciA9IGdsLmNyZWF0ZVNoYWRlcih0eXBlKTsKKyAgZ2wuc2hhZGVyU291cmNlKHNoYWRlciwg
c291cmNlKTsKKyAgZ2wuY29tcGlsZVNoYWRlcihzaGFkZXIpOworICB2YXIgc3VjY2VzcyA9IGds
LmdldFNoYWRlclBhcmFtZXRlcihzaGFkZXIsIGdsLkNPTVBJTEVfU1RBVFVTKTsKKyAgaWYgKHN1
Y2Nlc3MpIHsKKyAgICByZXR1cm4gc2hhZGVyOworICB9CisKKyAgZ2wuZGVsZXRlU2hhZGVyKHNo
YWRlcik7Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZVByb2dyYW0oZ2wsIHZlcnRleFNoYWRlciwgZnJh
Z21lbnRTaGFkZXIpIHsKKyAgdmFyIHByb2dyYW0gPSBnbC5jcmVhdGVQcm9ncmFtKCk7CisgIGds
LmF0dGFjaFNoYWRlcihwcm9ncmFtLCB2ZXJ0ZXhTaGFkZXIpOworICBnbC5hdHRhY2hTaGFkZXIo
cHJvZ3JhbSwgZnJhZ21lbnRTaGFkZXIpOworICBnbC5saW5rUHJvZ3JhbShwcm9ncmFtKTsKKyAg
dmFyIHN1Y2Nlc3MgPSBnbC5nZXRQcm9ncmFtUGFyYW1ldGVyKHByb2dyYW0sIGdsLkxJTktfU1RB
VFVTKTsKKyAgaWYgKHN1Y2Nlc3MpIHsKKyAgICByZXR1cm4gcHJvZ3JhbTsKKyAgfQorCisgIGds
LmRlbGV0ZVByb2dyYW0ocHJvZ3JhbSk7Cit9CisKK2xldCB0ZXN0RnVuY3Rpb24gPQorICAoc2Vz
c2lvbiwgZmFrZURldmljZUNvbnRyb2xsZXIsIHQsIHNlc3Npb25PYmplY3RzKSA9PiBuZXcgUHJv
bWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CisgIGNvbnN0IGdsID0gc2Vzc2lvbk9iamVjdHMu
Z2w7CisgIGNvbnN0IHdlYmdsTGF5ZXIgPSBzZXNzaW9uT2JqZWN0cy5nbExheWVyOworICBjb25z
dCB4ckZyYW1lYnVmZmVyID0gd2ViZ2xMYXllci5mcmFtZWJ1ZmZlcjsKKyAgY29uc3Qgd2ViZ2xD
YW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnY2FudmFzJylbMF07CisKKyAg
c2Vzc2lvbi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKHRpbWUsIHhyRnJhbWUpID0+IHsKKyAgICB0
LnN0ZXAoKCkgPT4geworICAgICAgLy8gTWFrZSBzdXJlIHdlJ3JlIHN0YXJ0aW5nIHdpdGggYSBj
bGVhbiBlcnJvciBzbGF0ZS4KKyAgICAgIGdsLmdldEVycm9yKCk7CisgICAgICBhc3NlcnRfZXF1
YWxzKGdsLmdldEVycm9yKCksIGdsLk5PX0VSUk9SLCAiU2hvdWxkIG5vdCBpbml0aWFsbHkgaGF2
ZSBhbnkgZXJyb3JzIik7CisKKyAgICAgIGlmIChzZXNzaW9uLm1vZGUgPT09ICdpbmxpbmUnKSB7
CisgICAgICAgIC8vIENyZWF0aW5nIGEgbGF5ZXIgd2l0aCBhbiBpbmxpbmUgc2Vzc2lvbiBzaG91
bGQgcmV0dXJuIGEgZnJhbWVidWZmZXIgb2YKKyAgICAgICAgLy8gbnVsbCwgYW5kIGFzIHN1Y2gg
bW9zdCBvZiB0aGVzZSB0ZXN0cyB3b24ndCBhcHBseS4KKyAgICAgICAgYXNzZXJ0X2VxdWFscyh4
ckZyYW1lYnVmZmVyLCBudWxsLCAnaW5saW5lLCBmYm8gPSBudWxsJyk7CisgICAgICAgIC8vIFdl
IG5lZWQgdG8gc2V0IGNhbnZhcyBzaXplIGhlcmUgZm9yIGlubGluZSBzZXNzaW9uIHRlc3Rpbmcs
IHNpbmNlCisgICAgICAgIC8vIHhyRnJhbWVidWZmZXIgaXMgbnVsbC4KKyAgICAgICAgd2ViZ2xD
YW52YXMud2lkdGggPSB3ZWJnbENhbnZhcy5oZWlnaHQgPSAzMDA7CisgICAgICAgIGdsLmJpbmRG
cmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgeHJGcmFtZWJ1ZmZlcik7CisgICAgICAgIGFzc2Vy
dF9lcXVhbHMoZ2wuZ2V0RXJyb3IoKSwgZ2wuTk9fRVJST1IsICJCaW5kaW5nIGRlZmF1bHQgZnJh
bWVidWZmZXIgZm9yIGlubGluZSBzZXNzaW9uIik7CisgICAgICB9IGVsc2UgeworICAgICAgICBh
c3NlcnRfbm90X2VxdWFscyh4ckZyYW1lYnVmZmVyLCBudWxsLCAnaW1tZXJzaXZlLCBmYm8gIT0g
bnVsbCcpOworICAgICAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIHhyRnJh
bWVidWZmZXIpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGdsLmdldEVycm9yKCksIGdsLk5PX0VS
Uk9SLCAiQmluZGluZyBXZWJHTExheWVyIGZyYW1lYnVmZmVyIik7CisgICAgICB9CisKKyAgICAg
IC8vIEZyYW1lYnVmZmVyIHN0YXR1cyBtdXN0IGJlIGNvbXBsZXRlIGluc2lkZSBvZiBhIFhSIGZy
YW1lIGNhbGxiYWNrLgorICAgICAgYXNzZXJ0X2VxdWFscyhnbC5jaGVja0ZyYW1lYnVmZmVyU3Rh
dHVzKGdsLkZSQU1FQlVGRkVSKSwgZ2wuRlJBTUVCVUZGRVJfQ09NUExFVEUsICJGQk8gY29tcGxl
dGUiKTsKKyAgICB9KTsKKyAgICBnbC5jbGVhckNvbG9yKDEsIDEsIDEsIDEpOworCisgICAgY29u
c3QgdnMgPSBgCisgICAgYXR0cmlidXRlIHZlYzQgcG9zaXRpb247CisgICAgdW5pZm9ybSBtYXQ0
IG1hdHJpeDsKKyAgICB2b2lkIG1haW4oKSB7CisgICAgICBnbF9Qb3NpdGlvbiA9IG1hdHJpeCAq
IHBvc2l0aW9uOworICAgIH0KKyAgICBgOworCisgICAgY29uc3QgZnMgPSBgCisgICAgcHJlY2lz
aW9uIG1lZGl1bXAgZmxvYXQ7CisgICAgdW5pZm9ybSB2ZWM0IGNvbG9yOworICAgIHZvaWQgbWFp
bigpIHsKKyAgICAgIGdsX0ZyYWdDb2xvciA9IGNvbG9yOworICAgIH0KKyAgICBgOworICAgIGNv
bnN0IHZlcnRleFNoYWRlciA9IGNyZWF0ZVNoYWRlcihnbCwgZ2wuVkVSVEVYX1NIQURFUiwgdnMp
OworICAgIGNvbnN0IGZyYWdtZW50U2hhZGVyID0gY3JlYXRlU2hhZGVyKGdsLCBnbC5GUkFHTUVO
VF9TSEFERVIsIGZzKTsKKyAgICBjb25zdCBwcm9ncmFtID0gY3JlYXRlUHJvZ3JhbShnbCwgdmVy
dGV4U2hhZGVyLCBmcmFnbWVudFNoYWRlcik7CisKKyAgICBjb25zdCBwb3NMb2MgPSBnbC5nZXRB
dHRyaWJMb2NhdGlvbihwcm9ncmFtLCAncG9zaXRpb24nKTsKKyAgICBjb25zdCBtYXRMb2MgPSBn
bC5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgJ21hdHJpeCcpOworICAgIGNvbnN0IGNvbG9y
TG9jID0gZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICdjb2xvcicpOworCisgICAgY29u
c3QgYnVmID0gZ2wuY3JlYXRlQnVmZmVyKCk7CisgICAgZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9C
VUZGRVIsIGJ1Zik7CisgICAgZ2wuYnVmZmVyRGF0YShnbC5BUlJBWV9CVUZGRVIsIG5ldyBGbG9h
dDMyQXJyYXkoWworICAgICAgIDAsIC0xLAorICAgICAgIDEsICAxLAorICAgICAgLTEsICAxLAor
ICAgIF0pLCBnbC5TVEFUSUNfRFJBVyk7CisKKyAgICBnbC5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJh
eShwb3NMb2MpOworICAgIGdsLnZlcnRleEF0dHJpYlBvaW50ZXIoCisgICAgICAgIHBvc0xvYywg
ICAgLy8gYXR0cmlidXRlIGxvY2F0aW9uCisgICAgICAgIDIsICAgICAgICAgLy8gMiB2YWx1ZSBw
ZXIgdmVydGV4CisgICAgICAgIGdsLkZMT0FULCAgLy8gMzJiaXQgZmxvYXRpbmcgcG9pbnQgdmFs
dWVzCisgICAgICAgIGZhbHNlLCAgICAgLy8gZG9uJ3Qgbm9ybWFsaXplCisgICAgICAgIDAsICAg
ICAgICAgLy8gc3RyaWRlICgwID0gYmFzZSBvbiB0eXBlIGFuZCBzaXplKQorICAgICAgICAwLCAg
ICAgICAgIC8vIG9mZnNldCBpbnRvIGJ1ZmZlcgorICAgICk7CisKKyAgICBsZXQgeHJWaWV3cG9y
dDsKKyAgICBpZiAoc2Vzc2lvbi5tb2RlID09ICdpbmxpbmUnKSB7CisgICAgICB4clZpZXdwb3J0
ID0geyB4OiAwLCB5OiAwLCB3aWR0aDogd2ViZ2xDYW52YXMud2lkdGgsIGhlaWdodDogd2ViZ2xD
YW52YXMuaGVpZ2h0IH07CisgICAgfSBlbHNlIHsKKyAgICAgIHhyVmlld3BvcnQgPSB7IHg6IDAs
IHk6IDAsIHdpZHRoOiB3ZWJnbExheWVyLmZyYW1lYnVmZmVyV2lkdGgsIGhlaWdodDogd2ViZ2xM
YXllci5mcmFtZWJ1ZmZlckhlaWdodCB9OworICAgIH0KKworICAgIGdsLnZpZXdwb3J0KHhyVmll
d3BvcnQueCwgeHJWaWV3cG9ydC55LCB4clZpZXdwb3J0LndpZHRoLCB4clZpZXdwb3J0LmhlaWdo
dCk7CisgICAgZ2wuc2Npc3Nvcih4clZpZXdwb3J0LngsIHhyVmlld3BvcnQueSwgeHJWaWV3cG9y
dC53aWR0aCwgeHJWaWV3cG9ydC5oZWlnaHQpOworCisgICAgLy8gY2xlYXIgdGhlIHN0ZW5jaWwg
dG8gMCAodGhlIGRlZmF1bHQpCisgICAgZ2wuc3RlbmNpbE1hc2soMHhGRik7CisgICAgZ2wuY2xl
YXJTdGVuY2lsKDB4MCk7CisgICAgZ2wuZGlzYWJsZSggZ2wuU0NJU1NPUl9URVNUICk7CisgICAg
Z2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCB8IGdsLkRFUFRIX0JVRkZFUl9CSVQgfCBnbC5T
VEVOQ0lMX0JVRkZFUl9CSVQpOworCisgICAgZ2wudXNlUHJvZ3JhbShwcm9ncmFtKTsKKyAgICBs
ZXQgbTQgPSBbMSwgMCwgMCwgMCwKKyAgICAgICAgICAgICAgMCwgMSwgMCwgMCwKKyAgICAgICAg
ICAgICAgMCwgMCwgMSwgMCwKKyAgICAgICAgICAgICAgMCwgMCwgMCwgMV07CisKKyAgICAvLyB0
dXJuIG9uIHRoZSBzdGVuY2lsCisgICAgZ2wuZW5hYmxlKGdsLlNURU5DSUxfVEVTVCk7CisKKyAg
ICAvLyBEcmF3aW5nIGludG8gYSBzdGVuY2lsLCBhbHdheXMgcGFzc2VzLCByZWYgdmFsIDEsIG1h
c2sgMHhGRgorICAgIGdsLnN0ZW5jaWxGdW5jKAorICAgICAgIGdsLkFMV0FZUywKKyAgICAgICAx
LAorICAgICAgIDB4RkYsCisgICAgKTsKKyAgICAvLyBTZXQgaXQgdG8gcmVwbGFjZSB3aXRoIHRo
ZSByZWYgdmFsICh3aGljaCBpcyAxKQorICAgIGdsLnN0ZW5jaWxPcCgKKyAgICAgICBnbC5LRUVQ
LCAgICAgLy8gc3RlbmNpbCB0ZXN0IGZhaWxzCisgICAgICAgZ2wuS0VFUCwgICAgIC8vIGRlcHRo
IHRlc3QgZmFpbHMKKyAgICAgICBnbC5SRVBMQUNFLCAgLy8gYm90aCB0ZXN0cyBwYXNzCisgICAg
KTsKKworICAgIG00WzBdID0gMC4yOyBtNFs1XSA9IDAuMjsgLy8gc2NhbGUgeCBhbmQgeQorICAg
IC8vIGRyYXcgYSB3aGl0ZSB0cmlhbmdsZQorICAgIGdsLnVuaWZvcm00ZnYoY29sb3JMb2MsIFsx
LCAxLCAxLCAxXSk7IC8vIHdoaXRlCisgICAgZ2wudW5pZm9ybU1hdHJpeDRmdihtYXRMb2MsIGZh
bHNlLCBtNCk7CisgICAgZ2wuY29sb3JNYXNrKGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKTsK
KyAgICBnbC5kcmF3QXJyYXlzKGdsLlRSSUFOR0xFUywgMCwgMyk7CisKKyAgICBnbC5jb2xvck1h
c2sodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSk7CisKKyAgICAvLyBTdGVuY2lsIG11c3QgYmUgMAor
ICAgIGdsLnN0ZW5jaWxGdW5jKAorICAgICAgIGdsLkVRVUFMLAorICAgICAgIDAsCisgICAgICAg
MHhGRiwKKyAgICApOworICAgIC8vIGtlZXAgc3RlbmNpbCB1bm1vZGlmaWVkIGR1cmluZyB0aGUg
ZHJhdyBwYXNzCisgICAgZ2wuc3RlbmNpbE9wKAorICAgICAgIGdsLktFRVAsICAgICAvLyBzdGVu
Y2lsIHRlc3QgZmFpbHMKKyAgICAgICBnbC5LRUVQLCAgICAgLy8gZGVwdGggdGVzdCBmYWlscwor
ICAgICAgIGdsLktFRVAsICAgICAvLyBib3RoIHRlc3RzIHBhc3MKKyAgICApOworCisgICAgbTRb
MF0gPSAwLjk7IG00WzVdID0gLTAuOTsgLy8gc2NhbGUgeCBhbmQgeQorICAgIC8vIGRyYXcgYSBs
YXJnZSBncmVlbiB0cmlhbmdsZQorICAgIGdsLnVuaWZvcm00ZnYoY29sb3JMb2MsIFswLCAxLCAw
LCAxXSk7IC8vIGdyZWVuCisgICAgZ2wudW5pZm9ybU1hdHJpeDRmdihtYXRMb2MsIGZhbHNlLCBt
NCk7CisgICAgZ2wuZHJhd0FycmF5cyhnbC5UUklBTkdMRVMsIDAsIDMpOworCisgICAgZ2wuZmx1
c2goKTsKKyAgICBnbC5maW5pc2goKTsKKyAgICBsZXQgcGl4ZWxzID0gbmV3IFVpbnQ4QXJyYXko
NCk7CisKKyAgICAvLyBjaGVjayB0aGF0IHRoZSBtYWluIGNvbG9yIGlzIHVzZWQgY29ycmVjdGx5
IChncmVlbikKKyAgICBwaXhlbHNbMF0gPSBwaXhlbHNbMV0gPSBwaXhlbHNbMl0gPSBwaXhlbHNb
M10gPSAzMDsKKyAgICBnbC5yZWFkUGl4ZWxzKHhyVmlld3BvcnQueCArIHhyVmlld3BvcnQud2lk
dGggLyAyLCB4clZpZXdwb3J0LnkgKyB4clZpZXdwb3J0LmhlaWdodC80LCAxLCAxLCBnbC5SR0Is
IGdsLlVOU0lHTkVEX0JZVEUsIHBpeGVscyk7CisgICAgaWYgKHBpeGVsc1swXSA9PSAweDAgJiYg
cGl4ZWxzWzFdID09IDB4RkYgJiYgcGl4ZWxzWzJdID09IDB4MCkgeyAvLyBncmVlbj8KKyAgICAg
IC8vIFBBU1NFRC4KKyAgICB9IGVsc2UgaWYgKHBpeGVsc1swXSA9PSAweEZGICYmIHBpeGVsc1sx
XSA9PSAweEZGICYmIHBpeGVsc1syXSA9PSAweEZGKSB7IC8vIHdoaXRlPworICAgICAgcmVqZWN0
KCJGYWlsZWQsIHdoaXRlIGRldGVjdGVkLCBtdXN0IGJlIGdyZWVuIik7CisgICAgfSBlbHNlIHsK
KyAgICAgIHJlamVjdCgiRmFpbGVkLCByZWFkUGl4ZWxzICgxKSBkaWRuJ3Qgd29yaywgZ2wgZXJy
b3IgPSAiICsgZ2wuZ2V0RXJyb3IoKSArICIsIHBpeGVsID0gIiArcGl4ZWxzWzBdICsgIiAiICtw
aXhlbHNbMV0gKyAiICIgK3BpeGVsc1syXSk7CisgICAgfQorCisgICAgLy8gY2hlY2sgaWYgc3Rl
bmNpbCB3b3JrZWQsIGkuZS4gd2hpdGUgcGl4ZWxzIGluIHRoZSBjZW50ZXIKKyAgICBwaXhlbHNb
MF0gPSBwaXhlbHNbMV0gPSBwaXhlbHNbMl0gPSBwaXhlbHNbM10gPSAyMDsKKyAgICBnbC5yZWFk
UGl4ZWxzKHhyVmlld3BvcnQueCArIHhyVmlld3BvcnQud2lkdGggLyAyLCB4clZpZXdwb3J0Lnkg
KyB4clZpZXdwb3J0LmhlaWdodC8yLCAxLCAxLCBnbC5SR0IsIGdsLlVOU0lHTkVEX0JZVEUsIHBp
eGVscyk7CisgICAgaWYgKHBpeGVsc1swXSA9PSAweEZGICYmIHBpeGVsc1sxXSA9PSAweEZGICYm
IHBpeGVsc1syXSA9PSAweEZGKSB7IC8vIHdoaXRlPworICAgICAgLy8gUEFTU0VELgorICAgIH0g
ZWxzZSBpZiAocGl4ZWxzWzBdID09IDB4MCAmJiBwaXhlbHNbMV0gPT0gMHhGRiAmJiBwaXhlbHNb
Ml0gPT0gMHgwKSB7IC8vIGdyZWVuPworICAgICAgcmVqZWN0KCJGYWlsZWQsIGdyZWVuIGRldGVj
dGVkLCBtdXN0IGJlIHdoaXRlIik7CisgICAgfSBlbHNlIHsKKyAgICAgIHJlamVjdCgiRmFpbGVk
LCByZWFkUGl4ZWxzICgyKSBkaWRuJ3Qgd29yaywgZ2wgZXJyb3IgPSAiICsgZ2wuZ2V0RXJyb3Io
KSArICIsIHBpeGVsID0gIiArcGl4ZWxzWzBdICsgIiAiICtwaXhlbHNbMV0gKyAiICIgK3BpeGVs
c1syXSk7CisgICAgfQorCisgICAgLy8gRmluaXNoZWQuCisgICAgcmVzb2x2ZSgpOworICB9KTsK
K30pOworCitjb25zdCBnbF9wcm9wcyA9IHsgYW50aWFsaWFzOiBmYWxzZSwgYWxwaGE6IGZhbHNl
LCBzdGVuY2lsOiB0cnVlLCBkZXB0aDogdHJ1ZSB9OworCisvLyBtYWMgaGFzIGlzc3VlcyB3aXRo
IHJlYWRQaXhlbHMgZnJvbSB0aGUgZGVmYXVsdCBmYm8uCisvLyBza2lwcGluZyB0aGlzIHRlc3Qg
Zm9yIE1hYy4KK2lmIChuYXZpZ2F0b3IucGxhdGZvcm0uaW5kZXhPZigiTWFjIikgPT0gLTEpIHsK
KyAgeHJfc2Vzc2lvbl9wcm9taXNlX3Rlc3QoCisgICAgbm9uSW1tZXJzaXZlVGVzdE5hbWUsIHRl
c3RGdW5jdGlvbiwgZmFrZURldmljZUluaXRQYXJhbXMsICdpbmxpbmUnLCB7fSwge30sIGdsX3By
b3BzLCBnbF9wcm9wcyk7Cit9CisKK3hyX3Nlc3Npb25fcHJvbWlzZV90ZXN0KAorICBpbW1lcnNp
dmVUZXN0TmFtZSwgdGVzdEZ1bmN0aW9uLCBmYWtlRGV2aWNlSW5pdFBhcmFtcywgJ2ltbWVyc2l2
ZS12cicsIHt9LCB7fSwgZ2xfcHJvcHMsIGdsX3Byb3BzKTsKKworPC9zY3JpcHQ+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hy
V2ViR0xMYXllcl92aWV3cG9ydHMuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJXZWJHTExheWVyX3ZpZXdwb3J0cy5odHRwcy5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjk0YTIzZGNkYjQyNzI5ODcyMmE5ODk5ODdhMDJmMzVhOGQ5OGQwNTUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3dlYnhyL3hyV2ViR0xMYXllcl92aWV3cG9ydHMuaHR0cHMuaHRtbApAQCAtMCwwICsx
LDY3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJu
ZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVw
b3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvd2VieHJfdGVzdF9jb25z
dGFudHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy93ZWJ4cl91dGlsLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvd2VieHJfdGVzdF9hc3NlcnRzLmpz
Ij48L3NjcmlwdD4KKzxjYW52YXM+PC9jYW52YXM+CisKKzxzY3JpcHQ+CisKK2xldCBpbW1lcnNp
dmVUZXN0TmFtZSA9ICJYUldlYkdMTGF5ZXIgcmVwb3J0cyBhIHZhbGlkIHZpZXdwb3J0cyBmb3Ig
aW1tZXJzaXZlIHNlc3Npb25zIjsKK2xldCBpbmxpbmVUZXN0TmFtZSA9ICJYUldlYkdMTGF5ZXIg
cmVwb3J0cyBhIHZhbGlkIHZpZXdwb3J0cyBmb3IgaW5saW5lIHNlc3Npb25zIjsKKworbGV0IGZh
a2VEZXZpY2VJbml0UGFyYW1zID0gVFJBQ0tFRF9JTU1FUlNJVkVfREVWSUNFOworCitsZXQgdGVz
dEZ1bmN0aW9uID0gZnVuY3Rpb24oc2Vzc2lvbiwgZmFrZURldmljZUNvbnRyb2xsZXIsIHQpIHsK
KyAgcmV0dXJuIHNlc3Npb24ucmVxdWVzdFJlZmVyZW5jZVNwYWNlKCd2aWV3ZXInKQorICAgICAg
LnRoZW4oKHNwYWNlKSA9PiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4geworICAgIGZ1bmN0aW9u
IG9uRnJhbWUodGltZSwgeHJGcmFtZSkgeworICAgICAgbGV0IHZpZXdlcl9wb3NlID0geHJGcmFt
ZS5nZXRWaWV3ZXJQb3NlKHNwYWNlKTsKKworICAgICAgbGV0IGxheWVyID0geHJGcmFtZS5zZXNz
aW9uLnJlbmRlclN0YXRlLmJhc2VMYXllcjsKKyAgICAgIGZvciAodmlldyBvZiB2aWV3ZXJfcG9z
ZS52aWV3cykgeworICAgICAgICBsZXQgdmlld3BvcnQgPSBsYXllci5nZXRWaWV3cG9ydCh2aWV3
KTsKKworICAgICAgICB0LnN0ZXAoKCkgPT4geworICAgICAgICAgIC8vIEVuc3VyZSB0aGUgcmV0
dXJuZWQgb2JqZWN0IGlzIGFuIFhSVmlld3BvcnQgb2JqZWN0CisgICAgICAgICAgYXNzZXJ0X25v
dF9lcXVhbHModmlld3BvcnQsIG51bGwpOworICAgICAgICAgIGFzc2VydF90cnVlKHZpZXdwb3J0
IGluc3RhbmNlb2YgWFJWaWV3cG9ydCk7CisKKyAgICAgICAgICAvLyBFbnN1cmUgdGhlIHZpZXdw
b3J0IGRpbWVuc2lvbnMgYXJlIHZhbGlkCisgICAgICAgICAgYXNzZXJ0X2dyZWF0ZXJfdGhhbl9l
cXVhbCh2aWV3cG9ydC54LCAwKTsKKyAgICAgICAgICBhc3NlcnRfZ3JlYXRlcl90aGFuX2VxdWFs
KHZpZXdwb3J0LnksIDApOworICAgICAgICAgIGFzc2VydF9ncmVhdGVyX3RoYW5fZXF1YWwodmll
d3BvcnQud2lkdGgsIDEpOworICAgICAgICAgIGFzc2VydF9ncmVhdGVyX3RoYW5fZXF1YWwodmll
d3BvcnQuaGVpZ2h0LCAxKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgLy8gRW5zdXJlIG5vbmUg
b2YgdGhlIHZpZXdwb3J0cyBvdmVybGFwCisgICAgICAgIGZvciAob3RoZXIgb2Ygdmlld2VyX3Bv
c2Uudmlld3MpIHsKKyAgICAgICAgICBpZiAodmlldyAhPT0gb3RoZXIpIHsKKyAgICAgICAgICAg
IGxldCBvdGhlcnBvcnQgPSBsYXllci5nZXRWaWV3cG9ydChvdGhlcik7CisgICAgICAgICAgICBs
ZXQgbm9fb3ZlcmxhcCA9ICh2aWV3cG9ydC54ICsgdmlld3BvcnQud2lkdGggPD0gb3RoZXJwb3J0
LngpIHx8CisgICAgICAgICAgICAgIChvdGhlcnBvcnQueCArIG90aGVycG9ydC53aWR0aCA8PSB2
aWV3cG9ydC54KSB8fAorICAgICAgICAgICAgICAodmlld3BvcnQueSArIHZpZXdwb3J0LmhlaWdo
dCA8PSBvdGhlcnBvcnQueSkgfHwKKyAgICAgICAgICAgICAgKG90aGVycG9ydC55ICsgb3RoZXJw
b3J0LmhlaWdodCA8PSB2aWV3cG9ydC55KTsKKworICAgICAgICAgICAgdC5zdGVwKCgpID0+IHsK
KyAgICAgICAgICAgICAgYXNzZXJ0X3RydWUobm9fb3ZlcmxhcCwgIk92ZXJsYXAgYmV0d2VlbiB2
aWV3cG9ydCAiICsgdmlldy5leWUgKyAiIGFuZCAiICsgb3RoZXIuZXllKTsKKyAgICAgICAgICAg
IH0pOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorCisgICAgICAvLyBGaW5pc2hl
ZCB0ZXN0LgorICAgICAgcmVzb2x2ZSgpOworICAgIH0KKworICAgIHNlc3Npb24ucmVxdWVzdEFu
aW1hdGlvbkZyYW1lKG9uRnJhbWUpOworICB9KSk7Cit9OworCit4cl9zZXNzaW9uX3Byb21pc2Vf
dGVzdChpbW1lcnNpdmVUZXN0TmFtZSwgdGVzdEZ1bmN0aW9uLAorICBmYWtlRGV2aWNlSW5pdFBh
cmFtcywgJ2ltbWVyc2l2ZS12cicpOworeHJfc2Vzc2lvbl9wcm9taXNlX3Rlc3QoaW5saW5lVGVz
dE5hbWUsIHRlc3RGdW5jdGlvbiwKKyAgZmFrZURldmljZUluaXRQYXJhbXMsICdpbmxpbmUnKTsK
KworPC9zY3JpcHQ+Cg==
</data>
<flag name="review"
          id="408734"
          type_id="1"
          status="+"
          setter="youennf"
    />
          </attachment>
      

    </bug>

</bugzilla>